tx · 8AtD5nsuAbCJCbKAhFYgjg7L745nZUCZqinHD4dNhKiJ

3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy:  -0.01300000 Waves

2022.10.17 18:58 [2276587] smart account 3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy > SELF 0.00000000 Waves

{ "type": 13, "id": "8AtD5nsuAbCJCbKAhFYgjg7L745nZUCZqinHD4dNhKiJ", "fee": 1300000, "feeAssetId": null, "timestamp": 1666022334510, "version": 2, "chainId": 84, "sender": "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy", "senderPublicKey": "C3PaRKeL8AUKbwUqdniMQtThgcTh5DYHV1777Hkxy7rp", "proofs": [ "2ZWV25opzNb53Mvv75vy1ytSz3eBmPg1ZZtdLkcB2BXcHJbjUCca6FtVSXD2nhfNwWK4dHohjpCQyXoF6L2YqG5z" ], "script": "base64:BgIkCAISBAoCAQESBwoFCAgBARgSBwoFCAgBARgSAwoBARIDCgEBSgALcmV2aXNpb25OdW0CAAADU0VQAgJfXwAHTElTVFNFUAIBOgANREVGQVVMVFFVT1JVTQCgwh4AClVSTFBBVFRFUk4CGmh0dHBzOi8vZm9ydW0ubmV1dHJpbm8uYXQvAAhNQVhUSVRMRQCgAQAGTUFYVVJMAPoBAA1NQVhWT1RJTkdUSU1FAICQ5MAEAAVNVUxUNgDAhD0ADkRFRkFVTFRQQVlNRU5UAICU69wDABRERUZBVUxUQ1JFQVRJT05HTlNCVACAlOvcAwASZ292SWR4UHJvcG9zYWxUeElkAAEACmdvdklkeFR5cGUAAgAMZ292SWR4QXV0aG9yAAMACWdvdklkeFVybAAEAAtnb3ZJZHhUaXRsZQAFABJnb3ZJZHhDcmVhdGlvblRpbWUABgALZ292SWR4U3RhcnQABwAJZ292SWR4RW5kAAgAC2dvdklkeFR4SWRzAAkADGdvdklkeFF1b3J1bQAKAA1nb3ZJZHhPcHRpb25zAAsAE2dvdlN0YXR1c0lkeElzVmFsaWQAAQASZ292U3RhdHVzSWR4V2luT3B0AAIAFGdvdlN0YXR1c0lkeFdpblZvdGVzAAMAFmdvdlN0YXR1c0lkeFRvdGFsVm90ZXMABAAVZ292U3RhdHVzSWR4U2NBcHBsaWVkAAUAEmdvdlN0YXR1c0lkeFNjVGltZQAGABZnb3ZTdGF0dXNJZHhJc0NhbmNlbGVkAAcBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQxnZXRJbnRPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAAZSWR4Q29udHJvbENmZ05ldXRyaW5vRGFwcAABABhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHAAAgAUSWR4Q29udHJvbENmZ1JwZERhcHAAAwAVSWR4Q29udHJvbENmZ01hdGhEYXBwAAQAHElkeENvbnRyb2xDZmdMaXF1aWRhdGlvbkRhcHAABQAVSWR4Q29udHJvbENmZ1Jlc3REYXBwAAYAHUlkeENvbnRyb2xDZmdOb2RlUmVnaXN0cnlEYXBwAAcAHElkeENvbnRyb2xDZmdOc2J0U3Rha2luZ0RhcHAACAAZSWR4Q29udHJvbENmZ01lZGlhdG9yRGFwcAAJABxJZHhDb250cm9sQ2ZnU3VyZlN0YWtpbmdEYXBwAAoAIElkeENvbnRyb2xDZmdHbnNidENvbnRyb2xsZXJEYXBwAAsAF0lkeENvbnRyb2xDZmdSZXN0VjJEYXBwAAwAG0lkeENvbnRyb2xDZmdHb3Zlcm5hbmNlRGFwcAANARFrZXlDb250cm9sQWRkcmVzcwACHCVzJXNfX2NvbmZpZ19fY29udHJvbEFkZHJlc3MBDWtleUNvbnRyb2xDZmcAAhElc19fY29udHJvbENvbmZpZwEUcmVhZENvbnRyb2xDZmdPckZhaWwBB2NvbnRyb2wJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFB2NvbnRyb2wJAQ1rZXlDb250cm9sQ2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCCmNvbnRyb2xDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpjb250cm9sQ2ZnBQNpZHgJAKwCAgItQ29udHJvbCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAPY29udHJvbENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFrZXlDb250cm9sQWRkcmVzcwACIzNQNUJmZDU4UFBmTnZCTTJIeThRZmJjRHFNZU50emc3S2ZQAApjb250cm9sQ2ZnCQEUcmVhZENvbnRyb2xDZmdPckZhaWwBBQ9jb250cm9sQ29udHJhY3QAEG5ldXRyaW5vQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwABdnbnNidENvbnRyb2xsZXJDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFIElkeENvbnRyb2xDZmdHbnNidENvbnRyb2xsZXJEYXBwARhrZXlRdW9ydW1SZXF1aXJlZFBlcmNlbnQAAhIlc19fcXVvcnVtUmVxdWlyZWQBEmtleVBheW1lbnRSZXF1aXJlZAACEyVzX19wYXltZW50UmVxdWlyZWQBEGtleUduc2J0UmVxdWlyZWQAAhElc19fZ05zYnRSZXF1aXJlZAERa2V5TGFzdFByb3Bvc2FsSWQAAg4lc19fcHJvcG9zYWxJZAEZa2V5UHJvcG9zYWxTdGF0dXNEYXRhQnlJZAEKcHJvcG9zYWxJZAkArAICAholcyVkX19wcm9wb3NhbFN0YXR1c0RhdGFfXwkApAMBBQpwcm9wb3NhbElkARNrZXlQcm9wb3NhbERhdGFCeUlkAQpwcm9wb3NhbElkCQCsAgICFCVzJWRfX3Byb3Bvc2FsRGF0YV9fCQCkAwEFCnByb3Bvc2FsSWQBHWtleVByb3Bvc2FsVm90ZXNCeUlkQW5kT3B0aW9uAgpwcm9wb3NhbElkA29wdAkAuQkCCQDMCAICBiVzJWQlZAkAzAgCAgp2b3Rlc0J5T3B0CQDMCAIJAKQDAQUKcHJvcG9zYWxJZAkAzAgCCQCkAwEFA29wdAUDbmlsBQNTRVABG2tleVByb3Bvc2FsVm90ZXNCeUlkQW5kVXNlcgIKcHJvcG9zYWxJZAh1c2VyQWRkcgkAuQkCCQDMCAICBiVzJWQlcwkAzAgCAgt2b3Rlc0J5VXNlcgkAzAgCCQCkAwEFCnByb3Bvc2FsSWQJAMwIAgUIdXNlckFkZHIFA25pbAUDU0VQARxrZXlQcm9wb3NhbENob2ljZUJ5SWRBbmRVc2VyAgpwcm9wb3NhbElkCHVzZXJBZGRyCQC5CQIJAMwIAgIGJXMlZCVzCQDMCAICDG9wdGlvbkJ5VXNlcgkAzAgCCQCkAwEFCnByb3Bvc2FsSWQJAMwIAgUIdXNlckFkZHIFA25pbAUDU0VQAR5rZXlOdW1VbmlxdWVWb3RlcnNCeVByb3Bvc2FsSWQBCnByb3Bvc2FsSWQJAKwCAgIRJXMlZF9fbnVtVm90ZXJzX18JAKQDAQUKcHJvcG9zYWxJZAEYa2V5U3RhdHNBdmVyVW5pcXVlVm90ZXJzAAIgJXMlcyVzX19zdGF0c19fYXZnX191bmlxdWVWb3RlcnMBFmtleVN0YXRzQXZlckduc2J0Vm90ZWQAAh4lcyVzJXNfX3N0YXRzX19hdmdfX2duc2J0Vm90ZWQBFWtleVN0YXRzVW5pcXVlQXV0aG9ycwACGiVzJXNfX3N0YXRzX191bmlxdWVBdXRob3JzARdrZXlOdW1Qcm9wb3NhbHNCeUF1dGhvcgEKYWRkcmVzc1N0cgkArAICAhwlcyVzX19udW1Qcm9wb3NhbHNCeUF1dGhvcl9fBQphZGRyZXNzU3RyAQlhc0FueUxpc3QBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAFsBQckbWF0Y2gwBQFsCQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQVhc0ludAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAgNJbnQEAWkFByRtYXRjaDAFAWkJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBCnN0YXR1c0RhdGEHDWlzVm90aW5nVmFsaWQJd2luT3B0aW9uDndpbk9wdGlvblZvdGVzCnRvdGFsVm90ZXMRYXJlU2NyaXB0c0FwcGxpZWQQc2NyaXB0c1RpbWVzdGFtcA5jYW5jZWxlZEJ5VGVhbQkAuQkCCQDMCAICDiViJWQlZCVkJWIlZCViCQDMCAIJAKUDAQUNaXNWb3RpbmdWYWxpZAkAzAgCCQCkAwEFCXdpbk9wdGlvbgkAzAgCCQCkAwEFDndpbk9wdGlvblZvdGVzCQDMCAIJAKQDAQUKdG90YWxWb3RlcwkAzAgCCQClAwEFEWFyZVNjcmlwdHNBcHBsaWVkCQDMCAIJAKQDAQUQc2NyaXB0c1RpbWVzdGFtcAkAzAgCCQClAwEFDmNhbmNlbGVkQnlUZWFtBQNuaWwFA1NFUAEMcHJvcG9zYWxEYXRhCwxwcm9wb3NhbFR4SWQEdHlwZQZhdXRob3IJZm9ydW1MaW5rBXRpdGxlDHByb3Bvc2FsVGltZQ92b3RpbmdTdGFydFRpbWUNdm90aW5nRW5kVGltZQV0eElkcw1xdW9ydW1Jbkduc2J0B29wdGlvbnMJALkJAgkAzAgCAhYlcyVzJXMlcyVzJWQlZCVkJXMlZCVzCQDMCAIFDHByb3Bvc2FsVHhJZAkAzAgCBQR0eXBlCQDMCAIFBmF1dGhvcgkAzAgCBQlmb3J1bUxpbmsJAMwIAgUFdGl0bGUJAMwIAgkApAMBBQxwcm9wb3NhbFRpbWUJAMwIAgkApAMBBQ92b3RpbmdTdGFydFRpbWUJAMwIAgkApAMBBQ12b3RpbmdFbmRUaW1lCQDMCAIFBXR4SWRzCQDMCAIJAKQDAQUNcXVvcnVtSW5HbnNidAkAzAgCBQdvcHRpb25zBQNuaWwFA1NFUAELY2hlY2tUeExpc3QBBnR4TGlzdAMJAGYCCQCQAwEFBnR4TGlzdAAUCQACAQkArAICAhdUb28gbWFueSB0cmFuc2FjdGlvbnM6IAkApAMBCQCQAwEFBnR4TGlzdAoBCGNvbWJpbmVyAgNhY2MCdHgDCQEBIQEJAQlpc0RlZmluZWQBCQDpBwEJANkEAQUCdHgJAAIBCQCsAgICC1dyb25nIHR4SWQ6BQJ0eAMJAAACBQNhY2MCAAUCdHgJAKwCAgkArAICBQNhY2MFB0xJU1RTRVAFAnR4CgACJGwFBnR4TGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIY29tYmluZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAEOaW5pdGlhdGVWb3RpbmcLB3BheW1lbnQMcHJvcG9zYWxUeElkBHR5cGUGYXV0aG9yCWZvcnVtTGluawV0aXRsZQ92b3RpbmdTdGFydFRpbWUNdm90aW5nRW5kVGltZQZzdGF0dXMGdHhMaXN0C29wdGlvbnNMaXN0AwkBAiE9AggFB3BheW1lbnQHYXNzZXRJZAUEdW5pdAkAAgECG0FsbG93ZWQgV0FWRVMgcGF5bWVudCBvbmx5IQQGcG10UmVxCQEMZ2V0SW50T3JFbHNlAgkBEmtleVBheW1lbnRSZXF1aXJlZAAFDkRFRkFVTFRQQVlNRU5UAwkAZgIFBnBtdFJlcQgFB3BheW1lbnQGYW1vdW50CQACAQkArAICAiRQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSBhdCBsZWFzdCAJAKQDAQUGcG10UmVxAwkBAiE9AgkBBXZhbHVlAQkAswkCBQlmb3J1bUxpbmsFClVSTFBBVFRFUk4AAAkAAgECC0ludmFsaWQgdXJsAwkAZgIJALECAQUJZm9ydW1MaW5rBQZNQVhVUkwJAAIBAg1VcmwgdG9vIGxvbmchAwkAAAIFBXRpdGxlAgAJAAIBAg5UaXRsZSBpcyBlbXB0eQMJAGYCCQCxAgEFBXRpdGxlBQhNQVhUSVRMRQkAAgECDlRvbyBsb25nIHRpdGxlBAxwcm9wb3NhbFRpbWUIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkAZgIFDHByb3Bvc2FsVGltZQUPdm90aW5nU3RhcnRUaW1lCQACAQkArAICCQCsAgIJAKwCAgIQdm90aW5nU3RhcnRUaW1lPQkApAMBBQ92b3RpbmdTdGFydFRpbWUCECA8IHByb3Bvc2FsVGltZT0JAKQDAQUMcHJvcG9zYWxUaW1lAwkAZgIFD3ZvdGluZ1N0YXJ0VGltZQUNdm90aW5nRW5kVGltZQkAAgEJAKwCAgkArAICCQCsAgICDnZvdGluZ0VuZFRpbWU9CQCkAwEFDXZvdGluZ0VuZFRpbWUCEyA8IHZvdGluZ1N0YXJ0VGltZT0JAKQDAQUPdm90aW5nU3RhcnRUaW1lAwkAZgIJAGUCBQ12b3RpbmdFbmRUaW1lBQ92b3RpbmdTdGFydFRpbWUFDU1BWFZPVElOR1RJTUUJAAIBCQCsAgIJAKwCAgkArAICAhtWb3RpbmcgcGVyaW9kIGV4Y2VlZHMgbWF4OiAJAKQDAQkAZQIFDXZvdGluZ0VuZFRpbWUFD3ZvdGluZ1N0YXJ0VGltZQIDID4gCQCkAwEFDU1BWFZPVElOR1RJTUUEBXR4SWRzAwkAAAIFBHR5cGUCBElERUECAAkBC2NoZWNrVHhMaXN0AQUGdHhMaXN0AwkAZwIAAQkAkAMBBQtvcHRpb25zTGlzdAkAAgECF1RvbyBmZXcgY2hvaWNlcyB0byB2b3RlBAlnbnNidEluZm8JAQlhc0FueUxpc3QBCQD8BwQFF2duc2J0Q29udHJvbGxlckNvbnRyYWN0AhRnbnNidEluZm9TWVNSRUFET05MWQkAzAgCBQZhdXRob3IJAMwIAgAACQDMCAIAAAUDbmlsBQNuaWwECmduc2J0VG90YWwJAQVhc0ludAEJAJEDAgUJZ25zYnRJbmZvAAEECWdOc2J0VXNlcgkBBWFzSW50AQkAkQMCBQlnbnNidEluZm8AAAQIZ25zYnRSZXEJAQxnZXRJbnRPckVsc2UCCQEQa2V5R25zYnRSZXF1aXJlZAAFFERFRkFVTFRDUkVBVElPTkdOU0JUAwkAZgIFCGduc2J0UmVxBQlnTnNidFVzZXIJAAIBCQCsAgIJAKwCAgISWW91IG5lZWQgYXQgbGVhc3QgCQCkAwEFCGduc2J0UmVxAhEgdG8gY3JlYXRlIHZvdGluZwQMYW1vdW50TGVhc2VkCQD8BwQFEG5ldXRyaW5vQ29udHJhY3QCC2FjY2VwdFdhdmVzBQNuaWwJAMwIAgUHcGF5bWVudAUDbmlsAwkAAAIFDGFtb3VudExlYXNlZAUMYW1vdW50TGVhc2VkBAZxdW9ydW0JAQxnZXRJbnRPckVsc2UCCQEYa2V5UXVvcnVtUmVxdWlyZWRQZXJjZW50AAUNREVGQVVMVFFVT1JVTQQNcXVvcnVtSW5HbnNidAkAawMFBnF1b3J1bQUKZ25zYnRUb3RhbAUFTVVMVDYECnByb3Bvc2FsSWQJAGQCCQEMZ2V0SW50T3JFbHNlAgkBEWtleUxhc3RQcm9wb3NhbElkAAAAAAEEFG51bVByb3Bvc2Fsc0J5QXV0aG9yCQBkAgkBDGdldEludE9yRWxzZQIJARdrZXlOdW1Qcm9wb3NhbHNCeUF1dGhvcgEFBmF1dGhvcgAAAAEEC3VuaXFBdXRob3JzCQBkAgkBDGdldEludE9yRWxzZQIJARVrZXlTdGF0c1VuaXF1ZUF1dGhvcnMAAAADCQAAAgUUbnVtUHJvcG9zYWxzQnlBdXRob3IAAQABAAAECm9wdGlvbnNTdHIJALkJAgULb3B0aW9uc0xpc3QFB0xJU1RTRVAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEWtleUxhc3RQcm9wb3NhbElkAAUKcHJvcG9zYWxJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEZa2V5UHJvcG9zYWxTdGF0dXNEYXRhQnlJZAEFCnByb3Bvc2FsSWQJAQpzdGF0dXNEYXRhBwcAAAAAAAAHAAAHCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlQcm9wb3NhbERhdGFCeUlkAQUKcHJvcG9zYWxJZAkBDHByb3Bvc2FsRGF0YQsFDHByb3Bvc2FsVHhJZAUEdHlwZQUGYXV0aG9yBQlmb3J1bUxpbmsFBXRpdGxlBQxwcm9wb3NhbFRpbWUFD3ZvdGluZ1N0YXJ0VGltZQUNdm90aW5nRW5kVGltZQUFdHhJZHMFDXF1b3J1bUluR25zYnQFCm9wdGlvbnNTdHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARdrZXlOdW1Qcm9wb3NhbHNCeUF1dGhvcgEFBmF1dGhvcgUUbnVtUHJvcG9zYWxzQnlBdXRob3IJAMwIAgkBDEludGVnZXJFbnRyeQIJARVrZXlTdGF0c1VuaXF1ZUF1dGhvcnMABQt1bmlxQXV0aG9ycwUDbmlsBQxwcm9wb3NhbFR4SWQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDWNhbGNXaW5PcHRpb24HCnByb3Bvc2FsSWQLb3B0aW9uc0xpc3QOaXNQcmV2T3B0aW9uYWwJb2xkQ2hvaWNlEG9wdGlvbmFsVG90YWxPbGQJbmV3Q2hvaWNlE25ld1RvdGFsQnlOZXdDaG9pY2UKAQhmaW5kQmVzdAIDYWNjBGVsZW0EA2lkeAkBBXZhbHVlAQkAzwgCBQtvcHRpb25zTGlzdAUEZWxlbQQDdmFsAwUOaXNQcmV2T3B0aW9uYWwDCQAAAgUDaWR4BQluZXdDaG9pY2UFE25ld1RvdGFsQnlOZXdDaG9pY2UJAQxnZXRJbnRPckVsc2UCCQEda2V5UHJvcG9zYWxWb3Rlc0J5SWRBbmRPcHRpb24CBQpwcm9wb3NhbElkBQNpZHgAAAMJAAACBQNpZHgJAQV2YWx1ZQEFCW9sZENob2ljZQUQb3B0aW9uYWxUb3RhbE9sZAMJAAACBQNpZHgFCW5ld0Nob2ljZQUTbmV3VG90YWxCeU5ld0Nob2ljZQkBDGdldEludE9yRWxzZQIJAR1rZXlQcm9wb3NhbFZvdGVzQnlJZEFuZE9wdGlvbgIFCnByb3Bvc2FsSWQFA2lkeAAAAwkAZgIIBQNhY2MCXzIFA3ZhbAUDYWNjCQCUCgIFA2lkeAUDdmFsCgACJGwFC29wdGlvbnNMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCAAAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEIZmluZEJlc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBEHVwZGF0ZVN0YXR1c0RhdGEEB29sZERhdGEHaXNWYWxpZAluZXdXaW5PcHQNbmV3VG90YWxWb3RlcwkAuQkCCQDMCAICDiViJWQlZCVkJWIlZCViCQDMCAIJAKUDAQUHaXNWYWxpZAkAzAgCCQCkAwEIBQluZXdXaW5PcHQCXzEJAMwIAgkApAMBCAUJbmV3V2luT3B0Al8yCQDMCAIJAKQDAQUNbmV3VG90YWxWb3RlcwkAzAgCCQCRAwIFB29sZERhdGEFFWdvdlN0YXR1c0lkeFNjQXBwbGllZAkAzAgCCQCRAwIFB29sZERhdGEFEmdvdlN0YXR1c0lkeFNjVGltZQkAzAgCCQCRAwIFB29sZERhdGEFFmdvdlN0YXR1c0lkeElzQ2FuY2VsZWQFA25pbAUDU0VQBQFpAQhjYXN0Vm90ZQIKcHJvcG9zYWxJZAZjaG9pY2UEDnVzZXJBZGRyZXNzU3RyCQClCAEIBQFpBmNhbGxlcgQLZHluYW1pY0RhdGEJALUJAgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJARlrZXlQcm9wb3NhbFN0YXR1c0RhdGFCeUlkAQUKcHJvcG9zYWxJZAUDU0VQBAhwcm9wRGF0YQkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBE2tleVByb3Bvc2FsRGF0YUJ5SWQBBQpwcm9wb3NhbElkBQNTRVAEBXN0YXJ0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvcERhdGEFC2dvdklkeFN0YXJ0BANlbmQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wRGF0YQUJZ292SWR4RW5kBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkAZgIFBXN0YXJ0BQNub3cJAAIBAhZWb3Rpbmcgbm90IHN0YXJ0ZWQgeWV0AwkAZwIFA25vdwUDZW5kCQACAQIXVm90aW5nIGFscmVhZHkgZmluaXNoZWQDCQAAAgkAkQMCBQtkeW5hbWljRGF0YQUWZ292U3RhdHVzSWR4SXNDYW5jZWxlZAIEdHJ1ZQkAAgECGlZvdGluZyBpcyBjYW5jZWxlZCBieSB0ZWFtBBBhdmFpbGFibGVPcHRpb25zCQC1CQIJAJEDAgUIcHJvcERhdGEFDWdvdklkeE9wdGlvbnMFB0xJU1RTRVAECm51bU9wdGlvbnMJAJADAQUQYXZhaWxhYmxlT3B0aW9ucwMJAGcCAAEFCm51bU9wdGlvbnMJAAIBAhdUb28gZmV3IGNob2ljZXMgdG8gdm90ZQMJAGcCBQZjaG9pY2UFCm51bU9wdGlvbnMJAAIBCQCsAgICG1Vua25vd24gY2hvaWNlISBNdXN0IGJlIDAuLgkApAMBCQBlAgUKbnVtT3B0aW9ucwABBAlnbnNidERhdGEJAQlhc0FueUxpc3QBCQD8BwQFF2duc2J0Q29udHJvbGxlckNvbnRyYWN0AhRnbnNidEluZm9TWVNSRUFET05MWQkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCAAAJAMwIAgAABQNuaWwFA25pbAQIZ25zYnRBbXQJAQVhc0ludAEJAJEDAgUJZ25zYnREYXRhAAADCQBnAgAABQhnbnNidEFtdAkAAgECEG5vIGduc2J0IHRvIHZvdGUECmduc2J0VG90YWwJAQVhc0ludAEJAJEDAgUJZ25zYnREYXRhAAEECW9sZENob2ljZQkAnwgBCQEca2V5UHJvcG9zYWxDaG9pY2VCeUlkQW5kVXNlcgIFCnByb3Bvc2FsSWQFDnVzZXJBZGRyZXNzU3RyBAxvbGRVc2VyVm90ZXMDCQEBIQEJAQlpc0RlZmluZWQBBQlvbGRDaG9pY2UAAAkBDGdldEludE9yRWxzZQIJARtrZXlQcm9wb3NhbFZvdGVzQnlJZEFuZFVzZXICBQpwcm9wb3NhbElkBQ51c2VyQWRkcmVzc1N0cgAABBNvbGRUb3RhbEJ5T2xkQ2hvaWNlAwkBCWlzRGVmaW5lZAEFCW9sZENob2ljZQkBDGdldEludE9yRWxzZQIJAR1rZXlQcm9wb3NhbFZvdGVzQnlJZEFuZE9wdGlvbgIFCnByb3Bvc2FsSWQJAQV2YWx1ZQEFCW9sZENob2ljZQAAAAAEE29sZFRvdGFsQnlOZXdDaG9pY2UJAQxnZXRJbnRPckVsc2UCCQEda2V5UHJvcG9zYWxWb3Rlc0J5SWRBbmRPcHRpb24CBQpwcm9wb3NhbElkBQZjaG9pY2UAAAQIb2xkVG90YWwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtkeW5hbWljRGF0YQUWZ292U3RhdHVzSWR4VG90YWxWb3RlcwQTbmV3VG90YWxCeU9sZENob2ljZQMJAQEhAQkBCWlzRGVmaW5lZAEFCW9sZENob2ljZQAACQBkAgkAZQIFE29sZFRvdGFsQnlPbGRDaG9pY2UFDG9sZFVzZXJWb3RlcwMJAAACCQEFdmFsdWUBBQlvbGRDaG9pY2UFBmNob2ljZQUIZ25zYnRBbXQAAAQTbmV3VG90YWxCeU5ld0Nob2ljZQMDCQEJaXNEZWZpbmVkAQUJb2xkQ2hvaWNlCQAAAgkBBXZhbHVlAQUJb2xkQ2hvaWNlBQZjaG9pY2UHBRNuZXdUb3RhbEJ5T2xkQ2hvaWNlCQBkAgUTb2xkVG90YWxCeU5ld0Nob2ljZQUIZ25zYnRBbXQECG5ld1RvdGFsCQBkAgkAZQIFCG9sZFRvdGFsBQxvbGRVc2VyVm90ZXMFCGduc2J0QW10BA9pc1F1b3J1bVJlYWNoZWQJAGYCBQhuZXdUb3RhbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb3BEYXRhBQxnb3ZJZHhRdW9ydW0EFW51bVZvdGVyc0J5UHJvcG9zYWxJZAkBDGdldEludE9yRWxzZQIJAR5rZXlOdW1VbmlxdWVWb3RlcnNCeVByb3Bvc2FsSWQBBQpwcm9wb3NhbElkAAAEFG9sZEF2ZXJVbmlxdWVWb3RlcnM2CQEMZ2V0SW50T3JFbHNlAgkBGGtleVN0YXRzQXZlclVuaXF1ZVZvdGVycwAAAAQMbnVtUHJvcG9zYWxzCQERQGV4dHJOYXRpdmUoMTA1NSkBCQERa2V5TGFzdFByb3Bvc2FsSWQABAp1bmlxdWVEaWZmAwkAAAIFDG9sZFVzZXJWb3RlcwAAAAEAAAQUbmV3QXZlclVuaXF1ZVZvdGVyczYJAGQCBRRvbGRBdmVyVW5pcXVlVm90ZXJzNgkAawMFCnVuaXF1ZURpZmYFBU1VTFQ2BQxudW1Qcm9wb3NhbHMEDG9sZEF2ZXJHbnNidAkBDGdldEludE9yRWxzZQIJARZrZXlTdGF0c0F2ZXJHbnNidFZvdGVkAAAABAxuZXdBdmVyR25zYnQJAGQCBQxvbGRBdmVyR25zYnQJAGkCCQBlAgUIZ25zYnRBbXQFDG9sZFVzZXJWb3RlcwUMbnVtUHJvcG9zYWxzBA5pc1ByZXZPcHRpb25hbAMJAQEhAQkBCWlzRGVmaW5lZAEFCW9sZENob2ljZQYJAAACCQEFdmFsdWUBBQlvbGRDaG9pY2UFBmNob2ljZQQQb3B0aW9uYWxUb3RhbE9sZAMFDmlzUHJldk9wdGlvbmFsBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAR1rZXlQcm9wb3NhbFZvdGVzQnlJZEFuZE9wdGlvbgIFCnByb3Bvc2FsSWQJAQV2YWx1ZQEFCW9sZENob2ljZQUTbmV3VG90YWxCeU9sZENob2ljZQUDbmlsBAZ3aW5PcHQJAQ1jYWxjV2luT3B0aW9uBwUKcHJvcG9zYWxJZAUQYXZhaWxhYmxlT3B0aW9ucwUOaXNQcmV2T3B0aW9uYWwFCW9sZENob2ljZQUTbmV3VG90YWxCeU9sZENob2ljZQUGY2hvaWNlBRNuZXdUb3RhbEJ5TmV3Q2hvaWNlCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHGtleVByb3Bvc2FsQ2hvaWNlQnlJZEFuZFVzZXICBQpwcm9wb3NhbElkBQ51c2VyQWRkcmVzc1N0cgUGY2hvaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEba2V5UHJvcG9zYWxWb3Rlc0J5SWRBbmRVc2VyAgUKcHJvcG9zYWxJZAUOdXNlckFkZHJlc3NTdHIFCGduc2J0QW10CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEda2V5UHJvcG9zYWxWb3Rlc0J5SWRBbmRPcHRpb24CBQpwcm9wb3NhbElkBQZjaG9pY2UFE25ld1RvdGFsQnlOZXdDaG9pY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlOdW1VbmlxdWVWb3RlcnNCeVByb3Bvc2FsSWQBBQpwcm9wb3NhbElkCQBkAgUVbnVtVm90ZXJzQnlQcm9wb3NhbElkBQp1bmlxdWVEaWZmCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYa2V5U3RhdHNBdmVyVW5pcXVlVm90ZXJzAAUUbmV3QXZlclVuaXF1ZVZvdGVyczYJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGF0c0F2ZXJHbnNidFZvdGVkAAUMbmV3QXZlckduc2J0CQDMCAIJAQtTdHJpbmdFbnRyeQIJARlrZXlQcm9wb3NhbFN0YXR1c0RhdGFCeUlkAQUKcHJvcG9zYWxJZAkBEHVwZGF0ZVN0YXR1c0RhdGEEBQtkeW5hbWljRGF0YQUPaXNRdW9ydW1SZWFjaGVkBQZ3aW5PcHQFCG5ld1RvdGFsBQNuaWwFEG9wdGlvbmFsVG90YWxPbGQFBHVuaXQBaQESaW5pdGlhdGVJZGVhVm90aW5nBQlmb3J1bUxpbmsFdGl0bGUPdm90aW5nU3RhcnRUaW1lDXZvdGluZ0VuZFRpbWULb3B0aW9uc0xpc3QDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkCQEOaW5pdGlhdGVWb3RpbmcLCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAIESURFQQkApQgBCAUBaQZjYWxsZXIFCWZvcnVtTGluawUFdGl0bGUFD3ZvdGluZ1N0YXJ0VGltZQUNdm90aW5nRW5kVGltZQIHUEVORElORwUDbmlsBQtvcHRpb25zTGlzdAFpARRpbml0aWF0ZVVwZGF0ZVZvdGluZwUJZm9ydW1MaW5rBXRpdGxlD3ZvdGluZ1N0YXJ0VGltZQ12b3RpbmdFbmRUaW1lBnR4TGlzdAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQDCQBmAgABCQCQAwEFBnR4TGlzdAkAAgECGlRyYW5zYWN0aW9ucyBsaXN0IGlzIGVtcHR5CQEOaW5pdGlhdGVWb3RpbmcLCQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAIGVVBEQVRFCQClCAEIBQFpBmNhbGxlcgUJZm9ydW1MaW5rBQV0aXRsZQUPdm90aW5nU3RhcnRUaW1lBQ12b3RpbmdFbmRUaW1lAgdQRU5ESU5HBQZ0eExpc3QJAMwIAgICTk8JAMwIAgIDWUVTBQNuaWwBaQEMY2FuY2VsVm90aW5nAQpwcm9wb3NhbElkAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIObm90IGF1dGhvcml6ZWQEC2N1cnJlbnREYXRhCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBGWtleVByb3Bvc2FsU3RhdHVzRGF0YUJ5SWQBBQpwcm9wb3NhbElkBAt1cGRhdGVkRGF0YQkArAICCQCsAgIJAK8CAgULY3VycmVudERhdGEJAQV2YWx1ZQEJALcJAgULY3VycmVudERhdGEFA1NFUAUDU0VQAgR0cnVlCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGWtleVByb3Bvc2FsU3RhdHVzRGF0YUJ5SWQBBQpwcm9wb3NhbElkBQt1cGRhdGVkRGF0YQUDbmlsBQR1bml0AWkBC2FwcGx5Vm90aW5nAQpwcm9wb3NhbElkCQCUCgIFA25pbAUEdW5pdACii+yR", "height": 2276587, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9na4igWLsU8QpAT9zkgStt7kN8SX12sMtJ6eUxbedrAA Next: pswkQmDndHZJ2EJS2CxeD2gfG66M2qpa4eW8g3hDqcJ Diff:
OldNewDifferences
265265 func bx (ak,bm,by,bz,bA,bB,bC) = {
266266 func bD (ba,bE) = {
267267 let ab = value(indexOf(bm, bE))
268- let bF = G(am(ak, ab), 0)
268+ let bF = if (by)
269+ then if ((ab == bB))
270+ then bC
271+ else G(am(ak, ab), 0)
272+ else if ((ab == value(bz)))
273+ then bA
274+ else if ((ab == bB))
275+ then bC
276+ else G(am(ak, ab), 0)
269277 if ((ba._2 > bF))
270278 then ba
271279 else $Tuple2(ab, bF)
272280 }
273281
274- let bG = if (if (by)
275- then true
276- else (bC > bA))
277- then $Tuple2(bB, bC)
278- else $Tuple2(value(bz), bA)
279282 let bc = bm
280283 let bd = size(bc)
281- let be = bG
284+ let be = $Tuple2(0, 0)
282285 func bf (bg,bh) = if ((bh >= bd))
283286 then bg
284287 else bD(bg, bc[bh])
291294 }
292295
293296
294-func bH (bI,bJ,bK,bL) = makeString(["%b%d%d%d%b%d%b", toString(bJ), toString(bK._1), toString(bK._2), toString(bL), bI[A], bI[B], bI[C]], b)
297+func bG (bH,bI,bJ,bK) = makeString(["%b%d%d%d%b%d%b", toString(bI), toString(bJ._1), toString(bJ._2), toString(bK), bH[A], bH[B], bH[C]], b)
295298
296299
297300 @Callable(aC)
298-func castVote (ak,bM) = {
299- let bN = toString(aC.caller)
300- let bO = split(D(this, aj(ak)), b)
301- let bP = split(D(this, al(ak)), b)
302- let bQ = parseIntValue(bP[r])
303- let bR = parseIntValue(bP[s])
304- let bS = lastBlock.timestamp
305- if ((bQ > bS))
301+func castVote (ak,bL) = {
302+ let bM = toString(aC.caller)
303+ let bN = split(D(this, aj(ak)), b)
304+ let bO = split(D(this, al(ak)), b)
305+ let bP = parseIntValue(bO[r])
306+ let bQ = parseIntValue(bO[s])
307+ let bR = lastBlock.timestamp
308+ if ((bP > bR))
306309 then throw("Voting not started yet")
307- else if ((bS >= bR))
310+ else if ((bR >= bQ))
308311 then throw("Voting already finished")
309- else if ((bO[C] == "true"))
312+ else if ((bN[C] == "true"))
310313 then throw("Voting is canceled by team")
311314 else {
312- let bT = split(bP[v], c)
313- let bU = size(bT)
314- if ((1 >= bU))
315+ let bS = split(bO[v], c)
316+ let bT = size(bS)
317+ if ((1 >= bT))
315318 then throw("Too few choices to vote")
316- else if ((bM >= bU))
317- then throw(("Unknown choice! Must be 0.." + toString((bU - 1))))
319+ else if ((bL >= bT))
320+ then throw(("Unknown choice! Must be 0.." + toString((bT - 1))))
318321 else {
319- let bV = ax(invoke(ae, "gnsbtInfoSYSREADONLY", [bN, 0, 0], nil))
320- let bW = aB(bV[0])
321- if ((0 >= bW))
322+ let bU = ax(invoke(ae, "gnsbtInfoSYSREADONLY", [bM, 0, 0], nil))
323+ let bV = aB(bU[0])
324+ if ((0 >= bV))
322325 then throw("no gnsbt to vote")
323326 else {
324- let bp = aB(bV[1])
325- let bz = getInteger(aq(ak, bN))
326- let bX = if (!(isDefined(bz)))
327+ let bp = aB(bU[1])
328+ let bz = getInteger(aq(ak, bM))
329+ let bW = if (!(isDefined(bz)))
327330 then 0
328- else G(ao(ak, bN), 0)
329- let bY = if (isDefined(bz))
331+ else G(ao(ak, bM), 0)
332+ let bX = if (isDefined(bz))
330333 then G(am(ak, value(bz)), 0)
331334 else 0
332- let bZ = G(am(ak, bM), 0)
333- let ca = parseIntValue(bO[z])
334- let cb = if (!(isDefined(bz)))
335+ let bY = G(am(ak, bL), 0)
336+ let bZ = parseIntValue(bN[z])
337+ let ca = if (!(isDefined(bz)))
335338 then 0
336- else ((bY - bX) + (if ((value(bz) == bM))
337- then bW
339+ else ((bX - bW) + (if ((value(bz) == bL))
340+ then bV
338341 else 0))
339342 let bC = if (if (isDefined(bz))
340- then (value(bz) == bM)
343+ then (value(bz) == bL)
341344 else false)
342- then cb
343- else (bZ + bW)
344- let cc = ((ca - bX) + bW)
345- let cd = (cc > parseIntValue(bP[u]))
346- let ce = G(ar(ak), 0)
347- let cf = G(as(), 0)
348- let cg = getIntegerValue(ai())
349- let ch = if ((bX == 0))
345+ then ca
346+ else (bY + bV)
347+ let cb = ((bZ - bW) + bV)
348+ let cc = (cb > parseIntValue(bO[u]))
349+ let cd = G(ar(ak), 0)
350+ let ce = G(as(), 0)
351+ let cf = getIntegerValue(ai())
352+ let cg = if ((bW == 0))
350353 then 1
351354 else 0
352- let ci = (cf + fraction(ch, i, cg))
353- let cj = G(at(), 0)
354- let ck = (cj + ((bW - bX) / cg))
355+ let ch = (ce + fraction(cg, i, cf))
356+ let ci = G(at(), 0)
357+ let cj = (ci + ((bV - bW) / cf))
355358 let by = if (!(isDefined(bz)))
356359 then true
357- else (value(bz) == bM)
360+ else (value(bz) == bL)
358361 let bA = if (by)
359362 then nil
360- else [IntegerEntry(am(ak, value(bz)), cb)]
361- let cl = bx(ak, bT, by, bz, cb, bM, bC)
362- $Tuple2(([IntegerEntry(aq(ak, bN), bM), IntegerEntry(ao(ak, bN), bW), IntegerEntry(am(ak, bM), bC), IntegerEntry(ar(ak), (ce + ch)), IntegerEntry(as(), ci), IntegerEntry(at(), ck), StringEntry(aj(ak), bH(bO, cd, cl, cc))] ++ bA), unit)
363+ else [IntegerEntry(am(ak, value(bz)), ca)]
364+ let ck = bx(ak, bS, by, bz, ca, bL, bC)
365+ $Tuple2(([IntegerEntry(aq(ak, bM), bL), IntegerEntry(ao(ak, bM), bV), IntegerEntry(am(ak, bL), bC), IntegerEntry(ar(ak), (cd + cg)), IntegerEntry(as(), ch), IntegerEntry(at(), cj), StringEntry(aj(ak), bG(bN, cc, ck, cb))] ++ bA), unit)
363366 }
364367 }
365368 }
387390 func cancelVoting (ak) = if ((aC.caller != this))
388391 then throw("not authorized")
389392 else {
390- let cm = D(this, aj(ak))
391- let cn = ((take(cm, value(lastIndexOf(cm, b))) + b) + "true")
392- $Tuple2([StringEntry(aj(ak), cn)], unit)
393+ let cl = D(this, aj(ak))
394+ let cm = ((take(cl, value(lastIndexOf(cl, b))) + b) + "true")
395+ $Tuple2([StringEntry(aj(ak), cm)], unit)
393396 }
394397
395398
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = ""
55
66 let b = "__"
77
88 let c = ":"
99
1010 let d = 500000
1111
1212 let e = "https://forum.neutrino.at/"
1313
1414 let f = 160
1515
1616 let g = 250
1717
1818 let h = 1209600000
1919
2020 let i = 1000000
2121
2222 let j = 1000000000
2323
2424 let k = 1000000000
2525
2626 let l = 1
2727
2828 let m = 2
2929
3030 let n = 3
3131
3232 let o = 4
3333
3434 let p = 5
3535
3636 let q = 6
3737
3838 let r = 7
3939
4040 let s = 8
4141
4242 let t = 9
4343
4444 let u = 10
4545
4646 let v = 11
4747
4848 let w = 1
4949
5050 let x = 2
5151
5252 let y = 3
5353
5454 let z = 4
5555
5656 let A = 5
5757
5858 let B = 6
5959
6060 let C = 7
6161
6262 func D (E,F) = valueOrErrorMessage(getString(E, F), makeString(["mandatory ", toString(E), ".", F, " is not defined"], ""))
6363
6464
6565 func G (F,H) = valueOrElse(getInteger(this, F), H)
6666
6767
6868 let I = 1
6969
7070 let J = 2
7171
7272 let K = 3
7373
7474 let L = 4
7575
7676 let M = 5
7777
7878 let N = 6
7979
8080 let O = 7
8181
8282 let P = 8
8383
8484 let Q = 9
8585
8686 let R = 10
8787
8888 let S = 11
8989
9090 let T = 12
9191
9292 let U = 13
9393
9494 func V () = "%s%s__config__controlAddress"
9595
9696
9797 func W () = "%s__controlConfig"
9898
9999
100100 func X (Y) = split_4C(D(Y, W()), b)
101101
102102
103103 func Z (aa,ab) = valueOrErrorMessage(addressFromString(aa[ab]), ("Control cfg doesn't contain address at index " + toString(ab)))
104104
105105
106106 let ac = addressFromStringValue(valueOrElse(getString(this, V()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
107107
108108 let aa = X(ac)
109109
110110 let ad = Z(aa, I)
111111
112112 let ae = Z(aa, S)
113113
114114 func af () = "%s__quorumRequired"
115115
116116
117117 func ag () = "%s__paymentRequired"
118118
119119
120120 func ah () = "%s__gNsbtRequired"
121121
122122
123123 func ai () = "%s__proposalId"
124124
125125
126126 func aj (ak) = ("%s%d__proposalStatusData__" + toString(ak))
127127
128128
129129 func al (ak) = ("%s%d__proposalData__" + toString(ak))
130130
131131
132132 func am (ak,an) = makeString(["%s%d%d", "votesByOpt", toString(ak), toString(an)], b)
133133
134134
135135 func ao (ak,ap) = makeString(["%s%d%s", "votesByUser", toString(ak), ap], b)
136136
137137
138138 func aq (ak,ap) = makeString(["%s%d%s", "optionByUser", toString(ak), ap], b)
139139
140140
141141 func ar (ak) = ("%s%d__numVoters__" + toString(ak))
142142
143143
144144 func as () = "%s%s%s__stats__avg__uniqueVoters"
145145
146146
147147 func at () = "%s%s%s__stats__avg__gnsbtVoted"
148148
149149
150150 func au () = "%s%s__stats__uniqueAuthors"
151151
152152
153153 func av (aw) = ("%s%s__numProposalsByAuthor__" + aw)
154154
155155
156156 func ax (ay) = {
157157 let az = ay
158158 if ($isInstanceOf(az, "List[Any]"))
159159 then {
160160 let aA = az
161161 aA
162162 }
163163 else throw("fail to cast into List[Any]")
164164 }
165165
166166
167167 func aB (ay) = {
168168 let az = ay
169169 if ($isInstanceOf(az, "Int"))
170170 then {
171171 let aC = az
172172 aC
173173 }
174174 else throw("fail to cast into Int")
175175 }
176176
177177
178178 func aD (aE,aF,aG,aH,aI,aJ,aK) = makeString(["%b%d%d%d%b%d%b", toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK)], b)
179179
180180
181181 func aL (aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW) = makeString(["%s%s%s%s%s%d%d%d%s%d%s", aM, aN, aO, aP, aQ, toString(aR), toString(aS), toString(aT), aU, toString(aV), aW], b)
182182
183183
184184 func aX (aY) = if ((size(aY) > 20))
185185 then throw(("Too many transactions: " + toString(size(aY))))
186186 else {
187187 func aZ (ba,bb) = if (!(isDefined(transactionHeightById(fromBase58String(bb)))))
188188 then throw(("Wrong txId:" + bb))
189189 else if ((ba == ""))
190190 then bb
191191 else ((ba + c) + bb)
192192
193193 let bc = aY
194194 let bd = size(bc)
195195 let be = ""
196196 func bf (bg,bh) = if ((bh >= bd))
197197 then bg
198198 else aZ(bg, bc[bh])
199199
200200 func bi (bg,bh) = if ((bh >= bd))
201201 then bg
202202 else throw("List size exceeds 20")
203203
204204 bi(bf(bf(bf(bf(bf(bf(bf(bf(bf(bf(bf(bf(bf(bf(bf(bf(bf(bf(bf(bf(be, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
205205 }
206206
207207
208208 func bj (bk,aM,aN,aO,aP,aQ,aS,aT,bl,aY,bm) = if ((bk.assetId != unit))
209209 then throw("Allowed WAVES payment only!")
210210 else {
211211 let bn = G(ag(), j)
212212 if ((bn > bk.amount))
213213 then throw(("Payment attached should be at least " + toString(bn)))
214214 else if ((value(indexOf(aP, e)) != 0))
215215 then throw("Invalid url")
216216 else if ((size(aP) > g))
217217 then throw("Url too long!")
218218 else if ((aQ == ""))
219219 then throw("Title is empty")
220220 else if ((size(aQ) > f))
221221 then throw("Too long title")
222222 else {
223223 let aR = lastBlock.timestamp
224224 if ((aR > aS))
225225 then throw(((("votingStartTime=" + toString(aS)) + " < proposalTime=") + toString(aR)))
226226 else if ((aS > aT))
227227 then throw(((("votingEndTime=" + toString(aT)) + " < votingStartTime=") + toString(aS)))
228228 else if (((aT - aS) > h))
229229 then throw(((("Voting period exceeds max: " + toString((aT - aS))) + " > ") + toString(h)))
230230 else {
231231 let aU = if ((aN == "IDEA"))
232232 then ""
233233 else aX(aY)
234234 if ((1 >= size(bm)))
235235 then throw("Too few choices to vote")
236236 else {
237237 let bo = ax(invoke(ae, "gnsbtInfoSYSREADONLY", [aO, 0, 0], nil))
238238 let bp = aB(bo[1])
239239 let bq = aB(bo[0])
240240 let br = G(ah(), k)
241241 if ((br > bq))
242242 then throw((("You need at least " + toString(br)) + " to create voting"))
243243 else {
244244 let bs = invoke(ad, "acceptWaves", nil, [bk])
245245 if ((bs == bs))
246246 then {
247247 let bt = G(af(), d)
248248 let aV = fraction(bt, bp, i)
249249 let ak = (G(ai(), 0) + 1)
250250 let bu = (G(av(aO), 0) + 1)
251251 let bv = (G(au(), 0) + (if ((bu == 1))
252252 then 1
253253 else 0))
254254 let bw = makeString(bm, c)
255255 $Tuple2([IntegerEntry(ai(), ak), StringEntry(aj(ak), aD(false, 0, 0, 0, false, 0, false)), StringEntry(al(ak), aL(aM, aN, aO, aP, aQ, aR, aS, aT, aU, aV, bw)), IntegerEntry(av(aO), bu), IntegerEntry(au(), bv)], aM)
256256 }
257257 else throw("Strict value is not equal to itself.")
258258 }
259259 }
260260 }
261261 }
262262 }
263263
264264
265265 func bx (ak,bm,by,bz,bA,bB,bC) = {
266266 func bD (ba,bE) = {
267267 let ab = value(indexOf(bm, bE))
268- let bF = G(am(ak, ab), 0)
268+ let bF = if (by)
269+ then if ((ab == bB))
270+ then bC
271+ else G(am(ak, ab), 0)
272+ else if ((ab == value(bz)))
273+ then bA
274+ else if ((ab == bB))
275+ then bC
276+ else G(am(ak, ab), 0)
269277 if ((ba._2 > bF))
270278 then ba
271279 else $Tuple2(ab, bF)
272280 }
273281
274- let bG = if (if (by)
275- then true
276- else (bC > bA))
277- then $Tuple2(bB, bC)
278- else $Tuple2(value(bz), bA)
279282 let bc = bm
280283 let bd = size(bc)
281- let be = bG
284+ let be = $Tuple2(0, 0)
282285 func bf (bg,bh) = if ((bh >= bd))
283286 then bg
284287 else bD(bg, bc[bh])
285288
286289 func bi (bg,bh) = if ((bh >= bd))
287290 then bg
288291 else throw("List size exceeds 10")
289292
290293 bi(bf(bf(bf(bf(bf(bf(bf(bf(bf(bf(be, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
291294 }
292295
293296
294-func bH (bI,bJ,bK,bL) = makeString(["%b%d%d%d%b%d%b", toString(bJ), toString(bK._1), toString(bK._2), toString(bL), bI[A], bI[B], bI[C]], b)
297+func bG (bH,bI,bJ,bK) = makeString(["%b%d%d%d%b%d%b", toString(bI), toString(bJ._1), toString(bJ._2), toString(bK), bH[A], bH[B], bH[C]], b)
295298
296299
297300 @Callable(aC)
298-func castVote (ak,bM) = {
299- let bN = toString(aC.caller)
300- let bO = split(D(this, aj(ak)), b)
301- let bP = split(D(this, al(ak)), b)
302- let bQ = parseIntValue(bP[r])
303- let bR = parseIntValue(bP[s])
304- let bS = lastBlock.timestamp
305- if ((bQ > bS))
301+func castVote (ak,bL) = {
302+ let bM = toString(aC.caller)
303+ let bN = split(D(this, aj(ak)), b)
304+ let bO = split(D(this, al(ak)), b)
305+ let bP = parseIntValue(bO[r])
306+ let bQ = parseIntValue(bO[s])
307+ let bR = lastBlock.timestamp
308+ if ((bP > bR))
306309 then throw("Voting not started yet")
307- else if ((bS >= bR))
310+ else if ((bR >= bQ))
308311 then throw("Voting already finished")
309- else if ((bO[C] == "true"))
312+ else if ((bN[C] == "true"))
310313 then throw("Voting is canceled by team")
311314 else {
312- let bT = split(bP[v], c)
313- let bU = size(bT)
314- if ((1 >= bU))
315+ let bS = split(bO[v], c)
316+ let bT = size(bS)
317+ if ((1 >= bT))
315318 then throw("Too few choices to vote")
316- else if ((bM >= bU))
317- then throw(("Unknown choice! Must be 0.." + toString((bU - 1))))
319+ else if ((bL >= bT))
320+ then throw(("Unknown choice! Must be 0.." + toString((bT - 1))))
318321 else {
319- let bV = ax(invoke(ae, "gnsbtInfoSYSREADONLY", [bN, 0, 0], nil))
320- let bW = aB(bV[0])
321- if ((0 >= bW))
322+ let bU = ax(invoke(ae, "gnsbtInfoSYSREADONLY", [bM, 0, 0], nil))
323+ let bV = aB(bU[0])
324+ if ((0 >= bV))
322325 then throw("no gnsbt to vote")
323326 else {
324- let bp = aB(bV[1])
325- let bz = getInteger(aq(ak, bN))
326- let bX = if (!(isDefined(bz)))
327+ let bp = aB(bU[1])
328+ let bz = getInteger(aq(ak, bM))
329+ let bW = if (!(isDefined(bz)))
327330 then 0
328- else G(ao(ak, bN), 0)
329- let bY = if (isDefined(bz))
331+ else G(ao(ak, bM), 0)
332+ let bX = if (isDefined(bz))
330333 then G(am(ak, value(bz)), 0)
331334 else 0
332- let bZ = G(am(ak, bM), 0)
333- let ca = parseIntValue(bO[z])
334- let cb = if (!(isDefined(bz)))
335+ let bY = G(am(ak, bL), 0)
336+ let bZ = parseIntValue(bN[z])
337+ let ca = if (!(isDefined(bz)))
335338 then 0
336- else ((bY - bX) + (if ((value(bz) == bM))
337- then bW
339+ else ((bX - bW) + (if ((value(bz) == bL))
340+ then bV
338341 else 0))
339342 let bC = if (if (isDefined(bz))
340- then (value(bz) == bM)
343+ then (value(bz) == bL)
341344 else false)
342- then cb
343- else (bZ + bW)
344- let cc = ((ca - bX) + bW)
345- let cd = (cc > parseIntValue(bP[u]))
346- let ce = G(ar(ak), 0)
347- let cf = G(as(), 0)
348- let cg = getIntegerValue(ai())
349- let ch = if ((bX == 0))
345+ then ca
346+ else (bY + bV)
347+ let cb = ((bZ - bW) + bV)
348+ let cc = (cb > parseIntValue(bO[u]))
349+ let cd = G(ar(ak), 0)
350+ let ce = G(as(), 0)
351+ let cf = getIntegerValue(ai())
352+ let cg = if ((bW == 0))
350353 then 1
351354 else 0
352- let ci = (cf + fraction(ch, i, cg))
353- let cj = G(at(), 0)
354- let ck = (cj + ((bW - bX) / cg))
355+ let ch = (ce + fraction(cg, i, cf))
356+ let ci = G(at(), 0)
357+ let cj = (ci + ((bV - bW) / cf))
355358 let by = if (!(isDefined(bz)))
356359 then true
357- else (value(bz) == bM)
360+ else (value(bz) == bL)
358361 let bA = if (by)
359362 then nil
360- else [IntegerEntry(am(ak, value(bz)), cb)]
361- let cl = bx(ak, bT, by, bz, cb, bM, bC)
362- $Tuple2(([IntegerEntry(aq(ak, bN), bM), IntegerEntry(ao(ak, bN), bW), IntegerEntry(am(ak, bM), bC), IntegerEntry(ar(ak), (ce + ch)), IntegerEntry(as(), ci), IntegerEntry(at(), ck), StringEntry(aj(ak), bH(bO, cd, cl, cc))] ++ bA), unit)
363+ else [IntegerEntry(am(ak, value(bz)), ca)]
364+ let ck = bx(ak, bS, by, bz, ca, bL, bC)
365+ $Tuple2(([IntegerEntry(aq(ak, bM), bL), IntegerEntry(ao(ak, bM), bV), IntegerEntry(am(ak, bL), bC), IntegerEntry(ar(ak), (cd + cg)), IntegerEntry(as(), ch), IntegerEntry(at(), cj), StringEntry(aj(ak), bG(bN, cc, ck, cb))] ++ bA), unit)
363366 }
364367 }
365368 }
366369 }
367370
368371
369372
370373 @Callable(aC)
371374 func initiateIdeaVoting (aP,aQ,aS,aT,bm) = if ((size(aC.payments) != 1))
372375 then throw("Exactly one payment required")
373376 else bj(value(aC.payments[0]), toBase58String(aC.transactionId), "IDEA", toString(aC.caller), aP, aQ, aS, aT, "PENDING", nil, bm)
374377
375378
376379
377380 @Callable(aC)
378381 func initiateUpdateVoting (aP,aQ,aS,aT,aY) = if ((size(aC.payments) != 1))
379382 then throw("Exactly one payment required")
380383 else if ((1 > size(aY)))
381384 then throw("Transactions list is empty")
382385 else bj(value(aC.payments[0]), toBase58String(aC.transactionId), "UPDATE", toString(aC.caller), aP, aQ, aS, aT, "PENDING", aY, ["NO", "YES"])
383386
384387
385388
386389 @Callable(aC)
387390 func cancelVoting (ak) = if ((aC.caller != this))
388391 then throw("not authorized")
389392 else {
390- let cm = D(this, aj(ak))
391- let cn = ((take(cm, value(lastIndexOf(cm, b))) + b) + "true")
392- $Tuple2([StringEntry(aj(ak), cn)], unit)
393+ let cl = D(this, aj(ak))
394+ let cm = ((take(cl, value(lastIndexOf(cl, b))) + b) + "true")
395+ $Tuple2([StringEntry(aj(ak), cm)], unit)
393396 }
394397
395398
396399
397400 @Callable(aC)
398401 func applyVoting (ak) = $Tuple2(nil, unit)
399402
400403

github/deemru/w8io/c3f4982 
80.70 ms