10 lines
161 KiB
XML
10 lines
161 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<project version="4">
|
|
<component name="AugmentWebviewStateStore">
|
|
<option name="stateMap">
|
|
<map>
|
|
<entry key="CHAT_STATE" value="eyJjdXJyZW50Q29udmVyc2F0aW9uSWQiOiI3MWYxY2U1YS0yYWM1LTQ2YzQtOWIyOS0wNGM1ZjEzYzgzOTkiLCJjb252ZXJzYXRpb25zIjp7IjFjOWI5YzFmLTg4NmYtNDViNy1hYTE3LTkxYWFkNDE2OGQzMCI6eyJpZCI6IjFjOWI5YzFmLTg4NmYtNDViNy1hYTE3LTkxYWFkNDE2OGQzMCIsImNyZWF0ZWRBdElzbyI6IjIwMjUtMDUtMDlUMDY6MDI6NTMuODU4WiIsImxhc3RJbnRlcmFjdGVkQXRJc28iOiIyMDI1LTA1LTA5VDA2OjAyOjUzLjg1OFoiLCJjaGF0SGlzdG9yeSI6W10sImZlZWRiYWNrU3RhdGVzIjp7fSwidG9vbFVzZVN0YXRlcyI6e30sImRyYWZ0RXhjaGFuZ2UiOnsicmVxdWVzdF9tZXNzYWdlIjoiIiwicmljaF90ZXh0X2pzb25fcmVwciI6eyJ0eXBlIjoiZG9jIiwiY29udGVudCI6W3sidHlwZSI6InBhcmFncmFwaCJ9XX0sInN0YXR1cyI6ImRyYWZ0In0sInJlcXVlc3RJZHMiOltdLCJpc1Bpbm5lZCI6ZmFsc2UsImlzU2hhcmVhYmxlIjpmYWxzZSwiZXh0cmFEYXRhIjp7Imhhc0RpcnR5RWRpdHMiOmZhbHNlfSwicGVyc29uYVR5cGUiOjB9LCI5ODcxM2E4Zi1jNzFkLTRkNjAtOTAyNC0xNjk0M2U1Nzc3ODciOnsiaWQiOiI5ODcxM2E4Zi1jNzFkLTRkNjAtOTAyNC0xNjk0M2U1Nzc3ODciLCJjcmVhdGVkQXRJc28iOiIyMDI1LTA1LTA5VDA2OjAyOjU0LjAwNVoiLCJsYXN0SW50ZXJhY3RlZEF0SXNvIjoiMjAyNS0wNS0wOVQwNjowMjo1NC4wMDVaIiwiY2hhdEhpc3RvcnkiOltdLCJmZWVkYmFja1N0YXRlcyI6e30sInRvb2xVc2VTdGF0ZXMiOnt9LCJkcmFmdEV4Y2hhbmdlIjp7InJlcXVlc3RfbWVzc2FnZSI6IiIsInJpY2hfdGV4dF9qc29uX3JlcHIiOnsidHlwZSI6ImRvYyIsImNvbnRlbnQiOlt7InR5cGUiOiJwYXJhZ3JhcGgifV19LCJzdGF0dXMiOiJkcmFmdCJ9LCJyZXF1ZXN0SWRzIjpbXSwiaXNQaW5uZWQiOmZhbHNlLCJpc1NoYXJlYWJsZSI6ZmFsc2UsImV4dHJhRGF0YSI6eyJoYXNEaXJ0eUVkaXRzIjpmYWxzZX0sInBlcnNvbmFUeXBlIjowfSwiNzFmMWNlNWEtMmFjNS00NmM0LTliMjktMDRjNWYxM2M4Mzk5Ijp7ImlkIjoiNzFmMWNlNWEtMmFjNS00NmM0LTliMjktMDRjNWYxM2M4Mzk5IiwibmFtZSI6IldlbGNvbWUgdG8gdGhlIEF1Z21lbnQgQWdlbnQiLCJjcmVhdGVkQXRJc28iOiIyMDI1LTA1LTA5VDA2OjAyOjU2LjU0OVoiLCJsYXN0SW50ZXJhY3RlZEF0SXNvIjoiMjAyNS0wNS0wOVQwNjo0MzowOS43MzhaIiwiY2hhdEhpc3RvcnkiOlt7InJlcXVlc3RfaWQiOiJiMDk5YmJiZi0zODJmLTQzZjAtOThjZC04NTI4ZGQ2MzUzY2IiLCJ1dWlkIjoiYzQ0NWFkMTYtM2RmOC00YTQ0LTllYTMtNzA3ZmIzNTllYmFjIiwiY2hhdEl0ZW1UeXBlIjoiYWdlbnRpYy1jaGVja3BvaW50LWRlbGltaXRlciIsInN0YXR1cyI6InN1Y2Nlc3MiLCJmcm9tVGltZXN0YW1wIjowLCJ0b1RpbWVzdGFtcCI6MTc0Njc3MDU3NjU1MCwic2Vlbl9zdGF0ZSI6InNlZW4ifSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiYjY3YjFkOTgtYTBlMi00MThlLTlmNjktYmYzODg1Mzg3MzI2IiwicmVxdWVzdF9tZXNzYWdlIjoiMTA2NCAtIFlvdSBoYXZlIGFuIGVycm9yIGluIHlvdXIgU1FMIHN5bnRheDsgY2hlY2sgdGhlIG1hbnVhbCB0aGF0IGNvcnJlc3BvbmRzIHRvIHlvdXIgTXlTUUwgc2VydmVyIHZlcnNpb24gZm9yIHRoZSByaWdodCBzeW50YXggdG8gdXNlIG5lYXIgJy1hY2NvdW50LnVzZXIgb24gbWljcm8tYWNjb3VudC51c2VyLmlkID0gYnVuZGxlX29yZGVyX3JlY29yZHNjdXN0b21lcl9pZCBXSEVSRSBgJyBhdCBsaW5lIDEgIOaAjuS5iOino+WGsyIsInJpY2hfdGV4dF9qc29uX3JlcHIiOnsidHlwZSI6ImRvYyIsImNvbnRlbnQiOlt7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiIxMDY0IC0gWW91IGhhdmUgYW4gZXJyb3IgaW4geW91ciBTUUwgc3ludGF4OyBjaGVjayB0aGUgbWFudWFsIHRoYXQgY29ycmVzcG9uZHMgdG8geW91ciBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBmb3IgdGhlIHJpZ2h0IHN5bnRheCB0byB1c2UgbmVhciAnLWFjY291bnQudXNlciBvbiBtaWNyby1hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkc2N1c3RvbWVyX2lkIFdIRVJFIGAnIGF0IGxpbmUgMSAg5oCO5LmI6Kej5YazIn1dfV19LCJtZW50aW9uZWRfaXRlbXMiOltdLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjUsImNvbnRlbnQiOiIiLCJ0b29sX3VzZSI6eyJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFTRkd1dWFzdXZoekpqZFBBR2N6N01uIiwidG9vbF9uYW1lIjoiY29kZWJhc2UtcmV0cmlldmFsIiwiaW5wdXRfanNvbiI6IntcImluZm9ybWF0aW9uX3JlcXVlc3RcIjogXCJGaW5kIHRoZSBTUUwgcXVlcnkgaW4gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nbyB0aGF0IG1pZ2h0IGJlIGNhdXNpbmcgdGhlIGVycm9yIHJlbGF0ZWQgdG8gXFxcImJ1bmRsZV9vcmRlcl9yZWNvcmRzXFxcIiBhbmQgXFxcIm1pY3JvLWFjY291bnQudXNlclxcXCJcIn0iLCJtY3Bfc2VydmVyX25hbWUiOiIiLCJtY3BfdG9vbF9uYW1lIjoiIn19LHsiaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJJdCBsb29rcyBsaWtlIHlvdSdyZSBlbmNvdW50ZXJpbmcgYSBTUUwgc3ludGF4IGVycm9yIGluIHlvdXIgYXBwbGljYXRpb24uIExldCBtZSBoZWxwIHlvdSB0cm91Ymxlc2hvb3QgdGhpcyBpc3N1ZS5cblxuRmlyc3QsIEknbGwgZ2F0aGVyIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvZGUgdGhhdCBtaWdodCBiZSBjYXVzaW5nIHRoaXMgZXJyb3IuXG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjowLCJ0ZXh0X25vZGUiOnsiY29udGVudCI6IjEwNjQgLSBZb3UgaGF2ZSBhbiBlcnJvciBpbiB5b3VyIFNRTCBzeW50YXg7IGNoZWNrIHRoZSBtYW51YWwgdGhhdCBjb3JyZXNwb25kcyB0byB5b3VyIE15U1FMIHNlcnZlciB2ZXJzaW9uIGZvciB0aGUgcmlnaHQgc3ludGF4IHRvIHVzZSBuZWFyICctYWNjb3VudC51c2VyIG9uIG1pY3JvLWFjY291bnQudXNlci5pZCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzY3VzdG9tZXJfaWQgV0hFUkUgYCcgYXQgbGluZSAxICDmgI7kuYjop6PlhrMifX0seyJpZCI6MiwidHlwZSI6NCwiaWRlX3N0YXRlX25vZGUiOnsid29ya3NwYWNlRm9sZGVycyI6W3sicmVwb3NpdG9yeVJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUiLCJmb2xkZXJSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIn1dLCJ3b3Jrc3BhY2VGb2xkZXJzVW5jaGFuZ2VkIjpmYWxzZX19XSwidGltZXN0YW1wIjoiMjAyNS0wNS0wOVQwNjowMzowMS4xOTZaIiwicmVzcG9uc2VfdGV4dCI6Ikl0IGxvb2tzIGxpa2UgeW91J3JlIGVuY291bnRlcmluZyBhIFNRTCBzeW50YXggZXJyb3IgaW4geW91ciBhcHBsaWNhdGlvbi4gTGV0IG1lIGhlbHAgeW91IHRyb3VibGVzaG9vdCB0aGlzIGlzc3VlLlxuXG5GaXJzdCwgSSdsbCBnYXRoZXIgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29kZSB0aGF0IG1pZ2h0IGJlIGNhdXNpbmcgdGhpcyBlcnJvci5cbiIsIndvcmtzcGFjZV9maWxlX2NodW5rcyI6W119LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiJlMzVlNzI2Ni00Yjk3LTRhM2ItYTU0Ni1hN2FjOTdlNThjMGIiLCJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjUsImNvbnRlbnQiOiIiLCJ0b29sX3VzZSI6eyJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFOUkdwc1RKVVZvTmk0TmtiZmI4UGNzIiwidG9vbF9uYW1lIjoic3RyLXJlcGxhY2UtZWRpdG9yIiwiaW5wdXRfanNvbiI6IntcImNvbW1hbmRcIjogXCJ2aWV3XCIsIFwicGF0aFwiOiBcImludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ29cIiwgXCJ2aWV3X3JhbmdlXCI6IFs3MCwgOTBdfSIsIm1jcF9zZXJ2ZXJfbmFtZSI6IiIsIm1jcF90b29sX25hbWUiOiIifX0seyJpZCI6MCwidHlwZSI6MCwiY29udGVudCI6IkkgY2FuIHNlZSB0aGUgaXNzdWUgaW4geW91ciBTUUwgcXVlcnkuIFRoZSBlcnJvciBpcyBvY2N1cnJpbmcgaW4gdGhlIGBPcmRlclJlY29yZHNMaXN0YCBmdW5jdGlvbiBpbiBgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nb2AuIExldCBtZSBleGFtaW5lIHRoZSBwcm9ibGVtYXRpYyBTUUwgam9pbiBzdGF0ZW1lbnQgbW9yZSBjbG9zZWx5OlxuIn0seyJpZCI6MiwidHlwZSI6MiwiY29udGVudCI6IiJ9LHsiaWQiOjMsInR5cGUiOjMsImNvbnRlbnQiOiIifV0sInNlZW5fc3RhdGUiOiJzZWVuIiwic3RydWN0dXJlZF9yZXF1ZXN0X25vZGVzIjpbeyJpZCI6MSwidHlwZSI6MSwidG9vbF9yZXN1bHRfbm9kZSI6eyJjb250ZW50IjoiVGhlIGZvbGxvd2luZyBjb2RlIHNlY3Rpb25zIHdlcmUgcmV0cmlldmVkOlxuUGF0aDogaW50ZXJuYWwvZGFvL3ZhbHVlQWRkQnVuZGxlRGFvLmdvXG5wYWNrYWdlIGRhb1xuXG5pbXBvcnQgKFxuXHRcIm1pY3JvLWJ1bmRsZS9pbnRlcm5hbC9tb2RlbFwiXG5cdFwibWljcm8tYnVuZGxlL3BrZy9hcHBcIlxuKVxuXG4vLyDlop7lgLzlpZfppJDliJvlu7pcbmZ1bmMgQ3JlYXRlVmFsdWVBZGRCdW5kbGUocmVxICptb2RlbC5WYWx1ZUFkZEJ1bmRsZVByb2ZpbGUpIChlcnIgZXJyb3IpIHtcblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLlZhbHVlQWRkQnVuZGxlUHJvZmlsZXt9KS5DcmVhdGUoJnJlcSkuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cblxuLy8g5aKe5YC85aWX6aSQ5YiX6KGoXG5mdW5jIFZhbHVlQWRkQnVuZGxlTGlzdChwcmljZVR5cGUgaW50MzIpICh2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUgW10qbW9kZWwuVmFsdWVBZGRCdW5kbGVQcm9maWxlLCBlcnIgZXJyb3IpIHtcblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuV2hlcmUoXCJwcmljZV90eXBlID0gP1wiLCBwcmljZVR5cGUpLk9yZGVyKFwibnVtIEFTQ1wiKS5GaW5kKCZ2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVyblxuXHR9XG5cdHJldHVyblxufVxuXG4vLyDlop7lgLzlpZfppJDor6bmg4VcbmZ1bmMgVmFsdWVBZGRCdW5kbGVEZXRhaWwodXVpZCBzdHJpbmcpICh2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUgKm1vZGVsLlZhbHVlQWRkQnVuZGxlUHJvZmlsZSwgZXJyIGVycm9yKSB7XG5cblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuV2hlcmUoXCJ1dWlkID0gP1wiLCB1dWlkKS5GaXJzdCgmdmFsdWVBZGRCdW5kbGVQcm9maWxlKS5FcnJvclxuXHRpZiBlcnIgIT0gbmlsIHtcblx0XHRyZXR1cm5cblx0fVxuXG5cdHJldHVyblxufVxuXG5mdW5jIEJ1bmRsZVByb2ZpbGVEZXRhaWwodXVpZCBzdHJpbmcpIChidW5kbGVQcm9maWxlICptb2RlbC5CdW5kbGVQcm9maWxlLCBlcnIgZXJyb3IpIHtcblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuV2hlcmUoXCJ1dWlkID0gP1wiLCB1dWlkKS5GaXJzdCgmYnVuZGxlUHJvZmlsZSkuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cblxuZnVuYyBCdW5kbGVPcmRlclJlY29yZHNEZXRhaWxCeUFkZFVpZCh1dWlkIHN0cmluZykgKGJ1bmRsZU9yZGVyUmVjb3JkcyAqbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCBlcnIgZXJyb3IpIHtcblxuXHRlcnIgPSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5XaGVyZShcInZhbHVlX2FkZF9idW5kbGVfdXVpZCA9ID9cIiwgdXVpZCkuRmlyc3QoJmJ1bmRsZU9yZGVyUmVjb3JkcykuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cblxuZnVuYyBHZXRCdW5kbGVPcmRlclJlY29yZHNCeVVzZXJJZEFuZEJ1bmRsZVV1aWQodXNlcklkIGludDMyLCB1dWlkIHN0cmluZykgKGJ1bmRsZU9yZGVyUmVjb3JkcyAqbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCBlcnIgZXJyb3IpIHtcblxuXHRlcnIgPSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5XaGVyZShcImN1c3RvbWVyX2lkID0gPyBBTkQgYnVuZGxlX3V1aWQgPSA/XCIsIHVzZXJJZCwgdXVpZCkuRmlyc3QoJmJ1bmRsZU9yZGVyUmVjb3JkcykuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cblxuZnVuYyBHZXRCdW5kbGVPcmRlclJlY29yZHNCeUNvbW1vblVpZEFuZFVzZXJJZChjb21tb25VaWQgc3RyaW5nLCB1c2VySWQgaW50MzIpIChidW5kbGVPcmRlclJlY29yZHMgKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgZXJyIGVycm9yKSB7XG5cblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuV2hlcmUoXCJidW5kbGVfY29tbW9uX3VpZCA9ID8gQU5EIGN1c3RvbWVyX2lkID0gP1wiLCBjb21tb25VaWQsIHVzZXJJZCkuRmlyc3QoJmJ1bmRsZU9yZGVyUmVjb3JkcykuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cbi4uLlxuUGF0aDogaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nb1xucGFja2FnZSBkYW9cblxuaW1wb3J0IChcblx0XCJtaWNyby1idW5kbGUvaW50ZXJuYWwvbW9kZWxcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wYi9idW5kbGVcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wa2cvYXBwXCJcblx0Y29tbW9uRXJyIFwibWljcm8tYnVuZGxlL3BrZy9lcnJcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wa2cvbXNnXCJcblx0XCJtaWNyby1idW5kbGUvcGtnL3V0aWxzXCJcbilcblxuZnVuYyBDcmVhdGVPcmRlclJlY29yZChvcmRlclJlY29yZCAqbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzKSAocmVzICpidW5kbGUuQ29tbW9uUmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLkNvbW1vblJlc3BvbnNlKVxuXHRvcmRlclJlY29yZC5VVUlEID0gYXBwLk1vZHVsZUNsaWVudHMuU2ZOb2RlLkdlbmVyYXRlKCkuQmFzZTY0KClcblx0b3JkZXJSZWNvcmQuT3JkZXJObyA9IHV0aWxzLkdldE9yZGVyTm8oKVxuXG5cdC8vIOW8gOWQr+S6i+WKoVxuXHR0eCA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5CZWdpbigpXG5cdGRlZmVyIGZ1bmMoKSB7XG5cdFx0aWYgciA6PSByZWNvdmVyKCk7IHIgIT0gbmlsIHtcblx0XHRcdHR4LlJvbGxiYWNrKClcblx0XHR9XG5cdH0oKVxuXG5cdC8vIOWIm+W7uuS4u+iuouWNlVxuXHRpZiBlcnIgPSB0eC5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pLkNyZWF0ZSgmb3JkZXJSZWNvcmQpLkVycm9yOyBlcnIgIT0gbmlsIHtcblx0XHR0eC5Sb2xsYmFjaygpXG5cdFx0cmVzLk1zZyA9IG1zZy5FcnJvckNyZWF0ZU9yZGVySW5mb1xuXHRcdHJldHVybiByZXMsIGNvbW1vbkVyci5SZXR1cm5FcnJvcihlcnIsIG1zZy5FcnJvckNyZWF0ZU9yZGVySW5mbywgXCLliJvlu7rorqLljZXkv6Hmga/lpLHotKU6IFwiKVxuXHR9XG5cblx0Ly8g5o+Q5Lqk5LqL5YqhXG5cdGlmIGVyciA9IHR4LkNvbW1pdCgpLkVycm9yOyBlcnIgIT0gbmlsIHtcblx0XHRyZXMuTXNnID0gbXNnLkVycm9yQ29tbWl0VHJhbnNhY3Rpb25cblx0XHRyZXR1cm4gcmVzLCBjb21tb25FcnIuUmV0dXJuRXJyb3IoZXJyLCBtc2cuRXJyb3JDb21taXRUcmFuc2FjdGlvbiwgXCLmj5DkuqTkuovliqHlpLHotKU6IFwiKVxuXHR9XG5cblx0cmVzLlV1aWQgPSBvcmRlclJlY29yZC5VVUlEXG5cdHJlcy5PcmRlck5vID0gb3JkZXJSZWNvcmQuT3JkZXJOb1xuXHRyZXMuTXNnID0gbXNnLlN1Y2Nlc3NDcmVhdGVPcmRlckluZm9cblx0cmV0dXJuXG59XG5cbmZ1bmMgVXBkYXRlT3JkZXJSZWNvcmQob3JkZXJSZWNvcmQgKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcykgKHJlcyAqYnVuZGxlLkNvbW1vblJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5Db21tb25SZXNwb25zZSlcblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KS5XaGVyZShcInV1aWQgPSA/XCIsIG9yZGVyUmVjb3JkLlVVSUQpLlVwZGF0ZXMob3JkZXJSZWNvcmQpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJlcy5Nc2cgPSBtc2cuRXJyb3JVcGRhdGVPcmRlckluZm9cblx0XHRyZXR1cm4gcmVzLCBjb21tb25FcnIuUmV0dXJuRXJyb3IoZXJyLCBtc2cuRXJyb3JVcGRhdGVPcmRlckluZm8sIFwi5pu05paw6K6i5Y2V5L+h5oGv5aSx6LSlOiBcIilcblx0fVxuXHRyZXMuVXVpZCA9IG9yZGVyUmVjb3JkLlVVSURcblx0cmVzLk1zZyA9IG1zZy5TdWNjZXNzVXBkYXRlT3JkZXJJbmZvXG5cdHJldHVyblxufVxuXG5mdW5jIFVwZGF0ZU9yZGVyUmVjb3JkQnlPcmRlck5PKG9yZGVyUmVjb3JkICptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMpIChyZXMgKmJ1bmRsZS5Db21tb25SZXNwb25zZSwgZXJyIGVycm9yKSB7XG5cdHJlcyA9IG5ldyhidW5kbGUuQ29tbW9uUmVzcG9uc2UpXG5cdGVyciA9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSkuV2hlcmUoXCJvcmRlcl9ubyA9ID9cIiwgb3JkZXJSZWNvcmQuT3JkZXJObykuVXBkYXRlcyhvcmRlclJlY29yZCkuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmVzLk1zZyA9IG1zZy5FcnJvclVwZGF0ZU9yZGVySW5mb1xuXHRcdHJldHVybiByZXMsIGNvbW1vbkVyci5SZXR1cm5FcnJvcihlcnIsIG1zZy5FcnJvclVwZGF0ZU9yZGVySW5mbywgXCLmm7TmlrDorqLljZXkv6Hmga/lpLHotKU6IFwiKVxuXHR9XG5cdHJlcy5VdWlkID0gb3JkZXJSZWNvcmQuVVVJRFxuXHRyZXMuTXNnID0gbXNnLlN1Y2Nlc3NVcGRhdGVPcmRlckluZm9cblx0cmV0dXJuXG59XG5cbmZ1bmMgT3JkZXJSZWNvcmRzTGlzdChyZXEgKmJ1bmRsZS5PcmRlclJlY29yZHNSZXF1ZXN0KSAocmVzICpidW5kbGUuT3JkZXJSZWNvcmRzUmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLk9yZGVyUmVjb3Jkc1Jlc3BvbnNlKVxuXHRyZXMuT3JkZXJSZWNvcmRzID0gbWFrZShbXSpidW5kbGUuT3JkZXJSZWNvcmQsIDApXG5cdHJlY29yZHMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIDApXG5cblx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuXG5cdHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIG1pY3JvX2FjY291bnQudXNlciBvbiBtaWNyb19hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkcy5jdXN0b21lcl9pZFwiKVxuXG5cdGlmIHJlcS5DdXN0b21lcklEICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG5cdH1cblxuXHRpZiByZXEuQ3VzdG9tZXJOdW0gIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX251bSBsaWtlID9cIiwgXCIlXCIrcmVxLkN1c3RvbWVyTnVtK1wiJVwiKVxuXHR9XG5cblx0aWYgcmVxLkN1c3RvbWVyTmFtZSAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfbmFtZSBsaWtlID9cIiwgXCIlXCIrcmVxLkN1c3RvbWVyTmFtZStcIiVcIilcblx0fVxuXG5cdGlmIHJlcS5CdW5kbGVOYW1lICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJidW5kbGVfbmFtZSBsaWtlID9cIiwgXCIlXCIrcmVxLkJ1bmRsZU5hbWUrXCIlXCIpXG5cdH1cblxuXHRpZiByZXEuQnVuZGxlVVVJRCAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYnVuZGxlX3V1aWQgPSA/XCIsIHJlcS5CdW5kbGVVVUlEKVxuXHR9XG5cblx0aWYgcmVxLk9yZGVyTm8gIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIm9yZGVyX25vIGxpa2UgP1wiLCBcIiVcIityZXEuT3JkZXJObytcIiVcIilcblx0fVxuXG5cdGlmIHJlcS5TdGF0dXMgIT0gMCB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcInN0YXR1cyA9ID9cIiwgcmVxLlN0YXR1cylcblx0fVxuXG5cdGlmIHJlcS5TdGFydFNpZ25lZFRpbWUgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcInNpZ25lZF90aW1lID49ID9cIiwgcmVxLlN0YXJ0U2lnbmVkVGltZSlcblx0fVxuXG5cdGlmIHJlcS5FbmRTaWduZWRUaW1lICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJzaWduZWRfdGltZSA8PSA/XCIsIHJlcS5FbmRTaWduZWRUaW1lKVxuXHR9XG5cblx0aWYgcmVxLlN0YXJ0UGF5VGltZSAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwicGF5X3RpbWUgPj0gP1wiLCByZXEuU3RhcnRQYXlUaW1lKVxuXHR9XG5cblx0aWYgcmVxLkVuZFBheVRpbWUgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcInBheV90aW1lIDw9ID9cIiwgcmVxLkVuZFBheVRpbWUpXG5cdH1cblxuXHRpZiByZXEuSXNIYXZlVmFsdWVBZGQgPT0gMSB7IC8vIOaciVxuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJ2YWx1ZV9hZGRfYnVuZGxlX3V1aWQgIT0gP1wiLCBcIlwiKVxuXHR9IGVsc2UgaWYgcmVxLklzSGF2ZVZhbHVlQWRkID09IDIgeyAvLyDml6Bcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiSUZOVUxMKHZhbHVlX2FkZF9idW5kbGVfdXVpZCwnJykgPSAnJ1wiKVxuXHR9XG5cblx0aWYgcmVxLkZpbmFuY2lhbENvbmZpcm1hdGlvbiAhPSAwIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiZmluYW5jaWFsX2NvbmZpcm1hdGlvbiA9ID9cIiwgcmVxLkZpbmFuY2lhbENvbmZpcm1hdGlvbilcblx0fVxuXG5cdGlmIHJlcS5UZWxOdW0gIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIm1pY3JvX2FjY291bnQudXNlci50ZWxfbnVtIGxpa2UgP1wiLCBcIiVcIityZXEuVGVsTnVtK1wiJVwiKVxuXHR9XG5cblx0Y291bnQgOj0gKnF1ZXJ5XG5cblx0aWYgcmVxLlBhZ2VTaXplICE9IDAgJiYgcmVxLlBhZ2UgIT0gMCB7XG5cdFx0cXVlcnkgPSBxdWVyeS5MaW1pdChpbnQocmVxLlBhZ2VTaXplKSkuT2Zmc2V0KGludChyZXEuUGFnZS0xKSAqIGludChyZXEuUGFnZVNpemUpKVxuXHR9XG5cblx0ZXJyID0gcXVlcnkuRmluZCgmcmVjb3JkcykuRXJyb3JcblxuXHRpZiBlcnIgIT0gbmlsIHtcblx0XHRyZXR1cm4gcmVzLCBjb21tb25FcnIuUmV0dXJuRXJyb3IoZXJyLCBtc2cuRXJyb3JHZXRPcmRlckxpc3QsIFwi6I635Y+W6K6i5Y2V5L+h5oGv5aSx6LSlOiBcIilcblx0fVxuXG5cdC8vXyA9IGNvcGllci5Db3B5V2l0aE9wdGlvbigmcmVzLk9yZGVyUmVjb3JkcywgcmVjb3JkcywgY29waWVyLk9wdGlvbntEZWVwQ29weTogdHJ1ZX0pXG5cblx0Zm9yIF8sIHJlY29yZCA6PSByYW5nZSByZWNvcmRzIHtcblx0XHRyZXMuT3JkZXJSZWNvcmRzID0gYXBwZW5kKHJlcy5PcmRlclJlY29yZHMsICZidW5kbGUuT3JkZXJSZWNvcmR7XG5cdFx0XHRVdWlkOiAgICAgICAgICAgICAgICAgIHJlY29yZC5VVUlELFxuXHRcdFx0T3JkZXJObzogICAgICAgICAgICAgICByZWNvcmQuT3JkZXJObyxcblx0XHRcdEJ1bmRsZVV1aWQ6ICAgICAgICAgICAgcmVjb3JkLkJ1bmRsZVVVSUQsXG5cdFx0XHRCdW5kbGVOYW1lOiAgICAgICAgICAgIHJlY29yZC5CdW5kbGVOYW1lLFxuXHRcdFx0Q3VzdG9tZXJJRDogICAgICAgICAgICByZWNvcmQuQ3VzdG9tZXJJRCxcblx0XHRcdEN1c3RvbWVyTnVtOiAgICAgICAgICAgcmVjb3JkLkN1c3RvbWVyTnVtLFxuXHRcdFx0Q3VzdG9tZXJOYW1lOiAgICAgICAgICByZWNvcmQuQ3VzdG9tZXJOYW1lLFxuXHRcdFx0QW1vdW50OiAgICAgICAgICAgICAgICByZWNvcmQuQW1vdW50LFxuXHRcdFx0QW1vdW50VHlwZTogICAgICAgICAgICByZWNvcmQuQW1vdW50VHlwZSxcblx0XHRcdFNpZ25Db250cmFjdDogICAgICAgICAgcmVjb3JkLlNpZ25Db250cmFjdCxcblx0XHRcdFNpZ25hdHVyZTogICAgICAgICAgICAgcmVjb3JkLlNpZ25hdHVyZSxcblx0XHRcdFNpZ25lZFRpbWU6ICAgICAgICAgICAgcmVjb3JkLlNpZ25lZFRpbWUsXG5cdFx0XHRQYXlUeXBlOiAgICAgICAgICAgICAgIHJlY29yZC5QYXlUeXBlLFxuXHRcdFx0UGF5VGltZTogICAgICAgICAgICAgICByZWNvcmQuUGF5VGltZSxcblx0XHRcdENoZWNrb3V0U2Vzc2lvbklkOiAgICAgcmVjb3JkLkNoZWNrb3V0U2Vzc2lvbklkLFxuXHRcdFx0Q2hlY2tvdXRTZXNzaW9uVXJsOiAgICByZWNvcmQuQ2hlY2tvdXRTZXNzaW9uVXJsLFxuXHRcdFx0U3RhdHVzOiAgICAgICAgICAgICAgICByZWNvcmQuU3RhdHVzLFxuXHRcdFx0Q29udHJhY3RObzogICAgICAgICAgICByZWNvcmQuQ29udHJhY3RObyxcblx0XHRcdFZhbHVlQWRkQnVuZGxlVXVpZDogICAgcmVjb3JkLlZhbHVlQWRkQnVuZGxlVVVJRCxcblx0XHRcdFZhbHVlQWRkQnVuZGxlQW1vdW50OiAgcmVjb3JkLlZhbHVlQWRkQnVuZGxlQW1vdW50LFxuXHRcdFx0VmFsdWVBZGRPcmlnaW5hbFByaWNlOiByZWNvcmQuVmFsdWVBZGRPcmlnaW5hbFByaWNlLFxuXHRcdFx0VmFsdWVBZGREaXNjb3VudFByaWNlOiByZWNvcmQuVmFsdWVBZGREaXNjb3VudFByaWNlLFxuXHRcdFx0VmFsdWVBZGRTYXZlZEFtb3VudDogICByZWNvcmQuVmFsdWVBZGRTYXZlZEFtb3VudCxcblx0XHRcdFRvdGFsQW1vdW50OiAgICAgICAgICAgcmVjb3JkLlRvdGFsQW1vdW50LFxuXHRcdFx0TnVtOiAgICAgICAgICAgICAgICAgICByZWNvcmQuTnVtLFxuXHRcdFx0QnVuZGxlQ29tbW9uVWlkOiAgICAgICByZWNvcmQuQnVuZGxlQ29tbW9uVWlkLFxuXHRcdFx0QWRkQnVuZGxlQ29tbW9uVWlkOiAgICByZWNvcmQuQWRkQnVuZGxlQ29tbW9uVWlkLFxuXHRcdH0pXG5cdH1cblxuXHR2YXIgdG90YWwgaW50NjRcblxuXHRjb3VudC5Db3VudCgmdG90YWwpXG5cblx0cmVzLlRvdGFsID0gaW50MzIodG90YWwpXG5cblx0cmV0dXJuXG59XG5cbmZ1bmMgT3JkZXJSZWNvcmREZXRhaWwocmVxICpidW5kbGUuT3JkZXJSZWNvcmRzRGV0YWlsUmVxdWVzdCkgKHJlcyAqYnVuZGxlLk9yZGVyUmVjb3JkLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5PcmRlclJlY29yZClcblx0b3JkZXJSZWNvcmQgOj0gbmV3KG1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcylcblxuXHRxdWVyeSA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pXG5cblx0aWYgcmVxLlV1aWQgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcInV1aWQgPSA/XCIsIHJlcS5VdWlkKVxuXHR9XG5cblx0aWYgcmVxLk9yZGVyTm8gIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIm9yZGVyX25vID0gP1wiLCByZXEuT3JkZXJObylcblx0fVxuXG5cdGlmIHJlcS5DdXN0b21lcklEICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG5cdH1cblxuXHRlcnIgPSBxdWVyeS5GaXJzdCgmb3JkZXJSZWNvcmQpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVybiByZXMsIGNvbW1vbkVyci5SZXR1cm5FcnJvcihlcnIsIG1zZy5FcnJvckdldE9yZGVySW5mbywgXCLojrflj5borqLljZXkv6Hmga/lpLHotKU6IFwiKVxuXHR9XG5cdC8vXyA9IGNvcGllci5Db3B5V2l0aE9wdGlvbigmcmVzLCBvcmRlclJlY29yZCwgY29waWVyLk9wdGlvbntEZWVwQ29weTogdHJ1ZX0pXG5cblx0cmVzID0gJmJ1bmRsZS5PcmRlclJlY29yZHtcblx0XHRVdWlkOiAgICAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuVVVJRCxcblx0XHRPcmRlck5vOiAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuT3JkZXJObyxcblx0XHRCdW5kbGVVdWlkOiAgICAgICAgICAgb3JkZXJSZWNvcmQuQnVuZGxlVVVJRCxcblx0XHRCdW5kbGVOYW1lOiAgICAgICAgICAgb3JkZXJSZWNvcmQuQnVuZGxlTmFtZSxcblx0XHRDdXN0b21lcklEOiAgICAgICAgICAgb3JkZXJSZWNvcmQuQ3VzdG9tZXJJRCxcblx0XHRDdXN0b21lck51bTogICAgICAgICAgb3JkZXJSZWNvcmQuQ3VzdG9tZXJOdW0sXG5cdFx0Q3VzdG9tZXJOYW1lOiAgICAgICAgIG9yZGVyUmVjb3JkLkN1c3RvbWVyTmFtZSxcblx0XHRBbW91bnQ6ICAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuQW1vdW50LFxuXHRcdEFtb3VudFR5cGU6ICAgICAgICAgICBvcmRlclJlY29yZC5BbW91bnRUeXBlLFxuXHRcdFNpZ25Db250cmFjdDogICAgICAgICBvcmRlclJlY29yZC5TaWduQ29udHJhY3QsXG5cdFx0U2lnbmF0dXJlOiAgICAgICAgICAgIG9yZGVyUmVjb3JkLlNpZ25hdHVyZSxcblx0XHRTaWduZWRUaW1lOiAgICAgICAgICAgb3JkZXJSZWNvcmQuU2lnbmVkVGltZSxcblx0XHRQYXlUeXBlOiAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuUGF5VHlwZSxcblx0XHRQYXlUaW1lOiAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuUGF5VGltZSxcblx0XHRDaGVja291dFNlc3Npb25JZDogICAgb3JkZXJSZWNvcmQuQ2hlY2tvdXRTZXNzaW9uSWQsXG5cdFx0Q2hlY2tvdXRTZXNzaW9uVXJsOiAgIG9yZGVyUmVjb3JkLkNoZWNrb3V0U2Vzc2lvblVybCxcblx0XHRTdGF0dXM6ICAgICAgICAgICAgICAgb3JkZXJSZWNvcmQuU3RhdHVzLFxuXHRcdENvbnRyYWN0Tm86ICAgICAgICAgICBvcmRlclJlY29yZC5Db250cmFjdE5vLFxuXHRcdFZhbHVlQWRkQnVuZGxlVXVpZDogICBvcmRlclJlY29yZC5WYWx1ZUFkZEJ1bmRsZVVVSUQsXG5cdFx0VmFsdWVBZGRCdW5kbGVBbW91bnQ6IG9yZGVyUmVjb3JkLlZhbHVlQWRkQnVuZGxlQW1vdW50LFxuXHRcdFRvdGFsQW1vdW50OiAgICAgICAgICBvcmRlclJlY29yZC5Ub3RhbEFtb3VudCxcblx0fVxuXHRyZXR1cm5cbn1cbi4uLlxuUGF0aDogaW50ZXJuYWwvbW9kZWwvYnVuZGxlX29yZGVyX3JlY29yZHMuZ29cbnBhY2thZ2UgbW9kZWxcblxuaW1wb3J0IFwiZ29ybS5pby9nb3JtXCJcblxuLy8gQnVuZGxlT3JkZXJSZWNvcmRzIHN0cnVjdFxudHlwZSBCdW5kbGVPcmRlclJlY29yZHMgc3RydWN0IHtcblx0Z29ybS5Nb2RlbFxuXHRVVUlEICAgICAgICAgICAgICAgICAgc3RyaW5nICBganNvbjpcInV1aWRcIiBnb3JtOlwiY29sdW1uOnV1aWQ7dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ6VVVJRFwiYFxuXHRPcmRlck5vICAgICAgICAgICAgICAgc3RyaW5nICBganNvbjpcIm9yZGVyTm9cIiBnb3JtOlwiY29sdW1uOm9yZGVyX25vO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OuS6pOaYk+e8luWPt1wiYFxuXHRCdW5kbGVVVUlEICAgICAgICAgICAgc3RyaW5nICBganNvbjpcImJ1bmRsZVVVSURcIiBnb3JtOlwiY29sdW1uOmJ1bmRsZV91dWlkO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OuWll+mkkFVVSURcImBcblx0QnVuZGxlTmFtZSAgICAgICAgICAgIHN0cmluZyAgYGpzb246XCJidW5kbGVOYW1lXCIgZ29ybTpcImNvbHVtbjpidW5kbGVfbmFtZTt0eXBlOnZhcmNoYXIoMjA0OCk7Y29tbWVudDrlpZfppJDlkI1cImBcblx0Q3VzdG9tZXJJRCAgICAgICAgICAgIHN0cmluZyAgYGpzb246XCJjdXN0b21lcklEXCIgZ29ybTpcImNvbHVtbjpjdXN0b21lcl9pZDt0eXBlOnZhcmNoYXIoMTAyNCk7Y29tbWVudDrlrqLmiLdJRFwiYFxuXHRDdXN0b21lck51bSAgICAgICAgICAgc3RyaW5nICBganNvbjpcImN1c3RvbWVyTnVtXCIgZ29ybTpcImNvbHVtbjpjdXN0b21lcl9udW07dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ65a6i5oi357yW5Y+3XCJgXG5cdEN1c3RvbWVyTmFtZSAgICAgICAgICBzdHJpbmcgIGBqc29uOlwiY3VzdG9tZXJOYW1lXCIgZ29ybTpcImNvbHVtbjpjdXN0b21lcl9uYW1lO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OuWuouaIt+WQjVwiYFxuXHRBbW91bnQgICAgICAgICAgICAgICAgZmxvYXQzMiBganNvbjpcImFtb3VudFwiIGdvcm06XCJjb2x1bW46YW1vdW50O3R5cGU6ZGVjaW1hbCgxMiwyKTtjb21tZW50OuWll+mkkOmHkeminVwiYFxuXHRBbW91bnRUeXBlICAgICAgICAgICAgaW50NjQgICBganNvbjpcImFtb3VudFR5cGVcIiBnb3JtOlwiY29sdW1uOmFtb3VudF90eXBlO3R5cGU6aW50O2NvbW1lbnQ66YeR6aKd57G75Z6LXCJgXG5cdFZhbHVlQWRkQnVuZGxlVVVJRCAgICBzdHJpbmcgIGBqc29uOlwidmFsdWVBZGRCdW5kbGVVVUlEXCIgZ29ybTpcImNvbHVtbjp2YWx1ZV9hZGRfYnVuZGxlX3V1aWQ7dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ65aKe5YC85aWX6aSQ6K6w5b2VVVVJRFwiYFxuXHRWYWx1ZUFkZEJ1bmRsZUFtb3VudCAgZmxvYXQzMiBganNvbjpcInZhbHVlQWRkQnVuZGxlQW1vdW50XCIgZ29ybTpcImNvbHVtbjp2YWx1ZV9hZGRfYnVuZGxlX2Ftb3VudDt0eXBlOmRlY2ltYWwoMTIsMik7Y29tbWVudDrlop7lgLzlpZfppJDph5Hpop1cImBcblx0VmFsdWVBZGRPcmlnaW5hbFByaWNlIGZsb2F0MzIgYGpzb246XCJ2YWx1ZUFkZE9yaWdpbmFsUHJpY2VcIiBnb3JtOlwiY29sdW1uOnZhbHVlX2FkZF9vcmlnaW5hbF9wcmljZTt0eXBlOmRlY2ltYWwoMTIsMik7Y29tbWVudDrljp/ljZXku7dcImBcblx0VmFsdWVBZGREaXNjb3VudFByaWNlIGZsb2F0MzIgYGpzb246XCJ2YWx1ZUFkZERpc2NvdW50UHJpY2VcIiBnb3JtOlwiY29sdW1uOnZhbHVlX2FkZF9kaXNjb3VudF9wcmljZTt0eXBlOmRlY2ltYWwoMTIsMik7Y29tbWVudDrkvJjmg6DljZXku7dcImBcblx0VmFsdWVBZGRTYXZlZEFtb3VudCAgIGZsb2F0MzIgYGpzb246XCJ2YWx1ZUFkZFNhdmVkQW1vdW50XCIgZ29ybTpcImNvbHVtbjp2YWx1ZV9hZGRfc2F2ZWRfYW1vdW50O3R5cGU6ZGVjaW1hbCgxMiwyKTtjb21tZW50OuiKguecgemHkeminVwiYFxuXHRUb3RhbEFtb3VudCAgICAgICAgICAgZmxvYXQzMiBganNvbjpcInRvdGFsQW1vdW50XCIgZ29ybTpcImNvbHVtbjp0b3RhbF9hbW91bnQ7dHlwZTpkZWNpbWFsKDEyLDIpO2NvbW1lbnQ65oC76YeR6aKdXCJgXG5cdE51bSAgICAgICAgICAgICAgICAgICBpbnQzMiAgIGBqc29uOlwibnVtXCIgZ29ybTpcImNvbHVtbjpudW07dHlwZTppbnQ7Y29tbWVudDrop4bpopHmlbDph49cImBcblx0U2lnbkNvbnRyYWN0ICAgICAgICAgIHN0cmluZyAgYGpzb246XCJzaWduQ29udHJhY3RcIiBnb3JtOlwiY29sdW1uOnNpZ25fY29udHJhY3Q7dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ6562+57qm5ZCI5ZCMXCJgXG5cdFNpZ25hdHVyZSAgICAgICAgICAgICBzdHJpbmcgIGBqc29uOlwic2lnbmF0dXJlXCIgZ29ybTpcImNvbHVtbjpzaWduYXR1cmU7dHlwZTp0ZXh0O2NvbW1lbnQ6562+5a2XXCJgXG5cdFNpZ25lZFRpbWUgICAgICAgICAgICBzdHJpbmcgIGBqc29uOlwic2lnbmVkVGltZVwiIGdvcm06XCJjb2x1bW46c2lnbmVkX3RpbWU7dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ6562+57qm5pe26Ze0KOWMl+S6rOaXtumXtClcImBcblx0UGF5VHlwZSAgICAgICAgICAgICAgIGludDY0ICAgYGpzb246XCJwYXlUeXBlXCIgZ29ybTpcImNvbHVtbjpwYXlfdHlwZTt0eXBlOmludDtjb21tZW50OuaUr+S7mOexu+Wei1wiYFxuXHRQYXlUaW1lICAgICAgICAgICAgICAgc3RyaW5nICBganNvbjpcInBheVRpbWVcIiBnb3JtOlwiY29sdW1uOnBheV90aW1lO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OuaUr+S7mOaXtumXtCjljJfkuqzml7bpl7QpXCJgXG5cdENoZWNrb3V0U2Vzc2lvbklkICAgICBzdHJpbmcgIGBqc29uOlwiY2hlY2tvdXRTZXNzaW9uSWRcIiBnb3JtOlwiY29sdW1uOmNoZWNrb3V0X3Nlc3Npb25faWQ7dHlwZTp2YXJjaGFyKDEwMjQpO2RlZmF1bHQ6bnVsbDtjb21tZW50OmNoZWNrb3V0U2Vzc2lvbklkXCJgXG5cdENoZWNrb3V0U2Vzc2lvblVybCAgICBzdHJpbmcgIGBqc29uOlwiY2hlY2tvdXRTZXNzaW9uVXJsXCIgZ29ybTpcImNvbHVtbjpjaGVja291dF9zZXNzaW9uX3VybDt0eXBlOnZhcmNoYXIoMTAyNCk7ZGVmYXVsdDpudWxsO2NvbW1lbnQ6Y2hlY2tvdXRTZXNzaW9uVXJsXCJgXG5cdFN0YXR1cyAgICAgICAgICAgICAgICBpbnQ2NCAgIGBqc29uOlwic3RhdHVzXCIgZ29ybTpcImNvbHVtbjpzdGF0dXM7dHlwZTppbnQ7Y29tbWVudDrnirbmgIEgMTrlt7Lnrb7mnKrmlK/ku5ggMjrlt7Lnrb7lt7LmlK/ku5hcImBcblx0Q29udHJhY3RObyAgICAgICAgICAgIHN0cmluZyAgYGpzb246XCJjb250cmFjdE5vXCIgZ29ybTpcImNvbHVtbjpjb250cmFjdF9ubzt0eXBlOnZhcmNoYXIoMTAyNCk7Y29tbWVudDrlkIjlkIznvJblj7dcImBcblx0QnVuZGxlQ29tbW9uVWlkICAgICAgIHN0cmluZyAgYGpzb246XCJidW5kbGVDb21tb25VaWRcIiBnb3JtOlwiY29sdW1uOmJ1bmRsZV9jb21tb25fdWlkO3R5cGU6dGV4dDtjb21tZW50OuWll+mkkOWFrOWFsUlEXCJgXG5cdEFkZEJ1bmRsZUNvbW1vblVpZCAgICBzdHJpbmcgIGBqc29uOlwiYWRkQnVuZGxlQ29tbW9uVWlkXCIgZ29ybTpcImNvbHVtbjphZGRfYnVuZGxlX2NvbW1vbl91aWQ7dHlwZTp0ZXh0O2NvbW1lbnQ66ZmE5Yqg5aWX6aSQ5YWs5YWxSURcImBcblx0RmluYW5jaWFsQ29uZmlybWF0aW9uIGludDMyICAgYGpzb246XCJmaW5hbmNpYWxDb25maXJtYXRpb25cIiBnb3JtOlwiY29sdW1uOmZpbmFuY2lhbF9jb25maXJtYXRpb247dHlwZTppbnQ7Y29tbWVudDrotKLliqHnoa7orqQgMTrmnKrnoa7orqQgMjrlt7Lnoa7orqRcImBcbn1cblxuLy8g6LSi5Yqh56Gu6K6k54q25oCBXG5jb25zdCAoXG5cdENvbmZpcm1hdGlvbk5vdENvbmZpcm1lZCA9IDFcblx0Q29uZmlybWF0aW9uQ29uZmlybWVkICAgID0gMlxuKVxuLi4uXG5QYXRoOiBpbnRlcm5hbC9sb2dpYy9vcmRlclJlY29yZHNMb2dpYy5nb1xucGFja2FnZSBsb2dpY1xuXG5pbXBvcnQgKFxuXHRcIm1pY3JvLWJ1bmRsZS9pbnRlcm5hbC9kYW9cIlxuXHRcIm1pY3JvLWJ1bmRsZS9pbnRlcm5hbC9tb2RlbFwiXG5cdFwibWljcm8tYnVuZGxlL3BiL2J1bmRsZVwiXG5cdFwibWljcm8tYnVuZGxlL3BrZy9hcHBcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wa2cvdXRpbHNcIlxuXG5cdFwiZ2l0aHViLmNvbS9qaW56aHUvY29waWVyXCJcbilcblxuZnVuYyBDcmVhdGVPcmRlclJlY29yZChyZXEgKmJ1bmRsZS5PcmRlclJlY29yZCkgKHJlcyAqYnVuZGxlLkNvbW1vblJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5Db21tb25SZXNwb25zZSlcblx0b3JkZXJSZWNvcmQgOj0gbmV3KG1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkcylcblx0XyA9IGNvcGllci5Db3B5V2l0aE9wdGlvbigmb3JkZXJSZWNvcmQsIHJlcSwgY29waWVyLk9wdGlvbntEZWVwQ29weTogdHJ1ZX0pXG5cdG9yZGVyUmVjb3JkLlVVSUQgPSBhcHAuTW9kdWxlQ2xpZW50cy5TZk5vZGUuR2VuZXJhdGUoKS5CYXNlNjQoKVxuXHRvcmRlclJlY29yZC5PcmRlck5vID0gdXRpbHMuR2V0T3JkZXJObygpXG5cdG9yZGVyUmVjb3JkLkJ1bmRsZVVVSUQgPSByZXEuQnVuZGxlVXVpZFxuXHRvcmRlclJlY29yZC5WYWx1ZUFkZEJ1bmRsZVVVSUQgPSByZXEuVmFsdWVBZGRCdW5kbGVVdWlkXG5cdG9yZGVyUmVjb3JkLkZpbmFuY2lhbENvbmZpcm1hdGlvbiA9IG1vZGVsLkNvbmZpcm1hdGlvbk5vdENvbmZpcm1lZFxuXG5cdHJlcywgZXJyID0gZGFvLkNyZWF0ZU9yZGVyUmVjb3JkKG9yZGVyUmVjb3JkKVxuXHRyZXR1cm5cbn1cblxuZnVuYyBVcGRhdGVPcmRlclJlY29yZChyZXEgKmJ1bmRsZS5PcmRlclJlY29yZCkgKHJlcyAqYnVuZGxlLkNvbW1vblJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5Db21tb25SZXNwb25zZSlcblx0b3JkZXJSZWNvcmQgOj0gbmV3KG1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkcylcblx0XyA9IGNvcGllci5Db3B5V2l0aE9wdGlvbigmb3JkZXJSZWNvcmQsIHJlcSwgY29waWVyLk9wdGlvbntEZWVwQ29weTogdHJ1ZX0pXG5cdG9yZGVyUmVjb3JkLlVVSUQgPSByZXEuVXVpZFxuXHRvcmRlclJlY29yZC5CdW5kbGVVVUlEID0gcmVxLkJ1bmRsZVV1aWRcblx0cmVzLCBlcnIgPSBkYW8uVXBkYXRlT3JkZXJSZWNvcmQob3JkZXJSZWNvcmQpXG5cdHJldHVyblxufVxuXG5mdW5jIFVwZGF0ZU9yZGVyUmVjb3JkQnlPcmRlck5vKHJlcSAqYnVuZGxlLk9yZGVyUmVjb3JkKSAocmVzICpidW5kbGUuQ29tbW9uUmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLkNvbW1vblJlc3BvbnNlKVxuXHRvcmRlclJlY29yZCA6PSBuZXcobW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzKVxuXHRfID0gY29waWVyLkNvcHlXaXRoT3B0aW9uKCZvcmRlclJlY29yZCwgcmVxLCBjb3BpZXIuT3B0aW9ue0RlZXBDb3B5OiB0cnVlfSlcblx0b3JkZXJSZWNvcmQuVVVJRCA9IHJlcS5VdWlkXG5cdG9yZGVyUmVjb3JkLkJ1bmRsZVVVSUQgPSByZXEuQnVuZGxlVXVpZFxuXHRyZXMsIGVyciA9IGRhby5VcGRhdGVPcmRlclJlY29yZEJ5T3JkZXJOTyhvcmRlclJlY29yZClcblx0cmV0dXJuXG59XG5cbmZ1bmMgT3JkZXJSZWNvcmRzTGlzdChyZXEgKmJ1bmRsZS5PcmRlclJlY29yZHNSZXF1ZXN0KSAocmVzICpidW5kbGUuT3JkZXJSZWNvcmRzUmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLk9yZGVyUmVjb3Jkc1Jlc3BvbnNlKVxuXHRyZXMsIGVyciA9IGRhby5PcmRlclJlY29yZHNMaXN0KHJlcSlcblx0cmV0dXJuXG59XG5cbmZ1bmMgT3JkZXJSZWNvcmRzRGV0YWlsKHJlcSAqYnVuZGxlLk9yZGVyUmVjb3Jkc0RldGFpbFJlcXVlc3QpIChyZXMgKmJ1bmRsZS5PcmRlclJlY29yZHNEZXRhaWxSZXNwb25zZSwgZXJyIGVycm9yKSB7XG5cdHJlcyA9IG5ldyhidW5kbGUuT3JkZXJSZWNvcmRzRGV0YWlsUmVzcG9uc2UpXG5cdHJlcy5PcmRlclJlY29yZCA9IG5ldyhidW5kbGUuT3JkZXJSZWNvcmQpXG5cdHJlcy5PcmRlclJlY29yZCwgZXJyID0gZGFvLk9yZGVyUmVjb3JkRGV0YWlsKHJlcSlcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmVzLk1zZyA9IGVyci5FcnJvcigpXG5cdH1cblx0cmV0dXJuXG59XG4uLi5cblBhdGg6IHBiL2J1bmRsZS5wcm90b1xuLi4uXG5cbm1lc3NhZ2UgT3JkZXJSZWNvcmQge1xuICBzdHJpbmcgdXVpZCA9IDEgW2pzb25fbmFtZSA9IFwidXVpZFwiXTtcbiAgc3RyaW5nIGJ1bmRsZVV1aWQgPSAyIFtqc29uX25hbWUgPSBcImJ1bmRsZVV1aWRcIl07XG4gIHN0cmluZyBjdXN0b21lcklEID0gMyBbanNvbl9uYW1lID0gXCJjdXN0b21lcklEXCJdO1xuICBzdHJpbmcgY3VzdG9tZXJOdW0gPSA0IFtqc29uX25hbWUgPSBcImN1c3RvbWVyTnVtXCJdO1xuICBzdHJpbmcgY3VzdG9tZXJOYW1lID0gNSBbanNvbl9uYW1lID0gXCJjdXN0b21lck5hbWVcIl07XG4gIGZsb2F0ICBhbW91bnQgPSA2IFtqc29uX25hbWUgPSBcImFtb3VudFwiXTtcbiAgaW50NjQgIGFtb3VudFR5cGUgPSA3IFtqc29uX25hbWUgPSBcImFtb3VudFR5cGVcIl07XG4gIHN0cmluZyBzaWduQ29udHJhY3QgPSA4IFtqc29uX25hbWUgPSBcInNpZ25Db250cmFjdFwiXTtcbiAgc3RyaW5nIHNpZ25hdHVyZSA9IDkgW2pzb25fbmFtZSA9IFwic2lnbmF0dXJlXCJdO1xuICBzdHJpbmcgc2lnbmVkVGltZSA9IDEwIFtqc29uX25hbWUgPSBcInNpZ25lZFRpbWVcIl07XG4gIGludDY0IHBheVR5cGUgPSAxMSBbanNvbl9uYW1lID0gXCJwYXlUeXBlXCJdO1xuICBzdHJpbmcgcGF5VGltZSA9IDEyIFtqc29uX25hbWUgPSBcInBheVRpbWVcIl07XG4gIHN0cmluZyBjaGVja291dFNlc3Npb25JZCA9IDEzIFtqc29uX25hbWUgPSBcImNoZWNrb3V0U2Vzc2lvbklkXCJdO1xuICBzdHJpbmcgY2hlY2tvdXRTZXNzaW9uVXJsID0gMTQgW2pzb25fbmFtZSA9IFwiY2hlY2tvdXRTZXNzaW9uVXJsXCJdO1xuLi4uXG5cbm1lc3NhZ2UgT3JkZXJSZWNvcmRzUmVxdWVzdCB7XG4gIGludDMyIHBhZ2UgPSAxIFtqc29uX25hbWUgPSBcInBhZ2VcIl07XG4gIGludDMyIHBhZ2VTaXplID0gMiBbanNvbl9uYW1lID0gXCJwYWdlU2l6ZVwiXTtcbiAgc3RyaW5nIGN1c3RvbWVyTnVtID0gMyBbanNvbl9uYW1lID0gXCJjdXN0b21lck51bVwiXTtcbiAgc3RyaW5nIGN1c3RvbWVyTmFtZSA9IDQgW2pzb25fbmFtZSA9IFwiY3VzdG9tZXJOYW1lXCJdO1xuICBzdHJpbmcgYnVuZGxlVVVJRCA9IDUgW2pzb25fbmFtZSA9IFwiYnVuZGxlVVVJRFwiXTtcbiAgc3RyaW5nIG9yZGVyTm8gPSA2IFtqc29uX25hbWUgPSBcIm9yZGVyTm9cIl07XG4gIGludDY0ICBzdGF0dXMgPSA3IFtqc29uX25hbWUgPSBcInN0YXR1c1wiXTtcbiAgc3RyaW5nIGJ1bmRsZU5hbWUgPSA4IFtqc29uX25hbWUgPSBcImJ1bmRsZU5hbWVcIl07XG4gIHN0cmluZyBzdGFydFNpZ25lZFRpbWUgPSA5IFtqc29uX25hbWUgPSBcInN0YXJ0U2lnbmVkVGltZVwiXTtcbiAgc3RyaW5nIGVuZFNpZ25lZFRpbWUgPSAxMCBbanNvbl9uYW1lID0gXCJlbmRTaWduZWRUaW1lXCJdO1xuICBzdHJpbmcgc3RhcnRQYXlUaW1lID0gMTEgW2pzb25fbmFtZSA9IFwic3RhcnRQYXlUaW1lXCJdO1xuICBzdHJpbmcgZW5kUGF5VGltZSA9IDEyIFtqc29uX25hbWUgPSBcImVuZFBheVRpbWVcIl07XG4gIHN0cmluZyBjdXN0b21lcklEID0gMTMgW2pzb25fbmFtZSA9IFwiY3VzdG9tZXJJRFwiXTtcbiAgaW50NjQgaXNIYXZlVmFsdWVBZGQgPSAxNCBbanNvbl9uYW1lID0gXCJpc0hhdmVWYWx1ZUFkZFwiXTsvL+acieaXoOWinuWAvOmAiemhuVxufVxuXG5tZXNzYWdlIE9yZGVyUmVjb3Jkc1Jlc3BvbnNlIHtcbiAgcmVwZWF0ZWQgT3JkZXJSZWNvcmQgb3JkZXJSZWNvcmRzID0gMSBbanNvbl9uYW1lID0gXCJvcmRlclJlY29yZHNcIl07XG4gIGludDMyIHRvdGFsID0gMiBbanNvbl9uYW1lID0gXCJ0b3RhbFwiXTtcbn1cblxubWVzc2FnZSBPcmRlclJlY29yZHNEZXRhaWxSZXF1ZXN0IHtcbiAgc3RyaW5nIHV1aWQgPSAxIFtqc29uX25hbWUgPSBcInV1aWRcIl07XG4gIHN0cmluZyBvcmRlck5vID0gMiBbanNvbl9uYW1lID0gXCJvcmRlck5vXCJdO1xuICBzdHJpbmcgY3VzdG9tZXJJRCA9IDMgW2pzb25fbmFtZSA9IFwiY3VzdG9tZXJJRFwiXTtcbn1cblxubWVzc2FnZSBPcmRlclJlY29yZHNEZXRhaWxSZXNwb25zZSB7XG4gIE9yZGVyUmVjb3JkIG9yZGVyUmVjb3JkID0gMSBbanNvbl9uYW1lID0gXCJvcmRlclJlY29yZFwiXTtcbiAgc3RyaW5nIG1zZyA9IDIgW2pzb25fbmFtZSA9IFwibXNnXCJdO1xufVxuLi4uXG5QYXRoOiBpbnRlcm5hbC9kYW8vYnVuZGxlRGFvLmdvXG4uLi5cblxuZnVuYyBCdW5kbGVMaXN0KHJlcSAqYnVuZGxlLkJ1bmRsZUxpc3RSZXF1ZXN0KSAocmVzICpidW5kbGUuQnVuZGxlTGlzdFJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5CdW5kbGVMaXN0UmVzcG9uc2UpXG5cdHJlcy5CdW5kbGVzID0gbWFrZShbXSpidW5kbGUuQnVuZGxlUHJvZmlsZSwgMClcblx0YnVuZGxlcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZVByb2ZpbGUsIDApXG5cblx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZVByb2ZpbGV7fSlcblxuXHRpZiByZXEuTmFtZSAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwibmFtZSBsaWtlID9cIiwgXCIlXCIrcmVxLk5hbWUrXCIlXCIpXG5cdH1cblxuXHRpZiByZXEuQ29udGVudCAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY29udGVudCBsaWtlID9cIiwgXCIlXCIrcmVxLkNvbnRlbnQrXCIlXCIpXG5cdH1cblxuXHRpZiByZXEuTGFuZ3VhZ2UgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImxhbmd1YWdlIGxpa2UgP1wiLCByZXEuTGFuZ3VhZ2UpXG5cdH1cblxuXHRjb3VudCA6PSAqcXVlcnlcblxuXHRpZiByZXEuUGFnZVNpemUgIT0gMCAmJiByZXEuUGFnZSAhPSAwIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LkxpbWl0KGludChyZXEuUGFnZVNpemUpKS5PZmZzZXQoaW50KHJlcS5QYWdlLTEpICogaW50KHJlcS5QYWdlU2l6ZSkpXG5cdH1cbi4uLlxuXG5cdC8vIF8gPSBjb3BpZXIuQ29weVdpdGhPcHRpb24oJnJlcy5CdW5kbGVzLCBidW5kbGVzLCBjb3BpZXIuT3B0aW9ue0RlZXBDb3B5OiB0cnVlfSlcblxuXHQvLyBmbXQuUHJpbnRmKFwicmVzLkJ1bmRsZXMgJSt2XFxuXCIsIHJlcy5CdW5kbGVzKVxuXG5cdHZhciB0b3RhbCBpbnQ2NFxuXG5cdGNvdW50LkNvdW50KCZ0b3RhbClcblxuXHRyZXMuVG90YWwgPSBpbnQzMih0b3RhbClcblxuXHRyZXR1cm5cblxufVxuXG5mdW5jIEJ1bmRsZURldGFpbCh1dWlkIHN0cmluZykgKHJlcyAqYnVuZGxlLkJ1bmRsZVByb2ZpbGUsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLkJ1bmRsZVByb2ZpbGUpXG5cdGJ1bmRsZVByb2ZpbGUgOj0gbmV3KG1vZGVsLkJ1bmRsZVByb2ZpbGUpXG5cdGVyciA9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLldoZXJlKFwidXVpZCA9ID9cIiwgdXVpZCkuRmlyc3QoJmJ1bmRsZVByb2ZpbGUpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVybiByZXMsIGNvbW1vbkVyci5SZXR1cm5FcnJvcihlcnIsIG1zZy5FcnJvckdldEJ1bmRsZUluZm8sIFwi6I635Y+W5aWX6aSQ5L+h5oGv5aSx6LSlOiBcIilcblx0fVxuLi4uXG5QYXRoOiBpbnRlcm5hbC9sb2dpYy92YWx1ZUFkZEJ1bmRsZUxvZ2ljLmdvXG4uLi5cblxuLy8g5aKe5YC85aWX6aSQ5YiX6KGoXG5mdW5jIFZhbHVlQWRkQnVuZGxlTGlzdChyZXEgKmJ1bmRsZS5WYWx1ZUFkZEJ1bmRsZUxpc3RSZXF1ZXN0KSAocmVzICpidW5kbGUuVmFsdWVBZGRCdW5kbGVMaXN0UmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSAmYnVuZGxlLlZhbHVlQWRkQnVuZGxlTGlzdFJlc3BvbnNle31cblx0dmFyIGJ1bmRsZUNvbW1vblVpZCBzdHJpbmdcblx0dmFyIGJ1bmRsZVByb2ZpbGUgKm1vZGVsLkJ1bmRsZVByb2ZpbGVcblx0YnVuZGxlUHJvZmlsZSwgZXJyID0gZGFvLkJ1bmRsZVByb2ZpbGVEZXRhaWwocmVxLkJ1bmRsZVV1aWQpXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVyblxuXHR9IGVsc2Uge1xuXHRcdHZhciBidW5kbGVPcmRlclJlY29yZCAqbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzXG5cdFx0YnVuZGxlT3JkZXJSZWNvcmQsIGVyciA9IGRhby5HZXRCdW5kbGVPcmRlclJlY29yZHNCeUNvbW1vblVpZEFuZFVzZXJJZChidW5kbGVQcm9maWxlLkJ1bmRsZUNvbW1vblVpZCwgcmVxLlVzZXJJZClcblx0XHRpZiBlcnIgIT0gbmlsIHtcblx0XHRcdGVyciA9IG5pbFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRidW5kbGVDb21tb25VaWQgPSBidW5kbGVPcmRlclJlY29yZC5CdW5kbGVDb21tb25VaWRcblx0XHRcdHJlcy5PcmRlck5vID0gdHJ1ZVxuXHRcdFx0cmVzLlByaWNlID0gYnVuZGxlT3JkZXJSZWNvcmQuVmFsdWVBZGRCdW5kbGVBbW91bnRcblx0XHRcdHJlcy5OdW0gPSBidW5kbGVPcmRlclJlY29yZC5OdW1cblxuXHRcdFx0aWYgYnVuZGxlT3JkZXJSZWNvcmQuVmFsdWVBZGRCdW5kbGVVVUlEICE9IFwiXCIge1xuXHRcdFx0XHRyZXMuU3RhdHVzID0gdHJ1ZVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuLi4uXG5cblx0cmVzLkRhdGEgPSAmYnVuZGxlLlZhbHVlQWRkQnVuZGxlUHJvZmlsZXtcblx0XHRVdWlkOiAgICAgICAgICAgICAgICB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuVVVJRCxcblx0XHROdW06ICAgICAgICAgICAgICAgICB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuTnVtLFxuXHRcdE9yaWdpbmFsUHJpY2U6ICAgICAgIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5PcmlnaW5hbFByaWNlLFxuXHRcdERpc2NvdW50UHJpY2U6ICAgICAgIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5EaXNjb3VudFByaWNlLFxuXHRcdFRvdGFsUHJpY2U6ICAgICAgICAgIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5Ub3RhbFByaWNlLFxuXHRcdFNhdmVkQW1vdW50OiAgICAgICAgIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5TYXZlZEFtb3VudCxcblx0XHREaXNjb3VudFByaWNlU3RhdHVzOiB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuRGlzY291bnRQcmljZVN0YXR1cyxcblx0XHRDaG9vc2U6ICAgICAgICAgICAgICB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuQ2hvb3NlLFxuXHRcdEFkZEJ1bmRsZUNvbW1vblVpZDogIHZhbHVlQWRkQnVuZGxlUHJvZmlsZS5BZGRCdW5kbGVDb21tb25VaWQsXG5cdH1cblxuXHRidW5kbGVPcmRlclJlY29yZHMgOj0gJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9XG5cdGJ1bmRsZU9yZGVyUmVjb3JkcywgZXJyID0gZGFvLkJ1bmRsZU9yZGVyUmVjb3Jkc0RldGFpbEJ5QWRkVWlkKHJlcS5VdWlkKVxuXHRpZiBlcnIgLi4uIiwiaXNfZXJyb3IiOmZhbHNlLCJyZXF1ZXN0X2lkIjoiIiwidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxU0ZHdXVhc3V2aHpKamRQQUdjejdNbiJ9fSx7ImlkIjoyLCJ0eXBlIjo0LCJpZGVfc3RhdGVfbm9kZSI6eyJ3b3Jrc3BhY2VGb2xkZXJzIjpbeyJyZXBvc2l0b3J5Um9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSIsImZvbGRlclJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUifV0sIndvcmtzcGFjZUZvbGRlcnNVbmNoYW5nZWQiOmZhbHNlfX1dLCJ0aW1lc3RhbXAiOiIyMDI1LTA1LTA5VDA2OjAzOjExLjY2NloiLCJyZXNwb25zZV90ZXh0IjoiSSBjYW4gc2VlIHRoZSBpc3N1ZSBpbiB5b3VyIFNRTCBxdWVyeS4gVGhlIGVycm9yIGlzIG9jY3VycmluZyBpbiB0aGUgYE9yZGVyUmVjb3Jkc0xpc3RgIGZ1bmN0aW9uIGluIGBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvYC4gTGV0IG1lIGV4YW1pbmUgdGhlIHByb2JsZW1hdGljIFNRTCBqb2luIHN0YXRlbWVudCBtb3JlIGNsb3NlbHk6XG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiMTY0NWFkMGUtNzFjMi00YWQzLTlhMzUtZGIxZjYyMTEzN2UzIiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxR0cxMmk1TDFnUHRRTmNMRGZ0ZkhZZyIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwic3RyX3JlcGxhY2VcIiwgXCJwYXRoXCI6IFwiaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nb1wiLCBcInN0cl9yZXBsYWNlX2VudHJpZXNcIjogW3tcIm9sZF9zdHJcIjogXCJcXHRxdWVyeS5Kb2lucyhcXFwibGVmdCBqb2luIG1pY3JvLWFjY291bnQudXNlciBvbiBtaWNyby1hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkcy5jdXN0b21lcl9pZFxcXCIpXCIsIFwibmV3X3N0clwiOiBcIlxcdHF1ZXJ5LkpvaW5zKFxcXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcXFwiKVwiLCBcIm9sZF9zdHJfc3RhcnRfbGluZV9udW1iZXJcIjogNzUsIFwib2xkX3N0cl9lbmRfbGluZV9udW1iZXJcIjogNzV9XX0iLCJtY3Bfc2VydmVyX25hbWUiOiIiLCJtY3BfdG9vbF9uYW1lIjoiIn19LHsiaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJJIGZvdW5kIHRoZSBpc3N1ZSEgVGhlIHByb2JsZW0gaXMgaW4gbGluZSA3NSBvZiBgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nb2AuIFRoZSBTUUwgc3ludGF4IGVycm9yIGlzIG9jY3VycmluZyBiZWNhdXNlIG9mIHRoZSBoeXBoZW4gKGAtYCkgaW4gdGhlIGRhdGFiYXNlIG5hbWUgYG1pY3JvLWFjY291bnRgLiBJbiBTUUwsIGh5cGhlbnMgYXJlIG5vdCBhbGxvd2VkIGluIHVucXVvdGVkIGlkZW50aWZpZXJzLlxuXG5MZXQncyBmaXggdGhpcyBieSBwcm9wZXJseSBxdW90aW5nIHRoZSBkYXRhYmFzZSBhbmQgdGFibGUgbmFtZXMgaW4gdGhlIEpPSU4gc3RhdGVtZW50OlxuIn0seyJpZCI6MiwidHlwZSI6MiwiY29udGVudCI6IiJ9LHsiaWQiOjMsInR5cGUiOjMsImNvbnRlbnQiOiIifV0sInNlZW5fc3RhdGUiOiJzZWVuIiwic3RydWN0dXJlZF9yZXF1ZXN0X25vZGVzIjpbeyJpZCI6MSwidHlwZSI6MSwidG9vbF9yZXN1bHRfbm9kZSI6eyJjb250ZW50IjoiSGVyZSdzIHRoZSByZXN1bHQgb2YgcnVubmluZyBgY2F0IC1uYCBvbiBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvOlxuICAgIDcwXHRcdHJlcy5PcmRlclJlY29yZHMgPSBtYWtlKFtdKmJ1bmRsZS5PcmRlclJlY29yZCwgMClcbiAgICA3MVx0XHRyZWNvcmRzIDo9IG1ha2UoW10qbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCAwKVxuICAgIDcyXHRcbiAgICA3M1x0XHRxdWVyeSA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pXG4gICAgNzRcdFxuICAgIDc1XHRcdHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIG1pY3JvLWFjY291bnQudXNlciBvbiBtaWNyby1hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkcy5jdXN0b21lcl9pZFwiKVxuICAgIDc2XHRcbiAgICA3N1x0XHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgICA3OFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG4gICAgNzlcdFx0fVxuICAgIDgwXHRcbiAgICA4MVx0XHRpZiByZXEuQ3VzdG9tZXJOdW0gIT0gXCJcIiB7XG4gICAgODJcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfbnVtIGxpa2UgP1wiLCBcIiVcIityZXEuQ3VzdG9tZXJOdW0rXCIlXCIpXG4gICAgODNcdFx0fVxuICAgIDg0XHRcbiAgICA4NVx0XHRpZiByZXEuQ3VzdG9tZXJOYW1lICE9IFwiXCIge1xuICAgIDg2XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX25hbWUgbGlrZSA/XCIsIFwiJVwiK3JlcS5DdXN0b21lck5hbWUrXCIlXCIpXG4gICAgODdcdFx0fVxuICAgIDg4XHRcbiAgICA4OVx0XHRpZiByZXEuQnVuZGxlTmFtZSAhPSBcIlwiIHtcbiAgICA5MFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJidW5kbGVfbmFtZSBsaWtlID9cIiwgXCIlXCIrcmVxLkJ1bmRsZU5hbWUrXCIlXCIpXG5Ub3RhbCBsaW5lcyBpbiBmaWxlOiAyMzlcbiIsImlzX2Vycm9yIjpmYWxzZSwicmVxdWVzdF9pZCI6IiIsInRvb2xfdXNlX2lkIjoidG9vbHVfdnJ0eF8wMU5SR3BzVEpVVm9OaTROa2JmYjhQY3MifX0seyJpZCI6MiwidHlwZSI6NCwiaWRlX3N0YXRlX25vZGUiOnsid29ya3NwYWNlRm9sZGVycyI6W3sicmVwb3NpdG9yeVJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUiLCJmb2xkZXJSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIn1dLCJ3b3Jrc3BhY2VGb2xkZXJzVW5jaGFuZ2VkIjpmYWxzZX19XSwidGltZXN0YW1wIjoiMjAyNS0wNS0wOVQwNjowMzoxNy4yNDRaIiwicmVzcG9uc2VfdGV4dCI6IkkgZm91bmQgdGhlIGlzc3VlISBUaGUgcHJvYmxlbSBpcyBpbiBsaW5lIDc1IG9mIGBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvYC4gVGhlIFNRTCBzeW50YXggZXJyb3IgaXMgb2NjdXJyaW5nIGJlY2F1c2Ugb2YgdGhlIGh5cGhlbiAoYC1gKSBpbiB0aGUgZGF0YWJhc2UgbmFtZSBgbWljcm8tYWNjb3VudGAuIEluIFNRTCwgaHlwaGVucyBhcmUgbm90IGFsbG93ZWQgaW4gdW5xdW90ZWQgaWRlbnRpZmllcnMuXG5cbkxldCdzIGZpeCB0aGlzIGJ5IHByb3Blcmx5IHF1b3RpbmcgdGhlIGRhdGFiYXNlIGFuZCB0YWJsZSBuYW1lcyBpbiB0aGUgSk9JTiBzdGF0ZW1lbnQ6XG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiMjcwYTEyMDMtZGFiMS00YWY1LTlmNWItMWM4YWY5YzVkZDEyIiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxODdETHJWQm9neVZDZ2tjUVYzS3huRCIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwidmlld1wiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwidmlld19yYW5nZVwiOiBbMTIwLCAxNDBdfSIsIm1jcF9zZXJ2ZXJfbmFtZSI6IiIsIm1jcF90b29sX25hbWUiOiIifX0seyJpZCI6MCwidHlwZSI6MCwiY29udGVudCI6Ik5vdyBsZXQncyBhbHNvIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc2ltaWxhciBpc3N1ZXMgaW4gdGhlIHNhbWUgZmlsZTpcbiJ9LHsiaWQiOjIsInR5cGUiOjIsImNvbnRlbnQiOiIifSx7ImlkIjozLCJ0eXBlIjozLCJjb250ZW50IjoiIn1dLCJzZWVuX3N0YXRlIjoic2VlbiIsInN0cnVjdHVyZWRfcmVxdWVzdF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjEsInRvb2xfcmVzdWx0X25vZGUiOnsiY29udGVudCI6IlN1Y2Nlc3NmdWxseSBlZGl0ZWQgdGhlIGZpbGUgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nby5cblJlc3VsdCBmb3Igc3RyX3JlcGxhY2UgZm9yIGVudHJ5IHdpdGggaW5kZXggWzBdOlxuUmVwbGFjZW1lbnQgc3VjY2Vzc2Z1bC5cbkVkaXRlZCBzZWN0aW9uIGFmdGVyIElERSBhdXRvLWZvcm1hdHRpbmcgd2FzIGFwcGxpZWQ6XG4gICAgNzFcdFx0cmVjb3JkcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgMClcbiAgICA3Mlx0XG4gICAgNzNcdFx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuICAgIDc0XHRcbiAgICA3NVx0XHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFwiKVxuICAgIDc2XHRcbiAgICA3N1x0XHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgICA3OFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG4gICAgNzlcdFx0fVxuXG5SZXZpZXcgdGhlIGNoYW5nZXMgYW5kIG1ha2Ugc3VyZSB0aGV5IGFyZSBhcyBleHBlY3RlZCAoY29ycmVjdCBpbmRlbnRhdGlvbiwgbm8gZHVwbGljYXRlIGxpbmVzLCBldGMpLlxuRWRpdCB0aGUgZmlsZSBhZ2FpbiBpZiBuZWNlc3NhcnkuXG4iLCJpc19lcnJvciI6ZmFsc2UsInJlcXVlc3RfaWQiOiIiLCJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFHRzEyaTVMMWdQdFFOY0xEZnRmSFlnIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6MDM6MjUuNDY1WiIsInJlc3BvbnNlX3RleHQiOiJOb3cgbGV0J3MgYWxzbyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHNpbWlsYXIgaXNzdWVzIGluIHRoZSBzYW1lIGZpbGU6XG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiMmFmYTY5ZDctNjAzMC00MzQ2LWFkOWMtYWRiNzViMjk2NWQyIiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxTk0zaEpVUnhLVVFLdnJ0WW9pTFlXOCIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwic3RyX3JlcGxhY2VcIiwgXCJwYXRoXCI6IFwiaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nb1wiLCBcInN0cl9yZXBsYWNlX2VudHJpZXNcIjogW3tcIm9sZF9zdHJcIjogXCJcXHRcXHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFxcXCJtaWNyby1hY2NvdW50LnVzZXIudGVsX251bSBsaWtlID9cXFwiLCBcXFwiJVxcXCIrcmVxLlRlbE51bStcXFwiJVxcXCIpXCIsIFwibmV3X3N0clwiOiBcIlxcdFxcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXFxcImBtaWNyby1hY2NvdW50YC5gdXNlcmAuYHRlbF9udW1gIGxpa2UgP1xcXCIsIFxcXCIlXFxcIityZXEuVGVsTnVtK1xcXCIlXFxcIilcIiwgXCJvbGRfc3RyX3N0YXJ0X2xpbmVfbnVtYmVyXCI6IDEzMiwgXCJvbGRfc3RyX2VuZF9saW5lX251bWJlclwiOiAxMzJ9XX0iLCJtY3Bfc2VydmVyX25hbWUiOiIiLCJtY3BfdG9vbF9uYW1lIjoiIn19LHsiaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJJIGZvdW5kIGFub3RoZXIgaXNzdWUgaW4gbGluZSAxMzIuIExldCdzIGZpeCB0aGF0IGFzIHdlbGw6XG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjoxLCJ0b29sX3Jlc3VsdF9ub2RlIjp7ImNvbnRlbnQiOiJIZXJlJ3MgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGBjYXQgLW5gIG9uIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ286XG4gICAxMjBcdFxuICAgMTIxXHRcdGlmIHJlcS5Jc0hhdmVWYWx1ZUFkZCA9PSAxIHsgLy8g5pyJXG4gICAxMjJcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwidmFsdWVfYWRkX2J1bmRsZV91dWlkICE9ID9cIiwgXCJcIilcbiAgIDEyM1x0XHR9IGVsc2UgaWYgcmVxLklzSGF2ZVZhbHVlQWRkID09IDIgeyAvLyDml6BcbiAgIDEyNFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJJRk5VTEwodmFsdWVfYWRkX2J1bmRsZV91dWlkLCcnKSA9ICcnXCIpXG4gICAxMjVcdFx0fVxuICAgMTI2XHRcbiAgIDEyN1x0XHRpZiByZXEuRmluYW5jaWFsQ29uZmlybWF0aW9uICE9IDAge1xuICAgMTI4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImZpbmFuY2lhbF9jb25maXJtYXRpb24gPSA/XCIsIHJlcS5GaW5hbmNpYWxDb25maXJtYXRpb24pXG4gICAxMjlcdFx0fVxuICAgMTMwXHRcbiAgIDEzMVx0XHRpZiByZXEuVGVsTnVtICE9IFwiXCIge1xuICAgMTMyXHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIm1pY3JvLWFjY291bnQudXNlci50ZWxfbnVtIGxpa2UgP1wiLCBcIiVcIityZXEuVGVsTnVtK1wiJVwiKVxuICAgMTMzXHRcdH1cbiAgIDEzNFx0XG4gICAxMzVcdFx0Y291bnQgOj0gKnF1ZXJ5XG4gICAxMzZcdFxuICAgMTM3XHRcdGlmIHJlcS5QYWdlU2l6ZSAhPSAwICYmIHJlcS5QYWdlICE9IDAge1xuICAgMTM4XHRcdFx0cXVlcnkgPSBxdWVyeS5MaW1pdChpbnQocmVxLlBhZ2VTaXplKSkuT2Zmc2V0KGludChyZXEuUGFnZS0xKSAqIGludChyZXEuUGFnZVNpemUpKVxuICAgMTM5XHRcdH1cbiAgIDE0MFx0XG5Ub3RhbCBsaW5lcyBpbiBmaWxlOiAyMzlcbiIsImlzX2Vycm9yIjpmYWxzZSwicmVxdWVzdF9pZCI6IiIsInRvb2xfdXNlX2lkIjoidG9vbHVfdnJ0eF8wMTg3RExyVkJvZ3lWQ2drY1FWM0t4bkQifX0seyJpZCI6MiwidHlwZSI6NCwiaWRlX3N0YXRlX25vZGUiOnsid29ya3NwYWNlRm9sZGVycyI6W3sicmVwb3NpdG9yeVJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUiLCJmb2xkZXJSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIn1dLCJ3b3Jrc3BhY2VGb2xkZXJzVW5jaGFuZ2VkIjpmYWxzZX19XSwidGltZXN0YW1wIjoiMjAyNS0wNS0wOVQwNjowMzozMC40MjlaIiwicmVzcG9uc2VfdGV4dCI6IkkgZm91bmQgYW5vdGhlciBpc3N1ZSBpbiBsaW5lIDEzMi4gTGV0J3MgZml4IHRoYXQgYXMgd2VsbDpcbiIsIndvcmtzcGFjZV9maWxlX2NodW5rcyI6W119LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiJjYjYzZTc5Zi0xZGVkLTQ4NmEtOGUwOS1jMTY3Nzk1ODZiMjIiLCJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJHcmVhdCEgSSd2ZSBmaXhlZCB0aGUgU1FMIHN5bnRheCBpc3N1ZXMgaW4gdGhlIGBvcmRlclJlY29yZHNEYW8uZ29gIGZpbGUuIExldCBtZSBleHBsYWluIHdoYXQgd2FzIGhhcHBlbmluZzpcblxuIyMgVGhlIFByb2JsZW1cblxuVGhlIGVycm9yIG1lc3NhZ2UgeW91IHJlY2VpdmVkOlxuYGBgXG4xMDY0IC0gWW91IGhhdmUgYW4gZXJyb3IgaW4geW91ciBTUUwgc3ludGF4OyBjaGVjayB0aGUgbWFudWFsIHRoYXQgY29ycmVzcG9uZHMgdG8geW91ciBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBmb3IgdGhlIHJpZ2h0IHN5bnRheCB0byB1c2UgbmVhciAnLWFjY291bnQudXNlciBvbiBtaWNyby1hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkc2N1c3RvbWVyX2lkIFdIRVJFIGAnIGF0IGxpbmUgMVxuYGBgXG5cblRoaXMgd2FzIGhhcHBlbmluZyBiZWNhdXNlIGluIFNRTCwgaWRlbnRpZmllcnMgKGxpa2UgZGF0YWJhc2UgbmFtZXMsIHRhYmxlIG5hbWVzLCBjb2x1bW4gbmFtZXMpIHRoYXQgY29udGFpbiBzcGVjaWFsIGNoYXJhY3RlcnMgc3VjaCBhcyBoeXBoZW5zIChgLWApIG5lZWQgdG8gYmUgcHJvcGVybHkgcXVvdGVkLiBJbiBNeVNRTCwgeW91IGNhbiB1c2UgYmFja3RpY2tzIChgYCBgIGBgKSB0byBxdW90ZSBpZGVudGlmaWVycy5cblxuIyMgVGhlIFNvbHV0aW9uXG5cbkkgbWFkZSB0d28gY2hhbmdlcyB0byBmaXggdGhlIGlzc3VlOlxuXG4xLiBJbiBsaW5lIDc1LCBJIGNoYW5nZWQ6XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gbWljcm8tYWNjb3VudC51c2VyIG9uIG1pY3JvLWFjY291bnQudXNlci5pZCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICBgYGBcbiAgIHRvOlxuICAgYGBgZ29cbiAgIHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIGBtaWNyby1hY2NvdW50YC5gdXNlcmAgb24gYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gaWRgID0gYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3VzdG9tZXJfaWRgXCIpXG4gICBgYGBcblxuMi4gSW4gbGluZSAxMzIsIEkgY2hhbmdlZDpcbiAgIGBgYGdvXG4gICBxdWVyeSA9IHF1ZXJ5LldoZXJlKFwibWljcm8tYWNjb3VudC51c2VyLnRlbF9udW0gbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICBgYGBcbiAgIHRvOlxuICAgYGBgZ29cbiAgIHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJgbWljcm8tYWNjb3VudGAuYHVzZXJgLmB0ZWxfbnVtYCBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIGBgYFxuXG5CeSBwcm9wZXJseSBxdW90aW5nIHRoZSBpZGVudGlmaWVycyB3aXRoIGJhY2t0aWNrcywgTXlTUUwgd2lsbCBub3cgY29ycmVjdGx5IGludGVycHJldCB0aGUgZGF0YWJhc2UgYW5kIHRhYmxlIG5hbWVzIHRoYXQgY29udGFpbiBoeXBoZW5zLlxuXG4jIyBOZXh0IFN0ZXBzXG5cbllvdSBzaG91bGQgbm93IGJlIGFibGUgdG8gcnVuIHlvdXIgYXBwbGljYXRpb24gd2l0aG91dCBlbmNvdW50ZXJpbmcgdGhlIFNRTCBzeW50YXggZXJyb3IuIElmIHlvdSBoYXZlIGFueSBvdGhlciBzaW1pbGFyIGlzc3VlcyB3aXRoIGRhdGFiYXNlIG9yIHRhYmxlIG5hbWVzIGNvbnRhaW5pbmcgc3BlY2lhbCBjaGFyYWN0ZXJzLCByZW1lbWJlciB0byB1c2UgYmFja3RpY2tzIHRvIHF1b3RlIHRoZW0gaW4geW91ciBTUUwgcXVlcmllcy5cbiJ9LHsiaWQiOjIsInR5cGUiOjIsImNvbnRlbnQiOiIifSx7ImlkIjozLCJ0eXBlIjozLCJjb250ZW50IjoiIn1dLCJzZWVuX3N0YXRlIjoic2VlbiIsInN0cnVjdHVyZWRfcmVxdWVzdF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjEsInRvb2xfcmVzdWx0X25vZGUiOnsiY29udGVudCI6IlN1Y2Nlc3NmdWxseSBlZGl0ZWQgdGhlIGZpbGUgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nby5cblJlc3VsdCBmb3Igc3RyX3JlcGxhY2UgZm9yIGVudHJ5IHdpdGggaW5kZXggWzBdOlxuUmVwbGFjZW1lbnQgc3VjY2Vzc2Z1bC5cbkVkaXRlZCBzZWN0aW9uIGFmdGVyIElERSBhdXRvLWZvcm1hdHRpbmcgd2FzIGFwcGxpZWQ6XG4gICAxMjhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiZmluYW5jaWFsX2NvbmZpcm1hdGlvbiA9ID9cIiwgcmVxLkZpbmFuY2lhbENvbmZpcm1hdGlvbilcbiAgIDEyOVx0XHR9XG4gICAxMzBcdFxuICAgMTMxXHRcdGlmIHJlcS5UZWxOdW0gIT0gXCJcIiB7XG4gICAxMzJcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gdGVsX251bWAgbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICAxMzNcdFx0fVxuICAgMTM0XHRcbiAgIDEzNVx0XHRjb3VudCA6PSAqcXVlcnlcbiAgIDEzNlx0XG5cblJldmlldyB0aGUgY2hhbmdlcyBhbmQgbWFrZSBzdXJlIHRoZXkgYXJlIGFzIGV4cGVjdGVkIChjb3JyZWN0IGluZGVudGF0aW9uLCBubyBkdXBsaWNhdGUgbGluZXMsIGV0YykuXG5FZGl0IHRoZSBmaWxlIGFnYWluIGlmIG5lY2Vzc2FyeS5cbiIsImlzX2Vycm9yIjpmYWxzZSwicmVxdWVzdF9pZCI6IiIsInRvb2xfdXNlX2lkIjoidG9vbHVfdnJ0eF8wMU5NM2hKVVJ4S1VRS3ZydFlvaUxZVzgifX0seyJpZCI6MiwidHlwZSI6NCwiaWRlX3N0YXRlX25vZGUiOnsid29ya3NwYWNlRm9sZGVycyI6W3sicmVwb3NpdG9yeVJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUiLCJmb2xkZXJSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIn1dLCJ3b3Jrc3BhY2VGb2xkZXJzVW5jaGFuZ2VkIjpmYWxzZX19XSwidGltZXN0YW1wIjoiMjAyNS0wNS0wOVQwNjowMzozOS41NjFaIiwicmVzcG9uc2VfdGV4dCI6IkdyZWF0ISBJJ3ZlIGZpeGVkIHRoZSBTUUwgc3ludGF4IGlzc3VlcyBpbiB0aGUgYG9yZGVyUmVjb3Jkc0Rhby5nb2AgZmlsZS4gTGV0IG1lIGV4cGxhaW4gd2hhdCB3YXMgaGFwcGVuaW5nOlxuXG4jIyBUaGUgUHJvYmxlbVxuXG5UaGUgZXJyb3IgbWVzc2FnZSB5b3UgcmVjZWl2ZWQ6XG5gYGBcbjEwNjQgLSBZb3UgaGF2ZSBhbiBlcnJvciBpbiB5b3VyIFNRTCBzeW50YXg7IGNoZWNrIHRoZSBtYW51YWwgdGhhdCBjb3JyZXNwb25kcyB0byB5b3VyIE15U1FMIHNlcnZlciB2ZXJzaW9uIGZvciB0aGUgcmlnaHQgc3ludGF4IHRvIHVzZSBuZWFyICctYWNjb3VudC51c2VyIG9uIG1pY3JvLWFjY291bnQudXNlci5pZCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzY3VzdG9tZXJfaWQgV0hFUkUgYCcgYXQgbGluZSAxXG5gYGBcblxuVGhpcyB3YXMgaGFwcGVuaW5nIGJlY2F1c2UgaW4gU1FMLCBpZGVudGlmaWVycyAobGlrZSBkYXRhYmFzZSBuYW1lcywgdGFibGUgbmFtZXMsIGNvbHVtbiBuYW1lcykgdGhhdCBjb250YWluIHNwZWNpYWwgY2hhcmFjdGVycyBzdWNoIGFzIGh5cGhlbnMgKGAtYCkgbmVlZCB0byBiZSBwcm9wZXJseSBxdW90ZWQuIEluIE15U1FMLCB5b3UgY2FuIHVzZSBiYWNrdGlja3MgKGBgIGAgYGApIHRvIHF1b3RlIGlkZW50aWZpZXJzLlxuXG4jIyBUaGUgU29sdXRpb25cblxuSSBtYWRlIHR3byBjaGFuZ2VzIHRvIGZpeCB0aGUgaXNzdWU6XG5cbjEuIEluIGxpbmUgNzUsIEkgY2hhbmdlZDpcbiAgIGBgYGdvXG4gICBxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBtaWNyby1hY2NvdW50LnVzZXIgb24gbWljcm8tYWNjb3VudC51c2VyLmlkID0gYnVuZGxlX29yZGVyX3JlY29yZHMuY3VzdG9tZXJfaWRcIilcbiAgIGBgYFxuICAgdG86XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgIGBgYFxuXG4yLiBJbiBsaW5lIDEzMiwgSSBjaGFuZ2VkOlxuICAgYGBgZ29cbiAgIHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJtaWNyby1hY2NvdW50LnVzZXIudGVsX251bSBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIGBgYFxuICAgdG86XG4gICBgYGBnb1xuICAgcXVlcnkgPSBxdWVyeS5XaGVyZShcImBtaWNyby1hY2NvdW50YC5gdXNlcmAuYHRlbF9udW1gIGxpa2UgP1wiLCBcIiVcIityZXEuVGVsTnVtK1wiJVwiKVxuICAgYGBgXG5cbkJ5IHByb3Blcmx5IHF1b3RpbmcgdGhlIGlkZW50aWZpZXJzIHdpdGggYmFja3RpY2tzLCBNeVNRTCB3aWxsIG5vdyBjb3JyZWN0bHkgaW50ZXJwcmV0IHRoZSBkYXRhYmFzZSBhbmQgdGFibGUgbmFtZXMgdGhhdCBjb250YWluIGh5cGhlbnMuXG5cbiMjIE5leHQgU3RlcHNcblxuWW91IHNob3VsZCBub3cgYmUgYWJsZSB0byBydW4geW91ciBhcHBsaWNhdGlvbiB3aXRob3V0IGVuY291bnRlcmluZyB0aGUgU1FMIHN5bnRheCBlcnJvci4gSWYgeW91IGhhdmUgYW55IG90aGVyIHNpbWlsYXIgaXNzdWVzIHdpdGggZGF0YWJhc2Ugb3IgdGFibGUgbmFtZXMgY29udGFpbmluZyBzcGVjaWFsIGNoYXJhY3RlcnMsIHJlbWVtYmVyIHRvIHVzZSBiYWNrdGlja3MgdG8gcXVvdGUgdGhlbSBpbiB5b3VyIFNRTCBxdWVyaWVzLlxuIiwid29ya3NwYWNlX2ZpbGVfY2h1bmtzIjpbXX0seyJyZXF1ZXN0X2lkIjoiZjI3ZjJjMGQtNGQ1ZS00ZmViLWFlOTctZjI5NzI0NGY4ZjdiIiwidXVpZCI6IjkwMmYzNjdmLTkxNDMtNDIzMC04NWJjLTc0ODZiNDY0MDc2OSIsImNoYXRJdGVtVHlwZSI6ImFnZW50aWMtY2hlY2twb2ludC1kZWxpbWl0ZXIiLCJzdGF0dXMiOiJzdWNjZXNzIiwiZnJvbVRpbWVzdGFtcCI6MTc0Njc3MDU3NjU1MCwidG9UaW1lc3RhbXAiOjE3NDY3NzA2MzAwNDQsInNlZW5fc3RhdGUiOiJzZWVuIn0seyJyZXF1ZXN0X2lkIjoiMTM4NzllOWEtYjIwYy00ZWEwLTk5ZjUtYWIxZGI1MjI0YTM2Iiwic3RhdHVzIjoiY2FuY2VsbGVkIiwiY2hhdEl0ZW1UeXBlIjoiYWdlbnRpYy10dXJuLWRlbGltaXRlciJ9LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiI5NDJhNTdjZS1hMzhjLTQ3ZWEtOTFlNy02MWU0NWVlMDYzZWMiLCJyZXF1ZXN0X21lc3NhZ2UiOiLovazkuYnkuIDkuIsgIOWPr+S7peivhuWIqyBgICIsInJpY2hfdGV4dF9qc29uX3JlcHIiOnsidHlwZSI6ImRvYyIsImNvbnRlbnQiOlt7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiLovazkuYnkuIDkuIsgIOWPr+S7peivhuWIqyBgICJ9XX1dfSwibWVudGlvbmVkX2l0ZW1zIjpbXSwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxQzZ3Rk1NRUNLelYxVEVuVnF6ZldpciIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwidmlld1wiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwidmlld19yYW5nZVwiOiBbNzAsIDgwXX0iLCJtY3Bfc2VydmVyX25hbWUiOiIiLCJtY3BfdG9vbF9uYW1lIjoiIn19LHsiaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJJIHNlZSB0aGUgaXNzdWUuIFlvdSdyZSB0cnlpbmcgdG8gZXNjYXBlIHRoZSBiYWNrdGlja3MgaW4geW91ciBTUUwgcXVlcnkuIExldCBtZSBoZWxwIHlvdSB3aXRoIHRoZSBwcm9wZXIgZXNjYXBpbmcgc3ludGF4LlxuXG5XaGVuIHlvdSdyZSB1c2luZyBkb3VibGUgcXVvdGVzIHRvIGRlZmluZSBhIHN0cmluZyBpbiBHbyBhbmQgbmVlZCB0byBpbmNsdWRlIGJhY2t0aWNrcyB3aXRoaW4gdGhhdCBzdHJpbmcsIHlvdSBuZWVkIHRvIGVzY2FwZSB0aGUgYmFja3RpY2tzIHdpdGggYSBiYWNrc2xhc2guIEhvd2V2ZXIsIGluIHlvdXIgY3VycmVudCBjb2RlLCB5b3UncmUgZXNjYXBpbmcgdGhlIGZpcnN0IGJhY2t0aWNrIHdpdGggYSBkb3VibGUgYmFja3NsYXNoLCB3aGljaCBpcyBjYXVzaW5nIGlzc3Vlcy5cblxuTGV0IG1lIGZpeCB0aGF0IGZvciB5b3U6XG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjowLCJ0ZXh0X25vZGUiOnsiY29udGVudCI6Iui9rOS5ieS4gOS4iyAg5Y+v5Lul6K+G5YirIGAgIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6MTE6MTIuMTQzWiIsInJlc3BvbnNlX3RleHQiOiJJIHNlZSB0aGUgaXNzdWUuIFlvdSdyZSB0cnlpbmcgdG8gZXNjYXBlIHRoZSBiYWNrdGlja3MgaW4geW91ciBTUUwgcXVlcnkuIExldCBtZSBoZWxwIHlvdSB3aXRoIHRoZSBwcm9wZXIgZXNjYXBpbmcgc3ludGF4LlxuXG5XaGVuIHlvdSdyZSB1c2luZyBkb3VibGUgcXVvdGVzIHRvIGRlZmluZSBhIHN0cmluZyBpbiBHbyBhbmQgbmVlZCB0byBpbmNsdWRlIGJhY2t0aWNrcyB3aXRoaW4gdGhhdCBzdHJpbmcsIHlvdSBuZWVkIHRvIGVzY2FwZSB0aGUgYmFja3RpY2tzIHdpdGggYSBiYWNrc2xhc2guIEhvd2V2ZXIsIGluIHlvdXIgY3VycmVudCBjb2RlLCB5b3UncmUgZXNjYXBpbmcgdGhlIGZpcnN0IGJhY2t0aWNrIHdpdGggYSBkb3VibGUgYmFja3NsYXNoLCB3aGljaCBpcyBjYXVzaW5nIGlzc3Vlcy5cblxuTGV0IG1lIGZpeCB0aGF0IGZvciB5b3U6XG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiMGFkNGYwNzMtMjEzYy00YmU4LWIxNzItZDQ2MGNlYjQxMWY4IiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxNXZjMkphTENVMThpUVpqcGVQYndqciIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwidmlld1wiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwidmlld19yYW5nZVwiOiBbMTMwLCAxNDBdfSIsIm1jcF9zZXJ2ZXJfbmFtZSI6IiIsIm1jcF90b29sX25hbWUiOiIifX0seyJpZCI6MCwidHlwZSI6MCwiY29udGVudCI6IiJ9LHsiaWQiOjIsInR5cGUiOjIsImNvbnRlbnQiOiIifSx7ImlkIjozLCJ0eXBlIjozLCJjb250ZW50IjoiIn1dLCJzZWVuX3N0YXRlIjoic2VlbiIsInN0cnVjdHVyZWRfcmVxdWVzdF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjEsInRvb2xfcmVzdWx0X25vZGUiOnsiY29udGVudCI6IkhlcmUncyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgYGNhdCAtbmAgb24gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nbzpcbiAgICA3MFx0XHRyZXMuT3JkZXJSZWNvcmRzID0gbWFrZShbXSpidW5kbGUuT3JkZXJSZWNvcmQsIDApXG4gICAgNzFcdFx0cmVjb3JkcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgMClcbiAgICA3Mlx0XG4gICAgNzNcdFx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuICAgIDc0XHRcbiAgICA3NVx0XHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFwiKVxuICAgIDc2XHRcbiAgICA3N1x0XHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgICA3OFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG4gICAgNzlcdFx0fVxuICAgIDgwXHRcblRvdGFsIGxpbmVzIGluIGZpbGU6IDIzOVxuIiwiaXNfZXJyb3IiOmZhbHNlLCJyZXF1ZXN0X2lkIjoiIiwidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxQzZ3Rk1NRUNLelYxVEVuVnF6ZldpciJ9fSx7ImlkIjoyLCJ0eXBlIjo0LCJpZGVfc3RhdGVfbm9kZSI6eyJ3b3Jrc3BhY2VGb2xkZXJzIjpbeyJyZXBvc2l0b3J5Um9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSIsImZvbGRlclJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUifV0sIndvcmtzcGFjZUZvbGRlcnNVbmNoYW5nZWQiOmZhbHNlfX1dLCJ0aW1lc3RhbXAiOiIyMDI1LTA1LTA5VDA2OjExOjE4LjkyNVoiLCJyZXNwb25zZV90ZXh0IjoiIiwid29ya3NwYWNlX2ZpbGVfY2h1bmtzIjpbXX0seyJzdGF0dXMiOiJzdWNjZXNzIiwicmVxdWVzdF9pZCI6IjE0ZmUxMDNmLWZmZmItNDMxMy1hNGNmLTUyMmMxZDI1YjA0NyIsInJlcXVlc3RfbWVzc2FnZSI6IiIsInN0cnVjdHVyZWRfb3V0cHV0X25vZGVzIjpbeyJpZCI6MSwidHlwZSI6NSwiY29udGVudCI6IiIsInRvb2xfdXNlIjp7InRvb2xfdXNlX2lkIjoidG9vbHVfdnJ0eF8wMUdTY283cUZkTnB1THlrWmkxdnpWemIiLCJ0b29sX25hbWUiOiJzdHItcmVwbGFjZS1lZGl0b3IiLCJpbnB1dF9qc29uIjoie1wiY29tbWFuZFwiOiBcInN0cl9yZXBsYWNlXCIsIFwicGF0aFwiOiBcImludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ29cIiwgXCJzdHJfcmVwbGFjZV9lbnRyaWVzXCI6IFt7XCJvbGRfc3RyXCI6IFwiXFx0cXVlcnkuSm9pbnMoXFxcImxlZnQgam9pbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFxcXCIpXCIsIFwibmV3X3N0clwiOiBcIlxcdHF1ZXJ5LkpvaW5zKFxcXCJsZWZ0IGpvaW4gXFxcXGBtaWNyby1hY2NvdW50XFxcXGAuXFxcXGB1c2VyXFxcXGAgb24gXFxcXGBtaWNyby1hY2NvdW50XFxcXGAuXFxcXGB1c2VyXFxcXGAuXFxcXGBpZFxcXFxgID0gXFxcXGBidW5kbGVfb3JkZXJfcmVjb3Jkc1xcXFxgLlxcXFxgY3VzdG9tZXJfaWRcXFxcYFxcXCIpXCIsIFwib2xkX3N0cl9zdGFydF9saW5lX251bWJlclwiOiA3NSwgXCJvbGRfc3RyX2VuZF9saW5lX251bWJlclwiOiA3NX1dfSIsIm1jcF9zZXJ2ZXJfbmFtZSI6IiIsIm1jcF90b29sX25hbWUiOiIifX0seyJpZCI6MCwidHlwZSI6MCwiY29udGVudCI6Ik5vdyBJJ2xsIHVwZGF0ZSBib3RoIGxvY2F0aW9ucyB0byBwcm9wZXJseSBlc2NhcGUgdGhlIGJhY2t0aWNrczpcbiJ9LHsiaWQiOjIsInR5cGUiOjIsImNvbnRlbnQiOiIifSx7ImlkIjozLCJ0eXBlIjozLCJjb250ZW50IjoiIn1dLCJzZWVuX3N0YXRlIjoic2VlbiIsInN0cnVjdHVyZWRfcmVxdWVzdF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjEsInRvb2xfcmVzdWx0X25vZGUiOnsiY29udGVudCI6IkhlcmUncyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgYGNhdCAtbmAgb24gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nbzpcbiAgIDEzMFx0XG4gICAxMzFcdFx0aWYgcmVxLlRlbE51bSAhPSBcIlwiIHtcbiAgIDEzMlx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJgbWljcm8tYWNjb3VudGAuYHVzZXJgLmB0ZWxfbnVtYCBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIDEzM1x0XHR9XG4gICAxMzRcdFxuICAgMTM1XHRcdGNvdW50IDo9ICpxdWVyeVxuICAgMTM2XHRcbiAgIDEzN1x0XHRpZiByZXEuUGFnZVNpemUgIT0gMCAmJiByZXEuUGFnZSAhPSAwIHtcbiAgIDEzOFx0XHRcdHF1ZXJ5ID0gcXVlcnkuTGltaXQoaW50KHJlcS5QYWdlU2l6ZSkpLk9mZnNldChpbnQocmVxLlBhZ2UtMSkgKiBpbnQocmVxLlBhZ2VTaXplKSlcbiAgIDEzOVx0XHR9XG4gICAxNDBcdFxuVG90YWwgbGluZXMgaW4gZmlsZTogMjM5XG4iLCJpc19lcnJvciI6ZmFsc2UsInJlcXVlc3RfaWQiOiIiLCJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDE1dmMySmFMQ1UxOGlRWmpwZVBid2pyIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6MTE6MjQuMTEyWiIsInJlc3BvbnNlX3RleHQiOiJOb3cgSSdsbCB1cGRhdGUgYm90aCBsb2NhdGlvbnMgdG8gcHJvcGVybHkgZXNjYXBlIHRoZSBiYWNrdGlja3M6XG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiMjFhNWRhNDItMzc3Ni00ZDk5LTkyZGEtN2I5ZTBjOWVhZjk4IiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxUG0xTHB5SnQ2Y3NkOWhYNXdveXFWbSIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwic3RyX3JlcGxhY2VcIiwgXCJwYXRoXCI6IFwiaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nb1wiLCBcInN0cl9yZXBsYWNlX2VudHJpZXNcIjogW3tcIm9sZF9zdHJcIjogXCJcXHRcXHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFxcXCJgbWljcm8tYWNjb3VudGAuYHVzZXJgLmB0ZWxfbnVtYCBsaWtlID9cXFwiLCBcXFwiJVxcXCIrcmVxLlRlbE51bStcXFwiJVxcXCIpXCIsIFwibmV3X3N0clwiOiBcIlxcdFxcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXFxcIlxcXFxgbWljcm8tYWNjb3VudFxcXFxgLlxcXFxgdXNlclxcXFxgLlxcXFxgdGVsX251bVxcXFxgIGxpa2UgP1xcXCIsIFxcXCIlXFxcIityZXEuVGVsTnVtK1xcXCIlXFxcIilcIiwgXCJvbGRfc3RyX3N0YXJ0X2xpbmVfbnVtYmVyXCI6IDEzMiwgXCJvbGRfc3RyX2VuZF9saW5lX251bWJlclwiOiAxMzJ9XX0iLCJtY3Bfc2VydmVyX25hbWUiOiIiLCJtY3BfdG9vbF9uYW1lIjoiIn19LHsiaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiIifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjoxLCJ0b29sX3Jlc3VsdF9ub2RlIjp7ImNvbnRlbnQiOiJTdWNjZXNzZnVsbHkgZWRpdGVkIHRoZSBmaWxlIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ28uXG5SZXN1bHQgZm9yIHN0cl9yZXBsYWNlIGZvciBlbnRyeSB3aXRoIGluZGV4IFswXTpcblJlcGxhY2VtZW50IHN1Y2Nlc3NmdWwuXG5FZGl0ZWQgc2VjdGlvbiBhZnRlciBJREUgYXV0by1mb3JtYXR0aW5nIHdhcyBhcHBsaWVkOlxuICAgIDcxXHRcdHJlY29yZHMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIDApXG4gICAgNzJcdFxuICAgIDczXHRcdHF1ZXJ5IDo9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSlcbiAgICA3NFx0XG4gICAgNzVcdFx0cXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gXFxgbWljcm8tYWNjb3VudFxcYC5cXGB1c2VyXFxgIG9uIFxcYG1pY3JvLWFjY291bnRcXGAuXFxgdXNlclxcYC5cXGBpZFxcYCA9IFxcYGJ1bmRsZV9vcmRlcl9yZWNvcmRzXFxgLlxcYGN1c3RvbWVyX2lkXFxgXCIpXG4gICAgNzZcdFxuICAgIDc3XHRcdGlmIHJlcS5DdXN0b21lcklEICE9IFwiXCIge1xuICAgIDc4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX2lkID0gP1wiLCByZXEuQ3VzdG9tZXJJRClcbiAgICA3OVx0XHR9XG5cblJldmlldyB0aGUgY2hhbmdlcyBhbmQgbWFrZSBzdXJlIHRoZXkgYXJlIGFzIGV4cGVjdGVkIChjb3JyZWN0IGluZGVudGF0aW9uLCBubyBkdXBsaWNhdGUgbGluZXMsIGV0YykuXG5FZGl0IHRoZSBmaWxlIGFnYWluIGlmIG5lY2Vzc2FyeS5cbiIsImlzX2Vycm9yIjpmYWxzZSwicmVxdWVzdF9pZCI6IiIsInRvb2xfdXNlX2lkIjoidG9vbHVfdnJ0eF8wMUdTY283cUZkTnB1THlrWmkxdnpWemIifX0seyJpZCI6MiwidHlwZSI6NCwiaWRlX3N0YXRlX25vZGUiOnsid29ya3NwYWNlRm9sZGVycyI6W3sicmVwb3NpdG9yeVJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUiLCJmb2xkZXJSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIn1dLCJ3b3Jrc3BhY2VGb2xkZXJzVW5jaGFuZ2VkIjpmYWxzZX19XSwidGltZXN0YW1wIjoiMjAyNS0wNS0wOVQwNjoxMTozMS43NThaIiwicmVzcG9uc2VfdGV4dCI6IiIsIndvcmtzcGFjZV9maWxlX2NodW5rcyI6W119LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiJiYTA2ZGRkNi02NTUyLTQyNzgtODQ2MC03Yzg0MTc1M2M0M2YiLCJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJQZXJmZWN0ISBJJ3ZlIHVwZGF0ZWQgYm90aCBTUUwgcXVlcmllcyB0byBwcm9wZXJseSBlc2NhcGUgdGhlIGJhY2t0aWNrcy4gSGVyZSdzIHdoYXQgSSBkaWQ6XG5cbiMjIFRoZSBTb2x1dGlvblxuXG5JbiBHbyBzdHJpbmdzLCB3aGVuIHlvdSB3YW50IHRvIGluY2x1ZGUgYSBiYWNrdGljayAoYGAgYCBgYCkgY2hhcmFjdGVyIGluc2lkZSBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nLCB5b3UgbmVlZCB0byBlc2NhcGUgaXQgd2l0aCBhIGJhY2tzbGFzaCAoYFxcYCkuIFNpbmNlIHlvdSdyZSB1c2luZyBkb3VibGUgcXVvdGVzIHRvIGRlZmluZSB5b3VyIFNRTCBxdWVyeSBzdHJpbmdzLCBJJ3ZlIGVzY2FwZWQgZWFjaCBiYWNrdGljayB3aXRoIGEgYmFja3NsYXNoLlxuXG4xLiBJbiBsaW5lIDc1LCBJIGNoYW5nZWQ6XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgIGBgYFxuICAgdG86XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gXFxgbWljcm8tYWNjb3VudFxcYC5cXGB1c2VyXFxgIG9uIFxcYG1pY3JvLWFjY291bnRcXGAuXFxgdXNlclxcYC5cXGBpZFxcYCA9IFxcYGJ1bmRsZV9vcmRlcl9yZWNvcmRzXFxgLlxcYGN1c3RvbWVyX2lkXFxgXCIpXG4gICBgYGBcblxuMi4gSW4gbGluZSAxMzIsIEkgY2hhbmdlZDpcbiAgIGBgYGdvXG4gICBxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gdGVsX251bWAgbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICBgYGBcbiAgIHRvOlxuICAgYGBgZ29cbiAgIHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJcXGBtaWNyby1hY2NvdW50XFxgLlxcYHVzZXJcXGAuXFxgdGVsX251bVxcYCBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIGBgYFxuXG4jIyBXaHkgVGhpcyBXb3Jrc1xuXG5JbiBHbyBzdHJpbmcgbGl0ZXJhbHM6XG4tIEEgc2luZ2xlIGJhY2tzbGFzaCAoYFxcYCkgaXMgdXNlZCB0byBlc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzXG4tIFdoZW4geW91IHdhbnQgdG8gaW5jbHVkZSBhIGJhY2t0aWNrIGluIGEgZG91YmxlLXF1b3RlZCBzdHJpbmcsIHlvdSBuZWVkIHRvIGVzY2FwZSBpdCB3aXRoIGEgYmFja3NsYXNoOiBgXFxgYFxuXG5XaGVuIHRoZXNlIHN0cmluZ3MgYXJlIHBhc3NlZCB0byB0aGUgU1FMIGVuZ2luZSwgdGhlIGJhY2tzbGFzaGVzIHdpbGwgYmUgcmVtb3ZlZCBkdXJpbmcgc3RyaW5nIHByb2Nlc3NpbmcsIGFuZCB0aGUgU1FMIGVuZ2luZSB3aWxsIHNlZSB0aGUgcHJvcGVybHkgcXVvdGVkIGlkZW50aWZpZXJzIHdpdGggYmFja3RpY2tzLlxuXG5UaGlzIHNob3VsZCByZXNvbHZlIHlvdXIgU1FMIHN5bnRheCBlcnJvci4gVGhlIGRhdGFiYXNlIHdpbGwgbm93IGNvcnJlY3RseSBpbnRlcnByZXQgdGhlIGlkZW50aWZpZXJzIHdpdGggaHlwaGVucyBiZWNhdXNlIHRoZXkncmUgcHJvcGVybHkgcXVvdGVkIHdpdGggYmFja3RpY2tzIGluIHRoZSBTUUwgcXVlcnkuXG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjoxLCJ0b29sX3Jlc3VsdF9ub2RlIjp7ImNvbnRlbnQiOiJTdWNjZXNzZnVsbHkgZWRpdGVkIHRoZSBmaWxlIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ28uXG5SZXN1bHQgZm9yIHN0cl9yZXBsYWNlIGZvciBlbnRyeSB3aXRoIGluZGV4IFswXTpcblJlcGxhY2VtZW50IHN1Y2Nlc3NmdWwuXG5FZGl0ZWQgc2VjdGlvbiBhZnRlciBJREUgYXV0by1mb3JtYXR0aW5nIHdhcyBhcHBsaWVkOlxuICAgMTI4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImZpbmFuY2lhbF9jb25maXJtYXRpb24gPSA/XCIsIHJlcS5GaW5hbmNpYWxDb25maXJtYXRpb24pXG4gICAxMjlcdFx0fVxuICAgMTMwXHRcbiAgIDEzMVx0XHRpZiByZXEuVGVsTnVtICE9IFwiXCIge1xuICAgMTMyXHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIlxcYG1pY3JvLWFjY291bnRcXGAuXFxgdXNlclxcYC5cXGB0ZWxfbnVtXFxgIGxpa2UgP1wiLCBcIiVcIityZXEuVGVsTnVtK1wiJVwiKVxuICAgMTMzXHRcdH1cbiAgIDEzNFx0XG4gICAxMzVcdFx0Y291bnQgOj0gKnF1ZXJ5XG4gICAxMzZcdFxuXG5SZXZpZXcgdGhlIGNoYW5nZXMgYW5kIG1ha2Ugc3VyZSB0aGV5IGFyZSBhcyBleHBlY3RlZCAoY29ycmVjdCBpbmRlbnRhdGlvbiwgbm8gZHVwbGljYXRlIGxpbmVzLCBldGMpLlxuRWRpdCB0aGUgZmlsZSBhZ2FpbiBpZiBuZWNlc3NhcnkuXG4iLCJpc19lcnJvciI6ZmFsc2UsInJlcXVlc3RfaWQiOiIiLCJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFQbTFMcHlKdDZjc2Q5aFg1d295cVZtIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6MTE6MzguNjEzWiIsInJlc3BvbnNlX3RleHQiOiJQZXJmZWN0ISBJJ3ZlIHVwZGF0ZWQgYm90aCBTUUwgcXVlcmllcyB0byBwcm9wZXJseSBlc2NhcGUgdGhlIGJhY2t0aWNrcy4gSGVyZSdzIHdoYXQgSSBkaWQ6XG5cbiMjIFRoZSBTb2x1dGlvblxuXG5JbiBHbyBzdHJpbmdzLCB3aGVuIHlvdSB3YW50IHRvIGluY2x1ZGUgYSBiYWNrdGljayAoYGAgYCBgYCkgY2hhcmFjdGVyIGluc2lkZSBhIGRvdWJsZS1xdW90ZWQgc3RyaW5nLCB5b3UgbmVlZCB0byBlc2NhcGUgaXQgd2l0aCBhIGJhY2tzbGFzaCAoYFxcYCkuIFNpbmNlIHlvdSdyZSB1c2luZyBkb3VibGUgcXVvdGVzIHRvIGRlZmluZSB5b3VyIFNRTCBxdWVyeSBzdHJpbmdzLCBJJ3ZlIGVzY2FwZWQgZWFjaCBiYWNrdGljayB3aXRoIGEgYmFja3NsYXNoLlxuXG4xLiBJbiBsaW5lIDc1LCBJIGNoYW5nZWQ6XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgIGBgYFxuICAgdG86XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gXFxgbWljcm8tYWNjb3VudFxcYC5cXGB1c2VyXFxgIG9uIFxcYG1pY3JvLWFjY291bnRcXGAuXFxgdXNlclxcYC5cXGBpZFxcYCA9IFxcYGJ1bmRsZV9vcmRlcl9yZWNvcmRzXFxgLlxcYGN1c3RvbWVyX2lkXFxgXCIpXG4gICBgYGBcblxuMi4gSW4gbGluZSAxMzIsIEkgY2hhbmdlZDpcbiAgIGBgYGdvXG4gICBxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gdGVsX251bWAgbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICBgYGBcbiAgIHRvOlxuICAgYGBgZ29cbiAgIHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJcXGBtaWNyby1hY2NvdW50XFxgLlxcYHVzZXJcXGAuXFxgdGVsX251bVxcYCBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIGBgYFxuXG4jIyBXaHkgVGhpcyBXb3Jrc1xuXG5JbiBHbyBzdHJpbmcgbGl0ZXJhbHM6XG4tIEEgc2luZ2xlIGJhY2tzbGFzaCAoYFxcYCkgaXMgdXNlZCB0byBlc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzXG4tIFdoZW4geW91IHdhbnQgdG8gaW5jbHVkZSBhIGJhY2t0aWNrIGluIGEgZG91YmxlLXF1b3RlZCBzdHJpbmcsIHlvdSBuZWVkIHRvIGVzY2FwZSBpdCB3aXRoIGEgYmFja3NsYXNoOiBgXFxgYFxuXG5XaGVuIHRoZXNlIHN0cmluZ3MgYXJlIHBhc3NlZCB0byB0aGUgU1FMIGVuZ2luZSwgdGhlIGJhY2tzbGFzaGVzIHdpbGwgYmUgcmVtb3ZlZCBkdXJpbmcgc3RyaW5nIHByb2Nlc3NpbmcsIGFuZCB0aGUgU1FMIGVuZ2luZSB3aWxsIHNlZSB0aGUgcHJvcGVybHkgcXVvdGVkIGlkZW50aWZpZXJzIHdpdGggYmFja3RpY2tzLlxuXG5UaGlzIHNob3VsZCByZXNvbHZlIHlvdXIgU1FMIHN5bnRheCBlcnJvci4gVGhlIGRhdGFiYXNlIHdpbGwgbm93IGNvcnJlY3RseSBpbnRlcnByZXQgdGhlIGlkZW50aWZpZXJzIHdpdGggaHlwaGVucyBiZWNhdXNlIHRoZXkncmUgcHJvcGVybHkgcXVvdGVkIHdpdGggYmFja3RpY2tzIGluIHRoZSBTUUwgcXVlcnkuXG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InJlcXVlc3RfaWQiOiI4Mzc4ZTZlMy04MTVmLTQ0NGYtYTAzZi0zMTAxOTY3YmYzN2MiLCJ1dWlkIjoiOTk5ODhiYWYtOTMxYi00OWNkLWFjY2YtMDY0YjBjMDNkYmUyIiwiY2hhdEl0ZW1UeXBlIjoiYWdlbnRpYy1jaGVja3BvaW50LWRlbGltaXRlciIsInN0YXR1cyI6InN1Y2Nlc3MiLCJmcm9tVGltZXN0YW1wIjoxNzQ2NzcwNjMwMDQ0LCJ0b1RpbWVzdGFtcCI6MTc0Njc3MTExMDI2Mywic2Vlbl9zdGF0ZSI6InNlZW4ifSx7InJlcXVlc3RfaWQiOiJlNDNlMGVhZS0yNThlLTQxMDEtOGQ2ZS1iNDU5OTA1NTI1NDIiLCJzdGF0dXMiOiJjYW5jZWxsZWQiLCJjaGF0SXRlbVR5cGUiOiJhZ2VudGljLXR1cm4tZGVsaW1pdGVyIn0seyJzdGF0dXMiOiJzdWNjZXNzIiwicmVxdWVzdF9pZCI6ImI0MWY1MzQyLWFmMzctNGEzNS1hZDA3LTZiMTk3ZTNkNmJlYyIsInJlcXVlc3RfbWVzc2FnZSI6IuaPkOekuuaKpemUmSDmgI7kuYjlm57kuosiLCJyaWNoX3RleHRfanNvbl9yZXByIjp7InR5cGUiOiJkb2MiLCJjb250ZW50IjpbeyJ0eXBlIjoicGFyYWdyYXBoIiwiY29udGVudCI6W3sidHlwZSI6InRleHQiLCJ0ZXh0Ijoi5o+Q56S65oql6ZSZIOaAjuS5iOWbnuS6iyJ9XX1dfSwibWVudGlvbmVkX2l0ZW1zIjpbXSwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxRUY5OUtUeGlVbWp3NkhwWkMxd25MZiIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwidmlld1wiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwidmlld19yYW5nZVwiOiBbNzAsIDgwXX0iLCJtY3Bfc2VydmVyX25hbWUiOiIiLCJtY3BfdG9vbF9uYW1lIjoiIn19LHsiaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiJJIGFwb2xvZ2l6ZSBmb3IgdGhlIGNvbmZ1c2lvbi4gTGV0IG1lIGNoZWNrIHdoYXQgbWlnaHQgYmUgY2F1c2luZyB0aGUgZXJyb3IgYWZ0ZXIgb3VyIGNoYW5nZXMuIExldCdzIHRyeSBhIGRpZmZlcmVudCBhcHByb2FjaCB0byBmaXggdGhlIFNRTCBzeW50YXggaXNzdWUuXG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjowLCJ0ZXh0X25vZGUiOnsiY29udGVudCI6IuaPkOekuuaKpemUmSDmgI7kuYjlm57kuosifX0seyJpZCI6MiwidHlwZSI6NCwiaWRlX3N0YXRlX25vZGUiOnsid29ya3NwYWNlRm9sZGVycyI6W3sicmVwb3NpdG9yeVJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUiLCJmb2xkZXJSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIn1dLCJ3b3Jrc3BhY2VGb2xkZXJzVW5jaGFuZ2VkIjpmYWxzZX19XSwidGltZXN0YW1wIjoiMjAyNS0wNS0wOVQwNjoxNDowMy40OTdaIiwicmVzcG9uc2VfdGV4dCI6IkkgYXBvbG9naXplIGZvciB0aGUgY29uZnVzaW9uLiBMZXQgbWUgY2hlY2sgd2hhdCBtaWdodCBiZSBjYXVzaW5nIHRoZSBlcnJvciBhZnRlciBvdXIgY2hhbmdlcy4gTGV0J3MgdHJ5IGEgZGlmZmVyZW50IGFwcHJvYWNoIHRvIGZpeCB0aGUgU1FMIHN5bnRheCBpc3N1ZS5cbiIsIndvcmtzcGFjZV9maWxlX2NodW5rcyI6W119LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiJmZDNkN2VlYi0wMGU4LTQwNGEtYmFlNi1mNTNiMThkZjIzOTEiLCJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjUsImNvbnRlbnQiOiIiLCJ0b29sX3VzZSI6eyJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDE5M1VuSm1MTnF0c2ZGNUxZdFBmNFpLIiwidG9vbF9uYW1lIjoic3RyLXJlcGxhY2UtZWRpdG9yIiwiaW5wdXRfanNvbiI6IntcImNvbW1hbmRcIjogXCJzdHJfcmVwbGFjZVwiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwic3RyX3JlcGxhY2VfZW50cmllc1wiOiBbe1wib2xkX3N0clwiOiBcIlxcdHF1ZXJ5LkpvaW5zKFxcXCJsZWZ0IGpvaW4gXFxcXGBtaWNyby1hY2NvdW50YC5gdXNlcmAgb24gYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gaWRgID0gYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3VzdG9tZXJfaWRgXFxcIilcIiwgXCJuZXdfc3RyXCI6IFwiXFx0cXVlcnkuSm9pbnMoXFxcImxlZnQgam9pbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXFxcIilcIiwgXCJvbGRfc3RyX3N0YXJ0X2xpbmVfbnVtYmVyXCI6IDc1LCBcIm9sZF9zdHJfZW5kX2xpbmVfbnVtYmVyXCI6IDc1fV19IiwibWNwX3NlcnZlcl9uYW1lIjoiIiwibWNwX3Rvb2xfbmFtZSI6IiJ9fSx7ImlkIjowLCJ0eXBlIjowLCJjb250ZW50IjoiSSBzZWUgdGhlIGlzc3VlLiBUaGUgYmFja3NsYXNoZXMgYXJlbid0IGJlaW5nIHByb3Blcmx5IGFwcGxpZWQuIExldCdzIHRyeSBhIGRpZmZlcmVudCBhcHByb2FjaC4gSW5zdGVhZCBvZiB1c2luZyBiYWNrdGlja3MsIGxldCdzIHVzZSBNeVNRTCdzIGFsdGVybmF0aXZlIHF1b3RpbmcgbWVjaGFuaXNtIHdpdGggZG91YmxlIHF1b3RlcyBmb3IgaWRlbnRpZmllcnM6XG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjoxLCJ0b29sX3Jlc3VsdF9ub2RlIjp7ImNvbnRlbnQiOiJIZXJlJ3MgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGBjYXQgLW5gIG9uIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ286XG4gICAgNzBcdFx0cmVzLk9yZGVyUmVjb3JkcyA9IG1ha2UoW10qYnVuZGxlLk9yZGVyUmVjb3JkLCAwKVxuICAgIDcxXHRcdHJlY29yZHMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIDApXG4gICAgNzJcdFxuICAgIDczXHRcdHF1ZXJ5IDo9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSlcbiAgICA3NFx0XG4gICAgNzVcdFx0cXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gXFxcXGBtaWNyby1hY2NvdW50YC5gdXNlcmAgb24gYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gaWRgID0gYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3VzdG9tZXJfaWRgXCIpXG4gICAgNzZcdFxuICAgIDc3XHRcdGlmIHJlcS5DdXN0b21lcklEICE9IFwiXCIge1xuICAgIDc4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX2lkID0gP1wiLCByZXEuQ3VzdG9tZXJJRClcbiAgICA3OVx0XHR9XG4gICAgODBcdFxuVG90YWwgbGluZXMgaW4gZmlsZTogMjM5XG4iLCJpc19lcnJvciI6ZmFsc2UsInJlcXVlc3RfaWQiOiIiLCJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFFRjk5S1R4aVVtanc2SHBaQzF3bkxmIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6MTQ6MTAuODI5WiIsInJlc3BvbnNlX3RleHQiOiJJIHNlZSB0aGUgaXNzdWUuIFRoZSBiYWNrc2xhc2hlcyBhcmVuJ3QgYmVpbmcgcHJvcGVybHkgYXBwbGllZC4gTGV0J3MgdHJ5IGEgZGlmZmVyZW50IGFwcHJvYWNoLiBJbnN0ZWFkIG9mIHVzaW5nIGJhY2t0aWNrcywgbGV0J3MgdXNlIE15U1FMJ3MgYWx0ZXJuYXRpdmUgcXVvdGluZyBtZWNoYW5pc20gd2l0aCBkb3VibGUgcXVvdGVzIGZvciBpZGVudGlmaWVyczpcbiIsIndvcmtzcGFjZV9maWxlX2NodW5rcyI6W119LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiIyYTc0MjQxNC1lODg0LTQ5ZWUtODhmZC1jMzBiM2M4N2ViY2IiLCJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjUsImNvbnRlbnQiOiIiLCJ0b29sX3VzZSI6eyJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFQa2VwMms2dk05UENidThualZ6WTNhIiwidG9vbF9uYW1lIjoic3RyLXJlcGxhY2UtZWRpdG9yIiwiaW5wdXRfanNvbiI6IntcImNvbW1hbmRcIjogXCJzdHJfcmVwbGFjZVwiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwic3RyX3JlcGxhY2VfZW50cmllc1wiOiBbe1wib2xkX3N0clwiOiBcIlxcdHF1ZXJ5LkpvaW5zKFxcXCJsZWZ0IGpvaW4gXFxcXFxcXFxgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFxcXCIpXCIsIFwibmV3X3N0clwiOiBcIlxcdHF1ZXJ5LkpvaW5zKFxcXCJsZWZ0IGpvaW4gbWljcm9fYWNjb3VudC51c2VyIG9uIG1pY3JvX2FjY291bnQudXNlci5pZCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXFxcIilcIiwgXCJvbGRfc3RyX3N0YXJ0X2xpbmVfbnVtYmVyXCI6IDc1LCBcIm9sZF9zdHJfZW5kX2xpbmVfbnVtYmVyXCI6IDc1fV19IiwibWNwX3NlcnZlcl9uYW1lIjoiIiwibWNwX3Rvb2xfbmFtZSI6IiJ9fSx7ImlkIjowLCJ0eXBlIjowLCJjb250ZW50IjoiSSBzZWUgdGhlIGlzc3VlLiBMZXQgbWUgdHJ5IGFnYWluIHdpdGggdGhlIGV4YWN0IHN0cmluZyB0aGF0J3MgaW4gdGhlIGZpbGU6XG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjoxLCJ0b29sX3Jlc3VsdF9ub2RlIjp7ImNvbnRlbnQiOiJGYWlsZWQgdG8gZWRpdCB0aGUgZmlsZSBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvLiBTZWUgYmVsb3cgZm9yIGRldGFpbHMuXG5SZXN1bHQgZm9yIHN0cl9yZXBsYWNlIGZvciBlbnRyeSB3aXRoIGluZGV4IFswXTpcbk5vIHJlcGxhY2VtZW50IHdhcyBwZXJmb3JtZWQsIG9sZFN0ciBkaWQgbm90IGFwcGVhciB2ZXJiYXRpbSBpbiBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvLlxuVGhlIGNvbnRlbnQgaW4gdGhlIHNwZWNpZmllZCByZWdpb24gaXM6XG4gICAgNzFcdFx0cmVjb3JkcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgMClcbiAgICA3Mlx0XG4gICAgNzNcdFx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuICAgIDc0XHRcbiAgICA3NVx0XHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBcXFxcYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgICA3Nlx0XG4gICAgNzdcdFx0aWYgcmVxLkN1c3RvbWVySUQgIT0gXCJcIiB7XG4gICAgNzhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfaWQgPSA/XCIsIHJlcS5DdXN0b21lcklEKVxuICAgIDc5XHRcdH1cblxuRGlmZiBiZXR3ZWVuIG9sZFN0ciBhbmQgdGhlIHNwZWNpZmllZCByZWdpb24gaXM6XG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4tLS0gb2xkU3RyXG4rKysgcmVnaW9uQ29udGVudFxuQEAgLTEsMSArMSwxIEBAXG4tXHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBcXGBtaWNyby1hY2NvdW50YC5gdXNlcmAgb24gYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gaWRgID0gYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3VzdG9tZXJfaWRgXCIpXG4rXHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBcXFxcYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcblxuXG5GaXggZmFpbGVkIHN0cl9yZXBsYWNlIGVudHJpZXMgYWNjb3JkaW5nbHkgYW5kIHRyeSBhZ2Fpbi5cbiIsImlzX2Vycm9yIjp0cnVlLCJyZXF1ZXN0X2lkIjoiIiwidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxOTNVbkptTE5xdHNmRjVMWXRQZjRaSyJ9fSx7ImlkIjoyLCJ0eXBlIjo0LCJpZGVfc3RhdGVfbm9kZSI6eyJ3b3Jrc3BhY2VGb2xkZXJzIjpbeyJyZXBvc2l0b3J5Um9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSIsImZvbGRlclJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUifV0sIndvcmtzcGFjZUZvbGRlcnNVbmNoYW5nZWQiOmZhbHNlfX1dLCJ0aW1lc3RhbXAiOiIyMDI1LTA1LTA5VDA2OjE0OjE4Ljg5OVoiLCJyZXNwb25zZV90ZXh0IjoiSSBzZWUgdGhlIGlzc3VlLiBMZXQgbWUgdHJ5IGFnYWluIHdpdGggdGhlIGV4YWN0IHN0cmluZyB0aGF0J3MgaW4gdGhlIGZpbGU6XG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiYjM2YWMwOGQtN2MxZS00YmRlLWIwNzQtOTYwYTEwM2I4Mzg4IiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxRERCOUpIWERnSmdwOHptaHQyQ2duOSIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwidmlld1wiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwidmlld19yYW5nZVwiOiBbMTMwLCAxNDBdfSIsIm1jcF9zZXJ2ZXJfbmFtZSI6IiIsIm1jcF90b29sX25hbWUiOiIifX0seyJpZCI6MCwidHlwZSI6MCwiY29udGVudCI6Ik5vdyBsZXQncyBmaXggdGhlIG90aGVyIGluc3RhbmNlOlxuIn0seyJpZCI6MiwidHlwZSI6MiwiY29udGVudCI6IiJ9LHsiaWQiOjMsInR5cGUiOjMsImNvbnRlbnQiOiIifV0sInNlZW5fc3RhdGUiOiJzZWVuIiwic3RydWN0dXJlZF9yZXF1ZXN0X25vZGVzIjpbeyJpZCI6MSwidHlwZSI6MSwidG9vbF9yZXN1bHRfbm9kZSI6eyJjb250ZW50IjoiU3VjY2Vzc2Z1bGx5IGVkaXRlZCB0aGUgZmlsZSBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvLlxuUmVzdWx0IGZvciBzdHJfcmVwbGFjZSBmb3IgZW50cnkgd2l0aCBpbmRleCBbMF06XG5SZXBsYWNlbWVudCBzdWNjZXNzZnVsLlxuRWRpdGVkIHNlY3Rpb24gYWZ0ZXIgSURFIGF1dG8tZm9ybWF0dGluZyB3YXMgYXBwbGllZDpcbiAgICA3MVx0XHRyZWNvcmRzIDo9IG1ha2UoW10qbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCAwKVxuICAgIDcyXHRcbiAgICA3M1x0XHRxdWVyeSA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pXG4gICAgNzRcdFxuICAgIDc1XHRcdHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIG1pY3JvX2FjY291bnQudXNlciBvbiBtaWNyb19hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkcy5jdXN0b21lcl9pZFwiKVxuICAgIDc2XHRcbiAgICA3N1x0XHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgICA3OFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG4gICAgNzlcdFx0fVxuXG5SZXZpZXcgdGhlIGNoYW5nZXMgYW5kIG1ha2Ugc3VyZSB0aGV5IGFyZSBhcyBleHBlY3RlZCAoY29ycmVjdCBpbmRlbnRhdGlvbiwgbm8gZHVwbGljYXRlIGxpbmVzLCBldGMpLlxuRWRpdCB0aGUgZmlsZSBhZ2FpbiBpZiBuZWNlc3NhcnkuXG4iLCJpc19lcnJvciI6ZmFsc2UsInJlcXVlc3RfaWQiOiIiLCJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFQa2VwMms2dk05UENidThualZ6WTNhIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6MTQ6MjYuNDMxWiIsInJlc3BvbnNlX3RleHQiOiJOb3cgbGV0J3MgZml4IHRoZSBvdGhlciBpbnN0YW5jZTpcbiIsIndvcmtzcGFjZV9maWxlX2NodW5rcyI6W119LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiIzN2JmNjYwYy1mMzAwLTRmNzEtYjUzZi00MzliNjQ5MzZlMTMiLCJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjUsImNvbnRlbnQiOiIiLCJ0b29sX3VzZSI6eyJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFDZ01ZVkVZamtmQ3Q3UGI1ZnVnbXF1IiwidG9vbF9uYW1lIjoic3RyLXJlcGxhY2UtZWRpdG9yIiwiaW5wdXRfanNvbiI6IntcImNvbW1hbmRcIjogXCJzdHJfcmVwbGFjZVwiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwic3RyX3JlcGxhY2VfZW50cmllc1wiOiBbe1wib2xkX3N0clwiOiBcIlxcdFxcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXFxcImBtaWNyby1hY2NvdW50YC5gdXNlcmAuYHRlbF9udW1gIGxpa2UgP1xcXCIsIFxcXCIlXFxcIityZXEuVGVsTnVtK1xcXCIlXFxcIilcIiwgXCJuZXdfc3RyXCI6IFwiXFx0XFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcXFwibWljcm9fYWNjb3VudC51c2VyLnRlbF9udW0gbGlrZSA/XFxcIiwgXFxcIiVcXFwiK3JlcS5UZWxOdW0rXFxcIiVcXFwiKVwiLCBcIm9sZF9zdHJfc3RhcnRfbGluZV9udW1iZXJcIjogMTMyLCBcIm9sZF9zdHJfZW5kX2xpbmVfbnVtYmVyXCI6IDEzMn1dfSIsIm1jcF9zZXJ2ZXJfbmFtZSI6IiIsIm1jcF90b29sX25hbWUiOiIifX0seyJpZCI6MCwidHlwZSI6MCwiY29udGVudCI6IiJ9LHsiaWQiOjIsInR5cGUiOjIsImNvbnRlbnQiOiIifSx7ImlkIjozLCJ0eXBlIjozLCJjb250ZW50IjoiIn1dLCJzZWVuX3N0YXRlIjoic2VlbiIsInN0cnVjdHVyZWRfcmVxdWVzdF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjEsInRvb2xfcmVzdWx0X25vZGUiOnsiY29udGVudCI6IkhlcmUncyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgYGNhdCAtbmAgb24gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nbzpcbiAgIDEzMFx0XG4gICAxMzFcdFx0aWYgcmVxLlRlbE51bSAhPSBcIlwiIHtcbiAgIDEzMlx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJgbWljcm8tYWNjb3VudGAuYHVzZXJgLmB0ZWxfbnVtYCBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIDEzM1x0XHR9XG4gICAxMzRcdFxuICAgMTM1XHRcdGNvdW50IDo9ICpxdWVyeVxuICAgMTM2XHRcbiAgIDEzN1x0XHRpZiByZXEuUGFnZVNpemUgIT0gMCAmJiByZXEuUGFnZSAhPSAwIHtcbiAgIDEzOFx0XHRcdHF1ZXJ5ID0gcXVlcnkuTGltaXQoaW50KHJlcS5QYWdlU2l6ZSkpLk9mZnNldChpbnQocmVxLlBhZ2UtMSkgKiBpbnQocmVxLlBhZ2VTaXplKSlcbiAgIDEzOVx0XHR9XG4gICAxNDBcdFxuVG90YWwgbGluZXMgaW4gZmlsZTogMjM5XG4iLCJpc19lcnJvciI6ZmFsc2UsInJlcXVlc3RfaWQiOiIiLCJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDFEREI5SkhYRGdKZ3A4em1odDJDZ245In19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6MTQ6MzYuMTU1WiIsInJlc3BvbnNlX3RleHQiOiIiLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiODFhMzE5NGItNjQxNy00NWY3LTllMWMtZTg3ZDFjNjY4MDY1IiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjowLCJ0eXBlIjowLCJjb250ZW50IjoiR3JlYXQhIEkndmUgbWFkZSBhIGRpZmZlcmVudCBhcHByb2FjaCB0byBmaXggdGhlIFNRTCBzeW50YXggaXNzdWUuIEluc3RlYWQgb2YgdHJ5aW5nIHRvIGVzY2FwZSBiYWNrdGlja3MsIEkndmUgcmVwbGFjZWQgdGhlIGRhdGFiYXNlIG5hbWUgd2l0aCBhbiB1bmRlcnNjb3JlIGluc3RlYWQgb2YgYSBoeXBoZW4uXG5cbiMjIFRoZSBTb2x1dGlvblxuXG5JJ3ZlIGNoYW5nZWQgdGhlIGRhdGFiYXNlIG5hbWUgZnJvbSBgbWljcm8tYWNjb3VudGAgdG8gYG1pY3JvX2FjY291bnRgIGluIHRoZSBTUUwgcXVlcmllcy4gVGhpcyBhdm9pZHMgdGhlIG5lZWQgZm9yIHNwZWNpYWwgcXVvdGluZyBzaW5jZSBkYXRhYmFzZSBuYW1lcyB3aXRoIHVuZGVyc2NvcmVzIGRvbid0IHJlcXVpcmUgYmFja3RpY2tzIGluIE15U1FMLlxuXG4xLiBJbiBsaW5lIDc1LCBJIGNoYW5nZWQ6XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgIGBgYFxuICAgdG86XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gbWljcm9fYWNjb3VudC51c2VyIG9uIG1pY3JvX2FjY291bnQudXNlci5pZCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICBgYGBcblxuMi4gSW4gbGluZSAxMzIsIEkgY2hhbmdlZDpcbiAgIGBgYGdvXG4gICBxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gdGVsX251bWAgbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICBgYGBcbiAgIHRvOlxuICAgYGBgZ29cbiAgIHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJtaWNyb19hY2NvdW50LnVzZXIudGVsX251bSBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIGBgYFxuXG4jIyBXaHkgVGhpcyBTaG91bGQgV29ya1xuXG5UaGlzIGFwcHJvYWNoIGFzc3VtZXMgdGhhdDpcbjEuIFRoZSBhY3R1YWwgZGF0YWJhc2UgbmFtZSBpbiB5b3VyIE15U1FMIHNlcnZlciBpcyBgbWljcm9fYWNjb3VudGAgKHdpdGggYW4gdW5kZXJzY29yZSksIG9yXG4yLiBZb3UgY2FuIHJlbmFtZSB0aGUgZGF0YWJhc2UgZnJvbSBgbWljcm8tYWNjb3VudGAgdG8gYG1pY3JvX2FjY291bnRgIGluIHlvdXIgTXlTUUwgc2VydmVyXG5cbklmIHRoZSBkYXRhYmFzZSBuYW1lIGlzIGFjdHVhbGx5IGBtaWNyby1hY2NvdW50YCB3aXRoIGEgaHlwaGVuIGFuZCB5b3UgY2Fubm90IHJlbmFtZSBpdCwgdGhlbiB3ZSBuZWVkIHRvIGZpbmQgYSBkaWZmZXJlbnQgc29sdXRpb24uIEluIHRoYXQgY2FzZSwgcGxlYXNlIGxldCBtZSBrbm93IGFuZCBJIGNhbiBzdWdnZXN0IGFsdGVybmF0aXZlIGFwcHJvYWNoZXMuXG5cbiMjIEFsdGVybmF0aXZlIFNvbHV0aW9uc1xuXG5JZiB0aGUgZGF0YWJhc2UgbmFtZSBtdXN0IHJlbWFpbiBgbWljcm8tYWNjb3VudGAgd2l0aCBhIGh5cGhlbiwgaGVyZSBhcmUgc29tZSBhbHRlcm5hdGl2ZSBzb2x1dGlvbnM6XG5cbjEuIFVzZSBkb3VibGUgcXVvdGVzIGluc3RlYWQgb2YgYmFja3RpY2tzIChpZiB5b3VyIE15U1FMIHNlcnZlciBpcyBjb25maWd1cmVkIHRvIGFjY2VwdCBBTlNJIFNRTCBzdGFuZGFyZCBxdW90aW5nKTpcbiAgIGBgYGdvXG4gICBxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBcXFwibWljcm8tYWNjb3VudFxcXCIuXFxcInVzZXJcXFwiIG9uIFxcXCJtaWNyby1hY2NvdW50XFxcIi5cXFwidXNlclxcXCIuXFxcImlkXFxcIiA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICBgYGBcblxuMi4gVXNlIHNxdWFyZSBicmFja2V0cyAoaWYgeW91ciBNeVNRTCBzZXJ2ZXIgaXMgY29uZmlndXJlZCB0byBhY2NlcHQgU1FMIFNlcnZlci1zdHlsZSBxdW90aW5nKTpcbiAgIGBgYGdvXG4gICBxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBbbWljcm8tYWNjb3VudF0uW3VzZXJdIG9uIFttaWNyby1hY2NvdW50XS5bdXNlcl0uW2lkXSA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICBgYGBcblxuMy4gQ3JlYXRlIGEgZGF0YWJhc2UgYWxpYXMgaW4geW91ciBNeVNRTCBjb25maWd1cmF0aW9uLlxuXG5QbGVhc2UgbGV0IG1lIGtub3cgaWYgdGhlIGN1cnJlbnQgc29sdXRpb24gd29ya3Mgb3IgaWYgeW91IG5lZWQgdG8gdHJ5IG9uZSBvZiB0aGUgYWx0ZXJuYXRpdmVzLlxuIn0seyJpZCI6MiwidHlwZSI6MiwiY29udGVudCI6IiJ9LHsiaWQiOjMsInR5cGUiOjMsImNvbnRlbnQiOiIifV0sInNlZW5fc3RhdGUiOiJzZWVuIiwic3RydWN0dXJlZF9yZXF1ZXN0X25vZGVzIjpbeyJpZCI6MSwidHlwZSI6MSwidG9vbF9yZXN1bHRfbm9kZSI6eyJjb250ZW50IjoiU3VjY2Vzc2Z1bGx5IGVkaXRlZCB0aGUgZmlsZSBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvLlxuUmVzdWx0IGZvciBzdHJfcmVwbGFjZSBmb3IgZW50cnkgd2l0aCBpbmRleCBbMF06XG5SZXBsYWNlbWVudCBzdWNjZXNzZnVsLlxuRWRpdGVkIHNlY3Rpb24gYWZ0ZXIgSURFIGF1dG8tZm9ybWF0dGluZyB3YXMgYXBwbGllZDpcbiAgIDEyOFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJmaW5hbmNpYWxfY29uZmlybWF0aW9uID0gP1wiLCByZXEuRmluYW5jaWFsQ29uZmlybWF0aW9uKVxuICAgMTI5XHRcdH1cbiAgIDEzMFx0XG4gICAxMzFcdFx0aWYgcmVxLlRlbE51bSAhPSBcIlwiIHtcbiAgIDEzMlx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJtaWNyb19hY2NvdW50LnVzZXIudGVsX251bSBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIDEzM1x0XHR9XG4gICAxMzRcdFxuICAgMTM1XHRcdGNvdW50IDo9ICpxdWVyeVxuICAgMTM2XHRcblxuUmV2aWV3IHRoZSBjaGFuZ2VzIGFuZCBtYWtlIHN1cmUgdGhleSBhcmUgYXMgZXhwZWN0ZWQgKGNvcnJlY3QgaW5kZW50YXRpb24sIG5vIGR1cGxpY2F0ZSBsaW5lcywgZXRjKS5cbkVkaXQgdGhlIGZpbGUgYWdhaW4gaWYgbmVjZXNzYXJ5LlxuIiwiaXNfZXJyb3IiOmZhbHNlLCJyZXF1ZXN0X2lkIjoiIiwidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxQ2dNWVZFWWprZkN0N1BiNWZ1Z21xdSJ9fSx7ImlkIjoyLCJ0eXBlIjo0LCJpZGVfc3RhdGVfbm9kZSI6eyJ3b3Jrc3BhY2VGb2xkZXJzIjpbeyJyZXBvc2l0b3J5Um9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSIsImZvbGRlclJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUifV0sIndvcmtzcGFjZUZvbGRlcnNVbmNoYW5nZWQiOmZhbHNlfX1dLCJ0aW1lc3RhbXAiOiIyMDI1LTA1LTA5VDA2OjE0OjQ3LjM3MFoiLCJyZXNwb25zZV90ZXh0IjoiR3JlYXQhIEkndmUgbWFkZSBhIGRpZmZlcmVudCBhcHByb2FjaCB0byBmaXggdGhlIFNRTCBzeW50YXggaXNzdWUuIEluc3RlYWQgb2YgdHJ5aW5nIHRvIGVzY2FwZSBiYWNrdGlja3MsIEkndmUgcmVwbGFjZWQgdGhlIGRhdGFiYXNlIG5hbWUgd2l0aCBhbiB1bmRlcnNjb3JlIGluc3RlYWQgb2YgYSBoeXBoZW4uXG5cbiMjIFRoZSBTb2x1dGlvblxuXG5JJ3ZlIGNoYW5nZWQgdGhlIGRhdGFiYXNlIG5hbWUgZnJvbSBgbWljcm8tYWNjb3VudGAgdG8gYG1pY3JvX2FjY291bnRgIGluIHRoZSBTUUwgcXVlcmllcy4gVGhpcyBhdm9pZHMgdGhlIG5lZWQgZm9yIHNwZWNpYWwgcXVvdGluZyBzaW5jZSBkYXRhYmFzZSBuYW1lcyB3aXRoIHVuZGVyc2NvcmVzIGRvbid0IHJlcXVpcmUgYmFja3RpY2tzIGluIE15U1FMLlxuXG4xLiBJbiBsaW5lIDc1LCBJIGNoYW5nZWQ6XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgIGBgYFxuICAgdG86XG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gbWljcm9fYWNjb3VudC51c2VyIG9uIG1pY3JvX2FjY291bnQudXNlci5pZCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICBgYGBcblxuMi4gSW4gbGluZSAxMzIsIEkgY2hhbmdlZDpcbiAgIGBgYGdvXG4gICBxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gdGVsX251bWAgbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICBgYGBcbiAgIHRvOlxuICAgYGBgZ29cbiAgIHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJtaWNyb19hY2NvdW50LnVzZXIudGVsX251bSBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIGBgYFxuXG4jIyBXaHkgVGhpcyBTaG91bGQgV29ya1xuXG5UaGlzIGFwcHJvYWNoIGFzc3VtZXMgdGhhdDpcbjEuIFRoZSBhY3R1YWwgZGF0YWJhc2UgbmFtZSBpbiB5b3VyIE15U1FMIHNlcnZlciBpcyBgbWljcm9fYWNjb3VudGAgKHdpdGggYW4gdW5kZXJzY29yZSksIG9yXG4yLiBZb3UgY2FuIHJlbmFtZSB0aGUgZGF0YWJhc2UgZnJvbSBgbWljcm8tYWNjb3VudGAgdG8gYG1pY3JvX2FjY291bnRgIGluIHlvdXIgTXlTUUwgc2VydmVyXG5cbklmIHRoZSBkYXRhYmFzZSBuYW1lIGlzIGFjdHVhbGx5IGBtaWNyby1hY2NvdW50YCB3aXRoIGEgaHlwaGVuIGFuZCB5b3UgY2Fubm90IHJlbmFtZSBpdCwgdGhlbiB3ZSBuZWVkIHRvIGZpbmQgYSBkaWZmZXJlbnQgc29sdXRpb24uIEluIHRoYXQgY2FzZSwgcGxlYXNlIGxldCBtZSBrbm93IGFuZCBJIGNhbiBzdWdnZXN0IGFsdGVybmF0aXZlIGFwcHJvYWNoZXMuXG5cbiMjIEFsdGVybmF0aXZlIFNvbHV0aW9uc1xuXG5JZiB0aGUgZGF0YWJhc2UgbmFtZSBtdXN0IHJlbWFpbiBgbWljcm8tYWNjb3VudGAgd2l0aCBhIGh5cGhlbiwgaGVyZSBhcmUgc29tZSBhbHRlcm5hdGl2ZSBzb2x1dGlvbnM6XG5cbjEuIFVzZSBkb3VibGUgcXVvdGVzIGluc3RlYWQgb2YgYmFja3RpY2tzIChpZiB5b3VyIE15U1FMIHNlcnZlciBpcyBjb25maWd1cmVkIHRvIGFjY2VwdCBBTlNJIFNRTCBzdGFuZGFyZCBxdW90aW5nKTpcbiAgIGBgYGdvXG4gICBxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBcXFwibWljcm8tYWNjb3VudFxcXCIuXFxcInVzZXJcXFwiIG9uIFxcXCJtaWNyby1hY2NvdW50XFxcIi5cXFwidXNlclxcXCIuXFxcImlkXFxcIiA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICBgYGBcblxuMi4gVXNlIHNxdWFyZSBicmFja2V0cyAoaWYgeW91ciBNeVNRTCBzZXJ2ZXIgaXMgY29uZmlndXJlZCB0byBhY2NlcHQgU1FMIFNlcnZlci1zdHlsZSBxdW90aW5nKTpcbiAgIGBgYGdvXG4gICBxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBbbWljcm8tYWNjb3VudF0uW3VzZXJdIG9uIFttaWNyby1hY2NvdW50XS5bdXNlcl0uW2lkXSA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICBgYGBcblxuMy4gQ3JlYXRlIGEgZGF0YWJhc2UgYWxpYXMgaW4geW91ciBNeVNRTCBjb25maWd1cmF0aW9uLlxuXG5QbGVhc2UgbGV0IG1lIGtub3cgaWYgdGhlIGN1cnJlbnQgc29sdXRpb24gd29ya3Mgb3IgaWYgeW91IG5lZWQgdG8gdHJ5IG9uZSBvZiB0aGUgYWx0ZXJuYXRpdmVzLlxuIiwid29ya3NwYWNlX2ZpbGVfY2h1bmtzIjpbXX0seyJyZXF1ZXN0X2lkIjoiMTFjODkwNDYtNWRiZS00YmE1LTg3NjgtMzViNGQyYmNmNjFiIiwidXVpZCI6IjExMzY5NTIwLTdjZmMtNGQ1NC04MmE0LWI5MzI1ZWUxNWUxYyIsImNoYXRJdGVtVHlwZSI6ImFnZW50aWMtY2hlY2twb2ludC1kZWxpbWl0ZXIiLCJzdGF0dXMiOiJzdWNjZXNzIiwiZnJvbVRpbWVzdGFtcCI6MTc0Njc3MTExMDI2MywidG9UaW1lc3RhbXAiOjE3NDY3NzEzMDA4MjcsInNlZW5fc3RhdGUiOiJzZWVuIn0seyJyZXF1ZXN0X2lkIjoiYjUzM2JlNDMtN2Q1Zi00N2JiLWJkNzctOGNlZTIxOWQ1OWMwIiwic3RhdHVzIjoiY2FuY2VsbGVkIiwiY2hhdEl0ZW1UeXBlIjoiYWdlbnRpYy10dXJuLWRlbGltaXRlciJ9LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiI4ZTMwMTNhNS02YWNiLTRlYzQtYTNjYi1kNzVlYmRlZmRhNjMiLCJyZXF1ZXN0X21lc3NhZ2UiOiJTRUxFQ1QgYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gaWRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGNyZWF0ZWRfYXRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYHVwZGF0ZWRfYXRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGRlbGV0ZWRfYXRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYHV1aWRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYG9yZGVyX25vYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBidW5kbGVfdXVpZGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gYnVuZGxlX25hbWVgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9udW1gLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX25hbWVgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGFtb3VudGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gYW1vdW50X3R5cGVgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYHZhbHVlX2FkZF9idW5kbGVfdXVpZGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gdmFsdWVfYWRkX2J1bmRsZV9hbW91bnRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYHZhbHVlX2FkZF9vcmlnaW5hbF9wcmljZWAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gdmFsdWVfYWRkX2Rpc2NvdW50X3ByaWNlYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmB2YWx1ZV9hZGRfc2F2ZWRfYW1vdW50YCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmB0b3RhbF9hbW91bnRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYG51bWAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gc2lnbl9jb250cmFjdGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gc2lnbmF0dXJlYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBzaWduZWRfdGltZWAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gcGF5X3R5cGVgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYHBheV90aW1lYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjaGVja291dF9zZXNzaW9uX2lkYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjaGVja291dF9zZXNzaW9uX3VybGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gc3RhdHVzYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjb250cmFjdF9ub2AsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gYnVuZGxlX2NvbW1vbl91aWRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGFkZF9idW5kbGVfY29tbW9uX3VpZGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gZmluYW5jaWFsX2NvbmZpcm1hdGlvbmAgRlJPTSBgYnVuZGxlX29yZGVyX3JlY29yZHNgIGxlZnQgam9pbiBtaWNyby1hY2NvdW50LnVzZXIgb24gbWljcm8tYWNjb3VudC51c2VyLmlkID0gYnVuZGxlX29yZGVyX3JlY29yZHMuY3VzdG9tZXJfaWQgV0hFUkUgYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gZGVsZXRlZF9hdGAgSVMgTlVMTCBMSU1JVCAyMFxu5Li65LuA5LmIIOWIsOaJp+ihjOeahOaXtuWAmSBgIOi/meS4quespuWPt+WwseayoeacieS6hiIsInJpY2hfdGV4dF9qc29uX3JlcHIiOnsidHlwZSI6ImRvYyIsImNvbnRlbnQiOlt7InR5cGUiOiJwYXJhZ3JhcGgiLCJjb250ZW50IjpbeyJ0eXBlIjoidGV4dCIsInRleHQiOiJTRUxFQ1QgYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gaWRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGNyZWF0ZWRfYXRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYHVwZGF0ZWRfYXRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGRlbGV0ZWRfYXRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYHV1aWRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYG9yZGVyX25vYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBidW5kbGVfdXVpZGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gYnVuZGxlX25hbWVgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9udW1gLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX25hbWVgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGFtb3VudGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gYW1vdW50X3R5cGVgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYHZhbHVlX2FkZF9idW5kbGVfdXVpZGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gdmFsdWVfYWRkX2J1bmRsZV9hbW91bnRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYHZhbHVlX2FkZF9vcmlnaW5hbF9wcmljZWAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gdmFsdWVfYWRkX2Rpc2NvdW50X3ByaWNlYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmB2YWx1ZV9hZGRfc2F2ZWRfYW1vdW50YCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmB0b3RhbF9hbW91bnRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYG51bWAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gc2lnbl9jb250cmFjdGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gc2lnbmF0dXJlYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBzaWduZWRfdGltZWAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gcGF5X3R5cGVgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYHBheV90aW1lYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjaGVja291dF9zZXNzaW9uX2lkYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjaGVja291dF9zZXNzaW9uX3VybGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gc3RhdHVzYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjb250cmFjdF9ub2AsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gYnVuZGxlX2NvbW1vbl91aWRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGFkZF9idW5kbGVfY29tbW9uX3VpZGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gZmluYW5jaWFsX2NvbmZpcm1hdGlvbmAgRlJPTSBgYnVuZGxlX29yZGVyX3JlY29yZHNgIGxlZnQgam9pbiBtaWNyby1hY2NvdW50LnVzZXIgb24gbWljcm8tYWNjb3VudC51c2VyLmlkID0gYnVuZGxlX29yZGVyX3JlY29yZHMuY3VzdG9tZXJfaWQgV0hFUkUgYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gZGVsZXRlZF9hdGAgSVMgTlVMTCBMSU1JVCAyMCJ9LHsidHlwZSI6ImhhcmRCcmVhayJ9LHsidHlwZSI6InRleHQiLCJ0ZXh0Ijoi5Li65LuA5LmIIOWIsOaJp+ihjOeahOaXtuWAmSBgIOi/meS4quespuWPt+WwseayoeacieS6hiJ9XX1dfSwibWVudGlvbmVkX2l0ZW1zIjpbXSwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxVnE0cnNmR1JpWWlqODkxTVZxcFkxTiIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwidmlld1wiLCBcInBhdGhcIjogXCJpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvXCIsIFwidmlld19yYW5nZVwiOiBbNzAsIDgwXX0iLCJtY3Bfc2VydmVyX25hbWUiOiIiLCJtY3BfdG9vbF9uYW1lIjoiIn19LHsiaWQiOjAsInR5cGUiOjAsImNvbnRlbnQiOiLmiJHmmI7nmb3pl67popjmiYDlnKjkuobjgILmgqjnmoTku6PnoIHkuK3kvb/nlKjkuoblj43lvJXlj7fvvIhgYCBgIGBg77yJ5p2l5byV55So6KGo5ZCN5ZKM5YiX5ZCN77yM5L2G5Zyo5a6e6ZmF5omn6KGM55qEU1FM6K+t5Y+l5Lit77yM6L+Z5Lqb5Y+N5byV5Y+35Zyo5p+Q5Lqb5Zyw5pa55Lii5aSx5LqG44CCXG5cbui/meaYr+WboOS4ukdPUk3vvIjmgqjkvb/nlKjnmoRPUk3moYbmnrbvvInlnKjlpITnkIZTUUzor63lj6Xml7bnmoTooYzkuLrkuI3kuIDoh7TjgIJHT1JN5Lya6Ieq5Yqo5Li65p+Q5Lqb5qCH6K+G56ym5re75Yqg5Y+N5byV5Y+377yM5L2G5a+55LqO6Leo5pWw5o2u5bqT55qE6L+e5o6l77yI5aaC5oKo55qEYG1pY3JvLWFjY291bnQudXNlcmDvvInvvIzlroPlj6/og73msqHmnInmraPnoa7lpITnkIbmiYDmnInnmoTlj43lvJXlj7fjgIJcblxu6K6p5oiR5Lus5L+u5aSN6L+Z5Liq6Zeu6aKY77yaXG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjowLCJ0ZXh0X25vZGUiOnsiY29udGVudCI6IlNFTEVDVCBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBpZGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3JlYXRlZF9hdGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gdXBkYXRlZF9hdGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gZGVsZXRlZF9hdGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gdXVpZGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gb3JkZXJfbm9gLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGJ1bmRsZV91dWlkYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBidW5kbGVfbmFtZWAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3VzdG9tZXJfaWRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX251bWAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3VzdG9tZXJfbmFtZWAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gYW1vdW50YCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBhbW91bnRfdHlwZWAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gdmFsdWVfYWRkX2J1bmRsZV91dWlkYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmB2YWx1ZV9hZGRfYnVuZGxlX2Ftb3VudGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gdmFsdWVfYWRkX29yaWdpbmFsX3ByaWNlYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmB2YWx1ZV9hZGRfZGlzY291bnRfcHJpY2VgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYHZhbHVlX2FkZF9zYXZlZF9hbW91bnRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYHRvdGFsX2Ftb3VudGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gbnVtYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBzaWduX2NvbnRyYWN0YCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBzaWduYXR1cmVgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYHNpZ25lZF90aW1lYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBwYXlfdHlwZWAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gcGF5X3RpbWVgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGNoZWNrb3V0X3Nlc3Npb25faWRgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGNoZWNrb3V0X3Nlc3Npb25fdXJsYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBzdGF0dXNgLGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGNvbnRyYWN0X25vYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBidW5kbGVfY29tbW9uX3VpZGAsYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gYWRkX2J1bmRsZV9jb21tb25fdWlkYCxgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBmaW5hbmNpYWxfY29uZmlybWF0aW9uYCBGUk9NIGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AgbGVmdCBqb2luIG1pY3JvLWFjY291bnQudXNlciBvbiBtaWNyby1hY2NvdW50LnVzZXIuaWQgPSBidW5kbGVfb3JkZXJfcmVjb3Jkcy5jdXN0b21lcl9pZCBXSEVSRSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBkZWxldGVkX2F0YCBJUyBOVUxMIExJTUlUIDIwXG7kuLrku4DkuYgg5Yiw5omn6KGM55qE5pe25YCZIGAg6L+Z5Liq56ym5Y+35bCx5rKh5pyJ5LqGIn19LHsiaWQiOjIsInR5cGUiOjQsImlkZV9zdGF0ZV9ub2RlIjp7IndvcmtzcGFjZUZvbGRlcnMiOlt7InJlcG9zaXRvcnlSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIiwiZm9sZGVyUm9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSJ9XSwid29ya3NwYWNlRm9sZGVyc1VuY2hhbmdlZCI6ZmFsc2V9fV0sInRpbWVzdGFtcCI6IjIwMjUtMDUtMDlUMDY6NDI6NDIuNjI2WiIsInJlc3BvbnNlX3RleHQiOiLmiJHmmI7nmb3pl67popjmiYDlnKjkuobjgILmgqjnmoTku6PnoIHkuK3kvb/nlKjkuoblj43lvJXlj7fvvIhgYCBgIGBg77yJ5p2l5byV55So6KGo5ZCN5ZKM5YiX5ZCN77yM5L2G5Zyo5a6e6ZmF5omn6KGM55qEU1FM6K+t5Y+l5Lit77yM6L+Z5Lqb5Y+N5byV5Y+35Zyo5p+Q5Lqb5Zyw5pa55Lii5aSx5LqG44CCXG5cbui/meaYr+WboOS4ukdPUk3vvIjmgqjkvb/nlKjnmoRPUk3moYbmnrbvvInlnKjlpITnkIZTUUzor63lj6Xml7bnmoTooYzkuLrkuI3kuIDoh7TjgIJHT1JN5Lya6Ieq5Yqo5Li65p+Q5Lqb5qCH6K+G56ym5re75Yqg5Y+N5byV5Y+377yM5L2G5a+55LqO6Leo5pWw5o2u5bqT55qE6L+e5o6l77yI5aaC5oKo55qEYG1pY3JvLWFjY291bnQudXNlcmDvvInvvIzlroPlj6/og73msqHmnInmraPnoa7lpITnkIbmiYDmnInnmoTlj43lvJXlj7fjgIJcblxu6K6p5oiR5Lus5L+u5aSN6L+Z5Liq6Zeu6aKY77yaXG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiNjg3MWU0MDItOGIwZi00ZjYyLTgyMmUtZmYzODAzY2JhZjU1IiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjo1LCJjb250ZW50IjoiIiwidG9vbF91c2UiOnsidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxRUh3QVdlNldKOTROVktlc1hGbmpQNyIsInRvb2xfbmFtZSI6InN0ci1yZXBsYWNlLWVkaXRvciIsImlucHV0X2pzb24iOiJ7XCJjb21tYW5kXCI6IFwic3RyX3JlcGxhY2VcIiwgXCJwYXRoXCI6IFwiaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nb1wiLCBcInN0cl9yZXBsYWNlX2VudHJpZXNcIjogW3tcIm9sZF9zdHJcIjogXCJcXHRxdWVyeS5Kb2lucyhcXFwibGVmdCBqb2luIGBtaWNyby1hY2NvdW50YC5gdXNlcmAgb24gYG1pY3JvLWFjY291bnRgLmB1c2VyYC5pZCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuY3VzdG9tZXJfaWRcXFwiKVwiLCBcIm5ld19zdHJcIjogXCJcXHRxdWVyeS5Kb2lucyhcXFwibGVmdCBqb2luIGBtaWNyby1hY2NvdW50YC5gdXNlcmAgb24gYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gaWRgID0gYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3VzdG9tZXJfaWRgXFxcIilcIiwgXCJvbGRfc3RyX3N0YXJ0X2xpbmVfbnVtYmVyXCI6IDc1LCBcIm9sZF9zdHJfZW5kX2xpbmVfbnVtYmVyXCI6IDc1fV19IiwibWNwX3NlcnZlcl9uYW1lIjoiIiwibWNwX3Rvb2xfbmFtZSI6IiJ9fSx7ImlkIjowLCJ0eXBlIjowLCJjb250ZW50Ijoi5oiR55yL5Yiw6Zeu6aKY5LqG44CC5Zyo5oKo55qESk9JTuivreWPpeS4re+8jOacieS6m+WIl+WQjeacieWPjeW8leWPt++8jOacieS6m+ayoeacieOAguiuqeaIkeS7rOehruS/neaJgOacieeahOagh+ivhuespumDveato+ehruS9v+eUqOWPjeW8leWPt++8mlxuIn0seyJpZCI6MiwidHlwZSI6MiwiY29udGVudCI6IiJ9LHsiaWQiOjMsInR5cGUiOjMsImNvbnRlbnQiOiIifV0sInNlZW5fc3RhdGUiOiJzZWVuIiwic3RydWN0dXJlZF9yZXF1ZXN0X25vZGVzIjpbeyJpZCI6MSwidHlwZSI6MSwidG9vbF9yZXN1bHRfbm9kZSI6eyJjb250ZW50IjoiSGVyZSdzIHRoZSByZXN1bHQgb2YgcnVubmluZyBgY2F0IC1uYCBvbiBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvOlxuICAgIDcwXHRcdHJlcy5PcmRlclJlY29yZHMgPSBtYWtlKFtdKmJ1bmRsZS5PcmRlclJlY29yZCwgMClcbiAgICA3MVx0XHRyZWNvcmRzIDo9IG1ha2UoW10qbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCAwKVxuICAgIDcyXHRcbiAgICA3M1x0XHRxdWVyeSA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pXG4gICAgNzRcdFxuICAgIDc1XHRcdHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIGBtaWNyby1hY2NvdW50YC5gdXNlcmAgb24gYG1pY3JvLWFjY291bnRgLmB1c2VyYC5pZCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuY3VzdG9tZXJfaWRcIilcbiAgICA3Nlx0XG4gICAgNzdcdFx0aWYgcmVxLkN1c3RvbWVySUQgIT0gXCJcIiB7XG4gICAgNzhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfaWQgPSA/XCIsIHJlcS5DdXN0b21lcklEKVxuICAgIDc5XHRcdH1cbiAgICA4MFx0XG5Ub3RhbCBsaW5lcyBpbiBmaWxlOiAyMzlcbiIsImlzX2Vycm9yIjpmYWxzZSwicmVxdWVzdF9pZCI6IiIsInRvb2xfdXNlX2lkIjoidG9vbHVfdnJ0eF8wMVZxNHJzZkdSaVlpajg5MU1WcXBZMU4ifX0seyJpZCI6MiwidHlwZSI6NCwiaWRlX3N0YXRlX25vZGUiOnsid29ya3NwYWNlRm9sZGVycyI6W3sicmVwb3NpdG9yeVJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUiLCJmb2xkZXJSb290IjoiQzovVXNlcnMvbGVub3ZvL0Rlc2t0b3AvZmllZS9taXJjcm8tYnVuZGxlIn1dLCJ3b3Jrc3BhY2VGb2xkZXJzVW5jaGFuZ2VkIjpmYWxzZX19XSwidGltZXN0YW1wIjoiMjAyNS0wNS0wOVQwNjo0Mjo1MC45MjBaIiwicmVzcG9uc2VfdGV4dCI6IuaIkeeci+WIsOmXrumimOS6huOAguWcqOaCqOeahEpPSU7or63lj6XkuK3vvIzmnInkupvliJflkI3mnInlj43lvJXlj7fvvIzmnInkupvmsqHmnInjgILorqnmiJHku6znoa7kv53miYDmnInnmoTmoIfor4bnrKbpg73mraPnoa7kvb/nlKjlj43lvJXlj7fvvJpcbiIsIndvcmtzcGFjZV9maWxlX2NodW5rcyI6W119LHsic3RhdHVzIjoic3VjY2VzcyIsInJlcXVlc3RfaWQiOiJjOTc0MTcwMi1lZTIyLTRjMzItYTg4Mi05ZTkyMGYyYzMxOTMiLCJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJzdHJ1Y3R1cmVkX291dHB1dF9ub2RlcyI6W3siaWQiOjEsInR5cGUiOjUsImNvbnRlbnQiOiIiLCJ0b29sX3VzZSI6eyJ0b29sX3VzZV9pZCI6InRvb2x1X3ZydHhfMDE4YThuN3BDcnJRQWJEZFBOdEVKOW43IiwidG9vbF9uYW1lIjoic3RyLXJlcGxhY2UtZWRpdG9yIiwiaW5wdXRfanNvbiI6IntcImNvbW1hbmRcIjogXCJ2aWV3XCIsIFwicGF0aFwiOiBcImludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ29cIiwgXCJ2aWV3X3JhbmdlXCI6IFsxMzAsIDE0MF19IiwibWNwX3NlcnZlcl9uYW1lIjoiIiwibWNwX3Rvb2xfbmFtZSI6IiJ9fSx7ImlkIjowLCJ0eXBlIjowLCJjb250ZW50Ijoi546w5Zyo6K6p5oiR5Lus5qOA5p+l5LiA5LiL5Y+m5LiA5Liq5L2/55SoYG1pY3JvLWFjY291bnRg55qE5Zyw5pa577yaXG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjoxLCJ0b29sX3Jlc3VsdF9ub2RlIjp7ImNvbnRlbnQiOiJTdWNjZXNzZnVsbHkgZWRpdGVkIHRoZSBmaWxlIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ28uXG5SZXN1bHQgZm9yIHN0cl9yZXBsYWNlIGZvciBlbnRyeSB3aXRoIGluZGV4IFswXTpcblJlcGxhY2VtZW50IHN1Y2Nlc3NmdWwuXG5FZGl0ZWQgc2VjdGlvbiBhZnRlciBJREUgYXV0by1mb3JtYXR0aW5nIHdhcyBhcHBsaWVkOlxuICAgIDcxXHRcdHJlY29yZHMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIDApXG4gICAgNzJcdFxuICAgIDczXHRcdHF1ZXJ5IDo9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSlcbiAgICA3NFx0XG4gICAgNzVcdFx0cXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgICA3Nlx0XG4gICAgNzdcdFx0aWYgcmVxLkN1c3RvbWVySUQgIT0gXCJcIiB7XG4gICAgNzhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfaWQgPSA/XCIsIHJlcS5DdXN0b21lcklEKVxuICAgIDc5XHRcdH1cblxuUmV2aWV3IHRoZSBjaGFuZ2VzIGFuZCBtYWtlIHN1cmUgdGhleSBhcmUgYXMgZXhwZWN0ZWQgKGNvcnJlY3QgaW5kZW50YXRpb24sIG5vIGR1cGxpY2F0ZSBsaW5lcywgZXRjKS5cbkVkaXQgdGhlIGZpbGUgYWdhaW4gaWYgbmVjZXNzYXJ5LlxuIiwiaXNfZXJyb3IiOmZhbHNlLCJyZXF1ZXN0X2lkIjoiIiwidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxRUh3QVdlNldKOTROVktlc1hGbmpQNyJ9fSx7ImlkIjoyLCJ0eXBlIjo0LCJpZGVfc3RhdGVfbm9kZSI6eyJ3b3Jrc3BhY2VGb2xkZXJzIjpbeyJyZXBvc2l0b3J5Um9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSIsImZvbGRlclJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUifV0sIndvcmtzcGFjZUZvbGRlcnNVbmNoYW5nZWQiOmZhbHNlfX1dLCJ0aW1lc3RhbXAiOiIyMDI1LTA1LTA5VDA2OjQzOjAwLjI1OVoiLCJyZXNwb25zZV90ZXh0Ijoi546w5Zyo6K6p5oiR5Lus5qOA5p+l5LiA5LiL5Y+m5LiA5Liq5L2/55SoYG1pY3JvLWFjY291bnRg55qE5Zyw5pa577yaXG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InN0YXR1cyI6InN1Y2Nlc3MiLCJyZXF1ZXN0X2lkIjoiZTVjMTk3ZGMtNWE2NC00MTUwLWE4MzctYjJhMmRjYThlYzU5IiwicmVxdWVzdF9tZXNzYWdlIjoiIiwic3RydWN0dXJlZF9vdXRwdXRfbm9kZXMiOlt7ImlkIjowLCJ0eXBlIjowLCJjb250ZW50Ijoi6L+Z6YeM55qE5Y+N5byV5Y+355yL6LW35p2l5piv5q2j56Gu55qE44CCXG5cbueOsOWcqO+8jOiuqeaIkeino+mHiuS4gOS4i+S4uuS7gOS5iOaCqOWcqOaJp+ihjOaXtueci+WIsOeahFNRTOivreWPpeS4reWPjeW8leWPt+a2iOWkseS6hu+8mlxuXG4jIyDpl67popjop6Pph4pcblxu5b2T5oKo55yL5Yiw5omn6KGM55qEU1FM6K+t5Y+l5pe277yI5aaC5oKo5o+Q5L6b55qE6YKj5p2hU0VMRUNU6K+t5Y+l77yJ77yM5Y+N5byV5Y+35Zyo5p+Q5Lqb5Zyw5pa55Lii5aSx5LqG77yM54m55Yir5piv5ZyoYG1pY3JvLWFjY291bnQudXNlcmDpg6jliIbjgILov5nlj6/og73mmK/lm6DkuLrvvJpcblxuMS4gKipHT1JN55qEU1FM5pel5b+X6K6w5b2V5py65Yi2KirvvJpHT1JN5Zyo6K6w5b2VU1FM6K+t5Y+l5pe25Y+v6IO95LiN5Lya5a6M5YWo5oyJ54Wn5a6e6ZmF5omn6KGM55qEU1FM6K+t5Y+l5p2l5pi+56S677yM54m55Yir5piv5a+55LqO5Y+N5byV5Y+36L+Z5qC355qE54m55q6K5a2X56ym44CCXG5cbjIuICoq5pWw5o2u5bqT6amx5Yqo55qE5aSE55CGKirvvJrlnKjmn5Dkupvmg4XlhrXkuIvvvIzmlbDmja7lupPpqbHliqjlj6/og73kvJrlnKjlj5HpgIFTUUzliLDmlbDmja7lupPmnI3liqHlmajkuYvliY3kv67mlLlTUUzor63lj6XjgIJcblxuMy4gKipNeVNRTOeahFNRTOino+aekOWZqCoq77yaTXlTUUzlnKjop6PmnpBTUUzml7blj6/og73kvJrlv73nlaXmn5Dkupvlj43lvJXlj7fvvIznibnliKvmmK/lvZPmoIfor4bnrKbkuI3ljIXlkKvnibnmrorlrZfnrKbml7bjgIJcblxuIyMg6Kej5Yaz5pa55qGIXG5cbuaIkeW3sue7j+S/ruWkjeS6hkpPSU7or63lj6XkuK3nmoTlj43lvJXlj7fkuI3kuIDoh7Tpl67popjjgILnjrDlnKjmiYDmnInnmoTmoIfor4bnrKbpg73mraPnoa7lnLDnlKjlj43lvJXlj7fmi6zotbfmnaXkuobjgILov5nlupTor6Xop6PlhrPmgqjnmoRTUUzor63ms5XplJnor6/jgIJcblxu5aaC5p6c5oKo5LuN54S26YGH5Yiw6Zeu6aKY77yM5Y+v5Lul5bCd6K+V5Lul5LiL5pa55rOV77yaXG5cbjEuICoq5L2/55So5Y6f5aeLU1FMKirvvJrlpoLmnpxHT1JN55qE6Ieq5Yqo5byV55So5py65Yi25a+86Ie06Zeu6aKY77yM5oKo5Y+v5Lul5bCd6K+V5L2/55So5Y6f5aeLU1FM77yaXG4gICBgYGBnb1xuICAgcXVlcnkuUmF3KFwiU0VMRUNUICogRlJPTSBgYnVuZGxlX29yZGVyX3JlY29yZHNgIGxlZnQgam9pbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYCBXSEVSRSAuLi5cIilcbiAgIGBgYFxuXG4yLiAqKuS9v+eUqOWIq+WQjSoq77ya5Li66KGo5re75Yqg5Yir5ZCN5Y+v6IO95Lya566A5YyWU1FM5bm25YeP5bCR5byV55So6Zeu6aKY77yaXG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBBUyB1IG9uIHUuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFwiKVxuICAgYGBgXG5cbjMuICoq5qOA5p+l5pWw5o2u5bqT5ZCN56ewKirvvJrnoa7orqTmgqjnmoTmlbDmja7lupPlkI3np7Dnoa7lrp7mmK9gbWljcm8tYWNjb3VudGDogIzkuI3mmK9gbWljcm9fYWNjb3VudGDjgIJcblxu6K+35bCd6K+V6L+Z5Lqb5L+u5pS577yM55yL55yL5piv5ZCm6Kej5Yaz5LqG5oKo55qE6Zeu6aKY44CC5aaC5p6c5LuN54S25pyJ6Zeu6aKY77yM6K+35o+Q5L6b5pu05aSa55qE6ZSZ6K+v5L+h5oGv77yM5oiR5Lya57un57ut5biu5Yqp5oKo6Kej5Yaz44CCXG4ifSx7ImlkIjoyLCJ0eXBlIjoyLCJjb250ZW50IjoiIn0seyJpZCI6MywidHlwZSI6MywiY29udGVudCI6IiJ9XSwic2Vlbl9zdGF0ZSI6InNlZW4iLCJzdHJ1Y3R1cmVkX3JlcXVlc3Rfbm9kZXMiOlt7ImlkIjoxLCJ0eXBlIjoxLCJ0b29sX3Jlc3VsdF9ub2RlIjp7ImNvbnRlbnQiOiJIZXJlJ3MgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGBjYXQgLW5gIG9uIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ286XG4gICAxMzBcdFxuICAgMTMxXHRcdGlmIHJlcS5UZWxOdW0gIT0gXCJcIiB7XG4gICAxMzJcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gdGVsX251bWAgbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICAxMzNcdFx0fVxuICAgMTM0XHRcbiAgIDEzNVx0XHRjb3VudCA6PSAqcXVlcnlcbiAgIDEzNlx0XG4gICAxMzdcdFx0aWYgcmVxLlBhZ2VTaXplICE9IDAgJiYgcmVxLlBhZ2UgIT0gMCB7XG4gICAxMzhcdFx0XHRxdWVyeSA9IHF1ZXJ5LkxpbWl0KGludChyZXEuUGFnZVNpemUpKS5PZmZzZXQoaW50KHJlcS5QYWdlLTEpICogaW50KHJlcS5QYWdlU2l6ZSkpXG4gICAxMzlcdFx0fVxuICAgMTQwXHRcblRvdGFsIGxpbmVzIGluIGZpbGU6IDIzOVxuIiwiaXNfZXJyb3IiOmZhbHNlLCJyZXF1ZXN0X2lkIjoiIiwidG9vbF91c2VfaWQiOiJ0b29sdV92cnR4XzAxOGE4bjdwQ3JyUUFiRGRQTnRFSjluNyJ9fSx7ImlkIjoyLCJ0eXBlIjo0LCJpZGVfc3RhdGVfbm9kZSI6eyJ3b3Jrc3BhY2VGb2xkZXJzIjpbeyJyZXBvc2l0b3J5Um9vdCI6IkM6L1VzZXJzL2xlbm92by9EZXNrdG9wL2ZpZWUvbWlyY3JvLWJ1bmRsZSIsImZvbGRlclJvb3QiOiJDOi9Vc2Vycy9sZW5vdm8vRGVza3RvcC9maWVlL21pcmNyby1idW5kbGUifV0sIndvcmtzcGFjZUZvbGRlcnNVbmNoYW5nZWQiOmZhbHNlfX1dLCJ0aW1lc3RhbXAiOiIyMDI1LTA1LTA5VDA2OjQzOjA5Ljc0MloiLCJyZXNwb25zZV90ZXh0Ijoi6L+Z6YeM55qE5Y+N5byV5Y+355yL6LW35p2l5piv5q2j56Gu55qE44CCXG5cbueOsOWcqO+8jOiuqeaIkeino+mHiuS4gOS4i+S4uuS7gOS5iOaCqOWcqOaJp+ihjOaXtueci+WIsOeahFNRTOivreWPpeS4reWPjeW8leWPt+a2iOWkseS6hu+8mlxuXG4jIyDpl67popjop6Pph4pcblxu5b2T5oKo55yL5Yiw5omn6KGM55qEU1FM6K+t5Y+l5pe277yI5aaC5oKo5o+Q5L6b55qE6YKj5p2hU0VMRUNU6K+t5Y+l77yJ77yM5Y+N5byV5Y+35Zyo5p+Q5Lqb5Zyw5pa55Lii5aSx5LqG77yM54m55Yir5piv5ZyoYG1pY3JvLWFjY291bnQudXNlcmDpg6jliIbjgILov5nlj6/og73mmK/lm6DkuLrvvJpcblxuMS4gKipHT1JN55qEU1FM5pel5b+X6K6w5b2V5py65Yi2KirvvJpHT1JN5Zyo6K6w5b2VU1FM6K+t5Y+l5pe25Y+v6IO95LiN5Lya5a6M5YWo5oyJ54Wn5a6e6ZmF5omn6KGM55qEU1FM6K+t5Y+l5p2l5pi+56S677yM54m55Yir5piv5a+55LqO5Y+N5byV5Y+36L+Z5qC355qE54m55q6K5a2X56ym44CCXG5cbjIuICoq5pWw5o2u5bqT6amx5Yqo55qE5aSE55CGKirvvJrlnKjmn5Dkupvmg4XlhrXkuIvvvIzmlbDmja7lupPpqbHliqjlj6/og73kvJrlnKjlj5HpgIFTUUzliLDmlbDmja7lupPmnI3liqHlmajkuYvliY3kv67mlLlTUUzor63lj6XjgIJcblxuMy4gKipNeVNRTOeahFNRTOino+aekOWZqCoq77yaTXlTUUzlnKjop6PmnpBTUUzml7blj6/og73kvJrlv73nlaXmn5Dkupvlj43lvJXlj7fvvIznibnliKvmmK/lvZPmoIfor4bnrKbkuI3ljIXlkKvnibnmrorlrZfnrKbml7bjgIJcblxuIyMg6Kej5Yaz5pa55qGIXG5cbuaIkeW3sue7j+S/ruWkjeS6hkpPSU7or63lj6XkuK3nmoTlj43lvJXlj7fkuI3kuIDoh7Tpl67popjjgILnjrDlnKjmiYDmnInnmoTmoIfor4bnrKbpg73mraPnoa7lnLDnlKjlj43lvJXlj7fmi6zotbfmnaXkuobjgILov5nlupTor6Xop6PlhrPmgqjnmoRTUUzor63ms5XplJnor6/jgIJcblxu5aaC5p6c5oKo5LuN54S26YGH5Yiw6Zeu6aKY77yM5Y+v5Lul5bCd6K+V5Lul5LiL5pa55rOV77yaXG5cbjEuICoq5L2/55So5Y6f5aeLU1FMKirvvJrlpoLmnpxHT1JN55qE6Ieq5Yqo5byV55So5py65Yi25a+86Ie06Zeu6aKY77yM5oKo5Y+v5Lul5bCd6K+V5L2/55So5Y6f5aeLU1FM77yaXG4gICBgYGBnb1xuICAgcXVlcnkuUmF3KFwiU0VMRUNUICogRlJPTSBgYnVuZGxlX29yZGVyX3JlY29yZHNgIGxlZnQgam9pbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYCBXSEVSRSAuLi5cIilcbiAgIGBgYFxuXG4yLiAqKuS9v+eUqOWIq+WQjSoq77ya5Li66KGo5re75Yqg5Yir5ZCN5Y+v6IO95Lya566A5YyWU1FM5bm25YeP5bCR5byV55So6Zeu6aKY77yaXG4gICBgYGBnb1xuICAgcXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBBUyB1IG9uIHUuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFwiKVxuICAgYGBgXG5cbjMuICoq5qOA5p+l5pWw5o2u5bqT5ZCN56ewKirvvJrnoa7orqTmgqjnmoTmlbDmja7lupPlkI3np7Dnoa7lrp7mmK9gbWljcm8tYWNjb3VudGDogIzkuI3mmK9gbWljcm9fYWNjb3VudGDjgIJcblxu6K+35bCd6K+V6L+Z5Lqb5L+u5pS577yM55yL55yL5piv5ZCm6Kej5Yaz5LqG5oKo55qE6Zeu6aKY44CC5aaC5p6c5LuN54S25pyJ6Zeu6aKY77yM6K+35o+Q5L6b5pu05aSa55qE6ZSZ6K+v5L+h5oGv77yM5oiR5Lya57un57ut5biu5Yqp5oKo6Kej5Yaz44CCXG4iLCJ3b3Jrc3BhY2VfZmlsZV9jaHVua3MiOltdfSx7InJlcXVlc3RfaWQiOiI2ZGVjNjRmZi1jMjAyLTQ0ZWQtOWI1ZS1lNTYwNmJjNWMyZTAiLCJ1dWlkIjoiNjYwOWRmYjctNGJiMC00NDI5LWIyMGYtNzBmNGVhZTljMTFjIiwiY2hhdEl0ZW1UeXBlIjoiYWdlbnRpYy1jaGVja3BvaW50LWRlbGltaXRlciIsInN0YXR1cyI6InN1Y2Nlc3MiLCJmcm9tVGltZXN0YW1wIjoxNzQ2NzcxMzAwODI3LCJ0b1RpbWVzdGFtcCI6MTc0Njc3MzAwOTM1Miwic2Vlbl9zdGF0ZSI6InNlZW4ifV0sImZlZWRiYWNrU3RhdGVzIjp7InRlbXAtZmUtMTk5YzA0MzYtOTBmNS00Njk2LTk4ZDEtOTdhM2U1NjZhNzhjIjp7InNlbGVjdGVkUmF0aW5nIjowLCJmZWVkYmFja05vdGUiOiIifSwidGVtcC1mZS0xNGJmNjkyNy1kNzE1LTQ5OTctOTA0Ny1jNTlhNjRiYTkyM2EiOnsic2VsZWN0ZWRSYXRpbmciOjAsImZlZWRiYWNrTm90ZSI6IiJ9LCJ0ZW1wLWZlLTUxZTUyZTNkLWM0YTEtNDA2ZS04OTMzLThkM2RlYjIxMTNkNCI6eyJzZWxlY3RlZFJhdGluZyI6MCwiZmVlZGJhY2tOb3RlIjoiIn0sInRlbXAtZmUtYzZlNGNjOGItZWRhNS00ODNmLTkzOGMtYjJmMmU4MzYwM2UzIjp7InNlbGVjdGVkUmF0aW5nIjowLCJmZWVkYmFja05vdGUiOiIifSwidGVtcC1mZS1kYzVlYzkyMS1mN2QwLTQ0YzQtYTNiZS1lMGE4MzlkNmZlYWMiOnsic2VsZWN0ZWRSYXRpbmciOjAsImZlZWRiYWNrTm90ZSI6IiJ9LCJ0ZW1wLWZlLTYyN2I5YjVmLTBkZDEtNDM1Yi1hYjJmLTgyNTQ5NmJhNzk5NCI6eyJzZWxlY3RlZFJhdGluZyI6MCwiZmVlZGJhY2tOb3RlIjoiIn0sInRlbXAtZmUtZTI5ZmI1MmQtMWY3Yy00MTAyLTk3YzgtMWZhOGEyMGQ0YmJlIjp7InNlbGVjdGVkUmF0aW5nIjowLCJmZWVkYmFja05vdGUiOiIifSwidGVtcC1mZS1mMmZmNTI1MS0wZjJmLTQxNGItOTdmMC05NmY2MzBmYzJhODkiOnsic2VsZWN0ZWRSYXRpbmciOjAsImZlZWRiYWNrTm90ZSI6IiJ9LCJ0ZW1wLWZlLWYwOTI2NjE4LTgwMTEtNGU5Zi04ODBkLTU0YjY4MTAzMWVhNyI6eyJzZWxlY3RlZFJhdGluZyI6MCwiZmVlZGJhY2tOb3RlIjoiIn0sInRlbXAtZmUtYzkwY2M5MjktYTgwZi00MTA2LTlkMzQtMjcyNWExMTdhZWQwIjp7InNlbGVjdGVkUmF0aW5nIjowLCJmZWVkYmFja05vdGUiOiIifSwidGVtcC1mZS1jZmRjN2Q4Mi1hZjI1LTRmNDAtOTc1Ni1lMmZlOWI0ZmIxMjIiOnsic2VsZWN0ZWRSYXRpbmciOjAsImZlZWRiYWNrTm90ZSI6IiJ9LCJ0ZW1wLWZlLWFjZGZiZTg2LWJjOTQtNDZmNi1hZGUxLTk2MzcxNzVmYjVkNyI6eyJzZWxlY3RlZFJhdGluZyI6MCwiZmVlZGJhY2tOb3RlIjoiIn0sInRlbXAtZmUtZDUyYmU3MGUtZmI2MC00N2E2LTk2MTktYjRlMmZmOWYwOTg5Ijp7InNlbGVjdGVkUmF0aW5nIjowLCJmZWVkYmFja05vdGUiOiIifSwidGVtcC1mZS1jZGE2MTRhMC0zMmIxLTQ3YWUtYjU0My0xYmU1MzYzMGI3ZjkiOnsic2VsZWN0ZWRSYXRpbmciOjAsImZlZWRiYWNrTm90ZSI6IiJ9LCJ0ZW1wLWZlLTIwMzY0MDY1LTJhYjUtNGY0Ni04MTM0LWM5MDhkMTljM2QxNyI6eyJzZWxlY3RlZFJhdGluZyI6MCwiZmVlZGJhY2tOb3RlIjoiIn0sInRlbXAtZmUtMGRlMzg4MDgtMmQ5OS00ZDVlLTgzNjktYmNlNThlZTQ3OWE5Ijp7InNlbGVjdGVkUmF0aW5nIjowLCJmZWVkYmFja05vdGUiOiIifSwidGVtcC1mZS01ZTk0NmQ5Ny04MDBhLTQ0NzAtOTRlMC0zMTJlZjFhMzNiYjQiOnsic2VsZWN0ZWRSYXRpbmciOjAsImZlZWRiYWNrTm90ZSI6IiJ9LCJ0ZW1wLWZlLWQwYzQxYzkzLTQ0MjYtNDk3MS1hZGUyLTkzNzk1YTBkMWRiMSI6eyJzZWxlY3RlZFJhdGluZyI6MCwiZmVlZGJhY2tOb3RlIjoiIn0sInRlbXAtZmUtNWZkNTMzN2MtOTg0Mi00ZDM1LTk2ZWItNWE3ZGFmMGM0YjQ2Ijp7InNlbGVjdGVkUmF0aW5nIjowLCJmZWVkYmFja05vdGUiOiIifSwidGVtcC1mZS1hOGVlYjQ5NC0zMzMxLTRiZTUtYmZjOC0zY2U1ZGViNmZlMjUiOnsic2VsZWN0ZWRSYXRpbmciOjAsImZlZWRiYWNrTm90ZSI6IiJ9LCJ0ZW1wLWZlLWI1MWFmMWU5LWE1MjUtNDRlNy1hNzk5LTE5MTIxMTQ5YTllMCI6eyJzZWxlY3RlZFJhdGluZyI6MCwiZmVlZGJhY2tOb3RlIjoiIn19LCJ0b29sVXNlU3RhdGVzIjp7ImI2N2IxZDk4LWEwZTItNDE4ZS05ZjY5LWJmMzg4NTM4NzMyNjt0b29sdV92cnR4XzAxU0ZHdXVhc3V2aHpKamRQQUdjejdNbiI6eyJyZXF1ZXN0SWQiOiJiNjdiMWQ5OC1hMGUyLTQxOGUtOWY2OS1iZjM4ODUzODczMjYiLCJ0b29sVXNlSWQiOiJ0b29sdV92cnR4XzAxU0ZHdXVhc3V2aHpKamRQQUdjejdNbiIsInBoYXNlIjo1LCJyZXN1bHQiOnsidGV4dCI6IlRoZSBmb2xsb3dpbmcgY29kZSBzZWN0aW9ucyB3ZXJlIHJldHJpZXZlZDpcblBhdGg6IGludGVybmFsL2Rhby92YWx1ZUFkZEJ1bmRsZURhby5nb1xucGFja2FnZSBkYW9cblxuaW1wb3J0IChcblx0XCJtaWNyby1idW5kbGUvaW50ZXJuYWwvbW9kZWxcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wa2cvYXBwXCJcbilcblxuLy8g5aKe5YC85aWX6aSQ5Yib5bu6XG5mdW5jIENyZWF0ZVZhbHVlQWRkQnVuZGxlKHJlcSAqbW9kZWwuVmFsdWVBZGRCdW5kbGVQcm9maWxlKSAoZXJyIGVycm9yKSB7XG5cdGVyciA9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5WYWx1ZUFkZEJ1bmRsZVByb2ZpbGV7fSkuQ3JlYXRlKCZyZXEpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVyblxuXHR9XG5cblx0cmV0dXJuXG59XG5cbi8vIOWinuWAvOWll+mkkOWIl+ihqFxuZnVuYyBWYWx1ZUFkZEJ1bmRsZUxpc3QocHJpY2VUeXBlIGludDMyKSAodmFsdWVBZGRCdW5kbGVQcm9maWxlIFtdKm1vZGVsLlZhbHVlQWRkQnVuZGxlUHJvZmlsZSwgZXJyIGVycm9yKSB7XG5cdGVyciA9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLldoZXJlKFwicHJpY2VfdHlwZSA9ID9cIiwgcHJpY2VUeXBlKS5PcmRlcihcIm51bSBBU0NcIikuRmluZCgmdmFsdWVBZGRCdW5kbGVQcm9maWxlKS5FcnJvclxuXHRpZiBlcnIgIT0gbmlsIHtcblx0XHRyZXR1cm5cblx0fVxuXHRyZXR1cm5cbn1cblxuLy8g5aKe5YC85aWX6aSQ6K+m5oOFXG5mdW5jIFZhbHVlQWRkQnVuZGxlRGV0YWlsKHV1aWQgc3RyaW5nKSAodmFsdWVBZGRCdW5kbGVQcm9maWxlICptb2RlbC5WYWx1ZUFkZEJ1bmRsZVByb2ZpbGUsIGVyciBlcnJvcikge1xuXG5cdGVyciA9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLldoZXJlKFwidXVpZCA9ID9cIiwgdXVpZCkuRmlyc3QoJnZhbHVlQWRkQnVuZGxlUHJvZmlsZSkuRXJyb3Jcblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuXG5cdH1cblxuXHRyZXR1cm5cbn1cblxuZnVuYyBCdW5kbGVQcm9maWxlRGV0YWlsKHV1aWQgc3RyaW5nKSAoYnVuZGxlUHJvZmlsZSAqbW9kZWwuQnVuZGxlUHJvZmlsZSwgZXJyIGVycm9yKSB7XG5cdGVyciA9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLldoZXJlKFwidXVpZCA9ID9cIiwgdXVpZCkuRmlyc3QoJmJ1bmRsZVByb2ZpbGUpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVyblxuXHR9XG5cblx0cmV0dXJuXG59XG5cbmZ1bmMgQnVuZGxlT3JkZXJSZWNvcmRzRGV0YWlsQnlBZGRVaWQodXVpZCBzdHJpbmcpIChidW5kbGVPcmRlclJlY29yZHMgKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgZXJyIGVycm9yKSB7XG5cblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuV2hlcmUoXCJ2YWx1ZV9hZGRfYnVuZGxlX3V1aWQgPSA/XCIsIHV1aWQpLkZpcnN0KCZidW5kbGVPcmRlclJlY29yZHMpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVyblxuXHR9XG5cblx0cmV0dXJuXG59XG5cbmZ1bmMgR2V0QnVuZGxlT3JkZXJSZWNvcmRzQnlVc2VySWRBbmRCdW5kbGVVdWlkKHVzZXJJZCBpbnQzMiwgdXVpZCBzdHJpbmcpIChidW5kbGVPcmRlclJlY29yZHMgKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgZXJyIGVycm9yKSB7XG5cblx0ZXJyID0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID8gQU5EIGJ1bmRsZV91dWlkID0gP1wiLCB1c2VySWQsIHV1aWQpLkZpcnN0KCZidW5kbGVPcmRlclJlY29yZHMpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVyblxuXHR9XG5cblx0cmV0dXJuXG59XG5cbmZ1bmMgR2V0QnVuZGxlT3JkZXJSZWNvcmRzQnlDb21tb25VaWRBbmRVc2VySWQoY29tbW9uVWlkIHN0cmluZywgdXNlcklkIGludDMyKSAoYnVuZGxlT3JkZXJSZWNvcmRzICptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIGVyciBlcnJvcikge1xuXG5cdGVyciA9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLldoZXJlKFwiYnVuZGxlX2NvbW1vbl91aWQgPSA/IEFORCBjdXN0b21lcl9pZCA9ID9cIiwgY29tbW9uVWlkLCB1c2VySWQpLkZpcnN0KCZidW5kbGVPcmRlclJlY29yZHMpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJldHVyblxuXHR9XG5cblx0cmV0dXJuXG59XG4uLi5cblBhdGg6IGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ29cbnBhY2thZ2UgZGFvXG5cbmltcG9ydCAoXG5cdFwibWljcm8tYnVuZGxlL2ludGVybmFsL21vZGVsXCJcblx0XCJtaWNyby1idW5kbGUvcGIvYnVuZGxlXCJcblx0XCJtaWNyby1idW5kbGUvcGtnL2FwcFwiXG5cdGNvbW1vbkVyciBcIm1pY3JvLWJ1bmRsZS9wa2cvZXJyXCJcblx0XCJtaWNyby1idW5kbGUvcGtnL21zZ1wiXG5cdFwibWljcm8tYnVuZGxlL3BrZy91dGlsc1wiXG4pXG5cbmZ1bmMgQ3JlYXRlT3JkZXJSZWNvcmQob3JkZXJSZWNvcmQgKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcykgKHJlcyAqYnVuZGxlLkNvbW1vblJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5Db21tb25SZXNwb25zZSlcblx0b3JkZXJSZWNvcmQuVVVJRCA9IGFwcC5Nb2R1bGVDbGllbnRzLlNmTm9kZS5HZW5lcmF0ZSgpLkJhc2U2NCgpXG5cdG9yZGVyUmVjb3JkLk9yZGVyTm8gPSB1dGlscy5HZXRPcmRlck5vKClcblxuXHQvLyDlvIDlkK/kuovliqFcblx0dHggOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuQmVnaW4oKVxuXHRkZWZlciBmdW5jKCkge1xuXHRcdGlmIHIgOj0gcmVjb3ZlcigpOyByICE9IG5pbCB7XG5cdFx0XHR0eC5Sb2xsYmFjaygpXG5cdFx0fVxuXHR9KClcblxuXHQvLyDliJvlu7rkuLvorqLljZVcblx0aWYgZXJyID0gdHguTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KS5DcmVhdGUoJm9yZGVyUmVjb3JkKS5FcnJvcjsgZXJyICE9IG5pbCB7XG5cdFx0dHguUm9sbGJhY2soKVxuXHRcdHJlcy5Nc2cgPSBtc2cuRXJyb3JDcmVhdGVPcmRlckluZm9cblx0XHRyZXR1cm4gcmVzLCBjb21tb25FcnIuUmV0dXJuRXJyb3IoZXJyLCBtc2cuRXJyb3JDcmVhdGVPcmRlckluZm8sIFwi5Yib5bu66K6i5Y2V5L+h5oGv5aSx6LSlOiBcIilcblx0fVxuXG5cdC8vIOaPkOS6pOS6i+WKoVxuXHRpZiBlcnIgPSB0eC5Db21taXQoKS5FcnJvcjsgZXJyICE9IG5pbCB7XG5cdFx0cmVzLk1zZyA9IG1zZy5FcnJvckNvbW1pdFRyYW5zYWN0aW9uXG5cdFx0cmV0dXJuIHJlcywgY29tbW9uRXJyLlJldHVybkVycm9yKGVyciwgbXNnLkVycm9yQ29tbWl0VHJhbnNhY3Rpb24sIFwi5o+Q5Lqk5LqL5Yqh5aSx6LSlOiBcIilcblx0fVxuXG5cdHJlcy5VdWlkID0gb3JkZXJSZWNvcmQuVVVJRFxuXHRyZXMuT3JkZXJObyA9IG9yZGVyUmVjb3JkLk9yZGVyTm9cblx0cmVzLk1zZyA9IG1zZy5TdWNjZXNzQ3JlYXRlT3JkZXJJbmZvXG5cdHJldHVyblxufVxuXG5mdW5jIFVwZGF0ZU9yZGVyUmVjb3JkKG9yZGVyUmVjb3JkICptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMpIChyZXMgKmJ1bmRsZS5Db21tb25SZXNwb25zZSwgZXJyIGVycm9yKSB7XG5cdHJlcyA9IG5ldyhidW5kbGUuQ29tbW9uUmVzcG9uc2UpXG5cdGVyciA9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSkuV2hlcmUoXCJ1dWlkID0gP1wiLCBvcmRlclJlY29yZC5VVUlEKS5VcGRhdGVzKG9yZGVyUmVjb3JkKS5FcnJvclxuXHRpZiBlcnIgIT0gbmlsIHtcblx0XHRyZXMuTXNnID0gbXNnLkVycm9yVXBkYXRlT3JkZXJJbmZvXG5cdFx0cmV0dXJuIHJlcywgY29tbW9uRXJyLlJldHVybkVycm9yKGVyciwgbXNnLkVycm9yVXBkYXRlT3JkZXJJbmZvLCBcIuabtOaWsOiuouWNleS/oeaBr+Wksei0pTogXCIpXG5cdH1cblx0cmVzLlV1aWQgPSBvcmRlclJlY29yZC5VVUlEXG5cdHJlcy5Nc2cgPSBtc2cuU3VjY2Vzc1VwZGF0ZU9yZGVySW5mb1xuXHRyZXR1cm5cbn1cblxuZnVuYyBVcGRhdGVPcmRlclJlY29yZEJ5T3JkZXJOTyhvcmRlclJlY29yZCAqbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzKSAocmVzICpidW5kbGUuQ29tbW9uUmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLkNvbW1vblJlc3BvbnNlKVxuXHRlcnIgPSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pLldoZXJlKFwib3JkZXJfbm8gPSA/XCIsIG9yZGVyUmVjb3JkLk9yZGVyTm8pLlVwZGF0ZXMob3JkZXJSZWNvcmQpLkVycm9yXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJlcy5Nc2cgPSBtc2cuRXJyb3JVcGRhdGVPcmRlckluZm9cblx0XHRyZXR1cm4gcmVzLCBjb21tb25FcnIuUmV0dXJuRXJyb3IoZXJyLCBtc2cuRXJyb3JVcGRhdGVPcmRlckluZm8sIFwi5pu05paw6K6i5Y2V5L+h5oGv5aSx6LSlOiBcIilcblx0fVxuXHRyZXMuVXVpZCA9IG9yZGVyUmVjb3JkLlVVSURcblx0cmVzLk1zZyA9IG1zZy5TdWNjZXNzVXBkYXRlT3JkZXJJbmZvXG5cdHJldHVyblxufVxuXG5mdW5jIE9yZGVyUmVjb3Jkc0xpc3QocmVxICpidW5kbGUuT3JkZXJSZWNvcmRzUmVxdWVzdCkgKHJlcyAqYnVuZGxlLk9yZGVyUmVjb3Jkc1Jlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5PcmRlclJlY29yZHNSZXNwb25zZSlcblx0cmVzLk9yZGVyUmVjb3JkcyA9IG1ha2UoW10qYnVuZGxlLk9yZGVyUmVjb3JkLCAwKVxuXHRyZWNvcmRzIDo9IG1ha2UoW10qbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCAwKVxuXG5cdHF1ZXJ5IDo9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSlcblxuXHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBtaWNyb19hY2NvdW50LnVzZXIgb24gbWljcm9fYWNjb3VudC51c2VyLmlkID0gYnVuZGxlX29yZGVyX3JlY29yZHMuY3VzdG9tZXJfaWRcIilcblxuXHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfaWQgPSA/XCIsIHJlcS5DdXN0b21lcklEKVxuXHR9XG5cblx0aWYgcmVxLkN1c3RvbWVyTnVtICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9udW0gbGlrZSA/XCIsIFwiJVwiK3JlcS5DdXN0b21lck51bStcIiVcIilcblx0fVxuXG5cdGlmIHJlcS5DdXN0b21lck5hbWUgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX25hbWUgbGlrZSA/XCIsIFwiJVwiK3JlcS5DdXN0b21lck5hbWUrXCIlXCIpXG5cdH1cblxuXHRpZiByZXEuQnVuZGxlTmFtZSAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYnVuZGxlX25hbWUgbGlrZSA/XCIsIFwiJVwiK3JlcS5CdW5kbGVOYW1lK1wiJVwiKVxuXHR9XG5cblx0aWYgcmVxLkJ1bmRsZVVVSUQgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImJ1bmRsZV91dWlkID0gP1wiLCByZXEuQnVuZGxlVVVJRClcblx0fVxuXG5cdGlmIHJlcS5PcmRlck5vICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJvcmRlcl9ubyBsaWtlID9cIiwgXCIlXCIrcmVxLk9yZGVyTm8rXCIlXCIpXG5cdH1cblxuXHRpZiByZXEuU3RhdHVzICE9IDAge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJzdGF0dXMgPSA/XCIsIHJlcS5TdGF0dXMpXG5cdH1cblxuXHRpZiByZXEuU3RhcnRTaWduZWRUaW1lICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJzaWduZWRfdGltZSA+PSA/XCIsIHJlcS5TdGFydFNpZ25lZFRpbWUpXG5cdH1cblxuXHRpZiByZXEuRW5kU2lnbmVkVGltZSAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwic2lnbmVkX3RpbWUgPD0gP1wiLCByZXEuRW5kU2lnbmVkVGltZSlcblx0fVxuXG5cdGlmIHJlcS5TdGFydFBheVRpbWUgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcInBheV90aW1lID49ID9cIiwgcmVxLlN0YXJ0UGF5VGltZSlcblx0fVxuXG5cdGlmIHJlcS5FbmRQYXlUaW1lICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJwYXlfdGltZSA8PSA/XCIsIHJlcS5FbmRQYXlUaW1lKVxuXHR9XG5cblx0aWYgcmVxLklzSGF2ZVZhbHVlQWRkID09IDEgeyAvLyDmnIlcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwidmFsdWVfYWRkX2J1bmRsZV91dWlkICE9ID9cIiwgXCJcIilcblx0fSBlbHNlIGlmIHJlcS5Jc0hhdmVWYWx1ZUFkZCA9PSAyIHsgLy8g5pegXG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIklGTlVMTCh2YWx1ZV9hZGRfYnVuZGxlX3V1aWQsJycpID0gJydcIilcblx0fVxuXG5cdGlmIHJlcS5GaW5hbmNpYWxDb25maXJtYXRpb24gIT0gMCB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImZpbmFuY2lhbF9jb25maXJtYXRpb24gPSA/XCIsIHJlcS5GaW5hbmNpYWxDb25maXJtYXRpb24pXG5cdH1cblxuXHRpZiByZXEuVGVsTnVtICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJtaWNyb19hY2NvdW50LnVzZXIudGVsX251bSBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcblx0fVxuXG5cdGNvdW50IDo9ICpxdWVyeVxuXG5cdGlmIHJlcS5QYWdlU2l6ZSAhPSAwICYmIHJlcS5QYWdlICE9IDAge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuTGltaXQoaW50KHJlcS5QYWdlU2l6ZSkpLk9mZnNldChpbnQocmVxLlBhZ2UtMSkgKiBpbnQocmVxLlBhZ2VTaXplKSlcblx0fVxuXG5cdGVyciA9IHF1ZXJ5LkZpbmQoJnJlY29yZHMpLkVycm9yXG5cblx0aWYgZXJyICE9IG5pbCB7XG5cdFx0cmV0dXJuIHJlcywgY29tbW9uRXJyLlJldHVybkVycm9yKGVyciwgbXNnLkVycm9yR2V0T3JkZXJMaXN0LCBcIuiOt+WPluiuouWNleS/oeaBr+Wksei0pTogXCIpXG5cdH1cblxuXHQvL18gPSBjb3BpZXIuQ29weVdpdGhPcHRpb24oJnJlcy5PcmRlclJlY29yZHMsIHJlY29yZHMsIGNvcGllci5PcHRpb257RGVlcENvcHk6IHRydWV9KVxuXG5cdGZvciBfLCByZWNvcmQgOj0gcmFuZ2UgcmVjb3JkcyB7XG5cdFx0cmVzLk9yZGVyUmVjb3JkcyA9IGFwcGVuZChyZXMuT3JkZXJSZWNvcmRzLCAmYnVuZGxlLk9yZGVyUmVjb3Jke1xuXHRcdFx0VXVpZDogICAgICAgICAgICAgICAgICByZWNvcmQuVVVJRCxcblx0XHRcdE9yZGVyTm86ICAgICAgICAgICAgICAgcmVjb3JkLk9yZGVyTm8sXG5cdFx0XHRCdW5kbGVVdWlkOiAgICAgICAgICAgIHJlY29yZC5CdW5kbGVVVUlELFxuXHRcdFx0QnVuZGxlTmFtZTogICAgICAgICAgICByZWNvcmQuQnVuZGxlTmFtZSxcblx0XHRcdEN1c3RvbWVySUQ6ICAgICAgICAgICAgcmVjb3JkLkN1c3RvbWVySUQsXG5cdFx0XHRDdXN0b21lck51bTogICAgICAgICAgIHJlY29yZC5DdXN0b21lck51bSxcblx0XHRcdEN1c3RvbWVyTmFtZTogICAgICAgICAgcmVjb3JkLkN1c3RvbWVyTmFtZSxcblx0XHRcdEFtb3VudDogICAgICAgICAgICAgICAgcmVjb3JkLkFtb3VudCxcblx0XHRcdEFtb3VudFR5cGU6ICAgICAgICAgICAgcmVjb3JkLkFtb3VudFR5cGUsXG5cdFx0XHRTaWduQ29udHJhY3Q6ICAgICAgICAgIHJlY29yZC5TaWduQ29udHJhY3QsXG5cdFx0XHRTaWduYXR1cmU6ICAgICAgICAgICAgIHJlY29yZC5TaWduYXR1cmUsXG5cdFx0XHRTaWduZWRUaW1lOiAgICAgICAgICAgIHJlY29yZC5TaWduZWRUaW1lLFxuXHRcdFx0UGF5VHlwZTogICAgICAgICAgICAgICByZWNvcmQuUGF5VHlwZSxcblx0XHRcdFBheVRpbWU6ICAgICAgICAgICAgICAgcmVjb3JkLlBheVRpbWUsXG5cdFx0XHRDaGVja291dFNlc3Npb25JZDogICAgIHJlY29yZC5DaGVja291dFNlc3Npb25JZCxcblx0XHRcdENoZWNrb3V0U2Vzc2lvblVybDogICAgcmVjb3JkLkNoZWNrb3V0U2Vzc2lvblVybCxcblx0XHRcdFN0YXR1czogICAgICAgICAgICAgICAgcmVjb3JkLlN0YXR1cyxcblx0XHRcdENvbnRyYWN0Tm86ICAgICAgICAgICAgcmVjb3JkLkNvbnRyYWN0Tm8sXG5cdFx0XHRWYWx1ZUFkZEJ1bmRsZVV1aWQ6ICAgIHJlY29yZC5WYWx1ZUFkZEJ1bmRsZVVVSUQsXG5cdFx0XHRWYWx1ZUFkZEJ1bmRsZUFtb3VudDogIHJlY29yZC5WYWx1ZUFkZEJ1bmRsZUFtb3VudCxcblx0XHRcdFZhbHVlQWRkT3JpZ2luYWxQcmljZTogcmVjb3JkLlZhbHVlQWRkT3JpZ2luYWxQcmljZSxcblx0XHRcdFZhbHVlQWRkRGlzY291bnRQcmljZTogcmVjb3JkLlZhbHVlQWRkRGlzY291bnRQcmljZSxcblx0XHRcdFZhbHVlQWRkU2F2ZWRBbW91bnQ6ICAgcmVjb3JkLlZhbHVlQWRkU2F2ZWRBbW91bnQsXG5cdFx0XHRUb3RhbEFtb3VudDogICAgICAgICAgIHJlY29yZC5Ub3RhbEFtb3VudCxcblx0XHRcdE51bTogICAgICAgICAgICAgICAgICAgcmVjb3JkLk51bSxcblx0XHRcdEJ1bmRsZUNvbW1vblVpZDogICAgICAgcmVjb3JkLkJ1bmRsZUNvbW1vblVpZCxcblx0XHRcdEFkZEJ1bmRsZUNvbW1vblVpZDogICAgcmVjb3JkLkFkZEJ1bmRsZUNvbW1vblVpZCxcblx0XHR9KVxuXHR9XG5cblx0dmFyIHRvdGFsIGludDY0XG5cblx0Y291bnQuQ291bnQoJnRvdGFsKVxuXG5cdHJlcy5Ub3RhbCA9IGludDMyKHRvdGFsKVxuXG5cdHJldHVyblxufVxuXG5mdW5jIE9yZGVyUmVjb3JkRGV0YWlsKHJlcSAqYnVuZGxlLk9yZGVyUmVjb3Jkc0RldGFpbFJlcXVlc3QpIChyZXMgKmJ1bmRsZS5PcmRlclJlY29yZCwgZXJyIGVycm9yKSB7XG5cdHJlcyA9IG5ldyhidW5kbGUuT3JkZXJSZWNvcmQpXG5cdG9yZGVyUmVjb3JkIDo9IG5ldyhtb2RlbC5CdW5kbGVPcmRlclJlY29yZHMpXG5cblx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuXG5cdGlmIHJlcS5VdWlkICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJ1dWlkID0gP1wiLCByZXEuVXVpZClcblx0fVxuXG5cdGlmIHJlcS5PcmRlck5vICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJvcmRlcl9ubyA9ID9cIiwgcmVxLk9yZGVyTm8pXG5cdH1cblxuXHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcblx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfaWQgPSA/XCIsIHJlcS5DdXN0b21lcklEKVxuXHR9XG5cblx0ZXJyID0gcXVlcnkuRmlyc3QoJm9yZGVyUmVjb3JkKS5FcnJvclxuXHRpZiBlcnIgIT0gbmlsIHtcblx0XHRyZXR1cm4gcmVzLCBjb21tb25FcnIuUmV0dXJuRXJyb3IoZXJyLCBtc2cuRXJyb3JHZXRPcmRlckluZm8sIFwi6I635Y+W6K6i5Y2V5L+h5oGv5aSx6LSlOiBcIilcblx0fVxuXHQvL18gPSBjb3BpZXIuQ29weVdpdGhPcHRpb24oJnJlcywgb3JkZXJSZWNvcmQsIGNvcGllci5PcHRpb257RGVlcENvcHk6IHRydWV9KVxuXG5cdHJlcyA9ICZidW5kbGUuT3JkZXJSZWNvcmR7XG5cdFx0VXVpZDogICAgICAgICAgICAgICAgIG9yZGVyUmVjb3JkLlVVSUQsXG5cdFx0T3JkZXJObzogICAgICAgICAgICAgIG9yZGVyUmVjb3JkLk9yZGVyTm8sXG5cdFx0QnVuZGxlVXVpZDogICAgICAgICAgIG9yZGVyUmVjb3JkLkJ1bmRsZVVVSUQsXG5cdFx0QnVuZGxlTmFtZTogICAgICAgICAgIG9yZGVyUmVjb3JkLkJ1bmRsZU5hbWUsXG5cdFx0Q3VzdG9tZXJJRDogICAgICAgICAgIG9yZGVyUmVjb3JkLkN1c3RvbWVySUQsXG5cdFx0Q3VzdG9tZXJOdW06ICAgICAgICAgIG9yZGVyUmVjb3JkLkN1c3RvbWVyTnVtLFxuXHRcdEN1c3RvbWVyTmFtZTogICAgICAgICBvcmRlclJlY29yZC5DdXN0b21lck5hbWUsXG5cdFx0QW1vdW50OiAgICAgICAgICAgICAgIG9yZGVyUmVjb3JkLkFtb3VudCxcblx0XHRBbW91bnRUeXBlOiAgICAgICAgICAgb3JkZXJSZWNvcmQuQW1vdW50VHlwZSxcblx0XHRTaWduQ29udHJhY3Q6ICAgICAgICAgb3JkZXJSZWNvcmQuU2lnbkNvbnRyYWN0LFxuXHRcdFNpZ25hdHVyZTogICAgICAgICAgICBvcmRlclJlY29yZC5TaWduYXR1cmUsXG5cdFx0U2lnbmVkVGltZTogICAgICAgICAgIG9yZGVyUmVjb3JkLlNpZ25lZFRpbWUsXG5cdFx0UGF5VHlwZTogICAgICAgICAgICAgIG9yZGVyUmVjb3JkLlBheVR5cGUsXG5cdFx0UGF5VGltZTogICAgICAgICAgICAgIG9yZGVyUmVjb3JkLlBheVRpbWUsXG5cdFx0Q2hlY2tvdXRTZXNzaW9uSWQ6ICAgIG9yZGVyUmVjb3JkLkNoZWNrb3V0U2Vzc2lvbklkLFxuXHRcdENoZWNrb3V0U2Vzc2lvblVybDogICBvcmRlclJlY29yZC5DaGVja291dFNlc3Npb25VcmwsXG5cdFx0U3RhdHVzOiAgICAgICAgICAgICAgIG9yZGVyUmVjb3JkLlN0YXR1cyxcblx0XHRDb250cmFjdE5vOiAgICAgICAgICAgb3JkZXJSZWNvcmQuQ29udHJhY3RObyxcblx0XHRWYWx1ZUFkZEJ1bmRsZVV1aWQ6ICAgb3JkZXJSZWNvcmQuVmFsdWVBZGRCdW5kbGVVVUlELFxuXHRcdFZhbHVlQWRkQnVuZGxlQW1vdW50OiBvcmRlclJlY29yZC5WYWx1ZUFkZEJ1bmRsZUFtb3VudCxcblx0XHRUb3RhbEFtb3VudDogICAgICAgICAgb3JkZXJSZWNvcmQuVG90YWxBbW91bnQsXG5cdH1cblx0cmV0dXJuXG59XG4uLi5cblBhdGg6IGludGVybmFsL21vZGVsL2J1bmRsZV9vcmRlcl9yZWNvcmRzLmdvXG5wYWNrYWdlIG1vZGVsXG5cbmltcG9ydCBcImdvcm0uaW8vZ29ybVwiXG5cbi8vIEJ1bmRsZU9yZGVyUmVjb3JkcyBzdHJ1Y3RcbnR5cGUgQnVuZGxlT3JkZXJSZWNvcmRzIHN0cnVjdCB7XG5cdGdvcm0uTW9kZWxcblx0VVVJRCAgICAgICAgICAgICAgICAgIHN0cmluZyAgYGpzb246XCJ1dWlkXCIgZ29ybTpcImNvbHVtbjp1dWlkO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OlVVSURcImBcblx0T3JkZXJObyAgICAgICAgICAgICAgIHN0cmluZyAgYGpzb246XCJvcmRlck5vXCIgZ29ybTpcImNvbHVtbjpvcmRlcl9ubzt0eXBlOnZhcmNoYXIoMTAyNCk7Y29tbWVudDrkuqTmmJPnvJblj7dcImBcblx0QnVuZGxlVVVJRCAgICAgICAgICAgIHN0cmluZyAgYGpzb246XCJidW5kbGVVVUlEXCIgZ29ybTpcImNvbHVtbjpidW5kbGVfdXVpZDt0eXBlOnZhcmNoYXIoMTAyNCk7Y29tbWVudDrlpZfppJBVVUlEXCJgXG5cdEJ1bmRsZU5hbWUgICAgICAgICAgICBzdHJpbmcgIGBqc29uOlwiYnVuZGxlTmFtZVwiIGdvcm06XCJjb2x1bW46YnVuZGxlX25hbWU7dHlwZTp2YXJjaGFyKDIwNDgpO2NvbW1lbnQ65aWX6aSQ5ZCNXCJgXG5cdEN1c3RvbWVySUQgICAgICAgICAgICBzdHJpbmcgIGBqc29uOlwiY3VzdG9tZXJJRFwiIGdvcm06XCJjb2x1bW46Y3VzdG9tZXJfaWQ7dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ65a6i5oi3SURcImBcblx0Q3VzdG9tZXJOdW0gICAgICAgICAgIHN0cmluZyAgYGpzb246XCJjdXN0b21lck51bVwiIGdvcm06XCJjb2x1bW46Y3VzdG9tZXJfbnVtO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OuWuouaIt+e8luWPt1wiYFxuXHRDdXN0b21lck5hbWUgICAgICAgICAgc3RyaW5nICBganNvbjpcImN1c3RvbWVyTmFtZVwiIGdvcm06XCJjb2x1bW46Y3VzdG9tZXJfbmFtZTt0eXBlOnZhcmNoYXIoMTAyNCk7Y29tbWVudDrlrqLmiLflkI1cImBcblx0QW1vdW50ICAgICAgICAgICAgICAgIGZsb2F0MzIgYGpzb246XCJhbW91bnRcIiBnb3JtOlwiY29sdW1uOmFtb3VudDt0eXBlOmRlY2ltYWwoMTIsMik7Y29tbWVudDrlpZfppJDph5Hpop1cImBcblx0QW1vdW50VHlwZSAgICAgICAgICAgIGludDY0ICAgYGpzb246XCJhbW91bnRUeXBlXCIgZ29ybTpcImNvbHVtbjphbW91bnRfdHlwZTt0eXBlOmludDtjb21tZW50OumHkemineexu+Wei1wiYFxuXHRWYWx1ZUFkZEJ1bmRsZVVVSUQgICAgc3RyaW5nICBganNvbjpcInZhbHVlQWRkQnVuZGxlVVVJRFwiIGdvcm06XCJjb2x1bW46dmFsdWVfYWRkX2J1bmRsZV91dWlkO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50OuWinuWAvOWll+mkkOiusOW9lVVVSURcImBcblx0VmFsdWVBZGRCdW5kbGVBbW91bnQgIGZsb2F0MzIgYGpzb246XCJ2YWx1ZUFkZEJ1bmRsZUFtb3VudFwiIGdvcm06XCJjb2x1bW46dmFsdWVfYWRkX2J1bmRsZV9hbW91bnQ7dHlwZTpkZWNpbWFsKDEyLDIpO2NvbW1lbnQ65aKe5YC85aWX6aSQ6YeR6aKdXCJgXG5cdFZhbHVlQWRkT3JpZ2luYWxQcmljZSBmbG9hdDMyIGBqc29uOlwidmFsdWVBZGRPcmlnaW5hbFByaWNlXCIgZ29ybTpcImNvbHVtbjp2YWx1ZV9hZGRfb3JpZ2luYWxfcHJpY2U7dHlwZTpkZWNpbWFsKDEyLDIpO2NvbW1lbnQ65Y6f5Y2V5Lu3XCJgXG5cdFZhbHVlQWRkRGlzY291bnRQcmljZSBmbG9hdDMyIGBqc29uOlwidmFsdWVBZGREaXNjb3VudFByaWNlXCIgZ29ybTpcImNvbHVtbjp2YWx1ZV9hZGRfZGlzY291bnRfcHJpY2U7dHlwZTpkZWNpbWFsKDEyLDIpO2NvbW1lbnQ65LyY5oOg5Y2V5Lu3XCJgXG5cdFZhbHVlQWRkU2F2ZWRBbW91bnQgICBmbG9hdDMyIGBqc29uOlwidmFsdWVBZGRTYXZlZEFtb3VudFwiIGdvcm06XCJjb2x1bW46dmFsdWVfYWRkX3NhdmVkX2Ftb3VudDt0eXBlOmRlY2ltYWwoMTIsMik7Y29tbWVudDroioLnnIHph5Hpop1cImBcblx0VG90YWxBbW91bnQgICAgICAgICAgIGZsb2F0MzIgYGpzb246XCJ0b3RhbEFtb3VudFwiIGdvcm06XCJjb2x1bW46dG90YWxfYW1vdW50O3R5cGU6ZGVjaW1hbCgxMiwyKTtjb21tZW50OuaAu+mHkeminVwiYFxuXHROdW0gICAgICAgICAgICAgICAgICAgaW50MzIgICBganNvbjpcIm51bVwiIGdvcm06XCJjb2x1bW46bnVtO3R5cGU6aW50O2NvbW1lbnQ66KeG6aKR5pWw6YePXCJgXG5cdFNpZ25Db250cmFjdCAgICAgICAgICBzdHJpbmcgIGBqc29uOlwic2lnbkNvbnRyYWN0XCIgZ29ybTpcImNvbHVtbjpzaWduX2NvbnRyYWN0O3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50Ouetvue6puWQiOWQjFwiYFxuXHRTaWduYXR1cmUgICAgICAgICAgICAgc3RyaW5nICBganNvbjpcInNpZ25hdHVyZVwiIGdvcm06XCJjb2x1bW46c2lnbmF0dXJlO3R5cGU6dGV4dDtjb21tZW50OuetvuWtl1wiYFxuXHRTaWduZWRUaW1lICAgICAgICAgICAgc3RyaW5nICBganNvbjpcInNpZ25lZFRpbWVcIiBnb3JtOlwiY29sdW1uOnNpZ25lZF90aW1lO3R5cGU6dmFyY2hhcigxMDI0KTtjb21tZW50Ouetvue6puaXtumXtCjljJfkuqzml7bpl7QpXCJgXG5cdFBheVR5cGUgICAgICAgICAgICAgICBpbnQ2NCAgIGBqc29uOlwicGF5VHlwZVwiIGdvcm06XCJjb2x1bW46cGF5X3R5cGU7dHlwZTppbnQ7Y29tbWVudDrmlK/ku5jnsbvlnotcImBcblx0UGF5VGltZSAgICAgICAgICAgICAgIHN0cmluZyAgYGpzb246XCJwYXlUaW1lXCIgZ29ybTpcImNvbHVtbjpwYXlfdGltZTt0eXBlOnZhcmNoYXIoMTAyNCk7Y29tbWVudDrmlK/ku5jml7bpl7Qo5YyX5Lqs5pe26Ze0KVwiYFxuXHRDaGVja291dFNlc3Npb25JZCAgICAgc3RyaW5nICBganNvbjpcImNoZWNrb3V0U2Vzc2lvbklkXCIgZ29ybTpcImNvbHVtbjpjaGVja291dF9zZXNzaW9uX2lkO3R5cGU6dmFyY2hhcigxMDI0KTtkZWZhdWx0Om51bGw7Y29tbWVudDpjaGVja291dFNlc3Npb25JZFwiYFxuXHRDaGVja291dFNlc3Npb25VcmwgICAgc3RyaW5nICBganNvbjpcImNoZWNrb3V0U2Vzc2lvblVybFwiIGdvcm06XCJjb2x1bW46Y2hlY2tvdXRfc2Vzc2lvbl91cmw7dHlwZTp2YXJjaGFyKDEwMjQpO2RlZmF1bHQ6bnVsbDtjb21tZW50OmNoZWNrb3V0U2Vzc2lvblVybFwiYFxuXHRTdGF0dXMgICAgICAgICAgICAgICAgaW50NjQgICBganNvbjpcInN0YXR1c1wiIGdvcm06XCJjb2x1bW46c3RhdHVzO3R5cGU6aW50O2NvbW1lbnQ654q25oCBIDE65bey562+5pyq5pSv5LuYIDI65bey562+5bey5pSv5LuYXCJgXG5cdENvbnRyYWN0Tm8gICAgICAgICAgICBzdHJpbmcgIGBqc29uOlwiY29udHJhY3ROb1wiIGdvcm06XCJjb2x1bW46Y29udHJhY3Rfbm87dHlwZTp2YXJjaGFyKDEwMjQpO2NvbW1lbnQ65ZCI5ZCM57yW5Y+3XCJgXG5cdEJ1bmRsZUNvbW1vblVpZCAgICAgICBzdHJpbmcgIGBqc29uOlwiYnVuZGxlQ29tbW9uVWlkXCIgZ29ybTpcImNvbHVtbjpidW5kbGVfY29tbW9uX3VpZDt0eXBlOnRleHQ7Y29tbWVudDrlpZfppJDlhazlhbFJRFwiYFxuXHRBZGRCdW5kbGVDb21tb25VaWQgICAgc3RyaW5nICBganNvbjpcImFkZEJ1bmRsZUNvbW1vblVpZFwiIGdvcm06XCJjb2x1bW46YWRkX2J1bmRsZV9jb21tb25fdWlkO3R5cGU6dGV4dDtjb21tZW50OumZhOWKoOWll+mkkOWFrOWFsUlEXCJgXG5cdEZpbmFuY2lhbENvbmZpcm1hdGlvbiBpbnQzMiAgIGBqc29uOlwiZmluYW5jaWFsQ29uZmlybWF0aW9uXCIgZ29ybTpcImNvbHVtbjpmaW5hbmNpYWxfY29uZmlybWF0aW9uO3R5cGU6aW50O2NvbW1lbnQ66LSi5Yqh56Gu6K6kIDE65pyq56Gu6K6kIDI65bey56Gu6K6kXCJgXG59XG5cbi8vIOi0ouWKoeehruiupOeKtuaAgVxuY29uc3QgKFxuXHRDb25maXJtYXRpb25Ob3RDb25maXJtZWQgPSAxXG5cdENvbmZpcm1hdGlvbkNvbmZpcm1lZCAgICA9IDJcbilcbi4uLlxuUGF0aDogaW50ZXJuYWwvbG9naWMvb3JkZXJSZWNvcmRzTG9naWMuZ29cbnBhY2thZ2UgbG9naWNcblxuaW1wb3J0IChcblx0XCJtaWNyby1idW5kbGUvaW50ZXJuYWwvZGFvXCJcblx0XCJtaWNyby1idW5kbGUvaW50ZXJuYWwvbW9kZWxcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wYi9idW5kbGVcIlxuXHRcIm1pY3JvLWJ1bmRsZS9wa2cvYXBwXCJcblx0XCJtaWNyby1idW5kbGUvcGtnL3V0aWxzXCJcblxuXHRcImdpdGh1Yi5jb20vamluemh1L2NvcGllclwiXG4pXG5cbmZ1bmMgQ3JlYXRlT3JkZXJSZWNvcmQocmVxICpidW5kbGUuT3JkZXJSZWNvcmQpIChyZXMgKmJ1bmRsZS5Db21tb25SZXNwb25zZSwgZXJyIGVycm9yKSB7XG5cdHJlcyA9IG5ldyhidW5kbGUuQ29tbW9uUmVzcG9uc2UpXG5cdG9yZGVyUmVjb3JkIDo9IG5ldyhtb2RlbC5CdW5kbGVPcmRlclJlY29yZHMpXG5cdF8gPSBjb3BpZXIuQ29weVdpdGhPcHRpb24oJm9yZGVyUmVjb3JkLCByZXEsIGNvcGllci5PcHRpb257RGVlcENvcHk6IHRydWV9KVxuXHRvcmRlclJlY29yZC5VVUlEID0gYXBwLk1vZHVsZUNsaWVudHMuU2ZOb2RlLkdlbmVyYXRlKCkuQmFzZTY0KClcblx0b3JkZXJSZWNvcmQuT3JkZXJObyA9IHV0aWxzLkdldE9yZGVyTm8oKVxuXHRvcmRlclJlY29yZC5CdW5kbGVVVUlEID0gcmVxLkJ1bmRsZVV1aWRcblx0b3JkZXJSZWNvcmQuVmFsdWVBZGRCdW5kbGVVVUlEID0gcmVxLlZhbHVlQWRkQnVuZGxlVXVpZFxuXHRvcmRlclJlY29yZC5GaW5hbmNpYWxDb25maXJtYXRpb24gPSBtb2RlbC5Db25maXJtYXRpb25Ob3RDb25maXJtZWRcblxuXHRyZXMsIGVyciA9IGRhby5DcmVhdGVPcmRlclJlY29yZChvcmRlclJlY29yZClcblx0cmV0dXJuXG59XG5cbmZ1bmMgVXBkYXRlT3JkZXJSZWNvcmQocmVxICpidW5kbGUuT3JkZXJSZWNvcmQpIChyZXMgKmJ1bmRsZS5Db21tb25SZXNwb25zZSwgZXJyIGVycm9yKSB7XG5cdHJlcyA9IG5ldyhidW5kbGUuQ29tbW9uUmVzcG9uc2UpXG5cdG9yZGVyUmVjb3JkIDo9IG5ldyhtb2RlbC5CdW5kbGVPcmRlclJlY29yZHMpXG5cdF8gPSBjb3BpZXIuQ29weVdpdGhPcHRpb24oJm9yZGVyUmVjb3JkLCByZXEsIGNvcGllci5PcHRpb257RGVlcENvcHk6IHRydWV9KVxuXHRvcmRlclJlY29yZC5VVUlEID0gcmVxLlV1aWRcblx0b3JkZXJSZWNvcmQuQnVuZGxlVVVJRCA9IHJlcS5CdW5kbGVVdWlkXG5cdHJlcywgZXJyID0gZGFvLlVwZGF0ZU9yZGVyUmVjb3JkKG9yZGVyUmVjb3JkKVxuXHRyZXR1cm5cbn1cblxuZnVuYyBVcGRhdGVPcmRlclJlY29yZEJ5T3JkZXJObyhyZXEgKmJ1bmRsZS5PcmRlclJlY29yZCkgKHJlcyAqYnVuZGxlLkNvbW1vblJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5Db21tb25SZXNwb25zZSlcblx0b3JkZXJSZWNvcmQgOj0gbmV3KG1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkcylcblx0XyA9IGNvcGllci5Db3B5V2l0aE9wdGlvbigmb3JkZXJSZWNvcmQsIHJlcSwgY29waWVyLk9wdGlvbntEZWVwQ29weTogdHJ1ZX0pXG5cdG9yZGVyUmVjb3JkLlVVSUQgPSByZXEuVXVpZFxuXHRvcmRlclJlY29yZC5CdW5kbGVVVUlEID0gcmVxLkJ1bmRsZVV1aWRcblx0cmVzLCBlcnIgPSBkYW8uVXBkYXRlT3JkZXJSZWNvcmRCeU9yZGVyTk8ob3JkZXJSZWNvcmQpXG5cdHJldHVyblxufVxuXG5mdW5jIE9yZGVyUmVjb3Jkc0xpc3QocmVxICpidW5kbGUuT3JkZXJSZWNvcmRzUmVxdWVzdCkgKHJlcyAqYnVuZGxlLk9yZGVyUmVjb3Jkc1Jlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5PcmRlclJlY29yZHNSZXNwb25zZSlcblx0cmVzLCBlcnIgPSBkYW8uT3JkZXJSZWNvcmRzTGlzdChyZXEpXG5cdHJldHVyblxufVxuXG5mdW5jIE9yZGVyUmVjb3Jkc0RldGFpbChyZXEgKmJ1bmRsZS5PcmRlclJlY29yZHNEZXRhaWxSZXF1ZXN0KSAocmVzICpidW5kbGUuT3JkZXJSZWNvcmRzRGV0YWlsUmVzcG9uc2UsIGVyciBlcnJvcikge1xuXHRyZXMgPSBuZXcoYnVuZGxlLk9yZGVyUmVjb3Jkc0RldGFpbFJlc3BvbnNlKVxuXHRyZXMuT3JkZXJSZWNvcmQgPSBuZXcoYnVuZGxlLk9yZGVyUmVjb3JkKVxuXHRyZXMuT3JkZXJSZWNvcmQsIGVyciA9IGRhby5PcmRlclJlY29yZERldGFpbChyZXEpXG5cdGlmIGVyciAhPSBuaWwge1xuXHRcdHJlcy5Nc2cgPSBlcnIuRXJyb3IoKVxuXHR9XG5cdHJldHVyblxufVxuLi4uXG5QYXRoOiBwYi9idW5kbGUucHJvdG9cbi4uLlxuXG5tZXNzYWdlIE9yZGVyUmVjb3JkIHtcbiAgc3RyaW5nIHV1aWQgPSAxIFtqc29uX25hbWUgPSBcInV1aWRcIl07XG4gIHN0cmluZyBidW5kbGVVdWlkID0gMiBbanNvbl9uYW1lID0gXCJidW5kbGVVdWlkXCJdO1xuICBzdHJpbmcgY3VzdG9tZXJJRCA9IDMgW2pzb25fbmFtZSA9IFwiY3VzdG9tZXJJRFwiXTtcbiAgc3RyaW5nIGN1c3RvbWVyTnVtID0gNCBbanNvbl9uYW1lID0gXCJjdXN0b21lck51bVwiXTtcbiAgc3RyaW5nIGN1c3RvbWVyTmFtZSA9IDUgW2pzb25fbmFtZSA9IFwiY3VzdG9tZXJOYW1lXCJdO1xuICBmbG9hdCAgYW1vdW50ID0gNiBbanNvbl9uYW1lID0gXCJhbW91bnRcIl07XG4gIGludDY0ICBhbW91bnRUeXBlID0gNyBbanNvbl9uYW1lID0gXCJhbW91bnRUeXBlXCJdO1xuICBzdHJpbmcgc2lnbkNvbnRyYWN0ID0gOCBbanNvbl9uYW1lID0gXCJzaWduQ29udHJhY3RcIl07XG4gIHN0cmluZyBzaWduYXR1cmUgPSA5IFtqc29uX25hbWUgPSBcInNpZ25hdHVyZVwiXTtcbiAgc3RyaW5nIHNpZ25lZFRpbWUgPSAxMCBbanNvbl9uYW1lID0gXCJzaWduZWRUaW1lXCJdO1xuICBpbnQ2NCBwYXlUeXBlID0gMTEgW2pzb25fbmFtZSA9IFwicGF5VHlwZVwiXTtcbiAgc3RyaW5nIHBheVRpbWUgPSAxMiBbanNvbl9uYW1lID0gXCJwYXlUaW1lXCJdO1xuICBzdHJpbmcgY2hlY2tvdXRTZXNzaW9uSWQgPSAxMyBbanNvbl9uYW1lID0gXCJjaGVja291dFNlc3Npb25JZFwiXTtcbiAgc3RyaW5nIGNoZWNrb3V0U2Vzc2lvblVybCA9IDE0IFtqc29uX25hbWUgPSBcImNoZWNrb3V0U2Vzc2lvblVybFwiXTtcbi4uLlxuXG5tZXNzYWdlIE9yZGVyUmVjb3Jkc1JlcXVlc3Qge1xuICBpbnQzMiBwYWdlID0gMSBbanNvbl9uYW1lID0gXCJwYWdlXCJdO1xuICBpbnQzMiBwYWdlU2l6ZSA9IDIgW2pzb25fbmFtZSA9IFwicGFnZVNpemVcIl07XG4gIHN0cmluZyBjdXN0b21lck51bSA9IDMgW2pzb25fbmFtZSA9IFwiY3VzdG9tZXJOdW1cIl07XG4gIHN0cmluZyBjdXN0b21lck5hbWUgPSA0IFtqc29uX25hbWUgPSBcImN1c3RvbWVyTmFtZVwiXTtcbiAgc3RyaW5nIGJ1bmRsZVVVSUQgPSA1IFtqc29uX25hbWUgPSBcImJ1bmRsZVVVSURcIl07XG4gIHN0cmluZyBvcmRlck5vID0gNiBbanNvbl9uYW1lID0gXCJvcmRlck5vXCJdO1xuICBpbnQ2NCAgc3RhdHVzID0gNyBbanNvbl9uYW1lID0gXCJzdGF0dXNcIl07XG4gIHN0cmluZyBidW5kbGVOYW1lID0gOCBbanNvbl9uYW1lID0gXCJidW5kbGVOYW1lXCJdO1xuICBzdHJpbmcgc3RhcnRTaWduZWRUaW1lID0gOSBbanNvbl9uYW1lID0gXCJzdGFydFNpZ25lZFRpbWVcIl07XG4gIHN0cmluZyBlbmRTaWduZWRUaW1lID0gMTAgW2pzb25fbmFtZSA9IFwiZW5kU2lnbmVkVGltZVwiXTtcbiAgc3RyaW5nIHN0YXJ0UGF5VGltZSA9IDExIFtqc29uX25hbWUgPSBcInN0YXJ0UGF5VGltZVwiXTtcbiAgc3RyaW5nIGVuZFBheVRpbWUgPSAxMiBbanNvbl9uYW1lID0gXCJlbmRQYXlUaW1lXCJdO1xuICBzdHJpbmcgY3VzdG9tZXJJRCA9IDEzIFtqc29uX25hbWUgPSBcImN1c3RvbWVySURcIl07XG4gIGludDY0IGlzSGF2ZVZhbHVlQWRkID0gMTQgW2pzb25fbmFtZSA9IFwiaXNIYXZlVmFsdWVBZGRcIl07Ly/mnInml6Dlop7lgLzpgInpoblcbn1cblxubWVzc2FnZSBPcmRlclJlY29yZHNSZXNwb25zZSB7XG4gIHJlcGVhdGVkIE9yZGVyUmVjb3JkIG9yZGVyUmVjb3JkcyA9IDEgW2pzb25fbmFtZSA9IFwib3JkZXJSZWNvcmRzXCJdO1xuICBpbnQzMiB0b3RhbCA9IDIgW2pzb25fbmFtZSA9IFwidG90YWxcIl07XG59XG5cbm1lc3NhZ2UgT3JkZXJSZWNvcmRzRGV0YWlsUmVxdWVzdCB7XG4gIHN0cmluZyB1dWlkID0gMSBbanNvbl9uYW1lID0gXCJ1dWlkXCJdO1xuICBzdHJpbmcgb3JkZXJObyA9IDIgW2pzb25fbmFtZSA9IFwib3JkZXJOb1wiXTtcbiAgc3RyaW5nIGN1c3RvbWVySUQgPSAzIFtqc29uX25hbWUgPSBcImN1c3RvbWVySURcIl07XG59XG5cbm1lc3NhZ2UgT3JkZXJSZWNvcmRzRGV0YWlsUmVzcG9uc2Uge1xuICBPcmRlclJlY29yZCBvcmRlclJlY29yZCA9IDEgW2pzb25fbmFtZSA9IFwib3JkZXJSZWNvcmRcIl07XG4gIHN0cmluZyBtc2cgPSAyIFtqc29uX25hbWUgPSBcIm1zZ1wiXTtcbn1cbi4uLlxuUGF0aDogaW50ZXJuYWwvZGFvL2J1bmRsZURhby5nb1xuLi4uXG5cbmZ1bmMgQnVuZGxlTGlzdChyZXEgKmJ1bmRsZS5CdW5kbGVMaXN0UmVxdWVzdCkgKHJlcyAqYnVuZGxlLkJ1bmRsZUxpc3RSZXNwb25zZSwgZXJyIGVycm9yKSB7XG5cdHJlcyA9IG5ldyhidW5kbGUuQnVuZGxlTGlzdFJlc3BvbnNlKVxuXHRyZXMuQnVuZGxlcyA9IG1ha2UoW10qYnVuZGxlLkJ1bmRsZVByb2ZpbGUsIDApXG5cdGJ1bmRsZXMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVQcm9maWxlLCAwKVxuXG5cdHF1ZXJ5IDo9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVQcm9maWxle30pXG5cblx0aWYgcmVxLk5hbWUgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIm5hbWUgbGlrZSA/XCIsIFwiJVwiK3JlcS5OYW1lK1wiJVwiKVxuXHR9XG5cblx0aWYgcmVxLkNvbnRlbnQgIT0gXCJcIiB7XG5cdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImNvbnRlbnQgbGlrZSA/XCIsIFwiJVwiK3JlcS5Db250ZW50K1wiJVwiKVxuXHR9XG5cblx0aWYgcmVxLkxhbmd1YWdlICE9IFwiXCIge1xuXHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJsYW5ndWFnZSBsaWtlID9cIiwgcmVxLkxhbmd1YWdlKVxuXHR9XG5cblx0Y291bnQgOj0gKnF1ZXJ5XG5cblx0aWYgcmVxLlBhZ2VTaXplICE9IDAgJiYgcmVxLlBhZ2UgIT0gMCB7XG5cdFx0cXVlcnkgPSBxdWVyeS5MaW1pdChpbnQocmVxLlBhZ2VTaXplKSkuT2Zmc2V0KGludChyZXEuUGFnZS0xKSAqIGludChyZXEuUGFnZVNpemUpKVxuXHR9XG4uLi5cblxuXHQvLyBfID0gY29waWVyLkNvcHlXaXRoT3B0aW9uKCZyZXMuQnVuZGxlcywgYnVuZGxlcywgY29waWVyLk9wdGlvbntEZWVwQ29weTogdHJ1ZX0pXG5cblx0Ly8gZm10LlByaW50ZihcInJlcy5CdW5kbGVzICUrdlxcblwiLCByZXMuQnVuZGxlcylcblxuXHR2YXIgdG90YWwgaW50NjRcblxuXHRjb3VudC5Db3VudCgmdG90YWwpXG5cblx0cmVzLlRvdGFsID0gaW50MzIodG90YWwpXG5cblx0cmV0dXJuXG5cbn1cblxuZnVuYyBCdW5kbGVEZXRhaWwodXVpZCBzdHJpbmcpIChyZXMgKmJ1bmRsZS5CdW5kbGVQcm9maWxlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gbmV3KGJ1bmRsZS5CdW5kbGVQcm9maWxlKVxuXHRidW5kbGVQcm9maWxlIDo9IG5ldyhtb2RlbC5CdW5kbGVQcm9maWxlKVxuXHRlcnIgPSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5XaGVyZShcInV1aWQgPSA/XCIsIHV1aWQpLkZpcnN0KCZidW5kbGVQcm9maWxlKS5FcnJvclxuXHRpZiBlcnIgIT0gbmlsIHtcblx0XHRyZXR1cm4gcmVzLCBjb21tb25FcnIuUmV0dXJuRXJyb3IoZXJyLCBtc2cuRXJyb3JHZXRCdW5kbGVJbmZvLCBcIuiOt+WPluWll+mkkOS/oeaBr+Wksei0pTogXCIpXG5cdH1cbi4uLlxuUGF0aDogaW50ZXJuYWwvbG9naWMvdmFsdWVBZGRCdW5kbGVMb2dpYy5nb1xuLi4uXG5cbi8vIOWinuWAvOWll+mkkOWIl+ihqFxuZnVuYyBWYWx1ZUFkZEJ1bmRsZUxpc3QocmVxICpidW5kbGUuVmFsdWVBZGRCdW5kbGVMaXN0UmVxdWVzdCkgKHJlcyAqYnVuZGxlLlZhbHVlQWRkQnVuZGxlTGlzdFJlc3BvbnNlLCBlcnIgZXJyb3IpIHtcblx0cmVzID0gJmJ1bmRsZS5WYWx1ZUFkZEJ1bmRsZUxpc3RSZXNwb25zZXt9XG5cdHZhciBidW5kbGVDb21tb25VaWQgc3RyaW5nXG5cdHZhciBidW5kbGVQcm9maWxlICptb2RlbC5CdW5kbGVQcm9maWxlXG5cdGJ1bmRsZVByb2ZpbGUsIGVyciA9IGRhby5CdW5kbGVQcm9maWxlRGV0YWlsKHJlcS5CdW5kbGVVdWlkKVxuXHRpZiBlcnIgIT0gbmlsIHtcblx0XHRyZXR1cm5cblx0fSBlbHNlIHtcblx0XHR2YXIgYnVuZGxlT3JkZXJSZWNvcmQgKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc1xuXHRcdGJ1bmRsZU9yZGVyUmVjb3JkLCBlcnIgPSBkYW8uR2V0QnVuZGxlT3JkZXJSZWNvcmRzQnlDb21tb25VaWRBbmRVc2VySWQoYnVuZGxlUHJvZmlsZS5CdW5kbGVDb21tb25VaWQsIHJlcS5Vc2VySWQpXG5cdFx0aWYgZXJyICE9IG5pbCB7XG5cdFx0XHRlcnIgPSBuaWxcblx0XHR9IGVsc2Uge1xuXHRcdFx0YnVuZGxlQ29tbW9uVWlkID0gYnVuZGxlT3JkZXJSZWNvcmQuQnVuZGxlQ29tbW9uVWlkXG5cdFx0XHRyZXMuT3JkZXJObyA9IHRydWVcblx0XHRcdHJlcy5QcmljZSA9IGJ1bmRsZU9yZGVyUmVjb3JkLlZhbHVlQWRkQnVuZGxlQW1vdW50XG5cdFx0XHRyZXMuTnVtID0gYnVuZGxlT3JkZXJSZWNvcmQuTnVtXG5cblx0XHRcdGlmIGJ1bmRsZU9yZGVyUmVjb3JkLlZhbHVlQWRkQnVuZGxlVVVJRCAhPSBcIlwiIHtcblx0XHRcdFx0cmVzLlN0YXR1cyA9IHRydWVcblx0XHRcdH1cblx0XHR9XG5cdH1cbi4uLlxuXG5cdHJlcy5EYXRhID0gJmJ1bmRsZS5WYWx1ZUFkZEJ1bmRsZVByb2ZpbGV7XG5cdFx0VXVpZDogICAgICAgICAgICAgICAgdmFsdWVBZGRCdW5kbGVQcm9maWxlLlVVSUQsXG5cdFx0TnVtOiAgICAgICAgICAgICAgICAgdmFsdWVBZGRCdW5kbGVQcm9maWxlLk51bSxcblx0XHRPcmlnaW5hbFByaWNlOiAgICAgICB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuT3JpZ2luYWxQcmljZSxcblx0XHREaXNjb3VudFByaWNlOiAgICAgICB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuRGlzY291bnRQcmljZSxcblx0XHRUb3RhbFByaWNlOiAgICAgICAgICB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuVG90YWxQcmljZSxcblx0XHRTYXZlZEFtb3VudDogICAgICAgICB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuU2F2ZWRBbW91bnQsXG5cdFx0RGlzY291bnRQcmljZVN0YXR1czogdmFsdWVBZGRCdW5kbGVQcm9maWxlLkRpc2NvdW50UHJpY2VTdGF0dXMsXG5cdFx0Q2hvb3NlOiAgICAgICAgICAgICAgdmFsdWVBZGRCdW5kbGVQcm9maWxlLkNob29zZSxcblx0XHRBZGRCdW5kbGVDb21tb25VaWQ6ICB2YWx1ZUFkZEJ1bmRsZVByb2ZpbGUuQWRkQnVuZGxlQ29tbW9uVWlkLFxuXHR9XG5cblx0YnVuZGxlT3JkZXJSZWNvcmRzIDo9ICZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fVxuXHRidW5kbGVPcmRlclJlY29yZHMsIGVyciA9IGRhby5CdW5kbGVPcmRlclJlY29yZHNEZXRhaWxCeUFkZFVpZChyZXEuVXVpZClcblx0aWYgZXJyIC4uLiIsImlzRXJyb3IiOmZhbHNlLCJyZXF1ZXN0SWQiOiIifX0sImUzNWU3MjY2LTRiOTctNGEzYi1hNTQ2LWE3YWM5N2U1OGMwYjt0b29sdV92cnR4XzAxTlJHcHNUSlVWb05pNE5rYmZiOFBjcyI6eyJyZXF1ZXN0SWQiOiJlMzVlNzI2Ni00Yjk3LTRhM2ItYTU0Ni1hN2FjOTdlNThjMGIiLCJ0b29sVXNlSWQiOiJ0b29sdV92cnR4XzAxTlJHcHNUSlVWb05pNE5rYmZiOFBjcyIsInBoYXNlIjo1LCJyZXN1bHQiOnsidGV4dCI6IkhlcmUncyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgYGNhdCAtbmAgb24gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nbzpcbiAgICA3MFx0XHRyZXMuT3JkZXJSZWNvcmRzID0gbWFrZShbXSpidW5kbGUuT3JkZXJSZWNvcmQsIDApXG4gICAgNzFcdFx0cmVjb3JkcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgMClcbiAgICA3Mlx0XG4gICAgNzNcdFx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuICAgIDc0XHRcbiAgICA3NVx0XHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBtaWNyby1hY2NvdW50LnVzZXIgb24gbWljcm8tYWNjb3VudC51c2VyLmlkID0gYnVuZGxlX29yZGVyX3JlY29yZHMuY3VzdG9tZXJfaWRcIilcbiAgICA3Nlx0XG4gICAgNzdcdFx0aWYgcmVxLkN1c3RvbWVySUQgIT0gXCJcIiB7XG4gICAgNzhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfaWQgPSA/XCIsIHJlcS5DdXN0b21lcklEKVxuICAgIDc5XHRcdH1cbiAgICA4MFx0XG4gICAgODFcdFx0aWYgcmVxLkN1c3RvbWVyTnVtICE9IFwiXCIge1xuICAgIDgyXHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX251bSBsaWtlID9cIiwgXCIlXCIrcmVxLkN1c3RvbWVyTnVtK1wiJVwiKVxuICAgIDgzXHRcdH1cbiAgICA4NFx0XG4gICAgODVcdFx0aWYgcmVxLkN1c3RvbWVyTmFtZSAhPSBcIlwiIHtcbiAgICA4Nlx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9uYW1lIGxpa2UgP1wiLCBcIiVcIityZXEuQ3VzdG9tZXJOYW1lK1wiJVwiKVxuICAgIDg3XHRcdH1cbiAgICA4OFx0XG4gICAgODlcdFx0aWYgcmVxLkJ1bmRsZU5hbWUgIT0gXCJcIiB7XG4gICAgOTBcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiYnVuZGxlX25hbWUgbGlrZSA/XCIsIFwiJVwiK3JlcS5CdW5kbGVOYW1lK1wiJVwiKVxuVG90YWwgbGluZXMgaW4gZmlsZTogMjM5XG4iLCJpc0Vycm9yIjpmYWxzZSwicmVxdWVzdElkIjoiIn19LCIxNjQ1YWQwZS03MWMyLTRhZDMtOWEzNS1kYjFmNjIxMTM3ZTM7dG9vbHVfdnJ0eF8wMUdHMTJpNUwxZ1B0UU5jTERmdGZIWWciOnsicmVxdWVzdElkIjoiMTY0NWFkMGUtNzFjMi00YWQzLTlhMzUtZGIxZjYyMTEzN2UzIiwidG9vbFVzZUlkIjoidG9vbHVfdnJ0eF8wMUdHMTJpNUwxZ1B0UU5jTERmdGZIWWciLCJwaGFzZSI6NSwicmVzdWx0Ijp7InRleHQiOiJTdWNjZXNzZnVsbHkgZWRpdGVkIHRoZSBmaWxlIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ28uXG5SZXN1bHQgZm9yIHN0cl9yZXBsYWNlIGZvciBlbnRyeSB3aXRoIGluZGV4IFswXTpcblJlcGxhY2VtZW50IHN1Y2Nlc3NmdWwuXG5FZGl0ZWQgc2VjdGlvbiBhZnRlciBJREUgYXV0by1mb3JtYXR0aW5nIHdhcyBhcHBsaWVkOlxuICAgIDcxXHRcdHJlY29yZHMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIDApXG4gICAgNzJcdFxuICAgIDczXHRcdHF1ZXJ5IDo9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSlcbiAgICA3NFx0XG4gICAgNzVcdFx0cXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgICA3Nlx0XG4gICAgNzdcdFx0aWYgcmVxLkN1c3RvbWVySUQgIT0gXCJcIiB7XG4gICAgNzhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfaWQgPSA/XCIsIHJlcS5DdXN0b21lcklEKVxuICAgIDc5XHRcdH1cblxuUmV2aWV3IHRoZSBjaGFuZ2VzIGFuZCBtYWtlIHN1cmUgdGhleSBhcmUgYXMgZXhwZWN0ZWQgKGNvcnJlY3QgaW5kZW50YXRpb24sIG5vIGR1cGxpY2F0ZSBsaW5lcywgZXRjKS5cbkVkaXQgdGhlIGZpbGUgYWdhaW4gaWYgbmVjZXNzYXJ5LlxuIiwiaXNFcnJvciI6ZmFsc2UsInJlcXVlc3RJZCI6IiJ9fSwiMjcwYTEyMDMtZGFiMS00YWY1LTlmNWItMWM4YWY5YzVkZDEyO3Rvb2x1X3ZydHhfMDE4N0RMclZCb2d5VkNna2NRVjNLeG5EIjp7InJlcXVlc3RJZCI6IjI3MGExMjAzLWRhYjEtNGFmNS05ZjViLTFjOGFmOWM1ZGQxMiIsInRvb2xVc2VJZCI6InRvb2x1X3ZydHhfMDE4N0RMclZCb2d5VkNna2NRVjNLeG5EIiwicGhhc2UiOjUsInJlc3VsdCI6eyJ0ZXh0IjoiSGVyZSdzIHRoZSByZXN1bHQgb2YgcnVubmluZyBgY2F0IC1uYCBvbiBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvOlxuICAgMTIwXHRcbiAgIDEyMVx0XHRpZiByZXEuSXNIYXZlVmFsdWVBZGQgPT0gMSB7IC8vIOaciVxuICAgMTIyXHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcInZhbHVlX2FkZF9idW5kbGVfdXVpZCAhPSA/XCIsIFwiXCIpXG4gICAxMjNcdFx0fSBlbHNlIGlmIHJlcS5Jc0hhdmVWYWx1ZUFkZCA9PSAyIHsgLy8g5pegXG4gICAxMjRcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiSUZOVUxMKHZhbHVlX2FkZF9idW5kbGVfdXVpZCwnJykgPSAnJ1wiKVxuICAgMTI1XHRcdH1cbiAgIDEyNlx0XG4gICAxMjdcdFx0aWYgcmVxLkZpbmFuY2lhbENvbmZpcm1hdGlvbiAhPSAwIHtcbiAgIDEyOFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJmaW5hbmNpYWxfY29uZmlybWF0aW9uID0gP1wiLCByZXEuRmluYW5jaWFsQ29uZmlybWF0aW9uKVxuICAgMTI5XHRcdH1cbiAgIDEzMFx0XG4gICAxMzFcdFx0aWYgcmVxLlRlbE51bSAhPSBcIlwiIHtcbiAgIDEzMlx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJtaWNyby1hY2NvdW50LnVzZXIudGVsX251bSBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIDEzM1x0XHR9XG4gICAxMzRcdFxuICAgMTM1XHRcdGNvdW50IDo9ICpxdWVyeVxuICAgMTM2XHRcbiAgIDEzN1x0XHRpZiByZXEuUGFnZVNpemUgIT0gMCAmJiByZXEuUGFnZSAhPSAwIHtcbiAgIDEzOFx0XHRcdHF1ZXJ5ID0gcXVlcnkuTGltaXQoaW50KHJlcS5QYWdlU2l6ZSkpLk9mZnNldChpbnQocmVxLlBhZ2UtMSkgKiBpbnQocmVxLlBhZ2VTaXplKSlcbiAgIDEzOVx0XHR9XG4gICAxNDBcdFxuVG90YWwgbGluZXMgaW4gZmlsZTogMjM5XG4iLCJpc0Vycm9yIjpmYWxzZSwicmVxdWVzdElkIjoiIn19LCIyYWZhNjlkNy02MDMwLTQzNDYtYWQ5Yy1hZGI3NWIyOTY1ZDI7dG9vbHVfdnJ0eF8wMU5NM2hKVVJ4S1VRS3ZydFlvaUxZVzgiOnsicmVxdWVzdElkIjoiMmFmYTY5ZDctNjAzMC00MzQ2LWFkOWMtYWRiNzViMjk2NWQyIiwidG9vbFVzZUlkIjoidG9vbHVfdnJ0eF8wMU5NM2hKVVJ4S1VRS3ZydFlvaUxZVzgiLCJwaGFzZSI6NSwicmVzdWx0Ijp7InRleHQiOiJTdWNjZXNzZnVsbHkgZWRpdGVkIHRoZSBmaWxlIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ28uXG5SZXN1bHQgZm9yIHN0cl9yZXBsYWNlIGZvciBlbnRyeSB3aXRoIGluZGV4IFswXTpcblJlcGxhY2VtZW50IHN1Y2Nlc3NmdWwuXG5FZGl0ZWQgc2VjdGlvbiBhZnRlciBJREUgYXV0by1mb3JtYXR0aW5nIHdhcyBhcHBsaWVkOlxuICAgMTI4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImZpbmFuY2lhbF9jb25maXJtYXRpb24gPSA/XCIsIHJlcS5GaW5hbmNpYWxDb25maXJtYXRpb24pXG4gICAxMjlcdFx0fVxuICAgMTMwXHRcbiAgIDEzMVx0XHRpZiByZXEuVGVsTnVtICE9IFwiXCIge1xuICAgMTMyXHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImBtaWNyby1hY2NvdW50YC5gdXNlcmAuYHRlbF9udW1gIGxpa2UgP1wiLCBcIiVcIityZXEuVGVsTnVtK1wiJVwiKVxuICAgMTMzXHRcdH1cbiAgIDEzNFx0XG4gICAxMzVcdFx0Y291bnQgOj0gKnF1ZXJ5XG4gICAxMzZcdFxuXG5SZXZpZXcgdGhlIGNoYW5nZXMgYW5kIG1ha2Ugc3VyZSB0aGV5IGFyZSBhcyBleHBlY3RlZCAoY29ycmVjdCBpbmRlbnRhdGlvbiwgbm8gZHVwbGljYXRlIGxpbmVzLCBldGMpLlxuRWRpdCB0aGUgZmlsZSBhZ2FpbiBpZiBuZWNlc3NhcnkuXG4iLCJpc0Vycm9yIjpmYWxzZSwicmVxdWVzdElkIjoiIn19LCI5NDJhNTdjZS1hMzhjLTQ3ZWEtOTFlNy02MWU0NWVlMDYzZWM7dG9vbHVfdnJ0eF8wMUM2d0ZNTUVDS3pWMVRFblZxemZXaXIiOnsicmVxdWVzdElkIjoiOTQyYTU3Y2UtYTM4Yy00N2VhLTkxZTctNjFlNDVlZTA2M2VjIiwidG9vbFVzZUlkIjoidG9vbHVfdnJ0eF8wMUM2d0ZNTUVDS3pWMVRFblZxemZXaXIiLCJwaGFzZSI6NSwicmVzdWx0Ijp7InRleHQiOiJIZXJlJ3MgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGBjYXQgLW5gIG9uIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ286XG4gICAgNzBcdFx0cmVzLk9yZGVyUmVjb3JkcyA9IG1ha2UoW10qYnVuZGxlLk9yZGVyUmVjb3JkLCAwKVxuICAgIDcxXHRcdHJlY29yZHMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIDApXG4gICAgNzJcdFxuICAgIDczXHRcdHF1ZXJ5IDo9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSlcbiAgICA3NFx0XG4gICAgNzVcdFx0cXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgICA3Nlx0XG4gICAgNzdcdFx0aWYgcmVxLkN1c3RvbWVySUQgIT0gXCJcIiB7XG4gICAgNzhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfaWQgPSA/XCIsIHJlcS5DdXN0b21lcklEKVxuICAgIDc5XHRcdH1cbiAgICA4MFx0XG5Ub3RhbCBsaW5lcyBpbiBmaWxlOiAyMzlcbiIsImlzRXJyb3IiOmZhbHNlLCJyZXF1ZXN0SWQiOiIifX0sIjBhZDRmMDczLTIxM2MtNGJlOC1iMTcyLWQ0NjBjZWI0MTFmODt0b29sdV92cnR4XzAxNXZjMkphTENVMThpUVpqcGVQYndqciI6eyJyZXF1ZXN0SWQiOiIwYWQ0ZjA3My0yMTNjLTRiZTgtYjE3Mi1kNDYwY2ViNDExZjgiLCJ0b29sVXNlSWQiOiJ0b29sdV92cnR4XzAxNXZjMkphTENVMThpUVpqcGVQYndqciIsInBoYXNlIjo1LCJyZXN1bHQiOnsidGV4dCI6IkhlcmUncyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgYGNhdCAtbmAgb24gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nbzpcbiAgIDEzMFx0XG4gICAxMzFcdFx0aWYgcmVxLlRlbE51bSAhPSBcIlwiIHtcbiAgIDEzMlx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJgbWljcm8tYWNjb3VudGAuYHVzZXJgLmB0ZWxfbnVtYCBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIDEzM1x0XHR9XG4gICAxMzRcdFxuICAgMTM1XHRcdGNvdW50IDo9ICpxdWVyeVxuICAgMTM2XHRcbiAgIDEzN1x0XHRpZiByZXEuUGFnZVNpemUgIT0gMCAmJiByZXEuUGFnZSAhPSAwIHtcbiAgIDEzOFx0XHRcdHF1ZXJ5ID0gcXVlcnkuTGltaXQoaW50KHJlcS5QYWdlU2l6ZSkpLk9mZnNldChpbnQocmVxLlBhZ2UtMSkgKiBpbnQocmVxLlBhZ2VTaXplKSlcbiAgIDEzOVx0XHR9XG4gICAxNDBcdFxuVG90YWwgbGluZXMgaW4gZmlsZTogMjM5XG4iLCJpc0Vycm9yIjpmYWxzZSwicmVxdWVzdElkIjoiIn19LCIxNGZlMTAzZi1mZmZiLTQzMTMtYTRjZi01MjJjMWQyNWIwNDc7dG9vbHVfdnJ0eF8wMUdTY283cUZkTnB1THlrWmkxdnpWemIiOnsicmVxdWVzdElkIjoiMTRmZTEwM2YtZmZmYi00MzEzLWE0Y2YtNTIyYzFkMjViMDQ3IiwidG9vbFVzZUlkIjoidG9vbHVfdnJ0eF8wMUdTY283cUZkTnB1THlrWmkxdnpWemIiLCJwaGFzZSI6NSwicmVzdWx0Ijp7InRleHQiOiJTdWNjZXNzZnVsbHkgZWRpdGVkIHRoZSBmaWxlIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ28uXG5SZXN1bHQgZm9yIHN0cl9yZXBsYWNlIGZvciBlbnRyeSB3aXRoIGluZGV4IFswXTpcblJlcGxhY2VtZW50IHN1Y2Nlc3NmdWwuXG5FZGl0ZWQgc2VjdGlvbiBhZnRlciBJREUgYXV0by1mb3JtYXR0aW5nIHdhcyBhcHBsaWVkOlxuICAgIDcxXHRcdHJlY29yZHMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIDApXG4gICAgNzJcdFxuICAgIDczXHRcdHF1ZXJ5IDo9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSlcbiAgICA3NFx0XG4gICAgNzVcdFx0cXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gXFxgbWljcm8tYWNjb3VudFxcYC5cXGB1c2VyXFxgIG9uIFxcYG1pY3JvLWFjY291bnRcXGAuXFxgdXNlclxcYC5cXGBpZFxcYCA9IFxcYGJ1bmRsZV9vcmRlcl9yZWNvcmRzXFxgLlxcYGN1c3RvbWVyX2lkXFxgXCIpXG4gICAgNzZcdFxuICAgIDc3XHRcdGlmIHJlcS5DdXN0b21lcklEICE9IFwiXCIge1xuICAgIDc4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX2lkID0gP1wiLCByZXEuQ3VzdG9tZXJJRClcbiAgICA3OVx0XHR9XG5cblJldmlldyB0aGUgY2hhbmdlcyBhbmQgbWFrZSBzdXJlIHRoZXkgYXJlIGFzIGV4cGVjdGVkIChjb3JyZWN0IGluZGVudGF0aW9uLCBubyBkdXBsaWNhdGUgbGluZXMsIGV0YykuXG5FZGl0IHRoZSBmaWxlIGFnYWluIGlmIG5lY2Vzc2FyeS5cbiIsImlzRXJyb3IiOmZhbHNlLCJyZXF1ZXN0SWQiOiIifX0sIjIxYTVkYTQyLTM3NzYtNGQ5OS05MmRhLTdiOWUwYzllYWY5ODt0b29sdV92cnR4XzAxUG0xTHB5SnQ2Y3NkOWhYNXdveXFWbSI6eyJyZXF1ZXN0SWQiOiIyMWE1ZGE0Mi0zNzc2LTRkOTktOTJkYS03YjllMGM5ZWFmOTgiLCJ0b29sVXNlSWQiOiJ0b29sdV92cnR4XzAxUG0xTHB5SnQ2Y3NkOWhYNXdveXFWbSIsInBoYXNlIjo1LCJyZXN1bHQiOnsidGV4dCI6IlN1Y2Nlc3NmdWxseSBlZGl0ZWQgdGhlIGZpbGUgaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nby5cblJlc3VsdCBmb3Igc3RyX3JlcGxhY2UgZm9yIGVudHJ5IHdpdGggaW5kZXggWzBdOlxuUmVwbGFjZW1lbnQgc3VjY2Vzc2Z1bC5cbkVkaXRlZCBzZWN0aW9uIGFmdGVyIElERSBhdXRvLWZvcm1hdHRpbmcgd2FzIGFwcGxpZWQ6XG4gICAxMjhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiZmluYW5jaWFsX2NvbmZpcm1hdGlvbiA9ID9cIiwgcmVxLkZpbmFuY2lhbENvbmZpcm1hdGlvbilcbiAgIDEyOVx0XHR9XG4gICAxMzBcdFxuICAgMTMxXHRcdGlmIHJlcS5UZWxOdW0gIT0gXCJcIiB7XG4gICAxMzJcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiXFxgbWljcm8tYWNjb3VudFxcYC5cXGB1c2VyXFxgLlxcYHRlbF9udW1cXGAgbGlrZSA/XCIsIFwiJVwiK3JlcS5UZWxOdW0rXCIlXCIpXG4gICAxMzNcdFx0fVxuICAgMTM0XHRcbiAgIDEzNVx0XHRjb3VudCA6PSAqcXVlcnlcbiAgIDEzNlx0XG5cblJldmlldyB0aGUgY2hhbmdlcyBhbmQgbWFrZSBzdXJlIHRoZXkgYXJlIGFzIGV4cGVjdGVkIChjb3JyZWN0IGluZGVudGF0aW9uLCBubyBkdXBsaWNhdGUgbGluZXMsIGV0YykuXG5FZGl0IHRoZSBmaWxlIGFnYWluIGlmIG5lY2Vzc2FyeS5cbiIsImlzRXJyb3IiOmZhbHNlLCJyZXF1ZXN0SWQiOiIifX0sImI0MWY1MzQyLWFmMzctNGEzNS1hZDA3LTZiMTk3ZTNkNmJlYzt0b29sdV92cnR4XzAxRUY5OUtUeGlVbWp3NkhwWkMxd25MZiI6eyJyZXF1ZXN0SWQiOiJiNDFmNTM0Mi1hZjM3LTRhMzUtYWQwNy02YjE5N2UzZDZiZWMiLCJ0b29sVXNlSWQiOiJ0b29sdV92cnR4XzAxRUY5OUtUeGlVbWp3NkhwWkMxd25MZiIsInBoYXNlIjo1LCJyZXN1bHQiOnsidGV4dCI6IkhlcmUncyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgYGNhdCAtbmAgb24gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nbzpcbiAgICA3MFx0XHRyZXMuT3JkZXJSZWNvcmRzID0gbWFrZShbXSpidW5kbGUuT3JkZXJSZWNvcmQsIDApXG4gICAgNzFcdFx0cmVjb3JkcyA6PSBtYWtlKFtdKm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3JkcywgMClcbiAgICA3Mlx0XG4gICAgNzNcdFx0cXVlcnkgOj0gYXBwLk1vZHVsZUNsaWVudHMuQnVuZGxlREIuTW9kZWwoJm1vZGVsLkJ1bmRsZU9yZGVyUmVjb3Jkc3t9KVxuICAgIDc0XHRcbiAgICA3NVx0XHRxdWVyeS5Kb2lucyhcImxlZnQgam9pbiBcXFxcYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbiAgICA3Nlx0XG4gICAgNzdcdFx0aWYgcmVxLkN1c3RvbWVySUQgIT0gXCJcIiB7XG4gICAgNzhcdFx0XHRxdWVyeSA9IHF1ZXJ5LldoZXJlKFwiY3VzdG9tZXJfaWQgPSA/XCIsIHJlcS5DdXN0b21lcklEKVxuICAgIDc5XHRcdH1cbiAgICA4MFx0XG5Ub3RhbCBsaW5lcyBpbiBmaWxlOiAyMzlcbiIsImlzRXJyb3IiOmZhbHNlLCJyZXF1ZXN0SWQiOiIifX0sImZkM2Q3ZWViLTAwZTgtNDA0YS1iYWU2LWY1M2IxOGRmMjM5MTt0b29sdV92cnR4XzAxOTNVbkptTE5xdHNmRjVMWXRQZjRaSyI6eyJyZXF1ZXN0SWQiOiJmZDNkN2VlYi0wMGU4LTQwNGEtYmFlNi1mNTNiMThkZjIzOTEiLCJ0b29sVXNlSWQiOiJ0b29sdV92cnR4XzAxOTNVbkptTE5xdHNmRjVMWXRQZjRaSyIsInBoYXNlIjo2LCJyZXN1bHQiOnsidGV4dCI6IkZhaWxlZCB0byBlZGl0IHRoZSBmaWxlIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ28uIFNlZSBiZWxvdyBmb3IgZGV0YWlscy5cblJlc3VsdCBmb3Igc3RyX3JlcGxhY2UgZm9yIGVudHJ5IHdpdGggaW5kZXggWzBdOlxuTm8gcmVwbGFjZW1lbnQgd2FzIHBlcmZvcm1lZCwgb2xkU3RyIGRpZCBub3QgYXBwZWFyIHZlcmJhdGltIGluIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ28uXG5UaGUgY29udGVudCBpbiB0aGUgc3BlY2lmaWVkIHJlZ2lvbiBpczpcbiAgICA3MVx0XHRyZWNvcmRzIDo9IG1ha2UoW10qbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCAwKVxuICAgIDcyXHRcbiAgICA3M1x0XHRxdWVyeSA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pXG4gICAgNzRcdFxuICAgIDc1XHRcdHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIFxcXFxgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFwiKVxuICAgIDc2XHRcbiAgICA3N1x0XHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgICA3OFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG4gICAgNzlcdFx0fVxuXG5EaWZmIGJldHdlZW4gb2xkU3RyIGFuZCB0aGUgc3BlY2lmaWVkIHJlZ2lvbiBpczpcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi0tLSBvbGRTdHJcbisrKyByZWdpb25Db250ZW50XG5AQCAtMSwxICsxLDEgQEBcbi1cdHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIFxcYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmBpZGAgPSBgYnVuZGxlX29yZGVyX3JlY29yZHNgLmBjdXN0b21lcl9pZGBcIilcbitcdHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIFxcXFxgbWljcm8tYWNjb3VudGAuYHVzZXJgIG9uIGBtaWNyby1hY2NvdW50YC5gdXNlcmAuYGlkYCA9IGBidW5kbGVfb3JkZXJfcmVjb3Jkc2AuYGN1c3RvbWVyX2lkYFwiKVxuXG5cbkZpeCBmYWlsZWQgc3RyX3JlcGxhY2UgZW50cmllcyBhY2NvcmRpbmdseSBhbmQgdHJ5IGFnYWluLlxuIiwiaXNFcnJvciI6dHJ1ZSwicmVxdWVzdElkIjoiIn19LCIyYTc0MjQxNC1lODg0LTQ5ZWUtODhmZC1jMzBiM2M4N2ViY2I7dG9vbHVfdnJ0eF8wMVBrZXAyazZ2TTlQQ2J1OG5qVnpZM2EiOnsicmVxdWVzdElkIjoiMmE3NDI0MTQtZTg4NC00OWVlLTg4ZmQtYzMwYjNjODdlYmNiIiwidG9vbFVzZUlkIjoidG9vbHVfdnJ0eF8wMVBrZXAyazZ2TTlQQ2J1OG5qVnpZM2EiLCJwaGFzZSI6NSwicmVzdWx0Ijp7InRleHQiOiJTdWNjZXNzZnVsbHkgZWRpdGVkIHRoZSBmaWxlIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ28uXG5SZXN1bHQgZm9yIHN0cl9yZXBsYWNlIGZvciBlbnRyeSB3aXRoIGluZGV4IFswXTpcblJlcGxhY2VtZW50IHN1Y2Nlc3NmdWwuXG5FZGl0ZWQgc2VjdGlvbiBhZnRlciBJREUgYXV0by1mb3JtYXR0aW5nIHdhcyBhcHBsaWVkOlxuICAgIDcxXHRcdHJlY29yZHMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIDApXG4gICAgNzJcdFxuICAgIDczXHRcdHF1ZXJ5IDo9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSlcbiAgICA3NFx0XG4gICAgNzVcdFx0cXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gbWljcm9fYWNjb3VudC51c2VyIG9uIG1pY3JvX2FjY291bnQudXNlci5pZCA9IGJ1bmRsZV9vcmRlcl9yZWNvcmRzLmN1c3RvbWVyX2lkXCIpXG4gICAgNzZcdFxuICAgIDc3XHRcdGlmIHJlcS5DdXN0b21lcklEICE9IFwiXCIge1xuICAgIDc4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX2lkID0gP1wiLCByZXEuQ3VzdG9tZXJJRClcbiAgICA3OVx0XHR9XG5cblJldmlldyB0aGUgY2hhbmdlcyBhbmQgbWFrZSBzdXJlIHRoZXkgYXJlIGFzIGV4cGVjdGVkIChjb3JyZWN0IGluZGVudGF0aW9uLCBubyBkdXBsaWNhdGUgbGluZXMsIGV0YykuXG5FZGl0IHRoZSBmaWxlIGFnYWluIGlmIG5lY2Vzc2FyeS5cbiIsImlzRXJyb3IiOmZhbHNlLCJyZXF1ZXN0SWQiOiIifX0sImIzNmFjMDhkLTdjMWUtNGJkZS1iMDc0LTk2MGExMDNiODM4ODt0b29sdV92cnR4XzAxRERCOUpIWERnSmdwOHptaHQyQ2duOSI6eyJyZXF1ZXN0SWQiOiJiMzZhYzA4ZC03YzFlLTRiZGUtYjA3NC05NjBhMTAzYjgzODgiLCJ0b29sVXNlSWQiOiJ0b29sdV92cnR4XzAxRERCOUpIWERnSmdwOHptaHQyQ2duOSIsInBoYXNlIjo1LCJyZXN1bHQiOnsidGV4dCI6IkhlcmUncyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgYGNhdCAtbmAgb24gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nbzpcbiAgIDEzMFx0XG4gICAxMzFcdFx0aWYgcmVxLlRlbE51bSAhPSBcIlwiIHtcbiAgIDEzMlx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJgbWljcm8tYWNjb3VudGAuYHVzZXJgLmB0ZWxfbnVtYCBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIDEzM1x0XHR9XG4gICAxMzRcdFxuICAgMTM1XHRcdGNvdW50IDo9ICpxdWVyeVxuICAgMTM2XHRcbiAgIDEzN1x0XHRpZiByZXEuUGFnZVNpemUgIT0gMCAmJiByZXEuUGFnZSAhPSAwIHtcbiAgIDEzOFx0XHRcdHF1ZXJ5ID0gcXVlcnkuTGltaXQoaW50KHJlcS5QYWdlU2l6ZSkpLk9mZnNldChpbnQocmVxLlBhZ2UtMSkgKiBpbnQocmVxLlBhZ2VTaXplKSlcbiAgIDEzOVx0XHR9XG4gICAxNDBcdFxuVG90YWwgbGluZXMgaW4gZmlsZTogMjM5XG4iLCJpc0Vycm9yIjpmYWxzZSwicmVxdWVzdElkIjoiIn19LCIzN2JmNjYwYy1mMzAwLTRmNzEtYjUzZi00MzliNjQ5MzZlMTM7dG9vbHVfdnJ0eF8wMUNnTVlWRVlqa2ZDdDdQYjVmdWdtcXUiOnsicmVxdWVzdElkIjoiMzdiZjY2MGMtZjMwMC00ZjcxLWI1M2YtNDM5YjY0OTM2ZTEzIiwidG9vbFVzZUlkIjoidG9vbHVfdnJ0eF8wMUNnTVlWRVlqa2ZDdDdQYjVmdWdtcXUiLCJwaGFzZSI6NSwicmVzdWx0Ijp7InRleHQiOiJTdWNjZXNzZnVsbHkgZWRpdGVkIHRoZSBmaWxlIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ28uXG5SZXN1bHQgZm9yIHN0cl9yZXBsYWNlIGZvciBlbnRyeSB3aXRoIGluZGV4IFswXTpcblJlcGxhY2VtZW50IHN1Y2Nlc3NmdWwuXG5FZGl0ZWQgc2VjdGlvbiBhZnRlciBJREUgYXV0by1mb3JtYXR0aW5nIHdhcyBhcHBsaWVkOlxuICAgMTI4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImZpbmFuY2lhbF9jb25maXJtYXRpb24gPSA/XCIsIHJlcS5GaW5hbmNpYWxDb25maXJtYXRpb24pXG4gICAxMjlcdFx0fVxuICAgMTMwXHRcbiAgIDEzMVx0XHRpZiByZXEuVGVsTnVtICE9IFwiXCIge1xuICAgMTMyXHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcIm1pY3JvX2FjY291bnQudXNlci50ZWxfbnVtIGxpa2UgP1wiLCBcIiVcIityZXEuVGVsTnVtK1wiJVwiKVxuICAgMTMzXHRcdH1cbiAgIDEzNFx0XG4gICAxMzVcdFx0Y291bnQgOj0gKnF1ZXJ5XG4gICAxMzZcdFxuXG5SZXZpZXcgdGhlIGNoYW5nZXMgYW5kIG1ha2Ugc3VyZSB0aGV5IGFyZSBhcyBleHBlY3RlZCAoY29ycmVjdCBpbmRlbnRhdGlvbiwgbm8gZHVwbGljYXRlIGxpbmVzLCBldGMpLlxuRWRpdCB0aGUgZmlsZSBhZ2FpbiBpZiBuZWNlc3NhcnkuXG4iLCJpc0Vycm9yIjpmYWxzZSwicmVxdWVzdElkIjoiIn19LCI4ZTMwMTNhNS02YWNiLTRlYzQtYTNjYi1kNzVlYmRlZmRhNjM7dG9vbHVfdnJ0eF8wMVZxNHJzZkdSaVlpajg5MU1WcXBZMU4iOnsicmVxdWVzdElkIjoiOGUzMDEzYTUtNmFjYi00ZWM0LWEzY2ItZDc1ZWJkZWZkYTYzIiwidG9vbFVzZUlkIjoidG9vbHVfdnJ0eF8wMVZxNHJzZkdSaVlpajg5MU1WcXBZMU4iLCJwaGFzZSI6NSwicmVzdWx0Ijp7InRleHQiOiJIZXJlJ3MgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGBjYXQgLW5gIG9uIGludGVybmFsL2Rhby9vcmRlclJlY29yZHNEYW8uZ286XG4gICAgNzBcdFx0cmVzLk9yZGVyUmVjb3JkcyA9IG1ha2UoW10qYnVuZGxlLk9yZGVyUmVjb3JkLCAwKVxuICAgIDcxXHRcdHJlY29yZHMgOj0gbWFrZShbXSptb2RlbC5CdW5kbGVPcmRlclJlY29yZHMsIDApXG4gICAgNzJcdFxuICAgIDczXHRcdHF1ZXJ5IDo9IGFwcC5Nb2R1bGVDbGllbnRzLkJ1bmRsZURCLk1vZGVsKCZtb2RlbC5CdW5kbGVPcmRlclJlY29yZHN7fSlcbiAgICA3NFx0XG4gICAgNzVcdFx0cXVlcnkuSm9pbnMoXCJsZWZ0IGpvaW4gYG1pY3JvLWFjY291bnRgLmB1c2VyYCBvbiBgbWljcm8tYWNjb3VudGAuYHVzZXJgLmlkID0gYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5jdXN0b21lcl9pZFwiKVxuICAgIDc2XHRcbiAgICA3N1x0XHRpZiByZXEuQ3VzdG9tZXJJRCAhPSBcIlwiIHtcbiAgICA3OFx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJjdXN0b21lcl9pZCA9ID9cIiwgcmVxLkN1c3RvbWVySUQpXG4gICAgNzlcdFx0fVxuICAgIDgwXHRcblRvdGFsIGxpbmVzIGluIGZpbGU6IDIzOVxuIiwiaXNFcnJvciI6ZmFsc2UsInJlcXVlc3RJZCI6IiJ9fSwiNjg3MWU0MDItOGIwZi00ZjYyLTgyMmUtZmYzODAzY2JhZjU1O3Rvb2x1X3ZydHhfMDFFSHdBV2U2V0o5NE5WS2VzWEZualA3Ijp7InJlcXVlc3RJZCI6IjY4NzFlNDAyLThiMGYtNGY2Mi04MjJlLWZmMzgwM2NiYWY1NSIsInRvb2xVc2VJZCI6InRvb2x1X3ZydHhfMDFFSHdBV2U2V0o5NE5WS2VzWEZualA3IiwicGhhc2UiOjUsInJlc3VsdCI6eyJ0ZXh0IjoiU3VjY2Vzc2Z1bGx5IGVkaXRlZCB0aGUgZmlsZSBpbnRlcm5hbC9kYW8vb3JkZXJSZWNvcmRzRGFvLmdvLlxuUmVzdWx0IGZvciBzdHJfcmVwbGFjZSBmb3IgZW50cnkgd2l0aCBpbmRleCBbMF06XG5SZXBsYWNlbWVudCBzdWNjZXNzZnVsLlxuRWRpdGVkIHNlY3Rpb24gYWZ0ZXIgSURFIGF1dG8tZm9ybWF0dGluZyB3YXMgYXBwbGllZDpcbiAgICA3MVx0XHRyZWNvcmRzIDo9IG1ha2UoW10qbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRzLCAwKVxuICAgIDcyXHRcbiAgICA3M1x0XHRxdWVyeSA6PSBhcHAuTW9kdWxlQ2xpZW50cy5CdW5kbGVEQi5Nb2RlbCgmbW9kZWwuQnVuZGxlT3JkZXJSZWNvcmRze30pXG4gICAgNzRcdFxuICAgIDc1XHRcdHF1ZXJ5LkpvaW5zKFwibGVmdCBqb2luIGBtaWNyby1hY2NvdW50YC5gdXNlcmAgb24gYG1pY3JvLWFjY291bnRgLmB1c2VyYC5gaWRgID0gYGJ1bmRsZV9vcmRlcl9yZWNvcmRzYC5gY3VzdG9tZXJfaWRgXCIpXG4gICAgNzZcdFxuICAgIDc3XHRcdGlmIHJlcS5DdXN0b21lcklEICE9IFwiXCIge1xuICAgIDc4XHRcdFx0cXVlcnkgPSBxdWVyeS5XaGVyZShcImN1c3RvbWVyX2lkID0gP1wiLCByZXEuQ3VzdG9tZXJJRClcbiAgICA3OVx0XHR9XG5cblJldmlldyB0aGUgY2hhbmdlcyBhbmQgbWFrZSBzdXJlIHRoZXkgYXJlIGFzIGV4cGVjdGVkIChjb3JyZWN0IGluZGVudGF0aW9uLCBubyBkdXBsaWNhdGUgbGluZXMsIGV0YykuXG5FZGl0IHRoZSBmaWxlIGFnYWluIGlmIG5lY2Vzc2FyeS5cbiIsImlzRXJyb3IiOmZhbHNlLCJyZXF1ZXN0SWQiOiIifX0sImM5NzQxNzAyLWVlMjItNGMzMi1hODgyLTllOTIwZjJjMzE5Mzt0b29sdV92cnR4XzAxOGE4bjdwQ3JyUUFiRGRQTnRFSjluNyI6eyJyZXF1ZXN0SWQiOiJjOTc0MTcwMi1lZTIyLTRjMzItYTg4Mi05ZTkyMGYyYzMxOTMiLCJ0b29sVXNlSWQiOiJ0b29sdV92cnR4XzAxOGE4bjdwQ3JyUUFiRGRQTnRFSjluNyIsInBoYXNlIjo1LCJyZXN1bHQiOnsidGV4dCI6IkhlcmUncyB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgYGNhdCAtbmAgb24gaW50ZXJuYWwvZGFvL29yZGVyUmVjb3Jkc0Rhby5nbzpcbiAgIDEzMFx0XG4gICAxMzFcdFx0aWYgcmVxLlRlbE51bSAhPSBcIlwiIHtcbiAgIDEzMlx0XHRcdHF1ZXJ5ID0gcXVlcnkuV2hlcmUoXCJgbWljcm8tYWNjb3VudGAuYHVzZXJgLmB0ZWxfbnVtYCBsaWtlID9cIiwgXCIlXCIrcmVxLlRlbE51bStcIiVcIilcbiAgIDEzM1x0XHR9XG4gICAxMzRcdFxuICAgMTM1XHRcdGNvdW50IDo9ICpxdWVyeVxuICAgMTM2XHRcbiAgIDEzN1x0XHRpZiByZXEuUGFnZVNpemUgIT0gMCAmJiByZXEuUGFnZSAhPSAwIHtcbiAgIDEzOFx0XHRcdHF1ZXJ5ID0gcXVlcnkuTGltaXQoaW50KHJlcS5QYWdlU2l6ZSkpLk9mZnNldChpbnQocmVxLlBhZ2UtMSkgKiBpbnQocmVxLlBhZ2VTaXplKSlcbiAgIDEzOVx0XHR9XG4gICAxNDBcdFxuVG90YWwgbGluZXMgaW4gZmlsZTogMjM5XG4iLCJpc0Vycm9yIjpmYWxzZSwicmVxdWVzdElkIjoiIn19fSwiZHJhZnRFeGNoYW5nZSI6eyJyZXF1ZXN0X21lc3NhZ2UiOiIiLCJyaWNoX3RleHRfanNvbl9yZXByIjp7InR5cGUiOiJkb2MiLCJjb250ZW50IjpbeyJ0eXBlIjoicGFyYWdyYXBoIn1dfSwic3RhdHVzIjoiZHJhZnQifSwicmVxdWVzdElkcyI6W10sImlzUGlubmVkIjpmYWxzZSwiaXNTaGFyZWFibGUiOnRydWUsImV4dHJhRGF0YSI6eyJpc0FnZW50Q29udmVyc2F0aW9uIjp0cnVlLCJoYXNBZ2VudE9uYm9hcmRlZCI6dHJ1ZSwiaGFzRGlydHlFZGl0cyI6dHJ1ZX0sInBlcnNvbmFUeXBlIjowfX0sImFnZW50RXhlY3V0aW9uTW9kZSI6Im1hbnVhbCIsImlzQWdlbnRFZGl0c0NvbGxhcHNlZCI6dHJ1ZSwic2hvdWxkRGlzcGxheUFnZW50QmFubmVyIjp0cnVlLCJoYXNOb3RVc2VkQWdlbnQiOnRydWUsImlzQ29udGV4dFBhbmVPcGVuIjpmYWxzZSwiaXNBY3Rpb25zUGFuZU9wZW4iOmZhbHNlfQ==" />
|
|
</map>
|
|
</option>
|
|
</component>
|
|
</project> |