xiaomianao666

邀您一起看:家常炸麻花(老式麻花)

Sep 15th, 2022
9,292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥家常炸麻花(老式麻花)@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImlkXCI6MCxcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbXSxcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwi5LiL5Y6o5oi/UlwiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImh0dHBzOi8vd3d3LnhpYWNodWZhbmcuY29tL3JlY2lwZS8xMDQzMjEwMzYvI25vSGlzdG9yeSM7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QE1vemlsbGEgNS4wfVwiLFwiY29sX3R5cGVcIjpcInJpY2hfdGV4dFwiLFwiZmluZF9ydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgaHRtbCA9IGdldFJlc0NvZGUoKTtcXG52YXIgdXJsU3BsaXRzID0gTVlfVVJMLnNwbGl0KCc/cGFnZT0nKTtcXG52YXIgcGFnZSA9IDE7XFxudHJ5IHtcXG4gICAgbGV0IHBhZ2VUZW1wID0gcGFyc2VJbnQodXJsU3BsaXRzWzFdKTtcXG4gICAgcGFnZSA9IGlzTmFOKHBhZ2VUZW1wKSA9PT0gdHJ1ZSA/IHBhZ2UgOiBwYWdlVGVtcDtcXG59IGNhdGNoIChlKSB7IH1cXG5cXG4vKipcXG4gKiDkuKrkurrphY3nva7lt7Lnp7vliLDpooTlpITnkIbvvIzor7fliY3lvoDpooTlpITnkIbov5vooYzphY3nva5cXG4gKi9cXG5cXG4vKipcXG4gKiDmmK/lkKblvIDlkK/kvKrlvILmraXliqDovb3mqKHlvI8gMS/lvIDlkK8gMC/kuI3lvIDlkK9cXG4gKlxcbiAqIOazqOaEj++8muS6jOe6p+S8muWNoeWPr+S7peWwneivleW8gOWQr+ivpemAiemhue+8jOS9huWPr+iDveWvvOiHtOafkOS6m+WbvueJh+S4jeaYvuekulxcbiAqL1xcbmxldCB2YWx1ZUluTWFwID0gZ2V0VmFyKCd4aWFjaHVfbXVsdGlTdGVwTW9kZWwnKTtcXG5sZXQgbXVsdGlTdGVwTW9kZWwgPSAwO1xcbnZhbHVlSW5NYXAgPSBwYXJzZUludCh2YWx1ZUluTWFwKTtcXG5tdWx0aVN0ZXBNb2RlbCA9IGlzTmFOKHZhbHVlSW5NYXApID09PSB0cnVlID8gbXVsdGlTdGVwTW9kZWwgOiB2YWx1ZUluTWFwO1xcbi8vIOaYr+WQpumakOiXj+WbvueJhyjnnIHmtYHmqKHlvI8pIDEv6ZqQ6JePIDAv5LiN6ZqQ6JePXFxubGV0IGhpZGVJbWcgPSAwO1xcbnZhbHVlSW5NYXAgPSBnZXRWYXIoJ3hpYWNodV9oaWRlSW1nJyk7XFxudmFsdWVJbk1hcCA9IHBhcnNlSW50KHZhbHVlSW5NYXApO1xcbmhpZGVJbWcgPSBpc05hTih2YWx1ZUluTWFwKSA9PT0gdHJ1ZSA/IGhpZGVJbWcgOiB2YWx1ZUluTWFwO1xcbi8vIOWbvueJh+i0qOmHj++8jOm7mOiupCAzMDDvvIzmjqjojZAgNjAwIOaIliA4MDBcXG5sZXQgaW1nV2lkdGggPSA2MDA7XFxudmFsdWVJbk1hcCA9IGdldFZhcigneGlhY2h1X2ltZ1dpZHRoJyk7XFxudmFsdWVJbk1hcCA9IHBhcnNlSW50KHZhbHVlSW5NYXApO1xcbmltZ1dpZHRoID0gaXNOYU4odmFsdWVJbk1hcCkgPT09IHRydWUgPyBpbWdXaWR0aCA6IHZhbHVlSW5NYXA7XFxuLy8g5piv5ZCm5pi+56S655yL5aSn5Zu+KOmYsuatouaXoOazleWKoOi9veWbvueJhykgMS/mmL7npLogMC/kuI3mmL7npLpcXG5sZXQgc2hvd0Z1bGxJbWdUaXBzID0gMTtcXG52YWx1ZUluTWFwID0gZ2V0VmFyKCd4aWFjaHVfc2hvd0Z1bGxJbWdUaXBzJyk7XFxudmFsdWVJbk1hcCA9IHBhcnNlSW50KHZhbHVlSW5NYXApO1xcbnNob3dGdWxsSW1nVGlwcyA9IGlzTmFOKHZhbHVlSW5NYXApID09PSB0cnVlID8gc2hvd0Z1bGxJbWdUaXBzIDogdmFsdWVJbk1hcDtcXG4vLyDnlKjmiLfpopzoibJcXG5sZXQgdXNlckNvbG9yID0gXFxcIiMyOTc5RkZcXFwiO1xcbnZhbHVlSW5NYXAgPSBnZXRWYXIoJ3hpYWNodV91c2VyQ29sb3InKTtcXG51c2VyQ29sb3IgPSB2YWx1ZUluTWFwID09PSAnJyA/IHVzZXJDb2xvciA6IHZhbHVlSW5NYXA7XFxuLy8g5piv5ZCm5pi+56S66I+c55qE5o+P6L+wIDEv5pi+56S6IDAv5LiN5pi+56S6XFxubGV0IHNob3dEZXNjID0gMTtcXG52YWx1ZUluTWFwID0gZ2V0VmFyKCd4aWFjaHVfc2hvd0Rlc2MnKTtcXG52YWx1ZUluTWFwID0gcGFyc2VJbnQodmFsdWVJbk1hcCk7XFxuc2hvd0Rlc2MgPSBpc05hTih2YWx1ZUluTWFwKSA9PT0gdHJ1ZSA/IHNob3dEZXNjIDogdmFsdWVJbk1hcDtcXG4vLyDnlKjmlpnmqKHlnZfmmL7npLrmlrnlvI8gMS/lrozmlbTop4blm74gMC/nvKnnlaXmqKHlvI9cXG5sZXQgaW5nc01vZGUgPSAwO1xcbnZhbHVlSW5NYXAgPSBnZXRWYXIoJ3hpYWNodV9pbmdzTW9kZScpO1xcbnZhbHVlSW5NYXAgPSBwYXJzZUludCh2YWx1ZUluTWFwKTtcXG5pbmdzTW9kZSA9IGlzTmFOKHZhbHVlSW5NYXApID09PSB0cnVlID8gaW5nc01vZGUgOiB2YWx1ZUluTWFwO1xcbi8vIOeUqOaWmeWQjeminOiJslxcbmxldCBpbmdOYW1lQ29sb3IgPSBcXFwiIzQ2YzIwMFxcXCI7XFxudmFsdWVJbk1hcCA9IGdldFZhcigneGlhY2h1X2luZ05hbWVDb2xvcicpO1xcbmluZ05hbWVDb2xvciA9IHZhbHVlSW5NYXAgPT09ICcnID8gaW5nTmFtZUNvbG9yIDogdmFsdWVJbk1hcDtcXG4vLyDnlKjmlpnph4/popzoibJcXG5sZXQgaW5nVW5pdENvbG9yID0gXFxcIiM3MDZhNmJcXFwiO1xcbnZhbHVlSW5NYXAgPSBnZXRWYXIoJ3hpYWNodV9pbmdVbml0Q29sb3InKTtcXG5pbmdVbml0Q29sb3IgPSB2YWx1ZUluTWFwID09PSAnJyA/IGluZ1VuaXRDb2xvciA6IHZhbHVlSW5NYXA7XFxuLy8g5bCP6LS05aOr6aKc6ImyXFxubGV0IHRpcHNDb2xvciA9IFxcXCIjNzA2YTZiXFxcIjtcXG52YWx1ZUluTWFwID0gZ2V0VmFyKCd4aWFjaHVfdGlwc0NvbG9yJyk7XFxudGlwc0NvbG9yID0gdmFsdWVJbk1hcCA9PT0gJycgPyB0aXBzQ29sb3IgOiB2YWx1ZUluTWFwO1xcbi8vIOaooeWdl+S5i+mXtOeahOmXtOmalFxcbmxldCBtb2RlbF9saW5lX2hlaWdodCA9IDE7XFxudmFsdWVJbk1hcCA9IGdldFZhcigneGlhY2h1X21vZGVsX2xpbmVfaGVpZ2h0Jyk7XFxudmFsdWVJbk1hcCA9IHBhcnNlSW50KHZhbHVlSW5NYXApO1xcbm1vZGVsX2xpbmVfaGVpZ2h0ID0gaXNOYU4odmFsdWVJbk1hcCkgPT09IHRydWUgPyBtb2RlbF9saW5lX2hlaWdodCA6IHZhbHVlSW5NYXA7XFxuLy8g5q2j5paH5o+Q56S6XFxubGV0IGNvbnRlbnRUaXBzID0gJ+S4i+WOqOaIv+eahOaXtuWAmeS4gOWumuimgeazqOaEj+WuieWFqOWTpu+9nicgKyAnPGJyPic7XFxudmFsdWVJbk1hcCA9IGdldFZhcigneGlhY2h1X2NvbnRlbnRUaXBzJyk7XFxuY29udGVudFRpcHMgPSB2YWx1ZUluTWFwID09PSAnJyA/IGNvbnRlbnRUaXBzIDogdmFsdWVJbk1hcDtcXG5cXG5mdW5jdGlvbiBnZXRCaWdUZXh0KHRleHQpIHtcXG4gICAgcmV0dXJuICc8YmlnPicgKyB0ZXh0ICsgJzwvYmlnPic7XFxufVxcbmZ1bmN0aW9uIGdldFNtYWxsVGV4dCh0ZXh0KSB7XFxuICAgIHJldHVybiAnPHNtYWxsPicgKyB0ZXh0ICsgJzwvc21hbGw+JztcXG59XFxuZnVuY3Rpb24gZ2V0U3Ryb25nVGV4dCh0ZXh0KSB7XFxuICAgIHJldHVybiAnPHN0cm9uZz4nICsgdGV4dCArICc8L3N0cm9uZz4nO1xcbn1cXG5mdW5jdGlvbiBnZXRUaXRsZVRleHQodGV4dCkge1xcbiAgICByZXR1cm4gZ2V0U3Ryb25nVGV4dCh0ZXh0KTtcXG59XFxuZnVuY3Rpb24gZ2V0Q29sb3JUZXh0KHRleHQsIGNvbG9yKSB7XFxuICAgIHJldHVybiAnPGZvbnQgY29sb3I9XFxcIicgKyBjb2xvciArICdcXFwiPicgKyB0ZXh0ICsgJzwvZm9udD4nO1xcbn1cXG5mdW5jdGlvbiBnZXRHcmV5VGV4dCh0ZXh0KSB7XFxuICAgIHJldHVybiBnZXRDb2xvclRleHQodGV4dCwgJ2dyZXknKTtcXG59XFxuZnVuY3Rpb24gZ2V0QXV0aG9yVGV4dCh0ZXh0KSB7XFxuICAgIHJldHVybiBnZXRDb2xvclRleHQodGV4dCwgdXNlckNvbG9yKTtcXG59XFxuZnVuY3Rpb24gZ2V0Q29kZVRleHQodGV4dCkge1xcbiAgICByZXR1cm4gJzxjb2RlPicgKyB0ZXh0ICsgJzwvY29kZT4nO1xcbn1cXG5mdW5jdGlvbiBnZXRCbG9ja3F1b3RlVGV4dCh0ZXh0KSB7XFxuICAgIHJldHVybiAnPGJsb2NrcXVvdGU+JyArIHRleHQgKyAnPC9ibG9ja3F1b3RlPidcXG59XFxuZnVuY3Rpb24gZ2V0QWRkcmVzc1RhZyh1cmwsIHRleHQpIHtcXG4gICAgcmV0dXJuICc8YSBocmVmPVxcXCInICsgdXJsICsgJ1xcXCI+JyArIHRleHQgKyAnPC9hPidcXG59XFxuZnVuY3Rpb24gZ2V0Q29tbWVudE1ldGEoaHRtbCkge1xcbiAgICByZXR1cm4gZ2V0U21hbGxUZXh0KGh0bWwpO1xcbn1cXG5TdHJpbmcucHJvdG90eXBlLnJlcGxhY2VXaXRoQ2FsbGJhY2sgPSBmdW5jdGlvbiAoc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSwgY2FsbGJhY2spIHtcXG4gICAgbGV0IHJldHVyblZhbHVlID0gdGhpcztcXG4gICAgaWYgKGNhbGxiYWNrICE9IG51bGwpIHtcXG4gICAgICAgIHJldHVyblZhbHVlID0gY2FsbGJhY2sodGhpcywgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSk7XFxuICAgIH1cXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xcbn07XFxuXFxubGV0IGltZ0Vycm9yID0gJzxmb250IGNvbG9yPVxcXCJncmV5XFxcIj7lm77niYfmmoLml7bml6Dms5XmmL7npLrvvIzoi6XopoHmn6XnnIvor7c8YSBocmVmPVxcXCInICsgTVlfVVJMICsgJ1xcXCI+6K6/6Zeu5Y6f5paHPC9hPjwvZm9udD4nO1xcbmZ1bmN0aW9uIGltZ1RhZyhjb250ZXh0LCBzb3VyY2VUYWcsIGltZ1VybCkge1xcbiAgICBpZigvKHdcXFxcLyhcXFxcZCspXFxcXC9pbnRlcmxhY2UpLy50ZXN0KGltZ1VybCkgPT09IHRydWUpIHtcXG4gICAgICAgIHNvdXJjZVRhZyA9IHNvdXJjZVRhZy5yZXBsYWNlKFJlZ0V4cC4kMSwgJ3cvJyArIGltZ1dpZHRoICsgJy9pbnRlcmxhY2UnKTtcXG4gICAgfVxcbiAgICBsZXQgcmVwbGFjZVN0cmluZyA9IHNvdXJjZVRhZztcXG4gICAgbGV0IHJlcGxhY2VTdHJpbmcxID0gaW1nVXJsID09PSAnJ1xcbiAgICAgICAgPyBpbWdFcnJvclxcbiAgICAgICAgOiAoJzxhIGhyZWY9XFxcIicgKyBpbWdVcmwgKyAnXFxcIj4nXFxuICAgICAgICAgICAgKyAoaGlkZUltZyA9PT0gMSA/ICdb54K55Ye75p+l55yL5aSn5Zu+XScgOiAn5Zu+54mH5peg5rOV5Yqg6L2977yf54K55oiR6K+V6K+VficpXFxuICAgICAgICAgICAgKyAnPC9hPicpO1xcbiAgICBpZihzaG93RnVsbEltZ1RpcHMpIHtcXG4gICAgICAgIHJlcGxhY2VTdHJpbmcgKz0gKCc8YnI+JyArIGdldFNtYWxsVGV4dChyZXBsYWNlU3RyaW5nMSkpO1xcbiAgICB9XFxuICAgIGlmIChoaWRlSW1nKSB7XFxuICAgICAgICByZXBsYWNlU3RyaW5nID0gcmVwbGFjZVN0cmluZzE7XFxuICAgIH1cXG4gICAgcmV0dXJuIGNvbnRleHQucmVwbGFjZSgvPGltZyBkYXRhLXY+L2csIHJlcGxhY2VTdHJpbmcpO1xcbn1cXG5mdW5jdGlvbiBpbWdUYWdSZXBsYWNlbWVudDIoY29udGV4dCwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xcbiAgICBsZXQgbWF0Y2hBcnJheSA9IGNvbnRleHQubWF0Y2goc2VhcmNoVmFsdWUpO1xcbiAgICBsZXQgcmV0dXJuVmFsdWUgPSBjb250ZXh0O1xcbiAgICBpZiAobWF0Y2hBcnJheSAhPSBudWxsKSB7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdGNoQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBsZXQgaXRlbSA9IG1hdGNoQXJyYXlbaV07XFxuICAgICAgICAgICAgLyg8aW1nIChzcmN8ZGF0YS1zcmMpPVxcXCIoLio/KVxcXCIoW1xcXFxzXFxcXFNdKj8pPikvLnRlc3QoaXRlbSk7XFxuICAgICAgICAgICAgbGV0IGltZ1VybCA9IFJlZ0V4cC4kMztcXG4gICAgICAgICAgICBpZiAoaW1nVXJsICE9PSAnJykge1xcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHJldHVyblZhbHVlLnJlcGxhY2UoaXRlbSwgcmVwbGFjZVZhbHVlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBpbWdUYWcocmV0dXJuVmFsdWUsIFJlZ0V4cC4kMSxpbWdVcmwpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICByZXR1cm4gcmV0dXJuVmFsdWU7XFxufVxcblxcbnRyeSB7XFxuICAgIGxldCBtYWluSHRtbCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLm1haW4tcGFuZWwmJkh0bWwnKTtcXG4gICAgaWYgKE1ZX1VSTC5pbmRleE9mKCdyZWNpcGVfbGlzdCcpID4gLTEpIHtcXG4gICAgICAgIGxldCBydWxlID0gJ0BydWxlPWpzOicgKyBgdmFyIHJlcz17fSxkPVtdLGh0bWw9Z2V0UmVzQ29kZSgpLHVybFNwbGl0cz1NWV9VUkwuc3BsaXQoXFxcIj9wYWdlPVxcXCIpLHBhZ2U9MTt0cnl7bGV0IGU9cGFyc2VJbnQodXJsU3BsaXRzWzFdKTtwYWdlPSEwPT09aXNOYU4oZSk/cGFnZTplfWNhdGNoKGUpe31sZXQgdmFsdWVJbk1hcD1nZXRWYXIoXFxcInhpYWNodV9tdWx0aVN0ZXBNb2RlbFxcXCIpLG11bHRpU3RlcE1vZGVsPTA7dmFsdWVJbk1hcD1wYXJzZUludCh2YWx1ZUluTWFwKSxtdWx0aVN0ZXBNb2RlbD0hMD09PWlzTmFOKHZhbHVlSW5NYXApP211bHRpU3RlcE1vZGVsOnZhbHVlSW5NYXA7bGV0IGhpZGVJbWc9MDt2YWx1ZUluTWFwPWdldFZhcihcXFwieGlhY2h1X2hpZGVJbWdcXFwiKSx2YWx1ZUluTWFwPXBhcnNlSW50KHZhbHVlSW5NYXApLGhpZGVJbWc9ITA9PT1pc05hTih2YWx1ZUluTWFwKT9oaWRlSW1nOnZhbHVlSW5NYXA7bGV0IGltZ1dpZHRoPTYwMDt2YWx1ZUluTWFwPWdldFZhcihcXFwieGlhY2h1X2ltZ1dpZHRoXFxcIiksdmFsdWVJbk1hcD1wYXJzZUludCh2YWx1ZUluTWFwKSxpbWdXaWR0aD0hMD09PWlzTmFOKHZhbHVlSW5NYXApP2ltZ1dpZHRoOnZhbHVlSW5NYXA7bGV0IHNob3dGdWxsSW1nVGlwcz0xO3ZhbHVlSW5NYXA9Z2V0VmFyKFxcXCJ4aWFjaHVfc2hvd0Z1bGxJbWdUaXBzXFxcIiksdmFsdWVJbk1hcD1wYXJzZUludCh2YWx1ZUluTWFwKSxzaG93RnVsbEltZ1RpcHM9ITA9PT1pc05hTih2YWx1ZUluTWFwKT9zaG93RnVsbEltZ1RpcHM6dmFsdWVJbk1hcDtsZXQgdXNlckNvbG9yPVxcXCIjMjk3OUZGXFxcIjt2YWx1ZUluTWFwPWdldFZhcihcXFwieGlhY2h1X3VzZXJDb2xvclxcXCIpLHVzZXJDb2xvcj1cXFwiXFxcIj09PXZhbHVlSW5NYXA/dXNlckNvbG9yOnZhbHVlSW5NYXA7bGV0IHNob3dEZXNjPTE7dmFsdWVJbk1hcD1nZXRWYXIoXFxcInhpYWNodV9zaG93RGVzY1xcXCIpLHZhbHVlSW5NYXA9cGFyc2VJbnQodmFsdWVJbk1hcCksc2hvd0Rlc2M9ITA9PT1pc05hTih2YWx1ZUluTWFwKT9zaG93RGVzYzp2YWx1ZUluTWFwO2xldCBpbmdzTW9kZT0wO3ZhbHVlSW5NYXA9Z2V0VmFyKFxcXCJ4aWFjaHVfaW5nc01vZGVcXFwiKSx2YWx1ZUluTWFwPXBhcnNlSW50KHZhbHVlSW5NYXApLGluZ3NNb2RlPSEwPT09aXNOYU4odmFsdWVJbk1hcCk/aW5nc01vZGU6dmFsdWVJbk1hcDtsZXQgaW5nTmFtZUNvbG9yPVxcXCIjNDZjMjAwXFxcIjtpbmdOYW1lQ29sb3I9XFxcIlxcXCI9PT0odmFsdWVJbk1hcD1nZXRWYXIoXFxcInhpYWNodV9pbmdOYW1lQ29sb3JcXFwiKSk/aW5nTmFtZUNvbG9yOnZhbHVlSW5NYXA7bGV0IGluZ1VuaXRDb2xvcj1cXFwiIzcwNmE2YlxcXCI7aW5nVW5pdENvbG9yPVxcXCJcXFwiPT09KHZhbHVlSW5NYXA9Z2V0VmFyKFxcXCJ4aWFjaHVfaW5nVW5pdENvbG9yXFxcIikpP2luZ1VuaXRDb2xvcjp2YWx1ZUluTWFwO2xldCB0aXBzQ29sb3I9XFxcIiM3MDZhNmJcXFwiO3RpcHNDb2xvcj1cXFwiXFxcIj09PSh2YWx1ZUluTWFwPWdldFZhcihcXFwieGlhY2h1X3RpcHNDb2xvclxcXCIpKT90aXBzQ29sb3I6dmFsdWVJbk1hcDtsZXQgbW9kZWxfbGluZV9oZWlnaHQ9MTt2YWx1ZUluTWFwPWdldFZhcihcXFwieGlhY2h1X21vZGVsX2xpbmVfaGVpZ2h0XFxcIiksdmFsdWVJbk1hcD1wYXJzZUludCh2YWx1ZUluTWFwKSxtb2RlbF9saW5lX2hlaWdodD0hMD09PWlzTmFOKHZhbHVlSW5NYXApP21vZGVsX2xpbmVfaGVpZ2h0OnZhbHVlSW5NYXA7bGV0IGNvbnRlbnRUaXBzPVxcXCLkuIvljqjmiL/nmoTml7blgJnkuIDlrpropoHms6jmhI/lronlhajlk6bvvZ5cXFwiK1xcXCI8YnI+XFxcIjtmdW5jdGlvbiBnZXRCaWdUZXh0KGUpe3JldHVyblxcXCI8YmlnPlxcXCIrZStcXFwiPC9iaWc+XFxcIn1mdW5jdGlvbiBnZXRTbWFsbFRleHQoZSl7cmV0dXJuXFxcIjxzbWFsbD5cXFwiK2UrXFxcIjwvc21hbGw+XFxcIn1mdW5jdGlvbiBnZXRTdHJvbmdUZXh0KGUpe3JldHVyblxcXCI8c3Ryb25nPlxcXCIrZStcXFwiPC9zdHJvbmc+XFxcIn1mdW5jdGlvbiBnZXRUaXRsZVRleHQoZSl7cmV0dXJuIGdldFN0cm9uZ1RleHQoZSl9ZnVuY3Rpb24gZ2V0Q29sb3JUZXh0KGUsdCl7cmV0dXJuJzxmb250IGNvbG9yPVxcXCInK3QrJ1xcXCI+JytlK1xcXCI8L2ZvbnQ+XFxcIn1mdW5jdGlvbiBnZXRHcmV5VGV4dChlKXtyZXR1cm4gZ2V0Q29sb3JUZXh0KGUsXFxcImdyZXlcXFwiKX1mdW5jdGlvbiBnZXRBdXRob3JUZXh0KGUpe3JldHVybiBnZXRDb2xvclRleHQoZSx1c2VyQ29sb3IpfWZ1bmN0aW9uIGdldENvZGVUZXh0KGUpe3JldHVyblxcXCI8Y29kZT5cXFwiK2UrXFxcIjwvY29kZT5cXFwifWZ1bmN0aW9uIGdldEJsb2NrcXVvdGVUZXh0KGUpe3JldHVyblxcXCI8YmxvY2txdW90ZT5cXFwiK2UrXFxcIjwvYmxvY2txdW90ZT5cXFwifWZ1bmN0aW9uIGdldEFkZHJlc3NUYWcoZSx0KXtyZXR1cm4nPGEgaHJlZj1cXFwiJytlKydcXFwiPicrdCtcXFwiPC9hPlxcXCJ9ZnVuY3Rpb24gZ2V0Q29tbWVudE1ldGEoZSl7cmV0dXJuIGdldFNtYWxsVGV4dChlKX1jb250ZW50VGlwcz1cXFwiXFxcIj09PSh2YWx1ZUluTWFwPWdldFZhcihcXFwieGlhY2h1X2NvbnRlbnRUaXBzXFxcIikpP2NvbnRlbnRUaXBzOnZhbHVlSW5NYXAsU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlV2l0aENhbGxiYWNrPWZ1bmN0aW9uKGUsdCxsKXtsZXQgYT10aGlzO3JldHVybiBudWxsIT1sJiYoYT1sKHRoaXMsZSx0KSksYX07bGV0IGltZ0Vycm9yPSc8Zm9udCBjb2xvcj1cXFwiZ3JleVxcXCI+5Zu+54mH5pqC5pe25peg5rOV5pi+56S677yM6Iul6KaB5p+l55yL6K+3PGEgaHJlZj1cXFwiJytNWV9VUkwrJ1xcXCI+6K6/6Zeu5Y6f5paHPC9hPjwvZm9udD4nO2Z1bmN0aW9uIGltZ1RhZyhlLHQsbCl7ITA9PT0vKHdcXFxcXFxcXC8oXFxcXFxcXFxkKylcXFxcXFxcXC9pbnRlcmxhY2UpLy50ZXN0KGwpJiYodD10LnJlcGxhY2UoUmVnRXhwLiQxLFxcXCJ3L1xcXCIraW1nV2lkdGgrXFxcIi9pbnRlcmxhY2VcXFwiKSk7bGV0IGE9dCxyPVxcXCJcXFwiPT09bD9pbWdFcnJvcjonPGEgaHJlZj1cXFwiJytsKydcXFwiPicrKDE9PT1oaWRlSW1nP1xcXCJb54K55Ye75p+l55yL5aSn5Zu+XVxcXCI6XFxcIuWbvueJh+aXoOazleWKoOi9ve+8n+eCueaIkeivleivlX5cXFwiKStcXFwiPC9hPlxcXCI7cmV0dXJuIHNob3dGdWxsSW1nVGlwcyYmKGErPVxcXCI8YnI+XFxcIitnZXRTbWFsbFRleHQocikpLGhpZGVJbWcmJihhPXIpLGUucmVwbGFjZSgvPGltZyBkYXRhLXY+L2csYSl9ZnVuY3Rpb24gaW1nVGFnUmVwbGFjZW1lbnQyKGUsdCxsKXtsZXQgYT1lLm1hdGNoKHQpLHI9ZTtpZihudWxsIT1hKWZvcihsZXQgZT0wO2U8YS5sZW5ndGg7ZSsrKXtsZXQgdD1hW2VdOy8oPGltZyAoc3JjfGRhdGEtc3JjKT1cXFwiKC4qPylcXFwiKFtcXFxcXFxcXHNcXFxcXFxcXFNdKj8pPikvLnRlc3QodCk7bGV0IG89UmVnRXhwLiQzO1xcXCJcXFwiIT09byYmKHI9aW1nVGFnKHI9ci5yZXBsYWNlKHQsbCksUmVnRXhwLiQxLG8pKX1yZXR1cm4gcn10cnl7bGV0IGU9cGFyc2VEb21Gb3JIdG1sKGh0bWwsXFxcIi5tYWluLXBhbmVsJiZIdG1sXFxcIik7dHJ5e2xldCB0PWdldEJpZ1RleHQoZ2V0U3Ryb25nVGV4dChwYXJzZURvbUZvckh0bWwoZSxcXFwiaDEmJlRleHRcXFwiKSkpK1xcXCIgXFxcIitnZXRTbWFsbFRleHQoZ2V0QWRkcmVzc1RhZyhNWV9VUkwsXFxcIlvmn6XnnIvljp/mloddXFxcIikpLGw9XFxcIlxcXCI7dHJ5e2xldCBlPXBhcnNlRG9tRm9ySHRtbChodG1sLFxcXCIucmVjaXBlLXRhZ3MmJkh0bWxcXFwiKSx0PXBhcnNlRG9tRm9yQXJyYXkoZSxcXFwiLnJlY2lwZS1jYXRzJiZhXFxcIik7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspe2xldCBhPXRbZV07bCs9Z2V0Q29kZVRleHQocGFyc2VEb21Gb3JIdG1sKGEsXFxcIlRleHRcXFwiKSl9fWNhdGNoKGUpe31sPVxcXCJcXFwiPT09bD9cXFwiPGJyPlxcXCIrZ2V0Q29kZVRleHQoXFxcIuaaguaXoOWIhuexu1xcXCIpOlxcXCI8YnI+XFxcIitsLGQucHVzaCh7dGl0bGU6dCtsfSksZC5wdXNoKHtjb2xfdHlwZTpcXFwibGluZVxcXCJ9KX1jYXRjaChlKXt9dHJ5e2xldCB0PWdldEF1dGhvclRleHQoXFxcIuS9nOiAhe+8mlxcXCIrcGFyc2VEb21Gb3JIdG1sKGUsXFxcIi5hdXRob3ImJlRleHRcXFwiKSksbD1cXFwiXFxcIjt0cnl7bD1cXFwiPGJyPlxcXCIrcGFyc2VEb21Gb3JIdG1sKGUsXFxcIi5kZXNjJiZIdG1sXFxcIil9Y2F0Y2goZSl7fWxldCBhPVxcXCJcXFwiO3RyeXtsZXQgZT1wYXJzZURvbUZvckh0bWwoaHRtbCxcXFwiLnJlY2lwZS1zaG93JiZIdG1sXFxcIiksdD1wYXJzZURvbUZvckh0bWwoZSxcXFwiaWZyYW1lJiZzcmNcXFwiKSxsPWZldGNoKHQse30pO2E9Z2V0QWRkcmVzc1RhZyhwYXJzZURvbUZvckh0bWwobCxcXFwidmlkZW8mJnNyY1xcXCIpLFxcXCLmnKzluJblkKvop4bpopHvvIzngrnmiJHmn6XnnIvvvZ5cXFwiKX1jYXRjaChlKXt9bGV0IHI9XFxcIlxcXCI7dHJ5e2xldCB0PXBhcnNlRG9tRm9ySHRtbChlLFxcXCIuaW5ncyYmSHRtbFxcXCIpLGw9cGFyc2VEb21Gb3JBcnJheSh0LFxcXCJ0YWJsZSYmdHJcXFwiKTtmb3IobGV0IGU9MDtlPGwubGVuZ3RoO2UrKyl7bGV0IHQ9bFtlXTsvPHRkIGNsYXNzPVxcXCJuYW1lXFxcIj4oW1xcXFxcXFxcc1xcXFxcXFxcU10qPyk8XFxcXFxcXFwvdGQ+Ly50ZXN0KHQpO2xldCBhPVJlZ0V4cC4kMTtpZihcXFwiXFxcIiE9PWEpe2E9Z2V0Q29sb3JUZXh0KHBhcnNlRG9tRm9ySHRtbChhLFxcXCJUZXh0XFxcIiksaW5nTmFtZUNvbG9yKSwvPHRkIGNsYXNzPVxcXCJ1bml0XFxcIj4oW1xcXFxcXFxcc1xcXFxcXFxcU10qPyk8XFxcXFxcXFwvdGQ+Ly50ZXN0KHQpO2xldCBvPVJlZ0V4cC4kMSxuPWErXFxcIiBcXFwiKyhvPWdldENvbG9yVGV4dChvPT09YT9cXFwi5pyq55+lXFxcIjpvLGluZ1VuaXRDb2xvcikpO3IrPW49ZT09PWwubGVuZ3RoLTE/bjpuKygxPT09aW5nc01vZGU/XFxcIjxicj5cXFwiOlxcXCLjgIFcXFwiKX19cj1nZXRCaWdUZXh0KGdldFRpdGxlVGV4dChcXFwi55So5paZXFxcIikpK1xcXCI8YnI+XFxcIityfWNhdGNoKGUpe31pZihsPTE9PT1zaG93RGVzYz9sOlxcXCJcXFwiLG1vZGVsX2xpbmVfaGVpZ2h0PjApe2QucHVzaCh7dGl0bGU6Z2V0QmxvY2txdW90ZVRleHQodCtsKSsoXFxcIlxcXCI9PT1hP2dldEdyZXlUZXh0KGNvbnRlbnRUaXBzKTphK1xcXCI8YnI+XFxcIil9KTtmb3IobGV0IGU9MDtlPG1vZGVsX2xpbmVfaGVpZ2h0O2UrKylkLnB1c2goe2NvbF90eXBlOlxcXCJsaW5lX2JsYW5rXFxcIn0pO2QucHVzaCh7dGl0bGU6cn0pO2ZvcihsZXQgZT0wO2U8bW9kZWxfbGluZV9oZWlnaHQ7ZSsrKWQucHVzaCh7Y29sX3R5cGU6XFxcImxpbmVfYmxhbmtcXFwifSl9ZWxzZSBkLnB1c2goe3RpdGxlOmdldEJsb2NrcXVvdGVUZXh0KHQrbCkrKFxcXCJcXFwiPT09YT9cXFwiXFxcIjphK1xcXCI8YnI+PGJyPlxcXCIpK3J9KX1jYXRjaChlKXt9dHJ5e2xldCB0PWdldEJpZ1RleHQoZ2V0VGl0bGVUZXh0KFxcXCJcXFwiK3BhcnNlRG9tRm9ySHRtbChlLFxcXCIjc3RlcHMmJlRleHRcXFwiKSkpLGw9cGFyc2VEb21Gb3JBcnJheShlLFxcXCIuc3RlcHMmJi5jb250YWluZXJcXFwiKTttdWx0aVN0ZXBNb2RlbCYmbW9kZWxfbGluZV9oZWlnaHQ+MCYmZC5wdXNoKHt0aXRsZTp0fSk7bGV0IGE9XFxcIlxcXCI7Zm9yKGxldCBlPTA7ZTxsLmxlbmd0aDtlKyspe2xldCB0PXBhcnNlRG9tRm9ySHRtbChsW2VdLFxcXCIuY29udGFpbmVyJiZIdG1sXFxcIik7dD1nZXRTdHJvbmdUZXh0KFxcXCLmraXpqqRcXFwiKyhlKzEpK1xcXCI8YnI+XFxcIikrdC5yZXBsYWNlKC88XFxcXFxcXFwvcD4gPGltZyBzcmM9L2csXFxcIjxicj48aW1nIHNyYz1cXFwiKS5yZXBsYWNlV2l0aENhbGxiYWNrKC8oPGltZyAoc3JjfGRhdGEtc3JjKT1cXFwiKC4qPylcXFwiKFtcXFxcXFxcXHNcXFxcXFxcXFNdKj8pPikvZyxcXFwiPGltZyBkYXRhLXY+XFxcIixpbWdUYWdSZXBsYWNlbWVudDIpLnJlcGxhY2UoLyg8cCBjbGFzcz1cXFwidGV4dFxcXCIgc3R5bGU9XFxcIi4qP1xcXCI+KXwoPFxcXFxcXFxcL3A+KS8sXFxcIlxcXCIpLG11bHRpU3RlcE1vZGVsJiZtb2RlbF9saW5lX2hlaWdodD4wP2QucHVzaCh7dGl0bGU6dH0pOmErPVxcXCI8YnI+PGJyPlxcXCIrdH1tdWx0aVN0ZXBNb2RlbCYmbW9kZWxfbGluZV9oZWlnaHQ+MHx8ZC5wdXNoKHt0aXRsZTp0K2F9KTtmb3IobGV0IGU9MDtlPG1vZGVsX2xpbmVfaGVpZ2h0O2UrKylkLnB1c2goe2NvbF90eXBlOlxcXCJsaW5lX2JsYW5rXFxcIn0pO2xldCByPVxcXCJcXFwiO3RyeXtsZXQgdD1wYXJzZURvbUZvckh0bWwoZSxcXFwiLnRpcC1jb250YWluZXImJkh0bWxcXFwiKSxsPWdldEJpZ1RleHQoZ2V0VGl0bGVUZXh0KHBhcnNlRG9tRm9ySHRtbCh0LFxcXCJoMiYmVGV4dFxcXCIpKSk7dGlwc0NvbnRlbnQ9XFxcIjxicj5cXFwiK3BhcnNlRG9tRm9ySHRtbCh0LFxcXCIudGlwJiZIdG1sXFxcIikscj1nZXRDb2xvclRleHQobCt0aXBzQ29udGVudCx0aXBzQ29sb3IpLGQucHVzaCh7dGl0bGU6cn0pO2ZvcihsZXQgZT0wO2U8bW9kZWxfbGluZV9oZWlnaHQ7ZSsrKWQucHVzaCh7Y29sX3R5cGU6XFxcImxpbmVfYmxhbmtcXFwifSl9Y2F0Y2goZSl7fX1jYXRjaChlKXt9dHJ5e2xldCBlPXBhcnNlRG9tRm9ySHRtbChodG1sLFxcXCIucmVjaXBlLXN0YXRzJiZIdG1sXFxcIiksdD1nZXRTbWFsbFRleHQoZ2V0R3JleVRleHQocGFyc2VEb21Gb3JIdG1sKGUsXFxcIi50aW1lJiZUZXh0XFxcIikrXFxcIjxicj5cXFwiK3BhcnNlRG9tRm9ySHRtbChlLFxcXCIucHYmJlRleHRcXFwiKStcXFwiPGJyPlxcXCIrcGFyc2VEb21Gb3JIdG1sKGUsXFxcIi5jb3B5cmlnaHQmJlRleHRcXFwiKSkpO2QucHVzaCh7dGl0bGU6dH0pfWNhdGNoKGUpe310cnl7bGV0IGU9cGFyc2VEb21Gb3JIdG1sKGh0bWwsXFxcIi5wYWdlLWJvdHRvbS1vdXRlciYmLnBhZ2UtY29udGFpbmVyJiZIdG1sXFxcIiksdD1nZXRCaWdUZXh0KGdldFRpdGxlVGV4dChwYXJzZURvbUZvckh0bWwoZSxcXFwiaDImJlRleHRcXFwiKSkpLGw9cGFyc2VEb21Gb3JBcnJheShlLFxcXCIucXVlc3Rpb24tbGlzdCYmLnJlY2lwZS1xdWVzaW9ucy1jb250ZW50XFxcIik7bC5sZW5ndGg+MCYmKGQucHVzaCh7Y29sX3R5cGU6XFxcImxpbmVfYmxhbmtcXFwifSksZC5wdXNoKHt0aXRsZTp0fSkpO2xldCBhPVxcXCJcXFwiO2ZvcihsZXQgZT0wO2U8bC5sZW5ndGg7ZSsrKXtsZXQgdD1wYXJzZURvbUZvckFycmF5KGxbZV0sXFxcImxpJiYuYXZhdGFyLXJpZ2h0LTJcXFwiKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKyl7bGV0IGw9XFxcIlxcXCIscj1cXFwiXFxcIjtpZih0W2VdLmluZGV4T2YoXFxcIui1nlxcXCIpPi0xKXtsZXQgYT1nZXRBdXRob3JUZXh0KHBhcnNlRG9tRm9ySHRtbCh0W2VdLFxcXCIuaW5mbyYmYSYmVGV4dFxcXCIpKSxyPVxcXCJcXFwiOyEwPT09Lyg8c3BhbiBjbGFzcz1cXFwibm9ybWFsLWZvbnQgZ3JheS1mb250IGFsaWduLWJhc2VsaW5lXFxcIj5bXFxcXFxcXFxzXFxcXFxcXFxTXSo/PFxcXFxcXFxcL3NwYW4+KS8udGVzdCh0W2VdKSYmKHI9Z2V0R3JleVRleHQoUmVnRXhwLiQxKSk7bGV0IG89Z2V0Q29tbWVudE1ldGEoXFxcIjxicj5cXFwiK2Ercik7bD1wYXJzZURvbUZvckh0bWwodFtlXSxcXFwiLnJpZ2h0LWJvdHRvbSYmSHRtbFxcXCIpK299aWYodFtlXS5pbmRleE9mKFxcXCLkvZzogIXlm57lpI1cXFwiKT4tMSl0cnl7bGV0IGw9Z2V0QXV0aG9yVGV4dChcXFwi5L2c6ICF5Zue5aSNXFxcIiksYT1cXFwiXFxcIjshMD09PS8oPHNwYW4gY2xhc3M9XFxcIm5vcm1hbC1mb250IGdyYXktZm9udCBhbGlnbi1iYXNlbGluZVxcXCI+W1xcXFxcXFxcc1xcXFxcXFxcU10qPzxcXFxcXFxcXC9zcGFuPikvLnRlc3QodFtlXSkmJihhPWdldEdyZXlUZXh0KFJlZ0V4cC4kMSkpO2xldCBvPWdldENvbW1lbnRNZXRhKFxcXCI8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7XFxcIitsK2EpO3I9XFxcIjxzcGFuPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5cXFwiK3BhcnNlRG9tRm9ySHRtbCh0W2VdLFxcXCIucmlnaHQtYm90dG9tJiZIdG1sXFxcIikrb31jYXRjaChlKXt9YT1sK3IsZC5wdXNoKHt0aXRsZTphLnJlcGxhY2UoLzxkaXYgY2xhc3M9XFxcInJlY2lwZS1xdWVzdGlvbnMtZGlnZ1xcXCI+L2csXFxcIlxcXCIpfSl9ZC5wdXNoKHtjb2xfdHlwZTpcXFwibGluZVxcXCJ9KX19Y2F0Y2goZSl7fX1jYXRjaChlKXt9cmVzLmRhdGE9ZCxzZXRIb21lUmVzdWx0KHJlcyk7YDtcXG4gICAgICAgIGlmKHBhZ2UgPT09IDEpIHtcXG4gICAgICAgICAgICAvKipcXG4gICAgICAgICAgICAgKiBoZWFkZXJcXG4gICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICBsZXQgaGVhZGVyVGl0bGUgPSBnZXRCaWdUZXh0KGdldFN0cm9uZ1RleHQocGFyc2VEb21Gb3JIdG1sKG1haW5IdG1sLCAnaDEmJlRleHQnKSkpXFxuICAgICAgICAgICAgICAgICAgICArICcgJyArIGdldFNtYWxsVGV4dChnZXRBZGRyZXNzVGFnKE1ZX1VSTCwgJ1vmn6XnnIvljp/mloddJykpO1xcbiAgICAgICAgICAgICAgICBsZXQgaGVhZGVySHRtbCA9IHBhcnNlRG9tRm9ySHRtbChtYWluSHRtbCwgJy5ybC1zdW1tYXJ5JiZIdG1sJyk7XFxuICAgICAgICAgICAgICAgIGxldCBjb2xsZWN0aW9uQ291bnQgPSAnPGJyPicgKyBnZXRTbWFsbFRleHQocGFyc2VEb21Gb3JIdG1sKGhlYWRlckh0bWwsICcuc3RhdHMmJlRleHQnKSk7XFxuICAgICAgICAgICAgICAgIGxldCB0aW1lID0gJyAnICsgZ2V0U21hbGxUZXh0KGdldEdyZXlUZXh0KHBhcnNlRG9tRm9ySHRtbChoZWFkZXJIdG1sLCAnLnRpbWUmJlRleHQnKSkpO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhlYWRlclRpdGxlICsgY29sbGVjdGlvbkNvdW50ICsgdGltZVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZSdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGxldCBhdXRob3IgPSBnZXRBdXRob3JUZXh0KHBhcnNlRG9tRm9ySHRtbChoZWFkZXJIdG1sLCAnLmF2YXRhci1saW5rJiZUZXh0JykpO1xcbiAgICAgICAgICAgICAgICBsZXQgZGVzYyA9ICc8YnI+JyArIHBhcnNlRG9tRm9ySHRtbChoZWFkZXJIdG1sLCAnLmRlc2MmJlRleHQnKTtcXG4gICAgICAgICAgICAgICAgbGV0IG1ldGEgPSBnZXRCbG9ja3F1b3RlVGV4dChhdXRob3IgKyBkZXNjKTtcXG4gICAgICAgICAgICAgICAgaWYgKG1vZGVsX2xpbmVfaGVpZ2h0ID4gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbWV0YSArIGdldEdyZXlUZXh0KGNvbnRlbnRUaXBzKVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1vZGVsX2xpbmVfaGVpZ2h0OyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBtZXRhXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxcbiAgICAgICAgfVxcbiAgICAgICAgLyoqXFxuICAgICAgICAgKiDmraPmlodcXG4gICAgICAgICAqL1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBsZXQgY29udGVudHNIdG1sID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsICcucmwtcmVjaXBlcyYmSHRtbCcpO1xcbiAgICAgICAgICAgIGlmKHBhZ2UgPT09IDEpIHtcXG4gICAgICAgICAgICAgICAgbGV0IGNvbnRlbnRUaXRsZSA9IGdldEJpZ1RleHQocGFyc2VEb21Gb3JIdG1sKGNvbnRlbnRzSHRtbCwgJy5ibG9jay10aXRsZSYmVGV4dCcpKTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjb250ZW50VGl0bGVcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGxldCBjb250ZW50c0h0bWxBcnJheSA9IHBhcnNlRG9tRm9yQXJyYXkoY29udGVudHNIdG1sLCAnLm5vcm1hbC1yZWNpcGUtbGlzdCYmbGknKTtcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRlbnRzSHRtbEFycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIGxldCBjb250ZW50SXRlbUh0bWwgPSBjb250ZW50c0h0bWxBcnJheVtpXTtcXG4gICAgICAgICAgICAgICAgbGV0IGNvdmVyID0gcGFyc2VEb21Gb3JIdG1sKGNvbnRlbnRJdGVtSHRtbCwgJy5jb3ZlciYmaW1nJiZkYXRhLXNyYycpO1xcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBwYXJzZURvbUZvckh0bWwoY29udGVudEl0ZW1IdG1sLCAnLmluZm8mJi5uYW1lJiZUZXh0Jyk7XFxuICAgICAgICAgICAgICAgIGxldCBkZXNjID0gcGFyc2VEb21Gb3JIdG1sKGNvbnRlbnRJdGVtSHRtbCwgJy5zdGF0cyYmVGV4dCcpO1xcbiAgICAgICAgICAgICAgICBsZXQgdXJsID0gcGFyc2VEb20oY29udGVudEl0ZW1IdG1sLCAnYSYmaHJlZicpO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgcGljX3VybDogY292ZXIsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBkZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwgKyBydWxlLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xJ1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgLyoqXFxuICAgICAgICAgKiBoZWFkZXJcXG4gICAgICAgICAqL1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBsZXQgaGVhZGVyVGl0bGUgPSBnZXRCaWdUZXh0KGdldFN0cm9uZ1RleHQocGFyc2VEb21Gb3JIdG1sKG1haW5IdG1sLCAnaDEmJlRleHQnKSkpXFxuICAgICAgICAgICAgICAgICsgJyAnICsgZ2V0U21hbGxUZXh0KGdldEFkZHJlc3NUYWcoTVlfVVJMLCAnW+afpeeci+WOn+aWh10nKSk7XFxuICAgICAgICAgICAgbGV0IHRhZ3MgPSAnJztcXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICBsZXQgaGVhZGVyVGFnc0h0bWwgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5yZWNpcGUtdGFncyYmSHRtbCcpO1xcbiAgICAgICAgICAgICAgICBsZXQgdGFnc0h0bWxBcnJheSA9IHBhcnNlRG9tRm9yQXJyYXkoaGVhZGVyVGFnc0h0bWwsICcucmVjaXBlLWNhdHMmJmEnKTtcXG4gICAgICAgICAgICAgICAgLy8gc2V0RXJyb3IoSlNPTi5zdHJpbmdpZnkodGFnc0h0bWxBcnJheSkpO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhZ3NIdG1sQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB0YWdIdG1sID0gdGFnc0h0bWxBcnJheVtpXTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB0YWcgPSBnZXRDb2RlVGV4dChwYXJzZURvbUZvckh0bWwodGFnSHRtbCwgJ1RleHQnKSk7XFxuICAgICAgICAgICAgICAgICAgICB0YWdzICs9IHRhZztcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAvLyBzZXRFcnJvcih0YWdzKTtcXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7IH1cXG4gICAgICAgICAgICB0YWdzID0gdGFncyA9PT0gJycgPyAnPGJyPicgKyBnZXRDb2RlVGV4dCgn5pqC5peg5YiG57G7JykgOiAnPGJyPicgKyB0YWdzO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBoZWFkZXJUaXRsZSArIHRhZ3NcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGNhdGNoIChlKSB7IH1cXG5cXG4gICAgICAgIC8qKlxcbiAgICAgICAgICog5o+P6L+wXFxuICAgICAgICAgKi9cXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgbGV0IGF1dGhvciA9IGdldEF1dGhvclRleHQoJ+S9nOiAhe+8micgKyBwYXJzZURvbUZvckh0bWwobWFpbkh0bWwsICcuYXV0aG9yJiZUZXh0JykpO1xcbiAgICAgICAgICAgIGxldCBkZXNjID0gJyc7XFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgZGVzYyA9ICc8YnI+JyArIHBhcnNlRG9tRm9ySHRtbChtYWluSHRtbCwgJy5kZXNjJiZIdG1sJyk7XFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyB9XFxuXFxuICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICog5bGV56S6XFxuICAgICAgICAgICAgICovXFxuICAgICAgICAgICAgbGV0IHNob3dWaWRlbyA9ICcnO1xcbiAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgIGxldCBzaG93SHRtbCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLnJlY2lwZS1zaG93JiZIdG1sJyk7XFxuICAgICAgICAgICAgICAgIGxldCBpZnJhbWVWaWRlb1VybCA9IHBhcnNlRG9tRm9ySHRtbChzaG93SHRtbCwgJ2lmcmFtZSYmc3JjJyk7XFxuICAgICAgICAgICAgICAgIC8vIHNldEVycm9yKGlmcmFtZVZpZGVvVXJsKTtcXG4gICAgICAgICAgICAgICAgbGV0IGlmcmFtZUh0bWwgPSBmZXRjaChpZnJhbWVWaWRlb1VybCwge30pO1xcbiAgICAgICAgICAgICAgICAvLyBzZXRFcnJvcihpZnJhbWVIdG1sKTtcXG4gICAgICAgICAgICAgICAgbGV0IHZpZGVvVXJsID0gcGFyc2VEb21Gb3JIdG1sKGlmcmFtZUh0bWwsICd2aWRlbyYmc3JjJyk7XFxuICAgICAgICAgICAgICAgIHNob3dWaWRlbyA9IGdldEFkZHJlc3NUYWcodmlkZW9VcmwsICfmnKzluJblkKvop4bpopHvvIzngrnmiJHmn6XnnIvvvZ4nKTtcXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7IH1cXG5cXG4gICAgICAgICAgICBsZXQgaW5ncyA9ICcnO1xcbiAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAgICAgKiDnlKjmlplcXG4gICAgICAgICAgICAgICAgICovXFxuICAgICAgICAgICAgICAgIGxldCBpbmdzSHRtbCA9IHBhcnNlRG9tRm9ySHRtbChtYWluSHRtbCwgJy5pbmdzJiZIdG1sJyk7XFxuICAgICAgICAgICAgICAgIGxldCBpbmdzSHRtbEFycmF5ID0gcGFyc2VEb21Gb3JBcnJheShpbmdzSHRtbCwgJ3RhYmxlJiZ0cicpO1xcbiAgICAgICAgICAgICAgICAvLyBzZXRFcnJvcihKU09OLnN0cmluZ2lmeShpbmdzSHRtbEFycmF5KSk7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5nc0h0bWxBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGluZ0h0bWwgPSBpbmdzSHRtbEFycmF5W2ldO1xcbiAgICAgICAgICAgICAgICAgICAgLzx0ZCBjbGFzcz1cXFwibmFtZVxcXCI+KFtcXFxcc1xcXFxTXSo/KTxcXFxcL3RkPi8udGVzdChpbmdIdG1sKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBpbmdOYW1lID0gUmVnRXhwLiQxO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZ05hbWUgIT09ICcnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5nTmFtZSA9IGdldENvbG9yVGV4dChwYXJzZURvbUZvckh0bWwoaW5nTmFtZSwgJ1RleHQnKSwgaW5nTmFtZUNvbG9yKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAvPHRkIGNsYXNzPVxcXCJ1bml0XFxcIj4oW1xcXFxzXFxcXFNdKj8pPFxcXFwvdGQ+Ly50ZXN0KGluZ0h0bWwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmdVbml0ID0gUmVnRXhwLiQxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZ1VuaXQgPSBnZXRDb2xvclRleHQoKChpbmdVbml0ID09PSBpbmdOYW1lKSA/ICfmnKrnn6UnIDogaW5nVW5pdCksIGluZ1VuaXRDb2xvcik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZyA9IGluZ05hbWUgKyAnICcgKyBpbmdVbml0O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZyA9IGkgPT09IChpbmdzSHRtbEFycmF5Lmxlbmd0aCAtIDEpID8gaW5nIDogaW5nICsgKGluZ3NNb2RlID09PSAxID8gJzxicj4nIDogJ+OAgScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZ3MgKz0gaW5nXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaW5ncyA9IChnZXRCaWdUZXh0KGdldFRpdGxlVGV4dCgn55So5paZJykpICsgJzxicj4nKSArIGluZ3M7XFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyB9XFxuICAgICAgICAgICAgZGVzYyA9IHNob3dEZXNjID09PSAxID8gZGVzYyA6ICcnO1xcbiAgICAgICAgICAgIGlmIChtb2RlbF9saW5lX2hlaWdodCA+IDApIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRCbG9ja3F1b3RlVGV4dChhdXRob3IgKyBkZXNjKSArIChzaG93VmlkZW8gPT09ICcnID8gZ2V0R3JleVRleHQoY29udGVudFRpcHMpIDogc2hvd1ZpZGVvICsgJzxicj4nKVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IG1vZGVsX2xpbmVfaGVpZ2h0OyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbmdzXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbW9kZWxfbGluZV9oZWlnaHQ7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogZ2V0QmxvY2txdW90ZVRleHQoYXV0aG9yICsgZGVzYykgKyAoc2hvd1ZpZGVvID09PSAnJyA/ICcnIDogc2hvd1ZpZGVvICsgJzxicj48YnI+JykgKyBpbmdzXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxcblxcbiAgICAgICAgLyoqXFxuICAgICAgICAgKiDmraPmlodcXG4gICAgICAgICAqL1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBsZXQgc3RlcHNUaXRsZSA9IGdldEJpZ1RleHQoZ2V0VGl0bGVUZXh0KCcnICsgIHBhcnNlRG9tRm9ySHRtbChtYWluSHRtbCwgJyNzdGVwcyYmVGV4dCcpICsgJycpKTtcXG4gICAgICAgICAgICBsZXQgc3RlcHNIdG1sQXJyYXkgPSBwYXJzZURvbUZvckFycmF5KG1haW5IdG1sLCAnLnN0ZXBzJiYuY29udGFpbmVyJyk7XFxuICAgICAgICAgICAgaWYobXVsdGlTdGVwTW9kZWwgJiYgbW9kZWxfbGluZV9oZWlnaHQgPiAwKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3RlcHNUaXRsZVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgbGV0IHN0ZXBzID0gJyc7XFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdGVwc0h0bWxBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICBsZXQgc3RlcCA9IHBhcnNlRG9tRm9ySHRtbChzdGVwc0h0bWxBcnJheVtpXSwgJy5jb250YWluZXImJkh0bWwnKTtcXG4gICAgICAgICAgICAgICAgc3RlcCA9IGdldFN0cm9uZ1RleHQoJ+atpemqpCcgKyhpICsgMSkgKyAnPGJyPicpXFxuICAgICAgICAgICAgICAgICAgICArIHN0ZXBcXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvPFxcXFwvcD4gPGltZyBzcmM9L2csICc8YnI+PGltZyBzcmM9JylcXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZVdpdGhDYWxsYmFjaygvKDxpbWcgKHNyY3xkYXRhLXNyYyk9XFxcIiguKj8pXFxcIihbXFxcXHNcXFxcU10qPyk+KS9nLCBcXFwiPGltZyBkYXRhLXY+XFxcIiwgaW1nVGFnUmVwbGFjZW1lbnQyKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oPHAgY2xhc3M9XFxcInRleHRcXFwiIHN0eWxlPVxcXCIuKj9cXFwiPil8KDxcXFxcL3A+KS8sICcnKTtcXG4gICAgICAgICAgICAgICAgaWYobXVsdGlTdGVwTW9kZWwgJiYgbW9kZWxfbGluZV9oZWlnaHQgPiAwKSB7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdGVwXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgc3RlcHMgKz0gJzxicj48YnI+JyArIHN0ZXA7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKCEobXVsdGlTdGVwTW9kZWwgJiYgbW9kZWxfbGluZV9oZWlnaHQgPiAwKSkge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHN0ZXBzVGl0bGUgKyBzdGVwc1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IG1vZGVsX2xpbmVfaGVpZ2h0OyBpKyspIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAqIFRpcHNcXG4gICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBsZXQgdGlwcyA9ICcnO1xcbiAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgIGxldCB0aXBzSHRtbCA9IHBhcnNlRG9tRm9ySHRtbChtYWluSHRtbCwgJy50aXAtY29udGFpbmVyJiZIdG1sJyk7XFxuICAgICAgICAgICAgICAgIGxldCB0aXBzVGl0bGUgPSBnZXRCaWdUZXh0KGdldFRpdGxlVGV4dChwYXJzZURvbUZvckh0bWwodGlwc0h0bWwsICdoMiYmVGV4dCcpKSk7XFxuICAgICAgICAgICAgICAgIHRpcHNDb250ZW50ID0gJzxicj4nICsgcGFyc2VEb21Gb3JIdG1sKHRpcHNIdG1sLCAnLnRpcCYmSHRtbCcpO1xcbiAgICAgICAgICAgICAgICB0aXBzID0gZ2V0Q29sb3JUZXh0KHRpcHNUaXRsZSArIHRpcHNDb250ZW50LCB0aXBzQ29sb3IpO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpcHNcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBtb2RlbF9saW5lX2hlaWdodDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBjYXRjaChlKSB7IH1cXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxcblxcbiAgICAgICAgLyoqXFxuICAgICAgICAgKiBmb290ZXJcXG4gICAgICAgICAqL1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBsZXQgZm9vdGVySHRtbCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLnJlY2lwZS1zdGF0cyYmSHRtbCcpO1xcbiAgICAgICAgICAgIGxldCB0aW1lID0gcGFyc2VEb21Gb3JIdG1sKGZvb3Rlckh0bWwsICcudGltZSYmVGV4dCcpO1xcbiAgICAgICAgICAgIGxldCBjb2xsZWN0aW9uQ291bnQgPSBwYXJzZURvbUZvckh0bWwoZm9vdGVySHRtbCwgJy5wdiYmVGV4dCcpO1xcbiAgICAgICAgICAgIGxldCBjb3B5cmlnaHQgPSBwYXJzZURvbUZvckh0bWwoZm9vdGVySHRtbCwgJy5jb3B5cmlnaHQmJlRleHQnKTtcXG4gICAgICAgICAgICBsZXQgZm9vdGVyID0gZ2V0U21hbGxUZXh0KGdldEdyZXlUZXh0KHRpbWUgKyAnPGJyPicgKyBjb2xsZWN0aW9uQ291bnQgKyAnPGJyPicgKyBjb3B5cmlnaHQpKVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBmb290ZXJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxcblxcbiAgICAgICAgLyoqXFxuICAgICAgICAgKiDor4TorrpcXG4gICAgICAgICAqL1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBsZXQgY29tbWVudEh0bWwgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5wYWdlLWJvdHRvbS1vdXRlciYmLnBhZ2UtY29udGFpbmVyJiZIdG1sJyk7XFxuICAgICAgICAgICAgbGV0IGNvbW1lbnRUaXRsZSA9IGdldEJpZ1RleHQoZ2V0VGl0bGVUZXh0KHBhcnNlRG9tRm9ySHRtbChjb21tZW50SHRtbCwgJ2gyJiZUZXh0JykpKTtcXG4gICAgICAgICAgICBsZXQgY29tbWVudHNIdG1sQXJyYXkgPSBwYXJzZURvbUZvckFycmF5KGNvbW1lbnRIdG1sLCAnLnF1ZXN0aW9uLWxpc3QmJi5yZWNpcGUtcXVlc2lvbnMtY29udGVudCcpO1xcbiAgICAgICAgICAgIGlmIChjb21tZW50c0h0bWxBcnJheS5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNvbW1lbnRUaXRsZVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgbGV0IGNvbW1lbnQgPSAnJztcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbW1lbnRzSHRtbEFycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIGxldCBjb21tZW50c0Jsb2NrSHRtbEFycmF5ID0gcGFyc2VEb21Gb3JBcnJheShjb21tZW50c0h0bWxBcnJheVtpXSwgJ2xpJiYuYXZhdGFyLXJpZ2h0LTInKTtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb21tZW50c0Jsb2NrSHRtbEFycmF5Lmxlbmd0aDsgaisrKSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVwbHlDb21tZW50ID0gJyc7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgYXV0aG9yQ29tbWVudCA9ICcnO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbW1lbnRzQmxvY2tIdG1sQXJyYXlbal0uaW5kZXhPZign6LWeJykgPiAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXBsaWVyID0gZ2V0QXV0aG9yVGV4dChwYXJzZURvbUZvckh0bWwoY29tbWVudHNCbG9ja0h0bWxBcnJheVtqXSwgJy5pbmZvJiZhJiZUZXh0JykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXBseV90aW1lID0gJyc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC8oPHNwYW4gY2xhc3M9XFxcIm5vcm1hbC1mb250IGdyYXktZm9udCBhbGlnbi1iYXNlbGluZVxcXCI+W1xcXFxzXFxcXFNdKj88XFxcXC9zcGFuPikvLnRlc3QoY29tbWVudHNCbG9ja0h0bWxBcnJheVtqXSkgPT09IHRydWUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlfdGltZSA9IGdldEdyZXlUZXh0KFJlZ0V4cC4kMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXBseV9tZXRhID0gZ2V0Q29tbWVudE1ldGEoJzxicj4nICsgcmVwbGllciArIHJlcGx5X3RpbWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXBseV9jb250ZW50ID0gcGFyc2VEb21Gb3JIdG1sKGNvbW1lbnRzQmxvY2tIdG1sQXJyYXlbal0sICcucmlnaHQtYm90dG9tJiZIdG1sJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDb21tZW50ID0gcmVwbHlfY29udGVudCArIHJlcGx5X21ldGE7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBpZiAoY29tbWVudHNCbG9ja0h0bWxBcnJheVtqXS5pbmRleE9mKCfkvZzogIXlm57lpI0nKSA+IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGF1dGhvciA9IGdldEF1dGhvclRleHQoJ+S9nOiAheWbnuWkjScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGltZSA9ICcnO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLyg8c3BhbiBjbGFzcz1cXFwibm9ybWFsLWZvbnQgZ3JheS1mb250IGFsaWduLWJhc2VsaW5lXFxcIj5bXFxcXHNcXFxcU10qPzxcXFxcL3NwYW4+KS8udGVzdChjb21tZW50c0Jsb2NrSHRtbEFycmF5W2pdKSA9PT0gdHJ1ZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZSA9IGdldEdyZXlUZXh0KFJlZ0V4cC4kMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1ldGEgPSBnZXRDb21tZW50TWV0YSgnPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgKyBhdXRob3IgKyB0aW1lKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbW1lbnRDb250ZW50ID0gJzxzcGFuPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj4nXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHBhcnNlRG9tRm9ySHRtbChjb21tZW50c0Jsb2NrSHRtbEFycmF5W2pdLCAnLnJpZ2h0LWJvdHRvbSYmSHRtbCcpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRob3JDb21tZW50ID0gY29tbWVudENvbnRlbnQgKyBtZXRhO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdXRob3JDb21tZW50ID0gJzxicj4nICsgYXV0aG9yQ29tbWVudDtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7IH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSByZXBseUNvbW1lbnQgKyBhdXRob3JDb21tZW50O1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogY29tbWVudC5yZXBsYWNlKC88ZGl2IGNsYXNzPVxcXCJyZWNpcGUtcXVlc3Rpb25zLWRpZ2dcXFwiPi9nLCAnJylcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxcbiAgICB9XFxufSBjYXRjaCAoZSkgeyAgfVxcblxcblxcbnJlcy5kYXRhID0gZDtcXG5zZXRIb21lUmVzdWx0KHJlcyk7XCIsXCJncm91cFwiOlwiXCIsXCJ1YVwiOlwicGNcIixcInByZVJ1bGVcIjpcIi8qKlxcbiAqIOaYr+WQpuW8gOWQr+S8quW8guatpeWKoOi9veaooeW8jyAxL+W8gOWQryAwL+S4jeW8gOWQr1xcbiAqXFxuICog5rOo5oSP77ya5LqM57qn5Lya5Y2h5Y+v5Lul5bCd6K+V5byA5ZCv6K+l6YCJ6aG577yM5L2G5Y+v6IO95a+86Ie05p+Q5Lqb5Zu+54mH5LiN5pi+56S6XFxuICovXFxubGV0IG11bHRpU3RlcE1vZGVsID0gMDtcXG4vLyDmmK/lkKbpmpDol4/lm77niYco55yB5rWB5qih5byPKSAxL+makOiXjyAwL+S4jemakOiXj1xcbmxldCBoaWRlSW1nID0gMDtcXG4vLyDlm77niYfotKjph4/vvIzpu5jorqQgMzAw77yM5o6o6I2QIDYwMCDmiJYgODAwXFxubGV0IGltZ1dpZHRoID0gNjAwO1xcbi8vIOaYr+WQpuaYvuekuueci+Wkp+WbvijpmLLmraLml6Dms5XliqDovb3lm77niYcpIDEv5pi+56S6IDAv5LiN5pi+56S6XFxubGV0IHNob3dGdWxsSW1nVGlwcyA9IDE7XFxuLy8g55So5oi36aKc6ImyXFxubGV0IHVzZXJDb2xvciA9IFxcXCIjMjk3OUZGXFxcIjtcXG4vLyDmmK/lkKbmmL7npLroj5znmoTmj4/ov7AgMS/mmL7npLogMC/kuI3mmL7npLpcXG5sZXQgc2hvd0Rlc2MgPSAxO1xcbi8vIOeUqOaWmeaooeWdl+aYvuekuuaWueW8jyAxL+WujOaVtOinhuWbviAwL+e8qeeVpeaooeW8j1xcbmxldCBpbmdzTW9kZSA9IDA7XFxuLy8g55So5paZ5ZCN6aKc6ImyXFxubGV0IGluZ05hbWVDb2xvciA9IFxcXCIjNDZjMjAwXFxcIjtcXG4vLyDnlKjmlpnph4/popzoibJcXG5sZXQgaW5nVW5pdENvbG9yID0gXFxcIiM3MDZhNmJcXFwiO1xcbi8vIOWwj+i0tOWjq+minOiJslxcbmxldCB0aXBzQ29sb3IgPSBcXFwiIzcwNmE2YlxcXCI7XFxuLy8g5qih5Z2X5LmL6Ze055qE6Ze06ZqUXFxubGV0IG1vZGVsX2xpbmVfaGVpZ2h0ID0gMTtcXG4vLyDmraPmlofmj5DnpLpcXG5sZXQgY29udGVudFRpcHMgPSAn5LiL5Y6o5oi/55qE5pe25YCZ5LiA5a6a6KaB5rOo5oSP5a6J5YWo5ZOm772eJyArICc8YnI+JztcXG5cXG5wdXRWYXIyKCd4aWFjaHVfbXVsdGlTdGVwTW9kZWwnLCBtdWx0aVN0ZXBNb2RlbC50b1N0cmluZygpKTtcXG5wdXRWYXIyKCd4aWFjaHVfaGlkZUltZycsIGhpZGVJbWcudG9TdHJpbmcoKSk7XFxucHV0VmFyMigneGlhY2h1X2ltZ1dpZHRoJywgaW1nV2lkdGgudG9TdHJpbmcoKSk7XFxucHV0VmFyMigneGlhY2h1X3Nob3dGdWxsSW1nVGlwcycsIHNob3dGdWxsSW1nVGlwcy50b1N0cmluZygpKTtcXG5wdXRWYXIyKCd4aWFjaHVfdXNlckNvbG9yJywgdXNlckNvbG9yKTtcXG5wdXRWYXIyKCd4aWFjaHVfc2hvd0Rlc2MnLCBzaG93RGVzYy50b1N0cmluZygpKTtcXG5wdXRWYXIyKCd4aWFjaHVfaW5nc01vZGUnLCBpbmdzTW9kZS50b1N0cmluZygpKTtcXG5wdXRWYXIyKCd4aWFjaHVfaW5nTmFtZUNvbG9yJywgaW5nTmFtZUNvbG9yKTtcXG5wdXRWYXIyKCd4aWFjaHVfaW5nVW5pdENvbG9yJywgaW5nVW5pdENvbG9yKTtcXG5wdXRWYXIyKCd4aWFjaHVfdGlwc0NvbG9yJywgdGlwc0NvbG9yKTtcXG5wdXRWYXIyKCd4aWFjaHVfbW9kZWxfbGluZV9oZWlnaHQnLCBtb2RlbF9saW5lX2hlaWdodC50b1N0cmluZygpKTtcXG5wdXRWYXIyKCd4aWFjaHVfY29udGVudFRpcHMnLCBjb250ZW50VGlwcyk7XCJ9IiwicGljVXJsIjoiaHR0cHM6Ly9pMi5jaHVpbWcuY29tL2MwOGM3YmY0M2RhNjRlODBhYzU1YzhlYWFmMTYzZDk4XzgxMHdfMTA4MGguanBnP2ltYWdlVmlldzIvMS93LzQzMC9oLzI3Mi9pbnRlcmxhY2UvMS9xLzkwIiwidGl0bGUiOiLlrrbluLjngrjpurvoirHvvIjogIHlvI/purvoirHvvIkifQ==
Add Comment
Please, Sign In to add comment