LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBSb21hbmlhbgogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTApCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX1JPTUFOSUFOLCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDI3XHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAyXHgwMDAwXHgwMDAwXHgwNDAwXHgwMDEyXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjQwIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MCIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUyIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjQwIgogIExPQ0FMRV9JREVGQVVMVEVCQ0RJQ0NPREVQQUdFICIyMDg4MCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQxOCIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMjkiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5MiIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDE4IgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjEiCiAgTE9DQUxFX1MxMTU5ICIiCiAgTE9DQUxFX1MyMzU5ICIiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiUk9NIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIkwiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAiTWEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAiTWkiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiSiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJWIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgIlMiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiRCIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJST00iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJpYW4uIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiZmViLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm1hci4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJhcHIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAibWFpLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIml1bi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJpdWwuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiYXVnLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgInNlcC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAib2N0LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJub3YuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgImRlYy4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiUm9tYW5pYSIKICBMT0NBTEVfU0NVUlJFTkNZICJsZWkiCiAgTE9DQUxFX1NEQVRFICIuIgogIExPQ0FMRV9TREFZTkFNRTEgImx1bmkiCiAgTE9DQUxFX1NEQVlOQU1FMiAibWFy/mkiCiAgTE9DQUxFX1NEQVlOQU1FMyAibWllcmN1cmkiCiAgTE9DQUxFX1NEQVlOQU1FNCAiam9pIgogIExPQ0FMRV9TREFZTkFNRTUgInZpbmVyaSIKICBMT0NBTEVfU0RBWU5BTUU2ICJz4m1i43TjIgogIExPQ0FMRV9TREFZTkFNRTcgImR1bWluaWPjIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIlJvbWFuaWEiCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiUm9tYW5pYW4gTGV1IgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIlJvbWFuaWFuIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIlJPTCIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiUk8iCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAicm8iCiAgTE9DQUxFX1NMQU5HVUFHRSAiUm9tYW5pYW4iCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQgTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJpYW51YXJpZSIKICBMT0NBTEVfU01PTlRITkFNRTIgImZlYnJ1YXJpZSIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcnRpZSIKICBMT0NBTEVfU01PTlRITkFNRTQgImFwcmlsaWUiCiAgTE9DQUxFX1NNT05USE5BTUU1ICJtYWkiCiAgTE9DQUxFX1NNT05USE5BTUU2ICJpdW5pZSIKICBMT0NBTEVfU01PTlRITkFNRTcgIml1bGllIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiYXVndXN0IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAic2VwdGVtYnJpZSIKICBMT0NBTEVfU01PTlRITkFNRTEwICJvY3RvbWJyaWUiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAibm9pZW1icmllIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgImRlY2VtYnJpZSIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJSb23ibmlhIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIkxldSIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJyb23ibuMiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQuTU0ueXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIi4iCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSEg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0geXl5eSIKCiAgTEdSUElEX1dFU1RFUk5fRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiV2VzdGVybiBFdXJvcGUgYW5kIFVuaXRlZCBTdGF0ZXMiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiQ2VudHJhbCBFdXJvcGUiCiAgTEdSUElEX0JBTFRJQytMR1JQSURfUkVTX0JBU0UgIkJhbHRpYyIKICBMR1JQSURfR1JFRUsrTEdSUElEX1JFU19CQVNFICJHcmVlayIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJpbGxpYyIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmtpYyIKICBMR1JQSURfSkFQQU5FU0UrTEdSUElEX1JFU19CQVNFICJKYXBhbmVzZSIKICBMR1JQSURfS09SRUFOK0xHUlBJRF9SRVNfQkFTRSAiS29yZWFuIgogIExHUlBJRF9UUkFESVRJT05BTF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiVHJhZGl0aW9uYWwgQ2hpbmVzZSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiU2ltcGxpZmllZCBDaGluZXNlIgogIExHUlBJRF9USEFJK0xHUlBJRF9SRVNfQkFTRSAiVGhhaSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmV3IgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFiaWMiIAogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiVmlldG5hbWVzZSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmRpYyIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHZW9yZ2lhbiIKICBMR1JQSURfQVJNRU5JQU4rTEdSUElEX1JFU19CQVNFICJBcm1lbmlhbiIKfQo=