LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBNYW54IEdhZWxpYwogKgogKiBDb3B5cmlnaHQgMTk5OCBNYXJjZWwgQmF1cgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTIpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0dBRUxJQywgU1VCTEFOR19HQUVMSUNfTUFOWAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMmZceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDFceDAwMDBceDAwMDBceDQwMDBceDAxZmZceDAwM2ZceDgwMDBceGZmZmYiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIwIgogIExPQ0FMRV9JQ09VTlRSWSAiNDQiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjAiCiAgTE9DQUxFX0lEQVRFICIxIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUyIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NTAiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiNDQiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwMjg1IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDA5IgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwMCIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NjA1IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjBjM2MiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiMSIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMyIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMyIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIkFNIgogIExPQ0FMRV9TMjM1OSAiUE0iCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiR0JSIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIkplbHUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAiSmVtYSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJKZXJjIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIkplcmQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAiSmVoZSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJKZXNhIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIkplZG8iCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiR0RWIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiSi1ndWVyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiVC1hcnJlZSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIk1heXJudCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgIkF2ZXJpbCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIkJvYWxkeW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJNLXNvdXJlZSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIkotc291cmVlIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiTHVhbmlzdHluIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAiTS1mb3V5aXIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAiSi1mb3V5aXIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAiTS5Ib3VuZXkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiTS5Ob2xsaWNrIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIk1hbm5pbm4iCiAgTE9DQUxFX1NDVVJSRU5DWSAioyIKICBMT0NBTEVfU0RBVEUgIi8iCiAgTE9DQUxFX1NEQVlOQU1FMSAiSmVoZWluIgogIExPQ0FMRV9TREFZTkFNRTIgIkplbWF5cnQiCiAgTE9DQUxFX1NEQVlOQU1FMyAiSmVyY2VhbiIKICBMT0NBTEVfU0RBWU5BTUU0ICJKZXJkZWluIgogIExPQ0FMRV9TREFZTkFNRTUgIkplcmhlaW5leSIKICBMT0NBTEVfU0RBWU5BTUU2ICJKZXNhcm4iCiAgTE9DQUxFX1NEQVlOQU1FNyAiSmVkb29uZWUiCiAgTE9DQUxFX1NERUNJTUFMICIuIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiSXNsZSBvZiBNYW4iCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiVUsgUG91bmQgU3RlcmxpbmciCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiTWFueCBHYWVsaWMiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiR0JQIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJHQiIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJndiIKICBMT0NBTEVfU0xBTkdVQUdFICJHYWVsZyAoTWFubmlubikiCiAgTE9DQUxFX1NMSVNUICIsIgogIExPQ0FMRV9TTE9OR0RBVEUgImRkIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIi4iCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiSmVycmV5LWdldXJlZSIKICBMT0NBTEVfU01PTlRITkFNRTIgIlRvc2hpYWdodC1hcnJlZSIKICBMT0NBTEVfU01PTlRITkFNRTMgIk1heXJudCIKICBMT0NBTEVfU01PTlRITkFNRTQgIkF2ZXJpbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIkJvYWxkeW4iCiAgTE9DQUxFX1NNT05USE5BTUU2ICJNZWFuLXNvdXJlZSIKICBMT0NBTEVfU01PTlRITkFNRTcgIkplcnJleS1zb3VyZWUiCiAgTE9DQUxFX1NNT05USE5BTUU4ICJMdWFuaXN0eW4iCiAgTE9DQUxFX1NNT05USE5BTUU5ICJNZWFuLWZvdXJpciIKICBMT0NBTEVfU01PTlRITkFNRTEwICJKZXJyZXktZm91eWlyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIk1lZSBIb3VuZXkiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiTWVlIG55IE5vbGxpY2siCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQU1FICJndi1HQiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICJNYW5uaW5uIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIiIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJHYWVsZyIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0NSSVBUUyAiTGF0bjsiCiAgTE9DQUxFX1NTSE9SVERBVEUgImRkL01NL3l5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==