LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBBemVyaSAoTGF0aW4pCiAqCiAqIENvcHlyaWdodCAyMDAyIEFsZXhhbmRyZSBKdWxsaWFyZCBmb3IgQ29kZVdlYXZlcnMKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKI3ByYWdtYSBjb2RlX3BhZ2UoMTI1NCkKClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfQVpFUkksIFNVQkxBTkdfQVpFUklfTEFUSU4KewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDI3XHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAyXHgwMDAwXHgwMDAwXHgwNDAwXHgwMDEzXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjk5NCIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMSIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTQiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1NyIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICI5OTQiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwOTA1IgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDJjIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDA4MSIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk5IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MmMiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJBWkUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiQmUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAix2EiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAixyIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICJDYSIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU1ICJDIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTYgIt4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiQiIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJBWkUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJZYW4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJGZXYiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJNYXIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJBcHIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJNYXkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICLdeXVuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAi3Xl1bCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIkF2ZyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgIlNlbiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJPa3QiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAiTm95IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIkRlayIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJBemVyYmFpamFuIgogIExPQ0FMRV9TQ1VSUkVOQ1kgIm1hbi4iCiAgTE9DQUxFX1NEQVRFICIuIgogIExPQ0FMRV9TREFZTkFNRTEgTCJCYXphclx4MDBhMGVydFx4MDI1OXNpIgogIExPQ0FMRV9TREFZTkFNRTIgTCJceDAwYzdceDAyNTlyXHgwMTVmXHgwMjU5bmJceDAyNTlceDAwYTBheFx4MDE1ZmFtXHgwMTMxIgogIExPQ0FMRV9TREFZTkFNRTMgTCJceDAwYzdceDAyNTlyXHgwMTVmXHgwMjU5bmJceDAyNTkiCiAgTE9DQUxFX1NEQVlOQU1FNCBMIkNceDAwZmNtXHgwMjU5XHgwMGEwYXhceDAxNWZhbVx4MDEzMSIKICBMT0NBTEVfU0RBWU5BTUU1IEwiQ1x4MDBmY21ceDAyNTkiCiAgTE9DQUxFX1NEQVlOQU1FNiBMIlx4MDE1ZVx4MDI1OW5iXHgwMjU5IgogIExPQ0FMRV9TREFZTkFNRTcgIkJhemFyIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIkF6ZXJiYWlqYW4iCiAgTE9DQUxFX1NFTkdDVVJSTkFNRSAiQXplcmJhaWphbmlhbiBNYW5hdCIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJBemVyaSAoTGF0aW4pIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIkFaTSIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiQVoiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAiYXoiCiAgTE9DQUxFX1NMQU5HVUFHRSAiQXplcmkgKExhdGluKSIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZCBNTU1NIHl5eXkiCiAgTE9DQUxFX1NNT05ERUNJTUFMU0VQICIsIgogIExPQ0FMRV9TTU9OR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU01PTlRITkFNRTEgIllhbnZhciIKICBMT0NBTEVfU01PTlRITkFNRTIgIkZldnJhbCIKICBMT0NBTEVfU01PTlRITkFNRTMgIk1hcnQiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJBcHJlbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIk1heSIKICBMT0NBTEVfU01PTlRITkFNRTYgIt15dW4iCiAgTE9DQUxFX1NNT05USE5BTUU3ICLdeXVsIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiQXZndXN0IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAiU2VudHlhYnIiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAiT2t0eWFiciIKICBMT0NBTEVfU01PTlRITkFNRTExICJOb3lhYnIiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiRGVrYWJyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU01PTlRIT1VTQU5EU0VQICKgIgogIExPQ0FMRV9TTkFNRSAiYXotTGF0bi1BWiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FIEwiQXpceDAyNTlyYmF5Y2FuY2EiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAibWFuYXQiCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSBMIkF6XHgwMjU5cmJheWNhblx4MDBhZFx4MDEzMWxceDAxMzEiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkxhdG47IgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC5NTS55eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K