LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogSmFwYW5lc2UgTGFuZ3VhZ2UgU3VwcG9ydAogKgogKiBDb3B5cmlnaHQgMjAwMiBKYWNvIEdyZWVmZgogKiBDb3B5cmlnaHQgMjAwMyBEaW1pdHJpZSBPLiBQYXVuCiAqIENvcHlyaWdodCAyMDAzLTIwMDQgTWlrZSBIZWFybgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICoKICovCgpMQU5HVUFHRSBMQU5HX0pBUEFORVNFLCBTVUJMQU5HX0RFRkFVTFQKCklEUl9XSU5FQ0ZHIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJDb25maWd1cmUiLCBJRENfQVVESU9fQ09ORklHVVJFCiAgICBFTkQKRU5ECgpJRERfQUJPVVRDRkcgRElBTE9HRVggMCwgMCwgMjYwLCAyNzAKU1RZTEUgV1NfQ0hJTEQKRk9OVCA5LCAiTVMgVUkgR290aGljIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgIFBBQ0tBR0VfU1RSSU5HLElEQ19TVEFUSUMsMTE5LDE3LDEyMCw4CiAgICBDT05UUk9MICAgICAgICAgSURCX1dJTkUsSURDX1NUQVRJQywiU3RhdGljIixTU19CSVRNQVAgLDE1LDE3LDE1NywxMTEKICAgIExURVhUICAgICAgICAgICAiaHR0cDovL3d3dy53aW5laHEub3JnLyIsSURDX1NUQVRJQywxMTksMzEsMTA2LDgKICAgIExURVhUICAgICAgICAgICAiVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTE5LDQ0LDEyNCw3MgpFTkQKCklERF9BUFBDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOSwgIk1TIFVJIEdvdGhpYyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIINBg3aDioNQgVuDVoOHg5OQ3ZLoICIsSURDX1NUQVRJQywgOCw0LDI0NCwyNDAKICAgIExURVhUICAgICAgICAgICAiV2luZYLNg0GDdoOKg1CBW4NWg4eDk4LJguaCwYLEiNmCyILpV2luZG93c4LMg2+BW4NXg4eDk4Lwg0eDfoOFg4yBW4NngsWCq4LcgreBQiCCsYLMg16DdYLNg4mDQ4N1g4mDiot5gtGDT4OJg3SDQoNig06KZYNeg3WCxphBk66CtYLcgreCzILFgUGDVoNYg2WDgJFTkcyCzJDdkuiC4lxujMKVyoNBg3aDioNQgVuDVoOHg5OCzJDdkuiCzJXPjViCqo1zgqaC3IK3gUIiLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTUsMjAsMjI3LDMwCiAgICBDT05UUk9MICAgICAgICAgIoNBg3aDioNQgVuDVoOHg5MiLElEQ19BUFBfTElTVFZJRVcsIlN5c0xpc3RWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMVlNfTElTVCB8IExWU19TSU5HTEVTRUwgfCBMVlNfU0hPV1NFTEFMV0FZUywKICAgICAgICAgICAgICAgICAgICAxNSw1MCwyMzAsMTUwCiAgICBQVVNIQlVUVE9OCSAgICAig0GDdoOKg1CBW4NWg4eDk4LwkseJwSgmQSkuLi4iLElEQ19BUFBfQUREQVBQLCA5MCwyMDQsNzUsMTQKICAgIFBVU0hCVVRUT04JICAgICKDQYN2g4qDUIFbg1aDh4OTgvCN7Y+cKCZSKSIsSURDX0FQUF9SRU1PVkVBUFAsIDE3MCwyMDQsNzUsMTQKICAgIExURVhUICAgICAgICAgICAiJldpbmRvd3Mgg2+BW4NXg4eDkzoiLElEQ19TVEFUSUMsMTcsMjI2LDU4LDgKICAgIENPTUJPQk9YICAgICAgICBJRENfV0lOVkVSLDgzLDIyNCwxNjMsNTYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QICAgIApFTkQKCklERF9HUkFQSENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA5LCAiTVMgVUkgR290aGljIgpCRUdJTgogICAgR1JPVVBCT1ggICAgIiCDRYNCg5ODaINFkN2S6CAiLElEQ19TVEFUSUMsOCw0LDI0NCw4NAogICAgQ09OVFJPTCAgICAgIkRpcmVjdFggg0GDdoOKg1CBW4NWg4eDk4Kqg32DRYNYgvCKbZXbgreC6YLMgvCLlonCgreC6SIsSURDX0RYX01PVVNFX0dSQUIsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwyMCwyMzAsOAogICAgQ09OVFJPTCAgICAgIkFsbG93IHRoZSB3aW5kb3cgbWFuYWdlciB0byAmZGVjb3JhdGUgdGhlIHdpbmRvd3MiLElEQ19FTkFCTEVfREVDT1JBVEVELCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMzIsMjMwLDgKICAgIENPTlRST0wgICAgICJBbGxvdyB0aGUgJndpbmRvdyBtYW5hZ2VyIHRvIGNvbnRyb2wgdGhlIHdpbmRvd3MiLElEQ19FTkFCTEVfTUFOQUdFRCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDQ0LDIzMCw4CiAgICBDT05UUk9MICAgICAig2aDWINOg2eDYoN2gvCDR4N+g4WDjIFbg2eCt4LpIixJRENfRU5BQkxFX0RFU0tUT1AsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDU2LDIzMCw4CiAgICBMVEVYVCAgICAgICAig2aDWINOg2eDYoN2gsyR5YKrgrM6IixJRENfREVTS1RPUF9TSVpFLDE1LDcwLDQ0LDgsV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICJYIixJRENfREVTS1RPUF9CWSwxMDksNzAsOCw4LFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICBJRENfREVTS1RPUF9XSURUSCw2NCw2OCw0MCwxMixFU19BVVRPSFNDUk9MTCB8IEVTX05VTUJFUiB8IFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICBJRENfREVTS1RPUF9IRUlHSFQsMTE3LDY4LDQwLDEyLEVTX0FVVE9IU0NST0xMIHwgRVNfTlVNQkVSIHwgV1NfRElTQUJMRUQKCiAgICBHUk9VUEJPWCAgICAiIERpcmVjdDNEICIsSURDX1NUQVRJQyw4LDk1LDI0NCw0OQogICAgTFRFWFQgICAgICAgIlZlcnRleCBTaGFkZXIgg1SDfIFbg2c6ICIsSURDX1NUQVRJQywxNSwxMTAsODAsMzIKICAgIENPTUJPQk9YICAgIElEQ19EM0RfVlNIQURFUl9NT0RFLDEwMCwxMDgsMTQ1LDcwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgQ09OVFJPTCAgICAgIlBpeGVsIFNoYWRlciCC8JdMjPiCyYK3gukog26BW4Nog0WDRoNBgsWDVIN8gVuDZ4KzguqCxIKigumP6o2HgsyC3SkiLElEQ19EM0RfUFNIQURFUl9NT0RFLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMTI2LDIzMCwxMAoKICAgIEdST1VQQk9YICAgICIgU2NyZWVuICZSZXNvbHV0aW9uICIsSURDX1NUQVRJQyw4LDE1MSwyNDQsOTMKICAgIENPTlRST0wgICAgICIiLCBJRENfUkVTX1RSQUNLQkFSLCAibXNjdGxzX3RyYWNrYmFyMzIiLFdTX1RBQlNUT1AsMTIsMTYxLDE4NywxNQogICAgRURJVFRFWFQgICAgSURDX1JFU19EUElFRElULDIwNCwxNjEsMjMsMTMsRVNfTlVNQkVSfFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICJkcGkiLElEQ19TVEFUSUMsMjM1LDE2MywxMCw4CiAgICBMVEVYVCAgICAgICAiVGhpcyBpcyBhIHNhbXBsZSB0ZXh0IHVzaW5nIDEwIHBvaW50IFRhaG9tYSIsSURDX1JFU19GT05UX1BSRVZJRVcsMTUsMTgxLDIzMCw1NQpFTkQKCklERF9ETExDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOSwgIk1TIFVJIEdvdGhpYyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIERMTCCDSYFbg2+BW4OJg0ODaCAiLElEQ19TVEFUSUMsOCw0LDI0NCwyNDAKICAgIExURVhUICAgICAgICAgICAig1+DQ4Npg36DYoNOgUWDioOTg06BRYOJg0ODdYOJg4ooRExMKYLNjMKVyoLJIGJ1aWx0aW4gKFdpbmWUxSkggtyCvYLNIG5hdGl2ZSAoV2luZG93cyCC4IK1gq2CzYNBg3aDioNQgVuDVoOHg5OS8YufgsyVqCmC8JFJgtSCsYLGgqqCxYKrgtyCt4FCIgogICAgICAgICAgICAgICAgICAgICxJRENfU1RBVElDLDE2LDE2LDIyMCwzMgogICAgTFRFWFQgICAgICAgICAgICKQVotLg4mDQ4N1g4mDioLMg0mBW4NvgVuDiYNDg2g6IixJRENfU1RBVElDLDE2LDU4LDEwMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RMTENPTUJPLDE2LDY4LDE0MCwxNCxDQlNfRFJPUERPV04gfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCB8IENCU19TT1JUIHwgQ0JTX0xPV0VSQ0FTRQogICAgUFVTSEJVVFRPTiAgICAgICKSx4nBKCZBKSIsSURDX0RMTFNfQURERExMLCAxNjQsNjgsODIsMTMsQlNfREVGUFVTSEJVVFRPTiAKICAgIExURVhUICAgICAgICAgICAiivmRtoLMg0mBW4NvgVuDiYNDg2g6IixJRENfU1RBVElDLDE2LDg2LDEwMCw4CiAgICBMSVNUQk9YICAgICAgICAgSURDX0RMTFNfTElTVCwxNiw5NiwxNDAsMTQwLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19WU0NST0xMCiAgICBQVVNIQlVUVE9OICAgICAgIpXSj1coJkUpIixJRENfRExMU19FRElURExMLDE2NCw5Niw4MiwxNAogICAgUFVTSEJVVFRPTiAgICAgICKN7Y+cKCZSKSIsSURDX0RMTFNfUkVNT1ZFRExMLDE2NCwxMTQsODIsMTQgCkVORAoKSUREX0xPQURPUkRFUiBESUFMT0cgRElTQ0FSREFCTEUgODAsIDkwLCAxMTAsIDkyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICKDSYFbg2+BW4OJg0ODaILMldKPVyIKRk9OVCA5LCAiTVMgVUkgR290aGljIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgk8eNno+Hj5ggIixJRENfU1RBVElDLDgsNCw5NCw2NgogICAgQ09OVFJPTCAgICAgICAgICImQnVpbHRpbiAoV2luZSkiLElEQ19SQURfQlVJTFRJTiwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OIHwgV1NfR1JPVVAsMTYsMTQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiJk5hdGl2ZSAoV2luZG93cykiLElEQ19SQURfTkFUSVZFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsMjQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiQnVpJmx0aW4gjOMgTmF0aXZlIixJRENfUkFEX0JVSUxUSU5fTkFUSVZFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsMzQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiTmF0aSZ2ZSCM4yBCdWlsdGluIixJRENfUkFEX05BVElWRV9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNDQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAilrOM+CgmRCkiLElEQ19SQURfRElTQUJMRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDU0LDc1LDEwCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDgsNzQsNDUsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAig0yDg4OTg1qDiyIsSURDQU5DRUwsNTcsNzQsNDUsMTQsV1NfR1JPVVAKRU5ECgpJRERfRFJJVkVDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOSwgIk1TIFVJIEdvdGhpYyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIINog4mDQ4N1gsyDfYNig3ODk4NPICIsSURDX1NUQVRJQyw4LDQsMjQ0LDI0MAogICAgQ09OVFJPTCAgICAgICAgICJMaXN0dmlldyIsSURDX0xJU1RfRFJJVkVTLCJTeXNMaXN0VmlldzMyIixMVlNfUkVQT1JUIHwgTFZTX0FVVE9BUlJBTkdFIHwgTFZTX0FMSUdOTEVGVCB8CiAgICAgICAgICAgICAgICAgICAgTFZTX1NJTkdMRVNFTCB8IFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsIDE1LDE4LDIzMiw3NgogICAgUFVTSEJVVFRPTiAgICAgICKSx4nBKCZBKS4uLiIsSURDX0JVVFRPTl9BREQsMTUsOTgsMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAije2PnCgmUikiLElEQ19CVVRUT05fUkVNT1ZFLDU2LDk4LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIo6pk66Mn49vKCZEKS4uLiIsSURDX0JVVFRPTl9BVVRPREVURUNULDE5Nyw5OCw0OSwxNAoKICAgIC8qIGVkaXRpbmcgZHJpdmUgZGV0YWlscyAqLwogICAgTFRFWFQgICAgICAgICAgICKDcINYKCZQKToiLElEQ19TVEFUSUMsMTUsMTIzLDIwLDkgICAgCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfUEFUSCw0MSwxMjAsMTYwLDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICKOUY/GKCZCKS4uLiIsSURDX0JVVFRPTl9CUk9XU0VfUEFUSCwyMDYsMTIwLDQwLDEzCiAgICAKICAgIExURVhUICAgICAgICAgICAig16DQ4N2KCZUKToiLElEQ19TVEFUSUNfVFlQRSwxNSwxMzgsMjEsMTAKICAgIENPTUJPQk9YICAgICAgICBJRENfQ09NQk9fVFlQRSw0MSwxMzUsNzcsNjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICAKICAgIExURVhUICAgICAgICAgICAig4mDeIOLgsaDVoOKg0GDi5TUjYYiLElEQ19MQUJFTFNFUklBTF9TVEFUSUMsMTUsMTU1LDk1LDEwCiAgICAKICAgIFBVU0hCVVRUT04gICAgICAij9qN14LwlVyOpigmUykiLElEQ19CVVRUT05fU0hPV19ISURFX0FEVkFOQ0VELDE4NiwxMzYsNjAsMTMKICAgIENPTlRST0wgICAgICAgICAig2aDb4NDg1iCqYLnjqmTroyfj28oJkYpOiIsSURDX1JBRElPX0FVVE9ERVRFQ1QsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT1JBRElPQlVUVE9OLDE1LDE2Niw5MywxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX0RFVklDRSwyNywxNzYsMTc0LDEzLEVTX0FVVE9IU0NST0xMCiAgICBQVVNIQlVUVE9OICAgICAgIo5Rj8YoJlcpLi4uIixJRENfQlVUVE9OX0JST1dTRV9ERVZJQ0UsMjA2LDE3Niw0MCwxMwogICAgQ09OVFJPTCAgICAgICAgICKO6JOugsWQ3ZLoKCZNKToiLElEQ19SQURJT19BU1NJR04sIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT1JBRElPQlVUVE9OLDE1LDE5NSw2OSwxMAoKICAgIExURVhUICAgICAgICAgICAig4mDeIOLKCZMKToiLElEQ19TVEFUSUNfTEFCRUwsMzMsMjA4LDI5LDEyCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfTEFCRUwsNjMsMjA1LDc4LDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICKDVoOKg0GDi5TUjYYoJkUpOiIsSURDX1NUQVRJQ19TRVJJQUwsMzMsMjI1LDI5LDEyCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfU0VSSUFMLDYzLDIyMSw3OCwxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKCiAgICBDT05UUk9MICAgICAgICAgImRvdCCDdINAg0ODi4LwlVyOpoK3gukiLElEQ19TSE9XX0RPVF9GSUxFUywiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDgsMjYwLDIzMCw4CkVORAoKSUREX0FVRElPQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDksICJNUyBVSSBHb3RoaWMiCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBEcml2ZXIgU2VsZWN0aW9uICIsSURDX1NUQVRJQyw4LDQsMjQ0LDE5NQogICAgTFRFWFQgICAgICAgICAgICKDSYFbg2aDQoNJg2iDiYNDg286ICIsSURDX1NUQVRJQywxNSwyMCwyMjcsMzAKICAgIENPTlRST0wgICAgICAgICAiRGV2aWNlcyIsSURDX0FVRElPX1RSRUUsIlN5c1RyZWVWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsMTUsNTAsMTQwLDE0MAogICAgUFVTSEJVVFRPTiAgICAgICImVGVzdCBTb3VuZCIsSURDX0FVRElPX1RFU1QsMTcwLDUwLDU5LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIoNSg5ODZ4ONgVuDi4Nwg2yDiyIsSURDX0FVRElPX0NPTlRST0xfUEFORUwsMTcwLDcwLDU5LDE0CiAgICBHUk9VUEJPWCAgICAgICAgIiBEaXJlY3RTb3VuZCAiLElEQ19TVEFUSUMsOCwyMDUsMjQ0LDYwCiAgICBMVEVYVAkgICAgIoNugVuDaINFg0aDQYFFg0GDToNag4mDjIFbg1aDh4OTOiAiLElEQ19TVEFUSUMsMTUsMjE1LDkwLDEwCiAgICBDT01CT0JPWAkgICAgSURDX0RTT1VORF9IV19BQ0NFTCwxMDAsMjEzLDE1MCw3MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiRGVmYXVsdCAmU2FtcGxlIFJhdGU6IixJRENfU1RBVElDLDE1LDIzMiw3MCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RTT1VORF9SQVRFUyw5MCwyMzAsNDIsNzYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIkRlZmF1bHQgJkJpdHMgUGVyIFNhbXBsZToiLElEQ19TVEFUSUMsMTM3LDIzMiw4MCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RTT1VORF9CSVRTLDIyMCwyMzAsMzAsNTYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBDT05UUk9MICAgICAgICAgIoNog4mDQ4NvgUWDR4N+g4WDjIFbg1aDh4OTIixJRENfRFNPVU5EX0RSVl9FTVVMLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMjUwLDIzMCwxMApFTkQKCklERF9ERVNLVE9QX0lOVEVHUkFUSU9OIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDksICJNUyBVSSBHb3RoaWMiCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBBcHBlYXJhbmNlICIsSURDX1NUQVRJQyw4LDQsMjQ0LDEwNgogICAgTFRFWFQgICAgICAgICAgICKDZYFbg306IixJRENfU1RBVElDLDE1LDE2LDEzMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX1RIRU1FQ09NQk8sMTUsMjQsMTMwLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICKDZYFbg32CzINDg5ODWINngVuDiy4uLiIsSURDX1RIRU1FX0lOU1RBTEwsMTUyLDIzLDkzLDE0CiAgICBMVEVYVCAgICAgICAgICAgIpR6kEY6IixJRENfVEhFTUVfQ09MT1JURVhULDE1LDQwLDExMiw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX0NPTE9SQ09NQk8sMTUsNDgsMTEyLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICKDVINDg1k6IixJRENfVEhFTUVfU0laRVRFWFQsMTM1LDQwLDExMCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX1NJWkVDT01CTywxMzUsNDgsMTEwLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJJdGVtOiIsSURDX1NUQVRJQywxNSw2NCwxMTIsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19TWVNQQVJBTV9DT01CTywxNSw3NCwxMTIsMTIwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCB8IENCU19TT1JUCiAgICBMVEVYVCAgICAgICAgICAgIkNvbG9yOiIsSURDX1NZU1BBUkFNX0NPTE9SX1RFWFQsMTM1LDY0LDI1LDgsV1NfRElTQUJMRUQKICAgIFBVU0hCVVRUT04gICAgICAiIixJRENfU1lTUEFSQU1fQ09MT1IsMTM1LDc0LDI1LDEzLFdTX0RJU0FCTEVEIHwgQlNfT1dORVJEUkFXCiAgICBMVEVYVCAgICAgICAgICAgIlNpemU6IixJRENfU1lTUEFSQU1fU0laRV9URVhULDE2Niw2NCwzMCw4LFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICAgICAgSURDX1NZU1BBUkFNX1NJWkUsMTY2LDc0LDIzLDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUCB8IFdTX0RJU0FCTEVECiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX1NZU1BBUkFNX1NJWkVfVUQsVVBET1dOX0NMQVNTLFVEU19TRVRCVUREWUlOVCB8IFdTX0RJU0FCTEVELDE4Nyw3NCwxNSwxMwogICAgUFVTSEJVVFRPTiAgICAgICJGb250IixJRENfU1lTUEFSQU1fRk9OVCwyMDgsNzQsMzcsMTMsV1NfRElTQUJMRUQKICAgIEdST1VQQk9YICAgICAgICAiIFNoZWxsIEZvbGRlciAiLElEQ19TVEFUSUMsOCwxMTQsMjQ0LDEwMAogICAgQ09OVFJPTCAgICAgICAgICJMaXN0dmlldyIsSURDX0xJU1RfU0ZQQVRIUywiU3lzTGlzdFZpZXczMiIsTFZTX1JFUE9SVCB8IExWU19BVVRPQVJSQU5HRSB8IExWU19BTElHTkxFRlQgfAogICAgICAgICAgICAgICAgICAgICBMVlNfU0lOR0xFU0VMIHwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwgMTUsMTI2LDIzMCw2NAogICAgQ09OVFJPTCAgICAgICAgICJMaW5rIHRvOiIsSURDX0xJTktfU0ZQQVRILCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWHxXU19UQUJTVE9QfFdTX0RJU0FCTEVELDE1LDE5NSw1MCwxMwogICAgRURJVFRFWFQgICAgICAgICBJRENfRURJVF9TRlBBVEgsNjUsMTk1LDE0NSwxMyxFU19BVVRPSFNDUk9MTHxXU19UQUJTVE9QfFdTX0RJU0FCTEVECiAgICBQVVNIQlVUVE9OICAgICAgIkJyb3dzZSIsSURDX0JST1dTRV9TRlBBVEgsMjE1LDE5NSwzMCwxMyxXU19ESVNBQkxFRApFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfVEFCX0FQUExJQ0FUSU9OUyAgICAig0GDdoOKg1CBW4NWg4eDkyIKICAgIElEU19UQUJfRExMUyAgICAgICAgICAgICKDiYNDg3WDiYOKIgogICAgSURTX1RBQl9EUklWRVMgICAgICAgICAgIoNog4mDQ4N1IgogICAgSURTX0NIT09TRV9QQVRIICAgICAgICAgIlNlbGVjdCB0aGUgdW5peCB0YXJnZXQgZGlyZWN0b3J5LCBwbGVhc2UuIgogICAgSURTX0hJREVfQURWQU5DRUQgICAgICAgIo/ajdeC8IlCgrciCiAgICBJRFNfU0hPV19BRFZBTkNFRCAgICAgICAij9qN14LwlVyOpiIKICAgIElEU19OT1RIRU1FICAgICAgICAgICAgICIog2WBW4N9lrOCtSkiCiAgICBJRFNfVEFCX0dSQVBISUNTICAgICAgICAiieaWyiIKICAgIElEU19UQUJfREVTS1RPUF9JTlRFR1JBVElPTiAiRGVza3RvcCBJbnRlZ3JhdGlvbiIKICAgIElEU19UQUJfQVVESU8gICAgICAgICAgICKDSYFbg2aDQoNJIgogICAgSURTX1RBQl9BQk9VVCAgICAgICAgICAgIldpbmWCyYLCgqKCxCIKICAgIElEU19XSU5FQ0ZHX1RJVExFICAgICAgICJXaW5lkN2S6CIKICAgIElEU19XSU5FQ0ZHX1RJVExFX0FQUCAgICJXaW5lIGNvbmZpZ3VyYXRpb24gZm9yICVzIgogICAgSURTX1RIRU1FRklMRSAgICAgICAgICAgIoNlgVuDfYN0g0CDQ4OLIgogICAgSURTX1RIRU1FRklMRV9TRUxFQ1QgICAgIoNlgVuDfYN0g0CDQ4OLgvCRSYLxgsWCrYK+grOCoiIKICAgIElEU19TSEVMTF9GT0xERVIgICAgICAgICJTaGVsbCBGb2xkZXIiCiAgICBJRFNfTElOS1NfVE8gICAgICAgICAgICAiTGlua3MgdG8iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19ETExfV0FSTklORyAgICAgICAgICJDaGFuZ2luZyB0aGUgbG9hZCBvcmRlciBvZiB0aGlzIGxpYnJhcnkgaXMgbm90IHJlY29tbWVuZGVkLlxuQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRvIHRoaXM/IgogICAgSURTX0RMTF9XQVJOSU5HX0NBUFRJT04gIldhcm5pbmc6IHN5c3RlbSBsaWJyYXJ5IgogICAgSURTX0RMTF9OQVRJVkUgICAgICAgICAgIm5hdGl2ZSIKICAgIElEU19ETExfQlVJTFRJTiAgICAgICAgICJidWlsdGluIgogICAgSURTX0RMTF9OQVRJVkVfQlVJTFRJTiAgIm5hdGl2ZSwgYnVpbHRpbiIKICAgIElEU19ETExfQlVJTFRJTl9OQVRJVkUgICJidWlsdGluLCBuYXRpdmUiCiAgICBJRFNfRExMX0RJU0FCTEVEICAgICAgICAiZGlzYWJsZWQiCiAgICBJRFNfREVGQVVMVF9TRVRUSU5HUyAgICAiRGVmYXVsdCBTZXR0aW5ncyIKICAgIElEU19FWEVDVVRBQkxFX0ZJTFRFUiAgICJXaW5lIFByb2dyYW1zICgqLmV4ZSwqLmV4ZS5zbylcMCouZXhlOyouZXhlLnNvXDAiCiAgICBJRFNfVVNFX0dMT0JBTF9TRVRUSU5HUyAiVXNlIGdsb2JhbCBzZXR0aW5ncyIKICAgIElEU19TRUxFQ1RfRVhFQ1VUQUJMRSAgICJTZWxlY3QgYW4gZXhlY3V0YWJsZSBmaWxlIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfU0hBREVSX01PREVfSEFSRFdBUkUgICAgIkhhcmR3YXJlIgogICAgSURTX1NIQURFUl9NT0RFX05PTkUgICAgICAgICJOb25lIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRFJJVkVfVU5LTk9XTiAgICAgICAgICAgIkF1dG9kZXRlY3QiCiAgICBJRFNfRFJJVkVfRklYRUQgICAgICAgICAgICAgIkxvY2FsIGhhcmQgZGlzayIKICAgIElEU19EUklWRV9SRU1PVEUgICAgICAgICAgICAiTmV0d29yayBzaGFyZSIKICAgIElEU19EUklWRV9SRU1PVkFCTEUgICAgICAgICAiRmxvcHB5IGRpc2siCiAgICBJRFNfRFJJVkVfQ0RST00gICAgICAgICAgICAgIkNELVJPTSIKICAgIElEU19EUklWRV9MRVRURVJTX0VYQ0VFREVEICAiWW91IGNhbm5vdCBhZGQgYW55IG1vcmUgZHJpdmVzLlxuXG5FYWNoIGRyaXZlIG11c3QgaGF2ZSBhIGxldHRlciwgZnJvbSBBIHRvIFosIHNvIHlvdSBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gMjYiCiAgICBJRFNfU1lTVEVNX0RSSVZFX0xBQkVMICAgICAgIlN5c3RlbSBkcml2ZSIKICAgIElEU19DT05GSVJNX0RFTEVURV9DICAgICAgICAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSBkcml2ZSBDP1xuXG5Nb3N0IFdpbmRvd3MgYXBwbGljYXRpb25zIGV4cGVjdCBkcml2ZSBDIHRvIGV4aXN0LCBhbmQgd2lsbCBkaWUgbWVzc2lseSBpZiBpdCBkb2Vzbid0LiBJZiB5b3UgcHJvY2VlZCByZW1lbWJlciB0byByZWNyZWF0ZSBpdCEiCiAgICBJRFNfQ09MX0RSSVZFTEVUVEVSICAgICAgICAgIkxldHRlciIKICAgIElEU19DT0xfRFJJVkVNQVBQSU5HICAgICAgICAiRHJpdmUgTWFwcGluZyIKICAgIElEU19OT19EUklWRV9DICAgICAgICAgICAgICAiWW91IGRvbid0IGhhdmUgYSBkcml2ZSBDLiBUaGlzIGlzIG5vdCBzbyBncmVhdC5cblxuUmVtZW1iZXIgdG8gY2xpY2sgJ0FkZCcgaW4gdGhlIERyaXZlcyB0YWIgdG8gY3JlYXRlIG9uZSFcbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0FDQ0VMX0ZVTEwgICAgICAgICAgICAgICJGdWxsIgogICAgSURTX0FDQ0VMX1NUQU5EQVJEICAgICAgICAgICJTdGFuZGFyZCIKICAgIElEU19BQ0NFTF9CQVNJQyAgICAgICAgICAgICAiQmFzaWMiCiAgICBJRFNfQUNDRUxfRU1VTEFUSU9OICAgICAgICAgIkVtdWxhdGlvbiIKICAgIElEU19EUklWRVJfQUxTQSAgICAgICAgICAgICAiQUxTQSBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX0VTT1VORCAgICAgICAgICAgIkVzb3VuRCBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX09TUyAgICAgICAgICAgICAgIk9TUyBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX0pBQ0sgICAgICAgICAgICAgIkpBQ0sgRHJpdmVyIgogICAgSURTX0RSSVZFUl9OQVMgICAgICAgICAgICAgICJOQVMgRHJpdmVyIgogICAgSURTX0RSSVZFUl9BVURJT0lPICAgICAgICAgICJBdWRpbyBJTyAoU29sYXJpcykgRHJpdmVyIgogICAgSURTX0RSSVZFUl9DT1JFQVVESU8gICAgICAgICJDb3JlQXVkaW8gRHJpdmVyIgogICAgSURTX09QRU5fRFJJVkVSX0VSUk9SICAgICAgICJDb3VsZG4ndCBvcGVuICVzISIKICAgIElEU19TT1VORERSSVZFUlMgICAgICAgICAgICAiU291bmQgRHJpdmVycyIKICAgIElEU19ERVZJQ0VTX1dBVkVPVVQgICAgICAgICAiV2F2ZSBPdXQgRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX1dBVkVJTiAgICAgICAgICAiV2F2ZSBJbiBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfTUlESU9VVCAgICAgICAgICJNSURJIE91dCBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfTUlESUlOICAgICAgICAgICJNSURJIEluIERldmljZXMiCiAgICBJRFNfREVWSUNFU19BVVggICAgICAgICAgICAgIkF1eCBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfTUlYRVIgICAgICAgICAgICJNaXhlciBEZXZpY2VzIgogICAgSURTX1VOQVZBSUxBQkxFX0RSSVZFUiAgICAgICJGb3VuZCBkcml2ZXIgaW4gcmVnaXN0cnkgdGhhdCBpcyBub3QgYXZhaWxhYmxlIVxuXG5SZW1vdmUgXCIlc1wiIGZyb20gcmVnaXN0cnk/IgogICAgSURTX1dBUk5JTkcgICAgICAgICAgICAgICAgICJXYXJuaW5nIgpFTkQK