Transaction

76ea17b8fbff2bc56f1c7c29f06d8a83e1027a95605edffc28ec55fb3e982e22
Timestamp (utc)
2026-01-06 12:44:38
Fee Paid
0.00000224 BSV
(
0.00226404 BSV
-
0.00226180 BSV
)
Fee Rate
4.866 sat/KB
Version
1
Confirmations
3,175
Size Stats
46,026 B

2 Outputs

Total Output:
0.00226180 BSV
  • jMû²{"name":"ChainDisk","timestamp":1767692110510,"files":[{"name":"SportscastSA2.html","size":34264,"type":"text/html","content":"LyoqCiAqIFNwb3J0c0Nhc3QgdjIgLSBDbHViIFNwb3J0cyBFdmVudCBCcm9hZGNhc3RpbmcKICogQnVpbHQgb24gR2F0ZXdheSBNZWV0IC8gTWVkaWFNVFggaW5mcmFzdHJ1Y3R1cmUKICogCiAqIE1haW4gdmlldzogUGxheWVyIHZpZGVvIHJvb20gKGxpa2UgTWVldCkKICogU2xpZGUtb3V0OiBMZWFkZXJib2FyZCBwYW5lbAogKi8KKGZ1bmN0aW9uKCkgewogICd1c2Ugc3RyaWN0JzsKICAKICBjb25zb2xlLmxvZygn8J+PjO+4jyBTcG9ydHNDYXN0IHYyIGxvYWRpbmcuLi4nKTsKICAKICBjb25zdCBDT05GSUcgPSB7CiAgICBXSElQX0JBU0U6ICdodHRwczovL21lZXQubXlic3YuaW86ODg4OScsCiAgICBXSEVQX0JBU0U6ICdodHRwczovL21lZXQubXlic3YuaW86ODg4OScsCiAgICBBUElfQkFTRTogJ2h0dHBzOi8vbWVldC5teWJzdi5pbycsCiAgICBJQ0VfU0VSVkVSUzogWwogICAgICB7IHVybHM6ICdzdHVuOnN0dW4ubC5nb29nbGUuY29tOjE5MzAyJyB9LAogICAgICB7IHVybHM6ICdzdHVuOnN0dW4xLmwuZ29vZ2xlLmNvbToxOTMwMicgfQogICAgXSwKICAgIFBPTExfSU5URVJWQUw6IDIwMDAsCiAgICBBUFBfTkFNRTogJ3Nwb3J0c2Nhc3QnCiAgfTsKCiAgLy8gU3RhdGUgLSBWaWRlby9Sb29tCiAgbGV0IHJvb21JZCA9IG51bGw7CiAgbGV0IHVzZXJuYW1lID0gbnVsbDsKICBsZXQgbG9jYWxTdHJlYW0gPSBudWxsOwogIGxldCB2aWRlb09uID0gdHJ1ZTsKICBsZXQgYXVkaW9PbiA9IHRydWU7CiAgbGV0IGlzQ29ubmVjdGVkID0gZmFsc2U7CiAgbGV0IHBvbGxJbnRlcnZhbCA9IG51bGw7CiAgbGV0IHNlbmRQYyA9IG51bGw7CiAgbGV0IHJlY2VpdmVQY3MgPSBuZXcgTWFwKCk7CiAgbGV0IHBhcnRpY2lwYW50cyA9IG5ldyBTZXQoKTsKCiAgLy8gU3RhdGUgLSBUb3VybmFtZW50CiAgbGV0IGV2ZW50SWQgPSBudWxsOwogIGxldCBldmVudE5hbWUgPSAnJzsKICBsZXQgcGxheWVySWQgPSBudWxsOwogIGxldCBpc0FkbWluID0gZmFsc2U7CiAgbGV0IHNjb3JlcyA9IG5ldyBNYXAoKTsKICBsZXQgcGxheWVycyA9IG5ldyBNYXAoKTsKICBsZXQgY3VycmVudEhvbGUgPSAxOwogIGxldCB0b3RhbEhvbGVzID0gMTg7CiAgbGV0IGNvdXJzZVBhciA9IFs0LDQsMyw1LDQsNCwzLDQsNSw0LDQsMyw1LDQsNCwzLDQsNV07CiAgbGV0IGxlYWRlcmJvYXJkT3BlbiA9IGZhbHNlOwoKICAvLyA9PT09PT09PT09PT0gVVRJTElUSUVTID09PT09PT09PT09PQogIAogIGZ1bmN0aW9uIGdlbklkKCkgewogICAgcmV0dXJuICdwJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA4KTsKICB9CgogIGZ1bmN0aW9uIGdlbkNvZGUoKSB7CiAgICBjb25zdCBjaGFycyA9ICdBQkNERUZHSEpLTE1OUFFSU1RVVldYWVoyMzQ1Njc4OSc7CiAgICBsZXQgY29kZSA9ICcnOwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2OyBpKyspIGNvZGUgKz0gY2hhcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKV07CiAgICByZXR1cm4gY29kZTsKICB9CgogIGZ1bmN0aW9uIGxvZyhtc2cpIHsKICAgIGNvbnNvbGUubG9nKCfwn4+M77iPICcgKyBtc2cpOwogIH0KCiAgYXN5bmMgZnVuY3Rpb24gZ2V0TWVkaWEoKSB7CiAgICB0cnkgewogICAgICByZXR1cm4gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogdHJ1ZSwgYXVkaW86IHRydWUgfSk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgIHRyeSB7CiAgICAgICAgcmV0dXJuIGF3YWl0IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgdmlkZW86IGZhbHNlLCBhdWRpbzogdHJ1ZSB9KTsKICAgICAgfSBjYXRjaCAoZTIpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfQogIH0KCiAgZnVuY3Rpb24gd2FpdEZvckljZShwYykgewogICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewogICAgICBpZiAocGMuaWNlR2F0aGVyaW5nU3RhdGUgPT09ICdjb21wbGV0ZScpIHJldHVybiByZXNvbHZlKCk7CiAgICAgIGNvbnN0IG9uR2F0aGVyID0gKCkgPT4gewogICAgICAgIGlmIChwYy5pY2VHYXRoZXJpbmdTdGF0ZSA9PT0gJ2NvbXBsZXRlJykgewogICAgICAgICAgcGMucmVtb3ZlRXZlbnRMaXN0ZW5lcignaWNlZ2F0aGVyaW5nc3RhdGVjaGFuZ2UnLCBvbkdhdGhlcik7CiAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgfQogICAgICB9OwogICAgICBwYy5hZGRFdmVudExpc3RlbmVyKCdpY2VnYXRoZXJpbmdzdGF0ZWNoYW5nZScsIG9uR2F0aGVyKTsKICAgICAgcGMub25pY2VjYW5kaWRhdGUgPSBlID0+IHsgaWYgKCFlLmNhbmRpZGF0ZSkgcmVzb2x2ZSgpOyB9OwogICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIDUwMDApOwogICAgfSk7CiAgfQoKICAvLyA9PT09PT09PT09PT0gVlBTIFNUUkVBTUlORyAoZnJvbSBNZWV0IG1vZHVsZSkgPT09PT09PT09PT09CgogIGFzeW5jIGZ1bmN0aW9uIGxpc3RWcHNQYXRocyhwcmVmaXgpIHsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBmZXRjaChDT05GSUcuQVBJX0JBU0UgKyAnL2FwaS92My9wYXRocy9saXN0Jyk7CiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwLmpzb24oKTsKICAgICAgcmV0dXJuIChkYXRhLml0ZW1zIHx8IFtdKS5maWx0ZXIoaSA9PiBpLm5hbWU/LnN0YXJ0c1dpdGgocHJlZml4KSAmJiBpLnJlYWR5KS5tYXAoaSA9PiBpLm5hbWUucmVwbGFjZShwcmVmaXgsICcnKSk7CiAgICB9IGNhdGNoIChlKSB7IHJldHVybiBbXTsgfQogIH0KCiAgYXN5bmMgZnVuY3Rpb24gc2VuZFRvVnBzKHBhdGgpIHsKICAgIGNvbnN0IHdoaXBVcmwgPSBDT05GSUcuV0hJUF9CQVNFICsgJy8nICsgcGF0aCArICcvd2hpcCc7CiAgICBzZW5kUGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oeyBpY2VTZXJ2ZXJzOiBDT05GSUcuSUNFX1NFUlZFUlMgfSk7CiAgICBsb2NhbFN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHNlbmRQYy5hZGRUcmFjayh0cmFjaywgbG9jYWxTdHJlYW0pKTsKICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgc2VuZFBjLmNyZWF0ZU9mZmVyKCk7CiAgICBhd2FpdCBzZW5kUGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7CiAgICBhd2FpdCB3YWl0Rm9ySWNlKHNlbmRQYyk7CiAgICBjb25zdCByZXNwID0gYXdhaXQgZmV0Y2god2hpcFVybCwgeyBtZXRob2Q6ICdQT1NUJywgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3NkcCcgfSwgYm9keTogc2VuZFBjLmxvY2FsRGVzY3JpcHRpb24uc2RwIH0pOwogICAgaWYgKCFyZXNwLm9rKSB0aHJvdyBuZXcgRXJyb3IoJ1dISVAgZmFpbGVkJyk7CiAgICBhd2FpdCBzZW5kUGMuc2V0UmVtb3RlRGVzY3JpcHRpb24oeyB0eXBlOiAnYW5zd2VyJywgc2RwOiBhd2FpdCByZXNwLnRleHQoKSB9KTsKICAgIGxvZygnUHVibGlzaGVkIHRvIFZQUycpOwogIH0KCiAgYXN5bmMgZnVuY3Rpb24gcmVjZWl2ZUZyb21WcHMobmFtZSwgcHJlZml4LCBvblN0cmVhbSkgewogICAgaWYgKHJlY2VpdmVQY3MuaGFzKG5hbWUpKSByZXR1cm47CiAgICBjb25zdCB3aGVwVXJsID0gQ09ORklHLldIRVBfQkFTRSArICcvJyArIHByZWZpeCArIG5hbWUgKyAnL3doZXAnOwogICAgY29uc3QgcGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oeyBpY2VTZXJ2ZXJzOiBDT05GSUcuSUNFX1NFUlZFUlMgfSk7CiAgICByZWNlaXZlUGNzLnNldChuYW1lLCBwYyk7CiAgICBwYy5vbnRyYWNrID0gKGUpID0+IHsgaWYgKGUuc3RyZWFtcz8uWzBdICYmIG9uU3RyZWFtKSBvblN0cmVhbShuYW1lLCBlLnN0cmVhbXNbMF0pOyB9OwogICAgcGMuYWRkVHJhbnNjZWl2ZXIoJ3ZpZGVvJywgeyBkaXJlY3Rpb246ICdyZWN2b25seScgfSk7CiAgICBwYy5hZGRUcmFuc2NlaXZlcignYXVkaW8nLCB7IGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyB9KTsKICAgIGNvbnN0IG9mZmVyID0gYXdhaXQgcGMuY3JlYXRlT2ZmZXIoKTsKICAgIGF3YWl0IHBjLnNldExvY2FsRGVzY3JpcHRpb24ob2ZmZXIpOwogICAgYXdhaXQgd2FpdEZvckljZShwYyk7CiAgICBjb25zdCByZXNwID0gYXdhaXQgZmV0Y2god2hlcFVybCwgeyBtZXRob2Q6ICdQT1NUJywgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3NkcCcgfSwgYm9keTogcGMubG9jYWxEZXNjcmlwdGlvbi5zZHAgfSk7CiAgICBpZiAoIXJlc3Aub2spIHsgcGMuY2xvc2UoKTsgcmVjZWl2ZVBjcy5kZWxldGUobmFtZSk7IHJldHVybjsgfQogICAgaWYgKHBjLnNpZ25hbGluZ1N0YXRlICE9PSAnaGF2ZS1sb2NhbC1vZmZlcicpIHsgcGMuY2xvc2UoKTsgcmVjZWl2ZVBjcy5kZWxldGUobmFtZSk7IHJldHVybjsgfQogICAgYXdhaXQgcGMuc2V0UmVtb3RlRGVzY3JpcHRpb24oeyB0eXBlOiAnYW5zd2VyJywgc2RwOiBhd2FpdCByZXNwLnRleHQoKSB9KTsKICAgIGxvZygnUmVjZWl2aW5nIGZyb20gJyArIG5hbWUpOwogIH0KCiAgZnVuY3Rpb24gc3RhcnRSb29tUG9sbGluZyhwcmVmaXgpIHsKICAgIGNvbnN0IGNoZWNrID0gYXN5bmMgKCkgPT4gewogICAgICBjb25zdCBjdXJyZW50ID0gYXdhaXQgbGlzdFZwc1BhdGhzKHByZWZpeCk7CiAgICAgIGNvbnN0IGN1cnJlbnRTZXQgPSBuZXcgU2V0KGN1cnJlbnQuZmlsdGVyKG4gPT4gbiAhPT0gdXNlcm5hbWUpKTsKICAgICAgCiAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBjdXJyZW50U2V0KSB7CiAgICAgICAgaWYgKCFwYXJ0aWNpcGFudHMuaGFzKG5hbWUpICYmICFyZWNlaXZlUGNzLmhhcyhuYW1lKSkgewogICAgICAgICAgcGFydGljaXBhbnRzLmFkZChuYW1lKTsKICAgICAgICAgIGFkZFBhcnRpY2lwYW50Qm94KG5hbWUpOwogICAgICAgICAgcmVjZWl2ZUZyb21WcHMobmFtZSwgcHJlZml4LCBzZXRQYXJ0aWNpcGFudFN0cmVhbSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgcGFydGljaXBhbnRzKSB7CiAgICAgICAgaWYgKCFjdXJyZW50U2V0LmhhcyhuYW1lKSkgewogICAgICAgICAgcGFydGljaXBhbnRzLmRlbGV0ZShuYW1lKTsKICAgICAgICAgIGlmIChyZWNlaXZlUGNzLmhhcyhuYW1lKSkgeyByZWNlaXZlUGNzLmdldChuYW1lKS5jbG9zZSgpOyByZWNlaXZlUGNzLmRlbGV0ZShuYW1lKTsgfQogICAgICAgICAgcmVtb3ZlUGFydGljaXBhbnRCb3gobmFtZSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICB1cGRhdGVQYXJ0aWNpcGFudENvdW50KCk7CiAgICAgIGlmIChsZWFkZXJib2FyZE9wZW4pIHVwZGF0ZUxlYWRlcmJvYXJkKCk7CiAgICB9OwogICAgY2hlY2soKTsKICAgIHBvbGxJbnRlcnZhbCA9IHNldEludGVydmFsKGNoZWNrLCBDT05GSUcuUE9MTF9JTlRFUlZBTCk7CiAgfQoKICAvLyA9PT09PT09PT09PT0gU0NPUklORyBMT0dJQyA9PT09PT09PT09PT0KCiAgZnVuY3Rpb24gY2FsY3VsYXRlVG90YWwocGxheWVyU2NvcmVzKSB7CiAgICBpZiAoIXBsYXllclNjb3JlcyB8fCBwbGF5ZXJTY29yZXMubGVuZ3RoID09PSAwKSByZXR1cm4geyBzdHJva2VzOiAwLCB0b1BhcjogMCwgdGhydTogMCB9OwogICAgbGV0IHN0cm9rZXMgPSAwLCBwYXIgPSAwLCB0aHJ1ID0gMDsKICAgIHBsYXllclNjb3Jlcy5mb3JFYWNoKChzY29yZSwgaWR4KSA9PiB7CiAgICAgIGlmIChzY29yZSAhPT0gbnVsbCAmJiBzY29yZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgc3Ryb2tlcyArPSBzY29yZTsKICAgICAgICBwYXIgKz0gY291cnNlUGFyW2lkeF0gfHwgNDsKICAgICAgICB0aHJ1ID0gaWR4ICsgMTsKICAgICAgfQogICAgfSk7CiAgICByZXR1cm4geyBzdHJva2VzLCB0b1Bhcjogc3Ryb2tlcyAtIHBhciwgdGhydSB9OwogIH0KCiAgZnVuY3Rpb24gZm9ybWF0VG9QYXIobnVtKSB7CiAgICBpZiAobnVtID09PSAwKSByZXR1cm4gJ0UnOwogICAgcmV0dXJuIG51bSA+IDAgPyAnKycgKyBudW0gOiBTdHJpbmcobnVtKTsKICB9CgogIGZ1bmN0aW9uIGdldExlYWRlcmJvYXJkKCkgewogICAgY29uc3QgYm9hcmQgPSBbXTsKICAgIHBsYXllcnMuZm9yRWFjaCgocGxheWVyLCBpZCkgPT4gewogICAgICBjb25zdCBwbGF5ZXJTY29yZXMgPSBzY29yZXMuZ2V0KGlkKSB8fCBbXTsKICAgICAgY29uc3QgY2FsYyA9IGNhbGN1bGF0ZVRvdGFsKHBsYXllclNjb3Jlcyk7CiAgICAgIGJvYXJkLnB1c2goeyBpZCwgbmFtZTogcGxheWVyLm5hbWUsIC4uLmNhbGMgfSk7CiAgICB9KTsKICAgIGJvYXJkLnNvcnQoKGEsIGIpID0+IGEudG9QYXIgIT09IGIudG9QYXIgPyBhLnRvUGFyIC0gYi50b1BhciA6IGIudGhydSAtIGEudGhydSk7CiAgICBib2FyZC5mb3JFYWNoKChwLCBpZHgpID0+IHsKICAgICAgaWYgKGlkeCA+IDAgJiYgcC50b1BhciA9PT0gYm9hcmRbaWR4LTFdLnRvUGFyKSB7CiAgICAgICAgcC5wb3MgPSBib2FyZFtpZHgtMV0ucG9zOwogICAgICAgIHAudGllZCA9IHRydWU7CiAgICAgICAgYm9hcmRbaWR4LTFdLnRpZWQgPSB0cnVlOwogICAgICB9IGVsc2UgewogICAgICAgIHAucG9zID0gaWR4ICsgMTsKICAgICAgfQogICAgfSk7CiAgICByZXR1cm4gYm9hcmQ7CiAgfQoKICAvLyA9PT09PT09PT09PT0gREFUQSBTWU5DID09PT09PT09PT09PQoKICBmdW5jdGlvbiBzYXZlRXZlbnREYXRhKCkgewogICAgY29uc3QgZGF0YSA9IHsKICAgICAgZXZlbnRJZCwgZXZlbnROYW1lLCB0b3RhbEhvbGVzLCBjb3Vyc2VQYXIsCiAgICAgIHBsYXllcnM6IEFycmF5LmZyb20ocGxheWVycy5lbnRyaWVzKCkpLAogICAgICBzY29yZXM6IEFycmF5LmZyb20oc2NvcmVzLmVudHJpZXMoKSkubWFwKChbaWQsIHNdKSA9PiBbaWQsIEFycmF5LmZyb20ocyldKQogICAgfTsKICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzcG9ydHNjYXN0XycgKyBldmVudElkLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7CiAgfQoKICBmdW5jdGlvbiBsb2FkRXZlbnREYXRhKGlkKSB7CiAgICBjb25zdCByYXcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc3BvcnRzY2FzdF8nICsgaWQpOwogICAgaWYgKCFyYXcpIHJldHVybiBmYWxzZTsKICAgIHRyeSB7CiAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHJhdyk7CiAgICAgIGV2ZW50SWQgPSBkYXRhLmV2ZW50SWQ7CiAgICAgIGV2ZW50TmFtZSA9IGRhdGEuZXZlbnROYW1lOwogICAgICB0b3RhbEhvbGVzID0gZGF0YS50b3RhbEhvbGVzIHx8IDE4OwogICAgICBjb3Vyc2VQYXIgPSBkYXRhLmNvdXJzZVBhciB8fCBjb3Vyc2VQYXI7CiAgICAgIHBsYXllcnMgPSBuZXcgTWFwKGRhdGEucGxheWVycyk7CiAgICAgIHNjb3JlcyA9IG5ldyBNYXAoZGF0YS5zY29yZXMubWFwKChbaWQsIHNdKSA9PiBbaWQsIHNdKSk7CiAgICAgIHJldHVybiB0cnVlOwogICAgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0KICB9CgogIGZ1bmN0aW9uIGJyb2FkY2FzdFVwZGF0ZSgpIHsKICAgIHNhdmVFdmVudERhdGEoKTsKICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnc3BvcnRzY2FzdC11cGRhdGUnLCB7IGRldGFpbDogeyBldmVudElkIH0gfSkpOwogIH0KCiAgLy8gPT09PT09PT09PT09IFJPT00gKyBFVkVOVCBKT0lOID09PT09PT09PT09PQoKICBhc3luYyBmdW5jdGlvbiBqb2luUm9vbShjb2RlLCBuYW1lKSB7CiAgICBldmVudElkID0gY29kZS50b1VwcGVyQ2FzZSgpLnRyaW0oKSB8fCBnZW5Db2RlKCk7CiAgICByb29tSWQgPSAnZ29sZl8nICsgZXZlbnRJZC50b0xvd2VyQ2FzZSgpOwogICAgdXNlcm5hbWUgPSBuYW1lLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05XS9nLCAnJyk7CiAgICBwbGF5ZXJJZCA9IGdlbklkKCk7CgogICAgLy8gTG9hZCBvciBjcmVhdGUgZXZlbnQKICAgIGlmICghbG9hZEV2ZW50RGF0YShldmVudElkKSkgewogICAgICBldmVudE5hbWUgPSBldmVudElkICsgJyBUb3VybmFtZW50JzsKICAgICAgaXNBZG1pbiA9IHRydWU7CiAgICB9CgogICAgLy8gQWRkIHBsYXllciB0byB0b3VybmFtZW50CiAgICBwbGF5ZXJzLnNldChwbGF5ZXJJZCwgeyBuYW1lOiBuYW1lLnRyaW0oKSwgam9pbmVkQXQ6IERhdGUubm93KCkgfSk7CiAgICBzY29yZXMuc2V0KHBsYXllcklkLCBuZXcgQXJyYXkodG90YWxIb2xlcykuZmlsbChudWxsKSk7CiAgICBicm9hZGNhc3RVcGRhdGUoKTsKCiAgICAvLyBTdGFydCB2aWRlbwogICAgY29uc3QgcHJlZml4ID0gJ3Nwb3J0c2Nhc3QvJyArIHJvb21JZCArICcvJzsKICAgIGxvY2FsU3RyZWFtID0gYXdhaXQgZ2V0TWVkaWEoKTsKICAgIAogICAgaWYgKGxvY2FsU3RyZWFtKSB7CiAgICAgIGF3YWl0IHNlbmRUb1ZwcyhwcmVmaXggKyB1c2VybmFtZSk7CiAgICB9CiAgICAKICAgIHN0YXJ0Um9vbVBvbGxpbmcocHJlZml4KTsKICAgIGlzQ29ubmVjdGVkID0gdHJ1ZTsKICAgIAogICAgbG9nKCdKb2luZWQgcm9vbTogJyArIHJvb21JZCArICcgYXMgJyArIHVzZXJuYW1lKTsKICAgIHJldHVybiB7IGV2ZW50SWQsIHJvb21JZCwgcGxheWVySWQgfTsKICB9CgogIGZ1bmN0aW9uIHN1Ym1pdFNjb3JlKGhvbGUsIHN0cm9rZXMpIHsKICAgIGlmICghcGxheWVySWQgfHwgIXNjb3Jlcy5oYXMocGxheWVySWQpKSByZXR1cm47CiAgICBjb25zdCBwbGF5ZXJTY29yZXMgPSBzY29yZXMuZ2V0KHBsYXllcklkKTsKICAgIHBsYXllclNjb3Jlc1tob2xlIC0gMV0gPSBzdHJva2VzOwogICAgc2NvcmVzLnNldChwbGF5ZXJJZCwgcGxheWVyU2NvcmVzKTsKICAgIGJyb2FkY2FzdFVwZGF0ZSgpOwogICAgbG9nKCdTY29yZTogSG9sZSAnICsgaG9sZSArICcgPSAnICsgc3Ryb2tlcyk7CiAgfQoKICAvLyA9PT09PT09PT09PT0gVUkgLSBWSURFTyBHUklEID09PT09PT09PT09PQoKICBmdW5jdGlvbiBhZGRQYXJ0aWNpcGFudEJveChuYW1lKSB7CiAgICBjb25zdCBncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLXZpZGVvLWdyaWQnKTsKICAgIGlmICghZ3JpZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2MtcGFydGljaXBhbnQtJyArIG5hbWUpKSByZXR1cm47CiAgICAKICAgIGNvbnN0IHBsYXllckRhdGEgPSBBcnJheS5mcm9tKHBsYXllcnMudmFsdWVzKCkpLmZpbmQocCA9PiAKICAgICAgcC5uYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXowLTldL2csICcnKSA9PT0gbmFtZQogICAgKTsKICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gcGxheWVyRGF0YT8ubmFtZSB8fCBuYW1lOwogICAgY29uc3QgcGxheWVyU2NvcmUgPSBnZXRQbGF5ZXJTY29yZShuYW1lKTsKICAgIAogICAgY29uc3QgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBib3guaWQgPSAnc2MtcGFydGljaXBhbnQtJyArIG5hbWU7CiAgICBib3guY2xhc3NOYW1lID0gJ3NjLXZpZGVvLWJveCc7CiAgICBib3guaW5uZXJIVE1MID0gYAogICAgICA8dmlkZW8gYXV0b3BsYXkgcGxheXNpbmxpbmU+PC92aWRlbz4KICAgICAgPGRpdiBjbGFzcz0ic2MtdmlkZW8tbGFiZWwiPgogICAgICAgIDxzcGFuIGNsYXNzPSJzYy12aWRlby1uYW1lIj4ke2Rpc3BsYXlOYW1lfTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ic2MtdmlkZW8tc2NvcmUiPiR7cGxheWVyU2NvcmV9PC9zcGFuPgogICAgICA8L2Rpdj4KICAgIGA7CiAgICBncmlkLmFwcGVuZENoaWxkKGJveCk7CiAgfQoKICBmdW5jdGlvbiBnZXRQbGF5ZXJTY29yZShuYW1lKSB7CiAgICBmb3IgKGNvbnN0IFtpZCwgcGxheWVyXSBvZiBwbGF5ZXJzKSB7CiAgICAgIGlmIChwbGF5ZXIubmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16MC05XS9nLCAnJykgPT09IG5hbWUpIHsKICAgICAgICBjb25zdCBjYWxjID0gY2FsY3VsYXRlVG90YWwoc2NvcmVzLmdldChpZCkgfHwgW10pOwogICAgICAgIGlmIChjYWxjLnRocnUgPiAwKSByZXR1cm4gZm9ybWF0VG9QYXIoY2FsYy50b1Bhcik7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiAnJzsKICB9CgogIGZ1bmN0aW9uIHNldFBhcnRpY2lwYW50U3RyZWFtKG5hbWUsIHN0cmVhbSkgewogICAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLXBhcnRpY2lwYW50LScgKyBuYW1lKTsKICAgIGlmIChib3gpIHsKICAgICAgY29uc3QgdmlkZW8gPSBib3gucXVlcnlTZWxlY3RvcigndmlkZW8nKTsKICAgICAgaWYgKHZpZGVvKSB7CiAgICAgICAgdmlkZW8uc3JjT2JqZWN0ID0gc3RyZWFtOwogICAgICAgIHZpZGVvLm11dGVkID0gZmFsc2U7CiAgICAgICAgdmlkZW8udm9sdW1lID0gMS4wOwogICAgICAgIHZpZGVvLnBsYXkoKS5jYXRjaCgoKSA9PiB7fSk7CiAgICAgIH0KICAgIH0KICB9CgogIGZ1bmN0aW9uIHJlbW92ZVBhcnRpY2lwYW50Qm94KG5hbWUpIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYy1wYXJ0aWNpcGFudC0nICsgbmFtZSk/LnJlbW92ZSgpOwogIH0KCiAgZnVuY3Rpb24gdXBkYXRlUGFydGljaXBhbnRDb3VudCgpIHsKICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLXBsYXllci1jb3VudCcpOwogICAgaWYgKGVsKSBlbC50ZXh0Q29udGVudCA9IHBhcnRpY2lwYW50cy5zaXplICsgMTsKICB9CgogIGZ1bmN0aW9uIHNob3dMb2NhbFZpZGVvKCkgewogICAgY29uc3QgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2MtbG9jYWwtdmlkZW8nKTsKICAgIGlmIChlbCAmJiBsb2NhbFN0cmVhbSkgewogICAgICBlbC5zcmNPYmplY3QgPSBsb2NhbFN0cmVhbTsKICAgICAgZWwubXV0ZWQgPSB0cnVlOwogICAgfQogIH0KCiAgLy8gPT09PT09PT09PT09IFVJIC0gTEVBREVSQk9BUkQgU0xJREUgPT09PT09PT09PT09CgogIGZ1bmN0aW9uIHRvZ2dsZUxlYWRlcmJvYXJkKCkgewogICAgbGVhZGVyYm9hcmRPcGVuID0gIWxlYWRlcmJvYXJkT3BlbjsKICAgIGNvbnN0IHBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLWxlYWRlcmJvYXJkLXBhbmVsJyk7CiAgICBjb25zdCBtYWluID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLW1haW4nKTsKICAgIGlmIChwYW5lbCkgcGFuZWwuY2xhc3NMaXN0LnRvZ2dsZSgnc2Mtb3BlbicsIGxlYWRlcmJvYXJkT3Blbik7CiAgICBpZiAobWFpbikgbWFpbi5jbGFzc0xpc3QudG9nZ2xlKCdzYy1zaGlmdGVkJywgbGVhZGVyYm9hcmRPcGVuKTsKICAgIGlmIChsZWFkZXJib2FyZE9wZW4pIHVwZGF0ZUxlYWRlcmJvYXJkKCk7CiAgfQoKICBmdW5jdGlvbiB1cGRhdGVMZWFkZXJib2FyZCgpIHsKICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYy1sZWFkZXJib2FyZC1saXN0Jyk7CiAgICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuOwogICAgCiAgICBjb25zdCBib2FyZCA9IGdldExlYWRlcmJvYXJkKCk7CiAgICBsZXQgaHRtbCA9ICcnOwogICAgCiAgICBib2FyZC5mb3JFYWNoKChwLCBpZHgpID0+IHsKICAgICAgY29uc3QgaXNNZSA9IHAuaWQgPT09IHBsYXllcklkOwogICAgICBjb25zdCBwb3NEaXNwbGF5ID0gcC50aWVkID8gJ1QnICsgcC5wb3MgOiBwLnBvczsKICAgICAgaHRtbCArPSBgCiAgICAgICAgPGRpdiBjbGFzcz0ic2MtbGItcm93ICR7aXNNZSA/ICdzYy1sYi1tZScgOiAnJ30gJHtpZHggPCAzID8gJ3NjLWxiLXRvcDMnIDogJyd9Ij4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJzYy1sYi1wb3MiPiR7cG9zRGlzcGxheX08L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ic2MtbGItbmFtZSI+JHtwLm5hbWV9PC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9InNjLWxiLXRocnUiPiR7cC50aHJ1IHx8ICctJ308L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ic2MtbGItc2NvcmUgJHtwLnRvUGFyIDwgMCA/ICdzYy11bmRlcicgOiBwLnRvUGFyID4gMCA/ICdzYy1vdmVyJyA6ICcnfSI+JHtmb3JtYXRUb1BhcihwLnRvUGFyKX08L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgIGA7CiAgICB9KTsKICAgIAogICAgY29udGFpbmVyLmlubmVySFRNTCA9IGh0bWw7CiAgfQoKICAvLyA9PT09PT09PT09PT0gVUkgLSBTQ09SRSBFTlRSWSA9PT09PT09PT09PT0KCiAgZnVuY3Rpb24gc2hvd1Njb3JlTW9kYWwoKSB7CiAgICBjb25zdCBwbGF5ZXJTY29yZXMgPSBzY29yZXMuZ2V0KHBsYXllcklkKSB8fCBbXTsKICAgIGNvbnN0IHBhciA9IGNvdXJzZVBhcltjdXJyZW50SG9sZSAtIDFdIHx8IDQ7CiAgICBsZXQgdGVtcFNjb3JlID0gcGxheWVyU2NvcmVzW2N1cnJlbnRIb2xlIC0gMV0gPz8gcGFyOwogICAgCiAgICBjb25zdCBtb2RhbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgbW9kYWwuaWQgPSAnc2Mtc2NvcmUtbW9kYWwnOwogICAgbW9kYWwuY2xhc3NOYW1lID0gJ3NjLXNjb3JlLW1vZGFsJzsKICAgIG1vZGFsLmlubmVySFRNTCA9IGAKICAgICAgPGRpdiBjbGFzcz0ic2Mtc2NvcmUtY2FyZCI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2Mtc2NvcmUtaGVhZGVyIj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InNjLWhvbGUtbmF2LWJ0biIgaWQ9InNjLXByZXYtaG9sZSI+4peAPC9idXR0b24+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzYy1ob2xlLWluZm8iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzYy1ob2xlLW51bSI+SG9sZSAke2N1cnJlbnRIb2xlfTwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzYy1ob2xlLXBhciI+UGFyICR7cGFyfTwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzYy1ob2xlLW5hdi1idG4iIGlkPSJzYy1uZXh0LWhvbGUiPuKWtjwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNjLXNjb3JlLWlucHV0Ij4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InNjLXNjb3JlLWJ0biBzYy1taW51cyIgaWQ9InNjLW1pbnVzIj7iiJI8L2J1dHRvbj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNjLXNjb3JlLWRpc3BsYXkiPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2Mtc2NvcmUtbnVtIiBpZD0ic2Mtc2NvcmUtdmFsdWUiPiR7dGVtcFNjb3JlfTwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNjLXNjb3JlLWxhYmVsIiBpZD0ic2Mtc2NvcmUtbGFiZWwiPiR7Z2V0U2NvcmVMYWJlbCh0ZW1wU2NvcmUsIHBhcil9PC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzYy1zY29yZS1idG4gc2MtcGx1cyIgaWQ9InNjLXBsdXMiPis8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzYy1zY29yZWNhcmQtbWluaSIgaWQ9InNjLXNjb3JlY2FyZC1taW5pIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzYy1zY29yZS1hY3Rpb25zIj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InNjLWJ0biBzYy1idG4tY2FuY2VsIiBpZD0ic2MtY2FuY2VsIj5DYW5jZWw8L2J1dHRvbj4KICAgICAgICAgIDxidXR0b24gY2xhc3M9InNjLWJ0biBzYy1idG4tc2F2ZSIgaWQ9InNjLXNhdmUiPlNhdmU8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgOwogICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtb2RhbCk7CiAgICAKICAgIHVwZGF0ZVNjb3JlY2FyZE1pbmkoKTsKICAgIAogICAgY29uc3QgdXBkYXRlRGlzcGxheSA9ICgpID0+IHsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLXNjb3JlLXZhbHVlJykudGV4dENvbnRlbnQgPSB0ZW1wU2NvcmU7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYy1zY29yZS1sYWJlbCcpLnRleHRDb250ZW50ID0gZ2V0U2NvcmVMYWJlbCh0ZW1wU2NvcmUsIHBhcik7CiAgICB9OwogICAgCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2MtbWludXMnKS5vbmNsaWNrID0gKCkgPT4geyBpZiAodGVtcFNjb3JlID4gMSkgeyB0ZW1wU2NvcmUtLTsgdXBkYXRlRGlzcGxheSgpOyB9IH07CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2MtcGx1cycpLm9uY2xpY2sgPSAoKSA9PiB7IGlmICh0ZW1wU2NvcmUgPCAxNSkgeyB0ZW1wU2NvcmUrKzsgdXBkYXRlRGlzcGxheSgpOyB9IH07CiAgICAKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYy1wcmV2LWhvbGUnKS5vbmNsaWNrID0gKCkgPT4gewogICAgICBpZiAoY3VycmVudEhvbGUgPiAxKSB7IGN1cnJlbnRIb2xlLS07IG1vZGFsLnJlbW92ZSgpOyBzaG93U2NvcmVNb2RhbCgpOyB9CiAgICB9OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLW5leHQtaG9sZScpLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgIGlmIChjdXJyZW50SG9sZSA8IHRvdGFsSG9sZXMpIHsgY3VycmVudEhvbGUrKzsgbW9kYWwucmVtb3ZlKCk7IHNob3dTY29yZU1vZGFsKCk7IH0KICAgIH07CiAgICAKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYy1jYW5jZWwnKS5vbmNsaWNrID0gKCkgPT4gbW9kYWwucmVtb3ZlKCk7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Mtc2F2ZScpLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgIHN1Ym1pdFNjb3JlKGN1cnJlbnRIb2xlLCB0ZW1wU2NvcmUpOwogICAgICBpZiAoY3VycmVudEhvbGUgPCB0b3RhbEhvbGVzKSBjdXJyZW50SG9sZSsrOwogICAgICBtb2RhbC5yZW1vdmUoKTsKICAgICAgdXBkYXRlVmlkZW9MYWJlbHMoKTsKICAgIH07CiAgICAKICAgIG1vZGFsLm9uY2xpY2sgPSAoZSkgPT4geyBpZiAoZS50YXJnZXQgPT09IG1vZGFsKSBtb2RhbC5yZW1vdmUoKTsgfTsKICB9CgogIGZ1bmN0aW9uIGdldFNjb3JlTGFiZWwoc2NvcmUsIHBhcikgewogICAgY29uc3QgZGlmZiA9IHNjb3JlIC0gcGFyOwogICAgaWYgKGRpZmYgPD0gLTMpIHJldHVybiAnQWxiYXRyb3NzISc7CiAgICBpZiAoZGlmZiA9PT0gLTIpIHJldHVybiAnRWFnbGUhJzsKICAgIGlmIChkaWZmID09PSAtMSkgcmV0dXJuICdCaXJkaWUnOwogICAgaWYgKGRpZmYgPT09IDApIHJldHVybiAnUGFyJzsKICAgIGlmIChkaWZmID09PSAxKSByZXR1cm4gJ0JvZ2V5JzsKICAgIGlmIChkaWZmID09PSAyKSByZXR1cm4gJ0RvdWJsZSc7CiAgICByZXR1cm4gJ1RyaXBsZSsnOwogIH0KCiAgZnVuY3Rpb24gdXBkYXRlU2NvcmVjYXJkTWluaSgpIHsKICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYy1zY29yZWNhcmQtbWluaScpOwogICAgaWYgKCFjb250YWluZXIpIHJldHVybjsKICAgIAogICAgY29uc3QgcGxheWVyU2NvcmVzID0gc2NvcmVzLmdldChwbGF5ZXJJZCkgfHwgW107CiAgICBsZXQgaHRtbCA9ICc8ZGl2IGNsYXNzPSJzYy1taW5pLWdyaWQiPic7CiAgICAKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG90YWxIb2xlczsgaSsrKSB7CiAgICAgIGNvbnN0IHNjb3JlID0gcGxheWVyU2NvcmVzW2ldOwogICAgICBjb25zdCBwYXIgPSBjb3Vyc2VQYXJbaV07CiAgICAgIGNvbnN0IGlzQ3VycmVudCA9IGkgKyAxID09PSBjdXJyZW50SG9sZTsKICAgICAgbGV0IGNscyA9ICdzYy1taW5pLWNlbGwnOwogICAgICBpZiAoaXNDdXJyZW50KSBjbHMgKz0gJyBzYy1jdXJyZW50JzsKICAgICAgZWxzZSBpZiAoc2NvcmUgIT09IG51bGwpIHsKICAgICAgICBpZiAoc2NvcmUgPCBwYXIpIGNscyArPSAnIHNjLWJpcmRpZSc7CiAgICAgICAgZWxzZSBpZiAoc2NvcmUgPiBwYXIpIGNscyArPSAnIHNjLWJvZ2V5JzsKICAgICAgICBlbHNlIGNscyArPSAnIHNjLXBhcic7CiAgICAgIH0KICAgICAgaHRtbCArPSBgPGRpdiBjbGFzcz0iJHtjbHN9Ij4ke3Njb3JlICE9PSBudWxsID8gc2NvcmUgOiBpICsgMX08L2Rpdj5gOwogICAgfQogICAgCiAgICBodG1sICs9ICc8L2Rpdj4nOwogICAgY29udGFpbmVyLmlubmVySFRNTCA9IGh0bWw7CiAgfQoKICBmdW5jdGlvbiB1cGRhdGVWaWRlb0xhYmVscygpIHsKICAgIC8vIFVwZGF0ZSBhbGwgdmlkZW8gbGFiZWxzIHdpdGggY3VycmVudCBzY29yZXMKICAgIHBhcnRpY2lwYW50cy5mb3JFYWNoKG5hbWUgPT4gewogICAgICBjb25zdCBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2MtcGFydGljaXBhbnQtJyArIG5hbWUpOwogICAgICBpZiAoYm94KSB7CiAgICAgICAgY29uc3Qgc2NvcmVFbCA9IGJveC5xdWVyeVNlbGVjdG9yKCcuc2MtdmlkZW8tc2NvcmUnKTsKICAgICAgICBpZiAoc2NvcmVFbCkgc2NvcmVFbC50ZXh0Q29udGVudCA9IGdldFBsYXllclNjb3JlKG5hbWUpOwogICAgICB9CiAgICB9KTsKICAgIAogICAgLy8gVXBkYXRlIGxvY2FsCiAgICBjb25zdCBteUNhbGMgPSBjYWxjdWxhdGVUb3RhbChzY29yZXMuZ2V0KHBsYXllcklkKSB8fCBbXSk7CiAgICBjb25zdCBsb2NhbExhYmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNjLWxvY2FsIC5zYy12aWRlby1zY29yZScpOwogICAgaWYgKGxvY2FsTGFiZWwpIGxvY2FsTGFiZWwudGV4dENvbnRlbnQgPSBteUNhbGMudGhydSA+IDAgPyBmb3JtYXRUb1BhcihteUNhbGMudG9QYXIpIDogJyc7CiAgfQoKICAvLyA9PT09PT09PT09PT0gTUFJTiBVSSA9PT09PT09PT09PT0KCiAgZnVuY3Rpb24gc2hvd1Jvb21VSSgpIHsKICAgIGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLW1vZGFsJyk7CiAgICBpZiAoIW1vZGFsKSByZXR1cm47CiAgICAKICAgIGNvbnN0IG15Q2FsYyA9IGNhbGN1bGF0ZVRvdGFsKHNjb3Jlcy5nZXQocGxheWVySWQpIHx8IFtdKTsKICAgIGNvbnN0IG15U2NvcmUgPSBteUNhbGMudGhydSA+IDAgPyBmb3JtYXRUb1BhcihteUNhbGMudG9QYXIpIDogJyc7CiAgICAKICAgIG1vZGFsLmlubmVySFRNTCA9IGAKICAgICAgPGRpdiBjbGFzcz0ic2MtY29udGFpbmVyIj4KICAgICAgICA8IS0tIE1haW4gUm9vbSBWaWV3IC0tPgogICAgICAgIDxkaXYgY2xhc3M9InNjLW1haW4iIGlkPSJzYy1tYWluIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNjLWhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjLWhlYWRlci1sZWZ0Ij4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2MtZXZlbnQtYmFkZ2UiPuKbsyAke2V2ZW50SWR9PC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzYy1wbGF5ZXItYmFkZ2UiPvCfkaUgPHNwYW4gaWQ9InNjLXBsYXllci1jb3VudCI+MTwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzYy1oZWFkZXItcmlnaHQiPgogICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InNjLWJ0bi1pY29uIiBpZD0ic2Mtc2NvcmUtYnRuIiB0aXRsZT0iRW50ZXIgU2NvcmUiPvCfj4zvuI88L2J1dHRvbj4KICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzYy1idG4taWNvbiIgaWQ9InNjLWxiLWJ0biIgdGl0bGU9IkxlYWRlcmJvYXJkIj7wn4+GPC9idXR0b24+CiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ic2MtYnRuLWxlYXZlIiBvbmNsaWNrPSJTcG9ydHNDYXN0LmxlYXZlKCkiPkxlYXZlPC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICAKICAgICAgICAgIDxkaXYgY2xhc3M9InNjLXZpZGVvLWdyaWQiIGlkPSJzYy12aWRlby1ncmlkIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2MtdmlkZW8tYm94IHNjLWxvY2FsIj4KICAgICAgICAgICAgICA8dmlkZW8gaWQ9InNjLWxvY2FsLXZpZGVvIiBhdXRvcGxheSBtdXRlZCBwbGF5c2lubGluZT48L3ZpZGVvPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjLXZpZGVvLWxhYmVsIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzYy12aWRlby1uYW1lIj4ke3VzZXJuYW1lfSAoWW91KTwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzYy12aWRlby1zY29yZSI+JHtteVNjb3JlfTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIAogICAgICAgICAgPGRpdiBjbGFzcz0ic2MtY29udHJvbHMiPgogICAgICAgICAgICA8YnV0dG9uIGlkPSJzYy1jYW0tYnRuIiBjbGFzcz0ic2MtY3RybC1idG4gc2MtY3RybC1vbiIgb25jbGljaz0iU3BvcnRzQ2FzdC50b2dnbGVWaWRlbygpIj7wn5O5PC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gaWQ9InNjLW1pYy1idG4iIGNsYXNzPSJzYy1jdHJsLWJ0biBzYy1jdHJsLW9uIiBvbmNsaWNrPSJTcG9ydHNDYXN0LnRvZ2dsZUF1ZGlvKCkiPvCfjqQ8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ic2MtY3RybC1idG4gc2MtY3RybC1zY29yZSIgaWQ9InNjLXF1aWNrLXNjb3JlIj7wn4+M77iPIFNjb3JlPC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InNjLWN0cmwtYnRuIHNjLWN0cmwtbmV1dHJhbCIgb25jbGljaz0iU3BvcnRzQ2FzdC5jb3B5TGluaygpIj7wn5OLPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICAKICAgICAgICA8IS0tIFNsaWRlLW91dCBMZWFkZXJib2FyZCAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJzYy1sZWFkZXJib2FyZC1wYW5lbCIgaWQ9InNjLWxlYWRlcmJvYXJkLXBhbmVsIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNjLWxiLWhlYWRlciI+CiAgICAgICAgICAgIDxoMj7wn4+GIExlYWRlcmJvYXJkPC9oMj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ic2MtbGItY2xvc2UiIGlkPSJzYy1sYi1jbG9zZSI+4pyVPC9idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNjLWxiLXN1YmhlYWRlciI+CiAgICAgICAgICAgIDxzcGFuPlBvczwvc3Bhbj48c3Bhbj5QbGF5ZXI8L3NwYW4+PHNwYW4+VGhydTwvc3Bhbj48c3Bhbj5TY29yZTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ic2MtbGVhZGVyYm9hcmQtbGlzdCIgaWQ9InNjLWxlYWRlcmJvYXJkLWxpc3QiPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIGA7CiAgICAKICAgIHNob3dMb2NhbFZpZGVvKCk7CiAgICBhZGRTdHlsZXMoKTsKICAgIAogICAgLy8gRXZlbnQgaGFuZGxlcnMKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYy1sYi1idG4nKS5vbmNsaWNrID0gdG9nZ2xlTGVhZGVyYm9hcmQ7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2MtbGItY2xvc2UnKS5vbmNsaWNrID0gdG9nZ2xlTGVhZGVyYm9hcmQ7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Mtc2NvcmUtYnRuJykub25jbGljayA9IHNob3dTY29yZU1vZGFsOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLXF1aWNrLXNjb3JlJykub25jbGljayA9IHNob3dTY29yZU1vZGFsOwogIH0KCiAgZnVuY3Rpb24gc2hvd0pvaW5VSSgpIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYy1tb2RhbCcpPy5yZW1vdmUoKTsKICAgIAogICAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIG1vZGFsLmlkID0gJ3NjLW1vZGFsJzsKICAgIG1vZGFsLmNsYXNzTmFtZSA9ICdzYy1tb2RhbC1vdmVybGF5JzsKICAgIG1vZGFsLmlubmVySFRNTCA9IGAKICAgICAgPGRpdiBjbGFzcz0ic2Mtam9pbi1jb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNjLWpvaW4taGVhZGVyIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJzYy10aXRsZSI+4puzIFNwb3J0c0Nhc3Q8L3NwYW4+CiAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJzYy1jbG9zZS1idG4iIG9uY2xpY2s9IlNwb3J0c0Nhc3QuY2xvc2UoKSI+w5c8L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzYy1qb2luLWJvZHkiPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2Mtam9pbi1maWVsZCI+CiAgICAgICAgICAgIDxsYWJlbD5FdmVudCBDb2RlPC9sYWJlbD4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJzYy1qb2luLWNvZGUiIHBsYWNlaG9sZGVyPSJMZWF2ZSBlbXB0eSBmb3IgbmV3IGV2ZW50IiBtYXhsZW5ndGg9IjYiIHN0eWxlPSJ0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2UiPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzYy1qb2luLWZpZWxkIj4KICAgICAgICAgICAgPGxhYmVsPllvdXIgTmFtZTwvbGFiZWw+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic2Mtam9pbi1uYW1lIiBwbGFjZWhvbGRlcj0iRW50ZXIgeW91ciBuYW1lIj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ic2Mtam9pbi1idG4iIGlkPSJzYy1qb2luLWJ0biI+4puzIEpvaW48L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICBgOwogICAgCiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsKTsKICAgIGFkZFN0eWxlcygpOwogICAgCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Mtam9pbi1idG4nKS5vbmNsaWNrID0gYXN5bmMgKCkgPT4gewogICAgICBjb25zdCBjb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLWpvaW4tY29kZScpLnZhbHVlOwogICAgICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLWpvaW4tbmFtZScpLnZhbHVlOwogICAgICBpZiAoIW5hbWUpIHsgYWxlcnQoJ0VudGVyIHlvdXIgbmFtZScpOyByZXR1cm47IH0KICAgICAgdHJ5IHsKICAgICAgICBhd2FpdCBqb2luUm9vbShjb2RlLCBuYW1lKTsKICAgICAgICBzaG93Um9vbVVJKCk7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICBhbGVydChlLm1lc3NhZ2UpOwogICAgICB9CiAgICB9OwogIH0KCiAgLy8gPT09PT09PT09PT09IENPTlRST0xTID09PT09PT09PT09PQoKICBmdW5jdGlvbiB0b2dnbGVWaWRlbygpIHsKICAgIHZpZGVvT24gPSAhdmlkZW9PbjsKICAgIGxvY2FsU3RyZWFtPy5nZXRWaWRlb1RyYWNrcygpLmZvckVhY2godCA9PiB0LmVuYWJsZWQgPSB2aWRlb09uKTsKICAgIGNvbnN0IGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzYy1jYW0tYnRuJyk7CiAgICBpZiAoYnRuKSB7IGJ0bi5jbGFzc0xpc3QudG9nZ2xlKCdzYy1jdHJsLW9uJywgdmlkZW9Pbik7IGJ0bi5jbGFzc0xpc3QudG9nZ2xlKCdzYy1jdHJsLW9mZicsICF2aWRlb09uKTsgfQogIH0KCiAgZnVuY3Rpb24gdG9nZ2xlQXVkaW8oKSB7CiAgICBhdWRpb09uID0gIWF1ZGlvT247CiAgICBsb2NhbFN0cmVhbT8uZ2V0QXVkaW9UcmFja3MoKS5mb3JFYWNoKHQgPT4gdC5lbmFibGVkID0gYXVkaW9Pbik7CiAgICBjb25zdCBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2MtbWljLWJ0bicpOwogICAgaWYgKGJ0bikgeyBidG4uY2xhc3NMaXN0LnRvZ2dsZSgnc2MtY3RybC1vbicsIGF1ZGlvT24pOyBidG4uY2xhc3NMaXN0LnRvZ2dsZSgnc2MtY3RybC1vZmYnLCAhYXVkaW9Pbik7IH0KICB9CgogIGZ1bmN0aW9uIGNvcHlMaW5rKCkgewogICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQobG9jYXRpb24ub3JpZ2luICsgbG9jYXRpb24ucGF0aG5hbWUgKyAnP2V2ZW50PScgKyBldmVudElkKTsKICAgIGFsZXJ0KCdMaW5rIGNvcGllZCEnKTsKICB9CgogIC8vID09PT09PT09PT09PSBDTEVBTlVQID09PT09PT09PT09PQoKICBmdW5jdGlvbiBsZWF2ZSgpIHsKICAgIGNsZWFudXAoKTsKICAgIGNsb3NlKCk7CiAgfQoKICBmdW5jdGlvbiBjbGVhbnVwKCkgewogICAgaWYgKHBvbGxJbnRlcnZhbCkgeyBjbGVhckludGVydmFsKHBvbGxJbnRlcnZhbCk7IHBvbGxJbnRlcnZhbCA9IG51bGw7IH0KICAgIGlmIChzZW5kUGMpIHsgc2VuZFBjLmNsb3NlKCk7IHNlbmRQYyA9IG51bGw7IH0KICAgIHJlY2VpdmVQY3MuZm9yRWFjaChwYyA9PiBwYy5jbG9zZSgpKTsKICAgIHJlY2VpdmVQY3MuY2xlYXIoKTsKICAgIHBhcnRpY2lwYW50cy5jbGVhcigpOwogICAgaWYgKGxvY2FsU3RyZWFtKSB7IGxvY2FsU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godCA9PiB0LnN0b3AoKSk7IGxvY2FsU3RyZWFtID0gbnVsbDsgfQogICAgaXNDb25uZWN0ZWQgPSBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIGNsb3NlKCkgewogICAgY2xlYW51cCgpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLW1vZGFsJyk/LnJlbW92ZSgpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NjLXNjb3JlLW1vZGFsJyk/LnJlbW92ZSgpOwogIH0KCiAgZnVuY3Rpb24gb3BlbigpIHsgc2hvd0pvaW5VSSgpOyB9CgogIC8vID09PT09PT09PT09PSBTVFlMRVMgPT09PT09PT09PT09CgogIGZ1bmN0aW9uIGFkZFN0eWxlcygpIHsKICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Mtc3R5bGVzLXYyJykpIHJldHVybjsKICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKICAgIHN0eWxlLmlkID0gJ3NjLXN0eWxlcy12Mic7CiAgICBzdHlsZS50ZXh0Q29udGVudCA9IGAKICAgICAgQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9T3N3YWxkOndnaHRANDAwOzUwMDs2MDA7NzAwJmZhbWlseT1Tb3VyY2UrU2FucytQcm86d2dodEA0MDA7NjAwJmRpc3BsYXk9c3dhcCcpOwogICAgICAKICAgICAgLnNjLW1vZGFsLW92ZXJsYXkgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICBpbnNldDogMDsKICAgICAgICBiYWNrZ3JvdW5kOiAjMGExZjE0OwogICAgICAgIHotaW5kZXg6IDk5OTk5OwogICAgICAgIGZvbnQtZmFtaWx5OiAnU291cmNlIFNhbnMgUHJvJywgc2Fucy1zZXJpZjsKICAgICAgfQogICAgICAKICAgICAgLnNjLWNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgICAKICAgICAgLyogTWFpbiBSb29tICovCiAgICAgIC5zYy1tYWluIHsKICAgICAgICBmbGV4OiAxOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMWE0NzJhIDAlLCAjMGQyODE4IDEwMCUpOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1tYWluLnNjLXNoaWZ0ZWQgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzIwcHgpOwogICAgICB9CiAgICAgIAogICAgICAuc2MtaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMyk7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1oZWFkZXItbGVmdCwgLnNjLWhlYWRlci1yaWdodCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTJweDsKICAgICAgfQogICAgICAKICAgICAgLnNjLWV2ZW50LWJhZGdlIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjMmU3ZDMyOwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIHBhZGRpbmc6IDZweCAxNHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1wbGF5ZXItYmFkZ2UgewogICAgICAgIGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNyk7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CiAgICAgIAogICAgICAuc2MtYnRuLWljb24gewogICAgICAgIHdpZHRoOiA0MHB4OwogICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4xKTsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzOwogICAgICB9CiAgICAgIAogICAgICAuc2MtYnRuLWljb246aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4yKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1idG4tbGVhdmUgewogICAgICAgIGJhY2tncm91bmQ6ICNjNjI4Mjg7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgICAKICAgICAgLyogVmlkZW8gR3JpZCAqLwogICAgICAuc2MtdmlkZW8tZ3JpZCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjgwcHgsIDFmcikpOwogICAgICAgIGdhcDogMTBweDsKICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy12aWRlby1ib3ggewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBiYWNrZ3JvdW5kOiAjMWExYTFhOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBhc3BlY3QtcmF0aW86IDE2Lzk7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy12aWRlby1ib3ggdmlkZW8gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvYmplY3QtZml0OiBjb3ZlcjsKICAgICAgfQogICAgICAKICAgICAgLnNjLXZpZGVvLWxhYmVsIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRyYW5zcGFyZW50LCByZ2JhKDAsMCwwLDAuOCkpOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy12aWRlby1uYW1lIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgfQogICAgICAKICAgICAgLnNjLXZpZGVvLXNjb3JlIHsKICAgICAgICBmb250LWZhbWlseTogJ09zd2FsZCcsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgY29sb3I6ICM4QkMzNEE7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1sb2NhbCB7CiAgICAgICAgYm9yZGVyOiAycHggc29saWQgIzRDQUY1MDsKICAgICAgfQogICAgICAKICAgICAgLyogQ29udHJvbHMgKi8KICAgICAgLnNjLWNvbnRyb2xzIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGdhcDogMTJweDsKICAgICAgICBwYWRkaW5nOiAxNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC40KTsKICAgICAgfQogICAgICAKICAgICAgLnNjLWN0cmwtYnRuIHsKICAgICAgICBwYWRkaW5nOiAxMnB4IDE4cHg7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKICAgICAgfQogICAgICAKICAgICAgLnNjLWN0cmwtb24geyBiYWNrZ3JvdW5kOiAjNENBRjUwOyBjb2xvcjogI2ZmZjsgfQogICAgICAuc2MtY3RybC1vZmYgeyBiYWNrZ3JvdW5kOiAjNTU1OyBjb2xvcjogI2ZmZjsgfQogICAgICAuc2MtY3RybC1uZXV0cmFsIHsgYmFja2dyb3VuZDogIzQ0NDsgY29sb3I6ICNmZmY7IH0KICAgICAgLnNjLWN0cmwtc2NvcmUgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjRkY5ODAwLCAjRjU3QzAwKTsgY29sb3I6ICNmZmY7IGZvbnQtd2VpZ2h0OiA2MDA7IH0KICAgICAgCiAgICAgIC8qIExlYWRlcmJvYXJkIFBhbmVsICovCiAgICAgIC5zYy1sZWFkZXJib2FyZC1wYW5lbCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogLTMyMHB4OwogICAgICAgIHdpZHRoOiAzMjBweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjk1KTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgdHJhbnNpdGlvbjogcmlnaHQgMC4zcyBlYXNlOwogICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEpOwogICAgICB9CiAgICAgIAogICAgICAuc2MtbGVhZGVyYm9hcmQtcGFuZWwuc2Mtb3BlbiB7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1sYi1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgcGFkZGluZzogMTZweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjEpOwogICAgICB9CiAgICAgIAogICAgICAuc2MtbGItaGVhZGVyIGgyIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC1mYW1pbHk6ICdPc3dhbGQnLCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgfQogICAgICAKICAgICAgLnNjLWxiLWNsb3NlIHsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMSk7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgICAKICAgICAgLnNjLWxiLXN1YmhlYWRlciB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDQwcHggMWZyIDUwcHggNjBweDsKICAgICAgICBwYWRkaW5nOiAxMHB4IDE2cHg7CiAgICAgICAgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC41KTsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgICB9CiAgICAgIAogICAgICAuc2MtbGVhZGVyYm9hcmQtbGlzdCB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgfQogICAgICAKICAgICAgLnNjLWxiLXJvdyB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDQwcHggMWZyIDUwcHggNjBweDsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjA1KTsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CiAgICAgIAogICAgICAuc2MtbGItdG9wMyB7IGJhY2tncm91bmQ6IHJnYmEoMjU1LDIxNSwwLDAuMTUpOyB9CiAgICAgIC5zYy1sYi1tZSB7IGJhY2tncm91bmQ6IHJnYmEoNzYsMTc1LDgwLDAuMyk7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzYsMTc1LDgwLDAuNSk7IH0KICAgICAgCiAgICAgIC5zYy1sYi1wb3MgeyBmb250LWZhbWlseTogJ09zd2FsZCcsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDYwMDsgfQogICAgICAuc2MtbGItbmFtZSB7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTRweDsgfQogICAgICAuc2MtbGItdGhydSB7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNik7IHRleHQtYWxpZ246IGNlbnRlcjsgfQogICAgICAuc2MtbGItc2NvcmUgeyBmb250LWZhbWlseTogJ09zd2FsZCcsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMThweDsgZm9udC13ZWlnaHQ6IDcwMDsgdGV4dC1hbGlnbjogcmlnaHQ7IH0KICAgICAgLnNjLXVuZGVyIHsgY29sb3I6ICNlZjUzNTA7IH0KICAgICAgLnNjLW92ZXIgeyBjb2xvcjogIzY0QjVGNjsgfQogICAgICAKICAgICAgLyogU2NvcmUgTW9kYWwgKi8KICAgICAgLnNjLXNjb3JlLW1vZGFsIHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgaW5zZXQ6IDA7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjgpOwogICAgICAgIHotaW5kZXg6IDEwMDAwMDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1zY29yZS1jYXJkIHsKICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMWE0NzJhLCAjMGQyODE4KTsKICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgd2lkdGg6IDM0MHB4OwogICAgICAgIG1heC13aWR0aDogOTV2dzsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMik7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1zY29yZS1oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQogICAgICAKICAgICAgLnNjLWhvbGUtbmF2LWJ0biB7CiAgICAgICAgd2lkdGg6IDQ0cHg7CiAgICAgICAgaGVpZ2h0OiA0NHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMyk7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjEpOwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1ob2xlLWluZm8gewogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgfQogICAgICAKICAgICAgLnNjLWhvbGUtbnVtIHsKICAgICAgICBmb250LWZhbWlseTogJ09zd2FsZCcsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAyOHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1ob2xlLXBhciB7CiAgICAgICAgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMC42KTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1zY29yZS1pbnB1dCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGdhcDogMjBweDsKICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC4zKTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1zY29yZS1idG4gewogICAgICAgIHdpZHRoOiA2NHB4OwogICAgICAgIGhlaWdodDogNjRweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGZvbnQtc2l6ZTogMzJweDsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1taW51cyB7IGJhY2tncm91bmQ6ICNlZjUzNTA7IGNvbG9yOiAjZmZmOyB9CiAgICAgIC5zYy1wbHVzIHsgYmFja2dyb3VuZDogIzY2QkI2QTsgY29sb3I6ICNmZmY7IH0KICAgICAgCiAgICAgIC5zYy1zY29yZS1kaXNwbGF5IHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgbWluLXdpZHRoOiA4MHB4OwogICAgICB9CiAgICAgIAogICAgICAuc2Mtc2NvcmUtbnVtIHsKICAgICAgICBmb250LWZhbWlseTogJ09zd2FsZCcsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiA1NnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1zY29yZS1sYWJlbCB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGNvbG9yOiAjOEJDMzRBOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1zY29yZWNhcmQtbWluaSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgfQogICAgICAKICAgICAgLnNjLW1pbmktZ3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg5LCAxZnIpOwogICAgICAgIGdhcDogNHB4OwogICAgICB9CiAgICAgIAogICAgICAuc2MtbWluaS1jZWxsIHsKICAgICAgICBhc3BlY3QtcmF0aW86IDE7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4xKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNSk7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1taW5pLWNlbGwuc2MtY3VycmVudCB7IGJhY2tncm91bmQ6ICNGRjk4MDA7IGNvbG9yOiAjZmZmOyB9CiAgICAgIC5zYy1taW5pLWNlbGwuc2MtYmlyZGllIHsgYmFja2dyb3VuZDogI2VmNTM1MDsgY29sb3I6ICNmZmY7IH0KICAgICAgLnNjLW1pbmktY2VsbC5zYy1wYXIgeyBiYWNrZ3JvdW5kOiAjNjZCQjZBOyBjb2xvcjogI2ZmZjsgfQogICAgICAuc2MtbWluaS1jZWxsLnNjLWJvZ2V5IHsgYmFja2dyb3VuZDogIzQyQTVGNTsgY29sb3I6ICNmZmY7IH0KICAgICAgCiAgICAgIC5zYy1zY29yZS1hY3Rpb25zIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGdhcDogMTJweDsKICAgICAgfQogICAgICAKICAgICAgLnNjLWJ0biB7CiAgICAgICAgZmxleDogMTsKICAgICAgICBwYWRkaW5nOiAxNHB4OwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgICAKICAgICAgLnNjLWJ0bi1jYW5jZWwgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMSk7IGNvbG9yOiAjZmZmOyB9CiAgICAgIC5zYy1idG4tc2F2ZSB7IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNGRjk4MDAsICNGNTdDMDApOyBjb2xvcjogI2ZmZjsgfQogICAgICAKICAgICAgLyogSm9pbiBTY3JlZW4gKi8KICAgICAgLnNjLWpvaW4tY29udGFpbmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuNik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgICAgICB3aWR0aDogMzYwcHg7CiAgICAgICAgbWF4LXdpZHRoOiA5NXZ3OwogICAgICAgIG1hcmdpbjogYXV0bzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgbGVmdDogNTAlOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKTsKICAgICAgfQogICAgICAKICAgICAgLnNjLWpvaW4taGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKTsKICAgICAgfQogICAgICAKICAgICAgLnNjLXRpdGxlIHsKICAgICAgICBmb250LWZhbWlseTogJ09zd2FsZCcsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1jbG9zZS1idG4gewogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGJhY2tncm91bmQ6ICNjNjI4Mjg7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgICAKICAgICAgLnNjLWpvaW4tYm9keSB7CiAgICAgICAgcGFkZGluZzogMjRweDsKICAgICAgfQogICAgICAKICAgICAgLnNjLWpvaW4tZmllbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDE4cHg7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1qb2luLWZpZWxkIGxhYmVsIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjYpOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAxcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CiAgICAgIAogICAgICAuc2Mtam9pbi1maWVsZCBpbnB1dCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcGFkZGluZzogMTRweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMyk7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KICAgICAgCiAgICAgIC5zYy1qb2luLWZpZWxkIGlucHV0OmZvY3VzIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJvcmRlci1jb2xvcjogIzRDQUY1MDsKICAgICAgfQogICAgICAKICAgICAgLnNjLWpvaW4tYnRuIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM0Q0FGNTAsICMyRTdEMzIpOwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgYDsKICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpOwogIH0KCiAgLy8gPT09PT09PT09PT09IFBVQkxJQyBBUEkgPT09PT09PT09PT09CgogIHdpbmRvdy5TcG9ydHNDYXN0ID0gewogICAgb3BlbiwKICAgIGNsb3NlLAogICAgbGVhdmUsCiAgICB0b2dnbGVWaWRlbywKICAgIHRvZ2dsZUF1ZGlvLAogICAgY29weUxpbmssCiAgICBzdWJtaXRTY29yZSwKICAgIGdldExlYWRlcmJvYXJkLAogICAgZ2V0U3RhdGU6ICgpID0+ICh7IGV2ZW50SWQsIHJvb21JZCwgcGxheWVySWQsIHVzZXJuYW1lLCBpc0Nvbm5lY3RlZCwgcGxheWVyQ291bnQ6IHBhcnRpY2lwYW50cy5zaXplICsgMSB9KQogIH07CgogIGNvbnNvbGUubG9nKCfwn4+M77iPIFNwb3J0c0Nhc3QgdjIgcmVhZHkhJyk7CiAgY29uc29sZS5sb2coJyAgIFVzYWdlOiBTcG9ydHNDYXN0Lm9wZW4oKScpOwogIAp9KSgpOw=="}]}
    https://whatsonchain.com/tx/76ea17b8fbff2bc56f1c7c29f06d8a83e1027a95605edffc28ec55fb3e982e22