LyoKICogUmVnZWRpdCBTd2VkaXNoIHJlc291cmNlcwogKgogKiBDb3B5cmlnaHQgMjAwOSBBbmRlcnMgSm9uc3NvbgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojaW5jbHVkZSAicmVzb3VyY2UuaCIKCkxBTkdVQUdFIExBTkdfU1dFRElTSCwgU1VCTEFOR19ORVVUUkFMCgovKgogKiBNZW51CiAqLwoKSURSX1JFR0VESVRfTUVOVSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJlJlZ2lzdGVyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkltcG9ydGVyYSBSZWdpc3RlcmZpbC4uLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICImRXhwb3J0ZXJhIFJlZ2lzdGVyZmlsLi4uIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZBbnNsdXQgdGlsbCBO5HR2ZXJrc3JlZ2lzdGVyLi4uIiwgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIiZLb3BwbGEgbmVyIGZy5W4gTuR0dmVya3NyZWdpc3Rlci4uLiIsIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlksIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU2tyaXYgdXRcdEN0cmwrUCIsICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiQSZ2c2x1dGEiLCAgICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICJSJmVkaWdlcmEiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImxG5kcmEiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIiZOeSIKICAgICAgICBCRUdJTgogICAgICAgICAgICBNRU5VSVRFTSAiJk55Y2tlbCIsICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiJlN0cuRuZ3bkcmRlIiwgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZCaW7kcnQgVuRyZGUiLCAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQtduRyZGUiLCAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRmxlcnN0cuRuZ3N25HJkZSIsICAgICAgICAgICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVGEgYm9ydFx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJkJ5dCBuYW1uXHRGMiIsICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZLb3BpZXJhIE55Y2tlbG5hbW4iLCAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZT9mtcdEN0cmwrRiIsICAgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJT9msgJk7kc3RhXHRGMyIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVCwgR1JBWUVECiAgICBFTkQKICAgIFBPUFVQICImVmlzYSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZTdGF0dXNyYWQiLCAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkRlbGEgdXBwIiwgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZVcHBkYXRlcmFcdEY1IiwgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImRmF2b3JpdGVyIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkzkZ2cgdGlsbCBpIGZhdm9yaXRlci4uLiIsICAgICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUwogICAgICAgIE1FTlVJVEVNICImVGEgYm9ydCBmYXZvcml0Li4uIiwgICAgICAgICAgICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFCiAgICBFTkQKICAgIFBPUFVQICImSGrkbHAiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICLEbW5lbiBpICZoauRscFx0RjEiLCAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImT20gUmVnaXN0ZXJlZGl0b3JuIiwgICAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9QT1BVUF9NRU5VUyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgUE9QVVAgIiIKICBCRUdJTgoJTUVOVUlURU0gIibEbmRyYSIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQoJTUVOVUlURU0gIsRuZHJhIGJpbuRydCBkYXRhIiwgICAgICAgICBJRF9FRElUX01PRElGWV9CSU4KCU1FTlVJVEVNIFNFUEFSQVRPUgoJTUVOVUlURU0gIiZUYSBib3J0XHREZWwiLCAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQoJTUVOVUlURU0gIiZCeXQgbmFtbiIsICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogIEVORAogIFBPUFVQICIiCiAgQkVHSU4KICAgICAgICBQT1BVUCAiJk55IgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICJOeSZja2VsIiwgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZTdHLkbmd25HJkZSIsICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZCaW7kcnQgduRyZGUiLCAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZEV09SRC125HJkZSIsICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJkZsZXJzdHLkbmdzduRyZGUiLCAgICAgICAgICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVGEgYm9ydFx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJkJ5dCBuYW1uXHRGMiIsICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFeHBvcnRlcmEuLi4iLCAgICAgICAgICAgICAgICBJRF9FRElUX0VYUE9SVAogICAgICAgIE1FTlVJVEVNICImS29waWVyYSBueWNrZWxuYW1uIiwgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU/ZrXHRDdHJsK0YiLCAgICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0VYUE9SVF9URU1QTEFURSBESUFMT0cgRElTQ0FSREFCTEUgIDUwLCA1MCwgMjc4LCA1NApTVFlMRSBEU18zRExPT0sgfCBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJQkxJTkdTIHwKICAgIFdTX0JPUkRFUgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAiJkV4cG9ydGVyYSByZWdpc3RlciIsIElEQ19FWFBPUlRfQkFTRSwgNiwgNiwgMjY2LCA0MiwgV1NfR1JPVVAKICAgIEFVVE9SQURJT0JVVFRPTiAiJkFsbHQiLCBJRENfRVhQT1JUX0FMTCwgMTIsIDE1LCAyNDQsIDEyCiAgICBBVVRPUkFESU9CVVRUT04gIiZNYXJrZXJhZCBkZWw6IiwgSURDX0VYUE9SVF9TRUxFQ1RFRCwgMTIsIDMwLCA3MCwgMTIKICAgIEVESVRURVhUIElEQ19FWFBPUlRfUEFUSCwgODIsIDMwLCAxODQsIDEyCkVORAoKSUREX0ZJTkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIyMCwgODUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlP2ayIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpMVEVYVCAgICAgICAgICAgIlP2azoiLElEQ19TVEFUSUMsNSw3LDExOSw4CkVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw0MCw1LDEyNSwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCkxURVhUICAgICAgICAgICAiU/ZrIGk6IixJRENfU1RBVElDLDUsIDIyLCAxMTksIDgKQ0hFQ0tCT1ggICAgICAgICJOeWNrbGFyIiwgSURDX0ZJTkRfS0VZUywgNSwgMzQsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgQlNfQVVUT0NIRUNLQk9YCkNIRUNLQk9YICAgICAgICAiVuRyZGVuYW1uIiwgSURDX0ZJTkRfVkFMVUVTLCA1LCA0NiwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCkNIRUNLQk9YICAgICAgICAiVuRyZGVpbm5laOVsbCIsIElEQ19GSU5EX0NPTlRFTlQsIDUsIDU4LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBCU19BVVRPQ0hFQ0tCT1gKQ0hFQ0tCT1ggICAgICAgICJFbmJhcnQgaGVsYSBzdHLkbmdhciIsIElEQ19GSU5EX1dIT0xFLCA1LCA3MCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCkRFRlBVU0hCVVRUT04gICAiU/ZrIixJRE9LLDE3NSw1LDQwLDE1LFdTX0dST1VQClBVU0hCVVRUT04gICAgICAiU3TkbmciLElEQ0FOQ0VMLDE3NSwyNCw0MCwxNSwgV1NfR1JPVVAKRU5ECgpJRERfQURERkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkzkZ2cgdGlsbCBmYXZvcml0IgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCkxURVhUICAgICAgICAgICAiTmFtbjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CkVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCkRFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTIwLDM2LDQwLDE1LFdTX0dST1VQClBVU0hCVVRUT04gICAgICAiQXZicnl0IixJRENBTkNFTCwxNjUsMzYsNDAsMTUsV1NfR1JPVVAKRU5ECgpJRERfREVMRkFWT1JJVEUgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgOTAKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlRhIGJvcnQgZmF2b3JpdCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgpMVEVYVCAgICAgICAgICAgIk5hbW46IixJRENfU1RBVElDLDUsNSwxMTksOApMSVNUQk9YICAgICAgICAgSURDX05BTUVfTElTVCw1LDE1LDIwMCw1MiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBXU19WU0NST0xMCkRFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTIwLDcyLDQwLDE1LFdTX0dST1VQClBVU0hCVVRUT04gICAgICAiQXZicnl0IixJRENBTkNFTCwxNjUsNzIsNDAsMTUsV1NfR1JPVVAKRU5ECgpJRERfRURJVF9TVFJJTkcgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJlZGlnZXJhIHN0cuRuZyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJW5HJkZW5hbW46IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJW5HJkZWRhdGE6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEyMCw1Niw0MCwxNSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICJBdmJyeXQiLElEQ0FOQ0VMLDE2NSw1Niw0MCwxNSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUmVkaWdlcmEgRFdPUkQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiVuRyZGVuYW1uOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiVuRyZGVkYXRhOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDkwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBHUk9VUEJPWCAgICAgICAgIkJhcyIsIElEQ19EV09SRF9CQVNFLCAxMjAsIDMwLCA4NSwgMzcsIEJTX0dST1VQQk9YCiAgICBBVVRPUkFESU9CVVRUT04gIkhleGFkZWNpbWFsIiwgSURDX0RXT1JEX0hFWCwgMTMwLCA0MCwgNjAsIDEwLCBXU19UQUJTVE9QCiAgICBBVVRPUkFESU9CVVRUT04gIkRlY2ltYWwiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTIwLDc4LDQwLDE1LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIkF2YnJ5dCIsSURDQU5DRUwsMTY1LDc4LDQwLDE1LFdTX0dST1VQCkVORAoKSUREX0VESVRfQklOQVJZIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAxNzAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiUmVkaWdlcmEgYmlu5HIiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiVuRyZGVuYW1uOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDE2MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMIHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiVuRyZGVkYXRhOiIsSURDX1NUQVRJQyw1LDMwLDkwLDgKICAgIENPTlRST0wgICAgICAgICAiIixJRENfVkFMVUVfREFUQSwiSGV4RWRpdCIsV1NfVEFCU1RPUCw1LDQwLDE2MCw0MAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSyw4MCw4Myw0MCwxNSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBdmJyeXQiLElEQ0FOQ0VMLDEyNSw4Myw0MCwxNSxXU19HUk9VUApFTkQKCklERF9FRElUX01VTFRJX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCAxNzUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlJlZGlnZXJhIGZsZXJzdHLkbmciCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiVuRyZGVuYW1uOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJW5HJkZWRhdGE6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19IU0NST0xMIHwgV1NfVlNDUk9MTCB8IEVTX01VTFRJTElORSB8IEVTX1dBTlRSRVRVUk4KICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTIwLDE1Niw0MCwxNSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICJBdmJyeXQiLElEQ0FOQ0VMLDE2NSwxNTYsNDAsMTUsV1NfR1JPVVAKRU5ECgovKgogKiBTdHJpbmcgVGFibGUKICovCgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0xJU1RfQ09MVU1OX05BTUUgICAgIk5hbW4iCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAiVHlwIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIkRhdGEiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19BUFBfVElUTEUgICAgICAgICAgICJSZWdpc3RlcmVkaXRvcm4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX01FTlUgICAgICAgICJJbm5laOVsbGVyIGtvbW1hbmRvbiBm9nIgYXR0IGFyYmV0YSBtZWQgaGVsYSByZWdpc3RyZXQiCiAgICBJRF9FRElUX01FTlUgICAgICAgICAgICAiSW5uZWjlbGxlciBrb21tYW5kb24gZvZyIGF0dCByZWRpZ2VyYSB25HJkZW4gb2NoIG55Y2tsYXIiCiAgICBJRF9WSUVXX01FTlUgICAgICAgICAgICAiSW5uZWjlbGxlciBrb21tYW5kb24gZvZyIGF0dCBhbnBhc3NhIHJlZ2lzdGVyZvZuc3RyZXQiCiAgICBJRF9GQVZPUklURVNfTUVOVSAgICAgICAiSW5uZWjlbGxlciBrb21tYW5kb24gZvZyIGF0dCBm5SB0aWxsZ+VuZyB0aWxsIG55Y2tsYXIgc29tIGFuduRuZHMgb2Z0YSIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICJJbm5laOVsbGVyIGtvbW1hbmRvbiBm9nIgYXR0IHZpc2EgaGrkbHAgb2NoIGluZm9ybWF0aW9uIG9tIFJlZ2lzdGVycmVkaWdlcmluZyIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICJJbm5laOVsbGVyIGtvbW1hbmRvbiBm9nIgYXR0IHNrYXBhIG55YSBueWNrbGFyIGVsbGVyIHbkcmRlbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIsRuZHJhciB25HJkZXRzIGRhdGEiCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAiTORnZ2VyIHRpbGwgZW4gbnkgbnlja2VsIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkzkZ2dlciB0aWxsIGV0dCBueXR0IHN0cuRuZ3bkcmRlIgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIkzkZ2dlciB0aWxsIGV0dCBueXR0IGJpbuRydCB25HJkZSIKICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUgICJM5GdnZXIgdGlsbCBldHQgbnl0dCBkdWJiZWxvcmRzLXbkcmRlIgogICAgSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUgIkzkZ2dlciB0aWxsIGV0dCBueXR0IGZsZXJzdHLkbmdzduRyZGUiCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIkltcG9ydGVyYXIgZW4gdGV4dGZpbCB0aWxsIHJlZ2lzdHJldCIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkV4cG9ydGVyYXIgaGVsYSBlbGxlciBkZWxhciBhdiByZWdpc3RyZXQgdGlsbCBlbiB0ZXh0ZmlsIgogICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFuc2x1dGVyIHRpbGwgcmVnaXN0cmV0IHDlIGVuIGFubmFuIGRhdG9yIgogICAgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIktvcHBsYXIgbmVyIGZy5W4gcmVnaXN0cmV0IHDlIGVuIGFubmFuIGRhdG9yIgogICAgSURfUkVHSVNUUllfUFJJTlQgICAgICAgIlNrcml2ZXIgdXQgaGVsYSBlbGxlciBkZWxhciBhdiByZWdpc3RyZXQiCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJWaXNhciBoauRscCBm9nIgUmVnaXN0ZXJyZWRpZ2VyaW5nIiAqLwogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIlZpc2FyIHByb2dyYW1pbmZvcm1hdGlvbiwgdmVyc2lvbnNudW1tZXIgc2FtdCBjb3B5cmlnaHQiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX1JFR0lTVFJZX0VYSVQgICAgICAgICJBdnNsdXRhciBSZWdpc3RlcmVkaXRvcm4iCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIkzkZ2dlciB0aWxsIG55Y2tsYXIgaSBmYXZvcml0bGlzdGFuIgogICAgSURfRkFWT1JJVEVTX1JFTU9WRUZBVk9SSVRFICJUYXIgYm9ydCBueWNrbGFyIGZy5W4gZmF2b3JpdGxpc3RhbiIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICJWaXNhciBlbGxlciBk9mxqZXIgc3RhdHVzcmFkZW4iCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAixG5kcmFyIHBvc2l0aW9uIGb2ciBhdmRlbGFyZW4gbWVsbGFuIGRlIHR25SBydXRvcm5hIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIlVwcGRhdGVyYXIgZvZuc3RyZXQiCiAgICBJRF9FRElUX0RFTEVURSAgICAgICAgICAiVGFyIGJvcnQgbWFya2VyYXQgZGF0YSIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICJCeXRlciBuYW1uIHDlIG1hcmtlcmF0IGRhdGEiCiAgICBJRF9FRElUX0NPUFlLRVlOQU1FICAgICAiS29waWVyYXIgbmFtbmV0IHDlIGRlbiB2YWxkYSBueWNrZWxuIHRpbGwgdXRrbGlwcCIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJT9mtlciBlbiB0ZXh0c3Ry5G5nIGkgbnlja2VsLCB25HJkZSBlbGxlciBkYXRhIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIlP2a2VyIG7kc3RhIHRy5GZmIHRpbGwgdGV4dGVuIHNwZWNpZmljZXJhZCBpIGb2cmVn5WVuZGUgc/ZrbmluZyIKICAgIElEX0VESVRfRVhQT1JUICAgICAgICAgICJFeHBvcnRlcmFyIHZhbGQgZ3JlbiBhdiByZWdpc3RyZXQgdGlsbCBlbiB0ZXh0ZmlsIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRVJST1IJCSAgICAiRmVsIgogICAgSURTX0JBRF9LRVkJCSAgICAiS3VuZGUgaW50ZSBs5HNhIG55Y2tlbG4gqyVzuyIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJLdW5kZSBpbnRlIGzkc2EgduRyZGV0IKslc7siCiAgICBJRFNfVU5TVVBQT1JURURfVFlQRSAgICAiS2FuIGludGUgcmVkaWdlcmEgbnlja2xlciBhdiB0eXBlbiCrJXW7IgogICAgSURTX1RPT19CSUdfVkFMVUUgICAgICAgIlbkcmRldCDkciBmb3Igc3RvcnQgKCV1KSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICJCZWty5GZ0YSBib3J0dGFnbmluZyBhdiB25HJkZSIKICAgIElEU19ERUxFVEVfQk9YX1RFWFQgICAgICJWaWxsIGR1IHZlcmtsaWdlbiB0YSBib3J0IHbkcmRldCCrJXO7PyIKICAgIElEU19ERUxFVEVfQk9YX1RFWFRfTVVMVElQTEUgIlZpbGwgZHUgdmVya2xpZ2VuIHRhIGJvcnQgZGVzc2EgduRyZGVuPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICJOeSBueWNrZWwgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIk55dHQgduRyZGUgIyVkIgogICAgSURTX05PVEZPVU5EICAgICAgICAgICAgIkhpdHRhZGUgaW50ZSBkZW4gc/ZrdGEgc3Ry5G5nZW4gqyVzuyIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0ZJTEVESUFMT0dfSU1QT1JUX1RJVExFICAgIkltcG9ydGVyYSByZWdpc3RlcmZpbCIKICAgIElEU19GSUxFRElBTE9HX0VYUE9SVF9USVRMRSAgICJFeHBvcnRlcmEgcmVnaXN0ZXJmaWwiCiAgICBJRFNfRklMRURJQUxPR19GSUxURVIgICAgICAgICAiUmVnaXN0ZXJmaWxlclwwKi5yZWdcMFdpbjl4LS9OVDQtcmVnaXN0ZXJmaWxlciAoUkVHRURJVDQpXDAqLnJlZ1wwQWxsYSBmaWxlciAoKi4qKVwwKi4qXDBcMCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1JFR0lTVFJZX1JPT1RfTkFNRSAgICAgICAgICAgIk1pbiBkYXRvciIKICAgIElEU19SRUdJU1RSWV9ERUZBVUxUX1ZBTFVFICAgICAgICIoU3RhbmRhcmQpIgogICAgSURTX1JFR0lTVFJZX1ZBTFVFX05PVF9TRVQgICAgICAgIih25HJkZSBlaiBhbmdpdmV0KSIKICAgIElEU19SRUdJU1RSWV9WQUxVRV9DQU5UX0RJU1BMQVkgICIoa3VuZGUgaW50ZSB2aXNhIHbkcmRlKSIKICAgIElEU19SRUdJU1RSWV9VTktOT1dOX1RZUEUgICAgICAgICIob2vkbnQgJWQpIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qCiAqIFRFWFRJTkNMVURFCiAqLwoKMSBURVhUSU5DTFVERSBESVNDQVJEQUJMRQpCRUdJTgogICAgInJlc291cmNlLmhcMCIKRU5ECgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCg==