CjsgVG9tY2F0IHNjcmlwdCBmb3IgTnVsbHNvZnQgSW5zdGFsbGVyCjsgJElkJAoKICA7Q29tcHJlc3Npb24gb3B0aW9ucwogIENSQ0NoZWNrIG9uCiAgU2V0Q29tcHJlc3MgZm9yY2UKICBTZXRDb21wcmVzc29yIGx6bWEKICBTZXREYXRhYmxvY2tPcHRpbWl6ZSBvbgoKICBOYW1lICJBcGFjaGUgVG9tY2F0IgoKICA7UHJvZHVjdCBpbmZvcm1hdGlvbgogIFZJQWRkVmVyc2lvbktleSBQcm9kdWN0TmFtZSAiQXBhY2hlIFRvbWNhdCIKICBWSUFkZFZlcnNpb25LZXkgQ29tcGFueU5hbWUgIkFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIgogIFZJQWRkVmVyc2lvbktleSBMZWdhbENvcHlyaWdodCAiQ29weXJpZ2h0IChjKSAxOTk5LTIwMDUgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIgogIFZJQWRkVmVyc2lvbktleSBGaWxlRGVzY3JpcHRpb24gIkFwYWNoZSBUb21jYXQgSW5zdGFsbGVyIgogIFZJQWRkVmVyc2lvbktleSBGaWxlVmVyc2lvbiAiMi4wIgogIFZJQWRkVmVyc2lvbktleSBQcm9kdWN0VmVyc2lvbiAiQFZFUlNJT05AIgogIFZJQWRkVmVyc2lvbktleSBDb21tZW50cyAidG9tY2F0LmFwYWNoZS5vcmciCiAgVklBZGRWZXJzaW9uS2V5IEludGVybmFsTmFtZSAiYXBhY2hlLXRvbWNhdC1AVkVSU0lPTkAuZXhlIgogIFZJUHJvZHVjdFZlcnNpb24gQFZFUlNJT05fTlVNQkVSQAoKIWluY2x1ZGUgIk1VSS5uc2giCiFpbmNsdWRlICJTdHJGdW5jLm5zaCIKJHtTdHJSZXB9CiAgVmFyICJKYXZhSG9tZSIKCgoKOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjtDb25maWd1cmF0aW9uCgogICFkZWZpbmUgTVVJX0hFQURFUklNQUdFCiAgIWRlZmluZSBNVUlfSEVBREVSSU1BR0VfUklHSFQKICAhZGVmaW5lIE1VSV9IRUFERVJJTUFHRV9CSVRNQVAgaGVhZGVyLmJtcAogICFkZWZpbmUgTVVJX1dFTENPTUVGSU5JU0hQQUdFX0JJVE1BUCBzaWRlX2xlZnQuYm1wIAogICFkZWZpbmUgTVVJX0ZJTklTSFBBR0VfU0hPV1JFQURNRSAiJElOU1RESVJcd2ViYXBwc1xST09UXFJFTEVBU0UtTk9URVMudHh0IgogICFkZWZpbmUgTVVJX0ZJTklTSFBBR0VfUlVOICRJTlNURElSXGJpblx0b21jYXQ1dy5leGUKICAhZGVmaW5lIE1VSV9GSU5JU0hQQUdFX1JVTl9QQVJBTUVURVJTIC8vTVIvL1RvbWNhdDUKICAhZGVmaW5lIE1VSV9GSU5JU0hQQUdFX05PUkVCT09UU1VQUE9SVAoKICAhZGVmaW5lIE1VSV9BQk9SVFdBUk5JTkcKCiAgIWRlZmluZSBURU1QMSAkUjAKICAhZGVmaW5lIFRFTVAyICRSMQoKICAhZGVmaW5lIE1VSV9JQ09OIHRvbWNhdC5pY28KICAhZGVmaW5lIE1VSV9VTklDT04gdG9tY2F0LmljbwoKICA7R2VuZXJhbAogIE91dEZpbGUgdG9tY2F0LWluc3RhbGxlci5leGUKCiAgO0luc3RhbGwgT3B0aW9ucyBwYWdlcwogIExhbmdTdHJpbmcgVEVYVF9KVk1fVElUTEUgJHtMQU5HX0VOR0xJU0h9ICJKYXZhIFZpcnR1YWwgTWFjaGluZSIKICBMYW5nU3RyaW5nIFRFWFRfSlZNX1NVQlRJVExFICR7TEFOR19FTkdMSVNIfSAiSmF2YSBWaXJ0dWFsIE1hY2hpbmUgcGF0aCBzZWxlY3Rpb24uIgogIExhbmdTdHJpbmcgVEVYVF9KVk1fUEFHRVRJVExFICR7TEFOR19FTkdMSVNIfSAiOiBKYXZhIFZpcnR1YWwgTWFjaGluZSBwYXRoIHNlbGVjdGlvbiIKCiAgTGFuZ1N0cmluZyBURVhUX0NPTkZfVElUTEUgJHtMQU5HX0VOR0xJU0h9ICJDb25maWd1cmF0aW9uIgogIExhbmdTdHJpbmcgVEVYVF9DT05GX1NVQlRJVExFICR7TEFOR19FTkdMSVNIfSAiVG9tY2F0IGJhc2ljIGNvbmZpZ3VyYXRpb24uIgogIExhbmdTdHJpbmcgVEVYVF9DT05GX1BBR0VUSVRMRSAke0xBTkdfRU5HTElTSH0gIjogQ29uZmlndXJhdGlvbiBPcHRpb25zIgoKICA7SW5zdGFsbCBQYWdlIG9yZGVyCiAgIWluc2VydG1hY3JvIE1VSV9QQUdFX1dFTENPTUUKICAhaW5zZXJ0bWFjcm8gTVVJX1BBR0VfTElDRU5TRSBJTlNUQUxMTElDRU5TRQogICFpbnNlcnRtYWNybyBNVUlfUEFHRV9DT01QT05FTlRTCiAgIWluc2VydG1hY3JvIE1VSV9QQUdFX0RJUkVDVE9SWQogIFBhZ2UgY3VzdG9tIFNldENvbmZpZ3VyYXRpb24gVm9pZCAiJChURVhUX0NPTkZfUEFHRVRJVExFKSIKICBQYWdlIGN1c3RvbSBTZXRDaG9vc2VKVk0gVm9pZCAiJChURVhUX0pWTV9QQUdFVElUTEUpIgogICFpbnNlcnRtYWNybyBNVUlfUEFHRV9JTlNURklMRVMKICBQYWdlIGN1c3RvbSBDaGVja1VzZXJUeXBlCiAgIWluc2VydG1hY3JvIE1VSV9QQUdFX0ZJTklTSAoKICA7VW5pbnN0YWxsIFBhZ2Ugb3JkZXIKICAhaW5zZXJ0bWFjcm8gTVVJX1VOUEFHRV9DT05GSVJNCiAgIWluc2VydG1hY3JvIE1VSV9VTlBBR0VfSU5TVEZJTEVTCgogIDtMaWNlbnNlIGRpYWxvZwogIExpY2Vuc2VEYXRhIExpY2Vuc2UucnRmCgogIDtDb21wb25lbnQtc2VsZWN0aW9uIHBhZ2UKICAgIDtEZXNjcmlwdGlvbnMKICAgIExhbmdTdHJpbmcgREVTQ19TZWNUb21jYXQgJHtMQU5HX0VOR0xJU0h9ICJJbnN0YWxsIHRoZSBUb21jYXQgU2VydmxldCBjb250YWluZXIgYXMgYSBXaW5kb3dzIHNlcnZpY2UuIgogICAgTGFuZ1N0cmluZyBERVNDX1NlY1RvbWNhdENvcmUgJHtMQU5HX0VOR0xJU0h9ICJJbnN0YWxsIHRoZSBUb21jYXQgU2VydmxldCBjb250YWluZXIgY29yZS4iCiAgICBMYW5nU3RyaW5nIERFU0NfU2VjVG9tY2F0U2VydmljZSAke0xBTkdfRU5HTElTSH0gIkF1dG9tYXRpY2FsbHkgc3RhcnQgdGhlIFRvbWNhdCBzZXJ2aWNlIHdoZW4gdGhlIGNvbXB1dGVyIGlzIHN0YXJ0ZWQuIFRoaXMgcmVxdWlyZXMgV2luZG93cyBOVCA0LjAsIFdpbmRvd3MgMjAwMCBvciBXaW5kb3dzIFhQLiIKICAgIExhbmdTdHJpbmcgREVTQ19TZWNUb21jYXROYXRpdmUgJHtMQU5HX0VOR0xJU0h9ICJEb3dubG9hZHMgYW5kIGluc3RhbGxzIFRvbWNhdCBuYXRpdmUgLmRsbCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBzY2FsYWJpbGl0eSBpbiBwcm9kdWN0aW9uIGVudmlyb25tZW50cy4iCjsgICAgTGFuZ1N0cmluZyBERVNDX1NlY1RvbWNhdFNvdXJjZSAke0xBTkdfRU5HTElTSH0gIkluc3RhbGwgdGhlIFRvbWNhdCBzb3VyY2UgY29kZS4iCiAgICBMYW5nU3RyaW5nIERFU0NfU2VjTWVudSAke0xBTkdfRU5HTElTSH0gIkNyZWF0ZSBhIFN0YXJ0IE1lbnUgcHJvZ3JhbSBncm91cCBmb3IgVG9tY2F0LiIKICAgIExhbmdTdHJpbmcgREVTQ19TZWNEb2NzICR7TEFOR19FTkdMSVNIfSAiSW5zdGFsbCB0aGUgVG9tY2F0IGRvY3VtZW50YXRpb24gYnVuZGxlLiBUaGlzIGluY2x1ZGUgZG9jdW1lbnRhdGlvbiBvbiB0aGUgc2VydmxldCBjb250YWluZXIgYW5kIGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMsIG9uIHRoZSBKYXNwZXIgSlNQIHBhZ2UgY29tcGlsZXIsIGFzIHdlbGwgYXMgb24gdGhlIG5hdGl2ZSB3ZWJzZXJ2ZXIgY29ubmVjdG9ycy4iCiAgICBMYW5nU3RyaW5nIERFU0NfU2VjRXhhbXBsZXMgJHtMQU5HX0VOR0xJU0h9ICJJbnN0YWxscyBzb21lIGV4YW1wbGVzIHdlYiBhcHBsaWNhdGlvbnMuIgogICAgTGFuZ1N0cmluZyBERVNDX1NlY0FkbWluICR7TEFOR19FTkdMSVNIfSAiSW5zdGFsbHMgdGhlIGFkbWluaXN0cmF0aW9uIHdlYiBhcHBsaWNhdGlvbi4iOwo7ICAgIExhbmdTdHJpbmcgREVTQ19TZWNXZWJhcHBzICR7TEFOR19FTkdMSVNIfSAiSW5zdGFsbHMgb3RoZXIgdXRpbGl0eSB3ZWIgYXBwbGljYXRpb25zIChXZWJEQVYsIGJhbGFuY2VyLCBldGMpLiIKOyAgICBMYW5nU3RyaW5nIERFU0NfU2VjQ29tcGF0ICR7TEFOR19FTkdMSVNIfSAiSW5zdGFsbHMgSmF2YTKZIGNvbXBhdGliaWxpdHkgcGFja2FnZS4gVGhpcyByZWxlYXNlIG9mIEFwYWNoZSBUb21jYXQgd2FzIHBhY2thZ2VkIHRvIHJ1biBvbiBKMlNFIDUuMCBvciBsYXRlci4gSXQgY2FuIGJlIHJ1biBvbiBlYXJsaWVyIEpWTXMgYnkgaW5zdGFsbG5nIHRoaXMgcGFja2FnZS4iCgogIDtMYW5ndWFnZQogICFpbnNlcnRtYWNybyBNVUlfTEFOR1VBR0UgRW5nbGlzaAoKICA7Rm9sZGVyLXNlbGVjdCBkaWFsb2cKICBJbnN0YWxsRGlyICIkUFJPR1JBTUZJTEVTXEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uXFRvbWNhdCA1LjUiCgogIDtJbnN0YWxsIHR5cGVzCiAgSW5zdFR5cGUgTm9ybWFsCiAgSW5zdFR5cGUgTWluaW11bQogIEluc3RUeXBlIEZ1bGwKCiAgOyBNYWluIHJlZ2lzdHJ5IGtleQogIEluc3RhbGxEaXJSZWdLZXkgSEtMTSAiU09GVFdBUkVcQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb25cVG9tY2F0XDUuNSIgIiIKCiAgIWluc2VydG1hY3JvIE1VSV9SRVNFUlZFRklMRV9JTlNUQUxMT1BUSU9OUwogIFJlc2VydmVGaWxlICJqdm0uaW5pIgogIFJlc2VydmVGaWxlICJjb25maWcuaW5pIgoKOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjtJbnN0YWxsZXIgU2VjdGlvbnMKClN1YlNlY3Rpb24gIlRvbWNhdCIgU2VjVG9tY2F0CgpTZWN0aW9uICJDb3JlIiBTZWNUb21jYXRDb3JlCgogIFNlY3Rpb25JbiAxIDIgMyBSTwoKICBJZlNpbGVudCArMiAwCiAgQ2FsbCBjaGVja0p2bQoKICBTZXRPdXRQYXRoICRJTlNURElSCiAgRmlsZSB0b21jYXQuaWNvCiAgRmlsZSBMSUNFTlNFCiAgRmlsZSAvciBjb21tb24KICBGaWxlIC9ub25mYXRhbCAvciBzaGFyZWQKICBGaWxlIC9ub25mYXRhbCAvciBsb2dzCiAgRmlsZSAvbm9uZmF0YWwgL3Igd29yawogIEZpbGUgL25vbmZhdGFsIC9yIHRlbXAKICBTZXRPdXRQYXRoICRJTlNURElSXGJpbgogIEZpbGUgYmluXGJvb3RzdHJhcC5qYXIKICBGaWxlIGJpblxjb21tb25zLWxvZ2dpbmctYXBpLmphcgogIEZpbGUgYmluXHRvbWNhdC1qdWxpLmphcgogIEZpbGUgYmluXCouZXhlCiAgU2V0T3V0UGF0aCAkSU5TVERJUlxjb25mCiAgRmlsZSBjb25mXCouKgogIFNldE91dFBhdGggJElOU1RESVJcc2VydmVyCiAgRmlsZSAvciBzZXJ2ZXJcbGliCiAgRmlsZSAvbm9uZmF0YWwgL3Igc2VydmVyXGNsYXNzZXMKICBTZXRPdXRQYXRoICRJTlNURElSXHNlcnZlclx3ZWJhcHBzCiAgRmlsZSAvciBzZXJ2ZXJcd2ViYXBwc1xtYW5hZ2VyCiAgRmlsZSAvciBzZXJ2ZXJcd2ViYXBwc1xob3N0LW1hbmFnZXIKICBTZXRPdXRQYXRoICRJTlNURElSXHdlYmFwcHMKICBGaWxlIC9yIHdlYmFwcHNcUk9PVAogIFNldE91dFBhdGggJElOU1RESVJcY29uZlxDYXRhbGluYVxsb2NhbGhvc3QKICBGaWxlIGNvbmZcQ2F0YWxpbmFcbG9jYWxob3N0XG1hbmFnZXIueG1sCiAgRmlsZSBjb25mXENhdGFsaW5hXGxvY2FsaG9zdFxob3N0LW1hbmFnZXIueG1sCgogIENhbGwgY29uZmlndXJlCiAgQ2FsbCBmaW5kSmF2YVBhdGgKICBQb3AgJDIKCiAgSWZTaWxlbnQgKzIgMAogICFpbnNlcnRtYWNybyBNVUlfSU5TVEFMTE9QVElPTlNfUkVBRCAkMiAianZtLmluaSIgIkZpZWxkIDIiICJTdGF0ZSIKCiAgU3RyQ3B5ICIkSmF2YUhvbWUiICQyCiAgQ2FsbCBmaW5kSlZNUGF0aAogIFBvcCAkMgoKICBEZXRhaWxQcmludCAiVXNpbmcgSnZtOiAkMiIKCiAgSW5zdGFsbFJldHJ5OgogIENsZWFyRXJyb3JzCiAgbnNFeGVjOjpFeGVjVG9Mb2cgJyIkSU5TVERJUlxiaW5cdG9tY2F0NS5leGUiIC8vSVMvL1RvbWNhdDUgLS1EaXNwbGF5TmFtZSAiQXBhY2hlIFRvbWNhdCIgLS1EZXNjcmlwdGlvbiAiQXBhY2hlIFRvbWNhdCBAVkVSU0lPTkAgU2VydmVyIC0gaHR0cDovL3RvbWNhdC5hcGFjaGUub3JnLyIgLS1Mb2dQYXRoICIkSU5TVERJUlxsb2dzIiAtLUluc3RhbGwgIiRJTlNURElSXGJpblx0b21jYXQ1LmV4ZSIgLS1Kdm0gIiQyIiAtLVN0YXJ0UGF0aCAiJElOU1RESVIiIC0tU3RvcFBhdGggIiRJTlNURElSIicKICBQb3AgJDAKICBTdHJDbXAgJDAgIjAiIEluc3RhbGxPawogICAgTWVzc2FnZUJveCBNQl9BQk9SVFJFVFJZSUdOT1JFfE1CX0lDT05TVE9QIFwKICAgICAgIkZhaWxlZCB0byBpbnN0YWxsIFRvbWNhdDUgc2VydmljZS4kXHIkXG5DaGVjayB5b3VyIHNldHRpbmdzIGFuZCBwZXJtaXNzaW9ucyRcciRcbklnbm9yZSBhbmQgY29udGludWUgYW55d2F5IChub3QgcmVjb21tZW5kZWQpPyIgXAogICAgICAgL1NEIElESUdOT1JFIElESUdOT1JFIEluc3RhbGxPayBJRFJFVFJZIEluc3RhbGxSZXRyeQogIFF1aXQKICBJbnN0YWxsT2s6CiAgQ2xlYXJFcnJvcnMKClNlY3Rpb25FbmQKClNlY3Rpb24gIlNlcnZpY2UgU3RhcnR1cCIgU2VjVG9tY2F0U2VydmljZQoKICBTZWN0aW9uSW4gMwoKICBJZlNpbGVudCAwICszCiAgQ2FsbCBmaW5kSmF2YVBhdGgKICBQb3AgJDIKCiAgSWZTaWxlbnQgKzIgMAogICFpbnNlcnRtYWNybyBNVUlfSU5TVEFMTE9QVElPTlNfUkVBRCAkMiAianZtLmluaSIgIkZpZWxkIDIiICJTdGF0ZSIKCiAgU3RyQ3B5ICIkSmF2YUhvbWUiICQyCiAgQ2FsbCBmaW5kSlZNUGF0aAogIFBvcCAkMgoKICBuc0V4ZWM6OkV4ZWNUb0xvZyAnIiRJTlNURElSXGJpblx0b21jYXQ1LmV4ZSIgLy9VUy8vVG9tY2F0NSAtLVN0YXJ0dXAgYXV0bycKICA7IEJhaGF2ZSBsaWtlIEFwYWNoZSBIdHRwZCAocHV0IHRoZSBpY29uIGluIHRyeSBvbiBsb2dpbikKICBXcml0ZVJlZ1N0ciBIS0xNICJTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxSdW4iICJBcGFjaGVUb21jYXRNb25pdG9yIiAnIiRJTlNURElSXGJpblx0b21jYXQ1dy5leGUiIC8vTVMvL1RvbWNhdDUnCgogIENsZWFyRXJyb3JzCgpTZWN0aW9uRW5kCgpTZWN0aW9uICJOYXRpdmUiIFNlY1RvbWNhdE5hdGl2ZQoKICBTZWN0aW9uSW4gMwoKICBOU0lTZGw6OmRvd25sb2FkIC9USU1FT1VUPTMwMDAwIGh0dHA6Ly90b21jYXQuaGVhbmV0LmllL25hdGl2ZS8xLjEuNC9iaW5hcmllcy93aW4zMi90Y25hdGl2ZS0xLmRsbCAkSU5TVERJUlxiaW5cdGNuYXRpdmUtMS5kbGwKICBQb3AgJDAKICBTdHJDbXAgJDAgc3VjY2VzcyBzdWNjZXNzCiAgICBTZXREZXRhaWxzVmlldyBzaG93CiAgICBEZXRhaWxQcmludCAiZG93bmxvYWQgZmFpbGVkIGZyb20gaHR0cDovL3RvbWNhdC5oZWFuZXQuaWUvbmF0aXZlLzEuMS40L2JpbmFyaWVzL3dpbjMyL3RjbmF0aXZlLTEuZGxsOiAkMCIKICBzdWNjZXNzOgoKICBDbGVhckVycm9ycwoKU2VjdGlvbkVuZAoKO1NlY3Rpb24gIlNvdXJjZSBDb2RlIiBTZWNUb21jYXRTb3VyY2UKOwo7ICBTZWN0aW9uSW4gMwo7ICBTZXRPdXRQYXRoICRJTlNURElSCjsgIEZpbGUgL3Igc3JjCjsKO1NlY3Rpb25FbmQKClN1YlNlY3Rpb25FbmQKClNlY3Rpb24gIlN0YXJ0IE1lbnUgSXRlbXMiIFNlY01lbnUKCiAgU2VjdGlvbkluIDEgMiAzCgogICFpbnNlcnRtYWNybyBNVUlfSU5TVEFMTE9QVElPTlNfUkVBRCAkMiAianZtLmluaSIgIkZpZWxkIDIiICJTdGF0ZSIKCiAgU2V0T3V0UGF0aCAiJFNNUFJPR1JBTVNcQXBhY2hlIFRvbWNhdCA1LjUiCgogIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1xBcGFjaGUgVG9tY2F0IDUuNVxUb21jYXQgSG9tZSBQYWdlLmxuayIgXAogICAgICAgICAgICAgICAgICJodHRwOi8vdG9tY2F0LmFwYWNoZS5vcmcvIgoKICBDcmVhdGVTaG9ydEN1dCAiJFNNUFJPR1JBTVNcQXBhY2hlIFRvbWNhdCA1LjVcV2VsY29tZS5sbmsiIFwKICAgICAgICAgICAgICAgICAiaHR0cDovLzEyNy4wLjAuMTokUjAvIgoKOyAgSWZGaWxlRXhpc3RzICIkSU5TVERJUlxzZXJ2ZXJcd2ViYXBwc1xhZG1pbiIgMCBOb0FkbWluQXBwCjsKOyAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXEFwYWNoZSBUb21jYXQgNS41XFRvbWNhdCBBZG1pbmlzdHJhdGlvbi5sbmsiIFwKOyAgICAgICAgICAgICAgICAgImh0dHA6Ly8xMjcuMC4wLjE6JFIwL2FkbWluLyIKO05vQWRtaW5BcHA6CgogIElmRmlsZUV4aXN0cyAiJElOU1RESVJcc2VydmVyXHdlYmFwcHNcbWFuYWdlciIgMCBOb01hbmFnZXJBcHAKCiAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXEFwYWNoZSBUb21jYXQgNS41XFRvbWNhdCBNYW5hZ2VyLmxuayIgXAogICAgICAgICAgICAgICAgICJodHRwOi8vMTI3LjAuMC4xOiRSMC9tYW5hZ2VyL2h0bWwiCgpOb01hbmFnZXJBcHA6CgogIElmRmlsZUV4aXN0cyAiJElOU1RESVJcd2ViYXBwc1x3ZWJhcHBzXHRvbWNhdC1kb2NzIiAwIE5vRG9jdW1lbnRhaW9uCgogIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1xBcGFjaGUgVG9tY2F0IDUuNVxUb21jYXQgRG9jdW1lbnRhdGlvbi5sbmsiIFwKICAgICAgICAgICAgICAgICAiJElOU1RESVJcd2ViYXBwc1x0b21jYXQtZG9jc1xpbmRleC5odG1sIgoKTm9Eb2N1bWVudGFpb246CgogIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1xBcGFjaGUgVG9tY2F0IDUuNVxVbmluc3RhbGwgVG9tY2F0IDUuNS5sbmsiIFwKICAgICAgICAgICAgICAgICAiJElOU1RESVJcVW5pbnN0YWxsLmV4ZSIKCiAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXEFwYWNoZSBUb21jYXQgNS41XFRvbWNhdCA1LjUgUHJvZ3JhbSBEaXJlY3RvcnkubG5rIiBcCiAgICAgICAgICAgICAgICAgIiRJTlNURElSIgoKICBDcmVhdGVTaG9ydEN1dCAiJFNNUFJPR1JBTVNcQXBhY2hlIFRvbWNhdCA1LjVcTW9uaXRvciBUb21jYXQubG5rIiBcCiAgICAgICAgICAgICAgICAgIiRJTlNURElSXGJpblx0b21jYXQ1dy5leGUiIFwKICAgICAgICAgICAgICAgICAnLy9NUy8vVG9tY2F0NScgXAogICAgICAgICAgICAgICAgICIkSU5TVERJUlx0b21jYXQuaWNvIiAwIFNXX1NIT1dOT1JNQUwKCiAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXEFwYWNoZSBUb21jYXQgNS41XENvbmZpZ3VyZSBUb21jYXQubG5rIiBcCiAgICAgICAgICAgICAgICAgIiRJTlNURElSXGJpblx0b21jYXQ1dy5leGUiIFwKICAgICAgICAgICAgICAgICAnLy9FUy8vVG9tY2F0NScgXAogICAgICAgICAgICAgICAgICIkSU5TVERJUlx0b21jYXQuaWNvIiAwIFNXX1NIT1dOT1JNQUwKClNlY3Rpb25FbmQKClNlY3Rpb24gIkRvY3VtZW50YXRpb24iIFNlY0RvY3MKCiAgU2VjdGlvbkluIDEgMwogIFNldE91dFBhdGggJElOU1RESVJcd2ViYXBwcwogIEZpbGUgL3Igd2ViYXBwc1x0b21jYXQtZG9jcwoKU2VjdGlvbkVuZAoKU2VjdGlvbiAiRXhhbXBsZXMiIFNlY0V4YW1wbGVzCgogIFNlY3Rpb25JbiAzCgogIFNldE92ZXJ3cml0ZSBvbgogIFNldE91dFBhdGggJElOU1RESVJcd2ViYXBwcwogIEZpbGUgL3Igd2ViYXBwc1xqc3AtZXhhbXBsZXMKICBGaWxlIC9yIHdlYmFwcHNcc2VydmxldHMtZXhhbXBsZXMKClNlY3Rpb25FbmQKCjtTZWN0aW9uICJBZG1pbmlzdHJhdGlvbiIgU2VjQWRtaW4KOwo7ICBTZWN0aW9uSW4gMwo7CjsgIFNldE91dFBhdGggJElOU1RESVJcc2VydmVyXHdlYmFwcHMKOyAgRmlsZSAvciBzZXJ2ZXJcd2ViYXBwc1xhZG1pbgo7ICBTZXRPdXRQYXRoICRJTlNURElSXGNvbmZcQ2F0YWxpbmFcbG9jYWxob3N0CjsgIEZpbGUgY29uZlxDYXRhbGluYVxsb2NhbGhvc3RcYWRtaW4ueG1sCjsKO1NlY3Rpb25FbmQKClNlY3Rpb24gIldlYmFwcHMiIFNlY1dlYmFwcHMKCiAgU2VjdGlvbkluIDMKCiAgU2V0T3V0UGF0aCAkSU5TVERJUlx3ZWJhcHBzCiAgRmlsZSAvciB3ZWJhcHBzXGJhbGFuY2VyCiAgRmlsZSAvciB3ZWJhcHBzXHdlYmRhdgoKU2VjdGlvbkVuZAoKO1NlY3Rpb24gIkNvbXBhdGliaWxpdHkiIFNlY0NvbXBhdAo7CjsgIFNldE91dFBhdGggJElOU1RESVIKOyAgRmlsZSAvb25hbWU9YmluXGpteC5qYXIgLi5cY29tcGF0XGJpblxqbXguamFyCjsgIEZpbGUgL29uYW1lPWNvbW1vblxlbmRvcnNlZFx4ZXJjZXNJbXBsLmphciAuLlxjb21wYXRcY29tbW9uXGVuZG9yc2VkXHhlcmNlc0ltcGwuamFyCjsgIEZpbGUgL29uYW1lPWNvbW1vblxlbmRvcnNlZFx4bWwtYXBpcy5qYXIgIC4uXGNvbXBhdFxjb21tb25cZW5kb3JzZWRceG1sLWFwaXMuamFyCjsKO1NlY3Rpb25FbmQKClNlY3Rpb24gLXBvc3QKICBuc0V4ZWM6OkV4ZWNUb0xvZyAnIiRJTlNURElSXGJpblx0b21jYXQ1LmV4ZSIgLy9VUy8vVG9tY2F0NSAtLUNsYXNzcGF0aCAiJElOU1RESVJcYmluXGJvb3RzdHJhcC5qYXIiIC0tU3RhcnRDbGFzcyBvcmcuYXBhY2hlLmNhdGFsaW5hLnN0YXJ0dXAuQm9vdHN0cmFwIC0tU3RvcENsYXNzIG9yZy5hcGFjaGUuY2F0YWxpbmEuc3RhcnR1cC5Cb290c3RyYXAgLS1TdGFydFBhcmFtcyBzdGFydCAtLVN0b3BQYXJhbXMgc3RvcCAgLS1TdGFydE1vZGUganZtIC0tU3RvcE1vZGUganZtJwogIG5zRXhlYzo6RXhlY1RvTG9nICciJElOU1RESVJcYmluXHRvbWNhdDUuZXhlIiAvL1VTLy9Ub21jYXQ1IC0tSnZtT3B0aW9ucyAiLURjYXRhbGluYS5ob21lPSRJTlNURElSIy1EY2F0YWxpbmEuYmFzZT0kSU5TVERJUiMtRGphdmEuZW5kb3JzZWQuZGlycz0kSU5TVERJUlxjb21tb25cZW5kb3JzZWQjLURqYXZhLmlvLnRtcGRpcj0kSU5TVERJUlx0ZW1wIy1EamF2YS51dGlsLmxvZ2dpbmcubWFuYWdlcj1vcmcuYXBhY2hlLmp1bGkuQ2xhc3NMb2FkZXJMb2dNYW5hZ2VyIy1EamF2YS51dGlsLmxvZ2dpbmcuY29uZmlnLmZpbGU9JElOU1RESVJcY29uZlxsb2dnaW5nLnByb3BlcnRpZXMiIC0tU3RkT3V0cHV0IGF1dG8gLS1TdGRFcnJvciBhdXRvJwoKICBXcml0ZVVuaW5zdGFsbGVyICIkSU5TVERJUlxVbmluc3RhbGwuZXhlIgoKICBXcml0ZVJlZ1N0ciBIS0xNICJTT0ZUV0FSRVxBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvblxUb21jYXRcNS41IiAiSW5zdGFsbFBhdGgiICRJTlNURElSCiAgV3JpdGVSZWdTdHIgSEtMTSAiU09GVFdBUkVcQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb25cVG9tY2F0XDUuNSIgIlZlcnNpb24iIEBWRVJTSU9OQAogIFdyaXRlUmVnU3RyIEhLTE0gIlNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFxBcGFjaGUgVG9tY2F0IDUuNSIgXAogICAgICAgICAgICAgICAgICAgIkRpc3BsYXlOYW1lIiAiQXBhY2hlIFRvbWNhdCA1LjUgKHJlbW92ZSBvbmx5KSIKICBXcml0ZVJlZ1N0ciBIS0xNICJTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcQXBhY2hlIFRvbWNhdCA1LjUiIFwKICAgICAgICAgICAgICAgICAgICJVbmluc3RhbGxTdHJpbmciICciJElOU1RESVJcVW5pbnN0YWxsLmV4ZSInCgpTZWN0aW9uRW5kCgpGdW5jdGlvbiAub25Jbml0CgogIDtFeHRyYWN0IEluc3RhbGwgT3B0aW9ucyBJTkkgRmlsZXMKICAhaW5zZXJ0bWFjcm8gTVVJX0lOU1RBTExPUFRJT05TX0VYVFJBQ1QgImNvbmZpZy5pbmkiCiAgIWluc2VydG1hY3JvIE1VSV9JTlNUQUxMT1BUSU9OU19FWFRSQUNUICJqdm0uaW5pIgoKRnVuY3Rpb25FbmQKCkZ1bmN0aW9uIFNldENob29zZUpWTQogICFpbnNlcnRtYWNybyBNVUlfSEVBREVSX1RFWFQgIiQoVEVYVF9KVk1fVElUTEUpIiAiJChURVhUX0pWTV9TVUJUSVRMRSkiCiAgQ2FsbCBmaW5kSmF2YVBhdGgKICBQb3AgJDMKICAhaW5zZXJ0bWFjcm8gTVVJX0lOU1RBTExPUFRJT05TX1dSSVRFICJqdm0uaW5pIiAiRmllbGQgMiIgIlN0YXRlIiAkMwogICFpbnNlcnRtYWNybyBNVUlfSU5TVEFMTE9QVElPTlNfRElTUExBWSAianZtLmluaSIKRnVuY3Rpb25FbmQKCkZ1bmN0aW9uIFNldENvbmZpZ3VyYXRpb24KICAhaW5zZXJ0bWFjcm8gTVVJX0hFQURFUl9URVhUICIkKFRFWFRfQ09ORl9USVRMRSkiICIkKFRFWFRfQ09ORl9TVUJUSVRMRSkiCiAgIWluc2VydG1hY3JvIE1VSV9JTlNUQUxMT1BUSU9OU19ESVNQTEFZICJjb25maWcuaW5pIgpGdW5jdGlvbkVuZAoKRnVuY3Rpb24gVm9pZApGdW5jdGlvbkVuZAoKOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjtEZXNjcmlwdGlvbnMKCiFpbnNlcnRtYWNybyBNVUlfRlVOQ1RJT05fREVTQ1JJUFRJT05fQkVHSU4KICAhaW5zZXJ0bWFjcm8gTVVJX0RFU0NSSVBUSU9OX1RFWFQgJHtTZWNUb21jYXR9ICQoREVTQ19TZWNUb21jYXQpCiAgIWluc2VydG1hY3JvIE1VSV9ERVNDUklQVElPTl9URVhUICR7U2VjVG9tY2F0Q29yZX0gJChERVNDX1NlY1RvbWNhdENvcmUpCiAgIWluc2VydG1hY3JvIE1VSV9ERVNDUklQVElPTl9URVhUICR7U2VjVG9tY2F0U2VydmljZX0gJChERVNDX1NlY1RvbWNhdFNlcnZpY2UpCiAgIWluc2VydG1hY3JvIE1VSV9ERVNDUklQVElPTl9URVhUICR7U2VjVG9tY2F0TmF0aXZlfSAkKERFU0NfU2VjVG9tY2F0TmF0aXZlKQo7ICAhaW5zZXJ0bWFjcm8gTVVJX0RFU0NSSVBUSU9OX1RFWFQgJHtTZWNUb21jYXRTb3VyY2V9ICQoREVTQ19TZWNUb21jYXRTb3VyY2UpCjsgICFpbnNlcnRtYWNybyBNVUlfREVTQ1JJUFRJT05fVEVYVCAke1NlY0NvbXBhdH0gJChERVNDX1NlY0NvbXBhdCkKICAhaW5zZXJ0bWFjcm8gTVVJX0RFU0NSSVBUSU9OX1RFWFQgJHtTZWNNZW51fSAkKERFU0NfU2VjTWVudSkKICAhaW5zZXJ0bWFjcm8gTVVJX0RFU0NSSVBUSU9OX1RFWFQgJHtTZWNEb2NzfSAkKERFU0NfU2VjRG9jcykKICAhaW5zZXJ0bWFjcm8gTVVJX0RFU0NSSVBUSU9OX1RFWFQgJHtTZWNFeGFtcGxlc30gJChERVNDX1NlY0V4YW1wbGVzKQo7ICAhaW5zZXJ0bWFjcm8gTVVJX0RFU0NSSVBUSU9OX1RFWFQgJHtTZWNBZG1pbn0gJChERVNDX1NlY0FkbWluKQogICFpbnNlcnRtYWNybyBNVUlfREVTQ1JJUFRJT05fVEVYVCAke1NlY1dlYmFwcHN9ICQoREVTQ19TZWNXZWJhcHBzKQohaW5zZXJ0bWFjcm8gTVVJX0ZVTkNUSU9OX0RFU0NSSVBUSU9OX0VORAoKCjsgPT09PT09PT09PT09PT09PT09PT09CjsgQ2hlY2tVc2VyVHlwZSBGdW5jdGlvbgo7ID09PT09PT09PT09PT09PT09PT09PQo7CjsgQ2hlY2sgdGhlIHVzZXIgdHlwZSwgYW5kIHdhcm4gaWYgaXQncyBub3QgYW4gYWRtaW5pc3RyYXRvci4KOyBUYWtlbiBmcm9tIEV4YW1wbGVzL1VzZXJJbmZvIHRoYXQgc2hpcHMgd2l0aCBOU0lTLgpGdW5jdGlvbiBDaGVja1VzZXJUeXBlCiAgQ2xlYXJFcnJvcnMKICBVc2VySW5mbzo6R2V0TmFtZQogIElmRXJyb3JzIFdpbjl4CiAgUG9wICQwCiAgVXNlckluZm86OkdldEFjY291bnRUeXBlCiAgUG9wICQxCiAgU3RyQ21wICQxICJBZG1pbiIgMCArMwogICAgOyBUaGlzIGlzIE9LLCBkbyBub3RoaW5nCiAgICBHb3RvIGRvbmUKCiAgICBNZXNzYWdlQm94IE1CX09LfE1CX0lDT05FWENMQU1BVElPTiAnTm90ZTogdGhlIGN1cnJlbnQgdXNlciBpcyBub3QgYW4gYWRtaW5pc3RyYXRvci4gXAogICAgICAgICAgICAgICBUbyBydW4gVG9tY2F0IGFzIGEgV2luZG93cyBzZXJ2aWNlLCB5b3UgbXVzdCBiZSBhbiBhZG1pbmlzdHJhdG9yLiBcCiAgICAgICAgICAgICAgIFlvdSBjYW4gc3RpbGwgcnVuIFRvbWNhdCBmcm9tIHRoZSBjb21tYW5kLWxpbmUgYXMgdGhpcyB0eXBlIG9mIHVzZXIuJwogICAgR290byBkb25lCgogIFdpbjl4OgogICAgIyBUaGlzIG9uZSBtZWFucyB5b3UgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0IGFkbWluIG9yCiAgICAjIG5vdCBhZG1pbiBiZWNhdXNlIFdpbmRvd3MgOXggZG9lc24ndCBlaXRoZXIKICAgIE1lc3NhZ2VCb3ggTUJfT0sgIkVycm9yISBUaGlzIERMTCBjYW4ndCBydW4gdW5kZXIgV2luZG93cyA5eCEiCgogIGRvbmU6CkZ1bmN0aW9uRW5kCgoKOyA9PT09PT09PT09PT09PT09PT09PT0KOyBGaW5kSmF2YVBhdGggRnVuY3Rpb24KOyA9PT09PT09PT09PT09PT09PT09PT0KOwo7IEZpbmQgdGhlIEpBVkFfSE9NRSB1c2VkIG9uIHRoZSBzeXN0ZW0sIGFuZCBwdXQgdGhlIHJlc3VsdCBvbiB0aGUgdG9wIG9mIHRoZQo7IHN0YWNrCjsgV2lsbCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGlmIHRoZSBwYXRoIGNhbm5vdCBiZSBkZXRlcm1pbmVkCjsKRnVuY3Rpb24gZmluZEphdmFQYXRoCgogIDtDbGVhckVycm9ycwoKICA7UmVhZEVudlN0ciAkMSBKQVZBX0hPTUUKCiAgO0lmRXJyb3JzIDAgRm91bmRKREsKCiAgQ2xlYXJFcnJvcnMKCiAgUmVhZFJlZ1N0ciAkMiBIS0xNICJTT0ZUV0FSRVxKYXZhU29mdFxKYXZhIFJ1bnRpbWUgRW52aXJvbm1lbnQiICJDdXJyZW50VmVyc2lvbiIKICBSZWFkUmVnU3RyICQxIEhLTE0gIlNPRlRXQVJFXEphdmFTb2Z0XEphdmEgUnVudGltZSBFbnZpcm9ubWVudFwkMiIgIkphdmFIb21lIgogIFJlYWRSZWdTdHIgJDMgSEtMTSAiU09GVFdBUkVcSmF2YVNvZnRcSmF2YSBSdW50aW1lIEVudmlyb25tZW50XCQyIiAiUnVudGltZUxpYiIKCiAgO0ZvdW5kSkRLOgoKICBJZkVycm9ycyAwIE5vRXJyb3JzCiAgU3RyQ3B5ICQxICIiCgpOb0Vycm9yczoKCiAgQ2xlYXJFcnJvcnMKCiAgOyBQdXQgdGhlIHJlc3VsdCBpbiB0aGUgc3RhY2sKICBQdXNoICQxCgpGdW5jdGlvbkVuZAoKCjsgPT09PT09PT09PT09PT09PT09PT0KOyBGaW5kSlZNUGF0aCBGdW5jdGlvbgo7ID09PT09PT09PT09PT09PT09PT09CjsKOyBGaW5kIHRoZSBmdWxsIEpWTSBwYXRoLCBhbmQgcHV0IHRoZSByZXN1bHQgb24gdG9wIG9mIHRoZSBzdGFjawo7IEFyZ3VtZW50OiBKVk0gYmFzZSBwYXRoIChyZXN1bHQgb2YgZmluZEphdmFQYXRoKQo7IFdpbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBpZiB0aGUgcGF0aCBjYW5ub3QgYmUgZGV0ZXJtaW5lZAo7CkZ1bmN0aW9uIGZpbmRKVk1QYXRoCgogIENsZWFyRXJyb3JzCiAgCiAgO1N0ZXAgb25lOiBJcyB0aGlzIGEgSlJFIHBhdGggKFByb2dyYW0gRmlsZXNcSmF2YVxYWFgpCiAgU3RyQ3B5ICQxICIkSmF2YUhvbWUiCiAgCiAgU3RyQ3B5ICQyICIkMVxiaW5caG90c3BvdFxqdm0uZGxsIgogIElmRmlsZUV4aXN0cyAiJDIiIEZvdW5kSnZtRGxsCiAgU3RyQ3B5ICQyICIkMVxiaW5cc2VydmVyXGp2bS5kbGwiCiAgSWZGaWxlRXhpc3RzICIkMiIgRm91bmRKdm1EbGwKICBTdHJDcHkgJDIgIiQxXGJpblxjbGllbnRcanZtLmRsbCIgIAogIElmRmlsZUV4aXN0cyAiJDIiIEZvdW5kSnZtRGxsCiAgU3RyQ3B5ICQyICIkMVxiaW5cY2xhc3NpY1xqdm0uZGxsIgogIElmRmlsZUV4aXN0cyAiJDIiIEZvdW5kSnZtRGxsCgogIDtTdGVwIHR3bzogSXMgdGhpcyBhIEpESyBwYXRoIChQcm9ncmFtIEZpbGVzXFhYWFxqcmUpCiAgU3RyQ3B5ICQxICIkSmF2YUhvbWVcanJlIgogIAogIFN0ckNweSAkMiAiJDFcYmluXGhvdHNwb3RcanZtLmRsbCIKICBJZkZpbGVFeGlzdHMgIiQyIiBGb3VuZEp2bURsbAogIFN0ckNweSAkMiAiJDFcYmluXHNlcnZlclxqdm0uZGxsIgogIElmRmlsZUV4aXN0cyAiJDIiIEZvdW5kSnZtRGxsCiAgU3RyQ3B5ICQyICIkMVxiaW5cY2xpZW50XGp2bS5kbGwiICAKICBJZkZpbGVFeGlzdHMgIiQyIiBGb3VuZEp2bURsbAogIFN0ckNweSAkMiAiJDFcYmluXGNsYXNzaWNcanZtLmRsbCIKICBJZkZpbGVFeGlzdHMgIiQyIiBGb3VuZEp2bURsbAoKICBDbGVhckVycm9ycwogIDtTdGVwIHRyZWU6IFJlYWQgZGVmYXVsdHMgZnJvbSByZWdpc3RyeQogIAogIFJlYWRSZWdTdHIgJDEgSEtMTSAiU09GVFdBUkVcSmF2YVNvZnRcSmF2YSBSdW50aW1lIEVudmlyb25tZW50IiAiQ3VycmVudFZlcnNpb24iCiAgUmVhZFJlZ1N0ciAkMiBIS0xNICJTT0ZUV0FSRVxKYXZhU29mdFxKYXZhIFJ1bnRpbWUgRW52aXJvbm1lbnRcJDEiICJSdW50aW1lTGliIgogIAogIElmRXJyb3JzIDAgRm91bmRKdm1EbGwKICBTdHJDcHkgJDIgIiIKCiAgRm91bmRKdm1EbGw6CiAgQ2xlYXJFcnJvcnMKCiAgOyBQdXQgdGhlIHJlc3VsdCBpbiB0aGUgc3RhY2sKICBQdXNoICQyCgpGdW5jdGlvbkVuZAoKCjsgPT09PT09PT09PT09PT09PT09PT0KOyBDaGVja0p2bSBGdW5jdGlvbgo7ID09PT09PT09PT09PT09PT09PT09CjsKRnVuY3Rpb24gY2hlY2tKdm0KCiAgIWluc2VydG1hY3JvIE1VSV9JTlNUQUxMT1BUSU9OU19SRUFEICQzICJqdm0uaW5pIiAiRmllbGQgMiIgIlN0YXRlIgogIElmRmlsZUV4aXN0cyAiJDNcYmluXGphdmEuZXhlIiBOb0Vycm9yczEKICBNZXNzYWdlQm94IE1CX09LfE1CX0lDT05TVE9QICJObyBKYXZhIFZpcnR1YWwgTWFjaGluZSBmb3VuZCBpbiBmb2xkZXI6JFxyJFxuJDMiCiAgUXVpdApOb0Vycm9yczE6CiAgU3RyQ3B5ICIkSmF2YUhvbWUiICQzCiAgQ2FsbCBmaW5kSlZNUGF0aAogIFBvcCAkNAogIFN0ckNtcCAkNCAiIiAwIE5vRXJyb3JzMgogIE1lc3NhZ2VCb3ggTUJfT0t8TUJfSUNPTlNUT1AgIk5vIEphdmEgVmlydHVhbCBNYWNoaW5lIGZvdW5kIGluIGZvbGRlcjokXHIkXG4kMyIKICBRdWl0Ck5vRXJyb3JzMjoKCkZ1bmN0aW9uRW5kCgo7ID09PT09PT09PT09PT09PT09PQo7IENvbmZpZ3VyZSBGdW5jdGlvbgo7ID09PT09PT09PT09PT09PT09PQo7CjsgRGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBkaWFsb2cgYm94ZXMsIHJlYWQgdGhlIHZhbHVlcyBlbnRlcmVkIGJ5IHRoZSB1c2VyLAo7IGFuZCBidWlsZCB0aGUgY29uZmlndXJhdGlvbiBmaWxlcwo7CkZ1bmN0aW9uIGNvbmZpZ3VyZQoKICAhaW5zZXJ0bWFjcm8gTVVJX0lOU1RBTExPUFRJT05TX1JFQUQgJFIwICJjb25maWcuaW5pIiAiRmllbGQgMiIgIlN0YXRlIgogICFpbnNlcnRtYWNybyBNVUlfSU5TVEFMTE9QVElPTlNfUkVBRCAkUjEgImNvbmZpZy5pbmkiICJGaWVsZCA1IiAiU3RhdGUiCiAgIWluc2VydG1hY3JvIE1VSV9JTlNUQUxMT1BUSU9OU19SRUFEICRSMiAiY29uZmlnLmluaSIgIkZpZWxkIDciICJTdGF0ZSIKCiAgSWZTaWxlbnQgMCArMgogIFN0ckNweSAkUjQgJ3BvcnQ9IjgwODAiJwoKICBJZlNpbGVudCArMiAwCiAgU3RyQ3B5ICRSNCAncG9ydD0iJFIwIicKCiAgSWZTaWxlbnQgMCArMgogIFN0ckNweSAkUjUgJycKCiAgSWZTaWxlbnQgU2lsZW50IDAKCiAgOyBFc2NhcGUgWE1MCiAgUHVzaCAkUjEKICBDYWxsIHhtbEVzY2FwZQogIFBvcCAkUjEKICBQdXNoICRSMgogIENhbGwgeG1sRXNjYXBlCiAgUG9wICRSMgogIAogIFN0ckNweSAkUjUgJzx1c2VyIG5hbWU9IiRSMSIgcGFzc3dvcmQ9IiRSMiIgcm9sZXM9ImFkbWluLG1hbmFnZXIiIC8+JwoKU2lsZW50OgogIERldGFpbFByaW50ICdIVFRQLzEuMSBDb25uZWN0b3IgY29uZmlndXJlZCBvbiBwb3J0ICIkUjAiJwogIERldGFpbFByaW50ICdBZG1pbiB1c2VyIGFkZGVkOiAiJFIxIicKCiAgU2V0T3V0UGF0aCAkVEVNUAogIEZpbGUgL3IgY29uZmluc3RhbGwKCiAgOyBCdWlsZCBmaW5hbCBzZXJ2ZXIueG1sCiAgRGVsZXRlICIkSU5TVERJUlxjb25mXHNlcnZlci54bWwiCiAgRmlsZU9wZW4gJFI5ICIkSU5TVERJUlxjb25mXHNlcnZlci54bWwiIHcKCiAgUHVzaCAiJFRFTVBcY29uZmluc3RhbGxcc2VydmVyXzEueG1sIgogIENhbGwgY29weUZpbGUKICBGaWxlV3JpdGUgJFI5ICRSNAogIFB1c2ggIiRURU1QXGNvbmZpbnN0YWxsXHNlcnZlcl8yLnhtbCIKICBDYWxsIGNvcHlGaWxlCgogIEZpbGVDbG9zZSAkUjkKCiAgRGV0YWlsUHJpbnQgInNlcnZlci54bWwgd3JpdHRlbiIKCiAgOyBCdWlsZCBmaW5hbCB0b21jYXQtdXNlcnMueG1sCiAgCiAgRGVsZXRlICIkSU5TVERJUlxjb25mXHRvbWNhdC11c2Vycy54bWwiCiAgRmlsZU9wZW4gJFI5ICIkSU5TVERJUlxjb25mXHRvbWNhdC11c2Vycy54bWwiIHcKCiAgUHVzaCAiJFRFTVBcY29uZmluc3RhbGxcdG9tY2F0LXVzZXJzXzEueG1sIgogIENhbGwgY29weUZpbGUKICBGaWxlV3JpdGUgJFI5ICRSNQogIFB1c2ggIiRURU1QXGNvbmZpbnN0YWxsXHRvbWNhdC11c2Vyc18yLnhtbCIKICBDYWxsIGNvcHlGaWxlCgogIEZpbGVDbG9zZSAkUjkKCiAgRGV0YWlsUHJpbnQgInRvbWNhdC11c2Vycy54bWwgd3JpdHRlbiIKCiAgUk1EaXIgL3IgIiRURU1QXGNvbmZpbnN0YWxsIgoKRnVuY3Rpb25FbmQKCgpGdW5jdGlvbiB4bWxFc2NhcGUKICBQb3AgJDAKICAke1N0clJlcH0gJDAgJDAgIiYiICImYW1wOyIKICAke1N0clJlcH0gJDAgJDAgIiRcIiIgIiZxdW90OyIKICAke1N0clJlcH0gJDAgJDAgIjwiICImbHQ7IgogICR7U3RyUmVwfSAkMCAkMCAiPiIgIiZndDsiCiAgUHVzaCAkMApGdW5jdGlvbkVuZAoKCjsgPT09PT09PT09PT09PT09PT0KOyBDb3B5RmlsZSBGdW5jdGlvbgo7ID09PT09PT09PT09PT09PT09CjsKOyBDb3B5IHNwZWNpZmllZCBmaWxlIGNvbnRlbnRzIHRvICRSOQo7CkZ1bmN0aW9uIGNvcHlGaWxlCgogIENsZWFyRXJyb3JzCgogIFBvcCAkMAoKICBGaWxlT3BlbiAkMSAkMCByCgogTm9FcnJvcjoKCiAgRmlsZVJlYWQgJDEgJDIKICBJZkVycm9ycyBFT0YgMAogIEZpbGVXcml0ZSAkUjkgJDIKCiAgSWZFcnJvcnMgMCBOb0Vycm9yCgogRU9GOgoKICBGaWxlQ2xvc2UgJDEKCiAgQ2xlYXJFcnJvcnMKCkZ1bmN0aW9uRW5kCgoKOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjtVbmluc3RhbGxlciBTZWN0aW9uCgpTZWN0aW9uIFVuaW5zdGFsbAoKICBEZWxldGUgIiRJTlNURElSXG1vZGVybi5leGUiCiAgRGVsZXRlICIkSU5TVERJUlxVbmluc3RhbGwuZXhlIgoKICA7IFN0b3AgVG9tY2F0IHNlcnZpY2UgbW9uaXRvciBpZiBydW5uaW5nCiAgbnNFeGVjOjpFeGVjVG9Mb2cgJyIkSU5TVERJUlxiaW5cdG9tY2F0NXcuZXhlIiAvL01RLy9Ub21jYXQ1JwogIDsgRGVsZXRlIFRvbWNhdCBzZXJ2aWNlCiAgbnNFeGVjOjpFeGVjVG9Mb2cgJyIkSU5TVERJUlxiaW5cdG9tY2F0NS5leGUiIC8vRFMvL1RvbWNhdDUnCiAgQ2xlYXJFcnJvcnMKCiAgRGVsZXRlUmVnS2V5IEhLQ1IgIkpTUEZpbGUiCiAgRGVsZXRlUmVnS2V5IEhLTE0gIlNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFxBcGFjaGUgVG9tY2F0IDUuNSIKICBEZWxldGVSZWdLZXkgSEtMTSAiU09GVFdBUkVcQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb25cVG9tY2F0XDUuNSIKICBEZWxldGVSZWdWYWx1ZSBIS0xNICJTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxSdW4iICJBcGFjaGVUb21jYXRNb25pdG9yIgogIFJNRGlyIC9yICIkU01QUk9HUkFNU1xBcGFjaGUgVG9tY2F0IDUuNSIKICBEZWxldGUgIiRJTlNURElSXHRvbWNhdC5pY28iCiAgRGVsZXRlICIkSU5TVERJUlxMSUNFTlNFIgogIFJNRGlyIC9yICIkSU5TVERJUlxiaW4iCiAgUk1EaXIgL3IgIiRJTlNURElSXGNvbW1vbiIKICBEZWxldGUgIiRJTlNURElSXGNvbmZcKi5kdGQiCiAgUk1EaXIgL3IgIiRJTlNURElSXHNoYXJlZCIKICBSTURpciAiJElOU1RESVJcbG9ncyIKICBSTURpciAvciAiJElOU1RESVJcc2VydmVyIgogIFJNRGlyIC9yICIkSU5TVERJUlx3ZWJhcHBzXGJhbGFuY2VyIgogIFJNRGlyIC9yICIkSU5TVERJUlx3ZWJhcHBzXHRvbWNhdC1kb2NzIgogIFJNRGlyIC9yICIkSU5TVERJUlx3ZWJhcHBzXHNlcnZsZXRzLWV4YW1wbGVzIgogIFJNRGlyIC9yICIkSU5TVERJUlx3ZWJhcHBzXGpzcC1leGFtcGxlcyIKICBSTURpciAvciAiJElOU1RESVJcd2ViYXBwc1x3ZWJkYXYiCiAgUk1EaXIgL3IgIiRJTlNURElSXHdvcmsiCiAgUk1EaXIgL3IgIiRJTlNURElSXHRlbXAiCiAgUk1EaXIgL3IgIiRJTlNURElSXHNyYyIKICBSTURpciAiJElOU1RESVIiCgogIElmU2lsZW50IFJlbW92ZWQgMAoKICA7IGlmICRJTlNURElSIHdhcyByZW1vdmVkLCBza2lwIHRoZXNlIG5leHQgb25lcwogIElmRmlsZUV4aXN0cyAiJElOU1RESVIiIDAgUmVtb3ZlZCAKICAgIE1lc3NhZ2VCb3ggTUJfWUVTTk98TUJfSUNPTlFVRVNUSU9OIFwKICAgICAgIlJlbW92ZSBhbGwgZmlsZXMgaW4geW91ciBUb21jYXQgNS41IGRpcmVjdG9yeT8gKElmIHlvdSBoYXZlIGFueXRoaW5nICBcCiB5b3UgY3JlYXRlZCB0aGF0IHlvdSB3YW50IHRvIGtlZXAsIGNsaWNrIE5vKSIgSUROTyBSZW1vdmVkCiAgICBSTURpciAvciAiJElOU1RESVJcd2ViYXBwc1xST09UIiA7IHRoaXMgd291bGQgYmUgc2tpcHBlZCBpZiB0aGUgdXNlciBoaXRzIG5vCiAgICBSTURpciAiJElOU1RESVJcd2ViYXBwcyIKICAgIERlbGV0ZSAiJElOU1RESVJcKi4qIiAKICAgIFJNRGlyIC9yICIkSU5TVERJUiIKICAgIFNsZWVwIDUwMAogICAgSWZGaWxlRXhpc3RzICIkSU5TVERJUiIgMCBSZW1vdmVkIAogICAgICBNZXNzYWdlQm94IE1CX09LfE1CX0lDT05FWENMQU1BVElPTiBcCiAgICAgICAgICAgICAgICAgIk5vdGU6ICRJTlNURElSIGNvdWxkIG5vdCBiZSByZW1vdmVkLiIKICBSZW1vdmVkOgoKU2VjdGlvbkVuZAoKO2VvZgo=