tx · CavJUoU6d7vWZEqMTMw2ohVPSX6HaR6sKovcBGj5zypR

3PBLPmkM3ThytNj6QeJyLTX154if8S6Cea5:  -0.01800000 Waves

2023.12.15 19:33 [3953954] smart account 3PBLPmkM3ThytNj6QeJyLTX154if8S6Cea5 > SELF 0.00000000 Waves

{ "type": 13, "id": "CavJUoU6d7vWZEqMTMw2ohVPSX6HaR6sKovcBGj5zypR", "fee": 1800000, "feeAssetId": null, "timestamp": 1702658021802, "version": 1, "sender": "3PBLPmkM3ThytNj6QeJyLTX154if8S6Cea5", "senderPublicKey": "4EgWP2ePsBhKdAXQtnLEV8kwUiDaJmz4McAiVAS4CVjo", "proofs": [ "xKeaRTgd4YkrR3YTx5CS7e1YGNFdmAwY19RQurXPrFkxoaEyL1tLvTH6hiuXL8qKx3hAy2K94qarft3mJrkZyK6" ], "script": "base64:BgJ9CAISDQoLCAEBAQEBAQgICAISBAoCCAISBAoCCAESBAoCCAgSBAoCCAgSBAoCCAgSBQoDCAgBEgMKAQgSAwoBCBIDCgEIEgUKAwgBARIDCgEIEgQKAggBEgQKAggIEgMKAQgSAwoBCBIECgIICBIECgIICBIDCgEIEgMKAQg7ARB3cml0ZUNvbnN0U3RyaW5nAgNrZXkFdmFsdWUDCQEBIQEJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMFA2tleQkBC1N0cmluZ0VudHJ5AgUDa2V5BQV2YWx1ZQkAAgEJAKwCAgIVYWxyZWFkeSBpbml0aWFsaXplZDogBQNrZXkBCHdyaXRlSW50AgNrZXkFdmFsdWUDCQBmAgAABQV2YWx1ZQkAAgEJAKwCAgkArAICCQCsAgICF3dyaXRpbmcgbmVnYXRpdmUgdmFsdWUgCQCkAwEFBXZhbHVlAgkgZm9yIGtleSAFA2tleQkBDEludGVnZXJFbnRyeQIFA2tleQUFdmFsdWUBC3dyaXRlQmluYXJ5AgNrZXkFdmFsdWUJAQtCaW5hcnlFbnRyeQIFA2tleQUFdmFsdWUBCGNoYW5nZUJ5AgNrZXkFdmFsdWUJAQh3cml0ZUludAIFA2tleQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAAFBXZhbHVlAQVhc0ludAEFdmFsdWUEByRtYXRjaDAFBXZhbHVlAwkAAQIFByRtYXRjaDACA0ludAQDaW50BQckbWF0Y2gwBQNpbnQJAAIBAhl3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50AQdhc3NldElkAQNzdHIDCQAAAgUDc3RyAgVXQVZFUwUEdW5pdAkA2QQBBQNzdHIAEmNvbmZpZ0FkZHJlc3NTdG9yZQIGY29uZmlnAA1jb25maWdBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFEmNvbmZpZ0FkZHJlc3NTdG9yZQIiY2hpbGRyZW46IGNvbmZpZyBhZGRyZXNzIG5vdCBmb3VuZAIWaW52YWxpZCBjb25maWcgYWRkcmVzcwEHYWxsb3dlZAECb3AJAPwHBAUNY29uZmlnQWRkcmVzcwIJb3BBbGxvd2VkCQDMCAIFAm9wBQNuaWwFA25pbAAGSEVJR0hUBQZoZWlnaHQACnB3ckFzc2V0SWQJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCDHBvd2VyQXNzZXRJZAIWcHdyIGFzc2V0IGlkIG5vdCBmb3VuZAAIc2xhc2hlcnMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUNY29uZmlnQWRkcmVzcwkArAICCQClCAEFBHRoaXMCCV9zbGFzaGVycwIAAA1tYWluQWRkcmVzc2VzCQELdmFsdWVPckVsc2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MCDm1haW5fYWRkcmVzc2VzAgABC3BlcmlvZFN0b3JlAQVjaGlsZAkArAICAgdwZXJpb2RfBQVjaGlsZAEGcGVyaW9kAQVjaGlsZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQELcGVyaW9kU3RvcmUBBQVjaGlsZAAAAQpvd25lclN0b3JlAQVjaGlsZAkArAICAgZvd25lcl8FBWNoaWxkAQ10cmVhc3VyeVN0b3JlAQVjaGlsZAkArAICAgl0cmVhc3VyeV8FBWNoaWxkAQ1sb2NrVGltZVN0b3JlAQVjaGlsZAkArAICAglsb2NrVGltZV8FBWNoaWxkARNwZXJpb2RMb2NrVGltZVN0b3JlAgVjaGlsZAZwZXJpb2QJAKwCAgkArAICCQCsAgICB3BlcmlvZF8JAKQDAQUGcGVyaW9kAgpfbG9ja1RpbWVfBQVjaGlsZAERc2tpblJlcXVpcmVkU3RvcmUBBWNoaWxkCQCsAgICDnNraW5fcmVxdWlyZWRfBQVjaGlsZAEMc2tpbk1heFN0b3JlAQVjaGlsZAkArAICAglza2luX21heF8FBWNoaWxkARNpbnZlc3RtZW50c01heFN0b3JlAQVjaGlsZAkArAICAhBpbnZlc3RtZW50c19tYXhfBQVjaGlsZAESbWluQ29tbWl0bWVudFN0b3JlAQVjaGlsZAkArAICAg5taW5fY29tbWl0bWVudAUFY2hpbGQBDnNraW5Ub3RhbFN0b3JlAQVjaGlsZAkArAICAgtza2luX3RvdGFsXwUFY2hpbGQADXB3clRvdGFsU3RvcmUCCXB3cl90b3RhbAEYaW52ZXN0bWVudHNSZXF1aXJlZFN0b3JlAQVjaGlsZAkArAICAhVpbnZlc3RtZW50c19yZXF1aXJlZF8FBWNoaWxkARVpbnZlc3RtZW50c1RvdGFsU3RvcmUBBWNoaWxkCQCsAgICEmludmVzdG1lbnRzX3RvdGFsXwUFY2hpbGQBG2ludmVzdG1lbnRzUGVyaW9kVG90YWxTdG9yZQEFY2hpbGQJAKwCAgkArAICCQCsAgICB3BlcmlvZF8JAKQDAQkBBnBlcmlvZAEFBWNoaWxkAhNfaW52ZXN0bWVudHNfdG90YWxfBQVjaGlsZAEVaW52ZXN0bWVudHNUb2tlblN0b3JlAQVjaGlsZAkArAICAhJpbnZlc3RtZW50c190b2tlbl8FBWNoaWxkARBjb21taXRtZW50c1N0b3JlAQVjaGlsZAkArAICAgxjb21taXRtZW50c18FBWNoaWxkARBhdHRhY2htZW50c1N0b3JlAQVjaGlsZAkArAICAgxhdHRhY2htZW50c18FBWNoaWxkARFjcmVhdGVIZWlnaHRTdG9yZQEFY2hpbGQJAKwCAgIOY3JlYXRlX2hlaWdodF8FBWNoaWxkARBzdGFydEhlaWdodFN0b3JlAQVjaGlsZAkArAICAg1zdGFydF9oZWlnaHRfBQVjaGlsZAEWc3RhcnRQZXJpb2RIZWlnaHRTdG9yZQIFY2hpbGQGcGVyaW9kCQCsAgIJAKwCAgkArAICAgdwZXJpb2RfCQCkAwEFBnBlcmlvZAIOX3N0YXJ0X2hlaWdodF8FBWNoaWxkARtzdGFydFBlcmlvZEFmdGVySGVpZ2h0U3RvcmUCBWNoaWxkBnBlcmlvZAkArAICCQCsAgIJAKwCAgIHcGVyaW9kXwkApAMBBQZwZXJpb2QCFF9zdGFydF9hZnRlcl9oZWlnaHRfBQVjaGlsZAEdc3RhcnRDdXJyZW50UGVyaW9kSGVpZ2h0U3RvcmUBBWNoaWxkCQEWc3RhcnRQZXJpb2RIZWlnaHRTdG9yZQIFBWNoaWxkCQEGcGVyaW9kAQUFY2hpbGQBEWNhbmNlbEhlaWdodFN0b3JlAQVjaGlsZAkArAICAg5jYW5jZWxfaGVpZ2h0XwUFY2hpbGQBEGludmVzdG1lbnRzVG9rZW4BBWNoaWxkCQEHYXNzZXRJZAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVaW52ZXN0bWVudHNUb2tlblN0b3JlAQUFY2hpbGQCHmludmVzdG1lbnRzIGFzc2V0IGlkIG5vdCBmb3VuZAENdXNlclNraW5TdG9yZQIFY2hpbGQEdXNlcgkArAICCQCsAgIJAKwCAgIFc2tpbl8FBWNoaWxkAgFfBQR1c2VyARl1c2VyU2tpblVubG9ja1BlcmlvZFN0b3JlAgVjaGlsZAR1c2VyCQCsAgIJAKwCAgkArAICAhNza2luX3VubG9ja19wZXJpb2RfBQVjaGlsZAIBXwUEdXNlcgEbdXNlclNraW5FeGl0ZWRJblBlcmlvZFN0b3JlAwVjaGlsZAR1c2VyBnBlcmlvZAkArAICCQCsAgIJAKwCAgkBDXVzZXJTa2luU3RvcmUCBQVjaGlsZAUEdXNlcgIIX3BlcmlvZF8JAKQDAQUGcGVyaW9kAgdfZXhpdGVkAQ1pbnZlc3RvclN0b3JlAgVjaGlsZAhpbnZlc3RvcgkArAICCQCsAgIJAKwCAgIJaW52ZXN0b3JfBQVjaGlsZAIBXwUIaW52ZXN0b3IBGWNvbW1pdEFmdGVyQWRkcmVzc2VzU3RvcmUBBWNoaWxkCQCsAgICF2NvbW1pdF9hZnRlcl9hZGRyZXNzZXNfBQVjaGlsZAEVaW52ZXN0QWZ0ZXJTdGFydFN0b3JlAQVjaGlsZAkArAICAhdjYW5faW52ZXN0X2FmdGVyX3N0YXJ0XwUFY2hpbGQBEGFzc2VydE5vdFN0YXJ0ZWQBBWNoaWxkAwkBCWlzRGVmaW5lZAEJAJ8IAQkBEHN0YXJ0SGVpZ2h0U3RvcmUBBQVjaGlsZAkAAgECD2FscmVhZHkgc3RhcnRlZAcBD2Fzc2VydElzU3RhcnRlZAEFY2hpbGQDCQAAAgkBCWlzRGVmaW5lZAEJAJ8IAQkBEHN0YXJ0SGVpZ2h0U3RvcmUBBQVjaGlsZAcJAAIBAg9ub3QgeWV0IHN0YXJ0ZWQHARJhc3NlcnROb3RDYW5jZWxsZWQBBWNoaWxkAwkBCWlzRGVmaW5lZAEJAJ8IAQkBEWNhbmNlbEhlaWdodFN0b3JlAQUFY2hpbGQJAAIBAhBhbHJlYWR5IGNhbmNlbGVkBwEWYXNzZXJ0Tm90U3RhcnRlZFBlcmlvZAEFY2hpbGQDCQAAAgkBBnBlcmlvZAEFBWNoaWxkAAAJARBhc3NlcnROb3RTdGFydGVkAQUFY2hpbGQDCQEJaXNEZWZpbmVkAQkAnwgBCQEdc3RhcnRDdXJyZW50UGVyaW9kSGVpZ2h0U3RvcmUBBQVjaGlsZAkAAgECFnBlcmlvZCBhbHJlYWR5IHN0YXJ0ZWQHAQ51c2VyQ29tbWl0bWVudAIFY2hpbGQEdXNlcgkAnwgBCQENdXNlclNraW5TdG9yZQIFBWNoaWxkBQR1c2VyAQ9jdXJyZW50VXNlclNraW4CBWNoaWxkBHVzZXIJAQt2YWx1ZU9yRWxzZQIJAQ51c2VyQ29tbWl0bWVudAIFBWNoaWxkBQR1c2VyAAABCGxvY2tUaW1lAgVjaGlsZAZwZXJpb2QJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE3BlcmlvZExvY2tUaW1lU3RvcmUCBQVjaGlsZAUGcGVyaW9kCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBDWxvY2tUaW1lU3RvcmUBBQVjaGlsZAIRbm8gY2hpbGQgbG9ja1RpbWUBD2NvbXBsZXRlZFBlcmlvZAEFY2hpbGQEAXAJAQZwZXJpb2QBBQVjaGlsZAMJAAACBQFwAAAAAAQLcGVyaW9kU3RhcnQJAJ8IAQkBFnN0YXJ0UGVyaW9kSGVpZ2h0U3RvcmUCBQVjaGlsZAUBcAMJAQlpc0RlZmluZWQBBQtwZXJpb2RTdGFydAUBcAkAZQIFAXAAAQEMdW5sb2NrSGVpZ2h0AQVjaGlsZAQBcAkBD2NvbXBsZXRlZFBlcmlvZAEFBWNoaWxkBApjaGlsZFN0YXJ0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBEHN0YXJ0SGVpZ2h0U3RvcmUBBQVjaGlsZAIVbm8gY2hpbGQgc3RhcnQgaGVpZ2h0CQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWc3RhcnRQZXJpb2RIZWlnaHRTdG9yZQIFBWNoaWxkBQFwBQpjaGlsZFN0YXJ0CQEIbG9ja1RpbWUCBQVjaGlsZAUBcAEIdHJlYXN1cnkBBWNoaWxkCQELdmFsdWVPckVsc2UCCQCiCAEJAQ10cmVhc3VyeVN0b3JlAQUFY2hpbGQFBWNoaWxkAQNpbnQBA2tleQkApAMBCQELdmFsdWVPckVsc2UCCQCfCAEFA2tleQAAAQNzdHIBA2tleQkBC3ZhbHVlT3JFbHNlAgkAoggBBQNrZXkCAAENYWR2aXNlUHJvamVjdAEFY2hpbGQEAXAJAQZwZXJpb2QBBQVjaGlsZAQJcGVyaW9kU3RyCQCkAwEFAXAJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCGhlaWdodDogCQCkAwEFBkhFSUdIVAILLCBwcm9qZWN0OiAFBWNoaWxkAgksIG93bmVyOiAJAQNzdHIBCQEKb3duZXJTdG9yZQEFBWNoaWxkAgwsIHRyZWFzdXJ5OiAJAQh0cmVhc3VyeQEFBWNoaWxkAg0sIGxvY2tfdGltZTogCQEDaW50AQkBDWxvY2tUaW1lU3RvcmUBBQVjaGlsZAIRLCBza2luX3JlcXVpcmVkOiAJAQNpbnQBCQERc2tpblJlcXVpcmVkU3RvcmUBBQVjaGlsZAIMLCBza2luX21heDogCQEDaW50AQkBDHNraW5NYXhTdG9yZQEFBWNoaWxkAhIsIG1pbl9jb21taXRtZW50OiAJAQNpbnQBCQESbWluQ29tbWl0bWVudFN0b3JlAQUFY2hpbGQCDiwgc2tpbl90b3RhbDogCQEDaW50AQkBDnNraW5Ub3RhbFN0b3JlAQUFY2hpbGQCGCwgaW52ZXN0bWVudHNfcmVxdWlyZWQ6IAkBA2ludAEJARhpbnZlc3RtZW50c1JlcXVpcmVkU3RvcmUBBQVjaGlsZAITLCBpbnZlc3RtZW50c19tYXg6IAkBA2ludAEJARNpbnZlc3RtZW50c01heFN0b3JlAQUFY2hpbGQCFSwgaW52ZXN0bWVudHNfdG90YWw6IAkBA2ludAEJARVpbnZlc3RtZW50c1RvdGFsU3RvcmUBBQVjaGlsZAIVLCBpbnZlc3RtZW50c190b2tlbjogCQEDc3RyAQkBFWludmVzdG1lbnRzVG9rZW5TdG9yZQEFBWNoaWxkAg8sIGNvbW1pdG1lbnRzOiAJAQNzdHIBCQEQY29tbWl0bWVudHNTdG9yZQEFBWNoaWxkAhEsIGNyZWF0ZV9oZWlnaHQ6IAkBA2ludAEJARFjcmVhdGVIZWlnaHRTdG9yZQEFBWNoaWxkAhAsIHN0YXJ0X2hlaWdodDogCQCkAwEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEHN0YXJ0SGVpZ2h0U3RvcmUBBQVjaGlsZAD///////////8BAhEsIGNhbmNlbF9oZWlnaHQ6IAkApAMBCQELdmFsdWVPckVsc2UCCQCfCAEJARFjYW5jZWxIZWlnaHRTdG9yZQEFBWNoaWxkAP///////////wECCiwgcGVyaW9kOiAFCXBlcmlvZFN0cgIJLCBwZXJpb2RfBQlwZXJpb2RTdHICFV9zdGFydF9hZnRlcl9oZWlnaHQ6IAkApAMBCQELdmFsdWVPckVsc2UCCQCfCAEJARtzdGFydFBlcmlvZEFmdGVySGVpZ2h0U3RvcmUCBQVjaGlsZAUBcAD///////////8BAgksIHBlcmlvZF8FCXBlcmlvZFN0cgIPX3N0YXJ0X2hlaWdodDogCQCkAwEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBHXN0YXJ0Q3VycmVudFBlcmlvZEhlaWdodFN0b3JlAQUFY2hpbGQA////////////AQIJLCBwZXJpb2RfBQlwZXJpb2RTdHICDF9sb2NrX3RpbWU6IAkApAMBCQEIbG9ja1RpbWUCBQVjaGlsZAUBcAIRLCB1bmxvY2tfaGVpZ2h0OiAJAKQDAQkBDHVubG9ja0hlaWdodAEFBWNoaWxkAhwsIHBlcmlvZF9pbnZlc3RtZW50c190b3RhbDogCQEDaW50AQkBG2ludmVzdG1lbnRzUGVyaW9kVG90YWxTdG9yZQEFBWNoaWxkARFhZHZpc2VVc2VyUHJvamVjdAIFY2hpbGQEdXNlcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIIaGVpZ2h0OiAJAKQDAQUGSEVJR0hUAgssIHByb2plY3Q6IAUFY2hpbGQCBywgc2tpbjoJAKQDAQkBD2N1cnJlbnRVc2VyU2tpbgIFBWNoaWxkBQR1c2VyAggsIHBvd2VyOgkApAMBCQELdmFsdWVPckVsc2UCCQEOdXNlckNvbW1pdG1lbnQCBQVjaGlsZAUEdXNlcgAAAg8sIGludmVzdG1lbnRzOiAJAQNpbnQBCQENaW52ZXN0b3JTdG9yZQIFBWNoaWxkBQR1c2VyARtjb21taXRBZnRlclN0YXJ0Rm9ySW50ZXJuYWwEAWkFY2hpbGQHYWRkcmVzcxRhZGRpdGlvbmFsTG9ja1JvdW5kcwQBYQkBB2FsbG93ZWQBAhNjb21taXRBZnRlclN0YXJ0Rm9yAwkAAAIFAWEFAWEDCQBmAgAABRRhZGRpdGlvbmFsTG9ja1JvdW5kcwkAAgECHGludmFsaWQgYWRkaXRpb25hbExvY2tSb3VuZHMDCQEBIQEJAQhjb250YWlucwIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBGWNvbW1pdEFmdGVyQWRkcmVzc2VzU3RvcmUBBQVjaGlsZAIACQClCAEIBQFpBmNhbGxlcgkAAgECI2NvbW1pdEFmdGVyU3RhcnRGb3JJbnRlcm5hbC4gZGVuaWVkBAFwCQCRAwIIBQFpCHBheW1lbnRzAAADAwkBAiE9AggFAXAHYXNzZXRJZAUKcHdyQXNzZXRJZAYJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECKmludmFsaWQgcGF5bWVudHM6IG9ubHkgJFBXUiB0b2tlbiBleHBlY3RlZAQKY29tbWl0bWVudAgFAXAGYW1vdW50BARjbWRzCQDMCAIJAQhjaGFuZ2VCeQIJAQ11c2VyU2tpblN0b3JlAgUFY2hpbGQFB2FkZHJlc3MFCmNvbW1pdG1lbnQJAMwIAgkBCGNoYW5nZUJ5AgkBDnNraW5Ub3RhbFN0b3JlAQUFY2hpbGQFCmNvbW1pdG1lbnQJAMwIAgkBCGNoYW5nZUJ5AgUNcHdyVG90YWxTdG9yZQUKY29tbWl0bWVudAUDbmlsAwkAZgIFFGFkZGl0aW9uYWxMb2NrUm91bmRzAAAEC3VubG9ja1JvdW5kCQBkAgkBBnBlcmlvZAEFBWNoaWxkBRRhZGRpdGlvbmFsTG9ja1JvdW5kcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGXVzZXJTa2luVW5sb2NrUGVyaW9kU3RvcmUCBQVjaGlsZAUHYWRkcmVzcwULdW5sb2NrUm91bmQFBGNtZHMFBGNtZHMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4UAWkBCnByb2plY3RGb3ILBW93bmVyBHNraW4HbWF4U2tpbg1taW5Db21taXRtZW50CGxvY2tUaW1lC2ludmVzdG1lbnRzDm1heEludmVzdG1lbnRzEGludmVzdG1lbnRzVG9rZW4LY29tbWl0bWVudHMFY2hpbGQLYXR0YWNobWVudHMEAWEJAQdhbGxvd2VkAQIKcHJvamVjdEZvcgMJAAACBQFhBQFhAwkBASEBCQEIY29udGFpbnMCBQ1tYWluQWRkcmVzc2VzCQClCAEIBQFpBmNhbGxlcgkAAgECBmRlbmllZAQBdAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFBWNoaWxkAhhpbnZhbGlkIHRyZWFzdXJ5IGFkZHJlc3MDCQAAAgUBdAUBdAQFdG9rZW4JAQdhc3NldElkAQUQaW52ZXN0bWVudHNUb2tlbgMJAAACBQV0b2tlbgUFdG9rZW4DAwkAZgIFB21heFNraW4AAAkAZgIFBHNraW4FB21heFNraW4HCQACAQIPaW52YWxpZCBtYXhTa2luAwMJAGYCBQ5tYXhJbnZlc3RtZW50cwAACQBmAgULaW52ZXN0bWVudHMFDm1heEludmVzdG1lbnRzBwkAAgECFmludmFsaWQgbWF4SW52ZXN0bWVudHMJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCCQEKb3duZXJTdG9yZQEFBWNoaWxkBQVvd25lcgkAzAgCCQEId3JpdGVJbnQCCQERY3JlYXRlSGVpZ2h0U3RvcmUBBQVjaGlsZAUGSEVJR0hUCQDMCAIJAQh3cml0ZUludAIJARFza2luUmVxdWlyZWRTdG9yZQEFBWNoaWxkBQRza2luCQDMCAIJAQh3cml0ZUludAIJAQxza2luTWF4U3RvcmUBBQVjaGlsZAUHbWF4U2tpbgkAzAgCCQEId3JpdGVJbnQCCQESbWluQ29tbWl0bWVudFN0b3JlAQUFY2hpbGQFDW1pbkNvbW1pdG1lbnQJAMwIAgkBCHdyaXRlSW50AgkBDWxvY2tUaW1lU3RvcmUBBQVjaGlsZAUIbG9ja1RpbWUJAMwIAgkBCHdyaXRlSW50AgkBGGludmVzdG1lbnRzUmVxdWlyZWRTdG9yZQEFBWNoaWxkBQtpbnZlc3RtZW50cwkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwIJARVpbnZlc3RtZW50c1Rva2VuU3RvcmUBBQVjaGlsZAUQaW52ZXN0bWVudHNUb2tlbgkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwIJARBjb21taXRtZW50c1N0b3JlAQUFY2hpbGQFC2NvbW1pdG1lbnRzCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgkBDXRyZWFzdXJ5U3RvcmUBBQVjaGlsZAUFY2hpbGQJAMwIAgkBCHdyaXRlSW50AgkBE2ludmVzdG1lbnRzTWF4U3RvcmUBBQVjaGlsZAUObWF4SW52ZXN0bWVudHMJAMwIAgkBC3dyaXRlQmluYXJ5AgkBEGF0dGFjaG1lbnRzU3RvcmUBBQVjaGlsZAULYXR0YWNobWVudHMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9lZGl0QXR0YWNobWVudHMCBWNoaWxkC2F0dGFjaG1lbnRzBAFhCQEHYWxsb3dlZAECD2VkaXRBdHRhY2htZW50cwMJAAACBQFhBQFhBAFzCQESYXNzZXJ0Tm90Q2FuY2VsbGVkAQUFY2hpbGQDCQAAAgUBcwUBcwkAzAgCCQELd3JpdGVCaW5hcnkCCQEQYXR0YWNobWVudHNTdG9yZQEFBWNoaWxkBQthdHRhY2htZW50cwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWluY3JlcmFzZVNraW4CBWNoaWxkDXNraW5JbmNyZW1lbnQEAWEJAQdhbGxvd2VkAQINaW5jcmVyYXNlU2tpbgMJAAACBQFhBQFhBAFzAwkBEGFzc2VydE5vdFN0YXJ0ZWQBBQVjaGlsZAkBEmFzc2VydE5vdENhbmNlbGxlZAEFBWNoaWxkBwMJAAACBQFzBQFzAwkAZwIAAAUNc2tpbkluY3JlbWVudAkAAgECMmludmFsaWQgYXJndW1lbnQ6IHNraW5JbmNyZW1lbnQgc2hvdWxkIGJlIHBvc2l0aXZlBAVvd25lcgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBCm93bmVyU3RvcmUBBQVjaGlsZAMJAQIhPQIJAKUIAQgFAWkGY2FsbGVyBQVvd25lcgkAAgECBmRlbmllZAkAzAgCCQEIY2hhbmdlQnkCCQERc2tpblJlcXVpcmVkU3RvcmUBBQVjaGlsZAUNc2tpbkluY3JlbWVudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCWNvbW1pdEZvcgIFY2hpbGQHYWRkcmVzcwQBYQkBB2FsbG93ZWQBAgljb21taXRGb3IDCQAAAgUBYQUBYQQBcwkBFmFzc2VydE5vdFN0YXJ0ZWRQZXJpb2QBBQVjaGlsZAMJAAACBQFzBQFzBAFwCQCRAwIIBQFpCHBheW1lbnRzAAADCQECIT0CCAUBcAdhc3NldElkBQpwd3JBc3NldElkCQACAQIvaW52YWxpZCBhdHRhY2hlZCBwYXltZW50OiAkcG93ZXIgdG9rZW4gZXhwZWN0ZWQECmNvbW1pdG1lbnQIBQFwBmFtb3VudAQNbWluQ29tbWl0bWVudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJARJtaW5Db21taXRtZW50U3RvcmUBBQVjaGlsZAITQ2hpbGQgREFPIG5vdCBmb3VuZAMJAGYCBQ1taW5Db21taXRtZW50BQpjb21taXRtZW50CQACAQkArAICAhNNaW4uIGNvbW1pdG1lbnQgaXMgCQCkAwEFDW1pbkNvbW1pdG1lbnQED3NraW5Ub3RhbFN0b3JlMQkBDnNraW5Ub3RhbFN0b3JlAQUFY2hpbGQEDG5ld1NraW5Ub3RhbAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPc2tpblRvdGFsU3RvcmUxAAAFCmNvbW1pdG1lbnQEB3NraW5NYXgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDHNraW5NYXhTdG9yZQEFBWNoaWxkAAAEDHNraW5SZXF1aXJlZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQERc2tpblJlcXVpcmVkU3RvcmUBBQVjaGlsZAAAAwMDCQBmAgUHc2tpbk1heAAABgkAAAIFDHNraW5SZXF1aXJlZAAACQBmAgUMbmV3U2tpblRvdGFsBQdza2luTWF4BwkAAgEJAKwCAgIcVG90YWwgbWF4LiBza2luIGlzIHJlYWNoZWQ6IAkApAMBBQdza2luTWF4CQDMCAIJAQhjaGFuZ2VCeQIJAQ11c2VyU2tpblN0b3JlAgUFY2hpbGQFB2FkZHJlc3MFCmNvbW1pdG1lbnQJAMwIAgkBDEludGVnZXJFbnRyeQIFD3NraW5Ub3RhbFN0b3JlMQUMbmV3U2tpblRvdGFsCQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUFCmNvbW1pdG1lbnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb21taXRGb3JNaW5lcgIFY2hpbGQHYWRkcmVzcwQBYQkBB2FsbG93ZWQBAg5jb21taXRGb3JNaW5lcgMJAAACBQFhBQFhAwkBASEBCQEIY29udGFpbnMCBQ1tYWluQWRkcmVzc2VzCQClCAEIBQFpBmNhbGxlcgkAAgECBmRlbmllZAQBcAkAkQMCCAUBaQhwYXltZW50cwAAAwMJAQIhPQIIBQFwB2Fzc2V0SWQFCnB3ckFzc2V0SWQGCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAippbnZhbGlkIHBheW1lbnRzOiBvbmx5ICRQV1IgdG9rZW4gZXhwZWN0ZWQECmNvbW1pdG1lbnQIBQFwBmFtb3VudAkAzAgCCQEIY2hhbmdlQnkCCQENdXNlclNraW5TdG9yZQIFBWNoaWxkBQdhZGRyZXNzBQpjb21taXRtZW50CQDMCAIJAQhjaGFuZ2VCeQIJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkBQpjb21taXRtZW50CQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUFCmNvbW1pdG1lbnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARNjb21taXRBZnRlclN0YXJ0Rm9yAgVjaGlsZAdhZGRyZXNzCQEbY29tbWl0QWZ0ZXJTdGFydEZvckludGVybmFsBAUBaQUFY2hpbGQFB2FkZHJlc3MAAAFpASBjb21taXRBZnRlclN0YXJ0V2l0aExvY2tSb3VuZEZvcgMFY2hpbGQHYWRkcmVzcxRhZGRpdGlvbmFsTG9ja1JvdW5kcwkBG2NvbW1pdEFmdGVyU3RhcnRGb3JJbnRlcm5hbAQFAWkFBWNoaWxkBQdhZGRyZXNzBRRhZGRpdGlvbmFsTG9ja1JvdW5kcwFpAQZpbnZlc3QBBWNoaWxkBAFhCQEHYWxsb3dlZAECBmludmVzdAMJAAACBQFhBQFhBAFzCQEWYXNzZXJ0Tm90U3RhcnRlZFBlcmlvZAEFBWNoaWxkAwkAAAIFAXMFAXMEBXRva2VuCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQV0b2tlbgkAAgECHGludmFsaWQgaW52ZXN0bWVudHMgYXNzZXQgaWQEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEB21heGltdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2ludmVzdG1lbnRzTWF4U3RvcmUBBQVjaGlsZAAACgEFZGF0YXMBAWEJAMwIAgkBCGNoYW5nZUJ5AgkBDWludmVzdG9yU3RvcmUCBQVjaGlsZAkApQgBCAUBaQZjYWxsZXIFAWEJAMwIAgkBCGNoYW5nZUJ5AgkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkBQFhCQDMCAIJAQhjaGFuZ2VCeQIJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAUBYQUDbmlsAwkAZgIFB21heGltdW0AAAQKdG90YWxTdG9yZQkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkBAV0b3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQp0b3RhbFN0b3JlAAAECmludmVzdG1lbnMJAJcDAQkAzAgCBQZhbW91bnQJAMwIAgkAZQIFB21heGltdW0FBXRvdGFsBQNuaWwDCQBnAgAABQppbnZlc3RtZW5zCQACAQkArAICAiNUb3RhbCBtYXguIGludmVzdG1lbnRzIGlzIHJlYWNoZWQ6IAkApAMBBQdtYXhpbXVtBApjaGFyZ2VCYWNrCQBlAgUGYW1vdW50BQppbnZlc3RtZW5zAwkAZgIFCmNoYXJnZUJhY2sAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCmNoYXJnZUJhY2sFBXRva2VuCQEFZGF0YXMBBQppbnZlc3RtZW5zCQEFZGF0YXMBBQppbnZlc3RtZW5zCQEFZGF0YXMBBQZhbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQaW52ZXN0QWZ0ZXJTdGFydAEFY2hpbGQEAWEJAQdhbGxvd2VkAQIQaW52ZXN0QWZ0ZXJTdGFydAMJAAACBQFhBQFhAwkAAAIJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBFWludmVzdEFmdGVyU3RhcnRTdG9yZQEFBWNoaWxkBwcJAAIBAhlkZW5pZWQgKGludmVzdEFmdGVyU3RhcnQpBAFzCQEPYXNzZXJ0SXNTdGFydGVkAQUFY2hpbGQDCQAAAgUBcwUBcwMJAGYCCQEGcGVyaW9kAQUFY2hpbGQAAAkAAgECFmluaXRpYWwgcm91bmQgaXMgZW5kZWQEBXRva2VuCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQV0b2tlbgkAAgECHGludmFsaWQgaW52ZXN0bWVudHMgYXNzZXQgaWQEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkBCGNoYW5nZUJ5AgkBDWludmVzdG9yU3RvcmUCBQVjaGlsZAkApQgBCAUBaQZjYWxsZXIFBmFtb3VudAkAzAgCCQEIY2hhbmdlQnkCCQEVaW52ZXN0bWVudHNUb3RhbFN0b3JlAQUFY2hpbGQFBmFtb3VudAkAzAgCCQEIY2hhbmdlQnkCCQEbaW52ZXN0bWVudHNQZXJpb2RUb3RhbFN0b3JlAQUFY2hpbGQFBmFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEIdHJlYXN1cnkBBQVjaGlsZAUGYW1vdW50CQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3RhcnQBBWNoaWxkBAZwYXVzZWQJAQdhbGxvd2VkAQIFc3RhcnQDCQAAAgUGcGF1c2VkBQZwYXVzZWQEAXMDCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkCQESYXNzZXJ0Tm90Q2FuY2VsbGVkAQUFY2hpbGQHAwkAAAIFAXMFAXMECXRvdGFsU2tpbgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAAABAxza2luUmVxdWlyZWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQERc2tpblJlcXVpcmVkU3RvcmUBBQVjaGlsZAIUY2hpbGQgbm90IHJlZ2lzdGVyZWQDCQBmAgUMc2tpblJlcXVpcmVkBQl0b3RhbFNraW4JAAIBAhtub3QgZW5vdWdoIHNraW4gaW4gdGhlIGdhbWUEEHRvdGFsSW52ZXN0bWVudHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkAAADCQBmAgkBEUBleHRyTmF0aXZlKDEwNTUpAQkBGGludmVzdG1lbnRzUmVxdWlyZWRTdG9yZQEFBWNoaWxkBRB0b3RhbEludmVzdG1lbnRzCQACAQIWbm90IGVub3VnaCBpbnZlc3RtZW50cwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEHN0YXJ0SGVpZ2h0U3RvcmUBBQVjaGlsZAUGSEVJR0hUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQh0cmVhc3VyeQEFBWNoaWxkBRB0b3RhbEludmVzdG1lbnRzCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOaW5pdE5leHRQZXJpb2QDBWNoaWxkE2Jsb2NrQmV0d2VlblBlcmlvZHMIbG9ja1RpbWUEBnBhdXNlZAkBB2FsbG93ZWQBAg5pbml0TmV4dFBlcmlvZAMJAAACBQZwYXVzZWQFBnBhdXNlZAMDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBCm93bmVyU3RvcmUBBQVjaGlsZAkBAiE9AggFAWkGY2FsbGVyBQR0aGlzBwkAAgECBmRlbmllZAMJAGYCAAAFE2Jsb2NrQmV0d2VlblBlcmlvZHMJAAIBAi5ibG9ja0JldHdlZW5QZXJpb2RzIHNob3VsZCBiZSBwb3NpdGl2ZSBvciB6ZXJvAwkAZgIAAQUIbG9ja1RpbWUJAAIBAhtsb2NrVGltZSBzaG91bGQgYmUgcG9zaXRpdmUEDXVubG9ja0hlaWdodF8JAQx1bmxvY2tIZWlnaHQBBQVjaGlsZAMJAGYCBQ11bmxvY2tIZWlnaHRfBQZIRUlHSFQJAAIBAh5jdXJyZW50IHBlcmlvZCBpcyBzdGlsbCBhY3RpdmUEAXAJAQZwZXJpb2QBBQVjaGlsZAMDCQBmAgUBcAAACQEBIQEJAQlpc0RlZmluZWQBCQEWc3RhcnRQZXJpb2RIZWlnaHRTdG9yZQIFBWNoaWxkBQFwBwkAAgECH25leHQgcGVyaW9kIGFscmVhZHkgaW5pdGlhbGl6ZWQECW5ld1BlcmlvZAkAZAIFAXAAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBC3BlcmlvZFN0b3JlAQUFY2hpbGQFCW5ld1BlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBG3N0YXJ0UGVyaW9kQWZ0ZXJIZWlnaHRTdG9yZQIFBWNoaWxkBQluZXdQZXJpb2QJAGQCBQ11bmxvY2tIZWlnaHRfBRNibG9ja0JldHdlZW5QZXJpb2RzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETcGVyaW9kTG9ja1RpbWVTdG9yZQIFBWNoaWxkBQluZXdQZXJpb2QFCGxvY2tUaW1lBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELc3RhcnRQZXJpb2QBBWNoaWxkBAZwYXVzZWQJAQdhbGxvd2VkAQILc3RhcnRQZXJpb2QDCQAAAgUGcGF1c2VkBQZwYXVzZWQEAXMJARZhc3NlcnROb3RTdGFydGVkUGVyaW9kAQUFY2hpbGQDCQAAAgUBcwUBcwQHcGVyaW9kXwkBBnBlcmlvZAEFBWNoaWxkBA9zdGFydEFmdGVyU3RvcmUJARtzdGFydFBlcmlvZEFmdGVySGVpZ2h0U3RvcmUCBQVjaGlsZAUHcGVyaW9kXwQKc3RhcnRBZnRlcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFD3N0YXJ0QWZ0ZXJTdG9yZQkArAICAg9rZXkgbm90IGZvdW5kOiAFD3N0YXJ0QWZ0ZXJTdG9yZQMJAGYCBQpzdGFydEFmdGVyBQZIRUlHSFQJAAIBAgl0b28gZWFybHkECXRvdGFsU2tpbgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAAABAxza2luUmVxdWlyZWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQERc2tpblJlcXVpcmVkU3RvcmUBBQVjaGlsZAIUY2hpbGQgbm90IHJlZ2lzdGVyZWQDCQBmAgUMc2tpblJlcXVpcmVkBQl0b3RhbFNraW4JAAIBAhtub3QgZW5vdWdoIHNraW4gaW4gdGhlIGdhbWUEEXBlcmlvZEludmVzdG1lbnRzCQELdmFsdWVPckVsc2UCCQCfCAEJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEdc3RhcnRDdXJyZW50UGVyaW9kSGVpZ2h0U3RvcmUBBQVjaGlsZAUGSEVJR0hUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBWNoaWxkBRFwZXJpb2RJbnZlc3RtZW50cwkBEGludmVzdG1lbnRzVG9rZW4BBQVjaGlsZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXNsYXNoAgVjaGlsZAZhbW91bnQEBnBhdXNlZAkBB2FsbG93ZWQBAgEvAwkAAAIFBnBhdXNlZAUGcGF1c2VkAwkBASEBCQEIY29udGFpbnMCBQhzbGFzaGVycwkApQgBCAUBaQZjYWxsZXIJAAIBAgZkZW5pZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQJAAIBAgtub3Qgc3RhcnRlZAkAzAgCCQEIY2hhbmdlQnkCCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAkBAS0BBQZhbW91bnQJAMwIAgkBBEJ1cm4CBQpwd3JBc3NldElkBQZhbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtjb21wbGV0ZUZvcgIFY2hpbGQEdXNlcgMJAQEhAQkBCGNvbnRhaW5zAgUNbWFpbkFkZHJlc3NlcwkApQgBCAUBaQZjYWxsZXIJAAIBAgZkZW5pZWQEDXVubG9ja0hlaWdodF8JAQx1bmxvY2tIZWlnaHQBBQVjaGlsZAMJAGYCBQ11bmxvY2tIZWlnaHRfBQZIRUlHSFQJAAIBAgxzdGlsbCBsb2NrZWQEC2VuZGVkUGVyaW9kCQEPY29tcGxldGVkUGVyaW9kAQUFY2hpbGQEC3VubG9ja1JvdW5kCQELdmFsdWVPckVsc2UCCQCfCAEJARl1c2VyU2tpblVubG9ja1BlcmlvZFN0b3JlAgUFY2hpbGQFBHVzZXIAAAMJAGYCBQt1bmxvY2tSb3VuZAULZW5kZWRQZXJpb2QJAAIBCQCsAgIJAKwCAgISeW91IGNhbiB1bmxvY2sgb24gCQCkAwEFC3VubG9ja1JvdW5kAgYgcm91bmQEBHNraW4JAQ9jdXJyZW50VXNlclNraW4CBQVjaGlsZAUEdXNlcgMJAAACBQRza2luAAAJAAIBAht5b3UgaGFkIG5vIHNraW4gaW4gdGhlIGdhbWUJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBHNraW4FCnB3ckFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDXVzZXJTa2luU3RvcmUCBQVjaGlsZAUEdXNlcgkAzAgCCQEIY2hhbmdlQnkCCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAkBAS0BBQRza2luCQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUJAQEtAQUEc2tpbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBG3VzZXJTa2luRXhpdGVkSW5QZXJpb2RTdG9yZQMFBWNoaWxkBQR1c2VyBQtlbmRlZFBlcmlvZAUEc2tpbgUDbmlsBQRza2luAWkBBmNhbmNlbAEFY2hpbGQEBnBhdXNlZAkBB2FsbG93ZWQBAgZjYW5jZWwDCQAAAgUGcGF1c2VkBQZwYXVzZWQEAXMDCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkBgkBEmFzc2VydE5vdENhbmNlbGxlZAEFBWNoaWxkAwkAAAIFAXMFAXMDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBCm93bmVyU3RvcmUBBQVjaGlsZAkAAgECFGRlbmllZC4gbm90IGFuIG93bmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQERY2FuY2VsSGVpZ2h0U3RvcmUBBQVjaGlsZAUGSEVJR0hUBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKdW5kb0ludmVzdAEFY2hpbGQEBnBhdXNlZAkBB2FsbG93ZWQBAgp1bmRvSW52ZXN0AwkAAAIFBnBhdXNlZAUGcGF1c2VkBAFzCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkAwkAAAIFAXMFAXMEEWludmVzdG1lbnRzU3RvcmUxCQENaW52ZXN0b3JTdG9yZQIFBWNoaWxkCQClCAEIBQFpBmNhbGxlcgQLaW52ZXN0bWVudHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQURaW52ZXN0bWVudHNTdG9yZTEAAAMJAAACBQtpbnZlc3RtZW50cwAACQACAQIObm8gaW52ZXN0bWVudHMJAMwIAgkBC0RlbGV0ZUVudHJ5AQURaW52ZXN0bWVudHNTdG9yZTEJAMwIAgkBCGNoYW5nZUJ5AgkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkCQEBLQEFC2ludmVzdG1lbnRzCQDMCAIJAQhjaGFuZ2VCeQIJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAkBAS0BBQtpbnZlc3RtZW50cwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC2ludmVzdG1lbnRzCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdW5kb0NvbW1pdEZvcgIFY2hpbGQHYWRkcmVzcwQGcGF1c2VkCQEHYWxsb3dlZAECDXVuZG9Db21taXRGb3IDCQAAAgUGcGF1c2VkBQZwYXVzZWQDCQEBIQEJAQhjb250YWlucwIFDW1haW5BZGRyZXNzZXMJAKUIAQgFAWkGY2FsbGVyCQACAQIGZGVuaWVkBAFzCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkAwkAAAIFAXMFAXMEDnVzZXJTa2luU3RvcmUxCQENdXNlclNraW5TdG9yZQIFBWNoaWxkBQdhZGRyZXNzBARza2luCQELdmFsdWVPckVsc2UCCQCfCAEFDnVzZXJTa2luU3RvcmUxAAADCQAAAgUEc2tpbgAACQACAQIHbm8gc2tpbgkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEFDnVzZXJTa2luU3RvcmUxCQDMCAIJAQhjaGFuZ2VCeQIJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkCQEBLQEFBHNraW4JAMwIAgkBCGNoYW5nZUJ5AgUNcHdyVG90YWxTdG9yZQkBAS0BBQRza2luCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUEc2tpbgUKcHdyQXNzZXRJZAUDbmlsBQRza2luCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCXVzZXJQb3dlcgIFY2hpbGQEdXNlcgkAlAoCBQNuaWwJAQt2YWx1ZU9yRWxzZQIJAQ51c2VyQ29tbWl0bWVudAIFBWNoaWxkBQR1c2VyAAABaQEKdG90YWxQb3dlcgEFY2hpbGQJAJQKAgUDbmlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBDnNraW5Ub3RhbFN0b3JlAQUFY2hpbGQCG3RvdGFsUG93ZXI6IGNoaWxkIG5vdCBmb3VuZAFpAQRpbml0AQRjb25mCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgUSY29uZmlnQWRkcmVzc1N0b3JlBQRjb25mBQNuaWwAQh0aSw==", "chainId": 87, "height": 3953954, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9NrsdWfZ4gBPV4wANgeGT4Li4VetVwZP67uGu396okvk Next: 2JWCbWDoUMjRYjAH1hrDFBf1rbNS5K3cQcedh4bUvG5Q Diff:
OldNewDifferences
1111 else IntegerEntry(b, c)
1212
1313
14-func e (b,c) = d(b, (valueOrElse(getInteger(this, b), 0) + c))
14+func e (b,c) = BinaryEntry(b, c)
1515
1616
17-func f (c) = {
18- let g = c
19- if ($isInstanceOf(g, "Int"))
17+func f (b,c) = d(b, (valueOrElse(getInteger(this, b), 0) + c))
18+
19+
20+func g (c) = {
21+ let h = c
22+ if ($isInstanceOf(h, "Int"))
2023 then {
21- let h = g
22- h
24+ let i = h
25+ i
2326 }
2427 else throw("wrong type, expected: Int")
2528 }
2629
2730
28-func i (j) = if ((j == "WAVES"))
31+func j (k) = if ((k == "WAVES"))
2932 then unit
30- else fromBase58String(j)
33+ else fromBase58String(k)
3134
3235
33-let k = "config"
36+let l = "config"
3437
35-let l = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, k), "children: config address not found")), "invalid config address")
38+let m = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, l), "children: config address not found")), "invalid config address")
3639
37-func m (n) = invoke(l, "opAllowed", [n], nil)
40+func n (o) = invoke(m, "opAllowed", [o], nil)
3841
3942
40-let o = height
43+let p = height
4144
42-let p = fromBase58String(valueOrErrorMessage(getString(l, "powerAssetId"), "pwr asset id not found"))
45+let q = fromBase58String(valueOrErrorMessage(getString(m, "powerAssetId"), "pwr asset id not found"))
4346
44-let q = valueOrElse(getString(l, (toString(this) + "_slashers")), "")
47+let r = valueOrElse(getString(m, (toString(this) + "_slashers")), "")
4548
46-let r = valueOrElse(getString(l, "main_addresses"), "")
49+let s = valueOrElse(getString(m, "main_addresses"), "")
4750
48-func s (t) = ("period_" + t)
51+func t (u) = ("period_" + u)
4952
5053
51-func u (t) = valueOrElse(getInteger(s(t)), 0)
54+func v (u) = valueOrElse(getInteger(t(u)), 0)
5255
5356
54-func v (t) = ("owner_" + t)
57+func w (u) = ("owner_" + u)
5558
5659
57-func w (t) = ("treasury_" + t)
60+func x (u) = ("treasury_" + u)
5861
5962
60-func x (t) = ("lockTime_" + t)
63+func y (u) = ("lockTime_" + u)
6164
6265
63-func y (t,u) = ((("period_" + toString(u)) + "_lockTime_") + t)
66+func z (u,v) = ((("period_" + toString(v)) + "_lockTime_") + u)
6467
6568
66-func z (t) = ("skin_required_" + t)
69+func A (u) = ("skin_required_" + u)
6770
6871
69-func A (t) = ("skin_max_" + t)
72+func B (u) = ("skin_max_" + u)
7073
7174
72-func B (t) = ("investments_max_" + t)
75+func C (u) = ("investments_max_" + u)
7376
7477
75-func C (t) = ("min_commitment" + t)
78+func D (u) = ("min_commitment" + u)
7679
7780
78-func D (t) = ("skin_total_" + t)
81+func E (u) = ("skin_total_" + u)
7982
8083
81-let E = "pwr_total"
84+let F = "pwr_total"
8285
83-func F (t) = ("investments_required_" + t)
86+func G (u) = ("investments_required_" + u)
8487
8588
86-func G (t) = ("investments_total_" + t)
89+func H (u) = ("investments_total_" + u)
8790
8891
89-func H (t) = ((("period_" + toString(u(t))) + "_investments_total_") + t)
92+func I (u) = ((("period_" + toString(v(u))) + "_investments_total_") + u)
9093
9194
92-func I (t) = ("investments_token_" + t)
95+func J (u) = ("investments_token_" + u)
9396
9497
95-func J (t) = ("commitments_" + t)
98+func K (u) = ("commitments_" + u)
9699
97100
98-func K (t) = ("create_height_" + t)
101+func L (u) = ("attachments_" + u)
99102
100103
101-func L (t) = ("start_height_" + t)
104+func M (u) = ("create_height_" + u)
102105
103106
104-func M (t,u) = ((("period_" + toString(u)) + "_start_height_") + t)
107+func N (u) = ("start_height_" + u)
105108
106109
107-func N (t,u) = ((("period_" + toString(u)) + "_start_after_height_") + t)
110+func O (u,v) = ((("period_" + toString(v)) + "_start_height_") + u)
108111
109112
110-func O (t) = M(t, u(t))
113+func P (u,v) = ((("period_" + toString(v)) + "_start_after_height_") + u)
111114
112115
113-func P (t) = ("cancel_height_" + t)
116+func Q (u) = O(u, v(u))
114117
115118
116-func Q (t) = i(valueOrErrorMessage(getString(I(t)), "investments asset id not found"))
119+func R (u) = ("cancel_height_" + u)
117120
118121
119-func R (t,S) = ((("skin_" + t) + "_") + S)
122+func S (u) = j(valueOrErrorMessage(getString(J(u)), "investments asset id not found"))
120123
121124
122-func T (t,S) = ((("skin_unlock_period_" + t) + "_") + S)
125+func T (u,U) = ((("skin_" + u) + "_") + U)
123126
124127
125-func U (t,S,u) = (((R(t, S) + "_period_") + toString(u)) + "_exited")
128+func V (u,U) = ((("skin_unlock_period_" + u) + "_") + U)
126129
127130
128-func V (t,W) = ((("investor_" + t) + "_") + W)
131+func W (u,U,v) = (((T(u, U) + "_period_") + toString(v)) + "_exited")
129132
130133
131-func X (t) = ("commit_after_addresses_" + t)
134+func X (u,Y) = ((("investor_" + u) + "_") + Y)
132135
133136
134-func Y (t) = ("can_invest_after_start_" + t)
137+func Z (u) = ("commit_after_addresses_" + u)
135138
136139
137-func Z (t) = if (isDefined(getInteger(L(t))))
140+func aa (u) = ("can_invest_after_start_" + u)
141+
142+
143+func ab (u) = if (isDefined(getInteger(N(u))))
138144 then throw("already started")
139145 else false
140146
141147
142-func aa (t) = if ((isDefined(getInteger(L(t))) == false))
148+func ac (u) = if ((isDefined(getInteger(N(u))) == false))
143149 then throw("not yet started")
144150 else false
145151
146152
147-func ab (t) = if (isDefined(getInteger(P(t))))
153+func ad (u) = if (isDefined(getInteger(R(u))))
148154 then throw("already canceled")
149155 else false
150156
151157
152-func ac (t) = if ((u(t) == 0))
153- then Z(t)
154- else if (isDefined(getInteger(O(t))))
158+func ae (u) = if ((v(u) == 0))
159+ then ab(u)
160+ else if (isDefined(getInteger(Q(u))))
155161 then throw("period already started")
156162 else false
157163
158164
159-func ad (t,S) = getInteger(R(t, S))
165+func af (u,U) = getInteger(T(u, U))
160166
161167
162-func ae (t,S) = valueOrElse(ad(t, S), 0)
168+func ag (u,U) = valueOrElse(af(u, U), 0)
163169
164170
165-func af (t,u) = valueOrElse(getInteger(y(t, u)), valueOrErrorMessage(getInteger(x(t)), "no child lockTime"))
171+func ah (u,v) = valueOrElse(getInteger(z(u, v)), valueOrErrorMessage(getInteger(y(u)), "no child lockTime"))
166172
167173
168-func ag (t) = {
169- let ah = u(t)
170- if ((ah == 0))
174+func ai (u) = {
175+ let aj = v(u)
176+ if ((aj == 0))
171177 then 0
172178 else {
173- let ai = getInteger(M(t, ah))
174- if (isDefined(ai))
175- then ah
176- else (ah - 1)
179+ let ak = getInteger(O(u, aj))
180+ if (isDefined(ak))
181+ then aj
182+ else (aj - 1)
177183 }
178184 }
179185
180186
181-func aj (t) = {
182- let ah = ag(t)
183- let ak = valueOrErrorMessage(getInteger(L(t)), "no child start height")
184- (valueOrElse(getInteger(M(t, ah)), ak) + af(t, ah))
187+func al (u) = {
188+ let aj = ai(u)
189+ let am = valueOrErrorMessage(getInteger(N(u)), "no child start height")
190+ (valueOrElse(getInteger(O(u, aj)), am) + ah(u, aj))
185191 }
186192
187193
188-func al (t) = valueOrElse(getString(w(t)), t)
194+func an (u) = valueOrElse(getString(x(u)), u)
189195
190196
191-func h (b) = toString(valueOrElse(getInteger(b), 0))
197+func i (b) = toString(valueOrElse(getInteger(b), 0))
192198
193199
194-func j (b) = valueOrElse(getString(b), "")
200+func k (b) = valueOrElse(getString(b), "")
195201
196202
197-func am (t) = {
198- let ah = u(t)
199- let an = toString(ah)
200- ((((((((((((((((((((((((((((((((((((((((((((((((((("height: " + toString(o)) + ", project: ") + t) + ", owner: ") + j(v(t))) + ", treasury: ") + al(t)) + ", lock_time: ") + h(x(t))) + ", skin_required: ") + h(z(t))) + ", skin_max: ") + h(A(t))) + ", min_commitment: ") + h(C(t))) + ", skin_total: ") + h(D(t))) + ", investments_required: ") + h(F(t))) + ", investments_max: ") + h(B(t))) + ", investments_total: ") + h(G(t))) + ", investments_token: ") + j(I(t))) + ", commitments: ") + j(J(t))) + ", create_height: ") + h(K(t))) + ", start_height: ") + toString(valueOrElse(getInteger(L(t)), -1))) + ", cancel_height: ") + toString(valueOrElse(getInteger(P(t)), -1))) + ", period: ") + an) + ", period_") + an) + "_start_after_height: ") + toString(valueOrElse(getInteger(N(t, ah)), -1))) + ", period_") + an) + "_start_height: ") + toString(valueOrElse(getInteger(O(t)), -1))) + ", period_") + an) + "_lock_time: ") + toString(af(t, ah))) + ", unlock_height: ") + toString(aj(t))) + ", period_investments_total: ") + h(H(t)))
203+func ao (u) = {
204+ let aj = v(u)
205+ let ap = toString(aj)
206+ ((((((((((((((((((((((((((((((((((((((((((((((((((("height: " + toString(p)) + ", project: ") + u) + ", owner: ") + k(w(u))) + ", treasury: ") + an(u)) + ", lock_time: ") + i(y(u))) + ", skin_required: ") + i(A(u))) + ", skin_max: ") + i(B(u))) + ", min_commitment: ") + i(D(u))) + ", skin_total: ") + i(E(u))) + ", investments_required: ") + i(G(u))) + ", investments_max: ") + i(C(u))) + ", investments_total: ") + i(H(u))) + ", investments_token: ") + k(J(u))) + ", commitments: ") + k(K(u))) + ", create_height: ") + i(M(u))) + ", start_height: ") + toString(valueOrElse(getInteger(N(u)), -1))) + ", cancel_height: ") + toString(valueOrElse(getInteger(R(u)), -1))) + ", period: ") + ap) + ", period_") + ap) + "_start_after_height: ") + toString(valueOrElse(getInteger(P(u, aj)), -1))) + ", period_") + ap) + "_start_height: ") + toString(valueOrElse(getInteger(Q(u)), -1))) + ", period_") + ap) + "_lock_time: ") + toString(ah(u, aj))) + ", unlock_height: ") + toString(al(u))) + ", period_investments_total: ") + i(I(u)))
201207 }
202208
203209
204-func ao (t,S) = ((((((((("height: " + toString(o)) + ", project: ") + t) + ", skin:") + toString(ae(t, S))) + ", power:") + toString(valueOrElse(ad(t, S), 0))) + ", investments: ") + h(V(t, S)))
210+func aq (u,U) = ((((((((("height: " + toString(p)) + ", project: ") + u) + ", skin:") + toString(ag(u, U))) + ", power:") + toString(valueOrElse(af(u, U), 0))) + ", investments: ") + i(X(u, U)))
205211
206212
207-func ap (aq,t,ar,as) = {
208- let at = m("commitAfterStartFor")
209- if ((at == at))
210- then if ((0 > as))
213+func ar (as,u,at,au) = {
214+ let av = n("commitAfterStartFor")
215+ if ((av == av))
216+ then if ((0 > au))
211217 then throw("invalid additionalLockRounds")
212- else if (!(contains(valueOrElse(getString(X(t)), ""), toString(aq.caller))))
218+ else if (!(contains(valueOrElse(getString(Z(u)), ""), toString(as.caller))))
213219 then throw("commitAfterStartForInternal. denied")
214220 else {
215- let ah = aq.payments[0]
216- if (if ((ah.assetId != p))
221+ let aj = as.payments[0]
222+ if (if ((aj.assetId != q))
217223 then true
218- else (size(aq.payments) != 1))
224+ else (size(as.payments) != 1))
219225 then throw("invalid payments: only $PWR token expected")
220226 else {
221- let au = ah.amount
222- let av = [e(R(t, ar), au), e(D(t), au), e(E, au)]
223- if ((as > 0))
227+ let aw = aj.amount
228+ let ax = [f(T(u, at), aw), f(E(u), aw), f(F, aw)]
229+ if ((au > 0))
224230 then {
225- let aw = (u(t) + as)
226-IntegerEntry(T(t, ar), aw) :: av
231+ let ay = (v(u) + au)
232+IntegerEntry(V(u, at), ay) :: ax
227233 }
228- else av
234+ else ax
229235 }
230236 }
231237 else throw("Strict value is not equal to itself.")
232238 }
233239
234240
235-@Callable(aq)
236-func projectFor (ax,ay,az,aA,af,aB,aC,Q,aD,t) = {
237- let at = m("projectFor")
238- if ((at == at))
239- then if (!(contains(r, toString(aq.caller))))
241+@Callable(as)
242+func projectFor (az,aA,aB,aC,ah,aD,aE,S,aF,u,aG) = {
243+ let av = n("projectFor")
244+ if ((av == av))
245+ then if (!(contains(s, toString(as.caller))))
240246 then throw("denied")
241247 else {
242- let aE = valueOrErrorMessage(addressFromString(t), "invalid treasury address")
243- if ((aE == aE))
248+ let aH = valueOrErrorMessage(addressFromString(u), "invalid treasury address")
249+ if ((aH == aH))
244250 then {
245- let aF = i(Q)
246- if ((aF == aF))
247- then if (if ((az > 0))
248- then (ay > az)
251+ let aI = j(S)
252+ if ((aI == aI))
253+ then if (if ((aB > 0))
254+ then (aA > aB)
249255 else false)
250256 then throw("invalid maxSkin")
251- else if (if ((aC > 0))
252- then (aB > aC)
257+ else if (if ((aE > 0))
258+ then (aD > aE)
253259 else false)
254260 then throw("invalid maxInvestments")
255- else [a(v(t), ax), d(K(t), o), d(z(t), ay), d(A(t), az), d(C(t), aA), d(x(t), af), d(F(t), aB), a(I(t), Q), a(J(t), aD), a(w(t), t), d(B(t), aC)]
261+ else [a(w(u), az), d(M(u), p), d(A(u), aA), d(B(u), aB), d(D(u), aC), d(y(u), ah), d(G(u), aD), a(J(u), S), a(K(u), aF), a(x(u), u), d(C(u), aE), e(L(u), aG)]
256262 else throw("Strict value is not equal to itself.")
257263 }
258264 else throw("Strict value is not equal to itself.")
262268
263269
264270
265-@Callable(aq)
266-func increraseSkin (t,aG) = {
267- let at = m("increraseSkin")
268- if ((at == at))
271+@Callable(as)
272+func editAttachments (u,aG) = {
273+ let av = n("editAttachments")
274+ if ((av == av))
269275 then {
270- let aH = if (Z(t))
271- then ab(t)
276+ let aJ = ad(u)
277+ if ((aJ == aJ))
278+ then [e(L(u), aG)]
279+ else throw("Strict value is not equal to itself.")
280+ }
281+ else throw("Strict value is not equal to itself.")
282+ }
283+
284+
285+
286+@Callable(as)
287+func increraseSkin (u,aK) = {
288+ let av = n("increraseSkin")
289+ if ((av == av))
290+ then {
291+ let aJ = if (ab(u))
292+ then ad(u)
272293 else false
273- if ((aH == aH))
274- then if ((0 >= aG))
294+ if ((aJ == aJ))
295+ then if ((0 >= aK))
275296 then throw("invalid argument: skinIncrement should be positive")
276297 else {
277- let ax = getStringValue(v(t))
278- if ((toString(aq.caller) != ax))
298+ let az = getStringValue(w(u))
299+ if ((toString(as.caller) != az))
279300 then throw("denied")
280- else [e(z(t), aG)]
301+ else [f(A(u), aK)]
281302 }
282303 else throw("Strict value is not equal to itself.")
283304 }
286307
287308
288309
289-@Callable(aq)
290-func commitFor (t,ar) = {
291- let at = m("commitFor")
292- if ((at == at))
310+@Callable(as)
311+func commitFor (u,at) = {
312+ let av = n("commitFor")
313+ if ((av == av))
293314 then {
294- let aH = ac(t)
295- if ((aH == aH))
315+ let aJ = ae(u)
316+ if ((aJ == aJ))
296317 then {
297- let ah = aq.payments[0]
298- if ((ah.assetId != p))
318+ let aj = as.payments[0]
319+ if ((aj.assetId != q))
299320 then throw("invalid attached payment: $power token expected")
300321 else {
301- let au = ah.amount
302- let aA = valueOrErrorMessage(getInteger(C(t)), "Child DAO not found")
303- if ((aA > au))
304- then throw(("Min. commitment is " + toString(aA)))
322+ let aw = aj.amount
323+ let aC = valueOrErrorMessage(getInteger(D(u)), "Child DAO not found")
324+ if ((aC > aw))
325+ then throw(("Min. commitment is " + toString(aC)))
305326 else {
306- let aI = D(t)
307- let aJ = (valueOrElse(getInteger(aI), 0) + au)
308- let aK = valueOrElse(getInteger(A(t)), 0)
309- let aL = valueOrElse(getInteger(z(t)), 0)
310- if (if (if ((aK > 0))
327+ let aL = E(u)
328+ let aM = (valueOrElse(getInteger(aL), 0) + aw)
329+ let aN = valueOrElse(getInteger(B(u)), 0)
330+ let aO = valueOrElse(getInteger(A(u)), 0)
331+ if (if (if ((aN > 0))
311332 then true
312- else (aL == 0))
313- then (aJ > aK)
333+ else (aO == 0))
334+ then (aM > aN)
314335 else false)
315- then throw(("Total max. skin is reached: " + toString(aK)))
316- else [e(R(t, ar), au), IntegerEntry(aI, aJ), e(E, au)]
336+ then throw(("Total max. skin is reached: " + toString(aN)))
337+ else [f(T(u, at), aw), IntegerEntry(aL, aM), f(F, aw)]
317338 }
318339 }
319340 }
324345
325346
326347
327-@Callable(aq)
328-func commitForMiner (t,ar) = {
329- let at = m("commitForMiner")
330- if ((at == at))
331- then if (!(contains(r, toString(aq.caller))))
348+@Callable(as)
349+func commitForMiner (u,at) = {
350+ let av = n("commitForMiner")
351+ if ((av == av))
352+ then if (!(contains(s, toString(as.caller))))
332353 then throw("denied")
333354 else {
334- let ah = aq.payments[0]
335- if (if ((ah.assetId != p))
355+ let aj = as.payments[0]
356+ if (if ((aj.assetId != q))
336357 then true
337- else (size(aq.payments) != 1))
358+ else (size(as.payments) != 1))
338359 then throw("invalid payments: only $PWR token expected")
339360 else {
340- let au = ah.amount
341-[e(R(t, ar), au), e(D(t), au), e(E, au)]
361+ let aw = aj.amount
362+[f(T(u, at), aw), f(E(u), aw), f(F, aw)]
342363 }
343364 }
344365 else throw("Strict value is not equal to itself.")
346367
347368
348369
349-@Callable(aq)
350-func commitAfterStartFor (t,ar) = ap(aq, t, ar, 0)
370+@Callable(as)
371+func commitAfterStartFor (u,at) = ar(as, u, at, 0)
351372
352373
353374
354-@Callable(aq)
355-func commitAfterStartWithLockRoundFor (t,ar,as) = ap(aq, t, ar, as)
375+@Callable(as)
376+func commitAfterStartWithLockRoundFor (u,at,au) = ar(as, u, at, au)
356377
357378
358379
359-@Callable(aq)
360-func invest (t) = {
361- let at = m("invest")
362- if ((at == at))
380+@Callable(as)
381+func invest (u) = {
382+ let av = n("invest")
383+ if ((av == av))
363384 then {
364- let aH = ac(t)
365- if ((aH == aH))
385+ let aJ = ae(u)
386+ if ((aJ == aJ))
366387 then {
367- let aF = Q(t)
368- if ((aq.payments[0].assetId != aF))
388+ let aI = S(u)
389+ if ((as.payments[0].assetId != aI))
369390 then throw("invalid investments asset id")
370391 else {
371- let aM = aq.payments[0].amount
372- let aN = valueOrElse(getInteger(B(t)), 0)
373- func aO (at) = [e(V(t, toString(aq.caller)), at), e(G(t), at), e(H(t), at)]
392+ let aP = as.payments[0].amount
393+ let aQ = valueOrElse(getInteger(C(u)), 0)
394+ func aR (av) = [f(X(u, toString(as.caller)), av), f(H(u), av), f(I(u), av)]
374395
375- if ((aN > 0))
396+ if ((aQ > 0))
376397 then {
377- let aP = G(t)
378- let aQ = valueOrElse(getInteger(aP), 0)
379- let aR = min([aM, (aN - aQ)])
380- if ((0 >= aR))
381- then throw(("Total max. investments is reached: " + toString(aN)))
398+ let aS = H(u)
399+ let aT = valueOrElse(getInteger(aS), 0)
400+ let aU = min([aP, (aQ - aT)])
401+ if ((0 >= aU))
402+ then throw(("Total max. investments is reached: " + toString(aQ)))
382403 else {
383- let aS = (aM - aR)
384- if ((aS > 0))
385- then [ScriptTransfer(aq.caller, aS, aF), aO(aR)]
386- else aO(aR)
404+ let aV = (aP - aU)
405+ if ((aV > 0))
406+ then [ScriptTransfer(as.caller, aV, aI), aR(aU)]
407+ else aR(aU)
387408 }
388409 }
389- else aO(aM)
410+ else aR(aP)
390411 }
391412 }
392413 else throw("Strict value is not equal to itself.")
396417
397418
398419
399-@Callable(aq)
400-func investAfterStart (t) = {
401- let at = m("investAfterStart")
402- if ((at == at))
403- then if ((valueOrElse(getBoolean(Y(t)), false) == false))
420+@Callable(as)
421+func investAfterStart (u) = {
422+ let av = n("investAfterStart")
423+ if ((av == av))
424+ then if ((valueOrElse(getBoolean(aa(u)), false) == false))
404425 then throw("denied (investAfterStart)")
405426 else {
406- let aH = aa(t)
407- if ((aH == aH))
408- then if ((u(t) > 0))
427+ let aJ = ac(u)
428+ if ((aJ == aJ))
429+ then if ((v(u) > 0))
409430 then throw("initial round is ended")
410431 else {
411- let aF = Q(t)
412- if ((aq.payments[0].assetId != aF))
432+ let aI = S(u)
433+ if ((as.payments[0].assetId != aI))
413434 then throw("invalid investments asset id")
414435 else {
415- let aM = aq.payments[0].amount
416-[e(V(t, toString(aq.caller)), aM), e(G(t), aM), e(H(t), aM), ScriptTransfer(addressFromStringValue(al(t)), aM, Q(t))]
436+ let aP = as.payments[0].amount
437+[f(X(u, toString(as.caller)), aP), f(H(u), aP), f(I(u), aP), ScriptTransfer(addressFromStringValue(an(u)), aP, S(u))]
417438 }
418439 }
419440 else throw("Strict value is not equal to itself.")
423444
424445
425446
426-@Callable(aq)
427-func start (t) = {
428- let aT = m("start")
429- if ((aT == aT))
447+@Callable(as)
448+func start (u) = {
449+ let aW = n("start")
450+ if ((aW == aW))
430451 then {
431- let aH = if (Z(t))
432- then ab(t)
452+ let aJ = if (ab(u))
453+ then ad(u)
433454 else false
434- if ((aH == aH))
455+ if ((aJ == aJ))
435456 then {
436- let aU = valueOrElse(getInteger(D(t)), 0)
437- let aL = valueOrErrorMessage(getInteger(z(t)), "child not registered")
438- if ((aL > aU))
457+ let aX = valueOrElse(getInteger(E(u)), 0)
458+ let aO = valueOrErrorMessage(getInteger(A(u)), "child not registered")
459+ if ((aO > aX))
439460 then throw("not enough skin in the game")
440461 else {
441- let aV = valueOrElse(getInteger(G(t)), 0)
442- if ((getIntegerValue(F(t)) > aV))
462+ let aY = valueOrElse(getInteger(H(u)), 0)
463+ if ((getIntegerValue(G(u)) > aY))
443464 then throw("not enough investments")
444- else [IntegerEntry(L(t), o), ScriptTransfer(addressFromStringValue(al(t)), aV, Q(t))]
465+ else [IntegerEntry(N(u), p), ScriptTransfer(addressFromStringValue(an(u)), aY, S(u))]
445466 }
446467 }
447468 else throw("Strict value is not equal to itself.")
451472
452473
453474
454-@Callable(aq)
455-func initNextPeriod (t,aW,af) = {
456- let aT = m("initNextPeriod")
457- if ((aT == aT))
458- then if (if ((toString(aq.caller) != getStringValue(v(t))))
459- then (aq.caller != this)
475+@Callable(as)
476+func initNextPeriod (u,aZ,ah) = {
477+ let aW = n("initNextPeriod")
478+ if ((aW == aW))
479+ then if (if ((toString(as.caller) != getStringValue(w(u))))
480+ then (as.caller != this)
460481 else false)
461482 then throw("denied")
462- else if ((0 > aW))
483+ else if ((0 > aZ))
463484 then throw("blockBetweenPeriods should be positive or zero")
464- else if ((1 > af))
485+ else if ((1 > ah))
465486 then throw("lockTime should be positive")
466487 else {
467- let aX = aj(t)
468- if ((aX > o))
488+ let ba = al(u)
489+ if ((ba > p))
469490 then throw("current period is still active")
470491 else {
471- let ah = u(t)
472- if (if ((ah > 0))
473- then !(isDefined(M(t, ah)))
492+ let aj = v(u)
493+ if (if ((aj > 0))
494+ then !(isDefined(O(u, aj)))
474495 else false)
475496 then throw("next period already initialized")
476497 else {
477- let aY = (ah + 1)
478-[IntegerEntry(s(t), aY), IntegerEntry(N(t, aY), (aX + aW)), IntegerEntry(y(t, aY), af)]
498+ let bb = (aj + 1)
499+[IntegerEntry(t(u), bb), IntegerEntry(P(u, bb), (ba + aZ)), IntegerEntry(z(u, bb), ah)]
479500 }
480501 }
481502 }
484505
485506
486507
487-@Callable(aq)
488-func startPeriod (t) = {
489- let aT = m("startPeriod")
490- if ((aT == aT))
508+@Callable(as)
509+func startPeriod (u) = {
510+ let aW = n("startPeriod")
511+ if ((aW == aW))
491512 then {
492- let aH = ac(t)
493- if ((aH == aH))
513+ let aJ = ae(u)
514+ if ((aJ == aJ))
494515 then {
495- let aZ = u(t)
496- let ba = N(t, aZ)
497- let bb = valueOrErrorMessage(getInteger(ba), ("key not found: " + ba))
498- if ((bb > o))
516+ let bc = v(u)
517+ let bd = P(u, bc)
518+ let be = valueOrErrorMessage(getInteger(bd), ("key not found: " + bd))
519+ if ((be > p))
499520 then throw("too early")
500521 else {
501- let aU = valueOrElse(getInteger(D(t)), 0)
502- let aL = valueOrErrorMessage(getInteger(z(t)), "child not registered")
503- if ((aL > aU))
522+ let aX = valueOrElse(getInteger(E(u)), 0)
523+ let aO = valueOrErrorMessage(getInteger(A(u)), "child not registered")
524+ if ((aO > aX))
504525 then throw("not enough skin in the game")
505526 else {
506- let bc = valueOrElse(getInteger(H(t)), 0)
507-[IntegerEntry(O(t), o), ScriptTransfer(addressFromStringValue(t), bc, Q(t))]
527+ let bf = valueOrElse(getInteger(I(u)), 0)
528+[IntegerEntry(Q(u), p), ScriptTransfer(addressFromStringValue(u), bf, S(u))]
508529 }
509530 }
510531 }
515536
516537
517538
518-@Callable(aq)
519-func slash (t,aM) = {
520- let aT = m("/")
521- if ((aT == aT))
522- then if (!(contains(q, toString(aq.caller))))
539+@Callable(as)
540+func slash (u,aP) = {
541+ let aW = n("/")
542+ if ((aW == aW))
543+ then if (!(contains(r, toString(as.caller))))
523544 then throw("denied")
524- else if (!(isDefined(getInteger(L(t)))))
545+ else if (!(isDefined(getInteger(N(u)))))
525546 then throw("not started")
526- else [e(D(t), -(aM)), Burn(p, aM)]
547+ else [f(E(u), -(aP)), Burn(q, aP)]
527548 else throw("Strict value is not equal to itself.")
528549 }
529550
530551
531552
532-@Callable(aq)
533-func completeFor (t,S) = if (!(contains(r, toString(aq.caller))))
553+@Callable(as)
554+func completeFor (u,U) = if (!(contains(s, toString(as.caller))))
534555 then throw("denied")
535556 else {
536- let aX = aj(t)
537- if ((aX > o))
557+ let ba = al(u)
558+ if ((ba > p))
538559 then throw("still locked")
539560 else {
540- let bd = ag(t)
541- let aw = valueOrElse(getInteger(T(t, S)), 0)
542- if ((aw > bd))
543- then throw((("you can unlock on " + toString(aw)) + " round"))
561+ let bg = ai(u)
562+ let ay = valueOrElse(getInteger(V(u, U)), 0)
563+ if ((ay > bg))
564+ then throw((("you can unlock on " + toString(ay)) + " round"))
544565 else {
545- let ay = ae(t, S)
546- if ((ay == 0))
566+ let aA = ag(u, U)
567+ if ((aA == 0))
547568 then throw("you had no skin in the game")
548- else $Tuple2([ScriptTransfer(aq.caller, ay, p), DeleteEntry(R(t, S)), e(D(t), -(ay)), e(E, -(ay)), IntegerEntry(U(t, S, bd), ay)], ay)
569+ else $Tuple2([ScriptTransfer(as.caller, aA, q), DeleteEntry(T(u, U)), f(E(u), -(aA)), f(F, -(aA)), IntegerEntry(W(u, U, bg), aA)], aA)
549570 }
550571 }
551572 }
552573
553574
554575
555-@Callable(aq)
556-func cancel (t) = {
557- let aT = m("cancel")
558- if ((aT == aT))
576+@Callable(as)
577+func cancel (u) = {
578+ let aW = n("cancel")
579+ if ((aW == aW))
559580 then {
560- let aH = if (Z(t))
581+ let aJ = if (ab(u))
561582 then true
562- else ab(t)
563- if ((aH == aH))
564- then if ((toString(aq.caller) != getStringValue(v(t))))
583+ else ad(u)
584+ if ((aJ == aJ))
585+ then if ((toString(as.caller) != getStringValue(w(u))))
565586 then throw("denied. not an owner")
566- else [IntegerEntry(P(t), o)]
587+ else [IntegerEntry(R(u), p)]
567588 else throw("Strict value is not equal to itself.")
568589 }
569590 else throw("Strict value is not equal to itself.")
571592
572593
573594
574-@Callable(aq)
575-func undoInvest (t) = {
576- let aT = m("undoInvest")
577- if ((aT == aT))
595+@Callable(as)
596+func undoInvest (u) = {
597+ let aW = n("undoInvest")
598+ if ((aW == aW))
578599 then {
579- let aH = Z(t)
580- if ((aH == aH))
600+ let aJ = ab(u)
601+ if ((aJ == aJ))
581602 then {
582- let be = V(t, toString(aq.caller))
583- let aB = valueOrElse(getInteger(be), 0)
584- if ((aB == 0))
603+ let bh = X(u, toString(as.caller))
604+ let aD = valueOrElse(getInteger(bh), 0)
605+ if ((aD == 0))
585606 then throw("no investments")
586- else [DeleteEntry(be), e(G(t), -(aB)), e(H(t), -(aB)), ScriptTransfer(aq.caller, aB, Q(t))]
607+ else [DeleteEntry(bh), f(H(u), -(aD)), f(I(u), -(aD)), ScriptTransfer(as.caller, aD, S(u))]
587608 }
588609 else throw("Strict value is not equal to itself.")
589610 }
592613
593614
594615
595-@Callable(aq)
596-func undoCommitFor (t,ar) = {
597- let aT = m("undoCommitFor")
598- if ((aT == aT))
599- then if (!(contains(r, toString(aq.caller))))
616+@Callable(as)
617+func undoCommitFor (u,at) = {
618+ let aW = n("undoCommitFor")
619+ if ((aW == aW))
620+ then if (!(contains(s, toString(as.caller))))
600621 then throw("denied")
601622 else {
602- let aH = Z(t)
603- if ((aH == aH))
623+ let aJ = ab(u)
624+ if ((aJ == aJ))
604625 then {
605- let bf = R(t, ar)
606- let ay = valueOrElse(getInteger(bf), 0)
607- if ((ay == 0))
626+ let bi = T(u, at)
627+ let aA = valueOrElse(getInteger(bi), 0)
628+ if ((aA == 0))
608629 then throw("no skin")
609- else $Tuple2([DeleteEntry(bf), e(D(t), -(ay)), e(E, -(ay)), ScriptTransfer(aq.caller, ay, p)], ay)
630+ else $Tuple2([DeleteEntry(bi), f(E(u), -(aA)), f(F, -(aA)), ScriptTransfer(as.caller, aA, q)], aA)
610631 }
611632 else throw("Strict value is not equal to itself.")
612633 }
615636
616637
617638
618-@Callable(aq)
619-func userPower (t,S) = $Tuple2(nil, valueOrElse(ad(t, S), 0))
639+@Callable(as)
640+func userPower (u,U) = $Tuple2(nil, valueOrElse(af(u, U), 0))
620641
621642
622643
623-@Callable(aq)
624-func totalPower (t) = $Tuple2(nil, valueOrErrorMessage(getInteger(D(t)), "totalPower: child not found"))
644+@Callable(as)
645+func totalPower (u) = $Tuple2(nil, valueOrErrorMessage(getInteger(E(u)), "totalPower: child not found"))
625646
626647
627648
628-@Callable(aq)
629-func init (bg) = [a(k, bg)]
649+@Callable(as)
650+func init (bj) = [a(l, bj)]
630651
631652
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b,c) = if (!(isDefined(getString(this, b))))
55 then StringEntry(b, c)
66 else throw(("already initialized: " + b))
77
88
99 func d (b,c) = if ((0 > c))
1010 then throw(((("writing negative value " + toString(c)) + " for key ") + b))
1111 else IntegerEntry(b, c)
1212
1313
14-func e (b,c) = d(b, (valueOrElse(getInteger(this, b), 0) + c))
14+func e (b,c) = BinaryEntry(b, c)
1515
1616
17-func f (c) = {
18- let g = c
19- if ($isInstanceOf(g, "Int"))
17+func f (b,c) = d(b, (valueOrElse(getInteger(this, b), 0) + c))
18+
19+
20+func g (c) = {
21+ let h = c
22+ if ($isInstanceOf(h, "Int"))
2023 then {
21- let h = g
22- h
24+ let i = h
25+ i
2326 }
2427 else throw("wrong type, expected: Int")
2528 }
2629
2730
28-func i (j) = if ((j == "WAVES"))
31+func j (k) = if ((k == "WAVES"))
2932 then unit
30- else fromBase58String(j)
33+ else fromBase58String(k)
3134
3235
33-let k = "config"
36+let l = "config"
3437
35-let l = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, k), "children: config address not found")), "invalid config address")
38+let m = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, l), "children: config address not found")), "invalid config address")
3639
37-func m (n) = invoke(l, "opAllowed", [n], nil)
40+func n (o) = invoke(m, "opAllowed", [o], nil)
3841
3942
40-let o = height
43+let p = height
4144
42-let p = fromBase58String(valueOrErrorMessage(getString(l, "powerAssetId"), "pwr asset id not found"))
45+let q = fromBase58String(valueOrErrorMessage(getString(m, "powerAssetId"), "pwr asset id not found"))
4346
44-let q = valueOrElse(getString(l, (toString(this) + "_slashers")), "")
47+let r = valueOrElse(getString(m, (toString(this) + "_slashers")), "")
4548
46-let r = valueOrElse(getString(l, "main_addresses"), "")
49+let s = valueOrElse(getString(m, "main_addresses"), "")
4750
48-func s (t) = ("period_" + t)
51+func t (u) = ("period_" + u)
4952
5053
51-func u (t) = valueOrElse(getInteger(s(t)), 0)
54+func v (u) = valueOrElse(getInteger(t(u)), 0)
5255
5356
54-func v (t) = ("owner_" + t)
57+func w (u) = ("owner_" + u)
5558
5659
57-func w (t) = ("treasury_" + t)
60+func x (u) = ("treasury_" + u)
5861
5962
60-func x (t) = ("lockTime_" + t)
63+func y (u) = ("lockTime_" + u)
6164
6265
63-func y (t,u) = ((("period_" + toString(u)) + "_lockTime_") + t)
66+func z (u,v) = ((("period_" + toString(v)) + "_lockTime_") + u)
6467
6568
66-func z (t) = ("skin_required_" + t)
69+func A (u) = ("skin_required_" + u)
6770
6871
69-func A (t) = ("skin_max_" + t)
72+func B (u) = ("skin_max_" + u)
7073
7174
72-func B (t) = ("investments_max_" + t)
75+func C (u) = ("investments_max_" + u)
7376
7477
75-func C (t) = ("min_commitment" + t)
78+func D (u) = ("min_commitment" + u)
7679
7780
78-func D (t) = ("skin_total_" + t)
81+func E (u) = ("skin_total_" + u)
7982
8083
81-let E = "pwr_total"
84+let F = "pwr_total"
8285
83-func F (t) = ("investments_required_" + t)
86+func G (u) = ("investments_required_" + u)
8487
8588
86-func G (t) = ("investments_total_" + t)
89+func H (u) = ("investments_total_" + u)
8790
8891
89-func H (t) = ((("period_" + toString(u(t))) + "_investments_total_") + t)
92+func I (u) = ((("period_" + toString(v(u))) + "_investments_total_") + u)
9093
9194
92-func I (t) = ("investments_token_" + t)
95+func J (u) = ("investments_token_" + u)
9396
9497
95-func J (t) = ("commitments_" + t)
98+func K (u) = ("commitments_" + u)
9699
97100
98-func K (t) = ("create_height_" + t)
101+func L (u) = ("attachments_" + u)
99102
100103
101-func L (t) = ("start_height_" + t)
104+func M (u) = ("create_height_" + u)
102105
103106
104-func M (t,u) = ((("period_" + toString(u)) + "_start_height_") + t)
107+func N (u) = ("start_height_" + u)
105108
106109
107-func N (t,u) = ((("period_" + toString(u)) + "_start_after_height_") + t)
110+func O (u,v) = ((("period_" + toString(v)) + "_start_height_") + u)
108111
109112
110-func O (t) = M(t, u(t))
113+func P (u,v) = ((("period_" + toString(v)) + "_start_after_height_") + u)
111114
112115
113-func P (t) = ("cancel_height_" + t)
116+func Q (u) = O(u, v(u))
114117
115118
116-func Q (t) = i(valueOrErrorMessage(getString(I(t)), "investments asset id not found"))
119+func R (u) = ("cancel_height_" + u)
117120
118121
119-func R (t,S) = ((("skin_" + t) + "_") + S)
122+func S (u) = j(valueOrErrorMessage(getString(J(u)), "investments asset id not found"))
120123
121124
122-func T (t,S) = ((("skin_unlock_period_" + t) + "_") + S)
125+func T (u,U) = ((("skin_" + u) + "_") + U)
123126
124127
125-func U (t,S,u) = (((R(t, S) + "_period_") + toString(u)) + "_exited")
128+func V (u,U) = ((("skin_unlock_period_" + u) + "_") + U)
126129
127130
128-func V (t,W) = ((("investor_" + t) + "_") + W)
131+func W (u,U,v) = (((T(u, U) + "_period_") + toString(v)) + "_exited")
129132
130133
131-func X (t) = ("commit_after_addresses_" + t)
134+func X (u,Y) = ((("investor_" + u) + "_") + Y)
132135
133136
134-func Y (t) = ("can_invest_after_start_" + t)
137+func Z (u) = ("commit_after_addresses_" + u)
135138
136139
137-func Z (t) = if (isDefined(getInteger(L(t))))
140+func aa (u) = ("can_invest_after_start_" + u)
141+
142+
143+func ab (u) = if (isDefined(getInteger(N(u))))
138144 then throw("already started")
139145 else false
140146
141147
142-func aa (t) = if ((isDefined(getInteger(L(t))) == false))
148+func ac (u) = if ((isDefined(getInteger(N(u))) == false))
143149 then throw("not yet started")
144150 else false
145151
146152
147-func ab (t) = if (isDefined(getInteger(P(t))))
153+func ad (u) = if (isDefined(getInteger(R(u))))
148154 then throw("already canceled")
149155 else false
150156
151157
152-func ac (t) = if ((u(t) == 0))
153- then Z(t)
154- else if (isDefined(getInteger(O(t))))
158+func ae (u) = if ((v(u) == 0))
159+ then ab(u)
160+ else if (isDefined(getInteger(Q(u))))
155161 then throw("period already started")
156162 else false
157163
158164
159-func ad (t,S) = getInteger(R(t, S))
165+func af (u,U) = getInteger(T(u, U))
160166
161167
162-func ae (t,S) = valueOrElse(ad(t, S), 0)
168+func ag (u,U) = valueOrElse(af(u, U), 0)
163169
164170
165-func af (t,u) = valueOrElse(getInteger(y(t, u)), valueOrErrorMessage(getInteger(x(t)), "no child lockTime"))
171+func ah (u,v) = valueOrElse(getInteger(z(u, v)), valueOrErrorMessage(getInteger(y(u)), "no child lockTime"))
166172
167173
168-func ag (t) = {
169- let ah = u(t)
170- if ((ah == 0))
174+func ai (u) = {
175+ let aj = v(u)
176+ if ((aj == 0))
171177 then 0
172178 else {
173- let ai = getInteger(M(t, ah))
174- if (isDefined(ai))
175- then ah
176- else (ah - 1)
179+ let ak = getInteger(O(u, aj))
180+ if (isDefined(ak))
181+ then aj
182+ else (aj - 1)
177183 }
178184 }
179185
180186
181-func aj (t) = {
182- let ah = ag(t)
183- let ak = valueOrErrorMessage(getInteger(L(t)), "no child start height")
184- (valueOrElse(getInteger(M(t, ah)), ak) + af(t, ah))
187+func al (u) = {
188+ let aj = ai(u)
189+ let am = valueOrErrorMessage(getInteger(N(u)), "no child start height")
190+ (valueOrElse(getInteger(O(u, aj)), am) + ah(u, aj))
185191 }
186192
187193
188-func al (t) = valueOrElse(getString(w(t)), t)
194+func an (u) = valueOrElse(getString(x(u)), u)
189195
190196
191-func h (b) = toString(valueOrElse(getInteger(b), 0))
197+func i (b) = toString(valueOrElse(getInteger(b), 0))
192198
193199
194-func j (b) = valueOrElse(getString(b), "")
200+func k (b) = valueOrElse(getString(b), "")
195201
196202
197-func am (t) = {
198- let ah = u(t)
199- let an = toString(ah)
200- ((((((((((((((((((((((((((((((((((((((((((((((((((("height: " + toString(o)) + ", project: ") + t) + ", owner: ") + j(v(t))) + ", treasury: ") + al(t)) + ", lock_time: ") + h(x(t))) + ", skin_required: ") + h(z(t))) + ", skin_max: ") + h(A(t))) + ", min_commitment: ") + h(C(t))) + ", skin_total: ") + h(D(t))) + ", investments_required: ") + h(F(t))) + ", investments_max: ") + h(B(t))) + ", investments_total: ") + h(G(t))) + ", investments_token: ") + j(I(t))) + ", commitments: ") + j(J(t))) + ", create_height: ") + h(K(t))) + ", start_height: ") + toString(valueOrElse(getInteger(L(t)), -1))) + ", cancel_height: ") + toString(valueOrElse(getInteger(P(t)), -1))) + ", period: ") + an) + ", period_") + an) + "_start_after_height: ") + toString(valueOrElse(getInteger(N(t, ah)), -1))) + ", period_") + an) + "_start_height: ") + toString(valueOrElse(getInteger(O(t)), -1))) + ", period_") + an) + "_lock_time: ") + toString(af(t, ah))) + ", unlock_height: ") + toString(aj(t))) + ", period_investments_total: ") + h(H(t)))
203+func ao (u) = {
204+ let aj = v(u)
205+ let ap = toString(aj)
206+ ((((((((((((((((((((((((((((((((((((((((((((((((((("height: " + toString(p)) + ", project: ") + u) + ", owner: ") + k(w(u))) + ", treasury: ") + an(u)) + ", lock_time: ") + i(y(u))) + ", skin_required: ") + i(A(u))) + ", skin_max: ") + i(B(u))) + ", min_commitment: ") + i(D(u))) + ", skin_total: ") + i(E(u))) + ", investments_required: ") + i(G(u))) + ", investments_max: ") + i(C(u))) + ", investments_total: ") + i(H(u))) + ", investments_token: ") + k(J(u))) + ", commitments: ") + k(K(u))) + ", create_height: ") + i(M(u))) + ", start_height: ") + toString(valueOrElse(getInteger(N(u)), -1))) + ", cancel_height: ") + toString(valueOrElse(getInteger(R(u)), -1))) + ", period: ") + ap) + ", period_") + ap) + "_start_after_height: ") + toString(valueOrElse(getInteger(P(u, aj)), -1))) + ", period_") + ap) + "_start_height: ") + toString(valueOrElse(getInteger(Q(u)), -1))) + ", period_") + ap) + "_lock_time: ") + toString(ah(u, aj))) + ", unlock_height: ") + toString(al(u))) + ", period_investments_total: ") + i(I(u)))
201207 }
202208
203209
204-func ao (t,S) = ((((((((("height: " + toString(o)) + ", project: ") + t) + ", skin:") + toString(ae(t, S))) + ", power:") + toString(valueOrElse(ad(t, S), 0))) + ", investments: ") + h(V(t, S)))
210+func aq (u,U) = ((((((((("height: " + toString(p)) + ", project: ") + u) + ", skin:") + toString(ag(u, U))) + ", power:") + toString(valueOrElse(af(u, U), 0))) + ", investments: ") + i(X(u, U)))
205211
206212
207-func ap (aq,t,ar,as) = {
208- let at = m("commitAfterStartFor")
209- if ((at == at))
210- then if ((0 > as))
213+func ar (as,u,at,au) = {
214+ let av = n("commitAfterStartFor")
215+ if ((av == av))
216+ then if ((0 > au))
211217 then throw("invalid additionalLockRounds")
212- else if (!(contains(valueOrElse(getString(X(t)), ""), toString(aq.caller))))
218+ else if (!(contains(valueOrElse(getString(Z(u)), ""), toString(as.caller))))
213219 then throw("commitAfterStartForInternal. denied")
214220 else {
215- let ah = aq.payments[0]
216- if (if ((ah.assetId != p))
221+ let aj = as.payments[0]
222+ if (if ((aj.assetId != q))
217223 then true
218- else (size(aq.payments) != 1))
224+ else (size(as.payments) != 1))
219225 then throw("invalid payments: only $PWR token expected")
220226 else {
221- let au = ah.amount
222- let av = [e(R(t, ar), au), e(D(t), au), e(E, au)]
223- if ((as > 0))
227+ let aw = aj.amount
228+ let ax = [f(T(u, at), aw), f(E(u), aw), f(F, aw)]
229+ if ((au > 0))
224230 then {
225- let aw = (u(t) + as)
226-IntegerEntry(T(t, ar), aw) :: av
231+ let ay = (v(u) + au)
232+IntegerEntry(V(u, at), ay) :: ax
227233 }
228- else av
234+ else ax
229235 }
230236 }
231237 else throw("Strict value is not equal to itself.")
232238 }
233239
234240
235-@Callable(aq)
236-func projectFor (ax,ay,az,aA,af,aB,aC,Q,aD,t) = {
237- let at = m("projectFor")
238- if ((at == at))
239- then if (!(contains(r, toString(aq.caller))))
241+@Callable(as)
242+func projectFor (az,aA,aB,aC,ah,aD,aE,S,aF,u,aG) = {
243+ let av = n("projectFor")
244+ if ((av == av))
245+ then if (!(contains(s, toString(as.caller))))
240246 then throw("denied")
241247 else {
242- let aE = valueOrErrorMessage(addressFromString(t), "invalid treasury address")
243- if ((aE == aE))
248+ let aH = valueOrErrorMessage(addressFromString(u), "invalid treasury address")
249+ if ((aH == aH))
244250 then {
245- let aF = i(Q)
246- if ((aF == aF))
247- then if (if ((az > 0))
248- then (ay > az)
251+ let aI = j(S)
252+ if ((aI == aI))
253+ then if (if ((aB > 0))
254+ then (aA > aB)
249255 else false)
250256 then throw("invalid maxSkin")
251- else if (if ((aC > 0))
252- then (aB > aC)
257+ else if (if ((aE > 0))
258+ then (aD > aE)
253259 else false)
254260 then throw("invalid maxInvestments")
255- else [a(v(t), ax), d(K(t), o), d(z(t), ay), d(A(t), az), d(C(t), aA), d(x(t), af), d(F(t), aB), a(I(t), Q), a(J(t), aD), a(w(t), t), d(B(t), aC)]
261+ else [a(w(u), az), d(M(u), p), d(A(u), aA), d(B(u), aB), d(D(u), aC), d(y(u), ah), d(G(u), aD), a(J(u), S), a(K(u), aF), a(x(u), u), d(C(u), aE), e(L(u), aG)]
256262 else throw("Strict value is not equal to itself.")
257263 }
258264 else throw("Strict value is not equal to itself.")
259265 }
260266 else throw("Strict value is not equal to itself.")
261267 }
262268
263269
264270
265-@Callable(aq)
266-func increraseSkin (t,aG) = {
267- let at = m("increraseSkin")
268- if ((at == at))
271+@Callable(as)
272+func editAttachments (u,aG) = {
273+ let av = n("editAttachments")
274+ if ((av == av))
269275 then {
270- let aH = if (Z(t))
271- then ab(t)
276+ let aJ = ad(u)
277+ if ((aJ == aJ))
278+ then [e(L(u), aG)]
279+ else throw("Strict value is not equal to itself.")
280+ }
281+ else throw("Strict value is not equal to itself.")
282+ }
283+
284+
285+
286+@Callable(as)
287+func increraseSkin (u,aK) = {
288+ let av = n("increraseSkin")
289+ if ((av == av))
290+ then {
291+ let aJ = if (ab(u))
292+ then ad(u)
272293 else false
273- if ((aH == aH))
274- then if ((0 >= aG))
294+ if ((aJ == aJ))
295+ then if ((0 >= aK))
275296 then throw("invalid argument: skinIncrement should be positive")
276297 else {
277- let ax = getStringValue(v(t))
278- if ((toString(aq.caller) != ax))
298+ let az = getStringValue(w(u))
299+ if ((toString(as.caller) != az))
279300 then throw("denied")
280- else [e(z(t), aG)]
301+ else [f(A(u), aK)]
281302 }
282303 else throw("Strict value is not equal to itself.")
283304 }
284305 else throw("Strict value is not equal to itself.")
285306 }
286307
287308
288309
289-@Callable(aq)
290-func commitFor (t,ar) = {
291- let at = m("commitFor")
292- if ((at == at))
310+@Callable(as)
311+func commitFor (u,at) = {
312+ let av = n("commitFor")
313+ if ((av == av))
293314 then {
294- let aH = ac(t)
295- if ((aH == aH))
315+ let aJ = ae(u)
316+ if ((aJ == aJ))
296317 then {
297- let ah = aq.payments[0]
298- if ((ah.assetId != p))
318+ let aj = as.payments[0]
319+ if ((aj.assetId != q))
299320 then throw("invalid attached payment: $power token expected")
300321 else {
301- let au = ah.amount
302- let aA = valueOrErrorMessage(getInteger(C(t)), "Child DAO not found")
303- if ((aA > au))
304- then throw(("Min. commitment is " + toString(aA)))
322+ let aw = aj.amount
323+ let aC = valueOrErrorMessage(getInteger(D(u)), "Child DAO not found")
324+ if ((aC > aw))
325+ then throw(("Min. commitment is " + toString(aC)))
305326 else {
306- let aI = D(t)
307- let aJ = (valueOrElse(getInteger(aI), 0) + au)
308- let aK = valueOrElse(getInteger(A(t)), 0)
309- let aL = valueOrElse(getInteger(z(t)), 0)
310- if (if (if ((aK > 0))
327+ let aL = E(u)
328+ let aM = (valueOrElse(getInteger(aL), 0) + aw)
329+ let aN = valueOrElse(getInteger(B(u)), 0)
330+ let aO = valueOrElse(getInteger(A(u)), 0)
331+ if (if (if ((aN > 0))
311332 then true
312- else (aL == 0))
313- then (aJ > aK)
333+ else (aO == 0))
334+ then (aM > aN)
314335 else false)
315- then throw(("Total max. skin is reached: " + toString(aK)))
316- else [e(R(t, ar), au), IntegerEntry(aI, aJ), e(E, au)]
336+ then throw(("Total max. skin is reached: " + toString(aN)))
337+ else [f(T(u, at), aw), IntegerEntry(aL, aM), f(F, aw)]
317338 }
318339 }
319340 }
320341 else throw("Strict value is not equal to itself.")
321342 }
322343 else throw("Strict value is not equal to itself.")
323344 }
324345
325346
326347
327-@Callable(aq)
328-func commitForMiner (t,ar) = {
329- let at = m("commitForMiner")
330- if ((at == at))
331- then if (!(contains(r, toString(aq.caller))))
348+@Callable(as)
349+func commitForMiner (u,at) = {
350+ let av = n("commitForMiner")
351+ if ((av == av))
352+ then if (!(contains(s, toString(as.caller))))
332353 then throw("denied")
333354 else {
334- let ah = aq.payments[0]
335- if (if ((ah.assetId != p))
355+ let aj = as.payments[0]
356+ if (if ((aj.assetId != q))
336357 then true
337- else (size(aq.payments) != 1))
358+ else (size(as.payments) != 1))
338359 then throw("invalid payments: only $PWR token expected")
339360 else {
340- let au = ah.amount
341-[e(R(t, ar), au), e(D(t), au), e(E, au)]
361+ let aw = aj.amount
362+[f(T(u, at), aw), f(E(u), aw), f(F, aw)]
342363 }
343364 }
344365 else throw("Strict value is not equal to itself.")
345366 }
346367
347368
348369
349-@Callable(aq)
350-func commitAfterStartFor (t,ar) = ap(aq, t, ar, 0)
370+@Callable(as)
371+func commitAfterStartFor (u,at) = ar(as, u, at, 0)
351372
352373
353374
354-@Callable(aq)
355-func commitAfterStartWithLockRoundFor (t,ar,as) = ap(aq, t, ar, as)
375+@Callable(as)
376+func commitAfterStartWithLockRoundFor (u,at,au) = ar(as, u, at, au)
356377
357378
358379
359-@Callable(aq)
360-func invest (t) = {
361- let at = m("invest")
362- if ((at == at))
380+@Callable(as)
381+func invest (u) = {
382+ let av = n("invest")
383+ if ((av == av))
363384 then {
364- let aH = ac(t)
365- if ((aH == aH))
385+ let aJ = ae(u)
386+ if ((aJ == aJ))
366387 then {
367- let aF = Q(t)
368- if ((aq.payments[0].assetId != aF))
388+ let aI = S(u)
389+ if ((as.payments[0].assetId != aI))
369390 then throw("invalid investments asset id")
370391 else {
371- let aM = aq.payments[0].amount
372- let aN = valueOrElse(getInteger(B(t)), 0)
373- func aO (at) = [e(V(t, toString(aq.caller)), at), e(G(t), at), e(H(t), at)]
392+ let aP = as.payments[0].amount
393+ let aQ = valueOrElse(getInteger(C(u)), 0)
394+ func aR (av) = [f(X(u, toString(as.caller)), av), f(H(u), av), f(I(u), av)]
374395
375- if ((aN > 0))
396+ if ((aQ > 0))
376397 then {
377- let aP = G(t)
378- let aQ = valueOrElse(getInteger(aP), 0)
379- let aR = min([aM, (aN - aQ)])
380- if ((0 >= aR))
381- then throw(("Total max. investments is reached: " + toString(aN)))
398+ let aS = H(u)
399+ let aT = valueOrElse(getInteger(aS), 0)
400+ let aU = min([aP, (aQ - aT)])
401+ if ((0 >= aU))
402+ then throw(("Total max. investments is reached: " + toString(aQ)))
382403 else {
383- let aS = (aM - aR)
384- if ((aS > 0))
385- then [ScriptTransfer(aq.caller, aS, aF), aO(aR)]
386- else aO(aR)
404+ let aV = (aP - aU)
405+ if ((aV > 0))
406+ then [ScriptTransfer(as.caller, aV, aI), aR(aU)]
407+ else aR(aU)
387408 }
388409 }
389- else aO(aM)
410+ else aR(aP)
390411 }
391412 }
392413 else throw("Strict value is not equal to itself.")
393414 }
394415 else throw("Strict value is not equal to itself.")
395416 }
396417
397418
398419
399-@Callable(aq)
400-func investAfterStart (t) = {
401- let at = m("investAfterStart")
402- if ((at == at))
403- then if ((valueOrElse(getBoolean(Y(t)), false) == false))
420+@Callable(as)
421+func investAfterStart (u) = {
422+ let av = n("investAfterStart")
423+ if ((av == av))
424+ then if ((valueOrElse(getBoolean(aa(u)), false) == false))
404425 then throw("denied (investAfterStart)")
405426 else {
406- let aH = aa(t)
407- if ((aH == aH))
408- then if ((u(t) > 0))
427+ let aJ = ac(u)
428+ if ((aJ == aJ))
429+ then if ((v(u) > 0))
409430 then throw("initial round is ended")
410431 else {
411- let aF = Q(t)
412- if ((aq.payments[0].assetId != aF))
432+ let aI = S(u)
433+ if ((as.payments[0].assetId != aI))
413434 then throw("invalid investments asset id")
414435 else {
415- let aM = aq.payments[0].amount
416-[e(V(t, toString(aq.caller)), aM), e(G(t), aM), e(H(t), aM), ScriptTransfer(addressFromStringValue(al(t)), aM, Q(t))]
436+ let aP = as.payments[0].amount
437+[f(X(u, toString(as.caller)), aP), f(H(u), aP), f(I(u), aP), ScriptTransfer(addressFromStringValue(an(u)), aP, S(u))]
417438 }
418439 }
419440 else throw("Strict value is not equal to itself.")
420441 }
421442 else throw("Strict value is not equal to itself.")
422443 }
423444
424445
425446
426-@Callable(aq)
427-func start (t) = {
428- let aT = m("start")
429- if ((aT == aT))
447+@Callable(as)
448+func start (u) = {
449+ let aW = n("start")
450+ if ((aW == aW))
430451 then {
431- let aH = if (Z(t))
432- then ab(t)
452+ let aJ = if (ab(u))
453+ then ad(u)
433454 else false
434- if ((aH == aH))
455+ if ((aJ == aJ))
435456 then {
436- let aU = valueOrElse(getInteger(D(t)), 0)
437- let aL = valueOrErrorMessage(getInteger(z(t)), "child not registered")
438- if ((aL > aU))
457+ let aX = valueOrElse(getInteger(E(u)), 0)
458+ let aO = valueOrErrorMessage(getInteger(A(u)), "child not registered")
459+ if ((aO > aX))
439460 then throw("not enough skin in the game")
440461 else {
441- let aV = valueOrElse(getInteger(G(t)), 0)
442- if ((getIntegerValue(F(t)) > aV))
462+ let aY = valueOrElse(getInteger(H(u)), 0)
463+ if ((getIntegerValue(G(u)) > aY))
443464 then throw("not enough investments")
444- else [IntegerEntry(L(t), o), ScriptTransfer(addressFromStringValue(al(t)), aV, Q(t))]
465+ else [IntegerEntry(N(u), p), ScriptTransfer(addressFromStringValue(an(u)), aY, S(u))]
445466 }
446467 }
447468 else throw("Strict value is not equal to itself.")
448469 }
449470 else throw("Strict value is not equal to itself.")
450471 }
451472
452473
453474
454-@Callable(aq)
455-func initNextPeriod (t,aW,af) = {
456- let aT = m("initNextPeriod")
457- if ((aT == aT))
458- then if (if ((toString(aq.caller) != getStringValue(v(t))))
459- then (aq.caller != this)
475+@Callable(as)
476+func initNextPeriod (u,aZ,ah) = {
477+ let aW = n("initNextPeriod")
478+ if ((aW == aW))
479+ then if (if ((toString(as.caller) != getStringValue(w(u))))
480+ then (as.caller != this)
460481 else false)
461482 then throw("denied")
462- else if ((0 > aW))
483+ else if ((0 > aZ))
463484 then throw("blockBetweenPeriods should be positive or zero")
464- else if ((1 > af))
485+ else if ((1 > ah))
465486 then throw("lockTime should be positive")
466487 else {
467- let aX = aj(t)
468- if ((aX > o))
488+ let ba = al(u)
489+ if ((ba > p))
469490 then throw("current period is still active")
470491 else {
471- let ah = u(t)
472- if (if ((ah > 0))
473- then !(isDefined(M(t, ah)))
492+ let aj = v(u)
493+ if (if ((aj > 0))
494+ then !(isDefined(O(u, aj)))
474495 else false)
475496 then throw("next period already initialized")
476497 else {
477- let aY = (ah + 1)
478-[IntegerEntry(s(t), aY), IntegerEntry(N(t, aY), (aX + aW)), IntegerEntry(y(t, aY), af)]
498+ let bb = (aj + 1)
499+[IntegerEntry(t(u), bb), IntegerEntry(P(u, bb), (ba + aZ)), IntegerEntry(z(u, bb), ah)]
479500 }
480501 }
481502 }
482503 else throw("Strict value is not equal to itself.")
483504 }
484505
485506
486507
487-@Callable(aq)
488-func startPeriod (t) = {
489- let aT = m("startPeriod")
490- if ((aT == aT))
508+@Callable(as)
509+func startPeriod (u) = {
510+ let aW = n("startPeriod")
511+ if ((aW == aW))
491512 then {
492- let aH = ac(t)
493- if ((aH == aH))
513+ let aJ = ae(u)
514+ if ((aJ == aJ))
494515 then {
495- let aZ = u(t)
496- let ba = N(t, aZ)
497- let bb = valueOrErrorMessage(getInteger(ba), ("key not found: " + ba))
498- if ((bb > o))
516+ let bc = v(u)
517+ let bd = P(u, bc)
518+ let be = valueOrErrorMessage(getInteger(bd), ("key not found: " + bd))
519+ if ((be > p))
499520 then throw("too early")
500521 else {
501- let aU = valueOrElse(getInteger(D(t)), 0)
502- let aL = valueOrErrorMessage(getInteger(z(t)), "child not registered")
503- if ((aL > aU))
522+ let aX = valueOrElse(getInteger(E(u)), 0)
523+ let aO = valueOrErrorMessage(getInteger(A(u)), "child not registered")
524+ if ((aO > aX))
504525 then throw("not enough skin in the game")
505526 else {
506- let bc = valueOrElse(getInteger(H(t)), 0)
507-[IntegerEntry(O(t), o), ScriptTransfer(addressFromStringValue(t), bc, Q(t))]
527+ let bf = valueOrElse(getInteger(I(u)), 0)
528+[IntegerEntry(Q(u), p), ScriptTransfer(addressFromStringValue(u), bf, S(u))]
508529 }
509530 }
510531 }
511532 else throw("Strict value is not equal to itself.")
512533 }
513534 else throw("Strict value is not equal to itself.")
514535 }
515536
516537
517538
518-@Callable(aq)
519-func slash (t,aM) = {
520- let aT = m("/")
521- if ((aT == aT))
522- then if (!(contains(q, toString(aq.caller))))
539+@Callable(as)
540+func slash (u,aP) = {
541+ let aW = n("/")
542+ if ((aW == aW))
543+ then if (!(contains(r, toString(as.caller))))
523544 then throw("denied")
524- else if (!(isDefined(getInteger(L(t)))))
545+ else if (!(isDefined(getInteger(N(u)))))
525546 then throw("not started")
526- else [e(D(t), -(aM)), Burn(p, aM)]
547+ else [f(E(u), -(aP)), Burn(q, aP)]
527548 else throw("Strict value is not equal to itself.")
528549 }
529550
530551
531552
532-@Callable(aq)
533-func completeFor (t,S) = if (!(contains(r, toString(aq.caller))))
553+@Callable(as)
554+func completeFor (u,U) = if (!(contains(s, toString(as.caller))))
534555 then throw("denied")
535556 else {
536- let aX = aj(t)
537- if ((aX > o))
557+ let ba = al(u)
558+ if ((ba > p))
538559 then throw("still locked")
539560 else {
540- let bd = ag(t)
541- let aw = valueOrElse(getInteger(T(t, S)), 0)
542- if ((aw > bd))
543- then throw((("you can unlock on " + toString(aw)) + " round"))
561+ let bg = ai(u)
562+ let ay = valueOrElse(getInteger(V(u, U)), 0)
563+ if ((ay > bg))
564+ then throw((("you can unlock on " + toString(ay)) + " round"))
544565 else {
545- let ay = ae(t, S)
546- if ((ay == 0))
566+ let aA = ag(u, U)
567+ if ((aA == 0))
547568 then throw("you had no skin in the game")
548- else $Tuple2([ScriptTransfer(aq.caller, ay, p), DeleteEntry(R(t, S)), e(D(t), -(ay)), e(E, -(ay)), IntegerEntry(U(t, S, bd), ay)], ay)
569+ else $Tuple2([ScriptTransfer(as.caller, aA, q), DeleteEntry(T(u, U)), f(E(u), -(aA)), f(F, -(aA)), IntegerEntry(W(u, U, bg), aA)], aA)
549570 }
550571 }
551572 }
552573
553574
554575
555-@Callable(aq)
556-func cancel (t) = {
557- let aT = m("cancel")
558- if ((aT == aT))
576+@Callable(as)
577+func cancel (u) = {
578+ let aW = n("cancel")
579+ if ((aW == aW))
559580 then {
560- let aH = if (Z(t))
581+ let aJ = if (ab(u))
561582 then true
562- else ab(t)
563- if ((aH == aH))
564- then if ((toString(aq.caller) != getStringValue(v(t))))
583+ else ad(u)
584+ if ((aJ == aJ))
585+ then if ((toString(as.caller) != getStringValue(w(u))))
565586 then throw("denied. not an owner")
566- else [IntegerEntry(P(t), o)]
587+ else [IntegerEntry(R(u), p)]
567588 else throw("Strict value is not equal to itself.")
568589 }
569590 else throw("Strict value is not equal to itself.")
570591 }
571592
572593
573594
574-@Callable(aq)
575-func undoInvest (t) = {
576- let aT = m("undoInvest")
577- if ((aT == aT))
595+@Callable(as)
596+func undoInvest (u) = {
597+ let aW = n("undoInvest")
598+ if ((aW == aW))
578599 then {
579- let aH = Z(t)
580- if ((aH == aH))
600+ let aJ = ab(u)
601+ if ((aJ == aJ))
581602 then {
582- let be = V(t, toString(aq.caller))
583- let aB = valueOrElse(getInteger(be), 0)
584- if ((aB == 0))
603+ let bh = X(u, toString(as.caller))
604+ let aD = valueOrElse(getInteger(bh), 0)
605+ if ((aD == 0))
585606 then throw("no investments")
586- else [DeleteEntry(be), e(G(t), -(aB)), e(H(t), -(aB)), ScriptTransfer(aq.caller, aB, Q(t))]
607+ else [DeleteEntry(bh), f(H(u), -(aD)), f(I(u), -(aD)), ScriptTransfer(as.caller, aD, S(u))]
587608 }
588609 else throw("Strict value is not equal to itself.")
589610 }
590611 else throw("Strict value is not equal to itself.")
591612 }
592613
593614
594615
595-@Callable(aq)
596-func undoCommitFor (t,ar) = {
597- let aT = m("undoCommitFor")
598- if ((aT == aT))
599- then if (!(contains(r, toString(aq.caller))))
616+@Callable(as)
617+func undoCommitFor (u,at) = {
618+ let aW = n("undoCommitFor")
619+ if ((aW == aW))
620+ then if (!(contains(s, toString(as.caller))))
600621 then throw("denied")
601622 else {
602- let aH = Z(t)
603- if ((aH == aH))
623+ let aJ = ab(u)
624+ if ((aJ == aJ))
604625 then {
605- let bf = R(t, ar)
606- let ay = valueOrElse(getInteger(bf), 0)
607- if ((ay == 0))
626+ let bi = T(u, at)
627+ let aA = valueOrElse(getInteger(bi), 0)
628+ if ((aA == 0))
608629 then throw("no skin")
609- else $Tuple2([DeleteEntry(bf), e(D(t), -(ay)), e(E, -(ay)), ScriptTransfer(aq.caller, ay, p)], ay)
630+ else $Tuple2([DeleteEntry(bi), f(E(u), -(aA)), f(F, -(aA)), ScriptTransfer(as.caller, aA, q)], aA)
610631 }
611632 else throw("Strict value is not equal to itself.")
612633 }
613634 else throw("Strict value is not equal to itself.")
614635 }
615636
616637
617638
618-@Callable(aq)
619-func userPower (t,S) = $Tuple2(nil, valueOrElse(ad(t, S), 0))
639+@Callable(as)
640+func userPower (u,U) = $Tuple2(nil, valueOrElse(af(u, U), 0))
620641
621642
622643
623-@Callable(aq)
624-func totalPower (t) = $Tuple2(nil, valueOrErrorMessage(getInteger(D(t)), "totalPower: child not found"))
644+@Callable(as)
645+func totalPower (u) = $Tuple2(nil, valueOrErrorMessage(getInteger(E(u)), "totalPower: child not found"))
625646
626647
627648
628-@Callable(aq)
629-func init (bg) = [a(k, bg)]
649+@Callable(as)
650+func init (bj) = [a(l, bj)]
630651
631652

github/deemru/w8io/873ac7e 
331.66 ms