xiaomianao666

小程序:Mizmovie

May 22nd, 2022
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@Mizmovie@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoiTWl6bW92aWUiLCJhdXRob3IiOiLlj5HnsqrmtoLlopkm54yr54yrJumBk+mVvybpobrmkJwm6aOO5ZC55Y+R5qKi5a2m5aWX5aiDIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjaHR0cHM6Ly93d3cubWl6aTYuY29tL3ZvZHNob3cvaWQvMS9wYWdlL2Z5cGFnZS5odG1sIiwidmVyc2lvbiI6MywiY29sX3R5cGUiOiJtb3ZpZV8zX21hcnF1ZWUiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6InZpZGVvIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6dmFyIGQgPSBbXTtcblxuY29uc3Qg5LiA57qn5a6a5L2NID0gJ2JvZHkmJi5uYXZiYXItaXRlbXMnXG5jb25zdCDkuoznuqflrprkvY0gPSAnYm9keSYmLm1vZHVsZS1jbGFzcy1pdGVtcydcbmNvbnN0IOe7n+S4gOWumuS9jSA9ICdib2R5JiZhOm5vdCg6bWF0Y2hlcyjpppbpobV855u05pKtfOi1hOiur3xBUFB86L+95Ymn5ZGo6KGofOS7iuaXpeabtOaWsHzng63mppwpKSdcblxuTVlfVVJMID0gTVlfVVJMLnJlcGxhY2UoJ2hpa2VyOi8vZW1wdHkjIycsICcnKVxuXG5sZXQgdHJ1ZV91cmwgPSBnZXRWYXIoTVlfUlVMRS51cmwsIE1ZX1VSTClcbnZhciBwYWdlID0gTVlfUEFHRVxuaWYoZ2V0VmFyKE1ZX1JVTEUudXJsKSl7XG50cnVlX3VybCA9IHRydWVfdXJsLnJlcGxhY2UoL2xpc3RcXC8oLio/KVxcLmh0bWwvLCAndm9kc2hvdy9pZC8kMS5odG1sJykucmVwbGFjZSgnLmh0bWwnLCAnL3BhZ2UvJytwYWdlICsgJy5odG1sJyl9XG4vL+aEn+iwouWimeS9rOaPkOS+m+eahOaVmeWtpuaooeeJiO+8jOaooeeJiFHniZvllaTvvIFcblxudmFyIGh0bWwgPSBmZXRjaCh0cnVlX3VybCwge2hlYWRlcnM6IHsnVXNlci1BZ2VudCc6IFBDX1VBfX0pXG5cbnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9kdGZsJylcbnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9hdXRvJylcbmF1dG9QYWdlKGh0bWwpXG5zZXRSZXN1bHQoZCkiLCJzZWFyY2hfdXJsIjoiaHR0cHM6Ly93d3cubWl6aTYuY29tL3ZvZHNlYXJjaC8qKi0tLS0tLS0tLS1meXBhZ2UtLS0uaHRtbDtnZXQ7VVRGLTg7e1VzZXItQWdlbnRATW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMCkmJkNvb2tpZUAuanM6Z2V0VmFyKCdNaXokY29va2llJyl9IiwiZ3JvdXAiOiLikaHwn42t6LaF6LWe5LyY5b2xIiwic2VhcmNoRmluZCI6ImpzOlxucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL1NlYXJjaEZyYW1lJykiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8zIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuXG5cbnZhciDmkJzntKLmoIfnrb4gPSAnJztcbnZhciDnur/ot6/liJfooaggPSAnJztcbnZhciDnur/ot6/moIfnrb4gPSAnJztcbnZhciDpm4bmlbDliJfooaggPSAnJztcbnZhciDpm4bmlbDmoIfnrb4gPSAnJztcbnZhciDlrprkvY3nroDku4sgPSAnJztcblxudmFyIGh0bWwgPSBmZXRjaChNWV9VUkwsIHtcbiAgICBoZWFkZXJzOiB7XG4gICAgICAgICdVc2VyLUFnZW50JzogUENfVUFcbiAgICB9XG59KVxucmVxdWlyZShcImhpa2VyOi8vcGFnZS9TZWNvbmRhcnlUZW1wbGF0ZVwiKTtcbi8v6JCM5paw5aWX5aiD5Y+q5Lya55So5Liq5ZeF5o6i77yM6YCf5bqm5oWi5b2T55yL5Liq56yR6K+dIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IioiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiI01hcHBpbmdcIixcInBhdGhcIjpcIk1hcHBpbmdcIixcInJ1bGVcIjpcImpzOlxcbiQuZXhwb3J0cyA9IHtcXG4gICAgXFxcImhvbWVcXFwiOiBbXFxuICAgICAgICB7XFxuICAgICAgICAgICAga2V5czogW1xcXCJtb2R1bGUtdGFiLWl0ZW1cXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJtb2R1bGUtdGFiLWl0ZW1cXFwiLFxcbiAgICAgICAgICAgIC8vICAgICBhbGxLZXk6IHRydWUsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwibW9kdWxlLWl0ZW1zXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwibW9kdWxlLWl0ZW1zXFxcIixcXG4gICAgICAgIH1dLFxcbiB9XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCIjYXV0b1wiLFwicGF0aFwiOlwiYXV0b1wiLFwicnVsZVwiOlwianM6XFxuLy8g6I635Y+W6K+l5YWz6ZSu5a2X55qE5a2Q6aG16Z2i5Luj56CBXFxuZnVuY3Rpb24gZ2V0UGFnZVNvdXJjZShrZXkpIHtcXG4gICAgbGV0IHNyYyA9IHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS9cXFwiICsga2V5KTtcXG4gICAgLy9sb2coc3JjKVxcbiAgICBzcmMgPSBKU09OLnBhcnNlKHNyYykucnVsZTtcXG4gICAgcmV0dXJuIHNyYztcXG59XFxuY29uc3Qgc291cmNlTWFwID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvTWFwcGluZ1xcXCIpO1xcblxcbmZ1bmN0aW9uIGF1dG9QYWdlKGh0bWxzcmMsIHR5cGUpIHtcXG4gICAgbGV0IHBhZ2VSdWxlcyA9IFtdLFxcbiAgICAgICAgaHRtbFNvdXJjZSA9IGh0bWxzcmMsXFxuICAgICAgICBwYWdlVHlwZSxcXG4gICAgICAgIG1NYXBwaW5nO1xcbiAgICBpZiAodHlwZSAhPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICBwYWdlVHlwZSA9IHR5cGU7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBwYWdlVHlwZSA9IE1ZX1RZUEU7XFxuICAgIH1cXG4gICAgbU1hcHBpbmcgPSBzb3VyY2VNYXBbcGFnZVR5cGVdO1xcbiAgICBpZiAobU1hcHBpbmcgPT09IHVuZGVmaW5lZCB8fCAhQXJyYXkuaXNBcnJheShtTWFwcGluZykpIHtcXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi5LiN5a2Y5ZyoXFxcIiArIHBhZ2VUeXBlICsgXFxcIuexu+Wei+eahOaooeadv1xcXCIpO1xcbiAgICB9XFxuICAgIGZvciAobGV0IGl0ZW0gb2YgbU1hcHBpbmcpIHtcXG4gICAgICAgIGlmIChpdGVtLmFsbEtleSkge1xcbiAgICAgICAgICAgIGlmIChpdGVtLmtleXMuZXZlcnkoa2V5ID0+IGh0bWxTb3VyY2UuaW5jbHVkZXMoa2V5KSkpIHtcXG4gICAgICAgICAgICAgICAgcGFnZVJ1bGVzLnB1c2goaXRlbSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAoaXRlbS5rZXlzLnNvbWUoa2V5ID0+IGh0bWxTb3VyY2UuaW5jbHVkZXMoa2V5KSkpIHtcXG4gICAgICAgICAgICAgICAgcGFnZVJ1bGVzLnB1c2goaXRlbSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGlmIChwYWdlUnVsZXMubGVuZ3RoID09IDApIHtcXG4gICAgICAgIGxvZyhcXFwi5pqC5peg5ZCI6YCC5qih5p2/XFxcIik7XFxuICAgICAgICAvL3RvYXN0KCfmmoLml6DlkIjpgILmqKHmnb8nKTtcXG4gICAgfVxcbiAgICBmb3IgKGxldCBwYWdlUnVsZSBvZiBwYWdlUnVsZXMpIHtcXG4gICAgICAgIC8vbG9nKFxcXCLmraPlnKjljLnphY3vvJpcXFwiICsgcGFnZVJ1bGUudXJsKTtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgZXZhbC5jYWxsKG51bGwsIFxcXCI7KGZ1bmN0aW9uKCl7XFxcIiArIGdldFBhZ2VTb3VyY2UocGFnZVJ1bGUudXJsKSArIFxcXCJ9KSgpXFxcIik7XFxuICAgICAgICAgICAgLy9sb2coXFxcIuWMuemFjeaooeadv+aIkOWKn++8jOato+WcqOe7k+adn+WMuemFjei/m+eoi1xcXCIpO1xcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIGxvZyhcXFwi5Yy56YWN5qih5p2/6ZSZ6K+vXFxcIik7XFxuICAgICAgICAgICAgbG9nKGUudG9TdHJpbmcoKSlcXG4gICAgICAgICAgICBsb2coXFxcIuato+WcqOWMuemFjeS4i+S4gOS4quaooeadvy4uLi4uLlxcXCIpXFxuICAgICAgICAgICAgaWYgKHBhZ2VSdWxlLnVybCA9PSBwYWdlUnVsZXNbcGFnZVJ1bGVzLmxlbmd0aCAtIDFdLnVybCkge1xcbiAgICAgICAgICAgICAgICBsb2coXFxcIuW3suWMuemFjeWIsOacgOWQjuS4gOS4quaooeadv++8jOaaguaXoOWQiOmAgueahOaooeadv1xcXCIpO1xcbiAgICAgICAgICAgICAgICB0b2FzdCgn5YWo6YOo5Yy56YWN5a6M5oiQLOaaguaXoOWQiOmAguaooeadvycpO1xcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoW10pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcblxcbn1cXG4kLmV4cG9ydHMuYXV0b1BhZ2UgPSBhdXRvUGFnZTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIkEubW9kdWxlLWl0ZW1zKDEwODBrYW4pXCIsXCJwYXRoXCI6XCJtb2R1bGUtaXRlbXNcIixcInJ1bGVcIjpcInZhciDkuIDnuqfliJfooaggPSAnLm1vZHVsZS1pdGVtcyYmLm1vZHVsZS1pdGVtJ1xcbnZhciDkuIDnuqfmoIfpopggPSAnYSYmdGl0bGUnXFxudmFyIOS4gOe6p+aPj+i/sCA9ICcubW9kdWxlLWl0ZW0tY292ZXImJlRleHQnXFxudmFyIOS4gOe6p+WbvueJhyA9ICdpbWd8fC5sYXp5JiZkYXRhLW9yaWdpbmFsJ1xcbnZhciDkuIDnuqfpk77mjqUgPSAnYSYmaHJlZidcXG5cXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9QcmltYXJ5VGVtcGxhdGUnLCB7fSkpLnJ1bGUpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiQi5tb2R1bGUtdGFiLWl0ZW0oMTA4MGthbilcIixcInBhdGhcIjpcIm1vZHVsZS10YWItaXRlbVwiLFwicnVsZVwiOlwidmFyIOe6v+i3r+WIl+ihqDEgPSAnYm9keSYmLm1vZHVsZS10YWItaXRlbSc7XFxudmFyIOe6v+i3r+agh+etvjEgPSAnc3BhbiYmVGV4dCc7XFxudmFyIOmbhuaVsOWIl+ihqDEgPSAnYm9keSYmLm1vZHVsZS1wbGF5LWxpc3QnO1xcbnZhciDpm4bmlbDmoIfnrb4xID0gJ2JvZHkmJmEnO1xcbnZhciDlrprkvY3nroDku4sxID0gJy5tb2R1bGUtaW5mby1pbnRyb2R1Y3Rpb24mJlRleHQnO1xcblxcbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL1NlY29uZGFyeVRlbXBsYXRlJywge30pKS5ydWxlKTtcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIiPliqjmgIHliIbnsbtcIixcInBhdGhcIjpcImR0ZmxcIixcInJ1bGVcIjpcImlmIChNWV9QQUdFID09ICcxJykge1xcbnJlcXVpcmUoJ2h0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTQwOTEnKTtcXG4gICAg6aG65pCcKGQpXFxufVxcbmNvbnN0IGVtcHR5ID0gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuXFxuY29uc3Qg5YiG57G76aKc6ImyID0gJyMxYTBjNDUnXFxuY29uc3Qg5Yqo5oCB57yp5bCPID0gJyDliIbnsbsgJ1xcbmNvbnN0IOWKqOaAgeaJqeWxlSA9ICcg6aaW6aG1ICdcXG5cXG5jb25zdCDliIbnsbvmoIfpopggPSAnYSYmVGV4dCdcXG5jb25zdCDliIbnsbvpk77mjqUgPSAnYSYmaHJlZidcXG5cXG50cnkge1xcbiAgICB2YXIgY2F0ZWdvcmllcyA9IHBkZmEoaHRtbCwg5LiA57qn5a6a5L2NKS5jb25jYXQocGRmYShodG1sLCDkuoznuqflrprkvY0pKVxcbn0gY2F0Y2ggKGUpIHtcXG4gICAgdmFyIGNhdGVnb3JpZXMgPSBwZGZhKGh0bWwsIOS4gOe6p+WumuS9jSlcXG59XFxuXFxuLy9sb2coaHRtbClcXG5cXG5sZXQgaW5pdF9jYXRlID0gW11cXG5cXG5mb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspIHtcXG4gICAgaW5pdF9jYXRlLnB1c2goXFxcIjBcXFwiKVxcbn1cXG5cXG5jb25zdCBmb2xkID0gZ2V0VmFyKE1ZX1JVTEUuZ3JvdXAsIFxcXCIwXFxcIilcXG5jb25zdCBjYXRlX3RlbXBfanNvbiA9IGdldFZhcihNWV9SVUxFLnRpdGxlLCBKU09OLnN0cmluZ2lmeShpbml0X2NhdGUpKVxcbmNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoY2F0ZV90ZW1wX2pzb24pXFxuXFxuaWYgKHBhcnNlSW50KHBhZ2UpID09PSAxKSB7XFxuICAgIGQucHVzaCh7XFxuXFxuICAgICAgICB0aXRsZTogZm9sZCA9PSBcXFwiMVxcXCIgPyBcXFwi4oCc4oCc4oCd4oCdPGJpZz48Yj48Zm9udCBjb2xvcj0nIzYyYTZmYic+XFxcIiArIOWKqOaAgee8qeWwjyArIFxcXCI8L2ZvbnQ+PC9iPjwvYmlnPlxcXCIgOiBcXFwi4oCc4oCc4oCd4oCdPGJpZz48Yj48Zm9udCBjb2xvcj0nI0Y3NUQ1OSc+XFxcIiArIOWKqOaAgeaJqeWxlSArIFxcXCI8L2ZvbnQ+PC9iPjwvYmlnPlxcXCIsXFxuXFxuICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoZm9sZCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLmdyb3VwLCBmb2xkID09PSAnMScgPyAnMCcgOiAnMScpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICB9LCBmb2xkKSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgIH0pXFxuXFxuXFxuICAgIGNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0ZWdvcnksIGluZGV4KSA9PiB7XFxuICAgICAgICBsZXQgc3ViX2NhdGVnb3JpZXMgPSBwZGZhKGNhdGVnb3J5LCDnu5/kuIDlrprkvY0pO1xcbiAgICAgICBcXG4gICAgICBpZiAoaW5kZXggPT09IDApIHtcXG4gICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gcGRmaChpdGVtLCDliIbnsbvmoIfpopgpXFxuXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZToga2V5LnRvU3RyaW5nKCkgPT09IGNhdGVfdGVtcFtpbmRleF0gPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAnICsg5YiG57G76aKc6ImyICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvc3Bhbj48L2I+JyA6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBkKGl0ZW0sIOWIhuexu+mTvuaOpSkgKyAnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19jYXRlID0gW11cXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wLmZvckVhY2goKGNhdGUsIGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19jYXRlLnB1c2goaW5kZXggPT09IDAgPyBwYXJhbXMua2V5LnRvU3RyaW5nKCkgOiBcXFwiMFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkobmV3X2NhdGUpKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnVybCwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZV90ZW1wOiBjYXRlX3RlbXAsXFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcblxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICB9IGVsc2UgaWYgKGZvbGQgPT09ICcxJykge1xcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBwZGZoKGl0ZW0sIOWIhuexu+agh+mimClcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBrZXkudG9TdHJpbmcoKSA9PT0gY2F0ZV90ZW1wW2luZGV4XSA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICcgKyDliIbnsbvpopzoibIgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvYj4nIDogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGQoaXRlbSwg5YiG57G76ZO+5o6lKSArICcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wW3BhcmFtcy5pbmRleF0gPSBwYXJhbXMua2V5LnRvU3RyaW5nKClcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkocGFyYW1zLmNhdGVfdGVtcCkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudXJsLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0pXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiI+S4gOe6p+ahhuaetlwiLFwicGF0aFwiOlwiUHJpbWFyeVRlbXBsYXRlXCIsXCJydWxlXCI6XCJcXG4vKlxcbmlmIChNWV9QQUdFID09ICcxJykge1xcbmNsZWFyVmFyKClcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAnIHNlYXJjaCAnLFxcbiAgICAgICAgdXJsOiBcXFwiJ2hpa2VyOi8vc2VhcmNoP3J1bGU9XFxcIiArIE1ZX1JVTEUudGl0bGUgKyBcXFwiJnM9JytpbnB1dFxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwiIFxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIlxcbiAgICB9KTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyBpKyspIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJiaWdfYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICB9KVxcbiAgICB9XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgIH0pO1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImJpZ19ibGFua19ibG9ja1xcXCJcXG4gICAgICAgIH0pXFxuICAgIH1cXG59XFxuXFxuKi9cXG5cXG5sZXQgbGlzdCA9IHBkZmEoaHRtbCwg5LiA57qn5YiX6KGoKTtcXG5cXG5mb3IgKGxldCBqIGluIGxpc3QpIHtcXG5cXG4gICAgdmFyIOmTvuaOpSA9IHBkKGxpc3Rbal0sIOS4gOe6p+mTvuaOpSlcXG4gICAgdmFyIOWwgemdoiA9IHBkKGxpc3Rbal0sIOS4gOe6p+WbvueJhykrJ0BSZWZlcmVyPSdcXG4gICAgdmFyIOagh+mimCA9IHBkZmgobGlzdFtqXSwg5LiA57qn5qCH6aKYKVxcblxcbiAgICBwdXRNeVZhcijpk77mjqUsIOagh+mimClcXG4gICAgcHV0TXlWYXIo6ZO+5o6lICsgJ+WwgemdoicsIOWwgemdoilcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBwZGZoKGxpc3Rbal0sIOS4gOe6p+agh+mimCksXFxuICAgICAgICBkZXNjOiBwZGZoKGxpc3Rbal0sIOS4gOe6p+aPj+i/sCksXFxuICAgICAgICBpbWc6IHBkKGxpc3Rbal0sIOS4gOe6p+WbvueJhykgKydAUmVmZXJlcj0nLFxcbiAgICAgICAgdXJsOiBwZChsaXN0W2pdLCDkuIDnuqfpk77mjqUpLCAvLysnI2ltbWVyc2l2ZVRoZW1lIydcXG4gICAgfSk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiI+aUvumjnueahOeMq+eMq+S6jOe6p+mjjuetnVwiLFwicGF0aFwiOlwiU2Vjb25kYXJ5VGVtcGxhdGVcIixcInJ1bGVcIjpcInZhciBkID0gW107XFxudmFyIOagh+ivhuWQjeensCA9ICcgV2ViICc7XFxudmFyIOagh+ivhumTvuaOpSA9IE1ZX1VSTDtcXG5cXG52YXIg57q/6Lev5YiX6KGoMSA9ICdib2R5JiYubW9kdWxlLXRhYi1pdGVtJztcXG52YXIg57q/6Lev5qCH562+MSA9ICdzcGFuJiZUZXh0JztcXG52YXIg5a6a5L2N566A5LuLMSA9ICcubW9kdWxlLWluZm8taXRlbXMmJlRleHQnO1xcblxcbmlmICjnur/ot6/liJfooaggPT09ICcnKSB7XFxuICAgIHZhciDnur/ot6/liJfooagyID0g57q/6Lev5YiX6KGoMVxcbn0gZWxzZSB7XFxuICAgIHZhciDnur/ot6/liJfooagyID0g57q/6Lev5YiX6KGoXFxufVxcbnZhciBhcnRzID0gcGRmYShodG1sLCDnur/ot6/liJfooagyKTtcXG5cXG5pZiAo57q/6Lev5qCH562+ID09PSAnJykge1xcbiAgICB2YXIg57q/6Lev5qCH562+MiA9IOe6v+i3r+agh+etvjFcXG59IGVsc2Uge1xcbiAgICB2YXIg57q/6Lev5qCH562+MiA9IOe6v+i3r+agh+etvlxcbn1cXG5cXG52YXIgdGFicyA9IFtdO1xcbmZvciAodmFyIGkgaW4gYXJ0cykge1xcblxcbiAgICB0YWJzLnB1c2gocGRmaChhcnRzW2ldLCDnur/ot6/moIfnrb4yKVxcblxcbiAgICAgICAgLnJlcGxhY2UoJy3lrpjmlrknLCAnJylcXG4gICAgICAgIC5yZXBsYWNlKCflpIfnlKjotYTmupAnLCAnJylcXG4gICAgICAgIC5yZXBsYWNlKCdBUFDkuJPkuqvnur/ot6/vvIjnvZHnq5nkuI3mj5Dkvpvmkq3mlL7vvIknLCAnQVBQ5LiT5LqrJylcXG4gICAgICAgIC5yZXBsYWNlKCfvvIknLCAnKScpXFxuICAgICAgICAucmVwbGFjZSgn77yIJywgJygnKVxcbiAgICAgICAgLnJlcGxhY2UoJ+inhumikScsICcnKVxcbiAgICAgICAgLnJlcGxhY2UoJ1RWJywgJycpXFxuICAgICAgICAucmVwbGFjZSgn57q/6LevJywgJycpXFxuICAgICAgICAucmVwbGFjZSgn5o6o6I2QJywgJycpXFxuICAgICAgICAucmVwbGFjZSgnLScsICcnKVxcbiAgICAgICAgLnJlcGxhY2UoJ+6YryAnLCAnJylcXG4gICAgICAgIC5yZXBsYWNlKCfuorQgJywgJycpXFxuICAgICAgICAucmVwbGFjZSgn5ZOU5ZOp5ZOU5ZOpJywgJ2JpbGliaWxpJylcXG4gICAgICAgIC5yZXBsYWNlKCd5b3VrdScsICfkvJjphbcnKVxcbiAgICAgICAgLnJlcGxhY2UoJ3FpeWknLCAn54ix5aWH6Im6JylcXG4gICAgICAgIC5yZXBsYWNlKCdxcScsICfohb7orq8nKVxcbiAgICAgICAgLnJlcGxhY2UoJ0pRUScsICfohb7orq8nKVxcbiAgICAgICAgLnJlcGxhY2UoJ+iKkuaenHR2JywgJ+iKkuaenCcpXFxuICAgICAgICAucmVwbGFjZSgnbWd0dicsICfoipLmnpwnKVxcbiAgICAgICAgLnJlcGxhY2UoJ3BwdHYnLCAnUFBUVicpXFxuICAgICAgICAucmVwbGFjZSgnbGV0dicsICfkuZDop4YnKVxcbiAgICAgICAgLnJlcGxhY2UoJ3NvaHUnLCAn5pCc54uQJylcXG4gICAgICAgIC5yZXBsYWNlKCfmkJzni5BUVicsICfmkJzni5AnKVxcbiAgICAgICAgLnJlcGxhY2UoJ3hpZ3VhJywgJ+ilv+eTnCcpKVxcbn1cXG5cXG52YXIg6ZuG5pWw5YiX6KGoMSA9ICdib2R5JiYubW9kdWxlLXBsYXktbGlzdCc7XFxudmFyIOmbhuaVsOagh+etvjEgPSAnYm9keSYmYSc7XFxuXFxuaWYgKOmbhuaVsOWIl+ihqCA9PT0gJycpIHtcXG4gICAgdmFyIOmbhuaVsOWIl+ihqDIgPSDpm4bmlbDliJfooagxXFxufSBlbHNlIHtcXG4gICAgdmFyIOmbhuaVsOWIl+ihqDIgPSDpm4bmlbDliJfooahcXG59XFxuXFxuaWYgKOmbhuaVsOagh+etviA9PT0gJycpIHtcXG4gICAgdmFyIOmbhuaVsOagh+etvjIgPSDpm4bmlbDmoIfnrb4xXFxufSBlbHNlIHtcXG4gICAgdmFyIOmbhuaVsOagh+etvjIgPSDpm4bmlbDmoIfnrb5cXG59XFxuXFxudmFyIGNvbnRzID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCDpm4bmlbDliJfooagyKTtcXG52YXIgbGlzdHMgPSBbXTtcXG5mb3IgKHZhciBpIGluIGNvbnRzKSB7XFxuICAgIGxpc3RzLnB1c2gocGFyc2VEb21Gb3JBcnJheShjb250c1tpXSwg6ZuG5pWw5qCH562+MikpXFxufTtcXG5cXG4vKi8v6L+Z6YeM5a6a5L2N566A5LuLXFxuZnVuY3Rpb24g5paH5pys5Y+W5bem6L65KG9iaiwg5YWz6ZSu5a2XKSB7XFxuICAgIHZhciBpbmRleCA9IG9iai5pbmRleE9mKOWFs+mUruWtlyk7XFxuICAgIG9iaiA9IG9iai5zdWJzdHJpbmcoMCwgaW5kZXgpO1xcbiAgICByZXR1cm4gb2JqO1xcbn1cXG5mdW5jdGlvbiDmlofmnKzlj5blj7Povrkob2JqLCDlhbPplK7lrZcpIHtcXG4gICAgdmFyIGluZGV4ID0gb2JqLmluZGV4T2Yo5YWz6ZSu5a2XKTtcXG4gICAgb2JqID0gb2JqLnN1YnN0cmluZyhpbmRleCArIDEsIG9iai5sZW5ndGgpO1xcbiAgICByZXR1cm4gb2JqO1xcbn1cXG52YXIgZGVzYyA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCDlrprkvY3nroDku4spLnJlcGxhY2UoJ1vmlLbotbfpg6jliIZdJywgJycpLnJlcGxhY2UoL1xcXFxzL2csICcnKTtcXG5kLnB1c2goe1xcblxcbiAgICB0aXRsZTogJ+WJp+aDheeugOS7i++8micsXFxuICAgIC8v5a6a5L2N5Zu+54mHXFxuICAgIHBpY191cmw6IHBhcnNlRG9tKGh0bWwsICcubGF6eWxvYWQmJmRhdGEtb3JpZ2luYWwnKSxcXG4gICAgLy/lrprkvY3moIfpophcXG4gICAgZGVzYzogJ+KAmOKAmOKAmeKAmTxzbWFsbD48Zm9udCBjb2xvcj1cXFwiI2ZmNjJhNmZiXFxcIj7nroDku4vvvJonICsgZGVzYy5zdWJzdHIoMCwgNjUpICsgJy4uLjwvZm9udD48c21hbGw+PGZvbnQgY29sb3I9XFxcIiM1OTU5QUJcXFwiPuafpeeci+ivpuaDhTwvZm9udD48L3NtYWxsPjwvc21hbGw+JyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMnICsgZGVzYyArIGBAcnVsZT1qczp2YXIgcmVzID0ge307IHZhciBkID0gW107ZC5wdXNoKHt0aXRsZTon5b2x54mH566A5LuL77yaJysgTVlfVVJMLnNwbGl0KCdoaWtlcjovL2VtcHR5IycpWzFdLGNvbF90eXBlOiAnbG9uZ190ZXh0J30pO3Jlcy5kYXRhID0gZDsgc2V0SG9tZVJlc3VsdChyZXMpO2AsXFxuXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBncmFkaWVudDogdHJ1ZVxcbiAgICB9XFxufSk7Ki9cXG5cXG5cXG5cXG5cXG52YXIg5a6a5L2N5bCB6Z2iID0gZ2V0TXlWYXIoTVlfVVJMICsgJ+WwgemdoicpXFxuaWYgKOWumuS9jeWwgemdoiA9PT0gJycpIHtcXG4gICAgdmFyIOWumuS9jeWwgemdojIgPSAnaHR0cHM6Ly9pbWcxLmJhaWR1LmNvbS9pdC91PTM5MDgxMDg2NTYsMTQ3NDg2NjU2MCZmbT0yNTMmZm10PWF1dG8mYXBwPTEzOCZmPUpQRUc/dz01MDAmaD04ODgnXFxufSBlbHNlIHtcXG4gICAgdmFyIOWumuS9jeWwgemdojIgPSDlrprkvY3lsIHpnaJcXG59XFxuXFxuXFxuZC5wdXNoKHtcXG4gICAgdXJsOiDlrprkvY3lsIHpnaIyLFxcbiAgICBkZXNjOiAnMCcsXFxuICAgIHBpY191cmw6IOWumuS9jeWwgemdojIsXFxuICAgIGNvbF90eXBlOiBcXFwiY2FyZF9waWNfMlxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBncmFkaWVudDogdHJ1ZVxcbiAgICB9XFxufSk7XFxuXFxuXFxuXFxuaWYgKOWumuS9jeeugOS7iyA9PT0gJycpIHtcXG4gICAgdmFyIOWumuS9jeeugOS7izIgPSDlrprkvY3nroDku4sxXFxufSBlbHNlIHtcXG4gICAgdmFyIOWumuS9jeeugOS7izIgPSDlrprkvY3nroDku4tcXG59XFxuXFxudmFyIGRlc2MgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwg5a6a5L2N566A5LuLMikucmVwbGFjZSgnW+aUtui1t+mDqOWIhl0nLCAnJykucmVwbGFjZSgvXFxcXHMvZywgJycpO1xcblxcbmlmIChkZXNjID09ICcnKSB7XFxuICAgIGRlc2MgPSAnXFxcXG5Qcm9maWxlIG5vdCB5ZXQgYXZhaWxhYmxlXFxcXG4nXFxufVxcblxcblxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PGJpZz48Zm9udCBjb2xvcj1cXFwiIzU5NTlBQlxcXCI+5b2x54mH5qCH562+PC9mb250PjwvYmlnPjwvYj48c21hbGw+PGZvbnQgY29sb3I9XFxcIiM1OTU5QUJcXFwiPlxcXFxuXFxcXG4nICsgZGVzYy5zdWJzdHIoMCwgNTUpICsgJ+KApjwvZm9udD48L3NtYWxsPjxzbWFsbD48Zm9udCBjb2xvcj1cXFwiIzU5NTlBQlxcXCI+5pu05aSaPC9mb250Pjwvc21hbGw+JyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMnICsgJ1xcXFxuXFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHQnICsgZGVzYyArIGBAcnVsZT1qczp2YXIgcmVzID0ge307IHZhciBkID0gW107ZC5wdXNoKHt0aXRsZTon5b2x54mH566A5LuL77yaJysgTVlfVVJMLnNwbGl0KCdoaWtlcjovL2VtcHR5IycpWzFdLGNvbF90eXBlOiAnbG9uZ190ZXh0J30pO3Jlcy5kYXRhID0gZDsgc2V0SG9tZVJlc3VsdChyZXMpO2AsXFxuICAgIGRlc2M6ICcwJyxcXG4gICAgcGljX3VybDogJ2h0dHBzOi8vaGpkaG54LmNvZGluZy5uZXQvcC9oaWtlci9kL2RyL2dpdC9yYXcvbWFzdGVyL2ltZy95dWVkdS8xMy5qcGcnLFxcbiAgICBjb2xfdHlwZTogXFxcImNhcmRfcGljXzJcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgZ3JhZGllbnQ6IHRydWVcXG4gICAgfVxcbn0pO1xcblxcblxcbmZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgfSlcXG59XFxuXFxudmFyIOaQnOe0ouagh+etviA9IGdldE15VmFyKE1ZX1VSTClcXG5pZiAo5pCc57Si5qCH562+ID09PSAnJykge1xcbiAgICB2YXIg5pCc57Si5qCH562+MiA9ICfmnKrojrflj5blkI3np7AnXFxufSBlbHNlIHtcXG4gICAgdmFyIOaQnOe0ouagh+etvjIgPSDmkJzntKLmoIfnrb5cXG59XFxuXFxudmFyIHRpdGxlID0g5pCc57Si5qCH562+MlxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi5rW36ZiU6KeG55WMXFxcIixcXG4gICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS8xNzMucG5nJyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9zZWFyY2g/cz0nICsgdGl0bGUgKyAnJmdyb3VwPeKRoOmrmOa4hScsXFxuICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF9zbWFsbF80JyxcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+S6keebmOaxh+W9sScsXFxuICAgIHBpY191cmw6ICdodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcnLFxcbiAgICB1cmw6ICdoaWtlcjovL3NlYXJjaD9zPScgKyB0aXRsZSArICcmcnVsZT3kupHnm5jmsYflvbEnLFxcbiAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfc21hbGxfNCcsXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfpppnmg4XlvbHop4YnLFxcbiAgICBwaWNfdXJsOiAnaHR0cHM6Ly9jb2RlYmVyZy5vcmcvbHprMjM1NTkvUHVibGljUnVsZS9yYXcvYnJhbmNoL21hc3Rlci94cXlzLnBuZycsXFxuICAgIHVybDogJ2hpa2VyOi8vc2VhcmNoP3M9JyArIHRpdGxlICsgJyZydWxlPemmmeaDheW9seinhicsXFxuICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF9zbWFsbF80JyxcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+mdkuixhicsXFxuICAgIHBpY191cmw6ICdodHRwczovL2dpdGVlLmNvbS9Kb2tlcl90eC9oaWtlci9yYXcvbWFzdGVyL2ltZy/pnZLosYYucG5nJyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9zZWFyY2g/cz0nICsgdGl0bGUgKyAnJnJ1bGU96Z2S6LGGJyxcXG4gICAgY29sX3R5cGU6ICdpY29uX3JvdW5kX3NtYWxsXzQnLFxcbn0pO1xcblxcbmZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgfSlcXG59XFxudmFyIG9iaiA9IHtcXG4gICAgXFxcIuiFvuiur1xcXCI6IFxcXCJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW92aWUvMTMxLnN2Z1xcXCIsXFxuICAgIFxcXCLkvJjphbdcXFwiOiBcXFwiaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vdmllLzEyOC5zdmdcXFwiLFxcbiAgICBcXFwi5aWH6Im6XFxcIjogXFxcImh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3ZpZS8xMzAuc3ZnXFxcIixcXG4gICAgXFxcIueIseWlh+iJulxcXCI6IFxcXCJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW92aWUvMTMwLnN2Z1xcXCIsXFxuICAgIFxcXCLoipLmnpxcXFwiOiBcXFwiaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vdmllLzMyLnN2Z1xcXCIsXFxuICAgIFxcXCLlkqrlkpVcXFwiOiBcXFwiaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vdmllLzEzNC5zdmdcXFwiLFxcbiAgICBcXFwi6KW/55OcXFxcIjogXFxcImh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3ZpZS8xMzUuc3ZnXFxcIixcXG4gICAgXFxcIuaQnOeLkFxcXCI6IFxcXCJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW92aWUvMTI5LnN2Z1xcXCIsXFxuICAgIFxcXCLkuZDop4ZcXFwiOiBcXFwiaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vdmllLzU4LnN2Z1xcXCIsXFxuICAgIFxcXCLpo47ooYxcXFwiOiBcXFwiaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vdmllLzEzNi5zdmdcXFwiLFxcbiAgICBcXFwiUFBUVlxcXCI6IFxcXCJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW92aWUvMTMzLnN2Z1xcXCIsXFxuICAgIFxcXCIxOTA1XFxcIjogXFxcImh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3ZpZS8xMzIuc3ZnXFxcIixcXG4gICAgXFxcImJpbGliaWxpXFxcIjogXFxcImh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3ZpZS8yMC5zdmdcXFwiLFxcbiAgICBcXFwi5LiT57q/XFxcIjogXFxcImh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3ZpZS8xNDEuc3ZnXFxcIixcXG4gICAgXFxcIuS4k+e6vzJcXFwiOiBcXFwiaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vdmllLzE0Mi5zdmdcXFwiLFxcbn07XFxuLypcXG5yZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7XFxudmFyIHNldHVwID0gc2V0dXBQYWdlcyhcXFwi6K6+572uXFxcIik7XFxuKi9cXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxiaWc+PGZvbnQgY29sb3I9XFxcIiMxYTBjNDVcXFwiPicgKyDmoIfor4blkI3np7AgKyAnPC9mb250PjwvYmlnPjwvYj4nLFxcbiAgICB1cmw6IOagh+ivhumTvuaOpSxcXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbn0pO1xcblxcbnZhciBDb2xvcjIgPSBcXFwiIzFhMGM0NVxcXCI7XFxuXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvcjIgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcbn1cXG5cXG5cXG5mdW5jdGlvbiDmiYDmnInnur/ot68odGFicywgdGFidXJsKSB7XFxuICAgIGZvciAodmFyIGkgaW4gdGFicykge1xcbiAgICAgICAgdmFyIHRhYm5hbWUgPSB0YWJzW2ldO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAvL3RpdGxlOiB0YWJuYW1lLFxcbiAgICAgICAgICAgIC8vaW1nOiBvYmpbdGFibmFtZV0gfHwgXFxcImh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3ZpZS8xMzcuc3ZnXFxcIixcXG4gICAgICAgICAgICAvL2NvbF90eXBlOiAnaWNvbl9zbWFsbF8zJyxcXG4gICAgICAgICAgICB0aXRsZTogZ2V0TXlWYXIodGFidXJsLCAnMCcpID09IGkgPyBnZXRIZWFkKHRhYm5hbWUpIDogdGFibmFtZSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgodGFibmFtZSwgdGFidXJsLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCflvZPliY3nur/ot6/lkI0nLCB0YWJuYW1lKTtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIodGFidXJsLCBpKVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCB0YWJuYW1lLCB0YWJ1cmwsIGkpXFxuICAgICAgICB9KVxcbiAgICB9XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0pO1xcbn1cXG5cXG5cXG4vL+ajieiihOmAmueUqOWXheaOouWMuemFjVxcbnB1dFZhcihcXFwiX3g1XFxcIiwgJC50b1N0cmluZygoKSA9PiB7XFxuICAgIHZhciB1cmxzID0gX2dldFVybHMoKVxcbiAgICBmdW5jdGlvbiBjaGVjayh1KXtcXG4gICAgICAgIGlmICAodS5tYXRjaCgvXFxcXC5tcDN8XFxcXC5tcDR8XFxcXC5tM3U4LykgJiYgIXUubWF0Y2goL2h0bWx8bTN1OFxcXFwudHZ8XFxcXCZuZXh0fGFjXFxcXD1kbXxcXFxcPWh0dHB8aHR0cHNcXFxcOlxcXFwvXFxcXC9bXFxcXGRdXFxcXC5tM3U4fFxcXFw/dXJsXFxcXD1cXFxcL20zdTgvKSl7XFxuICAgICAgICAgICAgLy9meV9icmlkZ2VfYXBwLmxvZyh1cmxzW2ldKVxcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9XFxuICAgIGZvciAodmFyIGkgaW4gdXJscykge1xcbiAgICAgICAgaWYgIChjaGVjayh1cmxzW2ldKSl7XFxuICAgICAgICAgICAgLy9meV9icmlkZ2VfYXBwLmxvZyh1cmxzW2ldKVxcbiAgICAgICAgICAgIHJldHVybiB1cmxzW2ldXFxuICAgICAgICB9XFxuICAgICAgICBpZih1cmxzW2ldLmluY2x1ZGVzKFxcXCJ1cmw9aHR0cFxcXCIpKXtcXG4gICAgICAgICAgICBsZXQgdSA9IHVybHNbaV0uc3BsaXQoXFxcInVybD1cXFwiKVsxXTtcXG4gICAgICAgICAgICBpZihjaGVjayh1KSl7XFxuICAgICAgICAgICAgICAgIHJldHVybiB1O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbn0pKVxcblxcbi8v5aSn6YOo5YiG5YWN5ZeF5bCd6K+VK+Wkh+eUqOWXheaOolxcbnZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICB2YXIgaHRtbCA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCkubWF0Y2goL3IgcGxheWVyXy4qPz0oLio/KTwvKVsxXSlcXG4gICAgdmFyIHVybCA9IGh0bWwudXJsXFxuICAgIHZhciBmcm8gPSBodG1sLmZyb21cXG4gICBpZiAoaHRtbC5lbmNyeXB0ID09ICcxJykge1xcbiAgICAgICAgdXJsID0gdW5lc2NhcGUodXJsKTtcXG4gICAgfSBlbHNlIGlmIChodG1sLmVuY3J5cHQgPT0gJzInKSB7XFxuICAgICAgICB1cmwgPSB1bmVzY2FwZShiYXNlNjREZWNvZGUodXJsKSk7XFxuICAgIH1cXG4vL3VybOi9rOeggeWujOaIkFxcbmlmICh1cmwuc2VhcmNoKC9cXFxcLm1wNHxcXFxcLmZsdnxcXFxcLm0zdTgvKSA+IC0xKSB7XFxuICAgICAgICByZXR1cm4gdXJsO1xcbiAgICB9IGVsc2Uge1xcbiAgICB2YXIganUgPSBwZChmZXRjaChpbnB1dCksICcucGxheWVyLWJveCYmc2NyaXB0LDEmJnNyYycpO1xcbiAgICAgICAgZXZhbChmZXRjaChqdSkpO1xcbiAgICB2YXIganggPSAgTWFjUGxheWVyQ29uZmlnLnBsYXllcl9saXN0W2h0bWwuZnJvbV0ucGFyc2VcXG4gICAgaWYgKGp4ID09ICcnKSB7XFxuICAgICAgICAgICAganggPSBNYWNQbGF5ZXJDb25maWcucGFyc2VcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBqeHVybCA9IGp4ICsgdXJsO1xcbmlmIChqeC5pbmRleE9mKCdjYy5ubWJhLnZpcCcpICE9IC0xKXtcXG4gICAgICAgIHZhciBjY3VybCA9ICByZXF1ZXN0KGp4dXJsKS5tYXRjaCgvXFxcInVybFxcXCI6XFxcIiguKj8pXFxcIi8pWzFdXFxuICAgICAgIGlmIChjY3VybC5zZWFyY2goL1xcXFwubXA0fFxcXFwuZmx2fFxcXFwubTN1OC8pID4gLTEpICAgXFxue2lmIChjY3VybC5pbmRleE9mKCdiaWxpdmlkZW8nKSAhPSAtMSl7cmV0dXJuIGNjdXJsICsgICc7e1JlZmVyZXJAaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tLyYmVXNlci1BZ2VudEBNb3ppbGxhLzUuMH0nO31cXG5lbHNlIGlmIChjY3VybC5pbmRleE9mKCd0aXRhbi5tZ3R2LmNvbScpICE9IC0xKXtyZXR1cm4gY2N1cmwgKyAnI2lzVmlkZW89dHJ1ZSMnICsgJzt7UmVmZXJlckB3d3cubWd0di5jb20mJlVzZXItQWdlbnRATW96aWxsYS81LjB9Jzt9XFxuZWxzZSB7IHJldHVybiBjY3VybCArICcjaXNWaWRlbz10cnVlIycgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgXFxuICB9IC8v6YCa55So6Kej5p6Q5YWN5ZeF57uT5p2fXFxuZWxzZSBpZihqeC5pbmRleE9mKCd2YS5ubWJhLnZpcCcpICE9IC0xKXtcXG4gICAgICAgICB2YXIgdmFqeHVybCA9IGp4dXJsLnJlcGxhY2UoJ3ZpcC8/dXJsJywgJ3ZpcC9qc29uLnBocC8/dXJsJylcXG4gICAgICAgICB2YXIgdmF1cmwgPSByZXF1ZXN0KHZhanh1cmwpLm1hdGNoKC9cXFwidXJsXFxcIjpcXFwiKC4qPylcXFwiLylbMV1cXG4gICAgICAgICByZXR1cm4gdmF1cmxcXG4vL+i/memHjOWBt+aHkuS6hu+8jOacrOadpeimgeiEseWjs++8jOaNouaIkOS6hmFwcOerr+eUqOeahOmCo+S4quS4jemcgOimgeiEseWjs+eahO+8jOmDveaYr+WvueaOpeWQjOS4gOS4qui1hOa6kOWcsOWdgFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG5lbHNlIGlmKHVybC5pbmRleE9mKCdpeGlndWEnKSAhPSAtMSl7XFxuICAgICAgICByZXR1cm4ganh1cmwgKyBcXFwiI2lzVmlkZW89dHJ1ZSNcXFwiO1xcbi8v6L+Z6YeM55u06ZO+55u05o6l6Lez6L2s5pKt5pS+5rqQ77yM5Yik5pat5Li66KeG6aKR6L6T5Ye6XFxuICAgICAgICB9XFxuICAgICAgICAgZWxzZXtcXG4gICAgICAgIHNob3dMb2FkaW5nKFxcXCLnq5nngrnop6PmnpDll4XmjqLkuK0s6K+356iN5ZCOLi4uXFxcIik7XFxuICAgICAgICB2YXIgdmlkZW8gPSAnd2ViUnVsZTovLycgKyBqeHVybCArICdAJysgZ2V0VmFyKFxcXCJfeDVcXFwiKTsgICAgIHJldHVybiB2aWRlb1xcbiAgICAgICAgICAgIH0gLy9lbHNl57uT5p2fXFxuICB9Ly/lpKdlbHNl57uT5p2fXFxufSkvL2xhennnu5PmnZ9cXG5cXG5cXG5mdW5jdGlvbiDnqbooKSB7XFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICB9KVxcbiAgICB9XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOKAneKAnSA8c21hbGw+PGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyBcXFwi5pyq5qOA5rWL5Yiw6YCJ6ZuG77yM6K+3d2Vi5p+l55yL5oiW5pCc57Si6Lez6L2sXFxcIiArIFxcXCI8L2ZvbnQ+PC9zbWFsbD5cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuXFxuZnVuY3Rpb24g6YCJ6ZuG5YiX6KGoKGxpc3RzLCBpbmRleCkge1xcbiAgICAvL+a4hemZpOWPmOmHj1xcbiAgICBhZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgY2xlYXJNeVZhcign5b2T5YmN57q/6Lev5ZCNJyk7XFxuICAgICAgICBjbGVhck15VmFyKCfliIbpm4botbcnKTtcXG4gICAgICAgIGNsZWFyTXlWYXIoJ+WIhumbhue7iCcpO1xcbiAgICB9KSlcXG4gICAgdmFyIGxpc3QgPSBsaXN0c1tpbmRleF07XFxuICAgIC8vIOWwhuWPjeW6j+W9kuato1xcbiAgICB0cnkge1xcbiAgICAgICAgaWYgKHBkZmgobGlzdFswXSwgXFxcImEmJlRleHRcXFwiKS5tYXRjaCgvKFxcXFxkKykvKVswXSA+IHBkZmgobGlzdC5zbGljZSgtMSlbMF0sIFxcXCJhJiZUZXh0XFxcIikubWF0Y2goLyhcXFxcZCspLylbMF0pIGxpc3QucmV2ZXJzZSgpXFxuICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgIHRyeSB7XFxuICAgICAgICAvLyDnur/ot6/mlbDlpKfkuo4x77yM5oiW6ICF6ZuG5pWw5aSn5LqOMjDml7bvvIzmmL7npLrmraPlj43liIfmjaLmjInpkq5cXG4gICAgICAgIC8vIGlmICh0YWJzLmxlbmd0aCA+IDEgfHwgbGlzdC5sZW5ndGggPiAyMCkge1xcbiAgICAgICAgaWYgKHRhYnMubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgIHZhciBpY29uX3MgPSAnaHR0cDovLzgyLjE1Ni4yMjIuNzcvd2Vpc3lyL2ljb24vJztcXG4gICAgICAgICAgICBpZiAoZ2V0TXlWYXIoJ+mAiembhuaOkuW6jycpID09ICfmraPluo8nKSB7XFxuICAgICAgICAgICAgICAgIHZhciBhdmF0YXIgPSBpY29uX3MgKyAn5q2j5bqPLnN2ZydcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB2YXIgYXZhdGFyID0gaWNvbl9zICsgJ+WPjeW6jy5zdmcnXFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIC8vIHRpdGxlOiBcXFwiPGI+PGZvbnQgY29sb3I9JyNFQjk5NDEnPlxcXCIgKyB0YWJzW2luZGV4XSArIFxcXCI8L2ZvbnQ+PC9iPlxcXCIgKyBcXFwiPHNtYWxsPjxmb250IGNvbG9yPSdncmV5Jz5cXFwiICsgJ1xcXFx0XFxcXHQtLSDlhbEgJyArIGxpc3QubGVuZ3RoICsgJyDpm4YnICtcXG4gICAgICAgICAgICAgICAgLy8gICAgIFxcXCI8L2ZvbnQ+PC9zbWFsbD5cXFwiLFxcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIjxiPjxmb250IGNvbG9yPScjNTk1OUFCJz5cXFwiICsgdGFic1tpbmRleF0gKyBcXFwiPC9mb250PjwvYj5cXFwiICsgXFxcIjxzbWFsbD48Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArICdcXFxcdFxcXFx044Cw77iPXFxcXHRcXFxcdCcgKyBcXFwiPC9mb250Pjwvc21hbGw+XFxcIiArIFxcXCI8Zm9udCBjb2xvcj0nIzU5NTlBQic+XFxcIiArIGxpc3QubGVuZ3RoICsgJ+mbhicgKyBcXFwiPC9mb250PlxcXCIsXFxuICAgICAgICAgICAgICAgIGltZzogb2JqW3RhYnNbaW5kZXhdXSB8fCBcXFwiaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvMTkucG5nXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiBgQGxhenlSdWxlPS5qczppZihnZXRNeVZhcign6YCJ6ZuG5o6S5bqPJyk9PSfmraPluo8nKXtwdXRNeVZhcign6YCJ6ZuG5o6S5bqPJywgJ+WPjeW6jycpO31lbHNle3B1dE15VmFyKCfpgInpm4bmjpLluo8nLCAn5q2j5bqPJyl9O3JlZnJlc2hQYWdlKGZhbHNlKTtoaWRlTG9hZGluZygpOydoaWtlcjovL2VtcHR5J2AsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJ1xcbiAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG5cXG5cXG4gICAgZnVuY3Rpb24g6YCJ6ZuGKCkge1xcbiAgICAgICAgdmFyIGptID0gcGRmaChsaXN0W2ldLCAnYSYmVGV4dCcpLnJlcGxhY2UoL+esrHzpm4Z86K+dfOacny9nLCAnJykucmVwbGFjZSgv6aKE5ZGKL2csICfwn5OiJyk7XFxuICAgICAgICB2YXIgdXJsID0gcGFyc2VEb20obGlzdFtpXSwgJ2EmJmhyZWYnKTtcXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA8IDUpIHtcXG4gICAgICAgICAgICB2YXIgY29sID0gJ3RleHRfMidcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdmFyIGNvbCA9IGptLmxlbmd0aCA+IDUgPyAndGV4dF8yJyA6ICd0ZXh0XzQnXFxuICAgICAgICB9XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBqbSxcXG4gICAgICAgICAgICB1cmw6IHVybCArIGxhenksXFxuICAgICAgICAgICAgY29sX3R5cGU6IGNvbCxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBpZDogdXJsLFxcbiAgICAgICAgICAgICAgICBibG9ja1J1bGVzOiBbJy5jc3MnLCAnLmdpZicsICcuanBnJywgJy5qcGVnJywgJy5wbmcnLCAnLmljbycsICcuc3ZnJywgJ2NuenonLCAnZ29vZ2xlJywgJ3huLS0qOionLCAnaG0uYmFpZHUuY29tJywgJy9hZHMvKi5qcycsICcubTN1OCcsICcubXA0J11cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICB0cnkge1xcbiAgICAgICAgLy8g5byA5aeL6aG156CB5YiG5Yy6IOmAiembhu+8nuiuvuWumumbhuaVsDEw5Liq5Lul5LiK5omN5ZCv55So6YCJ6ZuG5YiG6aG1XFxuICAgICAgICB2YXIg6YCJ6ZuG5pWw57uEID0gbGlzdDtcXG4gICAgICAgIGlmICjpgInpm4bmlbDnu4QubGVuZ3RoID4gKHBhZ2VfbnVtYmVyICsgMTApKSB7XFxuICAgICAgICAgICAgLy/miYDmnInpm4bmlbDpmaTku6Xmr4/pobXpm4bmlbDvvIzmnInkvZnov5vmlbRcXG4gICAgICAgICAgICB2YXIgdG90YWwgPSBNYXRoLmNlaWwo6YCJ6ZuG5pWw57uELmxlbmd0aCAvIHBhZ2VfbnVtYmVyKTtcXG4gICAgICAgICAgICB2YXIgY2F0YWxvZ3VlID0gW11cXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRvdGFsOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgY2F0YWxvZ3VlICs9IGkgKiBwYWdlX251bWJlciArICcsJztcXG4gICAgICAgICAgICAgICAgY2F0YWxvZ3VlID0gY2F0YWxvZ3VlLnNwbGl0KCcsJyk7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgODsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAvL+i+k+WHuuWIhumhteaMiemSrlxcbiAgICAgICAgICAgIHZhciDmjInpkq4gPSBbXTtcXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhdGFsb2d1ZS5sZW5ndGggLSAxOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgdmFyIHRvdGFsMSA9IHBhcnNlSW50KGNhdGFsb2d1ZVtpXSkgKyAxO1xcbiAgICAgICAgICAgICAgICB2YXIgdG90YWwyID0gcGFyc2VJbnQoY2F0YWxvZ3VlW2kgKyAxXSk7XFxuICAgICAgICAgICAgICAgIGlmIChpID09IChjYXRhbG9ndWUubGVuZ3RoIC0gMikpIHZhciB0b3RhbDIgPSDpgInpm4bmlbDnu4QubGVuZ3RoO1xcblxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHN0YXIgPT0gdG90YWwxID8gJ+KAmOKAmCcgKyB0b3RhbDEgKyAnLScgKyB0b3RhbDIgKyAn4oCZ4oCZJyA6IHRvdGFsMSArICctJyArIHRvdGFsMixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgodG90YWwxLCB0b3RhbDIpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcign5YiG6ZuG6LW3JywgdG90YWwxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcign5YiG6ZuG57uIJywgdG90YWwyKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgICAgICAgICAgfSwgdG90YWwxLCB0b3RhbDIpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAg5oyJ6ZKuLnB1c2godG90YWwxICsgJy0nICsgdG90YWwyKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoZ2V0TXlWYXIoJ+mAiembhuaOkuW6jycpID09ICfmraPluo8nKSB7XFxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSBlbmQgLSAxOyBpID49IHN0YXIgLSAxOyBpLS0pIHtcXG4gICAgICAgICAgICAgICAgICAgIOmAiembhigpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gc3RhciAtIDE7IGkgPCBlbmQ7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAg6YCJ6ZuGKClcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAvL+W6lemDqOmhteeggSAgICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lXFxcIlxcbiAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgdmFyIHllbWEgPSBNYXRoLmNlaWwoZW5kIC8gcGFnZV9udW1iZXIpO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdIDxzbWFsbD48c21hbGw+PGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyB5ZW1hICsgJyAvICcgKyB0b3RhbCArIFxcXCI8L2ZvbnQ+IDwvc21hbGw+PC9zbWFsbD5cXFwiLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKOaMiemSrikgPT4gJCjmjInpkq4sIDMpLnNlbGVjdChfID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCfliIbpm4botbcnLCBpbnB1dC5zcGxpdCgnLScpWzBdKTtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCfliIbpm4bnu4gnLCBpbnB1dC5zcGxpdCgnLScpWzFdKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ovb3lhaUgXFxcIiArIGlucHV0ICsgJyDpobXpnaIgLic7XFxuICAgICAgICAgICAgICAgIH0pLCDmjInpkq4pLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcblxcbiAgICAgICAgICAgIC8v5bqV6YOo5pON5L2c5oyJ6ZKuXFxuICAgICAgICAgICAgaWYgKOW6lemDqOaNoumhtSA9PSAn5byA5ZCvJykge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfpppbpobUnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChwYWdlX251bWJlcikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCfliIbpm4botbcnLCAnMScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCfliIbpm4bnu4gnLCBwYWdlX251bWJlcik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgICAgIH0sIHBhZ2VfbnVtYmVyKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5LiK5LiA6aG1JyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoc3RhciwgZW5kLCBwYWdlX251bWJlciwgdG90YWwsIOmAiembhuaVsOe7hCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gcGFyc2VJbnQoc3RhcikgLSBwYWdlX251bWJlcjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHBhcnNlSW50KGVuZCkgLSBwYWdlX251bWJlcjtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW5kID0g6YCJ6ZuG5pWw57uELmxlbmd0aCkgdmFyIGUgPSBzICsgcGFnZV9udW1iZXIgLSAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzIDwgMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9IDE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlID0gcGFnZV9udW1iZXI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzID4gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcign5YiG6ZuG6LW3Jywgcyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCfliIbpm4bnu4gnLCBlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgICAgICB9LCBzdGFyLCBlbmQsIHBhZ2VfbnVtYmVyLCB0b3RhbCwg6YCJ6ZuG5pWw57uEKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5LiL5LiA6aG1JyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoc3RhciwgZW5kLCBwYWdlX251bWJlciwgdG90YWwsIOmAiembhuaVsOe7hCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzID0gcGFyc2VJbnQoc3RhcikgKyBwYWdlX251bWJlcjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZSA9IHBhcnNlSW50KGVuZCkgKyBwYWdlX251bWJlcjtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSA+IOmAiembhuaVsOe7hC5sZW5ndGgpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSAodG90YWwgLSAxKSAqIHBhZ2VfbnVtYmVyICsgMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGUgPSDpgInpm4bmlbDnu4QubGVuZ3RoO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcign5YiG6ZuG6LW3Jywgcyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ+WIhumbhue7iCcsIGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgICAgICB9LCBzdGFyLCBlbmQsIHBhZ2VfbnVtYmVyLCB0b3RhbCwg6YCJ6ZuG5pWw57uEKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5bC+6aG1JyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgocGFnZV9udW1iZXIsIHRvdGFsLCDpgInpm4bmlbDnu4QpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9ICh0b3RhbCAtIDEpICogcGFnZV9udW1iZXIgKyAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCfliIbpm4botbcnLCBzKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcign5YiG6ZuG57uIJywg6YCJ6ZuG5pWw57uELmxlbmd0aCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgICAgIH0sIHBhZ2VfbnVtYmVyLCB0b3RhbCwg6YCJ6ZuG5pWw57uEKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IC8vIOe7k+adn+mAiembhuWIhumhtVxcbiAgICAgICAgZWxzZSB7XFxuICAgICAgICAgICAgaWYgKGdldE15VmFyKCfpgInpm4bmjpLluo8nKSA9PSAn5q2j5bqPJykge1xcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gbGlzdC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xcbiAgICAgICAgICAgICAgICAgICAg6YCJ6ZuGKClcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAg6YCJ6ZuGKClcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAg56m6KClcXG4gICAgfVxcbiAgICAvLyDlupXpg6jnlZnnqbpcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAnXFxcXG4nLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJzigJzigJ3igJ08c21hbGw+PGZvbnQgY29sb3I9IzNDM0MzQz7ku6XkuIrmlbDmja7lnYfmnaXmupDkuo7nvZHnu5zvvIzlpoLmgqjllpzmrKLvvIzor7fmlK/mjIHmraPniYjvvIE8L2ZvbnQ+PC9zbWFsbD4nLFxcbiAgICBkZXNjOiAn4oCc4oCc4oCd4oCdPHNtYWxsPjxmb250IGNvbG9yPSMzQzNDM0M+5q2k6KeE5YiZ5LuF6ZmQ5a2m5Lmg5Lqk5rWB5L2/55So77yM6K+35LqO5a+85YWl5ZCOMjTlsI/ml7blhoXliKDpmaTvvIzku7vkvZXlm6LkvZPmiJbkuKrkurrkuI3lvpfku6Xku7vkvZXmlrnlvI/mlrnms5XkvKDmkq3mraTop4TliJnnmoTmlbTkvZPmiJbpg6jliIbvvIE8L2ZvbnQ+PC9zbWFsbD4nLFxcbiAgICB1cmw6IE1ZX1VSTCxcXG4gICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAnPGJyPicsXFxuICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbn0pO1xcbn0gLy/nu5PmnZ/pgInpm4bliJfooahcXG5cXG4vL/CfpKHliIbpobXlvIDlhbPorr7nva5cXG52YXIgcGFnZV9udW1iZXIgPSA1MDtcXG5sZXQg5bqV6YOo5o2i6aG1ID0gJ+W8gOWQryc7IC8v5bqV6YOo5o6n5Yi25oyJ6ZKuXFxudHJ5IHtcXG4gICAgLy/oh7PlsJHkuKTmnaHnur/ot6/vvIzmiJbogIXlkK/nlKjliIbpobXmiY3ooqvorrDlvZVcXG4gICAgaWYgKHRhYnMubGVuZ3RoID4gMSB8fCBsaXN0c1swXS5sZW5ndGggPiAocGFnZV9udW1iZXIgKyAxMCkpIHtcXG4gICAgICAgIGZ1bmN0aW9uIOiusOW9lei2s+i/uSjnur/ot68sIOmhtemdoikge1xcbiAgICAgICAgICAgIHZhciBoaXN0b3J5ID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzLy9jYWNoZS/pobpf6K6w5b2V57q/6Lev5ZKM6aG156CBLmpzb24nKSB8fCAnW10nKTtcXG4gICAgICAgICAgICB2YXIgdCA9IGhpc3RvcnkuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS7lsI/nqIvluo8gPT0gTVlfUlVMRS50aXRsZSk7XFxuICAgICAgICAgICAgaWYgKHQgPT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgdCA9IGhpc3RvcnkubGVuZ3RoO1xcbiAgICAgICAgICAgICAgICBoaXN0b3J5LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAg5bCP56iL5bqPOiBNWV9SVUxFLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAg6Laz6L+5OiBbXVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgeSA9IGhpc3RvcnlbdF0u6Laz6L+5LmZpbmRJbmRleChpdGVtID0+IGl0ZW0udXJsID09IE1ZX1VSTCk7XFxuICAgICAgICAgICAgaWYgKHkgPT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgaGlzdG9yeVt0XS7otrPov7kucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB1cmw6IE1ZX1VSTCxcXG4gICAgICAgICAgICAgICAgICAgIHRhYjog57q/6LevLFxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IOmhtemdolxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBoaXN0b3J5W3RdLui2s+i/uVt5XS50YWIgPSDnur/ot687XFxuICAgICAgICAgICAgICAgIGhpc3RvcnlbdF0u6Laz6L+5W3ldLmluZGV4ID0g6aG16Z2iO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoaGlzdG9yeVt0XS7otrPov7kubGVuZ3RoID49IDk5OSkge1xcbiAgICAgICAgICAgICAgICBoaXN0b3J5W3RdLui2s+i/uS5zcGxpY2UoMCwgMSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy8vY2FjaGUv6aG6X+iusOW9lee6v+i3r+WSjOmhteeggS5qc29uXFxcIiwgSlNPTi5zdHJpbmdpZnkoaGlzdG9yeSwgbnVsbCwgMikpO1xcbiAgICAgICAgfVxcbiAgICAgICAgLy/or7vlhpnotrPov7lcXG4gICAgICAgIHZhciBoaXN0b3J5QSA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvL2NhY2hlL+mhul/orrDlvZXnur/ot6/lkozpobXnoIEuanNvbicpIHx8ICdbXScpO1xcbiAgICAgICAgdmFyIGhpc3RvcnlJVCA9IGhpc3RvcnlBLmZpbmQoaXRlbSA9PiBpdGVtLuWwj+eoi+W6jyA9PSBNWV9SVUxFLnRpdGxlKTtcXG4gICAgICAgIGlmIChoaXN0b3J5SVQpIHsgLy/liKTmlq3lvZPliY3lsI/nqIvluo9cXG4gICAgICAgICAgICBoaXN0b3J5SVQgPSBoaXN0b3J5SVQu6Laz6L+5LmZpbmQoaXQgPT4gaXQudXJsID09IE1ZX1VSTCk7XFxuICAgICAgICAgICAgaWYgKGhpc3RvcnlJVCkgeyAvL+WIpOaWreW9k+WJjeeJh+WtkOiusOW9lVxcbiAgICAgICAgICAgICAgICB2YXIgaXRlbUEgPSBoaXN0b3J5SVQudGFiO1xcbiAgICAgICAgICAgICAgICB2YXIgaXRlbVAgPSBoaXN0b3J5SVQuaW5kZXg7XFxuICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcign5YiG6ZuG6LW3JykgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGFyID0gaXRlbVAuc3BsaXQoJy0nKVswXTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBlbmQgPSBpdGVtUC5zcGxpdCgnLScpWzFdO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1QID09ICd1bmRlZmluZWQtdW5kZWZpbmVkJyB8fCBpdGVtUCA9PSAnLScpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFyID0gJzEnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IHBhZ2VfbnVtYmVyO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcign5b2T5YmN57q/6Lev5ZCNJykgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciDpgInkuK3nur/ot68gPSBpdGVtQSB8fCAnMCc7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCfliIbpm4botbcnKSAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXIgPSBnZXRNeVZhcign5YiG6ZuG6LW3Jyk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgZW5kID0gZ2V0TXlWYXIoJ+WIhumbhue7iCcpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIOmAieS4ree6v+i3ryA9IGl0ZW1BIHx8ICcwJztcXG4gICAgICAgICAgICAgICAgICAgIOiusOW9lei2s+i/uSjpgInkuK3nur/ot68sIHN0YXIgKyAnLScgKyBlbmQpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCflvZPliY3nur/ot6/lkI0nKSAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXIgPSBnZXRNeVZhcign5YiG6ZuG6LW3JywgJzEnKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBlbmQgPSBnZXRNeVZhcign5YiG6ZuG57uIJywgSlNPTi5zdHJpbmdpZnkocGFnZV9udW1iZXIpKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciDpgInkuK3nur/ot68gPSBnZXRNeVZhcihNWV9VUkwpO1xcbiAgICAgICAgICAgICAgICAgICAg6K6w5b2V6Laz6L+5KOmAieS4ree6v+i3rywgc3RhciArICctJyArIGVuZClcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSB7IC8v5aaC5p6c54mH5a2Q5rKh5pyJ6K6w5b2VXFxuICAgICAgICAgICAgICAgIHZhciBzdGFyID0gMTtcXG4gICAgICAgICAgICAgICAgdmFyIGVuZCA9IHBhZ2VfbnVtYmVyO1xcbiAgICAgICAgICAgICAgICB2YXIg6YCJ5Lit57q/6LevID0gJzAnO1xcbiAgICAgICAgICAgICAgICDorrDlvZXotrPov7koJzAnLCBcXFwiMVxcXCIgKyAnLScgKyBwYWdlX251bWJlcilcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2UgeyAvL+WmguaenOWwj+eoi+W6j+ayoeacieiusOW9lVxcbiAgICAgICAgICAgIHZhciBzdGFyID0gMTtcXG4gICAgICAgICAgICB2YXIgZW5kID0gcGFnZV9udW1iZXI7XFxuICAgICAgICAgICAgdmFyIOmAieS4ree6v+i3ryA9ICcwJztcXG4gICAgICAgICAgICDorrDlvZXotrPov7koJzAnLCBcXFwiMVxcXCIgKyAnLScgKyBwYWdlX251bWJlcilcXG4gICAgICAgIH1cXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHZhciDpgInkuK3nur/ot68gPSAnMCc7XFxuICAgIH1cXG59IGNhdGNoIChlKSB7XFxuICAgIOepuigpXFxufVxcblxcblxcbuaJgOaciee6v+i3ryh0YWJzLCBNWV9VUkwpO1xcbumAiembhuWIl+ihqChsaXN0cywg6YCJ5Lit57q/6LevKTtcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJELng1cnVsZeWXheaOolwiLFwicGF0aFwiOlwibGF6eTFcIixcInJ1bGVcIjpcInZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKCkgPT4ge1xcbmZ1bmN0aW9uIHg1cnVsZShqaWV4dXJsLCBzcmN1cmwpIHtcXG5cXG4gICAgc2hvd0xvYWRpbmcoXFxcIumTvuaOpeajgOe0ouS4re+8jOivt+eojeWAmS4uLlxcXCIpO1xcbiAgICB2YXIgdmlkZW8gPSAnd2ViUnVsZTovLycgKyBqaWV4dXJsICsgJ0AnICsgJC50b1N0cmluZygoc3JjdXJsKSA9PiB7XFxuICAgICAgICAvL2ZiYS5sb2coZmJhLmdldFVybHMoKSk7XFxuICAgICAgICB2YXIgdXJscyA9IF9nZXRVcmxzKCk7XFxuICAgICAgICBpZiAod2luZG93LmNvdW50ID09IG51bGwgfHwgd2luZG93LmNvdW50ID09IHVuZGVmaW5lZCkge1xcbiAgICAgICAgICAgIHdpbmRvdy5jb3VudCA9IDBcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh3aW5kb3cuY291bnQgPj0gMjMpIHtcXG4gICAgICAgICAgICByZXR1cm4gc3JjdXJsXFxuICAgICAgICB9XFxuICAgICAgICB3aW5kb3cuY291bnQgPSB3aW5kb3cuY291bnQgKyAxO1xcbiAgICAgICAgaWYgKHdpbmRvdy5jb3VudCA+IDEgJiYgd2luZG93LmNvdW50IDw9IDMgJiYgd2luZG93LmNvdW50ICE9IG51bGwgJiYgd2luZG93LmNvdW50ICE9IHVuZGVmaW5lZCkge1xcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JykuaW5uZXJUZXh0LnNlYXJjaCgv6Kem5Y+R5LqG6Ziy55uX6ZO+fOacquaOiOadg3zmjqXlj6PpmLLnm5d86K+35Yiw5Li756uZ6KeC55yLLykgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgaWYgKCFzcmN1cmwpIHtcXG4gICAgICAgICAgICAgICAgXFx0ZmJhLmxvZygn5bCd6K+V6Lez6Ziy55uX6aqM6K+B5LiAJyk7XFxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gbG9jYXRpb24uaHJlZjtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgXFx0ZmJhLmxvZygn5bCd6K+V6Lez6Ziy55uX6aqM6K+B5LqMJyk7XFxuICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gc3JjdXJsXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSBlbHNlIGlmKHdpbmRvdy5jb3VudCA+IDMgJiYgd2luZG93LmNvdW50ICE9IG51bGwgJiYgd2luZG93LmNvdW50ICE9IHVuZGVmaW5lZCl7XFxuICAgICAgICAgICAgaWYgKHVybHMubGVuZ3RoIDwgMSkge1xcbiAgICAgICAgICAgICAgICBmYmEuaGlkZUxvYWRpbmcoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ajgOe0ouWksei0pe+8jOWPr+iDvemTvuaOpeaXoOazleiuv+mXruOAgic7XFxuICAgICAgICAgICAgfSBlbHNlIGlmICh1cmxzLmxlbmd0aCA9PSAxKSB7XFxuICAgICAgICAgICAgICAgIGZiYS5sb2coJ+WwneivleebtOmTvuS4jkpTT07op6PmnpAnKTtcXG4gICAgICAgICAgICAgICAgaWYgKHVybHNbMF0ubWF0Y2goL2R5Y2RuXFxcXC10b3NcXFxcLnBzdGF0cHxcXFxcLm0zdTh8XFxcXC5tcDR8XFxcXC5mbHZ8bmV0ZWFzZVxcXFwuY29tfHZpZGVvX21wNHx0eXBlXFxcXD1tM3U4fHB0XFxcXD1tM3U4LykgJiYgIXVybHNbMF0ubWF0Y2goL1xcXFwuaHRtbHxtM3U4XFxcXC50dnxcXFxcJm5leHR8YWNcXFxcPWRtfFxcXFw9aHR0cHxodHRwc1xcXFw6XFxcXC9cXFxcL1tcXFxcZF1cXFxcLm0zdTh8XFxcXD91cmxcXFxcPVxcXFwvbTN1OC8pKSB7XFxuICAgICAgICAgICAgICAgICAgICAvL2Z5X2JyaWRnZV9hcHAubG9nKHVybHNbMF0pXFxuICAgICAgICAgICAgICAgICAgICBpZiAodXJsc1swXS5pbmRleE9mKCdiaWxpdmlkZW8nKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzWzBdICsgJzt7UmVmZXJlckBodHRwczovL3d3dy5iaWxpYmlsaS5jb20mJlVzZXItQWdlbnRATW96aWxsYS81LjB9JztcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXJsc1swXS5pbmRleE9mKCd0aXRhbi5tZ3R2LmNvbScpICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybHNbMF0gKyAnI2lzVmlkZW89dHJ1ZSMnICsgJzt7UmVmZXJlckB3d3cubWd0di5jb20mJlVzZXItQWdlbnRATW96aWxsYS81LjB9JztcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybHNbMF1cXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jYXRpb24uaHJlZi5tYXRjaCgvZHljZG5cXFxcLXRvc1xcXFwucHN0YXRwfFxcXFwubTN1OHxcXFxcLm1wNHxcXFxcLmZsdnxuZXRlYXNlXFxcXC5jb218dmlkZW9fbXA0fHR5cGVcXFxcPW0zdTh8cHRcXFxcPW0zdTgvKSAmJiAhbG9jYXRpb24uaHJlZi5tYXRjaCgvaHRtbHxtM3U4XFxcXC50dnxcXFxcJm5leHR8YWNcXFxcPWRtfFxcXFw9aHR0cHxodHRwc1xcXFw6XFxcXC9cXFxcL1tcXFxcZF1cXFxcLm0zdTh8XFxcXD91cmxcXFxcPVxcXFwvbTN1OC8pKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9jYXRpb24uaHJlZjtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBodG1sID0gZmJhLmZldGNoKGxvY2F0aW9uLmhyZWYsIHt9KTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICghL1xcXFw8bWV0YS8udGVzdChodG1sKSYmIS9cXFxcPGh0bWwvLnRlc3QoaHRtbCkpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGh0bWwpLnVybDtcXG4gICAgICAgICAgICAgICAgICAgIH1lbHNle1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uLmhyZWZ9XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgZmJhLmxvZygn5pel5b+X5qOA57Si56ysJyArIHdpbmRvdy5jb3VudCArICfmrKEnKTtcXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB1cmxzKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAodXJsc1tpXS5tYXRjaCgvZHljZG5cXFxcLXRvc1xcXFwucHN0YXRwfFxcXFwubTN1OHxcXFxcLm1wNHxcXFxcLmZsdnxuZXRlYXNlXFxcXC5jb218dmlkZW9fbXA0fHR5cGVcXFxcPW0zdTh8cHRcXFxcPW0zdTgvKSAmJiAhdXJsc1tpXS5tYXRjaCgvaHRtbHxtM3U4XFxcXC50dnxcXFxcJm5leHR8YWNcXFxcPWRtfFxcXFw9aHR0cHxodHRwc1xcXFw6XFxcXC9cXFxcL1tcXFxcZF1cXFxcLm0zdTh8XFxcXD91cmxcXFxcPVxcXFwvbTN1OC8pKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9meV9icmlkZ2VfYXBwLmxvZyh1cmxzW2ldKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmxzW2ldLmluZGV4T2YoJ2JpbGl2aWRlbycpICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzW2ldICsgJzt7UmVmZXJlckBodHRwczovL3d3dy5iaWxpYmlsaS5jb20mJlVzZXItQWdlbnRATW96aWxsYS81LjB9JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVybHNbaV0uaW5kZXhPZigndGl0YW4ubWd0di5jb20nKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsc1tpXSArICcjaXNWaWRlbz10cnVlIycgKyAnO3tSZWZlcmVyQHd3dy5tZ3R2LmNvbSYmVXNlci1BZ2VudEBNb3ppbGxhLzUuMH0nO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXJsc1tpXS5pbmRleE9mKCdqdWhhb2thbicpICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzW2ldICsgJzt7UmVmZXJlckBodHRwczovL3d3dy5qdWhhb2thbi5jYy99JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVybHNbaV0uaW5kZXhPZignb2piaycpICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzW2ldICsgJzt7UmVmZXJlckBodHRwczovL3Yub2pia2p4LmNvbS99JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVybHNbaV0uaW5kZXhPZignd2tmaWxlJykgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybHNbaV0gKyAnO3tSZWZlcmVyQGh0dHBzOi8vZmFudHVhbi53a2ZpbGUuY29tL30nO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzW2ldICsgJyNpc1ZpZGVvPXRydWUjJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSAvL2VuZCBmb3IgaVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfSwgc3JjdXJsKTtcXG4gICAgcmV0dXJuIHZpZGVvXFxufVxcbi8v57uT5p2feDVydWxl5by65Yqb5ZeF5o6iXFxuICAgIHJldHVybiB4NXJ1bGUoaW5wdXQsIGlucHV0KTtcXG59KVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiRC7pgJrnlKjljLnphY1cIixcInBhdGhcIjpcImxhenlcIixcInJ1bGVcIjpcInB1dFZhcihcXFwiX3g1XFxcIiwgJC50b1N0cmluZygoKSA9PiB7XFxuICAgIHZhciB1cmxzID0gX2dldFVybHMoKVxcbiAgICBmb3IgKHZhciBpIGluIHVybHMpIHtcXG4gICAgICAgIGlmICAodXJsc1tpXS5tYXRjaCgvXFxcXC5tcDN8XFxcXC5tcDR8XFxcXC5tM3U4Lykpe1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAubG9nKHVybHNbaV0pXFxuICAgICAgICAgICAgcmV0dXJuIHVybHNbaV1cXG4gICAgICAgIH1cXG4gICAgfVxcbn0pKVxcbnZhciBsYXp5ID0gXFxcIkBsYXp5UnVsZT0uanM6c2hvd0xvYWRpbmcoJ+ato+WcqOiOt+WPluermeeCuei1hOa6kCzor7fnqI3lkI4uLi4nKTsneDVSdWxlOi8vJytpbnB1dCsnQCcgKyBnZXRWYXIoJ194NScpXFxcIjtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIiPmkJzntKLlrZDpobVcIixcInBhdGhcIjpcIlNlYXJjaEZyYW1lXCIsXCJydWxlXCI6XCJcXG52YXIgZCA9IFtdO1xcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpXFxudmFyIOS4gOe6p+WIl+ihqCA9ICcubW9kdWxlLWl0ZW1zJiYubW9kdWxlLWl0ZW0nXFxudmFyIGxpc3QgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsIOS4gOe6p+WIl+ihqCk7XFxubG9nKCfmkJzntKLnu5PmnpwnKVxcbi8vbG9nKGxpc3QpXFxuaWYgKGxpc3QubGVuZ3RoID09IDApIHt0b2FzdCgn5YWo6YOo5pCc57Si5a6M5oiQLOaaguaXoOabtOWkmuWGheWuuScpO31cXG52YXIg5LiA57qn5qCH6aKYID0gJ2ltZyYmYWx0J1xcbnZhciDkuIDnuqfmj4/ov7AgPSAnLm1vZHVsZS1pdGVtLW5vdGUmJlRleHQnXFxudmFyIOS4gOe6p+eKtuaAgSA9ICcubW9kdWxlLWluZm8taXRlbS1jb250ZW50JiZUZXh0J1xcbnZhciDkuIDnuqflm77niYcgPSAnaW1nJiZkYXRhLW9yaWdpbmFsJ1xcbnZhciDkuIDnuqfpk77mjqUgPSAnYSYmaHJlZidcXG5mb3IgKHZhciBqIGluIGxpc3QpIHtcXG5cXG4gICAgdmFyIOmTvuaOpSA9IHBhcnNlRG9tKGxpc3Rbal0sIOS4gOe6p+mTvuaOpSlcXG4gICAgdmFyIOagh+mimCA9IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCDkuIDnuqfmoIfpopgpXFxuICAgIHZhciDlsIHpnaIgPSBwYXJzZURvbShsaXN0W2pdLCDkuIDnuqflm77niYcpKydAUmVmZXJlcj0nXFxuXFxuICAgIHB1dE15VmFyKOmTvuaOpSwg5qCH6aKYKVxcbiAgICBwdXRNeVZhcijpk77mjqUgKyAn5bCB6Z2iJywg5bCB6Z2iKVxcblxcbiAgZC5wdXNoKHtcXG4gICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCDkuIDnuqfmoIfpopgpLFxcbiAgICAgICBkZXNjOiBwYXJzZURvbUZvckh0bWwobGlzdFtqXSwg5LiA57qn5o+P6L+wKSxcXG5cXHQgICAgY29udGVudDogcGFyc2VEb21Gb3JIdG1sKGxpc3Rbal0sIOS4gOe6p+eKtuaAgSksXFxuICAgICAgIGltZzogcGFyc2VEb20obGlzdFtqXSwg5LiA57qn5Zu+54mHKSsnQFJlZmVyZXI9JyxcXG4gICAgICAgdXJsOiBwYXJzZURvbShsaXN0W2pdLCDkuIDnuqfpk77mjqUpXFxuICB9KTtcXG59XFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCIj5pa55rOV5b2S5qGjXCIsXCJwYXRoXCI6XCJhcmNoaXZlc1wiLFwicnVsZVwiOlwianM6dmFyIGQgPSBbXTtcXG4vLyDkuIDnuqfmqKHmnb8s6ZyA6KaB55So5pe25omN6L+H5p2l5aSN5Yi2XFxucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2F1dG8nKVxcbmF1dG9QYWdlKGdldFJlc0NvZGUoKSlcXG5zZXRSZXN1bHQoZClcXG5cXG7wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI9cXG5qczp2YXIgZCA9IFtdO1xcbi8vIOS4gOe6p+aooeadvyzkuI3lkK/nlKjliqjmgIHliIbnsbss5omL5Yqo5aGr5YaZ5Y+C5pWwwrfpnIDopoHnlKjml7bmiY3ov4fmnaXlpI3liLZcXG52YXIg5LiA57qn5YiX6KGoID0gJydcXG52YXIg5LiA57qn5qCH6aKYID0gJydcXG52YXIg5LiA57qn5o+P6L+wID0gJydcXG52YXIg5LiA57qn5Zu+54mHID0gJydcXG52YXIg5LiA57qn6ZO+5o6lID0gJ2EmJmhyZWYnXFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvUHJpbWFyeVRlbXBsYXRlJywge30pKS5ydWxlKTtcXG5zZXRSZXN1bHQoZClcXG5cXG7wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI9cXG5qczp2YXIgZCA9IFtdO1xcbi8vIOS4gOe6p+aooeadvyzlkK/nlKjliqjmgIHliIbnsbvCt+mcgOimgeeUqOaXtuaJjei/h+adpeWkjeWItizpg6jliIblj4LmlbDpnIDopoHosIPmlbRcXG5cXG5jb25zdCDkuIDnuqflrprkvY0gPSAnYm9keSYmYSdcXG5jb25zdCDkuoznuqflrprkvY0gPSAnJ1xcbmNvbnN0IOe7n+S4gOWumuS9jSA9ICdib2R5JiZhOm5vdCg6bWF0Y2hlcyjpppbpobV8QVBQKSknXFxuXFxuY29uc3QgcGFnZSA9IE1ZX1BBR0VcXG5NWV9VUkwgPSBNWV9VUkwucmVwbGFjZSgnaGlrZXI6Ly9lbXB0eSMjJywgJycpXFxubGV0IHRydWVfdXJsID0gZ2V0VmFyKE1ZX1JVTEUudXJsLCBNWV9VUkwpXFxuXFxudHJ1ZV91cmwgPSB0cnVlX3VybC5yZXBsYWNlKCcuaHRtbCcsICcvcGFnZS8nICsgcGFnZSArICcuaHRtbCcpXFxuXFxuLy9sb2codHJ1ZV91cmwpXFxuXFxudmFyIGh0bWwgPSBmZXRjaCh0cnVlX3VybCwge2hlYWRlcnM6IHsnVXNlci1BZ2VudCc6IE1PQklMRV9VQSAvKlBDX1VBKi99fSlcXG5cXG5cXG5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvZHRmbCcpXFxucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2F1dG8nKVxcbmF1dG9QYWdlKGh0bWwpXFxuc2V0UmVzdWx0KGQpXFxuXFxu8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iPXFxu8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iPXFxuanM6dmFyIGQgPSBbXTtcXG4vLyDkuoznuqfmqKHmnb8s6ZyA6KaB55So5pe25omN6L+H5p2l5aSN5Yi2XFxucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2F1dG8nKVxcbmF1dG9QYWdlKGdldFJlc0NvZGUoKSlcXG5zZXRSZXN1bHQoZClcXG5cXG7wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI9cXG5qczpcXG4vLyDkuoznuqfmqKHmnb/Ct+aJi+WKqOWhq+WGmeWPguaVsCzpnIDopoHnlKjml7bmiY3ov4fmnaXlpI3liLZcXG4vL3ZhciBsYXp5ID0gJyc7XFxudmFyIOaQnOe0ouagh+etviA9ICcnO1xcbnZhciDnur/ot6/liJfooaggPSAnJztcXG52YXIg57q/6Lev5qCH562+ID0gJyc7XFxudmFyIOmbhuaVsOWIl+ihqCA9ICcnO1xcbnZhciDpm4bmlbDmoIfnrb4gPSAnJztcXG52YXIg5a6a5L2N566A5LuLID0gJyc7XFxuXFxucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2xhenlcXFwiKTtcXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9TZWNvbmRhcnlUZW1wbGF0ZScsIHt9KSkucnVsZSk7XFxuXFxu8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iPXFxuanM6XFxuLy8g5LqM57qn5qih5p2/wrfpnIDopoHnlKjml7bmiY3ov4fmnaXlpI3liLYs5aaC5p6c6L+b5YWl5LqM57qn5Y+R546w6ZSZ6K+vLuWPr+ebtOaOpeS/ruaUueWPguaVsFxcbi8vIOWIl8K3dmFyIOWumuS9jeeugOS7iyA9ICdhJiZUZXh0JztcXG5cXG4vL3ZhciBsYXp5ID0gJyc7XFxuXFxudmFyIOaQnOe0ouagh+etviA9ICcnO1xcbnZhciDnur/ot6/liJfooaggPSAnJztcXG52YXIg57q/6Lev5qCH562+ID0gJyc7XFxudmFyIOmbhuaVsOWIl+ihqCA9ICcnO1xcbnZhciDpm4bmlbDmoIfnrb4gPSAnJztcXG52YXIg5a6a5L2N566A5LuLID0gJyc7XFxuXFxuXFxudmFyIGh0bWwgPSBmZXRjaChNWV9VUkwsIHtcXG4gICAgaGVhZGVyczoge1xcbiAgICAgICAgJ1VzZXItQWdlbnQnOiBQQ19VQS8vTU9CSUxFX1VBXFxuICAgIH1cXG59KVxcbnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hdXRvXFxcIik7XFxucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2xhenlcXFwiKTtcXG4vL3JlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9sYXp5MVxcXCIpO1xcbmF1dG9QYWdlKGh0bWwpXFxuXFxu8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iP8J+On++4j/Cfjp/vuI/wn46f77iPXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJELumAmueUqOWMuemFjSjlsI/mo4noooQpXCIsXCJwYXRoXCI6XCJsYXp5MlwiLFwicnVsZVwiOlwicHV0VmFyKFxcXCJfeDVcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgdmFyIHVybHMgPSBfZ2V0VXJscygpXFxuICAgIGZ1bmN0aW9uIGNoZWNrKHUpe1xcbiAgICAgICAgaWYgICh1Lm1hdGNoKC9cXFxcLm1wM3xcXFxcLm1wNHxcXFxcLm0zdTgvKSAmJiAhdS5tYXRjaCgvaHRtbHxtM3U4XFxcXC50dnxcXFxcJm5leHR8YWNcXFxcPWRtfFxcXFw9aHR0cHxodHRwc1xcXFw6XFxcXC9cXFxcL1tcXFxcZF1cXFxcLm0zdTh8XFxcXD91cmxcXFxcPVxcXFwvbTN1OC8pKXtcXG4gICAgICAgICAgICAvL2Z5X2JyaWRnZV9hcHAubG9nKHVybHNbaV0pXFxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH1cXG4gICAgZm9yICh2YXIgaSBpbiB1cmxzKSB7XFxuICAgICAgICBpZiAgKGNoZWNrKHVybHNbaV0pKXtcXG4gICAgICAgICAgICAvL2Z5X2JyaWRnZV9hcHAubG9nKHVybHNbaV0pXFxuICAgICAgICAgICAgcmV0dXJuIHVybHNbaV1cXG4gICAgICAgIH1cXG4gICAgICAgIGlmKHVybHNbaV0uaW5jbHVkZXMoXFxcInVybD1odHRwXFxcIikpe1xcbiAgICAgICAgICAgIGxldCB1ID0gdXJsc1tpXS5zcGxpdChcXFwidXJsPVxcXCIpWzFdO1xcbiAgICAgICAgICAgIGlmKGNoZWNrKHUpKXtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHU7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxufSkpXFxudmFyIGxhenkgPSBcXFwiQGxhenlSdWxlPS5qczpzaG93TG9hZGluZygn5q2j5Zyo6I635Y+W56uZ54K56LWE5rqQLOivt+eojeWQji4uLicpOyd3ZWJSdWxlOi8vJytpbnB1dCsnQCcgKyBnZXRWYXIoJ194NScpXFxcIjtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIkNDLnNlZXdvcmxkXCIsXCJwYXRoXCI6XCJkbFwiLFwicnVsZVwiOlwidmFyIOS4gOe6p+WIl+ihqCA9ICcubW9kdWxlLWl0ZW1zJiYubW9kdWxlLWl0ZW0nXFxudmFyIOS4gOe6p+agh+mimCA9ICdpbWcmJmFsdCdcXG52YXIg5LiA57qn5o+P6L+wID0gJy5tb2R1bGUtaXRlbS1ub3RlJiZUZXh0J1xcbnZhciDkuIDnuqfnirbmgIEgPSAnLm1vZHVsZS1pbmZvLWl0ZW0tY29udGVudCYmVGV4dCdcXG52YXIg5LiA57qn5Zu+54mHID0gJ2ltZyYmZGF0YS1vcmlnaW5hbCdcXG52YXIg5LiA57qn6ZO+5o6lID0gJ2EmJmhyZWYnXFxuXFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvU2VhcmNoRnJhbWUnLCB7fSkpLnJ1bGUpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi566A5piT6Kej5p6Q5ZeF5o6iXCIsXCJwYXRoXCI6XCJsYXp5NFwiLFwicnVsZVwiOlwidmFyIGxhenkgPSAkKCcnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgIHZhciBodG1sID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KS5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdKVxcbiAgICB2YXIgdXJsID0gaHRtbC51cmxcXG4gICBpZiAoaHRtbC5lbmNyeXB0ID09ICcxJykge1xcbiAgICAgICAgdXJsID0gdW5lc2NhcGUodXJsKTtcXG4gICAgfSBlbHNlIGlmIChodG1sLmVuY3J5cHQgPT0gJzInKSB7XFxuICAgICAgICB1cmwgPSB1bmVzY2FwZShiYXNlNjREZWNvZGUodXJsKSk7XFxuICAgIH1cXG5sb2codXJsKVxcbmlmICh1cmwuc2VhcmNoKC9cXFxcLm1wNHxcXFxcLmZsdnxcXFxcLm0zdTgvKSA+IC0xKSB7XFxuICAgICAgICByZXR1cm4gdXJsO1xcbiAgICB9IGVsc2Uge1xcbiAgICB2YXIganUgPSBwZChmZXRjaChpbnB1dCksICcucGxheWVyLWJveCYmc2NyaXB0LDEmJnNyYycpO1xcbiAgICAgICAgZXZhbChmZXRjaChqdSkpO1xcbiAgICB2YXIganggPSAgTWFjUGxheWVyQ29uZmlnLnBsYXllcl9saXN0W2h0bWwuZnJvbV0ucGFyc2VcXG4gICAgaWYgKGp4ID09ICcnKSB7XFxuICAgICAgICAgICAganggPSBNYWNQbGF5ZXJDb25maWcucGFyc2VcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBqeHVybCA9IGp4ICsgdXJsO2xvZyhqeHVybCl9XFxuICAgICAgICBzaG93TG9hZGluZyhcXFwi572R6aG16Kej5p6Q55u06L+e5ZeF5o6i5LitLOivt+eojeWQji4uLlxcXCIpO1xcbiAgICAgICAgdmFyIHZpZGVvID0gJ3dlYlJ1bGU6Ly8nICsganh1cmwgKyAnQCcrICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHZhciB1cmxzID0gX2dldFVybHMoKVxcbiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gdXJscykge1xcbiAgICAgICAgICAgICAgICBpZiAodXJsc1tpXS5tYXRjaCgvXFxcXC5mbHZ8XFxcXC5tcDR8XFxcXC5tM3U4LykpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzW2ldO1xcbiAgICAgICAgICAgICAgICB9IFxcbmVsc2UgaWYgKHVybHNbaV0ubWF0Y2goL1xcXFwuZmx2LykpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzW2ldICsgICc7e1JlZmVyZXJAaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tLyYmVXNlci1BZ2VudEBNb3ppbGxhLzUuMH0nO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgIHJldHVybiB2aWRlb1xcbn0pXFxuXCJ9XSIsImljb24iOiJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS82OC5wbmcifQ==
Add Comment
Please, Sign In to add comment