tx · AXzJC9BUQaA72N1C1gr4GTjq79rfc4Xrgevf5Zt8QNGy

3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL:  -0.02900000 Waves

2022.06.22 16:27 [2107661] smart account 3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL > SELF 0.00000000 Waves

{ "type": 13, "id": "AXzJC9BUQaA72N1C1gr4GTjq79rfc4Xrgevf5Zt8QNGy", "fee": 2900000, "feeAssetId": null, "timestamp": 1655904489578, "version": 1, "sender": "3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL", "senderPublicKey": "DnPyGWCgpQChvoQrnXQRcC9FtN32mPGrcog2wcKHdkVn", "proofs": [ "3iycpHoH6fbNyUacrTSvJTyG26kGShDpUxF3EfC3K6Cdk9NUoQpQiGHdu3sexoRka36tNbdRwt3v7r5k3y89ApWS" ], "script": "base64:BgJhCAISAwoBCBIAEgQKAggBEggKBggICAgIARIECgIICBIFCgMICAESBAoCCAgSAwoBARIDCgEBEgQKAggIEgMKAQgSABIDCgEBEgASAwoBCBIECgIICBIECgIICBIECgIICDIACXNlcGFyYXRvcgICX18ADnBvb2xXZWlnaHRNdWx0AIDC1y8AD21heERlcHRoRGVmYXVsdAAKABZmaW5hbGl6YXRpb25TdGFnZVRvdGFsAAAAF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzAAEADmtleUVwb2NoTGVuZ3RoCQC5CQIJAMwIAgICJXMJAMwIAgILZXBvY2hMZW5ndGgFA25pbAUJc2VwYXJhdG9yAA9rZXlDdXJyZW50RXBvY2gJALkJAgkAzAgCAgIlcwkAzAgCAgxjdXJyZW50RXBvY2gFA25pbAUJc2VwYXJhdG9yAAtrZXlNYXhEZXB0aAkAuQkCCQDMCAICAiVzCQDMCAICCG1heERlcHRoBQNuaWwFCXNlcGFyYXRvcgAia2V5Vm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdAkAuQkCCQDMCAICAiVzCQDMCAICH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QFA25pbAUJc2VwYXJhdG9yABJrZXlGYWN0b3J5Q29udHJhY3QJALkJAgkAzAgCAgIlcwkAzAgCAg9mYWN0b3J5Q29udHJhY3QFA25pbAUJc2VwYXJhdG9yABNrZXlCb29zdGluZ0NvbnRyYWN0CQC5CQIJAMwIAgICJXMJAMwIAgIQYm9vc3RpbmdDb250cmFjdAUDbmlsBQlzZXBhcmF0b3IAEmtleVN0YWtpbmdDb250cmFjdAkAuQkCCQDMCAICAiVzCQDMCAICD3N0YWtpbmdDb250cmFjdAUDbmlsBQlzZXBhcmF0b3IAFmtleUFzc2V0c1N0b3JlQ29udHJhY3QJALkJAgkAzAgCAgIlcwkAzAgCAhNhc3NldHNTdG9yZUNvbnRyYWN0BQNuaWwFCXNlcGFyYXRvcgAUa2V5RmluYWxpemF0aW9uU3RhZ2UJALkJAgkAzAgCAgIlcwkAzAgCAhFmaW5hbGl6YXRpb25TdGFnZQUDbmlsBQlzZXBhcmF0b3IAC2tleU5leHRQb29sCQC5CQIJAMwIAgICJXMJAMwIAgIIbmV4dFBvb2wFA25pbAUJc2VwYXJhdG9yAAtrZXlOZXh0VXNlcgkAuQkCCQDMCAICAiVzCQDMCAICCG5leHRVc2VyBQNuaWwFCXNlcGFyYXRvcgAOa2V5U3RhcnRIZWlnaHQJALkJAgkAzAgCAgIlcwkAzAgCAgtzdGFydEhlaWdodAUDbmlsBQlzZXBhcmF0b3IAEWtleUN1cnJlbnRFcG9jaFVpCQC5CQIJAMwIAgICJXMJAMwIAgIOY3VycmVudEVwb2NoVWkFA25pbAUJc2VwYXJhdG9yABBrZXlTdGFydEhlaWdodFVpCQC5CQIJAMwIAgICJXMJAMwIAgINc3RhcnRIZWlnaHRVaQUDbmlsBQlzZXBhcmF0b3IBFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAEFZXBvY2gJALkJAgkAzAgCAgQlcyVkCQDMCAICC3N0YXJ0SGVpZ2h0CQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQxrZXlGaW5hbGl6ZWQBBWVwb2NoCQC5CQIJAMwIAgIEJXMlZAkAzAgCAglmaW5hbGl6ZWQJAMwIAgkApAMBBQVlcG9jaAUDbmlsBQlzZXBhcmF0b3IBCWtleUluTGlzdAEEcG9vbAQLJHQwMTUxNzE1NTcFBHBvb2wEDWFtb3VudEFzc2V0SWQIBQskdDAxNTE3MTU1NwJfMQQMcHJpY2VBc3NldElkCAULJHQwMTUxNzE1NTcCXzIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIGaW5MaXN0CQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkBQNuaWwFCXNlcGFyYXRvcgEHa2V5VXNlZAIHYWRkcmVzcwVlcG9jaAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAgR1c2VkCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCCQCkAwEFBWVwb2NoBQNuaWwFCXNlcGFyYXRvcgEHa2V5Vm90ZQMEcG9vbAdhZGRyZXNzBWVwb2NoBAskdDAxODMxMTg3MQUEcG9vbAQNYW1vdW50QXNzZXRJZAgFCyR0MDE4MzExODcxAl8xBAxwcmljZUFzc2V0SWQIBQskdDAxODMxMTg3MQJfMgkAuQkCCQDMCAICCiVzJXMlcyVzJWQJAMwIAgIEdm90ZQkAzAgCBQ1hbW91bnRBc3NldElkCQDMCAIFDHByaWNlQXNzZXRJZAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgkApAMBBQVlcG9jaAUDbmlsBQlzZXBhcmF0b3IBD2tleVZvdGluZ1Jlc3VsdAIEcG9vbAVlcG9jaAQLJHQwMjA1MzIwOTMFBHBvb2wEDWFtb3VudEFzc2V0SWQIBQskdDAyMDUzMjA5MwJfMQQMcHJpY2VBc3NldElkCAULJHQwMjA1MzIwOTMCXzIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAgx2b3RpbmdSZXN1bHQJAMwIAgUNYW1vdW50QXNzZXRJZAkAzAgCBQxwcmljZUFzc2V0SWQJAMwIAgkApAMBBQVlcG9jaAUDbmlsBQlzZXBhcmF0b3IBDGtleVBvb2xTaGFyZQIEcG9vbAVlcG9jaAQLJHQwMjI1ODIyOTgFBHBvb2wEDWFtb3VudEFzc2V0SWQIBQskdDAyMjU4MjI5OAJfMQQMcHJpY2VBc3NldElkCAULJHQwMjI1ODIyOTgCXzIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAglwb29sU2hhcmUJAMwIAgUNYW1vdW50QXNzZXRJZAkAzAgCBQxwcmljZUFzc2V0SWQJAMwIAgkApAMBBQVlcG9jaAUDbmlsBQlzZXBhcmF0b3IBDWtleVRvdGFsVm90ZXMBBWVwb2NoCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgp0b3RhbFZvdGVzCQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQ5nZXRWYWx1ZU9yRmFpbAMHYWRkcmVzcwNrZXkEdHlwZQQFZXJyb3IJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIACQETdmFsdWVPckVycm9yTWVzc2FnZQIEByRtYXRjaDAFBHR5cGUDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANzdHIFByRtYXRjaDAJAJ0IAgUHYWRkcmVzcwUDa2V5AwkAAQIFByRtYXRjaDACA0ludAQDaW50BQckbWF0Y2gwCQCaCAIFB2FkZHJlc3MFA2tleQkAAgECEmludmFsaWQgZW50cnkgdHlwZQUFZXJyb3IBDGdldFN0ck9yRmFpbAIHYWRkcmVzcwNrZXkKAAFACQEOZ2V0VmFsdWVPckZhaWwDBQdhZGRyZXNzBQNrZXkCAAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBCQEOZ2V0VmFsdWVPckZhaWwDBQdhZGRyZXNzBQNrZXkCAAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nAQxnZXRJbnRPckZhaWwCB2FkZHJlc3MDa2V5CgABQAkBDmdldFZhbHVlT3JGYWlsAwUHYWRkcmVzcwUDa2V5AAADCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQkBDmdldFZhbHVlT3JGYWlsAwUHYWRkcmVzcwUDa2V5AAACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAEMcG9vbFRvU3RyaW5nAQRwb29sCQCsAgIJAKwCAggFBHBvb2wCXzEFCXNlcGFyYXRvcggFBHBvb2wCXzIBDHN0cmluZ1RvUG9vbAEDc3RyBAVwYXJ0cwkAtQkCBQNzdHIFCXNlcGFyYXRvcgMJAAACCQCQAwEFBXBhcnRzAAIJAJQKAgkAkQMCBQVwYXJ0cwAACQCRAwIFBXBhcnRzAAEJAAIBAhNpbnZhbGlkIHBvb2wgc3RyaW5nARZnZXRMcEFzc2V0QnlQb29sQXNzZXRzAg1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAoBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBDGJhc2VBc3NldFN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQxiYXNlQXNzZXRTdHIKASlrZXlNYXBwaW5nUG9vbEFzc2V0c1RvUG9vbENvbnRyYWN0QWRkcmVzcwIYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyF2ludGVybmFsUHJpY2VBc3NldElkU3RyCQCsAgIJAKwCAgkArAICCQCsAgICCiVkJWQlcyVzX18JAKQDAQUYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyAgJfXwkApAMBBRdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgIjX19tYXBwaW5nc19fcG9vbEFzc2V0czJQb29sQ29udHJhY3QKAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0ARNwb29sQ29udHJhY3RBZGRyZXNzCQCsAgIJAKwCAgIIJXMlcyVzX18FE3Bvb2xDb250cmFjdEFkZHJlc3MCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0BA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzBRJrZXlGYWN0b3J5Q29udHJhY3QEFWFtb3VudEFzc2V0SW50ZXJuYWxJZAkBDGdldEludE9yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQ1hbW91bnRBc3NldElkBBRwcmljZUFzc2V0SW50ZXJuYWxJZAkBDGdldEludE9yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBBQxwcmljZUFzc2V0SWQEE3Bvb2xDb250cmFjdEFkZHJlc3MJAQxnZXRTdHJPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJASlrZXlNYXBwaW5nUG9vbEFzc2V0c1RvUG9vbENvbnRyYWN0QWRkcmVzcwIFFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUUcHJpY2VBc3NldEludGVybmFsSWQECWxwQXNzZXRJZAkBDGdldFN0ck9yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQBBRNwb29sQ29udHJhY3RBZGRyZXNzBQlscEFzc2V0SWQBD2lzQXNzZXRWZXJpZmllZAEHYXNzZXRJZAQTYXNzZXRzU3RvcmVDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBDGdldFN0ck9yRmFpbAIFBHRoaXMFFmtleUFzc2V0c1N0b3JlQ29udHJhY3QECmlzVmVyaWZpZWQKAAFACQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCEmlzVmVyaWZpZWRSRUFET05MWQkAzAgCBQdhc3NldElkBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0AhJpc1ZlcmlmaWVkUkVBRE9OTFkJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4FCmlzVmVyaWZpZWQADXBvb2xzTGlzdE5hbWUCBXBvb2xzARBnZXRWb3Rlc0xpc3ROYW1lAQRwb29sBAskdDA0ODM4NDg3OAUEcG9vbAQNYW1vdW50QXNzZXRJZAgFCyR0MDQ4Mzg0ODc4Al8xBAxwcmljZUFzc2V0SWQIBQskdDA0ODM4NDg3OAJfMgkAuQkCCQDMCAICBXZvdGVzCQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkBQNuaWwFCXNlcGFyYXRvcgELa2V5TGlzdEhlYWQBCGxpc3ROYW1lBARtZXRhAwkAAAIFCGxpc3ROYW1lBQ1wb29sc0xpc3ROYW1lAgQlcyVzAgglcyVzJXMlcwkAuQkCCQDMCAIFBG1ldGEJAMwIAgUIbGlzdE5hbWUJAMwIAgIEaGVhZAUDbmlsBQlzZXBhcmF0b3IBC2tleUxpc3RTaXplAQhsaXN0TmFtZQQEbWV0YQMJAAACBQhsaXN0TmFtZQUNcG9vbHNMaXN0TmFtZQIEJXMlcwIIJXMlcyVzJXMJALkJAgkAzAgCBQRtZXRhCQDMCAIFCGxpc3ROYW1lCQDMCAICBHNpemUFA25pbAUJc2VwYXJhdG9yAQtrZXlMaXN0UHJldgIIbGlzdE5hbWUCaWQEBG1ldGEDCQAAAgUIbGlzdE5hbWUFDXBvb2xzTGlzdE5hbWUCCCVzJXMlcyVzAgolcyVzJXMlcyVzCQC5CQIJAMwIAgUEbWV0YQkAzAgCBQhsaXN0TmFtZQkAzAgCBQJpZAkAzAgCAgRwcmV2BQNuaWwFCXNlcGFyYXRvcgELa2V5TGlzdE5leHQCCGxpc3ROYW1lAmlkBARtZXRhAwkAAAIFCGxpc3ROYW1lBQ1wb29sc0xpc3ROYW1lAgglcyVzJXMlcwIKJXMlcyVzJXMlcwkAuQkCCQDMCAIFBG1ldGEJAMwIAgUIbGlzdE5hbWUJAMwIAgUCaWQJAMwIAgIEbmV4dAUDbmlsBQlzZXBhcmF0b3IBDGNvbnRhaW5zTm9kZQIIbGlzdE5hbWUCaWQECmhlYWRPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RIZWFkAQUIbGlzdE5hbWUECnByZXZPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkBApuZXh0T3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAMDCQAAAgUCaWQJAQt2YWx1ZU9yRWxzZQIFCmhlYWRPclVuaXQCAAYJAQIhPQIFCnByZXZPclVuaXQFBHVuaXQGCQECIT0CBQpuZXh0T3JVbml0BQR1bml0ARFpbnNlcnROb2RlQWN0aW9ucwIIbGlzdE5hbWUCaWQECmhlYWRPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RIZWFkAQUIbGlzdE5hbWUECGxpc3RTaXplCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQtrZXlMaXN0U2l6ZQEFCGxpc3ROYW1lAAAECWNoZWNrTm9kZQMJAQEhAQkBDGNvbnRhaW5zTm9kZQIFCGxpc3ROYW1lBQJpZAYJAAIBAgtOb2RlIGV4aXN0cwMJAAACBQljaGVja05vZGUFCWNoZWNrTm9kZQkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtrZXlMaXN0U2l6ZQEFCGxpc3ROYW1lCQBkAgUIbGlzdFNpemUAAQUDbmlsAwkBAiE9AgUKaGVhZE9yVW5pdAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQUCaWQJAQV2YWx1ZQEFCmhlYWRPclVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCmhlYWRPclVuaXQFAmlkBQNuaWwFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQUCaWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgERZGVsZXRlTm9kZUFjdGlvbnMCCGxpc3ROYW1lAmlkBApoZWFkT3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0SGVhZAEFCGxpc3ROYW1lBAhsaXN0U2l6ZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQELa2V5TGlzdFNpemUBBQhsaXN0TmFtZQAABApwcmV2T3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0UHJldgIFCGxpc3ROYW1lBQJpZAQKbmV4dE9yVW5pdAkAnQgCBQR0aGlzCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQUCaWQJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBC2tleUxpc3RTaXplAQUIbGlzdE5hbWUJAGUCBQhsaXN0U2l6ZQABBQNuaWwDAwkBAiE9AgUKcHJldk9yVW5pdAUEdW5pdAkBAiE9AgUKbmV4dE9yVW5pdAUEdW5pdAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleUxpc3ROZXh0AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCnByZXZPclVuaXQJAQV2YWx1ZQEFCm5leHRPclVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCm5leHRPclVuaXQJAQV2YWx1ZQEFCnByZXZPclVuaXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAUDbmlsAwkBAiE9AgUKbmV4dE9yVW5pdAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQkBBXZhbHVlAQUKbmV4dE9yVW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQUCaWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCm5leHRPclVuaXQFA25pbAMJAQIhPQIFCnByZXZPclVuaXQFBHVuaXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lCQEFdmFsdWUBBQpwcmV2T3JVbml0BQNuaWwDCQAAAgUCaWQJAQt2YWx1ZU9yRWxzZQIFCmhlYWRPclVuaXQCAAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQUDbmlsCQACAQkArAICCQCsAgIJAKwCAgIOaW52YWxpZCBub2RlOiAFCGxpc3ROYW1lAgEuBQJpZAETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABVwZXJtaXNzaW9uRGVuaWVkRXJyb3IJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAEIbXVzdFRoaXMBAWkDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUVcGVybWlzc2lvbkRlbmllZEVycm9yAQttdXN0TWFuYWdlcgEBaQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBRVwZXJtaXNzaW9uRGVuaWVkRXJyb3IDCQABAgUHJG1hdGNoMAIEVW5pdAkBCG11c3RUaGlzAQUBaQkAAgECC01hdGNoIGVycm9yEgFpAQpzZXRNYW5hZ2VyARdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBVjaGVja01hbmFnZXJQdWJsaWNLZXkJANkEAQUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAgUVY2hlY2tNYW5hZ2VyUHVibGljS2V5BRVjaGVja01hbmFnZXJQdWJsaWNLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb25maXJtTWFuYWdlcgAEAnBtCQEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAVoYXNQTQMJAQlpc0RlZmluZWQBBQJwbQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUFaGFzUE0FBWhhc1BNBAdjaGVja1BNAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCcG0GCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFB2NoZWNrUE0FB2NoZWNrUE0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleU1hbmFnZXJQdWJsaWNLZXkACQDYBAEJAQV2YWx1ZQEFAnBtCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQCC3VzZXJBZGRyZXNzDHRhcmdldEhlaWdodAQXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQEMZ2V0U3RyT3JGYWlsAgUEdGhpcwUTa2V5Qm9vc3RpbmdDb250cmFjdAIhaW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQCUCgIFA25pbAoAAUAJAPwHBAUXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MCIGdldFVzZXJHd3hBbW91bnRBdEhlaWdodFJFQURPTkxZCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFDHRhcmdldEhlaWdodAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQkA/AcEBRdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwIgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkJAMwIAgULdXNlckFkZHJlc3MJAMwIAgUMdGFyZ2V0SGVpZ2h0BQNuaWwFA25pbAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AWkBC2NvbnN0cnVjdG9yBg9mYWN0b3J5Q29udHJhY3Qfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdBBib29zdGluZ0NvbnRyYWN0D3N0YWtpbmdDb250cmFjdBNhc3NldHNTdG9yZUNvbnRyYWN0C2Vwb2NoTGVuZ3RoBAVjaGVrcwkAzAgCCQELbXVzdE1hbmFnZXIBBQFpCQDMCAIDCQECIT0CCQCmCAEFD2ZhY3RvcnlDb250cmFjdAUEdW5pdAYCIGludmFsaWQgZmFjdG9yeSBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQECIT0CCQCmCAEFH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QFBHVuaXQGAjJpbnZhbGlkIHZvdGluZyBlbWlzc2lvbiBjYW5kaWRhdGUgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBRBib29zdGluZ0NvbnRyYWN0BQR1bml0BgIhaW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQECIT0CCQCmCAEFD3N0YWtpbmdDb250cmFjdAUEdW5pdAYCIGludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQECIT0CCQCmCAEFE2Fzc2V0c1N0b3JlQ29udHJhY3QFBHVuaXQGAiVpbnZhbGlkIGFzc2V0cyBzdG9yZSBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQBmAgULZXBvY2hMZW5ndGgAAAYJAAIBAhRpbnZhbGlkIGVwb2NoIGxlbmd0aAUDbmlsAwkAAAIFBWNoZWtzBQVjaGVrcwkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFEmtleUZhY3RvcnlDb250cmFjdAUPZmFjdG9yeUNvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIFImtleVZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QFH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgUTa2V5Qm9vc3RpbmdDb250cmFjdAUQYm9vc3RpbmdDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCBRJrZXlTdGFraW5nQ29udHJhY3QFD3N0YWtpbmdDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCBRZrZXlBc3NldHNTdG9yZUNvbnRyYWN0BRNhc3NldHNTdG9yZUNvbnRyYWN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5rZXlFcG9jaExlbmd0aAULZXBvY2hMZW5ndGgFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQZjcmVhdGUCDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkBAZjaGVja3MJAMwIAgMJAAACCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUia2V5Vm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdAIABgkBC211c3RNYW5hZ2VyAQUBaQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBARwb29sCQCUCgIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAQNaW5MaXN0QWN0aW9ucwkAzggCCQDMCAIJAQxCb29sZWFuRW50cnkCCQEJa2V5SW5MaXN0AQUEcG9vbAYFA25pbAkBEWluc2VydE5vZGVBY3Rpb25zAgUNcG9vbHNMaXN0TmFtZQkBDHBvb2xUb1N0cmluZwEFBHBvb2wEGGN1cnJlbnRFcG9jaElzTm90RGVmaW5lZAkAAAIJAJoIAgUEdGhpcwUPa2V5Q3VycmVudEVwb2NoBQR1bml0BBJzdGFydEhlaWdodEFjdGlvbnMDBRhjdXJyZW50RXBvY2hJc05vdERlZmluZWQEBWVwb2NoAAAJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tleUN1cnJlbnRFcG9jaAUFZXBvY2gJAMwIAgkBDEludGVnZXJFbnRyeQIJARVrZXlTdGFydEhlaWdodEJ5RXBvY2gBBQVlcG9jaAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5rZXlTdGFydEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrZXlDdXJyZW50RXBvY2hVaQUFZXBvY2gJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVN0YXJ0SGVpZ2h0VWkFBmhlaWdodAUDbmlsBQNuaWwJAJQKAgkAzggCBQ1pbkxpc3RBY3Rpb25zBRJzdGFydEhlaWdodEFjdGlvbnMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEEdm90ZQMNYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQGYW1vdW50BARwb29sCQCUCgIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAQFZXBvY2gJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUPa2V5Q3VycmVudEVwb2NoAAAEC3N0YXJ0SGVpZ2h0CQEMZ2V0SW50T3JGYWlsAgUEdGhpcwkBFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAEFBWVwb2NoBAtlcG9jaExlbmd0aAkBDGdldEludE9yRmFpbAIFBHRoaXMFDmtleUVwb2NoTGVuZ3RoBAllbmRIZWlnaHQJAGQCBQtzdGFydEhlaWdodAULZXBvY2hMZW5ndGgEF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0CQCaCAIFBHRoaXMFFGtleUZpbmFsaXphdGlvblN0YWdlBAR1c2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQdrZXlVc2VkAggFAWkGY2FsbGVyBQVlcG9jaAAABAR2b3RlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQdrZXlWb3RlAwUEcG9vbAgFAWkGY2FsbGVyBQVlcG9jaAAABApwb29sUmVzdWx0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ9rZXlWb3RpbmdSZXN1bHQCBQRwb29sBQVlcG9jaAAABAp0b3RhbFZvdGVzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ1rZXlUb3RhbFZvdGVzAQUFZXBvY2gAAAQTZ3d4QW1vdW50QXRFbmRUb3RhbAoAAUAJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkAzAgCBQllbmRIZWlnaHQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkAzAgCBQllbmRIZWlnaHQFA25pbAUDbmlsAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQECWF2YWlsYWJsZQkAZQIFE2d3eEFtb3VudEF0RW5kVG90YWwFBHVzZWQEB25ld1ZvdGUJAGQCBQR2b3RlBQZhbW91bnQEFWlzQW1vdW50QXNzZXRWZXJpZmllZAkBD2lzQXNzZXRWZXJpZmllZAEFDWFtb3VudEFzc2V0SWQEBmNoZWNrcwkAzAgCAwkBAiE9AgkAoAgBCQEJa2V5SW5MaXN0AQUEcG9vbAUEdW5pdAYJAAIBAg5pbnZhbGlkIGFzc2V0cwkAzAgCAwkAZgIFCWVuZEhlaWdodAUGaGVpZ2h0BgkAAgECDmludmFsaWQgaGVpZ2h0CQDMCAIDCQAAAgUXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQFBHVuaXQGCQACAQIYZmluYWxpemF0aW9uIGluIHByb2dyZXNzCQDMCAIDCQBmAgUTZ3d4QW1vdW50QXRFbmRUb3RhbAAABgkAAgECE3lvdSBkbyBub3QgaGF2ZSBnV1gJAMwIAgMDCQBmAgUGYW1vdW50AAAJAGcCBQlhdmFpbGFibGUFBmFtb3VudAcGCQACAQIOaW52YWxpZCBhbW91bnQJAMwIAgMFFWlzQW1vdW50QXNzZXRWZXJpZmllZAYJAAIBAhxhbW91bnQgYXNzZXQgaXMgbm90IHZlcmlmaWVkBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDXZvdGVzTGlzdE5hbWUJARBnZXRWb3Rlc0xpc3ROYW1lAQUEcG9vbAQOdXNlckFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyBBB2b3Rlc0xpc3RBY3Rpb25zAwkBDGNvbnRhaW5zTm9kZQIFDXZvdGVzTGlzdE5hbWUFDnVzZXJBZGRyZXNzU3RyBQNuaWwJARFpbnNlcnROb2RlQWN0aW9ucwIFDXZvdGVzTGlzdE5hbWUFDnVzZXJBZGRyZXNzU3RyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBB2tleVVzZWQCCAUBaQZjYWxsZXIFBWVwb2NoCQBkAgUEdXNlZAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEHa2V5Vm90ZQMFBHBvb2wIBQFpBmNhbGxlcgUFZXBvY2gFB25ld1ZvdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlWb3RpbmdSZXN1bHQCBQRwb29sBQVlcG9jaAkAZAIFCnBvb2xSZXN1bHQFBmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleVRvdGFsVm90ZXMBBQVlcG9jaAkAZAIFCnRvdGFsVm90ZXMFBmFtb3VudAUDbmlsBRB2b3Rlc0xpc3RBY3Rpb25zBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmNhbmNlbFZvdGUCDWFtb3VudEFzc2V0SWQMcHJpY2VBc3NldElkBARwb29sCQCUCgIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAQFZXBvY2gJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUPa2V5Q3VycmVudEVwb2NoAAAEC3N0YXJ0SGVpZ2h0CQEMZ2V0SW50T3JGYWlsAgUEdGhpcwkBFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAEFBWVwb2NoBAtlcG9jaExlbmd0aAkBDGdldEludE9yRmFpbAIFBHRoaXMFDmtleUVwb2NoTGVuZ3RoBAllbmRIZWlnaHQJAGQCBQtzdGFydEhlaWdodAULZXBvY2hMZW5ndGgEF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0CQCaCAIFBHRoaXMFFGtleUZpbmFsaXphdGlvblN0YWdlBAR1c2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQdrZXlVc2VkAggFAWkGY2FsbGVyBQVlcG9jaAAABAR2b3RlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQdrZXlWb3RlAwUEcG9vbAgFAWkGY2FsbGVyBQVlcG9jaAAABApwb29sUmVzdWx0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ9rZXlWb3RpbmdSZXN1bHQCBQRwb29sBQVlcG9jaAAABAp0b3RhbFZvdGVzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQ1rZXlUb3RhbFZvdGVzAQUFZXBvY2gAAAQGY2hlY2tzCQDMCAIDCQECIT0CCQCgCAEJAQlrZXlJbkxpc3QBBQRwb29sBQR1bml0BgkAAgECDmludmFsaWQgYXNzZXRzCQDMCAIDCQBmAgUJZW5kSGVpZ2h0BQZoZWlnaHQGCQACAQIOaW52YWxpZCBoZWlnaHQJAMwIAgMJAAACBRdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdAUEdW5pdAYJAAIBAhhmaW5hbGl6YXRpb24gaW4gcHJvZ3Jlc3MJAMwIAgMJAGYCBQR2b3RlAAAGCQACAQIHbm8gdm90ZQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA12b3Rlc0xpc3ROYW1lCQEQZ2V0Vm90ZXNMaXN0TmFtZQEFBHBvb2wEDnVzZXJBZGRyZXNzU3RyCQClCAEIBQFpBmNhbGxlcgkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQdrZXlVc2VkAggFAWkGY2FsbGVyBQVlcG9jaAkAlgMBCQDMCAIJAGUCBQR1c2VkBQR2b3RlCQDMCAIAAAUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlWb3RlAwUEcG9vbAgFAWkGY2FsbGVyBQVlcG9jaAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFBWVwb2NoCQBlAgUKcG9vbFJlc3VsdAUEdm90ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleVRvdGFsVm90ZXMBBQVlcG9jaAkAZQIFCnRvdGFsVm90ZXMFBHZvdGUFA25pbAkBEWRlbGV0ZU5vZGVBY3Rpb25zAgUNdm90ZXNMaXN0TmFtZQUOdXNlckFkZHJlc3NTdHIFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOc2V0RXBvY2hMZW5ndGgBDm5ld0Vwb2NoTGVuZ3RoBAVjaGVrcwkAzAgCCQELbXVzdE1hbmFnZXIBBQFpCQDMCAIDCQBmAgUObmV3RXBvY2hMZW5ndGgAAAYJAAIBAhRpbnZhbGlkIGVwb2NoIGxlbmd0aAUDbmlsAwkAAAIFBWNoZWtzBQVjaGVrcwkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5rZXlFcG9jaExlbmd0aAUObmV3RXBvY2hMZW5ndGgFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtzZXRNYXhEZXB0aAELbmV3TWF4RGVwdGgEBWNoZWtzCQDMCAIJAQttdXN0TWFuYWdlcgEFAWkJAMwIAgMJAGYCBQtuZXdNYXhEZXB0aAAABgkAAgECEWludmFsaWQgbWF4IGRlcHRoBQNuaWwDCQAAAgUFY2hla3MFBWNoZWtzCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFC2tleU1heERlcHRoBQtuZXdNYXhEZXB0aAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE3Byb2Nlc3NWb3RlSU5URVJOQUwCB3Bvb2xTdHIOdXNlckFkZHJlc3NTdHIEC2NoZWNrQ2FsbGVyCQEIbXVzdFRoaXMBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdXNlckFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQ51c2VyQWRkcmVzc1N0cgkArAICAipwcm9jZXNzVm90ZUlOVEVSTkFMOiBpbnZhbGlkIHVzZXIgYWRkcmVzcyAFDnVzZXJBZGRyZXNzU3RyBAVlcG9jaAkBDGdldEludE9yRmFpbAIFBHRoaXMFD2tleUN1cnJlbnRFcG9jaAQNZXBvY2hQcmV2aW91cwkAZQIFBWVwb2NoAAEEC2Vwb2NoTGVuZ3RoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUOa2V5RXBvY2hMZW5ndGgEC3N0YXJ0SGVpZ2h0CQEMZ2V0SW50T3JGYWlsAgUEdGhpcwkBFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAEFBWVwb2NoBAllbmRIZWlnaHQJAGQCBQtzdGFydEhlaWdodAULZXBvY2hMZW5ndGgEE3N0YXJ0SGVpZ2h0UHJldmlvdXMJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUNZXBvY2hQcmV2aW91cwQRZW5kSGVpZ2h0UHJldmlvdXMJAGQCBRNzdGFydEhlaWdodFByZXZpb3VzBQtlcG9jaExlbmd0aAQQY2hlY2tUYXJnZXRFcG9jaAMJAGcCBQ1lcG9jaFByZXZpb3VzAAAGCQACAQIrcHJvY2Vzc1ZvdGVJTlRFUk5BTDogaW52YWxpZCBwcmV2aW91cyBlcG9jaAMJAAACBRBjaGVja1RhcmdldEVwb2NoBRBjaGVja1RhcmdldEVwb2NoBARwb29sCQEMc3RyaW5nVG9Qb29sAQUHcG9vbFN0cgQNJHQwMTc0MTgxNzQ1OAUEcG9vbAQNYW1vdW50QXNzZXRJZAgFDSR0MDE3NDE4MTc0NTgCXzEEDHByaWNlQXNzZXRJZAgFDSR0MDE3NDE4MTc0NTgCXzIEFWlzQW1vdW50QXNzZXRWZXJpZmllZAkBD2lzQXNzZXRWZXJpZmllZAEFDWFtb3VudEFzc2V0SWQEE2d3eEFtb3VudEF0RW5kVG90YWwKAAFACQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCBQllbmRIZWlnaHQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFCWVuZEhlaWdodAUDbmlsBQNuaWwCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQbZ3d4QW1vdW50QXRFbmRUb3RhbFByZXZpb3VzCgABQAkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgURZW5kSGVpZ2h0UHJldmlvdXMFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFEWVuZEhlaWdodFByZXZpb3VzBQNuaWwFA25pbAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAp0b3RhbFZvdGVzCQELdmFsdWVPckVsc2UCCQCfCAEJAQ1rZXlUb3RhbFZvdGVzAQUFZXBvY2gAAAQMdm90aW5nUmVzdWx0CQELdmFsdWVPckVsc2UCCQCfCAEJAQ9rZXlWb3RpbmdSZXN1bHQCBQRwb29sBQVlcG9jaAAABAx2b3RlUHJldmlvdXMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEHa2V5Vm90ZQMFBHBvb2wFC3VzZXJBZGRyZXNzBQ1lcG9jaFByZXZpb3VzCQCsAgIJAKwCAgkArAICCQCsAgICFHByb2Nlc3NWb3RlSU5URVJOQUwgBQdwb29sU3RyAgEgBQ51c2VyQWRkcmVzc1N0cgISOiBubyBwcmV2aW91cyB2b3RlBAR1c2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQdrZXlVc2VkAgULdXNlckFkZHJlc3MFBWVwb2NoAAAEB25ld1ZvdGUJAGsDBQx2b3RlUHJldmlvdXMFE2d3eEFtb3VudEF0RW5kVG90YWwFG2d3eEFtb3VudEF0RW5kVG90YWxQcmV2aW91cwQHYWN0aW9ucwMDCQBmAgUHbmV3Vm90ZQAABRVpc0Ftb3VudEFzc2V0VmVyaWZpZWQHCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEHa2V5Vm90ZQMFBHBvb2wFC3VzZXJBZGRyZXNzBQVlcG9jaAUHbmV3Vm90ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleVRvdGFsVm90ZXMBBQVlcG9jaAkAZAIFCnRvdGFsVm90ZXMFB25ld1ZvdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlWb3RpbmdSZXN1bHQCBQRwb29sBQVlcG9jaAkAZAIFDHZvdGluZ1Jlc3VsdAUHbmV3Vm90ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBB2tleVVzZWQCBQt1c2VyQWRkcmVzcwUFZXBvY2gJAGQCBQR1c2VkBQduZXdWb3RlBQNuaWwJARFkZWxldGVOb2RlQWN0aW9ucwIJARBnZXRWb3Rlc0xpc3ROYW1lAQUEcG9vbAUOdXNlckFkZHJlc3NTdHIJAJQKAgUHYWN0aW9ucwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARNwcm9jZXNzUG9vbElOVEVSTkFMAQdwb29sU3RyBAtjaGVja0NhbGxlcgkBCG11c3RUaGlzAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEC3RhcmdldEVwb2NoCQBlAgkBDGdldEludE9yRmFpbAIFBHRoaXMFD2tleUN1cnJlbnRFcG9jaAABBBBjaGVja1RhcmdldEVwb2NoAwkAZwIFC3RhcmdldEVwb2NoAAAGCQACAQIpcHJvY2Vzc1Bvb2xJTlRFUk5BTDogaW52YWxpZCB0YXJnZXQgZXBvY2gDCQAAAgUQY2hlY2tUYXJnZXRFcG9jaAUQY2hlY2tUYXJnZXRFcG9jaAQEcG9vbAkBDHN0cmluZ1RvUG9vbAEFB3Bvb2xTdHIEDSR0MDE4OTk3MTkwMzcFBHBvb2wEDWFtb3VudEFzc2V0SWQIBQ0kdDAxODk5NzE5MDM3Al8xBAxwcmljZUFzc2V0SWQIBQ0kdDAxODk5NzE5MDM3Al8yBA9zdGFraW5nQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzBRJrZXlTdGFraW5nQ29udHJhY3QED2ZhY3RvcnlDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBDGdldFN0ck9yRmFpbAIFBHRoaXMFEmtleUZhY3RvcnlDb250cmFjdAQJbHBBc3NldElkCQEWZ2V0THBBc3NldEJ5UG9vbEFzc2V0cwIFDWFtb3VudEFzc2V0SWQFDHByaWNlQXNzZXRJZAQBcgoAAUAJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhJ1c2Vyc0xpc3RUcmF2ZXJzYWwJAMwIAgUJbHBBc3NldElkBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQkA/AcEBQ9zdGFraW5nQ29udHJhY3QCEnVzZXJzTGlzdFRyYXZlcnNhbAkAzAgCBQlscEFzc2V0SWQFA25pbAUDbmlsAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFAXIFAXIDBQFyCQCUCgIFA25pbAYEFWlzQW1vdW50QXNzZXRWZXJpZmllZAkBD2lzQXNzZXRWZXJpZmllZAEFDWFtb3VudEFzc2V0SWQECnRvdGFsVm90ZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDWtleVRvdGFsVm90ZXMBBQt0YXJnZXRFcG9jaAAABAx2b3RpbmdSZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFC3RhcmdldEVwb2NoAAAEBXNoYXJlAwMJAAACBQp0b3RhbFZvdGVzAAAGCQEBIQEFFWlzQW1vdW50QXNzZXRWZXJpZmllZAAACQBrAwUMdm90aW5nUmVzdWx0BQ5wb29sV2VpZ2h0TXVsdAUKdG90YWxWb3RlcwQPbW9kaWZ5V2VpZ2h0SW52CQD8BwQFD2ZhY3RvcnlDb250cmFjdAIMbW9kaWZ5V2VpZ2h0CQDMCAIFCWxwQXNzZXRJZAkAzAgCBQVzaGFyZQUDbmlsBQNuaWwDCQAAAgUPbW9kaWZ5V2VpZ2h0SW52BQ9tb2RpZnlXZWlnaHRJbnYEEHBvb2xzTGlzdEFjdGlvbnMDBRVpc0Ftb3VudEFzc2V0VmVyaWZpZWQFA25pbAkAzggCCQDMCAIJAQtEZWxldGVFbnRyeQEJAQlrZXlJbkxpc3QBBQRwb29sBQNuaWwJARFkZWxldGVOb2RlQWN0aW9ucwIFDXBvb2xzTGlzdE5hbWUFB3Bvb2xTdHIJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5UG9vbFNoYXJlAgUEcG9vbAULdGFyZ2V0RXBvY2gFBXNoYXJlBQNuaWwFEHBvb2xzTGlzdEFjdGlvbnMHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmZpbmFsaXplSGVscGVyAAQFZXBvY2gJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUPa2V5Q3VycmVudEVwb2NoAAAEDXByZXZpb3VzRXBvY2gJAGUCBQVlcG9jaAABBAtzdGFydEhlaWdodAkBDGdldEludE9yRmFpbAIFBHRoaXMJARVrZXlTdGFydEhlaWdodEJ5RXBvY2gBBQVlcG9jaAQLZXBvY2hMZW5ndGgJAQxnZXRJbnRPckZhaWwCBQR0aGlzBQ5rZXlFcG9jaExlbmd0aAQJZW5kSGVpZ2h0CQBkAgULc3RhcnRIZWlnaHQFC2Vwb2NoTGVuZ3RoBBdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdAkAmggCBQR0aGlzBRRrZXlGaW5hbGl6YXRpb25TdGFnZQMJAGcCBQZoZWlnaHQFCWVuZEhlaWdodAQIbmV3RXBvY2gJAGQCBQVlcG9jaAABCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJARVrZXlTdGFydEhlaWdodEJ5RXBvY2gBBQhuZXdFcG9jaAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5rZXlTdGFydEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rZXlDdXJyZW50RXBvY2gFCG5ld0Vwb2NoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRrZXlGaW5hbGl6YXRpb25TdGFnZQUWZmluYWxpemF0aW9uU3RhZ2VUb3RhbAUDbmlsBgMJAAACBRdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdAUEdW5pdAkAlAoCBQNuaWwHAwkAAAIFF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BRZmaW5hbGl6YXRpb25TdGFnZVRvdGFsBApwb29sT3JVbml0CQCiCAEFC2tleU5leHRQb29sBAp1c2VyT3JVbml0CQCiCAEFC2tleU5leHRVc2VyBAckbWF0Y2gwBQpwb29sT3JVbml0AwkAAQIFByRtYXRjaDACBFVuaXQEByRtYXRjaDEJAKIIAQkBC2tleUxpc3RIZWFkAQUNcG9vbHNMaXN0TmFtZQMJAAECBQckbWF0Y2gxAgRVbml0CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFFGtleUZpbmFsaXphdGlvblN0YWdlBRdmaW5hbGl6YXRpb25TdGFnZVNoYXJlcwkAzAgCCQELRGVsZXRlRW50cnkBBQtrZXlOZXh0UG9vbAkAzAgCCQELRGVsZXRlRW50cnkBBQtrZXlOZXh0VXNlcgUDbmlsBgMJAAECBQckbWF0Y2gxAgZTdHJpbmcEDHBvb2xzSGVhZFN0cgUHJG1hdGNoMQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFC2tleU5leHRQb29sBQxwb29sc0hlYWRTdHIFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEB3Bvb2xTdHIFByRtYXRjaDAEBHBvb2wJAQxzdHJpbmdUb1Bvb2wBBQdwb29sU3RyBA5uZXh0VXNlck9yVW5pdAQHJG1hdGNoMQUKdXNlck9yVW5pdAMJAAECBQckbWF0Y2gxAgRVbml0CQCiCAEJAQtrZXlMaXN0SGVhZAEJARBnZXRWb3Rlc0xpc3ROYW1lAQUEcG9vbAMJAAECBQckbWF0Y2gxAgZTdHJpbmcEBHVzZXIFByRtYXRjaDEEDnByb2Nlc3NWb3RlSW52CQD8BwQFBHRoaXMCE3Byb2Nlc3NWb3RlSU5URVJOQUwJAMwIAgUHcG9vbFN0cgkAzAgCBQR1c2VyBQNuaWwFA25pbAMJAAACBQ5wcm9jZXNzVm90ZUludgUOcHJvY2Vzc1ZvdGVJbnYJAKIIAQkBC2tleUxpc3ROZXh0AgkBEGdldFZvdGVzTGlzdE5hbWUBBQRwb29sBQR1c2VyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IEByRtYXRjaDEFDm5leHRVc2VyT3JVbml0AwkAAQIFByRtYXRjaDECBFVuaXQEDm5leHRQb29sT3JVbml0CQCiCAEJAQtrZXlMaXN0TmV4dAIFDXBvb2xzTGlzdE5hbWUFB3Bvb2xTdHIEByRtYXRjaDIFDm5leHRQb29sT3JVbml0AwkAAQIFByRtYXRjaDICBFVuaXQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa2V5RmluYWxpemF0aW9uU3RhZ2UFF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzCQDMCAIJAQtEZWxldGVFbnRyeQEFC2tleU5leHRQb29sCQDMCAIJAQtEZWxldGVFbnRyeQEFC2tleU5leHRVc2VyBQNuaWwGAwkAAQIFByRtYXRjaDICBlN0cmluZwQBcwUHJG1hdGNoMgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFC2tleU5leHRQb29sBQFzCQDMCAIJAQtEZWxldGVFbnRyeQEFC2tleU5leHRVc2VyBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUHJG1hdGNoMQIGU3RyaW5nBAhuZXh0VXNlcgUHJG1hdGNoMQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFC2tleU5leHRVc2VyBQhuZXh0VXNlcgUDbmlsBgkAAgECC01hdGNoIGVycm9yCQACAQILTWF0Y2ggZXJyb3IDCQAAAgUXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQFF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzBApwb29sT3JVbml0CQCiCAEFC2tleU5leHRQb29sBAckbWF0Y2gwBQpwb29sT3JVbml0AwkAAQIFByRtYXRjaDACBFVuaXQEByRtYXRjaDEJAKIIAQkBC2tleUxpc3RIZWFkAQUNcG9vbHNMaXN0TmFtZQMJAAECBQckbWF0Y2gxAgRVbml0CQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUUa2V5RmluYWxpemF0aW9uU3RhZ2UJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQxrZXlGaW5hbGl6ZWQBBQ1wcmV2aW91c0Vwb2NoBgkAzAgCCQEMSW50ZWdlckVudHJ5AgURa2V5Q3VycmVudEVwb2NoVWkFBWVwb2NoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlTdGFydEhlaWdodFVpBQtzdGFydEhlaWdodAUDbmlsBgMJAAECBQckbWF0Y2gxAgZTdHJpbmcEC25leHRQb29sU3RyBQckbWF0Y2gxCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgULa2V5TmV4dFBvb2wFC25leHRQb29sU3RyBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAdwb29sU3RyBQckbWF0Y2gwBAFyCgABQAkA/AcEBQR0aGlzAhNwcm9jZXNzUG9vbElOVEVSTkFMCQDMCAIFB3Bvb2xTdHIFA25pbAUDbmlsAwkAAQIFAUACB0Jvb2xlYW4FAUAJAAIBCQCsAgIJAAMBCQD8BwQFBHRoaXMCE3Byb2Nlc3NQb29sSU5URVJOQUwJAMwIAgUHcG9vbFN0cgUDbmlsBQNuaWwCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUBcgUBcgMFAXIJAJQKAgUDbmlsBgQObmV4dFBvb2xPclVuaXQJAKIIAQkBC2tleUxpc3ROZXh0AgUNcG9vbHNMaXN0TmFtZQUHcG9vbFN0cgQHJG1hdGNoMQUObmV4dFBvb2xPclVuaXQDCQABAgUHJG1hdGNoMQIEVW5pdAkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEFFGtleUZpbmFsaXphdGlvblN0YWdlCQDMCAIJAQxCb29sZWFuRW50cnkCCQEMa2V5RmluYWxpemVkAQUNcHJldmlvdXNFcG9jaAYJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtleUN1cnJlbnRFcG9jaFVpBQVlcG9jaAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5U3RhcnRIZWlnaHRVaQULc3RhcnRIZWlnaHQJAMwIAgkBC0RlbGV0ZUVudHJ5AQULa2V5TmV4dFBvb2wFA25pbAYDCQABAgUHJG1hdGNoMQIGU3RyaW5nBAtuZXh0UG9vbFN0cgUHJG1hdGNoMQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFC2tleU5leHRQb29sBQtuZXh0UG9vbFN0cgUDbmlsBgkAAgECC01hdGNoIGVycm9yCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IJAAIBAhZmaW5hbGl6YXRpb24gaXMgYnJva2VuAWkBD2ZpbmFsaXplV3JhcHBlcgEHY291bnRlcgQGcmVzdWx0CgABQAkA/AcEBQR0aGlzAg5maW5hbGl6ZUhlbHBlcgUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwIOZmluYWxpemVIZWxwZXIFA25pbAUDbmlsAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFBnJlc3VsdAUGcmVzdWx0AwkBASEBBQZyZXN1bHQDCQAAAgUHY291bnRlcgAACQACAQIeQ3VycmVudCB2b3RpbmcgaXMgbm90IG92ZXIgeWV0CQCUCgIFA25pbAUEdW5pdAQIbWF4RGVwdGgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5TWF4RGVwdGgFD21heERlcHRoRGVmYXVsdAMJAGYCBQhtYXhEZXB0aAUHY291bnRlcgQDaW52CQD8BwQFBHRoaXMCD2ZpbmFsaXplV3JhcHBlcgkAzAgCCQBkAgUHY291bnRlcgABBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGZpbmFsaXplAAQDaW52CQD8BwQFBHRoaXMCD2ZpbmFsaXplV3JhcHBlcgkAzAgCAAAFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52CQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARJvblZlcmlmaWNhdGlvbkxvc3MBB2Fzc2V0SWQJAJQKAgUDbmlsBQR1bml0AWkBFGNvbnRhaW5zTm9kZVJFQURPTkxZAghsaXN0TmFtZQJpZAkAlAoCBQNuaWwJAQxjb250YWluc05vZGUCBQhsaXN0TmFtZQUCaWQBaQEKaW5zZXJ0Tm9kZQIIbGlzdE5hbWUCaWQEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAlAoCCQERaW5zZXJ0Tm9kZUFjdGlvbnMCBQhsaXN0TmFtZQUCaWQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKZGVsZXRlTm9kZQIIbGlzdE5hbWUCaWQEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAlAoCCQERZGVsZXRlTm9kZUFjdGlvbnMCBQhsaXN0TmFtZQUCaWQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXmpguwS", "chainId": 84, "height": 2107661, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5onWkaJRBHfGjUcqGk4tUz1cA8dbDDN5R6GxnRP47dPB Next: GFMy6xZ5gD7imZhtnAWP6ooHWfLwXbpbNW2FXvMdniHT Diff:
OldNewDifferences
2525
2626 let l = makeString(["%s", "stakingContract"], a)
2727
28-let m = makeString(["%s", "finalizationStage"], a)
28+let m = makeString(["%s", "assetsStoreContract"], a)
2929
30-let n = makeString(["%s", "nextPool"], a)
30+let n = makeString(["%s", "finalizationStage"], a)
3131
32-let o = makeString(["%s", "nextUser"], a)
32+let o = makeString(["%s", "nextPool"], a)
3333
34-let p = makeString(["%s", "startHeight"], a)
34+let p = makeString(["%s", "nextUser"], a)
3535
36-let q = makeString(["%s", "currentEpochUi"], a)
36+let q = makeString(["%s", "startHeight"], a)
3737
38-let r = makeString(["%s", "startHeightUi"], a)
38+let r = makeString(["%s", "currentEpochUi"], a)
3939
40-func s (t) = makeString(["%s%d", "startHeight", toString(t)], a)
40+let s = makeString(["%s", "startHeightUi"], a)
41+
42+func t (u) = makeString(["%s%d", "startHeight", toString(u)], a)
4143
4244
43-func u (t) = makeString(["%s%d", "finalized", toString(t)], a)
45+func v (u) = makeString(["%s%d", "finalized", toString(u)], a)
4446
4547
46-func v (w) = {
47- let x = w
48- let y = x._1
49- let z = x._2
50- makeString(["%s%s%s", "inList", y, z], a)
48+func w (x) = {
49+ let y = x
50+ let z = y._1
51+ let A = y._2
52+ makeString(["%s%s%s", "inList", z, A], a)
5153 }
5254
5355
54-func A (B,t) = makeString(["%s%s%d", "used", toString(B), toString(t)], a)
56+func B (C,u) = makeString(["%s%s%d", "used", toString(C), toString(u)], a)
5557
5658
57-func C (w,B,t) = {
58- let D = w
59- let y = D._1
60- let z = D._2
61- makeString(["%s%s%s%s%d", "vote", y, z, toString(B), toString(t)], a)
59+func D (x,C,u) = {
60+ let E = x
61+ let z = E._1
62+ let A = E._2
63+ makeString(["%s%s%s%s%d", "vote", z, A, toString(C), toString(u)], a)
6264 }
6365
6466
65-func E (w,t) = {
66- let F = w
67- let y = F._1
68- let z = F._2
69- makeString(["%s%s%s%d", "votingResult", y, z, toString(t)], a)
67+func F (x,u) = {
68+ let G = x
69+ let z = G._1
70+ let A = G._2
71+ makeString(["%s%s%s%d", "votingResult", z, A, toString(u)], a)
7072 }
7173
7274
73-func G (w,t) = {
74- let H = w
75- let y = H._1
76- let z = H._2
77- makeString(["%s%s%s%d", "poolShare", y, z, toString(t)], a)
75+func H (x,u) = {
76+ let I = x
77+ let z = I._1
78+ let A = I._2
79+ makeString(["%s%s%s%d", "poolShare", z, A, toString(u)], a)
7880 }
7981
8082
81-func I (t) = makeString(["%s%d", "totalVotes", toString(t)], a)
83+func J (u) = makeString(["%s%d", "totalVotes", toString(u)], a)
8284
8385
84-func J (B,K,L) = {
85- let M = makeString(["mandatory ", toString(B), ".", K, " is not defined"], "")
86+func K (C,L,M) = {
87+ let N = makeString(["mandatory ", toString(C), ".", L, " is not defined"], "")
8688 valueOrErrorMessage({
87- let N = L
88- if ($isInstanceOf(N, "String"))
89+ let O = M
90+ if ($isInstanceOf(O, "String"))
8991 then {
90- let O = N
91- getString(B, K)
92+ let P = O
93+ getString(C, L)
9294 }
93- else if ($isInstanceOf(N, "Int"))
95+ else if ($isInstanceOf(O, "Int"))
9496 then {
95- let P = N
96- getInteger(B, K)
97+ let Q = O
98+ getInteger(C, L)
9799 }
98100 else throw("invalid entry type")
99- }, M)
101+ }, N)
100102 }
101103
102104
103-func Q (B,K) = {
104- let R = J(B, K, "")
105- if ($isInstanceOf(R, "String"))
106- then R
107- else throw(($getType(J(B, K, "")) + " couldn't be cast to String"))
105+func R (C,L) = {
106+ let S = K(C, L, "")
107+ if ($isInstanceOf(S, "String"))
108+ then S
109+ else throw(($getType(K(C, L, "")) + " couldn't be cast to String"))
108110 }
109111
110112
111-func S (B,K) = {
112- let R = J(B, K, 0)
113- if ($isInstanceOf(R, "Int"))
114- then R
115- else throw(($getType(J(B, K, 0)) + " couldn't be cast to Int"))
113+func T (C,L) = {
114+ let S = K(C, L, 0)
115+ if ($isInstanceOf(S, "Int"))
116+ then S
117+ else throw(($getType(K(C, L, 0)) + " couldn't be cast to Int"))
116118 }
117119
118120
119-func T (w) = ((w._1 + a) + w._2)
121+func U (x) = ((x._1 + a) + x._2)
120122
121123
122-func U (O) = {
123- let V = split(O, a)
124- if ((size(V) == 2))
125- then $Tuple2(V[0], V[1])
124+func V (P) = {
125+ let W = split(P, a)
126+ if ((size(W) == 2))
127+ then $Tuple2(W[0], W[1])
126128 else throw("invalid pool string")
127129 }
128130
129131
130-func W (y,z) = {
131- func X (Y) = ("%s%s%s__mappings__baseAsset2internalId__" + Y)
132+func X (z,A) = {
133+ func Y (Z) = ("%s%s%s__mappings__baseAsset2internalId__" + Z)
132134
133- func Z (aa,ab) = (((("%d%d%s%s__" + toString(aa)) + "__") + toString(ab)) + "__mappings__poolAssets2PoolContract")
135+ func aa (ab,ac) = (((("%d%d%s%s__" + toString(ab)) + "__") + toString(ac)) + "__mappings__poolAssets2PoolContract")
134136
135- func ac (ad) = (("%s%s%s__" + ad) + "__mappings__poolContract2LpAsset")
137+ func ad (ae) = (("%s%s%s__" + ae) + "__mappings__poolContract2LpAsset")
136138
137- let ae = addressFromStringValue(Q(this, j))
138- let af = S(ae, X(y))
139- let ag = S(ae, X(z))
140- let ad = Q(ae, Z(af, ag))
141- let ah = Q(ae, ac(ad))
142- ah
139+ let af = addressFromStringValue(R(this, j))
140+ let ag = T(af, Y(z))
141+ let ah = T(af, Y(A))
142+ let ae = R(af, aa(ag, ah))
143+ let ai = R(af, ad(ae))
144+ ai
143145 }
144146
145147
146-let ai = "pools"
147-
148-func aj (w) = {
149- let ak = w
150- let y = ak._1
151- let z = ak._2
152- makeString(["votes", y, z], a)
148+func aj (ak) = {
149+ let al = addressFromStringValue(R(this, m))
150+ let am = {
151+ let S = invoke(al, "isVerifiedREADONLY", [ak], nil)
152+ if ($isInstanceOf(S, "Boolean"))
153+ then S
154+ else throw(($getType(invoke(al, "isVerifiedREADONLY", [ak], nil)) + " couldn't be cast to Boolean"))
155+ }
156+ am
153157 }
154158
155159
156-func al (am) = {
157- let an = if ((am == ai))
158- then "%s%s"
159- else "%s%s%s%s"
160- makeString([an, am, "head"], a)
160+let an = "pools"
161+
162+func ao (x) = {
163+ let ap = x
164+ let z = ap._1
165+ let A = ap._2
166+ makeString(["votes", z, A], a)
161167 }
162168
163169
164-func ao (am) = {
165- let an = if ((am == ai))
170+func aq (ar) = {
171+ let as = if ((ar == an))
166172 then "%s%s"
167173 else "%s%s%s%s"
168- makeString([an, am, "size"], a)
174+ makeString([as, ar, "head"], a)
169175 }
170176
171177
172-func ap (am,aq) = {
173- let an = if ((am == ai))
174- then "%s%s%s%s"
175- else "%s%s%s%s%s"
176- makeString([an, am, aq, "prev"], a)
178+func at (ar) = {
179+ let as = if ((ar == an))
180+ then "%s%s"
181+ else "%s%s%s%s"
182+ makeString([as, ar, "size"], a)
177183 }
178184
179185
180-func ar (am,aq) = {
181- let an = if ((am == ai))
186+func au (ar,av) = {
187+ let as = if ((ar == an))
182188 then "%s%s%s%s"
183189 else "%s%s%s%s%s"
184- makeString([an, am, aq, "next"], a)
190+ makeString([as, ar, av, "prev"], a)
185191 }
186192
187193
188-func as (am,aq) = {
189- let at = getString(this, al(am))
190- let au = getString(this, ap(am, aq))
191- let av = getString(this, ar(am, aq))
192- if (if ((aq == valueOrElse(at, "")))
193- then true
194- else (au != unit))
195- then true
196- else (av != unit)
194+func aw (ar,av) = {
195+ let as = if ((ar == an))
196+ then "%s%s%s%s"
197+ else "%s%s%s%s%s"
198+ makeString([as, ar, av, "next"], a)
197199 }
198200
199201
200-func aw (am,aq) = {
201- let at = getString(this, al(am))
202- let ax = valueOrElse(getInteger(this, ao(am)), 0)
203- let ay = if (!(as(am, aq)))
202+func ax (ar,av) = {
203+ let ay = getString(this, aq(ar))
204+ let az = getString(this, au(ar, av))
205+ let aA = getString(this, aw(ar, av))
206+ if (if ((av == valueOrElse(ay, "")))
207+ then true
208+ else (az != unit))
209+ then true
210+ else (aA != unit)
211+ }
212+
213+
214+func aB (ar,av) = {
215+ let ay = getString(this, aq(ar))
216+ let aC = valueOrElse(getInteger(this, at(ar)), 0)
217+ let aD = if (!(ax(ar, av)))
204218 then true
205219 else throw("Node exists")
206- if ((ay == ay))
207- then (([IntegerEntry(ao(am), (ax + 1))] ++ (if ((at != unit))
208- then [StringEntry(ar(am, aq), value(at)), StringEntry(ap(am, value(at)), aq)]
209- else nil)) ++ [StringEntry(al(am), aq)])
220+ if ((aD == aD))
221+ then (([IntegerEntry(at(ar), (aC + 1))] ++ (if ((ay != unit))
222+ then [StringEntry(aw(ar, av), value(ay)), StringEntry(au(ar, value(ay)), av)]
223+ else nil)) ++ [StringEntry(aq(ar), av)])
210224 else throw("Strict value is not equal to itself.")
211225 }
212226
213227
214-func az (am,aq) = {
215- let at = getString(this, al(am))
216- let ax = valueOrElse(getInteger(this, ao(am)), 0)
217- let au = getString(this, ap(am, aq))
218- let av = getString(this, ar(am, aq))
219- ([IntegerEntry(ao(am), (ax - 1))] ++ (if (if ((au != unit))
220- then (av != unit)
228+func aE (ar,av) = {
229+ let ay = getString(this, aq(ar))
230+ let aC = valueOrElse(getInteger(this, at(ar)), 0)
231+ let az = getString(this, au(ar, av))
232+ let aA = getString(this, aw(ar, av))
233+ ([IntegerEntry(at(ar), (aC - 1))] ++ (if (if ((az != unit))
234+ then (aA != unit)
221235 else false)
222- then [StringEntry(ar(am, value(au)), value(av)), StringEntry(ap(am, value(av)), value(au)), DeleteEntry(ap(am, aq)), DeleteEntry(ar(am, aq))]
223- else if ((av != unit))
224- then [StringEntry(al(am), value(av)), DeleteEntry(ar(am, aq)), DeleteEntry(ap(am, value(av)))]
225- else if ((au != unit))
226- then [DeleteEntry(ap(am, aq)), DeleteEntry(ar(am, value(au)))]
227- else if ((aq == valueOrElse(at, "")))
228- then [DeleteEntry(al(am))]
229- else throw(((("invalid node: " + am) + ".") + aq))))
236+ then [StringEntry(aw(ar, value(az)), value(aA)), StringEntry(au(ar, value(aA)), value(az)), DeleteEntry(au(ar, av)), DeleteEntry(aw(ar, av))]
237+ else if ((aA != unit))
238+ then [StringEntry(aq(ar), value(aA)), DeleteEntry(aw(ar, av)), DeleteEntry(au(ar, value(aA)))]
239+ else if ((az != unit))
240+ then [DeleteEntry(au(ar, av)), DeleteEntry(aw(ar, value(az)))]
241+ else if ((av == valueOrElse(ay, "")))
242+ then [DeleteEntry(aq(ar))]
243+ else throw(((("invalid node: " + ar) + ".") + av))))
230244 }
231245
232246
233-func aA () = "%s__managerPublicKey"
247+func aF () = "%s__managerPublicKey"
234248
235249
236-func aB () = "%s__pendingManagerPublicKey"
250+func aG () = "%s__pendingManagerPublicKey"
237251
238252
239-func aC () = {
240- let N = getString(aA())
241- if ($isInstanceOf(N, "String"))
253+func aH () = {
254+ let O = getString(aF())
255+ if ($isInstanceOf(O, "String"))
242256 then {
243- let aD = N
244- fromBase58String(aD)
257+ let aI = O
258+ fromBase58String(aI)
245259 }
246- else if ($isInstanceOf(N, "Unit"))
260+ else if ($isInstanceOf(O, "Unit"))
247261 then unit
248262 else throw("Match error")
249263 }
250264
251265
252-func aE () = {
253- let N = getString(aB())
254- if ($isInstanceOf(N, "String"))
266+func aJ () = {
267+ let O = getString(aG())
268+ if ($isInstanceOf(O, "String"))
255269 then {
256- let aD = N
257- fromBase58String(aD)
270+ let aI = O
271+ fromBase58String(aI)
258272 }
259- else if ($isInstanceOf(N, "Unit"))
273+ else if ($isInstanceOf(O, "Unit"))
260274 then unit
261275 else throw("Match error")
262276 }
263277
264278
265-let aF = throw("Permission denied")
279+let aK = throw("Permission denied")
266280
267-func aG (aH) = if ((aH.caller == this))
281+func aL (aM) = if ((aM.caller == this))
268282 then true
269- else aF
283+ else aK
270284
271285
272-func aI (aH) = {
273- let N = aC()
274- if ($isInstanceOf(N, "ByteVector"))
286+func aN (aM) = {
287+ let O = aH()
288+ if ($isInstanceOf(O, "ByteVector"))
275289 then {
276- let aJ = N
277- if ((aH.callerPublicKey == aJ))
290+ let aO = O
291+ if ((aM.callerPublicKey == aO))
278292 then true
279- else aF
293+ else aK
280294 }
281- else if ($isInstanceOf(N, "Unit"))
282- then aG(aH)
295+ else if ($isInstanceOf(O, "Unit"))
296+ then aL(aM)
283297 else throw("Match error")
284298 }
285299
286300
287-@Callable(aH)
288-func setManager (aK) = {
289- let aL = aI(aH)
290- if ((aL == aL))
301+@Callable(aM)
302+func setManager (aP) = {
303+ let aQ = aN(aM)
304+ if ((aQ == aQ))
291305 then {
292- let aM = fromBase58String(aK)
293- if ((aM == aM))
294- then [StringEntry(aB(), aK)]
306+ let aR = fromBase58String(aP)
307+ if ((aR == aR))
308+ then [StringEntry(aG(), aP)]
295309 else throw("Strict value is not equal to itself.")
296310 }
297311 else throw("Strict value is not equal to itself.")
299313
300314
301315
302-@Callable(aH)
316+@Callable(aM)
303317 func confirmManager () = {
304- let aN = aE()
305- let aO = if (isDefined(aN))
318+ let aS = aJ()
319+ let aT = if (isDefined(aS))
306320 then true
307321 else throw("No pending manager")
308- if ((aO == aO))
322+ if ((aT == aT))
309323 then {
310- let aP = if ((aH.callerPublicKey == value(aN)))
324+ let aU = if ((aM.callerPublicKey == value(aS)))
311325 then true
312326 else throw("You are not pending manager")
313- if ((aP == aP))
314- then [StringEntry(aA(), toBase58String(value(aN))), DeleteEntry(aB())]
327+ if ((aU == aU))
328+ then [StringEntry(aF(), toBase58String(value(aS))), DeleteEntry(aG())]
315329 else throw("Strict value is not equal to itself.")
316330 }
317331 else throw("Strict value is not equal to itself.")
319333
320334
321335
322-@Callable(aH)
323-func getUserGwxAmountAtHeight (aQ,aR) = {
324- let aS = valueOrErrorMessage(addressFromString(Q(this, k)), "invalid boosting contract address")
336+@Callable(aM)
337+func getUserGwxAmountAtHeight (aV,aW) = {
338+ let aX = valueOrErrorMessage(addressFromString(R(this, k)), "invalid boosting contract address")
325339 $Tuple2(nil, {
326- let R = invoke(aS, "getUserGwxAmountAtHeightREADONLY", [aQ, aR], nil)
327- if ($isInstanceOf(R, "Int"))
328- then R
329- else throw(($getType(invoke(aS, "getUserGwxAmountAtHeightREADONLY", [aQ, aR], nil)) + " couldn't be cast to Int"))
340+ let S = invoke(aX, "getUserGwxAmountAtHeightREADONLY", [aV, aW], nil)
341+ if ($isInstanceOf(S, "Int"))
342+ then S
343+ else throw(($getType(invoke(aX, "getUserGwxAmountAtHeightREADONLY", [aV, aW], nil)) + " couldn't be cast to Int"))
330344 })
331345 }
332346
333347
334348
335-@Callable(aH)
336-func constructor (ae,aT,aU,aV,aW) = {
337- let aX = [aI(aH), if ((addressFromString(ae) != unit))
349+@Callable(aM)
350+func constructor (af,aY,aZ,ba,al,bb) = {
351+ let bc = [aN(aM), if ((addressFromString(af) != unit))
338352 then true
339- else "invalid factory contract address", if ((addressFromString(aT) != unit))
353+ else "invalid factory contract address", if ((addressFromString(aY) != unit))
340354 then true
341- else "invalid voting emission candidate contract address", if ((addressFromString(aU) != unit))
355+ else "invalid voting emission candidate contract address", if ((addressFromString(aZ) != unit))
342356 then true
343- else "invalid boosting contract address", if ((addressFromString(aV) != unit))
357+ else "invalid boosting contract address", if ((addressFromString(ba) != unit))
344358 then true
345- else "invalid staking contract address", if ((aW > 0))
359+ else "invalid staking contract address", if ((addressFromString(al) != unit))
360+ then true
361+ else "invalid assets store contract address", if ((bb > 0))
346362 then true
347363 else throw("invalid epoch length")]
348- if ((aX == aX))
349- then $Tuple2([StringEntry(j, ae), StringEntry(i, aT), StringEntry(k, aU), StringEntry(l, aV), IntegerEntry(f, aW)], unit)
364+ if ((bc == bc))
365+ then $Tuple2([StringEntry(j, af), StringEntry(i, aY), StringEntry(k, aZ), StringEntry(l, ba), StringEntry(m, al), IntegerEntry(f, bb)], unit)
350366 else throw("Strict value is not equal to itself.")
351367 }
352368
353369
354370
355-@Callable(aH)
356-func create (y,z) = {
357- let aY = [if ((toBase58String(aH.caller.bytes) == valueOrElse(getString(this, i), "")))
371+@Callable(aM)
372+func create (z,A) = {
373+ let bd = [if ((toBase58String(aM.caller.bytes) == valueOrElse(getString(this, i), "")))
358374 then true
359- else aI(aH)]
360- if ((aY == aY))
375+ else aN(aM)]
376+ if ((bd == bd))
361377 then {
362- let w = $Tuple2(y, z)
363- let aZ = ([BooleanEntry(v(w), true)] ++ aw(ai, T(w)))
364- let ba = (getInteger(this, g) == unit)
365- let bb = if (ba)
378+ let x = $Tuple2(z, A)
379+ let be = ([BooleanEntry(w(x), true)] ++ aB(an, U(x)))
380+ let bf = (getInteger(this, g) == unit)
381+ let bg = if (bf)
366382 then {
367- let t = 0
368-[IntegerEntry(g, t), IntegerEntry(s(t), height), IntegerEntry(p, height), IntegerEntry(q, t), IntegerEntry(r, height)]
383+ let u = 0
384+[IntegerEntry(g, u), IntegerEntry(t(u), height), IntegerEntry(q, height), IntegerEntry(r, u), IntegerEntry(s, height)]
369385 }
370386 else nil
371- $Tuple2((aZ ++ bb), unit)
387+ $Tuple2((be ++ bg), unit)
372388 }
373389 else throw("Strict value is not equal to itself.")
374390 }
375391
376392
377393
378-@Callable(aH)
379-func vote (y,z,bc) = {
380- let w = $Tuple2(y, z)
381- let t = valueOrElse(getInteger(this, g), 0)
382- let bd = S(this, s(t))
383- let aW = S(this, f)
384- let be = (bd + aW)
385- let bf = getInteger(this, m)
386- let bg = valueOrElse(getInteger(this, A(aH.caller, t)), 0)
387- let bh = valueOrElse(getInteger(this, C(w, aH.caller, t)), 0)
388- let bi = valueOrElse(getInteger(this, E(w, t)), 0)
389- let bj = valueOrElse(getInteger(this, I(t)), 0)
390- let bk = {
391- let R = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aH.caller.bytes), be], nil)
392- if ($isInstanceOf(R, "Int"))
393- then R
394- else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aH.caller.bytes), be], nil)) + " couldn't be cast to Int"))
394+@Callable(aM)
395+func vote (z,A,bh) = {
396+ let x = $Tuple2(z, A)
397+ let u = valueOrElse(getInteger(this, g), 0)
398+ let bi = T(this, t(u))
399+ let bb = T(this, f)
400+ let bj = (bi + bb)
401+ let bk = getInteger(this, n)
402+ let bl = valueOrElse(getInteger(this, B(aM.caller, u)), 0)
403+ let bm = valueOrElse(getInteger(this, D(x, aM.caller, u)), 0)
404+ let bn = valueOrElse(getInteger(this, F(x, u)), 0)
405+ let bo = valueOrElse(getInteger(this, J(u)), 0)
406+ let bp = {
407+ let S = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aM.caller.bytes), bj], nil)
408+ if ($isInstanceOf(S, "Int"))
409+ then S
410+ else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aM.caller.bytes), bj], nil)) + " couldn't be cast to Int"))
395411 }
396- let bl = (bk - bg)
397- let bm = (bh + bc)
398- let aY = [if ((getBoolean(v(w)) != unit))
412+ let bq = (bp - bl)
413+ let br = (bm + bh)
414+ let bs = aj(z)
415+ let bd = [if ((getBoolean(w(x)) != unit))
399416 then true
400- else throw("invalid assets"), if ((be > height))
417+ else throw("invalid assets"), if ((bj > height))
401418 then true
402- else throw("invalid height"), if ((bf == unit))
419+ else throw("invalid height"), if ((bk == unit))
403420 then true
404- else throw("finalization in progress"), if ((bk > 0))
421+ else throw("finalization in progress"), if ((bp > 0))
405422 then true
406- else throw("you do not have gWX"), if (if ((bc > 0))
407- then (bl >= bc)
423+ else throw("you do not have gWX"), if (if ((bh > 0))
424+ then (bq >= bh)
408425 else false)
409426 then true
410- else throw("invalid amount")]
411- if ((aY == aY))
427+ else throw("invalid amount"), if (bs)
428+ then true
429+ else throw("amount asset is not verified")]
430+ if ((bd == bd))
412431 then {
413- let bn = aj(w)
414- let bo = toString(aH.caller)
415- let bp = if (as(bn, bo))
432+ let bt = ao(x)
433+ let bu = toString(aM.caller)
434+ let bv = if (ax(bt, bu))
416435 then nil
417- else aw(bn, bo)
418- $Tuple2(([IntegerEntry(A(aH.caller, t), (bg + bc)), IntegerEntry(C(w, aH.caller, t), bm), IntegerEntry(E(w, t), (bi + bc)), IntegerEntry(I(t), (bj + bc))] ++ bp), unit)
436+ else aB(bt, bu)
437+ $Tuple2(([IntegerEntry(B(aM.caller, u), (bl + bh)), IntegerEntry(D(x, aM.caller, u), br), IntegerEntry(F(x, u), (bn + bh)), IntegerEntry(J(u), (bo + bh))] ++ bv), unit)
419438 }
420439 else throw("Strict value is not equal to itself.")
421440 }
422441
423442
424443
425-@Callable(aH)
426-func cancelVote (y,z) = {
427- let w = $Tuple2(y, z)
428- let t = valueOrElse(getInteger(this, g), 0)
429- let bd = S(this, s(t))
430- let aW = S(this, f)
431- let be = (bd + aW)
432- let bf = getInteger(this, m)
433- let bg = valueOrElse(getInteger(this, A(aH.caller, t)), 0)
434- let bh = valueOrElse(getInteger(this, C(w, aH.caller, t)), 0)
435- let bi = valueOrElse(getInteger(this, E(w, t)), 0)
436- let bj = valueOrElse(getInteger(this, I(t)), 0)
437- let aY = [if ((getBoolean(v(w)) != unit))
444+@Callable(aM)
445+func cancelVote (z,A) = {
446+ let x = $Tuple2(z, A)
447+ let u = valueOrElse(getInteger(this, g), 0)
448+ let bi = T(this, t(u))
449+ let bb = T(this, f)
450+ let bj = (bi + bb)
451+ let bk = getInteger(this, n)
452+ let bl = valueOrElse(getInteger(this, B(aM.caller, u)), 0)
453+ let bm = valueOrElse(getInteger(this, D(x, aM.caller, u)), 0)
454+ let bn = valueOrElse(getInteger(this, F(x, u)), 0)
455+ let bo = valueOrElse(getInteger(this, J(u)), 0)
456+ let bd = [if ((getBoolean(w(x)) != unit))
438457 then true
439- else throw("invalid assets"), if ((be > height))
458+ else throw("invalid assets"), if ((bj > height))
440459 then true
441- else throw("invalid height"), if ((bf == unit))
460+ else throw("invalid height"), if ((bk == unit))
442461 then true
443- else throw("finalization in progress"), if ((bh > 0))
462+ else throw("finalization in progress"), if ((bm > 0))
444463 then true
445464 else throw("no vote")]
446- if ((aY == aY))
465+ if ((bd == bd))
447466 then {
448- let bn = aj(w)
449- let bo = toString(aH.caller)
450- $Tuple2(([IntegerEntry(A(aH.caller, t), max([(bg - bh), 0])), DeleteEntry(C(w, aH.caller, t)), IntegerEntry(E(w, t), (bi - bh)), IntegerEntry(I(t), (bj - bh))] ++ az(bn, bo)), unit)
467+ let bt = ao(x)
468+ let bu = toString(aM.caller)
469+ $Tuple2(([IntegerEntry(B(aM.caller, u), max([(bl - bm), 0])), DeleteEntry(D(x, aM.caller, u)), IntegerEntry(F(x, u), (bn - bm)), IntegerEntry(J(u), (bo - bm))] ++ aE(bt, bu)), unit)
451470 }
452471 else throw("Strict value is not equal to itself.")
453472 }
454473
455474
456475
457-@Callable(aH)
458-func setEpochLength (bq) = {
459- let aX = [aI(aH), if ((bq > 0))
476+@Callable(aM)
477+func setEpochLength (bw) = {
478+ let bc = [aN(aM), if ((bw > 0))
460479 then true
461480 else throw("invalid epoch length")]
462- if ((aX == aX))
463- then $Tuple2([IntegerEntry(f, bq)], unit)
481+ if ((bc == bc))
482+ then $Tuple2([IntegerEntry(f, bw)], unit)
464483 else throw("Strict value is not equal to itself.")
465484 }
466485
467486
468487
469-@Callable(aH)
470-func setMaxDepth (br) = {
471- let aX = [aI(aH), if ((br > 0))
488+@Callable(aM)
489+func setMaxDepth (bx) = {
490+ let bc = [aN(aM), if ((bx > 0))
472491 then true
473492 else throw("invalid max depth")]
474- if ((aX == aX))
475- then $Tuple2([IntegerEntry(h, br)], unit)
493+ if ((bc == bc))
494+ then $Tuple2([IntegerEntry(h, bx)], unit)
476495 else throw("Strict value is not equal to itself.")
477496 }
478497
479498
480499
481-@Callable(aH)
482-func processVoteINTERNAL (bs,bo) = {
483- let aL = aG(aH)
484- if ((aL == aL))
500+@Callable(aM)
501+func processVoteINTERNAL (by,bu) = {
502+ let aQ = aL(aM)
503+ if ((aQ == aQ))
485504 then {
486- let aQ = valueOrErrorMessage(addressFromString(bo), ("processVoteINTERNAL: invalid user address " + bo))
487- let t = S(this, g)
488- let bt = (t - 1)
489- let aW = S(this, f)
490- let bd = S(this, s(t))
491- let be = (bd + aW)
492- let bu = S(this, s(bt))
493- let bv = (bu + aW)
494- let bw = if ((bt >= 0))
505+ let aV = valueOrErrorMessage(addressFromString(bu), ("processVoteINTERNAL: invalid user address " + bu))
506+ let u = T(this, g)
507+ let bz = (u - 1)
508+ let bb = T(this, f)
509+ let bi = T(this, t(u))
510+ let bj = (bi + bb)
511+ let bA = T(this, t(bz))
512+ let bB = (bA + bb)
513+ let bC = if ((bz >= 0))
495514 then true
496515 else throw("processVoteINTERNAL: invalid previous epoch")
497- if ((bw == bw))
516+ if ((bC == bC))
498517 then {
499- let w = U(bs)
500- let bk = {
501- let R = invoke(this, "getUserGwxAmountAtHeight", [bo, be], nil)
502- if ($isInstanceOf(R, "Int"))
503- then R
504- else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [bo, be], nil)) + " couldn't be cast to Int"))
518+ let x = V(by)
519+ let bD = x
520+ let z = bD._1
521+ let A = bD._2
522+ let bs = aj(z)
523+ let bp = {
524+ let S = invoke(this, "getUserGwxAmountAtHeight", [bu, bj], nil)
525+ if ($isInstanceOf(S, "Int"))
526+ then S
527+ else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [bu, bj], nil)) + " couldn't be cast to Int"))
505528 }
506- let bx = {
507- let R = invoke(this, "getUserGwxAmountAtHeight", [bo, bv], nil)
508- if ($isInstanceOf(R, "Int"))
509- then R
510- else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [bo, bv], nil)) + " couldn't be cast to Int"))
529+ let bE = {
530+ let S = invoke(this, "getUserGwxAmountAtHeight", [bu, bB], nil)
531+ if ($isInstanceOf(S, "Int"))
532+ then S
533+ else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [bu, bB], nil)) + " couldn't be cast to Int"))
511534 }
512- let bj = valueOrElse(getInteger(I(t)), 0)
513- let by = valueOrElse(getInteger(E(w, t)), 0)
514- let bz = valueOrErrorMessage(getInteger(C(w, aQ, bt)), (((("processVoteINTERNAL " + bs) + " ") + bo) + ": no previous vote"))
515- let bg = valueOrElse(getInteger(this, A(aQ, t)), 0)
516- let bm = fraction(bz, bk, bx)
517- let bA = if ((bm > 0))
518- then [IntegerEntry(C(w, aQ, t), bm), IntegerEntry(I(t), (bj + bm)), IntegerEntry(E(w, t), (by + bm)), IntegerEntry(A(aQ, t), (bg + bm))]
519- else az(aj(w), bo)
520- $Tuple2(bA, unit)
535+ let bo = valueOrElse(getInteger(J(u)), 0)
536+ let bF = valueOrElse(getInteger(F(x, u)), 0)
537+ let bG = valueOrErrorMessage(getInteger(D(x, aV, bz)), (((("processVoteINTERNAL " + by) + " ") + bu) + ": no previous vote"))
538+ let bl = valueOrElse(getInteger(this, B(aV, u)), 0)
539+ let br = fraction(bG, bp, bE)
540+ let bH = if (if ((br > 0))
541+ then bs
542+ else false)
543+ then [IntegerEntry(D(x, aV, u), br), IntegerEntry(J(u), (bo + br)), IntegerEntry(F(x, u), (bF + br)), IntegerEntry(B(aV, u), (bl + br))]
544+ else aE(ao(x), bu)
545+ $Tuple2(bH, unit)
521546 }
522547 else throw("Strict value is not equal to itself.")
523548 }
526551
527552
528553
529-@Callable(aH)
530-func processPoolINTERNAL (bs) = {
531- let aL = aG(aH)
532- if ((aL == aL))
554+@Callable(aM)
555+func processPoolINTERNAL (by) = {
556+ let aQ = aL(aM)
557+ if ((aQ == aQ))
533558 then {
534- let bB = (S(this, g) - 1)
535- let bw = if ((bB >= 0))
559+ let bI = (T(this, g) - 1)
560+ let bC = if ((bI >= 0))
536561 then true
537562 else throw("processPoolINTERNAL: invalid target epoch")
538- if ((bw == bw))
563+ if ((bC == bC))
539564 then {
540- let w = U(bs)
541- let bC = w
542- let y = bC._1
543- let z = bC._2
544- let aV = addressFromStringValue(Q(this, l))
545- let ae = addressFromStringValue(Q(this, j))
546- let ah = W(y, z)
547- let bD = {
548- let R = invoke(aV, "usersListTraversal", [ah], nil)
549- if ($isInstanceOf(R, "Boolean"))
550- then R
551- else throw(($getType(invoke(aV, "usersListTraversal", [ah], nil)) + " couldn't be cast to Boolean"))
565+ let x = V(by)
566+ let bJ = x
567+ let z = bJ._1
568+ let A = bJ._2
569+ let ba = addressFromStringValue(R(this, l))
570+ let af = addressFromStringValue(R(this, j))
571+ let ai = X(z, A)
572+ let bK = {
573+ let S = invoke(ba, "usersListTraversal", [ai], nil)
574+ if ($isInstanceOf(S, "Boolean"))
575+ then S
576+ else throw(($getType(invoke(ba, "usersListTraversal", [ai], nil)) + " couldn't be cast to Boolean"))
552577 }
553- if ((bD == bD))
554- then if (bD)
578+ if ((bK == bK))
579+ then if (bK)
555580 then $Tuple2(nil, true)
556581 else {
557- let bj = valueOrElse(getInteger(this, I(bB)), 0)
558- let by = valueOrElse(getInteger(this, E(w, bB)), 0)
559- let bE = if ((bj == 0))
582+ let bs = aj(z)
583+ let bo = valueOrElse(getInteger(this, J(bI)), 0)
584+ let bF = valueOrElse(getInteger(this, F(x, bI)), 0)
585+ let bL = if (if ((bo == 0))
586+ then true
587+ else !(bs))
560588 then 0
561- else fraction(by, b, bj)
562- let bF = invoke(ae, "modifyWeight", [ah, bE], nil)
563- if ((bF == bF))
564- then $Tuple2([IntegerEntry(G(w, bB), bE)], false)
589+ else fraction(bF, b, bo)
590+ let bM = invoke(af, "modifyWeight", [ai, bL], nil)
591+ if ((bM == bM))
592+ then {
593+ let bN = if (bs)
594+ then nil
595+ else ([DeleteEntry(w(x))] ++ aE(an, by))
596+ $Tuple2(([IntegerEntry(H(x, bI), bL)] ++ bN), false)
597+ }
565598 else throw("Strict value is not equal to itself.")
566599 }
567600 else throw("Strict value is not equal to itself.")
573606
574607
575608
576-@Callable(aH)
609+@Callable(aM)
577610 func finalizeHelper () = {
578- let t = valueOrElse(getInteger(this, g), 0)
579- let bG = (t - 1)
580- let bd = S(this, s(t))
581- let aW = S(this, f)
582- let be = (bd + aW)
583- let bf = getInteger(this, m)
584- if ((height >= be))
611+ let u = valueOrElse(getInteger(this, g), 0)
612+ let bO = (u - 1)
613+ let bi = T(this, t(u))
614+ let bb = T(this, f)
615+ let bj = (bi + bb)
616+ let bk = getInteger(this, n)
617+ if ((height >= bj))
585618 then {
586- let bH = (t + 1)
587- $Tuple2([IntegerEntry(s(bH), height), IntegerEntry(p, height), IntegerEntry(g, bH), IntegerEntry(m, d)], true)
619+ let bP = (u + 1)
620+ $Tuple2([IntegerEntry(t(bP), height), IntegerEntry(q, height), IntegerEntry(g, bP), IntegerEntry(n, d)], true)
588621 }
589- else if ((bf == unit))
622+ else if ((bk == unit))
590623 then $Tuple2(nil, false)
591- else if ((bf == d))
624+ else if ((bk == d))
592625 then {
593- let bI = getString(n)
594- let bJ = getString(o)
595- let N = bI
596- if ($isInstanceOf(N, "Unit"))
626+ let bQ = getString(o)
627+ let bR = getString(p)
628+ let O = bQ
629+ if ($isInstanceOf(O, "Unit"))
597630 then {
598- let bK = getString(al(ai))
599- if ($isInstanceOf(bK, "Unit"))
600- then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
601- else if ($isInstanceOf(bK, "String"))
631+ let bS = getString(aq(an))
632+ if ($isInstanceOf(bS, "Unit"))
633+ then $Tuple2([IntegerEntry(n, e), DeleteEntry(o), DeleteEntry(p)], true)
634+ else if ($isInstanceOf(bS, "String"))
602635 then {
603- let bL = bK
604- $Tuple2([StringEntry(n, bL)], true)
636+ let bT = bS
637+ $Tuple2([StringEntry(o, bT)], true)
605638 }
606639 else throw("Match error")
607640 }
608- else if ($isInstanceOf(N, "String"))
641+ else if ($isInstanceOf(O, "String"))
609642 then {
610- let bs = N
611- let w = U(bs)
612- let bM = {
613- let bK = bJ
614- if ($isInstanceOf(bK, "Unit"))
615- then getString(al(aj(w)))
616- else if ($isInstanceOf(bK, "String"))
643+ let by = O
644+ let x = V(by)
645+ let bU = {
646+ let bS = bR
647+ if ($isInstanceOf(bS, "Unit"))
648+ then getString(aq(ao(x)))
649+ else if ($isInstanceOf(bS, "String"))
617650 then {
618- let bN = bK
619- let bO = invoke(this, "processVoteINTERNAL", [bs, bN], nil)
620- if ((bO == bO))
621- then getString(ar(aj(w), bN))
651+ let bV = bS
652+ let bW = invoke(this, "processVoteINTERNAL", [by, bV], nil)
653+ if ((bW == bW))
654+ then getString(aw(ao(x), bV))
622655 else throw("Strict value is not equal to itself.")
623656 }
624657 else throw("Match error")
625658 }
626- let bK = bM
627- if ($isInstanceOf(bK, "Unit"))
659+ let bS = bU
660+ if ($isInstanceOf(bS, "Unit"))
628661 then {
629- let bP = getString(ar(ai, bs))
630- let bQ = bP
631- if ($isInstanceOf(bQ, "Unit"))
632- then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
633- else if ($isInstanceOf(bQ, "String"))
662+ let bX = getString(aw(an, by))
663+ let bY = bX
664+ if ($isInstanceOf(bY, "Unit"))
665+ then $Tuple2([IntegerEntry(n, e), DeleteEntry(o), DeleteEntry(p)], true)
666+ else if ($isInstanceOf(bY, "String"))
634667 then {
635- let aD = bQ
636- $Tuple2([StringEntry(n, aD), DeleteEntry(o)], true)
668+ let aI = bY
669+ $Tuple2([StringEntry(o, aI), DeleteEntry(p)], true)
637670 }
638671 else throw("Match error")
639672 }
640- else if ($isInstanceOf(bK, "String"))
673+ else if ($isInstanceOf(bS, "String"))
641674 then {
642- let bR = bK
643- $Tuple2([StringEntry(o, bR)], true)
675+ let bZ = bS
676+ $Tuple2([StringEntry(p, bZ)], true)
644677 }
645678 else throw("Match error")
646679 }
647680 else throw("Match error")
648681 }
649- else if ((bf == e))
682+ else if ((bk == e))
650683 then {
651- let bI = getString(n)
652- let N = bI
653- if ($isInstanceOf(N, "Unit"))
684+ let bQ = getString(o)
685+ let O = bQ
686+ if ($isInstanceOf(O, "Unit"))
654687 then {
655- let bK = getString(al(ai))
656- if ($isInstanceOf(bK, "Unit"))
657- then $Tuple2([DeleteEntry(m), BooleanEntry(u(bG), true), IntegerEntry(q, t), IntegerEntry(r, bd)], true)
658- else if ($isInstanceOf(bK, "String"))
688+ let bS = getString(aq(an))
689+ if ($isInstanceOf(bS, "Unit"))
690+ then $Tuple2([DeleteEntry(n), BooleanEntry(v(bO), true), IntegerEntry(r, u), IntegerEntry(s, bi)], true)
691+ else if ($isInstanceOf(bS, "String"))
659692 then {
660- let bS = bK
661- $Tuple2([StringEntry(n, bS)], true)
693+ let ca = bS
694+ $Tuple2([StringEntry(o, ca)], true)
662695 }
663696 else throw("Match error")
664697 }
665- else if ($isInstanceOf(N, "String"))
698+ else if ($isInstanceOf(O, "String"))
666699 then {
667- let bs = N
668- let bD = {
669- let R = invoke(this, "processPoolINTERNAL", [bs], nil)
670- if ($isInstanceOf(R, "Boolean"))
671- then R
672- else throw(($getType(invoke(this, "processPoolINTERNAL", [bs], nil)) + " couldn't be cast to Boolean"))
700+ let by = O
701+ let bK = {
702+ let S = invoke(this, "processPoolINTERNAL", [by], nil)
703+ if ($isInstanceOf(S, "Boolean"))
704+ then S
705+ else throw(($getType(invoke(this, "processPoolINTERNAL", [by], nil)) + " couldn't be cast to Boolean"))
673706 }
674- if ((bD == bD))
675- then if (bD)
707+ if ((bK == bK))
708+ then if (bK)
676709 then $Tuple2(nil, true)
677710 else {
678- let bP = getString(ar(ai, bs))
679- let bK = bP
680- if ($isInstanceOf(bK, "Unit"))
681- then $Tuple2([DeleteEntry(m), BooleanEntry(u(bG), true), IntegerEntry(q, t), IntegerEntry(r, bd), DeleteEntry(n)], true)
682- else if ($isInstanceOf(bK, "String"))
711+ let bX = getString(aw(an, by))
712+ let bS = bX
713+ if ($isInstanceOf(bS, "Unit"))
714+ then $Tuple2([DeleteEntry(n), BooleanEntry(v(bO), true), IntegerEntry(r, u), IntegerEntry(s, bi), DeleteEntry(o)], true)
715+ else if ($isInstanceOf(bS, "String"))
683716 then {
684- let bS = bK
685- $Tuple2([StringEntry(n, bS)], true)
717+ let ca = bS
718+ $Tuple2([StringEntry(o, ca)], true)
686719 }
687720 else throw("Match error")
688721 }
695728
696729
697730
698-@Callable(aH)
699-func finalizeWrapper (bT) = {
700- let bU = {
701- let R = invoke(this, "finalizeHelper", nil, nil)
702- if ($isInstanceOf(R, "Boolean"))
703- then R
731+@Callable(aM)
732+func finalizeWrapper (cb) = {
733+ let cc = {
734+ let S = invoke(this, "finalizeHelper", nil, nil)
735+ if ($isInstanceOf(S, "Boolean"))
736+ then S
704737 else throw(($getType(invoke(this, "finalizeHelper", nil, nil)) + " couldn't be cast to Boolean"))
705738 }
706- if ((bU == bU))
707- then if (!(bU))
708- then if ((bT == 0))
739+ if ((cc == cc))
740+ then if (!(cc))
741+ then if ((cb == 0))
709742 then throw("Current voting is not over yet")
710743 else $Tuple2(nil, unit)
711744 else {
712- let bV = valueOrElse(getInteger(this, h), c)
713- if ((bV > bT))
745+ let cd = valueOrElse(getInteger(this, h), c)
746+ if ((cd > cb))
714747 then {
715- let bW = invoke(this, "finalizeWrapper", [(bT + 1)], nil)
716- if ((bW == bW))
748+ let ce = invoke(this, "finalizeWrapper", [(cb + 1)], nil)
749+ if ((ce == ce))
717750 then $Tuple2(nil, unit)
718751 else throw("Strict value is not equal to itself.")
719752 }
724757
725758
726759
727-@Callable(aH)
760+@Callable(aM)
728761 func finalize () = {
729- let bW = invoke(this, "finalizeWrapper", [0], nil)
730- if ((bW == bW))
762+ let ce = invoke(this, "finalizeWrapper", [0], nil)
763+ if ((ce == ce))
731764 then $Tuple2(nil, unit)
732765 else throw("Strict value is not equal to itself.")
733766 }
734767
735768
736769
737-@Callable(aH)
738-func onVerificationLoss (bX) = $Tuple2(nil, unit)
770+@Callable(aM)
771+func onVerificationLoss (ak) = $Tuple2(nil, unit)
739772
740773
741774
742-@Callable(aH)
743-func containsNodeREADONLY (am,aq) = $Tuple2(nil, as(am, aq))
775+@Callable(aM)
776+func containsNodeREADONLY (ar,av) = $Tuple2(nil, ax(ar, av))
744777
745778
746779
747-@Callable(aH)
748-func insertNode (am,aq) = {
749- let aL = aI(aH)
750- if ((aL == aL))
751- then $Tuple2(aw(am, aq), unit)
780+@Callable(aM)
781+func insertNode (ar,av) = {
782+ let aQ = aN(aM)
783+ if ((aQ == aQ))
784+ then $Tuple2(aB(ar, av), unit)
752785 else throw("Strict value is not equal to itself.")
753786 }
754787
755788
756789
757-@Callable(aH)
758-func deleteNode (am,aq) = {
759- let aL = aI(aH)
760- if ((aL == aL))
761- then $Tuple2(az(am, aq), unit)
790+@Callable(aM)
791+func deleteNode (ar,av) = {
792+ let aQ = aN(aM)
793+ if ((aQ == aQ))
794+ then $Tuple2(aE(ar, av), unit)
762795 else throw("Strict value is not equal to itself.")
763796 }
764797
765798
766-@Verifier(bY)
767-func bZ () = {
768- let ca = {
769- let N = aC()
770- if ($isInstanceOf(N, "ByteVector"))
799+@Verifier(cf)
800+func cg () = {
801+ let ch = {
802+ let O = aH()
803+ if ($isInstanceOf(O, "ByteVector"))
771804 then {
772- let aJ = N
773- aJ
805+ let aO = O
806+ aO
774807 }
775- else if ($isInstanceOf(N, "Unit"))
776- then bY.senderPublicKey
808+ else if ($isInstanceOf(O, "Unit"))
809+ then cf.senderPublicKey
777810 else throw("Match error")
778811 }
779- sigVerify(bY.bodyBytes, bY.proofs[0], ca)
812+ sigVerify(cf.bodyBytes, cf.proofs[0], ch)
780813 }
781814
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 100000000
77
88 let c = 10
99
1010 let d = 0
1111
1212 let e = 1
1313
1414 let f = makeString(["%s", "epochLength"], a)
1515
1616 let g = makeString(["%s", "currentEpoch"], a)
1717
1818 let h = makeString(["%s", "maxDepth"], a)
1919
2020 let i = makeString(["%s", "votingEmissionCandidateContract"], a)
2121
2222 let j = makeString(["%s", "factoryContract"], a)
2323
2424 let k = makeString(["%s", "boostingContract"], a)
2525
2626 let l = makeString(["%s", "stakingContract"], a)
2727
28-let m = makeString(["%s", "finalizationStage"], a)
28+let m = makeString(["%s", "assetsStoreContract"], a)
2929
30-let n = makeString(["%s", "nextPool"], a)
30+let n = makeString(["%s", "finalizationStage"], a)
3131
32-let o = makeString(["%s", "nextUser"], a)
32+let o = makeString(["%s", "nextPool"], a)
3333
34-let p = makeString(["%s", "startHeight"], a)
34+let p = makeString(["%s", "nextUser"], a)
3535
36-let q = makeString(["%s", "currentEpochUi"], a)
36+let q = makeString(["%s", "startHeight"], a)
3737
38-let r = makeString(["%s", "startHeightUi"], a)
38+let r = makeString(["%s", "currentEpochUi"], a)
3939
40-func s (t) = makeString(["%s%d", "startHeight", toString(t)], a)
40+let s = makeString(["%s", "startHeightUi"], a)
41+
42+func t (u) = makeString(["%s%d", "startHeight", toString(u)], a)
4143
4244
43-func u (t) = makeString(["%s%d", "finalized", toString(t)], a)
45+func v (u) = makeString(["%s%d", "finalized", toString(u)], a)
4446
4547
46-func v (w) = {
47- let x = w
48- let y = x._1
49- let z = x._2
50- makeString(["%s%s%s", "inList", y, z], a)
48+func w (x) = {
49+ let y = x
50+ let z = y._1
51+ let A = y._2
52+ makeString(["%s%s%s", "inList", z, A], a)
5153 }
5254
5355
54-func A (B,t) = makeString(["%s%s%d", "used", toString(B), toString(t)], a)
56+func B (C,u) = makeString(["%s%s%d", "used", toString(C), toString(u)], a)
5557
5658
57-func C (w,B,t) = {
58- let D = w
59- let y = D._1
60- let z = D._2
61- makeString(["%s%s%s%s%d", "vote", y, z, toString(B), toString(t)], a)
59+func D (x,C,u) = {
60+ let E = x
61+ let z = E._1
62+ let A = E._2
63+ makeString(["%s%s%s%s%d", "vote", z, A, toString(C), toString(u)], a)
6264 }
6365
6466
65-func E (w,t) = {
66- let F = w
67- let y = F._1
68- let z = F._2
69- makeString(["%s%s%s%d", "votingResult", y, z, toString(t)], a)
67+func F (x,u) = {
68+ let G = x
69+ let z = G._1
70+ let A = G._2
71+ makeString(["%s%s%s%d", "votingResult", z, A, toString(u)], a)
7072 }
7173
7274
73-func G (w,t) = {
74- let H = w
75- let y = H._1
76- let z = H._2
77- makeString(["%s%s%s%d", "poolShare", y, z, toString(t)], a)
75+func H (x,u) = {
76+ let I = x
77+ let z = I._1
78+ let A = I._2
79+ makeString(["%s%s%s%d", "poolShare", z, A, toString(u)], a)
7880 }
7981
8082
81-func I (t) = makeString(["%s%d", "totalVotes", toString(t)], a)
83+func J (u) = makeString(["%s%d", "totalVotes", toString(u)], a)
8284
8385
84-func J (B,K,L) = {
85- let M = makeString(["mandatory ", toString(B), ".", K, " is not defined"], "")
86+func K (C,L,M) = {
87+ let N = makeString(["mandatory ", toString(C), ".", L, " is not defined"], "")
8688 valueOrErrorMessage({
87- let N = L
88- if ($isInstanceOf(N, "String"))
89+ let O = M
90+ if ($isInstanceOf(O, "String"))
8991 then {
90- let O = N
91- getString(B, K)
92+ let P = O
93+ getString(C, L)
9294 }
93- else if ($isInstanceOf(N, "Int"))
95+ else if ($isInstanceOf(O, "Int"))
9496 then {
95- let P = N
96- getInteger(B, K)
97+ let Q = O
98+ getInteger(C, L)
9799 }
98100 else throw("invalid entry type")
99- }, M)
101+ }, N)
100102 }
101103
102104
103-func Q (B,K) = {
104- let R = J(B, K, "")
105- if ($isInstanceOf(R, "String"))
106- then R
107- else throw(($getType(J(B, K, "")) + " couldn't be cast to String"))
105+func R (C,L) = {
106+ let S = K(C, L, "")
107+ if ($isInstanceOf(S, "String"))
108+ then S
109+ else throw(($getType(K(C, L, "")) + " couldn't be cast to String"))
108110 }
109111
110112
111-func S (B,K) = {
112- let R = J(B, K, 0)
113- if ($isInstanceOf(R, "Int"))
114- then R
115- else throw(($getType(J(B, K, 0)) + " couldn't be cast to Int"))
113+func T (C,L) = {
114+ let S = K(C, L, 0)
115+ if ($isInstanceOf(S, "Int"))
116+ then S
117+ else throw(($getType(K(C, L, 0)) + " couldn't be cast to Int"))
116118 }
117119
118120
119-func T (w) = ((w._1 + a) + w._2)
121+func U (x) = ((x._1 + a) + x._2)
120122
121123
122-func U (O) = {
123- let V = split(O, a)
124- if ((size(V) == 2))
125- then $Tuple2(V[0], V[1])
124+func V (P) = {
125+ let W = split(P, a)
126+ if ((size(W) == 2))
127+ then $Tuple2(W[0], W[1])
126128 else throw("invalid pool string")
127129 }
128130
129131
130-func W (y,z) = {
131- func X (Y) = ("%s%s%s__mappings__baseAsset2internalId__" + Y)
132+func X (z,A) = {
133+ func Y (Z) = ("%s%s%s__mappings__baseAsset2internalId__" + Z)
132134
133- func Z (aa,ab) = (((("%d%d%s%s__" + toString(aa)) + "__") + toString(ab)) + "__mappings__poolAssets2PoolContract")
135+ func aa (ab,ac) = (((("%d%d%s%s__" + toString(ab)) + "__") + toString(ac)) + "__mappings__poolAssets2PoolContract")
134136
135- func ac (ad) = (("%s%s%s__" + ad) + "__mappings__poolContract2LpAsset")
137+ func ad (ae) = (("%s%s%s__" + ae) + "__mappings__poolContract2LpAsset")
136138
137- let ae = addressFromStringValue(Q(this, j))
138- let af = S(ae, X(y))
139- let ag = S(ae, X(z))
140- let ad = Q(ae, Z(af, ag))
141- let ah = Q(ae, ac(ad))
142- ah
139+ let af = addressFromStringValue(R(this, j))
140+ let ag = T(af, Y(z))
141+ let ah = T(af, Y(A))
142+ let ae = R(af, aa(ag, ah))
143+ let ai = R(af, ad(ae))
144+ ai
143145 }
144146
145147
146-let ai = "pools"
147-
148-func aj (w) = {
149- let ak = w
150- let y = ak._1
151- let z = ak._2
152- makeString(["votes", y, z], a)
148+func aj (ak) = {
149+ let al = addressFromStringValue(R(this, m))
150+ let am = {
151+ let S = invoke(al, "isVerifiedREADONLY", [ak], nil)
152+ if ($isInstanceOf(S, "Boolean"))
153+ then S
154+ else throw(($getType(invoke(al, "isVerifiedREADONLY", [ak], nil)) + " couldn't be cast to Boolean"))
155+ }
156+ am
153157 }
154158
155159
156-func al (am) = {
157- let an = if ((am == ai))
158- then "%s%s"
159- else "%s%s%s%s"
160- makeString([an, am, "head"], a)
160+let an = "pools"
161+
162+func ao (x) = {
163+ let ap = x
164+ let z = ap._1
165+ let A = ap._2
166+ makeString(["votes", z, A], a)
161167 }
162168
163169
164-func ao (am) = {
165- let an = if ((am == ai))
170+func aq (ar) = {
171+ let as = if ((ar == an))
166172 then "%s%s"
167173 else "%s%s%s%s"
168- makeString([an, am, "size"], a)
174+ makeString([as, ar, "head"], a)
169175 }
170176
171177
172-func ap (am,aq) = {
173- let an = if ((am == ai))
174- then "%s%s%s%s"
175- else "%s%s%s%s%s"
176- makeString([an, am, aq, "prev"], a)
178+func at (ar) = {
179+ let as = if ((ar == an))
180+ then "%s%s"
181+ else "%s%s%s%s"
182+ makeString([as, ar, "size"], a)
177183 }
178184
179185
180-func ar (am,aq) = {
181- let an = if ((am == ai))
186+func au (ar,av) = {
187+ let as = if ((ar == an))
182188 then "%s%s%s%s"
183189 else "%s%s%s%s%s"
184- makeString([an, am, aq, "next"], a)
190+ makeString([as, ar, av, "prev"], a)
185191 }
186192
187193
188-func as (am,aq) = {
189- let at = getString(this, al(am))
190- let au = getString(this, ap(am, aq))
191- let av = getString(this, ar(am, aq))
192- if (if ((aq == valueOrElse(at, "")))
193- then true
194- else (au != unit))
195- then true
196- else (av != unit)
194+func aw (ar,av) = {
195+ let as = if ((ar == an))
196+ then "%s%s%s%s"
197+ else "%s%s%s%s%s"
198+ makeString([as, ar, av, "next"], a)
197199 }
198200
199201
200-func aw (am,aq) = {
201- let at = getString(this, al(am))
202- let ax = valueOrElse(getInteger(this, ao(am)), 0)
203- let ay = if (!(as(am, aq)))
202+func ax (ar,av) = {
203+ let ay = getString(this, aq(ar))
204+ let az = getString(this, au(ar, av))
205+ let aA = getString(this, aw(ar, av))
206+ if (if ((av == valueOrElse(ay, "")))
207+ then true
208+ else (az != unit))
209+ then true
210+ else (aA != unit)
211+ }
212+
213+
214+func aB (ar,av) = {
215+ let ay = getString(this, aq(ar))
216+ let aC = valueOrElse(getInteger(this, at(ar)), 0)
217+ let aD = if (!(ax(ar, av)))
204218 then true
205219 else throw("Node exists")
206- if ((ay == ay))
207- then (([IntegerEntry(ao(am), (ax + 1))] ++ (if ((at != unit))
208- then [StringEntry(ar(am, aq), value(at)), StringEntry(ap(am, value(at)), aq)]
209- else nil)) ++ [StringEntry(al(am), aq)])
220+ if ((aD == aD))
221+ then (([IntegerEntry(at(ar), (aC + 1))] ++ (if ((ay != unit))
222+ then [StringEntry(aw(ar, av), value(ay)), StringEntry(au(ar, value(ay)), av)]
223+ else nil)) ++ [StringEntry(aq(ar), av)])
210224 else throw("Strict value is not equal to itself.")
211225 }
212226
213227
214-func az (am,aq) = {
215- let at = getString(this, al(am))
216- let ax = valueOrElse(getInteger(this, ao(am)), 0)
217- let au = getString(this, ap(am, aq))
218- let av = getString(this, ar(am, aq))
219- ([IntegerEntry(ao(am), (ax - 1))] ++ (if (if ((au != unit))
220- then (av != unit)
228+func aE (ar,av) = {
229+ let ay = getString(this, aq(ar))
230+ let aC = valueOrElse(getInteger(this, at(ar)), 0)
231+ let az = getString(this, au(ar, av))
232+ let aA = getString(this, aw(ar, av))
233+ ([IntegerEntry(at(ar), (aC - 1))] ++ (if (if ((az != unit))
234+ then (aA != unit)
221235 else false)
222- then [StringEntry(ar(am, value(au)), value(av)), StringEntry(ap(am, value(av)), value(au)), DeleteEntry(ap(am, aq)), DeleteEntry(ar(am, aq))]
223- else if ((av != unit))
224- then [StringEntry(al(am), value(av)), DeleteEntry(ar(am, aq)), DeleteEntry(ap(am, value(av)))]
225- else if ((au != unit))
226- then [DeleteEntry(ap(am, aq)), DeleteEntry(ar(am, value(au)))]
227- else if ((aq == valueOrElse(at, "")))
228- then [DeleteEntry(al(am))]
229- else throw(((("invalid node: " + am) + ".") + aq))))
236+ then [StringEntry(aw(ar, value(az)), value(aA)), StringEntry(au(ar, value(aA)), value(az)), DeleteEntry(au(ar, av)), DeleteEntry(aw(ar, av))]
237+ else if ((aA != unit))
238+ then [StringEntry(aq(ar), value(aA)), DeleteEntry(aw(ar, av)), DeleteEntry(au(ar, value(aA)))]
239+ else if ((az != unit))
240+ then [DeleteEntry(au(ar, av)), DeleteEntry(aw(ar, value(az)))]
241+ else if ((av == valueOrElse(ay, "")))
242+ then [DeleteEntry(aq(ar))]
243+ else throw(((("invalid node: " + ar) + ".") + av))))
230244 }
231245
232246
233-func aA () = "%s__managerPublicKey"
247+func aF () = "%s__managerPublicKey"
234248
235249
236-func aB () = "%s__pendingManagerPublicKey"
250+func aG () = "%s__pendingManagerPublicKey"
237251
238252
239-func aC () = {
240- let N = getString(aA())
241- if ($isInstanceOf(N, "String"))
253+func aH () = {
254+ let O = getString(aF())
255+ if ($isInstanceOf(O, "String"))
242256 then {
243- let aD = N
244- fromBase58String(aD)
257+ let aI = O
258+ fromBase58String(aI)
245259 }
246- else if ($isInstanceOf(N, "Unit"))
260+ else if ($isInstanceOf(O, "Unit"))
247261 then unit
248262 else throw("Match error")
249263 }
250264
251265
252-func aE () = {
253- let N = getString(aB())
254- if ($isInstanceOf(N, "String"))
266+func aJ () = {
267+ let O = getString(aG())
268+ if ($isInstanceOf(O, "String"))
255269 then {
256- let aD = N
257- fromBase58String(aD)
270+ let aI = O
271+ fromBase58String(aI)
258272 }
259- else if ($isInstanceOf(N, "Unit"))
273+ else if ($isInstanceOf(O, "Unit"))
260274 then unit
261275 else throw("Match error")
262276 }
263277
264278
265-let aF = throw("Permission denied")
279+let aK = throw("Permission denied")
266280
267-func aG (aH) = if ((aH.caller == this))
281+func aL (aM) = if ((aM.caller == this))
268282 then true
269- else aF
283+ else aK
270284
271285
272-func aI (aH) = {
273- let N = aC()
274- if ($isInstanceOf(N, "ByteVector"))
286+func aN (aM) = {
287+ let O = aH()
288+ if ($isInstanceOf(O, "ByteVector"))
275289 then {
276- let aJ = N
277- if ((aH.callerPublicKey == aJ))
290+ let aO = O
291+ if ((aM.callerPublicKey == aO))
278292 then true
279- else aF
293+ else aK
280294 }
281- else if ($isInstanceOf(N, "Unit"))
282- then aG(aH)
295+ else if ($isInstanceOf(O, "Unit"))
296+ then aL(aM)
283297 else throw("Match error")
284298 }
285299
286300
287-@Callable(aH)
288-func setManager (aK) = {
289- let aL = aI(aH)
290- if ((aL == aL))
301+@Callable(aM)
302+func setManager (aP) = {
303+ let aQ = aN(aM)
304+ if ((aQ == aQ))
291305 then {
292- let aM = fromBase58String(aK)
293- if ((aM == aM))
294- then [StringEntry(aB(), aK)]
306+ let aR = fromBase58String(aP)
307+ if ((aR == aR))
308+ then [StringEntry(aG(), aP)]
295309 else throw("Strict value is not equal to itself.")
296310 }
297311 else throw("Strict value is not equal to itself.")
298312 }
299313
300314
301315
302-@Callable(aH)
316+@Callable(aM)
303317 func confirmManager () = {
304- let aN = aE()
305- let aO = if (isDefined(aN))
318+ let aS = aJ()
319+ let aT = if (isDefined(aS))
306320 then true
307321 else throw("No pending manager")
308- if ((aO == aO))
322+ if ((aT == aT))
309323 then {
310- let aP = if ((aH.callerPublicKey == value(aN)))
324+ let aU = if ((aM.callerPublicKey == value(aS)))
311325 then true
312326 else throw("You are not pending manager")
313- if ((aP == aP))
314- then [StringEntry(aA(), toBase58String(value(aN))), DeleteEntry(aB())]
327+ if ((aU == aU))
328+ then [StringEntry(aF(), toBase58String(value(aS))), DeleteEntry(aG())]
315329 else throw("Strict value is not equal to itself.")
316330 }
317331 else throw("Strict value is not equal to itself.")
318332 }
319333
320334
321335
322-@Callable(aH)
323-func getUserGwxAmountAtHeight (aQ,aR) = {
324- let aS = valueOrErrorMessage(addressFromString(Q(this, k)), "invalid boosting contract address")
336+@Callable(aM)
337+func getUserGwxAmountAtHeight (aV,aW) = {
338+ let aX = valueOrErrorMessage(addressFromString(R(this, k)), "invalid boosting contract address")
325339 $Tuple2(nil, {
326- let R = invoke(aS, "getUserGwxAmountAtHeightREADONLY", [aQ, aR], nil)
327- if ($isInstanceOf(R, "Int"))
328- then R
329- else throw(($getType(invoke(aS, "getUserGwxAmountAtHeightREADONLY", [aQ, aR], nil)) + " couldn't be cast to Int"))
340+ let S = invoke(aX, "getUserGwxAmountAtHeightREADONLY", [aV, aW], nil)
341+ if ($isInstanceOf(S, "Int"))
342+ then S
343+ else throw(($getType(invoke(aX, "getUserGwxAmountAtHeightREADONLY", [aV, aW], nil)) + " couldn't be cast to Int"))
330344 })
331345 }
332346
333347
334348
335-@Callable(aH)
336-func constructor (ae,aT,aU,aV,aW) = {
337- let aX = [aI(aH), if ((addressFromString(ae) != unit))
349+@Callable(aM)
350+func constructor (af,aY,aZ,ba,al,bb) = {
351+ let bc = [aN(aM), if ((addressFromString(af) != unit))
338352 then true
339- else "invalid factory contract address", if ((addressFromString(aT) != unit))
353+ else "invalid factory contract address", if ((addressFromString(aY) != unit))
340354 then true
341- else "invalid voting emission candidate contract address", if ((addressFromString(aU) != unit))
355+ else "invalid voting emission candidate contract address", if ((addressFromString(aZ) != unit))
342356 then true
343- else "invalid boosting contract address", if ((addressFromString(aV) != unit))
357+ else "invalid boosting contract address", if ((addressFromString(ba) != unit))
344358 then true
345- else "invalid staking contract address", if ((aW > 0))
359+ else "invalid staking contract address", if ((addressFromString(al) != unit))
360+ then true
361+ else "invalid assets store contract address", if ((bb > 0))
346362 then true
347363 else throw("invalid epoch length")]
348- if ((aX == aX))
349- then $Tuple2([StringEntry(j, ae), StringEntry(i, aT), StringEntry(k, aU), StringEntry(l, aV), IntegerEntry(f, aW)], unit)
364+ if ((bc == bc))
365+ then $Tuple2([StringEntry(j, af), StringEntry(i, aY), StringEntry(k, aZ), StringEntry(l, ba), StringEntry(m, al), IntegerEntry(f, bb)], unit)
350366 else throw("Strict value is not equal to itself.")
351367 }
352368
353369
354370
355-@Callable(aH)
356-func create (y,z) = {
357- let aY = [if ((toBase58String(aH.caller.bytes) == valueOrElse(getString(this, i), "")))
371+@Callable(aM)
372+func create (z,A) = {
373+ let bd = [if ((toBase58String(aM.caller.bytes) == valueOrElse(getString(this, i), "")))
358374 then true
359- else aI(aH)]
360- if ((aY == aY))
375+ else aN(aM)]
376+ if ((bd == bd))
361377 then {
362- let w = $Tuple2(y, z)
363- let aZ = ([BooleanEntry(v(w), true)] ++ aw(ai, T(w)))
364- let ba = (getInteger(this, g) == unit)
365- let bb = if (ba)
378+ let x = $Tuple2(z, A)
379+ let be = ([BooleanEntry(w(x), true)] ++ aB(an, U(x)))
380+ let bf = (getInteger(this, g) == unit)
381+ let bg = if (bf)
366382 then {
367- let t = 0
368-[IntegerEntry(g, t), IntegerEntry(s(t), height), IntegerEntry(p, height), IntegerEntry(q, t), IntegerEntry(r, height)]
383+ let u = 0
384+[IntegerEntry(g, u), IntegerEntry(t(u), height), IntegerEntry(q, height), IntegerEntry(r, u), IntegerEntry(s, height)]
369385 }
370386 else nil
371- $Tuple2((aZ ++ bb), unit)
387+ $Tuple2((be ++ bg), unit)
372388 }
373389 else throw("Strict value is not equal to itself.")
374390 }
375391
376392
377393
378-@Callable(aH)
379-func vote (y,z,bc) = {
380- let w = $Tuple2(y, z)
381- let t = valueOrElse(getInteger(this, g), 0)
382- let bd = S(this, s(t))
383- let aW = S(this, f)
384- let be = (bd + aW)
385- let bf = getInteger(this, m)
386- let bg = valueOrElse(getInteger(this, A(aH.caller, t)), 0)
387- let bh = valueOrElse(getInteger(this, C(w, aH.caller, t)), 0)
388- let bi = valueOrElse(getInteger(this, E(w, t)), 0)
389- let bj = valueOrElse(getInteger(this, I(t)), 0)
390- let bk = {
391- let R = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aH.caller.bytes), be], nil)
392- if ($isInstanceOf(R, "Int"))
393- then R
394- else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aH.caller.bytes), be], nil)) + " couldn't be cast to Int"))
394+@Callable(aM)
395+func vote (z,A,bh) = {
396+ let x = $Tuple2(z, A)
397+ let u = valueOrElse(getInteger(this, g), 0)
398+ let bi = T(this, t(u))
399+ let bb = T(this, f)
400+ let bj = (bi + bb)
401+ let bk = getInteger(this, n)
402+ let bl = valueOrElse(getInteger(this, B(aM.caller, u)), 0)
403+ let bm = valueOrElse(getInteger(this, D(x, aM.caller, u)), 0)
404+ let bn = valueOrElse(getInteger(this, F(x, u)), 0)
405+ let bo = valueOrElse(getInteger(this, J(u)), 0)
406+ let bp = {
407+ let S = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aM.caller.bytes), bj], nil)
408+ if ($isInstanceOf(S, "Int"))
409+ then S
410+ else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aM.caller.bytes), bj], nil)) + " couldn't be cast to Int"))
395411 }
396- let bl = (bk - bg)
397- let bm = (bh + bc)
398- let aY = [if ((getBoolean(v(w)) != unit))
412+ let bq = (bp - bl)
413+ let br = (bm + bh)
414+ let bs = aj(z)
415+ let bd = [if ((getBoolean(w(x)) != unit))
399416 then true
400- else throw("invalid assets"), if ((be > height))
417+ else throw("invalid assets"), if ((bj > height))
401418 then true
402- else throw("invalid height"), if ((bf == unit))
419+ else throw("invalid height"), if ((bk == unit))
403420 then true
404- else throw("finalization in progress"), if ((bk > 0))
421+ else throw("finalization in progress"), if ((bp > 0))
405422 then true
406- else throw("you do not have gWX"), if (if ((bc > 0))
407- then (bl >= bc)
423+ else throw("you do not have gWX"), if (if ((bh > 0))
424+ then (bq >= bh)
408425 else false)
409426 then true
410- else throw("invalid amount")]
411- if ((aY == aY))
427+ else throw("invalid amount"), if (bs)
428+ then true
429+ else throw("amount asset is not verified")]
430+ if ((bd == bd))
412431 then {
413- let bn = aj(w)
414- let bo = toString(aH.caller)
415- let bp = if (as(bn, bo))
432+ let bt = ao(x)
433+ let bu = toString(aM.caller)
434+ let bv = if (ax(bt, bu))
416435 then nil
417- else aw(bn, bo)
418- $Tuple2(([IntegerEntry(A(aH.caller, t), (bg + bc)), IntegerEntry(C(w, aH.caller, t), bm), IntegerEntry(E(w, t), (bi + bc)), IntegerEntry(I(t), (bj + bc))] ++ bp), unit)
436+ else aB(bt, bu)
437+ $Tuple2(([IntegerEntry(B(aM.caller, u), (bl + bh)), IntegerEntry(D(x, aM.caller, u), br), IntegerEntry(F(x, u), (bn + bh)), IntegerEntry(J(u), (bo + bh))] ++ bv), unit)
419438 }
420439 else throw("Strict value is not equal to itself.")
421440 }
422441
423442
424443
425-@Callable(aH)
426-func cancelVote (y,z) = {
427- let w = $Tuple2(y, z)
428- let t = valueOrElse(getInteger(this, g), 0)
429- let bd = S(this, s(t))
430- let aW = S(this, f)
431- let be = (bd + aW)
432- let bf = getInteger(this, m)
433- let bg = valueOrElse(getInteger(this, A(aH.caller, t)), 0)
434- let bh = valueOrElse(getInteger(this, C(w, aH.caller, t)), 0)
435- let bi = valueOrElse(getInteger(this, E(w, t)), 0)
436- let bj = valueOrElse(getInteger(this, I(t)), 0)
437- let aY = [if ((getBoolean(v(w)) != unit))
444+@Callable(aM)
445+func cancelVote (z,A) = {
446+ let x = $Tuple2(z, A)
447+ let u = valueOrElse(getInteger(this, g), 0)
448+ let bi = T(this, t(u))
449+ let bb = T(this, f)
450+ let bj = (bi + bb)
451+ let bk = getInteger(this, n)
452+ let bl = valueOrElse(getInteger(this, B(aM.caller, u)), 0)
453+ let bm = valueOrElse(getInteger(this, D(x, aM.caller, u)), 0)
454+ let bn = valueOrElse(getInteger(this, F(x, u)), 0)
455+ let bo = valueOrElse(getInteger(this, J(u)), 0)
456+ let bd = [if ((getBoolean(w(x)) != unit))
438457 then true
439- else throw("invalid assets"), if ((be > height))
458+ else throw("invalid assets"), if ((bj > height))
440459 then true
441- else throw("invalid height"), if ((bf == unit))
460+ else throw("invalid height"), if ((bk == unit))
442461 then true
443- else throw("finalization in progress"), if ((bh > 0))
462+ else throw("finalization in progress"), if ((bm > 0))
444463 then true
445464 else throw("no vote")]
446- if ((aY == aY))
465+ if ((bd == bd))
447466 then {
448- let bn = aj(w)
449- let bo = toString(aH.caller)
450- $Tuple2(([IntegerEntry(A(aH.caller, t), max([(bg - bh), 0])), DeleteEntry(C(w, aH.caller, t)), IntegerEntry(E(w, t), (bi - bh)), IntegerEntry(I(t), (bj - bh))] ++ az(bn, bo)), unit)
467+ let bt = ao(x)
468+ let bu = toString(aM.caller)
469+ $Tuple2(([IntegerEntry(B(aM.caller, u), max([(bl - bm), 0])), DeleteEntry(D(x, aM.caller, u)), IntegerEntry(F(x, u), (bn - bm)), IntegerEntry(J(u), (bo - bm))] ++ aE(bt, bu)), unit)
451470 }
452471 else throw("Strict value is not equal to itself.")
453472 }
454473
455474
456475
457-@Callable(aH)
458-func setEpochLength (bq) = {
459- let aX = [aI(aH), if ((bq > 0))
476+@Callable(aM)
477+func setEpochLength (bw) = {
478+ let bc = [aN(aM), if ((bw > 0))
460479 then true
461480 else throw("invalid epoch length")]
462- if ((aX == aX))
463- then $Tuple2([IntegerEntry(f, bq)], unit)
481+ if ((bc == bc))
482+ then $Tuple2([IntegerEntry(f, bw)], unit)
464483 else throw("Strict value is not equal to itself.")
465484 }
466485
467486
468487
469-@Callable(aH)
470-func setMaxDepth (br) = {
471- let aX = [aI(aH), if ((br > 0))
488+@Callable(aM)
489+func setMaxDepth (bx) = {
490+ let bc = [aN(aM), if ((bx > 0))
472491 then true
473492 else throw("invalid max depth")]
474- if ((aX == aX))
475- then $Tuple2([IntegerEntry(h, br)], unit)
493+ if ((bc == bc))
494+ then $Tuple2([IntegerEntry(h, bx)], unit)
476495 else throw("Strict value is not equal to itself.")
477496 }
478497
479498
480499
481-@Callable(aH)
482-func processVoteINTERNAL (bs,bo) = {
483- let aL = aG(aH)
484- if ((aL == aL))
500+@Callable(aM)
501+func processVoteINTERNAL (by,bu) = {
502+ let aQ = aL(aM)
503+ if ((aQ == aQ))
485504 then {
486- let aQ = valueOrErrorMessage(addressFromString(bo), ("processVoteINTERNAL: invalid user address " + bo))
487- let t = S(this, g)
488- let bt = (t - 1)
489- let aW = S(this, f)
490- let bd = S(this, s(t))
491- let be = (bd + aW)
492- let bu = S(this, s(bt))
493- let bv = (bu + aW)
494- let bw = if ((bt >= 0))
505+ let aV = valueOrErrorMessage(addressFromString(bu), ("processVoteINTERNAL: invalid user address " + bu))
506+ let u = T(this, g)
507+ let bz = (u - 1)
508+ let bb = T(this, f)
509+ let bi = T(this, t(u))
510+ let bj = (bi + bb)
511+ let bA = T(this, t(bz))
512+ let bB = (bA + bb)
513+ let bC = if ((bz >= 0))
495514 then true
496515 else throw("processVoteINTERNAL: invalid previous epoch")
497- if ((bw == bw))
516+ if ((bC == bC))
498517 then {
499- let w = U(bs)
500- let bk = {
501- let R = invoke(this, "getUserGwxAmountAtHeight", [bo, be], nil)
502- if ($isInstanceOf(R, "Int"))
503- then R
504- else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [bo, be], nil)) + " couldn't be cast to Int"))
518+ let x = V(by)
519+ let bD = x
520+ let z = bD._1
521+ let A = bD._2
522+ let bs = aj(z)
523+ let bp = {
524+ let S = invoke(this, "getUserGwxAmountAtHeight", [bu, bj], nil)
525+ if ($isInstanceOf(S, "Int"))
526+ then S
527+ else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [bu, bj], nil)) + " couldn't be cast to Int"))
505528 }
506- let bx = {
507- let R = invoke(this, "getUserGwxAmountAtHeight", [bo, bv], nil)
508- if ($isInstanceOf(R, "Int"))
509- then R
510- else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [bo, bv], nil)) + " couldn't be cast to Int"))
529+ let bE = {
530+ let S = invoke(this, "getUserGwxAmountAtHeight", [bu, bB], nil)
531+ if ($isInstanceOf(S, "Int"))
532+ then S
533+ else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [bu, bB], nil)) + " couldn't be cast to Int"))
511534 }
512- let bj = valueOrElse(getInteger(I(t)), 0)
513- let by = valueOrElse(getInteger(E(w, t)), 0)
514- let bz = valueOrErrorMessage(getInteger(C(w, aQ, bt)), (((("processVoteINTERNAL " + bs) + " ") + bo) + ": no previous vote"))
515- let bg = valueOrElse(getInteger(this, A(aQ, t)), 0)
516- let bm = fraction(bz, bk, bx)
517- let bA = if ((bm > 0))
518- then [IntegerEntry(C(w, aQ, t), bm), IntegerEntry(I(t), (bj + bm)), IntegerEntry(E(w, t), (by + bm)), IntegerEntry(A(aQ, t), (bg + bm))]
519- else az(aj(w), bo)
520- $Tuple2(bA, unit)
535+ let bo = valueOrElse(getInteger(J(u)), 0)
536+ let bF = valueOrElse(getInteger(F(x, u)), 0)
537+ let bG = valueOrErrorMessage(getInteger(D(x, aV, bz)), (((("processVoteINTERNAL " + by) + " ") + bu) + ": no previous vote"))
538+ let bl = valueOrElse(getInteger(this, B(aV, u)), 0)
539+ let br = fraction(bG, bp, bE)
540+ let bH = if (if ((br > 0))
541+ then bs
542+ else false)
543+ then [IntegerEntry(D(x, aV, u), br), IntegerEntry(J(u), (bo + br)), IntegerEntry(F(x, u), (bF + br)), IntegerEntry(B(aV, u), (bl + br))]
544+ else aE(ao(x), bu)
545+ $Tuple2(bH, unit)
521546 }
522547 else throw("Strict value is not equal to itself.")
523548 }
524549 else throw("Strict value is not equal to itself.")
525550 }
526551
527552
528553
529-@Callable(aH)
530-func processPoolINTERNAL (bs) = {
531- let aL = aG(aH)
532- if ((aL == aL))
554+@Callable(aM)
555+func processPoolINTERNAL (by) = {
556+ let aQ = aL(aM)
557+ if ((aQ == aQ))
533558 then {
534- let bB = (S(this, g) - 1)
535- let bw = if ((bB >= 0))
559+ let bI = (T(this, g) - 1)
560+ let bC = if ((bI >= 0))
536561 then true
537562 else throw("processPoolINTERNAL: invalid target epoch")
538- if ((bw == bw))
563+ if ((bC == bC))
539564 then {
540- let w = U(bs)
541- let bC = w
542- let y = bC._1
543- let z = bC._2
544- let aV = addressFromStringValue(Q(this, l))
545- let ae = addressFromStringValue(Q(this, j))
546- let ah = W(y, z)
547- let bD = {
548- let R = invoke(aV, "usersListTraversal", [ah], nil)
549- if ($isInstanceOf(R, "Boolean"))
550- then R
551- else throw(($getType(invoke(aV, "usersListTraversal", [ah], nil)) + " couldn't be cast to Boolean"))
565+ let x = V(by)
566+ let bJ = x
567+ let z = bJ._1
568+ let A = bJ._2
569+ let ba = addressFromStringValue(R(this, l))
570+ let af = addressFromStringValue(R(this, j))
571+ let ai = X(z, A)
572+ let bK = {
573+ let S = invoke(ba, "usersListTraversal", [ai], nil)
574+ if ($isInstanceOf(S, "Boolean"))
575+ then S
576+ else throw(($getType(invoke(ba, "usersListTraversal", [ai], nil)) + " couldn't be cast to Boolean"))
552577 }
553- if ((bD == bD))
554- then if (bD)
578+ if ((bK == bK))
579+ then if (bK)
555580 then $Tuple2(nil, true)
556581 else {
557- let bj = valueOrElse(getInteger(this, I(bB)), 0)
558- let by = valueOrElse(getInteger(this, E(w, bB)), 0)
559- let bE = if ((bj == 0))
582+ let bs = aj(z)
583+ let bo = valueOrElse(getInteger(this, J(bI)), 0)
584+ let bF = valueOrElse(getInteger(this, F(x, bI)), 0)
585+ let bL = if (if ((bo == 0))
586+ then true
587+ else !(bs))
560588 then 0
561- else fraction(by, b, bj)
562- let bF = invoke(ae, "modifyWeight", [ah, bE], nil)
563- if ((bF == bF))
564- then $Tuple2([IntegerEntry(G(w, bB), bE)], false)
589+ else fraction(bF, b, bo)
590+ let bM = invoke(af, "modifyWeight", [ai, bL], nil)
591+ if ((bM == bM))
592+ then {
593+ let bN = if (bs)
594+ then nil
595+ else ([DeleteEntry(w(x))] ++ aE(an, by))
596+ $Tuple2(([IntegerEntry(H(x, bI), bL)] ++ bN), false)
597+ }
565598 else throw("Strict value is not equal to itself.")
566599 }
567600 else throw("Strict value is not equal to itself.")
568601 }
569602 else throw("Strict value is not equal to itself.")
570603 }
571604 else throw("Strict value is not equal to itself.")
572605 }
573606
574607
575608
576-@Callable(aH)
609+@Callable(aM)
577610 func finalizeHelper () = {
578- let t = valueOrElse(getInteger(this, g), 0)
579- let bG = (t - 1)
580- let bd = S(this, s(t))
581- let aW = S(this, f)
582- let be = (bd + aW)
583- let bf = getInteger(this, m)
584- if ((height >= be))
611+ let u = valueOrElse(getInteger(this, g), 0)
612+ let bO = (u - 1)
613+ let bi = T(this, t(u))
614+ let bb = T(this, f)
615+ let bj = (bi + bb)
616+ let bk = getInteger(this, n)
617+ if ((height >= bj))
585618 then {
586- let bH = (t + 1)
587- $Tuple2([IntegerEntry(s(bH), height), IntegerEntry(p, height), IntegerEntry(g, bH), IntegerEntry(m, d)], true)
619+ let bP = (u + 1)
620+ $Tuple2([IntegerEntry(t(bP), height), IntegerEntry(q, height), IntegerEntry(g, bP), IntegerEntry(n, d)], true)
588621 }
589- else if ((bf == unit))
622+ else if ((bk == unit))
590623 then $Tuple2(nil, false)
591- else if ((bf == d))
624+ else if ((bk == d))
592625 then {
593- let bI = getString(n)
594- let bJ = getString(o)
595- let N = bI
596- if ($isInstanceOf(N, "Unit"))
626+ let bQ = getString(o)
627+ let bR = getString(p)
628+ let O = bQ
629+ if ($isInstanceOf(O, "Unit"))
597630 then {
598- let bK = getString(al(ai))
599- if ($isInstanceOf(bK, "Unit"))
600- then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
601- else if ($isInstanceOf(bK, "String"))
631+ let bS = getString(aq(an))
632+ if ($isInstanceOf(bS, "Unit"))
633+ then $Tuple2([IntegerEntry(n, e), DeleteEntry(o), DeleteEntry(p)], true)
634+ else if ($isInstanceOf(bS, "String"))
602635 then {
603- let bL = bK
604- $Tuple2([StringEntry(n, bL)], true)
636+ let bT = bS
637+ $Tuple2([StringEntry(o, bT)], true)
605638 }
606639 else throw("Match error")
607640 }
608- else if ($isInstanceOf(N, "String"))
641+ else if ($isInstanceOf(O, "String"))
609642 then {
610- let bs = N
611- let w = U(bs)
612- let bM = {
613- let bK = bJ
614- if ($isInstanceOf(bK, "Unit"))
615- then getString(al(aj(w)))
616- else if ($isInstanceOf(bK, "String"))
643+ let by = O
644+ let x = V(by)
645+ let bU = {
646+ let bS = bR
647+ if ($isInstanceOf(bS, "Unit"))
648+ then getString(aq(ao(x)))
649+ else if ($isInstanceOf(bS, "String"))
617650 then {
618- let bN = bK
619- let bO = invoke(this, "processVoteINTERNAL", [bs, bN], nil)
620- if ((bO == bO))
621- then getString(ar(aj(w), bN))
651+ let bV = bS
652+ let bW = invoke(this, "processVoteINTERNAL", [by, bV], nil)
653+ if ((bW == bW))
654+ then getString(aw(ao(x), bV))
622655 else throw("Strict value is not equal to itself.")
623656 }
624657 else throw("Match error")
625658 }
626- let bK = bM
627- if ($isInstanceOf(bK, "Unit"))
659+ let bS = bU
660+ if ($isInstanceOf(bS, "Unit"))
628661 then {
629- let bP = getString(ar(ai, bs))
630- let bQ = bP
631- if ($isInstanceOf(bQ, "Unit"))
632- then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
633- else if ($isInstanceOf(bQ, "String"))
662+ let bX = getString(aw(an, by))
663+ let bY = bX
664+ if ($isInstanceOf(bY, "Unit"))
665+ then $Tuple2([IntegerEntry(n, e), DeleteEntry(o), DeleteEntry(p)], true)
666+ else if ($isInstanceOf(bY, "String"))
634667 then {
635- let aD = bQ
636- $Tuple2([StringEntry(n, aD), DeleteEntry(o)], true)
668+ let aI = bY
669+ $Tuple2([StringEntry(o, aI), DeleteEntry(p)], true)
637670 }
638671 else throw("Match error")
639672 }
640- else if ($isInstanceOf(bK, "String"))
673+ else if ($isInstanceOf(bS, "String"))
641674 then {
642- let bR = bK
643- $Tuple2([StringEntry(o, bR)], true)
675+ let bZ = bS
676+ $Tuple2([StringEntry(p, bZ)], true)
644677 }
645678 else throw("Match error")
646679 }
647680 else throw("Match error")
648681 }
649- else if ((bf == e))
682+ else if ((bk == e))
650683 then {
651- let bI = getString(n)
652- let N = bI
653- if ($isInstanceOf(N, "Unit"))
684+ let bQ = getString(o)
685+ let O = bQ
686+ if ($isInstanceOf(O, "Unit"))
654687 then {
655- let bK = getString(al(ai))
656- if ($isInstanceOf(bK, "Unit"))
657- then $Tuple2([DeleteEntry(m), BooleanEntry(u(bG), true), IntegerEntry(q, t), IntegerEntry(r, bd)], true)
658- else if ($isInstanceOf(bK, "String"))
688+ let bS = getString(aq(an))
689+ if ($isInstanceOf(bS, "Unit"))
690+ then $Tuple2([DeleteEntry(n), BooleanEntry(v(bO), true), IntegerEntry(r, u), IntegerEntry(s, bi)], true)
691+ else if ($isInstanceOf(bS, "String"))
659692 then {
660- let bS = bK
661- $Tuple2([StringEntry(n, bS)], true)
693+ let ca = bS
694+ $Tuple2([StringEntry(o, ca)], true)
662695 }
663696 else throw("Match error")
664697 }
665- else if ($isInstanceOf(N, "String"))
698+ else if ($isInstanceOf(O, "String"))
666699 then {
667- let bs = N
668- let bD = {
669- let R = invoke(this, "processPoolINTERNAL", [bs], nil)
670- if ($isInstanceOf(R, "Boolean"))
671- then R
672- else throw(($getType(invoke(this, "processPoolINTERNAL", [bs], nil)) + " couldn't be cast to Boolean"))
700+ let by = O
701+ let bK = {
702+ let S = invoke(this, "processPoolINTERNAL", [by], nil)
703+ if ($isInstanceOf(S, "Boolean"))
704+ then S
705+ else throw(($getType(invoke(this, "processPoolINTERNAL", [by], nil)) + " couldn't be cast to Boolean"))
673706 }
674- if ((bD == bD))
675- then if (bD)
707+ if ((bK == bK))
708+ then if (bK)
676709 then $Tuple2(nil, true)
677710 else {
678- let bP = getString(ar(ai, bs))
679- let bK = bP
680- if ($isInstanceOf(bK, "Unit"))
681- then $Tuple2([DeleteEntry(m), BooleanEntry(u(bG), true), IntegerEntry(q, t), IntegerEntry(r, bd), DeleteEntry(n)], true)
682- else if ($isInstanceOf(bK, "String"))
711+ let bX = getString(aw(an, by))
712+ let bS = bX
713+ if ($isInstanceOf(bS, "Unit"))
714+ then $Tuple2([DeleteEntry(n), BooleanEntry(v(bO), true), IntegerEntry(r, u), IntegerEntry(s, bi), DeleteEntry(o)], true)
715+ else if ($isInstanceOf(bS, "String"))
683716 then {
684- let bS = bK
685- $Tuple2([StringEntry(n, bS)], true)
717+ let ca = bS
718+ $Tuple2([StringEntry(o, ca)], true)
686719 }
687720 else throw("Match error")
688721 }
689722 else throw("Strict value is not equal to itself.")
690723 }
691724 else throw("Match error")
692725 }
693726 else throw("finalization is broken")
694727 }
695728
696729
697730
698-@Callable(aH)
699-func finalizeWrapper (bT) = {
700- let bU = {
701- let R = invoke(this, "finalizeHelper", nil, nil)
702- if ($isInstanceOf(R, "Boolean"))
703- then R
731+@Callable(aM)
732+func finalizeWrapper (cb) = {
733+ let cc = {
734+ let S = invoke(this, "finalizeHelper", nil, nil)
735+ if ($isInstanceOf(S, "Boolean"))
736+ then S
704737 else throw(($getType(invoke(this, "finalizeHelper", nil, nil)) + " couldn't be cast to Boolean"))
705738 }
706- if ((bU == bU))
707- then if (!(bU))
708- then if ((bT == 0))
739+ if ((cc == cc))
740+ then if (!(cc))
741+ then if ((cb == 0))
709742 then throw("Current voting is not over yet")
710743 else $Tuple2(nil, unit)
711744 else {
712- let bV = valueOrElse(getInteger(this, h), c)
713- if ((bV > bT))
745+ let cd = valueOrElse(getInteger(this, h), c)
746+ if ((cd > cb))
714747 then {
715- let bW = invoke(this, "finalizeWrapper", [(bT + 1)], nil)
716- if ((bW == bW))
748+ let ce = invoke(this, "finalizeWrapper", [(cb + 1)], nil)
749+ if ((ce == ce))
717750 then $Tuple2(nil, unit)
718751 else throw("Strict value is not equal to itself.")
719752 }
720753 else $Tuple2(nil, unit)
721754 }
722755 else throw("Strict value is not equal to itself.")
723756 }
724757
725758
726759
727-@Callable(aH)
760+@Callable(aM)
728761 func finalize () = {
729- let bW = invoke(this, "finalizeWrapper", [0], nil)
730- if ((bW == bW))
762+ let ce = invoke(this, "finalizeWrapper", [0], nil)
763+ if ((ce == ce))
731764 then $Tuple2(nil, unit)
732765 else throw("Strict value is not equal to itself.")
733766 }
734767
735768
736769
737-@Callable(aH)
738-func onVerificationLoss (bX) = $Tuple2(nil, unit)
770+@Callable(aM)
771+func onVerificationLoss (ak) = $Tuple2(nil, unit)
739772
740773
741774
742-@Callable(aH)
743-func containsNodeREADONLY (am,aq) = $Tuple2(nil, as(am, aq))
775+@Callable(aM)
776+func containsNodeREADONLY (ar,av) = $Tuple2(nil, ax(ar, av))
744777
745778
746779
747-@Callable(aH)
748-func insertNode (am,aq) = {
749- let aL = aI(aH)
750- if ((aL == aL))
751- then $Tuple2(aw(am, aq), unit)
780+@Callable(aM)
781+func insertNode (ar,av) = {
782+ let aQ = aN(aM)
783+ if ((aQ == aQ))
784+ then $Tuple2(aB(ar, av), unit)
752785 else throw("Strict value is not equal to itself.")
753786 }
754787
755788
756789
757-@Callable(aH)
758-func deleteNode (am,aq) = {
759- let aL = aI(aH)
760- if ((aL == aL))
761- then $Tuple2(az(am, aq), unit)
790+@Callable(aM)
791+func deleteNode (ar,av) = {
792+ let aQ = aN(aM)
793+ if ((aQ == aQ))
794+ then $Tuple2(aE(ar, av), unit)
762795 else throw("Strict value is not equal to itself.")
763796 }
764797
765798
766-@Verifier(bY)
767-func bZ () = {
768- let ca = {
769- let N = aC()
770- if ($isInstanceOf(N, "ByteVector"))
799+@Verifier(cf)
800+func cg () = {
801+ let ch = {
802+ let O = aH()
803+ if ($isInstanceOf(O, "ByteVector"))
771804 then {
772- let aJ = N
773- aJ
805+ let aO = O
806+ aO
774807 }
775- else if ($isInstanceOf(N, "Unit"))
776- then bY.senderPublicKey
808+ else if ($isInstanceOf(O, "Unit"))
809+ then cf.senderPublicKey
777810 else throw("Match error")
778811 }
779- sigVerify(bY.bodyBytes, bY.proofs[0], ca)
812+ sigVerify(cf.bodyBytes, cf.proofs[0], ch)
780813 }
781814

github/deemru/w8io/169f3d6 
333.87 ms