tx · 566CZ2SDxvP2Di1GWdtPpQnXTpzEZtCoERzT5nFbq536

3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS:  -0.02200000 Waves

2023.11.29 11:10 [2864432] smart account 3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS > SELF 0.00000000 Waves

{ "type": 13, "id": "566CZ2SDxvP2Di1GWdtPpQnXTpzEZtCoERzT5nFbq536", "fee": 2200000, "feeAssetId": null, "timestamp": 1701245408460, "version": 1, "sender": "3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS", "senderPublicKey": "8h7G4haeVwXKNHXNHsWkC1miUp5CQtk3WmpBKazQPxRh", "proofs": [ "3rxabfadxLiwRay1nD7icsvWfSDiNr1Mgb6TXW8n758KGdBBgYMPm5tXFfYx22TQLsryU48cUaxJcjFAyhQDy9qp" ], "script": "base64:BgI0CAISAwoBARIDCgEBEgASAwoBCBIDCgEBEgMKAQgSAwoBCBIECgIYERIDCgEIEgASAwoBCD0ADGNvbnRyYWN0RmlsZQIRbDJtcF9zdGFraW5nLnJpZGUAA1NFUAICX18ABnNjYWxlOACAwtcvAAdzY2FsZTE4AICAkLu61q3wDQANc2NhbGUxOEJpZ0ludAkAtgIBBQdzY2FsZTE4ABJBRERSRVNTX0JZVEVTX1NJWkUAGgANQkxPQ0tTX0lOX0RBWQCgCwEIdGhyb3dFcnIBA21zZwkAAgEJAKwCAgkArAICBQxjb250cmFjdEZpbGUCAjogBQNtc2cACmtleUFzc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAgdhc3NldElkBQNuaWwFA1NFUAATa2V5RW1pc3Npb25QZXJCbG9jawkAuQkCCQDMCAICAiVzCQDMCAICEGVtaXNzaW9uUGVyQmxvY2sFA25pbAUDU0VQABlrZXlFbWlzc2lvblBlcmlvZEluQmxvY2tzCQC5CQIJAMwIAgICJXMJAMwIAgIWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwUDbmlsBQNTRVAADWtleVN0YXJ0QmxvY2sJALkJAgkAzAgCAgIlcwkAzAgCAgpzdGFydEJsb2NrBQNuaWwFA1NFUAAQa2V5VG90YWxMcEFtb3VudAkAuQkCCQDMCAICAiVzCQDMCAICDXRvdGFsTHBBbW91bnQFA25pbAUDU0VQABNrZXlUb3RhbEFzc2V0QW1vdW50CQC5CQIJAMwIAgICJXMJAMwIAgIQdG90YWxBc3NldEFtb3VudAUDbmlsBQNTRVAAFmtleVRvdGFsTG9ja2VkTHBBbW91bnQJALkJAgkAzAgCAgIlcwkAzAgCAhN0b3RhbExvY2tlZExwQW1vdW50BQNuaWwFA1NFUAEPa2V5VXNlckxwQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIMdXNlckxwQW1vdW50CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEVa2V5VXNlckxvY2tlZExwQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgISdXNlckxvY2tlZExwQW1vdW50CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAETa2V5VXNlclN0YWtpbmdOb2RlcwELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICEHVzZXJTdGFraW5nTm9kZXMJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARlrZXlVc2VyU3Rha2luZ05vZGVzU2hhcmVzAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIWdXNlclN0YWtpbmdOb2Rlc1NoYXJlcwkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgITdG90YWxBc3NldFdpdGhkcmF3bgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIQdG90YWxBc3NldFN0YWtlZAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABCmtleUhpc3RvcnkDBHR5cGULdXNlckFkZHJlc3MEdHhJZAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQR0eXBlCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIJANgEAQUEdHhJZAUDbmlsBQNTRVABDWZvcm1hdEhpc3RvcnkEC3RvdGFsUHJvZml0BXByaWNlEHRvdGFsQXNzZXRBbW91bnQNdG90YWxMcEFtb3VudAkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQULdG90YWxQcm9maXQJAMwIAgkApgMBBQVwcmljZQkAzAgCCQCkAwEFEHRvdGFsQXNzZXRBbW91bnQJAMwIAgkApAMBBQ10b3RhbExwQW1vdW50BQNuaWwFA1NFUAANdG90YWxMcEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRBrZXlUb3RhbExwQW1vdW50AAAAEHRvdGFsQXNzZXRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUTa2V5VG90YWxBc3NldEFtb3VudAAAABN0b3RhbExvY2tlZExwQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFmtleVRvdGFsTG9ja2VkTHBBbW91bnQAAAANYXNzZXRJZFN0cmluZwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQprZXlBc3NldElkAgVXQVZFUwAMYXNzZXRJZEJ5dGVzAwkAAAIFDWFzc2V0SWRTdHJpbmcCBVdBVkVTBQR1bml0CQDZBAEFDWFzc2V0SWRTdHJpbmcAFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUZa2V5RW1pc3Npb25QZXJpb2RJbkJsb2NrcwUNQkxPQ0tTX0lOX0RBWQARZW1pc3Npb25QZXJQZXJpb2QJAGgCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFE2tleUVtaXNzaW9uUGVyQmxvY2sAAAUWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwAPQURNSU5fTElTVF9TSVpFAAUABlFVT1JVTQADABFUWElEX0JZVEVTX0xFTkdUSAAgARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBHR4SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIJYWxsb3dUeElkCQDMCAIFBHR4SWQFA25pbAUDU0VQARBrZXlGdWxsQWRtaW5Wb3RlAgZwcmVmaXgMYWRtaW5BZGRyZXNzCQC5CQIJAMwIAgUGcHJlZml4CQDMCAIFDGFkbWluQWRkcmVzcwUDbmlsBQNTRVABE2tleUFkbWluQWRkcmVzc0xpc3QACQC5CQIJAMwIAgICJXMJAMwIAgIQYWRtaW5BZGRyZXNzTGlzdAUDbmlsBQNTRVABDmtleUFsbG93ZWRUeElkAAkAuQkCCQDMCAICAiVzCQDMCAICBHR4SWQFA25pbAUDU0VQAQxnZXRBZG1pblZvdGUCBnByZWZpeAVhZG1pbgQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAENZ2V0QWRtaW5zTGlzdAAEByRtYXRjaDAJAJ0IAgUEdGhpcwkBE2tleUFkbWluQWRkcmVzc0xpc3QAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAtQkCBQFzBQNTRVAFA25pbAENaXNJbkFkbWluTGlzdAEHYWRkcmVzcwkBD2NvbnRhaW5zRWxlbWVudAIJAQ1nZXRBZG1pbnNMaXN0AAUHYWRkcmVzcwESZ2VuVm90ZXNLZXlzSGVscGVyAgFhDGFkbWluQWRkcmVzcwQLJHQwMzU1NTM1NzkFAWEEBnJlc3VsdAgFCyR0MDM1NTUzNTc5Al8xBAZwcmVmaXgIBQskdDAzNTU1MzU3OQJfMgkAlAoCCQDNCAIFBnJlc3VsdAkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFDGFkbWluQWRkcmVzcwUGcHJlZml4AQxnZW5Wb3Rlc0tleXMBCWtleVByZWZpeAQJYWRtaW5MaXN0CQETa2V5QWRtaW5BZGRyZXNzTGlzdAAECyR0MDM3MjYzODEwCgACJGwJAQ1nZXRBZG1pbnNMaXN0AAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQlrZXlQcmVmaXgKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEmdlblZvdGVzS2V5c0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUEBnJlc3VsdAgFCyR0MDM3MjYzODEwAl8xBAZwcmVmaXgIBQskdDAzNzI2MzgxMAJfMgUGcmVzdWx0ARBjb3VudFZvdGVzSGVscGVyAgZyZXN1bHQHdm90ZUtleQkAZAIFBnJlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABCmNvdW50Vm90ZXMBBnByZWZpeAQFdm90ZXMJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNvdW50Vm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFARBjbGVhclZvdGVzSGVscGVyAgZyZXN1bHQDa2V5CQDNCAIFBnJlc3VsdAkBC0RlbGV0ZUVudHJ5AQUDa2V5ARNnZXRDbGVhclZvdGVFbnRyaWVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjbGVhclZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEMdm90ZUlOVEVSTkFMBBNjYWxsZXJBZGRyZXNzU3RyaW5nCWtleVByZWZpeAhtaW5Wb3Rlcwp2b3RlUmVzdWx0BAd2b3RlS2V5CQEQa2V5RnVsbEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQQYWRtaW5DdXJyZW50Vm90ZQkBDGdldEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQDZXJyAwkBASEBCQENaXNJbkFkbWluTGlzdAEFE2NhbGxlckFkZHJlc3NTdHJpbmcJAQh0aHJvd0VycgEJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCEiBub3QgaW4gQWRtaW4gbGlzdAMJAAACBRBhZG1pbkN1cnJlbnRWb3RlAAEJAQh0aHJvd0VycgEJAKwCAgUHdm90ZUtleQISIHlvdSBhbHJlYWR5IHZvdGVkBQR1bml0AwkAAAIFA2VycgUDZXJyBAV2b3RlcwkBCmNvdW50Vm90ZXMBBQlrZXlQcmVmaXgDCQBnAgkAZAIFBXZvdGVzAAEFCG1pblZvdGVzBBBjbGVhclZvdGVFbnRyaWVzCQETZ2V0Q2xlYXJWb3RlRW50cmllcwEFCWtleVByZWZpeAkAzggCBRBjbGVhclZvdGVFbnRyaWVzBQp2b3RlUmVzdWx0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd2b3RlS2V5AAEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEZc3RyaW5nTGlzdFRvSW50TGlzdEhlbHBlcgIDYWNjBXZhbHVlCQDNCAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQV2YWx1ZQEYY2FsY1RvdGFsUHJvZml0Rm9ySGVpZ2h0AQFoBApzdGFydEJsb2NrCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAQLc3RhcnRQZXJpb2QJAGsDBQpzdGFydEJsb2NrAAEFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MEDmVsYXBzZWRQZXJpb2RzCQBlAgkAaQIFAWgFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MFC3N0YXJ0UGVyaW9kCQCWAwEJAMwIAgAACQDMCAIJAGgCBRFlbWlzc2lvblBlclBlcmlvZAUOZWxhcHNlZFBlcmlvZHMFA25pbAEPY2FsY1RvdGFsUHJvZml0AAkBGGNhbGNUb3RhbFByb2ZpdEZvckhlaWdodAEFBmhlaWdodAErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAEGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQBkAgUQdG90YWxBc3NldEFtb3VudAkBD2NhbGNUb3RhbFByb2ZpdAAEC3RvdGFsQW1vdW50BAckbWF0Y2gwBQxhc3NldElkQnl0ZXMDCQABAgUHJG1hdGNoMAIEVW5pdAQBdQUHJG1hdGNoMAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQNuaWwDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIJAPAHAgUEdGhpcwUBYgUDbmlsCQACAQILTWF0Y2ggZXJyb3IDCQAAAgUNdG90YWxMcEFtb3VudAAAAAAFC3RvdGFsQW1vdW50AQ9nZXRDdXJyZW50UHJpY2UAAwkBAiE9AgUNdG90YWxMcEFtb3VudAAACQC8AgMJALYCAQkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUABQ1zY2FsZTE4QmlnSW50CQC2AgEFDXRvdGFsTHBBbW91bnQFDXNjYWxlMThCaWdJbnQBF2dldFVzZXJTdGFraW5nTm9kZXNEYXRhAQt1c2VyQWRkcmVzcwQIbm9kZXNSYXcJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBE2tleVVzZXJTdGFraW5nTm9kZXMBBQt1c2VyQWRkcmVzcwIABAlzaGFyZXNSYXcJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBGWtleVVzZXJTdGFraW5nTm9kZXNTaGFyZXMBBQt1c2VyQWRkcmVzcwIABAlub2Rlc0xpc3QJALUJAgUIbm9kZXNSYXcFA1NFUAQQc2hhcmVzU3RyaW5nTGlzdAkAtQkCBQlzaGFyZXNSYXcFA1NFUAQKc2hhcmVzTGlzdAMJAAACBRBzaGFyZXNTdHJpbmdMaXN0BQNuaWwFA25pbAoAAiRsBRBzaGFyZXNTdHJpbmdMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARlzdHJpbmdMaXN0VG9JbnRMaXN0SGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCQCUCgIFCW5vZGVzTGlzdAUKc2hhcmVzTGlzdAEPY2FsY0Fzc2V0RnJvbUxwAQhscEFtb3VudAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALwCAwkAtgIBBQhscEFtb3VudAkBD2dldEN1cnJlbnRQcmljZQAFDXNjYWxlMThCaWdJbnQFA25pbAEPY2FsY0xwRnJvbUFzc2V0AQthc3NldEFtb3VudAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALwCAwkAtgIBBQthc3NldEFtb3VudAUNc2NhbGUxOEJpZ0ludAkBD2dldEN1cnJlbnRQcmljZQAFA25pbAEPZ2V0VXNlckxwQW1vdW50AQt1c2VyQWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEPa2V5VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MAAAEVZ2V0VXNlckxvY2tlZExwQW1vdW50AQt1c2VyQWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEVa2V5VXNlckxvY2tlZExwQW1vdW50AQULdXNlckFkZHJlc3MAAAEgZ2V0VXNlckF2YWlsYWJsZUFzc2V0c1RvV2l0aGRyYXcBC3VzZXJBZGRyZXNzBAx1c2VyTHBBbW91bnQJAQ9nZXRVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwkBD2NhbGNBc3NldEZyb21McAEFDHVzZXJMcEFtb3VudAEPZ2V0U3Rha2VBY3Rpb25zAgFpC3VzZXJBZGRyZXNzBAZjaGVja3MJAMwIAgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEGCQEIdGhyb3dFcnIBAhhzaG91bGQgaW5jbHVkZSAxIHBheW1lbnQJAMwIAgMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFDGFzc2V0SWRCeXRlcwYJAQh0aHJvd0VycgEJAKwCAgIVcGF5bWVudCBzaG91bGQgYmUgaW4gBQ1hc3NldElkU3RyaW5nCQDMCAIDCQBmAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAAYCJ3BheW1lbnQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMAkAzAgCAwkAAAIJAMgBAQkA2QQBBQt1c2VyQWRkcmVzcwUSQUREUkVTU19CWVRFU19TSVpFBgkBCHRocm93RXJyAQIZdXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA1wYXltZW50QW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQPcGF5bWVudExwQW1vdW50CQCgAwEJALwCAwkAtgIBBQ1wYXltZW50QW1vdW50BQ1zY2FsZTE4QmlnSW50CQEPZ2V0Q3VycmVudFByaWNlAAQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEFXVzZXJUb3RhbFN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEXa2V5VXNlclRvdGFsQXNzZXRTdGFrZWQBBQt1c2VyQWRkcmVzcwAABBBuZXdUb3RhbExwQW1vdW50CQBkAgUNdG90YWxMcEFtb3VudAUPcGF5bWVudExwQW1vdW50BBNuZXdUb3RhbEFzc2V0QW1vdW50CQCgAwEJALwCAwkAtgIBBRBuZXdUb3RhbExwQW1vdW50CQEPZ2V0Q3VycmVudFByaWNlAAUNc2NhbGUxOEJpZ0ludAQPbmV3VXNlckxwQW1vdW50CQBkAgUMdXNlckxwQW1vdW50BQ9wYXltZW50THBBbW91bnQEGG5ld1VzZXJUb3RhbFN0YWtlZEFtb3VudAkAZAIFFXVzZXJUb3RhbFN0YWtlZEFtb3VudAUNcGF5bWVudEFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEKa2V5SGlzdG9yeQMCBXN0YWtlBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAkBDWZvcm1hdEhpc3RvcnkECQEPY2FsY1RvdGFsUHJvZml0AAkBD2dldEN1cnJlbnRQcmljZQAFDXRvdGFsTHBBbW91bnQFEHRvdGFsQXNzZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVRvdGFsTHBBbW91bnQFEG5ld1RvdGFsTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsQXNzZXRBbW91bnQFE25ld1RvdGFsQXNzZXRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwUPbmV3VXNlckxwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEXa2V5VXNlclRvdGFsQXNzZXRTdGFrZWQBBQt1c2VyQWRkcmVzcwUYbmV3VXNlclRvdGFsU3Rha2VkQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgESZ2V0V2l0aGRyYXdBY3Rpb25zAgFpFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAx1c2VyTHBBbW91bnQJAQ9nZXRVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwQFY2hlY2sJAMwIAgMJAGYCBRVscEFzc2V0V2l0aGRyYXdBbW91bnQAAAYJAQh0aHJvd0VycgECH0xQIGFtb3VudCBzaG91bGQgYmUgbW9yZSB0aGFuIDAJAMwIAgMJAGcCBQx1c2VyTHBBbW91bnQFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAYJAQh0aHJvd0VycgEJAKwCAgkArAICAihjYW5ub3Qgd2l0aGRyYXcgbW9yZSB0aGFuIGF2YWlsYWJsZSBMUCAoCQCkAwEFDHVzZXJMcEFtb3VudAIBKQUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawQPbmV3VXNlckxwQW1vdW50CQBlAgUMdXNlckxwQW1vdW50BRVscEFzc2V0V2l0aGRyYXdBbW91bnQEE3dpdGhkcmF3QXNzZXRBbW91bnQJAKADAQkAvAIDCQC2AgEFFWxwQXNzZXRXaXRoZHJhd0Ftb3VudAkBD2dldEN1cnJlbnRQcmljZQAFDXNjYWxlMThCaWdJbnQEEG5ld1RvdGFsTHBBbW91bnQJAGUCBQ10b3RhbExwQW1vdW50BRVscEFzc2V0V2l0aGRyYXdBbW91bnQEE25ld1RvdGFsQXNzZXRBbW91bnQJAKADAQkAvAIDCQC2AgEFEG5ld1RvdGFsTHBBbW91bnQJAQ9nZXRDdXJyZW50UHJpY2UABQ1zY2FsZTE4QmlnSW50BBd1c2VyVG90YWxBc3NldFdpdGhkcmF3bgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEaa2V5VXNlclRvdGFsQXNzZXRXaXRoZHJhd24BBQt1c2VyQWRkcmVzcwAABBpuZXdVc2VyVG90YWxBc3NldFdpdGhkcmF3bgkAZAIFF3VzZXJUb3RhbEFzc2V0V2l0aGRyYXduBRN3aXRoZHJhd0Fzc2V0QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlIaXN0b3J5AwIId2l0aGRyYXcFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkCQENZm9ybWF0SGlzdG9yeQQJAQ9jYWxjVG90YWxQcm9maXQACQEPZ2V0Q3VycmVudFByaWNlAAUNdG90YWxMcEFtb3VudAUQdG90YWxBc3NldEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5VG90YWxMcEFtb3VudAUQbmV3VG90YWxMcEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5VG90YWxBc3NldEFtb3VudAUTbmV3VG90YWxBc3NldEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBQ9uZXdVc2VyTHBBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJARprZXlVc2VyVG90YWxBc3NldFdpdGhkcmF3bgEFC3VzZXJBZGRyZXNzBRpuZXdVc2VyVG90YWxBc3NldFdpdGhkcmF3bgkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5U3RhcnRCbG9jawUGaGVpZ2h0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUTd2l0aGRyYXdBc3NldEFtb3VudAUMYXNzZXRJZEJ5dGVzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BGGdldFNldFN0YWtpbmdOb2RlQWN0aW9ucwMLdXNlckFkZHJlc3MLbm9kZUFkZHJlc3MJbm9kZVNoYXJlBAVjaGVjawkAzAgCAwkAAAIJAMgBAQkA2QQBBQt1c2VyQWRkcmVzcwUSQUREUkVTU19CWVRFU19TSVpFBgkBCHRocm93RXJyAQIZdXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZAkAzAgCAwkAAAIJAMgBAQkA2QQBBQtub2RlQWRkcmVzcwUSQUREUkVTU19CWVRFU19TSVpFBgkBCHRocm93RXJyAQIZbm9kZSBhZGRyZXNzIGlzIG5vdCB2YWxpZAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5VXNlclN0YWtpbmdOb2RlcwEFC3VzZXJBZGRyZXNzBQtub2RlQWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEZa2V5VXNlclN0YWtpbmdOb2Rlc1NoYXJlcwEFC3VzZXJBZGRyZXNzCQCkAwEFCW5vZGVTaGFyZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCwFpARNzZXRFbWlzc2lvblBlckJsb2NrARBlbWlzc2lvblBlckJsb2NrBAVjaGVjawkAzAgCAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50CQErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5RW1pc3Npb25QZXJCbG9jawkAlgMBCQDMCAIAAAkAzAgCBRBlbWlzc2lvblBlckJsb2NrBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARlzZXRFbWlzc2lvblBlcmlvZEluQmxvY2tzAQFwBAVjaGVjawkAzAgCAwkAZgIFAXAAAAYJAQh0aHJvd0VycgECKGVtaXNzaW9uIHBlcmlvZCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgMJAAACCAUBaQZjYWxsZXIFBHRoaXMGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5VG90YWxBc3NldEFtb3VudAkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFGWtleUVtaXNzaW9uUGVyaW9kSW5CbG9ja3MFAXAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVzdGFrZQAEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgkBD2dldFN0YWtlQWN0aW9ucwIFAWkFC3VzZXJBZGRyZXNzAWkBCHN0YWtlRm9yAQt1c2VyQWRkcmVzcwkBD2dldFN0YWtlQWN0aW9ucwIFAWkFC3VzZXJBZGRyZXNzAWkBCHdpdGhkcmF3ARN3aXRoZHJhd0Fzc2V0QW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBJscEFtb3VudFRvV2l0aGRyYXcJAKADAQkAvAIDCQC2AgEFE3dpdGhkcmF3QXNzZXRBbW91bnQFDXNjYWxlMThCaWdJbnQJAQ9nZXRDdXJyZW50UHJpY2UABBx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3CQEgZ2V0VXNlckF2YWlsYWJsZUFzc2V0c1RvV2l0aGRyYXcBBQt1c2VyQWRkcmVzcwQWbWluV2l0aGRyYXdBc3NldEFtb3VudAkAoAMBCQC9AgQJAQ9nZXRDdXJyZW50UHJpY2UACQC2AgEAAQUNc2NhbGUxOEJpZ0ludAUHQ0VJTElORwQFY2hlY2sJAMwIAgMJAGYCBRN3aXRoZHJhd0Fzc2V0QW1vdW50AAAGCQEIdGhyb3dFcnIBAiV3aXRoZHJhdyBhbW91bnQgc2hvdWxkIGJlIG1vcmUgdGhhbiAwCQDMCAIDCQBnAgUcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwUTd2l0aGRyYXdBc3NldEFtb3VudAYJAQh0aHJvd0VycgEJAKwCAgkArAICAiVjYW5ub3Qgd2l0aGRyYXcgbW9yZSB0aGFuIGF2YWlsYWJsZSAoCQCkAwEFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcCASkJAMwIAgMJAGcCBRN3aXRoZHJhd0Fzc2V0QW1vdW50BRZtaW5XaXRoZHJhd0Fzc2V0QW1vdW50BgkBCHRocm93RXJyAQkArAICCQCsAgICJHdpdGhkcmF3IGFtb3VudCBpcyB0b28gc21hbGwuIE1pbjogKAkApAMBBRZtaW5XaXRoZHJhd0Fzc2V0QW1vdW50AgEpBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQESZ2V0V2l0aGRyYXdBY3Rpb25zAgUBaQkAlwMBCQDMCAIFDHVzZXJMcEFtb3VudAkAzAgCCQBkAgUSbHBBbW91bnRUb1dpdGhkcmF3AAEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5zZXRTdGFraW5nTm9kZQELbm9kZUFkZHJlc3MEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgkBGGdldFNldFN0YWtpbmdOb2RlQWN0aW9ucwMFC3VzZXJBZGRyZXNzBQtub2RlQWRkcmVzcwBkAWkBFnN0YWtlQW5kU2V0U3Rha2luZ05vZGUBC25vZGVBZGRyZXNzBAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJAM4IAgkBD2dldFN0YWtlQWN0aW9ucwIFAWkFC3VzZXJBZGRyZXNzCQEYZ2V0U2V0U3Rha2luZ05vZGVBY3Rpb25zAwULdXNlckFkZHJlc3MFC25vZGVBZGRyZXNzAGQBaQEHYWlyZHJvcAILYWRkcmVzc0xpc3QKYW1vdW50TGlzdAoBA3N1bQIFYWNjdW0EbmV4dAkAZAIFBWFjY3VtBQRuZXh0BA1hbW91bnRMaXN0U3VtCgACJGwFCmFtb3VudExpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBA3N1bQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgOTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoEBWNoZWNrCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIYc2hvdWxkIGluY2x1ZGUgMSBwYXltZW50CQDMCAIDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQxhc3NldElkQnl0ZXMGCQEIdGhyb3dFcnIBCQCsAgICFXBheW1lbnQgc2hvdWxkIGJlIGluIAUNYXNzZXRJZFN0cmluZwkAzAgCAwkAZgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAAGAidwYXltZW50IGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgMJAAACCQCQAwEFC2FkZHJlc3NMaXN0CQCQAwEFCmFtb3VudExpc3QGCQEIdGhyb3dFcnIBAi1hZGRyZXNzTGlzdCBzaG91bGQgYmUgc2FtZSBzaXplIGFzIGFtb3VudExpc3QJAMwIAgMJAGcCCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUNYW1vdW50TGlzdFN1bQYJAQh0aHJvd0VycgECLXBheW1lbnQgYW1vdW50IGlzIGxlc3MgdGhhbiBzdW0gb2YgYW1vdW50TGlzdAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawoBFmdldEFpcmRyb3BTdGF0ZUNoYW5nZXMCBWFjY3VtC2Fzc2V0QW1vdW50BA0kdDAxNDIwMjE0MjM4BQVhY2N1bQQGcmVzdWx0CAUNJHQwMTQyMDIxNDIzOAJfMQQFaW5kZXgIBQ0kdDAxNDIwMjE0MjM4Al8yBAd0b3RhbExwCAUNJHQwMTQyMDIxNDIzOAJfMwQNYWRkZWRMcEFtb3VudAkBD2NhbGNMcEZyb21Bc3NldAEFC2Fzc2V0QW1vdW50BA91c2VyTG9ja2VkTHBLZXkJARVrZXlVc2VyTG9ja2VkTHBBbW91bnQBCQCRAwIFC2FkZHJlc3NMaXN0BQVpbmRleAQLb2xkTHBBbW91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dG8gaXRzZWxmLgFpARVnZXRVc2VyQXNzZXRzUkVBRE9OTFkBC3VzZXJBZGRyZXNzBAx1c2VyTHBBbW91bnQJAQ9nZXRVc2VyTHBBbW91bnQBBQt1c2VyQWRkcmVzcwQSdXNlckxvY2tlZExwQW1vdW50CQEVZ2V0VXNlckxvY2tlZExwQW1vdW50AQULdXNlckFkZHJlc3MEFXVzZXJMb2NrZWRBc3NldEFtb3VudAkBD2NhbGNBc3NldEZyb21McAEFEnVzZXJMb2NrZWRMcEFtb3VudAQcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwkBIGdldFVzZXJBdmFpbGFibGVBc3NldHNUb1dpdGhkcmF3AQULdXNlckFkZHJlc3MEFXVzZXJUb3RhbFN0YWtlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEXa2V5VXNlclRvdGFsQXNzZXRTdGFrZWQBBQt1c2VyQWRkcmVzcwAABBd1c2VyVG90YWxBc3NldFdpdGhkcmF3bgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEaa2V5VXNlclRvdGFsQXNzZXRXaXRoZHJhd24BBQt1c2VyQWRkcmVzcwAABA0kdDAxNTg2NjE1OTU4CQEXZ2V0VXNlclN0YWtpbmdOb2Rlc0RhdGEBBQt1c2VyQWRkcmVzcwQUdXNlclN0YWtpbmdOb2Rlc0xpc3QIBQ0kdDAxNTg2NjE1OTU4Al8xBBl1c2VyU3Rha2luZ05vZGVTaGFyZXNMaXN0CAUNJHQwMTU4NjYxNTk1OAJfMgkAlAoCBQNuaWwJAJsKCQUMdXNlckxwQW1vdW50BRx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3CQEPZ2V0Q3VycmVudFByaWNlAAUVdXNlclRvdGFsU3Rha2VkQW1vdW50BRd1c2VyVG90YWxBc3NldFdpdGhkcmF3bgUSdXNlckxvY2tlZExwQW1vdW50BRV1c2VyTG9ja2VkQXNzZXRBbW91bnQFFHVzZXJTdGFraW5nTm9kZXNMaXN0BRl1c2VyU3Rha2luZ05vZGVTaGFyZXNMaXN0AWkBFmdldFRvdGFsQXNzZXRzUkVBRE9OTFkACQCUCgIFA25pbAkAlwoFBQ10b3RhbExwQW1vdW50CQErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAJAQ9nZXRDdXJyZW50UHJpY2UABRN0b3RhbExvY2tlZExwQW1vdW50CQEPY2FsY0Fzc2V0RnJvbUxwAQUTdG90YWxMb2NrZWRMcEFtb3VudAFpAQt2b3RlRm9yVHhJZAEEdHhJZAQTY2FsbGVyQWRkcmVzc1N0cmluZwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAlrZXlQcmVmaXgJARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBQR0eElkBAZyZXN1bHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUFsbG93ZWRUeElkAAUEdHhJZAUDbmlsBBFhbGxvd2VkVHhJZE9wdGlvbgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQABANlcnIJAMwIAgMJAAACCQDIAQEJANkEAQUEdHhJZAURVFhJRF9CWVRFU19MRU5HVEgGCQEIdGhyb3dFcnIBCQCsAgIFBHR4SWQCEiBpcyBub3QgdmFsaWQgdHhJZAkAzAgCAwMJAAACBRFhbGxvd2VkVHhJZE9wdGlvbgUEdW5pdAYJAQIhPQIJAQV2YWx1ZQEFEWFsbG93ZWRUeElkT3B0aW9uBQR0eElkBgkBCHRocm93RXJyAQkArAICBQR0eElkAhMgaXMgYWxyZWFkeSBhbGxvd2VkBQNuaWwDCQAAAgUDZXJyBQNlcnIJAQx2b3RlSU5URVJOQUwEBRNjYWxsZXJBZGRyZXNzU3RyaW5nBQlrZXlQcmVmaXgFBlFVT1JVTQUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQIYnlBZG1pbnMJAAACCAUCdHgCaWQJANkEAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQAAgAEB2J5T3duZXIDCQBnAgkAkAMBCQENZ2V0QWRtaW5zTGlzdAAFBlFVT1JVTQcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkDBQhieUFkbWlucwYFB2J5T3duZXKhfaxb", "chainId": 84, "height": 2864432, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HVE1RwwpGWbefxUcsi5gcN6ch3y2rsC7Vy6Ed3cSVdd4 Next: Bw7iWr352KqXzxkVJu15gda5Pzw74Kiv2tqrnDpWNhbw Diff:
OldNewDifferences
248248 let aU = valueOrElse(getString(this, u(r)), "")
249249 let aV = split(aT, b)
250250 let aW = split(aU, b)
251- let aX = {
252- let aj = aW
253- let ak = size(aj)
254- let al = nil
255- func am (an,ao) = if ((ao >= ak))
256- then an
257- else aD(an, aj[ao])
251+ let aX = if ((aW == nil))
252+ then nil
253+ else {
254+ let aj = aW
255+ let ak = size(aj)
256+ let al = nil
257+ func am (an,ao) = if ((ao >= ak))
258+ then an
259+ else aD(an, aj[ao])
258260
259- func ap (an,ao) = if ((ao >= ak))
260- then an
261- else throw("List size exceeds 10")
261+ func ap (an,ao) = if ((ao >= ak))
262+ then an
263+ else throw("List size exceeds 10")
262264
263- ap(am(am(am(am(am(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
264- }
265+ ap(am(am(am(am(am(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
266+ }
265267 $Tuple2(aV, aX)
266268 }
267269
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "l2mp_staking.ride"
55
66 let b = "__"
77
88 let c = 100000000
99
1010 let d = 1000000000000000000
1111
1212 let e = toBigInt(d)
1313
1414 let f = 26
1515
1616 let g = 1440
1717
1818 func h (i) = throw(((a + ": ") + i))
1919
2020
2121 let j = makeString(["%s", "assetId"], b)
2222
2323 let k = makeString(["%s", "emissionPerBlock"], b)
2424
2525 let l = makeString(["%s", "emissionPeriodInBlocks"], b)
2626
2727 let m = makeString(["%s", "startBlock"], b)
2828
2929 let n = makeString(["%s", "totalLpAmount"], b)
3030
3131 let o = makeString(["%s", "totalAssetAmount"], b)
3232
3333 let p = makeString(["%s", "totalLockedLpAmount"], b)
3434
3535 func q (r) = makeString(["%s%s", "userLpAmount", r], b)
3636
3737
3838 func s (r) = makeString(["%s%s", "userLockedLpAmount", r], b)
3939
4040
4141 func t (r) = makeString(["%s%s", "userStakingNodes", r], b)
4242
4343
4444 func u (r) = makeString(["%s%s", "userStakingNodesShares", r], b)
4545
4646
4747 func v (r) = makeString(["%s%s", "totalAssetWithdrawn", r], b)
4848
4949
5050 func w (r) = makeString(["%s%s", "totalAssetStaked", r], b)
5151
5252
5353 func x (y,r,z) = makeString(["%s%s%s", y, r, toBase58String(z)], b)
5454
5555
5656 func A (B,C,D,E) = makeString(["%d%d%d%d", toString(B), toString(C), toString(D), toString(E)], b)
5757
5858
5959 let E = valueOrElse(getInteger(this, n), 0)
6060
6161 let D = valueOrElse(getInteger(this, o), 0)
6262
6363 let F = valueOrElse(getInteger(this, p), 0)
6464
6565 let G = valueOrElse(getString(this, j), "WAVES")
6666
6767 let H = if ((G == "WAVES"))
6868 then unit
6969 else fromBase58String(G)
7070
7171 let I = valueOrElse(getInteger(this, l), g)
7272
7373 let J = (valueOrElse(getInteger(this, k), 0) * I)
7474
7575 let K = 5
7676
7777 let L = 3
7878
7979 let M = 32
8080
8181 func N (z) = makeString(["%s%s%s", "allowTxId", z], b)
8282
8383
8484 func O (P,Q) = makeString([P, Q], b)
8585
8686
8787 func R () = makeString(["%s", "adminAddressList"], b)
8888
8989
9090 func S () = makeString(["%s", "txId"], b)
9191
9292
9393 func T (P,U) = {
9494 let V = O(P, U)
9595 valueOrElse(getInteger(V), 0)
9696 }
9797
9898
9999 func W () = {
100100 let X = getString(this, R())
101101 if ($isInstanceOf(X, "String"))
102102 then {
103103 let Y = X
104104 split(Y, b)
105105 }
106106 else nil
107107 }
108108
109109
110110 func Z (aa) = containsElement(W(), aa)
111111
112112
113113 func ab (ac,Q) = {
114114 let ad = ac
115115 let ae = ad._1
116116 let P = ad._2
117117 $Tuple2((ae :+ O(P, Q)), P)
118118 }
119119
120120
121121 func af (ag) = {
122122 let ah = R()
123123 let ai = {
124124 let aj = W()
125125 let ak = size(aj)
126126 let al = $Tuple2(nil, ag)
127127 func am (an,ao) = if ((ao >= ak))
128128 then an
129129 else ab(an, aj[ao])
130130
131131 func ap (an,ao) = if ((ao >= ak))
132132 then an
133133 else throw("List size exceeds 5")
134134
135135 ap(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5)
136136 }
137137 let ae = ai._1
138138 let P = ai._2
139139 ae
140140 }
141141
142142
143143 func aq (ae,V) = (ae + valueOrElse(getInteger(V), 0))
144144
145145
146146 func ar (P) = {
147147 let as = af(P)
148148 let aj = as
149149 let ak = size(aj)
150150 let al = 0
151151 func am (an,ao) = if ((ao >= ak))
152152 then an
153153 else aq(an, aj[ao])
154154
155155 func ap (an,ao) = if ((ao >= ak))
156156 then an
157157 else throw("List size exceeds 5")
158158
159159 ap(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5)
160160 }
161161
162162
163163 func at (ae,au) = (ae :+ DeleteEntry(au))
164164
165165
166166 func av (P) = {
167167 let as = af(P)
168168 let aj = as
169169 let ak = size(aj)
170170 let al = nil
171171 func am (an,ao) = if ((ao >= ak))
172172 then an
173173 else at(an, aj[ao])
174174
175175 func ap (an,ao) = if ((ao >= ak))
176176 then an
177177 else throw("List size exceeds 5")
178178
179179 ap(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5)
180180 }
181181
182182
183183 func aw (ax,ag,ay,az) = {
184184 let V = O(ag, ax)
185185 let aA = T(ag, ax)
186186 let aB = if (!(Z(ax)))
187187 then h((("Address: " + ax) + " not in Admin list"))
188188 else if ((aA == 1))
189189 then h((V + " you already voted"))
190190 else unit
191191 if ((aB == aB))
192192 then {
193193 let as = ar(ag)
194194 if (((as + 1) >= ay))
195195 then {
196196 let aC = av(ag)
197197 (aC ++ az)
198198 }
199199 else [IntegerEntry(V, 1)]
200200 }
201201 else throw("Strict value is not equal to itself.")
202202 }
203203
204204
205205 func aD (aE,aF) = (aE :+ parseIntValue(aF))
206206
207207
208208 func aG (aH) = {
209209 let aI = valueOrElse(getInteger(this, m), height)
210210 let aJ = fraction(aI, 1, I)
211211 let aK = ((aH / I) - aJ)
212212 max([0, (J * aK)])
213213 }
214214
215215
216216 func aL () = aG(height)
217217
218218
219219 func aM () = {
220220 let aN = (D + aL())
221221 let aO = {
222222 let X = H
223223 if ($isInstanceOf(X, "Unit"))
224224 then {
225225 let aP = X
226226 min([aN, wavesBalance(this).available])
227227 }
228228 else if ($isInstanceOf(X, "ByteVector"))
229229 then {
230230 let aQ = X
231231 min([aN, assetBalance(this, aQ)])
232232 }
233233 else throw("Match error")
234234 }
235235 if ((E == 0))
236236 then 0
237237 else aO
238238 }
239239
240240
241241 func aR () = if ((E != 0))
242242 then fraction(toBigInt(aM()), e, toBigInt(E))
243243 else e
244244
245245
246246 func aS (r) = {
247247 let aT = valueOrElse(getString(this, t(r)), "")
248248 let aU = valueOrElse(getString(this, u(r)), "")
249249 let aV = split(aT, b)
250250 let aW = split(aU, b)
251- let aX = {
252- let aj = aW
253- let ak = size(aj)
254- let al = nil
255- func am (an,ao) = if ((ao >= ak))
256- then an
257- else aD(an, aj[ao])
251+ let aX = if ((aW == nil))
252+ then nil
253+ else {
254+ let aj = aW
255+ let ak = size(aj)
256+ let al = nil
257+ func am (an,ao) = if ((ao >= ak))
258+ then an
259+ else aD(an, aj[ao])
258260
259- func ap (an,ao) = if ((ao >= ak))
260- then an
261- else throw("List size exceeds 10")
261+ func ap (an,ao) = if ((ao >= ak))
262+ then an
263+ else throw("List size exceeds 10")
262264
263- ap(am(am(am(am(am(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
264- }
265+ ap(am(am(am(am(am(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
266+ }
265267 $Tuple2(aV, aX)
266268 }
267269
268270
269271 func aY (aZ) = max([0, toInt(fraction(toBigInt(aZ), aR(), e))])
270272
271273
272274 func ba (bb) = max([0, toInt(fraction(toBigInt(bb), e, aR()))])
273275
274276
275277 func bc (r) = valueOrElse(getInteger(this, q(r)), 0)
276278
277279
278280 func bd (r) = valueOrElse(getInteger(this, s(r)), 0)
279281
280282
281283 func be (r) = {
282284 let bf = bc(r)
283285 aY(bf)
284286 }
285287
286288
287289 func bg (bh,r) = {
288290 let bi = [if ((size(bh.payments) == 1))
289291 then true
290292 else h("should include 1 payment"), if ((bh.payments[0].assetId == H))
291293 then true
292294 else h(("payment should be in " + G)), if ((bh.payments[0].amount > 0))
293295 then true
294296 else "payment amount should be greater than 0", if ((size(fromBase58String(r)) == f))
295297 then true
296298 else h("user address is not valid")]
297299 if ((bi == bi))
298300 then {
299301 let bj = bh.payments[0].amount
300302 let bk = toInt(fraction(toBigInt(bj), e, aR()))
301303 let bf = bc(r)
302304 let bl = valueOrElse(getInteger(this, w(r)), 0)
303305 let bm = (E + bk)
304306 let bn = toInt(fraction(toBigInt(bm), aR(), e))
305307 let bo = (bf + bk)
306308 let bp = (bl + bj)
307309 [StringEntry(x("stake", r, bh.transactionId), A(aL(), aR(), E, D)), IntegerEntry(n, bm), IntegerEntry(o, bn), IntegerEntry(q(r), bo), IntegerEntry(w(r), bp), IntegerEntry(m, height)]
308310 }
309311 else throw("Strict value is not equal to itself.")
310312 }
311313
312314
313315 func bq (bh,br) = {
314316 let r = toString(bh.caller)
315317 let bf = bc(r)
316318 let bs = [if ((br > 0))
317319 then true
318320 else h("LP amount should be more than 0"), if ((bf >= br))
319321 then true
320322 else h((("cannot withdraw more than available LP (" + toString(bf)) + ")"))]
321323 if ((bs == bs))
322324 then {
323325 let bo = (bf - br)
324326 let bt = toInt(fraction(toBigInt(br), aR(), e))
325327 let bm = (E - br)
326328 let bn = toInt(fraction(toBigInt(bm), aR(), e))
327329 let bu = valueOrElse(getInteger(this, v(r)), 0)
328330 let bv = (bu + bt)
329331 [StringEntry(x("withdraw", r, bh.transactionId), A(aL(), aR(), E, D)), IntegerEntry(n, bm), IntegerEntry(o, bn), IntegerEntry(q(r), bo), IntegerEntry(v(r), bv), IntegerEntry(m, height), ScriptTransfer(bh.caller, bt, H)]
330332 }
331333 else throw("Strict value is not equal to itself.")
332334 }
333335
334336
335337 func bw (r,bx,by) = {
336338 let bs = [if ((size(fromBase58String(r)) == f))
337339 then true
338340 else h("user address is not valid"), if ((size(fromBase58String(bx)) == f))
339341 then true
340342 else h("node address is not valid")]
341343 if ((bs == bs))
342344 then [StringEntry(t(r), bx), StringEntry(u(r), toString(by))]
343345 else throw("Strict value is not equal to itself.")
344346 }
345347
346348
347349 @Callable(bh)
348350 func setEmissionPerBlock (bz) = {
349351 let bs = [if ((bh.caller == this))
350352 then true
351353 else h("permission denied")]
352354 if ((bs == bs))
353355 then [IntegerEntry(o, aM()), IntegerEntry(m, height), IntegerEntry(k, max([0, bz]))]
354356 else throw("Strict value is not equal to itself.")
355357 }
356358
357359
358360
359361 @Callable(bh)
360362 func setEmissionPeriodInBlocks (bA) = {
361363 let bs = [if ((bA > 0))
362364 then true
363365 else h("emission period should be greater than 0"), if ((bh.caller == this))
364366 then true
365367 else h("permission denied")]
366368 if ((bs == bs))
367369 then [IntegerEntry(o, aM()), IntegerEntry(m, height), IntegerEntry(l, bA)]
368370 else throw("Strict value is not equal to itself.")
369371 }
370372
371373
372374
373375 @Callable(bh)
374376 func stake () = {
375377 let r = toString(bh.caller)
376378 bg(bh, r)
377379 }
378380
379381
380382
381383 @Callable(bh)
382384 func stakeFor (r) = bg(bh, r)
383385
384386
385387
386388 @Callable(bh)
387389 func withdraw (bt) = {
388390 let r = toString(bh.caller)
389391 let bf = bc(r)
390392 let bB = toInt(fraction(toBigInt(bt), e, aR()))
391393 let bC = be(r)
392394 let bD = toInt(fraction(aR(), toBigInt(1), e, CEILING))
393395 let bs = [if ((bt > 0))
394396 then true
395397 else h("withdraw amount should be more than 0"), if ((bC >= bt))
396398 then true
397399 else h((("cannot withdraw more than available (" + toString(bC)) + ")")), if ((bt >= bD))
398400 then true
399401 else h((("withdraw amount is too small. Min: (" + toString(bD)) + ")"))]
400402 if ((bs == bs))
401403 then bq(bh, min([bf, (bB + 1)]))
402404 else throw("Strict value is not equal to itself.")
403405 }
404406
405407
406408
407409 @Callable(bh)
408410 func setStakingNode (bx) = {
409411 let r = toString(bh.caller)
410412 bw(r, bx, 100)
411413 }
412414
413415
414416
415417 @Callable(bh)
416418 func stakeAndSetStakingNode (bx) = {
417419 let r = toString(bh.caller)
418420 (bg(bh, r) ++ bw(r, bx, 100))
419421 }
420422
421423
422424
423425 @Callable(bh)
424426 func airdrop (bE,bF) = {
425427 func bG (bH,bI) = (bH + bI)
426428
427429 let bJ = {
428430 let aj = bF
429431 let ak = size(aj)
430432 let al = 0
431433 func am (an,ao) = if ((ao >= ak))
432434 then an
433435 else bG(an, aj[ao])
434436
435437 func ap (an,ao) = if ((ao >= ak))
436438 then an
437439 else throw("List size exceeds 90")
438440
439441 ap(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(am(al, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90)
440442 }
441443 let bs = [if ((size(bh.payments) == 1))
442444 then true
443445 else h("should include 1 payment"), if ((bh.payments[0].assetId == H))
444446 then true
445447 else h(("payment should be in " + G)), if ((bh.payments[0].amount > 0))
446448 then true
447449 else "payment amount should be greater than 0", if ((size(bE) == size(bF)))
448450 then true
449451 else h("addressList should be same size as amountList"), if ((bh.payments[0].amount >= bJ))
450452 then true
451453 else h("payment amount is less than sum of amountList")]
452454 if ((bs == bs))
453455 then {
454456 func bK (bH,bb) = {
455457 let bL = bH
456458 let ae = bL._1
457459 let bM = bL._2
458460 let bN = bL._3
459461 let bO = ba(bb)
460462 let bP = s(bE[bM])
461463 let bQ = valueOrElse(getInteger(this, bP), 0)
462464 $Tuple3((ae :+ IntegerEntry(bP, (bQ + bO))), (bM + 1), (bN + bO))
463465 }
464466
465467 let bR = {
466468 let aj = bF
467469 let ak = size(aj)
468470 let al = $Tuple3(nil, 0, 0)
469471 func bS (an,ao) = if ((ao >= ak))
470472 then an
471473 else bK(an, aj[ao])
472474
473475 func bT (an,ao) = if ((ao >= ak))
474476 then an
475477 else throw("List size exceeds 90")
476478
477479 bT(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(bS(al, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90)
478480 }
479481 let bU = bR._1
480482 let bV = bR._2
481483 let bW = bR._3
482484 ([IntegerEntry(p, (F + bW)), IntegerEntry(n, (E + bW)), IntegerEntry(o, (D + bJ))] ++ bU)
483485 }
484486 else throw("Strict value is not equal to itself.")
485487 }
486488
487489
488490
489491 @Callable(bh)
490492 func getUserAssetsREADONLY (r) = {
491493 let bf = bc(r)
492494 let bX = bd(r)
493495 let bY = aY(bX)
494496 let bC = be(r)
495497 let bl = valueOrElse(getInteger(this, w(r)), 0)
496498 let bu = valueOrElse(getInteger(this, v(r)), 0)
497499 let bZ = aS(r)
498500 let ca = bZ._1
499501 let cb = bZ._2
500502 $Tuple2(nil, $Tuple9(bf, bC, aR(), bl, bu, bX, bY, ca, cb))
501503 }
502504
503505
504506
505507 @Callable(bh)
506508 func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple5(E, aM(), aR(), F, aY(F)))
507509
508510
509511
510512 @Callable(bh)
511513 func voteForTxId (z) = {
512514 let ax = toBase58String(bh.caller.bytes)
513515 let ag = N(z)
514516 let ae = [StringEntry(S(), z)]
515517 let cc = getString(this, S())
516518 let aB = [if ((size(fromBase58String(z)) == M))
517519 then true
518520 else h((z + " is not valid txId")), if (if ((cc == unit))
519521 then true
520522 else (value(cc) != z))
521523 then true
522524 else h((z + " is already allowed"))]
523525 if ((aB == aB))
524526 then aw(ax, ag, L, ae)
525527 else throw("Strict value is not equal to itself.")
526528 }
527529
528530
529531 @Verifier(cd)
530532 func ce () = {
531533 let cf = (cd.id == fromBase58String(valueOrElse(getString(this, S()), "")))
532534 let cg = if ((size(W()) >= L))
533535 then false
534536 else sigVerify(cd.bodyBytes, cd.proofs[0], cd.senderPublicKey)
535537 if (cf)
536538 then true
537539 else cg
538540 }
539541

github/deemru/w8io/169f3d6 
89.74 ms