tx · F5n8uEWCrrpHRiVhdBu7NyEjFT6zSGRZUChNWYFx2Ewg

3PEgVPqJ3NYWbRn1CLELUpuY9KCmragc7sY:  -0.01900000 Waves

2024.03.14 16:07 [4083568] smart account 3PEgVPqJ3NYWbRn1CLELUpuY9KCmragc7sY > SELF 0.00000000 Waves

{ "type": 13, "id": "F5n8uEWCrrpHRiVhdBu7NyEjFT6zSGRZUChNWYFx2Ewg", "fee": 1900000, "feeAssetId": null, "timestamp": 1710421680675, "version": 2, "chainId": 87, "sender": "3PEgVPqJ3NYWbRn1CLELUpuY9KCmragc7sY", "senderPublicKey": "8bCz9o3CUTfKKYBmcfJcAwKVKxEmLhGGyULemkcJwtkB", "proofs": [ "5hRMbUrmQvJBgNGvc1L6YrHUzWdV4gsEg4D9zZjfCtfgTeZtabhxQrFwemGUwu7ZeMc49q9z2K3U996u6vjrEkBT" ], "script": "base64:BgI6CAISABIAEgASABIDCgEIEgASABIAEgMKAQgSABIAEgMKAQgSABIAEgMKAQgSABIECgIICBIECgIIASQBDXRyeUdldEludGVnZXICB2FkZHJlc3MDa2V5BAckbWF0Y2gwCQCaCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDAFAWIAAAEMdHJ5R2V0U3RyaW5nAgdhZGRyZXNzA2tleQQHJG1hdGNoMAkAnQgCBQdhZGRyZXNzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFiBQckbWF0Y2gwBQFiAgAAAmQ4AIDC1y8AAmQ2AMCEPQAHcG9vbEJCQgEaAVdS7pNWFE1+B4zShQ/mflxXN34cn+88gh0ADXB1enpsZVN0YWtpbmcJAQdBZGRyZXNzAQEaAVeUaIz57qK5qp/W9Y68qY9nGpwG9BYpibsACWJiYlBvb2xJZAEaAVdS7pNWFE1+B4zShQ/mflxXN34cn+88gh0ADHB1enpsZU1hcmtldAkBB0FkZHJlc3MBARoBV12L8V/LKCBrH2ajyG7aC6iX7Q/o/clE8QAHYnVybnh0bgEgJE91eWp+Mzm4+wz/hKlxXF7KLd4zoMRdafnqRBHsTFQACXdoaXJscG9vbAEgWeON3MK1I7pKFNzE0K8UCeZk5gS+JQYLJk7lUG2XWccABnB1enpsZQEg8Rr+Jf72mTj0aSrE3+ES1keyxsoOujcJr3dtH46i5WMABHJvbWUBIItflAGEw2XBJDSO/xv8cJExSGrJMeqoy5Pz+Z80RAjPAARzdXJmASCS0fRK4hEBK/R+6t4hjj3F+8nyfc6Hsu1SGfA6TiRY9QAMcHV6emxlU3Rha2VkCQENdHJ5R2V0SW50ZWdlcgIFDXB1enpsZVN0YWtpbmcJAKwCAgkApQgBBQR0aGlzAgdfc3Rha2VkAAxwdXp6bGVJblBvb2wJAQ10cnlHZXRJbnRlZ2VyAgkBB0FkZHJlc3MBBQliYmJQb29sSWQJAKwCAgkArAICAgdnbG9iYWxfCQDYBAEFBnB1enpsZQIIX2JhbGFuY2UADHByb2plY3RTdGFrZQkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFCWJiYlBvb2xJZAkArAICCQClCAEFBHRoaXMCDF9pbmRleFN0YWtlZAAKdG90YWxTdGFrZQkBDXRyeUdldEludGVnZXICCQEHQWRkcmVzcwEFCWJiYlBvb2xJZAIXZ2xvYmFsX3Bvb2xUb2tlbl9hbW91bnQAC2Fzc2V0V2VpZ2h0CQENdHJ5R2V0SW50ZWdlcgIJAQdBZGRyZXNzAQUJYmJiUG9vbElkCQCsAgIJAKwCAgIHc3RhdGljXwkA2AQBBQZwdXp6bGUCB193ZWlnaHQADUJCQmxwSW5QdXp6bGUJAGsDCQBoAgkAaQIFDHB1enpsZUluUG9vbAULYXNzZXRXZWlnaHQAkE4FDHByb2plY3RTdGFrZQUKdG90YWxTdGFrZQAWa2V5QWRkcmVzc2VzUmVnaXN0ZXJlZAIUQWRkcmVzc2VzIHJlZ2lzdGVyZWQACWFkZHJlc3NlcwkAswICCQEMdHJ5R2V0U3RyaW5nAgUEdGhpcwUWa2V5QWRkcmVzc2VzUmVnaXN0ZXJlZAABABBrZXlCdXJueHRuQW1vdW50AhZCVVJOLVhUTiB0b3RhbCByZXdhcmRzAA1rZXlSb21lQW1vdW50AhJST01FIHRvdGFsIHJld2FyZHMAD2tleVB1enpsZUFtb3VudAIUUFVaWkxFIHRvdGFsIHJld2FyZHMADmtleVdhdmVzQW1vdW50AhNXQVZFUyB0b3RhbCByZXdhcmRzABJrZXlXaGlybHBvb2xBbW91bnQCF1dISVJMUE9PTCB0b3RhbCByZXdhcmRzABBrZXlUb3RhbE5GVHBvd2VyAg9Ub3RhbCBORlQgcG93ZXIAE2tleVRvdGFsUHV6emxlVmFsdWUCElRvdGFsIHB1enpsZSB2YWx1ZQATa2V5VG90YWxCdXJueHRuUGFpZAITVG90YWwgQlVSTi1YVE4gcGFpZAAVa2V5VG90YWxXaGlybHBvb2xQYWlkAhRUb3RhbCBXSElSTFBPT0wgcGFpZAAQa2V5VG90YWxSb21lUGFpZAIPVG90YWwgUk9NRSBwYWlkABFrZXlUb3RhbFdhdmVzUGFpZAIQVG90YWwgV0FWRVMgcGFpZAASa2V5VG90YWxQdXp6bGVQYWlkAhFUb3RhbCBQVVpaTEUgcGFpZAAHV0ZTbGlzdAkAzAgCAixHbnB5NW5WYWpQUDNYUVFWeHJIYm9NQXNYdGpueVdBeHliTURkS3JicjhzRAkAzAgCAixCVDlRNG1RZFFRbWVpMnI1WU5NQk1hc1pCUWo3bXlOYWl6NlFIYmE1Y1BYUwkAzAgCAixCTXZreUZ0UFZtRmF0cEZSOVFWRktSNU1ZVGNaVlRZMlZVd0ZaMjV2ckFBYwkAzAgCAiw3N1JxdThUTGpCZE10RHVYZDlvNWZVU0dvNjR6UWU1RkNjYW81TDhIdDlqOAkAzAgCAiw4S25oQkxWNDlTREp6cTFTU3kxWXZHSFlZNm03UTE0NmJWN1E2R0txUWI1QwkAzAgCAixGRnhzVWZLYkhFVzR6Wnl3TFVMNTVpcDhOcXA2ZmNXRHNxN3kzYW45eVFoZQkAzAgCAiw1blFSZWRHSG9WcEVRYXNNUWl2YjFVTXZGQkNIWGVmWFBYdFVSYk1NbmZzdQkAzAgCAiw2TjNNU0Z0Skd2VDc5dWNYNHBMZnR4UDdmR3M4RG5tWWRQZWR2bm9OYlZ0OQkAzAgCAitkRkMyaUpMNExEV2FzcTlZekhmMmtXZlBOUDY5VHlhbWlpOTNuczlCSHZNCQDMCAICLEExNThUN3laTHRtdWlNRXMyMVA5alYyZnRiTVh6eTNNbmZITUV1MWVNQUdLBQNuaWwAB0JCQmxpc3QJAMwIAgIsOXBDeG9HdEQxOEdlSDlnQ2VtenFyakhNTWpmeUJRRGZzclJBdXhTUmFnTWMJAMwIAgIsN0RnRmdDa0JqVkRjNVA5Wmd3c1ZMOVNpVGk3a1hKdVM0YVJWZ2I3WkhXM2sJAMwIAgIsNzZiVHZFOHR0SHZzdU4xRnVINEtjOFFVVzRrTDRtOGMxY2pmc1h5MkdmYlYJAMwIAgIsNFpyZjRINXRpRmNRTDhlUW1uQTJ3SjFYV1BFQkg2aDFHMk1lZlpEWW1jQ0IJAMwIAgIsMkR0QzRuRm54ejVVTTZtYmpQd01WWnBRV1pGVXF4czUyb1pyQmVOUms5QW8JAMwIAgIsRGpaR01BRmZvUVdrTVczUzVGVHNRTjNqb25jWnQ2QnNtaG5FSzNnZ0x4bU4JAMwIAgIsQm5lYVpYRDZvdkRKY1Y1cmdmcjhoc0haYU1Rc0pROERINmE1Z1RuR0NwQmMJAMwIAgIsNEVLZmd6RmtkNVVHS3JqbmFKVjN3N2FyZ1cxWW1GNGhxNTR4V1FGekFYYjkJAMwIAgIsOGhHRGtXS2l1MmlnRHBXVDNIcHI0bWNoREQ2eHdKOWhHbTJoMmpuVXZUcXoJAMwIAgIsRTNablNlanBYTDFYcjZWRzRRb0xoOHhvZDlOTWdwUGU0NzNyOVFrMkhpYkwFA25pbAANU1VSRmJvYXJkTGlzdAkAzAgCAixEekxTZ0VhQkI0VU5iUENaZWtQU3piUTg1S29rTUI3ZDFLUlJtelVQdTVocwkAzAgCAitXbVd6c2JiM1BOdnpKNHc0RmI3M0tjb05HTFh1bWdZWmFnVjIyekVpWDF3CQDMCAICLDdScnhiZ2F5VWtzUEhyQTc5OXBLdUNyNjFyZVQ4bkVOZHFDa2dWSFBnYU4yCQDMCAICLEZtRExmenNwYlZKZUtoS2R1TERVYmEySG9WZFJyS3Rzd0RLTVUzZTlxanRQCQDMCAICLEhtUXZWeVFkRWphZkxycEtQU2lnZGFmdmNZdkxiTllHRWdWQ3hMWlJXdDF5CQDMCAICLDJyVnhOTVh1dnVnNzRUb3JMUVpHQzJFUkhqQWJKblZVZ05YUTFrSm10bkFlCQDMCAICLDl5Yjl5R0ptNmd6Vm96Qkh1UVZIQmRBbnpmY3QzTjliUnBkampOVW5yemNDCQDMCAICK3MxU2ZHVnNoZjJqS0NBOUt2dktLdlV1Szh1dHAzTmUzZWU4THA2S0tMUncJAMwIAgIsM0UzeWI3VHZESzc2MmRuMTFkbVJMd2FwZ2hhZWZRVUV5dW5WZFhTTnA0dEIJAMwIAgIsRkg3NVR2QXB5VnRmZDlYNWExQXIxOU5zOUROSnZ6cHpMRkU1cGpoMXdpNGgJAMwIAgIsRWdxa2JEeVdSUGdWTlZxdEVFdFJTeldjR0QzM29yVm9FMmJ6WWRBZGllUVMJAMwIAgIsRHNLeUpwSkNaY0Z2OWpTblFiUVZHNEp4M1dTUDFLdGZIaEFLVGtTS3JWQmoJAMwIAgIsQWVzUHI1VUZEZ1k1alpYWVVaOEprYll0Sm92VmRESGJ5MTVTQ2tzRWhtSksJAMwIAgIsQVZzZmRxdzJtNWFVTnhhMUhZOWVtTG1DTEJmVkFHVHhWdTRlZjN4RURLQzgJAMwIAgIsNWpkdlNTWTJLN2g4VWlVQ1hVZ0s5VDd6Zk1yeXF3Mml0S1A4QnlzZFhERGsJAMwIAgIsQTR2b0taZXM4TVZEQVh5UWpLa2I2YmRFY3FNYnZCNHB0emJwcVlxdmVHNW4JAMwIAgIsMzRvWkthV0hwU0pyWnZHTGRZdTVXRzhXV1hnN3J3RjJISHg4SzE1R2ZVQ1EJAMwIAgIsNzdNY0NIa21OclJNNERqcWtTTTlCOFlqdUpjS3RuNjdqUWdlMXB6WnJROFQJAMwIAgIsN05FRkJudkdHTWZZZEJuaE1MTnB1VmdTMjJMcGNnWENaZ0hmbThESG1taUEJAMwIAgIsR29GOXlva3hIZ1BOb3hvV2dqamRtR2VXaGNMWUFyU3N4cWZmUnRmWUd0ZnMFA25pbBIBaQEKaW52b2tlQ2xJMQADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyBAJjbAkA/AcEBQR0aGlzAhFjbGFpbUludmVzdFB1enpsZQUDbmlsBQNuaWwDCQAAAgUCY2wFAmNsBAJpMQkA/AcEBQR0aGlzAghpbnZva2VyMQUDbmlsBQNuaWwDCQAAAgUCaTEFAmkxBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERY2xhaW1JbnZlc3RQdXp6bGUAAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIcYWNjZXNzIG9ubHkgYnkgcHJvamVjdCBvd25lcgQRcm9tZUJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwUEcm9tZQMJAAACBRFyb21lQmFsYW5jZUJlZm9yZQURcm9tZUJhbGFuY2VCZWZvcmUEEmNsYWltUHV6emxlU3Rha2luZwkA/AcEBQ1wdXp6bGVTdGFraW5nAgtjbGFpbVJld2FyZAUDbmlsBQNuaWwDCQAAAgUSY2xhaW1QdXp6bGVTdGFraW5nBRJjbGFpbVB1enpsZVN0YWtpbmcED3Bvb2xPbmVUb2tlbkludgkA/AcECQEHQWRkcmVzcwEBGgFX/SXDvU5hlEHvul4SY4/FOW9JtYg69eltAiFnZW5lcmF0ZUluZGV4V2l0aE9uZVRva2VuQW5kU3Rha2UJAMwIAgkA2AQBBQdwb29sQkJCBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBnB1enpsZQkA8AcCBQR0aGlzBQZwdXp6bGUFA25pbAMJAAACBQ9wb29sT25lVG9rZW5JbnYFD3Bvb2xPbmVUb2tlbkludgQQcm9tZUJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzBQRyb21lCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhVBY3RpdmF0ZWQgYmxvY2toZWlnaHQFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5QnVybnh0bkFtb3VudAkA8AcCBQR0aGlzBQdidXJueHRuCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ1rZXlSb21lQW1vdW50CQBlAgUQcm9tZUJhbGFuY2VBZnRlcgURcm9tZUJhbGFuY2VCZWZvcmUJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleVdhdmVzQW1vdW50AwkAZgIJAGUCCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQUCZDgAAAkAZQIICQDvBwEFBHRoaXMJYXZhaWxhYmxlBQJkOAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRJrZXlXaGlybHBvb2xBbW91bnQJAPAHAgUEdGhpcwUJd2hpcmxwb29sBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIaW52b2tlcjEABAVyZXNldAkA/AcEBQR0aGlzAgpyZXNldENvdW50BQNuaWwFA25pbAMJAAACBQVyZXNldAUFcmVzZXQEBGxpc3QJALwJAgUJYWRkcmVzc2VzAgEsCgEBcgIFYWNjdW0HYWRkcmVzcwkA/AcEBQR0aGlzAg1jb3VudE5GVHBvd2VyCQDMCAIFB2FkZHJlc3MFA25pbAUDbmlsBAdpbnZva2VyCgACJGwFBGxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBAXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDMwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAwkAAAIFB2ludm9rZXIFB2ludm9rZXIEAXAJAPwHBAUEdGhpcwIEZGF0YQUDbmlsBQNuaWwDCQAAAgUBcAUBcAkAzAgCCQEMSW50ZWdlckVudHJ5AgIQV0ZTIHB1enpsZSB2YWx1ZQkAawMJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVRvdGFsUHV6emxlVmFsdWUAAQkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyAAoACQkAzAgCCQEMSW50ZWdlckVudHJ5AgIQQkJCIHB1enpsZSB2YWx1ZQkAawMJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVRvdGFsUHV6emxlVmFsdWUACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyAAoACQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnJlc2V0Q291bnQACQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlUb3RhbE5GVHBvd2VyAAAFA25pbAFpAQ1jb3VudE5GVHBvd2VyAQdhZGRyZXNzCgEIZm9sZEZ1bmMCA2FjYwNXRlMJAGQCCQBkAgUDYWNjCQDwBwIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FkZHJlc3MJANkEAQUDV0ZTAwkAAAIJAQx0cnlHZXRTdHJpbmcCBQxwdXp6bGVNYXJrZXQJAKwCAgkArAICAgRuZnRfBQNXRlMCB19zZWxsZXIFB2FkZHJlc3MAAQAABAhzaGFyZVdGUwoAAiRsBQdXRlNsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhmb2xkRnVuYwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgoBCWZvbGRGdW5jQgIDYWNjA0JCQgkAZAIJAGQCBQNhY2MJAPAHAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwkA2QQBBQNCQkIDCQAAAgkBDHRyeUdldFN0cmluZwIFDHB1enpsZU1hcmtldAkArAICCQCsAgICBG5mdF8FA0JCQgIHX3NlbGxlcgUHYWRkcmVzcwABAAAECHNoYXJlQkJCCgACJGwFB0JCQmxpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWZvbGRGdW5jQgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgoBCWZvbGRGdW5jQwIDYWNjCVNVUkZib2FyZAkAZAIJAGQCBQNhY2MJAPAHAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwkA2QQBBQlTVVJGYm9hcmQDCQAAAgkBDHRyeUdldFN0cmluZwIFDHB1enpsZU1hcmtldAkArAICCQCsAgICBG5mdF8FCVNVUkZib2FyZAIHX3NlbGxlcgUHYWRkcmVzcwABAAAED2Ftb3VudFNVUkZib2FyZAoAAiRsBQ1TVVJGYm9hcmRMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAAACgEFJGYyXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlmb2xkRnVuY0MCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjJfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYyXzICCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECCQEFJGYyXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAMJAAACCQBkAgUIc2hhcmVXRlMFCHNoYXJlQkJCAAAEBGxpc3QJALwJAgUJYWRkcmVzc2VzAgEsBApub05GVGluZGV4CQEFdmFsdWUBCQDPCAIFBGxpc3QFB2FkZHJlc3MEDmxpc3RNaW51c05vTkZUCQDRCAIFBGxpc3QFCm5vTkZUaW5kZXgEDW1pbnVzTm9ORlRzdHIJAKwCAgkAuQkCBQ5saXN0TWludXNOb05GVAIBLAIBLAkAzAgCCQELU3RyaW5nRW50cnkCBRZrZXlBZGRyZXNzZXNSZWdpc3RlcmVkBQ1taW51c05vTkZUc3RyBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHYWRkcmVzcwIEX1dGUwUIc2hhcmVXRlMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgUHYWRkcmVzcwIEX0JCQgkAaAIFCHNoYXJlQkJCAAoJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVRvdGFsTkZUcG93ZXIJAGQCCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEGtleVRvdGFsTkZUcG93ZXIJAGQCBQhzaGFyZVdGUwkAaAIFCHNoYXJlQkJCAAoFA25pbAFpAQRkYXRhAAkAzAgCCQEMSW50ZWdlckVudHJ5AgIOcHV6emxlIGJhbGFuY2UJAPAHAgUEdGhpcwUGcHV6emxlCQDMCAIJAQxJbnRlZ2VyRW50cnkCAg1wdXp6bGUgc3Rha2VkBQxwdXp6bGVTdGFrZWQJAMwIAgkBDEludGVnZXJFbnRyeQICDXB1enpsZSBCQkIgTFAFDUJCQmxwSW5QdXp6bGUJAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsUHV6emxlVmFsdWUJAGQCCQBkAgkA8AcCBQR0aGlzBQZwdXp6bGUFDHB1enpsZVN0YWtlZAUNQkJCbHBJblB1enpsZQUDbmlsAWkBCGludm9rZXIyAAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIEAXQJAPwHBAUEdGhpcwIOdHJhY2tUb3RhbFBhaWQFA25pbAUDbmlsAwkAAAIFAXQFAXQEBGxpc3QJALwJAgUJYWRkcmVzc2VzAgEsCgEBcgIFYWNjdW0HYWRkcmVzcwkA/AcEBQR0aGlzAhFkaXN0cmlidXRlUmV3YXJkcwkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAQHaW52b2tlcgoAAiRsBQRsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQFyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAyMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQDCQAAAgUHaW52b2tlcgUHaW52b2tlcgQCYnMJAPwHBAUEdGhpcwIIYnVyblN1cmYFA25pbAUDbmlsAwkAAAIFAmJzBQJicwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDnRyYWNrVG90YWxQYWlkAAQNYW1vdW50QnVybnh0bgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlCdXJueHRuQW1vdW50BA9hbW91bnRXaGlybHBvb2wJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUSa2V5V2hpcmxwb29sQW1vdW50BAthbW91bnRXYXZlcwkBDXRyeUdldEludGVnZXICBQR0aGlzBQ5rZXlXYXZlc0Ftb3VudAQKYW1vdW50Um9tZQkBDXRyeUdldEludGVnZXICBQR0aGlzBQ1rZXlSb21lQW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNrZXlUb3RhbEJ1cm54dG5QYWlkCQBkAgUNYW1vdW50QnVybnh0bgkBDXRyeUdldEludGVnZXICBQR0aGlzBRNrZXlUb3RhbEJ1cm54dG5QYWlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrZXlUb3RhbFdoaXJscG9vbFBhaWQJAGQCBQ9hbW91bnRXaGlybHBvb2wJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUVa2V5VG90YWxXaGlybHBvb2xQYWlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrZXlUb3RhbFdhdmVzUGFpZAkAZAIFC2Ftb3VudFdhdmVz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V0ZTCQBoAgUIc2hhcmVCQkIACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyBA9hbW91bnRXaGlybHBvb2wJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdoaXJscG9vbEFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyBAthbW91bnRXYXZlcwkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUOa2V5V2F2ZXNBbW91bnQJAGQCBQhzaGFyZVdGUwkAaAIFCHNoYXJlQkJCAAoJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUQa2V5VG90YWxORlRwb3dlcgQKYW1vdW50Um9tZQkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUNa2V5Um9tZUFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FkZHJlc3MFDWFtb3VudEJ1cm54dG4FB2J1cm54dG4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwUPYW1vdW50V2hpcmxwb29sBQl3aGlybHBvb2wJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwULYW1vdW50V2F2ZXMFBHVuaXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwUKYW1vdW50Um9tZQUEcm9tZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzCQBoAgUPYW1vdW50U1VSRmJvYXJkBQJkNgUEc3VyZgUDbmlsAWkBCGJ1cm5TdXJmAAkAzAgCCQEEQnVybgIFBHN1cmYFAmQ2CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhFTVVJGIHRvdGFsIGJ1cm5lZAkAZAIJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwIRU1VSRiB0b3RhbCBidXJuZWQFAmQ2BQNuaWwBaQEIcmVnaXN0ZXIAAwkBCGNvbnRhaW5zAgkBDHRyeUdldFN0cmluZwIFBHRoaXMFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQJAKUIAQgFAWkGY2FsbGVyCQACAQISYWxyZWFkeSByZWdpc3RlcmVkAwkAAAIJAJADAQkAvAkCBQlhZGRyZXNzZXMCASwAHgkAAgECC21heCByZWFjaGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQJAKwCAgkArAICCQEMdHJ5R2V0U3RyaW5nAgUEdGhpcwUWa2V5QWRkcmVzc2VzUmVnaXN0ZXJlZAkApQgBCAUBaQZjYWxsZXICASwFA25pbAFpARByZWdpc3Rlck1hbnVhbGx5AQdhZGRyZXNzAwkBCGNvbnRhaW5zAgkBDHRyeUdldFN0cmluZwIFBHRoaXMFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQFB2FkZHJlc3MJAAIBAhJhbHJlYWR5IHJlZ2lzdGVyZWQDCQAAAgkAkAMBCQC8CQIFCWFkZHJlc3NlcwIBLAAoCQACAQILbWF4IHJlYWNoZWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQJAKwCAgkArAICCQEMdHJ5R2V0U3RyaW5nAgUEdGhpcwUWa2V5QWRkcmVzc2VzUmVnaXN0ZXJlZAUHYWRkcmVzcwIBLAUDbmlsAWkBDmNsYWltQnlBbnlib2R5AAMJAGYCCQBkAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIVQWN0aXZhdGVkIGJsb2NraGVpZ2h0CQBoAgAeAKALBQZoZWlnaHQJAAIBCQCsAgICFldhaXQgdGlsbCBibG9ja2hlaWdodDoJAKQDAQkAZAIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFBHRoaXMCFUFjdGl2YXRlZCBibG9ja2hlaWdodAkAaAIAHgCgCwQTcHV6emxlQmFsYW5jZUJlZm9yZQkA8AcCBQR0aGlzBQZwdXp6bGUDCQAAAgUTcHV6emxlQmFsYW5jZUJlZm9yZQUTcHV6emxlQmFsYW5jZUJlZm9yZQQRcm9tZUJhbGFuY2VCZWZvcmUJAPAHAgUEdGhpcwUEcm9tZQMJAAACBRFyb21lQmFsYW5jZUJlZm9yZQURcm9tZUJhbGFuY2VCZWZvcmUEEmNsYWltUHV6emxlU3Rha2luZwkA/AcEBQ1wdXp6bGVTdGFraW5nAgtjbGFpbVJld2FyZAUDbmlsBQNuaWwDCQAAAgUSY2xhaW1QdXp6bGVTdGFraW5nBRJjbGFpbVB1enpsZVN0YWtpbmcECGNsYWltSW52CQD8BwQJAQdBZGRyZXNzAQUHcG9vbEJCQgIRY2xhaW1JbmRleFJld2FyZHMFA25pbAUDbmlsAwkAAAIFCGNsYWltSW52BQhjbGFpbUludgQScHV6emxlQmFsYW5jZUFmdGVyCQDwBwIFBHRoaXMFBnB1enpsZQQQcm9tZUJhbGFuY2VBZnRlcgkA8AcCBQR0aGlzBQRyb21lCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlCdXJueHRuQW1vdW50CQDwBwIFBHRoaXMFB2J1cm54dG4JAMwIAgkBDEludGVnZXJFbnRyeQIFDWtleVJvbWVBbW91bnQJAGUCBRByb21lQmFsYW5jZUFmdGVyBRFyb21lQmFsYW5jZUJlZm9yZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa2V5UHV6emxlQW1vdW50CQBlAgUScHV6emxlQmFsYW5jZUFmdGVyBRNwdXp6bGVCYWxhbmNlQmVmb3JlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5rZXlXYXZlc0Ftb3VudAMJAGYCCQBlAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFAmQ4AAAJAGUCCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQUCZDgAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5V2hpcmxwb29sQW1vdW50CQDwBwIFBHRoaXMFCXdoaXJscG9vbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGludm9rZXJCeUFueWJvZHkAAwkAZgIJAGQCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzAhVBY3RpdmF0ZWQgYmxvY2toZWlnaHQJAGgCAB4AoAsFBmhlaWdodAkAAgEJAKwCAgIWV2FpdCB0aWxsIGJsb2NraGVpZ2h0OgkApAMBCQBkAgkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwIVQWN0aXZhdGVkIGJsb2NraGVpZ2h0CQBoAgAeAKALBAVyZXNldAkA/AcEBQR0aGlzAhpkaXN0cmlidXRlUmV3YXJkc0J5QW55Ym9keQUDbmlsBQNuaWwDCQAAAgUFcmVzZXQFBXJlc2V0BARsaXN0CQC8CQIFCWFkZHJlc3NlcwIBLAoBAXICBWFjY3VtB2FkZHJlc3MJAPwHBAUEdGhpcwINY291bnRORlRwb3dlcgkAzAgCBQdhZGRyZXNzBQNuaWwFA25pbAQHaW52b2tlcgoAAiRsBQRsaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQFyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA0MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoAwkAAAIFB2ludm9rZXIFB2ludm9rZXIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARpkaXN0cmlidXRlUmV3YXJkc0J5QW55Ym9keQEHYWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIKAQhmb2xkRnVuYwIDYWNjA1dGUwkAZAIJAGQCBQNhY2MJAPAHAgkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwkA2QQBBQNXRlMDCQAAAgkBDHRyeUdldFN0cmluZwIFDHB1enpsZU1hcmtldAkArAICCQCsAgICBG5mdF8FA1dGUwIHX3NlbGxlcgUHYWRkcmVzcwABAAAECHNoYXJlV0ZTCgACJGwFB1dGU2xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCGZvbGRGdW5jAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKCgEJZm9sZEZ1bmNCAgNhY2MDQkJCCQBkAgkAZAIFA2FjYwkA8AcCCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzCQDZBAEFA0JCQgMJAAACCQEMdHJ5R2V0U3RyaW5nAgUMcHV6emxlTWFya2V0CQCsAgIJAKwCAgIEbmZ0XwUDQkJCAgdfc2VsbGVyBQdhZGRyZXNzAAEAAAQIc2hhcmVCQkIKAAIkbAUHQkJCbGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMV8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEJZm9sZEZ1bmNCAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYxXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMV8yAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgkBBSRmMV8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAwkAAAIJAGQCBQhzaGFyZVdGUwUIc2hhcmVCQkIAAAQEbGlzdAkAvAkCBQlhZGRyZXNzZXMCASwECm5vTkZUaW5kZXgJAQV2YWx1ZQEJAM8IAgUEbGlzdAUHYWRkcmVzcwQObGlzdE1pbnVzTm9ORlQJANEIAgUEbGlzdAUKbm9ORlRpbmRleAQNbWludXNOb05GVHN0cgkArAICCQC5CQIFDmxpc3RNaW51c05vTkZUAgEsAgEsCQDMCAIJAQtTdHJpbmdFbnRyeQIFFmtleUFkZHJlc3Nlc1JlZ2lzdGVyZWQFDW1pbnVzTm9ORlRzdHIFA25pbAQNYW1vdW50QnVybnh0bgkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUQa2V5QnVybnh0bkFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyBA9hbW91bnRXaGlybHBvb2wJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVdoaXJscG9vbEFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyBAthbW91bnRXYXZlcwkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUOa2V5V2F2ZXNBbW91bnQJAGQCBQhzaGFyZVdGUwkAaAIFCHNoYXJlQkJCAAoJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUQa2V5VG90YWxORlRwb3dlcgQKYW1vdW50Um9tZQkAawMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUNa2V5Um9tZUFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyBAxhbW91bnRQdXp6bGUJAGsDCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFD2tleVB1enpsZUFtb3VudAkAZAIFCHNoYXJlV0ZTCQBoAgUIc2hhcmVCQkIACgkBDXRyeUdldEludGVnZXICBQR0aGlzBRBrZXlUb3RhbE5GVHBvd2VyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB2FkZHJlc3MFDWFtb3VudEJ1cm54dG4FB2J1cm54dG4JAMwIAgkBDEludGVnZXJFbnRyeQIFE2tleVRvdGFsQnVybnh0blBhaWQJAGQCBQ1hbW91bnRCdXJueHRuCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFE2tleVRvdGFsQnVybnh0blBhaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwUPYW1vdW50V2hpcmxwb29sBQl3aGlybHBvb2wJAMwIAgkBDEludGVnZXJFbnRyeQIFFWtleVRvdGFsV2hpcmxwb29sUGFpZAkAZAIFD2Ftb3VudFdoaXJscG9vbAkBDXRyeUdldEludGVnZXICBQR0aGlzBRVrZXlUb3RhbFdoaXJscG9vbFBhaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwULYW1vdW50V2F2ZXMFBHVuaXQJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtleVRvdGFsV2F2ZXNQYWlkCQBkAgULYW1vdW50V2F2ZXMJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwURa2V5VG90YWxXYXZlc1BhaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUHYWRkcmVzcwUKYW1vdW50Um9tZQUEcm9tZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5VG90YWxSb21lUGFpZAkAZAIFCmFtb3VudFJvbWUJAQ10cnlHZXRJbnRlZ2VyAgUEdGhpcwUQa2V5VG90YWxSb21lUGFpZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQdhZGRyZXNzBQxhbW91bnRQdXp6bGUFBnB1enpsZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUSa2V5VG90YWxQdXp6bGVQYWlkCQBkAgUMYW1vdW50UHV6emxlCQENdHJ5R2V0SW50ZWdlcgIFBHRoaXMFEmtleVRvdGFsUHV6emxlUGFpZAUDbmlsAWkBC2RlbGV0ZUVudHJ5AAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUWa2V5QWRkcmVzc2VzUmVnaXN0ZXJlZAUDbmlsAWkBCGFkZFdGU2lkAglXRlNudW1iZXIKV0ZTYXNzZXRJZAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHGFjY2VzcyBvbmx5IGJ5IHByb2plY3Qgb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlXRlNudW1iZXICAAUKV0ZTYXNzZXRJZAUDbmlsAWkBEmNoYW5nZUludGVnZXJFbnRyeQIJa2V5U3RyaW5nB2ludGVnZXIDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhxhY2Nlc3Mgb25seSBieSBwcm9qZWN0IG93bmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQlrZXlTdHJpbmcFB2ludGVnZXIFA25pbACGpDE1", "height": 4083568, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2nGPLHDGaZubCHDufKkotcu5BcKb9X8s18EGLAXpcwNT Next: HVjWaaiAokm68BQSdMjU4WbJVNErg9zzShLUEEMEAjXL Diff:
OldNewDifferences
207207 else throw("List size exceeds 10")
208208
209209 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
210+ }
211+ func foldFuncC (acc,SURFboard) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(SURFboard))) + (if ((tryGetString(puzzleMarket, (("nft_" + SURFboard) + "_seller")) == address))
212+ then 1
213+ else 0))
214+
215+ let amountSURFboard = {
216+ let $l = SURFboardList
217+ let $s = size($l)
218+ let $acc0 = 0
219+ func $f2_1 ($a,$i) = if (($i >= $s))
220+ then $a
221+ else foldFuncC($a, $l[$i])
222+
223+ func $f2_2 ($a,$i) = if (($i >= $s))
224+ then $a
225+ else throw("List size exceeds 20")
226+
227+ $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
210228 }
211229 if (((shareWFS + shareBBB) == 0))
212230 then {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetInteger (address,key) = match getInteger(address, key) {
55 case b: Int =>
66 b
77 case _ =>
88 0
99 }
1010
1111
1212 func tryGetString (address,key) = match getString(address, key) {
1313 case b: String =>
1414 b
1515 case _ =>
1616 ""
1717 }
1818
1919
2020 let d8 = 100000000
2121
2222 let d6 = 1000000
2323
2424 let poolBBB = base58'3P9VPwVfNj3dDevQZt1Z951A4K57cmQmCgk'
2525
2626 let puzzleStaking = Address(base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS')
2727
2828 let bbbPoolId = base58'3P9VPwVfNj3dDevQZt1Z951A4K57cmQmCgk'
2929
3030 let puzzleMarket = Address(base58'3PATXDVE53rKJtkwXYV3tvuLVS2fDtGtKCc')
3131
3232 let burnxtn = base58'3SjxA2YLdfF9fTRbzLm9xFn27C6MW34W1YsdJ6Axefns'
3333
3434 let whirlpool = base58'73tY3E6Gd5AWYmsuq8m8Kek7KnJNAYyS3GoveTbc6jCi'
3535
3636 let puzzle = base58'HEB8Qaw9xrWpWs8tHsiATYGBWDBtP2S7kcPALrMu43AS'
3737
3838 let rome = base58'AP4Cb5xLYGH6ZigHreCZHoXpQTWDkPsG2BHqfDUx6taJ'
3939
4040 let surf = base58'At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL'
4141
4242 let puzzleStaked = tryGetInteger(puzzleStaking, (toString(this) + "_staked"))
4343
4444 let puzzleInPool = tryGetInteger(Address(bbbPoolId), (("global_" + toBase58String(puzzle)) + "_balance"))
4545
4646 let projectStake = tryGetInteger(Address(bbbPoolId), (toString(this) + "_indexStaked"))
4747
4848 let totalStake = tryGetInteger(Address(bbbPoolId), "global_poolToken_amount")
4949
5050 let assetWeight = tryGetInteger(Address(bbbPoolId), (("static_" + toBase58String(puzzle)) + "_weight"))
5151
5252 let BBBlpInPuzzle = fraction(((puzzleInPool / assetWeight) * 10000), projectStake, totalStake)
5353
5454 let keyAddressesRegistered = "Addresses registered"
5555
5656 let addresses = dropRight(tryGetString(this, keyAddressesRegistered), 1)
5757
5858 let keyBurnxtnAmount = "BURN-XTN total rewards"
5959
6060 let keyRomeAmount = "ROME total rewards"
6161
6262 let keyPuzzleAmount = "PUZZLE total rewards"
6363
6464 let keyWavesAmount = "WAVES total rewards"
6565
6666 let keyWhirlpoolAmount = "WHIRLPOOL total rewards"
6767
6868 let keyTotalNFTpower = "Total NFT power"
6969
7070 let keyTotalPuzzleValue = "Total puzzle value"
7171
7272 let keyTotalBurnxtnPaid = "Total BURN-XTN paid"
7373
7474 let keyTotalWhirlpoolPaid = "Total WHIRLPOOL paid"
7575
7676 let keyTotalRomePaid = "Total ROME paid"
7777
7878 let keyTotalWavesPaid = "Total WAVES paid"
7979
8080 let keyTotalPuzzlePaid = "Total PUZZLE paid"
8181
8282 let WFSlist = ["Gnpy5nVajPP3XQQVxrHboMAsXtjnyWAxybMDdKrbr8sD", "BT9Q4mQdQQmei2r5YNMBMasZBQj7myNaiz6QHba5cPXS", "BMvkyFtPVmFatpFR9QVFKR5MYTcZVTY2VUwFZ25vrAAc", "77Rqu8TLjBdMtDuXd9o5fUSGo64zQe5FCcao5L8Ht9j8", "8KnhBLV49SDJzq1SSy1YvGHYY6m7Q146bV7Q6GKqQb5C", "FFxsUfKbHEW4zZywLUL55ip8Nqp6fcWDsq7y3an9yQhe", "5nQRedGHoVpEQasMQivb1UMvFBCHXefXPXtURbMMnfsu", "6N3MSFtJGvT79ucX4pLftxP7fGs8DnmYdPedvnoNbVt9", "dFC2iJL4LDWasq9YzHf2kWfPNP69Tyamii93ns9BHvM", "A158T7yZLtmuiMEs21P9jV2ftbMXzy3MnfHMEu1eMAGK"]
8383
8484 let BBBlist = ["9pCxoGtD18GeH9gCemzqrjHMMjfyBQDfsrRAuxSRagMc", "7DgFgCkBjVDc5P9ZgwsVL9SiTi7kXJuS4aRVgb7ZHW3k", "76bTvE8ttHvsuN1FuH4Kc8QUW4kL4m8c1cjfsXy2GfbV", "4Zrf4H5tiFcQL8eQmnA2wJ1XWPEBH6h1G2MefZDYmcCB", "2DtC4nFnxz5UM6mbjPwMVZpQWZFUqxs52oZrBeNRk9Ao", "DjZGMAFfoQWkMW3S5FTsQN3joncZt6BsmhnEK3ggLxmN", "BneaZXD6ovDJcV5rgfr8hsHZaMQsJQ8DH6a5gTnGCpBc", "4EKfgzFkd5UGKrjnaJV3w7argW1YmF4hq54xWQFzAXb9", "8hGDkWKiu2igDpWT3Hpr4mchDD6xwJ9hGm2h2jnUvTqz", "E3ZnSejpXL1Xr6VG4QoLh8xod9NMgpPe473r9Qk2HibL"]
8585
8686 let SURFboardList = ["DzLSgEaBB4UNbPCZekPSzbQ85KokMB7d1KRRmzUPu5hs", "WmWzsbb3PNvzJ4w4Fb73KcoNGLXumgYZagV22zEiX1w", "7RrxbgayUksPHrA799pKuCr61reT8nENdqCkgVHPgaN2", "FmDLfzspbVJeKhKduLDUba2HoVdRrKtswDKMU3e9qjtP", "HmQvVyQdEjafLrpKPSigdafvcYvLbNYGEgVCxLZRWt1y", "2rVxNMXuvug74TorLQZGC2ERHjAbJnVUgNXQ1kJmtnAe", "9yb9yGJm6gzVozBHuQVHBdAnzfct3N9bRpdjjNUnrzcC", "s1SfGVshf2jKCA9KvvKKvUuK8utp3Ne3ee8Lp6KKLRw", "3E3yb7TvDK762dn11dmRLwapghaefQUEyunVdXSNp4tB", "FH75TvApyVtfd9X5a1Ar19Ns9DNJvzpzLFE5pjh1wi4h", "EgqkbDyWRPgVNVqtEEtRSzWcGD33orVoE2bzYdAdieQS", "DsKyJpJCZcFv9jSnQbQVG4Jx3WSP1KtfHhAKTkSKrVBj", "AesPr5UFDgY5jZXYUZ8JkbYtJovVdDHby15SCksEhmJK", "AVsfdqw2m5aUNxa1HY9emLmCLBfVAGTxVu4ef3xEDKC8", "5jdvSSY2K7h8UiUCXUgK9T7zfMryqw2itKP8BysdXDDk", "A4voKZes8MVDAXyQjKkb6bdEcqMbvB4ptzbpqYqveG5n", "34oZKaWHpSJrZvGLdYu5WG8WWXg7rwF2HHx8K15GfUCQ", "77McCHkmNrRM4DjqkSM9B8YjuJcKtn67jQge1pzZrQ8T", "7NEFBnvGGMfYdBnhMLNpuVgS22LpcgXCZgHfm8DHmmiA", "GoF9yokxHgPNoxoWgjjdmGeWhcLYArSsxqffRtfYGtfs"]
8787
8888 @Callable(i)
8989 func invokeClI1 () = if ((i.caller != this))
9090 then throw("access only by project owner")
9191 else {
9292 let cl = invoke(this, "claimInvestPuzzle", nil, nil)
9393 if ((cl == cl))
9494 then {
9595 let i1 = invoke(this, "invoker1", nil, nil)
9696 if ((i1 == i1))
9797 then nil
9898 else throw("Strict value is not equal to itself.")
9999 }
100100 else throw("Strict value is not equal to itself.")
101101 }
102102
103103
104104
105105 @Callable(i)
106106 func claimInvestPuzzle () = if ((i.caller != this))
107107 then throw("access only by project owner")
108108 else {
109109 let romeBalanceBefore = assetBalance(this, rome)
110110 if ((romeBalanceBefore == romeBalanceBefore))
111111 then {
112112 let claimPuzzleStaking = invoke(puzzleStaking, "claimReward", nil, nil)
113113 if ((claimPuzzleStaking == claimPuzzleStaking))
114114 then {
115115 let poolOneTokenInv = invoke(Address(base58'3PR1Qvi9mHT35SwWEkLSqqE2L8thiPLdVWU'), "generateIndexWithOneTokenAndStake", [toBase58String(poolBBB)], [AttachedPayment(puzzle, assetBalance(this, puzzle))])
116116 if ((poolOneTokenInv == poolOneTokenInv))
117117 then {
118118 let romeBalanceAfter = assetBalance(this, rome)
119119 [IntegerEntry("Activated blockheight", height), IntegerEntry(keyBurnxtnAmount, assetBalance(this, burnxtn)), IntegerEntry(keyRomeAmount, (romeBalanceAfter - romeBalanceBefore)), IntegerEntry(keyWavesAmount, if (((wavesBalance(this).available - d8) > 0))
120120 then (wavesBalance(this).available - d8)
121121 else 0), IntegerEntry(keyWhirlpoolAmount, assetBalance(this, whirlpool))]
122122 }
123123 else throw("Strict value is not equal to itself.")
124124 }
125125 else throw("Strict value is not equal to itself.")
126126 }
127127 else throw("Strict value is not equal to itself.")
128128 }
129129
130130
131131
132132 @Callable(i)
133133 func invoker1 () = {
134134 let reset = invoke(this, "resetCount", nil, nil)
135135 if ((reset == reset))
136136 then {
137137 let list = split_4C(addresses, ",")
138138 func r (accum,address) = invoke(this, "countNFTpower", [address], nil)
139139
140140 let invoker = {
141141 let $l = list
142142 let $s = size($l)
143143 let $acc0 = nil
144144 func $f0_1 ($a,$i) = if (($i >= $s))
145145 then $a
146146 else r($a, $l[$i])
147147
148148 func $f0_2 ($a,$i) = if (($i >= $s))
149149 then $a
150150 else throw("List size exceeds 30")
151151
152152 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
153153 }
154154 if ((invoker == invoker))
155155 then {
156156 let p = invoke(this, "data", nil, nil)
157157 if ((p == p))
158158 then [IntegerEntry("WFS puzzle value", fraction(fraction(tryGetInteger(this, keyTotalPuzzleValue), 1, tryGetInteger(this, keyTotalNFTpower)), 10, 9)), IntegerEntry("BBB puzzle value", fraction(fraction(tryGetInteger(this, keyTotalPuzzleValue), 10, tryGetInteger(this, keyTotalNFTpower)), 10, 9))]
159159 else throw("Strict value is not equal to itself.")
160160 }
161161 else throw("Strict value is not equal to itself.")
162162 }
163163 else throw("Strict value is not equal to itself.")
164164 }
165165
166166
167167
168168 @Callable(i)
169169 func resetCount () = [IntegerEntry(keyTotalNFTpower, 0)]
170170
171171
172172
173173 @Callable(i)
174174 func countNFTpower (address) = {
175175 func foldFunc (acc,WFS) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(WFS))) + (if ((tryGetString(puzzleMarket, (("nft_" + WFS) + "_seller")) == address))
176176 then 1
177177 else 0))
178178
179179 let shareWFS = {
180180 let $l = WFSlist
181181 let $s = size($l)
182182 let $acc0 = 0
183183 func $f0_1 ($a,$i) = if (($i >= $s))
184184 then $a
185185 else foldFunc($a, $l[$i])
186186
187187 func $f0_2 ($a,$i) = if (($i >= $s))
188188 then $a
189189 else throw("List size exceeds 10")
190190
191191 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
192192 }
193193 func foldFuncB (acc,BBB) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(BBB))) + (if ((tryGetString(puzzleMarket, (("nft_" + BBB) + "_seller")) == address))
194194 then 1
195195 else 0))
196196
197197 let shareBBB = {
198198 let $l = BBBlist
199199 let $s = size($l)
200200 let $acc0 = 0
201201 func $f1_1 ($a,$i) = if (($i >= $s))
202202 then $a
203203 else foldFuncB($a, $l[$i])
204204
205205 func $f1_2 ($a,$i) = if (($i >= $s))
206206 then $a
207207 else throw("List size exceeds 10")
208208
209209 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
210+ }
211+ func foldFuncC (acc,SURFboard) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(SURFboard))) + (if ((tryGetString(puzzleMarket, (("nft_" + SURFboard) + "_seller")) == address))
212+ then 1
213+ else 0))
214+
215+ let amountSURFboard = {
216+ let $l = SURFboardList
217+ let $s = size($l)
218+ let $acc0 = 0
219+ func $f2_1 ($a,$i) = if (($i >= $s))
220+ then $a
221+ else foldFuncC($a, $l[$i])
222+
223+ func $f2_2 ($a,$i) = if (($i >= $s))
224+ then $a
225+ else throw("List size exceeds 20")
226+
227+ $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
210228 }
211229 if (((shareWFS + shareBBB) == 0))
212230 then {
213231 let list = split_4C(addresses, ",")
214232 let noNFTindex = value(indexOf(list, address))
215233 let listMinusNoNFT = removeByIndex(list, noNFTindex)
216234 let minusNoNFTstr = (makeString(listMinusNoNFT, ",") + ",")
217235 [StringEntry(keyAddressesRegistered, minusNoNFTstr)]
218236 }
219237 else [IntegerEntry((address + "_WFS"), shareWFS), IntegerEntry((address + "_BBB"), (shareBBB * 10)), IntegerEntry(keyTotalNFTpower, (tryGetInteger(this, keyTotalNFTpower) + (shareWFS + (shareBBB * 10))))]
220238 }
221239
222240
223241
224242 @Callable(i)
225243 func data () = [IntegerEntry("puzzle balance", assetBalance(this, puzzle)), IntegerEntry("puzzle staked", puzzleStaked), IntegerEntry("puzzle BBB LP", BBBlpInPuzzle), IntegerEntry(keyTotalPuzzleValue, ((assetBalance(this, puzzle) + puzzleStaked) + BBBlpInPuzzle))]
226244
227245
228246
229247 @Callable(i)
230248 func invoker2 () = if ((i.caller != this))
231249 then throw("access only by project owner")
232250 else {
233251 let t = invoke(this, "trackTotalPaid", nil, nil)
234252 if ((t == t))
235253 then {
236254 let list = split_4C(addresses, ",")
237255 func r (accum,address) = invoke(this, "distributeRewards", [address], nil)
238256
239257 let invoker = {
240258 let $l = list
241259 let $s = size($l)
242260 let $acc0 = nil
243261 func $f0_1 ($a,$i) = if (($i >= $s))
244262 then $a
245263 else r($a, $l[$i])
246264
247265 func $f0_2 ($a,$i) = if (($i >= $s))
248266 then $a
249267 else throw("List size exceeds 20")
250268
251269 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
252270 }
253271 if ((invoker == invoker))
254272 then {
255273 let bs = invoke(this, "burnSurf", nil, nil)
256274 if ((bs == bs))
257275 then nil
258276 else throw("Strict value is not equal to itself.")
259277 }
260278 else throw("Strict value is not equal to itself.")
261279 }
262280 else throw("Strict value is not equal to itself.")
263281 }
264282
265283
266284
267285 @Callable(i)
268286 func trackTotalPaid () = {
269287 let amountBurnxtn = tryGetInteger(this, keyBurnxtnAmount)
270288 let amountWhirlpool = tryGetInteger(this, keyWhirlpoolAmount)
271289 let amountWaves = tryGetInteger(this, keyWavesAmount)
272290 let amountRome = tryGetInteger(this, keyRomeAmount)
273291 [IntegerEntry(keyTotalBurnxtnPaid, (amountBurnxtn + tryGetInteger(this, keyTotalBurnxtnPaid))), IntegerEntry(keyTotalWhirlpoolPaid, (amountWhirlpool + tryGetInteger(this, keyTotalWhirlpoolPaid))), IntegerEntry(keyTotalWavesPaid, (amountWaves + tryGetInteger(this, keyTotalWavesPaid))), IntegerEntry(keyTotalRomePaid, (amountRome + tryGetInteger(this, keyTotalRomePaid)))]
274292 }
275293
276294
277295
278296 @Callable(i)
279297 func distributeRewards (address) = if ((i.caller != this))
280298 then throw("access only by project owner")
281299 else {
282300 func foldFunc (acc,WFS) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(WFS))) + (if ((tryGetString(puzzleMarket, (("nft_" + WFS) + "_seller")) == address))
283301 then 1
284302 else 0))
285303
286304 let shareWFS = {
287305 let $l = WFSlist
288306 let $s = size($l)
289307 let $acc0 = 0
290308 func $f0_1 ($a,$i) = if (($i >= $s))
291309 then $a
292310 else foldFunc($a, $l[$i])
293311
294312 func $f0_2 ($a,$i) = if (($i >= $s))
295313 then $a
296314 else throw("List size exceeds 10")
297315
298316 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
299317 }
300318 func foldFuncB (acc,BBB) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(BBB))) + (if ((tryGetString(puzzleMarket, (("nft_" + BBB) + "_seller")) == address))
301319 then 1
302320 else 0))
303321
304322 let shareBBB = {
305323 let $l = BBBlist
306324 let $s = size($l)
307325 let $acc0 = 0
308326 func $f1_1 ($a,$i) = if (($i >= $s))
309327 then $a
310328 else foldFuncB($a, $l[$i])
311329
312330 func $f1_2 ($a,$i) = if (($i >= $s))
313331 then $a
314332 else throw("List size exceeds 10")
315333
316334 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
317335 }
318336 func foldFuncC (acc,SURFboard) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(SURFboard))) + (if ((tryGetString(puzzleMarket, (("nft_" + SURFboard) + "_seller")) == address))
319337 then 1
320338 else 0))
321339
322340 let amountSURFboard = {
323341 let $l = SURFboardList
324342 let $s = size($l)
325343 let $acc0 = 0
326344 func $f2_1 ($a,$i) = if (($i >= $s))
327345 then $a
328346 else foldFuncC($a, $l[$i])
329347
330348 func $f2_2 ($a,$i) = if (($i >= $s))
331349 then $a
332350 else throw("List size exceeds 20")
333351
334352 $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
335353 }
336354 let amountBurnxtn = fraction(tryGetInteger(this, keyBurnxtnAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
337355 let amountWhirlpool = fraction(tryGetInteger(this, keyWhirlpoolAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
338356 let amountWaves = fraction(tryGetInteger(this, keyWavesAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
339357 let amountRome = fraction(tryGetInteger(this, keyRomeAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
340358 [ScriptTransfer(addressFromStringValue(address), amountBurnxtn, burnxtn), ScriptTransfer(addressFromStringValue(address), amountWhirlpool, whirlpool), ScriptTransfer(addressFromStringValue(address), amountWaves, unit), ScriptTransfer(addressFromStringValue(address), amountRome, rome), ScriptTransfer(addressFromStringValue(address), (amountSURFboard * d6), surf)]
341359 }
342360
343361
344362
345363 @Callable(i)
346364 func burnSurf () = [Burn(surf, d6), IntegerEntry("SURF total burned", (tryGetInteger(this, "SURF total burned") + d6))]
347365
348366
349367
350368 @Callable(i)
351369 func register () = if (contains(tryGetString(this, keyAddressesRegistered), toString(i.caller)))
352370 then throw("already registered")
353371 else if ((size(split_4C(addresses, ",")) == 30))
354372 then throw("max reached")
355373 else [StringEntry(keyAddressesRegistered, ((tryGetString(this, keyAddressesRegistered) + toString(i.caller)) + ","))]
356374
357375
358376
359377 @Callable(i)
360378 func registerManually (address) = if (contains(tryGetString(this, keyAddressesRegistered), address))
361379 then throw("already registered")
362380 else if ((size(split_4C(addresses, ",")) == 40))
363381 then throw("max reached")
364382 else if ((i.caller != this))
365383 then throw("access only by project owner")
366384 else [StringEntry(keyAddressesRegistered, ((tryGetString(this, keyAddressesRegistered) + address) + ","))]
367385
368386
369387
370388 @Callable(i)
371389 func claimByAnybody () = if (((getIntegerValue(this, "Activated blockheight") + (30 * 1440)) > height))
372390 then throw(("Wait till blockheight:" + toString((getIntegerValue(this, "Activated blockheight") + (30 * 1440)))))
373391 else {
374392 let puzzleBalanceBefore = assetBalance(this, puzzle)
375393 if ((puzzleBalanceBefore == puzzleBalanceBefore))
376394 then {
377395 let romeBalanceBefore = assetBalance(this, rome)
378396 if ((romeBalanceBefore == romeBalanceBefore))
379397 then {
380398 let claimPuzzleStaking = invoke(puzzleStaking, "claimReward", nil, nil)
381399 if ((claimPuzzleStaking == claimPuzzleStaking))
382400 then {
383401 let claimInv = invoke(Address(poolBBB), "claimIndexRewards", nil, nil)
384402 if ((claimInv == claimInv))
385403 then {
386404 let puzzleBalanceAfter = assetBalance(this, puzzle)
387405 let romeBalanceAfter = assetBalance(this, rome)
388406 [IntegerEntry(keyBurnxtnAmount, assetBalance(this, burnxtn)), IntegerEntry(keyRomeAmount, (romeBalanceAfter - romeBalanceBefore)), IntegerEntry(keyPuzzleAmount, (puzzleBalanceAfter - puzzleBalanceBefore)), IntegerEntry(keyWavesAmount, if (((wavesBalance(this).available - d8) > 0))
389407 then (wavesBalance(this).available - d8)
390408 else 0), IntegerEntry(keyWhirlpoolAmount, assetBalance(this, whirlpool))]
391409 }
392410 else throw("Strict value is not equal to itself.")
393411 }
394412 else throw("Strict value is not equal to itself.")
395413 }
396414 else throw("Strict value is not equal to itself.")
397415 }
398416 else throw("Strict value is not equal to itself.")
399417 }
400418
401419
402420
403421 @Callable(i)
404422 func invokerByAnybody () = if (((getIntegerValue(this, "Activated blockheight") + (30 * 1440)) > height))
405423 then throw(("Wait till blockheight:" + toString((getIntegerValue(this, "Activated blockheight") + (30 * 1440)))))
406424 else {
407425 let reset = invoke(this, "distributeRewardsByAnybody", nil, nil)
408426 if ((reset == reset))
409427 then {
410428 let list = split_4C(addresses, ",")
411429 func r (accum,address) = invoke(this, "countNFTpower", [address], nil)
412430
413431 let invoker = {
414432 let $l = list
415433 let $s = size($l)
416434 let $acc0 = nil
417435 func $f0_1 ($a,$i) = if (($i >= $s))
418436 then $a
419437 else r($a, $l[$i])
420438
421439 func $f0_2 ($a,$i) = if (($i >= $s))
422440 then $a
423441 else throw("List size exceeds 40")
424442
425443 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40)
426444 }
427445 if ((invoker == invoker))
428446 then nil
429447 else throw("Strict value is not equal to itself.")
430448 }
431449 else throw("Strict value is not equal to itself.")
432450 }
433451
434452
435453
436454 @Callable(i)
437455 func distributeRewardsByAnybody (address) = if ((i.caller != this))
438456 then throw("access only by project owner")
439457 else {
440458 func foldFunc (acc,WFS) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(WFS))) + (if ((tryGetString(puzzleMarket, (("nft_" + WFS) + "_seller")) == address))
441459 then 1
442460 else 0))
443461
444462 let shareWFS = {
445463 let $l = WFSlist
446464 let $s = size($l)
447465 let $acc0 = 0
448466 func $f0_1 ($a,$i) = if (($i >= $s))
449467 then $a
450468 else foldFunc($a, $l[$i])
451469
452470 func $f0_2 ($a,$i) = if (($i >= $s))
453471 then $a
454472 else throw("List size exceeds 10")
455473
456474 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
457475 }
458476 func foldFuncB (acc,BBB) = ((acc + assetBalance(addressFromStringValue(address), fromBase58String(BBB))) + (if ((tryGetString(puzzleMarket, (("nft_" + BBB) + "_seller")) == address))
459477 then 1
460478 else 0))
461479
462480 let shareBBB = {
463481 let $l = BBBlist
464482 let $s = size($l)
465483 let $acc0 = 0
466484 func $f1_1 ($a,$i) = if (($i >= $s))
467485 then $a
468486 else foldFuncB($a, $l[$i])
469487
470488 func $f1_2 ($a,$i) = if (($i >= $s))
471489 then $a
472490 else throw("List size exceeds 10")
473491
474492 $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
475493 }
476494 if (((shareWFS + shareBBB) == 0))
477495 then {
478496 let list = split_4C(addresses, ",")
479497 let noNFTindex = value(indexOf(list, address))
480498 let listMinusNoNFT = removeByIndex(list, noNFTindex)
481499 let minusNoNFTstr = (makeString(listMinusNoNFT, ",") + ",")
482500 [StringEntry(keyAddressesRegistered, minusNoNFTstr)]
483501 }
484502 else {
485503 let amountBurnxtn = fraction(tryGetInteger(this, keyBurnxtnAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
486504 let amountWhirlpool = fraction(tryGetInteger(this, keyWhirlpoolAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
487505 let amountWaves = fraction(tryGetInteger(this, keyWavesAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
488506 let amountRome = fraction(tryGetInteger(this, keyRomeAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
489507 let amountPuzzle = fraction(tryGetInteger(this, keyPuzzleAmount), (shareWFS + (shareBBB * 10)), tryGetInteger(this, keyTotalNFTpower))
490508 [ScriptTransfer(addressFromStringValue(address), amountBurnxtn, burnxtn), IntegerEntry(keyTotalBurnxtnPaid, (amountBurnxtn + tryGetInteger(this, keyTotalBurnxtnPaid))), ScriptTransfer(addressFromStringValue(address), amountWhirlpool, whirlpool), IntegerEntry(keyTotalWhirlpoolPaid, (amountWhirlpool + tryGetInteger(this, keyTotalWhirlpoolPaid))), ScriptTransfer(addressFromStringValue(address), amountWaves, unit), IntegerEntry(keyTotalWavesPaid, (amountWaves + tryGetInteger(this, keyTotalWavesPaid))), ScriptTransfer(addressFromStringValue(address), amountRome, rome), IntegerEntry(keyTotalRomePaid, (amountRome + tryGetInteger(this, keyTotalRomePaid))), ScriptTransfer(addressFromStringValue(address), amountPuzzle, puzzle), IntegerEntry(keyTotalPuzzlePaid, (amountPuzzle + tryGetInteger(this, keyTotalPuzzlePaid)))]
491509 }
492510 }
493511
494512
495513
496514 @Callable(i)
497515 func deleteEntry () = if ((i.caller != this))
498516 then throw("access only by project owner")
499517 else [DeleteEntry(keyAddressesRegistered)]
500518
501519
502520
503521 @Callable(i)
504522 func addWFSid (WFSnumber,WFSassetId) = if ((i.caller != this))
505523 then throw("access only by project owner")
506524 else [StringEntry((WFSnumber + ""), WFSassetId)]
507525
508526
509527
510528 @Callable(i)
511529 func changeIntegerEntry (keyString,integer) = if ((i.caller != this))
512530 then throw("access only by project owner")
513531 else [IntegerEntry(keyString, integer)]
514532
515533

github/deemru/w8io/6500d08 
63.66 ms