tx · BVYgNmwxdYep6xXWHL6P9DDVAptudMqpAp1JMie9oUzL

3N3gSFrTwgiLAFZHMuJrEttht1nPhnkpvjs:  -0.01800000 Waves

2022.11.24 17:49 [2331318] smart account 3N3gSFrTwgiLAFZHMuJrEttht1nPhnkpvjs > SELF 0.00000000 Waves

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

github/deemru/w8io/873ac7e 
56.87 ms