tx · ErN5x9ZhdxUr6VPruumyVWpEbMoB5nfvuRJ8HqVmGCap

3N6oQmUanp4TWuHnv5rma4WveVub63JRFB2:  -0.01200000 Waves

2023.06.03 11:14 [2606253] smart account 3N6oQmUanp4TWuHnv5rma4WveVub63JRFB2 > SELF 0.00000000 Waves

{ "type": 13, "id": "ErN5x9ZhdxUr6VPruumyVWpEbMoB5nfvuRJ8HqVmGCap", "fee": 1200000, "feeAssetId": null, "timestamp": 1685780074148, "version": 2, "chainId": 84, "sender": "3N6oQmUanp4TWuHnv5rma4WveVub63JRFB2", "senderPublicKey": "EM2pooK6eEzhzFXZFGd2phMRus6f1M5GxBsawNk9oi37", "proofs": [ "2c7BoCmtSLwqy6ydJ2BKFSaDrciv7x9sNGozRrTktbRTjkJcVmg1tTceSBi4tnELfKso8E3Mx9K8g9PuGr4pKsmm" ], "script": "base64:BgIbCAISBAoCCAESBAoCAQESBgoECAEBGBIDCgEBNQAFY2hhaW4JAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEAFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BRQ3V2RmJ2aDRMa1BVbnJuVTF6M2puYkExcDltM1dOaHYDCQAAAgEBVAUHJG1hdGNoMAIjM011bWtHR3p0Q0tBWHBXRHF4a2Rkb2ZxWFNVYnFRa3ZTSnkJAAIBAg1Vbmtub3duIGNoYWluAANTRVACAl9fAAVNVUxUNgDAhD0ABVNTSVpFABkABU1TSVpFAGQABUxTSVpFAOEBAAZYTFNJWkUAkAMAB1hYTFNJWkUA8QQAC3JlY0xhbmRTaXplAAEBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQxnZXRJbnRPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9zdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdTdGFraW5nRGFwcAEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyARFrZXlSZXNQcm9wb3J0aW9ucwACE3Jlc1R5cGVzUHJvcG9ydGlvbnMBFWtleVVzZXJHd2xSZWxlYXNlVGltZQEIdXNlckFkZHIJAKwCAgIaJXMlc19fdXNlckd3bFJlbGVhc2VUaW1lX18FCHVzZXJBZGRyAAdMSVNUU0VQAgE6AA1ERUZBVUxUUVVPUlVNAKDCHgAITUFYVElUTEUA+gEADU1BWFZPVElOR1RJTUUAgJDkwAQAFERFRkFVTFRGSVJTVFBST1BPU0FMAAEAC2dvdklkeFN0YXJ0AAQACWdvdklkeEVuZAAFAAxnb3ZJZHhRdW9ydW0ABgANZ292SWR4T3B0aW9ucwAHABZnb3ZTdGF0dXNJZHhUb3RhbFZvdGVzAAQAFmdvdlN0YXR1c0lkeElzQ2FuY2VsZWQABQEYa2V5UXVvcnVtUmVxdWlyZWRQZXJjZW50AAISJXNfX3F1b3J1bVJlcXVpcmVkARFrZXlMYXN0UHJvcG9zYWxJZAACDiVzX19wcm9wb3NhbElkARJrZXlGaXJzdFByb3Bvc2FsSWQAAhMlc19fZmlyc3RQcm9wb3NhbElkARlrZXlQcm9wb3NhbFN0YXR1c0RhdGFCeUlkAQpwcm9wb3NhbElkCQCsAgICGiVzJWRfX3Byb3Bvc2FsU3RhdHVzRGF0YV9fCQCkAwEFCnByb3Bvc2FsSWQBE2tleVByb3Bvc2FsRGF0YUJ5SWQBCnByb3Bvc2FsSWQJAKwCAgIUJXMlZF9fcHJvcG9zYWxEYXRhX18JAKQDAQUKcHJvcG9zYWxJZAEda2V5UHJvcG9zYWxWb3Rlc0J5SWRBbmRPcHRpb24CCnByb3Bvc2FsSWQDb3B0CQC5CQIJAMwIAgIGJXMlZCVkCQDMCAICCnZvdGVzQnlPcHQJAMwIAgkApAMBBQpwcm9wb3NhbElkCQDMCAIJAKQDAQUDb3B0BQNuaWwFA1NFUAEba2V5UHJvcG9zYWxWb3Rlc0J5SWRBbmRVc2VyAgpwcm9wb3NhbElkCHVzZXJBZGRyCQC5CQIJAMwIAgIGJXMlZCVzCQDMCAICC3ZvdGVzQnlVc2VyCQDMCAIJAKQDAQUKcHJvcG9zYWxJZAkAzAgCBQh1c2VyQWRkcgUDbmlsBQNTRVABHGtleVByb3Bvc2FsQ2hvaWNlQnlJZEFuZFVzZXICCnByb3Bvc2FsSWQIdXNlckFkZHIJALkJAgkAzAgCAgYlcyVkJXMJAMwIAgIMb3B0aW9uQnlVc2VyCQDMCAIJAKQDAQUKcHJvcG9zYWxJZAkAzAgCBQh1c2VyQWRkcgUDbmlsBQNTRVABHmtleU51bVVuaXF1ZVZvdGVyc0J5UHJvcG9zYWxJZAEKcHJvcG9zYWxJZAkArAICAhElcyVkX19udW1Wb3RlcnNfXwkApAMBBQpwcm9wb3NhbElkARhrZXlTdGF0c0F2ZXJVbmlxdWVWb3RlcnMAAiAlcyVzJXNfX3N0YXRzX19hdmdfX3VuaXF1ZVZvdGVycwEUa2V5U3RhdHNBdmVyR3dsVm90ZWQAAhwlcyVzJXNfX3N0YXRzX19hdmdfX2d3bFZvdGVkAQpzdGF0dXNEYXRhBQ1pc1ZvdGluZ1ZhbGlkCXdpbk9wdGlvbg53aW5PcHRpb25Wb3Rlcwp0b3RhbFZvdGVzDmNhbmNlbGVkQnlUZWFtCQC5CQIJAMwIAgIKJWIlZCVkJWQlYgkAzAgCCQClAwEFDWlzVm90aW5nVmFsaWQJAMwIAgkApAMBBQl3aW5PcHRpb24JAMwIAgkApAMBBQ53aW5PcHRpb25Wb3RlcwkAzAgCCQCkAwEFCnRvdGFsVm90ZXMJAMwIAgkApQMBBQ5jYW5jZWxlZEJ5VGVhbQUDbmlsBQNTRVABDHByb3Bvc2FsRGF0YQcMcHJvcG9zYWxUeElkBXRpdGxlDHByb3Bvc2FsVGltZQ92b3RpbmdTdGFydFRpbWUNdm90aW5nRW5kVGltZQtxdW9ydW1Jbkd3bAdvcHRpb25zCQC6CQIJAMwIAgIOJXMlcyVkJWQlZCVkJXMJAMwIAgUMcHJvcG9zYWxUeElkCQDMCAIFBXRpdGxlCQDMCAIJAKQDAQUMcHJvcG9zYWxUaW1lCQDMCAIJAKQDAQUPdm90aW5nU3RhcnRUaW1lCQDMCAIJAKQDAQUNdm90aW5nRW5kVGltZQkAzAgCCQCkAwEFC3F1b3J1bUluR3dsCQDMCAIFB29wdGlvbnMFA25pbAUDU0VQAAtJZHhFZmZUb3RhbAAAAApJZHhFZmZVc2VyAAEBD251bVBpZWNlc0J5U2l6ZQEIbGFuZFNpemUEByRtYXRjaDAFCGxhbmRTaXplAwkAAAICAVMFByRtYXRjaDAFBVNTSVpFAwkAAAICAU0FByRtYXRjaDAFBU1TSVpFAwkAAAICAUwFByRtYXRjaDAFBUxTSVpFAwkAAAICAlhMBQckbWF0Y2gwBQZYTFNJWkUDCQAAAgIDWFhMBQckbWF0Y2gwBQdYWExTSVpFCQACAQIRVW5rbm93biBsYW5kIHNpemUBDmdldFZvdGluZ1Bvd2VyARJ1c2VyQWRkclN0ck9yRW1wdHkEBXByb3BzCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUPc3Rha2luZ0NvbnRyYWN0CQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwoBBWFkZGVyAgNhY2MEaXRlbQkAZAIFA2FjYwkBDXBhcnNlSW50VmFsdWUBBQRpdGVtBAp0b3RhbFBvd2VyCgACJGwFBXByb3BzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQVhZGRlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgQKdXNlcnNQb3dlcgMJAAACBRJ1c2VyQWRkclN0ck9yRW1wdHkCAAAABAhsYW5kc1N0cgkAnQgCBQ9zdGFraW5nQ29udHJhY3QJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBRJ1c2VyQWRkclN0ck9yRW1wdHkEBWxhbmRzAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwKAQdvbmVMYW5kAgNhY2MLbGFuZEFzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQECGxhbmRTaXplCQCRAwIJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBQtyZWNMYW5kU2l6ZQkAZAIFA2FjYwkBD251bVBpZWNlc0J5U2l6ZQEFCGxhbmRTaXplCgACJGwFBWxhbmRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYxXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdvbmVMYW5kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAkAzAgCBQp0b3RhbFBvd2VyCQDMCAIFCnVzZXJzUG93ZXIFA25pbAENY2FsY1dpbk9wdGlvbgcKcHJvcG9zYWxJZAtvcHRpb25zTGlzdA5pc1ByZXZPcHRpb25hbAlvbGRDaG9pY2UQb3B0aW9uYWxUb3RhbE9sZAluZXdDaG9pY2UTbmV3VG90YWxCeU5ld0Nob2ljZQoBCGZpbmRCZXN0AgNhY2MEZWxlbQQDaWR4CQEFdmFsdWUBCQDPCAIFC29wdGlvbnNMaXN0BQRlbGVtBAN2YWwDBQ5pc1ByZXZPcHRpb25hbAMJAAACBQNpZHgFCW5ld0Nob2ljZQUTbmV3VG90YWxCeU5ld0Nob2ljZQkBDGdldEludE9yRWxzZQIJAR1rZXlQcm9wb3NhbFZvdGVzQnlJZEFuZE9wdGlvbgIFCnByb3Bvc2FsSWQFA2lkeAAAAwkAAAIFA2lkeAkBBXZhbHVlAQUJb2xkQ2hvaWNlBRBvcHRpb25hbFRvdGFsT2xkAwkAAAIFA2lkeAUJbmV3Q2hvaWNlBRNuZXdUb3RhbEJ5TmV3Q2hvaWNlCQEMZ2V0SW50T3JFbHNlAgkBHWtleVByb3Bvc2FsVm90ZXNCeUlkQW5kT3B0aW9uAgUKcHJvcG9zYWxJZAUDaWR4AAADCQBmAggFA2FjYwJfMgUDdmFsBQNhY2MJAJQKAgUDaWR4BQN2YWwKAAIkbAULb3B0aW9uc0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmaW5kQmVzdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgEQdXBkYXRlU3RhdHVzRGF0YQQNaXNDYW5jZWxlZFN0cgdpc1ZhbGlkCW5ld1dpbk9wdA1uZXdUb3RhbFZvdGVzCQC5CQIJAMwIAgIKJWIlZCVkJWQlYgkAzAgCCQClAwEFB2lzVmFsaWQJAMwIAgkApAMBCAUJbmV3V2luT3B0Al8xCQDMCAIJAKQDAQgFCW5ld1dpbk9wdAJfMgkAzAgCCQCkAwEFDW5ld1RvdGFsVm90ZXMJAMwIAgUNaXNDYW5jZWxlZFN0cgUDbmlsBQNTRVAEAWkBDWNvbnN0cnVjdG9yVjECCHJlc3RBZGRyDXF1b3J1bVJlcVBlcmMDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5UmVzdEFkZHJlc3MABQhyZXN0QWRkcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGGtleVF1b3J1bVJlcXVpcmVkUGVyY2VudAAFDXF1b3J1bVJlcVBlcmMFA25pbAFpAQhjYXN0Vm90ZQIKcHJvcG9zYWxJZAZjaG9pY2UEDnVzZXJBZGRyZXNzU3RyCQClCAEIBQFpBmNhbGxlcgQLZHluYW1pY0RhdGEJALUJAgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJARlrZXlQcm9wb3NhbFN0YXR1c0RhdGFCeUlkAQUKcHJvcG9zYWxJZAUDU0VQAwkAAAIJAJEDAgULZHluYW1pY0RhdGEFFmdvdlN0YXR1c0lkeElzQ2FuY2VsZWQCBHRydWUJAAIBAhpWb3RpbmcgaXMgY2FuY2VsZWQgYnkgdGVhbQQIcHJvcERhdGEJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJARNrZXlQcm9wb3NhbERhdGFCeUlkAQUKcHJvcG9zYWxJZAUDU0VQBAVzdGFydAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb3BEYXRhBQtnb3ZJZHhTdGFydAQDZW5kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvcERhdGEFCWdvdklkeEVuZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAGYCBQVzdGFydAUDbm93CQACAQIWVm90aW5nIG5vdCBzdGFydGVkIHlldAMJAGcCBQNub3cFA2VuZAkAAgECF1ZvdGluZyBhbHJlYWR5IGZpbmlzaGVkBBBhdmFpbGFibGVPcHRpb25zCQC1CQIJAJEDAgUIcHJvcERhdGEFDWdvdklkeE9wdGlvbnMFB0xJU1RTRVAECm51bU9wdGlvbnMJAJADAQUQYXZhaWxhYmxlT3B0aW9ucwMJAGcCAAEFCm51bU9wdGlvbnMJAAIBAhdUb28gZmV3IGNob2ljZXMgdG8gdm90ZQMJAGcCBQZjaG9pY2UFCm51bU9wdGlvbnMJAAIBCQCsAgICG1Vua25vd24gY2hvaWNlISBNdXN0IGJlIDAuLgkApAMBCQBlAgUKbnVtT3B0aW9ucwABBANlZmYJAQ5nZXRWb3RpbmdQb3dlcgEFDnVzZXJBZGRyZXNzU3RyBAZnd2xBbXQJAJEDAgUDZWZmBQpJZHhFZmZVc2VyAwkAZwIAAAUGZ3dsQW10CQACAQIdWW91IG5lZWQgc3Rha2VkIGxhbmRzIHRvIHZvdGUECGd3bFRvdGFsCQCRAwIFA2VmZgULSWR4RWZmVG90YWwECW9sZENob2ljZQkAnwgBCQEca2V5UHJvcG9zYWxDaG9pY2VCeUlkQW5kVXNlcgIFCnByb3Bvc2FsSWQFDnVzZXJBZGRyZXNzU3RyBAxvbGRVc2VyVm90ZXMDCQEBIQEJAQlpc0RlZmluZWQBBQlvbGRDaG9pY2UAAAkBDGdldEludE9yRWxzZQIJARtrZXlQcm9wb3NhbFZvdGVzQnlJZEFuZFVzZXICBQpwcm9wb3NhbElkBQ51c2VyQWRkcmVzc1N0cgAABBNvbGRUb3RhbEJ5T2xkQ2hvaWNlAwkBCWlzRGVmaW5lZAEFCW9sZENob2ljZQkBDGdldEludE9yRWxzZQIJAR1rZXlQcm9wb3NhbFZvdGVzQnlJZEFuZE9wdGlvbgIFCnByb3Bvc2FsSWQJAQV2YWx1ZQEFCW9sZENob2ljZQAAAAAEE29sZFRvdGFsQnlOZXdDaG9pY2UJAQxnZXRJbnRPckVsc2UCCQEda2V5UHJvcG9zYWxWb3Rlc0J5SWRBbmRPcHRpb24CBQpwcm9wb3NhbElkBQZjaG9pY2UAAAQIb2xkVG90YWwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtkeW5hbWljRGF0YQUWZ292U3RhdHVzSWR4VG90YWxWb3RlcwQTbmV3VG90YWxCeU9sZENob2ljZQMJAQEhAQkBCWlzRGVmaW5lZAEFCW9sZENob2ljZQAACQBkAgkAZQIFE29sZFRvdGFsQnlPbGRDaG9pY2UFDG9sZFVzZXJWb3RlcwMJAAACCQEFdmFsdWUBBQlvbGRDaG9pY2UFBmNob2ljZQUGZ3dsQW10AAAEE25ld1RvdGFsQnlOZXdDaG9pY2UDAwkBCWlzRGVmaW5lZAEFCW9sZENob2ljZQkAAAIJAQV2YWx1ZQEFCW9sZENob2ljZQUGY2hvaWNlBwUTbmV3VG90YWxCeU9sZENob2ljZQkAZAIFE29sZFRvdGFsQnlOZXdDaG9pY2UFBmd3bEFtdAQIbmV3VG90YWwJAGQCCQBlAgUIb2xkVG90YWwFDG9sZFVzZXJWb3RlcwUGZ3dsQW10BA9pc1F1b3J1bVJlYWNoZWQJAGcCBQhuZXdUb3RhbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb3BEYXRhBQxnb3ZJZHhRdW9ydW0EFW51bVZvdGVyc0J5UHJvcG9zYWxJZAkBDGdldEludE9yRWxzZQIJAR5rZXlOdW1VbmlxdWVWb3RlcnNCeVByb3Bvc2FsSWQBBQpwcm9wb3NhbElkAAAEFG9sZEF2ZXJVbmlxdWVWb3RlcnM2CQEMZ2V0SW50T3JFbHNlAgkBGGtleVN0YXRzQXZlclVuaXF1ZVZvdGVycwAAAAQMbnVtUHJvcG9zYWxzCQBkAgkAZQIJARFAZXh0ck5hdGl2ZSgxMDU1KQEJARFrZXlMYXN0UHJvcG9zYWxJZAAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleUZpcnN0UHJvcG9zYWxJZAAFFERFRkFVTFRGSVJTVFBST1BPU0FMAAEECnVuaXF1ZURpZmYDCQAAAgUMb2xkVXNlclZvdGVzAAAAAQAABBRuZXdBdmVyVW5pcXVlVm90ZXJzNgkAZAIFFG9sZEF2ZXJVbmlxdWVWb3RlcnM2CQBrAwUKdW5pcXVlRGlmZgUFTVVMVDYFDG51bVByb3Bvc2FscwQKb2xkQXZlckd3bAkBDGdldEludE9yRWxzZQIJARRrZXlTdGF0c0F2ZXJHd2xWb3RlZAAAAAQKbmV3QXZlckd3bAkAZAIFCm9sZEF2ZXJHd2wJAGkCCQBlAgUGZ3dsQW10BQxvbGRVc2VyVm90ZXMFDG51bVByb3Bvc2FscwQOaXNQcmV2T3B0aW9uYWwDCQEBIQEJAQlpc0RlZmluZWQBBQlvbGRDaG9pY2UGCQAAAgkBBXZhbHVlAQUJb2xkQ2hvaWNlBQZjaG9pY2UEEG9wdGlvbmFsVG90YWxPbGQDBQ5pc1ByZXZPcHRpb25hbAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEda2V5UHJvcG9zYWxWb3Rlc0J5SWRBbmRPcHRpb24CBQpwcm9wb3NhbElkCQEFdmFsdWUBBQlvbGRDaG9pY2UFE25ld1RvdGFsQnlPbGRDaG9pY2UFA25pbAQGd2luT3B0CQENY2FsY1dpbk9wdGlvbgcFCnByb3Bvc2FsSWQFEGF2YWlsYWJsZU9wdGlvbnMFDmlzUHJldk9wdGlvbmFsBQlvbGRDaG9pY2UFE25ld1RvdGFsQnlPbGRDaG9pY2UFBmNob2ljZQUTbmV3VG90YWxCeU5ld0Nob2ljZQQLcmVsZWFzZVRpbWUJAJYDAQkAzAgCBQNlbmQJAMwIAgkBDGdldEludE9yRWxzZQIJARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBBQ51c2VyQWRkcmVzc1N0cgAABQNuaWwJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEca2V5UHJvcG9zYWxDaG9pY2VCeUlkQW5kVXNlcgIFCnByb3Bvc2FsSWQFDnVzZXJBZGRyZXNzU3RyBQZjaG9pY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARtrZXlQcm9wb3NhbFZvdGVzQnlJZEFuZFVzZXICBQpwcm9wb3NhbElkBQ51c2VyQWRkcmVzc1N0cgUGZ3dsQW10CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEda2V5UHJvcG9zYWxWb3Rlc0J5SWRBbmRPcHRpb24CBQpwcm9wb3NhbElkBQZjaG9pY2UFE25ld1RvdGFsQnlOZXdDaG9pY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlOdW1VbmlxdWVWb3RlcnNCeVByb3Bvc2FsSWQBBQpwcm9wb3NhbElkCQBkAgUVbnVtVm90ZXJzQnlQcm9wb3NhbElkBQp1bmlxdWVEaWZmCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQUOdXNlckFkZHJlc3NTdHIFC3JlbGVhc2VUaW1lCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYa2V5U3RhdHNBdmVyVW5pcXVlVm90ZXJzAAUUbmV3QXZlclVuaXF1ZVZvdGVyczYJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlTdGF0c0F2ZXJHd2xWb3RlZAAFCm5ld0F2ZXJHd2wJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGWtleVByb3Bvc2FsU3RhdHVzRGF0YUJ5SWQBBQpwcm9wb3NhbElkCQEQdXBkYXRlU3RhdHVzRGF0YQQJAJEDAgULZHluYW1pY0RhdGEFFmdvdlN0YXR1c0lkeElzQ2FuY2VsZWQFD2lzUXVvcnVtUmVhY2hlZAUGd2luT3B0BQhuZXdUb3RhbAUDbmlsBRBvcHRpb25hbFRvdGFsT2xkBQR1bml0AWkBDmluaXRpYXRlVm90aW5nBAV0aXRsZQ92b3RpbmdTdGFydFRpbWUNdm90aW5nRW5kVGltZQtvcHRpb25zTGlzdAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQInZ292ZXJuYW5jZSBkb2Vzbid0IHJlcXVpcmUgYW55IHBheW1lbnRzBAxwcm9wb3NhbFR4SWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAMJAAACBQV0aXRsZQIACQACAQIOVGl0bGUgaXMgZW1wdHkDCQBmAgkAsQIBBQV0aXRsZQUITUFYVElUTEUJAAIBAg5Ub28gbG9uZyB0aXRsZQQMcHJvcG9zYWxUaW1lCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAGYCBQxwcm9wb3NhbFRpbWUFD3ZvdGluZ1N0YXJ0VGltZQkAAgEJAKwCAgkArAICCQCsAgICEHZvdGluZ1N0YXJ0VGltZT0JAKQDAQUPdm90aW5nU3RhcnRUaW1lAhAgPCBwcm9wb3NhbFRpbWU9CQCkAwEFDHByb3Bvc2FsVGltZQMJAGYCBQ92b3RpbmdTdGFydFRpbWUFDXZvdGluZ0VuZFRpbWUJAAIBCQCsAgIJAKwCAgkArAICAg52b3RpbmdFbmRUaW1lPQkApAMBBQ12b3RpbmdFbmRUaW1lAhMgPCB2b3RpbmdTdGFydFRpbWU9CQCkAwEFD3ZvdGluZ1N0YXJ0VGltZQMJAGYCCQBlAgUNdm90aW5nRW5kVGltZQUPdm90aW5nU3RhcnRUaW1lBQ1NQVhWT1RJTkdUSU1FCQACAQkArAICCQCsAgIJAKwCAgIbVm90aW5nIHBlcmlvZCBleGNlZWRzIG1heDogCQCkAwEJAGUCBQ12b3RpbmdFbmRUaW1lBQ92b3RpbmdTdGFydFRpbWUCAyA+IAkApAMBBQ1NQVhWT1RJTkdUSU1FAwkAZwIAAQkAkAMBBQtvcHRpb25zTGlzdAkAAgECF1RvbyBmZXcgY2hvaWNlcyB0byB2b3RlBANlZmYJAQ5nZXRWb3RpbmdQb3dlcgECAAQMZ1BpZWNlc1RvdGFsCQCRAwIFA2VmZgULSWR4RWZmVG90YWwEBnF1b3J1bQkBDGdldEludE9yRWxzZQIJARhrZXlRdW9ydW1SZXF1aXJlZFBlcmNlbnQABQ1ERUZBVUxUUVVPUlVNBA9xdW9ydW1JbkdwaWVjZXMJAGsDBQZxdW9ydW0FDGdQaWVjZXNUb3RhbAUFTVVMVDYECnByb3Bvc2FsSWQJAGQCCQEMZ2V0SW50T3JFbHNlAgkBEWtleUxhc3RQcm9wb3NhbElkAAAAAAEECm9wdGlvbnNTdHIJALkJAgULb3B0aW9uc0xpc3QFB0xJU1RTRVAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEWtleUxhc3RQcm9wb3NhbElkAAUKcHJvcG9zYWxJZAkAzAgCCQELU3RyaW5nRW50cnkCCQEZa2V5UHJvcG9zYWxTdGF0dXNEYXRhQnlJZAEFCnByb3Bvc2FsSWQJAQpzdGF0dXNEYXRhBQcAAAAAAAAHCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlQcm9wb3NhbERhdGFCeUlkAQUKcHJvcG9zYWxJZAkBDHByb3Bvc2FsRGF0YQcFDHByb3Bvc2FsVHhJZAkA3AQBCQCbAwEFBXRpdGxlBQxwcm9wb3NhbFRpbWUFD3ZvdGluZ1N0YXJ0VGltZQUNdm90aW5nRW5kVGltZQUPcXVvcnVtSW5HcGllY2VzBQpvcHRpb25zU3RyBQNuaWwFDHByb3Bvc2FsVHhJZAFpAQxjYW5jZWxWb3RpbmcBCnByb3Bvc2FsSWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAg5ub3QgYXV0aG9yaXplZAQLY3VycmVudERhdGEJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQEZa2V5UHJvcG9zYWxTdGF0dXNEYXRhQnlJZAEFCnByb3Bvc2FsSWQEC3VwZGF0ZWREYXRhCQCsAgIJAKwCAgkArwICBQtjdXJyZW50RGF0YQkBBXZhbHVlAQkAtwkCBQtjdXJyZW50RGF0YQUDU0VQBQNTRVACBHRydWUJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQEZa2V5UHJvcG9zYWxTdGF0dXNEYXRhQnlJZAEFCnByb3Bvc2FsSWQFC3VwZGF0ZWREYXRhBQNuaWwFBHVuaXQAqUKQ5w==", "height": 2606253, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BSsCo3yJjZRTZZA1Utr7ewGt2CNW24snn9JzfTpTi4XT Next: 7D25JRQWLTTnH8LN1AcJn6HcDP8YGHw74ukhB5qSnzQP Diff:
OldNewDifferences
1414
1515 let d = "__"
1616
17-let e = ":"
17+let e = 1000000
1818
19-let f = 500000
19+let f = 25
2020
21-let g = 250
21+let g = 100
2222
23-let h = 1209600000
23+let h = 225
2424
25-let i = 1000000
25+let i = 400
2626
27-let j = 1
27+let j = 625
2828
29-let k = 25
29+let k = 1
3030
31-let l = 100
32-
33-let m = 225
34-
35-let n = 400
36-
37-let o = 625
38-
39-let p = 1
40-
41-let q = 2
42-
43-let r = 3
44-
45-let s = 4
46-
47-let t = 5
48-
49-let u = 6
50-
51-let v = 7
52-
53-let w = 1
54-
55-let x = 2
56-
57-let y = 3
58-
59-let z = 4
60-
61-let A = 5
62-
63-func B (C,D) = valueOrErrorMessage(getString(C, D), makeString(["mandatory ", toString(C), ".", D, " is not defined"], ""))
31+func l (m,n) = valueOrErrorMessage(getString(m, n), makeString(["mandatory ", toString(m), ".", n, " is not defined"], ""))
6432
6533
66-func E (D,F) = valueOrElse(getInteger(this, D), F)
34+func o (n,p) = valueOrElse(getInteger(this, n), p)
6735
6836
69-let G = 1
37+let q = 1
7038
71-let H = 2
72-
73-let I = 3
74-
75-func J () = "%s__restConfig"
39+func r () = "%s__restConfig"
7640
7741
78-func K () = "%s__restAddr"
42+func s () = "%s__restAddr"
7943
8044
81-func L (M) = split_4C(B(M, J()), d)
45+func t (u) = split_4C(l(u, r()), d)
8246
8347
84-func N (O,P) = valueOrErrorMessage(addressFromString(O[P]), ("Rest cfg doesn't contain address at index " + toString(P)))
48+func v (w,x) = valueOrErrorMessage(addressFromString(w[x]), ("Rest cfg doesn't contain address at index " + toString(x)))
8549
8650
87-let Q = addressFromStringValue(valueOrElse(getString(this, K()), b))
51+let y = addressFromStringValue(valueOrElse(getString(this, s()), b))
8852
89-let O = L(Q)
53+let w = t(y)
9054
91-let R = N(O, G)
55+let z = v(w, q)
9256
93-let S = N(O, H)
94-
95-func T () = "%s__quorumRequired"
57+func A (B) = ("stakedLandsByOwner_" + B)
9658
9759
98-func U () = "%s__proposalId"
60+func C () = "resTypesProportions"
9961
10062
101-func V () = "%s__firstProposalId"
63+func D (E) = ("%s%s__userGwlReleaseTime__" + E)
10264
10365
104-func W (X) = ("%s%d__proposalStatusData__" + toString(X))
66+let F = ":"
67+
68+let G = 500000
69+
70+let H = 250
71+
72+let I = 1209600000
73+
74+let J = 1
75+
76+let K = 4
77+
78+let L = 5
79+
80+let M = 6
81+
82+let N = 7
83+
84+let O = 4
85+
86+let P = 5
87+
88+func Q () = "%s__quorumRequired"
10589
10690
107-func Y (X) = ("%s%d__proposalData__" + toString(X))
91+func R () = "%s__proposalId"
10892
10993
110-func Z (X,aa) = makeString(["%s%d%d", "votesByOpt", toString(X), toString(aa)], d)
94+func S () = "%s__firstProposalId"
11195
11296
113-func ab (X,ac) = makeString(["%s%d%s", "votesByUser", toString(X), ac], d)
97+func T (U) = ("%s%d__proposalStatusData__" + toString(U))
11498
11599
116-func ad (X,ac) = makeString(["%s%d%s", "optionByUser", toString(X), ac], d)
100+func V (U) = ("%s%d__proposalData__" + toString(U))
117101
118102
119-func ae (ac) = ("%s%s__userGwlReleaseTime__" + ac)
103+func W (U,X) = makeString(["%s%d%d", "votesByOpt", toString(U), toString(X)], d)
120104
121105
122-func af (X) = ("%s%d__numVoters__" + toString(X))
106+func Y (U,E) = makeString(["%s%d%s", "votesByUser", toString(U), E], d)
123107
124108
125-func ag () = "%s%s%s__stats__avg__uniqueVoters"
109+func Z (U,E) = makeString(["%s%d%s", "optionByUser", toString(U), E], d)
126110
127111
128-func ah () = "%s%s%s__stats__avg__gwlVoted"
112+func aa (U) = ("%s%d__numVoters__" + toString(U))
129113
130114
131-func ai () = "resTypesProportions"
115+func ab () = "%s%s%s__stats__avg__uniqueVoters"
132116
133117
134-func aj (ak) = ("stakedLandsByOwner_" + ak)
118+func ac () = "%s%s%s__stats__avg__gwlVoted"
135119
136120
137-func al (am) = {
138- let c = am
139- if ($isInstanceOf(c, "List[Any]"))
140- then {
141- let an = c
142- an
143- }
144- else throw("fail to cast into List[Any]")
145- }
121+func ad (ae,af,ag,ah,ai) = makeString(["%b%d%d%d%b", toString(ae), toString(af), toString(ag), toString(ah), toString(ai)], d)
146122
147123
148-func ao (am) = {
149- let c = am
150- if ($isInstanceOf(c, "Int"))
151- then {
152- let ap = c
153- ap
154- }
155- else throw("fail to cast into Int")
156- }
124+func aj (ak,al,am,an,ao,ap,aq) = makeString_2C(["%s%s%d%d%d%d%s", ak, al, toString(am), toString(an), toString(ao), toString(ap), aq], d)
157125
158126
159-func aq (ar,as,at,au,av) = makeString(["%b%d%d%d%b", toString(ar), toString(as), toString(at), toString(au), toString(av)], d)
127+let ar = 0
160128
129+let as = 1
161130
162-func aw (ax,ay,az,aA,aB,aC,aD) = makeString_2C(["%s%s%d%d%d%d%s", ax, ay, toString(az), toString(aA), toString(aB), toString(aC), aD], d)
163-
164-
165-let aE = 0
166-
167-let aF = 1
168-
169-let aG = 0
170-
171-let aH = 1
172-
173-let aI = 2
174-
175-let aJ = 3
176-
177-func aK (aL) = {
178- let c = aL
131+func at (au) = {
132+ let c = au
179133 if (("S" == c))
180- then k
134+ then f
181135 else if (("M" == c))
182- then l
136+ then g
183137 else if (("L" == c))
184- then m
138+ then h
185139 else if (("XL" == c))
186- then n
140+ then i
187141 else if (("XXL" == c))
188- then o
142+ then j
189143 else throw("Unknown land size")
190144 }
191145
192146
193-func aM (aN) = {
194- let aO = split(valueOrElse(getString(R, ai()), "0_0_0_0_0_0"), "_")
195- func aP (aQ,aR) = (aQ + parseIntValue(aR))
147+func av (aw) = {
148+ let ax = split(valueOrElse(getString(z, C()), "0_0_0_0_0_0"), "_")
149+ func ay (az,aA) = (az + parseIntValue(aA))
196150
197- let aS = {
198- let aT = aO
199- let aU = size(aT)
200- let aV = 0
201- func aW (aX,aY) = if ((aY >= aU))
202- then aX
203- else aP(aX, aT[aY])
151+ let aB = {
152+ let aC = ax
153+ let aD = size(aC)
154+ let aE = 0
155+ func aF (aG,aH) = if ((aH >= aD))
156+ then aG
157+ else ay(aG, aC[aH])
204158
205- func aZ (aX,aY) = if ((aY >= aU))
206- then aX
159+ func aI (aG,aH) = if ((aH >= aD))
160+ then aG
207161 else throw("List size exceeds 6")
208162
209- aZ(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6)
163+ aI(aF(aF(aF(aF(aF(aF(aE, 0), 1), 2), 3), 4), 5), 6)
210164 }
211- let ba = if ((aN == ""))
165+ let aJ = if ((aw == ""))
212166 then 0
213167 else {
214- let bb = getString(R, aj(aN))
215- let bc = if (isDefined(bb))
216- then split_51C(value(bb), "_")
168+ let aK = getString(z, A(aw))
169+ let aL = if (isDefined(aK))
170+ then split_51C(value(aK), "_")
217171 else nil
218- func bd (aQ,be) = {
219- let bf = value(assetInfo(fromBase58String(be)))
220- let aL = split(bf.description, "_")[aH]
221- (aQ + aK(aL))
172+ func aM (az,aN) = {
173+ let aO = value(assetInfo(fromBase58String(aN)))
174+ let au = split(aO.description, "_")[k]
175+ (az + at(au))
222176 }
223177
224- let aT = bc
225- let aU = size(aT)
226- let aV = 0
227- func bg (aX,aY) = if ((aY >= aU))
228- then aX
229- else bd(aX, aT[aY])
178+ let aC = aL
179+ let aD = size(aC)
180+ let aE = 0
181+ func aP (aG,aH) = if ((aH >= aD))
182+ then aG
183+ else aM(aG, aC[aH])
230184
231- func bh (aX,aY) = if ((aY >= aU))
232- then aX
185+ func aQ (aG,aH) = if ((aH >= aD))
186+ then aG
233187 else throw("List size exceeds 100")
234188
235- bh(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
189+ aQ(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aE, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
236190 }
237-[aS, ba]
191+[aB, aJ]
238192 }
239193
240194
241-func bi (X,bj,bk,bl,bm,bn,bo) = {
242- func bp (aQ,bq) = {
243- let P = value(indexOf(bj, bq))
244- let br = if (bk)
245- then if ((P == bn))
246- then bo
247- else E(Z(X, P), 0)
248- else if ((P == value(bl)))
249- then bm
250- else if ((P == bn))
251- then bo
252- else E(Z(X, P), 0)
253- if ((aQ._2 > br))
254- then aQ
255- else $Tuple2(P, br)
195+func aR (U,aS,aT,aU,aV,aW,aX) = {
196+ func aY (az,aZ) = {
197+ let x = value(indexOf(aS, aZ))
198+ let ba = if (aT)
199+ then if ((x == aW))
200+ then aX
201+ else o(W(U, x), 0)
202+ else if ((x == value(aU)))
203+ then aV
204+ else if ((x == aW))
205+ then aX
206+ else o(W(U, x), 0)
207+ if ((az._2 > ba))
208+ then az
209+ else $Tuple2(x, ba)
256210 }
257211
258- let aT = bj
259- let aU = size(aT)
260- let aV = $Tuple2(0, 0)
261- func aW (aX,aY) = if ((aY >= aU))
262- then aX
263- else bp(aX, aT[aY])
212+ let aC = aS
213+ let aD = size(aC)
214+ let aE = $Tuple2(0, 0)
215+ func aF (aG,aH) = if ((aH >= aD))
216+ then aG
217+ else aY(aG, aC[aH])
264218
265- func aZ (aX,aY) = if ((aY >= aU))
266- then aX
219+ func aI (aG,aH) = if ((aH >= aD))
220+ then aG
267221 else throw("List size exceeds 10")
268222
269- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
223+ aI(aF(aF(aF(aF(aF(aF(aF(aF(aF(aF(aE, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
270224 }
271225
272226
273-func bs (bt,bu,bv,bw) = makeString(["%b%d%d%d%b", toString(bu), toString(bv._1), toString(bv._2), toString(bw), bt], d)
227+func bb (bc,bd,be,bf) = makeString(["%b%d%d%d%b", toString(bd), toString(be._1), toString(be._2), toString(bf), bc], d)
274228
275229
276-@Callable(ap)
277-func constructorV1 (bx,by) = if ((ap.caller != this))
230+@Callable(bg)
231+func constructorV1 (bh,bi) = if ((bg.caller != this))
278232 then throw("Permission denied")
279- else [StringEntry(K(), bx), IntegerEntry(T(), by)]
233+ else [StringEntry(s(), bh), IntegerEntry(Q(), bi)]
280234
281235
282236
283-@Callable(ap)
284-func castVote (X,bz) = {
285- let bA = toString(ap.caller)
286- let bB = split(B(this, W(X)), d)
287- if ((bB[A] == "true"))
237+@Callable(bg)
238+func castVote (U,bj) = {
239+ let bk = toString(bg.caller)
240+ let bl = split(l(this, T(U)), d)
241+ if ((bl[P] == "true"))
288242 then throw("Voting is canceled by team")
289243 else {
290- let bC = split_4C(B(this, Y(X)), d)
291- let bD = parseIntValue(bC[s])
292- let bE = parseIntValue(bC[t])
293- let bF = lastBlock.timestamp
294- if ((bD > bF))
244+ let bm = split_4C(l(this, V(U)), d)
245+ let bn = parseIntValue(bm[K])
246+ let bo = parseIntValue(bm[L])
247+ let bp = lastBlock.timestamp
248+ if ((bn > bp))
295249 then throw("Voting not started yet")
296- else if ((bF >= bE))
250+ else if ((bp >= bo))
297251 then throw("Voting already finished")
298252 else {
299- let bG = split(bC[v], e)
300- let bH = size(bG)
301- if ((1 >= bH))
253+ let bq = split(bm[N], F)
254+ let br = size(bq)
255+ if ((1 >= br))
302256 then throw("Too few choices to vote")
303- else if ((bz >= bH))
304- then throw(("Unknown choice! Must be 0.." + toString((bH - 1))))
257+ else if ((bj >= br))
258+ then throw(("Unknown choice! Must be 0.." + toString((br - 1))))
305259 else {
306- let bI = aM(bA)
307- let bJ = bI[aF]
308- if ((0 >= bJ))
260+ let bs = av(bk)
261+ let bt = bs[as]
262+ if ((0 >= bt))
309263 then throw("You need staked lands to vote")
310264 else {
311- let bK = bI[aE]
312- let bl = getInteger(ad(X, bA))
313- let bL = if (!(isDefined(bl)))
265+ let bu = bs[ar]
266+ let aU = getInteger(Z(U, bk))
267+ let bv = if (!(isDefined(aU)))
314268 then 0
315- else E(ab(X, bA), 0)
316- let bM = if (isDefined(bl))
317- then E(Z(X, value(bl)), 0)
269+ else o(Y(U, bk), 0)
270+ let bw = if (isDefined(aU))
271+ then o(W(U, value(aU)), 0)
318272 else 0
319- let bN = E(Z(X, bz), 0)
320- let bO = parseIntValue(bB[z])
321- let bP = if (!(isDefined(bl)))
273+ let bx = o(W(U, bj), 0)
274+ let by = parseIntValue(bl[O])
275+ let bz = if (!(isDefined(aU)))
322276 then 0
323- else ((bM - bL) + (if ((value(bl) == bz))
324- then bJ
277+ else ((bw - bv) + (if ((value(aU) == bj))
278+ then bt
325279 else 0))
326- let bo = if (if (isDefined(bl))
327- then (value(bl) == bz)
280+ let aX = if (if (isDefined(aU))
281+ then (value(aU) == bj)
328282 else false)
329- then bP
330- else (bN + bJ)
331- let bQ = ((bO - bL) + bJ)
332- let bR = (bQ >= parseIntValue(bC[u]))
333- let bS = E(af(X), 0)
334- let bT = E(ag(), 0)
335- let bU = ((getIntegerValue(U()) - valueOrElse(getInteger(V()), j)) + 1)
336- let bV = if ((bL == 0))
283+ then bz
284+ else (bx + bt)
285+ let bA = ((by - bv) + bt)
286+ let bB = (bA >= parseIntValue(bm[M]))
287+ let bC = o(aa(U), 0)
288+ let bD = o(ab(), 0)
289+ let bE = ((getIntegerValue(R()) - valueOrElse(getInteger(S()), J)) + 1)
290+ let bF = if ((bv == 0))
337291 then 1
338292 else 0
339- let bW = (bT + fraction(bV, i, bU))
340- let bX = E(ah(), 0)
341- let bY = (bX + ((bJ - bL) / bU))
342- let bk = if (!(isDefined(bl)))
293+ let bG = (bD + fraction(bF, e, bE))
294+ let bH = o(ac(), 0)
295+ let bI = (bH + ((bt - bv) / bE))
296+ let aT = if (!(isDefined(aU)))
343297 then true
344- else (value(bl) == bz)
345- let bm = if (bk)
298+ else (value(aU) == bj)
299+ let aV = if (aT)
346300 then nil
347- else [IntegerEntry(Z(X, value(bl)), bP)]
348- let bZ = bi(X, bG, bk, bl, bP, bz, bo)
349- let ca = max([bE, E(ae(bA), 0)])
350- $Tuple2(([IntegerEntry(ad(X, bA), bz), IntegerEntry(ab(X, bA), bJ), IntegerEntry(Z(X, bz), bo), IntegerEntry(af(X), (bS + bV)), IntegerEntry(ae(bA), ca), IntegerEntry(ag(), bW), IntegerEntry(ah(), bY), StringEntry(W(X), bs(bB[A], bR, bZ, bQ))] ++ bm), unit)
301+ else [IntegerEntry(W(U, value(aU)), bz)]
302+ let bJ = aR(U, bq, aT, aU, bz, bj, aX)
303+ let bK = max([bo, o(D(bk), 0)])
304+ $Tuple2(([IntegerEntry(Z(U, bk), bj), IntegerEntry(Y(U, bk), bt), IntegerEntry(W(U, bj), aX), IntegerEntry(aa(U), (bC + bF)), IntegerEntry(D(bk), bK), IntegerEntry(ab(), bG), IntegerEntry(ac(), bI), StringEntry(T(U), bb(bl[P], bB, bJ, bA))] ++ aV), unit)
351305 }
352306 }
353307 }
356310
357311
358312
359-@Callable(ap)
360-func initiateVoting (ay,aA,aB,bj) = if ((ap.caller != this))
313+@Callable(bg)
314+func initiateVoting (al,an,ao,aS) = if ((bg.caller != this))
361315 then throw("Permission denied")
362- else if ((size(ap.payments) != 0))
316+ else if ((size(bg.payments) != 0))
363317 then throw("governance doesn't require any payments")
364318 else {
365- let ax = toBase58String(ap.transactionId)
366- if ((ay == ""))
319+ let ak = toBase58String(bg.transactionId)
320+ if ((al == ""))
367321 then throw("Title is empty")
368- else if ((size(ay) > g))
322+ else if ((size(al) > H))
369323 then throw("Too long title")
370324 else {
371- let az = lastBlock.timestamp
372- if ((az > aA))
373- then throw(((("votingStartTime=" + toString(aA)) + " < proposalTime=") + toString(az)))
374- else if ((aA > aB))
375- then throw(((("votingEndTime=" + toString(aB)) + " < votingStartTime=") + toString(aA)))
376- else if (((aB - aA) > h))
377- then throw(((("Voting period exceeds max: " + toString((aB - aA))) + " > ") + toString(h)))
378- else if ((1 >= size(bj)))
325+ let am = lastBlock.timestamp
326+ if ((am > an))
327+ then throw(((("votingStartTime=" + toString(an)) + " < proposalTime=") + toString(am)))
328+ else if ((an > ao))
329+ then throw(((("votingEndTime=" + toString(ao)) + " < votingStartTime=") + toString(an)))
330+ else if (((ao - an) > I))
331+ then throw(((("Voting period exceeds max: " + toString((ao - an))) + " > ") + toString(I)))
332+ else if ((1 >= size(aS)))
379333 then throw("Too few choices to vote")
380334 else {
381- let bI = aM("")
382- let cb = bI[aE]
383- let cc = E(T(), f)
384- let cd = fraction(cc, cb, i)
385- let X = (E(U(), 0) + 1)
386- let ce = makeString(bj, e)
387- $Tuple2([IntegerEntry(U(), X), StringEntry(W(X), aq(false, 0, 0, 0, false)), StringEntry(Y(X), aw(ax, toBase16String(toBytes(ay)), az, aA, aB, cd, ce))], ax)
335+ let bs = av("")
336+ let bL = bs[ar]
337+ let bM = o(Q(), G)
338+ let bN = fraction(bM, bL, e)
339+ let U = (o(R(), 0) + 1)
340+ let bO = makeString(aS, F)
341+ $Tuple2([IntegerEntry(R(), U), StringEntry(T(U), ad(false, 0, 0, 0, false)), StringEntry(V(U), aj(ak, toBase16String(toBytes(al)), am, an, ao, bN, bO))], ak)
388342 }
389343 }
390344 }
391345
392346
393347
394-@Callable(ap)
395-func cancelVoting (X) = if ((ap.caller != this))
348+@Callable(bg)
349+func cancelVoting (U) = if ((bg.caller != this))
396350 then throw("not authorized")
397351 else {
398- let cf = B(this, W(X))
399- let cg = ((take(cf, value(lastIndexOf(cf, d))) + d) + "true")
400- $Tuple2([StringEntry(W(X), cg)], unit)
352+ let bP = l(this, T(U))
353+ let bQ = ((take(bP, value(lastIndexOf(bP, d))) + d) + "true")
354+ $Tuple2([StringEntry(T(U), bQ)], unit)
401355 }
402356
403357
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = take(drop(this.bytes, 1), 1)
55
66 let b = {
77 let c = a
88 if ((base58'2W' == c))
99 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
1010 else if ((base58'2T' == c))
1111 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
1212 else throw("Unknown chain")
1313 }
1414
1515 let d = "__"
1616
17-let e = ":"
17+let e = 1000000
1818
19-let f = 500000
19+let f = 25
2020
21-let g = 250
21+let g = 100
2222
23-let h = 1209600000
23+let h = 225
2424
25-let i = 1000000
25+let i = 400
2626
27-let j = 1
27+let j = 625
2828
29-let k = 25
29+let k = 1
3030
31-let l = 100
32-
33-let m = 225
34-
35-let n = 400
36-
37-let o = 625
38-
39-let p = 1
40-
41-let q = 2
42-
43-let r = 3
44-
45-let s = 4
46-
47-let t = 5
48-
49-let u = 6
50-
51-let v = 7
52-
53-let w = 1
54-
55-let x = 2
56-
57-let y = 3
58-
59-let z = 4
60-
61-let A = 5
62-
63-func B (C,D) = valueOrErrorMessage(getString(C, D), makeString(["mandatory ", toString(C), ".", D, " is not defined"], ""))
31+func l (m,n) = valueOrErrorMessage(getString(m, n), makeString(["mandatory ", toString(m), ".", n, " is not defined"], ""))
6432
6533
66-func E (D,F) = valueOrElse(getInteger(this, D), F)
34+func o (n,p) = valueOrElse(getInteger(this, n), p)
6735
6836
69-let G = 1
37+let q = 1
7038
71-let H = 2
72-
73-let I = 3
74-
75-func J () = "%s__restConfig"
39+func r () = "%s__restConfig"
7640
7741
78-func K () = "%s__restAddr"
42+func s () = "%s__restAddr"
7943
8044
81-func L (M) = split_4C(B(M, J()), d)
45+func t (u) = split_4C(l(u, r()), d)
8246
8347
84-func N (O,P) = valueOrErrorMessage(addressFromString(O[P]), ("Rest cfg doesn't contain address at index " + toString(P)))
48+func v (w,x) = valueOrErrorMessage(addressFromString(w[x]), ("Rest cfg doesn't contain address at index " + toString(x)))
8549
8650
87-let Q = addressFromStringValue(valueOrElse(getString(this, K()), b))
51+let y = addressFromStringValue(valueOrElse(getString(this, s()), b))
8852
89-let O = L(Q)
53+let w = t(y)
9054
91-let R = N(O, G)
55+let z = v(w, q)
9256
93-let S = N(O, H)
94-
95-func T () = "%s__quorumRequired"
57+func A (B) = ("stakedLandsByOwner_" + B)
9658
9759
98-func U () = "%s__proposalId"
60+func C () = "resTypesProportions"
9961
10062
101-func V () = "%s__firstProposalId"
63+func D (E) = ("%s%s__userGwlReleaseTime__" + E)
10264
10365
104-func W (X) = ("%s%d__proposalStatusData__" + toString(X))
66+let F = ":"
67+
68+let G = 500000
69+
70+let H = 250
71+
72+let I = 1209600000
73+
74+let J = 1
75+
76+let K = 4
77+
78+let L = 5
79+
80+let M = 6
81+
82+let N = 7
83+
84+let O = 4
85+
86+let P = 5
87+
88+func Q () = "%s__quorumRequired"
10589
10690
107-func Y (X) = ("%s%d__proposalData__" + toString(X))
91+func R () = "%s__proposalId"
10892
10993
110-func Z (X,aa) = makeString(["%s%d%d", "votesByOpt", toString(X), toString(aa)], d)
94+func S () = "%s__firstProposalId"
11195
11296
113-func ab (X,ac) = makeString(["%s%d%s", "votesByUser", toString(X), ac], d)
97+func T (U) = ("%s%d__proposalStatusData__" + toString(U))
11498
11599
116-func ad (X,ac) = makeString(["%s%d%s", "optionByUser", toString(X), ac], d)
100+func V (U) = ("%s%d__proposalData__" + toString(U))
117101
118102
119-func ae (ac) = ("%s%s__userGwlReleaseTime__" + ac)
103+func W (U,X) = makeString(["%s%d%d", "votesByOpt", toString(U), toString(X)], d)
120104
121105
122-func af (X) = ("%s%d__numVoters__" + toString(X))
106+func Y (U,E) = makeString(["%s%d%s", "votesByUser", toString(U), E], d)
123107
124108
125-func ag () = "%s%s%s__stats__avg__uniqueVoters"
109+func Z (U,E) = makeString(["%s%d%s", "optionByUser", toString(U), E], d)
126110
127111
128-func ah () = "%s%s%s__stats__avg__gwlVoted"
112+func aa (U) = ("%s%d__numVoters__" + toString(U))
129113
130114
131-func ai () = "resTypesProportions"
115+func ab () = "%s%s%s__stats__avg__uniqueVoters"
132116
133117
134-func aj (ak) = ("stakedLandsByOwner_" + ak)
118+func ac () = "%s%s%s__stats__avg__gwlVoted"
135119
136120
137-func al (am) = {
138- let c = am
139- if ($isInstanceOf(c, "List[Any]"))
140- then {
141- let an = c
142- an
143- }
144- else throw("fail to cast into List[Any]")
145- }
121+func ad (ae,af,ag,ah,ai) = makeString(["%b%d%d%d%b", toString(ae), toString(af), toString(ag), toString(ah), toString(ai)], d)
146122
147123
148-func ao (am) = {
149- let c = am
150- if ($isInstanceOf(c, "Int"))
151- then {
152- let ap = c
153- ap
154- }
155- else throw("fail to cast into Int")
156- }
124+func aj (ak,al,am,an,ao,ap,aq) = makeString_2C(["%s%s%d%d%d%d%s", ak, al, toString(am), toString(an), toString(ao), toString(ap), aq], d)
157125
158126
159-func aq (ar,as,at,au,av) = makeString(["%b%d%d%d%b", toString(ar), toString(as), toString(at), toString(au), toString(av)], d)
127+let ar = 0
160128
129+let as = 1
161130
162-func aw (ax,ay,az,aA,aB,aC,aD) = makeString_2C(["%s%s%d%d%d%d%s", ax, ay, toString(az), toString(aA), toString(aB), toString(aC), aD], d)
163-
164-
165-let aE = 0
166-
167-let aF = 1
168-
169-let aG = 0
170-
171-let aH = 1
172-
173-let aI = 2
174-
175-let aJ = 3
176-
177-func aK (aL) = {
178- let c = aL
131+func at (au) = {
132+ let c = au
179133 if (("S" == c))
180- then k
134+ then f
181135 else if (("M" == c))
182- then l
136+ then g
183137 else if (("L" == c))
184- then m
138+ then h
185139 else if (("XL" == c))
186- then n
140+ then i
187141 else if (("XXL" == c))
188- then o
142+ then j
189143 else throw("Unknown land size")
190144 }
191145
192146
193-func aM (aN) = {
194- let aO = split(valueOrElse(getString(R, ai()), "0_0_0_0_0_0"), "_")
195- func aP (aQ,aR) = (aQ + parseIntValue(aR))
147+func av (aw) = {
148+ let ax = split(valueOrElse(getString(z, C()), "0_0_0_0_0_0"), "_")
149+ func ay (az,aA) = (az + parseIntValue(aA))
196150
197- let aS = {
198- let aT = aO
199- let aU = size(aT)
200- let aV = 0
201- func aW (aX,aY) = if ((aY >= aU))
202- then aX
203- else aP(aX, aT[aY])
151+ let aB = {
152+ let aC = ax
153+ let aD = size(aC)
154+ let aE = 0
155+ func aF (aG,aH) = if ((aH >= aD))
156+ then aG
157+ else ay(aG, aC[aH])
204158
205- func aZ (aX,aY) = if ((aY >= aU))
206- then aX
159+ func aI (aG,aH) = if ((aH >= aD))
160+ then aG
207161 else throw("List size exceeds 6")
208162
209- aZ(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6)
163+ aI(aF(aF(aF(aF(aF(aF(aE, 0), 1), 2), 3), 4), 5), 6)
210164 }
211- let ba = if ((aN == ""))
165+ let aJ = if ((aw == ""))
212166 then 0
213167 else {
214- let bb = getString(R, aj(aN))
215- let bc = if (isDefined(bb))
216- then split_51C(value(bb), "_")
168+ let aK = getString(z, A(aw))
169+ let aL = if (isDefined(aK))
170+ then split_51C(value(aK), "_")
217171 else nil
218- func bd (aQ,be) = {
219- let bf = value(assetInfo(fromBase58String(be)))
220- let aL = split(bf.description, "_")[aH]
221- (aQ + aK(aL))
172+ func aM (az,aN) = {
173+ let aO = value(assetInfo(fromBase58String(aN)))
174+ let au = split(aO.description, "_")[k]
175+ (az + at(au))
222176 }
223177
224- let aT = bc
225- let aU = size(aT)
226- let aV = 0
227- func bg (aX,aY) = if ((aY >= aU))
228- then aX
229- else bd(aX, aT[aY])
178+ let aC = aL
179+ let aD = size(aC)
180+ let aE = 0
181+ func aP (aG,aH) = if ((aH >= aD))
182+ then aG
183+ else aM(aG, aC[aH])
230184
231- func bh (aX,aY) = if ((aY >= aU))
232- then aX
185+ func aQ (aG,aH) = if ((aH >= aD))
186+ then aG
233187 else throw("List size exceeds 100")
234188
235- bh(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(bg(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
189+ aQ(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aP(aE, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
236190 }
237-[aS, ba]
191+[aB, aJ]
238192 }
239193
240194
241-func bi (X,bj,bk,bl,bm,bn,bo) = {
242- func bp (aQ,bq) = {
243- let P = value(indexOf(bj, bq))
244- let br = if (bk)
245- then if ((P == bn))
246- then bo
247- else E(Z(X, P), 0)
248- else if ((P == value(bl)))
249- then bm
250- else if ((P == bn))
251- then bo
252- else E(Z(X, P), 0)
253- if ((aQ._2 > br))
254- then aQ
255- else $Tuple2(P, br)
195+func aR (U,aS,aT,aU,aV,aW,aX) = {
196+ func aY (az,aZ) = {
197+ let x = value(indexOf(aS, aZ))
198+ let ba = if (aT)
199+ then if ((x == aW))
200+ then aX
201+ else o(W(U, x), 0)
202+ else if ((x == value(aU)))
203+ then aV
204+ else if ((x == aW))
205+ then aX
206+ else o(W(U, x), 0)
207+ if ((az._2 > ba))
208+ then az
209+ else $Tuple2(x, ba)
256210 }
257211
258- let aT = bj
259- let aU = size(aT)
260- let aV = $Tuple2(0, 0)
261- func aW (aX,aY) = if ((aY >= aU))
262- then aX
263- else bp(aX, aT[aY])
212+ let aC = aS
213+ let aD = size(aC)
214+ let aE = $Tuple2(0, 0)
215+ func aF (aG,aH) = if ((aH >= aD))
216+ then aG
217+ else aY(aG, aC[aH])
264218
265- func aZ (aX,aY) = if ((aY >= aU))
266- then aX
219+ func aI (aG,aH) = if ((aH >= aD))
220+ then aG
267221 else throw("List size exceeds 10")
268222
269- aZ(aW(aW(aW(aW(aW(aW(aW(aW(aW(aW(aV, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
223+ aI(aF(aF(aF(aF(aF(aF(aF(aF(aF(aF(aE, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
270224 }
271225
272226
273-func bs (bt,bu,bv,bw) = makeString(["%b%d%d%d%b", toString(bu), toString(bv._1), toString(bv._2), toString(bw), bt], d)
227+func bb (bc,bd,be,bf) = makeString(["%b%d%d%d%b", toString(bd), toString(be._1), toString(be._2), toString(bf), bc], d)
274228
275229
276-@Callable(ap)
277-func constructorV1 (bx,by) = if ((ap.caller != this))
230+@Callable(bg)
231+func constructorV1 (bh,bi) = if ((bg.caller != this))
278232 then throw("Permission denied")
279- else [StringEntry(K(), bx), IntegerEntry(T(), by)]
233+ else [StringEntry(s(), bh), IntegerEntry(Q(), bi)]
280234
281235
282236
283-@Callable(ap)
284-func castVote (X,bz) = {
285- let bA = toString(ap.caller)
286- let bB = split(B(this, W(X)), d)
287- if ((bB[A] == "true"))
237+@Callable(bg)
238+func castVote (U,bj) = {
239+ let bk = toString(bg.caller)
240+ let bl = split(l(this, T(U)), d)
241+ if ((bl[P] == "true"))
288242 then throw("Voting is canceled by team")
289243 else {
290- let bC = split_4C(B(this, Y(X)), d)
291- let bD = parseIntValue(bC[s])
292- let bE = parseIntValue(bC[t])
293- let bF = lastBlock.timestamp
294- if ((bD > bF))
244+ let bm = split_4C(l(this, V(U)), d)
245+ let bn = parseIntValue(bm[K])
246+ let bo = parseIntValue(bm[L])
247+ let bp = lastBlock.timestamp
248+ if ((bn > bp))
295249 then throw("Voting not started yet")
296- else if ((bF >= bE))
250+ else if ((bp >= bo))
297251 then throw("Voting already finished")
298252 else {
299- let bG = split(bC[v], e)
300- let bH = size(bG)
301- if ((1 >= bH))
253+ let bq = split(bm[N], F)
254+ let br = size(bq)
255+ if ((1 >= br))
302256 then throw("Too few choices to vote")
303- else if ((bz >= bH))
304- then throw(("Unknown choice! Must be 0.." + toString((bH - 1))))
257+ else if ((bj >= br))
258+ then throw(("Unknown choice! Must be 0.." + toString((br - 1))))
305259 else {
306- let bI = aM(bA)
307- let bJ = bI[aF]
308- if ((0 >= bJ))
260+ let bs = av(bk)
261+ let bt = bs[as]
262+ if ((0 >= bt))
309263 then throw("You need staked lands to vote")
310264 else {
311- let bK = bI[aE]
312- let bl = getInteger(ad(X, bA))
313- let bL = if (!(isDefined(bl)))
265+ let bu = bs[ar]
266+ let aU = getInteger(Z(U, bk))
267+ let bv = if (!(isDefined(aU)))
314268 then 0
315- else E(ab(X, bA), 0)
316- let bM = if (isDefined(bl))
317- then E(Z(X, value(bl)), 0)
269+ else o(Y(U, bk), 0)
270+ let bw = if (isDefined(aU))
271+ then o(W(U, value(aU)), 0)
318272 else 0
319- let bN = E(Z(X, bz), 0)
320- let bO = parseIntValue(bB[z])
321- let bP = if (!(isDefined(bl)))
273+ let bx = o(W(U, bj), 0)
274+ let by = parseIntValue(bl[O])
275+ let bz = if (!(isDefined(aU)))
322276 then 0
323- else ((bM - bL) + (if ((value(bl) == bz))
324- then bJ
277+ else ((bw - bv) + (if ((value(aU) == bj))
278+ then bt
325279 else 0))
326- let bo = if (if (isDefined(bl))
327- then (value(bl) == bz)
280+ let aX = if (if (isDefined(aU))
281+ then (value(aU) == bj)
328282 else false)
329- then bP
330- else (bN + bJ)
331- let bQ = ((bO - bL) + bJ)
332- let bR = (bQ >= parseIntValue(bC[u]))
333- let bS = E(af(X), 0)
334- let bT = E(ag(), 0)
335- let bU = ((getIntegerValue(U()) - valueOrElse(getInteger(V()), j)) + 1)
336- let bV = if ((bL == 0))
283+ then bz
284+ else (bx + bt)
285+ let bA = ((by - bv) + bt)
286+ let bB = (bA >= parseIntValue(bm[M]))
287+ let bC = o(aa(U), 0)
288+ let bD = o(ab(), 0)
289+ let bE = ((getIntegerValue(R()) - valueOrElse(getInteger(S()), J)) + 1)
290+ let bF = if ((bv == 0))
337291 then 1
338292 else 0
339- let bW = (bT + fraction(bV, i, bU))
340- let bX = E(ah(), 0)
341- let bY = (bX + ((bJ - bL) / bU))
342- let bk = if (!(isDefined(bl)))
293+ let bG = (bD + fraction(bF, e, bE))
294+ let bH = o(ac(), 0)
295+ let bI = (bH + ((bt - bv) / bE))
296+ let aT = if (!(isDefined(aU)))
343297 then true
344- else (value(bl) == bz)
345- let bm = if (bk)
298+ else (value(aU) == bj)
299+ let aV = if (aT)
346300 then nil
347- else [IntegerEntry(Z(X, value(bl)), bP)]
348- let bZ = bi(X, bG, bk, bl, bP, bz, bo)
349- let ca = max([bE, E(ae(bA), 0)])
350- $Tuple2(([IntegerEntry(ad(X, bA), bz), IntegerEntry(ab(X, bA), bJ), IntegerEntry(Z(X, bz), bo), IntegerEntry(af(X), (bS + bV)), IntegerEntry(ae(bA), ca), IntegerEntry(ag(), bW), IntegerEntry(ah(), bY), StringEntry(W(X), bs(bB[A], bR, bZ, bQ))] ++ bm), unit)
301+ else [IntegerEntry(W(U, value(aU)), bz)]
302+ let bJ = aR(U, bq, aT, aU, bz, bj, aX)
303+ let bK = max([bo, o(D(bk), 0)])
304+ $Tuple2(([IntegerEntry(Z(U, bk), bj), IntegerEntry(Y(U, bk), bt), IntegerEntry(W(U, bj), aX), IntegerEntry(aa(U), (bC + bF)), IntegerEntry(D(bk), bK), IntegerEntry(ab(), bG), IntegerEntry(ac(), bI), StringEntry(T(U), bb(bl[P], bB, bJ, bA))] ++ aV), unit)
351305 }
352306 }
353307 }
354308 }
355309 }
356310
357311
358312
359-@Callable(ap)
360-func initiateVoting (ay,aA,aB,bj) = if ((ap.caller != this))
313+@Callable(bg)
314+func initiateVoting (al,an,ao,aS) = if ((bg.caller != this))
361315 then throw("Permission denied")
362- else if ((size(ap.payments) != 0))
316+ else if ((size(bg.payments) != 0))
363317 then throw("governance doesn't require any payments")
364318 else {
365- let ax = toBase58String(ap.transactionId)
366- if ((ay == ""))
319+ let ak = toBase58String(bg.transactionId)
320+ if ((al == ""))
367321 then throw("Title is empty")
368- else if ((size(ay) > g))
322+ else if ((size(al) > H))
369323 then throw("Too long title")
370324 else {
371- let az = lastBlock.timestamp
372- if ((az > aA))
373- then throw(((("votingStartTime=" + toString(aA)) + " < proposalTime=") + toString(az)))
374- else if ((aA > aB))
375- then throw(((("votingEndTime=" + toString(aB)) + " < votingStartTime=") + toString(aA)))
376- else if (((aB - aA) > h))
377- then throw(((("Voting period exceeds max: " + toString((aB - aA))) + " > ") + toString(h)))
378- else if ((1 >= size(bj)))
325+ let am = lastBlock.timestamp
326+ if ((am > an))
327+ then throw(((("votingStartTime=" + toString(an)) + " < proposalTime=") + toString(am)))
328+ else if ((an > ao))
329+ then throw(((("votingEndTime=" + toString(ao)) + " < votingStartTime=") + toString(an)))
330+ else if (((ao - an) > I))
331+ then throw(((("Voting period exceeds max: " + toString((ao - an))) + " > ") + toString(I)))
332+ else if ((1 >= size(aS)))
379333 then throw("Too few choices to vote")
380334 else {
381- let bI = aM("")
382- let cb = bI[aE]
383- let cc = E(T(), f)
384- let cd = fraction(cc, cb, i)
385- let X = (E(U(), 0) + 1)
386- let ce = makeString(bj, e)
387- $Tuple2([IntegerEntry(U(), X), StringEntry(W(X), aq(false, 0, 0, 0, false)), StringEntry(Y(X), aw(ax, toBase16String(toBytes(ay)), az, aA, aB, cd, ce))], ax)
335+ let bs = av("")
336+ let bL = bs[ar]
337+ let bM = o(Q(), G)
338+ let bN = fraction(bM, bL, e)
339+ let U = (o(R(), 0) + 1)
340+ let bO = makeString(aS, F)
341+ $Tuple2([IntegerEntry(R(), U), StringEntry(T(U), ad(false, 0, 0, 0, false)), StringEntry(V(U), aj(ak, toBase16String(toBytes(al)), am, an, ao, bN, bO))], ak)
388342 }
389343 }
390344 }
391345
392346
393347
394-@Callable(ap)
395-func cancelVoting (X) = if ((ap.caller != this))
348+@Callable(bg)
349+func cancelVoting (U) = if ((bg.caller != this))
396350 then throw("not authorized")
397351 else {
398- let cf = B(this, W(X))
399- let cg = ((take(cf, value(lastIndexOf(cf, d))) + d) + "true")
400- $Tuple2([StringEntry(W(X), cg)], unit)
352+ let bP = l(this, T(U))
353+ let bQ = ((take(bP, value(lastIndexOf(bP, d))) + d) + "true")
354+ $Tuple2([StringEntry(T(U), bQ)], unit)
401355 }
402356
403357

github/deemru/w8io/c3f4982 
271.75 ms