LyoKICogV2luZUNmZyByZXNvdXJjZXMKICogRmlubmlzaCBMYW5ndWFnZSBTdXBwb3J0CiAqCiAqIENvcHlyaWdodCAyMDA1IEtpbW1vIE15bGx5dmlydGEKICogQ29weXJpZ2h0IDIwMDYgQW5zc2kgSGFubnVsYQogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICoKICovCgpMQU5HVUFHRSBMQU5HX0ZJTk5JU0gsIFNVQkxBTkdfREVGQVVMVAoKSURSX1dJTkVDRkcgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIkFzZXR1a3NldCIsIElEQ19BVURJT19DT05GSUdVUkUKICAgIEVORApFTkQKCklERF9BQk9VVENGRyBESUFMT0dFWCAwLCAwLCAyNjAsIDI3MApTVFlMRSBXU19DSElMRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgUEFDS0FHRV9TVFJJTkcsSURDX1NUQVRJQywxMTksMTcsMTIwLDgKICAgIENPTlRST0wgICAgICAgICBJREJfV0lORSxJRENfU1RBVElDLCJTdGF0aWMiLFNTX0JJVE1BUCAsMTUsMTcsMTU3LDExMQogICAgTFRFWFQgICAgICAgICAgICJodHRwOi8vd3d3LndpbmVocS5vcmcvIixJRENfU1RBVElDLDExOSwzMSwxMDYsOAogICAgTFRFWFQgICAgICAgICAgICJUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxMTksNDQsMTI0LDcyCkVORAoKSUREX0FQUENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgU292ZWxsdXN0ZW4gYXNldHVrc2V0ICIsSURDX1NUQVRJQywgOCw0LDI0NCwyNDAKICAgIExURVhUICAgICAgICAgICAiV2luZSB2b2kgauRsaml0ZWxs5CBXaW5kb3dzaW4gZXJpIHZlcnNpb2l0YSBlcmkgc292ZWxsdWtzaWxsZS4gVORt5CB25GxpbGVodGkgdG9pbWlpIHloZGVzc+QgS2lyamFzdG90LSBqYSBHcmFmaWlra2EtduRsaWxlaHRpZW4ga2Fuc3NhIHNhbGxpZW4gc292ZWxsdXNrb2h0YWlzZXQgYXNldHVrc2V0LiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxNSwyMCwyMjcsMzAKICAgIENPTlRST0wgICAgICAgICAiU292ZWxsdWtzZXQiLElEQ19BUFBfTElTVFZJRVcsIlN5c0xpc3RWaWV3MzIiLFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMVlNfTElTVCB8IExWU19TSU5HTEVTRUwgfCBMVlNfU0hPV1NFTEFMV0FZUywKICAgICAgICAgICAgICAgICAgICAxNSw1MCwyMzAsMTUwCiAgICBQVVNIQlVUVE9OCSAgICAiJkxpc+TkIHNvdmVsbHVzLi4uIixJRENfQVBQX0FEREFQUCwgOTAsMjA0LDc1LDE0CiAgICBQVVNIQlVUVE9OCSAgICAiJlBvaXN0YSBzb3ZlbGx1cyIsSURDX0FQUF9SRU1PVkVBUFAsIDE3MCwyMDQsNzUsMTQKICAgIExURVhUICAgICAgICAgICAiJldpbmRvd3NpbiB2ZXJzaW86IixJRENfU1RBVElDLDE3LDIyNiw1OCw4CiAgICBDT01CT0JPWCAgICAgICAgSURDX1dJTlZFUiw4MywyMjQsMTYzLDU2LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUCAgICAKRU5ECgpJRERfR1JBUEhDRkcgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIElra3VuYS1hc2V0dWtzZXQgIixJRENfU1RBVElDLDgsMjUsMjQ0LDE4MAoKICAgIENPTlRST0wJICAgICImU2FsbGkgRGlyZWN0WCAtc292ZWxsdXN0ZW4gZXN05OQga3Vyc29yaW4gcG9pc3R1bWluZW4gaWtrdW5hc3RhIixJRENfRFhfTU9VU0VfR1JBQiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDM1LDIzMCw4CiAgICBDT05UUk9MCSAgICAiJlR59nD2eWTkbiB0dXBsYXB1c2t1cm9pbnRpIixJRENfRE9VQkxFX0JVRkZFUiwiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDQ1LDIzMCw4CiAgICBMVEVYVCAJICAgICJLdW4gaWtrdW5hb2hqZWxtYSBoYWxsaXRzZWUgaWtrdW5vaXRhLCBuaWlsbOQgb24gbm9ybWFhbGl0IHJldW5hdCwgbmUgbm91ZGF0dGF2YXQgbuRlbm7kaXN0efZw9nl0aeQgamEgbuRreXbkdCBpa2t1bmFsaXN0YXNzYS5cblxuTWlr5GxpIGlra3VuYW9oamVsbWEgZWkgaGFsbGl0c2UgaWtrdW5vaXRhLCBpa2t1bmF0IGVpduR0IGludGVncm9pZHUgeWh05CBoeXZpbiB0efZw9nl05ORzaSwgbXV0dGEgZW11bGFhdGlvIG9uIHRhcmtlbXBhYSBqYSBzZSB2b2kgYXV0dGFhIGpvaXRhaW4gc292ZWxsdWtzaWEgdG9pbWltYWFuIHBhcmVtbWluLiIsCiAgICBJRENfU1RBVElDLDE1LDU4LDIyOCw4MAogICAgQ09OVFJPTAkgICAgIlNhbGxpIGlra3VuYW9oamVsbWFuIGhhbGxpdGEgaWtrdW5vaXRhIixJRENfRU5BQkxFX01BTkFHRUQsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwxMzIsMjMwLDgKCiAgICBMVEVYVCAgICAgICAgICAgIldpbmUgdm9pIGVtdWxvaWRhIFdpbmRvd3NpbiB0efZw9nl05OQsIGpvc3NhIGthaWtraSBpa2t1bmF0IG92YXQgeWhkZXNz5CB2aXJ0dWFhbGlzZXNzYSBu5Hl09nNz5CwgdGFpIGpvc3NhIGthaWtraSBpa2t1bmF0IG92YXQgdHn2cPZ5ZORsbORzaSBlcmlsbGlzaW7kLiIsCiAgICAgICAgICAgICAgICAgICAgSURDX1NUQVRJQywxNSwxNDYsMjI4LDI4CiAgICBMVEVYVCAgICAgICAgICAgIlR59nD2eWTkbiBrb2tvOiIsSURDX0RFU0tUT1BfU0laRSwxNSwxODgsNDQsOCxXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJYIixJRENfREVTS1RPUF9CWSwxMDgsMTg4LDgsOCxXU19ESVNBQkxFRAogICAgQ09OVFJPTCAgICAgICAgICImRW11bG9pIHZpcnR1YWFsaXN0YSB09nlw9nl05OQiLElEQ19FTkFCTEVfREVTS1RPUCwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDE1LDE3MywyMzAsMTAKCQkgICAgCiAgICBFRElUVEVYVCAgICAgICAgSURDX0RFU0tUT1BfV0lEVEgsNjQsMTg4LDQwLDEyLEVTX0FVVE9IU0NST0xMIHwgRVNfTlVNQkVSIHwgV1NfRElTQUJMRUQKICAgIEVESVRURVhUICAgICAgICBJRENfREVTS1RPUF9IRUlHSFQsMTE3LDE4OCw0MCwxMixFU19BVVRPSFNDUk9MTCB8IEVTX05VTUJFUiB8IFdTX0RJU0FCTEVECgogICAgR1JPVVBCT1ggICAgICAgICIgRGlyZWN0M0QgIixJRENfU1RBVElDLDgsMjEwLDI0NCw1MAoKICAgIExURVhUCSAgICAiVmVydGV4IFNoYWRlciAtdHVraTogIixJRENfU1RBVElDLDE1LDIyMCw4MCwzMAogICAgQ09NQk9CT1gJICAgIElEQ19EM0RfVlNIQURFUl9NT0RFLDEwMCwyMTgsMTUwLDcwLENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAoKICAgIENPTlRST0wgICAgICAgICAiU2FsbGkgJlBpeGVsIFNoYWRlcjpuIGvkeXR09iBsYWl0dGVpc3RvbiB0dWtpZXNzYSIsSURDX0QzRF9QU0hBREVSX01PREUsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwyMzcsMjMwLDEwCkVORAoKSUREX0RMTENGRyBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDI2MCwgMjUwClNUWUxFIFdTX0NISUxEIHwgV1NfRElTQUJMRUQKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgRExMLWtpcmphc3RvamVuIG3k5HJpdHlrc2V0ICIsSURDX1NUQVRJQyw4LDQsMjQ0LDI0MAogICAgTFRFWFQgICAgICAgICAgICJEeW5hYW1pc2VzdGkgbGFkYXR0YXZhdCBraXJqYXN0b3QgKERMTCkgdm9pZGFhbiBt5ORyaXRlbGzkIHlrc2l0ZWxsZW4gb2xlbWFhbiBqb2tvIFdpbmVuIHRhcmpvYW1pYSAoc2lz5ORucmFrZW5uZXR0dWphKSB0YWkgV2luZG93c2luIG5hdGlpdmVqYSBraXJqYXN0b2phIChXaW5kb3dzLWFzZW5udWtzZXN0YSwgdGFpIHNvdmVsbHVzdGVuIHRhcmpvYW1pYSkuIgogICAgICAgICAgICAgICAgICAgICxJRENfU1RBVElDLDE2LDE2LDIyMCwzMgogICAgTFRFWFQgICAgICAgICAgICJVdXNpIG3k5HJpdHlzIGtpcmphc3RvbGxlOiIsSURDX1NUQVRJQywxNiw1OCwxMDAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19ETExDT01CTywxNiw2OCwxNDAsMTQsQ0JTX0RST1BET1dOIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfCBDQlNfU09SVCB8IENCU19MT1dFUkNBU0UKICAgIFBVU0hCVVRUT04gICAgICAiJkxpc+TkIixJRENfRExMU19BRERETEwsIDE2NCw2OCw4MiwxMyxCU19ERUZQVVNIQlVUVE9OIAogICAgTFRFWFQgICAgICAgICAgICJPbGVtYXNzYW9sZXZhdCBt5ORyaXR5a3NldDoiLElEQ19TVEFUSUMsMTYsODYsMTAwLDgKICAgIExJU1RCT1ggICAgICAgICBJRENfRExMU19MSVNULDE2LDk2LDE0MCwxNDAsV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX1ZTQ1JPTEwKICAgIFBVU0hCVVRUT04gICAgICAiJk11b2trYWEiLElEQ19ETExTX0VESVRETEwsMTY0LDk2LDgyLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIiZQb2lzdGEiLElEQ19ETExTX1JFTU9WRURMTCwxNjQsMTE0LDgyLDE0IApFTkQKCklERF9MT0FET1JERVIgRElBTE9HIERJU0NBUkRBQkxFIDgwLCA5MCwgMTEwLCA5MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRWRpdCBPdmVycmlkZSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgR1JPVVBCT1ggICAgICAgICIgTGF0YWFtaXNq5HJqZXN0eXMgIixJRENfU1RBVElDLDgsNCw5NCw2NgogICAgQ09OVFJPTCAgICAgICAgICImU2lz5GluZW4gKFdpbmUpIixJRENfUkFEX0JVSUxUSU4sIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiB8IFdTX0dST1VQLDE2LDE0LDc1LDEwCiAgICBDT05UUk9MICAgICAgICAgIiZOYXRpaXZpIChXaW5kb3dzKSIsSURDX1JBRF9OQVRJVkUsIkJ1dHRvbiIsIEJTX0FVVE9SQURJT0JVVFRPTiwxNiwyNCw3NSwxMAogICAgQ09OVFJPTCAgICAgICAgICJTJmlz5GluZW4sIHNpdHRlbiBuYXRpaXZpIixJRENfUkFEX0JVSUxUSU5fTkFUSVZFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsMzQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiTmF0aWl2aSwgc2l0dGVuIHNpc+RpbmVuIixJRENfUkFEX05BVElWRV9CVUlMVElOLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNDQsNzUsMTAKICAgIENPTlRST0wgICAgICAgICAiJlBvaXN0YSBr5Hl09nN05CIsSURDX1JBRF9ESVNBQkxFLCJCdXR0b24iLCBCU19BVVRPUkFESU9CVVRUT04sMTYsNTQsNzUsMTAKICAgIERFRlBVU0hCVVRUT04gICAiSHl25GtzeSIsSURPSyw4LDc0LDQ1LDE0LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIlBlcnV1dGEiLElEQ0FOQ0VMLDU3LDc0LDQ1LDE0LFdTX0dST1VQCkVORAoKSUREX0RSSVZFQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBBc2VtaWVuIG1hcHBhdWtzZXQgIixJRENfU1RBVElDLDgsNCwyNDQsMjQwCiAgICBDT05UUk9MICAgICAgICAgIkxpc3R2aWV3IixJRENfTElTVF9EUklWRVMsIlN5c0xpc3RWaWV3MzIiLExWU19SRVBPUlQgfCBMVlNfQVVUT0FSUkFOR0UgfCBMVlNfQUxJR05MRUZUIHwKICAgICAgICAgICAgICAgICAgICBMVlNfU0lOR0xFU0VMIHwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCwgMTUsMTgsMjMyLDc2CiAgICBQVVNIQlVUVE9OICAgICAgIiZMaXPk5C4uLiIsSURDX0JVVFRPTl9BREQsMTUsOTgsMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiJlBvaXN0YSIsSURDX0JVVFRPTl9SRU1PVkUsNTYsOTgsMzcsMTQKICAgIFBVU0hCVVRUT04gICAgICAiJkhhZSBhdXRvbWFhdHRpc2VzdGkiLElEQ19CVVRUT05fQVVUT0RFVEVDVCwxNzcsOTgsNjksMTQKCiAgICAvKiBlZGl0aW5nIGRyaXZlIGRldGFpbHMgKi8KICAgIExURVhUICAgICAgICAgICAiJlBvbGt1OiIsSURDX1NUQVRJQywxNSwxMjMsMjUsOSAgICAKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9QQVRILDQxLDEyMCwxNjAsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIiZTZWxhYS4uLiIsSURDX0JVVFRPTl9CUk9XU0VfUEFUSCwyMDYsMTIwLDQwLDEzCiAgICAKICAgIExURVhUICAgICAgICAgICAiJlR5eXBwaToiLElEQ19TVEFUSUNfVFlQRSwxNSwxMzgsMjUsMTAKICAgIENPTUJPQk9YICAgICAgICBJRENfQ09NQk9fVFlQRSw0MSwxMzUsNzcsNjAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICAKICAgIExURVhUICAgICAgICAgICAiTmltaSBqYSBzYXJqYW51bWVybyIsSURDX0xBQkVMU0VSSUFMX1NUQVRJQywxNSwxNTUsOTUsMTAKICAgIAogICAgUFVTSEJVVFRPTiAgICAgICImTuR5dOQgbGlz5GFzZXR1a3NldCIsSURDX0JVVFRPTl9TSE9XX0hJREVfQURWQU5DRUQsMTc3LDEzNiw2OSwxMwogICAgQ09OVFJPTCAgICAgICAgICImSGFlIGF1dG9tYWF0dGlzZXN0aSBsYWl0dGVlbiBtdWthYW46IixJRENfUkFESU9fQVVUT0RFVEVDVCwiQnV0dG9uIiwKICAgICAgICAgICAgICAgICAgICBCU19BVVRPUkFESU9CVVRUT04sMTUsMTY2LDE1MCwxMAogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX0RFVklDRSwyNywxNzYsMTc0LDEzLEVTX0FVVE9IU0NST0xMCiAgICBQVVNIQlVUVE9OICAgICAgIiZTZWxhYS4uLiIsSURDX0JVVFRPTl9CUk9XU0VfREVWSUNFLDIwNiwxNzYsNDAsMTMKICAgIENPTlRST0wgICAgICAgICAiJk3k5HJpdOQ6IixJRENfUkFESU9fQVNTSUdOLCJCdXR0b24iLAogICAgICAgICAgICAgICAgICAgIEJTX0FVVE9SQURJT0JVVFRPTiwxNSwxOTUsNjksMTAKCiAgICBMVEVYVCAgICAgICAgICAgIiZOaW1pOiIsSURDX1NUQVRJQ19MQUJFTCwzMywyMDgsNDksMTIKICAgIEVESVRURVhUICAgICAgICBJRENfRURJVF9MQUJFTCw4MywyMDUsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIiZTYXJqYW51bWVybzoiLElEQ19TVEFUSUNfU0VSSUFMLDMzLDIyNSw0OSwxMgogICAgRURJVFRFWFQgICAgICAgIElEQ19FRElUX1NFUklBTCw4MywyMjEsNzgsMTMsRVNfQVVUT0hTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgQ09OVFJPTCAgICAgICAgICJO5Hl05CBwJmlzdGV0aWVkb3N0b3QiLElEQ19TSE9XX0RPVF9GSUxFUywiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QLDgsMjYwLDIzMCw4CkVORAoKSUREX0FVRElPQ0ZHIERJQUxPRyBESVNDQVJEQUJMRSAgMCwgMCwgMjYwLCAyNTAKU1RZTEUgV1NfQ0hJTEQgfCBXU19ESVNBQkxFRApGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAgICAgICAgIiBBanVyaW4gdmFsaW50YSAiLElEQ19TVEFUSUMsOCw0LDI0NCwxOTUKICAgIExURVhUCSAgICAixORuaWFqdXJpOiAiLElEQ19TVEFUSUMsMTUsMjAsMjI3LDMwCiAgICBDT05UUk9MICAgICAgICAgIkRldmljZXMiLElEQ19BVURJT19UUkVFLCJTeXNUcmVlVmlldzMyIixXU19CT1JERVIgfCBXU19UQUJTVE9QLDE1LDUwLDE0MCwxNDAKICAgIFBVU0hCVVRUT04JICAgICImSGFsbGludGFwYW5lZWxpIixJRENfQVVESU9fQ09OVFJPTF9QQU5FTCwxNzAsNTAsNzksMTQKICAgIEdST1VQQk9YICAgICAgICAiIERpcmVjdFNvdW5kICIsSURDX1NUQVRJQyw4LDIwNSwyNDQsNjAKICAgIExURVhUCSAgICAiTGFpdHRlaXN0b3BvaGphaW5lbiBraWloZHl0eXM6IixJRENfU1RBVElDLDE1LDIxNSw5MCwxMAogICAgQ09NQk9CT1gJICAgIElEQ19EU09VTkRfSFdfQUNDRUwsMTAwLDIxMywxNTAsNzAsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIk9sZXR1c27keXRldGFhanV1czoiLElEQ19TVEFUSUMsMTUsMjMyLDcwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRFNPVU5EX1JBVEVTLDkwLDIzMCw0Miw3NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiTuR5dHRlaWRlbiBvbGV0dXNiaXR0aW3k5HLkOiIsSURDX1NUQVRJQywxMzcsMjMyLDgwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfRFNPVU5EX0JJVFMsMjIwLDIzMCwzMCw1NixDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIENPTlRST0wgICAgICAgICAiQWp1cmluICZlbXVsb2ludGkiLElEQ19EU09VTkRfRFJWX0VNVUwsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCwxNSwyNTAsMjMwLDEwCkVORAoKSUREX0RFU0tUT1BfSU5URUdSQVRJT04gRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAyNjAsIDI1MApTVFlMRSBXU19DSElMRCB8IFdTX0RJU0FCTEVECkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIEdST1VQQk9YICAgICAgICAiIFVsa29u5Gv2ICIsSURDX1NUQVRJQyw4LDQsMjQ0LDEwNgogICAgTFRFWFQgICAgICAgICAgICJUZWVtYToiLElEQ19TVEFUSUMsMTUsMTYsMjMwLDgKICAgIENPTUJPQk9YICAgICAgICBJRENfVEhFTUVfVEhFTUVDT01CTywxNSwyNCwyMzAsMTQsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICAgICAgIkFzZW5uYSAmdGVlbWEuLi4iLElEQ19USEVNRV9JTlNUQUxMLDE1MiwzOCw5MywxNAogICAgTFRFWFQgICAgICAgICAgICJW5HJpOiIsSURDX1RIRU1FX0NPTE9SVEVYVCwxNSw1NCwyMzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9DT0xPUkNPTUJPLDE1LDYyLDIzMCwxNCxDQlNfRFJPUERPV05MSVNUIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiS29rbzoiLElEQ19USEVNRV9TSVpFVEVYVCwxNSw4MCwyMzAsOAogICAgQ09NQk9CT1ggICAgICAgIElEQ19USEVNRV9TSVpFQ09NQk8sMTUsODgsMjMwLDE0LENCU19EUk9QRE9XTkxJU1QgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICIgU2hlbGwgRm9sZGVyICIsSURDX1NUQVRJQyw4LDExNCwyNDQsMTAwCiAgICBDT05UUk9MICAgICAgICAgIkxpc3R2aWV3IixJRENfTElTVF9TRlBBVEhTLCJTeXNMaXN0VmlldzMyIixMVlNfUkVQT1JUIHwgTFZTX0FVVE9BUlJBTkdFIHwgTFZTX0FMSUdOTEVGVCB8CiAgICAgICAgICAgICAgICAgICAgIExWU19TSU5HTEVTRUwgfCBXU19CT1JERVIgfCBXU19UQUJTVE9QLCAxNSwxMjYsMjMwLDY0CiAgICBDT05UUk9MICAgICAgICAgIkxpbmsgdG86IixJRENfTElOS19TRlBBVEgsIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YfFdTX1RBQlNUT1B8V1NfRElTQUJMRUQsMTUsMTk1LDUwLDEzCiAgICBFRElUVEVYVCAgICAgICAgIElEQ19FRElUX1NGUEFUSCw2NSwxOTUsMTQ1LDEzLEVTX0FVVE9IU0NST0xMfFdTX1RBQlNUT1B8V1NfRElTQUJMRUQKICAgIFBVU0hCVVRUT04gICAgICAiQnJvd3NlIixJRENfQlJPV1NFX1NGUEFUSCwyMTUsMTk1LDMwLDEzLFdTX0RJU0FCTEVECkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19XSU5FX1ZFUlNJT04gICAgICAgICJDVlMiCiAgICBJRFNfVEFCX0FQUExJQ0FUSU9OUyAgICAiU292ZWxsdWtzZXQiCiAgICBJRFNfVEFCX0RMTFMgICAgICAgICAgICAiS2lyamFzdG90IgogICAgSURTX1RBQl9EUklWRVMgICAgICAgICAgIkFzZW1hdCIKICAgIElEU19DSE9PU0VfUEFUSCAgICAgICAgICJWYWxpdHNlIHVuaXgta29oZGVrYW5zaW8uIgogICAgSURTX0hJREVfQURWQU5DRUQgICAgICAgIlBpaWxvdGEgbGlz5GFzZXR1a3NldCIKICAgIElEU19TSE9XX0FEVkFOQ0VEICAgICAgICJO5Hl05CBsaXPkYXNldHVrc2V0IgogICAgSURTX05PVEhFTUUgICAgICAgICAgICAgIihFaSB0ZWVtYWEpIgogICAgSURTX1RBQl9HUkFQSElDUyAgICAgICAgIkdyYWZpaWtrYSIKICAgIElEU19UQUJfREVTS1RPUF9JTlRFR1JBVElPTiAiVHn2cPZ5dORpbnRlZ3JhYXRpbyIKICAgIElEU19UQUJfQVVESU8gICAgICAgICAgICLE5G5pIgogICAgSURTX1RBQl9BQk9VVCAgICAgICAgICAgIlRpZXRvamEiCiAgICBJRFNfV0lORUNGR19USVRMRSAgICAgICAiV2luZW4gYXNldHVrc2V0IgogICAgSURTX1dJTkVDRkdfVElUTEVfQVBQICAgIldpbmUgY29uZmlndXJhdGlvbiBmb3IgJXMiCiAgICBJRFNfVEhFTUVGSUxFICAgICAgICAgICAiVGVlbWF0aWVkb3N0b3QiCiAgICBJRFNfVEhFTUVGSUxFX1NFTEVDVCAgICAiVmFsaXRzZSB0ZWVtYXRpZWRvc3RvIgogICAgSURTX1NIRUxMX0ZPTERFUiAgICAgICAgIlNoZWxsIEZvbGRlciIKICAgIElEU19MSU5LU19UTyAgICAgICAgICAgICJMaW5rcyB0byIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX0RMTF9XQVJOSU5HICAgICAgICAgIlTkbeRuIGtpcmphc3RvbiBsYXRhYW1pc2rkcmplc3R5a3NlbiBtdXV0dGFtaXN0YSBlaSBzdW9zaXRlbGxhLlxuSGFsdWF0a28gc2lsdGkgamF0a2FhPyIKICAgIElEU19ETExfV0FSTklOR19DQVBUSU9OICJWYXJvaXR1czogauRyamVzdGVsbeRraXJqYXN0byIKICAgIElEU19ETExfTkFUSVZFICAgICAgICAgICJuYXRpaXZpIgogICAgSURTX0RMTF9CVUlMVElOICAgICAgICAgInNpc+RpbmVuIgogICAgSURTX0RMTF9OQVRJVkVfQlVJTFRJTiAgIm5hdGlpdmksIHNpc+RpbmVuIgogICAgSURTX0RMTF9CVUlMVElOX05BVElWRSAgInNpc+RpbmVuLCBuYXRpaXZpIgogICAgSURTX0RMTF9ESVNBQkxFRCAgICAgICAgImVpIGvkeXT2c3PkIgogICAgSURTX0RFRkFVTFRfU0VUVElOR1MgICAgIkRlZmF1bHQgU2V0dGluZ3MiCiAgICBJRFNfRVhFQ1VUQUJMRV9GSUxURVIgICAiV2luZSBQcm9ncmFtcyAoKi5leGUsKi5leGUuc28pXDAqLmV4ZTsqLmV4ZS5zb1wwIgogICAgSURTX1VTRV9HTE9CQUxfU0VUVElOR1MgIlVzZSBnbG9iYWwgc2V0dGluZ3MiCiAgICBJRFNfU0VMRUNUX0VYRUNVVEFCTEUgICAiU2VsZWN0IGFuIGV4ZWN1dGFibGUgZmlsZSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1NIQURFUl9NT0RFX0hBUkRXQVJFICAgICJIYXJkd2FyZSIKICAgIElEU19TSEFERVJfTU9ERV9OT05FICAgICAgICAiTm9uZSIKICAgIElEU19TSEFERVJfTU9ERV9FTVVMQVRJT04gICAiRW11bGF0ZWQiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19EUklWRV9VTktOT1dOICAgICAgICAgICAiQXV0b2RldGVjdCIKICAgIElEU19EUklWRV9GSVhFRCAgICAgICAgICAgICAiTG9jYWwgaGFyZCBkaXNrIgogICAgSURTX0RSSVZFX1JFTU9URSAgICAgICAgICAgICJOZXR3b3JrIHNoYXJlIgogICAgSURTX0RSSVZFX1JFTU9WQUJMRSAgICAgICAgICJGbG9wcHkgZGlzayIKICAgIElEU19EUklWRV9DRFJPTSAgICAgICAgICAgICAiQ0QtUk9NIgogICAgSURTX0RSSVZFX0xFVFRFUlNfRVhDRUVERUQgICJZb3UgY2Fubm90IGFkZCBhbnkgbW9yZSBkcml2ZXMuXG5cbkVhY2ggZHJpdmUgbXVzdCBoYXZlIGEgbGV0dGVyLCBmcm9tIEEgdG8gWiwgc28geW91IGNhbm5vdCBoYXZlIG1vcmUgdGhhbiAyNiIKICAgIElEU19TWVNURU1fRFJJVkVfTEFCRUwgICAgICAiU3lzdGVtIGRyaXZlIgogICAgSURTX0NPTkZJUk1fREVMRVRFX0MgICAgICAgICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIGRyaXZlIEM/XG5cbk1vc3QgV2luZG93cyBhcHBsaWNhdGlvbnMgZXhwZWN0IGRyaXZlIEMgdG8gZXhpc3QsIGFuZCB3aWxsIGRpZSBtZXNzaWx5IGlmIGl0IGRvZXNuJ3QuIElmIHlvdSBwcm9jZWVkIHJlbWVtYmVyIHRvIHJlY3JlYXRlIGl0ISIKICAgIElEU19DT0xfRFJJVkVMRVRURVIgICAgICAgICAiTGV0dGVyIgogICAgSURTX0NPTF9EUklWRU1BUFBJTkcgICAgICAgICJEcml2ZSBNYXBwaW5nIgogICAgSURTX05PX0RSSVZFX0MgICAgICAgICAgICAgICJZb3UgZG9uJ3QgaGF2ZSBhIGRyaXZlIEMuIFRoaXMgaXMgbm90IHNvIGdyZWF0LlxuXG5SZW1lbWJlciB0byBjbGljayAnQWRkJyBpbiB0aGUgRHJpdmVzIHRhYiB0byBjcmVhdGUgb25lIVxuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQUNDRUxfRlVMTCAgICAgICAgICAgICAgIkZ1bGwiCiAgICBJRFNfQUNDRUxfU1RBTkRBUkQgICAgICAgICAgIlN0YW5kYXJkIgogICAgSURTX0FDQ0VMX0JBU0lDICAgICAgICAgICAgICJCYXNpYyIKICAgIElEU19BQ0NFTF9FTVVMQVRJT04gICAgICAgICAiRW11bGF0aW9uIgogICAgSURTX0RSSVZFUl9BTFNBICAgICAgICAgICAgICJBTFNBIERyaXZlciIKICAgIElEU19EUklWRVJfQVJUUyAgICAgICAgICAgICAiYVJ0cyBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX0VTT1VORCAgICAgICAgICAgIkVzb3VuRCBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX09TUyAgICAgICAgICAgICAgIk9TUyBEcml2ZXIiCiAgICBJRFNfRFJJVkVSX0pBQ0sgICAgICAgICAgICAgIkpBQ0sgRHJpdmVyIgogICAgSURTX0RSSVZFUl9OQVMgICAgICAgICAgICAgICJOQVMgRHJpdmVyIgogICAgSURTX0RSSVZFUl9BVURJT0lPICAgICAgICAgICJBdWRpbyBJTyAoU29sYXJpcykgRHJpdmVyIgogICAgSURTX0RSSVZFUl9DT1JFQVVESU8gICAgICAgICJDb3JlQXVkaW8gRHJpdmVyIgogICAgSURTX09QRU5fRFJJVkVSX0VSUk9SICAgICAgICJDb3VsZG4ndCBvcGVuICVzISIKICAgIElEU19TT1VORERSSVZFUlMgICAgICAgICAgICAiU291bmQgRHJpdmVycyIKICAgIElEU19ERVZJQ0VTX1dBVkVPVVQgICAgICAgICAiV2F2ZSBPdXQgRGV2aWNlcyIKICAgIElEU19ERVZJQ0VTX1dBVkVJTiAgICAgICAgICAiV2F2ZSBJbiBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfTUlESU9VVCAgICAgICAgICJNSURJIE91dCBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfTUlESUlOICAgICAgICAgICJNSURJIEluIERldmljZXMiCiAgICBJRFNfREVWSUNFU19BVVggICAgICAgICAgICAgIkF1eCBEZXZpY2VzIgogICAgSURTX0RFVklDRVNfTUlYRVIgICAgICAgICAgICJNaXhlciBEZXZpY2VzIgogICAgSURTX1VOQVZBSUxBQkxFX0RSSVZFUiAgICAgICJGb3VuZCBkcml2ZXIgaW4gcmVnaXN0cnkgdGhhdCBpcyBub3QgYXZhaWxhYmxlIVxuXG5SZW1vdmUgXCIlc1wiIGZyb20gcmVnaXN0cnk/IgogICAgSURTX1dBUk5JTkcgICAgICAgICAgICAgICAgICJXYXJuaW5nIgpFTkQK