tx · HQp5zXSxM92vp2PZgLjPRo32ehQMtVWHLofqe16pz1ih

3N9yMmmL5cJ7LJxr8o6GFbKFUbGz4XcAjeg:  -0.01000000 Waves

2022.04.08 16:41 [1999665] smart account 3N9yMmmL5cJ7LJxr8o6GFbKFUbGz4XcAjeg > SELF 0.00000000 Waves

{ "type": 13, "id": "HQp5zXSxM92vp2PZgLjPRo32ehQMtVWHLofqe16pz1ih", "fee": 1000000, "feeAssetId": null, "timestamp": 1649425314518, "version": 2, "chainId": 84, "sender": "3N9yMmmL5cJ7LJxr8o6GFbKFUbGz4XcAjeg", "senderPublicKey": "C2aAS9D6FqfbrkCuCQCtPWAiopjyagvitFLjRuLcRPYt", "proofs": [ "5ukrE7aaCJCwEqVET9VEokFEu6CLiu8LJ9sJih7eiJtboaKnartYHLyTnjeCRaV9njQqipVZg5yMBJJR3HCR1PmY" ], "script": "base64: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YWlsAAAAAQUAAAARa2V5Vm90aW5nRHVyYXRpb24AAAAAFXZvdGVCZWZvcmVFbGltaW5hdGlvbgkBAAAAEGdldEludGVnZXJPckZhaWwAAAABBQAAABhrZXlWb3RlQmVmb3JlRWxpbWluYXRpb24AAAAAC3N0YXJ0SGVpZ2h0CQEAAAAQZ2V0SW50ZWdlck9yRmFpbAAAAAEFAAAADmtleVN0YXJ0SGVpZ2h0AAAAAA1jdXJyZW50UGVyaW9kCQEAAAAQZ2V0SW50ZWdlck9yRmFpbAAAAAEFAAAAEGtleUN1cnJlbnRQZXJpb2QAAAAAEGJvb3N0aW5nQ29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABBQAAABNrZXlCb29zdGluZ0NvbnRyYWN0AAAAABBlbWlzc2lvbkNvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQUAAAATa2V5RW1pc3Npb25Db250cmFjdAAAAAATYXNzZXRzU3RvcmVDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEFAAAAFmtleUFzc2V0c1N0b3JlQ29udHJhY3QAAAAACG1heERlcHRoCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHwAAAAEFAAAAC2tleU1heERlcHRoBQAAAA9tYXhEZXB0aERlZmF1bHQAAAAACWVuZEhlaWdodAkAAGQAAAACBQAAAAtzdGFydEhlaWdodAUAAAAOdm90aW5nRHVyYXRpb24BAAAAGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAAAAAIAAAALdXNlckFkZHJlc3MAAAAMdGFyZ2V0SGVpZ2h0BAAAAAlnd3hBbW91bnQJAAP8AAAABAUAAAAQYm9vc3RpbmdDb250cmFjdAIAAAAgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkJAARMAAAAAgUAAAALdXNlckFkZHJlc3MJAARMAAAAAgUAAAAMdGFyZ2V0SGVpZ2h0BQAAAANuaWwFAAAAA25pbAkBAAAABWFzSW50AAAAAQUAAAAJZ3d4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BQAAAAdhc3NldElkAAAAEXVzZXJBZGRyZXNzT3JVbml0AAAAF2xhdGVzdFByb2Nlc3NlZEFzc2V0S2V5AAAAFmxhdGVzdFByb2Nlc3NlZFVzZXJLZXkAAAAcbGF0ZXN0UHJvY2Vzc2VkVXNlclJlbW92ZUtleQQAAAAgdXBkYXRlTGF0ZXN0UHJvY2Vzc2VkQXNzZXRBY3Rpb24JAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAF2xhdGVzdFByb2Nlc3NlZEFzc2V0S2V5BQAAAAdhc3NldElkBAAAAB9kZWxldGVMYXRlc3RQcm9jZXNzZWRVc2VyQWN0aW9uCQEAAAALRGVsZXRlRW50cnkAAAABBQAAABZsYXRlc3RQcm9jZXNzZWRVc2VyS2V5AwkAAAAAAAACBQAAABF1c2VyQWRkcmVzc09yVW5pdAUAAAAEdW5pdAkABEwAAAACBQAAACB1cGRhdGVMYXRlc3RQcm9jZXNzZWRBc3NldEFjdGlvbgkABEwAAAACBQAAAB9kZWxldGVMYXRlc3RQcm9jZXNzZWRVc2VyQWN0aW9uBQAAAANuaWwEAAAAC3VzZXJBZGRyZXNzCQEAAAAFdmFsdWUAAAABBQAAABF1c2VyQWRkcmVzc09yVW5pdAQAAAAfdXBkYXRlTGF0ZXN0UHJvY2Vzc2VkVXNlckFjdGlvbgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAWbGF0ZXN0UHJvY2Vzc2VkVXNlcktleQUAAAALdXNlckFkZHJlc3MEAAAAC3VzZXJWb3RlS2V5CQEAAAATa2V5VXNlclZvdGVCeVBlcmlvZAAAAAMFAAAAC3VzZXJBZGRyZXNzBQAAAAdhc3NldElkBQAAAA1jdXJyZW50UGVyaW9kBAAAAA51c2VyVm90ZU9yVW5pdAkABCIAAAABBQAAAAt1c2VyVm90ZUtleQQAAAALdm90ZUFjdGlvbnMDCQAAAAAAAAIFAAAADnVzZXJWb3RlT3JVbml0BQAAAAR1bml0BAAAABh1c2VyR3d4QW1vdW50QXRFbmRIZWlnaHQJAQAAABhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAAJZW5kSGVpZ2h0AwkAAAAAAAACBQAAABh1c2VyR3d4QW1vdW50QXRFbmRIZWlnaHQAAAAAAAAAAAAJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAAHGxhdGVzdFByb2Nlc3NlZFVzZXJSZW1vdmVLZXkGBQAAAANuaWwEAAAADnByZXZpb3VzUGVyaW9kCQAAZQAAAAIFAAAADWN1cnJlbnRQZXJpb2QAAAAAAAAAAAEEAAAAEmFzc2V0V2FzRWxpbWluYXRlZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABCAAAAABCQEAAAAVa2V5QXNzZXRXYXNFbGltaW5hdGVkAAAAAgUAAAAHYXNzZXRJZAUAAAAOcHJldmlvdXNQZXJpb2QHBAAAABZ1c2VyUHJldmlvdXNWb3RlT3JVbml0AwUAAAASYXNzZXRXYXNFbGltaW5hdGVkBQAAAAR1bml0CQAEIgAAAAEJAQAAABNrZXlVc2VyVm90ZUJ5UGVyaW9kAAAAAwUAAAALdXNlckFkZHJlc3MFAAAAB2Fzc2V0SWQFAAAADnByZXZpb3VzUGVyaW9kAwkAAAAAAAACBQAAABZ1c2VyUHJldmlvdXNWb3RlT3JVbml0BQAAAAR1bml0BQAAAANuaWwEAAAADSR0MDEwNTIxMTA1OTQJAQAAAA1wYXJzZVVzZXJWb3RlAAAAAQkBAAAABXZhbHVlAAAAAQUAAAAWdXNlclByZXZpb3VzVm90ZU9yVW5pdAQAAAAJcHJldlRvdGFsCAUAAAANJHQwMTA1MjExMDU5NAAAAAJfMQQAAAAHaW5GYXZvcggFAAAADSR0MDEwNTIxMTA1OTQAAAACXzIEAAAABXRvdGFsCQABlwAAAAEJAARMAAAAAgUAAAAJcHJldlRvdGFsCQAETAAAAAIFAAAAGHVzZXJHd3hBbW91bnRBdEVuZEhlaWdodAUAAAADbmlsCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAC3VzZXJWb3RlS2V5CQEAAAAOZm9ybWF0VXNlclZvdGUAAAACBQAAAAV0b3RhbAUAAAAHaW5GYXZvcgkABEwAAAACCQEAAAATZ2V0Vm90ZVJlc3VsdEFjdGlvbgAAAAUFAAAAB2Fzc2V0SWQFAAAABXRvdGFsBQAAAAdpbkZhdm9yBQAAAA1jdXJyZW50UGVyaW9kBQAAAAR1bml0BQAAAANuaWwFAAAAA25pbAkABE0AAAACCQAETQAAAAIFAAAAC3ZvdGVBY3Rpb25zBQAAACB1cGRhdGVMYXRlc3RQcm9jZXNzZWRBc3NldEFjdGlvbgUAAAAfdXBkYXRlTGF0ZXN0UHJvY2Vzc2VkVXNlckFjdGlvbgEAAAAXYXNzZXRTaG91bGRCZUVsaW1pbmF0ZWQAAAACAAAAB2Fzc2V0SWQAAAAGcGVyaW9kCQEAAAABIQAAAAEJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQgAAAAAQkBAAAAGGtleUFzc2V0VmVyaWZpZWRCeVBlcmlvZAAAAAIFAAAAB2Fzc2V0SWQFAAAABnBlcmlvZAYBAAAAEGVsaW1pbmF0aW9uQ2hlY2sAAAABAAAAB2Fzc2V0SWQDAwkBAAAAF2Fzc2V0U2hvdWxkQmVFbGltaW5hdGVkAAAAAgUAAAAHYXNzZXRJZAkAAGUAAAACBQAAAA1jdXJyZW50UGVyaW9kAAAAAAAAAAABCQEAAAAXYXNzZXRTaG91bGRCZUVsaW1pbmF0ZWQAAAACBQAAAAdhc3NldElkCQAAZQAAAAIFAAAADWN1cnJlbnRQZXJpb2QAAAAAAAAAAAIHCQEAAAAXYXNzZXRTaG91bGRCZUVsaW1pbmF0ZWQAAAACBQAAAAdhc3NldElkCQAAZQAAAAIFAAAADWN1cnJlbnRQZXJpb2QAAAAAAAAAAAMHAAAADwAAAAFpAQAAAAtjb25zdHJ1Y3RvcgAAAAoAAAATYm9vc3RpbmdDb250cmFjdFBybQAAABNlbWlzc2lvbkNvbnRyYWN0UHJtAAAAFmFzc2V0c1N0b3JlQ29udHJhY3RQcm0AAAAMZmVlQW1vdW50UHJtAAAADHd4QXNzZXRJZFBybQAAABJ2b3RpbmdUaHJlc2hvbGRQcm0AAAARdm90aW5nRHVyYXRpb25Qcm0AAAAYdm90ZUJlZm9yZUVsaW1pbmF0aW9uUHJtAAAADnN0YXJ0SGVpZ2h0UHJtAAAAC21heERlcHRoUHJtBAAAAAZjaGVja3MJAARMAAAAAgkBAAAACHRoaXNPbmx5AAAAAQUAAAABaQkABEwAAAACAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQmAAAAAQUAAAATYm9vc3RpbmdDb250cmFjdFBybQYJAAACAAAAAQIAAAAhSW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQAETAAAAAIDCQEAAAAJaXNEZWZpbmVkAAAAAQkABCYAAAABBQAAABNlbWlzc2lvbkNvbnRyYWN0UHJtBgkAAAIAAAABAgAAACFJbnZhbGlkIGVtaXNzaW9uIGNvbnRyYWN0IGFkZHJlc3MJAARMAAAAAgMJAQAAAAlpc0RlZmluZWQAAAABCQAEJgAAAAEFAAAAFmFzc2V0c1N0b3JlQ29udHJhY3RQcm0GCQAAAgAAAAECAAAAJEludmFsaWQgYXNzZXRfc3RvcmUgY29udHJhY3QgYWRkcmVzcwkABEwAAAACAwkAAGcAAAACBQAAAAxmZWVBbW91bnRQcm0AAAAAAAAAAAAGCQAAAgAAAAECAAAAEkludmFsaWQgZmVlIGFtb3VudAkABEwAAAACAwkBAAAACWlzRGVmaW5lZAAAAAEJAAPsAAAAAQkAAlkAAAABBQAAAAx3eEFzc2V0SWRQcm0GCQAAAgAAAAECAAAAE0ludmFsaWQgV1ggYXNzZXQgSUQJAARMAAAAAgMJAABnAAAAAgUAAAASdm90aW5nVGhyZXNob2xkUHJtAAAAAAAAAAAABgkAAAIAAAABAgAAABhJbnZhbGlkIHZvdGluZyB0aHJlc2hvbGQJAARMAAAAAgMJAABmAAAAAgUAAAARdm90aW5nRHVyYXRpb25Qcm0AAAAAAAAAAAAGCQAAAgAAAAECAAAAF0ludmFsaWQgdm90aW5nIGR1cmF0aW9uCQAETAAAAAIDCQAAZgAAAAIJAABkAAAAAgUAAAAOc3RhcnRIZWlnaHRQcm0FAAAAEXZvdGluZ0R1cmF0aW9uUHJtBQAAAAZoZWlnaHQGCQAAAgAAAAECAAAAFEludmFsaWQgc3RhcnQgaGVpZ2h0BQAAAANuaWwDCQAAAAAAAAIFAAAABmNoZWNrcwUAAAAGY2hlY2tzCQAFFAAAAAIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAATa2V5Qm9vc3RpbmdDb250cmFjdAUAAAATYm9vc3RpbmdDb250cmFjdFBybQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABNrZXlFbWlzc2lvbkNvbnRyYWN0BQAAABNlbWlzc2lvbkNvbnRyYWN0UHJtCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAFmtleUFzc2V0c1N0b3JlQ29udHJhY3QFAAAAFmFzc2V0c1N0b3JlQ29udHJhY3RQcm0JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADGtleUZlZUFtb3VudAUAAAAMZmVlQW1vdW50UHJtCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADGtleVd4QXNzZXRJZAUAAAAMd3hBc3NldElkUHJtCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlWb3RpbmdUaHJlc2hvbGQFAAAAEnZvdGluZ1RocmVzaG9sZFBybQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa2V5Vm90aW5nRHVyYXRpb24FAAAAEXZvdGluZ0R1cmF0aW9uUHJtCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABhrZXlWb3RlQmVmb3JlRWxpbWluYXRpb24FAAAAGHZvdGVCZWZvcmVFbGltaW5hdGlvblBybQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOa2V5U3RhcnRIZWlnaHQFAAAADnN0YXJ0SGVpZ2h0UHJtCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABBrZXlDdXJyZW50UGVyaW9kAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlNYXhEZXB0aAUAAAALbWF4RGVwdGhQcm0FAAAAA25pbAUAAAAEdW5pdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAHc3VnZ2VzdAAAAAIAAAAHYXNzZXRJZAAAAAphc3NldEltYWdlBAAAAARpbmZvCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQkAAlkAAAABBQAAAAdhc3NldElkAgAAABBJbnZhbGlkIGFzc2V0IElEBAAAAAdwYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAZjaGVja3MJAARMAAAAAgMJAAAAAAAAAggFAAAABGluZm8AAAAGaXNzdWVyCAUAAAABaQAAAAZjYWxsZXIGCQAAAgAAAAECAAAAKUFzc2V0IGNhbiBvbmx5IGJlIHN1Z2dlc3RlZCBieSBpdHMgaXNzdWVyCQAETAAAAAIDCQAAAAAAAAIJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAACXd4QXNzZXRJZAYJAAACAAAAAQIAAAARSW52YWxpZCBmZWUgYXNzZXQJAARMAAAAAgMJAAAAAAAAAggFAAAAB3BheW1lbnQAAAAGYW1vdW50BQAAAAlmZWVBbW91bnQGCQAAAgAAAAECAAAAEkludmFsaWQgZmVlIGFtb3VudAUAAAADbmlsAwkAAAAAAAACBQAAAAZjaGVja3MFAAAABmNoZWNrcwQAAAAcYXNzZXRzU3RvcmVDcmVhdGVPclVwZGF0ZUludgkAA/wAAAAEBQAAABNhc3NldHNTdG9yZUNvbnRyYWN0AgAAAA5jcmVhdGVPclVwZGF0ZQkABEwAAAACBQAAAAdhc3NldElkCQAETAAAAAICAAAAAAkABEwAAAACBQAAAAphc3NldEltYWdlCQAETAAAAAIHBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAcYXNzZXRzU3RvcmVDcmVhdGVPclVwZGF0ZUludgUAAAAcYXNzZXRzU3RvcmVDcmVhdGVPclVwZGF0ZUludgQAAAAKYnVybkZlZUludgkAA/wAAAAEBQAAABBlbWlzc2lvbkNvbnRyYWN0AgAAAARidXJuBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAADbmlsAwkAAAAAAAACBQAAAApidXJuRmVlSW52BQAAAApidXJuRmVlSW52BAAAAA9hZGRBc3NldEFjdGlvbnMJAQAAAAppbnNlcnROb2RlAAAAAgUAAAAOYXNzZXRzTGlzdE5hbWUFAAAAB2Fzc2V0SWQEAAAACm5leHRQZXJpb2QJAABkAAAAAgUAAAANY3VycmVudFBlcmlvZAAAAAAAAAAAAQQAAAAMdGFyZ2V0UGVyaW9kAwkAAGYAAAACBQAAAAllbmRIZWlnaHQFAAAABmhlaWdodAUAAAANY3VycmVudFBlcmlvZAUAAAAKbmV4dFBlcmlvZAkABRQAAAACCQAETQAAAAIFAAAAD2FkZEFzc2V0QWN0aW9ucwkBAAAAE2dldFZvdGVSZXN1bHRBY3Rpb24AAAAFBQAAAAdhc3NldElkAAAAAAAAAAAABgUAAAAMdGFyZ2V0UGVyaW9kBwUAAAAEdW5pdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAR2b3RlAAAAAgAAAAdhc3NldElkAAAAB2luRmF2b3IEAAAACmNoZWNrQXNzZXQDCQEAAAAMY29udGFpbnNOb2RlAAAAAgUAAAAOYXNzZXRzTGlzdE5hbWUFAAAAB2Fzc2V0SWQGCQAAAgAAAAECAAAADUludmFsaWQgYXNzZXQDCQAAAAAAAAIFAAAACmNoZWNrQXNzZXQFAAAACmNoZWNrQXNzZXQEAAAAC2NoZWNrSGVpZ2h0AwkAAGYAAAACBQAAAAllbmRIZWlnaHQFAAAABmhlaWdodAYJAAACAAAAAQIAAAA0Q3VycmVudCB2b3RpbmcgaXMgb3ZlciBidXQgcmVzdWx0cyBhcmUgbm90IGZpbmFsaXplZAMJAAAAAAAAAgUAAAALY2hlY2tIZWlnaHQFAAAAC2NoZWNrSGVpZ2h0BAAAAAt1c2VyQWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAADmd3eEFtb3VudEF0RW5kCQEAAAAYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0AAAAAgUAAAALdXNlckFkZHJlc3MFAAAACWVuZEhlaWdodAQAAAATY2hlY2tHd3hBbW91bnRBdEVuZAMJAABmAAAAAgUAAAAOZ3d4QW1vdW50QXRFbmQAAAAAAAAAAAAGCQAAAgAAAAECAAAAKFlvdSdsbCBub3QgaGF2ZSBnV1ggYXQgdGhlIGVuZCBvZiB2b3RpbmcDCQAAAAAAAAIFAAAAE2NoZWNrR3d4QW1vdW50QXRFbmQFAAAAE2NoZWNrR3d4QW1vdW50QXRFbmQEAAAADXZvdGVzTGlzdE5hbWUJAQAAABBnZXRWb3Rlc0xpc3ROYW1lAAAAAQUAAAAHYXNzZXRJZAQAAAALdXNlclZvdGVLZXkJAQAAABNrZXlVc2VyVm90ZUJ5UGVyaW9kAAAAAwUAAAALdXNlckFkZHJlc3MFAAAAB2Fzc2V0SWQFAAAADWN1cnJlbnRQZXJpb2QEAAAADnVzZXJWb3RlT3JVbml0CQAEIgAAAAEFAAAAC3VzZXJWb3RlS2V5BAAAAA1jYW5jZWxWb3RlSW52AwkAAAAAAAACBQAAAA51c2VyVm90ZU9yVW5pdAUAAAAEdW5pdAUAAAAEdW5pdAkAA/wAAAAEBQAAAAR0aGlzAgAAAApjYW5jZWxWb3RlCQAETAAAAAIFAAAAB2Fzc2V0SWQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAA1jYW5jZWxWb3RlSW52BQAAAA1jYW5jZWxWb3RlSW52BAAAAA91c2VyVm90ZUFjdGlvbnMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALdXNlclZvdGVLZXkJAQAAAA5mb3JtYXRVc2VyVm90ZQAAAAIFAAAADmd3eEFtb3VudEF0RW5kBQAAAAdpbkZhdm9yCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlVc2VyVm90ZUhpc3RvcnkAAAAFAgAAAAR2b3RlBQAAAAt1c2VyQWRkcmVzcwUAAAAHYXNzZXRJZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAA1jdXJyZW50UGVyaW9kCQEAAAAOZm9ybWF0VXNlclZvdGUAAAACBQAAAA5nd3hBbW91bnRBdEVuZAUAAAAHaW5GYXZvcgkABEwAAAACCQEAAAATZ2V0Vm90ZVJlc3VsdEFjdGlvbgAAAAUFAAAAB2Fzc2V0SWQFAAAADmd3eEFtb3VudEF0RW5kBQAAAAdpbkZhdm9yBQAAAA1jdXJyZW50UGVyaW9kBQAAAAR1bml0BQAAAANuaWwEAAAAEHZvdGVzTGlzdEFjdGlvbnMDCQEAAAAMY29udGFpbnNOb2RlAAAAAgUAAAANdm90ZXNMaXN0TmFtZQUAAAALdXNlckFkZHJlc3MFAAAAA25pbAkBAAAACmluc2VydE5vZGUAAAACBQAAAA12b3Rlc0xpc3ROYW1lBQAAAAt1c2VyQWRkcmVzcwkABRQAAAACCQAETgAAAAIFAAAAEHZvdGVzTGlzdEFjdGlvbnMFAAAAD3VzZXJWb3RlQWN0aW9ucwUAAAAEdW5pdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAKY2FuY2VsVm90ZQAAAAEAAAAHYXNzZXRJZAQAAAALdXNlckFkZHJlc3MDCQAAAAAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkABCUAAAABCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA12b3Rlc0xpc3ROYW1lCQEAAAAQZ2V0Vm90ZXNMaXN0TmFtZQAAAAEFAAAAB2Fzc2V0SWQEAAAAC3VzZXJWb3RlS2V5CQEAAAATa2V5VXNlclZvdGVCeVBlcmlvZAAAAAMFAAAAC3VzZXJBZGRyZXNzBQAAAAdhc3NldElkBQAAAA1jdXJyZW50UGVyaW9kBAAAAA51c2VyVm90ZU9yVW5pdAkABCIAAAABBQAAAAt1c2VyVm90ZUtleQQAAAAJY2hlY2tWb3RlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEIgAAAAEFAAAAC3VzZXJWb3RlS2V5AgAAABFOb3RoaW5nIHRvIGNhbmNlbAMJAAAAAAAAAgUAAAAJY2hlY2tWb3RlBQAAAAljaGVja1ZvdGUEAAAADSR0MDE1OTgxMTYwNDIJAQAAAA1wYXJzZVVzZXJWb3RlAAAAAQkBAAAABXZhbHVlAAAAAQUAAAAOdXNlclZvdGVPclVuaXQEAAAABXRvdGFsCAUAAAANJHQwMTU5ODExNjA0MgAAAAJfMQQAAAAHaW5GYXZvcggFAAAADSR0MDE1OTgxMTYwNDIAAAACXzIEAAAAEHZvdGVzTGlzdEFjdGlvbnMJAQAAAApkZWxldGVOb2RlAAAAAgUAAAANdm90ZXNMaXN0TmFtZQUAAAALdXNlckFkZHJlc3MEAAAAD3VzZXJWb3RlQWN0aW9ucwkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAAt1c2VyVm90ZUtleQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5VXNlclZvdGVIaXN0b3J5AAAABQIAAAAKY2FuY2VsVm90ZQUAAAALdXNlckFkZHJlc3MFAAAAB2Fzc2V0SWQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAANY3VycmVudFBlcmlvZAkBAAAADmZvcm1hdFVzZXJWb3RlAAAAAgAAAAAAAAAAAAYJAARMAAAAAgkBAAAAE2dldFZvdGVSZXN1bHRBY3Rpb24AAAAFBQAAAAdhc3NldElkCQEAAAABLQAAAAEFAAAABXRvdGFsBQAAAAdpbkZhdm9yBQAAAA1jdXJyZW50UGVyaW9kBQAAAAR1bml0BQAAAANuaWwJAAUUAAAAAgkABE4AAAACBQAAABB2b3Rlc0xpc3RBY3Rpb25zBQAAAA91c2VyVm90ZUFjdGlvbnMFAAAABHVuaXQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAFWZpbmFsaXplQXNzZXRJTlRFUk5BTAAAAAIAAAAHYXNzZXRJZAAAAAZwZXJpb2QEAAAAC2NoZWNrQ2FsbGVyCQEAAAAIdGhpc09ubHkAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAADXZvdGVSZXN1bHRLZXkJAQAAABVrZXlWb3RlUmVzdWx0QnlQZXJpb2QAAAACBQAAAAdhc3NldElkBQAAAAZwZXJpb2QEAAAADSR0MDE2NzAyMTY4NzUEAAAAByRtYXRjaDAJAAQiAAAAAQUAAAANdm90ZVJlc3VsdEtleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBAAAAAFyCQEAAAAPcGFyc2VWb3RlUmVzdWx0AAAAAQUAAAABcwkABRQAAAACCAUAAAABcgAAAAJfMQgFAAAAAXIAAAACXzIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQJAAUUAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgQAAAAIdG90YWxZZXMIBQAAAA0kdDAxNjcwMjE2ODc1AAAAAl8xBAAAAAd0b3RhbE5vCAUAAAANJHQwMTY3MDIxNjg3NQAAAAJfMgQAAAAFdG90YWwJAABkAAAAAgUAAAAIdG90YWxZZXMFAAAAB3RvdGFsTm8EAAAACHZlcmlmaWVkAwkAAGcAAAACBQAAAAV0b3RhbAUAAAAPdm90aW5nVGhyZXNob2xkCQAAZgAAAAIFAAAACHRvdGFsWWVzBQAAAAd0b3RhbE5vBwQAAAAUYXNzZXRWZXJpZmllZEFjdGlvbnMJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAABhrZXlBc3NldFZlcmlmaWVkQnlQZXJpb2QAAAACBQAAAAdhc3NldElkBQAAAAZwZXJpb2QFAAAACHZlcmlmaWVkCQAETAAAAAIDBQAAAAh2ZXJpZmllZAkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAABBrZXlBc3NldFZlcmlmaWVkAAAAAQUAAAAHYXNzZXRJZAYJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABBrZXlBc3NldFZlcmlmaWVkAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsBAAAABlhc3NldHNTdG9yZVNldFZlcmlmaWVkSW52CQAD/AAAAAQFAAAAE2Fzc2V0c1N0b3JlQ29udHJhY3QCAAAAC3NldFZlcmlmaWVkCQAETAAAAAIFAAAAB2Fzc2V0SWQJAARMAAAAAgUAAAAIdmVyaWZpZWQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABlhc3NldHNTdG9yZVNldFZlcmlmaWVkSW52BQAAABlhc3NldHNTdG9yZVNldFZlcmlmaWVkSW52BAAAAAllbGltaW5hdGUDBQAAAAh2ZXJpZmllZAcJAQAAABBlbGltaW5hdGlvbkNoZWNrAAAAAQUAAAAHYXNzZXRJZAQAAAAZYXNzZXRXYXNFbGltaW5hdGVkQWN0aW9ucwMFAAAACWVsaW1pbmF0ZQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAFWtleUFzc2V0V2FzRWxpbWluYXRlZAAAAAIFAAAAB2Fzc2V0SWQFAAAADWN1cnJlbnRQZXJpb2QGBQAAAANuaWwFAAAAA25pbAQAAAARdm90ZVJlc3VsdEFjdGlvbnMDBQAAAAllbGltaW5hdGUFAAAAA25pbAkABEwAAAACCQEAAAATZ2V0Vm90ZVJlc3VsdEFjdGlvbgAAAAUFAAAAB2Fzc2V0SWQAAAAAAAAAAAAGCQAAZAAAAAIFAAAADWN1cnJlbnRQZXJpb2QAAAAAAAAAAAEFAAAACHZlcmlmaWVkBQAAAANuaWwEAAAAEHZvdGVzTGlzdEFjdGlvbnMDBQAAAAllbGltaW5hdGUJAQAAAApkZWxldGVOb2RlAAAAAgUAAAAOYXNzZXRzTGlzdE5hbWUFAAAAB2Fzc2V0SWQFAAAAA25pbAkABRQAAAACCQAETgAAAAIJAAROAAAAAgUAAAAQdm90ZXNMaXN0QWN0aW9ucwUAAAARdm90ZVJlc3VsdEFjdGlvbnMFAAAAFGFzc2V0VmVyaWZpZWRBY3Rpb25zBQAAAAR1bml0CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAWZGVsZXRlVXNlck5vZGVJTlRFUk5BTAAAAAMAAAAHYXNzZXRJZAAAAAt1c2VyQWRkcmVzcwAAABxsYXRlc3RQcm9jZXNzZWRVc2VyUmVtb3ZlS2V5BAAAAAtjaGVja0NhbGxlcgkBAAAACHRoaXNPbmx5AAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyCQAFFAAAAAIJAARNAAAAAgkBAAAACmRlbGV0ZU5vZGUAAAACCQEAAAAQZ2V0Vm90ZXNMaXN0TmFtZQAAAAEFAAAAB2Fzc2V0SWQFAAAAC3VzZXJBZGRyZXNzCQEAAAALRGVsZXRlRW50cnkAAAABBQAAABxsYXRlc3RQcm9jZXNzZWRVc2VyUmVtb3ZlS2V5BQAAAAR1bml0CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAABRmaW5hbGl6ZVZvdGluZ0hlbHBlcgAAAAADCQAAZgAAAAIFAAAACWVuZEhlaWdodAUAAAAGaGVpZ2h0CQAFFAAAAAIFAAAAA25pbAcEAAAAGmxhdGVzdFByb2Nlc3NlZEFzc2V0T3JVbml0CQAEIgAAAAEFAAAAF2tleUxhdGVzdFByb2Nlc3NlZEFzc2V0BAAAABlsYXRlc3RQcm9jZXNzZWRVc2VyT3JVbml0CQAEIgAAAAEFAAAAFmtleUxhdGVzdFByb2Nlc3NlZFVzZXIEAAAAD25leHRQZXJpb2REZWxheQAAAAAAAAAAAAQAAAAGZmluaXNoCQAFFAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADmtleVN0YXJ0SGVpZ2h0CQAAZAAAAAIFAAAABmhlaWdodAUAAAAPbmV4dFBlcmlvZERlbGF5CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABBrZXlDdXJyZW50UGVyaW9kCQAAZAAAAAIFAAAADWN1cnJlbnRQZXJpb2QAAAAAAAAAAAEJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAXa2V5TGF0ZXN0UHJvY2Vzc2VkQXNzZXQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAWa2V5TGF0ZXN0UHJvY2Vzc2VkVXNlcgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAB9rZXlMYXRlc3RQcm9jZXNzZWRBc3NldFRyYW5zZmVyCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAHmtleUxhdGVzdFByb2Nlc3NlZFVzZXJUcmFuc2ZlcgUAAAADbmlsBgMJAAAAAAAAAgUAAAAabGF0ZXN0UHJvY2Vzc2VkQXNzZXRPclVuaXQFAAAABHVuaXQEAAAAEGFzc2V0c0hlYWRPclVuaXQJAAQiAAAAAQkBAAAAC2tleUxpc3RIZWFkAAAAAQUAAAAOYXNzZXRzTGlzdE5hbWUDCQAAAAAAAAIFAAAAEGFzc2V0c0hlYWRPclVuaXQFAAAABHVuaXQFAAAABmZpbmlzaAQAAAAFYXNzZXQJAQAAAAV2YWx1ZQAAAAEFAAAAEGFzc2V0c0hlYWRPclVuaXQEAAAAEXVzZXJBZGRyZXNzT3JVbml0CQAEIgAAAAEJAQAAAAtrZXlMaXN0SGVhZAAAAAEJAQAAABBnZXRWb3Rlc0xpc3ROYW1lAAAAAQUAAAAFYXNzZXQEAAAAEnByb2Nlc3NWb3RlQWN0aW9ucwkBAAAAC3Byb2Nlc3NWb3RlAAAABQUAAAAFYXNzZXQFAAAAEXVzZXJBZGRyZXNzT3JVbml0BQAAABdrZXlMYXRlc3RQcm9jZXNzZWRBc3NldAUAAAAWa2V5TGF0ZXN0UHJvY2Vzc2VkVXNlcgUAAAAca2V5TGF0ZXN0UHJvY2Vzc2VkVXNlclJlbW92ZQkABRQAAAACBQAAABJwcm9jZXNzVm90ZUFjdGlvbnMGBAAAABRsYXRlc3RQcm9jZXNzZWRBc3NldAkBAAAABXZhbHVlAAAAAQUAAAAabGF0ZXN0UHJvY2Vzc2VkQXNzZXRPclVuaXQDCQAAAAAAAAIFAAAAGWxhdGVzdFByb2Nlc3NlZFVzZXJPclVuaXQFAAAABHVuaXQEAAAAC2Fzc2V0T3JVbml0CQAEIgAAAAEJAQAAAAtrZXlMaXN0TmV4dAAAAAIFAAAADmFzc2V0c0xpc3ROYW1lBQAAABRsYXRlc3RQcm9jZXNzZWRBc3NldAMJAAAAAAAAAgUAAAALYXNzZXRPclVuaXQFAAAAC2Fzc2V0T3JVbml0BAAAABBmaW5hbGl6ZUFzc2V0SW52CQAD/AAAAAQFAAAABHRoaXMCAAAAFWZpbmFsaXplQXNzZXRJTlRFUk5BTAkABEwAAAACBQAAABRsYXRlc3RQcm9jZXNzZWRBc3NldAkABEwAAAACBQAAAA1jdXJyZW50UGVyaW9kBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAQZmluYWxpemVBc3NldEludgUAAAAQZmluYWxpemVBc3NldEludgMJAAAAAAAAAgUAAAALYXNzZXRPclVuaXQFAAAABHVuaXQFAAAABmZpbmlzaAQAAAAFYXNzZXQJAQAAAAV2YWx1ZQAAAAEFAAAAC2Fzc2V0T3JVbml0BAAAABF1c2VyQWRkcmVzc09yVW5pdAkABCIAAAABCQEAAAALa2V5TGlzdEhlYWQAAAABCQEAAAAQZ2V0Vm90ZXNMaXN0TmFtZQAAAAEFAAAABWFzc2V0BAAAABJwcm9jZXNzVm90ZUFjdGlvbnMJAQAAAAtwcm9jZXNzVm90ZQAAAAUFAAAABWFzc2V0BQAAABF1c2VyQWRkcmVzc09yVW5pdAUAAAAXa2V5TGF0ZXN0UHJvY2Vzc2VkQXNzZXQFAAAAFmtleUxhdGVzdFByb2Nlc3NlZFVzZXIFAAAAHGtleUxhdGVzdFByb2Nlc3NlZFVzZXJSZW1vdmUJAAUUAAAAAgUAAAAScHJvY2Vzc1ZvdGVBY3Rpb25zBgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAAAABNsYXRlc3RQcm9jZXNzZWRVc2VyCQEAAAAFdmFsdWUAAAABBQAAABlsYXRlc3RQcm9jZXNzZWRVc2VyT3JVbml0BAAAABF1c2VyQWRkcmVzc09yVW5pdAkABCIAAAABCQEAAAALa2V5TGlzdE5leHQAAAACCQEAAAAQZ2V0Vm90ZXNMaXN0TmFtZQAAAAEFAAAAFGxhdGVzdFByb2Nlc3NlZEFzc2V0BQAAABNsYXRlc3RQcm9jZXNzZWRVc2VyAwkAAAAAAAACBQAAABF1c2VyQWRkcmVzc09yVW5pdAUAAAARdXNlckFkZHJlc3NPclVuaXQEAAAAEHJlbW92ZUxhdGVzdFVzZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQgAAAAAQUAAAAca2V5TGF0ZXN0UHJvY2Vzc2VkVXNlclJlbW92ZQcEAAAADWRlbGV0ZVVzZXJJbnYDBQAAABByZW1vdmVMYXRlc3RVc2VyCQAD/AAAAAQFAAAABHRoaXMCAAAAFmRlbGV0ZVVzZXJOb2RlSU5URVJOQUwJAARMAAAAAgUAAAAUbGF0ZXN0UHJvY2Vzc2VkQXNzZXQJAARMAAAAAgUAAAATbGF0ZXN0UHJvY2Vzc2VkVXNlcgkABEwAAAACBQAAABxrZXlMYXRlc3RQcm9jZXNzZWRVc2VyUmVtb3ZlBQAAAANuaWwFAAAAA25pbAUAAAAEdW5pdAMJAAAAAAAAAgUAAAANZGVsZXRlVXNlckludgUAAAANZGVsZXRlVXNlckludgQAAAAScHJvY2Vzc1ZvdGVBY3Rpb25zCQEAAAALcHJvY2Vzc1ZvdGUAAAAFBQAAABRsYXRlc3RQcm9jZXNzZWRBc3NldAUAAAARdXNlckFkZHJlc3NPclVuaXQFAAAAF2tleUxhdGVzdFByb2Nlc3NlZEFzc2V0BQAAABZrZXlMYXRlc3RQcm9jZXNzZWRVc2VyBQAAABxrZXlMYXRlc3RQcm9jZXNzZWRVc2VyUmVtb3ZlCQAFFAAAAAIFAAAAEnByb2Nlc3NWb3RlQWN0aW9ucwYJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAABVmaW5hbGl6ZVZvdGluZ1dyYXBwZXIAAAABAAAAB2NvdW50ZXIEAAAABnJlc3VsdAkBAAAABmFzQm9vbAAAAAEJAAP8AAAABAUAAAAEdGhpcwIAAAAUZmluYWxpemVWb3RpbmdIZWxwZXIFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAZyZXN1bHQFAAAABnJlc3VsdAMJAQAAAAEhAAAAAQUAAAAGcmVzdWx0AwkAAAAAAAACBQAAAAdjb3VudGVyAAAAAAAAAAAACQAAAgAAAAECAAAAHkN1cnJlbnQgdm90aW5nIGlzIG5vdCBvdmVyIHlldAkABRQAAAACBQAAAANuaWwFAAAABHVuaXQDCQAAZgAAAAIFAAAACG1heERlcHRoBQAAAAdjb3VudGVyBAAAAANpbnYJAAP8AAAABAUAAAAEdGhpcwIAAAAVZmluYWxpemVWb3RpbmdXcmFwcGVyCQAETAAAAAIJAABkAAAAAgUAAAAHY291bnRlcgAAAAAAAAAAAQUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAA2ludgUAAAADaW52CQAFFAAAAAIFAAAAA25pbAUAAAAEdW5pdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAUUAAAAAgUAAAADbmlsBQAAAAR1bml0CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA5maW5hbGl6ZVZvdGluZwAAAAAEAAAAA2ludgkAA/wAAAAEBQAAAAR0aGlzAgAAABVmaW5hbGl6ZVZvdGluZ1dyYXBwZXIJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAA2ludgUAAAADaW52CQAFFAAAAAIFAAAAA25pbAUAAAAEdW5pdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAATdHJhbnNmZXJWb3Rlc0hlbHBlcgAAAAAEAAAAGHZvdGVzVHJhbnNmZXJGaW5pc2hlZEtleQkBAAAAIGtleVZvdGVzVHJhbnNmZXJGaW5pc2hlZEJ5UGVyaW9kAAAAAQUAAAANY3VycmVudFBlcmlvZAQAAAAVdm90ZXNUcmFuc2ZlckZpbmlzaGVkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEIAAAAAEFAAAAGHZvdGVzVHJhbnNmZXJGaW5pc2hlZEtleQcDAwMJAABmAAAAAgUAAAALc3RhcnRIZWlnaHQFAAAABmhlaWdodAYJAABnAAAAAgUAAAAGaGVpZ2h0BQAAAAllbmRIZWlnaHQGBQAAABV2b3Rlc1RyYW5zZmVyRmluaXNoZWQJAAUUAAAAAgUAAAADbmlsBwQAAAAabGF0ZXN0UHJvY2Vzc2VkQXNzZXRPclVuaXQJAAQiAAAAAQUAAAAfa2V5TGF0ZXN0UHJvY2Vzc2VkQXNzZXRUcmFuc2ZlcgQAAAAZbGF0ZXN0UHJvY2Vzc2VkVXNlck9yVW5pdAkABCIAAAABBQAAAB5rZXlMYXRlc3RQcm9jZXNzZWRVc2VyVHJhbnNmZXIEAAAABmZpbmlzaAkABRQAAAACCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAABh2b3Rlc1RyYW5zZmVyRmluaXNoZWRLZXkGCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAH2tleUxhdGVzdFByb2Nlc3NlZEFzc2V0VHJhbnNmZXIJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAea2V5TGF0ZXN0UHJvY2Vzc2VkVXNlclRyYW5zZmVyBQAAAANuaWwGAwkAAAAAAAACBQAAABpsYXRlc3RQcm9jZXNzZWRBc3NldE9yVW5pdAUAAAAEdW5pdAQAAAAQYXNzZXRzSGVhZE9yVW5pdAkABCIAAAABCQEAAAALa2V5TGlzdEhlYWQAAAABBQAAAA5hc3NldHNMaXN0TmFtZQMJAAAAAAAAAgUAAAAQYXNzZXRzSGVhZE9yVW5pdAUAAAAEdW5pdAUAAAAGZmluaXNoBAAAAAVhc3NldAkBAAAABXZhbHVlAAAAAQUAAAAQYXNzZXRzSGVhZE9yVW5pdAQAAAARdXNlckFkZHJlc3NPclVuaXQJAAQiAAAAAQkBAAAAC2tleUxpc3RIZWFkAAAAAQkBAAAAEGdldFZvdGVzTGlzdE5hbWUAAAABBQAAAAVhc3NldAQAAAAScHJvY2Vzc1ZvdGVBY3Rpb25zCQEAAAALcHJvY2Vzc1ZvdGUAAAAFBQAAAAVhc3NldAUAAAARdXNlckFkZHJlc3NPclVuaXQFAAAAH2tleUxhdGVzdFByb2Nlc3NlZEFzc2V0VHJhbnNmZXIFAAAAHmtleUxhdGVzdFByb2Nlc3NlZFVzZXJUcmFuc2ZlcgUAAAAka2V5TGF0ZXN0UHJvY2Vzc2VkVXNlclJlbW92ZVRyYW5zZmVyCQAFFAAAAAIFAAAAEnByb2Nlc3NWb3RlQWN0aW9ucwYEAAAAFGxhdGVzdFByb2Nlc3NlZEFzc2V0CQEAAAAFdmFsdWUAAAABBQAAABpsYXRlc3RQcm9jZXNzZWRBc3NldE9yVW5pdAMJAAAAAAAAAgUAAAAZbGF0ZXN0UHJvY2Vzc2VkVXNlck9yVW5pdAUAAAAEdW5pdAQAAAALYXNzZXRPclVuaXQJAAQiAAAAAQkBAAAAC2tleUxpc3ROZXh0AAAAAgUAAAAOYXNzZXRzTGlzdE5hbWUFAAAAFGxhdGVzdFByb2Nlc3NlZEFzc2V0AwkAAAAAAAACBQAAAAthc3NldE9yVW5pdAUAAAAEdW5pdAUAAAAGZmluaXNoBAAAAAVhc3NldAkBAAAABXZhbHVlAAAAAQUAAAALYXNzZXRPclVuaXQEAAAAEXVzZXJBZGRyZXNzT3JVbml0CQAEIgAAAAEJAQAAAAtrZXlMaXN0SGVhZAAAAAEJAQAAABBnZXRWb3Rlc0xpc3ROYW1lAAAAAQUAAAAFYXNzZXQEAAAAEnByb2Nlc3NWb3RlQWN0aW9ucwkBAAAAC3Byb2Nlc3NWb3RlAAAABQUAAAAFYXNzZXQFAAAAEXVzZXJBZGRyZXNzT3JVbml0BQAAAB9rZXlMYXRlc3RQcm9jZXNzZWRBc3NldFRyYW5zZmVyBQAAAB5rZXlMYXRlc3RQcm9jZXNzZWRVc2VyVHJhbnNmZXIFAAAAJGtleUxhdGVzdFByb2Nlc3NlZFVzZXJSZW1vdmVUcmFuc2ZlcgkABRQAAAACBQAAABJwcm9jZXNzVm90ZUFjdGlvbnMGBAAAABNsYXRlc3RQcm9jZXNzZWRVc2VyCQEAAAAFdmFsdWUAAAABBQAAABlsYXRlc3RQcm9jZXNzZWRVc2VyT3JVbml0BAAAABF1c2VyQWRkcmVzc09yVW5pdAkABCIAAAABCQEAAAALa2V5TGlzdE5leHQAAAACCQEAAAAQZ2V0Vm90ZXNMaXN0TmFtZQAAAAEFAAAAFGxhdGVzdFByb2Nlc3NlZEFzc2V0BQAAABNsYXRlc3RQcm9jZXNzZWRVc2VyAwkAAAAAAAACBQAAABF1c2VyQWRkcmVzc09yVW5pdAUAAAARdXNlckFkZHJlc3NPclVuaXQEAAAAEHJlbW92ZUxhdGVzdFVzZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQgAAAAAQUAAAAka2V5TGF0ZXN0UHJvY2Vzc2VkVXNlclJlbW92ZVRyYW5zZmVyBwQAAAANZGVsZXRlVXNlckludgMFAAAAEHJlbW92ZUxhdGVzdFVzZXIJAAP8AAAABAUAAAAEdGhpcwIAAAAWZGVsZXRlVXNlck5vZGVJTlRFUk5BTAkABEwAAAACBQAAABRsYXRlc3RQcm9jZXNzZWRBc3NldAkABEwAAAACBQAAABNsYXRlc3RQcm9jZXNzZWRVc2VyCQAETAAAAAIFAAAAJGtleUxhdGVzdFByb2Nlc3NlZFVzZXJSZW1vdmVUcmFuc2ZlcgUAAAADbmlsBQAAAANuaWwFAAAABHVuaXQDCQAA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", "height": 1999665, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EAJt3EKZzx4oTr6F37o8xzStbqBViEGpFopUBHoPktU7 Next: 6s9MnprM9DZ6PBmvegTgSg3hM7P3zrUHwDaMM8kTj5NJ Diff:
OldNewDifferences
5151
5252 let t = makeString(["%s", "latestProcessedUser"], a)
5353
54-let u = makeString(["%s", "latestProcessedAssetTransfer"], a)
54+let u = makeString(["%s", "latestProcessedUserRemove"], a)
5555
56-let v = makeString(["%s", "latestProcessedUserTransfer"], a)
56+let v = makeString(["%s", "latestProcessedAssetTransfer"], a)
5757
58-let w = makeString(["%s", "maxDepth"], a)
58+let w = makeString(["%s", "latestProcessedUserTransfer"], a)
5959
60-func x (y) = makeString(["%s", "votesTransferFinished", toString(y)], a)
60+let x = makeString(["%s", "latestProcessedUserRemoveTransfer"], a)
61+
62+let y = makeString(["%s", "maxDepth"], a)
63+
64+func z (A) = makeString(["%s", "votesTransferFinished", toString(A)], a)
6165
6266
63-let z = "__assets"
67+let B = "__assets"
6468
65-func A (B) = ("%s__votes__" + B)
69+func C (D) = ("%s__votes__" + D)
6670
6771
68-func C (D) = makeString([("%s%s" + D), "head"], a)
72+func E (F) = makeString([("%s%s" + F), "head"], a)
6973
7074
71-func E (D) = makeString([("%s%s" + D), "size"], a)
75+func G (F) = makeString([("%s%s" + F), "size"], a)
7276
7377
74-func F (D,G) = makeString([("%s%s%s" + D), G, "prev"], a)
78+func H (F,I) = makeString([("%s%s%s" + F), I, "prev"], a)
7579
7680
77-func H (D,G) = makeString([("%s%s%s" + D), G, "next"], a)
81+func J (F,I) = makeString([("%s%s%s" + F), I, "next"], a)
7882
7983
80-func I (B,y) = makeString(["%s%d%s", "verifiedAt", toString(y), B], a)
84+func K (D,A) = makeString(["%s%d%s", "verifiedAt", toString(A), D], a)
8185
8286
83-func J (B) = makeString(["%s%s", "verified", B], a)
87+func L (D) = makeString(["%s%s", "verified", D], a)
8488
8589
86-func K (B,y) = makeString(["%s%s%d", "eliminated", B, toString(y)], a)
90+func M (D,A) = makeString(["%s%s%d", "eliminated", D, toString(A)], a)
8791
8892
89-func L (B,y) = makeString(["%s%d%s", "votingResultAtAsset", toString(y), B], a)
93+func N (D,A) = makeString(["%s%d%s", "votingResultAtAsset", toString(A), D], a)
9094
9195
92-func M (N,O,P) = makeString(["%d%d%s", toString(N), toString(O), toString(P)], a)
96+func O (P,Q,R) = makeString(["%d%d%s", toString(P), toString(Q), toString(R)], a)
9397
9498
95-func Q (R) = {
96- let S = split(R, a)
97- let T = 1
98- let U = 2
99- let V = 3
100- let N = parseIntValue(S[T])
101- let O = parseIntValue(S[U])
102- let P = if ((size(S) == 4))
103- then (S[V] == "true")
99+func S (T) = {
100+ let U = split(T, a)
101+ let V = 1
102+ let W = 2
103+ let X = 3
104+ let P = parseIntValue(U[V])
105+ let Q = parseIntValue(U[W])
106+ let R = if ((size(U) == 4))
107+ then (U[X] == "true")
104108 else false
105- $Tuple3(N, O, P)
109+ $Tuple3(P, Q, R)
106110 }
107111
108112
109-func W (X,B,y) = makeString(["%s%d%s%s", "vru", toString(y), B, X], a)
113+func Y (Z,D,A) = makeString(["%s%d%s%s", "vru", toString(A), D, Z], a)
110114
111115
112-func Y (Z,aa) = {
113- let N = if (aa)
114- then Z
116+func aa (ab,ac) = {
117+ let P = if (ac)
118+ then ab
115119 else 0
116- let O = if (aa)
120+ let Q = if (ac)
117121 then 0
118- else Z
119- makeString(["%d%d", toString(N), toString(O)], a)
122+ else ab
123+ makeString(["%d%d", toString(P), toString(Q)], a)
120124 }
121125
122126
123-func ab (R) = {
124- let S = split(R, a)
125- let T = 1
126- let U = 2
127- let N = parseIntValue(S[T])
128- let O = parseIntValue(S[U])
129- let aa = if ((N > 0))
130- then (O == 0)
127+func ad (T) = {
128+ let U = split(T, a)
129+ let V = 1
130+ let W = 2
131+ let P = parseIntValue(U[V])
132+ let Q = parseIntValue(U[W])
133+ let ac = if ((P > 0))
134+ then (Q == 0)
131135 else false
132- let ac = if ((N == 0))
133- then (O > 0)
136+ let ae = if ((P == 0))
137+ then (Q > 0)
134138 else false
135- let ad = if (if (aa)
139+ let af = if (if (ac)
136140 then true
137- else ac)
141+ else ae)
138142 then true
139143 else throw("Invalid user vote value")
140- if ((ad == ad))
144+ if ((af == af))
141145 then {
142- let Z = if (aa)
143- then N
144- else O
145- $Tuple2(Z, aa)
146+ let ab = if (ac)
147+ then P
148+ else Q
149+ $Tuple2(ab, ac)
146150 }
147151 else throw("Strict value is not equal to itself.")
148152 }
149153
150154
151-func ae (af,X,B,ag,y) = makeString(["%s%s%s%s%s%d", "history", af, B, X, ag, toString(y)], a)
155+func ag (ah,Z,D,ai,A) = makeString(["%s%s%s%s%s%d", "history", ah, D, Z, ai, toString(A)], a)
152156
153157
154-func ah (ai) = if ((ai.caller == this))
158+func aj (ak) = if ((ak.caller == this))
155159 then true
156160 else throw("Permission denied")
157161
158162
159-func aj (ak) = valueOrElse(getInteger(this, ak), 0)
163+func al (am) = valueOrElse(getInteger(this, am), 0)
160164
161165
162-func al (ak) = valueOrErrorMessage(getInteger(this, ak), (ak + " is not defined"))
166+func an (am) = valueOrErrorMessage(getInteger(this, am), (am + " is not defined"))
163167
164168
165-func am (ak) = valueOrElse(getString(this, ak), "")
169+func ao (am) = valueOrElse(getString(this, am), "")
166170
167171
168-func an (ak) = valueOrErrorMessage(getString(this, ak), (ak + " is not defined"))
172+func ap (am) = valueOrErrorMessage(getString(this, am), (am + " is not defined"))
169173
170174
171-let ao = al(i)
175+let aq = an(i)
172176
173-let ap = fromBase58String(an(j))
177+let ar = fromBase58String(ap(j))
174178
175-let aq = al(k)
179+let as = an(k)
176180
177-let ar = al(l)
181+let at = an(l)
178182
179-let as = al(m)
183+let au = an(m)
180184
181-let at = al(n)
185+let av = an(n)
182186
183-let au = al(o)
187+let aw = an(o)
184188
185-let av = addressFromStringValue(an(p))
189+let ax = addressFromStringValue(ap(p))
186190
187-let aw = addressFromStringValue(an(q))
191+let ay = addressFromStringValue(ap(q))
188192
189-let ax = addressFromStringValue(an(r))
193+let az = addressFromStringValue(ap(r))
190194
191-let ay = valueOrElse(getInteger(w), b)
195+let aA = valueOrElse(getInteger(y), b)
192196
193-let az = (at + ar)
197+let aB = (av + at)
194198
195-func aA (X,aB) = {
196- let aC = invoke(av, "getUserGwxAmountAtHeightREADONLY", [X, aB], nil)
197- c(aC)
199+func aC (Z,aD) = {
200+ let aE = invoke(ax, "getUserGwxAmountAtHeightREADONLY", [Z, aD], nil)
201+ c(aE)
198202 }
199203
200204
201-func aD (B,Z,aa,y,P) = {
202- let aE = L(B, y)
203- let aF = {
204- let e = getString(aE)
205+func aF (D,ab,ac,A,R) = {
206+ let aG = N(D, A)
207+ let aH = {
208+ let e = getString(aG)
205209 if ($isInstanceOf(e, "String"))
206210 then {
207- let aG = e
208- Q(aG)
211+ let aI = e
212+ S(aI)
209213 }
210214 else if ($isInstanceOf(e, "Unit"))
211215 then {
212- let aH = getString(L(B, (y - 1)))
213- if ($isInstanceOf(aH, "String"))
216+ let aJ = getString(N(D, (A - 1)))
217+ if ($isInstanceOf(aJ, "String"))
214218 then {
215- let aG = aH
216- $Tuple3(0, 0, Q(aG)._3)
219+ let aI = aJ
220+ $Tuple3(0, 0, S(aI)._3)
217221 }
218- else if ($isInstanceOf(aH, "Unit"))
222+ else if ($isInstanceOf(aJ, "Unit"))
219223 then $Tuple3(0, 0, false)
220224 else throw("Match error")
221225 }
222226 else throw("Match error")
223227 }
224- let aI = aF._1
225- let aJ = aF._2
226- let aK = aF._3
227- StringEntry(aE, M((aI + (if (aa)
228- then Z
229- else 0)), (aJ + (if (aa)
228+ let aK = aH._1
229+ let aL = aH._2
230+ let aM = aH._3
231+ StringEntry(aG, O((aK + (if (ac)
232+ then ab
233+ else 0)), (aL + (if (ac)
230234 then 0
231- else Z)), if ((P == unit))
232- then aK
233- else value(P)))
235+ else ab)), if ((R == unit))
236+ then aM
237+ else value(R)))
234238 }
235239
236240
237-func aL (D,G) = {
238- let aM = getString(this, C(D))
239- let aN = getString(this, F(D, G))
240- let aO = getString(this, H(D, G))
241- if (if ((G == aM))
241+func aN (F,I) = {
242+ let aO = getString(this, E(F))
243+ let aP = getString(this, H(F, I))
244+ let aQ = getString(this, J(F, I))
245+ if (if ((I == aO))
242246 then true
243- else (aN != unit))
247+ else (aP != unit))
244248 then true
245- else (aO != unit)
249+ else (aQ != unit)
246250 }
247251
248252
249-func aP (D,G) = {
250- let aM = getString(this, C(D))
251- let aQ = valueOrElse(getInteger(this, E(D)), 0)
252- let aR = if (!(aL(D, G)))
253+func aR (F,I) = {
254+ let aO = getString(this, E(F))
255+ let aS = valueOrElse(getInteger(this, G(F)), 0)
256+ let aT = if (!(aN(F, I)))
253257 then true
254258 else throw("Node exists")
255- if ((aR == aR))
256- then (([IntegerEntry(E(D), (aQ + 1))] ++ (if (isDefined(aM))
257- then [StringEntry(H(D, G), value(aM)), StringEntry(F(D, value(aM)), G)]
258- else nil)) ++ [StringEntry(C(D), G)])
259+ if ((aT == aT))
260+ then (([IntegerEntry(G(F), (aS + 1))] ++ (if (isDefined(aO))
261+ then [StringEntry(J(F, I), value(aO)), StringEntry(H(F, value(aO)), I)]
262+ else nil)) ++ [StringEntry(E(F), I)])
259263 else throw("Strict value is not equal to itself.")
260264 }
261265
262266
263-func aS (D,G) = {
264- let aM = getString(this, C(D))
265- let aQ = valueOrElse(getInteger(this, E(D)), 0)
266- let aN = getString(this, F(D, G))
267- let aO = getString(this, H(D, G))
268- ([IntegerEntry(E(D), (aQ - 1))] ++ (if (if (isDefined(aN))
269- then isDefined(aO)
267+func aU (F,I) = {
268+ let aO = getString(this, E(F))
269+ let aS = valueOrElse(getInteger(this, G(F)), 0)
270+ let aP = getString(this, H(F, I))
271+ let aQ = getString(this, J(F, I))
272+ ([IntegerEntry(G(F), (aS - 1))] ++ (if (if (isDefined(aP))
273+ then isDefined(aQ)
270274 else false)
271- then [StringEntry(H(D, value(aN)), value(aO)), StringEntry(F(D, value(aO)), value(aN)), DeleteEntry(F(D, G)), DeleteEntry(H(D, G))]
272- else if (isDefined(aO))
273- then [StringEntry(C(D), value(aO)), DeleteEntry(H(D, G)), DeleteEntry(F(D, value(aO)))]
274- else if (isDefined(aN))
275- then [DeleteEntry(F(D, G)), DeleteEntry(H(D, value(aN)))]
276- else if ((G == aM))
277- then [DeleteEntry(C(D))]
275+ then [StringEntry(J(F, value(aP)), value(aQ)), StringEntry(H(F, value(aQ)), value(aP)), DeleteEntry(H(F, I)), DeleteEntry(J(F, I))]
276+ else if (isDefined(aQ))
277+ then [StringEntry(E(F), value(aQ)), DeleteEntry(J(F, I)), DeleteEntry(H(F, value(aQ)))]
278+ else if (isDefined(aP))
279+ then [DeleteEntry(H(F, I)), DeleteEntry(J(F, value(aP)))]
280+ else if ((I == aO))
281+ then [DeleteEntry(E(F))]
278282 else throw("Invalid node")))
279283 }
280284
281285
282-func aT (B,aU,aV,aW) = {
283- let aX = StringEntry(aV, B)
284- let aY = DeleteEntry(aW)
285- if ((aU == unit))
286- then [aX, aY]
286+func aV (D,aW,aX,aY,aZ) = {
287+ let ba = StringEntry(aX, D)
288+ let bb = DeleteEntry(aY)
289+ if ((aW == unit))
290+ then [ba, bb]
287291 else {
288- let X = value(aU)
289- let aZ = StringEntry(aW, X)
290- let ba = W(X, B, au)
291- let bb = getString(ba)
292- let bc = aA(X, az)
293- let bd = if ((bc == 0))
292+ let Z = value(aW)
293+ let bc = StringEntry(aY, Z)
294+ let bd = Y(Z, D, aw)
295+ let be = getString(bd)
296+ let bf = if ((be == unit))
294297 then {
295- let be = A(B)
296- aS(be, X)
298+ let bg = aC(Z, aB)
299+ if ((bg == 0))
300+ then [BooleanEntry(aZ, true)]
301+ else {
302+ let bh = (aw - 1)
303+ let bi = valueOrElse(getBoolean(M(D, bh)), false)
304+ let bj = if (bi)
305+ then unit
306+ else getString(Y(Z, D, bh))
307+ if ((bj == unit))
308+ then nil
309+ else {
310+ let bk = ad(value(bj))
311+ let bl = bk._1
312+ let ac = bk._2
313+ let ab = min([bl, bg])
314+[StringEntry(bd, aa(ab, ac)), aF(D, ab, ac, aw, unit)]
315+ }
316+ }
297317 }
298- else if ((bb == unit))
299- then {
300- let bf = (au - 1)
301- let bg = valueOrElse(getBoolean(K(B, bf)), false)
302- let bh = if (bg)
303- then unit
304- else getString(W(X, B, bf))
305- if ((bh == unit))
306- then nil
307- else {
308- let bi = ab(value(bh))
309- let bj = bi._1
310- let aa = bi._2
311- let Z = min([bj, bc])
312-[StringEntry(ba, Y(Z, aa)), aD(B, Z, aa, au, unit)]
313- }
314- }
315- else nil
316- ((bd :+ aX) :+ aZ)
318+ else nil
319+ ((bf :+ ba) :+ bc)
317320 }
318321 }
319322
320323
321-func bk (B,y) = !(valueOrElse(getBoolean(I(B, y)), true))
324+func bm (D,A) = !(valueOrElse(getBoolean(K(D, A)), true))
322325
323326
324-func bl (B) = if (if (bk(B, (au - 1)))
325- then bk(B, (au - 2))
327+func bn (D) = if (if (bm(D, (aw - 1)))
328+ then bm(D, (aw - 2))
326329 else false)
327- then bk(B, (au - 3))
330+ then bm(D, (aw - 3))
328331 else false
329332
330333
331-@Callable(ai)
332-func constructor (bm,bn,bo,bp,bq,br,bs,bt,bu,bv) = {
333- let bw = [ah(ai), if (isDefined(addressFromString(bm)))
334+@Callable(ak)
335+func constructor (bo,bp,bq,br,bs,bt,bu,bv,bw,bx) = {
336+ let by = [aj(ak), if (isDefined(addressFromString(bo)))
334337 then true
335- else throw("Invalid boosting contract address"), if (isDefined(addressFromString(bn)))
338+ else throw("Invalid boosting contract address"), if (isDefined(addressFromString(bp)))
336339 then true
337- else throw("Invalid emission contract address"), if (isDefined(addressFromString(bo)))
340+ else throw("Invalid emission contract address"), if (isDefined(addressFromString(bq)))
338341 then true
339- else throw("Invalid asset_store contract address"), if ((bp >= 0))
342+ else throw("Invalid asset_store contract address"), if ((br >= 0))
340343 then true
341- else throw("Invalid fee amount"), if (isDefined(assetInfo(fromBase58String(bq))))
344+ else throw("Invalid fee amount"), if (isDefined(assetInfo(fromBase58String(bs))))
342345 then true
343- else throw("Invalid WX asset ID"), if ((br >= 0))
346+ else throw("Invalid WX asset ID"), if ((bt >= 0))
344347 then true
345- else throw("Invalid voting threshold"), if ((bs > 0))
348+ else throw("Invalid voting threshold"), if ((bu > 0))
346349 then true
347- else throw("Invalid voting duration"), if (((bu + bs) > height))
350+ else throw("Invalid voting duration"), if (((bw + bu) > height))
348351 then true
349352 else throw("Invalid start height")]
350- if ((bw == bw))
351- then $Tuple2([StringEntry(p, bm), StringEntry(q, bn), StringEntry(r, bo), IntegerEntry(i, bp), StringEntry(j, bq), IntegerEntry(k, br), IntegerEntry(l, bs), IntegerEntry(m, bt), IntegerEntry(n, bu), IntegerEntry(o, 0), IntegerEntry(w, bv)], unit)
353+ if ((by == by))
354+ then $Tuple2([StringEntry(p, bo), StringEntry(q, bp), StringEntry(r, bq), IntegerEntry(i, br), StringEntry(j, bs), IntegerEntry(k, bt), IntegerEntry(l, bu), IntegerEntry(m, bv), IntegerEntry(n, bw), IntegerEntry(o, 0), IntegerEntry(y, bx)], unit)
352355 else throw("Strict value is not equal to itself.")
353356 }
354357
355358
356359
357-@Callable(ai)
358-func suggest (B,bx) = {
359- let by = valueOrErrorMessage(assetInfo(fromBase58String(B)), "Invalid asset ID")
360- let bz = value(ai.payments[0])
361- let bw = [if ((by.issuer == ai.caller))
360+@Callable(ak)
361+func suggest (D,bz) = {
362+ let bA = valueOrErrorMessage(assetInfo(fromBase58String(D)), "Invalid asset ID")
363+ let bB = value(ak.payments[0])
364+ let by = [if ((bA.issuer == ak.caller))
362365 then true
363- else throw("Asset can only be suggested by its issuer"), if ((value(bz.assetId) == ap))
366+ else throw("Asset can only be suggested by its issuer"), if ((value(bB.assetId) == ar))
364367 then true
365- else throw("Invalid fee asset"), if ((bz.amount == ao))
368+ else throw("Invalid fee asset"), if ((bB.amount == aq))
366369 then true
367370 else throw("Invalid fee amount")]
368- if ((bw == bw))
371+ if ((by == by))
369372 then {
370- let bA = invoke(ax, "createOrUpdate", [B, "", bx, false], nil)
371- if ((bA == bA))
373+ let bC = invoke(az, "createOrUpdate", [D, "", bz, false], nil)
374+ if ((bC == bC))
372375 then {
373- let bB = invoke(aw, "burn", nil, [AttachedPayment(bz.assetId, bz.amount)])
374- if ((bB == bB))
376+ let bD = invoke(ay, "burn", nil, [AttachedPayment(bB.assetId, bB.amount)])
377+ if ((bD == bD))
375378 then {
376- let bC = aP(z, B)
377- let bD = (au + 1)
378- let bE = if ((az > height))
379- then au
380- else bD
381- $Tuple2((bC :+ aD(B, 0, true, bE, false)), unit)
379+ let bE = aR(B, D)
380+ let bF = (aw + 1)
381+ let bG = if ((aB > height))
382+ then aw
383+ else bF
384+ $Tuple2((bE :+ aF(D, 0, true, bG, false)), unit)
382385 }
383386 else throw("Strict value is not equal to itself.")
384387 }
389392
390393
391394
392-@Callable(ai)
393-func vote (B,aa) = {
394- let bF = if (aL(z, B))
395+@Callable(ak)
396+func vote (D,ac) = {
397+ let bH = if (aN(B, D))
395398 then true
396399 else throw("Invalid asset")
397- if ((bF == bF))
400+ if ((bH == bH))
398401 then {
399- let bG = if ((az > height))
402+ let bI = if ((aB > height))
400403 then true
401404 else throw("Current voting is over but results are not finalized")
402- if ((bG == bG))
405+ if ((bI == bI))
403406 then {
404- let X = toString(ai.caller)
405- let bH = aA(X, az)
406- let bI = if ((bH > 0))
407+ let Z = toString(ak.caller)
408+ let bJ = aC(Z, aB)
409+ let bK = if ((bJ > 0))
407410 then true
408411 else throw("You'll not have gWX at the end of voting")
409- if ((bI == bI))
412+ if ((bK == bK))
410413 then {
411- let be = A(B)
412- let ba = W(X, B, au)
413- let bb = getString(ba)
414- let bJ = if ((bb == unit))
414+ let bL = C(D)
415+ let bd = Y(Z, D, aw)
416+ let be = getString(bd)
417+ let bM = if ((be == unit))
415418 then unit
416- else invoke(this, "cancelVote", [B], nil)
417- if ((bJ == bJ))
419+ else invoke(this, "cancelVote", [D], nil)
420+ if ((bM == bM))
418421 then {
419- let bK = [StringEntry(ba, Y(bH, aa)), StringEntry(ae("vote", X, B, toBase58String(ai.transactionId), au), Y(bH, aa)), aD(B, bH, aa, au, unit)]
420- let bL = if (aL(be, X))
422+ let bN = [StringEntry(bd, aa(bJ, ac)), StringEntry(ag("vote", Z, D, toBase58String(ak.transactionId), aw), aa(bJ, ac)), aF(D, bJ, ac, aw, unit)]
423+ let bO = if (aN(bL, Z))
421424 then nil
422- else aP(be, X)
423- $Tuple2((bL ++ bK), unit)
425+ else aR(bL, Z)
426+ $Tuple2((bO ++ bN), unit)
424427 }
425428 else throw("Strict value is not equal to itself.")
426429 }
433436
434437
435438
436-@Callable(ai)
437-func cancelVote (B) = {
438- let X = if ((ai.caller == this))
439- then toString(ai.originCaller)
440- else toString(ai.caller)
441- let be = A(B)
442- let ba = W(X, B, au)
443- let bb = getString(ba)
444- let bM = valueOrElse(getString(ba), "Nothing to cancel")
445- if ((bM == bM))
439+@Callable(ak)
440+func cancelVote (D) = {
441+ let Z = if ((ak.caller == this))
442+ then toString(ak.originCaller)
443+ else toString(ak.caller)
444+ let bL = C(D)
445+ let bd = Y(Z, D, aw)
446+ let be = getString(bd)
447+ let bP = valueOrElse(getString(bd), "Nothing to cancel")
448+ if ((bP == bP))
446449 then {
447- let bN = ab(value(bb))
448- let Z = bN._1
449- let aa = bN._2
450- let bL = aS(be, X)
451- let bK = [DeleteEntry(ba), StringEntry(ae("cancelVote", X, B, toBase58String(ai.transactionId), au), Y(0, true)), aD(B, -(Z), aa, au, unit)]
452- $Tuple2((bL ++ bK), unit)
450+ let bQ = ad(value(be))
451+ let ab = bQ._1
452+ let ac = bQ._2
453+ let bO = aU(bL, Z)
454+ let bN = [DeleteEntry(bd), StringEntry(ag("cancelVote", Z, D, toBase58String(ak.transactionId), aw), aa(0, true)), aF(D, -(ab), ac, aw, unit)]
455+ $Tuple2((bO ++ bN), unit)
453456 }
454457 else throw("Strict value is not equal to itself.")
455458 }
456459
457460
458461
459-@Callable(ai)
460-func finalizeAssetINTERNAL (B,y) = {
461- let bO = ah(ai)
462- if ((bO == bO))
462+@Callable(ak)
463+func finalizeAssetINTERNAL (D,A) = {
464+ let bR = aj(ak)
465+ if ((bR == bR))
463466 then {
464- let aE = L(B, y)
465- let bP = {
466- let e = getString(aE)
467+ let aG = N(D, A)
468+ let bS = {
469+ let e = getString(aG)
467470 if ($isInstanceOf(e, "String"))
468471 then {
469- let aG = e
470- let bQ = Q(aG)
471- $Tuple2(bQ._1, bQ._2)
472+ let aI = e
473+ let bT = S(aI)
474+ $Tuple2(bT._1, bT._2)
472475 }
473476 else if ($isInstanceOf(e, "Unit"))
474477 then $Tuple2(0, 0)
475478 else throw("Match error")
476479 }
477- let N = bP._1
478- let O = bP._2
479- let Z = (N + O)
480- let P = if ((Z >= aq))
481- then (N > O)
480+ let P = bS._1
481+ let Q = bS._2
482+ let ab = (P + Q)
483+ let R = if ((ab >= as))
484+ then (P > Q)
482485 else false
483- let bR = [BooleanEntry(I(B, y), P), if (P)
484- then BooleanEntry(J(B), true)
485- else DeleteEntry(J(B))]
486- let bS = invoke(ax, "setVerified", [B, P], nil)
487- if ((bS == bS))
486+ let bU = [BooleanEntry(K(D, A), R), if (R)
487+ then BooleanEntry(L(D), true)
488+ else DeleteEntry(L(D))]
489+ let bV = invoke(az, "setVerified", [D, R], nil)
490+ if ((bV == bV))
488491 then {
489- let bT = if (P)
492+ let bW = if (R)
490493 then false
491- else bl(B)
492- let bU = if (bT)
493- then [BooleanEntry(K(B, au), true)]
494+ else bn(D)
495+ let bX = if (bW)
496+ then [BooleanEntry(M(D, aw), true)]
494497 else nil
495- let bV = if (bT)
498+ let bY = if (bW)
496499 then nil
497- else [aD(B, 0, true, (au + 1), P)]
498- let bL = if (bT)
499- then aS(z, B)
500+ else [aF(D, 0, true, (aw + 1), R)]
501+ let bO = if (bW)
502+ then aU(B, D)
500503 else nil
501- $Tuple2(((bL ++ bV) ++ bR), unit)
504+ $Tuple2(((bO ++ bY) ++ bU), unit)
502505 }
503506 else throw("Strict value is not equal to itself.")
504507 }
507510
508511
509512
510-@Callable(ai)
511-func finalizeVotingHelper () = if ((az > height))
513+@Callable(ak)
514+func deleteUserNodeINTERNAL (D,Z,aZ) = {
515+ let bR = aj(ak)
516+ if ((bR == bR))
517+ then $Tuple2((aU(C(D), Z) :+ DeleteEntry(aZ)), unit)
518+ else throw("Strict value is not equal to itself.")
519+ }
520+
521+
522+
523+@Callable(ak)
524+func finalizeVotingHelper () = if ((aB > height))
512525 then $Tuple2(nil, false)
513526 else {
514- let bW = getString(s)
515- let bX = getString(t)
516- let bY = 0
517- let bZ = $Tuple2([IntegerEntry(n, (height + bY)), IntegerEntry(o, (au + 1)), DeleteEntry(s), DeleteEntry(t), DeleteEntry(u), DeleteEntry(v)], true)
518- if ((bW == unit))
527+ let bZ = getString(s)
528+ let ca = getString(t)
529+ let cb = 0
530+ let cc = $Tuple2([IntegerEntry(n, (height + cb)), IntegerEntry(o, (aw + 1)), DeleteEntry(s), DeleteEntry(t), DeleteEntry(v), DeleteEntry(w)], true)
531+ if ((bZ == unit))
519532 then {
520- let ca = getString(C(z))
521- if ((ca == unit))
522- then bZ
533+ let cd = getString(E(B))
534+ if ((cd == unit))
535+ then cc
523536 else {
524- let cb = value(ca)
525- let aU = getString(C(A(cb)))
526- let cc = aT(cb, aU, s, t)
527- $Tuple2(cc, true)
537+ let ce = value(cd)
538+ let aW = getString(E(C(ce)))
539+ let cf = aV(ce, aW, s, t, u)
540+ $Tuple2(cf, true)
528541 }
529542 }
530543 else {
531- let cd = value(bW)
532- if ((bX == unit))
544+ let cg = value(bZ)
545+ if ((ca == unit))
533546 then {
534- let ce = getString(H(z, cd))
535- if ((ce == ce))
547+ let ch = getString(J(B, cg))
548+ if ((ch == ch))
536549 then {
537- let cf = invoke(this, "finalizeAssetINTERNAL", [cd, au], nil)
538- if ((cf == cf))
539- then if ((ce == unit))
540- then bZ
550+ let ci = invoke(this, "finalizeAssetINTERNAL", [cg, aw], nil)
551+ if ((ci == ci))
552+ then if ((ch == unit))
553+ then cc
541554 else {
542- let cb = value(ce)
543- let aU = getString(C(A(cb)))
544- let cc = aT(cb, aU, s, t)
545- $Tuple2(cc, true)
555+ let ce = value(ch)
556+ let aW = getString(E(C(ce)))
557+ let cf = aV(ce, aW, s, t, u)
558+ $Tuple2(cf, true)
546559 }
547560 else throw("Strict value is not equal to itself.")
548561 }
549562 else throw("Strict value is not equal to itself.")
550563 }
551564 else {
552- let cg = value(bX)
553- let aU = getString(H(A(cd), cg))
554- let cc = aT(cd, aU, s, t)
555- $Tuple2(cc, true)
565+ let cj = value(ca)
566+ let aW = getString(J(C(cg), cj))
567+ if ((aW == aW))
568+ then {
569+ let ck = valueOrElse(getBoolean(u), false)
570+ let cl = if (ck)
571+ then invoke(this, "deleteUserNodeINTERNAL", [cg, cj, u], nil)
572+ else unit
573+ if ((cl == cl))
574+ then {
575+ let cf = aV(cg, aW, s, t, u)
576+ $Tuple2(cf, true)
577+ }
578+ else throw("Strict value is not equal to itself.")
579+ }
580+ else throw("Strict value is not equal to itself.")
556581 }
557582 }
558583 }
559584
560585
561586
562-@Callable(ai)
563-func finalizeVotingWrapper (ch) = {
564- let ci = g(invoke(this, "finalizeVotingHelper", nil, nil))
565- if ((ci == ci))
566- then if (!(ci))
567- then if ((ch == 0))
587+@Callable(ak)
588+func finalizeVotingWrapper (cm) = {
589+ let cn = g(invoke(this, "finalizeVotingHelper", nil, nil))
590+ if ((cn == cn))
591+ then if (!(cn))
592+ then if ((cm == 0))
568593 then throw("Current voting is not over yet")
569594 else $Tuple2(nil, unit)
570- else if ((ay > ch))
595+ else if ((aA > cm))
571596 then {
572- let cj = invoke(this, "finalizeVotingWrapper", [(ch + 1)], nil)
573- if ((cj == cj))
597+ let co = invoke(this, "finalizeVotingWrapper", [(cm + 1)], nil)
598+ if ((co == co))
574599 then $Tuple2(nil, unit)
575600 else throw("Strict value is not equal to itself.")
576601 }
580605
581606
582607
583-@Callable(ai)
608+@Callable(ak)
584609 func finalizeVoting () = {
585- let cj = invoke(this, "finalizeVotingWrapper", [0], nil)
586- if ((cj == cj))
610+ let co = invoke(this, "finalizeVotingWrapper", [0], nil)
611+ if ((co == co))
587612 then $Tuple2(nil, unit)
588613 else throw("Strict value is not equal to itself.")
589614 }
590615
591616
592617
593-@Callable(ai)
618+@Callable(ak)
594619 func transferVotesHelper () = {
595- let ck = x(au)
596- let cl = valueOrElse(getBoolean(ck), false)
597- if (if (if ((at > height))
620+ let cp = z(aw)
621+ let cq = valueOrElse(getBoolean(cp), false)
622+ if (if (if ((av > height))
598623 then true
599- else (height >= az))
624+ else (height >= aB))
600625 then true
601- else cl)
626+ else cq)
602627 then $Tuple2(nil, false)
603628 else {
604- let bW = getString(u)
605- let bX = getString(v)
606- let bZ = $Tuple2([BooleanEntry(ck, true), DeleteEntry(u), DeleteEntry(v)], true)
607- if ((bW == unit))
629+ let bZ = getString(v)
630+ let ca = getString(w)
631+ let cc = $Tuple2([BooleanEntry(cp, true), DeleteEntry(v), DeleteEntry(w)], true)
632+ if ((bZ == unit))
608633 then {
609- let ca = getString(C(z))
610- if ((ca == unit))
611- then bZ
634+ let cd = getString(E(B))
635+ if ((cd == unit))
636+ then cc
612637 else {
613- let cb = value(ca)
614- let aU = getString(C(A(cb)))
615- let cc = aT(cb, aU, u, v)
616- $Tuple2(cc, true)
638+ let ce = value(cd)
639+ let aW = getString(E(C(ce)))
640+ let cf = aV(ce, aW, v, w, x)
641+ $Tuple2(cf, true)
617642 }
618643 }
619644 else {
620- let cd = value(bW)
621- if ((bX == unit))
645+ let cg = value(bZ)
646+ if ((ca == unit))
622647 then {
623- let ce = getString(H(z, cd))
624- if ((ce == unit))
625- then bZ
648+ let ch = getString(J(B, cg))
649+ if ((ch == unit))
650+ then cc
626651 else {
627- let cb = value(ce)
628- let aU = getString(C(A(cb)))
629- let cc = aT(cb, aU, u, v)
630- $Tuple2(cc, true)
652+ let ce = value(ch)
653+ let aW = getString(E(C(ce)))
654+ let cf = aV(ce, aW, v, w, x)
655+ $Tuple2(cf, true)
631656 }
632657 }
633658 else {
634- let cg = value(bX)
635- let aU = getString(H(A(cd), cg))
636- let cc = aT(cd, aU, u, v)
637- $Tuple2(cc, true)
659+ let cj = value(ca)
660+ let aW = getString(J(C(cg), cj))
661+ if ((aW == aW))
662+ then {
663+ let ck = valueOrElse(getBoolean(x), false)
664+ let cl = if (ck)
665+ then invoke(this, "deleteUserNodeINTERNAL", [cg, cj, x], nil)
666+ else unit
667+ if ((cl == cl))
668+ then {
669+ let cf = aV(cg, aW, v, w, x)
670+ $Tuple2(cf, true)
671+ }
672+ else throw("Strict value is not equal to itself.")
673+ }
674+ else throw("Strict value is not equal to itself.")
638675 }
639676 }
640677 }
642679
643680
644681
645-@Callable(ai)
646-func transferVotesWrapper (ch) = {
647- let ci = g(invoke(this, "transferVotesHelper", nil, nil))
648- if ((ci == ci))
649- then if (!(ci))
650- then if ((ch == 0))
682+@Callable(ak)
683+func transferVotesWrapper (cm) = {
684+ let cn = g(invoke(this, "transferVotesHelper", nil, nil))
685+ if ((cn == cn))
686+ then if (!(cn))
687+ then if ((cm == 0))
651688 then throw("Voting is not started yet")
652689 else $Tuple2(nil, unit)
653- else if ((ay > ch))
690+ else if ((aA > cm))
654691 then {
655- let cj = invoke(this, "transferVotesWrapper", [(ch + 1)], nil)
656- if ((cj == cj))
692+ let co = invoke(this, "transferVotesWrapper", [(cm + 1)], nil)
693+ if ((co == co))
657694 then $Tuple2(nil, unit)
658695 else throw("Strict value is not equal to itself.")
659696 }
663700
664701
665702
666-@Callable(ai)
703+@Callable(ak)
667704 func transferVotes () = {
668- let cj = invoke(this, "transferVotesWrapper", [0], nil)
669- if ((cj == cj))
705+ let co = invoke(this, "transferVotesWrapper", [0], nil)
706+ if ((co == co))
670707 then $Tuple2(nil, unit)
671708 else throw("Strict value is not equal to itself.")
672709 }
673710
674711
675712
676-@Callable(ai)
677-func setVotingThreshold (cm) = {
678- let bO = ah(ai)
679- if ((bO == bO))
680- then $Tuple2([IntegerEntry(k, cm)], unit)
713+@Callable(ak)
714+func setVotingThreshold (cr) = {
715+ let bR = aj(ak)
716+ if ((bR == bR))
717+ then $Tuple2([IntegerEntry(k, cr)], unit)
681718 else throw("Strict value is not equal to itself.")
682719 }
683720
684721
685722
686-@Callable(ai)
687-func setFee (cn) = {
688- let bO = ah(ai)
689- if ((bO == bO))
690- then $Tuple2([IntegerEntry(i, cn)], unit)
723+@Callable(ak)
724+func setFee (cs) = {
725+ let bR = aj(ak)
726+ if ((bR == bR))
727+ then $Tuple2([IntegerEntry(i, cs)], unit)
691728 else throw("Strict value is not equal to itself.")
692729 }
693730
694731
695732
696-@Callable(ai)
697-func gwxAvailableForVoteREADONLY (X) = {
698- let bH = aA(X, az)
699- $Tuple2(nil, bH)
733+@Callable(ak)
734+func gwxAvailableForVoteREADONLY (Z) = {
735+ let bJ = aC(Z, aB)
736+ $Tuple2(nil, bJ)
700737 }
701738
702739
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 10
77
88 func c (d) = {
99 let e = d
1010 if ($isInstanceOf(e, "Int"))
1111 then {
1212 let f = e
1313 f
1414 }
1515 else throw("Failed to cast into Integer")
1616 }
1717
1818
1919 func g (d) = {
2020 let e = d
2121 if ($isInstanceOf(e, "Boolean"))
2222 then {
2323 let h = e
2424 h
2525 }
2626 else throw("Failed to cast into Boolean")
2727 }
2828
2929
3030 let i = makeString(["%s", "fee"], a)
3131
3232 let j = makeString(["%s", "wxAssetId"], a)
3333
3434 let k = makeString(["%s", "votingThreshold"], a)
3535
3636 let l = makeString(["%s", "epochLength"], a)
3737
3838 let m = makeString(["%s", "voteBeforeElimination"], a)
3939
4040 let n = makeString(["%s", "currentVotingHeightStart"], a)
4141
4242 let o = makeString(["%s", "currentEpoch"], a)
4343
4444 let p = makeString(["%s", "boostingContract"], a)
4545
4646 let q = makeString(["%s", "emissionContract"], a)
4747
4848 let r = makeString(["%s", "assetsStoreContract"], a)
4949
5050 let s = makeString(["%s", "latestProcessedAsset"], a)
5151
5252 let t = makeString(["%s", "latestProcessedUser"], a)
5353
54-let u = makeString(["%s", "latestProcessedAssetTransfer"], a)
54+let u = makeString(["%s", "latestProcessedUserRemove"], a)
5555
56-let v = makeString(["%s", "latestProcessedUserTransfer"], a)
56+let v = makeString(["%s", "latestProcessedAssetTransfer"], a)
5757
58-let w = makeString(["%s", "maxDepth"], a)
58+let w = makeString(["%s", "latestProcessedUserTransfer"], a)
5959
60-func x (y) = makeString(["%s", "votesTransferFinished", toString(y)], a)
60+let x = makeString(["%s", "latestProcessedUserRemoveTransfer"], a)
61+
62+let y = makeString(["%s", "maxDepth"], a)
63+
64+func z (A) = makeString(["%s", "votesTransferFinished", toString(A)], a)
6165
6266
63-let z = "__assets"
67+let B = "__assets"
6468
65-func A (B) = ("%s__votes__" + B)
69+func C (D) = ("%s__votes__" + D)
6670
6771
68-func C (D) = makeString([("%s%s" + D), "head"], a)
72+func E (F) = makeString([("%s%s" + F), "head"], a)
6973
7074
71-func E (D) = makeString([("%s%s" + D), "size"], a)
75+func G (F) = makeString([("%s%s" + F), "size"], a)
7276
7377
74-func F (D,G) = makeString([("%s%s%s" + D), G, "prev"], a)
78+func H (F,I) = makeString([("%s%s%s" + F), I, "prev"], a)
7579
7680
77-func H (D,G) = makeString([("%s%s%s" + D), G, "next"], a)
81+func J (F,I) = makeString([("%s%s%s" + F), I, "next"], a)
7882
7983
80-func I (B,y) = makeString(["%s%d%s", "verifiedAt", toString(y), B], a)
84+func K (D,A) = makeString(["%s%d%s", "verifiedAt", toString(A), D], a)
8185
8286
83-func J (B) = makeString(["%s%s", "verified", B], a)
87+func L (D) = makeString(["%s%s", "verified", D], a)
8488
8589
86-func K (B,y) = makeString(["%s%s%d", "eliminated", B, toString(y)], a)
90+func M (D,A) = makeString(["%s%s%d", "eliminated", D, toString(A)], a)
8791
8892
89-func L (B,y) = makeString(["%s%d%s", "votingResultAtAsset", toString(y), B], a)
93+func N (D,A) = makeString(["%s%d%s", "votingResultAtAsset", toString(A), D], a)
9094
9195
92-func M (N,O,P) = makeString(["%d%d%s", toString(N), toString(O), toString(P)], a)
96+func O (P,Q,R) = makeString(["%d%d%s", toString(P), toString(Q), toString(R)], a)
9397
9498
95-func Q (R) = {
96- let S = split(R, a)
97- let T = 1
98- let U = 2
99- let V = 3
100- let N = parseIntValue(S[T])
101- let O = parseIntValue(S[U])
102- let P = if ((size(S) == 4))
103- then (S[V] == "true")
99+func S (T) = {
100+ let U = split(T, a)
101+ let V = 1
102+ let W = 2
103+ let X = 3
104+ let P = parseIntValue(U[V])
105+ let Q = parseIntValue(U[W])
106+ let R = if ((size(U) == 4))
107+ then (U[X] == "true")
104108 else false
105- $Tuple3(N, O, P)
109+ $Tuple3(P, Q, R)
106110 }
107111
108112
109-func W (X,B,y) = makeString(["%s%d%s%s", "vru", toString(y), B, X], a)
113+func Y (Z,D,A) = makeString(["%s%d%s%s", "vru", toString(A), D, Z], a)
110114
111115
112-func Y (Z,aa) = {
113- let N = if (aa)
114- then Z
116+func aa (ab,ac) = {
117+ let P = if (ac)
118+ then ab
115119 else 0
116- let O = if (aa)
120+ let Q = if (ac)
117121 then 0
118- else Z
119- makeString(["%d%d", toString(N), toString(O)], a)
122+ else ab
123+ makeString(["%d%d", toString(P), toString(Q)], a)
120124 }
121125
122126
123-func ab (R) = {
124- let S = split(R, a)
125- let T = 1
126- let U = 2
127- let N = parseIntValue(S[T])
128- let O = parseIntValue(S[U])
129- let aa = if ((N > 0))
130- then (O == 0)
127+func ad (T) = {
128+ let U = split(T, a)
129+ let V = 1
130+ let W = 2
131+ let P = parseIntValue(U[V])
132+ let Q = parseIntValue(U[W])
133+ let ac = if ((P > 0))
134+ then (Q == 0)
131135 else false
132- let ac = if ((N == 0))
133- then (O > 0)
136+ let ae = if ((P == 0))
137+ then (Q > 0)
134138 else false
135- let ad = if (if (aa)
139+ let af = if (if (ac)
136140 then true
137- else ac)
141+ else ae)
138142 then true
139143 else throw("Invalid user vote value")
140- if ((ad == ad))
144+ if ((af == af))
141145 then {
142- let Z = if (aa)
143- then N
144- else O
145- $Tuple2(Z, aa)
146+ let ab = if (ac)
147+ then P
148+ else Q
149+ $Tuple2(ab, ac)
146150 }
147151 else throw("Strict value is not equal to itself.")
148152 }
149153
150154
151-func ae (af,X,B,ag,y) = makeString(["%s%s%s%s%s%d", "history", af, B, X, ag, toString(y)], a)
155+func ag (ah,Z,D,ai,A) = makeString(["%s%s%s%s%s%d", "history", ah, D, Z, ai, toString(A)], a)
152156
153157
154-func ah (ai) = if ((ai.caller == this))
158+func aj (ak) = if ((ak.caller == this))
155159 then true
156160 else throw("Permission denied")
157161
158162
159-func aj (ak) = valueOrElse(getInteger(this, ak), 0)
163+func al (am) = valueOrElse(getInteger(this, am), 0)
160164
161165
162-func al (ak) = valueOrErrorMessage(getInteger(this, ak), (ak + " is not defined"))
166+func an (am) = valueOrErrorMessage(getInteger(this, am), (am + " is not defined"))
163167
164168
165-func am (ak) = valueOrElse(getString(this, ak), "")
169+func ao (am) = valueOrElse(getString(this, am), "")
166170
167171
168-func an (ak) = valueOrErrorMessage(getString(this, ak), (ak + " is not defined"))
172+func ap (am) = valueOrErrorMessage(getString(this, am), (am + " is not defined"))
169173
170174
171-let ao = al(i)
175+let aq = an(i)
172176
173-let ap = fromBase58String(an(j))
177+let ar = fromBase58String(ap(j))
174178
175-let aq = al(k)
179+let as = an(k)
176180
177-let ar = al(l)
181+let at = an(l)
178182
179-let as = al(m)
183+let au = an(m)
180184
181-let at = al(n)
185+let av = an(n)
182186
183-let au = al(o)
187+let aw = an(o)
184188
185-let av = addressFromStringValue(an(p))
189+let ax = addressFromStringValue(ap(p))
186190
187-let aw = addressFromStringValue(an(q))
191+let ay = addressFromStringValue(ap(q))
188192
189-let ax = addressFromStringValue(an(r))
193+let az = addressFromStringValue(ap(r))
190194
191-let ay = valueOrElse(getInteger(w), b)
195+let aA = valueOrElse(getInteger(y), b)
192196
193-let az = (at + ar)
197+let aB = (av + at)
194198
195-func aA (X,aB) = {
196- let aC = invoke(av, "getUserGwxAmountAtHeightREADONLY", [X, aB], nil)
197- c(aC)
199+func aC (Z,aD) = {
200+ let aE = invoke(ax, "getUserGwxAmountAtHeightREADONLY", [Z, aD], nil)
201+ c(aE)
198202 }
199203
200204
201-func aD (B,Z,aa,y,P) = {
202- let aE = L(B, y)
203- let aF = {
204- let e = getString(aE)
205+func aF (D,ab,ac,A,R) = {
206+ let aG = N(D, A)
207+ let aH = {
208+ let e = getString(aG)
205209 if ($isInstanceOf(e, "String"))
206210 then {
207- let aG = e
208- Q(aG)
211+ let aI = e
212+ S(aI)
209213 }
210214 else if ($isInstanceOf(e, "Unit"))
211215 then {
212- let aH = getString(L(B, (y - 1)))
213- if ($isInstanceOf(aH, "String"))
216+ let aJ = getString(N(D, (A - 1)))
217+ if ($isInstanceOf(aJ, "String"))
214218 then {
215- let aG = aH
216- $Tuple3(0, 0, Q(aG)._3)
219+ let aI = aJ
220+ $Tuple3(0, 0, S(aI)._3)
217221 }
218- else if ($isInstanceOf(aH, "Unit"))
222+ else if ($isInstanceOf(aJ, "Unit"))
219223 then $Tuple3(0, 0, false)
220224 else throw("Match error")
221225 }
222226 else throw("Match error")
223227 }
224- let aI = aF._1
225- let aJ = aF._2
226- let aK = aF._3
227- StringEntry(aE, M((aI + (if (aa)
228- then Z
229- else 0)), (aJ + (if (aa)
228+ let aK = aH._1
229+ let aL = aH._2
230+ let aM = aH._3
231+ StringEntry(aG, O((aK + (if (ac)
232+ then ab
233+ else 0)), (aL + (if (ac)
230234 then 0
231- else Z)), if ((P == unit))
232- then aK
233- else value(P)))
235+ else ab)), if ((R == unit))
236+ then aM
237+ else value(R)))
234238 }
235239
236240
237-func aL (D,G) = {
238- let aM = getString(this, C(D))
239- let aN = getString(this, F(D, G))
240- let aO = getString(this, H(D, G))
241- if (if ((G == aM))
241+func aN (F,I) = {
242+ let aO = getString(this, E(F))
243+ let aP = getString(this, H(F, I))
244+ let aQ = getString(this, J(F, I))
245+ if (if ((I == aO))
242246 then true
243- else (aN != unit))
247+ else (aP != unit))
244248 then true
245- else (aO != unit)
249+ else (aQ != unit)
246250 }
247251
248252
249-func aP (D,G) = {
250- let aM = getString(this, C(D))
251- let aQ = valueOrElse(getInteger(this, E(D)), 0)
252- let aR = if (!(aL(D, G)))
253+func aR (F,I) = {
254+ let aO = getString(this, E(F))
255+ let aS = valueOrElse(getInteger(this, G(F)), 0)
256+ let aT = if (!(aN(F, I)))
253257 then true
254258 else throw("Node exists")
255- if ((aR == aR))
256- then (([IntegerEntry(E(D), (aQ + 1))] ++ (if (isDefined(aM))
257- then [StringEntry(H(D, G), value(aM)), StringEntry(F(D, value(aM)), G)]
258- else nil)) ++ [StringEntry(C(D), G)])
259+ if ((aT == aT))
260+ then (([IntegerEntry(G(F), (aS + 1))] ++ (if (isDefined(aO))
261+ then [StringEntry(J(F, I), value(aO)), StringEntry(H(F, value(aO)), I)]
262+ else nil)) ++ [StringEntry(E(F), I)])
259263 else throw("Strict value is not equal to itself.")
260264 }
261265
262266
263-func aS (D,G) = {
264- let aM = getString(this, C(D))
265- let aQ = valueOrElse(getInteger(this, E(D)), 0)
266- let aN = getString(this, F(D, G))
267- let aO = getString(this, H(D, G))
268- ([IntegerEntry(E(D), (aQ - 1))] ++ (if (if (isDefined(aN))
269- then isDefined(aO)
267+func aU (F,I) = {
268+ let aO = getString(this, E(F))
269+ let aS = valueOrElse(getInteger(this, G(F)), 0)
270+ let aP = getString(this, H(F, I))
271+ let aQ = getString(this, J(F, I))
272+ ([IntegerEntry(G(F), (aS - 1))] ++ (if (if (isDefined(aP))
273+ then isDefined(aQ)
270274 else false)
271- then [StringEntry(H(D, value(aN)), value(aO)), StringEntry(F(D, value(aO)), value(aN)), DeleteEntry(F(D, G)), DeleteEntry(H(D, G))]
272- else if (isDefined(aO))
273- then [StringEntry(C(D), value(aO)), DeleteEntry(H(D, G)), DeleteEntry(F(D, value(aO)))]
274- else if (isDefined(aN))
275- then [DeleteEntry(F(D, G)), DeleteEntry(H(D, value(aN)))]
276- else if ((G == aM))
277- then [DeleteEntry(C(D))]
275+ then [StringEntry(J(F, value(aP)), value(aQ)), StringEntry(H(F, value(aQ)), value(aP)), DeleteEntry(H(F, I)), DeleteEntry(J(F, I))]
276+ else if (isDefined(aQ))
277+ then [StringEntry(E(F), value(aQ)), DeleteEntry(J(F, I)), DeleteEntry(H(F, value(aQ)))]
278+ else if (isDefined(aP))
279+ then [DeleteEntry(H(F, I)), DeleteEntry(J(F, value(aP)))]
280+ else if ((I == aO))
281+ then [DeleteEntry(E(F))]
278282 else throw("Invalid node")))
279283 }
280284
281285
282-func aT (B,aU,aV,aW) = {
283- let aX = StringEntry(aV, B)
284- let aY = DeleteEntry(aW)
285- if ((aU == unit))
286- then [aX, aY]
286+func aV (D,aW,aX,aY,aZ) = {
287+ let ba = StringEntry(aX, D)
288+ let bb = DeleteEntry(aY)
289+ if ((aW == unit))
290+ then [ba, bb]
287291 else {
288- let X = value(aU)
289- let aZ = StringEntry(aW, X)
290- let ba = W(X, B, au)
291- let bb = getString(ba)
292- let bc = aA(X, az)
293- let bd = if ((bc == 0))
292+ let Z = value(aW)
293+ let bc = StringEntry(aY, Z)
294+ let bd = Y(Z, D, aw)
295+ let be = getString(bd)
296+ let bf = if ((be == unit))
294297 then {
295- let be = A(B)
296- aS(be, X)
298+ let bg = aC(Z, aB)
299+ if ((bg == 0))
300+ then [BooleanEntry(aZ, true)]
301+ else {
302+ let bh = (aw - 1)
303+ let bi = valueOrElse(getBoolean(M(D, bh)), false)
304+ let bj = if (bi)
305+ then unit
306+ else getString(Y(Z, D, bh))
307+ if ((bj == unit))
308+ then nil
309+ else {
310+ let bk = ad(value(bj))
311+ let bl = bk._1
312+ let ac = bk._2
313+ let ab = min([bl, bg])
314+[StringEntry(bd, aa(ab, ac)), aF(D, ab, ac, aw, unit)]
315+ }
316+ }
297317 }
298- else if ((bb == unit))
299- then {
300- let bf = (au - 1)
301- let bg = valueOrElse(getBoolean(K(B, bf)), false)
302- let bh = if (bg)
303- then unit
304- else getString(W(X, B, bf))
305- if ((bh == unit))
306- then nil
307- else {
308- let bi = ab(value(bh))
309- let bj = bi._1
310- let aa = bi._2
311- let Z = min([bj, bc])
312-[StringEntry(ba, Y(Z, aa)), aD(B, Z, aa, au, unit)]
313- }
314- }
315- else nil
316- ((bd :+ aX) :+ aZ)
318+ else nil
319+ ((bf :+ ba) :+ bc)
317320 }
318321 }
319322
320323
321-func bk (B,y) = !(valueOrElse(getBoolean(I(B, y)), true))
324+func bm (D,A) = !(valueOrElse(getBoolean(K(D, A)), true))
322325
323326
324-func bl (B) = if (if (bk(B, (au - 1)))
325- then bk(B, (au - 2))
327+func bn (D) = if (if (bm(D, (aw - 1)))
328+ then bm(D, (aw - 2))
326329 else false)
327- then bk(B, (au - 3))
330+ then bm(D, (aw - 3))
328331 else false
329332
330333
331-@Callable(ai)
332-func constructor (bm,bn,bo,bp,bq,br,bs,bt,bu,bv) = {
333- let bw = [ah(ai), if (isDefined(addressFromString(bm)))
334+@Callable(ak)
335+func constructor (bo,bp,bq,br,bs,bt,bu,bv,bw,bx) = {
336+ let by = [aj(ak), if (isDefined(addressFromString(bo)))
334337 then true
335- else throw("Invalid boosting contract address"), if (isDefined(addressFromString(bn)))
338+ else throw("Invalid boosting contract address"), if (isDefined(addressFromString(bp)))
336339 then true
337- else throw("Invalid emission contract address"), if (isDefined(addressFromString(bo)))
340+ else throw("Invalid emission contract address"), if (isDefined(addressFromString(bq)))
338341 then true
339- else throw("Invalid asset_store contract address"), if ((bp >= 0))
342+ else throw("Invalid asset_store contract address"), if ((br >= 0))
340343 then true
341- else throw("Invalid fee amount"), if (isDefined(assetInfo(fromBase58String(bq))))
344+ else throw("Invalid fee amount"), if (isDefined(assetInfo(fromBase58String(bs))))
342345 then true
343- else throw("Invalid WX asset ID"), if ((br >= 0))
346+ else throw("Invalid WX asset ID"), if ((bt >= 0))
344347 then true
345- else throw("Invalid voting threshold"), if ((bs > 0))
348+ else throw("Invalid voting threshold"), if ((bu > 0))
346349 then true
347- else throw("Invalid voting duration"), if (((bu + bs) > height))
350+ else throw("Invalid voting duration"), if (((bw + bu) > height))
348351 then true
349352 else throw("Invalid start height")]
350- if ((bw == bw))
351- then $Tuple2([StringEntry(p, bm), StringEntry(q, bn), StringEntry(r, bo), IntegerEntry(i, bp), StringEntry(j, bq), IntegerEntry(k, br), IntegerEntry(l, bs), IntegerEntry(m, bt), IntegerEntry(n, bu), IntegerEntry(o, 0), IntegerEntry(w, bv)], unit)
353+ if ((by == by))
354+ then $Tuple2([StringEntry(p, bo), StringEntry(q, bp), StringEntry(r, bq), IntegerEntry(i, br), StringEntry(j, bs), IntegerEntry(k, bt), IntegerEntry(l, bu), IntegerEntry(m, bv), IntegerEntry(n, bw), IntegerEntry(o, 0), IntegerEntry(y, bx)], unit)
352355 else throw("Strict value is not equal to itself.")
353356 }
354357
355358
356359
357-@Callable(ai)
358-func suggest (B,bx) = {
359- let by = valueOrErrorMessage(assetInfo(fromBase58String(B)), "Invalid asset ID")
360- let bz = value(ai.payments[0])
361- let bw = [if ((by.issuer == ai.caller))
360+@Callable(ak)
361+func suggest (D,bz) = {
362+ let bA = valueOrErrorMessage(assetInfo(fromBase58String(D)), "Invalid asset ID")
363+ let bB = value(ak.payments[0])
364+ let by = [if ((bA.issuer == ak.caller))
362365 then true
363- else throw("Asset can only be suggested by its issuer"), if ((value(bz.assetId) == ap))
366+ else throw("Asset can only be suggested by its issuer"), if ((value(bB.assetId) == ar))
364367 then true
365- else throw("Invalid fee asset"), if ((bz.amount == ao))
368+ else throw("Invalid fee asset"), if ((bB.amount == aq))
366369 then true
367370 else throw("Invalid fee amount")]
368- if ((bw == bw))
371+ if ((by == by))
369372 then {
370- let bA = invoke(ax, "createOrUpdate", [B, "", bx, false], nil)
371- if ((bA == bA))
373+ let bC = invoke(az, "createOrUpdate", [D, "", bz, false], nil)
374+ if ((bC == bC))
372375 then {
373- let bB = invoke(aw, "burn", nil, [AttachedPayment(bz.assetId, bz.amount)])
374- if ((bB == bB))
376+ let bD = invoke(ay, "burn", nil, [AttachedPayment(bB.assetId, bB.amount)])
377+ if ((bD == bD))
375378 then {
376- let bC = aP(z, B)
377- let bD = (au + 1)
378- let bE = if ((az > height))
379- then au
380- else bD
381- $Tuple2((bC :+ aD(B, 0, true, bE, false)), unit)
379+ let bE = aR(B, D)
380+ let bF = (aw + 1)
381+ let bG = if ((aB > height))
382+ then aw
383+ else bF
384+ $Tuple2((bE :+ aF(D, 0, true, bG, false)), unit)
382385 }
383386 else throw("Strict value is not equal to itself.")
384387 }
385388 else throw("Strict value is not equal to itself.")
386389 }
387390 else throw("Strict value is not equal to itself.")
388391 }
389392
390393
391394
392-@Callable(ai)
393-func vote (B,aa) = {
394- let bF = if (aL(z, B))
395+@Callable(ak)
396+func vote (D,ac) = {
397+ let bH = if (aN(B, D))
395398 then true
396399 else throw("Invalid asset")
397- if ((bF == bF))
400+ if ((bH == bH))
398401 then {
399- let bG = if ((az > height))
402+ let bI = if ((aB > height))
400403 then true
401404 else throw("Current voting is over but results are not finalized")
402- if ((bG == bG))
405+ if ((bI == bI))
403406 then {
404- let X = toString(ai.caller)
405- let bH = aA(X, az)
406- let bI = if ((bH > 0))
407+ let Z = toString(ak.caller)
408+ let bJ = aC(Z, aB)
409+ let bK = if ((bJ > 0))
407410 then true
408411 else throw("You'll not have gWX at the end of voting")
409- if ((bI == bI))
412+ if ((bK == bK))
410413 then {
411- let be = A(B)
412- let ba = W(X, B, au)
413- let bb = getString(ba)
414- let bJ = if ((bb == unit))
414+ let bL = C(D)
415+ let bd = Y(Z, D, aw)
416+ let be = getString(bd)
417+ let bM = if ((be == unit))
415418 then unit
416- else invoke(this, "cancelVote", [B], nil)
417- if ((bJ == bJ))
419+ else invoke(this, "cancelVote", [D], nil)
420+ if ((bM == bM))
418421 then {
419- let bK = [StringEntry(ba, Y(bH, aa)), StringEntry(ae("vote", X, B, toBase58String(ai.transactionId), au), Y(bH, aa)), aD(B, bH, aa, au, unit)]
420- let bL = if (aL(be, X))
422+ let bN = [StringEntry(bd, aa(bJ, ac)), StringEntry(ag("vote", Z, D, toBase58String(ak.transactionId), aw), aa(bJ, ac)), aF(D, bJ, ac, aw, unit)]
423+ let bO = if (aN(bL, Z))
421424 then nil
422- else aP(be, X)
423- $Tuple2((bL ++ bK), unit)
425+ else aR(bL, Z)
426+ $Tuple2((bO ++ bN), unit)
424427 }
425428 else throw("Strict value is not equal to itself.")
426429 }
427430 else throw("Strict value is not equal to itself.")
428431 }
429432 else throw("Strict value is not equal to itself.")
430433 }
431434 else throw("Strict value is not equal to itself.")
432435 }
433436
434437
435438
436-@Callable(ai)
437-func cancelVote (B) = {
438- let X = if ((ai.caller == this))
439- then toString(ai.originCaller)
440- else toString(ai.caller)
441- let be = A(B)
442- let ba = W(X, B, au)
443- let bb = getString(ba)
444- let bM = valueOrElse(getString(ba), "Nothing to cancel")
445- if ((bM == bM))
439+@Callable(ak)
440+func cancelVote (D) = {
441+ let Z = if ((ak.caller == this))
442+ then toString(ak.originCaller)
443+ else toString(ak.caller)
444+ let bL = C(D)
445+ let bd = Y(Z, D, aw)
446+ let be = getString(bd)
447+ let bP = valueOrElse(getString(bd), "Nothing to cancel")
448+ if ((bP == bP))
446449 then {
447- let bN = ab(value(bb))
448- let Z = bN._1
449- let aa = bN._2
450- let bL = aS(be, X)
451- let bK = [DeleteEntry(ba), StringEntry(ae("cancelVote", X, B, toBase58String(ai.transactionId), au), Y(0, true)), aD(B, -(Z), aa, au, unit)]
452- $Tuple2((bL ++ bK), unit)
450+ let bQ = ad(value(be))
451+ let ab = bQ._1
452+ let ac = bQ._2
453+ let bO = aU(bL, Z)
454+ let bN = [DeleteEntry(bd), StringEntry(ag("cancelVote", Z, D, toBase58String(ak.transactionId), aw), aa(0, true)), aF(D, -(ab), ac, aw, unit)]
455+ $Tuple2((bO ++ bN), unit)
453456 }
454457 else throw("Strict value is not equal to itself.")
455458 }
456459
457460
458461
459-@Callable(ai)
460-func finalizeAssetINTERNAL (B,y) = {
461- let bO = ah(ai)
462- if ((bO == bO))
462+@Callable(ak)
463+func finalizeAssetINTERNAL (D,A) = {
464+ let bR = aj(ak)
465+ if ((bR == bR))
463466 then {
464- let aE = L(B, y)
465- let bP = {
466- let e = getString(aE)
467+ let aG = N(D, A)
468+ let bS = {
469+ let e = getString(aG)
467470 if ($isInstanceOf(e, "String"))
468471 then {
469- let aG = e
470- let bQ = Q(aG)
471- $Tuple2(bQ._1, bQ._2)
472+ let aI = e
473+ let bT = S(aI)
474+ $Tuple2(bT._1, bT._2)
472475 }
473476 else if ($isInstanceOf(e, "Unit"))
474477 then $Tuple2(0, 0)
475478 else throw("Match error")
476479 }
477- let N = bP._1
478- let O = bP._2
479- let Z = (N + O)
480- let P = if ((Z >= aq))
481- then (N > O)
480+ let P = bS._1
481+ let Q = bS._2
482+ let ab = (P + Q)
483+ let R = if ((ab >= as))
484+ then (P > Q)
482485 else false
483- let bR = [BooleanEntry(I(B, y), P), if (P)
484- then BooleanEntry(J(B), true)
485- else DeleteEntry(J(B))]
486- let bS = invoke(ax, "setVerified", [B, P], nil)
487- if ((bS == bS))
486+ let bU = [BooleanEntry(K(D, A), R), if (R)
487+ then BooleanEntry(L(D), true)
488+ else DeleteEntry(L(D))]
489+ let bV = invoke(az, "setVerified", [D, R], nil)
490+ if ((bV == bV))
488491 then {
489- let bT = if (P)
492+ let bW = if (R)
490493 then false
491- else bl(B)
492- let bU = if (bT)
493- then [BooleanEntry(K(B, au), true)]
494+ else bn(D)
495+ let bX = if (bW)
496+ then [BooleanEntry(M(D, aw), true)]
494497 else nil
495- let bV = if (bT)
498+ let bY = if (bW)
496499 then nil
497- else [aD(B, 0, true, (au + 1), P)]
498- let bL = if (bT)
499- then aS(z, B)
500+ else [aF(D, 0, true, (aw + 1), R)]
501+ let bO = if (bW)
502+ then aU(B, D)
500503 else nil
501- $Tuple2(((bL ++ bV) ++ bR), unit)
504+ $Tuple2(((bO ++ bY) ++ bU), unit)
502505 }
503506 else throw("Strict value is not equal to itself.")
504507 }
505508 else throw("Strict value is not equal to itself.")
506509 }
507510
508511
509512
510-@Callable(ai)
511-func finalizeVotingHelper () = if ((az > height))
513+@Callable(ak)
514+func deleteUserNodeINTERNAL (D,Z,aZ) = {
515+ let bR = aj(ak)
516+ if ((bR == bR))
517+ then $Tuple2((aU(C(D), Z) :+ DeleteEntry(aZ)), unit)
518+ else throw("Strict value is not equal to itself.")
519+ }
520+
521+
522+
523+@Callable(ak)
524+func finalizeVotingHelper () = if ((aB > height))
512525 then $Tuple2(nil, false)
513526 else {
514- let bW = getString(s)
515- let bX = getString(t)
516- let bY = 0
517- let bZ = $Tuple2([IntegerEntry(n, (height + bY)), IntegerEntry(o, (au + 1)), DeleteEntry(s), DeleteEntry(t), DeleteEntry(u), DeleteEntry(v)], true)
518- if ((bW == unit))
527+ let bZ = getString(s)
528+ let ca = getString(t)
529+ let cb = 0
530+ let cc = $Tuple2([IntegerEntry(n, (height + cb)), IntegerEntry(o, (aw + 1)), DeleteEntry(s), DeleteEntry(t), DeleteEntry(v), DeleteEntry(w)], true)
531+ if ((bZ == unit))
519532 then {
520- let ca = getString(C(z))
521- if ((ca == unit))
522- then bZ
533+ let cd = getString(E(B))
534+ if ((cd == unit))
535+ then cc
523536 else {
524- let cb = value(ca)
525- let aU = getString(C(A(cb)))
526- let cc = aT(cb, aU, s, t)
527- $Tuple2(cc, true)
537+ let ce = value(cd)
538+ let aW = getString(E(C(ce)))
539+ let cf = aV(ce, aW, s, t, u)
540+ $Tuple2(cf, true)
528541 }
529542 }
530543 else {
531- let cd = value(bW)
532- if ((bX == unit))
544+ let cg = value(bZ)
545+ if ((ca == unit))
533546 then {
534- let ce = getString(H(z, cd))
535- if ((ce == ce))
547+ let ch = getString(J(B, cg))
548+ if ((ch == ch))
536549 then {
537- let cf = invoke(this, "finalizeAssetINTERNAL", [cd, au], nil)
538- if ((cf == cf))
539- then if ((ce == unit))
540- then bZ
550+ let ci = invoke(this, "finalizeAssetINTERNAL", [cg, aw], nil)
551+ if ((ci == ci))
552+ then if ((ch == unit))
553+ then cc
541554 else {
542- let cb = value(ce)
543- let aU = getString(C(A(cb)))
544- let cc = aT(cb, aU, s, t)
545- $Tuple2(cc, true)
555+ let ce = value(ch)
556+ let aW = getString(E(C(ce)))
557+ let cf = aV(ce, aW, s, t, u)
558+ $Tuple2(cf, true)
546559 }
547560 else throw("Strict value is not equal to itself.")
548561 }
549562 else throw("Strict value is not equal to itself.")
550563 }
551564 else {
552- let cg = value(bX)
553- let aU = getString(H(A(cd), cg))
554- let cc = aT(cd, aU, s, t)
555- $Tuple2(cc, true)
565+ let cj = value(ca)
566+ let aW = getString(J(C(cg), cj))
567+ if ((aW == aW))
568+ then {
569+ let ck = valueOrElse(getBoolean(u), false)
570+ let cl = if (ck)
571+ then invoke(this, "deleteUserNodeINTERNAL", [cg, cj, u], nil)
572+ else unit
573+ if ((cl == cl))
574+ then {
575+ let cf = aV(cg, aW, s, t, u)
576+ $Tuple2(cf, true)
577+ }
578+ else throw("Strict value is not equal to itself.")
579+ }
580+ else throw("Strict value is not equal to itself.")
556581 }
557582 }
558583 }
559584
560585
561586
562-@Callable(ai)
563-func finalizeVotingWrapper (ch) = {
564- let ci = g(invoke(this, "finalizeVotingHelper", nil, nil))
565- if ((ci == ci))
566- then if (!(ci))
567- then if ((ch == 0))
587+@Callable(ak)
588+func finalizeVotingWrapper (cm) = {
589+ let cn = g(invoke(this, "finalizeVotingHelper", nil, nil))
590+ if ((cn == cn))
591+ then if (!(cn))
592+ then if ((cm == 0))
568593 then throw("Current voting is not over yet")
569594 else $Tuple2(nil, unit)
570- else if ((ay > ch))
595+ else if ((aA > cm))
571596 then {
572- let cj = invoke(this, "finalizeVotingWrapper", [(ch + 1)], nil)
573- if ((cj == cj))
597+ let co = invoke(this, "finalizeVotingWrapper", [(cm + 1)], nil)
598+ if ((co == co))
574599 then $Tuple2(nil, unit)
575600 else throw("Strict value is not equal to itself.")
576601 }
577602 else $Tuple2(nil, unit)
578603 else throw("Strict value is not equal to itself.")
579604 }
580605
581606
582607
583-@Callable(ai)
608+@Callable(ak)
584609 func finalizeVoting () = {
585- let cj = invoke(this, "finalizeVotingWrapper", [0], nil)
586- if ((cj == cj))
610+ let co = invoke(this, "finalizeVotingWrapper", [0], nil)
611+ if ((co == co))
587612 then $Tuple2(nil, unit)
588613 else throw("Strict value is not equal to itself.")
589614 }
590615
591616
592617
593-@Callable(ai)
618+@Callable(ak)
594619 func transferVotesHelper () = {
595- let ck = x(au)
596- let cl = valueOrElse(getBoolean(ck), false)
597- if (if (if ((at > height))
620+ let cp = z(aw)
621+ let cq = valueOrElse(getBoolean(cp), false)
622+ if (if (if ((av > height))
598623 then true
599- else (height >= az))
624+ else (height >= aB))
600625 then true
601- else cl)
626+ else cq)
602627 then $Tuple2(nil, false)
603628 else {
604- let bW = getString(u)
605- let bX = getString(v)
606- let bZ = $Tuple2([BooleanEntry(ck, true), DeleteEntry(u), DeleteEntry(v)], true)
607- if ((bW == unit))
629+ let bZ = getString(v)
630+ let ca = getString(w)
631+ let cc = $Tuple2([BooleanEntry(cp, true), DeleteEntry(v), DeleteEntry(w)], true)
632+ if ((bZ == unit))
608633 then {
609- let ca = getString(C(z))
610- if ((ca == unit))
611- then bZ
634+ let cd = getString(E(B))
635+ if ((cd == unit))
636+ then cc
612637 else {
613- let cb = value(ca)
614- let aU = getString(C(A(cb)))
615- let cc = aT(cb, aU, u, v)
616- $Tuple2(cc, true)
638+ let ce = value(cd)
639+ let aW = getString(E(C(ce)))
640+ let cf = aV(ce, aW, v, w, x)
641+ $Tuple2(cf, true)
617642 }
618643 }
619644 else {
620- let cd = value(bW)
621- if ((bX == unit))
645+ let cg = value(bZ)
646+ if ((ca == unit))
622647 then {
623- let ce = getString(H(z, cd))
624- if ((ce == unit))
625- then bZ
648+ let ch = getString(J(B, cg))
649+ if ((ch == unit))
650+ then cc
626651 else {
627- let cb = value(ce)
628- let aU = getString(C(A(cb)))
629- let cc = aT(cb, aU, u, v)
630- $Tuple2(cc, true)
652+ let ce = value(ch)
653+ let aW = getString(E(C(ce)))
654+ let cf = aV(ce, aW, v, w, x)
655+ $Tuple2(cf, true)
631656 }
632657 }
633658 else {
634- let cg = value(bX)
635- let aU = getString(H(A(cd), cg))
636- let cc = aT(cd, aU, u, v)
637- $Tuple2(cc, true)
659+ let cj = value(ca)
660+ let aW = getString(J(C(cg), cj))
661+ if ((aW == aW))
662+ then {
663+ let ck = valueOrElse(getBoolean(x), false)
664+ let cl = if (ck)
665+ then invoke(this, "deleteUserNodeINTERNAL", [cg, cj, x], nil)
666+ else unit
667+ if ((cl == cl))
668+ then {
669+ let cf = aV(cg, aW, v, w, x)
670+ $Tuple2(cf, true)
671+ }
672+ else throw("Strict value is not equal to itself.")
673+ }
674+ else throw("Strict value is not equal to itself.")
638675 }
639676 }
640677 }
641678 }
642679
643680
644681
645-@Callable(ai)
646-func transferVotesWrapper (ch) = {
647- let ci = g(invoke(this, "transferVotesHelper", nil, nil))
648- if ((ci == ci))
649- then if (!(ci))
650- then if ((ch == 0))
682+@Callable(ak)
683+func transferVotesWrapper (cm) = {
684+ let cn = g(invoke(this, "transferVotesHelper", nil, nil))
685+ if ((cn == cn))
686+ then if (!(cn))
687+ then if ((cm == 0))
651688 then throw("Voting is not started yet")
652689 else $Tuple2(nil, unit)
653- else if ((ay > ch))
690+ else if ((aA > cm))
654691 then {
655- let cj = invoke(this, "transferVotesWrapper", [(ch + 1)], nil)
656- if ((cj == cj))
692+ let co = invoke(this, "transferVotesWrapper", [(cm + 1)], nil)
693+ if ((co == co))
657694 then $Tuple2(nil, unit)
658695 else throw("Strict value is not equal to itself.")
659696 }
660697 else $Tuple2(nil, unit)
661698 else throw("Strict value is not equal to itself.")
662699 }
663700
664701
665702
666-@Callable(ai)
703+@Callable(ak)
667704 func transferVotes () = {
668- let cj = invoke(this, "transferVotesWrapper", [0], nil)
669- if ((cj == cj))
705+ let co = invoke(this, "transferVotesWrapper", [0], nil)
706+ if ((co == co))
670707 then $Tuple2(nil, unit)
671708 else throw("Strict value is not equal to itself.")
672709 }
673710
674711
675712
676-@Callable(ai)
677-func setVotingThreshold (cm) = {
678- let bO = ah(ai)
679- if ((bO == bO))
680- then $Tuple2([IntegerEntry(k, cm)], unit)
713+@Callable(ak)
714+func setVotingThreshold (cr) = {
715+ let bR = aj(ak)
716+ if ((bR == bR))
717+ then $Tuple2([IntegerEntry(k, cr)], unit)
681718 else throw("Strict value is not equal to itself.")
682719 }
683720
684721
685722
686-@Callable(ai)
687-func setFee (cn) = {
688- let bO = ah(ai)
689- if ((bO == bO))
690- then $Tuple2([IntegerEntry(i, cn)], unit)
723+@Callable(ak)
724+func setFee (cs) = {
725+ let bR = aj(ak)
726+ if ((bR == bR))
727+ then $Tuple2([IntegerEntry(i, cs)], unit)
691728 else throw("Strict value is not equal to itself.")
692729 }
693730
694731
695732
696-@Callable(ai)
697-func gwxAvailableForVoteREADONLY (X) = {
698- let bH = aA(X, az)
699- $Tuple2(nil, bH)
733+@Callable(ak)
734+func gwxAvailableForVoteREADONLY (Z) = {
735+ let bJ = aC(Z, aB)
736+ $Tuple2(nil, bJ)
700737 }
701738
702739

github/deemru/w8io/169f3d6 
226.76 ms