mbrr · data · 2.7c767379.chunk.js_39
{
"2.7c767379.chunk.js_39": "base64:emVUeChsKTtyZXR1cm4gZi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwyKSxyPXRbMF0saT10WzFdO3JldHVybiBhLmFkZFByb29mKGwsby5zaWduQnl0ZXMocixoKSxpKX0pLGwuaWQ9by5iYXNlNThFbmNvZGUoby5ibGFrZTJiKGgpKSxsfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49cigyMCksaT1yKDE5KSxvPXIoMjMxKSxhPXIoMjUpO2Z1bmN0aW9uIHMoZSl7aWYoMT09PWUudmVyc2lvbilyZXR1cm4gbi5jb25jYXQoWzI1NSwyNTUsMjU1LDFdLGkuc2VyaWFsaXplUHJpbWl0aXZlcy5CQVNFNjRfU1RSSU5HKGUuYmluYXJ5KSk7aWYoMj09PWUudmVyc2lvbil7dmFyIHQ9by5zZXJpYWxpemVyRnJvbVNjaGVtYShpLnNjaGVtYXMudHhGaWVsZHMuZGF0YVsxXSk7cmV0dXJuIG4uY29uY2F0KFsyNTUsMjU1LDI1NSwyXSx0KGUuZGF0YSkpfXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBDdXN0b21EYXRhIHZlcnNpb246ICIuY29uY2F0KGUudmVyc2lvbikpfXQuY3VzdG9tRGF0YT1mdW5jdGlvbihlLHQpe2EudmFsaWRhdGUuY3VzdG9tRGF0YShlKTt2YXIgcj1zKGUpLGk9bi5iYXNlNThFbmNvZGUobi5ibGFrZTJiKHIpKSxvPW4ucHVibGljS2V5KHQpLHU9bi5zaWduQnl0ZXModCxyKTtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxlLHtoYXNoOmkscHVibGljS2V5Om8sc2lnbmF0dXJlOnV9KX0sdC5zZXJpYWxpemVDdXN0b21EYXRhPXN9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPXIoMjApLGk9cigxOSkuc2VyaWFsaXplUHJpbWl0aXZlcy5TVFJJTkcsbz1yKDMwKSxhPXIoMjUpLHM9cigxMzkpO3Quc2VyaWFsaXplQXV0aERhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIG4uY29uY2F0KHMuTEVOKHMuU0hPUlQpKGkpKCJXYXZlc1dhbGxldEF1dGhlbnRpY2F0aW9uIikscy5MRU4ocy5TSE9SVCkoaSkoZS5ob3N0fHwiIikscy5MRU4ocy5TSE9SVCkoaSkoZS5kYXRhfHwiIikpfSx0LmF1dGg9ZnVuY3Rpb24oZSxyLGkpe3ZhciBzPW8uY29udmVydFRvUGFpcnMociksdT1lLnB1YmxpY0tleXx8by5nZXRTZW5kZXJQdWJsaWNLZXkocyx7c2VuZGVyUHVibGljS2V5OnZvaWQgMH0pO2EudmFsaWRhdGUuYXV0aChlKTt2YXIgYz17aGFzaDoiIixzaWduYXR1cmU6IiIsaG9zdDplLmhvc3QsZGF0YTplLmRhdGEscHVibGljS2V5OnUsYWRkcmVzczpuLmFkZHJlc3Moe3B1YmxpY0tleTp1fSxpKX0sZj10LnNlcmlhbGl6ZUF1dGhEYXRhKGMpO3JldHVybiBjLnNpZ25hdHVyZT1udWxsIT1yJiZuLnNpZ25CeXRlcyhyLGYpfHwiIixjLmhhc2g9bi5iYXNlNThFbmNvZGUobi5ibGFrZTJiKFVpbnQ4QXJyYXkuZnJvbShmKSkpLGN9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE1KSxvPXIoMjApLGE9cigzMCkscz1yKDE5KSx1PXIoMjUpO3QuaW52b2tlU2NyaXB0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9aS5UUkFOU0FDVElPTl9UWVBFLklOVk9LRV9TQ1JJUFQsZj1lLnZlcnNpb258fDEsbD1hLmNvbnZlcnRUb1BhaXJzKHQpLGg9e3R5cGU6cix2ZXJzaW9uOmYsc2VuZGVyUHVibGljS2V5OmEuZ2V0U2VuZGVyUHVibGljS2V5KGwsZSksZEFwcDplLmRBcHAsY2FsbDplLmNhbGwmJk9iamVjdC5hc3NpZ24oe2FyZ3M6W119LGUuY2FsbCkscGF5bWVudDpjKGUucGF5bWVudCksZmVlOmEuZmVlKGUsNWU1KSxmZWVBc3NldElkOmEubm9ybWFsaXplQXNzZXRJZChlLmZlZUFzc2V0SWQpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxjaGFpbklkOmEubmV0d29ya0J5dGUoZS5jaGFpbklkLDg3KSxwcm9vZnM6ZS5wcm9vZnN8fFtdLGlkOiIifTt1LnZhbGlkYXRlLmludm9rZVNjcmlwdChoKTt2YXIgcD1zLmJpbmFyeS5zZXJpYWxpemVUeChoKTtyZXR1cm4gbC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwyKSxyPXRbMF0saT10WzFdO3JldHVybiBhLmFkZFByb29mKGgsby5zaWduQnl0ZXMocixwKSxpKX0pLGguaWQ9by5iYXNlNThFbmNvZGUoby5iYXNlNThFbmNvZGUoby5ibGFrZTJiKHApKSksaH07dmFyIGM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/W106ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sZSx7YXNzZXRJZDoiV0FWRVMiPT09ZS5hc3NldElkP251bGw6ZS5hc3NldElkfSl9KX19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9cig2NzApfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgcj1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksbj0wO248ci5sZW5ndGg7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiBlLmFwcGx5KHQscil9fX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDQ0KTtmdW5jdGlvbiBpKGUpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSkucmVwbGFjZSgvJTQwL2dpLCJAIikucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7aWYoIXQpcmV0dXJuIGU7dmFyIG87aWYocilvPXIodCk7ZWxzZSBpZihuLmlzVVJMU2VhcmNoUGFyYW1zKHQpKW89dC50b1N0cmluZygpO2Vsc2V7dmFyIGE9W107bi5mb3JFYWNoKHQsZnVuY3Rpb24oZSx0KXtudWxsIT09ZSYmInVuZGVmaW5lZCIhPT10eXBlb2YgZSYmKG4uaXNBcnJheShlKT90Kz0iW10iOmU9W2VdLG4uZm9yRWFjaChlLGZ1bmN0aW9uKGUpe24uaXNEYXRlKGUpP2U9ZS50b0lTT1N0cmluZygpOm4uaXNPYmplY3QoZSkmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxhLnB1c2goaSh0KSsiPSIraShlKSl9KSl9KSxvPWEuam9pbigiJiIpfWlmKG8pe3ZhciBzPWUuaW5kZXhPZigiIyIpOy0xIT09cyYmKGU9ZS5zbGljZSgwLHMpKSxlKz0oLTE9PT1lLmluZGV4T2YoIj8iKT8iPyI6IiYiKStvfXJldHVybiBlfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8IWUuX19DQU5DRUxfXyl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgbj1yKDQ0KSxpPXIoNjc2KSxvPXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn07ZnVuY3Rpb24gYShlLHQpeyFuLmlzVW5kZWZpbmVkKGUpJiZuLmlzVW5kZWZpbmVkKGVbIkNvbnRlbnQtVHlwZSJdKSYmKGVbIkNvbnRlbnQtVHlwZSJdPXQpfXZhciBzPXthZGFwdGVyOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2YgdCYmIltvYmplY3QgcHJvY2Vzc10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpP2U9cigzODYpOiJ1bmRlZmluZWQiIT09dHlwZW9mIFhNTEh0dHBSZXF1ZXN0JiYoZT1yKDM4NikpLGV9KCksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oZSx0KXtyZXR1cm4gaSh0LCJBY2NlcHQiKSxpKHQsIkNvbnRlbnQtVHlwZSIpLG4uaXNGb3JtRGF0YShlKXx8bi5pc0FycmF5QnVmZmVyKGUpfHxuLmlzQnVmZmVyKGUpfHxuLmlzU3RyZWFtKGUpfHxuLmlzRmlsZShlKXx8bi5pc0Jsb2IoZSk/ZTpuLmlzQXJyYXlCdWZmZXJWaWV3KGUpP2UuYnVmZmVyOm4uaXNVUkxTZWFyY2hQYXJhbXMoZSk/KGEodCwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiKSxlLnRvU3RyaW5nKCkpOm4uaXNPYmplY3QoZSk/KGEodCwiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04IiksSlNPTi5zdHJpbmdpZnkoZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7aWYoInN0cmluZyI9PT10eXBlb2YgZSl0cnl7ZT1KU09OLnBhcnNlKGUpfWNhdGNoKHQpe31yZXR1cm4gZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZT49MjAwJiZlPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fX07bi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCJdLGZ1bmN0aW9uKGUpe3MuaGVhZGVyc1tlXT17fX0pLG4uZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKGUpe3MuaGVhZGVyc1tlXT1uLm1lcmdlKG8pfSksZS5leHBvcnRzPXN9KS5jYWxsKHRoaXMscig0NikpfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNDQpLGk9cig2NzcpLG89cigzODMpLGE9cig2NzkpLHM9cig2ODApLHU9cigzODcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxjKXt2YXIgZj1lLmRhdGEsbD1lLmhlYWRlcnM7bi5pc0Zvcm1EYXRhKGYpJiZkZWxldGUgbFsiQ29udGVudC1UeXBlIl07dmFyIGg9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKGUuYXV0aCl7dmFyIHA9ZS5hdXRoLnVzZXJuYW1lfHwiIixkPWUuYXV0aC5wYXNzd29yZHx8IiI7bC5BdXRob3JpemF0aW9uPSJCYXNpYyAiK2J0b2EocCsiOiIrZCl9aWYoaC5vcGVuKGUubWV0aG9kLnRvVXBwZXJDYXNlKCksbyhlLnVybCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSxoLnRpbWVvdXQ9ZS50aW1lb3V0LGgub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoaCYmND09PWgucmVhZHlTdGF0ZSYmKDAhPT1oLnN0YXR1c3x8aC5yZXNwb25zZVVSTCYmMD09PWgucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKSkpe3ZhciByPSJnZXRBbGxSZXNwb25zZUhlYWRlcnMiaW4gaD9hKGguZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpOm51bGwsbj17ZGF0YTplLnJlc3BvbnNlVHlwZSYmInRleHQiIT09ZS5yZXNwb25zZVR5cGU/aC5yZXNwb25zZTpoLnJlc3BvbnNlVGV4dCxzdGF0dXM6aC5zdGF0dXMsc3RhdHVzVGV4dDpoLnN0YXR1c1RleHQsaGVhZGVyczpyLGNvbmZpZzplLHJlcXVlc3Q6aH07aSh0LGMsbiksaD1udWxsfX0saC5vbmFib3J0PWZ1bmN0aW9uKCl7aCYmKGModSgiUmVxdWVzdCBhYm9ydGVkIixlLCJFQ09OTkFCT1JURUQiLGgpKSxoPW51bGwpfSxoLm9uZXJyb3I9ZnVuY3Rpb24oKXtjKHUoIk5ldHdvcmsgRXJyb3IiLGUsbnVsbCxoKSksaD1udWxsfSxoLm9udGltZW91dD1mdW5jdGlvbigpe2ModSgidGltZW91dCBvZiAiK2UudGltZW91dCsibXMgZXhjZWVkZWQiLGUsIkVDT05OQUJPUlRFRCIsaCkpLGg9bnVsbH0sbi5pc1N0YW5kYXJkQnJvd3NlckVudigpKXt2YXIgeT1yKDY4MSksZz0oZS53aXRoQ3JlZGVudGlhbHN8fHMoZS51cmwpKSYmZS54c3JmQ29va2llTmFtZT95LnJlYWQoZS54c3JmQ29va2llTmFtZSk6dm9pZCAwO2cmJihsW2UueHNyZkhlYWRlck5hbWVdPWcpfWlmKCJzZXRSZXF1ZXN0SGVhZGVyImluIGgmJm4uZm9yRWFjaChsLGZ1bmN0aW9uKGUsdCl7InVuZGVmaW5lZCI9PT10eXBlb2YgZiYmImNvbnRlbnQtdHlwZSI9PT10LnRvTG93ZXJDYXNlKCk/ZGVsZXRlIGxbdF06aC5zZXRSZXF1ZXN0SGVhZGVyKHQsZSl9KSxlLndpdGhDcmVkZW50aWFscyYmKGgud2l0aENyZWRlbnRpYWxzPSEwKSxlLnJlc3BvbnNlVHlwZSl0cnl7aC5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGV9Y2F0Y2godil7aWYoImpzb24iIT09ZS5yZXNwb25zZVR5cGUpdGhyb3cgdn0iZnVuY3Rpb24iPT09dHlwZW9mIGUub25Eb3dubG9hZFByb2dyZXNzJiZoLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixlLm9uRG93bmxvYWRQcm9ncmVzcyksImZ1bmN0aW9uIj09PXR5cGVvZiBlLm9uVXBsb2FkUHJvZ3Jlc3MmJmgudXBsb2FkJiZoLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vblVwbG9hZFByb2dyZXNzKSxlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnByb21pc2UudGhlbihmdW5jdGlvbihlKXtoJiYoaC5hYm9ydCgpLGMoZSksaD1udWxsKX0pLHZvaWQgMD09PWYmJihmPW51bGwpLGguc2VuZChmKX0pfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDY3OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLGksbyl7dmFyIGE9bmV3IEVycm9yKGUpO3JldHVybiBuKGEsdCxyLGksbyl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNDQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIHI9e307cmV0dXJuIG4uZm9yRWFjaChbInVybCIsIm1ldGhvZCIsInBhcmFtcyIsImRhdGEiXSxmdW5jdGlvbihlKXsidW5kZWZpbmVkIiE9PXR5cGVvZiB0W2VdJiYocltlXT10W2VdKX0pLG4uZm9yRWFjaChbImhlYWRlcnMiLCJhdXRoIiwicHJveHkiXSxmdW5jdGlvbihpKXtuLmlzT2JqZWN0KHRbaV0pP3JbaV09bi5kZWVwTWVyZ2UoZVtpXSx0W2ldKToidW5kZWZpbmVkIiE9PXR5cGVvZiB0W2ldP3JbaV09dFtpXTpuLmlzT2JqZWN0KGVbaV0pP3JbaV09bi5kZWVwTWVyZ2UoZVtpXSk6InVuZGVmaW5lZCIhPT10eXBlb2YgZVtpXSYmKHJbaV09ZVtpXSl9KSxuLmZvckVhY2goWyJiYXNlVVJMIiwidHJhbnNmb3JtUmVxdWVzdCIsInRyYW5zZm9ybVJlc3BvbnNlIiwicGFyYW1zU2VyaWFsaXplciIsInRpbWVvdXQiLCJ3aXRoQ3JlZGVudGlhbHMiLCJhZGFwdGVyIiwicmVzcG9uc2VUeXBlIiwieHNyZkNvb2tpZU5hbWUiLCJ4c3JmSGVhZGVyTmFtZSIsIm9uVXBsb2FkUHJvZ3Jlc3MiLCJvbkRvd25sb2FkUHJvZ3Jlc3MiLCJtYXhDb250ZW50TGVuZ3RoIiwidmFsaWRhdGVTdGF0dXMiLCJtYXhSZWRpcmVjdHMiLCJodHRwQWdlbnQiLCJodHRwc0FnZW50IiwiY2FuY2VsVG9rZW4iLCJzb2NrZXRQYXRoIl0sZnVuY3Rpb24obil7InVuZGVmaW5lZCIhPT10eXBlb2YgdFtuXT9yW25dPXRbbl06InVuZGVmaW5lZCIhPT10eXBlb2YgZVtuXSYmKHJbbl09ZVtuXSl9KSxyfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3RoaXMubWVzc2FnZT1lfW4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkNhbmNlbCIrKHRoaXMubWVzc2FnZT8iOiAiK3RoaXMubWVzc2FnZToiIil9LG4ucHJvdG90eXBlLl9fQ0FOQ0VMX189ITAsZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxMDMpLGk9cigyMzIpLG89dGhpcyxhPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKShmdW5jdGlvbihpLG8pe2Z1bmN0aW9uIGEoZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaCh0KXtvKHQpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKHQpe28odCl9fWZ1bmN0aW9uIHUoZSl7ZS5kb25lP2koZS52YWx1ZSk6bmV3IHIoZnVuY3Rpb24odCl7dChlLnZhbHVlKX0pLnRoZW4oYSxzKX11KChuPW4uYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KX0scz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHU9cyhyKDM4MSkpLGM9cigxOSksZj1mdW5jdGlvbihlKXt2YXIgdD17fSxyPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbil7dC5yZXNvbHZlPXIsdC5pZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHIoKX0sZSl9KTtyZXR1cm4gci5jYW5jZWw9ZnVuY3Rpb24oKXt0LnJlc29sdmUoKSxjbGVhclRpbWVvdXQodC5pZCl9LHJ9LGw9ZnVuY3Rpb24oZSx0KXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MWUzO3JldHVybiBmKHIpLnRoZW4oZnVuY3Rpb24ocil7cmV0dXJuIHQ/UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJUeCB3YWl0IHN0b3BwZWQ6IHRpbWVvdXQiKSk6ZSgpfSl9LGg9e3RpbWVvdXQ6MTJlNCxhcGlCYXNlOiJodHRwczovL25vZGVzLndhdmVzcGxhdGZvcm0uY29tIn07ZnVuY3Rpb24gcChlLHIpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoZnVuY3Rpb24gbigpe3ZhciBvLGEscyx1LGMscDtyZXR1cm4gaS53cmFwKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBvPU9iamVjdC5hc3NpZ24oe30saCxyKSxhPW8udGltZW91dCxzPW8uYXBpQmFzZSx1PSExLChjPWYoYSkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdT0hMH0pLHA9ZnVuY3Rpb24gcigpe3JldHVybiB0LmN1cnJlbnRIZWlnaHQocykudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gdD49ZT8oYy5jYW5jZWwoKSx0KTpsKHIsdSwxZTQpfSkuY2F0Y2goZnVuY3Rpb24oZSl7cmV0dXJuIGwocix1KX0pfSxuLmFicnVwdCgicmV0dXJuIixwKCkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0sbil9KSl9ZnVuY3Rpb24gZChlLHQpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoZnVuY3Rpb24gcigpe3ZhciBuLG8sYSxzLGMsbDtyZXR1cm4gaS53cmFwKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiBuPU9iamVjdC5hc3NpZ24oe30saCx0KSxvPW4udGltZW91dCxhPW4uYXBpQmFzZSxzPSExLChjPWYobykpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gcz0hMH0pLGw9ZnVuY3Rpb24gdCgpe3JldHVybiB1LmRlZmF1bHQuZ2V0KCJ0cmFuc2FjdGlvbnMvaW5mby8iLmNvbmNhdChlKSx7YmFzZVVSTDphfSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gYy5jYW5jZWwoKSxlLmRhdGF9KS5jYXRjaChmdW5jdGlvbihlKXtyZXR1cm4gZigxZTMpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIHM/UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJUeCB3YWl0IHN0b3BwZWQ6IHRpbWVvdXQiKSk6dCgpfSl9KX0sci5hYnJ1cHQoInJldHVybiIsbCgpKTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19LHIpfSkpfXQuY3VycmVudEhlaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gYShvLHZvaWQgMCx2b2lkIDAsaS5tYXJrKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix1LmRlZmF1bHQuZ2V0KCIvYmxvY2tzL2hlaWdodCIse2Jhc2VVUkw6ZX0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGF0YSYmZS5kYXRhLmhlaWdodH0pO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19LHQpfSkpfSx0LndhaXRGb3JIZWlnaHQ9cCx0LndhaXRGb3JUeD1kO3ZhciB5PWZ1bmN0aW9uKGUpe3JldHVybiA0MDA9PT1lLnN0YXR1cz9Qcm9taXNlLnJlamVjdChPYmplY3QuYXNzaWduKG5ldyBFcnJvcixlLmRhdGEpKTplfSxnPWZ1bmN0aW9uKGUpe3JldHVybiA0MDA9PT1lfHxlPj0yMDAmJmU8MzAwfTt0LndhaXRGb3JUeFdpdGhOQ29uZmlybWF0aW9ucz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyayhmdW5jdGlvbiBuKCl7dmFyIG8sYSxzLHUsYyxsO3JldHVybiBpLndyYXAoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG89T2JqZWN0LmFzc2lnbih7fSxoLHIpLGE9by50aW1lb3V0LHM9ITEsZihhKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHM9ITB9KSxuLm5leHQ9NixkKGUscik7Y2FzZSA2OnU9bi5zZW50LGM9dS5oZWlnaHQsbD11LmhlaWdodDtjYXNlIDk6aWYoIShjK3Q+bCkpe24ubmV4dD0yMDticmVha31pZighcyl7bi5uZXh0PTEyO2JyZWFrfXRocm93IG5ldyBFcnJvcigiVHggd2FpdCBzdG9wcGVkOiB0aW1lb3V0Iik7Y2FzZSAxMjpyZXR1cm4gbi5uZXh0PTE0LHAoYyt0LHIpO2Nhc2UgMTQ6cmV0dXJuIG4ubmV4dD0xNixkKGUscik7Y2FzZSAxNjp1PW4uc2VudCxjPXUuaGVpZ2h0LG4ubmV4dD05O2JyZWFrO2Nhc2UgMjA6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLHUpO2Nhc2UgMjE6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19LG4pfSkpfSx0LndhaXROQmxvY2tzPWZ1bmN0aW9uKGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpoO3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoZnVuY3Rpb24gbigpe3ZhciBvLGEscyx1O3JldHVybiBpLndyYXAoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG89T2JqZWN0LmFzc2lnbih7fSxoLHIpLGE9by5hcGlCYXNlLG4ubmV4dD0zLHQuY3VycmVudEhlaWdodChhKTtjYXNlIDM6cmV0dXJuIHM9bi5zZW50LHU9cytlLG4ubmV4dD03LHAodSxyKTtjYXNlIDc6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLG4uc2VudCk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSxuKX0pKX0sdC5iYWxhbmNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyayhmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdS5kZWZhdWx0LmdldCgiYWRkcmVzc2VzL2JhbGFuY2UvIi5jb25jYXQoZSkse2Jhc2VVUkw6dCx2YWxpZGF0ZVN0YXR1czpnfSkudGhlbih5KS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRhdGEuYmFsYW5jZX0pKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19LHIpfSkpfSx0LmJhbGFuY2VEZXRhaWxzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyayhmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdS5kZWZhdWx0LmdldCgiYWRkcmVzc2VzL2JhbGFuY2UvZGV0YWlscy8iLmNvbmNhdChlKSx7YmFzZVVSTDp0LHZhbGlkYXRlU3RhdHVzOmd9KS50aGVuKHkpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGF0YX0pKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19LHIpfSkpfSx0LmFzc2V0QmFsYW5jZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyayhmdW5jdGlvbiBuKCl7cmV0dXJuIGkud3JhcChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsdS5kZWZhdWx0LmdldCgiYXNzZXRzL2JhbGFuY2UvIi5jb25jYXQodCwiLyIpLmNvbmNhdChlKSx7YmFzZVVSTDpyLHZhbGlkYXRlU3RhdHVzOmd9KS50aGVuKHkpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGF0YS5iYWxhbmNlfSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0sbil9KSl9LHQuYWNjb3VudERhdGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYSh0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKGZ1bmN0aW9uIHIoKXt2YXIgbztyZXR1cm4gaS53cmFwKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix1LmRlZmF1bHQuZ2V0KCJhZGRyZXNzZXMvZGF0YS8iLmNvbmNhdChlKSx7YmFzZVVSTDp0LHZhbGlkYXRlU3RhdHVzOmd9KS50aGVuKHkpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGF0YX0pO2Nhc2UgMjpyZXR1cm4gbz1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsby5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxlLG4oe30sdC5rZXksdCkpfSx7fSkpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0scil9KSl9LHQuYWNjb3VudERhdGFCeUtleT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyayhmdW5jdGlvbiBuKCl7cmV0dXJuIGkud3JhcChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsdS5kZWZhdWx0LmdldCgiYWRkcmVzc2VzL2RhdGEvIi5jb25jYXQodCwiLyIpLmNvbmNhdChlKSx7YmFzZVVSTDpyLHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKGUpe3JldHVybiA0MDQ9PT1lfHxnKGUpfX0pLnRoZW4oeSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gNDA0PT09ZS5zdGF0dXM/bnVsbDplLmRhdGF9KSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSxuKX0pKX0sdC5zY3JpcHRJbmZvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyayhmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdS5kZWZhdWx0LmdldCgiYWRkcmVzc2VzL3NjcmlwdEluZm8vIi5jb25jYXQoZSkse2Jhc2VVUkw6dCx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZyhlKX19KS50aGVuKHkpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGF0YX0pKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19LHIpfSkpfSx0LnN0YXRlQ2hhbmdlcz1mdW5jdGlvbihlLHQpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoZnVuY3Rpb24gcigpe3JldHVybiBpLndyYXAoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHUuZGVmYXVsdC5nZXQoImRlYnVnL3N0YXRlQ2hhbmdlcy9pbmZvLyIuY29uY2F0KGUpLHtiYXNlVVJMOnQsdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGcoZSl9fSkudGhlbih5KS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRhdGEmJmUuZGF0YS5zdGF0ZUNoYW5nZXN9KSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSxyKX0pKX0sdC5icm9hZGNhc3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdS5kZWZhdWx0LnBvc3QoInRyYW5zYWN0aW9ucy9icm9hZGNhc3QiLGMuanNvbi5zdHJpbmdpZnlUeChlKSx7YmFzZVVSTDp0LGhlYWRlcnM6eyJjb250ZW50LXR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sdmFsaWRhdGVTdGF0dXM6Z30pLnRoZW4oeSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZS5kYXRhfSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO3ZhciB0LHI9T2JqZWN0LnByb3RvdHlwZSxuPXIuaGFzT3duUHJvcGVydHksaT0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sbz1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsYT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIHUoZSx0LHIsbil7dmFyIGk9dCYmdC5wcm90b3R5cGUgaW5zdGFuY2VvZiB5P3Q6eSxvPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLGE9bmV3IHgobnx8W10pO3JldHVybiBvLl9pbnZva2U9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWY7cmV0dXJuIGZ1bmN0aW9uKGksbyl7aWYobj09PWgpdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobj09PXApe2lmKCJ0aHJvdyI9PT1pKXRocm93IG87cmV0dXJuIGsoKX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1vOzspe3ZhciBhPXIuZGVsZWdhdGU7aWYoYSl7dmFyIHM9VChhLHIpO2lmKHMpe2lmKHM9PT1kKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobj09PWYpdGhyb3cgbj1wLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bj1oO3ZhciB1PWMoZSx0LHIpO2lmKCJub3JtYWwiPT09dS50eXBlKXtpZihuPXIuZG9uZT9wOmwsdS5hcmc9PT1kKWNvbnRpbnVlO3JldHVybnt2YWx1ZTp1LmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PXUudHlwZSYmKG49cCxyLm1ldGhvZD0idGhyb3ciLHIuYXJnPXUuYXJnKX19fShlLHIsYSksb31mdW5jdGlvbiBjKGUsdCxyKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOmUuY2FsbCh0LHIpfX1jYXRjaChuKXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzpufX19ZS53cmFwPXU7dmFyIGY9InN1c3BlbmRlZFN0YXJ0IixsPSJzdXNwZW5kZWRZaWVsZCIsaD0iZXhlY3V0aW5nIixwPSJjb21wbGV0ZWQiLGQ9e307ZnVuY3Rpb24geSgpe31mdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIHYoKXt9dmFyIG09e307bVtvXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt2YXIgYj1PYmplY3QuZ2V0UHJvdG90eXBlT2YsXz1iJiZiKGIoSShbXSkpKTtfJiZfIT09ciYmbi5jYWxsKF8sbykmJihtPV8pO3ZhciBTPXYucHJvdG90eXBlPXkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobSk7ZnVuY3Rpb24gRShlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goZnVuY3Rpb24odCl7ZVt0XT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9fSl9ZnVuY3Rpb24gdyhlKXt2YXIgdDt0aGlzLl9pbnZva2U9ZnVuY3Rpb24ocixpKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsbyl7IWZ1bmN0aW9uIHQocixpLG8sYSl7dmFyIHM9YyhlW3JdLGUsaSk7aWYoInRocm93IiE9PXMudHlwZSl7dmFyIHU9cy5hcmcsZj11LnZhbHVlO3JldHVybiBmJiYib2JqZWN0Ij09PXR5cGVvZiBmJiZuLmNhbGwoZiwiX19hd2FpdCIpP1Byb21pc2UucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24oZSl7dCgibmV4dCIsZSxvLGEpfSxmdW5jdGlvbihlKXt0KCJ0aHJvdyIsZSxvLGEpfSk6UHJvbWlzZS5yZXNvbHZlKGYpLnRoZW4oZnVuY3Rpb24oZSl7dS52YWx1ZT1lLG8odSl9LGZ1bmN0aW9uKGUpe3JldHVybiB0KCJ0aHJvdyIsZSxvLGEpfSl9YShzLmFyZyl9KHIsaSx0LG8pfSl9cmV0dXJuIHQ9dD90LnRoZW4obyxvKTpvKCl9fWZ1bmN0aW9uIFQoZSxyKXt2YXIgbj1lLml0ZXJhdG9yW3IubWV0aG9kXTtpZihuPT09dCl7aWYoci5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYoZS5pdGVyYXRvci5yZXR1cm4mJihyLm1ldGhvZD0icmV0dXJuIixyLmFyZz10LFQoZSxyKSwidGhyb3ciPT09ci5tZXRob2QpKXJldHVybiBkO3IubWV0aG9kPSJ0aHJvdyIsci5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZCIpfXJldHVybiBkfXZhciBpPWMobixlLml0ZXJhdG9yLHIuYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiByLm1ldGhvZD0idGhyb3ciLHIuYXJnPWkuYXJnLHIuZGVsZWdhdGU9bnVsbCxkO3ZhciBvPWkuYXJnO3JldHVybiBvP28uZG9uZT8ocltlLnJlc3VsdE5hbWVdPW8udmFsdWUsci5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PXIubWV0aG9kJiYoci5tZXRob2Q9Im5leHQiLHIuYXJnPXQpLHIuZGVsZWdhdGU9bnVsbCxkKTpvOihyLm1ldGhvZD0idGhyb3ciLHIuYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksci5kZWxlZ2F0ZT1udWxsLGQpfWZ1bmN0aW9uIEEoZSl7dmFyIHQ9e3RyeUxvYzplWzBdfTsxIGluIGUmJih0LmNhdGNoTG9jPWVbMV0pLDIgaW4gZSYmKHQuZmluYWxseUxvYz1lWzJdLHQuYWZ0ZXJMb2M9ZVszXSksdGhpcy50cnlFbnRyaWVzLnB1c2godCl9ZnVuY3Rpb24gQyhlKXt2YXIgdD1lLmNvbXBsZXRpb258fHt9O3QudHlwZT0ibm9ybWFsIixkZWxldGUgdC5hcmcsZS5jb21wbGV0aW9uPXR9ZnVuY3Rpb24geChlKXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sZS5mb3JFYWNoKEEsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gSShlKXtpZihlKXt2YXIgcj1lW29dO2lmKHIpcmV0dXJuIHIuY2FsbChlKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgaT0tMSxhPWZ1bmN0aW9uIHIoKXtmb3IoOysraTxlLmxlbmd0aDspaWYobi5jYWxsKGUsaSkpcmV0dXJuIHIudmFsdWU9ZVtpXSxyLmRvbmU9ITEscjtyZXR1cm4gci52YWx1ZT10LHIuZG9uZT0hMCxyfTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0Omt9fWZ1bmN0aW9uIGsoKXtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1yZXR1cm4gZy5wcm90b3R5cGU9Uy5jb25zdHJ1Y3Rvcj12LHYuY29uc3RydWN0b3I9Zyx2W3NdPWcuZGlzcGxheU5hbWU9IkdlbmVyYXRvckZ1bmN0aW9uIixlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ImZ1bmN0aW9uIj09PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yO3JldHVybiEhdCYmKHQ9PT1nfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KHQuZGlzcGxheU5hbWV8fHQubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx2KTooZS5fX3Byb3RvX189dixzIGluIGV8fChlW3NdPSJHZW5lcmF0b3JGdW5jdGlvbiIpKSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFMpLGV9LGUuYXdyYXA9ZnVuY3Rpb24oZSl7cmV0dXJue19fYXdhaXQ6ZX19LEUody5wcm90b3R5cGUpLHcucHJvdG90eXBlW2FdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUuQXN5bmNJdGVyYXRvcj13LGUuYXN5bmM9ZnVuY3Rpb24odCxyLG4saSl7dmFyIG89bmV3IHcodSh0LHIsbixpKSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKT9vOm8ubmV4dCgpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9uZT9lLnZhbHVlOm8ubmV4dCgpfSl9LEUoUyksU1tzXT0iR2VuZXJhdG9yIixTW29dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LFMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0sZS5rZXlzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKXQucHVzaChyKTtyZXR1cm4gdC5yZXZlcnNlKCksZnVuY3Rpb24gcigpe2Zvcig7dC5sZW5ndGg7KXt2YXIgbj10LnBvcCgpO2lmKG4gaW4gZSlyZXR1cm4gci52YWx1ZT1uLHIuZG9uZT0hMSxyfXJldHVybiByLmRvbmU9ITAscn19LGUudmFsdWVzPUkseC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOngscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKEMpLCFlKWZvcih2YXIgciBpbiB0aGlzKSJ0Ij09PXIuY2hhckF0KDApJiZuLmNhbGwodGhpcyxyKSYmIWlzTmFOKCtyLnNsaWNlKDEpKSYmKHRoaXNbcl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIGU9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgcj10aGlzO2Z1bmN0aW9uIGkobixpKXtyZXR1cm4gcy50eXBlPSJ0aHJvdyIscy5hcmc9ZSxyLm5leHQ9bixpJiYoci5tZXRob2Q9Im5leHQiLHIuYXJnPXQpLCEhaX1mb3IodmFyIG89dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO28+PTA7LS1vKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbb10scz1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIGkoImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciB1PW4uY2FsbChhLCJjYXRjaExvYyIpLGM9bi5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZih1JiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gaShhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBpKGEuZmluYWxseUxvYyl9ZWxzZSBpZih1KXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gaShhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBpKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7cj49MDstLXIpe3ZhciBpPXRoaXMudHJ5RW50cmllc1tyXTtpZihpLnRyeUxvYzw9dGhpcy5wcmV2JiZuLmNhbGwoaSwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8aS5maW5hbGx5TG9jKXt2YXIgbz1pO2JyZWFrfX1vJiYoImJyZWFrIj09PWV8fCJjb250aW51ZSI9PT1lKSYmby50cnlMb2M8PXQmJnQ8PW8uZmluYWxseUxvYyYmKG89bnVsbCk7dmFyIGE9bz9vLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT1lLGEuYXJnPXQsbz8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1vLmZpbmFsbHlMb2MsZCk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24oZSx0KXtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiJicmVhayI9PT1lLnR5cGV8fCJjb250aW51ZSI9PT1lLnR5cGU/dGhpcy5uZXh0PWUuYXJnOiJyZXR1cm4iPT09ZS50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9ZS5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PWUudHlwZSYmdCYmKHRoaXMubmV4dD10KSxkfSxmaW5pc2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIuZmluYWxseUxvYz09PWUpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLEMociksZH19LGNhdGNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLnRyeUxvYz09PWUpe3ZhciBuPXIuY29tcGxldGlvbjtpZigidGhyb3ciPT09bi50eXBlKXt2YXIgaT1uLmFyZztDKHIpfXJldHVybiBpfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUscixuKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6SShlKSxyZXN1bHROYW1lOnIsbmV4dExvYzpufSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLGR9fSxlfShlLmV4cG9ydHMpO3RyeXtyZWdlbmVyYXRvclJ1bnRpbWU9bn1jYXRjaChpKXtGdW5jdGlvbigiciIsInJlZ2VuZXJhdG9yUnVudGltZSA9IHIiKShuKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG4saT10aGlzJiZ0aGlzLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybihpPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTEsbj1hcmd1bWVudHMubGVuZ3RoO3I8bjtyKyspZm9yKHZhciBpIGluIHQ9YXJndW1lbnRzW3JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGkpJiYoZVtpXT10W2ldKTtyZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvLGE9cigzMSkscz1yKDMxKSx1PXIoMzkzKSxjPXIoMTY4KS5wcmVwYXJlLnByb2Nlc3NvcnMsZj1yKDIzNSksbD1hLmxpYnMubWFyc2hhbGwuc2VyaWFsaXplUHJpbWl0aXZlcyxoPWwuTEVOLHA9bC5TSE9SVCxkPWwuU1RSSU5HLHk9bC5MT05HLGc9bC5CQVNFNThfU1RSSU5HLHY9YS5saWJzLm1hcnNoYWxsLmJpbmFyeSxtPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dS50b05vZGUoZSk7cmV0dXJuIHIudGltZXN0YW1wPW5ldyBEYXRlKHIudGltZXN0YW1wKS5nZXRUaW1lKCksdD90KHIpOnJ9LGI9ZnVuY3Rpb24oZSl7dmFyIHQ9KGV8fCIiKS5yZXBsYWNlKCJiYXNlNjQ6IiwiIik7cmV0dXJuIHQ/ImJhc2U2NDoiK3Q6bnVsbH07IWZ1bmN0aW9uKGUpe2VbZS5TRU5EX09MRD0yXT0iU0VORF9PTEQiLGVbZS5JU1NVRT0zXT0iSVNTVUUiLGVbZS5UUkFOU0ZFUj00XT0iVFJBTlNGRVIiLGVbZS5SRUlTU1VFPTVdPSJSRUlTU1VFIixlW2UuQlVSTj02XT0iQlVSTiIsZVtlLkVYQ0hBTkdFPTddPSJFWENIQU5HRSIsZVtlLkxFQVNFPThdPSJMRUFTRSIsZVtlLkNBTkNFTF9MRUFTSU5HPTldPSJDQU5DRUxfTEVBU0lORyIsZVtlLkNSRUFURV9BTElBUz0xMF09IkNSRUFURV9BTElBUyIsZVtlLk1BU1NfVFJBTlNGRVI9MTFdPSJNQVNTX1RSQU5TRkVSIixlW2UuREFUQT0xMl09IkRBVEEiLGVbZS5TRVRfU0NSSVBUPTEzXT0iU0VUX1NDUklQVCIsZVtlLlNQT05TT1JTSElQPTE0XT0iU1BPTlNPUlNISVAiLGVbZS5TRVRfQVNTRVRfU0NSSVBUPTE1XT0iU0VUX0FTU0VUX1NDUklQVCIsZVtlLlNDUklQVF9JTlZPQ0FUSU9OPTE2XT0iU0NSSVBUX0lOVk9DQVRJT04ifSh0LlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSfHwodC5UUkFOU0FDVElPTl9UWVBFX05VTUJFUj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5BVVRIPTFlM109IkFVVEgiLGVbZS5NQVRDSEVSX09SREVSUz0xMDAxXT0iTUFUQ0hFUl9PUkRFUlMiLGVbZS5DUkVBVEVfT1JERVI9MTAwMl09IkNSRUFURV9PUkRFUiIsZVtlLkNBTkNFTF9PUkRFUj0xMDAzXT0iQ0FOQ0VMX09SREVSIixlW2UuQ09JTk9NQVRfQ09ORklSTUFUSU9OPTEwMDRdPSJDT0lOT01BVF9DT05GSVJNQVRJT04iLGVbZS5JU1NVRT0zXT0iSVNTVUUiLGVbZS5UUkFOU0ZFUj00XT0iVFJBTlNGRVIiLGVbZS5SRUlTU1VFPTVdPSJSRUlTU1VFIixlW2UuQlVSTj02XT0iQlVSTiIsZVtlLkVYQ0hBTkdFPTddPSJFWENIQU5HRSIsZVtlLkxFQVNFPThdPSJMRUFTRSIsZVtlLkNBTkNFTF9MRUFTSU5HPTldPSJDQU5DRUxfTEVBU0lORyIsZVtlLkNSRUFURV9BTElBUz0xMF09IkNSRUFURV9BTElBUyIsZVtlLk1BU1NfVFJBTlNGRVI9MTFdPSJNQVNTX1RSQU5TRkVSIixlW2UuREFUQT0xMl09IkRBVEEiLGVbZS5TRVRfU0NSSVBUPTEzXT0iU0VUX1NDUklQVCIsZVtlLlNQT05TT1JTSElQPTE0XT0iU1BPTlNPUlNISVAiLGVbZS5TRVRfQVNTRVRfU0NSSVBUPTE1XT0iU0VUX0FTU0VUX1NDUklQVCIsZVtlLlNDUklQVF9JTlZPQ0FUSU9OPTE2XT0iU0NSSVBUX0lOVk9DQVRJT04ifShvPXQuU0lHTl9UWVBFfHwodC5TSUdOX1RZUEU9e30pKTt2YXIgXz1mdW5jdGlvbihlKXt2YXIgdD1lLm9yZGVySWQscj1lLmlkLG49ZS5zZW5kZXJQdWJsaWNLZXksaT1lLnNlbmRlcixvPWcobnx8aSksYT1nKHJ8fHQpO3JldHVybiBVaW50OEFycmF5LmZyb20oQXJyYXkuZnJvbShvKS5jb25jYXQoQXJyYXkuZnJvbShhKSkpfTt0LlNJR05fVFlQRVM9KChuPXt9KVtvLkFVVEhdPXtnZXRCeXRlczp7MTpmdW5jdGlvbihlKXt2YXIgdD1lLmhvc3Qscj1lLmRhdGEsbj1oKHApKGQpKCJXYXZlc1dhbGxldEF1dGhlbnRpY2F0aW9uIiksaT1oKHApKGQpKHR8fCIiKSxvPWgocCkoZCkocnx8IiIpO3JldHVybiBVaW50OEFycmF5LmZyb20oQXJyYXkuZnJvbShuKS5jb25jYXQoQXJyYXkuZnJvbShpKSxBcnJheS5mcm9tKG8pKSl9fSxhZGFwdGVyOiJzaWduUmVxdWVzdCJ9LG5bby5DT0lOT01BVF9DT05GSVJNQVRJT05dPXtnZXRCeXRlczp7MTpmdW5jdGlvbihlKXt2YXIgdD1lLnRpbWVzdGFtcCxyPWUucHJlZml4LG49aChwKShkKShyKSxpPXkodCk7cmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShBcnJheS5mcm9tKG4="
}
Changelog:
{
"2020.04.17 15:42": "base64:emVUeChsKTtyZXR1cm4gZi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwyKSxyPXRbMF0saT10WzFdO3JldHVybiBhLmFkZFByb29mKGwsby5zaWduQnl0ZXMocixoKSxpKX0pLGwuaWQ9by5iYXNlNThFbmNvZGUoby5ibGFrZTJiKGgpKSxsfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49cigyMCksaT1yKDE5KSxvPXIoMjMxKSxhPXIoMjUpO2Z1bmN0aW9uIHMoZSl7aWYoMT09PWUudmVyc2lvbilyZXR1cm4gbi5jb25jYXQoWzI1NSwyNTUsMjU1LDFdLGkuc2VyaWFsaXplUHJpbWl0aXZlcy5CQVNFNjRfU1RSSU5HKGUuYmluYXJ5KSk7aWYoMj09PWUudmVyc2lvbil7dmFyIHQ9by5zZXJpYWxpemVyRnJvbVNjaGVtYShpLnNjaGVtYXMudHhGaWVsZHMuZGF0YVsxXSk7cmV0dXJuIG4uY29uY2F0KFsyNTUsMjU1LDI1NSwyXSx0KGUuZGF0YSkpfXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBDdXN0b21EYXRhIHZlcnNpb246ICIuY29uY2F0KGUudmVyc2lvbikpfXQuY3VzdG9tRGF0YT1mdW5jdGlvbihlLHQpe2EudmFsaWRhdGUuY3VzdG9tRGF0YShlKTt2YXIgcj1zKGUpLGk9bi5iYXNlNThFbmNvZGUobi5ibGFrZTJiKHIpKSxvPW4ucHVibGljS2V5KHQpLHU9bi5zaWduQnl0ZXModCxyKTtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxlLHtoYXNoOmkscHVibGljS2V5Om8sc2lnbmF0dXJlOnV9KX0sdC5zZXJpYWxpemVDdXN0b21EYXRhPXN9LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPXIoMjApLGk9cigxOSkuc2VyaWFsaXplUHJpbWl0aXZlcy5TVFJJTkcsbz1yKDMwKSxhPXIoMjUpLHM9cigxMzkpO3Quc2VyaWFsaXplQXV0aERhdGE9ZnVuY3Rpb24oZSl7cmV0dXJuIG4uY29uY2F0KHMuTEVOKHMuU0hPUlQpKGkpKCJXYXZlc1dhbGxldEF1dGhlbnRpY2F0aW9uIikscy5MRU4ocy5TSE9SVCkoaSkoZS5ob3N0fHwiIikscy5MRU4ocy5TSE9SVCkoaSkoZS5kYXRhfHwiIikpfSx0LmF1dGg9ZnVuY3Rpb24oZSxyLGkpe3ZhciBzPW8uY29udmVydFRvUGFpcnMociksdT1lLnB1YmxpY0tleXx8by5nZXRTZW5kZXJQdWJsaWNLZXkocyx7c2VuZGVyUHVibGljS2V5OnZvaWQgMH0pO2EudmFsaWRhdGUuYXV0aChlKTt2YXIgYz17aGFzaDoiIixzaWduYXR1cmU6IiIsaG9zdDplLmhvc3QsZGF0YTplLmRhdGEscHVibGljS2V5OnUsYWRkcmVzczpuLmFkZHJlc3Moe3B1YmxpY0tleTp1fSxpKX0sZj10LnNlcmlhbGl6ZUF1dGhEYXRhKGMpO3JldHVybiBjLnNpZ25hdHVyZT1udWxsIT1yJiZuLnNpZ25CeXRlcyhyLGYpfHwiIixjLmhhc2g9bi5iYXNlNThFbmNvZGUobi5ibGFrZTJiKFVpbnQ4QXJyYXkuZnJvbShmKSkpLGN9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMjIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yKDE1KSxvPXIoMjApLGE9cigzMCkscz1yKDE5KSx1PXIoMjUpO3QuaW52b2tlU2NyaXB0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9aS5UUkFOU0FDVElPTl9UWVBFLklOVk9LRV9TQ1JJUFQsZj1lLnZlcnNpb258fDEsbD1hLmNvbnZlcnRUb1BhaXJzKHQpLGg9e3R5cGU6cix2ZXJzaW9uOmYsc2VuZGVyUHVibGljS2V5OmEuZ2V0U2VuZGVyUHVibGljS2V5KGwsZSksZEFwcDplLmRBcHAsY2FsbDplLmNhbGwmJk9iamVjdC5hc3NpZ24oe2FyZ3M6W119LGUuY2FsbCkscGF5bWVudDpjKGUucGF5bWVudCksZmVlOmEuZmVlKGUsNWU1KSxmZWVBc3NldElkOmEubm9ybWFsaXplQXNzZXRJZChlLmZlZUFzc2V0SWQpLHRpbWVzdGFtcDplLnRpbWVzdGFtcHx8RGF0ZS5ub3coKSxjaGFpbklkOmEubmV0d29ya0J5dGUoZS5jaGFpbklkLDg3KSxwcm9vZnM6ZS5wcm9vZnN8fFtdLGlkOiIifTt1LnZhbGlkYXRlLmludm9rZVNjcmlwdChoKTt2YXIgcD1zLmJpbmFyeS5zZXJpYWxpemVUeChoKTtyZXR1cm4gbC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4oZSwyKSxyPXRbMF0saT10WzFdO3JldHVybiBhLmFkZFByb29mKGgsby5zaWduQnl0ZXMocixwKSxpKX0pLGguaWQ9by5iYXNlNThFbmNvZGUoby5iYXNlNThFbmNvZGUoby5ibGFrZTJiKHApKSksaH07dmFyIGM9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/W106ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sZSx7YXNzZXRJZDoiV0FWRVMiPT09ZS5hc3NldElkP251bGw6ZS5hc3NldElkfSl9KX19LGZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9cig2NzApfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgcj1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksbj0wO248ci5sZW5ndGg7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiBlLmFwcGx5KHQscil9fX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDQ0KTtmdW5jdGlvbiBpKGUpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSkucmVwbGFjZSgvJTQwL2dpLCJAIikucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfWUuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7aWYoIXQpcmV0dXJuIGU7dmFyIG87aWYocilvPXIodCk7ZWxzZSBpZihuLmlzVVJMU2VhcmNoUGFyYW1zKHQpKW89dC50b1N0cmluZygpO2Vsc2V7dmFyIGE9W107bi5mb3JFYWNoKHQsZnVuY3Rpb24oZSx0KXtudWxsIT09ZSYmInVuZGVmaW5lZCIhPT10eXBlb2YgZSYmKG4uaXNBcnJheShlKT90Kz0iW10iOmU9W2VdLG4uZm9yRWFjaChlLGZ1bmN0aW9uKGUpe24uaXNEYXRlKGUpP2U9ZS50b0lTT1N0cmluZygpOm4uaXNPYmplY3QoZSkmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxhLnB1c2goaSh0KSsiPSIraShlKSl9KSl9KSxvPWEuam9pbigiJiIpfWlmKG8pe3ZhciBzPWUuaW5kZXhPZigiIyIpOy0xIT09cyYmKGU9ZS5zbGljZSgwLHMpKSxlKz0oLTE9PT1lLmluZGV4T2YoIj8iKT8iPyI6IiYiKStvfXJldHVybiBlfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8IWUuX19DQU5DRUxfXyl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgbj1yKDQ0KSxpPXIoNjc2KSxvPXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn07ZnVuY3Rpb24gYShlLHQpeyFuLmlzVW5kZWZpbmVkKGUpJiZuLmlzVW5kZWZpbmVkKGVbIkNvbnRlbnQtVHlwZSJdKSYmKGVbIkNvbnRlbnQtVHlwZSJdPXQpfXZhciBzPXthZGFwdGVyOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2YgdCYmIltvYmplY3QgcHJvY2Vzc10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpP2U9cigzODYpOiJ1bmRlZmluZWQiIT09dHlwZW9mIFhNTEh0dHBSZXF1ZXN0JiYoZT1yKDM4NikpLGV9KCksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oZSx0KXtyZXR1cm4gaSh0LCJBY2NlcHQiKSxpKHQsIkNvbnRlbnQtVHlwZSIpLG4uaXNGb3JtRGF0YShlKXx8bi5pc0FycmF5QnVmZmVyKGUpfHxuLmlzQnVmZmVyKGUpfHxuLmlzU3RyZWFtKGUpfHxuLmlzRmlsZShlKXx8bi5pc0Jsb2IoZSk/ZTpuLmlzQXJyYXlCdWZmZXJWaWV3KGUpP2UuYnVmZmVyOm4uaXNVUkxTZWFyY2hQYXJhbXMoZSk/KGEodCwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiKSxlLnRvU3RyaW5nKCkpOm4uaXNPYmplY3QoZSk/KGEodCwiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04IiksSlNPTi5zdHJpbmdpZnkoZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7aWYoInN0cmluZyI9PT10eXBlb2YgZSl0cnl7ZT1KU09OLnBhcnNlKGUpfWNhdGNoKHQpe31yZXR1cm4gZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZT49MjAwJiZlPDMwMH0saGVhZGVyczp7Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fX07bi5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCJdLGZ1bmN0aW9uKGUpe3MuaGVhZGVyc1tlXT17fX0pLG4uZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLGZ1bmN0aW9uKGUpe3MuaGVhZGVyc1tlXT1uLm1lcmdlKG8pfSksZS5leHBvcnRzPXN9KS5jYWxsKHRoaXMscig0NikpfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNDQpLGk9cig2NzcpLG89cigzODMpLGE9cig2NzkpLHM9cig2ODApLHU9cigzODcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxjKXt2YXIgZj1lLmRhdGEsbD1lLmhlYWRlcnM7bi5pc0Zvcm1EYXRhKGYpJiZkZWxldGUgbFsiQ29udGVudC1UeXBlIl07dmFyIGg9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKGUuYXV0aCl7dmFyIHA9ZS5hdXRoLnVzZXJuYW1lfHwiIixkPWUuYXV0aC5wYXNzd29yZHx8IiI7bC5BdXRob3JpemF0aW9uPSJCYXNpYyAiK2J0b2EocCsiOiIrZCl9aWYoaC5vcGVuKGUubWV0aG9kLnRvVXBwZXJDYXNlKCksbyhlLnVybCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSxoLnRpbWVvdXQ9ZS50aW1lb3V0LGgub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoaCYmND09PWgucmVhZHlTdGF0ZSYmKDAhPT1oLnN0YXR1c3x8aC5yZXNwb25zZVVSTCYmMD09PWgucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKSkpe3ZhciByPSJnZXRBbGxSZXNwb25zZUhlYWRlcnMiaW4gaD9hKGguZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpOm51bGwsbj17ZGF0YTplLnJlc3BvbnNlVHlwZSYmInRleHQiIT09ZS5yZXNwb25zZVR5cGU/aC5yZXNwb25zZTpoLnJlc3BvbnNlVGV4dCxzdGF0dXM6aC5zdGF0dXMsc3RhdHVzVGV4dDpoLnN0YXR1c1RleHQsaGVhZGVyczpyLGNvbmZpZzplLHJlcXVlc3Q6aH07aSh0LGMsbiksaD1udWxsfX0saC5vbmFib3J0PWZ1bmN0aW9uKCl7aCYmKGModSgiUmVxdWVzdCBhYm9ydGVkIixlLCJFQ09OTkFCT1JURUQiLGgpKSxoPW51bGwpfSxoLm9uZXJyb3I9ZnVuY3Rpb24oKXtjKHUoIk5ldHdvcmsgRXJyb3IiLGUsbnVsbCxoKSksaD1udWxsfSxoLm9udGltZW91dD1mdW5jdGlvbigpe2ModSgidGltZW91dCBvZiAiK2UudGltZW91dCsibXMgZXhjZWVkZWQiLGUsIkVDT05OQUJPUlRFRCIsaCkpLGg9bnVsbH0sbi5pc1N0YW5kYXJkQnJvd3NlckVudigpKXt2YXIgeT1yKDY4MSksZz0oZS53aXRoQ3JlZGVudGlhbHN8fHMoZS51cmwpKSYmZS54c3JmQ29va2llTmFtZT95LnJlYWQoZS54c3JmQ29va2llTmFtZSk6dm9pZCAwO2cmJihsW2UueHNyZkhlYWRlck5hbWVdPWcpfWlmKCJzZXRSZXF1ZXN0SGVhZGVyImluIGgmJm4uZm9yRWFjaChsLGZ1bmN0aW9uKGUsdCl7InVuZGVmaW5lZCI9PT10eXBlb2YgZiYmImNvbnRlbnQtdHlwZSI9PT10LnRvTG93ZXJDYXNlKCk/ZGVsZXRlIGxbdF06aC5zZXRSZXF1ZXN0SGVhZGVyKHQsZSl9KSxlLndpdGhDcmVkZW50aWFscyYmKGgud2l0aENyZWRlbnRpYWxzPSEwKSxlLnJlc3BvbnNlVHlwZSl0cnl7aC5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGV9Y2F0Y2godil7aWYoImpzb24iIT09ZS5yZXNwb25zZVR5cGUpdGhyb3cgdn0iZnVuY3Rpb24iPT09dHlwZW9mIGUub25Eb3dubG9hZFByb2dyZXNzJiZoLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixlLm9uRG93bmxvYWRQcm9ncmVzcyksImZ1bmN0aW9uIj09PXR5cGVvZiBlLm9uVXBsb2FkUHJvZ3Jlc3MmJmgudXBsb2FkJiZoLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vblVwbG9hZFByb2dyZXNzKSxlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnByb21pc2UudGhlbihmdW5jdGlvbihlKXtoJiYoaC5hYm9ydCgpLGMoZSksaD1udWxsKX0pLHZvaWQgMD09PWYmJihmPW51bGwpLGguc2VuZChmKX0pfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDY3OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLGksbyl7dmFyIGE9bmV3IEVycm9yKGUpO3JldHVybiBuKGEsdCxyLGksbyl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNDQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIHI9e307cmV0dXJuIG4uZm9yRWFjaChbInVybCIsIm1ldGhvZCIsInBhcmFtcyIsImRhdGEiXSxmdW5jdGlvbihlKXsidW5kZWZpbmVkIiE9PXR5cGVvZiB0W2VdJiYocltlXT10W2VdKX0pLG4uZm9yRWFjaChbImhlYWRlcnMiLCJhdXRoIiwicHJveHkiXSxmdW5jdGlvbihpKXtuLmlzT2JqZWN0KHRbaV0pP3JbaV09bi5kZWVwTWVyZ2UoZVtpXSx0W2ldKToidW5kZWZpbmVkIiE9PXR5cGVvZiB0W2ldP3JbaV09dFtpXTpuLmlzT2JqZWN0KGVbaV0pP3JbaV09bi5kZWVwTWVyZ2UoZVtpXSk6InVuZGVmaW5lZCIhPT10eXBlb2YgZVtpXSYmKHJbaV09ZVtpXSl9KSxuLmZvckVhY2goWyJiYXNlVVJMIiwidHJhbnNmb3JtUmVxdWVzdCIsInRyYW5zZm9ybVJlc3BvbnNlIiwicGFyYW1zU2VyaWFsaXplciIsInRpbWVvdXQiLCJ3aXRoQ3JlZGVudGlhbHMiLCJhZGFwdGVyIiwicmVzcG9uc2VUeXBlIiwieHNyZkNvb2tpZU5hbWUiLCJ4c3JmSGVhZGVyTmFtZSIsIm9uVXBsb2FkUHJvZ3Jlc3MiLCJvbkRvd25sb2FkUHJvZ3Jlc3MiLCJtYXhDb250ZW50TGVuZ3RoIiwidmFsaWRhdGVTdGF0dXMiLCJtYXhSZWRpcmVjdHMiLCJodHRwQWdlbnQiLCJodHRwc0FnZW50IiwiY2FuY2VsVG9rZW4iLCJzb2NrZXRQYXRoIl0sZnVuY3Rpb24obil7InVuZGVmaW5lZCIhPT10eXBlb2YgdFtuXT9yW25dPXRbbl06InVuZGVmaW5lZCIhPT10eXBlb2YgZVtuXSYmKHJbbl09ZVtuXSl9KSxyfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3RoaXMubWVzc2FnZT1lfW4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkNhbmNlbCIrKHRoaXMubWVzc2FnZT8iOiAiK3RoaXMubWVzc2FnZToiIil9LG4ucHJvdG90eXBlLl9fQ0FOQ0VMX189ITAsZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigxMDMpLGk9cigyMzIpLG89dGhpcyxhPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKShmdW5jdGlvbihpLG8pe2Z1bmN0aW9uIGEoZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaCh0KXtvKHQpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKHQpe28odCl9fWZ1bmN0aW9uIHUoZSl7ZS5kb25lP2koZS52YWx1ZSk6bmV3IHIoZnVuY3Rpb24odCl7dChlLnZhbHVlKX0pLnRoZW4oYSxzKX11KChuPW4uYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KX0scz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHU9cyhyKDM4MSkpLGM9cigxOSksZj1mdW5jdGlvbihlKXt2YXIgdD17fSxyPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsbil7dC5yZXNvbHZlPXIsdC5pZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHIoKX0sZSl9KTtyZXR1cm4gci5jYW5jZWw9ZnVuY3Rpb24oKXt0LnJlc29sdmUoKSxjbGVhclRpbWVvdXQodC5pZCl9LHJ9LGw9ZnVuY3Rpb24oZSx0KXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MWUzO3JldHVybiBmKHIpLnRoZW4oZnVuY3Rpb24ocil7cmV0dXJuIHQ/UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJUeCB3YWl0IHN0b3BwZWQ6IHRpbWVvdXQiKSk6ZSgpfSl9LGg9e3RpbWVvdXQ6MTJlNCxhcGlCYXNlOiJodHRwczovL25vZGVzLndhdmVzcGxhdGZvcm0uY29tIn07ZnVuY3Rpb24gcChlLHIpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoZnVuY3Rpb24gbigpe3ZhciBvLGEscyx1LGMscDtyZXR1cm4gaS53cmFwKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBvPU9iamVjdC5hc3NpZ24oe30saCxyKSxhPW8udGltZW91dCxzPW8uYXBpQmFzZSx1PSExLChjPWYoYSkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gdT0hMH0pLHA9ZnVuY3Rpb24gcigpe3JldHVybiB0LmN1cnJlbnRIZWlnaHQocykudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gdD49ZT8oYy5jYW5jZWwoKSx0KTpsKHIsdSwxZTQpfSkuY2F0Y2goZnVuY3Rpb24oZSl7cmV0dXJuIGwocix1KX0pfSxuLmFicnVwdCgicmV0dXJuIixwKCkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0sbil9KSl9ZnVuY3Rpb24gZChlLHQpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoZnVuY3Rpb24gcigpe3ZhciBuLG8sYSxzLGMsbDtyZXR1cm4gaS53cmFwKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiBuPU9iamVjdC5hc3NpZ24oe30saCx0KSxvPW4udGltZW91dCxhPW4uYXBpQmFzZSxzPSExLChjPWYobykpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gcz0hMH0pLGw9ZnVuY3Rpb24gdCgpe3JldHVybiB1LmRlZmF1bHQuZ2V0KCJ0cmFuc2FjdGlvbnMvaW5mby8iLmNvbmNhdChlKSx7YmFzZVVSTDphfSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gYy5jYW5jZWwoKSxlLmRhdGF9KS5jYXRjaChmdW5jdGlvbihlKXtyZXR1cm4gZigxZTMpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIHM/UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJUeCB3YWl0IHN0b3BwZWQ6IHRpbWVvdXQiKSk6dCgpfSl9KX0sci5hYnJ1cHQoInJldHVybiIsbCgpKTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19LHIpfSkpfXQuY3VycmVudEhlaWdodD1mdW5jdGlvbihlKXtyZXR1cm4gYShvLHZvaWQgMCx2b2lkIDAsaS5tYXJrKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix1LmRlZmF1bHQuZ2V0KCIvYmxvY2tzL2hlaWdodCIse2Jhc2VVUkw6ZX0pLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGF0YSYmZS5kYXRhLmhlaWdodH0pO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19LHQpfSkpfSx0LndhaXRGb3JIZWlnaHQ9cCx0LndhaXRGb3JUeD1kO3ZhciB5PWZ1bmN0aW9uKGUpe3JldHVybiA0MDA9PT1lLnN0YXR1cz9Qcm9taXNlLnJlamVjdChPYmplY3QuYXNzaWduKG5ldyBFcnJvcixlLmRhdGEpKTplfSxnPWZ1bmN0aW9uKGUpe3JldHVybiA0MDA9PT1lfHxlPj0yMDAmJmU8MzAwfTt0LndhaXRGb3JUeFdpdGhOQ29uZmlybWF0aW9ucz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyayhmdW5jdGlvbiBuKCl7dmFyIG8sYSxzLHUsYyxsO3JldHVybiBpLndyYXAoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG89T2JqZWN0LmFzc2lnbih7fSxoLHIpLGE9by50aW1lb3V0LHM9ITEsZihhKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHM9ITB9KSxuLm5leHQ9NixkKGUscik7Y2FzZSA2OnU9bi5zZW50LGM9dS5oZWlnaHQsbD11LmhlaWdodDtjYXNlIDk6aWYoIShjK3Q+bCkpe24ubmV4dD0yMDticmVha31pZighcyl7bi5uZXh0PTEyO2JyZWFrfXRocm93IG5ldyBFcnJvcigiVHggd2FpdCBzdG9wcGVkOiB0aW1lb3V0Iik7Y2FzZSAxMjpyZXR1cm4gbi5uZXh0PTE0LHAoYyt0LHIpO2Nhc2UgMTQ6cmV0dXJuIG4ubmV4dD0xNixkKGUscik7Y2FzZSAxNjp1PW4uc2VudCxjPXUuaGVpZ2h0LG4ubmV4dD05O2JyZWFrO2Nhc2UgMjA6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLHUpO2Nhc2UgMjE6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19LG4pfSkpfSx0LndhaXROQmxvY2tzPWZ1bmN0aW9uKGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpoO3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoZnVuY3Rpb24gbigpe3ZhciBvLGEscyx1O3JldHVybiBpLndyYXAoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG89T2JqZWN0LmFzc2lnbih7fSxoLHIpLGE9by5hcGlCYXNlLG4ubmV4dD0zLHQuY3VycmVudEhlaWdodChhKTtjYXNlIDM6cmV0dXJuIHM9bi5zZW50LHU9cytlLG4ubmV4dD03LHAodSxyKTtjYXNlIDc6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLG4uc2VudCk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSxuKX0pKX0sdC5iYWxhbmNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyayhmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdS5kZWZhdWx0LmdldCgiYWRkcmVzc2VzL2JhbGFuY2UvIi5jb25jYXQoZSkse2Jhc2VVUkw6dCx2YWxpZGF0ZVN0YXR1czpnfSkudGhlbih5KS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRhdGEuYmFsYW5jZX0pKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19LHIpfSkpfSx0LmJhbGFuY2VEZXRhaWxzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyayhmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdS5kZWZhdWx0LmdldCgiYWRkcmVzc2VzL2JhbGFuY2UvZGV0YWlscy8iLmNvbmNhdChlKSx7YmFzZVVSTDp0LHZhbGlkYXRlU3RhdHVzOmd9KS50aGVuKHkpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGF0YX0pKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19LHIpfSkpfSx0LmFzc2V0QmFsYW5jZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyayhmdW5jdGlvbiBuKCl7cmV0dXJuIGkud3JhcChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsdS5kZWZhdWx0LmdldCgiYXNzZXRzL2JhbGFuY2UvIi5jb25jYXQodCwiLyIpLmNvbmNhdChlKSx7YmFzZVVSTDpyLHZhbGlkYXRlU3RhdHVzOmd9KS50aGVuKHkpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGF0YS5iYWxhbmNlfSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0sbil9KSl9LHQuYWNjb3VudERhdGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYSh0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKGZ1bmN0aW9uIHIoKXt2YXIgbztyZXR1cm4gaS53cmFwKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix1LmRlZmF1bHQuZ2V0KCJhZGRyZXNzZXMvZGF0YS8iLmNvbmNhdChlKSx7YmFzZVVSTDp0LHZhbGlkYXRlU3RhdHVzOmd9KS50aGVuKHkpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGF0YX0pO2Nhc2UgMjpyZXR1cm4gbz1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsby5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxlLG4oe30sdC5rZXksdCkpfSx7fSkpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0scil9KSl9LHQuYWNjb3VudERhdGFCeUtleT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyayhmdW5jdGlvbiBuKCl7cmV0dXJuIGkud3JhcChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsdS5kZWZhdWx0LmdldCgiYWRkcmVzc2VzL2RhdGEvIi5jb25jYXQodCwiLyIpLmNvbmNhdChlKSx7YmFzZVVSTDpyLHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKGUpe3JldHVybiA0MDQ9PT1lfHxnKGUpfX0pLnRoZW4oeSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gNDA0PT09ZS5zdGF0dXM/bnVsbDplLmRhdGF9KSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSxuKX0pKX0sdC5zY3JpcHRJbmZvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyayhmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdS5kZWZhdWx0LmdldCgiYWRkcmVzc2VzL3NjcmlwdEluZm8vIi5jb25jYXQoZSkse2Jhc2VVUkw6dCx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXtyZXR1cm4gZyhlKX19KS50aGVuKHkpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGF0YX0pKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19LHIpfSkpfSx0LnN0YXRlQ2hhbmdlcz1mdW5jdGlvbihlLHQpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoZnVuY3Rpb24gcigpe3JldHVybiBpLndyYXAoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHUuZGVmYXVsdC5nZXQoImRlYnVnL3N0YXRlQ2hhbmdlcy9pbmZvLyIuY29uY2F0KGUpLHtiYXNlVVJMOnQsdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGcoZSl9fSkudGhlbih5KS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRhdGEmJmUuZGF0YS5zdGF0ZUNoYW5nZXN9KSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSxyKX0pKX0sdC5icm9hZGNhc3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdS5kZWZhdWx0LnBvc3QoInRyYW5zYWN0aW9ucy9icm9hZGNhc3QiLGMuanNvbi5zdHJpbmdpZnlUeChlKSx7YmFzZVVSTDp0LGhlYWRlcnM6eyJjb250ZW50LXR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sdmFsaWRhdGVTdGF0dXM6Z30pLnRoZW4oeSkudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZS5kYXRhfSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49ZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO3ZhciB0LHI9T2JqZWN0LnByb3RvdHlwZSxuPXIuaGFzT3duUHJvcGVydHksaT0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sbz1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsYT1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIHUoZSx0LHIsbil7dmFyIGk9dCYmdC5wcm90b3R5cGUgaW5zdGFuY2VvZiB5P3Q6eSxvPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLGE9bmV3IHgobnx8W10pO3JldHVybiBvLl9pbnZva2U9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWY7cmV0dXJuIGZ1bmN0aW9uKGksbyl7aWYobj09PWgpdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYobj09PXApe2lmKCJ0aHJvdyI9PT1pKXRocm93IG87cmV0dXJuIGsoKX1mb3Ioci5tZXRob2Q9aSxyLmFyZz1vOzspe3ZhciBhPXIuZGVsZWdhdGU7aWYoYSl7dmFyIHM9VChhLHIpO2lmKHMpe2lmKHM9PT1kKWNvbnRpbnVlO3JldHVybiBzfX1pZigibmV4dCI9PT1yLm1ldGhvZClyLnNlbnQ9ci5fc2VudD1yLmFyZztlbHNlIGlmKCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYobj09PWYpdGhyb3cgbj1wLHIuYXJnO3IuZGlzcGF0Y2hFeGNlcHRpb24oci5hcmcpfWVsc2UicmV0dXJuIj09PXIubWV0aG9kJiZyLmFicnVwdCgicmV0dXJuIixyLmFyZyk7bj1oO3ZhciB1PWMoZSx0LHIpO2lmKCJub3JtYWwiPT09dS50eXBlKXtpZihuPXIuZG9uZT9wOmwsdS5hcmc9PT1kKWNvbnRpbnVlO3JldHVybnt2YWx1ZTp1LmFyZyxkb25lOnIuZG9uZX19InRocm93Ij09PXUudHlwZSYmKG49cCxyLm1ldGhvZD0idGhyb3ciLHIuYXJnPXUuYXJnKX19fShlLHIsYSksb31mdW5jdGlvbiBjKGUsdCxyKXt0cnl7cmV0dXJue3R5cGU6Im5vcm1hbCIsYXJnOmUuY2FsbCh0LHIpfX1jYXRjaChuKXtyZXR1cm57dHlwZToidGhyb3ciLGFyZzpufX19ZS53cmFwPXU7dmFyIGY9InN1c3BlbmRlZFN0YXJ0IixsPSJzdXNwZW5kZWRZaWVsZCIsaD0iZXhlY3V0aW5nIixwPSJjb21wbGV0ZWQiLGQ9e307ZnVuY3Rpb24geSgpe31mdW5jdGlvbiBnKCl7fWZ1bmN0aW9uIHYoKXt9dmFyIG09e307bVtvXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt2YXIgYj1PYmplY3QuZ2V0UHJvdG90eXBlT2YsXz1iJiZiKGIoSShbXSkpKTtfJiZfIT09ciYmbi5jYWxsKF8sbykmJihtPV8pO3ZhciBTPXYucHJvdG90eXBlPXkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobSk7ZnVuY3Rpb24gRShlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goZnVuY3Rpb24odCl7ZVt0XT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9fSl9ZnVuY3Rpb24gdyhlKXt2YXIgdDt0aGlzLl9pbnZva2U9ZnVuY3Rpb24ocixpKXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQsbyl7IWZ1bmN0aW9uIHQocixpLG8sYSl7dmFyIHM9YyhlW3JdLGUsaSk7aWYoInRocm93IiE9PXMudHlwZSl7dmFyIHU9cy5hcmcsZj11LnZhbHVlO3JldHVybiBmJiYib2JqZWN0Ij09PXR5cGVvZiBmJiZuLmNhbGwoZiwiX19hd2FpdCIpP1Byb21pc2UucmVzb2x2ZShmLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24oZSl7dCgibmV4dCIsZSxvLGEpfSxmdW5jdGlvbihlKXt0KCJ0aHJvdyIsZSxvLGEpfSk6UHJvbWlzZS5yZXNvbHZlKGYpLnRoZW4oZnVuY3Rpb24oZSl7dS52YWx1ZT1lLG8odSl9LGZ1bmN0aW9uKGUpe3JldHVybiB0KCJ0aHJvdyIsZSxvLGEpfSl9YShzLmFyZyl9KHIsaSx0LG8pfSl9cmV0dXJuIHQ9dD90LnRoZW4obyxvKTpvKCl9fWZ1bmN0aW9uIFQoZSxyKXt2YXIgbj1lLml0ZXJhdG9yW3IubWV0aG9kXTtpZihuPT09dCl7aWYoci5kZWxlZ2F0ZT1udWxsLCJ0aHJvdyI9PT1yLm1ldGhvZCl7aWYoZS5pdGVyYXRvci5yZXR1cm4mJihyLm1ldGhvZD0icmV0dXJuIixyLmFyZz10LFQoZSxyKSwidGhyb3ciPT09ci5tZXRob2QpKXJldHVybiBkO3IubWV0aG9kPSJ0aHJvdyIsci5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZCIpfXJldHVybiBkfXZhciBpPWMobixlLml0ZXJhdG9yLHIuYXJnKTtpZigidGhyb3ciPT09aS50eXBlKXJldHVybiByLm1ldGhvZD0idGhyb3ciLHIuYXJnPWkuYXJnLHIuZGVsZWdhdGU9bnVsbCxkO3ZhciBvPWkuYXJnO3JldHVybiBvP28uZG9uZT8ocltlLnJlc3VsdE5hbWVdPW8udmFsdWUsci5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PXIubWV0aG9kJiYoci5tZXRob2Q9Im5leHQiLHIuYXJnPXQpLHIuZGVsZWdhdGU9bnVsbCxkKTpvOihyLm1ldGhvZD0idGhyb3ciLHIuYXJnPW5ldyBUeXBlRXJyb3IoIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0Iiksci5kZWxlZ2F0ZT1udWxsLGQpfWZ1bmN0aW9uIEEoZSl7dmFyIHQ9e3RyeUxvYzplWzBdfTsxIGluIGUmJih0LmNhdGNoTG9jPWVbMV0pLDIgaW4gZSYmKHQuZmluYWxseUxvYz1lWzJdLHQuYWZ0ZXJMb2M9ZVszXSksdGhpcy50cnlFbnRyaWVzLnB1c2godCl9ZnVuY3Rpb24gQyhlKXt2YXIgdD1lLmNvbXBsZXRpb258fHt9O3QudHlwZT0ibm9ybWFsIixkZWxldGUgdC5hcmcsZS5jb21wbGV0aW9uPXR9ZnVuY3Rpb24geChlKXt0aGlzLnRyeUVudHJpZXM9W3t0cnlMb2M6InJvb3QifV0sZS5mb3JFYWNoKEEsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gSShlKXtpZihlKXt2YXIgcj1lW29dO2lmKHIpcmV0dXJuIHIuY2FsbChlKTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUubmV4dClyZXR1cm4gZTtpZighaXNOYU4oZS5sZW5ndGgpKXt2YXIgaT0tMSxhPWZ1bmN0aW9uIHIoKXtmb3IoOysraTxlLmxlbmd0aDspaWYobi5jYWxsKGUsaSkpcmV0dXJuIHIudmFsdWU9ZVtpXSxyLmRvbmU9ITEscjtyZXR1cm4gci52YWx1ZT10LHIuZG9uZT0hMCxyfTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0Omt9fWZ1bmN0aW9uIGsoKXtyZXR1cm57dmFsdWU6dCxkb25lOiEwfX1yZXR1cm4gZy5wcm90b3R5cGU9Uy5jb25zdHJ1Y3Rvcj12LHYuY29uc3RydWN0b3I9Zyx2W3NdPWcuZGlzcGxheU5hbWU9IkdlbmVyYXRvckZ1bmN0aW9uIixlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ImZ1bmN0aW9uIj09PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yO3JldHVybiEhdCYmKHQ9PT1nfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KHQuZGlzcGxheU5hbWV8fHQubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx2KTooZS5fX3Byb3RvX189dixzIGluIGV8fChlW3NdPSJHZW5lcmF0b3JGdW5jdGlvbiIpKSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFMpLGV9LGUuYXdyYXA9ZnVuY3Rpb24oZSl7cmV0dXJue19fYXdhaXQ6ZX19LEUody5wcm90b3R5cGUpLHcucHJvdG90eXBlW2FdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUuQXN5bmNJdGVyYXRvcj13LGUuYXN5bmM9ZnVuY3Rpb24odCxyLG4saSl7dmFyIG89bmV3IHcodSh0LHIsbixpKSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKT9vOm8ubmV4dCgpLnRoZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9uZT9lLnZhbHVlOm8ubmV4dCgpfSl9LEUoUyksU1tzXT0iR2VuZXJhdG9yIixTW29dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LFMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0sZS5rZXlzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKXQucHVzaChyKTtyZXR1cm4gdC5yZXZlcnNlKCksZnVuY3Rpb24gcigpe2Zvcig7dC5sZW5ndGg7KXt2YXIgbj10LnBvcCgpO2lmKG4gaW4gZSlyZXR1cm4gci52YWx1ZT1uLHIuZG9uZT0hMSxyfXJldHVybiByLmRvbmU9ITAscn19LGUudmFsdWVzPUkseC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOngscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dCx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPSJuZXh0Iix0aGlzLmFyZz10LHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKEMpLCFlKWZvcih2YXIgciBpbiB0aGlzKSJ0Ij09PXIuY2hhckF0KDApJiZuLmNhbGwodGhpcyxyKSYmIWlzTmFOKCtyLnNsaWNlKDEpKSYmKHRoaXNbcl09dCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIGU9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgcj10aGlzO2Z1bmN0aW9uIGkobixpKXtyZXR1cm4gcy50eXBlPSJ0aHJvdyIscy5hcmc9ZSxyLm5leHQ9bixpJiYoci5tZXRob2Q9Im5leHQiLHIuYXJnPXQpLCEhaX1mb3IodmFyIG89dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO28+PTA7LS1vKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbb10scz1hLmNvbXBsZXRpb247aWYoInJvb3QiPT09YS50cnlMb2MpcmV0dXJuIGkoImVuZCIpO2lmKGEudHJ5TG9jPD10aGlzLnByZXYpe3ZhciB1PW4uY2FsbChhLCJjYXRjaExvYyIpLGM9bi5jYWxsKGEsImZpbmFsbHlMb2MiKTtpZih1JiZjKXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gaShhLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBpKGEuZmluYWxseUxvYyl9ZWxzZSBpZih1KXtpZih0aGlzLnByZXY8YS5jYXRjaExvYylyZXR1cm4gaShhLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFjKXRocm93IG5ldyBFcnJvcigidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHkiKTtpZih0aGlzLnByZXY8YS5maW5hbGx5TG9jKXJldHVybiBpKGEuZmluYWxseUxvYyl9fX19LGFicnVwdDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7cj49MDstLXIpe3ZhciBpPXRoaXMudHJ5RW50cmllc1tyXTtpZihpLnRyeUxvYzw9dGhpcy5wcmV2JiZuLmNhbGwoaSwiZmluYWxseUxvYyIpJiZ0aGlzLnByZXY8aS5maW5hbGx5TG9jKXt2YXIgbz1pO2JyZWFrfX1vJiYoImJyZWFrIj09PWV8fCJjb250aW51ZSI9PT1lKSYmby50cnlMb2M8PXQmJnQ8PW8uZmluYWxseUxvYyYmKG89bnVsbCk7dmFyIGE9bz9vLmNvbXBsZXRpb246e307cmV0dXJuIGEudHlwZT1lLGEuYXJnPXQsbz8odGhpcy5tZXRob2Q9Im5leHQiLHRoaXMubmV4dD1vLmZpbmFsbHlMb2MsZCk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24oZSx0KXtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiJicmVhayI9PT1lLnR5cGV8fCJjb250aW51ZSI9PT1lLnR5cGU/dGhpcy5uZXh0PWUuYXJnOiJyZXR1cm4iPT09ZS50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9ZS5hcmcsdGhpcy5tZXRob2Q9InJldHVybiIsdGhpcy5uZXh0PSJlbmQiKToibm9ybWFsIj09PWUudHlwZSYmdCYmKHRoaXMubmV4dD10KSxkfSxmaW5pc2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIuZmluYWxseUxvYz09PWUpcmV0dXJuIHRoaXMuY29tcGxldGUoci5jb21wbGV0aW9uLHIuYWZ0ZXJMb2MpLEMociksZH19LGNhdGNoOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7dD49MDstLXQpe3ZhciByPXRoaXMudHJ5RW50cmllc1t0XTtpZihyLnRyeUxvYz09PWUpe3ZhciBuPXIuY29tcGxldGlvbjtpZigidGhyb3ciPT09bi50eXBlKXt2YXIgaT1uLmFyZztDKHIpfXJldHVybiBpfX10aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUscixuKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6SShlKSxyZXN1bHROYW1lOnIsbmV4dExvYzpufSwibmV4dCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXQpLGR9fSxlfShlLmV4cG9ydHMpO3RyeXtyZWdlbmVyYXRvclJ1bnRpbWU9bn1jYXRjaChpKXtGdW5jdGlvbigiciIsInJlZ2VuZXJhdG9yUnVudGltZSA9IHIiKShuKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG4saT10aGlzJiZ0aGlzLl9fYXNzaWdufHxmdW5jdGlvbigpe3JldHVybihpPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTEsbj1hcmd1bWVudHMubGVuZ3RoO3I8bjtyKyspZm9yKHZhciBpIGluIHQ9YXJndW1lbnRzW3JdKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGkpJiYoZVtpXT10W2ldKTtyZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvLGE9cigzMSkscz1yKDMxKSx1PXIoMzkzKSxjPXIoMTY4KS5wcmVwYXJlLnByb2Nlc3NvcnMsZj1yKDIzNSksbD1hLmxpYnMubWFyc2hhbGwuc2VyaWFsaXplUHJpbWl0aXZlcyxoPWwuTEVOLHA9bC5TSE9SVCxkPWwuU1RSSU5HLHk9bC5MT05HLGc9bC5CQVNFNThfU1RSSU5HLHY9YS5saWJzLm1hcnNoYWxsLmJpbmFyeSxtPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dS50b05vZGUoZSk7cmV0dXJuIHIudGltZXN0YW1wPW5ldyBEYXRlKHIudGltZXN0YW1wKS5nZXRUaW1lKCksdD90KHIpOnJ9LGI9ZnVuY3Rpb24oZSl7dmFyIHQ9KGV8fCIiKS5yZXBsYWNlKCJiYXNlNjQ6IiwiIik7cmV0dXJuIHQ/ImJhc2U2NDoiK3Q6bnVsbH07IWZ1bmN0aW9uKGUpe2VbZS5TRU5EX09MRD0yXT0iU0VORF9PTEQiLGVbZS5JU1NVRT0zXT0iSVNTVUUiLGVbZS5UUkFOU0ZFUj00XT0iVFJBTlNGRVIiLGVbZS5SRUlTU1VFPTVdPSJSRUlTU1VFIixlW2UuQlVSTj02XT0iQlVSTiIsZVtlLkVYQ0hBTkdFPTddPSJFWENIQU5HRSIsZVtlLkxFQVNFPThdPSJMRUFTRSIsZVtlLkNBTkNFTF9MRUFTSU5HPTldPSJDQU5DRUxfTEVBU0lORyIsZVtlLkNSRUFURV9BTElBUz0xMF09IkNSRUFURV9BTElBUyIsZVtlLk1BU1NfVFJBTlNGRVI9MTFdPSJNQVNTX1RSQU5TRkVSIixlW2UuREFUQT0xMl09IkRBVEEiLGVbZS5TRVRfU0NSSVBUPTEzXT0iU0VUX1NDUklQVCIsZVtlLlNQT05TT1JTSElQPTE0XT0iU1BPTlNPUlNISVAiLGVbZS5TRVRfQVNTRVRfU0NSSVBUPTE1XT0iU0VUX0FTU0VUX1NDUklQVCIsZVtlLlNDUklQVF9JTlZPQ0FUSU9OPTE2XT0iU0NSSVBUX0lOVk9DQVRJT04ifSh0LlRSQU5TQUNUSU9OX1RZUEVfTlVNQkVSfHwodC5UUkFOU0FDVElPTl9UWVBFX05VTUJFUj17fSkpLGZ1bmN0aW9uKGUpe2VbZS5BVVRIPTFlM109IkFVVEgiLGVbZS5NQVRDSEVSX09SREVSUz0xMDAxXT0iTUFUQ0hFUl9PUkRFUlMiLGVbZS5DUkVBVEVfT1JERVI9MTAwMl09IkNSRUFURV9PUkRFUiIsZVtlLkNBTkNFTF9PUkRFUj0xMDAzXT0iQ0FOQ0VMX09SREVSIixlW2UuQ09JTk9NQVRfQ09ORklSTUFUSU9OPTEwMDRdPSJDT0lOT01BVF9DT05GSVJNQVRJT04iLGVbZS5JU1NVRT0zXT0iSVNTVUUiLGVbZS5UUkFOU0ZFUj00XT0iVFJBTlNGRVIiLGVbZS5SRUlTU1VFPTVdPSJSRUlTU1VFIixlW2UuQlVSTj02XT0iQlVSTiIsZVtlLkVYQ0hBTkdFPTddPSJFWENIQU5HRSIsZVtlLkxFQVNFPThdPSJMRUFTRSIsZVtlLkNBTkNFTF9MRUFTSU5HPTldPSJDQU5DRUxfTEVBU0lORyIsZVtlLkNSRUFURV9BTElBUz0xMF09IkNSRUFURV9BTElBUyIsZVtlLk1BU1NfVFJBTlNGRVI9MTFdPSJNQVNTX1RSQU5TRkVSIixlW2UuREFUQT0xMl09IkRBVEEiLGVbZS5TRVRfU0NSSVBUPTEzXT0iU0VUX1NDUklQVCIsZVtlLlNQT05TT1JTSElQPTE0XT0iU1BPTlNPUlNISVAiLGVbZS5TRVRfQVNTRVRfU0NSSVBUPTE1XT0iU0VUX0FTU0VUX1NDUklQVCIsZVtlLlNDUklQVF9JTlZPQ0FUSU9OPTE2XT0iU0NSSVBUX0lOVk9DQVRJT04ifShvPXQuU0lHTl9UWVBFfHwodC5TSUdOX1RZUEU9e30pKTt2YXIgXz1mdW5jdGlvbihlKXt2YXIgdD1lLm9yZGVySWQscj1lLmlkLG49ZS5zZW5kZXJQdWJsaWNLZXksaT1lLnNlbmRlcixvPWcobnx8aSksYT1nKHJ8fHQpO3JldHVybiBVaW50OEFycmF5LmZyb20oQXJyYXkuZnJvbShvKS5jb25jYXQoQXJyYXkuZnJvbShhKSkpfTt0LlNJR05fVFlQRVM9KChuPXt9KVtvLkFVVEhdPXtnZXRCeXRlczp7MTpmdW5jdGlvbihlKXt2YXIgdD1lLmhvc3Qscj1lLmRhdGEsbj1oKHApKGQpKCJXYXZlc1dhbGxldEF1dGhlbnRpY2F0aW9uIiksaT1oKHApKGQpKHR8fCIiKSxvPWgocCkoZCkocnx8IiIpO3JldHVybiBVaW50OEFycmF5LmZyb20oQXJyYXkuZnJvbShuKS5jb25jYXQoQXJyYXkuZnJvbShpKSxBcnJheS5mcm9tKG8pKSl9fSxhZGFwdGVyOiJzaWduUmVxdWVzdCJ9LG5bby5DT0lOT01BVF9DT05GSVJNQVRJT05dPXtnZXRCeXRlczp7MTpmdW5jdGlvbihlKXt2YXIgdD1lLnRpbWVzdGFtcCxyPWUucHJlZml4LG49aChwKShkKShyKSxpPXkodCk7cmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShBcnJheS5mcm9tKG4="
}