jM˜+{"name":"EncodedFiles","files":[{"name":"classmodalmanager9.html","size":8286,"type":"text/html","content":"CmNsYXNzIE1vZGFsTWFuYWdlciB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICB0aGlzLm1vZGFscyA9IG5ldyBNYXAoKTsKICAgICAgICB0aGlzLmVuaGFuY2VkRWRpdG9yID0gbnVsbDsKICAgICAgICB0aGlzLkVOSEFOQ0VEX0VESVRPUl9UWElEID0gJzAxMTI3MjhjNzAyNzYwMGY0MGVlMGRhYWUyNmMzMzczODAyZTRjYWQzNGVlMzZlMzNkOTU0NDAwYTY2NmVhZDQnOwogICAgfQoKICAgIGluaXRpYWxpemUoKSB7CiAgICAgICAgLy8gU2ltcGxpZmllZCBpbml0aWFsaXphdGlvbiAtIG5vIG5lZWQgdG8gcmVwbGFjZSBjb21wb3NlIGJ1dHRvbgogICAgICAgIGNvbnN0IHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKICAgICAgICBzdHlsZS50ZXh0Q29udGVudCA9IGAKICAgICAgICAgICAgLm1vZGFsLWVuaGFuY2VkIHsKICAgICAgICAgICAgICAgIHotaW5kZXg6IDExMDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLm1vZGFsLWVuaGFuY2VkIC5tb2RhbC1jb250ZW50IHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogOTAwcHg7CiAgICAgICAgICAgIH0KICAgICAgICBgOwogICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpOwogICAgfQoKYXN5bmMgc2hvd0VuaGFuY2VkQ29tcG9zZSgpIHsKICAgIHRyeSB7CiAgICAgICAgaWYgKCF0aGlzLmVuaGFuY2VkRWRpdG9yKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdMb2FkaW5nIGVuaGFuY2VkIGVkaXRvci4uLicpOwogICAgICAgICAgICBjb25zdCBlZGl0b3JDb2RlID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbih0aGlzLkVOSEFOQ0VEX0VESVRPUl9UWElEKTsKICAgICAgICAgICAgaWYgKCFlZGl0b3JDb2RlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBlZGl0b3IgY29kZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFZGl0b3IgY29kZSBmZXRjaGVkLCBjcmVhdGluZyBzY3JpcHQuLi4nKTsKCiAgICAgICAgICAgIC8vIENyZWF0ZSBhbmQgaW5qZWN0IHRoZSBzY3JpcHQKICAgICAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgICAgIHNjcmlwdC50ZXh0Q29udGVudCA9IGVkaXRvckNvZGU7CiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKICAgICAgICAgICAgY29uc29sZS5sb2coJ1NjcmlwdCBpbmplY3RlZCwgY3JlYXRpbmcgbW9kYWwuLi4nKTsKCiAgICAgICAgICAgIC8vIENyZWF0ZSBlbmhhbmNlZCBjb21wb3NlIG1vZGFsCiAgICAgICAgICAgIGNvbnN0IG1vZGFsSFRNTCA9IGAKICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImNvbXBvc2VNb2RhbCIgY2xhc3M9Im1vZGFsIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50IiBzdHlsZT0id2lkdGg6IDgwJTsgbWF4LXdpZHRoOiA4MDBweDsiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyPk5ldyBNZXNzYWdlPC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9Im1vZGFsLWNsb3NlIiBvbmNsaWNrPSJoaWRlQ29tcG9zZU1vZGFsKCkiPsOXPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJyZWNpcGllbnQiPlJlY2lwaWVudCBBZGRyZXNzPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InJlY2lwaWVudCIgcGxhY2Vob2xkZXI9IkJTViBBZGRyZXNzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Im1lc3NhZ2VUZXh0Ij5NZXNzYWdlPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9Im1lc3NhZ2VUZXh0IiByb3dzPSI0Ij48L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidG4tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiIG9uY2xpY2s9ImhpZGVDb21wb3NlTW9kYWwoKSI+Q2FuY2VsPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIG9uY2xpY2s9InNlbmRNZXNzYWdlKCkiPlNlbmQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj5gOwoKICAgICAgICAgICAgY29uc3QgbW9kYWwgPSB0aGlzLmNyZWF0ZU1vZGFsKCdjb21wb3NlTW9kYWwnLCBtb2RhbEhUTUwpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZSBlZGl0b3IgYWZ0ZXIgbW9kYWwgaXMgaW4gRE9NCiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDApKTsKICAgICAgICAgICAgdGhpcy5lbmhhbmNlZEVkaXRvciA9IG5ldyBFbmhhbmNlZEVkaXRvcigpOwogICAgICAgICAgICBhd2FpdCB0aGlzLmVuaGFuY2VkRWRpdG9yLmluaXRpYWxpemUobW9kYWwpOwogICAgICAgICAgICBjb25zb2xlLmxvZygnRW5oYW5jZWQgZWRpdG9yIGluaXRpYWxpemVkJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBTaG93IHRoZSBtb2RhbAogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb21wb3NlTW9kYWwnKS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnOwoKICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxvYWQgZW5oYW5jZWQgZWRpdG9yOicsIGVycm9yKTsKICAgICAgICBhbGVydCgnRmFpbGVkIHRvIGxvYWQgZW5oYW5jZWQgZWRpdG9yOiAnICsgZXJyb3IubWVzc2FnZSk7CiAgICB9Cn0KCiAgICBhc3luYyBzZW5kRW5oYW5jZWRNZXNzYWdlKCkgewogICAgICAgIGlmICghdGhpcy5lbmhhbmNlZEVkaXRvcikgcmV0dXJuOwoKICAgICAgICBjb25zdCByZWNpcGllbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZW5oYW5jZWQtcmVjaXBpZW50JykudmFsdWUudHJpbSgpOwogICAgICAgIGlmICghcmVjaXBpZW50KSB7CiAgICAgICAgICAgIGFsZXJ0KCdQbGVhc2UgZW50ZXIgYSByZWNpcGllbnQgYWRkcmVzcycpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCBwcml2YXRlS2V5V0lGID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3ByaXZhdGVLZXknKTsKICAgICAgICAgICAgaWYgKCFwcml2YXRlS2V5V0lGKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSByZXN0b3JlIHlvdXIgd2FsbGV0IGZpcnN0Jyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmVuaGFuY2VkRWRpdG9yLmdldENvbnRlbnQoKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIENyZWF0ZSBDaGFpbkRpc2sgZm9ybWF0IG1lc3NhZ2UKICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBbewogICAgICAgICAgICAgICAgbmFtZTogYG1lc3NhZ2VfJHtEYXRlLm5vdygpfS50eHRgLAogICAgICAgICAgICAgICAgc2l6ZTogY29udGVudC50ZXh0Lmxlbmd0aCwKICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGNvbnRlbnQudGV4dCkpKQogICAgICAgICAgICB9XTsKCiAgICAgICAgICAgIC8vIEFkZCBhbGwgYXR0YWNobWVudHMKICAgICAgICAgICAgY29udGVudC5hdHRhY2htZW50cy5mb3JFYWNoKGF0dGFjaG1lbnQgPT4gewogICAgICAgICAgICAgICAgbGV0IGZpbGVDb250ZW50ID0gYXR0YWNobWVudC5jb250ZW50OwogICAgICAgICAgICAgICAgaWYgKGZpbGVDb250ZW50LnN0YXJ0c1dpdGgoJ2RhdGE6JykpIHsKICAgICAgICAgICAgICAgICAgICBmaWxlQ29udGVudCA9IGZpbGVDb250ZW50LnNwbGl0KCcsJylbMV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmaWxlcy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICBuYW1lOiBhdHRhY2htZW50LmZpbGVOYW1lLAogICAgICAgICAgICAgICAgICAgIHNpemU6IGZpbGVDb250ZW50Lmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICB0eXBlOiBhdHRhY2htZW50LmZpbGVUeXBlLAogICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGZpbGVDb250ZW50CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBjb25zdCBtZXNzYWdlRGF0YSA9IHsKICAgICAgICAgICAgICAgIG5hbWU6ICJNZXNzYWdlRGF0YSIsCiAgICAgICAgICAgICAgICBmaWxlczogZmlsZXMKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGNvbnN0IHR4aWQgPSBhd2FpdCBzZW5kTWVzc2FnZUFuZFBheW1lbnQoCiAgICAgICAgICAgICAgICBtZXNzYWdlRGF0YSwKICAgICAgICAgICAgICAgIHJlY2lwaWVudCwKICAgICAgICAgICAgICAgIDYwMCwKICAgICAgICAgICAgICAgIHByaXZhdGVLZXlXSUYKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHNhdmVTZW50TWVzc2FnZShyZWNpcGllbnQsIHR4aWQpOwogICAgICAgICAgICBhbGVydChgTWVzc2FnZSBzZW50IHN1Y2Nlc3NmdWxseSFcblRYSUQ6ICR7dHhpZH1gKTsKICAgICAgICAgICAgdGhpcy5oaWRlRW5oYW5jZWRDb21wb3NlKCk7CgogICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NlbmQgZXJyb3I6JywgZXJyb3IpOwogICAgICAgICAgICBhbGVydCgnRmFpbGVkIHRvIHNlbmQgbWVzc2FnZTogJyArIGVycm9yLm1lc3NhZ2UpOwogICAgICAgIH0KICAgIH0KCiAgICBoaWRlRW5oYW5jZWRDb21wb3NlKCkgewogICAgICAgIGlmICh0aGlzLmVuaGFuY2VkRWRpdG9yKSB7CiAgICAgICAgICAgIHRoaXMuZW5oYW5jZWRFZGl0b3IuY2xlYXIoKTsKICAgICAgICAgICAgdGhpcy5lbmhhbmNlZEVkaXRvci5kZXN0cm95KCk7CiAgICAgICAgICAgIHRoaXMuZW5oYW5jZWRFZGl0b3IgPSBudWxsOwogICAgICAgIH0KICAgICAgICB0aGlzLmhpZGVNb2RhbCgnZW5oYW5jZWRDb21wb3NlTW9kYWwnKTsKICAgIH0KCiAgICBhc3luYyBzZW5kRW5oYW5jZWRNZXNzYWdlKCkgewogICAgICAgIGlmICghdGhpcy5lbmhhbmNlZEVkaXRvcikgcmV0dXJuOwoKICAgICAgICBjb25zdCByZWNpcGllbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVjaXBpZW50JykudmFsdWUudHJpbSgpOwogICAgICAgIGlmICghcmVjaXBpZW50KSB7CiAgICAgICAgICAgIGFsZXJ0KCdQbGVhc2UgZW50ZXIgYSByZWNpcGllbnQgYWRkcmVzcycpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCBwcml2YXRlS2V5V0lGID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3ByaXZhdGVLZXknKTsKICAgICAgICAgICAgaWYgKCFwcml2YXRlS2V5V0lGKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSByZXN0b3JlIHlvdXIgd2FsbGV0IGZpcnN0Jyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmVuaGFuY2VkRWRpdG9yLmdldENvbnRlbnQoKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIENyZWF0ZSBDaGFpbkRpc2sgZm9ybWF0IG1lc3NhZ2UKICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBbewogICAgICAgICAgICAgICAgbmFtZTogYG1lc3NhZ2VfJHtEYXRlLm5vdygpfS50eHRgLAogICAgICAgICAgICAgICAgc2l6ZTogY29udGVudC50ZXh0Lmxlbmd0aCwKICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGNvbnRlbnQudGV4dCkpKQogICAgICAgICAgICB9XTsKCiAgICAgICAgICAgIC8vIEFkZCBhbGwgYXR0YWNobWVudHMKICAgICAgICAgICAgY29udGVudC5hdHRhY2htZW50cy5mb3JFYWNoKGF0dGFjaG1lbnQgPT4gewogICAgICAgICAgICAgICAgbGV0IGZpbGVDb250ZW50ID0gYXR0YWNobWVudC5jb250ZW50OwogICAgICAgICAgICAgICAgaWYgKGZpbGVDb250ZW50LnN0YXJ0c1dpdGgoJ2RhdGE6JykpIHsKICAgICAgICAgICAgICAgICAgICBmaWxlQ29udGVudCA9IGZpbGVDb250ZW50LnNwbGl0KCcsJylbMV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmaWxlcy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICBuYW1lOiBhdHRhY2htZW50LmZpbGVOYW1lLAogICAgICAgICAgICAgICAgICAgIHNpemU6IGZpbGVDb250ZW50Lmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICB0eXBlOiBhdHRhY2htZW50LmZpbGVUeXBlLAogICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGZpbGVDb250ZW50CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBjb25zdCBtZXNzYWdlRGF0YSA9IHsKICAgICAgICAgICAgICAgIG5hbWU6ICJNZXNzYWdlRGF0YSIsCiAgICAgICAgICAgICAgICBmaWxlczogZmlsZXMKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGNvbnN0IHR4aWQgPSBhd2FpdCBzZW5kTWVzc2FnZUFuZFBheW1lbnQoCiAgICAgICAgICAgICAgICBtZXNzYWdlRGF0YSwKICAgICAgICAgICAgICAgIHJlY2lwaWVudCwKICAgICAgICAgICAgICAgIDYwMCwKICAgICAgICAgICAgICAgIHByaXZhdGVLZXlXSUYKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHNhdmVTZW50TWVzc2FnZShyZWNpcGllbnQsIHR4aWQpOwogICAgICAgICAgICBhbGVydChgTWVzc2FnZSBzZW50IHN1Y2Nlc3NmdWxseSFcblRYSUQ6ICR7dHhpZH1gKTsKICAgICAgICAgICAgdGhpcy5oaWRlRW5oYW5jZWRDb21wb3NlKCk7CgogICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NlbmQgZXJyb3I6JywgZXJyb3IpOwogICAgICAgICAgICBhbGVydCgnRmFpbGVkIHRvIHNlbmQgbWVzc2FnZTogJyArIGVycm9yLm1lc3NhZ2UpOwogICAgICAgIH0KICAgIH0KCiAgICBjcmVhdGVNb2RhbChpZCwgY29udGVudCkgewogICAgICAgIGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgbW9kYWwuaWQgPSBpZDsKICAgICAgICBtb2RhbC5jbGFzc05hbWUgPSAnbW9kYWwnOwogICAgICAgIG1vZGFsLmlubmVySFRNTCA9IGNvbnRlbnQ7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtb2RhbCk7CiAgICAgICAgdGhpcy5tb2RhbHMuc2V0KGlkLCBtb2RhbCk7CiAgICAgICAgcmV0dXJuIG1vZGFsOwogICAgfQoKICAgIGhpZGVNb2RhbChpZCkgewogICAgICAgIGNvbnN0IG1vZGFsID0gdGhpcy5tb2RhbHMuZ2V0KGlkKTsKICAgICAgICBpZiAobW9kYWwpIHsKICAgICAgICAgICAgbW9kYWwuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICB9CiAgICB9CgogICAgc2hvd01vZGFsKGlkKSB7CiAgICAgICAgY29uc3QgbW9kYWwgPSB0aGlzLm1vZGFscy5nZXQoaWQpOwogICAgICAgIGlmIChtb2RhbCkgewogICAgICAgICAgICBtb2RhbC5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnOwogICAgICAgIH0KICAgIH0KCiAgICBkZXN0cm95TW9kYWwoaWQpIHsKICAgICAgICBjb25zdCBtb2RhbCA9IHRoaXMubW9kYWxzLmdldChpZCk7CiAgICAgICAgaWYgKG1vZGFsKSB7CiAgICAgICAgICAgIG1vZGFsLnJlbW92ZSgpOwogICAgICAgICAgICB0aGlzLm1vZGFscy5kZWxldGUoaWQpOwogICAgICAgIH0KICAgIH0KfQoKLy8gR2xvYmFsIGluc3RhbmNlCndpbmRvdy5tb2RhbE1hbmFnZXIgPSBuZXcgTW9kYWxNYW5hZ2VyKCk7"}]}
https://whatsonchain.com/tx/6dc9fe6e8fcd4151c9d4ea9483c3c1ec888b2e55a157cd085b5c82d3594cf9e9