Transaction

047657184e86fb5ac7c2b83a8fb84ecd5eabb42e7d2cf36fcedddbdec1c1cdc4
Timestamp (utc)
2025-10-22 13:14:54
Fee Paid
0.00000420 BSV
(
0.00001405 BSV
-
0.00000985 BSV
)
Fee Rate
13.11 sat/KB
Version
1
Confirmations
17,903
Size Stats
32,024 B

2 Outputs

Total Output:
0.00000985 BSV
  • jMI|{"name":"ChainDisk","timestamp":1761138444467,"files":[{"name":"BSVChatIL1I.html","size":23764,"type":"text/html","content":"KGZ1bmN0aW9uKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIC8vIE15QlNWLmlvIEZPVU5EQVRJT04KICAvLyBVbml2ZXJzYWwgcGxhdGZvcm0gdGhhdCBsb29rcyBsaWtlIGEgd2Vic2l0ZSBidXQgaGFzIGZ1bGwgd2FsbGV0IGNhcGFiaWxpdHkKICAvLyBBcHBzIGFyZSBsb2FkZWQgb24tZGVtYW5kIHRocm91Z2ggdGhlIEdhdGV3YXkgSHViCiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICBjb25zb2xlLmxvZygn8J+agCBNeUJTVi5pbyBGb3VuZGF0aW9uIGluaXRpYWxpemluZy4uLicpOwoKICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgLy8gQ09ORklHVVJBVElPTgogIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAKICBjb25zdCBDT05GSUcgPSB7CiAgICBQTEFURk9STV9OQU1FOiAnTXlCU1YuaW8nLAogICAgU0VOVElORUxfQUREUkVTUzogIjFIV3JaSlVtVllvRkZXTGtTNFFQS1dacmY0NUhHc1dvYlciLAogICAgU1RPUkFHRV9LRVlTOiB7CiAgICAgIFdBTExFVF9BRERSRVNTOiAnd2FsbGV0QWRkcmVzcycsCiAgICAgIFdBTExFVF9CQUxBTkNFOiAnd2FsbGV0QmFsYW5jZScsCiAgICAgIENVUlJFTlRfQVBQOiAnbXlic3ZfY3VycmVudF9hcHAnCiAgICB9CiAgfTsKCiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIC8vIE15QlNWIFBMQVRGT1JNIC0gTWFpbiBDb250YWluZXIKICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgCiAgY2xhc3MgTXlCU1ZQbGF0Zm9ybSB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgdGhpcy5hcHBzID0gbmV3IE1hcCgpOwogICAgICB0aGlzLmN1cnJlbnRBcHAgPSBudWxsOwogICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgIH0KCiAgICBhc3luYyBpbml0aWFsaXplKCkgewogICAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSByZXR1cm47CiAgICAgIAogICAgICBjb25zb2xlLmxvZygnW015QlNWXSBJbml0aWFsaXppbmcgcGxhdGZvcm0uLi4nKTsKICAgICAgCiAgICAgIC8vIEhpZGUgdGhlIHdhbGxldCBjb21wbGV0ZWx5CiAgICAgIHRoaXMuaGlkZVdhbGxldCgpOwogICAgICAKICAgICAgLy8gSW5qZWN0IHRoZSBtYWluIFVJCiAgICAgIHRoaXMuaW5qZWN0VUkoKTsKICAgICAgdGhpcy5pbmplY3RTdHlsZXMoKTsKICAgICAgCiAgICAgIC8vIFNldHVwIGV2ZW50IGxpc3RlbmVycwogICAgICB0aGlzLnNldHVwRXZlbnRMaXN0ZW5lcnMoKTsKICAgICAgCiAgICAgIC8vIENoZWNrIHdhbGxldCBzdGF0dXMKICAgICAgdGhpcy5jaGVja1dhbGxldFN0YXR1cygpOwogICAgICAKICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTsKICAgICAgY29uc29sZS5sb2coJ1tNeUJTVl0gUGxhdGZvcm0gcmVhZHknKTsKICAgIH0KCiAgICBoaWRlV2FsbGV0KCkgewogICAgICBjb25zdCB3YWxsZXRDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcud2FsbGV0LWNvbnRhaW5lcicpOwogICAgICBpZiAod2FsbGV0Q29udGFpbmVyKSB7CiAgICAgICAgd2FsbGV0Q29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIH0KICAgIH0KCiAgICBjaGVja1dhbGxldFN0YXR1cygpIHsKICAgICAgY29uc3QgYWRkcmVzcyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKENPTkZJRy5TVE9SQUdFX0tFWVMuV0FMTEVUX0FERFJFU1MpOwogICAgICBjb25zdCBzdGF0dXNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3YWxsZXRTdGF0dXMnKTsKICAgICAgCiAgICAgIGlmIChhZGRyZXNzKSB7CiAgICAgICAgaWYgKHN0YXR1c0VsKSB7CiAgICAgICAgICBzdGF0dXNFbC5pbm5lckhUTUwgPSBgCiAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogIzQzZTk3YjsiPuKXjzwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJweDsiPiR7YWRkcmVzcy5zdWJzdHJpbmcoMCwgOCl9Li4uJHthZGRyZXNzLnN1YnN0cmluZyhhZGRyZXNzLmxlbmd0aCAtIDYpfTwvc3Bhbj4KICAgICAgICAgIGA7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGlmIChzdGF0dXNFbCkgewogICAgICAgICAgc3RhdHVzRWwuaW5uZXJIVE1MID0gYAogICAgICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6ICNlNzRjM2M7Ij7il488L3NwYW4+CiAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7Ij5ObyBXYWxsZXQ8L3NwYW4+CiAgICAgICAgICBgOwogICAgICAgIH0KICAgICAgfQogICAgICAKICAgICAgLy8gQ2hlY2sgZXZlcnkgMiBzZWNvbmRzCiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jaGVja1dhbGxldFN0YXR1cygpLCAyMDAwKTsKICAgIH0KCiAgICByZWdpc3RlckFwcChhcHApIHsKICAgICAgdGhpcy5hcHBzLnNldChhcHAuaWQsIGFwcCk7CiAgICAgIGNvbnNvbGUubG9nKGBbTXlCU1ZdIFJlZ2lzdGVyZWQgYXBwOiAke2FwcC5uYW1lfWApOwogICAgfQoKICAgIGFzeW5jIGxvYWRBcHAoYXBwSWQpIHsKICAgICAgY29uc29sZS5sb2coYFtNeUJTVl0gTG9hZGluZyBhcHA6ICR7YXBwSWR9YCk7CiAgICAgIAogICAgICAvLyBDbG9zZSBjdXJyZW50IGFwcCBpZiBhbnkKICAgICAgaWYgKHRoaXMuY3VycmVudEFwcCkgewogICAgICAgIHRoaXMuY3VycmVudEFwcC5kZWFjdGl2YXRlKCk7CiAgICAgIH0KCiAgICAgIC8vIEdldCBvciBjcmVhdGUgYXBwIGluc3RhbmNlCiAgICAgIGxldCBhcHAgPSB0aGlzLmFwcHMuZ2V0KGFwcElkKTsKICAgICAgCiAgICAgIGlmICghYXBwKSB7CiAgICAgICAgY29uc29sZS5lcnJvcihgW015QlNWXSBBcHAgbm90IGZvdW5kOiAke2FwcElkfWApOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgLy8gQWN0aXZhdGUgdGhlIGFwcAogICAgICB0aGlzLmN1cnJlbnRBcHAgPSBhcHA7CiAgICAgIGF3YWl0IGFwcC5hY3RpdmF0ZSgpOwogICAgICAKICAgICAgLy8gU3RvcmUgY3VycmVudCBhcHAKICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oQ09ORklHLlNUT1JBR0VfS0VZUy5DVVJSRU5UX0FQUCwgYXBwSWQpOwogICAgfQoKICAgIHNldHVwRXZlbnRMaXN0ZW5lcnMoKSB7CiAgICAgIC8vIEh1YiBidXR0b24KICAgICAgY29uc3QgaHViQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29wZW5IdWJCdG4nKTsKICAgICAgaWYgKGh1YkJ0bikgewogICAgICAgIGh1YkJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHsKICAgICAgICAgIGlmICh3aW5kb3cuR2F0ZXdheUFwcHNIdWIgJiYgd2luZG93LkdhdGV3YXlBcHBzSHViLm9wZW5IdWIpIHsKICAgICAgICAgICAgd2luZG93LkdhdGV3YXlBcHBzSHViLm9wZW5IdWIoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGFsZXJ0KCdHYXRld2F5IEh1YiBpcyBsb2FkaW5nLi4uJyk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIC8vIFdhbGxldCBidXR0b24KICAgICAgY29uc3Qgd2FsbGV0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29wZW5XYWxsZXRCdG4nKTsKICAgICAgaWYgKHdhbGxldEJ0bikgewogICAgICAgIHdhbGxldEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHsKICAgICAgICAgIHRoaXMudG9nZ2xlV2FsbGV0VmlldygpOwogICAgICAgIH0pOwogICAgICB9CiAgICB9CgogICAgdG9nZ2xlV2FsbGV0VmlldygpIHsKICAgICAgY29uc3Qgd2FsbGV0Q29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLndhbGxldC1jb250YWluZXInKTsKICAgICAgY29uc3QgcGxhdGZvcm1PdmVybGF5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215YnN2UGxhdGZvcm1PdmVybGF5Jyk7CiAgICAgIAogICAgICBpZiAod2FsbGV0Q29udGFpbmVyICYmIHBsYXRmb3JtT3ZlcmxheSkgewogICAgICAgIGlmIChwbGF0Zm9ybU92ZXJsYXkuc3R5bGUuZGlzcGxheSA9PT0gJ25vbmUnKSB7CiAgICAgICAgICAvLyBTaG93IHBsYXRmb3JtLCBoaWRlIHdhbGxldAogICAgICAgICAgcGxhdGZvcm1PdmVybGF5LnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7CiAgICAgICAgICB3YWxsZXRDb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gU2hvdyB3YWxsZXQsIGhpZGUgcGxhdGZvcm0KICAgICAgICAgIHBsYXRmb3JtT3ZlcmxheS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgd2FsbGV0Q29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHNob3dXZWxjb21lKCkgewogICAgICBjb25zdCBjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcENvbnRlbnRBcmVhJyk7CiAgICAgIGlmICghY29udGVudCkgcmV0dXJuOwoKICAgICAgY29udGVudC5pbm5lckhUTUwgPSBgCiAgICAgICAgPGRpdiBzdHlsZT0iCiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgIj4KICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogODBweDsgbWFyZ2luLWJvdHRvbTogMzBweDsiPvCfjJA8L2Rpdj4KICAgICAgICAgIDxoMSBzdHlsZT0ibWFyZ2luOiAwIDAgMjBweCAwOyBmb250LXNpemU6IDQ4cHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiAjZmZmOyI+CiAgICAgICAgICAgIFdlbGNvbWUgdG8gTXlCU1YuaW8KICAgICAgICAgIDwvaDE+CiAgICAgICAgICA8cCBzdHlsZT0ibWFyZ2luOiAwIDAgNDBweCAwOyBmb250LXNpemU6IDE4cHg7IGNvbG9yOiAjOGI5NmE1OyBtYXgtd2lkdGg6IDYwMHB4OyBsaW5lLWhlaWdodDogMS42OyI+CiAgICAgICAgICAgIFlvdXIgZGVjZW50cmFsaXplZCBwbGF0Zm9ybSBwb3dlcmVkIGJ5IEJpdGNvaW4gU1YuIEFjY2VzcyBhcHBzLCBtYW5hZ2UgeW91ciB3YWxsZXQsIGFuZCBjb25uZWN0IHdpdGggdGhlIGJsb2NrY2hhaW4gZWNvc3lzdGVtLgogICAgICAgICAgPC9wPgogICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgZ2FwOiAyMHB4OyBmbGV4LXdyYXA6IHdyYXA7IGp1c3RpZnktY29udGVudDogY2VudGVyOyI+CiAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0id2luZG93Lk15QlNWUGxhdGZvcm0ub3Blbkh1YigpIiBzdHlsZT0iCiAgICAgICAgICAgICAgcGFkZGluZzogMTZweCAzMnB4OwogICAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM0M2U5N2IgMCUsICMzOGY5ZDcgMTAwJSk7CiAgICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgICAgY29sb3I6ICMwMDA7CiAgICAgICAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSg2NywgMjMzLCAxMjMsIDAuMyk7CiAgICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnM7CiAgICAgICAgICAgICIgb25tb3VzZW92ZXI9InRoaXMuc3R5bGUudHJhbnNmb3JtPSd0cmFuc2xhdGVZKC0ycHgpJyIgb25tb3VzZW91dD0idGhpcy5zdHlsZS50cmFuc2Zvcm09J3RyYW5zbGF0ZVkoMCknIj4KICAgICAgICAgICAgICDwn5OxIE9wZW4gQXBwIEh1YgogICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJ3aW5kb3cuTXlCU1ZQbGF0Zm9ybS50b2dnbGVXYWxsZXRWaWV3KCkiIHN0eWxlPSIKICAgICAgICAgICAgICBwYWRkaW5nOiAxNnB4IDMycHg7CiAgICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzY2N2VlYSAwJSwgIzc2NGJhMiAxMDAlKTsKICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMyk7CiAgICAgICAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnM7CiAgICAgICAgICAgICIgb25tb3VzZW92ZXI9InRoaXMuc3R5bGUudHJhbnNmb3JtPSd0cmFuc2xhdGVZKC0ycHgpJyIgb25tb3VzZW91dD0idGhpcy5zdHlsZS50cmFuc2Zvcm09J3RyYW5zbGF0ZVkoMCknIj4KICAgICAgICAgICAgICDwn5KwIFZpZXcgV2FsbGV0CiAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICAKICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6IDYwcHg7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjUwcHgsIDFmcikpOyBnYXA6IDIwcHg7IG1heC13aWR0aDogOTAwcHg7IHdpZHRoOiAxMDAlOyI+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wNSk7IHBhZGRpbmc6IDI0cHg7IGJvcmRlci1yYWRpdXM6IDEycHg7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKTsiPgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMzZweDsgbWFyZ2luLWJvdHRvbTogMTJweDsiPvCfkqw8L2Rpdj4KICAgICAgICAgICAgICA8aDMgc3R5bGU9Im1hcmdpbjogMCAwIDhweCAwOyBjb2xvcjogI2ZmZjsgZm9udC1zaXplOiAxOHB4OyI+Q2hhdCAmIFNvY2lhbDwvaDM+CiAgICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMDsgY29sb3I6ICM4Yjk2YTU7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDEuNDsiPkNvbm5lY3Qgd2l0aCB0aGUgY29tbXVuaXR5IHRocm91Z2ggZGVjZW50cmFsaXplZCBjaGF0IHJvb21zPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wNSk7IHBhZGRpbmc6IDI0cHg7IGJvcmRlci1yYWRpdXM6IDEycHg7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKTsiPgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMzZweDsgbWFyZ2luLWJvdHRvbTogMTJweDsiPvCfj6I8L2Rpdj4KICAgICAgICAgICAgICA8aDMgc3R5bGU9Im1hcmdpbjogMCAwIDhweCAwOyBjb2xvcjogI2ZmZjsgZm9udC1zaXplOiAxOHB4OyI+RW50ZXJwcmlzZSBUb29sczwvaDM+CiAgICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMDsgY29sb3I6ICM4Yjk2YTU7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDEuNDsiPkNSTSwgaW52b2ljaW5nLCBhbmQgYnVzaW5lc3MgbWFuYWdlbWVudCBhcHBzPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wNSk7IHBhZGRpbmc6IDI0cHg7IGJvcmRlci1yYWRpdXM6IDEycHg7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKTsiPgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMzZweDsgbWFyZ2luLWJvdHRvbTogMTJweDsiPvCfjq48L2Rpdj4KICAgICAgICAgICAgICA8aDMgc3R5bGU9Im1hcmdpbjogMCAwIDhweCAwOyBjb2xvcjogI2ZmZjsgZm9udC1zaXplOiAxOHB4OyI+RW50ZXJ0YWlubWVudDwvaDM+CiAgICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbjogMDsgY29sb3I6ICM4Yjk2YTU7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDEuNDsiPkdhbWVzLCB2aWRlb3MsIGFuZCBpbnRlcmFjdGl2ZSBjb250ZW50PC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICBgOwogICAgfQoKICAgIG9wZW5IdWIoKSB7CiAgICAgIGlmICh3aW5kb3cuR2F0ZXdheUFwcHNIdWIgJiYgd2luZG93LkdhdGV3YXlBcHBzSHViLm9wZW5IdWIpIHsKICAgICAgICB3aW5kb3cuR2F0ZXdheUFwcHNIdWIub3Blbkh1YigpOwogICAgICB9IGVsc2UgewogICAgICAgIGFsZXJ0KCdHYXRld2F5IEh1YiBpcyBsb2FkaW5nLi4uJyk7CiAgICAgIH0KICAgIH0KCiAgICBpbmplY3RVSSgpIHsKICAgICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteWJzdlBsYXRmb3JtT3ZlcmxheScpKSByZXR1cm47CgogICAgICBjb25zdCBvdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIG92ZXJsYXkuaWQgPSAnbXlic3ZQbGF0Zm9ybU92ZXJsYXknOwogICAgICBvdmVybGF5LmlubmVySFRNTCA9IGAKICAgICAgICA8ZGl2IGNsYXNzPSJteWJzdi1jb250YWluZXIiPgogICAgICAgICAgPCEtLSBIZWFkZXIgLS0+CiAgICAgICAgICA8aGVhZGVyIGNsYXNzPSJteWJzdi1oZWFkZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItbGVmdCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nbyI+CiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAyNHB4OyI+8J+MkDwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsb2dvLXRleHQiIHN0eWxlPSJmb250LXNpemU6IDIwcHg7IGZvbnQtd2VpZ2h0OiA3MDA7IG1hcmdpbi1sZWZ0OiAxMnB4OyI+TXlCU1YuaW88L3NwYW4+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLWNlbnRlciI+CiAgICAgICAgICAgICAgPGRpdiBpZD0iYXBwVGl0bGUiIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuOSk7Ij4KICAgICAgICAgICAgICAgIFdlbGNvbWUKICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItcmlnaHQiPgogICAgICAgICAgICAgIDxidXR0b24gaWQ9IndhbGxldFN0YXR1cyIgY2xhc3M9ImhlYWRlci1idG4iIHRpdGxlPSJXYWxsZXQgU3RhdHVzIj4KICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogIzhiOTZhNTsiPuKXjzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHg7Ij5DaGVja2luZy4uLjwvc3Bhbj4KICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJvcGVuSHViQnRuIiBjbGFzcz0iaGVhZGVyLWJ0biIgdGl0bGU9Ik9wZW4gQXBwIEh1YiI+CiAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAyMHB4OyI+8J+TsTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJidG4tdGV4dCIgc3R5bGU9ImZvbnQtc2l6ZTogMTNweDsgbWFyZ2luLWxlZnQ6IDhweDsiPkFwcHM8L3NwYW4+CiAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0ib3BlbldhbGxldEJ0biIgY2xhc3M9ImhlYWRlci1idG4iIHRpdGxlPSJUb2dnbGUgV2FsbGV0Ij4KICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDIwcHg7Ij7wn5KwPC9zcGFuPgogICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvaGVhZGVyPgoKICAgICAgICAgIDwhLS0gTWFpbiBDb250ZW50IEFyZWEgLS0+CiAgICAgICAgICA8bWFpbiBjbGFzcz0ibXlic3YtbWFpbiI+CiAgICAgICAgICAgIDxkaXYgaWQ9ImFwcENvbnRlbnRBcmVhIiBjbGFzcz0iYXBwLWNvbnRlbnQtYXJlYSI+CiAgICAgICAgICAgICAgPCEtLSBBcHBzIHdpbGwgcmVuZGVyIGhlcmUgLS0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9tYWluPgoKICAgICAgICAgIDwhLS0gRm9vdGVyIC0tPgogICAgICAgICAgPGZvb3RlciBjbGFzcz0ibXlic3YtZm9vdGVyIj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzhiOTZhNTsiPgogICAgICAgICAgICAgIFBvd2VyZWQgYnkgQml0Y29pbiBTVgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAxMXB4OyBjb2xvcjogIzZiNzI4MDsiPgogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vbXlic3YuaW8iIHRhcmdldD0iX2JsYW5rIiBzdHlsZT0iY29sb3I6ICM2YjcyODA7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsiPk15QlNWLmlvPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZm9vdGVyPgogICAgICAgIDwvZGl2PgogICAgICBgOwoKICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdmVybGF5KTsKICAgIH0KCiAgICBpbmplY3RTdHlsZXMoKSB7CiAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlic3ZQbGF0Zm9ybVN0eWxlcycpKSByZXR1cm47CgogICAgICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CiAgICAgIHN0eWxlLmlkID0gJ215YnN2UGxhdGZvcm1TdHlsZXMnOwogICAgICBzdHlsZS50ZXh0Q29udGVudCA9IGAKICAgICAgICAqIHsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQogICAgICAgIAogICAgICAgICNteWJzdlBsYXRmb3JtT3ZlcmxheSB7CiAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMGUxNjIxIDAlLCAjMWEyMzMyIDEwMCUpOwogICAgICAgICAgei1pbmRleDogOTk5OTk4OwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgfQoKICAgICAgICAubXlic3YtY29udGFpbmVyIHsKICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgfQoKICAgICAgICAvKiBIZWFkZXIgKi8KICAgICAgICAubXlic3YtaGVhZGVyIHsKICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZjlhNTYgMCUsICNmZjZhODggMTAwJSk7CiAgICAgICAgICBwYWRkaW5nOiAwIDI0cHg7CiAgICAgICAgICBoZWlnaHQ6IDcwcHg7CiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLDAsMCwwLjIpOwogICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgfQoKICAgICAgICAuaGVhZGVyLWxlZnQsIC5oZWFkZXItY2VudGVyLCAuaGVhZGVyLXJpZ2h0IHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIH0KCiAgICAgICAgLmhlYWRlci1jZW50ZXIgewogICAgICAgICAgZmxleDogMTsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLmxvZ28gewogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICB9CgogICAgICAgIC5oZWFkZXItYnRuIHsKICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgZ2FwOiA0cHg7CiAgICAgICAgICBwYWRkaW5nOiAxMHB4IDE2cHg7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMSk7CiAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzOwogICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIH0KCiAgICAgICAgLmhlYWRlci1idG46aG92ZXIgewogICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjIpOwogICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgICAgIH0KCiAgICAgICAgLyogTWFpbiBDb250ZW50ICovCiAgICAgICAgLm15YnN2LW1haW4gewogICAgICAgICAgZmxleDogMTsKICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfQoKICAgICAgICAuYXBwLWNvbnRlbnQtYXJlYSB7CiAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgfQoKICAgICAgICAuYXBwLWNvbnRlbnQtYXJlYTo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgICAgd2lkdGg6IDhweDsKICAgICAgICB9CgogICAgICAgIC5hcHAtY29udGVudC1hcmVhOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMSk7CiAgICAgICAgfQoKICAgICAgICAuYXBwLWNvbnRlbnQtYXJlYTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjIpOwogICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIH0KCiAgICAgICAgLyogRm9vdGVyICovCiAgICAgICAgLm15YnN2LWZvb3RlciB7CiAgICAgICAgICBiYWNrZ3JvdW5kOiAjMGEwZjFhOwogICAgICAgICAgcGFkZGluZzogMTZweCAyNHB4OwogICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA1KTsKICAgICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIH0KCiAgICAgICAgLyogTW9iaWxlIFJlc3BvbnNpdmUgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAgIC5teWJzdi1oZWFkZXIgewogICAgICAgICAgICBwYWRkaW5nOiAwIDEycHg7CiAgICAgICAgICAgIGhlaWdodDogNjBweDsKICAgICAgICAgIH0KCiAgICAgICAgICAubG9nby10ZXh0IHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgIH0KCiAgICAgICAgICAuYnRuLXRleHQgewogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgICAgfQoKICAgICAgICAgIC5oZWFkZXItYnRuIHsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgICB9CgogICAgICAgICAgLmhlYWRlci1jZW50ZXIgewogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogQW5pbWF0aW9ucyAqLwogICAgICAgIEBrZXlmcmFtZXMgZmFkZUluIHsKICAgICAgICAgIGZyb20geyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7IH0KICAgICAgICAgIHRvIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9CiAgICAgICAgfQoKICAgICAgICAuYXBwLWNvbnRlbnQtYXJlYSA+ICogewogICAgICAgICAgYW5pbWF0aW9uOiBmYWRlSW4gMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgYDsKCiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpOwogICAgfQogIH0KCiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIC8vIEJBU0UgQVBQIENMQVNTIC0gQWxsIGFwcHMgZXh0ZW5kIHRoaXMKICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgCiAgY2xhc3MgQmFzZUFwcCB7CiAgICBjb25zdHJ1Y3Rvcihjb25maWcpIHsKICAgICAgdGhpcy5pZCA9IGNvbmZpZy5pZDsKICAgICAgdGhpcy5uYW1lID0gY29uZmlnLm5hbWU7CiAgICAgIHRoaXMuaWNvbiA9IGNvbmZpZy5pY29uOwogICAgICB0aGlzLmRlc2NyaXB0aW9uID0gY29uZmlnLmRlc2NyaXB0aW9uOwogICAgICB0aGlzLnBsYXRmb3JtID0gd2luZG93Lk15QlNWUGxhdGZvcm07CiAgICB9CgogICAgYXN5bmMgYWN0aXZhdGUoKSB7CiAgICAgIGNvbnNvbGUubG9nKGBbJHt0aGlzLm5hbWV9XSBBY3RpdmF0aW5nLi4uYCk7CiAgICAgIAogICAgICAvLyBVcGRhdGUgaGVhZGVyIHRpdGxlCiAgICAgIGNvbnN0IHRpdGxlRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwVGl0bGUnKTsKICAgICAgaWYgKHRpdGxlRWwpIHsKICAgICAgICB0aXRsZUVsLnRleHRDb250ZW50ID0gYCR7dGhpcy5pY29ufSAke3RoaXMubmFtZX1gOwogICAgICB9CgogICAgICAvLyBSZW5kZXIgYXBwIGNvbnRlbnQKICAgICAgdGhpcy5yZW5kZXIoKTsKICAgIH0KCiAgICBkZWFjdGl2YXRlKCkgewogICAgICBjb25zb2xlLmxvZyhgWyR7dGhpcy5uYW1lfV0gRGVhY3RpdmF0aW5nLi4uYCk7CiAgICAgIC8vIENsZWFudXAgaWYgbmVlZGVkCiAgICB9CgogICAgcmVuZGVyKCkgewogICAgICAvLyBPdmVycmlkZSBpbiBzdWJjbGFzcwogICAgICBjb25zdCBjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcENvbnRlbnRBcmVhJyk7CiAgICAgIGlmIChjb250ZW50KSB7CiAgICAgICAgY29udGVudC5pbm5lckhUTUwgPSBgCiAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOiA0MHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGNvbG9yOiAjZmZmOyI+CiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogNjRweDsgbWFyZ2luLWJvdHRvbTogMjBweDsiPiR7dGhpcy5pY29ufTwvZGl2PgogICAgICAgICAgICA8aDIgc3R5bGU9Im1hcmdpbjogMCAwIDEycHggMDsiPiR7dGhpcy5uYW1lfTwvaDI+CiAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjogIzhiOTZhNTsiPiR7dGhpcy5kZXNjcmlwdGlvbn08L3A+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICBgOwogICAgICB9CiAgICB9CiAgfQoKICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgLy8gRVhBTVBMRTogQ0FMQ1VMQVRPUiBBUFAKICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgCiAgY2xhc3MgQ2FsY3VsYXRvckFwcCBleHRlbmRzIEJhc2VBcHAgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgIHN1cGVyKHsKICAgICAgICBpZDogJ2NhbGN1bGF0b3InLAogICAgICAgIG5hbWU6ICdDYWxjdWxhdG9yJywKICAgICAgICBpY29uOiAn8J+UoicsCiAgICAgICAgZGVzY3JpcHRpb246ICdCYXNpYyBjYWxjdWxhdGlvbnMgJiB1dGlsaXR5IHRvb2wnCiAgICAgIH0pOwogICAgICB0aGlzLmRpc3BsYXkgPSAnMCc7CiAgICAgIHRoaXMuY3VycmVudE9wZXJhdGlvbiA9IG51bGw7CiAgICAgIHRoaXMucHJldmlvdXNWYWx1ZSA9IG51bGw7CiAgICB9CgogICAgcmVuZGVyKCkgewogICAgICBjb25zdCBjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcENvbnRlbnRBcmVhJyk7CiAgICAgIGlmICghY29udGVudCkgcmV0dXJuOwoKICAgICAgY29udGVudC5pbm5lckhUTUwgPSBgCiAgICAgICAgPGRpdiBzdHlsZT0iCiAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICAiPgogICAgICAgICAgPGRpdiBzdHlsZT0iCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyMTJkM2I7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCA0MHB4IHJnYmEoMCwwLDAsMC4zKTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA0MDBweDsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAiPgogICAgICAgICAgICA8IS0tIERpc3BsYXkgLS0+CiAgICAgICAgICAgIDxkaXYgaWQ9ImNhbGNEaXNwbGF5IiBzdHlsZT0iCiAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzBmMTQxOTsKICAgICAgICAgICAgICBjb2xvcjogIzQzZTk3YjsKICAgICAgICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgICAgICAgZm9udC1zaXplOiAzMnB4OwogICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICAgICAgICBtaW4taGVpZ2h0OiA3MHB4OwogICAgICAgICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICAgICAgIj4ke3RoaXMuZGlzcGxheX08L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gQnV0dG9ucyAtLT4KICAgICAgICAgICAgPGRpdiBzdHlsZT0iCiAgICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpOwogICAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgICAgIj4KICAgICAgICAgICAgICAke3RoaXMuZ2VuZXJhdGVCdXR0b25zKCl9CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIGA7CgogICAgICB0aGlzLmF0dGFjaEV2ZW50TGlzdGVuZXJzKCk7CiAgICB9CgogICAgZ2VuZXJhdGVCdXR0b25zKCkgewogICAgICBjb25zdCBidXR0b25zID0gWwogICAgICAgIHsgbGFiZWw6ICdDJywgY2xhc3M6ICdvcGVyYXRvcicsIGFjdGlvbjogJ2NsZWFyJyB9LAogICAgICAgIHsgbGFiZWw6ICfDtycsIGNsYXNzOiAnb3BlcmF0b3InLCBhY3Rpb246ICdkaXZpZGUnIH0sCiAgICAgICAgeyBsYWJlbDogJ8OXJywgY2xhc3M6ICdvcGVyYXRvcicsIGFjdGlvbjogJ211bHRpcGx5JyB9LAogICAgICAgIHsgbGFiZWw6ICfihpAnLCBjbGFzczogJ29wZXJhdG9yJywgYWN0aW9uOiAnYmFja3NwYWNlJyB9LAogICAgICAgIHsgbGFiZWw6ICc3JywgY2xhc3M6ICdudW1iZXInIH0sCiAgICAgICAgeyBsYWJlbDogJzgnLCBjbGFzczogJ251bWJlcicgfSwKICAgICAgICB7IGxhYmVsOiAnOScsIGNsYXNzOiAnbnVtYmVyJyB9LAogICAgICAgIHsgbGFiZWw6ICctJywgY2xhc3M6ICdvcGVyYXRvcicsIGFjdGlvbjogJ3N1YnRyYWN0JyB9LAogICAgICAgIHsgbGFiZWw6ICc0JywgY2xhc3M6ICdudW1iZXInIH0sCiAgICAgICAgeyBsYWJlbDogJzUnLCBjbGFzczogJ251bWJlcicgfSwKICAgICAgICB7IGxhYmVsOiAnNicsIGNsYXNzOiAnbnVtYmVyJyB9LAogICAgICAgIHsgbGFiZWw6ICcrJywgY2xhc3M6ICdvcGVyYXRvcicsIGFjdGlvbjogJ2FkZCcgfSwKICAgICAgICB7IGxhYmVsOiAnMScsIGNsYXNzOiAnbnVtYmVyJyB9LAogICAgICAgIHsgbGFiZWw6ICcyJywgY2xhc3M6ICdudW1iZXInIH0sCiAgICAgICAgeyBsYWJlbDogJzMnLCBjbGFzczogJ251bWJlcicgfSwKICAgICAgICB7IGxhYmVsOiAnPScsIGNsYXNzOiAnZXF1YWxzJywgYWN0aW9uOiAnZXF1YWxzJywgc3BhbjogJ3Jvdy1zcGFuJyB9LAogICAgICAgIHsgbGFiZWw6ICcwJywgY2xhc3M6ICdudW1iZXInLCBzcGFuOiAnY29sLXNwYW4nIH0sCiAgICAgICAgeyBsYWJlbDogJy4nLCBjbGFzczogJ251bWJlcicgfQogICAgICBdOwoKICAgICAgcmV0dXJuIGJ1dHRvbnMubWFwKGJ0biA9PiB7CiAgICAgICAgY29uc3QgYmdDb2xvciA9IGJ0bi5jbGFzcyA9PT0gJ29wZXJhdG9yJyA/ICcjZmY5YTU2JyA6IAogICAgICAgICAgICAgICAgICAgICAgIGJ0bi5jbGFzcyA9PT0gJ2VxdWFscycgPyAnIzQzZTk3YicgOiAnIzJiM2U1MCc7CiAgICAgICAgY29uc3QgdGV4dENvbG9yID0gYnRuLmNsYXNzID09PSAnZXF1YWxzJyA/ICcjMDAwJyA6ICcjZmZmJzsKICAgICAgICBjb25zdCBncmlkU3BhbiA9IGJ0bi5zcGFuID09PSAnY29sLXNwYW4nID8gJ2dyaWQtY29sdW1uOiBzcGFuIDI7JyA6IAogICAgICAgICAgICAgICAgICAgICAgICBidG4uc3BhbiA9PT0gJ3Jvdy1zcGFuJyA/ICdncmlkLXJvdzogc3BhbiAyOycgOiAnJzsKCiAgICAgICAgcmV0dXJuIGAKICAgICAgICAgIDxidXR0b24gCiAgICAgICAgICAgIGRhdGEtdmFsdWU9IiR7YnRuLmxhYmVsfSIgCiAgICAgICAgICAgIGRhdGEtYWN0aW9uPSIke2J0bi5hY3Rpb24gfHwgJyd9IgogICAgICAgICAgICBzdHlsZT0iCiAgICAgICAgICAgICAgJHtncmlkU3Bhbn0KICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke2JnQ29sb3J9OwogICAgICAgICAgICAgIGNvbG9yOiAke3RleHRDb2xvcn07CiAgICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgICAgICAgICBmb250LXNpemU6IDIwcHg7CiAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7CiAgICAgICAgICAgICIKICAgICAgICAgICAgb25tb3VzZW92ZXI9InRoaXMuc3R5bGUudHJhbnNmb3JtPSdzY2FsZSgwLjk1KSc7IHRoaXMuc3R5bGUub3BhY2l0eT0nMC45JyIKICAgICAgICAgICAgb25tb3VzZW91dD0idGhpcy5zdHlsZS50cmFuc2Zvcm09J3NjYWxlKDEpJzsgdGhpcy5zdHlsZS5vcGFjaXR5PScxJyIKICAgICAgICAgID4KICAgICAgICAgICAgJHtidG4ubGFiZWx9CiAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICBgOwogICAgICB9KS5qb2luKCcnKTsKICAgIH0KCiAgICBhdHRhY2hFdmVudExpc3RlbmVycygpIHsKICAgICAgY29uc3QgYnV0dG9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbltkYXRhLXZhbHVlXScpOwogICAgICBidXR0b25zLmZvckVhY2goYnRuID0+IHsKICAgICAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7CiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGJ0bi5kYXRhc2V0LnZhbHVlOwogICAgICAgICAgY29uc3QgYWN0aW9uID0gYnRuLmRhdGFzZXQuYWN0aW9uOwogICAgICAgICAgdGhpcy5oYW5kbGVJbnB1dCh2YWx1ZSwgYWN0aW9uKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9CgogICAgaGFuZGxlSW5wdXQodmFsdWUsIGFjdGlvbikgewogICAgICBpZiAoYWN0aW9uKSB7CiAgICAgICAgdGhpcy5oYW5kbGVBY3Rpb24oYWN0aW9uKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmhhbmRsZU51bWJlcih2YWx1ZSk7CiAgICAgIH0KICAgICAgdGhpcy51cGRhdGVEaXNwbGF5KCk7CiAgICB9CgogICAgaGFuZGxlTnVtYmVyKHZhbHVlKSB7CiAgICAgIGlmICh0aGlzLmRpc3BsYXkgPT09ICcwJyB8fCB0aGlzLmRpc3BsYXkgPT09ICdFcnJvcicpIHsKICAgICAgICB0aGlzLmRpc3BsYXkgPSB2YWx1ZTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmRpc3BsYXkgKz0gdmFsdWU7CiAgICAgIH0KICAgIH0KCiAgICBoYW5kbGVBY3Rpb24oYWN0aW9uKSB7CiAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgICAgY2FzZSAnY2xlYXInOgogICAgICAgICAgdGhpcy5kaXNwbGF5ID0gJzAnOwogICAgICAgICAgdGhpcy5jdXJyZW50T3BlcmF0aW9uID0gbnVsbDsKICAgICAgICAgIHRoaXMucHJldmlvdXNWYWx1ZSA9IG51bGw7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdiYWNrc3BhY2UnOgogICAgICAgICAgdGhpcy5kaXNwbGF5ID0gdGhpcy5kaXNwbGF5LnNsaWNlKDAsIC0xKSB8fCAnMCc7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdhZGQnOgogICAgICAgIGNhc2UgJ3N1YnRyYWN0JzoKICAgICAgICBjYXNlICdtdWx0aXBseSc6CiAgICAgICAgY2FzZSAnZGl2aWRlJzoKICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgIT09IG51bGwgJiYgdGhpcy5jdXJyZW50T3BlcmF0aW9uKSB7CiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlKCk7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSBwYXJzZUZsb2F0KHRoaXMuZGlzcGxheSk7CiAgICAgICAgICB0aGlzLmN1cnJlbnRPcGVyYXRpb24gPSBhY3Rpb247CiAgICAgICAgICB0aGlzLmRpc3BsYXkgPSAnMCc7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdlcXVhbHMnOgogICAgICAgICAgdGhpcy5jYWxjdWxhdGUoKTsKICAgICAgICAgIHRoaXMuY3VycmVudE9wZXJhdGlvbiA9IG51bGw7CiAgICAgICAgICB0aGlzLnByZXZpb3VzVmFsdWUgPSBudWxsOwogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KCiAgICBjYWxjdWxhdGUoKSB7CiAgICAgIGlmICh0aGlzLnByZXZpb3VzVmFsdWUgPT09IG51bGwgfHwgIXRoaXMuY3VycmVudE9wZXJhdGlvbikgcmV0dXJuOwoKICAgICAgY29uc3QgY3VycmVudCA9IHBhcnNlRmxvYXQodGhpcy5kaXNwbGF5KTsKICAgICAgbGV0IHJlc3VsdDsKCiAgICAgIHN3aXRjaCAodGhpcy5jdXJyZW50T3BlcmF0aW9uKSB7CiAgICAgICAgY2FzZSAnYWRkJzoKICAgICAgICAgIHJlc3VsdCA9IHRoaXMucHJldmlvdXNWYWx1ZSArIGN1cnJlbnQ7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdzdWJ0cmFjdCc6CiAgICAgICAgICByZXN1bHQgPSB0aGlzLnByZXZpb3VzVmFsdWUgLSBjdXJyZW50OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnbXVsdGlwbHknOgogICAgICAgICAgcmVzdWx0ID0gdGhpcy5wcmV2aW91c1ZhbHVlICogY3VycmVudDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ2RpdmlkZSc6CiAgICAgICAgICByZXN1bHQgPSBjdXJyZW50ICE9PSAwID8gdGhpcy5wcmV2aW91c1ZhbHVlIC8gY3VycmVudCA6ICdFcnJvcic7CiAgICAgICAgICBicmVhazsKICAgICAgfQoKICAgICAgdGhpcy5kaXNwbGF5ID0gcmVzdWx0LnRvU3RyaW5nKCk7CiAgICB9CgogICAgdXBkYXRlRGlzcGxheSgpIHsKICAgICAgY29uc3QgZGlzcGxheUVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbGNEaXNwbGF5Jyk7CiAgICAgIGlmIChkaXNwbGF5RWwpIHsKICAgICAgICBkaXNwbGF5RWwudGV4dENvbnRlbnQgPSB0aGlzLmRpc3BsYXk7CiAgICAgIH0KICAgIH0KICB9CgogIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAvLyBJTklUSUFMSVpBVElPTgogIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiAgLy8gQ3JlYXRlIGdsb2JhbCBwbGF0Zm9ybSBpbnN0YW5jZQogIHdpbmRvdy5NeUJTVlBsYXRmb3JtID0gbmV3IE15QlNWUGxhdGZvcm0oKTsKCiAgLy8gSW5pdGlhbGl6ZSB3aGVuIERPTSBpcyByZWFkeQogIGZ1bmN0aW9uIGluaXRpYWxpemVQbGF0Zm9ybSgpIHsKICAgIHRyeSB7CiAgICAgIHdpbmRvdy5NeUJTVlBsYXRmb3JtLmluaXRpYWxpemUoKTsKICAgICAgCiAgICAgIC8vIFJlZ2lzdGVyIGV4YW1wbGUgYXBwcwogICAgICB3aW5kb3cuTXlCU1ZQbGF0Zm9ybS5yZWdpc3RlckFwcChuZXcgQ2FsY3VsYXRvckFwcCgpKTsKICAgICAgCiAgICAgIC8vIFNob3cgd2VsY29tZSBzY3JlZW4KICAgICAgd2luZG93Lk15QlNWUGxhdGZvcm0uc2hvd1dlbGNvbWUoKTsKICAgICAgCiAgICAgIGNvbnNvbGUubG9nKCfinIUgTXlCU1YuaW8gUGxhdGZvcm0gbG9hZGVkIHN1Y2Nlc3NmdWxseScpOwogICAgICAKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ+KdjCBQbGF0Zm9ybSBpbml0aWFsaXphdGlvbiBlcnJvcjonLCBlcnJvcik7CiAgICB9CiAgfQoKICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgaW5pdGlhbGl6ZVBsYXRmb3JtKTsKICB9IGVsc2UgewogICAgaW5pdGlhbGl6ZVBsYXRmb3JtKCk7CiAgfQoKICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgLy8gR0xPQkFMIEFQSSBGT1IgR0FURVdBWSBIVUIgSU5URUdSQVRJT04KICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogIC8vIEZ1bmN0aW9uIGZvciBodWIgdG8gb3BlbiBhcHBzIGluIE15QlNWIHBsYXRmb3JtCiAgd2luZG93Lm9wZW5NeUJTVkFwcCA9IGZ1bmN0aW9uKGFwcElkKSB7CiAgICBjb25zb2xlLmxvZyhgW015QlNWXSBIdWIgcmVxdWVzdGluZyBhcHA6ICR7YXBwSWR9YCk7CiAgICAKICAgIGlmICh3aW5kb3cuTXlCU1ZQbGF0Zm9ybSkgewogICAgICB3aW5kb3cuTXlCU1ZQbGF0Zm9ybS5sb2FkQXBwKGFwcElkKTsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tNeUJTVl0gUGxhdGZvcm0gbm90IGluaXRpYWxpemVkJyk7CiAgICB9CiAgfTsKCiAgLy8gQ2FsY3VsYXRvciBzcGVjaWZpY2FsbHkgKGZvciBodWIgY29tcGF0aWJpbGl0eSkKICB3aW5kb3cuR2F0ZXdheUNhbGN1bGF0b3IgPSB7CiAgICBvcGVuOiBmdW5jdGlvbigpIHsKICAgICAgd2luZG93Lm9wZW5NeUJTVkFwcCgnY2FsY3VsYXRvcicpOwogICAgfQogIH07CgogIGNvbnNvbGUubG9nKCfinIUgTXlCU1YuaW8gRm91bmRhdGlvbiBtb2R1bGUgbG9hZGVkJyk7Cgp9KSgpOw=="}]}
    https://whatsonchain.com/tx/047657184e86fb5ac7c2b83a8fb84ecd5eabb42e7d2cf36fcedddbdec1c1cdc4