tx · FX6dTevMCcgLnir8vUMaqu18wz1YHqn521sb5XHX97yM

3N7hFU6dFSFKGGwDyF9WJ1jVsrB9w8RHT37:  -0.01800000 Waves

2023.01.12 15:14 [2401725] smart account 3N7hFU6dFSFKGGwDyF9WJ1jVsrB9w8RHT37 > SELF 0.00000000 Waves

{ "type": 13, "id": "FX6dTevMCcgLnir8vUMaqu18wz1YHqn521sb5XHX97yM", "fee": 1800000, "feeAssetId": null, "timestamp": 1673525672550, "version": 2, "chainId": 84, "sender": "3N7hFU6dFSFKGGwDyF9WJ1jVsrB9w8RHT37", "senderPublicKey": "J6bcbr8r9usSLYw72NzzrKVCvKDDLe1uDx8bnWp3uFAV", "proofs": [ "43C6AZuTxBJrvxkbe8p4gjKQ82WjsPTAA2gGYW3rna9RND662SJLWVQXWk4996fcvy2z8fYrtZ6FUMe8saWxWHzD" ], "script": "base64:BgIvCAISBwoFCAEBAQESBAoCAQESBwoFCAgBARgSBwoFCAgBARgSAwoBARIDCgEBEgBZAAtyZXZpc2lvbk51bQIAAANTRVACAl9fAAdMSVNUU0VQAgE6AA1ERUZBVUxUUVVPUlVNAKDCHgAKVVJMUEFUVEVSTgIaaHR0cHM6Ly9mb3J1bS5uZXV0cmluby5hdC8ACE1BWFRJVExFAPoBAAZNQVhVUkwA+gEADU1BWFZPVElOR1RJTUUAgJDkwAQABU1VTFQ2AMCEPQAOREVGQVVMVFBBWU1FTlQAgJTr3AMAFERFRkFVTFRDUkVBVElPTkdOU0JUAICU69wDAApQQVNUTUFSR0lOAIC6twMADEZVVFVSRU1BUkdJTgDAy8kCABRERUZBVUxURklSU1RQUk9QT1NBTABvABJnb3ZJZHhQcm9wb3NhbFR4SWQAAQAKZ292SWR4VHlwZQACAAxnb3ZJZHhBdXRob3IAAwAJZ292SWR4VXJsAAQAC2dvdklkeFRpdGxlAAUAEmdvdklkeENyZWF0aW9uVGltZQAGAAtnb3ZJZHhTdGFydAAHAAlnb3ZJZHhFbmQACAALZ292SWR4VHhJZHMACQAMZ292SWR4UXVvcnVtAAoADWdvdklkeE9wdGlvbnMACwATZ292U3RhdHVzSWR4SXNWYWxpZAABABJnb3ZTdGF0dXNJZHhXaW5PcHQAAgAUZ292U3RhdHVzSWR4V2luVm90ZXMAAwAWZ292U3RhdHVzSWR4VG90YWxWb3RlcwAEABVnb3ZTdGF0dXNJZHhTY0FwcGxpZWQABQASZ292U3RhdHVzSWR4U2NUaW1lAAYAFmdvdlN0YXR1c0lkeElzQ2FuY2VsZWQABwEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABDGdldEludE9yRWxzZQIDa2V5CmRlZmF1bHRWYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5BQpkZWZhdWx0VmFsABlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwAAEAGElkeENvbnRyb2xDZmdBdWN0aW9uRGFwcAACABRJZHhDb250cm9sQ2ZnUnBkRGFwcAADABVJZHhDb250cm9sQ2ZnTWF0aERhcHAABAAcSWR4Q29udHJvbENmZ0xpcXVpZGF0aW9uRGFwcAAFABVJZHhDb250cm9sQ2ZnUmVzdERhcHAABgAdSWR4Q29udHJvbENmZ05vZGVSZWdpc3RyeURhcHAABwAcSWR4Q29udHJvbENmZ05zYnRTdGFraW5nRGFwcAAIABlJZHhDb250cm9sQ2ZnTWVkaWF0b3JEYXBwAAkAHElkeENvbnRyb2xDZmdTdXJmU3Rha2luZ0RhcHAACgAgSWR4Q29udHJvbENmZ0duc2J0Q29udHJvbGxlckRhcHAACwAXSWR4Q29udHJvbENmZ1Jlc3RWMkRhcHAADAAbSWR4Q29udHJvbENmZ0dvdmVybmFuY2VEYXBwAA0BEWtleUNvbnRyb2xBZGRyZXNzAAIcJXMlc19fY29uZmlnX19jb250cm9sQWRkcmVzcwENa2V5Q29udHJvbENmZwACESVzX19jb250cm9sQ29uZmlnARRyZWFkQ29udHJvbENmZ09yRmFpbAEHY29udHJvbAkAvAkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUHY29udHJvbAkBDWtleUNvbnRyb2xDZmcABQNTRVABGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIKY29udHJvbENmZwNpZHgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFCmNvbnRyb2xDZmcFA2lkeAkArAICAi1Db250cm9sIGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AA9jb250cm9sQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBEWtleUNvbnRyb2xBZGRyZXNzAAIjM1A1QmZkNThQUGZOdkJNMkh5OFFmYmNEcU1lTnR6ZzdLZlAACmNvbnRyb2xDZmcJARRyZWFkQ29udHJvbENmZ09yRmFpbAEFD2NvbnRyb2xDb250cmFjdAAQbmV1dHJpbm9Db250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFGUlkeENvbnRyb2xDZmdOZXV0cmlub0RhcHAAF2duc2J0Q29udHJvbGxlckNvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUgSWR4Q29udHJvbENmZ0duc2J0Q29udHJvbGxlckRhcHABGGtleVF1b3J1bVJlcXVpcmVkUGVyY2VudAEEdHlwZQkArAICAhYlcyVzX19xdW9ydW1SZXF1aXJlZF9fBQR0eXBlARJrZXlQYXltZW50UmVxdWlyZWQAAhMlc19fcGF5bWVudFJlcXVpcmVkARBrZXlHbnNidFJlcXVpcmVkAAIRJXNfX2dOc2J0UmVxdWlyZWQBEWtleUxhc3RQcm9wb3NhbElkAAIOJXNfX3Byb3Bvc2FsSWQBEmtleUZpcnN0UHJvcG9zYWxJZAACEyVzX19maXJzdFByb3Bvc2FsSWQBFGtleUxhc3RVcGRhdGVWZXJzaW9uAAIRJXNfX3VwZGF0ZVZlcnNpb24BGWtleVByb3Bvc2FsU3RhdHVzRGF0YUJ5SWQBCnByb3Bvc2FsSWQJAKwCAgIaJXMlZF9fcHJvcG9zYWxTdGF0dXNEYXRhX18JAKQDAQUKcHJvcG9zYWxJZAETa2V5UHJvcG9zYWxEYXRhQnlJZAEKcHJvcG9zYWxJZAkArAICAhQlcyVkX19wcm9wb3NhbERhdGFfXwkApAMBBQpwcm9wb3NhbElkAR1rZXlQcm9wb3NhbFZvdGVzQnlJZEFuZE9wdGlvbgIKcHJvcG9zYWxJZANvcHQJALkJAgkAzAgCAgYlcyVkJWQJAMwIAgIKdm90ZXNCeU9wdAkAzAgCCQCkAwEFCnByb3Bvc2FsSWQJAMwIAgkApAMBBQNvcHQFA25pbAUDU0VQARtrZXlQcm9wb3NhbFZvdGVzQnlJZEFuZFVzZXICCnByb3Bvc2FsSWQIdXNlckFkZHIJALkJAgkAzAgCAgYlcyVkJXMJAMwIAgILdm90ZXNCeVVzZXIJAMwIAgkApAMBBQpwcm9wb3NhbElkCQDMCAIFCHVzZXJBZGRyBQNuaWwFA1NFUAEca2V5UHJvcG9zYWxDaG9pY2VCeUlkQW5kVXNlcgIKcHJvcG9zYWxJZAh1c2VyQWRkcgkAuQkCCQDMCAICBiVzJWQlcwkAzAgCAgxvcHRpb25CeVVzZXIJAMwIAgkApAMBBQpwcm9wb3NhbElkCQDMCAIFCHVzZXJBZGRyBQNuaWwFA1NFUAESa2V5QXBwbHlJblByb2dyZXNzAAITJXNfX2FwcGx5SW5Qcm9ncmVzcwEWa2V5UHJvcG9zYWxJZEJ5VG9waWNJZAEHdG9waWNJZAkArAICAhslcyVkX19wcm9wb3NhbElkQnlUb3BpY0lkX18JAKQDAQUHdG9waWNJZAEXa2V5VXNlckduc2J0UmVsZWFzZVRpbWUBCHVzZXJBZGRyCQCsAgICGyVzJXNfdXNlckduc2J0UmVsZWFzZVRpbWVfXwUIdXNlckFkZHIBHmtleU51bVVuaXF1ZVZvdGVyc0J5UHJvcG9zYWxJZAEKcHJvcG9zYWxJZAkArAICAhElcyVkX19udW1Wb3RlcnNfXwkApAMBBQpwcm9wb3NhbElkARhrZXlTdGF0c0F2ZXJVbmlxdWVWb3RlcnMAAiAlcyVzJXNfX3N0YXRzX19hdmdfX3VuaXF1ZVZvdGVycwEWa2V5U3RhdHNBdmVyR25zYnRWb3RlZAACHiVzJXMlc19fc3RhdHNfX2F2Z19fZ25zYnRWb3RlZAEVa2V5U3RhdHNVbmlxdWVBdXRob3JzAAIaJXMlc19fc3RhdHNfX3VuaXF1ZUF1dGhvcnMBF2tleU51bVByb3Bvc2Fsc0J5QXV0aG9yAQphZGRyZXNzU3RyCQCsAgICHCVzJXNfX251bVByb3Bvc2Fsc0J5QXV0aG9yX18FCmFkZHJlc3NTdHIBD2tleUFwcGx5SGlzdG9yeQEJdGltZXN0YW1wCQCsAgICFCVzJWRfX2FwcGx5SGlzdG9yeV9fCQCkAwEFCXRpbWVzdGFtcAEJYXNBbnlMaXN0AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACCUxpc3RbQW55XQQBbAUHJG1hdGNoMAUBbAkAAgECG2ZhaWwgdG8gY2FzdCBpbnRvIExpc3RbQW55XQEFYXNJbnQBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIDSW50BAFpBQckbWF0Y2gwBQFpCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQpzdGF0dXNEYXRhBw1pc1ZvdGluZ1ZhbGlkCXdpbk9wdGlvbg53aW5PcHRpb25Wb3Rlcwp0b3RhbFZvdGVzEWFyZVNjcmlwdHNBcHBsaWVkEHNjcmlwdHNUaW1lc3RhbXAOY2FuY2VsZWRCeVRlYW0JALkJAgkAzAgCAg4lYiVkJWQlZCViJWQlYgkAzAgCCQClAwEFDWlzVm90aW5nVmFsaWQJAMwIAgkApAMBBQl3aW5PcHRpb24JAMwIAgkApAMBBQ53aW5PcHRpb25Wb3RlcwkAzAgCCQCkAwEFCnRvdGFsVm90ZXMJAMwIAgkApQMBBRFhcmVTY3JpcHRzQXBwbGllZAkAzAgCCQCkAwEFEHNjcmlwdHNUaW1lc3RhbXAJAMwIAgkApQMBBQ5jYW5jZWxlZEJ5VGVhbQUDbmlsBQNTRVABDHByb3Bvc2FsRGF0YQsMcHJvcG9zYWxUeElkBHR5cGUGYXV0aG9yCWZvcnVtTGluawV0aXRsZQxwcm9wb3NhbFRpbWUPdm90aW5nU3RhcnRUaW1lDXZvdGluZ0VuZFRpbWUFdHhJZHMNcXVvcnVtSW5HbnNidAdvcHRpb25zCQC5CQIJAMwIAgIWJXMlcyVzJXMlcyVkJWQlZCVzJWQlcwkAzAgCBQxwcm9wb3NhbFR4SWQJAMwIAgUEdHlwZQkAzAgCBQZhdXRob3IJAMwIAgUJZm9ydW1MaW5rCQDMCAIFBXRpdGxlCQDMCAIJAKQDAQUMcHJvcG9zYWxUaW1lCQDMCAIJAKQDAQUPdm90aW5nU3RhcnRUaW1lCQDMCAIJAKQDAQUNdm90aW5nRW5kVGltZQkAzAgCBQV0eElkcwkAzAgCCQCkAwEFDXF1b3J1bUluR25zYnQJAMwIAgUHb3B0aW9ucwUDbmlsBQNTRVABC2NoZWNrVHhMaXN0AQZ0eExpc3QDCQBmAgkAkAMBBQZ0eExpc3QAFAkAAgEJAKwCAgIXVG9vIG1hbnkgdHJhbnNhY3Rpb25zOiAJAKQDAQkAkAMBBQZ0eExpc3QKAQhjb21iaW5lcgIDYWNjAnR4AwkBAiE9AgkAyAEBCQDZBAEFAnR4ACAJAAIBCQCsAgICDFdyb25nIHR4SWQ6IAUCdHgDCQAAAgUDYWNjAgAFAnR4CQCsAgIJAKwCAgUDYWNjBQdMSVNUU0VQBQJ0eAoAAiRsBQZ0eExpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGNvbWJpbmVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAC0lkeEVmZlRvdGFsAAAACklkeEVmZlVzZXIAAQERZ2V0RWZmZWN0aXZlR25zYnQBEnVzZXJBZGRyU3RyT3JFbXB0eQQJZ25zYnREYXRhCQEJYXNBbnlMaXN0AQkA/AcEBRdnbnNidENvbnRyb2xsZXJDb250cmFjdAIUZ25zYnRJbmZvU1lTUkVBRE9OTFkJAMwIAgUSdXNlckFkZHJTdHJPckVtcHR5CQDMCAIAAAkAzAgCAAAFA25pbAUDbmlsBAhuc2J0RGF0YQkBCWFzQW55TGlzdAEJAJEDAgUJZ25zYnREYXRhAAIEDHVzZXJGcm9tTnNidAkBBWFzSW50AQkAkQMCBQhuc2J0RGF0YQACBA10b3RhbEZyb21Oc2J0CQEFYXNJbnQBCQCRAwIFCG5zYnREYXRhAAMEEnVzZXJNYXR1cmVGcm9tU3VyZgkBBWFzSW50AQkAkQMCBQlnbnNidERhdGEACQQTdG90YWxNYXR1cmVGcm9tU3VyZgkBBWFzSW50AQkAkQMCBQlnbnNidERhdGEABgkAzAgCCQBkAgUNdG90YWxGcm9tTnNidAUTdG90YWxNYXR1cmVGcm9tU3VyZgkAzAgCCQBkAgUMdXNlckZyb21Oc2J0BRJ1c2VyTWF0dXJlRnJvbVN1cmYFA25pbAEMdmFsaWRhdGVMaW5rAQN1cmwDCQECIT0CCQEFdmFsdWUBCQCzCQIFA3VybAUKVVJMUEFUVEVSTgAACQACAQILSW52YWxpZCB1cmwDCQBmAgkAsQIBBQN1cmwFBk1BWFVSTAkAAgECDVVybCB0b28gbG9uZyEEB3RvcGljSWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCwAgIFA3VybAkAZAIJAQV2YWx1ZQEJALcJAgUDdXJsAgEvAAECDVdyb25nIHRvcGljSWQEDHJlZ2lzdGVyZWRJZAkAnwgBCQEWa2V5UHJvcG9zYWxJZEJ5VG9waWNJZAEFB3RvcGljSWQDCQEJaXNEZWZpbmVkAQUMcmVnaXN0ZXJlZElkCQACAQkArAICAjhWb3Rpbmcgd2l0aCBzdWNoIGZvcnVtIGxpbmsgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGJ5IGlkPQkApAMBCQEFdmFsdWUBBQxyZWdpc3RlcmVkSWQFB3RvcGljSWQBDmluaXRpYXRlVm90aW5nCwdwYXltZW50DHByb3Bvc2FsVHhJZAR0eXBlBmF1dGhvcglmb3J1bUxpbmsFdGl0bGUPdm90aW5nU3RhcnRUaW1lDXZvdGluZ0VuZFRpbWUGc3RhdHVzBnR4TGlzdAtvcHRpb25zTGlzdAMJAQIhPQIIBQdwYXltZW50B2Fzc2V0SWQFBHVuaXQJAAIBAhtBbGxvd2VkIFdBVkVTIHBheW1lbnQgb25seSEEBnBtdFJlcQkBDGdldEludE9yRWxzZQIJARJrZXlQYXltZW50UmVxdWlyZWQABQ5ERUZBVUxUUEFZTUVOVAMJAGYCBQZwbXRSZXEIBQdwYXltZW50BmFtb3VudAkAAgEJAKwCAgIkUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgYXQgbGVhc3QgCQCkAwEFBnBtdFJlcQQHdG9waWNJZAkBDHZhbGlkYXRlTGluawEFCWZvcnVtTGluawMJAAACBQV0aXRsZQIACQACAQIOVGl0bGUgaXMgZW1wdHkDCQBmAgkAsQIBBQV0aXRsZQUITUFYVElUTEUJAAIBAg5Ub28gbG9uZyB0aXRsZQQMcHJvcG9zYWxUaW1lCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAGYCBQxwcm9wb3NhbFRpbWUFD3ZvdGluZ1N0YXJ0VGltZQkAAgEJAKwCAgkArAICCQCsAgICEHZvdGluZ1N0YXJ0VGltZT0JAKQDAQUPdm90aW5nU3RhcnRUaW1lAhAgPCBwcm9wb3NhbFRpbWU9CQCkAwEFDHByb3Bvc2FsVGltZQMJAGYCBQ92b3RpbmdTdGFydFRpbWUFDXZvdGluZ0VuZFRpbWUJAAIBCQCsAgIJAKwCAgkArAICAg52b3RpbmdFbmRUaW1lPQkApAMBBQ12b3RpbmdFbmRUaW1lAhMgPCB2b3RpbmdTdGFydFRpbWU9CQCkAwEFD3ZvdGluZ1N0YXJ0VGltZQMJAGYCCQBlAgUNdm90aW5nRW5kVGltZQUPdm90aW5nU3RhcnRUaW1lBQ1NQVhWT1RJTkdUSU1FCQACAQkArAICCQCsAgIJAKwCAgIbVm90aW5nIHBlcmlvZCBleGNlZWRzIG1heDogCQCkAwEJAGUCBQ12b3RpbmdFbmRUaW1lBQ92b3RpbmdTdGFydFRpbWUCAyA+IAkApAMBBQ1NQVhWT1RJTkdUSU1FBAV0eElkcwMJAAACBQR0eXBlAgRJREVBAgAJAQtjaGVja1R4TGlzdAEFBnR4TGlzdAMJAGcCAAEJAJADAQULb3B0aW9uc0xpc3QJAAIBAhdUb28gZmV3IGNob2ljZXMgdG8gdm90ZQQDZWZmCQERZ2V0RWZmZWN0aXZlR25zYnQBBQZhdXRob3IECmduc2J0VG90YWwJAJEDAgUDZWZmBQtJZHhFZmZUb3RhbAQJZ05zYnRVc2VyCQCRAwIFA2VmZgUKSWR4RWZmVXNlcgQIZ25zYnRSZXEJAQxnZXRJbnRPckVsc2UCCQEQa2V5R25zYnRSZXF1aXJlZAAFFERFRkFVTFRDUkVBVElPTkdOU0JUAwkAZgIFCGduc2J0UmVxBQlnTnNidFVzZXIJAAIBCQCsAgIJAKwCAgISWW91IG5lZWQgYXQgbGVhc3QgCQCkAwEFCGduc2J0UmVxAhcgZ05zYnQgdG8gY3JlYXRlIHZvdGluZwQMYW1vdW50TGVhc2VkCQD8BwQFEG5ldXRyaW5vQ29udHJhY3QCC2FjY2VwdFdhdmVzBQNuaWwJAMwIAgUHcGF5bWVudAUDbmlsAwkAAAIFDGFtb3VudExlYXNlZAUMYW1vdW50TGVhc2VkBAZxdW9ydW0JAQxnZXRJbnRPckVsc2UCCQEYa2V5UXVvcnVtUmVxdWlyZWRQZXJjZW50AQUEdHlwZQUNREVGQVVMVFFVT1JVTQQNcXVvcnVtSW5HbnNidAkAawMFBnF1b3J1bQUKZ25zYnRUb3RhbAUFTVVMVDYECnByb3Bvc2FsSWQJAGQCCQEMZ2V0SW50T3JFbHNlAgkBEWtleUxhc3RQcm9wb3NhbElkAAAAAAEEFG51bVByb3Bvc2Fsc0J5QXV0aG9yCQBkAgkBDGdldEludE9yRWxzZQIJARdrZXlOdW1Qcm9wb3NhbHNCeUF1dGhvcgEFBmF1dGhvcgAAAAEEC3VuaXFBdXRob3JzCQBkAgkBDGdldEludE9yRWxzZQIJARVrZXlTdGF0c1VuaXF1ZUF1dGhvcnMAAAADCQAAAgUUbnVtUHJvcG9zYWxzQnlBdXRob3IAAQABAAAECm9wdGlvbnNTdHIJALkJAgULb3B0aW9uc0xpc3QFB0xJU1RTRVAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEWtleUxhc3RQcm9wb3NhbElkAAUKcHJvcG9zYWxJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVByb3Bvc2FsSWRCeVRvcGljSWQBBQd0b3BpY0lkBQpwcm9wb3NhbElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJARlrZXlQcm9wb3NhbFN0YXR1c0RhdGFCeUlkAQUKcHJvcG9zYWxJZAkBCnN0YXR1c0RhdGEHBwAAAAAAAAcAAAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleVByb3Bvc2FsRGF0YUJ5SWQBBQpwcm9wb3NhbElkCQEMcHJvcG9zYWxEYXRhCwUMcHJvcG9zYWxUeElkBQR0eXBlBQZhdXRob3IJANgEAQkAmwMBBQlmb3J1bUxpbmsJANgEAQkAmwMBBQV0aXRsZQUMcHJvcG9zYWxUaW1lBQ92b3RpbmdTdGFydFRpbWUFDXZvdGluZ0VuZFRpbWUFBXR4SWRzBQ1xdW9ydW1Jbkduc2J0BQpvcHRpb25zU3RyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEXa2V5TnVtUHJvcG9zYWxzQnlBdXRob3IBBQZhdXRob3IFFG51bVByb3Bvc2Fsc0J5QXV0aG9yCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVa2V5U3RhdHNVbmlxdWVBdXRob3JzAAULdW5pcUF1dGhvcnMFA25pbAUMcHJvcG9zYWxUeElkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ1jYWxjV2luT3B0aW9uBwpwcm9wb3NhbElkC29wdGlvbnNMaXN0DmlzUHJldk9wdGlvbmFsCW9sZENob2ljZRBvcHRpb25hbFRvdGFsT2xkCW5ld0Nob2ljZRNuZXdUb3RhbEJ5TmV3Q2hvaWNlCgEIZmluZEJlc3QCA2FjYwRlbGVtBANpZHgJAQV2YWx1ZQEJAM8IAgULb3B0aW9uc0xpc3QFBGVsZW0EA3ZhbAMFDmlzUHJldk9wdGlvbmFsAwkAAAIFA2lkeAUJbmV3Q2hvaWNlBRNuZXdUb3RhbEJ5TmV3Q2hvaWNlCQEMZ2V0SW50T3JFbHNlAgkBHWtleVByb3Bvc2FsVm90ZXNCeUlkQW5kT3B0aW9uAgUKcHJvcG9zYWxJZAUDaWR4AAADCQAAAgUDaWR4CQEFdmFsdWUBBQlvbGRDaG9pY2UFEG9wdGlvbmFsVG90YWxPbGQDCQAAAgUDaWR4BQluZXdDaG9pY2UFE25ld1RvdGFsQnlOZXdDaG9pY2UJAQxnZXRJbnRPckVsc2UCCQEda2V5UHJvcG9zYWxWb3Rlc0J5SWRBbmRPcHRpb24CBQpwcm9wb3NhbElkBQNpZHgAAAMJAGYCCAUDYWNjAl8yBQN2YWwFA2FjYwkAlAoCBQNpZHgFA3ZhbAoAAiRsBQtvcHRpb25zTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZpbmRCZXN0AgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKARB1cGRhdGVTdGF0dXNEYXRhBAdvbGREYXRhB2lzVmFsaWQJbmV3V2luT3B0DW5ld1RvdGFsVm90ZXMJALkJAgkAzAgCAg4lYiVkJWQlZCViJWQlYgkAzAgCCQClAwEFB2lzVmFsaWQJAMwIAgkApAMBCAUJbmV3V2luT3B0Al8xCQDMCAIJAKQDAQgFCW5ld1dpbk9wdAJfMgkAzAgCCQCkAwEFDW5ld1RvdGFsVm90ZXMJAMwIAgkAkQMCBQdvbGREYXRhBRVnb3ZTdGF0dXNJZHhTY0FwcGxpZWQJAMwIAgkAkQMCBQdvbGREYXRhBRJnb3ZTdGF0dXNJZHhTY1RpbWUJAMwIAgkAkQMCBQdvbGREYXRhBRZnb3ZTdGF0dXNJZHhJc0NhbmNlbGVkBQNuaWwFA1NFUAERc3RhdHVzQXBwbHlTY3JpcHQBB29sZERhdGEJALkJAgkAzAgCAg4lYiVkJWQlZCViJWQlYgkAzAgCCQCRAwIFB29sZERhdGEFE2dvdlN0YXR1c0lkeElzVmFsaWQJAMwIAgkAkQMCBQdvbGREYXRhBRJnb3ZTdGF0dXNJZHhXaW5PcHQJAMwIAgkAkQMCBQdvbGREYXRhBRRnb3ZTdGF0dXNJZHhXaW5Wb3RlcwkAzAgCCQCRAwIFB29sZERhdGEFFmdvdlN0YXR1c0lkeFRvdGFsVm90ZXMJAMwIAgIEdHJ1ZQkAzAgCCQCRAwIFB29sZERhdGEFEmdvdlN0YXR1c0lkeFNjVGltZQkAzAgCCQCRAwIFB29sZERhdGEFFmdvdlN0YXR1c0lkeElzQ2FuY2VsZWQFA25pbAUDU0VQARBFeGVjdXRpb25IaXN0b3J5BA11cGRhdGVWZXJzaW9uBXRpdGxlA3VybApwcm9wb3NhbElkBApnbnNidFRvdGFsCQCRAwIJARFnZXRFZmZlY3RpdmVHbnNidAECAAULSWR4RWZmVG90YWwEB3R1cm5vdXQAoMIeCQELU3RyaW5nRW50cnkCCQEPa2V5QXBwbHlIaXN0b3J5AQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJALkJAgkAzAgCAgwlZCVkJWQlcyVzJWQJAMwIAgkApAMBBQ11cGRhdGVWZXJzaW9uCQDMCAIJAKQDAQUKZ25zYnRUb3RhbAkAzAgCCQCkAwEFB3R1cm5vdXQJAMwIAgUFdGl0bGUJAMwIAgUDdXJsCQDMCAIJAKQDAQUKcHJvcG9zYWxJZAUDbmlsBQNTRVAHAWkBDWNvbnN0cnVjdG9yVjEFC2NvbnRyb2xBZGRyDmdOc2J0UmVxVG9Jbml0DndhdmVzUmVxVG9Jbml0EXF1b3J1bVJlcVBlcmNJZGVhE3F1b3J1bVJlcVBlcmNVcGRhdGUDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5Q29udHJvbEFkZHJlc3MABQtjb250cm9sQWRkcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEGtleUduc2J0UmVxdWlyZWQABQ5nTnNidFJlcVRvSW5pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleVBheW1lbnRSZXF1aXJlZAAFDndhdmVzUmVxVG9Jbml0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYa2V5UXVvcnVtUmVxdWlyZWRQZXJjZW50AQIESURFQQURcXVvcnVtUmVxUGVyY0lkZWEJAMwIAgkBDEludGVnZXJFbnRyeQIJARhrZXlRdW9ydW1SZXF1aXJlZFBlcmNlbnQBAgZVUERBVEUFE3F1b3J1bVJlcVBlcmNVcGRhdGUFA25pbAFpAQhjYXN0Vm90ZQIKcHJvcG9zYWxJZAZjaG9pY2UEDnVzZXJBZGRyZXNzU3RyCQClCAEIBQFpBmNhbGxlcgQLZHluYW1pY0RhdGEJALUJAgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJARlrZXlQcm9wb3NhbFN0YXR1c0RhdGFCeUlkAQUKcHJvcG9zYWxJZAUDU0VQAwkAAAIJAJEDAgULZHluYW1pY0RhdGEFFmdvdlN0YXR1c0lkeElzQ2FuY2VsZWQCBHRydWUJAAIBAhpWb3RpbmcgaXMgY2FuY2VsZWQgYnkgdGVhbQQIcHJvcERhdGEJALUJAgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJARNrZXlQcm9wb3NhbERhdGFCeUlkAQUKcHJvcG9zYWxJZAUDU0VQBAVzdGFydAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb3BEYXRhBQtnb3ZJZHhTdGFydAQDZW5kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvcERhdGEFCWdvdklkeEVuZAQDbm93CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAGYCBQVzdGFydAUDbm93CQACAQIWVm90aW5nIG5vdCBzdGFydGVkIHlldAMJAGcCBQNub3cFA2VuZAkAAgECF1ZvdGluZyBhbHJlYWR5IGZpbmlzaGVkBBBhdmFpbGFibGVPcHRpb25zCQC1CQIJAJEDAgUIcHJvcERhdGEFDWdvdklkeE9wdGlvbnMFB0xJU1RTRVAECm51bU9wdGlvbnMJAJADAQUQYXZhaWxhYmxlT3B0aW9ucwMJAGcCAAEFCm51bU9wdGlvbnMJAAIBAhdUb28gZmV3IGNob2ljZXMgdG8gdm90ZQMJAGcCBQZjaG9pY2UFCm51bU9wdGlvbnMJAAIBCQCsAgICG1Vua25vd24gY2hvaWNlISBNdXN0IGJlIDAuLgkApAMBCQBlAgUKbnVtT3B0aW9ucwABBANlZmYJARFnZXRFZmZlY3RpdmVHbnNidAEFDnVzZXJBZGRyZXNzU3RyBAhnbnNidEFtdAkAkQMCBQNlZmYFCklkeEVmZlVzZXIDCQBnAgAABQhnbnNidEFtdAkAAgECEG5vIGduc2J0IHRvIHZvdGUECmduc2J0VG90YWwJAJEDAgUDZWZmBQtJZHhFZmZUb3RhbAQJb2xkQ2hvaWNlCQCfCAEJARxrZXlQcm9wb3NhbENob2ljZUJ5SWRBbmRVc2VyAgUKcHJvcG9zYWxJZAUOdXNlckFkZHJlc3NTdHIEDG9sZFVzZXJWb3RlcwMJAQEhAQkBCWlzRGVmaW5lZAEFCW9sZENob2ljZQAACQEMZ2V0SW50T3JFbHNlAgkBG2tleVByb3Bvc2FsVm90ZXNCeUlkQW5kVXNlcgIFCnByb3Bvc2FsSWQFDnVzZXJBZGRyZXNzU3RyAAAEE29sZFRvdGFsQnlPbGRDaG9pY2UDCQEJaXNEZWZpbmVkAQUJb2xkQ2hvaWNlCQEMZ2V0SW50T3JFbHNlAgkBHWtleVByb3Bvc2FsVm90ZXNCeUlkQW5kT3B0aW9uAgUKcHJvcG9zYWxJZAkBBXZhbHVlAQUJb2xkQ2hvaWNlAAAAAAQTb2xkVG90YWxCeU5ld0Nob2ljZQkBDGdldEludE9yRWxzZQIJAR1rZXlQcm9wb3NhbFZvdGVzQnlJZEFuZE9wdGlvbgIFCnByb3Bvc2FsSWQFBmNob2ljZQAABAhvbGRUb3RhbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2R5bmFtaWNEYXRhBRZnb3ZTdGF0dXNJZHhUb3RhbFZvdGVzBBNuZXdUb3RhbEJ5T2xkQ2hvaWNlAwkBASEBCQEJaXNEZWZpbmVkAQUJb2xkQ2hvaWNlAAAJAGQCCQBlAgUTb2xkVG90YWxCeU9sZENob2ljZQUMb2xkVXNlclZvdGVzAwkAAAIJAQV2YWx1ZQEFCW9sZENob2ljZQUGY2hvaWNlBQhnbnNidEFtdAAABBNuZXdUb3RhbEJ5TmV3Q2hvaWNlAwMJAQlpc0RlZmluZWQBBQlvbGRDaG9pY2UJAAACCQEFdmFsdWUBBQlvbGRDaG9pY2UFBmNob2ljZQcFE25ld1RvdGFsQnlPbGRDaG9pY2UJAGQCBRNvbGRUb3RhbEJ5TmV3Q2hvaWNlBQhnbnNidEFtdAQIbmV3VG90YWwJAGQCCQBlAgUIb2xkVG90YWwFDG9sZFVzZXJWb3RlcwUIZ25zYnRBbXQED2lzUXVvcnVtUmVhY2hlZAkAZwIFCG5ld1RvdGFsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIcHJvcERhdGEFDGdvdklkeFF1b3J1bQQVbnVtVm90ZXJzQnlQcm9wb3NhbElkCQEMZ2V0SW50T3JFbHNlAgkBHmtleU51bVVuaXF1ZVZvdGVyc0J5UHJvcG9zYWxJZAEFCnByb3Bvc2FsSWQAAAQUb2xkQXZlclVuaXF1ZVZvdGVyczYJAQxnZXRJbnRPckVsc2UCCQEYa2V5U3RhdHNBdmVyVW5pcXVlVm90ZXJzAAAABAxudW1Qcm9wb3NhbHMJAGQCCQBlAgkBEUBleHRyTmF0aXZlKDEwNTUpAQkBEWtleUxhc3RQcm9wb3NhbElkAAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5Rmlyc3RQcm9wb3NhbElkAAUUREVGQVVMVEZJUlNUUFJPUE9TQUwAAQQKdW5pcXVlRGlmZgMJAAACBQxvbGRVc2VyVm90ZXMAAAABAAAEFG5ld0F2ZXJVbmlxdWVWb3RlcnM2CQBkAgUUb2xkQXZlclVuaXF1ZVZvdGVyczYJAGsDBQp1bmlxdWVEaWZmBQVNVUxUNgUMbnVtUHJvcG9zYWxzBAxvbGRBdmVyR25zYnQJAQxnZXRJbnRPckVsc2UCCQEWa2V5U3RhdHNBdmVyR25zYnRWb3RlZAAAAAQMbmV3QXZlckduc2J0CQBkAgUMb2xkQXZlckduc2J0CQBpAgkAZQIFCGduc2J0QW10BQxvbGRVc2VyVm90ZXMFDG51bVByb3Bvc2FscwQOaXNQcmV2T3B0aW9uYWwDCQEBIQEJAQlpc0RlZmluZWQBBQlvbGRDaG9pY2UGCQAAAgkBBXZhbHVlAQUJb2xkQ2hvaWNlBQZjaG9pY2UEEG9wdGlvbmFsVG90YWxPbGQDBQ5pc1ByZXZPcHRpb25hbAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEda2V5UHJvcG9zYWxWb3Rlc0J5SWRBbmRPcHRpb24CBQpwcm9wb3NhbElkCQEFdmFsdWUBBQlvbGRDaG9pY2UFE25ld1RvdGFsQnlPbGRDaG9pY2UFA25pbAQGd2luT3B0CQENY2FsY1dpbk9wdGlvbgcFCnByb3Bvc2FsSWQFEGF2YWlsYWJsZU9wdGlvbnMFDmlzUHJldk9wdGlvbmFsBQlvbGRDaG9pY2UFE25ld1RvdGFsQnlPbGRDaG9pY2UFBmNob2ljZQUTbmV3VG90YWxCeU5ld0Nob2ljZQQLcmVsZWFzZVRpbWUJAJYDAQkAzAgCBQNlbmQJAMwIAgkBDGdldEludE9yRWxzZQIJARdrZXlVc2VyR25zYnRSZWxlYXNlVGltZQEFDnVzZXJBZGRyZXNzU3RyAAAFA25pbAkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARxrZXlQcm9wb3NhbENob2ljZUJ5SWRBbmRVc2VyAgUKcHJvcG9zYWxJZAUOdXNlckFkZHJlc3NTdHIFBmNob2ljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBG2tleVByb3Bvc2FsVm90ZXNCeUlkQW5kVXNlcgIFCnByb3Bvc2FsSWQFDnVzZXJBZGRyZXNzU3RyBQhnbnNidEFtdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHWtleVByb3Bvc2FsVm90ZXNCeUlkQW5kT3B0aW9uAgUKcHJvcG9zYWxJZAUGY2hvaWNlBRNuZXdUb3RhbEJ5TmV3Q2hvaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEea2V5TnVtVW5pcXVlVm90ZXJzQnlQcm9wb3NhbElkAQUKcHJvcG9zYWxJZAkAZAIFFW51bVZvdGVyc0J5UHJvcG9zYWxJZAUKdW5pcXVlRGlmZgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBF2tleVVzZXJHbnNidFJlbGVhc2VUaW1lAQUOdXNlckFkZHJlc3NTdHIFC3JlbGVhc2VUaW1lCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYa2V5U3RhdHNBdmVyVW5pcXVlVm90ZXJzAAUUbmV3QXZlclVuaXF1ZVZvdGVyczYJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGF0c0F2ZXJHbnNidFZvdGVkAAUMbmV3QXZlckduc2J0CQDMCAIJAQtTdHJpbmdFbnRyeQIJARlrZXlQcm9wb3NhbFN0YXR1c0RhdGFCeUlkAQUKcHJvcG9zYWxJZAkBEHVwZGF0ZVN0YXR1c0RhdGEEBQtkeW5hbWljRGF0YQUPaXNRdW9ydW1SZWFjaGVkBQZ3aW5PcHQFCG5ld1RvdGFsBQNuaWwFEG9wdGlvbmFsVG90YWxPbGQFBHVuaXQBaQESaW5pdGlhdGVJZGVhVm90aW5nBQlmb3J1bUxpbmsFdGl0bGUPdm90aW5nU3RhcnRUaW1lDXZvdGluZ0VuZFRpbWULb3B0aW9uc0xpc3QDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkAwkBAiE9AgkAkAMBBQtvcHRpb25zTGlzdAACCQACAQIrRXhhY3RseSAyIG9wdGlvbiBbJ05PJywgJ1lFUyddIGFyZSBleHBlY3RlZAMJAQIhPQIJAJEDAgULb3B0aW9uc0xpc3QAAAICTk8JAAIBAh1PcHRpb24gTk8gc2hvdWxkIGJlIHRoZSBmaXJzdAMJAQIhPQIJAJEDAgULb3B0aW9uc0xpc3QAAQIDWUVTCQACAQIfT3B0aW9uIFlFUyBzaG91bGQgYmUgdGhlIHNlY29uZAkBDmluaXRpYXRlVm90aW5nCwkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAACQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQCBElERUEJAKUIAQgFAWkGY2FsbGVyBQlmb3J1bUxpbmsFBXRpdGxlBQ92b3RpbmdTdGFydFRpbWUFDXZvdGluZ0VuZFRpbWUCB1BFTkRJTkcFA25pbAULb3B0aW9uc0xpc3QBaQEUaW5pdGlhdGVVcGRhdGVWb3RpbmcFCWZvcnVtTGluawV0aXRsZQ92b3RpbmdTdGFydFRpbWUNdm90aW5nRW5kVGltZQZ0eExpc3QDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkAwkAZgIAAQkAkAMBBQZ0eExpc3QJAAIBAhpUcmFuc2FjdGlvbnMgbGlzdCBpcyBlbXB0eQkBDmluaXRpYXRlVm90aW5nCwkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAACQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQCBlVQREFURQkApQgBCAUBaQZjYWxsZXIFCWZvcnVtTGluawUFdGl0bGUFD3ZvdGluZ1N0YXJ0VGltZQUNdm90aW5nRW5kVGltZQIHUEVORElORwUGdHhMaXN0CQDMCAICAk5PCQDMCAICA1lFUwUDbmlsAWkBDGNhbmNlbFZvdGluZwEKcHJvcG9zYWxJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDm5vdCBhdXRob3JpemVkBAtjdXJyZW50RGF0YQkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJARlrZXlQcm9wb3NhbFN0YXR1c0RhdGFCeUlkAQUKcHJvcG9zYWxJZAQLdXBkYXRlZERhdGEJAKwCAgkArAICCQCvAgIFC2N1cnJlbnREYXRhCQEFdmFsdWUBCQC3CQIFC2N1cnJlbnREYXRhBQNTRVAFA1NFUAIEdHJ1ZQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJARlrZXlQcm9wb3NhbFN0YXR1c0RhdGFCeUlkAQUKcHJvcG9zYWxJZAULdXBkYXRlZERhdGEFA25pbAUEdW5pdAFpAQthcHBseVVwZGF0ZQEKcHJvcG9zYWxJZAQIcHJvcERhdGEJALUJAgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJARNrZXlQcm9wb3NhbERhdGFCeUlkAQUKcHJvcG9zYWxJZAUDU0VQBANlbmQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhwcm9wRGF0YQUJZ292SWR4RW5kBANub3cIBQlsYXN0QmxvY2sJdGltZXN0YW1wAwkAZgIFA2VuZAUDbm93CQACAQIaVm90aW5nIGlzIG5vdCBmaW5pc2hlZCB5ZXQDCQECIT0CAgZVUERBVEUJAJEDAgUIcHJvcERhdGEFCmdvdklkeFR5cGUJAAIBAh9Pbmx5IFVQREFURSB0eXBlIGNhbiBiZSBhcHBsaWVkBAtkeW5hbWljRGF0YQkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBGWtleVByb3Bvc2FsU3RhdHVzRGF0YUJ5SWQBBQpwcm9wb3NhbElkBQNTRVADCQAAAgkAkQMCBQtkeW5hbWljRGF0YQUWZ292U3RhdHVzSWR4SXNDYW5jZWxlZAIEdHJ1ZQkAAgECElZvdGluZyBpcyBjYW5jZWxlZAMJAQIhPQIJAJEDAgULZHluYW1pY0RhdGEFE2dvdlN0YXR1c0lkeElzVmFsaWQCBHRydWUJAAIBAhVWb3Rpbmcgc3RhdHVzIGludmFsaWQDCQECIT0CCQCRAwIFC2R5bmFtaWNEYXRhBRJnb3ZTdGF0dXNJZHhXaW5PcHQCATEJAAIBAiFXaW5uZXIgaXMgJ05PJyAtIG5vdGhpbmcgdG8gYXBwbHkDCQAAAgkAkQMCBQtkeW5hbWljRGF0YQUVZ292U3RhdHVzSWR4U2NBcHBsaWVkAgR0cnVlCQACAQIbU2NyaXB0cyBhcmUgYWxyZWFkeSBhcHBsaWVkBApzY3JpcHRUaW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULZHluYW1pY0RhdGEFEmdvdlN0YXR1c0lkeFNjVGltZQMJAGYCCQBlAgUDbm93BQpQQVNUTUFSR0lOBQpzY3JpcHRUaW1lCQACAQkArAICCQCsAgICElNjcmlwdHMgdGltZXN0YW1wPQkApAMBBQpzY3JpcHRUaW1lAiogaXMgdG9vIGZhciBpbiB0aGUgcGFzdCwgbWF4IDIgaHJzIGFsbG93ZWQDCQBmAgUKc2NyaXB0VGltZQkAZAIFA25vdwUMRlVUVVJFTUFSR0lOCQACAQkArAICCQCsAgICElNjcmlwdHMgdGltZXN0YW1wPQkApAMBBQpzY3JpcHRUaW1lAi4gaXMgdG9vIGZhciBpbiB0aGUgZnV0dXJlLCBtYXggMS41IGhycyBhbGxvd2VkBAxpblByb2dyZXNzSWQJAQxnZXRJbnRPckVsc2UCCQESa2V5QXBwbHlJblByb2dyZXNzAAD///////////8BAwkBAiE9AgUMaW5Qcm9ncmVzc0lkAP///////////wEJAAIBCQCsAgIJAKwCAgILcHJvcG9zYWxJZD0JAKQDAQUMaW5Qcm9ncmVzc0lkAisgaXMgYWxyZWFkeSBiZWluZyBhcHBsaWVkLiBGaW5pc2ggaXQgZmlyc3QhBAhzaHV0ZG93bgkA/AcEBQ9jb250cm9sQ29udHJhY3QCFWNhbGxFbWVyZ2VuY3lTaHV0ZG93bgkAzAgCAhpBcHBseWluZyBHb3Zlcm5hbmNlIFVQREFURQUDbmlsBQNuaWwDCQAAAgUIc2h1dGRvd24FCHNodXRkb3duCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlBcHBseUluUHJvZ3Jlc3MABQpwcm9wb3NhbElkBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELZmluaXNoQXBwbHkABApwcm9wb3NhbElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBEmtleUFwcGx5SW5Qcm9ncmVzcwACJ05vIGFwcGx5IGluIHByb2dyZXNzLCBub3RoaW5nIHRvIGZpbmlzaAQIcHJvcERhdGEJALUJAgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJARNrZXlQcm9wb3NhbERhdGFCeUlkAQUKcHJvcG9zYWxJZAUDU0VQBAZ0eExpc3QJALUJAgkAkQMCBQhwcm9wRGF0YQULZ292SWR4VHhJZHMFB0xJU1RTRVAEC2R5bmFtaWNEYXRhCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQEZa2V5UHJvcG9zYWxTdGF0dXNEYXRhQnlJZAEFCnByb3Bvc2FsSWQFA1NFUAMJAAACCQCRAwIFC2R5bmFtaWNEYXRhBRVnb3ZTdGF0dXNJZHhTY0FwcGxpZWQCBHRydWUJAAIBAhtTY3JpcHRzIGFyZSBhbHJlYWR5IGFwcGxpZWQKAQdjaGVja2VyAgNhY2MCdHgDCQEBIQEJAQlpc0RlZmluZWQBCQDpBwEJANkEAQUCdHgJAAIBCQCsAgICEk5PVCBhcHBsaWVkIHR4SWQ6IAUCdHgFBHVuaXQEB2lnbm9yZWQKAAIkbAUGdHhMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUEdW5pdAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHY2hlY2tlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUBAd2ZXJzaW9uCQBkAgkBDGdldEludE9yRWxzZQIJARRrZXlMYXN0VXBkYXRlVmVyc2lvbgAAAAABCQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleUFwcGx5SW5Qcm9ncmVzcwAJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlMYXN0VXBkYXRlVmVyc2lvbgAFB3ZlcnNpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgkBGWtleVByb3Bvc2FsU3RhdHVzRGF0YUJ5SWQBBQpwcm9wb3NhbElkCQERc3RhdHVzQXBwbHlTY3JpcHQBBQtkeW5hbWljRGF0YQkAzAgCCQEQRXhlY3V0aW9uSGlzdG9yeQQFB3ZlcnNpb24JAJEDAgUIcHJvcERhdGEFC2dvdklkeFRpdGxlCQCRAwIFCHByb3BEYXRhBQlnb3ZJZHhVcmwFCnByb3Bvc2FsSWQFA25pbAUHaWdub3JlZADLHHCX", "height": 2401725, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7wEZeLyst2CAxsZ8XLi4JN4fLqq1422ngaQfXfFMgkry Next: 79zCJM8GAUjZ1J8Tkd7ixmv3XJPfBjWBDvyUSLJWBSYM Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = ""
55
66 let b = "__"
77
88 let c = ":"
99
1010 let d = 500000
1111
1212 let e = "https://forum.neutrino.at/"
1313
1414 let f = 250
1515
1616 let g = 250
1717
1818 let h = 1209600000
1919
2020 let i = 1000000
2121
2222 let j = 1000000000
2323
2424 let k = 1000000000
2525
2626 let l = 7200000
2727
2828 let m = 5400000
2929
3030 let n = 111
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 11
5353
5454 let z = 1
5555
5656 let A = 2
5757
5858 let B = 3
5959
6060 let C = 4
6161
6262 let D = 5
6363
6464 let E = 6
6565
6666 let F = 7
6767
6868 func G (H,I) = valueOrErrorMessage(getString(H, I), makeString(["mandatory ", toString(H), ".", I, " is not defined"], ""))
6969
7070
7171 func J (I,K) = valueOrElse(getInteger(this, I), K)
7272
7373
7474 let L = 1
7575
7676 let M = 2
7777
7878 let N = 3
7979
8080 let O = 4
8181
8282 let P = 5
8383
8484 let Q = 6
8585
8686 let R = 7
8787
8888 let S = 8
8989
9090 let T = 9
9191
9292 let U = 10
9393
9494 let V = 11
9595
9696 let W = 12
9797
9898 let X = 13
9999
100100 func Y () = "%s%s__config__controlAddress"
101101
102102
103103 func Z () = "%s__controlConfig"
104104
105105
106106 func aa (ab) = split_4C(G(ab, Z()), b)
107107
108108
109109 func ac (ad,ae) = valueOrErrorMessage(addressFromString(ad[ae]), ("Control cfg doesn't contain address at index " + toString(ae)))
110110
111111
112112 let af = addressFromStringValue(valueOrElse(getString(this, Y()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP"))
113113
114114 let ad = aa(af)
115115
116116 let ag = ac(ad, L)
117117
118118 let ah = ac(ad, V)
119119
120120 func ai (aj) = ("%s%s__quorumRequired__" + aj)
121121
122122
123123 func ak () = "%s__paymentRequired"
124124
125125
126126 func al () = "%s__gNsbtRequired"
127127
128128
129129 func am () = "%s__proposalId"
130130
131131
132132 func an () = "%s__firstProposalId"
133133
134134
135135 func ao () = "%s__updateVersion"
136136
137137
138138 func ap (aq) = ("%s%d__proposalStatusData__" + toString(aq))
139139
140140
141141 func ar (aq) = ("%s%d__proposalData__" + toString(aq))
142142
143143
144144 func as (aq,at) = makeString(["%s%d%d", "votesByOpt", toString(aq), toString(at)], b)
145145
146146
147147 func au (aq,av) = makeString(["%s%d%s", "votesByUser", toString(aq), av], b)
148148
149149
150150 func aw (aq,av) = makeString(["%s%d%s", "optionByUser", toString(aq), av], b)
151151
152152
153153 func ax () = "%s__applyInProgress"
154154
155155
156156 func ay (az) = ("%s%d__proposalIdByTopicId__" + toString(az))
157157
158158
159159 func aA (av) = ("%s%s_userGnsbtReleaseTime__" + av)
160160
161161
162162 func aB (aq) = ("%s%d__numVoters__" + toString(aq))
163163
164164
165165 func aC () = "%s%s%s__stats__avg__uniqueVoters"
166166
167167
168168 func aD () = "%s%s%s__stats__avg__gnsbtVoted"
169169
170170
171171 func aE () = "%s%s__stats__uniqueAuthors"
172172
173173
174174 func aF (aG) = ("%s%s__numProposalsByAuthor__" + aG)
175175
176176
177177 func aH (aI) = ("%s%d__applyHistory__" + toString(aI))
178178
179179
180180 func aJ (aK) = {
181181 let aL = aK
182182 if ($isInstanceOf(aL, "List[Any]"))
183183 then {
184184 let aM = aL
185185 aM
186186 }
187187 else throw("fail to cast into List[Any]")
188188 }
189189
190190
191191 func aN (aK) = {
192192 let aL = aK
193193 if ($isInstanceOf(aL, "Int"))
194194 then {
195195 let aO = aL
196196 aO
197197 }
198198 else throw("fail to cast into Int")
199199 }
200200
201201
202202 func aP (aQ,aR,aS,aT,aU,aV,aW) = makeString(["%b%d%d%d%b%d%b", toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW)], b)
203203
204204
205205 func aX (aY,aj,aZ,ba,bb,bc,bd,be,bf,bg,bh) = makeString(["%s%s%s%s%s%d%d%d%s%d%s", aY, aj, aZ, ba, bb, toString(bc), toString(bd), toString(be), bf, toString(bg), bh], b)
206206
207207
208208 func bi (bj) = if ((size(bj) > 20))
209209 then throw(("Too many transactions: " + toString(size(bj))))
210210 else {
211211 func bk (bl,bm) = if ((size(fromBase58String(bm)) != 32))
212212 then throw(("Wrong txId: " + bm))
213213 else if ((bl == ""))
214214 then bm
215215 else ((bl + c) + bm)
216216
217217 let bn = bj
218218 let bo = size(bn)
219219 let bp = ""
220220 func bq (br,bs) = if ((bs >= bo))
221221 then br
222222 else bk(br, bn[bs])
223223
224224 func bt (br,bs) = if ((bs >= bo))
225225 then br
226226 else throw("List size exceeds 20")
227227
228228 bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
229229 }
230230
231231
232232 let bu = 0
233233
234234 let bv = 1
235235
236236 func bw (bx) = {
237237 let by = aJ(invoke(ah, "gnsbtInfoSYSREADONLY", [bx, 0, 0], nil))
238238 let bz = aJ(by[2])
239239 let bA = aN(bz[2])
240240 let bB = aN(bz[3])
241241 let bC = aN(by[9])
242242 let bD = aN(by[6])
243243 [(bB + bD), (bA + bC)]
244244 }
245245
246246
247247 func bE (bF) = if ((value(indexOf(bF, e)) != 0))
248248 then throw("Invalid url")
249249 else if ((size(bF) > g))
250250 then throw("Url too long!")
251251 else {
252252 let az = valueOrErrorMessage(parseInt(drop(bF, (value(lastIndexOf(bF, "/")) + 1))), "Wrong topicId")
253253 let bG = getInteger(ay(az))
254254 if (isDefined(bG))
255255 then throw(("Voting with such forum link is already registered by id=" + toString(value(bG))))
256256 else az
257257 }
258258
259259
260260 func bH (bI,aY,aj,aZ,ba,bb,bd,be,bJ,bj,bK) = if ((bI.assetId != unit))
261261 then throw("Allowed WAVES payment only!")
262262 else {
263263 let bL = J(ak(), j)
264264 if ((bL > bI.amount))
265265 then throw(("Payment attached should be at least " + toString(bL)))
266266 else {
267267 let az = bE(ba)
268268 if ((bb == ""))
269269 then throw("Title is empty")
270270 else if ((size(bb) > f))
271271 then throw("Too long title")
272272 else {
273273 let bc = lastBlock.timestamp
274274 if ((bc > bd))
275275 then throw(((("votingStartTime=" + toString(bd)) + " < proposalTime=") + toString(bc)))
276276 else if ((bd > be))
277277 then throw(((("votingEndTime=" + toString(be)) + " < votingStartTime=") + toString(bd)))
278278 else if (((be - bd) > h))
279279 then throw(((("Voting period exceeds max: " + toString((be - bd))) + " > ") + toString(h)))
280280 else {
281281 let bf = if ((aj == "IDEA"))
282282 then ""
283283 else bi(bj)
284284 if ((1 >= size(bK)))
285285 then throw("Too few choices to vote")
286286 else {
287287 let bM = bw(aZ)
288288 let bN = bM[bu]
289289 let bO = bM[bv]
290290 let bP = J(al(), k)
291291 if ((bP > bO))
292292 then throw((("You need at least " + toString(bP)) + " gNsbt to create voting"))
293293 else {
294294 let bQ = invoke(ag, "acceptWaves", nil, [bI])
295295 if ((bQ == bQ))
296296 then {
297297 let bR = J(ai(aj), d)
298298 let bg = fraction(bR, bN, i)
299299 let aq = (J(am(), 0) + 1)
300300 let bS = (J(aF(aZ), 0) + 1)
301301 let bT = (J(aE(), 0) + (if ((bS == 1))
302302 then 1
303303 else 0))
304304 let bU = makeString(bK, c)
305305 $Tuple2([IntegerEntry(am(), aq), IntegerEntry(ay(az), aq), StringEntry(ap(aq), aP(false, 0, 0, 0, false, 0, false)), StringEntry(ar(aq), aX(aY, aj, aZ, toBase58String(toBytes(ba)), toBase58String(toBytes(bb)), bc, bd, be, bf, bg, bU)), IntegerEntry(aF(aZ), bS), IntegerEntry(aE(), bT)], aY)
306306 }
307307 else throw("Strict value is not equal to itself.")
308308 }
309309 }
310310 }
311311 }
312312 }
313313 }
314314
315315
316316 func bV (aq,bK,bW,bX,bY,bZ,ca) = {
317317 func cb (bl,cc) = {
318318 let ae = value(indexOf(bK, cc))
319319 let cd = if (bW)
320320 then if ((ae == bZ))
321321 then ca
322322 else J(as(aq, ae), 0)
323323 else if ((ae == value(bX)))
324324 then bY
325325 else if ((ae == bZ))
326326 then ca
327327 else J(as(aq, ae), 0)
328328 if ((bl._2 > cd))
329329 then bl
330330 else $Tuple2(ae, cd)
331331 }
332332
333333 let bn = bK
334334 let bo = size(bn)
335335 let bp = $Tuple2(0, 0)
336336 func bq (br,bs) = if ((bs >= bo))
337337 then br
338338 else cb(br, bn[bs])
339339
340340 func bt (br,bs) = if ((bs >= bo))
341341 then br
342342 else throw("List size exceeds 10")
343343
344344 bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
345345 }
346346
347347
348348 func ce (cf,cg,ch,ci) = makeString(["%b%d%d%d%b%d%b", toString(cg), toString(ch._1), toString(ch._2), toString(ci), cf[D], cf[E], cf[F]], b)
349349
350350
351351 func cj (cf) = makeString(["%b%d%d%d%b%d%b", cf[z], cf[A], cf[B], cf[C], "true", cf[E], cf[F]], b)
352352
353353
354354 func ck (cl,bb,bF,aq) = {
355355 let bN = bw("")[bu]
356356 let cm = 500000
357357 StringEntry(aH(lastBlock.timestamp), makeString(["%d%d%d%s%s%d", toString(cl), toString(bN), toString(cm), bb, bF, toString(aq)], b))
358358 }
359359
360360
361361 @Callable(aO)
362362 func constructorV1 (cn,co,cp,cq,cr) = if ((aO.caller != this))
363363 then throw("Permission denied")
364364 else [StringEntry(Y(), cn), IntegerEntry(al(), co), IntegerEntry(ak(), cp), IntegerEntry(ai("IDEA"), cq), IntegerEntry(ai("UPDATE"), cr)]
365365
366366
367367
368368 @Callable(aO)
369369 func castVote (aq,cs) = {
370370 let ct = toString(aO.caller)
371371 let cu = split(G(this, ap(aq)), b)
372372 if ((cu[F] == "true"))
373373 then throw("Voting is canceled by team")
374374 else {
375375 let cv = split(G(this, ar(aq)), b)
376376 let cw = parseIntValue(cv[u])
377377 let cx = parseIntValue(cv[v])
378378 let cy = lastBlock.timestamp
379379 if ((cw > cy))
380380 then throw("Voting not started yet")
381381 else if ((cy >= cx))
382382 then throw("Voting already finished")
383383 else {
384384 let cz = split(cv[y], c)
385385 let cA = size(cz)
386386 if ((1 >= cA))
387387 then throw("Too few choices to vote")
388388 else if ((cs >= cA))
389389 then throw(("Unknown choice! Must be 0.." + toString((cA - 1))))
390390 else {
391391 let bM = bw(ct)
392392 let cB = bM[bv]
393393 if ((0 >= cB))
394394 then throw("no gnsbt to vote")
395395 else {
396396 let bN = bM[bu]
397397 let bX = getInteger(aw(aq, ct))
398398 let cC = if (!(isDefined(bX)))
399399 then 0
400400 else J(au(aq, ct), 0)
401401 let cD = if (isDefined(bX))
402402 then J(as(aq, value(bX)), 0)
403403 else 0
404404 let cE = J(as(aq, cs), 0)
405405 let cF = parseIntValue(cu[C])
406406 let cG = if (!(isDefined(bX)))
407407 then 0
408408 else ((cD - cC) + (if ((value(bX) == cs))
409409 then cB
410410 else 0))
411411 let ca = if (if (isDefined(bX))
412412 then (value(bX) == cs)
413413 else false)
414414 then cG
415415 else (cE + cB)
416416 let cH = ((cF - cC) + cB)
417417 let cI = (cH >= parseIntValue(cv[x]))
418418 let cJ = J(aB(aq), 0)
419419 let cK = J(aC(), 0)
420420 let cL = ((getIntegerValue(am()) - valueOrElse(getInteger(an()), n)) + 1)
421421 let cM = if ((cC == 0))
422422 then 1
423423 else 0
424424 let cN = (cK + fraction(cM, i, cL))
425425 let cO = J(aD(), 0)
426426 let cP = (cO + ((cB - cC) / cL))
427427 let bW = if (!(isDefined(bX)))
428428 then true
429429 else (value(bX) == cs)
430430 let bY = if (bW)
431431 then nil
432432 else [IntegerEntry(as(aq, value(bX)), cG)]
433433 let cQ = bV(aq, cz, bW, bX, cG, cs, ca)
434434 let cR = max([cx, J(aA(ct), 0)])
435435 $Tuple2(([IntegerEntry(aw(aq, ct), cs), IntegerEntry(au(aq, ct), cB), IntegerEntry(as(aq, cs), ca), IntegerEntry(aB(aq), (cJ + cM)), IntegerEntry(aA(ct), cR), IntegerEntry(aC(), cN), IntegerEntry(aD(), cP), StringEntry(ap(aq), ce(cu, cI, cQ, cH))] ++ bY), unit)
436436 }
437437 }
438438 }
439439 }
440440 }
441441
442442
443443
444444 @Callable(aO)
445445 func initiateIdeaVoting (ba,bb,bd,be,bK) = if ((size(aO.payments) != 1))
446446 then throw("Exactly one payment required")
447447 else if ((size(bK) != 2))
448448 then throw("Exactly 2 option ['NO', 'YES'] are expected")
449449 else if ((bK[0] != "NO"))
450450 then throw("Option NO should be the first")
451451 else if ((bK[1] != "YES"))
452452 then throw("Option YES should be the second")
453453 else bH(value(aO.payments[0]), toBase58String(aO.transactionId), "IDEA", toString(aO.caller), ba, bb, bd, be, "PENDING", nil, bK)
454454
455455
456456
457457 @Callable(aO)
458458 func initiateUpdateVoting (ba,bb,bd,be,bj) = if ((size(aO.payments) != 1))
459459 then throw("Exactly one payment required")
460460 else if ((1 > size(bj)))
461461 then throw("Transactions list is empty")
462462 else bH(value(aO.payments[0]), toBase58String(aO.transactionId), "UPDATE", toString(aO.caller), ba, bb, bd, be, "PENDING", bj, ["NO", "YES"])
463463
464464
465465
466466 @Callable(aO)
467467 func cancelVoting (aq) = if ((aO.caller != this))
468468 then throw("not authorized")
469469 else {
470470 let cS = G(this, ap(aq))
471471 let cT = ((take(cS, value(lastIndexOf(cS, b))) + b) + "true")
472472 $Tuple2([StringEntry(ap(aq), cT)], unit)
473473 }
474474
475475
476476
477477 @Callable(aO)
478478 func applyUpdate (aq) = {
479479 let cv = split(G(this, ar(aq)), b)
480480 let cx = parseIntValue(cv[v])
481481 let cy = lastBlock.timestamp
482482 if ((cx > cy))
483483 then throw("Voting is not finished yet")
484484 else if (("UPDATE" != cv[p]))
485485 then throw("Only UPDATE type can be applied")
486486 else {
487487 let cu = split(G(this, ap(aq)), b)
488488 if ((cu[F] == "true"))
489489 then throw("Voting is canceled")
490490 else if ((cu[z] != "true"))
491491 then throw("Voting status invalid")
492492 else if ((cu[A] != "1"))
493493 then throw("Winner is 'NO' - nothing to apply")
494494 else if ((cu[D] == "true"))
495495 then throw("Scripts are already applied")
496496 else {
497497 let cU = parseIntValue(cu[E])
498498 if (((cy - l) > cU))
499499 then throw((("Scripts timestamp=" + toString(cU)) + " is too far in the past, max 2 hrs allowed"))
500500 else if ((cU > (cy + m)))
501501 then throw((("Scripts timestamp=" + toString(cU)) + " is too far in the future, max 1.5 hrs allowed"))
502502 else {
503503 let cV = J(ax(), -1)
504504 if ((cV != -1))
505505 then throw((("proposalId=" + toString(cV)) + " is already being applied. Finish it first!"))
506506 else {
507507 let cW = invoke(af, "callEmergencyShutdown", ["Applying Governance UPDATE"], nil)
508508 if ((cW == cW))
509509 then $Tuple2([IntegerEntry(ax(), aq)], unit)
510510 else throw("Strict value is not equal to itself.")
511511 }
512512 }
513513 }
514514 }
515515 }
516516
517517
518518
519519 @Callable(aO)
520520 func finishApply () = {
521521 let aq = valueOrErrorMessage(getInteger(ax()), "No apply in progress, nothing to finish")
522522 let cv = split(G(this, ar(aq)), b)
523523 let bj = split(cv[w], c)
524524 let cu = split(G(this, ap(aq)), b)
525525 if ((cu[D] == "true"))
526526 then throw("Scripts are already applied")
527527 else {
528528 func cX (bl,bm) = if (!(isDefined(transactionHeightById(fromBase58String(bm)))))
529529 then throw(("NOT applied txId: " + bm))
530530 else unit
531531
532532 let cY = {
533533 let bn = bj
534534 let bo = size(bn)
535535 let bp = unit
536536 func bq (br,bs) = if ((bs >= bo))
537537 then br
538538 else cX(br, bn[bs])
539539
540540 func bt (br,bs) = if ((bs >= bo))
541541 then br
542542 else throw("List size exceeds 20")
543543
544544 bt(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bq(bp, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
545545 }
546546 let cZ = (J(ao(), 0) + 1)
547547 $Tuple2([DeleteEntry(ax()), IntegerEntry(ao(), cZ), StringEntry(ap(aq), cj(cu)), ck(cZ, cv[s], cv[r], aq)], cY)
548548 }
549549 }
550550
551551

github/deemru/w8io/026f985 
61.29 ms