LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBUaGFpCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoODc0KQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19USEFJLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDAzXHg4MTAwXHgwMDAwXHgxMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICI3IgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjY2IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIwIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiODc0IgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NzQiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiNjYiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODM4IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDFlIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAyMSIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjg3NCIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDFlIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMCIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjEiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjciCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjAiCiAgTE9DQUxFX1MxMTU5ICJBTSIKICBMT0NBTEVfUzIzNTkgIlBNIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIlRIQSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICKoLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICLNLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICK+LiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICK+xC4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAiyC4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAiyi4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAizdIuIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIlRIQSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgIsEupC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICKhLr4uIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAiwdUupC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICLgwS7CLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIr4upC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICLB1C7CLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIqEupC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICLKLqQuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAioS7CLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICK1LqQuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIr4uwi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiuC6kLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJUaGFpbGFuZCIKICBMT0NBTEVfU0NVUlJFTkNZICLfIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICKo0bm3w+wiCiAgTE9DQUxFX1NEQVlOQU1FMiAizdGnpNLDIgogIExPQ0FMRV9TREFZTkFNRTMgIr7YuCIKICBMT0NBTEVfU0RBWU5BTUU0ICK+xMvRyrq01SIKICBMT0NBTEVfU0RBWU5BTUU1ICLI2KHD7CIKICBMT0NBTEVfU0RBWU5BTUU2ICLgytLD7CIKICBMT0NBTEVfU0RBWU5BTUU3ICLN0rfUtcLsIgogIExPQ0FMRV9TREVDSU1BTCAiLiIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIlRoYWlsYW5kIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIlRoYWkgQmFodCIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJUaGFpIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIlRIQiIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiVEgiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAidGgiCiAgTE9DQUxFX1NMQU5HVUFHRSAiVGhhaSIKICBMT0NBTEVfU0xJU1QgIiwiCiAgTE9DQUxFX1NMT05HREFURSAiZCBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIuIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgIsGhw9KkwSIKICBMT0NBTEVfU01PTlRITkFNRTIgIqHYwcDSvtG5uOwiCiAgTE9DQUxFX1NNT05USE5BTUUzICLB1bnSpMEiCiAgTE9DQUxFX1NNT05USE5BTUU0ICLgwcnSwrkiCiAgTE9DQUxFX1NNT05USE5BTUU1ICK+xMnA0qTBIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAiwdS22LnSwrkiCiAgTE9DQUxFX1NNT05USE5BTUU3ICKhw6Gu0qTBIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiytSny9KkwSIKICBMT0NBTEVfU01PTlRITkFNRTkgIqHRucLSwrkiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAitdjF0qTBIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIr7EyKjUodLCuSIKICBMT0NBTEVfU01PTlRITkFNRTEyICK40bnH0qTBIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIsIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIuS3wiIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICK60rciCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIvDx8vP09fb3+PkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAi5LfCIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgImQvTS95eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K