LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBJY2VsYW5kaWMKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUyKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19JQ0VMQU5ESUMsIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMmZceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDFceDAwMDBceDAwMDBceDQwMDBceDAwMDNceDAwMDBceDAwMDBceGM1ZDQiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiMzU0IgogIExPQ0FMRV9JQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUNVUlJFTkNZICIzIgogIExPQ0FMRV9JREFURSAiMSIKICBMT0NBTEVfSURBWUxaRVJPICIwIgogIExPQ0FMRV9JREVGQVVMVEFOU0lDT0RFUEFHRSAiMTI1MiIKICBMT0NBTEVfSURFRkFVTFRDT0RFUEFHRSAiODUwIgogIExPQ0FMRV9JREVGQVVMVENPVU5UUlkgIjM1NCIKICBMT0NBTEVfSURFRkFVTFRFQkNESUNDT0RFUEFHRSAiMjA4NzEiCiAgTE9DQUxFX0lERUZBVUxUTEFOR1VBR0UgIjA0MGYiCiAgTE9DQUxFX0lERUZBVUxUTUFDQ09ERVBBR0UgIjEwMDc5IgogIExPQ0FMRV9JREVGQVVMVFVOSVhDT0RFUEFHRSAiMjg2MDUiCiAgTE9DQUxFX0lESUdJVFMgIjIiCiAgTE9DQUxFX0lESUdJVFNVQlNUSVRVVElPTiAiMSIKICBMT0NBTEVfSUZJUlNUREFZT0ZXRUVLICIwIgogIExPQ0FMRV9JRklSU1RXRUVLT0ZZRUFSICIyIgogIExPQ0FMRV9JSU5UTENVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lMQU5HVUFHRSAiMDQwZiIKICBMT0NBTEVfSUxEQVRFICIxIgogIExPQ0FMRV9JTFpFUk8gIjEiCiAgTE9DQUxFX0lNRUFTVVJFICIwIgogIExPQ0FMRV9JTU9OTFpFUk8gIjAiCiAgTE9DQUxFX0lORUdDVVJSICI4IgogIExPQ0FMRV9JTkVHTlVNQkVSICIxIgogIExPQ0FMRV9JTkVHU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSU5FR1NJR05QT1NOICIxIgogIExPQ0FMRV9JTkVHU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIxIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lUSU1FICIxIgogIExPQ0FMRV9JVElNRU1BUktQT1NOICIwIgogIExPQ0FMRV9JVExaRVJPICIxIgogIExPQ0FMRV9TMTE1OSAiIgogIExPQ0FMRV9TMjM1OSAiIgogIExPQ0FMRV9TQUJCUkVWQ1RSWU5BTUUgIklTTCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUxICJt4W4uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgIv5yaS4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAibWnwLiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU0ICJmaW0uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgImb2cy4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAibGF1LiIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU3ICJzdW4uIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIklTTCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgImphbi4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJmZWIuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMyAibWFyLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgImFwci4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJtYe0iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJq+m4uIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FNyAiavpsLiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggIuFn+i4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJzZXAuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTAgIm9rdC4iCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAibvN2LiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJkZXMuIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTMgIiIKICBMT0NBTEVfU0NPVU5UUlkgIkljZWxhbmQiCiAgTE9DQUxFX1NDVVJSRU5DWSAia3IuIgogIExPQ0FMRV9TREFURSAiLiIKICBMT0NBTEVfU0RBWU5BTUUxICJt4W51ZGFndXIiCiAgTE9DQUxFX1NEQVlOQU1FMiAi/nJp8Gp1ZGFndXIiCiAgTE9DQUxFX1NEQVlOQU1FMyAibWnwdmlrdWRhZ3VyIgogIExPQ0FMRV9TREFZTkFNRTQgImZpbW10dWRhZ3VyIgogIExPQ0FMRV9TREFZTkFNRTUgImb2c3R1ZGFndXIiCiAgTE9DQUxFX1NEQVlOQU1FNiAibGF1Z2FyZGFndXIiCiAgTE9DQUxFX1NEQVlOQU1FNyAic3VubnVkYWd1ciIKICBMT0NBTEVfU0RFQ0lNQUwgIiwiCiAgTE9DQUxFX1NFTkdDT1VOVFJZICJJY2VsYW5kIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIkljZWxhbmRpYyBLcm9uYSIKICBMT0NBTEVfU0VOR0xBTkdVQUdFICJJY2VsYW5kaWMiCiAgTE9DQUxFX1NHUk9VUElORyAiMzswIgogIExPQ0FMRV9TSU5UTFNZTUJPTCAiSVNLIgogIExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FICJJUyIKICBMT0NBTEVfU0lTTzYzOUxBTkdOQU1FICJpcyIKICBMT0NBTEVfU0xBTkdVQUdFICJJY2VsYW5kaWMiCiAgTE9DQUxFX1NMSVNUICI7IgogIExPQ0FMRV9TTE9OR0RBVEUgImQuIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAiamFu+mFyIgogIExPQ0FMRV9TTU9OVEhOQU1FMiAiZmVicvphciIKICBMT0NBTEVfU01PTlRITkFNRTMgIm1hcnMiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJhcHLtbCIKICBMT0NBTEVfU01PTlRITkFNRTUgIm1h7SIKICBMT0NBTEVfU01PTlRITkFNRTYgImr6bu0iCiAgTE9DQUxFX1NNT05USE5BTUU3ICJq+mztIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAi4Wf6c3QiCiAgTE9DQUxFX1NNT05USE5BTUU5ICJzZXB0ZW1iZXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMCAib2t082JlciIKICBMT0NBTEVfU01PTlRITkFNRTExICJu83ZlbWJlciIKICBMT0NBTEVfU01PTlRITkFNRTEyICJkZXNlbWJlciIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAiLiIKICBMT0NBTEVfU05BVElWRUNUUllOQU1FICLNc2xhbmQiCiAgTE9DQUxFX1NOQVRJVkVDVVJSTkFNRSAiS3LzbmEiCiAgTE9DQUxFX1NOQVRJVkVESUdJVFMgIjAxMjM0NTY3ODkiCiAgTE9DQUxFX1NOQVRJVkVMQU5HTkFNRSAi7XNsZW5za2EiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NIT1JUREFURSAiZC5NLnl5eXkiCiAgTE9DQUxFX1NTT1JUTkFNRSAiRGVmYXVsdCIKICBMT0NBTEVfU1RIT1VTQU5EICIuIgogIExPQ0FMRV9TVElNRSAiOiIKICBMT0NBTEVfU1RJTUVGT1JNQVQgIkhIOm1tOnNzIgogIExPQ0FMRV9TWUVBUk1PTlRIICJNTU1NIHl5eXkiCgogIExHUlBJRF9XRVNURVJOX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIldlc3Rlcm4gRXVyb3BlIGFuZCBVbml0ZWQgU3RhdGVzIgogIExHUlBJRF9DRU5UUkFMX0VVUk9QRStMR1JQSURfUkVTX0JBU0UgIkNlbnRyYWwgRXVyb3BlIgogIExHUlBJRF9CQUxUSUMrTEdSUElEX1JFU19CQVNFICJCYWx0aWMiCiAgTEdSUElEX0dSRUVLK0xHUlBJRF9SRVNfQkFTRSAiR3JlZWsiCiAgTEdSUElEX0NZUklMTElDK0xHUlBJRF9SRVNfQkFTRSAiQ3lyaWxsaWMiCiAgTEdSUElEX1RVUktJU0grTEdSUElEX1JFU19CQVNFICJUdXJraWMiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwYW5lc2UiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVhbiIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlRyYWRpdGlvbmFsIENoaW5lc2UiCiAgTEdSUElEX1NJTVBMSUZJRURfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIlNpbXBsaWZpZWQgQ2hpbmVzZSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRoYWkiCiAgTEdSUElEX0hFQlJFVytMR1JQSURfUkVTX0JBU0UgIkhlYnJldyIKICBMR1JQSURfQVJBQklDK0xHUlBJRF9SRVNfQkFTRSAiQXJhYmljIiAKICBMR1JQSURfVklFVE5BTUVTRStMR1JQSURfUkVTX0JBU0UgIlZpZXRuYW1lc2UiCiAgTEdSUElEX0lORElDK0xHUlBJRF9SRVNfQkFTRSAiSW5kaWMiCiAgTEdSUElEX0dFT1JHSUFOK0xHUlBJRF9SRVNfQkFTRSAiR2VvcmdpYW4iCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZW5pYW4iCn0K