3N4XMPXxEs6eZsy78Fgo4butfcAiwoDtG9P · data · 2.7c767379.chunk.js_38
{
    "2.7c767379.chunk.js_38": "base64:ImluIGUpKXt2YXIgdD1bZS5tZXNzYWdlXTt0PXQuY29uY2F0KFtdfHwhMSksZS5mdWxsPW4udXRpbC5mb3JtYXQuYXBwbHkodGhpcyx0KX19LG4ubG9nLnByZXBhcmVTdGFuZGFyZEZ1bGw9ZnVuY3Rpb24oZSl7InN0YW5kYXJkRnVsbCJpbiBlfHwobi5sb2cucHJlcGFyZVN0YW5kYXJkKGUpLGUuc3RhbmRhcmRGdWxsPWUuc3RhbmRhcmQpfTt2YXIgYz1bImVycm9yIiwid2FybmluZyIsImluZm8iLCJkZWJ1ZyIsInZlcmJvc2UiXTtmb3Iocz0wO3M8Yy5sZW5ndGg7KytzKSFmdW5jdGlvbihlKXtuLmxvZ1tlXT1mdW5jdGlvbih0LHIpe3ZhciBpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykuc2xpY2UoMiksbz17dGltZXN0YW1wOm5ldyBEYXRlLGxldmVsOmUsY2F0ZWdvcnk6dCxtZXNzYWdlOnIsYXJndW1lbnRzOml9O24ubG9nLmxvZ01lc3NhZ2Uobyl9fShjW3NdKTtpZihuLmxvZy5tYWtlTG9nZ2VyPWZ1bmN0aW9uKGUpe3ZhciB0PXtmbGFnczowLGY6ZX07cmV0dXJuIG4ubG9nLnNldExldmVsKHQsIm5vbmUiKSx0fSxuLmxvZy5zZXRMZXZlbD1mdW5jdGlvbihlLHQpe3ZhciByPSExO2lmKGUmJiEoZS5mbGFncyZuLmxvZy5MRVZFTF9MT0NLRUQpKWZvcih2YXIgaT0wO2k8bi5sb2cubGV2ZWxzLmxlbmd0aDsrK2kpe2lmKHQ9PW4ubG9nLmxldmVsc1tpXSl7ZS5sZXZlbD10LHI9ITA7YnJlYWt9fXJldHVybiByfSxuLmxvZy5sb2NrPWZ1bmN0aW9uKGUsdCl7InVuZGVmaW5lZCI9PT10eXBlb2YgdHx8dD9lLmZsYWdzfD1uLmxvZy5MRVZFTF9MT0NLRUQ6ZS5mbGFncyY9fm4ubG9nLkxFVkVMX0xPQ0tFRH0sbi5sb2cuYWRkTG9nZ2VyPWZ1bmN0aW9uKGUpe28ucHVzaChlKX0sInVuZGVmaW5lZCIhPT10eXBlb2YgY29uc29sZSYmImxvZyJpbiBjb25zb2xlKXt2YXIgZjtpZihjb25zb2xlLmVycm9yJiZjb25zb2xlLndhcm4mJmNvbnNvbGUuaW5mbyYmY29uc29sZS5kZWJ1Zyl7dmFyIGw9e2Vycm9yOmNvbnNvbGUuZXJyb3Isd2FybmluZzpjb25zb2xlLndhcm4saW5mbzpjb25zb2xlLmluZm8sZGVidWc6Y29uc29sZS5kZWJ1Zyx2ZXJib3NlOmNvbnNvbGUuZGVidWd9LGg9ZnVuY3Rpb24oZSx0KXtuLmxvZy5wcmVwYXJlU3RhbmRhcmQodCk7dmFyIHI9bFt0LmxldmVsXSxpPVt0LnN0YW5kYXJkXTtpPWkuY29uY2F0KHQuYXJndW1lbnRzLnNsaWNlKCkpLHIuYXBwbHkoY29uc29sZSxpKX07Zj1uLmxvZy5tYWtlTG9nZ2VyKGgpfWVsc2V7aD1mdW5jdGlvbihlLHQpe24ubG9nLnByZXBhcmVTdGFuZGFyZEZ1bGwodCksY29uc29sZS5sb2codC5zdGFuZGFyZEZ1bGwpfTtmPW4ubG9nLm1ha2VMb2dnZXIoaCl9bi5sb2cuc2V0TGV2ZWwoZiwiZGVidWciKSxuLmxvZy5hZGRMb2dnZXIoZiksYT1mfWVsc2UgY29uc29sZT17bG9nOmZ1bmN0aW9uKCl7fX07aWYobnVsbCE9PWEpe3ZhciBwPW4udXRpbC5nZXRRdWVyeVZhcmlhYmxlcygpO2lmKCJjb25zb2xlLmxldmVsImluIHAmJm4ubG9nLnNldExldmVsKGEscFsiY29uc29sZS5sZXZlbCJdLnNsaWNlKC0xKVswXSksImNvbnNvbGUubG9jayJpbiBwKSJ0cnVlIj09cFsiY29uc29sZS5sb2NrIl0uc2xpY2UoLTEpWzBdJiZuLmxvZy5sb2NrKGEpfW4ubG9nLmNvbnNvbGVMb2dnZXI9YX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49cig2NyksaT1yKDc5KTt0LlNlZWQ9e2lzU2VlZFdpdGhOb25jZTpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZS5ub25jZX0sdG9CaW5hcnk6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuU2VlZC5pc1NlZWRXaXRoTm9uY2UoZSk/e3NlZWQ6dC5TZWVkLnRvQmluYXJ5KGUuc2VlZCkuc2VlZCxub25jZTplLm5vbmNlfTp7c2VlZDpuLl9mcm9tUmF3SW4oZSksbm9uY2U6dm9pZCAwfX0sdG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGkuYnl0ZXNUb1N0cmluZyh0LlNlZWQudG9CaW5hcnkoZSkuc2VlZCl9fX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49cigxMzcpLGk9cigxMzcpO3QuQ2hhaWRJZD17dG9OdW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgZT9lLmNoYXJDb2RlQXQoMCk6ZX0saXNNYWlubmV0OmZ1bmN0aW9uKGUpe3JldHVybiB0LkNoYWlkSWQudG9OdW1iZXIoZSk9PT1uLk1BSU5fTkVUX0NIQUlOX0lEfSxpc1Rlc3RuZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuQ2hhaWRJZC50b051bWJlcihlKT09PWkuVEVTVF9ORVRfQ0hBSU5fSUR9fX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49IjEyMzQ1Njc4OUFCQ0RFRkdISktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbW5vcHFyc3R1dnd4eXoiLGk9bi5zcGxpdCgiIikucmVkdWNlKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yLGV9LHt9KTt0LmRlZmF1bHQ9e2VuY29kZTpmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciB0PVswXSxyPTA7cjxlLmxlbmd0aDtyKyspe2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXRbaV08PD04O3RbMF0rPWVbcl07Zm9yKHZhciBvPTAsYT0wO2E8dC5sZW5ndGg7YSsrKXRbYV0rPW8sbz10W2FdLzU4fDAsdFthXSU9NTg7Zm9yKDtvOyl0LnB1c2gobyU1OCksbz1vLzU4fDB9Zm9yKHZhciBzPTA7MD09PWVbc10mJnM8ZS5sZW5ndGgtMTtzKyspdC5wdXNoKDApO3JldHVybiB0LnJldmVyc2UoKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19KS5qb2luKCIiKX0sZGVjb2RlOmZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Zm9yKHZhciB0PVswXSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07aWYoIShuIGluIGkpKXRocm93IG5ldyBFcnJvcignVGhlcmUgaXMgbm8gY2hhcmFjdGVyICInLmNvbmNhdChuLCciIGluIHRoZSBCYXNlNTggc2VxdWVuY2UhJykpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRbb10qPTU4O3RbMF0rPWlbbl07Zm9yKHZhciBhPTAscz0wO3M8dC5sZW5ndGg7cysrKXRbc10rPWEsYT10W3NdPj44LHRbc10mPTI1NTtmb3IoO2E7KXQucHVzaCgyNTUmYSksYT4+PTh9Zm9yKHZhciB1PTA7IjEiPT09ZVt1XSYmdTxlLmxlbmd0aC0xO3UrKyl0LnB1c2goMCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KHQucmV2ZXJzZSgpKX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uO3ZhciByPW51bGw7dHJ5e3I9bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUobmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsMTMsMiw5NiwwLDEsMTI3LDk2LDQsMTI3LDEyNywxMjcsMTI3LDEsMTI3LDMsNyw2LDAsMSwxLDEsMSwxLDYsNiwxLDEyNywxLDY1LDAsMTEsNyw1MCw2LDMsMTA5LDExNywxMDgsMCwxLDUsMTAwLDEwNSwxMTgsOTUsMTE1LDAsMiw1LDEwMCwxMDUsMTE4LDk1LDExNywwLDMsNSwxMTQsMTAxLDEwOSw5NSwxMTUsMCw0LDUsMTE0LDEwMSwxMDksOTUsMTE3LDAsNSw4LDEwMywxMDEsMTE2LDk1LDEwNCwxMDUsMTAzLDEwNCwwLDAsMTAsMTkxLDEsNiw0LDAsMzUsMCwxMSwzNiwxLDEsMTI2LDMyLDAsMTczLDMyLDEsMTczLDY2LDMyLDEzNCwxMzIsMzIsMiwxNzMsMzIsMywxNzMsNjYsMzIsMTM0LDEzMiwxMjYsMzQsNCw2NiwzMiwxMzUsMTY3LDM2LDAsMzIsNCwxNjcsMTEsMzYsMSwxLDEyNiwzMiwwLDE3MywzMiwxLDE3Myw2NiwzMiwxMzQsMTMyLDMyLDIsMTczLDMyLDMsMTczLDY2LDMyLDEzNCwxMzIsMTI3LDM0LDQsNjYsMzIsMTM1LDE2NywzNiwwLDMyLDQsMTY3LDExLDM2LDEsMSwxMjYsMzIsMCwxNzMsMzIsMSwxNzMsNjYsMzIsMTM0LDEzMiwzMiwyLDE3MywzMiwzLDE3Myw2NiwzMiwxMzQsMTMyLDEyOCwzNCw0LDY2LDMyLDEzNSwxNjcsMzYsMCwzMiw0LDE2NywxMSwzNiwxLDEsMTI2LDMyLDAsMTczLDMyLDEsMTczLDY2LDMyLDEzNCwxMzIsMzIsMiwxNzMsMzIsMywxNzMsNjYsMzIsMTM0LDEzMiwxMjksMzQsNCw2NiwzMiwxMzUsMTY3LDM2LDAsMzIsNCwxNjcsMTEsMzYsMSwxLDEyNiwzMiwwLDE3MywzMiwxLDE3Myw2NiwzMiwxMzQsMTMyLDMyLDIsMTczLDMyLDMsMTczLDY2LDMyLDEzNCwxMzIsMTMwLDM0LDQsNjYsMzIsMTM1LDE2NywzNiwwLDMyLDQsMTY3LDExXSkpLHt9KS5leHBvcnRzfWNhdGNoKEMpe31mdW5jdGlvbiBuKGUsdCxyKXt0aGlzLmxvdz0wfGUsdGhpcy5oaWdoPTB8dCx0aGlzLnVuc2lnbmVkPSEhcn1mdW5jdGlvbiBpKGUpe3JldHVybiEwPT09KGUmJmUuX19pc0xvbmdfXyl9bi5wcm90b3R5cGUuX19pc0xvbmdfXyxPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsIl9faXNMb25nX18iLHt2YWx1ZTohMH0pLG4uaXNMb25nPWk7dmFyIG89e30sYT17fTtmdW5jdGlvbiBzKGUsdCl7dmFyIHIsbixpO3JldHVybiB0PyhpPTA8PShlPj4+PTApJiZlPDI1NikmJihuPWFbZV0pP246KHI9YyhlLCgwfGUpPDA/LTE6MCwhMCksaSYmKGFbZV09cikscik6KGk9LTEyODw9KGV8PTApJiZlPDEyOCkmJihuPW9bZV0pP246KHI9YyhlLGU8MD8tMTowLCExKSxpJiYob1tlXT1yKSxyKX1mdW5jdGlvbiB1KGUsdCl7aWYoaXNOYU4oZSkpcmV0dXJuIHQ/bTp2O2lmKHQpe2lmKGU8MClyZXR1cm4gbTtpZihlPj1kKXJldHVybiB3fWVsc2V7aWYoZTw9LXkpcmV0dXJuIFQ7aWYoZSsxPj15KXJldHVybiBFfXJldHVybiBlPDA/dSgtZSx0KS5uZWcoKTpjKGUlcHwwLGUvcHwwLHQpfWZ1bmN0aW9uIGMoZSx0LHIpe3JldHVybiBuZXcgbihlLHQscil9bi5mcm9tSW50PXMsbi5mcm9tTnVtYmVyPXUsbi5mcm9tQml0cz1jO3ZhciBmPU1hdGgucG93O2Z1bmN0aW9uIGwoZSx0LHIpe2lmKDA9PT1lLmxlbmd0aCl0aHJvdyBFcnJvcigiZW1wdHkgc3RyaW5nIik7aWYoIk5hTiI9PT1lfHwiSW5maW5pdHkiPT09ZXx8IitJbmZpbml0eSI9PT1lfHwiLUluZmluaXR5Ij09PWUpcmV0dXJuIHY7aWYoIm51bWJlciI9PT10eXBlb2YgdD8ocj10LHQ9ITEpOnQ9ISF0LChyPXJ8fDEwKTwyfHwzNjxyKXRocm93IFJhbmdlRXJyb3IoInJhZGl4Iik7dmFyIG47aWYoKG49ZS5pbmRleE9mKCItIikpPjApdGhyb3cgRXJyb3IoImludGVyaW9yIGh5cGhlbiIpO2lmKDA9PT1uKXJldHVybiBsKGUuc3Vic3RyaW5nKDEpLHQscikubmVnKCk7Zm9yKHZhciBpPXUoZihyLDgpKSxvPXYsYT0wO2E8ZS5sZW5ndGg7YSs9OCl7dmFyIHM9TWF0aC5taW4oOCxlLmxlbmd0aC1hKSxjPXBhcnNlSW50KGUuc3Vic3RyaW5nKGEsYStzKSxyKTtpZihzPDgpe3ZhciBoPXUoZihyLHMpKTtvPW8ubXVsKGgpLmFkZCh1KGMpKX1lbHNlIG89KG89by5tdWwoaSkpLmFkZCh1KGMpKX1yZXR1cm4gby51bnNpZ25lZD10LG99ZnVuY3Rpb24gaChlLHQpe3JldHVybiJudW1iZXIiPT09dHlwZW9mIGU/dShlLHQpOiJzdHJpbmciPT09dHlwZW9mIGU/bChlLHQpOmMoZS5sb3csZS5oaWdoLCJib29sZWFuIj09PXR5cGVvZiB0P3Q6ZS51bnNpZ25lZCl9bi5mcm9tU3RyaW5nPWwsbi5mcm9tVmFsdWU9aDt2YXIgcD00Mjk0OTY3Mjk2LGQ9cCpwLHk9ZC8yLGc9cygxPDwyNCksdj1zKDApO24uWkVSTz12O3ZhciBtPXMoMCwhMCk7bi5VWkVSTz1tO3ZhciBiPXMoMSk7bi5PTkU9Yjt2YXIgXz1zKDEsITApO24uVU9ORT1fO3ZhciBTPXMoLTEpO24uTkVHX09ORT1TO3ZhciBFPWMoLTEsMjE0NzQ4MzY0NywhMSk7bi5NQVhfVkFMVUU9RTt2YXIgdz1jKC0xLC0xLCEwKTtuLk1BWF9VTlNJR05FRF9WQUxVRT13O3ZhciBUPWMoMCwtMjE0NzQ4MzY0OCwhMSk7bi5NSU5fVkFMVUU9VDt2YXIgQT1uLnByb3RvdHlwZTtBLnRvSW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5zaWduZWQ/dGhpcy5sb3c+Pj4wOnRoaXMubG93fSxBLnRvTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5zaWduZWQ/KHRoaXMuaGlnaD4+PjApKnArKHRoaXMubG93Pj4+MCk6dGhpcy5oaWdoKnArKHRoaXMubG93Pj4+MCl9LEEudG9TdHJpbmc9ZnVuY3Rpb24oZSl7aWYoKGU9ZXx8MTApPDJ8fDM2PGUpdGhyb3cgUmFuZ2VFcnJvcigicmFkaXgiKTtpZih0aGlzLmlzWmVybygpKXJldHVybiIwIjtpZih0aGlzLmlzTmVnYXRpdmUoKSl7aWYodGhpcy5lcShUKSl7dmFyIHQ9dShlKSxyPXRoaXMuZGl2KHQpLG49ci5tdWwodCkuc3ViKHRoaXMpO3JldHVybiByLnRvU3RyaW5nKGUpK24udG9JbnQoKS50b1N0cmluZyhlKX1yZXR1cm4iLSIrdGhpcy5uZWcoKS50b1N0cmluZyhlKX1mb3IodmFyIGk9dShmKGUsNiksdGhpcy51bnNpZ25lZCksbz10aGlzLGE9IiI7Oyl7dmFyIHM9by5kaXYoaSksYz0oby5zdWIocy5tdWwoaSkpLnRvSW50KCk+Pj4wKS50b1N0cmluZyhlKTtpZigobz1zKS5pc1plcm8oKSlyZXR1cm4gYythO2Zvcig7Yy5sZW5ndGg8NjspYz0iMCIrYzthPSIiK2MrYX19LEEuZ2V0SGlnaEJpdHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWdofSxBLmdldEhpZ2hCaXRzVW5zaWduZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWdoPj4+MH0sQS5nZXRMb3dCaXRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG93fSxBLmdldExvd0JpdHNVbnNpZ25lZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvdz4+PjB9LEEuZ2V0TnVtQml0c0Ficz1mdW5jdGlvbigpe2lmKHRoaXMuaXNOZWdhdGl2ZSgpKXJldHVybiB0aGlzLmVxKFQpPzY0OnRoaXMubmVnKCkuZ2V0TnVtQml0c0FicygpO2Zvcih2YXIgZT0wIT10aGlzLmhpZ2g/dGhpcy5oaWdoOnRoaXMubG93LHQ9MzE7dD4wJiYwPT0oZSYxPDx0KTt0LS0pO3JldHVybiAwIT10aGlzLmhpZ2g/dCszMzp0KzF9LEEuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmhpZ2gmJjA9PT10aGlzLmxvd30sQS5lcXo9QS5pc1plcm8sQS5pc05lZ2F0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMudW5zaWduZWQmJnRoaXMuaGlnaDwwfSxBLmlzUG9zaXRpdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bnNpZ25lZHx8dGhpcy5oaWdoPj0wfSxBLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT0oMSZ0aGlzLmxvdyl9LEEuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT0oMSZ0aGlzLmxvdyl9LEEuZXF1YWxzPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpfHwoZT1oKGUpKSwodGhpcy51bnNpZ25lZD09PWUudW5zaWduZWR8fHRoaXMuaGlnaD4+PjMxIT09MXx8ZS5oaWdoPj4+MzEhPT0xKSYmKHRoaXMuaGlnaD09PWUuaGlnaCYmdGhpcy5sb3c9PT1lLmxvdyl9LEEuZXE9QS5lcXVhbHMsQS5ub3RFcXVhbHM9ZnVuY3Rpb24oZSl7cmV0dXJuIXRoaXMuZXEoZSl9LEEubmVxPUEubm90RXF1YWxzLEEubmU9QS5ub3RFcXVhbHMsQS5sZXNzVGhhbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb21wKGUpPDB9LEEubHQ9QS5sZXNzVGhhbixBLmxlc3NUaGFuT3JFcXVhbD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb21wKGUpPD0wfSxBLmx0ZT1BLmxlc3NUaGFuT3JFcXVhbCxBLmxlPUEubGVzc1RoYW5PckVxdWFsLEEuZ3JlYXRlclRoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29tcChlKT4wfSxBLmd0PUEuZ3JlYXRlclRoYW4sQS5ncmVhdGVyVGhhbk9yRXF1YWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29tcChlKT49MH0sQS5ndGU9QS5ncmVhdGVyVGhhbk9yRXF1YWwsQS5nZT1BLmdyZWF0ZXJUaGFuT3JFcXVhbCxBLmNvbXBhcmU9ZnVuY3Rpb24oZSl7aWYoaShlKXx8KGU9aChlKSksdGhpcy5lcShlKSlyZXR1cm4gMDt2YXIgdD10aGlzLmlzTmVnYXRpdmUoKSxyPWUuaXNOZWdhdGl2ZSgpO3JldHVybiB0JiYhcj8tMTohdCYmcj8xOnRoaXMudW5zaWduZWQ/ZS5oaWdoPj4+MD50aGlzLmhpZ2g+Pj4wfHxlLmhpZ2g9PT10aGlzLmhpZ2gmJmUubG93Pj4+MD50aGlzLmxvdz4+PjA/LTE6MTp0aGlzLnN1YihlKS5pc05lZ2F0aXZlKCk/LTE6MX0sQS5jb21wPUEuY29tcGFyZSxBLm5lZ2F0ZT1mdW5jdGlvbigpe3JldHVybiF0aGlzLnVuc2lnbmVkJiZ0aGlzLmVxKFQpP1Q6dGhpcy5ub3QoKS5hZGQoYil9LEEubmVnPUEubmVnYXRlLEEuYWRkPWZ1bmN0aW9uKGUpe2koZSl8fChlPWgoZSkpO3ZhciB0PXRoaXMuaGlnaD4+PjE2LHI9NjU1MzUmdGhpcy5oaWdoLG49dGhpcy5sb3c+Pj4xNixvPTY1NTM1JnRoaXMubG93LGE9ZS5oaWdoPj4+MTYscz02NTUzNSZlLmhpZ2gsdT1lLmxvdz4+PjE2LGY9MCxsPTAscD0wLGQ9MDtyZXR1cm4gcCs9KGQrPW8rKDY1NTM1JmUubG93KSk+Pj4xNixsKz0ocCs9bit1KT4+PjE2LGYrPShsKz1yK3MpPj4+MTYsZis9dCthLGMoKHAmPTY1NTM1KTw8MTZ8KGQmPTY1NTM1KSwoZiY9NjU1MzUpPDwxNnwobCY9NjU1MzUpLHRoaXMudW5zaWduZWQpfSxBLnN1YnRyYWN0PWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpfHwoZT1oKGUpKSx0aGlzLmFkZChlLm5lZygpKX0sQS5zdWI9QS5zdWJ0cmFjdCxBLm11bHRpcGx5PWZ1bmN0aW9uKGUpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIHY7aWYoaShlKXx8KGU9aChlKSkscilyZXR1cm4gYyhyLm11bCh0aGlzLmxvdyx0aGlzLmhpZ2gsZS5sb3csZS5oaWdoKSxyLmdldF9oaWdoKCksdGhpcy51bnNpZ25lZCk7aWYoZS5pc1plcm8oKSlyZXR1cm4gdjtpZih0aGlzLmVxKFQpKXJldHVybiBlLmlzT2RkKCk/VDp2O2lmKGUuZXEoVCkpcmV0dXJuIHRoaXMuaXNPZGQoKT9UOnY7aWYodGhpcy5pc05lZ2F0aXZlKCkpcmV0dXJuIGUuaXNOZWdhdGl2ZSgpP3RoaXMubmVnKCkubXVsKGUubmVnKCkpOnRoaXMubmVnKCkubXVsKGUpLm5lZygpO2lmKGUuaXNOZWdhdGl2ZSgpKXJldHVybiB0aGlzLm11bChlLm5lZygpKS5uZWcoKTtpZih0aGlzLmx0KGcpJiZlLmx0KGcpKXJldHVybiB1KHRoaXMudG9OdW1iZXIoKSplLnRvTnVtYmVyKCksdGhpcy51bnNpZ25lZCk7dmFyIHQ9dGhpcy5oaWdoPj4+MTYsbj02NTUzNSZ0aGlzLmhpZ2gsbz10aGlzLmxvdz4+PjE2LGE9NjU1MzUmdGhpcy5sb3cscz1lLmhpZ2g+Pj4xNixmPTY1NTM1JmUuaGlnaCxsPWUubG93Pj4+MTYscD02NTUzNSZlLmxvdyxkPTAseT0wLG09MCxiPTA7cmV0dXJuIG0rPShiKz1hKnApPj4+MTYseSs9KG0rPW8qcCk+Pj4xNixtJj02NTUzNSx5Kz0obSs9YSpsKT4+PjE2LGQrPSh5Kz1uKnApPj4+MTYseSY9NjU1MzUsZCs9KHkrPW8qbCk+Pj4xNix5Jj02NTUzNSxkKz0oeSs9YSpmKT4+PjE2LGQrPXQqcCtuKmwrbypmK2EqcyxjKChtJj02NTUzNSk8PDE2fChiJj02NTUzNSksKGQmPTY1NTM1KTw8MTZ8KHkmPTY1NTM1KSx0aGlzLnVuc2lnbmVkKX0sQS5tdWw9QS5tdWx0aXBseSxBLmRpdmlkZT1mdW5jdGlvbihlKXtpZihpKGUpfHwoZT1oKGUpKSxlLmlzWmVybygpKXRocm93IEVycm9yKCJkaXZpc2lvbiBieSB6ZXJvIik7dmFyIHQsbixvO2lmKHIpcmV0dXJuIHRoaXMudW5zaWduZWR8fC0yMTQ3NDgzNjQ4IT09dGhpcy5oaWdofHwtMSE9PWUubG93fHwtMSE9PWUuaGlnaD9jKCh0aGlzLnVuc2lnbmVkP3IuZGl2X3U6ci5kaXZfcykodGhpcy5sb3csdGhpcy5oaWdoLGUubG93LGUuaGlnaCksci5nZXRfaGlnaCgpLHRoaXMudW5zaWduZWQpOnRoaXM7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gdGhpcy51bnNpZ25lZD9tOnY7aWYodGhpcy51bnNpZ25lZCl7aWYoZS51bnNpZ25lZHx8KGU9ZS50b1Vuc2lnbmVkKCkpLGUuZ3QodGhpcykpcmV0dXJuIG07aWYoZS5ndCh0aGlzLnNocnUoMSkpKXJldHVybiBfO289bX1lbHNle2lmKHRoaXMuZXEoVCkpcmV0dXJuIGUuZXEoYil8fGUuZXEoUyk/VDplLmVxKFQpP2I6KHQ9dGhpcy5zaHIoMSkuZGl2KGUpLnNobCgxKSkuZXEodik/ZS5pc05lZ2F0aXZlKCk/YjpTOihuPXRoaXMuc3ViKGUubXVsKHQpKSxvPXQuYWRkKG4uZGl2KGUpKSk7aWYoZS5lcShUKSlyZXR1cm4gdGhpcy51bnNpZ25lZD9tOnY7aWYodGhpcy5pc05lZ2F0aXZlKCkpcmV0dXJuIGUuaXNOZWdhdGl2ZSgpP3RoaXMubmVnKCkuZGl2KGUubmVnKCkpOnRoaXMubmVnKCkuZGl2KGUpLm5lZygpO2lmKGUuaXNOZWdhdGl2ZSgpKXJldHVybiB0aGlzLmRpdihlLm5lZygpKS5uZWcoKTtvPXZ9Zm9yKG49dGhpcztuLmd0ZShlKTspe3Q9TWF0aC5tYXgoMSxNYXRoLmZsb29yKG4udG9OdW1iZXIoKS9lLnRvTnVtYmVyKCkpKTtmb3IodmFyIGE9TWF0aC5jZWlsKE1hdGgubG9nKHQpL01hdGguTE4yKSxzPWE8PTQ4PzE6ZigyLGEtNDgpLGw9dSh0KSxwPWwubXVsKGUpO3AuaXNOZWdhdGl2ZSgpfHxwLmd0KG4pOylwPShsPXUodC09cyx0aGlzLnVuc2lnbmVkKSkubXVsKGUpO2wuaXNaZXJvKCkmJihsPWIpLG89by5hZGQobCksbj1uLnN1YihwKX1yZXR1cm4gb30sQS5kaXY9QS5kaXZpZGUsQS5tb2R1bG89ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSl8fChlPWgoZSkpLHI/YygodGhpcy51bnNpZ25lZD9yLnJlbV91OnIucmVtX3MpKHRoaXMubG93LHRoaXMuaGlnaCxlLmxvdyxlLmhpZ2gpLHIuZ2V0X2hpZ2goKSx0aGlzLnVuc2lnbmVkKTp0aGlzLnN1Yih0aGlzLmRpdihlKS5tdWwoZSkpfSxBLm1vZD1BLm1vZHVsbyxBLnJlbT1BLm1vZHVsbyxBLm5vdD1mdW5jdGlvbigpe3JldHVybiBjKH50aGlzLmxvdyx+dGhpcy5oaWdoLHRoaXMudW5zaWduZWQpfSxBLmFuZD1mdW5jdGlvbihlKXtyZXR1cm4gaShlKXx8KGU9aChlKSksYyh0aGlzLmxvdyZlLmxvdyx0aGlzLmhpZ2gmZS5oaWdoLHRoaXMudW5zaWduZWQpfSxBLm9yPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpfHwoZT1oKGUpKSxjKHRoaXMubG93fGUubG93LHRoaXMuaGlnaHxlLmhpZ2gsdGhpcy51bnNpZ25lZCl9LEEueG9yPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpfHwoZT1oKGUpKSxjKHRoaXMubG93XmUubG93LHRoaXMuaGlnaF5lLmhpZ2gsdGhpcy51bnNpZ25lZCl9LEEuc2hpZnRMZWZ0PWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpJiYoZT1lLnRvSW50KCkpLDA9PT0oZSY9NjMpP3RoaXM6ZTwzMj9jKHRoaXMubG93PDxlLHRoaXMuaGlnaDw8ZXx0aGlzLmxvdz4+PjMyLWUsdGhpcy51bnNpZ25lZCk6YygwLHRoaXMubG93PDxlLTMyLHRoaXMudW5zaWduZWQpfSxBLnNobD1BLnNoaWZ0TGVmdCxBLnNoaWZ0UmlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkmJihlPWUudG9JbnQoKSksMD09PShlJj02Myk/dGhpczplPDMyP2ModGhpcy5sb3c+Pj5lfHRoaXMuaGlnaDw8MzItZSx0aGlzLmhpZ2g+PmUsdGhpcy51bnNpZ25lZCk6Yyh0aGlzLmhpZ2g+PmUtMzIsdGhpcy5oaWdoPj0wPzA6LTEsdGhpcy51bnNpZ25lZCl9LEEuc2hyPUEuc2hpZnRSaWdodCxBLnNoaWZ0UmlnaHRVbnNpZ25lZD1mdW5jdGlvbihlKXtpZihpKGUpJiYoZT1lLnRvSW50KCkpLDA9PT0oZSY9NjMpKXJldHVybiB0aGlzO3ZhciB0PXRoaXMuaGlnaDtyZXR1cm4gZTwzMj9jKHRoaXMubG93Pj4+ZXx0PDwzMi1lLHQ+Pj5lLHRoaXMudW5zaWduZWQpOmMoMzI9PT1lP3Q6dD4+PmUtMzIsMCx0aGlzLnVuc2lnbmVkKX0sQS5zaHJ1PUEuc2hpZnRSaWdodFVuc2lnbmVkLEEuc2hyX3U9QS5zaGlmdFJpZ2h0VW5zaWduZWQsQS50b1NpZ25lZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnVuc2lnbmVkP2ModGhpcy5sb3csdGhpcy5oaWdoLCExKTp0aGlzfSxBLnRvVW5zaWduZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bnNpZ25lZD90aGlzOmModGhpcy5sb3csdGhpcy5oaWdoLCEwKX0sQS50b0J5dGVzPWZ1bmN0aW9uKGUpe3JldHVybiBlP3RoaXMudG9CeXRlc0xFKCk6dGhpcy50b0J5dGVzQkUoKX0sQS50b0J5dGVzTEU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmhpZ2gsdD10aGlzLmxvdztyZXR1cm5bMjU1JnQsdD4+PjgmMjU1LHQ+Pj4xNiYyNTUsdD4+PjI0LDI1NSZlLGU+Pj44JjI1NSxlPj4+MTYmMjU1LGU+Pj4yNF19LEEudG9CeXRlc0JFPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5oaWdoLHQ9dGhpcy5sb3c7cmV0dXJuW2U+Pj4yNCxlPj4+MTYmMjU1LGU+Pj44JjI1NSwyNTUmZSx0Pj4+MjQsdD4+PjE2JjI1NSx0Pj4+OCYyNTUsMjU1JnRdfSxuLmZyb21CeXRlcz1mdW5jdGlvbihlLHQscil7cmV0dXJuIHI/bi5mcm9tQnl0ZXNMRShlLHQpOm4uZnJvbUJ5dGVzQkUoZSx0KX0sbi5mcm9tQnl0ZXNMRT1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgbihlWzBdfGVbMV08PDh8ZVsyXTw8MTZ8ZVszXTw8MjQsZVs0XXxlWzVdPDw4fGVbNl08PDE2fGVbN108PDI0LHQpfSxuLmZyb21CeXRlc0JFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBuKGVbNF08PDI0fGVbNV08PDE2fGVbNl08PDh8ZVs3XSxlWzBdPDwyNHxlWzFdPDwxNnxlWzJdPDw4fGVbM10sdCl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfX0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCYmcihlLnByb3RvdHlwZSx0KSxuJiZyKGUsbiksZX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPXIoMjYpLGk9e29yZGVyVHlwZTpuLm9yRXEoWyJzZWxsIiwiYnV5Il0pLHNlbmRlclB1YmxpY0tleTpuLmlzUHVibGljS2V5LG1hdGNoZXJQdWJsaWNLZXk6bi5pc1B1YmxpY0tleSx2ZXJzaW9uOm4ub3JFcShbdm9pZCAwLDAsMSwyLDNdKSxhc3NldFBhaXI6bi52YWxpZGF0ZVBpcGUobi5pc1JlcXVpcmVkKCEwKSxuLnBpcGUobi5wcm9wKCJhbW91bnRBc3NldCIpLG4uaXNBc3NldElkKSxuLnBpcGUobi5wcm9wKCJwcmljZUFzc2V0Iiksbi5pc0Fzc2V0SWQpKSxwcmljZTpuLmlzTnVtYmVyTGlrZSxhbW91bnQ6bi5pc051bWJlckxpa2UsbWF0Y2hlckZlZTpuLmlzTnVtYmVyTGlrZSxleHBpcmF0aW9uOm4uaXNOdW1iZXJMaWtlLHRpbWVzdGFtcDpuLmlzTnVtYmVyLHByb29mczpuLmlmRWxzZShuLmlzQXJyYXksbi5kZWZhdWx0VmFsdWUoITApLG4ub3JFcShbdm9pZCAwXSkpfSxvPXttYXRjaGVyRmVlQXNzZXRJZDpuLm9yRXEoW3ZvaWQgMCxudWxsLCJXQVZFUyJdKX0sYT17bWF0Y2hlckZlZUFzc2V0SWQ6bi5pc0Fzc2V0SWR9LHM9bi52YWxpZGF0ZUJ5U2hlbWEoaSxuLmdldEVycm9yKSx1PW4udmFsaWRhdGVCeVNoZW1hKG8sbi5nZXRFcnJvciksYz1uLnZhbGlkYXRlQnlTaGVtYShhLG4uZ2V0RXJyb3IpO3Qub3JkZXJWYWxpZGF0b3I9bi52YWxpZGF0ZVBpcGUocyxuLmlmRWxzZShuLnBpcGUobi5wcm9wKCJ2ZXJzaW9uIiksbi5pc0VxKDMpKSxjLHUpKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDIwKSxhPXIoMzApLHM9cigxOSksdT1yKDI1KTt0LnJlaXNzdWU9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuUkVJU1NVRSxjPWUudmVyc2lvbnx8MixmPWEuY29udmVydFRvUGFpcnModCksbD17dHlwZTpyLHZlcnNpb246YyxzZW5kZXJQdWJsaWNLZXk6YS5nZXRTZW5kZXJQdWJsaWNLZXkoZixlKSxhc3NldElkOmUuYXNzZXRJZCxxdWFudGl0eTplLnF1YW50aXR5LHJlaXNzdWFibGU6ZS5yZWlzc3VhYmxlLGNoYWluSWQ6YS5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLGZlZTphLmZlZShlLDFlOCksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLHByb29mczplLnByb29mc3x8W10saWQ6IiJ9O3UudmFsaWRhdGUucmVpc3N1ZShsKTt2YXIgaD1zLmJpbmFyeS5zZXJpYWxpemVUeChsKTtyZXR1cm4gZi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwyKSxyPXRbMF0saT10WzFdO3JldHVybiBhLmFkZFByb29mKGwsby5zaWduQnl0ZXMocixoKSxpKX0pLGwuaWQ9by5iYXNlNThFbmNvZGUoby5ibGFrZTJiKGgpKSxsfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDE5KSxhPXIoMjApLHM9cigzMCksdT1yKDI1KTt0LmJ1cm49ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuQlVSTixjPWUudmVyc2lvbnx8MixmPXMuY29udmVydFRvUGFpcnModCksbD17dHlwZTpyLHZlcnNpb246YyxzZW5kZXJQdWJsaWNLZXk6cy5nZXRTZW5kZXJQdWJsaWNLZXkoZixlKSxhc3NldElkOmUuYXNzZXRJZCxxdWFudGl0eTplLnF1YW50aXR5LGNoYWluSWQ6cy5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLGZlZTpzLmZlZShlLDFlNSksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLHByb29mczplLnByb29mc3x8W10saWQ6IiJ9O3UudmFsaWRhdGUuYnVybihsKTt2YXIgaD1vLmJpbmFyeS5zZXJpYWxpemVUeChsKTtyZXR1cm4gZi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwyKSxyPXRbMF0saT10WzFdO3JldHVybiBzLmFkZFByb29mKGwsYS5zaWduQnl0ZXMocixoKSxpKX0pLGwuaWQ9YS5iYXNlNThFbmNvZGUoYS5ibGFrZTJiKGgpKSxsfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDE5KSxhPXIoMjApLHM9cigzMCksdT1yKDI1KTt0LmV4Y2hhbmdlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aS5UUkFOU0FDVElPTl9UWVBFLkVYQ0hBTkdFLGM9ZS52ZXJzaW9ufHwyLGY9cy5jb252ZXJ0VG9QYWlycyh0KSxsPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTpzLmdldFNlbmRlclB1YmxpY0tleShmLGUpLG9yZGVyMTplLm9yZGVyMSxvcmRlcjI6ZS5vcmRlcjIscHJpY2U6ZS5wcmljZSxhbW91bnQ6ZS5hbW91bnQsYnV5TWF0Y2hlckZlZTplLmJ1eU1hdGNoZXJGZWUsc2VsbE1hdGNoZXJGZWU6ZS5zZWxsTWF0Y2hlckZlZSxmZWU6cy5mZWUoZSwxZTUpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxwcm9vZnM6ZS5wcm9vZnN8fFtdLGlkOiIifTt1LnZhbGlkYXRlLmV4Y2hhbmdlKGwpO3ZhciBoPW8uYmluYXJ5LnNlcmlhbGl6ZVR4KGwpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bihlLDIpLHI9dFswXSxpPXRbMV07cmV0dXJuIHMuYWRkUHJvb2YobCxhLnNpZ25CeXRlcyhyLGgpLGkpfSksT2JqZWN0LmFzc2lnbih7fSxsLHtpZDphLmJhc2U1OEVuY29kZShhLmJsYWtlMmIoaCkpfSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE1KSxvPXIoMjApLGE9cigzMCkscz1yKDE5KSx1PXIoMjUpO3QubGVhc2U9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuTEVBU0UsYz1lLnZlcnNpb258fDIsZj1hLmNvbnZlcnRUb1BhaXJzKHQpLGw9e3R5cGU6cix2ZXJzaW9uOmMsc2VuZGVyUHVibGljS2V5OmEuZ2V0U2VuZGVyUHVibGljS2V5KGYsZSksYW1vdW50OmUuYW1vdW50LHJlY2lwaWVudDplLnJlY2lwaWVudCxmZWU6YS5mZWUoZSwxZTUpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxwcm9vZnM6ZS5wcm9vZnN8fFtdLGlkOiIifTt1LnZhbGlkYXRlLmxlYXNlKGwpO3ZhciBoPXMuYmluYXJ5LnNlcmlhbGl6ZVR4KGwpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bihlLDIpLHI9dFswXSxpPXRbMV07cmV0dXJuIGEuYWRkUHJvb2YobCxvLnNpZ25CeXRlcyhyLGgpLGkpfSksbC5pZD1vLmJhc2U1OEVuY29kZShvLmJsYWtlMmIoaCkpLGx9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE1KSxvPXIoMTkpLGE9cigyMCkscz1yKDMwKSx1PXIoMjUpO3QuY2FuY2VsTGVhc2U9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuQ0FOQ0VMX0xFQVNFLGM9ZS52ZXJzaW9ufHwyLGY9cy5jb252ZXJ0VG9QYWlycyh0KSxsPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTpzLmdldFNlbmRlclB1YmxpY0tleShmLGUpLGxlYXNlSWQ6ZS5sZWFzZUlkLGZlZTpzLmZlZShlLDFlNSksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLGNoYWluSWQ6cy5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLHByb29mczplLnByb29mc3x8W10saWQ6IiJ9O3UudmFsaWRhdGUuY2FuY2VsTGVhc2UobCk7dmFyIGg9by5iaW5hcnkuc2VyaWFsaXplVHgobCk7cmV0dXJuIGYuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1uKGUsMikscj10WzBdLGk9dFsxXTtyZXR1cm4gcy5hZGRQcm9vZihsLGEuc2lnbkJ5dGVzKHIsaCksaSl9KSxsLmlkPWEuYmFzZTU4RW5jb2RlKGEuYmxha2UyYihoKSksbH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE5KS5zZXJpYWxpemVQcmltaXRpdmVzLG89aS5CQVNFNThfU1RSSU5HLGE9aS5CQVNFNjRfU1RSSU5HLHM9aS5CWVRFLHU9aS5CWVRFUyxjPWkuQ09VTlQsZj1pLkxFTixsPWkuTE9ORyxoPWkuU0hPUlQscD1pLlNUUklORyxkPXIoMjApLHk9cigxNSksZz1yKDMwKSx2PXIoMTkpLG09cigyNSksYj17aW50ZWdlcjpbImludGVnZXIiLDAsbF0sbnVtYmVyOlsiaW50ZWdlciIsMCxsXSxib29sZWFuOlsiYm9vbGVhbiIsMSxzXSxzdHJpbmc6WyJzdHJpbmciLDMsZihoKShwKV0sYmluYXJ5OlsiYmluYXJ5IiwyLGZ1bmN0aW9uKGUpe3JldHVybiBmKGgpKGEpKGUuc2xpY2UoNykpfV0sXzpbImJpbmFyeSIsMixmKGgpKHUpXX0sXz1mdW5jdGlvbihlKXtyZXR1cm4gYlt0eXBlb2YgZV18fGIuX307dC5kYXRhPWZ1bmN0aW9uKHQscil7dmFyIGk9eS5UUkFOU0FDVElPTl9UWVBFLkRBVEEsYT10LnZlcnNpb258fDEsdT1nLmNvbnZlcnRUb1BhaXJzKHIpLGI9Zy5nZXRTZW5kZXJQdWJsaWNLZXkodSx0KTtpZighQXJyYXkuaXNBcnJheSh0LmRhdGEpKXRocm93IG5ldyBFcnJvcignWyJkYXRhIHNob3VsZCBiZSBhcnJheSJdJyk7dmFyIFM9dC50aW1lc3RhbXB8fERhdGUubm93KCksRT1kLmNvbmNhdChzKHkuVFJBTlNBQ1RJT05fVFlQRS5EQVRBKSxzKDEpLG8oYiksYyhoKShmdW5jdGlvbihlKXtyZXR1cm4gZC5jb25jYXQoZihoKShwKShlLmtleSksW18oZS52YWx1ZSlbMV1dLF8oZS52YWx1ZSlbMl0oZS52YWx1ZSkpfSkodC5kYXRhKSxsKFMpKSx3PTFlNSpNYXRoLmZsb29yKDErKEUubGVuZ3RoKzgtMSkvMTAyNCksVD17dHlwZTppLHZlcnNpb246YSxzZW5kZXJQdWJsaWNLZXk6YixmZWU6Zy5mZWUodCx3KSx0aW1lc3RhbXA6Uyxwcm9vZnM6dC5wcm9vZnN8fFtdLGlkOiIiLGRhdGE6dC5kYXRhJiZ0LmRhdGEubWFwKGZ1bmN0aW9uKHQpe2lmKHQudHlwZSlyZXR1cm4gdDt2YXIgcj1fKHQudmFsdWUpWzBdO3JldHVybnt0eXBlOnIsa2V5OnQua2V5LHZhbHVlOiJiaW5hcnkiPT09cj8iYmFzZTY0OiIrZS5mcm9tKHQudmFsdWUpLnRvU3RyaW5nKCJiYXNlNjQiKTp0LnZhbHVlfX0pfTttLnZhbGlkYXRlLmRhdGEoVCk7dmFyIEE9di5iaW5hcnkuc2VyaWFsaXplVHgoVCk7cmV0dXJuIHUuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1uKGUsMikscj10WzBdLGk9dFsxXTtyZXR1cm4gZy5hZGRQcm9vZihULGQuc2lnbkJ5dGVzKHIsQSksaSl9KSxULmlkPWQuYmFzZTU4RW5jb2RlKGQuYmxha2UyYihBKSksVH19KS5jYWxsKHRoaXMscigxOCkuQnVmZmVyKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDIwKSxhPXIoMzApLHM9cigxOSksdT1yKDI1KTt0Lmlzc3VlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aS5UUkFOU0FDVElPTl9UWVBFLklTU1VFLGM9ZS52ZXJzaW9ufHwyLGY9YS5jb252ZXJ0VG9QYWlycyh0KSxsPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTphLmdldFNlbmRlclB1YmxpY0tleShmLGUpLG5hbWU6ZS5uYW1lLGRlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb24scXVhbnRpdHk6ZS5xdWFudGl0eSxzY3JpcHQ6bnVsbD09ZS5zY3JpcHQ/dm9pZCAwOmEuYmFzZTY0UHJlZml4KGUuc2NyaXB0KSxkZWNpbWFsczpudWxsPT1lLmRlY2ltYWxzPzg6ZS5kZWNpbWFscyxyZWlzc3VhYmxlOmUucmVpc3N1YWJsZXx8ITEsZmVlOmEuZmVlKGUsMWU4KSx0aW1lc3RhbXA6ZS50aW1lc3RhbXB8fERhdGUubm93KCksY2hhaW5JZDphLm5ldHdvcmtCeXRlKGUuY2hhaW5JZCw4NykscHJvb2ZzOmUucHJvb2ZzfHxbXSxpZDoiIn07dS52YWxpZGF0ZS5pc3N1ZShsKTt2YXIgaD1zLmJpbmFyeS5zZXJpYWxpemVUeChsKTtyZXR1cm4gZi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwyKSxyPXRbMF0saT10WzFdO3JldHVybiBhLmFkZFByb29mKGwsby5zaWduQnl0ZXMocixoKSxpKX0pLGwuaWQ9by5iYXNlNThFbmNvZGUoby5ibGFrZTJiKGgpKSxsfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDIwKSxhPXIoMzApLHM9cigyNSksdT1yKDE5KTt0LnRyYW5zZmVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aS5UUkFOU0FDVElPTl9UWVBFLlRSQU5TRkVSLGM9ZS52ZXJzaW9ufHwyLGY9YS5jb252ZXJ0VG9QYWlycyh0KSxsPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTphLmdldFNlbmRlclB1YmxpY0tleShmLGUpLGFzc2V0SWQ6YS5ub3JtYWxpemVBc3NldElkKGUuYXNzZXRJZCkscmVjaXBpZW50OmUucmVjaXBpZW50LGFtb3VudDplLmFtb3VudCxhdHRhY2htZW50OmUuYXR0YWNobWVudHx8IiIsZmVlOmEuZmVlKGUsMWU1KSxmZWVBc3NldElkOmEubm9ybWFsaXplQXNzZXRJZChlLmZlZUFzc2V0SWQpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxwcm9vZnM6ZS5wcm9vZnN8fFtdLGlkOiIifTtzLnZhbGlkYXRlLnRyYW5zZmVyKGwpO3ZhciBoPXUuYmluYXJ5LnNlcmlhbGl6ZVR4KGwpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bihlLDIpLHI9dFswXSxpPXRbMV07cmV0dXJuIGEuYWRkUHJvb2YobCxvLnNpZ25CeXRlcyhyLGgpLGkpfSksbC5pZD1vLmJhc2U1OEVuY29kZShvLmJsYWtlMmIoaCkpLGx9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoODcpLGk9cigyMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPXIoMTUpLGE9cigxOSkscz1yKDIwKSx1PXIoMzApLGM9cigyNSk7dC5hbGlhcz1mdW5jdGlvbihlLHQpe3ZhciByPW8uVFJBTlNBQ1RJT05fVFlQRS5BTElBUyxmPWUudmVyc2lvbnx8MixsPXUuY29udmVydFRvUGFpcnModCksaD17dHlwZTpyLHZlcnNpb246ZixzZW5kZXJQdWJsaWNLZXk6dS5nZXRTZW5kZXJQdWJsaWNLZXkobCxlKSxhbGlhczplLmFsaWFzLGZlZTp1LmZlZShlLDFlNSksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLGNoYWluSWQ6dS5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLHByb29mczplLnByb29mc3x8W10saWQ6IiJ9O2MudmFsaWRhdGUuYWxpYXMoaCk7dmFyIHA9YS5iaW5hcnkuc2VyaWFsaXplVHgoaCk7bC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWkoZSwyKSxyPXRbMF0sbj10WzFdO3JldHVybiB1LmFkZFByb29mKGgscy5zaWduQnl0ZXMocixwKSxuKX0pO3ZhciBkPVtwWzBdXS5jb25jYXQobihwLnNsaWNlKDM2LC0xNikpKTtyZXR1cm4gaC5pZD1zLmJhc2U1OEVuY29kZShzLmJsYWtlMmIoVWludDhBcnJheS5mcm9tKGQpKSksaH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXIoMTUpLG89cigyMCksYT1yKDMwKSxzPXIoMTkpLHU9cigyNSk7dC5zZXRTY3JpcHQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuU0VUX1NDUklQVCxjPWUudmVyc2lvbnx8MSxmPWEuY29udmVydFRvUGFpcnModCksbD1hLmdldFNlbmRlclB1YmxpY0tleShmLGUpO2lmKHZvaWQgMD09PWUuc2NyaXB0KXRocm93IG5ldyBFcnJvcigiU2NyaXB0IGZpZWxkIGNhbm5vdCBiZSB1bmRlZmluZWQuIFVzZSBudWxsIGV4cGxpY2l0bHkgdG8gcmVtb3ZlIHNjcmlwdCIpO3ZhciBoPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTpsLGNoYWluSWQ6YS5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLGZlZTphLmZlZShlLDFlNiksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLHByb29mczplLnByb29mc3x8W10saWQ6IiIsc2NyaXB0OmEuYmFzZTY0UHJlZml4KGUuc2NyaXB0KX07dS52YWxpZGF0ZS5zZXRTY3JpcHQoaCk7dmFyIHA9cy5iaW5hcnkuc2VyaWFsaXplVHgoaCk7cmV0dXJuIGYuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1uKGUsMikscj10WzBdLGk9dFsxXTtyZXR1cm4gYS5hZGRQcm9vZihoLG8uc2lnbkJ5dGVzKHIscCksaSl9KSxoLmlkPW8uYmFzZTU4RW5jb2RlKG8uYmxha2UyYihwKSksaH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXIoMTUpLG89cigyMCksYT1yKDMwKSxzPXIoMTkpLHU9cigyNSk7dC5zZXRBc3NldFNjcmlwdD1mdW5jdGlvbihlLHQpe3ZhciByPWkuVFJBTlNBQ1RJT05fVFlQRS5TRVRfQVNTRVRfU0NSSVBULGM9ZS52ZXJzaW9ufHwxLGY9YS5jb252ZXJ0VG9QYWlycyh0KSxsPWEuZ2V0U2VuZGVyUHVibGljS2V5KGYsZSk7aWYobnVsbD09ZS5zY3JpcHQpdGhyb3cgbmV3IEVycm9yKCJBc3NldCBzY3JpcHQgY2Fubm90IGJlIGVtcHR5Iik7dmFyIGg9e3R5cGU6cix2ZXJzaW9uOmMsc2VuZGVyUHVibGljS2V5OmwsYXNzZXRJZDplLmFzc2V0SWQsY2hhaW5JZDphLm5ldHdvcmtCeXRlKGUuY2hhaW5JZCw4NyksZmVlOmEuZmVlKGUsMWU4KSx0aW1lc3RhbXA6ZS50aW1lc3RhbXB8fERhdGUubm93KCkscHJvb2ZzOmUucHJvb2ZzfHxbXSxpZDoiIixzY3JpcHQ6YS5iYXNlNjRQcmVmaXgoZS5zY3JpcHQpfTt1LnZhbGlkYXRlLnNldEFzc2V0U2NyaXB0KGgpO3ZhciBwPXMuYmluYXJ5LnNlcmlhbGl6ZVR4KGgpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bihlLDIpLHI9dFswXSxpPXRbMV07cmV0dXJuIGEuYWRkUHJvb2YoaCxvLnNpZ25CeXRlcyhyLHApLGkpfSksaC5pZD1vLmJhc2U1OEVuY29kZShvLmJsYWtlMmIocCkpLGh9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE1KSxvPXIoMjApLGE9cigzMCkscz1yKDE5KSx1PXIoMjUpO3Quc3BvbnNvcnNoaXA9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuU1BPTlNPUlNISVAsYz1lLnZlcnNpb258fDEsZj1hLmNvbnZlcnRUb1BhaXJzKHQpLGw9e3R5cGU6cix2ZXJzaW9uOmMsc2VuZGVyUHVibGljS2V5OmEuZ2V0U2VuZGVyUHVibGljS2V5KGYsZSksbWluU3BvbnNvcmVkQXNzZXRGZWU6ZS5taW5TcG9uc29yZWRBc3NldEZlZSxhc3NldElkOmUuYXNzZXRJZCxmZWU6YS5mZWUoZSwxZTgpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxwcm9vZnM6ZS5wcm9vZnN8fFtdLGlkOiIifTt1LnZhbGlkYXRlLnNwb25zb3JzaGlwKGwpO3ZhciBoPXMuYmluYXJ5LnNlcmlhbGk="
}

