LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBQb2xpc2gKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUwKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19QT0xJU0gsIFNVQkxBTkdfREVGQVVMVAp7CiAgTE9DQUxFX0ZPTlRTSUdOQVRVUkUgTCJceDAwMjdceDgwMDBceDM4MDhceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDBceDAwMDJceDAwMDBceDAwMDBceDA0MDBceDAwMTJceDAwMDBceDAwMDBceGM1ZDQiCiAgTE9DQUxFX0lDQUxFTkRBUlRZUEUgIjEiCiAgTE9DQUxFX0lDRU5UVVJZICIxIgogIExPQ0FMRV9JQ09VTlRSWSAiNDgiCiAgTE9DQUxFX0lDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JQ1VSUkVOQ1kgIjMiCiAgTE9DQUxFX0lEQVRFICIyIgogIExPQ0FMRV9JREFZTFpFUk8gIjEiCiAgTE9DQUxFX0lERUZBVUxUQU5TSUNPREVQQUdFICIxMjUwIgogIExPQ0FMRV9JREVGQVVMVENPREVQQUdFICI4NTIiCiAgTE9DQUxFX0lERUZBVUxUQ09VTlRSWSAiNDgiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjIwODgwIgogIExPQ0FMRV9JREVGQVVMVExBTkdVQUdFICIwNDE1IgogIExPQ0FMRV9JREVGQVVMVE1BQ0NPREVQQUdFICIxMDAyOSIKICBMT0NBTEVfSURFRkFVTFRVTklYQ09ERVBBR0UgIjI4NTkyIgogIExPQ0FMRV9JRElHSVRTICIyIgogIExPQ0FMRV9JRElHSVRTVUJTVElUVVRJT04gIjEiCiAgTE9DQUxFX0lGSVJTVERBWU9GV0VFSyAiMCIKICBMT0NBTEVfSUZJUlNUV0VFS09GWUVBUiAiMiIKICBMT0NBTEVfSUlOVExDVVJSRElHSVRTICIyIgogIExPQ0FMRV9JTEFOR1VBR0UgIjA0MTUiCiAgTE9DQUxFX0lMREFURSAiMSIKICBMT0NBTEVfSUxaRVJPICIxIgogIExPQ0FMRV9JTUVBU1VSRSAiMCIKICBMT0NBTEVfSU1PTkxaRVJPICIxIgogIExPQ0FMRV9JTkVHQ1VSUiAiOCIKICBMT0NBTEVfSU5FR05VTUJFUiAiMSIKICBMT0NBTEVfSU5FR1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lORUdTSUdOUE9TTiAiMSIKICBMT0NBTEVfSU5FR1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JT1BUSU9OQUxDQUxFTkRBUiAiMCIKICBMT0NBTEVfSVBBUEVSU0laRSAiOSIKICBMT0NBTEVfSVBPU1NFUEJZU1BBQ0UgIjEiCiAgTE9DQUxFX0lQT1NTSUdOUE9TTiAiMSIKICBMT0NBTEVfSVBPU1NZTVBSRUNFREVTICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMSIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJQT0wiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAiUG4iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMiAiV3QiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMyAinHIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAiQ3oiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNSAiUHQiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNiAiU28iCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAiTiIKICBMT0NBTEVfU0FCQlJFVkxBTkdOQU1FICJQTEsiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxICJzdHkiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUyICJsdXQiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUzICJtYXIiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU0ICJrd2kiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU1ICJtYWoiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU2ICJjemUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU3ICJsaXAiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU4ICJzaWUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUU5ICJ3cnoiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMCAicGGfIgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTEgImxpcyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEyICJncnUiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TQ09VTlRSWSAiUG9sYW5kIgogIExPQ0FMRV9TQ1VSUkVOQ1kgInqzIgogIExPQ0FMRV9TREFURSAiLSIKICBMT0NBTEVfU0RBWU5BTUUxICJwb25pZWR6aWGzZWsiCiAgTE9DQUxFX1NEQVlOQU1FMiAid3RvcmVrIgogIExPQ0FMRV9TREFZTkFNRTMgIpxyb2RhIgogIExPQ0FMRV9TREFZTkFNRTQgImN6d2FydGVrIgogIExPQ0FMRV9TREFZTkFNRTUgInBpuXRlayIKICBMT0NBTEVfU0RBWU5BTUU2ICJzb2JvdGEiCiAgTE9DQUxFX1NEQVlOQU1FNyAibmllZHppZWxhIgogIExPQ0FMRV9TREVDSU1BTCAiLCIKICBMT0NBTEVfU0VOR0NPVU5UUlkgIlBvbGFuZCIKICBMT0NBTEVfU0VOR0NVUlJOQU1FICJQb2xpc2ggWmxvdHkiCiAgTE9DQUxFX1NFTkdMQU5HVUFHRSAiUG9saXNoIgogIExPQ0FMRV9TR1JPVVBJTkcgIjM7MCIKICBMT0NBTEVfU0lOVExTWU1CT0wgIlBMTiIKICBMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSAiUEwiCiAgTE9DQUxFX1NJU082MzlMQU5HTkFNRSAicGwiCiAgTE9DQUxFX1NMQU5HVUFHRSAiUG9saXNoIgogIExPQ0FMRV9TTElTVCAiOyIKICBMT0NBTEVfU0xPTkdEQVRFICJkIE1NTU0geXl5eSIKICBMT0NBTEVfU01PTkRFQ0lNQUxTRVAgIiwiCiAgTE9DQUxFX1NNT05HUk9VUElORyAiMzswIgogIExPQ0FMRV9TTU9OVEhOQU1FMSAic3R5Y3pl8SIKICBMT0NBTEVfU01PTlRITkFNRTIgImx1dHkiCiAgTE9DQUxFX1NNT05USE5BTUUzICJtYXJ6ZWMiCiAgTE9DQUxFX1NNT05USE5BTUU0ICJrd2llY2ll8SIKICBMT0NBTEVfU01PTlRITkFNRTUgIm1haiIKICBMT0NBTEVfU01PTlRITkFNRTYgImN6ZXJ3aWVjIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAibGlwaWVjIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAic2llcnBpZfEiCiAgTE9DQUxFX1NNT05USE5BTUU5ICJ3cnplc2ll8SIKICBMT0NBTEVfU01PTlRITkFNRTEwICJwYZ9kemllcm5payIKICBMT0NBTEVfU01PTlRITkFNRTExICJsaXN0b3BhZCIKICBMT0NBTEVfU01PTlRITkFNRTEyICJncnVkemll8SIKICBMT0NBTEVfU01PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NNT05USE9VU0FORFNFUCAioCIKICBMT0NBTEVfU05BTUUgInBsLVBMIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIlBvbHNrYSIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJas290eSIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJwb2xza2kiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkxhdG47IgogIExPQ0FMRV9TU0hPUlREQVRFICJ5eXl5LU1NLWRkIgogIExPQ0FMRV9TU09SVE5BTUUgIkRlZmF1bHQiCiAgTE9DQUxFX1NUSE9VU0FORCAioCIKICBMT0NBTEVfU1RJTUUgIjoiCiAgTE9DQUxFX1NUSU1FRk9STUFUICJISDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJFdXJvcGEgemFjaG9kbmlhIGkgU3RhbnkgWmplZG5vY3pvbmUiCiAgTEdSUElEX0NFTlRSQUxfRVVST1BFK0xHUlBJRF9SRVNfQkFTRSAiRXVyb3BhIGNlbnRyYWxuYSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmGzdHlja2llIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWNraSIKICBMR1JQSURfQ1lSSUxMSUMrTEdSUElEX1JFU19CQVNFICJDeXJ5bGljYSIKICBMR1JQSURfVFVSS0lTSCtMR1JQSURfUkVTX0JBU0UgIlR1cmVja2kiCiAgTEdSUElEX0pBUEFORVNFK0xHUlBJRF9SRVNfQkFTRSAiSmFwb/Fza2kiCiAgTEdSUElEX0tPUkVBTitMR1JQSURfUkVTX0JBU0UgIktvcmVh8XNraSIKICBMR1JQSURfVFJBRElUSU9OQUxfQ0hJTkVTRStMR1JQSURfUkVTX0JBU0UgIkNoafFza2kgdHJhZHljeWpueSIKICBMR1JQSURfU0lNUExJRklFRF9DSElORVNFK0xHUlBJRF9SRVNfQkFTRSAiQ2hp8XNraSB1cHJvc3pjem9ueSIKICBMR1JQSURfVEhBSStMR1JQSURfUkVTX0JBU0UgIlRhanNraSIKICBMR1JQSURfSEVCUkVXK0xHUlBJRF9SRVNfQkFTRSAiSGVicmFqc2tpIgogIExHUlBJRF9BUkFCSUMrTEdSUElEX1JFU19CQVNFICJBcmFic2tpIgogIExHUlBJRF9WSUVUTkFNRVNFK0xHUlBJRF9SRVNfQkFTRSAiV2lldG5hbXNraSIKICBMR1JQSURfSU5ESUMrTEdSUElEX1JFU19CQVNFICJJbmR5anNraSIKICBMR1JQSURfR0VPUkdJQU4rTEdSUElEX1JFU19CQVNFICJHcnV6afFza2kiCiAgTEdSUElEX0FSTUVOSUFOK0xHUlBJRF9SRVNfQkFTRSAiQXJtZfFza2kiCn0K