LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBBemVyaSAoQ3lyaWxsaWMpCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MSkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfQVpFUkksIFNVQkxBTkdfQVpFUklfQ1lSSUxMSUMKewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMjAzXHg4MDAwXHgzODQ4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDA0XHgwMDAwXHgwMDAwXHgwMDAyXHgwMDA0XHgwMDAwXHgwMDAwXHgwMjAyIgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk5NCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTEiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg2NiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5OTQiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODgwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwODJjIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNyIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk1IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA4MmMiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JTkVVVFJBTCAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVJFQURJTkdMQVlPVVQgIjAiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIwIgogIExPQ0FMRV9TMTE1OSAiIgogIExPQ0FMRV9TMjM1OSAiIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIkFaRSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICLB5SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICLX4CIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICLXIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgTCJceDA0YjhceDA0MzAiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSBMIlx4MDRiOCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICLYIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIsEiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiQVpFIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAio+DtIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMiAi1OXiIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAizODwIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiwO/wIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAizOC8IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNiAiyLzz7SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgIsi88+siCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICLA4uMiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICLR5e0iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAizuryIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgIs3u/yIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICLE5eoiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiQXplcmJhaWphbiIKICBMT0NBTEVfU0NVUlJFTkNZICLs4O0uIgogIExPQ0FMRV9TREFURSAiLiIKICBMT0NBTEVfU0RBWU5BTUUxIEwiXHgwNDExXHgwNDMwXHgwNDM3XHgwNDMwXHgwNDQwXHgwMGEwXHgwNDM1XHgwNDQwXHgwNDQyXHgwNGQ5XHgwNDQxXHgwNDM4IgogIExPQ0FMRV9TREFZTkFNRTIgTCJceDA0MjdceDA0ZDlceDA0NDBceDA0NDhceDA0ZDlceDA0M2RceDA0MzFceDA0ZDlceDAwYTBceDA0MzBceDA0NDVceDA0NDhceDA0MzBceDA0M2NceDA0NGIiCiAgTE9DQUxFX1NEQVlOQU1FMyBMIlx4MDQyN1x4MDRkOVx4MDQ0MFx4MDQ0OFx4MDRkOVx4MDQzZFx4MDQzMVx4MDRkOSIKICBMT0NBTEVfU0RBWU5BTUU0IEwiXHgwNGI4XHgwNGFmXHgwNDNjXHgwNGQ5XHgwMGEwXHgwNDMwXHgwNDQ1XHgwNDQ4XHgwNDMwXHgwNDNjXHgwNDRiIgogIExPQ0FMRV9TREFZTkFNRTUgTCJceDA0YjhceDA0YWZceDA0M2NceDA0ZDkiCiAgTE9DQUxFX1NEQVlOQU1FNiBMIlx4MDQyOFx4MDRkOVx4MDQzZFx4MDQzMVx4MDRkOSIKICBMT0NBTEVfU0RBWU5BTUU3ICLB4Ofg8CIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJBemVyYmFpamFuIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkF6ZXJiYWlqYW5pYW4gTWFuYXQiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiQXplcmkgKEN5cmlsbGljKSIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJBWk0iCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIkFaIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgImF6IgogIExPQ0FMRV9TTEFOR1VBR0UgIkF6ZXJpIChDeXJpbGxpYykiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQgTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICKj4O3i4PAiCiAgTE9DQUxFX1NNT05USE5BTUUyICLU5eLw4OsiCiAgTE9DQUxFX1NNT05USE5BTUUzICLM4PDyIgogIExPQ0FMRV9TTU9OVEhOQU1FNCAiwO/w5esiCiAgTE9DQUxFX1NNT05USE5BTUU1ICLM4LwiCiAgTE9DQUxFX1NNT05USE5BTUU2ICLIvPPtIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAiyLzz6yIKICBMT0NBTEVfU01PTlRITkFNRTggIsDi4/Px8iIKICBMT0NBTEVfU01PTlRITkFNRTkgItHl7fK84OHwIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIs7q8rzg4fAiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAize684OHwIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgIsTl6uDh8CIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAioCIKICBMT0NBTEVfU05BTUUgImF6LUFaIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgTCJceDA0MTBceDA0MzdceDA0ZDlceDA0NDBceDA0MzFceDA0MzBceDA0NThceDA0YjlceDA0MzBceDA0M2QiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAi8PPh6/wiCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVESVNQTEFZTkFNRSAiIgogIExPQ0FMRV9TTkFUSVZFTEFOR05BTUUgTCJceDA0MTBceDA0MzdceDA0ZDlceDA0NDBceDA0MzFceDA0MzBceDA0NThceDA0YjlceDA0MzBceDA0M2QiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NPUEVOVFlQRUxBTkdVQUdFVEFHICJBWkUgIgogIExPQ0FMRV9TUE9TSVRJVkVTSUdOICIiCiAgTE9DQUxFX1NTQ1JJUFRTICJBcmFiOyIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQuTU0ueXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIqAiCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIiAKfQo=