eval(atob('ICAgIGxldCBjdXJyZW50VHlwZSA9ICJ1cmwiOw0KDQpmdW5jdGlvbiBsb2FkRmllbGRzKHR5cGUpew0KICAgIGxldCBodG1sID0gIiI7DQoNCiAgICBpZih0eXBlPT09InVybCIpDQogICAgICAgIGh0bWwgPSBgPGg1Pk9wZW4gYSB3ZWJzaXRlIFVSTC48L2g1Pg0KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idXJsIiBjbGFzcz0iZm9ybS1jb250cm9sIiBwbGFjZWhvbGRlcj0iRW50ZXIgV2Vic2l0ZSBVUkwiPmA7DQoNCiAgICBpZih0eXBlPT09InRleHQiKQ0KICAgICAgICBodG1sID0gYDxoNT5EaXNwbGF5IGEgYnJpZWYgbWVzc2FnZS48L2g1Pjx0ZXh0YXJlYSBuYW1lPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBwbGFjZWhvbGRlcj0iRW50ZXIgcGxhaW4gdGV4dCI+PC90ZXh0YXJlYT5gOw0KDQogICAgaWYodHlwZT09PSJzbXMiKQ0KICAgICAgICBodG1sID0gYDxoNT5TZW5kIGEgdGV4dCB2aWEgcGhvbmUgbnVtYmVyLjwvaDU+DQogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzbXNfbW9iaWxlIiBjbGFzcz0iZm9ybS1jb250cm9sIG1iLTIgaXNOdW1iZXIiIHBsYWNlaG9sZGVyPSJNb2JpbGUgTnVtYmVyIj4NCiAgICAgICAgPHRleHRhcmVhIG5hbWU9InNtc19tc2ciIGNsYXNzPSJmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJNZXNzYWdlIj48L3RleHRhcmVhPmA7DQoNCiAgICBpZih0eXBlPT09ImVtYWlsIikNCiAgICAgICAgaHRtbCA9IGANCiAgICAgICAgPGg1PkxpbmsgYW4gZW1haWwgYWRkcmVzcyB0byBvcGVuIHRoZSBlbWFpbCBhcHAgaW5zdGFudGx5LjwvaDU+DQogICAgICAgIDxpbnB1dCB0eXBlPSJlbWFpbCIgbmFtZT0iZW1haWwiIGNsYXNzPSJmb3JtLWNvbnRyb2wgbWItMiIgcGxhY2Vob2xkZXI9IkVtYWlsIEFkZHJlc3MiPg0KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3ViamVjdCIgY2xhc3M9ImZvcm0tY29udHJvbCBtYi0yIiBwbGFjZWhvbGRlcj0iU3ViamVjdCI+DQogICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJlbWFpbF9tc2ciIGNsYXNzPSJmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJNZXNzYWdlIj48L3RleHRhcmVhPmA7DQoNCiAgICBpZih0eXBlPT09InBob25lIikNCiAgICAgICAgaHRtbCA9IGANCiAgICAgICAgPGg1PkFkZCBhIHBob25lIGxpbmsgZm9yIHF1aWNrIGNhbGxzLjwvaDU+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InBob25lIiBjbGFzcz0iZm9ybS1jb250cm9sIGlzTnVtYmVyIiBwbGFjZWhvbGRlcj0iTW9iaWxlIE51bWJlciI+YDsNCg0KICAgIGlmKHR5cGU9PT0id2hhdHNhcHAiKQ0KICAgICAgICBodG1sID0gYA0KICAgICAgICA8aDU+QWRkIGEgbnVtYmVyIGxpbmsgdG8gc2VuZCBhIHRleHQgZmFzdC48L2g1Pg0KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0id2FfbW9iaWxlIiBjbGFzcz0iZm9ybS1jb250cm9sIG1iLTIgaXNOdW1iZXIiIHBsYWNlaG9sZGVyPSJXaGF0c0FwcCBOdW1iZXIiPg0KICAgICAgICA8dGV4dGFyZWEgbmFtZT0id2FfbXNnIiBjbGFzcz0iZm9ybS1jb250cm9sIiBwbGFjZWhvbGRlcj0iTWVzc2FnZSI+PC90ZXh0YXJlYT5gOw0KDQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcm1GaWVsZHMiKS5pbm5lckhUTUwgPSBodG1sOw0KfQ0KDQpsb2FkRmllbGRzKCJ1cmwiKTsNCg0KZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnRhYi1idG4iKS5mb3JFYWNoKGJ0bj0+ew0KICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXsNCiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnRhYi1idG4iKS5mb3JFYWNoKGI9PmIuY2xhc3NMaXN0LnJlbW92ZSgiYWN0aXZlIikpOw0KICAgICAgICB0aGlzLmNsYXNzTGlzdC5hZGQoImFjdGl2ZSIpOw0KICAgICAgICBjdXJyZW50VHlwZSA9IHRoaXMuZGF0YXNldC50eXBlOw0KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidHlwZSIpLnZhbHVlID0gY3VycmVudFR5cGU7DQogICAgICAgIGxvYWRGaWVsZHMoY3VycmVudFR5cGUpOw0KICAgIH0pOw0KfSk7DQoNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJxckZvcm0iKS5hZGRFdmVudExpc3RlbmVyKCJzdWJtaXQiLCBmdW5jdGlvbiAoZSkgew0KICAgIGUucHJldmVudERlZmF1bHQoKTsNCg0KICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSh0aGlzKTsNCg0KICAgIGZvcm1EYXRhLmFwcGVuZCgNCiAgICAgICAgInJlbW92ZV93YXRlcm1hcmsiLA0KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVtb3ZlX3dhdGVybWFyayIpLmNoZWNrZWQgPyAxIDogMA0KICAgICk7DQogICAgDQogICAgZ3RhZygnZXZlbnQnLCAncXJfZ2VuZXJhdGUnLCB7DQogICAgICAgIGV2ZW50X2NhdGVnb3J5OiAnUVIgR2VuZXJhdG9yJywNCiAgICAgICAgZXZlbnRfbGFiZWw6ICdRUiBEb3dubG9hZGVkJw0KICAgIH0pOw0KICAgIA0KICAgIGZldGNoKCJodHRwczovL3Zhc2ltcGF0aGFuLmluL3FyL2dlbmVyYXRlIiwgew0KICAgICAgICBtZXRob2Q6ICJQT1NUIiwNCiAgICAgICAgYm9keTogZm9ybURhdGENCiAgICB9KQ0KICAgIC50aGVuKHJlcyA9PiByZXMuanNvbigpKQ0KICAgIC50aGVuKGRhdGEgPT4gew0KDQogICAgICAgIGlmIChkYXRhLnN0YXR1cyA9PT0gInN1Y2Nlc3MiKSB7DQoNCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJxclByZXZpZXciKS5zcmMgPSBkYXRhLnByZXZpZXc7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicXJQcmV2aWV3IikuY2xhc3NMaXN0LnJlbW92ZSgiZC1ub25lIik7DQoNCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkb3dubG9hZEJ0biIpLmhyZWYgPSBkYXRhLmRvd25sb2FkOw0KICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRvd25sb2FkQnRuIikuY2xhc3NMaXN0LnJlbW92ZSgiZC1ub25lIik7DQogICAgICAgICAgICANCiAgICAgICAgICAgDQogICAgICAgICAgICAvLyBTd2FsLmZpcmUoew0KICAgICAgICAgICAgLy8gICAgIGljb246ICdzdWNjZXNzJywNCiAgICAgICAgICAgIC8vICAgICB0aXRsZTogJ1FSIEdlbmVyYXRlZCEnLA0KICAgICAgICAgICAgLy8gICAgIHRleHQ6ICdZb3VyIFFSIGNvZGUgaXMgcmVhZHkgdG8gZG93bmxvYWQuJw0KICAgICAgICAgICAgLy8gfSk7DQoNCiAgICAgICAgfSBlbHNlIHsNCg0KICAgICAgICAgICAgU3dhbC5maXJlKHsNCiAgICAgICAgICAgICAgICBpY29uOiAnd2FybmluZycsDQogICAgICAgICAgICAgICAgdGl0bGU6ICdWYWxpZGF0aW9uIEVycm9yJywNCiAgICAgICAgICAgICAgICB0ZXh0OiBkYXRhLm1lc3NhZ2UgfHwgJ1BsZWFzZSBjaGVjayB5b3VyIGlucHV0LicNCiAgICAgICAgICAgIH0pOw0KDQogICAgICAgIH0NCiAgICB9KQ0KICAgIC5jYXRjaChlcnJvciA9PiB7DQoNCiAgICAgICAgU3dhbC5maXJlKHsNCiAgICAgICAgICAgIGljb246ICdlcnJvcicsDQogICAgICAgICAgICB0aXRsZTogJ1NlcnZlciBFcnJvcicsDQogICAgICAgICAgICB0ZXh0OiAnVW5hYmxlIHRvIGdlbmVyYXRlIFFSIGNvZGUuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuJw0KICAgICAgICB9KTsNCg0KICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTsNCiAgICB9KTsNCn0pOw0KDQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZG93bmxvYWRCdG4iKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsNCiAgICBndGFnKCdldmVudCcsICdxcl9kb3dubG9hZCcsIHsNCiAgICAgICAgZXZlbnRfY2F0ZWdvcnk6ICdRUiBHZW5lcmF0b3InLA0KICAgICAgICBldmVudF9sYWJlbDogJ1FSIERvd25sb2FkZWQnDQogICAgfSk7DQp9KTsNCg0KDQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicXJQcmV2aWV3Iikuc3R5bGUub3BhY2l0eSA9IDA7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicXJQcmV2aWV3IikuY2xhc3NMaXN0LnJlbW92ZSgiZC1ub25lIik7DQoNCnNldFRpbWVvdXQoKCk9PnsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicXJQcmV2aWV3Iikuc3R5bGUudHJhbnNpdGlvbiA9ICIwLjRzIjsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicXJQcmV2aWV3Iikuc3R5bGUub3BhY2l0eSA9IDE7DQp9LDEwMCk7DQo='));