LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogSHVuZ2FyaWFuIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IDIwMDYgQW5kcmFzIEtvdmFjcwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICoKICovCgpMQU5HVUFHRSBMQU5HX0hVTkdBUklBTiwgU1VCTEFOR19ERUZBVUxUCgpJRFJfV0lORUNGRyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiS29uZmlndXLhY2nzIiwgSURDX0FVRElPX0NPTkZJR1VSRQogICAgRU5ECkVORAoKSUREX0FCT1VUQ0ZHIERJQUxPR0VYIDAsIDAsIDI2MCwgMjcwClNUWUxFIFdTX0NISUxECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICBQQUNLQUdFX1NUUklORyxJRENfU1RBVElDLDExOSwxNywxMjAsOAogICAgQ09OVFJPTCAgICAgICAgIElEQl9XSU5FLElEQ19TVEFUSUMsIlN0YXRpYyIsU1NfQklUTUFQICwxNSwxNywxNTcsMTExCiAgICBMVEVYVCAgICAgICAgICAgImh0dHA6Ly93d3cud2luZWhxLm9yZy8iLElEQ19TVEFUSUMsMTE5LDMxLDEwNiw4CiAgICBMVEVYVCAgICAgICAgICAgIkV6IGEgZvxnZ3bpbnlr9m52dOFyIHN6YWJhZCBzem9mdHZlcjsgc3phYmFkb24gdGVyamVzenRoZXRpLCB2YWd5IG3zZG9z7XRoYXRqYSBhIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlzemVuYyBmZWx06XRlbGVpIHN6ZXJpbnQsIGFtaXQgYSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24ga+lzeu10ZXR0OyBtaW5kIGEgMi4xIHZlcnpp82r6IGxpY2Vuc3osIHZhZ3kgKHbhbGFzenThc2Egc3plcmludCkgYuFybWVseSBr6XP1YmJpIHZlcnpp8yBoYXN6buFsaGF08y4iLAogICAgICAgICAgICAgICAgICAgIElEQ19TVEFUSUMsMTE5LDQ0LDEyNCw3MgogICAgR1JPVVBCT1ggICAgICAgICIgV2luZG93cyBSZWdpc3RyYXRpb24gSW5mb3JtYXRpb24gIiwgSURDX1NUQVRJQywgMTUsIDExMCwgMjMwLCA1NQogICAgTFRFWFQgICAgICAgICAgICJPd25lcjoiLCBJRENfU1RBVElDLCAyMiwgMTI2LCA0MCwgMjAKICAgIExURVhUICAgICAgICAgICAiT3JnYW5pemF0aW9uOiIsIElEQ19TVEFUSUMsIDIyLCAxNDAsIDUwLCAyMAogICAgRURJVFRFWFQgICAgICAgIElEQ19BQlRfT1dORVIsIDc1LCAxMjYsIDE2MCwgMTMsIEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgRURJVFRFWFQgICAgICAgIElEQ19BQlRfT1JHLCA3NSwgMTQwLCAxNjAsIDEzLCBFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKRU5ECgpJRERfQVBQQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBBbGthbG1heuFzIGJl4Wxs7XThc29rICIsSURDX1NUQVRJQywgOCw0LDI0NCwyNDAKICAgIExURVhUICAgICAgICAgICAiQSBXaW5lIGv8bPZuYvZ69SBXaW5kb3dzIHZlcnpp82vpbnQgdHVkIHZpc2Vsa2VkbmkgYWxrYWxtYXrhc29ua+ludC4gIEV6IGEgZvxsIPZzc3pla/Z0dGV06XNiZW4g4WxsIGEgRvxnZ3bpbnlr9m55dnThciDpcyBHcmFmaWthIGb8bGxlbCwgaG9neSBsZWhldPV26SB0ZWd5ZSBhIHJlbmRzemVyc3ppbnT7IHZhZ3kgYWxrYWxtYXrhc29ua+ludGkgYmXhbGztdOFzb2thdCBlemVrZW4gYSBm/Gxla2VuIGlzLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxNSwxNSwyMjcsMzUKICAgIENPTlRST0wgICAgICAgICAiQWxrYWxtYXrhc29rIixJRENfQVBQX0xJU1RWSUVXLCJTeXNMaXN0VmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTFZTX0xJU1QgfCBMVlNfU0lOR0xFU0VMIHwgTFZTX1NIT1dTRUxBTFdBWVMsCiAgICAgICAgICAgICAgICAgICAgMTUsNTAsMjMwLDE1MAogICAgUFVTSEJVVFRPTgkgICAgIiZBbGsuIGhvenrhYWThcy4uLiIsSURDX0FQUF9BRERBUFAsIDkwLDIwNCw3NSwxNAogICAgUFVTSEJVVFRPTgkgICAgIkFsay4gJmVsdOF2b2ztdOFzYSIsSURDX0FQUF9SRU1PVkVBUFAsIDE3MCwyMDQsNzUsMTQKICAgIExURVhUICAgICAgICAgICAiJldpbmRvd3MgdmVyemnzOiIsSURDX1NUQVRJQywxNywyMjYsNTgsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19XSU5WRVIsODMsMjI0LDE2Myw1NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgICAgCkVORAoKSUREX0dSQVBIQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAiIEFibGFrYmXhbGztdOFzb2sgIixJRENfU1RBVElDLDgsNCwyNDQsODQKICAgIENPTlRST0wgICAgICJBIERpcmVjdFgtZXMgYWxrYWxtYXrhc29rIGFibGFr4WJvbCBuZW0gbOlwaGV0IGtpIGF6IGVn6XJtdXRhdPMiLElEQ19EWF9NT1VTRV9HUkFCLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMjAsMjMwLDgKICAgIENPTlRST0wgICAgICJBbGxvdyB0aGUgd2luZG93IG1hbmFnZXIgdG8gJmRlY29yYXRlIHRoZSB3aW5kb3dzIixJRENfRU5BQkxFX0RFQ09SQVRFRCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDMyLDIzMCw4CiAgICBDT05UUk9MICAgICAiQXogYWJsYWtrZXplbPUga2V6ZWxoZXRpIGF6IGFibGFrb2thdCIsSURDX0VOQUJMRV9NQU5BR0VELCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsNDQsMjMwLDgKICAgIENPTlRST0wgICAgICJWaXJ0deFsaXMgYXN6dGFsIGVtdWzhbOFzYSIsSURDX0VOQUJMRV9ERVNLVE9QLCJCdXR0b24iLAogICAgICAgICAgICAgICAgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSw1NiwyMzAsOAogICAgTFRFWFQgICAgICAgIkFibGFrbelyZXQ6IixJRENfREVTS1RPUF9TSVpFLDE1LDcwLDQ0LDgsV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICJYIixJRENfREVTS1RPUF9CWSwxMDksNzAsOCw4LFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICBJRENfREVTS1RPUF9XSURUSCw2NCw2OCw0MCwxMixFU19BVVRPSFNDUk9MTCB8IEVTX05VTUJFUiB8IFdTX0RJU0FCTEVECiAgICBFRElUVEVYVCAgICBJRENfREVTS1RPUF9IRUlHSFQsMTE3LDY4LDQwLDEyLEVTX0FVVE9IU0NST0xMIHwgRVNfTlVNQkVSIHwgV1NfRElTQUJMRUQKCiAgICBHUk9VUEJPWCAgICAiIERpcmVjdDNEICIsSURDX1NUQVRJQyw4LDk1LDI0NCw0OQogICAgTFRFWFQgICAgICAgIlZlcnRleCBTaGFkZXIgdOFtb2dhdOFzOiAiLElEQ19TVEFUSUMsMTUsMTEwLDgwLDMyCiAgICBDT01CT0JPWCAgICBJRENfRDNEX1ZTSEFERVJfTU9ERSwxMDAsMTA4LDE0NSw3MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIENPTlRST0wgICAgICJQaXhlbCBTaGFkZXIgZW5nZWTpbHlleulzZSAoaGEgdOFtb2dhdGphIGEgaGFyZHZlcikiLElEQ19EM0RfUFNIQURFUl9NT0RFLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AsMTUsMTI2LDIzMCwxMAoKICAgIEdST1VQQk9YICAgICIgU2NyZWVuICZSZXNvbHV0aW9uICIsSURDX1NUQVRJQyw4LDE1MSwyNDQsOTMKICAgIENPTlRST0wgICAgICIiLCBJRENfUkVTX1RSQUNLQkFSLCAibXNjdGxzX3RyYWNrYmFyMzIiLFdTX1RBQlNUT1AsMTIsMTYxLDE4NywxNQogICAgRURJVFRFWFQgICAgSURDX1JFU19EUElFRElULDIwNCwxNjEsMjMsMTMsRVNfTlVNQkVSfFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICJkcGkiLElEQ19TVEFUSUMsMjM1LDE2MywxMCw4CiAgICBMVEVYVCAgICAgICAiVGhpcyBpcyBhIHNhbXBsZSB0ZXh0IHVzaW5nIDEwIHBvaW50IFRhaG9tYSIsSURDX1JFU19GT05UX1BSRVZJRVcsMTUsMTgxLDIzMCw1NQpFTkQKCklERF9ETExDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIERMTCBmZWz7bGLtcuFs4XNvayAiLElEQ19TVEFUSUMsOCw0LDI0NCwyNDAKICAgIExURVhUICAgICAgICAgICAiQSBkaW5hbWlrdXMgY3NhdG9s4XP6IGb8Z2d26W55a/ZueXZ04XJha2F0IGtpIGxlaGV0IHbhbGFzenRhbmkgZWd5ZW5r6W50IGhvZ3kgYmXpcO10ZXR0ZWsgKGEgV2luZSBiaXp0b3PtdGphKSwgdmFneSBuYXTtdmFrIChhIHdpbmRvd3Ni82wgbnllcnQsIHZhZ3kgYXogYWxrYWxtYXrhcyBiaXp0b3PtdGphKS4iCiAgICAgICAgICAgICAgICAgICAgLElEQ19TVEFUSUMsMTYsMTYsMjIwLDMyCiAgICBMVEVYVCAgICAgICAgICAgItpqIGZlbPxsYu1y4WzhcyBr9m55dnThcmhvejoiLElEQ19TVEFUSUMsMTYsNTgsMTAwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRExMQ09NQk8sMTYsNjgsMTQwLDE0LENCU19EUk9QRE9XTiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QIHwgQ0JTX1NPUlQgfCBDQlNfTE9XRVJDQVNFCiAgICBQVVNIQlVUVE9OICAgICAgIkhvenrhJmFk4XMiLElEQ19ETExTX0FERERMTCwgMTY0LDY4LDgyLDEzLEJTX0RFRlBVU0hCVVRUT04gCiAgICBMVEVYVCAgICAgICAgICAgIkzpdGV69SBmZWz8bGLtcuFs4XNvazoiLElEQ19TVEFUSUMsMTYsODYsMTAwLDgKICAgIExJU1RCT1ggICAgICAgICBJRENfRExMU19MSVNULDE2LDk2LDE0MCwxNDAsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX1ZTQ1JPTEwKICAgIFBVU0hCVVRUT04gICAgICAiU3omZXJrZXN6dOlzIixJRENfRExMU19FRElURExMLDE2NCw5Niw4MiwxNAogICAgUFVTSEJVVFRPTiAgICAgICJFJmx04XZvbO104XMiLElEQ19ETExTX1JFTU9WRURMTCwxNjQsMTE0LDgyLDE0IApFTkQKCklERF9MT0FET1JERVIgRElBTE9HIERJU0NBUkRBQkxFIDgwLCA5MCwgMTEwLCA5MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRmVs/Gxi7XLhbOFzIHN6ZXJrZXN6dOlzZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgQmV09mx06XNpIHNvcnJlbmQgIixJRENfU1RBVElDLDgsNCw5NCw2NgogICAgQ09OVFJPTCAgICAgICAgICImQmXpcO10ZXR0IChXaW5lKSIsSURDX1JBRF9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04gfCBXU19HUk9VUCwxNiwxNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICImTmF07XYgKFdpbmRvd3MpIixJRENfUkFEX05BVElWRSwiQnV0dG9uIiwgQlNfQVVUT1JBRElPQlVUVE9OLDE2LDI0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIkJl6XDtdGV0JnQsIG5hdO12IixJRENfUkFEX0JVSUxUSU5fTkFUSVZFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsMzQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiTmF07SZ2LCBiZelw7XRldHQiLElEQ19SQURfTkFUSVZFX0JVSUxUSU4sIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiw0NCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJUaWx04SZzIixJRENfUkFEX0RJU0FCTEUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiw1NCw3NSwxMAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSyw4LDc0LDQ1LDE0LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIk3pZ3NlIixJRENBTkNFTCw1Nyw3NCw0NSwxNCxXU19HUk9VUApFTkQKCklERF9EUklWRUNGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgTWVnaGFqdPMgaG96euFyZW5kZWzpc2VrICIsSURDX1NUQVRJQyw4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJGYWlsZWQgdG8gY29ubmVjdCB0byB0aGUgbW91bnQgbWFuYWdlciwgdGhlIGRyaXZlIGNvbmZpZ3VyYXRpb24gY2Fubm90IGJlIGVkaXRlZC4iLCBJRENfU1RBVElDX01PVU5UTUdSX0VSUk9SLCAxNSwzMCwyMjAsNzYKICAgIENPTlRST0wgICAgICAgICAiTGlzdHZpZXciLElEQ19MSVNUX0RSSVZFUywiU3lzTGlzdFZpZXczMiIsTFZTX1JFUE9SVCB8IExWU19BVVRPQVJSQU5HRSB8IExWU19BTElHTkxFRlQgfAogICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QLCAxNSwxOCwyMzIsNzYKICAgIFBVU0hCVVRUT04gICAgICAiSG96euEmYWQuLi4iLElEQ19CVVRUT05fQURELDE1LDk4LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIlT2JnJs6XMiLElEQ19CVVRUT05fUkVNT1ZFLDU2LDk4LDM3LDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkF1dG8mZmVsaXNtLi4uIixJRENfQlVUVE9OX0FVVE9ERVRFQ1QsMTk3LDk4LDQ5LDE0CgogICAgLyogZWRpdGluZyBkcml2ZSBkZXRhaWxzICovCiAgICBMVEVYVCAgICAgICAgICAgIibadHYuOiIsSURDX1NUQVRJQ19QQVRILDE1LDEyMywyMCw5CiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfUEFUSCw0MSwxMjAsMTYwLDEzLEVTX0FVVE9IU0NST0xMIHwgV1NfVEFCU1RPUAogICAgUFVTSEJVVFRPTiAgICAgICImVGFsbPN64XMuLi4iLElEQ19CVVRUT05fQlJPV1NFX1BBVEgsMjA2LDEyMCw0MCwxMwogICAgCiAgICBMVEVYVCAgICAgICAgICAgIiZU7XB1czoiLElEQ19TVEFUSUNfVFlQRSwxNSwxMzgsMjEsMTAKICAgIENPTUJPQk9YICAgICAgICBJRENfQ09NQk9fVFlQRSw0MSwxMzUsNzcsNjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICAKICAgIExURVhUICAgICAgICAgICAiQ+1ta2Ug6XMgc29yb3phdHN64W0iLElEQ19MQUJFTFNFUklBTF9TVEFUSUMsMTUsMTU1LDk1LDEwCiAgICAKICAgIFBVU0hCVVRUT04gICAgICAiJkhhbGFk8yIsSURDX0JVVFRPTl9TSE9XX0hJREVfQURWQU5DRUQsMTg2LDEzNiw2MCwxMwogICAgQ09OVFJPTCAgICAgICAgICJBdXRvZmVsaXNtZXLpcyAmZXN6a/Z6cvVsOiIsSURDX1JBRElPX0FVVE9ERVRFQ1QsIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT1JBRElPQlVUVE9OLDE1LDE2Niw5MywxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX0RFVklDRSwyNywxNzYsMTc0LDEzLEVTX0FVVE9IU0NST0xMCiAgICBQVVNIQlVUVE9OICAgICAgIlRhbGwm83rhcy4uLiIsSURDX0JVVFRPTl9CUk9XU0VfREVWSUNFLDIwNiwxNzYsNDAsMTMKICAgIENPTlRST0wgICAgICAgICAiS+kmemkgaG96euFyZW5kZWzpczoiLElEQ19SQURJT19BU1NJR04sIkJ1dHRvbiIsCiAgICAgICAgICAgICAgICAgICAgQlNfQVVUT1JBRElPQlVUVE9OLDE1LDE5NSw3OSwxMAoKICAgIExURVhUICAgICAgICAgICAiJkPtbWtlOiIsSURDX1NUQVRJQ19MQUJFTCwzMywyMDgsMjksMTIKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9MQUJFTCw2MywyMDUsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlMmb3JzeuFtOiIsSURDX1NUQVRJQ19TRVJJQUwsMzMsMjI1LDI5LDEyCiAgICBFRElUVEVYVCAgICAgICAgSURDX0VESVRfU0VSSUFMLDYzLDIyMSw3OCwxMyxFU19BVVRPSFNDUk9MTCB8IFdTX1RBQlNUT1AKCiAgICBDT05UUk9MICAgICAgICAgIlJlanRldHQgZuFqbG9rIG1lZ2plbGVu7XTpc2UiLElEQ19TSE9XX0RPVF9GSUxFUywiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDgsMjYwLDIzMCw4CkVORAoKSUREX0FVRElPQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBNZWdoYWp083Byb2dyYW0gduFsYXN6dOFzICIsSURDX1NUQVRJQyw4LDQsMjQ0LDE5NQogICAgTFRFWFQgICAgICAgICAgICJW4Wxhc3N6b24gZWd5IGhhbmdtZWdoYWp083QgYSBraXbhbGFzenRvdHQgbWVnaGFqdPNwcm9ncmFtIGVs9XR0aSBu6Wd5emV0IGJlamz2bOlz6XZlbC4gIEEgaGFuZyBsZXRpbHRoYXTzLCBoYSBuZW0gamVs9mwgYmUgZWd5IG1lZ2hhanTzdCBzZW0uIFT2YmIgbWVnaGFqdPNwcm9ncmFtIGJlamVs9mzpc2UgbmVtIGFq4W5sb3R0LiBBeiD2c3N6ZXMgbWVnaGFqdPMgYmXhbGztdGhhdPMsIGhhIHLhanVrIGthdHRpbnQgam9iYiBlZ+lyZ29tYmJhbC4iLElEQ19TVEFUSUMsMTUsMTUsMjI3LDM1CiAgICBDT05UUk9MICAgICAgICAgIkVzemv2evZrIixJRENfQVVESU9fVFJFRSwiU3lzVHJlZVZpZXczMiIsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwxNSw1MCwxNDAsMTQwIAogICAgUFVTSEJVVFRPTiAgICAgICImVGVzdCBTb3VuZCIsSURDX0FVRElPX1RFU1QsMTcwLDUwLDU5LDE0CiAgICBQVVNIQlVUVE9OCSAgICAiVmV66XJs9XB1bHQiLElEQ19BVURJT19DT05UUk9MX1BBTkVMLDE3MCw3MCw1OSwxNAogICAgR1JPVVBCT1ggICAgICAgICIgRGlyZWN0U291bmQgIixJRENfU1RBVElDLDgsMjA1LDI0NCw2MAogICAgTFRFWFQJICAgICJIYXJkdmVyZXMgZ3lvcnPtdOFzOiAiLElEQ19TVEFUSUMsMTUsMjE1LDkwLDEwCiAgICBDT01CT0JPWAkgICAgSURDX0RTT1VORF9IV19BQ0NFTCwxMDAsMjEzLDE1MCw3MCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiRGVmYXVsdCAmU2FtcGxlIFJhdGU6IixJRENfU1RBVElDLDE1LDIzMiw3MCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RTT1VORF9SQVRFUyw5MCwyMzAsNDIsNzYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIkRlZmF1bHQgJkJpdHMgUGVyIFNhbXBsZToiLElEQ19TVEFUSUMsMTM3LDIzMiw4MCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX0RTT1VORF9CSVRTLDIyMCwyMzAsMzAsNTYsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBDT05UUk9MICAgICAgICAgIk1lZ2hhanTzcHJvZ3JhbSBlbXVs4WNp8yIsSURDX0RTT1VORF9EUlZfRU1VTCwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDIzMCwyMzAsMTAKRU5ECgpJRERfREVTS1RPUF9JTlRFR1JBVElPTiBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgTWVnamVsZW7pcyAiLElEQ19TVEFUSUMsOCw0LDI0NCwxMDYKICAgIExURVhUICAgICAgICAgICAiVOltYToiLElEQ19TVEFUSUMsMTUsMTYsMTMwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfVEhFTUVDT01CTywxNSwyNCwxMzAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIlTpbWEgdGVsZXDtdOlzZS4uLiIsSURDX1RIRU1FX0lOU1RBTEwsMTUyLDIzLDkzLDE0CiAgICBMVEVYVCAgICAgICAgICAgIlN67W46IixJRENfVEhFTUVfQ09MT1JURVhULDE1LDQwLDExMiw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1RIRU1FX0NPTE9SQ09NQk8sMTUsNDgsMTEyLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgTFRFWFQgICAgICAgICAgICJN6XJldDoiLElEQ19USEVNRV9TSVpFVEVYVCwxMzUsNDAsMTEwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfU0laRUNPTUJPLDEzNSw0OCwxMTAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIkl0ZW06IixJRENfU1RBVElDLDE1LDY0LDExMiw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1NZU1BBUkFNX0NPTUJPLDE1LDc0LDExMiwxMjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QIHwgQ0JTX1NPUlQKICAgIExURVhUICAgICAgICAgICAiQ29sb3I6IixJRENfU1lTUEFSQU1fQ09MT1JfVEVYVCwxMzUsNjQsMjUsOCxXU19ESVNBQkxFRAogICAgUFVTSEJVVFRPTiAgICAgICIiLElEQ19TWVNQQVJBTV9DT0xPUiwxMzUsNzQsMjUsMTMsV1NfRElTQUJMRUQgfCBCU19PV05FUkRSQVcKICAgIExURVhUICAgICAgICAgICAiU2l6ZToiLElEQ19TWVNQQVJBTV9TSVpFX1RFWFQsMTY2LDY0LDMwLDgsV1NfRElTQUJMRUQKICAgIEVESVRURVhUICAgICAgICBJRENfU1lTUEFSQU1fU0laRSwxNjYsNzQsMjMsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QIHwgV1NfRElTQUJMRUQKICAgIENPTlRST0wgICAgICAgICAiIixJRENfU1lTUEFSQU1fU0laRV9VRCxVUERPV05fQ0xBU1MsVURTX1NFVEJVRERZSU5UIHwgV1NfRElTQUJMRUQsMTg3LDc0LDE1LDEzCiAgICBQVVNIQlVUVE9OICAgICAgIkZvbnQiLElEQ19TWVNQQVJBTV9GT05ULDIwOCw3NCwzNywxMyxXU19ESVNBQkxFRAogICAgR1JPVVBCT1ggICAgICAgICIgUmVuZHN6ZXJtYXBwYSAiLElEQ19TVEFUSUMsOCwxMTQsMjQ0LDEwMAogICAgQ09OVFJPTCAgICAgICAgICJMaXN0dmlldyIsSURDX0xJU1RfU0ZQQVRIUywiU3lzTGlzdFZpZXczMiIsTFZTX1JFUE9SVCB8IExWU19BVVRPQVJSQU5HRSB8IExWU19BTElHTkxFRlQgfAogICAgICAgICAgICAgICAgICAgICBMVlNfU0lOR0xFU0VMIHwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwgMTUsMTI2LDIzMCw2NAogICAgQ09OVFJPTCAgICAgICAgICJJZGUgbGlua2VsOiIsSURDX0xJTktfU0ZQQVRILCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWHxXU19UQUJTVE9QfFdTX0RJU0FCTEVELDE1LDE5NSw1MCwxMwogICAgRURJVFRFWFQgICAgICAgICBJRENfRURJVF9TRlBBVEgsNjUsMTk1LDE0NSwxMyxFU19BVVRPSFNDUk9MTHxXU19UQUJTVE9QfFdTX0RJU0FCTEVECiAgICBQVVNIQlVUVE9OICAgICAgIlRhbGzzeuFzIixJRENfQlJPV1NFX1NGUEFUSCwyMTUsMTk1LDMwLDEzLFdTX0RJU0FCTEVECkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19UQUJfQVBQTElDQVRJT05TICAgICJBbGthbG1heuFzb2siCiAgICBJRFNfVEFCX0RMTFMgICAgICAgICAgICAiRvxnZ3bpbnlr9m55dnThcmFrIgogICAgSURTX1RBQl9EUklWRVMgICAgICAgICAgIk1lZ2hhanTzayIKICAgIElEU19DSE9PU0VfUEFUSCAgICAgICAgICJL6XJlbSB24Wxhc3N6b24gdW5peCBj6Wxr9m55dnThcmF0LiIKICAgIElEU19ISURFX0FEVkFOQ0VEICAgICAgICJIYWxhZPMgPDwiCiAgICBJRFNfU0hPV19BRFZBTkNFRCAgICAgICAiSGFsYWTzID4+IgogICAgSURTX05PVEhFTUUgICAgICAgICAgICAgIihOaW5jcyB06W1hKSIKICAgIElEU19UQUJfR1JBUEhJQ1MgICAgICAgICJHcmFmaWthIgogICAgSURTX1RBQl9ERVNLVE9QX0lOVEVHUkFUSU9OICJBc3p0YWxiYSBiZelw/GzpcyIKICAgIElEU19UQUJfQVVESU8gICAgICAgICAgICJIYW5nIgogICAgSURTX1RBQl9BQk9VVCAgICAgICAgICAgIk7pdmplZ3kiCiAgICBJRFNfV0lORUNGR19USVRMRSAgICAgICAiV2luZSBrb25maWd1cuFjafMiCiAgICBJRFNfV0lORUNGR19USVRMRV9BUFAgICAiV2luZSBrb25maWd1cuFjafMgJXMgc3rhbeFyYSIKICAgIElEU19USEVNRUZJTEUgICAgICAgICAgICJU6W1hZuFqbG9rIgogICAgSURTX1RIRU1FRklMRV9TRUxFQ1QgICAgIlTpbWFm4WpsIHbhbGFzenThc2EiCiAgICBJRFNfQVVESU9fTUlTU0lORyAgICAgICAiSmVsZW5sZWcgbmluY3MgaGFuZ21lZ2hhanTzIGtpduFsYXN6dHZhIGEgcmVnaXN6dHLhY2nzcyBhZGF0YuF6aXNiYW4uXG5cbkVneSBhauFubG90dCBtZWdoYWp083Byb2dyYW0ga2kgbGV0dCB24Wxhc3p0dmEg1m5uZWsuXG7WbiBoYXN6buFsaGF0amEgZXp0IGEgbWVnaGFqdPN0LCB2YWd5IHbhbGFzenRoYXQgbeFzaWthdCBoYSBlbOlyaGV09S5cblxu1m5uZWsgYXogYWxrYWxtYXrhc3JhIGtlbGwga2F0dGludGFuaSBhIGtpduFsYXN6dOFzIOlydulueWJlIGzpcHRldOlz6Whlei4iCiAgICBJRFNfU0hFTExfRk9MREVSICAgICAgICAiUmVuZHN6ZXJtYXBwYSIKICAgIElEU19MSU5LU19UTyAgICAgICAgICAgICJJZGUgbGlua2VsIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfRExMX1dBUk5JTkcgICAgICAgICAiQSBr9m55dnThcmFrIGJldPZsdOlzaSBzb3JyZW5kauluZWsgbWVnduFsdG96dGF04XNhIG5lbSBhauFubG90dC5cbkJpenRvcyBob2d5IGV6dCBha2FyamEgdGVubmk/IgogICAgSURTX0RMTF9XQVJOSU5HX0NBUFRJT04gIkZpZ3llbGVtOiByZW5kc3plcmb8Z2d26W55a/ZueXZ04XIiCiAgICBJRFNfRExMX05BVElWRSAgICAgICAgICAibmF07XYiCiAgICBJRFNfRExMX0JVSUxUSU4gICAgICAgICAiYmXpcO10ZXR0IgogICAgSURTX0RMTF9OQVRJVkVfQlVJTFRJTiAgIm5hdO12LCBiZelw7XRldHQiCiAgICBJRFNfRExMX0JVSUxUSU5fTkFUSVZFICAiYmXpcO10ZXR0LCBuYXTtdiIKICAgIElEU19ETExfRElTQUJMRUQgICAgICAgICJsZXRpbHR2YSIKICAgIElEU19ERUZBVUxUX1NFVFRJTkdTICAgICJEZWZhdWx0IFNldHRpbmdzIgogICAgSURTX0VYRUNVVEFCTEVfRklMVEVSICAgIldpbmUgUHJvZ3JhbXMgKCouZXhlLCouZXhlLnNvKVwwKi5leGU7Ki5leGUuc29cMCIKICAgIElEU19VU0VfR0xPQkFMX1NFVFRJTkdTICJVc2UgZ2xvYmFsIHNldHRpbmdzIgogICAgSURTX1NFTEVDVF9FWEVDVVRBQkxFICAgIlNlbGVjdCBhbiBleGVjdXRhYmxlIGZpbGUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19TSEFERVJfTU9ERV9IQVJEV0FSRSAgICAiSGFyZHdhcmUiCiAgICBJRFNfU0hBREVSX01PREVfTk9ORSAgICAgICAgIk5vbmUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19EUklWRV9VTktOT1dOICAgICAgICAgICAiQXV0b2RldGVjdCIKICAgIElEU19EUklWRV9GSVhFRCAgICAgICAgICAgICAiTG9jYWwgaGFyZCBkaXNrIgogICAgSURTX0RSSVZFX1JFTU9URSAgICAgICAgICAgICJOZXR3b3JrIHNoYXJlIgogICAgSURTX0RSSVZFX1JFTU9WQUJMRSAgICAgICAgICJGbG9wcHkgZGlzayIKICAgIElEU19EUklWRV9DRFJPTSAgICAgICAgICAgICAiQ0QtUk9NIgogICAgSURTX0RSSVZFX0xFVFRFUlNfRVhDRUVERUQgICJZb3UgY2Fubm90IGFkZCBhbnkgbW9yZSBkcml2ZXMuXG5cbkVhY2ggZHJpdmUgbXVzdCBoYXZlIGEgbGV0dGVyLCBmcm9tIEEgdG8gWiwgc28geW91IGNhbm5vdCBoYXZlIG1vcmUgdGhhbiAyNiIKICAgIElEU19TWVNURU1fRFJJVkVfTEFCRUwgICAgICAiU3lzdGVtIGRyaXZlIgogICAgSURTX0NPTkZJUk1fREVMRVRFX0MgICAgICAgICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGRyaXZlIEM/XG5cbk1vc3QgV2luZG93cyBhcHBsaWNhdGlvbnMgZXhwZWN0IGRyaXZlIEMgdG8gZXhpc3QsIGFuZCB3aWxsIGRpZSBtZXNzaWx5IGlmIGl0IGRvZXNuJ3QuIElmIHlvdSBwcm9jZWVkIHJlbWVtYmVyIHRvIHJlY3JlYXRlIGl0ISIKICAgIElEU19DT0xfRFJJVkVMRVRURVIgICAgICAgICAiTGV0dGVyIgogICAgSURTX0NPTF9EUklWRU1BUFBJTkcgICAgICAgICJEcml2ZSBNYXBwaW5nIgogICAgSURTX05PX0RSSVZFX0MgICAgICAgICAgICAgICJZb3UgZG9uJ3QgaGF2ZSBhIGRyaXZlIEMuIFRoaXMgaXMgbm90IHNvIGdyZWF0LlxuXG5SZW1lbWJlciB0byBjbGljayAnQWRkJyBpbiB0aGUgRHJpdmVzIHRhYiB0byBjcmVhdGUgb25lIVxuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQUNDRUxfRlVMTCAgICAgICAgICAgICAgIkZ1bGwiCiAgICBJRFNfQUNDRUxfU1RBTkRBUkQgICAgICAgICAgIlN0YW5kYXJkIgogICAgSURTX0FDQ0VMX0JBU0lDICAgICAgICAgICAgICJCYXNpYyIKICAgIElEU19BQ0NFTF9FTVVMQVRJT04gICAgICAgICAiRW11bGF0aW9uIgogICAgSURTX0RSSVZFUl9BTFNBICAgICAgICAgICAgICJBTFNBIERyaXZlciIKICAgIElEU19EUklWRVJfRVNPVU5EICAgICAgICAgICAiRXNvdW5EIERyaXZlciIKICAgIElEU19EUklWRVJfT1NTICAgICAgICAgICAgICAiT1NTIERyaXZlciIKICAgIElEU19EUklWRVJfSkFDSyAgICAgICAgICAgICAiSkFDSyBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX05BUyAgICAgICAgICAgICAgIk5BUyBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX0FVRElPSU8gICAgICAgICAgIkF1ZGlvIElPIChTb2xhcmlzKSBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX0NPUkVBVURJTyAgICAgICAgIkNvcmVBdWRpbyBEcml2ZXIiCiAgICBJRFNfT1BFTl9EUklWRVJfRVJST1IgICAgICAgIkNvdWxkbid0IG9wZW4gJXMhIgogICAgSURTX1NPVU5ERFJJVkVSUyAgICAgICAgICAgICJTb3VuZCBEcml2ZXJzIgogICAgSURTX0RFVklDRVNfV0FWRU9VVCAgICAgICAgICJXYXZlIE91dCBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfV0FWRUlOICAgICAgICAgICJXYXZlIEluIERldmljZXMiCiAgICBJRFNfREVWSUNFU19NSURJT1VUICAgICAgICAgIk1JREkgT3V0IERldmljZXMiCiAgICBJRFNfREVWSUNFU19NSURJSU4gICAgICAgICAgIk1JREkgSW4gRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX0FVWCAgICAgICAgICAgICAiQXV4IERldmljZXMiCiAgICBJRFNfREVWSUNFU19NSVhFUiAgICAgICAgICAgIk1peGVyIERldmljZXMiCiAgICBJRFNfVU5BVkFJTEFCTEVfRFJJVkVSICAgICAgIkZvdW5kIGRyaXZlciBpbiByZWdpc3RyeSB0aGF0IGlzIG5vdCBhdmFpbGFibGUhXG5cblJlbW92ZSBcIiVzXCIgZnJvbSByZWdpc3RyeT8iCiAgICBJRFNfV0FSTklORyAgICAgICAgICAgICAgICAgIldhcm5pbmciCkVORAo=