LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBUaGFpCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoODc0KQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19USEFJLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDAzXHg4MTAwXHgwMDAwXHgxMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAxXHgwMDAwXHgwMDAwIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICI3IgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjY2IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIwIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiODc0IgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NzQiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiNjYiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODM4IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDFlIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAyMSIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjg3NCIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDFlIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMCIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjEiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICI3IgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIzIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIkFNIgogIExPQ0FMRV9TMjM1OSAiUE0iCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiVEhBIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIqguIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIs0uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTMgIr4uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIr7ELiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICLILiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICLKLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICLN0i4iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiVEhBIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiwS6kLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIqEuvi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICLB1S6kLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIuDBLsIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAivi6kLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIsHULsIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAioS6kLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIsoupC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICKhLsIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIrUupC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAivi7CLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICK4LqQuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIlRoYWlsYW5kIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIt8iCiAgTE9DQUxFX1NEQVRFICIvIgogIExPQ0FMRV9TREFZTkFNRTEgIqjRubfD7CIKICBMT0NBTEVfU0RBWU5BTUUyICLN0aek0sMiCiAgTE9DQUxFX1NEQVlOQU1FMyAivti4IgogIExPQ0FMRV9TREFZTkFNRTQgIr7Ey9HKurTVIgogIExPQ0FMRV9TREFZTkFNRTUgIsjYocPsIgogIExPQ0FMRV9TREFZTkFNRTYgIuDK0sPsIgogIExPQ0FMRV9TREFZTkFNRTcgIs3St9S1wuwiCiAgTE9DQUxFX1NERUNJTUFMICIuIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiVGhhaWxhbmQiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiVGhhaSBCYWh0IgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIlRoYWkiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiVEhCIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJUSCIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJ0aCIKICBMT0NBTEVfU0xBTkdVQUdFICJUaGFpIgogIExPQ0FMRV9TTElTVCAiLCIKICBMT0NBTEVfU0xPTkdEQVRFICJkIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiwaHD0qTBIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiodjBwNK+0bm47CIKICBMT0NBTEVfU01PTlRITkFNRTMgIsHVudKkwSIKICBMT0NBTEVfU01PTlRITkFNRTQgIuDBydLCuSIKICBMT0NBTEVfU01PTlRITkFNRTUgIr7EycDSpMEiCiAgTE9DQUxFX1NNT05USE5BTUU2ICLB1LbYudLCuSIKICBMT0NBTEVfU01PTlRITkFNRTcgIqHDoa7SpMEiCiAgTE9DQUxFX1NNT05USE5BTUU4ICLK1KfL0qTBIgogIExPQ0FMRV9TTU9OVEhOQU1FOSAiodG5wtLCuSIKICBMT0NBTEVfU01PTlRITkFNRTEwICK12MXSpMEiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAivsTIqNSh0sK5IgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIrjRucfSpMEiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQU1FICJ0aC1USCIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICLkt8IiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiutK3IgogIExPQ0FMRV9TTkFUSVZFRElHSVRTICLw8fLz9PX29/j5IgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgIuS3wiIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0NSSVBUUyAiVGhhaTsiCiAgTE9DQUxFX1NTSE9SVERBVEUgImQvTS95eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K