tx · GXBxKLds7wrx3RYiwQwgGZzTTXyd8GC5LxTjSgyPQNVt

3P975LUuqc7uBPiSxp3nemf2FZh62zfirSh:  -0.02200000 Waves

2023.01.22 20:41 [3481984] smart account 3P975LUuqc7uBPiSxp3nemf2FZh62zfirSh > SELF 0.00000000 Waves

{ "type": 13, "id": "GXBxKLds7wrx3RYiwQwgGZzTTXyd8GC5LxTjSgyPQNVt", "fee": 2200000, "feeAssetId": null, "timestamp": 1674409351611, "version": 2, "chainId": 87, "sender": "3P975LUuqc7uBPiSxp3nemf2FZh62zfirSh", "senderPublicKey": "6Dx2LuCqezyDYjt3zMEL6WRrs5oaor6aK3L6QouPMP1b", "proofs": [ "2GsXWYk7HEidGZJrFKAcjURM7qkfY2mdni6Jt4nFRvB81igwmPmWzEgvBzu65u26Gptx5phncQERXSJj87QPNmyY" ], "script": "base64:BgIjCAISABIDCgEIEgMKAQgSAwoBCBIECgIICBIECgIICBIAEgAPAA9jcmVhdGlvbkFkZHJlc3MJAQdBZGRyZXNzAQEaAVeT3cTSF+cgCv33IRJO8PB2ZyaDA3jUXEwAC1VTRFRBc3NldElkASAelAcTUnahJZX9yGGogl8Qf986Tym7/JpGP1r9Nk+fkQAOdG90YWxTdGFrZWRLZXkCDHRvdGFsX3N0YWtlZAANdG90YWxQb3dlcktleQILdG90YWxfcG93ZXIAEnRvdGFsU3BlbnRQb3dlcktleQIQdG90YWxfc3BlbnRQb3dlcgARdm90ZVBvd2VyTGltaXRLZXkCEFZPVEVfUE9XRVJfTElNSVQAFmN1cnJlbnRSZXdvcmRzUm91bmRLZXkCFWN1cnJlbnRfcmV3b3Jkc19yb3VuZAAYZmluYWxWb3RpbmdDYW5kaWRhdGVzS2V5AhhmaW5hbF92b2l0aW5nX2NhbmRpZGF0ZXMAFWFsbFN0YWtlZEFkZHJlc3Nlc0tleQIUYWxsX3N0YWtlZF9hZGRyZXNzZXMACXdoaXRlbGlzdAkAzAgCAiMzUEpLbVhvSEp2VmVRWGpTSmRodGtVY0ZEdGRpUXFNYlVURAkAzAgCAiMzUFFkTnh5bkp5NW1jaGUya3hNVmM1c2hYV3pLOEdzdHEzbwkAzAgCAiMzUEN5anFIaHRxOWY5SG1uNExOc1d3QTY4ZEZWc3ZRNmlOaQkAzAgCAiMzUEtIRlg2VzRhQXIxZTFiOE1VVHo1SG1kV1ZVY2pXaGdZNAkAzAgCAiMzUDdaRlBGVzQ4Sm53Nkt2blNtQjZvQm1EVm9yTmVDcFdaNwkAzAgCAiMzUE1jTWlNRXM2dzU2TlJHYWNrc1h0Rkc1elM3ZG9FOWZwTAUDbmlsAQhjaGVja05GVAEFYXNzZXQDAwMDCQAAAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUPY3JlYXRpb25BZGRyZXNzCQCsAgIJAKwCAgIEbmZ0XwkA2AQBCAUFYXNzZXQCaWQCB19pc3N1ZXIJAKUIAQUEdGhpcwkAAAIIBQVhc3NldAZpc3N1ZXIFD2NyZWF0aW9uQWRkcmVzcwcJAAACCAUFYXNzZXQIZGVjaW1hbHMAAAcJAAACCAUFYXNzZXQKcmVpc3N1YWJsZQcHCQAAAggFBWFzc2V0CHF1YW50aXR5AAEHAQtnZXRQb3dlck5GVAEFYXNzZXQEBnBhcmFtcwkBEUBleHRyTmF0aXZlKDEwNTMpAgUPY3JlYXRpb25BZGRyZXNzCQCsAgIJAKwCAgIEbmZ0XwkA2AQBCAUFYXNzZXQCaWQCB19wYXJhbXMDCQAAAgUGcGFyYW1zAgRnb2xkAGQAKAEOaXNWb3RpbmdDbG9zZWQBBnZvdGVJZAQQdm90ZUNvbmZpcm1lZEtleQkArAICCQCsAgICBXZvdGVfBQZ2b3RlSWQCCl9jb25maXJtZWQED3ZvdGVSZWplY3RlZEtleQkArAICCQCsAgICBXZvdGVfBQZ2b3RlSWQCCV9yZWplY3RlZAQLaXNDb25maXJtZWQJAQt2YWx1ZU9yRWxzZQIJAKAIAQUQdm90ZUNvbmZpcm1lZEtleQcECmlzUmVqZWN0ZWQJAQt2YWx1ZU9yRWxzZQIJAKAIAQUPdm90ZVJlamVjdGVkS2V5BwMFC2lzQ29uZmlybWVkBgUKaXNSZWplY3RlZAEVYWRkU3RyaW5nVG9TdGF0ZUFycmF5AgdkYXRhS2V5BGl0ZW0EB2FsbERhdGEJAQt2YWx1ZU9yRWxzZQIJAKIIAQUHZGF0YUtleQIAAwkBASEBCQEJaXNEZWZpbmVkAQkAswkCBQdhbGxEYXRhBQRpdGVtAwkAAAIJALECAQUHYWxsRGF0YQAACQDMCAIJAQtTdHJpbmdFbnRyeQIFB2RhdGFLZXkFBGl0ZW0FA25pbAkAzAgCCQELU3RyaW5nRW50cnkCBQdkYXRhS2V5CQC7CQIJAM0IAgkAvQkCBQdhbGxEYXRhAgEsBQRpdGVtAgEsBQNuaWwFA25pbAEYcmVtb3ZlSXRlbUZyb21TdGF0ZUFycmF5AgdkYXRhS2V5BGl0ZW0EB2FsbERhdGEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBBQdkYXRhS2V5CQCsAgIJAKwCAgIPRGF0YSBmb3Iga2V5OiAnBQdkYXRhS2V5AgsnIG5vdCBmb3VuZAMJAQlpc0RlZmluZWQBCQCzCQIFB2FsbERhdGEFBGl0ZW0ECGRhdGFMaXN0CQC9CQIFB2FsbERhdGECASwECWl0ZW1JbmRleAkBBXZhbHVlAQkAzwgCBQhkYXRhTGlzdAUEaXRlbQkAzAgCCQELU3RyaW5nRW50cnkCBQdkYXRhS2V5CQC7CQIJANEIAgUIZGF0YUxpc3QFCWl0ZW1JbmRleAIBLAUDbmlsBQNuaWwIAWkBBXN0YWtlAAQKYWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEAXAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAkQMCCAUBaQhwYXltZW50cwAAAgtObyBwYXltZW50cwQFYXNzZXQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQETdmFsdWVPckVycm9yTWVzc2FnZQIIBQFwB2Fzc2V0SWQCD0ludmFsaWQgcGF5bWVudAIQSW52YWxpZCBhc3NldCBJZAMDCQBmAggFAXAGYW1vdW50AAAJAQhjaGVja05GVAEFBWFzc2V0BwQLdG90YWxTdGFrZWQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUOdG90YWxTdGFrZWRLZXkAAAQKdG90YWxQb3dlcgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ10b3RhbFBvd2VyS2V5AAAED2FkZHJlc3NQb3dlcktleQkArAICCQCsAgICCGFkZHJlc3NfBQphZGRyZXNzU3RyAgZfcG93ZXIEFWFkZHJlc3NUb3RhbFN0YWtlZEtleQkArAICCQCsAgICCGFkZHJlc3NfBQphZGRyZXNzU3RyAgxfdG90YWxTdGFrZWQEFGFkZHJlc3NTdGFrZWROZnRzS2V5CQCsAgIJAKwCAgIIYWRkcmVzc18FCmFkZHJlc3NTdHICC19zdGFrZWROZnRzBAxhZGRyZXNzUG93ZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPYWRkcmVzc1Bvd2VyS2V5AAAEEmFkZHJlc3NUb3RhbFN0YWtlZAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRVhZGRyZXNzVG90YWxTdGFrZWRLZXkAAAQRYWRkcmVzc1N0YWtlZE5mdHMJAQt2YWx1ZU9yRWxzZQIJAKIIAQUUYWRkcmVzc1N0YWtlZE5mdHNLZXkCAAMJAGYCCQBkAgUSYWRkcmVzc1RvdGFsU3Rha2VkAAEABQkAAgECGVlvdSBjYW4gc3Rha2Ugb25seSA1IE5GVHMECG5mdFBvd2VyCQELZ2V0UG93ZXJORlQBBQVhc3NldAQIbmZ0SWRTdHIJANgEAQgFBWFzc2V0AmlkBBZhZGRyZXNzU3Rha2VkTmZ0c1N0YXRlAwkAAAIJALECAQURYWRkcmVzc1N0YWtlZE5mdHMAAAkAzAgCCQELU3RyaW5nRW50cnkCBRRhZGRyZXNzU3Rha2VkTmZ0c0tleQUIbmZ0SWRTdHIFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCBRRhZGRyZXNzU3Rha2VkTmZ0c0tleQkAuQkCCQDNCAIJALUJAgURYWRkcmVzc1N0YWtlZE5mdHMCASwFCG5mdElkU3RyAgEsBQNuaWwJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ50b3RhbFN0YWtlZEtleQkAZAIFC3RvdGFsU3Rha2VkAAEJAMwIAgkBDEludGVnZXJFbnRyeQIFDXRvdGFsUG93ZXJLZXkJAGQCBQp0b3RhbFBvd2VyBQhuZnRQb3dlcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgIEbmZ0XwUIbmZ0SWRTdHICBl9vd25lcgUKYWRkcmVzc1N0cgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICBG5mdF8FCG5mdElkU3RyAgZfcG93ZXIFCG5mdFBvd2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9hZGRyZXNzUG93ZXJLZXkJAGQCBQxhZGRyZXNzUG93ZXIFCG5mdFBvd2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVhZGRyZXNzVG90YWxTdGFrZWRLZXkJAGQCBRJhZGRyZXNzVG90YWxTdGFrZWQAAQUDbmlsCQEVYWRkU3RyaW5nVG9TdGF0ZUFycmF5AgUVYWxsU3Rha2VkQWRkcmVzc2VzS2V5BQphZGRyZXNzU3RyBRZhZGRyZXNzU3Rha2VkTmZ0c1N0YXRlCQACAQILTm8gcGF5bWVudHMBaQEHdW5zdGFrZQEIbmZ0SWRTdHIECmFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyBAVhc3NldAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUIbmZ0SWRTdHICDkludmFsaWQgbmZ0IElkBAxvd25lckFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQCsAgIJAKwCAgIEbmZ0XwUIbmZ0SWRTdHICBl9vd25lcgIST3duZXIgZGF0YSBpbnZhbGlkAwkBAiE9AgUMb3duZXJBZGRyZXNzBQphZGRyZXNzU3RyCQACAQIVWW91IGFyZSBub3QgdGhlIG93bmVyAwkBCGNoZWNrTkZUAQUFYXNzZXQEC3RvdGFsU3Rha2VkCQELdmFsdWVPckVsc2UCCQCfCAEFDnRvdGFsU3Rha2VkS2V5AAAECnRvdGFsUG93ZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUNdG90YWxQb3dlcktleQAABA9hZGRyZXNzUG93ZXJLZXkJAKwCAgkArAICAghhZGRyZXNzXwUKYWRkcmVzc1N0cgIGX3Bvd2VyBBVhZGRyZXNzVG90YWxTdGFrZWRLZXkJAKwCAgkArAICAghhZGRyZXNzXwUKYWRkcmVzc1N0cgIMX3RvdGFsU3Rha2VkBBRhZGRyZXNzU3Rha2VkTmZ0c0tleQkArAICCQCsAgICCGFkZHJlc3NfBQphZGRyZXNzU3RyAgtfc3Rha2VkTmZ0cwQMYWRkcmVzc1Bvd2VyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUPYWRkcmVzc1Bvd2VyS2V5Ah1BZGRyZXNzIHBvd2VyIHZhbHVlIG5vdCBmb3VuZAQSYWRkcmVzc1RvdGFsU3Rha2VkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUVYWRkcmVzc1RvdGFsU3Rha2VkS2V5AiRBZGRyZXNzIHRvdGFsIHN0YWtlZCB2YWx1ZSBub3QgZm91bmQEEWFkZHJlc3NTdGFrZWROZnRzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQUUYWRkcmVzc1N0YWtlZE5mdHNLZXkCI0FkZHJlc3Mgc3Rha2VkIE5mdHMgdmFsdWUgbm90IGZvdW5kBA1uZnRBc3NldElkU3RyCQDYBAEIBQVhc3NldAJpZAQIbmZ0UG93ZXIJARFAZXh0ck5hdGl2ZSgxMDU1KQEJAKwCAgkArAICAgRuZnRfBQ1uZnRBc3NldElkU3RyAgZfcG93ZXIEE3VwZGF0ZWRBZGRyZXNzUG93ZXIJAGUCBQxhZGRyZXNzUG93ZXIFCG5mdFBvd2VyBBNyZW1vdmVTdGFrZWRBZGRyZXNzAwkAAAIFE3VwZGF0ZWRBZGRyZXNzUG93ZXIAAAkBGHJlbW92ZUl0ZW1Gcm9tU3RhdGVBcnJheQIFFWFsbFN0YWtlZEFkZHJlc3Nlc0tleQUKYWRkcmVzc1N0cgUDbmlsBBVhZGRyZXNzU3Rha2VkTmZ0c0xpc3QJALUJAgURYWRkcmVzc1N0YWtlZE5mdHMCASwEFWFkZHJlc3NTdGFrZWROZnRJbmRleAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFFWFkZHJlc3NTdGFrZWROZnRzTGlzdAUIbmZ0SWRTdHICJU5GVCBub3QgZm91bmVkIGluIGFkZHJlc3Mgc3Rha2VkIGxpc3QJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQgFBWFzc2V0AmlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ50b3RhbFN0YWtlZEtleQkAZQIFC3RvdGFsU3Rha2VkAAEJAMwIAgkBDEludGVnZXJFbnRyeQIFDXRvdGFsUG93ZXJLZXkJAGUCBQp0b3RhbFBvd2VyBQhuZnRQb3dlcgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgIEbmZ0XwUNbmZ0QXNzZXRJZFN0cgIGX293bmVyCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICAgRuZnRfBQ1uZnRBc3NldElkU3RyAgZfcG93ZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFD2FkZHJlc3NQb3dlcktleQUTdXBkYXRlZEFkZHJlc3NQb3dlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUVYWRkcmVzc1RvdGFsU3Rha2VkS2V5CQBlAgUSYWRkcmVzc1RvdGFsU3Rha2VkAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgUUYWRkcmVzc1N0YWtlZE5mdHNLZXkJALkJAgkA0QgCBRVhZGRyZXNzU3Rha2VkTmZ0c0xpc3QFFWFkZHJlc3NTdGFrZWROZnRJbmRleAIBLAUDbmlsBRNyZW1vdmVTdGFrZWRBZGRyZXNzCQACAQIOSW52YWxpZCBuZnQgSWQBaQEKc2VuZFRvVm90ZQEMY29sbGVjdGlvbklkBAZpc3N1ZXIJAJEDAgkAtQkCBQxjb2xsZWN0aW9uSWQCAV8AAAQHaXNFeGlzdAQHJG1hdGNoMAkAoggBCQCsAgIJAKwCAgILY29sbGVjdGlvbl8FDGNvbGxlY3Rpb25JZAIHX3ZvdGVJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXQFByRtYXRjaDAGBwMJAAACCQCxAgEFBmlzc3VlcgAACQACAQIbQ29sbGVjdGlvbiBpc3N1ZXIgbm90IGZvdW5kAwUHaXNFeGlzdAkAAgECMENvbGxlY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBzdWJtaXR0ZWQgZm9yIHZvdGluZwMJAAACCQDPCAIFCXdoaXRlbGlzdAkApQgBCAUBaQZjYWxsZXIFBHVuaXQJAAIBAiVGdW5jdGlvbmFsaXR5IHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAwkBAiE9AgUGaXNzdWVyCQClCAEIBQFpBmNhbGxlcgkAAgECJk9ubHkgdGhlIGlzc3VlciBjYW4gc3VibWl0IHRvIHRoZSB2b3RlBAZ2b3RlSWQJANgEAQkA1BYBCQCbAwEFDGNvbGxlY3Rpb25JZAQKdG90YWxWb3RlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBAgt0b3RhbF92b3RlcwAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgtjb2xsZWN0aW9uXwUMY29sbGVjdGlvbklkAgdfdm90ZUlkBQZ2b3RlSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBXZvdGVfBQZ2b3RlSWQCDV9jb2xsZWN0aW9uSWQFDGNvbGxlY3Rpb25JZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgIFdm90ZV8FBnZvdGVJZAIGX293bmVyCQClCAEIBQFpBmNhbGxlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgICBXZvdGVfBQZ2b3RlSWQCCl9jcmVhdGVkQXQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgILdG90YWxfdm90ZXMJAGQCBQp0b3RhbFZvdGVzAAEFA25pbAFpAQ5yZW1vdmVGcm9tVm90ZQEGdm90ZUlkBAxjb2xsZWN0aW9uSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQCsAgIJAKwCAgIFdm90ZV8FBnZvdGVJZAINX2NvbGxlY3Rpb25JZAIXQ29sbGVjdGlvbiBJZCBub3QgZm91bmQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkArAICCQCsAgICBXZvdGVfBQZ2b3RlSWQCBl9vd25lcgIPT3duZXIgbm90IGZvdW5kAwkBAiE9AgUFb3duZXIJAKUIAQgFAWkGY2FsbGVyCQACAQIVWW91IGFyZSBub3QgdGhlIG93bmVyAwkBDmlzVm90aW5nQ2xvc2VkAQUGdm90ZUlkCQACAQIQVm90aW5nIGlzIGNsb3NlZAQKdG90YWxWb3RlcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAECC3RvdGFsX3ZvdGVzAht0b3RhbCB2b3RlcyB2YWx1ZSBub3QgZm91bmQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgICC2NvbGxlY3Rpb25fBQxjb2xsZWN0aW9uSWQCB192b3RlSWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgICBXZvdGVfBQZ2b3RlSWQCDV9jb2xsZWN0aW9uSWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgICBXZvdGVfBQZ2b3RlSWQCBl9vd25lcgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgIFdm90ZV8FBnZvdGVJZAIKX2NyZWF0ZWRBdAkAzAgCCQEMSW50ZWdlckVudHJ5AgILdG90YWxfdm90ZXMJAGUCBQp0b3RhbFZvdGVzAAEFA25pbAFpAQl2b3RlQnlORlQCBnZvdGVJZAZhc3NldHMECmFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyBAxjb2xsZWN0aW9uSWQJAQt2YWx1ZU9yRWxzZQIJAKIIAQkArAICCQCsAgICBXZvdGVfBQZ2b3RlSWQCDV9jb2xsZWN0aW9uSWQCAAMJAQ5pc1ZvdGluZ0Nsb3NlZAEFBnZvdGVJZAkAAgECEFZvdGluZyBpcyBjbG9zZWQDCQAAAgkAsQIBBQxjb2xsZWN0aW9uSWQAAAkAAgECFENvbGxlY3Rpb24gbm90IGZvdW5kAwkAAAIJALECAQUGYXNzZXRzAAAJAAIBAhRBc3NldHMgbGlzdCBpcyBlbXB0eQQOdm90ZVVwUG93ZXJLZXkJAKwCAgkArAICAgV2b3RlXwUGdm90ZUlkAghfdXBQb3dlcgQQdm90ZURvd25Qb3dlcktleQkArAICCQCsAgICBXZvdGVfBQZ2b3RlSWQCCl9kb3duUG93ZXIEEXZvdGVUb3RhbFBvd2VyS2V5CQCsAgIJAKwCAgIFdm90ZV8FBnZvdGVJZAILX3RvdGFsUG93ZXIED3ZvdGVVc2VkTmZ0c0tleQkArAICCQCsAgICBXZvdGVfBQZ2b3RlSWQCCV91c2VkTmZ0cwQSdm90ZXJTcGVudFBvd2VyS2V5CQCsAgIJAKwCAgIGdm90ZXJfBQphZGRyZXNzU3RyAgtfc3BlbnRQb3dlcgQUdm90ZXJWb3RlVXNlZE5mdHNLZXkJAKwCAgkArAICCQCsAgIJAKwCAgIGdm90ZXJfBQphZGRyZXNzU3RyAgZfdm90ZV8FBnZvdGVJZAIJX3VzZWROZnRzBBZ2b3RlclZvdGVTcGVudFBvd2VyS2V5CQCsAgIJAKwCAgkArAICCQCsAgICBnZvdGVyXwUKYWRkcmVzc1N0cgIGX3ZvdGVfBQZ2b3RlSWQCC19zcGVudFBvd2VyBA9hZGRyZXNzUG93ZXJLZXkJAKwCAgkArAICAghhZGRyZXNzXwUKYWRkcmVzc1N0cgIGX3Bvd2VyBBRhZGRyZXNzU3Rha2VkTmZ0c0tleQkArAICCQCsAgICCGFkZHJlc3NfBQphZGRyZXNzU3RyAgtfc3Rha2VkTmZ0cwQLdXBQb3dlckRhcHAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUOdm90ZVVwUG93ZXJLZXkAAAQNZG93blBvd2VyRGFwcAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRB2b3RlRG93blBvd2VyS2V5AAAEDnRvdGFsVm90ZVBvd2VyCQELdmFsdWVPckVsc2UCCQCfCAEFEXZvdGVUb3RhbFBvd2VyS2V5AAAEDHZvdGVVc2VkTmZ0cwkBC3ZhbHVlT3JFbHNlAgkAoggBBQ92b3RlVXNlZE5mdHNLZXkCAAQPdm90ZXJTcGVudFBvd2VyCQELdmFsdWVPckVsc2UCCQCfCAEFEnZvdGVyU3BlbnRQb3dlcktleQAABBF2b3RlclZvdGVVc2VkTmZ0cwkBC3ZhbHVlT3JFbHNlAgkAoggBBRR2b3RlclZvdGVVc2VkTmZ0c0tleQIABA90b3RhbFNwZW50UG93ZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUSdG90YWxTcGVudFBvd2VyS2V5AAAEE3ZvdGVyVm90ZVNwZW50UG93ZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUWdm90ZXJWb3RlU3BlbnRQb3dlcktleQAABAxhZGRyZXNzUG93ZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQ9hZGRyZXNzUG93ZXJLZXkCFFlvdSBkb24ndCBoYXZlIHBvd2VyBBFhZGRyZXNzU3Rha2VkTmZ0cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEFFGFkZHJlc3NTdGFrZWROZnRzS2V5AhpZb3UgZG9uJ3QgaGF2ZSBzdGFrZWQgTkZUcwQZYWRkZXJzc0xhc3RSZXdhcmRSb3VuZEtleQkArAICCQCsAgICCGFkZHJlc3NfBQphZGRyZXNzU3RyAhFfbGFzdFJld2FyZHNSb3VuZAQTY3VycmVudFJld29yZHNSb3VuZAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRZjdXJyZW50UmV3b3Jkc1JvdW5kS2V5AAAEFmFkZGVyc3NMYXN0UmV3YXJkUm91bmQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUZYWRkZXJzc0xhc3RSZXdhcmRSb3VuZEtleQAABAphc3NldHNMaXN0CQC1CQIFBmFzc2V0cwIBfAQQdm90ZVVzZWROZnRzTGlzdAMJAAACCQCxAgEFDHZvdGVVc2VkTmZ0cwAABQNuaWwJAL0JAgUMdm90ZVVzZWROZnRzAgEsBBV2b3RlclZvdGVVc2VkTmZ0c0xpc3QDCQAAAgkAsQIBBRF2b3RlclZvdGVVc2VkTmZ0cwAABQNuaWwJAL0JAgURdm90ZXJWb3RlVXNlZE5mdHMCASwKAQ1wcm9jZXNzQXNzZXRzAgVhY2N1bQRuZXh0BAVwYXJ0cwkAtQkCBQRuZXh0AgFfBAVuZnRJZAkAkQMCBQVwYXJ0cwAABAR0eXBlCQCRAwIFBXBhcnRzAAEEBXBvd2VyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkArAICCQCsAgICBG5mdF8FBW5mdElkAgZfcG93ZXICE05GVCBwb3dlciBub3QgZm91bmQEEHN0YWtlZE93bmVySW5kZXgJAQt2YWx1ZU9yRWxzZQIJALMJAgURYWRkcmVzc1N0YWtlZE5mdHMFBW5mdElkAP///////////wEDCQAAAgUFcG93ZXIAAAkAAgECF1Bvd2VyIG11c3QgYmUgbW9yZSB6ZXJvAwkAAAIFEHN0YWtlZE93bmVySW5kZXgA////////////AQkAAgECHEFzc2V0IGRvZXMgbm90IGJlbG9uZyB0byB5b3UECmFzc2V0SW5kZXgJAQt2YWx1ZU9yRWxzZQIJAM8IAgUQdm90ZVVzZWROZnRzTGlzdAUFbmZ0SWQA////////////AQMJAAACBQphc3NldEluZGV4AP///////////wEDAwkBAiE9AgUEdHlwZQICdXAJAQIhPQIFBHR5cGUCBGRvd24HCQACAQIMSW52YWxpZCB0eXBlCQCWCgQJAGQCCAUFYWNjdW0CXzEDCQAAAgUEdHlwZQICdXAFBXBvd2VyAAAJAGQCCAUFYWNjdW0CXzIDCQAAAgUEdHlwZQIEZG93bgUFcG93ZXIAAAkAzQgCCAUFYWNjdW0CXzMFBW5mdElkCQDNCAIIBQVhY2N1bQJfNAkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBnZvdGVyXwUKYWRkcmVzc1N0cgIGX3ZvdGVfBQZ2b3RlSWQCCV9hc3NldElkXwUFbmZ0SWQJAKwCAgkArAICCQCsAgIJAKwCAgUEdHlwZQIBOgkApAMBBQVwb3dlcgIBOgkApAMBBQZoZWlnaHQFBWFjY3VtBBJwcm9jZXNzUmVzdWx0VHVwbGUKAAIkbAUKYXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAAAAAFA25pbAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQ1wcm9jZXNzQXNzZXRzAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQQHdXBQb3dlcggFEnByb2Nlc3NSZXN1bHRUdXBsZQJfMQQJZG93blBvd2VyCAUScHJvY2Vzc1Jlc3VsdFR1cGxlAl8yBApwb3dlclZhbHVlCQBkAgUHdXBQb3dlcgUJZG93blBvd2VyAwkAZgIFCnBvd2VyVmFsdWUFDGFkZHJlc3NQb3dlcgkAAgECIlBvd2VyIGV4Y2VlZHMgcG93ZXIgb2YgdGhlIGFjY291bnQDCQAAAgUKcG93ZXJWYWx1ZQAACQACAQIYTm90IGVub3VnaCBwb3dlciB0byB2b3RlAwkAAAIJAJADAQgFEnByb2Nlc3NSZXN1bHRUdXBsZQJfMwAACQACAQIbVXNlZCBsaXN0IG11c3Qgbm90IGJlIGVtcHR5AwkAAAIJAJADAQgFEnByb2Nlc3NSZXN1bHRUdXBsZQJfNAAACQACAQIkU3RhdGUgZW50cmllcyBsaXN0IG11c3Qgbm90IGJlIGVtcHR5BBBWT1RFX1BPV0VSX0xJTUlUCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQURdm90ZVBvd2VyTGltaXRLZXkCGlZvdGUgcG93ZXIgbGltaXQgbm90IGZvdW5kBBR1cGRhdGVDYW5kaXRhdGVzTGlzdAMJAGYCCQBkAgUOdG90YWxWb3RlUG93ZXIFCnBvd2VyVmFsdWUFEFZPVEVfUE9XRVJfTElNSVQJARVhZGRTdHJpbmdUb1N0YXRlQXJyYXkCBRhmaW5hbFZvdGluZ0NhbmRpZGF0ZXNLZXkFBnZvdGVJZAUDbmlsBBhhZGRyZXNzUmV3b3Jkc1JvdW5kU3RhdGUDAwkAAAIFFmFkZGVyc3NMYXN0UmV3YXJkUm91bmQAAAkAZgIFE2N1cnJlbnRSZXdvcmRzUm91bmQFFmFkZGVyc3NMYXN0UmV3YXJkUm91bmQHCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRlhZGRlcnNzTGFzdFJld2FyZFJvdW5kS2V5BRNjdXJyZW50UmV3b3Jkc1JvdW5kBQNuaWwFA25pbAkAzggCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUSdm90ZXJTcGVudFBvd2VyS2V5CQBkAgUPdm90ZXJTcGVudFBvd2VyBQpwb3dlclZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJ0b3RhbFNwZW50UG93ZXJLZXkJAGQCBQ90b3RhbFNwZW50UG93ZXIFCnBvd2VyVmFsdWUJAMwIAgkBDEludGVnZXJFbnRyeQIFDnZvdGVVcFBvd2VyS2V5CQBkAgULdXBQb3dlckRhcHAFB3VwUG93ZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFEHZvdGVEb3duUG93ZXJLZXkJAGQCBQ1kb3duUG93ZXJEYXBwBQlkb3duUG93ZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFEXZvdGVUb3RhbFBvd2VyS2V5CQBkAgUOdG90YWxWb3RlUG93ZXIFCnBvd2VyVmFsdWUJAMwIAgkBDEludGVnZXJFbnRyeQIFFnZvdGVyVm90ZVNwZW50UG93ZXJLZXkJAGQCBRN2b3RlclZvdGVTcGVudFBvd2VyBQpwb3dlclZhbHVlCQDMCAIJAQtTdHJpbmdFbnRyeQIFFHZvdGVyVm90ZVVzZWROZnRzS2V5CQC7CQIJAM4IAgUVdm90ZXJWb3RlVXNlZE5mdHNMaXN0CAUScHJvY2Vzc1Jlc3VsdFR1cGxlAl8zAgEsCQDMCAIJAQtTdHJpbmdFbnRyeQIFD3ZvdGVVc2VkTmZ0c0tleQkAuwkCCQDOCAIFEHZvdGVVc2VkTmZ0c0xpc3QIBRJwcm9jZXNzUmVzdWx0VHVwbGUCXzMCASwFA25pbAgFEnByb2Nlc3NSZXN1bHRUdXBsZQJfNAUUdXBkYXRlQ2FuZGl0YXRlc0xpc3QFGGFkZHJlc3NSZXdvcmRzUm91bmRTdGF0ZQFpAQt1bnZvdGVCeU5GVAIGdm90ZUlkBmFzc2V0cwQKYWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEDGNvbGxlY3Rpb25JZAkBC3ZhbHVlT3JFbHNlAgkAoggBCQCsAgIJAKwCAgIFdm90ZV8FBnZvdGVJZAINX2NvbGxlY3Rpb25JZAIAAwkBDmlzVm90aW5nQ2xvc2VkAQUGdm90ZUlkCQACAQIQVm90aW5nIGlzIGNsb3NlZAMJAAACCQCxAgEFDGNvbGxlY3Rpb25JZAAACQACAQIUQ29sbGVjdGlvbiBub3QgZm91bmQEDnZvdGVVcFBvd2VyS2V5CQCsAgIJAKwCAgIFdm90ZV8FBnZvdGVJZAIIX3VwUG93ZXIEEHZvdGVEb3duUG93ZXJLZXkJAKwCAgkArAICAgV2b3RlXwUGdm90ZUlkAgpfZG93blBvd2VyBBF2b3RlVG90YWxQb3dlcktleQkArAICCQCsAgICBXZvdGVfBQZ2b3RlSWQCC190b3RhbFBvd2VyBA92b3RlVXNlZE5mdHNLZXkJAKwCAgkArAICAgV2b3RlXwUGdm90ZUlkAglfdXNlZE5mdHMEEnZvdGVyU3BlbnRQb3dlcktleQkArAICCQCsAgICBnZvdGVyXwUKYWRkcmVzc1N0cgILX3NwZW50UG93ZXIEFHZvdGVyVm90ZVVzZWROZnRzS2V5CQCsAgIJAKwCAgkArAICCQCsAgICBnZvdGVyXwUKYWRkcmVzc1N0cgIGX3ZvdGVfBQZ2b3RlSWQCCV91c2VkTmZ0cwQWdm90ZXJWb3RlU3BlbnRQb3dlcktleQkArAICCQCsAgIJAKwCAgkArAICAgZ2b3Rlcl8FCmFkZHJlc3NTdHICBl92b3RlXwUGdm90ZUlkAgtfc3BlbnRQb3dlcgQPYWRkcmVzc1Bvd2VyS2V5CQCsAgIJAKwCAgIIYWRkcmVzc18FCmFkZHJlc3NTdHICBl9wb3dlcgQUYWRkcmVzc1N0YWtlZE5mdHNLZXkJAKwCAgkArAICAghhZGRyZXNzXwUKYWRkcmVzc1N0cgILX3N0YWtlZE5mdHMEC3VwUG93ZXJEYXBwCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUOdm90ZVVwUG93ZXJLZXkCF1VwIHZvdGUgcG93ZXIgbm90IGZvdW5kBA1kb3duUG93ZXJEYXBwCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUQdm90ZURvd25Qb3dlcktleQIZRG93biB2b3RlIHBvd2VyIG5vdCBmb3VuZAQOdG90YWxWb3RlUG93ZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBRF2b3RlVG90YWxQb3dlcktleQIaVG90YWwgdm90ZSBwb3dlciBub3QgZm91bmQEDHZvdGVVc2VkTmZ0cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEFD3ZvdGVVc2VkTmZ0c0tleQIZVm90ZSB1c2VkIHBvd2VyIG5vdCBmb3VuZAQPdm90ZXJTcGVudFBvd2VyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUSdm90ZXJTcGVudFBvd2VyS2V5AhtWb3RlciBzcGVudCBwb3dlciBub3QgZm91bmQEDXZvdGVyVXNlZE5mdHMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBRR2b3RlclZvdGVVc2VkTmZ0c0tleQIeVm90ZXIgdm90ZSB1c2VkIG5mdHMgbm90IGZvdW5kBBF2b3RlclZvdGVVc2VkTmZ0cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEFFHZvdGVyVm90ZVVzZWROZnRzS2V5AiNWb3RlciB2b3RlIHVzZWQgbmZ0cyBsaXN0IG5vdCBmb3VuZAQPdG90YWxTcGVudFBvd2VyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUSdG90YWxTcGVudFBvd2VyS2V5AhtUb3RhbCBzcGVudCBwb3dlciBub3QgZm91bmQEE3ZvdGVyVm90ZVNwZW50UG93ZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBRZ2b3RlclZvdGVTcGVudFBvd2VyS2V5AiJBZGRyZXNzIHZvdGUgc3BlbnQgcG93ZXIgbm90IGZvdW5kBAxhZGRyZXNzUG93ZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQ9hZGRyZXNzUG93ZXJLZXkCFFlvdSBkb24ndCBoYXZlIHBvd2VyBBFhZGRyZXNzU3Rha2VkTmZ0cwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEFFGFkZHJlc3NTdGFrZWROZnRzS2V5AhpZb3UgZG9uJ3QgaGF2ZSBzdGFrZWQgTkZUcwQKYXNzZXRzTGlzdAMJAGYCCQCxAgEFBmFzc2V0cwAACQC1CQIFBmFzc2V0cwIBfAMJAAACCQCxAgEFEXZvdGVyVm90ZVVzZWROZnRzAAAFA25pbAkAtQkCBRF2b3RlclZvdGVVc2VkTmZ0cwIBLAoBDXByb2Nlc3NBc3NldHMCBWFjY3VtBG5leHQECWFzc2V0Vm90ZQkBC3ZhbHVlT3JFbHNlAgkAoggBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIGdm90ZXJfBQphZGRyZXNzU3RyAgZfdm90ZV8FBnZvdGVJZAIJX2Fzc2V0SWRfBQRuZXh0AgAEBXBhcnRzCQC1CQIFCWFzc2V0Vm90ZQIBOgQEdHlwZQkAkQMCBQVwYXJ0cwAABAVwb3dlcgkBC3ZhbHVlT3JFbHNlAgkAtgkBCQCRAwIFBXBhcnRzAAEAAAQQc3Rha2VkT3duZXJJbmRleAkBC3ZhbHVlT3JFbHNlAgkAswkCBRFhZGRyZXNzU3Rha2VkTmZ0cwUEbmV4dAD///////////8BBBJ2b3RlclZvdGVVc2VkSW5kZXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCCAUFYWNjdW0CXzQFBG5leHQCH1ZvdGVyIHZvdGUgdXNlZCBpbmRleCBub3QgZm91bmQDCQAAAgkAsQIBBQlhc3NldFZvdGUAAAUFYWNjdW0DCQAAAgUFcG93ZXIAAAkAAgECF1Bvd2VyIG11c3QgYmUgbW9yZSB6ZXJvAwMJAGYCAAAFEnZvdGVyVm90ZVVzZWRJbmRleAkAAAIFEHN0YWtlZE93bmVySW5kZXgA////////////AQcJAAIBAhxBc3NldCBkb2VzIG5vdCBiZWxvbmcgdG8geW91BA5hc3NldFVzZWRJbmRleAkBC3ZhbHVlT3JFbHNlAgkAzwgCCAUFYWNjdW0CXzMFBG5leHQA////////////AQMJAGcCBQ5hc3NldFVzZWRJbmRleAAAAwMJAQIhPQIFBHR5cGUCAnVwCQECIT0CBQR0eXBlAgRkb3duBwkAAgECDEludmFsaWQgdHlwZQkAlwoFCQBkAggFBWFjY3VtAl8xAwkAAAIFBHR5cGUCAnVwBQVwb3dlcgAACQBkAggFBWFjY3VtAl8yAwkAAAIFBHR5cGUCBGRvd24FBXBvd2VyAAAJANEIAggFBWFjY3VtAl8zBQ5hc3NldFVzZWRJbmRleAkA0QgCCAUFYWNjdW0CXzQFEnZvdGVyVm90ZVVzZWRJbmRleAkAzQgCCAUFYWNjdW0CXzUJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgZ2b3Rlcl8FCmFkZHJlc3NTdHICBl92b3RlXwUGdm90ZUlkAglfYXNzZXRJZF8FBG5leHQFBWFjY3VtBBJwcm9jZXNzUmVzdWx0VHVwbGUKAAIkbAUKYXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJcKBQAAAAAJAL0JAgUMdm90ZVVzZWROZnRzAgEsCQC9CQIFEXZvdGVyVm90ZVVzZWROZnRzAgEsBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBDXByb2Nlc3NBc3NldHMCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBAd1cFBvd2VyCAUScHJvY2Vzc1Jlc3VsdFR1cGxlAl8xBAlkb3duUG93ZXIIBRJwcm9jZXNzUmVzdWx0VHVwbGUCXzIECnBvd2VyVmFsdWUJAGQCBQd1cFBvd2VyBQlkb3duUG93ZXIDCQBmAgUKcG93ZXJWYWx1ZQUPdm90ZXJTcGVudFBvd2VyCQACAQIlUG93ZXIgdmFsdWUgZXhjZWVkcyB2b3RlciBzcGVudCBwb3dlcgMJAAACBQpwb3dlclZhbHVlAAAJAAIBAhpOb3QgZW5vdWdoIHBvd2VyIHRvIHVudm90ZQMJAAACCQCQAwEIBRJwcm9jZXNzUmVzdWx0VHVwbGUCXzUAAAkAAgECJFN0YXRlIGVudHJpZXMgbGlzdCBtdXN0IG5vdCBiZSBlbXB0eQQQVk9URV9QT1dFUl9MSU1JVAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFEXZvdGVQb3dlckxpbWl0S2V5AhpWb3RlIHBvd2VyIGxpbWl0IG5vdCBmb3VuZAQUdXBkYXRlQ2FuZGl0YXRlc0xpc3QDCQBmAgUQVk9URV9QT1dFUl9MSU1JVAkAZQIFDnRvdGFsVm90ZVBvd2VyBQpwb3dlclZhbHVlCQEYcmVtb3ZlSXRlbUZyb21TdGF0ZUFycmF5AgUYZmluYWxWb3RpbmdDYW5kaWRhdGVzS2V5BQZ2b3RlSWQFA25pbAkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFEnZvdGVyU3BlbnRQb3dlcktleQkAZQIFD3ZvdGVyU3BlbnRQb3dlcgUKcG93ZXJWYWx1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUSdG90YWxTcGVudFBvd2VyS2V5CQBlAgUPdG90YWxTcGVudFBvd2VyBQpwb3dlclZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ52b3RlVXBQb3dlcktleQkAZQIFC3VwUG93ZXJEYXBwBQd1cFBvd2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRB2b3RlRG93blBvd2VyS2V5CQBlAgUNZG93blBvd2VyRGFwcAUJZG93blBvd2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRF2b3RlVG90YWxQb3dlcktleQkAZQIFDnRvdGFsVm90ZVBvd2VyBQpwb3dlclZhbHVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZ2b3RlclZvdGVTcGVudFBvd2VyS2V5CQBlAgUTdm90ZXJWb3RlU3BlbnRQb3dlcgUKcG93ZXJWYWx1ZQkAzAgCCQELU3RyaW5nRW50cnkCBRR2b3RlclZvdGVVc2VkTmZ0c0tleQkAuwkCCAUScHJvY2Vzc1Jlc3VsdFR1cGxlAl80AgEsCQDMCAIJAQtTdHJpbmdFbnRyeQIFD3ZvdGVVc2VkTmZ0c0tleQkAuwkCCAUScHJvY2Vzc1Jlc3VsdFR1cGxlAl8zAgEsBQNuaWwIBRJwcm9jZXNzUmVzdWx0VHVwbGUCXzUFFHVwZGF0ZUNhbmRpdGF0ZXNMaXN0AWkBDWZpbGxUcmVhc3VhcnkAAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECCk5vIHBheW1lbnQDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAAkAAgECFlBheW1lbnQgbXVzdCBiZSBtb3JlIDADCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFC1VTRFRBc3NldElkCQACAQIXUGF5bWVudCBtdXN0IGJlIGluIFVTRFQEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEB2Fzc2V0SWQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQVZmluYWxWb3RpbmdDYW5kaWRhdGVzCQELdmFsdWVPckVsc2UCCQCiCAEFGGZpbmFsVm90aW5nQ2FuZGlkYXRlc0tleQIAAwkAAAIJALECAQUVZmluYWxWb3RpbmdDYW5kaWRhdGVzAAAJAAIBAhhDYW5kaXRhdGVzIGxpc3QgaXMgZW1wdHkEGWZpbmFsVm90aW5nQ2FuZGlkYXRlc0xpc3QJALUJAgUVZmluYWxWb3RpbmdDYW5kaWRhdGVzAgEsCgELcHJvY2Vzc1ZvdGUCBWFjY3VtBG5leHQEBnZvdGVJZAUEbmV4dAQOdm90ZVVwUG93ZXJLZXkJAKwCAgkArAICAgV2b3RlXwUGdm90ZUlkAghfdXBQb3dlcgQQdm90ZURvd25Qb3dlcktleQkArAICCQCsAgICBXZvdGVfBQZ2b3RlSWQCCl9kb3duUG93ZXIEEXZvdGVUb3RhbFBvd2VyS2V5CQCsAgIJAKwCAgIFdm90ZV8FBnZvdGVJZAILX3RvdGFsUG93ZXIEC3ZvdGVVcFBvd2VyCQELdmFsdWVPckVsc2UCCQCfCAEFDnZvdGVVcFBvd2VyS2V5AAAEDXZvdGVEb3duUG93ZXIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUQdm90ZURvd25Qb3dlcktleQAABA52b3RlVG90YWxQb3dlcgkBC3ZhbHVlT3JFbHNlAgkAnwgBBRF2b3RlVG90YWxQb3dlcktleQAABBBWT1RFX1BPV0VSX0xJTUlUCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQURdm90ZVBvd2VyTGltaXRLZXkCGlZvdGUgcG93ZXIgbGltaXQgbm90IGZvdW5kAwkAAAIFDnZvdGVUb3RhbFBvd2VyAAAJAAIBAhNJbnZhbGlkIHRvdGFsIHBvd2VyAwkAZgIFEFZPVEVfUE9XRVJfTElNSVQFDnZvdGVUb3RhbFBvd2VyCQACAQIVUG93ZXIgbGVzcyB0aGFuIGxpbWl0AwkAAAIJAGQCBQt2b3RlVXBQb3dlcgUNdm90ZURvd25Qb3dlcgAACQACAQIWSW52YWxpZCB1cCwgZG93biBwb3dlcgMJAQ5pc1ZvdGluZ0Nsb3NlZAEFBnZvdGVJZAkAlgoECAUFYWNjdW0CXzEIBQVhY2N1bQJfMggFBWFjY3VtAl8zCQEYcmVtb3ZlSXRlbUZyb21TdGF0ZUFycmF5AgUYZmluYWxWb3RpbmdDYW5kaWRhdGVzS2V5BQZ2b3RlSWQECXVwUGVyY2VudAkAawMFC3ZvdGVVcFBvd2VyAGQFDnZvdGVUb3RhbFBvd2VyBA5maW5hbFZvdGVTdGF0ZQMJAGYCBQl1cFBlcmNlbnQAMgkBDEJvb2xlYW5FbnRyeQIJAKwCAgkArAICAgV2b3RlXwUGdm90ZUlkAgpfY29uZmlybWVkBgkBDEJvb2xlYW5FbnRyeQIJAKwCAgkArAICAgV2b3RlXwUGdm90ZUlkAglfcmVqZWN0ZWQGCQCWCgQJAGQCCAUFYWNjdW0CXzEFDnZvdGVUb3RhbFBvd2VyCQDNCAIIBQVhY2N1bQJfMgUGdm90ZUlkCQDNCAIIBQVhY2N1bQJfMwUOZmluYWxWb3RlU3RhdGUJARhyZW1vdmVJdGVtRnJvbVN0YXRlQXJyYXkCBRhmaW5hbFZvdGluZ0NhbmRpZGF0ZXNLZXkFBnZvdGVJZAQLcmVzdWx0VHVwbGUKAAIkbAUZZmluYWxWb3RpbmdDYW5kaWRhdGVzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAABQNuaWwFA25pbAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQtwcm9jZXNzVm90ZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQQYWxsRW5kVm90ZXNQb3dlcggFC3Jlc3VsdFR1cGxlAl8xBA5maW5hbFZvdGVzTGlzdAgFC3Jlc3VsdFR1cGxlAl8yBA9maW5hbFZvdGVzU3RhdGUIBQtyZXN1bHRUdXBsZQJfMwQadXBkYXRlZExpc3RGaW5hbENhbmRpdGF0ZXMIBQtyZXN1bHRUdXBsZQJfNAMJAAACBRBhbGxFbmRWb3Rlc1Bvd2VyAAAJAAIBAiFObyBwb3dlciBhZnRlciBwcm9jZXNzIGNhbmRpdGF0ZXMEE2N1cnJlbnRSZXdvcmRzUm91bmQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUWY3VycmVudFJld29yZHNSb3VuZEtleQAABAxjb3N0UGVyUG93ZXIJAGsDBQZhbW91bnQAAQUQYWxsRW5kVm90ZXNQb3dlcgQYdHJlYXN1YXJ5QXNzZXRJZFRvdGFsS2V5CQCsAgIJAKwCAgIKdHJlYXN1YXJ5XwkA2AQBBQdhc3NldElkAgZfdG90YWwEHHRyZWFzdWFyeUFzc2V0SWRBdmFpbGFibGVLZXkJAKwCAgkArAICAgp0cmVhc3VhcnlfCQDYBAEFB2Fzc2V0SWQCCl9hdmFpbGFibGUEFXRyZWFzdWFyeUFzc2V0SWRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRh0cmVhc3VhcnlBc3NldElkVG90YWxLZXkAAAQZdHJlYXN1YXJ5QXNzZXRJZEF2YWlsYWJsZQkBC3ZhbHVlT3JFbHNlAgkAnwgBBRx0cmVhc3VhcnlBc3NldElkQXZhaWxhYmxlS2V5AAAJAM4IAgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgdyZXdhcmRfCQCkAwEFE2N1cnJlbnRSZXdvcmRzUm91bmQCCV92b3Rlc0lkcwkAuQkCBQ5maW5hbFZvdGVzTGlzdAIBLAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgIHcmV3YXJkXwkApAMBBRNjdXJyZW50UmV3b3Jkc1JvdW5kAghfYXNzZXRJZAkA2AQBBQdhc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgIHcmV3YXJkXwkApAMBBRNjdXJyZW50UmV3b3Jkc1JvdW5kAg1fY29zdFBlclBvd2VyBQxjb3N0UGVyUG93ZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICAgdyZXdhcmRfCQCkAwEFE2N1cnJlbnRSZXdvcmRzUm91bmQCCl9wYWlkUG93ZXIFEGFsbEVuZFZvdGVzUG93ZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFGHRyZWFzdWFyeUFzc2V0SWRUb3RhbEtleQkAZAIFFXRyZWFzdWFyeUFzc2V0SWRUb3RhbAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRx0cmVhc3VhcnlBc3NldElkQXZhaWxhYmxlS2V5CQBkAgUZdHJlYXN1YXJ5QXNzZXRJZEF2YWlsYWJsZQUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZjdXJyZW50UmV3b3Jkc1JvdW5kS2V5CQBkAgUTY3VycmVudFJld29yZHNSb3VuZAABBQNuaWwFD2ZpbmFsVm90ZXNTdGF0ZQUadXBkYXRlZExpc3RGaW5hbENhbmRpdGF0ZXMBaQEMY2xhaW1SZXdhcmRzAAQKYWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEGWFkZGVyc3NMYXN0UmV3YXJkUm91bmRLZXkJAKwCAgkArAICAghhZGRyZXNzXwUKYWRkcmVzc1N0cgIRX2xhc3RSZXdhcmRzUm91bmQEE2N1cnJlbnRSZXdvcmRzUm91bmQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUWY3VycmVudFJld29yZHNSb3VuZEtleQAABBZhZGRlcnNzTGFzdFJld2FyZFJvdW5kCQELdmFsdWVPckVsc2UCCQCfCAEFGWFkZGVyc3NMYXN0UmV3YXJkUm91bmRLZXkAAAMJAAACBRNjdXJyZW50UmV3b3Jkc1JvdW5kBRZhZGRlcnNzTGFzdFJld2FyZFJvdW5kCQACAQIaVGhlcmUgd2VyZSBubyBuZXcgcGF5bWVudHMKARBjYWxjUmV3YXJkc1JvdW5kAgVhY2N1bQRuZXh0AwkAZwIIBQVhY2N1bQJfMQUTY3VycmVudFJld29yZHNSb3VuZAUFYWNjdW0ECHZvdGVzSWRzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkArAICCQCsAgICB3Jld2FyZF8JAKQDAQgFBWFjY3VtAl8xAglfdm90ZXNJZHMCGlJld2FyZCB2b3RlcyBpZHMgbm90IGZvdW5kBAdhc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkArAICCQCsAgICB3Jld2FyZF8JAKQDAQgFBWFjY3VtAl8xAghfYXNzZXRJZAIYUmV3YXJkIGFzc2V0SWQgbm90IGZvdW5kBAljb3N0UG93ZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQCsAgIJAKwCAgIHcmV3YXJkXwkApAMBCAUFYWNjdW0CXzECDV9jb3N0UGVyUG93ZXICG1Jld2FyZCBjb3N0IHBvd2VyIG5vdCBmb3VuZAQadHJlYXN1YXJ5QXNzZXRJZENsYWltZWRLZXkJAKwCAgkArAICAgp0cmVhc3VhcnlfBQdhc3NldElkAghfY2xhaW1lZAQcdHJlYXN1YXJ5QXNzZXRJZEF2YWlsYWJsZUtleQkArAICCQCsAgICCnRyZWFzdWFyeV8FB2Fzc2V0SWQCCl9hdmFpbGFibGUEF3RyZWFzdWFyeUFzc2V0SWRDbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEFGnRyZWFzdWFyeUFzc2V0SWRDbGFpbWVkS2V5AAAEGXRyZWFzdWFyeUFzc2V0SWRBdmFpbGFibGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBRx0cmVhc3VhcnlBc3NldElkQXZhaWxhYmxlS2V5AhtUcmVhc3VhcnkgYXNzZXRJZCBub3QgZm91bmQEGGFkZHJlc3NBc3NldElkQ2xhaW1lZEtleQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIMcmV3YXJkUm91bmRfCQCkAwEIBQVhY2N1bQJfMQIJX2FkZHJlc3NfBQphZGRyZXNzU3RyAglfYXNzZXRJZF8FB2Fzc2V0SWQCCF9jbGFpbWVkBBVhZGRyZXNzQXNzZXRJZENsYWltZWQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUYYWRkcmVzc0Fzc2V0SWRDbGFpbWVkS2V5AAADCQBnAgAABRl0cmVhc3VhcnlBc3NldElkQXZhaWxhYmxlCQACAQIbVHJlYXN1YXJ5IGFzc2V0IElkIGlzIGVtcHR5AwkAAAIJALECAQUIdm90ZXNJZHMAAAkAAgECF1ZvdGUgaWRzIGxpc3QgYXJlIGVtcHR5AwkAAAIJALECAQUHYXNzZXRJZAAACQACAQIRQXNzZXQgaWQgaXMgZW1wdHkDAwkAAAIFCWNvc3RQb3dlcgAABgkAZgIAAAUJY29zdFBvd2VyCQACAQISSW52YWxpZCBjb3N0IHBvd2VyCgEVY2FsY0FkZHJlc3NTcGVudFBvd2VyAgVhY2N1bQRuZXh0BAZ2b3RlSWQFBG5leHQEEWFkZHJlc3NTcGVudFBvd2VyCQELdmFsdWVPckVsc2UCCQCfCAEJAKwCAgkArAICCQCsAgIJAKwCAgIGdm90ZXJfBQphZGRyZXNzU3RyAgZfdm90ZV8FBnZvdGVJZAILX3NwZW50UG93ZXIAAAkAZAIFBWFjY3VtBRFhZGRyZXNzU3BlbnRQb3dlcgQKc3BlbnRQb3dlcgoAAiRsCQC1CQIFCHZvdGVzSWRzAgEsCgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARVjYWxjQWRkcmVzc1NwZW50UG93ZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDAwkAZwIAAAUKc3BlbnRQb3dlcgYJAGYCBRVhZGRyZXNzQXNzZXRJZENsYWltZWQAAAkAlAoCCQBkAggFBWFjY3VtAl8xBQRuZXh0CAUFYWNjdW0CXzIJAJQKAgkAZAIIBQVhY2N1bQJfMQUEbmV4dAkAzggCCAUFYWNjdW0CXzIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQBoAgUKc3BlbnRQb3dlcgUJY29zdFBvd2VyCQDZBAEFB2Fzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIFGGFkZHJlc3NBc3NldElkQ2xhaW1lZEtleQkAaAIFCnNwZW50UG93ZXIFCWNvc3RQb3dlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUadHJlYXN1YXJ5QXNzZXRJZENsYWltZWRLZXkJAGQCBRd0cmVhc3VhcnlBc3NldElkQ2xhaW1lZAkAaAIFCnNwZW50UG93ZXIFCWNvc3RQb3dlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUcdHJlYXN1YXJ5QXNzZXRJZEF2YWlsYWJsZUtleQkAZQIFGXRyZWFzdWFyeUFzc2V0SWRBdmFpbGFibGUJAGgCBQpzcGVudFBvd2VyBQljb3N0UG93ZXIFA25pbAQBcgoAAiRsCQDMCAIAAQkAzAgCAAEJAMwIAgABCQDMCAIAAQkAzAgCAAEFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUWYWRkZXJzc0xhc3RSZXdhcmRSb3VuZAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjYWxjUmV3YXJkc1JvdW5kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRlhZGRlcnNzTGFzdFJld2FyZFJvdW5kS2V5CAUBcgJfMQUDbmlsCAUBcgJfMgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkdt9yG", "height": 3481984, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2H1Aw6125KhF8GymCqYTch38bf7KP2AYnLkbvz5pawiB Next: AAe7BrnV3ShtUqXRUki3Qe7EXfQ9q993qLiPBXWuyrpF Diff:
OldNewDifferences
4141
4242
4343 func o (p) = {
44- let q = valueOrElse(getString(a, (("collection_" + p) + "_assetId")), "")
45- valueOrElse(getString(a, (("nft_" + q) + "_issuer")), "")
44+ let q = (("vote_" + p) + "_confirmed")
45+ let r = (("vote_" + p) + "_rejected")
46+ let s = valueOrElse(getBoolean(q), false)
47+ let t = valueOrElse(getBoolean(r), false)
48+ if (s)
49+ then true
50+ else t
4651 }
4752
4853
49-func r (s) = {
50- let t = (("vote_" + s) + "_confirmed")
51- let u = (("vote_" + s) + "_rejected")
52- let v = valueOrElse(getBoolean(t), false)
53- let w = valueOrElse(getBoolean(u), false)
54- if (v)
55- then true
56- else w
57- }
58-
59-
60-func x (y,z) = {
61- let A = valueOrElse(getString(y), "")
62- if (!(isDefined(indexOf(A, z))))
63- then if ((size(A) == 0))
64- then [StringEntry(y, z)]
65- else [StringEntry(y, makeString_11C((split_51C(A, ",") :+ z), ","))]
54+func u (v,w) = {
55+ let x = valueOrElse(getString(v), "")
56+ if (!(isDefined(indexOf(x, w))))
57+ then if ((size(x) == 0))
58+ then [StringEntry(v, w)]
59+ else [StringEntry(v, makeString_11C((split_51C(x, ",") :+ w), ","))]
6660 else nil
6761 }
6862
6963
70-func B (y,z) = {
71- let A = valueOrErrorMessage(getString(y), (("Data for key: '" + y) + "' not found"))
72- if (isDefined(indexOf(A, z)))
64+func y (v,w) = {
65+ let x = valueOrErrorMessage(getString(v), (("Data for key: '" + v) + "' not found"))
66+ if (isDefined(indexOf(x, w)))
7367 then {
74- let C = split_51C(A, ",")
75- let D = value(indexOf(C, z))
76-[StringEntry(y, makeString_11C(removeByIndex(C, D), ","))]
68+ let z = split_51C(x, ",")
69+ let A = value(indexOf(z, w))
70+[StringEntry(v, makeString_11C(removeByIndex(z, A), ","))]
7771 }
7872 else nil
7973 }
8074
8175
82-@Callable(E)
76+@Callable(B)
8377 func stake () = {
84- let F = toString(E.caller)
85- let G = valueOrErrorMessage(E.payments[0], "No payments")
86- let l = valueOrErrorMessage(assetInfo(valueOrErrorMessage(G.assetId, "Invalid payment")), "Invalid asset Id")
87- if (if ((G.amount > 0))
78+ let C = toString(B.caller)
79+ let D = valueOrErrorMessage(B.payments[0], "No payments")
80+ let l = valueOrErrorMessage(assetInfo(valueOrErrorMessage(D.assetId, "Invalid payment")), "Invalid asset Id")
81+ if (if ((D.amount > 0))
8882 then k(l)
8983 else false)
9084 then {
91- let H = valueOrElse(getInteger(c), 0)
92- let I = valueOrElse(getInteger(d), 0)
93- let J = (("address_" + F) + "_power")
94- let K = (("address_" + F) + "_totalStaked")
95- let L = (("address_" + F) + "_stakedNfts")
96- let M = valueOrElse(getInteger(J), 0)
97- let N = valueOrElse(getInteger(K), 0)
98- let O = valueOrElse(getString(L), "")
99- if (((N + 1) > 5))
85+ let E = valueOrElse(getInteger(c), 0)
86+ let F = valueOrElse(getInteger(d), 0)
87+ let G = (("address_" + C) + "_power")
88+ let H = (("address_" + C) + "_totalStaked")
89+ let I = (("address_" + C) + "_stakedNfts")
90+ let J = valueOrElse(getInteger(G), 0)
91+ let K = valueOrElse(getInteger(H), 0)
92+ let L = valueOrElse(getString(I), "")
93+ if (((K + 1) > 5))
10094 then throw("You can stake only 5 NFTs")
10195 else {
102- let P = m(l)
103- let Q = toBase58String(l.id)
104- let R = if ((size(O) == 0))
105- then [StringEntry(L, Q)]
106- else [StringEntry(L, makeString((split(O, ",") :+ Q), ","))]
107- (([IntegerEntry(c, (H + 1)), IntegerEntry(d, (I + P)), StringEntry((("nft_" + Q) + "_owner"), F), IntegerEntry((("nft_" + Q) + "_power"), P), IntegerEntry(J, (M + P)), IntegerEntry(K, (N + 1))] ++ x(i, F)) ++ R)
96+ let M = m(l)
97+ let N = toBase58String(l.id)
98+ let O = if ((size(L) == 0))
99+ then [StringEntry(I, N)]
100+ else [StringEntry(I, makeString((split(L, ",") :+ N), ","))]
101+ (([IntegerEntry(c, (E + 1)), IntegerEntry(d, (F + M)), StringEntry((("nft_" + N) + "_owner"), C), IntegerEntry((("nft_" + N) + "_power"), M), IntegerEntry(G, (J + M)), IntegerEntry(H, (K + 1))] ++ u(i, C)) ++ O)
108102 }
109103 }
110104 else throw("No payments")
112106
113107
114108
115-@Callable(E)
116-func unstake (Q) = {
117- let F = toString(E.caller)
118- let l = valueOrErrorMessage(assetInfo(fromBase58String(Q)), "Invalid nft Id")
119- let S = valueOrErrorMessage(getString((("nft_" + Q) + "_owner")), "Owner data invalid")
120- if ((S != F))
109+@Callable(B)
110+func unstake (N) = {
111+ let C = toString(B.caller)
112+ let l = valueOrErrorMessage(assetInfo(fromBase58String(N)), "Invalid nft Id")
113+ let P = valueOrErrorMessage(getString((("nft_" + N) + "_owner")), "Owner data invalid")
114+ if ((P != C))
121115 then throw("You are not the owner")
122116 else if (k(l))
123117 then {
124- let H = valueOrElse(getInteger(c), 0)
125- let I = valueOrElse(getInteger(d), 0)
126- let J = (("address_" + F) + "_power")
127- let K = (("address_" + F) + "_totalStaked")
128- let L = (("address_" + F) + "_stakedNfts")
129- let M = valueOrErrorMessage(getInteger(J), "Address power value not found")
130- let N = valueOrErrorMessage(getInteger(K), "Address total staked value not found")
131- let O = valueOrErrorMessage(getString(L), "Address staked Nfts value not found")
132- let T = toBase58String(l.id)
133- let P = getIntegerValue((("nft_" + T) + "_power"))
134- let U = (M - P)
135- let V = if ((U == 0))
136- then B(i, F)
118+ let E = valueOrElse(getInteger(c), 0)
119+ let F = valueOrElse(getInteger(d), 0)
120+ let G = (("address_" + C) + "_power")
121+ let H = (("address_" + C) + "_totalStaked")
122+ let I = (("address_" + C) + "_stakedNfts")
123+ let J = valueOrErrorMessage(getInteger(G), "Address power value not found")
124+ let K = valueOrErrorMessage(getInteger(H), "Address total staked value not found")
125+ let L = valueOrErrorMessage(getString(I), "Address staked Nfts value not found")
126+ let Q = toBase58String(l.id)
127+ let M = getIntegerValue((("nft_" + Q) + "_power"))
128+ let R = (J - M)
129+ let S = if ((R == 0))
130+ then y(i, C)
137131 else nil
138- let W = split(O, ",")
139- let X = valueOrErrorMessage(indexOf(W, Q), "NFT not founed in address staked list")
140- ([ScriptTransfer(E.caller, 1, l.id), IntegerEntry(c, (H - 1)), IntegerEntry(d, (I - P)), DeleteEntry((("nft_" + T) + "_owner")), DeleteEntry((("nft_" + T) + "_power")), IntegerEntry(J, U), IntegerEntry(K, (N - 1)), StringEntry(L, makeString(removeByIndex(W, X), ","))] ++ V)
132+ let T = split(L, ",")
133+ let U = valueOrErrorMessage(indexOf(T, N), "NFT not founed in address staked list")
134+ ([ScriptTransfer(B.caller, 1, l.id), IntegerEntry(c, (E - 1)), IntegerEntry(d, (F - M)), DeleteEntry((("nft_" + Q) + "_owner")), DeleteEntry((("nft_" + Q) + "_power")), IntegerEntry(G, R), IntegerEntry(H, (K - 1)), StringEntry(I, makeString(removeByIndex(T, U), ","))] ++ S)
141135 }
142136 else throw("Invalid nft Id")
143137 }
144138
145139
146140
147-@Callable(E)
148-func sendToVote (p) = {
149- let Y = o(p)
150- let Z = {
151- let aa = getString((("collection_" + p) + "_voteId"))
152- if ($isInstanceOf(aa, "String"))
141+@Callable(B)
142+func sendToVote (V) = {
143+ let W = split(V, "_")[0]
144+ let X = {
145+ let Y = getString((("collection_" + V) + "_voteId"))
146+ if ($isInstanceOf(Y, "String"))
153147 then {
154- let ab = aa
148+ let Z = Y
155149 true
156150 }
157151 else false
158152 }
159- if ((size(Y) == 0))
153+ if ((size(W) == 0))
160154 then throw("Collection issuer not found")
161- else if (Z)
155+ else if (X)
162156 then throw("Collection has already been submitted for voting")
163- else if ((indexOf(j, toString(E.caller)) == unit))
157+ else if ((indexOf(j, toString(B.caller)) == unit))
164158 then throw("Functionality temporarily unavailable")
165- else if ((Y != toString(E.caller)))
159+ else if ((W != toString(B.caller)))
166160 then throw("Only the issuer can submit to the vote")
167161 else {
168- let s = toBase58String(sha256_16Kb(toBytes(p)))
169- let ac = valueOrElse(getInteger("total_votes"), 0)
170-[StringEntry((("collection_" + p) + "_voteId"), s), StringEntry((("vote_" + s) + "_collectionId"), p), StringEntry((("vote_" + s) + "_owner"), toString(E.caller)), IntegerEntry((("vote_" + s) + "_createdAt"), height), IntegerEntry("total_votes", (ac + 1))]
162+ let p = toBase58String(sha256_16Kb(toBytes(V)))
163+ let aa = valueOrElse(getInteger("total_votes"), 0)
164+[StringEntry((("collection_" + V) + "_voteId"), p), StringEntry((("vote_" + p) + "_collectionId"), V), StringEntry((("vote_" + p) + "_owner"), toString(B.caller)), IntegerEntry((("vote_" + p) + "_createdAt"), height), IntegerEntry("total_votes", (aa + 1))]
171165 }
172166 }
173167
174168
175169
176-@Callable(E)
177-func removeFromVote (s) = {
178- let p = valueOrErrorMessage(getString((("vote_" + s) + "_collectionId")), "Collection Id not found")
179- let ad = valueOrErrorMessage(getString((("vote_" + s) + "_owner")), "Owner not found")
180- if ((ad != toString(E.caller)))
170+@Callable(B)
171+func removeFromVote (p) = {
172+ let V = valueOrErrorMessage(getString((("vote_" + p) + "_collectionId")), "Collection Id not found")
173+ let ab = valueOrErrorMessage(getString((("vote_" + p) + "_owner")), "Owner not found")
174+ if ((ab != toString(B.caller)))
181175 then throw("You are not the owner")
182- else if (r(s))
176+ else if (o(p))
183177 then throw("Voting is closed")
184178 else {
185- let ac = valueOrErrorMessage(getInteger("total_votes"), "total votes value not found")
186-[DeleteEntry((("collection_" + p) + "_voteId")), DeleteEntry((("vote_" + s) + "_collectionId")), DeleteEntry((("vote_" + s) + "_owner")), DeleteEntry((("vote_" + s) + "_createdAt")), IntegerEntry("total_votes", (ac - 1))]
179+ let aa = valueOrErrorMessage(getInteger("total_votes"), "total votes value not found")
180+[DeleteEntry((("collection_" + V) + "_voteId")), DeleteEntry((("vote_" + p) + "_collectionId")), DeleteEntry((("vote_" + p) + "_owner")), DeleteEntry((("vote_" + p) + "_createdAt")), IntegerEntry("total_votes", (aa - 1))]
187181 }
188182 }
189183
190184
191185
192-@Callable(E)
193-func voteByNFT (s,ae) = {
194- let F = toString(E.caller)
195- let p = valueOrElse(getString((("vote_" + s) + "_collectionId")), "")
196- if (r(s))
186+@Callable(B)
187+func voteByNFT (p,ac) = {
188+ let C = toString(B.caller)
189+ let V = valueOrElse(getString((("vote_" + p) + "_collectionId")), "")
190+ if (o(p))
197191 then throw("Voting is closed")
198- else if ((size(p) == 0))
192+ else if ((size(V) == 0))
199193 then throw("Collection not found")
200- else if ((size(ae) == 0))
194+ else if ((size(ac) == 0))
201195 then throw("Assets list is empty")
202196 else {
203- let af = (("vote_" + s) + "_upPower")
204- let ag = (("vote_" + s) + "_downPower")
205- let ah = (("vote_" + s) + "_totalPower")
206- let ai = (("vote_" + s) + "_usedNfts")
207- let aj = (("voter_" + F) + "_spentPower")
208- let ak = (((("voter_" + F) + "_vote_") + s) + "_usedNfts")
209- let al = (((("voter_" + F) + "_vote_") + s) + "_spentPower")
210- let J = (("address_" + F) + "_power")
211- let L = (("address_" + F) + "_stakedNfts")
197+ let ad = (("vote_" + p) + "_upPower")
198+ let ae = (("vote_" + p) + "_downPower")
199+ let af = (("vote_" + p) + "_totalPower")
200+ let ag = (("vote_" + p) + "_usedNfts")
201+ let ah = (("voter_" + C) + "_spentPower")
202+ let ai = (((("voter_" + C) + "_vote_") + p) + "_usedNfts")
203+ let aj = (((("voter_" + C) + "_vote_") + p) + "_spentPower")
204+ let G = (("address_" + C) + "_power")
205+ let I = (("address_" + C) + "_stakedNfts")
206+ let ak = valueOrElse(getInteger(ad), 0)
207+ let al = valueOrElse(getInteger(ae), 0)
212208 let am = valueOrElse(getInteger(af), 0)
213- let an = valueOrElse(getInteger(ag), 0)
209+ let an = valueOrElse(getString(ag), "")
214210 let ao = valueOrElse(getInteger(ah), 0)
215211 let ap = valueOrElse(getString(ai), "")
216- let aq = valueOrElse(getInteger(aj), 0)
217- let ar = valueOrElse(getString(ak), "")
218- let as = valueOrElse(getInteger(e), 0)
219- let at = valueOrElse(getInteger(al), 0)
220- let M = valueOrErrorMessage(getInteger(J), "You don't have power")
221- let O = valueOrErrorMessage(getString(L), "You don't have staked NFTs")
222- let au = (("address_" + F) + "_lastRewardsRound")
223- let av = valueOrElse(getInteger(g), 0)
224- let aw = valueOrElse(getInteger(au), 0)
225- let ax = split(ae, "|")
226- let ay = if ((size(ap) == 0))
212+ let aq = valueOrElse(getInteger(e), 0)
213+ let ar = valueOrElse(getInteger(aj), 0)
214+ let J = valueOrErrorMessage(getInteger(G), "You don't have power")
215+ let L = valueOrErrorMessage(getString(I), "You don't have staked NFTs")
216+ let as = (("address_" + C) + "_lastRewardsRound")
217+ let at = valueOrElse(getInteger(g), 0)
218+ let au = valueOrElse(getInteger(as), 0)
219+ let av = split(ac, "|")
220+ let aw = if ((size(an) == 0))
221+ then nil
222+ else split_51C(an, ",")
223+ let ax = if ((size(ap) == 0))
227224 then nil
228225 else split_51C(ap, ",")
229- let az = if ((size(ar) == 0))
230- then nil
231- else split_51C(ar, ",")
232- func aA (aB,aC) = {
233- let aD = split(aC, "_")
234- let aE = aD[0]
235- let aF = aD[1]
236- let aG = valueOrErrorMessage(getInteger((("nft_" + aE) + "_power")), "NFT power not found")
237- let aH = valueOrElse(indexOf(O, aE), -1)
238- if ((aG == 0))
226+ func ay (az,aA) = {
227+ let aB = split(aA, "_")
228+ let aC = aB[0]
229+ let aD = aB[1]
230+ let aE = valueOrErrorMessage(getInteger((("nft_" + aC) + "_power")), "NFT power not found")
231+ let aF = valueOrElse(indexOf(L, aC), -1)
232+ if ((aE == 0))
239233 then throw("Power must be more zero")
240- else if ((aH == -1))
234+ else if ((aF == -1))
241235 then throw("Asset does not belong to you")
242236 else {
243- let aI = valueOrElse(indexOf(ay, aE), -1)
244- if ((aI == -1))
245- then if (if ((aF != "up"))
246- then (aF != "down")
237+ let aG = valueOrElse(indexOf(aw, aC), -1)
238+ if ((aG == -1))
239+ then if (if ((aD != "up"))
240+ then (aD != "down")
247241 else false)
248242 then throw("Invalid type")
249- else $Tuple4((aB._1 + (if ((aF == "up"))
250- then aG
251- else 0)), (aB._2 + (if ((aF == "down"))
252- then aG
253- else 0)), (aB._3 :+ aE), (aB._4 :+ StringEntry(((((("voter_" + F) + "_vote_") + s) + "_assetId_") + aE), ((((aF + ":") + toString(aG)) + ":") + toString(height)))))
254- else aB
243+ else $Tuple4((az._1 + (if ((aD == "up"))
244+ then aE
245+ else 0)), (az._2 + (if ((aD == "down"))
246+ then aE
247+ else 0)), (az._3 :+ aC), (az._4 :+ StringEntry(((((("voter_" + C) + "_vote_") + p) + "_assetId_") + aC), ((((aD + ":") + toString(aE)) + ":") + toString(height)))))
248+ else az
255249 }
256250 }
257251
258- let aJ = {
259- let aK = ax
260- let aL = size(aK)
261- let aM = $Tuple4(0, 0, nil, nil)
262- func aN (aO,aP) = if ((aP >= aL))
263- then aO
264- else aA(aO, aK[aP])
252+ let aH = {
253+ let aI = av
254+ let aJ = size(aI)
255+ let aK = $Tuple4(0, 0, nil, nil)
256+ func aL (aM,aN) = if ((aN >= aJ))
257+ then aM
258+ else ay(aM, aI[aN])
265259
266- func aQ (aO,aP) = if ((aP >= aL))
267- then aO
260+ func aO (aM,aN) = if ((aN >= aJ))
261+ then aM
268262 else throw("List size exceeds 5")
269263
270- aQ(aN(aN(aN(aN(aN(aM, 0), 1), 2), 3), 4), 5)
264+ aO(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5)
271265 }
272- let aR = aJ._1
273- let aS = aJ._2
274- let aT = (aR + aS)
275- if ((aT > M))
266+ let aP = aH._1
267+ let aQ = aH._2
268+ let aR = (aP + aQ)
269+ if ((aR > J))
276270 then throw("Power exceeds power of the account")
277- else if ((aT == 0))
271+ else if ((aR == 0))
278272 then throw("Not enough power to vote")
279- else if ((size(aJ._3) == 0))
273+ else if ((size(aH._3) == 0))
280274 then throw("Used list must not be empty")
281- else if ((size(aJ._4) == 0))
275+ else if ((size(aH._4) == 0))
282276 then throw("State entries list must not be empty")
283277 else {
284- let aU = valueOrErrorMessage(getInteger(f), "Vote power limit not found")
285- let aV = if (((ao + aT) > aU))
286- then x(h, s)
278+ let aS = valueOrErrorMessage(getInteger(f), "Vote power limit not found")
279+ let aT = if (((am + aR) > aS))
280+ then u(h, p)
287281 else nil
288- let aW = if (if ((aw == 0))
289- then (av > aw)
282+ let aU = if (if ((au == 0))
283+ then (at > au)
290284 else false)
291- then [IntegerEntry(au, av)]
285+ then [IntegerEntry(as, at)]
292286 else nil
293- ((([IntegerEntry(aj, (aq + aT)), IntegerEntry(e, (as + aT)), IntegerEntry(af, (am + aR)), IntegerEntry(ag, (an + aS)), IntegerEntry(ah, (ao + aT)), IntegerEntry(al, (at + aT)), StringEntry(ak, makeString_11C((az ++ aJ._3), ",")), StringEntry(ai, makeString_11C((ay ++ aJ._3), ","))] ++ aJ._4) ++ aV) ++ aW)
287+ ((([IntegerEntry(ah, (ao + aR)), IntegerEntry(e, (aq + aR)), IntegerEntry(ad, (ak + aP)), IntegerEntry(ae, (al + aQ)), IntegerEntry(af, (am + aR)), IntegerEntry(aj, (ar + aR)), StringEntry(ai, makeString_11C((ax ++ aH._3), ",")), StringEntry(ag, makeString_11C((aw ++ aH._3), ","))] ++ aH._4) ++ aT) ++ aU)
294288 }
295289 }
296290 }
297291
298292
299293
300-@Callable(E)
301-func unvoteByNFT (s,ae) = {
302- let F = toString(E.caller)
303- let p = valueOrElse(getString((("vote_" + s) + "_collectionId")), "")
304- if (r(s))
294+@Callable(B)
295+func unvoteByNFT (p,ac) = {
296+ let C = toString(B.caller)
297+ let V = valueOrElse(getString((("vote_" + p) + "_collectionId")), "")
298+ if (o(p))
305299 then throw("Voting is closed")
306- else if ((size(p) == 0))
300+ else if ((size(V) == 0))
307301 then throw("Collection not found")
308302 else {
309- let af = (("vote_" + s) + "_upPower")
310- let ag = (("vote_" + s) + "_downPower")
311- let ah = (("vote_" + s) + "_totalPower")
312- let ai = (("vote_" + s) + "_usedNfts")
313- let aj = (("voter_" + F) + "_spentPower")
314- let ak = (((("voter_" + F) + "_vote_") + s) + "_usedNfts")
315- let al = (((("voter_" + F) + "_vote_") + s) + "_spentPower")
316- let J = (("address_" + F) + "_power")
317- let L = (("address_" + F) + "_stakedNfts")
318- let am = valueOrErrorMessage(getInteger(af), "Up vote power not found")
319- let an = valueOrErrorMessage(getInteger(ag), "Down vote power not found")
320- let ao = valueOrErrorMessage(getInteger(ah), "Total vote power not found")
321- let ap = valueOrErrorMessage(getString(ai), "Vote used power not found")
322- let aq = valueOrErrorMessage(getInteger(aj), "Voter spent power not found")
323- let aX = valueOrErrorMessage(getInteger(ak), "Voter vote used nfts not found")
324- let ar = valueOrErrorMessage(getString(ak), "Voter vote used nfts list not found")
325- let as = valueOrErrorMessage(getInteger(e), "Total spent power not found")
326- let at = valueOrErrorMessage(getInteger(al), "Address vote spent power not found")
327- let M = valueOrErrorMessage(getInteger(J), "You don't have power")
328- let O = valueOrErrorMessage(getString(L), "You don't have staked NFTs")
329- let ax = if ((size(ae) > 0))
330- then split(ae, "|")
331- else if ((size(ar) == 0))
303+ let ad = (("vote_" + p) + "_upPower")
304+ let ae = (("vote_" + p) + "_downPower")
305+ let af = (("vote_" + p) + "_totalPower")
306+ let ag = (("vote_" + p) + "_usedNfts")
307+ let ah = (("voter_" + C) + "_spentPower")
308+ let ai = (((("voter_" + C) + "_vote_") + p) + "_usedNfts")
309+ let aj = (((("voter_" + C) + "_vote_") + p) + "_spentPower")
310+ let G = (("address_" + C) + "_power")
311+ let I = (("address_" + C) + "_stakedNfts")
312+ let ak = valueOrErrorMessage(getInteger(ad), "Up vote power not found")
313+ let al = valueOrErrorMessage(getInteger(ae), "Down vote power not found")
314+ let am = valueOrErrorMessage(getInteger(af), "Total vote power not found")
315+ let an = valueOrErrorMessage(getString(ag), "Vote used power not found")
316+ let ao = valueOrErrorMessage(getInteger(ah), "Voter spent power not found")
317+ let aV = valueOrErrorMessage(getInteger(ai), "Voter vote used nfts not found")
318+ let ap = valueOrErrorMessage(getString(ai), "Voter vote used nfts list not found")
319+ let aq = valueOrErrorMessage(getInteger(e), "Total spent power not found")
320+ let ar = valueOrErrorMessage(getInteger(aj), "Address vote spent power not found")
321+ let J = valueOrErrorMessage(getInteger(G), "You don't have power")
322+ let L = valueOrErrorMessage(getString(I), "You don't have staked NFTs")
323+ let av = if ((size(ac) > 0))
324+ then split(ac, "|")
325+ else if ((size(ap) == 0))
332326 then nil
333- else split(ar, ",")
334- func aA (aB,aC) = {
335- let aY = valueOrElse(getString(((((("voter_" + F) + "_vote_") + s) + "_assetId_") + aC)), "")
336- let aD = split(aY, ":")
337- let aF = aD[0]
338- let aG = valueOrElse(parseInt(aD[1]), 0)
339- let aH = valueOrElse(indexOf(O, aC), -1)
340- let aZ = valueOrErrorMessage(indexOf(aB._4, aC), "Voter vote used index not found")
341- if ((size(aY) == 0))
342- then aB
343- else if ((aG == 0))
327+ else split(ap, ",")
328+ func ay (az,aA) = {
329+ let aW = valueOrElse(getString(((((("voter_" + C) + "_vote_") + p) + "_assetId_") + aA)), "")
330+ let aB = split(aW, ":")
331+ let aD = aB[0]
332+ let aE = valueOrElse(parseInt(aB[1]), 0)
333+ let aF = valueOrElse(indexOf(L, aA), -1)
334+ let aX = valueOrErrorMessage(indexOf(az._4, aA), "Voter vote used index not found")
335+ if ((size(aW) == 0))
336+ then az
337+ else if ((aE == 0))
344338 then throw("Power must be more zero")
345- else if (if ((0 > aZ))
346- then (aH == -1)
339+ else if (if ((0 > aX))
340+ then (aF == -1)
347341 else false)
348342 then throw("Asset does not belong to you")
349343 else {
350- let ba = valueOrElse(indexOf(aB._3, aC), -1)
351- if ((ba >= 0))
352- then if (if ((aF != "up"))
353- then (aF != "down")
344+ let aY = valueOrElse(indexOf(az._3, aA), -1)
345+ if ((aY >= 0))
346+ then if (if ((aD != "up"))
347+ then (aD != "down")
354348 else false)
355349 then throw("Invalid type")
356- else $Tuple5((aB._1 + (if ((aF == "up"))
357- then aG
358- else 0)), (aB._2 + (if ((aF == "down"))
359- then aG
360- else 0)), removeByIndex(aB._3, ba), removeByIndex(aB._4, aZ), (aB._5 :+ DeleteEntry(((((("voter_" + F) + "_vote_") + s) + "_assetId_") + aC))))
361- else aB
350+ else $Tuple5((az._1 + (if ((aD == "up"))
351+ then aE
352+ else 0)), (az._2 + (if ((aD == "down"))
353+ then aE
354+ else 0)), removeByIndex(az._3, aY), removeByIndex(az._4, aX), (az._5 :+ DeleteEntry(((((("voter_" + C) + "_vote_") + p) + "_assetId_") + aA))))
355+ else az
362356 }
363357 }
364358
365- let aJ = {
366- let aK = ax
367- let aL = size(aK)
368- let aM = $Tuple5(0, 0, split_51C(ap, ","), split_51C(ar, ","), nil)
369- func aN (aO,aP) = if ((aP >= aL))
370- then aO
371- else aA(aO, aK[aP])
359+ let aH = {
360+ let aI = av
361+ let aJ = size(aI)
362+ let aK = $Tuple5(0, 0, split_51C(an, ","), split_51C(ap, ","), nil)
363+ func aL (aM,aN) = if ((aN >= aJ))
364+ then aM
365+ else ay(aM, aI[aN])
372366
373- func aQ (aO,aP) = if ((aP >= aL))
374- then aO
367+ func aO (aM,aN) = if ((aN >= aJ))
368+ then aM
375369 else throw("List size exceeds 5")
376370
377- aQ(aN(aN(aN(aN(aN(aM, 0), 1), 2), 3), 4), 5)
371+ aO(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5)
378372 }
379- let aR = aJ._1
380- let aS = aJ._2
381- let aT = (aR + aS)
382- if ((aT > aq))
373+ let aP = aH._1
374+ let aQ = aH._2
375+ let aR = (aP + aQ)
376+ if ((aR > ao))
383377 then throw("Power value exceeds voter spent power")
384- else if ((aT == 0))
378+ else if ((aR == 0))
385379 then throw("Not enough power to unvote")
386- else if ((size(aJ._5) == 0))
380+ else if ((size(aH._5) == 0))
387381 then throw("State entries list must not be empty")
388382 else {
389- let aU = valueOrErrorMessage(getInteger(f), "Vote power limit not found")
390- let aV = if ((aU > (ao - aT)))
391- then B(h, s)
383+ let aS = valueOrErrorMessage(getInteger(f), "Vote power limit not found")
384+ let aT = if ((aS > (am - aR)))
385+ then y(h, p)
392386 else nil
393- (([IntegerEntry(aj, (aq - aT)), IntegerEntry(e, (as - aT)), IntegerEntry(af, (am - aR)), IntegerEntry(ag, (an - aS)), IntegerEntry(ah, (ao - aT)), IntegerEntry(al, (at - aT)), StringEntry(ak, makeString_11C(aJ._4, ",")), StringEntry(ai, makeString_11C(aJ._3, ","))] ++ aJ._5) ++ aV)
387+ (([IntegerEntry(ah, (ao - aR)), IntegerEntry(e, (aq - aR)), IntegerEntry(ad, (ak - aP)), IntegerEntry(ae, (al - aQ)), IntegerEntry(af, (am - aR)), IntegerEntry(aj, (ar - aR)), StringEntry(ai, makeString_11C(aH._4, ",")), StringEntry(ag, makeString_11C(aH._3, ","))] ++ aH._5) ++ aT)
394388 }
395389 }
396390 }
397391
398392
399393
400-@Callable(E)
401-func fillTreasuary () = if ((size(E.payments) == 0))
394+@Callable(B)
395+func fillTreasuary () = if ((size(B.payments) == 0))
402396 then throw("No payment")
403- else if ((E.payments[0].amount == 0))
397+ else if ((B.payments[0].amount == 0))
404398 then throw("Payment must be more 0")
405- else if ((E.payments[0].assetId != b))
399+ else if ((B.payments[0].assetId != b))
406400 then throw("Payment must be in USDT")
407401 else {
408- let bb = E.payments[0].amount
409- let q = value(E.payments[0].assetId)
410- let bc = valueOrElse(getString(h), "")
411- if ((size(bc) == 0))
402+ let aZ = B.payments[0].amount
403+ let ba = value(B.payments[0].assetId)
404+ let bb = valueOrElse(getString(h), "")
405+ if ((size(bb) == 0))
412406 then throw("Canditates list is empty")
413407 else {
414- let bd = split(bc, ",")
415- func be (aB,aC) = {
416- let s = aC
417- let af = (("vote_" + s) + "_upPower")
418- let ag = (("vote_" + s) + "_downPower")
419- let ah = (("vote_" + s) + "_totalPower")
420- let bf = valueOrElse(getInteger(af), 0)
421- let bg = valueOrElse(getInteger(ag), 0)
422- let bh = valueOrElse(getInteger(ah), 0)
423- let aU = valueOrErrorMessage(getInteger(f), "Vote power limit not found")
424- if ((bh == 0))
408+ let bc = split(bb, ",")
409+ func bd (az,aA) = {
410+ let p = aA
411+ let ad = (("vote_" + p) + "_upPower")
412+ let ae = (("vote_" + p) + "_downPower")
413+ let af = (("vote_" + p) + "_totalPower")
414+ let be = valueOrElse(getInteger(ad), 0)
415+ let bf = valueOrElse(getInteger(ae), 0)
416+ let bg = valueOrElse(getInteger(af), 0)
417+ let aS = valueOrErrorMessage(getInteger(f), "Vote power limit not found")
418+ if ((bg == 0))
425419 then throw("Invalid total power")
426- else if ((aU > bh))
420+ else if ((aS > bg))
427421 then throw("Power less than limit")
428- else if (((bf + bg) == 0))
422+ else if (((be + bf) == 0))
429423 then throw("Invalid up, down power")
430- else if (r(s))
431- then $Tuple4(aB._1, aB._2, aB._3, B(h, s))
424+ else if (o(p))
425+ then $Tuple4(az._1, az._2, az._3, y(h, p))
432426 else {
433- let bi = fraction(bf, 100, bh)
434- let bj = if ((bi > 50))
435- then BooleanEntry((("vote_" + s) + "_confirmed"), true)
436- else BooleanEntry((("vote_" + s) + "_rejected"), true)
437- $Tuple4((aB._1 + bh), (aB._2 :+ s), (aB._3 :+ bj), B(h, s))
427+ let bh = fraction(be, 100, bg)
428+ let bi = if ((bh > 50))
429+ then BooleanEntry((("vote_" + p) + "_confirmed"), true)
430+ else BooleanEntry((("vote_" + p) + "_rejected"), true)
431+ $Tuple4((az._1 + bg), (az._2 :+ p), (az._3 :+ bi), y(h, p))
438432 }
439433 }
440434
441- let bk = {
442- let aK = bd
443- let aL = size(aK)
444- let aM = $Tuple4(0, nil, nil, nil)
445- func aN (aO,aP) = if ((aP >= aL))
446- then aO
447- else be(aO, aK[aP])
435+ let bj = {
436+ let aI = bc
437+ let aJ = size(aI)
438+ let aK = $Tuple4(0, nil, nil, nil)
439+ func aL (aM,aN) = if ((aN >= aJ))
440+ then aM
441+ else bd(aM, aI[aN])
448442
449- func aQ (aO,aP) = if ((aP >= aL))
450- then aO
443+ func aO (aM,aN) = if ((aN >= aJ))
444+ then aM
451445 else throw("List size exceeds 10")
452446
453- aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
447+ aO(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
454448 }
455- let bl = bk._1
456- let bm = bk._2
457- let bn = bk._3
458- let bo = bk._4
459- if ((bl == 0))
449+ let bk = bj._1
450+ let bl = bj._2
451+ let bm = bj._3
452+ let bn = bj._4
453+ if ((bk == 0))
460454 then throw("No power after process canditates")
461455 else {
462- let av = valueOrElse(getInteger(g), 0)
463- let bp = fraction(bb, 1, bl)
464- let bq = (("treasuary_" + toBase58String(q)) + "_total")
465- let br = (("treasuary_" + toBase58String(q)) + "_available")
456+ let at = valueOrElse(getInteger(g), 0)
457+ let bo = fraction(aZ, 1, bk)
458+ let bp = (("treasuary_" + toBase58String(ba)) + "_total")
459+ let bq = (("treasuary_" + toBase58String(ba)) + "_available")
460+ let br = valueOrElse(getInteger(bp), 0)
466461 let bs = valueOrElse(getInteger(bq), 0)
467- let bt = valueOrElse(getInteger(br), 0)
468- (([StringEntry((("reward_" + toString(av)) + "_votesIds"), makeString(bm, ",")), StringEntry((("reward_" + toString(av)) + "_assetId"), toBase58String(q)), IntegerEntry((("reward_" + toString(av)) + "_costPerPower"), bp), IntegerEntry((("reward_" + toString(av)) + "_paidPower"), bl), IntegerEntry(bq, (bs + bb)), IntegerEntry(br, (bt + bb)), IntegerEntry(g, (av + 1))] ++ bn) ++ bo)
462+ (([StringEntry((("reward_" + toString(at)) + "_votesIds"), makeString(bl, ",")), StringEntry((("reward_" + toString(at)) + "_assetId"), toBase58String(ba)), IntegerEntry((("reward_" + toString(at)) + "_costPerPower"), bo), IntegerEntry((("reward_" + toString(at)) + "_paidPower"), bk), IntegerEntry(bp, (br + aZ)), IntegerEntry(bq, (bs + aZ)), IntegerEntry(g, (at + 1))] ++ bm) ++ bn)
469463 }
470464 }
471465 }
472466
473467
474468
475-@Callable(E)
469+@Callable(B)
476470 func claimRewards () = {
477- let F = toString(E.caller)
478- let au = (("address_" + F) + "_lastRewardsRound")
479- let av = valueOrElse(getInteger(g), 0)
480- let aw = valueOrElse(getInteger(au), 0)
481- if ((av == aw))
471+ let C = toString(B.caller)
472+ let as = (("address_" + C) + "_lastRewardsRound")
473+ let at = valueOrElse(getInteger(g), 0)
474+ let au = valueOrElse(getInteger(as), 0)
475+ if ((at == au))
482476 then throw("There were no new payments")
483477 else {
484- func bu (aB,aC) = if ((aB._1 >= av))
485- then aB
478+ func bt (az,aA) = if ((az._1 >= at))
479+ then az
486480 else {
487- let bv = valueOrErrorMessage(getString((("reward_" + toString(aB._1)) + "_votesIds")), "Reward votes ids not found")
488- let q = valueOrErrorMessage(getString((("reward_" + toString(aB._1)) + "_assetId")), "Reward assetId not found")
489- let bw = valueOrErrorMessage(getInteger((("reward_" + toString(aB._1)) + "_costPerPower")), "Reward cost power not found")
490- let bx = (("treasuary_" + q) + "_claimed")
491- let br = (("treasuary_" + q) + "_available")
492- let by = valueOrElse(getInteger(bx), 0)
493- let bt = valueOrErrorMessage(getInteger(br), "Treasuary assetId not found")
494- let bz = (((((("rewardRound_" + toString(aB._1)) + "_address_") + F) + "_assetId_") + q) + "_claimed")
495- let bA = valueOrElse(getInteger(bz), 0)
496- if ((0 >= bt))
481+ let bu = valueOrErrorMessage(getString((("reward_" + toString(az._1)) + "_votesIds")), "Reward votes ids not found")
482+ let ba = valueOrErrorMessage(getString((("reward_" + toString(az._1)) + "_assetId")), "Reward assetId not found")
483+ let bv = valueOrErrorMessage(getInteger((("reward_" + toString(az._1)) + "_costPerPower")), "Reward cost power not found")
484+ let bw = (("treasuary_" + ba) + "_claimed")
485+ let bq = (("treasuary_" + ba) + "_available")
486+ let bx = valueOrElse(getInteger(bw), 0)
487+ let bs = valueOrErrorMessage(getInteger(bq), "Treasuary assetId not found")
488+ let by = (((((("rewardRound_" + toString(az._1)) + "_address_") + C) + "_assetId_") + ba) + "_claimed")
489+ let bz = valueOrElse(getInteger(by), 0)
490+ if ((0 >= bs))
497491 then throw("Treasuary asset Id is empty")
498- else if ((size(bv) == 0))
492+ else if ((size(bu) == 0))
499493 then throw("Vote ids list are empty")
500- else if ((size(q) == 0))
494+ else if ((size(ba) == 0))
501495 then throw("Asset id is empty")
502- else if (if ((bw == 0))
496+ else if (if ((bv == 0))
503497 then true
504- else (0 > bw))
498+ else (0 > bv))
505499 then throw("Invalid cost power")
506500 else {
507- func bB (aB,aC) = {
508- let s = aC
509- let bC = valueOrElse(getInteger((((("voter_" + F) + "_vote_") + s) + "_spentPower")), 0)
510- (aB + bC)
501+ func bA (az,aA) = {
502+ let p = aA
503+ let bB = valueOrElse(getInteger((((("voter_" + C) + "_vote_") + p) + "_spentPower")), 0)
504+ (az + bB)
511505 }
512506
513- let bD = {
514- let aK = split(bv, ",")
515- let aL = size(aK)
516- let aM = 0
517- func aN (aO,aP) = if ((aP >= aL))
518- then aO
519- else bB(aO, aK[aP])
507+ let bC = {
508+ let aI = split(bu, ",")
509+ let aJ = size(aI)
510+ let aK = 0
511+ func aL (aM,aN) = if ((aN >= aJ))
512+ then aM
513+ else bA(aM, aI[aN])
520514
521- func aQ (aO,aP) = if ((aP >= aL))
522- then aO
515+ func aO (aM,aN) = if ((aN >= aJ))
516+ then aM
523517 else throw("List size exceeds 10")
524518
525- aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
519+ aO(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
526520 }
527- if (if ((0 >= bD))
521+ if (if ((0 >= bC))
528522 then true
529- else (bA > 0))
530- then $Tuple2((aB._1 + aC), aB._2)
531- else $Tuple2((aB._1 + aC), (aB._2 ++ [ScriptTransfer(E.caller, (bD * bw), fromBase58String(q)), IntegerEntry(bz, (bD * bw)), IntegerEntry(bx, (by + (bD * bw))), IntegerEntry(br, (bt - (bD * bw)))]))
523+ else (bz > 0))
524+ then $Tuple2((az._1 + aA), az._2)
525+ else $Tuple2((az._1 + aA), (az._2 ++ [ScriptTransfer(B.caller, (bC * bv), fromBase58String(ba)), IntegerEntry(by, (bC * bv)), IntegerEntry(bw, (bx + (bC * bv))), IntegerEntry(bq, (bs - (bC * bv)))]))
532526 }
533527 }
534528
535- let bE = {
536- let aK = [1, 1, 1, 1, 1]
537- let aL = size(aK)
538- let aM = $Tuple2(aw, nil)
539- func aN (aO,aP) = if ((aP >= aL))
540- then aO
541- else bu(aO, aK[aP])
529+ let bD = {
530+ let aI = [1, 1, 1, 1, 1]
531+ let aJ = size(aI)
532+ let aK = $Tuple2(au, nil)
533+ func aL (aM,aN) = if ((aN >= aJ))
534+ then aM
535+ else bt(aM, aI[aN])
542536
543- func aQ (aO,aP) = if ((aP >= aL))
544- then aO
537+ func aO (aM,aN) = if ((aN >= aJ))
538+ then aM
545539 else throw("List size exceeds 5")
546540
547- aQ(aN(aN(aN(aN(aN(aM, 0), 1), 2), 3), 4), 5)
541+ aO(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5)
548542 }
549- ([IntegerEntry(au, bE._1)] ++ bE._2)
543+ ([IntegerEntry(as, bD._1)] ++ bD._2)
550544 }
551545 }
552546
553547
554-@Verifier(bF)
555-func bG () = sigVerify(bF.bodyBytes, bF.proofs[0], bF.senderPublicKey)
548+@Verifier(bE)
549+func bF () = sigVerify(bE.bodyBytes, bE.proofs[0], bE.senderPublicKey)
556550
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = Address(base58'3PFQjjDMiZKQZdu5JqTHD7HwgSXyp9Rw9By')
55
66 let b = base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ'
77
88 let c = "total_staked"
99
1010 let d = "total_power"
1111
1212 let e = "total_spentPower"
1313
1414 let f = "VOTE_POWER_LIMIT"
1515
1616 let g = "current_rewords_round"
1717
1818 let h = "final_voiting_candidates"
1919
2020 let i = "all_staked_addresses"
2121
2222 let j = ["3PJKmXoHJvVeQXjSJdhtkUcFDtdiQqMbUTD", "3PQdNxynJy5mche2kxMVc5shXWzK8Gstq3o", "3PCyjqHhtq9f9Hmn4LNsWwA68dFVsvQ6iNi", "3PKHFX6W4aAr1e1b8MUTz5HmdWVUcjWhgY4", "3P7ZFPFW48Jnw6KvnSmB6oBmDVorNeCpWZ7", "3PMcMiMEs6w56NRGacksXtFG5zS7doE9fpL"]
2323
2424 func k (l) = if (if (if (if ((getStringValue(a, (("nft_" + toBase58String(l.id)) + "_issuer")) == toString(this)))
2525 then (l.issuer == a)
2626 else false)
2727 then (l.decimals == 0)
2828 else false)
2929 then (l.reissuable == false)
3030 else false)
3131 then (l.quantity == 1)
3232 else false
3333
3434
3535 func m (l) = {
3636 let n = getStringValue(a, (("nft_" + toBase58String(l.id)) + "_params"))
3737 if ((n == "gold"))
3838 then 100
3939 else 40
4040 }
4141
4242
4343 func o (p) = {
44- let q = valueOrElse(getString(a, (("collection_" + p) + "_assetId")), "")
45- valueOrElse(getString(a, (("nft_" + q) + "_issuer")), "")
44+ let q = (("vote_" + p) + "_confirmed")
45+ let r = (("vote_" + p) + "_rejected")
46+ let s = valueOrElse(getBoolean(q), false)
47+ let t = valueOrElse(getBoolean(r), false)
48+ if (s)
49+ then true
50+ else t
4651 }
4752
4853
49-func r (s) = {
50- let t = (("vote_" + s) + "_confirmed")
51- let u = (("vote_" + s) + "_rejected")
52- let v = valueOrElse(getBoolean(t), false)
53- let w = valueOrElse(getBoolean(u), false)
54- if (v)
55- then true
56- else w
57- }
58-
59-
60-func x (y,z) = {
61- let A = valueOrElse(getString(y), "")
62- if (!(isDefined(indexOf(A, z))))
63- then if ((size(A) == 0))
64- then [StringEntry(y, z)]
65- else [StringEntry(y, makeString_11C((split_51C(A, ",") :+ z), ","))]
54+func u (v,w) = {
55+ let x = valueOrElse(getString(v), "")
56+ if (!(isDefined(indexOf(x, w))))
57+ then if ((size(x) == 0))
58+ then [StringEntry(v, w)]
59+ else [StringEntry(v, makeString_11C((split_51C(x, ",") :+ w), ","))]
6660 else nil
6761 }
6862
6963
70-func B (y,z) = {
71- let A = valueOrErrorMessage(getString(y), (("Data for key: '" + y) + "' not found"))
72- if (isDefined(indexOf(A, z)))
64+func y (v,w) = {
65+ let x = valueOrErrorMessage(getString(v), (("Data for key: '" + v) + "' not found"))
66+ if (isDefined(indexOf(x, w)))
7367 then {
74- let C = split_51C(A, ",")
75- let D = value(indexOf(C, z))
76-[StringEntry(y, makeString_11C(removeByIndex(C, D), ","))]
68+ let z = split_51C(x, ",")
69+ let A = value(indexOf(z, w))
70+[StringEntry(v, makeString_11C(removeByIndex(z, A), ","))]
7771 }
7872 else nil
7973 }
8074
8175
82-@Callable(E)
76+@Callable(B)
8377 func stake () = {
84- let F = toString(E.caller)
85- let G = valueOrErrorMessage(E.payments[0], "No payments")
86- let l = valueOrErrorMessage(assetInfo(valueOrErrorMessage(G.assetId, "Invalid payment")), "Invalid asset Id")
87- if (if ((G.amount > 0))
78+ let C = toString(B.caller)
79+ let D = valueOrErrorMessage(B.payments[0], "No payments")
80+ let l = valueOrErrorMessage(assetInfo(valueOrErrorMessage(D.assetId, "Invalid payment")), "Invalid asset Id")
81+ if (if ((D.amount > 0))
8882 then k(l)
8983 else false)
9084 then {
91- let H = valueOrElse(getInteger(c), 0)
92- let I = valueOrElse(getInteger(d), 0)
93- let J = (("address_" + F) + "_power")
94- let K = (("address_" + F) + "_totalStaked")
95- let L = (("address_" + F) + "_stakedNfts")
96- let M = valueOrElse(getInteger(J), 0)
97- let N = valueOrElse(getInteger(K), 0)
98- let O = valueOrElse(getString(L), "")
99- if (((N + 1) > 5))
85+ let E = valueOrElse(getInteger(c), 0)
86+ let F = valueOrElse(getInteger(d), 0)
87+ let G = (("address_" + C) + "_power")
88+ let H = (("address_" + C) + "_totalStaked")
89+ let I = (("address_" + C) + "_stakedNfts")
90+ let J = valueOrElse(getInteger(G), 0)
91+ let K = valueOrElse(getInteger(H), 0)
92+ let L = valueOrElse(getString(I), "")
93+ if (((K + 1) > 5))
10094 then throw("You can stake only 5 NFTs")
10195 else {
102- let P = m(l)
103- let Q = toBase58String(l.id)
104- let R = if ((size(O) == 0))
105- then [StringEntry(L, Q)]
106- else [StringEntry(L, makeString((split(O, ",") :+ Q), ","))]
107- (([IntegerEntry(c, (H + 1)), IntegerEntry(d, (I + P)), StringEntry((("nft_" + Q) + "_owner"), F), IntegerEntry((("nft_" + Q) + "_power"), P), IntegerEntry(J, (M + P)), IntegerEntry(K, (N + 1))] ++ x(i, F)) ++ R)
96+ let M = m(l)
97+ let N = toBase58String(l.id)
98+ let O = if ((size(L) == 0))
99+ then [StringEntry(I, N)]
100+ else [StringEntry(I, makeString((split(L, ",") :+ N), ","))]
101+ (([IntegerEntry(c, (E + 1)), IntegerEntry(d, (F + M)), StringEntry((("nft_" + N) + "_owner"), C), IntegerEntry((("nft_" + N) + "_power"), M), IntegerEntry(G, (J + M)), IntegerEntry(H, (K + 1))] ++ u(i, C)) ++ O)
108102 }
109103 }
110104 else throw("No payments")
111105 }
112106
113107
114108
115-@Callable(E)
116-func unstake (Q) = {
117- let F = toString(E.caller)
118- let l = valueOrErrorMessage(assetInfo(fromBase58String(Q)), "Invalid nft Id")
119- let S = valueOrErrorMessage(getString((("nft_" + Q) + "_owner")), "Owner data invalid")
120- if ((S != F))
109+@Callable(B)
110+func unstake (N) = {
111+ let C = toString(B.caller)
112+ let l = valueOrErrorMessage(assetInfo(fromBase58String(N)), "Invalid nft Id")
113+ let P = valueOrErrorMessage(getString((("nft_" + N) + "_owner")), "Owner data invalid")
114+ if ((P != C))
121115 then throw("You are not the owner")
122116 else if (k(l))
123117 then {
124- let H = valueOrElse(getInteger(c), 0)
125- let I = valueOrElse(getInteger(d), 0)
126- let J = (("address_" + F) + "_power")
127- let K = (("address_" + F) + "_totalStaked")
128- let L = (("address_" + F) + "_stakedNfts")
129- let M = valueOrErrorMessage(getInteger(J), "Address power value not found")
130- let N = valueOrErrorMessage(getInteger(K), "Address total staked value not found")
131- let O = valueOrErrorMessage(getString(L), "Address staked Nfts value not found")
132- let T = toBase58String(l.id)
133- let P = getIntegerValue((("nft_" + T) + "_power"))
134- let U = (M - P)
135- let V = if ((U == 0))
136- then B(i, F)
118+ let E = valueOrElse(getInteger(c), 0)
119+ let F = valueOrElse(getInteger(d), 0)
120+ let G = (("address_" + C) + "_power")
121+ let H = (("address_" + C) + "_totalStaked")
122+ let I = (("address_" + C) + "_stakedNfts")
123+ let J = valueOrErrorMessage(getInteger(G), "Address power value not found")
124+ let K = valueOrErrorMessage(getInteger(H), "Address total staked value not found")
125+ let L = valueOrErrorMessage(getString(I), "Address staked Nfts value not found")
126+ let Q = toBase58String(l.id)
127+ let M = getIntegerValue((("nft_" + Q) + "_power"))
128+ let R = (J - M)
129+ let S = if ((R == 0))
130+ then y(i, C)
137131 else nil
138- let W = split(O, ",")
139- let X = valueOrErrorMessage(indexOf(W, Q), "NFT not founed in address staked list")
140- ([ScriptTransfer(E.caller, 1, l.id), IntegerEntry(c, (H - 1)), IntegerEntry(d, (I - P)), DeleteEntry((("nft_" + T) + "_owner")), DeleteEntry((("nft_" + T) + "_power")), IntegerEntry(J, U), IntegerEntry(K, (N - 1)), StringEntry(L, makeString(removeByIndex(W, X), ","))] ++ V)
132+ let T = split(L, ",")
133+ let U = valueOrErrorMessage(indexOf(T, N), "NFT not founed in address staked list")
134+ ([ScriptTransfer(B.caller, 1, l.id), IntegerEntry(c, (E - 1)), IntegerEntry(d, (F - M)), DeleteEntry((("nft_" + Q) + "_owner")), DeleteEntry((("nft_" + Q) + "_power")), IntegerEntry(G, R), IntegerEntry(H, (K - 1)), StringEntry(I, makeString(removeByIndex(T, U), ","))] ++ S)
141135 }
142136 else throw("Invalid nft Id")
143137 }
144138
145139
146140
147-@Callable(E)
148-func sendToVote (p) = {
149- let Y = o(p)
150- let Z = {
151- let aa = getString((("collection_" + p) + "_voteId"))
152- if ($isInstanceOf(aa, "String"))
141+@Callable(B)
142+func sendToVote (V) = {
143+ let W = split(V, "_")[0]
144+ let X = {
145+ let Y = getString((("collection_" + V) + "_voteId"))
146+ if ($isInstanceOf(Y, "String"))
153147 then {
154- let ab = aa
148+ let Z = Y
155149 true
156150 }
157151 else false
158152 }
159- if ((size(Y) == 0))
153+ if ((size(W) == 0))
160154 then throw("Collection issuer not found")
161- else if (Z)
155+ else if (X)
162156 then throw("Collection has already been submitted for voting")
163- else if ((indexOf(j, toString(E.caller)) == unit))
157+ else if ((indexOf(j, toString(B.caller)) == unit))
164158 then throw("Functionality temporarily unavailable")
165- else if ((Y != toString(E.caller)))
159+ else if ((W != toString(B.caller)))
166160 then throw("Only the issuer can submit to the vote")
167161 else {
168- let s = toBase58String(sha256_16Kb(toBytes(p)))
169- let ac = valueOrElse(getInteger("total_votes"), 0)
170-[StringEntry((("collection_" + p) + "_voteId"), s), StringEntry((("vote_" + s) + "_collectionId"), p), StringEntry((("vote_" + s) + "_owner"), toString(E.caller)), IntegerEntry((("vote_" + s) + "_createdAt"), height), IntegerEntry("total_votes", (ac + 1))]
162+ let p = toBase58String(sha256_16Kb(toBytes(V)))
163+ let aa = valueOrElse(getInteger("total_votes"), 0)
164+[StringEntry((("collection_" + V) + "_voteId"), p), StringEntry((("vote_" + p) + "_collectionId"), V), StringEntry((("vote_" + p) + "_owner"), toString(B.caller)), IntegerEntry((("vote_" + p) + "_createdAt"), height), IntegerEntry("total_votes", (aa + 1))]
171165 }
172166 }
173167
174168
175169
176-@Callable(E)
177-func removeFromVote (s) = {
178- let p = valueOrErrorMessage(getString((("vote_" + s) + "_collectionId")), "Collection Id not found")
179- let ad = valueOrErrorMessage(getString((("vote_" + s) + "_owner")), "Owner not found")
180- if ((ad != toString(E.caller)))
170+@Callable(B)
171+func removeFromVote (p) = {
172+ let V = valueOrErrorMessage(getString((("vote_" + p) + "_collectionId")), "Collection Id not found")
173+ let ab = valueOrErrorMessage(getString((("vote_" + p) + "_owner")), "Owner not found")
174+ if ((ab != toString(B.caller)))
181175 then throw("You are not the owner")
182- else if (r(s))
176+ else if (o(p))
183177 then throw("Voting is closed")
184178 else {
185- let ac = valueOrErrorMessage(getInteger("total_votes"), "total votes value not found")
186-[DeleteEntry((("collection_" + p) + "_voteId")), DeleteEntry((("vote_" + s) + "_collectionId")), DeleteEntry((("vote_" + s) + "_owner")), DeleteEntry((("vote_" + s) + "_createdAt")), IntegerEntry("total_votes", (ac - 1))]
179+ let aa = valueOrErrorMessage(getInteger("total_votes"), "total votes value not found")
180+[DeleteEntry((("collection_" + V) + "_voteId")), DeleteEntry((("vote_" + p) + "_collectionId")), DeleteEntry((("vote_" + p) + "_owner")), DeleteEntry((("vote_" + p) + "_createdAt")), IntegerEntry("total_votes", (aa - 1))]
187181 }
188182 }
189183
190184
191185
192-@Callable(E)
193-func voteByNFT (s,ae) = {
194- let F = toString(E.caller)
195- let p = valueOrElse(getString((("vote_" + s) + "_collectionId")), "")
196- if (r(s))
186+@Callable(B)
187+func voteByNFT (p,ac) = {
188+ let C = toString(B.caller)
189+ let V = valueOrElse(getString((("vote_" + p) + "_collectionId")), "")
190+ if (o(p))
197191 then throw("Voting is closed")
198- else if ((size(p) == 0))
192+ else if ((size(V) == 0))
199193 then throw("Collection not found")
200- else if ((size(ae) == 0))
194+ else if ((size(ac) == 0))
201195 then throw("Assets list is empty")
202196 else {
203- let af = (("vote_" + s) + "_upPower")
204- let ag = (("vote_" + s) + "_downPower")
205- let ah = (("vote_" + s) + "_totalPower")
206- let ai = (("vote_" + s) + "_usedNfts")
207- let aj = (("voter_" + F) + "_spentPower")
208- let ak = (((("voter_" + F) + "_vote_") + s) + "_usedNfts")
209- let al = (((("voter_" + F) + "_vote_") + s) + "_spentPower")
210- let J = (("address_" + F) + "_power")
211- let L = (("address_" + F) + "_stakedNfts")
197+ let ad = (("vote_" + p) + "_upPower")
198+ let ae = (("vote_" + p) + "_downPower")
199+ let af = (("vote_" + p) + "_totalPower")
200+ let ag = (("vote_" + p) + "_usedNfts")
201+ let ah = (("voter_" + C) + "_spentPower")
202+ let ai = (((("voter_" + C) + "_vote_") + p) + "_usedNfts")
203+ let aj = (((("voter_" + C) + "_vote_") + p) + "_spentPower")
204+ let G = (("address_" + C) + "_power")
205+ let I = (("address_" + C) + "_stakedNfts")
206+ let ak = valueOrElse(getInteger(ad), 0)
207+ let al = valueOrElse(getInteger(ae), 0)
212208 let am = valueOrElse(getInteger(af), 0)
213- let an = valueOrElse(getInteger(ag), 0)
209+ let an = valueOrElse(getString(ag), "")
214210 let ao = valueOrElse(getInteger(ah), 0)
215211 let ap = valueOrElse(getString(ai), "")
216- let aq = valueOrElse(getInteger(aj), 0)
217- let ar = valueOrElse(getString(ak), "")
218- let as = valueOrElse(getInteger(e), 0)
219- let at = valueOrElse(getInteger(al), 0)
220- let M = valueOrErrorMessage(getInteger(J), "You don't have power")
221- let O = valueOrErrorMessage(getString(L), "You don't have staked NFTs")
222- let au = (("address_" + F) + "_lastRewardsRound")
223- let av = valueOrElse(getInteger(g), 0)
224- let aw = valueOrElse(getInteger(au), 0)
225- let ax = split(ae, "|")
226- let ay = if ((size(ap) == 0))
212+ let aq = valueOrElse(getInteger(e), 0)
213+ let ar = valueOrElse(getInteger(aj), 0)
214+ let J = valueOrErrorMessage(getInteger(G), "You don't have power")
215+ let L = valueOrErrorMessage(getString(I), "You don't have staked NFTs")
216+ let as = (("address_" + C) + "_lastRewardsRound")
217+ let at = valueOrElse(getInteger(g), 0)
218+ let au = valueOrElse(getInteger(as), 0)
219+ let av = split(ac, "|")
220+ let aw = if ((size(an) == 0))
221+ then nil
222+ else split_51C(an, ",")
223+ let ax = if ((size(ap) == 0))
227224 then nil
228225 else split_51C(ap, ",")
229- let az = if ((size(ar) == 0))
230- then nil
231- else split_51C(ar, ",")
232- func aA (aB,aC) = {
233- let aD = split(aC, "_")
234- let aE = aD[0]
235- let aF = aD[1]
236- let aG = valueOrErrorMessage(getInteger((("nft_" + aE) + "_power")), "NFT power not found")
237- let aH = valueOrElse(indexOf(O, aE), -1)
238- if ((aG == 0))
226+ func ay (az,aA) = {
227+ let aB = split(aA, "_")
228+ let aC = aB[0]
229+ let aD = aB[1]
230+ let aE = valueOrErrorMessage(getInteger((("nft_" + aC) + "_power")), "NFT power not found")
231+ let aF = valueOrElse(indexOf(L, aC), -1)
232+ if ((aE == 0))
239233 then throw("Power must be more zero")
240- else if ((aH == -1))
234+ else if ((aF == -1))
241235 then throw("Asset does not belong to you")
242236 else {
243- let aI = valueOrElse(indexOf(ay, aE), -1)
244- if ((aI == -1))
245- then if (if ((aF != "up"))
246- then (aF != "down")
237+ let aG = valueOrElse(indexOf(aw, aC), -1)
238+ if ((aG == -1))
239+ then if (if ((aD != "up"))
240+ then (aD != "down")
247241 else false)
248242 then throw("Invalid type")
249- else $Tuple4((aB._1 + (if ((aF == "up"))
250- then aG
251- else 0)), (aB._2 + (if ((aF == "down"))
252- then aG
253- else 0)), (aB._3 :+ aE), (aB._4 :+ StringEntry(((((("voter_" + F) + "_vote_") + s) + "_assetId_") + aE), ((((aF + ":") + toString(aG)) + ":") + toString(height)))))
254- else aB
243+ else $Tuple4((az._1 + (if ((aD == "up"))
244+ then aE
245+ else 0)), (az._2 + (if ((aD == "down"))
246+ then aE
247+ else 0)), (az._3 :+ aC), (az._4 :+ StringEntry(((((("voter_" + C) + "_vote_") + p) + "_assetId_") + aC), ((((aD + ":") + toString(aE)) + ":") + toString(height)))))
248+ else az
255249 }
256250 }
257251
258- let aJ = {
259- let aK = ax
260- let aL = size(aK)
261- let aM = $Tuple4(0, 0, nil, nil)
262- func aN (aO,aP) = if ((aP >= aL))
263- then aO
264- else aA(aO, aK[aP])
252+ let aH = {
253+ let aI = av
254+ let aJ = size(aI)
255+ let aK = $Tuple4(0, 0, nil, nil)
256+ func aL (aM,aN) = if ((aN >= aJ))
257+ then aM
258+ else ay(aM, aI[aN])
265259
266- func aQ (aO,aP) = if ((aP >= aL))
267- then aO
260+ func aO (aM,aN) = if ((aN >= aJ))
261+ then aM
268262 else throw("List size exceeds 5")
269263
270- aQ(aN(aN(aN(aN(aN(aM, 0), 1), 2), 3), 4), 5)
264+ aO(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5)
271265 }
272- let aR = aJ._1
273- let aS = aJ._2
274- let aT = (aR + aS)
275- if ((aT > M))
266+ let aP = aH._1
267+ let aQ = aH._2
268+ let aR = (aP + aQ)
269+ if ((aR > J))
276270 then throw("Power exceeds power of the account")
277- else if ((aT == 0))
271+ else if ((aR == 0))
278272 then throw("Not enough power to vote")
279- else if ((size(aJ._3) == 0))
273+ else if ((size(aH._3) == 0))
280274 then throw("Used list must not be empty")
281- else if ((size(aJ._4) == 0))
275+ else if ((size(aH._4) == 0))
282276 then throw("State entries list must not be empty")
283277 else {
284- let aU = valueOrErrorMessage(getInteger(f), "Vote power limit not found")
285- let aV = if (((ao + aT) > aU))
286- then x(h, s)
278+ let aS = valueOrErrorMessage(getInteger(f), "Vote power limit not found")
279+ let aT = if (((am + aR) > aS))
280+ then u(h, p)
287281 else nil
288- let aW = if (if ((aw == 0))
289- then (av > aw)
282+ let aU = if (if ((au == 0))
283+ then (at > au)
290284 else false)
291- then [IntegerEntry(au, av)]
285+ then [IntegerEntry(as, at)]
292286 else nil
293- ((([IntegerEntry(aj, (aq + aT)), IntegerEntry(e, (as + aT)), IntegerEntry(af, (am + aR)), IntegerEntry(ag, (an + aS)), IntegerEntry(ah, (ao + aT)), IntegerEntry(al, (at + aT)), StringEntry(ak, makeString_11C((az ++ aJ._3), ",")), StringEntry(ai, makeString_11C((ay ++ aJ._3), ","))] ++ aJ._4) ++ aV) ++ aW)
287+ ((([IntegerEntry(ah, (ao + aR)), IntegerEntry(e, (aq + aR)), IntegerEntry(ad, (ak + aP)), IntegerEntry(ae, (al + aQ)), IntegerEntry(af, (am + aR)), IntegerEntry(aj, (ar + aR)), StringEntry(ai, makeString_11C((ax ++ aH._3), ",")), StringEntry(ag, makeString_11C((aw ++ aH._3), ","))] ++ aH._4) ++ aT) ++ aU)
294288 }
295289 }
296290 }
297291
298292
299293
300-@Callable(E)
301-func unvoteByNFT (s,ae) = {
302- let F = toString(E.caller)
303- let p = valueOrElse(getString((("vote_" + s) + "_collectionId")), "")
304- if (r(s))
294+@Callable(B)
295+func unvoteByNFT (p,ac) = {
296+ let C = toString(B.caller)
297+ let V = valueOrElse(getString((("vote_" + p) + "_collectionId")), "")
298+ if (o(p))
305299 then throw("Voting is closed")
306- else if ((size(p) == 0))
300+ else if ((size(V) == 0))
307301 then throw("Collection not found")
308302 else {
309- let af = (("vote_" + s) + "_upPower")
310- let ag = (("vote_" + s) + "_downPower")
311- let ah = (("vote_" + s) + "_totalPower")
312- let ai = (("vote_" + s) + "_usedNfts")
313- let aj = (("voter_" + F) + "_spentPower")
314- let ak = (((("voter_" + F) + "_vote_") + s) + "_usedNfts")
315- let al = (((("voter_" + F) + "_vote_") + s) + "_spentPower")
316- let J = (("address_" + F) + "_power")
317- let L = (("address_" + F) + "_stakedNfts")
318- let am = valueOrErrorMessage(getInteger(af), "Up vote power not found")
319- let an = valueOrErrorMessage(getInteger(ag), "Down vote power not found")
320- let ao = valueOrErrorMessage(getInteger(ah), "Total vote power not found")
321- let ap = valueOrErrorMessage(getString(ai), "Vote used power not found")
322- let aq = valueOrErrorMessage(getInteger(aj), "Voter spent power not found")
323- let aX = valueOrErrorMessage(getInteger(ak), "Voter vote used nfts not found")
324- let ar = valueOrErrorMessage(getString(ak), "Voter vote used nfts list not found")
325- let as = valueOrErrorMessage(getInteger(e), "Total spent power not found")
326- let at = valueOrErrorMessage(getInteger(al), "Address vote spent power not found")
327- let M = valueOrErrorMessage(getInteger(J), "You don't have power")
328- let O = valueOrErrorMessage(getString(L), "You don't have staked NFTs")
329- let ax = if ((size(ae) > 0))
330- then split(ae, "|")
331- else if ((size(ar) == 0))
303+ let ad = (("vote_" + p) + "_upPower")
304+ let ae = (("vote_" + p) + "_downPower")
305+ let af = (("vote_" + p) + "_totalPower")
306+ let ag = (("vote_" + p) + "_usedNfts")
307+ let ah = (("voter_" + C) + "_spentPower")
308+ let ai = (((("voter_" + C) + "_vote_") + p) + "_usedNfts")
309+ let aj = (((("voter_" + C) + "_vote_") + p) + "_spentPower")
310+ let G = (("address_" + C) + "_power")
311+ let I = (("address_" + C) + "_stakedNfts")
312+ let ak = valueOrErrorMessage(getInteger(ad), "Up vote power not found")
313+ let al = valueOrErrorMessage(getInteger(ae), "Down vote power not found")
314+ let am = valueOrErrorMessage(getInteger(af), "Total vote power not found")
315+ let an = valueOrErrorMessage(getString(ag), "Vote used power not found")
316+ let ao = valueOrErrorMessage(getInteger(ah), "Voter spent power not found")
317+ let aV = valueOrErrorMessage(getInteger(ai), "Voter vote used nfts not found")
318+ let ap = valueOrErrorMessage(getString(ai), "Voter vote used nfts list not found")
319+ let aq = valueOrErrorMessage(getInteger(e), "Total spent power not found")
320+ let ar = valueOrErrorMessage(getInteger(aj), "Address vote spent power not found")
321+ let J = valueOrErrorMessage(getInteger(G), "You don't have power")
322+ let L = valueOrErrorMessage(getString(I), "You don't have staked NFTs")
323+ let av = if ((size(ac) > 0))
324+ then split(ac, "|")
325+ else if ((size(ap) == 0))
332326 then nil
333- else split(ar, ",")
334- func aA (aB,aC) = {
335- let aY = valueOrElse(getString(((((("voter_" + F) + "_vote_") + s) + "_assetId_") + aC)), "")
336- let aD = split(aY, ":")
337- let aF = aD[0]
338- let aG = valueOrElse(parseInt(aD[1]), 0)
339- let aH = valueOrElse(indexOf(O, aC), -1)
340- let aZ = valueOrErrorMessage(indexOf(aB._4, aC), "Voter vote used index not found")
341- if ((size(aY) == 0))
342- then aB
343- else if ((aG == 0))
327+ else split(ap, ",")
328+ func ay (az,aA) = {
329+ let aW = valueOrElse(getString(((((("voter_" + C) + "_vote_") + p) + "_assetId_") + aA)), "")
330+ let aB = split(aW, ":")
331+ let aD = aB[0]
332+ let aE = valueOrElse(parseInt(aB[1]), 0)
333+ let aF = valueOrElse(indexOf(L, aA), -1)
334+ let aX = valueOrErrorMessage(indexOf(az._4, aA), "Voter vote used index not found")
335+ if ((size(aW) == 0))
336+ then az
337+ else if ((aE == 0))
344338 then throw("Power must be more zero")
345- else if (if ((0 > aZ))
346- then (aH == -1)
339+ else if (if ((0 > aX))
340+ then (aF == -1)
347341 else false)
348342 then throw("Asset does not belong to you")
349343 else {
350- let ba = valueOrElse(indexOf(aB._3, aC), -1)
351- if ((ba >= 0))
352- then if (if ((aF != "up"))
353- then (aF != "down")
344+ let aY = valueOrElse(indexOf(az._3, aA), -1)
345+ if ((aY >= 0))
346+ then if (if ((aD != "up"))
347+ then (aD != "down")
354348 else false)
355349 then throw("Invalid type")
356- else $Tuple5((aB._1 + (if ((aF == "up"))
357- then aG
358- else 0)), (aB._2 + (if ((aF == "down"))
359- then aG
360- else 0)), removeByIndex(aB._3, ba), removeByIndex(aB._4, aZ), (aB._5 :+ DeleteEntry(((((("voter_" + F) + "_vote_") + s) + "_assetId_") + aC))))
361- else aB
350+ else $Tuple5((az._1 + (if ((aD == "up"))
351+ then aE
352+ else 0)), (az._2 + (if ((aD == "down"))
353+ then aE
354+ else 0)), removeByIndex(az._3, aY), removeByIndex(az._4, aX), (az._5 :+ DeleteEntry(((((("voter_" + C) + "_vote_") + p) + "_assetId_") + aA))))
355+ else az
362356 }
363357 }
364358
365- let aJ = {
366- let aK = ax
367- let aL = size(aK)
368- let aM = $Tuple5(0, 0, split_51C(ap, ","), split_51C(ar, ","), nil)
369- func aN (aO,aP) = if ((aP >= aL))
370- then aO
371- else aA(aO, aK[aP])
359+ let aH = {
360+ let aI = av
361+ let aJ = size(aI)
362+ let aK = $Tuple5(0, 0, split_51C(an, ","), split_51C(ap, ","), nil)
363+ func aL (aM,aN) = if ((aN >= aJ))
364+ then aM
365+ else ay(aM, aI[aN])
372366
373- func aQ (aO,aP) = if ((aP >= aL))
374- then aO
367+ func aO (aM,aN) = if ((aN >= aJ))
368+ then aM
375369 else throw("List size exceeds 5")
376370
377- aQ(aN(aN(aN(aN(aN(aM, 0), 1), 2), 3), 4), 5)
371+ aO(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5)
378372 }
379- let aR = aJ._1
380- let aS = aJ._2
381- let aT = (aR + aS)
382- if ((aT > aq))
373+ let aP = aH._1
374+ let aQ = aH._2
375+ let aR = (aP + aQ)
376+ if ((aR > ao))
383377 then throw("Power value exceeds voter spent power")
384- else if ((aT == 0))
378+ else if ((aR == 0))
385379 then throw("Not enough power to unvote")
386- else if ((size(aJ._5) == 0))
380+ else if ((size(aH._5) == 0))
387381 then throw("State entries list must not be empty")
388382 else {
389- let aU = valueOrErrorMessage(getInteger(f), "Vote power limit not found")
390- let aV = if ((aU > (ao - aT)))
391- then B(h, s)
383+ let aS = valueOrErrorMessage(getInteger(f), "Vote power limit not found")
384+ let aT = if ((aS > (am - aR)))
385+ then y(h, p)
392386 else nil
393- (([IntegerEntry(aj, (aq - aT)), IntegerEntry(e, (as - aT)), IntegerEntry(af, (am - aR)), IntegerEntry(ag, (an - aS)), IntegerEntry(ah, (ao - aT)), IntegerEntry(al, (at - aT)), StringEntry(ak, makeString_11C(aJ._4, ",")), StringEntry(ai, makeString_11C(aJ._3, ","))] ++ aJ._5) ++ aV)
387+ (([IntegerEntry(ah, (ao - aR)), IntegerEntry(e, (aq - aR)), IntegerEntry(ad, (ak - aP)), IntegerEntry(ae, (al - aQ)), IntegerEntry(af, (am - aR)), IntegerEntry(aj, (ar - aR)), StringEntry(ai, makeString_11C(aH._4, ",")), StringEntry(ag, makeString_11C(aH._3, ","))] ++ aH._5) ++ aT)
394388 }
395389 }
396390 }
397391
398392
399393
400-@Callable(E)
401-func fillTreasuary () = if ((size(E.payments) == 0))
394+@Callable(B)
395+func fillTreasuary () = if ((size(B.payments) == 0))
402396 then throw("No payment")
403- else if ((E.payments[0].amount == 0))
397+ else if ((B.payments[0].amount == 0))
404398 then throw("Payment must be more 0")
405- else if ((E.payments[0].assetId != b))
399+ else if ((B.payments[0].assetId != b))
406400 then throw("Payment must be in USDT")
407401 else {
408- let bb = E.payments[0].amount
409- let q = value(E.payments[0].assetId)
410- let bc = valueOrElse(getString(h), "")
411- if ((size(bc) == 0))
402+ let aZ = B.payments[0].amount
403+ let ba = value(B.payments[0].assetId)
404+ let bb = valueOrElse(getString(h), "")
405+ if ((size(bb) == 0))
412406 then throw("Canditates list is empty")
413407 else {
414- let bd = split(bc, ",")
415- func be (aB,aC) = {
416- let s = aC
417- let af = (("vote_" + s) + "_upPower")
418- let ag = (("vote_" + s) + "_downPower")
419- let ah = (("vote_" + s) + "_totalPower")
420- let bf = valueOrElse(getInteger(af), 0)
421- let bg = valueOrElse(getInteger(ag), 0)
422- let bh = valueOrElse(getInteger(ah), 0)
423- let aU = valueOrErrorMessage(getInteger(f), "Vote power limit not found")
424- if ((bh == 0))
408+ let bc = split(bb, ",")
409+ func bd (az,aA) = {
410+ let p = aA
411+ let ad = (("vote_" + p) + "_upPower")
412+ let ae = (("vote_" + p) + "_downPower")
413+ let af = (("vote_" + p) + "_totalPower")
414+ let be = valueOrElse(getInteger(ad), 0)
415+ let bf = valueOrElse(getInteger(ae), 0)
416+ let bg = valueOrElse(getInteger(af), 0)
417+ let aS = valueOrErrorMessage(getInteger(f), "Vote power limit not found")
418+ if ((bg == 0))
425419 then throw("Invalid total power")
426- else if ((aU > bh))
420+ else if ((aS > bg))
427421 then throw("Power less than limit")
428- else if (((bf + bg) == 0))
422+ else if (((be + bf) == 0))
429423 then throw("Invalid up, down power")
430- else if (r(s))
431- then $Tuple4(aB._1, aB._2, aB._3, B(h, s))
424+ else if (o(p))
425+ then $Tuple4(az._1, az._2, az._3, y(h, p))
432426 else {
433- let bi = fraction(bf, 100, bh)
434- let bj = if ((bi > 50))
435- then BooleanEntry((("vote_" + s) + "_confirmed"), true)
436- else BooleanEntry((("vote_" + s) + "_rejected"), true)
437- $Tuple4((aB._1 + bh), (aB._2 :+ s), (aB._3 :+ bj), B(h, s))
427+ let bh = fraction(be, 100, bg)
428+ let bi = if ((bh > 50))
429+ then BooleanEntry((("vote_" + p) + "_confirmed"), true)
430+ else BooleanEntry((("vote_" + p) + "_rejected"), true)
431+ $Tuple4((az._1 + bg), (az._2 :+ p), (az._3 :+ bi), y(h, p))
438432 }
439433 }
440434
441- let bk = {
442- let aK = bd
443- let aL = size(aK)
444- let aM = $Tuple4(0, nil, nil, nil)
445- func aN (aO,aP) = if ((aP >= aL))
446- then aO
447- else be(aO, aK[aP])
435+ let bj = {
436+ let aI = bc
437+ let aJ = size(aI)
438+ let aK = $Tuple4(0, nil, nil, nil)
439+ func aL (aM,aN) = if ((aN >= aJ))
440+ then aM
441+ else bd(aM, aI[aN])
448442
449- func aQ (aO,aP) = if ((aP >= aL))
450- then aO
443+ func aO (aM,aN) = if ((aN >= aJ))
444+ then aM
451445 else throw("List size exceeds 10")
452446
453- aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
447+ aO(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
454448 }
455- let bl = bk._1
456- let bm = bk._2
457- let bn = bk._3
458- let bo = bk._4
459- if ((bl == 0))
449+ let bk = bj._1
450+ let bl = bj._2
451+ let bm = bj._3
452+ let bn = bj._4
453+ if ((bk == 0))
460454 then throw("No power after process canditates")
461455 else {
462- let av = valueOrElse(getInteger(g), 0)
463- let bp = fraction(bb, 1, bl)
464- let bq = (("treasuary_" + toBase58String(q)) + "_total")
465- let br = (("treasuary_" + toBase58String(q)) + "_available")
456+ let at = valueOrElse(getInteger(g), 0)
457+ let bo = fraction(aZ, 1, bk)
458+ let bp = (("treasuary_" + toBase58String(ba)) + "_total")
459+ let bq = (("treasuary_" + toBase58String(ba)) + "_available")
460+ let br = valueOrElse(getInteger(bp), 0)
466461 let bs = valueOrElse(getInteger(bq), 0)
467- let bt = valueOrElse(getInteger(br), 0)
468- (([StringEntry((("reward_" + toString(av)) + "_votesIds"), makeString(bm, ",")), StringEntry((("reward_" + toString(av)) + "_assetId"), toBase58String(q)), IntegerEntry((("reward_" + toString(av)) + "_costPerPower"), bp), IntegerEntry((("reward_" + toString(av)) + "_paidPower"), bl), IntegerEntry(bq, (bs + bb)), IntegerEntry(br, (bt + bb)), IntegerEntry(g, (av + 1))] ++ bn) ++ bo)
462+ (([StringEntry((("reward_" + toString(at)) + "_votesIds"), makeString(bl, ",")), StringEntry((("reward_" + toString(at)) + "_assetId"), toBase58String(ba)), IntegerEntry((("reward_" + toString(at)) + "_costPerPower"), bo), IntegerEntry((("reward_" + toString(at)) + "_paidPower"), bk), IntegerEntry(bp, (br + aZ)), IntegerEntry(bq, (bs + aZ)), IntegerEntry(g, (at + 1))] ++ bm) ++ bn)
469463 }
470464 }
471465 }
472466
473467
474468
475-@Callable(E)
469+@Callable(B)
476470 func claimRewards () = {
477- let F = toString(E.caller)
478- let au = (("address_" + F) + "_lastRewardsRound")
479- let av = valueOrElse(getInteger(g), 0)
480- let aw = valueOrElse(getInteger(au), 0)
481- if ((av == aw))
471+ let C = toString(B.caller)
472+ let as = (("address_" + C) + "_lastRewardsRound")
473+ let at = valueOrElse(getInteger(g), 0)
474+ let au = valueOrElse(getInteger(as), 0)
475+ if ((at == au))
482476 then throw("There were no new payments")
483477 else {
484- func bu (aB,aC) = if ((aB._1 >= av))
485- then aB
478+ func bt (az,aA) = if ((az._1 >= at))
479+ then az
486480 else {
487- let bv = valueOrErrorMessage(getString((("reward_" + toString(aB._1)) + "_votesIds")), "Reward votes ids not found")
488- let q = valueOrErrorMessage(getString((("reward_" + toString(aB._1)) + "_assetId")), "Reward assetId not found")
489- let bw = valueOrErrorMessage(getInteger((("reward_" + toString(aB._1)) + "_costPerPower")), "Reward cost power not found")
490- let bx = (("treasuary_" + q) + "_claimed")
491- let br = (("treasuary_" + q) + "_available")
492- let by = valueOrElse(getInteger(bx), 0)
493- let bt = valueOrErrorMessage(getInteger(br), "Treasuary assetId not found")
494- let bz = (((((("rewardRound_" + toString(aB._1)) + "_address_") + F) + "_assetId_") + q) + "_claimed")
495- let bA = valueOrElse(getInteger(bz), 0)
496- if ((0 >= bt))
481+ let bu = valueOrErrorMessage(getString((("reward_" + toString(az._1)) + "_votesIds")), "Reward votes ids not found")
482+ let ba = valueOrErrorMessage(getString((("reward_" + toString(az._1)) + "_assetId")), "Reward assetId not found")
483+ let bv = valueOrErrorMessage(getInteger((("reward_" + toString(az._1)) + "_costPerPower")), "Reward cost power not found")
484+ let bw = (("treasuary_" + ba) + "_claimed")
485+ let bq = (("treasuary_" + ba) + "_available")
486+ let bx = valueOrElse(getInteger(bw), 0)
487+ let bs = valueOrErrorMessage(getInteger(bq), "Treasuary assetId not found")
488+ let by = (((((("rewardRound_" + toString(az._1)) + "_address_") + C) + "_assetId_") + ba) + "_claimed")
489+ let bz = valueOrElse(getInteger(by), 0)
490+ if ((0 >= bs))
497491 then throw("Treasuary asset Id is empty")
498- else if ((size(bv) == 0))
492+ else if ((size(bu) == 0))
499493 then throw("Vote ids list are empty")
500- else if ((size(q) == 0))
494+ else if ((size(ba) == 0))
501495 then throw("Asset id is empty")
502- else if (if ((bw == 0))
496+ else if (if ((bv == 0))
503497 then true
504- else (0 > bw))
498+ else (0 > bv))
505499 then throw("Invalid cost power")
506500 else {
507- func bB (aB,aC) = {
508- let s = aC
509- let bC = valueOrElse(getInteger((((("voter_" + F) + "_vote_") + s) + "_spentPower")), 0)
510- (aB + bC)
501+ func bA (az,aA) = {
502+ let p = aA
503+ let bB = valueOrElse(getInteger((((("voter_" + C) + "_vote_") + p) + "_spentPower")), 0)
504+ (az + bB)
511505 }
512506
513- let bD = {
514- let aK = split(bv, ",")
515- let aL = size(aK)
516- let aM = 0
517- func aN (aO,aP) = if ((aP >= aL))
518- then aO
519- else bB(aO, aK[aP])
507+ let bC = {
508+ let aI = split(bu, ",")
509+ let aJ = size(aI)
510+ let aK = 0
511+ func aL (aM,aN) = if ((aN >= aJ))
512+ then aM
513+ else bA(aM, aI[aN])
520514
521- func aQ (aO,aP) = if ((aP >= aL))
522- then aO
515+ func aO (aM,aN) = if ((aN >= aJ))
516+ then aM
523517 else throw("List size exceeds 10")
524518
525- aQ(aN(aN(aN(aN(aN(aN(aN(aN(aN(aN(aM, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
519+ aO(aL(aL(aL(aL(aL(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
526520 }
527- if (if ((0 >= bD))
521+ if (if ((0 >= bC))
528522 then true
529- else (bA > 0))
530- then $Tuple2((aB._1 + aC), aB._2)
531- else $Tuple2((aB._1 + aC), (aB._2 ++ [ScriptTransfer(E.caller, (bD * bw), fromBase58String(q)), IntegerEntry(bz, (bD * bw)), IntegerEntry(bx, (by + (bD * bw))), IntegerEntry(br, (bt - (bD * bw)))]))
523+ else (bz > 0))
524+ then $Tuple2((az._1 + aA), az._2)
525+ else $Tuple2((az._1 + aA), (az._2 ++ [ScriptTransfer(B.caller, (bC * bv), fromBase58String(ba)), IntegerEntry(by, (bC * bv)), IntegerEntry(bw, (bx + (bC * bv))), IntegerEntry(bq, (bs - (bC * bv)))]))
532526 }
533527 }
534528
535- let bE = {
536- let aK = [1, 1, 1, 1, 1]
537- let aL = size(aK)
538- let aM = $Tuple2(aw, nil)
539- func aN (aO,aP) = if ((aP >= aL))
540- then aO
541- else bu(aO, aK[aP])
529+ let bD = {
530+ let aI = [1, 1, 1, 1, 1]
531+ let aJ = size(aI)
532+ let aK = $Tuple2(au, nil)
533+ func aL (aM,aN) = if ((aN >= aJ))
534+ then aM
535+ else bt(aM, aI[aN])
542536
543- func aQ (aO,aP) = if ((aP >= aL))
544- then aO
537+ func aO (aM,aN) = if ((aN >= aJ))
538+ then aM
545539 else throw("List size exceeds 5")
546540
547- aQ(aN(aN(aN(aN(aN(aM, 0), 1), 2), 3), 4), 5)
541+ aO(aL(aL(aL(aL(aL(aK, 0), 1), 2), 3), 4), 5)
548542 }
549- ([IntegerEntry(au, bE._1)] ++ bE._2)
543+ ([IntegerEntry(as, bD._1)] ++ bD._2)
550544 }
551545 }
552546
553547
554-@Verifier(bF)
555-func bG () = sigVerify(bF.bodyBytes, bF.proofs[0], bF.senderPublicKey)
548+@Verifier(bE)
549+func bF () = sigVerify(bE.bodyBytes, bE.proofs[0], bE.senderPublicKey)
556550

github/deemru/w8io/6500d08 
274.97 ms