Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_快猫/红杏/含羞草/麻豆/AvPron/皇家会所/9sex/91TV/猫咪/小天鹅/破解VIP视频免费看#0@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICDlv6vnjKsv57qi5p2PL+WQq+e+nuiNiS/purvosYYvQXZQcm9uL+eah+WutuS8muaJgC85c2V4LzkxVFYv54yr5ZKqL+Wwj+Wkqem5hS/noLTop6NWSVDop4bpopHlhY3otLnnnIsKLy8gQG5hbWVzcGFjZSAgICBodHRwOi8vdGFtcGVybW9ua2V5Lm5ldC8KLy8gQHZlcnNpb24gICAgICAwLjM2Ci8vIEBkZXNjcmlwdGlvbiAg5p2l5LiN5Y+K6Kej6YeK5LqG77yM5b+r5LiK6L2m77yB77yB77yBCi8vIEBhdXRob3IgICAgICAgdzJmCgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi5rbWtrNzguY29tL3ZpZGVvQ29udGVudC8qCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qLmtta2s3OS5jb20vdmlkZW9Db250ZW50LyoKLy8gQG1hdGNoICAgICAgICBodHRwczovLyoua21razgwLmNvbS92aWRlb0NvbnRlbnQvKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi5rbWtrODEuY29tL3ZpZGVvQ29udGVudC8qCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qLmtta2s4Mi5jb20vdmlkZW9Db250ZW50LyoKLy8gQG1hdGNoICAgICAgICBodHRwczovLyoua21razgzLmNvbS92aWRlb0NvbnRlbnQvKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi92aWRlb0NvbnRlbnQvKgoKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovcGxheS92aWRlby8qCgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi5oeGFhODMuY29tLyoKLy8gQG1hdGNoICAgICAgICBodHRwczovLyouaHhhYTg0LmNvbS8qCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qLmh4YWE4NS5jb20vKgoKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovcGxheXZpZGVvLyoKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovbGl2ZS8qCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qL2xpdmUKCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly9tYWRvdS5iZXQvKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi5jb20vaW5kZXgKLy8gQG1hdGNoICAgICAgICBodHRwczovLyouY29tL25ldwovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi5jb20vY2hhbm5lbC92aWRlb0xpc3QqCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qLmNvbS90YWdzKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi5jb20vcmFua0xpc3QKLy8gQG1hdGNoICAgICAgICBodHRwczovL21hZG91LnR2LyoKCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qL3ZpZGVvcy8qCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qL2luZGV4L21vdmllL3BsYXkvaWQvKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8va2R0MjkuY29tLyoKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovdmlwL2luZGV4Lmh0bWwKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovdmlwL2xpc3QtKi5odG1sCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qL2luZGV4L2hvbWUuaHRtbAoKLy8gQG1hdGNoICAgICAgICBodHRwczovL3h0ZWZ2Lnh5ei8qCgovLyBAaWNvbiAgICAgICAgIGh0dHBzOi8vaW5kZXgubWFkb3UxOS50di9qc29uL2ljb24ucG5nCi8vIEBsaWNlbnNlICAgICAgTUlUCi8vIEBncmFudCBub25lCi8vID09L1VzZXJTY3JpcHQ9PQoKKGZ1bmN0aW9uICgpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvKiBub25lIOWmguaenOS4jeS9v+eUqCB1bnNhZmVXaW5kb3cg77yM5b+r54yr5omL5py656uv77yM5ZCr576e6I2JcGPnq6/kvJrmkq3mlL7lpLHotKXvvIzljp/lm6DmnKrnn6XjgIIKICAgIOWOn+WboO+8mumAmui/hyBAcmVxdWlyZSDliqDovb3nmoRobHPmj5DnpLrmib7kuI3liLDvvIzpgJrov4dpbXBvcnRfanPlr7zlhaVvayAqLwogICAgbGV0IGVycl9jbnQgPSAwOwoKICAgIGZ1bmN0aW9uIGltcG9ydF9qcyhzcmMpIHsKICAgICAgICBsZXQgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgc2NyaXB0LnNyYyA9IHNyYzsKICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7CiAgICB9CiAgICBpbXBvcnRfanMoImh0dHBzOi8vY2RuLnN0YXRpY2ZpbGUub3JnL2pxdWVyeS8xLjEwLjIvanF1ZXJ5Lm1pbi5qcyIpOwogICAgaW1wb3J0X2pzKCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9obHMuanMvMS4xLjUvaGxzLm1pbi5qcyIpOwogICAgbGV0IG5vdF9uZWVkX2RwbGF5ZXIgPSBsb2NhdGlvbi5ocmVmLm1hdGNoKCJodHRwczovL3RoZWF2Lio/LmNvbS92aWRlb3MvIikgIT0gbnVsbCB8fAogICAgICAgIGxvY2F0aW9uLmhyZWYubWF0Y2goImh0dHBzOi8vdGhlLio/LmZ1bi92aWRlb3MvIikgIT0gbnVsbCA7CiAgICBpZiAoIW5vdF9uZWVkX2RwbGF5ZXIpIHsKICAgICAgICBpbXBvcnRfanMoImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2RwbGF5ZXIvMS4yNi4wL0RQbGF5ZXIubWluLmpzIik7CiAgICB9CgogICAgbGV0IHRvZGF5ID0gbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoKTsKICAgIGxldCBtaW4gPSBuZXcgRGF0ZSgpLmdldE1pbnV0ZXMoKTsKICAgIGxldCBjaGF0ID0gYOacgOi/keaUr+S7mOWuneWPkee6ouWMheWKm+W6puW+iOWkp++8jOivt+Wkp+WutuaJq+eggemihue6ouWMheWQjuS4gOWumuimgeeUqOaOie+8jOS9oOeUqOS6huaIkeaJjeacieWlluWKse+8jOiEmuacrOWFjei0ue+8jOe7tOaKpOS4jeaYk++8jOWkmuiwouaUr+aMge+8gWA7CiAgICBmdW5jdGlvbiBzaG93X3N1cHBvcnRfYXV0aG9yKCkgewogICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJ0b2RheV9pc19zaG93IiwgdG9kYXkpOwogICAgICAgIHZhciBzZWNvbmRzTGVmdCA9IDEwOwogICAgICAgIHZhciBteWRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIG15ZGl2LmlubmVySFRNTCA9IGA8ZGl2IGlkPSJteV9hZGRfZGl6aGkzIiBzdHlsZT0icG9zaXRpb246IGZpeGVkO3otaW5kZXg6IDEwMDAwO3RvcDogMDtsZWZ0OiAwO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuOCk7Ij4KICAgICAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlO3RvcDogNTAlO2xlZnQ6IDUwJTt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTttYXgtd2lkdGg6IDkwJTttYXgtaGVpZ2h0OiA5MCU7Ij4KICAgICAgICAgICAgPHAgc3R5bGU9ImNvbG9yOnJlZDtmb250LXNpemU6MTRweCI+JHtjaGF0fe+8iCR7c2Vjb25kc0xlZnR9c+WQjuiHquWKqOWFs+mXre+8iTwvcD4KICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vaTIuMTAwMDI0Lnh5ei8yMDIyLzExLzIzL3Zsc2xtby53ZWJwIj48L2Rpdj48L2Rpdj5gOwogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImhlYWQiKS5hZnRlcihteWRpdik7CgogICAgICAgIHZhciBpbnRlcnZhbCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzZWNvbmRzTGVmdC0tOwogICAgICAgICAgICB2YXIgeHh4ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI215X2FkZF9kaXpoaTMgcCIpO2lmKHh4eCkgeHh4LmlubmVyVGV4dCA9IGAke2NoYXR977yIJHtzZWNvbmRzTGVmdH1z5ZCO6Ieq5Yqo5YWz6ZetKWA7CiAgICAgICAgICAgIGlmIChzZWNvbmRzTGVmdCA8PSAwKSB7CiAgICAgICAgICAgICAgICB2YXIgeXl5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI215X2FkZF9kaXpoaTMiKTsgaWYoeXl5KSB5eXkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh5eXkpOwogICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9LCAxMDAwKTsKICAgIH0KCiAgICAvKiDlh73mlbDlip/og73vvJrmmL7npLrop4bpopHlnLDlnYDvvIzlj4rmj5DnpLrkv6Hmga8gKi8KICAgIGZ1bmN0aW9uIHNob3dfdmlkZW9VcmwodmlkZW9VcmwsZGl6aGksIGZsYWcgPSAwKSB7CiAgICAgICAgdmFyIHh4eCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNteV9hZGRfZGl6aGkiKTsKICAgICAgICBpZihmbGFnPT0wICYmIHh4eCl7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBpZiAoeHh4KSB4eHgucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh4eHgpOwogICAgICAgIHZhciBteWRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIG15ZGl2LmlubmVySFRNTCA9IGA8ZGl2IGlkPSJteV9hZGRfZGl6aGkiIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPgogICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4O3dvcmQtd3JhcDogYnJlYWstd29yZDt3b3JkLWJyZWFrOiBicmVhay1hbGw7Ij7op4bpopHlnLDlnYDvvJo8YSBocmVmPSIke3ZpZGVvVXJsfSIgdGFyZ2V0PSJfYmxhbmsiPiR7dmlkZW9Vcmx9PC9hPjwvcD4KICAgICAgICAgICAgPHAgc3R5bGU9ImNvbG9yOnJlZDtmb250LXNpemU6MTRweCI+6Zeu6aKY5Y+N6aaIIG9yIOaUr+aMgeS9nOiAheivtzxhIGhyZWY9Imh0dHBzOi8vc2xlYXp5Zm9yay5vcmcvemgtQ04vc2NyaXB0cy80NTY0OTYiIHRhcmdldD0iX2JsYW5rIj7jgJDngrnlh7vmraTlpITjgJE8L2E+77yM5L2/55So5oSJ5b+r77yBPC9wPgogICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij4ke2NoYXR9PC9wPgogICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij48aW1nIHNyYz0iaHR0cHM6Ly9pMi4xMDAwMjQueHl6LzIwMjMvMDQvMjcvMTBlNGRodi53ZWJwIj48L3A+PC9kaXY+YDsKICAgICAgICBkaXpoaS5hZnRlcihteWRpdik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgLyog5Ye95pWw5Yqf6IO977ya5Yqg6L29RHBsYXllcuaSreaUvuinhumikeOAgiDlj4LmlbDor7TmmI7vvJp2aWRlb1VybO+8muinhumikeWcsOWdgCBlbO+8muaSreaUvuWZqOWKoOi9veS9jee9riBkaXpoaTog5Zyw5Z2A5pi+56S65L2N572uICBmbGFnOuaYr+WQpuW8uuWItuWIt+aWsCAqLwogICAgZnVuY3Rpb24gcGxheV92aWRlbyh2aWRlb1VybCwgZWwsIGRpemhpLCBmbGFnID0gMCkgewoKICAgICAgICBpZiAoIXZpZGVvVXJsIHx8ICFlbCB8fCAhZGl6aGkpIHRocm93IG5ldyBFcnJvcihg6YOo5YiG5Y+C5pWw5peg5pWI77yM6KeG6aKR5Zyw5Z2A77yaJHt2aWRlb1VybH3jgIHmkq3mlL7lmajkvY3nva7vvJoke2VsfeOAgeaPkOekuuS9jee9ru+8miR7ZGl6aGl9YCk7CgogICAgICAgIGxldCByZXQgPSBzaG93X3ZpZGVvVXJsKHZpZGVvVXJsLGRpemhpLGZsYWcpOwogICAgICAgIGlmKHJldCA9PSAwKXsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICBpZiAod2luZG93LmRwKSB7CiAgICAgICAgICAgIHdpbmRvdy5kcC5wYXVzZSgpCiAgICAgICAgICAgIHdpbmRvdy5kcC5kZXN0cm95KCkKICAgICAgICAgICAgd2luZG93LmRwID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIC8qIDIuIOaWsOWinuaSreaUvuWZqCAqLwogICAgICAgIHdpbmRvdy5kcCA9IG5ldyBEUGxheWVyKHsKICAgICAgICAgICAgZWxlbWVudDogZWwsCiAgICAgICAgICAgIGF1dG9wbGF5OiB0cnVlLAogICAgICAgICAgICB0aGVtZTogJyNGQURGQTMnLAogICAgICAgICAgICBsb29wOiB0cnVlLAogICAgICAgICAgICBsYW5nOiAnemgnLAogICAgICAgICAgICBzY3JlZW5zaG90OiB0cnVlLAogICAgICAgICAgICBob3RrZXk6IHRydWUsCiAgICAgICAgICAgIHByZWxvYWQ6ICdhdXRvJywKICAgICAgICAgICAgdmlkZW86IHsKICAgICAgICAgICAgICAgIHVybDogdmlkZW9VcmwsCiAgICAgICAgICAgICAgICB0eXBlOiAnaGxzJwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIC8qIDMuIOiuvue9ruaSreaUvuWZqOa1ruWKqOaYvuekuizlubbmt7vliqDkuIDkuKrlhbfmnInkuIrovrnot53nmoTlhYTlvJ9kaXbpgb/lhY3opobnm5bkuIvpnaLnmoTlhoXlrrkgKi8KICAgICAgICAvL2VsLmNsYXNzTGlzdC5hZGQoIm15X2FkZF9oZWFkZXIiKTsKICAgICAgICAvL2VsLnN0eWxlICs9ICJ6LWluZGV4OiA5OTk7dG9wOiAwOyI7CiAgICAgICAgZWwuc3R5bGUucG9zaXRpb24gPSAnc3RpY2t5JzsKICAgICAgICBlbC5zdHlsZS56SW5kZXggPSAnOTk5JzsKICAgICAgICBlbC5zdHlsZS50b3AgPSAnMCc7CiAgICAgICAgdmFyIHh4eCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNteV9hZGRfc2libGluZyIpOwogICAgICAgIGlmKCF4eHgpewogICAgICAgICAgICB2YXIgc2libGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICBzaWJsaW5nLmlkID0gIm15X2FkZF9zaWJsaW5nIjsKICAgICAgICAgICAgLy9zaWJsaW5nLnN0eWxlLm1hcmdpblRvcCA9IGVsLm9mZnNldEhlaWdodCArICdweCc7IC8vIOiuvue9ruWFhOW8n+WFg+e0oOeahOmhtumDqOi+uei3nQogICAgICAgICAgICBlbC5hZnRlcihzaWJsaW5nKTsKICAgICAgICB9CiAgICB9CgogICAgLyog5Ye95pWw5Yqf6IO977ya5ZCM5LiK77yM5Y+v5YiH5o2i5riF5pmw5bqmICAqLwogICAgZnVuY3Rpb24gcGxheV92aWRlbzIodmlkZW9VcmwsIHZpZGVvVXJsMiwgdmlkZW9VcmwzLCB2aWRlb1VybDQsIGVsLCBkaXpoaSkgewogICAgICAgIC8qIDEuIOaYvuekuuWcsOWdgCAqLwogICAgICAgIHZhciBteWRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIG15ZGl2LmlubmVySFRNTCA9IGA8ZGl2IGlkPSJteV9hZGRfZGl6aGkiIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPuazqOaEj++8mumDqOWIhuinhumikeWPqjM2MFDvvIzliIfmjaLlkI7ml6Dms5Xmkq3mlL7or7TmmI7kuI3lrZjlnKjpq5jmuIXmmbDluqbniYjmnKzvvIHvvIHvvIHop4bpopHlnLDlnYDvvJoKICAgICAgICA8cCBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4O3dvcmQtd3JhcDogYnJlYWstd29yZDt3b3JkLWJyZWFrOiBicmVhay1hbGw7Ij4zNjBQ77yaPGEgaHJlZj0iJHt2aWRlb1VybH0iIHRhcmdldD0iX2JsYW5rIj4ke3ZpZGVvVXJsfTwvYT48L3A+CiAgICAgICAgPHAgc3R5bGU9ImNvbG9yOnJlZDtmb250LXNpemU6MTRweDt3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7d29yZC1icmVhazogYnJlYWstYWxsOyI+NDgwUO+8mjxhIGhyZWY9IiR7dmlkZW9VcmwyfSIgdGFyZ2V0PSJfYmxhbmsiPiR7dmlkZW9VcmwyfTwvYT48L3A+CiAgICAgICAgPHAgc3R5bGU9ImNvbG9yOnJlZDtmb250LXNpemU6MTRweDt3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7d29yZC1icmVhazogYnJlYWstYWxsOyI+NzIwUO+8mjxhIGhyZWY9IiR7dmlkZW9VcmwzfSIgdGFyZ2V0PSJfYmxhbmsiPiR7dmlkZW9VcmwzfTwvYT48L3A+CiAgICAgICAgPHAgc3R5bGU9ImNvbG9yOnJlZDtmb250LXNpemU6MTRweDt3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7d29yZC1icmVhazogYnJlYWstYWxsOyI+MTA4MFDvvJo8YSBocmVmPSIke3ZpZGVvVXJsNH0iIHRhcmdldD0iX2JsYW5rIj4ke3ZpZGVvVXJsNH08L2E+PC9wPgogICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPumXrumimOWPjemmiCBvciDmlK/mjIHkvZzogIXor7c8YSBocmVmPSJodHRwczovL3NsZWF6eWZvcmsub3JnL3poLUNOL3NjcmlwdHMvNDU2NDk2IiB0YXJnZXQ9Il9ibGFuayI+44CQ54K55Ye75q2k5aSE44CRPC9hPu+8jOS9v+eUqOaEieW/q++8gTwvcD4KICAgICAgICA8cCBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij4ke2NoYXR9PC9wPgogICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPjxpbWcgc3JjPSJodHRwczovL2kyLjEwMDAyNC54eXovMjAyMy8wNC8yNy8xMGU0ZGh2LndlYnAiPjwvZGl2PmA7CiAgICAgICAgZGl6aGkgJiYgZGl6aGkuYWZ0ZXIobXlkaXYpOwoKICAgICAgICAvKiAyLiDmlrDlop7mkq3mlL7lmaggKi8KICAgICAgICB3aW5kb3cuZHAgPSBuZXcgRFBsYXllcih7CiAgICAgICAgICAgIGVsZW1lbnQ6IGVsLAogICAgICAgICAgICBhdXRvcGxheTogdHJ1ZSwKICAgICAgICAgICAgdGhlbWU6ICcjRkFERkEzJywKICAgICAgICAgICAgbG9vcDogdHJ1ZSwKICAgICAgICAgICAgbGFuZzogJ3poJywKICAgICAgICAgICAgc2NyZWVuc2hvdDogdHJ1ZSwKICAgICAgICAgICAgaG90a2V5OiB0cnVlLAogICAgICAgICAgICBwcmVsb2FkOiAnYXV0bycsCiAgICAgICAgICAgIHZpZGVvOiB7CiAgICAgICAgICAgICAgICBxdWFsaXR5OiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnMzYwUCcsCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdmlkZW9VcmwsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdobHMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnNDgwUCcsCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdmlkZW9VcmwyLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaGxzJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJzcyMFAnLAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHZpZGVvVXJsMywKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2hscycsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICcxMDgwUCcsCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdmlkZW9Vcmw0LAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaGxzJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIGRlZmF1bHRRdWFsaXR5OiAwLAogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9CgogICAgLyog5Ye95pWw5Yqf6IO977ya5Zyo55WM6Z2i5LiK5pi+56S656iL5bqP6ZSZ6K+v77yM5L6/5LqO5YiG5p6QICAqLwogICAgZnVuY3Rpb24gc2hvd19lcnJfbG9nKGVycikgewogICAgICAgIGVyciAmJiBjb25zb2xlLmxvZyhlcnIpOwogICAgICAgIGVycl9jbnQrKzsKICAgICAgICBpZiAoZXJyX2NudCA9PSAxMCkgewogICAgICAgICAgICAvL2Vycl9jbnQgPSAwOwogICAgICAgICAgICB2YXIgbXlkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgbXlkaXYuaW5uZXJIVE1MID0gYDxkaXYgaWQ9Im15X2FkZF9lcnJfbG9nIiBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij4KICAgICAgICAgICAg6Kej5p6Q5Ye66ZSZ77yMMS7mo4Dmn6XmmK/lkKbnmbvlvZXvvIEyLuivt+S7lOe7humYheivuzxhIGhyZWY9Imh0dHBzOi8vc2xlYXp5Zm9yay5vcmcvemgtQ04vc2NyaXB0cy80NTY0OTYiIHRhcmdldD0iX2JsYW5rIj7jgJDohJrmnKzor7TmmI7jgJE8L2E+5p+l55yL5piv5ZCm5pSv5oyB5L2g55qE5bmz5Y+w57uE5ZCI77yMCiAgICAgICAgICAgIOWmgumcgOW4ruWKqeivt+WkjeWItuS7peS4i+WGheWuueWIsOiEmuacrOivhOiuuuWMuu+8jOetieWAmeS9nOiAheWkhOeQhiEg6K+35Yqg5LiK5L2/55So55qE5bmz5Y+w57uE5ZCI77yM5aaC77yaY2hyb21lICsgdGFtcGVybW9ua2V5IOOAggogICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij7plJnor6/kv6Hmga/vvJoke2VyciB8fCAi5bCd6K+V5aSa5qyh5LuN54S25pyq6I635Y+W5Yiw5Zyw5Z2ALOWPr+iDveaYr+e9keermeW3suabtOaWsC4uLiJ9PC9wPgogICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij7mk43kvZzns7vnu5/vvJoke25hdmlnYXRvci5wbGF0Zm9ybX08L3A+CiAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPua1j+iniOWZqO+8miR7bmF2aWdhdG9yLnVzZXJBZ2VudH08L3A+CiAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPuW9k+WJjeWcsOWdgO+8miR7bG9jYXRpb24uaHJlZn08L3A+CiAgICAgICAgICAgIDwvZGl2PmA7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImhlYWQiKS5hZnRlcihteWRpdik7CiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlfdGltZXIpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBkb19sb2dpbigpewogICAgICAgIGxldCBwaG9uZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21vdmUtY2xpZW50LXVzZXItaW5mbycpKT8udXNlcj8udXNlcl9pbmZvPy5waG9uZTsKICAgICAgICBsZXQgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnSFRNTEV2ZW50cycpOwogICAgICAgICAgICBldmVudC5pbml0RXZlbnQoImlucHV0IiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgaWYocGhvbmUpewogICAgICAgICAgICAvKiDoh6rliqjnmbvlvZUgKi8KICAgICAgICAgICAgbGV0IGFjY291bnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dC52YW4tZmllbGRfX2NvbnRyb2wnKVswXTsKICAgICAgICAgICAgYWNjb3VudC52YWx1ZSA9IHBob25lOwogICAgICAgICAgICBhY2NvdW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogICAgICAgICAgICBsZXQgcGFzc3dvcmQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dC52YW4tZmllbGRfX2NvbnRyb2wnKVsxXTsKICAgICAgICAgICAgcGFzc3dvcmQudmFsdWUgPSAiMTIzNDU2IjsKICAgICAgICAgICAgcGFzc3dvcmQuZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvblt0eXBlPXN1Ym1pdF0nKS5jbGljaygpOwogICAgICAgIH1lbHNlewogICAgICAgICAgICAvKiDoh6rliqjms6jlhowgKi8KICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2LmxvZ2luXzFfMl8xJyk/LmNsaWNrKCk7CiAgICAgICAgICAgIGxldCBhY2NvdW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQudmFuLWZpZWxkX19jb250cm9sJylbMF07CiAgICAgICAgICAgIGFjY291bnQudmFsdWUgPSBbIjEzMCIsICIxMzEiLCAiMTMyIiwgIjEzMyIsICIxMzUiLCAiMTM3IiwgIjEzOCIsICIxNzAiLCAiMTg3IiwgIjE4OSJdWyBNYXRoLmZsb29yKDEwICogTWF0aC5yYW5kb20oKSldICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMDAwMDAwKTsKICAgICAgICAgICAgYWNjb3VudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKICAgICAgICAgICAgbGV0IHBhc3N3b3JkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQudmFuLWZpZWxkX19jb250cm9sJylbMV07CiAgICAgICAgICAgIHBhc3N3b3JkLnZhbHVlID0gIjEyMzQ1NiI7CiAgICAgICAgICAgIHBhc3N3b3JkLmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogICAgICAgICAgICBsZXQgcGFzc3dvcmQyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQudmFuLWZpZWxkX19jb250cm9sJylbMl07CiAgICAgICAgICAgIHBhc3N3b3JkMi52YWx1ZSA9ICIxMjM0NTYiOwogICAgICAgICAgICBwYXNzd29yZDIuZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvblt0eXBlPXN1Ym1pdF0nKS5jbGljaygpOwogICAgICAgIH0KICAgIH0KCiAgICBsZXQgZmxhZyA9IDA7CiAgICBsZXQgbGFzdF92aWRlb1VybCA9IG51bGw7CiAgICBmdW5jdGlvbiBnZXRfdmlkZW91cmwoKSB7CiAgICAgICAgbGV0IHZpZGVvVXJsID0gbnVsbCwgdmlkZW9VcmwyID0gbnVsbCwgdmlkZW9VcmwzID0gbnVsbCwgdmlkZW9Vcmw0ID0gbnVsbDsKICAgICAgICBsZXQgZWwgPSBudWxsOwogICAgICAgIGxldCBkaXpoaSA9IG51bGw7CiAgICAgICAgbGV0IHBsYXllciA9IG51bGw7CiAgICAgICAgbGV0IHNoaWthbiA9IG51bGw7CiAgICAgICAgbGV0IGFkcyA9IG51bGw7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKCFub3RfbmVlZF9kcGxheWVyICYmICFEUGxheWVyICkgewogICAgICAgICAgICAgICAgLyogRFBsYXllcui/mOacquWKoOi9veWujOavleaXtuWwseino+aekOWujOinhumikeWcsOWdgO+8jOS8muWvvOiHtOaSreaUvuaXtuaKpemUmVJlZmVyZW5jZUVycm9yOiBEUGxheWVyIGlzIG5vdCBkZWZpbmVkICovCiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygi5q2j5Zyo5Yqg6L29RFBsYXllci4uLiIpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIOWwj+Wkqem5hSAqLwogICAgICAgICAgICBpZiAobG9jYXRpb24uaHJlZi5tYXRjaCgiaHR0cHM6Ly94dGVmdi54eXovIy9EZXRhaWxzIikgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiW+Wwj+Wkqem5hV3op4bpopHpobXpnaLvvIzmraPlnKjop6PmnpAuLi4iKTsKICAgICAgICAgICAgICAgIHBsYXllciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5NcHBsYXkiKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgndmFuLW92ZXJmbG93LWhpZGRlbicpOwogICAgICAgICAgICAgICAgYWRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLlZpcHpjZUJveCIpOyBpZiAoYWRzKSBhZHMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhZHMpOwogICAgICAgICAgICAgICAgLyogMS7ngrnlh7vor5XnnIvvvIjkuI3pnIDopoHvvIkgKi8KICAgICAgICAgICAgICAgIC8qIDIu6Kej5p6Q55yf5a6e5Zyw5Z2AICovCiAgICAgICAgICAgICAgICB2aWRlb1VybCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5kZXRhaWxzQm94Iik/Ll9fdnVlX18/LmRldGFpbHNkYXRhPy52b2RfZGlyZWN0X3BsYXlfdXJsOwogICAgICAgICAgICAgICAgaWYocGxheWVyICYmIHZpZGVvVXJsKXsKICAgICAgICAgICAgICAgICAgICBpZih2aWRlb1VybCA9PSBsYXN0X3ZpZGVvVXJsKXsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgICAgICAgICBsYXN0X3ZpZGVvVXJsID0gdmlkZW9Vcmw7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCLnnJ/lrp7lnLDlnYA6IiwgdmlkZW9VcmwpOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygibGFzdF92aWRlb1VybDoiLCBsYXN0X3ZpZGVvVXJsKTsKICAgICAgICAgICAgICAgICAgICAgICAgLyogMy7np7vpmaTlub/lkYogKi8KICAgICAgICAgICAgICAgICAgICAgICAgLy9hZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuTXBwbGF5RmgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgLyogNC7mkq3mlL7mraPniYcgKi8KICAgICAgICAgICAgICAgICAgICAgICAgcGxheV92aWRlbyh2aWRlb1VybCwgcGxheWVyLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYuRGV0YWlsc29mVGhlVGl0bGUiKSwxKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9wbGF5ZXIucGFyZW50Tm9kZS5iZWZvcmUoYWRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgLyogNS7lgZzmraLlrprml7blmaggKi8KICAgICAgICAgICAgICAgICAgICAgICAgLy9jbGVhckludGVydmFsKG15X3RpbWVyKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCJb5bCP5aSp6bmFXeinhumikemhtemdou+8jOacquiOt+WPluWIsOWcsOWdgO+8jOe7p+e7reWwneivlS4uLiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIOeMq+WSqnZpcCAqLwogICAgICAgICAgICBlbHNlIGlmIChsb2NhdGlvbi5ocmVmLm1hdGNoKCJodHRwczovL3d3dy4uKj8uY29tL3ZpcC8iKSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYuY29udGVudC1pdGVtICBhLnZpZGVvLXBpYyIpPy5mb3JFYWNoKCBhID0+IHthLmhyZWYgPSBhLmhyZWYucmVwbGFjZSgiL3ZpcC9wbGF5LSIsIi9zaGlwaW4vZGV0YWlsLSIpfSk7CiAgICAgICAgICAgICAgICAvL2NsZWFySW50ZXJ2YWwobXlfdGltZXIpOwogICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiW+eMq+WSql3op4bpopHpobXpnaLvvIzmnKrojrflj5bliLDlnLDlnYDvvIznu6fnu63lsJ3or5UuLi4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvKiA5c2V4ICovCiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0aW9uLmhyZWYubWF0Y2goImh0dHBzOi8vLio/L2luZGV4L21vdmllL3BsYXkvaWQvIikgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgcGxheWVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2RwbGF5ZXIiKTsKICAgICAgICAgICAgICAgIGRpemhpID0gZG9jdW1lbnQuYm9keS5pbm5lckhUTUwubWF0Y2goIm1vdmllcy8oLio/KV9wcmV2aWV3LmpwZy50eHQiKVsxXS5zcGxpdCgnLycpOy8qICQoInNjcmlwdCIpLnRleHQoKSAqLwogICAgICAgICAgICAgICAgLyogMS7ngrnlh7vor5XnnIvvvIjkuI3pnIDopoHvvIkgKi8KICAgICAgICAgICAgICAgIGlmIChwbGF5ZXIgJiYgZGl6aGkgJiYgZmxhZyA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgLyogMi7op6PmnpDnnJ/lrp7lnLDlnYAgKi8KICAgICAgICAgICAgICAgICAgICB2aWRlb1VybCA9IGBodHRwczovLzlzLm0zLmJjYTgzNGQ2MDI1Ny5jb20vJHtkaXpoaVswXX0vJHtkaXpoaVsxXX0vMzYwUC8ke2RpemhpWzJdfV8zNjBQLm0zdThgOyBjb25zb2xlLmxvZygi55yf5a6e5Zyw5Z2AOiIsIHZpZGVvVXJsKTsKICAgICAgICAgICAgICAgICAgICB2aWRlb1VybDIgPSBgaHR0cHM6Ly85cy5tMy5iY2E4MzRkNjAyNTcuY29tLyR7ZGl6aGlbMF19LyR7ZGl6aGlbMV19LzQ4MFAvJHtkaXpoaVsyXX1fNDgwUC5tM3U4YDsgY29uc29sZS5sb2coIuecn+WunuWcsOWdgDI6IiwgdmlkZW9VcmwyKTsKICAgICAgICAgICAgICAgICAgICB2aWRlb1VybDMgPSBgaHR0cHM6Ly85cy5tMy5iY2E4MzRkNjAyNTcuY29tLyR7ZGl6aGlbMF19LyR7ZGl6aGlbMV19LzcyMFAvJHtkaXpoaVsyXX1fNzIwUC5tM3U4YDsgY29uc29sZS5sb2coIuecn+WunuWcsOWdgDM6IiwgdmlkZW9VcmwzKTsKICAgICAgICAgICAgICAgICAgICB2aWRlb1VybDQgPSBgaHR0cHM6Ly85cy5tMy5iY2E4MzRkNjAyNTcuY29tLyR7ZGl6aGlbMF19LyR7ZGl6aGlbMV19LzEwODBQLyR7ZGl6aGlbMl19XzEwODBQLm0zdThgOyBjb25zb2xlLmxvZygi55yf5a6e5Zyw5Z2ANDoiLCB2aWRlb1VybDQpOwogICAgICAgICAgICAgICAgICAgIC8qIDMudmlw6KeG6aKR6ZyA6KaB56e76Zmk55m75b2V5qGGICovCiAgICAgICAgICAgICAgICAgICAgYWRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2xvZ2luLXRpcC1tb2RhbCIpOyBpZiAoYWRzKSBhZHMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhZHMpOwogICAgICAgICAgICAgICAgICAgIGFkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi52aXAtdGlwLW1vZGFsIik7IGlmIChhZHMpIGFkcy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGFkcyk7CiAgICAgICAgICAgICAgICAgICAgLyogNC7mkq3mlL7mraPniYcgKi8KICAgICAgICAgICAgICAgICAgICBwbGF5X3ZpZGVvMih2aWRlb1VybCwgdmlkZW9VcmwyLCB2aWRlb1VybDMsIHZpZGVvVXJsNCwgcGxheWVyLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYubm90aWNlIikpOwogICAgICAgICAgICAgICAgICAgIGZsYWcgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoZmxhZyA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgLyogMy4xIOWFjei0ueinhumikemcgOimgeWKoOi9veaSreaUvuWQjuenu+mZpOW5v+WRiiAqLwogICAgICAgICAgICAgICAgICAgIGFkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5wYXVzZS1hZC1pbWdib3giKTsgaWYgKGFkcykgYWRzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYWRzKTsKICAgICAgICAgICAgICAgICAgICAvKiA1LuWBnOatouWumuaXtuWZqCAqLwogICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlfdGltZXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIls5c2V4Xeinhumikemhtemdou+8jOacquiOt+WPluWIsOWcsOWdgO+8jOe7p+e7reWwneivlS4uLiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIOeah+WutuS8muaJgCAqLwogICAgICAgICAgICBlbHNlIGlmIChsb2NhdGlvbi5ocmVmLm1hdGNoKCJodHRwczovL3d3dy5oamhzLio/L3ZpZGVvcy8iKSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBwbGF5ZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZHBsYXllciIpOwogICAgICAgICAgICAgICAgLyogMS7ngrnlh7vor5XnnIvvvIjkuI3pnIDopoHvvIkgKi8KICAgICAgICAgICAgICAgIGlmIChwbGF5ZXIgJiYgd2luZG93LmFwaT8ucXVhbGl0eT8udXJsKSB7CiAgICAgICAgICAgICAgICAgICAgLyogMi7op6PmnpDnnJ/lrp7lnLDlnYAgKi8KICAgICAgICAgICAgICAgICAgICB2aWRlb1VybCA9IHdpbmRvdy5hcGkucXVhbGl0eS51cmwucmVwbGFjZSgic3VvLiIsICIiKS5yZXBsYWNlKCJfc3VvIiwgIiIpOyBjb25zb2xlLmxvZygi55yf5a6e5Zyw5Z2AOiIsIHZpZGVvVXJsKTsKICAgICAgICAgICAgICAgICAgICAvKiAzLuenu+mZpOW5v+WRiiAqLwogICAgICAgICAgICAgICAgICAgIC8qIDQu5pKt5pS+5q2j54mHICovCiAgICAgICAgICAgICAgICAgICAgcGxheV92aWRlbyh2aWRlb1VybCwgcGxheWVyLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYuaGVhZGxpbmUiKSk7CiAgICAgICAgICAgICAgICAgICAgLyogNS7lgZzmraLlrprml7blmaggKi8KICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKG15X3RpbWVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJb55qH5a625Lya5omAXeinhumikemhtemdou+8jOacquiOt+WPluWIsOWcsOWdgO+8jOe7p+e7reWwneivlS4uLiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIFRoZSBBViBQcm9u77yM5YW85a655omL5py6ICsgUEMKICAgICAgICAgICAg5bey55+l57y66Zm3OiDoi6Xkvb/nlKhEcGxheWVyLCDliJkgY2hyb21lL3NhZmFyaSDmkq3mlL7mraPluLjvvIjml6Dms5XmlrDmoIfnrb7mkq3mlL7vvIzlj6/og73mnInpmZDliLbvvInvvIxraXdpIG0zdTjlnLDlnYDojrflj5bmiJDlip/vvIzkvYbmkq3mlL7lpLHotKXvvIEKICAgICAgICAgICAg5bey55+l57y66Zm3OiDlj6/og73nvZHnq5nlrZjlnKjpmZDliLbvvIzmjqfliLblj7DkuK1wbGF5ZXIuYXBpKCJobHMiKeacieWAvO+8jOS9huiEmuacrOiOt+WPluS4um51bGwg44CC5Y+q5pyJ5L2/55SoIHVuc2FmZVdpbmRvdy5wbGF5ZXIuYXBpKCJobHMiKeiDveiOt+WPluWIsCDvvIwKICAgICAgICAgICAg5L2G55Sx5LqOdXNlcnNjcmlwdOS4jeaUr+aMgXVuc2FmZVdpbmRvd++8jOaVhXNhZmFyaea1j+iniOWZqCt1c2Vyc2NyaXB05peg5pWI44CC5pS55Li65LuOPHNjcmlwdC8+5YaF5a655p+l5om+bTN1OOWcsOWdgCAqLwogICAgICAgICAgICBlbHNlIGlmIChsb2NhdGlvbi5ocmVmLm1hdGNoKCJodHRwczovL3RoZWF2Lio/LmNvbS92aWRlb3MvIikgIT0gbnVsbCB8fAogICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmLm1hdGNoKCJodHRwczovL3RoZS4qPy5mdW4vdmlkZW9zLyIpICE9IG51bGwgKSB7CiAgICAgICAgICAgICAgICBpZiAoMSkgewogICAgICAgICAgICAgICAgICAgIC8qIDEu54K55Ye76K+V55yL77yI5LiN6ZyA6KaB77yJICovCiAgICAgICAgICAgICAgICAgICAgLyogMi7op6PmnpDnnJ/lrp7lnLDlnYAgKi8KICAgICAgICAgICAgICAgICAgICB2aWRlb1VybCA9IHdpbmRvdy5wbGF5ZXI/LmFwaSgiaGxzIik/LnVybD8uc3BsaXQoJz8nKVswXSB8fCB3aW5kb3cubTNreT8uc3BsaXQoJz8nKVswXTsgLyog6K+l5pa55qGI5Zyoc2FmYXJp5rWP6KeI5ZmoK3VzZXJzY3JpcHTkuIvml6DmlYggKi8KICAgICAgICAgICAgICAgICAgICAvKiB2aWRlb1VybCA9IGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MLm1hdGNoKCJodHRwczooLio/KS5tM3U4IilbMF07ICAkKCJzY3JpcHQiKS50ZXh0KCkgKi8KICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygi55yf5a6e5Zyw5Z2AOiIsIHZpZGVvVXJsKTsKICAgICAgICAgICAgICAgICAgICAvKiAzLuenu+mZpOW5v+WRiiAqLwogICAgICAgICAgICAgICAgICAgIGFkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi50YWJsZSIpOyBpZiAoYWRzKSBhZHMuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICBhZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuc3BvbnNvciIpOyBpZiAoYWRzKSBhZHMuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICBhZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIucmF0ZV9ib3giKTsgaWYgKGFkcykgYWRzLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgYWRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmdyZWVuIik7IGlmIChhZHMpIGFkcy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgIC8qIDQu5pKt5pS+5q2j54mHICovCiAgICAgICAgICAgICAgICAgICAgLyogcGxheV92aWRlbyh2aWRlb1VybCwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnBsYXllciIpLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJoMi50aXRsZSIpKTvor6XmlrnmoYjlnKhraXdpK3RlbXBlcm1vbmtleeS4i+aXoOaViCAqLwogICAgICAgICAgICAgICAgICAgIFBsYXllcmpzKHsgaWQ6ICJsYXllciIsIGZpbGU6IHZpZGVvVXJsLCBhdXRvcGxheTogMSB9KTsvL2lkOiAicGxheWVyIgogICAgICAgICAgICAgICAgICAgIC8qIDUu5YGc5q2i5a6a5pe25ZmoICovCiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChteV90aW1lcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiW1RoZSBBViBQcm9uXeinhumikemhtemdou+8jOacquiOt+WPluWIsOWcsOWdgO+8jOe7p+e7reWwneivlS4uLiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIOW/q+eMq++8jOWFvOWuueaJi+acuiArIFBDICovCiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0aW9uLmhyZWYubWF0Y2goImh0dHBzOi8vLio/a20uKj8uY29tL3ZpZGVvQ29udGVudC8iKSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAvKiAxLueCueWHu+ivleeci++8iOS4jemcgOimge+8iSAqLwogICAgICAgICAgICAgICAgLyogMi7op6PmnpDnnJ/lrp7lnLDlnYAgKi8KICAgICAgICAgICAgICAgIHZpZGVvVXJsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3ZpZGVvQ29udGVudCIpPy5fX3Z1ZV9fPy5mb3JtYXRVcmw7CiAgICAgICAgICAgICAgICBpZiAodmlkZW9VcmwpIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygi55yf5a6e5Zyw5Z2AOiIsIHZpZGVvVXJsKTsKICAgICAgICAgICAgICAgICAgICAvKiAzLuenu+mZpOW5v+WRiiAqLwogICAgICAgICAgICAgICAgICAgIGFkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5leGNoYW5nZUJnIik7IGlmIChhZHMgIT0gbnVsbCkgYWRzLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgLyogNC7mkq3mlL7mraPniYcgKi8KICAgICAgICAgICAgICAgICAgICBwbGF5X3ZpZGVvKHZpZGVvVXJsLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYuYmFja0ltZyIpLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYudmlkZW9UaXRsZSIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdiBwLm5hbWUiKSk7CiAgICAgICAgICAgICAgICAgICAgLyogNS7lgZzmraLlrprml7blmaggKi8KICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKG15X3RpbWVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJb5b+r54yrXeinhumikemhtemdou+8jOacquiOt+WPluWIsOWcsOWdgO+8jOe7p+e7reWwneivlS4uLiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIOe6ouadj++8jOWFvOWuueaJi+acuiArIFBDICovCiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0aW9uLmhyZWYubWF0Y2goImh0dHBzOi8vLio/Lmh4YWEuKj8uY29tLyMvbW92ZXMvcGxheXZpZGVvLyIpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIGxldCBsb2dpbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5wbGF5X3ZpZGVvX3dkbF8yXzIiKTsKICAgICAgICAgICAgICAgIHNoaWthbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5zaGlrYW4iKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYub25fcGxheSIpOwogICAgICAgICAgICAgICAgcGxheWVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiIGRpdiNtc2UiKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYucGxheV92aWRlb18xIGRpdiIpOwogICAgICAgICAgICAgICAgaWYobG9naW4pewogICAgICAgICAgICAgICAgICAgIC8qIDAu55m75b2VIG9yIOazqOWGjCAqLwogICAgICAgICAgICAgICAgICAgIGxvZ2luLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgZG9fbG9naW4oKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNoaWthbikgewogICAgICAgICAgICAgICAgICAgIC8qIDEu54K55Ye76K+V55yLICovCiAgICAgICAgICAgICAgICAgICAgc2hpa2FuLmNsaWNrKCk7IGNvbnNvbGUubG9nKCLngrnlh7vor5XnnIvvvIEiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBsYXllcj8uX192dWVfXz8ucGxheVVybCkgewogICAgICAgICAgICAgICAgICAgIC8qIDIu6Kej5p6Q55yf5a6e5Zyw5Z2AICovCiAgICAgICAgICAgICAgICAgICAgbGV0IHZpZGVvVXJsID0gcGxheWVyLl9fdnVlX18ucGxheVVybC5zcGxpdCgnJnRpbWUnKVswXTsgY29uc29sZS5sb2coIuecn+WunuWcsOWdgDoiLCB2aWRlb1VybCk7CiAgICAgICAgICAgICAgICAgICAgLyogMy7np7vpmaTor5XnnIsgKi8KICAgICAgICAgICAgICAgICAgICBwbGF5ZXIuX192dWVfXy5wbGF5ZXI/Lmhscz8uZGVzdHJveSgpOwogICAgICAgICAgICAgICAgICAgIC8qIDQu5pKt5pS+5q2j54mHICovCiAgICAgICAgICAgICAgICAgICAgcGxheV92aWRlbyh2aWRlb1VybCwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiIGRpdiNtc2UiKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYucGxheV92aWRlb18xIGRpdi5kcGxheWVyIiksIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5tb3ZlX25hbWUiKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYucGxheV9tYWluXzEiKSk7CiAgICAgICAgICAgICAgICAgICAgLyogNS7lgZzmraLlrprml7blmaggKi8KICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKG15X3RpbWVyKTsgY29uc29sZS5sb2coIuWBnOatouWumuaXtuWZqO+8gSIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlvnuqLmnY9d6KeG6aKR6aG16Z2i77yM5pyq6I635Y+W5Yiw5Zyw5Z2A77yM57un57ut5bCd6K+VLi4uIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyog57qi5p2P77yM5omL5py655+t6KeG6aKRICovCiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0aW9uLmhyZWYubWF0Y2goImh0dHBzOi8vLio/LyMvc2hvdFZpZGVvTGlzdCIpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHBsYXllciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5zaG91dF9saXN0Iik7CiAgICAgICAgICAgICAgICBpZighZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYnV0dG9uI3BvamllIikpewogICAgICAgICAgICAgICAgICAgIC8qIDEuIOaYvuekuuWcsOWdgCAqLwogICAgICAgICAgICAgICAgICAgIHZhciBteWRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICAgICAgICAgIG15ZGl2LmlubmVySFRNTCA9IGA8cCBpZD0ibXlfYWRkX2RpemhpIiBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij48YnV0dG9uIGlkPSJwb2ppZSI+54K55q2k56C06KejPC9idXR0b24+5ZCO77yM6KeG6aKR5qCH6aKY5YmN5Lya5Ye6546w4oCc4pyU4oCd5a2X5qC377yM54K55Ye75qCH6aKY5bCG5omT5byA5paw6aG16Z2i55yL6KeG6aKR77yBPC9wPmA7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2LnZhbi1uYXYtYmFyX19jb250ZW50IikuYWZ0ZXIobXlkaXYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZihwbGF5ZXIgJiYgcGxheWVyLl9fdnVlX18ucGxheUxpc3QxKXsKICAgICAgICAgICAgICAgICAgICAvKiAyLueCueino+egtOinoyAqLwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImJ1dHRvbiNwb2ppZSIpLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmlkZW9VcmxfbGlzdCA9IHBsYXllci5fX3Z1ZV9fLnBsYXlMaXN0MTsgY29uc29sZS5sb2coIuebtOaSreWcsOWdgDoiLCB2aWRlb1VybF9saXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRpdmxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYuYm94X2xlZnQgZGl2LmJveF9wdWJsaWMgZGl2LmJveF9wdWJsaWNfMV8yICIpOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGVuID0gKHZpZGVvVXJsX2xpc3QubGVuZ3RoID4gZGl2bGlzdC5sZW5ndGgpID8gZGl2bGlzdC5sZW5ndGggOiB2aWRlb1VybF9saXN0Lmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2bGlzdFtpXS5pbm5lckhUTUwgPSBgPHA+PGEgaHJlZj0iaHR0cHM6Ly9qc2Nkbi5sb3JkemhhbmcueHl6LyR7dmlkZW9VcmxfbGlzdFtpXS5zbn0vMTAwMDBrYi9obHMvaW5kZXgubTN1OCIgdGFyZ2V0PSJfYmxhbmsiPuKclCR7ZGl2bGlzdFtpXS5pbm5lclRleHR9PC9hPjwvcD5gOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIC8qIOWPs+i+ueeahCAqLwogICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1VybF9saXN0ID0gcGxheWVyLl9fdnVlX18ucGxheUxpc3QyOyBjb25zb2xlLmxvZygi55u05pKt5Zyw5Z2AOiIsIHZpZGVvVXJsX2xpc3QpOwogICAgICAgICAgICAgICAgICAgICAgICBkaXZsaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiZGl2LmJveF9yaWdodCBkaXYuYm94X3B1YmxpYyBkaXYuYm94X3B1YmxpY18xXzIgIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9ICh2aWRlb1VybF9saXN0Lmxlbmd0aCA+IGRpdmxpc3QubGVuZ3RoKSA/IGRpdmxpc3QubGVuZ3RoIDogdmlkZW9VcmxfbGlzdC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2bGlzdFtpXS5pbm5lckhUTUwgPSBgPHA+PGEgaHJlZj0iaHR0cHM6Ly9qc2Nkbi5sb3JkemhhbmcueHl6LyR7dmlkZW9VcmxfbGlzdFtpXS5zbn0vMTAwMDBrYi9obHMvaW5kZXgubTN1OCIgdGFyZ2V0PSJfYmxhbmsiPuKclCR7ZGl2bGlzdFtpXS5pbm5lclRleHR9PC9hPjwvcD5gOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAvKiAzLuWBnOatouWumuaXtuWZqCAqLwogICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlfdGltZXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIOWQq+e+nuiNieinhumikSDvvIzlhbzlrrnmiYvmnLogKyBQQyAqLwogICAgICAgICAgICBlbHNlIGlmIChsb2NhdGlvbi5ocmVmLm1hdGNoKCIvcGxheS92aWRlby8iKSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBzaGlrYW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIudmFuLWljb24tcGxheS1jaXJjbGUtbyIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5jdXJzb3ItcG9pbnRlci5mbGV4LWNlbnRlci5zcGFjZS14LTEiKTsgLyog5YmN6Z2i5Li65omL5py644CC5ZCO6Z2i5Li6UEMgKi8KICAgICAgICAgICAgICAgIHBsYXllciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdiN2aWRlb0NvbnRlbnRQbGF5ZXIiKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdl9wcmlzbSIpOwogICAgICAgICAgICAgICAgYWRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmZpeGVkVHJ5V2F0Y2hTaG93QnV0dG9uTGluZSIpOwogICAgICAgICAgICAgICAgaWYgKHNoaWthbikgewogICAgICAgICAgICAgICAgICAgIC8qIDEu54K55Ye76K+V55yLICovCiAgICAgICAgICAgICAgICAgICAgc2hpa2FuLmNsaWNrKCk7IGNvbnNvbGUubG9nKCLngrnlh7vor5XnnIvvvIEiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBsYXllcj8uX192dWVfXz8udmlkZW9VcmwpIHsKICAgICAgICAgICAgICAgICAgICAvKiAyLuino+aekOecn+WunuWcsOWdgCAqLwogICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsID0gcGxheWVyLl9fdnVlX18udmlkZW9Vcmwuc3BsaXQoL3N0YXJ0Lio/c2lnbi8pLmpvaW4oJ3NpZ24nKTsgY29uc29sZS5sb2coIuecn+WunuWcsOWdgDoiLCB2aWRlb1VybCk7CiAgICAgICAgICAgICAgICAgICAgLyogMy7np7vpmaTor5XnnIvjgIHlub/lkYogKi8KICAgICAgICAgICAgICAgICAgICBwbGF5ZXIuX192dWVfXy52aWRlb09iaiAmJiBwbGF5ZXIuX192dWVfXy52aWRlb09iai5obHMgJiYgcGxheWVyLl9fdnVlX18udmlkZW9PYmouaGxzLmRlc3Ryb3koKTsKICAgICAgICAgICAgICAgICAgICBhZHMgJiYgKGFkcy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiKTsKICAgICAgICAgICAgICAgICAgICAvKiA0LuaSreaUvuato+eJhyAqLwogICAgICAgICAgICAgICAgICAgIHBsYXlfdmlkZW8odmlkZW9VcmwsIHBsYXllciwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2LnB1YmxpY1ZpZGVvSW5mb0JveCBwLm5hbWUiKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYuaW5mb0FyZWFCb3giKSk7CiAgICAgICAgICAgICAgICAgICAgLyogNS7lgZzmraLlrprml7blmaggKi8KICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKG15X3RpbWVyKTsgY29uc29sZS5sb2coIuWBnOatouWumuaXtuWZqO+8gSIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlvlkKvnvp7ojYld6KeG6aKR6aG16Z2i77yM5pyq6I635Y+W5Yiw5Zyw5Z2A77yM57un57ut5bCd6K+VLi4uIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyog5ZCr576e6I2J77yMUEPnq6/vvIznm7Tmkq0gKi8KICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uaHJlZi5tYXRjaCgiL2xpdmUvIikgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgcGxheWVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2LlZpZGVvQXV0aEFkbWluQmciKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYjbGl2ZVBsYXllciIpOwogICAgICAgICAgICAgICAgdmlkZW9VcmwgPSBwbGF5ZXIuX192dWVfXy52aWRlb1VybCB8fCBwbGF5ZXIuX192dWVfXy52aWRlb0NvbnRlbnQucHVsbDsgY29uc29sZS5sb2coIuebtOaSreWcsOWdgDoiLCB2aWRlb1VybCk7CiAgICAgICAgICAgICAgICBwbGF5X3ZpZGVvKHZpZGVvVXJsLCBwbGF5ZXIsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi51c2VySW5mbyBwLm5hbWUiKSk7CiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKG15X3RpbWVyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvKiDlkKvnvp7ojYnvvIzmiYvmnLrnq6/vvIznm7Tmkq0gKi8KICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uaHJlZi5tYXRjaCgiLy9oNS4qPy9saXZlIikgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgcGxheWVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2I3B1YmxpY0xpdmVMaXN0TW9kdWxlIik7CiAgICAgICAgICAgICAgICBsZXQgdmlkZW9VcmxfbGlzdCA9IHBsYXllci5fX3Z1ZV9fLmxpc3Q7IGNvbnNvbGUubG9nKCLnm7Tmkq3lnLDlnYA6IiwgdmlkZW9VcmxfbGlzdCk7CiAgICAgICAgICAgICAgICBsZXQgZGl2bGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInVsLmxpdmVMaXN0QmcgbGkgLmJvdHRvbSIpOwogICAgICAgICAgICAgICAgbGV0IGxlbiA9ICh2aWRlb1VybF9saXN0Lmxlbmd0aCA+IGRpdmxpc3QubGVuZ3RoKSA/IGRpdmxpc3QubGVuZ3RoIDogdmlkZW9VcmxfbGlzdC5sZW5ndGg7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgZGl2bGlzdFtpXS5pbm5lckhUTUwgKz0gJzxwPjxhIGhyZWY9IicgKyB2aWRlb1VybF9saXN0W2ldLnB1bGwgKyAnIiB0YXJnZXQ9Il9ibGFuayI+JyArIHZpZGVvVXJsX2xpc3RbaV0ucHVsbCArICc8L2E+PC9wPic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKG15X3RpbWVyKTsKICAgICAgICAgICAgICAgIC8qIDEuIOaYvuekuuWcsOWdgCAqLwogICAgICAgICAgICAgICAgbXlkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgICAgIG15ZGl2LmlubmVySFRNTCA9ICc8cCBpZD0ibXlfYWRkX2RpemhpIiBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij7mj5DnpLrvvJrlvabnpZbku6zvvIzor7fngrnlh7vlm77niYfkuIvmlrnnmoTpk77mjqXnnIvnoLTop6PlkI7nmoTnm7Tmkq3op4bpopHvvIE8L3A+JzsKICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi50b3BCYW5uZXJCZyIpLmFmdGVyKG15ZGl2KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIC8qIOm6u+ixhlRWICovIC8qIDkxVFYgKi8KICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJ2aXBfbGV2ZWwiLCAnMScpOy8vdG9kbzrliqDlnLDlnYDmj5DnpLoKICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coIuWcsOWdgOacquWMuemFje+8jOWBnOatouWumuaXtuWZqCEiKTsvL+m6u+ixhlRW5q+P5qyh5Yi35paw5ZCO5Lya5bCGdmlwX2xldmVs5pu05paw5Li6MAogICAgICAgICAgICAgICAgLy9jbGVhckludGVydmFsKG15X3RpbWVyKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2Vycn1gKTsKICAgICAgICAgICAgc2hvd19lcnJfbG9nKGVycik7CiAgICAgICAgfQogICAgfQoKICAgIGxldCBteV90aW1lciA9IHNldEludGVydmFsKGdldF92aWRlb3VybCwgMjAwMCk7CgogICAgdmFyIG9sZGhyZWYgPSBsb2NhdGlvbi5ocmVmOwogICAgc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgewogICAgICAgIGlmIChsb2NhdGlvbi5ocmVmICE9IG9sZGhyZWYpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coIuebkeWQrOWIsOWcsOWdgOWPmOWMlizlho3mrKHlkK/liqjjgJDojrflj5bop4bpopHlrprml7blmajjgJEhIik7CiAgICAgICAgICAgIG9sZGhyZWYgPSBsb2NhdGlvbi5ocmVmOwogICAgICAgICAgICBlcnJfY250ID0gMDsKICAgICAgICAgICAgbXlfdGltZXIgPSBzZXRJbnRlcnZhbChnZXRfdmlkZW91cmwsIDIwMDApOwogICAgICAgIH0KICAgICAgICBpZih0b2RheSAhPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9kYXlfaXNfc2hvdycpICYmIE1hdGguYWJzKG5ldyBEYXRlKCkuZ2V0TWludXRlcygpIC0gbWluKSA+IDMgKXsvL+S7iuWkqeWcqOW9k+WJjeermeeCueayoeW8uei/h++8jOS4lOWcqOW9k+WJjemhtemdouWBnOeVmTPliIbpkp/ku6XkuIrml7YKICAgICAgICAgICAgY29uc29sZS5sb2coIuaUr+aMgeS9nOiAheW8ueeqlyEiKTsKICAgICAgICAgICAgc2hvd19zdXBwb3J0X2F1dGhvcigpOwogICAgICAgIH0KICAgIH0sIDEwMDApOwoKfSkoKTs=
Add Comment
Please, Sign In to add comment