Advertisement
xiaomianao666

邀您一起看:画江湖之不良人 第05季 4K

May 16th, 2025
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥画江湖之不良人 第05季 4K@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWHveaVsFwiLFwicGF0aFwiOlwiaGFuc2h1XCIsXCJydWxlXCI6XCJjb25zdCBoZWFkZXIxID0ge1xcbiAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJBbmRyb2lkXFxcIixcXG4gICAgXFxcIngtZGV2aWNlLWlkXFxcIjogXFxcImI3MWE5MjNlYjBlMjIzOTg0MjU5OWEzYzAxNmI0MDk4XFxcIlxcbn1cXG5cXG4vLyBHRVTor7fmsYJcXG5mdW5jdGlvbiByZXExKHVybDEsIGhlYWRlcjEpIHtcXG4gICAgbGV0IGhlYWRlclxcbiAgICBpZiAoaGVhZGVyMSA9PSBcXFwidW5kZWZpbmVkXFxcIikge1xcbiAgICAgICAgaGVhZGVyID0ge1xcbiAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIkFuZHJvaWRcXFwiLFxcbiAgICAgICAgICAgIFxcXCJ4LWRldmljZS1pZFxcXCI6IFxcXCJiNzFhOTIzZWIwZTIyMzk4NDI1OTlhM2MwMTZiNDA5OFxcXCIsXFxuICAgICAgICAgICAgXFxcImF1dGhvcml6YXRpb25cXFwiOiBnZXRJdGVtKFxcXCJhdXRob3JpemF0aW9uXFxcIiwgXFxcIlxcXCIpLFxcbiAgICAgICAgICAgIFxcXCJ4LWNhcHRjaGEtdG9rZW5cXFwiOiBnZXRNeVZhcihcXFwiY2FwdGNoYV90b2tlblxcXCIsIFxcXCJcXFwiKVxcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgaGVhZGVyID0gaGVhZGVyMVxcbiAgICB9XFxuICAgIGxldCBodG1sMSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwxLCB7XFxuICAgICAgICBoZWFkZXJzOiBoZWFkZXIsXFxuICAgICAgICBtZXRob2Q6IFxcXCJHRVRcXFwiXFxuICAgIH0pKTsgLy9sb2coaHRtbDEpXFxuICAgIGlmIChnZXRJdGVtKFxcXCJhdXRob3JpemF0aW9uXFxcIikgPT0gXFxcInVuZGVmaW5lZFxcXCIpIHNpZ25pbigpXFxuICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFwi5biQ5Y+36K6k6K+B5aSx6LSl77yM6K+36YeN5paw55m75b2VXFxcIikgc2lnbmluKClcXG4gICAgaWYgKGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uID09IFxcXCLpqozor4HnoIHml6DmlYhcXFwiKSBjYXB0Y2hhKClcXG4gICAgcmV0dXJuIGh0bWwxXFxufVxcblxcbi8vIFBPU1Tor7fmsYJcXG5mdW5jdGlvbiByZXEyKHVybDEsIGhlYWRlcjEsIGJvZHkxKSB7XFxuICAgIGxldCBoZWFkZXJcXG4gICAgaWYgKGhlYWRlcjEgPT0gXFxcInVuZGVmaW5lZFxcXCIpIHtcXG4gICAgICAgIGhlYWRlciA9IHtcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJBbmRyb2lkXFxcIixcXG4gICAgICAgICAgICBcXFwieC1kZXZpY2UtaWRcXFwiOiBcXFwiYjcxYTkyM2ViMGUyMjM5ODQyNTk5YTNjMDE2YjQwOThcXFwiLFxcbiAgICAgICAgICAgIFxcXCJhdXRob3JpemF0aW9uXFxcIjogZ2V0SXRlbShcXFwiYXV0aG9yaXphdGlvblxcXCIsIFxcXCJcXFwiKSxcXG4gICAgICAgICAgICBcXFwieC1jYXB0Y2hhLXRva2VuXFxcIjogZ2V0TXlWYXIoXFxcImNhcHRjaGFfdG9rZW5cXFwiLCBcXFwiXFxcIilcXG4gICAgICAgIH1cXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGhlYWRlciA9IGhlYWRlcjFcXG4gICAgfVxcbiAgICBsZXQgaHRtbDEgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsMSwge1xcbiAgICAgICAgaGVhZGVyczogaGVhZGVyLFxcbiAgICAgICAgYm9keTogYm9keTEsXFxuICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIlxcbiAgICB9KSk7IC8vbG9nKGh0bWwxKVxcbiAgICBpZiAoaHRtbDEuZXJyb3IgPT0gXFxcImNhcHRjaGFfaW52YWxpZFxcXCIpIGNhcHRjaGEoKVxcbiAgICByZXR1cm4gaHRtbDFcXG59XFxuXFxuLy8g6I635Y+W55+t5L+h6aqM6K+B56CB6K+35rGCXFxuZnVuY3Rpb24gc2VuZHNtcygpIHtcXG4gICAgbGV0IGJvZHkxID0gSlNPTi5zdHJpbmdpZnkoe1xcXCJwcm90b2NvbFZlcnNpb25cXFwiOlxcXCIzMDFcXFwiLFxcXCJzZXF1ZW5jZU5vXFxcIjpcXFwiMTAwMDAwMVxcXCIsXFxcInBsYXRmb3JtVmVyc2lvblxcXCI6XFxcIjEwXFxcIixcXFwiaXNDb21wcmVzc2VkXFxcIjpcXFwiMFxcXCIsXFxcImFwcGlkXFxcIjpcXFwiNDBcXFwiLFxcXCJjbGllbnRWZXJzaW9uXFxcIjpcXFwiOC4wMy4wLjkwNjdcXFwiLFxcXCJwZWVySURcXFwiOlxcXCJjOWIwNzZhNDQ2NTE3OTY5ZGZmNjM4Y2QzN2ZhOWZmMVxcXCIsXFxcImFwcE5hbWVcXFwiOlxcXCJBTkRST0lELWNvbS54dW5sZWkuZG93bmxvYWRwcm92aWRlclxcXCIsXFxcInNka1ZlcnNpb25cXFwiOlxcXCIyMzE1MDBcXFwiLFxcXCJkZXZpY2VzaWduXFxcIjpcXFwiZGl2MTAxLmI3MWE5MjNlYjBlMjIzOTg0MjU5OWEzYzAxNmI0MDk4NjEyZjZjZjZkNmU5ZmQxOTI1ODQ1ZWM1OTI4NTcxNmNcXFwiLFxcXCJuZXRXb3JrVHlwZVxcXCI6XFxcIjJHXFxcIixcXFwicHJvdmlkZXJOYW1lXFxcIjpcXFwiTk9ORVxcXCIsXFxcImRldmljZU1vZGVsXFxcIjpcXFwiMjIwMjEyMTFSQ1xcXCIsXFxcImRldmljZU5hbWVcXFwiOlxcXCJYaWFvbWlfMjIwMjEyMTFSY1xcXCIsXFxcIk9TVmVyc2lvblxcXCI6XFxcIjEyXFxcIixcXFwiY3JlZGl0a2V5XFxcIjpcXFwiXFxcIixcXFwiaGxcXFwiOlxcXCJ6aC1DTlxcXCIsXFxcIm1vYmlsZVxcXCI6Z2V0SXRlbShcXFwibW9iaWxlXFxcIiksXFxcInJlZ2lzdGVyXFxcIjpcXFwiMFxcXCJ9KVxcbiAgICBsZXQgaHRtbDEgPSByZXEyKFxcXCJodHRwczovL3hsdXNlci1zc2wueHVubGVpLmNvbS94bHVzZXIuY29yZS5sb2dpbi92My9zZW5kc21zXFxcIiwge30sIGJvZHkxKTsgLy9sb2coaHRtbDEpXFxuICAgIGlmIChodG1sMS5lcnJvckNvZGUgPT0gXFxcIjBcXFwiKSB7XFxuICAgICAgICB0b2FzdChcXFwi6aqM6K+B56CB5Y+R6YCB5oiQ5YqfXFxcIilcXG4gICAgICAgIHB1dE15VmFyKFxcXCJjcmVkaXRrZXlcXFwiLCBodG1sMS5jcmVkaXRrZXkpXFxuICAgICAgICBwdXRNeVZhcihcXFwiZGV2aWNlaWRcXFwiLCBodG1sMS5kZXZpY2VpZClcXG4gICAgICAgIHB1dE15VmFyKFxcXCJ0b2tlblxcXCIsIGh0bWwxLnRva2VuKVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgdG9hc3QoaHRtbDEuZXJyb3JEZXNjKVxcbiAgICB9XFxufVxcblxcbi8vIOWPkemAgemqjOivgeeggeeZu+W9leivt+axglxcbmZ1bmN0aW9uIHNtc2xvZ2luKCkge1xcbiAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcInByb3RvY29sVmVyc2lvblxcXCI6XFxcIjMwMVxcXCIsXFxcInNlcXVlbmNlTm9cXFwiOlxcXCIxMDAwMDAyXFxcIixcXFwicGxhdGZvcm1WZXJzaW9uXFxcIjpcXFwiMTBcXFwiLFxcXCJpc0NvbXByZXNzZWRcXFwiOlxcXCIwXFxcIixcXFwiYXBwaWRcXFwiOlxcXCI0MFxcXCIsXFxcImNsaWVudFZlcnNpb25cXFwiOlxcXCI4LjAzLjAuOTA2N1xcXCIsXFxcInBlZXJJRFxcXCI6XFxcImM5YjA3NmE0NDY1MTc5NjlkZmY2MzhjZDM3ZmE5ZmYxXFxcIixcXFwiYXBwTmFtZVxcXCI6XFxcIkFORFJPSUQtY29tLnh1bmxlaS5kb3dubG9hZHByb3ZpZGVyXFxcIixcXFwic2RrVmVyc2lvblxcXCI6XFxcIjIzMTUwMFxcXCIsXFxcImRldmljZXNpZ25cXFwiOmdldE15VmFyKFxcXCJkZXZpY2VpZFxcXCIpLFxcXCJuZXRXb3JrVHlwZVxcXCI6XFxcIjJHXFxcIixcXFwicHJvdmlkZXJOYW1lXFxcIjpcXFwiTk9ORVxcXCIsXFxcImRldmljZU1vZGVsXFxcIjpcXFwiMjIwMjEyMTFSQ1xcXCIsXFxcImRldmljZU5hbWVcXFwiOlxcXCJYaWFvbWlfMjIwMjEyMTFSY1xcXCIsXFxcIk9TVmVyc2lvblxcXCI6XFxcIjEyXFxcIixcXFwiY3JlZGl0a2V5XFxcIjpnZXRNeVZhcihcXFwiY3JlZGl0a2V5XFxcIiksXFxcImhsXFxcIjpcXFwiemgtQ05cXFwiLFxcXCJtb2JpbGVcXFwiOmdldEl0ZW0oXFxcIm1vYmlsZVxcXCIpLFxcXCJzbXNDb2RlXFxcIjpnZXRNeVZhcihcXFwic21zQ29kZVxcXCIpLFxcXCJ0b2tlblxcXCI6Z2V0TXlWYXIoXFxcInRva2VuXFxcIiksXFxcInJlZ2lzdGVyXFxcIjpcXFwiMFxcXCJ9KVxcbiAgICBsZXQgaHRtbDEgPSByZXEyKFxcXCJodHRwczovL3hsdXNlci1zc2wueHVubGVpLmNvbS94bHVzZXIuY29yZS5sb2dpbi92My9zbXNsb2dpblxcXCIsIHt9LCBib2R5MSk7IC8vbG9nKGh0bWwxKVxcbiAgICBpZiAoaHRtbDEuZXJyb3JDb2RlID09IFxcXCIwXFxcIikge1xcbiAgICAgICAgdG9hc3QoXFxcIueZu+W9leaIkOWKn1xcXCIpXFxuICAgICAgICBzZXRJdGVtKFxcXCJzZXNzaW9uSURcXFwiLCBodG1sMS5zZXNzaW9uSUQpXFxuICAgICAgICBzZXRJdGVtKFxcXCJ1c2VyX2lkXFxcIiwgaHRtbDEudXNlcklEKVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgdG9hc3QoaHRtbDEuZXJyb3JEZXNjKVxcbiAgICB9XFxufVxcblxcbi8vIOWPkemAgeaJi+acuuWPt+WvhueggeeZu+W9leivt+axglxcbmZ1bmN0aW9uIGxvZ2luKCkge1xcbiAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcInByb3RvY29sVmVyc2lvblxcXCI6XFxcIjMwMVxcXCIsXFxcInNlcXVlbmNlTm9cXFwiOlxcXCIxMDAwMDAxXFxcIixcXFwicGxhdGZvcm1WZXJzaW9uXFxcIjpcXFwiMTBcXFwiLFxcXCJpc0NvbXByZXNzZWRcXFwiOlxcXCIwXFxcIixcXFwiYXBwaWRcXFwiOlxcXCI0MFxcXCIsXFxcImNsaWVudFZlcnNpb25cXFwiOlxcXCI4LjAzLjAuOTA2N1xcXCIsXFxcInBlZXJJRFxcXCI6XFxcImM5YjA3NmE0NDY1MTc5NjlkZmY2MzhjZDM3ZmE5ZmYxXFxcIixcXFwiYXBwTmFtZVxcXCI6XFxcIkFORFJPSUQtY29tLnh1bmxlaS5kb3dubG9hZHByb3ZpZGVyXFxcIixcXFwic2RrVmVyc2lvblxcXCI6XFxcIjIzMTUwMFxcXCIsXFxcImRldmljZXNpZ25cXFwiOlxcXCJkaXYxMDEuYjcxYTkyM2ViMGUyMjM5ODQyNTk5YTNjMDE2YjQwOTg2MTJmNmNmNmQ2ZTlmZDE5MjU4NDVlYzU5Mjg1NzE2Y1xcXCIsXFxcIm5ldFdvcmtUeXBlXFxcIjpcXFwiMkdcXFwiLFxcXCJwcm92aWRlck5hbWVcXFwiOlxcXCJOT05FXFxcIixcXFwiZGV2aWNlTW9kZWxcXFwiOlxcXCIyMjAyMTIxMVJDXFxcIixcXFwiZGV2aWNlTmFtZVxcXCI6XFxcIlhpYW9taV8yMjAyMTIxMVJjXFxcIixcXFwiT1NWZXJzaW9uXFxcIjpcXFwiMTJcXFwiLFxcXCJjcmVkaXRrZXlcXFwiOlxcXCJcXFwiLFxcXCJobFxcXCI6XFxcInpoLUNOXFxcIixcXFwidXNlck5hbWVcXFwiOmdldEl0ZW0oXFxcIm1vYmlsZVxcXCIpLFxcXCJwYXNzV29yZFxcXCI6Z2V0SXRlbShcXFwicGFzc1dvcmRcXFwiKSxcXFwidmVyaWZ5S2V5XFxcIjpcXFwiXFxcIixcXFwidmVyaWZ5Q29kZVxcXCI6XFxcIlxcXCIsXFxcImlzTWQ1UHdkXFxcIjpcXFwiMFxcXCJ9KVxcbiAgICBsZXQgaHRtbDEgPSByZXEyKFxcXCJodHRwczovL3hsdXNlci1zc2wueHVubGVpLmNvbS94bHVzZXIuY29yZS5sb2dpbi92My9sb2dpblxcXCIsIHt9LCBib2R5MSk7IC8vbG9nKGh0bWwxKVxcbiAgICBpZiAoaHRtbDEuZXJyb3JDb2RlID09IFxcXCIwXFxcIikge1xcbiAgICAgICAgdG9hc3QoXFxcIueZu+W9leaIkOWKn1xcXCIpXFxuICAgICAgICBzZXRJdGVtKFxcXCJzZXNzaW9uSURcXFwiLCBodG1sMS5zZXNzaW9uSUQpXFxuICAgICAgICBzZXRJdGVtKFxcXCJ1c2VyX2lkXFxcIiwgaHRtbDEudXNlcklEKVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgdG9hc3QoaHRtbDEuZXJyb3JEZXNjKVxcbiAgICB9XFxufVxcblxcbi8vIOiOt+WPluivt+axguWktGF1dGhvcml6YXRpb25cXG5mdW5jdGlvbiBzaWduaW4oKSB7XFxuICAgIGxldCBib2R5MSA9IEpTT04uc3RyaW5naWZ5KHtcXFwiY2xpZW50X2lkXFxcIjpcXFwiWHA2dnN4el83SVlWdzJCQlxcXCIsXFxcImNsaWVudF9zZWNyZXRcXFwiOlxcXCJYcDZ2c3k0dE45dG9UVmRNU3BvbVZkWHBSbUVTXFxcIixcXFwicHJvdmlkZXJcXFwiOlxcXCJhY2Nlc3NfZW5kX3BvaW50X3Rva2VuXFxcIixcXFwic2lnbmluX3Rva2VuXFxcIjpnZXRJdGVtKFxcXCJzZXNzaW9uSURcXFwiKX0pXFxuICAgIGxldCBodG1sMSA9IHJlcTIoXFxcImh0dHBzOi8veGx1c2VyLXNzbC54dW5sZWkuY29tL3YxL2F1dGgvc2lnbmluL3Rva2VuP2NsaWVudF9pZD1YcDZ2c3h6XzdJWVZ3MkJCXFxcIiwgaGVhZGVyMSwgYm9keTEpOyAvL2xvZyhodG1sMSlcXG4gICAgc2V0SXRlbShcXFwiYXV0aG9yaXphdGlvblxcXCIsIGh0bWwxLnRva2VuX3R5cGUrXFxcIiBcXFwiK2h0bWwxLmFjY2Vzc190b2tlbilcXG4gICAgc2V0SXRlbShcXFwicmVmcmVzaF90b2tlblxcXCIsIGh0bWwxLnJlZnJlc2hfdG9rZW4pXFxuICAgIHNldEl0ZW0oXFxcInVzZXJfaWRcXFwiLCBodG1sMS51c2VyX2lkKVxcbn1cXG5cXG4vLyDliLfmlrDor7fmsYLlpLRhdXRob3JpemF0aW9uXFxuZnVuY3Rpb24gYWNjZXNzX3Rva2VuKCkge1xcbiAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcImNsaWVudF9pZFxcXCI6XFxcIlhwNnZzeHpfN0lZVncyQkJcXFwiLFxcXCJjbGllbnRfc2VjcmV0XFxcIjpcXFwiWHA2dnN5NHROOXRvVFZkTVNwb21WZFhwUm1FU1xcXCIsXFxcImdyYW50X3R5cGVcXFwiOlxcXCJyZWZyZXNoX3Rva2VuXFxcIixcXFwicmVmcmVzaF90b2tlblxcXCI6Z2V0SXRlbShcXFwicmVmcmVzaF90b2tlblxcXCIpfSlcXG4gICAgbGV0IGh0bWwxID0gcmVxMihcXFwiaHR0cHM6Ly94bHVzZXItc3NsLnh1bmxlaS5jb20vdjEvYXV0aC90b2tlbj9jbGllbnRfaWQ9WHA2dnN4el83SVlWdzJCQlxcXCIsIGhlYWRlcjEsIGJvZHkxKTsgLy9sb2coaHRtbDEpXFxuICAgIHNldEl0ZW0oXFxcImF1dGhvcml6YXRpb25cXFwiLCBodG1sMS50b2tlbl90eXBlK1xcXCIgXFxcIitodG1sMS5hY2Nlc3NfdG9rZW4pXFxuICAgIHNldEl0ZW0oXFxcInVzZXJfaWRcXFwiLCBodG1sMS51c2VyX2lkKVxcbn1cXG5cXG4vLyDojrflj5bor7fmsYLlpLRjYXB0Y2hhX3Rva2VuXFxuZnVuY3Rpb24gY2FwdGNoYSgpIHtcXG4gICAgbGV0IGJvZHkxID0gSlNPTi5zdHJpbmdpZnkoe1xcXCJhY3Rpb25cXFwiOlxcXCJHRVQ6L2RyaXZlL3YxL3ByaXZpbGVnZS9VU0VSX1NFQ1VSSVRZX1RPS0VOXFxcIixcXFwiY2FwdGNoYV90b2tlblxcXCI6XFxcIlxcXCIsXFxcImNsaWVudF9pZFxcXCI6XFxcIlhwNnZzeHpfN0lZVncyQkJcXFwiLFxcXCJkZXZpY2VfaWRcXFwiOlxcXCJiNzFhOTIzZWIwZTIyMzk4NDI1OTlhM2MwMTZiNDA5OFxcXCIsXFxcIm1ldGFcXFwiOntcXFwiY2FwdGNoYV9zaWduXFxcIjpcXFwiMS4xZDhjMmE3ODM2MDFlNDUyNzdiM2I2NTE3Nzk1ODMyNFxcXCIsXFxcInVzZXJfaWRcXFwiOmdldEl0ZW0oXFxcInVzZXJfaWRcXFwiKSxcXFwicGFja2FnZV9uYW1lXFxcIjpcXFwiY29tLnh1bmxlaS5kb3dubG9hZHByb3ZpZGVyXFxcIixcXFwiY2xpZW50X3ZlcnNpb25cXFwiOlxcXCI4LjAzLjAuOTA2N1xcXCIsXFxcInRpbWVzdGFtcFxcXCI6XFxcIjE3NDU1MDcwNDkyNjBcXFwifSxcXFwicmVkaXJlY3RfdXJpXFxcIjpcXFwieGxhY2NzZGswMTovL3h1bmxlaS5jb20vY2FsbGJhY2s/c3RhdGVcXFxcdTAwM2RoYXJib3JcXFwifSlcXG4gICAgbGV0IGh0bWwxID0gcmVxMihcXFwiaHR0cHM6Ly94bHVzZXItc3NsLnh1bmxlaS5jb20vdjEvc2hpZWxkL2NhcHRjaGEvaW5pdD9jbGllbnRfaWQ9WHA2dnN4el83SVlWdzJCQlxcXCIsIGhlYWRlcjEsIGJvZHkxKTsgLy9sb2coaHRtbDEpXFxuICAgIHB1dE15VmFyKFxcXCJjYXB0Y2hhX3Rva2VuXFxcIiwgaHRtbDEuY2FwdGNoYV90b2tlbikgICAgXFxufVxcblxcbmZ1bmN0aW9uIGFjdGl2aXR5KCkge1xcbiAgICBsZXQgaGVhZGVyMSA9IHtcXG4gICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIkFuZHJvaWRcXFwiLFxcbiAgICAgICAgXFxcIngtZGV2aWNlLWlkXFxcIjogXFxcIjk5ZDhhMzE2N2RmNzlkMGY0MGZjZGM4NjIzZWQzMjY2XFxcIlxcbiAgICB9XFxuICAgIGxldCBib2R5MSA9IEpTT04uc3RyaW5naWZ5KHtcXFwiYWN0aW9uXFxcIjpcXFwiUE9TVDovYWN0aXZpdHkvdjEvcmV3YXJkXFxcIixcXFwiY2FwdGNoYV90b2tlblxcXCI6XFxcIlxcXCIsXFxcImNsaWVudF9pZFxcXCI6XFxcIlhwNnZzeHpfN0lZVncyQkJcXFwiLFxcXCJkZXZpY2VfaWRcXFwiOlxcXCI5OWQ4YTMxNjdkZjc5ZDBmNDBmY2RjODYyM2VkMzI2NlxcXCIsXFxcIm1ldGFcXFwiOntcXFwiY2FwdGNoYV9zaWduXFxcIjpcXFwiMS5lMmU2MGU1YWJiZjY2ZjZiMjFjZDc4NTVmMTNkNzBhZFxcXCIsXFxcInVzZXJfaWRcXFwiOmdldEl0ZW0oXFxcInVzZXJfaWRcXFwiKSxcXFwicGFja2FnZV9uYW1lXFxcIjpcXFwiY29tLnh1bmxlaS5kb3dubG9hZHByb3ZpZGVyXFxcIixcXFwiY2xpZW50X3ZlcnNpb25cXFwiOlxcXCI3LjQ5LjAuODEyOVxcXCIsXFxcInRpbWVzdGFtcFxcXCI6XFxcIjE3NDYwMDQ2MDE0NTVcXFwifSxcXFwicmVkaXJlY3RfdXJpXFxcIjpcXFwieGxhY2NzZGswMTovL3h1bmxlaS5jb20vY2FsbGJhY2s/c3RhdGVcXFxcdTAwM2RoYXJib3JcXFwifSlcXG4gICAgbGV0IGh0bWwxID0gcmVxMihcXFwiaHR0cHM6Ly94bHVzZXItc3NsLnh1bmxlaS5jb20vdjEvc2hpZWxkL2NhcHRjaGEvaW5pdD9jbGllbnRfaWQ9WHA2dnN4el83SVlWdzJCQlxcXCIsIGhlYWRlcjEsIGJvZHkxKVxcbiAgICBcXG4gICAgbGV0IGhlYWRlcjIgPSB7XFxuICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJBbmRyb2lkXFxcIixcXG4gICAgICAgIFxcXCJ4LWRldmljZS1pZFxcXCI6IFxcXCI5OWQ4YTMxNjdkZjc5ZDBmNDBmY2RjODYyM2VkMzI2NlxcXCIsXFxuICAgICAgICBcXFwiYXV0aG9yaXphdGlvblxcXCI6IGdldEl0ZW0oXFxcImF1dGhvcml6YXRpb25cXFwiLCBcXFwiXFxcIiksXFxuICAgICAgICBcXFwieC1jYXB0Y2hhLXRva2VuXFxcIjogaHRtbDEuY2FwdGNoYV90b2tlblxcbiAgICB9XFxuICAgIGxldCBib2R5MiA9IEpTT04uc3RyaW5naWZ5KHtcXFwiYWN0aXZpdHlfaWRcXFwiOlxcXCJWTXNjeWpWdS1jcFVOZmlycVhHVzR3ZmEwMFxcXCIsXFxcInJld2FyZF9jb3VudFxcXCI6MSxcXFwicGFyYW1zXFxcIjp7XFxcInVyY2tcXFwiOlxcXCI5OWQ4YTMxNjdkZjc5ZDBmNDBmY2RjODYyM2VkMzI2NlxcXCJ9fSlcXG4gICAgcmVxMihcXFwiaHR0cHM6Ly9hcGktc2hvdWxlaS1zc2wueHVubGVpLmNvbS9hY3Rpdml0eS92MS9yZXdhcmRcXFwiLCBoZWFkZXIyLCBib2R5MilcXG59XFxuXFxuLy8g5LqR5re75Yqg77yM6I635Y+W55uY5YaF5paH5Lu2aWRcXG5mdW5jdGlvbiB5dW5ibyhuYW1lLCB1cmwsIGZpbGVfaW5kZXgpIHtcXG4gICAgbGV0IGJvZHkxID0gSlNPTi5zdHJpbmdpZnkoe1xcXCJraW5kXFxcIjpcXFwiZHJpdmUjZmlsZVxcXCIsXFxcIm5hbWVcXFwiOm5hbWUsXFxcInVwbG9hZF90eXBlXFxcIjpcXFwiVVBMT0FEX1RZUEVfVVJMXFxcIixcXFwidXJsXFxcIjp7XFxcInVybFxcXCI6dXJsLFxcXCJmaWxlc1xcXCI6W2ZpbGVfaW5kZXhdfSxcXFwicGFyZW50X2lkXFxcIjpcXFwiXFxcIn0pXFxuICAgIGxldCBodG1sMVxcbiAgICBodG1sMSA9IHJlcTIoXFxcImh0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL2ZpbGVzXFxcIiwgXFxcInVuZGVmaW5lZFxcXCIsIGJvZHkxKVxcbiAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcIumqjOivgeeggeaXoOaViFxcXCIpIGh0bWwxID0gcmVxMihcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvZmlsZXNcXFwiLCBcXFwidW5kZWZpbmVkXFxcIiwgYm9keTEpXFxuICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbikgcmV0dXJuIHRvYXN0KGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uKVxcbiAgICBqYXZhLmxhbmcuVGhyZWFkLnNsZWVwKDEwMDApXFxuICAgIGxldCB1cmwyID0gJ2h0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL3Rhc2tzP3R5cGU9b2ZmbGluZSZwYWdlX3Rva2VuPSZmaWx0ZXJzPXtcXFwiaWRcXFwiOntcXFwiaW5cXFwiOlxcXCInK2h0bWwxLnRhc2suaWQrJ1xcXCJ9fSZ3aXRoPXJlZmVyZW5jZV9yZXNvdXJjZSdcXG4gICAgbGV0IGh0bWwyXFxuICAgIGh0bWwyID0gcmVxMSh1cmwyLCBcXFwidW5kZWZpbmVkXFxcIikudGFza3NbMF1cXG4gICAgaWYgKGh0bWwyLmVycm9yX2Rlc2NyaXB0aW9uID09IFxcXCLpqozor4HnoIHml6DmlYhcXFwiKSBodG1sMiA9IHJlcTEodXJsMiwgXFxcInVuZGVmaW5lZFxcXCIpLnRhc2tzWzBdXFxuICAgIHJldHVybiBodG1sMi5maWxlX2lkXFxufVxcblxcbi8vIOebmOWGhVxcbmZ1bmN0aW9uIGxhenkxKGlucHV0KSB7XFxuICAgIHJldHVybiAkKFxcXCJcXFwiKS5sYXp5UnVsZSgoaW5wdXQpID0+IHtcXG4gICAgICAgIGxldCBpZCA9IGlucHV0WzBdXFxuICAgICAgICBsZXQgbWltZV90eXBlID0gaW5wdXRbMV1cXG4gICAgICAgIGlmIChtaW1lX3R5cGUgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICByZXR1cm4gJChcXFwiaGlrZXI6Ly9lbXB0eT9wYWdlPWZ5cGFnZSNcXFwiK2lkK1xcXCIjbm9Mb2FkaW5nI1xcXCIpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBjb25zdCBkID0gW11cXG4gICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKS55dW5wYW4xKGQpXFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgICAgICBjb25zdCB7XFxuICAgICAgICAgICAgcmVxMSxcXG4gICAgICAgICAgICBzaGFuY2h1XFxuICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKVxcbiAgICAgICAgbGV0IHVybDEgPSBcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvZmlsZXMvXFxcIitpZCtcXFwiP19tYWdpYz0yMDIxJnVzYWdlPVBMQVkmdGh1bWJuYWlsX3NpemU9U0laRV9MQVJHRSZ3aXRoPWhkcjEwJndpdGg9c3VidGl0bGVfZmlsZXMmd2l0aD10YXNrJndpdGg9cHVibGljX3NoYXJlX3RhZ1xcXCJcXG4gICAgICAgIGxldCBodG1sMVxcbiAgICAgICAgaHRtbDEgPSByZXExKHVybDEsIFxcXCJ1bmRlZmluZWRcXFwiKTsgLy9sb2coaHRtbDEpXFxuICAgICAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcIumqjOivgeeggeaXoOaViFxcXCIpIGh0bWwxID0gcmVxMSh1cmwxLCBcXFwidW5kZWZpbmVkXFxcIik7IC8vbG9nKGh0bWwxKVxcbiAgICAgICAgaWYgKGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uKSB7XFxuICAgICAgICAgICAgaWYgKGlucHV0WzJdID09IFxcXCLliKDpmaRcXFwiKSBzaGFuY2h1KGlkKVxcbiAgICAgICAgICAgIHRvYXN0KGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uKVxcbiAgICAgICAgICAgIGlmICgvKG1hZ25ldDp8ZWQyazp8YnQ6fGZ0cDp8XFxcXC50b3JyZW50KS8udGVzdChNWV9VUkwpKSByZXR1cm4gTVlfVVJMLnNwbGl0KFxcXCIjXFxcIilbMV1cXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICB9XFxuICAgICAgICBpZiAoaHRtbDEuYXVkaXQudGl0bGUgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoaHRtbDEubGlua3MpID09IFxcXCJ7fVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgaWYgKC8obWFnbmV0OnxlZDJrOnxidDp8ZnRwOnxcXFxcLnRvcnJlbnQpLy50ZXN0KE1ZX1VSTCkpIHJldHVybiBNWV9VUkwuc3BsaXQoXFxcIiNcXFwiKVsxXVxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGxldCBwbGF5ID0gaHRtbDEubGlua3NbXFxcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVxcXCJdLnVybFxcbiAgICAgICAgICAgIGlmIChpbnB1dFsyXSA9PSBcXFwi5Yig6ZmkXFxcIikgc2hhbmNodShpZClcXG4gICAgICAgICAgICBpZiAoaHRtbDEubWltZV90eXBlLmluY2x1ZGVzKFxcXCJ2aWRlb1xcXCIpKSB7XFxuICAgICAgICAgICAgICAgIGxldCBuYW1lMSA9IFtcXFwi5Y6f5aeL55S76LSoXFxcIl1cXG4gICAgICAgICAgICAgICAgbGV0IHBsYXkxID0gW3BsYXldXFxuICAgICAgICAgICAgICAgIGh0bWwxLm1lZGlhcy5tYXAoaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5saW5rICE9IG51bGwpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lMS5wdXNoKGl0ZW0ubWVkaWFfbmFtZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGF5MS5wdXNoKGl0ZW0ubGluay51cmwpXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICBuYW1lczogbmFtZTEsXFxuICAgICAgICAgICAgICAgICAgICB1cmxzOiBwbGF5MVxcbiAgICAgICAgICAgICAgICB9KStcXFwiI2lzVmlkZW89dHJ1ZSNcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChodG1sMS5taW1lX3R5cGUuaW5jbHVkZXMoXFxcImltYWdlXFxcIikpIHJldHVybiBwbGF5K1xcXCIjLmpwZ1xcXCJcXG4gICAgICAgICAgICBpZiAoaHRtbDEubWltZV90eXBlLmluY2x1ZGVzKFxcXCJhdWRpb1xcXCIpKSByZXR1cm4gcGxheStcXFwiI2lzTXVzaWM9dHJ1ZSNcXFwiXFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIrcGxheVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB0b2FzdChodG1sMS5hdWRpdC50aXRsZSlcXG4gICAgICAgICAgICBzaGFuY2h1KGlkKVxcbiAgICAgICAgICAgIGlmICgvKG1hZ25ldDp8ZWQyazp8YnQ6fGZ0cDp8XFxcXC50b3JyZW50KS8udGVzdChNWV9VUkwpKSByZXR1cm4gTVlfVVJMLnNwbGl0KFxcXCIjXFxcIilbMV1cXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICB9XFxuICAgIH0sIGlucHV0LnNwbGl0KFxcXCIjXFxcIikpXFxufVxcblxcbi8vIOebmOWkllxcbmZ1bmN0aW9uIGxhenkyKGlucHV0KSB7XFxuICAgIHJldHVybiAkKFxcXCJcXFwiKS5sYXp5UnVsZSgoaW5wdXQpID0+IHtcXG4gICAgICAgIGxldCBpZCA9IGlucHV0WzBdXFxuICAgICAgICBsZXQgbWltZV90eXBlID0gaW5wdXRbMV1cXG4gICAgICAgIGlmIChtaW1lX3R5cGUgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICBpZiAoTVlfVVJMLmluY2x1ZGVzKFxcXCJ4dW5sZWlcXFwiKSkgcHV0TXlWYXIoXFxcImFuY2VzdG9yX2lkc1xcXCIsIGlkKVxcbiAgICAgICAgICAgIHJldHVybiAkKFxcXCJoaWtlcjovL2VtcHR5P3BhZ2U9ZnlwYWdlI1xcXCIraWQrXFxcIiNub0xvYWRpbmcjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBjb25zdCBkID0gW11cXG4gICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKS55dW5wYW4yKGQpXFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgICAgICBjb25zdCB7XFxuICAgICAgICAgICAgemh1YW5jdW4sXFxuICAgICAgICAgICAgbGF6eTFcXG4gICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhhbnNodVxcXCIpXFxuICAgICAgICBsZXQgaWQxID0gemh1YW5jdW4oaWQpXFxuICAgICAgICByZXR1cm4gbGF6eTEoaWQxKVxcbiAgICB9LCBpbnB1dC5zcGxpdChcXFwiI1xcXCIpKVxcbn1cXG5cXG4vLyDno4HliptcXG5mdW5jdGlvbiBsYXp5MyhpbnB1dCkge1xcbiAgICByZXR1cm4gJChcXFwiXFxcIikubGF6eVJ1bGUoKGlucHV0KSA9PiB7XFxuICAgICAgICBsZXQgbmFtZSA9IGlucHV0WzBdXFxuICAgICAgICBsZXQgbWV0YSA9IEpTT04ucGFyc2UoaW5wdXRbMV0pXFxuICAgICAgICBsZXQgZGlyID0gaW5wdXRbMl1cXG4gICAgICAgIGxldCBmaWxlX3NpemUgPSBpbnB1dFszXVxcbiAgICAgICAgbGV0IGZpbGVfaW5kZXggPSBpbnB1dFs0XVxcbiAgICAgICAgaWYgKGRpciAhPSBcXFwibnVsbFxcXCIpIHtcXG4gICAgICAgICAgICByZXR1cm4gJChcXFwiaGlrZXI6Ly9lbXB0eT9wYWdlPWZ5cGFnZSNcXFwiK01ZX1VSTC5zcGxpdChcXFwiI1xcXCIpWzFdK1xcXCIjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKChkaXIpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3Qge1xcbiAgICAgICAgICAgICAgICAgICAgbGF6eTMsXFxuICAgICAgICAgICAgICAgICAgICBieXRlc1RvU2l6ZVxcbiAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKVxcbiAgICAgICAgICAgICAgICBjb25zdCBkID0gW11cXG4gICAgICAgICAgICAgICAgbGV0IGxpc3QxID0gSlNPTi5wYXJzZShkaXIpLnJlc291cmNlc1xcbiAgICAgICAgICAgICAgICBsaXN0MS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGJ5dGVzVG9TaXplKGl0ZW0uZmlsZV9zaXplKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGl0ZW0ubWV0YS5pY29uLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGF6eTMoaXRlbS5uYW1lK1xcXCIjXFxcIitKU09OLnN0cmluZ2lmeShpdGVtLm1ldGEpK1xcXCIjXFxcIitKU09OLnN0cmluZ2lmeShpdGVtLmRpcikrXFxcIiNcXFwiK2l0ZW0uZmlsZV9zaXplK1xcXCIjXFxcIitpdGVtLmZpbGVfaW5kZXgpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0ubmFtZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKVxcbiAgICAgICAgICAgIH0sIGRpcilcXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IHtcXG4gICAgICAgICAgICByZXExLFxcbiAgICAgICAgICAgIGFjdGl2aXR5LFxcbiAgICAgICAgICAgIHl1bmJvLFxcbiAgICAgICAgICAgIGxhenkxXFxuICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKVxcbiAgICAgICAgYWN0aXZpdHkoKVxcbiAgICAgICAgXFxuICAgICAgICBsZXQgaWQgPSB5dW5ibyhuYW1lLCBNWV9VUkwuc3BsaXQoXFxcIiNcXFwiKVsxXSwgZmlsZV9pbmRleClcXG4gICAgICAgIHJldHVybiBsYXp5MShpZCtcXFwiI1xcXCIrbWV0YS5taW1lX3R5cGUrXFxcIiNcXFwiK1xcXCLliKDpmaRcXFwiKVxcbiAgICAgICAgXFxuICAgICAgICAvKlxcbiAgICAgICAgbGV0IGhlYWRlcjEgPSB7XFxuICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiQW5kcm9pZFxcXCIsXFxuICAgICAgICAgICAgXFxcIngtZGV2aWNlLWlkXFxcIjogXFxcImI3MWE5MjNlYjBlMjIzOTg0MjU5OWEzYzAxNmI0MDk4XFxcIixcXG4gICAgICAgICAgICBcXFwieC1ndWlkXFxcIjogXFxcImM5YjA3NmE0NDY1MTc5NjlkZmY2MzhjZDM3ZmE5ZmYxXFxcIlxcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IHVybDEgPSBcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvbGluaz9nY2lkPVxcXCIrbWV0YS5oYXNoK1xcXCImZmlsZV9uYW1lPVxcXCIrbmFtZStcXFwiJmZpbGVfc2l6ZT1cXFwiK2ZpbGVfc2l6ZStcXFwiJnBhcmFtc1tjaGVja19wcml2aWxlZ2VdPUZMVUVOVF9QTEFZX1RJTUVTX0xJTUlUJnBhcmFtc1t1cmxdPVxcXCIrZ2V0TXlWYXIoXFxcInNlYXJjaF93b3JkXFxcIilcXG4gICAgICAgIGxldCBodG1sMVxcbiAgICAgICAgaHRtbDEgPSByZXExKHVybDEsIGhlYWRlcjEpOyAvL2xvZyhodG1sMSlcXG4gICAgICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFwi6aqM6K+B56CB5peg5pWIXFxcIikgaHRtbDEgPSByZXExKHVybDEsIGhlYWRlcjEpOyAvL2xvZyhodG1sMSlcXG4gICAgICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbikgcmV0dXJuIHRvYXN0KGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uKVxcbiAgICAgICAgbGV0IGlkID0geXVuYm8obmFtZSwgaHRtbDEubGluay51cmwsIGZpbGVfaW5kZXgpXFxuICAgICAgICByZXR1cm4gbGF6eTEoaWQrXFxcIiNcXFwiK21ldGEubWltZV90eXBlK1xcXCIjXFxcIitcXFwi5Yig6ZmkXFxcIilcXG4gICAgICAgICovXFxuICAgICAgICBcXG4gICAgfSwgaW5wdXQuc3BsaXQoXFxcIiNcXFwiKSlcXG59XFxuXFxuLy8g6ZW/5oyJ5oyJ6ZKuXFxuZnVuY3Rpb24gbG9uZ2NsaWNrKGl0ZW0pIHtcXG4gICAgaWYgKE1ZX1VSTCA9PSBcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcIikge1xcbiAgICBsZXQgYW5uaXUxID0ge1xcbiAgICAgICAgdGl0bGU6IFxcXCLliKDpmaRcXFwiLFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKGlkKSA9PiB7XFxuICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKS5zaGFuY2h1KGlkKVxcbiAgICAgICAgICAgIHJldHVybiB0b2FzdChcXFwi5bey5Yig6ZmkXFxcIilcXG4gICAgICAgIH0sIGl0ZW0uaWQpXFxuICAgIH1cXG4gICAgcmV0dXJuIFthbm5pdTFdXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICByZXR1cm4gXFxcIlxcXCJcXG4gICAgfVxcbn1cXG5cXG4vLyDnm5jlhoVcXG5mdW5jdGlvbiB5dW5wYW4xKGQpIHtcXG4gICAgdHJ5e1xcbiAgICAgICAgYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAkLnRvU3RyaW5nKCgpPT57XFxuICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwibmV4dF9wYWdlX3Rva2VuXFxcIilcXG4gICAgICAgIH0pKVxcbiAgICAgICAgbGV0IGlkID0gTVlfVVJMLnNwbGl0KFxcXCIjXFxcIilbMV1cXG4gICAgICAgIGlmIChnZXRNeVZhcihcXFwibmV4dF9wYWdlX3Rva2VuXFxcIiwgXFxcIjBcXFwiKSAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgIGxldCB1cmwxID0gJ2h0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL2ZpbGVzP3BhcmVudF9pZD0nK2lkKycmcGFnZV90b2tlbj0nK2dldE15VmFyKFxcXCJuZXh0X3BhZ2VfdG9rZW5cXFwiLCBcXFwiXFxcIikrJyZmaWx0ZXJzPXtcXFwidHJhc2hlZFxcXCI6e1xcXCJlcVxcXCI6ZmFsc2V9fSZ3aXRoPXB1YmxpY19zaGFyZV90YWcmd2l0aD10YXNrJndpdGhfYXVkaXQ9dHJ1ZSZ0aHVtYm5haWxfc2l6ZT1TSVpFX0xBUkdFJ1xcbiAgICAgICAgICAgIGxldCBodG1sMVxcbiAgICAgICAgICAgIGh0bWwxID0gcmVxMSh1cmwxLCBcXFwidW5kZWZpbmVkXFxcIilcXG4gICAgICAgICAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcIumqjOivgeeggeaXoOaViFxcXCIpIGh0bWwxID0gcmVxMSh1cmwxLCBcXFwidW5kZWZpbmVkXFxcIilcXG4gICAgICAgICAgICBpZiAoaHRtbDEubmV4dF9wYWdlX3Rva2VuICE9IFxcXCJcXFwiKSBwdXRNeVZhcihcXFwibmV4dF9wYWdlX3Rva2VuXFxcIiwgaHRtbDEubmV4dF9wYWdlX3Rva2VuKVxcbiAgICAgICAgICAgIGxldCBsaXN0MSA9IGh0bWwxLmZpbGVzXFxuICAgICAgICAgICAgbGlzdDEuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBieXRlc1RvU2l6ZShpdGVtLnNpemUpLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBpdGVtLmtpbmQuaW5jbHVkZXMoXFxcImZvbGRlclxcXCIpID8gXFxcImhpa2VyOi8vaW1hZ2VzL2ljb25fZm9sZGVyM1xcXCIgOiBpdGVtLmljb25fbGluayxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogbGF6eTEoaXRlbS5pZCtcXFwiI1xcXCIraXRlbS5taW1lX3R5cGUpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IGxvbmdjbGljayhpdGVtKVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH1jYXRjaChlKXtcXG4gICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxuICAgIH1cXG59XFxuXFxuLy8g55uY5aSWXFxuZnVuY3Rpb24geXVucGFuMihkKSB7XFxuICAgIHRyeXtcXG4gICAgICAgIGxldCB1cmwxXFxuICAgICAgICBsZXQgaHRtbDFcXG4gICAgICAgIGxldCBsaXN0MVxcbiAgICAgICAgbGV0IGlkID0gTVlfVVJMLnNwbGl0KFxcXCIjXFxcIilbMV1cXG4gICAgICAgIGFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKT0+e1xcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcIm5leHRfcGFnZV90b2tlblxcXCIpXFxuICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwiYW5jZXN0b3JfaWRzXFxcIilcXG4gICAgICAgIH0pKVxcbiAgICAgICAgaWYgKGdldE15VmFyKFxcXCJuZXh0X3BhZ2VfdG9rZW5cXFwiLCBcXFwiMFxcXCIpICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgdXJsMSA9ICdodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9zaGFyZS9kZXRhaWw/c2hhcmVfaWQ9JytnZXRNeVZhcihcXFwic2hhcmVfaWRcXFwiKSsnJnBhcmVudF9pZD0nK2lkKycmcGFzc19jb2RlX3Rva2VuPScrZW5jb2RlVVJJQ29tcG9uZW50KGdldE15VmFyKFxcXCJwYXNzX2NvZGVfdG9rZW5cXFwiKSkrJyZ0aHVtYm5haWxfc2l6ZT1TSVpFX1NNQUxMJnBhZ2VfdG9rZW49JytnZXRNeVZhcihcXFwibmV4dF9wYWdlX3Rva2VuXFxcIiwgXFxcIlxcXCIpXFxuICAgICAgICAgICAgaHRtbDEgPSByZXExKHVybDEsIFxcXCJ1bmRlZmluZWRcXFwiKVxcbiAgICAgICAgICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFwi6aqM6K+B56CB5peg5pWIXFxcIikgaHRtbDEgPSByZXExKHVybDEsIFxcXCJ1bmRlZmluZWRcXFwiKVxcbiAgICAgICAgICAgIGlmIChodG1sMS5uZXh0X3BhZ2VfdG9rZW4gIT0gXFxcIlxcXCIpIHB1dE15VmFyKFxcXCJuZXh0X3BhZ2VfdG9rZW5cXFwiLCBodG1sMS5uZXh0X3BhZ2VfdG9rZW4pXFxuICAgICAgICAgICAgbGlzdDEgPSBodG1sMS5maWxlczsgLy9sb2cobGlzdDEpXFxuICAgICAgICAgICAgbGlzdDEuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBieXRlc1RvU2l6ZShpdGVtLnNpemUpLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBpdGVtLmtpbmQuaW5jbHVkZXMoXFxcImZvbGRlclxcXCIpID8gXFxcImhpa2VyOi8vaW1hZ2VzL2ljb25fZm9sZGVyM1xcXCIgOiBpdGVtLmljb25fbGluayxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogbGF6eTIoaXRlbS5pZCtcXFwiI1xcXCIraXRlbS5taW1lX3R5cGUpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0ubmFtZVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH1jYXRjaChlKXtcXG4gICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxuICAgIH1cXG59XFxuXFxuLy8g56OB5YqbXFxuZnVuY3Rpb24geXVucGFuMyhkKSB7XFxuICAgIHRyeXtcXG4gICAgICAgIGxldCB1cmwxXFxuICAgICAgICBsZXQgaHRtbDFcXG4gICAgICAgIGxldCBsaXN0MVxcbiAgICAgICAgbGV0IGlkID0gTVlfVVJMLnNwbGl0KFxcXCIjXFxcIilbMV1cXG4gICAgICAgIGxldCBib2R5MSA9IEpTT04uc3RyaW5naWZ5KHtcXFwidXJsc1xcXCI6aWR9KVxcbiAgICAgICAgaHRtbDEgPSByZXEyKFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9yZXNvdXJjZS9saXN0XFxcIiwgXFxcInVuZGVmaW5lZFxcXCIsIGJvZHkxKS5saXN0LnJlc291cmNlczsgLy9sb2coaHRtbDEpXFxuICAgICAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcIumqjOivgeeggeaXoOaViFxcXCIpIGh0bWwxID0gcmVxMihcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvcmVzb3VyY2UvbGlzdFxcXCIsIFxcXCJ1bmRlZmluZWRcXFwiLCBib2R5MSkubGlzdC5yZXNvdXJjZXM7IC8vbG9nKGh0bWwxKVxcbiAgICAgICAgaWYgKGh0bWwxWzBdLmRpcikge1xcbiAgICAgICAgICAgIGxpc3QxID0gaHRtbDFbMF0uZGlyLnJlc291cmNlczsgLy9sb2cobGlzdDEpXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGxpc3QxID0gaHRtbDE7IC8vbG9nKGxpc3QxKVxcbiAgICAgICAgfVxcbiAgICAgICAgc2V0UGFnZVRpdGxlKGh0bWwxWzBdLm5hbWUpXFxuICAgICAgICBsaXN0MS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGJ5dGVzVG9TaXplKGl0ZW0uc2l6ZSksXFxuICAgICAgICAgICAgICAgIGltZzogaXRlbS5tZXRhLmljb24sXFxuICAgICAgICAgICAgICAgIHVybDogbGF6eTMoaXRlbS5uYW1lK1xcXCIjXFxcIitKU09OLnN0cmluZ2lmeShpdGVtLm1ldGEpK1xcXCIjXFxcIitKU09OLnN0cmluZ2lmeShpdGVtLmRpcikrXFxcIiNcXFwiK2l0ZW0uZmlsZV9zaXplK1xcXCIjXFxcIitpdGVtLmZpbGVfaW5kZXgpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0ubmFtZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH1jYXRjaChlKXtcXG4gICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxuICAgIH1cXG59XFxuXFxuLy8g5pCc57Si55WM6Z2iXFxuZnVuY3Rpb24gcnVsZTEoZCkge1xcbiAgICB0cnl7XFxuICAgICAgICBjb25zdCB7XFxuICAgICAgICAgICAgcmVxMSxcXG4gICAgICAgICAgICByZXEyLFxcbiAgICAgICAgICAgIGxhenkyLFxcbiAgICAgICAgICAgIGxhenkzXFxuICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKVxcbiAgICAgICAgbGV0IHVybDFcXG4gICAgICAgIGxldCB1cmwyXFxuICAgICAgICBsZXQgaHRtbDFcXG4gICAgICAgIGxldCBsaXN0MVxcbiAgICAgICAgaWYgKE1ZX1VSTC5pbmNsdWRlcyhcXFwieHVubGVpXFxcIikpIHtcXG4gICAgICAgIHVybDIgPSBNWV9VUkwuc3BsaXQoXFxcIiNcXFwiKVsxXS5zcGxpdChcXFwiL3MvXFxcIilbMV0uc3BsaXQoXFxcIj9wd2Q9XFxcIik7IGxvZyh1cmwyKVxcbiAgICAgICAgcHV0TXlWYXIoXFxcInNoYXJlX2lkXFxcIiwgdXJsMlswXSlcXG4gICAgICAgIHVybDEgPSAnaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvc2hhcmU/c2hhcmVfaWQ9Jyt1cmwyWzBdKycmcGFzc19jb2RlPScrdXJsMlsxXSsnJnRodW1ibmFpbF9zaXplPVNJWkVfU01BTEwmcGFyYW1zPXtcXFwib3JpZ2luXFxcIjpcXFwiXFxcIn0nXFxuICAgICAgICBodG1sMSA9IHJlcTEodXJsMSwgXFxcInVuZGVmaW5lZFxcXCIpXFxuICAgICAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcIumqjOivgeeggeaXoOaViFxcXCIpIGh0bWwxID0gcmVxMSh1cmwxLCBcXFwidW5kZWZpbmVkXFxcIilcXG4gICAgICAgIGlmIChodG1sMS5wYXNzX2NvZGVfdG9rZW4gIT0gXFxcIlxcXCIpIHB1dE15VmFyKFxcXCJwYXNzX2NvZGVfdG9rZW5cXFwiLCBodG1sMS5wYXNzX2NvZGVfdG9rZW4pXFxuICAgICAgICBpZiAoaHRtbDEubmV4dF9wYWdlX3Rva2VuICE9IFxcXCJcXFwiKSBwdXRNeVZhcihcXFwibmV4dF9wYWdlX3Rva2VuXFxcIiwgaHRtbDEubmV4dF9wYWdlX3Rva2VuKVxcbiAgICAgICAgc2V0UGFnZVRpdGxlKGh0bWwxLnRpdGxlKVxcbiAgICAgICAgbGlzdDEgPSBodG1sMS5maWxlczsgLy9sb2cobGlzdDEpXFxuICAgICAgICBsaXN0MS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGJ5dGVzVG9TaXplKGl0ZW0uc2l6ZSksXFxuICAgICAgICAgICAgICAgIGltZzogaXRlbS5raW5kLmluY2x1ZGVzKFxcXCJmb2xkZXJcXFwiKSA/IFxcXCJoaWtlcjovL2ltYWdlcy9pY29uX2ZvbGRlcjNcXFwiIDogaXRlbS5pY29uX2xpbmssXFxuICAgICAgICAgICAgICAgIHVybDogbGF6eTIoaXRlbS5pZCtcXFwiI1xcXCIraXRlbS5taW1lX3R5cGUpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0ubmFtZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgdXJsMiA9IE1ZX1VSTC5zcGxpdChcXFwiI1xcXCIpWzFdOyBsb2codXJsMilcXG4gICAgICAgIGxldCBib2R5MSA9IEpTT04uc3RyaW5naWZ5KHtcXFwidXJsc1xcXCI6dXJsMn0pXFxuICAgICAgICBodG1sMSA9IHJlcTIoXFxcImh0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL3Jlc291cmNlL2xpc3RcXFwiLCBcXFwidW5kZWZpbmVkXFxcIiwgYm9keTEpOyAvL2xvZyhodG1sMSlcXG4gICAgICAgIGlmIChodG1sMS5lcnJvciA9PSBcXFwiY2FwdGNoYV9pbnZhbGlkXFxcIikgaHRtbDEgPSByZXEyKFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9yZXNvdXJjZS9saXN0XFxcIiwgXFxcInVuZGVmaW5lZFxcXCIsIGJvZHkxKTsgLy9sb2coaHRtbDEpXFxuICAgICAgICBpZiAoaHRtbDEubGlzdC5yZXNvdXJjZXNbMF0uZGlyKSB7XFxuICAgICAgICAgICAgbGlzdDEgPSBodG1sMS5saXN0LnJlc291cmNlc1swXS5kaXIucmVzb3VyY2VzOyAvL2xvZyhsaXN0MSlcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgbGlzdDEgPSBodG1sMS5saXN0LnJlc291cmNlczsgLy9sb2cobGlzdDEpXFxuICAgICAgICB9XFxuICAgICAgICBzZXRQYWdlVGl0bGUoaHRtbDEubGlzdC5yZXNvdXJjZXNbMF0ubmFtZSlcXG4gICAgICAgIGxpc3QxLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogYnl0ZXNUb1NpemUoaXRlbS5maWxlX3NpemUpLFxcbiAgICAgICAgICAgICAgICBpbWc6IGl0ZW0ubWV0YS5pY29uLFxcbiAgICAgICAgICAgICAgICB1cmw6IGxhenkzKGl0ZW0ubmFtZStcXFwiI1xcXCIrSlNPTi5zdHJpbmdpZnkoaXRlbS5tZXRhKStcXFwiI1xcXCIrSlNPTi5zdHJpbmdpZnkoaXRlbS5kaXIpK1xcXCIjXFxcIitpdGVtLmZpbGVfc2l6ZStcXFwiI1xcXCIraXRlbS5maWxlX2luZGV4KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBpdGVtLm5hbWVcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9Y2F0Y2goZSl7XFxuICAgICAgICBsb2coZS5tZXNzYWdlKVxcbiAgICB9XFxufVxcblxcbi8vIOmTvuaOpeWkhOeQhlxcbmZ1bmN0aW9uIHJ1bGUyKGlucHV0KSB7XFxuICAgIGxldCB1cmwxXFxuICAgIGlmIChpbnB1dC5pbmNsdWRlcyhcXFwieHVubGVpXFxcIikpIHtcXG4gICAgICAgIGlmIChpbnB1dC5pbmNsdWRlcyhcXFwiPVxcXCIpKSB7XFxuICAgICAgICAgICAgdXJsMSA9IFxcXCJodHRwczovL3Bhbi54dW5sZWkuY29tL3MvXFxcIitpbnB1dC5tYXRjaCgvW0EtWmEtejAtOV8tXXsyNn0vKVswXStcXFwiP3B3ZD1cXFwiK2lucHV0Lm1hdGNoKC89KFxcXFx3ezR9KS8pWzFdXFxuICAgICAgICB9XFxuICAgICAgICBpZiAoaW5wdXQuaW5jbHVkZXMoXFxcIuaPkOWPlueggVxcXCIpKSB7XFxuICAgICAgICAgICAgdXJsMSA9IFxcXCJodHRwczovL3Bhbi54dW5sZWkuY29tL3MvXFxcIitpbnB1dC5tYXRjaCgvW0EtWmEtejAtOV8tXXsyNn0vKVswXStcXFwiP3B3ZD1cXFwiK2lucHV0Lm1hdGNoKC/mj5Dlj5bnoIEuKihcXFxcd3s0fSkvKVsxXVxcbiAgICAgICAgfVxcbiAgICB9IGVsc2UgaWYgKC8obWFnbmV0OnxlZDJrOnxidDp8ZnRwOnxcXFxcLnRvcnJlbnQpLy50ZXN0KGlucHV0KSkge1xcbiAgICAgICAgdXJsMSA9IGlucHV0XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICB1cmwxID0gXFxcIlxcXCJcXG4gICAgfVxcbiAgICBpZiAodXJsMSAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgcHV0TXlWYXIoXFxcInNlYXJjaF93b3JkXFxcIiwgdXJsMSlcXG4gICAgICAgIHJldHVybiAkKFxcXCJoaWtlcjovL2VtcHR5I1xcXCIrdXJsMStcXFwiI25vTG9hZGluZyNcXFwiKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICBjb25zdCBkID0gW11cXG4gICAgICAgICAgICAkLnJlcXVpcmUoXFxcImhhbnNodVxcXCIpLnJ1bGUxKGQpXFxuICAgICAgICAgICAgc2V0UmVzdWx0KGQpXFxuICAgICAgICB9KVxcbiAgICB9XFxufVxcblxcbi8vIOi9rOWtmOaWh+S7tuWIsOebmOWGhVxcbmZ1bmN0aW9uIHpodWFuY3VuKGlkKSB7XFxuICAgIGxldCBhbmNlc3Rvcl9pZHMgPSBnZXRNeVZhcihcXFwiYW5jZXN0b3JfaWRzXFxcIikgPT0gXFxcIlxcXCIgPyBbXSA6IFtnZXRNeVZhcihcXFwiYW5jZXN0b3JfaWRzXFxcIildXFxuICAgIGxldCB1cmwxID0gXFxcImh0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL3NoYXJlL3Jlc3RvcmVcXFwiXFxuICAgIGxldCBib2R5MSA9IEpTT04uc3RyaW5naWZ5KHtcXFwicGFyZW50X2lkXFxcIjpcXFwiXFxcIixcXFwic3BlY2lmeV9wYXJlbnRfaWRcXFwiOnRydWUsXFxcInNoYXJlX2lkXFxcIjpnZXRNeVZhcihcXFwic2hhcmVfaWRcXFwiKSxcXFwicGFzc19jb2RlX3Rva2VuXFxcIjpnZXRNeVZhcihcXFwicGFzc19jb2RlX3Rva2VuXFxcIiksXFxcImZpbGVfaWRzXFxcIjpbaWRdLFxcXCJhbmNlc3Rvcl9pZHNcXFwiOmFuY2VzdG9yX2lkc30pXFxuICAgIHJlcTIodXJsMSwgXFxcInVuZGVmaW5lZFxcXCIsIGJvZHkxKVxcbiAgICBqYXZhLmxhbmcuVGhyZWFkLnNsZWVwKDEwMDApXFxuICAgIGxldCBodG1sMlxcbiAgICBodG1sMiA9IHJlcTEoJ2h0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL2ZpbGVzP3BhcmVudF9pZD0mcGFnZV90b2tlbj0mZmlsdGVycz17XFxcInRyYXNoZWRcXFwiOntcXFwiZXFcXFwiOmZhbHNlfX0md2l0aD1wdWJsaWNfc2hhcmVfdGFnJndpdGg9dGFzayZ3aXRoX2F1ZGl0PXRydWUmdGh1bWJuYWlsX3NpemU9U0laRV9MQVJHRScsIFxcXCJ1bmRlZmluZWRcXFwiKS5maWxlc1swXTsgLy9sb2coaHRtbDIpXFxuICAgIGlmIChodG1sMi5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFwi6aqM6K+B56CB5peg5pWIXFxcIikgaHRtbDIgPSByZXExKCdodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9maWxlcz9wYXJlbnRfaWQ9JnBhZ2VfdG9rZW49JmZpbHRlcnM9e1xcXCJ0cmFzaGVkXFxcIjp7XFxcImVxXFxcIjpmYWxzZX19JndpdGg9cHVibGljX3NoYXJlX3RhZyZ3aXRoPXRhc2smd2l0aF9hdWRpdD10cnVlJnRodW1ibmFpbF9zaXplPVNJWkVfTEFSR0UnLCBcXFwidW5kZWZpbmVkXFxcIikuZmlsZXNbMF07IC8vbG9nKGh0bWwyKVxcbiAgICByZXR1cm4gaHRtbDIuaWQrXFxcIiNcXFwiKyhodG1sMi5taW1lX3R5cGV8fFxcXCJ1bmRlZmluZWRcXFwiKStcXFwiI1xcXCIrXFxcIuWIoOmZpFxcXCJcXG59XFxuXFxuLy8g5Yig6Zmk55uY5YaF5paH5Lu2XFxuZnVuY3Rpb24gc2hhbmNodShpZCkge1xcbiAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcImlkc1xcXCI6W2lkXSxcXFwic3BhY2VcXFwiOlxcXCJcXFwifSlcXG4gICAgcmVxMihcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvZmlsZXM6YmF0Y2hEZWxldGVcXFwiLCBcXFwidW5kZWZpbmVkXFxcIiwgYm9keTEpXFxufVxcblxcbi8vYnkgTG95RGdJayDkvaxcXG5mdW5jdGlvbiBieXRlc1RvU2l6ZShzaXplKSB7XFxuICAgIGlmIChzaXplID09PSBcXFwiMFxcXCIpIHtcXG4gICAgICAgIHJldHVybiAnJztcXG4gICAgfVxcbiAgICBjb25zdCB1bml0cyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xcbiAgICBsZXQgaSA9IDA7XFxuICAgIHdoaWxlIChzaXplID49IDEwMjQpIHtcXG4gICAgICAgIHNpemUgLz0gMTAyNDtcXG4gICAgICAgIGkrKztcXG4gICAgfVxcbiAgICBzaXplID0gaSA/IE51bWJlcihzaXplLnRvRml4ZWQoMikpIDogc2l6ZTtcXG4gICAgcmV0dXJuIGAke3NpemV9ICR7dW5pdHNbaV19YDtcXG59XFxuXFxuJC5leHBvcnRzID0ge1xcbiAgICByZXExLFxcbiAgICByZXEyLFxcbiAgICBzZW5kc21zLFxcbiAgICBzbXNsb2dpbixcXG4gICAgbG9naW4sXFxuICAgIHNpZ25pbixcXG4gICAgYWNjZXNzX3Rva2VuLFxcbiAgICBjYXB0Y2hhLFxcbiAgICBhY3Rpdml0eSxcXG4gICAgeXVuYm8sXFxuICAgIHl1bnBhbjEsXFxuICAgIHl1bnBhbjIsXFxuICAgIHl1bnBhbjMsXFxuICAgIGxhenkxLFxcbiAgICBsYXp5MixcXG4gICAgbGF6eTMsXFxuICAgIHJ1bGUxLFxcbiAgICBydWxlMixcXG4gICAgemh1YW5jdW4sXFxuICAgIHNoYW5jaHUsXFxuICAgIGJ5dGVzVG9TaXplXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi55m75b2V55WM6Z2iXCIsXCJwYXRoXCI6XCJkZW5nbHVcIixcInJ1bGVcIjpcImpzOlxcbmNvbnN0IGQgPSBbXVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi5omL5py66aqM6K+B55m75b2VXFxcIixcXG4gICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgfVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCJcXFwiLFxcbiAgICBkZXNjOiBcXFwi6K+36L6T5YWl5omL5py65Y+3XFxcIixcXG4gICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgIG9uQ2hhbmdlOiBcXFwic2V0SXRlbSgnbW9iaWxlJyxpbnB1dClcXFwiXFxuICAgIH1cXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi4oCc4oCc6I635Y+W6aqM6K+B56CB4oCc4oCcXFxcIixcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgc2V0SXRlbShcXFwibW9iaWxlXFxcIiwgZ2V0SXRlbSgnbW9iaWxlJykpXFxuICAgICAgICAkLnJlcXVpcmUoXFxcImhhbnNodVxcXCIpLnNlbmRzbXMoKVxcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICB9XFxufSlcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIlxcXCIsXFxuICAgIGRlc2M6IFxcXCLor7fovpPlhaXpqozor4HnoIFcXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRNeVZhcignc21zQ29kZScsaW5wdXQpXFxcIlxcbiAgICB9XFxufSlcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuKAnOKAnOehruiupOKAnOKAnFxcXCIsXFxuICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIHB1dE15VmFyKFxcXCJzbXNDb2RlXFxcIiwgZ2V0TXlWYXIoJ3Ntc0NvZGUnKSlcXG4gICAgICAgICQucmVxdWlyZShcXFwiaGFuc2h1XFxcIikuc21zbG9naW4oKVxcbiAgICAgICAgYmFjayh0cnVlKVxcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi6LSm5Y+35a+G56CB55m75b2VXFxcIixcXG4gICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgfVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCJcXFwiLFxcbiAgICBkZXNjOiBcXFwi6K+36L6T5YWl5omL5py65Y+3L+mCrueusS/otKblj7dcXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgb25DaGFuZ2U6IFxcXCJzZXRJdGVtKCdtb2JpbGUnLGlucHV0KVxcXCJcXG4gICAgfVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCJcXFwiLFxcbiAgICBkZXNjOiBcXFwi6K+36L6T5YWl5a+G56CBXFxcIixcXG4gICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgIG9uQ2hhbmdlOiBcXFwic2V0SXRlbSgncGFzc1dvcmQnLGlucHV0KVxcXCJcXG4gICAgfVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLigJzigJznoa7orqTigJzigJxcXFwiLFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICBzZXRJdGVtKFxcXCJtb2JpbGVcXFwiLCBnZXRJdGVtKCdtb2JpbGUnKSlcXG4gICAgICAgIHNldEl0ZW0oXFxcInBhc3NXb3JkXFxcIiwgZ2V0SXRlbSgncGFzc1dvcmQnKSlcXG4gICAgICAgICQucmVxdWlyZShcXFwiaGFuc2h1XFxcIikubG9naW4oKVxcbiAgICAgICAgYmFjayh0cnVlKVxcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICB9XFxufSlcXG5kLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzigJ3igJ08c3Ryb25nPuS9v+eUqOWJjemhu+efpTwvc3Ryb25nPlxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgfVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMS4g5pys5bCP56iL5bqP5omA5pyJ5Luj56CB5YWo6YOo5byA5rqQ77yM5LiU5pys6KeE5YiZ5Li65a2m5Lmg55uu55qE77yM6K+35LqO5a+85YWlMjTlsI/ml7blhoXliKDpmaTvvIHvvIHvvIE8YnI+Mi4g6KeG6aKR5paH5Lu25LiN5byA5p6B6YCf5pKt572R6YCfM00vc++8jOW8gOaegemAn+aSreWImTMwTS9zICjlj6/og73kuZ/mlK/mjIHmkq3mlL7pn7PpopHvvIzmn6XnnIvlm77niYflkoznm7TmjqXkuIvovb3lhbblroPnsbvlnovnmoTmlofku7Yp77yB77yB77yBPGJyPjMuIOWwj+eoi+W6j+S7hemmlumhteeahOaWh+S7tuaUr+aMgemAmui/h+mVv+aMieWIoOmZpDxicj40LiDmnKznqIvluo/kuLrlhbblroPlsI/nqIvluo/mj5DkvpvkuobosIPnlKjmjqXlj6PvvIzosIPnlKjkvovlrZDor7flj4LogIMo5a2Q6aG16Z2iLeiwg+eUqOeVjOmdoinms6jph4rpg6jliIbnmoTku6PnoIFcXFwiLFxcbiAgICAgICAgXFxcImNvbF90eXBlXFxcIjogXFxcInJpY2hfdGV4dFxcXCJcXG59KVxcbnNldFJlc3VsdChkKVxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6LCD55So6aG16Z2iXCIsXCJwYXRoXCI6XCJkaWFveW9uZ1wiLFwicnVsZVwiOlwianM6XFxuXFxuLypcXG7osIPnlKjkvovlrZBcXG4qL1xcblxcbi8qXFxuXFxuLy8g6L+F6Zu36ZO+5o6l5L6L5a2Q77yaXFxubGV0IHVybDEgPSBcXFwiaHR0cHM6Ly9wYW4ueHVubGVpLmNvbS9zL1ZPMk9NWG9SR1RYUTRnNmh5MXlIaTFWWEExP3B3ZD1lNmNqXFxcIlxcblxcbi8vIOejgeWKm+mTvuaOpeS+i+WtkO+8mlxcbmxldCB1cmwxID0gXFxcIm1hZ25ldDo/eHQ9dXJuOmJ0aWg6Njk5OWU2ZDhjYjc0ZDUxM2M5ZjNiZjQzODQwZmE2ODY3NTcxZmEzY1xcXCJcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIui/hembt+iwg+eUqOa1i+ivlVxcXCIsXFxuICAgIHVybDogJCh1cmwxKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICBpZiAoLyh4dW5sZWl8bWFnbmV0OnxlZDJrOnxidDp8ZnRwOnxcXFxcLnRvcnJlbnQpLy50ZXN0KGlucHV0KSkge1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL2RpYW95b25nP3J1bGU96L+F6Zu3JnBhZ2U9ZnlwYWdlI1xcXCIgKyBpbnB1dFxcbiAgICAgICAgfVxcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbn0pXFxuXFxuKi9cXG5cXG5jb25zdCB7XFxuICAgIHJlcTEsXFxuICAgIHJ1bGUxLFxcbiAgICBieXRlc1RvU2l6ZVxcbn0gPSAkLnJlcXVpcmUoXFxcImhhbnNodVxcXCIpXFxuY29uc3QgZCA9IFtdO1xcbmxldCBkZXNjMTtcXG5cXG5pZiAoZ2V0SXRlbShcXFwibW9iaWxlXFxcIikgIT0gXFxcInVuZGVmaW5lZFxcXCIpIHtcXG4gICAgbGV0IGh0bWwxO1xcbiAgICBodG1sMSA9IHJlcTEoXFxcImh0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL2Fib3V0P3dpdGhfcXVvdGFzPUNSRUFURV9PRkZMSU5FX1RBU0tfTElNSVRcXFwiLCBcXFwidW5kZWZpbmVkXFxcIik7XFxuICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFwi5biQ5Y+36K6k6K+B5aSx6LSl77yM6K+36YeN5paw55m75b2VXFxcIikgaHRtbDEgPSByZXExKFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9hYm91dD93aXRoX3F1b3Rhcz1DUkVBVEVfT0ZGTElORV9UQVNLX0xJTUlUXFxcIiwgXFxcInVuZGVmaW5lZFxcXCIpO1xcbiAgICBpZiAoIWh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uKSBkZXNjMSA9IFxcXCLlt7Lkvb/nlKhcXFwiK2J5dGVzVG9TaXplKGh0bWwxLnF1b3RhLnVzYWdlKStcXFwiL1xcXCIrXFxcIuWFsVxcXCIrYnl0ZXNUb1NpemUoaHRtbDEucXVvdGEubGltaXQpO1xcbn1cXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIui0puWPt+euoeeQhlxcXCIsXFxuICAgIGRlc2M6IGRlc2MxIHx8IFxcXCLmnKrnmbvlvZVcXFwiLFxcbiAgICBpbWc6IFxcXCJodHRwczovL2ljZG4uYmlubXQuY2MvMjUwNS82ODE5NmQxYzhlOTkzLnBuZ1xcXCIsXFxuICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIHJldHVybiAkKFtcXFwi55m75b2VXFxcIiwgXFxcIumAgOWHulxcXCJdKS5zZWxlY3QoKCkgPT4ge1xcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PT0gXFxcIueZu+W9lVxcXCIpIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL2RlbmdsdSNub1JlY29yZEhpc3RvcnkjI25vSGlzdG9yeSNcXFwiO1xcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PT0gXFxcIumAgOWHulxcXCIpIHtcXG4gICAgICAgICAgICAgICAgbGV0IGtleXMgPSBbXFxcIm1vYmlsZVxcXCIsIFxcXCJwYXNzV29yZFxcXCIsIFxcXCJzZXNzaW9uSURcXFwiLCBcXFwidXNlcl9pZFxcXCIsIFxcXCJhdXRob3JpemF0aW9uXFxcIiwgXFxcInJlZnJlc2hfdG9rZW5cXFwiXTtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaXQgb2Yga2V5cykge1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKGl0KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxufSk7XFxuXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbn0pXFxuXFxucnVsZTEoZCk7XFxuXFxuc2V0UmVzdWx0KGQpO1wifV0sXCJwYXJhbXNcIjpcIntcXFwiYmxvY2tSdWxlc1xcXCI6W1xcXCIuZ2lmXFxcIixcXFwiLmpwZWdcXFwiLFxcXCIuanBnXFxcIixcXFwiLmljb1xcXCIsXFxcIi5wbmdcXFwiLFxcXCJobS5iYWlkdS5jb21cXFwiLFxcXCIvYWRzLyouanNcXFwiLFxcXCJjbnp6LmNvbVxcXCJdLFxcXCJjYWNoZU0zdThcXFwiOmZhbHNlLFxcXCJpZFxcXCI6XFxcIm1hZ25ldDo/eHQ9dXJuOmJ0aWg6NWU4ODc3Yzc3OTA5M2ZhOGUxMGJhMjQwZDU5M2EzMzkyMjFiMGM3NVxcXCIsXFxcImpzXFxcIjpcXFwiKFxcXFxuKOeCueaSrSkgPT4ge1xcXFxuICAgIGlmICjngrnmkq0gIT0gXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIiAmJiDngrnmkq0gIT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICBldmFsKOeCueaSrS5yZXBsYWNlKC9cXFxcXFxcXCcvZywgXFxcXFxcXCJcXFxcXFxcIikpO1xcXFxuICAgIH1cXFxcbn1cXFxcbikodW5kZWZpbmVkKVxcXCIsXFxcImpzTG9hZGluZ0luamVjdFxcXCI6dHJ1ZSxcXFwibGluZVZpc2libGVcXFwiOmZhbHNlLFxcXCJ2aWRlb0V4Y2x1ZGVSdWxlc1xcXCI6W1xcXCIuaHRtbFxcXCIsXFxcIlxcXFxuKGdldCwgdGl0LCB1cmwpID0+IHtcXFxcbiAgICByZXR1cm4gJChcXFxcXFxcInU3ODZldThiYTR1NTIyMHU5NjY0ICBcXFxcXFxcIiArIHRpdCArIFxcXFxcXFwiIHVmZjFmXFxcXFxcXCIpLmNvbmZpcm0oKGdldCwgZmlsZSwgdGl0LCB1cmwpID0+IHtcXFxcbiAgICAgICAgbGV0IGxpc3QgPSBKU09OLnBhcnNlKHJlYWRGaWxlKGZpbGUpKTtcXFxcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbGlzdFtnZXRdLmZpbHRlcihpdGVtID0+IHtcXFxcbiAgICAgICAgICAgIHJldHVybiAhKGl0ZW0udXJsID09IHVybCk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgKTtcXFxcbiAgICAgICAgbGlzdFtnZXRdID0gcmVzdWx0O1xcXFxuICAgICAgICBzYXZlRmlsZShmaWxlLCBKU09OLnN0cmluZ2lmeShsaXN0KSk7XFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly91NWRmMnU1MjIwdTk2NjQ6IFxcXFxcXFwiICsgdGl0O1xcXFxuICAgIH1cXFxcbiAgICAsIGdldCwgZmlsZSwgdGl0LCB1cmwpO1xcXFxufVxcXFxuXFxcIl19XCIsXCJzYXZlZFwiOmZhbHNlLFwidGl0bGVcIjpcIui/hembt1wiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImhpa2VyOi8vcGFnZS9kaWFveW9uZz9ydWxlPei/hembtyZwYWdlPWZ5cGFnZSNtYWduZXQ6P3h0PXVybjpidGloOjVlODg3N2M3NzkwOTNmYThlMTBiYTI0MGQ1OTNhMzM5MjIxYjBjNzVcIixcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJmaW5kX3J1bGVcIjpcImpzOlxcblxcbi8qXFxu6LCD55So5L6L5a2QXFxuKi9cXG5cXG4vKlxcblxcbi8vIOi/hembt+mTvuaOpeS+i+WtkO+8mlxcbmxldCB1cmwxID0gXFxcImh0dHBzOi8vcGFuLnh1bmxlaS5jb20vcy9WTzJPTVhvUkdUWFE0ZzZoeTF5SGkxVlhBMT9wd2Q9ZTZjalxcXCJcXG5cXG4vLyDno4Hlipvpk77mjqXkvovlrZDvvJpcXG5sZXQgdXJsMSA9IFxcXCJtYWduZXQ6P3h0PXVybjpidGloOjY5OTllNmQ4Y2I3NGQ1MTNjOWYzYmY0Mzg0MGZhNjg2NzU3MWZhM2NcXFwiXFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLov4Xpm7fosIPnlKjmtYvor5VcXFwiLFxcbiAgICB1cmw6ICQodXJsMSkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgaWYgKC8oeHVubGVpfG1hZ25ldDp8ZWQyazp8YnQ6fGZ0cDp8XFxcXC50b3JyZW50KS8udGVzdChpbnB1dCkpIHtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9kaWFveW9uZz9ydWxlPei/hembtyZwYWdlPWZ5cGFnZSNcXFwiICsgaW5wdXRcXG4gICAgICAgIH1cXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG59KVxcblxcbiovXFxuXFxuY29uc3Qge1xcbiAgICByZXExLFxcbiAgICBydWxlMSxcXG4gICAgYnl0ZXNUb1NpemVcXG59ID0gJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKVxcbmNvbnN0IGQgPSBbXTtcXG5sZXQgZGVzYzE7XFxuXFxuaWYgKGdldEl0ZW0oXFxcIm1vYmlsZVxcXCIpICE9IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgIGxldCBodG1sMTtcXG4gICAgaHRtbDEgPSByZXExKFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9hYm91dD93aXRoX3F1b3Rhcz1DUkVBVEVfT0ZGTElORV9UQVNLX0xJTUlUXFxcIiwgXFxcInVuZGVmaW5lZFxcXCIpO1xcbiAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcIuW4kOWPt+iupOivgeWksei0pe+8jOivt+mHjeaWsOeZu+W9lVxcXCIpIGh0bWwxID0gcmVxMShcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvYWJvdXQ/d2l0aF9xdW90YXM9Q1JFQVRFX09GRkxJTkVfVEFTS19MSU1JVFxcXCIsIFxcXCJ1bmRlZmluZWRcXFwiKTtcXG4gICAgaWYgKCFodG1sMS5lcnJvcl9kZXNjcmlwdGlvbikgZGVzYzEgPSBcXFwi5bey5L2/55SoXFxcIitieXRlc1RvU2l6ZShodG1sMS5xdW90YS51c2FnZSkrXFxcIi9cXFwiK1xcXCLlhbFcXFwiK2J5dGVzVG9TaXplKGh0bWwxLnF1b3RhLmxpbWl0KTtcXG59XFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLotKblj7fnrqHnkIZcXFwiLFxcbiAgICBkZXNjOiBkZXNjMSB8fCBcXFwi5pyq55m75b2VXFxcIixcXG4gICAgaW1nOiBcXFwiaHR0cHM6Ly9pY2RuLmJpbm10LmNjLzI1MDUvNjgxOTZkMWM4ZTk5My5wbmdcXFwiLFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICByZXR1cm4gJChbXFxcIueZu+W9lVxcXCIsIFxcXCLpgIDlh7pcXFwiXSkuc2VsZWN0KCgpID0+IHtcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT09IFxcXCLnmbvlvZVcXFwiKSByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9kZW5nbHUjbm9SZWNvcmRIaXN0b3J5IyNub0hpc3RvcnkjXFxcIjtcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT09IFxcXCLpgIDlh7pcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGxldCBrZXlzID0gW1xcXCJtb2JpbGVcXFwiLCBcXFwicGFzc1dvcmRcXFwiLCBcXFwic2Vzc2lvbklEXFxcIiwgXFxcInVzZXJfaWRcXFwiLCBcXFwiYXV0aG9yaXphdGlvblxcXCIsIFxcXCJyZWZyZXNoX3Rva2VuXFxcIl07XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGl0IG9mIGtleXMpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbShpdCk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIlxcbn0pO1xcblxcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG59KVxcblxcbnJ1bGUxKGQpO1xcblxcbnNldFJlc3VsdChkKTtcIixcImdyb3VwXCI6XCIwwrcxXCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJcIixcInBhZ2VzXCI6XCJbe1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Ye95pWwXFxcIixcXFwicGF0aFxcXCI6XFxcImhhbnNodVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJjb25zdCBoZWFkZXIxID0ge1xcXFxuICAgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIkFuZHJvaWRcXFxcXFxcIixcXFxcbiAgICBcXFxcXFxcIngtZGV2aWNlLWlkXFxcXFxcXCI6IFxcXFxcXFwiYjcxYTkyM2ViMGUyMjM5ODQyNTk5YTNjMDE2YjQwOThcXFxcXFxcIlxcXFxufVxcXFxuXFxcXG4vLyBHRVTor7fmsYJcXFxcbmZ1bmN0aW9uIHJlcTEodXJsMSwgaGVhZGVyMSkge1xcXFxuICAgIGxldCBoZWFkZXJcXFxcbiAgICBpZiAoaGVhZGVyMSA9PSBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKSB7XFxcXG4gICAgICAgIGhlYWRlciA9IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIkFuZHJvaWRcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwieC1kZXZpY2UtaWRcXFxcXFxcIjogXFxcXFxcXCJiNzFhOTIzZWIwZTIyMzk4NDI1OTlhM2MwMTZiNDA5OFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJhdXRob3JpemF0aW9uXFxcXFxcXCI6IGdldEl0ZW0oXFxcXFxcXCJhdXRob3JpemF0aW9uXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJ4LWNhcHRjaGEtdG9rZW5cXFxcXFxcIjogZ2V0TXlWYXIoXFxcXFxcXCJjYXB0Y2hhX3Rva2VuXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpXFxcXG4gICAgICAgIH1cXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBoZWFkZXIgPSBoZWFkZXIxXFxcXG4gICAgfVxcXFxuICAgIGxldCBodG1sMSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwxLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IGhlYWRlcixcXFxcbiAgICAgICAgbWV0aG9kOiBcXFxcXFxcIkdFVFxcXFxcXFwiXFxcXG4gICAgfSkpOyAvL2xvZyhodG1sMSlcXFxcbiAgICBpZiAoZ2V0SXRlbShcXFxcXFxcImF1dGhvcml6YXRpb25cXFxcXFxcIikgPT0gXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIikgc2lnbmluKClcXFxcbiAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcXFxcXCLluJDlj7forqTor4HlpLHotKXvvIzor7fph43mlrDnmbvlvZVcXFxcXFxcIikgc2lnbmluKClcXFxcbiAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcXFxcXCLpqozor4HnoIHml6DmlYhcXFxcXFxcIikgY2FwdGNoYSgpXFxcXG4gICAgcmV0dXJuIGh0bWwxXFxcXG59XFxcXG5cXFxcbi8vIFBPU1Tor7fmsYJcXFxcbmZ1bmN0aW9uIHJlcTIodXJsMSwgaGVhZGVyMSwgYm9keTEpIHtcXFxcbiAgICBsZXQgaGVhZGVyXFxcXG4gICAgaWYgKGhlYWRlcjEgPT0gXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIikge1xcXFxuICAgICAgICBoZWFkZXIgPSB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcIlVzZXItQWdlbnRcXFxcXFxcIjogXFxcXFxcXCJBbmRyb2lkXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBcXFxcXFxcIngtZGV2aWNlLWlkXFxcXFxcXCI6IFxcXFxcXFwiYjcxYTkyM2ViMGUyMjM5ODQyNTk5YTNjMDE2YjQwOThcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiYXV0aG9yaXphdGlvblxcXFxcXFwiOiBnZXRJdGVtKFxcXFxcXFwiYXV0aG9yaXphdGlvblxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKSxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwieC1jYXB0Y2hhLXRva2VuXFxcXFxcXCI6IGdldE15VmFyKFxcXFxcXFwiY2FwdGNoYV90b2tlblxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKVxcXFxuICAgICAgICB9XFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgaGVhZGVyID0gaGVhZGVyMVxcXFxuICAgIH1cXFxcbiAgICBsZXQgaHRtbDEgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsMSwge1xcXFxuICAgICAgICBoZWFkZXJzOiBoZWFkZXIsXFxcXG4gICAgICAgIGJvZHk6IGJvZHkxLFxcXFxuICAgICAgICBtZXRob2Q6IFxcXFxcXFwiUE9TVFxcXFxcXFwiXFxcXG4gICAgfSkpOyAvL2xvZyhodG1sMSlcXFxcbiAgICBpZiAoaHRtbDEuZXJyb3IgPT0gXFxcXFxcXCJjYXB0Y2hhX2ludmFsaWRcXFxcXFxcIikgY2FwdGNoYSgpXFxcXG4gICAgcmV0dXJuIGh0bWwxXFxcXG59XFxcXG5cXFxcbi8vIOiOt+WPluefreS/oemqjOivgeeggeivt+axglxcXFxuZnVuY3Rpb24gc2VuZHNtcygpIHtcXFxcbiAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcXFxcXCJwcm90b2NvbFZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjMwMVxcXFxcXFwiLFxcXFxcXFwic2VxdWVuY2VOb1xcXFxcXFwiOlxcXFxcXFwiMTAwMDAwMVxcXFxcXFwiLFxcXFxcXFwicGxhdGZvcm1WZXJzaW9uXFxcXFxcXCI6XFxcXFxcXCIxMFxcXFxcXFwiLFxcXFxcXFwiaXNDb21wcmVzc2VkXFxcXFxcXCI6XFxcXFxcXCIwXFxcXFxcXCIsXFxcXFxcXCJhcHBpZFxcXFxcXFwiOlxcXFxcXFwiNDBcXFxcXFxcIixcXFxcXFxcImNsaWVudFZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjguMDMuMC45MDY3XFxcXFxcXCIsXFxcXFxcXCJwZWVySURcXFxcXFxcIjpcXFxcXFxcImM5YjA3NmE0NDY1MTc5NjlkZmY2MzhjZDM3ZmE5ZmYxXFxcXFxcXCIsXFxcXFxcXCJhcHBOYW1lXFxcXFxcXCI6XFxcXFxcXCJBTkRST0lELWNvbS54dW5sZWkuZG93bmxvYWRwcm92aWRlclxcXFxcXFwiLFxcXFxcXFwic2RrVmVyc2lvblxcXFxcXFwiOlxcXFxcXFwiMjMxNTAwXFxcXFxcXCIsXFxcXFxcXCJkZXZpY2VzaWduXFxcXFxcXCI6XFxcXFxcXCJkaXYxMDEuYjcxYTkyM2ViMGUyMjM5ODQyNTk5YTNjMDE2YjQwOTg2MTJmNmNmNmQ2ZTlmZDE5MjU4NDVlYzU5Mjg1NzE2Y1xcXFxcXFwiLFxcXFxcXFwibmV0V29ya1R5cGVcXFxcXFxcIjpcXFxcXFxcIjJHXFxcXFxcXCIsXFxcXFxcXCJwcm92aWRlck5hbWVcXFxcXFxcIjpcXFxcXFxcIk5PTkVcXFxcXFxcIixcXFxcXFxcImRldmljZU1vZGVsXFxcXFxcXCI6XFxcXFxcXCIyMjAyMTIxMVJDXFxcXFxcXCIsXFxcXFxcXCJkZXZpY2VOYW1lXFxcXFxcXCI6XFxcXFxcXCJYaWFvbWlfMjIwMjEyMTFSY1xcXFxcXFwiLFxcXFxcXFwiT1NWZXJzaW9uXFxcXFxcXCI6XFxcXFxcXCIxMlxcXFxcXFwiLFxcXFxcXFwiY3JlZGl0a2V5XFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImhsXFxcXFxcXCI6XFxcXFxcXCJ6aC1DTlxcXFxcXFwiLFxcXFxcXFwibW9iaWxlXFxcXFxcXCI6Z2V0SXRlbShcXFxcXFxcIm1vYmlsZVxcXFxcXFwiKSxcXFxcXFxcInJlZ2lzdGVyXFxcXFxcXCI6XFxcXFxcXCIwXFxcXFxcXCJ9KVxcXFxuICAgIGxldCBodG1sMSA9IHJlcTIoXFxcXFxcXCJodHRwczovL3hsdXNlci1zc2wueHVubGVpLmNvbS94bHVzZXIuY29yZS5sb2dpbi92My9zZW5kc21zXFxcXFxcXCIsIHt9LCBib2R5MSk7IC8vbG9nKGh0bWwxKVxcXFxuICAgIGlmIChodG1sMS5lcnJvckNvZGUgPT0gXFxcXFxcXCIwXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgdG9hc3QoXFxcXFxcXCLpqozor4HnoIHlj5HpgIHmiJDlip9cXFxcXFxcIilcXFxcbiAgICAgICAgcHV0TXlWYXIoXFxcXFxcXCJjcmVkaXRrZXlcXFxcXFxcIiwgaHRtbDEuY3JlZGl0a2V5KVxcXFxuICAgICAgICBwdXRNeVZhcihcXFxcXFxcImRldmljZWlkXFxcXFxcXCIsIGh0bWwxLmRldmljZWlkKVxcXFxuICAgICAgICBwdXRNeVZhcihcXFxcXFxcInRva2VuXFxcXFxcXCIsIGh0bWwxLnRva2VuKVxcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIHRvYXN0KGh0bWwxLmVycm9yRGVzYylcXFxcbiAgICB9XFxcXG59XFxcXG5cXFxcbi8vIOWPkemAgemqjOivgeeggeeZu+W9leivt+axglxcXFxuZnVuY3Rpb24gc21zbG9naW4oKSB7XFxcXG4gICAgbGV0IGJvZHkxID0gSlNPTi5zdHJpbmdpZnkoe1xcXFxcXFwicHJvdG9jb2xWZXJzaW9uXFxcXFxcXCI6XFxcXFxcXCIzMDFcXFxcXFxcIixcXFxcXFxcInNlcXVlbmNlTm9cXFxcXFxcIjpcXFxcXFxcIjEwMDAwMDJcXFxcXFxcIixcXFxcXFxcInBsYXRmb3JtVmVyc2lvblxcXFxcXFwiOlxcXFxcXFwiMTBcXFxcXFxcIixcXFxcXFxcImlzQ29tcHJlc3NlZFxcXFxcXFwiOlxcXFxcXFwiMFxcXFxcXFwiLFxcXFxcXFwiYXBwaWRcXFxcXFxcIjpcXFxcXFxcIjQwXFxcXFxcXCIsXFxcXFxcXCJjbGllbnRWZXJzaW9uXFxcXFxcXCI6XFxcXFxcXCI4LjAzLjAuOTA2N1xcXFxcXFwiLFxcXFxcXFwicGVlcklEXFxcXFxcXCI6XFxcXFxcXCJjOWIwNzZhNDQ2NTE3OTY5ZGZmNjM4Y2QzN2ZhOWZmMVxcXFxcXFwiLFxcXFxcXFwiYXBwTmFtZVxcXFxcXFwiOlxcXFxcXFwiQU5EUk9JRC1jb20ueHVubGVpLmRvd25sb2FkcHJvdmlkZXJcXFxcXFxcIixcXFxcXFxcInNka1ZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjIzMTUwMFxcXFxcXFwiLFxcXFxcXFwiZGV2aWNlc2lnblxcXFxcXFwiOmdldE15VmFyKFxcXFxcXFwiZGV2aWNlaWRcXFxcXFxcIiksXFxcXFxcXCJuZXRXb3JrVHlwZVxcXFxcXFwiOlxcXFxcXFwiMkdcXFxcXFxcIixcXFxcXFxcInByb3ZpZGVyTmFtZVxcXFxcXFwiOlxcXFxcXFwiTk9ORVxcXFxcXFwiLFxcXFxcXFwiZGV2aWNlTW9kZWxcXFxcXFxcIjpcXFxcXFxcIjIyMDIxMjExUkNcXFxcXFxcIixcXFxcXFxcImRldmljZU5hbWVcXFxcXFxcIjpcXFxcXFxcIlhpYW9taV8yMjAyMTIxMVJjXFxcXFxcXCIsXFxcXFxcXCJPU1ZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjEyXFxcXFxcXCIsXFxcXFxcXCJjcmVkaXRrZXlcXFxcXFxcIjpnZXRNeVZhcihcXFxcXFxcImNyZWRpdGtleVxcXFxcXFwiKSxcXFxcXFxcImhsXFxcXFxcXCI6XFxcXFxcXCJ6aC1DTlxcXFxcXFwiLFxcXFxcXFwibW9iaWxlXFxcXFxcXCI6Z2V0SXRlbShcXFxcXFxcIm1vYmlsZVxcXFxcXFwiKSxcXFxcXFxcInNtc0NvZGVcXFxcXFxcIjpnZXRNeVZhcihcXFxcXFxcInNtc0NvZGVcXFxcXFxcIiksXFxcXFxcXCJ0b2tlblxcXFxcXFwiOmdldE15VmFyKFxcXFxcXFwidG9rZW5cXFxcXFxcIiksXFxcXFxcXCJyZWdpc3RlclxcXFxcXFwiOlxcXFxcXFwiMFxcXFxcXFwifSlcXFxcbiAgICBsZXQgaHRtbDEgPSByZXEyKFxcXFxcXFwiaHR0cHM6Ly94bHVzZXItc3NsLnh1bmxlaS5jb20veGx1c2VyLmNvcmUubG9naW4vdjMvc21zbG9naW5cXFxcXFxcIiwge30sIGJvZHkxKTsgLy9sb2coaHRtbDEpXFxcXG4gICAgaWYgKGh0bWwxLmVycm9yQ29kZSA9PSBcXFxcXFxcIjBcXFxcXFxcIikge1xcXFxuICAgICAgICB0b2FzdChcXFxcXFxcIueZu+W9leaIkOWKn1xcXFxcXFwiKVxcXFxuICAgICAgICBzZXRJdGVtKFxcXFxcXFwic2Vzc2lvbklEXFxcXFxcXCIsIGh0bWwxLnNlc3Npb25JRClcXFxcbiAgICAgICAgc2V0SXRlbShcXFxcXFxcInVzZXJfaWRcXFxcXFxcIiwgaHRtbDEudXNlcklEKVxcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIHRvYXN0KGh0bWwxLmVycm9yRGVzYylcXFxcbiAgICB9XFxcXG59XFxcXG5cXFxcbi8vIOWPkemAgeaJi+acuuWPt+WvhueggeeZu+W9leivt+axglxcXFxuZnVuY3Rpb24gbG9naW4oKSB7XFxcXG4gICAgbGV0IGJvZHkxID0gSlNPTi5zdHJpbmdpZnkoe1xcXFxcXFwicHJvdG9jb2xWZXJzaW9uXFxcXFxcXCI6XFxcXFxcXCIzMDFcXFxcXFxcIixcXFxcXFxcInNlcXVlbmNlTm9cXFxcXFxcIjpcXFxcXFxcIjEwMDAwMDFcXFxcXFxcIixcXFxcXFxcInBsYXRmb3JtVmVyc2lvblxcXFxcXFwiOlxcXFxcXFwiMTBcXFxcXFxcIixcXFxcXFxcImlzQ29tcHJlc3NlZFxcXFxcXFwiOlxcXFxcXFwiMFxcXFxcXFwiLFxcXFxcXFwiYXBwaWRcXFxcXFxcIjpcXFxcXFxcIjQwXFxcXFxcXCIsXFxcXFxcXCJjbGllbnRWZXJzaW9uXFxcXFxcXCI6XFxcXFxcXCI4LjAzLjAuOTA2N1xcXFxcXFwiLFxcXFxcXFwicGVlcklEXFxcXFxcXCI6XFxcXFxcXCJjOWIwNzZhNDQ2NTE3OTY5ZGZmNjM4Y2QzN2ZhOWZmMVxcXFxcXFwiLFxcXFxcXFwiYXBwTmFtZVxcXFxcXFwiOlxcXFxcXFwiQU5EUk9JRC1jb20ueHVubGVpLmRvd25sb2FkcHJvdmlkZXJcXFxcXFxcIixcXFxcXFxcInNka1ZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjIzMTUwMFxcXFxcXFwiLFxcXFxcXFwiZGV2aWNlc2lnblxcXFxcXFwiOlxcXFxcXFwiZGl2MTAxLmI3MWE5MjNlYjBlMjIzOTg0MjU5OWEzYzAxNmI0MDk4NjEyZjZjZjZkNmU5ZmQxOTI1ODQ1ZWM1OTI4NTcxNmNcXFxcXFxcIixcXFxcXFxcIm5ldFdvcmtUeXBlXFxcXFxcXCI6XFxcXFxcXCIyR1xcXFxcXFwiLFxcXFxcXFwicHJvdmlkZXJOYW1lXFxcXFxcXCI6XFxcXFxcXCJOT05FXFxcXFxcXCIsXFxcXFxcXCJkZXZpY2VNb2RlbFxcXFxcXFwiOlxcXFxcXFwiMjIwMjEyMTFSQ1xcXFxcXFwiLFxcXFxcXFwiZGV2aWNlTmFtZVxcXFxcXFwiOlxcXFxcXFwiWGlhb21pXzIyMDIxMjExUmNcXFxcXFxcIixcXFxcXFxcIk9TVmVyc2lvblxcXFxcXFwiOlxcXFxcXFwiMTJcXFxcXFxcIixcXFxcXFxcImNyZWRpdGtleVxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJobFxcXFxcXFwiOlxcXFxcXFwiemgtQ05cXFxcXFxcIixcXFxcXFxcInVzZXJOYW1lXFxcXFxcXCI6Z2V0SXRlbShcXFxcXFxcIm1vYmlsZVxcXFxcXFwiKSxcXFxcXFxcInBhc3NXb3JkXFxcXFxcXCI6Z2V0SXRlbShcXFxcXFxcInBhc3NXb3JkXFxcXFxcXCIpLFxcXFxcXFwidmVyaWZ5S2V5XFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInZlcmlmeUNvZGVcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiaXNNZDVQd2RcXFxcXFxcIjpcXFxcXFxcIjBcXFxcXFxcIn0pXFxcXG4gICAgbGV0IGh0bWwxID0gcmVxMihcXFxcXFxcImh0dHBzOi8veGx1c2VyLXNzbC54dW5sZWkuY29tL3hsdXNlci5jb3JlLmxvZ2luL3YzL2xvZ2luXFxcXFxcXCIsIHt9LCBib2R5MSk7IC8vbG9nKGh0bWwxKVxcXFxuICAgIGlmIChodG1sMS5lcnJvckNvZGUgPT0gXFxcXFxcXCIwXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgdG9hc3QoXFxcXFxcXCLnmbvlvZXmiJDlip9cXFxcXFxcIilcXFxcbiAgICAgICAgc2V0SXRlbShcXFxcXFxcInNlc3Npb25JRFxcXFxcXFwiLCBodG1sMS5zZXNzaW9uSUQpXFxcXG4gICAgICAgIHNldEl0ZW0oXFxcXFxcXCJ1c2VyX2lkXFxcXFxcXCIsIGh0bWwxLnVzZXJJRClcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICB0b2FzdChodG1sMS5lcnJvckRlc2MpXFxcXG4gICAgfVxcXFxufVxcXFxuXFxcXG4vLyDojrflj5bor7fmsYLlpLRhdXRob3JpemF0aW9uXFxcXG5mdW5jdGlvbiBzaWduaW4oKSB7XFxcXG4gICAgbGV0IGJvZHkxID0gSlNPTi5zdHJpbmdpZnkoe1xcXFxcXFwiY2xpZW50X2lkXFxcXFxcXCI6XFxcXFxcXCJYcDZ2c3h6XzdJWVZ3MkJCXFxcXFxcXCIsXFxcXFxcXCJjbGllbnRfc2VjcmV0XFxcXFxcXCI6XFxcXFxcXCJYcDZ2c3k0dE45dG9UVmRNU3BvbVZkWHBSbUVTXFxcXFxcXCIsXFxcXFxcXCJwcm92aWRlclxcXFxcXFwiOlxcXFxcXFwiYWNjZXNzX2VuZF9wb2ludF90b2tlblxcXFxcXFwiLFxcXFxcXFwic2lnbmluX3Rva2VuXFxcXFxcXCI6Z2V0SXRlbShcXFxcXFxcInNlc3Npb25JRFxcXFxcXFwiKX0pXFxcXG4gICAgbGV0IGh0bWwxID0gcmVxMihcXFxcXFxcImh0dHBzOi8veGx1c2VyLXNzbC54dW5sZWkuY29tL3YxL2F1dGgvc2lnbmluL3Rva2VuP2NsaWVudF9pZD1YcDZ2c3h6XzdJWVZ3MkJCXFxcXFxcXCIsIGhlYWRlcjEsIGJvZHkxKTsgLy9sb2coaHRtbDEpXFxcXG4gICAgc2V0SXRlbShcXFxcXFxcImF1dGhvcml6YXRpb25cXFxcXFxcIiwgaHRtbDEudG9rZW5fdHlwZStcXFxcXFxcIiBcXFxcXFxcIitodG1sMS5hY2Nlc3NfdG9rZW4pXFxcXG4gICAgc2V0SXRlbShcXFxcXFxcInJlZnJlc2hfdG9rZW5cXFxcXFxcIiwgaHRtbDEucmVmcmVzaF90b2tlbilcXFxcbiAgICBzZXRJdGVtKFxcXFxcXFwidXNlcl9pZFxcXFxcXFwiLCBodG1sMS51c2VyX2lkKVxcXFxufVxcXFxuXFxcXG4vLyDliLfmlrDor7fmsYLlpLRhdXRob3JpemF0aW9uXFxcXG5mdW5jdGlvbiBhY2Nlc3NfdG9rZW4oKSB7XFxcXG4gICAgbGV0IGJvZHkxID0gSlNPTi5zdHJpbmdpZnkoe1xcXFxcXFwiY2xpZW50X2lkXFxcXFxcXCI6XFxcXFxcXCJYcDZ2c3h6XzdJWVZ3MkJCXFxcXFxcXCIsXFxcXFxcXCJjbGllbnRfc2VjcmV0XFxcXFxcXCI6XFxcXFxcXCJYcDZ2c3k0dE45dG9UVmRNU3BvbVZkWHBSbUVTXFxcXFxcXCIsXFxcXFxcXCJncmFudF90eXBlXFxcXFxcXCI6XFxcXFxcXCJyZWZyZXNoX3Rva2VuXFxcXFxcXCIsXFxcXFxcXCJyZWZyZXNoX3Rva2VuXFxcXFxcXCI6Z2V0SXRlbShcXFxcXFxcInJlZnJlc2hfdG9rZW5cXFxcXFxcIil9KVxcXFxuICAgIGxldCBodG1sMSA9IHJlcTIoXFxcXFxcXCJodHRwczovL3hsdXNlci1zc2wueHVubGVpLmNvbS92MS9hdXRoL3Rva2VuP2NsaWVudF9pZD1YcDZ2c3h6XzdJWVZ3MkJCXFxcXFxcXCIsIGhlYWRlcjEsIGJvZHkxKTsgLy9sb2coaHRtbDEpXFxcXG4gICAgc2V0SXRlbShcXFxcXFxcImF1dGhvcml6YXRpb25cXFxcXFxcIiwgaHRtbDEudG9rZW5fdHlwZStcXFxcXFxcIiBcXFxcXFxcIitodG1sMS5hY2Nlc3NfdG9rZW4pXFxcXG4gICAgc2V0SXRlbShcXFxcXFxcInVzZXJfaWRcXFxcXFxcIiwgaHRtbDEudXNlcl9pZClcXFxcbn1cXFxcblxcXFxuLy8g6I635Y+W6K+35rGC5aS0Y2FwdGNoYV90b2tlblxcXFxuZnVuY3Rpb24gY2FwdGNoYSgpIHtcXFxcbiAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcXFxcXCJhY3Rpb25cXFxcXFxcIjpcXFxcXFxcIkdFVDovZHJpdmUvdjEvcHJpdmlsZWdlL1VTRVJfU0VDVVJJVFlfVE9LRU5cXFxcXFxcIixcXFxcXFxcImNhcHRjaGFfdG9rZW5cXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiY2xpZW50X2lkXFxcXFxcXCI6XFxcXFxcXCJYcDZ2c3h6XzdJWVZ3MkJCXFxcXFxcXCIsXFxcXFxcXCJkZXZpY2VfaWRcXFxcXFxcIjpcXFxcXFxcImI3MWE5MjNlYjBlMjIzOTg0MjU5OWEzYzAxNmI0MDk4XFxcXFxcXCIsXFxcXFxcXCJtZXRhXFxcXFxcXCI6e1xcXFxcXFwiY2FwdGNoYV9zaWduXFxcXFxcXCI6XFxcXFxcXCIxLjFkOGMyYTc4MzYwMWU0NTI3N2IzYjY1MTc3OTU4MzI0XFxcXFxcXCIsXFxcXFxcXCJ1c2VyX2lkXFxcXFxcXCI6Z2V0SXRlbShcXFxcXFxcInVzZXJfaWRcXFxcXFxcIiksXFxcXFxcXCJwYWNrYWdlX25hbWVcXFxcXFxcIjpcXFxcXFxcImNvbS54dW5sZWkuZG93bmxvYWRwcm92aWRlclxcXFxcXFwiLFxcXFxcXFwiY2xpZW50X3ZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjguMDMuMC45MDY3XFxcXFxcXCIsXFxcXFxcXCJ0aW1lc3RhbXBcXFxcXFxcIjpcXFxcXFxcIjE3NDU1MDcwNDkyNjBcXFxcXFxcIn0sXFxcXFxcXCJyZWRpcmVjdF91cmlcXFxcXFxcIjpcXFxcXFxcInhsYWNjc2RrMDE6Ly94dW5sZWkuY29tL2NhbGxiYWNrP3N0YXRlXFxcXFxcXFx1MDAzZGhhcmJvclxcXFxcXFwifSlcXFxcbiAgICBsZXQgaHRtbDEgPSByZXEyKFxcXFxcXFwiaHR0cHM6Ly94bHVzZXItc3NsLnh1bmxlaS5jb20vdjEvc2hpZWxkL2NhcHRjaGEvaW5pdD9jbGllbnRfaWQ9WHA2dnN4el83SVlWdzJCQlxcXFxcXFwiLCBoZWFkZXIxLCBib2R5MSk7IC8vbG9nKGh0bWwxKVxcXFxuICAgIHB1dE15VmFyKFxcXFxcXFwiY2FwdGNoYV90b2tlblxcXFxcXFwiLCBodG1sMS5jYXB0Y2hhX3Rva2VuKSAgICBcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gYWN0aXZpdHkoKSB7XFxcXG4gICAgbGV0IGhlYWRlcjEgPSB7XFxcXG4gICAgICAgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIkFuZHJvaWRcXFxcXFxcIixcXFxcbiAgICAgICAgXFxcXFxcXCJ4LWRldmljZS1pZFxcXFxcXFwiOiBcXFxcXFxcIjk5ZDhhMzE2N2RmNzlkMGY0MGZjZGM4NjIzZWQzMjY2XFxcXFxcXCJcXFxcbiAgICB9XFxcXG4gICAgbGV0IGJvZHkxID0gSlNPTi5zdHJpbmdpZnkoe1xcXFxcXFwiYWN0aW9uXFxcXFxcXCI6XFxcXFxcXCJQT1NUOi9hY3Rpdml0eS92MS9yZXdhcmRcXFxcXFxcIixcXFxcXFxcImNhcHRjaGFfdG9rZW5cXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiY2xpZW50X2lkXFxcXFxcXCI6XFxcXFxcXCJYcDZ2c3h6XzdJWVZ3MkJCXFxcXFxcXCIsXFxcXFxcXCJkZXZpY2VfaWRcXFxcXFxcIjpcXFxcXFxcIjk5ZDhhMzE2N2RmNzlkMGY0MGZjZGM4NjIzZWQzMjY2XFxcXFxcXCIsXFxcXFxcXCJtZXRhXFxcXFxcXCI6e1xcXFxcXFwiY2FwdGNoYV9zaWduXFxcXFxcXCI6XFxcXFxcXCIxLmUyZTYwZTVhYmJmNjZmNmIyMWNkNzg1NWYxM2Q3MGFkXFxcXFxcXCIsXFxcXFxcXCJ1c2VyX2lkXFxcXFxcXCI6Z2V0SXRlbShcXFxcXFxcInVzZXJfaWRcXFxcXFxcIiksXFxcXFxcXCJwYWNrYWdlX25hbWVcXFxcXFxcIjpcXFxcXFxcImNvbS54dW5sZWkuZG93bmxvYWRwcm92aWRlclxcXFxcXFwiLFxcXFxcXFwiY2xpZW50X3ZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjcuNDkuMC44MTI5XFxcXFxcXCIsXFxcXFxcXCJ0aW1lc3RhbXBcXFxcXFxcIjpcXFxcXFxcIjE3NDYwMDQ2MDE0NTVcXFxcXFxcIn0sXFxcXFxcXCJyZWRpcmVjdF91cmlcXFxcXFxcIjpcXFxcXFxcInhsYWNjc2RrMDE6Ly94dW5sZWkuY29tL2NhbGxiYWNrP3N0YXRlXFxcXFxcXFx1MDAzZGhhcmJvclxcXFxcXFwifSlcXFxcbiAgICBsZXQgaHRtbDEgPSByZXEyKFxcXFxcXFwiaHR0cHM6Ly94bHVzZXItc3NsLnh1bmxlaS5jb20vdjEvc2hpZWxkL2NhcHRjaGEvaW5pdD9jbGllbnRfaWQ9WHA2dnN4el83SVlWdzJCQlxcXFxcXFwiLCBoZWFkZXIxLCBib2R5MSlcXFxcbiAgICBcXFxcbiAgICBsZXQgaGVhZGVyMiA9IHtcXFxcbiAgICAgICAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IFxcXFxcXFwiQW5kcm9pZFxcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcIngtZGV2aWNlLWlkXFxcXFxcXCI6IFxcXFxcXFwiOTlkOGEzMTY3ZGY3OWQwZjQwZmNkYzg2MjNlZDMyNjZcXFxcXFxcIixcXFxcbiAgICAgICAgXFxcXFxcXCJhdXRob3JpemF0aW9uXFxcXFxcXCI6IGdldEl0ZW0oXFxcXFxcXCJhdXRob3JpemF0aW9uXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpLFxcXFxuICAgICAgICBcXFxcXFxcIngtY2FwdGNoYS10b2tlblxcXFxcXFwiOiBodG1sMS5jYXB0Y2hhX3Rva2VuXFxcXG4gICAgfVxcXFxuICAgIGxldCBib2R5MiA9IEpTT04uc3RyaW5naWZ5KHtcXFxcXFxcImFjdGl2aXR5X2lkXFxcXFxcXCI6XFxcXFxcXCJWTXNjeWpWdS1jcFVOZmlycVhHVzR3ZmEwMFxcXFxcXFwiLFxcXFxcXFwicmV3YXJkX2NvdW50XFxcXFxcXCI6MSxcXFxcXFxcInBhcmFtc1xcXFxcXFwiOntcXFxcXFxcInVyY2tcXFxcXFxcIjpcXFxcXFxcIjk5ZDhhMzE2N2RmNzlkMGY0MGZjZGM4NjIzZWQzMjY2XFxcXFxcXCJ9fSlcXFxcbiAgICByZXEyKFxcXFxcXFwiaHR0cHM6Ly9hcGktc2hvdWxlaS1zc2wueHVubGVpLmNvbS9hY3Rpdml0eS92MS9yZXdhcmRcXFxcXFxcIiwgaGVhZGVyMiwgYm9keTIpXFxcXG59XFxcXG5cXFxcbi8vIOS6kea3u+WKoO+8jOiOt+WPluebmOWGheaWh+S7tmlkXFxcXG5mdW5jdGlvbiB5dW5ibyhuYW1lLCB1cmwsIGZpbGVfaW5kZXgpIHtcXFxcbiAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcXFxcXCJraW5kXFxcXFxcXCI6XFxcXFxcXCJkcml2ZSNmaWxlXFxcXFxcXCIsXFxcXFxcXCJuYW1lXFxcXFxcXCI6bmFtZSxcXFxcXFxcInVwbG9hZF90eXBlXFxcXFxcXCI6XFxcXFxcXCJVUExPQURfVFlQRV9VUkxcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOntcXFxcXFxcInVybFxcXFxcXFwiOnVybCxcXFxcXFxcImZpbGVzXFxcXFxcXCI6W2ZpbGVfaW5kZXhdfSxcXFxcXFxcInBhcmVudF9pZFxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCJ9KVxcXFxuICAgIGxldCBodG1sMVxcXFxuICAgIGh0bWwxID0gcmVxMihcXFxcXFxcImh0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL2ZpbGVzXFxcXFxcXCIsIFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIsIGJvZHkxKVxcXFxuICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFxcXFxcIumqjOivgeeggeaXoOaViFxcXFxcXFwiKSBodG1sMSA9IHJlcTIoXFxcXFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9maWxlc1xcXFxcXFwiLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiLCBib2R5MSlcXFxcbiAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24pIHJldHVybiB0b2FzdChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbilcXFxcbiAgICBqYXZhLmxhbmcuVGhyZWFkLnNsZWVwKDEwMDApXFxcXG4gICAgbGV0IHVybDIgPSAnaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvdGFza3M/dHlwZT1vZmZsaW5lJnBhZ2VfdG9rZW49JmZpbHRlcnM9e1xcXFxcXFwiaWRcXFxcXFxcIjp7XFxcXFxcXCJpblxcXFxcXFwiOlxcXFxcXFwiJytodG1sMS50YXNrLmlkKydcXFxcXFxcIn19JndpdGg9cmVmZXJlbmNlX3Jlc291cmNlJ1xcXFxuICAgIGxldCBodG1sMlxcXFxuICAgIGh0bWwyID0gcmVxMSh1cmwyLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKS50YXNrc1swXVxcXFxuICAgIGlmIChodG1sMi5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFxcXFxcIumqjOivgeeggeaXoOaViFxcXFxcXFwiKSBodG1sMiA9IHJlcTEodXJsMiwgXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIikudGFza3NbMF1cXFxcbiAgICByZXR1cm4gaHRtbDIuZmlsZV9pZFxcXFxufVxcXFxuXFxcXG4vLyDnm5jlhoVcXFxcbmZ1bmN0aW9uIGxhenkxKGlucHV0KSB7XFxcXG4gICAgcmV0dXJuICQoXFxcXFxcXCJcXFxcXFxcIikubGF6eVJ1bGUoKGlucHV0KSA9PiB7XFxcXG4gICAgICAgIGxldCBpZCA9IGlucHV0WzBdXFxcXG4gICAgICAgIGxldCBtaW1lX3R5cGUgPSBpbnB1dFsxXVxcXFxuICAgICAgICBpZiAobWltZV90eXBlID09IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiAkKFxcXFxcXFwiaGlrZXI6Ly9lbXB0eT9wYWdlPWZ5cGFnZSNcXFxcXFxcIitpZCtcXFxcXFxcIiNub0xvYWRpbmcjXFxcXFxcXCIpLnJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBbXVxcXFxuICAgICAgICAgICAgICAgICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKS55dW5wYW4xKGQpXFxcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGNvbnN0IHtcXFxcbiAgICAgICAgICAgIHJlcTEsXFxcXG4gICAgICAgICAgICBzaGFuY2h1XFxcXG4gICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoYW5zaHVcXFxcXFxcIilcXFxcbiAgICAgICAgbGV0IHVybDEgPSBcXFxcXFxcImh0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL2ZpbGVzL1xcXFxcXFwiK2lkK1xcXFxcXFwiP19tYWdpYz0yMDIxJnVzYWdlPVBMQVkmdGh1bWJuYWlsX3NpemU9U0laRV9MQVJHRSZ3aXRoPWhkcjEwJndpdGg9c3VidGl0bGVfZmlsZXMmd2l0aD10YXNrJndpdGg9cHVibGljX3NoYXJlX3RhZ1xcXFxcXFwiXFxcXG4gICAgICAgIGxldCBodG1sMVxcXFxuICAgICAgICBodG1sMSA9IHJlcTEodXJsMSwgXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIik7IC8vbG9nKGh0bWwxKVxcXFxuICAgICAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcXFxcXCLpqozor4HnoIHml6DmlYhcXFxcXFxcIikgaHRtbDEgPSByZXExKHVybDEsIFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIpOyAvL2xvZyhodG1sMSlcXFxcbiAgICAgICAgaWYgKGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uKSB7XFxcXG4gICAgICAgICAgICBpZiAoaW5wdXRbMl0gPT0gXFxcXFxcXCLliKDpmaRcXFxcXFxcIikgc2hhbmNodShpZClcXFxcbiAgICAgICAgICAgIHRvYXN0KGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uKVxcXFxuICAgICAgICAgICAgaWYgKC8obWFnbmV0OnxlZDJrOnxidDp8ZnRwOnxcXFxcXFxcXC50b3JyZW50KS8udGVzdChNWV9VUkwpKSByZXR1cm4gTVlfVVJMLnNwbGl0KFxcXFxcXFwiI1xcXFxcXFwiKVsxXVxcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgaWYgKGh0bWwxLmF1ZGl0LnRpdGxlID09IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShodG1sMS5saW5rcykgPT0gXFxcXFxcXCJ7fVxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgaWYgKC8obWFnbmV0OnxlZDJrOnxidDp8ZnRwOnxcXFxcXFxcXC50b3JyZW50KS8udGVzdChNWV9VUkwpKSByZXR1cm4gTVlfVVJMLnNwbGl0KFxcXFxcXFwiI1xcXFxcXFwiKVsxXVxcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgbGV0IHBsYXkgPSBodG1sMS5saW5rc1tcXFxcXFxcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVxcXFxcXFwiXS51cmxcXFxcbiAgICAgICAgICAgIGlmIChpbnB1dFsyXSA9PSBcXFxcXFxcIuWIoOmZpFxcXFxcXFwiKSBzaGFuY2h1KGlkKVxcXFxuICAgICAgICAgICAgaWYgKGh0bWwxLm1pbWVfdHlwZS5pbmNsdWRlcyhcXFxcXFxcInZpZGVvXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IG5hbWUxID0gW1xcXFxcXFwi5Y6f5aeL55S76LSoXFxcXFxcXCJdXFxcXG4gICAgICAgICAgICAgICAgbGV0IHBsYXkxID0gW3BsYXldXFxcXG4gICAgICAgICAgICAgICAgaHRtbDEubWVkaWFzLm1hcChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGluayAhPSBudWxsKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lMS5wdXNoKGl0ZW0ubWVkaWFfbmFtZSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYXkxLnB1c2goaXRlbS5saW5rLnVybClcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbmFtZXM6IG5hbWUxLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmxzOiBwbGF5MVxcXFxuICAgICAgICAgICAgICAgIH0pK1xcXFxcXFwiI2lzVmlkZW89dHJ1ZSNcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgaWYgKGh0bWwxLm1pbWVfdHlwZS5pbmNsdWRlcyhcXFxcXFxcImltYWdlXFxcXFxcXCIpKSByZXR1cm4gcGxheStcXFxcXFxcIiMuanBnXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIGlmIChodG1sMS5taW1lX3R5cGUuaW5jbHVkZXMoXFxcXFxcXCJhdWRpb1xcXFxcXFwiKSkgcmV0dXJuIHBsYXkrXFxcXFxcXCIjaXNNdXNpYz10cnVlI1xcXFxcXFwiXFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJkb3dubG9hZDovL1xcXFxcXFwiK3BsYXlcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHRvYXN0KGh0bWwxLmF1ZGl0LnRpdGxlKVxcXFxuICAgICAgICAgICAgc2hhbmNodShpZClcXFxcbiAgICAgICAgICAgIGlmICgvKG1hZ25ldDp8ZWQyazp8YnQ6fGZ0cDp8XFxcXFxcXFwudG9ycmVudCkvLnRlc3QoTVlfVVJMKSkgcmV0dXJuIE1ZX1VSTC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIilbMV1cXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgfSwgaW5wdXQuc3BsaXQoXFxcXFxcXCIjXFxcXFxcXCIpKVxcXFxufVxcXFxuXFxcXG4vLyDnm5jlpJZcXFxcbmZ1bmN0aW9uIGxhenkyKGlucHV0KSB7XFxcXG4gICAgcmV0dXJuICQoXFxcXFxcXCJcXFxcXFxcIikubGF6eVJ1bGUoKGlucHV0KSA9PiB7XFxcXG4gICAgICAgIGxldCBpZCA9IGlucHV0WzBdXFxcXG4gICAgICAgIGxldCBtaW1lX3R5cGUgPSBpbnB1dFsxXVxcXFxuICAgICAgICBpZiAobWltZV90eXBlID09IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgIGlmIChNWV9VUkwuaW5jbHVkZXMoXFxcXFxcXCJ4dW5sZWlcXFxcXFxcIikpIHB1dE15VmFyKFxcXFxcXFwiYW5jZXN0b3JfaWRzXFxcXFxcXCIsIGlkKVxcXFxuICAgICAgICAgICAgcmV0dXJuICQoXFxcXFxcXCJoaWtlcjovL2VtcHR5P3BhZ2U9ZnlwYWdlI1xcXFxcXFwiK2lkK1xcXFxcXFwiI25vTG9hZGluZyMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcXFxcXCIpLnJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBbXVxcXFxuICAgICAgICAgICAgICAgICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKS55dW5wYW4yKGQpXFxcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGNvbnN0IHtcXFxcbiAgICAgICAgICAgIHpodWFuY3VuLFxcXFxuICAgICAgICAgICAgbGF6eTFcXFxcbiAgICAgICAgfSA9ICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKVxcXFxuICAgICAgICBsZXQgaWQxID0gemh1YW5jdW4oaWQpXFxcXG4gICAgICAgIHJldHVybiBsYXp5MShpZDEpXFxcXG4gICAgfSwgaW5wdXQuc3BsaXQoXFxcXFxcXCIjXFxcXFxcXCIpKVxcXFxufVxcXFxuXFxcXG4vLyDno4HliptcXFxcbmZ1bmN0aW9uIGxhenkzKGlucHV0KSB7XFxcXG4gICAgcmV0dXJuICQoXFxcXFxcXCJcXFxcXFxcIikubGF6eVJ1bGUoKGlucHV0KSA9PiB7XFxcXG4gICAgICAgIGxldCBuYW1lID0gaW5wdXRbMF1cXFxcbiAgICAgICAgbGV0IG1ldGEgPSBKU09OLnBhcnNlKGlucHV0WzFdKVxcXFxuICAgICAgICBsZXQgZGlyID0gaW5wdXRbMl1cXFxcbiAgICAgICAgbGV0IGZpbGVfc2l6ZSA9IGlucHV0WzNdXFxcXG4gICAgICAgIGxldCBmaWxlX2luZGV4ID0gaW5wdXRbNF1cXFxcbiAgICAgICAgaWYgKGRpciAhPSBcXFxcXFxcIm51bGxcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgcmV0dXJuICQoXFxcXFxcXCJoaWtlcjovL2VtcHR5P3BhZ2U9ZnlwYWdlI1xcXFxcXFwiK01ZX1VSTC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIilbMV0rXFxcXFxcXCIjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFxcXFxcIikucnVsZSgoZGlyKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgY29uc3Qge1xcXFxuICAgICAgICAgICAgICAgICAgICBsYXp5MyxcXFxcbiAgICAgICAgICAgICAgICAgICAgYnl0ZXNUb1NpemVcXFxcbiAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGFuc2h1XFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IFtdXFxcXG4gICAgICAgICAgICAgICAgbGV0IGxpc3QxID0gSlNPTi5wYXJzZShkaXIpLnJlc291cmNlc1xcXFxuICAgICAgICAgICAgICAgIGxpc3QxLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5uYW1lLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogYnl0ZXNUb1NpemUoaXRlbS5maWxlX3NpemUpLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBpdGVtLm1ldGEuaWNvbixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGF6eTMoaXRlbS5uYW1lK1xcXFxcXFwiI1xcXFxcXFwiK0pTT04uc3RyaW5naWZ5KGl0ZW0ubWV0YSkrXFxcXFxcXCIjXFxcXFxcXCIrSlNPTi5zdHJpbmdpZnkoaXRlbS5kaXIpK1xcXFxcXFwiI1xcXFxcXFwiK2l0ZW0uZmlsZV9zaXplK1xcXFxcXFwiI1xcXFxcXFwiK2l0ZW0uZmlsZV9pbmRleCksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJhdmF0YXJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBpdGVtLm5hbWVcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKVxcXFxuICAgICAgICAgICAgfSwgZGlyKVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGNvbnN0IHtcXFxcbiAgICAgICAgICAgIHJlcTEsXFxcXG4gICAgICAgICAgICBhY3Rpdml0eSxcXFxcbiAgICAgICAgICAgIHl1bmJvLFxcXFxuICAgICAgICAgICAgbGF6eTFcXFxcbiAgICAgICAgfSA9ICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKVxcXFxuICAgICAgICBhY3Rpdml0eSgpXFxcXG4gICAgICAgIFxcXFxuICAgICAgICBsZXQgaWQgPSB5dW5ibyhuYW1lLCBNWV9VUkwuc3BsaXQoXFxcXFxcXCIjXFxcXFxcXCIpWzFdLCBmaWxlX2luZGV4KVxcXFxuICAgICAgICByZXR1cm4gbGF6eTEoaWQrXFxcXFxcXCIjXFxcXFxcXCIrbWV0YS5taW1lX3R5cGUrXFxcXFxcXCIjXFxcXFxcXCIrXFxcXFxcXCLliKDpmaRcXFxcXFxcIilcXFxcbiAgICAgICAgXFxcXG4gICAgICAgIC8qXFxcXG4gICAgICAgIGxldCBoZWFkZXIxID0ge1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IFxcXFxcXFwiQW5kcm9pZFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJ4LWRldmljZS1pZFxcXFxcXFwiOiBcXFxcXFxcImI3MWE5MjNlYjBlMjIzOTg0MjU5OWEzYzAxNmI0MDk4XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBcXFxcXFxcIngtZ3VpZFxcXFxcXFwiOiBcXFxcXFxcImM5YjA3NmE0NDY1MTc5NjlkZmY2MzhjZDM3ZmE5ZmYxXFxcXFxcXCJcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBsZXQgdXJsMSA9IFxcXFxcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvbGluaz9nY2lkPVxcXFxcXFwiK21ldGEuaGFzaCtcXFxcXFxcIiZmaWxlX25hbWU9XFxcXFxcXCIrbmFtZStcXFxcXFxcIiZmaWxlX3NpemU9XFxcXFxcXCIrZmlsZV9zaXplK1xcXFxcXFwiJnBhcmFtc1tjaGVja19wcml2aWxlZ2VdPUZMVUVOVF9QTEFZX1RJTUVTX0xJTUlUJnBhcmFtc1t1cmxdPVxcXFxcXFwiK2dldE15VmFyKFxcXFxcXFwic2VhcmNoX3dvcmRcXFxcXFxcIilcXFxcbiAgICAgICAgbGV0IGh0bWwxXFxcXG4gICAgICAgIGh0bWwxID0gcmVxMSh1cmwxLCBoZWFkZXIxKTsgLy9sb2coaHRtbDEpXFxcXG4gICAgICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFxcXFxcIumqjOivgeeggeaXoOaViFxcXFxcXFwiKSBodG1sMSA9IHJlcTEodXJsMSwgaGVhZGVyMSk7IC8vbG9nKGh0bWwxKVxcXFxuICAgICAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24pIHJldHVybiB0b2FzdChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbilcXFxcbiAgICAgICAgbGV0IGlkID0geXVuYm8obmFtZSwgaHRtbDEubGluay51cmwsIGZpbGVfaW5kZXgpXFxcXG4gICAgICAgIHJldHVybiBsYXp5MShpZCtcXFxcXFxcIiNcXFxcXFxcIittZXRhLm1pbWVfdHlwZStcXFxcXFxcIiNcXFxcXFxcIitcXFxcXFxcIuWIoOmZpFxcXFxcXFwiKVxcXFxuICAgICAgICAqL1xcXFxuICAgICAgICBcXFxcbiAgICB9LCBpbnB1dC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIikpXFxcXG59XFxcXG5cXFxcbi8vIOmVv+aMieaMiemSrlxcXFxuZnVuY3Rpb24gbG9uZ2NsaWNrKGl0ZW0pIHtcXFxcbiAgICBpZiAoTVlfVVJMID09IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcXFxcXCIpIHtcXFxcbiAgICBsZXQgYW5uaXUxID0ge1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLliKDpmaRcXFxcXFxcIixcXFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKGlkKSA9PiB7XFxcXG4gICAgICAgICAgICAkLnJlcXVpcmUoXFxcXFxcXCJoYW5zaHVcXFxcXFxcIikuc2hhbmNodShpZClcXFxcbiAgICAgICAgICAgIHJldHVybiB0b2FzdChcXFxcXFxcIuW3suWIoOmZpFxcXFxcXFwiKVxcXFxuICAgICAgICB9LCBpdGVtLmlkKVxcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gW2Fubml1MV1cXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCJcXFxcXFxcIlxcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuLy8g55uY5YaFXFxcXG5mdW5jdGlvbiB5dW5wYW4xKGQpIHtcXFxcbiAgICB0cnl7XFxcXG4gICAgICAgIGFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKT0+e1xcXFxuICAgICAgICAgICAgY2xlYXJNeVZhcihcXFxcXFxcIm5leHRfcGFnZV90b2tlblxcXFxcXFwiKVxcXFxuICAgICAgICB9KSlcXFxcbiAgICAgICAgbGV0IGlkID0gTVlfVVJMLnNwbGl0KFxcXFxcXFwiI1xcXFxcXFwiKVsxXVxcXFxuICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcXFxcXCJuZXh0X3BhZ2VfdG9rZW5cXFxcXFxcIiwgXFxcXFxcXCIwXFxcXFxcXCIpICE9IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgIGxldCB1cmwxID0gJ2h0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL2ZpbGVzP3BhcmVudF9pZD0nK2lkKycmcGFnZV90b2tlbj0nK2dldE15VmFyKFxcXFxcXFwibmV4dF9wYWdlX3Rva2VuXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpKycmZmlsdGVycz17XFxcXFxcXCJ0cmFzaGVkXFxcXFxcXCI6e1xcXFxcXFwiZXFcXFxcXFxcIjpmYWxzZX19JndpdGg9cHVibGljX3NoYXJlX3RhZyZ3aXRoPXRhc2smd2l0aF9hdWRpdD10cnVlJnRodW1ibmFpbF9zaXplPVNJWkVfTEFSR0UnXFxcXG4gICAgICAgICAgICBsZXQgaHRtbDFcXFxcbiAgICAgICAgICAgIGh0bWwxID0gcmVxMSh1cmwxLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgaWYgKGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uID09IFxcXFxcXFwi6aqM6K+B56CB5peg5pWIXFxcXFxcXCIpIGh0bWwxID0gcmVxMSh1cmwxLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgaWYgKGh0bWwxLm5leHRfcGFnZV90b2tlbiAhPSBcXFxcXFxcIlxcXFxcXFwiKSBwdXRNeVZhcihcXFxcXFxcIm5leHRfcGFnZV90b2tlblxcXFxcXFwiLCBodG1sMS5uZXh0X3BhZ2VfdG9rZW4pXFxcXG4gICAgICAgICAgICBsZXQgbGlzdDEgPSBodG1sMS5maWxlc1xcXFxuICAgICAgICAgICAgbGlzdDEuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5uYW1lLFxcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBieXRlc1RvU2l6ZShpdGVtLnNpemUpLFxcXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGl0ZW0ua2luZC5pbmNsdWRlcyhcXFxcXFxcImZvbGRlclxcXFxcXFwiKSA/IFxcXFxcXFwiaGlrZXI6Ly9pbWFnZXMvaWNvbl9mb2xkZXIzXFxcXFxcXCIgOiBpdGVtLmljb25fbGluayxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBsYXp5MShpdGVtLmlkK1xcXFxcXFwiI1xcXFxcXFwiK2l0ZW0ubWltZV90eXBlKSxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0ubmFtZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogbG9uZ2NsaWNrKGl0ZW0pXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfVxcXFxuICAgIH1jYXRjaChlKXtcXFxcbiAgICAgICAgbG9nKGUubWVzc2FnZSlcXFxcbiAgICB9XFxcXG59XFxcXG5cXFxcbi8vIOebmOWkllxcXFxuZnVuY3Rpb24geXVucGFuMihkKSB7XFxcXG4gICAgdHJ5e1xcXFxuICAgICAgICBsZXQgdXJsMVxcXFxuICAgICAgICBsZXQgaHRtbDFcXFxcbiAgICAgICAgbGV0IGxpc3QxXFxcXG4gICAgICAgIGxldCBpZCA9IE1ZX1VSTC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIilbMV1cXFxcbiAgICAgICAgYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAkLnRvU3RyaW5nKCgpPT57XFxcXG4gICAgICAgICAgICBjbGVhck15VmFyKFxcXFxcXFwibmV4dF9wYWdlX3Rva2VuXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICBjbGVhck15VmFyKFxcXFxcXFwiYW5jZXN0b3JfaWRzXFxcXFxcXCIpXFxcXG4gICAgICAgIH0pKVxcXFxuICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcXFxcXCJuZXh0X3BhZ2VfdG9rZW5cXFxcXFxcIiwgXFxcXFxcXCIwXFxcXFxcXCIpICE9IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgIHVybDEgPSAnaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvc2hhcmUvZGV0YWlsP3NoYXJlX2lkPScrZ2V0TXlWYXIoXFxcXFxcXCJzaGFyZV9pZFxcXFxcXFwiKSsnJnBhcmVudF9pZD0nK2lkKycmcGFzc19jb2RlX3Rva2VuPScrZW5jb2RlVVJJQ29tcG9uZW50KGdldE15VmFyKFxcXFxcXFwicGFzc19jb2RlX3Rva2VuXFxcXFxcXCIpKSsnJnRodW1ibmFpbF9zaXplPVNJWkVfU01BTEwmcGFnZV90b2tlbj0nK2dldE15VmFyKFxcXFxcXFwibmV4dF9wYWdlX3Rva2VuXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICBodG1sMSA9IHJlcTEodXJsMSwgXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIilcXFxcbiAgICAgICAgICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFxcXFxcIumqjOivgeeggeaXoOaViFxcXFxcXFwiKSBodG1sMSA9IHJlcTEodXJsMSwgXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIilcXFxcbiAgICAgICAgICAgIGlmIChodG1sMS5uZXh0X3BhZ2VfdG9rZW4gIT0gXFxcXFxcXCJcXFxcXFxcIikgcHV0TXlWYXIoXFxcXFxcXCJuZXh0X3BhZ2VfdG9rZW5cXFxcXFxcIiwgaHRtbDEubmV4dF9wYWdlX3Rva2VuKVxcXFxuICAgICAgICAgICAgbGlzdDEgPSBodG1sMS5maWxlczsgLy9sb2cobGlzdDEpXFxcXG4gICAgICAgICAgICBsaXN0MS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGJ5dGVzVG9TaXplKGl0ZW0uc2l6ZSksXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogaXRlbS5raW5kLmluY2x1ZGVzKFxcXFxcXFwiZm9sZGVyXFxcXFxcXCIpID8gXFxcXFxcXCJoaWtlcjovL2ltYWdlcy9pY29uX2ZvbGRlcjNcXFxcXFxcIiA6IGl0ZW0uaWNvbl9saW5rLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGxhenkyKGl0ZW0uaWQrXFxcXFxcXCIjXFxcXFxcXCIraXRlbS5taW1lX3R5cGUpLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJhdmF0YXJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogaXRlbS5uYW1lXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfVxcXFxuICAgIH1jYXRjaChlKXtcXFxcbiAgICAgICAgbG9nKGUubWVzc2FnZSlcXFxcbiAgICB9XFxcXG59XFxcXG5cXFxcbi8vIOejgeWKm1xcXFxuZnVuY3Rpb24geXVucGFuMyhkKSB7XFxcXG4gICAgdHJ5e1xcXFxuICAgICAgICBsZXQgdXJsMVxcXFxuICAgICAgICBsZXQgaHRtbDFcXFxcbiAgICAgICAgbGV0IGxpc3QxXFxcXG4gICAgICAgIGxldCBpZCA9IE1ZX1VSTC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIilbMV1cXFxcbiAgICAgICAgbGV0IGJvZHkxID0gSlNPTi5zdHJpbmdpZnkoe1xcXFxcXFwidXJsc1xcXFxcXFwiOmlkfSlcXFxcbiAgICAgICAgaHRtbDEgPSByZXEyKFxcXFxcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvcmVzb3VyY2UvbGlzdFxcXFxcXFwiLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiLCBib2R5MSkubGlzdC5yZXNvdXJjZXM7IC8vbG9nKGh0bWwxKVxcXFxuICAgICAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcXFxcXCLpqozor4HnoIHml6DmlYhcXFxcXFxcIikgaHRtbDEgPSByZXEyKFxcXFxcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvcmVzb3VyY2UvbGlzdFxcXFxcXFwiLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiLCBib2R5MSkubGlzdC5yZXNvdXJjZXM7IC8vbG9nKGh0bWwxKVxcXFxuICAgICAgICBpZiAoaHRtbDFbMF0uZGlyKSB7XFxcXG4gICAgICAgICAgICBsaXN0MSA9IGh0bWwxWzBdLmRpci5yZXNvdXJjZXM7IC8vbG9nKGxpc3QxKVxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgbGlzdDEgPSBodG1sMTsgLy9sb2cobGlzdDEpXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgc2V0UGFnZVRpdGxlKGh0bWwxWzBdLm5hbWUpXFxcXG4gICAgICAgIGxpc3QxLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogYnl0ZXNUb1NpemUoaXRlbS5zaXplKSxcXFxcbiAgICAgICAgICAgICAgICBpbWc6IGl0ZW0ubWV0YS5pY29uLFxcXFxuICAgICAgICAgICAgICAgIHVybDogbGF6eTMoaXRlbS5uYW1lK1xcXFxcXFwiI1xcXFxcXFwiK0pTT04uc3RyaW5naWZ5KGl0ZW0ubWV0YSkrXFxcXFxcXCIjXFxcXFxcXCIrSlNPTi5zdHJpbmdpZnkoaXRlbS5kaXIpK1xcXFxcXFwiI1xcXFxcXFwiK2l0ZW0uZmlsZV9zaXplK1xcXFxcXFwiI1xcXFxcXFwiK2l0ZW0uZmlsZV9pbmRleCksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBpdGVtLm5hbWVcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgIH1jYXRjaChlKXtcXFxcbiAgICAgICAgbG9nKGUubWVzc2FnZSlcXFxcbiAgICB9XFxcXG59XFxcXG5cXFxcbi8vIOaQnOe0oueVjOmdolxcXFxuZnVuY3Rpb24gcnVsZTEoZCkge1xcXFxuICAgIHRyeXtcXFxcbiAgICAgICAgY29uc3Qge1xcXFxuICAgICAgICAgICAgcmVxMSxcXFxcbiAgICAgICAgICAgIHJlcTIsXFxcXG4gICAgICAgICAgICBsYXp5MixcXFxcbiAgICAgICAgICAgIGxhenkzXFxcXG4gICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoYW5zaHVcXFxcXFxcIilcXFxcbiAgICAgICAgbGV0IHVybDFcXFxcbiAgICAgICAgbGV0IHVybDJcXFxcbiAgICAgICAgbGV0IGh0bWwxXFxcXG4gICAgICAgIGxldCBsaXN0MVxcXFxuICAgICAgICBpZiAoTVlfVVJMLmluY2x1ZGVzKFxcXFxcXFwieHVubGVpXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgIHVybDIgPSBNWV9VUkwuc3BsaXQoXFxcXFxcXCIjXFxcXFxcXCIpWzFdLnNwbGl0KFxcXFxcXFwiL3MvXFxcXFxcXCIpWzFdLnNwbGl0KFxcXFxcXFwiP3B3ZD1cXFxcXFxcIik7IGxvZyh1cmwyKVxcXFxuICAgICAgICBwdXRNeVZhcihcXFxcXFxcInNoYXJlX2lkXFxcXFxcXCIsIHVybDJbMF0pXFxcXG4gICAgICAgIHVybDEgPSAnaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvc2hhcmU/c2hhcmVfaWQ9Jyt1cmwyWzBdKycmcGFzc19jb2RlPScrdXJsMlsxXSsnJnRodW1ibmFpbF9zaXplPVNJWkVfU01BTEwmcGFyYW1zPXtcXFxcXFxcIm9yaWdpblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCJ9J1xcXFxuICAgICAgICBodG1sMSA9IHJlcTEodXJsMSwgXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIilcXFxcbiAgICAgICAgaWYgKGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uID09IFxcXFxcXFwi6aqM6K+B56CB5peg5pWIXFxcXFxcXCIpIGh0bWwxID0gcmVxMSh1cmwxLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKVxcXFxuICAgICAgICBpZiAoaHRtbDEucGFzc19jb2RlX3Rva2VuICE9IFxcXFxcXFwiXFxcXFxcXCIpIHB1dE15VmFyKFxcXFxcXFwicGFzc19jb2RlX3Rva2VuXFxcXFxcXCIsIGh0bWwxLnBhc3NfY29kZV90b2tlbilcXFxcbiAgICAgICAgaWYgKGh0bWwxLm5leHRfcGFnZV90b2tlbiAhPSBcXFxcXFxcIlxcXFxcXFwiKSBwdXRNeVZhcihcXFxcXFxcIm5leHRfcGFnZV90b2tlblxcXFxcXFwiLCBodG1sMS5uZXh0X3BhZ2VfdG9rZW4pXFxcXG4gICAgICAgIHNldFBhZ2VUaXRsZShodG1sMS50aXRsZSlcXFxcbiAgICAgICAgbGlzdDEgPSBodG1sMS5maWxlczsgLy9sb2cobGlzdDEpXFxcXG4gICAgICAgIGxpc3QxLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogYnl0ZXNUb1NpemUoaXRlbS5zaXplKSxcXFxcbiAgICAgICAgICAgICAgICBpbWc6IGl0ZW0ua2luZC5pbmNsdWRlcyhcXFxcXFxcImZvbGRlclxcXFxcXFwiKSA/IFxcXFxcXFwiaGlrZXI6Ly9pbWFnZXMvaWNvbl9mb2xkZXIzXFxcXFxcXCIgOiBpdGVtLmljb25fbGluayxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IGxhenkyKGl0ZW0uaWQrXFxcXFxcXCIjXFxcXFxcXCIraXRlbS5taW1lX3R5cGUpLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImF2YXRhclxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogaXRlbS5uYW1lXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgdXJsMiA9IE1ZX1VSTC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIilbMV07IGxvZyh1cmwyKVxcXFxuICAgICAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcXFxcXCJ1cmxzXFxcXFxcXCI6dXJsMn0pXFxcXG4gICAgICAgIGh0bWwxID0gcmVxMihcXFxcXFxcImh0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL3Jlc291cmNlL2xpc3RcXFxcXFxcIiwgXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIiwgYm9keTEpOyAvL2xvZyhodG1sMSlcXFxcbiAgICAgICAgaWYgKGh0bWwxLmVycm9yID09IFxcXFxcXFwiY2FwdGNoYV9pbnZhbGlkXFxcXFxcXCIpIGh0bWwxID0gcmVxMihcXFxcXFxcImh0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL3Jlc291cmNlL2xpc3RcXFxcXFxcIiwgXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIiwgYm9keTEpOyAvL2xvZyhodG1sMSlcXFxcbiAgICAgICAgaWYgKGh0bWwxLmxpc3QucmVzb3VyY2VzWzBdLmRpcikge1xcXFxuICAgICAgICAgICAgbGlzdDEgPSBodG1sMS5saXN0LnJlc291cmNlc1swXS5kaXIucmVzb3VyY2VzOyAvL2xvZyhsaXN0MSlcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIGxpc3QxID0gaHRtbDEubGlzdC5yZXNvdXJjZXM7IC8vbG9nKGxpc3QxKVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHNldFBhZ2VUaXRsZShodG1sMS5saXN0LnJlc291cmNlc1swXS5uYW1lKVxcXFxuICAgICAgICBsaXN0MS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5uYW1lLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IGJ5dGVzVG9TaXplKGl0ZW0uZmlsZV9zaXplKSxcXFxcbiAgICAgICAgICAgICAgICBpbWc6IGl0ZW0ubWV0YS5pY29uLFxcXFxuICAgICAgICAgICAgICAgIHVybDogbGF6eTMoaXRlbS5uYW1lK1xcXFxcXFwiI1xcXFxcXFwiK0pTT04uc3RyaW5naWZ5KGl0ZW0ubWV0YSkrXFxcXFxcXCIjXFxcXFxcXCIrSlNPTi5zdHJpbmdpZnkoaXRlbS5kaXIpK1xcXFxcXFwiI1xcXFxcXFwiK2l0ZW0uZmlsZV9zaXplK1xcXFxcXFwiI1xcXFxcXFwiK2l0ZW0uZmlsZV9pbmRleCksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBpdGVtLm5hbWVcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICB9XFxcXG4gICAgfWNhdGNoKGUpe1xcXFxuICAgICAgICBsb2coZS5tZXNzYWdlKVxcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuLy8g6ZO+5o6l5aSE55CGXFxcXG5mdW5jdGlvbiBydWxlMihpbnB1dCkge1xcXFxuICAgIGxldCB1cmwxXFxcXG4gICAgaWYgKGlucHV0LmluY2x1ZGVzKFxcXFxcXFwieHVubGVpXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgIGlmIChpbnB1dC5pbmNsdWRlcyhcXFxcXFxcIj1cXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgIHVybDEgPSBcXFxcXFxcImh0dHBzOi8vcGFuLnh1bmxlaS5jb20vcy9cXFxcXFxcIitpbnB1dC5tYXRjaCgvW0EtWmEtejAtOV8tXXsyNn0vKVswXStcXFxcXFxcIj9wd2Q9XFxcXFxcXCIraW5wdXQubWF0Y2goLz0oXFxcXFxcXFx3ezR9KS8pWzFdXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgaWYgKGlucHV0LmluY2x1ZGVzKFxcXFxcXFwi5o+Q5Y+W56CBXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICB1cmwxID0gXFxcXFxcXCJodHRwczovL3Bhbi54dW5sZWkuY29tL3MvXFxcXFxcXCIraW5wdXQubWF0Y2goL1tBLVphLXowLTlfLV17MjZ9LylbMF0rXFxcXFxcXCI/cHdkPVxcXFxcXFwiK2lucHV0Lm1hdGNoKC/mj5Dlj5bnoIEuKihcXFxcXFxcXHd7NH0pLylbMV1cXFxcbiAgICAgICAgfVxcXFxuICAgIH0gZWxzZSBpZiAoLyhtYWduZXQ6fGVkMms6fGJ0OnxmdHA6fFxcXFxcXFxcLnRvcnJlbnQpLy50ZXN0KGlucHV0KSkge1xcXFxuICAgICAgICB1cmwxID0gaW5wdXRcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICB1cmwxID0gXFxcXFxcXCJcXFxcXFxcIlxcXFxuICAgIH1cXFxcbiAgICBpZiAodXJsMSAhPSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgICAgIHB1dE15VmFyKFxcXFxcXFwic2VhcmNoX3dvcmRcXFxcXFxcIiwgdXJsMSlcXFxcbiAgICAgICAgcmV0dXJuICQoXFxcXFxcXCJoaWtlcjovL2VtcHR5I1xcXFxcXFwiK3VybDErXFxcXFxcXCIjbm9Mb2FkaW5nI1xcXFxcXFwiKS5ydWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgIGNvbnN0IGQgPSBbXVxcXFxuICAgICAgICAgICAgJC5yZXF1aXJlKFxcXFxcXFwiaGFuc2h1XFxcXFxcXCIpLnJ1bGUxKGQpXFxcXG4gICAgICAgICAgICBzZXRSZXN1bHQoZClcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9XFxcXG59XFxcXG5cXFxcbi8vIOi9rOWtmOaWh+S7tuWIsOebmOWGhVxcXFxuZnVuY3Rpb24gemh1YW5jdW4oaWQpIHtcXFxcbiAgICBsZXQgYW5jZXN0b3JfaWRzID0gZ2V0TXlWYXIoXFxcXFxcXCJhbmNlc3Rvcl9pZHNcXFxcXFxcIikgPT0gXFxcXFxcXCJcXFxcXFxcIiA/IFtdIDogW2dldE15VmFyKFxcXFxcXFwiYW5jZXN0b3JfaWRzXFxcXFxcXCIpXVxcXFxuICAgIGxldCB1cmwxID0gXFxcXFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9zaGFyZS9yZXN0b3JlXFxcXFxcXCJcXFxcbiAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcXFxcXCJwYXJlbnRfaWRcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwic3BlY2lmeV9wYXJlbnRfaWRcXFxcXFxcIjp0cnVlLFxcXFxcXFwic2hhcmVfaWRcXFxcXFxcIjpnZXRNeVZhcihcXFxcXFxcInNoYXJlX2lkXFxcXFxcXCIpLFxcXFxcXFwicGFzc19jb2RlX3Rva2VuXFxcXFxcXCI6Z2V0TXlWYXIoXFxcXFxcXCJwYXNzX2NvZGVfdG9rZW5cXFxcXFxcIiksXFxcXFxcXCJmaWxlX2lkc1xcXFxcXFwiOltpZF0sXFxcXFxcXCJhbmNlc3Rvcl9pZHNcXFxcXFxcIjphbmNlc3Rvcl9pZHN9KVxcXFxuICAgIHJlcTIodXJsMSwgXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIiwgYm9keTEpXFxcXG4gICAgamF2YS5sYW5nLlRocmVhZC5zbGVlcCgxMDAwKVxcXFxuICAgIGxldCBodG1sMlxcXFxuICAgIGh0bWwyID0gcmVxMSgnaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvZmlsZXM/cGFyZW50X2lkPSZwYWdlX3Rva2VuPSZmaWx0ZXJzPXtcXFxcXFxcInRyYXNoZWRcXFxcXFxcIjp7XFxcXFxcXCJlcVxcXFxcXFwiOmZhbHNlfX0md2l0aD1wdWJsaWNfc2hhcmVfdGFnJndpdGg9dGFzayZ3aXRoX2F1ZGl0PXRydWUmdGh1bWJuYWlsX3NpemU9U0laRV9MQVJHRScsIFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIpLmZpbGVzWzBdOyAvL2xvZyhodG1sMilcXFxcbiAgICBpZiAoaHRtbDIuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcXFxcXCLpqozor4HnoIHml6DmlYhcXFxcXFxcIikgaHRtbDIgPSByZXExKCdodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9maWxlcz9wYXJlbnRfaWQ9JnBhZ2VfdG9rZW49JmZpbHRlcnM9e1xcXFxcXFwidHJhc2hlZFxcXFxcXFwiOntcXFxcXFxcImVxXFxcXFxcXCI6ZmFsc2V9fSZ3aXRoPXB1YmxpY19zaGFyZV90YWcmd2l0aD10YXNrJndpdGhfYXVkaXQ9dHJ1ZSZ0aHVtYm5haWxfc2l6ZT1TSVpFX0xBUkdFJywgXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIikuZmlsZXNbMF07IC8vbG9nKGh0bWwyKVxcXFxuICAgIHJldHVybiBodG1sMi5pZCtcXFxcXFxcIiNcXFxcXFxcIisoaHRtbDIubWltZV90eXBlfHxcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKStcXFxcXFxcIiNcXFxcXFxcIitcXFxcXFxcIuWIoOmZpFxcXFxcXFwiXFxcXG59XFxcXG5cXFxcbi8vIOWIoOmZpOebmOWGheaWh+S7tlxcXFxuZnVuY3Rpb24gc2hhbmNodShpZCkge1xcXFxuICAgIGxldCBib2R5MSA9IEpTT04uc3RyaW5naWZ5KHtcXFxcXFxcImlkc1xcXFxcXFwiOltpZF0sXFxcXFxcXCJzcGFjZVxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCJ9KVxcXFxuICAgIHJlcTIoXFxcXFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9maWxlczpiYXRjaERlbGV0ZVxcXFxcXFwiLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiLCBib2R5MSlcXFxcbn1cXFxcblxcXFxuLy9ieSBMb3lEZ0lrIOS9rFxcXFxuZnVuY3Rpb24gYnl0ZXNUb1NpemUoc2l6ZSkge1xcXFxuICAgIGlmIChzaXplID09PSBcXFxcXFxcIjBcXFxcXFxcIikge1xcXFxuICAgICAgICByZXR1cm4gJyc7XFxcXG4gICAgfVxcXFxuICAgIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XFxcXG4gICAgbGV0IGkgPSAwO1xcXFxuICAgIHdoaWxlIChzaXplID49IDEwMjQpIHtcXFxcbiAgICAgICAgc2l6ZSAvPSAxMDI0O1xcXFxuICAgICAgICBpKys7XFxcXG4gICAgfVxcXFxuICAgIHNpemUgPSBpID8gTnVtYmVyKHNpemUudG9GaXhlZCgyKSkgOiBzaXplO1xcXFxuICAgIHJldHVybiBgJHtzaXplfSAke3VuaXRzW2ldfWA7XFxcXG59XFxcXG5cXFxcbiQuZXhwb3J0cyA9IHtcXFxcbiAgICByZXExLFxcXFxuICAgIHJlcTIsXFxcXG4gICAgc2VuZHNtcyxcXFxcbiAgICBzbXNsb2dpbixcXFxcbiAgICBsb2dpbixcXFxcbiAgICBzaWduaW4sXFxcXG4gICAgYWNjZXNzX3Rva2VuLFxcXFxuICAgIGNhcHRjaGEsXFxcXG4gICAgYWN0aXZpdHksXFxcXG4gICAgeXVuYm8sXFxcXG4gICAgeXVucGFuMSxcXFxcbiAgICB5dW5wYW4yLFxcXFxuICAgIHl1bnBhbjMsXFxcXG4gICAgbGF6eTEsXFxcXG4gICAgbGF6eTIsXFxcXG4gICAgbGF6eTMsXFxcXG4gICAgcnVsZTEsXFxcXG4gICAgcnVsZTIsXFxcXG4gICAgemh1YW5jdW4sXFxcXG4gICAgc2hhbmNodSxcXFxcbiAgICBieXRlc1RvU2l6ZVxcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIueZu+W9leeVjOmdolxcXCIsXFxcInBhdGhcXFwiOlxcXCJkZW5nbHVcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG5jb25zdCBkID0gW11cXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwi5omL5py66aqM6K+B55m75b2VXFxcXFxcXCIsXFxcXG4gICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIixcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCIsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxcXG4gICAgfVxcXFxufSlcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgZGVzYzogXFxcXFxcXCLor7fovpPlhaXmiYvmnLrlj7dcXFxcXFxcIixcXFxcbiAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcImlucHV0XFxcXFxcXCIsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXFxcbiAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwic2V0SXRlbSgnbW9iaWxlJyxpbnB1dClcXFxcXFxcIlxcXFxuICAgIH1cXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIuKAnOKAnOiOt+WPlumqjOivgeeggeKAnOKAnFxcXFxcXFwiLFxcXFxuICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgc2V0SXRlbShcXFxcXFxcIm1vYmlsZVxcXFxcXFwiLCBnZXRJdGVtKCdtb2JpbGUnKSlcXFxcbiAgICAgICAgJC5yZXF1aXJlKFxcXFxcXFwiaGFuc2h1XFxcXFxcXCIpLnNlbmRzbXMoKVxcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICB9KSxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCIsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxcXG4gICAgfVxcXFxufSlcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgZGVzYzogXFxcXFxcXCLor7fovpPlhaXpqozor4HnoIFcXFxcXFxcIixcXFxcbiAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcImlucHV0XFxcXFxcXCIsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXFxcbiAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwicHV0TXlWYXIoJ3Ntc0NvZGUnLGlucHV0KVxcXFxcXFwiXFxcXG4gICAgfVxcXFxufSlcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCc56Gu6K6k4oCc4oCcXFxcXFxcXCIsXFxcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICBwdXRNeVZhcihcXFxcXFxcInNtc0NvZGVcXFxcXFxcIiwgZ2V0TXlWYXIoJ3Ntc0NvZGUnKSlcXFxcbiAgICAgICAgJC5yZXF1aXJlKFxcXFxcXFwiaGFuc2h1XFxcXFxcXCIpLnNtc2xvZ2luKClcXFxcbiAgICAgICAgYmFjayh0cnVlKVxcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICB9KSxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCJcXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcImJsYW5rX2Jsb2NrXFxcXFxcXCJcXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIui0puWPt+WvhueggeeZu+W9lVxcXFxcXFwiLFxcXFxuICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcXFxuICAgIH1cXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIGRlc2M6IFxcXFxcXFwi6K+36L6T5YWl5omL5py65Y+3L+mCrueusS/otKblj7dcXFxcXFxcIixcXFxcbiAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcImlucHV0XFxcXFxcXCIsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXFxcbiAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwic2V0SXRlbSgnbW9iaWxlJyxpbnB1dClcXFxcXFxcIlxcXFxuICAgIH1cXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIGRlc2M6IFxcXFxcXFwi6K+36L6T5YWl5a+G56CBXFxcXFxcXCIsXFxcXG4gICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIixcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJpbnB1dFxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxcXG4gICAgICAgIG9uQ2hhbmdlOiBcXFxcXFxcInNldEl0ZW0oJ3Bhc3NXb3JkJyxpbnB1dClcXFxcXFxcIlxcXFxuICAgIH1cXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIuKAnOKAnOehruiupOKAnOKAnFxcXFxcXFwiLFxcXFxuICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgc2V0SXRlbShcXFxcXFxcIm1vYmlsZVxcXFxcXFwiLCBnZXRJdGVtKCdtb2JpbGUnKSlcXFxcbiAgICAgICAgc2V0SXRlbShcXFxcXFxcInBhc3NXb3JkXFxcXFxcXCIsIGdldEl0ZW0oJ3Bhc3NXb3JkJykpXFxcXG4gICAgICAgICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKS5sb2dpbigpXFxcXG4gICAgICAgIGJhY2sodHJ1ZSlcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgfSksXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcXFxuICAgIH1cXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLigJzigJzigJ3igJ08c3Ryb25nPuS9v+eUqOWJjemhu+efpTwvc3Ryb25nPlxcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXFxcbiAgICAgICAgfVxcXFxufSlcXFxcbmQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIjEuIOacrOWwj+eoi+W6j+aJgOacieS7o+eggeWFqOmDqOW8gOa6kO+8jOS4lOacrOinhOWImeS4uuWtpuS5oOebrueahO+8jOivt+S6juWvvOWFpTI05bCP5pe25YaF5Yig6Zmk77yB77yB77yBPGJyPjIuIOinhumikeaWh+S7tuS4jeW8gOaegemAn+aSree9kemAnzNNL3PvvIzlvIDmnoHpgJ/mkq3liJkzME0vcyAo5Y+v6IO95Lmf5pSv5oyB5pKt5pS+6Z+z6aKR77yM5p+l55yL5Zu+54mH5ZKM55u05o6l5LiL6L295YW25a6D57G75Z6L55qE5paH5Lu2Ke+8ge+8ge+8gTxicj4zLiDlsI/nqIvluo/ku4XpppbpobXnmoTmlofku7bmlK/mjIHpgJrov4fplb/mjInliKDpmaQ8YnI+NC4g5pys56iL5bqP5Li65YW25a6D5bCP56iL5bqP5o+Q5L6b5LqG6LCD55So5o6l5Y+j77yM6LCD55So5L6L5a2Q6K+35Y+C6ICDKOWtkOmhtemdoi3osIPnlKjnlYzpnaIp5rOo6YeK6YOo5YiG55qE5Luj56CBXFxcXFxcXCIsXFxcXG4gICAgICAgIFxcXFxcXFwiY29sX3R5cGVcXFxcXFxcIjogXFxcXFxcXCJyaWNoX3RleHRcXFxcXFxcIlxcXFxufSlcXFxcbnNldFJlc3VsdChkKVxcXFxuXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6LCD55So6aG16Z2iXFxcIixcXFwicGF0aFxcXCI6XFxcImRpYW95b25nXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxuXFxcXG4vKlxcXFxu6LCD55So5L6L5a2QXFxcXG4qL1xcXFxuXFxcXG4vKlxcXFxuXFxcXG4vLyDov4Xpm7fpk77mjqXkvovlrZDvvJpcXFxcbmxldCB1cmwxID0gXFxcXFxcXCJodHRwczovL3Bhbi54dW5sZWkuY29tL3MvVk8yT01Yb1JHVFhRNGc2aHkxeUhpMVZYQTE/cHdkPWU2Y2pcXFxcXFxcIlxcXFxuXFxcXG4vLyDno4Hlipvpk77mjqXkvovlrZDvvJpcXFxcbmxldCB1cmwxID0gXFxcXFxcXCJtYWduZXQ6P3h0PXVybjpidGloOjY5OTllNmQ4Y2I3NGQ1MTNjOWYzYmY0Mzg0MGZhNjg2NzU3MWZhM2NcXFxcXFxcIlxcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIui/hembt+iwg+eUqOa1i+ivlVxcXFxcXFwiLFxcXFxuICAgIHVybDogJCh1cmwxKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgIGlmICgvKHh1bmxlaXxtYWduZXQ6fGVkMms6fGJ0OnxmdHA6fFxcXFxcXFxcLnRvcnJlbnQpLy50ZXN0KGlucHV0KSkge1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2RpYW95b25nP3J1bGU96L+F6Zu3JnBhZ2U9ZnlwYWdlI1xcXFxcXFwiICsgaW5wdXRcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIlxcXFxufSlcXFxcblxcXFxuKi9cXFxcblxcXFxuY29uc3Qge1xcXFxuICAgIHJlcTEsXFxcXG4gICAgcnVsZTEsXFxcXG4gICAgYnl0ZXNUb1NpemVcXFxcbn0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoYW5zaHVcXFxcXFxcIilcXFxcbmNvbnN0IGQgPSBbXTtcXFxcbmxldCBkZXNjMTtcXFxcblxcXFxuaWYgKGdldEl0ZW0oXFxcXFxcXCJtb2JpbGVcXFxcXFxcIikgIT0gXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIikge1xcXFxuICAgIGxldCBodG1sMTtcXFxcbiAgICBodG1sMSA9IHJlcTEoXFxcXFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9hYm91dD93aXRoX3F1b3Rhcz1DUkVBVEVfT0ZGTElORV9UQVNLX0xJTUlUXFxcXFxcXCIsIFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIpO1xcXFxuICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFxcXFxcIuW4kOWPt+iupOivgeWksei0pe+8jOivt+mHjeaWsOeZu+W9lVxcXFxcXFwiKSBodG1sMSA9IHJlcTEoXFxcXFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9hYm91dD93aXRoX3F1b3Rhcz1DUkVBVEVfT0ZGTElORV9UQVNLX0xJTUlUXFxcXFxcXCIsIFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIpO1xcXFxuICAgIGlmICghaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24pIGRlc2MxID0gXFxcXFxcXCLlt7Lkvb/nlKhcXFxcXFxcIitieXRlc1RvU2l6ZShodG1sMS5xdW90YS51c2FnZSkrXFxcXFxcXCIvXFxcXFxcXCIrXFxcXFxcXCLlhbFcXFxcXFxcIitieXRlc1RvU2l6ZShodG1sMS5xdW90YS5saW1pdCk7XFxcXG59XFxcXG5cXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwi6LSm5Y+3566h55CGXFxcXFxcXCIsXFxcXG4gICAgZGVzYzogZGVzYzEgfHwgXFxcXFxcXCLmnKrnmbvlvZVcXFxcXFxcIixcXFxcbiAgICBpbWc6IFxcXFxcXFwiaHR0cHM6Ly9pY2RuLmJpbm10LmNjLzI1MDUvNjgxOTZkMWM4ZTk5My5wbmdcXFxcXFxcIixcXFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgIHJldHVybiAkKFtcXFxcXFxcIueZu+W9lVxcXFxcXFwiLCBcXFxcXFxcIumAgOWHulxcXFxcXFwiXSkuc2VsZWN0KCgpID0+IHtcXFxcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PT0gXFxcXFxcXCLnmbvlvZVcXFxcXFxcIikgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2RlbmdsdSNub1JlY29yZEhpc3RvcnkjI25vSGlzdG9yeSNcXFxcXFxcIjtcXFxcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PT0gXFxcXFxcXCLpgIDlh7pcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgIGxldCBrZXlzID0gW1xcXFxcXFwibW9iaWxlXFxcXFxcXCIsIFxcXFxcXFwicGFzc1dvcmRcXFxcXFxcIiwgXFxcXFxcXCJzZXNzaW9uSURcXFxcXFxcIiwgXFxcXFxcXCJ1c2VyX2lkXFxcXFxcXCIsIFxcXFxcXFwiYXV0aG9yaXphdGlvblxcXFxcXFwiLCBcXFxcXFxcInJlZnJlc2hfdG9rZW5cXFxcXFxcIl07XFxcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaXQgb2Yga2V5cykge1xcXFxuICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oaXQpO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KTtcXFxcbiAgICB9KSxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJhdmF0YXJcXFxcXFxcIlxcXFxufSk7XFxcXG5cXFxcbmQucHVzaCh7XFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwibGluZV9ibGFua1xcXFxcXFwiXFxcXG59KVxcXFxuXFxcXG5ydWxlMShkKTtcXFxcblxcXFxuc2V0UmVzdWx0KGQpO1xcXCJ9XVwiLFwicHJveHlcIjpcIlwifSIsInBpY1VybCI6Imhpa2VyOi8vZmlsZXMvY2FjaGUvRlkvaW1hZ2Uv5LqR55uYLnBuZyIsInRpdGxlIjoi55S75rGf5rmW5LmL5LiN6Imv5Lq6IOesrDA15a2jIDRLIn0=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement