LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBLb3JlYW4KICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSg5NDkpCgpTVFJJTkdUQUJMRSBMQU5HVUFHRSBMQU5HX0tPUkVBTiwgU1VCTEFOR19LT1JFQU4KewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMmE3XHg4MDAwXHg3Y2Y5XHgzOWQ3XHgwMDEwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA4XHgwMDAwXHgwMDAwIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjgyIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMCIKICBMT0NBTEVfSUNVUlJFTkNZICIwIgogIExPQ0FMRV9JREFURSAiMiIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiOTQ5IgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI5NDkiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiODIiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODMzIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDEyIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwMyIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjk0OSIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjYiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDEyIgogIExPQ0FMRV9JTERBVEUgIjIiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjEiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIwIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjMiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMSIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICI1IgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMCIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIzIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjEiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMCIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMSIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIr/AwPwiCiAgTE9DQUxFX1MyMzU5ICK/wMjEIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIktPUiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICK/+SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICLIrSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICK89iIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICK48SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICKx3SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICLF5CIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICLAzyIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJLT1IiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICIxIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAiMiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIjMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICI0IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAiNSIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIjYiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICI3IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAiOCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIjkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAiMTAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAiMTEiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMiAiMTIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiS29yZWEiCiAgTE9DQUxFX1NDVVJSRU5DWSBMIlx4MjBhOSIKICBMT0NBTEVfU0RBVEUgIi0iCiAgTE9DQUxFX1NEQVlOQU1FMSAiv/m/5MDPIgogIExPQ0FMRV9TREFZTkFNRTIgIsitv+TAzyIKICBMT0NBTEVfU0RBWU5BTUUzICK89r/kwM8iCiAgTE9DQUxFX1NEQVlOQU1FNCAiuPG/5MDPIgogIExPQ0FMRV9TREFZTkFNRTUgIrHdv+TAzyIKICBMT0NBTEVfU0RBWU5BTUU2ICLF5L/kwM8iCiAgTE9DQUxFX1NEQVlOQU1FNyAiwM+/5MDPIgogIExPQ0FMRV9TREVDSU1BTCAiLiIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIktvcmVhIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIktvcmVhbiBXb24iCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiS29yZWFuIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIktSVyIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiS1IiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAia28iCiAgTE9DQUxFX1NMQU5HVUFHRSAiS29yZWFuIgogIExPQ0FMRV9TTElTVCAiLCIKICBMT0NBTEVfU0xPTkdEQVRFICJ5eXl5J7PiJyBNJ7/5JyBkJ8DPJyBkZGRkIgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLiIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICIxv/kiCiAgTE9DQUxFX1NNT05USE5BTUUyICIyv/kiCiAgTE9DQUxFX1NNT05USE5BTUUzICIzv/kiCiAgTE9DQUxFX1NNT05USE5BTUU0ICI0v/kiCiAgTE9DQUxFX1NNT05USE5BTUU1ICI1v/kiCiAgTE9DQUxFX1NNT05USE5BTUU2ICI2v/kiCiAgTE9DQUxFX1NNT05USE5BTUU3ICI3v/kiCiAgTE9DQUxFX1NNT05USE5BTUU4ICI4v/kiCiAgTE9DQUxFX1NNT05USE5BTUU5ICI5v/kiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAiMTC/+SIKICBMT0NBTEVfU01PTlRITkFNRTExICIxMb/5IgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIjEyv/kiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQU1FICJrby1LUiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICK068fRuc6xuSIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICK/+CIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRURJU1BMQVlOQU1FICLH0bG5vu4gKLTrx9G5zrG5KSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICLH0bG5vu4iCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkhhbmc7SGFuaTsiCiAgTE9DQUxFX1NTSE9SVERBVEUgInl5eXktTU0tZGQiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGljdGlvbmFyeSIKICBMT0NBTEVfU1RIT1VTQU5EICIsIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgInR0IGg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggInl5eXkns+InIE0nv/knIgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==