LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBDemVjaAogKgogKiBDb3B5cmlnaHQgMjAwMiBBbGV4YW5kcmUgSnVsbGlhcmQgZm9yIENvZGVXZWF2ZXJzCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNwcmFnbWEgY29kZV9wYWdlKDEyNTApCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0NaRUNILCBTVUJMQU5HX0RFRkFVTFQKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDI3XHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAyXHgwMDAwXHgwMDAwXHgwNDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjQyMCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMCIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTAiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1MiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI0MjAiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDQwNSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMjkiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5MiIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDA1IgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjAiCiAgTE9DQUxFX1MxMTU5ICJkb3AuIgogIExPQ0FMRV9TMjM1OSAib2RwLiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJDWkUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAicG8iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi+nQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAic3QiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAi6HQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAicOEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAic28iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAibmUiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiQ1NZIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAiSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgIklJIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAiSUlJIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiSVYiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJWIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiVkkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJWSUkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJWSUlJIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAiSVgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAiWCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTExICJYSSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJYSUkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiQ3plY2ggUmVwdWJsaWMiCiAgTE9DQUxFX1NDVVJSRU5DWSAiS+giCiAgTE9DQUxFX1NEQVRFICIuIgogIExPQ0FMRV9TREFZTkFNRTEgInBvbmTsbO0iCiAgTE9DQUxFX1NEQVlOQU1FMiAi+nRlcv0iCiAgTE9DQUxFX1NEQVlOQU1FMyAic3T4ZWRhIgogIExPQ0FMRV9TREFZTkFNRTQgIuh0dnJ0ZWsiCiAgTE9DQUxFX1NEQVlOQU1FNSAicOF0ZWsiCiAgTE9DQUxFX1NEQVlOQU1FNiAic29ib3RhIgogIExPQ0FMRV9TREFZTkFNRTcgIm5lZOxsZSIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJDemVjaCBSZXB1YmxpYyIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJDemVjaCBLb3J1bmEiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiQ3plY2giCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiQ1pLIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJDWiIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJjcyIKICBMT0NBTEVfU0xBTkdVQUdFICJDemVjaCIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZC4gTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJsZWRlbiIKICBMT0NBTEVfU01PTlRITkFNRTIgIvpub3IiCiAgTE9DQUxFX1NNT05USE5BTUUzICJi+GV6ZW4iCiAgTE9DQUxFX1NNT05USE5BTUU0ICJkdWJlbiIKICBMT0NBTEVfU01PTlRITkFNRTUgImt27HRlbiIKICBMT0NBTEVfU01PTlRITkFNRTYgIuhlcnZlbiIKICBMT0NBTEVfU01PTlRITkFNRTcgIuhlcnZlbmVjIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAic3JwZW4iCiAgTE9DQUxFX1NNT05USE5BTUU5ICJ64fjtIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIvjtamVuIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgImxpc3RvcGFkIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgInByb3NpbmVjIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFNRSAiY3MtQ1oiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAiyGVza+GgcmVwdWJsaWthIgogIExPQ0FMRV9TTkFUSVZFQ1VSUk5BTUUgIktvcnVuYSDIZXNr4SIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICLoZZp0aW5hIgogIExPQ0FMRV9TTkVHQVRJVkVTSUdOICItIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTSE9SVERBVEUgImQuTS55eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K