tx · uCixupcCwThRcRckFHdDEve3i7DfhPM2mw4cxW6bSdo

3PBLPmkM3ThytNj6QeJyLTX154if8S6Cea5:  -0.02100000 Waves

2023.11.20 15:50 [3917608] smart account 3PBLPmkM3ThytNj6QeJyLTX154if8S6Cea5 > SELF 0.00000000 Waves

{ "type": 13, "id": "uCixupcCwThRcRckFHdDEve3i7DfhPM2mw4cxW6bSdo", "fee": 2100000, "feeAssetId": null, "timestamp": 1700484624886, "version": 1, "sender": "3PBLPmkM3ThytNj6QeJyLTX154if8S6Cea5", "senderPublicKey": "4EgWP2ePsBhKdAXQtnLEV8kwUiDaJmz4McAiVAS4CVjo", "proofs": [ "5VuBYVFzQ1QDab6qYa2V3PYQWPN7FAufa6AK6GWc2eba4JUnC3wjD3gZ6GwAE6xNGTDvCwfjfqJoYiwBeQHcA7XE" ], "script": "base64:BgJ4CAISDAoKCAEBAQEBAQgICBIECgIIARIECgIICBIECgIICBIECgIICBIFCgMICAESAwoBCBIDCgEIEgMKAQgSBQoDCAEBEgMKAQgSBAoCCAESBAoCCAgSAwoBCBIDCgEIEgQKAggIEgQKAggIEgMKAQgSAwoBCBIAOQEQd3JpdGVDb25zdFN0cmluZwIDa2V5BXZhbHVlAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQNrZXkJAQtTdHJpbmdFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AQh3cml0ZUludAIDa2V5BXZhbHVlAwkAZgIAAAUFdmFsdWUJAAIBCQCsAgIJAKwCAgkArAICAhd3cml0aW5nIG5lZ2F0aXZlIHZhbHVlIAkApAMBBQV2YWx1ZQIJIGZvciBrZXkgBQNrZXkJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBXZhbHVlAQhjaGFuZ2VCeQIDa2V5BXZhbHVlCQEId3JpdGVJbnQCBQNrZXkJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAABQV2YWx1ZQEFYXNJbnQBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAUDaW50CQACAQIZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEHYXNzZXRJZAEDc3RyAwkAAAIFA3N0cgIFV0FWRVMFBHVuaXQJANkEAQUDc3RyABJjb25maWdBZGRyZXNzU3RvcmUCBmNvbmZpZwANY29uZmlnQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBRJjb25maWdBZGRyZXNzU3RvcmUCImNoaWxkcmVuOiBjb25maWcgYWRkcmVzcyBub3QgZm91bmQCFmludmFsaWQgY29uZmlnIGFkZHJlc3MBB2FsbG93ZWQBAm9wCQD8BwQFDWNvbmZpZ0FkZHJlc3MCCW9wQWxsb3dlZAkAzAgCBQJvcAUDbmlsBQNuaWwABkhFSUdIVAUGaGVpZ2h0AApwd3JBc3NldElkCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ1jb25maWdBZGRyZXNzAgxwb3dlckFzc2V0SWQCFnB3ciBhc3NldCBpZCBub3QgZm91bmQACHNsYXNoZXJzCQELdmFsdWVPckVsc2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MJAKwCAgkApQgBBQR0aGlzAglfc2xhc2hlcnMCAAANbWFpbkFkZHJlc3NlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ1jb25maWdBZGRyZXNzAg5tYWluX2FkZHJlc3NlcwIAAQtwZXJpb2RTdG9yZQEFY2hpbGQJAKwCAgIHcGVyaW9kXwUFY2hpbGQBBnBlcmlvZAEFY2hpbGQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBC3BlcmlvZFN0b3JlAQUFY2hpbGQAAAEKb3duZXJTdG9yZQEFY2hpbGQJAKwCAgIGb3duZXJfBQVjaGlsZAENdHJlYXN1cnlTdG9yZQEFY2hpbGQJAKwCAgIJdHJlYXN1cnlfBQVjaGlsZAENbG9ja1RpbWVTdG9yZQEFY2hpbGQJAKwCAgIJbG9ja1RpbWVfBQVjaGlsZAETcGVyaW9kTG9ja1RpbWVTdG9yZQIFY2hpbGQGcGVyaW9kCQCsAgIJAKwCAgkArAICAgdwZXJpb2RfCQCkAwEFBnBlcmlvZAIKX2xvY2tUaW1lXwUFY2hpbGQBEXNraW5SZXF1aXJlZFN0b3JlAQVjaGlsZAkArAICAg5za2luX3JlcXVpcmVkXwUFY2hpbGQBDHNraW5NYXhTdG9yZQEFY2hpbGQJAKwCAgIJc2tpbl9tYXhfBQVjaGlsZAETaW52ZXN0bWVudHNNYXhTdG9yZQEFY2hpbGQJAKwCAgIQaW52ZXN0bWVudHNfbWF4XwUFY2hpbGQBEm1pbkNvbW1pdG1lbnRTdG9yZQEFY2hpbGQJAKwCAgIObWluX2NvbW1pdG1lbnQFBWNoaWxkAQ5za2luVG90YWxTdG9yZQEFY2hpbGQJAKwCAgILc2tpbl90b3RhbF8FBWNoaWxkAA1wd3JUb3RhbFN0b3JlAglwd3JfdG90YWwBGGludmVzdG1lbnRzUmVxdWlyZWRTdG9yZQEFY2hpbGQJAKwCAgIVaW52ZXN0bWVudHNfcmVxdWlyZWRfBQVjaGlsZAEVaW52ZXN0bWVudHNUb3RhbFN0b3JlAQVjaGlsZAkArAICAhJpbnZlc3RtZW50c190b3RhbF8FBWNoaWxkARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBWNoaWxkCQCsAgIJAKwCAgkArAICAgdwZXJpb2RfCQCkAwEJAQZwZXJpb2QBBQVjaGlsZAITX2ludmVzdG1lbnRzX3RvdGFsXwUFY2hpbGQBFWludmVzdG1lbnRzVG9rZW5TdG9yZQEFY2hpbGQJAKwCAgISaW52ZXN0bWVudHNfdG9rZW5fBQVjaGlsZAEQY29tbWl0bWVudHNTdG9yZQEFY2hpbGQJAKwCAgIMY29tbWl0bWVudHNfBQVjaGlsZAERY3JlYXRlSGVpZ2h0U3RvcmUBBWNoaWxkCQCsAgICDmNyZWF0ZV9oZWlnaHRfBQVjaGlsZAEQc3RhcnRIZWlnaHRTdG9yZQEFY2hpbGQJAKwCAgINc3RhcnRfaGVpZ2h0XwUFY2hpbGQBFnN0YXJ0UGVyaW9kSGVpZ2h0U3RvcmUCBWNoaWxkBnBlcmlvZAkArAICCQCsAgIJAKwCAgIHcGVyaW9kXwkApAMBBQZwZXJpb2QCDl9zdGFydF9oZWlnaHRfBQVjaGlsZAEbc3RhcnRQZXJpb2RBZnRlckhlaWdodFN0b3JlAgVjaGlsZAZwZXJpb2QJAKwCAgkArAICCQCsAgICB3BlcmlvZF8JAKQDAQUGcGVyaW9kAhRfc3RhcnRfYWZ0ZXJfaGVpZ2h0XwUFY2hpbGQBHXN0YXJ0Q3VycmVudFBlcmlvZEhlaWdodFN0b3JlAQVjaGlsZAkBFnN0YXJ0UGVyaW9kSGVpZ2h0U3RvcmUCBQVjaGlsZAkBBnBlcmlvZAEFBWNoaWxkARFjYW5jZWxIZWlnaHRTdG9yZQEFY2hpbGQJAKwCAgIOY2FuY2VsX2hlaWdodF8FBWNoaWxkARBpbnZlc3RtZW50c1Rva2VuAQVjaGlsZAkBB2Fzc2V0SWQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWludmVzdG1lbnRzVG9rZW5TdG9yZQEFBWNoaWxkAh5pbnZlc3RtZW50cyBhc3NldCBpZCBub3QgZm91bmQBDXVzZXJTa2luU3RvcmUCBWNoaWxkBHVzZXIJAKwCAgkArAICCQCsAgICBXNraW5fBQVjaGlsZAIBXwUEdXNlcgEZdXNlclNraW5VbmxvY2tQZXJpb2RTdG9yZQIFY2hpbGQEdXNlcgkArAICCQCsAgIJAKwCAgITc2tpbl91bmxvY2tfcGVyaW9kXwUFY2hpbGQCAV8FBHVzZXIBG3VzZXJTa2luRXhpdGVkSW5QZXJpb2RTdG9yZQMFY2hpbGQEdXNlcgZwZXJpb2QJAKwCAgkArAICCQCsAgIJAQ11c2VyU2tpblN0b3JlAgUFY2hpbGQFBHVzZXICCF9wZXJpb2RfCQCkAwEFBnBlcmlvZAIHX2V4aXRlZAENaW52ZXN0b3JTdG9yZQIFY2hpbGQIaW52ZXN0b3IJAKwCAgkArAICCQCsAgICCWludmVzdG9yXwUFY2hpbGQCAV8FCGludmVzdG9yARljb21taXRBZnRlckFkZHJlc3Nlc1N0b3JlAQVjaGlsZAkArAICAhdjb21taXRfYWZ0ZXJfYWRkcmVzc2VzXwUFY2hpbGQBFWludmVzdEFmdGVyU3RhcnRTdG9yZQEFY2hpbGQJAKwCAgIXY2FuX2ludmVzdF9hZnRlcl9zdGFydF8FBWNoaWxkARBhc3NlcnROb3RTdGFydGVkAQVjaGlsZAMJAQlpc0RlZmluZWQBCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQJAAIBAg9hbHJlYWR5IHN0YXJ0ZWQHAQ9hc3NlcnRJc1N0YXJ0ZWQBBWNoaWxkAwkAAAIJAQlpc0RlZmluZWQBCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQHCQACAQIPbm90IHlldCBzdGFydGVkBwESYXNzZXJ0Tm90Q2FuY2VsbGVkAQVjaGlsZAMJAQlpc0RlZmluZWQBCQCfCAEJARFjYW5jZWxIZWlnaHRTdG9yZQEFBWNoaWxkCQACAQIQYWxyZWFkeSBjYW5jZWxlZAcBFmFzc2VydE5vdFN0YXJ0ZWRQZXJpb2QBBWNoaWxkAwkAAAIJAQZwZXJpb2QBBQVjaGlsZAAACQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkAwkBCWlzRGVmaW5lZAEJAJ8IAQkBHXN0YXJ0Q3VycmVudFBlcmlvZEhlaWdodFN0b3JlAQUFY2hpbGQJAAIBAhZwZXJpb2QgYWxyZWFkeSBzdGFydGVkBwEOdXNlckNvbW1pdG1lbnQCBWNoaWxkBHVzZXIJAJ8IAQkBDXVzZXJTa2luU3RvcmUCBQVjaGlsZAUEdXNlcgEPY3VycmVudFVzZXJTa2luAgVjaGlsZAR1c2VyCQELdmFsdWVPckVsc2UCCQEOdXNlckNvbW1pdG1lbnQCBQVjaGlsZAUEdXNlcgAAAQhsb2NrVGltZQIFY2hpbGQGcGVyaW9kCQELdmFsdWVPckVsc2UCCQCfCAEJARNwZXJpb2RMb2NrVGltZVN0b3JlAgUFY2hpbGQFBnBlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJAQ1sb2NrVGltZVN0b3JlAQUFY2hpbGQCEW5vIGNoaWxkIGxvY2tUaW1lAQ9jb21wbGV0ZWRQZXJpb2QBBWNoaWxkBAFwCQEGcGVyaW9kAQUFY2hpbGQDCQAAAgUBcAAAAAAEC3BlcmlvZFN0YXJ0CQCfCAEJARZzdGFydFBlcmlvZEhlaWdodFN0b3JlAgUFY2hpbGQFAXADCQEJaXNEZWZpbmVkAQULcGVyaW9kU3RhcnQFAXAJAGUCBQFwAAEBDHVubG9ja0hlaWdodAEFY2hpbGQEAXAJAQ9jb21wbGV0ZWRQZXJpb2QBBQVjaGlsZAQKY2hpbGRTdGFydAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQCFW5vIGNoaWxkIHN0YXJ0IGhlaWdodAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFnN0YXJ0UGVyaW9kSGVpZ2h0U3RvcmUCBQVjaGlsZAUBcAUKY2hpbGRTdGFydAkBCGxvY2tUaW1lAgUFY2hpbGQFAXABCHRyZWFzdXJ5AQVjaGlsZAkBC3ZhbHVlT3JFbHNlAgkAoggBCQENdHJlYXN1cnlTdG9yZQEFBWNoaWxkBQVjaGlsZAEDaW50AQNrZXkJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQNrZXkAAAEDc3RyAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAKIIAQUDa2V5AgABDWFkdmlzZVByb2plY3QBBWNoaWxkBAFwCQEGcGVyaW9kAQUFY2hpbGQECXBlcmlvZFN0cgkApAMBBQFwCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAghoZWlnaHQ6IAkApAMBBQZIRUlHSFQCCywgcHJvamVjdDogBQVjaGlsZAIJLCBvd25lcjogCQEDc3RyAQkBCm93bmVyU3RvcmUBBQVjaGlsZAIMLCB0cmVhc3VyeTogCQEIdHJlYXN1cnkBBQVjaGlsZAINLCBsb2NrX3RpbWU6IAkBA2ludAEJAQ1sb2NrVGltZVN0b3JlAQUFY2hpbGQCESwgc2tpbl9yZXF1aXJlZDogCQEDaW50AQkBEXNraW5SZXF1aXJlZFN0b3JlAQUFY2hpbGQCDCwgc2tpbl9tYXg6IAkBA2ludAEJAQxza2luTWF4U3RvcmUBBQVjaGlsZAISLCBtaW5fY29tbWl0bWVudDogCQEDaW50AQkBEm1pbkNvbW1pdG1lbnRTdG9yZQEFBWNoaWxkAg4sIHNraW5fdG90YWw6IAkBA2ludAEJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkAhgsIGludmVzdG1lbnRzX3JlcXVpcmVkOiAJAQNpbnQBCQEYaW52ZXN0bWVudHNSZXF1aXJlZFN0b3JlAQUFY2hpbGQCEywgaW52ZXN0bWVudHNfbWF4OiAJAQNpbnQBCQETaW52ZXN0bWVudHNNYXhTdG9yZQEFBWNoaWxkAhUsIGludmVzdG1lbnRzX3RvdGFsOiAJAQNpbnQBCQEVaW52ZXN0bWVudHNUb3RhbFN0b3JlAQUFY2hpbGQCFSwgaW52ZXN0bWVudHNfdG9rZW46IAkBA3N0cgEJARVpbnZlc3RtZW50c1Rva2VuU3RvcmUBBQVjaGlsZAIPLCBjb21taXRtZW50czogCQEDc3RyAQkBEGNvbW1pdG1lbnRzU3RvcmUBBQVjaGlsZAIRLCBjcmVhdGVfaGVpZ2h0OiAJAQNpbnQBCQERY3JlYXRlSGVpZ2h0U3RvcmUBBQVjaGlsZAIQLCBzdGFydF9oZWlnaHQ6IAkApAMBCQELdmFsdWVPckVsc2UCCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQA////////////AQIRLCBjYW5jZWxfaGVpZ2h0OiAJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQERY2FuY2VsSGVpZ2h0U3RvcmUBBQVjaGlsZAD///////////8BAgosIHBlcmlvZDogBQlwZXJpb2RTdHICCSwgcGVyaW9kXwUJcGVyaW9kU3RyAhVfc3RhcnRfYWZ0ZXJfaGVpZ2h0OiAJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEbc3RhcnRQZXJpb2RBZnRlckhlaWdodFN0b3JlAgUFY2hpbGQFAXAA////////////AQIJLCBwZXJpb2RfBQlwZXJpb2RTdHICD19zdGFydF9oZWlnaHQ6IAkApAMBCQELdmFsdWVPckVsc2UCCQCfCAEJAR1zdGFydEN1cnJlbnRQZXJpb2RIZWlnaHRTdG9yZQEFBWNoaWxkAP///////////wECCSwgcGVyaW9kXwUJcGVyaW9kU3RyAgxfbG9ja190aW1lOiAJAKQDAQkBCGxvY2tUaW1lAgUFY2hpbGQFAXACESwgdW5sb2NrX2hlaWdodDogCQCkAwEJAQx1bmxvY2tIZWlnaHQBBQVjaGlsZAIcLCBwZXJpb2RfaW52ZXN0bWVudHNfdG90YWw6IAkBA2ludAEJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAERYWR2aXNlVXNlclByb2plY3QCBWNoaWxkBHVzZXIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCGhlaWdodDogCQCkAwEFBkhFSUdIVAILLCBwcm9qZWN0OiAFBWNoaWxkAgcsIHNraW46CQCkAwEJAQ9jdXJyZW50VXNlclNraW4CBQVjaGlsZAUEdXNlcgIILCBwb3dlcjoJAKQDAQkBC3ZhbHVlT3JFbHNlAgkBDnVzZXJDb21taXRtZW50AgUFY2hpbGQFBHVzZXIAAAIPLCBpbnZlc3RtZW50czogCQEDaW50AQkBDWludmVzdG9yU3RvcmUCBQVjaGlsZAUEdXNlcgEbY29tbWl0QWZ0ZXJTdGFydEZvckludGVybmFsBAFpBWNoaWxkB2FkZHJlc3MUYWRkaXRpb25hbExvY2tSb3VuZHMEAWEJAQdhbGxvd2VkAQITY29tbWl0QWZ0ZXJTdGFydEZvcgMJAAACBQFhBQFhAwkAZgIAAAUUYWRkaXRpb25hbExvY2tSb3VuZHMJAAIBAhxpbnZhbGlkIGFkZGl0aW9uYWxMb2NrUm91bmRzAwkBASEBCQEIY29udGFpbnMCCQELdmFsdWVPckVsc2UCCQCiCAEJARljb21taXRBZnRlckFkZHJlc3Nlc1N0b3JlAQUFY2hpbGQCAAkApQgBCAUBaQZjYWxsZXIJAAIBAiNjb21taXRBZnRlclN0YXJ0Rm9ySW50ZXJuYWwuIGRlbmllZAQBcAkAkQMCCAUBaQhwYXltZW50cwAAAwMJAQIhPQIIBQFwB2Fzc2V0SWQFCnB3ckFzc2V0SWQGCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAippbnZhbGlkIHBheW1lbnRzOiBvbmx5ICRQV1IgdG9rZW4gZXhwZWN0ZWQECmNvbW1pdG1lbnQIBQFwBmFtb3VudAQEY21kcwkAzAgCCQEIY2hhbmdlQnkCCQENdXNlclNraW5TdG9yZQIFBWNoaWxkBQdhZGRyZXNzBQpjb21taXRtZW50CQDMCAIJAQhjaGFuZ2VCeQIJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkBQpjb21taXRtZW50CQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUFCmNvbW1pdG1lbnQFA25pbAMJAGYCBRRhZGRpdGlvbmFsTG9ja1JvdW5kcwAABAt1bmxvY2tSb3VuZAkAZAIJAQZwZXJpb2QBBQVjaGlsZAUUYWRkaXRpb25hbExvY2tSb3VuZHMJAMwIAgkBDEludGVnZXJFbnRyeQIJARl1c2VyU2tpblVubG9ja1BlcmlvZFN0b3JlAgUFY2hpbGQFB2FkZHJlc3MFC3VubG9ja1JvdW5kBQRjbWRzBQRjbWRzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuFAFpAQpwcm9qZWN0Rm9yCgVvd25lcgRza2luB21heFNraW4NbWluQ29tbWl0bWVudAhsb2NrVGltZQtpbnZlc3RtZW50cw5tYXhJbnZlc3RtZW50cxBpbnZlc3RtZW50c1Rva2VuC2NvbW1pdG1lbnRzBWNoaWxkBAFhCQEHYWxsb3dlZAECCnByb2plY3RGb3IDCQAAAgUBYQUBYQMJAQEhAQkBCGNvbnRhaW5zAgUNbWFpbkFkZHJlc3NlcwkApQgBCAUBaQZjYWxsZXIJAAIBAgZkZW5pZWQEAXQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQVjaGlsZAIYaW52YWxpZCB0cmVhc3VyeSBhZGRyZXNzAwkAAAIFAXQFAXQEBXRva2VuCQEHYXNzZXRJZAEFEGludmVzdG1lbnRzVG9rZW4DCQAAAgUFdG9rZW4FBXRva2VuAwMJAGYCBQdtYXhTa2luAAAJAGYCBQRza2luBQdtYXhTa2luBwkAAgECD2ludmFsaWQgbWF4U2tpbgMDCQBmAgUObWF4SW52ZXN0bWVudHMAAAkAZgIFC2ludmVzdG1lbnRzBQ5tYXhJbnZlc3RtZW50cwcJAAIBAhZpbnZhbGlkIG1heEludmVzdG1lbnRzCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgkBCm93bmVyU3RvcmUBBQVjaGlsZAUFb3duZXIJAMwIAgkBCHdyaXRlSW50AgkBEWNyZWF0ZUhlaWdodFN0b3JlAQUFY2hpbGQFBkhFSUdIVAkAzAgCCQEId3JpdGVJbnQCCQERc2tpblJlcXVpcmVkU3RvcmUBBQVjaGlsZAUEc2tpbgkAzAgCCQEId3JpdGVJbnQCCQEMc2tpbk1heFN0b3JlAQUFY2hpbGQFB21heFNraW4JAMwIAgkBCHdyaXRlSW50AgkBEm1pbkNvbW1pdG1lbnRTdG9yZQEFBWNoaWxkBQ1taW5Db21taXRtZW50CQDMCAIJAQh3cml0ZUludAIJAQ1sb2NrVGltZVN0b3JlAQUFY2hpbGQFCGxvY2tUaW1lCQDMCAIJAQh3cml0ZUludAIJARhpbnZlc3RtZW50c1JlcXVpcmVkU3RvcmUBBQVjaGlsZAULaW52ZXN0bWVudHMJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCCQEVaW52ZXN0bWVudHNUb2tlblN0b3JlAQUFY2hpbGQFEGludmVzdG1lbnRzVG9rZW4JAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCCQEQY29tbWl0bWVudHNTdG9yZQEFBWNoaWxkBQtjb21taXRtZW50cwkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwIJAQ10cmVhc3VyeVN0b3JlAQUFY2hpbGQFBWNoaWxkCQDMCAIJAQh3cml0ZUludAIJARNpbnZlc3RtZW50c01heFN0b3JlAQUFY2hpbGQFDm1heEludmVzdG1lbnRzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENaW5jcmVyYXNlU2tpbgIFY2hpbGQNc2tpbkluY3JlbWVudAQBYQkBB2FsbG93ZWQBAg1pbmNyZXJhc2VTa2luAwkAAAIFAWEFAWEEAXMDCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkCQESYXNzZXJ0Tm90Q2FuY2VsbGVkAQUFY2hpbGQHAwkAAAIFAXMFAXMDCQBnAgAABQ1za2luSW5jcmVtZW50CQACAQIyaW52YWxpZCBhcmd1bWVudDogc2tpbkluY3JlbWVudCBzaG91bGQgYmUgcG9zaXRpdmUEBW93bmVyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEKb3duZXJTdG9yZQEFBWNoaWxkAwkBAiE9AgkApQgBCAUBaQZjYWxsZXIFBW93bmVyCQACAQIGZGVuaWVkCQDMCAIJAQhjaGFuZ2VCeQIJARFza2luUmVxdWlyZWRTdG9yZQEFBWNoaWxkBQ1za2luSW5jcmVtZW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJY29tbWl0Rm9yAgVjaGlsZAdhZGRyZXNzBAFhCQEHYWxsb3dlZAECCWNvbW1pdEZvcgMJAAACBQFhBQFhBAFzCQEWYXNzZXJ0Tm90U3RhcnRlZFBlcmlvZAEFBWNoaWxkAwkAAAIFAXMFAXMEAXAJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQFwB2Fzc2V0SWQFCnB3ckFzc2V0SWQJAAIBAi9pbnZhbGlkIGF0dGFjaGVkIHBheW1lbnQ6ICRwb3dlciB0b2tlbiBleHBlY3RlZAQKY29tbWl0bWVudAgFAXAGYW1vdW50BA1taW5Db21taXRtZW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBEm1pbkNvbW1pdG1lbnRTdG9yZQEFBWNoaWxkAhNDaGlsZCBEQU8gbm90IGZvdW5kAwkAZgIFDW1pbkNvbW1pdG1lbnQFCmNvbW1pdG1lbnQJAAIBCQCsAgICE01pbi4gY29tbWl0bWVudCBpcyAJAKQDAQUNbWluQ29tbWl0bWVudAQPc2tpblRvdGFsU3RvcmUxCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAQMbmV3U2tpblRvdGFsCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9za2luVG90YWxTdG9yZTEAAAUKY29tbWl0bWVudAQHc2tpbk1heAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMc2tpbk1heFN0b3JlAQUFY2hpbGQAAAMDCQBmAgUHc2tpbk1heAAACQBmAgUMbmV3U2tpblRvdGFsBQdza2luTWF4BwkAAgEJAKwCAgIcVG90YWwgbWF4LiBza2luIGlzIHJlYWNoZWQ6IAkApAMBBQdza2luTWF4CQDMCAIJAQhjaGFuZ2VCeQIJAQ11c2VyU2tpblN0b3JlAgUFY2hpbGQFB2FkZHJlc3MFCmNvbW1pdG1lbnQJAMwIAgkBDEludGVnZXJFbnRyeQIFD3NraW5Ub3RhbFN0b3JlMQUMbmV3U2tpblRvdGFsCQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUFCmNvbW1pdG1lbnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb21taXRGb3JNaW5lcgIFY2hpbGQHYWRkcmVzcwQBYQkBB2FsbG93ZWQBAg5jb21taXRGb3JNaW5lcgMJAAACBQFhBQFhAwkBASEBCQEIY29udGFpbnMCBQ1tYWluQWRkcmVzc2VzCQClCAEIBQFpBmNhbGxlcgkAAgECBmRlbmllZAQBcAkAkQMCCAUBaQhwYXltZW50cwAAAwMJAQIhPQIIBQFwB2Fzc2V0SWQFCnB3ckFzc2V0SWQGCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAippbnZhbGlkIHBheW1lbnRzOiBvbmx5ICRQV1IgdG9rZW4gZXhwZWN0ZWQECmNvbW1pdG1lbnQIBQFwBmFtb3VudAkAzAgCCQEIY2hhbmdlQnkCCQENdXNlclNraW5TdG9yZQIFBWNoaWxkBQdhZGRyZXNzBQpjb21taXRtZW50CQDMCAIJAQhjaGFuZ2VCeQIJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkBQpjb21taXRtZW50CQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUFCmNvbW1pdG1lbnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARNjb21taXRBZnRlclN0YXJ0Rm9yAgVjaGlsZAdhZGRyZXNzCQEbY29tbWl0QWZ0ZXJTdGFydEZvckludGVybmFsBAUBaQUFY2hpbGQFB2FkZHJlc3MAAAFpASBjb21taXRBZnRlclN0YXJ0V2l0aExvY2tSb3VuZEZvcgMFY2hpbGQHYWRkcmVzcxRhZGRpdGlvbmFsTG9ja1JvdW5kcwkBG2NvbW1pdEFmdGVyU3RhcnRGb3JJbnRlcm5hbAQFAWkFBWNoaWxkBQdhZGRyZXNzBRRhZGRpdGlvbmFsTG9ja1JvdW5kcwFpAQZpbnZlc3QBBWNoaWxkBAFhCQEHYWxsb3dlZAECBmludmVzdAMJAAACBQFhBQFhBAFzCQEWYXNzZXJ0Tm90U3RhcnRlZFBlcmlvZAEFBWNoaWxkAwkAAAIFAXMFAXMEBXRva2VuCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQV0b2tlbgkAAgECHGludmFsaWQgaW52ZXN0bWVudHMgYXNzZXQgaWQEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEB21heGltdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2ludmVzdG1lbnRzTWF4U3RvcmUBBQVjaGlsZAAACgEFZGF0YXMBAWEJAMwIAgkBCGNoYW5nZUJ5AgkBDWludmVzdG9yU3RvcmUCBQVjaGlsZAkApQgBCAUBaQZjYWxsZXIFAWEJAMwIAgkBCGNoYW5nZUJ5AgkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkBQFhCQDMCAIJAQhjaGFuZ2VCeQIJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAUBYQUDbmlsAwkAZgIFB21heGltdW0AAAQKdG90YWxTdG9yZQkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkBAV0b3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQp0b3RhbFN0b3JlAAAECmludmVzdG1lbnMJAJcDAQkAzAgCBQZhbW91bnQJAMwIAgkAZQIFB21heGltdW0FBXRvdGFsBQNuaWwDCQBnAgAABQppbnZlc3RtZW5zCQACAQkArAICAiNUb3RhbCBtYXguIGludmVzdG1lbnRzIGlzIHJlYWNoZWQ6IAkApAMBBQdtYXhpbXVtBApjaGFyZ2VCYWNrCQBlAgUGYW1vdW50BQppbnZlc3RtZW5zAwkAZgIFCmNoYXJnZUJhY2sAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCmNoYXJnZUJhY2sFBXRva2VuCQEFZGF0YXMBBQppbnZlc3RtZW5zCQEFZGF0YXMBBQppbnZlc3RtZW5zCQEFZGF0YXMBBQZhbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQaW52ZXN0QWZ0ZXJTdGFydAEFY2hpbGQEAWEJAQdhbGxvd2VkAQIQaW52ZXN0QWZ0ZXJTdGFydAMJAAACBQFhBQFhAwkAAAIJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBFWludmVzdEFmdGVyU3RhcnRTdG9yZQEFBWNoaWxkBwcJAAIBAhlkZW5pZWQgKGludmVzdEFmdGVyU3RhcnQpBAFzCQEPYXNzZXJ0SXNTdGFydGVkAQUFY2hpbGQDCQAAAgUBcwUBcwMJAGYCCQEGcGVyaW9kAQUFY2hpbGQAAAkAAgECFmluaXRpYWwgcm91bmQgaXMgZW5kZWQEBXRva2VuCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQV0b2tlbgkAAgECHGludmFsaWQgaW52ZXN0bWVudHMgYXNzZXQgaWQEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkBCGNoYW5nZUJ5AgkBDWludmVzdG9yU3RvcmUCBQVjaGlsZAkApQgBCAUBaQZjYWxsZXIFBmFtb3VudAkAzAgCCQEIY2hhbmdlQnkCCQEVaW52ZXN0bWVudHNUb3RhbFN0b3JlAQUFY2hpbGQFBmFtb3VudAkAzAgCCQEIY2hhbmdlQnkCCQEbaW52ZXN0bWVudHNQZXJpb2RUb3RhbFN0b3JlAQUFY2hpbGQFBmFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEIdHJlYXN1cnkBBQVjaGlsZAUGYW1vdW50CQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3RhcnQBBWNoaWxkBAZwYXVzZWQJAQdhbGxvd2VkAQIFc3RhcnQDCQAAAgUGcGF1c2VkBQZwYXVzZWQEAXMDCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkCQESYXNzZXJ0Tm90Q2FuY2VsbGVkAQUFY2hpbGQHAwkAAAIFAXMFAXMECXRvdGFsU2tpbgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAAABAxza2luUmVxdWlyZWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQERc2tpblJlcXVpcmVkU3RvcmUBBQVjaGlsZAIUY2hpbGQgbm90IHJlZ2lzdGVyZWQDCQBmAgUMc2tpblJlcXVpcmVkBQl0b3RhbFNraW4JAAIBAhtub3QgZW5vdWdoIHNraW4gaW4gdGhlIGdhbWUEEHRvdGFsSW52ZXN0bWVudHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkAAADCQBmAgkBEUBleHRyTmF0aXZlKDEwNTUpAQkBGGludmVzdG1lbnRzUmVxdWlyZWRTdG9yZQEFBWNoaWxkBRB0b3RhbEludmVzdG1lbnRzCQACAQIWbm90IGVub3VnaCBpbnZlc3RtZW50cwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEHN0YXJ0SGVpZ2h0U3RvcmUBBQVjaGlsZAUGSEVJR0hUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQh0cmVhc3VyeQEFBWNoaWxkBRB0b3RhbEludmVzdG1lbnRzCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOaW5pdE5leHRQZXJpb2QDBWNoaWxkE2Jsb2NrQmV0d2VlblBlcmlvZHMIbG9ja1RpbWUEBnBhdXNlZAkBB2FsbG93ZWQBAg5pbml0TmV4dFBlcmlvZAMJAAACBQZwYXVzZWQFBnBhdXNlZAMDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBCm93bmVyU3RvcmUBBQVjaGlsZAkBAiE9AggFAWkGY2FsbGVyBQR0aGlzBwkAAgECBmRlbmllZAMJAGYCAAAFE2Jsb2NrQmV0d2VlblBlcmlvZHMJAAIBAi5ibG9ja0JldHdlZW5QZXJpb2RzIHNob3VsZCBiZSBwb3NpdGl2ZSBvciB6ZXJvAwkAZgIAAQUIbG9ja1RpbWUJAAIBAhtsb2NrVGltZSBzaG91bGQgYmUgcG9zaXRpdmUEDXVubG9ja0hlaWdodF8JAQx1bmxvY2tIZWlnaHQBBQVjaGlsZAMJAGYCBQ11bmxvY2tIZWlnaHRfBQZIRUlHSFQJAAIBAh5jdXJyZW50IHBlcmlvZCBpcyBzdGlsbCBhY3RpdmUEAXAJAQZwZXJpb2QBBQVjaGlsZAMDCQBmAgUBcAAACQEBIQEJAQlpc0RlZmluZWQBCQEWc3RhcnRQZXJpb2RIZWlnaHRTdG9yZQIFBWNoaWxkBQFwBwkAAgECH25leHQgcGVyaW9kIGFscmVhZHkgaW5pdGlhbGl6ZWQECW5ld1BlcmlvZAkAZAIFAXAAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBC3BlcmlvZFN0b3JlAQUFY2hpbGQFCW5ld1BlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBG3N0YXJ0UGVyaW9kQWZ0ZXJIZWlnaHRTdG9yZQIFBWNoaWxkBQluZXdQZXJpb2QJAGQCBQ11bmxvY2tIZWlnaHRfBRNibG9ja0JldHdlZW5QZXJpb2RzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETcGVyaW9kTG9ja1RpbWVTdG9yZQIFBWNoaWxkBQluZXdQZXJpb2QFCGxvY2tUaW1lBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELc3RhcnRQZXJpb2QBBWNoaWxkBAZwYXVzZWQJAQdhbGxvd2VkAQILc3RhcnRQZXJpb2QDCQAAAgUGcGF1c2VkBQZwYXVzZWQEAXMJARZhc3NlcnROb3RTdGFydGVkUGVyaW9kAQUFY2hpbGQDCQAAAgUBcwUBcwQHcGVyaW9kXwkBBnBlcmlvZAEFBWNoaWxkBA9zdGFydEFmdGVyU3RvcmUJARtzdGFydFBlcmlvZEFmdGVySGVpZ2h0U3RvcmUCBQVjaGlsZAUHcGVyaW9kXwQKc3RhcnRBZnRlcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFD3N0YXJ0QWZ0ZXJTdG9yZQkArAICAg9rZXkgbm90IGZvdW5kOiAFD3N0YXJ0QWZ0ZXJTdG9yZQMJAGYCBQpzdGFydEFmdGVyBQZIRUlHSFQJAAIBAgl0b28gZWFybHkECXRvdGFsU2tpbgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAAABAxza2luUmVxdWlyZWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQERc2tpblJlcXVpcmVkU3RvcmUBBQVjaGlsZAIUY2hpbGQgbm90IHJlZ2lzdGVyZWQDCQBmAgUMc2tpblJlcXVpcmVkBQl0b3RhbFNraW4JAAIBAhtub3QgZW5vdWdoIHNraW4gaW4gdGhlIGdhbWUEEXBlcmlvZEludmVzdG1lbnRzCQELdmFsdWVPckVsc2UCCQCfCAEJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEdc3RhcnRDdXJyZW50UGVyaW9kSGVpZ2h0U3RvcmUBBQVjaGlsZAUGSEVJR0hUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBWNoaWxkBRFwZXJpb2RJbnZlc3RtZW50cwkBEGludmVzdG1lbnRzVG9rZW4BBQVjaGlsZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXNsYXNoAgVjaGlsZAZhbW91bnQEBnBhdXNlZAkBB2FsbG93ZWQBAgEvAwkAAAIFBnBhdXNlZAUGcGF1c2VkAwkBASEBCQEIY29udGFpbnMCBQhzbGFzaGVycwkApQgBCAUBaQZjYWxsZXIJAAIBAgZkZW5pZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQJAAIBAgtub3Qgc3RhcnRlZAkAzAgCCQEIY2hhbmdlQnkCCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAkBAS0BBQZhbW91bnQJAMwIAgkBBEJ1cm4CBQpwd3JBc3NldElkBQZhbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtjb21wbGV0ZUZvcgIFY2hpbGQEdXNlcgMJAQEhAQkBCGNvbnRhaW5zAgUNbWFpbkFkZHJlc3NlcwkApQgBCAUBaQZjYWxsZXIJAAIBAgZkZW5pZWQEDXVubG9ja0hlaWdodF8JAQx1bmxvY2tIZWlnaHQBBQVjaGlsZAMJAGYCBQ11bmxvY2tIZWlnaHRfBQZIRUlHSFQJAAIBAgxzdGlsbCBsb2NrZWQEC2VuZGVkUGVyaW9kCQEPY29tcGxldGVkUGVyaW9kAQUFY2hpbGQEC3VubG9ja1JvdW5kCQELdmFsdWVPckVsc2UCCQCfCAEJARl1c2VyU2tpblVubG9ja1BlcmlvZFN0b3JlAgUFY2hpbGQFBHVzZXIAAAMJAGYCBQt1bmxvY2tSb3VuZAULZW5kZWRQZXJpb2QJAAIBCQCsAgIJAKwCAgISeW91IGNhbiB1bmxvY2sgb24gCQCkAwEFC3VubG9ja1JvdW5kAgYgcm91bmQEBHNraW4JAQ9jdXJyZW50VXNlclNraW4CBQVjaGlsZAUEdXNlcgMJAAACBQRza2luAAAJAAIBAht5b3UgaGFkIG5vIHNraW4gaW4gdGhlIGdhbWUJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBHNraW4FCnB3ckFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDXVzZXJTa2luU3RvcmUCBQVjaGlsZAUEdXNlcgkAzAgCCQEIY2hhbmdlQnkCCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAkBAS0BBQRza2luCQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUJAQEtAQUEc2tpbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBG3VzZXJTa2luRXhpdGVkSW5QZXJpb2RTdG9yZQMFBWNoaWxkBQR1c2VyBQtlbmRlZFBlcmlvZAUEc2tpbgUDbmlsBQRza2luAWkBBmNhbmNlbAEFY2hpbGQEBnBhdXNlZAkBB2FsbG93ZWQBAgZjYW5jZWwDCQAAAgUGcGF1c2VkBQZwYXVzZWQEAXMDCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkBgkBEmFzc2VydE5vdENhbmNlbGxlZAEFBWNoaWxkAwkAAAIFAXMFAXMDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBCm93bmVyU3RvcmUBBQVjaGlsZAkAAgECFGRlbmllZC4gbm90IGFuIG93bmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQERY2FuY2VsSGVpZ2h0U3RvcmUBBQVjaGlsZAUGSEVJR0hUBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKdW5kb0ludmVzdAEFY2hpbGQEBnBhdXNlZAkBB2FsbG93ZWQBAgp1bmRvSW52ZXN0AwkAAAIFBnBhdXNlZAUGcGF1c2VkBAFzCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkAwkAAAIFAXMFAXMEEWludmVzdG1lbnRzU3RvcmUxCQENaW52ZXN0b3JTdG9yZQIFBWNoaWxkCQClCAEIBQFpBmNhbGxlcgQLaW52ZXN0bWVudHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQURaW52ZXN0bWVudHNTdG9yZTEAAAMJAAACBQtpbnZlc3RtZW50cwAACQACAQIObm8gaW52ZXN0bWVudHMJAMwIAgkBC0RlbGV0ZUVudHJ5AQURaW52ZXN0bWVudHNTdG9yZTEJAMwIAgkBCGNoYW5nZUJ5AgkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkCQEBLQEFC2ludmVzdG1lbnRzCQDMCAIJAQhjaGFuZ2VCeQIJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAkBAS0BBQtpbnZlc3RtZW50cwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC2ludmVzdG1lbnRzCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdW5kb0NvbW1pdEZvcgIFY2hpbGQHYWRkcmVzcwQGcGF1c2VkCQEHYWxsb3dlZAECDXVuZG9Db21taXRGb3IDCQAAAgUGcGF1c2VkBQZwYXVzZWQDCQEBIQEJAQhjb250YWlucwIFDW1haW5BZGRyZXNzZXMJAKUIAQgFAWkGY2FsbGVyCQACAQIGZGVuaWVkBAFzCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkAwkAAAIFAXMFAXMEDnVzZXJTa2luU3RvcmUxCQENdXNlclNraW5TdG9yZQIFBWNoaWxkBQdhZGRyZXNzBARza2luCQELdmFsdWVPckVsc2UCCQCfCAEFDnVzZXJTa2luU3RvcmUxAAADCQAAAgUEc2tpbgAACQACAQIHbm8gc2tpbgkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEFDnVzZXJTa2luU3RvcmUxCQDMCAIJAQhjaGFuZ2VCeQIJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkCQEBLQEFBHNraW4JAMwIAgkBCGNoYW5nZUJ5AgUNcHdyVG90YWxTdG9yZQkBAS0BBQRza2luCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUEc2tpbgUKcHdyQXNzZXRJZAUDbmlsBQRza2luCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCXVzZXJQb3dlcgIFY2hpbGQEdXNlcgkAlAoCBQNuaWwJAQt2YWx1ZU9yRWxzZQIJAQ51c2VyQ29tbWl0bWVudAIFBWNoaWxkBQR1c2VyAAABaQEKdG90YWxQb3dlcgEFY2hpbGQJAJQKAgUDbmlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBDnNraW5Ub3RhbFN0b3JlAQUFY2hpbGQCG3RvdGFsUG93ZXI6IGNoaWxkIG5vdCBmb3VuZAFpAQRpbml0AQRjb25mCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgUSY29uZmlnQWRkcmVzc1N0b3JlBQRjb25mBQNuaWwBaQENcHdyVG9NYW5hZ2VycwADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgZkZW5pZWQEDWFtYmFzc2Fkb3JEQU8CIzNQNDhqV0dNYkNTNE5hTGg5eEpuRWhhRFluRllwb0FHaEVUBAhtYW5hZ2VycwkAzAgCAiMzUERTejUxZXRLSjlVUWVrN2FqN29OWGs3ckN6a3Z1S0Q3UgkAzAgCAiMzUEFycXA5a3RjRTJlcUxHTU5IdFd1WmFhRzNFbXRiVjVKdgkAzAgCAiMzUEx1OVlUbVBzN0Y4d2ZiSkFZUHZlYjN5cktSR2k3elRyUwkAzAgCAiMzUFFFODJlWUpqVXNheXpkQll2blU4UVB0d3NaS1ExU1h3NQkAzAgCAiMzUDVzYlJSc0cyRTd2QlpoUFFveTVXcVhBaHMxQkROa1RITQkAzAgCAiMzUEM3SzlSc2RGMXJ6NjJRU05uTm5FVUtRVWtKVDNob1pvZwkAzAgCAiMzUEJ5YjFXc3hVTXpmbUZWeHRmVTcyak5SejJRcHR6aGE2RQkAzAgCAiMzUEZaQ3E3SmZwV1p1eFRBS1JTSzFZU1VFdEtkRGRzOWNNSwkAzAgCAiMzUEp3Y25rcmU1d0x4Q0FYZTYzQkx0cnduS2lMblZoM0o1UQkAzAgCAiMzUDZ0MzhTOVk1RldtZTUyMTNqZXJqYzY0ZGpFc2ZHVlpCYQkAzAgCAiMzUEFHZHFkOGI3RDh2Z3NHNG1GNjhYOXRDMThEUE1kamZOagkAzAgCAiMzUEdwU0I4RkxVY2lqNnF2SGRrc002ZG56UmRzY29SYWR2dQkAzAgCAiMzUDdTVTFZTVRFMkY1b0hYZzFHR3pzc0pycjN0WUVRZFp6QwkAzAgCAiMzUDZIeTU3Uk1VWW5oN3I2VXRZa3FCd01ybjN5ZnhpUjR3WgkAzAgCAiMzUDZuRXRDWGExUlRXaEhXRVZpNUV5cll2RGZLMUpMVGJLYQkAzAgCAiMzUFB3d3ZMVEhlNUF2Y1RYazU0V3FyNHdCbTZIUUN5RERLcgkAzAgCAiMzUE5OaVRRazNzQzVDaEthS1RRRTlLajlOQVdlc01pc3BWNwkAzAgCAiMzUFAzTFQ0U3pybk1OQml0cXJiM3JKWlZwQkE1aEV4ZkNhWgkAzAgCAiMzUFBIQnpCRjdNRHlmQmZLd2hoWWhVRXBWNXd0VkNhNlhSUAkAzAgCAiMzUDlmRzVKRVZ2VU1rV1V5OWRKaXhYY1V6ZzVWUjcxQVhZSgkAzAgCAiMzUERXY2ZKMmFSM0dxZTF1Q0pCRHBtVFNYTmRQV1Fqd2J1eAkAzAgCAiMzUFBGVFBGeTlpeUpNQlBGN3FVc1FLN1BXTFVNOHJrM3pvOQkAzAgCAiMzUDZTWm05MTFmYzY5dFdhZHlxU3VUR2d1TUhoQUczTjNvTQkAzAgCAiMzUEhHUU5FTkh6NlNCSFhEcWtINmhXNVd1N2l5RkdLb2hRYwkAzAgCAiMzUEFDeHV6OE5ObjVZZEczM1hEWWZaUWJncDhtOWZEa2h1SAkAzAgCAiMzUEp4Zkh5S0syTnE2RlBUdHQybUMzQ3FrbWVqSmF4ekplYQkAzAgCAiMzUDZ3WTl4emFud1RHNFhDR2dQWm1SQTZTY3pxOUF5cUJCdgkAzAgCAiMzUEFKUzVQUGk1ODRUWEZwWmQzZm1jWlZOMXZ6OUhnQktyNAkAzAgCAiMzUFFFR0pwUERoNVh2aHVmQWN4cmtxWlpiVEJCUFljQ3BMSwkAzAgCAiMzUEE2NVpBMkNndTlqUEpBM2pTMVo0anhwWnNweFlBaGV2SgkAzAgCAiMzUEtCQlV0TkhoQ3g5ZVdWdXZBckJFZGdqVkJKaVJyOWlUTgkAzAgCAiMzUFI4dmd1eG11SGM2cDVDVHZ5dWJQZFZqYk5mRzFVa1BzdwkAzAgCAiMzUFFWazRnVnVSckRFUWlkVTNVbkVKQXBSOFBOTmtYOFdUYQkAzAgCAiMzUExzQ21ldmdYM3JHM1NNdW9rcFEyVW9XaTVGUU1YUURNZAkAzAgCAiMzUE1uTHI4REZtUFIzVmE0NEMzdEc0cTFqVUhkdGZIZnRFSAkAzAgCAiMzUEtXdWpaQ3V1cTEyQWg2ems3NjdGRHZzQk5BYlVvZ2dRSAkAzAgCAiMzUEhtMjFuOFNRRkg5QlM3dDN2SFpCNnhGcTdEZmQyWXJLMQkAzAgCAiMzUEpoSzkzM1F6TWQxYzNMVDZuTWZKb1BWaVdlUW41WUdjegkAzAgCAiMzUEJvRVhVYkpQQkV4VVcyTm5ZclFtVGoyTDNCdjFaV2hGdQkAzAgCAiMzUEpIZjZvNjNIcUZlTnJLVkw5VlM4U3dEekpxYnJBS0dvUgkAzAgCAiMzUEVQU0RzYzNSbVBDaHhpUFB0NXRRa25mbmhkSGRjZUg3egkAzAgCAiMzUFA1QjVWbnFZZG5CMVlLWTdEcWtZY2l4N0dIWmVZS0VRcgkAzAgCAiMzUE1DRGlDZGJkemJMZ1RvY3F6Y3FGN2lpWDdLU1U2M1NaeQkAzAgCAiMzUEdDaXdEV2FSZ010MWdZVjh3WTFwazlqVjVYWXVrcVJQMQkAzAgCAiMzUDNLN2luOXJkbkNqd0FnYTMyY1V4bUdlSnNuOGVqY2VzYQkAzAgCAiMzUDJ1Qm9VWWhtamFRUlU0Q1JMVDlZUDQ2UHJTVUV4aHRrRwkAzAgCAiMzUEpvVG9VNWVNMWlYOG1SdlB3YVVrOWhtTXFkcXpnNE14MgkAzAgCAiMzUEI4TkpCaENIMkV6bWpudFVlc0JKaVpDRnZaMUxTYWpTZgUDbmlsBBB0b3RhbEFtYmFzc2Fkb3JzCQCQAwEFCG1hbmFnZXJzBApwd3JSZXdhcmRzAMCEPQoBBGZvbGQCBGNtZHMKYW1iYXNzYWRvcgkAzAgCCQEIY2hhbmdlQnkCCQENdXNlclNraW5TdG9yZQIFDWFtYmFzc2Fkb3JEQU8FCmFtYmFzc2Fkb3IFCnB3clJld2FyZHMFBGNtZHMJAMwIAgkBCGNoYW5nZUJ5AgkBDnNraW5Ub3RhbFN0b3JlAQUNYW1iYXNzYWRvckRBTwkAaAIFCnB3clJld2FyZHMFEHRvdGFsQW1iYXNzYWRvcnMKAAIkbAUIbWFuYWdlcnMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBGZvbGQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkADVtLW0=", "chainId": 87, "height": 3917608, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HjJ88zm4PCrwYzW8ZEmEfD432EwQem8Lycu68UWBpvZe Next: HWLg1MastrNjY1rEyKCmvSDfYkpEtyspyMyuoMCqyQTv Diff:
OldNewDifferences
629629 then throw("denied")
630630 else {
631631 let ambassadorDAO = "3P48jWGMbCS4NaLh9xJnEhaDYnFYpoAGhET"
632- let managers = ["3PLK5rsP7yW1bKRVLT8BxAFeweBLQkjYVZn", "3PH1mbvzYeYFgz6GCPL6NdjxprTf99kJhhc", "3PHpnF9yh2WVhQyUr9kUAeA2iAEFqxcEutr", "3P978ukVxfvQyiQLjiGt3YgdMWX4NkyHRV9", "3PKSa2Ch4QURzJ5YkGtNDZHGMCDdbbHyLh7", "3PByWMxi22y8hEsL6FBWLvWoqrKAoZUiDdW", "3PGN4RoCzPFd5kMTf4667JdwMEwfCiM4DdC", "3PJTpECitaUTAsmV9jWXr7DBCARa6nBD6R9", "3PJzbGXzLnHgG5AhL636y8zwxRyCn7tq4aF", "3PGq3QrzRZHFqW8abxuTvt3KqknDMVFeDDJ", "3PF1ivx8YjgPAASjngQ67eAPcxuchepcU29", "3PJeZq4R9W1SKHeHWS7b72BTGT2ZifjwGa8", "3P92Da5d851wrcU7JHeJnW1pTD5z6udSYsv", "3PPgRxw4XTqZrToQ6goJJ7uhgSRhBELLEEK", "3PPekwhupKxF2wU7WoXpB9AmJLSLd58t4kW", "3PFfmAbJ7GKTbDjKjFTrDBc8dZTYeZruSQs", "3P9L574ikYfBZFhsQdr41nBJHobjYnfi2Qc", "3PHXdYt8sgLUbygAns7PfNUPtYXte24rA2P", "3PMAKrn2XVggGez3csSnhhzCfCQc5uTUTQr", "3P6qHPDEF4VB5JwgAEYMkG6QcvRfQaJgHep", "3PDnBK7gsVm5nk2uekwvm6QGnYKPCZwuADR", "3PFQddwQEGu4yqSiFkaLb5zeFmTXujTkXPT", "3P9PjJPuYKJEc265ss9FznkmFPr1dYZJDqZ", "3PKupUYef5knZEehvkJLmKcumazyQvi8dEd", "3P2nr3javBwiZRjypPyLFxrX7YbY51cYtTb", "3PJJMqv26ahiaBS6A3zx1KtQU4bLMY4cb2v", "3PMKqew9ETL15DVmZ9JCrtwX6tkQy6RZviM", "3PDUXydNQL699TxnFsyanRtcwax4aPLr7Tu", "3P8qbpGgRgPreTpgkVH5Wfi8MHQ6wxsBRXr", "3P6gMeA6TThhb5dyw2HtB5RjkX5S6tj4htU", "3PCRNkWAeicAWxZy1bHRSraAVMh6m3uQFKu", "3P2DCcFgYYuwZ78hNzcHUKFoxrm1q7nLEVb", "3P7aBHviNDj8EoZypAeQP9bBc872epDsQsS", "3PGxSV7Musxh6DGQ2sL5YJHu58VwzWkG32K", "3PAmaL2GXBd98viLsuBzSFaNB1a7XkcKYLS", "3PJGza6RxvZeLETYeGR8JXw94vT2r9PoJqY", "3PEhv7iphtmviVXCao7HkRkptHgvECGTvTK", "3P415cKqF9M4fPkWYku8mtafaPbjRZGcy91", "3PCVmWJcmo45JfHPLaU9LX4H2J5hrNnvtTM", "3PKEJXMr1oaHPSCW7hAHygrBPA6zmyNThjQ", "3PR8NbMpVjwpkNgsMBh6HZGjovD6RoMH1Vb", "3PJdsS5WMg7C2vjT86cmoLGmegU5idJrvXe", "3P7tCQUG2xURbKueBG1XoMGAYkcb4Svu514", "3P7NGvQVUwPb5WbmbUbd7omCSdfqRq5Picp", "3PAivax8XyRppw2szKU2LvhfFavFgQS28Mj", "3P2UBHYYeK1LtxafSV9ZShY2mEe9sZU2tqA", "3PPWURTpS3w15LNY9nY4v5DzuLNbGkTYuzJ", "3PDKb7rYKyLJbb1W2QuQRVKsyCXZCpxDBbJ", "3P98PEMyZ9qPBsQD8bztaU2vazBYxSRe6Ka", "3PMnUVWSL1BSKfnGQLQnNph9aVarXMnpFHM", "3PJufQtprxNpKKxg3hCCoi7McL2pSe95PyJ"]
632+ let managers = ["3PDSz51etKJ9UQek7aj7oNXk7rCzkvuKD7R", "3PArqp9ktcE2eqLGMNHtWuZaaG3EmtbV5Jv", "3PLu9YTmPs7F8wfbJAYPveb3yrKRGi7zTrS", "3PQE82eYJjUsayzdBYvnU8QPtwsZKQ1SXw5", "3P5sbRRsG2E7vBZhPQoy5WqXAhs1BDNkTHM", "3PC7K9RsdF1rz62QSNnNnEUKQUkJT3hoZog", "3PByb1WsxUMzfmFVxtfU72jNRz2Qptzha6E", "3PFZCq7JfpWZuxTAKRSK1YSUEtKdDds9cMK", "3PJwcnkre5wLxCAXe63BLtrwnKiLnVh3J5Q", "3P6t38S9Y5FWme5213jerjc64djEsfGVZBa", "3PAGdqd8b7D8vgsG4mF68X9tC18DPMdjfNj", "3PGpSB8FLUcij6qvHdksM6dnzRdscoRadvu", "3P7SU1YMTE2F5oHXg1GGzssJrr3tYEQdZzC", "3P6Hy57RMUYnh7r6UtYkqBwMrn3yfxiR4wZ", "3P6nEtCXa1RTWhHWEVi5EyrYvDfK1JLTbKa", "3PPwwvLTHe5AvcTXk54Wqr4wBm6HQCyDDKr", "3PNNiTQk3sC5ChKaKTQE9Kj9NAWesMispV7", "3PP3LT4SzrnMNBitqrb3rJZVpBA5hExfCaZ", "3PPHBzBF7MDyfBfKwhhYhUEpV5wtVCa6XRP", "3P9fG5JEVvUMkWUy9dJixXcUzg5VR71AXYJ", "3PDWcfJ2aR3Gqe1uCJBDpmTSXNdPWQjwbux", "3PPFTPFy9iyJMBPF7qUsQK7PWLUM8rk3zo9", "3P6SZm911fc69tWadyqSuTGguMHhAG3N3oM", "3PHGQNENHz6SBHXDqkH6hW5Wu7iyFGKohQc", "3PACxuz8NNn5YdG33XDYfZQbgp8m9fDkhuH", "3PJxfHyKK2Nq6FPTtt2mC3CqkmejJaxzJea", "3P6wY9xzanwTG4XCGgPZmRA6Sczq9AyqBBv", "3PAJS5PPi584TXFpZd3fmcZVN1vz9HgBKr4", "3PQEGJpPDh5XvhufAcxrkqZZbTBBPYcCpLK", "3PA65ZA2Cgu9jPJA3jS1Z4jxpZspxYAhevJ", "3PKBBUtNHhCx9eWVuvArBEdgjVBJiRr9iTN", "3PR8vguxmuHc6p5CTvyubPdVjbNfG1UkPsw", "3PQVk4gVuRrDEQidU3UnEJApR8PNNkX8WTa", "3PLsCmevgX3rG3SMuokpQ2UoWi5FQMXQDMd", "3PMnLr8DFmPR3Va44C3tG4q1jUHdtfHftEH", "3PKWujZCuuq12Ah6zk767FDvsBNAbUoggQH", "3PHm21n8SQFH9BS7t3vHZB6xFq7Dfd2YrK1", "3PJhK933QzMd1c3LT6nMfJoPViWeQn5YGcz", "3PBoEXUbJPBExUW2NnYrQmTj2L3Bv1ZWhFu", "3PJHf6o63HqFeNrKVL9VS8SwDzJqbrAKGoR", "3PEPSDsc3RmPChxiPPt5tQknfnhdHdceH7z", "3PP5B5VnqYdnB1YKY7DqkYcix7GHZeYKEQr", "3PMCDiCdbdzbLgTocqzcqF7iiX7KSU63SZy", "3PGCiwDWaRgMt1gYV8wY1pk9jV5XYukqRP1", "3P3K7in9rdnCjwAga32cUxmGeJsn8ejcesa", "3P2uBoUYhmjaQRU4CRLT9YP46PrSUExhtkG", "3PJoToU5eM1iX8mRvPwaUk9hmMqdqzg4Mx2", "3PB8NJBhCH2EzmjntUesBJiZCFvZ1LSajSf"]
633633 let totalAmbassadors = size(managers)
634634 let pwrRewards = 1000000
635635 func fold (cmds,ambassador) = changeBy(userSkinStore(ambassadorDAO, ambassador), pwrRewards) :: cmds
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func writeConstString (key,value) = if (!(isDefined(getString(this, key))))
55 then StringEntry(key, value)
66 else throw(("already initialized: " + key))
77
88
99 func writeInt (key,value) = if ((0 > value))
1010 then throw(((("writing negative value " + toString(value)) + " for key ") + key))
1111 else IntegerEntry(key, value)
1212
1313
1414 func changeBy (key,value) = writeInt(key, (valueOrElse(getInteger(this, key), 0) + value))
1515
1616
1717 func asInt (value) = match value {
1818 case int: Int =>
1919 int
2020 case _ =>
2121 throw("wrong type, expected: Int")
2222 }
2323
2424
2525 func assetId (str) = if ((str == "WAVES"))
2626 then unit
2727 else fromBase58String(str)
2828
2929
3030 let configAddressStore = "config"
3131
3232 let configAddress = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, configAddressStore), "children: config address not found")), "invalid config address")
3333
3434 func allowed (op) = invoke(configAddress, "opAllowed", [op], nil)
3535
3636
3737 let HEIGHT = height
3838
3939 let pwrAssetId = fromBase58String(valueOrErrorMessage(getString(configAddress, "powerAssetId"), "pwr asset id not found"))
4040
4141 let slashers = valueOrElse(getString(configAddress, (toString(this) + "_slashers")), "")
4242
4343 let mainAddresses = valueOrElse(getString(configAddress, "main_addresses"), "")
4444
4545 func periodStore (child) = ("period_" + child)
4646
4747
4848 func period (child) = valueOrElse(getInteger(periodStore(child)), 0)
4949
5050
5151 func ownerStore (child) = ("owner_" + child)
5252
5353
5454 func treasuryStore (child) = ("treasury_" + child)
5555
5656
5757 func lockTimeStore (child) = ("lockTime_" + child)
5858
5959
6060 func periodLockTimeStore (child,period) = ((("period_" + toString(period)) + "_lockTime_") + child)
6161
6262
6363 func skinRequiredStore (child) = ("skin_required_" + child)
6464
6565
6666 func skinMaxStore (child) = ("skin_max_" + child)
6767
6868
6969 func investmentsMaxStore (child) = ("investments_max_" + child)
7070
7171
7272 func minCommitmentStore (child) = ("min_commitment" + child)
7373
7474
7575 func skinTotalStore (child) = ("skin_total_" + child)
7676
7777
7878 let pwrTotalStore = "pwr_total"
7979
8080 func investmentsRequiredStore (child) = ("investments_required_" + child)
8181
8282
8383 func investmentsTotalStore (child) = ("investments_total_" + child)
8484
8585
8686 func investmentsPeriodTotalStore (child) = ((("period_" + toString(period(child))) + "_investments_total_") + child)
8787
8888
8989 func investmentsTokenStore (child) = ("investments_token_" + child)
9090
9191
9292 func commitmentsStore (child) = ("commitments_" + child)
9393
9494
9595 func createHeightStore (child) = ("create_height_" + child)
9696
9797
9898 func startHeightStore (child) = ("start_height_" + child)
9999
100100
101101 func startPeriodHeightStore (child,period) = ((("period_" + toString(period)) + "_start_height_") + child)
102102
103103
104104 func startPeriodAfterHeightStore (child,period) = ((("period_" + toString(period)) + "_start_after_height_") + child)
105105
106106
107107 func startCurrentPeriodHeightStore (child) = startPeriodHeightStore(child, period(child))
108108
109109
110110 func cancelHeightStore (child) = ("cancel_height_" + child)
111111
112112
113113 func investmentsToken (child) = assetId(valueOrErrorMessage(getString(investmentsTokenStore(child)), "investments asset id not found"))
114114
115115
116116 func userSkinStore (child,user) = ((("skin_" + child) + "_") + user)
117117
118118
119119 func userSkinUnlockPeriodStore (child,user) = ((("skin_unlock_period_" + child) + "_") + user)
120120
121121
122122 func userSkinExitedInPeriodStore (child,user,period) = (((userSkinStore(child, user) + "_period_") + toString(period)) + "_exited")
123123
124124
125125 func investorStore (child,investor) = ((("investor_" + child) + "_") + investor)
126126
127127
128128 func commitAfterAddressesStore (child) = ("commit_after_addresses_" + child)
129129
130130
131131 func investAfterStartStore (child) = ("can_invest_after_start_" + child)
132132
133133
134134 func assertNotStarted (child) = if (isDefined(getInteger(startHeightStore(child))))
135135 then throw("already started")
136136 else false
137137
138138
139139 func assertIsStarted (child) = if ((isDefined(getInteger(startHeightStore(child))) == false))
140140 then throw("not yet started")
141141 else false
142142
143143
144144 func assertNotCancelled (child) = if (isDefined(getInteger(cancelHeightStore(child))))
145145 then throw("already canceled")
146146 else false
147147
148148
149149 func assertNotStartedPeriod (child) = if ((period(child) == 0))
150150 then assertNotStarted(child)
151151 else if (isDefined(getInteger(startCurrentPeriodHeightStore(child))))
152152 then throw("period already started")
153153 else false
154154
155155
156156 func userCommitment (child,user) = getInteger(userSkinStore(child, user))
157157
158158
159159 func currentUserSkin (child,user) = valueOrElse(userCommitment(child, user), 0)
160160
161161
162162 func lockTime (child,period) = valueOrElse(getInteger(periodLockTimeStore(child, period)), valueOrErrorMessage(getInteger(lockTimeStore(child)), "no child lockTime"))
163163
164164
165165 func completedPeriod (child) = {
166166 let p = period(child)
167167 if ((p == 0))
168168 then 0
169169 else {
170170 let periodStart = getInteger(startPeriodHeightStore(child, p))
171171 if (isDefined(periodStart))
172172 then p
173173 else (p - 1)
174174 }
175175 }
176176
177177
178178 func unlockHeight (child) = {
179179 let p = completedPeriod(child)
180180 let childStart = valueOrErrorMessage(getInteger(startHeightStore(child)), "no child start height")
181181 (valueOrElse(getInteger(startPeriodHeightStore(child, p)), childStart) + lockTime(child, p))
182182 }
183183
184184
185185 func treasury (child) = valueOrElse(getString(treasuryStore(child)), child)
186186
187187
188188 func int (key) = toString(valueOrElse(getInteger(key), 0))
189189
190190
191191 func str (key) = valueOrElse(getString(key), "")
192192
193193
194194 func adviseProject (child) = {
195195 let p = period(child)
196196 let periodStr = toString(p)
197197 ((((((((((((((((((((((((((((((((((((((((((((((((((("height: " + toString(HEIGHT)) + ", project: ") + child) + ", owner: ") + str(ownerStore(child))) + ", treasury: ") + treasury(child)) + ", lock_time: ") + int(lockTimeStore(child))) + ", skin_required: ") + int(skinRequiredStore(child))) + ", skin_max: ") + int(skinMaxStore(child))) + ", min_commitment: ") + int(minCommitmentStore(child))) + ", skin_total: ") + int(skinTotalStore(child))) + ", investments_required: ") + int(investmentsRequiredStore(child))) + ", investments_max: ") + int(investmentsMaxStore(child))) + ", investments_total: ") + int(investmentsTotalStore(child))) + ", investments_token: ") + str(investmentsTokenStore(child))) + ", commitments: ") + str(commitmentsStore(child))) + ", create_height: ") + int(createHeightStore(child))) + ", start_height: ") + toString(valueOrElse(getInteger(startHeightStore(child)), -1))) + ", cancel_height: ") + toString(valueOrElse(getInteger(cancelHeightStore(child)), -1))) + ", period: ") + periodStr) + ", period_") + periodStr) + "_start_after_height: ") + toString(valueOrElse(getInteger(startPeriodAfterHeightStore(child, p)), -1))) + ", period_") + periodStr) + "_start_height: ") + toString(valueOrElse(getInteger(startCurrentPeriodHeightStore(child)), -1))) + ", period_") + periodStr) + "_lock_time: ") + toString(lockTime(child, p))) + ", unlock_height: ") + toString(unlockHeight(child))) + ", period_investments_total: ") + int(investmentsPeriodTotalStore(child)))
198198 }
199199
200200
201201 func adviseUserProject (child,user) = ((((((((("height: " + toString(HEIGHT)) + ", project: ") + child) + ", skin:") + toString(currentUserSkin(child, user))) + ", power:") + toString(valueOrElse(userCommitment(child, user), 0))) + ", investments: ") + int(investorStore(child, user)))
202202
203203
204204 func commitAfterStartForInternal (i,child,address,additionalLockRounds) = {
205205 let a = allowed("commitAfterStartFor")
206206 if ((a == a))
207207 then if ((0 > additionalLockRounds))
208208 then throw("invalid additionalLockRounds")
209209 else if (!(contains(valueOrElse(getString(commitAfterAddressesStore(child)), ""), toString(i.caller))))
210210 then throw("commitAfterStartForInternal. denied")
211211 else {
212212 let p = i.payments[0]
213213 if (if ((p.assetId != pwrAssetId))
214214 then true
215215 else (size(i.payments) != 1))
216216 then throw("invalid payments: only $PWR token expected")
217217 else {
218218 let commitment = p.amount
219219 let cmds = [changeBy(userSkinStore(child, address), commitment), changeBy(skinTotalStore(child), commitment), changeBy(pwrTotalStore, commitment)]
220220 if ((additionalLockRounds > 0))
221221 then {
222222 let unlockRound = (period(child) + additionalLockRounds)
223223 IntegerEntry(userSkinUnlockPeriodStore(child, address), unlockRound) :: cmds
224224 }
225225 else cmds
226226 }
227227 }
228228 else throw("Strict value is not equal to itself.")
229229 }
230230
231231
232232 @Callable(i)
233233 func projectFor (owner,skin,maxSkin,minCommitment,lockTime,investments,maxInvestments,investmentsToken,commitments,child) = {
234234 let a = allowed("projectFor")
235235 if ((a == a))
236236 then if (!(contains(mainAddresses, toString(i.caller))))
237237 then throw("denied")
238238 else {
239239 let t = valueOrErrorMessage(addressFromString(child), "invalid treasury address")
240240 if ((t == t))
241241 then {
242242 let token = assetId(investmentsToken)
243243 if ((token == token))
244244 then if (if ((maxSkin > 0))
245245 then (skin > maxSkin)
246246 else false)
247247 then throw("invalid maxSkin")
248248 else if (if ((maxInvestments > 0))
249249 then (investments > maxInvestments)
250250 else false)
251251 then throw("invalid maxInvestments")
252252 else [writeConstString(ownerStore(child), owner), writeInt(createHeightStore(child), HEIGHT), writeInt(skinRequiredStore(child), skin), writeInt(skinMaxStore(child), maxSkin), writeInt(minCommitmentStore(child), minCommitment), writeInt(lockTimeStore(child), lockTime), writeInt(investmentsRequiredStore(child), investments), writeConstString(investmentsTokenStore(child), investmentsToken), writeConstString(commitmentsStore(child), commitments), writeConstString(treasuryStore(child), child), writeInt(investmentsMaxStore(child), maxInvestments)]
253253 else throw("Strict value is not equal to itself.")
254254 }
255255 else throw("Strict value is not equal to itself.")
256256 }
257257 else throw("Strict value is not equal to itself.")
258258 }
259259
260260
261261
262262 @Callable(i)
263263 func increraseSkin (child,skinIncrement) = {
264264 let a = allowed("increraseSkin")
265265 if ((a == a))
266266 then {
267267 let s = if (assertNotStarted(child))
268268 then assertNotCancelled(child)
269269 else false
270270 if ((s == s))
271271 then if ((0 >= skinIncrement))
272272 then throw("invalid argument: skinIncrement should be positive")
273273 else {
274274 let owner = getStringValue(ownerStore(child))
275275 if ((toString(i.caller) != owner))
276276 then throw("denied")
277277 else [changeBy(skinRequiredStore(child), skinIncrement)]
278278 }
279279 else throw("Strict value is not equal to itself.")
280280 }
281281 else throw("Strict value is not equal to itself.")
282282 }
283283
284284
285285
286286 @Callable(i)
287287 func commitFor (child,address) = {
288288 let a = allowed("commitFor")
289289 if ((a == a))
290290 then {
291291 let s = assertNotStartedPeriod(child)
292292 if ((s == s))
293293 then {
294294 let p = i.payments[0]
295295 if ((p.assetId != pwrAssetId))
296296 then throw("invalid attached payment: $power token expected")
297297 else {
298298 let commitment = p.amount
299299 let minCommitment = valueOrErrorMessage(getInteger(minCommitmentStore(child)), "Child DAO not found")
300300 if ((minCommitment > commitment))
301301 then throw(("Min. commitment is " + toString(minCommitment)))
302302 else {
303303 let skinTotalStore1 = skinTotalStore(child)
304304 let newSkinTotal = (valueOrElse(getInteger(skinTotalStore1), 0) + commitment)
305305 let skinMax = valueOrElse(getInteger(skinMaxStore(child)), 0)
306306 if (if ((skinMax > 0))
307307 then (newSkinTotal > skinMax)
308308 else false)
309309 then throw(("Total max. skin is reached: " + toString(skinMax)))
310310 else [changeBy(userSkinStore(child, address), commitment), IntegerEntry(skinTotalStore1, newSkinTotal), changeBy(pwrTotalStore, commitment)]
311311 }
312312 }
313313 }
314314 else throw("Strict value is not equal to itself.")
315315 }
316316 else throw("Strict value is not equal to itself.")
317317 }
318318
319319
320320
321321 @Callable(i)
322322 func commitForMiner (child,address) = {
323323 let a = allowed("commitForMiner")
324324 if ((a == a))
325325 then if (!(contains(mainAddresses, toString(i.caller))))
326326 then throw("denied")
327327 else {
328328 let p = i.payments[0]
329329 if (if ((p.assetId != pwrAssetId))
330330 then true
331331 else (size(i.payments) != 1))
332332 then throw("invalid payments: only $PWR token expected")
333333 else {
334334 let commitment = p.amount
335335 [changeBy(userSkinStore(child, address), commitment), changeBy(skinTotalStore(child), commitment), changeBy(pwrTotalStore, commitment)]
336336 }
337337 }
338338 else throw("Strict value is not equal to itself.")
339339 }
340340
341341
342342
343343 @Callable(i)
344344 func commitAfterStartFor (child,address) = commitAfterStartForInternal(i, child, address, 0)
345345
346346
347347
348348 @Callable(i)
349349 func commitAfterStartWithLockRoundFor (child,address,additionalLockRounds) = commitAfterStartForInternal(i, child, address, additionalLockRounds)
350350
351351
352352
353353 @Callable(i)
354354 func invest (child) = {
355355 let a = allowed("invest")
356356 if ((a == a))
357357 then {
358358 let s = assertNotStartedPeriod(child)
359359 if ((s == s))
360360 then {
361361 let token = investmentsToken(child)
362362 if ((i.payments[0].assetId != token))
363363 then throw("invalid investments asset id")
364364 else {
365365 let amount = i.payments[0].amount
366366 let maximum = valueOrElse(getInteger(investmentsMaxStore(child)), 0)
367367 func datas (a) = [changeBy(investorStore(child, toString(i.caller)), a), changeBy(investmentsTotalStore(child), a), changeBy(investmentsPeriodTotalStore(child), a)]
368368
369369 if ((maximum > 0))
370370 then {
371371 let totalStore = investmentsTotalStore(child)
372372 let total = valueOrElse(getInteger(totalStore), 0)
373373 let investmens = min([amount, (maximum - total)])
374374 if ((0 >= investmens))
375375 then throw(("Total max. investments is reached: " + toString(maximum)))
376376 else {
377377 let chargeBack = (amount - investmens)
378378 if ((chargeBack > 0))
379379 then [ScriptTransfer(i.caller, chargeBack, token), datas(investmens)]
380380 else datas(investmens)
381381 }
382382 }
383383 else datas(amount)
384384 }
385385 }
386386 else throw("Strict value is not equal to itself.")
387387 }
388388 else throw("Strict value is not equal to itself.")
389389 }
390390
391391
392392
393393 @Callable(i)
394394 func investAfterStart (child) = {
395395 let a = allowed("investAfterStart")
396396 if ((a == a))
397397 then if ((valueOrElse(getBoolean(investAfterStartStore(child)), false) == false))
398398 then throw("denied (investAfterStart)")
399399 else {
400400 let s = assertIsStarted(child)
401401 if ((s == s))
402402 then if ((period(child) > 0))
403403 then throw("initial round is ended")
404404 else {
405405 let token = investmentsToken(child)
406406 if ((i.payments[0].assetId != token))
407407 then throw("invalid investments asset id")
408408 else {
409409 let amount = i.payments[0].amount
410410 [changeBy(investorStore(child, toString(i.caller)), amount), changeBy(investmentsTotalStore(child), amount), changeBy(investmentsPeriodTotalStore(child), amount), ScriptTransfer(addressFromStringValue(treasury(child)), amount, investmentsToken(child))]
411411 }
412412 }
413413 else throw("Strict value is not equal to itself.")
414414 }
415415 else throw("Strict value is not equal to itself.")
416416 }
417417
418418
419419
420420 @Callable(i)
421421 func start (child) = {
422422 let paused = allowed("start")
423423 if ((paused == paused))
424424 then {
425425 let s = if (assertNotStarted(child))
426426 then assertNotCancelled(child)
427427 else false
428428 if ((s == s))
429429 then {
430430 let totalSkin = valueOrElse(getInteger(skinTotalStore(child)), 0)
431431 let skinRequired = valueOrErrorMessage(getInteger(skinRequiredStore(child)), "child not registered")
432432 if ((skinRequired > totalSkin))
433433 then throw("not enough skin in the game")
434434 else {
435435 let totalInvestments = valueOrElse(getInteger(investmentsTotalStore(child)), 0)
436436 if ((getIntegerValue(investmentsRequiredStore(child)) > totalInvestments))
437437 then throw("not enough investments")
438438 else [IntegerEntry(startHeightStore(child), HEIGHT), ScriptTransfer(addressFromStringValue(treasury(child)), totalInvestments, investmentsToken(child))]
439439 }
440440 }
441441 else throw("Strict value is not equal to itself.")
442442 }
443443 else throw("Strict value is not equal to itself.")
444444 }
445445
446446
447447
448448 @Callable(i)
449449 func initNextPeriod (child,blockBetweenPeriods,lockTime) = {
450450 let paused = allowed("initNextPeriod")
451451 if ((paused == paused))
452452 then if (if ((toString(i.caller) != getStringValue(ownerStore(child))))
453453 then (i.caller != this)
454454 else false)
455455 then throw("denied")
456456 else if ((0 > blockBetweenPeriods))
457457 then throw("blockBetweenPeriods should be positive or zero")
458458 else if ((1 > lockTime))
459459 then throw("lockTime should be positive")
460460 else {
461461 let unlockHeight_ = unlockHeight(child)
462462 if ((unlockHeight_ > HEIGHT))
463463 then throw("current period is still active")
464464 else {
465465 let p = period(child)
466466 if (if ((p > 0))
467467 then !(isDefined(startPeriodHeightStore(child, p)))
468468 else false)
469469 then throw("next period already initialized")
470470 else {
471471 let newPeriod = (p + 1)
472472 [IntegerEntry(periodStore(child), newPeriod), IntegerEntry(startPeriodAfterHeightStore(child, newPeriod), (unlockHeight_ + blockBetweenPeriods)), IntegerEntry(periodLockTimeStore(child, newPeriod), lockTime)]
473473 }
474474 }
475475 }
476476 else throw("Strict value is not equal to itself.")
477477 }
478478
479479
480480
481481 @Callable(i)
482482 func startPeriod (child) = {
483483 let paused = allowed("startPeriod")
484484 if ((paused == paused))
485485 then {
486486 let s = assertNotStartedPeriod(child)
487487 if ((s == s))
488488 then {
489489 let period_ = period(child)
490490 let startAfterStore = startPeriodAfterHeightStore(child, period_)
491491 let startAfter = valueOrErrorMessage(getInteger(startAfterStore), ("key not found: " + startAfterStore))
492492 if ((startAfter > HEIGHT))
493493 then throw("too early")
494494 else {
495495 let totalSkin = valueOrElse(getInteger(skinTotalStore(child)), 0)
496496 let skinRequired = valueOrErrorMessage(getInteger(skinRequiredStore(child)), "child not registered")
497497 if ((skinRequired > totalSkin))
498498 then throw("not enough skin in the game")
499499 else {
500500 let periodInvestments = valueOrElse(getInteger(investmentsPeriodTotalStore(child)), 0)
501501 [IntegerEntry(startCurrentPeriodHeightStore(child), HEIGHT), ScriptTransfer(addressFromStringValue(child), periodInvestments, investmentsToken(child))]
502502 }
503503 }
504504 }
505505 else throw("Strict value is not equal to itself.")
506506 }
507507 else throw("Strict value is not equal to itself.")
508508 }
509509
510510
511511
512512 @Callable(i)
513513 func slash (child,amount) = {
514514 let paused = allowed("/")
515515 if ((paused == paused))
516516 then if (!(contains(slashers, toString(i.caller))))
517517 then throw("denied")
518518 else if (!(isDefined(getInteger(startHeightStore(child)))))
519519 then throw("not started")
520520 else [changeBy(skinTotalStore(child), -(amount)), Burn(pwrAssetId, amount)]
521521 else throw("Strict value is not equal to itself.")
522522 }
523523
524524
525525
526526 @Callable(i)
527527 func completeFor (child,user) = if (!(contains(mainAddresses, toString(i.caller))))
528528 then throw("denied")
529529 else {
530530 let unlockHeight_ = unlockHeight(child)
531531 if ((unlockHeight_ > HEIGHT))
532532 then throw("still locked")
533533 else {
534534 let endedPeriod = completedPeriod(child)
535535 let unlockRound = valueOrElse(getInteger(userSkinUnlockPeriodStore(child, user)), 0)
536536 if ((unlockRound > endedPeriod))
537537 then throw((("you can unlock on " + toString(unlockRound)) + " round"))
538538 else {
539539 let skin = currentUserSkin(child, user)
540540 if ((skin == 0))
541541 then throw("you had no skin in the game")
542542 else $Tuple2([ScriptTransfer(i.caller, skin, pwrAssetId), DeleteEntry(userSkinStore(child, user)), changeBy(skinTotalStore(child), -(skin)), changeBy(pwrTotalStore, -(skin)), IntegerEntry(userSkinExitedInPeriodStore(child, user, endedPeriod), skin)], skin)
543543 }
544544 }
545545 }
546546
547547
548548
549549 @Callable(i)
550550 func cancel (child) = {
551551 let paused = allowed("cancel")
552552 if ((paused == paused))
553553 then {
554554 let s = if (assertNotStarted(child))
555555 then true
556556 else assertNotCancelled(child)
557557 if ((s == s))
558558 then if ((toString(i.caller) != getStringValue(ownerStore(child))))
559559 then throw("denied. not an owner")
560560 else [IntegerEntry(cancelHeightStore(child), HEIGHT)]
561561 else throw("Strict value is not equal to itself.")
562562 }
563563 else throw("Strict value is not equal to itself.")
564564 }
565565
566566
567567
568568 @Callable(i)
569569 func undoInvest (child) = {
570570 let paused = allowed("undoInvest")
571571 if ((paused == paused))
572572 then {
573573 let s = assertNotStarted(child)
574574 if ((s == s))
575575 then {
576576 let investmentsStore1 = investorStore(child, toString(i.caller))
577577 let investments = valueOrElse(getInteger(investmentsStore1), 0)
578578 if ((investments == 0))
579579 then throw("no investments")
580580 else [DeleteEntry(investmentsStore1), changeBy(investmentsTotalStore(child), -(investments)), changeBy(investmentsPeriodTotalStore(child), -(investments)), ScriptTransfer(i.caller, investments, investmentsToken(child))]
581581 }
582582 else throw("Strict value is not equal to itself.")
583583 }
584584 else throw("Strict value is not equal to itself.")
585585 }
586586
587587
588588
589589 @Callable(i)
590590 func undoCommitFor (child,address) = {
591591 let paused = allowed("undoCommitFor")
592592 if ((paused == paused))
593593 then if (!(contains(mainAddresses, toString(i.caller))))
594594 then throw("denied")
595595 else {
596596 let s = assertNotStarted(child)
597597 if ((s == s))
598598 then {
599599 let userSkinStore1 = userSkinStore(child, address)
600600 let skin = valueOrElse(getInteger(userSkinStore1), 0)
601601 if ((skin == 0))
602602 then throw("no skin")
603603 else $Tuple2([DeleteEntry(userSkinStore1), changeBy(skinTotalStore(child), -(skin)), changeBy(pwrTotalStore, -(skin)), ScriptTransfer(i.caller, skin, pwrAssetId)], skin)
604604 }
605605 else throw("Strict value is not equal to itself.")
606606 }
607607 else throw("Strict value is not equal to itself.")
608608 }
609609
610610
611611
612612 @Callable(i)
613613 func userPower (child,user) = $Tuple2(nil, valueOrElse(userCommitment(child, user), 0))
614614
615615
616616
617617 @Callable(i)
618618 func totalPower (child) = $Tuple2(nil, valueOrErrorMessage(getInteger(skinTotalStore(child)), "totalPower: child not found"))
619619
620620
621621
622622 @Callable(i)
623623 func init (conf) = [writeConstString(configAddressStore, conf)]
624624
625625
626626
627627 @Callable(i)
628628 func pwrToManagers () = if ((i.caller != this))
629629 then throw("denied")
630630 else {
631631 let ambassadorDAO = "3P48jWGMbCS4NaLh9xJnEhaDYnFYpoAGhET"
632- let managers = ["3PLK5rsP7yW1bKRVLT8BxAFeweBLQkjYVZn", "3PH1mbvzYeYFgz6GCPL6NdjxprTf99kJhhc", "3PHpnF9yh2WVhQyUr9kUAeA2iAEFqxcEutr", "3P978ukVxfvQyiQLjiGt3YgdMWX4NkyHRV9", "3PKSa2Ch4QURzJ5YkGtNDZHGMCDdbbHyLh7", "3PByWMxi22y8hEsL6FBWLvWoqrKAoZUiDdW", "3PGN4RoCzPFd5kMTf4667JdwMEwfCiM4DdC", "3PJTpECitaUTAsmV9jWXr7DBCARa6nBD6R9", "3PJzbGXzLnHgG5AhL636y8zwxRyCn7tq4aF", "3PGq3QrzRZHFqW8abxuTvt3KqknDMVFeDDJ", "3PF1ivx8YjgPAASjngQ67eAPcxuchepcU29", "3PJeZq4R9W1SKHeHWS7b72BTGT2ZifjwGa8", "3P92Da5d851wrcU7JHeJnW1pTD5z6udSYsv", "3PPgRxw4XTqZrToQ6goJJ7uhgSRhBELLEEK", "3PPekwhupKxF2wU7WoXpB9AmJLSLd58t4kW", "3PFfmAbJ7GKTbDjKjFTrDBc8dZTYeZruSQs", "3P9L574ikYfBZFhsQdr41nBJHobjYnfi2Qc", "3PHXdYt8sgLUbygAns7PfNUPtYXte24rA2P", "3PMAKrn2XVggGez3csSnhhzCfCQc5uTUTQr", "3P6qHPDEF4VB5JwgAEYMkG6QcvRfQaJgHep", "3PDnBK7gsVm5nk2uekwvm6QGnYKPCZwuADR", "3PFQddwQEGu4yqSiFkaLb5zeFmTXujTkXPT", "3P9PjJPuYKJEc265ss9FznkmFPr1dYZJDqZ", "3PKupUYef5knZEehvkJLmKcumazyQvi8dEd", "3P2nr3javBwiZRjypPyLFxrX7YbY51cYtTb", "3PJJMqv26ahiaBS6A3zx1KtQU4bLMY4cb2v", "3PMKqew9ETL15DVmZ9JCrtwX6tkQy6RZviM", "3PDUXydNQL699TxnFsyanRtcwax4aPLr7Tu", "3P8qbpGgRgPreTpgkVH5Wfi8MHQ6wxsBRXr", "3P6gMeA6TThhb5dyw2HtB5RjkX5S6tj4htU", "3PCRNkWAeicAWxZy1bHRSraAVMh6m3uQFKu", "3P2DCcFgYYuwZ78hNzcHUKFoxrm1q7nLEVb", "3P7aBHviNDj8EoZypAeQP9bBc872epDsQsS", "3PGxSV7Musxh6DGQ2sL5YJHu58VwzWkG32K", "3PAmaL2GXBd98viLsuBzSFaNB1a7XkcKYLS", "3PJGza6RxvZeLETYeGR8JXw94vT2r9PoJqY", "3PEhv7iphtmviVXCao7HkRkptHgvECGTvTK", "3P415cKqF9M4fPkWYku8mtafaPbjRZGcy91", "3PCVmWJcmo45JfHPLaU9LX4H2J5hrNnvtTM", "3PKEJXMr1oaHPSCW7hAHygrBPA6zmyNThjQ", "3PR8NbMpVjwpkNgsMBh6HZGjovD6RoMH1Vb", "3PJdsS5WMg7C2vjT86cmoLGmegU5idJrvXe", "3P7tCQUG2xURbKueBG1XoMGAYkcb4Svu514", "3P7NGvQVUwPb5WbmbUbd7omCSdfqRq5Picp", "3PAivax8XyRppw2szKU2LvhfFavFgQS28Mj", "3P2UBHYYeK1LtxafSV9ZShY2mEe9sZU2tqA", "3PPWURTpS3w15LNY9nY4v5DzuLNbGkTYuzJ", "3PDKb7rYKyLJbb1W2QuQRVKsyCXZCpxDBbJ", "3P98PEMyZ9qPBsQD8bztaU2vazBYxSRe6Ka", "3PMnUVWSL1BSKfnGQLQnNph9aVarXMnpFHM", "3PJufQtprxNpKKxg3hCCoi7McL2pSe95PyJ"]
632+ let managers = ["3PDSz51etKJ9UQek7aj7oNXk7rCzkvuKD7R", "3PArqp9ktcE2eqLGMNHtWuZaaG3EmtbV5Jv", "3PLu9YTmPs7F8wfbJAYPveb3yrKRGi7zTrS", "3PQE82eYJjUsayzdBYvnU8QPtwsZKQ1SXw5", "3P5sbRRsG2E7vBZhPQoy5WqXAhs1BDNkTHM", "3PC7K9RsdF1rz62QSNnNnEUKQUkJT3hoZog", "3PByb1WsxUMzfmFVxtfU72jNRz2Qptzha6E", "3PFZCq7JfpWZuxTAKRSK1YSUEtKdDds9cMK", "3PJwcnkre5wLxCAXe63BLtrwnKiLnVh3J5Q", "3P6t38S9Y5FWme5213jerjc64djEsfGVZBa", "3PAGdqd8b7D8vgsG4mF68X9tC18DPMdjfNj", "3PGpSB8FLUcij6qvHdksM6dnzRdscoRadvu", "3P7SU1YMTE2F5oHXg1GGzssJrr3tYEQdZzC", "3P6Hy57RMUYnh7r6UtYkqBwMrn3yfxiR4wZ", "3P6nEtCXa1RTWhHWEVi5EyrYvDfK1JLTbKa", "3PPwwvLTHe5AvcTXk54Wqr4wBm6HQCyDDKr", "3PNNiTQk3sC5ChKaKTQE9Kj9NAWesMispV7", "3PP3LT4SzrnMNBitqrb3rJZVpBA5hExfCaZ", "3PPHBzBF7MDyfBfKwhhYhUEpV5wtVCa6XRP", "3P9fG5JEVvUMkWUy9dJixXcUzg5VR71AXYJ", "3PDWcfJ2aR3Gqe1uCJBDpmTSXNdPWQjwbux", "3PPFTPFy9iyJMBPF7qUsQK7PWLUM8rk3zo9", "3P6SZm911fc69tWadyqSuTGguMHhAG3N3oM", "3PHGQNENHz6SBHXDqkH6hW5Wu7iyFGKohQc", "3PACxuz8NNn5YdG33XDYfZQbgp8m9fDkhuH", "3PJxfHyKK2Nq6FPTtt2mC3CqkmejJaxzJea", "3P6wY9xzanwTG4XCGgPZmRA6Sczq9AyqBBv", "3PAJS5PPi584TXFpZd3fmcZVN1vz9HgBKr4", "3PQEGJpPDh5XvhufAcxrkqZZbTBBPYcCpLK", "3PA65ZA2Cgu9jPJA3jS1Z4jxpZspxYAhevJ", "3PKBBUtNHhCx9eWVuvArBEdgjVBJiRr9iTN", "3PR8vguxmuHc6p5CTvyubPdVjbNfG1UkPsw", "3PQVk4gVuRrDEQidU3UnEJApR8PNNkX8WTa", "3PLsCmevgX3rG3SMuokpQ2UoWi5FQMXQDMd", "3PMnLr8DFmPR3Va44C3tG4q1jUHdtfHftEH", "3PKWujZCuuq12Ah6zk767FDvsBNAbUoggQH", "3PHm21n8SQFH9BS7t3vHZB6xFq7Dfd2YrK1", "3PJhK933QzMd1c3LT6nMfJoPViWeQn5YGcz", "3PBoEXUbJPBExUW2NnYrQmTj2L3Bv1ZWhFu", "3PJHf6o63HqFeNrKVL9VS8SwDzJqbrAKGoR", "3PEPSDsc3RmPChxiPPt5tQknfnhdHdceH7z", "3PP5B5VnqYdnB1YKY7DqkYcix7GHZeYKEQr", "3PMCDiCdbdzbLgTocqzcqF7iiX7KSU63SZy", "3PGCiwDWaRgMt1gYV8wY1pk9jV5XYukqRP1", "3P3K7in9rdnCjwAga32cUxmGeJsn8ejcesa", "3P2uBoUYhmjaQRU4CRLT9YP46PrSUExhtkG", "3PJoToU5eM1iX8mRvPwaUk9hmMqdqzg4Mx2", "3PB8NJBhCH2EzmjntUesBJiZCFvZ1LSajSf"]
633633 let totalAmbassadors = size(managers)
634634 let pwrRewards = 1000000
635635 func fold (cmds,ambassador) = changeBy(userSkinStore(ambassadorDAO, ambassador), pwrRewards) :: cmds
636636
637637 [changeBy(skinTotalStore(ambassadorDAO), (pwrRewards * totalAmbassadors)), {
638638 let $l = managers
639639 let $s = size($l)
640640 let $acc0 = nil
641641 func $f0_1 ($a,$i) = if (($i >= $s))
642642 then $a
643643 else fold($a, $l[$i])
644644
645645 func $f0_2 ($a,$i) = if (($i >= $s))
646646 then $a
647647 else throw("List size exceeds 100")
648648
649649 $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($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($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), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
650650 }]
651651 }
652652
653653

github/deemru/w8io/3ef1775 
145.84 ms