tx · 5Lrz9ARrmWLs4a4SSf12xH6ApDgh6XHk2Mm5bsL1RaAo

3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr:  -0.02800000 Waves

2024.04.22 17:24 [3074113] smart account 3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr > SELF 0.00000000 Waves

{ "type": 13, "id": "5Lrz9ARrmWLs4a4SSf12xH6ApDgh6XHk2Mm5bsL1RaAo", "fee": 2800000, "feeAssetId": null, "timestamp": 1713795855619, "version": 2, "chainId": 84, "sender": "3N9Zi6AcWcGbM23jQJ4fnzFsoHoTsxYDznr", "senderPublicKey": "GFbasS3jufhZkK4xR7tdTjjnP8K33KvJFEDHRtxXDkaJ", "proofs": [ "5meqj8xQ5cddJ3MmKL1TeW64a2VHCDFyae6JHpTPxjaScBXp3sDgrXuHoAStXGBAB5juoRfz83feBLzFmbbpB2Rt" ], "script": "base64:BgKGHQgCEgQKAggBEgcKBQgICAgBEgQKAggIEgUKAwgIARIECgIICBIDCgEBEgMKAQESAwoBCBIECgIICBIECgIIBBIAEgMKAQESABIECgIICBIECgIICBIECgIICBIAEgQKAggIEgUKAwgIASIJc2VwYXJhdG9yIg5wb29sV2VpZ2h0TXVsdCIPbWF4RGVwdGhEZWZhdWx0IhlmaW5hbGl6YXRpb25TdGFnZUJhbGFuY2VzIhZmaW5hbGl6YXRpb25TdGFnZVRvdGFsIhdmaW5hbGl6YXRpb25TdGFnZVNoYXJlcyILd2F2ZXNTdHJpbmciEHBvb2xTdGF0dXNBY3RpdmUiFXBvb2xTdGF0dXNQdXREaXNhYmxlZCIZcG9vbFN0YXR1c01hdGNoZXJEaXNhYmxlZCIScG9vbFN0YXR1c1NodXRkb3duIg5rZXlFcG9jaExlbmd0aCIRa2V5RXBvY2hMZW5ndGhOZXciFWtleUVwb2NoTGVuZ3RoQnlFcG9jaCIFZXBvY2giD2tleUN1cnJlbnRFcG9jaCILa2V5TWF4RGVwdGgiEGtleVJlc3VtcHRpb25GZWUiImtleVZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QiHWtleVZvdGluZ0VtaXNzaW9uUmF0ZUNvbnRyYWN0IhJrZXlGYWN0b3J5Q29udHJhY3QiE2tleUJvb3N0aW5nQ29udHJhY3QiEmtleVN0YWtpbmdDb250cmFjdCIWa2V5QXNzZXRzU3RvcmVDb250cmFjdCIUa2V5RmluYWxpemF0aW9uU3RhZ2UiC2tleU5leHRQb29sIgtrZXlOZXh0VXNlciIOa2V5U3RhcnRIZWlnaHQiEWtleUN1cnJlbnRFcG9jaFVpIhBrZXlTdGFydEhlaWdodFVpIh1rZXlGaW5hbGl6YXRpb25TaG91bGRCZUZvcmNlZCIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIVa2V5U3RhcnRIZWlnaHRCeUVwb2NoIgxrZXlGaW5hbGl6ZWQiCWtleUluTGlzdCIEcG9vbCILJHQwMjI0NDIyODQiDWFtb3VudEFzc2V0SWQiDHByaWNlQXNzZXRJZCIHa2V5VXNlZCIHYWRkcmVzcyIHa2V5Vm90ZSILJHQwMjU1ODI1OTgiD2tleVZvdGluZ1Jlc3VsdCILJHQwMjc4MDI4MjAiFWtleVZvdGluZ1Jlc3VsdFN0YWtlZCIMbHBBc3NldElkU3RyIgxrZXlQb29sU2hhcmUiCyR0MDMxNDEzMTgxIg1rZXlUb3RhbFZvdGVzIg9rZXlTdGFrZWRCeVVzZXIiDnVzZXJBZGRyZXNzU3RyIgd3cmFwRXJyIgNtc2ciCHRocm93RXJyIg5nZXRWYWx1ZU9yRmFpbCIDa2V5IgR0eXBlIgVlcnJvciIHJG1hdGNoMCIDc3RyIgNpbnQiDGdldFN0ck9yRmFpbCIBQCIMZ2V0SW50T3JGYWlsIgxwb29sVG9TdHJpbmciDHN0cmluZ1RvUG9vbCIFcGFydHMiD2ZhY3RvcnlDb250cmFjdCIaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAiDWtleUZhY3RvcnlDZmciFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIgdmYWN0b3J5IhlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsIgpmYWN0b3J5Q2ZnIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciC2dldFBvb2xJbmZvIg5wb29sSW5mb09wdGlvbiIWZ2V0THBBc3NldEJ5UG9vbEFzc2V0cyIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIilrZXlNYXBwaW5nUG9vbEFzc2V0c1RvUG9vbENvbnRyYWN0QWRkcmVzcyIYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyIhdpbnRlcm5hbFByaWNlQXNzZXRJZFN0ciIfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldCITcG9vbENvbnRyYWN0QWRkcmVzcyIVYW1vdW50QXNzZXRJbnRlcm5hbElkIhRwcmljZUFzc2V0SW50ZXJuYWxJZCIJbHBBc3NldElkIhhjaGVja1d4RW1pc3Npb25Qb29sTGFiZWwiCyR0MDY1NDE2NTgxIhBnd3hSZXdhcmREZXBvc2l0IhJnd3hSZXdhcmRzQ29udHJhY3QiDXBvb2xzTGlzdE5hbWUiEGdldFZvdGVzTGlzdE5hbWUiCyR0MDY5OTg3MDM4IgtrZXlMaXN0SGVhZCIIbGlzdE5hbWUiBG1ldGEiC2tleUxpc3RTaXplIgtrZXlMaXN0UHJldiICaWQiC2tleUxpc3ROZXh0Igxjb250YWluc05vZGUiCmhlYWRPclVuaXQiCnByZXZPclVuaXQiCm5leHRPclVuaXQiEWluc2VydE5vZGVBY3Rpb25zIghsaXN0U2l6ZSIJY2hlY2tOb2RlIhFkZWxldGVOb2RlQWN0aW9ucyIWa2V5TWFuYWdlclZhdWx0QWRkcmVzcyITa2V5TWFuYWdlclB1YmxpY0tleSIcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcyIBcyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCITbWFuYWdlclZhdWx0QWRkcmVzcyIJaXNNYW5hZ2VyIgFpIgJwayILbXVzdE1hbmFnZXIiCG11c3RUaGlzIgt1c2VyQWRkcmVzcyIMdGFyZ2V0SGVpZ2h0Ihdib29zdGluZ0NvbnRyYWN0QWRkcmVzcyIfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdCIQYm9vc3RpbmdDb250cmFjdCIPc3Rha2luZ0NvbnRyYWN0IgtlcG9jaExlbmd0aCIGY2hlY2tzIg1pbkxpc3RBY3Rpb25zIhhjdXJyZW50RXBvY2hJc05vdERlZmluZWQiEnN0YXJ0SGVpZ2h0QWN0aW9ucyIGYW1vdW50IgtzdGFydEhlaWdodCIJZW5kSGVpZ2h0IhdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdCIEdXNlZCIEdm90ZSIKcG9vbFJlc3VsdCIKdG90YWxWb3RlcyITZ3d4QW1vdW50QXRFbmRUb3RhbCIJYXZhaWxhYmxlIgduZXdWb3RlIgp3eEVtaXNzaW9uIg12b3Rlc0xpc3ROYW1lIhB2b3Rlc0xpc3RBY3Rpb25zIg5uZXdFcG9jaExlbmd0aCILbmV3TWF4RGVwdGgiB3Bvb2xTdHIiC2NoZWNrQ2FsbGVyIg1lcG9jaFByZXZpb3VzIg0kdDAxNzI0MjE3MjgyIgtiYWxhbmNlSXNPayIHYWN0aW9ucyITZGVsZXRlV3hFbWlzc2lvbkludiIPbW9kaWZ5V2VpZ2h0SW52Igtwb29sQWRkcmVzcyIQc2V0UG9vbFN0YXR1c0ludiILbGlzdEFjdGlvbnMiE3N0YXJ0SGVpZ2h0UHJldmlvdXMiE2Vwb2NoTGVuZ3RoUHJldmlvdXMiEWVuZEhlaWdodFByZXZpb3VzIhBjaGVja1RhcmdldEVwb2NoIg0kdDAxOTEwODE5MTQ4Ihtnd3hBbW91bnRBdEVuZFRvdGFsUHJldmlvdXMiDHZvdGluZ1Jlc3VsdCISdm90ZVByZXZpb3VzT3B0aW9uIgx2b3RlUHJldmlvdXMiGnZvdGluZ1Jlc3VsdFN0YWtlZFByZXZpb3VzIgxzdGFrZWRCeVVzZXIiGXZvdGluZ1Jlc3VsdFN0YWtlZEFjdGlvbnMiBWZvcmNlIgt0YXJnZXRFcG9jaCIMY3VycmVudEVwb2NoIg0kdDAyMTYxODIxNjU4IgFyIhNhc3NldHNTdG9yZUNvbnRyYWN0IgVzaGFyZSINcHJldmlvdXNFcG9jaCIIbmV3RXBvY2giFG5ld0Vwb2NoTGVuZ3RoT3B0aW9uIhVuZXdFcG9jaExlbmd0aEFjdGlvbnMiCnBvb2xPclVuaXQiByRtYXRjaDEiC25leHRQb29sU3RyIg5uZXh0UG9vbE9yVW5pdCIKdXNlck9yVW5pdCIMcG9vbHNIZWFkU3RyIg5uZXh0VXNlck9yVW5pdCIEdXNlciIEbmV4dCIOcHJvY2Vzc1ZvdGVJbnYiByRtYXRjaDIiCG5leHRVc2VyIhNnd3hSZXdhcmREZXBvc2l0SW52Igdjb3VudGVyIhp2b3RpbmdFbWlzc2lvblJhdGVDb250cmFjdCIGcmVzdWx0IgNpbnYiCG1heERlcHRoIhZmaW5hbGl6YXRpb25JblByb2dyZXNzIh9zbGlwcGFnZVRvbGVyYW5jZU9yTWluT3V0QW1vdW50Ig0kdDAzMTYxOTMxNzQ5IgpmZWVQYXltZW50Ig9rQm9vc3RpbmdDb25maWciDWlkeENmZ0Fzc2V0SWQiCXd4QXNzZXRJZCITYW1vdW50QXNzZXRWZXJpZmllZCIScHJpY2VBc3NldFZlcmlmaWVkIg1yZXN1bXB0aW9uRmVlIhRscEFzc2V0QmFsYW5jZUJlZm9yZSIJYXV0b1N0YWtlIgNwdXQiDnBvb2xTY3JpcHRIYXNoIhFhbGxvd2VkU2NyaXB0SGFzaCIIaXNTdGFibGUiDGZ1bmN0aW9uTmFtZSITbHBBc3NldEJhbGFuY2VBZnRlciISbHBBc3NldEJhbGFuY2VEaWZmIhZscEFzc2V0VHJhbnNmZXJBY3Rpb25zIhBzZXRXeEVtaXNzaW9uSW52Igpwb29sU3RhdHVzIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXlMAAFhAgJfXwABYgCAwtcvAAFjAAoAAWQAAAABZQABAAFmAAIAAWcCBVdBVkVTAAFoAAEAAWkAAgABagADAAFrAAQAAWwJALkJAgkAzAgCAgIlcwkAzAgCAgtlcG9jaExlbmd0aAUDbmlsBQFhAAFtCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhBlcG9jaExlbmd0aF9fbmV3BQNuaWwFAWEBAW4BAW8JALkJAgkAzAgCAgQlcyVkCQDMCAICC2Vwb2NoTGVuZ3RoCQDMCAIJAKQDAQUBbwUDbmlsBQFhAAFwCQC5CQIJAMwIAgICJXMJAMwIAgIMY3VycmVudEVwb2NoBQNuaWwFAWEAAXEJALkJAgkAzAgCAgIlcwkAzAgCAghtYXhEZXB0aAUDbmlsBQFhAAFyCQC5CQIJAMwIAgICJXMJAMwIAgINcmVzdW1wdGlvbkZlZQUDbmlsBQFhAAFzCQC5CQIJAMwIAgICJXMJAMwIAgIfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdAUDbmlsBQFhAAF0CQC5CQIJAMwIAgICJXMJAMwIAgIadm90aW5nRW1pc3Npb25SYXRlQ29udHJhY3QFA25pbAUBYQABdQkAuQkCCQDMCAICAiVzCQDMCAICD2ZhY3RvcnlDb250cmFjdAUDbmlsBQFhAAF2CQC5CQIJAMwIAgICJXMJAMwIAgIQYm9vc3RpbmdDb250cmFjdAUDbmlsBQFhAAF3CQC5CQIJAMwIAgICJXMJAMwIAgIPc3Rha2luZ0NvbnRyYWN0BQNuaWwFAWEAAXgJALkJAgkAzAgCAgIlcwkAzAgCAhNhc3NldHNTdG9yZUNvbnRyYWN0BQNuaWwFAWEAAXkJALkJAgkAzAgCAgIlcwkAzAgCAhFmaW5hbGl6YXRpb25TdGFnZQUDbmlsBQFhAAF6CQC5CQIJAMwIAgICJXMJAMwIAgIIbmV4dFBvb2wFA25pbAUBYQABQQkAuQkCCQDMCAICAiVzCQDMCAICCG5leHRVc2VyBQNuaWwFAWEAAUIJALkJAgkAzAgCAgIlcwkAzAgCAgtzdGFydEhlaWdodAUDbmlsBQFhAAFDCQC5CQIJAMwIAgICJXMJAMwIAgIOY3VycmVudEVwb2NoVWkFA25pbAUBYQABRAkAuQkCCQDMCAICAiVzCQDMCAICDXN0YXJ0SGVpZ2h0VWkFA25pbAUBYQABRQkAuQkCCQDMCAICAiVzCQDMCAICBWZvcmNlBQNuaWwFAWEBAUYAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAEBRwACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQFIAQFvCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtzdGFydEhlaWdodAkAzAgCCQCkAwEFAW8FA25pbAUBYQEBSQEBbwkAuQkCCQDMCAICBCVzJWQJAMwIAgIJZmluYWxpemVkCQDMCAIJAKQDAQUBbwUDbmlsBQFhAQFKAQFLBAFMBQFLBAFNCAUBTAJfMQQBTggFAUwCXzIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIGaW5MaXN0CQDMCAIFAU0JAMwIAgUBTgUDbmlsBQFhAQFPAgFQAW8JALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIEdXNlZAkAzAgCCQClCAEFAVAJAMwIAgkApAMBBQFvBQNuaWwFAWEBAVEDAUsBUAFvBAFSBQFLBAFNCAUBUgJfMQQBTggFAVICXzIJALkJAgkAzAgCAgolcyVzJXMlcyVkCQDMCAICBHZvdGUJAMwIAgUBTQkAzAgCBQFOCQDMCAIJAKUIAQUBUAkAzAgCCQCkAwEFAW8FA25pbAUBYQEBUwIBSwFvBAFUBQFLBAFNCAUBVAJfMQQBTggFAVQCXzIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAgx2b3RpbmdSZXN1bHQJAMwIAgUBTQkAzAgCBQFOCQDMCAIJAKQDAQUBbwUDbmlsBQFhAQFVAgFWAW8JALkJAgkAzAgCAgYlcyVzJWQJAMwIAgISdm90aW5nUmVzdWx0U3Rha2VkCQDMCAIFAVYJAMwIAgkApAMBBQFvBQNuaWwFAWEBAVcCAUsBbwQBWAUBSwQBTQgFAVgCXzEEAU4IBQFYAl8yCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIJcG9vbFNoYXJlCQDMCAIFAU0JAMwIAgUBTgkAzAgCCQCkAwEFAW8FA25pbAUBYQEBWQEBbwkAuQkCCQDMCAICBCVzJWQJAMwIAgIKdG90YWxWb3RlcwkAzAgCCQCkAwEFAW8FA25pbAUBYQEBWgIBVgJhYQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgZzdGFrZWQJAMwIAgUCYWEJAMwIAgUBVgUDbmlsBQFhAQJhYgECYWMJALkJAgkAzAgCAhV2b3RpbmdfZW1pc3Npb24ucmlkZToJAMwIAgUCYWMFA25pbAIBIAECYWQBAmFjCQACAQkBAmFiAQUCYWMBAmFlAwFQAmFmAmFnBAJhaAkBAmFiAQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQFQCQDMCAICAS4JAMwIAgUCYWYJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBAJhaQUCYWcDCQABAgUCYWkCBlN0cmluZwQCYWoFAmFpCQCdCAIFAVAFAmFmAwkAAQIFAmFpAgNJbnQEAmFrBQJhaQkAmggCBQFQBQJhZgkBAmFkAQISaW52YWxpZCBlbnRyeSB0eXBlBQJhaAECYWwCAVACYWYKAAJhbQkBAmFlAwUBUAUCYWYCAAMJAAECBQJhbQIGU3RyaW5nBQJhbQkAAgEJAKwCAgkAAwEFAmFtAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcBAmFuAgFQAmFmCgACYW0JAQJhZQMFAVAFAmFmAAADCQABAgUCYW0CA0ludAUCYW0JAAIBCQCsAgIJAAMBBQJhbQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJhbwEBSwkArAICCQCsAgIIBQFLAl8xBQFhCAUBSwJfMgECYXABAmFqBAJhcQkAtQkCBQJhagUBYQMJAAACCQCQAwEFAmFxAAIJAJQKAgkAkQMCBQJhcQAACQCRAwIFAmFxAAEJAQJhZAECE2ludmFsaWQgcG9vbCBzdHJpbmcAAmFyCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYWwCBQR0aGlzBQF1AAJhcwAKAQJhdAACESVzX19mYWN0b3J5Q29uZmlnAQJhdQECYXYJALUJAgkBAmFsAgUCYXYJAQJhdAAFAWEBAmF3AQJheAkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJheAUCYXMBAmF5AQJhegMJAAACBQJhegUBZwUEdW5pdAkA2QQBBQJhegECYUEBAmF6AwkAAAIFAmF6BQR1bml0BQFnCQDYBAEJAQV2YWx1ZQEFAmF6AQJhQgIBTQFOBAJhQwoAAmFtCQD8BwQFAmFyAhBwb29sSW5mb1JFQURPTkxZCQDMCAIFAU0JAMwIAgUBTgUDbmlsBQNuaWwDCQABAgUCYW0CFShBZGRyZXNzLCBCeXRlVmVjdG9yKQUCYW0FBHVuaXQFAmFDAQJhRAIBTQFOCgECYUUBAmFGCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFGCgECYUcCAmFIAmFJCQCsAgIJAKwCAgkArAICCQCsAgICCiVkJWQlcyVzX18JAKQDAQUCYUgCAl9fCQCkAwEFAmFJAiNfX21hcHBpbmdzX19wb29sQXNzZXRzMlBvb2xDb250cmFjdAoBAmFKAQJhSwkArAICCQCsAgICCCVzJXMlc19fBQJhSwIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQEAmFMCQECYW4CBQJhcgkBAmFFAQUBTQQCYU0JAQJhbgIFAmFyCQECYUUBBQFOBAJhSwkBAmFsAgUCYXIJAQJhRwIFAmFMBQJhTQQCYU4JAQJhbAIFAmFyCQECYUoBBQJhSwUCYU4BAmFPAQFLBAJhUAUBSwQBTQgFAmFQAl8xBAFOCAUCYVACXzIKAAJhbQkA/AcEBQJhcgIYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsCQDMCAIFAU0JAMwIAgUBTgUDbmlsBQNuaWwDCQABAgUCYW0CB0Jvb2xlYW4FAmFtCQACAQkArAICCQADAQUCYW0CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4BAmFRAAQCYXgJAQJhdQEFAmFyBAJhUgkBAmF3AQUCYXgJAPwHBAUCYVICB2RlcG9zaXQFA25pbAUDbmlsAAJhUwIFcG9vbHMBAmFUAQFLBAJhVQUBSwQBTQgFAmFVAl8xBAFOCAUCYVUCXzIJALkJAgkAzAgCAgV2b3RlcwkAzAgCBQFNCQDMCAIFAU4FA25pbAUBYQECYVYBAmFXBAJhWAMJAAACBQJhVwUCYVMCBCVzJXMCCCVzJXMlcyVzCQC5CQIJAMwIAgUCYVgJAMwIAgUCYVcJAMwIAgIEaGVhZAUDbmlsBQFhAQJhWQECYVcEAmFYAwkAAAIFAmFXBQJhUwIEJXMlcwIIJXMlcyVzJXMJALkJAgkAzAgCBQJhWAkAzAgCBQJhVwkAzAgCAgRzaXplBQNuaWwFAWEBAmFaAgJhVwJiYQQCYVgDCQAAAgUCYVcFAmFTAgglcyVzJXMlcwIKJXMlcyVzJXMlcwkAuQkCCQDMCAIFAmFYCQDMCAIFAmFXCQDMCAIFAmJhCQDMCAICBHByZXYFA25pbAUBYQECYmICAmFXAmJhBAJhWAMJAAACBQJhVwUCYVMCCCVzJXMlcyVzAgolcyVzJXMlcyVzCQC5CQIJAMwIAgUCYVgJAMwIAgUCYVcJAMwIAgUCYmEJAMwIAgIEbmV4dAUDbmlsBQFhAQJiYwICYVcCYmEEAmJkCQCdCAIFBHRoaXMJAQJhVgEFAmFXBAJiZQkAnQgCBQR0aGlzCQECYVoCBQJhVwUCYmEEAmJmCQCdCAIFBHRoaXMJAQJiYgIFAmFXBQJiYQMDCQAAAgUCYmEJAQt2YWx1ZU9yRWxzZQIFAmJkAgAGCQECIT0CBQJiZQUEdW5pdAYJAQIhPQIFAmJmBQR1bml0AQJiZwICYVcCYmEEAmJkCQCdCAIFBHRoaXMJAQJhVgEFAmFXBAJiaAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYVkBBQJhVwAABAJiaQMJAQEhAQkBAmJjAgUCYVcFAmJhBgkBAmFkAQILTm9kZSBleGlzdHMDCQAAAgUCYmkFAmJpCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFZAQUCYVcJAGQCBQJiaAABBQNuaWwDCQECIT0CBQJiZAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQECYmICBQJhVwUCYmEJAQV2YWx1ZQEFAmJkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhWgIFAmFXCQEFdmFsdWUBBQJiZAUCYmEFA25pbAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhVgEFAmFXBQJiYQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJiagICYVcCYmEEAmJkCQCdCAIFBHRoaXMJAQJhVgEFAmFXBAJiaAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYVkBBQJhVwAABAJiZQkAnQgCBQR0aGlzCQECYVoCBQJhVwUCYmEEAmJmCQCdCAIFBHRoaXMJAQJiYgIFAmFXBQJiYQkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYVkBBQJhVwkAZQIFAmJoAAEFA25pbAMDCQECIT0CBQJiZQUEdW5pdAkBAiE9AgUCYmYFBHVuaXQHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiYgIFAmFXCQEFdmFsdWUBBQJiZQkBBXZhbHVlAQUCYmYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFaAgUCYVcJAQV2YWx1ZQEFAmJmCQEFdmFsdWUBBQJiZQkAzAgCCQELRGVsZXRlRW50cnkBCQECYVoCBQJhVwUCYmEJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJiAgUCYVcFAmJhBQNuaWwDCQECIT0CBQJiZgUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQECYVYBBQJhVwkBBXZhbHVlAQUCYmYJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJiAgUCYVcFAmJhCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhWgIFAmFXCQEFdmFsdWUBBQJiZgUDbmlsAwkBAiE9AgUCYmUFBHVuaXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFaAgUCYVcFAmJhCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiYgIFAmFXCQEFdmFsdWUBBQJiZQUDbmlsAwkAAAIFAmJhCQELdmFsdWVPckVsc2UCBQJiZAIACQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhVgEFAmFXBQNuaWwJAQJhZAEJAKwCAgkArAICCQCsAgICDmludmFsaWQgbm9kZTogBQJhVwIBLgUCYmEBAmJrAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBAmJsAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAmJtAAQCYWkJAKIIAQkBAmJrAAMJAAECBQJhaQIGU3RyaW5nBAJibgUCYWkJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmJuBQR0aGlzAQJibwAEAmJwCQECYm0ABAJhaQkAnQgCBQJicAkBAmJsAAMJAAECBQJhaQIGU3RyaW5nBAJibgUCYWkJANkEAQUCYm4DCQABAgUCYWkCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECYnEBAmJyBAJhaQkBAmJvAAMJAAECBQJhaQIKQnl0ZVZlY3RvcgQCYnMFAmFpCQAAAggFAmJyD2NhbGxlclB1YmxpY0tleQUCYnMDCQABAgUCYWkCBFVuaXQJAAACCAUCYnIGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmJ0AQJicgMJAQJicQEFAmJyBgkAAgECEXBlcm1pc3Npb24gZGVuaWVkAQJidQECYnIDCQAAAggFAmJyBmNhbGxlcgUEdGhpcwYJAAIBAhFwZXJtaXNzaW9uIGRlbmllZBMCYnIBGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAICYnYCYncEAmJ4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBAmFsAgUEdGhpcwUBdgkBAmFiAQIhaW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQCUCgIFA25pbAoAAmFtCQD8BwQFAmJ4AiBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQkAzAgCBQJidgkAzAgCBQJidwUDbmlsBQNuaWwDCQABAgUCYW0CA0ludAUCYW0JAAIBCQCsAgIJAAMBBQJhbQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AmJyAQtjb25zdHJ1Y3RvcgUCYXICYnkCYnoCYkECYkIEAmJDCQDMCAIJAQJidAEFAmJyCQDMCAIDCQECIT0CCQCmCAEFAmFyBQR1bml0BgIgaW52YWxpZCBmYWN0b3J5IGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUCYnkFBHVuaXQGAjJpbnZhbGlkIHZvdGluZyBlbWlzc2lvbiBjYW5kaWRhdGUgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBQJiegUEdW5pdAYCIWludmFsaWQgYm9vc3RpbmcgY29udHJhY3QgYWRkcmVzcwkAzAgCAwkBAiE9AgkApggBBQJiQQUEdW5pdAYCIGludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQBmAgUCYkIAAAYJAQJhZAECFGludmFsaWQgZXBvY2ggbGVuZ3RoBQNuaWwDCQAAAgUCYkMFAmJDCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBdQUCYXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBcwUCYnkJAMwIAgkBC1N0cmluZ0VudHJ5AgUBdgUCYnoJAMwIAgkBC1N0cmluZ0VudHJ5AgUBdwUCYkEJAMwIAgkBDEludGVnZXJFbnRyeQIFAWwFAmJCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYnIBBmNyZWF0ZQIBTQFOBAJiQwkAzAgCAwkAAAIJANgEAQgIBQJicgZjYWxsZXIFYnl0ZXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUBcwIABgkBAmJ0AQUCYnIFA25pbAMJAAACBQJiQwUCYkMEAUsJAJQKAgUBTQUBTgQCYkQJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAUoBBQFLBgUDbmlsCQECYmcCBQJhUwkBAmFvAQUBSwQCYkUJAAACCQCaCAIFBHRoaXMFAXAFBHVuaXQEAmJGAwUCYkUEAW8AAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcAUBbwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAUgBBQFvBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAUIFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBQwUBbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUBRAUGaGVpZ2h0BQNuaWwFA25pbAkAlAoCCQDOCAIFAmJEBQJiRgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJicgEEdm90ZQMBTQFOAmJHBAFLCQCUCgIFAU0FAU4EAW8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBcAAABAJiSAkBAmFuAgUEdGhpcwkBAUgBBQFvBAJiQgkBAmFuAgUEdGhpcwUBbAQCYkkJAGQCBQJiSAUCYkIEAmJKCQCaCAIFBHRoaXMFAXkEAmJLCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFPAggFAmJyBmNhbGxlcgUBbwAABAJiTAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBUQMFAUsIBQJicgZjYWxsZXIFAW8AAAQCYk0JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAVMCBQFLBQFvAAAEAmJOCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFZAQUBbwAABAJiTwoAAmFtCQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCCQDYBAEICAUCYnIGY2FsbGVyBWJ5dGVzCQDMCAIFAmJJBQNuaWwFA25pbAMJAAECBQJhbQIDSW50BQJhbQkAAgEJAKwCAgkAAwEFAmFtAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmJQCQBlAgUCYk8FAmJLBAJiUQkAZAIFAmJMBQJiRwQCYlIJAQJhTwEFAUsEAmJDCQDMCAIDCQECIT0CCQCgCAEJAQFKAQUBSwUEdW5pdAYJAQJhZAECDmludmFsaWQgYXNzZXRzCQDMCAIDCQBmAgUCYkkFBmhlaWdodAYJAQJhZAECDmludmFsaWQgaGVpZ2h0CQDMCAIDCQAAAgUCYkoFBHVuaXQGCQECYWQBAhhmaW5hbGl6YXRpb24gaW4gcHJvZ3Jlc3MJAMwIAgMJAGYCBQJiTwAABgkBAmFkAQITeW91IGRvIG5vdCBoYXZlIGdXWAkAzAgCAwMJAGYCBQJiRwAACQBnAgUCYlAFAmJHBwYJAQJhZAECDmludmFsaWQgYW1vdW50CQDMCAIDBQJiUgYJAQJhZAECHXBvb2wgaGFzbid0IFdYX0VNSVNTSU9OIGxhYmVsBQNuaWwDCQAAAgUCYkMFAmJDBAJiUwkBAmFUAQUBSwQCYWEJAKUIAQgFAmJyBmNhbGxlcgQCYlQDCQECYmMCBQJiUwUCYWEFA25pbAkBAmJnAgUCYlMFAmFhCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU8CCAUCYnIGY2FsbGVyBQFvCQBkAgUCYksFAmJHCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUQMFAUsIBQJicgZjYWxsZXIFAW8FAmJRCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwIFAUsFAW8JAGQCBQJiTQUCYkcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAQUBbwkAZAIFAmJOBQJiRwUDbmlsBQJiVAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJicgEKY2FuY2VsVm90ZQIBTQFOBAFLCQCUCgIFAU0FAU4EAW8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBcAAABAJiSAkBAmFuAgUEdGhpcwkBAUgBBQFvBAJiQgkBAmFuAgUEdGhpcwUBbAQCYkkJAGQCBQJiSAUCYkIEAmJKCQCaCAIFBHRoaXMFAXkEAmJLCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFPAggFAmJyBmNhbGxlcgUBbwAABAJiTAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBUQMFAUsIBQJicgZjYWxsZXIFAW8AAAQCYk0JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAVMCBQFLBQFvAAAEAmJOCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFZAQUBbwAABAJiQwkAzAgCAwkBAiE9AgkAoAgBCQEBSgEFAUsFBHVuaXQGCQECYWQBAg5pbnZhbGlkIGFzc2V0cwkAzAgCAwkAZgIFAmJJBQZoZWlnaHQGCQECYWQBAg5pbnZhbGlkIGhlaWdodAkAzAgCAwkAAAIFAmJKBQR1bml0BgkBAmFkAQIYZmluYWxpemF0aW9uIGluIHByb2dyZXNzCQDMCAIDCQBmAgUCYkwAAAYJAQJhZAECB25vIHZvdGUFA25pbAMJAAACBQJiQwUCYkMEAmJTCQECYVQBBQFLBAJhYQkApQgBCAUCYnIGY2FsbGVyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU8CCAUCYnIGY2FsbGVyBQFvCQCWAwEJAMwIAgkAZQIFAmJLBQJiTAkAzAgCAAAFA25pbAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUQMFAUsIBQJicgZjYWxsZXIFAW8JAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAgUBSwUBbwkAZQIFAmJNBQJiTAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVkBBQFvCQBlAgUCYk4FAmJMBQNuaWwJAQJiagIFAmJTBQJhYQUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJicgEOc2V0RXBvY2hMZW5ndGgBAmJVBAJiQwkAzAgCCQECYnQBBQJicgkAzAgCAwkAZgIFAmJVAAAGCQECYWQBAhRpbnZhbGlkIGVwb2NoIGxlbmd0aAUDbmlsAwkAAAIFAmJDBQJiQwkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQFtBQJiVQUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJyAQtzZXRNYXhEZXB0aAECYlYEAmJDCQDMCAIJAQJidAEFAmJyCQDMCAIDCQBmAgUCYlYAAAYJAQJhZAECEWludmFsaWQgbWF4IGRlcHRoBQNuaWwDCQAAAgUCYkMFAmJDCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAXEFAmJWBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYnIBGnByb2Nlc3NQb29sQmFsYW5jZUlOVEVSTkFMAQJiVwQCYlgJAQJidQEFAmJyAwkAAAIFAmJYBQJiWAQBbwkBAmFuAgUEdGhpcwUBcAQCYlkJAGUCBQFvAAEEAUsJAQJhcAEFAmJXBAJiWgUBSwQBTQgFAmJaAl8xBAFOCAUCYloCXzIEAmFOCQECYUQCBQFNBQFOBAJjYQoAAmFtCQD8BwQFAmFyAgxjaGVja0JhbGFuY2UJAMwIAgUCYU4FA25pbAUDbmlsAwkAAQIFAmFtAgdCb29sZWFuBQJhbQkAAgEJAKwCAgkAAwEFAmFtAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJjYgMJAQEhAQUCY2EEAmNjCQD8BwQFAmFyAhlkZWxldGVXeEVtaXNzaW9uUG9vbExhYmVsCQDMCAIFAU0JAMwIAgUBTgUDbmlsBQNuaWwDCQAAAgUCY2MFAmNjBAJjZAkA/AcEBQJhcgIMbW9kaWZ5V2VpZ2h0CQDMCAIFAmFOCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUCY2QFAmNkBAJjZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBAmFCAgUBTQUBTgkBAmFiAQIOaW52YWxpZCBhc3NldHMCXzEEAmNmCQD8BwQFAmFyAgptYW5hZ2VQb29sCQDMCAIJAKUIAQUCY2UJAMwIAgUBagUDbmlsBQNuaWwDCQAAAgUCY2YFAmNmBAJjZwkAzggCCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFKAQUBSwUDbmlsCQECYmoCBQJhUwkBAmFvAQUBSwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwIFAUsFAmJZAAAFA25pbAUCY2cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAkAlAoCBQJjYgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJicgETcHJvY2Vzc1ZvdGVJTlRFUk5BTAICYlcCYWEEAmJYCQECYnUBBQJicgMJAAACBQJiWAUCYlgEAmJ2CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUCYWEJAQJhYgEJAKwCAgIqcHJvY2Vzc1ZvdGVJTlRFUk5BTDogaW52YWxpZCB1c2VyIGFkZHJlc3MgBQJhYQQBbwkBAmFuAgUEdGhpcwUBcAQCYlkJAGUCBQFvAAEEAmJCCQECYW4CBQR0aGlzBQFsBAJiSAkBAmFuAgUEdGhpcwkBAUgBBQFvBAJiSQkAZAIFAmJIBQJiQgQCY2gJAQJhbgIFBHRoaXMJAQFIAQUCYlkEAmNpCQECYW4CBQR0aGlzCQEBbgEFAmJZBAJjagkAZAIFAmNoBQJjaQQCY2sDCQBnAgUCYlkAAAYJAQJhZAECK3Byb2Nlc3NWb3RlSU5URVJOQUw6IGludmFsaWQgcHJldmlvdXMgZXBvY2gDCQAAAgUCY2sFAmNrBAFLCQECYXABBQJiVwQCY2wFAUsEAU0IBQJjbAJfMQQBTggFAmNsAl8yBAJiTwoAAmFtCQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCBQJhYQkAzAgCBQJiSQUDbmlsBQNuaWwDCQABAgUCYW0CA0ludAUCYW0JAAIBCQCsAgIJAAMBBQJhbQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJjbQoAAmFtCQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCBQJhYQkAzAgCBQJjagUDbmlsBQNuaWwDCQABAgUCYW0CA0ludAUCYW0JAAIBCQCsAgIJAAMBBQJhbQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJiTgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEBWQEFAW8AAAQCY24JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAVMCBQFLBQFvAAAEAmNvCQCfCAEJAQFRAwUBSwUCYnYFAmJZBAJjcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBQJjbwkBAmFiAQkArAICCQCsAgIJAKwCAgkArAICAhRwcm9jZXNzVm90ZUlOVEVSTkFMIAUCYlcCASAFAmFhAhI6IG5vIHByZXZpb3VzIHZvdGUEAmJLCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQFPAgUCYnYFAW8AAAQBVgkBAmFEAgUBTQUBTgQCY3EJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAVUCBQFWBQJiWQAABAJiQQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFsAgUEdGhpcwUBdwQCY3IJAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYkEJAQFaAgUBVgUCYWEAAAQCY3MDAwkAAAIFAmNyAAAGCQAAAgUCY28FBHVuaXQFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUCBQFWBQJiWQkAZAIFAmNxBQJjcAUDbmlsBAJhTgkBAmFEAgUBTQUBTgQCYlEDCQBmAgUCY20AAAkAawMFAmNwBQJiTwUCY20AAAQCY2IDAwkAAAIFAmNvBQR1bml0BgkAZwIAAAUCYlEJAQJiagIJAQJhVAEFAUsFAmFhCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUQMFAUsFAmJ2BQFvBQJiUQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVkBBQFvCQBkAgUCYk4FAmJRCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwIFAUsFAW8JAGQCBQJjbgUCYlEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFPAgUCYnYFAW8JAGQCBQJiSwUCYlEFA25pbAkAlAoCCQDOCAIFAmNiBQJjcwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJicgETcHJvY2Vzc1Bvb2xJTlRFUk5BTAICYlcCY3QEAmJYCQECYnUBBQJicgMJAAACBQJiWAUCYlgEAmN1BAJjdgkBAmFuAgUEdGhpcwUBcAMFAmN0BQJjdgkAZQIFAmN2AAEEAmNrAwkAZwIFAmN1AAAGCQECYWQBAilwcm9jZXNzUG9vbElOVEVSTkFMOiBpbnZhbGlkIHRhcmdldCBlcG9jaAMJAAACBQJjawUCY2sEAUsJAQJhcAEFAmJXBAJjdwUBSwQBTQgFAmN3Al8xBAFOCAUCY3cCXzIEAmJBCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYWwCBQR0aGlzBQF3BAJhTgkBAmFEAgUBTQUBTgQCY3gKAAJhbQkA/AcEBQJiQQISdXNlcnNMaXN0VHJhdmVyc2FsCQDMCAIFAmFOBQNuaWwFA25pbAMJAAECBQJhbQIHQm9vbGVhbgUCYW0JAAIBCQCsAgIJAAMBBQJhbQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgMJAAACBQJjeAUCY3gDBQJjeAkAlAoCBQNuaWwGBAJjeQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFyBQF4Ah1pbnZhbGlkIGFzc2V0cyBzdG9yZSBjb250cmFjdAQCYk4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAVkBBQJjdQAABAJjbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEBUwIFAUsFAmN1AAAEAmN6AwkAAAIFAmJOAAAAAAkAawMFAmNuBQFiBQJiTgQCY2QJAPwHBAUCYXICDG1vZGlmeVdlaWdodAkAzAgCBQJhTgkAzAgCBQJjegUDbmlsBQNuaWwDCQAAAgUCY2QFAmNkCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAgUBSwUCY3UFAmN6BQNuaWwHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJyAQ5maW5hbGl6ZUhlbHBlcgAEAmN0CQELdmFsdWVPckVsc2UCCQCgCAEFAUUHBAFvCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAXAAAAQCY0EJAGUCBQFvAAEEAmJICQECYW4CBQR0aGlzCQEBSAEFAW8EAmJCCQECYW4CBQR0aGlzBQFsBAJiSQkAZAIFAmJIBQJiQgQCYkoJAJoIAgUEdGhpcwUBeQMDAwkAZwIFBmhlaWdodAUCYkkJAAACBQJiSgUEdW5pdAcJAQEhAQUCY3QHBAJjQgkAZAIFAW8AAQQCY0MJAJoIAgUEdGhpcwUBbQQCY0QEAmFpBQJjQwMJAAECBQJhaQIDSW50BAJiVQUCYWkJAMwIAgkBDEludGVnZXJFbnRyeQIFAWwFAmJVCQDMCAIJAQtEZWxldGVFbnRyeQEFAW0FA25pbAMJAAECBQJhaQIEVW5pdAUDbmlsCQACAQILTWF0Y2ggZXJyb3IJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBSAEFAmNCBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAUIFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUBcAUCY0IJAMwIAgkBDEludGVnZXJFbnRyeQIFAXkFAWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFuAQUBbwUCYkIFA25pbAUCY0QGAwMFAmN0CQAAAgUCYkoFBHVuaXQHCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAXkFAWYFA25pbAYDCQAAAgUCYkoFBHVuaXQJAJQKAgUDbmlsBwMJAAACBQJiSgUBZAQCY0UJAKIIAQUBegQCYWkFAmNFAwkAAQIFAmFpAgRVbml0BAJjRgkAoggBCQECYVYBBQJhUwMJAAECBQJjRgIEVW5pdAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF5BQFlCQDMCAIJAQtEZWxldGVFbnRyeQEFAXoFA25pbAYDCQABAgUCY0YCBlN0cmluZwQCY0cFAmNGCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBegUCY0cFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQJhaQIGU3RyaW5nBAJiVwUCYWkEAmNICQCiCAEJAQJiYgIFAmFTBQJiVwMJAAACBQJjSAUCY0gEAmN4CQD8BwQFBHRoaXMCGnByb2Nlc3NQb29sQmFsYW5jZUlOVEVSTkFMCQDMCAIFAmJXBQNuaWwFA25pbAMJAAACBQJjeAUCY3gEAmNGBQJjSAMJAAECBQJjRgIEVW5pdAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQF5BQFlCQDMCAIJAQtEZWxldGVFbnRyeQEFAXoFA25pbAYDCQABAgUCY0YCBlN0cmluZwQCY0cFAmNGCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBegUCY0cFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECC01hdGNoIGVycm9yAwkAAAIFAmJKBQFlBAJjRQkAoggBBQF6BAJjSQkAoggBBQFBBAJhaQUCY0UDCQABAgUCYWkCBFVuaXQEAmNGCQCiCAEJAQJhVgEFAmFTAwkAAQIFAmNGAgRVbml0CQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAXkFAWYJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBegkAzAgCCQELRGVsZXRlRW50cnkBBQFBBQNuaWwGAwkAAQIFAmNGAgZTdHJpbmcEAmNKBQJjRgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAXoFAmNKBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUCYWkCBlN0cmluZwQCYlcFAmFpBAFLCQECYXABBQJiVwQCY0sEAmNGBQJjSQMJAAECBQJjRgIEVW5pdAkAoggBCQECYVYBCQECYVQBBQFLAwkAAQIFAmNGAgZTdHJpbmcEAmNMBQJjRgQCY00JAKIIAQkBAmJiAgkBAmFUAQUBSwUCY0wDCQAAAgUCY00FAmNNBAJjTgkA/AcEBQR0aGlzAhNwcm9jZXNzVm90ZUlOVEVSTkFMCQDMCAIFAmJXCQDMCAIFAmNMBQNuaWwFA25pbAMJAAACBQJjTgUCY04FAmNNCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IEAmNGBQJjSwMJAAECBQJjRgIEVW5pdAQCY0gJAKIIAQkBAmJiAgUCYVMFAmJXBAJjTwUCY0gDCQABAgUCY08CBFVuaXQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBeQUBZgkAzAgCCQELRGVsZXRlRW50cnkBBQF6CQDMCAIJAQtEZWxldGVFbnRyeQEFAUEFA25pbAYDCQABAgUCY08CBlN0cmluZwQCYm4FAmNPCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUBegUCYm4JAMwIAgkBC0RlbGV0ZUVudHJ5AQUBQQUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFAmNGAgZTdHJpbmcEAmNQBQJjRgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAUEFAmNQBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAgtNYXRjaCBlcnJvcgMJAAACBQJiSgUBZgQCY0UJAKIIAQUBegQCYWkFAmNFAwkAAQIFAmFpAgRVbml0BAJjRgkAoggBCQECYVYBBQJhUwMJAAECBQJjRgIEVW5pdAQCY2IDBQJjdAkAzAgCCQELRGVsZXRlRW50cnkBBQF5CQDMCAIJAQtEZWxldGVFbnRyeQEFAUUFA25pbAkAzAgCCQELRGVsZXRlRW50cnkBBQF5CQDMCAIJAQxCb29sZWFuRW50cnkCCQEBSQEFAmNBBgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBQwUBbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUBRAUCYkgFA25pbAQCY1EJAQJhUQADCQAAAgUCY1EFAmNRCQCUCgIFAmNiBgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAECBQJjRgIGU3RyaW5nBAJjRwUCY0YJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQF6BQJjRwUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFAmFpAgZTdHJpbmcEAmJXBQJhaQQCY0gJAKIIAQkBAmJiAgUCYVMFAmJXAwkAAAIFAmNIBQJjSAQCY3gKAAJhbQkA/AcEBQR0aGlzAhNwcm9jZXNzUG9vbElOVEVSTkFMCQDMCAIFAmJXCQDMCAIFAmN0BQNuaWwFA25pbAMJAAECBQJhbQIHQm9vbGVhbgUCYW0JAAIBCQCsAgIJAAMBBQJhbQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgMJAAACBQJjeAUCY3gDBQJjeAkAlAoCBQNuaWwGBAJjRgUCY0gDCQABAgUCY0YCBFVuaXQEAmNiAwUCY3QJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBeQkAzAgCCQELRGVsZXRlRW50cnkBBQFFCQDMCAIJAQtEZWxldGVFbnRyeQEFAXoFA25pbAkAzAgCCQELRGVsZXRlRW50cnkBBQF5CQDMCAIJAQxCb29sZWFuRW50cnkCCQEBSQEFAmNBBgkAzAgCCQEMSW50ZWdlckVudHJ5AgUBQwUBbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUBRAUCYkgJAMwIAgkBC0RlbGV0ZUVudHJ5AQUBegUDbmlsBAJjUQkBAmFRAAMJAAACBQJjUQUCY1EJAJQKAgUCY2IGCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAQIFAmNGAgZTdHJpbmcEAmNHBQJjRgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAXoFAmNHBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgkBAmFkAQIWZmluYWxpemF0aW9uIGlzIGJyb2tlbgJicgEPZmluYWxpemVXcmFwcGVyAQJjUgQCY1MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFAXQEAmNUCgACYW0JAPwHBAUEdGhpcwIOZmluYWxpemVIZWxwZXIFA25pbAUDbmlsAwkAAQIFAmFtAgdCb29sZWFuBQJhbQkAAgEJAKwCAgkAAwEFAmFtAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFAmNUBQJjVAMJAQEhAQUCY1QDCQAAAgUCY1IAAAkBAmFkAQIeQ3VycmVudCB2b3RpbmcgaXMgbm90IG92ZXIgeWV0BAJjVQkA/AcEBQJjUwIIZmluYWxpemUFA25pbAUDbmlsAwkAAAIFAmNVBQJjVQkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAmNWCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAXEFAWMDCQBmAgUCY1YFAmNSBAJjVQkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgkAZAIFAmNSAAEFA25pbAUDbmlsAwkAAAIFAmNVBQJjVQkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJyAQhmaW5hbGl6ZQAEAmNVCQD8BwQFBHRoaXMCD2ZpbmFsaXplV3JhcHBlcgkAzAgCAAAFA25pbAUDbmlsAwkAAAIFAmNVBQJjVQkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYnIBFGNvbnRhaW5zTm9kZVJFQURPTkxZAgJhVwJiYQkAlAoCBQNuaWwJAQJiYwIFAmFXBQJiYQJicgEKaW5zZXJ0Tm9kZQICYVcCYmEEAmJYCQECYnQBBQJicgMJAAACBQJiWAUCYlgJAJQKAgkBAmJnAgUCYVcFAmJhBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJyAQpkZWxldGVOb2RlAgJhVwJiYQQCYlgJAQJidAEFAmJyAwkAAAIFAmJYBQJiWAkAlAoCCQECYmoCBQJhVwUCYmEFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYnIBGGlzRmluYWxpemF0aW9uSW5Qcm9ncmVzcwAEAmJKCQCaCAIFBHRoaXMFAXkEAmNXCQECIT0CBQJiSgUEdW5pdAkAlAoCBQNuaWwFAmNXAmJyAQpkZWxldGVQb29sAgFNAU4EAmJYAwMJAAACCAUCYnIGY2FsbGVyBQJhcgYJAQJidAEFAmJyBgkBAmFkAQIRUGVybWlzc2lvbiBkZW5pZWQDCQAAAgUCYlgFAmJYBAJhVwIFcG9vbHMEAUsJAJQKAgUBTQUBTgQCYmEJALkJAgkAzAgCBQFNCQDMCAIFAU4FA25pbAUBYQQCY2IDCQECYmMCBQJhVwUCYmEJAQJiagIFAmFXBQJiYQUDbmlsCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAUoBBQFLBQNuaWwFAmNiCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmJyAQZyZXN1bWUDAU0BTgJjWAQCYkoJAJoIAgUEdGhpcwUBeQQCY1kJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBAmFCAgUBTQUBTgkBAmFiAQIOaW52YWxpZCBhc3NldHMEAmNlCAUCY1kCXzEEAmFOCAUCY1kCXzIEAmNaCQCRAwIIBQJicghwYXltZW50cwAABAJjeQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUBeAQCZGECCiVzX19jb25maWcEAmRiAAEEAmJ6CQERQGV4dHJOYXRpdmUoMTA2MikBCQECYWwCBQR0aGlzBQF2BAJkYwkA2QQBCQCRAwIJALUJAgkBEUBleHRyTmF0aXZlKDEwNTMpAgUCYnoFAmRhBQFhBQJkYgQCZGQKAAJhbQkA/AcEBQJjeQISaXNWZXJpZmllZFJFQURPTkxZCQDMCAIFAU0FA25pbAUDbmlsAwkAAQIFAmFtAgdCb29sZWFuBQJhbQkAAgEJAKwCAgkAAwEFAmFtAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJkZQoAAmFtCQD8BwQFAmN5AhJpc1ZlcmlmaWVkUkVBRE9OTFkJAMwIAgUBTgUDbmlsBQNuaWwDCQABAgUCYW0CB0Jvb2xlYW4FAmFtCQACAQkArAICCQADAQUCYW0CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmRmCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUBcgIWaW52YWxpZCByZXN1bXB0aW9uIGZlZQQCYkMJAMwIAgMJAAACBQJiSgUEdW5pdAYJAQJhZAECG2ZpbmFsaXphdGlvbiBpcyBpbiBwcm9ncmVzcwkAzAgCAwkAAAIIBQJjWgdhc3NldElkBQJkYwYJAQJhZAECHGludmFsaWQgZmVlIHBheW1lbnQgYXNzZXQgaWQJAMwIAgMJAAACCAUCY1oGYW1vdW50BQJkZgYJAQJhZAECGmludmFsaWQgZmVlIHBheW1lbnQgYW1vdW50CQDMCAIDAwUCZGQFAmRlBwYJAQJhZAECHmJvdGggYXNzZXRzIHNob3VsZCBiZSB2ZXJpZmllZAUDbmlsAwkAAAIFAmJDBQJiQwQCZGcJAPAHAgUEdGhpcwUCYU4DCQAAAgUCZGcFAmRnBAJkaAcEAmRpAwkAAAIJAJADAQgFAmJyCHBheW1lbnRzAAEEAmNhCgACYW0JAPwHBAUCYXICDGNoZWNrQmFsYW5jZQkAzAgCCQECYUEBBQJhTgUDbmlsBQNuaWwDCQABAgUCYW0CB0Jvb2xlYW4FAmFtCQACAQkArAICCQADAQUCYW0CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DBQJjYQYJAQJhZAECGWFzc2V0cyBzaG91bGQgYmUgYXR0YWNoZWQDCQAAAgkAkAMBCAUCYnIIcGF5bWVudHMAAgQCZGoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA8QcBBQJjZQkBAmFiAQIccG9vbCBhZGRyZXNzIGlzIG5vdCBzY3JpcHRlZAQCZGsJANsEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFyCQEBRwAJAQJhYgECKGFsbG93ZWQgbHAgc3RhYmxlIHNjcmlwdCBoYXNoIGlzIG5vdCBzZXQEAmRsCQAAAgUCZGoFAmRrBAJkbQMFAmRsAgtwdXRPbmVUa25WMgIJcHV0T25lVGtuCQD8BwQFAmNlBQJkbQkAzAgCBQJjWAkAzAgCBQJkaAUDbmlsCQDMCAIJAJEDAggFAmJyCHBheW1lbnRzAAEFA25pbAMJAAACCQCQAwEIBQJicghwYXltZW50cwADCQD8BwQFAmNlAgNwdXQJAMwIAgUCY1gJAMwIAgUCZGgFA25pbAkAzAgCCQCRAwIIBQJicghwYXltZW50cwABCQDMCAIJAJEDAggFAmJyCHBheW1lbnRzAAIFA25pbAkBAmFkAQIVaW52YWxpZCBwYXltZW50cyBzaXplAwkAAAIFAmRpBQJkaQQCZG4JAPAHAgUEdGhpcwUCYU4DCQAAAgUCZG4FAmRuBAJkbwkAZQIFAmRuBQJkZwQCZHADCQBmAgUCZG8AAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCYnIGY2FsbGVyBQJkbwUCYU4FA25pbAUDbmlsBAJkcQkA/AcEBQJhcgIWc2V0V3hFbWlzc2lvblBvb2xMYWJlbAkAzAgCBQFNCQDMCAIFAU4FA25pbAUDbmlsAwkAAAIFAmRxBQJkcQQCZHIKAAJhbQkA/AcEBQJhcgIVZ2V0UG9vbFN0YXR1c1JFQURPTkxZCQDMCAIJAKUIAQUCY2UFA25pbAUDbmlsAwkAAQIFAmFtAgNJbnQFAmFtCQACAQkArAICCQADAQUCYW0CGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCY2YDCQAAAgUCZHIFAWoJAPwHBAUCYXICCm1hbmFnZVBvb2wJAMwIAgkApQgBBQJjZQkAzAgCBQFoBQNuaWwFA25pbAUEdW5pdAMJAAACBQJjZgUCY2YEAUsJAJQKAgUBTQUBTgQCYkQJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAUoBBQFLBgUDbmlsCQECYmcCBQJhUwkBAmFvAQUBSwkAlAoCCQDOCAIFAmJEBQJkcAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZHMBAmR0AAQCZHUEAmFpCQECYm8AAwkAAQIFAmFpAgpCeXRlVmVjdG9yBAJicwUCYWkFAmJzAwkAAQIFAmFpAgRVbml0CAUCZHMPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmRzCWJvZHlCeXRlcwkAkQMCCAUCZHMGcHJvb2ZzAAAFAmR1uodZfQ==", "height": 3074113, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5HmkgC4yPdmKxBECrSjaNrXpyJUdUC5mTa1Xgq85b2ru Next: 92ea3wYcCXBKmFveQCqZYdk1c1BdNCBy77wUCXKQj3FL 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 = 2
1515
1616 let g = "WAVES"
1717
1818 let h = 1
1919
2020 let i = 2
2121
2222 let j = 3
2323
2424 let k = 4
2525
2626 let l = makeString(["%s", "epochLength"], a)
2727
2828 let m = makeString(["%s%s", "epochLength__new"], a)
2929
3030 func n (o) = makeString(["%s%d", "epochLength", toString(o)], a)
3131
3232
3333 let p = makeString(["%s", "currentEpoch"], a)
3434
3535 let q = makeString(["%s", "maxDepth"], a)
3636
3737 let r = makeString(["%s", "resumptionFee"], a)
3838
3939 let s = makeString(["%s", "votingEmissionCandidateContract"], a)
4040
4141 let t = makeString(["%s", "votingEmissionRateContract"], a)
4242
4343 let u = makeString(["%s", "factoryContract"], a)
4444
4545 let v = makeString(["%s", "boostingContract"], a)
4646
4747 let w = makeString(["%s", "stakingContract"], a)
4848
4949 let x = makeString(["%s", "assetsStoreContract"], a)
5050
5151 let y = makeString(["%s", "finalizationStage"], a)
5252
5353 let z = makeString(["%s", "nextPool"], a)
5454
5555 let A = makeString(["%s", "nextUser"], a)
5656
5757 let B = makeString(["%s", "startHeight"], a)
5858
5959 let C = makeString(["%s", "currentEpochUi"], a)
6060
6161 let D = makeString(["%s", "startHeightUi"], a)
6262
6363 let E = makeString(["%s", "force"], a)
6464
6565 func F () = "%s__allowedLpScriptHash"
6666
6767
6868 func G () = "%s__allowedLpStableScriptHash"
6969
7070
7171 func H (o) = makeString(["%s%d", "startHeight", toString(o)], a)
7272
7373
7474 func I (o) = makeString(["%s%d", "finalized", toString(o)], a)
7575
7676
7777 func J (K) = {
7878 let L = K
7979 let M = L._1
8080 let N = L._2
8181 makeString(["%s%s%s", "inList", M, N], a)
8282 }
8383
8484
8585 func O (P,o) = makeString(["%s%s%d", "used", toString(P), toString(o)], a)
8686
8787
8888 func Q (K,P,o) = {
8989 let R = K
9090 let M = R._1
9191 let N = R._2
9292 makeString(["%s%s%s%s%d", "vote", M, N, toString(P), toString(o)], a)
9393 }
9494
9595
9696 func S (K,o) = {
9797 let T = K
9898 let M = T._1
9999 let N = T._2
100100 makeString(["%s%s%s%d", "votingResult", M, N, toString(o)], a)
101101 }
102102
103103
104104 func U (V,o) = makeString(["%s%s%d", "votingResultStaked", V, toString(o)], a)
105105
106106
107107 func W (K,o) = {
108108 let X = K
109109 let M = X._1
110110 let N = X._2
111111 makeString(["%s%s%s%d", "poolShare", M, N, toString(o)], a)
112112 }
113113
114114
115115 func Y (o) = makeString(["%s%d", "totalVotes", toString(o)], a)
116116
117117
118118 func Z (V,aa) = makeString(["%s%s%s", "staked", aa, V], a)
119119
120120
121121 func ab (ac) = makeString(["voting_emission.ride:", ac], " ")
122122
123123
124124 func ad (ac) = throw(ab(ac))
125125
126126
127127 func ae (P,af,ag) = {
128128 let ah = ab(makeString(["mandatory ", toString(P), ".", af, " is not defined"], ""))
129129 valueOrErrorMessage({
130130 let ai = ag
131131 if ($isInstanceOf(ai, "String"))
132132 then {
133133 let aj = ai
134134 getString(P, af)
135135 }
136136 else if ($isInstanceOf(ai, "Int"))
137137 then {
138138 let ak = ai
139139 getInteger(P, af)
140140 }
141141 else ad("invalid entry type")
142142 }, ah)
143143 }
144144
145145
146146 func al (P,af) = {
147147 let am = ae(P, af, "")
148148 if ($isInstanceOf(am, "String"))
149149 then am
150150 else throw(($getType(am) + " couldn't be cast to String"))
151151 }
152152
153153
154154 func an (P,af) = {
155155 let am = ae(P, af, 0)
156156 if ($isInstanceOf(am, "Int"))
157157 then am
158158 else throw(($getType(am) + " couldn't be cast to Int"))
159159 }
160160
161161
162162 func ao (K) = ((K._1 + a) + K._2)
163163
164164
165165 func ap (aj) = {
166166 let aq = split(aj, a)
167167 if ((size(aq) == 2))
168168 then $Tuple2(aq[0], aq[1])
169169 else ad("invalid pool string")
170170 }
171171
172172
173173 let ar = addressFromStringValue(al(this, u))
174174
175175 let as = 10
176176
177177 func at () = "%s__factoryConfig"
178178
179179
180180 func au (av) = split(al(av, at()), a)
181181
182182
183183 func aw (ax) = addressFromStringValue(ax[as])
184184
185185
186186 func ay (az) = if ((az == g))
187187 then unit
188188 else fromBase58String(az)
189189
190190
191191 func aA (az) = if ((az == unit))
192192 then g
193193 else toBase58String(value(az))
194194
195195
196196 func aB (M,N) = {
197197 let aC = {
198198 let am = invoke(ar, "poolInfoREADONLY", [M, N], nil)
199199 if ($isInstanceOf(am, "(Address, ByteVector)"))
200200 then am
201201 else unit
202202 }
203203 aC
204204 }
205205
206206
207207 func aD (M,N) = {
208208 func aE (aF) = ("%s%s%s__mappings__baseAsset2internalId__" + aF)
209209
210210 func aG (aH,aI) = (((("%d%d%s%s__" + toString(aH)) + "__") + toString(aI)) + "__mappings__poolAssets2PoolContract")
211211
212212 func aJ (aK) = (("%s%s%s__" + aK) + "__mappings__poolContract2LpAsset")
213213
214214 let aL = an(ar, aE(M))
215215 let aM = an(ar, aE(N))
216216 let aK = al(ar, aG(aL, aM))
217217 let aN = al(ar, aJ(aK))
218218 aN
219219 }
220220
221221
222222 func aO (K) = {
223223 let aP = K
224224 let M = aP._1
225225 let N = aP._2
226226 let am = invoke(ar, "checkWxEmissionPoolLabel", [M, N], nil)
227227 if ($isInstanceOf(am, "Boolean"))
228228 then am
229229 else throw(($getType(am) + " couldn't be cast to Boolean"))
230230 }
231231
232232
233233 func aQ () = {
234234 let ax = au(ar)
235235 let aR = aw(ax)
236236 invoke(aR, "deposit", nil, nil)
237237 }
238238
239239
240240 let aS = "pools"
241241
242242 func aT (K) = {
243243 let aU = K
244244 let M = aU._1
245245 let N = aU._2
246246 makeString(["votes", M, N], a)
247247 }
248248
249249
250250 func aV (aW) = {
251251 let aX = if ((aW == aS))
252252 then "%s%s"
253253 else "%s%s%s%s"
254254 makeString([aX, aW, "head"], a)
255255 }
256256
257257
258258 func aY (aW) = {
259259 let aX = if ((aW == aS))
260260 then "%s%s"
261261 else "%s%s%s%s"
262262 makeString([aX, aW, "size"], a)
263263 }
264264
265265
266266 func aZ (aW,ba) = {
267267 let aX = if ((aW == aS))
268268 then "%s%s%s%s"
269269 else "%s%s%s%s%s"
270270 makeString([aX, aW, ba, "prev"], a)
271271 }
272272
273273
274274 func bb (aW,ba) = {
275275 let aX = if ((aW == aS))
276276 then "%s%s%s%s"
277277 else "%s%s%s%s%s"
278278 makeString([aX, aW, ba, "next"], a)
279279 }
280280
281281
282282 func bc (aW,ba) = {
283283 let bd = getString(this, aV(aW))
284284 let be = getString(this, aZ(aW, ba))
285285 let bf = getString(this, bb(aW, ba))
286286 if (if ((ba == valueOrElse(bd, "")))
287287 then true
288288 else (be != unit))
289289 then true
290290 else (bf != unit)
291291 }
292292
293293
294294 func bg (aW,ba) = {
295295 let bd = getString(this, aV(aW))
296296 let bh = valueOrElse(getInteger(this, aY(aW)), 0)
297297 let bi = if (!(bc(aW, ba)))
298298 then true
299299 else ad("Node exists")
300300 if ((bi == bi))
301301 then (([IntegerEntry(aY(aW), (bh + 1))] ++ (if ((bd != unit))
302302 then [StringEntry(bb(aW, ba), value(bd)), StringEntry(aZ(aW, value(bd)), ba)]
303303 else nil)) ++ [StringEntry(aV(aW), ba)])
304304 else throw("Strict value is not equal to itself.")
305305 }
306306
307307
308308 func bj (aW,ba) = {
309309 let bd = getString(this, aV(aW))
310310 let bh = valueOrElse(getInteger(this, aY(aW)), 0)
311311 let be = getString(this, aZ(aW, ba))
312312 let bf = getString(this, bb(aW, ba))
313313 ([IntegerEntry(aY(aW), (bh - 1))] ++ (if (if ((be != unit))
314314 then (bf != unit)
315315 else false)
316316 then [StringEntry(bb(aW, value(be)), value(bf)), StringEntry(aZ(aW, value(bf)), value(be)), DeleteEntry(aZ(aW, ba)), DeleteEntry(bb(aW, ba))]
317317 else if ((bf != unit))
318318 then [StringEntry(aV(aW), value(bf)), DeleteEntry(bb(aW, ba)), DeleteEntry(aZ(aW, value(bf)))]
319319 else if ((be != unit))
320320 then [DeleteEntry(aZ(aW, ba)), DeleteEntry(bb(aW, value(be)))]
321321 else if ((ba == valueOrElse(bd, "")))
322322 then [DeleteEntry(aV(aW))]
323323 else ad(((("invalid node: " + aW) + ".") + ba))))
324324 }
325325
326326
327327 func bk () = "%s__managerVaultAddress"
328328
329329
330330 func bl () = "%s__managerPublicKey"
331331
332332
333333 func bm () = {
334334 let ai = getString(bk())
335335 if ($isInstanceOf(ai, "String"))
336336 then {
337337 let bn = ai
338338 addressFromStringValue(bn)
339339 }
340340 else this
341341 }
342342
343343
344344 func bo () = {
345345 let bp = bm()
346346 let ai = getString(bp, bl())
347347 if ($isInstanceOf(ai, "String"))
348348 then {
349349 let bn = ai
350350 fromBase58String(bn)
351351 }
352352 else if ($isInstanceOf(ai, "Unit"))
353353 then unit
354354 else throw("Match error")
355355 }
356356
357357
358358 func bq (br) = {
359359 let ai = bo()
360360 if ($isInstanceOf(ai, "ByteVector"))
361361 then {
362362 let bs = ai
363363 (br.callerPublicKey == bs)
364364 }
365365 else if ($isInstanceOf(ai, "Unit"))
366366 then (br.caller == this)
367367 else throw("Match error")
368368 }
369369
370370
371371 func bt (br) = if (bq(br))
372372 then true
373373 else throw("permission denied")
374374
375375
376376 func bu (br) = if ((br.caller == this))
377377 then true
378378 else throw("permission denied")
379379
380380
381381 @Callable(br)
382382 func getUserGwxAmountAtHeight (bv,bw) = {
383383 let bx = valueOrErrorMessage(addressFromString(al(this, v)), ab("invalid boosting contract address"))
384384 $Tuple2(nil, {
385385 let am = invoke(bx, "getUserGwxAmountAtHeightREADONLY", [bv, bw], nil)
386386 if ($isInstanceOf(am, "Int"))
387387 then am
388388 else throw(($getType(am) + " couldn't be cast to Int"))
389389 })
390390 }
391391
392392
393393
394394 @Callable(br)
395395 func constructor (ar,by,bz,bA,bB) = {
396396 let bC = [bt(br), if ((addressFromString(ar) != unit))
397397 then true
398398 else "invalid factory contract address", if ((addressFromString(by) != unit))
399399 then true
400400 else "invalid voting emission candidate contract address", if ((addressFromString(bz) != unit))
401401 then true
402402 else "invalid boosting contract address", if ((addressFromString(bA) != unit))
403403 then true
404404 else "invalid staking contract address", if ((bB > 0))
405405 then true
406406 else ad("invalid epoch length")]
407407 if ((bC == bC))
408408 then $Tuple2([StringEntry(u, ar), StringEntry(s, by), StringEntry(v, bz), StringEntry(w, bA), IntegerEntry(l, bB)], unit)
409409 else throw("Strict value is not equal to itself.")
410410 }
411411
412412
413413
414414 @Callable(br)
415415 func create (M,N) = {
416416 let bC = [if ((toBase58String(br.caller.bytes) == valueOrElse(getString(this, s), "")))
417417 then true
418418 else bt(br)]
419419 if ((bC == bC))
420420 then {
421421 let K = $Tuple2(M, N)
422422 let bD = ([BooleanEntry(J(K), true)] ++ bg(aS, ao(K)))
423423 let bE = (getInteger(this, p) == unit)
424424 let bF = if (bE)
425425 then {
426426 let o = 0
427427 [IntegerEntry(p, o), IntegerEntry(H(o), height), IntegerEntry(B, height), IntegerEntry(C, o), IntegerEntry(D, height)]
428428 }
429429 else nil
430430 $Tuple2((bD ++ bF), unit)
431431 }
432432 else throw("Strict value is not equal to itself.")
433433 }
434434
435435
436436
437437 @Callable(br)
438438 func vote (M,N,bG) = {
439439 let K = $Tuple2(M, N)
440440 let o = valueOrElse(getInteger(this, p), 0)
441441 let bH = an(this, H(o))
442442 let bB = an(this, l)
443443 let bI = (bH + bB)
444444 let bJ = getInteger(this, y)
445445 let bK = valueOrElse(getInteger(this, O(br.caller, o)), 0)
446446 let bL = valueOrElse(getInteger(this, Q(K, br.caller, o)), 0)
447447 let bM = valueOrElse(getInteger(this, S(K, o)), 0)
448448 let bN = valueOrElse(getInteger(this, Y(o)), 0)
449449 let bO = {
450450 let am = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(br.caller.bytes), bI], nil)
451451 if ($isInstanceOf(am, "Int"))
452452 then am
453453 else throw(($getType(am) + " couldn't be cast to Int"))
454454 }
455455 let bP = (bO - bK)
456456 let bQ = (bL + bG)
457457 let bR = aO(K)
458458 let bC = [if ((getBoolean(J(K)) != unit))
459459 then true
460460 else ad("invalid assets"), if ((bI > height))
461461 then true
462462 else ad("invalid height"), if ((bJ == unit))
463463 then true
464464 else ad("finalization in progress"), if ((bO > 0))
465465 then true
466466 else ad("you do not have gWX"), if (if ((bG > 0))
467467 then (bP >= bG)
468468 else false)
469469 then true
470470 else ad("invalid amount"), if (bR)
471471 then true
472472 else ad("pool hasn't WX_EMISSION label")]
473473 if ((bC == bC))
474474 then {
475475 let bS = aT(K)
476476 let aa = toString(br.caller)
477477 let bT = if (bc(bS, aa))
478478 then nil
479479 else bg(bS, aa)
480480 $Tuple2(([IntegerEntry(O(br.caller, o), (bK + bG)), IntegerEntry(Q(K, br.caller, o), bQ), IntegerEntry(S(K, o), (bM + bG)), IntegerEntry(Y(o), (bN + bG))] ++ bT), unit)
481481 }
482482 else throw("Strict value is not equal to itself.")
483483 }
484484
485485
486486
487487 @Callable(br)
488488 func cancelVote (M,N) = {
489489 let K = $Tuple2(M, N)
490490 let o = valueOrElse(getInteger(this, p), 0)
491491 let bH = an(this, H(o))
492492 let bB = an(this, l)
493493 let bI = (bH + bB)
494494 let bJ = getInteger(this, y)
495495 let bK = valueOrElse(getInteger(this, O(br.caller, o)), 0)
496496 let bL = valueOrElse(getInteger(this, Q(K, br.caller, o)), 0)
497497 let bM = valueOrElse(getInteger(this, S(K, o)), 0)
498498 let bN = valueOrElse(getInteger(this, Y(o)), 0)
499499 let bC = [if ((getBoolean(J(K)) != unit))
500500 then true
501501 else ad("invalid assets"), if ((bI > height))
502502 then true
503503 else ad("invalid height"), if ((bJ == unit))
504504 then true
505505 else ad("finalization in progress"), if ((bL > 0))
506506 then true
507507 else ad("no vote")]
508508 if ((bC == bC))
509509 then {
510510 let bS = aT(K)
511511 let aa = toString(br.caller)
512512 $Tuple2(([IntegerEntry(O(br.caller, o), max([(bK - bL), 0])), DeleteEntry(Q(K, br.caller, o)), IntegerEntry(S(K, o), (bM - bL)), IntegerEntry(Y(o), (bN - bL))] ++ bj(bS, aa)), unit)
513513 }
514514 else throw("Strict value is not equal to itself.")
515515 }
516516
517517
518518
519519 @Callable(br)
520520 func setEpochLength (bU) = {
521521 let bC = [bt(br), if ((bU > 0))
522522 then true
523523 else ad("invalid epoch length")]
524524 if ((bC == bC))
525525 then $Tuple2([IntegerEntry(m, bU)], unit)
526526 else throw("Strict value is not equal to itself.")
527527 }
528528
529529
530530
531531 @Callable(br)
532532 func setMaxDepth (bV) = {
533533 let bC = [bt(br), if ((bV > 0))
534534 then true
535535 else ad("invalid max depth")]
536536 if ((bC == bC))
537537 then $Tuple2([IntegerEntry(q, bV)], unit)
538538 else throw("Strict value is not equal to itself.")
539539 }
540540
541541
542542
543543 @Callable(br)
544544 func processPoolBalanceINTERNAL (bW) = {
545545 let bX = bu(br)
546546 if ((bX == bX))
547547 then {
548548 let o = an(this, p)
549549 let bY = (o - 1)
550550 let K = ap(bW)
551551 let bZ = K
552552 let M = bZ._1
553553 let N = bZ._2
554554 let aN = aD(M, N)
555555 let ca = {
556556 let am = invoke(ar, "checkBalance", [aN], nil)
557557 if ($isInstanceOf(am, "Boolean"))
558558 then am
559559 else throw(($getType(am) + " couldn't be cast to Boolean"))
560560 }
561561 let cb = if (!(ca))
562562 then {
563563 let cc = invoke(ar, "deleteWxEmissionPoolLabel", [M, N], nil)
564564 if ((cc == cc))
565565 then {
566566 let cd = invoke(ar, "modifyWeight", [aN, 0], nil)
567567 if ((cd == cd))
568568 then {
569569 let ce = valueOrErrorMessage(aB(M, N), ab("invalid assets"))._1
570570 let cf = invoke(ar, "managePool", [toString(ce), j], nil)
571571 if ((cf == cf))
572572 then {
573573 let cg = ([DeleteEntry(J(K))] ++ bj(aS, ao(K)))
574574 ([IntegerEntry(W(K, bY), 0)] ++ cg)
575575 }
576576 else throw("Strict value is not equal to itself.")
577577 }
578578 else throw("Strict value is not equal to itself.")
579579 }
580580 else throw("Strict value is not equal to itself.")
581581 }
582582 else nil
583583 $Tuple2(cb, unit)
584584 }
585585 else throw("Strict value is not equal to itself.")
586586 }
587587
588588
589589
590590 @Callable(br)
591591 func processVoteINTERNAL (bW,aa) = {
592592 let bX = bu(br)
593593 if ((bX == bX))
594594 then {
595595 let bv = valueOrErrorMessage(addressFromString(aa), ab(("processVoteINTERNAL: invalid user address " + aa)))
596596 let o = an(this, p)
597597 let bY = (o - 1)
598598 let bB = an(this, l)
599599 let bH = an(this, H(o))
600600 let bI = (bH + bB)
601601 let ch = an(this, H(bY))
602602 let ci = an(this, n(bY))
603603 let cj = (ch + ci)
604604 let ck = if ((bY >= 0))
605605 then true
606606 else ad("processVoteINTERNAL: invalid previous epoch")
607607 if ((ck == ck))
608608 then {
609609 let K = ap(bW)
610610 let cl = K
611611 let M = cl._1
612612 let N = cl._2
613613 let bO = {
614614 let am = invoke(this, "getUserGwxAmountAtHeight", [aa, bI], nil)
615615 if ($isInstanceOf(am, "Int"))
616616 then am
617617 else throw(($getType(am) + " couldn't be cast to Int"))
618618 }
619619 let cm = {
620620 let am = invoke(this, "getUserGwxAmountAtHeight", [aa, cj], nil)
621621 if ($isInstanceOf(am, "Int"))
622622 then am
623623 else throw(($getType(am) + " couldn't be cast to Int"))
624624 }
625625 let bN = valueOrElse(getInteger(Y(o)), 0)
626626 let cn = valueOrElse(getInteger(S(K, o)), 0)
627627 let co = getInteger(Q(K, bv, bY))
628628 let cp = valueOrErrorMessage(co, ab((((("processVoteINTERNAL " + bW) + " ") + aa) + ": no previous vote")))
629629 let bK = valueOrElse(getInteger(this, O(bv, o)), 0)
630630 let V = aD(M, N)
631631 let cq = valueOrElse(getInteger(U(V, bY)), 0)
632632 let bA = addressFromStringValue(al(this, w))
633633 let cr = valueOrElse(getInteger(bA, Z(V, aa)), 0)
634634 let cs = if (if ((cr == 0))
635635 then true
636636 else (co == unit))
637637 then nil
638638 else [IntegerEntry(U(V, bY), (cq + cp))]
639639 let aN = aD(M, N)
640640 let bQ = if ((cm > 0))
641641 then fraction(cp, bO, cm)
642642 else 0
643643 let cb = if (if ((co == unit))
644644 then true
645645 else (0 >= bQ))
646646 then bj(aT(K), aa)
647647 else [IntegerEntry(Q(K, bv, o), bQ), IntegerEntry(Y(o), (bN + bQ)), IntegerEntry(S(K, o), (cn + bQ)), IntegerEntry(O(bv, o), (bK + bQ))]
648648 $Tuple2((cb ++ cs), unit)
649649 }
650650 else throw("Strict value is not equal to itself.")
651651 }
652652 else throw("Strict value is not equal to itself.")
653653 }
654654
655655
656656
657657 @Callable(br)
658658 func processPoolINTERNAL (bW,ct) = {
659659 let bX = bu(br)
660660 if ((bX == bX))
661661 then {
662662 let cu = {
663663 let cv = an(this, p)
664664 if (ct)
665665 then cv
666666 else (cv - 1)
667667 }
668668 let ck = if ((cu >= 0))
669669 then true
670670 else ad("processPoolINTERNAL: invalid target epoch")
671671 if ((ck == ck))
672672 then {
673673 let K = ap(bW)
674674 let cw = K
675675 let M = cw._1
676676 let N = cw._2
677677 let bA = addressFromStringValue(al(this, w))
678678 let aN = aD(M, N)
679679 let cx = {
680680 let am = invoke(bA, "usersListTraversal", [aN], nil)
681681 if ($isInstanceOf(am, "Boolean"))
682682 then am
683683 else throw(($getType(am) + " couldn't be cast to Boolean"))
684684 }
685685 if ((cx == cx))
686686 then if (cx)
687687 then $Tuple2(nil, true)
688688 else {
689689 let cy = addressFromStringValue(valueOrErrorMessage(getString(ar, x), "invalid assets store contract"))
690690 let bN = valueOrElse(getInteger(this, Y(cu)), 0)
691691 let cn = valueOrElse(getInteger(this, S(K, cu)), 0)
692692 let cz = if ((bN == 0))
693693 then 0
694694 else fraction(cn, b, bN)
695695 let cd = invoke(ar, "modifyWeight", [aN, cz], nil)
696696 if ((cd == cd))
697697 then $Tuple2([IntegerEntry(W(K, cu), cz)], false)
698698 else throw("Strict value is not equal to itself.")
699699 }
700700 else throw("Strict value is not equal to itself.")
701701 }
702702 else throw("Strict value is not equal to itself.")
703703 }
704704 else throw("Strict value is not equal to itself.")
705705 }
706706
707707
708708
709709 @Callable(br)
710710 func finalizeHelper () = {
711711 let ct = valueOrElse(getBoolean(E), false)
712712 let o = valueOrElse(getInteger(this, p), 0)
713713 let cA = (o - 1)
714714 let bH = an(this, H(o))
715715 let bB = an(this, l)
716716 let bI = (bH + bB)
717717 let bJ = getInteger(this, y)
718718 if (if (if ((height >= bI))
719719 then (bJ == unit)
720720 else false)
721721 then !(ct)
722722 else false)
723723 then {
724724 let cB = (o + 1)
725725 let cC = getInteger(this, m)
726726 let cD = {
727727 let ai = cC
728728 if ($isInstanceOf(ai, "Int"))
729729 then {
730730 let bU = ai
731731 [IntegerEntry(l, bU), DeleteEntry(m)]
732732 }
733733 else if ($isInstanceOf(ai, "Unit"))
734734 then nil
735735 else throw("Match error")
736736 }
737737 $Tuple2(([IntegerEntry(H(cB), height), IntegerEntry(B, height), IntegerEntry(p, cB), IntegerEntry(y, d), IntegerEntry(n(o), bB)] ++ cD), true)
738738 }
739739 else if (if (ct)
740740 then (bJ == unit)
741741 else false)
742742 then $Tuple2([IntegerEntry(y, f)], true)
743743 else if ((bJ == unit))
744744 then $Tuple2(nil, false)
745745 else if ((bJ == d))
746746 then {
747747 let cE = getString(z)
748748 let ai = cE
749749 if ($isInstanceOf(ai, "Unit"))
750750 then {
751751 let cF = getString(aV(aS))
752752 if ($isInstanceOf(cF, "Unit"))
753753 then $Tuple2([IntegerEntry(y, e), DeleteEntry(z)], true)
754754 else if ($isInstanceOf(cF, "String"))
755755 then {
756756 let cG = cF
757757 $Tuple2([StringEntry(z, cG)], true)
758758 }
759759 else throw("Match error")
760760 }
761761 else if ($isInstanceOf(ai, "String"))
762762 then {
763763 let bW = ai
764764 let cH = getString(bb(aS, bW))
765765 if ((cH == cH))
766766 then {
767767 let cx = invoke(this, "processPoolBalanceINTERNAL", [bW], nil)
768768 if ((cx == cx))
769769 then {
770770 let cF = cH
771771 if ($isInstanceOf(cF, "Unit"))
772772 then $Tuple2([IntegerEntry(y, e), DeleteEntry(z)], true)
773773 else if ($isInstanceOf(cF, "String"))
774774 then {
775775 let cG = cF
776776 $Tuple2([StringEntry(z, cG)], true)
777777 }
778778 else throw("Match error")
779779 }
780780 else throw("Strict value is not equal to itself.")
781781 }
782782 else throw("Strict value is not equal to itself.")
783783 }
784784 else throw("Match error")
785785 }
786786 else if ((bJ == e))
787787 then {
788788 let cE = getString(z)
789789 let cI = getString(A)
790790 let ai = cE
791791 if ($isInstanceOf(ai, "Unit"))
792792 then {
793793 let cF = getString(aV(aS))
794794 if ($isInstanceOf(cF, "Unit"))
795795 then $Tuple2([IntegerEntry(y, f), DeleteEntry(z), DeleteEntry(A)], true)
796796 else if ($isInstanceOf(cF, "String"))
797797 then {
798798 let cJ = cF
799799 $Tuple2([StringEntry(z, cJ)], true)
800800 }
801801 else throw("Match error")
802802 }
803803 else if ($isInstanceOf(ai, "String"))
804804 then {
805805 let bW = ai
806806 let K = ap(bW)
807807 let cK = {
808808 let cF = cI
809809 if ($isInstanceOf(cF, "Unit"))
810810 then getString(aV(aT(K)))
811811 else if ($isInstanceOf(cF, "String"))
812812 then {
813813 let cL = cF
814814 let cM = getString(bb(aT(K), cL))
815815 if ((cM == cM))
816816 then {
817817 let cN = invoke(this, "processVoteINTERNAL", [bW, cL], nil)
818818 if ((cN == cN))
819819 then cM
820820 else throw("Strict value is not equal to itself.")
821821 }
822822 else throw("Strict value is not equal to itself.")
823823 }
824824 else throw("Match error")
825825 }
826826 let cF = cK
827827 if ($isInstanceOf(cF, "Unit"))
828828 then {
829829 let cH = getString(bb(aS, bW))
830830 let cO = cH
831831 if ($isInstanceOf(cO, "Unit"))
832832 then $Tuple2([IntegerEntry(y, f), DeleteEntry(z), DeleteEntry(A)], true)
833833 else if ($isInstanceOf(cO, "String"))
834834 then {
835835 let bn = cO
836836 $Tuple2([StringEntry(z, bn), DeleteEntry(A)], true)
837837 }
838838 else throw("Match error")
839839 }
840840 else if ($isInstanceOf(cF, "String"))
841841 then {
842842 let cP = cF
843843 $Tuple2([StringEntry(A, cP)], true)
844844 }
845845 else throw("Match error")
846846 }
847847 else throw("Match error")
848848 }
849849 else if ((bJ == f))
850850 then {
851851 let cE = getString(z)
852852 let ai = cE
853853 if ($isInstanceOf(ai, "Unit"))
854854 then {
855855 let cF = getString(aV(aS))
856856 if ($isInstanceOf(cF, "Unit"))
857857 then {
858858 let cb = if (ct)
859859 then [DeleteEntry(y), DeleteEntry(E)]
860860 else [DeleteEntry(y), BooleanEntry(I(cA), true), IntegerEntry(C, o), IntegerEntry(D, bH)]
861861 let cQ = aQ()
862862 if ((cQ == cQ))
863863 then $Tuple2(cb, true)
864864 else throw("Strict value is not equal to itself.")
865865 }
866866 else if ($isInstanceOf(cF, "String"))
867867 then {
868868 let cG = cF
869869 $Tuple2([StringEntry(z, cG)], true)
870870 }
871871 else throw("Match error")
872872 }
873873 else if ($isInstanceOf(ai, "String"))
874874 then {
875875 let bW = ai
876876 let cH = getString(bb(aS, bW))
877877 if ((cH == cH))
878878 then {
879879 let cx = {
880880 let am = invoke(this, "processPoolINTERNAL", [bW, ct], nil)
881881 if ($isInstanceOf(am, "Boolean"))
882882 then am
883883 else throw(($getType(am) + " couldn't be cast to Boolean"))
884884 }
885885 if ((cx == cx))
886886 then if (cx)
887887 then $Tuple2(nil, true)
888888 else {
889889 let cF = cH
890890 if ($isInstanceOf(cF, "Unit"))
891891 then {
892892 let cb = if (ct)
893893 then [DeleteEntry(y), DeleteEntry(E), DeleteEntry(z)]
894894 else [DeleteEntry(y), BooleanEntry(I(cA), true), IntegerEntry(C, o), IntegerEntry(D, bH), DeleteEntry(z)]
895895 let cQ = aQ()
896896 if ((cQ == cQ))
897897 then $Tuple2(cb, true)
898898 else throw("Strict value is not equal to itself.")
899899 }
900900 else if ($isInstanceOf(cF, "String"))
901901 then {
902902 let cG = cF
903903 $Tuple2([StringEntry(z, cG)], true)
904904 }
905905 else throw("Match error")
906906 }
907907 else throw("Strict value is not equal to itself.")
908908 }
909909 else throw("Strict value is not equal to itself.")
910910 }
911911 else throw("Match error")
912912 }
913913 else ad("finalization is broken")
914914 }
915915
916916
917917
918918 @Callable(br)
919919 func finalizeWrapper (cR) = {
920920 let cS = addressFromStringValue(getStringValue(this, t))
921921 let cT = {
922922 let am = invoke(this, "finalizeHelper", nil, nil)
923923 if ($isInstanceOf(am, "Boolean"))
924924 then am
925925 else throw(($getType(am) + " couldn't be cast to Boolean"))
926926 }
927927 if ((cT == cT))
928928 then if (!(cT))
929929 then if ((cR == 0))
930930 then ad("Current voting is not over yet")
931931 else {
932932 let cU = invoke(cS, "finalize", nil, nil)
933933 if ((cU == cU))
934934 then $Tuple2(nil, unit)
935935 else throw("Strict value is not equal to itself.")
936936 }
937937 else {
938938 let cV = valueOrElse(getInteger(this, q), c)
939939 if ((cV > cR))
940940 then {
941941 let cU = invoke(this, "finalizeWrapper", [(cR + 1)], nil)
942942 if ((cU == cU))
943943 then $Tuple2(nil, unit)
944944 else throw("Strict value is not equal to itself.")
945945 }
946946 else $Tuple2(nil, unit)
947947 }
948948 else throw("Strict value is not equal to itself.")
949949 }
950950
951951
952952
953953 @Callable(br)
954954 func finalize () = {
955955 let cU = invoke(this, "finalizeWrapper", [0], nil)
956956 if ((cU == cU))
957957 then $Tuple2(nil, unit)
958958 else throw("Strict value is not equal to itself.")
959959 }
960960
961961
962962
963963 @Callable(br)
964964 func containsNodeREADONLY (aW,ba) = $Tuple2(nil, bc(aW, ba))
965965
966966
967967
968968 @Callable(br)
969969 func insertNode (aW,ba) = {
970970 let bX = bt(br)
971971 if ((bX == bX))
972972 then $Tuple2(bg(aW, ba), unit)
973973 else throw("Strict value is not equal to itself.")
974974 }
975975
976976
977977
978978 @Callable(br)
979979 func deleteNode (aW,ba) = {
980980 let bX = bt(br)
981981 if ((bX == bX))
982982 then $Tuple2(bj(aW, ba), unit)
983983 else throw("Strict value is not equal to itself.")
984984 }
985985
986986
987987
988988 @Callable(br)
989989 func isFinalizationInProgress () = {
990990 let bJ = getInteger(this, y)
991991 let cW = (bJ != unit)
992992 $Tuple2(nil, cW)
993993 }
994994
995995
996996
997997 @Callable(br)
998998 func deletePool (M,N) = {
999999 let bX = if (if ((br.caller == ar))
10001000 then true
10011001 else bt(br))
10021002 then true
10031003 else ad("Permission denied")
10041004 if ((bX == bX))
10051005 then {
10061006 let aW = "pools"
10071007 let K = $Tuple2(M, N)
10081008 let ba = makeString([M, N], a)
10091009 let cb = if (bc(aW, ba))
10101010 then bj(aW, ba)
10111011 else nil
10121012 ([DeleteEntry(J(K))] ++ cb)
10131013 }
10141014 else throw("Strict value is not equal to itself.")
10151015 }
10161016
10171017
10181018
10191019 @Callable(br)
10201020 func resume (M,N,cX) = {
10211021 let bJ = getInteger(this, y)
10221022 let cY = valueOrErrorMessage(aB(M, N), ab("invalid assets"))
10231023 let ce = cY._1
10241024 let aN = cY._2
10251025 let cZ = br.payments[0]
10261026 let cy = addressFromStringValue(getStringValue(this, x))
10271027 let da = "%s__config"
10281028 let db = 1
10291029 let bz = addressFromStringValue(al(this, v))
10301030 let dc = fromBase58String(split(getStringValue(bz, da), a)[db])
10311031 let dd = {
10321032 let am = invoke(cy, "isVerifiedREADONLY", [M], nil)
10331033 if ($isInstanceOf(am, "Boolean"))
10341034 then am
10351035 else throw(($getType(am) + " couldn't be cast to Boolean"))
10361036 }
10371037 let de = {
10381038 let am = invoke(cy, "isVerifiedREADONLY", [N], nil)
10391039 if ($isInstanceOf(am, "Boolean"))
10401040 then am
10411041 else throw(($getType(am) + " couldn't be cast to Boolean"))
10421042 }
10431043 let df = valueOrErrorMessage(getInteger(this, r), "invalid resumption fee")
10441044 let bC = [if ((bJ == unit))
10451045 then true
10461046 else ad("finalization is in progress"), if ((cZ.assetId == dc))
10471047 then true
10481048 else ad("invalid fee payment asset id"), if ((cZ.amount == df))
10491049 then true
10501050 else ad("invalid fee payment amount"), if (if (dd)
10511051 then de
10521052 else false)
10531053 then true
10541054 else ad("both assets should be verified")]
10551055 if ((bC == bC))
10561056 then {
10571057 let dg = assetBalance(this, aN)
10581058 if ((dg == dg))
10591059 then {
10601060 let dh = false
10611061 let di = if ((size(br.payments) == 1))
10621062 then {
10631063 let ca = {
10641064 let am = invoke(ar, "checkBalance", [aA(aN)], nil)
10651065 if ($isInstanceOf(am, "Boolean"))
10661066 then am
10671067 else throw(($getType(am) + " couldn't be cast to Boolean"))
10681068 }
10691069 if (ca)
10701070 then true
10711071 else ad("assets should be attached")
10721072 }
10731073 else if ((size(br.payments) == 2))
10741074 then {
10751075 let dj = valueOrErrorMessage(scriptHash(ce), ab("pool address is not scripted"))
10761076 let dk = fromBase64String(valueOrErrorMessage(getString(ar, G()), ab("allowed lp stable script hash is not set")))
10771077 let dl = (dj == dk)
10781078 let dm = if (dl)
10791079 then "putOneTknV2"
10801080 else "putOneTkn"
10811081 invoke(ce, dm, [cX, dh], [br.payments[1]])
10821082 }
10831083 else if ((size(br.payments) == 3))
10841084 then invoke(ce, "put", [cX, dh], [br.payments[1], br.payments[2]])
10851085 else ad("invalid payments size")
10861086 if ((di == di))
10871087 then {
10881088 let dn = assetBalance(this, aN)
10891089 if ((dn == dn))
10901090 then {
10911091 let do = (dn - dg)
10921092 let dp = if ((do > 0))
10931093 then [ScriptTransfer(br.caller, do, aN)]
10941094 else nil
10951095 let dq = invoke(ar, "setWxEmissionPoolLabel", [M, N], nil)
10961096 if ((dq == dq))
10971097 then {
10981098 let dr = {
10991099 let am = invoke(ar, "getPoolStatusREADONLY", [toString(ce)], nil)
11001100 if ($isInstanceOf(am, "Int"))
11011101 then am
11021102 else throw(($getType(am) + " couldn't be cast to Int"))
11031103 }
11041104 let cf = if ((dr == j))
11051105 then invoke(ar, "managePool", [toString(ce), h], nil)
11061106 else unit
11071107 if ((cf == cf))
11081108 then {
11091109 let K = $Tuple2(M, N)
11101110 let bD = ([BooleanEntry(J(K), true)] ++ bg(aS, ao(K)))
11111111 $Tuple2((bD ++ dp), unit)
11121112 }
11131113 else throw("Strict value is not equal to itself.")
11141114 }
11151115 else throw("Strict value is not equal to itself.")
11161116 }
11171117 else throw("Strict value is not equal to itself.")
11181118 }
11191119 else throw("Strict value is not equal to itself.")
11201120 }
11211121 else throw("Strict value is not equal to itself.")
11221122 }
11231123 else throw("Strict value is not equal to itself.")
11241124 }
11251125
11261126
11271127 @Verifier(ds)
11281128 func dt () = {
11291129 let du = {
11301130 let ai = bo()
11311131 if ($isInstanceOf(ai, "ByteVector"))
11321132 then {
11331133 let bs = ai
11341134 bs
11351135 }
11361136 else if ($isInstanceOf(ai, "Unit"))
11371137 then ds.senderPublicKey
11381138 else throw("Match error")
11391139 }
11401140 sigVerify(ds.bodyBytes, ds.proofs[0], du)
11411141 }
11421142

github/deemru/w8io/169f3d6 
87.75 ms