3N4XMPXxEs6eZsy78Fgo4butfcAiwoDtG9P · data · 2.7c767379.chunk.js_8
{
    "2.7c767379.chunk.js_8": "base64:LGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCxuKXt2YXIgaT02NTUzNixvPTQyOTQ5NjcyOTU7dmFyIGE9cig4KS5CdWZmZXIscz10LmNyeXB0b3x8dC5tc0NyeXB0bztzJiZzLmdldFJhbmRvbVZhbHVlcz9lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihlPm8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgcj1hLmFsbG9jVW5zYWZlKGUpO2lmKGU+MClpZihlPmkpZm9yKHZhciB1PTA7dTxlO3UrPWkpcy5nZXRSYW5kb21WYWx1ZXMoci5zbGljZSh1LHUraSkpO2Vsc2Ugcy5nZXRSYW5kb21WYWx1ZXMocik7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiB0KXJldHVybiBuLm5leHRUaWNrKGZ1bmN0aW9uKCl7dChudWxsLHIpfSk7cmV0dXJuIHJ9OmUuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX19KS5jYWxsKHRoaXMscigzNCkscig0NikpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4KS5CdWZmZXI7ZnVuY3Rpb24gaShlLHQpe3RoaXMuX2Jsb2NrPW4uYWxsb2MoZSksdGhpcy5fZmluYWxTaXplPXQsdGhpcy5fYmxvY2tTaXplPWUsdGhpcy5fbGVuPTB9aS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7InN0cmluZyI9PT10eXBlb2YgZSYmKHQ9dHx8InV0ZjgiLGU9bi5mcm9tKGUsdCkpO2Zvcih2YXIgcj10aGlzLl9ibG9jayxpPXRoaXMuX2Jsb2NrU2l6ZSxvPWUubGVuZ3RoLGE9dGhpcy5fbGVuLHM9MDtzPG87KXtmb3IodmFyIHU9YSVpLGM9TWF0aC5taW4oby1zLGktdSksZj0wO2Y8YztmKyspclt1K2ZdPWVbcytmXTtzKz1jLChhKz1jKSVpPT09MCYmdGhpcy5fdXBkYXRlKHIpfXJldHVybiB0aGlzLl9sZW4rPW8sdGhpc30saS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2xlbiV0aGlzLl9ibG9ja1NpemU7dGhpcy5fYmxvY2tbdF09MTI4LHRoaXMuX2Jsb2NrLmZpbGwoMCx0KzEpLHQ+PXRoaXMuX2ZpbmFsU2l6ZSYmKHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jayksdGhpcy5fYmxvY2suZmlsbCgwKSk7dmFyIHI9OCp0aGlzLl9sZW47aWYocjw9NDI5NDk2NzI5NSl0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKHIsdGhpcy5fYmxvY2tTaXplLTQpO2Vsc2V7dmFyIG49KDQyOTQ5NjcyOTUmcik+Pj4wLGk9KHItbikvNDI5NDk2NzI5Njt0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKGksdGhpcy5fYmxvY2tTaXplLTgpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUobix0aGlzLl9ibG9ja1NpemUtNCl9dGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKTt2YXIgbz10aGlzLl9oYXNoKCk7cmV0dXJuIGU/by50b1N0cmluZyhlKTpvfSxpLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfdXBkYXRlIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MiKX0sZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYpO3IoMTApO3ZhciBpPWUuZXhwb3J0cz1uLnBlbT1uLnBlbXx8e307ZnVuY3Rpb24gbyhlKXtmb3IodmFyIHQ9ZS5uYW1lKyI6ICIscj1bXSxuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIiAiK3R9LGk9MDtpPGUudmFsdWVzLmxlbmd0aDsrK2kpci5wdXNoKGUudmFsdWVzW2ldLnJlcGxhY2UoL14oXFMrXHJcbikvLG4pKTt0Kz1yLmpvaW4oIiwiKSsiXHJcbiI7dmFyIG89MCxhPS0xO2ZvcihpPTA7aTx0Lmxlbmd0aDsrK2ksKytvKWlmKG8+NjUmJi0xIT09YSl7dmFyIHM9dFthXTsiLCI9PT1zPygrK2EsdD10LnN1YnN0cigwLGEpKyJcclxuICIrdC5zdWJzdHIoYSkpOnQ9dC5zdWJzdHIoMCxhKSsiXHJcbiIrcyt0LnN1YnN0cihhKzEpLG89aS1hLTEsYT0tMSwrK2l9ZWxzZSIgIiE9PXRbaV0mJiJcdCIhPT10W2ldJiYiLCIhPT10W2ldfHwoYT1pKTtyZXR1cm4gdH1mdW5jdGlvbiBhKGUpe3JldHVybiBlLnJlcGxhY2UoL15ccysvLCIiKX1pLmVuY29kZT1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIHIsaT0iLS0tLS1CRUdJTiAiK2UudHlwZSsiLS0tLS1cclxuIjtpZihlLnByb2NUeXBlJiYoaSs9byhyPXtuYW1lOiJQcm9jLVR5cGUiLHZhbHVlczpbU3RyaW5nKGUucHJvY1R5cGUudmVyc2lvbiksZS5wcm9jVHlwZS50eXBlXX0pKSxlLmNvbnRlbnREb21haW4mJihpKz1vKHI9e25hbWU6IkNvbnRlbnQtRG9tYWluIix2YWx1ZXM6W2UuY29udGVudERvbWFpbl19KSksZS5kZWtJbmZvJiYocj17bmFtZToiREVLLUluZm8iLHZhbHVlczpbZS5kZWtJbmZvLmFsZ29yaXRobV19LGUuZGVrSW5mby5wYXJhbWV0ZXJzJiZyLnZhbHVlcy5wdXNoKGUuZGVrSW5mby5wYXJhbWV0ZXJzKSxpKz1vKHIpKSxlLmhlYWRlcnMpZm9yKHZhciBhPTA7YTxlLmhlYWRlcnMubGVuZ3RoOysrYSlpKz1vKGUuaGVhZGVyc1thXSk7cmV0dXJuIGUucHJvY1R5cGUmJihpKz0iXHJcbiIpLGkrPW4udXRpbC5lbmNvZGU2NChlLmJvZHksdC5tYXhsaW5lfHw2NCkrIlxyXG4iLGkrPSItLS0tLUVORCAiK2UudHlwZSsiLS0tLS1cclxuIn0saS5kZWNvZGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9W10saT0vXHMqLS0tLS1CRUdJTiAoW0EtWjAtOS0gXSspLS0tLS1ccj9cbj8oW1x4MjEtXHg3ZVxzXSs/KD86XHI/XG5ccj9cbikpPyhbOkEtWmEtejAtOStcLz1cc10rPyktLS0tLUVORCBcMS0tLS0tL2csbz0vKFtceDIxLVx4N2VdKyk6XHMqKFtceDIxLVx4N2Vcc146XSspLyxzPS9ccj9cbi87dD1pLmV4ZWMoZSk7KXt2YXIgdT17dHlwZTp0WzFdLHByb2NUeXBlOm51bGwsY29udGVudERvbWFpbjpudWxsLGRla0luZm86bnVsbCxoZWFkZXJzOltdLGJvZHk6bi51dGlsLmRlY29kZTY0KHRbM10pfTtpZihyLnB1c2godSksdFsyXSl7Zm9yKHZhciBjPXRbMl0uc3BsaXQocyksZj0wO3QmJmY8Yy5sZW5ndGg7KXtmb3IodmFyIGw9Y1tmXS5yZXBsYWNlKC9ccyskLywiIiksaD1mKzE7aDxjLmxlbmd0aDsrK2gpe3ZhciBwPWNbaF07aWYoIS9ccy8udGVzdChwWzBdKSlicmVhaztsKz1wLGY9aH1pZih0PWwubWF0Y2gobykpe2Zvcih2YXIgZD17bmFtZTp0WzFdLHZhbHVlczpbXX0seT10WzJdLnNwbGl0KCIsIiksZz0wO2c8eS5sZW5ndGg7KytnKWQudmFsdWVzLnB1c2goYSh5W2ddKSk7aWYodS5wcm9jVHlwZSlpZih1LmNvbnRlbnREb21haW58fCJDb250ZW50LURvbWFpbiIhPT1kLm5hbWUpaWYodS5kZWtJbmZvfHwiREVLLUluZm8iIT09ZC5uYW1lKXUuaGVhZGVycy5wdXNoKGQpO2Vsc2V7aWYoMD09PWQudmFsdWVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUEVNIGZvcm1hdHRlZCBtZXNzYWdlLiBUaGUgIkRFSy1JbmZvIiBoZWFkZXIgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBzdWJmaWVsZC4nKTt1LmRla0luZm89e2FsZ29yaXRobTp5WzBdLHBhcmFtZXRlcnM6eVsxXXx8bnVsbH19ZWxzZSB1LmNvbnRlbnREb21haW49eVswXXx8IiI7ZWxzZXtpZigiUHJvYy1UeXBlIiE9PWQubmFtZSl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUEVNIGZvcm1hdHRlZCBtZXNzYWdlLiBUaGUgZmlyc3QgZW5jYXBzdWxhdGVkIGhlYWRlciBtdXN0IGJlICJQcm9jLVR5cGUiLicpO2lmKDIhPT1kLnZhbHVlcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBFTSBmb3JtYXR0ZWQgbWVzc2FnZS4gVGhlICJQcm9jLVR5cGUiIGhlYWRlciBtdXN0IGhhdmUgdHdvIHN1YmZpZWxkcy4nKTt1LnByb2NUeXBlPXt2ZXJzaW9uOnlbMF0sdHlwZTp5WzFdfX19KytmfWlmKCJFTkNSWVBURUQiPT09dS5wcm9jVHlwZSYmIXUuZGVrSW5mbyl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUEVNIGZvcm1hdHRlZCBtZXNzYWdlLiBUaGUgIkRFSy1JbmZvIiBoZWFkZXIgbXVzdCBiZSBwcmVzZW50IGlmICJQcm9jLVR5cGUiIGlzICJFTkNSWVBURUQiLicpfX1pZigwPT09ci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFBFTSBmb3JtYXR0ZWQgbWVzc2FnZS4iKTtyZXR1cm4gcn19LGZ1bmN0aW9uKGUsdCl7dmFyIHI9e30udG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbGwoZSkuc2xpY2UoOCwtMSl9fSxmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPSFyKDY4KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI4KS5mLGk9cig1MCksbz1yKDIxKSgidG9TdHJpbmdUYWciKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2UmJiFpKGU9cj9lOmUucHJvdG90eXBlLG8pJiZuKGUsbyx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOnR9KX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQyMyksaT1yKDI1NSk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMiksaT1yKDcxKSxvPXIoMTQpLGE9cigyNTcpLHM9IlsiK2ErIl0iLHU9UmVnRXhwKCJeIitzK3MrIioiKSxjPVJlZ0V4cChzK3MrIiokIiksZj1mdW5jdGlvbihlLHQscil7dmFyIGk9e30scz1vKGZ1bmN0aW9uKCl7cmV0dXJuISFhW2VdKCl8fCJcdTIwMGJceDg1IiE9Ilx1MjAwYlx4ODUiW2VdKCl9KSx1PWlbZV09cz90KGwpOmFbZV07ciYmKGlbcl09dSksbihuLlArbi5GKnMsIlN0cmluZyIsaSl9LGw9Zi50cmltPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9U3RyaW5nKGkoZSkpLDEmdCYmKGU9ZS5yZXBsYWNlKHUsIiIpKSwyJnQmJihlPWUucmVwbGFjZShjLCIiKSksZX07ZS5leHBvcnRzPWZ9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxNyksaT1yKDI4KSxvPXIoMjkpLGE9cigyMSkoInNwZWNpZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bltlXTtvJiZ0JiYhdFthXSYmaS5mKHQsYSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbil7aWYoIShlIGluc3RhbmNlb2YgdCl8fHZvaWQgMCE9PW4mJm4gaW4gZSl0aHJvdyBUeXBlRXJyb3IocisiOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEiKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgaSBpbiB0KW4oZSxpLHRbaV0scik7cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09PXR5cGVvZiBlP251bGwhPT1lOiJmdW5jdGlvbiI9PT10eXBlb2YgZX19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9IXIoODQpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMyksaT1yKDI5Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZpKGUubGVuZ3RoKSYmIW4oZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDc0KSxvPSJbb2JqZWN0IFN5bWJvbF0iO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGV8fGkoZSkmJm4oZSk9PW99fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG4saT0ib2JqZWN0Ij09PXR5cGVvZiBSZWZsZWN0P1JlZmxlY3Q6bnVsbCxvPWkmJiJmdW5jdGlvbiI9PT10eXBlb2YgaS5hcHBseT9pLmFwcGx5OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoZSx0LHIpfTtuPWkmJiJmdW5jdGlvbiI9PT10eXBlb2YgaS5vd25LZXlzP2kub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSl9OmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKX07dmFyIGE9TnVtYmVyLmlzTmFOfHxmdW5jdGlvbihlKXtyZXR1cm4gZSE9PWV9O2Z1bmN0aW9uIHMoKXtzLmluaXQuY2FsbCh0aGlzKX1lLmV4cG9ydHM9cyxzLkV2ZW50RW1pdHRlcj1zLHMucHJvdG90eXBlLl9ldmVudHM9dm9pZCAwLHMucHJvdG90eXBlLl9ldmVudHNDb3VudD0wLHMucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnM9dm9pZCAwO3ZhciB1PTEwO2Z1bmN0aW9uIGMoZSl7cmV0dXJuIHZvaWQgMD09PWUuX21heExpc3RlbmVycz9zLmRlZmF1bHRNYXhMaXN0ZW5lcnM6ZS5fbWF4TGlzdGVuZXJzfWZ1bmN0aW9uIGYoZSx0LHIsbil7dmFyIGksbyxhLHM7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiByKTtpZih2b2lkIDA9PT0obz1lLl9ldmVudHMpPyhvPWUuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLGUuX2V2ZW50c0NvdW50PTApOih2b2lkIDAhPT1vLm5ld0xpc3RlbmVyJiYoZS5lbWl0KCJuZXdMaXN0ZW5lciIsdCxyLmxpc3RlbmVyP3IubGlzdGVuZXI6ciksbz1lLl9ldmVudHMpLGE9b1t0XSksdm9pZCAwPT09YSlhPW9bdF09ciwrK2UuX2V2ZW50c0NvdW50O2Vsc2UgaWYoImZ1bmN0aW9uIj09PXR5cGVvZiBhP2E9b1t0XT1uP1tyLGFdOlthLHJdOm4/YS51bnNoaWZ0KHIpOmEucHVzaChyKSwoaT1jKGUpKT4wJiZhLmxlbmd0aD5pJiYhYS53YXJuZWQpe2Eud2FybmVkPSEwO3ZhciB1PW5ldyBFcnJvcigiUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAiK2EubGVuZ3RoKyIgIitTdHJpbmcodCkrIiBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0Iik7dS5uYW1lPSJNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmciLHUuZW1pdHRlcj1lLHUudHlwZT10LHUuY291bnQ9YS5sZW5ndGgscz11LGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKHMpfXJldHVybiBlfWZ1bmN0aW9uIGwoZSx0LHIpe3ZhciBuPXtmaXJlZDohMSx3cmFwRm46dm9pZCAwLHRhcmdldDplLHR5cGU6dCxsaXN0ZW5lcjpyfSxpPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWUucHVzaChhcmd1bWVudHNbdF0pO3RoaXMuZmlyZWR8fCh0aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsdGhpcy53cmFwRm4pLHRoaXMuZmlyZWQ9ITAsbyh0aGlzLmxpc3RlbmVyLHRoaXMudGFyZ2V0LGUpKX0uYmluZChuKTtyZXR1cm4gaS5saXN0ZW5lcj1yLG4ud3JhcEZuPWksaX1mdW5jdGlvbiBoKGUsdCxyKXt2YXIgbj1lLl9ldmVudHM7aWYodm9pZCAwPT09bilyZXR1cm5bXTt2YXIgaT1uW3RdO3JldHVybiB2b2lkIDA9PT1pP1tdOiJmdW5jdGlvbiI9PT10eXBlb2YgaT9yP1tpLmxpc3RlbmVyfHxpXTpbaV06cj9mdW5jdGlvbihlKXtmb3IodmFyIHQ9bmV3IEFycmF5KGUubGVuZ3RoKSxyPTA7cjx0Lmxlbmd0aDsrK3IpdFtyXT1lW3JdLmxpc3RlbmVyfHxlW3JdO3JldHVybiB0fShpKTpkKGksaS5sZW5ndGgpfWZ1bmN0aW9uIHAoZSl7dmFyIHQ9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PXQpe3ZhciByPXRbZV07aWYoImZ1bmN0aW9uIj09PXR5cGVvZiByKXJldHVybiAxO2lmKHZvaWQgMCE9PXIpcmV0dXJuIHIubGVuZ3RofXJldHVybiAwfWZ1bmN0aW9uIGQoZSx0KXtmb3IodmFyIHI9bmV3IEFycmF5KHQpLG49MDtuPHQ7KytuKXJbbl09ZVtuXTtyZXR1cm4gcn1PYmplY3QuZGVmaW5lUHJvcGVydHkocywiZGVmYXVsdE1heExpc3RlbmVycyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHV9LHNldDpmdW5jdGlvbihlKXtpZigibnVtYmVyIiE9PXR5cGVvZiBlfHxlPDB8fGEoZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAiZGVmYXVsdE1heExpc3RlbmVycyIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytlKyIuIik7dT1lfX0pLHMuaW5pdD1mdW5jdGlvbigpe3ZvaWQgMCE9PXRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHN8fCh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKSx0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5fbWF4TGlzdGVuZXJzfHx2b2lkIDB9LHMucHJvdG90eXBlLnNldE1heExpc3RlbmVycz1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9PXR5cGVvZiBlfHxlPDB8fGEoZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAibiIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytlKyIuIik7cmV0dXJuIHRoaXMuX21heExpc3RlbmVycz1lLHRoaXN9LHMucHJvdG90eXBlLmdldE1heExpc3RlbmVycz1mdW5jdGlvbigpe3JldHVybiBjKHRoaXMpfSxzLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0LnB1c2goYXJndW1lbnRzW3JdKTt2YXIgbj0iZXJyb3IiPT09ZSxpPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1pKW49biYmdm9pZCAwPT09aS5lcnJvcjtlbHNlIGlmKCFuKXJldHVybiExO2lmKG4pe3ZhciBhO2lmKHQubGVuZ3RoPjAmJihhPXRbMF0pLGEgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBhO3ZhciBzPW5ldyBFcnJvcigiVW5oYW5kbGVkIGVycm9yLiIrKGE/IiAoIithLm1lc3NhZ2UrIikiOiIiKSk7dGhyb3cgcy5jb250ZXh0PWEsc312YXIgdT1pW2VdO2lmKHZvaWQgMD09PXUpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiB1KW8odSx0aGlzLHQpO2Vsc2V7dmFyIGM9dS5sZW5ndGgsZj1kKHUsYyk7Zm9yKHI9MDtyPGM7KytyKW8oZltyXSx0aGlzLHQpfXJldHVybiEwfSxzLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3JldHVybiBmKHRoaXMsZSx0LCExKX0scy5wcm90b3R5cGUub249cy5wcm90b3R5cGUuYWRkTGlzdGVuZXIscy5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYodGhpcyxlLHQsITApfSxzLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTtyZXR1cm4gdGhpcy5vbihlLGwodGhpcyxlLHQpKSx0aGlzfSxzLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTtyZXR1cm4gdGhpcy5wcmVwZW5kTGlzdGVuZXIoZSxsKHRoaXMsZSx0KSksdGhpc30scy5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGksbyxhO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImxpc3RlbmVyIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgdCk7aWYodm9pZCAwPT09KG49dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT0ocj1uW2VdKSlyZXR1cm4gdGhpcztpZihyPT09dHx8ci5saXN0ZW5lcj09PXQpMD09PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6KGRlbGV0ZSBuW2VdLG4ucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLGUsci5saXN0ZW5lcnx8dCkpO2Vsc2UgaWYoImZ1bmN0aW9uIiE9PXR5cGVvZiByKXtmb3IoaT0tMSxvPXIubGVuZ3RoLTE7bz49MDtvLS0paWYocltvXT09PXR8fHJbb10ubGlzdGVuZXI9PT10KXthPXJbb10ubGlzdGVuZXIsaT1vO2JyZWFrfWlmKGk8MClyZXR1cm4gdGhpczswPT09aT9yLnNoaWZ0KCk6ZnVuY3Rpb24oZSx0KXtmb3IoO3QrMTxlLmxlbmd0aDt0KyspZVt0XT1lW3QrMV07ZS5wb3AoKX0ocixpKSwxPT09ci5sZW5ndGgmJihuW2VdPXJbMF0pLHZvaWQgMCE9PW4ucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLGUsYXx8dCl9cmV0dXJuIHRoaXN9LHMucHJvdG90eXBlLm9mZj1zLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcixzLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7dmFyIHQscixuO2lmKHZvaWQgMD09PShyPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7aWYodm9pZCAwPT09ci5yZW1vdmVMaXN0ZW5lcilyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApOnZvaWQgMCE9PXJbZV0mJigwPT09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTpkZWxldGUgcltlXSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIGksbz1PYmplY3Qua2V5cyhyKTtmb3Iobj0wO248by5sZW5ndGg7KytuKSJyZW1vdmVMaXN0ZW5lciIhPT0oaT1vW25dKSYmdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoaSk7cmV0dXJuIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCJyZW1vdmVMaXN0ZW5lciIpLHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTAsdGhpc31pZigiZnVuY3Rpb24iPT09dHlwZW9mKHQ9cltlXSkpdGhpcy5yZW1vdmVMaXN0ZW5lcihlLHQpO2Vsc2UgaWYodm9pZCAwIT09dClmb3Iobj10Lmxlbmd0aC0xO24+PTA7bi0tKXRoaXMucmVtb3ZlTGlzdGVuZXIoZSx0W25dKTtyZXR1cm4gdGhpc30scy5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybiBoKHRoaXMsZSwhMCl9LHMucHJvdG90eXBlLnJhd0xpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm4gaCh0aGlzLGUsITEpfSxzLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGUubGlzdGVuZXJDb3VudD9lLmxpc3RlbmVyQ291bnQodCk6cC5jYWxsKGUsdCl9LHMucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9cCxzLnByb3RvdHlwZS5ldmVudE5hbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50PjA/bih0aGlzLl9ldmVudHMpOltdfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDgyKSxpPXIoMTA0Nyksbz1yKDQ4OSksYT1yKDE5OSkscz1vKGZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm5bXTt2YXIgcj10Lmxlbmd0aDtyZXR1cm4gcj4xJiZhKGUsdFswXSx0WzFdKT90PVtdOnI+MiYmYSh0WzBdLHRbMV0sdFsyXSkmJih0PVt0WzBdXSksaShlLG4odCwxKSxbXSl9KTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDg1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPW51bGw9PWU/dm9pZCAwOm4oZSx0KTtyZXR1cm4gdm9pZCAwPT09aT9yOml9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDc0KSxvPSJbb2JqZWN0IE51bWJlcl0iO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV8fGkoZSkmJm4oZSk9PW99fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3NSksaT1yKDEwODApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD9pKGUsbih0LDIpKTpbXX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExMTQpKCk7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49e307ci5yKG4pLHIuZChuLCJzY2FsZUJhbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIGd0fSksci5kKG4sInNjYWxlUG9pbnQiLGZ1bmN0aW9uKCl7cmV0dXJuIHZ0fSksci5kKG4sInNjYWxlSWRlbnRpdHkiLGZ1bmN0aW9uKCl7cmV0dXJuIFRufSksci5kKG4sInNjYWxlTGluZWFyIixmdW5jdGlvbigpe3JldHVybiB3bn0pLHIuZChuLCJzY2FsZUxvZyIsZnVuY3Rpb24oKXtyZXR1cm4gUm59KSxyLmQobiwic2NhbGVTeW1sb2ciLGZ1bmN0aW9uKCl7cmV0dXJuIERufSksci5kKG4sInNjYWxlT3JkaW5hbCIsZnVuY3Rpb24oKXtyZXR1cm4geXR9KSxyLmQobiwic2NhbGVJbXBsaWNpdCIsZnVuY3Rpb24oKXtyZXR1cm4gZHR9KSxyLmQobiwic2NhbGVQb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIHFufSksci5kKG4sInNjYWxlU3FydCIsZnVuY3Rpb24oKXtyZXR1cm4gS259KSxyLmQobiwic2NhbGVRdWFudGlsZSIsZnVuY3Rpb24oKXtyZXR1cm4gem59KSxyLmQobiwic2NhbGVRdWFudGl6ZSIsZnVuY3Rpb24oKXtyZXR1cm4gR259KSxyLmQobiwic2NhbGVUaHJlc2hvbGQiLGZ1bmN0aW9uKCl7cmV0dXJuIEhufSksci5kKG4sInNjYWxlVGltZSIsZnVuY3Rpb24oKXtyZXR1cm4gaGF9KSxyLmQobiwic2NhbGVVdGMiLGZ1bmN0aW9uKCl7cmV0dXJuIHBhfSksci5kKG4sInNjYWxlU2VxdWVudGlhbCIsZnVuY3Rpb24oKXtyZXR1cm4gZ2F9KSxyLmQobiwic2NhbGVTZXF1ZW50aWFsTG9nIixmdW5jdGlvbigpe3JldHVybiB2YX0pLHIuZChuLCJzY2FsZVNlcXVlbnRpYWxQb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIGJhfSksci5kKG4sInNjYWxlU2VxdWVudGlhbFNxcnQiLGZ1bmN0aW9uKCl7cmV0dXJuIF9hfSksci5kKG4sInNjYWxlU2VxdWVudGlhbFN5bWxvZyIsZnVuY3Rpb24oKXtyZXR1cm4gbWF9KSxyLmQobiwic2NhbGVTZXF1ZW50aWFsUXVhbnRpbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIFNhfSksci5kKG4sInNjYWxlRGl2ZXJnaW5nIixmdW5jdGlvbigpe3JldHVybiB3YX0pLHIuZChuLCJzY2FsZURpdmVyZ2luZ0xvZyIsZnVuY3Rpb24oKXtyZXR1cm4gVGF9KSxyLmQobiwic2NhbGVEaXZlcmdpbmdQb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIENhfSksci5kKG4sInNjYWxlRGl2ZXJnaW5nU3FydCIsZnVuY3Rpb24oKXtyZXR1cm4geGF9KSxyLmQobiwic2NhbGVEaXZlcmdpbmdTeW1sb2ciLGZ1bmN0aW9uKCl7cmV0dXJuIEFhfSksci5kKG4sInRpY2tGb3JtYXQiLGZ1bmN0aW9uKCl7cmV0dXJuIFNufSk7cig5NDIpLHIoOTY0KTtpZighT2JqZWN0LnNldFByb3RvdHlwZU9mJiYhe30uX19wcm90b19fKXt2YXIgaT1PYmplY3QuZ2V0UHJvdG90eXBlT2Y7T2JqZWN0LmdldFByb3RvdHlwZU9mPWZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fXz9lLl9fcHJvdG9fXzppLmNhbGwoT2JqZWN0LGUpfX12YXIgbz1yKDM1KSxhPXIubihvKSxzPXIoMyksdT1yLm4ocyksYz1yKDQpLGY9ci5uKGMpLGw9cig1MDQpLGg9ci5uKGwpLHA9cig5KSxkPXIubihwKSx5PXIoMSksZz1yLm4oeSksdj1yKDApLG09ci5uKHYpLGI9cig1KSxfPXIubihiKSxTPXIoMjAzKSxFPXIubihTKSx3PXIoMTIyKSxUPXIubih3KSxBPXIoMTUzKSxDPXIubihBKSx4PXIoMTIzKSxJPXIubih4KSxrPXIoNzcpLE89ci5uKGspLE49ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lPzA6ZT4wPzE6LTF9LFA9ZnVuY3Rpb24oZSl7cmV0dXJuIE8oKShlKSYmZS5pbmRleE9mKCIlIik9PT1lLmxlbmd0aC0xfSxSPWZ1bmN0aW9uKGUpe3JldHVybiBJKCkoZSkmJiFDKCkoZSl9LEI9ZnVuY3Rpb24oZSl7cmV0dXJuIFIoZSl8fE8oKShlKX0sTT0wLEw9ZnVuY3Rpb24oZSl7dmFyIHQ9KytNO3JldHVybiIiLmNvbmNhdChlfHwiIikuY29uY2F0KHQpfSxEPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxpPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107aWYoIVIoZSkmJiFPKCkoZSkpcmV0dXJuIG47aWYoUChlKSl7dmFyIG89ZS5pbmRleE9mKCIlIik7cj10KnBhcnNlRmxvYXQoZS5zbGljZSgwLG8pKS8xMDB9ZWxzZSByPStlO3JldHVybiBDKCkocikmJihyPW4pLGkmJnI+dCYmKHI9dCkscn0saj1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDt2YXIgdD1PYmplY3Qua2V5cyhlKTtyZXR1cm4gdCYmdC5sZW5ndGg/ZVt0WzBdXTpudWxsfSxVPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFIoZSkmJlIodCk/ZnVuY3Rpb24ocil7cmV0dXJuIGUrcioodC1lKX06ZnVuY3Rpb24oKXtyZXR1cm4gdH19LEY9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlJiZlLmxlbmd0aD9lLmZpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlQoKShlLHQpPT09cn0pOm51bGx9O2Z1bmN0aW9uIFYoZSx0KXtmb3IodmFyIHIgaW4gZSlpZih7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJighe30uaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpfHxlW3JdIT09dFtyXSkpcmV0dXJuITE7Zm9yKHZhciBuIGluIHQpaWYoe30uaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYhe30uaGFzT3duUHJvcGVydHkuY2FsbChlLG4pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHEoZSx0KXtyZXR1cm4hVihlLHRoaXMucHJvcHMpfHwhVih0LHRoaXMuc3RhdGUpfWZ1bmN0aW9uIEsoZSl7ZS5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlPXF9ZnVuY3Rpb24geihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAscj1uZXcgQXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKXJbdF09ZVt0XTtyZXR1cm4gcn19KGUpfHxmdW5jdGlvbihlKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpfHwiW29iamVjdCBBcmd1bWVudHNdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX1mdW5jdGlvbiBHKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4saT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGlbcl09ZVtyXSk7cmV0dXJuIGl9KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYoaVtyXT1lW3JdKX1yZXR1cm4gaX12YXIgSD17ImFyaWEtY3VycmVudCI6bS5hLnN0cmluZywiYXJpYS1kZXRhaWxzIjptLmEuYW55LCJhcmlhLWRpc2FibGVkIjptLmEuYW55LCJhcmlhLWhpZGRlbiI6bS5hLmFueSwiYXJpYS1pbnZhbGlkIjptLmEuYW55LCJhcmlhLWtleXNob3J0Y3V0cyI6bS5hLmFueSwiYXJpYS1sYWJlbCI6bS5hLmFueSwiYXJpYS1yb2xlZGVzY3JpcHRpb24iOm0uYS5hbnksImFyaWEtYXV0b2NvbXBsZXRlIjptLmEuYW55LCJhcmlhLWNoZWNrZWQiOm0uYS5hbnksImFyaWEtZXhwYW5kZWQiOm0uYS5hbnksImFyaWEtaGFzcG9wdXAiOm0uYS5hbnksImFyaWEtbGV2ZWwiOm0uYS5hbnksImFyaWEtbW9kYWwiOm0uYS5hbnksImFyaWEtbXVsdGlsaW5lIjptLmEuYW55LCJhcmlhLW11bHRpc2VsZWN0YWJsZSI6bS5hLmFueSwiYXJpYS1vcmllbnRhdGlvbiI6bS5hLmFueSwiYXJpYS1wbGFjZWhvbGRlciI6bS5hLmFueSwiYXJpYS1wcmVzc2VkIjptLmEuYW55LCJhcmlhLXJlYWRvbmx5IjptLmEuYW55LCJhcmlhLXJlcXVpcmVkIjptLmEuYW55LCJhcmlhLXNlbGVjdGVkIjptLmEuYW55LCJhcmlhLXNvcnQiOm0uYS5hbnksImFyaWEtdmFsdWVtYXgiOm0uYS5hbnksImFyaWEtdmFsdWVtaW4iOm0uYS5hbnksImFyaWEtdmFsdWVub3ciOm0uYS5hbnksImFyaWEtdmFsdWV0ZXh0IjptLmEuYW55LCJhcmlhLWF0b21pYyI6bS5hLmFueSwiYXJpYS1idXN5IjptLmEuYW55LCJhcmlhLWxpdmUiOm0uYS5hbnksImFyaWEtcmVsZXZhbnQiOm0uYS5hbnksImFyaWEtZHJvcGVmZmVjdCI6bS5hLmFueSwiYXJpYS1ncmFiYmVkIjptLmEuYW55LCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiOm0uYS5hbnksImFyaWEtY29sY291bnQiOm0uYS5hbnksImFyaWEtY29saW5kZXgiOm0uYS5hbnksImFyaWEtY29sc3BhbiI6bS5hLmFueSwiYXJpYS1jb250cm9scyI6bS5hLmFueSwiYXJpYS1kZXNjcmliZWRieSI6bS5hLmFueSwiYXJpYS1lcnJvcm1lc3NhZ2UiOm0uYS5hbnksImFyaWEtZmxvd3RvIjptLmEuYW55LCJhcmlhLWxhYmVsbGVkYnkiOm0uYS5hbnksImFyaWEtb3ducyI6bS5hLmFueSwiYXJpYS1wb3NpbnNldCI6bS5hLmFueSwiYXJpYS1yb3djb3VudCI6bS5hLmFueSwiYXJpYS1yb3dpbmRleCI6bS5hLmFueSwiYXJpYS1yb3dzcGFuIjptLmEuYW55LCJhcmlhLXNldHNpemUiOm0uYS5hbnksYWxpZ25tZW50QmFzZWxpbmU6bS5hLnN0cmluZyxhbmdsZTptLmEubnVtYmVyLGJhc2VsaW5lU2hpZnQ6bS5hLnN0cmluZyxjbGlwOm0uYS5zdHJpbmcsY2xpcFBhdGg6bS5hLnN0cmluZyxjbGlwUnVsZTptLmEuc3RyaW5nLGNvbG9yOm0uYS5zdHJpbmcsY29sb3JJbnRlcnBvbGF0aW9uOm0uYS5zdHJpbmcsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczptLmEuc3RyaW5nLGNvbG9yUHJvZmlsZTptLmEuc3RyaW5nLGNvbG9yUmVuZGVyaW5nOm0uYS5zdHJpbmcsY3Vyc29yOm0uYS5zdHJpbmcsZGlyZWN0aW9uOm0uYS5vbmVPZihbImx0ciIsInJ0bCIsImluaGVyaXQiXSksZGlzcGxheTptLmEuc3RyaW5nLGRvbWluYW50QmFzZWxpbmU6bS5hLnN0cmluZyxlbmFibGVCYWNrZ3JvdW5kOm0uYS5zdHJpbmcsZmlsbDptLmEuc3RyaW5nLGZpbGxPcGFjaXR5Om0uYS5vbmVPZlR5cGUoW20uYS5zdHJpbmcsbS5hLm51bWJlcl0pLGZpbGxSdWxlOm0uYS5vbmVPZihbIm5vbnplcm8iLCJldmVub2RkIiwiaW5oZXJpdCJdKSxmaWx0ZXI6bS5hLnN0cmluZyxmbG9vZENvbG9yOm0uYS5zdHJpbmcsZmxvb2RPcGFjaXR5Om0uYS5vbmVPZlR5cGUoW20uYS5zdHJpbmcsbS5hLm51bWJlcl0pLGZvbnQ6bS5hLnN0cmluZyxmb250RmFtaWx5Om0uYS5zdHJpbmcsZm9udFNpemU6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksZm9udFNpemVBZGp1c3Q6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksZm9udFN0cmV0Y2g6bS5hLm9uZU9mKFsibm9ybWFsIiwid2lkZXIiLCJuYXJyb3dlciIsInVsdHJhLWNvbmRlbnNlZCIsImV4dHJhLWNvbmRlbnNlZCIsImNvbmRlbnNlZCIsInNlbWktY29uZGVuc2VkIiwic2VtaS1leHBhbmRlZCIsImV4cGFuZGVkIiwiZXh0cmEtZXhwYW5kZWQiLCJ1bHRyYS1leHBhbmRlZCIsImluaGVyaXQiXSksZm9udFN0eWxlOm0uYS5vbmVPZihbIm5vcm1hbCIsIml0YWxpYyIsIm9ibGlxdWUiLCJpbmhlcml0Il0pLGZvbnRWYXJpYW50Om0uYS5vbmVPZihbIm5vcm1hbCIsInNtYWxsLWNhcHMiLCJpbmhlcml0Il0pLGZvbnRXZWlnaHQ6bS5hLm9uZU9mKFsibm9ybWFsIiwiYm9sZCIsImJvbGRlciIsImxpZ2h0ZXIiLDEwMCwyMDAsMzAwLDQwMCw1MDAsNjAwLDcwMCw4MDAsOTAwLCJpbmhlcml0Il0pLGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOm0uYS5zdHJpbmcsZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOm0uYS5zdHJpbmcsaW1hZ2VSZW5kZXJpbmc6bS5hLm9uZU9mKFsiYXV0byIsIm9wdGltaXplU3BlZWQiLCJvcHRpbWl6ZVF1YWxpdHkiLCJpbmhlcml0Il0pLGtlcm5pbmc6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksbGV0dGVyU3BhY2luZzptLmEub25lT2ZUeXBlKFttLmEubnVtYmVyLG0uYS5zdHJpbmddKSxsaWdodGluZ0NvbG9yOm0uYS5zdHJpbmcsbGluZUhlaWdodDptLmEub25lT2ZUeXBlKFttLmEubnVtYmVyLG0uYS5zdHJpbmddKSxtYXJrZXJFbmQ6bS5hLnN0cmluZyxtYXJrZXJNaWQ6bS5hLnN0cmluZyxtYXJrZXJTdGFydDptLmEuc3RyaW5nLG1hc2s6bS5hLnN0cmluZyxvcGFjaXR5Om0uYS5vbmVPZlR5cGUoW20uYS5udW1iZXIsbS5hLnN0cmluZ10pLG92ZXJmbG93Om0uYS5vbmVPZihbInZpc2libGUiLCJoaWRkZW4iLCJzY3JvbGwiLCJhdXRvIiwiaW5oZXJpdCJdKSxwb2ludGVyRXZlbnRzOm0uYS5vbmVPZihbInZpc2libGVQYWludGVkIiwidmlzaWJsZUZpbGwiLCJ2aXNpYmxlU3Ryb2tlIiwidmlzaWJsZSIsInBhaW50ZWQiLCJmaWxsIiwic3Ryb2tlIiwiYWxsIiwibm9uZSIsImluaGVyaXQiXSksc2hhcGVSZW5kZXJpbmc6bS5hLm9uZU9mKFsiYXV0byIsIm9wdGltaXplU3BlZWQiLCJjcmlzcEVkZ2VzIiwiZ2VvbWV0cmljUHJlY2lzaW9uIiwiaW5oZXJpdCJdKSxzdG9wQ29sb3I6bS5hLnN0cmluZyxzdG9wT3BhY2l0eTptLmEub25lT2ZUeXBlKFttLmEubnVtYmVyLG0uYS5zdHJpbmddKSxzdHJva2U6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksc3Ryb2tlRGFzaGFycmF5Om0uYS5zdHJpbmcsc3Ryb2tlRGFzaG9mZnNldDptLmEub25lT2ZUeXBlKFttLmEubnVtYmVyLG0uYS5zdHJpbmddKSxzdHJva2VMaW5lY2FwOm0uYS5vbmVPZihbImJ1dHQiLCJyb3VuZCIsInNxdWFyZSIsImluaGVyaXQiXSksc3Ryb2tlTGluZWpvaW46bS5hLm9uZU9mKFsibWl0ZXIiLCJyb3VuZCIsImJldmVsIiwiaW5oZXJpdCJdKSxzdHJva2VNaXRlcmxpbWl0Om0uYS5vbmVPZlR5cGUoW20uYS5udW1iZXIsbS5hLnN0cmluZ10pLHN0cm9rZU9wYWNpdHk6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksc3Ryb2tlV2lkdGg6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksdGV4dEFuY2hvcjptLmEub25lT2YoWyJzdGFydCIsIm1pZGRsZSIsImVuZCIsImluaGVyaXQiXSksdGV4dERlY29yYXRpb246bS5hLm9uZU9mKFsibm9uZSIsInVuZGVybGluZSIsIm92ZXJsaW5lIiwibGluZS10aHJvdWdoIiwiYmxpbmsiLCJpbmhlcml0Il0pLHRleHRSZW5kZXJpbmc6bS5hLm9uZU9mKFsiYXV0byIsIm9wdGltaXplU3BlZWQiLCJvcHRpbWl6ZUxlZ2liaWxpdHkiLCJnZW9tZXRyaWNQcmVjaXNpb24iLCJpbmhlcml0Il0pLHVuaWNvZGVCaWRpOm0uYS5vbmVPZihbIm5vcm1hbCIsImVtYmVkIiwiYmlkaS1vdmVycmlkZSIsImluaGVyaXQiXSksdmlzaWJpbGl0eTptLmEub25lT2YoWyJ2aXNpYmxlIiwiaGlkZGVuIiwiY29sbGFwc2UiLCJpbmhlcml0Il0pLHdvcmRTcGFjaW5nOm0uYS5vbmVPZlR5cGUoW20uYS5udW1iZXIsbS5hLnN0cmluZ10pLHdyaXRpbmdNb2RlOm0uYS5vbmVPZihbImxyLXRiIiwicmwtdGIiLCJ0Yi1ybCIsImxyIiwicmwiLCJ0YiIsImluaGVyaXQiXSksdHJhbnNmb3JtOm0uYS5zdHJpbmcscm9sZTptLmEuc3RyaW5nLGZvY3VzYWJsZTptLmEuc3RyaW5nLHRhYkluZGV4Om0uYS5zdHJpbmcsc3R5bGU6bS5hLm9iamVjdCx3aWR0aDptLmEubnVtYmVyLGhlaWdodDptLmEubnVtYmVyLGR4Om0uYS5udW1iZXIsZHk6bS5hLm51bWJlcix4Om0uYS5udW1iZXIseTptLmEubnVtYmVyLHI6bS5hLm51bWJlcixyYWRpdXM6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuYXJyYXldKX0sVz17b25DbGljazptLmEuZnVuYyxvbk1vdXNlRG93bjptLmEuZnVuYyxvbk1vdXNlVXA6bS5hLmZ1bmMsb25Nb3VzZU92ZXI6bS5hLmZ1bmMsb25Nb3VzZU1vdmU6bS5hLmZ1bmMsb25Nb3VzZU91dDptLmEuZnVuYyxvbk1vdXNlRW50ZXI6bS5hLmZ1bmMsb25Nb3VzZUxlYXZlOm0uYS5mdW5jLG9uVG91Y2hFbmQ6bS5hLmZ1bmMsb25Ub3VjaE1vdmU6bS5hLmZ1bmMsb25Ub3VjaFN0YXJ0Om0uYS5mdW5jLG9uVG91Y2hDYW5jZWw6bS5hLmZ1bmN9LFk9e2NsaWNrOiJvbkNsaWNrIixtb3VzZWRvd246Im9uTW91c2VEb3duIixtb3VzZXVwOiJvbk1vdXNlVXAiLG1vdXNlb3Zlcjoib25Nb3VzZU92ZXIiLG1vdXNlbW92ZToib25Nb3VzZU1vdmUiLG1vdXNlb3V0OiJvbk1vdXNlT3V0Iixtb3VzZWVudGVyOiJvbk1vdXNlRW50ZXIiLG1vdXNlbGVhdmU6Im9uTW91c2VMZWF2ZSIsdG91Y2hjYW5jZWw6Im9uVG91Y2hDYW5jZWwiLHRvdWNoZW5kOiJvblRvdWNoRW5kIix0b3VjaG1vdmU6Im9uVG91Y2hNb3ZlIix0b3VjaHN0YXJ0OiJvblRvdWNoU3RhcnQifSxYPVsicGxhaW5saW5lIiwibGluZSIsInNxdWFyZSIsInJlY3QiLCJjaXJjbGUiLCJjcm9zcyIsImRpYW1vbmQiLCJzdGFyIiwidHJpYW5nbGUiLCJ3eWUiLCJub25lIl0sUT1bIm5vbmUiXSwkPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGU/ZTplP2UuZGlzcGxheU5hbWV8fGUubmFtZXx8IkNvbXBvbmVudCI6IiJ9LFo9ZnVuY3Rpb24oZSx0KXt2YXIgcj1bXSxuPVtdO3JldHVybiBuPWQoKSh0KT90Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gJChlKX0pOlskKHQpXSxnLmEuQ2hpbGRyZW4uZm9yRWFjaChlLGZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUudHlwZSYmKGUudHlwZS5kaXNwbGF5TmFtZXx8ZS50eXBlLm5hbWUpOy0xIT09bi5pbmRleE9mKHQpJiZyLnB1c2goZSl9KSxyfSxKPWZ1bmN0aW9uKGUsdCl7dmFyIHI9WihlLHQpO3JldHVybiByJiZyWzBdfSxlZT1mdW5jdGlvbihlKXtpZighZXx8dSgpKGUpKXJldHVybiBudWxsO3ZhciB0PWcuYS5pc1ZhbGlkRWxlbWVudChlKT9lLnByb3BzOmU7aWYoIWEoKSh0KSlyZXR1cm4gbnVsbDt2YXIgcj1udWxsO2Zvcih2YXIgbiBpbiB0KSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiZIW25dJiYocnx8KHI9e30pLHJbbl09dFtuXSk7cmV0dXJuIHJ9LHRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlKHQsciksbnVsbH19LHJlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtpZighZXx8dSgpKGUpKXJldHVybiBudWxsO3ZhciBuPWcuYS5pc1ZhbGlkRWxlbWVudChlKT9lLnByb3BzOmU7aWYoIWEoKShuKSlyZXR1cm4gbnVsbDt2YXIgaT1udWxsO2Zvcih2YXIgbyBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLG8pJiZXW29dJiYoaXx8KGk9e30pLGlbb109dHx8KHI/dGUobltvXSxuKTpuW29dKSk7cmV0dXJuIGl9LG5lPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGUodCxyLG4pLG51bGx9fSxpZT1mdW5jdGlvbihlLHQscil7aWYoIWEoKShlKSlyZXR1cm4gbnVsbDt2YXIgbj1udWxsO2Zvcih2YXIgaSBpbiBlKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChlLGkpJiZXW2ldJiZ1KCkoZVtpXSkmJihufHwobj17fSksbltpXT1uZShlW2ldLHQscikpO3JldHVybiBufSxvZT1mdW5jdGlvbihlKXtpZighZXx8IWUucHJvcHMpcmV0dXJuITE7dmFyIHQ9ZS5wcm9wcyxyPXQud2lkdGgsbj10LmhlaWdodDtyZXR1cm4hKCFSKHIpfHxyPD0wfHwhUihuKXx8bjw9MCl9LGFlPWZ1bmN0aW9uKCl7cmV0dXJuISgidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5kb2N1bWVudCYmd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQmJndpbmRvdy5zZXRUaW1lb3V0KX0sc2U9WyJhIiwiYWx0R2x5cGgiLCJhbHRHbHlwaERlZiIsImFsdEdseXBoSXRlbSIsImFuaW1hdGUiLCJhbmltYXRlQ29sb3IiLCJhbmltYXRlTW90aW9uIiwiYW5pbWF0ZVRyYW5zZm9ybSIsImNpcmNsZSIsImNsaXBQYXRoIiwiY29sb3ItcHJvZmlsZSIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZlQmxlbmQiLCJmZUNvbG9ybWF0cml4IiwiZmVDb21wb25lbnRUcmFuc2ZlciIsImZlQ29tcG9zaXRlIiwiZmVDb252b2x2ZU1hdHJpeCIsImZlRGlmZnVzZUxpZ2g="
}

