Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥🔥吾名软件库🔥@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p+ino+aekFwiLFwicGF0aFwiOlwicFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5sZXQgdXJsID0gYmFzZTY0RGVjb2RlKGdldFBhcmFtKFxcXCJ1XFxcIikpO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgdXJsOiB1cmwsXFxuICAgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcbiAgICBkZXNjOiBcXFwiZmxvYXQmJjEwMCVcXFwiLFxcbiAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGNhbkJhY2s6IHRydWVcXG4gICAgfVxcbn0pO1xcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcInRleHRfMVwiLFwibmFtZVwiOlwi5pCc57Si5rWL6K+VXCIsXCJwYXRoXCI6XCJzXCIsXCJydWxlXCI6XCJqczpcXG5sZXQgdXJsID0gYmFzZTY0RGVjb2RlKGdldFBhcmFtKFxcXCJ1XFxcIikpO1xcbmxvZyh1cmwpO1xcbmxldCBrZXkgPSBnZXRQYXJhbShcXFwia2V5XFxcIik7XFxubGV0IHNwID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2Uvc3BcXFwiKTtcXG5zZXRSZXN1bHQoc3AodXJsLCBrZXksIFxcXCLmkJzntKLmtYvor5VcXFwiKSk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLogZrlkIjmkJzntKJcIixcInBhdGhcIjpcInByb1wiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuaQnOe0olxcXCIsXFxuICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwi6K+36L6T5YWl5YWz6ZSu6K+N77yM5bC96YeP5bCR5a2X5LiN6KaB5aSa5a2XXFxcIixcXG4gICAgICAgIHBpY191cmw6IFxcXCJcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKFxcXCJzb3VcXFwiLCBcXFwiXFxcIiksXFxuICAgICAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwic291XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICBhZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwic291XFxcIik7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCJzb1xcXCIpO1xcbiAgICB9KSk7XFxufVxcblxcbmxldCBzID0gZ2V0TXlWYXIoXFxcInNvdVxcXCIsIFxcXCJcXFwiKTtcXG5sZXQgciA9IFxcXCJcXFwiO1xcbmlmIChzICE9IFxcXCJcXFwiKSB7XFxuICAgIGxldCBwID0gTVlfUEFHRTtcXG4gICAgbGV0IHtcXG4gICAgICAgIGxvYWRcXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKTtcXG4gICAgbGV0IHtcXG4gICAgICAgIHdyYXBcXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xcXFwiKTtcXG4gICAgbGV0IGRhdGEgPSBsb2FkKHAsIHIgIT0gXFxcIlxcXCIgPyByIDogbnVsbCk7XFxuXFxuICAgIGxldCBwYWdlaWQgPSBNWV9SVUxFLnRpdGxlICsgXFxcIi1wYWdlXFxcIiArIHA7XFxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLliqDovb3nrKxcXFwiICsgcCArIFxcXCLpobXkuK3vvIzov5vluqbvvJoxL1xcXCIgKyBkYXRhLmxlbmd0aCxcXG4gICAgICAgICAgICB1cmw6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgZGVzYzogXFxcIlxcXCIsXFxuICAgICAgICAgICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgaWQ6IHBhZ2VpZFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHNldFJlc3VsdChkKTtcXG4gICAgbG9nKGRhdGEubGVuZ3RoKTtcXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xcbiAgICAgICAgLy/lpJrnur/nqIvliqDovb0gICAgICAgIFxcbiAgICAgICAgbGV0IHJlYWxQYWdlID0gXFxcIlxcXCIgPT0gciA/IDEgOiBwO1xcbiAgICAgICAgbGV0IHRhc2tzID0gZGF0YS5tYXAoaXQgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgIGZ1bmM6IGZ1bmN0aW9uKHJ1bGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBydWxlLmZpbmQocywgcmVhbFBhZ2UpO1xcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBwYXJhbTogaXQsXFxuICAgICAgICAgICAgICAgIGlkOiBcXFwicnVsZUBcXFwiICsgaXQubmFtZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcblxcbiAgICAgICAgYmF0Y2hFeGVjdXRlKHRhc2tzLCB7XFxuICAgICAgICAgICAgZnVuYzogZnVuY3Rpb24ocGFyYW0sIGlkLCBlcnJvciwgcmVzdWx0KSB7XFxuICAgICAgICAgICAgICAgIC8vbG9nKFxcXCJsaXN0ZW5lcjogXFxcIiArIChyZXN1bHQgfHwgW10pLmxlbmd0aClcXG4gICAgICAgICAgICAgICAgcGFyYW0uaSA9IHBhcmFtLmkgKyAxO1xcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0IG9mIHJlc3VsdCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbS5qID0gcGFyYW0uaiArIDE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEl0ZW1CZWZvcmUocGFnZWlkLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogd3JhcChpdC50aXRsZSwgcyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBpdC5kZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdC51cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpdC5waWNfdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IGl0LnBpY191cmwgPyAnbW92aWVfMV92ZXJ0aWNhbF9waWMnIDogXFxcInRleHRfMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogaXQuZXh0cmFcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxcblxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChwYXJhbS5pID49IHBhcmFtLmFsbCkge1xcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbShwYWdlaWQpXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWKoOi9veesrFxcXCIgKyBNWV9QQUdFICsgXFxcIumhteS4re+8jOi/m+W6pu+8mlxcXCIgKyAocGFyYW0uaSArIDEpICsgXFxcIi9cXFwiICsgcGFyYW0uYWxsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcGFnZWlkXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgcGFyYW06IHtcXG4gICAgICAgICAgICAgICAgYWxsOiBkYXRhLmxlbmd0aCxcXG4gICAgICAgICAgICAgICAgaTogMCxcXG4gICAgICAgICAgICAgICAgajogLTFcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgbGV0IHtcXG4gICAgICAgIGxvYWRcXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKTtcXG4gICAgbGV0IGRhdGEgPSBsb2FkKC0xLCBudWxsKTtcXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkgeyAgICAgICBcXG4gICAgICAgICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL21hbmFnZVxcXCIpKGQsIGRhdGEubWFwKGl0ID0+IGl0Lm5hbWUpKTtcXG4gICAgICAgIGZvciAobGV0IGl0IG9mIGRhdGEpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXQubmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwic2VsZWN0Oi8vXFxcIiArIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6K+36YCJ5oup5pON5L2cXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGNvbDogMSxcXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IFtcXFwi6K6/6Zeu6aaW6aG1XFxcIiwgXFxcIuaQnOe0ouatpOermVxcXCJdLFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHVybCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi6K6/6Zeu6aaW6aG1XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNWV9VUkwgPSB1cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwieDU6Ly9cXFwiICsgZ2V0SG9tZSh1cmwpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2Uvc2luZ2xlc1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9LCBpdC51cmwpXFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImZsZXhfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgUlVMRToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0Lm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpdC51cmxcXG4gICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLnpoHnlKhcXFwiICsgaXQubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygobmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5rip6aao5o+Q56S6XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFxcXCLnoa7orqTliKDpmaTnpoHnlKhcXFwiICsgbmFtZSArIFxcXCLlkJfvvJ9cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybTogJC50b1N0cmluZygobmFtZSwgcnVsZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVJ1bGVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZGF0YT9ydWxlPVxcXCIgKyBydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVSdWxlKG5hbWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL09LXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG5hbWUsIE1ZX1JVTEUudGl0bGUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXQubmFtZSlcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuiuv+mXrummlumhtVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6IFxcXCIneDU6Ly9cXFwiICsgZ2V0SG9tZShpdC51cmwpICsgXFxcIidcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmkJzntKLmraTmupBcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzOiBcXFwiJ2hpa2VyOi8vcGFnZS9zaW5nbGVzJ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gICAgICAgXFxuICAgIH1cXG59XFxuXFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pWw5o2uXCIsXCJwYXRoXCI6XCJkYXRhXCIsXCJydWxlXCI6XCIvL+W5tuWPkeinhOWImeaVsFxcbmxldCBzaXplMCA9IDEwO1xcbmxldCBydWxlc1RleHQwID0gYPCflKU0MjNEb3du8J+UpUBodHRwczovL3d3dy40MjNkb3duLmNvbS9zZWFyY2gvKipcXG7wn5Sl5p6c5qC45Yml5aOz8J+UpUBodHRwczovL3d3dy5naHhpLmNvbS8/cz0qKlxcbvCflKXlha3pn7Pova/ku7bwn5SlQGh0dHBzOi8vd3d3LjZ5aXQuY29tLz9zPSoqXFxu8J+UpeW/g+a1t0Xnq5nwn5SlQGh0dHBzOi8vYXBwaG90LmNjLz9zPSoqXFxu8J+UpeWkp+ecvOS7lPCflKVAaHR0cDovL3d3dy5kYXlhbnphaS5tZS8/cz0qKlxcbvCflKXpo5jpgaXwn5SlQGh0dHBzOi8vd3d3Lm1weWl0LmNvbS8/cz0qKlxcbvCflKXlvILmmJ/nqbrpl7Twn5SlQGh0dHBzOi8vd3d3Lnl4c3NwLmNvbS8/cz0qKlxcbvCflKXokL3lsJjkuYvmnKjwn5SlQGh0dHBzOi8vd3d3Lmx1b2NoZW56aGltdS5jb20vP3M9KipcXG7wn5Sl57u/6Imy6LWE5rqQ8J+UpUBodHRwczovL3d3dy53ZWlkaWFubWlzaHUuY29tL3NlYXJjaC8qKi9cXG7wn5Sl5LmQ6L2v5Y2a5a6i8J+UpUBodHRwczovL3d3dy5pc2hhcmVwYy5jb20vP3M9KipcXG7wn5Sl57O757uf6L+38J+UpUBodHRwczovL3d3dy54aXRtaS5jb20vP3M9KipcXG7wn5SlWkFQUk/mnYLotKfpk7rwn5SlQGh0dHBzOi8vdG1pb2UuY29tLz9zPSoqXFxu8J+UpeS6v+egtOWnkPCflKVAaHR0cHM6Ly93d3cueXBvamllLmNvbS8/cz0qKlxcbvCflKXmnoHlrqLkuIvovb3wn5SlQGh0dHBzOi8vd3d3LmdlZWtkbG9hZC5jb20vP3M9KipcXG7wn5Sl5bCP56qd8J+UpUBodHRwczovL3d3dy5uaXRlMDcuY29tLz9yZWY9YWR6aHAudmlwXFxu8J+Upeaeq+mfs+W6lOeUqPCflKVAaHR0cHM6Ly93d3cuZnk2Yi5jb20vP3M9KipcXG7wn5Sl56We5Zmo5aa58J+UpUBodHRwczovL3RzcTM2MC5jb20vP3M9KipcXG7wn5Sl6bih55uS8J+UpUBodHRwczovL2Nhb25pYW5nLm5ldC9zZWFyY2gvKiouaHRtbFxcbvCflKXlt6fmioDwn5SlQGh0dHBzOi8vd3d3LnFpYW9qaTguY29tLz9zPSoqXFxu8J+Upei9r+S7tueOi/CflKVAaHR0cHM6Ly9mcmVlLnNvZnRraW5nLmNvbS50dy9xdWVyeS9cXG7wn5Sl5ZOH5ZaU5ZCb8J+UpUBodHRwczovL3d3dy53YW9kb3duLmNvbS9zZWFyY2gvKipcXG7wn5Sl5pyo6aOO6L2v5Lu28J+UpUBodHRwczovL3d3dy5tZnJqei5jb20vP3M9KipcXG7wn5Sl6Zi/6YW35p2C6LSn8J+UpUBodHRwczovL3d3dy5jb29sZXhlLmNvbS8/cz0qKiZ0eXBlPXBvc3RcXG7wn5Sl6JOd6bKo8J+UpUBodHRwczovL3d3dy5sYW4tc2hhLmNvbS8/cz0qKlxcbvCflKXlj5Hng6flj4vnu7/ova/wn5SlQGh0dHBzOi8vZnN5bHIuY29tLz9zPSoqXFxu8J+UpeWuieWNk+W6lOeUqPCflKVAaHR0cHM6Ly93d3cuaTN6aC5jb20vP3M9KipcXG7wn5Sl5YiG5Lqr6ICF8J+UpUBodHRwczovL3d3dy5zaGFyZXJ3LmNvbS9zZWFyY2gucGhwP3E9KipcXG7wn5Sl6LWE5rqQ5YiG5Lqr77yI6ZyA55m75b2V77yJ8J+UpUBodHRwczovL3d3dy55dW5wYW56aXl1YW4uY29tL2ZvbnRzZWFyY2guaHRtP2ZvbnRuYW1lPSoqXFxu8J+UpeW3heWzsOiuuuWdm++8iOmcgOeZu+W9le+8ifCflKVAaHR0cHM6Ly93d3cucGVha3dvLmNvbS9zZWFyY2gucGhwP21vZD1mb3J1bSZzZWFyY2hpZD0zNiZvcmRlcmJ5PWxhc3Rwb3N0JmFzY2Rlc2M9ZGVzYyZzZWFyY2hzdWJtaXQ9eWVzJmt3PSoqJm1vYmlsZT0yXFxu8J+UpeaXoOS4reWSjPCflKVAaHR0cHM6Ly93emhvbmdoZS5jb20vP3M9KipcXG7wn5Sl5bCP6auY5pWZ5a2m8J+UpUBodHRwczovL3d3dy5ndzU0LmNvbS9pbmRleC5waHA/a2V5d29yZD0qKlxcbvCflKXotYTmupDlkKbwn5SlQGh0dHBzOi8vd3d3Lnp5Zm91LmNvbS8/cz0qKlxcbvCflKXopb/nk5zop4bpopHwn5SlQGh0dHBzOi8vc28uaXhpZ3VhLmNvbS9zLyoqYXBwKipcXG7wn5SlSVRN6LWE5rqQ8J+UpUBodHRwczovL3BpYy5pdG1yZXNvdXJjZXMuY29tLz9zPSoqJnBvc3RfdHlwZT1wb3N0XFxu8J+UpeaXoOeXleWTpfCflKVAaHR0cHM6Ly93d3cud2hnNi5jb20vNDY1OC5odG1sXFxu8J+UpeWQvuWQjei9r+S7tuW6k/CflKVAaHR0cHM6Ly93d3cuNW1rdS5jb20vaW5kZXgucGhwP2tleXdvcmQ9KiomdHlwZWlkPTBcXG7wn5Sl5LiA5Y+36LWE5rqQ8J+UpUBodHRwczovL3lpaGFvenkuY29tL3NlYXJjaC8qKi5odG1sXFxu8J+UpVFR55qH5peP6aaG8J+UpUBodHRwczovL3d3dy5xcWh6Zy5jb20vaW5kZXgucGhwP2tleXdvcmQ9KiomdHlwZWlkPTBcXG7wn5Sl55qu6YOo6LWE5rqQ572R8J+UpUBodHRwczovL3d3dy5waWJ1ZS5jb20vaW5kZXgucGhwP2tleXdvcmQ9KiomdHlwZWlkPTBcXG7wn5Sl5pS26ZuG572R8J+UpUBodHRwczovL3d3dy5pc3Nqdy5jb20vP3M9KipcXG7wn5Sl6L275Yib56S+5Yy68J+UpUBodHRwczovLzdjYzdjYy5jb20vc2VhcmNoLV9FNl85Ml9BRF9FNl85NF9CRV9FNV85OV9BOC0xLmh0bVxcbvCflKXlsI/nmb3otYTmupDnvZHvvIjpnIDnmbvlvZXvvInwn5SlQGh0dHBzOi8vd3d3LnhpYW9iYWljYWkuZnVuLz9zPSoqXFxu8J+UpeatpeWFlOWIhuS6q/CflKVAaHR0cHM6Ly9idXRxcS5jb20vP3M9KiomdHlwZT1wb3N0XFxu8J+UpeenkeaKgOmaj+mjjvCflKVAaHR0cHM6Ly93d3cuNTJuZncuY24vP3M9KiomdHlwZT1wb3N0XFxu8J+UpeWbm+S4quepuuagvPCflKVAaHR0cHM6Ly93d3cuNHNwYWNlcy5vcmcvP3M9KipcXG7wn5Sl546J57Gz57KS8J+UpUBodHRwczovL3lpbWlsaS5uZXQvP3M9KipcXG7wn5Sl5LiN5q276bif8J+UpUBodHRwczovL2l1aS5zdS9zZWFyY2gvKiovXFxu8J+UpeWIhuS6q+i/t/CflKVAaHR0cHM6Ly93d3cuZmVueG0uY29tL3NlYXJjaC5waHA/cT0qKlxcbvCflKVhaGhoZnPwn5SlQGh0dHBzOi8vd3d3LmFoaGhoZnMuY29tLz9jYXQ9JnM9KipcXG7wn5SlQXBw5Za18J+UpUBodHRwczovL3d3dy5hcHBtaXUuY29tLz9zPSoqJnR5cGU9cG9zdFxcbvCflKVpM+e7vOWQiOekvuWMuvCflKVAaHR0cHM6Ly93d3cuaTN6aC5jb20vP3M9KipcXG7wn5Sl5YW25LmQ5Y2a6K6w8J+UpUBodHRwczovL3d3dy5xaWxlYmIuY29tLz9zPSoqXFxu8J+UpeiKiuiKiueyvuWFuPCflKVAaHR0cHM6Ly9teXFxamQuY29tLz9zPSoqXFxu8J+Upeiwt+WtkOeMq+mDqOiQveagvPCflKVAaHR0cDovL3d3dy54Z2l1LmNvbS9pbmRleC5waHA/a2V5d29yZD0qKlxcbvCflKXpu5HmtbfmtIvwn5SlQGh0dHBzOi8vYmxvZy51cHg4LmNvbS9zZWFyY2gvKiovYDtcXG5sZXQgcnVsZXNUZXh0ID0gZ2V0SXRlbShcXFwicnVsZXNcXFwiLCBydWxlc1RleHQwKTtcXG5sZXQgc3AgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9zcFxcXCIpO1xcbnJ1bGVzID0gcnVsZXNUZXh0LnNwbGl0KFxcXCJcXFxcblxcXCIpXFxuICAgIC5maWx0ZXIoaXQgPT4gaXQuaW5jbHVkZXMoXFxcIkBcXFwiKSlcXG4gICAgLm1hcChydWxlID0+IHtcXG4gICAgICAgIGxldCBzID0gcnVsZS5zcGxpdChcXFwiQFxcXCIpO1xcbiAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICBuYW1lOiBzWzBdLFxcbiAgICAgICAgICAgIGZpbmQ6IGZ1bmN0aW9uKGtleSwgcGFnZSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gc3Aoc1sxXSwga2V5LCBzWzBdKTtcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIHVybDogc1sxXVxcbiAgICAgICAgfTtcXG4gICAgfSk7XFxuXFxuZnVuY3Rpb24gbG9hZChwYWdlLCBydWxlKSB7XFxuICAgIGxldCBzaXplID0gcGFnZSA8PSAwID8gcnVsZXMubGVuZ3RoIDogc2l6ZTA7XFxuICAgIHBhZ2UgPSBwYWdlIDw9IDAgPyAxIDogcGFnZTtcXG4gICAgaWYgKCFwYWdlICYmICFydWxlKSB7XFxuICAgICAgICByZXR1cm4gcnVsZXMubWFwKGl0ID0+IGl0Lm5hbWUpO1xcbiAgICB9XFxuICAgIGlmIChydWxlICE9IG51bGwpIHtcXG4gICAgICAgIGlmIChwYWdlICE9IG51bGwgJiYgcGFnZSA+IDEpIHtcXG4gICAgICAgICAgICByZXR1cm4gcnVsZXMuZmlsdGVyKGkgPT4gaS5uYW1lID09IHJ1bGUgJiYgaS5wYWdlKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBydWxlcy5maWx0ZXIoaSA9PiBpLm5hbWUgPT0gcnVsZSk7XFxuICAgIH1cXG4gICAgbGV0IHN0YXJ0ID0gKHBhZ2UgLSAxKSAqIHNpemU7XFxuICAgIGlmIChydWxlcy5sZW5ndGggPCBzdGFydCArIDEpIHtcXG4gICAgICAgIHJldHVybiBbXTtcXG4gICAgfVxcbiAgICBsZXQgbGVuID0gc2l6ZTtcXG4gICAgaWYgKHJ1bGVzLmxlbmd0aCA8IHBhZ2UgKiBzaXplKSB7XFxuICAgICAgICBsZW4gPSBydWxlcy5sZW5ndGggLSBzdGFydFxcbiAgICB9XFxuICAgIHJldHVybiBydWxlcy5zbGljZShzdGFydCwgc3RhcnQgKyBsZW4pO1xcbn1cXG5cXG5mdW5jdGlvbiBhZGRSdWxlKG5hbWUsIHN1cmwpIHtcXG4gICAgc2V0SXRlbShcXFwicnVsZXNcXFwiLCBydWxlc1RleHQgKyBcXFwiXFxcXG5cXFwiICsgbmFtZSArIFxcXCJAXFxcIiArIHN1cmwpO1xcbn1cXG5cXG5mdW5jdGlvbiByZW1vdmVSdWxlKG5hbWUpIHtcXG4gICAgbGV0IG5ld1QgPSBydWxlc1RleHQuc3BsaXQoXFxcIlxcXFxuXFxcIilcXG4gICAgICAgIC5maWx0ZXIoaXQgPT4gaXQuaW5kZXhPZihuYW1lICsgXFxcIkBcXFwiKSA8IDApXFxuICAgICAgICAuam9pbihcXFwiXFxcXG5cXFwiKTtcXG4gICAgc2V0SXRlbShcXFwicnVsZXNcXFwiLCBuZXdUKTtcXG59XFxuXFxuJC5leHBvcnRzID0ge1xcbiAgICBsb2FkOiBsb2FkLFxcbiAgICBhZGRSdWxlOiBhZGRSdWxlLFxcbiAgICByZW1vdmVSdWxlOiByZW1vdmVSdWxlXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57Si6Kej5p6QXCIsXCJwYXRoXCI6XCJzcFwiLFwicnVsZVwiOlwiZnVuY3Rpb24gc2VhcmNoKHVybCwga2V5LCBydWxlKSB7XFxuICAgIGxldCBkID0gW107XFxuICAgIGxldCBodG1sID0gXFxcIlxcXCI7XFxuICAgIGlmICh1cmwuaW5jbHVkZXMoXFxcIioqXFxcIikpIHtcXG4gICAgICAgIC8vZ2V06K+35rGCXFxuICAgICAgICBsZXQgb2xkID0gdXJsO1xcbiAgICAgICAgdXJsID0gdXJsLnJlcGxhY2UoXFxcIioqXFxcIiwga2V5KTtcXG4gICAgICAgIGh0bWwgPSByZXF1ZXN0KHVybCk7XFxuICAgICAgICAvL+iHquWKqOi/h+mqjOivgeeggeWSjOmikee5geiuv+mXrumZkOWItlxcbiAgICAgICAgbGV0IHtcXG4gICAgICAgICAgICBjaGVjaywgdGVzdFxcbiAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3l6bVxcXCIpO1xcbiAgICAgICAgaWYgKGNoZWNrKHVybCwgaHRtbCwgZCkpIHtcXG4gICAgICAgICAgICBsb2coXFxcIumHjeivleS6hlxcXCIpO1xcbiAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KHVybCwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IHVybFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7ICAgICAgICAgICBcXG4gICAgICAgIH0gICAgICAgICBcXG4gICAgICAgIHRlc3QodXJsLCBodG1sLCBkLCBvbGQsIGtleSwgcnVsZSk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICAvL+iHquWKqOivhuWIq3Bvc3Tor7fmsYJcXG4gICAgICAgIGh0bWwgPSByZXF1ZXN0KHVybCk7XFxuICAgICAgICBsZXQgZm9ybSA9IHBkZmgoaHRtbCwgXFxcImJvZHkmJmZvcm0mJkh0bWxcXFwiKTtcXG4gICAgICAgIGxldCBhY3Rpb24gPSBwZChodG1sLCBcXFwiZm9ybSYmYWN0aW9uXFxcIiwgdXJsKTtcXG4gICAgICAgIGxldCBpbnB1dHMgPSBwZGZhKGh0bWwsIFxcXCJib2R5JiZmb3JtJiZpbnB1dFxcXCIpO1xcbiAgICAgICAgbGV0IGJvZHkgPSB7fTtcXG4gICAgICAgIGZvciAobGV0IGl0IG9mIGlucHV0cykge1xcbiAgICAgICAgICAgIGxldCBuYW1lID0gcGRmaChpdCwgXFxcImlucHV0JiZuYW1lXFxcIik7XFxuICAgICAgICAgICAgaWYgKG5hbWUgJiYgbmFtZSAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBwZGZoKGl0LCBcXFwiaW5wdXQmJnZhbHVlXFxcIik7XFxuICAgICAgICAgICAgICAgIGJvZHlbbmFtZV0gPSB2YWx1ZSB8fCBrZXk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgaHRtbCA9IHBvc3QoYWN0aW9uLCB7XFxuICAgICAgICAgICAgYm9keTogYm9keVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG5cXG4gICAgbGV0IGFsaXN0ID0gcGRmYShodG1sLCBcXFwiYm9keSYmYVxcXCIpO1xcbiAgICBsZXQgYXJyID0gYWxpc3QubWFwKGl0ID0+IHtcXG4gICAgICAgIGxldCB0ID0gcGRmaChpdCwgXFxcImEmJlRleHRcXFwiKTtcXG4gICAgICAgIGxldCB0MiA9IHBkZmgoaXQsIFxcXCJhJiZ0aXRsZVxcXCIpO1xcbiAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAvL2h0bWw6IGl0LFxcbiAgICAgICAgICAgIHRleHQ6IHQyICYmIHQyLmluY2x1ZGVzKGtleSkgPyB0MiA6IHQsXFxuICAgICAgICAgICAgaHJlZjogcGQoaXQsIFxcXCJhJiZocmVmXFxcIiwgdXJsKVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgZnVuY3Rpb24gaXNSZXN1bHQoaXQpIHtcXG4gICAgICAgIGl0ID0gaXQudGV4dCB8fCBcXFwiXFxcIjtcXG4gICAgICAgIGlmIChpdCA9PSBcXFwiXFxcIiB8fCBpdC5tYXRjaCgv5pCc57SifOe7k+aenC8pKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhrZXkpO1xcbiAgICB9XFxuICAgIGtleSA9IGtleS50b0xvd2VyQ2FzZSgpO1xcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgbGV0IGl0ID0gYXJyW2ldO1xcbiAgICAgICAgbGV0IHQgPSBpdC50ZXh0O1xcbiAgICAgICAgaWYgKCFpdC5ocmVmIHx8IGl0LmhyZWYgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChpc1Jlc3VsdChpdCkpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdCxcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3A/dT1cXFwiICsgYmFzZTY0RW5jb2RlKGl0LmhyZWYpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT5cXFwiICsgcnVsZSArIFxcXCI8L2ZvbnQ+XFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiBkO1xcbn1cXG4kLmV4cG9ydHMgPSBzZWFyY2g7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlop7liKBcIixcInBhdGhcIjpcIm1hbmFnZVwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0gZnVuY3Rpb24oZCwgbmFtZXMpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwiQUnmioDmnK9cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiY29uZmlybTovL+WfuuS6jkFJ6K+G54mH6Ieq5Yqo5YiG5p6Q5rqQ56CB5oqA5pyv77yM5Luj56CB5a6M5YWo5byA5rqQ77yM5pWw5o2u5p2l5rqQ5LqO5Y6f572R56uZ77yM6L2v5Lu25ZKM6KeE5YiZ5LiN5o+Q5L6b5Lu75L2V5YaF5a65LmpzOicnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCIgKyBcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChycikgPT4ge1xcbiAgICAgICAgICAgIGRlbGV0ZUl0ZW1CeUNscyhcXFwiYWlhZGRcXFwiKTtcXG4gICAgICAgICAgICBhZGRJdGVtQWZ0ZXIocnIgKyBcXFwiYWlzZGVsXFxcIiwgW3tcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLor7fovpPlhaXnvZHnq5nlkI3np7BcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRNeVZhcignbmFtZScsIGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBcXFwiYWlhZGRcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLor7fovpPlhaXnvZHnq5nmkJzntKLlnLDlnYBcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRNeVZhcignc3VybCcsIGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBcXFwiYWlhZGRcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5o+Q5Lqk5L+d5a2YXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdXJsID0gZ2V0TXlWYXIoXFxcInN1cmxcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBnZXRNeVZhcihcXFwibmFtZVxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VybCA9PSBcXFwiXFxcIiB8fCBuYW1lID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/or7fovpPlhaXlrozmlbTlhoXlrrlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByID0gZGVjb2RlVVJJQ29tcG9uZW50KHN1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSByLnJlcGxhY2UobmV3IFJlZ0V4cChcXFwiW1xcXFx1NGUwMC1cXFxcdTlmYTVdK1xcXCIsIFxcXCJnXFxcIiksIFxcXCIqKlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFJ1bGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZGF0YVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZFJ1bGUobmFtZSwgcik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5bey5L+d5a2YXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IFxcXCJhaWFkZFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIF0pO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgIH0sIE1ZX1JVTEUudGl0bGUpLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJmbGV4X2J1dHRvblxcXCIsXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCIgLSBcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwic2VsZWN0Oi8vXFxcIiArIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICBvcHRpb25zOiBuYW1lcyxcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuivt+mAieaLqeimgeWIoOmZpOeahOermeeCuVxcXCIsXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQge1xcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlUnVsZVxcbiAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZGF0YVxcXCIpO1xcbiAgICAgICAgICAgICAgICByZW1vdmVSdWxlKGlucHV0KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL09LXFxcIjtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogXFxcImZsZXhfYnV0dG9uXFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgaWQ6IE1ZX1JVTEUudGl0bGUgKyBcXFwiYWlzZGVsXFxcIlxcbiAgICAgICAgfVxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgIH0pO1xcblxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumqjOivgeeggVwiLFwicGF0aFwiOlwieXptXCIsXCJydWxlXCI6XCJmdW5jdGlvbiBjaGVjayh1cmwsIGh0bWwsIGQpIHtcXG4gICAgbGV0IHJlbG9hZCA9IGZhbHNlO1xcbiAgICByZXR1cm4gcmVsb2FkO1xcbn1cXG5cXG5mdW5jdGlvbiB0ZXN0KHVybCwgaHRtbCwgZCwgb2xkLCBrZXksIHJ1bGUpIHtcXG4gICAgaWYgKC8156eSfOmikee5gS8udGVzdChodG1sKSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+aQnOe0oumcgOmXtOmalDXnp5LvvIzngrnlh7vph43mlrDliqDovb0nLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIixcXG4gICAgICAgICAgICBkZXNjOiBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+XFxcIiArIHJ1bGUgKyBcXFwiPC9mb250PlxcXCIsXFxuICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKHVybCwgb2xkLCBrZXksIHJ1bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IHNwID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2Uvc3BcXFwiKTtcXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzcChvbGQsIGtleSwgcnVsZSk7XFxuICAgICAgICAgICAgICAgIGxldCB7XFxuICAgICAgICAgICAgICAgICAgICB3cmFwXFxuICAgICAgICAgICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90b29sXFxcIik7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGl0IG9mIGQpIHtcXG4gICAgICAgICAgICAgICAgICAgIGl0LnRpdGxlID0gd3JhcChpdC50aXRsZSwga2V5KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBhZGRJdGVtQWZ0ZXIodXJsLCBkKTtcXG4gICAgICAgICAgICAgICAgZGVsZXRlSXRlbSh1cmwpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vT0tcXFwiO1xcbiAgICAgICAgICAgIH0sIHVybCwgb2xkLCBrZXksIHJ1bGUpLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGlkOiB1cmxcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG5cXG4kLmV4cG9ydHMgPSB7XFxuICAgIGNoZWNrOiBjaGVjayxcXG4gICAgdGVzdDogdGVzdFxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuW3peWFt1wiLFwicGF0aFwiOlwidG9vbFwiLFwicnVsZVwiOlwiZnVuY3Rpb24gd3JhcCh0ZXh0LCBzKSB7XFxuICAgIHJldHVybiB0ZXh0LmluY2x1ZGVzKFxcXCLigJzigJzigJ3igJ1cXFwiKSA/IHRleHQgOiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIHRleHQucmVwbGFjZShuZXcgUmVnRXhwKFxcXCI8ZW0+fDwvZW0+XFxcIiwgXFxcImdcXFwiKSwgXFxcIlxcXCIpLnJlcGxhY2UobmV3IFJlZ0V4cChzLCBcXFwiZ1xcXCIpLCBcXFwiPHN0cm9uZz48c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiAjMUU5MEZGXFxcXFxcXCI+XFxcIiArIHMgKyBcXFwiPC9zcGFuPjwvc3Ryb25nPlxcXCIpXFxufVxcbiQuZXhwb3J0cyA9IHtcXG4gICAgd3JhcDogd3JhcFxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWNleaQnFwiLFwicGF0aFwiOlwic2luZ2xlc1wiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuaQnOe0olxcXCIsXFxuICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICBwdXRNeVZhcihcXFwic29cXFwiLCBpbnB1dCk7XFxuICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGRlc2M6IFxcXCLor7fovpPlhaXlhbPplK7or43vvIzlsL3ph4/lsJHlrZfkuI3opoHlpJrlrZdcXFwiLFxcbiAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoXFxcInNvXFxcIiwgXFxcIlxcXCIpXFxuICAgIH1cXG59KTtcXG5sZXQgcyA9IGdldE15VmFyKFxcXCJzb1xcXCIsIFxcXCJcXFwiKTtcXG5sZXQgciA9IFxcXCJcXFwiO1xcbmlmIChzICE9IFxcXCJcXFwiKSB7XFxuICAgIGxldCBwID0gTVlfUEFHRTtcXG4gICAgbGV0IHtcXG4gICAgICAgIGxvYWRcXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKTtcXG4gICAgbGV0IHtcXG4gICAgICAgIHdyYXBcXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xcXFwiKTtcXG4gICAgbGV0IGRhdGEgPSBsb2FkKHAsIE1ZX1BBUkFNUy5SVUxFLm5hbWUpO1xcbiAgICBsZXQgYXJyID0gZGF0YVswXS5maW5kKHMsIHApO1xcbiAgICBmb3IgKGxldCBpdCBvZiBhcnIpIHtcXG4gICAgICAgIGl0LnRpdGxlID0gd3JhcChpdC50aXRsZSwgcylcXG4gICAgICAgIGQucHVzaChpdCk7XFxuICAgIH1cXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57Si6aG16Z2iXCIsXCJwYXRoXCI6XCJzb3VwXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmlmIChNWV9QQVJBTVMua2V5ICYmIGdldE15VmFyKFxcXCJ1c2VcXFwiLCBcXFwiXFxcIikgPT0gXFxcIlxcXCIpIHtcXG4gICAgcHV0TXlWYXIoXFxcInNvdVxcXCIsIE1ZX1BBUkFNUy5rZXkpO1xcbiAgICBwdXRNeVZhcihcXFwidXNlXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInVzZVxcXCIpO1xcbiAgICB9KSk7XFxufVxcbiQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BybycpXCJ9XSxcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwiQUnova/ku7ZcIixcInZlcnNpb25cIjowLFwidXJsXCI6XCJoaWtlcjovL2VtcHR5XCIsXCJjb2xfdHlwZVwiOlwieDVfd2Vidmlld19zaW5nbGVcIixcImZpbmRfcnVsZVwiOlwianM6c2V0UmVzdWx0KFt7XFxuICAgIHVybDpcXFwiaHR0cHM6Ly93d3cuNW1rdS5jb21cXFwiLFxcbmRlc2M6XFxcIjEwMCUmJmZsb2F0XFxcIixcXG5leHRyYTp7Y2FuQmFjazogdHJ1ZX1cXG59XSk7XCIsXCJncm91cFwiOlwi4pGg6L275ZCI6ZuGXCIsXCJwYWdlc1wiOlwiW3tcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS6jOe6p+ino+aekFxcXCIsXFxcInBhdGhcXFwiOlxcXCJwXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbmxldCB1cmwgPSBiYXNlNjREZWNvZGUoZ2V0UGFyYW0oXFxcXFxcXCJ1XFxcXFxcXCIpKTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgdXJsOiB1cmwsXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwieDVfd2Vidmlld19zaW5nbGVcXFxcXFxcIixcXFxcbiAgICBkZXNjOiBcXFxcXFxcImZsb2F0JiYxMDAlXFxcXFxcXCIsXFxcXG4gICAgcGljX3VybDogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBjYW5CYWNrOiB0cnVlXFxcXG4gICAgfVxcXFxufSk7XFxcXG5zZXRSZXN1bHQoZCk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcInRleHRfMVxcXCIsXFxcIm5hbWVcXFwiOlxcXCLmkJzntKLmtYvor5VcXFwiLFxcXCJwYXRoXFxcIjpcXFwic1xcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbmxldCB1cmwgPSBiYXNlNjREZWNvZGUoZ2V0UGFyYW0oXFxcXFxcXCJ1XFxcXFxcXCIpKTtcXFxcbmxvZyh1cmwpO1xcXFxubGV0IGtleSA9IGdldFBhcmFtKFxcXFxcXFwia2V5XFxcXFxcXCIpO1xcXFxubGV0IHNwID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3NwXFxcXFxcXCIpO1xcXFxuc2V0UmVzdWx0KHNwKHVybCwga2V5LCBcXFxcXFxcIuaQnOe0oua1i+ivlVxcXFxcXFwiKSk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6IGa5ZCI5pCc57SiXFxcIixcXFwicGF0aFxcXCI6XFxcInByb1xcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgZCA9IFtdO1xcXFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIuaQnOe0olxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIjtcXFxcbiAgICAgICAgfSksXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImlucHV0XFxcXFxcXCIsXFxcXG4gICAgICAgIGRlc2M6IFxcXFxcXFwi6K+36L6T5YWl5YWz6ZSu6K+N77yM5bC96YeP5bCR5a2X5LiN6KaB5aSa5a2XXFxcXFxcXCIsXFxcXG4gICAgICAgIHBpY191cmw6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKFxcXFxcXFwic291XFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpLFxcXFxuICAgICAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXFxcXFwic291XFxcXFxcXCIsIGlucHV0KTtcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KTtcXFxcbiAgICBhZGRMaXN0ZW5lcihcXFxcXFxcIm9uQ2xvc2VcXFxcXFxcIiwgJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcXFxcXCJzb3VcXFxcXFxcIik7XFxcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcXFxcXCJzb1xcXFxcXFwiKTtcXFxcbiAgICB9KSk7XFxcXG59XFxcXG5cXFxcbmxldCBzID0gZ2V0TXlWYXIoXFxcXFxcXCJzb3VcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIik7XFxcXG5sZXQgciA9IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG5pZiAocyAhPSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgbGV0IHAgPSBNWV9QQUdFO1xcXFxuICAgIGxldCB7XFxcXG4gICAgICAgIGxvYWRcXFxcbiAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFxcXFxcIik7XFxcXG4gICAgbGV0IHtcXFxcbiAgICAgICAgd3JhcFxcXFxuICAgIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvdG9vbFxcXFxcXFwiKTtcXFxcbiAgICBsZXQgZGF0YSA9IGxvYWQocCwgciAhPSBcXFxcXFxcIlxcXFxcXFwiID8gciA6IG51bGwpO1xcXFxuXFxcXG4gICAgbGV0IHBhZ2VpZCA9IE1ZX1JVTEUudGl0bGUgKyBcXFxcXFxcIi1wYWdlXFxcXFxcXCIgKyBwO1xcXFxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuWKoOi9veesrFxcXFxcXFwiICsgcCArIFxcXFxcXFwi6aG15Lit77yM6L+b5bqm77yaMS9cXFxcXFxcIiArIGRhdGEubGVuZ3RoLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgZGVzYzogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHBpY191cmw6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgIGlkOiBwYWdlaWRcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxuICAgIHNldFJlc3VsdChkKTtcXFxcbiAgICBsb2coZGF0YS5sZW5ndGgpO1xcXFxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHtcXFxcbiAgICAgICAgLy/lpJrnur/nqIvliqDovb0gICAgICAgIFxcXFxuICAgICAgICBsZXQgcmVhbFBhZ2UgPSBcXFxcXFxcIlxcXFxcXFwiID09IHIgPyAxIDogcDtcXFxcbiAgICAgICAgbGV0IHRhc2tzID0gZGF0YS5tYXAoaXQgPT4ge1xcXFxuICAgICAgICAgICAgcmV0dXJuIHtcXFxcbiAgICAgICAgICAgICAgICBmdW5jOiBmdW5jdGlvbihydWxlKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBydWxlLmZpbmQocywgcmVhbFBhZ2UpO1xcXFxuICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgcGFyYW06IGl0LFxcXFxuICAgICAgICAgICAgICAgIGlkOiBcXFxcXFxcInJ1bGVAXFxcXFxcXCIgKyBpdC5uYW1lXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pO1xcXFxuXFxcXG4gICAgICAgIGJhdGNoRXhlY3V0ZSh0YXNrcywge1xcXFxuICAgICAgICAgICAgZnVuYzogZnVuY3Rpb24ocGFyYW0sIGlkLCBlcnJvciwgcmVzdWx0KSB7XFxcXG4gICAgICAgICAgICAgICAgLy9sb2coXFxcXFxcXCJsaXN0ZW5lcjogXFxcXFxcXCIgKyAocmVzdWx0IHx8IFtdKS5sZW5ndGgpXFxcXG4gICAgICAgICAgICAgICAgcGFyYW0uaSA9IHBhcmFtLmkgKyAxO1xcXFxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0IG9mIHJlc3VsdCkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmogPSBwYXJhbS5qICsgMTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRJdGVtQmVmb3JlKHBhZ2VpZCwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogd3JhcChpdC50aXRsZSwgcyksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGl0LmRlc2MsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXQudXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpdC5waWNfdXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogaXQucGljX3VybCA/ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYycgOiBcXFxcXFxcInRleHRfMVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYTogaXQuZXh0cmFcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxcXFxuXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIGlmIChwYXJhbS5pID49IHBhcmFtLmFsbCkge1xcXFxuICAgICAgICAgICAgICAgICAgICBkZWxldGVJdGVtKHBhZ2VpZClcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuWKoOi9veesrFxcXFxcXFwiICsgTVlfUEFHRSArIFxcXFxcXFwi6aG15Lit77yM6L+b5bqm77yaXFxcXFxcXCIgKyAocGFyYW0uaSArIDEpICsgXFxcXFxcXCIvXFxcXFxcXCIgKyBwYXJhbS5hbGwsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHBhZ2VpZFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICBwYXJhbToge1xcXFxuICAgICAgICAgICAgICAgIGFsbDogZGF0YS5sZW5ndGgsXFxcXG4gICAgICAgICAgICAgICAgaTogMCxcXFxcbiAgICAgICAgICAgICAgICBqOiAtMVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KVxcXFxuICAgIH1cXFxcbn0gZWxzZSB7XFxcXG4gICAgbGV0IHtcXFxcbiAgICAgICAgbG9hZFxcXFxuICAgIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvZGF0YVxcXFxcXFwiKTtcXFxcbiAgICBsZXQgZGF0YSA9IGxvYWQoLTEsIG51bGwpO1xcXFxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDApIHsgICAgICAgXFxcXG4gICAgICAgICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9tYW5hZ2VcXFxcXFxcIikoZCwgZGF0YS5tYXAoaXQgPT4gaXQubmFtZSkpO1xcXFxuICAgICAgICBmb3IgKGxldCBpdCBvZiBkYXRhKSB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdC5uYW1lLFxcXFxuICAgICAgICAgICAgICAgIHVybDogXFxcXFxcXCJzZWxlY3Q6Ly9cXFxcXFxcIiArIEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi6K+36YCJ5oup5pON5L2cXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbDogMSxcXFxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogW1xcXFxcXFwi6K6/6Zeu6aaW6aG1XFxcXFxcXCIsIFxcXFxcXFwi5pCc57Si5q2k56uZXFxcXFxcXCJdLFxcXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygodXJsKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcXFxcXCLorr/pl67pppbpobVcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ZX1VSTCA9IHVybDtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ4NTovL1xcXFxcXFwiICsgZ2V0SG9tZSh1cmwpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vcGFnZS9zaW5nbGVzXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSwgaXQudXJsKVxcXFxuICAgICAgICAgICAgICAgIH0pLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImZsZXhfYnV0dG9uXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIFJVTEU6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0Lm5hbWUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0LnVybFxcXFxuICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLnpoHnlKhcXFxcXFxcIiArIGl0Lm5hbWUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygobmFtZSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm0oe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLmuKnppqjmj5DnpLpcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogXFxcXFxcXCLnoa7orqTliKDpmaTnpoHnlKhcXFxcXFxcIiArIG5hbWUgKyBcXFxcXFxcIuWQl++8n1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtOiAkLnRvU3RyaW5nKChuYW1lLCBydWxlKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZVJ1bGVcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvZGF0YT9ydWxlPVxcXFxcXFwiICsgcnVsZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVSdWxlKG5hbWUpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8vT0tcXFxcXFxcIjtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbmFtZSwgTVlfUlVMRS50aXRsZSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIjtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0Lm5hbWUpXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuiuv+mXrummlumhtVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6IFxcXFxcXFwiJ3g1Oi8vXFxcXFxcXCIgKyBnZXRIb21lKGl0LnVybCkgKyBcXFxcXFxcIidcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLmkJzntKLmraTmupBcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzOiBcXFxcXFxcIidoaWtlcjovL3BhZ2Uvc2luZ2xlcydcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9XVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9ICAgICAgIFxcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuc2V0UmVzdWx0KGQpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaVsOaNrlxcXCIsXFxcInBhdGhcXFwiOlxcXCJkYXRhXFxcIixcXFwicnVsZVxcXCI6XFxcIi8v5bm25Y+R6KeE5YiZ5pWwXFxcXG5sZXQgc2l6ZTAgPSAxMDtcXFxcbmxldCBydWxlc1RleHQwID0gYPCflKU0MjNEb3du8J+UpUBodHRwczovL3d3dy40MjNkb3duLmNvbS9zZWFyY2gvKipcXFxcbvCflKXmnpzmoLjliaXlo7Pwn5SlQGh0dHBzOi8vd3d3LmdoeGkuY29tLz9zPSoqXFxcXG7wn5Sl5YWt6Z+z6L2v5Lu28J+UpUBodHRwczovL3d3dy42eWl0LmNvbS8/cz0qKlxcXFxu8J+UpeW/g+a1t0Xnq5nwn5SlQGh0dHBzOi8vYXBwaG90LmNjLz9zPSoqXFxcXG7wn5Sl5aSn55y85LuU8J+UpUBodHRwOi8vd3d3LmRheWFuemFpLm1lLz9zPSoqXFxcXG7wn5Sl6aOY6YGl8J+UpUBodHRwczovL3d3dy5tcHlpdC5jb20vP3M9KipcXFxcbvCflKXlvILmmJ/nqbrpl7Twn5SlQGh0dHBzOi8vd3d3Lnl4c3NwLmNvbS8/cz0qKlxcXFxu8J+UpeiQveWwmOS5i+acqPCflKVAaHR0cHM6Ly93d3cubHVvY2hlbnpoaW11LmNvbS8/cz0qKlxcXFxu8J+Upee7v+iJsui1hOa6kPCflKVAaHR0cHM6Ly93d3cud2VpZGlhbm1pc2h1LmNvbS9zZWFyY2gvKiovXFxcXG7wn5Sl5LmQ6L2v5Y2a5a6i8J+UpUBodHRwczovL3d3dy5pc2hhcmVwYy5jb20vP3M9KipcXFxcbvCflKXns7vnu5/ov7fwn5SlQGh0dHBzOi8vd3d3LnhpdG1pLmNvbS8/cz0qKlxcXFxu8J+UpVpBUFJP5p2C6LSn6ZO68J+UpUBodHRwczovL3RtaW9lLmNvbS8/cz0qKlxcXFxu8J+UpeS6v+egtOWnkPCflKVAaHR0cHM6Ly93d3cueXBvamllLmNvbS8/cz0qKlxcXFxu8J+UpeaegeWuouS4i+i9vfCflKVAaHR0cHM6Ly93d3cuZ2Vla2Rsb2FkLmNvbS8/cz0qKlxcXFxu8J+UpeWwj+eqnfCflKVAaHR0cHM6Ly93d3cubml0ZTA3LmNvbS8/cmVmPWFkemhwLnZpcFxcXFxu8J+Upeaeq+mfs+W6lOeUqPCflKVAaHR0cHM6Ly93d3cuZnk2Yi5jb20vP3M9KipcXFxcbvCflKXnpZ7lmajlprnwn5SlQGh0dHBzOi8vdHNxMzYwLmNvbS8/cz0qKlxcXFxu8J+Upem4oeebkvCflKVAaHR0cHM6Ly9jYW9uaWFuZy5uZXQvc2VhcmNoLyoqLmh0bWxcXFxcbvCflKXlt6fmioDwn5SlQGh0dHBzOi8vd3d3LnFpYW9qaTguY29tLz9zPSoqXFxcXG7wn5Sl6L2v5Lu2546L8J+UpUBodHRwczovL2ZyZWUuc29mdGtpbmcuY29tLnR3L3F1ZXJ5L1xcXFxu8J+UpeWTh+WWlOWQm/CflKVAaHR0cHM6Ly93d3cud2FvZG93bi5jb20vc2VhcmNoLyoqXFxcXG7wn5Sl5pyo6aOO6L2v5Lu28J+UpUBodHRwczovL3d3dy5tZnJqei5jb20vP3M9KipcXFxcbvCflKXpmL/phbfmnYLotKfwn5SlQGh0dHBzOi8vd3d3LmNvb2xleGUuY29tLz9zPSoqJnR5cGU9cG9zdFxcXFxu8J+UpeiTnemyqPCflKVAaHR0cHM6Ly93d3cubGFuLXNoYS5jb20vP3M9KipcXFxcbvCflKXlj5Hng6flj4vnu7/ova/wn5SlQGh0dHBzOi8vZnN5bHIuY29tLz9zPSoqXFxcXG7wn5Sl5a6J5Y2T5bqU55So8J+UpUBodHRwczovL3d3dy5pM3poLmNvbS8/cz0qKlxcXFxu8J+UpeWIhuS6q+iAhfCflKVAaHR0cHM6Ly93d3cuc2hhcmVydy5jb20vc2VhcmNoLnBocD9xPSoqXFxcXG7wn5Sl6LWE5rqQ5YiG5Lqr77yI6ZyA55m75b2V77yJ8J+UpUBodHRwczovL3d3dy55dW5wYW56aXl1YW4uY29tL2ZvbnRzZWFyY2guaHRtP2ZvbnRuYW1lPSoqXFxcXG7wn5Sl5beF5bOw6K665Z2b77yI6ZyA55m75b2V77yJ8J+UpUBodHRwczovL3d3dy5wZWFrd28uY29tL3NlYXJjaC5waHA/bW9kPWZvcnVtJnNlYXJjaGlkPTM2Jm9yZGVyYnk9bGFzdHBvc3QmYXNjZGVzYz1kZXNjJnNlYXJjaHN1Ym1pdD15ZXMma3c9KiombW9iaWxlPTJcXFxcbvCflKXml6DkuK3lkozwn5SlQGh0dHBzOi8vd3pob25naGUuY29tLz9zPSoqXFxcXG7wn5Sl5bCP6auY5pWZ5a2m8J+UpUBodHRwczovL3d3dy5ndzU0LmNvbS9pbmRleC5waHA/a2V5d29yZD0qKlxcXFxu8J+Upei1hOa6kOWQpvCflKVAaHR0cHM6Ly93d3cuenlmb3UuY29tLz9zPSoqXFxcXG7wn5Sl6KW/55Oc6KeG6aKR8J+UpUBodHRwczovL3NvLml4aWd1YS5jb20vcy8qKmFwcCoqXFxcXG7wn5SlSVRN6LWE5rqQ8J+UpUBodHRwczovL3BpYy5pdG1yZXNvdXJjZXMuY29tLz9zPSoqJnBvc3RfdHlwZT1wb3N0XFxcXG7wn5Sl5peg55eV5ZOl8J+UpUBodHRwczovL3d3dy53aGc2LmNvbS80NjU4Lmh0bWxcXFxcbvCflKXlkL7lkI3ova/ku7blupPwn5SlQGh0dHBzOi8vd3d3LjVta3UuY29tL2luZGV4LnBocD9rZXl3b3JkPSoqJnR5cGVpZD0wXFxcXG7wn5Sl5LiA5Y+36LWE5rqQ8J+UpUBodHRwczovL3lpaGFvenkuY29tL3NlYXJjaC8qKi5odG1sXFxcXG7wn5SlUVHnmofml4/ppobwn5SlQGh0dHBzOi8vd3d3LnFxaHpnLmNvbS9pbmRleC5waHA/a2V5d29yZD0qKiZ0eXBlaWQ9MFxcXFxu8J+UpeearumDqOi1hOa6kOe9kfCflKVAaHR0cHM6Ly93d3cucGlidWUuY29tL2luZGV4LnBocD9rZXl3b3JkPSoqJnR5cGVpZD0wXFxcXG7wn5Sl5pS26ZuG572R8J+UpUBodHRwczovL3d3dy5pc3Nqdy5jb20vP3M9KipcXFxcbvCflKXovbvliJvnpL7ljLrwn5SlQGh0dHBzOi8vN2NjN2NjLmNvbS9zZWFyY2gtX0U2XzkyX0FEX0U2Xzk0X0JFX0U1Xzk5X0E4LTEuaHRtXFxcXG7wn5Sl5bCP55m96LWE5rqQ572R77yI6ZyA55m75b2V77yJ8J+UpUBodHRwczovL3d3dy54aWFvYmFpY2FpLmZ1bi8/cz0qKlxcXFxu8J+UpeatpeWFlOWIhuS6q/CflKVAaHR0cHM6Ly9idXRxcS5jb20vP3M9KiomdHlwZT1wb3N0XFxcXG7wn5Sl56eR5oqA6ZqP6aOO8J+UpUBodHRwczovL3d3dy41Mm5mdy5jbi8/cz0qKiZ0eXBlPXBvc3RcXFxcbvCflKXlm5vkuKrnqbrmoLzwn5SlQGh0dHBzOi8vd3d3LjRzcGFjZXMub3JnLz9zPSoqXFxcXG7wn5Sl546J57Gz57KS8J+UpUBodHRwczovL3lpbWlsaS5uZXQvP3M9KipcXFxcbvCflKXkuI3mrbvpuJ/wn5SlQGh0dHBzOi8vaXVpLnN1L3NlYXJjaC8qKi9cXFxcbvCflKXliIbkuqvov7fwn5SlQGh0dHBzOi8vd3d3LmZlbnhtLmNvbS9zZWFyY2gucGhwP3E9KipcXFxcbvCflKVhaGhoZnPwn5SlQGh0dHBzOi8vd3d3LmFoaGhoZnMuY29tLz9jYXQ9JnM9KipcXFxcbvCflKVBcHDllrXwn5SlQGh0dHBzOi8vd3d3LmFwcG1pdS5jb20vP3M9KiomdHlwZT1wb3N0XFxcXG7wn5SlaTPnu7zlkIjnpL7ljLrwn5SlQGh0dHBzOi8vd3d3LmkzemguY29tLz9zPSoqXFxcXG7wn5Sl5YW25LmQ5Y2a6K6w8J+UpUBodHRwczovL3d3dy5xaWxlYmIuY29tLz9zPSoqXFxcXG7wn5Sl6IqK6IqK57K+5YW48J+UpUBodHRwczovL215cXFqZC5jb20vP3M9KipcXFxcbvCflKXosLflrZDnjKvpg6jokL3moLzwn5SlQGh0dHA6Ly93d3cueGdpdS5jb20vaW5kZXgucGhwP2tleXdvcmQ9KipcXFxcbvCflKXpu5HmtbfmtIvwn5SlQGh0dHBzOi8vYmxvZy51cHg4LmNvbS9zZWFyY2gvKiovYDtcXFxcbmxldCBydWxlc1RleHQgPSBnZXRJdGVtKFxcXFxcXFwicnVsZXNcXFxcXFxcIiwgcnVsZXNUZXh0MCk7XFxcXG5sZXQgc3AgPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2Uvc3BcXFxcXFxcIik7XFxcXG5ydWxlcyA9IHJ1bGVzVGV4dC5zcGxpdChcXFxcXFxcIlxcXFxcXFxcblxcXFxcXFwiKVxcXFxuICAgIC5maWx0ZXIoaXQgPT4gaXQuaW5jbHVkZXMoXFxcXFxcXCJAXFxcXFxcXCIpKVxcXFxuICAgIC5tYXAocnVsZSA9PiB7XFxcXG4gICAgICAgIGxldCBzID0gcnVsZS5zcGxpdChcXFxcXFxcIkBcXFxcXFxcIik7XFxcXG4gICAgICAgIHJldHVybiB7XFxcXG4gICAgICAgICAgICBuYW1lOiBzWzBdLFxcXFxuICAgICAgICAgICAgZmluZDogZnVuY3Rpb24oa2V5LCBwYWdlKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNwKHNbMV0sIGtleSwgc1swXSk7XFxcXG4gICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgdXJsOiBzWzFdXFxcXG4gICAgICAgIH07XFxcXG4gICAgfSk7XFxcXG5cXFxcbmZ1bmN0aW9uIGxvYWQocGFnZSwgcnVsZSkge1xcXFxuICAgIGxldCBzaXplID0gcGFnZSA8PSAwID8gcnVsZXMubGVuZ3RoIDogc2l6ZTA7XFxcXG4gICAgcGFnZSA9IHBhZ2UgPD0gMCA/IDEgOiBwYWdlO1xcXFxuICAgIGlmICghcGFnZSAmJiAhcnVsZSkge1xcXFxuICAgICAgICByZXR1cm4gcnVsZXMubWFwKGl0ID0+IGl0Lm5hbWUpO1xcXFxuICAgIH1cXFxcbiAgICBpZiAocnVsZSAhPSBudWxsKSB7XFxcXG4gICAgICAgIGlmIChwYWdlICE9IG51bGwgJiYgcGFnZSA+IDEpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBydWxlcy5maWx0ZXIoaSA9PiBpLm5hbWUgPT0gcnVsZSAmJiBpLnBhZ2UpO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHJldHVybiBydWxlcy5maWx0ZXIoaSA9PiBpLm5hbWUgPT0gcnVsZSk7XFxcXG4gICAgfVxcXFxuICAgIGxldCBzdGFydCA9IChwYWdlIC0gMSkgKiBzaXplO1xcXFxuICAgIGlmIChydWxlcy5sZW5ndGggPCBzdGFydCArIDEpIHtcXFxcbiAgICAgICAgcmV0dXJuIFtdO1xcXFxuICAgIH1cXFxcbiAgICBsZXQgbGVuID0gc2l6ZTtcXFxcbiAgICBpZiAocnVsZXMubGVuZ3RoIDwgcGFnZSAqIHNpemUpIHtcXFxcbiAgICAgICAgbGVuID0gcnVsZXMubGVuZ3RoIC0gc3RhcnRcXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIHJ1bGVzLnNsaWNlKHN0YXJ0LCBzdGFydCArIGxlbik7XFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIGFkZFJ1bGUobmFtZSwgc3VybCkge1xcXFxuICAgIHNldEl0ZW0oXFxcXFxcXCJydWxlc1xcXFxcXFwiLCBydWxlc1RleHQgKyBcXFxcXFxcIlxcXFxcXFxcblxcXFxcXFwiICsgbmFtZSArIFxcXFxcXFwiQFxcXFxcXFwiICsgc3VybCk7XFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIHJlbW92ZVJ1bGUobmFtZSkge1xcXFxuICAgIGxldCBuZXdUID0gcnVsZXNUZXh0LnNwbGl0KFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXCIpXFxcXG4gICAgICAgIC5maWx0ZXIoaXQgPT4gaXQuaW5kZXhPZihuYW1lICsgXFxcXFxcXCJAXFxcXFxcXCIpIDwgMClcXFxcbiAgICAgICAgLmpvaW4oXFxcXFxcXCJcXFxcXFxcXG5cXFxcXFxcIik7XFxcXG4gICAgc2V0SXRlbShcXFxcXFxcInJ1bGVzXFxcXFxcXCIsIG5ld1QpO1xcXFxufVxcXFxuXFxcXG4kLmV4cG9ydHMgPSB7XFxcXG4gICAgbG9hZDogbG9hZCxcXFxcbiAgICBhZGRSdWxlOiBhZGRSdWxlLFxcXFxuICAgIHJlbW92ZVJ1bGU6IHJlbW92ZVJ1bGVcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLmkJzntKLop6PmnpBcXFwiLFxcXCJwYXRoXFxcIjpcXFwic3BcXFwiLFxcXCJydWxlXFxcIjpcXFwiZnVuY3Rpb24gc2VhcmNoKHVybCwga2V5LCBydWxlKSB7XFxcXG4gICAgbGV0IGQgPSBbXTtcXFxcbiAgICBsZXQgaHRtbCA9IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgaWYgKHVybC5pbmNsdWRlcyhcXFxcXFxcIioqXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgIC8vZ2V06K+35rGCXFxcXG4gICAgICAgIGxldCBvbGQgPSB1cmw7XFxcXG4gICAgICAgIHVybCA9IHVybC5yZXBsYWNlKFxcXFxcXFwiKipcXFxcXFxcIiwga2V5KTtcXFxcbiAgICAgICAgaHRtbCA9IHJlcXVlc3QodXJsKTtcXFxcbiAgICAgICAgLy/oh6rliqjov4fpqozor4HnoIHlkozpopHnuYHorr/pl67pmZDliLZcXFxcbiAgICAgICAgbGV0IHtcXFxcbiAgICAgICAgICAgIGNoZWNrLCB0ZXN0XFxcXG4gICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UveXptXFxcXFxcXCIpO1xcXFxuICAgICAgICBpZiAoY2hlY2sodXJsLCBodG1sLCBkKSkge1xcXFxuICAgICAgICAgICAgbG9nKFxcXFxcXFwi6YeN6K+V5LqGXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgaHRtbCA9IHJlcXVlc3QodXJsLCB7XFxcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICAgICBcXFxcXFxcIlJlZmVyZXJcXFxcXFxcIjogdXJsXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfSk7ICAgICAgICAgICBcXFxcbiAgICAgICAgfSAgICAgICAgIFxcXFxuICAgICAgICB0ZXN0KHVybCwgaHRtbCwgZCwgb2xkLCBrZXksIHJ1bGUpO1xcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIC8v6Ieq5Yqo6K+G5YircG9zdOivt+axglxcXFxuICAgICAgICBodG1sID0gcmVxdWVzdCh1cmwpO1xcXFxuICAgICAgICBsZXQgZm9ybSA9IHBkZmgoaHRtbCwgXFxcXFxcXCJib2R5JiZmb3JtJiZIdG1sXFxcXFxcXCIpO1xcXFxuICAgICAgICBsZXQgYWN0aW9uID0gcGQoaHRtbCwgXFxcXFxcXCJmb3JtJiZhY3Rpb25cXFxcXFxcIiwgdXJsKTtcXFxcbiAgICAgICAgbGV0IGlucHV0cyA9IHBkZmEoaHRtbCwgXFxcXFxcXCJib2R5JiZmb3JtJiZpbnB1dFxcXFxcXFwiKTtcXFxcbiAgICAgICAgbGV0IGJvZHkgPSB7fTtcXFxcbiAgICAgICAgZm9yIChsZXQgaXQgb2YgaW5wdXRzKSB7XFxcXG4gICAgICAgICAgICBsZXQgbmFtZSA9IHBkZmgoaXQsIFxcXFxcXFwiaW5wdXQmJm5hbWVcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICBpZiAobmFtZSAmJiBuYW1lICE9IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBwZGZoKGl0LCBcXFxcXFxcImlucHV0JiZ2YWx1ZVxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICBib2R5W25hbWVdID0gdmFsdWUgfHwga2V5O1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGh0bWwgPSBwb3N0KGFjdGlvbiwge1xcXFxuICAgICAgICAgICAgYm9keTogYm9keVxcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG5cXFxcbiAgICBsZXQgYWxpc3QgPSBwZGZhKGh0bWwsIFxcXFxcXFwiYm9keSYmYVxcXFxcXFwiKTtcXFxcbiAgICBsZXQgYXJyID0gYWxpc3QubWFwKGl0ID0+IHtcXFxcbiAgICAgICAgbGV0IHQgPSBwZGZoKGl0LCBcXFxcXFxcImEmJlRleHRcXFxcXFxcIik7XFxcXG4gICAgICAgIGxldCB0MiA9IHBkZmgoaXQsIFxcXFxcXFwiYSYmdGl0bGVcXFxcXFxcIik7XFxcXG4gICAgICAgIHJldHVybiB7XFxcXG4gICAgICAgICAgICAvL2h0bWw6IGl0LFxcXFxuICAgICAgICAgICAgdGV4dDogdDIgJiYgdDIuaW5jbHVkZXMoa2V5KSA/IHQyIDogdCxcXFxcbiAgICAgICAgICAgIGhyZWY6IHBkKGl0LCBcXFxcXFxcImEmJmhyZWZcXFxcXFxcIiwgdXJsKVxcXFxuICAgICAgICB9XFxcXG4gICAgfSk7XFxcXG5cXFxcbiAgICBmdW5jdGlvbiBpc1Jlc3VsdChpdCkge1xcXFxuICAgICAgICBpdCA9IGl0LnRleHQgfHwgXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICAgICAgaWYgKGl0ID09IFxcXFxcXFwiXFxcXFxcXCIgfHwgaXQubWF0Y2goL+aQnOe0onznu5PmnpwvKSkge1xcXFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgcmV0dXJuIGl0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoa2V5KTtcXFxcbiAgICB9XFxcXG4gICAga2V5ID0ga2V5LnRvTG93ZXJDYXNlKCk7XFxcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgbGV0IGl0ID0gYXJyW2ldO1xcXFxuICAgICAgICBsZXQgdCA9IGl0LnRleHQ7XFxcXG4gICAgICAgIGlmICghaXQuaHJlZiB8fCBpdC5ocmVmID09IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgIGNvbnRpbnVlO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmIChpc1Jlc3VsdChpdCkpIHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHQsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9wP3U9XFxcXFxcXCIgKyBiYXNlNjRFbmNvZGUoaXQuaHJlZiksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8xXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcXFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT5cXFxcXFxcIiArIHJ1bGUgKyBcXFxcXFxcIjwvZm9udD5cXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIGQ7XFxcXG59XFxcXG4kLmV4cG9ydHMgPSBzZWFyY2g7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5aKe5YigXFxcIixcXFwicGF0aFxcXCI6XFxcIm1hbmFnZVxcXCIsXFxcInJ1bGVcXFwiOlxcXCIkLmV4cG9ydHMgPSBmdW5jdGlvbihkLCBuYW1lcykge1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIkFJ5oqA5pyvXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJjb25maXJtOi8v5Z+65LqOQUnor4bniYfoh6rliqjliIbmnpDmupDnoIHmioDmnK/vvIzku6PnoIHlrozlhajlvIDmupDvvIzmlbDmja7mnaXmupDkuo7ljp/nvZHnq5nvvIzova/ku7blkozop4TliJnkuI3mj5Dkvpvku7vkvZXlhoXlrrkuanM6JydcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiZmxleF9idXR0b25cXFxcXFxcIlxcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIiArIFxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCIjbm9Mb2FkaW5nI1xcXFxcXFwiKS5sYXp5UnVsZSgocnIpID0+IHtcXFxcbiAgICAgICAgICAgIGRlbGV0ZUl0ZW1CeUNscyhcXFxcXFxcImFpYWRkXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgYWRkSXRlbUFmdGVyKHJyICsgXFxcXFxcXCJhaXNkZWxcXFxcXFxcIiwgW3tcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXFxcXFwi6K+36L6T5YWl572R56uZ5ZCN56ewXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImlucHV0XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwicHV0TXlWYXIoJ25hbWUnLCBpbnB1dClcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogXFxcXFxcXCJhaWFkZFxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXFxcXFwi6K+36L6T5YWl572R56uZ5pCc57Si5Zyw5Z2AXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImlucHV0XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwicHV0TXlWYXIoJ3N1cmwnLCBpbnB1dClcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogXFxcXFxcXCJhaWFkZFxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi5o+Q5Lqk5L+d5a2YXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKFxcXFxcXFwiI25vTG9hZGluZyNcXFxcXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHN1cmwgPSBnZXRNeVZhcihcXFxcXFxcInN1cmxcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IGdldE15VmFyKFxcXFxcXFwibmFtZVxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXJsID09IFxcXFxcXFwiXFxcXFxcXCIgfHwgbmFtZSA9PSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/or7fovpPlhaXlrozmlbTlhoXlrrlcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHIgPSBkZWNvZGVVUklDb21wb25lbnQoc3VybCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByID0gci5yZXBsYWNlKG5ldyBSZWdFeHAoXFxcXFxcXCJbXFxcXFxcXFx1NGUwMC1cXFxcXFxcXHU5ZmE1XStcXFxcXFxcIiwgXFxcXFxcXCJnXFxcXFxcXCIpLCBcXFxcXFxcIioqXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRSdWxlXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRSdWxlKG5hbWUsIHIpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5bey5L+d5a2YXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBcXFxcXFxcImFpYWRkXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIF0pO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgICAgIH0sIE1ZX1JVTEUudGl0bGUpLFxcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJmbGV4X2J1dHRvblxcXFxcXFwiLFxcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIiAtIFxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwic2VsZWN0Oi8vXFxcXFxcXCIgKyBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICBvcHRpb25zOiBuYW1lcyxcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuivt+mAieaLqeimgeWIoOmZpOeahOermeeCuVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGxldCB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZVJ1bGVcXFxcbiAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgcmVtb3ZlUnVsZShpbnB1dCk7XFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL09LXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KSxcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiZmxleF9idXR0b25cXFxcXFxcIixcXFxcbiAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgIGlkOiBNWV9SVUxFLnRpdGxlICsgXFxcXFxcXCJhaXNkZWxcXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYmxhbmtfYmxvY2tcXFxcXFxcIlxcXFxuICAgIH0pO1xcXFxuXFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6aqM6K+B56CBXFxcIixcXFwicGF0aFxcXCI6XFxcInl6bVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJmdW5jdGlvbiBjaGVjayh1cmwsIGh0bWwsIGQpIHtcXFxcbiAgICBsZXQgcmVsb2FkID0gZmFsc2U7XFxcXG4gICAgcmV0dXJuIHJlbG9hZDtcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gdGVzdCh1cmwsIGh0bWwsIGQsIG9sZCwga2V5LCBydWxlKSB7XFxcXG4gICAgaWYgKC8156eSfOmikee5gS8udGVzdChodG1sKSkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6ICfmkJzntKLpnIDpl7TpmpQ156eS77yM54K55Ye76YeN5paw5Yqg6L29JyxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgZGVzYzogXFxcXFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT5cXFxcXFxcIiArIHJ1bGUgKyBcXFxcXFxcIjwvZm9udD5cXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKCh1cmwsIG9sZCwga2V5LCBydWxlKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IHNwID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3NwXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgIGxldCBkID0gc3Aob2xkLCBrZXksIHJ1bGUpO1xcXFxuICAgICAgICAgICAgICAgIGxldCB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHdyYXBcXFxcbiAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaXQgb2YgZCkge1xcXFxuICAgICAgICAgICAgICAgICAgICBpdC50aXRsZSA9IHdyYXAoaXQudGl0bGUsIGtleSk7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcih1cmwsIGQpO1xcXFxuICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW0odXJsKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL09LXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICB9LCB1cmwsIG9sZCwga2V5LCBydWxlKSxcXFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgaWQ6IHVybFxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59XFxcXG5cXFxcbiQuZXhwb3J0cyA9IHtcXFxcbiAgICBjaGVjazogY2hlY2ssXFxcXG4gICAgdGVzdDogdGVzdFxcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuW3peWFt1xcXCIsXFxcInBhdGhcXFwiOlxcXCJ0b29sXFxcIixcXFwicnVsZVxcXCI6XFxcImZ1bmN0aW9uIHdyYXAodGV4dCwgcykge1xcXFxuICAgIHJldHVybiB0ZXh0LmluY2x1ZGVzKFxcXFxcXFwi4oCc4oCc4oCd4oCdXFxcXFxcXCIpID8gdGV4dCA6IFxcXFxcXFwi4oCc4oCc4oCd4oCdXFxcXFxcXCIgKyB0ZXh0LnJlcGxhY2UobmV3IFJlZ0V4cChcXFxcXFxcIjxlbT58PC9lbT5cXFxcXFxcIiwgXFxcXFxcXCJnXFxcXFxcXCIpLCBcXFxcXFxcIlxcXFxcXFwiKS5yZXBsYWNlKG5ldyBSZWdFeHAocywgXFxcXFxcXCJnXFxcXFxcXCIpLCBcXFxcXFxcIjxzdHJvbmc+PHNwYW4gc3R5bGU9XFxcXFxcXFxcXFxcXFxcImNvbG9yOiAjMUU5MEZGXFxcXFxcXFxcXFxcXFxcIj5cXFxcXFxcIiArIHMgKyBcXFxcXFxcIjwvc3Bhbj48L3N0cm9uZz5cXFxcXFxcIilcXFxcbn1cXFxcbiQuZXhwb3J0cyA9IHtcXFxcbiAgICB3cmFwOiB3cmFwXFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Y2V5pCcXFxcIixcXFwicGF0aFxcXCI6XFxcInNpbmdsZXNcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZCA9IFtdO1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLmkJzntKJcXFxcXFxcIixcXFxcbiAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICBwdXRNeVZhcihcXFxcXFxcInNvXFxcXFxcXCIsIGlucHV0KTtcXFxcbiAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICB9KSxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJpbnB1dFxcXFxcXFwiLFxcXFxuICAgIGRlc2M6IFxcXFxcXFwi6K+36L6T5YWl5YWz6ZSu6K+N77yM5bC96YeP5bCR5a2X5LiN6KaB5aSa5a2XXFxcXFxcXCIsXFxcXG4gICAgcGljX3VybDogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKFxcXFxcXFwic29cXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIilcXFxcbiAgICB9XFxcXG59KTtcXFxcbmxldCBzID0gZ2V0TXlWYXIoXFxcXFxcXCJzb1xcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKTtcXFxcbmxldCByID0gXFxcXFxcXCJcXFxcXFxcIjtcXFxcbmlmIChzICE9IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICBsZXQgcCA9IE1ZX1BBR0U7XFxcXG4gICAgbGV0IHtcXFxcbiAgICAgICAgbG9hZFxcXFxuICAgIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvZGF0YVxcXFxcXFwiKTtcXFxcbiAgICBsZXQge1xcXFxuICAgICAgICB3cmFwXFxcXG4gICAgfSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS90b29sXFxcXFxcXCIpO1xcXFxuICAgIGxldCBkYXRhID0gbG9hZChwLCBNWV9QQVJBTVMuUlVMRS5uYW1lKTtcXFxcbiAgICBsZXQgYXJyID0gZGF0YVswXS5maW5kKHMsIHApO1xcXFxuICAgIGZvciAobGV0IGl0IG9mIGFycikge1xcXFxuICAgICAgICBpdC50aXRsZSA9IHdyYXAoaXQudGl0bGUsIHMpXFxcXG4gICAgICAgIGQucHVzaChpdCk7XFxcXG4gICAgfVxcXFxufVxcXFxuc2V0UmVzdWx0KGQpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaQnOe0oumhtemdolxcXCIsXFxcInBhdGhcXFwiOlxcXCJzb3VwXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbmlmIChNWV9QQVJBTVMua2V5ICYmIGdldE15VmFyKFxcXFxcXFwidXNlXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpID09IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICBwdXRNeVZhcihcXFxcXFxcInNvdVxcXFxcXFwiLCBNWV9QQVJBTVMua2V5KTtcXFxcbiAgICBwdXRNeVZhcihcXFxcXFxcInVzZVxcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIik7XFxcXG4gICAgYWRkTGlzdGVuZXIoXFxcXFxcXCJvbkNsb3NlXFxcXFxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICBjbGVhck15VmFyKFxcXFxcXFwidXNlXFxcXFxcXCIpO1xcXFxuICAgIH0pKTtcXFxcbn1cXFxcbiQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BybycpXFxcIn1dXCJ9IiwidGl0bGUiOiLwn5Sl5ZC+5ZCN6L2v5Lu25bqT8J+UpSJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement