LyoKICogTG9jYWxlIGRlZmluaXRpb25zIGZvciBTZXJiaWFuIChMYXRpbikKICoKICogQ29weXJpZ2h0IDIwMDIgQWxleGFuZHJlIEp1bGxpYXJkIGZvciBDb2RlV2VhdmVycwogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojcHJhZ21hIGNvZGVfcGFnZSgxMjUwKQoKU1RSSU5HVEFCTEUgTEFOR1VBR0UgTEFOR19TRVJCSUFOLCBTVUJMQU5HX1NFUkJJQU5fTEFUSU4KewogIExPQ0FMRV9GT05UU0lHTkFUVVJFIEwiXHgwMDI3XHg4MDAwXHgzODA4XHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAwXHgwMDAyXHgwMDAwXHgwMDAwXHgwNDAwXHgwMDEyXHgwMDAwXHgwMDAwXHhjNWQ0IgogIExPQ0FMRV9JQ0FMRU5EQVJUWVBFICIxIgogIExPQ0FMRV9JQ0VOVFVSWSAiMSIKICBMT0NBTEVfSUNPVU5UUlkgIjM4MSIKICBMT0NBTEVfSUNVUlJESUdJVFMgIjIiCiAgTE9DQUxFX0lDVVJSRU5DWSAiMyIKICBMT0NBTEVfSURBVEUgIjEiCiAgTE9DQUxFX0lEQVlMWkVSTyAiMCIKICBMT0NBTEVfSURFRkFVTFRBTlNJQ09ERVBBR0UgIjEyNTAiCiAgTE9DQUxFX0lERUZBVUxUQ09ERVBBR0UgIjg1MiIKICBMT0NBTEVfSURFRkFVTFRDT1VOVFJZICIzODEiCiAgTE9DQUxFX0lERUZBVUxURUJDRElDQ09ERVBBR0UgIjUwMCIKICBMT0NBTEVfSURFRkFVTFRMQU5HVUFHRSAiMDgxYSIKICBMT0NBTEVfSURFRkFVTFRNQUNDT0RFUEFHRSAiMTAwMjkiCiAgTE9DQUxFX0lERUZBVUxUVU5JWENPREVQQUdFICIyODU5MiIKICBMT0NBTEVfSURJR0lUUyAiMiIKICBMT0NBTEVfSURJR0lUU1VCU1RJVFVUSU9OICIxIgogIExPQ0FMRV9JRklSU1REQVlPRldFRUsgIjAiCiAgTE9DQUxFX0lGSVJTVFdFRUtPRllFQVIgIjAiCiAgTE9DQUxFX0lJTlRMQ1VSUkRJR0lUUyAiMiIKICBMT0NBTEVfSUxBTkdVQUdFICIwODFhIgogIExPQ0FMRV9JTERBVEUgIjEiCiAgTE9DQUxFX0lMWkVSTyAiMSIKICBMT0NBTEVfSU1FQVNVUkUgIjAiCiAgTE9DQUxFX0lNT05MWkVSTyAiMCIKICBMT0NBTEVfSU5FR0NVUlIgIjgiCiAgTE9DQUxFX0lORUdOVU1CRVIgIjEiCiAgTE9DQUxFX0lORUdTRVBCWVNQQUNFICIxIgogIExPQ0FMRV9JTkVHU0lHTlBPU04gIjEiCiAgTE9DQUxFX0lORUdTWU1QUkVDRURFUyAiMCIKICBMT0NBTEVfSU5FVVRSQUwgIjAiCiAgTE9DQUxFX0lPUFRJT05BTENBTEVOREFSICIwIgogIExPQ0FMRV9JUEFQRVJTSVpFICI5IgogIExPQ0FMRV9JUE9TU0VQQllTUEFDRSAiMSIKICBMT0NBTEVfSVBPU1NJR05QT1NOICIxIgogIExPQ0FMRV9JUE9TU1lNUFJFQ0VERVMgIjAiCiAgTE9DQUxFX0lSRUFESU5HTEFZT1VUICIwIgogIExPQ0FMRV9JVElNRSAiMSIKICBMT0NBTEVfSVRJTUVNQVJLUE9TTiAiMCIKICBMT0NBTEVfSVRMWkVSTyAiMCIKICBMT0NBTEVfUzExNTkgIiIKICBMT0NBTEVfUzIzNTkgIiIKICBMT0NBTEVfU0FCQlJFVkNUUllOQU1FICJTUEIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FMSAicG9uIgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTIgInV0byIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUUzICJzcmUiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNCAi6GV0IgogIExPQ0FMRV9TQUJCUkVWREFZTkFNRTUgInBldCIKICBMT0NBTEVfU0FCQlJFVkRBWU5BTUU2ICJzdWIiCiAgTE9DQUxFX1NBQkJSRVZEQVlOQU1FNyAibmVkIgogIExPQ0FMRV9TQUJCUkVWTEFOR05BTUUgIlNSTCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEgImphbiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTIgImZlYiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTMgIm1hciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTQgImFwciIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTUgIm1haiIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTYgImp1biIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTcgImp1bCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTggImF2ZyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTkgInNlcCIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEwICJva3QiCiAgTE9DQUxFX1NBQkJSRVZNT05USE5BTUUxMSAibm92IgogIExPQ0FMRV9TQUJCUkVWTU9OVEhOQU1FMTIgImRlYyIKICBMT0NBTEVfU0FCQlJFVk1PTlRITkFNRTEzICIiCiAgTE9DQUxFX1NDT1VOVFJZICJTZXJiaWEiCiAgTE9DQUxFX1NDVVJSRU5DWSAiRGluLiIKICBMT0NBTEVfU0RBVEUgIi4iCiAgTE9DQUxFX1NEQVlOQU1FMSAicG9uZWRlbGphayIKICBMT0NBTEVfU0RBWU5BTUUyICJ1dG9yYWsiCiAgTE9DQUxFX1NEQVlOQU1FMyAic3JlZGEiCiAgTE9DQUxFX1NEQVlOQU1FNCAi6GV0dnJ0YWsiCiAgTE9DQUxFX1NEQVlOQU1FNSAicGV0YWsiCiAgTE9DQUxFX1NEQVlOQU1FNiAic3Vib3RhIgogIExPQ0FMRV9TREFZTkFNRTcgIm5lZGVsamEiCiAgTE9DQUxFX1NERUNJTUFMICIsIgogIExPQ0FMRV9TRU5HQ09VTlRSWSAiU2VyYmlhIgogIExPQ0FMRV9TRU5HQ1VSUk5BTUUgIll1Z29zbGF2aWFuIERpbmFyIgogIExPQ0FMRV9TRU5HTEFOR1VBR0UgIlNlcmJpYW4gKExhdGluKSIKICBMT0NBTEVfU0dST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NJTlRMU1lNQk9MICJZVU4iCiAgTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUgIlNQIgogIExPQ0FMRV9TSVNPNjM5TEFOR05BTUUgInNyIgogIExPQ0FMRV9TTEFOR1VBR0UgIlNlcmJpYW4gKExhdGluKSIKICBMT0NBTEVfU0xJU1QgIjsiCiAgTE9DQUxFX1NMT05HREFURSAiZC4gTU1NTSB5eXl5IgogIExPQ0FMRV9TTU9OREVDSU1BTFNFUCAiLCIKICBMT0NBTEVfU01PTkdST1VQSU5HICIzOzAiCiAgTE9DQUxFX1NNT05USE5BTUUxICJqYW51YXIiCiAgTE9DQUxFX1NNT05USE5BTUUyICJmZWJydWFyIgogIExPQ0FMRV9TTU9OVEhOQU1FMyAibWFydCIKICBMT0NBTEVfU01PTlRITkFNRTQgImFwcmlsIgogIExPQ0FMRV9TTU9OVEhOQU1FNSAibWFqIgogIExPQ0FMRV9TTU9OVEhOQU1FNiAianVuIgogIExPQ0FMRV9TTU9OVEhOQU1FNyAianVsIgogIExPQ0FMRV9TTU9OVEhOQU1FOCAiYXZndXN0IgogIExPQ0FMRV9TTU9OVEhOQU1FOSAic2VwdGVtYmFyIgogIExPQ0FMRV9TTU9OVEhOQU1FMTAgIm9rdG9iYXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMSAibm92ZW1iYXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMiAiZGVjZW1iYXIiCiAgTE9DQUxFX1NNT05USE5BTUUxMyAiIgogIExPQ0FMRV9TTU9OVEhPVVNBTkRTRVAgIi4iCiAgTE9DQUxFX1NOQU1FICJzci1MYXRuLVNQIgogIExPQ0FMRV9TTkFUSVZFQ1RSWU5BTUUgIlNyYmlqYSIKICBMT0NBTEVfU05BVElWRUNVUlJOQU1FICJkaW5hciIKICBMT0NBTEVfU05BVElWRURJR0lUUyAiMDEyMzQ1Njc4OSIKICBMT0NBTEVfU05BVElWRUxBTkdOQU1FICJzcnBza2kiCiAgTE9DQUxFX1NORUdBVElWRVNJR04gIi0iCiAgTE9DQUxFX1NQT1NJVElWRVNJR04gIiIKICBMT0NBTEVfU1NDUklQVFMgIkxhdG47IgogIExPQ0FMRV9TU0hPUlREQVRFICJkLk0ueXl5eSIKICBMT0NBTEVfU1NPUlROQU1FICJEZWZhdWx0IgogIExPQ0FMRV9TVEhPVVNBTkQgIi4iCiAgTE9DQUxFX1NUSU1FICI6IgogIExPQ0FMRV9TVElNRUZPUk1BVCAiSDptbTpzcyIKICBMT0NBTEVfU1lFQVJNT05USCAiTU1NTSB5eXl5IgoKICBMR1JQSURfV0VTVEVSTl9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJXZXN0ZXJuIEV1cm9wZSBhbmQgVW5pdGVkIFN0YXRlcyIKICBMR1JQSURfQ0VOVFJBTF9FVVJPUEUrTEdSUElEX1JFU19CQVNFICJDZW50cmFsIEV1cm9wZSIKICBMR1JQSURfQkFMVElDK0xHUlBJRF9SRVNfQkFTRSAiQmFsdGljIgogIExHUlBJRF9HUkVFSytMR1JQSURfUkVTX0JBU0UgIkdyZWVrIgogIExHUlBJRF9DWVJJTExJQytMR1JQSURfUkVTX0JBU0UgIkN5cmlsbGljIgogIExHUlBJRF9UVVJLSVNIK0xHUlBJRF9SRVNfQkFTRSAiVHVya2ljIgogIExHUlBJRF9KQVBBTkVTRStMR1JQSURfUkVTX0JBU0UgIkphcGFuZXNlIgogIExHUlBJRF9LT1JFQU4rTEdSUElEX1JFU19CQVNFICJLb3JlYW4iCiAgTEdSUElEX1RSQURJVElPTkFMX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJUcmFkaXRpb25hbCBDaGluZXNlIgogIExHUlBJRF9TSU1QTElGSUVEX0NISU5FU0UrTEdSUElEX1JFU19CQVNFICJTaW1wbGlmaWVkIENoaW5lc2UiCiAgTEdSUElEX1RIQUkrTEdSUElEX1JFU19CQVNFICJUaGFpIgogIExHUlBJRF9IRUJSRVcrTEdSUElEX1JFU19CQVNFICJIZWJyZXciCiAgTEdSUElEX0FSQUJJQytMR1JQSURfUkVTX0JBU0UgIkFyYWJpYyIgCiAgTEdSUElEX1ZJRVROQU1FU0UrTEdSUElEX1JFU19CQVNFICJWaWV0bmFtZXNlIgogIExHUlBJRF9JTkRJQytMR1JQSURfUkVTX0JBU0UgIkluZGljIgogIExHUlBJRF9HRU9SR0lBTitMR1JQSURfUkVTX0JBU0UgIkdlb3JnaWFuIgogIExHUlBJRF9BUk1FTklBTitMR1JQSURfUkVTX0JBU0UgIkFybWVuaWFuIgp9Cg==