Advertisement
xiaomianao666

邀您一起看:Black.Mirror.S07.ITA.ENG.1080p.NF.WEB-DL.DDP5.1.H.264-MeM.GP

May 16th, 2025
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥Black.Mirror.S07.ITA.ENG.1080p.NF.WEB-DL.DDP5.1.H.264-MeM.GP@@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+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBieXRlc1RvU2l6ZShpdGVtLnNpemUpLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBpdGVtLmtpbmQuaW5jbHVkZXMoXFxcImZvbGRlclxcXCIpID8gXFxcImhpa2VyOi8vaW1hZ2VzL2ljb25fZm9sZGVyM1xcXCIgOiBpdGVtLmljb25fbGluayxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogbGF6eTIoaXRlbS5pZCtcXFwiI1xcXCIraXRlbS5taW1lX3R5cGUpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0ubmFtZVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH1jYXRjaChlKXtcXG4gICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxuICAgIH1cXG59XFxuXFxuLy8g56OB5YqbXFxuZnVuY3Rpb24geXVucGFuMyhkKSB7XFxuICAgIHRyeXtcXG4gICAgICAgIGxldCB1cmwxXFxuICAgICAgICBsZXQgaHRtbDFcXG4gICAgICAgIGxldCBsaXN0MVxcbiAgICAgICAgbGV0IGlkID0gTVlfVVJMLnNwbGl0KFxcXCIjXFxcIilbMV1cXG4gICAgICAgIGxldCBib2R5MSA9IEpTT04uc3RyaW5naWZ5KHtcXFwidXJsc1xcXCI6aWR9KVxcbiAgICAgICAgaHRtbDEgPSByZXEyKFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9yZXNvdXJjZS9saXN0XFxcIiwgXFxcInVuZGVmaW5lZFxcXCIsIGJvZHkxKS5saXN0LnJlc291cmNlczsgLy9sb2coaHRtbDEpXFxuICAgICAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcIumqjOivgeeggeaXoOaViFxcXCIpIGh0bWwxID0gcmVxMihcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvcmVzb3VyY2UvbGlzdFxcXCIsIFxcXCJ1bmRlZmluZWRcXFwiLCBib2R5MSkubGlzdC5yZXNvdXJjZXM7IC8vbG9nKGh0bWwxKVxcbiAgICAgICAgaWYgKGh0bWwxWzBdLmRpcikge1xcbiAgICAgICAgICAgIGxpc3QxID0gaHRtbDFbMF0uZGlyLnJlc291cmNlczsgLy9sb2cobGlzdDEpXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGxpc3QxID0gaHRtbDE7IC8vbG9nKGxpc3QxKVxcbiAgICAgICAgfVxcbiAgICAgICAgc2V0UGFnZVRpdGxlKGh0bWwxWzBdLm5hbWUpXFxuICAgICAgICBsaXN0MS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGJ5dGVzVG9TaXplKGl0ZW0uc2l6ZSksXFxuICAgICAgICAgICAgICAgIGltZzogaXRlbS5tZXRhLmljb24sXFxuICAgICAgICAgICAgICAgIHVybDogbGF6eTMoaXRlbS5uYW1lK1xcXCIjXFxcIitKU09OLnN0cmluZ2lmeShpdGVtLm1ldGEpK1xcXCIjXFxcIitKU09OLnN0cmluZ2lmeShpdGVtLmRpcikrXFxcIiNcXFwiK2l0ZW0uZmlsZV9zaXplK1xcXCIjXFxcIitpdGVtLmZpbGVfaW5kZXgpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0ubmFtZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH1jYXRjaChlKXtcXG4gICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxuICAgIH1cXG59XFxuXFxuLy8g5pCc57Si55WM6Z2iXFxuZnVuY3Rpb24gcnVsZTEoZCkge01ZX1VSTD1NWV9VUkwucmVwbGFjZSgvXmhpa2VyOlxcXFwvXFxcXC9wYWdlLio/Iy8sJycpLnJlcGxhY2UoLyMjLywnIycpO1xcbiAgICBsb2coJ01ZX1VSTDonK01ZX1VSTCk7XFxuICAgIHRyeXtcXG4gICAgICAgIGNvbnN0IHtcXG4gICAgICAgICAgICByZXExLFxcbiAgICAgICAgICAgIHJlcTIsXFxuICAgICAgICAgICAgbGF6eTIsXFxuICAgICAgICAgICAgbGF6eTNcXG4gICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhhbnNodVxcXCIpXFxuICAgICAgICBsZXQgdXJsMVxcbiAgICAgICAgbGV0IHVybDJcXG4gICAgICAgIGxldCBodG1sMVxcbiAgICAgICAgbGV0IGxpc3QxXFxuICAgICAgICBpZiAoTVlfVVJMLmluY2x1ZGVzKFxcXCJ4dW5sZWlcXFwiKSkge1xcbiAgICAgICAgdXJsMiA9IE1ZX1VSTC5zcGxpdChcXFwiI1xcXCIpWzFdLnNwbGl0KFxcXCIvcy9cXFwiKVsxXS5zcGxpdChcXFwiP3B3ZD1cXFwiKTsgXFxuICAgICAgICBwdXRNeVZhcihcXFwic2hhcmVfaWRcXFwiLCB1cmwyWzBdKVxcbiAgICAgICAgdXJsMSA9ICdodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9zaGFyZT9zaGFyZV9pZD0nK3VybDJbMF0rJyZwYXNzX2NvZGU9Jyt1cmwyWzFdKycmdGh1bWJuYWlsX3NpemU9U0laRV9TTUFMTCZwYXJhbXM9e1xcXCJvcmlnaW5cXFwiOlxcXCJcXFwifSdcXG4gICAgICAgIGh0bWwxID0gcmVxMSh1cmwxLCBcXFwidW5kZWZpbmVkXFxcIilcXG4gICAgICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFwi6aqM6K+B56CB5peg5pWIXFxcIikgaHRtbDEgPSByZXExKHVybDEsIFxcXCJ1bmRlZmluZWRcXFwiKVxcbiAgICAgICAgaWYgKGh0bWwxLnBhc3NfY29kZV90b2tlbiAhPSBcXFwiXFxcIikgcHV0TXlWYXIoXFxcInBhc3NfY29kZV90b2tlblxcXCIsIGh0bWwxLnBhc3NfY29kZV90b2tlbilcXG4gICAgICAgIGlmIChodG1sMS5uZXh0X3BhZ2VfdG9rZW4gIT0gXFxcIlxcXCIpIHB1dE15VmFyKFxcXCJuZXh0X3BhZ2VfdG9rZW5cXFwiLCBodG1sMS5uZXh0X3BhZ2VfdG9rZW4pXFxuICAgICAgICBzZXRQYWdlVGl0bGUoaHRtbDEudGl0bGUpXFxuICAgICAgICBsaXN0MSA9IGh0bWwxLmZpbGVzOyAvL2xvZyhsaXN0MSlcXG4gICAgICAgIGxpc3QxLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogYnl0ZXNUb1NpemUoaXRlbS5zaXplKSxcXG4gICAgICAgICAgICAgICAgaW1nOiBpdGVtLmtpbmQuaW5jbHVkZXMoXFxcImZvbGRlclxcXCIpID8gXFxcImhpa2VyOi8vaW1hZ2VzL2ljb25fZm9sZGVyM1xcXCIgOiBpdGVtLmljb25fbGluayxcXG4gICAgICAgICAgICAgICAgdXJsOiBsYXp5MihpdGVtLmlkK1xcXCIjXFxcIitpdGVtLm1pbWVfdHlwZSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogaXRlbS5uYW1lXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICB1cmwyID0gTVlfVVJMLnNwbGl0KFxcXCIjXFxcIilbMV07IGxvZyh1cmwyKVxcbiAgICAgICAgbGV0IGJvZHkxID0gSlNPTi5zdHJpbmdpZnkoe1xcXCJ1cmxzXFxcIjp1cmwyfSlcXG4gICAgICAgIGh0bWwxID0gcmVxMihcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvcmVzb3VyY2UvbGlzdFxcXCIsIFxcXCJ1bmRlZmluZWRcXFwiLCBib2R5MSk7IC8vbG9nKGh0bWwxKVxcbiAgICAgICAgaWYgKGh0bWwxLmVycm9yID09IFxcXCJjYXB0Y2hhX2ludmFsaWRcXFwiKSBodG1sMSA9IHJlcTIoXFxcImh0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL3Jlc291cmNlL2xpc3RcXFwiLCBcXFwidW5kZWZpbmVkXFxcIiwgYm9keTEpOyAvL2xvZyhodG1sMSlcXG4gICAgICAgIGlmIChodG1sMS5saXN0LnJlc291cmNlc1swXS5kaXIpIHtcXG4gICAgICAgICAgICBsaXN0MSA9IGh0bWwxLmxpc3QucmVzb3VyY2VzWzBdLmRpci5yZXNvdXJjZXM7IC8vbG9nKGxpc3QxKVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBsaXN0MSA9IGh0bWwxLmxpc3QucmVzb3VyY2VzOyAvL2xvZyhsaXN0MSlcXG4gICAgICAgIH1cXG4gICAgICAgIHNldFBhZ2VUaXRsZShodG1sMS5saXN0LnJlc291cmNlc1swXS5uYW1lKVxcbiAgICAgICAgbGlzdDEuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5uYW1lLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBieXRlc1RvU2l6ZShpdGVtLmZpbGVfc2l6ZSksXFxuICAgICAgICAgICAgICAgIGltZzogaXRlbS5tZXRhLmljb24sXFxuICAgICAgICAgICAgICAgIHVybDogbGF6eTMoaXRlbS5uYW1lK1xcXCIjXFxcIitKU09OLnN0cmluZ2lmeShpdGVtLm1ldGEpK1xcXCIjXFxcIitKU09OLnN0cmluZ2lmeShpdGVtLmRpcikrXFxcIiNcXFwiK2l0ZW0uZmlsZV9zaXplK1xcXCIjXFxcIitpdGVtLmZpbGVfaW5kZXgpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0ubmFtZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH1jYXRjaChlKXtcXG4gICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxuICAgIH1cXG59XFxuXFxuLy8g6ZO+5o6l5aSE55CGXFxuZnVuY3Rpb24gcnVsZTIoaW5wdXQpIHtsb2coJ2lucHV0OicraW5wdXQpO1xcbiAgICBsZXQgdXJsMVxcbiAgICBpZiAoaW5wdXQuaW5jbHVkZXMoXFxcInh1bmxlaVxcXCIpKSB7XFxuICAgICAgICBpZiAoaW5wdXQuaW5jbHVkZXMoXFxcIj1cXFwiKSkge1xcbiAgICAgICAgICAgIHVybDEgPSBcXFwiaHR0cHM6Ly9wYW4ueHVubGVpLmNvbS9zL1xcXCIraW5wdXQubWF0Y2goL1tBLVphLXowLTlfLV17MjZ9LylbMF0rXFxcIj9wd2Q9XFxcIitpbnB1dC5tYXRjaCgvPShcXFxcd3s0fSkvKVsxXVxcbiAgICAgICAgICAgIFxcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGlucHV0LmluY2x1ZGVzKFxcXCLmj5Dlj5bnoIFcXFwiKSkge1xcbiAgICAgICAgICAgIHVybDEgPSBcXFwiaHR0cHM6Ly9wYW4ueHVubGVpLmNvbS9zL1xcXCIraW5wdXQubWF0Y2goL1tBLVphLXowLTlfLV17MjZ9LylbMF0rXFxcIj9wd2Q9XFxcIitpbnB1dC5tYXRjaCgv5o+Q5Y+W56CBLiooXFxcXHd7NH0pLylbMV1cXG4gICAgICAgIH1cXG4gICAgfSBlbHNlIGlmICgvKG1hZ25ldDp8ZWQyazp8YnQ6fGZ0cDp8XFxcXC50b3JyZW50KS8udGVzdChpbnB1dCkpIHtcXG4gICAgICAgIHVybDEgPSBpbnB1dFxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgdXJsMSA9IFxcXCJcXFwiXFxuICAgIH1cXG4gICAgaWYgKHVybDEgIT0gXFxcIlxcXCIpIHtsb2coJ3J1bGUxOicpXFxuICAgICAgICBwdXRNeVZhcihcXFwic2VhcmNoX3dvcmRcXFwiLCB1cmwxKVxcbiAgICAgICAgcmV0dXJuICQoXFxcImhpa2VyOi8vZW1wdHkjXFxcIit1cmwxK1xcXCIjbm9Mb2FkaW5nI1xcXCIpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIGNvbnN0IGQgPSBbXVxcbiAgICAgICAgICAgICQucmVxdWlyZShcXFwiaGFuc2h1XFxcIikucnVsZTEoZClcXG4gICAgICAgICAgICBzZXRSZXN1bHQoZClcXG4gICAgICAgIH0pXFxuICAgIH1cXG59XFxuXFxuLy8g6L2s5a2Y5paH5Lu25Yiw55uY5YaFXFxuZnVuY3Rpb24gemh1YW5jdW4oaWQpIHtcXG4gICAgbGV0IGFuY2VzdG9yX2lkcyA9IGdldE15VmFyKFxcXCJhbmNlc3Rvcl9pZHNcXFwiKSA9PSBcXFwiXFxcIiA/IFtdIDogW2dldE15VmFyKFxcXCJhbmNlc3Rvcl9pZHNcXFwiKV1cXG4gICAgbGV0IHVybDEgPSBcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvc2hhcmUvcmVzdG9yZVxcXCJcXG4gICAgbGV0IGJvZHkxID0gSlNPTi5zdHJpbmdpZnkoe1xcXCJwYXJlbnRfaWRcXFwiOlxcXCJcXFwiLFxcXCJzcGVjaWZ5X3BhcmVudF9pZFxcXCI6dHJ1ZSxcXFwic2hhcmVfaWRcXFwiOmdldE15VmFyKFxcXCJzaGFyZV9pZFxcXCIpLFxcXCJwYXNzX2NvZGVfdG9rZW5cXFwiOmdldE15VmFyKFxcXCJwYXNzX2NvZGVfdG9rZW5cXFwiKSxcXFwiZmlsZV9pZHNcXFwiOltpZF0sXFxcImFuY2VzdG9yX2lkc1xcXCI6YW5jZXN0b3JfaWRzfSlcXG4gICAgcmVxMih1cmwxLCBcXFwidW5kZWZpbmVkXFxcIiwgYm9keTEpXFxuICAgIGphdmEubGFuZy5UaHJlYWQuc2xlZXAoMTAwMClcXG4gICAgbGV0IGh0bWwyXFxuICAgIGh0bWwyID0gcmVxMSgnaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvZmlsZXM/cGFyZW50X2lkPSZwYWdlX3Rva2VuPSZmaWx0ZXJzPXtcXFwidHJhc2hlZFxcXCI6e1xcXCJlcVxcXCI6ZmFsc2V9fSZ3aXRoPXB1YmxpY19zaGFyZV90YWcmd2l0aD10YXNrJndpdGhfYXVkaXQ9dHJ1ZSZ0aHVtYm5haWxfc2l6ZT1TSVpFX0xBUkdFJywgXFxcInVuZGVmaW5lZFxcXCIpLmZpbGVzWzBdOyAvL2xvZyhodG1sMilcXG4gICAgaWYgKGh0bWwyLmVycm9yX2Rlc2NyaXB0aW9uID09IFxcXCLpqozor4HnoIHml6DmlYhcXFwiKSBodG1sMiA9IHJlcTEoJ2h0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL2ZpbGVzP3BhcmVudF9pZD0mcGFnZV90b2tlbj0mZmlsdGVycz17XFxcInRyYXNoZWRcXFwiOntcXFwiZXFcXFwiOmZhbHNlfX0md2l0aD1wdWJsaWNfc2hhcmVfdGFnJndpdGg9dGFzayZ3aXRoX2F1ZGl0PXRydWUmdGh1bWJuYWlsX3NpemU9U0laRV9MQVJHRScsIFxcXCJ1bmRlZmluZWRcXFwiKS5maWxlc1swXTsgLy9sb2coaHRtbDIpXFxuICAgIHJldHVybiBodG1sMi5pZCtcXFwiI1xcXCIrKGh0bWwyLm1pbWVfdHlwZXx8XFxcInVuZGVmaW5lZFxcXCIpK1xcXCIjXFxcIitcXFwi5Yig6ZmkXFxcIlxcbn1cXG5cXG4vLyDliKDpmaTnm5jlhoXmlofku7ZcXG5mdW5jdGlvbiBzaGFuY2h1KGlkKSB7XFxuICAgIGxldCBib2R5MSA9IEpTT04uc3RyaW5naWZ5KHtcXFwiaWRzXFxcIjpbaWRdLFxcXCJzcGFjZVxcXCI6XFxcIlxcXCJ9KVxcbiAgICByZXEyKFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9maWxlczpiYXRjaERlbGV0ZVxcXCIsIFxcXCJ1bmRlZmluZWRcXFwiLCBib2R5MSlcXG59XFxuXFxuLy9ieSBMb3lEZ0lrIOS9rFxcbmZ1bmN0aW9uIGJ5dGVzVG9TaXplKHNpemUpIHtcXG4gICAgaWYgKHNpemUgPT09IFxcXCIwXFxcIikge1xcbiAgICAgICAgcmV0dXJuICcnO1xcbiAgICB9XFxuICAgIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XFxuICAgIGxldCBpID0gMDtcXG4gICAgd2hpbGUgKHNpemUgPj0gMTAyNCkge1xcbiAgICAgICAgc2l6ZSAvPSAxMDI0O1xcbiAgICAgICAgaSsrO1xcbiAgICB9XFxuICAgIHNpemUgPSBpID8gTnVtYmVyKHNpemUudG9GaXhlZCgyKSkgOiBzaXplO1xcbiAgICByZXR1cm4gYCR7c2l6ZX0gJHt1bml0c1tpXX1gO1xcbn1cXG5cXG4kLmV4cG9ydHMgPSB7XFxuICAgIHJlcTEsXFxuICAgIHJlcTIsXFxuICAgIHNlbmRzbXMsXFxuICAgIHNtc2xvZ2luLFxcbiAgICBsb2dpbixcXG4gICAgc2lnbmluLFxcbiAgICBhY2Nlc3NfdG9rZW4sXFxuICAgIGNhcHRjaGEsXFxuICAgIGFjdGl2aXR5LFxcbiAgICB5dW5ibyxcXG4gICAgeXVucGFuMSxcXG4gICAgeXVucGFuMixcXG4gICAgeXVucGFuMyxcXG4gICAgbGF6eTEsXFxuICAgIGxhenkyLFxcbiAgICBsYXp5MyxcXG4gICAgcnVsZTEsXFxuICAgIHJ1bGUyLFxcbiAgICB6aHVhbmN1bixcXG4gICAgc2hhbmNodSxcXG4gICAgYnl0ZXNUb1NpemVcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLnmbvlvZXnlYzpnaJcIixcInBhdGhcIjpcImRlbmdsdVwiLFwicnVsZVwiOlwianM6XFxuY29uc3QgZCA9IFtdXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLmiYvmnLrpqozor4HnmbvlvZVcXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICB9XFxufSlcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIlxcXCIsXFxuICAgIGRlc2M6IFxcXCLor7fovpPlhaXmiYvmnLrlj7dcXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgb25DaGFuZ2U6IFxcXCJzZXRJdGVtKCdtb2JpbGUnLGlucHV0KVxcXCJcXG4gICAgfVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLigJzigJzojrflj5bpqozor4HnoIHigJzigJxcXFwiLFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICBzZXRJdGVtKFxcXCJtb2JpbGVcXFwiLCBnZXRJdGVtKCdtb2JpbGUnKSlcXG4gICAgICAgICQucmVxdWlyZShcXFwiaGFuc2h1XFxcIikuc2VuZHNtcygpXFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgIH1cXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgZGVzYzogXFxcIuivt+i+k+WFpemqjOivgeeggVxcXCIsXFxuICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICBvbkNoYW5nZTogXFxcInB1dE15VmFyKCdzbXNDb2RlJyxpbnB1dClcXFwiXFxuICAgIH1cXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi4oCc4oCc56Gu6K6k4oCc4oCcXFxcIixcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgcHV0TXlWYXIoXFxcInNtc0NvZGVcXFwiLCBnZXRNeVZhcignc21zQ29kZScpKVxcbiAgICAgICAgJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKS5zbXNsb2dpbigpXFxuICAgICAgICBiYWNrKHRydWUpXFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxufSlcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbn0pXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLotKblj7flr4bnoIHnmbvlvZVcXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICB9XFxufSlcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIlxcXCIsXFxuICAgIGRlc2M6IFxcXCLor7fovpPlhaXmiYvmnLrlj7cv6YKu566xL+i0puWPt1xcXCIsXFxuICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICBvbkNoYW5nZTogXFxcInNldEl0ZW0oJ21vYmlsZScsaW5wdXQpXFxcIlxcbiAgICB9XFxufSlcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIlxcXCIsXFxuICAgIGRlc2M6IFxcXCLor7fovpPlhaXlr4bnoIFcXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgb25DaGFuZ2U6IFxcXCJzZXRJdGVtKCdwYXNzV29yZCcsaW5wdXQpXFxcIlxcbiAgICB9XFxufSlcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuKAnOKAnOehruiupOKAnOKAnFxcXCIsXFxuICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIHNldEl0ZW0oXFxcIm1vYmlsZVxcXCIsIGdldEl0ZW0oJ21vYmlsZScpKVxcbiAgICAgICAgc2V0SXRlbShcXFwicGFzc1dvcmRcXFwiLCBnZXRJdGVtKCdwYXNzV29yZCcpKVxcbiAgICAgICAgJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKS5sb2dpbigpXFxuICAgICAgICBiYWNrKHRydWUpXFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgIH1cXG59KVxcbmQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOKAneKAnTxzdHJvbmc+5L2/55So5YmN6aG755+lPC9zdHJvbmc+XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICB9XFxufSlcXG5kLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCIxLiDmnKzlsI/nqIvluo/miYDmnInku6PnoIHlhajpg6jlvIDmupDvvIzkuJTmnKzop4TliJnkuLrlrabkuaDnm67nmoTvvIzor7fkuo7lr7zlhaUyNOWwj+aXtuWGheWIoOmZpO+8ge+8ge+8gTxicj4yLiDop4bpopHmlofku7bkuI3lvIDmnoHpgJ/mkq3nvZHpgJ8zTS9z77yM5byA5p6B6YCf5pKt5YiZMzBNL3MgKOWPr+iDveS5n+aUr+aMgeaSreaUvumfs+mike+8jOafpeeci+WbvueJh+WSjOebtOaOpeS4i+i9veWFtuWug+exu+Wei+eahOaWh+S7tinvvIHvvIHvvIE8YnI+My4g5bCP56iL5bqP5LuF6aaW6aG155qE5paH5Lu25pSv5oyB6YCa6L+H6ZW/5oyJ5Yig6ZmkPGJyPjQuIOacrOeoi+W6j+S4uuWFtuWug+Wwj+eoi+W6j+aPkOS+m+S6huiwg+eUqOaOpeWPo++8jOiwg+eUqOS+i+WtkOivt+WPguiAgyjlrZDpobXpnaIt6LCD55So55WM6Z2iKeazqOmHiumDqOWIhueahOS7o+eggVxcXCIsXFxuICAgICAgICBcXFwiY29sX3R5cGVcXFwiOiBcXFwicmljaF90ZXh0XFxcIlxcbn0pXFxuc2V0UmVzdWx0KGQpXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLosIPnlKjpobXpnaJcIixcInBhdGhcIjpcImRpYW95b25nXCIsXCJydWxlXCI6XCJqczpcXG5cXG4vKlxcbuiwg+eUqOS+i+WtkFxcbiovXFxuXFxuLypcXG5cXG4vLyDov4Xpm7fpk77mjqXkvovlrZDvvJpcXG5sZXQgdXJsMSA9IFxcXCJodHRwczovL3Bhbi54dW5sZWkuY29tL3MvVk8yT01Yb1JHVFhRNGc2aHkxeUhpMVZYQTE/cHdkPWU2Y2pcXFwiXFxuXFxuLy8g56OB5Yqb6ZO+5o6l5L6L5a2Q77yaXFxubGV0IHVybDEgPSBcXFwibWFnbmV0Oj94dD11cm46YnRpaDo2OTk5ZTZkOGNiNzRkNTEzYzlmM2JmNDM4NDBmYTY4Njc1NzFmYTNjXFxcIlxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi6L+F6Zu36LCD55So5rWL6K+VXFxcIixcXG4gICAgdXJsOiAkKHVybDEpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIGlmICgvKHh1bmxlaXxtYWduZXQ6fGVkMms6fGJ0OnxmdHA6fFxcXFwudG9ycmVudCkvLnRlc3QoaW5wdXQpKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvZGlhb3lvbmc/cnVsZT3ov4Xpm7cmcGFnZT1meXBhZ2UjXFxcIiArIGlucHV0XFxuICAgICAgICB9XFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxufSlcXG5cXG4qL1xcblxcbmNvbnN0IHtcXG4gICAgcmVxMSxcXG4gICAgcnVsZTEsXFxuICAgIGJ5dGVzVG9TaXplXFxufSA9ICQucmVxdWlyZShcXFwiaGFuc2h1XFxcIilcXG5jb25zdCBkID0gW107XFxubGV0IGRlc2MxO1xcblxcbmlmIChnZXRJdGVtKFxcXCJtb2JpbGVcXFwiKSAhPSBcXFwidW5kZWZpbmVkXFxcIikge1xcbiAgICBsZXQgaHRtbDE7XFxuICAgIGh0bWwxID0gcmVxMShcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvYWJvdXQ/d2l0aF9xdW90YXM9Q1JFQVRFX09GRkxJTkVfVEFTS19MSU1JVFxcXCIsIFxcXCJ1bmRlZmluZWRcXFwiKTtcXG4gICAgaWYgKGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uID09IFxcXCLluJDlj7forqTor4HlpLHotKXvvIzor7fph43mlrDnmbvlvZVcXFwiKSBodG1sMSA9IHJlcTEoXFxcImh0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL2Fib3V0P3dpdGhfcXVvdGFzPUNSRUFURV9PRkZMSU5FX1RBU0tfTElNSVRcXFwiLCBcXFwidW5kZWZpbmVkXFxcIik7XFxuICAgIGlmICghaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24pIGRlc2MxID0gXFxcIuW3suS9v+eUqFxcXCIrYnl0ZXNUb1NpemUoaHRtbDEucXVvdGEudXNhZ2UpK1xcXCIvXFxcIitcXFwi5YWxXFxcIitieXRlc1RvU2l6ZShodG1sMS5xdW90YS5saW1pdCk7XFxufVxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi6LSm5Y+3566h55CGXFxcIixcXG4gICAgZGVzYzogZGVzYzEgfHwgXFxcIuacqueZu+W9lVxcXCIsXFxuICAgIGltZzogXFxcImh0dHBzOi8vaWNkbi5iaW5tdC5jYy8yNTA1LzY4MTk2ZDFjOGU5OTMucG5nXFxcIixcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICQoW1xcXCLnmbvlvZVcXFwiLCBcXFwi6YCA5Ye6XFxcIl0pLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgaWYgKGlucHV0ID09PSBcXFwi55m75b2VXFxcIikgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvZGVuZ2x1I25vUmVjb3JkSGlzdG9yeSMjbm9IaXN0b3J5I1xcXCI7XFxuICAgICAgICAgICAgaWYgKGlucHV0ID09PSBcXFwi6YCA5Ye6XFxcIikge1xcbiAgICAgICAgICAgICAgICBsZXQga2V5cyA9IFtcXFwibW9iaWxlXFxcIiwgXFxcInBhc3NXb3JkXFxcIiwgXFxcInNlc3Npb25JRFxcXCIsIFxcXCJ1c2VyX2lkXFxcIiwgXFxcImF1dGhvcml6YXRpb25cXFwiLCBcXFwicmVmcmVzaF90b2tlblxcXCJdO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpdCBvZiBrZXlzKSB7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oaXQpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG59KTtcXG5cXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxufSlcXG5cXG5ydWxlMShkKTtcXG5cXG5zZXRSZXN1bHQoZCk7XCJ9XSxcInBhcmFtc1wiOlwie1xcXCJibG9ja1J1bGVzXFxcIjpbXFxcIi5tNGFcXFwiLFxcXCIubXAzXFxcIixcXFwiLmdpZlxcXCIsXFxcIi5qcGVnXFxcIixcXFwiLmpwZ1xcXCIsXFxcIi5pY29cXFwiLFxcXCIucG5nXFxcIixcXFwiaG0uYmFpZHUuY29tXFxcIixcXFwiL2Fkcy8qLmpzXFxcIixcXFwiY256ei5jb21cXFwiLFxcXCI1MS5sYVxcXCJdLFxcXCJjbHNcXFwiOlxcXCJKdWxvYWRsaXN0IHBsYXlsaXN0XFxcIixcXFwiaWRcXFwiOlxcXCLpu5HplZwg56ys5LiD5a2jX+mAiembhl8xXFxcIixcXFwianNMb2FkaW5nSW5qZWN0XFxcIjp0cnVlLFxcXCJ2aWRlb0V4Y2x1ZGVSdWxlc1xcXCI6W1xcXCJtM3U4LmpzXFxcIixcXFwiZGFkXFxcIixcXFwiZnh0Lm0zdThcXFwiXSxcXFwidmlkZW9SdWxlc1xcXCI6W1xcXCJpbmRleC5tM3U4XFxcIl19XCIsXCJzYXZlZFwiOmZhbHNlLFwidGl0bGVcIjpcIui/hembt1wiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImhpa2VyOi8vcGFnZS9kaWFveW9uZz9ydWxlPei/hembtyZwYWdlPWZ5cGFnZSN1bmRlZmluZWQjbWFnbmV0Oj94dD11cm46YnRpaDpmMjVmMjdmZGU0MzE4YWM1NjMyYjY5OGZlYTFlNmUxNDY4MDkwOTk2JmRuPUJsYWNrLk1pcnJvci5TMDcuSVRBLkVORy4xMDgwcC5ORi5XRUItREwuRERQNS4xLkguMjY0LU1lTS5HUFwiLFwiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcImZpbmRfcnVsZVwiOlwianM6XFxuXFxuLypcXG7osIPnlKjkvovlrZBcXG4qL1xcblxcbi8qXFxuXFxuLy8g6L+F6Zu36ZO+5o6l5L6L5a2Q77yaXFxubGV0IHVybDEgPSBcXFwiaHR0cHM6Ly9wYW4ueHVubGVpLmNvbS9zL1ZPMk9NWG9SR1RYUTRnNmh5MXlIaTFWWEExP3B3ZD1lNmNqXFxcIlxcblxcbi8vIOejgeWKm+mTvuaOpeS+i+WtkO+8mlxcbmxldCB1cmwxID0gXFxcIm1hZ25ldDo/eHQ9dXJuOmJ0aWg6Njk5OWU2ZDhjYjc0ZDUxM2M5ZjNiZjQzODQwZmE2ODY3NTcxZmEzY1xcXCJcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIui/hembt+iwg+eUqOa1i+ivlVxcXCIsXFxuICAgIHVybDogJCh1cmwxKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICBpZiAoLyh4dW5sZWl8bWFnbmV0OnxlZDJrOnxidDp8ZnRwOnxcXFxcLnRvcnJlbnQpLy50ZXN0KGlucHV0KSkge1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL2RpYW95b25nP3J1bGU96L+F6Zu3JnBhZ2U9ZnlwYWdlI1xcXCIgKyBpbnB1dFxcbiAgICAgICAgfVxcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbn0pXFxuXFxuKi9cXG5cXG5jb25zdCB7XFxuICAgIHJlcTEsXFxuICAgIHJ1bGUxLFxcbiAgICBieXRlc1RvU2l6ZVxcbn0gPSAkLnJlcXVpcmUoXFxcImhhbnNodVxcXCIpXFxuY29uc3QgZCA9IFtdO1xcbmxldCBkZXNjMTtcXG5cXG5pZiAoZ2V0SXRlbShcXFwibW9iaWxlXFxcIikgIT0gXFxcInVuZGVmaW5lZFxcXCIpIHtcXG4gICAgbGV0IGh0bWwxO1xcbiAgICBodG1sMSA9IHJlcTEoXFxcImh0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL2Fib3V0P3dpdGhfcXVvdGFzPUNSRUFURV9PRkZMSU5FX1RBU0tfTElNSVRcXFwiLCBcXFwidW5kZWZpbmVkXFxcIik7XFxuICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFwi5biQ5Y+36K6k6K+B5aSx6LSl77yM6K+36YeN5paw55m75b2VXFxcIikgaHRtbDEgPSByZXExKFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9hYm91dD93aXRoX3F1b3Rhcz1DUkVBVEVfT0ZGTElORV9UQVNLX0xJTUlUXFxcIiwgXFxcInVuZGVmaW5lZFxcXCIpO1xcbiAgICBpZiAoIWh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uKSBkZXNjMSA9IFxcXCLlt7Lkvb/nlKhcXFwiK2J5dGVzVG9TaXplKGh0bWwxLnF1b3RhLnVzYWdlKStcXFwiL1xcXCIrXFxcIuWFsVxcXCIrYnl0ZXNUb1NpemUoaHRtbDEucXVvdGEubGltaXQpO1xcbn1cXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIui0puWPt+euoeeQhlxcXCIsXFxuICAgIGRlc2M6IGRlc2MxIHx8IFxcXCLmnKrnmbvlvZVcXFwiLFxcbiAgICBpbWc6IFxcXCJodHRwczovL2ljZG4uYmlubXQuY2MvMjUwNS82ODE5NmQxYzhlOTkzLnBuZ1xcXCIsXFxuICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIHJldHVybiAkKFtcXFwi55m75b2VXFxcIiwgXFxcIumAgOWHulxcXCJdKS5zZWxlY3QoKCkgPT4ge1xcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PT0gXFxcIueZu+W9lVxcXCIpIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL2RlbmdsdSNub1JlY29yZEhpc3RvcnkjI25vSGlzdG9yeSNcXFwiO1xcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PT0gXFxcIumAgOWHulxcXCIpIHtcXG4gICAgICAgICAgICAgICAgbGV0IGtleXMgPSBbXFxcIm1vYmlsZVxcXCIsIFxcXCJwYXNzV29yZFxcXCIsIFxcXCJzZXNzaW9uSURcXFwiLCBcXFwidXNlcl9pZFxcXCIsIFxcXCJhdXRob3JpemF0aW9uXFxcIiwgXFxcInJlZnJlc2hfdG9rZW5cXFwiXTtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaXQgb2Yga2V5cykge1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKGl0KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxufSk7XFxuXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbn0pXFxuXFxucnVsZTEoZCk7XFxuXFxuc2V0UmVzdWx0KGQpO1wiLFwiZ3JvdXBcIjpcIuKRpuaQnOe0osK36IGa5ZCIwrfnvZHnm5hcIixcInVhXCI6XCJtb2JpbGVcIixcInByZVJ1bGVcIjpcIlwiLFwicGFnZXNcIjpcIlt7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLlh73mlbBcXFwiLFxcXCJwYXRoXFxcIjpcXFwiaGFuc2h1XFxcIixcXFwicnVsZVxcXCI6XFxcImNvbnN0IGhlYWRlcjEgPSB7XFxcXG4gICAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IFxcXFxcXFwiQW5kcm9pZFxcXFxcXFwiLFxcXFxuICAgIFxcXFxcXFwieC1kZXZpY2UtaWRcXFxcXFxcIjogXFxcXFxcXCJiNzFhOTIzZWIwZTIyMzk4NDI1OTlhM2MwMTZiNDA5OFxcXFxcXFwiXFxcXG59XFxcXG5cXFxcbi8vIEdFVOivt+axglxcXFxuZnVuY3Rpb24gcmVxMSh1cmwxLCBoZWFkZXIxKSB7XFxcXG4gICAgbGV0IGhlYWRlclxcXFxuICAgIGlmIChoZWFkZXIxID09IFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgaGVhZGVyID0ge1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IFxcXFxcXFwiQW5kcm9pZFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJ4LWRldmljZS1pZFxcXFxcXFwiOiBcXFxcXFxcImI3MWE5MjNlYjBlMjIzOTg0MjU5OWEzYzAxNmI0MDk4XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBcXFxcXFxcImF1dGhvcml6YXRpb25cXFxcXFxcIjogZ2V0SXRlbShcXFxcXFxcImF1dGhvcml6YXRpb25cXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIiksXFxcXG4gICAgICAgICAgICBcXFxcXFxcIngtY2FwdGNoYS10b2tlblxcXFxcXFwiOiBnZXRNeVZhcihcXFxcXFxcImNhcHRjaGFfdG9rZW5cXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIilcXFxcbiAgICAgICAgfVxcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIGhlYWRlciA9IGhlYWRlcjFcXFxcbiAgICB9XFxcXG4gICAgbGV0IGh0bWwxID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybDEsIHtcXFxcbiAgICAgICAgaGVhZGVyczogaGVhZGVyLFxcXFxuICAgICAgICBtZXRob2Q6IFxcXFxcXFwiR0VUXFxcXFxcXCJcXFxcbiAgICB9KSk7IC8vbG9nKGh0bWwxKVxcXFxuICAgIGlmIChnZXRJdGVtKFxcXFxcXFwiYXV0aG9yaXphdGlvblxcXFxcXFwiKSA9PSBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKSBzaWduaW4oKVxcXFxuICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFxcXFxcIuW4kOWPt+iupOivgeWksei0pe+8jOivt+mHjeaWsOeZu+W9lVxcXFxcXFwiKSBzaWduaW4oKVxcXFxuICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFxcXFxcIumqjOivgeeggeaXoOaViFxcXFxcXFwiKSBjYXB0Y2hhKClcXFxcbiAgICByZXR1cm4gaHRtbDFcXFxcbn1cXFxcblxcXFxuLy8gUE9TVOivt+axglxcXFxuZnVuY3Rpb24gcmVxMih1cmwxLCBoZWFkZXIxLCBib2R5MSkge1xcXFxuICAgIGxldCBoZWFkZXJcXFxcbiAgICBpZiAoaGVhZGVyMSA9PSBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKSB7XFxcXG4gICAgICAgIGhlYWRlciA9IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIkFuZHJvaWRcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwieC1kZXZpY2UtaWRcXFxcXFxcIjogXFxcXFxcXCJiNzFhOTIzZWIwZTIyMzk4NDI1OTlhM2MwMTZiNDA5OFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJhdXRob3JpemF0aW9uXFxcXFxcXCI6IGdldEl0ZW0oXFxcXFxcXCJhdXRob3JpemF0aW9uXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJ4LWNhcHRjaGEtdG9rZW5cXFxcXFxcIjogZ2V0TXlWYXIoXFxcXFxcXCJjYXB0Y2hhX3Rva2VuXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpXFxcXG4gICAgICAgIH1cXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBoZWFkZXIgPSBoZWFkZXIxXFxcXG4gICAgfVxcXFxuICAgIGxldCBodG1sMSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwxLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IGhlYWRlcixcXFxcbiAgICAgICAgYm9keTogYm9keTEsXFxcXG4gICAgICAgIG1ldGhvZDogXFxcXFxcXCJQT1NUXFxcXFxcXCJcXFxcbiAgICB9KSk7IC8vbG9nKGh0bWwxKVxcXFxuICAgIGlmIChodG1sMS5lcnJvciA9PSBcXFxcXFxcImNhcHRjaGFfaW52YWxpZFxcXFxcXFwiKSBjYXB0Y2hhKClcXFxcbiAgICByZXR1cm4gaHRtbDFcXFxcbn1cXFxcblxcXFxuLy8g6I635Y+W55+t5L+h6aqM6K+B56CB6K+35rGCXFxcXG5mdW5jdGlvbiBzZW5kc21zKCkge1xcXFxuICAgIGxldCBib2R5MSA9IEpTT04uc3RyaW5naWZ5KHtcXFxcXFxcInByb3RvY29sVmVyc2lvblxcXFxcXFwiOlxcXFxcXFwiMzAxXFxcXFxcXCIsXFxcXFxcXCJzZXF1ZW5jZU5vXFxcXFxcXCI6XFxcXFxcXCIxMDAwMDAxXFxcXFxcXCIsXFxcXFxcXCJwbGF0Zm9ybVZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjEwXFxcXFxcXCIsXFxcXFxcXCJpc0NvbXByZXNzZWRcXFxcXFxcIjpcXFxcXFxcIjBcXFxcXFxcIixcXFxcXFxcImFwcGlkXFxcXFxcXCI6XFxcXFxcXCI0MFxcXFxcXFwiLFxcXFxcXFwiY2xpZW50VmVyc2lvblxcXFxcXFwiOlxcXFxcXFwiOC4wMy4wLjkwNjdcXFxcXFxcIixcXFxcXFxcInBlZXJJRFxcXFxcXFwiOlxcXFxcXFwiYzliMDc2YTQ0NjUxNzk2OWRmZjYzOGNkMzdmYTlmZjFcXFxcXFxcIixcXFxcXFxcImFwcE5hbWVcXFxcXFxcIjpcXFxcXFxcIkFORFJPSUQtY29tLnh1bmxlaS5kb3dubG9hZHByb3ZpZGVyXFxcXFxcXCIsXFxcXFxcXCJzZGtWZXJzaW9uXFxcXFxcXCI6XFxcXFxcXCIyMzE1MDBcXFxcXFxcIixcXFxcXFxcImRldmljZXNpZ25cXFxcXFxcIjpcXFxcXFxcImRpdjEwMS5iNzFhOTIzZWIwZTIyMzk4NDI1OTlhM2MwMTZiNDA5ODYxMmY2Y2Y2ZDZlOWZkMTkyNTg0NWVjNTkyODU3MTZjXFxcXFxcXCIsXFxcXFxcXCJuZXRXb3JrVHlwZVxcXFxcXFwiOlxcXFxcXFwiMkdcXFxcXFxcIixcXFxcXFxcInByb3ZpZGVyTmFtZVxcXFxcXFwiOlxcXFxcXFwiTk9ORVxcXFxcXFwiLFxcXFxcXFwiZGV2aWNlTW9kZWxcXFxcXFxcIjpcXFxcXFxcIjIyMDIxMjExUkNcXFxcXFxcIixcXFxcXFxcImRldmljZU5hbWVcXFxcXFxcIjpcXFxcXFxcIlhpYW9taV8yMjAyMTIxMVJjXFxcXFxcXCIsXFxcXFxcXCJPU1ZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjEyXFxcXFxcXCIsXFxcXFxcXCJjcmVkaXRrZXlcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiaGxcXFxcXFxcIjpcXFxcXFxcInpoLUNOXFxcXFxcXCIsXFxcXFxcXCJtb2JpbGVcXFxcXFxcIjpnZXRJdGVtKFxcXFxcXFwibW9iaWxlXFxcXFxcXCIpLFxcXFxcXFwicmVnaXN0ZXJcXFxcXFxcIjpcXFxcXFxcIjBcXFxcXFxcIn0pXFxcXG4gICAgbGV0IGh0bWwxID0gcmVxMihcXFxcXFxcImh0dHBzOi8veGx1c2VyLXNzbC54dW5sZWkuY29tL3hsdXNlci5jb3JlLmxvZ2luL3YzL3NlbmRzbXNcXFxcXFxcIiwge30sIGJvZHkxKTsgLy9sb2coaHRtbDEpXFxcXG4gICAgaWYgKGh0bWwxLmVycm9yQ29kZSA9PSBcXFxcXFxcIjBcXFxcXFxcIikge1xcXFxuICAgICAgICB0b2FzdChcXFxcXFxcIumqjOivgeeggeWPkemAgeaIkOWKn1xcXFxcXFwiKVxcXFxuICAgICAgICBwdXRNeVZhcihcXFxcXFxcImNyZWRpdGtleVxcXFxcXFwiLCBodG1sMS5jcmVkaXRrZXkpXFxcXG4gICAgICAgIHB1dE15VmFyKFxcXFxcXFwiZGV2aWNlaWRcXFxcXFxcIiwgaHRtbDEuZGV2aWNlaWQpXFxcXG4gICAgICAgIHB1dE15VmFyKFxcXFxcXFwidG9rZW5cXFxcXFxcIiwgaHRtbDEudG9rZW4pXFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgdG9hc3QoaHRtbDEuZXJyb3JEZXNjKVxcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuLy8g5Y+R6YCB6aqM6K+B56CB55m75b2V6K+35rGCXFxcXG5mdW5jdGlvbiBzbXNsb2dpbigpIHtcXFxcbiAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcXFxcXCJwcm90b2NvbFZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjMwMVxcXFxcXFwiLFxcXFxcXFwic2VxdWVuY2VOb1xcXFxcXFwiOlxcXFxcXFwiMTAwMDAwMlxcXFxcXFwiLFxcXFxcXFwicGxhdGZvcm1WZXJzaW9uXFxcXFxcXCI6XFxcXFxcXCIxMFxcXFxcXFwiLFxcXFxcXFwiaXNDb21wcmVzc2VkXFxcXFxcXCI6XFxcXFxcXCIwXFxcXFxcXCIsXFxcXFxcXCJhcHBpZFxcXFxcXFwiOlxcXFxcXFwiNDBcXFxcXFxcIixcXFxcXFxcImNsaWVudFZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjguMDMuMC45MDY3XFxcXFxcXCIsXFxcXFxcXCJwZWVySURcXFxcXFxcIjpcXFxcXFxcImM5YjA3NmE0NDY1MTc5NjlkZmY2MzhjZDM3ZmE5ZmYxXFxcXFxcXCIsXFxcXFxcXCJhcHBOYW1lXFxcXFxcXCI6XFxcXFxcXCJBTkRST0lELWNvbS54dW5sZWkuZG93bmxvYWRwcm92aWRlclxcXFxcXFwiLFxcXFxcXFwic2RrVmVyc2lvblxcXFxcXFwiOlxcXFxcXFwiMjMxNTAwXFxcXFxcXCIsXFxcXFxcXCJkZXZpY2VzaWduXFxcXFxcXCI6Z2V0TXlWYXIoXFxcXFxcXCJkZXZpY2VpZFxcXFxcXFwiKSxcXFxcXFxcIm5ldFdvcmtUeXBlXFxcXFxcXCI6XFxcXFxcXCIyR1xcXFxcXFwiLFxcXFxcXFwicHJvdmlkZXJOYW1lXFxcXFxcXCI6XFxcXFxcXCJOT05FXFxcXFxcXCIsXFxcXFxcXCJkZXZpY2VNb2RlbFxcXFxcXFwiOlxcXFxcXFwiMjIwMjEyMTFSQ1xcXFxcXFwiLFxcXFxcXFwiZGV2aWNlTmFtZVxcXFxcXFwiOlxcXFxcXFwiWGlhb21pXzIyMDIxMjExUmNcXFxcXFxcIixcXFxcXFxcIk9TVmVyc2lvblxcXFxcXFwiOlxcXFxcXFwiMTJcXFxcXFxcIixcXFxcXFxcImNyZWRpdGtleVxcXFxcXFwiOmdldE15VmFyKFxcXFxcXFwiY3JlZGl0a2V5XFxcXFxcXCIpLFxcXFxcXFwiaGxcXFxcXFxcIjpcXFxcXFxcInpoLUNOXFxcXFxcXCIsXFxcXFxcXCJtb2JpbGVcXFxcXFxcIjpnZXRJdGVtKFxcXFxcXFwibW9iaWxlXFxcXFxcXCIpLFxcXFxcXFwic21zQ29kZVxcXFxcXFwiOmdldE15VmFyKFxcXFxcXFwic21zQ29kZVxcXFxcXFwiKSxcXFxcXFxcInRva2VuXFxcXFxcXCI6Z2V0TXlWYXIoXFxcXFxcXCJ0b2tlblxcXFxcXFwiKSxcXFxcXFxcInJlZ2lzdGVyXFxcXFxcXCI6XFxcXFxcXCIwXFxcXFxcXCJ9KVxcXFxuICAgIGxldCBodG1sMSA9IHJlcTIoXFxcXFxcXCJodHRwczovL3hsdXNlci1zc2wueHVubGVpLmNvbS94bHVzZXIuY29yZS5sb2dpbi92My9zbXNsb2dpblxcXFxcXFwiLCB7fSwgYm9keTEpOyAvL2xvZyhodG1sMSlcXFxcbiAgICBpZiAoaHRtbDEuZXJyb3JDb2RlID09IFxcXFxcXFwiMFxcXFxcXFwiKSB7XFxcXG4gICAgICAgIHRvYXN0KFxcXFxcXFwi55m75b2V5oiQ5YqfXFxcXFxcXCIpXFxcXG4gICAgICAgIHNldEl0ZW0oXFxcXFxcXCJzZXNzaW9uSURcXFxcXFxcIiwgaHRtbDEuc2Vzc2lvbklEKVxcXFxuICAgICAgICBzZXRJdGVtKFxcXFxcXFwidXNlcl9pZFxcXFxcXFwiLCBodG1sMS51c2VySUQpXFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgdG9hc3QoaHRtbDEuZXJyb3JEZXNjKVxcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuLy8g5Y+R6YCB5omL5py65Y+35a+G56CB55m75b2V6K+35rGCXFxcXG5mdW5jdGlvbiBsb2dpbigpIHtcXFxcbiAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcXFxcXCJwcm90b2NvbFZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjMwMVxcXFxcXFwiLFxcXFxcXFwic2VxdWVuY2VOb1xcXFxcXFwiOlxcXFxcXFwiMTAwMDAwMVxcXFxcXFwiLFxcXFxcXFwicGxhdGZvcm1WZXJzaW9uXFxcXFxcXCI6XFxcXFxcXCIxMFxcXFxcXFwiLFxcXFxcXFwiaXNDb21wcmVzc2VkXFxcXFxcXCI6XFxcXFxcXCIwXFxcXFxcXCIsXFxcXFxcXCJhcHBpZFxcXFxcXFwiOlxcXFxcXFwiNDBcXFxcXFxcIixcXFxcXFxcImNsaWVudFZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjguMDMuMC45MDY3XFxcXFxcXCIsXFxcXFxcXCJwZWVySURcXFxcXFxcIjpcXFxcXFxcImM5YjA3NmE0NDY1MTc5NjlkZmY2MzhjZDM3ZmE5ZmYxXFxcXFxcXCIsXFxcXFxcXCJhcHBOYW1lXFxcXFxcXCI6XFxcXFxcXCJBTkRST0lELWNvbS54dW5sZWkuZG93bmxvYWRwcm92aWRlclxcXFxcXFwiLFxcXFxcXFwic2RrVmVyc2lvblxcXFxcXFwiOlxcXFxcXFwiMjMxNTAwXFxcXFxcXCIsXFxcXFxcXCJkZXZpY2VzaWduXFxcXFxcXCI6XFxcXFxcXCJkaXYxMDEuYjcxYTkyM2ViMGUyMjM5ODQyNTk5YTNjMDE2YjQwOTg2MTJmNmNmNmQ2ZTlmZDE5MjU4NDVlYzU5Mjg1NzE2Y1xcXFxcXFwiLFxcXFxcXFwibmV0V29ya1R5cGVcXFxcXFxcIjpcXFxcXFxcIjJHXFxcXFxcXCIsXFxcXFxcXCJwcm92aWRlck5hbWVcXFxcXFxcIjpcXFxcXFxcIk5PTkVcXFxcXFxcIixcXFxcXFxcImRldmljZU1vZGVsXFxcXFxcXCI6XFxcXFxcXCIyMjAyMTIxMVJDXFxcXFxcXCIsXFxcXFxcXCJkZXZpY2VOYW1lXFxcXFxcXCI6XFxcXFxcXCJYaWFvbWlfMjIwMjEyMTFSY1xcXFxcXFwiLFxcXFxcXFwiT1NWZXJzaW9uXFxcXFxcXCI6XFxcXFxcXCIxMlxcXFxcXFwiLFxcXFxcXFwiY3JlZGl0a2V5XFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImhsXFxcXFxcXCI6XFxcXFxcXCJ6aC1DTlxcXFxcXFwiLFxcXFxcXFwidXNlck5hbWVcXFxcXFxcIjpnZXRJdGVtKFxcXFxcXFwibW9iaWxlXFxcXFxcXCIpLFxcXFxcXFwicGFzc1dvcmRcXFxcXFxcIjpnZXRJdGVtKFxcXFxcXFwicGFzc1dvcmRcXFxcXFxcIiksXFxcXFxcXCJ2ZXJpZnlLZXlcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidmVyaWZ5Q29kZVxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJpc01kNVB3ZFxcXFxcXFwiOlxcXFxcXFwiMFxcXFxcXFwifSlcXFxcbiAgICBsZXQgaHRtbDEgPSByZXEyKFxcXFxcXFwiaHR0cHM6Ly94bHVzZXItc3NsLnh1bmxlaS5jb20veGx1c2VyLmNvcmUubG9naW4vdjMvbG9naW5cXFxcXFxcIiwge30sIGJvZHkxKTsgLy9sb2coaHRtbDEpXFxcXG4gICAgaWYgKGh0bWwxLmVycm9yQ29kZSA9PSBcXFxcXFxcIjBcXFxcXFxcIikge1xcXFxuICAgICAgICB0b2FzdChcXFxcXFxcIueZu+W9leaIkOWKn1xcXFxcXFwiKVxcXFxuICAgICAgICBzZXRJdGVtKFxcXFxcXFwic2Vzc2lvbklEXFxcXFxcXCIsIGh0bWwxLnNlc3Npb25JRClcXFxcbiAgICAgICAgc2V0SXRlbShcXFxcXFxcInVzZXJfaWRcXFxcXFxcIiwgaHRtbDEudXNlcklEKVxcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIHRvYXN0KGh0bWwxLmVycm9yRGVzYylcXFxcbiAgICB9XFxcXG59XFxcXG5cXFxcbi8vIOiOt+WPluivt+axguWktGF1dGhvcml6YXRpb25cXFxcbmZ1bmN0aW9uIHNpZ25pbigpIHtcXFxcbiAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcXFxcXCJjbGllbnRfaWRcXFxcXFxcIjpcXFxcXFxcIlhwNnZzeHpfN0lZVncyQkJcXFxcXFxcIixcXFxcXFxcImNsaWVudF9zZWNyZXRcXFxcXFxcIjpcXFxcXFxcIlhwNnZzeTR0Tjl0b1RWZE1TcG9tVmRYcFJtRVNcXFxcXFxcIixcXFxcXFxcInByb3ZpZGVyXFxcXFxcXCI6XFxcXFxcXCJhY2Nlc3NfZW5kX3BvaW50X3Rva2VuXFxcXFxcXCIsXFxcXFxcXCJzaWduaW5fdG9rZW5cXFxcXFxcIjpnZXRJdGVtKFxcXFxcXFwic2Vzc2lvbklEXFxcXFxcXCIpfSlcXFxcbiAgICBsZXQgaHRtbDEgPSByZXEyKFxcXFxcXFwiaHR0cHM6Ly94bHVzZXItc3NsLnh1bmxlaS5jb20vdjEvYXV0aC9zaWduaW4vdG9rZW4/Y2xpZW50X2lkPVhwNnZzeHpfN0lZVncyQkJcXFxcXFxcIiwgaGVhZGVyMSwgYm9keTEpOyAvL2xvZyhodG1sMSlcXFxcbiAgICBzZXRJdGVtKFxcXFxcXFwiYXV0aG9yaXphdGlvblxcXFxcXFwiLCBodG1sMS50b2tlbl90eXBlK1xcXFxcXFwiIFxcXFxcXFwiK2h0bWwxLmFjY2Vzc190b2tlbilcXFxcbiAgICBzZXRJdGVtKFxcXFxcXFwicmVmcmVzaF90b2tlblxcXFxcXFwiLCBodG1sMS5yZWZyZXNoX3Rva2VuKVxcXFxuICAgIHNldEl0ZW0oXFxcXFxcXCJ1c2VyX2lkXFxcXFxcXCIsIGh0bWwxLnVzZXJfaWQpXFxcXG59XFxcXG5cXFxcbi8vIOWIt+aWsOivt+axguWktGF1dGhvcml6YXRpb25cXFxcbmZ1bmN0aW9uIGFjY2Vzc190b2tlbigpIHtcXFxcbiAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcXFxcXCJjbGllbnRfaWRcXFxcXFxcIjpcXFxcXFxcIlhwNnZzeHpfN0lZVncyQkJcXFxcXFxcIixcXFxcXFxcImNsaWVudF9zZWNyZXRcXFxcXFxcIjpcXFxcXFxcIlhwNnZzeTR0Tjl0b1RWZE1TcG9tVmRYcFJtRVNcXFxcXFxcIixcXFxcXFxcImdyYW50X3R5cGVcXFxcXFxcIjpcXFxcXFxcInJlZnJlc2hfdG9rZW5cXFxcXFxcIixcXFxcXFxcInJlZnJlc2hfdG9rZW5cXFxcXFxcIjpnZXRJdGVtKFxcXFxcXFwicmVmcmVzaF90b2tlblxcXFxcXFwiKX0pXFxcXG4gICAgbGV0IGh0bWwxID0gcmVxMihcXFxcXFxcImh0dHBzOi8veGx1c2VyLXNzbC54dW5sZWkuY29tL3YxL2F1dGgvdG9rZW4/Y2xpZW50X2lkPVhwNnZzeHpfN0lZVncyQkJcXFxcXFxcIiwgaGVhZGVyMSwgYm9keTEpOyAvL2xvZyhodG1sMSlcXFxcbiAgICBzZXRJdGVtKFxcXFxcXFwiYXV0aG9yaXphdGlvblxcXFxcXFwiLCBodG1sMS50b2tlbl90eXBlK1xcXFxcXFwiIFxcXFxcXFwiK2h0bWwxLmFjY2Vzc190b2tlbilcXFxcbiAgICBzZXRJdGVtKFxcXFxcXFwidXNlcl9pZFxcXFxcXFwiLCBodG1sMS51c2VyX2lkKVxcXFxufVxcXFxuXFxcXG4vLyDojrflj5bor7fmsYLlpLRjYXB0Y2hhX3Rva2VuXFxcXG5mdW5jdGlvbiBjYXB0Y2hhKCkge1xcXFxuICAgIGxldCBib2R5MSA9IEpTT04uc3RyaW5naWZ5KHtcXFxcXFxcImFjdGlvblxcXFxcXFwiOlxcXFxcXFwiR0VUOi9kcml2ZS92MS9wcml2aWxlZ2UvVVNFUl9TRUNVUklUWV9UT0tFTlxcXFxcXFwiLFxcXFxcXFwiY2FwdGNoYV90b2tlblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJjbGllbnRfaWRcXFxcXFxcIjpcXFxcXFxcIlhwNnZzeHpfN0lZVncyQkJcXFxcXFxcIixcXFxcXFxcImRldmljZV9pZFxcXFxcXFwiOlxcXFxcXFwiYjcxYTkyM2ViMGUyMjM5ODQyNTk5YTNjMDE2YjQwOThcXFxcXFxcIixcXFxcXFxcIm1ldGFcXFxcXFxcIjp7XFxcXFxcXCJjYXB0Y2hhX3NpZ25cXFxcXFxcIjpcXFxcXFxcIjEuMWQ4YzJhNzgzNjAxZTQ1Mjc3YjNiNjUxNzc5NTgzMjRcXFxcXFxcIixcXFxcXFxcInVzZXJfaWRcXFxcXFxcIjpnZXRJdGVtKFxcXFxcXFwidXNlcl9pZFxcXFxcXFwiKSxcXFxcXFxcInBhY2thZ2VfbmFtZVxcXFxcXFwiOlxcXFxcXFwiY29tLnh1bmxlaS5kb3dubG9hZHByb3ZpZGVyXFxcXFxcXCIsXFxcXFxcXCJjbGllbnRfdmVyc2lvblxcXFxcXFwiOlxcXFxcXFwiOC4wMy4wLjkwNjdcXFxcXFxcIixcXFxcXFxcInRpbWVzdGFtcFxcXFxcXFwiOlxcXFxcXFwiMTc0NTUwNzA0OTI2MFxcXFxcXFwifSxcXFxcXFxcInJlZGlyZWN0X3VyaVxcXFxcXFwiOlxcXFxcXFwieGxhY2NzZGswMTovL3h1bmxlaS5jb20vY2FsbGJhY2s/c3RhdGVcXFxcXFxcXHUwMDNkaGFyYm9yXFxcXFxcXCJ9KVxcXFxuICAgIGxldCBodG1sMSA9IHJlcTIoXFxcXFxcXCJodHRwczovL3hsdXNlci1zc2wueHVubGVpLmNvbS92MS9zaGllbGQvY2FwdGNoYS9pbml0P2NsaWVudF9pZD1YcDZ2c3h6XzdJWVZ3MkJCXFxcXFxcXCIsIGhlYWRlcjEsIGJvZHkxKTsgLy9sb2coaHRtbDEpXFxcXG4gICAgcHV0TXlWYXIoXFxcXFxcXCJjYXB0Y2hhX3Rva2VuXFxcXFxcXCIsIGh0bWwxLmNhcHRjaGFfdG9rZW4pICAgIFxcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBhY3Rpdml0eSgpIHtcXFxcbiAgICBsZXQgaGVhZGVyMSA9IHtcXFxcbiAgICAgICAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IFxcXFxcXFwiQW5kcm9pZFxcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcIngtZGV2aWNlLWlkXFxcXFxcXCI6IFxcXFxcXFwiOTlkOGEzMTY3ZGY3OWQwZjQwZmNkYzg2MjNlZDMyNjZcXFxcXFxcIlxcXFxuICAgIH1cXFxcbiAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcXFxcXCJhY3Rpb25cXFxcXFxcIjpcXFxcXFxcIlBPU1Q6L2FjdGl2aXR5L3YxL3Jld2FyZFxcXFxcXFwiLFxcXFxcXFwiY2FwdGNoYV90b2tlblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJjbGllbnRfaWRcXFxcXFxcIjpcXFxcXFxcIlhwNnZzeHpfN0lZVncyQkJcXFxcXFxcIixcXFxcXFxcImRldmljZV9pZFxcXFxcXFwiOlxcXFxcXFwiOTlkOGEzMTY3ZGY3OWQwZjQwZmNkYzg2MjNlZDMyNjZcXFxcXFxcIixcXFxcXFxcIm1ldGFcXFxcXFxcIjp7XFxcXFxcXCJjYXB0Y2hhX3NpZ25cXFxcXFxcIjpcXFxcXFxcIjEuZTJlNjBlNWFiYmY2NmY2YjIxY2Q3ODU1ZjEzZDcwYWRcXFxcXFxcIixcXFxcXFxcInVzZXJfaWRcXFxcXFxcIjpnZXRJdGVtKFxcXFxcXFwidXNlcl9pZFxcXFxcXFwiKSxcXFxcXFxcInBhY2thZ2VfbmFtZVxcXFxcXFwiOlxcXFxcXFwiY29tLnh1bmxlaS5kb3dubG9hZHByb3ZpZGVyXFxcXFxcXCIsXFxcXFxcXCJjbGllbnRfdmVyc2lvblxcXFxcXFwiOlxcXFxcXFwiNy40OS4wLjgxMjlcXFxcXFxcIixcXFxcXFxcInRpbWVzdGFtcFxcXFxcXFwiOlxcXFxcXFwiMTc0NjAwNDYwMTQ1NVxcXFxcXFwifSxcXFxcXFxcInJlZGlyZWN0X3VyaVxcXFxcXFwiOlxcXFxcXFwieGxhY2NzZGswMTovL3h1bmxlaS5jb20vY2FsbGJhY2s/c3RhdGVcXFxcXFxcXHUwMDNkaGFyYm9yXFxcXFxcXCJ9KVxcXFxuICAgIGxldCBodG1sMSA9IHJlcTIoXFxcXFxcXCJodHRwczovL3hsdXNlci1zc2wueHVubGVpLmNvbS92MS9zaGllbGQvY2FwdGNoYS9pbml0P2NsaWVudF9pZD1YcDZ2c3h6XzdJWVZ3MkJCXFxcXFxcXCIsIGhlYWRlcjEsIGJvZHkxKVxcXFxuICAgIFxcXFxuICAgIGxldCBoZWFkZXIyID0ge1xcXFxuICAgICAgICBcXFxcXFxcIlVzZXItQWdlbnRcXFxcXFxcIjogXFxcXFxcXCJBbmRyb2lkXFxcXFxcXCIsXFxcXG4gICAgICAgIFxcXFxcXFwieC1kZXZpY2UtaWRcXFxcXFxcIjogXFxcXFxcXCI5OWQ4YTMxNjdkZjc5ZDBmNDBmY2RjODYyM2VkMzI2NlxcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcImF1dGhvcml6YXRpb25cXFxcXFxcIjogZ2V0SXRlbShcXFxcXFxcImF1dGhvcml6YXRpb25cXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIiksXFxcXG4gICAgICAgIFxcXFxcXFwieC1jYXB0Y2hhLXRva2VuXFxcXFxcXCI6IGh0bWwxLmNhcHRjaGFfdG9rZW5cXFxcbiAgICB9XFxcXG4gICAgbGV0IGJvZHkyID0gSlNPTi5zdHJpbmdpZnkoe1xcXFxcXFwiYWN0aXZpdHlfaWRcXFxcXFxcIjpcXFxcXFxcIlZNc2N5alZ1LWNwVU5maXJxWEdXNHdmYTAwXFxcXFxcXCIsXFxcXFxcXCJyZXdhcmRfY291bnRcXFxcXFxcIjoxLFxcXFxcXFwicGFyYW1zXFxcXFxcXCI6e1xcXFxcXFwidXJja1xcXFxcXFwiOlxcXFxcXFwiOTlkOGEzMTY3ZGY3OWQwZjQwZmNkYzg2MjNlZDMyNjZcXFxcXFxcIn19KVxcXFxuICAgIHJlcTIoXFxcXFxcXCJodHRwczovL2FwaS1zaG91bGVpLXNzbC54dW5sZWkuY29tL2FjdGl2aXR5L3YxL3Jld2FyZFxcXFxcXFwiLCBoZWFkZXIyLCBib2R5MilcXFxcbn1cXFxcblxcXFxuLy8g5LqR5re75Yqg77yM6I635Y+W55uY5YaF5paH5Lu2aWRcXFxcbmZ1bmN0aW9uIHl1bmJvKG5hbWUsIHVybCwgZmlsZV9pbmRleCkge1xcXFxuICAgIGxldCBib2R5MSA9IEpTT04uc3RyaW5naWZ5KHtcXFxcXFxcImtpbmRcXFxcXFxcIjpcXFxcXFxcImRyaXZlI2ZpbGVcXFxcXFxcIixcXFxcXFxcIm5hbWVcXFxcXFxcIjpuYW1lLFxcXFxcXFwidXBsb2FkX3R5cGVcXFxcXFxcIjpcXFxcXFxcIlVQTE9BRF9UWVBFX1VSTFxcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6e1xcXFxcXFwidXJsXFxcXFxcXCI6dXJsLFxcXFxcXFwiZmlsZXNcXFxcXFxcIjpbZmlsZV9pbmRleF19LFxcXFxcXFwicGFyZW50X2lkXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIn0pXFxcXG4gICAgbGV0IGh0bWwxXFxcXG4gICAgaHRtbDEgPSByZXEyKFxcXFxcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvZmlsZXNcXFxcXFxcIiwgXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIiwgYm9keTEpXFxcXG4gICAgaWYgKGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uID09IFxcXFxcXFwi6aqM6K+B56CB5peg5pWIXFxcXFxcXCIpIGh0bWwxID0gcmVxMihcXFxcXFxcImh0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL2ZpbGVzXFxcXFxcXCIsIFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIsIGJvZHkxKVxcXFxuICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbikgcmV0dXJuIHRvYXN0KGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uKVxcXFxuICAgIGphdmEubGFuZy5UaHJlYWQuc2xlZXAoMTAwMClcXFxcbiAgICBsZXQgdXJsMiA9ICdodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS90YXNrcz90eXBlPW9mZmxpbmUmcGFnZV90b2tlbj0mZmlsdGVycz17XFxcXFxcXCJpZFxcXFxcXFwiOntcXFxcXFxcImluXFxcXFxcXCI6XFxcXFxcXCInK2h0bWwxLnRhc2suaWQrJ1xcXFxcXFwifX0md2l0aD1yZWZlcmVuY2VfcmVzb3VyY2UnXFxcXG4gICAgbGV0IGh0bWwyXFxcXG4gICAgaHRtbDIgPSByZXExKHVybDIsIFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIpLnRhc2tzWzBdXFxcXG4gICAgaWYgKGh0bWwyLmVycm9yX2Rlc2NyaXB0aW9uID09IFxcXFxcXFwi6aqM6K+B56CB5peg5pWIXFxcXFxcXCIpIGh0bWwyID0gcmVxMSh1cmwyLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKS50YXNrc1swXVxcXFxuICAgIHJldHVybiBodG1sMi5maWxlX2lkXFxcXG59XFxcXG5cXFxcbi8vIOebmOWGhVxcXFxuZnVuY3Rpb24gbGF6eTEoaW5wdXQpIHtcXFxcbiAgICByZXR1cm4gJChcXFxcXFxcIlxcXFxcXFwiKS5sYXp5UnVsZSgoaW5wdXQpID0+IHtcXFxcbiAgICAgICAgbGV0IGlkID0gaW5wdXRbMF1cXFxcbiAgICAgICAgbGV0IG1pbWVfdHlwZSA9IGlucHV0WzFdXFxcXG4gICAgICAgIGlmIChtaW1lX3R5cGUgPT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgcmV0dXJuICQoXFxcXFxcXCJoaWtlcjovL2VtcHR5P3BhZ2U9ZnlwYWdlI1xcXFxcXFwiK2lkK1xcXFxcXFwiI25vTG9hZGluZyNcXFxcXFxcIikucnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IFtdXFxcXG4gICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXFxcXFwiaGFuc2h1XFxcXFxcXCIpLnl1bnBhbjEoZClcXFxcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZClcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgY29uc3Qge1xcXFxuICAgICAgICAgICAgcmVxMSxcXFxcbiAgICAgICAgICAgIHNoYW5jaHVcXFxcbiAgICAgICAgfSA9ICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKVxcXFxuICAgICAgICBsZXQgdXJsMSA9IFxcXFxcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvZmlsZXMvXFxcXFxcXCIraWQrXFxcXFxcXCI/X21hZ2ljPTIwMjEmdXNhZ2U9UExBWSZ0aHVtYm5haWxfc2l6ZT1TSVpFX0xBUkdFJndpdGg9aGRyMTAmd2l0aD1zdWJ0aXRsZV9maWxlcyZ3aXRoPXRhc2smd2l0aD1wdWJsaWNfc2hhcmVfdGFnXFxcXFxcXCJcXFxcbiAgICAgICAgbGV0IGh0bWwxXFxcXG4gICAgICAgIGh0bWwxID0gcmVxMSh1cmwxLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKTsgLy9sb2coaHRtbDEpXFxcXG4gICAgICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFxcXFxcIumqjOivgeeggeaXoOaViFxcXFxcXFwiKSBodG1sMSA9IHJlcTEodXJsMSwgXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIik7IC8vbG9nKGh0bWwxKVxcXFxuICAgICAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24pIHtcXFxcbiAgICAgICAgICAgIGlmIChpbnB1dFsyXSA9PSBcXFxcXFxcIuWIoOmZpFxcXFxcXFwiKSBzaGFuY2h1KGlkKVxcXFxuICAgICAgICAgICAgdG9hc3QoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24pXFxcXG4gICAgICAgICAgICBpZiAoLyhtYWduZXQ6fGVkMms6fGJ0OnxmdHA6fFxcXFxcXFxcLnRvcnJlbnQpLy50ZXN0KE1ZX1VSTCkpIHJldHVybiBNWV9VUkwuc3BsaXQoXFxcXFxcXCIjXFxcXFxcXCIpWzFdXFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpZiAoaHRtbDEuYXVkaXQudGl0bGUgPT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGh0bWwxLmxpbmtzKSA9PSBcXFxcXFxcInt9XFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICBpZiAoLyhtYWduZXQ6fGVkMms6fGJ0OnxmdHA6fFxcXFxcXFxcLnRvcnJlbnQpLy50ZXN0KE1ZX1VSTCkpIHJldHVybiBNWV9VUkwuc3BsaXQoXFxcXFxcXCIjXFxcXFxcXCIpWzFdXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBsZXQgcGxheSA9IGh0bWwxLmxpbmtzW1xcXFxcXFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXFxcXFxcXCJdLnVybFxcXFxuICAgICAgICAgICAgaWYgKGlucHV0WzJdID09IFxcXFxcXFwi5Yig6ZmkXFxcXFxcXCIpIHNoYW5jaHUoaWQpXFxcXG4gICAgICAgICAgICBpZiAoaHRtbDEubWltZV90eXBlLmluY2x1ZGVzKFxcXFxcXFwidmlkZW9cXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICBsZXQgbmFtZTEgPSBbXFxcXFxcXCLljp/lp4vnlLvotKhcXFxcXFxcIl1cXFxcbiAgICAgICAgICAgICAgICBsZXQgcGxheTEgPSBbcGxheV1cXFxcbiAgICAgICAgICAgICAgICBodG1sMS5tZWRpYXMubWFwKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5saW5rICE9IG51bGwpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUxLnB1c2goaXRlbS5tZWRpYV9uYW1lKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxheTEucHVzaChpdGVtLmxpbmsudXJsKVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgICAgICAgICBuYW1lczogbmFtZTEsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybHM6IHBsYXkxXFxcXG4gICAgICAgICAgICAgICAgfSkrXFxcXFxcXCIjaXNWaWRlbz10cnVlI1xcXFxcXFwiXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBpZiAoaHRtbDEubWltZV90eXBlLmluY2x1ZGVzKFxcXFxcXFwiaW1hZ2VcXFxcXFxcIikpIHJldHVybiBwbGF5K1xcXFxcXFwiIy5qcGdcXFxcXFxcIlxcXFxuICAgICAgICAgICAgaWYgKGh0bWwxLm1pbWVfdHlwZS5pbmNsdWRlcyhcXFxcXFxcImF1ZGlvXFxcXFxcXCIpKSByZXR1cm4gcGxheStcXFxcXFxcIiNpc011c2ljPXRydWUjXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImRvd25sb2FkOi8vXFxcXFxcXCIrcGxheVxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgdG9hc3QoaHRtbDEuYXVkaXQudGl0bGUpXFxcXG4gICAgICAgICAgICBzaGFuY2h1KGlkKVxcXFxuICAgICAgICAgICAgaWYgKC8obWFnbmV0OnxlZDJrOnxidDp8ZnRwOnxcXFxcXFxcXC50b3JyZW50KS8udGVzdChNWV9VUkwpKSByZXR1cm4gTVlfVVJMLnNwbGl0KFxcXFxcXFwiI1xcXFxcXFwiKVsxXVxcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgICAgIH1cXFxcbiAgICB9LCBpbnB1dC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIikpXFxcXG59XFxcXG5cXFxcbi8vIOebmOWkllxcXFxuZnVuY3Rpb24gbGF6eTIoaW5wdXQpIHtcXFxcbiAgICByZXR1cm4gJChcXFxcXFxcIlxcXFxcXFwiKS5sYXp5UnVsZSgoaW5wdXQpID0+IHtcXFxcbiAgICAgICAgbGV0IGlkID0gaW5wdXRbMF1cXFxcbiAgICAgICAgbGV0IG1pbWVfdHlwZSA9IGlucHV0WzFdXFxcXG4gICAgICAgIGlmIChtaW1lX3R5cGUgPT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgaWYgKE1ZX1VSTC5pbmNsdWRlcyhcXFxcXFxcInh1bmxlaVxcXFxcXFwiKSkgcHV0TXlWYXIoXFxcXFxcXCJhbmNlc3Rvcl9pZHNcXFxcXFxcIiwgaWQpXFxcXG4gICAgICAgICAgICByZXR1cm4gJChcXFxcXFxcImhpa2VyOi8vZW1wdHk/cGFnZT1meXBhZ2UjXFxcXFxcXCIraWQrXFxcXFxcXCIjbm9Mb2FkaW5nIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFxcXFxcIikucnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IFtdXFxcXG4gICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXFxcXFwiaGFuc2h1XFxcXFxcXCIpLnl1bnBhbjIoZClcXFxcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZClcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgY29uc3Qge1xcXFxuICAgICAgICAgICAgemh1YW5jdW4sXFxcXG4gICAgICAgICAgICBsYXp5MVxcXFxuICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGFuc2h1XFxcXFxcXCIpXFxcXG4gICAgICAgIGxldCBpZDEgPSB6aHVhbmN1bihpZClcXFxcbiAgICAgICAgcmV0dXJuIGxhenkxKGlkMSlcXFxcbiAgICB9LCBpbnB1dC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIikpXFxcXG59XFxcXG5cXFxcbi8vIOejgeWKm1xcXFxuZnVuY3Rpb24gbGF6eTMoaW5wdXQpIHtcXFxcbiAgICByZXR1cm4gJChcXFxcXFxcIlxcXFxcXFwiKS5sYXp5UnVsZSgoaW5wdXQpID0+IHtcXFxcbiAgICAgICAgbGV0IG5hbWUgPSBpbnB1dFswXVxcXFxuICAgICAgICBsZXQgbWV0YSA9IEpTT04ucGFyc2UoaW5wdXRbMV0pXFxcXG4gICAgICAgIGxldCBkaXIgPSBpbnB1dFsyXVxcXFxuICAgICAgICBsZXQgZmlsZV9zaXplID0gaW5wdXRbM11cXFxcbiAgICAgICAgbGV0IGZpbGVfaW5kZXggPSBpbnB1dFs0XVxcXFxuICAgICAgICBpZiAoZGlyICE9IFxcXFxcXFwibnVsbFxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gJChcXFxcXFxcImhpa2VyOi8vZW1wdHk/cGFnZT1meXBhZ2UjXFxcXFxcXCIrTVlfVVJMLnNwbGl0KFxcXFxcXFwiI1xcXFxcXFwiKVsxXStcXFxcXFxcIiNub0xvYWRpbmcjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXFxcXFwiKS5ydWxlKChkaXIpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBjb25zdCB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxhenkzLFxcXFxuICAgICAgICAgICAgICAgICAgICBieXRlc1RvU2l6ZVxcXFxuICAgICAgICAgICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoYW5zaHVcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICBjb25zdCBkID0gW11cXFxcbiAgICAgICAgICAgICAgICBsZXQgbGlzdDEgPSBKU09OLnBhcnNlKGRpcikucmVzb3VyY2VzXFxcXG4gICAgICAgICAgICAgICAgbGlzdDEuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBieXRlc1RvU2l6ZShpdGVtLmZpbGVfc2l6ZSksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGl0ZW0ubWV0YS5pY29uLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsYXp5MyhpdGVtLm5hbWUrXFxcXFxcXCIjXFxcXFxcXCIrSlNPTi5zdHJpbmdpZnkoaXRlbS5tZXRhKStcXFxcXFxcIiNcXFxcXFxcIitKU09OLnN0cmluZ2lmeShpdGVtLmRpcikrXFxcXFxcXCIjXFxcXFxcXCIraXRlbS5maWxlX3NpemUrXFxcXFxcXCIjXFxcXFxcXCIraXRlbS5maWxlX2luZGV4KSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImF2YXRhclxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0ubmFtZVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpXFxcXG4gICAgICAgICAgICB9LCBkaXIpXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgY29uc3Qge1xcXFxuICAgICAgICAgICAgcmVxMSxcXFxcbiAgICAgICAgICAgIGFjdGl2aXR5LFxcXFxuICAgICAgICAgICAgeXVuYm8sXFxcXG4gICAgICAgICAgICBsYXp5MVxcXFxuICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGFuc2h1XFxcXFxcXCIpXFxcXG4gICAgICAgIGFjdGl2aXR5KClcXFxcbiAgICAgICAgXFxcXG4gICAgICAgIGxldCBpZCA9IHl1bmJvKG5hbWUsIE1ZX1VSTC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIilbMV0sIGZpbGVfaW5kZXgpXFxcXG4gICAgICAgIHJldHVybiBsYXp5MShpZCtcXFxcXFxcIiNcXFxcXFxcIittZXRhLm1pbWVfdHlwZStcXFxcXFxcIiNcXFxcXFxcIitcXFxcXFxcIuWIoOmZpFxcXFxcXFwiKVxcXFxuICAgICAgICBcXFxcbiAgICAgICAgLypcXFxcbiAgICAgICAgbGV0IGhlYWRlcjEgPSB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcIlVzZXItQWdlbnRcXFxcXFxcIjogXFxcXFxcXCJBbmRyb2lkXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBcXFxcXFxcIngtZGV2aWNlLWlkXFxcXFxcXCI6IFxcXFxcXFwiYjcxYTkyM2ViMGUyMjM5ODQyNTk5YTNjMDE2YjQwOThcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwieC1ndWlkXFxcXFxcXCI6IFxcXFxcXFwiYzliMDc2YTQ0NjUxNzk2OWRmZjYzOGNkMzdmYTlmZjFcXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGxldCB1cmwxID0gXFxcXFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9saW5rP2djaWQ9XFxcXFxcXCIrbWV0YS5oYXNoK1xcXFxcXFwiJmZpbGVfbmFtZT1cXFxcXFxcIituYW1lK1xcXFxcXFwiJmZpbGVfc2l6ZT1cXFxcXFxcIitmaWxlX3NpemUrXFxcXFxcXCImcGFyYW1zW2NoZWNrX3ByaXZpbGVnZV09RkxVRU5UX1BMQVlfVElNRVNfTElNSVQmcGFyYW1zW3VybF09XFxcXFxcXCIrZ2V0TXlWYXIoXFxcXFxcXCJzZWFyY2hfd29yZFxcXFxcXFwiKVxcXFxuICAgICAgICBsZXQgaHRtbDFcXFxcbiAgICAgICAgaHRtbDEgPSByZXExKHVybDEsIGhlYWRlcjEpOyAvL2xvZyhodG1sMSlcXFxcbiAgICAgICAgaWYgKGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uID09IFxcXFxcXFwi6aqM6K+B56CB5peg5pWIXFxcXFxcXCIpIGh0bWwxID0gcmVxMSh1cmwxLCBoZWFkZXIxKTsgLy9sb2coaHRtbDEpXFxcXG4gICAgICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbikgcmV0dXJuIHRvYXN0KGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uKVxcXFxuICAgICAgICBsZXQgaWQgPSB5dW5ibyhuYW1lLCBodG1sMS5saW5rLnVybCwgZmlsZV9pbmRleClcXFxcbiAgICAgICAgcmV0dXJuIGxhenkxKGlkK1xcXFxcXFwiI1xcXFxcXFwiK21ldGEubWltZV90eXBlK1xcXFxcXFwiI1xcXFxcXFwiK1xcXFxcXFwi5Yig6ZmkXFxcXFxcXCIpXFxcXG4gICAgICAgICovXFxcXG4gICAgICAgIFxcXFxuICAgIH0sIGlucHV0LnNwbGl0KFxcXFxcXFwiI1xcXFxcXFwiKSlcXFxcbn1cXFxcblxcXFxuLy8g6ZW/5oyJ5oyJ6ZKuXFxcXG5mdW5jdGlvbiBsb25nY2xpY2soaXRlbSkge1xcXFxuICAgIGlmIChNWV9VUkwgPT0gXFxcXFxcXCJoaWtlcjovL2VtcHR5IyNcXFxcXFxcIikge1xcXFxuICAgIGxldCBhbm5pdTEgPSB7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIuWIoOmZpFxcXFxcXFwiLFxcXFxuICAgICAgICBqczogJC50b1N0cmluZygoaWQpID0+IHtcXFxcbiAgICAgICAgICAgICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKS5zaGFuY2h1KGlkKVxcXFxuICAgICAgICAgICAgcmV0dXJuIHRvYXN0KFxcXFxcXFwi5bey5Yig6ZmkXFxcXFxcXCIpXFxcXG4gICAgICAgIH0sIGl0ZW0uaWQpXFxcXG4gICAgfVxcXFxuICAgIHJldHVybiBbYW5uaXUxXVxcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIHJldHVybiBcXFxcXFxcIlxcXFxcXFwiXFxcXG4gICAgfVxcXFxufVxcXFxuXFxcXG4vLyDnm5jlhoVcXFxcbmZ1bmN0aW9uIHl1bnBhbjEoZCkge1xcXFxuICAgIHRyeXtcXFxcbiAgICAgICAgYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAkLnRvU3RyaW5nKCgpPT57XFxcXG4gICAgICAgICAgICBjbGVhck15VmFyKFxcXFxcXFwibmV4dF9wYWdlX3Rva2VuXFxcXFxcXCIpXFxcXG4gICAgICAgIH0pKVxcXFxuICAgICAgICBsZXQgaWQgPSBNWV9VUkwuc3BsaXQoXFxcXFxcXCIjXFxcXFxcXCIpWzFdXFxcXG4gICAgICAgIGlmIChnZXRNeVZhcihcXFxcXFxcIm5leHRfcGFnZV90b2tlblxcXFxcXFwiLCBcXFxcXFxcIjBcXFxcXFxcIikgIT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgbGV0IHVybDEgPSAnaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvZmlsZXM/cGFyZW50X2lkPScraWQrJyZwYWdlX3Rva2VuPScrZ2V0TXlWYXIoXFxcXFxcXCJuZXh0X3BhZ2VfdG9rZW5cXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIikrJyZmaWx0ZXJzPXtcXFxcXFxcInRyYXNoZWRcXFxcXFxcIjp7XFxcXFxcXCJlcVxcXFxcXFwiOmZhbHNlfX0md2l0aD1wdWJsaWNfc2hhcmVfdGFnJndpdGg9dGFzayZ3aXRoX2F1ZGl0PXRydWUmdGh1bWJuYWlsX3NpemU9U0laRV9MQVJHRSdcXFxcbiAgICAgICAgICAgIGxldCBodG1sMVxcXFxuICAgICAgICAgICAgaHRtbDEgPSByZXExKHVybDEsIFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcXFxcXCLpqozor4HnoIHml6DmlYhcXFxcXFxcIikgaHRtbDEgPSByZXExKHVybDEsIFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICBpZiAoaHRtbDEubmV4dF9wYWdlX3Rva2VuICE9IFxcXFxcXFwiXFxcXFxcXCIpIHB1dE15VmFyKFxcXFxcXFwibmV4dF9wYWdlX3Rva2VuXFxcXFxcXCIsIGh0bWwxLm5leHRfcGFnZV90b2tlbilcXFxcbiAgICAgICAgICAgIGxldCBsaXN0MSA9IGh0bWwxLmZpbGVzXFxcXG4gICAgICAgICAgICBsaXN0MS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGJ5dGVzVG9TaXplKGl0ZW0uc2l6ZSksXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogaXRlbS5raW5kLmluY2x1ZGVzKFxcXFxcXFwiZm9sZGVyXFxcXFxcXCIpID8gXFxcXFxcXCJoaWtlcjovL2ltYWdlcy9pY29uX2ZvbGRlcjNcXFxcXFxcIiA6IGl0ZW0uaWNvbl9saW5rLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGxhenkxKGl0ZW0uaWQrXFxcXFxcXCIjXFxcXFxcXCIraXRlbS5taW1lX3R5cGUpLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJhdmF0YXJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogaXRlbS5uYW1lLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBsb25nY2xpY2soaXRlbSlcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9XFxcXG4gICAgfWNhdGNoKGUpe1xcXFxuICAgICAgICBsb2coZS5tZXNzYWdlKVxcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuLy8g55uY5aSWXFxcXG5mdW5jdGlvbiB5dW5wYW4yKGQpIHtcXFxcbiAgICB0cnl7XFxcXG4gICAgICAgIGxldCB1cmwxXFxcXG4gICAgICAgIGxldCBodG1sMVxcXFxuICAgICAgICBsZXQgbGlzdDFcXFxcbiAgICAgICAgbGV0IGlkID0gTVlfVVJMLnNwbGl0KFxcXFxcXFwiI1xcXFxcXFwiKVsxXVxcXFxuICAgICAgICBhZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCk9PntcXFxcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcXFxcXCJuZXh0X3BhZ2VfdG9rZW5cXFxcXFxcIilcXFxcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcXFxcXCJhbmNlc3Rvcl9pZHNcXFxcXFxcIilcXFxcbiAgICAgICAgfSkpXFxcXG4gICAgICAgIGlmIChnZXRNeVZhcihcXFxcXFxcIm5leHRfcGFnZV90b2tlblxcXFxcXFwiLCBcXFxcXFxcIjBcXFxcXFxcIikgIT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgdXJsMSA9ICdodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9zaGFyZS9kZXRhaWw/c2hhcmVfaWQ9JytnZXRNeVZhcihcXFxcXFxcInNoYXJlX2lkXFxcXFxcXCIpKycmcGFyZW50X2lkPScraWQrJyZwYXNzX2NvZGVfdG9rZW49JytlbmNvZGVVUklDb21wb25lbnQoZ2V0TXlWYXIoXFxcXFxcXCJwYXNzX2NvZGVfdG9rZW5cXFxcXFxcIikpKycmdGh1bWJuYWlsX3NpemU9U0laRV9TTUFMTCZwYWdlX3Rva2VuPScrZ2V0TXlWYXIoXFxcXFxcXCJuZXh0X3BhZ2VfdG9rZW5cXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIilcXFxcbiAgICAgICAgICAgIGh0bWwxID0gcmVxMSh1cmwxLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgaWYgKGh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uID09IFxcXFxcXFwi6aqM6K+B56CB5peg5pWIXFxcXFxcXCIpIGh0bWwxID0gcmVxMSh1cmwxLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgaWYgKGh0bWwxLm5leHRfcGFnZV90b2tlbiAhPSBcXFxcXFxcIlxcXFxcXFwiKSBwdXRNeVZhcihcXFxcXFxcIm5leHRfcGFnZV90b2tlblxcXFxcXFwiLCBodG1sMS5uZXh0X3BhZ2VfdG9rZW4pXFxcXG4gICAgICAgICAgICBsaXN0MSA9IGh0bWwxLmZpbGVzOyAvL2xvZyhsaXN0MSlcXFxcbiAgICAgICAgICAgIGxpc3QxLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogYnl0ZXNUb1NpemUoaXRlbS5zaXplKSxcXFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBpdGVtLmtpbmQuaW5jbHVkZXMoXFxcXFxcXCJmb2xkZXJcXFxcXFxcIikgPyBcXFxcXFxcImhpa2VyOi8vaW1hZ2VzL2ljb25fZm9sZGVyM1xcXFxcXFwiIDogaXRlbS5pY29uX2xpbmssXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogbGF6eTIoaXRlbS5pZCtcXFxcXFxcIiNcXFxcXFxcIitpdGVtLm1pbWVfdHlwZSksXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImF2YXRhclxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBpdGVtLm5hbWVcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9XFxcXG4gICAgfWNhdGNoKGUpe1xcXFxuICAgICAgICBsb2coZS5tZXNzYWdlKVxcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuLy8g56OB5YqbXFxcXG5mdW5jdGlvbiB5dW5wYW4zKGQpIHtcXFxcbiAgICB0cnl7XFxcXG4gICAgICAgIGxldCB1cmwxXFxcXG4gICAgICAgIGxldCBodG1sMVxcXFxuICAgICAgICBsZXQgbGlzdDFcXFxcbiAgICAgICAgbGV0IGlkID0gTVlfVVJMLnNwbGl0KFxcXFxcXFwiI1xcXFxcXFwiKVsxXVxcXFxuICAgICAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcXFxcXCJ1cmxzXFxcXFxcXCI6aWR9KVxcXFxuICAgICAgICBodG1sMSA9IHJlcTIoXFxcXFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9yZXNvdXJjZS9saXN0XFxcXFxcXCIsIFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIsIGJvZHkxKS5saXN0LnJlc291cmNlczsgLy9sb2coaHRtbDEpXFxcXG4gICAgICAgIGlmIChodG1sMS5lcnJvcl9kZXNjcmlwdGlvbiA9PSBcXFxcXFxcIumqjOivgeeggeaXoOaViFxcXFxcXFwiKSBodG1sMSA9IHJlcTIoXFxcXFxcXCJodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9yZXNvdXJjZS9saXN0XFxcXFxcXCIsIFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIsIGJvZHkxKS5saXN0LnJlc291cmNlczsgLy9sb2coaHRtbDEpXFxcXG4gICAgICAgIGlmIChodG1sMVswXS5kaXIpIHtcXFxcbiAgICAgICAgICAgIGxpc3QxID0gaHRtbDFbMF0uZGlyLnJlc291cmNlczsgLy9sb2cobGlzdDEpXFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBsaXN0MSA9IGh0bWwxOyAvL2xvZyhsaXN0MSlcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBzZXRQYWdlVGl0bGUoaHRtbDFbMF0ubmFtZSlcXFxcbiAgICAgICAgbGlzdDEuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBieXRlc1RvU2l6ZShpdGVtLnNpemUpLFxcXFxuICAgICAgICAgICAgICAgIGltZzogaXRlbS5tZXRhLmljb24sXFxcXG4gICAgICAgICAgICAgICAgdXJsOiBsYXp5MyhpdGVtLm5hbWUrXFxcXFxcXCIjXFxcXFxcXCIrSlNPTi5zdHJpbmdpZnkoaXRlbS5tZXRhKStcXFxcXFxcIiNcXFxcXFxcIitKU09OLnN0cmluZ2lmeShpdGVtLmRpcikrXFxcXFxcXCIjXFxcXFxcXCIraXRlbS5maWxlX3NpemUrXFxcXFxcXCIjXFxcXFxcXCIraXRlbS5maWxlX2luZGV4KSxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJhdmF0YXJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0ubmFtZVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfWNhdGNoKGUpe1xcXFxuICAgICAgICBsb2coZS5tZXNzYWdlKVxcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuLy8g5pCc57Si55WM6Z2iXFxcXG5mdW5jdGlvbiBydWxlMShkKSB7TVlfVVJMPU1ZX1VSTC5yZXBsYWNlKC9eaGlrZXI6XFxcXFxcXFwvXFxcXFxcXFwvcGFnZS4qPyMvLCcnKS5yZXBsYWNlKC8jIy8sJyMnKTtcXFxcbiAgICBsb2coJ01ZX1VSTDonK01ZX1VSTCk7XFxcXG4gICAgdHJ5e1xcXFxuICAgICAgICBjb25zdCB7XFxcXG4gICAgICAgICAgICByZXExLFxcXFxuICAgICAgICAgICAgcmVxMixcXFxcbiAgICAgICAgICAgIGxhenkyLFxcXFxuICAgICAgICAgICAgbGF6eTNcXFxcbiAgICAgICAgfSA9ICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKVxcXFxuICAgICAgICBsZXQgdXJsMVxcXFxuICAgICAgICBsZXQgdXJsMlxcXFxuICAgICAgICBsZXQgaHRtbDFcXFxcbiAgICAgICAgbGV0IGxpc3QxXFxcXG4gICAgICAgIGlmIChNWV9VUkwuaW5jbHVkZXMoXFxcXFxcXCJ4dW5sZWlcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgdXJsMiA9IE1ZX1VSTC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIilbMV0uc3BsaXQoXFxcXFxcXCIvcy9cXFxcXFxcIilbMV0uc3BsaXQoXFxcXFxcXCI/cHdkPVxcXFxcXFwiKTsgXFxcXG4gICAgICAgIHB1dE15VmFyKFxcXFxcXFwic2hhcmVfaWRcXFxcXFxcIiwgdXJsMlswXSlcXFxcbiAgICAgICAgdXJsMSA9ICdodHRwczovL2FwaS1wYW4ueHVubGVpLmNvbS9kcml2ZS92MS9zaGFyZT9zaGFyZV9pZD0nK3VybDJbMF0rJyZwYXNzX2NvZGU9Jyt1cmwyWzFdKycmdGh1bWJuYWlsX3NpemU9U0laRV9TTUFMTCZwYXJhbXM9e1xcXFxcXFwib3JpZ2luXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIn0nXFxcXG4gICAgICAgIGh0bWwxID0gcmVxMSh1cmwxLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKVxcXFxuICAgICAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcXFxcXCLpqozor4HnoIHml6DmlYhcXFxcXFxcIikgaHRtbDEgPSByZXExKHVybDEsIFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIpXFxcXG4gICAgICAgIGlmIChodG1sMS5wYXNzX2NvZGVfdG9rZW4gIT0gXFxcXFxcXCJcXFxcXFxcIikgcHV0TXlWYXIoXFxcXFxcXCJwYXNzX2NvZGVfdG9rZW5cXFxcXFxcIiwgaHRtbDEucGFzc19jb2RlX3Rva2VuKVxcXFxuICAgICAgICBpZiAoaHRtbDEubmV4dF9wYWdlX3Rva2VuICE9IFxcXFxcXFwiXFxcXFxcXCIpIHB1dE15VmFyKFxcXFxcXFwibmV4dF9wYWdlX3Rva2VuXFxcXFxcXCIsIGh0bWwxLm5leHRfcGFnZV90b2tlbilcXFxcbiAgICAgICAgc2V0UGFnZVRpdGxlKGh0bWwxLnRpdGxlKVxcXFxuICAgICAgICBsaXN0MSA9IGh0bWwxLmZpbGVzOyAvL2xvZyhsaXN0MSlcXFxcbiAgICAgICAgbGlzdDEuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBieXRlc1RvU2l6ZShpdGVtLnNpemUpLFxcXFxuICAgICAgICAgICAgICAgIGltZzogaXRlbS5raW5kLmluY2x1ZGVzKFxcXFxcXFwiZm9sZGVyXFxcXFxcXCIpID8gXFxcXFxcXCJoaWtlcjovL2ltYWdlcy9pY29uX2ZvbGRlcjNcXFxcXFxcIiA6IGl0ZW0uaWNvbl9saW5rLFxcXFxuICAgICAgICAgICAgICAgIHVybDogbGF6eTIoaXRlbS5pZCtcXFxcXFxcIiNcXFxcXFxcIitpdGVtLm1pbWVfdHlwZSksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBpdGVtLm5hbWVcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICB1cmwyID0gTVlfVVJMLnNwbGl0KFxcXFxcXFwiI1xcXFxcXFwiKVsxXTsgbG9nKHVybDIpXFxcXG4gICAgICAgIGxldCBib2R5MSA9IEpTT04uc3RyaW5naWZ5KHtcXFxcXFxcInVybHNcXFxcXFxcIjp1cmwyfSlcXFxcbiAgICAgICAgaHRtbDEgPSByZXEyKFxcXFxcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvcmVzb3VyY2UvbGlzdFxcXFxcXFwiLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiLCBib2R5MSk7IC8vbG9nKGh0bWwxKVxcXFxuICAgICAgICBpZiAoaHRtbDEuZXJyb3IgPT0gXFxcXFxcXCJjYXB0Y2hhX2ludmFsaWRcXFxcXFxcIikgaHRtbDEgPSByZXEyKFxcXFxcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvcmVzb3VyY2UvbGlzdFxcXFxcXFwiLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiLCBib2R5MSk7IC8vbG9nKGh0bWwxKVxcXFxuICAgICAgICBpZiAoaHRtbDEubGlzdC5yZXNvdXJjZXNbMF0uZGlyKSB7XFxcXG4gICAgICAgICAgICBsaXN0MSA9IGh0bWwxLmxpc3QucmVzb3VyY2VzWzBdLmRpci5yZXNvdXJjZXM7IC8vbG9nKGxpc3QxKVxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgbGlzdDEgPSBodG1sMS5saXN0LnJlc291cmNlczsgLy9sb2cobGlzdDEpXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgc2V0UGFnZVRpdGxlKGh0bWwxLmxpc3QucmVzb3VyY2VzWzBdLm5hbWUpXFxcXG4gICAgICAgIGxpc3QxLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogYnl0ZXNUb1NpemUoaXRlbS5maWxlX3NpemUpLFxcXFxuICAgICAgICAgICAgICAgIGltZzogaXRlbS5tZXRhLmljb24sXFxcXG4gICAgICAgICAgICAgICAgdXJsOiBsYXp5MyhpdGVtLm5hbWUrXFxcXFxcXCIjXFxcXFxcXCIrSlNPTi5zdHJpbmdpZnkoaXRlbS5tZXRhKStcXFxcXFxcIiNcXFxcXFxcIitKU09OLnN0cmluZ2lmeShpdGVtLmRpcikrXFxcXFxcXCIjXFxcXFxcXCIraXRlbS5maWxlX3NpemUrXFxcXFxcXCIjXFxcXFxcXCIraXRlbS5maWxlX2luZGV4KSxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJhdmF0YXJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0ubmFtZVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIH1cXFxcbiAgICB9Y2F0Y2goZSl7XFxcXG4gICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxcXG4gICAgfVxcXFxufVxcXFxuXFxcXG4vLyDpk77mjqXlpITnkIZcXFxcbmZ1bmN0aW9uIHJ1bGUyKGlucHV0KSB7bG9nKCdpbnB1dDonK2lucHV0KTtcXFxcbiAgICBsZXQgdXJsMVxcXFxuICAgIGlmIChpbnB1dC5pbmNsdWRlcyhcXFxcXFxcInh1bmxlaVxcXFxcXFwiKSkge1xcXFxuICAgICAgICBpZiAoaW5wdXQuaW5jbHVkZXMoXFxcXFxcXCI9XFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICB1cmwxID0gXFxcXFxcXCJodHRwczovL3Bhbi54dW5sZWkuY29tL3MvXFxcXFxcXCIraW5wdXQubWF0Y2goL1tBLVphLXowLTlfLV17MjZ9LylbMF0rXFxcXFxcXCI/cHdkPVxcXFxcXFwiK2lucHV0Lm1hdGNoKC89KFxcXFxcXFxcd3s0fSkvKVsxXVxcXFxuICAgICAgICAgICAgXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgaWYgKGlucHV0LmluY2x1ZGVzKFxcXFxcXFwi5o+Q5Y+W56CBXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICB1cmwxID0gXFxcXFxcXCJodHRwczovL3Bhbi54dW5sZWkuY29tL3MvXFxcXFxcXCIraW5wdXQubWF0Y2goL1tBLVphLXowLTlfLV17MjZ9LylbMF0rXFxcXFxcXCI/cHdkPVxcXFxcXFwiK2lucHV0Lm1hdGNoKC/mj5Dlj5bnoIEuKihcXFxcXFxcXHd7NH0pLylbMV1cXFxcbiAgICAgICAgfVxcXFxuICAgIH0gZWxzZSBpZiAoLyhtYWduZXQ6fGVkMms6fGJ0OnxmdHA6fFxcXFxcXFxcLnRvcnJlbnQpLy50ZXN0KGlucHV0KSkge1xcXFxuICAgICAgICB1cmwxID0gaW5wdXRcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICB1cmwxID0gXFxcXFxcXCJcXFxcXFxcIlxcXFxuICAgIH1cXFxcbiAgICBpZiAodXJsMSAhPSBcXFxcXFxcIlxcXFxcXFwiKSB7bG9nKCdydWxlMTonKVxcXFxuICAgICAgICBwdXRNeVZhcihcXFxcXFxcInNlYXJjaF93b3JkXFxcXFxcXCIsIHVybDEpXFxcXG4gICAgICAgIHJldHVybiAkKFxcXFxcXFwiaGlrZXI6Ly9lbXB0eSNcXFxcXFxcIit1cmwxK1xcXFxcXFwiI25vTG9hZGluZyNcXFxcXFxcIikucnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICBjb25zdCBkID0gW11cXFxcbiAgICAgICAgICAgICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKS5ydWxlMShkKVxcXFxuICAgICAgICAgICAgc2V0UmVzdWx0KGQpXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfVxcXFxufVxcXFxuXFxcXG4vLyDovazlrZjmlofku7bliLDnm5jlhoVcXFxcbmZ1bmN0aW9uIHpodWFuY3VuKGlkKSB7XFxcXG4gICAgbGV0IGFuY2VzdG9yX2lkcyA9IGdldE15VmFyKFxcXFxcXFwiYW5jZXN0b3JfaWRzXFxcXFxcXCIpID09IFxcXFxcXFwiXFxcXFxcXCIgPyBbXSA6IFtnZXRNeVZhcihcXFxcXFxcImFuY2VzdG9yX2lkc1xcXFxcXFwiKV1cXFxcbiAgICBsZXQgdXJsMSA9IFxcXFxcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvc2hhcmUvcmVzdG9yZVxcXFxcXFwiXFxcXG4gICAgbGV0IGJvZHkxID0gSlNPTi5zdHJpbmdpZnkoe1xcXFxcXFwicGFyZW50X2lkXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInNwZWNpZnlfcGFyZW50X2lkXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInNoYXJlX2lkXFxcXFxcXCI6Z2V0TXlWYXIoXFxcXFxcXCJzaGFyZV9pZFxcXFxcXFwiKSxcXFxcXFxcInBhc3NfY29kZV90b2tlblxcXFxcXFwiOmdldE15VmFyKFxcXFxcXFwicGFzc19jb2RlX3Rva2VuXFxcXFxcXCIpLFxcXFxcXFwiZmlsZV9pZHNcXFxcXFxcIjpbaWRdLFxcXFxcXFwiYW5jZXN0b3JfaWRzXFxcXFxcXCI6YW5jZXN0b3JfaWRzfSlcXFxcbiAgICByZXEyKHVybDEsIFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIsIGJvZHkxKVxcXFxuICAgIGphdmEubGFuZy5UaHJlYWQuc2xlZXAoMTAwMClcXFxcbiAgICBsZXQgaHRtbDJcXFxcbiAgICBodG1sMiA9IHJlcTEoJ2h0dHBzOi8vYXBpLXBhbi54dW5sZWkuY29tL2RyaXZlL3YxL2ZpbGVzP3BhcmVudF9pZD0mcGFnZV90b2tlbj0mZmlsdGVycz17XFxcXFxcXCJ0cmFzaGVkXFxcXFxcXCI6e1xcXFxcXFwiZXFcXFxcXFxcIjpmYWxzZX19JndpdGg9cHVibGljX3NoYXJlX3RhZyZ3aXRoPXRhc2smd2l0aF9hdWRpdD10cnVlJnRodW1ibmFpbF9zaXplPVNJWkVfTEFSR0UnLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKS5maWxlc1swXTsgLy9sb2coaHRtbDIpXFxcXG4gICAgaWYgKGh0bWwyLmVycm9yX2Rlc2NyaXB0aW9uID09IFxcXFxcXFwi6aqM6K+B56CB5peg5pWIXFxcXFxcXCIpIGh0bWwyID0gcmVxMSgnaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvZmlsZXM/cGFyZW50X2lkPSZwYWdlX3Rva2VuPSZmaWx0ZXJzPXtcXFxcXFxcInRyYXNoZWRcXFxcXFxcIjp7XFxcXFxcXCJlcVxcXFxcXFwiOmZhbHNlfX0md2l0aD1wdWJsaWNfc2hhcmVfdGFnJndpdGg9dGFzayZ3aXRoX2F1ZGl0PXRydWUmdGh1bWJuYWlsX3NpemU9U0laRV9MQVJHRScsIFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIpLmZpbGVzWzBdOyAvL2xvZyhodG1sMilcXFxcbiAgICByZXR1cm4gaHRtbDIuaWQrXFxcXFxcXCIjXFxcXFxcXCIrKGh0bWwyLm1pbWVfdHlwZXx8XFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIikrXFxcXFxcXCIjXFxcXFxcXCIrXFxcXFxcXCLliKDpmaRcXFxcXFxcIlxcXFxufVxcXFxuXFxcXG4vLyDliKDpmaTnm5jlhoXmlofku7ZcXFxcbmZ1bmN0aW9uIHNoYW5jaHUoaWQpIHtcXFxcbiAgICBsZXQgYm9keTEgPSBKU09OLnN0cmluZ2lmeSh7XFxcXFxcXCJpZHNcXFxcXFxcIjpbaWRdLFxcXFxcXFwic3BhY2VcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwifSlcXFxcbiAgICByZXEyKFxcXFxcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvZmlsZXM6YmF0Y2hEZWxldGVcXFxcXFxcIiwgXFxcXFxcXCJ1bmRlZmluZWRcXFxcXFxcIiwgYm9keTEpXFxcXG59XFxcXG5cXFxcbi8vYnkgTG95RGdJayDkvaxcXFxcbmZ1bmN0aW9uIGJ5dGVzVG9TaXplKHNpemUpIHtcXFxcbiAgICBpZiAoc2l6ZSA9PT0gXFxcXFxcXCIwXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgcmV0dXJuICcnO1xcXFxuICAgIH1cXFxcbiAgICBjb25zdCB1bml0cyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xcXFxuICAgIGxldCBpID0gMDtcXFxcbiAgICB3aGlsZSAoc2l6ZSA+PSAxMDI0KSB7XFxcXG4gICAgICAgIHNpemUgLz0gMTAyNDtcXFxcbiAgICAgICAgaSsrO1xcXFxuICAgIH1cXFxcbiAgICBzaXplID0gaSA/IE51bWJlcihzaXplLnRvRml4ZWQoMikpIDogc2l6ZTtcXFxcbiAgICByZXR1cm4gYCR7c2l6ZX0gJHt1bml0c1tpXX1gO1xcXFxufVxcXFxuXFxcXG4kLmV4cG9ydHMgPSB7XFxcXG4gICAgcmVxMSxcXFxcbiAgICByZXEyLFxcXFxuICAgIHNlbmRzbXMsXFxcXG4gICAgc21zbG9naW4sXFxcXG4gICAgbG9naW4sXFxcXG4gICAgc2lnbmluLFxcXFxuICAgIGFjY2Vzc190b2tlbixcXFxcbiAgICBjYXB0Y2hhLFxcXFxuICAgIGFjdGl2aXR5LFxcXFxuICAgIHl1bmJvLFxcXFxuICAgIHl1bnBhbjEsXFxcXG4gICAgeXVucGFuMixcXFxcbiAgICB5dW5wYW4zLFxcXFxuICAgIGxhenkxLFxcXFxuICAgIGxhenkyLFxcXFxuICAgIGxhenkzLFxcXFxuICAgIHJ1bGUxLFxcXFxuICAgIHJ1bGUyLFxcXFxuICAgIHpodWFuY3VuLFxcXFxuICAgIHNoYW5jaHUsXFxcXG4gICAgYnl0ZXNUb1NpemVcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLnmbvlvZXnlYzpnaJcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZGVuZ2x1XFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxuY29uc3QgZCA9IFtdXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIuaJi+acuumqjOivgeeZu+W9lVxcXFxcXFwiLFxcXFxuICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcXFxuICAgIH1cXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIGRlc2M6IFxcXFxcXFwi6K+36L6T5YWl5omL5py65Y+3XFxcXFxcXCIsXFxcXG4gICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIixcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJpbnB1dFxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxcXG4gICAgICAgIG9uQ2hhbmdlOiBcXFxcXFxcInNldEl0ZW0oJ21vYmlsZScsaW5wdXQpXFxcXFxcXCJcXFxcbiAgICB9XFxcXG59KVxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLigJzigJzojrflj5bpqozor4HnoIHigJzigJxcXFxcXFxcIixcXFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgIHNldEl0ZW0oXFxcXFxcXCJtb2JpbGVcXFxcXFxcIiwgZ2V0SXRlbSgnbW9iaWxlJykpXFxcXG4gICAgICAgICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKS5zZW5kc21zKClcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgfSksXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcXFxuICAgIH1cXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIGRlc2M6IFxcXFxcXFwi6K+36L6T5YWl6aqM6K+B56CBXFxcXFxcXCIsXFxcXG4gICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIixcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJpbnB1dFxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxcXG4gICAgICAgIG9uQ2hhbmdlOiBcXFxcXFxcInB1dE15VmFyKCdzbXNDb2RlJyxpbnB1dClcXFxcXFxcIlxcXFxuICAgIH1cXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIuKAnOKAnOehruiupOKAnOKAnFxcXFxcXFwiLFxcXFxuICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgcHV0TXlWYXIoXFxcXFxcXCJzbXNDb2RlXFxcXFxcXCIsIGdldE15VmFyKCdzbXNDb2RlJykpXFxcXG4gICAgICAgICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKS5zbXNsb2dpbigpXFxcXG4gICAgICAgIGJhY2sodHJ1ZSlcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgfSksXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiXFxcXG59KVxcXFxuZC5wdXNoKHtcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJibGFua19ibG9ja1xcXFxcXFwiXFxcXG59KVxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLotKblj7flr4bnoIHnmbvlvZVcXFxcXFxcIixcXFxcbiAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXFxcbiAgICB9XFxcXG59KVxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBkZXNjOiBcXFxcXFxcIuivt+i+k+WFpeaJi+acuuWPty/pgq7nrrEv6LSm5Y+3XFxcXFxcXCIsXFxcXG4gICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIixcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJpbnB1dFxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxcXG4gICAgICAgIG9uQ2hhbmdlOiBcXFxcXFxcInNldEl0ZW0oJ21vYmlsZScsaW5wdXQpXFxcXFxcXCJcXFxcbiAgICB9XFxcXG59KVxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBkZXNjOiBcXFxcXFxcIuivt+i+k+WFpeWvhueggVxcXFxcXFwiLFxcXFxuICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwiaW5wdXRcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcXFxuICAgICAgICBvbkNoYW5nZTogXFxcXFxcXCJzZXRJdGVtKCdwYXNzV29yZCcsaW5wdXQpXFxcXFxcXCJcXFxcbiAgICB9XFxcXG59KVxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLigJzigJznoa7orqTigJzigJxcXFxcXFxcIixcXFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgIHNldEl0ZW0oXFxcXFxcXCJtb2JpbGVcXFxcXFxcIiwgZ2V0SXRlbSgnbW9iaWxlJykpXFxcXG4gICAgICAgIHNldEl0ZW0oXFxcXFxcXCJwYXNzV29yZFxcXFxcXFwiLCBnZXRJdGVtKCdwYXNzV29yZCcpKVxcXFxuICAgICAgICAkLnJlcXVpcmUoXFxcXFxcXCJoYW5zaHVcXFxcXFxcIikubG9naW4oKVxcXFxuICAgICAgICBiYWNrKHRydWUpXFxcXG4gICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgIH0pLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXFxcbiAgICB9XFxcXG59KVxcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCc4oCd4oCdPHN0cm9uZz7kvb/nlKjliY3pobvnn6U8L3N0cm9uZz5cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiLFxcXFxuICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxcXG4gICAgICAgIH1cXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCIxLiDmnKzlsI/nqIvluo/miYDmnInku6PnoIHlhajpg6jlvIDmupDvvIzkuJTmnKzop4TliJnkuLrlrabkuaDnm67nmoTvvIzor7fkuo7lr7zlhaUyNOWwj+aXtuWGheWIoOmZpO+8ge+8ge+8gTxicj4yLiDop4bpopHmlofku7bkuI3lvIDmnoHpgJ/mkq3nvZHpgJ8zTS9z77yM5byA5p6B6YCf5pKt5YiZMzBNL3MgKOWPr+iDveS5n+aUr+aMgeaSreaUvumfs+mike+8jOafpeeci+WbvueJh+WSjOebtOaOpeS4i+i9veWFtuWug+exu+Wei+eahOaWh+S7tinvvIHvvIHvvIE8YnI+My4g5bCP56iL5bqP5LuF6aaW6aG155qE5paH5Lu25pSv5oyB6YCa6L+H6ZW/5oyJ5Yig6ZmkPGJyPjQuIOacrOeoi+W6j+S4uuWFtuWug+Wwj+eoi+W6j+aPkOS+m+S6huiwg+eUqOaOpeWPo++8jOiwg+eUqOS+i+WtkOivt+WPguiAgyjlrZDpobXpnaIt6LCD55So55WM6Z2iKeazqOmHiumDqOWIhueahOS7o+eggVxcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcImNvbF90eXBlXFxcXFxcXCI6IFxcXFxcXFwicmljaF90ZXh0XFxcXFxcXCJcXFxcbn0pXFxcXG5zZXRSZXN1bHQoZClcXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuiwg+eUqOmhtemdolxcXCIsXFxcInBhdGhcXFwiOlxcXCJkaWFveW9uZ1xcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcblxcXFxuLypcXFxcbuiwg+eUqOS+i+WtkFxcXFxuKi9cXFxcblxcXFxuLypcXFxcblxcXFxuLy8g6L+F6Zu36ZO+5o6l5L6L5a2Q77yaXFxcXG5sZXQgdXJsMSA9IFxcXFxcXFwiaHR0cHM6Ly9wYW4ueHVubGVpLmNvbS9zL1ZPMk9NWG9SR1RYUTRnNmh5MXlIaTFWWEExP3B3ZD1lNmNqXFxcXFxcXCJcXFxcblxcXFxuLy8g56OB5Yqb6ZO+5o6l5L6L5a2Q77yaXFxcXG5sZXQgdXJsMSA9IFxcXFxcXFwibWFnbmV0Oj94dD11cm46YnRpaDo2OTk5ZTZkOGNiNzRkNTEzYzlmM2JmNDM4NDBmYTY4Njc1NzFmYTNjXFxcXFxcXCJcXFxcblxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLov4Xpm7fosIPnlKjmtYvor5VcXFxcXFxcIixcXFxcbiAgICB1cmw6ICQodXJsMSkubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICBpZiAoLyh4dW5sZWl8bWFnbmV0OnxlZDJrOnxidDp8ZnRwOnxcXFxcXFxcXC50b3JyZW50KS8udGVzdChpbnB1dCkpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vcGFnZS9kaWFveW9uZz9ydWxlPei/hembtyZwYWdlPWZ5cGFnZSNcXFxcXFxcIiArIGlucHV0XFxcXG4gICAgICAgIH1cXFxcbiAgICB9KSxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCJcXFxcbn0pXFxcXG5cXFxcbiovXFxcXG5cXFxcbmNvbnN0IHtcXFxcbiAgICByZXExLFxcXFxuICAgIHJ1bGUxLFxcXFxuICAgIGJ5dGVzVG9TaXplXFxcXG59ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGFuc2h1XFxcXFxcXCIpXFxcXG5jb25zdCBkID0gW107XFxcXG5sZXQgZGVzYzE7XFxcXG5cXFxcbmlmIChnZXRJdGVtKFxcXFxcXFwibW9iaWxlXFxcXFxcXCIpICE9IFxcXFxcXFwidW5kZWZpbmVkXFxcXFxcXCIpIHtcXFxcbiAgICBsZXQgaHRtbDE7XFxcXG4gICAgaHRtbDEgPSByZXExKFxcXFxcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvYWJvdXQ/d2l0aF9xdW90YXM9Q1JFQVRFX09GRkxJTkVfVEFTS19MSU1JVFxcXFxcXFwiLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKTtcXFxcbiAgICBpZiAoaHRtbDEuZXJyb3JfZGVzY3JpcHRpb24gPT0gXFxcXFxcXCLluJDlj7forqTor4HlpLHotKXvvIzor7fph43mlrDnmbvlvZVcXFxcXFxcIikgaHRtbDEgPSByZXExKFxcXFxcXFwiaHR0cHM6Ly9hcGktcGFuLnh1bmxlaS5jb20vZHJpdmUvdjEvYWJvdXQ/d2l0aF9xdW90YXM9Q1JFQVRFX09GRkxJTkVfVEFTS19MSU1JVFxcXFxcXFwiLCBcXFxcXFxcInVuZGVmaW5lZFxcXFxcXFwiKTtcXFxcbiAgICBpZiAoIWh0bWwxLmVycm9yX2Rlc2NyaXB0aW9uKSBkZXNjMSA9IFxcXFxcXFwi5bey5L2/55SoXFxcXFxcXCIrYnl0ZXNUb1NpemUoaHRtbDEucXVvdGEudXNhZ2UpK1xcXFxcXFwiL1xcXFxcXFwiK1xcXFxcXFwi5YWxXFxcXFxcXCIrYnl0ZXNUb1NpemUoaHRtbDEucXVvdGEubGltaXQpO1xcXFxufVxcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIui0puWPt+euoeeQhlxcXFxcXFwiLFxcXFxuICAgIGRlc2M6IGRlc2MxIHx8IFxcXFxcXFwi5pyq55m75b2VXFxcXFxcXCIsXFxcXG4gICAgaW1nOiBcXFxcXFxcImh0dHBzOi8vaWNkbi5iaW5tdC5jYy8yNTA1LzY4MTk2ZDFjOGU5OTMucG5nXFxcXFxcXCIsXFxcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICByZXR1cm4gJChbXFxcXFxcXCLnmbvlvZVcXFxcXFxcIiwgXFxcXFxcXCLpgIDlh7pcXFxcXFxcIl0pLnNlbGVjdCgoKSA9PiB7XFxcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT09IFxcXFxcXFwi55m75b2VXFxcXFxcXCIpIHJldHVybiBcXFxcXFxcImhpa2VyOi8vcGFnZS9kZW5nbHUjbm9SZWNvcmRIaXN0b3J5IyNub0hpc3RvcnkjXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT09IFxcXFxcXFwi6YCA5Ye6XFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICBsZXQga2V5cyA9IFtcXFxcXFxcIm1vYmlsZVxcXFxcXFwiLCBcXFxcXFxcInBhc3NXb3JkXFxcXFxcXCIsIFxcXFxcXFwic2Vzc2lvbklEXFxcXFxcXCIsIFxcXFxcXFwidXNlcl9pZFxcXFxcXFwiLCBcXFxcXFxcImF1dGhvcml6YXRpb25cXFxcXFxcIiwgXFxcXFxcXCJyZWZyZXNoX3Rva2VuXFxcXFxcXCJdO1xcXFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGl0IG9mIGtleXMpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKGl0KTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfSksXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCJcXFxcbn0pO1xcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcImxpbmVfYmxhbmtcXFxcXFxcIlxcXFxufSlcXFxcblxcXFxucnVsZTEoZCk7XFxcXG5cXFxcbnNldFJlc3VsdChkKTtcXFwifV1cIixcInByb3h5XCI6XCJcIn0iLCJwaWNVcmwiOiJodHRwczovL2FwaS5pbWdkYi5jYy9mYXZpY29uL2NpbGlkdW8ucG5nIiwidGl0bGUiOiJCbGFjay5NaXJyb3IuUzA3LklUQS5FTkcuMTA4MHAuTkYuV0VCLURMLkREUDUuMS5ILjI2NC1NZU0uR1AifQ==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement