LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBIZWJyZXcKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2Rld2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjU1KQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19IRUJSRVcsIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDE4YWJceDgwMDBceDM4Y2JceDEwMDBceDAwMDBceDAwMDBceDAwMDBceDA4MDBceDAwMjBceDAwMDBceDAwMDBceDAwMjBceDAwMjBceDAwMDBceDAwMDBceDAwMjAiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiOTcyIgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIyIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIxIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1NSIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODYyIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjk3MiIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiNTAwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDBkIgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAwNSIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTk4IgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiNiIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMCIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MGQiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIwIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiMiIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjAiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiNCIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiOCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiNCIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIxIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIkFNIgogIExPQ0FMRV9TMjM1OSAiUE0iCiAgTE9DQUxFX1NBQkJSRVZDVFJZTkFNRSAiSVNSIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTEgIuEiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAi4iIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICLjIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTQgIuQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAi5SIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICL5IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTcgIuAiCiAgTE9DQUxFX1NBQkJSRVZMQU5HTkFNRSAiSEVCIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMSAi6fDl4PgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICL04fjl4PgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICLu+PUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICLg9Pjp7CIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIu7g6SIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgIunl8OkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICLp5ezpIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOCAi4OXi5fHoIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FOSAi8fTo7uH4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIuDl9+jl4fgiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAi8OXh7uH4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgIuP27uH4IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIklzcmFlbCIKICBMT0NBTEVfU0NVUlJFTkNZICKkIgogIExPQ0FMRV9TREFURSAiLyIKICBMT0NBTEVfU0RBWU5BTUUxICLp5e2g+fDpIgogIExPQ0FMRV9TREFZTkFNRTIgIunl7aD57On56SIKICBMT0NBTEVfU0RBWU5BTUUzICLp5e2g+OHp8ukiCiAgTE9DQUxFX1NEQVlOQU1FNCAi6eXtoOfu6fnpIgogIExPQ0FMRV9TREFZTkFNRTUgIunl7aD56fnpIgogIExPQ0FMRV9TREFZTkFNRTYgIvnh+iIKICBMT0NBTEVfU0RBWU5BTUU3ICLp5e2g+OD55e8iCiAgTE9DQUxFX1NERUNJTUFMICIuIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiSXNyYWVsIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIklzcmFlbGkgTmV3IFNoZWtlbCIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJIZWJyZXciCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiSUxTIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJJTCIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJoZSIKICBMT0NBTEVfU0xBTkdVQUdFICJIZWJyZXciCiAgTE9DQUxFX1NMSVNUICIsIgogIExPQ0FMRV9TTE9OR0RBVEUgImRkZGQgZGQgTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLiIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICLp8OXg+CIKICBMT0NBTEVfU01PTlRITkFNRTIgIvTh+OXg+CIKICBMT0NBTEVfU01PTlRITkFNRTMgIu749SIKICBMT0NBTEVfU01PTlRITkFNRTQgIuD0+OnsIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAi7uDpIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAi6eXw6SIKICBMT0NBTEVfU01PTlRITkFNRTcgIunl7OkiCiAgTE9DQUxFX1NNT05USE5BTUU4ICLg5eLl8egiCiAgTE9DQUxFX1NNT05USE5BTUU5ICLx9Oju4fgiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAi4OX36OXh+CIKICBMT0NBTEVfU01PTlRITkFNRTExICLw5eHu4fgiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAi4/bu4fgiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIiwiCiAgTE9DQUxFX1NOQVRJVkVDVFJZTkFNRSAi6fn44OwiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAi+ffsIOfj+SIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICLy4fjp+iIKICBMT0NBTEVfU05FR0FUSVZFU0lHTiAiLSIKICBMT0NBTEVfU1BPU0lUSVZFU0lHTiAiIgogIExPQ0FMRV9TU0hPUlREQVRFICJkZC9NTS95eXl5IgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAiLCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==