tx · 88gk9CrcrDWinEbNpe3PU2bq87xEaf6bjRATJsVpDUcG

3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL:  -0.02800000 Waves

2022.07.01 13:52 [2120487] smart account 3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL > SELF 0.00000000 Waves

{ "type": 13, "id": "88gk9CrcrDWinEbNpe3PU2bq87xEaf6bjRATJsVpDUcG", "fee": 2800000, "feeAssetId": null, "timestamp": 1656672837309, "version": 1, "sender": "3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL", "senderPublicKey": "DnPyGWCgpQChvoQrnXQRcC9FtN32mPGrcog2wcKHdkVn", "proofs": [ "3hqt38S8KPGBn8zDDACTAqMAheuNtqfiG1Mn5k1eJSLarhAP6mF4e58TMQasSLRmV1HZRHGaVvguev8iRpVrxRdX" ], "script": "base64:BgJbCAISAwoBCBIAEgQKAggBEgcKBQgICAgBEgQKAggIEgUKAwgIARIECgIICBIDCgEBEgMKAQESBAoCCAgSAwoBCBIAEgMKAQESABIECgIICBIECgIICBIECgIICDEACXNlcGFyYXRvcgICX18ADnBvb2xXZWlnaHRNdWx0AIDC1y8AD21heERlcHRoRGVmYXVsdAAKABZmaW5hbGl6YXRpb25TdGFnZVRvdGFsAAAAF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzAAEADmtleUVwb2NoTGVuZ3RoCQC5CQIJAMwIAgICJXMJAMwIAgILZXBvY2hMZW5ndGgFA25pbAUJc2VwYXJhdG9yAA9rZXlDdXJyZW50RXBvY2gJALkJAgkAzAgCAgIlcwkAzAgCAgxjdXJyZW50RXBvY2gFA25pbAUJc2VwYXJhdG9yAAtrZXlNYXhEZXB0aAkAuQkCCQDMCAICAiVzCQDMCAICCG1heERlcHRoBQNuaWwFCXNlcGFyYXRvcgAia2V5Vm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdAkAuQkCCQDMCAICAiVzCQDMCAICH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QFA25pbAUJc2VwYXJhdG9yABJrZXlGYWN0b3J5Q29udHJhY3QJALkJAgkAzAgCAgIlcwkAzAgCAg9mYWN0b3J5Q29udHJhY3QFA25pbAUJc2VwYXJhdG9yABNrZXlCb29zdGluZ0NvbnRyYWN0CQC5CQIJAMwIAgICJXMJAMwIAgIQYm9vc3RpbmdDb250cmFjdAUDbmlsBQlzZXBhcmF0b3IAEmtleVN0YWtpbmdDb250cmFjdAkAuQkCCQDMCAICAiVzCQDMCAICD3N0YWtpbmdDb250cmFjdAUDbmlsBQlzZXBhcmF0b3IAFGtleUZpbmFsaXphdGlvblN0YWdlCQC5CQIJAMwIAgICJXMJAMwIAgIRZmluYWxpemF0aW9uU3RhZ2UFA25pbAUJc2VwYXJhdG9yAAtrZXlOZXh0UG9vbAkAuQkCCQDMCAICAiVzCQDMCAICCG5leHRQb29sBQNuaWwFCXNlcGFyYXRvcgALa2V5TmV4dFVzZXIJALkJAgkAzAgCAgIlcwkAzAgCAghuZXh0VXNlcgUDbmlsBQlzZXBhcmF0b3IADmtleVN0YXJ0SGVpZ2h0CQC5CQIJAMwIAgICJXMJAMwIAgILc3RhcnRIZWlnaHQFA25pbAUJc2VwYXJhdG9yABFrZXlDdXJyZW50RXBvY2hVaQkAuQkCCQDMCAICAiVzCQDMCAICDmN1cnJlbnRFcG9jaFVpBQNuaWwFCXNlcGFyYXRvcgAQa2V5U3RhcnRIZWlnaHRVaQkAuQkCCQDMCAICAiVzCQDMCAICDXN0YXJ0SGVpZ2h0VWkFA25pbAUJc2VwYXJhdG9yARVrZXlTdGFydEhlaWdodEJ5RXBvY2gBBWVwb2NoCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtzdGFydEhlaWdodAkAzAgCCQCkAwEFBWVwb2NoBQNuaWwFCXNlcGFyYXRvcgEMa2V5RmluYWxpemVkAQVlcG9jaAkAuQkCCQDMCAICBCVzJWQJAMwIAgIJZmluYWxpemVkCQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQlrZXlJbkxpc3QBBHBvb2wECyR0MDE0MzYxNDc2BQRwb29sBA1hbW91bnRBc3NldElkCAULJHQwMTQzNjE0NzYCXzEEDHByaWNlQXNzZXRJZAgFCyR0MDE0MzYxNDc2Al8yCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICBmluTGlzdAkAzAgCBQ1hbW91bnRBc3NldElkCQDMCAIFDHByaWNlQXNzZXRJZAUDbmlsBQlzZXBhcmF0b3IBB2tleVVzZWQCB2FkZHJlc3MFZXBvY2gJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIEdXNlZAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgkApAMBBQVlcG9jaAUDbmlsBQlzZXBhcmF0b3IBB2tleVZvdGUDBHBvb2wHYWRkcmVzcwVlcG9jaAQLJHQwMTc1MDE3OTAFBHBvb2wEDWFtb3VudEFzc2V0SWQIBQskdDAxNzUwMTc5MAJfMQQMcHJpY2VBc3NldElkCAULJHQwMTc1MDE3OTACXzIJALkJAgkAzAgCAgolcyVzJXMlcyVkCQDMCAICBHZvdGUJAMwIAgUNYW1vdW50QXNzZXRJZAkAzAgCBQxwcmljZUFzc2V0SWQJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQ9rZXlWb3RpbmdSZXN1bHQCBHBvb2wFZXBvY2gECyR0MDE5NzIyMDEyBQRwb29sBA1hbW91bnRBc3NldElkCAULJHQwMTk3MjIwMTICXzEEDHByaWNlQXNzZXRJZAgFCyR0MDE5NzIyMDEyAl8yCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIMdm90aW5nUmVzdWx0CQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkCQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQxrZXlQb29sU2hhcmUCBHBvb2wFZXBvY2gECyR0MDIxNzcyMjE3BQRwb29sBA1hbW91bnRBc3NldElkCAULJHQwMjE3NzIyMTcCXzEEDHByaWNlQXNzZXRJZAgFCyR0MDIxNzcyMjE3Al8yCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIJcG9vbFNoYXJlCQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkCQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQ1rZXlUb3RhbFZvdGVzAQVlcG9jaAkAuQkCCQDMCAICBCVzJWQJAMwIAgIKdG90YWxWb3RlcwkAzAgCCQCkAwEFBWVwb2NoBQNuaWwFCXNlcGFyYXRvcgEOZ2V0VmFsdWVPckZhaWwDB2FkZHJlc3MDa2V5BHR5cGUEBWVycm9yCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBAckbWF0Y2gwBQR0eXBlAwkAAQIFByRtYXRjaDACBlN0cmluZwQDc3RyBQckbWF0Y2gwCQCdCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAkAmggCBQdhZGRyZXNzBQNrZXkJAAIBAhJpbnZhbGlkIGVudHJ5IHR5cGUFBWVycm9yAQxnZXRTdHJPckZhaWwCB2FkZHJlc3MDa2V5CgABQAkBDmdldFZhbHVlT3JGYWlsAwUHYWRkcmVzcwUDa2V5AgADCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQkBDmdldFZhbHVlT3JGYWlsAwUHYWRkcmVzcwUDa2V5AgACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwEMZ2V0SW50T3JGYWlsAgdhZGRyZXNzA2tleQoAAUAJAQ5nZXRWYWx1ZU9yRmFpbAMFB2FkZHJlc3MFA2tleQAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAQ5nZXRWYWx1ZU9yRmFpbAMFB2FkZHJlc3MFA2tleQAAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBDHBvb2xUb1N0cmluZwEEcG9vbAkArAICCQCsAgIIBQRwb29sAl8xBQlzZXBhcmF0b3IIBQRwb29sAl8yAQxzdHJpbmdUb1Bvb2wBA3N0cgQFcGFydHMJALUJAgUDc3RyBQlzZXBhcmF0b3IDCQAAAgkAkAMBBQVwYXJ0cwACCQCUCgIJAJEDAgUFcGFydHMAAAkAkQMCBQVwYXJ0cwABCQACAQITaW52YWxpZCBwb29sIHN0cmluZwEWZ2V0THBBc3NldEJ5UG9vbEFzc2V0cwINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQKAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQxiYXNlQXNzZXRTdHIJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUMYmFzZUFzc2V0U3RyCgEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCGGludGVybmFsQW1vdW50QXNzZXRJZFN0chdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgkArAICCQCsAgIJAKwCAgkArAICAgolZCVkJXMlc19fCQCkAwEFGGludGVybmFsQW1vdW50QXNzZXRJZFN0cgICX18JAKQDAQUXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHICI19fbWFwcGluZ3NfX3Bvb2xBc3NldHMyUG9vbENvbnRyYWN0CgEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAETcG9vbENvbnRyYWN0QWRkcmVzcwkArAICCQCsAgICCCVzJXMlc19fBRNwb29sQ29udHJhY3RBZGRyZXNzAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAQPZmFjdG9yeUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEMZ2V0U3RyT3JGYWlsAgUEdGhpcwUSa2V5RmFjdG9yeUNvbnRyYWN0BBVhbW91bnRBc3NldEludGVybmFsSWQJAQxnZXRJbnRPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUNYW1vdW50QXNzZXRJZAQUcHJpY2VBc3NldEludGVybmFsSWQJAQxnZXRJbnRPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUMcHJpY2VBc3NldElkBBNwb29sQ29udHJhY3RBZGRyZXNzCQEMZ2V0U3RyT3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0CQEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCBRVhbW91bnRBc3NldEludGVybmFsSWQFFHByaWNlQXNzZXRJbnRlcm5hbElkBAlscEFzc2V0SWQJAQxnZXRTdHJPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQUTcG9vbENvbnRyYWN0QWRkcmVzcwUJbHBBc3NldElkARhjaGVja1d4RW1pc3Npb25Qb29sTGFiZWwBBHBvb2wECyR0MDQ0NTk0NDk5BQRwb29sBA1hbW91bnRBc3NldElkCAULJHQwNDQ1OTQ0OTkCXzEEDHByaWNlQXNzZXRJZAgFCyR0MDQ0NTk0NDk5Al8yBA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzBRJrZXlGYWN0b3J5Q29udHJhY3QKAAFACQD8BwQFD2ZhY3RvcnlDb250cmFjdAIYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsCQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAkAzAgCBQ1hbW91bnRBc3NldElkCQDMCAIFDHByaWNlQXNzZXRJZAUDbmlsBQNuaWwCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4ADXBvb2xzTGlzdE5hbWUCBXBvb2xzARBnZXRWb3Rlc0xpc3ROYW1lAQRwb29sBAskdDA0ODAwNDg0MAUEcG9vbAQNYW1vdW50QXNzZXRJZAgFCyR0MDQ4MDA0ODQwAl8xBAxwcmljZUFzc2V0SWQIBQskdDA0ODAwNDg0MAJfMgkAuQkCCQDMCAICBXZvdGVzCQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkBQNuaWwFCXNlcGFyYXRvcgELa2V5TGlzdEhlYWQBCGxpc3ROYW1lBARtZXRhAwkAAAIFCGxpc3ROYW1lBQ1wb29sc0xpc3ROYW1lAgQlcyVzAgglcyVzJXMlcwkAuQkCCQDMCAIFBG1ldGEJAMwIAgUIbGlzdE5hbWUJAMwIAgIEaGVhZAUDbmlsBQlzZXBhcmF0b3IBC2tleUxpc3RTaXplAQhsaXN0TmFtZQQEbWV0YQMJAAACBQhsaXN0TmFtZQUNcG9vbHNMaXN0TmFtZQIEJXMlcwIIJXMlcyVzJXMJALkJAgkAzAgCBQRtZXRhCQDMCAIFCGxpc3ROYW1lCQDMCAICBHNpemUFA25pbAUJc2VwYXJhdG9yAQtrZXlMaXN0UHJldgIIbGlzdE5hbWUCaWQEBG1ldGEDCQAAAgUIbGlzdE5hbWUFDXBvb2xzTGlzdE5hbWUCCCVzJXMlcyVzAgolcyVzJXMlcyVzCQC5CQIJAMwIAgUEbWV0YQkAzAgCBQhsaXN0TmFtZQkAzAgCBQJpZAkAzAgCAgRwcmV2BQNuaWwFCXNlcGFyYXRvcgELa2V5TGlzdE5leHQCCGxpc3ROYW1lAmlkBARtZXRhAwkAAAIFCGxpc3ROYW1lBQ1wb29sc0xpc3ROYW1lAgglcyVzJXMlcwIKJXMlcyVzJXMlcwkAuQkCCQDMCAIFBG1ldGEJAMwIAgUIbGlzdE5hbWUJAMwIAgUCaWQJAMwIAgIEbmV4dAUDbmlsBQlzZXBhcmF0b3IBDGNvbnRhaW5zTm9kZQIIbGlzdE5hbWUCaWQECmhlYWRPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RIZWFkAQUIbGlzdE5hbWUECnByZXZPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkBApuZXh0T3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAMDCQAAAgUCaWQJAQt2YWx1ZU9yRWxzZQIFCmhlYWRPclVuaXQCAAYJAQIhPQIFCnByZXZPclVuaXQFBHVuaXQGCQECIT0CBQpuZXh0T3JVbml0BQR1bml0ARFpbnNlcnROb2RlQWN0aW9ucwIIbGlzdE5hbWUCaWQECmhlYWRPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RIZWFkAQUIbGlzdE5hbWUECGxpc3RTaXplCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQtrZXlMaXN0U2l6ZQEFCGxpc3ROYW1lAAAECWNoZWNrTm9kZQMJAQEhAQkBDGNvbnRhaW5zTm9kZQIFCGxpc3ROYW1lBQJpZAYJAAIBAgtOb2RlIGV4aXN0cwMJAAACBQljaGVja05vZGUFCWNoZWNrTm9kZQkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtrZXlMaXN0U2l6ZQEFCGxpc3ROYW1lCQBkAgUIbGlzdFNpemUAAQUDbmlsAwkBAiE9AgUKaGVhZE9yVW5pdAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQUCaWQJAQV2YWx1ZQEFCmhlYWRPclVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCmhlYWRPclVuaXQFAmlkBQNuaWwFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQUCaWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgERZGVsZXRlTm9kZUFjdGlvbnMCCGxpc3ROYW1lAmlkBApoZWFkT3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0SGVhZAEFCGxpc3ROYW1lBAhsaXN0U2l6ZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQELa2V5TGlzdFNpemUBBQhsaXN0TmFtZQAABApwcmV2T3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0UHJldgIFCGxpc3ROYW1lBQJpZAQKbmV4dE9yVW5pdAkAnQgCBQR0aGlzCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQUCaWQJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBC2tleUxpc3RTaXplAQUIbGlzdE5hbWUJAGUCBQhsaXN0U2l6ZQABBQNuaWwDAwkBAiE9AgUKcHJldk9yVW5pdAUEdW5pdAkBAiE9AgUKbmV4dE9yVW5pdAUEdW5pdAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleUxpc3ROZXh0AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCnByZXZPclVuaXQJAQV2YWx1ZQEFCm5leHRPclVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCm5leHRPclVuaXQJAQV2YWx1ZQEFCnByZXZPclVuaXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAUDbmlsAwkBAiE9AgUKbmV4dE9yVW5pdAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQkBBXZhbHVlAQUKbmV4dE9yVW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQUCaWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCm5leHRPclVuaXQFA25pbAMJAQIhPQIFCnByZXZPclVuaXQFBHVuaXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lCQEFdmFsdWUBBQpwcmV2T3JVbml0BQNuaWwDCQAAAgUCaWQJAQt2YWx1ZU9yRWxzZQIFCmhlYWRPclVuaXQCAAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQUDbmlsCQACAQkArAICCQCsAgIJAKwCAgIOaW52YWxpZCBub2RlOiAFCGxpc3ROYW1lAgEuBQJpZAETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABVwZXJtaXNzaW9uRGVuaWVkRXJyb3IJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAEIbXVzdFRoaXMBAWkDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUVcGVybWlzc2lvbkRlbmllZEVycm9yAQttdXN0TWFuYWdlcgEBaQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBRVwZXJtaXNzaW9uRGVuaWVkRXJyb3IDCQABAgUHJG1hdGNoMAIEVW5pdAkBCG11c3RUaGlzAQUBaQkAAgECC01hdGNoIGVycm9yEQFpAQpzZXRNYW5hZ2VyARdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBVjaGVja01hbmFnZXJQdWJsaWNLZXkJANkEAQUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAgUVY2hlY2tNYW5hZ2VyUHVibGljS2V5BRVjaGVja01hbmFnZXJQdWJsaWNLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb25maXJtTWFuYWdlcgAEAnBtCQEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAVoYXNQTQMJAQlpc0RlZmluZWQBBQJwbQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUFaGFzUE0FBWhhc1BNBAdjaGVja1BNAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCcG0GCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFB2NoZWNrUE0FB2NoZWNrUE0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleU1hbmFnZXJQdWJsaWNLZXkACQDYBAEJAQV2YWx1ZQEFAnBtCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQCC3VzZXJBZGRyZXNzDHRhcmdldEhlaWdodAQXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQEMZ2V0U3RyT3JGYWlsAgUEdGhpcwUTa2V5Qm9vc3RpbmdDb250cmFjdAIhaW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQCUCgIFA25pbAoAAUAJAPwHBAUXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MCIGdldFVzZXJHd3hBbW91bnRBdEhlaWdodFJFQURPTkxZCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFDHRhcmdldEhlaWdodAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQkA/AcEBRdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwIgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkJAMwIAgULdXNlckFkZHJlc3MJAMwIAgUMdGFyZ2V0SGVpZ2h0BQNuaWwFA25pbAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AWkBC2NvbnN0cnVjdG9yBQ9mYWN0b3J5Q29udHJhY3Qfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdBBib29zdGluZ0NvbnRyYWN0D3N0YWtpbmdDb250cmFjdAtlcG9jaExlbmd0aAQGY2hlY2tzCQDMCAIJAQttdXN0TWFuYWdlcgEFAWkJAMwIAgMJAQIhPQIJAKYIAQUPZmFjdG9yeUNvbnRyYWN0BQR1bml0BgIgaW52YWxpZCBmYWN0b3J5IGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdAUEdW5pdAYCMmludmFsaWQgdm90aW5nIGVtaXNzaW9uIGNhbmRpZGF0ZSBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQECIT0CCQCmCAEFEGJvb3N0aW5nQ29udHJhY3QFBHVuaXQGAiFpbnZhbGlkIGJvb3N0aW5nIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUPc3Rha2luZ0NvbnRyYWN0BQR1bml0BgIgaW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAGYCBQtlcG9jaExlbmd0aAAABgkAAgECFGludmFsaWQgZXBvY2ggbGVuZ3RoBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBRJrZXlGYWN0b3J5Q29udHJhY3QFD2ZhY3RvcnlDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCBSJrZXlWb3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0BR92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIFE2tleUJvb3N0aW5nQ29udHJhY3QFEGJvb3N0aW5nQ29udHJhY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgUSa2V5U3Rha2luZ0NvbnRyYWN0BQ9zdGFraW5nQ29udHJhY3QJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleUVwb2NoTGVuZ3RoBQtlcG9jaExlbmd0aAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBmNyZWF0ZQINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQEBmNoZWNrcwkAzAgCAwkAAAIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBSJrZXlWb3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0AgAGCQELbXVzdE1hbmFnZXIBBQFpBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEBHBvb2wJAJQKAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkBA1pbkxpc3RBY3Rpb25zCQDOCAIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlJbkxpc3QBBQRwb29sBgUDbmlsCQERaW5zZXJ0Tm9kZUFjdGlvbnMCBQ1wb29sc0xpc3ROYW1lCQEMcG9vbFRvU3RyaW5nAQUEcG9vbAQYY3VycmVudEVwb2NoSXNOb3REZWZpbmVkCQAAAgkAmggCBQR0aGlzBQ9rZXlDdXJyZW50RXBvY2gFBHVuaXQEEnN0YXJ0SGVpZ2h0QWN0aW9ucwMFGGN1cnJlbnRFcG9jaElzTm90RGVmaW5lZAQFZXBvY2gAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa2V5Q3VycmVudEVwb2NoBQVlcG9jaAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAEFBWVwb2NoBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleVN0YXJ0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtleUN1cnJlbnRFcG9jaFVpBQVlcG9jaAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5U3RhcnRIZWlnaHRVaQUGaGVpZ2h0BQNuaWwFA25pbAkAlAoCCQDOCAIFDWluTGlzdEFjdGlvbnMFEnN0YXJ0SGVpZ2h0QWN0aW9ucwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQR2b3RlAw1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAZhbW91bnQEBHBvb2wJAJQKAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkBAVlcG9jaAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ9rZXlDdXJyZW50RXBvY2gAAAQLc3RhcnRIZWlnaHQJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUFZXBvY2gEC2Vwb2NoTGVuZ3RoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUOa2V5RXBvY2hMZW5ndGgECWVuZEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQtlcG9jaExlbmd0aAQXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQJAJoIAgUEdGhpcwUUa2V5RmluYWxpemF0aW9uU3RhZ2UEBHVzZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBB2tleVVzZWQCCAUBaQZjYWxsZXIFBWVwb2NoAAAEBHZvdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBB2tleVZvdGUDBQRwb29sCAUBaQZjYWxsZXIFBWVwb2NoAAAECnBvb2xSZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFBWVwb2NoAAAECnRvdGFsVm90ZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDWtleVRvdGFsVm90ZXMBBQVlcG9jaAAABBNnd3hBbW91bnRBdEVuZFRvdGFsCgABQAkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIFCWVuZEhlaWdodAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIFCWVuZEhlaWdodAUDbmlsBQNuaWwCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQJYXZhaWxhYmxlCQBlAgUTZ3d4QW1vdW50QXRFbmRUb3RhbAUEdXNlZAQHbmV3Vm90ZQkAZAIFBHZvdGUFBmFtb3VudAQKd3hFbWlzc2lvbgkBGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAEFBHBvb2wEBmNoZWNrcwkAzAgCAwkBAiE9AgkAoAgBCQEJa2V5SW5MaXN0AQUEcG9vbAUEdW5pdAYJAAIBAg5pbnZhbGlkIGFzc2V0cwkAzAgCAwkAZgIFCWVuZEhlaWdodAUGaGVpZ2h0BgkAAgECDmludmFsaWQgaGVpZ2h0CQDMCAIDCQAAAgUXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQFBHVuaXQGCQACAQIYZmluYWxpemF0aW9uIGluIHByb2dyZXNzCQDMCAIDCQBmAgUTZ3d4QW1vdW50QXRFbmRUb3RhbAAABgkAAgECE3lvdSBkbyBub3QgaGF2ZSBnV1gJAMwIAgMDCQBmAgUGYW1vdW50AAAJAGcCBQlhdmFpbGFibGUFBmFtb3VudAcGCQACAQIOaW52YWxpZCBhbW91bnQJAMwIAgMFCnd4RW1pc3Npb24GCQACAQIdcG9vbCBoYXNuJ3QgV1hfRU1JU1NJT04gbGFiZWwFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQNdm90ZXNMaXN0TmFtZQkBEGdldFZvdGVzTGlzdE5hbWUBBQRwb29sBA51c2VyQWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEEHZvdGVzTGlzdEFjdGlvbnMDCQEMY29udGFpbnNOb2RlAgUNdm90ZXNMaXN0TmFtZQUOdXNlckFkZHJlc3NTdHIFA25pbAkBEWluc2VydE5vZGVBY3Rpb25zAgUNdm90ZXNMaXN0TmFtZQUOdXNlckFkZHJlc3NTdHIJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEHa2V5VXNlZAIIBQFpBmNhbGxlcgUFZXBvY2gJAGQCBQR1c2VkBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQdrZXlWb3RlAwUEcG9vbAgFAWkGY2FsbGVyBQVlcG9jaAUHbmV3Vm90ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFBWVwb2NoCQBkAgUKcG9vbFJlc3VsdAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5VG90YWxWb3RlcwEFBWVwb2NoCQBkAgUKdG90YWxWb3RlcwUGYW1vdW50BQNuaWwFEHZvdGVzTGlzdEFjdGlvbnMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKY2FuY2VsVm90ZQINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQEBHBvb2wJAJQKAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkBAVlcG9jaAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ9rZXlDdXJyZW50RXBvY2gAAAQLc3RhcnRIZWlnaHQJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUFZXBvY2gEC2Vwb2NoTGVuZ3RoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUOa2V5RXBvY2hMZW5ndGgECWVuZEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQtlcG9jaExlbmd0aAQXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQJAJoIAgUEdGhpcwUUa2V5RmluYWxpemF0aW9uU3RhZ2UEBHVzZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBB2tleVVzZWQCCAUBaQZjYWxsZXIFBWVwb2NoAAAEBHZvdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBB2tleVZvdGUDBQRwb29sCAUBaQZjYWxsZXIFBWVwb2NoAAAECnBvb2xSZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFBWVwb2NoAAAECnRvdGFsVm90ZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDWtleVRvdGFsVm90ZXMBBQVlcG9jaAAABAZjaGVja3MJAMwIAgMJAQIhPQIJAKAIAQkBCWtleUluTGlzdAEFBHBvb2wFBHVuaXQGCQACAQIOaW52YWxpZCBhc3NldHMJAMwIAgMJAGYCBQllbmRIZWlnaHQFBmhlaWdodAYJAAIBAg5pbnZhbGlkIGhlaWdodAkAzAgCAwkAAAIFF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BQR1bml0BgkAAgECGGZpbmFsaXphdGlvbiBpbiBwcm9ncmVzcwkAzAgCAwkAZgIFBHZvdGUAAAYJAAIBAgdubyB2b3RlBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDXZvdGVzTGlzdE5hbWUJARBnZXRWb3Rlc0xpc3ROYW1lAQUEcG9vbAQOdXNlckFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBB2tleVVzZWQCCAUBaQZjYWxsZXIFBWVwb2NoCQCWAwEJAMwIAgkAZQIFBHVzZWQFBHZvdGUJAMwIAgAABQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleVZvdGUDBQRwb29sCAUBaQZjYWxsZXIFBWVwb2NoCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5Vm90aW5nUmVzdWx0AgUEcG9vbAUFZXBvY2gJAGUCBQpwb29sUmVzdWx0BQR2b3RlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5VG90YWxWb3RlcwEFBWVwb2NoCQBlAgUKdG90YWxWb3RlcwUEdm90ZQUDbmlsCQERZGVsZXRlTm9kZUFjdGlvbnMCBQ12b3Rlc0xpc3ROYW1lBQ51c2VyQWRkcmVzc1N0cgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5zZXRFcG9jaExlbmd0aAEObmV3RXBvY2hMZW5ndGgEBmNoZWNrcwkAzAgCCQELbXVzdE1hbmFnZXIBBQFpCQDMCAIDCQBmAgUObmV3RXBvY2hMZW5ndGgAAAYJAAIBAhRpbnZhbGlkIGVwb2NoIGxlbmd0aAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleUVwb2NoTGVuZ3RoBQ5uZXdFcG9jaExlbmd0aAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC3NldE1heERlcHRoAQtuZXdNYXhEZXB0aAQGY2hlY2tzCQDMCAIJAQttdXN0TWFuYWdlcgEFAWkJAMwIAgMJAGYCBQtuZXdNYXhEZXB0aAAABgkAAgECEWludmFsaWQgbWF4IGRlcHRoBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgULa2V5TWF4RGVwdGgFC25ld01heERlcHRoBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETcHJvY2Vzc1ZvdGVJTlRFUk5BTAIHcG9vbFN0cg51c2VyQWRkcmVzc1N0cgQLY2hlY2tDYWxsZXIJAQhtdXN0VGhpcwEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt1c2VyQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFDnVzZXJBZGRyZXNzU3RyCQCsAgICKnByb2Nlc3NWb3RlSU5URVJOQUw6IGludmFsaWQgdXNlciBhZGRyZXNzIAUOdXNlckFkZHJlc3NTdHIEBWVwb2NoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUPa2V5Q3VycmVudEVwb2NoBA1lcG9jaFByZXZpb3VzCQBlAgUFZXBvY2gAAQQLZXBvY2hMZW5ndGgJAQxnZXRJbnRPckZhaWwCBQR0aGlzBQ5rZXlFcG9jaExlbmd0aAQLc3RhcnRIZWlnaHQJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUFZXBvY2gECWVuZEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQtlcG9jaExlbmd0aAQTc3RhcnRIZWlnaHRQcmV2aW91cwkBDGdldEludE9yRmFpbAIFBHRoaXMJARVrZXlTdGFydEhlaWdodEJ5RXBvY2gBBQ1lcG9jaFByZXZpb3VzBBFlbmRIZWlnaHRQcmV2aW91cwkAZAIFE3N0YXJ0SGVpZ2h0UHJldmlvdXMFC2Vwb2NoTGVuZ3RoBBBjaGVja1RhcmdldEVwb2NoAwkAZwIFDWVwb2NoUHJldmlvdXMAAAYJAAIBAitwcm9jZXNzVm90ZUlOVEVSTkFMOiBpbnZhbGlkIHByZXZpb3VzIGVwb2NoAwkAAAIFEGNoZWNrVGFyZ2V0RXBvY2gFEGNoZWNrVGFyZ2V0RXBvY2gEBHBvb2wJAQxzdHJpbmdUb1Bvb2wBBQdwb29sU3RyBA0kdDAxNzEyOTE3MTY5BQRwb29sBA1hbW91bnRBc3NldElkCAUNJHQwMTcxMjkxNzE2OQJfMQQMcHJpY2VBc3NldElkCAUNJHQwMTcxMjkxNzE2OQJfMgQKd3hFbWlzc2lvbgkBGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAEFBHBvb2wEE2d3eEFtb3VudEF0RW5kVG90YWwKAAFACQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCBQllbmRIZWlnaHQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFCWVuZEhlaWdodAUDbmlsBQNuaWwCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQbZ3d4QW1vdW50QXRFbmRUb3RhbFByZXZpb3VzCgABQAkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgURZW5kSGVpZ2h0UHJldmlvdXMFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFEWVuZEhlaWdodFByZXZpb3VzBQNuaWwFA25pbAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAp0b3RhbFZvdGVzCQELdmFsdWVPckVsc2UCCQCfCAEJAQ1rZXlUb3RhbFZvdGVzAQUFZXBvY2gAAAQMdm90aW5nUmVzdWx0CQELdmFsdWVPckVsc2UCCQCfCAEJAQ9rZXlWb3RpbmdSZXN1bHQCBQRwb29sBQVlcG9jaAAABAx2b3RlUHJldmlvdXMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEHa2V5Vm90ZQMFBHBvb2wFC3VzZXJBZGRyZXNzBQ1lcG9jaFByZXZpb3VzCQCsAgIJAKwCAgkArAICCQCsAgICFHByb2Nlc3NWb3RlSU5URVJOQUwgBQdwb29sU3RyAgEgBQ51c2VyQWRkcmVzc1N0cgISOiBubyBwcmV2aW91cyB2b3RlBAR1c2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQdrZXlVc2VkAgULdXNlckFkZHJlc3MFBWVwb2NoAAAEB25ld1ZvdGUJAGsDBQx2b3RlUHJldmlvdXMFE2d3eEFtb3VudEF0RW5kVG90YWwFG2d3eEFtb3VudEF0RW5kVG90YWxQcmV2aW91cwQHYWN0aW9ucwMDCQBmAgUHbmV3Vm90ZQAABQp3eEVtaXNzaW9uBwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBB2tleVZvdGUDBQRwb29sBQt1c2VyQWRkcmVzcwUFZXBvY2gFB25ld1ZvdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlUb3RhbFZvdGVzAQUFZXBvY2gJAGQCBQp0b3RhbFZvdGVzBQduZXdWb3RlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5Vm90aW5nUmVzdWx0AgUEcG9vbAUFZXBvY2gJAGQCBQx2b3RpbmdSZXN1bHQFB25ld1ZvdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQdrZXlVc2VkAgULdXNlckFkZHJlc3MFBWVwb2NoCQBkAgUEdXNlZAUHbmV3Vm90ZQUDbmlsCQERZGVsZXRlTm9kZUFjdGlvbnMCCQEQZ2V0Vm90ZXNMaXN0TmFtZQEFBHBvb2wFDnVzZXJBZGRyZXNzU3RyCQCUCgIFB2FjdGlvbnMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETcHJvY2Vzc1Bvb2xJTlRFUk5BTAEHcG9vbFN0cgQLY2hlY2tDYWxsZXIJAQhtdXN0VGhpcwEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt0YXJnZXRFcG9jaAkAZQIJAQxnZXRJbnRPckZhaWwCBQR0aGlzBQ9rZXlDdXJyZW50RXBvY2gAAQQQY2hlY2tUYXJnZXRFcG9jaAMJAGcCBQt0YXJnZXRFcG9jaAAABgkAAgECKXByb2Nlc3NQb29sSU5URVJOQUw6IGludmFsaWQgdGFyZ2V0IGVwb2NoAwkAAAIFEGNoZWNrVGFyZ2V0RXBvY2gFEGNoZWNrVGFyZ2V0RXBvY2gEBHBvb2wJAQxzdHJpbmdUb1Bvb2wBBQdwb29sU3RyBA0kdDAxODY4NjE4NzI2BQRwb29sBA1hbW91bnRBc3NldElkCAUNJHQwMTg2ODYxODcyNgJfMQQMcHJpY2VBc3NldElkCAUNJHQwMTg2ODYxODcyNgJfMgQPc3Rha2luZ0NvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEMZ2V0U3RyT3JGYWlsAgUEdGhpcwUSa2V5U3Rha2luZ0NvbnRyYWN0BA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzBRJrZXlGYWN0b3J5Q29udHJhY3QECWxwQXNzZXRJZAkBFmdldExwQXNzZXRCeVBvb2xBc3NldHMCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQEAXIKAAFACQD8BwQFD3N0YWtpbmdDb250cmFjdAISdXNlcnNMaXN0VHJhdmVyc2FsCQDMCAIFCWxwQXNzZXRJZAUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhJ1c2Vyc0xpc3RUcmF2ZXJzYWwJAMwIAgUJbHBBc3NldElkBQNuaWwFA25pbAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgMJAAACBQFyBQFyAwUBcgkAlAoCBQNuaWwGBAp3eEVtaXNzaW9uCQEYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsAQUEcG9vbAQKdG90YWxWb3RlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQENa2V5VG90YWxWb3RlcwEFC3RhcmdldEVwb2NoAAAEDHZvdGluZ1Jlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEPa2V5Vm90aW5nUmVzdWx0AgUEcG9vbAULdGFyZ2V0RXBvY2gAAAQFc2hhcmUDAwkAAAIFCnRvdGFsVm90ZXMAAAYJAQEhAQUKd3hFbWlzc2lvbgAACQBrAwUMdm90aW5nUmVzdWx0BQ5wb29sV2VpZ2h0TXVsdAUKdG90YWxWb3RlcwQPbW9kaWZ5V2VpZ2h0SW52CQD8BwQFD2ZhY3RvcnlDb250cmFjdAIMbW9kaWZ5V2VpZ2h0CQDMCAIFCWxwQXNzZXRJZAkAzAgCBQVzaGFyZQUDbmlsBQNuaWwDCQAAAgUPbW9kaWZ5V2VpZ2h0SW52BQ9tb2RpZnlXZWlnaHRJbnYEEHBvb2xzTGlzdEFjdGlvbnMDBQp3eEVtaXNzaW9uBQNuaWwJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQEJa2V5SW5MaXN0AQUEcG9vbAUDbmlsCQERZGVsZXRlTm9kZUFjdGlvbnMCBQ1wb29sc0xpc3ROYW1lBQdwb29sU3RyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVBvb2xTaGFyZQIFBHBvb2wFC3RhcmdldEVwb2NoBQVzaGFyZQUDbmlsBRBwb29sc0xpc3RBY3Rpb25zBwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5maW5hbGl6ZUhlbHBlcgAEBWVwb2NoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFD2tleUN1cnJlbnRFcG9jaAAABA1wcmV2aW91c0Vwb2NoCQBlAgUFZXBvY2gAAQQLc3RhcnRIZWlnaHQJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUFZXBvY2gEC2Vwb2NoTGVuZ3RoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUOa2V5RXBvY2hMZW5ndGgECWVuZEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQtlcG9jaExlbmd0aAQXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQJAJoIAgUEdGhpcwUUa2V5RmluYWxpemF0aW9uU3RhZ2UDAwkAZwIFBmhlaWdodAUJZW5kSGVpZ2h0CQAAAgUXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQFBHVuaXQHBAhuZXdFcG9jaAkAZAIFBWVwb2NoAAEJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAEFCG5ld0Vwb2NoBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleVN0YXJ0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tleUN1cnJlbnRFcG9jaAUIbmV3RXBvY2gJAMwIAgkBDEludGVnZXJFbnRyeQIFFGtleUZpbmFsaXphdGlvblN0YWdlBRZmaW5hbGl6YXRpb25TdGFnZVRvdGFsBQNuaWwGAwkAAAIFF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BQR1bml0CQCUCgIFA25pbAcDCQAAAgUXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQFFmZpbmFsaXphdGlvblN0YWdlVG90YWwECnBvb2xPclVuaXQJAKIIAQULa2V5TmV4dFBvb2wECnVzZXJPclVuaXQJAKIIAQULa2V5TmV4dFVzZXIEByRtYXRjaDAFCnBvb2xPclVuaXQDCQABAgUHJG1hdGNoMAIEVW5pdAQHJG1hdGNoMQkAoggBCQELa2V5TGlzdEhlYWQBBQ1wb29sc0xpc3ROYW1lAwkAAQIFByRtYXRjaDECBFVuaXQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa2V5RmluYWxpemF0aW9uU3RhZ2UFF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzCQDMCAIJAQtEZWxldGVFbnRyeQEFC2tleU5leHRQb29sCQDMCAIJAQtEZWxldGVFbnRyeQEFC2tleU5leHRVc2VyBQNuaWwGAwkAAQIFByRtYXRjaDECBlN0cmluZwQMcG9vbHNIZWFkU3RyBQckbWF0Y2gxCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgULa2V5TmV4dFBvb2wFDHBvb2xzSGVhZFN0cgUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDACBlN0cmluZwQHcG9vbFN0cgUHJG1hdGNoMAQEcG9vbAkBDHN0cmluZ1RvUG9vbAEFB3Bvb2xTdHIEDm5leHRVc2VyT3JVbml0BAckbWF0Y2gxBQp1c2VyT3JVbml0AwkAAQIFByRtYXRjaDECBFVuaXQJAKIIAQkBC2tleUxpc3RIZWFkAQkBEGdldFZvdGVzTGlzdE5hbWUBBQRwb29sAwkAAQIFByRtYXRjaDECBlN0cmluZwQEdXNlcgUHJG1hdGNoMQQOcHJvY2Vzc1ZvdGVJbnYJAPwHBAUEdGhpcwITcHJvY2Vzc1ZvdGVJTlRFUk5BTAkAzAgCBQdwb29sU3RyCQDMCAIFBHVzZXIFA25pbAUDbmlsAwkAAAIFDnByb2Nlc3NWb3RlSW52BQ5wcm9jZXNzVm90ZUludgkAoggBCQELa2V5TGlzdE5leHQCCQEQZ2V0Vm90ZXNMaXN0TmFtZQEFBHBvb2wFBHVzZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgQHJG1hdGNoMQUObmV4dFVzZXJPclVuaXQDCQABAgUHJG1hdGNoMQIEVW5pdAQObmV4dFBvb2xPclVuaXQJAKIIAQkBC2tleUxpc3ROZXh0AgUNcG9vbHNMaXN0TmFtZQUHcG9vbFN0cgQHJG1hdGNoMgUObmV4dFBvb2xPclVuaXQDCQABAgUHJG1hdGNoMgIEVW5pdAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRrZXlGaW5hbGl6YXRpb25TdGFnZQUXZmluYWxpemF0aW9uU3RhZ2VTaGFyZXMJAMwIAgkBC0RlbGV0ZUVudHJ5AQULa2V5TmV4dFBvb2wJAMwIAgkBC0RlbGV0ZUVudHJ5AQULa2V5TmV4dFVzZXIFA25pbAYDCQABAgUHJG1hdGNoMgIGU3RyaW5nBAFzBQckbWF0Y2gyCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgULa2V5TmV4dFBvb2wFAXMJAMwIAgkBC0RlbGV0ZUVudHJ5AQULa2V5TmV4dFVzZXIFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gxAgZTdHJpbmcECG5leHRVc2VyBQckbWF0Y2gxCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgULa2V5TmV4dFVzZXIFCG5leHRVc2VyBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAgtNYXRjaCBlcnJvcgMJAAACBRdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdAUXZmluYWxpemF0aW9uU3RhZ2VTaGFyZXMECnBvb2xPclVuaXQJAKIIAQULa2V5TmV4dFBvb2wEByRtYXRjaDAFCnBvb2xPclVuaXQDCQABAgUHJG1hdGNoMAIEVW5pdAQHJG1hdGNoMQkAoggBCQELa2V5TGlzdEhlYWQBBQ1wb29sc0xpc3ROYW1lAwkAAQIFByRtYXRjaDECBFVuaXQJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBBRRrZXlGaW5hbGl6YXRpb25TdGFnZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBDGtleUZpbmFsaXplZAEFDXByZXZpb3VzRXBvY2gGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrZXlDdXJyZW50RXBvY2hVaQUFZXBvY2gJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVN0YXJ0SGVpZ2h0VWkFC3N0YXJ0SGVpZ2h0BQNuaWwGAwkAAQIFByRtYXRjaDECBlN0cmluZwQLbmV4dFBvb2xTdHIFByRtYXRjaDEJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQtrZXlOZXh0UG9vbAULbmV4dFBvb2xTdHIFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEB3Bvb2xTdHIFByRtYXRjaDAEAXIKAAFACQD8BwQFBHRoaXMCE3Byb2Nlc3NQb29sSU5URVJOQUwJAMwIAgUHcG9vbFN0cgUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwITcHJvY2Vzc1Bvb2xJTlRFUk5BTAkAzAgCBQdwb29sU3RyBQNuaWwFA25pbAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgMJAAACBQFyBQFyAwUBcgkAlAoCBQNuaWwGBA5uZXh0UG9vbE9yVW5pdAkAoggBCQELa2V5TGlzdE5leHQCBQ1wb29sc0xpc3ROYW1lBQdwb29sU3RyBAckbWF0Y2gxBQ5uZXh0UG9vbE9yVW5pdAMJAAECBQckbWF0Y2gxAgRVbml0CQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUUa2V5RmluYWxpemF0aW9uU3RhZ2UJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQxrZXlGaW5hbGl6ZWQBBQ1wcmV2aW91c0Vwb2NoBgkAzAgCCQEMSW50ZWdlckVudHJ5AgURa2V5Q3VycmVudEVwb2NoVWkFBWVwb2NoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlTdGFydEhlaWdodFVpBQtzdGFydEhlaWdodAkAzAgCCQELRGVsZXRlRW50cnkBBQtrZXlOZXh0UG9vbAUDbmlsBgMJAAECBQckbWF0Y2gxAgZTdHJpbmcEC25leHRQb29sU3RyBQckbWF0Y2gxCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgULa2V5TmV4dFBvb2wFC25leHRQb29sU3RyBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgkAAgECFmZpbmFsaXphdGlvbiBpcyBicm9rZW4BaQEPZmluYWxpemVXcmFwcGVyAQdjb3VudGVyBAZyZXN1bHQKAAFACQD8BwQFBHRoaXMCDmZpbmFsaXplSGVscGVyBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQkA/AcEBQR0aGlzAg5maW5hbGl6ZUhlbHBlcgUDbmlsBQNuaWwCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUGcmVzdWx0BQZyZXN1bHQDCQEBIQEFBnJlc3VsdAMJAAACBQdjb3VudGVyAAAJAAIBAh5DdXJyZW50IHZvdGluZyBpcyBub3Qgb3ZlciB5ZXQJAJQKAgUDbmlsBQR1bml0BAhtYXhEZXB0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlNYXhEZXB0aAUPbWF4RGVwdGhEZWZhdWx0AwkAZgIFCG1heERlcHRoBQdjb3VudGVyBANpbnYJAPwHBAUEdGhpcwIPZmluYWxpemVXcmFwcGVyCQDMCAIJAGQCBQdjb3VudGVyAAEFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52CQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIZmluYWxpemUABANpbnYJAPwHBAUEdGhpcwIPZmluYWxpemVXcmFwcGVyCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFGNvbnRhaW5zTm9kZVJFQURPTkxZAghsaXN0TmFtZQJpZAkAlAoCBQNuaWwJAQxjb250YWluc05vZGUCBQhsaXN0TmFtZQUCaWQBaQEKaW5zZXJ0Tm9kZQIIbGlzdE5hbWUCaWQEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAlAoCCQERaW5zZXJ0Tm9kZUFjdGlvbnMCBQhsaXN0TmFtZQUCaWQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKZGVsZXRlTm9kZQIIbGlzdE5hbWUCaWQEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAlAoCCQERZGVsZXRlTm9kZUFjdGlvbnMCBQhsaXN0TmFtZQUCaWQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXmcuRbf", "chainId": 84, "height": 2120487, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DkcmmoXLwve3WkKmc9zAjQwZua9euPjDZmpuYv5MQBTA Next: 7Dr8Ck7VDDrF6xdVvFT6qVBLwV3Tg7xdbuB4oeJStfzt Diff:
OldNewDifferences
366366
367367 @Callable(aJ)
368368 func create (y,z) = {
369- let ba = [if ((toBase58String(aJ.caller.bytes) == valueOrElse(getString(this, i), "")))
369+ let aZ = [if ((toBase58String(aJ.caller.bytes) == valueOrElse(getString(this, i), "")))
370370 then true
371371 else aK(aJ)]
372- if ((ba == ba))
372+ if ((aZ == aZ))
373373 then {
374374 let w = $Tuple2(y, z)
375- let bb = ([BooleanEntry(v(w), true)] ++ ay(ak, T(w)))
376- let bc = (getInteger(this, g) == unit)
377- let bd = if (bc)
375+ let ba = ([BooleanEntry(v(w), true)] ++ ay(ak, T(w)))
376+ let bb = (getInteger(this, g) == unit)
377+ let bc = if (bb)
378378 then {
379379 let t = 0
380380 [IntegerEntry(g, t), IntegerEntry(s(t), height), IntegerEntry(p, height), IntegerEntry(q, t), IntegerEntry(r, height)]
381381 }
382382 else nil
383- $Tuple2((bb ++ bd), unit)
383+ $Tuple2((ba ++ bc), unit)
384384 }
385385 else throw("Strict value is not equal to itself.")
386386 }
388388
389389
390390 @Callable(aJ)
391-func vote (y,z,be) = {
391+func vote (y,z,bd) = {
392392 let w = $Tuple2(y, z)
393393 let t = valueOrElse(getInteger(this, g), 0)
394- let bf = S(this, s(t))
394+ let be = S(this, s(t))
395395 let aY = S(this, f)
396- let bg = (bf + aY)
397- let bh = getInteger(this, m)
398- let bi = valueOrElse(getInteger(this, A(aJ.caller, t)), 0)
399- let bj = valueOrElse(getInteger(this, C(w, aJ.caller, t)), 0)
400- let bk = valueOrElse(getInteger(this, E(w, t)), 0)
401- let bl = valueOrElse(getInteger(this, I(t)), 0)
402- let bm = {
403- let R = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aJ.caller.bytes), bg], nil)
396+ let bf = (be + aY)
397+ let bg = getInteger(this, m)
398+ let bh = valueOrElse(getInteger(this, A(aJ.caller, t)), 0)
399+ let bi = valueOrElse(getInteger(this, C(w, aJ.caller, t)), 0)
400+ let bj = valueOrElse(getInteger(this, E(w, t)), 0)
401+ let bk = valueOrElse(getInteger(this, I(t)), 0)
402+ let bl = {
403+ let R = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aJ.caller.bytes), bf], nil)
404404 if ($isInstanceOf(R, "Int"))
405405 then R
406- else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aJ.caller.bytes), bg], nil)) + " couldn't be cast to Int"))
406+ else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aJ.caller.bytes), bf], nil)) + " couldn't be cast to Int"))
407407 }
408- let bn = (bm - bi)
409- let bo = (bj + be)
410- let bp = ai(w)
411- let ba = [if ((getBoolean(v(w)) != unit))
408+ let bm = (bl - bh)
409+ let bn = (bi + bd)
410+ let bo = ai(w)
411+ let aZ = [if ((getBoolean(v(w)) != unit))
412412 then true
413- else throw("invalid assets"), if ((bg > height))
413+ else throw("invalid assets"), if ((bf > height))
414414 then true
415- else throw("invalid height"), if ((bh == unit))
415+ else throw("invalid height"), if ((bg == unit))
416416 then true
417- else throw("finalization in progress"), if ((bm > 0))
417+ else throw("finalization in progress"), if ((bl > 0))
418418 then true
419- else throw("you do not have gWX"), if (if ((be > 0))
420- then (bn >= be)
419+ else throw("you do not have gWX"), if (if ((bd > 0))
420+ then (bm >= bd)
421421 else false)
422422 then true
423- else throw("invalid amount"), if (bp)
423+ else throw("invalid amount"), if (bo)
424424 then true
425425 else throw("pool hasn't WX_EMISSION label")]
426- if ((ba == ba))
426+ if ((aZ == aZ))
427427 then {
428- let bq = al(w)
429- let br = toString(aJ.caller)
430- let bs = if (au(bq, br))
428+ let bp = al(w)
429+ let bq = toString(aJ.caller)
430+ let br = if (au(bp, bq))
431431 then nil
432- else ay(bq, br)
433- $Tuple2(([IntegerEntry(A(aJ.caller, t), (bi + be)), IntegerEntry(C(w, aJ.caller, t), bo), IntegerEntry(E(w, t), (bk + be)), IntegerEntry(I(t), (bl + be))] ++ bs), unit)
432+ else ay(bp, bq)
433+ $Tuple2(([IntegerEntry(A(aJ.caller, t), (bh + bd)), IntegerEntry(C(w, aJ.caller, t), bn), IntegerEntry(E(w, t), (bj + bd)), IntegerEntry(I(t), (bk + bd))] ++ br), unit)
434434 }
435435 else throw("Strict value is not equal to itself.")
436436 }
441441 func cancelVote (y,z) = {
442442 let w = $Tuple2(y, z)
443443 let t = valueOrElse(getInteger(this, g), 0)
444- let bf = S(this, s(t))
444+ let be = S(this, s(t))
445445 let aY = S(this, f)
446- let bg = (bf + aY)
447- let bh = getInteger(this, m)
448- let bi = valueOrElse(getInteger(this, A(aJ.caller, t)), 0)
449- let bj = valueOrElse(getInteger(this, C(w, aJ.caller, t)), 0)
450- let bk = valueOrElse(getInteger(this, E(w, t)), 0)
451- let bl = valueOrElse(getInteger(this, I(t)), 0)
452- let ba = [if ((getBoolean(v(w)) != unit))
446+ let bf = (be + aY)
447+ let bg = getInteger(this, m)
448+ let bh = valueOrElse(getInteger(this, A(aJ.caller, t)), 0)
449+ let bi = valueOrElse(getInteger(this, C(w, aJ.caller, t)), 0)
450+ let bj = valueOrElse(getInteger(this, E(w, t)), 0)
451+ let bk = valueOrElse(getInteger(this, I(t)), 0)
452+ let aZ = [if ((getBoolean(v(w)) != unit))
453453 then true
454- else throw("invalid assets"), if ((bg > height))
454+ else throw("invalid assets"), if ((bf > height))
455455 then true
456- else throw("invalid height"), if ((bh == unit))
456+ else throw("invalid height"), if ((bg == unit))
457457 then true
458- else throw("finalization in progress"), if ((bj > 0))
458+ else throw("finalization in progress"), if ((bi > 0))
459459 then true
460460 else throw("no vote")]
461- if ((ba == ba))
461+ if ((aZ == aZ))
462462 then {
463- let bq = al(w)
464- let br = toString(aJ.caller)
465- $Tuple2(([IntegerEntry(A(aJ.caller, t), max([(bi - bj), 0])), DeleteEntry(C(w, aJ.caller, t)), IntegerEntry(E(w, t), (bk - bj)), IntegerEntry(I(t), (bl - bj))] ++ aB(bq, br)), unit)
463+ let bp = al(w)
464+ let bq = toString(aJ.caller)
465+ $Tuple2(([IntegerEntry(A(aJ.caller, t), max([(bh - bi), 0])), DeleteEntry(C(w, aJ.caller, t)), IntegerEntry(E(w, t), (bj - bi)), IntegerEntry(I(t), (bk - bi))] ++ aB(bp, bq)), unit)
466466 }
467467 else throw("Strict value is not equal to itself.")
468468 }
470470
471471
472472 @Callable(aJ)
473-func setEpochLength (bt) = {
474- let aZ = [aK(aJ), if ((bt > 0))
473+func setEpochLength (bs) = {
474+ let aZ = [aK(aJ), if ((bs > 0))
475475 then true
476476 else throw("invalid epoch length")]
477477 if ((aZ == aZ))
478- then $Tuple2([IntegerEntry(f, bt)], unit)
478+ then $Tuple2([IntegerEntry(f, bs)], unit)
479479 else throw("Strict value is not equal to itself.")
480480 }
481481
482482
483483
484484 @Callable(aJ)
485-func setMaxDepth (bu) = {
486- let aZ = [aK(aJ), if ((bu > 0))
485+func setMaxDepth (bt) = {
486+ let aZ = [aK(aJ), if ((bt > 0))
487487 then true
488488 else throw("invalid max depth")]
489489 if ((aZ == aZ))
490- then $Tuple2([IntegerEntry(h, bu)], unit)
490+ then $Tuple2([IntegerEntry(h, bt)], unit)
491491 else throw("Strict value is not equal to itself.")
492492 }
493493
494494
495495
496496 @Callable(aJ)
497-func processVoteINTERNAL (bv,br) = {
497+func processVoteINTERNAL (bu,bq) = {
498498 let aN = aI(aJ)
499499 if ((aN == aN))
500500 then {
501- let aS = valueOrErrorMessage(addressFromString(br), ("processVoteINTERNAL: invalid user address " + br))
501+ let aS = valueOrErrorMessage(addressFromString(bq), ("processVoteINTERNAL: invalid user address " + bq))
502502 let t = S(this, g)
503- let bw = (t - 1)
503+ let bv = (t - 1)
504504 let aY = S(this, f)
505- let bf = S(this, s(t))
506- let bg = (bf + aY)
507- let bx = S(this, s(bw))
508- let by = (bx + aY)
509- let bz = if ((bw >= 0))
505+ let be = S(this, s(t))
506+ let bf = (be + aY)
507+ let bw = S(this, s(bv))
508+ let bx = (bw + aY)
509+ let by = if ((bv >= 0))
510510 then true
511511 else throw("processVoteINTERNAL: invalid previous epoch")
512- if ((bz == bz))
512+ if ((by == by))
513513 then {
514- let w = U(bv)
515- let bA = w
516- let y = bA._1
517- let z = bA._2
518- let bp = ai(w)
519- let bm = {
520- let R = invoke(this, "getUserGwxAmountAtHeight", [br, bg], nil)
514+ let w = U(bu)
515+ let bz = w
516+ let y = bz._1
517+ let z = bz._2
518+ let bo = ai(w)
519+ let bl = {
520+ let R = invoke(this, "getUserGwxAmountAtHeight", [bq, bf], nil)
521521 if ($isInstanceOf(R, "Int"))
522522 then R
523- else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [br, bg], nil)) + " couldn't be cast to Int"))
523+ else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [bq, bf], nil)) + " couldn't be cast to Int"))
524524 }
525- let bB = {
526- let R = invoke(this, "getUserGwxAmountAtHeight", [br, by], nil)
525+ let bA = {
526+ let R = invoke(this, "getUserGwxAmountAtHeight", [bq, bx], nil)
527527 if ($isInstanceOf(R, "Int"))
528528 then R
529- else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [br, by], nil)) + " couldn't be cast to Int"))
529+ else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [bq, bx], nil)) + " couldn't be cast to Int"))
530530 }
531- let bl = valueOrElse(getInteger(I(t)), 0)
532- let bC = valueOrElse(getInteger(E(w, t)), 0)
533- let bD = valueOrErrorMessage(getInteger(C(w, aS, bw)), (((("processVoteINTERNAL " + bv) + " ") + br) + ": no previous vote"))
534- let bi = valueOrElse(getInteger(this, A(aS, t)), 0)
535- let bo = fraction(bD, bm, bB)
536- let bE = if (if ((bo > 0))
537- then bp
531+ let bk = valueOrElse(getInteger(I(t)), 0)
532+ let bB = valueOrElse(getInteger(E(w, t)), 0)
533+ let bC = valueOrErrorMessage(getInteger(C(w, aS, bv)), (((("processVoteINTERNAL " + bu) + " ") + bq) + ": no previous vote"))
534+ let bh = valueOrElse(getInteger(this, A(aS, t)), 0)
535+ let bn = fraction(bC, bl, bA)
536+ let bD = if (if ((bn > 0))
537+ then bo
538538 else false)
539- then [IntegerEntry(C(w, aS, t), bo), IntegerEntry(I(t), (bl + bo)), IntegerEntry(E(w, t), (bC + bo)), IntegerEntry(A(aS, t), (bi + bo))]
540- else aB(al(w), br)
541- $Tuple2(bE, unit)
539+ then [IntegerEntry(C(w, aS, t), bn), IntegerEntry(I(t), (bk + bn)), IntegerEntry(E(w, t), (bB + bn)), IntegerEntry(A(aS, t), (bh + bn))]
540+ else aB(al(w), bq)
541+ $Tuple2(bD, unit)
542542 }
543543 else throw("Strict value is not equal to itself.")
544544 }
548548
549549
550550 @Callable(aJ)
551-func processPoolINTERNAL (bv) = {
551+func processPoolINTERNAL (bu) = {
552552 let aN = aI(aJ)
553553 if ((aN == aN))
554554 then {
555- let bF = (S(this, g) - 1)
556- let bz = if ((bF >= 0))
555+ let bE = (S(this, g) - 1)
556+ let by = if ((bE >= 0))
557557 then true
558558 else throw("processPoolINTERNAL: invalid target epoch")
559- if ((bz == bz))
559+ if ((by == by))
560560 then {
561- let w = U(bv)
562- let bG = w
563- let y = bG._1
564- let z = bG._2
561+ let w = U(bu)
562+ let bF = w
563+ let y = bF._1
564+ let z = bF._2
565565 let aX = addressFromStringValue(Q(this, l))
566566 let ae = addressFromStringValue(Q(this, j))
567567 let ah = W(y, z)
568- let bH = {
568+ let bG = {
569569 let R = invoke(aX, "usersListTraversal", [ah], nil)
570570 if ($isInstanceOf(R, "Boolean"))
571571 then R
572572 else throw(($getType(invoke(aX, "usersListTraversal", [ah], nil)) + " couldn't be cast to Boolean"))
573573 }
574- if ((bH == bH))
575- then if (bH)
574+ if ((bG == bG))
575+ then if (bG)
576576 then $Tuple2(nil, true)
577577 else {
578- let bp = ai(w)
579- let bl = valueOrElse(getInteger(this, I(bF)), 0)
580- let bC = valueOrElse(getInteger(this, E(w, bF)), 0)
581- let bI = if (if ((bl == 0))
578+ let bo = ai(w)
579+ let bk = valueOrElse(getInteger(this, I(bE)), 0)
580+ let bB = valueOrElse(getInteger(this, E(w, bE)), 0)
581+ let bH = if (if ((bk == 0))
582582 then true
583- else !(bp))
583+ else !(bo))
584584 then 0
585- else fraction(bC, b, bl)
586- let bJ = invoke(ae, "modifyWeight", [ah, bI], nil)
587- if ((bJ == bJ))
585+ else fraction(bB, b, bk)
586+ let bI = invoke(ae, "modifyWeight", [ah, bH], nil)
587+ if ((bI == bI))
588588 then {
589- let bK = if (bp)
589+ let bJ = if (bo)
590590 then nil
591- else ([DeleteEntry(v(w))] ++ aB(ak, bv))
592- $Tuple2(([IntegerEntry(G(w, bF), bI)] ++ bK), false)
591+ else ([DeleteEntry(v(w))] ++ aB(ak, bu))
592+ $Tuple2(([IntegerEntry(G(w, bE), bH)] ++ bJ), false)
593593 }
594594 else throw("Strict value is not equal to itself.")
595595 }
605605 @Callable(aJ)
606606 func finalizeHelper () = {
607607 let t = valueOrElse(getInteger(this, g), 0)
608- let bL = (t - 1)
609- let bf = S(this, s(t))
608+ let bK = (t - 1)
609+ let be = S(this, s(t))
610610 let aY = S(this, f)
611- let bg = (bf + aY)
612- let bh = getInteger(this, m)
613- if (if ((height >= bg))
614- then (bh == unit)
611+ let bf = (be + aY)
612+ let bg = getInteger(this, m)
613+ if (if ((height >= bf))
614+ then (bg == unit)
615615 else false)
616616 then {
617- let bM = (t + 1)
618- $Tuple2([IntegerEntry(s(bM), height), IntegerEntry(p, height), IntegerEntry(g, bM), IntegerEntry(m, d)], true)
617+ let bL = (t + 1)
618+ $Tuple2([IntegerEntry(s(bL), height), IntegerEntry(p, height), IntegerEntry(g, bL), IntegerEntry(m, d)], true)
619619 }
620- else if ((bh == unit))
620+ else if ((bg == unit))
621621 then $Tuple2(nil, false)
622- else if ((bh == d))
622+ else if ((bg == d))
623623 then {
624- let bN = getString(n)
625- let bO = getString(o)
626- let N = bN
624+ let bM = getString(n)
625+ let bN = getString(o)
626+ let N = bM
627627 if ($isInstanceOf(N, "Unit"))
628628 then {
629- let bP = getString(an(ak))
630- if ($isInstanceOf(bP, "Unit"))
629+ let bO = getString(an(ak))
630+ if ($isInstanceOf(bO, "Unit"))
631631 then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
632- else if ($isInstanceOf(bP, "String"))
632+ else if ($isInstanceOf(bO, "String"))
633633 then {
634- let bQ = bP
635- $Tuple2([StringEntry(n, bQ)], true)
634+ let bP = bO
635+ $Tuple2([StringEntry(n, bP)], true)
636636 }
637637 else throw("Match error")
638638 }
639639 else if ($isInstanceOf(N, "String"))
640640 then {
641- let bv = N
642- let w = U(bv)
643- let bR = {
644- let bP = bO
645- if ($isInstanceOf(bP, "Unit"))
641+ let bu = N
642+ let w = U(bu)
643+ let bQ = {
644+ let bO = bN
645+ if ($isInstanceOf(bO, "Unit"))
646646 then getString(an(al(w)))
647- else if ($isInstanceOf(bP, "String"))
647+ else if ($isInstanceOf(bO, "String"))
648648 then {
649- let bS = bP
650- let bT = invoke(this, "processVoteINTERNAL", [bv, bS], nil)
651- if ((bT == bT))
652- then getString(at(al(w), bS))
649+ let bR = bO
650+ let bS = invoke(this, "processVoteINTERNAL", [bu, bR], nil)
651+ if ((bS == bS))
652+ then getString(at(al(w), bR))
653653 else throw("Strict value is not equal to itself.")
654654 }
655655 else throw("Match error")
656656 }
657- let bP = bR
658- if ($isInstanceOf(bP, "Unit"))
657+ let bO = bQ
658+ if ($isInstanceOf(bO, "Unit"))
659659 then {
660- let bU = getString(at(ak, bv))
661- let bV = bU
662- if ($isInstanceOf(bV, "Unit"))
660+ let bT = getString(at(ak, bu))
661+ let bU = bT
662+ if ($isInstanceOf(bU, "Unit"))
663663 then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
664- else if ($isInstanceOf(bV, "String"))
664+ else if ($isInstanceOf(bU, "String"))
665665 then {
666- let aF = bV
666+ let aF = bU
667667 $Tuple2([StringEntry(n, aF), DeleteEntry(o)], true)
668668 }
669669 else throw("Match error")
670670 }
671- else if ($isInstanceOf(bP, "String"))
671+ else if ($isInstanceOf(bO, "String"))
672672 then {
673- let bW = bP
674- $Tuple2([StringEntry(o, bW)], true)
673+ let bV = bO
674+ $Tuple2([StringEntry(o, bV)], true)
675675 }
676676 else throw("Match error")
677677 }
678678 else throw("Match error")
679679 }
680- else if ((bh == e))
680+ else if ((bg == e))
681681 then {
682- let bN = getString(n)
683- let N = bN
682+ let bM = getString(n)
683+ let N = bM
684684 if ($isInstanceOf(N, "Unit"))
685685 then {
686- let bP = getString(an(ak))
687- if ($isInstanceOf(bP, "Unit"))
688- then $Tuple2([DeleteEntry(m), BooleanEntry(u(bL), true), IntegerEntry(q, t), IntegerEntry(r, bf)], true)
689- else if ($isInstanceOf(bP, "String"))
686+ let bO = getString(an(ak))
687+ if ($isInstanceOf(bO, "Unit"))
688+ then $Tuple2([DeleteEntry(m), BooleanEntry(u(bK), true), IntegerEntry(q, t), IntegerEntry(r, be)], true)
689+ else if ($isInstanceOf(bO, "String"))
690690 then {
691- let bX = bP
692- $Tuple2([StringEntry(n, bX)], true)
691+ let bW = bO
692+ $Tuple2([StringEntry(n, bW)], true)
693693 }
694694 else throw("Match error")
695695 }
696696 else if ($isInstanceOf(N, "String"))
697697 then {
698- let bv = N
699- let bH = {
700- let R = invoke(this, "processPoolINTERNAL", [bv], nil)
698+ let bu = N
699+ let bG = {
700+ let R = invoke(this, "processPoolINTERNAL", [bu], nil)
701701 if ($isInstanceOf(R, "Boolean"))
702702 then R
703- else throw(($getType(invoke(this, "processPoolINTERNAL", [bv], nil)) + " couldn't be cast to Boolean"))
703+ else throw(($getType(invoke(this, "processPoolINTERNAL", [bu], nil)) + " couldn't be cast to Boolean"))
704704 }
705- if ((bH == bH))
706- then if (bH)
705+ if ((bG == bG))
706+ then if (bG)
707707 then $Tuple2(nil, true)
708708 else {
709- let bU = getString(at(ak, bv))
710- let bP = bU
711- if ($isInstanceOf(bP, "Unit"))
712- then $Tuple2([DeleteEntry(m), BooleanEntry(u(bL), true), IntegerEntry(q, t), IntegerEntry(r, bf), DeleteEntry(n)], true)
713- else if ($isInstanceOf(bP, "String"))
709+ let bT = getString(at(ak, bu))
710+ let bO = bT
711+ if ($isInstanceOf(bO, "Unit"))
712+ then $Tuple2([DeleteEntry(m), BooleanEntry(u(bK), true), IntegerEntry(q, t), IntegerEntry(r, be), DeleteEntry(n)], true)
713+ else if ($isInstanceOf(bO, "String"))
714714 then {
715- let bX = bP
716- $Tuple2([StringEntry(n, bX)], true)
715+ let bW = bO
716+ $Tuple2([StringEntry(n, bW)], true)
717717 }
718718 else throw("Match error")
719719 }
727727
728728
729729 @Callable(aJ)
730-func finalizeWrapper (bY) = {
731- let bZ = {
730+func finalizeWrapper (bX) = {
731+ let bY = {
732732 let R = invoke(this, "finalizeHelper", nil, nil)
733733 if ($isInstanceOf(R, "Boolean"))
734734 then R
735735 else throw(($getType(invoke(this, "finalizeHelper", nil, nil)) + " couldn't be cast to Boolean"))
736736 }
737- if ((bZ == bZ))
738- then if (!(bZ))
739- then if ((bY == 0))
737+ if ((bY == bY))
738+ then if (!(bY))
739+ then if ((bX == 0))
740740 then throw("Current voting is not over yet")
741741 else $Tuple2(nil, unit)
742742 else {
743- let ca = valueOrElse(getInteger(this, h), c)
744- if ((ca > bY))
743+ let bZ = valueOrElse(getInteger(this, h), c)
744+ if ((bZ > bX))
745745 then {
746- let cb = invoke(this, "finalizeWrapper", [(bY + 1)], nil)
747- if ((cb == cb))
746+ let ca = invoke(this, "finalizeWrapper", [(bX + 1)], nil)
747+ if ((ca == ca))
748748 then $Tuple2(nil, unit)
749749 else throw("Strict value is not equal to itself.")
750750 }
757757
758758 @Callable(aJ)
759759 func finalize () = {
760- let cb = invoke(this, "finalizeWrapper", [0], nil)
761- if ((cb == cb))
760+ let ca = invoke(this, "finalizeWrapper", [0], nil)
761+ if ((ca == ca))
762762 then $Tuple2(nil, unit)
763763 else throw("Strict value is not equal to itself.")
764764 }
789789 }
790790
791791
792-@Verifier(cc)
793-func cd () = {
794- let ce = {
792+@Verifier(cb)
793+func cc () = {
794+ let cd = {
795795 let N = aE()
796796 if ($isInstanceOf(N, "ByteVector"))
797797 then {
799799 aL
800800 }
801801 else if ($isInstanceOf(N, "Unit"))
802- then cc.senderPublicKey
802+ then cb.senderPublicKey
803803 else throw("Match error")
804804 }
805- sigVerify(cc.bodyBytes, cc.proofs[0], ce)
805+ sigVerify(cb.bodyBytes, cb.proofs[0], cd)
806806 }
807807
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
2828 let m = makeString(["%s", "finalizationStage"], a)
2929
3030 let n = makeString(["%s", "nextPool"], a)
3131
3232 let o = makeString(["%s", "nextUser"], a)
3333
3434 let p = makeString(["%s", "startHeight"], a)
3535
3636 let q = makeString(["%s", "currentEpochUi"], a)
3737
3838 let r = makeString(["%s", "startHeightUi"], a)
3939
4040 func s (t) = makeString(["%s%d", "startHeight", toString(t)], a)
4141
4242
4343 func u (t) = makeString(["%s%d", "finalized", toString(t)], a)
4444
4545
4646 func v (w) = {
4747 let x = w
4848 let y = x._1
4949 let z = x._2
5050 makeString(["%s%s%s", "inList", y, z], a)
5151 }
5252
5353
5454 func A (B,t) = makeString(["%s%s%d", "used", toString(B), toString(t)], a)
5555
5656
5757 func C (w,B,t) = {
5858 let D = w
5959 let y = D._1
6060 let z = D._2
6161 makeString(["%s%s%s%s%d", "vote", y, z, toString(B), toString(t)], a)
6262 }
6363
6464
6565 func E (w,t) = {
6666 let F = w
6767 let y = F._1
6868 let z = F._2
6969 makeString(["%s%s%s%d", "votingResult", y, z, toString(t)], a)
7070 }
7171
7272
7373 func G (w,t) = {
7474 let H = w
7575 let y = H._1
7676 let z = H._2
7777 makeString(["%s%s%s%d", "poolShare", y, z, toString(t)], a)
7878 }
7979
8080
8181 func I (t) = makeString(["%s%d", "totalVotes", toString(t)], a)
8282
8383
8484 func J (B,K,L) = {
8585 let M = makeString(["mandatory ", toString(B), ".", K, " is not defined"], "")
8686 valueOrErrorMessage({
8787 let N = L
8888 if ($isInstanceOf(N, "String"))
8989 then {
9090 let O = N
9191 getString(B, K)
9292 }
9393 else if ($isInstanceOf(N, "Int"))
9494 then {
9595 let P = N
9696 getInteger(B, K)
9797 }
9898 else throw("invalid entry type")
9999 }, M)
100100 }
101101
102102
103103 func Q (B,K) = {
104104 let R = J(B, K, "")
105105 if ($isInstanceOf(R, "String"))
106106 then R
107107 else throw(($getType(J(B, K, "")) + " couldn't be cast to String"))
108108 }
109109
110110
111111 func S (B,K) = {
112112 let R = J(B, K, 0)
113113 if ($isInstanceOf(R, "Int"))
114114 then R
115115 else throw(($getType(J(B, K, 0)) + " couldn't be cast to Int"))
116116 }
117117
118118
119119 func T (w) = ((w._1 + a) + w._2)
120120
121121
122122 func U (O) = {
123123 let V = split(O, a)
124124 if ((size(V) == 2))
125125 then $Tuple2(V[0], V[1])
126126 else throw("invalid pool string")
127127 }
128128
129129
130130 func W (y,z) = {
131131 func X (Y) = ("%s%s%s__mappings__baseAsset2internalId__" + Y)
132132
133133 func Z (aa,ab) = (((("%d%d%s%s__" + toString(aa)) + "__") + toString(ab)) + "__mappings__poolAssets2PoolContract")
134134
135135 func ac (ad) = (("%s%s%s__" + ad) + "__mappings__poolContract2LpAsset")
136136
137137 let ae = addressFromStringValue(Q(this, j))
138138 let af = S(ae, X(y))
139139 let ag = S(ae, X(z))
140140 let ad = Q(ae, Z(af, ag))
141141 let ah = Q(ae, ac(ad))
142142 ah
143143 }
144144
145145
146146 func ai (w) = {
147147 let aj = w
148148 let y = aj._1
149149 let z = aj._2
150150 let ae = addressFromStringValue(Q(this, j))
151151 let R = invoke(ae, "checkWxEmissionPoolLabel", [y, z], nil)
152152 if ($isInstanceOf(R, "Boolean"))
153153 then R
154154 else throw(($getType(invoke(ae, "checkWxEmissionPoolLabel", [y, z], nil)) + " couldn't be cast to Boolean"))
155155 }
156156
157157
158158 let ak = "pools"
159159
160160 func al (w) = {
161161 let am = w
162162 let y = am._1
163163 let z = am._2
164164 makeString(["votes", y, z], a)
165165 }
166166
167167
168168 func an (ao) = {
169169 let ap = if ((ao == ak))
170170 then "%s%s"
171171 else "%s%s%s%s"
172172 makeString([ap, ao, "head"], a)
173173 }
174174
175175
176176 func aq (ao) = {
177177 let ap = if ((ao == ak))
178178 then "%s%s"
179179 else "%s%s%s%s"
180180 makeString([ap, ao, "size"], a)
181181 }
182182
183183
184184 func ar (ao,as) = {
185185 let ap = if ((ao == ak))
186186 then "%s%s%s%s"
187187 else "%s%s%s%s%s"
188188 makeString([ap, ao, as, "prev"], a)
189189 }
190190
191191
192192 func at (ao,as) = {
193193 let ap = if ((ao == ak))
194194 then "%s%s%s%s"
195195 else "%s%s%s%s%s"
196196 makeString([ap, ao, as, "next"], a)
197197 }
198198
199199
200200 func au (ao,as) = {
201201 let av = getString(this, an(ao))
202202 let aw = getString(this, ar(ao, as))
203203 let ax = getString(this, at(ao, as))
204204 if (if ((as == valueOrElse(av, "")))
205205 then true
206206 else (aw != unit))
207207 then true
208208 else (ax != unit)
209209 }
210210
211211
212212 func ay (ao,as) = {
213213 let av = getString(this, an(ao))
214214 let az = valueOrElse(getInteger(this, aq(ao)), 0)
215215 let aA = if (!(au(ao, as)))
216216 then true
217217 else throw("Node exists")
218218 if ((aA == aA))
219219 then (([IntegerEntry(aq(ao), (az + 1))] ++ (if ((av != unit))
220220 then [StringEntry(at(ao, as), value(av)), StringEntry(ar(ao, value(av)), as)]
221221 else nil)) ++ [StringEntry(an(ao), as)])
222222 else throw("Strict value is not equal to itself.")
223223 }
224224
225225
226226 func aB (ao,as) = {
227227 let av = getString(this, an(ao))
228228 let az = valueOrElse(getInteger(this, aq(ao)), 0)
229229 let aw = getString(this, ar(ao, as))
230230 let ax = getString(this, at(ao, as))
231231 ([IntegerEntry(aq(ao), (az - 1))] ++ (if (if ((aw != unit))
232232 then (ax != unit)
233233 else false)
234234 then [StringEntry(at(ao, value(aw)), value(ax)), StringEntry(ar(ao, value(ax)), value(aw)), DeleteEntry(ar(ao, as)), DeleteEntry(at(ao, as))]
235235 else if ((ax != unit))
236236 then [StringEntry(an(ao), value(ax)), DeleteEntry(at(ao, as)), DeleteEntry(ar(ao, value(ax)))]
237237 else if ((aw != unit))
238238 then [DeleteEntry(ar(ao, as)), DeleteEntry(at(ao, value(aw)))]
239239 else if ((as == valueOrElse(av, "")))
240240 then [DeleteEntry(an(ao))]
241241 else throw(((("invalid node: " + ao) + ".") + as))))
242242 }
243243
244244
245245 func aC () = "%s__managerPublicKey"
246246
247247
248248 func aD () = "%s__pendingManagerPublicKey"
249249
250250
251251 func aE () = {
252252 let N = getString(aC())
253253 if ($isInstanceOf(N, "String"))
254254 then {
255255 let aF = N
256256 fromBase58String(aF)
257257 }
258258 else if ($isInstanceOf(N, "Unit"))
259259 then unit
260260 else throw("Match error")
261261 }
262262
263263
264264 func aG () = {
265265 let N = getString(aD())
266266 if ($isInstanceOf(N, "String"))
267267 then {
268268 let aF = N
269269 fromBase58String(aF)
270270 }
271271 else if ($isInstanceOf(N, "Unit"))
272272 then unit
273273 else throw("Match error")
274274 }
275275
276276
277277 let aH = throw("Permission denied")
278278
279279 func aI (aJ) = if ((aJ.caller == this))
280280 then true
281281 else aH
282282
283283
284284 func aK (aJ) = {
285285 let N = aE()
286286 if ($isInstanceOf(N, "ByteVector"))
287287 then {
288288 let aL = N
289289 if ((aJ.callerPublicKey == aL))
290290 then true
291291 else aH
292292 }
293293 else if ($isInstanceOf(N, "Unit"))
294294 then aI(aJ)
295295 else throw("Match error")
296296 }
297297
298298
299299 @Callable(aJ)
300300 func setManager (aM) = {
301301 let aN = aK(aJ)
302302 if ((aN == aN))
303303 then {
304304 let aO = fromBase58String(aM)
305305 if ((aO == aO))
306306 then [StringEntry(aD(), aM)]
307307 else throw("Strict value is not equal to itself.")
308308 }
309309 else throw("Strict value is not equal to itself.")
310310 }
311311
312312
313313
314314 @Callable(aJ)
315315 func confirmManager () = {
316316 let aP = aG()
317317 let aQ = if (isDefined(aP))
318318 then true
319319 else throw("No pending manager")
320320 if ((aQ == aQ))
321321 then {
322322 let aR = if ((aJ.callerPublicKey == value(aP)))
323323 then true
324324 else throw("You are not pending manager")
325325 if ((aR == aR))
326326 then [StringEntry(aC(), toBase58String(value(aP))), DeleteEntry(aD())]
327327 else throw("Strict value is not equal to itself.")
328328 }
329329 else throw("Strict value is not equal to itself.")
330330 }
331331
332332
333333
334334 @Callable(aJ)
335335 func getUserGwxAmountAtHeight (aS,aT) = {
336336 let aU = valueOrErrorMessage(addressFromString(Q(this, k)), "invalid boosting contract address")
337337 $Tuple2(nil, {
338338 let R = invoke(aU, "getUserGwxAmountAtHeightREADONLY", [aS, aT], nil)
339339 if ($isInstanceOf(R, "Int"))
340340 then R
341341 else throw(($getType(invoke(aU, "getUserGwxAmountAtHeightREADONLY", [aS, aT], nil)) + " couldn't be cast to Int"))
342342 })
343343 }
344344
345345
346346
347347 @Callable(aJ)
348348 func constructor (ae,aV,aW,aX,aY) = {
349349 let aZ = [aK(aJ), if ((addressFromString(ae) != unit))
350350 then true
351351 else "invalid factory contract address", if ((addressFromString(aV) != unit))
352352 then true
353353 else "invalid voting emission candidate contract address", if ((addressFromString(aW) != unit))
354354 then true
355355 else "invalid boosting contract address", if ((addressFromString(aX) != unit))
356356 then true
357357 else "invalid staking contract address", if ((aY > 0))
358358 then true
359359 else throw("invalid epoch length")]
360360 if ((aZ == aZ))
361361 then $Tuple2([StringEntry(j, ae), StringEntry(i, aV), StringEntry(k, aW), StringEntry(l, aX), IntegerEntry(f, aY)], unit)
362362 else throw("Strict value is not equal to itself.")
363363 }
364364
365365
366366
367367 @Callable(aJ)
368368 func create (y,z) = {
369- let ba = [if ((toBase58String(aJ.caller.bytes) == valueOrElse(getString(this, i), "")))
369+ let aZ = [if ((toBase58String(aJ.caller.bytes) == valueOrElse(getString(this, i), "")))
370370 then true
371371 else aK(aJ)]
372- if ((ba == ba))
372+ if ((aZ == aZ))
373373 then {
374374 let w = $Tuple2(y, z)
375- let bb = ([BooleanEntry(v(w), true)] ++ ay(ak, T(w)))
376- let bc = (getInteger(this, g) == unit)
377- let bd = if (bc)
375+ let ba = ([BooleanEntry(v(w), true)] ++ ay(ak, T(w)))
376+ let bb = (getInteger(this, g) == unit)
377+ let bc = if (bb)
378378 then {
379379 let t = 0
380380 [IntegerEntry(g, t), IntegerEntry(s(t), height), IntegerEntry(p, height), IntegerEntry(q, t), IntegerEntry(r, height)]
381381 }
382382 else nil
383- $Tuple2((bb ++ bd), unit)
383+ $Tuple2((ba ++ bc), unit)
384384 }
385385 else throw("Strict value is not equal to itself.")
386386 }
387387
388388
389389
390390 @Callable(aJ)
391-func vote (y,z,be) = {
391+func vote (y,z,bd) = {
392392 let w = $Tuple2(y, z)
393393 let t = valueOrElse(getInteger(this, g), 0)
394- let bf = S(this, s(t))
394+ let be = S(this, s(t))
395395 let aY = S(this, f)
396- let bg = (bf + aY)
397- let bh = getInteger(this, m)
398- let bi = valueOrElse(getInteger(this, A(aJ.caller, t)), 0)
399- let bj = valueOrElse(getInteger(this, C(w, aJ.caller, t)), 0)
400- let bk = valueOrElse(getInteger(this, E(w, t)), 0)
401- let bl = valueOrElse(getInteger(this, I(t)), 0)
402- let bm = {
403- let R = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aJ.caller.bytes), bg], nil)
396+ let bf = (be + aY)
397+ let bg = getInteger(this, m)
398+ let bh = valueOrElse(getInteger(this, A(aJ.caller, t)), 0)
399+ let bi = valueOrElse(getInteger(this, C(w, aJ.caller, t)), 0)
400+ let bj = valueOrElse(getInteger(this, E(w, t)), 0)
401+ let bk = valueOrElse(getInteger(this, I(t)), 0)
402+ let bl = {
403+ let R = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aJ.caller.bytes), bf], nil)
404404 if ($isInstanceOf(R, "Int"))
405405 then R
406- else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aJ.caller.bytes), bg], nil)) + " couldn't be cast to Int"))
406+ else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aJ.caller.bytes), bf], nil)) + " couldn't be cast to Int"))
407407 }
408- let bn = (bm - bi)
409- let bo = (bj + be)
410- let bp = ai(w)
411- let ba = [if ((getBoolean(v(w)) != unit))
408+ let bm = (bl - bh)
409+ let bn = (bi + bd)
410+ let bo = ai(w)
411+ let aZ = [if ((getBoolean(v(w)) != unit))
412412 then true
413- else throw("invalid assets"), if ((bg > height))
413+ else throw("invalid assets"), if ((bf > height))
414414 then true
415- else throw("invalid height"), if ((bh == unit))
415+ else throw("invalid height"), if ((bg == unit))
416416 then true
417- else throw("finalization in progress"), if ((bm > 0))
417+ else throw("finalization in progress"), if ((bl > 0))
418418 then true
419- else throw("you do not have gWX"), if (if ((be > 0))
420- then (bn >= be)
419+ else throw("you do not have gWX"), if (if ((bd > 0))
420+ then (bm >= bd)
421421 else false)
422422 then true
423- else throw("invalid amount"), if (bp)
423+ else throw("invalid amount"), if (bo)
424424 then true
425425 else throw("pool hasn't WX_EMISSION label")]
426- if ((ba == ba))
426+ if ((aZ == aZ))
427427 then {
428- let bq = al(w)
429- let br = toString(aJ.caller)
430- let bs = if (au(bq, br))
428+ let bp = al(w)
429+ let bq = toString(aJ.caller)
430+ let br = if (au(bp, bq))
431431 then nil
432- else ay(bq, br)
433- $Tuple2(([IntegerEntry(A(aJ.caller, t), (bi + be)), IntegerEntry(C(w, aJ.caller, t), bo), IntegerEntry(E(w, t), (bk + be)), IntegerEntry(I(t), (bl + be))] ++ bs), unit)
432+ else ay(bp, bq)
433+ $Tuple2(([IntegerEntry(A(aJ.caller, t), (bh + bd)), IntegerEntry(C(w, aJ.caller, t), bn), IntegerEntry(E(w, t), (bj + bd)), IntegerEntry(I(t), (bk + bd))] ++ br), unit)
434434 }
435435 else throw("Strict value is not equal to itself.")
436436 }
437437
438438
439439
440440 @Callable(aJ)
441441 func cancelVote (y,z) = {
442442 let w = $Tuple2(y, z)
443443 let t = valueOrElse(getInteger(this, g), 0)
444- let bf = S(this, s(t))
444+ let be = S(this, s(t))
445445 let aY = S(this, f)
446- let bg = (bf + aY)
447- let bh = getInteger(this, m)
448- let bi = valueOrElse(getInteger(this, A(aJ.caller, t)), 0)
449- let bj = valueOrElse(getInteger(this, C(w, aJ.caller, t)), 0)
450- let bk = valueOrElse(getInteger(this, E(w, t)), 0)
451- let bl = valueOrElse(getInteger(this, I(t)), 0)
452- let ba = [if ((getBoolean(v(w)) != unit))
446+ let bf = (be + aY)
447+ let bg = getInteger(this, m)
448+ let bh = valueOrElse(getInteger(this, A(aJ.caller, t)), 0)
449+ let bi = valueOrElse(getInteger(this, C(w, aJ.caller, t)), 0)
450+ let bj = valueOrElse(getInteger(this, E(w, t)), 0)
451+ let bk = valueOrElse(getInteger(this, I(t)), 0)
452+ let aZ = [if ((getBoolean(v(w)) != unit))
453453 then true
454- else throw("invalid assets"), if ((bg > height))
454+ else throw("invalid assets"), if ((bf > height))
455455 then true
456- else throw("invalid height"), if ((bh == unit))
456+ else throw("invalid height"), if ((bg == unit))
457457 then true
458- else throw("finalization in progress"), if ((bj > 0))
458+ else throw("finalization in progress"), if ((bi > 0))
459459 then true
460460 else throw("no vote")]
461- if ((ba == ba))
461+ if ((aZ == aZ))
462462 then {
463- let bq = al(w)
464- let br = toString(aJ.caller)
465- $Tuple2(([IntegerEntry(A(aJ.caller, t), max([(bi - bj), 0])), DeleteEntry(C(w, aJ.caller, t)), IntegerEntry(E(w, t), (bk - bj)), IntegerEntry(I(t), (bl - bj))] ++ aB(bq, br)), unit)
463+ let bp = al(w)
464+ let bq = toString(aJ.caller)
465+ $Tuple2(([IntegerEntry(A(aJ.caller, t), max([(bh - bi), 0])), DeleteEntry(C(w, aJ.caller, t)), IntegerEntry(E(w, t), (bj - bi)), IntegerEntry(I(t), (bk - bi))] ++ aB(bp, bq)), unit)
466466 }
467467 else throw("Strict value is not equal to itself.")
468468 }
469469
470470
471471
472472 @Callable(aJ)
473-func setEpochLength (bt) = {
474- let aZ = [aK(aJ), if ((bt > 0))
473+func setEpochLength (bs) = {
474+ let aZ = [aK(aJ), if ((bs > 0))
475475 then true
476476 else throw("invalid epoch length")]
477477 if ((aZ == aZ))
478- then $Tuple2([IntegerEntry(f, bt)], unit)
478+ then $Tuple2([IntegerEntry(f, bs)], unit)
479479 else throw("Strict value is not equal to itself.")
480480 }
481481
482482
483483
484484 @Callable(aJ)
485-func setMaxDepth (bu) = {
486- let aZ = [aK(aJ), if ((bu > 0))
485+func setMaxDepth (bt) = {
486+ let aZ = [aK(aJ), if ((bt > 0))
487487 then true
488488 else throw("invalid max depth")]
489489 if ((aZ == aZ))
490- then $Tuple2([IntegerEntry(h, bu)], unit)
490+ then $Tuple2([IntegerEntry(h, bt)], unit)
491491 else throw("Strict value is not equal to itself.")
492492 }
493493
494494
495495
496496 @Callable(aJ)
497-func processVoteINTERNAL (bv,br) = {
497+func processVoteINTERNAL (bu,bq) = {
498498 let aN = aI(aJ)
499499 if ((aN == aN))
500500 then {
501- let aS = valueOrErrorMessage(addressFromString(br), ("processVoteINTERNAL: invalid user address " + br))
501+ let aS = valueOrErrorMessage(addressFromString(bq), ("processVoteINTERNAL: invalid user address " + bq))
502502 let t = S(this, g)
503- let bw = (t - 1)
503+ let bv = (t - 1)
504504 let aY = S(this, f)
505- let bf = S(this, s(t))
506- let bg = (bf + aY)
507- let bx = S(this, s(bw))
508- let by = (bx + aY)
509- let bz = if ((bw >= 0))
505+ let be = S(this, s(t))
506+ let bf = (be + aY)
507+ let bw = S(this, s(bv))
508+ let bx = (bw + aY)
509+ let by = if ((bv >= 0))
510510 then true
511511 else throw("processVoteINTERNAL: invalid previous epoch")
512- if ((bz == bz))
512+ if ((by == by))
513513 then {
514- let w = U(bv)
515- let bA = w
516- let y = bA._1
517- let z = bA._2
518- let bp = ai(w)
519- let bm = {
520- let R = invoke(this, "getUserGwxAmountAtHeight", [br, bg], nil)
514+ let w = U(bu)
515+ let bz = w
516+ let y = bz._1
517+ let z = bz._2
518+ let bo = ai(w)
519+ let bl = {
520+ let R = invoke(this, "getUserGwxAmountAtHeight", [bq, bf], nil)
521521 if ($isInstanceOf(R, "Int"))
522522 then R
523- else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [br, bg], nil)) + " couldn't be cast to Int"))
523+ else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [bq, bf], nil)) + " couldn't be cast to Int"))
524524 }
525- let bB = {
526- let R = invoke(this, "getUserGwxAmountAtHeight", [br, by], nil)
525+ let bA = {
526+ let R = invoke(this, "getUserGwxAmountAtHeight", [bq, bx], nil)
527527 if ($isInstanceOf(R, "Int"))
528528 then R
529- else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [br, by], nil)) + " couldn't be cast to Int"))
529+ else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [bq, bx], nil)) + " couldn't be cast to Int"))
530530 }
531- let bl = valueOrElse(getInteger(I(t)), 0)
532- let bC = valueOrElse(getInteger(E(w, t)), 0)
533- let bD = valueOrErrorMessage(getInteger(C(w, aS, bw)), (((("processVoteINTERNAL " + bv) + " ") + br) + ": no previous vote"))
534- let bi = valueOrElse(getInteger(this, A(aS, t)), 0)
535- let bo = fraction(bD, bm, bB)
536- let bE = if (if ((bo > 0))
537- then bp
531+ let bk = valueOrElse(getInteger(I(t)), 0)
532+ let bB = valueOrElse(getInteger(E(w, t)), 0)
533+ let bC = valueOrErrorMessage(getInteger(C(w, aS, bv)), (((("processVoteINTERNAL " + bu) + " ") + bq) + ": no previous vote"))
534+ let bh = valueOrElse(getInteger(this, A(aS, t)), 0)
535+ let bn = fraction(bC, bl, bA)
536+ let bD = if (if ((bn > 0))
537+ then bo
538538 else false)
539- then [IntegerEntry(C(w, aS, t), bo), IntegerEntry(I(t), (bl + bo)), IntegerEntry(E(w, t), (bC + bo)), IntegerEntry(A(aS, t), (bi + bo))]
540- else aB(al(w), br)
541- $Tuple2(bE, unit)
539+ then [IntegerEntry(C(w, aS, t), bn), IntegerEntry(I(t), (bk + bn)), IntegerEntry(E(w, t), (bB + bn)), IntegerEntry(A(aS, t), (bh + bn))]
540+ else aB(al(w), bq)
541+ $Tuple2(bD, unit)
542542 }
543543 else throw("Strict value is not equal to itself.")
544544 }
545545 else throw("Strict value is not equal to itself.")
546546 }
547547
548548
549549
550550 @Callable(aJ)
551-func processPoolINTERNAL (bv) = {
551+func processPoolINTERNAL (bu) = {
552552 let aN = aI(aJ)
553553 if ((aN == aN))
554554 then {
555- let bF = (S(this, g) - 1)
556- let bz = if ((bF >= 0))
555+ let bE = (S(this, g) - 1)
556+ let by = if ((bE >= 0))
557557 then true
558558 else throw("processPoolINTERNAL: invalid target epoch")
559- if ((bz == bz))
559+ if ((by == by))
560560 then {
561- let w = U(bv)
562- let bG = w
563- let y = bG._1
564- let z = bG._2
561+ let w = U(bu)
562+ let bF = w
563+ let y = bF._1
564+ let z = bF._2
565565 let aX = addressFromStringValue(Q(this, l))
566566 let ae = addressFromStringValue(Q(this, j))
567567 let ah = W(y, z)
568- let bH = {
568+ let bG = {
569569 let R = invoke(aX, "usersListTraversal", [ah], nil)
570570 if ($isInstanceOf(R, "Boolean"))
571571 then R
572572 else throw(($getType(invoke(aX, "usersListTraversal", [ah], nil)) + " couldn't be cast to Boolean"))
573573 }
574- if ((bH == bH))
575- then if (bH)
574+ if ((bG == bG))
575+ then if (bG)
576576 then $Tuple2(nil, true)
577577 else {
578- let bp = ai(w)
579- let bl = valueOrElse(getInteger(this, I(bF)), 0)
580- let bC = valueOrElse(getInteger(this, E(w, bF)), 0)
581- let bI = if (if ((bl == 0))
578+ let bo = ai(w)
579+ let bk = valueOrElse(getInteger(this, I(bE)), 0)
580+ let bB = valueOrElse(getInteger(this, E(w, bE)), 0)
581+ let bH = if (if ((bk == 0))
582582 then true
583- else !(bp))
583+ else !(bo))
584584 then 0
585- else fraction(bC, b, bl)
586- let bJ = invoke(ae, "modifyWeight", [ah, bI], nil)
587- if ((bJ == bJ))
585+ else fraction(bB, b, bk)
586+ let bI = invoke(ae, "modifyWeight", [ah, bH], nil)
587+ if ((bI == bI))
588588 then {
589- let bK = if (bp)
589+ let bJ = if (bo)
590590 then nil
591- else ([DeleteEntry(v(w))] ++ aB(ak, bv))
592- $Tuple2(([IntegerEntry(G(w, bF), bI)] ++ bK), false)
591+ else ([DeleteEntry(v(w))] ++ aB(ak, bu))
592+ $Tuple2(([IntegerEntry(G(w, bE), bH)] ++ bJ), false)
593593 }
594594 else throw("Strict value is not equal to itself.")
595595 }
596596 else throw("Strict value is not equal to itself.")
597597 }
598598 else throw("Strict value is not equal to itself.")
599599 }
600600 else throw("Strict value is not equal to itself.")
601601 }
602602
603603
604604
605605 @Callable(aJ)
606606 func finalizeHelper () = {
607607 let t = valueOrElse(getInteger(this, g), 0)
608- let bL = (t - 1)
609- let bf = S(this, s(t))
608+ let bK = (t - 1)
609+ let be = S(this, s(t))
610610 let aY = S(this, f)
611- let bg = (bf + aY)
612- let bh = getInteger(this, m)
613- if (if ((height >= bg))
614- then (bh == unit)
611+ let bf = (be + aY)
612+ let bg = getInteger(this, m)
613+ if (if ((height >= bf))
614+ then (bg == unit)
615615 else false)
616616 then {
617- let bM = (t + 1)
618- $Tuple2([IntegerEntry(s(bM), height), IntegerEntry(p, height), IntegerEntry(g, bM), IntegerEntry(m, d)], true)
617+ let bL = (t + 1)
618+ $Tuple2([IntegerEntry(s(bL), height), IntegerEntry(p, height), IntegerEntry(g, bL), IntegerEntry(m, d)], true)
619619 }
620- else if ((bh == unit))
620+ else if ((bg == unit))
621621 then $Tuple2(nil, false)
622- else if ((bh == d))
622+ else if ((bg == d))
623623 then {
624- let bN = getString(n)
625- let bO = getString(o)
626- let N = bN
624+ let bM = getString(n)
625+ let bN = getString(o)
626+ let N = bM
627627 if ($isInstanceOf(N, "Unit"))
628628 then {
629- let bP = getString(an(ak))
630- if ($isInstanceOf(bP, "Unit"))
629+ let bO = getString(an(ak))
630+ if ($isInstanceOf(bO, "Unit"))
631631 then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
632- else if ($isInstanceOf(bP, "String"))
632+ else if ($isInstanceOf(bO, "String"))
633633 then {
634- let bQ = bP
635- $Tuple2([StringEntry(n, bQ)], true)
634+ let bP = bO
635+ $Tuple2([StringEntry(n, bP)], true)
636636 }
637637 else throw("Match error")
638638 }
639639 else if ($isInstanceOf(N, "String"))
640640 then {
641- let bv = N
642- let w = U(bv)
643- let bR = {
644- let bP = bO
645- if ($isInstanceOf(bP, "Unit"))
641+ let bu = N
642+ let w = U(bu)
643+ let bQ = {
644+ let bO = bN
645+ if ($isInstanceOf(bO, "Unit"))
646646 then getString(an(al(w)))
647- else if ($isInstanceOf(bP, "String"))
647+ else if ($isInstanceOf(bO, "String"))
648648 then {
649- let bS = bP
650- let bT = invoke(this, "processVoteINTERNAL", [bv, bS], nil)
651- if ((bT == bT))
652- then getString(at(al(w), bS))
649+ let bR = bO
650+ let bS = invoke(this, "processVoteINTERNAL", [bu, bR], nil)
651+ if ((bS == bS))
652+ then getString(at(al(w), bR))
653653 else throw("Strict value is not equal to itself.")
654654 }
655655 else throw("Match error")
656656 }
657- let bP = bR
658- if ($isInstanceOf(bP, "Unit"))
657+ let bO = bQ
658+ if ($isInstanceOf(bO, "Unit"))
659659 then {
660- let bU = getString(at(ak, bv))
661- let bV = bU
662- if ($isInstanceOf(bV, "Unit"))
660+ let bT = getString(at(ak, bu))
661+ let bU = bT
662+ if ($isInstanceOf(bU, "Unit"))
663663 then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
664- else if ($isInstanceOf(bV, "String"))
664+ else if ($isInstanceOf(bU, "String"))
665665 then {
666- let aF = bV
666+ let aF = bU
667667 $Tuple2([StringEntry(n, aF), DeleteEntry(o)], true)
668668 }
669669 else throw("Match error")
670670 }
671- else if ($isInstanceOf(bP, "String"))
671+ else if ($isInstanceOf(bO, "String"))
672672 then {
673- let bW = bP
674- $Tuple2([StringEntry(o, bW)], true)
673+ let bV = bO
674+ $Tuple2([StringEntry(o, bV)], true)
675675 }
676676 else throw("Match error")
677677 }
678678 else throw("Match error")
679679 }
680- else if ((bh == e))
680+ else if ((bg == e))
681681 then {
682- let bN = getString(n)
683- let N = bN
682+ let bM = getString(n)
683+ let N = bM
684684 if ($isInstanceOf(N, "Unit"))
685685 then {
686- let bP = getString(an(ak))
687- if ($isInstanceOf(bP, "Unit"))
688- then $Tuple2([DeleteEntry(m), BooleanEntry(u(bL), true), IntegerEntry(q, t), IntegerEntry(r, bf)], true)
689- else if ($isInstanceOf(bP, "String"))
686+ let bO = getString(an(ak))
687+ if ($isInstanceOf(bO, "Unit"))
688+ then $Tuple2([DeleteEntry(m), BooleanEntry(u(bK), true), IntegerEntry(q, t), IntegerEntry(r, be)], true)
689+ else if ($isInstanceOf(bO, "String"))
690690 then {
691- let bX = bP
692- $Tuple2([StringEntry(n, bX)], true)
691+ let bW = bO
692+ $Tuple2([StringEntry(n, bW)], true)
693693 }
694694 else throw("Match error")
695695 }
696696 else if ($isInstanceOf(N, "String"))
697697 then {
698- let bv = N
699- let bH = {
700- let R = invoke(this, "processPoolINTERNAL", [bv], nil)
698+ let bu = N
699+ let bG = {
700+ let R = invoke(this, "processPoolINTERNAL", [bu], nil)
701701 if ($isInstanceOf(R, "Boolean"))
702702 then R
703- else throw(($getType(invoke(this, "processPoolINTERNAL", [bv], nil)) + " couldn't be cast to Boolean"))
703+ else throw(($getType(invoke(this, "processPoolINTERNAL", [bu], nil)) + " couldn't be cast to Boolean"))
704704 }
705- if ((bH == bH))
706- then if (bH)
705+ if ((bG == bG))
706+ then if (bG)
707707 then $Tuple2(nil, true)
708708 else {
709- let bU = getString(at(ak, bv))
710- let bP = bU
711- if ($isInstanceOf(bP, "Unit"))
712- then $Tuple2([DeleteEntry(m), BooleanEntry(u(bL), true), IntegerEntry(q, t), IntegerEntry(r, bf), DeleteEntry(n)], true)
713- else if ($isInstanceOf(bP, "String"))
709+ let bT = getString(at(ak, bu))
710+ let bO = bT
711+ if ($isInstanceOf(bO, "Unit"))
712+ then $Tuple2([DeleteEntry(m), BooleanEntry(u(bK), true), IntegerEntry(q, t), IntegerEntry(r, be), DeleteEntry(n)], true)
713+ else if ($isInstanceOf(bO, "String"))
714714 then {
715- let bX = bP
716- $Tuple2([StringEntry(n, bX)], true)
715+ let bW = bO
716+ $Tuple2([StringEntry(n, bW)], true)
717717 }
718718 else throw("Match error")
719719 }
720720 else throw("Strict value is not equal to itself.")
721721 }
722722 else throw("Match error")
723723 }
724724 else throw("finalization is broken")
725725 }
726726
727727
728728
729729 @Callable(aJ)
730-func finalizeWrapper (bY) = {
731- let bZ = {
730+func finalizeWrapper (bX) = {
731+ let bY = {
732732 let R = invoke(this, "finalizeHelper", nil, nil)
733733 if ($isInstanceOf(R, "Boolean"))
734734 then R
735735 else throw(($getType(invoke(this, "finalizeHelper", nil, nil)) + " couldn't be cast to Boolean"))
736736 }
737- if ((bZ == bZ))
738- then if (!(bZ))
739- then if ((bY == 0))
737+ if ((bY == bY))
738+ then if (!(bY))
739+ then if ((bX == 0))
740740 then throw("Current voting is not over yet")
741741 else $Tuple2(nil, unit)
742742 else {
743- let ca = valueOrElse(getInteger(this, h), c)
744- if ((ca > bY))
743+ let bZ = valueOrElse(getInteger(this, h), c)
744+ if ((bZ > bX))
745745 then {
746- let cb = invoke(this, "finalizeWrapper", [(bY + 1)], nil)
747- if ((cb == cb))
746+ let ca = invoke(this, "finalizeWrapper", [(bX + 1)], nil)
747+ if ((ca == ca))
748748 then $Tuple2(nil, unit)
749749 else throw("Strict value is not equal to itself.")
750750 }
751751 else $Tuple2(nil, unit)
752752 }
753753 else throw("Strict value is not equal to itself.")
754754 }
755755
756756
757757
758758 @Callable(aJ)
759759 func finalize () = {
760- let cb = invoke(this, "finalizeWrapper", [0], nil)
761- if ((cb == cb))
760+ let ca = invoke(this, "finalizeWrapper", [0], nil)
761+ if ((ca == ca))
762762 then $Tuple2(nil, unit)
763763 else throw("Strict value is not equal to itself.")
764764 }
765765
766766
767767
768768 @Callable(aJ)
769769 func containsNodeREADONLY (ao,as) = $Tuple2(nil, au(ao, as))
770770
771771
772772
773773 @Callable(aJ)
774774 func insertNode (ao,as) = {
775775 let aN = aK(aJ)
776776 if ((aN == aN))
777777 then $Tuple2(ay(ao, as), unit)
778778 else throw("Strict value is not equal to itself.")
779779 }
780780
781781
782782
783783 @Callable(aJ)
784784 func deleteNode (ao,as) = {
785785 let aN = aK(aJ)
786786 if ((aN == aN))
787787 then $Tuple2(aB(ao, as), unit)
788788 else throw("Strict value is not equal to itself.")
789789 }
790790
791791
792-@Verifier(cc)
793-func cd () = {
794- let ce = {
792+@Verifier(cb)
793+func cc () = {
794+ let cd = {
795795 let N = aE()
796796 if ($isInstanceOf(N, "ByteVector"))
797797 then {
798798 let aL = N
799799 aL
800800 }
801801 else if ($isInstanceOf(N, "Unit"))
802- then cc.senderPublicKey
802+ then cb.senderPublicKey
803803 else throw("Match error")
804804 }
805- sigVerify(cc.bodyBytes, cc.proofs[0], ce)
805+ sigVerify(cb.bodyBytes, cb.proofs[0], cd)
806806 }
807807

github/deemru/w8io/169f3d6 
186.02 ms