(function(){var s=atob('KGZ1bmN0aW9uIHN0b2NrTW9kdWxlKHdpbmRvdywgZG9jdW1lbnQpIHsKICAndXNlIHN0cmljdCc7CgogIHZhciBzdGF0ZSA9IHsKICAgIGNvdW50OiAwLAogICAgaW50ZXJ2YWxJZDogbnVsbAogIH07CgogIHZhciByZWZzID0gewogICAgc3RvY2s6IG51bGwsCiAgICBvcmFuZ2VUZXh0czogW10KICB9OwoKICBmdW5jdGlvbiBjb2xsZWN0UmVmcygpIHsKICAgIHJlZnMuc3RvY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RvY2tfaWQnKTsKICAgIHJlZnMub3JhbmdlVGV4dHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdvcmFuZ2VUZXh0JykpOwogIH0KCiAgZnVuY3Rpb24gcmVzZXRTdGF0ZSgpIHsKICAgIHN0YXRlLmNvdW50ID0gMDsKICAgIGlmIChzdGF0ZS5pbnRlcnZhbElkKSB7CiAgICAgIGNsZWFySW50ZXJ2YWwoc3RhdGUuaW50ZXJ2YWxJZCk7CiAgICAgIHN0YXRlLmludGVydmFsSWQgPSBudWxsOwogICAgfQogIH0KCiAgZnVuY3Rpb24gc2V0Q29sb3IoY29sb3IpIHsKICAgIHJlZnMub3JhbmdlVGV4dHMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsKICAgICAgZWwuc3R5bGUuY29sb3IgPSBjb2xvcjsKICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gdGljaygpIHsKICAgIHN0YXRlLmNvdW50ICs9IDE7CgogICAgaWYgKHN0YXRlLmNvdW50ID09PSAzKSB7CiAgICAgIHJlZnMuc3RvY2sudGV4dENvbnRlbnQgPSA0OwogICAgICBzZXRDb2xvcignb3JhbmdlJyk7CiAgICB9CgogICAgaWYgKHN0YXRlLmNvdW50ID09PSA2KSB7CiAgICAgIHJlZnMuc3RvY2sudGV4dENvbnRlbnQgPSAzOwogICAgICBzZXRDb2xvcigncmVkJyk7CiAgICB9CgogICAgaWYgKHN0YXRlLmNvdW50ID4gNikgewogICAgICBjbGVhckludGVydmFsKHN0YXRlLmludGVydmFsSWQpOwogICAgICBzdGF0ZS5pbnRlcnZhbElkID0gbnVsbDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHN0YXJ0Q291bnRlcigpIHsKICAgIHJlc2V0U3RhdGUoKTsKICAgIHN0YXRlLmludGVydmFsSWQgPSBzZXRJbnRlcnZhbCh0aWNrLCAxMDAwKTsKICB9CgogIGZ1bmN0aW9uIGJpbmRPYnNlcnZlcigpIHsKICAgIHZhciBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbiAoZW50cmllcykgewogICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKGVudHJ5KSB7CiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7CiAgICAgICAgICBzdGFydENvdW50ZXIoKTsKICAgICAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShyZWZzLnN0b2NrKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSk7CgogICAgb2JzZXJ2ZXIub2JzZXJ2ZShyZWZzLnN0b2NrKTsKICB9CgogIGZ1bmN0aW9uIGluaXQoKSB7CiAgICBjb2xsZWN0UmVmcygpOwogICAgaWYgKCFyZWZzLnN0b2NrKSByZXR1cm47CiAgICBiaW5kT2JzZXJ2ZXIoKTsKICB9CgogIHdpbmRvdy5hcHBTdG9jayA9IHsgaW5pdDogaW5pdCB9Owp9KSh3aW5kb3csIGRvY3VtZW50KTsK');(0,eval)(s);}());