Changelog:

{
    "2020.03.29 15:17": "base64:ImluIGUpKXt2YXIgdD1bZS5tZXNzYWdlXTt0PXQuY29uY2F0KFtdfHwhMSksZS5mdWxsPW4udXRpbC5mb3JtYXQuYXBwbHkodGhpcyx0KX19LG4ubG9nLnByZXBhcmVTdGFuZGFyZEZ1bGw9ZnVuY3Rpb24oZSl7InN0YW5kYXJkRnVsbCJpbiBlfHwobi5sb2cucHJlcGFyZVN0YW5kYXJkKGUpLGUuc3RhbmRhcmRGdWxsPWUuc3RhbmRhcmQpfTt2YXIgYz1bImVycm9yIiwid2FybmluZyIsImluZm8iLCJkZWJ1ZyIsInZlcmJvc2UiXTtmb3Iocz0wO3M8Yy5sZW5ndGg7KytzKSFmdW5jdGlvbihlKXtuLmxvZ1tlXT1mdW5jdGlvbih0LHIpe3ZhciBpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykuc2xpY2UoMiksbz17dGltZXN0YW1wOm5ldyBEYXRlLGxldmVsOmUsY2F0ZWdvcnk6dCxtZXNzYWdlOnIsYXJndW1lbnRzOml9O24ubG9nLmxvZ01lc3NhZ2Uobyl9fShjW3NdKTtpZihuLmxvZy5tYWtlTG9nZ2VyPWZ1bmN0aW9uKGUpe3ZhciB0PXtmbGFnczowLGY6ZX07cmV0dXJuIG4ubG9nLnNldExldmVsKHQsIm5vbmUiKSx0fSxuLmxvZy5zZXRMZXZlbD1mdW5jdGlvbihlLHQpe3ZhciByPSExO2lmKGUmJiEoZS5mbGFncyZuLmxvZy5MRVZFTF9MT0NLRUQpKWZvcih2YXIgaT0wO2k8bi5sb2cubGV2ZWxzLmxlbmd0aDsrK2kpe2lmKHQ9PW4ubG9nLmxldmVsc1tpXSl7ZS5sZXZlbD10LHI9ITA7YnJlYWt9fXJldHVybiByfSxuLmxvZy5sb2NrPWZ1bmN0aW9uKGUsdCl7InVuZGVmaW5lZCI9PT10eXBlb2YgdHx8dD9lLmZsYWdzfD1uLmxvZy5MRVZFTF9MT0NLRUQ6ZS5mbGFncyY9fm4ubG9nLkxFVkVMX0xPQ0tFRH0sbi5sb2cuYWRkTG9nZ2VyPWZ1bmN0aW9uKGUpe28ucHVzaChlKX0sInVuZGVmaW5lZCIhPT10eXBlb2YgY29uc29sZSYmImxvZyJpbiBjb25zb2xlKXt2YXIgZjtpZihjb25zb2xlLmVycm9yJiZjb25zb2xlLndhcm4mJmNvbnNvbGUuaW5mbyYmY29uc29sZS5kZWJ1Zyl7dmFyIGw9e2Vycm9yOmNvbnNvbGUuZXJyb3Isd2FybmluZzpjb25zb2xlLndhcm4saW5mbzpjb25zb2xlLmluZm8sZGVidWc6Y29uc29sZS5kZWJ1Zyx2ZXJib3NlOmNvbnNvbGUuZGVidWd9LGg9ZnVuY3Rpb24oZSx0KXtuLmxvZy5wcmVwYXJlU3RhbmRhcmQodCk7dmFyIHI9bFt0LmxldmVsXSxpPVt0LnN0YW5kYXJkXTtpPWkuY29uY2F0KHQuYXJndW1lbnRzLnNsaWNlKCkpLHIuYXBwbHkoY29uc29sZSxpKX07Zj1uLmxvZy5tYWtlTG9nZ2VyKGgpfWVsc2V7aD1mdW5jdGlvbihlLHQpe24ubG9nLnByZXBhcmVTdGFuZGFyZEZ1bGwodCksY29uc29sZS5sb2codC5zdGFuZGFyZEZ1bGwpfTtmPW4ubG9nLm1ha2VMb2dnZXIoaCl9bi5sb2cuc2V0TGV2ZWwoZiwiZGVidWciKSxuLmxvZy5hZGRMb2dnZXIoZiksYT1mfWVsc2UgY29uc29sZT17bG9nOmZ1bmN0aW9uKCl7fX07aWYobnVsbCE9PWEpe3ZhciBwPW4udXRpbC5nZXRRdWVyeVZhcmlhYmxlcygpO2lmKCJjb25zb2xlLmxldmVsImluIHAmJm4ubG9nLnNldExldmVsKGEscFsiY29uc29sZS5sZXZlbCJdLnNsaWNlKC0xKVswXSksImNvbnNvbGUubG9jayJpbiBwKSJ0cnVlIj09cFsiY29uc29sZS5sb2NrIl0uc2xpY2UoLTEpWzBdJiZuLmxvZy5sb2NrKGEpfW4ubG9nLmNvbnNvbGVMb2dnZXI9YX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49cig2NyksaT1yKDc5KTt0LlNlZWQ9e2lzU2VlZFdpdGhOb25jZTpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZS5ub25jZX0sdG9CaW5hcnk6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuU2VlZC5pc1NlZWRXaXRoTm9uY2UoZSk/e3NlZWQ6dC5TZWVkLnRvQmluYXJ5KGUuc2VlZCkuc2VlZCxub25jZTplLm5vbmNlfTp7c2VlZDpuLl9mcm9tUmF3SW4oZSksbm9uY2U6dm9pZCAwfX0sdG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGkuYnl0ZXNUb1N0cmluZyh0LlNlZWQudG9CaW5hcnkoZSkuc2VlZCl9fX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49cigxMzcpLGk9cigxMzcpO3QuQ2hhaWRJZD17dG9OdW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgZT9lLmNoYXJDb2RlQXQoMCk6ZX0saXNNYWlubmV0OmZ1bmN0aW9uKGUpe3JldHVybiB0LkNoYWlkSWQudG9OdW1iZXIoZSk9PT1uLk1BSU5fTkVUX0NIQUlOX0lEfSxpc1Rlc3RuZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuQ2hhaWRJZC50b051bWJlcihlKT09PWkuVEVTVF9ORVRfQ0hBSU5fSUR9fX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49IjEyMzQ1Njc4OUFCQ0RFRkdISktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbW5vcHFyc3R1dnd4eXoiLGk9bi5zcGxpdCgiIikucmVkdWNlKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yLGV9LHt9KTt0LmRlZmF1bHQ9e2VuY29kZTpmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciB0PVswXSxyPTA7cjxlLmxlbmd0aDtyKyspe2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXRbaV08PD04O3RbMF0rPWVbcl07Zm9yKHZhciBvPTAsYT0wO2E8dC5sZW5ndGg7YSsrKXRbYV0rPW8sbz10W2FdLzU4fDAsdFthXSU9NTg7Zm9yKDtvOyl0LnB1c2gobyU1OCksbz1vLzU4fDB9Zm9yKHZhciBzPTA7MD09PWVbc10mJnM8ZS5sZW5ndGgtMTtzKyspdC5wdXNoKDApO3JldHVybiB0LnJldmVyc2UoKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19KS5qb2luKCIiKX0sZGVjb2RlOmZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Zm9yKHZhciB0PVswXSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07aWYoIShuIGluIGkpKXRocm93IG5ldyBFcnJvcignVGhlcmUgaXMgbm8gY2hhcmFjdGVyICInLmNvbmNhdChuLCciIGluIHRoZSBCYXNlNTggc2VxdWVuY2UhJykpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRbb10qPTU4O3RbMF0rPWlbbl07Zm9yKHZhciBhPTAscz0wO3M8dC5sZW5ndGg7cysrKXRbc10rPWEsYT10W3NdPj44LHRbc10mPTI1NTtmb3IoO2E7KXQucHVzaCgyNTUmYSksYT4+PTh9Zm9yKHZhciB1PTA7IjEiPT09ZVt1XSYmdTxlLmxlbmd0aC0xO3UrKyl0LnB1c2goMCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KHQucmV2ZXJzZSgpKX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uO3ZhciByPW51bGw7dHJ5e3I9bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUobmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsMTMsMiw5NiwwLDEsMTI3LDk2LDQsMTI3LDEyNywxMjcsMTI3LDEsMTI3LDMsNyw2LDAsMSwxLDEsMSwxLDYsNiwxLDEyNywxLDY1LDAsMTEsNyw1MCw2LDMsMTA5LDExNywxMDgsMCwxLDUsMTAwLDEwNSwxMTgsOTUsMTE1LDAsMiw1LDEwMCwxMDUsMTE4LDk1LDExNywwLDMsNSwxMTQsMTAxLDEwOSw5NSwxMTUsMCw0LDUsMTE0LDEwMSwxMDksOTUsMTE3LDAsNSw4LDEwMywxMDEsMTE2LDk1LDEwNCwxMDUsMTAzLDEwNCwwLDAsMTAsMTkxLDEsNiw0LDAsMzUsMCwxMSwzNiwxLDEsMTI2LDMyLDAsMTczLDMyLDEsMTczLDY2LDMyLDEzNCwxMzIsMzIsMiwxNzMsMzIsMywxNzMsNjYsMzIsMTM0LDEzMiwxMjYsMzQsNCw2NiwzMiwxMzUsMTY3LDM2LDAsMzIsNCwxNjcsMTEsMzYsMSwxLDEyNiwzMiwwLDE3MywzMiwxLDE3Myw2NiwzMiwxMzQsMTMyLDMyLDIsMTczLDMyLDMsMTczLDY2LDMyLDEzNCwxMzIsMTI3LDM0LDQsNjYsMzIsMTM1LDE2NywzNiwwLDMyLDQsMTY3LDExLDM2LDEsMSwxMjYsMzIsMCwxNzMsMzIsMSwxNzMsNjYsMzIsMTM0LDEzMiwzMiwyLDE3MywzMiwzLDE3Myw2NiwzMiwxMzQsMTMyLDEyOCwzNCw0LDY2LDMyLDEzNSwxNjcsMzYsMCwzMiw0LDE2NywxMSwzNiwxLDEsMTI2LDMyLDAsMTczLDMyLDEsMTczLDY2LDMyLDEzNCwxMzIsMzIsMiwxNzMsMzIsMywxNzMsNjYsMzIsMTM0LDEzMiwxMjksMzQsNCw2NiwzMiwxMzUsMTY3LDM2LDAsMzIsNCwxNjcsMTEsMzYsMSwxLDEyNiwzMiwwLDE3MywzMiwxLDE3Myw2NiwzMiwxMzQsMTMyLDMyLDIsMTczLDMyLDMsMTczLDY2LDMyLDEzNCwxMzIsMTMwLDM0LDQsNjYsMzIsMTM1LDE2NywzNiwwLDMyLDQsMTY3LDExXSkpLHt9KS5leHBvcnRzfWNhdGNoKEMpe31mdW5jdGlvbiBuKGUsdCxyKXt0aGlzLmxvdz0wfGUsdGhpcy5oaWdoPTB8dCx0aGlzLnVuc2lnbmVkPSEhcn1mdW5jdGlvbiBpKGUpe3JldHVybiEwPT09KGUmJmUuX19pc0xvbmdfXyl9bi5wcm90b3R5cGUuX19pc0xvbmdfXyxPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsIl9faXNMb25nX18iLHt2YWx1ZTohMH0pLG4uaXNMb25nPWk7dmFyIG89e30sYT17fTtmdW5jdGlvbiBzKGUsdCl7dmFyIHIsbixpO3JldHVybiB0PyhpPTA8PShlPj4+PTApJiZlPDI1NikmJihuPWFbZV0pP246KHI9YyhlLCgwfGUpPDA/LTE6MCwhMCksaSYmKGFbZV09cikscik6KGk9LTEyODw9KGV8PTApJiZlPDEyOCkmJihuPW9bZV0pP246KHI9YyhlLGU8MD8tMTowLCExKSxpJiYob1tlXT1yKSxyKX1mdW5jdGlvbiB1KGUsdCl7aWYoaXNOYU4oZSkpcmV0dXJuIHQ/bTp2O2lmKHQpe2lmKGU8MClyZXR1cm4gbTtpZihlPj1kKXJldHVybiB3fWVsc2V7aWYoZTw9LXkpcmV0dXJuIFQ7aWYoZSsxPj15KXJldHVybiBFfXJldHVybiBlPDA/dSgtZSx0KS5uZWcoKTpjKGUlcHwwLGUvcHwwLHQpfWZ1bmN0aW9uIGMoZSx0LHIpe3JldHVybiBuZXcgbihlLHQscil9bi5mcm9tSW50PXMsbi5mcm9tTnVtYmVyPXUsbi5mcm9tQml0cz1jO3ZhciBmPU1hdGgucG93O2Z1bmN0aW9uIGwoZSx0LHIpe2lmKDA9PT1lLmxlbmd0aCl0aHJvdyBFcnJvcigiZW1wdHkgc3RyaW5nIik7aWYoIk5hTiI9PT1lfHwiSW5maW5pdHkiPT09ZXx8IitJbmZpbml0eSI9PT1lfHwiLUluZmluaXR5Ij09PWUpcmV0dXJuIHY7aWYoIm51bWJlciI9PT10eXBlb2YgdD8ocj10LHQ9ITEpOnQ9ISF0LChyPXJ8fDEwKTwyfHwzNjxyKXRocm93IFJhbmdlRXJyb3IoInJhZGl4Iik7dmFyIG47aWYoKG49ZS5pbmRleE9mKCItIikpPjApdGhyb3cgRXJyb3IoImludGVyaW9yIGh5cGhlbiIpO2lmKDA9PT1uKXJldHVybiBsKGUuc3Vic3RyaW5nKDEpLHQscikubmVnKCk7Zm9yKHZhciBpPXUoZihyLDgpKSxvPXYsYT0wO2E8ZS5sZW5ndGg7YSs9OCl7dmFyIHM9TWF0aC5taW4oOCxlLmxlbmd0aC1hKSxjPXBhcnNlSW50KGUuc3Vic3RyaW5nKGEsYStzKSxyKTtpZihzPDgpe3ZhciBoPXUoZihyLHMpKTtvPW8ubXVsKGgpLmFkZCh1KGMpKX1lbHNlIG89KG89by5tdWwoaSkpLmFkZCh1KGMpKX1yZXR1cm4gby51bnNpZ25lZD10LG99ZnVuY3Rpb24gaChlLHQpe3JldHVybiJudW1iZXIiPT09dHlwZW9mIGU/dShlLHQpOiJzdHJpbmciPT09dHlwZW9mIGU/bChlLHQpOmMoZS5sb3csZS5oaWdoLCJib29sZWFuIj09PXR5cGVvZiB0P3Q6ZS51bnNpZ25lZCl9bi5mcm9tU3RyaW5nPWwsbi5mcm9tVmFsdWU9aDt2YXIgcD00Mjk0OTY3Mjk2LGQ9cCpwLHk9ZC8yLGc9cygxPDwyNCksdj1zKDApO24uWkVSTz12O3ZhciBtPXMoMCwhMCk7bi5VWkVSTz1tO3ZhciBiPXMoMSk7bi5PTkU9Yjt2YXIgXz1zKDEsITApO24uVU9ORT1fO3ZhciBTPXMoLTEpO24uTkVHX09ORT1TO3ZhciBFPWMoLTEsMjE0NzQ4MzY0NywhMSk7bi5NQVhfVkFMVUU9RTt2YXIgdz1jKC0xLC0xLCEwKTtuLk1BWF9VTlNJR05FRF9WQUxVRT13O3ZhciBUPWMoMCwtMjE0NzQ4MzY0OCwhMSk7bi5NSU5fVkFMVUU9VDt2YXIgQT1uLnByb3RvdHlwZTtBLnRvSW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5zaWduZWQ/dGhpcy5sb3c+Pj4wOnRoaXMubG93fSxBLnRvTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5zaWduZWQ/KHRoaXMuaGlnaD4+PjApKnArKHRoaXMubG93Pj4+MCk6dGhpcy5oaWdoKnArKHRoaXMubG93Pj4+MCl9LEEudG9TdHJpbmc9ZnVuY3Rpb24oZSl7aWYoKGU9ZXx8MTApPDJ8fDM2PGUpdGhyb3cgUmFuZ2VFcnJvcigicmFkaXgiKTtpZih0aGlzLmlzWmVybygpKXJldHVybiIwIjtpZih0aGlzLmlzTmVnYXRpdmUoKSl7aWYodGhpcy5lcShUKSl7dmFyIHQ9dShlKSxyPXRoaXMuZGl2KHQpLG49ci5tdWwodCkuc3ViKHRoaXMpO3JldHVybiByLnRvU3RyaW5nKGUpK24udG9JbnQoKS50b1N0cmluZyhlKX1yZXR1cm4iLSIrdGhpcy5uZWcoKS50b1N0cmluZyhlKX1mb3IodmFyIGk9dShmKGUsNiksdGhpcy51bnNpZ25lZCksbz10aGlzLGE9IiI7Oyl7dmFyIHM9by5kaXYoaSksYz0oby5zdWIocy5tdWwoaSkpLnRvSW50KCk+Pj4wKS50b1N0cmluZyhlKTtpZigobz1zKS5pc1plcm8oKSlyZXR1cm4gYythO2Zvcig7Yy5sZW5ndGg8NjspYz0iMCIrYzthPSIiK2MrYX19LEEuZ2V0SGlnaEJpdHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWdofSxBLmdldEhpZ2hCaXRzVW5zaWduZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWdoPj4+MH0sQS5nZXRMb3dCaXRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG93fSxBLmdldExvd0JpdHNVbnNpZ25lZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvdz4+PjB9LEEuZ2V0TnVtQml0c0Ficz1mdW5jdGlvbigpe2lmKHRoaXMuaXNOZWdhdGl2ZSgpKXJldHVybiB0aGlzLmVxKFQpPzY0OnRoaXMubmVnKCkuZ2V0TnVtQml0c0FicygpO2Zvcih2YXIgZT0wIT10aGlzLmhpZ2g/dGhpcy5oaWdoOnRoaXMubG93LHQ9MzE7dD4wJiYwPT0oZSYxPDx0KTt0LS0pO3JldHVybiAwIT10aGlzLmhpZ2g/dCszMzp0KzF9LEEuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmhpZ2gmJjA9PT10aGlzLmxvd30sQS5lcXo9QS5pc1plcm8sQS5pc05lZ2F0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMudW5zaWduZWQmJnRoaXMuaGlnaDwwfSxBLmlzUG9zaXRpdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bnNpZ25lZHx8dGhpcy5oaWdoPj0wfSxBLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT0oMSZ0aGlzLmxvdyl9LEEuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT0oMSZ0aGlzLmxvdyl9LEEuZXF1YWxzPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpfHwoZT1oKGUpKSwodGhpcy51bnNpZ25lZD09PWUudW5zaWduZWR8fHRoaXMuaGlnaD4+PjMxIT09MXx8ZS5oaWdoPj4+MzEhPT0xKSYmKHRoaXMuaGlnaD09PWUuaGlnaCYmdGhpcy5sb3c9PT1lLmxvdyl9LEEuZXE9QS5lcXVhbHMsQS5ub3RFcXVhbHM9ZnVuY3Rpb24oZSl7cmV0dXJuIXRoaXMuZXEoZSl9LEEubmVxPUEubm90RXF1YWxzLEEubmU9QS5ub3RFcXVhbHMsQS5sZXNzVGhhbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb21wKGUpPDB9LEEubHQ9QS5sZXNzVGhhbixBLmxlc3NUaGFuT3JFcXVhbD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb21wKGUpPD0wfSxBLmx0ZT1BLmxlc3NUaGFuT3JFcXVhbCxBLmxlPUEubGVzc1RoYW5PckVxdWFsLEEuZ3JlYXRlclRoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29tcChlKT4wfSxBLmd0PUEuZ3JlYXRlclRoYW4sQS5ncmVhdGVyVGhhbk9yRXF1YWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29tcChlKT49MH0sQS5ndGU9QS5ncmVhdGVyVGhhbk9yRXF1YWwsQS5nZT1BLmdyZWF0ZXJUaGFuT3JFcXVhbCxBLmNvbXBhcmU9ZnVuY3Rpb24oZSl7aWYoaShlKXx8KGU9aChlKSksdGhpcy5lcShlKSlyZXR1cm4gMDt2YXIgdD10aGlzLmlzTmVnYXRpdmUoKSxyPWUuaXNOZWdhdGl2ZSgpO3JldHVybiB0JiYhcj8tMTohdCYmcj8xOnRoaXMudW5zaWduZWQ/ZS5oaWdoPj4+MD50aGlzLmhpZ2g+Pj4wfHxlLmhpZ2g9PT10aGlzLmhpZ2gmJmUubG93Pj4+MD50aGlzLmxvdz4+PjA/LTE6MTp0aGlzLnN1YihlKS5pc05lZ2F0aXZlKCk/LTE6MX0sQS5jb21wPUEuY29tcGFyZSxBLm5lZ2F0ZT1mdW5jdGlvbigpe3JldHVybiF0aGlzLnVuc2lnbmVkJiZ0aGlzLmVxKFQpP1Q6dGhpcy5ub3QoKS5hZGQoYil9LEEubmVnPUEubmVnYXRlLEEuYWRkPWZ1bmN0aW9uKGUpe2koZSl8fChlPWgoZSkpO3ZhciB0PXRoaXMuaGlnaD4+PjE2LHI9NjU1MzUmdGhpcy5oaWdoLG49dGhpcy5sb3c+Pj4xNixvPTY1NTM1JnRoaXMubG93LGE9ZS5oaWdoPj4+MTYscz02NTUzNSZlLmhpZ2gsdT1lLmxvdz4+PjE2LGY9MCxsPTAscD0wLGQ9MDtyZXR1cm4gcCs9KGQrPW8rKDY1NTM1JmUubG93KSk+Pj4xNixsKz0ocCs9bit1KT4+PjE2LGYrPShsKz1yK3MpPj4+MTYsZis9dCthLGMoKHAmPTY1NTM1KTw8MTZ8KGQmPTY1NTM1KSwoZiY9NjU1MzUpPDwxNnwobCY9NjU1MzUpLHRoaXMudW5zaWduZWQpfSxBLnN1YnRyYWN0PWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpfHwoZT1oKGUpKSx0aGlzLmFkZChlLm5lZygpKX0sQS5zdWI9QS5zdWJ0cmFjdCxBLm11bHRpcGx5PWZ1bmN0aW9uKGUpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIHY7aWYoaShlKXx8KGU9aChlKSkscilyZXR1cm4gYyhyLm11bCh0aGlzLmxvdyx0aGlzLmhpZ2gsZS5sb3csZS5oaWdoKSxyLmdldF9oaWdoKCksdGhpcy51bnNpZ25lZCk7aWYoZS5pc1plcm8oKSlyZXR1cm4gdjtpZih0aGlzLmVxKFQpKXJldHVybiBlLmlzT2RkKCk/VDp2O2lmKGUuZXEoVCkpcmV0dXJuIHRoaXMuaXNPZGQoKT9UOnY7aWYodGhpcy5pc05lZ2F0aXZlKCkpcmV0dXJuIGUuaXNOZWdhdGl2ZSgpP3RoaXMubmVnKCkubXVsKGUubmVnKCkpOnRoaXMubmVnKCkubXVsKGUpLm5lZygpO2lmKGUuaXNOZWdhdGl2ZSgpKXJldHVybiB0aGlzLm11bChlLm5lZygpKS5uZWcoKTtpZih0aGlzLmx0KGcpJiZlLmx0KGcpKXJldHVybiB1KHRoaXMudG9OdW1iZXIoKSplLnRvTnVtYmVyKCksdGhpcy51bnNpZ25lZCk7dmFyIHQ9dGhpcy5oaWdoPj4+MTYsbj02NTUzNSZ0aGlzLmhpZ2gsbz10aGlzLmxvdz4+PjE2LGE9NjU1MzUmdGhpcy5sb3cscz1lLmhpZ2g+Pj4xNixmPTY1NTM1JmUuaGlnaCxsPWUubG93Pj4+MTYscD02NTUzNSZlLmxvdyxkPTAseT0wLG09MCxiPTA7cmV0dXJuIG0rPShiKz1hKnApPj4+MTYseSs9KG0rPW8qcCk+Pj4xNixtJj02NTUzNSx5Kz0obSs9YSpsKT4+PjE2LGQrPSh5Kz1uKnApPj4+MTYseSY9NjU1MzUsZCs9KHkrPW8qbCk+Pj4xNix5Jj02NTUzNSxkKz0oeSs9YSpmKT4+PjE2LGQrPXQqcCtuKmwrbypmK2EqcyxjKChtJj02NTUzNSk8PDE2fChiJj02NTUzNSksKGQmPTY1NTM1KTw8MTZ8KHkmPTY1NTM1KSx0aGlzLnVuc2lnbmVkKX0sQS5tdWw9QS5tdWx0aXBseSxBLmRpdmlkZT1mdW5jdGlvbihlKXtpZihpKGUpfHwoZT1oKGUpKSxlLmlzWmVybygpKXRocm93IEVycm9yKCJkaXZpc2lvbiBieSB6ZXJvIik7dmFyIHQsbixvO2lmKHIpcmV0dXJuIHRoaXMudW5zaWduZWR8fC0yMTQ3NDgzNjQ4IT09dGhpcy5oaWdofHwtMSE9PWUubG93fHwtMSE9PWUuaGlnaD9jKCh0aGlzLnVuc2lnbmVkP3IuZGl2X3U6ci5kaXZfcykodGhpcy5sb3csdGhpcy5oaWdoLGUubG93LGUuaGlnaCksci5nZXRfaGlnaCgpLHRoaXMudW5zaWduZWQpOnRoaXM7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gdGhpcy51bnNpZ25lZD9tOnY7aWYodGhpcy51bnNpZ25lZCl7aWYoZS51bnNpZ25lZHx8KGU9ZS50b1Vuc2lnbmVkKCkpLGUuZ3QodGhpcykpcmV0dXJuIG07aWYoZS5ndCh0aGlzLnNocnUoMSkpKXJldHVybiBfO289bX1lbHNle2lmKHRoaXMuZXEoVCkpcmV0dXJuIGUuZXEoYil8fGUuZXEoUyk/VDplLmVxKFQpP2I6KHQ9dGhpcy5zaHIoMSkuZGl2KGUpLnNobCgxKSkuZXEodik/ZS5pc05lZ2F0aXZlKCk/YjpTOihuPXRoaXMuc3ViKGUubXVsKHQpKSxvPXQuYWRkKG4uZGl2KGUpKSk7aWYoZS5lcShUKSlyZXR1cm4gdGhpcy51bnNpZ25lZD9tOnY7aWYodGhpcy5pc05lZ2F0aXZlKCkpcmV0dXJuIGUuaXNOZWdhdGl2ZSgpP3RoaXMubmVnKCkuZGl2KGUubmVnKCkpOnRoaXMubmVnKCkuZGl2KGUpLm5lZygpO2lmKGUuaXNOZWdhdGl2ZSgpKXJldHVybiB0aGlzLmRpdihlLm5lZygpKS5uZWcoKTtvPXZ9Zm9yKG49dGhpcztuLmd0ZShlKTspe3Q9TWF0aC5tYXgoMSxNYXRoLmZsb29yKG4udG9OdW1iZXIoKS9lLnRvTnVtYmVyKCkpKTtmb3IodmFyIGE9TWF0aC5jZWlsKE1hdGgubG9nKHQpL01hdGguTE4yKSxzPWE8PTQ4PzE6ZigyLGEtNDgpLGw9dSh0KSxwPWwubXVsKGUpO3AuaXNOZWdhdGl2ZSgpfHxwLmd0KG4pOylwPShsPXUodC09cyx0aGlzLnVuc2lnbmVkKSkubXVsKGUpO2wuaXNaZXJvKCkmJihsPWIpLG89by5hZGQobCksbj1uLnN1YihwKX1yZXR1cm4gb30sQS5kaXY9QS5kaXZpZGUsQS5tb2R1bG89ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSl8fChlPWgoZSkpLHI/YygodGhpcy51bnNpZ25lZD9yLnJlbV91OnIucmVtX3MpKHRoaXMubG93LHRoaXMuaGlnaCxlLmxvdyxlLmhpZ2gpLHIuZ2V0X2hpZ2goKSx0aGlzLnVuc2lnbmVkKTp0aGlzLnN1Yih0aGlzLmRpdihlKS5tdWwoZSkpfSxBLm1vZD1BLm1vZHVsbyxBLnJlbT1BLm1vZHVsbyxBLm5vdD1mdW5jdGlvbigpe3JldHVybiBjKH50aGlzLmxvdyx+dGhpcy5oaWdoLHRoaXMudW5zaWduZWQpfSxBLmFuZD1mdW5jdGlvbihlKXtyZXR1cm4gaShlKXx8KGU9aChlKSksYyh0aGlzLmxvdyZlLmxvdyx0aGlzLmhpZ2gmZS5oaWdoLHRoaXMudW5zaWduZWQpfSxBLm9yPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpfHwoZT1oKGUpKSxjKHRoaXMubG93fGUubG93LHRoaXMuaGlnaHxlLmhpZ2gsdGhpcy51bnNpZ25lZCl9LEEueG9yPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpfHwoZT1oKGUpKSxjKHRoaXMubG93XmUubG93LHRoaXMuaGlnaF5lLmhpZ2gsdGhpcy51bnNpZ25lZCl9LEEuc2hpZnRMZWZ0PWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpJiYoZT1lLnRvSW50KCkpLDA9PT0oZSY9NjMpP3RoaXM6ZTwzMj9jKHRoaXMubG93PDxlLHRoaXMuaGlnaDw8ZXx0aGlzLmxvdz4+PjMyLWUsdGhpcy51bnNpZ25lZCk6YygwLHRoaXMubG93PDxlLTMyLHRoaXMudW5zaWduZWQpfSxBLnNobD1BLnNoaWZ0TGVmdCxBLnNoaWZ0UmlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkmJihlPWUudG9JbnQoKSksMD09PShlJj02Myk/dGhpczplPDMyP2ModGhpcy5sb3c+Pj5lfHRoaXMuaGlnaDw8MzItZSx0aGlzLmhpZ2g+PmUsdGhpcy51bnNpZ25lZCk6Yyh0aGlzLmhpZ2g+PmUtMzIsdGhpcy5oaWdoPj0wPzA6LTEsdGhpcy51bnNpZ25lZCl9LEEuc2hyPUEuc2hpZnRSaWdodCxBLnNoaWZ0UmlnaHRVbnNpZ25lZD1mdW5jdGlvbihlKXtpZihpKGUpJiYoZT1lLnRvSW50KCkpLDA9PT0oZSY9NjMpKXJldHVybiB0aGlzO3ZhciB0PXRoaXMuaGlnaDtyZXR1cm4gZTwzMj9jKHRoaXMubG93Pj4+ZXx0PDwzMi1lLHQ+Pj5lLHRoaXMudW5zaWduZWQpOmMoMzI9PT1lP3Q6dD4+PmUtMzIsMCx0aGlzLnVuc2lnbmVkKX0sQS5zaHJ1PUEuc2hpZnRSaWdodFVuc2lnbmVkLEEuc2hyX3U9QS5zaGlmdFJpZ2h0VW5zaWduZWQsQS50b1NpZ25lZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnVuc2lnbmVkP2ModGhpcy5sb3csdGhpcy5oaWdoLCExKTp0aGlzfSxBLnRvVW5zaWduZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bnNpZ25lZD90aGlzOmModGhpcy5sb3csdGhpcy5oaWdoLCEwKX0sQS50b0J5dGVzPWZ1bmN0aW9uKGUpe3JldHVybiBlP3RoaXMudG9CeXRlc0xFKCk6dGhpcy50b0J5dGVzQkUoKX0sQS50b0J5dGVzTEU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmhpZ2gsdD10aGlzLmxvdztyZXR1cm5bMjU1JnQsdD4+PjgmMjU1LHQ+Pj4xNiYyNTUsdD4+PjI0LDI1NSZlLGU+Pj44JjI1NSxlPj4+MTYmMjU1LGU+Pj4yNF19LEEudG9CeXRlc0JFPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5oaWdoLHQ9dGhpcy5sb3c7cmV0dXJuW2U+Pj4yNCxlPj4+MTYmMjU1LGU+Pj44JjI1NSwyNTUmZSx0Pj4+MjQsdD4+PjE2JjI1NSx0Pj4+OCYyNTUsMjU1JnRdfSxuLmZyb21CeXRlcz1mdW5jdGlvbihlLHQscil7cmV0dXJuIHI/bi5mcm9tQnl0ZXNMRShlLHQpOm4uZnJvbUJ5dGVzQkUoZSx0KX0sbi5mcm9tQnl0ZXNMRT1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgbihlWzBdfGVbMV08PDh8ZVsyXTw8MTZ8ZVszXTw8MjQsZVs0XXxlWzVdPDw4fGVbNl08PDE2fGVbN108PDI0LHQpfSxuLmZyb21CeXRlc0JFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBuKGVbNF08PDI0fGVbNV08PDE2fGVbNl08PDh8ZVs3XSxlWzBdPDwyNHxlWzFdPDwxNnxlWzJdPDw4fGVbM10sdCl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfX0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCYmcihlLnByb3RvdHlwZSx0KSxuJiZyKGUsbiksZX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPXIoMjYpLGk9e29yZGVyVHlwZTpuLm9yRXEoWyJzZWxsIiwiYnV5Il0pLHNlbmRlclB1YmxpY0tleTpuLmlzUHVibGljS2V5LG1hdGNoZXJQdWJsaWNLZXk6bi5pc1B1YmxpY0tleSx2ZXJzaW9uOm4ub3JFcShbdm9pZCAwLDAsMSwyLDNdKSxhc3NldFBhaXI6bi52YWxpZGF0ZVBpcGUobi5pc1JlcXVpcmVkKCEwKSxuLnBpcGUobi5wcm9wKCJhbW91bnRBc3NldCIpLG4uaXNBc3NldElkKSxuLnBpcGUobi5wcm9wKCJwcmljZUFzc2V0Iiksbi5pc0Fzc2V0SWQpKSxwcmljZTpuLmlzTnVtYmVyTGlrZSxhbW91bnQ6bi5pc051bWJlckxpa2UsbWF0Y2hlckZlZTpuLmlzTnVtYmVyTGlrZSxleHBpcmF0aW9uOm4uaXNOdW1iZXJMaWtlLHRpbWVzdGFtcDpuLmlzTnVtYmVyLHByb29mczpuLmlmRWxzZShuLmlzQXJyYXksbi5kZWZhdWx0VmFsdWUoITApLG4ub3JFcShbdm9pZCAwXSkpfSxvPXttYXRjaGVyRmVlQXNzZXRJZDpuLm9yRXEoW3ZvaWQgMCxudWxsLCJXQVZFUyJdKX0sYT17bWF0Y2hlckZlZUFzc2V0SWQ6bi5pc0Fzc2V0SWR9LHM9bi52YWxpZGF0ZUJ5U2hlbWEoaSxuLmdldEVycm9yKSx1PW4udmFsaWRhdGVCeVNoZW1hKG8sbi5nZXRFcnJvciksYz1uLnZhbGlkYXRlQnlTaGVtYShhLG4uZ2V0RXJyb3IpO3Qub3JkZXJWYWxpZGF0b3I9bi52YWxpZGF0ZVBpcGUocyxuLmlmRWxzZShuLnBpcGUobi5wcm9wKCJ2ZXJzaW9uIiksbi5pc0VxKDMpKSxjLHUpKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDIwKSxhPXIoMzApLHM9cigxOSksdT1yKDI1KTt0LnJlaXNzdWU9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuUkVJU1NVRSxjPWUudmVyc2lvbnx8MixmPWEuY29udmVydFRvUGFpcnModCksbD17dHlwZTpyLHZlcnNpb246YyxzZW5kZXJQdWJsaWNLZXk6YS5nZXRTZW5kZXJQdWJsaWNLZXkoZixlKSxhc3NldElkOmUuYXNzZXRJZCxxdWFudGl0eTplLnF1YW50aXR5LHJlaXNzdWFibGU6ZS5yZWlzc3VhYmxlLGNoYWluSWQ6YS5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLGZlZTphLmZlZShlLDFlOCksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLHByb29mczplLnByb29mc3x8W10saWQ6IiJ9O3UudmFsaWRhdGUucmVpc3N1ZShsKTt2YXIgaD1zLmJpbmFyeS5zZXJpYWxpemVUeChsKTtyZXR1cm4gZi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwyKSxyPXRbMF0saT10WzFdO3JldHVybiBhLmFkZFByb29mKGwsby5zaWduQnl0ZXMocixoKSxpKX0pLGwuaWQ9by5iYXNlNThFbmNvZGUoby5ibGFrZTJiKGgpKSxsfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDE5KSxhPXIoMjApLHM9cigzMCksdT1yKDI1KTt0LmJ1cm49ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuQlVSTixjPWUudmVyc2lvbnx8MixmPXMuY29udmVydFRvUGFpcnModCksbD17dHlwZTpyLHZlcnNpb246YyxzZW5kZXJQdWJsaWNLZXk6cy5nZXRTZW5kZXJQdWJsaWNLZXkoZixlKSxhc3NldElkOmUuYXNzZXRJZCxxdWFudGl0eTplLnF1YW50aXR5LGNoYWluSWQ6cy5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLGZlZTpzLmZlZShlLDFlNSksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLHByb29mczplLnByb29mc3x8W10saWQ6IiJ9O3UudmFsaWRhdGUuYnVybihsKTt2YXIgaD1vLmJpbmFyeS5zZXJpYWxpemVUeChsKTtyZXR1cm4gZi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwyKSxyPXRbMF0saT10WzFdO3JldHVybiBzLmFkZFByb29mKGwsYS5zaWduQnl0ZXMocixoKSxpKX0pLGwuaWQ9YS5iYXNlNThFbmNvZGUoYS5ibGFrZTJiKGgpKSxsfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDE5KSxhPXIoMjApLHM9cigzMCksdT1yKDI1KTt0LmV4Y2hhbmdlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aS5UUkFOU0FDVElPTl9UWVBFLkVYQ0hBTkdFLGM9ZS52ZXJzaW9ufHwyLGY9cy5jb252ZXJ0VG9QYWlycyh0KSxsPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTpzLmdldFNlbmRlclB1YmxpY0tleShmLGUpLG9yZGVyMTplLm9yZGVyMSxvcmRlcjI6ZS5vcmRlcjIscHJpY2U6ZS5wcmljZSxhbW91bnQ6ZS5hbW91bnQsYnV5TWF0Y2hlckZlZTplLmJ1eU1hdGNoZXJGZWUsc2VsbE1hdGNoZXJGZWU6ZS5zZWxsTWF0Y2hlckZlZSxmZWU6cy5mZWUoZSwxZTUpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxwcm9vZnM6ZS5wcm9vZnN8fFtdLGlkOiIifTt1LnZhbGlkYXRlLmV4Y2hhbmdlKGwpO3ZhciBoPW8uYmluYXJ5LnNlcmlhbGl6ZVR4KGwpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bihlLDIpLHI9dFswXSxpPXRbMV07cmV0dXJuIHMuYWRkUHJvb2YobCxhLnNpZ25CeXRlcyhyLGgpLGkpfSksT2JqZWN0LmFzc2lnbih7fSxsLHtpZDphLmJhc2U1OEVuY29kZShhLmJsYWtlMmIoaCkpfSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE1KSxvPXIoMjApLGE9cigzMCkscz1yKDE5KSx1PXIoMjUpO3QubGVhc2U9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuTEVBU0UsYz1lLnZlcnNpb258fDIsZj1hLmNvbnZlcnRUb1BhaXJzKHQpLGw9e3R5cGU6cix2ZXJzaW9uOmMsc2VuZGVyUHVibGljS2V5OmEuZ2V0U2VuZGVyUHVibGljS2V5KGYsZSksYW1vdW50OmUuYW1vdW50LHJlY2lwaWVudDplLnJlY2lwaWVudCxmZWU6YS5mZWUoZSwxZTUpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxwcm9vZnM6ZS5wcm9vZnN8fFtdLGlkOiIifTt1LnZhbGlkYXRlLmxlYXNlKGwpO3ZhciBoPXMuYmluYXJ5LnNlcmlhbGl6ZVR4KGwpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bihlLDIpLHI9dFswXSxpPXRbMV07cmV0dXJuIGEuYWRkUHJvb2YobCxvLnNpZ25CeXRlcyhyLGgpLGkpfSksbC5pZD1vLmJhc2U1OEVuY29kZShvLmJsYWtlMmIoaCkpLGx9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE1KSxvPXIoMTkpLGE9cigyMCkscz1yKDMwKSx1PXIoMjUpO3QuY2FuY2VsTGVhc2U9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuQ0FOQ0VMX0xFQVNFLGM9ZS52ZXJzaW9ufHwyLGY9cy5jb252ZXJ0VG9QYWlycyh0KSxsPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTpzLmdldFNlbmRlclB1YmxpY0tleShmLGUpLGxlYXNlSWQ6ZS5sZWFzZUlkLGZlZTpzLmZlZShlLDFlNSksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLGNoYWluSWQ6cy5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLHByb29mczplLnByb29mc3x8W10saWQ6IiJ9O3UudmFsaWRhdGUuY2FuY2VsTGVhc2UobCk7dmFyIGg9by5iaW5hcnkuc2VyaWFsaXplVHgobCk7cmV0dXJuIGYuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1uKGUsMikscj10WzBdLGk9dFsxXTtyZXR1cm4gcy5hZGRQcm9vZihsLGEuc2lnbkJ5dGVzKHIsaCksaSl9KSxsLmlkPWEuYmFzZTU4RW5jb2RlKGEuYmxha2UyYihoKSksbH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE5KS5zZXJpYWxpemVQcmltaXRpdmVzLG89aS5CQVNFNThfU1RSSU5HLGE9aS5CQVNFNjRfU1RSSU5HLHM9aS5CWVRFLHU9aS5CWVRFUyxjPWkuQ09VTlQsZj1pLkxFTixsPWkuTE9ORyxoPWkuU0hPUlQscD1pLlNUUklORyxkPXIoMjApLHk9cigxNSksZz1yKDMwKSx2PXIoMTkpLG09cigyNSksYj17aW50ZWdlcjpbImludGVnZXIiLDAsbF0sbnVtYmVyOlsiaW50ZWdlciIsMCxsXSxib29sZWFuOlsiYm9vbGVhbiIsMSxzXSxzdHJpbmc6WyJzdHJpbmciLDMsZihoKShwKV0sYmluYXJ5OlsiYmluYXJ5IiwyLGZ1bmN0aW9uKGUpe3JldHVybiBmKGgpKGEpKGUuc2xpY2UoNykpfV0sXzpbImJpbmFyeSIsMixmKGgpKHUpXX0sXz1mdW5jdGlvbihlKXtyZXR1cm4gYlt0eXBlb2YgZV18fGIuX307dC5kYXRhPWZ1bmN0aW9uKHQscil7dmFyIGk9eS5UUkFOU0FDVElPTl9UWVBFLkRBVEEsYT10LnZlcnNpb258fDEsdT1nLmNvbnZlcnRUb1BhaXJzKHIpLGI9Zy5nZXRTZW5kZXJQdWJsaWNLZXkodSx0KTtpZighQXJyYXkuaXNBcnJheSh0LmRhdGEpKXRocm93IG5ldyBFcnJvcignWyJkYXRhIHNob3VsZCBiZSBhcnJheSJdJyk7dmFyIFM9dC50aW1lc3RhbXB8fERhdGUubm93KCksRT1kLmNvbmNhdChzKHkuVFJBTlNBQ1RJT05fVFlQRS5EQVRBKSxzKDEpLG8oYiksYyhoKShmdW5jdGlvbihlKXtyZXR1cm4gZC5jb25jYXQoZihoKShwKShlLmtleSksW18oZS52YWx1ZSlbMV1dLF8oZS52YWx1ZSlbMl0oZS52YWx1ZSkpfSkodC5kYXRhKSxsKFMpKSx3PTFlNSpNYXRoLmZsb29yKDErKEUubGVuZ3RoKzgtMSkvMTAyNCksVD17dHlwZTppLHZlcnNpb246YSxzZW5kZXJQdWJsaWNLZXk6YixmZWU6Zy5mZWUodCx3KSx0aW1lc3RhbXA6Uyxwcm9vZnM6dC5wcm9vZnN8fFtdLGlkOiIiLGRhdGE6dC5kYXRhJiZ0LmRhdGEubWFwKGZ1bmN0aW9uKHQpe2lmKHQudHlwZSlyZXR1cm4gdDt2YXIgcj1fKHQudmFsdWUpWzBdO3JldHVybnt0eXBlOnIsa2V5OnQua2V5LHZhbHVlOiJiaW5hcnkiPT09cj8iYmFzZTY0OiIrZS5mcm9tKHQudmFsdWUpLnRvU3RyaW5nKCJiYXNlNjQiKTp0LnZhbHVlfX0pfTttLnZhbGlkYXRlLmRhdGEoVCk7dmFyIEE9di5iaW5hcnkuc2VyaWFsaXplVHgoVCk7cmV0dXJuIHUuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1uKGUsMikscj10WzBdLGk9dFsxXTtyZXR1cm4gZy5hZGRQcm9vZihULGQuc2lnbkJ5dGVzKHIsQSksaSl9KSxULmlkPWQuYmFzZTU4RW5jb2RlKGQuYmxha2UyYihBKSksVH19KS5jYWxsKHRoaXMscigxOCkuQnVmZmVyKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDIwKSxhPXIoMzApLHM9cigxOSksdT1yKDI1KTt0Lmlzc3VlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aS5UUkFOU0FDVElPTl9UWVBFLklTU1VFLGM9ZS52ZXJzaW9ufHwyLGY9YS5jb252ZXJ0VG9QYWlycyh0KSxsPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTphLmdldFNlbmRlclB1YmxpY0tleShmLGUpLG5hbWU6ZS5uYW1lLGRlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb24scXVhbnRpdHk6ZS5xdWFudGl0eSxzY3JpcHQ6bnVsbD09ZS5zY3JpcHQ/dm9pZCAwOmEuYmFzZTY0UHJlZml4KGUuc2NyaXB0KSxkZWNpbWFsczpudWxsPT1lLmRlY2ltYWxzPzg6ZS5kZWNpbWFscyxyZWlzc3VhYmxlOmUucmVpc3N1YWJsZXx8ITEsZmVlOmEuZmVlKGUsMWU4KSx0aW1lc3RhbXA6ZS50aW1lc3RhbXB8fERhdGUubm93KCksY2hhaW5JZDphLm5ldHdvcmtCeXRlKGUuY2hhaW5JZCw4NykscHJvb2ZzOmUucHJvb2ZzfHxbXSxpZDoiIn07dS52YWxpZGF0ZS5pc3N1ZShsKTt2YXIgaD1zLmJpbmFyeS5zZXJpYWxpemVUeChsKTtyZXR1cm4gZi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwyKSxyPXRbMF0saT10WzFdO3JldHVybiBhLmFkZFByb29mKGwsby5zaWduQnl0ZXMocixoKSxpKX0pLGwuaWQ9by5iYXNlNThFbmNvZGUoby5ibGFrZTJiKGgpKSxsfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDIwKSxhPXIoMzApLHM9cigyNSksdT1yKDE5KTt0LnRyYW5zZmVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aS5UUkFOU0FDVElPTl9UWVBFLlRSQU5TRkVSLGM9ZS52ZXJzaW9ufHwyLGY9YS5jb252ZXJ0VG9QYWlycyh0KSxsPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTphLmdldFNlbmRlclB1YmxpY0tleShmLGUpLGFzc2V0SWQ6YS5ub3JtYWxpemVBc3NldElkKGUuYXNzZXRJZCkscmVjaXBpZW50OmUucmVjaXBpZW50LGFtb3VudDplLmFtb3VudCxhdHRhY2htZW50OmUuYXR0YWNobWVudHx8IiIsZmVlOmEuZmVlKGUsMWU1KSxmZWVBc3NldElkOmEubm9ybWFsaXplQXNzZXRJZChlLmZlZUFzc2V0SWQpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxwcm9vZnM6ZS5wcm9vZnN8fFtdLGlkOiIifTtzLnZhbGlkYXRlLnRyYW5zZmVyKGwpO3ZhciBoPXUuYmluYXJ5LnNlcmlhbGl6ZVR4KGwpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bihlLDIpLHI9dFswXSxpPXRbMV07cmV0dXJuIGEuYWRkUHJvb2YobCxvLnNpZ25CeXRlcyhyLGgpLGkpfSksbC5pZD1vLmJhc2U1OEVuY29kZShvLmJsYWtlMmIoaCkpLGx9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoODcpLGk9cigyMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPXIoMTUpLGE9cigxOSkscz1yKDIwKSx1PXIoMzApLGM9cigyNSk7dC5hbGlhcz1mdW5jdGlvbihlLHQpe3ZhciByPW8uVFJBTlNBQ1RJT05fVFlQRS5BTElBUyxmPWUudmVyc2lvbnx8MixsPXUuY29udmVydFRvUGFpcnModCksaD17dHlwZTpyLHZlcnNpb246ZixzZW5kZXJQdWJsaWNLZXk6dS5nZXRTZW5kZXJQdWJsaWNLZXkobCxlKSxhbGlhczplLmFsaWFzLGZlZTp1LmZlZShlLDFlNSksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLGNoYWluSWQ6dS5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLHByb29mczplLnByb29mc3x8W10saWQ6IiJ9O2MudmFsaWRhdGUuYWxpYXMoaCk7dmFyIHA9YS5iaW5hcnkuc2VyaWFsaXplVHgoaCk7bC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWkoZSwyKSxyPXRbMF0sbj10WzFdO3JldHVybiB1LmFkZFByb29mKGgscy5zaWduQnl0ZXMocixwKSxuKX0pO3ZhciBkPVtwWzBdXS5jb25jYXQobihwLnNsaWNlKDM2LC0xNikpKTtyZXR1cm4gaC5pZD1zLmJhc2U1OEVuY29kZShzLmJsYWtlMmIoVWludDhBcnJheS5mcm9tKGQpKSksaH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXIoMTUpLG89cigyMCksYT1yKDMwKSxzPXIoMTkpLHU9cigyNSk7dC5zZXRTY3JpcHQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuU0VUX1NDUklQVCxjPWUudmVyc2lvbnx8MSxmPWEuY29udmVydFRvUGFpcnModCksbD1hLmdldFNlbmRlclB1YmxpY0tleShmLGUpO2lmKHZvaWQgMD09PWUuc2NyaXB0KXRocm93IG5ldyBFcnJvcigiU2NyaXB0IGZpZWxkIGNhbm5vdCBiZSB1bmRlZmluZWQuIFVzZSBudWxsIGV4cGxpY2l0bHkgdG8gcmVtb3ZlIHNjcmlwdCIpO3ZhciBoPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTpsLGNoYWluSWQ6YS5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLGZlZTphLmZlZShlLDFlNiksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLHByb29mczplLnByb29mc3x8W10saWQ6IiIsc2NyaXB0OmEuYmFzZTY0UHJlZml4KGUuc2NyaXB0KX07dS52YWxpZGF0ZS5zZXRTY3JpcHQoaCk7dmFyIHA9cy5iaW5hcnkuc2VyaWFsaXplVHgoaCk7cmV0dXJuIGYuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1uKGUsMikscj10WzBdLGk9dFsxXTtyZXR1cm4gYS5hZGRQcm9vZihoLG8uc2lnbkJ5dGVzKHIscCksaSl9KSxoLmlkPW8uYmFzZTU4RW5jb2RlKG8uYmxha2UyYihwKSksaH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXIoMTUpLG89cigyMCksYT1yKDMwKSxzPXIoMTkpLHU9cigyNSk7dC5zZXRBc3NldFNjcmlwdD1mdW5jdGlvbihlLHQpe3ZhciByPWkuVFJBTlNBQ1RJT05fVFlQRS5TRVRfQVNTRVRfU0NSSVBULGM9ZS52ZXJzaW9ufHwxLGY9YS5jb252ZXJ0VG9QYWlycyh0KSxsPWEuZ2V0U2VuZGVyUHVibGljS2V5KGYsZSk7aWYobnVsbD09ZS5zY3JpcHQpdGhyb3cgbmV3IEVycm9yKCJBc3NldCBzY3JpcHQgY2Fubm90IGJlIGVtcHR5Iik7dmFyIGg9e3R5cGU6cix2ZXJzaW9uOmMsc2VuZGVyUHVibGljS2V5OmwsYXNzZXRJZDplLmFzc2V0SWQsY2hhaW5JZDphLm5ldHdvcmtCeXRlKGUuY2hhaW5JZCw4NyksZmVlOmEuZmVlKGUsMWU4KSx0aW1lc3RhbXA6ZS50aW1lc3RhbXB8fERhdGUubm93KCkscHJvb2ZzOmUucHJvb2ZzfHxbXSxpZDoiIixzY3JpcHQ6YS5iYXNlNjRQcmVmaXgoZS5zY3JpcHQpfTt1LnZhbGlkYXRlLnNldEFzc2V0U2NyaXB0KGgpO3ZhciBwPXMuYmluYXJ5LnNlcmlhbGl6ZVR4KGgpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bihlLDIpLHI9dFswXSxpPXRbMV07cmV0dXJuIGEuYWRkUHJvb2YoaCxvLnNpZ25CeXRlcyhyLHApLGkpfSksaC5pZD1vLmJhc2U1OEVuY29kZShvLmJsYWtlMmIocCkpLGh9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE1KSxvPXIoMjApLGE9cigzMCkscz1yKDE5KSx1PXIoMjUpO3Quc3BvbnNvcnNoaXA9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuU1BPTlNPUlNISVAsYz1lLnZlcnNpb258fDEsZj1hLmNvbnZlcnRUb1BhaXJzKHQpLGw9e3R5cGU6cix2ZXJzaW9uOmMsc2VuZGVyUHVibGljS2V5OmEuZ2V0U2VuZGVyUHVibGljS2V5KGYsZSksbWluU3BvbnNvcmVkQXNzZXRGZWU6ZS5taW5TcG9uc29yZWRBc3NldEZlZSxhc3NldElkOmUuYXNzZXRJZCxmZWU6YS5mZWUoZSwxZTgpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxwcm9vZnM6ZS5wcm9vZnN8fFtdLGlkOiIifTt1LnZhbGlkYXRlLnNwb25zb3JzaGlwKGwpO3ZhciBoPXMuYmluYXJ5LnNlcmlhbGk=",
    "2020.03.29 15:16": "base64:ImluIGUpKXt2YXIgdD1bZS5tZXNzYWdlXTt0PXQuY29uY2F0KFtdfHwhMSksZS5mdWxsPW4udXRpbC5mb3JtYXQuYXBwbHkodGhpcyx0KX19LG4ubG9nLnByZXBhcmVTdGFuZGFyZEZ1bGw9ZnVuY3Rpb24oZSl7InN0YW5kYXJkRnVsbCJpbiBlfHwobi5sb2cucHJlcGFyZVN0YW5kYXJkKGUpLGUuc3RhbmRhcmRGdWxsPWUuc3RhbmRhcmQpfTt2YXIgYz1bImVycm9yIiwid2FybmluZyIsImluZm8iLCJkZWJ1ZyIsInZlcmJvc2UiXTtmb3Iocz0wO3M8Yy5sZW5ndGg7KytzKSFmdW5jdGlvbihlKXtuLmxvZ1tlXT1mdW5jdGlvbih0LHIpe3ZhciBpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykuc2xpY2UoMiksbz17dGltZXN0YW1wOm5ldyBEYXRlLGxldmVsOmUsY2F0ZWdvcnk6dCxtZXNzYWdlOnIsYXJndW1lbnRzOml9O24ubG9nLmxvZ01lc3NhZ2Uobyl9fShjW3NdKTtpZihuLmxvZy5tYWtlTG9nZ2VyPWZ1bmN0aW9uKGUpe3ZhciB0PXtmbGFnczowLGY6ZX07cmV0dXJuIG4ubG9nLnNldExldmVsKHQsIm5vbmUiKSx0fSxuLmxvZy5zZXRMZXZlbD1mdW5jdGlvbihlLHQpe3ZhciByPSExO2lmKGUmJiEoZS5mbGFncyZuLmxvZy5MRVZFTF9MT0NLRUQpKWZvcih2YXIgaT0wO2k8bi5sb2cubGV2ZWxzLmxlbmd0aDsrK2kpe2lmKHQ9PW4ubG9nLmxldmVsc1tpXSl7ZS5sZXZlbD10LHI9ITA7YnJlYWt9fXJldHVybiByfSxuLmxvZy5sb2NrPWZ1bmN0aW9uKGUsdCl7InVuZGVmaW5lZCI9PT10eXBlb2YgdHx8dD9lLmZsYWdzfD1uLmxvZy5MRVZFTF9MT0NLRUQ6ZS5mbGFncyY9fm4ubG9nLkxFVkVMX0xPQ0tFRH0sbi5sb2cuYWRkTG9nZ2VyPWZ1bmN0aW9uKGUpe28ucHVzaChlKX0sInVuZGVmaW5lZCIhPT10eXBlb2YgY29uc29sZSYmImxvZyJpbiBjb25zb2xlKXt2YXIgZjtpZihjb25zb2xlLmVycm9yJiZjb25zb2xlLndhcm4mJmNvbnNvbGUuaW5mbyYmY29uc29sZS5kZWJ1Zyl7dmFyIGw9e2Vycm9yOmNvbnNvbGUuZXJyb3Isd2FybmluZzpjb25zb2xlLndhcm4saW5mbzpjb25zb2xlLmluZm8sZGVidWc6Y29uc29sZS5kZWJ1Zyx2ZXJib3NlOmNvbnNvbGUuZGVidWd9LGg9ZnVuY3Rpb24oZSx0KXtuLmxvZy5wcmVwYXJlU3RhbmRhcmQodCk7dmFyIHI9bFt0LmxldmVsXSxpPVt0LnN0YW5kYXJkXTtpPWkuY29uY2F0KHQuYXJndW1lbnRzLnNsaWNlKCkpLHIuYXBwbHkoY29uc29sZSxpKX07Zj1uLmxvZy5tYWtlTG9nZ2VyKGgpfWVsc2V7aD1mdW5jdGlvbihlLHQpe24ubG9nLnByZXBhcmVTdGFuZGFyZEZ1bGwodCksY29uc29sZS5sb2codC5zdGFuZGFyZEZ1bGwpfTtmPW4ubG9nLm1ha2VMb2dnZXIoaCl9bi5sb2cuc2V0TGV2ZWwoZiwiZGVidWciKSxuLmxvZy5hZGRMb2dnZXIoZiksYT1mfWVsc2UgY29uc29sZT17bG9nOmZ1bmN0aW9uKCl7fX07aWYobnVsbCE9PWEpe3ZhciBwPW4udXRpbC5nZXRRdWVyeVZhcmlhYmxlcygpO2lmKCJjb25zb2xlLmxldmVsImluIHAmJm4ubG9nLnNldExldmVsKGEscFsiY29uc29sZS5sZXZlbCJdLnNsaWNlKC0xKVswXSksImNvbnNvbGUubG9jayJpbiBwKSJ0cnVlIj09cFsiY29uc29sZS5sb2NrIl0uc2xpY2UoLTEpWzBdJiZuLmxvZy5sb2NrKGEpfW4ubG9nLmNvbnNvbGVMb2dnZXI9YX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49cig2NyksaT1yKDc5KTt0LlNlZWQ9e2lzU2VlZFdpdGhOb25jZTpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZS5ub25jZX0sdG9CaW5hcnk6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuU2VlZC5pc1NlZWRXaXRoTm9uY2UoZSk/e3NlZWQ6dC5TZWVkLnRvQmluYXJ5KGUuc2VlZCkuc2VlZCxub25jZTplLm5vbmNlfTp7c2VlZDpuLl9mcm9tUmF3SW4oZSksbm9uY2U6dm9pZCAwfX0sdG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGkuYnl0ZXNUb1N0cmluZyh0LlNlZWQudG9CaW5hcnkoZSkuc2VlZCl9fX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49cigxMzcpLGk9cigxMzcpO3QuQ2hhaWRJZD17dG9OdW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgZT9lLmNoYXJDb2RlQXQoMCk6ZX0saXNNYWlubmV0OmZ1bmN0aW9uKGUpe3JldHVybiB0LkNoYWlkSWQudG9OdW1iZXIoZSk9PT1uLk1BSU5fTkVUX0NIQUlOX0lEfSxpc1Rlc3RuZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuQ2hhaWRJZC50b051bWJlcihlKT09PWkuVEVTVF9ORVRfQ0hBSU5fSUR9fX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49IjEyMzQ1Njc4OUFCQ0RFRkdISktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbW5vcHFyc3R1dnd4eXoiLGk9bi5zcGxpdCgiIikucmVkdWNlKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yLGV9LHt9KTt0LmRlZmF1bHQ9e2VuY29kZTpmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpcmV0dXJuIiI7Zm9yKHZhciB0PVswXSxyPTA7cjxlLmxlbmd0aDtyKyspe2Zvcih2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXRbaV08PD04O3RbMF0rPWVbcl07Zm9yKHZhciBvPTAsYT0wO2E8dC5sZW5ndGg7YSsrKXRbYV0rPW8sbz10W2FdLzU4fDAsdFthXSU9NTg7Zm9yKDtvOyl0LnB1c2gobyU1OCksbz1vLzU4fDB9Zm9yKHZhciBzPTA7MD09PWVbc10mJnM8ZS5sZW5ndGgtMTtzKyspdC5wdXNoKDApO3JldHVybiB0LnJldmVyc2UoKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19KS5qb2luKCIiKX0sZGVjb2RlOmZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoMCk7Zm9yKHZhciB0PVswXSxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07aWYoIShuIGluIGkpKXRocm93IG5ldyBFcnJvcignVGhlcmUgaXMgbm8gY2hhcmFjdGVyICInLmNvbmNhdChuLCciIGluIHRoZSBCYXNlNTggc2VxdWVuY2UhJykpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXRbb10qPTU4O3RbMF0rPWlbbl07Zm9yKHZhciBhPTAscz0wO3M8dC5sZW5ndGg7cysrKXRbc10rPWEsYT10W3NdPj44LHRbc10mPTI1NTtmb3IoO2E7KXQucHVzaCgyNTUmYSksYT4+PTh9Zm9yKHZhciB1PTA7IjEiPT09ZVt1XSYmdTxlLmxlbmd0aC0xO3UrKyl0LnB1c2goMCk7cmV0dXJuIG5ldyBVaW50OEFycmF5KHQucmV2ZXJzZSgpKX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1uO3ZhciByPW51bGw7dHJ5e3I9bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUobmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsMTMsMiw5NiwwLDEsMTI3LDk2LDQsMTI3LDEyNywxMjcsMTI3LDEsMTI3LDMsNyw2LDAsMSwxLDEsMSwxLDYsNiwxLDEyNywxLDY1LDAsMTEsNyw1MCw2LDMsMTA5LDExNywxMDgsMCwxLDUsMTAwLDEwNSwxMTgsOTUsMTE1LDAsMiw1LDEwMCwxMDUsMTE4LDk1LDExNywwLDMsNSwxMTQsMTAxLDEwOSw5NSwxMTUsMCw0LDUsMTE0LDEwMSwxMDksOTUsMTE3LDAsNSw4LDEwMywxMDEsMTE2LDk1LDEwNCwxMDUsMTAzLDEwNCwwLDAsMTAsMTkxLDEsNiw0LDAsMzUsMCwxMSwzNiwxLDEsMTI2LDMyLDAsMTczLDMyLDEsMTczLDY2LDMyLDEzNCwxMzIsMzIsMiwxNzMsMzIsMywxNzMsNjYsMzIsMTM0LDEzMiwxMjYsMzQsNCw2NiwzMiwxMzUsMTY3LDM2LDAsMzIsNCwxNjcsMTEsMzYsMSwxLDEyNiwzMiwwLDE3MywzMiwxLDE3Myw2NiwzMiwxMzQsMTMyLDMyLDIsMTczLDMyLDMsMTczLDY2LDMyLDEzNCwxMzIsMTI3LDM0LDQsNjYsMzIsMTM1LDE2NywzNiwwLDMyLDQsMTY3LDExLDM2LDEsMSwxMjYsMzIsMCwxNzMsMzIsMSwxNzMsNjYsMzIsMTM0LDEzMiwzMiwyLDE3MywzMiwzLDE3Myw2NiwzMiwxMzQsMTMyLDEyOCwzNCw0LDY2LDMyLDEzNSwxNjcsMzYsMCwzMiw0LDE2NywxMSwzNiwxLDEsMTI2LDMyLDAsMTczLDMyLDEsMTczLDY2LDMyLDEzNCwxMzIsMzIsMiwxNzMsMzIsMywxNzMsNjYsMzIsMTM0LDEzMiwxMjksMzQsNCw2NiwzMiwxMzUsMTY3LDM2LDAsMzIsNCwxNjcsMTEsMzYsMSwxLDEyNiwzMiwwLDE3MywzMiwxLDE3Myw2NiwzMiwxMzQsMTMyLDMyLDIsMTczLDMyLDMsMTczLDY2LDMyLDEzNCwxMzIsMTMwLDM0LDQsNjYsMzIsMTM1LDE2NywzNiwwLDMyLDQsMTY3LDExXSkpLHt9KS5leHBvcnRzfWNhdGNoKEMpe31mdW5jdGlvbiBuKGUsdCxyKXt0aGlzLmxvdz0wfGUsdGhpcy5oaWdoPTB8dCx0aGlzLnVuc2lnbmVkPSEhcn1mdW5jdGlvbiBpKGUpe3JldHVybiEwPT09KGUmJmUuX19pc0xvbmdfXyl9bi5wcm90b3R5cGUuX19pc0xvbmdfXyxPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsIl9faXNMb25nX18iLHt2YWx1ZTohMH0pLG4uaXNMb25nPWk7dmFyIG89e30sYT17fTtmdW5jdGlvbiBzKGUsdCl7dmFyIHIsbixpO3JldHVybiB0PyhpPTA8PShlPj4+PTApJiZlPDI1NikmJihuPWFbZV0pP246KHI9YyhlLCgwfGUpPDA/LTE6MCwhMCksaSYmKGFbZV09cikscik6KGk9LTEyODw9KGV8PTApJiZlPDEyOCkmJihuPW9bZV0pP246KHI9YyhlLGU8MD8tMTowLCExKSxpJiYob1tlXT1yKSxyKX1mdW5jdGlvbiB1KGUsdCl7aWYoaXNOYU4oZSkpcmV0dXJuIHQ/bTp2O2lmKHQpe2lmKGU8MClyZXR1cm4gbTtpZihlPj1kKXJldHVybiB3fWVsc2V7aWYoZTw9LXkpcmV0dXJuIFQ7aWYoZSsxPj15KXJldHVybiBFfXJldHVybiBlPDA/dSgtZSx0KS5uZWcoKTpjKGUlcHwwLGUvcHwwLHQpfWZ1bmN0aW9uIGMoZSx0LHIpe3JldHVybiBuZXcgbihlLHQscil9bi5mcm9tSW50PXMsbi5mcm9tTnVtYmVyPXUsbi5mcm9tQml0cz1jO3ZhciBmPU1hdGgucG93O2Z1bmN0aW9uIGwoZSx0LHIpe2lmKDA9PT1lLmxlbmd0aCl0aHJvdyBFcnJvcigiZW1wdHkgc3RyaW5nIik7aWYoIk5hTiI9PT1lfHwiSW5maW5pdHkiPT09ZXx8IitJbmZpbml0eSI9PT1lfHwiLUluZmluaXR5Ij09PWUpcmV0dXJuIHY7aWYoIm51bWJlciI9PT10eXBlb2YgdD8ocj10LHQ9ITEpOnQ9ISF0LChyPXJ8fDEwKTwyfHwzNjxyKXRocm93IFJhbmdlRXJyb3IoInJhZGl4Iik7dmFyIG47aWYoKG49ZS5pbmRleE9mKCItIikpPjApdGhyb3cgRXJyb3IoImludGVyaW9yIGh5cGhlbiIpO2lmKDA9PT1uKXJldHVybiBsKGUuc3Vic3RyaW5nKDEpLHQscikubmVnKCk7Zm9yKHZhciBpPXUoZihyLDgpKSxvPXYsYT0wO2E8ZS5sZW5ndGg7YSs9OCl7dmFyIHM9TWF0aC5taW4oOCxlLmxlbmd0aC1hKSxjPXBhcnNlSW50KGUuc3Vic3RyaW5nKGEsYStzKSxyKTtpZihzPDgpe3ZhciBoPXUoZihyLHMpKTtvPW8ubXVsKGgpLmFkZCh1KGMpKX1lbHNlIG89KG89by5tdWwoaSkpLmFkZCh1KGMpKX1yZXR1cm4gby51bnNpZ25lZD10LG99ZnVuY3Rpb24gaChlLHQpe3JldHVybiJudW1iZXIiPT09dHlwZW9mIGU/dShlLHQpOiJzdHJpbmciPT09dHlwZW9mIGU/bChlLHQpOmMoZS5sb3csZS5oaWdoLCJib29sZWFuIj09PXR5cGVvZiB0P3Q6ZS51bnNpZ25lZCl9bi5mcm9tU3RyaW5nPWwsbi5mcm9tVmFsdWU9aDt2YXIgcD00Mjk0OTY3Mjk2LGQ9cCpwLHk9ZC8yLGc9cygxPDwyNCksdj1zKDApO24uWkVSTz12O3ZhciBtPXMoMCwhMCk7bi5VWkVSTz1tO3ZhciBiPXMoMSk7bi5PTkU9Yjt2YXIgXz1zKDEsITApO24uVU9ORT1fO3ZhciBTPXMoLTEpO24uTkVHX09ORT1TO3ZhciBFPWMoLTEsMjE0NzQ4MzY0NywhMSk7bi5NQVhfVkFMVUU9RTt2YXIgdz1jKC0xLC0xLCEwKTtuLk1BWF9VTlNJR05FRF9WQUxVRT13O3ZhciBUPWMoMCwtMjE0NzQ4MzY0OCwhMSk7bi5NSU5fVkFMVUU9VDt2YXIgQT1uLnByb3RvdHlwZTtBLnRvSW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5zaWduZWQ/dGhpcy5sb3c+Pj4wOnRoaXMubG93fSxBLnRvTnVtYmVyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5zaWduZWQ/KHRoaXMuaGlnaD4+PjApKnArKHRoaXMubG93Pj4+MCk6dGhpcy5oaWdoKnArKHRoaXMubG93Pj4+MCl9LEEudG9TdHJpbmc9ZnVuY3Rpb24oZSl7aWYoKGU9ZXx8MTApPDJ8fDM2PGUpdGhyb3cgUmFuZ2VFcnJvcigicmFkaXgiKTtpZih0aGlzLmlzWmVybygpKXJldHVybiIwIjtpZih0aGlzLmlzTmVnYXRpdmUoKSl7aWYodGhpcy5lcShUKSl7dmFyIHQ9dShlKSxyPXRoaXMuZGl2KHQpLG49ci5tdWwodCkuc3ViKHRoaXMpO3JldHVybiByLnRvU3RyaW5nKGUpK24udG9JbnQoKS50b1N0cmluZyhlKX1yZXR1cm4iLSIrdGhpcy5uZWcoKS50b1N0cmluZyhlKX1mb3IodmFyIGk9dShmKGUsNiksdGhpcy51bnNpZ25lZCksbz10aGlzLGE9IiI7Oyl7dmFyIHM9by5kaXYoaSksYz0oby5zdWIocy5tdWwoaSkpLnRvSW50KCk+Pj4wKS50b1N0cmluZyhlKTtpZigobz1zKS5pc1plcm8oKSlyZXR1cm4gYythO2Zvcig7Yy5sZW5ndGg8NjspYz0iMCIrYzthPSIiK2MrYX19LEEuZ2V0SGlnaEJpdHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWdofSxBLmdldEhpZ2hCaXRzVW5zaWduZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oaWdoPj4+MH0sQS5nZXRMb3dCaXRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG93fSxBLmdldExvd0JpdHNVbnNpZ25lZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvdz4+PjB9LEEuZ2V0TnVtQml0c0Ficz1mdW5jdGlvbigpe2lmKHRoaXMuaXNOZWdhdGl2ZSgpKXJldHVybiB0aGlzLmVxKFQpPzY0OnRoaXMubmVnKCkuZ2V0TnVtQml0c0FicygpO2Zvcih2YXIgZT0wIT10aGlzLmhpZ2g/dGhpcy5oaWdoOnRoaXMubG93LHQ9MzE7dD4wJiYwPT0oZSYxPDx0KTt0LS0pO3JldHVybiAwIT10aGlzLmhpZ2g/dCszMzp0KzF9LEEuaXNaZXJvPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLmhpZ2gmJjA9PT10aGlzLmxvd30sQS5lcXo9QS5pc1plcm8sQS5pc05lZ2F0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMudW5zaWduZWQmJnRoaXMuaGlnaDwwfSxBLmlzUG9zaXRpdmU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bnNpZ25lZHx8dGhpcy5oaWdoPj0wfSxBLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT0oMSZ0aGlzLmxvdyl9LEEuaXNFdmVuPWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT0oMSZ0aGlzLmxvdyl9LEEuZXF1YWxzPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpfHwoZT1oKGUpKSwodGhpcy51bnNpZ25lZD09PWUudW5zaWduZWR8fHRoaXMuaGlnaD4+PjMxIT09MXx8ZS5oaWdoPj4+MzEhPT0xKSYmKHRoaXMuaGlnaD09PWUuaGlnaCYmdGhpcy5sb3c9PT1lLmxvdyl9LEEuZXE9QS5lcXVhbHMsQS5ub3RFcXVhbHM9ZnVuY3Rpb24oZSl7cmV0dXJuIXRoaXMuZXEoZSl9LEEubmVxPUEubm90RXF1YWxzLEEubmU9QS5ub3RFcXVhbHMsQS5sZXNzVGhhbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb21wKGUpPDB9LEEubHQ9QS5sZXNzVGhhbixBLmxlc3NUaGFuT3JFcXVhbD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jb21wKGUpPD0wfSxBLmx0ZT1BLmxlc3NUaGFuT3JFcXVhbCxBLmxlPUEubGVzc1RoYW5PckVxdWFsLEEuZ3JlYXRlclRoYW49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29tcChlKT4wfSxBLmd0PUEuZ3JlYXRlclRoYW4sQS5ncmVhdGVyVGhhbk9yRXF1YWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY29tcChlKT49MH0sQS5ndGU9QS5ncmVhdGVyVGhhbk9yRXF1YWwsQS5nZT1BLmdyZWF0ZXJUaGFuT3JFcXVhbCxBLmNvbXBhcmU9ZnVuY3Rpb24oZSl7aWYoaShlKXx8KGU9aChlKSksdGhpcy5lcShlKSlyZXR1cm4gMDt2YXIgdD10aGlzLmlzTmVnYXRpdmUoKSxyPWUuaXNOZWdhdGl2ZSgpO3JldHVybiB0JiYhcj8tMTohdCYmcj8xOnRoaXMudW5zaWduZWQ/ZS5oaWdoPj4+MD50aGlzLmhpZ2g+Pj4wfHxlLmhpZ2g9PT10aGlzLmhpZ2gmJmUubG93Pj4+MD50aGlzLmxvdz4+PjA/LTE6MTp0aGlzLnN1YihlKS5pc05lZ2F0aXZlKCk/LTE6MX0sQS5jb21wPUEuY29tcGFyZSxBLm5lZ2F0ZT1mdW5jdGlvbigpe3JldHVybiF0aGlzLnVuc2lnbmVkJiZ0aGlzLmVxKFQpP1Q6dGhpcy5ub3QoKS5hZGQoYil9LEEubmVnPUEubmVnYXRlLEEuYWRkPWZ1bmN0aW9uKGUpe2koZSl8fChlPWgoZSkpO3ZhciB0PXRoaXMuaGlnaD4+PjE2LHI9NjU1MzUmdGhpcy5oaWdoLG49dGhpcy5sb3c+Pj4xNixvPTY1NTM1JnRoaXMubG93LGE9ZS5oaWdoPj4+MTYscz02NTUzNSZlLmhpZ2gsdT1lLmxvdz4+PjE2LGY9MCxsPTAscD0wLGQ9MDtyZXR1cm4gcCs9KGQrPW8rKDY1NTM1JmUubG93KSk+Pj4xNixsKz0ocCs9bit1KT4+PjE2LGYrPShsKz1yK3MpPj4+MTYsZis9dCthLGMoKHAmPTY1NTM1KTw8MTZ8KGQmPTY1NTM1KSwoZiY9NjU1MzUpPDwxNnwobCY9NjU1MzUpLHRoaXMudW5zaWduZWQpfSxBLnN1YnRyYWN0PWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpfHwoZT1oKGUpKSx0aGlzLmFkZChlLm5lZygpKX0sQS5zdWI9QS5zdWJ0cmFjdCxBLm11bHRpcGx5PWZ1bmN0aW9uKGUpe2lmKHRoaXMuaXNaZXJvKCkpcmV0dXJuIHY7aWYoaShlKXx8KGU9aChlKSkscilyZXR1cm4gYyhyLm11bCh0aGlzLmxvdyx0aGlzLmhpZ2gsZS5sb3csZS5oaWdoKSxyLmdldF9oaWdoKCksdGhpcy51bnNpZ25lZCk7aWYoZS5pc1plcm8oKSlyZXR1cm4gdjtpZih0aGlzLmVxKFQpKXJldHVybiBlLmlzT2RkKCk/VDp2O2lmKGUuZXEoVCkpcmV0dXJuIHRoaXMuaXNPZGQoKT9UOnY7aWYodGhpcy5pc05lZ2F0aXZlKCkpcmV0dXJuIGUuaXNOZWdhdGl2ZSgpP3RoaXMubmVnKCkubXVsKGUubmVnKCkpOnRoaXMubmVnKCkubXVsKGUpLm5lZygpO2lmKGUuaXNOZWdhdGl2ZSgpKXJldHVybiB0aGlzLm11bChlLm5lZygpKS5uZWcoKTtpZih0aGlzLmx0KGcpJiZlLmx0KGcpKXJldHVybiB1KHRoaXMudG9OdW1iZXIoKSplLnRvTnVtYmVyKCksdGhpcy51bnNpZ25lZCk7dmFyIHQ9dGhpcy5oaWdoPj4+MTYsbj02NTUzNSZ0aGlzLmhpZ2gsbz10aGlzLmxvdz4+PjE2LGE9NjU1MzUmdGhpcy5sb3cscz1lLmhpZ2g+Pj4xNixmPTY1NTM1JmUuaGlnaCxsPWUubG93Pj4+MTYscD02NTUzNSZlLmxvdyxkPTAseT0wLG09MCxiPTA7cmV0dXJuIG0rPShiKz1hKnApPj4+MTYseSs9KG0rPW8qcCk+Pj4xNixtJj02NTUzNSx5Kz0obSs9YSpsKT4+PjE2LGQrPSh5Kz1uKnApPj4+MTYseSY9NjU1MzUsZCs9KHkrPW8qbCk+Pj4xNix5Jj02NTUzNSxkKz0oeSs9YSpmKT4+PjE2LGQrPXQqcCtuKmwrbypmK2EqcyxjKChtJj02NTUzNSk8PDE2fChiJj02NTUzNSksKGQmPTY1NTM1KTw8MTZ8KHkmPTY1NTM1KSx0aGlzLnVuc2lnbmVkKX0sQS5tdWw9QS5tdWx0aXBseSxBLmRpdmlkZT1mdW5jdGlvbihlKXtpZihpKGUpfHwoZT1oKGUpKSxlLmlzWmVybygpKXRocm93IEVycm9yKCJkaXZpc2lvbiBieSB6ZXJvIik7dmFyIHQsbixvO2lmKHIpcmV0dXJuIHRoaXMudW5zaWduZWR8fC0yMTQ3NDgzNjQ4IT09dGhpcy5oaWdofHwtMSE9PWUubG93fHwtMSE9PWUuaGlnaD9jKCh0aGlzLnVuc2lnbmVkP3IuZGl2X3U6ci5kaXZfcykodGhpcy5sb3csdGhpcy5oaWdoLGUubG93LGUuaGlnaCksci5nZXRfaGlnaCgpLHRoaXMudW5zaWduZWQpOnRoaXM7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gdGhpcy51bnNpZ25lZD9tOnY7aWYodGhpcy51bnNpZ25lZCl7aWYoZS51bnNpZ25lZHx8KGU9ZS50b1Vuc2lnbmVkKCkpLGUuZ3QodGhpcykpcmV0dXJuIG07aWYoZS5ndCh0aGlzLnNocnUoMSkpKXJldHVybiBfO289bX1lbHNle2lmKHRoaXMuZXEoVCkpcmV0dXJuIGUuZXEoYil8fGUuZXEoUyk/VDplLmVxKFQpP2I6KHQ9dGhpcy5zaHIoMSkuZGl2KGUpLnNobCgxKSkuZXEodik/ZS5pc05lZ2F0aXZlKCk/YjpTOihuPXRoaXMuc3ViKGUubXVsKHQpKSxvPXQuYWRkKG4uZGl2KGUpKSk7aWYoZS5lcShUKSlyZXR1cm4gdGhpcy51bnNpZ25lZD9tOnY7aWYodGhpcy5pc05lZ2F0aXZlKCkpcmV0dXJuIGUuaXNOZWdhdGl2ZSgpP3RoaXMubmVnKCkuZGl2KGUubmVnKCkpOnRoaXMubmVnKCkuZGl2KGUpLm5lZygpO2lmKGUuaXNOZWdhdGl2ZSgpKXJldHVybiB0aGlzLmRpdihlLm5lZygpKS5uZWcoKTtvPXZ9Zm9yKG49dGhpcztuLmd0ZShlKTspe3Q9TWF0aC5tYXgoMSxNYXRoLmZsb29yKG4udG9OdW1iZXIoKS9lLnRvTnVtYmVyKCkpKTtmb3IodmFyIGE9TWF0aC5jZWlsKE1hdGgubG9nKHQpL01hdGguTE4yKSxzPWE8PTQ4PzE6ZigyLGEtNDgpLGw9dSh0KSxwPWwubXVsKGUpO3AuaXNOZWdhdGl2ZSgpfHxwLmd0KG4pOylwPShsPXUodC09cyx0aGlzLnVuc2lnbmVkKSkubXVsKGUpO2wuaXNaZXJvKCkmJihsPWIpLG89by5hZGQobCksbj1uLnN1YihwKX1yZXR1cm4gb30sQS5kaXY9QS5kaXZpZGUsQS5tb2R1bG89ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSl8fChlPWgoZSkpLHI/YygodGhpcy51bnNpZ25lZD9yLnJlbV91OnIucmVtX3MpKHRoaXMubG93LHRoaXMuaGlnaCxlLmxvdyxlLmhpZ2gpLHIuZ2V0X2hpZ2goKSx0aGlzLnVuc2lnbmVkKTp0aGlzLnN1Yih0aGlzLmRpdihlKS5tdWwoZSkpfSxBLm1vZD1BLm1vZHVsbyxBLnJlbT1BLm1vZHVsbyxBLm5vdD1mdW5jdGlvbigpe3JldHVybiBjKH50aGlzLmxvdyx+dGhpcy5oaWdoLHRoaXMudW5zaWduZWQpfSxBLmFuZD1mdW5jdGlvbihlKXtyZXR1cm4gaShlKXx8KGU9aChlKSksYyh0aGlzLmxvdyZlLmxvdyx0aGlzLmhpZ2gmZS5oaWdoLHRoaXMudW5zaWduZWQpfSxBLm9yPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpfHwoZT1oKGUpKSxjKHRoaXMubG93fGUubG93LHRoaXMuaGlnaHxlLmhpZ2gsdGhpcy51bnNpZ25lZCl9LEEueG9yPWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpfHwoZT1oKGUpKSxjKHRoaXMubG93XmUubG93LHRoaXMuaGlnaF5lLmhpZ2gsdGhpcy51bnNpZ25lZCl9LEEuc2hpZnRMZWZ0PWZ1bmN0aW9uKGUpe3JldHVybiBpKGUpJiYoZT1lLnRvSW50KCkpLDA9PT0oZSY9NjMpP3RoaXM6ZTwzMj9jKHRoaXMubG93PDxlLHRoaXMuaGlnaDw8ZXx0aGlzLmxvdz4+PjMyLWUsdGhpcy51bnNpZ25lZCk6YygwLHRoaXMubG93PDxlLTMyLHRoaXMudW5zaWduZWQpfSxBLnNobD1BLnNoaWZ0TGVmdCxBLnNoaWZ0UmlnaHQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkmJihlPWUudG9JbnQoKSksMD09PShlJj02Myk/dGhpczplPDMyP2ModGhpcy5sb3c+Pj5lfHRoaXMuaGlnaDw8MzItZSx0aGlzLmhpZ2g+PmUsdGhpcy51bnNpZ25lZCk6Yyh0aGlzLmhpZ2g+PmUtMzIsdGhpcy5oaWdoPj0wPzA6LTEsdGhpcy51bnNpZ25lZCl9LEEuc2hyPUEuc2hpZnRSaWdodCxBLnNoaWZ0UmlnaHRVbnNpZ25lZD1mdW5jdGlvbihlKXtpZihpKGUpJiYoZT1lLnRvSW50KCkpLDA9PT0oZSY9NjMpKXJldHVybiB0aGlzO3ZhciB0PXRoaXMuaGlnaDtyZXR1cm4gZTwzMj9jKHRoaXMubG93Pj4+ZXx0PDwzMi1lLHQ+Pj5lLHRoaXMudW5zaWduZWQpOmMoMzI9PT1lP3Q6dD4+PmUtMzIsMCx0aGlzLnVuc2lnbmVkKX0sQS5zaHJ1PUEuc2hpZnRSaWdodFVuc2lnbmVkLEEuc2hyX3U9QS5zaGlmdFJpZ2h0VW5zaWduZWQsQS50b1NpZ25lZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnVuc2lnbmVkP2ModGhpcy5sb3csdGhpcy5oaWdoLCExKTp0aGlzfSxBLnRvVW5zaWduZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bnNpZ25lZD90aGlzOmModGhpcy5sb3csdGhpcy5oaWdoLCEwKX0sQS50b0J5dGVzPWZ1bmN0aW9uKGUpe3JldHVybiBlP3RoaXMudG9CeXRlc0xFKCk6dGhpcy50b0J5dGVzQkUoKX0sQS50b0J5dGVzTEU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmhpZ2gsdD10aGlzLmxvdztyZXR1cm5bMjU1JnQsdD4+PjgmMjU1LHQ+Pj4xNiYyNTUsdD4+PjI0LDI1NSZlLGU+Pj44JjI1NSxlPj4+MTYmMjU1LGU+Pj4yNF19LEEudG9CeXRlc0JFPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5oaWdoLHQ9dGhpcy5sb3c7cmV0dXJuW2U+Pj4yNCxlPj4+MTYmMjU1LGU+Pj44JjI1NSwyNTUmZSx0Pj4+MjQsdD4+PjE2JjI1NSx0Pj4+OCYyNTUsMjU1JnRdfSxuLmZyb21CeXRlcz1mdW5jdGlvbihlLHQscil7cmV0dXJuIHI/bi5mcm9tQnl0ZXNMRShlLHQpOm4uZnJvbUJ5dGVzQkUoZSx0KX0sbi5mcm9tQnl0ZXNMRT1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgbihlWzBdfGVbMV08PDh8ZVsyXTw8MTZ8ZVszXTw8MjQsZVs0XXxlWzVdPDw4fGVbNl08PDE2fGVbN108PDI0LHQpfSxuLmZyb21CeXRlc0JFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBuKGVbNF08PDI0fGVbNV08PDE2fGVbNl08PDh8ZVs3XSxlWzBdPDwyNHxlWzFdPDwxNnxlWzJdPDw4fGVbM10sdCl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfX0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCYmcihlLnByb3RvdHlwZSx0KSxuJiZyKGUsbiksZX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPXIoMjYpLGk9e29yZGVyVHlwZTpuLm9yRXEoWyJzZWxsIiwiYnV5Il0pLHNlbmRlclB1YmxpY0tleTpuLmlzUHVibGljS2V5LG1hdGNoZXJQdWJsaWNLZXk6bi5pc1B1YmxpY0tleSx2ZXJzaW9uOm4ub3JFcShbdm9pZCAwLDAsMSwyLDNdKSxhc3NldFBhaXI6bi52YWxpZGF0ZVBpcGUobi5pc1JlcXVpcmVkKCEwKSxuLnBpcGUobi5wcm9wKCJhbW91bnRBc3NldCIpLG4uaXNBc3NldElkKSxuLnBpcGUobi5wcm9wKCJwcmljZUFzc2V0Iiksbi5pc0Fzc2V0SWQpKSxwcmljZTpuLmlzTnVtYmVyTGlrZSxhbW91bnQ6bi5pc051bWJlckxpa2UsbWF0Y2hlckZlZTpuLmlzTnVtYmVyTGlrZSxleHBpcmF0aW9uOm4uaXNOdW1iZXJMaWtlLHRpbWVzdGFtcDpuLmlzTnVtYmVyLHByb29mczpuLmlmRWxzZShuLmlzQXJyYXksbi5kZWZhdWx0VmFsdWUoITApLG4ub3JFcShbdm9pZCAwXSkpfSxvPXttYXRjaGVyRmVlQXNzZXRJZDpuLm9yRXEoW3ZvaWQgMCxudWxsLCJXQVZFUyJdKX0sYT17bWF0Y2hlckZlZUFzc2V0SWQ6bi5pc0Fzc2V0SWR9LHM9bi52YWxpZGF0ZUJ5U2hlbWEoaSxuLmdldEVycm9yKSx1PW4udmFsaWRhdGVCeVNoZW1hKG8sbi5nZXRFcnJvciksYz1uLnZhbGlkYXRlQnlTaGVtYShhLG4uZ2V0RXJyb3IpO3Qub3JkZXJWYWxpZGF0b3I9bi52YWxpZGF0ZVBpcGUocyxuLmlmRWxzZShuLnBpcGUobi5wcm9wKCJ2ZXJzaW9uIiksbi5pc0VxKDMpKSxjLHUpKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDIwKSxhPXIoMzApLHM9cigxOSksdT1yKDI1KTt0LnJlaXNzdWU9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuUkVJU1NVRSxjPWUudmVyc2lvbnx8MixmPWEuY29udmVydFRvUGFpcnModCksbD17dHlwZTpyLHZlcnNpb246YyxzZW5kZXJQdWJsaWNLZXk6YS5nZXRTZW5kZXJQdWJsaWNLZXkoZixlKSxhc3NldElkOmUuYXNzZXRJZCxxdWFudGl0eTplLnF1YW50aXR5LHJlaXNzdWFibGU6ZS5yZWlzc3VhYmxlLGNoYWluSWQ6YS5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLGZlZTphLmZlZShlLDFlOCksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLHByb29mczplLnByb29mc3x8W10saWQ6IiJ9O3UudmFsaWRhdGUucmVpc3N1ZShsKTt2YXIgaD1zLmJpbmFyeS5zZXJpYWxpemVUeChsKTtyZXR1cm4gZi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwyKSxyPXRbMF0saT10WzFdO3JldHVybiBhLmFkZFByb29mKGwsby5zaWduQnl0ZXMocixoKSxpKX0pLGwuaWQ9by5iYXNlNThFbmNvZGUoby5ibGFrZTJiKGgpKSxsfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDE5KSxhPXIoMjApLHM9cigzMCksdT1yKDI1KTt0LmJ1cm49ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuQlVSTixjPWUudmVyc2lvbnx8MixmPXMuY29udmVydFRvUGFpcnModCksbD17dHlwZTpyLHZlcnNpb246YyxzZW5kZXJQdWJsaWNLZXk6cy5nZXRTZW5kZXJQdWJsaWNLZXkoZixlKSxhc3NldElkOmUuYXNzZXRJZCxxdWFudGl0eTplLnF1YW50aXR5LGNoYWluSWQ6cy5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLGZlZTpzLmZlZShlLDFlNSksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLHByb29mczplLnByb29mc3x8W10saWQ6IiJ9O3UudmFsaWRhdGUuYnVybihsKTt2YXIgaD1vLmJpbmFyeS5zZXJpYWxpemVUeChsKTtyZXR1cm4gZi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwyKSxyPXRbMF0saT10WzFdO3JldHVybiBzLmFkZFByb29mKGwsYS5zaWduQnl0ZXMocixoKSxpKX0pLGwuaWQ9YS5iYXNlNThFbmNvZGUoYS5ibGFrZTJiKGgpKSxsfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDE5KSxhPXIoMjApLHM9cigzMCksdT1yKDI1KTt0LmV4Y2hhbmdlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aS5UUkFOU0FDVElPTl9UWVBFLkVYQ0hBTkdFLGM9ZS52ZXJzaW9ufHwyLGY9cy5jb252ZXJ0VG9QYWlycyh0KSxsPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTpzLmdldFNlbmRlclB1YmxpY0tleShmLGUpLG9yZGVyMTplLm9yZGVyMSxvcmRlcjI6ZS5vcmRlcjIscHJpY2U6ZS5wcmljZSxhbW91bnQ6ZS5hbW91bnQsYnV5TWF0Y2hlckZlZTplLmJ1eU1hdGNoZXJGZWUsc2VsbE1hdGNoZXJGZWU6ZS5zZWxsTWF0Y2hlckZlZSxmZWU6cy5mZWUoZSwxZTUpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxwcm9vZnM6ZS5wcm9vZnN8fFtdLGlkOiIifTt1LnZhbGlkYXRlLmV4Y2hhbmdlKGwpO3ZhciBoPW8uYmluYXJ5LnNlcmlhbGl6ZVR4KGwpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bihlLDIpLHI9dFswXSxpPXRbMV07cmV0dXJuIHMuYWRkUHJvb2YobCxhLnNpZ25CeXRlcyhyLGgpLGkpfSksT2JqZWN0LmFzc2lnbih7fSxsLHtpZDphLmJhc2U1OEVuY29kZShhLmJsYWtlMmIoaCkpfSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE1KSxvPXIoMjApLGE9cigzMCkscz1yKDE5KSx1PXIoMjUpO3QubGVhc2U9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuTEVBU0UsYz1lLnZlcnNpb258fDIsZj1hLmNvbnZlcnRUb1BhaXJzKHQpLGw9e3R5cGU6cix2ZXJzaW9uOmMsc2VuZGVyUHVibGljS2V5OmEuZ2V0U2VuZGVyUHVibGljS2V5KGYsZSksYW1vdW50OmUuYW1vdW50LHJlY2lwaWVudDplLnJlY2lwaWVudCxmZWU6YS5mZWUoZSwxZTUpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxwcm9vZnM6ZS5wcm9vZnN8fFtdLGlkOiIifTt1LnZhbGlkYXRlLmxlYXNlKGwpO3ZhciBoPXMuYmluYXJ5LnNlcmlhbGl6ZVR4KGwpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bihlLDIpLHI9dFswXSxpPXRbMV07cmV0dXJuIGEuYWRkUHJvb2YobCxvLnNpZ25CeXRlcyhyLGgpLGkpfSksbC5pZD1vLmJhc2U1OEVuY29kZShvLmJsYWtlMmIoaCkpLGx9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE1KSxvPXIoMTkpLGE9cigyMCkscz1yKDMwKSx1PXIoMjUpO3QuY2FuY2VsTGVhc2U9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuQ0FOQ0VMX0xFQVNFLGM9ZS52ZXJzaW9ufHwyLGY9cy5jb252ZXJ0VG9QYWlycyh0KSxsPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTpzLmdldFNlbmRlclB1YmxpY0tleShmLGUpLGxlYXNlSWQ6ZS5sZWFzZUlkLGZlZTpzLmZlZShlLDFlNSksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLGNoYWluSWQ6cy5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLHByb29mczplLnByb29mc3x8W10saWQ6IiJ9O3UudmFsaWRhdGUuY2FuY2VsTGVhc2UobCk7dmFyIGg9by5iaW5hcnkuc2VyaWFsaXplVHgobCk7cmV0dXJuIGYuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1uKGUsMikscj10WzBdLGk9dFsxXTtyZXR1cm4gcy5hZGRQcm9vZihsLGEuc2lnbkJ5dGVzKHIsaCksaSl9KSxsLmlkPWEuYmFzZTU4RW5jb2RlKGEuYmxha2UyYihoKSksbH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE5KS5zZXJpYWxpemVQcmltaXRpdmVzLG89aS5CQVNFNThfU1RSSU5HLGE9aS5CQVNFNjRfU1RSSU5HLHM9aS5CWVRFLHU9aS5CWVRFUyxjPWkuQ09VTlQsZj1pLkxFTixsPWkuTE9ORyxoPWkuU0hPUlQscD1pLlNUUklORyxkPXIoMjApLHk9cigxNSksZz1yKDMwKSx2PXIoMTkpLG09cigyNSksYj17aW50ZWdlcjpbImludGVnZXIiLDAsbF0sbnVtYmVyOlsiaW50ZWdlciIsMCxsXSxib29sZWFuOlsiYm9vbGVhbiIsMSxzXSxzdHJpbmc6WyJzdHJpbmciLDMsZihoKShwKV0sYmluYXJ5OlsiYmluYXJ5IiwyLGZ1bmN0aW9uKGUpe3JldHVybiBmKGgpKGEpKGUuc2xpY2UoNykpfV0sXzpbImJpbmFyeSIsMixmKGgpKHUpXX0sXz1mdW5jdGlvbihlKXtyZXR1cm4gYlt0eXBlb2YgZV18fGIuX307dC5kYXRhPWZ1bmN0aW9uKHQscil7dmFyIGk9eS5UUkFOU0FDVElPTl9UWVBFLkRBVEEsYT10LnZlcnNpb258fDEsdT1nLmNvbnZlcnRUb1BhaXJzKHIpLGI9Zy5nZXRTZW5kZXJQdWJsaWNLZXkodSx0KTtpZighQXJyYXkuaXNBcnJheSh0LmRhdGEpKXRocm93IG5ldyBFcnJvcignWyJkYXRhIHNob3VsZCBiZSBhcnJheSJdJyk7dmFyIFM9dC50aW1lc3RhbXB8fERhdGUubm93KCksRT1kLmNvbmNhdChzKHkuVFJBTlNBQ1RJT05fVFlQRS5EQVRBKSxzKDEpLG8oYiksYyhoKShmdW5jdGlvbihlKXtyZXR1cm4gZC5jb25jYXQoZihoKShwKShlLmtleSksW18oZS52YWx1ZSlbMV1dLF8oZS52YWx1ZSlbMl0oZS52YWx1ZSkpfSkodC5kYXRhKSxsKFMpKSx3PTFlNSpNYXRoLmZsb29yKDErKEUubGVuZ3RoKzgtMSkvMTAyNCksVD17dHlwZTppLHZlcnNpb246YSxzZW5kZXJQdWJsaWNLZXk6YixmZWU6Zy5mZWUodCx3KSx0aW1lc3RhbXA6Uyxwcm9vZnM6dC5wcm9vZnN8fFtdLGlkOiIiLGRhdGE6dC5kYXRhJiZ0LmRhdGEubWFwKGZ1bmN0aW9uKHQpe2lmKHQudHlwZSlyZXR1cm4gdDt2YXIgcj1fKHQudmFsdWUpWzBdO3JldHVybnt0eXBlOnIsa2V5OnQua2V5LHZhbHVlOiJiaW5hcnkiPT09cj8iYmFzZTY0OiIrZS5mcm9tKHQudmFsdWUpLnRvU3RyaW5nKCJiYXNlNjQiKTp0LnZhbHVlfX0pfTttLnZhbGlkYXRlLmRhdGEoVCk7dmFyIEE9di5iaW5hcnkuc2VyaWFsaXplVHgoVCk7cmV0dXJuIHUuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1uKGUsMikscj10WzBdLGk9dFsxXTtyZXR1cm4gZy5hZGRQcm9vZihULGQuc2lnbkJ5dGVzKHIsQSksaSl9KSxULmlkPWQuYmFzZTU4RW5jb2RlKGQuYmxha2UyYihBKSksVH19KS5jYWxsKHRoaXMscigxOCkuQnVmZmVyKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDIwKSxhPXIoMzApLHM9cigxOSksdT1yKDI1KTt0Lmlzc3VlPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aS5UUkFOU0FDVElPTl9UWVBFLklTU1VFLGM9ZS52ZXJzaW9ufHwyLGY9YS5jb252ZXJ0VG9QYWlycyh0KSxsPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTphLmdldFNlbmRlclB1YmxpY0tleShmLGUpLG5hbWU6ZS5uYW1lLGRlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb24scXVhbnRpdHk6ZS5xdWFudGl0eSxzY3JpcHQ6bnVsbD09ZS5zY3JpcHQ/dm9pZCAwOmEuYmFzZTY0UHJlZml4KGUuc2NyaXB0KSxkZWNpbWFsczpudWxsPT1lLmRlY2ltYWxzPzg6ZS5kZWNpbWFscyxyZWlzc3VhYmxlOmUucmVpc3N1YWJsZXx8ITEsZmVlOmEuZmVlKGUsMWU4KSx0aW1lc3RhbXA6ZS50aW1lc3RhbXB8fERhdGUubm93KCksY2hhaW5JZDphLm5ldHdvcmtCeXRlKGUuY2hhaW5JZCw4NykscHJvb2ZzOmUucHJvb2ZzfHxbXSxpZDoiIn07dS52YWxpZGF0ZS5pc3N1ZShsKTt2YXIgaD1zLmJpbmFyeS5zZXJpYWxpemVUeChsKTtyZXR1cm4gZi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwyKSxyPXRbMF0saT10WzFdO3JldHVybiBhLmFkZFByb29mKGwsby5zaWduQnl0ZXMocixoKSxpKX0pLGwuaWQ9by5iYXNlNThFbmNvZGUoby5ibGFrZTJiKGgpKSxsfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9cigxNSksbz1yKDIwKSxhPXIoMzApLHM9cigyNSksdT1yKDE5KTt0LnRyYW5zZmVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9aS5UUkFOU0FDVElPTl9UWVBFLlRSQU5TRkVSLGM9ZS52ZXJzaW9ufHwyLGY9YS5jb252ZXJ0VG9QYWlycyh0KSxsPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTphLmdldFNlbmRlclB1YmxpY0tleShmLGUpLGFzc2V0SWQ6YS5ub3JtYWxpemVBc3NldElkKGUuYXNzZXRJZCkscmVjaXBpZW50OmUucmVjaXBpZW50LGFtb3VudDplLmFtb3VudCxhdHRhY2htZW50OmUuYXR0YWNobWVudHx8IiIsZmVlOmEuZmVlKGUsMWU1KSxmZWVBc3NldElkOmEubm9ybWFsaXplQXNzZXRJZChlLmZlZUFzc2V0SWQpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxwcm9vZnM6ZS5wcm9vZnN8fFtdLGlkOiIifTtzLnZhbGlkYXRlLnRyYW5zZmVyKGwpO3ZhciBoPXUuYmluYXJ5LnNlcmlhbGl6ZVR4KGwpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bihlLDIpLHI9dFswXSxpPXRbMV07cmV0dXJuIGEuYWRkUHJvb2YobCxvLnNpZ25CeXRlcyhyLGgpLGkpfSksbC5pZD1vLmJhc2U1OEVuY29kZShvLmJsYWtlMmIoaCkpLGx9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoODcpLGk9cigyMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPXIoMTUpLGE9cigxOSkscz1yKDIwKSx1PXIoMzApLGM9cigyNSk7dC5hbGlhcz1mdW5jdGlvbihlLHQpe3ZhciByPW8uVFJBTlNBQ1RJT05fVFlQRS5BTElBUyxmPWUudmVyc2lvbnx8MixsPXUuY29udmVydFRvUGFpcnModCksaD17dHlwZTpyLHZlcnNpb246ZixzZW5kZXJQdWJsaWNLZXk6dS5nZXRTZW5kZXJQdWJsaWNLZXkobCxlKSxhbGlhczplLmFsaWFzLGZlZTp1LmZlZShlLDFlNSksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLGNoYWluSWQ6dS5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLHByb29mczplLnByb29mc3x8W10saWQ6IiJ9O2MudmFsaWRhdGUuYWxpYXMoaCk7dmFyIHA9YS5iaW5hcnkuc2VyaWFsaXplVHgoaCk7bC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWkoZSwyKSxyPXRbMF0sbj10WzFdO3JldHVybiB1LmFkZFByb29mKGgscy5zaWduQnl0ZXMocixwKSxuKX0pO3ZhciBkPVtwWzBdXS5jb25jYXQobihwLnNsaWNlKDM2LC0xNikpKTtyZXR1cm4gaC5pZD1zLmJhc2U1OEVuY29kZShzLmJsYWtlMmIoVWludDhBcnJheS5mcm9tKGQpKSksaH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXIoMTUpLG89cigyMCksYT1yKDMwKSxzPXIoMTkpLHU9cigyNSk7dC5zZXRTY3JpcHQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuU0VUX1NDUklQVCxjPWUudmVyc2lvbnx8MSxmPWEuY29udmVydFRvUGFpcnModCksbD1hLmdldFNlbmRlclB1YmxpY0tleShmLGUpO2lmKHZvaWQgMD09PWUuc2NyaXB0KXRocm93IG5ldyBFcnJvcigiU2NyaXB0IGZpZWxkIGNhbm5vdCBiZSB1bmRlZmluZWQuIFVzZSBudWxsIGV4cGxpY2l0bHkgdG8gcmVtb3ZlIHNjcmlwdCIpO3ZhciBoPXt0eXBlOnIsdmVyc2lvbjpjLHNlbmRlclB1YmxpY0tleTpsLGNoYWluSWQ6YS5uZXR3b3JrQnl0ZShlLmNoYWluSWQsODcpLGZlZTphLmZlZShlLDFlNiksdGltZXN0YW1wOmUudGltZXN0YW1wfHxEYXRlLm5vdygpLHByb29mczplLnByb29mc3x8W10saWQ6IiIsc2NyaXB0OmEuYmFzZTY0UHJlZml4KGUuc2NyaXB0KX07dS52YWxpZGF0ZS5zZXRTY3JpcHQoaCk7dmFyIHA9cy5iaW5hcnkuc2VyaWFsaXplVHgoaCk7cmV0dXJuIGYuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1uKGUsMikscj10WzBdLGk9dFsxXTtyZXR1cm4gYS5hZGRQcm9vZihoLG8uc2lnbkJ5dGVzKHIscCksaSl9KSxoLmlkPW8uYmFzZTU4RW5jb2RlKG8uYmxha2UyYihwKSksaH19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigyMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXIoMTUpLG89cigyMCksYT1yKDMwKSxzPXIoMTkpLHU9cigyNSk7dC5zZXRBc3NldFNjcmlwdD1mdW5jdGlvbihlLHQpe3ZhciByPWkuVFJBTlNBQ1RJT05fVFlQRS5TRVRfQVNTRVRfU0NSSVBULGM9ZS52ZXJzaW9ufHwxLGY9YS5jb252ZXJ0VG9QYWlycyh0KSxsPWEuZ2V0U2VuZGVyUHVibGljS2V5KGYsZSk7aWYobnVsbD09ZS5zY3JpcHQpdGhyb3cgbmV3IEVycm9yKCJBc3NldCBzY3JpcHQgY2Fubm90IGJlIGVtcHR5Iik7dmFyIGg9e3R5cGU6cix2ZXJzaW9uOmMsc2VuZGVyUHVibGljS2V5OmwsYXNzZXRJZDplLmFzc2V0SWQsY2hhaW5JZDphLm5ldHdvcmtCeXRlKGUuY2hhaW5JZCw4NyksZmVlOmEuZmVlKGUsMWU4KSx0aW1lc3RhbXA6ZS50aW1lc3RhbXB8fERhdGUubm93KCkscHJvb2ZzOmUucHJvb2ZzfHxbXSxpZDoiIixzY3JpcHQ6YS5iYXNlNjRQcmVmaXgoZS5zY3JpcHQpfTt1LnZhbGlkYXRlLnNldEFzc2V0U2NyaXB0KGgpO3ZhciBwPXMuYmluYXJ5LnNlcmlhbGl6ZVR4KGgpO3JldHVybiBmLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bihlLDIpLHI9dFswXSxpPXRbMV07cmV0dXJuIGEuYWRkUHJvb2YoaCxvLnNpZ25CeXRlcyhyLHApLGkpfSksaC5pZD1vLmJhc2U1OEVuY29kZShvLmJsYWtlMmIocCkpLGh9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE1KSxvPXIoMjApLGE9cigzMCkscz1yKDE5KSx1PXIoMjUpO3Quc3BvbnNvcnNoaXA9ZnVuY3Rpb24oZSx0KXt2YXIgcj1pLlRSQU5TQUNUSU9OX1RZUEUuU1BPTlNPUlNISVAsYz1lLnZlcnNpb258fDEsZj1hLmNvbnZlcnRUb1BhaXJzKHQpLGw9e3R5cGU6cix2ZXJzaW9uOmMsc2VuZGVyUHVibGljS2V5OmEuZ2V0U2VuZGVyUHVibGljS2V5KGYsZSksbWluU3BvbnNvcmVkQXNzZXRGZWU6ZS5taW5TcG9uc29yZWRBc3NldEZlZSxhc3NldElkOmUuYXNzZXRJZCxmZWU6YS5mZWUoZSwxZTgpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxwcm9vZnM6ZS5wcm9vZnN8fFtdLGlkOiIifTt1LnZhbGlkYXRlLnNwb25zb3JzaGlwKGwpO3ZhciBoPXMuYmluYXJ5LnNlcmlhbGk="
}

github/deemru/w8io/169f3d6 
2.23 ms