Changelog:

{
    "2020.03.29 15:15": "base64:LGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCxuKXt2YXIgaT02NTUzNixvPTQyOTQ5NjcyOTU7dmFyIGE9cig4KS5CdWZmZXIscz10LmNyeXB0b3x8dC5tc0NyeXB0bztzJiZzLmdldFJhbmRvbVZhbHVlcz9lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihlPm8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgcj1hLmFsbG9jVW5zYWZlKGUpO2lmKGU+MClpZihlPmkpZm9yKHZhciB1PTA7dTxlO3UrPWkpcy5nZXRSYW5kb21WYWx1ZXMoci5zbGljZSh1LHUraSkpO2Vsc2Ugcy5nZXRSYW5kb21WYWx1ZXMocik7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiB0KXJldHVybiBuLm5leHRUaWNrKGZ1bmN0aW9uKCl7dChudWxsLHIpfSk7cmV0dXJuIHJ9OmUuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX19KS5jYWxsKHRoaXMscigzNCkscig0NikpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4KS5CdWZmZXI7ZnVuY3Rpb24gaShlLHQpe3RoaXMuX2Jsb2NrPW4uYWxsb2MoZSksdGhpcy5fZmluYWxTaXplPXQsdGhpcy5fYmxvY2tTaXplPWUsdGhpcy5fbGVuPTB9aS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7InN0cmluZyI9PT10eXBlb2YgZSYmKHQ9dHx8InV0ZjgiLGU9bi5mcm9tKGUsdCkpO2Zvcih2YXIgcj10aGlzLl9ibG9jayxpPXRoaXMuX2Jsb2NrU2l6ZSxvPWUubGVuZ3RoLGE9dGhpcy5fbGVuLHM9MDtzPG87KXtmb3IodmFyIHU9YSVpLGM9TWF0aC5taW4oby1zLGktdSksZj0wO2Y8YztmKyspclt1K2ZdPWVbcytmXTtzKz1jLChhKz1jKSVpPT09MCYmdGhpcy5fdXBkYXRlKHIpfXJldHVybiB0aGlzLl9sZW4rPW8sdGhpc30saS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2xlbiV0aGlzLl9ibG9ja1NpemU7dGhpcy5fYmxvY2tbdF09MTI4LHRoaXMuX2Jsb2NrLmZpbGwoMCx0KzEpLHQ+PXRoaXMuX2ZpbmFsU2l6ZSYmKHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jayksdGhpcy5fYmxvY2suZmlsbCgwKSk7dmFyIHI9OCp0aGlzLl9sZW47aWYocjw9NDI5NDk2NzI5NSl0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKHIsdGhpcy5fYmxvY2tTaXplLTQpO2Vsc2V7dmFyIG49KDQyOTQ5NjcyOTUmcik+Pj4wLGk9KHItbikvNDI5NDk2NzI5Njt0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKGksdGhpcy5fYmxvY2tTaXplLTgpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUobix0aGlzLl9ibG9ja1NpemUtNCl9dGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKTt2YXIgbz10aGlzLl9oYXNoKCk7cmV0dXJuIGU/by50b1N0cmluZyhlKTpvfSxpLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfdXBkYXRlIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MiKX0sZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYpO3IoMTApO3ZhciBpPWUuZXhwb3J0cz1uLnBlbT1uLnBlbXx8e307ZnVuY3Rpb24gbyhlKXtmb3IodmFyIHQ9ZS5uYW1lKyI6ICIscj1bXSxuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIiAiK3R9LGk9MDtpPGUudmFsdWVzLmxlbmd0aDsrK2kpci5wdXNoKGUudmFsdWVzW2ldLnJlcGxhY2UoL14oXFMrXHJcbikvLG4pKTt0Kz1yLmpvaW4oIiwiKSsiXHJcbiI7dmFyIG89MCxhPS0xO2ZvcihpPTA7aTx0Lmxlbmd0aDsrK2ksKytvKWlmKG8+NjUmJi0xIT09YSl7dmFyIHM9dFthXTsiLCI9PT1zPygrK2EsdD10LnN1YnN0cigwLGEpKyJcclxuICIrdC5zdWJzdHIoYSkpOnQ9dC5zdWJzdHIoMCxhKSsiXHJcbiIrcyt0LnN1YnN0cihhKzEpLG89aS1hLTEsYT0tMSwrK2l9ZWxzZSIgIiE9PXRbaV0mJiJcdCIhPT10W2ldJiYiLCIhPT10W2ldfHwoYT1pKTtyZXR1cm4gdH1mdW5jdGlvbiBhKGUpe3JldHVybiBlLnJlcGxhY2UoL15ccysvLCIiKX1pLmVuY29kZT1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIHIsaT0iLS0tLS1CRUdJTiAiK2UudHlwZSsiLS0tLS1cclxuIjtpZihlLnByb2NUeXBlJiYoaSs9byhyPXtuYW1lOiJQcm9jLVR5cGUiLHZhbHVlczpbU3RyaW5nKGUucHJvY1R5cGUudmVyc2lvbiksZS5wcm9jVHlwZS50eXBlXX0pKSxlLmNvbnRlbnREb21haW4mJihpKz1vKHI9e25hbWU6IkNvbnRlbnQtRG9tYWluIix2YWx1ZXM6W2UuY29udGVudERvbWFpbl19KSksZS5kZWtJbmZvJiYocj17bmFtZToiREVLLUluZm8iLHZhbHVlczpbZS5kZWtJbmZvLmFsZ29yaXRobV19LGUuZGVrSW5mby5wYXJhbWV0ZXJzJiZyLnZhbHVlcy5wdXNoKGUuZGVrSW5mby5wYXJhbWV0ZXJzKSxpKz1vKHIpKSxlLmhlYWRlcnMpZm9yKHZhciBhPTA7YTxlLmhlYWRlcnMubGVuZ3RoOysrYSlpKz1vKGUuaGVhZGVyc1thXSk7cmV0dXJuIGUucHJvY1R5cGUmJihpKz0iXHJcbiIpLGkrPW4udXRpbC5lbmNvZGU2NChlLmJvZHksdC5tYXhsaW5lfHw2NCkrIlxyXG4iLGkrPSItLS0tLUVORCAiK2UudHlwZSsiLS0tLS1cclxuIn0saS5kZWNvZGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9W10saT0vXHMqLS0tLS1CRUdJTiAoW0EtWjAtOS0gXSspLS0tLS1ccj9cbj8oW1x4MjEtXHg3ZVxzXSs/KD86XHI/XG5ccj9cbikpPyhbOkEtWmEtejAtOStcLz1cc10rPyktLS0tLUVORCBcMS0tLS0tL2csbz0vKFtceDIxLVx4N2VdKyk6XHMqKFtceDIxLVx4N2Vcc146XSspLyxzPS9ccj9cbi87dD1pLmV4ZWMoZSk7KXt2YXIgdT17dHlwZTp0WzFdLHByb2NUeXBlOm51bGwsY29udGVudERvbWFpbjpudWxsLGRla0luZm86bnVsbCxoZWFkZXJzOltdLGJvZHk6bi51dGlsLmRlY29kZTY0KHRbM10pfTtpZihyLnB1c2godSksdFsyXSl7Zm9yKHZhciBjPXRbMl0uc3BsaXQocyksZj0wO3QmJmY8Yy5sZW5ndGg7KXtmb3IodmFyIGw9Y1tmXS5yZXBsYWNlKC9ccyskLywiIiksaD1mKzE7aDxjLmxlbmd0aDsrK2gpe3ZhciBwPWNbaF07aWYoIS9ccy8udGVzdChwWzBdKSlicmVhaztsKz1wLGY9aH1pZih0PWwubWF0Y2gobykpe2Zvcih2YXIgZD17bmFtZTp0WzFdLHZhbHVlczpbXX0seT10WzJdLnNwbGl0KCIsIiksZz0wO2c8eS5sZW5ndGg7KytnKWQudmFsdWVzLnB1c2goYSh5W2ddKSk7aWYodS5wcm9jVHlwZSlpZih1LmNvbnRlbnREb21haW58fCJDb250ZW50LURvbWFpbiIhPT1kLm5hbWUpaWYodS5kZWtJbmZvfHwiREVLLUluZm8iIT09ZC5uYW1lKXUuaGVhZGVycy5wdXNoKGQpO2Vsc2V7aWYoMD09PWQudmFsdWVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUEVNIGZvcm1hdHRlZCBtZXNzYWdlLiBUaGUgIkRFSy1JbmZvIiBoZWFkZXIgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBzdWJmaWVsZC4nKTt1LmRla0luZm89e2FsZ29yaXRobTp5WzBdLHBhcmFtZXRlcnM6eVsxXXx8bnVsbH19ZWxzZSB1LmNvbnRlbnREb21haW49eVswXXx8IiI7ZWxzZXtpZigiUHJvYy1UeXBlIiE9PWQubmFtZSl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUEVNIGZvcm1hdHRlZCBtZXNzYWdlLiBUaGUgZmlyc3QgZW5jYXBzdWxhdGVkIGhlYWRlciBtdXN0IGJlICJQcm9jLVR5cGUiLicpO2lmKDIhPT1kLnZhbHVlcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBFTSBmb3JtYXR0ZWQgbWVzc2FnZS4gVGhlICJQcm9jLVR5cGUiIGhlYWRlciBtdXN0IGhhdmUgdHdvIHN1YmZpZWxkcy4nKTt1LnByb2NUeXBlPXt2ZXJzaW9uOnlbMF0sdHlwZTp5WzFdfX19KytmfWlmKCJFTkNSWVBURUQiPT09dS5wcm9jVHlwZSYmIXUuZGVrSW5mbyl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUEVNIGZvcm1hdHRlZCBtZXNzYWdlLiBUaGUgIkRFSy1JbmZvIiBoZWFkZXIgbXVzdCBiZSBwcmVzZW50IGlmICJQcm9jLVR5cGUiIGlzICJFTkNSWVBURUQiLicpfX1pZigwPT09ci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFBFTSBmb3JtYXR0ZWQgbWVzc2FnZS4iKTtyZXR1cm4gcn19LGZ1bmN0aW9uKGUsdCl7dmFyIHI9e30udG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbGwoZSkuc2xpY2UoOCwtMSl9fSxmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPSFyKDY4KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI4KS5mLGk9cig1MCksbz1yKDIxKSgidG9TdHJpbmdUYWciKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2UmJiFpKGU9cj9lOmUucHJvdG90eXBlLG8pJiZuKGUsbyx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOnR9KX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQyMyksaT1yKDI1NSk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMiksaT1yKDcxKSxvPXIoMTQpLGE9cigyNTcpLHM9IlsiK2ErIl0iLHU9UmVnRXhwKCJeIitzK3MrIioiKSxjPVJlZ0V4cChzK3MrIiokIiksZj1mdW5jdGlvbihlLHQscil7dmFyIGk9e30scz1vKGZ1bmN0aW9uKCl7cmV0dXJuISFhW2VdKCl8fCJcdTIwMGJceDg1IiE9Ilx1MjAwYlx4ODUiW2VdKCl9KSx1PWlbZV09cz90KGwpOmFbZV07ciYmKGlbcl09dSksbihuLlArbi5GKnMsIlN0cmluZyIsaSl9LGw9Zi50cmltPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9U3RyaW5nKGkoZSkpLDEmdCYmKGU9ZS5yZXBsYWNlKHUsIiIpKSwyJnQmJihlPWUucmVwbGFjZShjLCIiKSksZX07ZS5leHBvcnRzPWZ9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxNyksaT1yKDI4KSxvPXIoMjkpLGE9cigyMSkoInNwZWNpZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bltlXTtvJiZ0JiYhdFthXSYmaS5mKHQsYSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbil7aWYoIShlIGluc3RhbmNlb2YgdCl8fHZvaWQgMCE9PW4mJm4gaW4gZSl0aHJvdyBUeXBlRXJyb3IocisiOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEiKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgaSBpbiB0KW4oZSxpLHRbaV0scik7cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09PXR5cGVvZiBlP251bGwhPT1lOiJmdW5jdGlvbiI9PT10eXBlb2YgZX19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9IXIoODQpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMyksaT1yKDI5Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZpKGUubGVuZ3RoKSYmIW4oZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDc0KSxvPSJbb2JqZWN0IFN5bWJvbF0iO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGV8fGkoZSkmJm4oZSk9PW99fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG4saT0ib2JqZWN0Ij09PXR5cGVvZiBSZWZsZWN0P1JlZmxlY3Q6bnVsbCxvPWkmJiJmdW5jdGlvbiI9PT10eXBlb2YgaS5hcHBseT9pLmFwcGx5OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoZSx0LHIpfTtuPWkmJiJmdW5jdGlvbiI9PT10eXBlb2YgaS5vd25LZXlzP2kub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSl9OmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKX07dmFyIGE9TnVtYmVyLmlzTmFOfHxmdW5jdGlvbihlKXtyZXR1cm4gZSE9PWV9O2Z1bmN0aW9uIHMoKXtzLmluaXQuY2FsbCh0aGlzKX1lLmV4cG9ydHM9cyxzLkV2ZW50RW1pdHRlcj1zLHMucHJvdG90eXBlLl9ldmVudHM9dm9pZCAwLHMucHJvdG90eXBlLl9ldmVudHNDb3VudD0wLHMucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnM9dm9pZCAwO3ZhciB1PTEwO2Z1bmN0aW9uIGMoZSl7cmV0dXJuIHZvaWQgMD09PWUuX21heExpc3RlbmVycz9zLmRlZmF1bHRNYXhMaXN0ZW5lcnM6ZS5fbWF4TGlzdGVuZXJzfWZ1bmN0aW9uIGYoZSx0LHIsbil7dmFyIGksbyxhLHM7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiByKTtpZih2b2lkIDA9PT0obz1lLl9ldmVudHMpPyhvPWUuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLGUuX2V2ZW50c0NvdW50PTApOih2b2lkIDAhPT1vLm5ld0xpc3RlbmVyJiYoZS5lbWl0KCJuZXdMaXN0ZW5lciIsdCxyLmxpc3RlbmVyP3IubGlzdGVuZXI6ciksbz1lLl9ldmVudHMpLGE9b1t0XSksdm9pZCAwPT09YSlhPW9bdF09ciwrK2UuX2V2ZW50c0NvdW50O2Vsc2UgaWYoImZ1bmN0aW9uIj09PXR5cGVvZiBhP2E9b1t0XT1uP1tyLGFdOlthLHJdOm4/YS51bnNoaWZ0KHIpOmEucHVzaChyKSwoaT1jKGUpKT4wJiZhLmxlbmd0aD5pJiYhYS53YXJuZWQpe2Eud2FybmVkPSEwO3ZhciB1PW5ldyBFcnJvcigiUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAiK2EubGVuZ3RoKyIgIitTdHJpbmcodCkrIiBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0Iik7dS5uYW1lPSJNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmciLHUuZW1pdHRlcj1lLHUudHlwZT10LHUuY291bnQ9YS5sZW5ndGgscz11LGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKHMpfXJldHVybiBlfWZ1bmN0aW9uIGwoZSx0LHIpe3ZhciBuPXtmaXJlZDohMSx3cmFwRm46dm9pZCAwLHRhcmdldDplLHR5cGU6dCxsaXN0ZW5lcjpyfSxpPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWUucHVzaChhcmd1bWVudHNbdF0pO3RoaXMuZmlyZWR8fCh0aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsdGhpcy53cmFwRm4pLHRoaXMuZmlyZWQ9ITAsbyh0aGlzLmxpc3RlbmVyLHRoaXMudGFyZ2V0LGUpKX0uYmluZChuKTtyZXR1cm4gaS5saXN0ZW5lcj1yLG4ud3JhcEZuPWksaX1mdW5jdGlvbiBoKGUsdCxyKXt2YXIgbj1lLl9ldmVudHM7aWYodm9pZCAwPT09bilyZXR1cm5bXTt2YXIgaT1uW3RdO3JldHVybiB2b2lkIDA9PT1pP1tdOiJmdW5jdGlvbiI9PT10eXBlb2YgaT9yP1tpLmxpc3RlbmVyfHxpXTpbaV06cj9mdW5jdGlvbihlKXtmb3IodmFyIHQ9bmV3IEFycmF5KGUubGVuZ3RoKSxyPTA7cjx0Lmxlbmd0aDsrK3IpdFtyXT1lW3JdLmxpc3RlbmVyfHxlW3JdO3JldHVybiB0fShpKTpkKGksaS5sZW5ndGgpfWZ1bmN0aW9uIHAoZSl7dmFyIHQ9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PXQpe3ZhciByPXRbZV07aWYoImZ1bmN0aW9uIj09PXR5cGVvZiByKXJldHVybiAxO2lmKHZvaWQgMCE9PXIpcmV0dXJuIHIubGVuZ3RofXJldHVybiAwfWZ1bmN0aW9uIGQoZSx0KXtmb3IodmFyIHI9bmV3IEFycmF5KHQpLG49MDtuPHQ7KytuKXJbbl09ZVtuXTtyZXR1cm4gcn1PYmplY3QuZGVmaW5lUHJvcGVydHkocywiZGVmYXVsdE1heExpc3RlbmVycyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHV9LHNldDpmdW5jdGlvbihlKXtpZigibnVtYmVyIiE9PXR5cGVvZiBlfHxlPDB8fGEoZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAiZGVmYXVsdE1heExpc3RlbmVycyIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytlKyIuIik7dT1lfX0pLHMuaW5pdD1mdW5jdGlvbigpe3ZvaWQgMCE9PXRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHN8fCh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKSx0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5fbWF4TGlzdGVuZXJzfHx2b2lkIDB9LHMucHJvdG90eXBlLnNldE1heExpc3RlbmVycz1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9PXR5cGVvZiBlfHxlPDB8fGEoZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAibiIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytlKyIuIik7cmV0dXJuIHRoaXMuX21heExpc3RlbmVycz1lLHRoaXN9LHMucHJvdG90eXBlLmdldE1heExpc3RlbmVycz1mdW5jdGlvbigpe3JldHVybiBjKHRoaXMpfSxzLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0LnB1c2goYXJndW1lbnRzW3JdKTt2YXIgbj0iZXJyb3IiPT09ZSxpPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1pKW49biYmdm9pZCAwPT09aS5lcnJvcjtlbHNlIGlmKCFuKXJldHVybiExO2lmKG4pe3ZhciBhO2lmKHQubGVuZ3RoPjAmJihhPXRbMF0pLGEgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBhO3ZhciBzPW5ldyBFcnJvcigiVW5oYW5kbGVkIGVycm9yLiIrKGE/IiAoIithLm1lc3NhZ2UrIikiOiIiKSk7dGhyb3cgcy5jb250ZXh0PWEsc312YXIgdT1pW2VdO2lmKHZvaWQgMD09PXUpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiB1KW8odSx0aGlzLHQpO2Vsc2V7dmFyIGM9dS5sZW5ndGgsZj1kKHUsYyk7Zm9yKHI9MDtyPGM7KytyKW8oZltyXSx0aGlzLHQpfXJldHVybiEwfSxzLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3JldHVybiBmKHRoaXMsZSx0LCExKX0scy5wcm90b3R5cGUub249cy5wcm90b3R5cGUuYWRkTGlzdGVuZXIscy5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYodGhpcyxlLHQsITApfSxzLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTtyZXR1cm4gdGhpcy5vbihlLGwodGhpcyxlLHQpKSx0aGlzfSxzLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTtyZXR1cm4gdGhpcy5wcmVwZW5kTGlzdGVuZXIoZSxsKHRoaXMsZSx0KSksdGhpc30scy5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGksbyxhO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImxpc3RlbmVyIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgdCk7aWYodm9pZCAwPT09KG49dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT0ocj1uW2VdKSlyZXR1cm4gdGhpcztpZihyPT09dHx8ci5saXN0ZW5lcj09PXQpMD09PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6KGRlbGV0ZSBuW2VdLG4ucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLGUsci5saXN0ZW5lcnx8dCkpO2Vsc2UgaWYoImZ1bmN0aW9uIiE9PXR5cGVvZiByKXtmb3IoaT0tMSxvPXIubGVuZ3RoLTE7bz49MDtvLS0paWYocltvXT09PXR8fHJbb10ubGlzdGVuZXI9PT10KXthPXJbb10ubGlzdGVuZXIsaT1vO2JyZWFrfWlmKGk8MClyZXR1cm4gdGhpczswPT09aT9yLnNoaWZ0KCk6ZnVuY3Rpb24oZSx0KXtmb3IoO3QrMTxlLmxlbmd0aDt0KyspZVt0XT1lW3QrMV07ZS5wb3AoKX0ocixpKSwxPT09ci5sZW5ndGgmJihuW2VdPXJbMF0pLHZvaWQgMCE9PW4ucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLGUsYXx8dCl9cmV0dXJuIHRoaXN9LHMucHJvdG90eXBlLm9mZj1zLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcixzLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7dmFyIHQscixuO2lmKHZvaWQgMD09PShyPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7aWYodm9pZCAwPT09ci5yZW1vdmVMaXN0ZW5lcilyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApOnZvaWQgMCE9PXJbZV0mJigwPT09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTpkZWxldGUgcltlXSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIGksbz1PYmplY3Qua2V5cyhyKTtmb3Iobj0wO248by5sZW5ndGg7KytuKSJyZW1vdmVMaXN0ZW5lciIhPT0oaT1vW25dKSYmdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoaSk7cmV0dXJuIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCJyZW1vdmVMaXN0ZW5lciIpLHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTAsdGhpc31pZigiZnVuY3Rpb24iPT09dHlwZW9mKHQ9cltlXSkpdGhpcy5yZW1vdmVMaXN0ZW5lcihlLHQpO2Vsc2UgaWYodm9pZCAwIT09dClmb3Iobj10Lmxlbmd0aC0xO24+PTA7bi0tKXRoaXMucmVtb3ZlTGlzdGVuZXIoZSx0W25dKTtyZXR1cm4gdGhpc30scy5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybiBoKHRoaXMsZSwhMCl9LHMucHJvdG90eXBlLnJhd0xpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm4gaCh0aGlzLGUsITEpfSxzLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGUubGlzdGVuZXJDb3VudD9lLmxpc3RlbmVyQ291bnQodCk6cC5jYWxsKGUsdCl9LHMucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9cCxzLnByb3RvdHlwZS5ldmVudE5hbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50PjA/bih0aGlzLl9ldmVudHMpOltdfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDgyKSxpPXIoMTA0Nyksbz1yKDQ4OSksYT1yKDE5OSkscz1vKGZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm5bXTt2YXIgcj10Lmxlbmd0aDtyZXR1cm4gcj4xJiZhKGUsdFswXSx0WzFdKT90PVtdOnI+MiYmYSh0WzBdLHRbMV0sdFsyXSkmJih0PVt0WzBdXSksaShlLG4odCwxKSxbXSl9KTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDg1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPW51bGw9PWU/dm9pZCAwOm4oZSx0KTtyZXR1cm4gdm9pZCAwPT09aT9yOml9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDc0KSxvPSJbb2JqZWN0IE51bWJlcl0iO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV8fGkoZSkmJm4oZSk9PW99fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3NSksaT1yKDEwODApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD9pKGUsbih0LDIpKTpbXX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExMTQpKCk7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49e307ci5yKG4pLHIuZChuLCJzY2FsZUJhbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIGd0fSksci5kKG4sInNjYWxlUG9pbnQiLGZ1bmN0aW9uKCl7cmV0dXJuIHZ0fSksci5kKG4sInNjYWxlSWRlbnRpdHkiLGZ1bmN0aW9uKCl7cmV0dXJuIFRufSksci5kKG4sInNjYWxlTGluZWFyIixmdW5jdGlvbigpe3JldHVybiB3bn0pLHIuZChuLCJzY2FsZUxvZyIsZnVuY3Rpb24oKXtyZXR1cm4gUm59KSxyLmQobiwic2NhbGVTeW1sb2ciLGZ1bmN0aW9uKCl7cmV0dXJuIERufSksci5kKG4sInNjYWxlT3JkaW5hbCIsZnVuY3Rpb24oKXtyZXR1cm4geXR9KSxyLmQobiwic2NhbGVJbXBsaWNpdCIsZnVuY3Rpb24oKXtyZXR1cm4gZHR9KSxyLmQobiwic2NhbGVQb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIHFufSksci5kKG4sInNjYWxlU3FydCIsZnVuY3Rpb24oKXtyZXR1cm4gS259KSxyLmQobiwic2NhbGVRdWFudGlsZSIsZnVuY3Rpb24oKXtyZXR1cm4gem59KSxyLmQobiwic2NhbGVRdWFudGl6ZSIsZnVuY3Rpb24oKXtyZXR1cm4gR259KSxyLmQobiwic2NhbGVUaHJlc2hvbGQiLGZ1bmN0aW9uKCl7cmV0dXJuIEhufSksci5kKG4sInNjYWxlVGltZSIsZnVuY3Rpb24oKXtyZXR1cm4gaGF9KSxyLmQobiwic2NhbGVVdGMiLGZ1bmN0aW9uKCl7cmV0dXJuIHBhfSksci5kKG4sInNjYWxlU2VxdWVudGlhbCIsZnVuY3Rpb24oKXtyZXR1cm4gZ2F9KSxyLmQobiwic2NhbGVTZXF1ZW50aWFsTG9nIixmdW5jdGlvbigpe3JldHVybiB2YX0pLHIuZChuLCJzY2FsZVNlcXVlbnRpYWxQb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIGJhfSksci5kKG4sInNjYWxlU2VxdWVudGlhbFNxcnQiLGZ1bmN0aW9uKCl7cmV0dXJuIF9hfSksci5kKG4sInNjYWxlU2VxdWVudGlhbFN5bWxvZyIsZnVuY3Rpb24oKXtyZXR1cm4gbWF9KSxyLmQobiwic2NhbGVTZXF1ZW50aWFsUXVhbnRpbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIFNhfSksci5kKG4sInNjYWxlRGl2ZXJnaW5nIixmdW5jdGlvbigpe3JldHVybiB3YX0pLHIuZChuLCJzY2FsZURpdmVyZ2luZ0xvZyIsZnVuY3Rpb24oKXtyZXR1cm4gVGF9KSxyLmQobiwic2NhbGVEaXZlcmdpbmdQb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIENhfSksci5kKG4sInNjYWxlRGl2ZXJnaW5nU3FydCIsZnVuY3Rpb24oKXtyZXR1cm4geGF9KSxyLmQobiwic2NhbGVEaXZlcmdpbmdTeW1sb2ciLGZ1bmN0aW9uKCl7cmV0dXJuIEFhfSksci5kKG4sInRpY2tGb3JtYXQiLGZ1bmN0aW9uKCl7cmV0dXJuIFNufSk7cig5NDIpLHIoOTY0KTtpZighT2JqZWN0LnNldFByb3RvdHlwZU9mJiYhe30uX19wcm90b19fKXt2YXIgaT1PYmplY3QuZ2V0UHJvdG90eXBlT2Y7T2JqZWN0LmdldFByb3RvdHlwZU9mPWZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fXz9lLl9fcHJvdG9fXzppLmNhbGwoT2JqZWN0LGUpfX12YXIgbz1yKDM1KSxhPXIubihvKSxzPXIoMyksdT1yLm4ocyksYz1yKDQpLGY9ci5uKGMpLGw9cig1MDQpLGg9ci5uKGwpLHA9cig5KSxkPXIubihwKSx5PXIoMSksZz1yLm4oeSksdj1yKDApLG09ci5uKHYpLGI9cig1KSxfPXIubihiKSxTPXIoMjAzKSxFPXIubihTKSx3PXIoMTIyKSxUPXIubih3KSxBPXIoMTUzKSxDPXIubihBKSx4PXIoMTIzKSxJPXIubih4KSxrPXIoNzcpLE89ci5uKGspLE49ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lPzA6ZT4wPzE6LTF9LFA9ZnVuY3Rpb24oZSl7cmV0dXJuIE8oKShlKSYmZS5pbmRleE9mKCIlIik9PT1lLmxlbmd0aC0xfSxSPWZ1bmN0aW9uKGUpe3JldHVybiBJKCkoZSkmJiFDKCkoZSl9LEI9ZnVuY3Rpb24oZSl7cmV0dXJuIFIoZSl8fE8oKShlKX0sTT0wLEw9ZnVuY3Rpb24oZSl7dmFyIHQ9KytNO3JldHVybiIiLmNvbmNhdChlfHwiIikuY29uY2F0KHQpfSxEPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxpPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107aWYoIVIoZSkmJiFPKCkoZSkpcmV0dXJuIG47aWYoUChlKSl7dmFyIG89ZS5pbmRleE9mKCIlIik7cj10KnBhcnNlRmxvYXQoZS5zbGljZSgwLG8pKS8xMDB9ZWxzZSByPStlO3JldHVybiBDKCkocikmJihyPW4pLGkmJnI+dCYmKHI9dCkscn0saj1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDt2YXIgdD1PYmplY3Qua2V5cyhlKTtyZXR1cm4gdCYmdC5sZW5ndGg/ZVt0WzBdXTpudWxsfSxVPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFIoZSkmJlIodCk/ZnVuY3Rpb24ocil7cmV0dXJuIGUrcioodC1lKX06ZnVuY3Rpb24oKXtyZXR1cm4gdH19LEY9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlJiZlLmxlbmd0aD9lLmZpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlQoKShlLHQpPT09cn0pOm51bGx9O2Z1bmN0aW9uIFYoZSx0KXtmb3IodmFyIHIgaW4gZSlpZih7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJighe30uaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpfHxlW3JdIT09dFtyXSkpcmV0dXJuITE7Zm9yKHZhciBuIGluIHQpaWYoe30uaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYhe30uaGFzT3duUHJvcGVydHkuY2FsbChlLG4pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHEoZSx0KXtyZXR1cm4hVihlLHRoaXMucHJvcHMpfHwhVih0LHRoaXMuc3RhdGUpfWZ1bmN0aW9uIEsoZSl7ZS5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlPXF9ZnVuY3Rpb24geihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAscj1uZXcgQXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKXJbdF09ZVt0XTtyZXR1cm4gcn19KGUpfHxmdW5jdGlvbihlKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpfHwiW29iamVjdCBBcmd1bWVudHNdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX1mdW5jdGlvbiBHKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4saT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGlbcl09ZVtyXSk7cmV0dXJuIGl9KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYoaVtyXT1lW3JdKX1yZXR1cm4gaX12YXIgSD17ImFyaWEtY3VycmVudCI6bS5hLnN0cmluZywiYXJpYS1kZXRhaWxzIjptLmEuYW55LCJhcmlhLWRpc2FibGVkIjptLmEuYW55LCJhcmlhLWhpZGRlbiI6bS5hLmFueSwiYXJpYS1pbnZhbGlkIjptLmEuYW55LCJhcmlhLWtleXNob3J0Y3V0cyI6bS5hLmFueSwiYXJpYS1sYWJlbCI6bS5hLmFueSwiYXJpYS1yb2xlZGVzY3JpcHRpb24iOm0uYS5hbnksImFyaWEtYXV0b2NvbXBsZXRlIjptLmEuYW55LCJhcmlhLWNoZWNrZWQiOm0uYS5hbnksImFyaWEtZXhwYW5kZWQiOm0uYS5hbnksImFyaWEtaGFzcG9wdXAiOm0uYS5hbnksImFyaWEtbGV2ZWwiOm0uYS5hbnksImFyaWEtbW9kYWwiOm0uYS5hbnksImFyaWEtbXVsdGlsaW5lIjptLmEuYW55LCJhcmlhLW11bHRpc2VsZWN0YWJsZSI6bS5hLmFueSwiYXJpYS1vcmllbnRhdGlvbiI6bS5hLmFueSwiYXJpYS1wbGFjZWhvbGRlciI6bS5hLmFueSwiYXJpYS1wcmVzc2VkIjptLmEuYW55LCJhcmlhLXJlYWRvbmx5IjptLmEuYW55LCJhcmlhLXJlcXVpcmVkIjptLmEuYW55LCJhcmlhLXNlbGVjdGVkIjptLmEuYW55LCJhcmlhLXNvcnQiOm0uYS5hbnksImFyaWEtdmFsdWVtYXgiOm0uYS5hbnksImFyaWEtdmFsdWVtaW4iOm0uYS5hbnksImFyaWEtdmFsdWVub3ciOm0uYS5hbnksImFyaWEtdmFsdWV0ZXh0IjptLmEuYW55LCJhcmlhLWF0b21pYyI6bS5hLmFueSwiYXJpYS1idXN5IjptLmEuYW55LCJhcmlhLWxpdmUiOm0uYS5hbnksImFyaWEtcmVsZXZhbnQiOm0uYS5hbnksImFyaWEtZHJvcGVmZmVjdCI6bS5hLmFueSwiYXJpYS1ncmFiYmVkIjptLmEuYW55LCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiOm0uYS5hbnksImFyaWEtY29sY291bnQiOm0uYS5hbnksImFyaWEtY29saW5kZXgiOm0uYS5hbnksImFyaWEtY29sc3BhbiI6bS5hLmFueSwiYXJpYS1jb250cm9scyI6bS5hLmFueSwiYXJpYS1kZXNjcmliZWRieSI6bS5hLmFueSwiYXJpYS1lcnJvcm1lc3NhZ2UiOm0uYS5hbnksImFyaWEtZmxvd3RvIjptLmEuYW55LCJhcmlhLWxhYmVsbGVkYnkiOm0uYS5hbnksImFyaWEtb3ducyI6bS5hLmFueSwiYXJpYS1wb3NpbnNldCI6bS5hLmFueSwiYXJpYS1yb3djb3VudCI6bS5hLmFueSwiYXJpYS1yb3dpbmRleCI6bS5hLmFueSwiYXJpYS1yb3dzcGFuIjptLmEuYW55LCJhcmlhLXNldHNpemUiOm0uYS5hbnksYWxpZ25tZW50QmFzZWxpbmU6bS5hLnN0cmluZyxhbmdsZTptLmEubnVtYmVyLGJhc2VsaW5lU2hpZnQ6bS5hLnN0cmluZyxjbGlwOm0uYS5zdHJpbmcsY2xpcFBhdGg6bS5hLnN0cmluZyxjbGlwUnVsZTptLmEuc3RyaW5nLGNvbG9yOm0uYS5zdHJpbmcsY29sb3JJbnRlcnBvbGF0aW9uOm0uYS5zdHJpbmcsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczptLmEuc3RyaW5nLGNvbG9yUHJvZmlsZTptLmEuc3RyaW5nLGNvbG9yUmVuZGVyaW5nOm0uYS5zdHJpbmcsY3Vyc29yOm0uYS5zdHJpbmcsZGlyZWN0aW9uOm0uYS5vbmVPZihbImx0ciIsInJ0bCIsImluaGVyaXQiXSksZGlzcGxheTptLmEuc3RyaW5nLGRvbWluYW50QmFzZWxpbmU6bS5hLnN0cmluZyxlbmFibGVCYWNrZ3JvdW5kOm0uYS5zdHJpbmcsZmlsbDptLmEuc3RyaW5nLGZpbGxPcGFjaXR5Om0uYS5vbmVPZlR5cGUoW20uYS5zdHJpbmcsbS5hLm51bWJlcl0pLGZpbGxSdWxlOm0uYS5vbmVPZihbIm5vbnplcm8iLCJldmVub2RkIiwiaW5oZXJpdCJdKSxmaWx0ZXI6bS5hLnN0cmluZyxmbG9vZENvbG9yOm0uYS5zdHJpbmcsZmxvb2RPcGFjaXR5Om0uYS5vbmVPZlR5cGUoW20uYS5zdHJpbmcsbS5hLm51bWJlcl0pLGZvbnQ6bS5hLnN0cmluZyxmb250RmFtaWx5Om0uYS5zdHJpbmcsZm9udFNpemU6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksZm9udFNpemVBZGp1c3Q6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksZm9udFN0cmV0Y2g6bS5hLm9uZU9mKFsibm9ybWFsIiwid2lkZXIiLCJuYXJyb3dlciIsInVsdHJhLWNvbmRlbnNlZCIsImV4dHJhLWNvbmRlbnNlZCIsImNvbmRlbnNlZCIsInNlbWktY29uZGVuc2VkIiwic2VtaS1leHBhbmRlZCIsImV4cGFuZGVkIiwiZXh0cmEtZXhwYW5kZWQiLCJ1bHRyYS1leHBhbmRlZCIsImluaGVyaXQiXSksZm9udFN0eWxlOm0uYS5vbmVPZihbIm5vcm1hbCIsIml0YWxpYyIsIm9ibGlxdWUiLCJpbmhlcml0Il0pLGZvbnRWYXJpYW50Om0uYS5vbmVPZihbIm5vcm1hbCIsInNtYWxsLWNhcHMiLCJpbmhlcml0Il0pLGZvbnRXZWlnaHQ6bS5hLm9uZU9mKFsibm9ybWFsIiwiYm9sZCIsImJvbGRlciIsImxpZ2h0ZXIiLDEwMCwyMDAsMzAwLDQwMCw1MDAsNjAwLDcwMCw4MDAsOTAwLCJpbmhlcml0Il0pLGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOm0uYS5zdHJpbmcsZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOm0uYS5zdHJpbmcsaW1hZ2VSZW5kZXJpbmc6bS5hLm9uZU9mKFsiYXV0byIsIm9wdGltaXplU3BlZWQiLCJvcHRpbWl6ZVF1YWxpdHkiLCJpbmhlcml0Il0pLGtlcm5pbmc6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksbGV0dGVyU3BhY2luZzptLmEub25lT2ZUeXBlKFttLmEubnVtYmVyLG0uYS5zdHJpbmddKSxsaWdodGluZ0NvbG9yOm0uYS5zdHJpbmcsbGluZUhlaWdodDptLmEub25lT2ZUeXBlKFttLmEubnVtYmVyLG0uYS5zdHJpbmddKSxtYXJrZXJFbmQ6bS5hLnN0cmluZyxtYXJrZXJNaWQ6bS5hLnN0cmluZyxtYXJrZXJTdGFydDptLmEuc3RyaW5nLG1hc2s6bS5hLnN0cmluZyxvcGFjaXR5Om0uYS5vbmVPZlR5cGUoW20uYS5udW1iZXIsbS5hLnN0cmluZ10pLG92ZXJmbG93Om0uYS5vbmVPZihbInZpc2libGUiLCJoaWRkZW4iLCJzY3JvbGwiLCJhdXRvIiwiaW5oZXJpdCJdKSxwb2ludGVyRXZlbnRzOm0uYS5vbmVPZihbInZpc2libGVQYWludGVkIiwidmlzaWJsZUZpbGwiLCJ2aXNpYmxlU3Ryb2tlIiwidmlzaWJsZSIsInBhaW50ZWQiLCJmaWxsIiwic3Ryb2tlIiwiYWxsIiwibm9uZSIsImluaGVyaXQiXSksc2hhcGVSZW5kZXJpbmc6bS5hLm9uZU9mKFsiYXV0byIsIm9wdGltaXplU3BlZWQiLCJjcmlzcEVkZ2VzIiwiZ2VvbWV0cmljUHJlY2lzaW9uIiwiaW5oZXJpdCJdKSxzdG9wQ29sb3I6bS5hLnN0cmluZyxzdG9wT3BhY2l0eTptLmEub25lT2ZUeXBlKFttLmEubnVtYmVyLG0uYS5zdHJpbmddKSxzdHJva2U6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksc3Ryb2tlRGFzaGFycmF5Om0uYS5zdHJpbmcsc3Ryb2tlRGFzaG9mZnNldDptLmEub25lT2ZUeXBlKFttLmEubnVtYmVyLG0uYS5zdHJpbmddKSxzdHJva2VMaW5lY2FwOm0uYS5vbmVPZihbImJ1dHQiLCJyb3VuZCIsInNxdWFyZSIsImluaGVyaXQiXSksc3Ryb2tlTGluZWpvaW46bS5hLm9uZU9mKFsibWl0ZXIiLCJyb3VuZCIsImJldmVsIiwiaW5oZXJpdCJdKSxzdHJva2VNaXRlcmxpbWl0Om0uYS5vbmVPZlR5cGUoW20uYS5udW1iZXIsbS5hLnN0cmluZ10pLHN0cm9rZU9wYWNpdHk6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksc3Ryb2tlV2lkdGg6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksdGV4dEFuY2hvcjptLmEub25lT2YoWyJzdGFydCIsIm1pZGRsZSIsImVuZCIsImluaGVyaXQiXSksdGV4dERlY29yYXRpb246bS5hLm9uZU9mKFsibm9uZSIsInVuZGVybGluZSIsIm92ZXJsaW5lIiwibGluZS10aHJvdWdoIiwiYmxpbmsiLCJpbmhlcml0Il0pLHRleHRSZW5kZXJpbmc6bS5hLm9uZU9mKFsiYXV0byIsIm9wdGltaXplU3BlZWQiLCJvcHRpbWl6ZUxlZ2liaWxpdHkiLCJnZW9tZXRyaWNQcmVjaXNpb24iLCJpbmhlcml0Il0pLHVuaWNvZGVCaWRpOm0uYS5vbmVPZihbIm5vcm1hbCIsImVtYmVkIiwiYmlkaS1vdmVycmlkZSIsImluaGVyaXQiXSksdmlzaWJpbGl0eTptLmEub25lT2YoWyJ2aXNpYmxlIiwiaGlkZGVuIiwiY29sbGFwc2UiLCJpbmhlcml0Il0pLHdvcmRTcGFjaW5nOm0uYS5vbmVPZlR5cGUoW20uYS5udW1iZXIsbS5hLnN0cmluZ10pLHdyaXRpbmdNb2RlOm0uYS5vbmVPZihbImxyLXRiIiwicmwtdGIiLCJ0Yi1ybCIsImxyIiwicmwiLCJ0YiIsImluaGVyaXQiXSksdHJhbnNmb3JtOm0uYS5zdHJpbmcscm9sZTptLmEuc3RyaW5nLGZvY3VzYWJsZTptLmEuc3RyaW5nLHRhYkluZGV4Om0uYS5zdHJpbmcsc3R5bGU6bS5hLm9iamVjdCx3aWR0aDptLmEubnVtYmVyLGhlaWdodDptLmEubnVtYmVyLGR4Om0uYS5udW1iZXIsZHk6bS5hLm51bWJlcix4Om0uYS5udW1iZXIseTptLmEubnVtYmVyLHI6bS5hLm51bWJlcixyYWRpdXM6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuYXJyYXldKX0sVz17b25DbGljazptLmEuZnVuYyxvbk1vdXNlRG93bjptLmEuZnVuYyxvbk1vdXNlVXA6bS5hLmZ1bmMsb25Nb3VzZU92ZXI6bS5hLmZ1bmMsb25Nb3VzZU1vdmU6bS5hLmZ1bmMsb25Nb3VzZU91dDptLmEuZnVuYyxvbk1vdXNlRW50ZXI6bS5hLmZ1bmMsb25Nb3VzZUxlYXZlOm0uYS5mdW5jLG9uVG91Y2hFbmQ6bS5hLmZ1bmMsb25Ub3VjaE1vdmU6bS5hLmZ1bmMsb25Ub3VjaFN0YXJ0Om0uYS5mdW5jLG9uVG91Y2hDYW5jZWw6bS5hLmZ1bmN9LFk9e2NsaWNrOiJvbkNsaWNrIixtb3VzZWRvd246Im9uTW91c2VEb3duIixtb3VzZXVwOiJvbk1vdXNlVXAiLG1vdXNlb3Zlcjoib25Nb3VzZU92ZXIiLG1vdXNlbW92ZToib25Nb3VzZU1vdmUiLG1vdXNlb3V0OiJvbk1vdXNlT3V0Iixtb3VzZWVudGVyOiJvbk1vdXNlRW50ZXIiLG1vdXNlbGVhdmU6Im9uTW91c2VMZWF2ZSIsdG91Y2hjYW5jZWw6Im9uVG91Y2hDYW5jZWwiLHRvdWNoZW5kOiJvblRvdWNoRW5kIix0b3VjaG1vdmU6Im9uVG91Y2hNb3ZlIix0b3VjaHN0YXJ0OiJvblRvdWNoU3RhcnQifSxYPVsicGxhaW5saW5lIiwibGluZSIsInNxdWFyZSIsInJlY3QiLCJjaXJjbGUiLCJjcm9zcyIsImRpYW1vbmQiLCJzdGFyIiwidHJpYW5nbGUiLCJ3eWUiLCJub25lIl0sUT1bIm5vbmUiXSwkPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGU/ZTplP2UuZGlzcGxheU5hbWV8fGUubmFtZXx8IkNvbXBvbmVudCI6IiJ9LFo9ZnVuY3Rpb24oZSx0KXt2YXIgcj1bXSxuPVtdO3JldHVybiBuPWQoKSh0KT90Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gJChlKX0pOlskKHQpXSxnLmEuQ2hpbGRyZW4uZm9yRWFjaChlLGZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUudHlwZSYmKGUudHlwZS5kaXNwbGF5TmFtZXx8ZS50eXBlLm5hbWUpOy0xIT09bi5pbmRleE9mKHQpJiZyLnB1c2goZSl9KSxyfSxKPWZ1bmN0aW9uKGUsdCl7dmFyIHI9WihlLHQpO3JldHVybiByJiZyWzBdfSxlZT1mdW5jdGlvbihlKXtpZighZXx8dSgpKGUpKXJldHVybiBudWxsO3ZhciB0PWcuYS5pc1ZhbGlkRWxlbWVudChlKT9lLnByb3BzOmU7aWYoIWEoKSh0KSlyZXR1cm4gbnVsbDt2YXIgcj1udWxsO2Zvcih2YXIgbiBpbiB0KSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiZIW25dJiYocnx8KHI9e30pLHJbbl09dFtuXSk7cmV0dXJuIHJ9LHRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlKHQsciksbnVsbH19LHJlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtpZighZXx8dSgpKGUpKXJldHVybiBudWxsO3ZhciBuPWcuYS5pc1ZhbGlkRWxlbWVudChlKT9lLnByb3BzOmU7aWYoIWEoKShuKSlyZXR1cm4gbnVsbDt2YXIgaT1udWxsO2Zvcih2YXIgbyBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLG8pJiZXW29dJiYoaXx8KGk9e30pLGlbb109dHx8KHI/dGUobltvXSxuKTpuW29dKSk7cmV0dXJuIGl9LG5lPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGUodCxyLG4pLG51bGx9fSxpZT1mdW5jdGlvbihlLHQscil7aWYoIWEoKShlKSlyZXR1cm4gbnVsbDt2YXIgbj1udWxsO2Zvcih2YXIgaSBpbiBlKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChlLGkpJiZXW2ldJiZ1KCkoZVtpXSkmJihufHwobj17fSksbltpXT1uZShlW2ldLHQscikpO3JldHVybiBufSxvZT1mdW5jdGlvbihlKXtpZighZXx8IWUucHJvcHMpcmV0dXJuITE7dmFyIHQ9ZS5wcm9wcyxyPXQud2lkdGgsbj10LmhlaWdodDtyZXR1cm4hKCFSKHIpfHxyPD0wfHwhUihuKXx8bjw9MCl9LGFlPWZ1bmN0aW9uKCl7cmV0dXJuISgidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5kb2N1bWVudCYmd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQmJndpbmRvdy5zZXRUaW1lb3V0KX0sc2U9WyJhIiwiYWx0R2x5cGgiLCJhbHRHbHlwaERlZiIsImFsdEdseXBoSXRlbSIsImFuaW1hdGUiLCJhbmltYXRlQ29sb3IiLCJhbmltYXRlTW90aW9uIiwiYW5pbWF0ZVRyYW5zZm9ybSIsImNpcmNsZSIsImNsaXBQYXRoIiwiY29sb3ItcHJvZmlsZSIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZlQmxlbmQiLCJmZUNvbG9ybWF0cml4IiwiZmVDb21wb25lbnRUcmFuc2ZlciIsImZlQ29tcG9zaXRlIiwiZmVDb252b2x2ZU1hdHJpeCIsImZlRGlmZnVzZUxpZ2g=",
    "2020.03.29 15:15": "base64:LGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCxuKXt2YXIgaT02NTUzNixvPTQyOTQ5NjcyOTU7dmFyIGE9cig4KS5CdWZmZXIscz10LmNyeXB0b3x8dC5tc0NyeXB0bztzJiZzLmdldFJhbmRvbVZhbHVlcz9lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihlPm8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgcj1hLmFsbG9jVW5zYWZlKGUpO2lmKGU+MClpZihlPmkpZm9yKHZhciB1PTA7dTxlO3UrPWkpcy5nZXRSYW5kb21WYWx1ZXMoci5zbGljZSh1LHUraSkpO2Vsc2Ugcy5nZXRSYW5kb21WYWx1ZXMocik7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiB0KXJldHVybiBuLm5leHRUaWNrKGZ1bmN0aW9uKCl7dChudWxsLHIpfSk7cmV0dXJuIHJ9OmUuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX19KS5jYWxsKHRoaXMscigzNCkscig0NikpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4KS5CdWZmZXI7ZnVuY3Rpb24gaShlLHQpe3RoaXMuX2Jsb2NrPW4uYWxsb2MoZSksdGhpcy5fZmluYWxTaXplPXQsdGhpcy5fYmxvY2tTaXplPWUsdGhpcy5fbGVuPTB9aS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7InN0cmluZyI9PT10eXBlb2YgZSYmKHQ9dHx8InV0ZjgiLGU9bi5mcm9tKGUsdCkpO2Zvcih2YXIgcj10aGlzLl9ibG9jayxpPXRoaXMuX2Jsb2NrU2l6ZSxvPWUubGVuZ3RoLGE9dGhpcy5fbGVuLHM9MDtzPG87KXtmb3IodmFyIHU9YSVpLGM9TWF0aC5taW4oby1zLGktdSksZj0wO2Y8YztmKyspclt1K2ZdPWVbcytmXTtzKz1jLChhKz1jKSVpPT09MCYmdGhpcy5fdXBkYXRlKHIpfXJldHVybiB0aGlzLl9sZW4rPW8sdGhpc30saS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2xlbiV0aGlzLl9ibG9ja1NpemU7dGhpcy5fYmxvY2tbdF09MTI4LHRoaXMuX2Jsb2NrLmZpbGwoMCx0KzEpLHQ+PXRoaXMuX2ZpbmFsU2l6ZSYmKHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jayksdGhpcy5fYmxvY2suZmlsbCgwKSk7dmFyIHI9OCp0aGlzLl9sZW47aWYocjw9NDI5NDk2NzI5NSl0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKHIsdGhpcy5fYmxvY2tTaXplLTQpO2Vsc2V7dmFyIG49KDQyOTQ5NjcyOTUmcik+Pj4wLGk9KHItbikvNDI5NDk2NzI5Njt0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKGksdGhpcy5fYmxvY2tTaXplLTgpLHRoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUobix0aGlzLl9ibG9ja1NpemUtNCl9dGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKTt2YXIgbz10aGlzLl9oYXNoKCk7cmV0dXJuIGU/by50b1N0cmluZyhlKTpvfSxpLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJfdXBkYXRlIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MiKX0sZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDYpO3IoMTApO3ZhciBpPWUuZXhwb3J0cz1uLnBlbT1uLnBlbXx8e307ZnVuY3Rpb24gbyhlKXtmb3IodmFyIHQ9ZS5uYW1lKyI6ICIscj1bXSxuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIiAiK3R9LGk9MDtpPGUudmFsdWVzLmxlbmd0aDsrK2kpci5wdXNoKGUudmFsdWVzW2ldLnJlcGxhY2UoL14oXFMrXHJcbikvLG4pKTt0Kz1yLmpvaW4oIiwiKSsiXHJcbiI7dmFyIG89MCxhPS0xO2ZvcihpPTA7aTx0Lmxlbmd0aDsrK2ksKytvKWlmKG8+NjUmJi0xIT09YSl7dmFyIHM9dFthXTsiLCI9PT1zPygrK2EsdD10LnN1YnN0cigwLGEpKyJcclxuICIrdC5zdWJzdHIoYSkpOnQ9dC5zdWJzdHIoMCxhKSsiXHJcbiIrcyt0LnN1YnN0cihhKzEpLG89aS1hLTEsYT0tMSwrK2l9ZWxzZSIgIiE9PXRbaV0mJiJcdCIhPT10W2ldJiYiLCIhPT10W2ldfHwoYT1pKTtyZXR1cm4gdH1mdW5jdGlvbiBhKGUpe3JldHVybiBlLnJlcGxhY2UoL15ccysvLCIiKX1pLmVuY29kZT1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIHIsaT0iLS0tLS1CRUdJTiAiK2UudHlwZSsiLS0tLS1cclxuIjtpZihlLnByb2NUeXBlJiYoaSs9byhyPXtuYW1lOiJQcm9jLVR5cGUiLHZhbHVlczpbU3RyaW5nKGUucHJvY1R5cGUudmVyc2lvbiksZS5wcm9jVHlwZS50eXBlXX0pKSxlLmNvbnRlbnREb21haW4mJihpKz1vKHI9e25hbWU6IkNvbnRlbnQtRG9tYWluIix2YWx1ZXM6W2UuY29udGVudERvbWFpbl19KSksZS5kZWtJbmZvJiYocj17bmFtZToiREVLLUluZm8iLHZhbHVlczpbZS5kZWtJbmZvLmFsZ29yaXRobV19LGUuZGVrSW5mby5wYXJhbWV0ZXJzJiZyLnZhbHVlcy5wdXNoKGUuZGVrSW5mby5wYXJhbWV0ZXJzKSxpKz1vKHIpKSxlLmhlYWRlcnMpZm9yKHZhciBhPTA7YTxlLmhlYWRlcnMubGVuZ3RoOysrYSlpKz1vKGUuaGVhZGVyc1thXSk7cmV0dXJuIGUucHJvY1R5cGUmJihpKz0iXHJcbiIpLGkrPW4udXRpbC5lbmNvZGU2NChlLmJvZHksdC5tYXhsaW5lfHw2NCkrIlxyXG4iLGkrPSItLS0tLUVORCAiK2UudHlwZSsiLS0tLS1cclxuIn0saS5kZWNvZGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LHI9W10saT0vXHMqLS0tLS1CRUdJTiAoW0EtWjAtOS0gXSspLS0tLS1ccj9cbj8oW1x4MjEtXHg3ZVxzXSs/KD86XHI/XG5ccj9cbikpPyhbOkEtWmEtejAtOStcLz1cc10rPyktLS0tLUVORCBcMS0tLS0tL2csbz0vKFtceDIxLVx4N2VdKyk6XHMqKFtceDIxLVx4N2Vcc146XSspLyxzPS9ccj9cbi87dD1pLmV4ZWMoZSk7KXt2YXIgdT17dHlwZTp0WzFdLHByb2NUeXBlOm51bGwsY29udGVudERvbWFpbjpudWxsLGRla0luZm86bnVsbCxoZWFkZXJzOltdLGJvZHk6bi51dGlsLmRlY29kZTY0KHRbM10pfTtpZihyLnB1c2godSksdFsyXSl7Zm9yKHZhciBjPXRbMl0uc3BsaXQocyksZj0wO3QmJmY8Yy5sZW5ndGg7KXtmb3IodmFyIGw9Y1tmXS5yZXBsYWNlKC9ccyskLywiIiksaD1mKzE7aDxjLmxlbmd0aDsrK2gpe3ZhciBwPWNbaF07aWYoIS9ccy8udGVzdChwWzBdKSlicmVhaztsKz1wLGY9aH1pZih0PWwubWF0Y2gobykpe2Zvcih2YXIgZD17bmFtZTp0WzFdLHZhbHVlczpbXX0seT10WzJdLnNwbGl0KCIsIiksZz0wO2c8eS5sZW5ndGg7KytnKWQudmFsdWVzLnB1c2goYSh5W2ddKSk7aWYodS5wcm9jVHlwZSlpZih1LmNvbnRlbnREb21haW58fCJDb250ZW50LURvbWFpbiIhPT1kLm5hbWUpaWYodS5kZWtJbmZvfHwiREVLLUluZm8iIT09ZC5uYW1lKXUuaGVhZGVycy5wdXNoKGQpO2Vsc2V7aWYoMD09PWQudmFsdWVzLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUEVNIGZvcm1hdHRlZCBtZXNzYWdlLiBUaGUgIkRFSy1JbmZvIiBoZWFkZXIgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBzdWJmaWVsZC4nKTt1LmRla0luZm89e2FsZ29yaXRobTp5WzBdLHBhcmFtZXRlcnM6eVsxXXx8bnVsbH19ZWxzZSB1LmNvbnRlbnREb21haW49eVswXXx8IiI7ZWxzZXtpZigiUHJvYy1UeXBlIiE9PWQubmFtZSl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUEVNIGZvcm1hdHRlZCBtZXNzYWdlLiBUaGUgZmlyc3QgZW5jYXBzdWxhdGVkIGhlYWRlciBtdXN0IGJlICJQcm9jLVR5cGUiLicpO2lmKDIhPT1kLnZhbHVlcy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBFTSBmb3JtYXR0ZWQgbWVzc2FnZS4gVGhlICJQcm9jLVR5cGUiIGhlYWRlciBtdXN0IGhhdmUgdHdvIHN1YmZpZWxkcy4nKTt1LnByb2NUeXBlPXt2ZXJzaW9uOnlbMF0sdHlwZTp5WzFdfX19KytmfWlmKCJFTkNSWVBURUQiPT09dS5wcm9jVHlwZSYmIXUuZGVrSW5mbyl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUEVNIGZvcm1hdHRlZCBtZXNzYWdlLiBUaGUgIkRFSy1JbmZvIiBoZWFkZXIgbXVzdCBiZSBwcmVzZW50IGlmICJQcm9jLVR5cGUiIGlzICJFTkNSWVBURUQiLicpfX1pZigwPT09ci5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIFBFTSBmb3JtYXR0ZWQgbWVzc2FnZS4iKTtyZXR1cm4gcn19LGZ1bmN0aW9uKGUsdCl7dmFyIHI9e30udG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbGwoZSkuc2xpY2UoOCwtMSl9fSxmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPSFyKDY4KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI4KS5mLGk9cig1MCksbz1yKDIxKSgidG9TdHJpbmdUYWciKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2UmJiFpKGU9cj9lOmUucHJvdG90eXBlLG8pJiZuKGUsbyx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOnR9KX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQyMyksaT1yKDI1NSk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMiksaT1yKDcxKSxvPXIoMTQpLGE9cigyNTcpLHM9IlsiK2ErIl0iLHU9UmVnRXhwKCJeIitzK3MrIioiKSxjPVJlZ0V4cChzK3MrIiokIiksZj1mdW5jdGlvbihlLHQscil7dmFyIGk9e30scz1vKGZ1bmN0aW9uKCl7cmV0dXJuISFhW2VdKCl8fCJcdTIwMGJceDg1IiE9Ilx1MjAwYlx4ODUiW2VdKCl9KSx1PWlbZV09cz90KGwpOmFbZV07ciYmKGlbcl09dSksbihuLlArbi5GKnMsIlN0cmluZyIsaSl9LGw9Zi50cmltPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9U3RyaW5nKGkoZSkpLDEmdCYmKGU9ZS5yZXBsYWNlKHUsIiIpKSwyJnQmJihlPWUucmVwbGFjZShjLCIiKSksZX07ZS5leHBvcnRzPWZ9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxNyksaT1yKDI4KSxvPXIoMjkpLGE9cigyMSkoInNwZWNpZXMiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bltlXTtvJiZ0JiYhdFthXSYmaS5mKHQsYSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsbil7aWYoIShlIGluc3RhbmNlb2YgdCl8fHZvaWQgMCE9PW4mJm4gaW4gZSl0aHJvdyBUeXBlRXJyb3IocisiOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEiKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgaSBpbiB0KW4oZSxpLHRbaV0scik7cmV0dXJuIGV9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09PXR5cGVvZiBlP251bGwhPT1lOiJmdW5jdGlvbiI9PT10eXBlb2YgZX19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9IXIoODQpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMyksaT1yKDI5Nyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZpKGUubGVuZ3RoKSYmIW4oZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDc0KSxvPSJbb2JqZWN0IFN5bWJvbF0iO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIGV8fGkoZSkmJm4oZSk9PW99fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG4saT0ib2JqZWN0Ij09PXR5cGVvZiBSZWZsZWN0P1JlZmxlY3Q6bnVsbCxvPWkmJiJmdW5jdGlvbiI9PT10eXBlb2YgaS5hcHBseT9pLmFwcGx5OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoZSx0LHIpfTtuPWkmJiJmdW5jdGlvbiI9PT10eXBlb2YgaS5vd25LZXlzP2kub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSl9OmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKX07dmFyIGE9TnVtYmVyLmlzTmFOfHxmdW5jdGlvbihlKXtyZXR1cm4gZSE9PWV9O2Z1bmN0aW9uIHMoKXtzLmluaXQuY2FsbCh0aGlzKX1lLmV4cG9ydHM9cyxzLkV2ZW50RW1pdHRlcj1zLHMucHJvdG90eXBlLl9ldmVudHM9dm9pZCAwLHMucHJvdG90eXBlLl9ldmVudHNDb3VudD0wLHMucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnM9dm9pZCAwO3ZhciB1PTEwO2Z1bmN0aW9uIGMoZSl7cmV0dXJuIHZvaWQgMD09PWUuX21heExpc3RlbmVycz9zLmRlZmF1bHRNYXhMaXN0ZW5lcnM6ZS5fbWF4TGlzdGVuZXJzfWZ1bmN0aW9uIGYoZSx0LHIsbil7dmFyIGksbyxhLHM7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiByKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiByKTtpZih2b2lkIDA9PT0obz1lLl9ldmVudHMpPyhvPWUuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLGUuX2V2ZW50c0NvdW50PTApOih2b2lkIDAhPT1vLm5ld0xpc3RlbmVyJiYoZS5lbWl0KCJuZXdMaXN0ZW5lciIsdCxyLmxpc3RlbmVyP3IubGlzdGVuZXI6ciksbz1lLl9ldmVudHMpLGE9b1t0XSksdm9pZCAwPT09YSlhPW9bdF09ciwrK2UuX2V2ZW50c0NvdW50O2Vsc2UgaWYoImZ1bmN0aW9uIj09PXR5cGVvZiBhP2E9b1t0XT1uP1tyLGFdOlthLHJdOm4/YS51bnNoaWZ0KHIpOmEucHVzaChyKSwoaT1jKGUpKT4wJiZhLmxlbmd0aD5pJiYhYS53YXJuZWQpe2Eud2FybmVkPSEwO3ZhciB1PW5ldyBFcnJvcigiUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAiK2EubGVuZ3RoKyIgIitTdHJpbmcodCkrIiBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0Iik7dS5uYW1lPSJNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmciLHUuZW1pdHRlcj1lLHUudHlwZT10LHUuY291bnQ9YS5sZW5ndGgscz11LGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKHMpfXJldHVybiBlfWZ1bmN0aW9uIGwoZSx0LHIpe3ZhciBuPXtmaXJlZDohMSx3cmFwRm46dm9pZCAwLHRhcmdldDplLHR5cGU6dCxsaXN0ZW5lcjpyfSxpPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWUucHVzaChhcmd1bWVudHNbdF0pO3RoaXMuZmlyZWR8fCh0aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsdGhpcy53cmFwRm4pLHRoaXMuZmlyZWQ9ITAsbyh0aGlzLmxpc3RlbmVyLHRoaXMudGFyZ2V0LGUpKX0uYmluZChuKTtyZXR1cm4gaS5saXN0ZW5lcj1yLG4ud3JhcEZuPWksaX1mdW5jdGlvbiBoKGUsdCxyKXt2YXIgbj1lLl9ldmVudHM7aWYodm9pZCAwPT09bilyZXR1cm5bXTt2YXIgaT1uW3RdO3JldHVybiB2b2lkIDA9PT1pP1tdOiJmdW5jdGlvbiI9PT10eXBlb2YgaT9yP1tpLmxpc3RlbmVyfHxpXTpbaV06cj9mdW5jdGlvbihlKXtmb3IodmFyIHQ9bmV3IEFycmF5KGUubGVuZ3RoKSxyPTA7cjx0Lmxlbmd0aDsrK3IpdFtyXT1lW3JdLmxpc3RlbmVyfHxlW3JdO3JldHVybiB0fShpKTpkKGksaS5sZW5ndGgpfWZ1bmN0aW9uIHAoZSl7dmFyIHQ9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PXQpe3ZhciByPXRbZV07aWYoImZ1bmN0aW9uIj09PXR5cGVvZiByKXJldHVybiAxO2lmKHZvaWQgMCE9PXIpcmV0dXJuIHIubGVuZ3RofXJldHVybiAwfWZ1bmN0aW9uIGQoZSx0KXtmb3IodmFyIHI9bmV3IEFycmF5KHQpLG49MDtuPHQ7KytuKXJbbl09ZVtuXTtyZXR1cm4gcn1PYmplY3QuZGVmaW5lUHJvcGVydHkocywiZGVmYXVsdE1heExpc3RlbmVycyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHV9LHNldDpmdW5jdGlvbihlKXtpZigibnVtYmVyIiE9PXR5cGVvZiBlfHxlPDB8fGEoZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAiZGVmYXVsdE1heExpc3RlbmVycyIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytlKyIuIik7dT1lfX0pLHMuaW5pdD1mdW5jdGlvbigpe3ZvaWQgMCE9PXRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHN8fCh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKSx0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5fbWF4TGlzdGVuZXJzfHx2b2lkIDB9LHMucHJvdG90eXBlLnNldE1heExpc3RlbmVycz1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9PXR5cGVvZiBlfHxlPDB8fGEoZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiAibiIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJytlKyIuIik7cmV0dXJuIHRoaXMuX21heExpc3RlbmVycz1lLHRoaXN9LHMucHJvdG90eXBlLmdldE1heExpc3RlbmVycz1mdW5jdGlvbigpe3JldHVybiBjKHRoaXMpfSxzLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0LnB1c2goYXJndW1lbnRzW3JdKTt2YXIgbj0iZXJyb3IiPT09ZSxpPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1pKW49biYmdm9pZCAwPT09aS5lcnJvcjtlbHNlIGlmKCFuKXJldHVybiExO2lmKG4pe3ZhciBhO2lmKHQubGVuZ3RoPjAmJihhPXRbMF0pLGEgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBhO3ZhciBzPW5ldyBFcnJvcigiVW5oYW5kbGVkIGVycm9yLiIrKGE/IiAoIithLm1lc3NhZ2UrIikiOiIiKSk7dGhyb3cgcy5jb250ZXh0PWEsc312YXIgdT1pW2VdO2lmKHZvaWQgMD09PXUpcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiB1KW8odSx0aGlzLHQpO2Vsc2V7dmFyIGM9dS5sZW5ndGgsZj1kKHUsYyk7Zm9yKHI9MDtyPGM7KytyKW8oZltyXSx0aGlzLHQpfXJldHVybiEwfSxzLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3JldHVybiBmKHRoaXMsZSx0LCExKX0scy5wcm90b3R5cGUub249cy5wcm90b3R5cGUuYWRkTGlzdGVuZXIscy5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYodGhpcyxlLHQsITApfSxzLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTtyZXR1cm4gdGhpcy5vbihlLGwodGhpcyxlLHQpKSx0aGlzfSxzLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTtyZXR1cm4gdGhpcy5wcmVwZW5kTGlzdGVuZXIoZSxsKHRoaXMsZSx0KSksdGhpc30scy5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXt2YXIgcixuLGksbyxhO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgImxpc3RlbmVyIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgdCk7aWYodm9pZCAwPT09KG49dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT0ocj1uW2VdKSlyZXR1cm4gdGhpcztpZihyPT09dHx8ci5saXN0ZW5lcj09PXQpMD09PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6KGRlbGV0ZSBuW2VdLG4ucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLGUsci5saXN0ZW5lcnx8dCkpO2Vsc2UgaWYoImZ1bmN0aW9uIiE9PXR5cGVvZiByKXtmb3IoaT0tMSxvPXIubGVuZ3RoLTE7bz49MDtvLS0paWYocltvXT09PXR8fHJbb10ubGlzdGVuZXI9PT10KXthPXJbb10ubGlzdGVuZXIsaT1vO2JyZWFrfWlmKGk8MClyZXR1cm4gdGhpczswPT09aT9yLnNoaWZ0KCk6ZnVuY3Rpb24oZSx0KXtmb3IoO3QrMTxlLmxlbmd0aDt0KyspZVt0XT1lW3QrMV07ZS5wb3AoKX0ocixpKSwxPT09ci5sZW5ndGgmJihuW2VdPXJbMF0pLHZvaWQgMCE9PW4ucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdCgicmVtb3ZlTGlzdGVuZXIiLGUsYXx8dCl9cmV0dXJuIHRoaXN9LHMucHJvdG90eXBlLm9mZj1zLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcixzLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7dmFyIHQscixuO2lmKHZvaWQgMD09PShyPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7aWYodm9pZCAwPT09ci5yZW1vdmVMaXN0ZW5lcilyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApOnZvaWQgMCE9PXJbZV0mJigwPT09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTpkZWxldGUgcltlXSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIGksbz1PYmplY3Qua2V5cyhyKTtmb3Iobj0wO248by5sZW5ndGg7KytuKSJyZW1vdmVMaXN0ZW5lciIhPT0oaT1vW25dKSYmdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoaSk7cmV0dXJuIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCJyZW1vdmVMaXN0ZW5lciIpLHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTAsdGhpc31pZigiZnVuY3Rpb24iPT09dHlwZW9mKHQ9cltlXSkpdGhpcy5yZW1vdmVMaXN0ZW5lcihlLHQpO2Vsc2UgaWYodm9pZCAwIT09dClmb3Iobj10Lmxlbmd0aC0xO24+PTA7bi0tKXRoaXMucmVtb3ZlTGlzdGVuZXIoZSx0W25dKTtyZXR1cm4gdGhpc30scy5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybiBoKHRoaXMsZSwhMCl9LHMucHJvdG90eXBlLnJhd0xpc3RlbmVycz1mdW5jdGlvbihlKXtyZXR1cm4gaCh0aGlzLGUsITEpfSxzLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGUubGlzdGVuZXJDb3VudD9lLmxpc3RlbmVyQ291bnQodCk6cC5jYWxsKGUsdCl9LHMucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9cCxzLnByb3RvdHlwZS5ldmVudE5hbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50PjA/bih0aGlzLl9ldmVudHMpOltdfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDgyKSxpPXIoMTA0Nyksbz1yKDQ4OSksYT1yKDE5OSkscz1vKGZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm5bXTt2YXIgcj10Lmxlbmd0aDtyZXR1cm4gcj4xJiZhKGUsdFswXSx0WzFdKT90PVtdOnI+MiYmYSh0WzBdLHRbMV0sdFsyXSkmJih0PVt0WzBdXSksaShlLG4odCwxKSxbXSl9KTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDg1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpPW51bGw9PWU/dm9pZCAwOm4oZSx0KTtyZXR1cm4gdm9pZCAwPT09aT9yOml9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDc0KSxvPSJbb2JqZWN0IE51bWJlcl0iO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV8fGkoZSkmJm4oZSk9PW99fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3NSksaT1yKDEwODApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBlJiZlLmxlbmd0aD9pKGUsbih0LDIpKTpbXX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExMTQpKCk7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49e307ci5yKG4pLHIuZChuLCJzY2FsZUJhbmQiLGZ1bmN0aW9uKCl7cmV0dXJuIGd0fSksci5kKG4sInNjYWxlUG9pbnQiLGZ1bmN0aW9uKCl7cmV0dXJuIHZ0fSksci5kKG4sInNjYWxlSWRlbnRpdHkiLGZ1bmN0aW9uKCl7cmV0dXJuIFRufSksci5kKG4sInNjYWxlTGluZWFyIixmdW5jdGlvbigpe3JldHVybiB3bn0pLHIuZChuLCJzY2FsZUxvZyIsZnVuY3Rpb24oKXtyZXR1cm4gUm59KSxyLmQobiwic2NhbGVTeW1sb2ciLGZ1bmN0aW9uKCl7cmV0dXJuIERufSksci5kKG4sInNjYWxlT3JkaW5hbCIsZnVuY3Rpb24oKXtyZXR1cm4geXR9KSxyLmQobiwic2NhbGVJbXBsaWNpdCIsZnVuY3Rpb24oKXtyZXR1cm4gZHR9KSxyLmQobiwic2NhbGVQb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIHFufSksci5kKG4sInNjYWxlU3FydCIsZnVuY3Rpb24oKXtyZXR1cm4gS259KSxyLmQobiwic2NhbGVRdWFudGlsZSIsZnVuY3Rpb24oKXtyZXR1cm4gem59KSxyLmQobiwic2NhbGVRdWFudGl6ZSIsZnVuY3Rpb24oKXtyZXR1cm4gR259KSxyLmQobiwic2NhbGVUaHJlc2hvbGQiLGZ1bmN0aW9uKCl7cmV0dXJuIEhufSksci5kKG4sInNjYWxlVGltZSIsZnVuY3Rpb24oKXtyZXR1cm4gaGF9KSxyLmQobiwic2NhbGVVdGMiLGZ1bmN0aW9uKCl7cmV0dXJuIHBhfSksci5kKG4sInNjYWxlU2VxdWVudGlhbCIsZnVuY3Rpb24oKXtyZXR1cm4gZ2F9KSxyLmQobiwic2NhbGVTZXF1ZW50aWFsTG9nIixmdW5jdGlvbigpe3JldHVybiB2YX0pLHIuZChuLCJzY2FsZVNlcXVlbnRpYWxQb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIGJhfSksci5kKG4sInNjYWxlU2VxdWVudGlhbFNxcnQiLGZ1bmN0aW9uKCl7cmV0dXJuIF9hfSksci5kKG4sInNjYWxlU2VxdWVudGlhbFN5bWxvZyIsZnVuY3Rpb24oKXtyZXR1cm4gbWF9KSxyLmQobiwic2NhbGVTZXF1ZW50aWFsUXVhbnRpbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIFNhfSksci5kKG4sInNjYWxlRGl2ZXJnaW5nIixmdW5jdGlvbigpe3JldHVybiB3YX0pLHIuZChuLCJzY2FsZURpdmVyZ2luZ0xvZyIsZnVuY3Rpb24oKXtyZXR1cm4gVGF9KSxyLmQobiwic2NhbGVEaXZlcmdpbmdQb3ciLGZ1bmN0aW9uKCl7cmV0dXJuIENhfSksci5kKG4sInNjYWxlRGl2ZXJnaW5nU3FydCIsZnVuY3Rpb24oKXtyZXR1cm4geGF9KSxyLmQobiwic2NhbGVEaXZlcmdpbmdTeW1sb2ciLGZ1bmN0aW9uKCl7cmV0dXJuIEFhfSksci5kKG4sInRpY2tGb3JtYXQiLGZ1bmN0aW9uKCl7cmV0dXJuIFNufSk7cig5NDIpLHIoOTY0KTtpZighT2JqZWN0LnNldFByb3RvdHlwZU9mJiYhe30uX19wcm90b19fKXt2YXIgaT1PYmplY3QuZ2V0UHJvdG90eXBlT2Y7T2JqZWN0LmdldFByb3RvdHlwZU9mPWZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fXz9lLl9fcHJvdG9fXzppLmNhbGwoT2JqZWN0LGUpfX12YXIgbz1yKDM1KSxhPXIubihvKSxzPXIoMyksdT1yLm4ocyksYz1yKDQpLGY9ci5uKGMpLGw9cig1MDQpLGg9ci5uKGwpLHA9cig5KSxkPXIubihwKSx5PXIoMSksZz1yLm4oeSksdj1yKDApLG09ci5uKHYpLGI9cig1KSxfPXIubihiKSxTPXIoMjAzKSxFPXIubihTKSx3PXIoMTIyKSxUPXIubih3KSxBPXIoMTUzKSxDPXIubihBKSx4PXIoMTIzKSxJPXIubih4KSxrPXIoNzcpLE89ci5uKGspLE49ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT1lPzA6ZT4wPzE6LTF9LFA9ZnVuY3Rpb24oZSl7cmV0dXJuIE8oKShlKSYmZS5pbmRleE9mKCIlIik9PT1lLmxlbmd0aC0xfSxSPWZ1bmN0aW9uKGUpe3JldHVybiBJKCkoZSkmJiFDKCkoZSl9LEI9ZnVuY3Rpb24oZSl7cmV0dXJuIFIoZSl8fE8oKShlKX0sTT0wLEw9ZnVuY3Rpb24oZSl7dmFyIHQ9KytNO3JldHVybiIiLmNvbmNhdChlfHwiIikuY29uY2F0KHQpfSxEPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MCxpPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiZhcmd1bWVudHNbM107aWYoIVIoZSkmJiFPKCkoZSkpcmV0dXJuIG47aWYoUChlKSl7dmFyIG89ZS5pbmRleE9mKCIlIik7cj10KnBhcnNlRmxvYXQoZS5zbGljZSgwLG8pKS8xMDB9ZWxzZSByPStlO3JldHVybiBDKCkocikmJihyPW4pLGkmJnI+dCYmKHI9dCkscn0saj1mdW5jdGlvbihlKXtpZighZSlyZXR1cm4gbnVsbDt2YXIgdD1PYmplY3Qua2V5cyhlKTtyZXR1cm4gdCYmdC5sZW5ndGg/ZVt0WzBdXTpudWxsfSxVPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFIoZSkmJlIodCk/ZnVuY3Rpb24ocil7cmV0dXJuIGUrcioodC1lKX06ZnVuY3Rpb24oKXtyZXR1cm4gdH19LEY9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlJiZlLmxlbmd0aD9lLmZpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlQoKShlLHQpPT09cn0pOm51bGx9O2Z1bmN0aW9uIFYoZSx0KXtmb3IodmFyIHIgaW4gZSlpZih7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJighe30uaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpfHxlW3JdIT09dFtyXSkpcmV0dXJuITE7Zm9yKHZhciBuIGluIHQpaWYoe30uaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYhe30uaGFzT3duUHJvcGVydHkuY2FsbChlLG4pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIHEoZSx0KXtyZXR1cm4hVihlLHRoaXMucHJvcHMpfHwhVih0LHRoaXMuc3RhdGUpfWZ1bmN0aW9uIEsoZSl7ZS5wcm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlPXF9ZnVuY3Rpb24geihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0PTAscj1uZXcgQXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKXJbdF09ZVt0XTtyZXR1cm4gcn19KGUpfHxmdW5jdGlvbihlKXtpZihTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpfHwiW29iamVjdCBBcmd1bWVudHNdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UiKX0oKX1mdW5jdGlvbiBHKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGk9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4saT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGlbcl09ZVtyXSk7cmV0dXJuIGl9KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYoaVtyXT1lW3JdKX1yZXR1cm4gaX12YXIgSD17ImFyaWEtY3VycmVudCI6bS5hLnN0cmluZywiYXJpYS1kZXRhaWxzIjptLmEuYW55LCJhcmlhLWRpc2FibGVkIjptLmEuYW55LCJhcmlhLWhpZGRlbiI6bS5hLmFueSwiYXJpYS1pbnZhbGlkIjptLmEuYW55LCJhcmlhLWtleXNob3J0Y3V0cyI6bS5hLmFueSwiYXJpYS1sYWJlbCI6bS5hLmFueSwiYXJpYS1yb2xlZGVzY3JpcHRpb24iOm0uYS5hbnksImFyaWEtYXV0b2NvbXBsZXRlIjptLmEuYW55LCJhcmlhLWNoZWNrZWQiOm0uYS5hbnksImFyaWEtZXhwYW5kZWQiOm0uYS5hbnksImFyaWEtaGFzcG9wdXAiOm0uYS5hbnksImFyaWEtbGV2ZWwiOm0uYS5hbnksImFyaWEtbW9kYWwiOm0uYS5hbnksImFyaWEtbXVsdGlsaW5lIjptLmEuYW55LCJhcmlhLW11bHRpc2VsZWN0YWJsZSI6bS5hLmFueSwiYXJpYS1vcmllbnRhdGlvbiI6bS5hLmFueSwiYXJpYS1wbGFjZWhvbGRlciI6bS5hLmFueSwiYXJpYS1wcmVzc2VkIjptLmEuYW55LCJhcmlhLXJlYWRvbmx5IjptLmEuYW55LCJhcmlhLXJlcXVpcmVkIjptLmEuYW55LCJhcmlhLXNlbGVjdGVkIjptLmEuYW55LCJhcmlhLXNvcnQiOm0uYS5hbnksImFyaWEtdmFsdWVtYXgiOm0uYS5hbnksImFyaWEtdmFsdWVtaW4iOm0uYS5hbnksImFyaWEtdmFsdWVub3ciOm0uYS5hbnksImFyaWEtdmFsdWV0ZXh0IjptLmEuYW55LCJhcmlhLWF0b21pYyI6bS5hLmFueSwiYXJpYS1idXN5IjptLmEuYW55LCJhcmlhLWxpdmUiOm0uYS5hbnksImFyaWEtcmVsZXZhbnQiOm0uYS5hbnksImFyaWEtZHJvcGVmZmVjdCI6bS5hLmFueSwiYXJpYS1ncmFiYmVkIjptLmEuYW55LCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiOm0uYS5hbnksImFyaWEtY29sY291bnQiOm0uYS5hbnksImFyaWEtY29saW5kZXgiOm0uYS5hbnksImFyaWEtY29sc3BhbiI6bS5hLmFueSwiYXJpYS1jb250cm9scyI6bS5hLmFueSwiYXJpYS1kZXNjcmliZWRieSI6bS5hLmFueSwiYXJpYS1lcnJvcm1lc3NhZ2UiOm0uYS5hbnksImFyaWEtZmxvd3RvIjptLmEuYW55LCJhcmlhLWxhYmVsbGVkYnkiOm0uYS5hbnksImFyaWEtb3ducyI6bS5hLmFueSwiYXJpYS1wb3NpbnNldCI6bS5hLmFueSwiYXJpYS1yb3djb3VudCI6bS5hLmFueSwiYXJpYS1yb3dpbmRleCI6bS5hLmFueSwiYXJpYS1yb3dzcGFuIjptLmEuYW55LCJhcmlhLXNldHNpemUiOm0uYS5hbnksYWxpZ25tZW50QmFzZWxpbmU6bS5hLnN0cmluZyxhbmdsZTptLmEubnVtYmVyLGJhc2VsaW5lU2hpZnQ6bS5hLnN0cmluZyxjbGlwOm0uYS5zdHJpbmcsY2xpcFBhdGg6bS5hLnN0cmluZyxjbGlwUnVsZTptLmEuc3RyaW5nLGNvbG9yOm0uYS5zdHJpbmcsY29sb3JJbnRlcnBvbGF0aW9uOm0uYS5zdHJpbmcsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczptLmEuc3RyaW5nLGNvbG9yUHJvZmlsZTptLmEuc3RyaW5nLGNvbG9yUmVuZGVyaW5nOm0uYS5zdHJpbmcsY3Vyc29yOm0uYS5zdHJpbmcsZGlyZWN0aW9uOm0uYS5vbmVPZihbImx0ciIsInJ0bCIsImluaGVyaXQiXSksZGlzcGxheTptLmEuc3RyaW5nLGRvbWluYW50QmFzZWxpbmU6bS5hLnN0cmluZyxlbmFibGVCYWNrZ3JvdW5kOm0uYS5zdHJpbmcsZmlsbDptLmEuc3RyaW5nLGZpbGxPcGFjaXR5Om0uYS5vbmVPZlR5cGUoW20uYS5zdHJpbmcsbS5hLm51bWJlcl0pLGZpbGxSdWxlOm0uYS5vbmVPZihbIm5vbnplcm8iLCJldmVub2RkIiwiaW5oZXJpdCJdKSxmaWx0ZXI6bS5hLnN0cmluZyxmbG9vZENvbG9yOm0uYS5zdHJpbmcsZmxvb2RPcGFjaXR5Om0uYS5vbmVPZlR5cGUoW20uYS5zdHJpbmcsbS5hLm51bWJlcl0pLGZvbnQ6bS5hLnN0cmluZyxmb250RmFtaWx5Om0uYS5zdHJpbmcsZm9udFNpemU6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksZm9udFNpemVBZGp1c3Q6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksZm9udFN0cmV0Y2g6bS5hLm9uZU9mKFsibm9ybWFsIiwid2lkZXIiLCJuYXJyb3dlciIsInVsdHJhLWNvbmRlbnNlZCIsImV4dHJhLWNvbmRlbnNlZCIsImNvbmRlbnNlZCIsInNlbWktY29uZGVuc2VkIiwic2VtaS1leHBhbmRlZCIsImV4cGFuZGVkIiwiZXh0cmEtZXhwYW5kZWQiLCJ1bHRyYS1leHBhbmRlZCIsImluaGVyaXQiXSksZm9udFN0eWxlOm0uYS5vbmVPZihbIm5vcm1hbCIsIml0YWxpYyIsIm9ibGlxdWUiLCJpbmhlcml0Il0pLGZvbnRWYXJpYW50Om0uYS5vbmVPZihbIm5vcm1hbCIsInNtYWxsLWNhcHMiLCJpbmhlcml0Il0pLGZvbnRXZWlnaHQ6bS5hLm9uZU9mKFsibm9ybWFsIiwiYm9sZCIsImJvbGRlciIsImxpZ2h0ZXIiLDEwMCwyMDAsMzAwLDQwMCw1MDAsNjAwLDcwMCw4MDAsOTAwLCJpbmhlcml0Il0pLGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOm0uYS5zdHJpbmcsZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOm0uYS5zdHJpbmcsaW1hZ2VSZW5kZXJpbmc6bS5hLm9uZU9mKFsiYXV0byIsIm9wdGltaXplU3BlZWQiLCJvcHRpbWl6ZVF1YWxpdHkiLCJpbmhlcml0Il0pLGtlcm5pbmc6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksbGV0dGVyU3BhY2luZzptLmEub25lT2ZUeXBlKFttLmEubnVtYmVyLG0uYS5zdHJpbmddKSxsaWdodGluZ0NvbG9yOm0uYS5zdHJpbmcsbGluZUhlaWdodDptLmEub25lT2ZUeXBlKFttLmEubnVtYmVyLG0uYS5zdHJpbmddKSxtYXJrZXJFbmQ6bS5hLnN0cmluZyxtYXJrZXJNaWQ6bS5hLnN0cmluZyxtYXJrZXJTdGFydDptLmEuc3RyaW5nLG1hc2s6bS5hLnN0cmluZyxvcGFjaXR5Om0uYS5vbmVPZlR5cGUoW20uYS5udW1iZXIsbS5hLnN0cmluZ10pLG92ZXJmbG93Om0uYS5vbmVPZihbInZpc2libGUiLCJoaWRkZW4iLCJzY3JvbGwiLCJhdXRvIiwiaW5oZXJpdCJdKSxwb2ludGVyRXZlbnRzOm0uYS5vbmVPZihbInZpc2libGVQYWludGVkIiwidmlzaWJsZUZpbGwiLCJ2aXNpYmxlU3Ryb2tlIiwidmlzaWJsZSIsInBhaW50ZWQiLCJmaWxsIiwic3Ryb2tlIiwiYWxsIiwibm9uZSIsImluaGVyaXQiXSksc2hhcGVSZW5kZXJpbmc6bS5hLm9uZU9mKFsiYXV0byIsIm9wdGltaXplU3BlZWQiLCJjcmlzcEVkZ2VzIiwiZ2VvbWV0cmljUHJlY2lzaW9uIiwiaW5oZXJpdCJdKSxzdG9wQ29sb3I6bS5hLnN0cmluZyxzdG9wT3BhY2l0eTptLmEub25lT2ZUeXBlKFttLmEubnVtYmVyLG0uYS5zdHJpbmddKSxzdHJva2U6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksc3Ryb2tlRGFzaGFycmF5Om0uYS5zdHJpbmcsc3Ryb2tlRGFzaG9mZnNldDptLmEub25lT2ZUeXBlKFttLmEubnVtYmVyLG0uYS5zdHJpbmddKSxzdHJva2VMaW5lY2FwOm0uYS5vbmVPZihbImJ1dHQiLCJyb3VuZCIsInNxdWFyZSIsImluaGVyaXQiXSksc3Ryb2tlTGluZWpvaW46bS5hLm9uZU9mKFsibWl0ZXIiLCJyb3VuZCIsImJldmVsIiwiaW5oZXJpdCJdKSxzdHJva2VNaXRlcmxpbWl0Om0uYS5vbmVPZlR5cGUoW20uYS5udW1iZXIsbS5hLnN0cmluZ10pLHN0cm9rZU9wYWNpdHk6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksc3Ryb2tlV2lkdGg6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuc3RyaW5nXSksdGV4dEFuY2hvcjptLmEub25lT2YoWyJzdGFydCIsIm1pZGRsZSIsImVuZCIsImluaGVyaXQiXSksdGV4dERlY29yYXRpb246bS5hLm9uZU9mKFsibm9uZSIsInVuZGVybGluZSIsIm92ZXJsaW5lIiwibGluZS10aHJvdWdoIiwiYmxpbmsiLCJpbmhlcml0Il0pLHRleHRSZW5kZXJpbmc6bS5hLm9uZU9mKFsiYXV0byIsIm9wdGltaXplU3BlZWQiLCJvcHRpbWl6ZUxlZ2liaWxpdHkiLCJnZW9tZXRyaWNQcmVjaXNpb24iLCJpbmhlcml0Il0pLHVuaWNvZGVCaWRpOm0uYS5vbmVPZihbIm5vcm1hbCIsImVtYmVkIiwiYmlkaS1vdmVycmlkZSIsImluaGVyaXQiXSksdmlzaWJpbGl0eTptLmEub25lT2YoWyJ2aXNpYmxlIiwiaGlkZGVuIiwiY29sbGFwc2UiLCJpbmhlcml0Il0pLHdvcmRTcGFjaW5nOm0uYS5vbmVPZlR5cGUoW20uYS5udW1iZXIsbS5hLnN0cmluZ10pLHdyaXRpbmdNb2RlOm0uYS5vbmVPZihbImxyLXRiIiwicmwtdGIiLCJ0Yi1ybCIsImxyIiwicmwiLCJ0YiIsImluaGVyaXQiXSksdHJhbnNmb3JtOm0uYS5zdHJpbmcscm9sZTptLmEuc3RyaW5nLGZvY3VzYWJsZTptLmEuc3RyaW5nLHRhYkluZGV4Om0uYS5zdHJpbmcsc3R5bGU6bS5hLm9iamVjdCx3aWR0aDptLmEubnVtYmVyLGhlaWdodDptLmEubnVtYmVyLGR4Om0uYS5udW1iZXIsZHk6bS5hLm51bWJlcix4Om0uYS5udW1iZXIseTptLmEubnVtYmVyLHI6bS5hLm51bWJlcixyYWRpdXM6bS5hLm9uZU9mVHlwZShbbS5hLm51bWJlcixtLmEuYXJyYXldKX0sVz17b25DbGljazptLmEuZnVuYyxvbk1vdXNlRG93bjptLmEuZnVuYyxvbk1vdXNlVXA6bS5hLmZ1bmMsb25Nb3VzZU92ZXI6bS5hLmZ1bmMsb25Nb3VzZU1vdmU6bS5hLmZ1bmMsb25Nb3VzZU91dDptLmEuZnVuYyxvbk1vdXNlRW50ZXI6bS5hLmZ1bmMsb25Nb3VzZUxlYXZlOm0uYS5mdW5jLG9uVG91Y2hFbmQ6bS5hLmZ1bmMsb25Ub3VjaE1vdmU6bS5hLmZ1bmMsb25Ub3VjaFN0YXJ0Om0uYS5mdW5jLG9uVG91Y2hDYW5jZWw6bS5hLmZ1bmN9LFk9e2NsaWNrOiJvbkNsaWNrIixtb3VzZWRvd246Im9uTW91c2VEb3duIixtb3VzZXVwOiJvbk1vdXNlVXAiLG1vdXNlb3Zlcjoib25Nb3VzZU92ZXIiLG1vdXNlbW92ZToib25Nb3VzZU1vdmUiLG1vdXNlb3V0OiJvbk1vdXNlT3V0Iixtb3VzZWVudGVyOiJvbk1vdXNlRW50ZXIiLG1vdXNlbGVhdmU6Im9uTW91c2VMZWF2ZSIsdG91Y2hjYW5jZWw6Im9uVG91Y2hDYW5jZWwiLHRvdWNoZW5kOiJvblRvdWNoRW5kIix0b3VjaG1vdmU6Im9uVG91Y2hNb3ZlIix0b3VjaHN0YXJ0OiJvblRvdWNoU3RhcnQifSxYPVsicGxhaW5saW5lIiwibGluZSIsInNxdWFyZSIsInJlY3QiLCJjaXJjbGUiLCJjcm9zcyIsImRpYW1vbmQiLCJzdGFyIiwidHJpYW5nbGUiLCJ3eWUiLCJub25lIl0sUT1bIm5vbmUiXSwkPWZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGU/ZTplP2UuZGlzcGxheU5hbWV8fGUubmFtZXx8IkNvbXBvbmVudCI6IiJ9LFo9ZnVuY3Rpb24oZSx0KXt2YXIgcj1bXSxuPVtdO3JldHVybiBuPWQoKSh0KT90Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gJChlKX0pOlskKHQpXSxnLmEuQ2hpbGRyZW4uZm9yRWFjaChlLGZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUudHlwZSYmKGUudHlwZS5kaXNwbGF5TmFtZXx8ZS50eXBlLm5hbWUpOy0xIT09bi5pbmRleE9mKHQpJiZyLnB1c2goZSl9KSxyfSxKPWZ1bmN0aW9uKGUsdCl7dmFyIHI9WihlLHQpO3JldHVybiByJiZyWzBdfSxlZT1mdW5jdGlvbihlKXtpZighZXx8dSgpKGUpKXJldHVybiBudWxsO3ZhciB0PWcuYS5pc1ZhbGlkRWxlbWVudChlKT9lLnByb3BzOmU7aWYoIWEoKSh0KSlyZXR1cm4gbnVsbDt2YXIgcj1udWxsO2Zvcih2YXIgbiBpbiB0KSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiZIW25dJiYocnx8KHI9e30pLHJbbl09dFtuXSk7cmV0dXJuIHJ9LHRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlKHQsciksbnVsbH19LHJlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXTtpZighZXx8dSgpKGUpKXJldHVybiBudWxsO3ZhciBuPWcuYS5pc1ZhbGlkRWxlbWVudChlKT9lLnByb3BzOmU7aWYoIWEoKShuKSlyZXR1cm4gbnVsbDt2YXIgaT1udWxsO2Zvcih2YXIgbyBpbiBuKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChuLG8pJiZXW29dJiYoaXx8KGk9e30pLGlbb109dHx8KHI/dGUobltvXSxuKTpuW29dKSk7cmV0dXJuIGl9LG5lPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGUodCxyLG4pLG51bGx9fSxpZT1mdW5jdGlvbihlLHQscil7aWYoIWEoKShlKSlyZXR1cm4gbnVsbDt2YXIgbj1udWxsO2Zvcih2YXIgaSBpbiBlKSh7fSkuaGFzT3duUHJvcGVydHkuY2FsbChlLGkpJiZXW2ldJiZ1KCkoZVtpXSkmJihufHwobj17fSksbltpXT1uZShlW2ldLHQscikpO3JldHVybiBufSxvZT1mdW5jdGlvbihlKXtpZighZXx8IWUucHJvcHMpcmV0dXJuITE7dmFyIHQ9ZS5wcm9wcyxyPXQud2lkdGgsbj10LmhlaWdodDtyZXR1cm4hKCFSKHIpfHxyPD0wfHwhUihuKXx8bjw9MCl9LGFlPWZ1bmN0aW9uKCl7cmV0dXJuISgidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5kb2N1bWVudCYmd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQmJndpbmRvdy5zZXRUaW1lb3V0KX0sc2U9WyJhIiwiYWx0R2x5cGgiLCJhbHRHbHlwaERlZiIsImFsdEdseXBoSXRlbSIsImFuaW1hdGUiLCJhbmltYXRlQ29sb3IiLCJhbmltYXRlTW90aW9uIiwiYW5pbWF0ZVRyYW5zZm9ybSIsImNpcmNsZSIsImNsaXBQYXRoIiwiY29sb3ItcHJvZmlsZSIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZlQmxlbmQiLCJmZUNvbG9ybWF0cml4IiwiZmVDb21wb25lbnRUcmFuc2ZlciIsImZlQ29tcG9zaXRlIiwiZmVDb252b2x2ZU1hdHJpeCIsImZlRGlmZnVzZUxpZ2g="
}

github/deemru/w8io/169f3d6 
3.96 ms