tx · 3Lr7BqyTgiuPQMK8VPqWbFxwxUJMcBJ81f3LUhbLKDUz

3N4QFkEYPsR9D54c1pHRQzqRARjubXcbGuA:  -0.02000000 Waves

2023.07.04 10:22 [2650856] smart account 3N4QFkEYPsR9D54c1pHRQzqRARjubXcbGuA > SELF 0.00000000 Waves

{ "type": 13, "id": "3Lr7BqyTgiuPQMK8VPqWbFxwxUJMcBJ81f3LUhbLKDUz", "fee": 2000000, "feeAssetId": null, "timestamp": 1688455396448, "version": 1, "sender": "3N4QFkEYPsR9D54c1pHRQzqRARjubXcbGuA", "senderPublicKey": "8nr9XxGKmrRg6E6Zss6YPynBYEFbCf39Z2D9WvVuUgzY", "proofs": [ "2SwkBDHMifF3g1tNghHgDc3wfFdyQVLnP2zTt8jiEvFWHmZxdcdGyspb2jAi246EyyojiS7XHRMvNTXWHgstQAP1" ], "script": "base64:BwIqCAISAwoBAhIGCgQCAQEBEgMKAQISAwoBAhIECgICAhIECgICAhIDCgECKAADU0VQAgJfXwANQ09OVFJBQ1RfTkFNRQIPY2FsY3VsYXRvci5yaWRlAAZTQ0FMRTgAgMLXLwAHUEVORElORwIHUEVORElORwAIRklOSVNIRUQCCEZJTklTSEVEAAVXQVZFUwIFV0FWRVMBB3dyYXBFcnIBAXMJAKwCAgkArAICBQ1DT05UUkFDVF9OQU1FAgI6IAUBcwEIdGhyb3dFcnIBAXMJAAIBCQEHd3JhcEVycgEFAXMBD2Fzc2V0SWRUb1N0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWIDCQABAgUHJG1hdGNoMAIEVW5pdAUFV0FWRVMJAAIBAgtNYXRjaCBlcnJvcgEDYWJzAQFuAwkAZgIAAAUBbgkBAS0BBQFuBQFuARFrZXlGYWN0b3J5QWRkcmVzcwAJALkJAgkAzAgCAgIlcwkAzAgCAgdmYWN0b3J5BQNuaWwFA1NFUAEMa2V5THBBc3NldElkAAkAuQkCCQDMCAICAiVzCQDMCAICCWxwQXNzZXRJZAUDbmlsBQNTRVABF2tleVByb3h5VHJlYXN1cnlBZGRyZXNzAAkAuQkCCQDMCAICAiVzCQDMCAICDXByb3h5VHJlYXN1cnkFA25pbAUDU0VQARZrZXlNYWluVHJlYXN1cnlBZGRyZXNzAAkAuQkCCQDMCAICAiVzCQDMCAICDG1haW5UcmVhc3VyeQUDbmlsBQNTRVABC2tleUludmVzdGVkAQdhc3NldElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghpbnZlc3RlZAkAzAgCCQEPYXNzZXRJZFRvU3RyaW5nAQUHYXNzZXRJZAUDbmlsBQNTRVABCmtleURvbmF0ZWQBB2Fzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICB2RvbmF0ZWQJAMwIAgkBD2Fzc2V0SWRUb1N0cmluZwEFB2Fzc2V0SWQFA25pbAUDU0VQAQxrZXlBdmFpbGFibGUBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAglhdmFpbGFibGUJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABCmtleUNsYWltZWQBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgdjbGFpbWVkCQDMCAIJAKUIAQULdXNlckFkZHJlc3MFA25pbAUDU0VQARBrZXlDdXJyZW50UGVyaW9kAAkAuQkCCQDMCAICAiVzCQDMCAICDWN1cnJlbnRQZXJpb2QFA25pbAUDU0VQARFrZXlQcmljZUZvclBlcmlvZAEGcGVyaW9kCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgVwcmljZQkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABDmtleVN0YXJ0SGVpZ2h0AQZwZXJpb2QJALkJAgkAzAgCAgQlcyVkCQDMCAICC3N0YXJ0SGVpZ2h0CQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEPa2V5UGVyaW9kTGVuZ3RoAAIQJXNfX3BlcmlvZExlbmd0aAEYa2V5QmxvY2tQcm9jZXNzaW5nUmV3YXJkAAIZJXNfX2Jsb2NrUHJvY2Vzc2luZ1Jld2FyZAEVa2V5TmV4dEJsb2NrVG9Qcm9jZXNzAAIWJXNfX25leHRCbG9ja1RvUHJvY2VzcwERa2V5QmxvY2tQcm9jZXNzZWQBBmhlaWdodAkAuQkCCQDMCAICBCVzJWQJAMwIAgIOYmxvY2tQcm9jZXNzZWQJAMwIAgkApAMBBQZoZWlnaHQFA25pbAUDU0VQAQ1rZXlXaXRoZHJhd2FsAAIOJXNfX3dpdGhkcmF3YWwBFGtleVdpdGhkcmF3YWxSZXF1ZXN0Agt1c2VyQWRkcmVzcwR0eElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICCndpdGhkcmF3YWwJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCCQDYBAEFBHR4SWQFA25pbAUDU0VQARZ2YWx1ZVdpdGhkcmF3YWxSZXF1ZXN0BAZzdGF0dXMNbHBBc3NldEFtb3VudAx0YXJnZXRQZXJpb2QJY2xhaW1UeElkBAxjbGFpbVR4SWRTdHIEByRtYXRjaDAFCWNsYWltVHhJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWIDCQABAgUHJG1hdGNoMAIEVW5pdAIEU09PTgkAAgECC01hdGNoIGVycm9yCQC5CQIJAMwIAgIIJXMlZCVkJXMJAMwIAgUGc3RhdHVzCQDMCAIJAKQDAQUNbHBBc3NldEFtb3VudAkAzAgCCQCkAwEFDHRhcmdldFBlcmlvZAkAzAgCBQxjbGFpbVR4SWRTdHIFA25pbAUDU0VQASFwYXJzZVdpdGhkcmF3YWxSZXF1ZXN0VmFsdWVPckZhaWwBAXMEBXBhcnRzCQC1CQIFAXMFA1NFUAMJAAACCQCQAwEFBXBhcnRzAAUEBnN0YXR1cwkAkQMCBQVwYXJ0cwABBA1scEFzc2V0QW1vdW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQVwYXJ0cwACCQEHd3JhcEVycgECFWludmFsaWQgbHBBc3NldEFtb3VudAQMdGFyZ2V0UGVyaW9kCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQVwYXJ0cwADCQEHd3JhcEVycgECFGludmFsaWQgdGFyZ2V0UGVyaW9kBAljbGFpbVR4SWQJAJEDAgUFcGFydHMABAkAlgoEBQZzdGF0dXMFDWxwQXNzZXRBbW91bnQFDHRhcmdldFBlcmlvZAUJY2xhaW1UeElkCQEIdGhyb3dFcnIBAiBpbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdCB2YWx1ZQAUZmFjdG9yeUFkZHJlc3NPcHRpb24EByRtYXRjaDAJAJ0IAgUEdGhpcwkBEWtleUZhY3RvcnlBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFFGZhY3RvcnlBZGRyZXNzT3B0aW9uCQEHd3JhcEVycgECF2ludmFsaWQgZmFjdG9yeSBhZGRyZXNzAA9scEFzc2V0SWRPcHRpb24EByRtYXRjaDAFFGZhY3RvcnlBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBDGtleUxwQXNzZXRJZAADCQABAgUHJG1hdGNoMQIGU3RyaW5nBAFzBQckbWF0Y2gxCQDZBAEFAXMDCQABAgUHJG1hdGNoMQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgAPbHBBc3NldElkT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIFD2xwQXNzZXRJZE9wdGlvbgkBB3dyYXBFcnIBAhFpbnZhbGlkIGxwQXNzZXRJZAAacHJveHlUcmVhc3VyeUFkZHJlc3NPcHRpb24EByRtYXRjaDAFFGZhY3RvcnlBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBF2tleVByb3h5VHJlYXN1cnlBZGRyZXNzAAMJAAECBQckbWF0Y2gxAgZTdHJpbmcEAXMFByRtYXRjaDEJAKYIAQUBcwMJAAECBQckbWF0Y2gxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABpwcm94eVRyZWFzdXJ5QWRkcmVzc09yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBRpwcm94eVRyZWFzdXJ5QWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAh5pbnZhbGlkIHByb3h5IHRyZWFzdXJ5IGFkZHJlc3MAHGZlYXR1cmVUcmVhc3VyeUFkZHJlc3NPcHRpb24EByRtYXRjaDAFFGZhY3RvcnlBZGRyZXNzT3B0aW9uAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAEByRtYXRjaDEJAJ0IAgUBYQkBFmtleU1haW5UcmVhc3VyeUFkZHJlc3MAAwkAAQIFByRtYXRjaDECBlN0cmluZwQBcwUHJG1hdGNoMQkApggBBQFzAwkAAQIFByRtYXRjaDECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAHGZlYXR1cmVUcmVhc3VyeUFkZHJlc3NPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUcZmVhdHVyZVRyZWFzdXJ5QWRkcmVzc09wdGlvbgkBB3dyYXBFcnIBAiBpbnZhbGlkIGZlYXR1cmUgdHJlYXN1cnkgYWRkcmVzcwELb25seUFkZHJlc3MCAWkHYWRkcmVzcwMJAAACCAUBaQZjYWxsZXIFB2FkZHJlc3MGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAELb25seUZhY3RvcnkBAWkJAQtvbmx5QWRkcmVzcwIFAWkFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAQ9yZXdhcmRGb3JPcHRpb24CB3Jld2FyZHMGdGFyZ2V0BAFzCQCQAwEFB3Jld2FyZHMECyR0MDQyODc0MzEyCQCRAwIFB3Jld2FyZHMAAAQCYTAIBQskdDA0Mjg3NDMxMgJfMQQCcjAIBQskdDA0Mjg3NDMxMgJfMgQLJHQwNDMxNTQzNDAJAJEDAgUHcmV3YXJkcwABBAJhMQgFCyR0MDQzMTU0MzQwAl8xBAJyMQgFCyR0MDQzMTU0MzQwAl8yBAskdDA0MzQzNDM2OAkAkQMCBQdyZXdhcmRzAAIEAmEyCAULJHQwNDM0MzQzNjgCXzEEAnIyCAULJHQwNDM0MzQzNjgCXzIDAwkAZgIFAXMAAAkAAAIFAmEwBQZ0YXJnZXQHBQJyMAMDCQBmAgUBcwABCQAAAgUCYTEFBnRhcmdldAcFAnIxAwMJAGYCBQFzAAIJAAACBQJhMgUGdGFyZ2V0BwUCcjIFBHVuaXQHAWkBB2NsYWltTFABEHVzZXJBZGRyZXNzQnl0ZXMEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdXNlckFkZHJlc3MJAQdBZGRyZXNzAQUQdXNlckFkZHJlc3NCeXRlcwQJYXZhaWxhYmxlCQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEMa2V5QXZhaWxhYmxlAQULdXNlckFkZHJlc3MAAAQHY2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBCmtleUNsYWltZWQBBQt1c2VyQWRkcmVzcwAABA5mYWN0b3J5QWN0aW9ucwMJAGYCBQlhdmFpbGFibGUAAAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAg10cmFuc2ZlckFzc2V0CQDMCAIFEHVzZXJBZGRyZXNzQnl0ZXMJAMwIAgUJYXZhaWxhYmxlCQDMCAIFD2xwQXNzZXRJZE9yRmFpbAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIMaW50ZWdlckVudHJ5CQDMCAIJAQxrZXlBdmFpbGFibGUBBQt1c2VyQWRkcmVzcwkAzAgCAAAFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQEKa2V5Q2xhaW1lZAEFC3VzZXJBZGRyZXNzCQDMCAIJAGQCBQdjbGFpbWVkBQlhdmFpbGFibGUFA25pbAUDbmlsBQNuaWwJAQh0aHJvd0VycgECEG5vdGhpbmcgdG8gY2xhaW0JAJQKAgUDbmlsBQ5mYWN0b3J5QWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhmaW5hbGl6ZQQQdXNlckFkZHJlc3NCeXRlcxhuZXdUcmVhc3VyeVZvbHVtZUluV2F2ZXMXcHdyTWFuYWdlcnNCb251c0luV2F2ZXMgdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWYEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQTY3VycmVudFBlcmlvZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEQa2V5Q3VycmVudFBlcmlvZAAJAQd3cmFwRXJyAQIOaW52YWxpZCBwZXJpb2QEDHBlcmlvZExlbmd0aAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEPa2V5UGVyaW9kTGVuZ3RoAAkBB3dyYXBFcnIBAhVpbnZhbGlkIHBlcmlvZCBsZW5ndGgEEmN1cnJlbnRTdGFydEhlaWdodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEOa2V5U3RhcnRIZWlnaHQBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEHd3JhcEVycgECFGludmFsaWQgc3RhcnQgaGVpZ2h0BBJjdXJyZW50UHJpY2VPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEWtleVByaWNlRm9yUGVyaW9kAQUTY3VycmVudFBlcmlvZE9yRmFpbAkBB3dyYXBFcnIBAg1pbnZhbGlkIHByaWNlBBJuZXh0QmxvY2tUb1Byb2Nlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBFWtleU5leHRCbG9ja1RvUHJvY2VzcwAJAQd3cmFwRXJyAQIdaW52YWxpZCBuZXh0IGJsb2NrIHRvIHByb2Nlc3MED3BlcmlvZEVuZEhlaWdodAkAZQIJAGQCBRJjdXJyZW50U3RhcnRIZWlnaHQFDHBlcmlvZExlbmd0aAABBAZjaGVja3MJAMwIAgMJAAACCAUBaQxvcmlnaW5DYWxsZXIFHGZlYXR1cmVUcmVhc3VyeUFkZHJlc3NPckZhaWwGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAkAzAgCAwkAZgIFEm5leHRCbG9ja1RvUHJvY2VzcwUPcGVyaW9kRW5kSGVpZ2h0BgkBCHRocm93RXJyAQISdW5wcm9jZXNzZWQgYmxvY2tzCQDMCAIDCQBnAgUYbmV3VHJlYXN1cnlWb2x1bWVJbldhdmVzAAAGCQEIdGhyb3dFcnIBAhtpbnZhbGlkIG5ldyB0cmVhc3VyeSB2b2x1bWUJAMwIAgMJAGcCBRdwd3JNYW5hZ2Vyc0JvbnVzSW5XYXZlcwAABgkBCHRocm93RXJyAQIaaW52YWxpZCBQV1IgbWFuYWdlcnMgYm9udXMJAMwIAgMDCQBnAgUgdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWYJAQEtAQUGU0NBTEU4CQBnAgUGU0NBTEU4BSB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgcGCQEIdGhyb3dFcnIBAjNpbnZhbGlkIHRyZWFzdXJ5IHZvbHVtZSBkaWZmIGFsbG9jYXRpb24gY29lZmZpY2llbnQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQSZG9uYXRlZFdhdmVzQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEKa2V5RG9uYXRlZAEFBHVuaXQAAAQTaW52ZXN0ZWRXYXZlc0Ftb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBC2tleUludmVzdGVkAQUEdW5pdAAABBxjdXJyZW50VHJlYXN1cnlWb2x1bWVJbldhdmVzCQBkAgUSZG9uYXRlZFdhdmVzQW1vdW50BRNpbnZlc3RlZFdhdmVzQW1vdW50BAlwcm9maXRSYXcJAGUCBRhuZXdUcmVhc3VyeVZvbHVtZUluV2F2ZXMFHGN1cnJlbnRUcmVhc3VyeVZvbHVtZUluV2F2ZXMEFnB3ck1hbmFnZXJzQm9udXNBbW91bnQDAwkAZgIFCXByb2ZpdFJhdwAACQBnAgUJcHJvZml0UmF3BRdwd3JNYW5hZ2Vyc0JvbnVzSW5XYXZlcwcFF3B3ck1hbmFnZXJzQm9udXNJbldhdmVzAAAEBnByb2ZpdAkAZQIFCXByb2ZpdFJhdwUWcHdyTWFuYWdlcnNCb251c0Ftb3VudAQMZG9uYXRpb25QYXJ0AwkAZgIFHGN1cnJlbnRUcmVhc3VyeVZvbHVtZUluV2F2ZXMAAAkAawMFEmRvbmF0ZWRXYXZlc0Ftb3VudAUGU0NBTEU4BRxjdXJyZW50VHJlYXN1cnlWb2x1bWVJbldhdmVzAAAEFWRvbmF0aW9uUHJvZml0UGFydFJhdwkAawMFBnByb2ZpdAUMZG9uYXRpb25QYXJ0BQZTQ0FMRTgEF2ludmVzdG1lbnRQcm9maXRQYXJ0UmF3CQBlAgUGcHJvZml0BRVkb25hdGlvblByb2ZpdFBhcnRSYXcEI3RyZWFzdXJ5Vm9sdW1lRGlmZkFsbG9jYXRpb25Db2VmQWJzCQEDYWJzAQUgdHJlYXN1cnlWb2x1bWVEaWZmQWxsb2NhdGlvbkNvZWYEEGFtb3VudFRvRG9uYXRpb24JAGsDBRdpbnZlc3RtZW50UHJvZml0UGFydFJhdwMJAGYCAAAFIHRyZWFzdXJ5Vm9sdW1lRGlmZkFsbG9jYXRpb25Db2VmBSN0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZkFicwAABQZTQ0FMRTgEEmFtb3VudFRvSW52ZXN0bWVudAkAawMFFWRvbmF0aW9uUHJvZml0UGFydFJhdwMJAGYCBSB0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZgAABSN0cmVhc3VyeVZvbHVtZURpZmZBbGxvY2F0aW9uQ29lZkFicwAABQZTQ0FMRTgEEmRvbmF0aW9uUHJvZml0UGFydAkAZAIJAGUCBRVkb25hdGlvblByb2ZpdFBhcnRSYXcFEmFtb3VudFRvSW52ZXN0bWVudAUQYW1vdW50VG9Eb25hdGlvbgQUaW52ZXN0bWVudFByb2ZpdFBhcnQJAGQCCQBlAgUXaW52ZXN0bWVudFByb2ZpdFBhcnRSYXcFEGFtb3VudFRvRG9uYXRpb24FEmFtb3VudFRvSW52ZXN0bWVudAQWaW52ZXN0ZWRXYXZlc0Ftb3VudE5ldwkAZAIFE2ludmVzdGVkV2F2ZXNBbW91bnQFFGludmVzdG1lbnRQcm9maXRQYXJ0BAluZXdQZXJpb2QJAGQCBRNjdXJyZW50UGVyaW9kT3JGYWlsAAEED2xwQXNzZXRRdWFudGl0eQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQ9scEFzc2V0SWRPckZhaWwJAQd3cmFwRXJyAQIUaW52YWxpZCBscEFzc2V0IGluZm8IcXVhbnRpdHkECG5ld1ByaWNlCQBrAwUWaW52ZXN0ZWRXYXZlc0Ftb3VudE5ldwUGU0NBTEU4BQ9scEFzc2V0UXVhbnRpdHkEE2xwQXNzZXRBbW91bnRUb0J1cm4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ1rZXlXaXRoZHJhd2FsAAAABBBwYXltZW50QW1vdW50TWluCQCWAwEJAMwIAgAACQDMCAIJAGsDBRNscEFzc2V0QW1vdW50VG9CdXJuBQhuZXdQcmljZQUGU0NBTEU4BQNuaWwEDXBheW1lbnRPcHRpb24DCQBmAgkAkAMBCAUBaQhwYXltZW50cwAACQCRAwIIBQFpCHBheW1lbnRzAAAFBHVuaXQEDXBheW1lbnRBbW91bnQICQEFdmFsdWUBBQ1wYXltZW50T3B0aW9uBmFtb3VudAQOcGF5bWVudEFzc2V0SWQICQEFdmFsdWUBBQ1wYXltZW50T3B0aW9uB2Fzc2V0SWQEDGNoZWNrUGF5bWVudAMDCQAAAgUQcGF5bWVudEFtb3VudE1pbgAABgMDCQECIT0CBQ1wYXltZW50T3B0aW9uBQR1bml0CQAAAgUOcGF5bWVudEFzc2V0SWQFBHVuaXQHCQBnAgUNcGF5bWVudEFtb3VudAUQcGF5bWVudEFtb3VudE1pbgcGCQEIdGhyb3dFcnIBCQCsAgICJmludmFsaWQgcGF5bWVudHMsIHBheW1lbnQgYW1vdW50IG1pbjogCQCkAwEFEHBheW1lbnRBbW91bnRNaW4DCQAAAgUMY2hlY2tQYXltZW50BQxjaGVja1BheW1lbnQEB2FjdGlvbnMDCQECIT0CBQ1wYXltZW50T3B0aW9uBQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFFGZhY3RvcnlBZGRyZXNzT3JGYWlsBQ1wYXltZW50QW1vdW50BQ5wYXltZW50QXNzZXRJZAUDbmlsBQNuaWwEDmZhY3RvcnlBY3Rpb25zCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQEQa2V5Q3VycmVudFBlcmlvZAAJAMwIAgUJbmV3UGVyaW9kBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBEWtleVByaWNlRm9yUGVyaW9kAQUJbmV3UGVyaW9kCQDMCAIFCG5ld1ByaWNlBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBDmtleVN0YXJ0SGVpZ2h0AQUJbmV3UGVyaW9kCQDMCAIJAGQCBQ9wZXJpb2RFbmRIZWlnaHQAAQUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIEYnVybgkAzAgCBRNscEFzc2V0QW1vdW50VG9CdXJuBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBDWtleVdpdGhkcmF3YWwACQDMCAIAAAUDbmlsBQNuaWwFA25pbAkAlAoCBQdhY3Rpb25zBQ5mYWN0b3J5QWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQZpbnZlc3QBEHVzZXJBZGRyZXNzQnl0ZXMEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdXNlckFkZHJlc3MJAQdBZGRyZXNzAQUQdXNlckFkZHJlc3NCeXRlcwQTY3VycmVudFBlcmlvZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEQa2V5Q3VycmVudFBlcmlvZAAJAQd3cmFwRXJyAQIOaW52YWxpZCBwZXJpb2QEEmN1cnJlbnRQcmljZU9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQERa2V5UHJpY2VGb3JQZXJpb2QBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEHd3JhcEVycgECDWludmFsaWQgcHJpY2UEB3BheW1lbnQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABCQCRAwIIBQFpCHBheW1lbnRzAAAJAQh0aHJvd0VycgECEGludmFsaWQgcGF5bWVudHMEDSR0MDEwNjM4MTA4MTUDAwkAAAIIBQdwYXltZW50B2Fzc2V0SWQFBHVuaXQJAGYCCAUHcGF5bWVudAZhbW91bnQAAAcJAJQKAggFB3BheW1lbnQGYW1vdW50CAUHcGF5bWVudAdhc3NldElkCQEIdGhyb3dFcnIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50BA1wYXltZW50QW1vdW50CAUNJHQwMTA2MzgxMDgxNQJfMQQOcGF5bWVudEFzc2V0SWQIBQ0kdDAxMDYzODEwODE1Al8yBA1scEFzc2V0QW1vdW50AwkAZgIFEmN1cnJlbnRQcmljZU9yRmFpbAAACQBrAwUNcGF5bWVudEFtb3VudAUGU0NBTEU4BRJjdXJyZW50UHJpY2VPckZhaWwAAAQIaW52ZXN0ZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQtrZXlJbnZlc3RlZAEFBHVuaXQAAAQHYWN0aW9ucwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRxmZWF0dXJlVHJlYXN1cnlBZGRyZXNzT3JGYWlsBQ1wYXltZW50QW1vdW50BQ5wYXltZW50QXNzZXRJZAUDbmlsBA5mYWN0b3J5QWN0aW9ucwkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBC2tleUludmVzdGVkAQUEdW5pdAkAzAgCCQBkAgUIaW52ZXN0ZWQFDXBheW1lbnRBbW91bnQFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCB3JlaXNzdWUJAMwIAgUNbHBBc3NldEFtb3VudAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAINdHJhbnNmZXJBc3NldAkAzAgCBRB1c2VyQWRkcmVzc0J5dGVzCQDMCAIFDWxwQXNzZXRBbW91bnQJAMwIAgUPbHBBc3NldElkT3JGYWlsBQNuaWwFA25pbAUDbmlsCQCUCgIFB2FjdGlvbnMFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHdpdGhkcmF3ARB1c2VyQWRkcmVzc0J5dGVzBAtjaGVja0NhbGxlcgkBC29ubHlGYWN0b3J5AQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEC3VzZXJBZGRyZXNzCQEHQWRkcmVzcwEFEHVzZXJBZGRyZXNzQnl0ZXMEE2N1cnJlbnRQZXJpb2RPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEGtleUN1cnJlbnRQZXJpb2QACQEHd3JhcEVycgECDmludmFsaWQgcGVyaW9kBAdwYXltZW50AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQEIdGhyb3dFcnIBCQEHd3JhcEVycgECEGludmFsaWQgcGF5bWVudHMEDnBheW1lbnRBc3NldElkAwkAAAIIBQdwYXltZW50B2Fzc2V0SWQFD2xwQXNzZXRJZE9yRmFpbAUPbHBBc3NldElkT3JGYWlsCQEIdGhyb3dFcnIBAhVpbnZhbGlkIHBheW1lbnQgYXNzZXQEDXBheW1lbnRBbW91bnQDCQBmAggFB3BheW1lbnQGYW1vdW50AAAIBQdwYXltZW50BmFtb3VudAkBCHRocm93RXJyAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAQKd2l0aGRyYXdhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBDWtleVdpdGhkcmF3YWwAAAAEB2FjdGlvbnMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUUZmFjdG9yeUFkZHJlc3NPckZhaWwFDXBheW1lbnRBbW91bnQFDnBheW1lbnRBc3NldElkBQNuaWwEDmZhY3RvcnlBY3Rpb25zCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQENa2V5V2l0aGRyYXdhbAAJAMwIAgkAZAIFCndpdGhkcmF3YWwFDXBheW1lbnRBbW91bnQFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCC3N0cmluZ0VudHJ5CQDMCAIJARRrZXlXaXRoZHJhd2FsUmVxdWVzdAIFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkCQDMCAIJARZ2YWx1ZVdpdGhkcmF3YWxSZXF1ZXN0BAUHUEVORElORwUNcGF5bWVudEFtb3VudAkAZAIFE2N1cnJlbnRQZXJpb2RPckZhaWwAAQUEdW5pdAUDbmlsBQNuaWwFA25pbAMJAAACBQ5mYWN0b3J5QWN0aW9ucwUOZmFjdG9yeUFjdGlvbnMJAJQKAgUHYWN0aW9ucwUOZmFjdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY2FuY2VsV2l0aGRyYXcCEHVzZXJBZGRyZXNzQnl0ZXMEdHhJZAQLY2hlY2tDYWxsZXIJAQtvbmx5RmFjdG9yeQEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt1c2VyQWRkcmVzcwkBB0FkZHJlc3MBBRB1c2VyQWRkcmVzc0J5dGVzBBd3aXRoZHJhd2FsUmVxdWVzdE9wdGlvbgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEUa2V5V2l0aGRyYXdhbFJlcXVlc3QCBQt1c2VyQWRkcmVzcwUEdHhJZAkBB3dyYXBFcnIBAhppbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdAQTY3VycmVudFBlcmlvZE9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEQa2V5Q3VycmVudFBlcmlvZAAJAQd3cmFwRXJyAQIOaW52YWxpZCBwZXJpb2QEDSR0MDEzMjI1MTMzMzgJASFwYXJzZVdpdGhkcmF3YWxSZXF1ZXN0VmFsdWVPckZhaWwBBRd3aXRoZHJhd2FsUmVxdWVzdE9wdGlvbgQGc3RhdHVzCAUNJHQwMTMyMjUxMzMzOAJfMQQNbHBBc3NldEFtb3VudAgFDSR0MDEzMjI1MTMzMzgCXzIEDHRhcmdldFBlcmlvZAgFDSR0MDEzMjI1MTMzMzgCXzMECWNsYWltVHhJZAgFDSR0MDEzMjI1MTMzMzgCXzQEBmNoZWNrcwkAzAgCAwkAAAIFBnN0YXR1cwUHUEVORElORwYJAQh0aHJvd0VycgECIWludmFsaWQgd2l0aGRyYXdhbCByZXF1ZXN0IHN0YXR1cwkAzAgCAwkAZgIFDHRhcmdldFBlcmlvZAUTY3VycmVudFBlcmlvZE9yRmFpbAYJAQh0aHJvd0VycgECIWludmFsaWQgd2l0aGRyYXdhbCByZXF1ZXN0IHBlcmlvZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAp3aXRoZHJhd2FsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ1rZXlXaXRoZHJhd2FsAAkBB3dyYXBFcnIBAh9pbnZhbGlkIHRvdGFsIHdpdGhkcmF3YWwgYW1vdW50BA5mYWN0b3J5QWN0aW9ucwkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBDWtleVdpdGhkcmF3YWwACQDMCAIDCQBnAgUKd2l0aGRyYXdhbAUNbHBBc3NldEFtb3VudAkAZQIFCndpdGhkcmF3YWwFDWxwQXNzZXRBbW91bnQJAQh0aHJvd0VycgECGWludmFsaWQgd2l0aGRyYXdhbCBhbW91bnQFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCC2RlbGV0ZUVudHJ5CQDMCAIJARRrZXlXaXRoZHJhd2FsUmVxdWVzdAIFC3VzZXJBZGRyZXNzBQR0eElkBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAg10cmFuc2ZlckFzc2V0CQDMCAIFEHVzZXJBZGRyZXNzQnl0ZXMJAMwIAgUNbHBBc3NldEFtb3VudAkAzAgCBQ9scEFzc2V0SWRPckZhaWwFA25pbAUDbmlsBQNuaWwDCQAAAgUOZmFjdG9yeUFjdGlvbnMFDmZhY3RvcnlBY3Rpb25zCQCUCgIFA25pbAUOZmFjdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKY2xhaW1XYXZlcwIQdXNlckFkZHJlc3NCeXRlcwR0eElkBAtjaGVja0NhbGxlcgkBC29ubHlGYWN0b3J5AQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEC3VzZXJBZGRyZXNzCQEHQWRkcmVzcwEFEHVzZXJBZGRyZXNzQnl0ZXMEE2N1cnJlbnRQZXJpb2RPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBEGtleUN1cnJlbnRQZXJpb2QACQEHd3JhcEVycgECDmludmFsaWQgcGVyaW9kBBd3aXRoZHJhd2FsUmVxdWVzdE9wdGlvbgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEUa2V5V2l0aGRyYXdhbFJlcXVlc3QCBQt1c2VyQWRkcmVzcwUEdHhJZAkBB3dyYXBFcnIBAhppbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdAQNJHQwMTQ2NzAxNDc4MwkBIXBhcnNlV2l0aGRyYXdhbFJlcXVlc3RWYWx1ZU9yRmFpbAEFF3dpdGhkcmF3YWxSZXF1ZXN0T3B0aW9uBAZzdGF0dXMIBQ0kdDAxNDY3MDE0NzgzAl8xBA1scEFzc2V0QW1vdW50CAUNJHQwMTQ2NzAxNDc4MwJfMgQMdGFyZ2V0UGVyaW9kCAUNJHQwMTQ2NzAxNDc4MwJfMwQJY2xhaW1UeElkCAUNJHQwMTQ2NzAxNDc4MwJfNAMJAAACBQZzdGF0dXMFCEZJTklTSEVECQEIdGhyb3dFcnIBAiFpbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdCBzdGF0dXMDCQBmAgUMdGFyZ2V0UGVyaW9kBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEIdGhyb3dFcnIBAiFpbnZhbGlkIHdpdGhkcmF3YWwgcmVxdWVzdCBwZXJpb2QEC3ByaWNlT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJARFrZXlQcmljZUZvclBlcmlvZAEFDHRhcmdldFBlcmlvZAkBB3dyYXBFcnIBAg1pbnZhbGlkIHByaWNlBAZhbW91bnQDCQBmAgULcHJpY2VPckZhaWwAAAkAawMFDWxwQXNzZXRBbW91bnQFC3ByaWNlT3JGYWlsBQZTQ0FMRTgAAAQOZmFjdG9yeUFjdGlvbnMJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAILc3RyaW5nRW50cnkJAMwIAgkBFGtleVdpdGhkcmF3YWxSZXF1ZXN0AgULdXNlckFkZHJlc3MFBHR4SWQJAMwIAgkBFnZhbHVlV2l0aGRyYXdhbFJlcXVlc3QEBQhGSU5JU0hFRAUNbHBBc3NldEFtb3VudAUMdGFyZ2V0UGVyaW9kCAUBaQ10cmFuc2FjdGlvbklkBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAg10cmFuc2ZlcldhdmVzCQDMCAIFEHVzZXJBZGRyZXNzQnl0ZXMJAMwIAgUGYW1vdW50BQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAUOZmFjdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENcHJvY2Vzc0Jsb2NrcwEQdXNlckFkZHJlc3NCeXRlcwQLY2hlY2tDYWxsZXIJAQtvbmx5RmFjdG9yeQEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt1c2VyQWRkcmVzcwkBB0FkZHJlc3MBBRB1c2VyQWRkcmVzc0J5dGVzBBNjdXJyZW50UGVyaW9kT3JGYWlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJARBrZXlDdXJyZW50UGVyaW9kAAkBB3dyYXBFcnIBAg5pbnZhbGlkIHBlcmlvZAQMcGVyaW9kTGVuZ3RoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ9rZXlQZXJpb2RMZW5ndGgACQEHd3JhcEVycgECFWludmFsaWQgcGVyaW9kIGxlbmd0aAQSY3VycmVudFN0YXJ0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUUZmFjdG9yeUFkZHJlc3NPckZhaWwJAQ5rZXlTdGFydEhlaWdodAEFE2N1cnJlbnRQZXJpb2RPckZhaWwJAQd3cmFwRXJyAQIUaW52YWxpZCBzdGFydCBoZWlnaHQEEmN1cnJlbnRQcmljZU9yRmFpbAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQERa2V5UHJpY2VGb3JQZXJpb2QBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQEHd3JhcEVycgECDWludmFsaWQgcHJpY2UEEm5leHRCbG9ja1RvUHJvY2VzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEVa2V5TmV4dEJsb2NrVG9Qcm9jZXNzAAkBB3dyYXBFcnIBAh1pbnZhbGlkIG5leHQgYmxvY2sgdG8gcHJvY2VzcwQPcGVyaW9kRW5kSGVpZ2h0CQBlAgkAZAIFEmN1cnJlbnRTdGFydEhlaWdodAUMcGVyaW9kTGVuZ3RoAAEEHGJsb2Nrc1Byb2Nlc3NpbmdCYXRjaFNpemVNYXgAKAQZYmxvY2tzUHJvY2Vzc2luZ0JhdGNoU2l6ZQMDAwkAZwIFBmhlaWdodAUSbmV4dEJsb2NrVG9Qcm9jZXNzAwkAZwIFEm5leHRCbG9ja1RvUHJvY2VzcwUSY3VycmVudFN0YXJ0SGVpZ2h0BgkAAAIFE2N1cnJlbnRQZXJpb2RPckZhaWwAAAcJAGcCBQ9wZXJpb2RFbmRIZWlnaHQFEm5leHRCbG9ja1RvUHJvY2VzcwcJAJcDAQkAzAgCCQBkAgkAZQIFD3BlcmlvZEVuZEhlaWdodAUSbmV4dEJsb2NrVG9Qcm9jZXNzAAEJAMwIAgUcYmxvY2tzUHJvY2Vzc2luZ0JhdGNoU2l6ZU1heAUDbmlsCQEIdGhyb3dFcnIBCQEHd3JhcEVycgECFGludmFsaWQgdGFyZ2V0IGJsb2NrBBVibG9ja1Byb2Nlc3NpbmdSZXdhcmQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBRRmYWN0b3J5QWRkcmVzc09yRmFpbAkBGGtleUJsb2NrUHJvY2Vzc2luZ1Jld2FyZAAJAQd3cmFwRXJyAQIfaW52YWxpZCBibG9jayBwcm9jZXNzaW5nIHJld2FyZAQgYmxvY2tQcm9jZXNzaW5nUmV3YXJkQnlHZW5lcmF0b3IJAGkCBRVibG9ja1Byb2Nlc3NpbmdSZXdhcmQFGWJsb2Nrc1Byb2Nlc3NpbmdCYXRjaFNpemUEKWJsb2NrUHJvY2Vzc2luZ1Jld2FyZEJ5R2VuZXJhdG9yUmVtYWluZGVyCQBlAgUVYmxvY2tQcm9jZXNzaW5nUmV3YXJkCQBoAgUgYmxvY2tQcm9jZXNzaW5nUmV3YXJkQnlHZW5lcmF0b3IFGWJsb2Nrc1Byb2Nlc3NpbmdCYXRjaFNpemUKAQNtYXACA2FjYwNpbmMDCQBnAgUDaW5jBRlibG9ja3NQcm9jZXNzaW5nQmF0Y2hTaXplBQNhY2MEEXRhcmdldEJsb2NrSGVpZ2h0CQBkAgUSbmV4dEJsb2NrVG9Qcm9jZXNzBQNpbmMED3RhcmdldEJsb2NrSW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDtBwEFEXRhcmdldEJsb2NrSGVpZ2h0CQEHd3JhcEVycgECEmludmFsaWQgYmxvY2sgaW5mbwQUdHJlYXN1cnlSZXdhcmRPckZhaWwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBD3Jld2FyZEZvck9wdGlvbgIIBQ90YXJnZXRCbG9ja0luZm8HcmV3YXJkcwUacHJveHlUcmVhc3VyeUFkZHJlc3NPckZhaWwJAQd3cmFwRXJyAQkArAICAiNpbnZhbGlkIHRyZWFzdXJ5IHJld2FyZCBmb3IgaGVpZ2h0IAkApAMBBRF0YXJnZXRCbG9ja0hlaWdodAQJZ2VuZXJhdG9yCAUPdGFyZ2V0QmxvY2tJbmZvCWdlbmVyYXRvcgQJYXZhaWxhYmxlCQELdmFsdWVPckVsc2UCCQCaCAIFFGZhY3RvcnlBZGRyZXNzT3JGYWlsCQEMa2V5QXZhaWxhYmxlAQUJZ2VuZXJhdG9yAAAEDGNhbGxlclJld2FyZAMJAAACBQNpbmMJAGUCBRlibG9ja3NQcm9jZXNzaW5nQmF0Y2hTaXplAAEJAGQCBSBibG9ja1Byb2Nlc3NpbmdSZXdhcmRCeUdlbmVyYXRvcgUpYmxvY2tQcm9jZXNzaW5nUmV3YXJkQnlHZW5lcmF0b3JSZW1haW5kZXIFIGJsb2NrUHJvY2Vzc2luZ1Jld2FyZEJ5R2VuZXJhdG9yBA1scEFzc2V0QW1vdW50AwkAZgIFEmN1cnJlbnRQcmljZU9yRmFpbAAACQBrAwkAZQIFFHRyZWFzdXJ5UmV3YXJkT3JGYWlsBQxjYWxsZXJSZXdhcmQFBlNDQUxFOAUSY3VycmVudFByaWNlT3JGYWlsAAAEFGZhY3RvcnlBY3Rpb25zU2luZ2xlCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCC3N0cmluZ0VudHJ5CQDMCAIJARFrZXlCbG9ja1Byb2Nlc3NlZAEFEXRhcmdldEJsb2NrSGVpZ2h0CQDMCAIJALkJAgkAzAgCCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJAMwIAgkApAMBBRNjdXJyZW50UGVyaW9kT3JGYWlsCQDMCAIJAKUIAQUJZ2VuZXJhdG9yCQDMCAIJANgEAQUQdXNlckFkZHJlc3NCeXRlcwkAzAgCCQCkAwEFFHRyZWFzdXJ5UmV3YXJkT3JGYWlsCQDMCAIJAKQDAQUMY2FsbGVyUmV3YXJkCQDMCAIJAKQDAQUNbHBBc3NldEFtb3VudAUDbmlsBQNTRVAFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDGludGVnZXJFbnRyeQkAzAgCCQEMa2V5QXZhaWxhYmxlAQUJZ2VuZXJhdG9yCQDMCAIJAGQCBQlhdmFpbGFibGUFDWxwQXNzZXRBbW91bnQFA25pbAUDbmlsBQNuaWwDCQAAAgUUZmFjdG9yeUFjdGlvbnNTaW5nbGUFFGZhY3RvcnlBY3Rpb25zU2luZ2xlBA0kdDAxOTAxOTE5MDUyBQNhY2MECmxwQXNzZXRBY2MIBQ0kdDAxOTAxOTE5MDUyAl8xBAlyZXdhcmRBY2MIBQ0kdDAxOTAxOTE5MDUyAl8yCQCUCgIJAGQCBQpscEFzc2V0QWNjBQ1scEFzc2V0QW1vdW50CQBkAgUJcmV3YXJkQWNjBRR0cmVhc3VyeVJld2FyZE9yRmFpbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQEbGlzdAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQCQDMCAIAEQkAzAgCABIJAMwIAgATCQDMCAIAFAkAzAgCABUJAMwIAgAWCQDMCAIAFwkAzAgCABgJAMwIAgAZCQDMCAIAGgkAzAgCABsJAMwIAgAcCQDMCAIAHQkAzAgCAB4JAMwIAgAfCQDMCAIAIAkAzAgCACEJAMwIAgAiCQDMCAIAIwkAzAgCACQJAMwIAgAlCQDMCAIAJgkAzAgCACcFA25pbAQNJHQwMTkzMTkxOTM5NQoAAiRsBQRsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEDbWFwAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA0MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoAwkAAAIFDSR0MDE5MzE5MTkzOTUFDSR0MDE5MzE5MTkzOTUEEXJld2FyZEFtb3VudFRvdGFsCAUNJHQwMTkzMTkxOTM5NQJfMgQSbHBBc3NldEFtb3VudFRvdGFsCAUNJHQwMTkzMTkxOTM5NQJfMQQacmV3YXJkVG9NYWluVHJlYXN1cnlBbW91bnQJAGUCBRFyZXdhcmRBbW91bnRUb3RhbAUVYmxvY2tQcm9jZXNzaW5nUmV3YXJkBAdhY3Rpb25zCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCDXRyYW5zZmVyV2F2ZXMJAMwIAgUQdXNlckFkZHJlc3NCeXRlcwkAzAgCBRVibG9ja1Byb2Nlc3NpbmdSZXdhcmQFA25pbAUDbmlsCQDMCAIJAPwHBAUUZmFjdG9yeUFkZHJlc3NPckZhaWwCB3JlaXNzdWUJAMwIAgUSbHBBc3NldEFtb3VudFRvdGFsBQNuaWwFA25pbAkAzAgCCQD8BwQFFGZhY3RvcnlBZGRyZXNzT3JGYWlsAgxpbnRlZ2VyRW50cnkJAMwIAgkBFWtleU5leHRCbG9ja1RvUHJvY2VzcwAJAMwIAgkAZAIFEm5leHRCbG9ja1RvUHJvY2VzcwUZYmxvY2tzUHJvY2Vzc2luZ0JhdGNoU2l6ZQUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIZdHJhbnNmZXJGcm9tUHJveHlUcmVhc3VyeQkAzAgCCAUcZmVhdHVyZVRyZWFzdXJ5QWRkcmVzc09yRmFpbAVieXRlcwkAzAgCBRpyZXdhcmRUb01haW5UcmVhc3VyeUFtb3VudAUDbmlsBQNuaWwJAMwIAgkA/AcEBRRmYWN0b3J5QWRkcmVzc09yRmFpbAIZdHJhbnNmZXJGcm9tUHJveHlUcmVhc3VyeQkAzAgCCAUUZmFjdG9yeUFkZHJlc3NPckZhaWwFYnl0ZXMJAMwIAgUVYmxvY2tQcm9jZXNzaW5nUmV3YXJkBQNuaWwFA25pbAUDbmlsAwkAAAIFB2FjdGlvbnMFB2FjdGlvbnMJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleYTPKr8=", "chainId": 84, "height": 2650856, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DFbGw4WMe7ETVdV3RiAk5Ne65tfEYzXyyraA2C3EvdEH Next: B5LvnzZWtybPu3ApyvpE1ahsjKTnQEZKn3ExATh18VGw Diff:
OldNewDifferences
77
88 let c = 100000000
99
10-let d = 1000000
10+let d = "PENDING"
1111
12-let e = "PENDING"
12+let e = "FINISHED"
1313
14-let f = "FINISHED"
14+let f = "WAVES"
1515
16-let g = "WAVES"
17-
18-func h (i) = ((b + ": ") + i)
16+func g (h) = ((b + ": ") + h)
1917
2018
21-func j (i) = throw(h(i))
19+func i (h) = throw(g(h))
2220
2321
24-func k (l) = {
25- let m = l
26- if ($isInstanceOf(m, "ByteVector"))
22+func j (k) = {
23+ let l = k
24+ if ($isInstanceOf(l, "ByteVector"))
2725 then {
28- let n = m
29- toBase58String(n)
26+ let m = l
27+ toBase58String(m)
3028 }
31- else if ($isInstanceOf(m, "Unit"))
32- then g
29+ else if ($isInstanceOf(l, "Unit"))
30+ then f
3331 else throw("Match error")
3432 }
3533
3634
37-func o (p) = if ((0 > p))
38- then -(p)
39- else p
35+func n (o) = if ((0 > o))
36+ then -(o)
37+ else o
4038
4139
42-func q () = makeString(["%s", "factory"], a)
40+func p () = makeString(["%s", "factory"], a)
4341
4442
45-func r () = makeString(["%s", "lpAssetId"], a)
43+func q () = makeString(["%s", "lpAssetId"], a)
4644
4745
48-func s () = makeString(["%s", "proxyTreasury"], a)
46+func r () = makeString(["%s", "proxyTreasury"], a)
4947
5048
51-func t () = makeString(["%s", "mainTreasury"], a)
49+func s () = makeString(["%s", "mainTreasury"], a)
5250
5351
54-func u (l) = makeString(["%s%s", "invested", k(l)], a)
52+func t (k) = makeString(["%s%s", "invested", j(k)], a)
5553
5654
57-func v (l) = makeString(["%s%s", "donated", k(l)], a)
55+func u (k) = makeString(["%s%s", "donated", j(k)], a)
5856
5957
60-func w (x) = makeString(["%s%s", "available", toString(x)], a)
58+func v (w) = makeString(["%s%s", "available", toString(w)], a)
6159
6260
63-func y (x) = makeString(["%s%s", "claimed", toString(x)], a)
61+func x (w) = makeString(["%s%s", "claimed", toString(w)], a)
6462
6563
66-func z () = makeString(["%s", "currentPeriod"], a)
64+func y () = makeString(["%s", "currentPeriod"], a)
6765
6866
69-func A (B) = makeString(["%s%d", "price", toString(B)], a)
67+func z (A) = makeString(["%s%d", "price", toString(A)], a)
7068
7169
72-func C (B) = makeString(["%s%d", "startHeight", toString(B)], a)
70+func B (A) = makeString(["%s%d", "startHeight", toString(A)], a)
7371
7472
75-func D () = "%s__periodLength"
73+func C () = "%s__periodLength"
7674
7775
78-func E () = "%s__blockProcessingReward"
76+func D () = "%s__blockProcessingReward"
7977
8078
81-func F () = "%s__nextBlockToProcess"
79+func E () = "%s__nextBlockToProcess"
8280
8381
84-func G (H) = makeString(["%s%d", "blockProcessed", toString(H)], a)
82+func F (G) = makeString(["%s%d", "blockProcessed", toString(G)], a)
8583
8684
87-func I () = "%s__withdrawal"
85+func H () = "%s__withdrawal"
8886
8987
90-func J (x,K) = makeString(["%s%s%s", "withdrawal", toString(x), toBase58String(K)], a)
88+func I (w,J) = makeString(["%s%s%s", "withdrawal", toString(w), toBase58String(J)], a)
9189
9290
93-func L (M,N,O,P) = {
94- let Q = {
95- let m = P
96- if ($isInstanceOf(m, "ByteVector"))
91+func K (L,M,N,O) = {
92+ let P = {
93+ let l = O
94+ if ($isInstanceOf(l, "ByteVector"))
9795 then {
98- let n = m
99- toBase58String(n)
96+ let m = l
97+ toBase58String(m)
10098 }
101- else if ($isInstanceOf(m, "Unit"))
99+ else if ($isInstanceOf(l, "Unit"))
102100 then "SOON"
103101 else throw("Match error")
104102 }
105- makeString(["%s%d%d%s", M, toString(N), toString(O), Q], a)
103+ makeString(["%s%d%d%s", L, toString(M), toString(N), P], a)
106104 }
107105
108106
109-func R (i) = {
110- let S = split(i, a)
111- if ((size(S) == 5))
107+func Q (h) = {
108+ let R = split(h, a)
109+ if ((size(R) == 5))
112110 then {
113- let M = S[1]
114- let N = valueOrErrorMessage(parseInt(S[2]), h("invalid lpAssetAmount"))
115- let O = valueOrErrorMessage(parseInt(S[3]), h("invalid targetPeriod"))
116- let P = S[4]
117- $Tuple4(M, N, O, P)
111+ let L = R[1]
112+ let M = valueOrErrorMessage(parseInt(R[2]), g("invalid lpAssetAmount"))
113+ let N = valueOrErrorMessage(parseInt(R[3]), g("invalid targetPeriod"))
114+ let O = R[4]
115+ $Tuple4(L, M, N, O)
118116 }
119- else j("invalid withdrawal request value")
117+ else i("invalid withdrawal request value")
120118 }
121119
122120
123-let T = {
124- let m = getString(this, q())
125- if ($isInstanceOf(m, "String"))
121+let S = {
122+ let l = getString(this, p())
123+ if ($isInstanceOf(l, "String"))
126124 then {
127- let i = m
128- addressFromString(i)
125+ let h = l
126+ addressFromString(h)
129127 }
130- else if ($isInstanceOf(m, "Unit"))
128+ else if ($isInstanceOf(l, "Unit"))
131129 then unit
132130 else throw("Match error")
133131 }
134132
135-let U = valueOrErrorMessage(T, h("invalid factory address"))
133+let T = valueOrErrorMessage(S, g("invalid factory address"))
136134
137-let V = {
138- let m = T
139- if ($isInstanceOf(m, "Address"))
135+let U = {
136+ let l = S
137+ if ($isInstanceOf(l, "Address"))
140138 then {
141- let W = m
142- let X = getString(W, r())
143- if ($isInstanceOf(X, "String"))
139+ let V = l
140+ let W = getString(V, q())
141+ if ($isInstanceOf(W, "String"))
144142 then {
145- let i = X
146- fromBase58String(i)
143+ let h = W
144+ fromBase58String(h)
147145 }
148- else if ($isInstanceOf(X, "Unit"))
146+ else if ($isInstanceOf(W, "Unit"))
149147 then unit
150148 else throw("Match error")
151149 }
152- else if ($isInstanceOf(m, "Unit"))
150+ else if ($isInstanceOf(l, "Unit"))
153151 then unit
154152 else throw("Match error")
155153 }
156154
157-let Y = valueOrErrorMessage(V, h("invalid lpAssetId"))
155+let X = valueOrErrorMessage(U, g("invalid lpAssetId"))
158156
159-let Z = {
160- let m = T
161- if ($isInstanceOf(m, "Address"))
157+let Y = {
158+ let l = S
159+ if ($isInstanceOf(l, "Address"))
162160 then {
163- let W = m
164- let X = getString(W, s())
165- if ($isInstanceOf(X, "String"))
161+ let V = l
162+ let W = getString(V, r())
163+ if ($isInstanceOf(W, "String"))
166164 then {
167- let i = X
168- addressFromString(i)
165+ let h = W
166+ addressFromString(h)
169167 }
170- else if ($isInstanceOf(X, "Unit"))
168+ else if ($isInstanceOf(W, "Unit"))
171169 then unit
172170 else throw("Match error")
173171 }
174- else if ($isInstanceOf(m, "Unit"))
172+ else if ($isInstanceOf(l, "Unit"))
175173 then unit
176174 else throw("Match error")
177175 }
178176
179-let aa = valueOrErrorMessage(Z, h("invalid proxy treasury address"))
177+let Z = valueOrErrorMessage(Y, g("invalid proxy treasury address"))
180178
181-let ab = {
182- let m = T
183- if ($isInstanceOf(m, "Address"))
179+let aa = {
180+ let l = S
181+ if ($isInstanceOf(l, "Address"))
184182 then {
185- let W = m
186- let X = getString(W, t())
187- if ($isInstanceOf(X, "String"))
183+ let V = l
184+ let W = getString(V, s())
185+ if ($isInstanceOf(W, "String"))
188186 then {
189- let i = X
190- addressFromString(i)
187+ let h = W
188+ addressFromString(h)
191189 }
192- else if ($isInstanceOf(X, "Unit"))
190+ else if ($isInstanceOf(W, "Unit"))
193191 then unit
194192 else throw("Match error")
195193 }
196- else if ($isInstanceOf(m, "Unit"))
194+ else if ($isInstanceOf(l, "Unit"))
197195 then unit
198196 else throw("Match error")
199197 }
200198
201-let ac = valueOrErrorMessage(ab, h("invalid feature treasury address"))
199+let ab = valueOrErrorMessage(aa, g("invalid feature treasury address"))
202200
203-func ad (ae,af) = if ((ae.caller == af))
201+func ac (ad,ae) = if ((ad.caller == ae))
204202 then true
205- else j("permission denied")
203+ else i("permission denied")
206204
207205
208-func ag (ae) = ad(ae, U)
206+func af (ad) = ac(ad, T)
209207
210208
211-func ah (ai,aj) = {
212- let i = size(ai)
213- let ak = ai[0]
214- let al = ak._1
215- let am = ak._2
216- let an = ai[1]
217- let ao = an._1
218- let ap = an._2
219- let aq = ai[2]
220- let ar = aq._1
221- let as = aq._2
222- if (if ((i > 0))
223- then (al == aj)
209+func ag (ah,ai) = {
210+ let h = size(ah)
211+ let aj = ah[0]
212+ let ak = aj._1
213+ let al = aj._2
214+ let am = ah[1]
215+ let an = am._1
216+ let ao = am._2
217+ let ap = ah[2]
218+ let aq = ap._1
219+ let ar = ap._2
220+ if (if ((h > 0))
221+ then (ak == ai)
224222 else false)
225- then am
226- else if (if ((i > 1))
227- then (ao == aj)
223+ then al
224+ else if (if ((h > 1))
225+ then (an == ai)
228226 else false)
229- then ap
230- else if (if ((i > 2))
231- then (ar == aj)
227+ then ao
228+ else if (if ((h > 2))
229+ then (aq == ai)
232230 else false)
233- then as
231+ then ar
234232 else unit
235233 }
236234
237235
238-@Callable(ae)
239-func claimLP (at) = {
240- let au = ag(ae)
241- if ((au == au))
236+@Callable(ad)
237+func claimLP (as) = {
238+ let at = af(ad)
239+ if ((at == at))
242240 then {
243- let x = Address(at)
244- let av = valueOrElse(getInteger(U, w(x)), 0)
245- let aw = valueOrElse(getInteger(U, y(x)), 0)
246- let ax = if ((av > 0))
247- then [invoke(U, "transferAsset", [at, av, Y], nil), invoke(U, "integerEntry", [w(x), 0], nil), invoke(U, "integerEntry", [y(x), (aw + av)], nil)]
248- else j("nothing to claim")
249- $Tuple2(nil, ax)
241+ let w = Address(as)
242+ let au = valueOrElse(getInteger(T, v(w)), 0)
243+ let av = valueOrElse(getInteger(T, x(w)), 0)
244+ let aw = if ((au > 0))
245+ then [invoke(T, "transferAsset", [as, au, X], nil), invoke(T, "integerEntry", [v(w), 0], nil), invoke(T, "integerEntry", [x(w), (av + au)], nil)]
246+ else i("nothing to claim")
247+ $Tuple2(nil, aw)
250248 }
251249 else throw("Strict value is not equal to itself.")
252250 }
253251
254252
255253
256-@Callable(ae)
257-func finalize (at,ay,az,aA) = {
258- let au = ag(ae)
259- if ((au == au))
254+@Callable(ad)
255+func finalize (as,ax,ay,az) = {
256+ let at = af(ad)
257+ if ((at == at))
260258 then {
261- let aB = valueOrErrorMessage(getInteger(U, z()), h("invalid period"))
262- let aC = valueOrErrorMessage(getInteger(U, D()), h("invalid period length"))
263- let aD = valueOrErrorMessage(getInteger(U, C(aB)), h("invalid start height"))
264- let aE = valueOrErrorMessage(getInteger(U, A(aB)), h("invalid price"))
265- let aF = valueOrErrorMessage(getInteger(U, F()), h("invalid next block to process"))
266- let aG = ((aD + aC) - 1)
267- let aH = [if ((ae.originCaller == ac))
259+ let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
260+ let aB = valueOrErrorMessage(getInteger(T, C()), g("invalid period length"))
261+ let aC = valueOrErrorMessage(getInteger(T, B(aA)), g("invalid start height"))
262+ let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
263+ let aE = valueOrErrorMessage(getInteger(T, E()), g("invalid next block to process"))
264+ let aF = ((aC + aB) - 1)
265+ let aG = [if ((ad.originCaller == ab))
268266 then true
269- else j("permission denied"), if ((aF > aG))
267+ else i("permission denied"), if ((aE > aF))
270268 then true
271- else j("unprocessed blocks"), if ((ay >= 0))
269+ else i("unprocessed blocks"), if ((ax >= 0))
272270 then true
273- else j("invalid new treasury volume"), if ((az >= 0))
271+ else i("invalid new treasury volume"), if ((ay >= 0))
274272 then true
275- else j("invalid PWR managers bonus"), if (if ((aA >= -(c)))
276- then (c >= aA)
273+ else i("invalid PWR managers bonus"), if (if ((az >= -(c)))
274+ then (c >= az)
277275 else false)
278276 then true
279- else j("invalid treasury volume diff allocation coefficient")]
280- if ((aH == aH))
277+ else i("invalid treasury volume diff allocation coefficient")]
278+ if ((aG == aG))
281279 then {
282- let aI = valueOrElse(getInteger(U, v(unit)), 0)
283- let aJ = valueOrElse(getInteger(U, u(unit)), 0)
284- let aK = (aI + aJ)
285- let aL = (ay - aK)
286- let aM = if (if ((aL > 0))
287- then (aL >= az)
280+ let aH = valueOrElse(getInteger(T, u(unit)), 0)
281+ let aI = valueOrElse(getInteger(T, t(unit)), 0)
282+ let aJ = (aH + aI)
283+ let aK = (ax - aJ)
284+ let aL = if (if ((aK > 0))
285+ then (aK >= ay)
288286 else false)
289- then az
287+ then ay
290288 else 0
291- let aN = (aL - aM)
292- let aO = if ((aK > 0))
293- then fraction(aI, c, aK)
289+ let aM = (aK - aL)
290+ let aN = if ((aJ > 0))
291+ then fraction(aH, c, aJ)
294292 else 0
295- let aP = fraction(aN, aO, c)
296- let aQ = (aN - aP)
297- let aR = o(aA)
298- let aS = fraction(aQ, if ((0 > aA))
299- then aR
293+ let aO = fraction(aM, aN, c)
294+ let aP = (aM - aO)
295+ let aQ = n(az)
296+ let aR = fraction(aP, if ((0 > az))
297+ then aQ
300298 else 0, c)
301- let aT = fraction(aP, if ((aA > 0))
302- then aR
299+ let aS = fraction(aO, if ((az > 0))
300+ then aQ
303301 else 0, c)
304- let aU = ((aP - aT) + aS)
305- let aV = ((aQ - aS) + aT)
306- let aW = (aJ + aV)
307- let aX = (aB + 1)
308- let aY = valueOrErrorMessage(assetInfo(Y), h("invalid lpAsset info")).quantity
309- let aZ = fraction(aW, c, aY)
310- let ba = valueOrElse(getInteger(U, I()), 0)
311- let bb = max([0, fraction(ba, aZ, c)])
312- let bc = if ((size(ae.payments) > 0))
313- then ae.payments[0]
302+ let aT = ((aO - aS) + aR)
303+ let aU = ((aP - aR) + aS)
304+ let aV = (aI + aU)
305+ let aW = (aA + 1)
306+ let aX = valueOrErrorMessage(assetInfo(X), g("invalid lpAsset info")).quantity
307+ let aY = fraction(aV, c, aX)
308+ let aZ = valueOrElse(getInteger(T, H()), 0)
309+ let ba = max([0, fraction(aZ, aY, c)])
310+ let bb = if ((size(ad.payments) > 0))
311+ then ad.payments[0]
314312 else unit
315- let bd = value(bc).amount
316- let be = value(bc).assetId
317- let bf = if (if ((bb == 0))
313+ let bc = value(bb).amount
314+ let bd = value(bb).assetId
315+ let be = if (if ((ba == 0))
318316 then true
319- else if (if ((bc != unit))
320- then (be == unit)
317+ else if (if ((bb != unit))
318+ then (bd == unit)
321319 else false)
322- then (bd >= bb)
320+ then (bc >= ba)
323321 else false)
324322 then true
325- else j(("invalid payments, payment amount min: " + toString(bb)))
326- if ((bf == bf))
323+ else i(("invalid payments, payment amount min: " + toString(ba)))
324+ if ((be == be))
327325 then {
328- let bg = if ((bc != unit))
329- then [ScriptTransfer(U, bd, be)]
326+ let bf = if ((bb != unit))
327+ then [ScriptTransfer(T, bc, bd)]
330328 else nil
331- let ax = [invoke(U, "integerEntry", [z(), aX], nil), invoke(U, "integerEntry", [A(aX), aZ], nil), invoke(U, "integerEntry", [C(aX), (aG + 1)], nil), invoke(U, "burn", [ba], nil), invoke(U, "integerEntry", [I(), 0], nil)]
332- $Tuple2(bg, ax)
329+ let aw = [invoke(T, "integerEntry", [y(), aW], nil), invoke(T, "integerEntry", [z(aW), aY], nil), invoke(T, "integerEntry", [B(aW), (aF + 1)], nil), invoke(T, "burn", [aZ], nil), invoke(T, "integerEntry", [H(), 0], nil)]
330+ $Tuple2(bf, aw)
333331 }
334332 else throw("Strict value is not equal to itself.")
335333 }
340338
341339
342340
343-@Callable(ae)
344-func invest (at) = {
345- let au = ag(ae)
346- if ((au == au))
341+@Callable(ad)
342+func invest (as) = {
343+ let at = af(ad)
344+ if ((at == at))
347345 then {
348- let x = Address(at)
349- let aB = valueOrErrorMessage(getInteger(U, z()), h("invalid period"))
350- let aE = valueOrErrorMessage(getInteger(U, A(aB)), h("invalid price"))
351- let bh = if ((size(ae.payments) == 1))
352- then ae.payments[0]
353- else j("invalid payments")
354- let bi = if (if ((bh.assetId == unit))
355- then (bh.amount > 0)
346+ let w = Address(as)
347+ let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
348+ let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
349+ let bg = if ((size(ad.payments) == 1))
350+ then ad.payments[0]
351+ else i("invalid payments")
352+ let bh = if (if ((bg.assetId == unit))
353+ then (bg.amount > 0)
356354 else false)
357- then $Tuple2(bh.amount, bh.assetId)
358- else j("invalid payment amount")
359- let bd = bi._1
360- let be = bi._2
361- let N = if ((aE > 0))
362- then fraction(bd, c, aE)
355+ then $Tuple2(bg.amount, bg.assetId)
356+ else i("invalid payment amount")
357+ let bc = bh._1
358+ let bd = bh._2
359+ let M = if ((aD > 0))
360+ then fraction(bc, c, aD)
363361 else 0
364- let bj = valueOrElse(getInteger(U, u(unit)), 0)
365- let bg = [ScriptTransfer(ac, bd, be)]
366- let ax = [invoke(U, "integerEntry", [u(unit), (bj + bd)], nil), invoke(U, "reissue", [N], nil), invoke(U, "transferAsset", [at, N, Y], nil)]
367- $Tuple2(bg, ax)
362+ let bi = valueOrElse(getInteger(T, t(unit)), 0)
363+ let bf = [ScriptTransfer(ab, bc, bd)]
364+ let aw = [invoke(T, "integerEntry", [t(unit), (bi + bc)], nil), invoke(T, "reissue", [M], nil), invoke(T, "transferAsset", [as, M, X], nil)]
365+ $Tuple2(bf, aw)
368366 }
369367 else throw("Strict value is not equal to itself.")
370368 }
371369
372370
373371
374-@Callable(ae)
375-func withdraw (at) = {
376- let au = ag(ae)
377- if ((au == au))
372+@Callable(ad)
373+func withdraw (as) = {
374+ let at = af(ad)
375+ if ((at == at))
378376 then {
379- let x = Address(at)
380- let aB = valueOrErrorMessage(getInteger(U, z()), h("invalid period"))
381- let bh = if ((size(ae.payments) == 1))
382- then ae.payments[0]
383- else j(h("invalid payments"))
384- let be = if ((bh.assetId == Y))
385- then Y
386- else j("invalid payment asset")
387- let bd = if ((bh.amount > 0))
388- then bh.amount
389- else j("invalid payment amount")
390- let bk = valueOrElse(getInteger(U, I()), 0)
391- let bg = [ScriptTransfer(U, bd, be)]
392- let ax = [invoke(U, "integerEntry", [I(), (bk + bd)], nil), invoke(U, "stringEntry", [J(x, ae.transactionId), L(e, bd, (aB + 1), unit)], nil)]
393- if ((ax == ax))
394- then $Tuple2(bg, ax)
377+ let w = Address(as)
378+ let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
379+ let bg = if ((size(ad.payments) == 1))
380+ then ad.payments[0]
381+ else i(g("invalid payments"))
382+ let bd = if ((bg.assetId == X))
383+ then X
384+ else i("invalid payment asset")
385+ let bc = if ((bg.amount > 0))
386+ then bg.amount
387+ else i("invalid payment amount")
388+ let bj = valueOrElse(getInteger(T, H()), 0)
389+ let bf = [ScriptTransfer(T, bc, bd)]
390+ let aw = [invoke(T, "integerEntry", [H(), (bj + bc)], nil), invoke(T, "stringEntry", [I(w, ad.transactionId), K(d, bc, (aA + 1), unit)], nil)]
391+ if ((aw == aw))
392+ then $Tuple2(bf, aw)
395393 else throw("Strict value is not equal to itself.")
396394 }
397395 else throw("Strict value is not equal to itself.")
399397
400398
401399
402-@Callable(ae)
403-func cancelWithdraw (at,K) = {
404- let au = ag(ae)
405- if ((au == au))
400+@Callable(ad)
401+func cancelWithdraw (as,J) = {
402+ let at = af(ad)
403+ if ((at == at))
406404 then {
407- let x = Address(at)
408- let bl = valueOrErrorMessage(getString(U, J(x, K)), h("invalid withdrawal request"))
409- let aB = valueOrErrorMessage(getInteger(U, z()), h("invalid period"))
410- let bm = R(bl)
411- let M = bm._1
412- let N = bm._2
413- let O = bm._3
414- let P = bm._4
415- let aH = [if ((M == e))
405+ let w = Address(as)
406+ let bk = valueOrErrorMessage(getString(T, I(w, J)), g("invalid withdrawal request"))
407+ let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
408+ let bl = Q(bk)
409+ let L = bl._1
410+ let M = bl._2
411+ let N = bl._3
412+ let O = bl._4
413+ let aG = [if ((L == d))
416414 then true
417- else j("invalid withdrawal request status"), if ((O > aB))
415+ else i("invalid withdrawal request status"), if ((N > aA))
418416 then true
419- else j("invalid withdrawal request period")]
420- if ((aH == aH))
417+ else i("invalid withdrawal request period")]
418+ if ((aG == aG))
421419 then {
422- let bk = valueOrErrorMessage(getInteger(U, I()), h("invalid total withdrawal amount"))
423- let ax = [invoke(U, "integerEntry", [I(), if ((bk >= N))
424- then (bk - N)
425- else j("invalid withdrawal amount")], nil), invoke(U, "deleteEntry", [J(x, K)], nil), invoke(U, "transferAsset", [at, N, Y], nil)]
426- if ((ax == ax))
427- then $Tuple2(nil, ax)
420+ let bj = valueOrErrorMessage(getInteger(T, H()), g("invalid total withdrawal amount"))
421+ let aw = [invoke(T, "integerEntry", [H(), if ((bj >= M))
422+ then (bj - M)
423+ else i("invalid withdrawal amount")], nil), invoke(T, "deleteEntry", [I(w, J)], nil), invoke(T, "transferAsset", [as, M, X], nil)]
424+ if ((aw == aw))
425+ then $Tuple2(nil, aw)
428426 else throw("Strict value is not equal to itself.")
429427 }
430428 else throw("Strict value is not equal to itself.")
434432
435433
436434
437-@Callable(ae)
438-func claimWaves (at,K) = {
439- let au = ag(ae)
440- if ((au == au))
435+@Callable(ad)
436+func claimWaves (as,J) = {
437+ let at = af(ad)
438+ if ((at == at))
441439 then {
442- let x = Address(at)
443- let aB = valueOrErrorMessage(getInteger(U, z()), h("invalid period"))
444- let bl = valueOrErrorMessage(getString(U, J(x, K)), h("invalid withdrawal request"))
445- let bn = R(bl)
446- let M = bn._1
447- let N = bn._2
448- let O = bn._3
449- let P = bn._4
450- if ((M == f))
451- then j("invalid withdrawal request status")
452- else if ((O > aB))
453- then j("invalid withdrawal request period")
440+ let w = Address(as)
441+ let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
442+ let bk = valueOrErrorMessage(getString(T, I(w, J)), g("invalid withdrawal request"))
443+ let bm = Q(bk)
444+ let L = bm._1
445+ let M = bm._2
446+ let N = bm._3
447+ let O = bm._4
448+ if ((L == e))
449+ then i("invalid withdrawal request status")
450+ else if ((N > aA))
451+ then i("invalid withdrawal request period")
454452 else {
455- let bo = valueOrErrorMessage(getInteger(U, A(O)), h("invalid price"))
456- let bp = if ((bo > 0))
457- then fraction(N, bo, c)
453+ let bn = valueOrErrorMessage(getInteger(T, z(N)), g("invalid price"))
454+ let bo = if ((bn > 0))
455+ then fraction(M, bn, c)
458456 else 0
459- let ax = [invoke(U, "stringEntry", [J(x, K), L(f, N, O, ae.transactionId)], nil), invoke(U, "burn", [N], nil), invoke(U, "transferWaves", [at, bp], nil)]
460- $Tuple2(nil, ax)
457+ let aw = [invoke(T, "stringEntry", [I(w, J), K(e, M, N, ad.transactionId)], nil), invoke(T, "transferWaves", [as, bo], nil)]
458+ $Tuple2(nil, aw)
461459 }
462460 }
463461 else throw("Strict value is not equal to itself.")
465463
466464
467465
468-@Callable(ae)
469-func processBlocks (at) = {
470- let au = ag(ae)
471- if ((au == au))
466+@Callable(ad)
467+func processBlocks (as) = {
468+ let at = af(ad)
469+ if ((at == at))
472470 then {
473- let x = Address(at)
474- let aB = valueOrErrorMessage(getInteger(U, z()), h("invalid period"))
475- let aC = valueOrErrorMessage(getInteger(U, D()), h("invalid period length"))
476- let aD = valueOrErrorMessage(getInteger(U, C(aB)), h("invalid start height"))
477- let aE = valueOrErrorMessage(getInteger(U, A(aB)), h("invalid price"))
478- let aF = valueOrErrorMessage(getInteger(U, F()), h("invalid next block to process"))
479- let aG = ((aD + aC) - 1)
480- let bq = 40
481- let br = if (if (if ((height >= aF))
482- then if ((aF >= aD))
471+ let w = Address(as)
472+ let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
473+ let aB = valueOrErrorMessage(getInteger(T, C()), g("invalid period length"))
474+ let aC = valueOrErrorMessage(getInteger(T, B(aA)), g("invalid start height"))
475+ let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
476+ let aE = valueOrErrorMessage(getInteger(T, E()), g("invalid next block to process"))
477+ let aF = ((aC + aB) - 1)
478+ let bp = 40
479+ let bq = if (if (if ((height >= aE))
480+ then if ((aE >= aC))
483481 then true
484- else (aB == 0)
482+ else (aA == 0)
485483 else false)
486- then (aG >= aF)
484+ then (aF >= aE)
487485 else false)
488- then min([((aG - aF) + 1), bq])
489- else j(h("invalid target block"))
490- let bs = valueOrErrorMessage(getInteger(U, E()), h("invalid block processing reward"))
491- let bt = (bs / br)
492- let bu = (bs - (bt * br))
493- func bv (bw,bx) = if ((bx >= br))
494- then bw
486+ then min([((aF - aE) + 1), bp])
487+ else i(g("invalid target block"))
488+ let br = valueOrErrorMessage(getInteger(T, D()), g("invalid block processing reward"))
489+ let bs = (br / bq)
490+ let bt = (br - (bs * bq))
491+ func bu (bv,bw) = if ((bw >= bq))
492+ then bv
495493 else {
496- let by = (aF + bx)
497- let bz = valueOrErrorMessage(blockInfoByHeight(by), h("invalid block info"))
498- let bA = valueOrErrorMessage(ah(bz.rewards, aa), h(("invalid treasury reward for height " + toString(by))))
499- let bB = bz.generator
500- let av = valueOrElse(getInteger(U, w(bB)), 0)
501- let bC = if ((bx == (br - 1)))
502- then (bt + bu)
503- else bt
504- let N = if ((aE > 0))
505- then fraction((bA - bC), c, aE)
494+ let bx = (aE + bw)
495+ let by = valueOrErrorMessage(blockInfoByHeight(bx), g("invalid block info"))
496+ let bz = valueOrErrorMessage(ag(by.rewards, Z), g(("invalid treasury reward for height " + toString(bx))))
497+ let bA = by.generator
498+ let au = valueOrElse(getInteger(T, v(bA)), 0)
499+ let bB = if ((bw == (bq - 1)))
500+ then (bs + bt)
501+ else bs
502+ let M = if ((aD > 0))
503+ then fraction((bz - bB), c, aD)
506504 else 0
507- let bD = [invoke(U, "stringEntry", [G(by), makeString([toBase58String(ae.transactionId), toString(aB), toString(bB), toBase58String(at), toString(bA), toString(bC), toString(N)], a)], nil), invoke(U, "integerEntry", [w(bB), (av + N)], nil)]
508- if ((bD == bD))
505+ let bC = [invoke(T, "stringEntry", [F(bx), makeString([toBase58String(ad.transactionId), toString(aA), toString(bA), toBase58String(as), toString(bz), toString(bB), toString(M)], a)], nil), invoke(T, "integerEntry", [v(bA), (au + M)], nil)]
506+ if ((bC == bC))
509507 then {
510- let bE = bw
511- let bF = bE._1
512- let bG = bE._2
513- $Tuple2((bF + N), (bG + bA))
508+ let bD = bv
509+ let bE = bD._1
510+ let bF = bD._2
511+ $Tuple2((bE + M), (bF + bz))
514512 }
515513 else throw("Strict value is not equal to itself.")
516514 }
517515
518- let bH = [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]
519- let bI = {
520- let bJ = bH
521- let bK = size(bJ)
522- let bL = $Tuple2(0, 0)
523- func bM (bN,bO) = if ((bO >= bK))
524- then bN
525- else bv(bN, bJ[bO])
516+ let bG = [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]
517+ let bH = {
518+ let bI = bG
519+ let bJ = size(bI)
520+ let bK = $Tuple2(0, 0)
521+ func bL (bM,bN) = if ((bN >= bJ))
522+ then bM
523+ else bu(bM, bI[bN])
526524
527- func bP (bN,bO) = if ((bO >= bK))
528- then bN
525+ func bO (bM,bN) = if ((bN >= bJ))
526+ then bM
529527 else throw("List size exceeds 40")
530528
531- bP(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bL, 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)
529+ bO(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bK, 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)
532530 }
533- if ((bI == bI))
531+ if ((bH == bH))
534532 then {
535- let bQ = bI._2
536- let bR = bI._1
537- let bS = (bQ - bs)
538- let bg = [invoke(U, "transferWaves", [at, bs], nil), invoke(U, "reissue", [bR], nil), invoke(U, "integerEntry", [F(), (aF + br)], nil), invoke(U, "transferFromProxyTreasury", [ac.bytes, bS], nil), invoke(U, "transferFromProxyTreasury", [U.bytes, bs], nil)]
539- if ((bg == bg))
533+ let bP = bH._2
534+ let bQ = bH._1
535+ let bR = (bP - br)
536+ let bf = [invoke(T, "transferWaves", [as, br], nil), invoke(T, "reissue", [bQ], nil), invoke(T, "integerEntry", [E(), (aE + bq)], nil), invoke(T, "transferFromProxyTreasury", [ab.bytes, bR], nil), invoke(T, "transferFromProxyTreasury", [T.bytes, br], nil)]
537+ if ((bf == bf))
540538 then $Tuple2(nil, unit)
541539 else throw("Strict value is not equal to itself.")
542540 }
546544 }
547545
548546
549-@Verifier(bT)
550-func bU () = sigVerify(bT.bodyBytes, bT.proofs[0], bT.senderPublicKey)
547+@Verifier(bS)
548+func bT () = sigVerify(bS.bodyBytes, bS.proofs[0], bS.senderPublicKey)
551549
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 7 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "calculator.ride"
77
88 let c = 100000000
99
10-let d = 1000000
10+let d = "PENDING"
1111
12-let e = "PENDING"
12+let e = "FINISHED"
1313
14-let f = "FINISHED"
14+let f = "WAVES"
1515
16-let g = "WAVES"
17-
18-func h (i) = ((b + ": ") + i)
16+func g (h) = ((b + ": ") + h)
1917
2018
21-func j (i) = throw(h(i))
19+func i (h) = throw(g(h))
2220
2321
24-func k (l) = {
25- let m = l
26- if ($isInstanceOf(m, "ByteVector"))
22+func j (k) = {
23+ let l = k
24+ if ($isInstanceOf(l, "ByteVector"))
2725 then {
28- let n = m
29- toBase58String(n)
26+ let m = l
27+ toBase58String(m)
3028 }
31- else if ($isInstanceOf(m, "Unit"))
32- then g
29+ else if ($isInstanceOf(l, "Unit"))
30+ then f
3331 else throw("Match error")
3432 }
3533
3634
37-func o (p) = if ((0 > p))
38- then -(p)
39- else p
35+func n (o) = if ((0 > o))
36+ then -(o)
37+ else o
4038
4139
42-func q () = makeString(["%s", "factory"], a)
40+func p () = makeString(["%s", "factory"], a)
4341
4442
45-func r () = makeString(["%s", "lpAssetId"], a)
43+func q () = makeString(["%s", "lpAssetId"], a)
4644
4745
48-func s () = makeString(["%s", "proxyTreasury"], a)
46+func r () = makeString(["%s", "proxyTreasury"], a)
4947
5048
51-func t () = makeString(["%s", "mainTreasury"], a)
49+func s () = makeString(["%s", "mainTreasury"], a)
5250
5351
54-func u (l) = makeString(["%s%s", "invested", k(l)], a)
52+func t (k) = makeString(["%s%s", "invested", j(k)], a)
5553
5654
57-func v (l) = makeString(["%s%s", "donated", k(l)], a)
55+func u (k) = makeString(["%s%s", "donated", j(k)], a)
5856
5957
60-func w (x) = makeString(["%s%s", "available", toString(x)], a)
58+func v (w) = makeString(["%s%s", "available", toString(w)], a)
6159
6260
63-func y (x) = makeString(["%s%s", "claimed", toString(x)], a)
61+func x (w) = makeString(["%s%s", "claimed", toString(w)], a)
6462
6563
66-func z () = makeString(["%s", "currentPeriod"], a)
64+func y () = makeString(["%s", "currentPeriod"], a)
6765
6866
69-func A (B) = makeString(["%s%d", "price", toString(B)], a)
67+func z (A) = makeString(["%s%d", "price", toString(A)], a)
7068
7169
72-func C (B) = makeString(["%s%d", "startHeight", toString(B)], a)
70+func B (A) = makeString(["%s%d", "startHeight", toString(A)], a)
7371
7472
75-func D () = "%s__periodLength"
73+func C () = "%s__periodLength"
7674
7775
78-func E () = "%s__blockProcessingReward"
76+func D () = "%s__blockProcessingReward"
7977
8078
81-func F () = "%s__nextBlockToProcess"
79+func E () = "%s__nextBlockToProcess"
8280
8381
84-func G (H) = makeString(["%s%d", "blockProcessed", toString(H)], a)
82+func F (G) = makeString(["%s%d", "blockProcessed", toString(G)], a)
8583
8684
87-func I () = "%s__withdrawal"
85+func H () = "%s__withdrawal"
8886
8987
90-func J (x,K) = makeString(["%s%s%s", "withdrawal", toString(x), toBase58String(K)], a)
88+func I (w,J) = makeString(["%s%s%s", "withdrawal", toString(w), toBase58String(J)], a)
9189
9290
93-func L (M,N,O,P) = {
94- let Q = {
95- let m = P
96- if ($isInstanceOf(m, "ByteVector"))
91+func K (L,M,N,O) = {
92+ let P = {
93+ let l = O
94+ if ($isInstanceOf(l, "ByteVector"))
9795 then {
98- let n = m
99- toBase58String(n)
96+ let m = l
97+ toBase58String(m)
10098 }
101- else if ($isInstanceOf(m, "Unit"))
99+ else if ($isInstanceOf(l, "Unit"))
102100 then "SOON"
103101 else throw("Match error")
104102 }
105- makeString(["%s%d%d%s", M, toString(N), toString(O), Q], a)
103+ makeString(["%s%d%d%s", L, toString(M), toString(N), P], a)
106104 }
107105
108106
109-func R (i) = {
110- let S = split(i, a)
111- if ((size(S) == 5))
107+func Q (h) = {
108+ let R = split(h, a)
109+ if ((size(R) == 5))
112110 then {
113- let M = S[1]
114- let N = valueOrErrorMessage(parseInt(S[2]), h("invalid lpAssetAmount"))
115- let O = valueOrErrorMessage(parseInt(S[3]), h("invalid targetPeriod"))
116- let P = S[4]
117- $Tuple4(M, N, O, P)
111+ let L = R[1]
112+ let M = valueOrErrorMessage(parseInt(R[2]), g("invalid lpAssetAmount"))
113+ let N = valueOrErrorMessage(parseInt(R[3]), g("invalid targetPeriod"))
114+ let O = R[4]
115+ $Tuple4(L, M, N, O)
118116 }
119- else j("invalid withdrawal request value")
117+ else i("invalid withdrawal request value")
120118 }
121119
122120
123-let T = {
124- let m = getString(this, q())
125- if ($isInstanceOf(m, "String"))
121+let S = {
122+ let l = getString(this, p())
123+ if ($isInstanceOf(l, "String"))
126124 then {
127- let i = m
128- addressFromString(i)
125+ let h = l
126+ addressFromString(h)
129127 }
130- else if ($isInstanceOf(m, "Unit"))
128+ else if ($isInstanceOf(l, "Unit"))
131129 then unit
132130 else throw("Match error")
133131 }
134132
135-let U = valueOrErrorMessage(T, h("invalid factory address"))
133+let T = valueOrErrorMessage(S, g("invalid factory address"))
136134
137-let V = {
138- let m = T
139- if ($isInstanceOf(m, "Address"))
135+let U = {
136+ let l = S
137+ if ($isInstanceOf(l, "Address"))
140138 then {
141- let W = m
142- let X = getString(W, r())
143- if ($isInstanceOf(X, "String"))
139+ let V = l
140+ let W = getString(V, q())
141+ if ($isInstanceOf(W, "String"))
144142 then {
145- let i = X
146- fromBase58String(i)
143+ let h = W
144+ fromBase58String(h)
147145 }
148- else if ($isInstanceOf(X, "Unit"))
146+ else if ($isInstanceOf(W, "Unit"))
149147 then unit
150148 else throw("Match error")
151149 }
152- else if ($isInstanceOf(m, "Unit"))
150+ else if ($isInstanceOf(l, "Unit"))
153151 then unit
154152 else throw("Match error")
155153 }
156154
157-let Y = valueOrErrorMessage(V, h("invalid lpAssetId"))
155+let X = valueOrErrorMessage(U, g("invalid lpAssetId"))
158156
159-let Z = {
160- let m = T
161- if ($isInstanceOf(m, "Address"))
157+let Y = {
158+ let l = S
159+ if ($isInstanceOf(l, "Address"))
162160 then {
163- let W = m
164- let X = getString(W, s())
165- if ($isInstanceOf(X, "String"))
161+ let V = l
162+ let W = getString(V, r())
163+ if ($isInstanceOf(W, "String"))
166164 then {
167- let i = X
168- addressFromString(i)
165+ let h = W
166+ addressFromString(h)
169167 }
170- else if ($isInstanceOf(X, "Unit"))
168+ else if ($isInstanceOf(W, "Unit"))
171169 then unit
172170 else throw("Match error")
173171 }
174- else if ($isInstanceOf(m, "Unit"))
172+ else if ($isInstanceOf(l, "Unit"))
175173 then unit
176174 else throw("Match error")
177175 }
178176
179-let aa = valueOrErrorMessage(Z, h("invalid proxy treasury address"))
177+let Z = valueOrErrorMessage(Y, g("invalid proxy treasury address"))
180178
181-let ab = {
182- let m = T
183- if ($isInstanceOf(m, "Address"))
179+let aa = {
180+ let l = S
181+ if ($isInstanceOf(l, "Address"))
184182 then {
185- let W = m
186- let X = getString(W, t())
187- if ($isInstanceOf(X, "String"))
183+ let V = l
184+ let W = getString(V, s())
185+ if ($isInstanceOf(W, "String"))
188186 then {
189- let i = X
190- addressFromString(i)
187+ let h = W
188+ addressFromString(h)
191189 }
192- else if ($isInstanceOf(X, "Unit"))
190+ else if ($isInstanceOf(W, "Unit"))
193191 then unit
194192 else throw("Match error")
195193 }
196- else if ($isInstanceOf(m, "Unit"))
194+ else if ($isInstanceOf(l, "Unit"))
197195 then unit
198196 else throw("Match error")
199197 }
200198
201-let ac = valueOrErrorMessage(ab, h("invalid feature treasury address"))
199+let ab = valueOrErrorMessage(aa, g("invalid feature treasury address"))
202200
203-func ad (ae,af) = if ((ae.caller == af))
201+func ac (ad,ae) = if ((ad.caller == ae))
204202 then true
205- else j("permission denied")
203+ else i("permission denied")
206204
207205
208-func ag (ae) = ad(ae, U)
206+func af (ad) = ac(ad, T)
209207
210208
211-func ah (ai,aj) = {
212- let i = size(ai)
213- let ak = ai[0]
214- let al = ak._1
215- let am = ak._2
216- let an = ai[1]
217- let ao = an._1
218- let ap = an._2
219- let aq = ai[2]
220- let ar = aq._1
221- let as = aq._2
222- if (if ((i > 0))
223- then (al == aj)
209+func ag (ah,ai) = {
210+ let h = size(ah)
211+ let aj = ah[0]
212+ let ak = aj._1
213+ let al = aj._2
214+ let am = ah[1]
215+ let an = am._1
216+ let ao = am._2
217+ let ap = ah[2]
218+ let aq = ap._1
219+ let ar = ap._2
220+ if (if ((h > 0))
221+ then (ak == ai)
224222 else false)
225- then am
226- else if (if ((i > 1))
227- then (ao == aj)
223+ then al
224+ else if (if ((h > 1))
225+ then (an == ai)
228226 else false)
229- then ap
230- else if (if ((i > 2))
231- then (ar == aj)
227+ then ao
228+ else if (if ((h > 2))
229+ then (aq == ai)
232230 else false)
233- then as
231+ then ar
234232 else unit
235233 }
236234
237235
238-@Callable(ae)
239-func claimLP (at) = {
240- let au = ag(ae)
241- if ((au == au))
236+@Callable(ad)
237+func claimLP (as) = {
238+ let at = af(ad)
239+ if ((at == at))
242240 then {
243- let x = Address(at)
244- let av = valueOrElse(getInteger(U, w(x)), 0)
245- let aw = valueOrElse(getInteger(U, y(x)), 0)
246- let ax = if ((av > 0))
247- then [invoke(U, "transferAsset", [at, av, Y], nil), invoke(U, "integerEntry", [w(x), 0], nil), invoke(U, "integerEntry", [y(x), (aw + av)], nil)]
248- else j("nothing to claim")
249- $Tuple2(nil, ax)
241+ let w = Address(as)
242+ let au = valueOrElse(getInteger(T, v(w)), 0)
243+ let av = valueOrElse(getInteger(T, x(w)), 0)
244+ let aw = if ((au > 0))
245+ then [invoke(T, "transferAsset", [as, au, X], nil), invoke(T, "integerEntry", [v(w), 0], nil), invoke(T, "integerEntry", [x(w), (av + au)], nil)]
246+ else i("nothing to claim")
247+ $Tuple2(nil, aw)
250248 }
251249 else throw("Strict value is not equal to itself.")
252250 }
253251
254252
255253
256-@Callable(ae)
257-func finalize (at,ay,az,aA) = {
258- let au = ag(ae)
259- if ((au == au))
254+@Callable(ad)
255+func finalize (as,ax,ay,az) = {
256+ let at = af(ad)
257+ if ((at == at))
260258 then {
261- let aB = valueOrErrorMessage(getInteger(U, z()), h("invalid period"))
262- let aC = valueOrErrorMessage(getInteger(U, D()), h("invalid period length"))
263- let aD = valueOrErrorMessage(getInteger(U, C(aB)), h("invalid start height"))
264- let aE = valueOrErrorMessage(getInteger(U, A(aB)), h("invalid price"))
265- let aF = valueOrErrorMessage(getInteger(U, F()), h("invalid next block to process"))
266- let aG = ((aD + aC) - 1)
267- let aH = [if ((ae.originCaller == ac))
259+ let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
260+ let aB = valueOrErrorMessage(getInteger(T, C()), g("invalid period length"))
261+ let aC = valueOrErrorMessage(getInteger(T, B(aA)), g("invalid start height"))
262+ let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
263+ let aE = valueOrErrorMessage(getInteger(T, E()), g("invalid next block to process"))
264+ let aF = ((aC + aB) - 1)
265+ let aG = [if ((ad.originCaller == ab))
268266 then true
269- else j("permission denied"), if ((aF > aG))
267+ else i("permission denied"), if ((aE > aF))
270268 then true
271- else j("unprocessed blocks"), if ((ay >= 0))
269+ else i("unprocessed blocks"), if ((ax >= 0))
272270 then true
273- else j("invalid new treasury volume"), if ((az >= 0))
271+ else i("invalid new treasury volume"), if ((ay >= 0))
274272 then true
275- else j("invalid PWR managers bonus"), if (if ((aA >= -(c)))
276- then (c >= aA)
273+ else i("invalid PWR managers bonus"), if (if ((az >= -(c)))
274+ then (c >= az)
277275 else false)
278276 then true
279- else j("invalid treasury volume diff allocation coefficient")]
280- if ((aH == aH))
277+ else i("invalid treasury volume diff allocation coefficient")]
278+ if ((aG == aG))
281279 then {
282- let aI = valueOrElse(getInteger(U, v(unit)), 0)
283- let aJ = valueOrElse(getInteger(U, u(unit)), 0)
284- let aK = (aI + aJ)
285- let aL = (ay - aK)
286- let aM = if (if ((aL > 0))
287- then (aL >= az)
280+ let aH = valueOrElse(getInteger(T, u(unit)), 0)
281+ let aI = valueOrElse(getInteger(T, t(unit)), 0)
282+ let aJ = (aH + aI)
283+ let aK = (ax - aJ)
284+ let aL = if (if ((aK > 0))
285+ then (aK >= ay)
288286 else false)
289- then az
287+ then ay
290288 else 0
291- let aN = (aL - aM)
292- let aO = if ((aK > 0))
293- then fraction(aI, c, aK)
289+ let aM = (aK - aL)
290+ let aN = if ((aJ > 0))
291+ then fraction(aH, c, aJ)
294292 else 0
295- let aP = fraction(aN, aO, c)
296- let aQ = (aN - aP)
297- let aR = o(aA)
298- let aS = fraction(aQ, if ((0 > aA))
299- then aR
293+ let aO = fraction(aM, aN, c)
294+ let aP = (aM - aO)
295+ let aQ = n(az)
296+ let aR = fraction(aP, if ((0 > az))
297+ then aQ
300298 else 0, c)
301- let aT = fraction(aP, if ((aA > 0))
302- then aR
299+ let aS = fraction(aO, if ((az > 0))
300+ then aQ
303301 else 0, c)
304- let aU = ((aP - aT) + aS)
305- let aV = ((aQ - aS) + aT)
306- let aW = (aJ + aV)
307- let aX = (aB + 1)
308- let aY = valueOrErrorMessage(assetInfo(Y), h("invalid lpAsset info")).quantity
309- let aZ = fraction(aW, c, aY)
310- let ba = valueOrElse(getInteger(U, I()), 0)
311- let bb = max([0, fraction(ba, aZ, c)])
312- let bc = if ((size(ae.payments) > 0))
313- then ae.payments[0]
302+ let aT = ((aO - aS) + aR)
303+ let aU = ((aP - aR) + aS)
304+ let aV = (aI + aU)
305+ let aW = (aA + 1)
306+ let aX = valueOrErrorMessage(assetInfo(X), g("invalid lpAsset info")).quantity
307+ let aY = fraction(aV, c, aX)
308+ let aZ = valueOrElse(getInteger(T, H()), 0)
309+ let ba = max([0, fraction(aZ, aY, c)])
310+ let bb = if ((size(ad.payments) > 0))
311+ then ad.payments[0]
314312 else unit
315- let bd = value(bc).amount
316- let be = value(bc).assetId
317- let bf = if (if ((bb == 0))
313+ let bc = value(bb).amount
314+ let bd = value(bb).assetId
315+ let be = if (if ((ba == 0))
318316 then true
319- else if (if ((bc != unit))
320- then (be == unit)
317+ else if (if ((bb != unit))
318+ then (bd == unit)
321319 else false)
322- then (bd >= bb)
320+ then (bc >= ba)
323321 else false)
324322 then true
325- else j(("invalid payments, payment amount min: " + toString(bb)))
326- if ((bf == bf))
323+ else i(("invalid payments, payment amount min: " + toString(ba)))
324+ if ((be == be))
327325 then {
328- let bg = if ((bc != unit))
329- then [ScriptTransfer(U, bd, be)]
326+ let bf = if ((bb != unit))
327+ then [ScriptTransfer(T, bc, bd)]
330328 else nil
331- let ax = [invoke(U, "integerEntry", [z(), aX], nil), invoke(U, "integerEntry", [A(aX), aZ], nil), invoke(U, "integerEntry", [C(aX), (aG + 1)], nil), invoke(U, "burn", [ba], nil), invoke(U, "integerEntry", [I(), 0], nil)]
332- $Tuple2(bg, ax)
329+ let aw = [invoke(T, "integerEntry", [y(), aW], nil), invoke(T, "integerEntry", [z(aW), aY], nil), invoke(T, "integerEntry", [B(aW), (aF + 1)], nil), invoke(T, "burn", [aZ], nil), invoke(T, "integerEntry", [H(), 0], nil)]
330+ $Tuple2(bf, aw)
333331 }
334332 else throw("Strict value is not equal to itself.")
335333 }
336334 else throw("Strict value is not equal to itself.")
337335 }
338336 else throw("Strict value is not equal to itself.")
339337 }
340338
341339
342340
343-@Callable(ae)
344-func invest (at) = {
345- let au = ag(ae)
346- if ((au == au))
341+@Callable(ad)
342+func invest (as) = {
343+ let at = af(ad)
344+ if ((at == at))
347345 then {
348- let x = Address(at)
349- let aB = valueOrErrorMessage(getInteger(U, z()), h("invalid period"))
350- let aE = valueOrErrorMessage(getInteger(U, A(aB)), h("invalid price"))
351- let bh = if ((size(ae.payments) == 1))
352- then ae.payments[0]
353- else j("invalid payments")
354- let bi = if (if ((bh.assetId == unit))
355- then (bh.amount > 0)
346+ let w = Address(as)
347+ let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
348+ let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
349+ let bg = if ((size(ad.payments) == 1))
350+ then ad.payments[0]
351+ else i("invalid payments")
352+ let bh = if (if ((bg.assetId == unit))
353+ then (bg.amount > 0)
356354 else false)
357- then $Tuple2(bh.amount, bh.assetId)
358- else j("invalid payment amount")
359- let bd = bi._1
360- let be = bi._2
361- let N = if ((aE > 0))
362- then fraction(bd, c, aE)
355+ then $Tuple2(bg.amount, bg.assetId)
356+ else i("invalid payment amount")
357+ let bc = bh._1
358+ let bd = bh._2
359+ let M = if ((aD > 0))
360+ then fraction(bc, c, aD)
363361 else 0
364- let bj = valueOrElse(getInteger(U, u(unit)), 0)
365- let bg = [ScriptTransfer(ac, bd, be)]
366- let ax = [invoke(U, "integerEntry", [u(unit), (bj + bd)], nil), invoke(U, "reissue", [N], nil), invoke(U, "transferAsset", [at, N, Y], nil)]
367- $Tuple2(bg, ax)
362+ let bi = valueOrElse(getInteger(T, t(unit)), 0)
363+ let bf = [ScriptTransfer(ab, bc, bd)]
364+ let aw = [invoke(T, "integerEntry", [t(unit), (bi + bc)], nil), invoke(T, "reissue", [M], nil), invoke(T, "transferAsset", [as, M, X], nil)]
365+ $Tuple2(bf, aw)
368366 }
369367 else throw("Strict value is not equal to itself.")
370368 }
371369
372370
373371
374-@Callable(ae)
375-func withdraw (at) = {
376- let au = ag(ae)
377- if ((au == au))
372+@Callable(ad)
373+func withdraw (as) = {
374+ let at = af(ad)
375+ if ((at == at))
378376 then {
379- let x = Address(at)
380- let aB = valueOrErrorMessage(getInteger(U, z()), h("invalid period"))
381- let bh = if ((size(ae.payments) == 1))
382- then ae.payments[0]
383- else j(h("invalid payments"))
384- let be = if ((bh.assetId == Y))
385- then Y
386- else j("invalid payment asset")
387- let bd = if ((bh.amount > 0))
388- then bh.amount
389- else j("invalid payment amount")
390- let bk = valueOrElse(getInteger(U, I()), 0)
391- let bg = [ScriptTransfer(U, bd, be)]
392- let ax = [invoke(U, "integerEntry", [I(), (bk + bd)], nil), invoke(U, "stringEntry", [J(x, ae.transactionId), L(e, bd, (aB + 1), unit)], nil)]
393- if ((ax == ax))
394- then $Tuple2(bg, ax)
377+ let w = Address(as)
378+ let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
379+ let bg = if ((size(ad.payments) == 1))
380+ then ad.payments[0]
381+ else i(g("invalid payments"))
382+ let bd = if ((bg.assetId == X))
383+ then X
384+ else i("invalid payment asset")
385+ let bc = if ((bg.amount > 0))
386+ then bg.amount
387+ else i("invalid payment amount")
388+ let bj = valueOrElse(getInteger(T, H()), 0)
389+ let bf = [ScriptTransfer(T, bc, bd)]
390+ let aw = [invoke(T, "integerEntry", [H(), (bj + bc)], nil), invoke(T, "stringEntry", [I(w, ad.transactionId), K(d, bc, (aA + 1), unit)], nil)]
391+ if ((aw == aw))
392+ then $Tuple2(bf, aw)
395393 else throw("Strict value is not equal to itself.")
396394 }
397395 else throw("Strict value is not equal to itself.")
398396 }
399397
400398
401399
402-@Callable(ae)
403-func cancelWithdraw (at,K) = {
404- let au = ag(ae)
405- if ((au == au))
400+@Callable(ad)
401+func cancelWithdraw (as,J) = {
402+ let at = af(ad)
403+ if ((at == at))
406404 then {
407- let x = Address(at)
408- let bl = valueOrErrorMessage(getString(U, J(x, K)), h("invalid withdrawal request"))
409- let aB = valueOrErrorMessage(getInteger(U, z()), h("invalid period"))
410- let bm = R(bl)
411- let M = bm._1
412- let N = bm._2
413- let O = bm._3
414- let P = bm._4
415- let aH = [if ((M == e))
405+ let w = Address(as)
406+ let bk = valueOrErrorMessage(getString(T, I(w, J)), g("invalid withdrawal request"))
407+ let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
408+ let bl = Q(bk)
409+ let L = bl._1
410+ let M = bl._2
411+ let N = bl._3
412+ let O = bl._4
413+ let aG = [if ((L == d))
416414 then true
417- else j("invalid withdrawal request status"), if ((O > aB))
415+ else i("invalid withdrawal request status"), if ((N > aA))
418416 then true
419- else j("invalid withdrawal request period")]
420- if ((aH == aH))
417+ else i("invalid withdrawal request period")]
418+ if ((aG == aG))
421419 then {
422- let bk = valueOrErrorMessage(getInteger(U, I()), h("invalid total withdrawal amount"))
423- let ax = [invoke(U, "integerEntry", [I(), if ((bk >= N))
424- then (bk - N)
425- else j("invalid withdrawal amount")], nil), invoke(U, "deleteEntry", [J(x, K)], nil), invoke(U, "transferAsset", [at, N, Y], nil)]
426- if ((ax == ax))
427- then $Tuple2(nil, ax)
420+ let bj = valueOrErrorMessage(getInteger(T, H()), g("invalid total withdrawal amount"))
421+ let aw = [invoke(T, "integerEntry", [H(), if ((bj >= M))
422+ then (bj - M)
423+ else i("invalid withdrawal amount")], nil), invoke(T, "deleteEntry", [I(w, J)], nil), invoke(T, "transferAsset", [as, M, X], nil)]
424+ if ((aw == aw))
425+ then $Tuple2(nil, aw)
428426 else throw("Strict value is not equal to itself.")
429427 }
430428 else throw("Strict value is not equal to itself.")
431429 }
432430 else throw("Strict value is not equal to itself.")
433431 }
434432
435433
436434
437-@Callable(ae)
438-func claimWaves (at,K) = {
439- let au = ag(ae)
440- if ((au == au))
435+@Callable(ad)
436+func claimWaves (as,J) = {
437+ let at = af(ad)
438+ if ((at == at))
441439 then {
442- let x = Address(at)
443- let aB = valueOrErrorMessage(getInteger(U, z()), h("invalid period"))
444- let bl = valueOrErrorMessage(getString(U, J(x, K)), h("invalid withdrawal request"))
445- let bn = R(bl)
446- let M = bn._1
447- let N = bn._2
448- let O = bn._3
449- let P = bn._4
450- if ((M == f))
451- then j("invalid withdrawal request status")
452- else if ((O > aB))
453- then j("invalid withdrawal request period")
440+ let w = Address(as)
441+ let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
442+ let bk = valueOrErrorMessage(getString(T, I(w, J)), g("invalid withdrawal request"))
443+ let bm = Q(bk)
444+ let L = bm._1
445+ let M = bm._2
446+ let N = bm._3
447+ let O = bm._4
448+ if ((L == e))
449+ then i("invalid withdrawal request status")
450+ else if ((N > aA))
451+ then i("invalid withdrawal request period")
454452 else {
455- let bo = valueOrErrorMessage(getInteger(U, A(O)), h("invalid price"))
456- let bp = if ((bo > 0))
457- then fraction(N, bo, c)
453+ let bn = valueOrErrorMessage(getInteger(T, z(N)), g("invalid price"))
454+ let bo = if ((bn > 0))
455+ then fraction(M, bn, c)
458456 else 0
459- let ax = [invoke(U, "stringEntry", [J(x, K), L(f, N, O, ae.transactionId)], nil), invoke(U, "burn", [N], nil), invoke(U, "transferWaves", [at, bp], nil)]
460- $Tuple2(nil, ax)
457+ let aw = [invoke(T, "stringEntry", [I(w, J), K(e, M, N, ad.transactionId)], nil), invoke(T, "transferWaves", [as, bo], nil)]
458+ $Tuple2(nil, aw)
461459 }
462460 }
463461 else throw("Strict value is not equal to itself.")
464462 }
465463
466464
467465
468-@Callable(ae)
469-func processBlocks (at) = {
470- let au = ag(ae)
471- if ((au == au))
466+@Callable(ad)
467+func processBlocks (as) = {
468+ let at = af(ad)
469+ if ((at == at))
472470 then {
473- let x = Address(at)
474- let aB = valueOrErrorMessage(getInteger(U, z()), h("invalid period"))
475- let aC = valueOrErrorMessage(getInteger(U, D()), h("invalid period length"))
476- let aD = valueOrErrorMessage(getInteger(U, C(aB)), h("invalid start height"))
477- let aE = valueOrErrorMessage(getInteger(U, A(aB)), h("invalid price"))
478- let aF = valueOrErrorMessage(getInteger(U, F()), h("invalid next block to process"))
479- let aG = ((aD + aC) - 1)
480- let bq = 40
481- let br = if (if (if ((height >= aF))
482- then if ((aF >= aD))
471+ let w = Address(as)
472+ let aA = valueOrErrorMessage(getInteger(T, y()), g("invalid period"))
473+ let aB = valueOrErrorMessage(getInteger(T, C()), g("invalid period length"))
474+ let aC = valueOrErrorMessage(getInteger(T, B(aA)), g("invalid start height"))
475+ let aD = valueOrErrorMessage(getInteger(T, z(aA)), g("invalid price"))
476+ let aE = valueOrErrorMessage(getInteger(T, E()), g("invalid next block to process"))
477+ let aF = ((aC + aB) - 1)
478+ let bp = 40
479+ let bq = if (if (if ((height >= aE))
480+ then if ((aE >= aC))
483481 then true
484- else (aB == 0)
482+ else (aA == 0)
485483 else false)
486- then (aG >= aF)
484+ then (aF >= aE)
487485 else false)
488- then min([((aG - aF) + 1), bq])
489- else j(h("invalid target block"))
490- let bs = valueOrErrorMessage(getInteger(U, E()), h("invalid block processing reward"))
491- let bt = (bs / br)
492- let bu = (bs - (bt * br))
493- func bv (bw,bx) = if ((bx >= br))
494- then bw
486+ then min([((aF - aE) + 1), bp])
487+ else i(g("invalid target block"))
488+ let br = valueOrErrorMessage(getInteger(T, D()), g("invalid block processing reward"))
489+ let bs = (br / bq)
490+ let bt = (br - (bs * bq))
491+ func bu (bv,bw) = if ((bw >= bq))
492+ then bv
495493 else {
496- let by = (aF + bx)
497- let bz = valueOrErrorMessage(blockInfoByHeight(by), h("invalid block info"))
498- let bA = valueOrErrorMessage(ah(bz.rewards, aa), h(("invalid treasury reward for height " + toString(by))))
499- let bB = bz.generator
500- let av = valueOrElse(getInteger(U, w(bB)), 0)
501- let bC = if ((bx == (br - 1)))
502- then (bt + bu)
503- else bt
504- let N = if ((aE > 0))
505- then fraction((bA - bC), c, aE)
494+ let bx = (aE + bw)
495+ let by = valueOrErrorMessage(blockInfoByHeight(bx), g("invalid block info"))
496+ let bz = valueOrErrorMessage(ag(by.rewards, Z), g(("invalid treasury reward for height " + toString(bx))))
497+ let bA = by.generator
498+ let au = valueOrElse(getInteger(T, v(bA)), 0)
499+ let bB = if ((bw == (bq - 1)))
500+ then (bs + bt)
501+ else bs
502+ let M = if ((aD > 0))
503+ then fraction((bz - bB), c, aD)
506504 else 0
507- let bD = [invoke(U, "stringEntry", [G(by), makeString([toBase58String(ae.transactionId), toString(aB), toString(bB), toBase58String(at), toString(bA), toString(bC), toString(N)], a)], nil), invoke(U, "integerEntry", [w(bB), (av + N)], nil)]
508- if ((bD == bD))
505+ let bC = [invoke(T, "stringEntry", [F(bx), makeString([toBase58String(ad.transactionId), toString(aA), toString(bA), toBase58String(as), toString(bz), toString(bB), toString(M)], a)], nil), invoke(T, "integerEntry", [v(bA), (au + M)], nil)]
506+ if ((bC == bC))
509507 then {
510- let bE = bw
511- let bF = bE._1
512- let bG = bE._2
513- $Tuple2((bF + N), (bG + bA))
508+ let bD = bv
509+ let bE = bD._1
510+ let bF = bD._2
511+ $Tuple2((bE + M), (bF + bz))
514512 }
515513 else throw("Strict value is not equal to itself.")
516514 }
517515
518- let bH = [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]
519- let bI = {
520- let bJ = bH
521- let bK = size(bJ)
522- let bL = $Tuple2(0, 0)
523- func bM (bN,bO) = if ((bO >= bK))
524- then bN
525- else bv(bN, bJ[bO])
516+ let bG = [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]
517+ let bH = {
518+ let bI = bG
519+ let bJ = size(bI)
520+ let bK = $Tuple2(0, 0)
521+ func bL (bM,bN) = if ((bN >= bJ))
522+ then bM
523+ else bu(bM, bI[bN])
526524
527- func bP (bN,bO) = if ((bO >= bK))
528- then bN
525+ func bO (bM,bN) = if ((bN >= bJ))
526+ then bM
529527 else throw("List size exceeds 40")
530528
531- bP(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bL, 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)
529+ bO(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bL(bK, 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)
532530 }
533- if ((bI == bI))
531+ if ((bH == bH))
534532 then {
535- let bQ = bI._2
536- let bR = bI._1
537- let bS = (bQ - bs)
538- let bg = [invoke(U, "transferWaves", [at, bs], nil), invoke(U, "reissue", [bR], nil), invoke(U, "integerEntry", [F(), (aF + br)], nil), invoke(U, "transferFromProxyTreasury", [ac.bytes, bS], nil), invoke(U, "transferFromProxyTreasury", [U.bytes, bs], nil)]
539- if ((bg == bg))
533+ let bP = bH._2
534+ let bQ = bH._1
535+ let bR = (bP - br)
536+ let bf = [invoke(T, "transferWaves", [as, br], nil), invoke(T, "reissue", [bQ], nil), invoke(T, "integerEntry", [E(), (aE + bq)], nil), invoke(T, "transferFromProxyTreasury", [ab.bytes, bR], nil), invoke(T, "transferFromProxyTreasury", [T.bytes, br], nil)]
537+ if ((bf == bf))
540538 then $Tuple2(nil, unit)
541539 else throw("Strict value is not equal to itself.")
542540 }
543541 else throw("Strict value is not equal to itself.")
544542 }
545543 else throw("Strict value is not equal to itself.")
546544 }
547545
548546
549-@Verifier(bT)
550-func bU () = sigVerify(bT.bodyBytes, bT.proofs[0], bT.senderPublicKey)
547+@Verifier(bS)
548+func bT () = sigVerify(bS.bodyBytes, bS.proofs[0], bS.senderPublicKey)
551549

github/deemru/w8io/169f3d6 
245.77 ms