LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBJcmlzaCBHYWVsaWMKICoKICogQ29weXJpZ2h0IDE5OTggTWFyY2VsIEJhdXIKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19JUklTSCwgU1VCTEFOR19JUklTSF9JUkVMQU5ECnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MzgwOFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMVx4MDAwMFx4MDAwMFx4NDAwMFx4MDFmZlx4MDAzZlx4ODAwMFx4ZmZmZiIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjAiCiAgTE9DQUxFX0lDT1VOVFJZICIzNTMiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjAiCiAgTE9DQUxFX0lEQVRFICIwIgogIExPQ0FMRV9JREFZTFpFUk8gIjAiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUyIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI0MzciCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiMzUzIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDI4NSIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDgzYyIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMDAiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODYwNSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjYiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwODNjIgogIExPQ0FMRV9JTERBVEUgIjAiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjEiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjAiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjAiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIzIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMCIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIkFNIgogIExPQ0FMRV9TMjM1OSAiUE0iCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiSVJMIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIkx1YSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJN4WkiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAiQ+lhIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIkTpYSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJBb2kiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAiU2F0IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIkRvbSIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJHQUUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJFYW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJGZWEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJN4XIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJBaWIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJCZWEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJNZWkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJJ+mkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJM+m4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJNRvMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAiREbzIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIlNhbSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJOb2wiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiSXJlbGFuZCIKICBMT0NBTEVfU0NVUlJFTkNZICKAIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICJE6SBMdWFpbiIKICBMT0NBTEVfU0RBWU5BTUUyICJE6SBN4WlydCIKICBMT0NBTEVfU0RBWU5BTUUzICJE6SBD6WFkYW9pbiIKICBMT0NBTEVfU0RBWU5BTUU0ICJE6WFyZGFvaW4iCiAgTE9DQUxFX1NEQVlOQU1FNSAiROkgaEFvaW5lIgogIExPQ0FMRV9TREFZTkFNRTYgIkTpIFNhdGhhaXJuIgogIExPQ0FMRV9TREFZTkFNRTcgIkRlIERvbWhuYWlnaCIKICBMT0NBTEVfU0RFQ0lNQUwgIi4iCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJJcmVsYW5kIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkV1cm8iCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiSXJpc2giCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiRVVSIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJJRSIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJnYSIKICBMT0NBTEVfU0xBTkdVQUdFICJHYWVpbGdlICjJaXJlKSIKICBMT0NBTEVfU0xJU1QgIiwiCiAgTE9DQUxFX1NMT05HREFURSAiZGRkZCwgTU1NTSBkZCwgeXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiRWFu4WlyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiRmVhYmhyYSIKICBMT0NBTEVfU01PTlRITkFNRTMgIk3hcnRhIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiQWlicmXhbiIKICBMT0NBTEVfU01PTlRITkFNRTUgIk3tIG5hIEJlYWx0YWluZSIKICBMT0NBTEVfU01PTlRITkFNRTYgIk1laXRoZWFtaCIKICBMT0NBTEVfU01PTlRITkFNRTcgIkn6aWwiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJM+m5hc2EiCiAgTE9DQUxFX1NNT05USE5BTUU5ICJNZeFuIEbzbWhhaXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAiRGVpcmVhZGggRvNtaGFpciIKICBMT0NBTEVfU01PTlRITkFNRTExICJN7SBuYSBTYW1obmEiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiTe0gbmEgTm9sbGFnIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIsIgogIExPQ0FMRV9TTkFNRSAiZ2EtSUUiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiyWlyZSIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJFdXJvIgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICIwMTIzNDU2Nzg5IgogIExPQ0FMRV9TTkFUSVZFRElTUExBWU5BTUUgIkdhZWlsZ2UgKMlpcmUpIgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIkdhZWlsZ2UiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NPUEVOVFlQRUxBTkdVQUdFVEFHICJJUkkgIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJMYXRuOyIKICBMT0NBTEVfU1NIT1JUREFURSAiZC9NL3l5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJoOm1tOnNzIHR0IgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIklhcnRoYXIgbmEgaEVvcnBhIGFndXMgbmEgU3ThaXQgQW9udGFpdGhlIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkzhciBuYSBoRW9ycGEiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIk1odWlyIEJoYWlsdCIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHculpZ2lzIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkNvaXJlYWxsYWNoIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVpcmNpY2UiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiU2VhcOFpbmlzIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJD82ly6WlzIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiU+1uaXMgVHJhaWRpc2n6bnRhIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJT7W5pcyBzaW1wbGl0aGUiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJU6WFsYWlubmlzIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJFYWJocmFpcyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhaWJpcyIKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlbtdG5lYWltaXMiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiU2VvaXJzaXMiCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQWlybelpbmlzIgp9Cg==