LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBDYXRhbGFuCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZXdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1MikKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfQ0FUQUxBTiwgU1VCTEFOR19ERUZBVUxUCnsKICBMT0NBTEVfRk9OVFNJR05BVFVSRSBMIlx4MDAyZlx4ODAwMFx4MzgwOFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMFx4MDAwMVx4MDAwMFx4MDAwMFx4NDAwMFx4MDAwM1x4MDAwMFx4MDAwMFx4YzVkNCIKICBMT0NBTEVfSUNBTEVOREFSVFlQRSAiMSIKICBMT0NBTEVfSUNFTlRVUlkgIjEiCiAgTE9DQUxFX0lDT1VOVFJZICIzNCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTIiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1MCIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICIzNCIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiNTAwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDBhIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwMCIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwNDAzIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMSIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU9QVElPTkFMQ0FMRU5EQVIgIjAiCiAgTE9DQUxFX0lQQVBFUlNJWkUgIjkiCiAgTE9DQUxFX0lQT1NTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JUE9TU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lQT1NTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSVRJTUUgIjEiCiAgTE9DQUxFX0lUSU1FTUFSS1BPU04gIjAiCiAgTE9DQUxFX0lUTFpFUk8gIjEiCiAgTE9DQUxFX1MxMTU5ICIiCiAgTE9DQUxFX1MyMzU5ICIiCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiRVNQIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgImRsLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUyICJkdC4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAiZGMuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgImRqLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJkdi4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAiZHMuIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgImRnLiIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJDQVQiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJnZW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJmZWIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJtYXLnIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNCAiYWJyIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNSAibWFpZyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgImp1bnkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJqdWwiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJhZyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgInNldCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJvY3QiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAibm92IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgImRlcyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJTcGFpbiIKICBMT0NBTEVfU0NVUlJFTkNZICKAIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICJkaWxsdW5zIgogIExPQ0FMRV9TREFZTkFNRTIgImRpbWFydHMiCiAgTE9DQUxFX1NEQVlOQU1FMyAiZGltZWNyZXMiCiAgTE9DQUxFX1NEQVlOQU1FNCAiZGlqb3VzIgogIExPQ0FMRV9TREFZTkFNRTUgImRpdmVuZHJlcyIKICBMT0NBTEVfU0RBWU5BTUU2ICJkaXNzYWJ0ZSIKICBMT0NBTEVfU0RBWU5BTUU3ICJkaXVtZW5nZSIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJTcGFpbiIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJFdXJvIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIkNhdGFsYW4iCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiRVVSIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJFUyIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJjYSIKICBMT0NBTEVfU0xBTkdVQUdFICJDYXRhbGFuIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkZGRkLCBkJyAvICdNTU1NJyAvICd5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJnZW5lciIKICBMT0NBTEVfU01PTlRITkFNRTIgImZlYnJlciIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcuciCiAgTE9DQUxFX1NNT05USE5BTUU0ICJhYnJpbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIm1haWciCiAgTE9DQUxFX1NNT05USE5BTUU2ICJqdW55IgogIExPQ0FMRV9TTU9OVEhOQU1FNyAianVsaW9sIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiYWdvc3QiCiAgTE9DQUxFX1NNT05USE5BTUU5ICJzZXRlbWJyZSIKICBMT0NBTEVfU01PTlRITkFNRTEwICJvY3R1YnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTEgIm5vdmVtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTIgImRlc2VtYnJlIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICIuIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIkVzcGFueWEiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiZXVybyIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJjYXRhbOAiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NIT1JUREFURSAiZGQvTU0veXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIi4iCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSEg6bW06c3MiCiAgTE9DQUxFX1NZRUFSTU9OVEggIk1NTU0nIC8gJ3l5eXkiCn0K