tx · C535cxDyehEmG37nqYHoKcV4GDUjkKMxvz6SPyNuZYeX

3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS:  -0.02300000 Waves

2023.11.30 15:48 [2866157] smart account 3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS > SELF 0.00000000 Waves

{ "type": 13, "id": "C535cxDyehEmG37nqYHoKcV4GDUjkKMxvz6SPyNuZYeX", "fee": 2300000, "feeAssetId": null, "timestamp": 1701348549104, "version": 1, "sender": "3N4yYqBkTUq1mDdHhvAd3St7spCbm84DytS", "senderPublicKey": "8h7G4haeVwXKNHXNHsWkC1miUp5CQtk3WmpBKazQPxRh", "proofs": [ "4sLWUkX2PrGcEAWVVJGkDXkE34ENNAteQABDARdVpH87L2bku1GWCpB81ZAyVXLp26aTb2YZ4SJHxxZxVfJJpk2u" ], "script": "base64:BgI6CAISAwoBARIDCgEBEgASAwoBCBIDCgEBEgMKAQgSAwoBCBIECgIICBIECgIYERIDCgEIEgASAwoBCEEADGNvbnRyYWN0RmlsZQIRbDJtcF9zdGFraW5nLnJpZGUAA1NFUAICX18ABnNjYWxlOACAwtcvAAdzY2FsZTE4AICAkLu61q3wDQANc2NhbGUxOEJpZ0ludAkAtgIBBQdzY2FsZTE4ABJBRERSRVNTX0JZVEVTX1NJWkUAGgANQkxPQ0tTX0lOX0RBWQCgCwEIdGhyb3dFcnIBA21zZwkAAgEJAKwCAgkArAICBQxjb250cmFjdEZpbGUCAjogBQNtc2cACmtleUFzc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAgdhc3NldElkBQNuaWwFA1NFUAATa2V5RW1pc3Npb25QZXJCbG9jawkAuQkCCQDMCAICAiVzCQDMCAICEGVtaXNzaW9uUGVyQmxvY2sFA25pbAUDU0VQABlrZXlFbWlzc2lvblBlcmlvZEluQmxvY2tzCQC5CQIJAMwIAgICJXMJAMwIAgIWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwUDbmlsBQNTRVAADWtleVN0YXJ0QmxvY2sJALkJAgkAzAgCAgIlcwkAzAgCAgpzdGFydEJsb2NrBQNuaWwFA1NFUAAQa2V5VG90YWxMcEFtb3VudAkAuQkCCQDMCAICAiVzCQDMCAICDXRvdGFsTHBBbW91bnQFA25pbAUDU0VQABNrZXlUb3RhbEFzc2V0QW1vdW50CQC5CQIJAMwIAgICJXMJAMwIAgIQdG90YWxBc3NldEFtb3VudAUDbmlsBQNTRVAAFmtleVRvdGFsTG9ja2VkTHBBbW91bnQJALkJAgkAzAgCAgIlcwkAzAgCAhN0b3RhbExvY2tlZExwQW1vdW50BQNuaWwFA1NFUAEPa2V5VXNlckxwQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIMdXNlckxwQW1vdW50CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEVa2V5VXNlckxvY2tlZExwQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgISdXNlckxvY2tlZExwQW1vdW50CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAETa2V5VXNlclN0YWtpbmdOb2RlcwELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICEHVzZXJTdGFraW5nTm9kZXMJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARlrZXlVc2VyU3Rha2luZ05vZGVzU2hhcmVzAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIWdXNlclN0YWtpbmdOb2Rlc1NoYXJlcwkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgITdG90YWxBc3NldFdpdGhkcmF3bgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIQdG90YWxBc3NldFN0YWtlZAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABCmtleUhpc3RvcnkDBHR5cGULdXNlckFkZHJlc3MEdHhJZAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQR0eXBlCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIJANgEAQUEdHhJZAUDbmlsBQNTRVABDWZvcm1hdEhpc3RvcnkEC3RvdGFsUHJvZml0BXByaWNlEHRvdGFsQXNzZXRBbW91bnQNdG90YWxMcEFtb3VudAkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQULdG90YWxQcm9maXQJAMwIAgkApgMBBQVwcmljZQkAzAgCCQCkAwEFEHRvdGFsQXNzZXRBbW91bnQJAMwIAgkApAMBBQ10b3RhbExwQW1vdW50BQNuaWwFA1NFUAANdG90YWxMcEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRBrZXlUb3RhbExwQW1vdW50AAAAEHRvdGFsQXNzZXRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUTa2V5VG90YWxBc3NldEFtb3VudAAAABN0b3RhbExvY2tlZExwQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFmtleVRvdGFsTG9ja2VkTHBBbW91bnQAAAANYXNzZXRJZFN0cmluZwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQprZXlBc3NldElkAgVXQVZFUwAMYXNzZXRJZEJ5dGVzAwkAAAIFDWFzc2V0SWRTdHJpbmcCBVdBVkVTBQR1bml0CQDZBAEFDWFzc2V0SWRTdHJpbmcAFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUZa2V5RW1pc3Npb25QZXJpb2RJbkJsb2NrcwUNQkxPQ0tTX0lOX0RBWQAQZW1pc3Npb25QZXJCbG9jawkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRNrZXlFbWlzc2lvblBlckJsb2NrAAAAEWVtaXNzaW9uUGVyUGVyaW9kCQBoAgUQZW1pc3Npb25QZXJCbG9jawUWZW1pc3Npb25QZXJpb2RJbkJsb2NrcwAPQURNSU5fTElTVF9TSVpFAAUABlFVT1JVTQADABFUWElEX0JZVEVTX0xFTkdUSAAgARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBHR4SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIJYWxsb3dUeElkCQDMCAIFBHR4SWQFA25pbAUDU0VQARBrZXlGdWxsQWRtaW5Wb3RlAgZwcmVmaXgMYWRtaW5BZGRyZXNzCQC5CQIJAMwIAgUGcHJlZml4CQDMCAIFDGFkbWluQWRkcmVzcwUDbmlsBQNTRVABE2tleUFkbWluQWRkcmVzc0xpc3QACQC5CQIJAMwIAgICJXMJAMwIAgIQYWRtaW5BZGRyZXNzTGlzdAUDbmlsBQNTRVABDmtleUFsbG93ZWRUeElkAAkAuQkCCQDMCAICAiVzCQDMCAICBHR4SWQFA25pbAUDU0VQAQxnZXRBZG1pblZvdGUCBnByZWZpeAVhZG1pbgQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAENZ2V0QWRtaW5zTGlzdAAEByRtYXRjaDAJAJ0IAgUEdGhpcwkBE2tleUFkbWluQWRkcmVzc0xpc3QAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAtQkCBQFzBQNTRVAFA25pbAENaXNJbkFkbWluTGlzdAEHYWRkcmVzcwkBD2NvbnRhaW5zRWxlbWVudAIJAQ1nZXRBZG1pbnNMaXN0AAUHYWRkcmVzcwESZ2VuVm90ZXNLZXlzSGVscGVyAgFhDGFkbWluQWRkcmVzcwQLJHQwMzU5NTM2MTkFAWEEBnJlc3VsdAgFCyR0MDM1OTUzNjE5Al8xBAZwcmVmaXgIBQskdDAzNTk1MzYxOQJfMgkAlAoCCQDNCAIFBnJlc3VsdAkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFDGFkbWluQWRkcmVzcwUGcHJlZml4AQxnZW5Wb3Rlc0tleXMBCWtleVByZWZpeAQJYWRtaW5MaXN0CQETa2V5QWRtaW5BZGRyZXNzTGlzdAAECyR0MDM3NjYzODUwCgACJGwJAQ1nZXRBZG1pbnNMaXN0AAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQlrZXlQcmVmaXgKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEmdlblZvdGVzS2V5c0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUEBnJlc3VsdAgFCyR0MDM3NjYzODUwAl8xBAZwcmVmaXgIBQskdDAzNzY2Mzg1MAJfMgUGcmVzdWx0ARBjb3VudFZvdGVzSGVscGVyAgZyZXN1bHQHdm90ZUtleQkAZAIFBnJlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABCmNvdW50Vm90ZXMBBnByZWZpeAQFdm90ZXMJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNvdW50Vm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFARBjbGVhclZvdGVzSGVscGVyAgZyZXN1bHQDa2V5CQDNCAIFBnJlc3VsdAkBC0RlbGV0ZUVudHJ5AQUDa2V5ARNnZXRDbGVhclZvdGVFbnRyaWVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjbGVhclZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEMdm90ZUlOVEVSTkFMBBNjYWxsZXJBZGRyZXNzU3RyaW5nCWtleVByZWZpeAhtaW5Wb3Rlcwp2b3RlUmVzdWx0BAd2b3RlS2V5CQEQa2V5RnVsbEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQQYWRtaW5DdXJyZW50Vm90ZQkBDGdldEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQDZXJyAwkBASEBCQENaXNJbkFkbWluTGlzdAEFE2NhbGxlckFkZHJlc3NTdHJpbmcJAQh0aHJvd0VycgEJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCEiBub3QgaW4gQWRtaW4gbGlzdAMJAAACBRBhZG1pbkN1cnJlbnRWb3RlAAEJAQh0aHJvd0VycgEJAKwCAgUHdm90ZUtleQISIHlvdSBhbHJlYWR5IHZvdGVkBQR1bml0AwkAAAIFA2VycgUDZXJyBAV2b3RlcwkBCmNvdW50Vm90ZXMBBQlrZXlQcmVmaXgDCQBnAgkAZAIFBXZvdGVzAAEFCG1pblZvdGVzBBBjbGVhclZvdGVFbnRyaWVzCQETZ2V0Q2xlYXJWb3RlRW50cmllcwEFCWtleVByZWZpeAkAzggCBRBjbGVhclZvdGVFbnRyaWVzBQp2b3RlUmVzdWx0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd2b3RlS2V5AAEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEZc3RyaW5nTGlzdFRvSW50TGlzdEhlbHBlcgIDYWNjBXZhbHVlCQDNCAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQV2YWx1ZQEYY2FsY1RvdGFsUHJvZml0Rm9ySGVpZ2h0AQFoBApzdGFydEJsb2NrCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAQLc3RhcnRQZXJpb2QJAGsDBQpzdGFydEJsb2NrAAEFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MEDmVsYXBzZWRQZXJpb2RzCQBlAgkAaQIFAWgFFmVtaXNzaW9uUGVyaW9kSW5CbG9ja3MFC3N0YXJ0UGVyaW9kCQCWAwEJAMwIAgAACQDMCAIJAGgCBRFlbWlzc2lvblBlclBlcmlvZAUOZWxhcHNlZFBlcmlvZHMFA25pbAEPY2FsY1RvdGFsUHJvZml0AAkBGGNhbGNUb3RhbFByb2ZpdEZvckhlaWdodAEFBmhlaWdodAEUZ2V0TWF4QXNzZXRBdmFpbGFibGUABAckbWF0Y2gwBQxhc3NldElkQnl0ZXMDCQABAgUHJG1hdGNoMAIEVW5pdAQBdQUHJG1hdGNoMAgJAO8HAQUEdGhpcwlhdmFpbGFibGUDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA8AcCBQR0aGlzBQFiCQACAQILTWF0Y2ggZXJyb3IBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUABBp0b3RhbEFzc2V0QW1vdW50V2l0aFByb2ZpdAkAZAIFEHRvdGFsQXNzZXRBbW91bnQJAQ9jYWxjVG90YWxQcm9maXQABAt0b3RhbEFtb3VudAkAlwMBCQDMCAIFGnRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0CQDMCAIJARRnZXRNYXhBc3NldEF2YWlsYWJsZQAFA25pbAMJAAACBQ10b3RhbExwQW1vdW50AAAAAAULdG90YWxBbW91bnQBD2dldEN1cnJlbnRQcmljZQADCQECIT0CBQ10b3RhbExwQW1vdW50AAAJALwCAwkAtgIBCQErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAFDXNjYWxlMThCaWdJbnQJALYCAQUNdG90YWxMcEFtb3VudAUNc2NhbGUxOEJpZ0ludAESZ2V0UmVtYWluaW5nQmxvY2tzAAMJAAACBRBlbWlzc2lvblBlckJsb2NrAAAAAAkAawMJAGUCCQEUZ2V0TWF4QXNzZXRBdmFpbGFibGUACQErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAAAQUQZW1pc3Npb25QZXJCbG9jawEXZ2V0VXNlclN0YWtpbmdOb2Rlc0RhdGEBC3VzZXJBZGRyZXNzBAhub2Rlc1JhdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQETa2V5VXNlclN0YWtpbmdOb2RlcwEFC3VzZXJBZGRyZXNzAgAECXNoYXJlc1JhdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEZa2V5VXNlclN0YWtpbmdOb2Rlc1NoYXJlcwEFC3VzZXJBZGRyZXNzAgAECW5vZGVzTGlzdAMJAAACBQhub2Rlc1JhdwIABQNuaWwJALUJAgUIbm9kZXNSYXcFA1NFUAQQc2hhcmVzU3RyaW5nTGlzdAMJAAACBQlzaGFyZXNSYXcCAAUDbmlsCQC1CQIFCXNoYXJlc1JhdwUDU0VQBApzaGFyZXNMaXN0CgACJGwFEHNoYXJlc1N0cmluZ0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBGXN0cmluZ0xpc3RUb0ludExpc3RIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAkAlAoCBQlub2Rlc0xpc3QFCnNoYXJlc0xpc3QBD2NhbGNBc3NldEZyb21McAEIbHBBbW91bnQJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC8AgMJALYCAQUIbHBBbW91bnQJAQ9nZXRDdXJyZW50UHJpY2UABQ1zY2FsZTE4QmlnSW50BQNuaWwBD2NhbGNMcEZyb21Bc3NldAELYXNzZXRBbW91bnQJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC8AgMJALYCAQULYXNzZXRBbW91bnQFDXNjYWxlMThCaWdJbnQJAQ9nZXRDdXJyZW50UHJpY2UABQNuaWwBD2dldFVzZXJMcEFtb3VudAELdXNlckFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzAAABFWdldFVzZXJMb2NrZWRMcEFtb3VudAELdXNlckFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBFWtleVVzZXJMb2NrZWRMcEFtb3VudAEFC3VzZXJBZGRyZXNzAAABIGdldFVzZXJBdmFpbGFibGVBc3NldHNUb1dpdGhkcmF3AQt1c2VyQWRkcmVzcwQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MJAQ9jYWxjQXNzZXRGcm9tTHABBQx1c2VyTHBBbW91bnQBG2dldENsZWFyU3Rha2luZ05vZGVzQWN0aW9ucwELdXNlckFkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBE2tleVVzZXJTdGFraW5nTm9kZXMBBQt1c2VyQWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEZa2V5VXNlclN0YWtpbmdOb2Rlc1NoYXJlcwEFC3VzZXJBZGRyZXNzBQNuaWwBD2dldFN0YWtlQWN0aW9ucwIBaQt1c2VyQWRkcmVzcwQGY2hlY2tzCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIYc2hvdWxkIGluY2x1ZGUgMSBwYXltZW50CQDMCAIDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQxhc3NldElkQnl0ZXMGCQEIdGhyb3dFcnIBCQCsAgICFXBheW1lbnQgc2hvdWxkIGJlIGluIAUNYXNzZXRJZFN0cmluZwkAzAgCAwkAZgIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAAGAidwYXltZW50IGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgMJAAACCQDIAQEJANkEAQULdXNlckFkZHJlc3MFEkFERFJFU1NfQllURVNfU0laRQYJAQh0aHJvd0VycgECGXVzZXIgYWRkcmVzcyBpcyBub3QgdmFsaWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQNcGF5bWVudEFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQED3BheW1lbnRMcEFtb3VudAkBD2NhbGNMcEZyb21Bc3NldAEFDXBheW1lbnRBbW91bnQEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBV1c2VyVG90YWxTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQULdXNlckFkZHJlc3MAAAQQbmV3VG90YWxMcEFtb3VudAkAZAIFDXRvdGFsTHBBbW91bnQFD3BheW1lbnRMcEFtb3VudAQTbmV3VG90YWxBc3NldEFtb3VudAkBD2NhbGNBc3NldEZyb21McAEFEG5ld1RvdGFsTHBBbW91bnQED25ld1VzZXJMcEFtb3VudAkAZAIFDHVzZXJMcEFtb3VudAUPcGF5bWVudExwQW1vdW50BBhuZXdVc2VyVG90YWxTdGFrZWRBbW91bnQJAGQCBRV1c2VyVG90YWxTdGFrZWRBbW91bnQFDXBheW1lbnRBbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBCmtleUhpc3RvcnkDAgVzdGFrZQULdXNlckFkZHJlc3MIBQFpDXRyYW5zYWN0aW9uSWQJAQ1mb3JtYXRIaXN0b3J5BAkBD2NhbGNUb3RhbFByb2ZpdAAJAQ9nZXRDdXJyZW50UHJpY2UABQ10b3RhbExwQW1vdW50BRB0b3RhbEFzc2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlUb3RhbExwQW1vdW50BRBuZXdUb3RhbExwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50BRNuZXdUb3RhbEFzc2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MFD25ld1VzZXJMcEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQULdXNlckFkZHJlc3MFGG5ld1VzZXJUb3RhbFN0YWtlZEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNa2V5U3RhcnRCbG9jawUGaGVpZ2h0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEmdldFdpdGhkcmF3QWN0aW9ucwIBaRVscEFzc2V0V2l0aGRyYXdBbW91bnQEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEBWNoZWNrCQDMCAIDCQBmAgUVbHBBc3NldFdpdGhkcmF3QW1vdW50AAAGCQEIdGhyb3dFcnIBAh9MUCBhbW91bnQgc2hvdWxkIGJlIG1vcmUgdGhhbiAwCQDMCAIDCQBnAgUMdXNlckxwQW1vdW50BRVscEFzc2V0V2l0aGRyYXdBbW91bnQGCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIoY2Fubm90IHdpdGhkcmF3IG1vcmUgdGhhbiBhdmFpbGFibGUgTFAgKAkApAMBBQx1c2VyTHBBbW91bnQCASkFA25pbAMJAAACBQVjaGVjawUFY2hlY2sED25ld1VzZXJMcEFtb3VudAkAZQIFDHVzZXJMcEFtb3VudAUVbHBBc3NldFdpdGhkcmF3QW1vdW50BBN3aXRoZHJhd0Fzc2V0QW1vdW50CQEPY2FsY0Fzc2V0RnJvbUxwAQUVbHBBc3NldFdpdGhkcmF3QW1vdW50BBBuZXdUb3RhbExwQW1vdW50CQBlAgUNdG90YWxMcEFtb3VudAUVbHBBc3NldFdpdGhkcmF3QW1vdW50BBNuZXdUb3RhbEFzc2V0QW1vdW50CQEPY2FsY0Fzc2V0RnJvbUxwAQUQbmV3VG90YWxMcEFtb3VudAQXdXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQULdXNlckFkZHJlc3MAAAQabmV3VXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAGQCBRd1c2VyVG90YWxBc3NldFdpdGhkcmF3bgUTd2l0aGRyYXdBc3NldEFtb3VudAQXY2xlYXJTdGFraW5nTm9kZXNBY3Rpb24DCQAAAgUPbmV3VXNlckxwQW1vdW50AAAJARtnZXRDbGVhclN0YWtpbmdOb2Rlc0FjdGlvbnMBBQt1c2VyQWRkcmVzcwUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBCmtleUhpc3RvcnkDAgh3aXRoZHJhdwULdXNlckFkZHJlc3MIBQFpDXRyYW5zYWN0aW9uSWQJAQ1mb3JtYXRIaXN0b3J5BAkBD2NhbGNUb3RhbFByb2ZpdAAJAQ9nZXRDdXJyZW50UHJpY2UABQ10b3RhbExwQW1vdW50BRB0b3RhbEFzc2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlUb3RhbExwQW1vdW50BRBuZXdUb3RhbExwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50BRNuZXdUb3RhbEFzc2V0QW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MFD25ld1VzZXJMcEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQULdXNlckFkZHJlc3MFGm5ld1VzZXJUb3RhbEFzc2V0V2l0aGRyYXduCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRN3aXRoZHJhd0Fzc2V0QW1vdW50BQxhc3NldElkQnl0ZXMFA25pbAUXY2xlYXJTdGFraW5nTm9kZXNBY3Rpb24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BGGdldFNldFN0YWtpbmdOb2RlQWN0aW9ucwMLdXNlckFkZHJlc3MLbm9kZUFkZHJlc3MJbm9kZVNoYXJlBAVjaGVjawkAzAgCAwkAAAIJAMgBAQkA2QQBBQt1c2VyQWRkcmVzcwUSQUREUkVTU19CWVRFU19TSVpFBgkBCHRocm93RXJyAQIZdXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZAkAzAgCAwkAAAIJAMgBAQkA2QQBBQtub2RlQWRkcmVzcwUSQUREUkVTU19CWVRFU19TSVpFBgkBCHRocm93RXJyAQIZbm9kZSBhZGRyZXNzIGlzIG5vdCB2YWxpZAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5VXNlclN0YWtpbmdOb2RlcwEFC3VzZXJBZGRyZXNzBQtub2RlQWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEZa2V5VXNlclN0YWtpbmdOb2Rlc1NoYXJlcwEFC3VzZXJBZGRyZXNzCQCkAwEFCW5vZGVTaGFyZQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuDAFpARNzZXRFbWlzc2lvblBlckJsb2NrARBlbWlzc2lvblBlckJsb2NrBAVjaGVjawkAzAgCAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50CQErZ2V0VG90YWxBc3NldEFtb3VudFdpdGhQcm9maXRPck1heEF2YWlsYWJsZQAJAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVN0YXJ0QmxvY2sFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5RW1pc3Npb25QZXJCbG9jawkAlgMBCQDMCAIAAAkAzAgCBRBlbWlzc2lvblBlckJsb2NrBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARlzZXRFbWlzc2lvblBlcmlvZEluQmxvY2tzAQFwBAVjaGVjawkAzAgCAwkAZgIFAXAAAAYJAQh0aHJvd0VycgECKGVtaXNzaW9uIHBlcmlvZCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgMJAAACCAUBaQZjYWxsZXIFBHRoaXMGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkAzAgCCQEMSW50ZWdlckVudHJ5AgUTa2V5VG90YWxBc3NldEFtb3VudAkBK2dldFRvdGFsQXNzZXRBbW91bnRXaXRoUHJvZml0T3JNYXhBdmFpbGFibGUACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFGWtleUVtaXNzaW9uUGVyaW9kSW5CbG9ja3MFAXAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVzdGFrZQAEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgkBD2dldFN0YWtlQWN0aW9ucwIFAWkFC3VzZXJBZGRyZXNzAWkBCHN0YWtlRm9yAQt1c2VyQWRkcmVzcwkBD2dldFN0YWtlQWN0aW9ucwIFAWkFC3VzZXJBZGRyZXNzAWkBCHdpdGhkcmF3ARN3aXRoZHJhd0Fzc2V0QW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEDHVzZXJMcEFtb3VudAkBD2dldFVzZXJMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBJscEFtb3VudFRvV2l0aGRyYXcJAQ9jYWxjTHBGcm9tQXNzZXQBBRN3aXRoZHJhd0Fzc2V0QW1vdW50BBx1c2VyQXZhaWxhYmxlQXNzZXRUb1dpdGhkcmF3CQEgZ2V0VXNlckF2YWlsYWJsZUFzc2V0c1RvV2l0aGRyYXcBBQt1c2VyQWRkcmVzcwQWbWluV2l0aGRyYXdBc3NldEFtb3VudAkAoAMBCQC9AgQJAQ9nZXRDdXJyZW50UHJpY2UACQC2AgEAAQUNc2NhbGUxOEJpZ0ludAUHQ0VJTElORwQFY2hlY2sJAMwIAgMJAGYCBRN3aXRoZHJhd0Fzc2V0QW1vdW50AAAGCQEIdGhyb3dFcnIBAiV3aXRoZHJhdyBhbW91bnQgc2hvdWxkIGJlIG1vcmUgdGhhbiAwCQDMCAIDCQBnAgUcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwUTd2l0aGRyYXdBc3NldEFtb3VudAYJAQh0aHJvd0VycgEJAKwCAgkArAICAiVjYW5ub3Qgd2l0aGRyYXcgbW9yZSB0aGFuIGF2YWlsYWJsZSAoCQCkAwEFHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcCASkJAMwIAgMJAGcCBRN3aXRoZHJhd0Fzc2V0QW1vdW50BRZtaW5XaXRoZHJhd0Fzc2V0QW1vdW50BgkBCHRocm93RXJyAQkArAICCQCsAgICJHdpdGhkcmF3IGFtb3VudCBpcyB0b28gc21hbGwuIE1pbjogKAkApAMBBRZtaW5XaXRoZHJhd0Fzc2V0QW1vdW50AgEpBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQESZ2V0V2l0aGRyYXdBY3Rpb25zAgUBaQkAlwMBCQDMCAIFDHVzZXJMcEFtb3VudAkAzAgCCQBkAgUSbHBBbW91bnRUb1dpdGhkcmF3AAEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5zZXRTdGFraW5nTm9kZQELbm9kZUFkZHJlc3MEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgkBGGdldFNldFN0YWtpbmdOb2RlQWN0aW9ucwMFC3VzZXJBZGRyZXNzBQtub2RlQWRkcmVzcwBkAWkBFnN0YWtlQW5kU2V0U3Rha2luZ05vZGUBC25vZGVBZGRyZXNzBAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJAM4IAgkBD2dldFN0YWtlQWN0aW9ucwIFAWkFC3VzZXJBZGRyZXNzCQEYZ2V0U2V0U3Rha2luZ05vZGVBY3Rpb25zAwULdXNlckFkZHJlc3MFC25vZGVBZGRyZXNzAGQBaQESc3Rha2VGb3JTd2FwSEVMUEVSAgt1c2VyQWRkcmVzcwtub2RlQWRkcmVzcwQFY2hlY2sJAMwIAgMJAAACCQClCAEIBQFpDG9yaWdpbkNhbGxlcgULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBAi1pLm9yaWdpbkNhbGxlciBzaG91bGQgYmUgZXF1YWwgdG8gdXNlckFkZHJlc3MFA25pbAMJAAACBQVjaGVjawUFY2hlY2sEFXNldFN0YWtpbmdOb2RlQWN0aW9ucwMJAAACBQtub2RlQWRkcmVzcwIABQNuaWwJARhnZXRTZXRTdGFraW5nTm9kZUFjdGlvbnMDBQt1c2VyQWRkcmVzcwULbm9kZUFkZHJlc3MAZAkAzggCCQEPZ2V0U3Rha2VBY3Rpb25zAgUBaQULdXNlckFkZHJlc3MFFXNldFN0YWtpbmdOb2RlQWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQdhaXJkcm9wAgthZGRyZXNzTGlzdAphbW91bnRMaXN0CgEDc3VtAgVhY2N1bQRuZXh0CQBkAgUFYWNjdW0FBG5leHQEDWFtb3VudExpc3RTdW0KAAIkbAUKYW1vdW50TGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDc3VtAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA5MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgQFY2hlY2sJAMwIAgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEGCQEIdGhyb3dFcnIBAhhzaG91bGQgaW5jbHVkZSAxIHBheW1lbnQJAMwIAgMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFDGFzc2V0SWRCeXRlcwYJAQh0aHJvd0VycgEJAKwCAgIVcGF5bWVudCBzaG91bGQgYmUgaW4gBQ1hc3NldElkU3RyaW5nCQDMCAIDCQBmAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAAYCJ3BheW1lbnQgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMAkAzAgCAwkAAAIJAJADAQULYWRkcmVzc0xpc3QJAJADAQUKYW1vdW50TGlzdAYJAQh0aHJvd0VycgECLWFkZHJlc3NMaXN0IHNob3VsZCBiZSBzYW1lIHNpemUgYXMgYW1vdW50TGlzdAkAzAgCAwkAZwIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BQ1hbW91bnRMaXN0U3VtBgkBCHRocm93RXJyAQItcGF5bWVudCBhbW91bnQgaXMgbGVzcyB0aGFuIHN1bSBvZiBhbW91bnRMaXN0BQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCgEWZ2V0QWlyZHJvcFN0YXRlQ2hhbmdlcwIFYWNjdW0LYXNzZXRBbW91bnQEDSR0MDE1MDEzMTUwNDkFBWFjY3VtBAZyZXN1bHQIBQ0kdDAxNTAxMzE1MDQ5Al8xBAVpbmRleAgFDSR0MDE1MDEzMTUwNDkCXzIEB3RvdGFsTHAIBQ0kdDAxNTAxMzE1MDQ5Al8zBA1hZGRlZExwQW1vdW50CQEPY2FsY0xwRnJvbUFzc2V0AQULYXNzZXRBbW91bnQED3VzZXJMb2NrZWRMcEtleQkBFWtleVVzZXJMb2NrZWRMcEFtb3VudAEJAJEDAgULYWRkcmVzc0xpc3QFBWluZGV4BAtvbGRMcEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ91c2VyTG9ja2VkTHBLZXkAAAkAlQoDCQDNCAIFBnJlc3VsdAkBDEludGVnZXJFbnRyeQIFD3VzZXJMb2NrZWRMcEtleQkAZAIFC29sZExwQW1vdW50BQ1hZGRlZExwQW1vdW50CQBkAgUFaW5kZXgAAQkAZAIFB3RvdGFsTHAFDWFkZGVkTHBBbW91bnQEDSR0MDE1MzgwMTU0ODkKAAIkbAUKYW1vdW50TGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJUKAwUDbmlsAAAAAAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEWZ2V0QWlyZHJvcFN0YXRlQ2hhbmdlcwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgOTAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoEDmFpcmRyb3BFbnRyaWVzCAUNJHQwMTUzODAxNTQ4OQJfMQQCX2EIBQ0kdDAxNTM4MDE1NDg5Al8yBBhhZGRlZFRvdGFsTG9ja2VkTHBBbW91bnQIBQ0kdDAxNTM4MDE1NDg5Al8zBA1uZXdUb3RhbEFzc2V0CQEPY2FsY0Fzc2V0RnJvbUxwAQkAZAIFDXRvdGFsTHBBbW91bnQFGGFkZGVkVG90YWxMb2NrZWRMcEFtb3VudAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZrZXlUb3RhbExvY2tlZExwQW1vdW50CQBkAgUTdG90YWxMb2NrZWRMcEFtb3VudAUYYWRkZWRUb3RhbExvY2tlZExwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlUb3RhbExwQW1vdW50CQBkAgUNdG90YWxMcEFtb3VudAUYYWRkZWRUb3RhbExvY2tlZExwQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEFzc2V0QW1vdW50BQ1uZXdUb3RhbEFzc2V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlTdGFydEJsb2NrBQZoZWlnaHQFA25pbAUOYWlyZHJvcEVudHJpZXMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEVZ2V0VXNlckFzc2V0c1JFQURPTkxZAQt1c2VyQWRkcmVzcwQMdXNlckxwQW1vdW50CQEPZ2V0VXNlckxwQW1vdW50AQULdXNlckFkZHJlc3MEEnVzZXJMb2NrZWRMcEFtb3VudAkBFWdldFVzZXJMb2NrZWRMcEFtb3VudAEFC3VzZXJBZGRyZXNzBBV1c2VyTG9ja2VkQXNzZXRBbW91bnQJAQ9jYWxjQXNzZXRGcm9tTHABBRJ1c2VyTG9ja2VkTHBBbW91bnQEHHVzZXJBdmFpbGFibGVBc3NldFRvV2l0aGRyYXcJASBnZXRVc2VyQXZhaWxhYmxlQXNzZXRzVG9XaXRoZHJhdwEFC3VzZXJBZGRyZXNzBBV1c2VyVG90YWxTdGFrZWRBbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBF2tleVVzZXJUb3RhbEFzc2V0U3Rha2VkAQULdXNlckFkZHJlc3MAAAQXdXNlclRvdGFsQXNzZXRXaXRoZHJhd24JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBGmtleVVzZXJUb3RhbEFzc2V0V2l0aGRyYXduAQULdXNlckFkZHJlc3MAAAQNJHQwMTY4MzkxNjkzMQkBF2dldFVzZXJTdGFraW5nTm9kZXNEYXRhAQULdXNlckFkZHJlc3MEFHVzZXJTdGFraW5nTm9kZXNMaXN0CAUNJHQwMTY4MzkxNjkzMQJfMQQZdXNlclN0YWtpbmdOb2RlU2hhcmVzTGlzdAgFDSR0MDE2ODM5MTY5MzECXzIJAJQKAgUDbmlsCQCcCgoFDHVzZXJMcEFtb3VudAUcdXNlckF2YWlsYWJsZUFzc2V0VG9XaXRoZHJhdwkBD2dldEN1cnJlbnRQcmljZQAFFXVzZXJUb3RhbFN0YWtlZEFtb3VudAUXdXNlclRvdGFsQXNzZXRXaXRoZHJhd24FEnVzZXJMb2NrZWRMcEFtb3VudAUVdXNlckxvY2tlZEFzc2V0QW1vdW50BRR1c2VyU3Rha2luZ05vZGVzTGlzdAUZdXNlclN0YWtpbmdOb2RlU2hhcmVzTGlzdAkBEmdldFJlbWFpbmluZ0Jsb2NrcwABaQEWZ2V0VG90YWxBc3NldHNSRUFET05MWQAJAJQKAgUDbmlsCQCYCgYFDXRvdGFsTHBBbW91bnQJAStnZXRUb3RhbEFzc2V0QW1vdW50V2l0aFByb2ZpdE9yTWF4QXZhaWxhYmxlAAkBD2dldEN1cnJlbnRQcmljZQAFE3RvdGFsTG9ja2VkTHBBbW91bnQJAQ9jYWxjQXNzZXRGcm9tTHABBRN0b3RhbExvY2tlZExwQW1vdW50CQESZ2V0UmVtYWluaW5nQmxvY2tzAAFpAQt2b3RlRm9yVHhJZAEEdHhJZAQTY2FsbGVyQWRkcmVzc1N0cmluZwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAlrZXlQcmVmaXgJARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBQR0eElkBAZyZXN1bHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUFsbG93ZWRUeElkAAUEdHhJZAUDbmlsBBFhbGxvd2VkVHhJZE9wdGlvbgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQABANlcnIJAMwIAgMJAAACCQDIAQEJANkEAQUEdHhJZAURVFhJRF9CWVRFU19MRU5HVEgGCQEIdGhyb3dFcnIBCQCsAgIFBHR4SWQCEiBpcyBub3QgdmFsaWQgdHhJZAkAzAgCAwMJAAACBRFhbGxvd2VkVHhJZE9wdGlvbgUEdW5pdAYJAQIhPQIJAQV2YWx1ZQEFEWFsbG93ZWRUeElkT3B0aW9uBQR0eElkBgkBCHRocm93RXJyAQkArAICBQR0eElkAhMgaXMgYWxyZWFkeSBhbGxvd2VkBQNuaWwDCQAAAgUDZXJyBQNlcnIJAQx2b3RlSU5URVJOQUwEBRNjYWxsZXJBZGRyZXNzU3RyaW5nBQlrZXlQcmVmaXgFBlFVT1JVTQUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQIYnlBZG1pbnMJAAACCAUCdHgCaWQJANkEAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQAAgAEB2J5T3duZXIDCQBnAgkAkAMBCQENZ2V0QWRtaW5zTGlzdAAFBlFVT1JVTQcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkDBQhieUFkbWlucwYFB2J5T3duZXKPUI2p", "chainId": 84, "height": 2866157, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: J4Grg3KAFzWz6BRLjFozgvfhG2DzZQtL8uo4HD7zLT8w Next: K6qhCjDGRdUw15DWpLt1CAdsCyZ9FuT3uGvnq6L7S8m Diff:
OldNewDifferences
298298 }
299299
300300
301-func bj (bk,r) = {
302- let bl = [if ((size(bk.payments) == 1))
301+func bj (r) = [DeleteEntry(t(r)), DeleteEntry(u(r))]
302+
303+
304+func bk (bl,r) = {
305+ let bm = [if ((size(bl.payments) == 1))
303306 then true
304- else h("should include 1 payment"), if ((bk.payments[0].assetId == H))
307+ else h("should include 1 payment"), if ((bl.payments[0].assetId == H))
305308 then true
306- else h(("payment should be in " + G)), if ((bk.payments[0].amount > 0))
309+ else h(("payment should be in " + G)), if ((bl.payments[0].amount > 0))
307310 then true
308311 else "payment amount should be greater than 0", if ((size(fromBase58String(r)) == f))
309312 then true
310313 else h("user address is not valid")]
311- if ((bl == bl))
314+ if ((bm == bm))
312315 then {
313- let bm = bk.payments[0].amount
314- let bn = bd(bm)
316+ let bn = bl.payments[0].amount
317+ let bo = bd(bn)
315318 let bi = bf(r)
316- let bo = valueOrElse(getInteger(this, w(r)), 0)
317- let bp = (E + bn)
318- let bq = bb(bp)
319- let br = (bi + bn)
320- let bs = (bo + bm)
321-[StringEntry(x("stake", r, bk.transactionId), A(aM(), aT(), E, D)), IntegerEntry(n, bp), IntegerEntry(o, bq), IntegerEntry(q(r), br), IntegerEntry(w(r), bs), IntegerEntry(m, height)]
319+ let bp = valueOrElse(getInteger(this, w(r)), 0)
320+ let bq = (E + bo)
321+ let br = bb(bq)
322+ let bs = (bi + bo)
323+ let bt = (bp + bn)
324+[StringEntry(x("stake", r, bl.transactionId), A(aM(), aT(), E, D)), IntegerEntry(n, bq), IntegerEntry(o, br), IntegerEntry(q(r), bs), IntegerEntry(w(r), bt), IntegerEntry(m, height)]
322325 }
323326 else throw("Strict value is not equal to itself.")
324327 }
325328
326329
327-func bt (bk,bu) = {
328- let r = toString(bk.caller)
330+func bu (bl,bv) = {
331+ let r = toString(bl.caller)
329332 let bi = bf(r)
330- let bv = [if ((bu > 0))
333+ let bw = [if ((bv > 0))
331334 then true
332- else h("LP amount should be more than 0"), if ((bi >= bu))
335+ else h("LP amount should be more than 0"), if ((bi >= bv))
333336 then true
334337 else h((("cannot withdraw more than available LP (" + toString(bi)) + ")"))]
335- if ((bv == bv))
338+ if ((bw == bw))
336339 then {
337- let br = (bi - bu)
338- let bw = bb(bu)
339- let bp = (E - bu)
340- let bq = bb(bp)
341- let bx = valueOrElse(getInteger(this, v(r)), 0)
342- let by = (bx + bw)
343-[StringEntry(x("withdraw", r, bk.transactionId), A(aM(), aT(), E, D)), IntegerEntry(n, bp), IntegerEntry(o, bq), IntegerEntry(q(r), br), IntegerEntry(v(r), by), IntegerEntry(m, height), ScriptTransfer(bk.caller, bw, H)]
340+ let bs = (bi - bv)
341+ let bx = bb(bv)
342+ let bq = (E - bv)
343+ let br = bb(bq)
344+ let by = valueOrElse(getInteger(this, v(r)), 0)
345+ let bz = (by + bx)
346+ let bA = if ((bs == 0))
347+ then bj(r)
348+ else nil
349+ ([StringEntry(x("withdraw", r, bl.transactionId), A(aM(), aT(), E, D)), IntegerEntry(n, bq), IntegerEntry(o, br), IntegerEntry(q(r), bs), IntegerEntry(v(r), bz), IntegerEntry(m, height), ScriptTransfer(bl.caller, bx, H)] ++ bA)
344350 }
345351 else throw("Strict value is not equal to itself.")
346352 }
347353
348354
349-func bz (r,bA,bB) = {
350- let bv = [if ((size(fromBase58String(r)) == f))
355+func bB (r,bC,bD) = {
356+ let bw = [if ((size(fromBase58String(r)) == f))
351357 then true
352- else h("user address is not valid"), if ((size(fromBase58String(bA)) == f))
358+ else h("user address is not valid"), if ((size(fromBase58String(bC)) == f))
353359 then true
354360 else h("node address is not valid")]
355- if ((bv == bv))
356- then [StringEntry(t(r), bA), StringEntry(u(r), toString(bB))]
361+ if ((bw == bw))
362+ then [StringEntry(t(r), bC), StringEntry(u(r), toString(bD))]
357363 else throw("Strict value is not equal to itself.")
358364 }
359365
360366
361-@Callable(bk)
367+@Callable(bl)
362368 func setEmissionPerBlock (J) = {
363- let bv = [if ((bk.caller == this))
369+ let bw = [if ((bl.caller == this))
364370 then true
365371 else h("permission denied")]
366- if ((bv == bv))
372+ if ((bw == bw))
367373 then [IntegerEntry(o, aQ()), IntegerEntry(m, height), IntegerEntry(k, max([0, J]))]
368374 else throw("Strict value is not equal to itself.")
369375 }
370376
371377
372378
373-@Callable(bk)
374-func setEmissionPeriodInBlocks (bC) = {
375- let bv = [if ((bC > 0))
379+@Callable(bl)
380+func setEmissionPeriodInBlocks (bE) = {
381+ let bw = [if ((bE > 0))
376382 then true
377- else h("emission period should be greater than 0"), if ((bk.caller == this))
383+ else h("emission period should be greater than 0"), if ((bl.caller == this))
378384 then true
379385 else h("permission denied")]
380- if ((bv == bv))
381- then [IntegerEntry(o, aQ()), IntegerEntry(m, height), IntegerEntry(l, bC)]
386+ if ((bw == bw))
387+ then [IntegerEntry(o, aQ()), IntegerEntry(m, height), IntegerEntry(l, bE)]
382388 else throw("Strict value is not equal to itself.")
383389 }
384390
385391
386392
387-@Callable(bk)
393+@Callable(bl)
388394 func stake () = {
389- let r = toString(bk.caller)
390- bj(bk, r)
395+ let r = toString(bl.caller)
396+ bk(bl, r)
391397 }
392398
393399
394400
395-@Callable(bk)
396-func stakeFor (r) = bj(bk, r)
401+@Callable(bl)
402+func stakeFor (r) = bk(bl, r)
397403
398404
399405
400-@Callable(bk)
401-func withdraw (bw) = {
402- let r = toString(bk.caller)
406+@Callable(bl)
407+func withdraw (bx) = {
408+ let r = toString(bl.caller)
403409 let bi = bf(r)
404- let bD = bd(bw)
405- let bE = bh(r)
406- let bF = toInt(fraction(aT(), toBigInt(1), e, CEILING))
407- let bv = [if ((bw > 0))
410+ let bF = bd(bx)
411+ let bG = bh(r)
412+ let bH = toInt(fraction(aT(), toBigInt(1), e, CEILING))
413+ let bw = [if ((bx > 0))
408414 then true
409- else h("withdraw amount should be more than 0"), if ((bE >= bw))
415+ else h("withdraw amount should be more than 0"), if ((bG >= bx))
410416 then true
411- else h((("cannot withdraw more than available (" + toString(bE)) + ")")), if ((bw >= bF))
417+ else h((("cannot withdraw more than available (" + toString(bG)) + ")")), if ((bx >= bH))
412418 then true
413- else h((("withdraw amount is too small. Min: (" + toString(bF)) + ")"))]
414- if ((bv == bv))
415- then bt(bk, min([bi, (bD + 1)]))
419+ else h((("withdraw amount is too small. Min: (" + toString(bH)) + ")"))]
420+ if ((bw == bw))
421+ then bu(bl, min([bi, (bF + 1)]))
416422 else throw("Strict value is not equal to itself.")
417423 }
418424
419425
420426
421-@Callable(bk)
422-func setStakingNode (bA) = {
423- let r = toString(bk.caller)
424- bz(r, bA, 100)
427+@Callable(bl)
428+func setStakingNode (bC) = {
429+ let r = toString(bl.caller)
430+ bB(r, bC, 100)
425431 }
426432
427433
428434
429-@Callable(bk)
430-func stakeAndSetStakingNode (bA) = {
431- let r = toString(bk.caller)
432- (bj(bk, r) ++ bz(r, bA, 100))
435+@Callable(bl)
436+func stakeAndSetStakingNode (bC) = {
437+ let r = toString(bl.caller)
438+ (bk(bl, r) ++ bB(r, bC, 100))
433439 }
434440
435441
436442
437-@Callable(bk)
438-func airdrop (bG,bH) = {
439- func bI (bJ,bK) = (bJ + bK)
443+@Callable(bl)
444+func stakeForSwapHELPER (r,bC) = {
445+ let bw = [if ((toString(bl.originCaller) == r))
446+ then true
447+ else h("i.originCaller should be equal to userAddress")]
448+ if ((bw == bw))
449+ then {
450+ let bI = if ((bC == ""))
451+ then nil
452+ else bB(r, bC, 100)
453+ (bk(bl, r) ++ bI)
454+ }
455+ else throw("Strict value is not equal to itself.")
456+ }
440457
441- let bL = {
442- let ak = bH
458+
459+
460+@Callable(bl)
461+func airdrop (bJ,bK) = {
462+ func bL (bM,bN) = (bM + bN)
463+
464+ let bO = {
465+ let ak = bK
443466 let al = size(ak)
444467 let am = 0
445468 func an (ao,ap) = if ((ap >= al))
446469 then ao
447- else bI(ao, ak[ap])
470+ else bL(ao, ak[ap])
448471
449472 func aq (ao,ap) = if ((ap >= al))
450473 then ao
452475
453476 aq(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(am, 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)
454477 }
455- let bv = [if ((size(bk.payments) == 1))
478+ let bw = [if ((size(bl.payments) == 1))
456479 then true
457- else h("should include 1 payment"), if ((bk.payments[0].assetId == H))
480+ else h("should include 1 payment"), if ((bl.payments[0].assetId == H))
458481 then true
459- else h(("payment should be in " + G)), if ((bk.payments[0].amount > 0))
482+ else h(("payment should be in " + G)), if ((bl.payments[0].amount > 0))
460483 then true
461- else "payment amount should be greater than 0", if ((size(bG) == size(bH)))
484+ else "payment amount should be greater than 0", if ((size(bJ) == size(bK)))
462485 then true
463- else h("addressList should be same size as amountList"), if ((bk.payments[0].amount >= bL))
486+ else h("addressList should be same size as amountList"), if ((bl.payments[0].amount >= bO))
464487 then true
465488 else h("payment amount is less than sum of amountList")]
466- if ((bv == bv))
489+ if ((bw == bw))
467490 then {
468- func bM (bJ,be) = {
469- let bN = bJ
470- let af = bN._1
471- let bO = bN._2
472- let bP = bN._3
473- let bQ = bd(be)
474- let bR = s(bG[bO])
475- let bS = valueOrElse(getInteger(this, bR), 0)
476- $Tuple3((af :+ IntegerEntry(bR, (bS + bQ))), (bO + 1), (bP + bQ))
491+ func bP (bM,be) = {
492+ let bQ = bM
493+ let af = bQ._1
494+ let bR = bQ._2
495+ let bS = bQ._3
496+ let bT = bd(be)
497+ let bU = s(bJ[bR])
498+ let bV = valueOrElse(getInteger(this, bU), 0)
499+ $Tuple3((af :+ IntegerEntry(bU, (bV + bT))), (bR + 1), (bS + bT))
477500 }
478501
479- let bT = {
480- let ak = bH
502+ let bW = {
503+ let ak = bK
481504 let al = size(ak)
482505 let am = $Tuple3(nil, 0, 0)
483- func bU (ao,ap) = if ((ap >= al))
506+ func bX (ao,ap) = if ((ap >= al))
484507 then ao
485- else bM(ao, ak[ap])
508+ else bP(ao, ak[ap])
486509
487- func bV (ao,ap) = if ((ap >= al))
510+ func bY (ao,ap) = if ((ap >= al))
488511 then ao
489512 else throw("List size exceeds 90")
490513
491- bV(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(am, 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)
514+ bY(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(am, 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)
492515 }
493- let bW = bT._1
494- let bX = bT._2
495- let bY = bT._3
496- let bZ = bb((E + bY))
497- ([IntegerEntry(p, (F + bY)), IntegerEntry(n, (E + bY)), IntegerEntry(o, bZ), IntegerEntry(m, height)] ++ bW)
516+ let bZ = bW._1
517+ let ca = bW._2
518+ let cb = bW._3
519+ let cc = bb((E + cb))
520+ ([IntegerEntry(p, (F + cb)), IntegerEntry(n, (E + cb)), IntegerEntry(o, cc), IntegerEntry(m, height)] ++ bZ)
498521 }
499522 else throw("Strict value is not equal to itself.")
500523 }
501524
502525
503526
504-@Callable(bk)
527+@Callable(bl)
505528 func getUserAssetsREADONLY (r) = {
506529 let bi = bf(r)
507- let ca = bg(r)
508- let cb = bb(ca)
509- let bE = bh(r)
510- let bo = valueOrElse(getInteger(this, w(r)), 0)
511- let bx = valueOrElse(getInteger(this, v(r)), 0)
512- let cc = aV(r)
513- let cd = cc._1
514- let ce = cc._2
515- $Tuple2(nil, $Tuple10(bi, bE, aT(), bo, bx, ca, cb, cd, ce, aU()))
530+ let cd = bg(r)
531+ let ce = bb(cd)
532+ let bG = bh(r)
533+ let bp = valueOrElse(getInteger(this, w(r)), 0)
534+ let by = valueOrElse(getInteger(this, v(r)), 0)
535+ let cf = aV(r)
536+ let cg = cf._1
537+ let ch = cf._2
538+ $Tuple2(nil, $Tuple10(bi, bG, aT(), bp, by, cd, ce, cg, ch, aU()))
516539 }
517540
518541
519542
520-@Callable(bk)
543+@Callable(bl)
521544 func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple6(E, aQ(), aT(), F, bb(F), aU()))
522545
523546
524547
525-@Callable(bk)
548+@Callable(bl)
526549 func voteForTxId (z) = {
527- let ay = toBase58String(bk.caller.bytes)
550+ let ay = toBase58String(bl.caller.bytes)
528551 let ah = O(z)
529552 let af = [StringEntry(T(), z)]
530- let cf = getString(this, T())
553+ let ci = getString(this, T())
531554 let aC = [if ((size(fromBase58String(z)) == N))
532555 then true
533- else h((z + " is not valid txId")), if (if ((cf == unit))
556+ else h((z + " is not valid txId")), if (if ((ci == unit))
534557 then true
535- else (value(cf) != z))
558+ else (value(ci) != z))
536559 then true
537560 else h((z + " is already allowed"))]
538561 if ((aC == aC))
541564 }
542565
543566
544-@Verifier(cg)
545-func ch () = {
546- let ci = (cg.id == fromBase58String(valueOrElse(getString(this, T()), "")))
547- let cj = if ((size(X()) >= M))
567+@Verifier(cj)
568+func ck () = {
569+ let cl = (cj.id == fromBase58String(valueOrElse(getString(this, T()), "")))
570+ let cm = if ((size(X()) >= M))
548571 then false
549- else sigVerify(cg.bodyBytes, cg.proofs[0], cg.senderPublicKey)
550- if (ci)
572+ else sigVerify(cj.bodyBytes, cj.proofs[0], cj.senderPublicKey)
573+ if (cl)
551574 then true
552- else cj
575+ else cm
553576 }
554577
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)
7474
7575 let K = (J * I)
7676
7777 let L = 5
7878
7979 let M = 3
8080
8181 let N = 32
8282
8383 func O (z) = makeString(["%s%s%s", "allowTxId", z], b)
8484
8585
8686 func P (Q,R) = makeString([Q, R], b)
8787
8888
8989 func S () = makeString(["%s", "adminAddressList"], b)
9090
9191
9292 func T () = makeString(["%s", "txId"], b)
9393
9494
9595 func U (Q,V) = {
9696 let W = P(Q, V)
9797 valueOrElse(getInteger(W), 0)
9898 }
9999
100100
101101 func X () = {
102102 let Y = getString(this, S())
103103 if ($isInstanceOf(Y, "String"))
104104 then {
105105 let Z = Y
106106 split(Z, b)
107107 }
108108 else nil
109109 }
110110
111111
112112 func aa (ab) = containsElement(X(), ab)
113113
114114
115115 func ac (ad,R) = {
116116 let ae = ad
117117 let af = ae._1
118118 let Q = ae._2
119119 $Tuple2((af :+ P(Q, R)), Q)
120120 }
121121
122122
123123 func ag (ah) = {
124124 let ai = S()
125125 let aj = {
126126 let ak = X()
127127 let al = size(ak)
128128 let am = $Tuple2(nil, ah)
129129 func an (ao,ap) = if ((ap >= al))
130130 then ao
131131 else ac(ao, ak[ap])
132132
133133 func aq (ao,ap) = if ((ap >= al))
134134 then ao
135135 else throw("List size exceeds 5")
136136
137137 aq(an(an(an(an(an(am, 0), 1), 2), 3), 4), 5)
138138 }
139139 let af = aj._1
140140 let Q = aj._2
141141 af
142142 }
143143
144144
145145 func ar (af,W) = (af + valueOrElse(getInteger(W), 0))
146146
147147
148148 func as (Q) = {
149149 let at = ag(Q)
150150 let ak = at
151151 let al = size(ak)
152152 let am = 0
153153 func an (ao,ap) = if ((ap >= al))
154154 then ao
155155 else ar(ao, ak[ap])
156156
157157 func aq (ao,ap) = if ((ap >= al))
158158 then ao
159159 else throw("List size exceeds 5")
160160
161161 aq(an(an(an(an(an(am, 0), 1), 2), 3), 4), 5)
162162 }
163163
164164
165165 func au (af,av) = (af :+ DeleteEntry(av))
166166
167167
168168 func aw (Q) = {
169169 let at = ag(Q)
170170 let ak = at
171171 let al = size(ak)
172172 let am = nil
173173 func an (ao,ap) = if ((ap >= al))
174174 then ao
175175 else au(ao, ak[ap])
176176
177177 func aq (ao,ap) = if ((ap >= al))
178178 then ao
179179 else throw("List size exceeds 5")
180180
181181 aq(an(an(an(an(an(am, 0), 1), 2), 3), 4), 5)
182182 }
183183
184184
185185 func ax (ay,ah,az,aA) = {
186186 let W = P(ah, ay)
187187 let aB = U(ah, ay)
188188 let aC = if (!(aa(ay)))
189189 then h((("Address: " + ay) + " not in Admin list"))
190190 else if ((aB == 1))
191191 then h((W + " you already voted"))
192192 else unit
193193 if ((aC == aC))
194194 then {
195195 let at = as(ah)
196196 if (((at + 1) >= az))
197197 then {
198198 let aD = aw(ah)
199199 (aD ++ aA)
200200 }
201201 else [IntegerEntry(W, 1)]
202202 }
203203 else throw("Strict value is not equal to itself.")
204204 }
205205
206206
207207 func aE (aF,aG) = (aF :+ parseIntValue(aG))
208208
209209
210210 func aH (aI) = {
211211 let aJ = valueOrElse(getInteger(this, m), height)
212212 let aK = fraction(aJ, 1, I)
213213 let aL = ((aI / I) - aK)
214214 max([0, (K * aL)])
215215 }
216216
217217
218218 func aM () = aH(height)
219219
220220
221221 func aN () = {
222222 let Y = H
223223 if ($isInstanceOf(Y, "Unit"))
224224 then {
225225 let aO = Y
226226 wavesBalance(this).available
227227 }
228228 else if ($isInstanceOf(Y, "ByteVector"))
229229 then {
230230 let aP = Y
231231 assetBalance(this, aP)
232232 }
233233 else throw("Match error")
234234 }
235235
236236
237237 func aQ () = {
238238 let aR = (D + aM())
239239 let aS = min([aR, aN()])
240240 if ((E == 0))
241241 then 0
242242 else aS
243243 }
244244
245245
246246 func aT () = if ((E != 0))
247247 then fraction(toBigInt(aQ()), e, toBigInt(E))
248248 else e
249249
250250
251251 func aU () = if ((J == 0))
252252 then 0
253253 else fraction((aN() - aQ()), 1, J)
254254
255255
256256 func aV (r) = {
257257 let aW = valueOrElse(getString(this, t(r)), "")
258258 let aX = valueOrElse(getString(this, u(r)), "")
259259 let aY = if ((aW == ""))
260260 then nil
261261 else split(aW, b)
262262 let aZ = if ((aX == ""))
263263 then nil
264264 else split(aX, b)
265265 let ba = {
266266 let ak = aZ
267267 let al = size(ak)
268268 let am = nil
269269 func an (ao,ap) = if ((ap >= al))
270270 then ao
271271 else aE(ao, ak[ap])
272272
273273 func aq (ao,ap) = if ((ap >= al))
274274 then ao
275275 else throw("List size exceeds 20")
276276
277277 aq(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(am, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
278278 }
279279 $Tuple2(aY, ba)
280280 }
281281
282282
283283 func bb (bc) = max([0, toInt(fraction(toBigInt(bc), aT(), e))])
284284
285285
286286 func bd (be) = max([0, toInt(fraction(toBigInt(be), e, aT()))])
287287
288288
289289 func bf (r) = valueOrElse(getInteger(this, q(r)), 0)
290290
291291
292292 func bg (r) = valueOrElse(getInteger(this, s(r)), 0)
293293
294294
295295 func bh (r) = {
296296 let bi = bf(r)
297297 bb(bi)
298298 }
299299
300300
301-func bj (bk,r) = {
302- let bl = [if ((size(bk.payments) == 1))
301+func bj (r) = [DeleteEntry(t(r)), DeleteEntry(u(r))]
302+
303+
304+func bk (bl,r) = {
305+ let bm = [if ((size(bl.payments) == 1))
303306 then true
304- else h("should include 1 payment"), if ((bk.payments[0].assetId == H))
307+ else h("should include 1 payment"), if ((bl.payments[0].assetId == H))
305308 then true
306- else h(("payment should be in " + G)), if ((bk.payments[0].amount > 0))
309+ else h(("payment should be in " + G)), if ((bl.payments[0].amount > 0))
307310 then true
308311 else "payment amount should be greater than 0", if ((size(fromBase58String(r)) == f))
309312 then true
310313 else h("user address is not valid")]
311- if ((bl == bl))
314+ if ((bm == bm))
312315 then {
313- let bm = bk.payments[0].amount
314- let bn = bd(bm)
316+ let bn = bl.payments[0].amount
317+ let bo = bd(bn)
315318 let bi = bf(r)
316- let bo = valueOrElse(getInteger(this, w(r)), 0)
317- let bp = (E + bn)
318- let bq = bb(bp)
319- let br = (bi + bn)
320- let bs = (bo + bm)
321-[StringEntry(x("stake", r, bk.transactionId), A(aM(), aT(), E, D)), IntegerEntry(n, bp), IntegerEntry(o, bq), IntegerEntry(q(r), br), IntegerEntry(w(r), bs), IntegerEntry(m, height)]
319+ let bp = valueOrElse(getInteger(this, w(r)), 0)
320+ let bq = (E + bo)
321+ let br = bb(bq)
322+ let bs = (bi + bo)
323+ let bt = (bp + bn)
324+[StringEntry(x("stake", r, bl.transactionId), A(aM(), aT(), E, D)), IntegerEntry(n, bq), IntegerEntry(o, br), IntegerEntry(q(r), bs), IntegerEntry(w(r), bt), IntegerEntry(m, height)]
322325 }
323326 else throw("Strict value is not equal to itself.")
324327 }
325328
326329
327-func bt (bk,bu) = {
328- let r = toString(bk.caller)
330+func bu (bl,bv) = {
331+ let r = toString(bl.caller)
329332 let bi = bf(r)
330- let bv = [if ((bu > 0))
333+ let bw = [if ((bv > 0))
331334 then true
332- else h("LP amount should be more than 0"), if ((bi >= bu))
335+ else h("LP amount should be more than 0"), if ((bi >= bv))
333336 then true
334337 else h((("cannot withdraw more than available LP (" + toString(bi)) + ")"))]
335- if ((bv == bv))
338+ if ((bw == bw))
336339 then {
337- let br = (bi - bu)
338- let bw = bb(bu)
339- let bp = (E - bu)
340- let bq = bb(bp)
341- let bx = valueOrElse(getInteger(this, v(r)), 0)
342- let by = (bx + bw)
343-[StringEntry(x("withdraw", r, bk.transactionId), A(aM(), aT(), E, D)), IntegerEntry(n, bp), IntegerEntry(o, bq), IntegerEntry(q(r), br), IntegerEntry(v(r), by), IntegerEntry(m, height), ScriptTransfer(bk.caller, bw, H)]
340+ let bs = (bi - bv)
341+ let bx = bb(bv)
342+ let bq = (E - bv)
343+ let br = bb(bq)
344+ let by = valueOrElse(getInteger(this, v(r)), 0)
345+ let bz = (by + bx)
346+ let bA = if ((bs == 0))
347+ then bj(r)
348+ else nil
349+ ([StringEntry(x("withdraw", r, bl.transactionId), A(aM(), aT(), E, D)), IntegerEntry(n, bq), IntegerEntry(o, br), IntegerEntry(q(r), bs), IntegerEntry(v(r), bz), IntegerEntry(m, height), ScriptTransfer(bl.caller, bx, H)] ++ bA)
344350 }
345351 else throw("Strict value is not equal to itself.")
346352 }
347353
348354
349-func bz (r,bA,bB) = {
350- let bv = [if ((size(fromBase58String(r)) == f))
355+func bB (r,bC,bD) = {
356+ let bw = [if ((size(fromBase58String(r)) == f))
351357 then true
352- else h("user address is not valid"), if ((size(fromBase58String(bA)) == f))
358+ else h("user address is not valid"), if ((size(fromBase58String(bC)) == f))
353359 then true
354360 else h("node address is not valid")]
355- if ((bv == bv))
356- then [StringEntry(t(r), bA), StringEntry(u(r), toString(bB))]
361+ if ((bw == bw))
362+ then [StringEntry(t(r), bC), StringEntry(u(r), toString(bD))]
357363 else throw("Strict value is not equal to itself.")
358364 }
359365
360366
361-@Callable(bk)
367+@Callable(bl)
362368 func setEmissionPerBlock (J) = {
363- let bv = [if ((bk.caller == this))
369+ let bw = [if ((bl.caller == this))
364370 then true
365371 else h("permission denied")]
366- if ((bv == bv))
372+ if ((bw == bw))
367373 then [IntegerEntry(o, aQ()), IntegerEntry(m, height), IntegerEntry(k, max([0, J]))]
368374 else throw("Strict value is not equal to itself.")
369375 }
370376
371377
372378
373-@Callable(bk)
374-func setEmissionPeriodInBlocks (bC) = {
375- let bv = [if ((bC > 0))
379+@Callable(bl)
380+func setEmissionPeriodInBlocks (bE) = {
381+ let bw = [if ((bE > 0))
376382 then true
377- else h("emission period should be greater than 0"), if ((bk.caller == this))
383+ else h("emission period should be greater than 0"), if ((bl.caller == this))
378384 then true
379385 else h("permission denied")]
380- if ((bv == bv))
381- then [IntegerEntry(o, aQ()), IntegerEntry(m, height), IntegerEntry(l, bC)]
386+ if ((bw == bw))
387+ then [IntegerEntry(o, aQ()), IntegerEntry(m, height), IntegerEntry(l, bE)]
382388 else throw("Strict value is not equal to itself.")
383389 }
384390
385391
386392
387-@Callable(bk)
393+@Callable(bl)
388394 func stake () = {
389- let r = toString(bk.caller)
390- bj(bk, r)
395+ let r = toString(bl.caller)
396+ bk(bl, r)
391397 }
392398
393399
394400
395-@Callable(bk)
396-func stakeFor (r) = bj(bk, r)
401+@Callable(bl)
402+func stakeFor (r) = bk(bl, r)
397403
398404
399405
400-@Callable(bk)
401-func withdraw (bw) = {
402- let r = toString(bk.caller)
406+@Callable(bl)
407+func withdraw (bx) = {
408+ let r = toString(bl.caller)
403409 let bi = bf(r)
404- let bD = bd(bw)
405- let bE = bh(r)
406- let bF = toInt(fraction(aT(), toBigInt(1), e, CEILING))
407- let bv = [if ((bw > 0))
410+ let bF = bd(bx)
411+ let bG = bh(r)
412+ let bH = toInt(fraction(aT(), toBigInt(1), e, CEILING))
413+ let bw = [if ((bx > 0))
408414 then true
409- else h("withdraw amount should be more than 0"), if ((bE >= bw))
415+ else h("withdraw amount should be more than 0"), if ((bG >= bx))
410416 then true
411- else h((("cannot withdraw more than available (" + toString(bE)) + ")")), if ((bw >= bF))
417+ else h((("cannot withdraw more than available (" + toString(bG)) + ")")), if ((bx >= bH))
412418 then true
413- else h((("withdraw amount is too small. Min: (" + toString(bF)) + ")"))]
414- if ((bv == bv))
415- then bt(bk, min([bi, (bD + 1)]))
419+ else h((("withdraw amount is too small. Min: (" + toString(bH)) + ")"))]
420+ if ((bw == bw))
421+ then bu(bl, min([bi, (bF + 1)]))
416422 else throw("Strict value is not equal to itself.")
417423 }
418424
419425
420426
421-@Callable(bk)
422-func setStakingNode (bA) = {
423- let r = toString(bk.caller)
424- bz(r, bA, 100)
427+@Callable(bl)
428+func setStakingNode (bC) = {
429+ let r = toString(bl.caller)
430+ bB(r, bC, 100)
425431 }
426432
427433
428434
429-@Callable(bk)
430-func stakeAndSetStakingNode (bA) = {
431- let r = toString(bk.caller)
432- (bj(bk, r) ++ bz(r, bA, 100))
435+@Callable(bl)
436+func stakeAndSetStakingNode (bC) = {
437+ let r = toString(bl.caller)
438+ (bk(bl, r) ++ bB(r, bC, 100))
433439 }
434440
435441
436442
437-@Callable(bk)
438-func airdrop (bG,bH) = {
439- func bI (bJ,bK) = (bJ + bK)
443+@Callable(bl)
444+func stakeForSwapHELPER (r,bC) = {
445+ let bw = [if ((toString(bl.originCaller) == r))
446+ then true
447+ else h("i.originCaller should be equal to userAddress")]
448+ if ((bw == bw))
449+ then {
450+ let bI = if ((bC == ""))
451+ then nil
452+ else bB(r, bC, 100)
453+ (bk(bl, r) ++ bI)
454+ }
455+ else throw("Strict value is not equal to itself.")
456+ }
440457
441- let bL = {
442- let ak = bH
458+
459+
460+@Callable(bl)
461+func airdrop (bJ,bK) = {
462+ func bL (bM,bN) = (bM + bN)
463+
464+ let bO = {
465+ let ak = bK
443466 let al = size(ak)
444467 let am = 0
445468 func an (ao,ap) = if ((ap >= al))
446469 then ao
447- else bI(ao, ak[ap])
470+ else bL(ao, ak[ap])
448471
449472 func aq (ao,ap) = if ((ap >= al))
450473 then ao
451474 else throw("List size exceeds 90")
452475
453476 aq(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(am, 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)
454477 }
455- let bv = [if ((size(bk.payments) == 1))
478+ let bw = [if ((size(bl.payments) == 1))
456479 then true
457- else h("should include 1 payment"), if ((bk.payments[0].assetId == H))
480+ else h("should include 1 payment"), if ((bl.payments[0].assetId == H))
458481 then true
459- else h(("payment should be in " + G)), if ((bk.payments[0].amount > 0))
482+ else h(("payment should be in " + G)), if ((bl.payments[0].amount > 0))
460483 then true
461- else "payment amount should be greater than 0", if ((size(bG) == size(bH)))
484+ else "payment amount should be greater than 0", if ((size(bJ) == size(bK)))
462485 then true
463- else h("addressList should be same size as amountList"), if ((bk.payments[0].amount >= bL))
486+ else h("addressList should be same size as amountList"), if ((bl.payments[0].amount >= bO))
464487 then true
465488 else h("payment amount is less than sum of amountList")]
466- if ((bv == bv))
489+ if ((bw == bw))
467490 then {
468- func bM (bJ,be) = {
469- let bN = bJ
470- let af = bN._1
471- let bO = bN._2
472- let bP = bN._3
473- let bQ = bd(be)
474- let bR = s(bG[bO])
475- let bS = valueOrElse(getInteger(this, bR), 0)
476- $Tuple3((af :+ IntegerEntry(bR, (bS + bQ))), (bO + 1), (bP + bQ))
491+ func bP (bM,be) = {
492+ let bQ = bM
493+ let af = bQ._1
494+ let bR = bQ._2
495+ let bS = bQ._3
496+ let bT = bd(be)
497+ let bU = s(bJ[bR])
498+ let bV = valueOrElse(getInteger(this, bU), 0)
499+ $Tuple3((af :+ IntegerEntry(bU, (bV + bT))), (bR + 1), (bS + bT))
477500 }
478501
479- let bT = {
480- let ak = bH
502+ let bW = {
503+ let ak = bK
481504 let al = size(ak)
482505 let am = $Tuple3(nil, 0, 0)
483- func bU (ao,ap) = if ((ap >= al))
506+ func bX (ao,ap) = if ((ap >= al))
484507 then ao
485- else bM(ao, ak[ap])
508+ else bP(ao, ak[ap])
486509
487- func bV (ao,ap) = if ((ap >= al))
510+ func bY (ao,ap) = if ((ap >= al))
488511 then ao
489512 else throw("List size exceeds 90")
490513
491- bV(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(am, 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)
514+ bY(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(bX(am, 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)
492515 }
493- let bW = bT._1
494- let bX = bT._2
495- let bY = bT._3
496- let bZ = bb((E + bY))
497- ([IntegerEntry(p, (F + bY)), IntegerEntry(n, (E + bY)), IntegerEntry(o, bZ), IntegerEntry(m, height)] ++ bW)
516+ let bZ = bW._1
517+ let ca = bW._2
518+ let cb = bW._3
519+ let cc = bb((E + cb))
520+ ([IntegerEntry(p, (F + cb)), IntegerEntry(n, (E + cb)), IntegerEntry(o, cc), IntegerEntry(m, height)] ++ bZ)
498521 }
499522 else throw("Strict value is not equal to itself.")
500523 }
501524
502525
503526
504-@Callable(bk)
527+@Callable(bl)
505528 func getUserAssetsREADONLY (r) = {
506529 let bi = bf(r)
507- let ca = bg(r)
508- let cb = bb(ca)
509- let bE = bh(r)
510- let bo = valueOrElse(getInteger(this, w(r)), 0)
511- let bx = valueOrElse(getInteger(this, v(r)), 0)
512- let cc = aV(r)
513- let cd = cc._1
514- let ce = cc._2
515- $Tuple2(nil, $Tuple10(bi, bE, aT(), bo, bx, ca, cb, cd, ce, aU()))
530+ let cd = bg(r)
531+ let ce = bb(cd)
532+ let bG = bh(r)
533+ let bp = valueOrElse(getInteger(this, w(r)), 0)
534+ let by = valueOrElse(getInteger(this, v(r)), 0)
535+ let cf = aV(r)
536+ let cg = cf._1
537+ let ch = cf._2
538+ $Tuple2(nil, $Tuple10(bi, bG, aT(), bp, by, cd, ce, cg, ch, aU()))
516539 }
517540
518541
519542
520-@Callable(bk)
543+@Callable(bl)
521544 func getTotalAssetsREADONLY () = $Tuple2(nil, $Tuple6(E, aQ(), aT(), F, bb(F), aU()))
522545
523546
524547
525-@Callable(bk)
548+@Callable(bl)
526549 func voteForTxId (z) = {
527- let ay = toBase58String(bk.caller.bytes)
550+ let ay = toBase58String(bl.caller.bytes)
528551 let ah = O(z)
529552 let af = [StringEntry(T(), z)]
530- let cf = getString(this, T())
553+ let ci = getString(this, T())
531554 let aC = [if ((size(fromBase58String(z)) == N))
532555 then true
533- else h((z + " is not valid txId")), if (if ((cf == unit))
556+ else h((z + " is not valid txId")), if (if ((ci == unit))
534557 then true
535- else (value(cf) != z))
558+ else (value(ci) != z))
536559 then true
537560 else h((z + " is already allowed"))]
538561 if ((aC == aC))
539562 then ax(ay, ah, M, af)
540563 else throw("Strict value is not equal to itself.")
541564 }
542565
543566
544-@Verifier(cg)
545-func ch () = {
546- let ci = (cg.id == fromBase58String(valueOrElse(getString(this, T()), "")))
547- let cj = if ((size(X()) >= M))
567+@Verifier(cj)
568+func ck () = {
569+ let cl = (cj.id == fromBase58String(valueOrElse(getString(this, T()), "")))
570+ let cm = if ((size(X()) >= M))
548571 then false
549- else sigVerify(cg.bodyBytes, cg.proofs[0], cg.senderPublicKey)
550- if (ci)
572+ else sigVerify(cj.bodyBytes, cj.proofs[0], cj.senderPublicKey)
573+ if (cl)
551574 then true
552- else cj
575+ else cm
553576 }
554577

github/deemru/w8io/3ef1775 
274.24 ms