Lyog64+E66mU7J24IOyEoO2DnSDqtIDroKggKi8KZnVuY3Rpb24gb3BlbkRvbWFpbk1vZGFsKCkgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RvbWFpbk1vZGFsJykuc3R5bGUuZGlzcGxheSA9ICfmbGV4JzsKICAgIGxvYWREb21haW5DYXRlZ29yaWVzKCk7Cn0KCmZ1bmN0aW9uIGNsb3NlRG9tYWluTW9kYWwoKSB7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG9tYWluTW9kYWwnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwp9CgpmdW5jdGlvbiBsb2FkRG9tYWluQ2F0ZWdvcmllcygpIHsKICAgIGZldGNoKCcvYXBpL2RvbWFpbi1jYXRlZ29yaWVzJykKICAgIC50aGVuKHIgPT4gci5qc29uKCkpCiAgICAudGhlbihkYXRhID0+IHsKICAgICAgICByZW5kZXJEb21haW5DYXRlZ29yaWVzKGRhdGEpOwogICAgfSk7Cn0KCmZ1bmN0aW9uIHJlbmRlckRvbWFpbkNhdGVnb3JpZXMoY2F0ZWdvcmllcykgewogICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RvbWFpbkNhdGVnb3J5TGlzdCcpOwogICAgY29udGFpbmVyLmlubmVySFRNTCA9IGNhdGVnb3JpZXMubWFwKGNhdCA9PgogICAgICAgIGA8ZGl2IGNsYXNzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhdGVnb3J5LW5hbWUiPiR7Y2F0Lm5hbWV9PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvbWFpbi1saXN0Ij4KICAgICAgICAgICAgICAgICR7Y2F0LmRvbWFpbnMubWFwKGRvbSA9PgogICAgICAgICAgICAgICAgICAgIGA8ZGl2IGNsYXNzPSJkb21haW4taXRlbSIgb25jbGljaz0idG9nZ2xlRG9tYWluKCcke2RvbS5pZH0nKSI+JHtkb20ubmFtZX08L2Rpdj5gCiAgICAgICAgICAgICAgICApLmpvaW4oJycpfQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj5gCiAgICApLmpvaW4oJycpOwp9Cgo=