tx · FCy44kNSRJvyembiDEeTHSrp6oJU22iUxxkP9MB2LkM2

3Mp3H7MyYcXmiU8cxnatrZh24NAr7LVPJAZ:  -0.03500000 Waves

2022.12.08 09:50 [2351033] smart account 3Mp3H7MyYcXmiU8cxnatrZh24NAr7LVPJAZ > SELF 0.00000000 Waves

{ "type": 13, "id": "FCy44kNSRJvyembiDEeTHSrp6oJU22iUxxkP9MB2LkM2", "fee": 3500000, "feeAssetId": null, "timestamp": 1670482250122, "version": 1, "sender": "3Mp3H7MyYcXmiU8cxnatrZh24NAr7LVPJAZ", "senderPublicKey": "6n5EGrncHbJ1W6Mjs1h83piY92Cy91dZB6NbGK5r52J2", "proofs": [ "2uZjf4TEzqETgkxyau6LjXECs2ZpTWUDAqr76PgqP4643Bj3pionny8m5agjS9wPNLgUYAsvonPAdSXh4HiEwmwx" ], "script": "base64:BgKgLQgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDgwNjM4MjI5Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjA4MDMyMTAxNSIDa0xwIg0kdDAyMTQ4NjIxNTg2Ig11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjQyNzEyNDU2NCIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyNDU2ODI0NzE3IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyINJHQwMjQ4MzkyNDg5OCINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCIEbG9zcyINJHQwMjYzNzUyNjU0MiIHYmFsYW5jZSIPaXNzdWVBbW91bnRCb3RoIg9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDI4MTQ0MjgxOTQiC3RvdGFsQW1vdW50Ig0kdDAyODE5ODI4NDI0IgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iD3Nob3VsZEF1dG9TdGFrZSIEYW1JZCIEcHJJZCIMc2xpcHBhZ2VBSW52IgxzbGlwcGFnZVBJbnYiCmxwVHJhbnNmZXIiC3NscFN0YWtlSW52IhRscEFzc2V0RW1pc3Npb25BZnRlciINJHQwMzI5NDQzMzAxMiIRcmVmcmVzaEtMcEFjdGlvbnMiBWVycm9yIhFpc1VwZGF0ZWRLTHBWYWxpZCILbWF4U2xpcHBhZ2UiDSR0MDMzOTQ0MzQwMDkiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIBQCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzUxOTQzNTM0NiIFYm9udXMiE2VtaXRBbW91bnRFc3RpbWF0ZWQiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzNTkzMjM2MTI5Ig0kdDAzNjEzMjM2MjQwIg0kdDAzNjU0NjM2NzAzIg1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzNzU5NzM3NzUwIg9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDM4MjUwMzg0OTciEGZlZUFtb3VudEZvckNhbGMiDSR0MDM4NTAwMzg2MDgiDSR0MDM4ODY1MzkwMjEiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDM5OTIzNDAwNzQiDSR0MDQwNTY5NDA4MTYiDSR0MDQwODE5NDA5MjciCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDQxODc1NDE5NTciEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDSR0MDQyOTA4NDI5ODkiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyINJHQwNDQxMTI0NDE5MyIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgxjaGVja0Ftb3VudHMiDSR0MDQ1NDg1NDU1NjYiC2FtdEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0Njc1MzQ2ODE3IhBrTHBVcGRhdGVBY3Rpb25zIgphbXRBc3NldElkIgxwcmljZUFzc2V0SWQiDXBvb2xMUEJhbGFuY2UiEmFjY0FtdEFzc2V0QmFsYW5jZSIUYWNjUHJpY2VBc3NldEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNobwABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBSAFJCQCgAwEJALwCAwUBSAkAtgIBBQFJBQFkAQFKAwFIAUkBSwkAoAMBCQC9AgQFAUgJALYCAQUBSQUBZAUBSwEBTAMBTQFOAU8JAGsDBQFNBQFOBQFPAQFQAQFIAwkAZgIAAAUBSAkBAS0BBQFIBQFIAQFRAQFIAwkAvwICBQFlBQFICQC+AgEFAUgFAUgBAVIAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFTAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVQAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVUAAhElcyVzX19wcmljZV9fbGFzdAEBVgIBVwFYCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVwkAzAgCCQCkAwEFAVgFA25pbAUBagEBWQIBWgJhYQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVoCAl9fBQJhYQECYWICAVoCYWEJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFaAgJfXwUCYWEBAmFjAAIPJXNfX2Ftb3VudEFzc2V0AQJhZAACDiVzX19wcmljZUFzc2V0AAJhZQIHJXNfX2ZlZQACYWYJAGsDAAoFAWIAkE4AAmFnCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFlBQJhZgACYWgJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWkJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWoJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYWsAHgACYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWoFAmFrAQJhbQACESVzX19mYWN0b3J5Q29uZmlnAQJhbgACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYW8BAmFwCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFwAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYXECAmFyAmFzCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhcgICX18FAmFzAghfX2NvbmZpZwECYXQBAmF1CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF1AQJhdgACDCVzX19zaHV0ZG93bgECYXcBAmF4CQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXgBAmF5AAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmF6Ahclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUEDAmFCAmFDAmFECQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhQgINIHNlbmRlclZhbGlkPQkApQMBBQJhQwIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYUQBAmFFAgJhRgJhRwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFGBQJhRwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRgkAzAgCAgEuCQDMCAIFAmFHCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFIAgJhRgJhRwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFGBQJhRwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRgkAzAgCAgEuCQDMCAIFAmFHCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFJAQJhSgkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhSgUDbmlsAgEgAQJhSwECYUoJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhSgUDbmlsAgEgAAJhTAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFFAgUEdGhpcwkBAVIAAAJhTQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFFAgUCYUwFAmF6AQJhTgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUwJAQJhdgAHAQJhTwAJANkEAQkBAmFFAgUCYUwJAQJhbgABAmFQAAQCYVEJAQJhRQIFBHRoaXMJAQJhYwAEAmFSCQECYUUCBQR0aGlzCQECYWQABAJhcwkBAmFIAgUCYUwJAQJhdAEFAmFSBAJhcgkBAmFIAgUCYUwJAQJhdAEFAmFRCQC1CQIJAQJhRQIFAmFMCQECYXECCQCkAwEFAmFyCQCkAwEFAmFzBQFqAQJhUwECYVQDCQAAAgUCYVQFAWkFBHVuaXQJANkEAQUCYVQBAmFVAQJhVAMJAAACBQJhVAUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhVAECYVYBAmFXCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYVcFAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVwUBcAkA2QQBCQCRAwIFAmFXBQFxCQECYVMBCQCRAwIFAmFXBQFyCQECYVMBCQCRAwIFAmFXBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVcFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVwUBdQACYVgJAQJhVgEJAQJhUAAAAmFZBQJhWAACYVoIBQJhWQJfMQACYmEIBQJhWQJfMgACYmIIBQJhWQJfMwACYmMIBQJhWQJfNAACYmQIBQJhWQJfNQACYmUIBQJhWQJfNgACYmYIBQJhWQJfNwECYmcACQC1CQIJAQJhRQIFAmFMCQECYW0ABQFqAAJiaAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJnAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYmkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJiZwAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJqCgJiawJibAJibQJibgJibwJicAJicQJicgJicwJidAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmsJAMwIAgkApAMBBQJibAkAzAgCCQCkAwEFAmJtCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwCQDMCAIJAKQDAQUCYnEJAMwIAgkApAMBBQJicgkAzAgCCQCkAwEFAmJzCQDMCAIJAKQDAQUCYnQFA25pbAUBagECYnUGAmJ2AmJ3AmJ4AmJuAmJxAmJyCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyBQNuaWwFAWoBAmJ5AQJiegMJAAACBQJiegIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYnoBAmJBAgJiQgJiQwkAvAIDBQJiQgUBZAUCYkMBAmJEAwJiQgJiQwFLCQC9AgQFAmJCBQFkBQJiQwUBSwECYkUEAmJGAmJHAmJIAmJJBAJiSgkBAUQCBQJiSAUCYkYEAmJLCQEBRAIFAmJJBQJiRwkBAmJBAgUCYksFAmJKAQJiTAMCYkgCYkkCYk0EAmJOCQECYVAABAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJiUQkBAmJFBAUCYk8FAmJQBQJiSAUCYkkEAmJDCQEBRAIFAmJIBQJiTwQCYkIJAQFEAgUCYkkFAmJQBAJiUgkBAUQCBQJiTQUBYgQCYlMJAQJiQQIFAmJDBQJiUgQCYlQJAQJiQQIFAmJCBQJiUgkAzAgCBQJiUQkAzAgCBQJiUwkAzAgCBQJiVAUDbmlsAQJiVQMCYkgCYkkCYk0EAmJWCQECYkwDBQJiSAUCYkkFAmJNCQDMCAIJAQFHAgkAkQMCBQJiVgAABQFiCQDMCAIJAQFHAgkAkQMCBQJiVgABBQFiCQDMCAIJAQFHAgkAkQMCBQJiVgACBQFiBQNuaWwBAmJXBAJiWAJiWQJiWgFaBAJiTgkBAmFQAAQCY2EJAJEDAgUCYk4FAXEEAmNiCQCRAwIFAmJOBQFyBAJjYwkAkQMCBQJiTgUBcwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdQQCY2QJAJEDAgUCYk4FAXAEAmNlCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY2EJAKwCAgkArAICAgZBc3NldCAFAmNhAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmNhBQJiWQkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCY2YJAQJieQEFAmNiBAJjZwkBAUQCBQJjZgUCYkYEAmNoCQECYnkBBQJjYwQCY2kJAQFEAgUCY2gFAmJHBAJjagkBAmJBAgUCY2kFAmNnBAJjawkBAUcCBQJjagUBYgQCY2wJAQFEAgUCYloFAWIEAmNtCQEBRAIFAmNlBQFiBAJjbgkAvAIDBQJjZwUCY2wFAmNtBAJjbwkAvAIDBQJjaQUCY2wFAmNtBAJjcAkBAUcCBQJjbgUCYkYEAmNxCQEBRwIFAmNvBQJiRwQCY3IDCQAAAgUCYlgCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVoFAmNwAwkAAAIFAmNiAgVXQVZFUwUEdW5pdAkA2QQBBQJjYgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFaBQJjcQMJAAACBQJjYwIFV0FWRVMFBHVuaXQJANkEAQUCY2MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgkApQgBBQFaBQJiWAkBAmJ1BgUCY3AFAmNxBQJiWgUCY2sFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY2sJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2sFA25pbAkAnAoKBQJjcAUCY3EFAmNiBQJjYwUCY2YFAmNoBQJjZQUCY2oFAmNkBQJjcgECY3MJAmJYAmN0AmN1AmN2AmN3AmN4AVoCY3kCY3oEAmJOCQECYVAABAJjYQkA2QQBCQCRAwIFAmJOBQFxBAJjQQkAkQMCBQJiTgUBcgQCY0IJAJEDAgUCYk4FAXMEAmNDCQCRAwIFAmJOBQF2BAJjRAkAkQMCBQJiTgUBdwQCYk8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdAQCYlAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdQQCY2QJAJEDAgUCYk4FAXAEAmNlCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNhCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNhAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCY0UJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY3YJANkEAQIFV0FWRVMEAmNGCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmN4CQDZBAECBVdBVkVTAwMJAQIhPQIFAmNBBQJjRQYJAQIhPQIFAmNCBQJjRgkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmNmAwUCY3kJAQJieQEFAmNBCQBlAgkBAmJ5AQUCY0EFAmN1BAJjaAMFAmN5CQECYnkBBQJjQgkAZQIJAQJieQEFAmNCBQJjdwQCY0cJAQFEAgUCY3UFAmJPBAJjSAkBAUQCBQJjdwUCYlAEAmNJCQECYkECBQJjSAUCY0cEAmNnCQEBRAIFAmNmBQJiTwQCY2kJAQFEAgUCY2gFAmJQBAJjSgMJAAACBQJjZQAABAJjagUBZQQCY0sFAWUEAmJSCQB2BgkAuQICBQJjRwUCY0gAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFHAgUCYlIFAWIJAQFHAgUCY0cFAmJPCQEBRwIFAmNIBQJiUAkBAmJBAgkAtwICBQJjaQUCY0gJALcCAgUCY2cFAmNHBQJjSwQCY2oJAQJiQQIFAmNpBQJjZwQCY0sJALwCAwkBAVEBCQC4AgIFAmNqBQJjSQUBZAUCY2oEAmNMCQEBRAIFAmN0BQFiAwMJAQIhPQIFAmNqBQFlCQC/AgIFAmNLBQJjTAcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY0sCHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJjTAQCY20JAQFEAgUCY2UFAWIEAmNNCQC9AgQFAmNHCQECYkQDBQJjaQUCY2cFB0NFSUxJTkcFAWQFB0NFSUxJTkcEAmNOCQC9AgQFAmNIBQFkCQECYkQDBQJjaQUCY2cFBUZMT09SBQdDRUlMSU5HBAJjTwMJAL8CAgUCY00FAmNICQCUCgIFAmNOBQJjSAkAlAoCBQJjRwUCY00EAmNQCAUCY08CXzEEAmNRCAUCY08CXzIEAmJSCQC9AgQFAmNtBQJjUQUCY2kFBUZMT09SCQCXCgUJAQFKAwUCYlIFAWIFBUZMT09SCQEBSgMFAmNQBQJiTwUHQ0VJTElORwkBAUoDBQJjUQUCYlAFB0NFSUxJTkcFAmNqBQJjSwQCY1IIBQJjSgJfMQQCY1MIBQJjSgJfMgQCY1QIBQJjSgJfMwQCY2sJAQFHAggFAmNKAl80BQFiBAJjVQkBAUcCCAUCY0oCXzUFAWIDCQBnAgAABQJjUgkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCY1YDCQEBIQEFAmN6AAAFAmNSBAJjVwkAZQIFAmN1BQJjUwQCY1gJAGUCBQJjdwUCY1QEAmNZCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmNrCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNrCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgUBWgUCYlgJAQJiagoFAmNTBQJjVAUCY1YFAmNrBQJjdAUCY1UFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNXBQJjWAUDbmlsCQCfCg0FAmNSBQJjVgUCY2sFAmNmBQJjaAUCY2UFAmNhBQJjZAUCY1kFAmNXBQJjWAUCY3YFAmN4AQJjWgMCZGECZGICY2UEAmRjCQC8AgMJAHYGCQC5AgIFAmRhBQJkYgAACQC2AgEABQABABIFBERPV04FAWcFAmNlAwkAAAIFAmNlBQFmBQFmBQJkYwECZGQDAmRlAmRmAmRnBAJkaAkAuAICCQC2AgEJAQJieQEJAQJhVQEFAmJjBQJkZQQCZGkJALgCAgkAtgIBCQECYnkBCQECYVUBBQJiZAUCZGYEAmRqCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmIIcXVhbnRpdHkFAmRnBAJkawkBAmNaAwUCZGgFAmRpBQJkagUCZGsBAmRsAwJkbQJkbgJkZwQCZGgJAGQCCQECYnkBCQECYVUBBQJiYwUCZG0EAmRpCQBkAgkBAmJ5AQkBAmFVAQUCYmQFAmRuBAJkagkAZAIICQEFdmFsdWUBCQDsBwEFAmJiCHF1YW50aXR5BQJkZwQCZGMJAQJjWgMJALYCAQUCZGgJALYCAQUCZGkJALYCAQUCZGoEAmRvCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhaQUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFoCQCmAwEFAmRjBQNuaWwJAJQKAgUCZG8FAmRjAQJkcAICZHECZGMDCQDAAgIFAmRjBQJkcQYJAQJhSQEJALkJAgkAzAgCAiJ1cGRhdGVkIEtMcCBsb3dlciB0aGFuIGN1cnJlbnQgS0xwCQDMCAIJAKYDAQUCZHEJAMwIAgkApgMBBQJkYwUDbmlsAgEgAQJkcgECZHMEAmR0CAUCZHMGYW1vdW50BAJkdQkAbgQIBQJkcwZhbW91bnQIBQJkcwVwcmljZQUBYgUFRkxPT1IEAmR2AwkAAAIIBQJkcwlvcmRlclR5cGUFA0J1eQkAlAoCBQJkdAkBAS0BBQJkdQkAlAoCCQEBLQEFAmR0BQJkdQQCZG0IBQJkdgJfMQQCZG4IBQJkdgJfMgMDAwkBAmFOAAYJAAACBQJiYQUBbQYJAAACBQJiYQUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQDAwkBAiE9AggIBQJkcwlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJjBgkBAiE9AggIBQJkcwlhc3NldFBhaXIKcHJpY2VBc3NldAUCYmQJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkdwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQJhaAkBAmFLAQIPa0xwIGlzIHJlcXVpcmVkCQECYUsBAgtpbnZhbGlkIGtMcAQCZHgJAQJkbAMFAmRtBQJkbgAABAJkeQgFAmR4Al8xBAJkeggFAmR4Al8yBAJkQQkAwAICBQJkegUCZHcFAmRBAQJkQgECZEMDCQECIT0CCQCQAwEIBQJkQwhwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmRECQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwAABAJiWQkBBXZhbHVlAQgFAmREB2Fzc2V0SWQEAmRFCAUCZEQGYW1vdW50BAJjSgkBAmJXBAkA2AQBCAUCZEMNdHJhbnNhY3Rpb25JZAkA2AQBBQJiWQUCZEUIBQJkQwZjYWxsZXIEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmNkCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOQQCY3IIBQJjSgNfMTADAwkBAmFOAAYJAAACBQJjZAUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2QJAJcKBQUCY3AFAmNxBQJkRQUCYlkFAmNyAQJkRgMCZEMCY3QCY3oDCQECIT0CCQCQAwEIBQJkQwhwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZEcJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAAEAmRICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwABBAJkSQkBAmNzCQkA2AQBCAUCZEMNdHJhbnNhY3Rpb25JZAUCY3QIBQJkRwZhbW91bnQIBQJkRwdhc3NldElkCAUCZEgGYW1vdW50CAUCZEgHYXNzZXRJZAkApQgBCAUCZEMGY2FsbGVyBwUCY3oEAmNkCQENcGFyc2VJbnRWYWx1ZQEIBQJkSQJfOAMDAwkBAmFOAAYJAAACBQJjZAUBbAYJAAACBQJjZAUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2QFAmRJAQJkSgECZEsEAmRMCQD8BwQFAmFMAgRlbWl0CQDMCAIFAmRLBQNuaWwFA25pbAMJAAACBQJkTAUCZEwEAmRNBAJkTgUCZEwDCQABAgUCZE4CB0FkZHJlc3MEAmRPBQJkTgkA/AcEBQJkTwIEZW1pdAkAzAgCBQJkSwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZE0FAmRNBQJkSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZFABAmRLBAJkUQkAawMFAmRLBQJhZwUBYgkAlAoCCQBlAgUCZEsFAmRRBQJkUQECZFIEAmRTAmRUAVoCYWEEAmRVCQAAAgUCYWEFBHVuaXQEAmRWCQECYnkBCQECYVUBBQJiYwQCZFcJAQJieQEJAQJhVQEFAmJkBAJkWAMJAAACBQJkVAUCYmMGAwkAAAIFAmRUBQJiZAcJAQJhSQECDWludmFsaWQgYXNzZXQEAmRZAwUCZFUJAJQKAgUCZFYFAmRXAwUCZFgJAJQKAgkAZQIFAmRWBQJkUwUCZFcJAJQKAgUCZFYJAGUCBQJkVwUCZFMEAmRaCAUCZFkCXzEEAmVhCAUCZFkCXzIEAmViAwUCZFgJAJQKAgUCZFMAAAkAlAoCAAAFAmRTBAJlYwgFAmViAl8xBAJlZAgFAmViAl8yBAJkdAgJAQJkUAEFAmVjAl8xBAJkdQgJAQJkUAEFAmVkAl8xBAJlZQkBAmRQAQUCZFMEAmVmCAUCZWUCXzEEAmRRCAUCZWUCXzIEAmVnCQBkAgUCZFoFAmR0BAJlaAkAZAIFAmVhBQJkdQQCZWkJAQJiQQIJAQFEAgUCZWgFAmJmCQEBRAIFAmVnBQJiZQQCZWoJAQFHAgUCZWkFAWIEAmVrAwUCZFgFAmRaBQJlYQQCZWwJALYCAQUCZWsEAmVtCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYmIJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYmICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJlbgMJAL8CAgUCZW0FAWYGCQECYUkBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmVuBQJlbgQCZW8JALYCAQUCZWYEAmVwCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmVtCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZW8FAWQFAmVsABIAEgUERE9XTgUBZAUBZAUDbmlsBAJjWQMFAmRVBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCZWoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCCQClCAEJAQV2YWx1ZQEFAVoJANgEAQkBBXZhbHVlAQUCYWEJAQJiagoFAmVjBQJlZAUCZXAFAmVqAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZXEJAQJiQQIJAQFEAgUCZWEFAmJmCQEBRAIFAmRaBQJiZQQCZXIJAQFHAgUCZXEFAWIEAmVzBAJldAMFAmRYCQCUCgIFAmVjBQJkWgkAlAoCBQJlZAUCZWEEAmRLCAUCZXQCXzEEAmV1CAUCZXQCXzIEAmV2CQCgAwEJALwCAwUCZW0JALYCAQkAaQIFAmRLAAIJALYCAQUCZXUJAGsDCQBlAgUCZXAFAmV2BQFiBQJldgkAlwoFBQJlcAUCY1kFAmRRBQJlcwUCZFgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmV3BQJleAJlZgJkVAFaAmFhBAJkVQkAAAIFAmFhBQR1bml0BAJleQkAzAgCAwkAAAIFAmRUBQJiYgYJAQJhSQECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQJleQUCZXkEAmV6AwkAAAIFAmV4BQJiYwYDCQAAAgUCZXgFAmJkBwkBAmFJAQINaW52YWxpZCBhc3NldAQCZUEDBQJlegkAtgIBCQECYnkBCQECYVUBBQJiYwkAtgIBCQECYnkBCQECYVUBBQJiZAQCZUIJAQJieQEJAQJhVQEFAmJjBAJlQwkBAmJ5AQkBAmFVAQUCYmQEAmVEAwUCZXoFAmVCBQJlQwQCZUUJALYCAQUCZUQEAmVtCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYmIJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYmICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJlRgkAtgIBBQJlZgQCZUcJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZUEJALgCAgUBZAkAdgYJALgCAgUBZAkAugICCQC5AgIFAmVGBQFkBQJlbQASBQFoAAAAEgUERE9XTgUBZAUDbmlsBAJlSAkBAmRQAQUCZUcEAmVJCAUCZUgCXzEEAmRRCAUCZUgCXzIEAmVKAwUCZXoJAJYKBAUCZUkAAAkAZQIFAmVCBQJlRwUCZUMJAJYKBAAABQJlSQUCZUIJAGUCBQJlQwUCZUcEAmVLCAUCZUoCXzEEAmVMCAUCZUoCXzIEAmVNCAUCZUoCXzMEAmVOCAUCZUoCXzQEAmVpCQECYkECCQEBRAIFAmVOBQJiZgkBAUQCBQJlTQUCYmUEAmVqCQEBRwIFAmVpBQFiBAJjWQMFAmRVBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgkApQgBCQEFdmFsdWUBBQFaCQDYBAEJAQV2YWx1ZQEFAmFhCQECYnUGBQJlSwUCZUwFAmVmBQJlagUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJlagkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlagUDbmlsBAJlcQkBAmJBAgkBAUQCBQJlQwUCYmYJAQFEAgUCZUIFAmJlBAJlcgkBAUcCBQJlcQUBYgQCZXMEAmVPCQBoAgkAoAMBCQC8AgMFAmVBBQJlRgUCZW0AAgkAawMJAGUCBQJlSQUCZU8FAWIFAmVPCQCXCgUFAmVJBQJjWQUCZFEFAmVzBQJlegkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZVAABAJkTgkAoggBCQEBUwADCQABAgUCZE4CBlN0cmluZwQCZVEFAmROCQDZBAEFAmVRAwkAAQIFAmROAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVSAAQCZE4JAKIIAQkBAVQAAwkAAQIFAmROAgZTdHJpbmcEAmVRBQJkTgkA2QQBBQJlUQMJAAECBQJkTgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlUwECZEMEAmROCQECZVAAAwkAAQIFAmROAgpCeXRlVmVjdG9yBAJlVAUCZE4JAAACCAUCZEMPY2FsbGVyUHVibGljS2V5BQJlVAMJAAECBQJkTgIEVW5pdAkAAAIIBQJkQwZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZVUBAmRDBAJlVgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAJkTgkBAmVQAAMJAAECBQJkTgIKQnl0ZVZlY3RvcgQCZVQFAmROAwkAAAIIBQJkQw9jYWxsZXJQdWJsaWNLZXkFAmVUBgUCZVYDCQABAgUCZE4CBFVuaXQDCQAAAggFAmRDBmNhbGxlcgUEdGhpcwYFAmVWCQACAQILTWF0Y2ggZXJyb3IbAmRDAQpzZXRNYW5hZ2VyAQJlVwQCZVgJAQJlVQEFAmRDAwkAAAIFAmVYBQJlWAQCZVkJANkEAQUCZVcDCQAAAgUCZVkFAmVZCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFUAAUCZVcFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwEOY29uZmlybU1hbmFnZXIABAJlWgkBAmVSAAQCZmEDCQEJaXNEZWZpbmVkAQUCZVoGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmZhBQJmYQQCZmIDCQAAAggFAmRDD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCZVoGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmZiBQJmYgkAzAgCCQELU3RyaW5nRW50cnkCCQEBUwAJANgEAQkBBXZhbHVlAQUCZVoJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVQABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBA3B1dAICY3QCZmMDCQBmAgAABQJjdAkAAgECIEludmFsaWQgc2xpcHBhZ2VUb2xlcmFuY2UgcGFzc2VkBAJkSQkBAmRGAwUCZEMFAmN0BgQCY1YIBQJkSQJfMgQCY2EIBQJkSQJfNwQCY3IIBQJkSQJfOQQCY1cIBQJkSQNfMTAEAmNYCAUCZEkDXzExBAJmZAgFAmRJA18xMgQCZmUIBQJkSQNfMTMEAmRHCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwAABmFtb3VudAQCZEgJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAEGYW1vdW50BAJkaAkAuAICCQC2AgEJAQJieQEJAQJhVQEFAmJjBQJkRwMJAAACBQJkaAUCZGgEAmRpCQC4AgIJALYCAQkBAmJ5AQkBAmFVAQUCYmQFAmRIAwkAAAIFAmRpBQJkaQQCZGoJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmIIcXVhbnRpdHkDCQAAAgUCZGoFAmRqBAJkawkBAmRkAwUCZEcFAmRICQC2AgEAAAMJAAACBQJkawUCZGsEAmRMCQD8BwQFAmFMAgRlbWl0CQDMCAIFAmNWBQNuaWwFA25pbAMJAAACBQJkTAUCZEwEAmRNBAJkTgUCZEwDCQABAgUCZE4CB0FkZHJlc3MEAmRPBQJkTgkA/AcEBQJkTwIEZW1pdAkAzAgCBQJjVgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZE0FAmRNBAJmZgMJAGYCBQJjVwAACQD8BwQFAmJpAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmQFAmNXBQNuaWwFA25pbAMJAAACBQJmZgUCZmYEAmZnAwkAZgIFAmNYAAAJAPwHBAUCYmkCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmZQUCY1gFA25pbAUDbmlsAwkAAAIFAmZnBQJmZwQCZmgDBQJmYwQCZmkJAPwHBAUCYmgCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNhBQJjVgUDbmlsAwkAAAIFAmZpBQJmaQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkQwZjYWxsZXIFAmNWBQJjYQUDbmlsBAJmaggJAQV2YWx1ZQEJAOwHAQUCYmIIcXVhbnRpdHkDCQAAAgUCZmoFAmZqBAJmawkBAmRsAwAAAAAAAAMJAAACBQJmawUCZmsEAmRjCAUCZmsCXzIEAmZsCAUCZmsCXzEEAmZtCQECYUkBCQC5CQIJAMwIAgkApgMBBQJkaAkAzAgCCQCmAwEFAmRpCQDMCAIJAKYDAQUCZGoJAMwIAgkApgMBBQJkawkAzAgCCQCmAwEFAmRjCQDMCAIJAKQDAQUCY1YJAMwIAgkApAMBBQJjVwkAzAgCCQCkAwEFAmNYCQDMCAIJAKYDAQUCZGoJAMwIAgkApAMBBQJmagUDbmlsAgEgAwkAAAIFAmZtBQJmbQQCZm4JAQJkcAIFAmRrBQJkYwMJAAACBQJmbgUCZm4JAM4IAgkAzggCBQJjcgUCZmgFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQpwdXRGb3JGcmVlAQJmbwMJAGYCAAAFAmZvCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRJCQECZEYDBQJkQwUCZm8HBAJjcggFAmRJAl85BAJkRwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAZhbW91bnQEAmRICQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwABBmFtb3VudAQCZGsJAQJkZAMFAmRHBQJkSAkAtgIBAAADCQAAAgUCZGsFAmRrBAJmcAkBAmRsAwAAAAAAAAQCZmwIBQJmcAJfMQQCZGMIBQJmcAJfMgQCZm4JAQJkcAIFAmRrBQJkYwMJAAACBQJmbgUCZm4JAM4IAgUCY3IFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQlwdXRPbmVUa24CAmZxAmZyBAJmcwoAAmZ0CQD8BwQFAmFMAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZnQCB0Jvb2xlYW4FAmZ0CQACAQkArAICCQADAQUCZnQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZ1AwMDCQECYU4ABgkAAAIFAmJhBQFsBgkAAAIFAmJhBQFuBgUCZnMEAmV5CQDMCAIDAwkBASEBBQJmdQYJAQJlUwEFAmRDBgkBAmFJAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEMIcGF5bWVudHMAAQYJAQJhSQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmV5BQJleQQCZnYJAJEDAggFAmRDCHBheW1lbnRzAAAEAmRUCAUCZnYHYXNzZXRJZAQCZFMIBQJmdgZhbW91bnQEAmRrAwkAAAIFAmRUBQJiYwkBAmRkAwkAtgIBBQJkUwkAtgIBAAAJALYCAQAAAwkAAAIFAmRUBQJiZAkBAmRkAwkAtgIBAAAJALYCAQUCZFMJALYCAQAACQECYUkBAh5wYXltZW50IGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQEAVoIBQJkQwZjYWxsZXIEAmFhCAUCZEMNdHJhbnNhY3Rpb25JZAQCZncJAQJkUgQFAmRTBQJkVAUBWgUCYWEDCQAAAgUCZncFAmZ3BAJkWAgFAmZ3Al81BAJmeAgFAmZ3Al80BAJkUQgFAmZ3Al8zBAJjWQgFAmZ3Al8yBAJmeQgFAmZ3Al8xBAJmegMDCQBmAgUCZnEAAAkAZgIFAmZxBQJmeQcJAQJhSQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZnEFA25pbAIABQJmeQQCZEwJAQJkSgEFAmZ6AwkAAAIFAmRMBQJkTAQCZmgDBQJmcgQCZkEJAPwHBAUCYmgCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJiBQJmegUDbmlsAwkAAAIFAmZBBQJmQQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkQwZjYWxsZXIFAmZ6BQJiYgUDbmlsBAJmQgMJAGYCBQJkUQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFNBQJkUQUCZFQFA25pbAUDbmlsBAJmQwMJAAACBQR0aGlzBQJhTQkAlAoCAAAAAAMFAmRYCQCUCgIJAQEtAQUCZFEAAAkAlAoCAAAJAQEtAQUCZFEEAmRtCAUCZkMCXzEEAmRuCAUCZkMCXzIEAmZECQECZGwDBQJkbQUCZG4AAAQCZmwIBQJmRAJfMQQCZGMIBQJmRAJfMgQCZHcJAQV2YWx1ZQEJAKIIAQUCYWgEAmZuCQECZHACBQJkawUCZGMDCQAAAgUCZm4FAmZuCQCUCgIJAM4IAgkAzggCCQDOCAIFAmNZBQJmaAUCZkIFAmZsBQJmegkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwERcHV0T25lVGtuUkVBRE9OTFkCAmRUAmRTBAJmRQkBAmRSBAUCZFMJAQJhUwEFAmRUBQR1bml0BQR1bml0BAJmeQgFAmZFAl8xBAJjWQgFAmZFAl8yBAJkUQgFAmZFAl8zBAJmeAgFAmZFAl80BAJkWAgFAmZFAl81CQCUCgIFA25pbAkAlQoDBQJmeQUCZFEFAmZ4AmRDAQlnZXRPbmVUa24CAmZGAmZxBAJmcwoAAmZ0CQD8BwQFAmFMAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZnQCB0Jvb2xlYW4FAmZ0CQACAQkArAICCQADAQUCZnQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZHAwMJAQJhTgAGCQAAAgUCYmEFAW4GBQJmcwQCZXkJAMwIAgMDCQEBIQEFAmZHBgkBAmVTAQUCZEMGCQECYUkBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwABBgkBAmFJAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZXkFAmV5BAJleAkBAmFTAQUCZkYEAmZ2CQCRAwIIBQJkQwhwYXltZW50cwAABAJkVAgFAmZ2B2Fzc2V0SWQEAmVmCAUCZnYGYW1vdW50BAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEFAmVmBAFaCAUCZEMGY2FsbGVyBAJhYQgFAmRDDXRyYW5zYWN0aW9uSWQEAmZICQECZXcFBQJleAUCZWYFAmRUBQFaBQJhYQMJAAACBQJmSAUCZkgEAmV6CAUCZkgCXzUEAmZ4CAUCZkgCXzQEAmRRCAUCZkgCXzMEAmNZCAUCZkgCXzIEAmZJCAUCZkgCXzEEAmRLAwMJAGYCBQJmcQAACQBmAgUCZnEFAmZJBwkBAmFJAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmcQUDbmlsAgAFAmZJBAJmSgkA/AcEBQJhTAIEYnVybgkAzAgCBQJlZgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkVAUCZWYFA25pbAMJAAACBQJmSgUCZkoEAmZLCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVoFAmRLBQJleAUDbmlsBAJmQgMJAGYCBQJkUQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFNBQJkUQUCZXgFA25pbAUDbmlsBAJmTAQCZk0DCQAAAgUEdGhpcwUCYU0AAAUCZFEDBQJlegkAlAoCCQEBLQEJAGQCBQJkSwUCZk0AAAkAlAoCAAAJAQEtAQkAZAIFAmRLBQJmTQQCZG0IBQJmTAJfMQQCZG4IBQJmTAJfMgQCZk4JAQJkbAMFAmRtBQJkbgAABAJmbAgFAmZOAl8xBAJkYwgFAmZOAl8yBAJmbgkBAmRwAgUCZGsFAmRjAwkAAAIFAmZuBQJmbgkAlAoCCQDOCAIJAM4IAgkAzggCBQJjWQUCZksFAmZCBQJmbAUCZEsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBEWdldE9uZVRrblJFQURPTkxZAgJleAJlZgQCZk8JAQJldwUJAQJhUwEFAmV4BQJlZgUCYmIFBHVuaXQFBHVuaXQEAmZJCAUCZk8CXzEEAmNZCAUCZk8CXzIEAmRRCAUCZk8CXzMEAmZ4CAUCZk8CXzQEAmV6CAUCZk8CXzUJAJQKAgUDbmlsCQCVCgMFAmZJBQJkUQUCZngCZEMBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZQAmZGAmZxBAJmcwoAAmZ0CQD8BwQFAmFMAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZnQCB0Jvb2xlYW4FAmZ0CQACAQkArAICCQADAQUCZnQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZHAwMJAQJhTgAGCQAAAgUCYmEFAW4GBQJmcwQCZXkJAMwIAgMDCQEBIQEFAmZHBgkBAmVTAQUCZEMGCQECYUkBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwAABgkBAmFJAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZXkFAmV5BAJleAkBAmFTAQUCZkYEAVoIBQJkQwZjYWxsZXIEAmFhCAUCZEMNdHJhbnNhY3Rpb25JZAQCZGsJAQJkZAMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmZRCQD8BwQFAmJoAgd1bnN0YWtlCQDMCAIJANgEAQUCYmIJAMwIAgUCZlAFA25pbAUDbmlsAwkAAAIFAmZRBQJmUQQCZlIJAQJldwUFAmV4BQJmUAUCYmIFAVoFAmFhAwkAAAIFAmZSBQJmUgQCZXoIBQJmUgJfNQQCZngIBQJmUgJfNAQCZFEIBQJmUgJfMwQCY1kIBQJmUgJfMgQCZkkIBQJmUgJfMQQCZEsDAwkAZgIFAmZxAAAJAGYCBQJmcQUCZkkHCQECYUkBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZxBQNuaWwCAAUCZkkEAmZKCQD8BwQFAmFMAgRidXJuCQDMCAIFAmZQBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJiBQJmUAUDbmlsAwkAAAIFAmZKBQJmSgQCZksJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRDBmNhbGxlcgUCZEsFAmV4BQNuaWwEAmZCAwkAZgIFAmRRAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYU0FAmRRBQJleAUDbmlsBQNuaWwEAmZTBAJmTQMJAAACBQR0aGlzBQJhTQAABQJkUQMFAmV6CQCUCgIJAQEtAQkAZAIFAmRLBQJmTQAACQCUCgIAAAkBAS0BCQBkAgUCZEsFAmZNBAJkbQgFAmZTAl8xBAJkbggFAmZTAl8yBAJmVAkBAmRsAwUCZG0FAmRuAAAEAmZsCAUCZlQCXzEEAmRjCAUCZlQCXzIEAmZuCQECZHACBQJkawUCZGMDCQAAAgUCZm4FAmZuCQCUCgIJAM4IAgkAzggCCQDOCAIFAmNZBQJmSwUCZkIFAmZsBQJkSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwEDZ2V0AAQCY0oJAQJkQgEFAmRDBAJmVQgFAmNKAl8xBAJjcQgFAmNKAl8yBAJkRQgFAmNKAl8zBAJiWQgFAmNKAl80BAJjcggFAmNKAl81BAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEFAmRFBAJmVgkA/AcEBQJhTAIEYnVybgkAzAgCBQJkRQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiWQUCZEUFA25pbAMJAAACBQJmVgUCZlYEAmZXCQECZGwDCQEBLQEFAmZVCQEBLQEFAmNxAAAEAmZsCAUCZlcCXzEEAmRjCAUCZlcCXzIEAmZuCQECZHACBQJkawUCZGMDCQAAAgUCZm4FAmZuCQDOCAIFAmNyBQJmbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwEJZ2V0Tm9MZXNzAgJmWAJmWQQCY0oJAQJkQgEFAmRDBAJjcAgFAmNKAl8xBAJjcQgFAmNKAl8yBAJkRQgFAmNKAl8zBAJiWQgFAmNKAl80BAJjcggFAmNKAl81AwkAZgIFAmZYBQJjcAkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY3ACAyA8IAkApAMBBQJmWAMJAGYCBQJmWQUCY3EJAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjcQIDIDwgCQCkAwEFAmZZBAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEFAmRFBAJmVgkA/AcEBQJhTAIEYnVybgkAzAgCBQJkRQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiWQUCZEUFA25pbAMJAAACBQJmVgUCZlYEAmZaCQECZGwDCQEBLQEFAmNwCQEBLQEFAmNxAAAEAmZsCAUCZloCXzEEAmRjCAUCZloCXzIEAmZuCQECZHACBQJkawUCZGMDCQAAAgUCZm4FAmZuCQDOCAIFAmNyBQJmbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwENdW5zdGFrZUFuZEdldAECZEsEAmdhAwkBAiE9AgkAkAMBCAUCZEMIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCZ2EFAmdhBAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCZGsJAQJkZAMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmZRCQD8BwQFAmJoAgd1bnN0YWtlCQDMCAIJANgEAQUCY2EJAMwIAgUCZEsFA25pbAUDbmlsAwkAAAIFAmZRBQJmUQQCY0oJAQJiVwQJANgEAQgFAmRDDXRyYW5zYWN0aW9uSWQJANgEAQUCY2EFAmRLCAUCZEMGY2FsbGVyBAJjcAgFAmNKAl8xBAJjcQgFAmNKAl8yBAJjZAkBDXBhcnNlSW50VmFsdWUBCAUCY0oCXzkEAmNyCAUCY0oDXzEwBAJnYgMDCQECYU4ABgkAAAIFAmNkBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjZAYDCQAAAgUCZ2IFAmdiBAJmVgkA/AcEBQJhTAIEYnVybgkAzAgCBQJkSwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYQUCZEsFA25pbAMJAAACBQJmVgUCZlYEAmdjCQECZGwDCQEBLQEFAmNwCQEBLQEFAmNxAAAEAmZsCAUCZ2MCXzEEAmRjCAUCZ2MCXzIEAmZuCQECZHACBQJkawUCZGMDCQAAAgUCZm4FAmZuCQDOCAIFAmNyBQJmbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwETdW5zdGFrZUFuZEdldE5vTGVzcwMCZlACZ2QCZlkEAmZHAwkBAmFOAAYJAAACBQJiYQUBbgQCZXkJAMwIAgMJAQEhAQUCZkcGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEMIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJleQUCZXkEAmRrCQECZGQDCQC2AgEAAAkAtgIBAAAJALYCAQAABAJmUQkA/AcEBQJiaAIHdW5zdGFrZQkAzAgCCQDYBAEFAmJiCQDMCAIFAmZQBQNuaWwFA25pbAMJAAACBQJmUQUCZlEEAmNKCQECYlcECQDYBAEIBQJkQw10cmFuc2FjdGlvbklkCQDYBAEFAmJiBQJmUAgFAmRDBmNhbGxlcgQCY3AIBQJjSgJfMQQCY3EIBQJjSgJfMgQCY3IIBQJjSgNfMTAEAmdlCQDMCAIDCQBnAgUCY3AFAmdkBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmdkBQNuaWwCAAkAzAgCAwkAZwIFAmNxBQJmWQYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZZBQNuaWwCAAUDbmlsAwkAAAIFAmdlBQJnZQQCZlYJAPwHBAUCYUwCBGJ1cm4JAMwIAgUCZlAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmIFAmZQBQNuaWwDCQAAAgUCZlYFAmZWBAJnZgkBAmRsAwkBAS0BBQJjcAkBAS0BBQJjcQAABAJmbAgFAmdmAl8xBAJkYwgFAmdmAl8yBAJmbgkBAmRwAgUCZGsFAmRjAwkAAAIFAmZuBQJmbgkAzggCBQJjcgUCZmwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBCGFjdGl2YXRlAgJnZwJnaAMJAQIhPQIJAKUIAQgFAmRDBmNhbGxlcgkApQgBBQJhTAkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwAFAmdnCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAAFAmdoBQNuaWwCB3N1Y2Nlc3MCZEMBCnJlZnJlc2hLTHAABAJnaQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhaQAABAJnagMJAGcCCQBlAgUGaGVpZ2h0BQJnaQUCYWwFBHVuaXQJAQJhSQEJALkJAgkAzAgCCQCkAwEFAmFsCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJnagUCZ2oEAmR3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhaAIBMAkBAmFLAQILaW52YWxpZCBrTHAEAmdrCQECZGwDAAAAAAAABAJnbAgFAmdrAl8xBAJkYwgFAmdrAl8yBAJkbwMJAQIhPQIFAmR3BQJkYwUCZ2wJAQJhSQECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJkbwkApgMBBQJkYwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYVAAAmRDARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJiegkAlAoCBQNuaWwJAQJieQEFAmJ6AmRDARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJiSAJiSQJiTQQCYlYJAQJiTAMFAmJIBQJiSQUCYk0JAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJiVgAACQDMCAIJAKYDAQkAkQMCBQJiVgABCQDMCAIJAKYDAQkAkQMCBQJiVgACBQNuaWwCZEMBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJkQwEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSAFJCQCUCgIFA25pbAkBAUcCCQCnAwEFAUgFAUkCZEMBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYkICYkMJAJQKAgUDbmlsCQCmAwEJAQJiQQIJAKcDAQUCYkIJAKcDAQUCYkMCZEMBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiWAJjdAJjdQJjdgJjdwJjeAFaAmN5AmN6CQCUCgIFA25pbAkBAmNzCQUCYlgFAmN0BQJjdQUCY3YFAmN3BQJjeAUBWgUCY3kFAmN6AmRDASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYlgCYlkCYloBWgQCY0oJAQJiVwQFAmJYBQJiWQUCYloJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAVoJAJQKAgUDbmlsCQCcCgoIBQJjSgJfMQgFAmNKAl8yCAUCY0oCXzMIBQJjSgJfNAgFAmNKAl81CAUCY0oCXzYIBQJjSgJfNwkApgMBCAUCY0oCXzgIBQJjSgJfOQgFAmNKA18xMAJkQwENc3RhdHNSRUFET05MWQAEAmJOCQECYVAABAJjYQkA2QQBCQCRAwIFAmJOBQFxBAJnbQkAkQMCBQJiTgUBcgQCZ24JAJEDAgUCYk4FAXMEAmNDCQCRAwIFAmJOBQF2BAJjRAkAkQMCBQJiTgUBdwQCYk8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdAQCYlAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdQQCZ28ICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2EJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2ECDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJncAkBAmJ5AQUCZ20EAmdxCQECYnkBBQJnbgQCZ3IDCQAAAgUCZ28AAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYkwDBQJncAUCZ3EFAmdvBAJjawAABAJncwkBAUcCCQCRAwIFAmdyAAEFAWIEAmd0CQEBRwIJAJEDAgUCZ3IAAgUBYgQCZ3UJAQV2YWx1ZQEJAJoIAgUCYUwJAQJhdwEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmdwCQDMCAIJAKQDAQUCZ3EJAMwIAgkApAMBBQJnbwkAzAgCCQCkAwEFAmNrCQDMCAIJAKQDAQUCZ3MJAMwIAgkApAMBBQJndAkAzAgCCQCkAwEFAmd1BQNuaWwFAWoCZEMBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjdQQCYk4JAQJhUAAEAmNhCQDZBAEJAJEDAgUCYk4FAXEEAmNBCQCRAwIFAmJOBQFyBAJjYgkA2QQBBQJjQQQCY0IJAJEDAgUCYk4FAXMEAmNjCQDZBAEFAmNCBAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJjZAkAkQMCBQJiTgUBcAQCZ28ICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2EJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2ECDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJncAkBAmJ5AQUCY0EEAmdxCQECYnkBBQJjQgQCYkoJAQFEAgUCZ3AFAmJPBAJiSwkBAUQCBQJncQUCYlAEAmNqAwkAAAIFAmdvAAAFAWUJAQJiQQIFAmJLBQJiSgQCY0cJAQFEAgUCY3UFAmJPBAJjSAkAvAIDBQJjRwUCY2oFAWQEAmN3CQEBRwIFAmNIBQJiUAQCZEkJAQJjcwkCAACgwh4FAmN1BQJjYgUCY3cFAmNjAgAGBwQCY1IIBQJkSQJfMQQCZ3YIBQJkSQJfMwQCY2YIBQJkSQJfNAQCY2gIBQJkSQJfNQQCY2UIBQJkSQJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1IJAMwIAgkApAMBCQEBRwIFAmNqBQFiCQDMCAIJAKQDAQUCY2YJAMwIAgkApAMBBQJjaAkAzAgCCQCkAwEFAmNlCQDMCAIFAmNkCQDMCAIJAKQDAQUCY3UJAMwIAgkApAMBBQJjdwUDbmlsBQFqAmRDAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjdwQCYk4JAQJhUAAEAmNhCQDZBAEJAJEDAgUCYk4FAXEEAmNBCQCRAwIFAmJOBQFyBAJjYgkA2QQBBQJjQQQCY0IJAJEDAgUCYk4FAXMEAmNjCQDZBAEFAmNCBAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJjZAkAkQMCBQJiTgUBcAQCZ28ICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2EJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2ECDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJndwkBAmJ5AQUCY0EEAmd4CQECYnkBBQJjQgQCZ3kJAQFEAgUCZ3cFAmJPBAJnegkBAUQCBQJneAUCYlAEAmNqAwkAAAIFAmdvAAAFAWUJAQJiQQIFAmd6BQJneQQCY0gJAQFEAgUCY3cFAmJQBAJjRwkAvAIDBQJjSAUBZAUCY2oEAmN1CQEBRwIFAmNHBQJiTwQCZEkJAQJjcwkCAACgwh4FAmN1BQJjYgUCY3cFAmNjAgAGBwQCY1IIBQJkSQJfMQQCZ3YIBQJkSQJfMwQCY2YIBQJkSQJfNAQCY2gIBQJkSQJfNQQCY2UIBQJkSQJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1IJAMwIAgkApAMBCQEBRwIFAmNqBQFiCQDMCAIJAKQDAQUCY2YJAMwIAgkApAMBBQJjaAkAzAgCCQCkAwEFAmNlCQDMCAIFAmNkCQDMCAIJAKQDAQUCY3UJAMwIAgkApAMBBQJjdwUDbmlsBQFqAmRDARNldmFsdWF0ZUdldFJFQURPTkxZAgJnQQJnQgQCY0oJAQJiVwQCAAUCZ0EFAmdCBQR0aGlzBAJjcAgFAmNKAl8xBAJjcQgFAmNKAl8yBAJjZggFAmNKAl81BAJjaAgFAmNKAl82BAJjZQgFAmNKAl83BAJjawgFAmNKAl84BAJjZAkBDXBhcnNlSW50VmFsdWUBCAUCY0oCXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjcAkAzAgCCQCkAwEFAmNxCQDMCAIJAKQDAQUCY2YJAMwIAgkApAMBBQJjaAkAzAgCCQCkAwEFAmNlCQDMCAIJAKYDAQUCY2sJAMwIAgkApAMBBQJjZAUDbmlsBQFqAQJnQwECZ0QABAJnRQQCZE4JAQJlUAADCQABAgUCZE4CCkJ5dGVWZWN0b3IEAmVUBQJkTgUCZVQDCQABAgUCZE4CBFVuaXQIBQJnQw9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZE4FAmdDAwkAAQIFAmROAgVPcmRlcgQCZHMFAmROBAJnRgkBAmFPAAQCYUIJAQJkcgEFAmRzBAJhQwkA9AMDCAUCZHMJYm9keUJ5dGVzCQCRAwIIBQJkcwZwcm9vZnMAAAgFAmRzD3NlbmRlclB1YmxpY0tleQQCYUQJAPQDAwgFAmRzCWJvZHlCeXRlcwkAkQMCCAUCZHMGcHJvb2ZzAAEFAmdGAwMDBQJhQgUCYUMHBQJhRAcGCQECYUEDBQJhQgUCYUMFAmFEAwkAAQIFAmROAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZVEFAmROBAJnRwkA9gMBCQEFdmFsdWUBCAUCZVEGc2NyaXB0BAJnSAkA2wQBCQEFdmFsdWUBCQCdCAIFAmFMCQECYXkABAJnSQkA8QcBBQR0aGlzAwMJAAACBQJnSAUCZ0cJAQIhPQIFAmdJBQJnRwcGCQD0AwMIBQJnQwlib2R5Qnl0ZXMJAJEDAggFAmdDBnByb29mcwAABQJnRQkA9AMDCAUCZ0MJYm9keUJ5dGVzCQCRAwIIBQJnQwZwcm9vZnMAAAUCZ0V0XrXd", "chainId": 84, "height": 2351033, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6Z8dC7AtcVEUgasAF9X9nMU44KLzjLbQW4fxxDweR5zh Next: ESN3DMc97mD3ai5QKMFAPhx1UN6g9rc1vTecBPo1w5d5 Diff:
OldNewDifferences
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
68-func J (K,L,M) = fraction(K, L, M)
68+func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
6969
7070
71-func N (H) = if ((0 > H))
71+func L (M,N,O) = fraction(M, N, O)
72+
73+
74+func P (H) = if ((0 > H))
7275 then -(H)
7376 else H
7477
7578
76-func O (H) = if ((e > H))
79+func Q (H) = if ((e > H))
7780 then -(H)
7881 else H
7982
8083
81-func P () = "%s__factoryContract"
84+func R () = "%s__factoryContract"
8285
8386
84-func Q () = "%s__managerPublicKey"
87+func S () = "%s__managerPublicKey"
8588
8689
87-func R () = "%s__pendingManagerPublicKey"
90+func T () = "%s__pendingManagerPublicKey"
8891
8992
90-func S () = "%s%s__price__last"
93+func U () = "%s%s__price__last"
9194
9295
93-func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
96+func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
9497
9598
96-func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
99+func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
97100
98101
99-func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
102+func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
100103
101104
102-func aa () = "%s__amountAsset"
105+func ac () = "%s__amountAsset"
103106
104107
105-func ab () = "%s__priceAsset"
108+func ad () = "%s__priceAsset"
106109
107110
108-let ac = "%s__fee"
111+let ae = "%s__fee"
109112
110-let ad = fraction(10, b, 10000)
113+let af = fraction(10, b, 10000)
111114
112-let ae = valueOrElse(getInteger(this, ac), ad)
115+let ag = valueOrElse(getInteger(this, ae), af)
113116
114-let af = makeString(["%s", "kLp"], j)
117+let ah = makeString(["%s", "kLp"], j)
115118
116-let ag = makeString(["%s", "kLpRefreshedHeight"], j)
119+let ai = makeString(["%s", "kLpRefreshedHeight"], j)
117120
118-let ah = makeString(["%s", "refreshKLpDelay"], j)
121+let aj = makeString(["%s", "refreshKLpDelay"], j)
119122
120-let ai = 30
123+let ak = 30
121124
122-let aj = valueOrElse(getInteger(this, ah), ai)
125+let al = valueOrElse(getInteger(this, aj), ak)
123126
124-func ak () = "%s__factoryConfig"
127+func am () = "%s__factoryConfig"
125128
126129
127-func al () = "%s%s__matcher__publicKey"
130+func an () = "%s%s__matcher__publicKey"
128131
129132
130-func am (an) = (("%s%s%s__" + an) + "__mappings__poolContract2LpAsset")
133+func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
131134
132135
133-func ao (ap,aq) = (((("%d%d%s__" + ap) + "__") + aq) + "__config")
136+func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
134137
135138
136-func ar (as) = ("%s%s%s__mappings__baseAsset2internalId__" + as)
139+func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
137140
138141
139-func at () = "%s__shutdown"
142+func av () = "%s__shutdown"
140143
141144
142-func au (av) = ("%s%s__poolWeight__" + av)
145+func aw (ax) = ("%s%s__poolWeight__" + ax)
143146
144147
145-func aw () = "%s__allowedLpScriptHash"
148+func ay () = "%s__allowedLpScriptHash"
146149
147150
148-let ax = "%s__feeCollectorAddress"
151+let az = "%s__feeCollectorAddress"
149152
150-func ay (az,aA,aB) = throw(((((("order validation failed: orderValid=" + toString(az)) + " senderValid=") + toString(aA)) + " matcherValid=") + toString(aB)))
153+func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
151154
152155
153-func aC (aD,aE) = valueOrErrorMessage(getString(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
156+func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
154157
155158
156-func aF (aD,aE) = valueOrErrorMessage(getInteger(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
159+func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
157160
158161
159-func aG (aH) = throw(makeString(["lp.ride:", aH], " "))
162+func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
160163
161164
162-func aI (aH) = makeString(["lp.ride:", aH], " ")
165+func aK (aJ) = makeString(["lp.ride:", aJ], " ")
163166
164167
165-let aJ = addressFromStringValue(aC(this, P()))
168+let aL = addressFromStringValue(aE(this, R()))
166169
167-let aK = addressFromStringValue(aC(aJ, ax))
170+let aM = addressFromStringValue(aE(aL, az))
168171
169-func aL () = valueOrElse(getBoolean(aJ, at()), false)
172+func aN () = valueOrElse(getBoolean(aL, av()), false)
170173
171174
172-func aM () = fromBase58String(aC(aJ, al()))
175+func aO () = fromBase58String(aE(aL, an()))
173176
174177
175-func aN () = {
176- let aO = aC(this, aa())
177- let aP = aC(this, ab())
178- let aq = aF(aJ, ar(aP))
179- let ap = aF(aJ, ar(aO))
180- split(aC(aJ, ao(toString(ap), toString(aq))), j)
178+func aP () = {
179+ let aQ = aE(this, ac())
180+ let aR = aE(this, ad())
181+ let as = aH(aL, at(aR))
182+ let ar = aH(aL, at(aQ))
183+ split(aE(aL, aq(toString(ar), toString(as))), j)
181184 }
182185
183186
184-func aQ (aR) = if ((aR == i))
187+func aS (aT) = if ((aT == i))
185188 then unit
186- else fromBase58String(aR)
189+ else fromBase58String(aT)
187190
188191
189-func aS (aR) = if ((aR == unit))
192+func aU (aT) = if ((aT == unit))
190193 then i
191- else toBase58String(value(aR))
194+ else toBase58String(value(aT))
192195
193196
194-func aT (aU) = $Tuple7(addressFromStringValue(aU[o]), parseIntValue(aU[p]), fromBase58String(aU[q]), aQ(aU[r]), aQ(aU[s]), parseIntValue(aU[t]), parseIntValue(aU[u]))
197+func aV (aW) = $Tuple7(addressFromStringValue(aW[o]), parseIntValue(aW[p]), fromBase58String(aW[q]), aS(aW[r]), aS(aW[s]), parseIntValue(aW[t]), parseIntValue(aW[u]))
195198
196199
197-let aV = aT(aN())
200+let aX = aV(aP())
198201
199-let aW = aV
202+let aY = aX
200203
201-let aX = aW._1
204+let aZ = aY._1
202205
203-let aY = aW._2
206+let ba = aY._2
204207
205-let aZ = aW._3
208+let bb = aY._3
206209
207-let ba = aW._4
210+let bc = aY._4
208211
209-let bb = aW._5
212+let bd = aY._5
210213
211-let bc = aW._6
214+let be = aY._6
212215
213-let bd = aW._7
216+let bf = aY._7
214217
215-func be () = split(aC(aJ, ak()), j)
218+func bg () = split(aE(aL, am()), j)
216219
217220
218-let bf = valueOrErrorMessage(addressFromString(be()[B]), "incorrect staking address")
221+let bh = valueOrErrorMessage(addressFromString(bg()[B]), "incorrect staking address")
219222
220-let bg = valueOrErrorMessage(addressFromString(be()[C]), "incorrect staking address")
223+let bi = valueOrErrorMessage(addressFromString(bg()[C]), "incorrect staking address")
221224
222-func bh (bi,bj,bk,bl,bm,bn,bo,bp,bq,br) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bi), toString(bj), toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br)], j)
225+func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], j)
223226
224227
225-func bs (bt,bu,bv,bl,bo,bp) = makeString(["%d%d%d%d%d%d", toString(bt), toString(bu), toString(bv), toString(bl), toString(bo), toString(bp)], j)
228+func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], j)
226229
227230
228-func bw (bx) = if ((bx == "WAVES"))
231+func by (bz) = if ((bz == "WAVES"))
229232 then wavesBalance(this).available
230- else assetBalance(this, fromBase58String(bx))
233+ else assetBalance(this, fromBase58String(bz))
231234
232235
233-func by (bz,bA) = fraction(bz, d, bA)
236+func bA (bB,bC) = fraction(bB, d, bC)
234237
235238
236-func bB (bz,bA,bC) = fraction(bz, d, bA, bC)
239+func bD (bB,bC,K) = fraction(bB, d, bC, K)
237240
238241
239-func bD (bE,bF,bG,bH) = {
240- let bI = D(bG, bE)
242+func bE (bF,bG,bH,bI) = {
241243 let bJ = D(bH, bF)
242- by(bJ, bI)
244+ let bK = D(bI, bG)
245+ bA(bK, bJ)
243246 }
244247
245248
246-func bK (bG,bH,bL) = {
247- let bM = aN()
248- let bN = parseIntValue(bM[t])
249- let bO = parseIntValue(bM[u])
250- let bP = bD(bN, bO, bG, bH)
251- let bA = D(bG, bN)
252- let bz = D(bH, bO)
253- let bQ = D(bL, b)
254- let bR = by(bA, bQ)
255- let bS = by(bz, bQ)
256-[bP, bR, bS]
249+func bL (bH,bI,bM) = {
250+ let bN = aP()
251+ let bO = parseIntValue(bN[t])
252+ let bP = parseIntValue(bN[u])
253+ let bQ = bE(bO, bP, bH, bI)
254+ let bC = D(bH, bO)
255+ let bB = D(bI, bP)
256+ let bR = D(bM, b)
257+ let bS = bA(bC, bR)
258+ let bT = bA(bB, bR)
259+[bQ, bS, bT]
257260 }
258261
259262
260-func bT (bG,bH,bL) = {
261- let bU = bK(bG, bH, bL)
262-[G(bU[0], b), G(bU[1], b), G(bU[2], b)]
263+func bU (bH,bI,bM) = {
264+ let bV = bL(bH, bI, bM)
265+[G(bV[0], b), G(bV[1], b), G(bV[2], b)]
263266 }
264267
265268
266-func bV (bW,bX,bY,X) = {
267- let bM = aN()
268- let bZ = bM[q]
269- let ca = bM[r]
270- let cb = bM[s]
271- let bE = parseIntValue(bM[t])
272- let bF = parseIntValue(bM[u])
273- let cc = bM[p]
274- let cd = valueOrErrorMessage(assetInfo(fromBase58String(bZ)), (("Asset " + bZ) + " doesn't exist")).quantity
275- if ((bZ != bX))
269+func bW (bX,bY,bZ,Z) = {
270+ let bN = aP()
271+ let ca = bN[q]
272+ let cb = bN[r]
273+ let cc = bN[s]
274+ let bF = parseIntValue(bN[t])
275+ let bG = parseIntValue(bN[u])
276+ let cd = bN[p]
277+ let ce = valueOrErrorMessage(assetInfo(fromBase58String(ca)), (("Asset " + ca) + " doesn't exist")).quantity
278+ if ((ca != bY))
276279 then throw("Invalid asset passed.")
277280 else {
278- let ce = bw(ca)
279- let cf = D(ce, bE)
280- let cg = bw(cb)
281- let ch = D(cg, bF)
282- let ci = by(ch, cf)
283- let cj = G(ci, b)
284- let ck = D(bY, b)
285- let cl = D(cd, b)
286- let cm = fraction(cf, ck, cl)
287- let cn = fraction(ch, ck, cl)
288- let co = G(cm, bE)
281+ let cf = by(cb)
282+ let cg = D(cf, bF)
283+ let ch = by(cc)
284+ let ci = D(ch, bG)
285+ let cj = bA(ci, cg)
286+ let ck = G(cj, b)
287+ let cl = D(bZ, b)
288+ let cm = D(ce, b)
289+ let cn = fraction(cg, cl, cm)
290+ let co = fraction(ci, cl, cm)
289291 let cp = G(cn, bF)
290- let cq = if ((bW == ""))
292+ let cq = G(co, bG)
293+ let cr = if ((bX == ""))
291294 then nil
292- else [ScriptTransfer(X, co, if ((ca == "WAVES"))
295+ else [ScriptTransfer(Z, cp, if ((cb == "WAVES"))
293296 then unit
294- else fromBase58String(ca)), ScriptTransfer(X, cp, if ((cb == "WAVES"))
297+ else fromBase58String(cb)), ScriptTransfer(Z, cq, if ((cc == "WAVES"))
295298 then unit
296- else fromBase58String(cb)), StringEntry(Z(toString(X), bW), bs(co, cp, bY, cj, height, lastBlock.timestamp)), IntegerEntry(S(), cj), IntegerEntry(T(height, lastBlock.timestamp), cj)]
297- $Tuple10(co, cp, ca, cb, ce, cg, cd, ci, cc, cq)
299+ else fromBase58String(cc)), StringEntry(ab(toString(Z), bX), bu(cp, cq, bZ, ck, height, lastBlock.timestamp)), IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck)]
300+ $Tuple10(cp, cq, cb, cc, cf, ch, ce, cj, cd, cr)
298301 }
299302 }
300303
301304
302-func cr (bW,cs,ct,cu,cv,cw,X,cx,cy) = {
303- let bM = aN()
304- let bZ = fromBase58String(bM[q])
305- let cz = bM[r]
306- let cA = bM[s]
307- let cB = bM[v]
308- let cC = bM[w]
309- let bN = parseIntValue(bM[t])
310- let bO = parseIntValue(bM[u])
311- let cc = bM[p]
312- let cd = valueOrErrorMessage(assetInfo(bZ), (("Asset " + toBase58String(bZ)) + " doesn't exist")).quantity
313- let cD = toBase58String(valueOrElse(cu, fromBase58String("WAVES")))
314- let cE = toBase58String(valueOrElse(cw, fromBase58String("WAVES")))
315- if (if ((cz != cD))
305+func cs (bX,ct,cu,cv,cw,cx,Z,cy,cz) = {
306+ let bN = aP()
307+ let ca = fromBase58String(bN[q])
308+ let cA = bN[r]
309+ let cB = bN[s]
310+ let cC = bN[v]
311+ let cD = bN[w]
312+ let bO = parseIntValue(bN[t])
313+ let bP = parseIntValue(bN[u])
314+ let cd = bN[p]
315+ let ce = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
316+ let cE = toBase58String(valueOrElse(cv, fromBase58String("WAVES")))
317+ let cF = toBase58String(valueOrElse(cx, fromBase58String("WAVES")))
318+ if (if ((cA != cE))
316319 then true
317- else (cA != cE))
320+ else (cB != cF))
318321 then throw("Invalid amt or price asset passed.")
319322 else {
320- let ce = if (cx)
321- then bw(cz)
322- else (bw(cz) - ct)
323- let cg = if (cx)
324- then bw(cA)
325- else (bw(cA) - cv)
326- let cF = D(ct, bN)
327- let cG = D(cv, bO)
328- let cH = by(cG, cF)
329- let cf = D(ce, bN)
330- let ch = D(cg, bO)
331- let cI = if ((cd == 0))
323+ let cf = if (cy)
324+ then by(cA)
325+ else (by(cA) - cu)
326+ let ch = if (cy)
327+ then by(cB)
328+ else (by(cB) - cw)
329+ let cG = D(cu, bO)
330+ let cH = D(cw, bP)
331+ let cI = bA(cH, cG)
332+ let cg = D(cf, bO)
333+ let ci = D(ch, bP)
334+ let cJ = if ((ce == 0))
332335 then {
333- let ci = e
334- let cJ = e
335- let bQ = pow((cF * cG), 0, toBigInt(5), 1, 0, DOWN)
336- $Tuple5(G(bQ, b), G(cF, bN), G(cG, bO), by((ch + cG), (cf + cF)), cJ)
336+ let cj = e
337+ let cK = e
338+ let bR = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
339+ $Tuple5(G(bR, b), G(cG, bO), G(cH, bP), bA((ci + cH), (cg + cG)), cK)
337340 }
338341 else {
339- let ci = by(ch, cf)
340- let cJ = fraction(O((ci - cH)), d, ci)
341- let cK = D(cs, b)
342- if (if ((ci != e))
343- then (cJ > cK)
342+ let cj = bA(ci, cg)
343+ let cK = fraction(Q((cj - cI)), d, cj)
344+ let cL = D(ct, b)
345+ if (if ((cj != e))
346+ then (cK > cL)
344347 else false)
345- then throw(((("Price slippage " + toString(cJ)) + " exceeded the passed limit of ") + toString(cK)))
348+ then throw(((("Price slippage " + toString(cK)) + " exceeded the passed limit of ") + toString(cL)))
346349 else {
347- let cl = D(cd, b)
348- let cL = fraction(cF, bB(ch, cf, CEILING), d, CEILING)
349- let cM = fraction(cG, d, bB(ch, cf, FLOOR), CEILING)
350- let cN = if ((cL > cG))
351- then $Tuple2(cM, cG)
352- else $Tuple2(cF, cL)
353- let cO = cN._1
354- let cP = cN._2
355- let bQ = fraction(cl, cP, ch, FLOOR)
356- $Tuple5(G(bQ, b), G(cO, bN), G(cP, bO), ci, cJ)
350+ let cm = D(ce, b)
351+ let cM = fraction(cG, bD(ci, cg, CEILING), d, CEILING)
352+ let cN = fraction(cH, d, bD(ci, cg, FLOOR), CEILING)
353+ let cO = if ((cM > cH))
354+ then $Tuple2(cN, cH)
355+ else $Tuple2(cG, cM)
356+ let cP = cO._1
357+ let cQ = cO._2
358+ let bR = fraction(cm, cQ, ci, FLOOR)
359+ $Tuple5(J(bR, b, FLOOR), J(cP, bO, CEILING), J(cQ, bP, CEILING), cj, cK)
357360 }
358361 }
359- let cQ = cI._1
360- let cR = cI._2
361- let cS = cI._3
362- let cj = G(cI._4, b)
363- let cT = G(cI._5, b)
364- if ((0 >= cQ))
362+ let cR = cJ._1
363+ let cS = cJ._2
364+ let cT = cJ._3
365+ let ck = G(cJ._4, b)
366+ let cU = G(cJ._5, b)
367+ if ((0 >= cR))
365368 then throw("Invalid calculations. LP calculated is less than zero.")
366369 else {
367- let cU = if (!(cy))
370+ let cV = if (!(cz))
368371 then 0
369- else cQ
370- let cV = (ct - cR)
371- let cW = (cv - cS)
372- let cX = [IntegerEntry(S(), cj), IntegerEntry(T(height, lastBlock.timestamp), cj), StringEntry(W(X, bW), bh(cR, cS, cU, cj, cs, cT, height, lastBlock.timestamp, cV, cW))]
373- $Tuple13(cQ, cU, cj, ce, cg, cd, bZ, cc, cX, cV, cW, cu, cw)
372+ else cR
373+ let cW = (cu - cS)
374+ let cX = (cw - cT)
375+ let cY = [IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck), StringEntry(Y(Z, bX), bj(cS, cT, cV, ck, ct, cU, height, lastBlock.timestamp, cW, cX))]
376+ $Tuple13(cR, cV, ck, cf, ch, ce, ca, cd, cY, cW, cX, cv, cx)
374377 }
375378 }
376379 }
377380
378381
379-func cY (cZ,da,cd) = {
380- let db = fraction(pow((cZ * da), 0, toBigInt(5), 1, 18, DOWN), g, cd)
381- if ((cd == f))
382+func cZ (da,db,ce) = {
383+ let dc = fraction(pow((da * db), 0, toBigInt(5), 1, 18, DOWN), g, ce)
384+ if ((ce == f))
382385 then f
383- else db
386+ else dc
384387 }
385388
386389
387-func dc (dd,de,df) = {
388- let dg = (toBigInt(bw(aS(ba))) - dd)
389- let dh = (toBigInt(bw(aS(bb))) - de)
390- let di = (toBigInt(value(assetInfo(aZ)).quantity) - df)
391- let dj = cY(dg, dh, di)
392- dj
390+func dd (de,df,dg) = {
391+ let dh = (toBigInt(by(aU(bc))) - de)
392+ let di = (toBigInt(by(aU(bd))) - df)
393+ let dj = (toBigInt(value(assetInfo(bb)).quantity) - dg)
394+ let dk = cZ(dh, di, dj)
395+ dk
393396 }
394397
395398
396-func dk (dl,dm,df) = {
397- let dg = (bw(aS(ba)) + dl)
398- let dh = (bw(aS(bb)) + dm)
399- let di = (value(assetInfo(aZ)).quantity + df)
400- let db = cY(toBigInt(dg), toBigInt(dh), toBigInt(di))
401- let dn = [IntegerEntry(ag, height), StringEntry(af, toString(db))]
402- $Tuple2(dn, db)
399+func dl (dm,dn,dg) = {
400+ let dh = (by(aU(bc)) + dm)
401+ let di = (by(aU(bd)) + dn)
402+ let dj = (value(assetInfo(bb)).quantity + dg)
403+ let dc = cZ(toBigInt(dh), toBigInt(di), toBigInt(dj))
404+ let do = [IntegerEntry(ai, height), StringEntry(ah, toString(dc))]
405+ $Tuple2(do, dc)
403406 }
404407
405408
406-func do (dp,db) = if ((db >= dp))
409+func dp (dq,dc) = if ((dc >= dq))
407410 then true
408- else aG(makeString(["updated KLp lower than current KLp", toString(dp), toString(db)], " "))
411+ else aI(makeString(["updated KLp lower than current KLp", toString(dq), toString(dc)], " "))
409412
410413
411-func dq (dr) = {
412- let ds = dr.amount
413- let dt = fraction(dr.amount, dr.price, b, FLOOR)
414- let du = if ((dr.orderType == Buy))
415- then $Tuple2(ds, -(dt))
416- else $Tuple2(-(ds), dt)
417- let dl = du._1
418- let dm = du._2
419- if (if (if (aL())
414+func dr (ds) = {
415+ let dt = ds.amount
416+ let du = fraction(ds.amount, ds.price, b, FLOOR)
417+ let dv = if ((ds.orderType == Buy))
418+ then $Tuple2(dt, -(du))
419+ else $Tuple2(-(dt), du)
420+ let dm = dv._1
421+ let dn = dv._2
422+ if (if (if (aN())
420423 then true
421- else (aY == m))
424+ else (ba == m))
422425 then true
423- else (aY == n))
426+ else (ba == n))
424427 then throw("Exchange operations disabled")
425- else if (if ((dr.assetPair.amountAsset != ba))
428+ else if (if ((ds.assetPair.amountAsset != bc))
426429 then true
427- else (dr.assetPair.priceAsset != bb))
430+ else (ds.assetPair.priceAsset != bd))
428431 then throw("Wrong order assets.")
429432 else {
430- let dv = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, af), aI("kLp is required"))), aI("invalid kLp"))
431- let dw = dk(dl, dm, 0)
432- let dx = dw._1
433- let dy = dw._2
434- let dz = (dy >= dv)
435- dz
433+ let dw = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
434+ let dx = dl(dm, dn, 0)
435+ let dy = dx._1
436+ let dz = dx._2
437+ let dA = (dz >= dw)
438+ dA
436439 }
437440 }
438441
439442
440-func dA (dB) = if ((size(dB.payments) != 1))
443+func dB (dC) = if ((size(dC.payments) != 1))
441444 then throw("exactly 1 payment is expected")
442445 else {
443- let dC = value(dB.payments[0])
444- let bX = value(dC.assetId)
445- let dD = dC.amount
446- let cI = bV(toBase58String(dB.transactionId), toBase58String(bX), dD, dB.caller)
447- let co = cI._1
448- let cp = cI._2
449- let cc = parseIntValue(cI._9)
450- let cq = cI._10
451- if (if (aL())
446+ let dD = value(dC.payments[0])
447+ let bY = value(dD.assetId)
448+ let dE = dD.amount
449+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bY), dE, dC.caller)
450+ let cp = cJ._1
451+ let cq = cJ._2
452+ let cd = parseIntValue(cJ._9)
453+ let cr = cJ._10
454+ if (if (aN())
452455 then true
453- else (cc == n))
454- then throw(("Get operation is blocked by admin. Status = " + toString(cc)))
455- else $Tuple5(co, cp, dD, bX, cq)
456+ else (cd == n))
457+ then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
458+ else $Tuple5(cp, cq, dE, bY, cr)
456459 }
457460
458461
459-func dE (dB,cs,cy) = if ((size(dB.payments) != 2))
462+func dF (dC,ct,cz) = if ((size(dC.payments) != 2))
460463 then throw("exactly 2 payments are expected")
461464 else {
462- let dF = value(dB.payments[0])
463- let dG = value(dB.payments[1])
464- let dH = cr(toBase58String(dB.transactionId), cs, dF.amount, dF.assetId, dG.amount, dG.assetId, toString(dB.caller), false, cy)
465- let cc = parseIntValue(dH._8)
466- if (if (if (aL())
465+ let dG = value(dC.payments[0])
466+ let dH = value(dC.payments[1])
467+ let dI = cs(toBase58String(dC.transactionId), ct, dG.amount, dG.assetId, dH.amount, dH.assetId, toString(dC.caller), false, cz)
468+ let cd = parseIntValue(dI._8)
469+ if (if (if (aN())
467470 then true
468- else (cc == l))
471+ else (cd == l))
469472 then true
470- else (cc == n))
471- then throw(("Put operation is blocked by admin. Status = " + toString(cc)))
472- else dH
473+ else (cd == n))
474+ then throw(("Put operation is blocked by admin. Status = " + toString(cd)))
475+ else dI
473476 }
474477
475478
476-func dI (dJ) = {
477- let dK = invoke(aJ, "emit", [dJ], nil)
478- if ((dK == dK))
479+func dJ (dK) = {
480+ let dL = invoke(aL, "emit", [dK], nil)
481+ if ((dL == dL))
479482 then {
480- let dL = {
481- let dM = dK
482- if ($isInstanceOf(dM, "Address"))
483+ let dM = {
484+ let dN = dL
485+ if ($isInstanceOf(dN, "Address"))
483486 then {
484- let dN = dM
485- invoke(dN, "emit", [dJ], nil)
487+ let dO = dN
488+ invoke(dO, "emit", [dK], nil)
486489 }
487490 else unit
488491 }
489- if ((dL == dL))
490- then dJ
492+ if ((dM == dM))
493+ then dK
491494 else throw("Strict value is not equal to itself.")
492495 }
493496 else throw("Strict value is not equal to itself.")
494497 }
495498
496499
497-func dO (dJ) = {
498- let dP = fraction(dJ, ae, b)
499- $Tuple2((dJ - dP), dP)
500+func dP (dK) = {
501+ let dQ = fraction(dK, ag, b)
502+ $Tuple2((dK - dQ), dQ)
500503 }
501504
502505
503-func dQ (dR,dS,X,Y) = {
504- let dT = (Y == unit)
505- let dU = bw(aS(ba))
506- let dV = bw(aS(bb))
507- let dW = if ((dS == ba))
506+func dR (dS,dT,Z,aa) = {
507+ let dU = (aa == unit)
508+ let dV = by(aU(bc))
509+ let dW = by(aU(bd))
510+ let dX = if ((dT == bc))
508511 then true
509- else if ((dS == bb))
512+ else if ((dT == bd))
510513 then false
511- else aG("invalid asset")
512- let dX = if (dT)
513- then $Tuple2(dU, dV)
514- else if (dW)
515- then $Tuple2((dU - dR), dV)
516- else $Tuple2(dU, (dV - dR))
517- let dY = dX._1
518- let dZ = dX._2
519- let ea = if (dW)
520- then $Tuple2(dR, 0)
521- else $Tuple2(0, dR)
522- let eb = ea._1
523- let ec = ea._2
524- let ds = dO(eb)._1
525- let dt = dO(ec)._1
526- let ed = dO(dR)
527- let ee = ed._1
528- let dP = ed._2
529- let ef = (dY + ds)
514+ else aI("invalid asset")
515+ let dY = if (dU)
516+ then $Tuple2(dV, dW)
517+ else if (dX)
518+ then $Tuple2((dV - dS), dW)
519+ else $Tuple2(dV, (dW - dS))
520+ let dZ = dY._1
521+ let ea = dY._2
522+ let eb = if (dX)
523+ then $Tuple2(dS, 0)
524+ else $Tuple2(0, dS)
525+ let ec = eb._1
526+ let ed = eb._2
527+ let dt = dP(ec)._1
528+ let du = dP(ed)._1
529+ let ee = dP(dS)
530+ let ef = ee._1
531+ let dQ = ee._2
530532 let eg = (dZ + dt)
531- let eh = by(D(eg, bd), D(ef, bc))
532- let ei = G(eh, b)
533- let ej = if (dW)
534- then dY
535- else dZ
536- let ek = toBigInt(ej)
537- let el = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
538- let em = if ((el > f))
533+ let eh = (ea + du)
534+ let ei = bA(D(eh, bf), D(eg, be))
535+ let ej = G(ei, b)
536+ let ek = if (dX)
537+ then dZ
538+ else ea
539+ let el = toBigInt(ek)
540+ let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
541+ let en = if ((em > f))
539542 then true
540- else aG("initial deposit requires all coins")
541- if ((em == em))
543+ else aI("initial deposit requires all coins")
544+ if ((en == en))
542545 then {
543- let en = toBigInt(ee)
544- let eo = max([0, toInt(((el * (sqrtBigInt((d + ((en * d) / ek)), 18, 18, DOWN) - d)) / d))])
545- let cX = if (dT)
546+ let eo = toBigInt(ef)
547+ let ep = max([0, toInt(((em * (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d)) / d))])
548+ let cY = if (dU)
546549 then nil
547- else [IntegerEntry(S(), ei), IntegerEntry(T(height, lastBlock.timestamp), ei), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bh(eb, ec, eo, ei, 0, 0, height, lastBlock.timestamp, 0, 0))]
548- let ep = by(D(dZ, bd), D(dY, bc))
549- let eq = G(ep, b)
550- let er = {
551- let es = if (dW)
552- then $Tuple2(eb, dY)
553- else $Tuple2(ec, dZ)
554- let dJ = es._1
555- let et = es._2
556- let eu = toInt(fraction(el, toBigInt((dJ / 2)), toBigInt(et)))
557- fraction((eo - eu), b, eu)
550+ else [IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bj(ec, ed, ep, ej, 0, 0, height, lastBlock.timestamp, 0, 0))]
551+ let eq = bA(D(ea, bf), D(dZ, be))
552+ let er = G(eq, b)
553+ let es = {
554+ let et = if (dX)
555+ then $Tuple2(ec, dZ)
556+ else $Tuple2(ed, ea)
557+ let dK = et._1
558+ let eu = et._2
559+ let ev = toInt(fraction(em, toBigInt((dK / 2)), toBigInt(eu)))
560+ fraction((ep - ev), b, ev)
558561 }
559- $Tuple5(eo, cX, dP, er, dW)
562+ $Tuple5(ep, cY, dQ, es, dX)
560563 }
561564 else throw("Strict value is not equal to itself.")
562565 }
563566
564567
565-func ev (ew,ee,dS,X,Y) = {
566- let dT = (Y == unit)
567- let ex = [if ((dS == aZ))
568+func ew (ex,ef,dT,Z,aa) = {
569+ let dU = (aa == unit)
570+ let ey = [if ((dT == bb))
568571 then true
569- else aG("invalid lp asset")]
570- if ((ex == ex))
572+ else aI("invalid lp asset")]
573+ if ((ey == ey))
571574 then {
572- let ey = if ((ew == ba))
575+ let ez = if ((ex == bc))
573576 then true
574- else if ((ew == bb))
577+ else if ((ex == bd))
575578 then false
576- else aG("invalid asset")
577- let ez = if (ey)
578- then toBigInt(bw(aS(ba)))
579- else toBigInt(bw(aS(bb)))
580- let eA = bw(aS(ba))
581- let eB = bw(aS(bb))
582- let eC = if (ey)
583- then eA
584- else eB
585- let eD = toBigInt(eC)
586- let el = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
587- let eE = toBigInt(ee)
588- let eF = max([0, toInt(((ez * (d - pow((d - ((eE * d) / el)), 18, h, 0, 18, DOWN))) / d))])
589- let eG = dO(eF)
590- let eH = eG._1
591- let dP = eG._2
592- let eI = if (ey)
593- then $Tuple4(eH, 0, (eA - eF), eB)
594- else $Tuple4(0, eH, eA, (eB - eF))
595- let eJ = eI._1
596- let eK = eI._2
597- let eL = eI._3
598- let eM = eI._4
599- let eh = by(D(eM, bd), D(eL, bc))
600- let ei = G(eh, b)
601- let cX = if (dT)
579+ else aI("invalid asset")
580+ let eA = if (ez)
581+ then toBigInt(by(aU(bc)))
582+ else toBigInt(by(aU(bd)))
583+ let eB = by(aU(bc))
584+ let eC = by(aU(bd))
585+ let eD = if (ez)
586+ then eB
587+ else eC
588+ let eE = toBigInt(eD)
589+ let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
590+ let eF = toBigInt(ef)
591+ let eG = max([0, toInt(((eA * (d - pow((d - ((eF * d) / em)), 18, h, 0, 18, DOWN))) / d))])
592+ let eH = dP(eG)
593+ let eI = eH._1
594+ let dQ = eH._2
595+ let eJ = if (ez)
596+ then $Tuple4(eI, 0, (eB - eG), eC)
597+ else $Tuple4(0, eI, eB, (eC - eG))
598+ let eK = eJ._1
599+ let eL = eJ._2
600+ let eM = eJ._3
601+ let eN = eJ._4
602+ let ei = bA(D(eN, bf), D(eM, be))
603+ let ej = G(ei, b)
604+ let cY = if (dU)
602605 then nil
603- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bs(eJ, eK, ee, ei, height, lastBlock.timestamp)), IntegerEntry(S(), ei), IntegerEntry(T(height, lastBlock.timestamp), ei)]
604- let ep = by(D(eB, bd), D(eA, bc))
605- let eq = G(ep, b)
606- let er = {
607- let eN = (toInt(fraction(ez, eE, el)) * 2)
608- fraction((eH - eN), b, eN)
606+ else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eK, eL, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
607+ let eq = bA(D(eC, bf), D(eB, be))
608+ let er = G(eq, b)
609+ let es = {
610+ let eO = (toInt(fraction(eA, eF, em)) * 2)
611+ fraction((eI - eO), b, eO)
609612 }
610- $Tuple5(eH, cX, dP, er, ey)
613+ $Tuple5(eI, cY, dQ, es, ez)
611614 }
612615 else throw("Strict value is not equal to itself.")
613616 }
614617
615618
616-func eO () = {
617- let dM = getString(Q())
618- if ($isInstanceOf(dM, "String"))
619+func eP () = {
620+ let dN = getString(S())
621+ if ($isInstanceOf(dN, "String"))
619622 then {
620- let eP = dM
621- fromBase58String(eP)
623+ let eQ = dN
624+ fromBase58String(eQ)
622625 }
623- else if ($isInstanceOf(dM, "Unit"))
626+ else if ($isInstanceOf(dN, "Unit"))
624627 then unit
625628 else throw("Match error")
626629 }
627630
628631
629-func eQ () = {
630- let dM = getString(R())
631- if ($isInstanceOf(dM, "String"))
632+func eR () = {
633+ let dN = getString(T())
634+ if ($isInstanceOf(dN, "String"))
632635 then {
633- let eP = dM
634- fromBase58String(eP)
636+ let eQ = dN
637+ fromBase58String(eQ)
635638 }
636- else if ($isInstanceOf(dM, "Unit"))
639+ else if ($isInstanceOf(dN, "Unit"))
637640 then unit
638641 else throw("Match error")
639642 }
640643
641644
642-func eR (dB) = {
643- let dM = eO()
644- if ($isInstanceOf(dM, "ByteVector"))
645+func eS (dC) = {
646+ let dN = eP()
647+ if ($isInstanceOf(dN, "ByteVector"))
645648 then {
646- let eS = dM
647- (dB.callerPublicKey == eS)
649+ let eT = dN
650+ (dC.callerPublicKey == eT)
648651 }
649- else if ($isInstanceOf(dM, "Unit"))
650- then (dB.caller == this)
652+ else if ($isInstanceOf(dN, "Unit"))
653+ then (dC.caller == this)
651654 else throw("Match error")
652655 }
653656
654657
655-func eT (dB) = {
656- let eU = throw("Permission denied")
657- let dM = eO()
658- if ($isInstanceOf(dM, "ByteVector"))
658+func eU (dC) = {
659+ let eV = throw("Permission denied")
660+ let dN = eP()
661+ if ($isInstanceOf(dN, "ByteVector"))
659662 then {
660- let eS = dM
661- if ((dB.callerPublicKey == eS))
663+ let eT = dN
664+ if ((dC.callerPublicKey == eT))
662665 then true
663- else eU
666+ else eV
664667 }
665- else if ($isInstanceOf(dM, "Unit"))
666- then if ((dB.caller == this))
668+ else if ($isInstanceOf(dN, "Unit"))
669+ then if ((dC.caller == this))
667670 then true
668- else eU
671+ else eV
669672 else throw("Match error")
670673 }
671674
672675
673-@Callable(dB)
674-func setManager (eV) = {
675- let eW = eT(dB)
676- if ((eW == eW))
676+@Callable(dC)
677+func setManager (eW) = {
678+ let eX = eU(dC)
679+ if ((eX == eX))
677680 then {
678- let eX = fromBase58String(eV)
679- if ((eX == eX))
680- then [StringEntry(R(), eV)]
681+ let eY = fromBase58String(eW)
682+ if ((eY == eY))
683+ then [StringEntry(T(), eW)]
681684 else throw("Strict value is not equal to itself.")
682685 }
683686 else throw("Strict value is not equal to itself.")
685688
686689
687690
688-@Callable(dB)
691+@Callable(dC)
689692 func confirmManager () = {
690- let eY = eQ()
691- let eZ = if (isDefined(eY))
693+ let eZ = eR()
694+ let fa = if (isDefined(eZ))
692695 then true
693696 else throw("No pending manager")
694- if ((eZ == eZ))
697+ if ((fa == fa))
695698 then {
696- let fa = if ((dB.callerPublicKey == value(eY)))
699+ let fb = if ((dC.callerPublicKey == value(eZ)))
697700 then true
698701 else throw("You are not pending manager")
699- if ((fa == fa))
700- then [StringEntry(Q(), toBase58String(value(eY))), DeleteEntry(R())]
702+ if ((fb == fb))
703+ then [StringEntry(S(), toBase58String(value(eZ))), DeleteEntry(T())]
701704 else throw("Strict value is not equal to itself.")
702705 }
703706 else throw("Strict value is not equal to itself.")
705708
706709
707710
708-@Callable(dB)
709-func put (cs,fb) = if ((0 > cs))
711+@Callable(dC)
712+func put (ct,fc) = if ((0 > ct))
710713 then throw("Invalid slippageTolerance passed")
711714 else {
712- let dH = dE(dB, cs, true)
713- let cU = dH._2
714- let bZ = dH._7
715- let cq = dH._9
716- let cV = dH._10
717- let cW = dH._11
718- let fc = dH._12
719- let fd = dH._13
720- let dF = toBigInt(value(dB.payments[0]).amount)
721- let dG = toBigInt(value(dB.payments[1]).amount)
722- let dg = (toBigInt(bw(aS(ba))) - dF)
723- if ((dg == dg))
715+ let dI = dF(dC, ct, true)
716+ let cV = dI._2
717+ let ca = dI._7
718+ let cr = dI._9
719+ let cW = dI._10
720+ let cX = dI._11
721+ let fd = dI._12
722+ let fe = dI._13
723+ let dG = toBigInt(value(dC.payments[0]).amount)
724+ let dH = toBigInt(value(dC.payments[1]).amount)
725+ let dh = (toBigInt(by(aU(bc))) - dG)
726+ if ((dh == dh))
724727 then {
725- let dh = (toBigInt(bw(aS(bb))) - dG)
726- if ((dh == dh))
728+ let di = (toBigInt(by(aU(bd))) - dH)
729+ if ((di == di))
727730 then {
728- let di = toBigInt(value(assetInfo(aZ)).quantity)
729- if ((di == di))
731+ let dj = toBigInt(value(assetInfo(bb)).quantity)
732+ if ((dj == dj))
730733 then {
731- let dj = dc(dF, dG, toBigInt(0))
732- if ((dj == dj))
734+ let dk = dd(dG, dH, toBigInt(0))
735+ if ((dk == dk))
733736 then {
734- let dK = invoke(aJ, "emit", [cU], nil)
735- if ((dK == dK))
737+ let dL = invoke(aL, "emit", [cV], nil)
738+ if ((dL == dL))
736739 then {
737- let dL = {
738- let dM = dK
739- if ($isInstanceOf(dM, "Address"))
740+ let dM = {
741+ let dN = dL
742+ if ($isInstanceOf(dN, "Address"))
740743 then {
741- let dN = dM
742- invoke(dN, "emit", [cU], nil)
744+ let dO = dN
745+ invoke(dO, "emit", [cV], nil)
743746 }
744747 else unit
745748 }
746- if ((dL == dL))
749+ if ((dM == dM))
747750 then {
748- let fe = if ((cV > 0))
749- then invoke(bg, "put", nil, [AttachedPayment(fc, cV)])
751+ let ff = if ((cW > 0))
752+ then invoke(bi, "put", nil, [AttachedPayment(fd, cW)])
750753 else nil
751- if ((fe == fe))
754+ if ((ff == ff))
752755 then {
753- let ff = if ((cW > 0))
754- then invoke(bg, "put", nil, [AttachedPayment(fd, cW)])
756+ let fg = if ((cX > 0))
757+ then invoke(bi, "put", nil, [AttachedPayment(fe, cX)])
755758 else nil
756- if ((ff == ff))
759+ if ((fg == fg))
757760 then {
758- let fg = if (fb)
761+ let fh = if (fc)
759762 then {
760- let fh = invoke(bf, "stake", nil, [AttachedPayment(bZ, cU)])
761- if ((fh == fh))
763+ let fi = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
764+ if ((fi == fi))
762765 then nil
763766 else throw("Strict value is not equal to itself.")
764767 }
765- else [ScriptTransfer(dB.caller, cU, bZ)]
766- let fi = value(assetInfo(aZ)).quantity
767- if ((fi == fi))
768+ else [ScriptTransfer(dC.caller, cV, ca)]
769+ let fj = value(assetInfo(bb)).quantity
770+ if ((fj == fj))
768771 then {
769- let fj = dk(0, 0, 0)
770- if ((fj == fj))
772+ let fk = dl(0, 0, 0)
773+ if ((fk == fk))
771774 then {
772- let db = fj._2
773- let fk = fj._1
774- let fl = aG(makeString([toString(dg), toString(dh), toString(di), toString(dj), toString(db), toString(cU), toString(cV), toString(cW), toString(di), toString(fi)], " "))
775- if ((fl == fl))
775+ let dc = fk._2
776+ let fl = fk._1
777+ let fm = aI(makeString([toString(dh), toString(di), toString(dj), toString(dk), toString(dc), toString(cV), toString(cW), toString(cX), toString(dj), toString(fj)], " "))
778+ if ((fm == fm))
776779 then {
777- let fm = do(dj, db)
778- if ((fm == fm))
779- then ((cq ++ fg) ++ fk)
780+ let fn = dp(dk, dc)
781+ if ((fn == fn))
782+ then ((cr ++ fh) ++ fl)
780783 else throw("Strict value is not equal to itself.")
781784 }
782785 else throw("Strict value is not equal to itself.")
804807
805808
806809
807-@Callable(dB)
808-func putForFree (fn) = if ((0 > fn))
810+@Callable(dC)
811+func putForFree (fo) = if ((0 > fo))
809812 then throw("Invalid value passed")
810813 else {
811- let dH = dE(dB, fn, false)
812- let cq = dH._9
813- let dF = toBigInt(value(dB.payments[0]).amount)
814- let dG = toBigInt(value(dB.payments[1]).amount)
815- let dj = dc(dF, dG, toBigInt(0))
816- if ((dj == dj))
814+ let dI = dF(dC, fo, false)
815+ let cr = dI._9
816+ let dG = toBigInt(value(dC.payments[0]).amount)
817+ let dH = toBigInt(value(dC.payments[1]).amount)
818+ let dk = dd(dG, dH, toBigInt(0))
819+ if ((dk == dk))
817820 then {
818- let fo = dk(0, 0, 0)
819- let fk = fo._1
820- let db = fo._2
821- let fm = do(dj, db)
822- if ((fm == fm))
823- then (cq ++ fk)
821+ let fp = dl(0, 0, 0)
822+ let fl = fp._1
823+ let dc = fp._2
824+ let fn = dp(dk, dc)
825+ if ((fn == fn))
826+ then (cr ++ fl)
824827 else throw("Strict value is not equal to itself.")
825828 }
826829 else throw("Strict value is not equal to itself.")
828831
829832
830833
831-@Callable(dB)
832-func putOneTkn (fp,fq) = {
833- let fr = {
834- let fs = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835- if ($isInstanceOf(fs, "Boolean"))
836- then fs
837- else throw(($getType(fs) + " couldn't be cast to Boolean"))
834+@Callable(dC)
835+func putOneTkn (fq,fr) = {
836+ let fs = {
837+ let ft = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
838+ if ($isInstanceOf(ft, "Boolean"))
839+ then ft
840+ else throw(($getType(ft) + " couldn't be cast to Boolean"))
838841 }
839- let ft = if (if (if (aL())
842+ let fu = if (if (if (aN())
840843 then true
841- else (aY == l))
844+ else (ba == l))
842845 then true
843- else (aY == n))
846+ else (ba == n))
844847 then true
845- else fr
846- let ex = [if (if (!(ft))
848+ else fs
849+ let ey = [if (if (!(fu))
847850 then true
848- else eR(dB))
851+ else eS(dC))
849852 then true
850- else aG("put operation is blocked by admin"), if ((size(dB.payments) == 1))
853+ else aI("put operation is blocked by admin"), if ((size(dC.payments) == 1))
851854 then true
852- else aG("exactly 1 payment are expected")]
853- if ((ex == ex))
855+ else aI("exactly 1 payment are expected")]
856+ if ((ey == ey))
854857 then {
855- let fu = dB.payments[0]
856- let dS = fu.assetId
857- let dR = fu.amount
858- let dj = if ((dS == ba))
859- then dc(toBigInt(dR), toBigInt(0), toBigInt(0))
860- else if ((dS == bb))
861- then dc(toBigInt(0), toBigInt(dR), toBigInt(0))
862- else aG("payment asset is not supported")
863- let X = dB.caller
864- let Y = dB.transactionId
865- let fv = dQ(dR, dS, X, Y)
866- if ((fv == fv))
858+ let fv = dC.payments[0]
859+ let dT = fv.assetId
860+ let dS = fv.amount
861+ let dk = if ((dT == bc))
862+ then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
863+ else if ((dT == bd))
864+ then dd(toBigInt(0), toBigInt(dS), toBigInt(0))
865+ else aI("payment asset is not supported")
866+ let Z = dC.caller
867+ let aa = dC.transactionId
868+ let fw = dR(dS, dT, Z, aa)
869+ if ((fw == fw))
867870 then {
868- let dW = fv._5
869- let fw = fv._4
870- let dP = fv._3
871- let cX = fv._2
872- let fx = fv._1
873- let fy = if (if ((fp > 0))
874- then (fp > fx)
871+ let dX = fw._5
872+ let fx = fw._4
873+ let dQ = fw._3
874+ let cY = fw._2
875+ let fy = fw._1
876+ let fz = if (if ((fq > 0))
877+ then (fq > fy)
875878 else false)
876- then aG(makeString(["amount to receive is less than ", toString(fp)], ""))
877- else fx
878- let dK = dI(fy)
879- if ((dK == dK))
879+ then aI(makeString(["amount to receive is less than ", toString(fq)], ""))
880+ else fy
881+ let dL = dJ(fz)
882+ if ((dL == dL))
880883 then {
881- let fg = if (fq)
884+ let fh = if (fr)
882885 then {
883- let fz = invoke(bf, "stake", nil, [AttachedPayment(aZ, fy)])
884- if ((fz == fz))
886+ let fA = invoke(bh, "stake", nil, [AttachedPayment(bb, fz)])
887+ if ((fA == fA))
885888 then nil
886889 else throw("Strict value is not equal to itself.")
887890 }
888- else [ScriptTransfer(dB.caller, fy, aZ)]
889- let fA = if ((dP > 0))
890- then [ScriptTransfer(aK, dP, dS)]
891+ else [ScriptTransfer(dC.caller, fz, bb)]
892+ let fB = if ((dQ > 0))
893+ then [ScriptTransfer(aM, dQ, dT)]
891894 else nil
892- let fB = if ((this == aK))
895+ let fC = if ((this == aM))
893896 then $Tuple2(0, 0)
894- else if (dW)
895- then $Tuple2(-(dP), 0)
896- else $Tuple2(0, -(dP))
897- let dl = fB._1
898- let dm = fB._2
899- let fC = dk(dl, dm, 0)
900- let fk = fC._1
901- let db = fC._2
902- let dv = value(getString(af))
903- let fm = do(dj, db)
904- if ((fm == fm))
905- then $Tuple2((((cX ++ fg) ++ fA) ++ fk), fy)
897+ else if (dX)
898+ then $Tuple2(-(dQ), 0)
899+ else $Tuple2(0, -(dQ))
900+ let dm = fC._1
901+ let dn = fC._2
902+ let fD = dl(dm, dn, 0)
903+ let fl = fD._1
904+ let dc = fD._2
905+ let dw = value(getString(ah))
906+ let fn = dp(dk, dc)
907+ if ((fn == fn))
908+ then $Tuple2((((cY ++ fh) ++ fB) ++ fl), fz)
906909 else throw("Strict value is not equal to itself.")
907910 }
908911 else throw("Strict value is not equal to itself.")
914917
915918
916919
917-@Callable(dB)
918-func putOneTknREADONLY (dS,dR) = {
919- let fD = dQ(dR, aQ(dS), unit, unit)
920- let fx = fD._1
921- let cX = fD._2
922- let dP = fD._3
923- let fw = fD._4
924- let dW = fD._5
925- $Tuple2(nil, $Tuple3(fx, dP, fw))
920+@Callable(dC)
921+func putOneTknREADONLY (dT,dS) = {
922+ let fE = dR(dS, aS(dT), unit, unit)
923+ let fy = fE._1
924+ let cY = fE._2
925+ let dQ = fE._3
926+ let fx = fE._4
927+ let dX = fE._5
928+ $Tuple2(nil, $Tuple3(fy, dQ, fx))
926929 }
927930
928931
929932
930-@Callable(dB)
931-func getOneTkn (fE,fp) = {
932- let fr = {
933- let fs = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
934- if ($isInstanceOf(fs, "Boolean"))
935- then fs
936- else throw(($getType(fs) + " couldn't be cast to Boolean"))
933+@Callable(dC)
934+func getOneTkn (fF,fq) = {
935+ let fs = {
936+ let ft = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
937+ if ($isInstanceOf(ft, "Boolean"))
938+ then ft
939+ else throw(($getType(ft) + " couldn't be cast to Boolean"))
937940 }
938- let fF = if (if (aL())
941+ let fG = if (if (aN())
939942 then true
940- else (aY == n))
943+ else (ba == n))
941944 then true
942- else fr
943- let ex = [if (if (!(fF))
945+ else fs
946+ let ey = [if (if (!(fG))
944947 then true
945- else eR(dB))
948+ else eS(dC))
946949 then true
947- else aG("get operation is blocked by admin"), if ((size(dB.payments) == 1))
950+ else aI("get operation is blocked by admin"), if ((size(dC.payments) == 1))
948951 then true
949- else aG("exactly 1 payment are expected")]
950- if ((ex == ex))
952+ else aI("exactly 1 payment are expected")]
953+ if ((ey == ey))
951954 then {
952- let ew = aQ(fE)
953- let fu = dB.payments[0]
954- let dS = fu.assetId
955- let ee = fu.amount
956- let dj = dc(toBigInt(0), toBigInt(0), toBigInt(ee))
957- let X = dB.caller
958- let Y = dB.transactionId
959- let fG = ev(ew, ee, dS, X, Y)
960- if ((fG == fG))
955+ let ex = aS(fF)
956+ let fv = dC.payments[0]
957+ let dT = fv.assetId
958+ let ef = fv.amount
959+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(ef))
960+ let Z = dC.caller
961+ let aa = dC.transactionId
962+ let fH = ew(ex, ef, dT, Z, aa)
963+ if ((fH == fH))
961964 then {
962- let ey = fG._5
963- let fw = fG._4
964- let dP = fG._3
965- let cX = fG._2
966- let fH = fG._1
967- let dJ = if (if ((fp > 0))
968- then (fp > fH)
965+ let ez = fH._5
966+ let fx = fH._4
967+ let dQ = fH._3
968+ let cY = fH._2
969+ let fI = fH._1
970+ let dK = if (if ((fq > 0))
971+ then (fq > fI)
969972 else false)
970- then aG(makeString(["amount to receive is less than ", toString(fp)], ""))
971- else fH
972- let fI = invoke(aJ, "burn", [ee], [AttachedPayment(dS, ee)])
973- if ((fI == fI))
973+ then aI(makeString(["amount to receive is less than ", toString(fq)], ""))
974+ else fI
975+ let fJ = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
976+ if ((fJ == fJ))
974977 then {
975- let fJ = [ScriptTransfer(X, dJ, ew)]
976- let fA = if ((dP > 0))
977- then [ScriptTransfer(aK, dP, ew)]
978+ let fK = [ScriptTransfer(Z, dK, ex)]
979+ let fB = if ((dQ > 0))
980+ then [ScriptTransfer(aM, dQ, ex)]
978981 else nil
979- let fK = {
980- let fL = if ((this == aK))
982+ let fL = {
983+ let fM = if ((this == aM))
981984 then 0
982- else dP
983- if (ey)
984- then $Tuple2(-((dJ + fL)), 0)
985- else $Tuple2(0, -((dJ + fL)))
985+ else dQ
986+ if (ez)
987+ then $Tuple2(-((dK + fM)), 0)
988+ else $Tuple2(0, -((dK + fM)))
986989 }
987- let dl = fK._1
988- let dm = fK._2
989- let fM = dk(dl, dm, 0)
990- let fk = fM._1
991- let db = fM._2
992- let fm = do(dj, db)
993- if ((fm == fm))
994- then $Tuple2((((cX ++ fJ) ++ fA) ++ fk), dJ)
990+ let dm = fL._1
991+ let dn = fL._2
992+ let fN = dl(dm, dn, 0)
993+ let fl = fN._1
994+ let dc = fN._2
995+ let fn = dp(dk, dc)
996+ if ((fn == fn))
997+ then $Tuple2((((cY ++ fK) ++ fB) ++ fl), dK)
995998 else throw("Strict value is not equal to itself.")
996999 }
9971000 else throw("Strict value is not equal to itself.")
10031006
10041007
10051008
1006-@Callable(dB)
1007-func getOneTknREADONLY (ew,ee) = {
1008- let fN = ev(aQ(ew), ee, aZ, unit, unit)
1009- let fH = fN._1
1010- let cX = fN._2
1011- let dP = fN._3
1012- let fw = fN._4
1013- let ey = fN._5
1014- $Tuple2(nil, $Tuple3(fH, dP, fw))
1009+@Callable(dC)
1010+func getOneTknREADONLY (ex,ef) = {
1011+ let fO = ew(aS(ex), ef, bb, unit, unit)
1012+ let fI = fO._1
1013+ let cY = fO._2
1014+ let dQ = fO._3
1015+ let fx = fO._4
1016+ let ez = fO._5
1017+ $Tuple2(nil, $Tuple3(fI, dQ, fx))
10151018 }
10161019
10171020
10181021
1019-@Callable(dB)
1020-func unstakeAndGetOneTkn (fO,fE,fp) = {
1021- let fr = {
1022- let fs = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1023- if ($isInstanceOf(fs, "Boolean"))
1024- then fs
1025- else throw(($getType(fs) + " couldn't be cast to Boolean"))
1022+@Callable(dC)
1023+func unstakeAndGetOneTkn (fP,fF,fq) = {
1024+ let fs = {
1025+ let ft = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1026+ if ($isInstanceOf(ft, "Boolean"))
1027+ then ft
1028+ else throw(($getType(ft) + " couldn't be cast to Boolean"))
10261029 }
1027- let fF = if (if (aL())
1030+ let fG = if (if (aN())
10281031 then true
1029- else (aY == n))
1032+ else (ba == n))
10301033 then true
1031- else fr
1032- let ex = [if (if (!(fF))
1034+ else fs
1035+ let ey = [if (if (!(fG))
10331036 then true
1034- else eR(dB))
1037+ else eS(dC))
10351038 then true
1036- else aG("get operation is blocked by admin"), if ((size(dB.payments) == 0))
1039+ else aI("get operation is blocked by admin"), if ((size(dC.payments) == 0))
10371040 then true
1038- else aG("no payments are expected")]
1039- if ((ex == ex))
1041+ else aI("no payments are expected")]
1042+ if ((ey == ey))
10401043 then {
1041- let ew = aQ(fE)
1042- let X = dB.caller
1043- let Y = dB.transactionId
1044- let dj = dc(toBigInt(0), toBigInt(0), toBigInt(0))
1045- let fP = invoke(bf, "unstake", [toBase58String(aZ), fO], nil)
1046- if ((fP == fP))
1044+ let ex = aS(fF)
1045+ let Z = dC.caller
1046+ let aa = dC.transactionId
1047+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1048+ let fQ = invoke(bh, "unstake", [toBase58String(bb), fP], nil)
1049+ if ((fQ == fQ))
10471050 then {
1048- let fQ = ev(ew, fO, aZ, X, Y)
1049- if ((fQ == fQ))
1051+ let fR = ew(ex, fP, bb, Z, aa)
1052+ if ((fR == fR))
10501053 then {
1051- let ey = fQ._5
1052- let fw = fQ._4
1053- let dP = fQ._3
1054- let cX = fQ._2
1055- let fH = fQ._1
1056- let dJ = if (if ((fp > 0))
1057- then (fp > fH)
1054+ let ez = fR._5
1055+ let fx = fR._4
1056+ let dQ = fR._3
1057+ let cY = fR._2
1058+ let fI = fR._1
1059+ let dK = if (if ((fq > 0))
1060+ then (fq > fI)
10581061 else false)
1059- then aG(makeString(["amount to receive is less than ", toString(fp)], ""))
1060- else fH
1061- let fI = invoke(aJ, "burn", [fO], [AttachedPayment(aZ, fO)])
1062- if ((fI == fI))
1062+ then aI(makeString(["amount to receive is less than ", toString(fq)], ""))
1063+ else fI
1064+ let fJ = invoke(aL, "burn", [fP], [AttachedPayment(bb, fP)])
1065+ if ((fJ == fJ))
10631066 then {
1064- let fJ = [ScriptTransfer(dB.caller, dJ, ew)]
1065- let fA = if ((dP > 0))
1066- then [ScriptTransfer(aK, dP, ew)]
1067+ let fK = [ScriptTransfer(dC.caller, dK, ex)]
1068+ let fB = if ((dQ > 0))
1069+ then [ScriptTransfer(aM, dQ, ex)]
10671070 else nil
1068- let fR = {
1069- let fL = if ((this == aK))
1071+ let fS = {
1072+ let fM = if ((this == aM))
10701073 then 0
1071- else dP
1072- if (ey)
1073- then $Tuple2(-((dJ + fL)), 0)
1074- else $Tuple2(0, -((dJ + fL)))
1074+ else dQ
1075+ if (ez)
1076+ then $Tuple2(-((dK + fM)), 0)
1077+ else $Tuple2(0, -((dK + fM)))
10751078 }
1076- let dl = fR._1
1077- let dm = fR._2
1078- let fS = dk(dl, dm, 0)
1079- let fk = fS._1
1080- let db = fS._2
1081- let fm = do(dj, db)
1082- if ((fm == fm))
1083- then $Tuple2((((cX ++ fJ) ++ fA) ++ fk), dJ)
1079+ let dm = fS._1
1080+ let dn = fS._2
1081+ let fT = dl(dm, dn, 0)
1082+ let fl = fT._1
1083+ let dc = fT._2
1084+ let fn = dp(dk, dc)
1085+ if ((fn == fn))
1086+ then $Tuple2((((cY ++ fK) ++ fB) ++ fl), dK)
10841087 else throw("Strict value is not equal to itself.")
10851088 }
10861089 else throw("Strict value is not equal to itself.")
10941097
10951098
10961099
1097-@Callable(dB)
1100+@Callable(dC)
10981101 func get () = {
1099- let cI = dA(dB)
1100- let fT = cI._1
1101- let cp = cI._2
1102- let dD = cI._3
1103- let bX = cI._4
1104- let cq = cI._5
1105- let dj = dc(toBigInt(0), toBigInt(0), toBigInt(dD))
1106- let fU = invoke(aJ, "burn", [dD], [AttachedPayment(bX, dD)])
1107- if ((fU == fU))
1102+ let cJ = dB(dC)
1103+ let fU = cJ._1
1104+ let cq = cJ._2
1105+ let dE = cJ._3
1106+ let bY = cJ._4
1107+ let cr = cJ._5
1108+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1109+ let fV = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1110+ if ((fV == fV))
11081111 then {
1109- let fV = dk(-(fT), -(cp), 0)
1110- let fk = fV._1
1111- let db = fV._2
1112- let fm = do(dj, db)
1113- if ((fm == fm))
1114- then (cq ++ fk)
1112+ let fW = dl(-(fU), -(cq), 0)
1113+ let fl = fW._1
1114+ let dc = fW._2
1115+ let fn = dp(dk, dc)
1116+ if ((fn == fn))
1117+ then (cr ++ fl)
11151118 else throw("Strict value is not equal to itself.")
11161119 }
11171120 else throw("Strict value is not equal to itself.")
11191122
11201123
11211124
1122-@Callable(dB)
1123-func getNoLess (fW,fX) = {
1124- let cI = dA(dB)
1125- let co = cI._1
1126- let cp = cI._2
1127- let dD = cI._3
1128- let bX = cI._4
1129- let cq = cI._5
1130- if ((fW > co))
1131- then throw(((("noLessThenAmtAsset failed: " + toString(co)) + " < ") + toString(fW)))
1132- else if ((fX > cp))
1133- then throw(((("noLessThenPriceAsset failed: " + toString(cp)) + " < ") + toString(fX)))
1125+@Callable(dC)
1126+func getNoLess (fX,fY) = {
1127+ let cJ = dB(dC)
1128+ let cp = cJ._1
1129+ let cq = cJ._2
1130+ let dE = cJ._3
1131+ let bY = cJ._4
1132+ let cr = cJ._5
1133+ if ((fX > cp))
1134+ then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fX)))
1135+ else if ((fY > cq))
1136+ then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fY)))
11341137 else {
1135- let dj = dc(toBigInt(0), toBigInt(0), toBigInt(dD))
1136- let fU = invoke(aJ, "burn", [dD], [AttachedPayment(bX, dD)])
1137- if ((fU == fU))
1138+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1139+ let fV = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1140+ if ((fV == fV))
11381141 then {
1139- let fY = dk(-(co), -(cp), 0)
1140- let fk = fY._1
1141- let db = fY._2
1142- let fm = do(dj, db)
1143- if ((fm == fm))
1144- then (cq ++ fk)
1142+ let fZ = dl(-(cp), -(cq), 0)
1143+ let fl = fZ._1
1144+ let dc = fZ._2
1145+ let fn = dp(dk, dc)
1146+ if ((fn == fn))
1147+ then (cr ++ fl)
11451148 else throw("Strict value is not equal to itself.")
11461149 }
11471150 else throw("Strict value is not equal to itself.")
11501153
11511154
11521155
1153-@Callable(dB)
1154-func unstakeAndGet (dJ) = {
1155- let fZ = if ((size(dB.payments) != 0))
1156+@Callable(dC)
1157+func unstakeAndGet (dK) = {
1158+ let ga = if ((size(dC.payments) != 0))
11561159 then throw("No payments are expected")
11571160 else true
1158- if ((fZ == fZ))
1161+ if ((ga == ga))
11591162 then {
1160- let bM = aN()
1161- let bZ = fromBase58String(bM[q])
1162- let dj = dc(toBigInt(0), toBigInt(0), toBigInt(0))
1163- let fP = invoke(bf, "unstake", [toBase58String(bZ), dJ], nil)
1164- if ((fP == fP))
1163+ let bN = aP()
1164+ let ca = fromBase58String(bN[q])
1165+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1166+ let fQ = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1167+ if ((fQ == fQ))
11651168 then {
1166- let cI = bV(toBase58String(dB.transactionId), toBase58String(bZ), dJ, dB.caller)
1167- let co = cI._1
1168- let cp = cI._2
1169- let cc = parseIntValue(cI._9)
1170- let cq = cI._10
1171- let ga = if (if (aL())
1169+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
1170+ let cp = cJ._1
1171+ let cq = cJ._2
1172+ let cd = parseIntValue(cJ._9)
1173+ let cr = cJ._10
1174+ let gb = if (if (aN())
11721175 then true
1173- else (cc == n))
1174- then throw(("Get operation is blocked by admin. Status = " + toString(cc)))
1176+ else (cd == n))
1177+ then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
11751178 else true
1176- if ((ga == ga))
1179+ if ((gb == gb))
11771180 then {
1178- let fU = invoke(aJ, "burn", [dJ], [AttachedPayment(bZ, dJ)])
1179- if ((fU == fU))
1181+ let fV = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1182+ if ((fV == fV))
11801183 then {
1181- let gb = dk(-(co), -(cp), 0)
1182- let fk = gb._1
1183- let db = gb._2
1184- let fm = do(dj, db)
1185- if ((fm == fm))
1186- then (cq ++ fk)
1184+ let gc = dl(-(cp), -(cq), 0)
1185+ let fl = gc._1
1186+ let dc = gc._2
1187+ let fn = dp(dk, dc)
1188+ if ((fn == fn))
1189+ then (cr ++ fl)
11871190 else throw("Strict value is not equal to itself.")
11881191 }
11891192 else throw("Strict value is not equal to itself.")
11971200
11981201
11991202
1200-@Callable(dB)
1201-func unstakeAndGetNoLess (fO,gc,fX) = {
1202- let fF = if (aL())
1203+@Callable(dC)
1204+func unstakeAndGetNoLess (fP,gd,fY) = {
1205+ let fG = if (aN())
12031206 then true
1204- else (aY == n)
1205- let ex = [if (!(fF))
1207+ else (ba == n)
1208+ let ey = [if (!(fG))
12061209 then true
1207- else throw("get operation is blocked by admin"), if ((size(dB.payments) == 0))
1210+ else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
12081211 then true
12091212 else throw("no payments are expected")]
1210- if ((ex == ex))
1213+ if ((ey == ey))
12111214 then {
1212- let dj = dc(toBigInt(0), toBigInt(0), toBigInt(0))
1213- let fP = invoke(bf, "unstake", [toBase58String(aZ), fO], nil)
1214- if ((fP == fP))
1215+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1216+ let fQ = invoke(bh, "unstake", [toBase58String(bb), fP], nil)
1217+ if ((fQ == fQ))
12151218 then {
1216- let cI = bV(toBase58String(dB.transactionId), toBase58String(aZ), fO, dB.caller)
1217- let co = cI._1
1218- let cp = cI._2
1219- let cq = cI._10
1220- let gd = [if ((co >= gc))
1219+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fP, dC.caller)
1220+ let cp = cJ._1
1221+ let cq = cJ._2
1222+ let cr = cJ._10
1223+ let ge = [if ((cp >= gd))
12211224 then true
1222- else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cp >= fX))
1225+ else throw(makeString(["amount asset amount to receive is less than ", toString(gd)], "")), if ((cq >= fY))
12231226 then true
1224- else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
1225- if ((gd == gd))
1227+ else throw(makeString(["price asset amount to receive is less than ", toString(fY)], ""))]
1228+ if ((ge == ge))
12261229 then {
1227- let fU = invoke(aJ, "burn", [fO], [AttachedPayment(aZ, fO)])
1228- if ((fU == fU))
1230+ let fV = invoke(aL, "burn", [fP], [AttachedPayment(bb, fP)])
1231+ if ((fV == fV))
12291232 then {
1230- let ge = dk(-(co), -(cp), 0)
1231- let fk = ge._1
1232- let db = ge._2
1233- let fm = do(dj, db)
1234- if ((fm == fm))
1235- then (cq ++ fk)
1233+ let gf = dl(-(cp), -(cq), 0)
1234+ let fl = gf._1
1235+ let dc = gf._2
1236+ let fn = dp(dk, dc)
1237+ if ((fn == fn))
1238+ then (cr ++ fl)
12361239 else throw("Strict value is not equal to itself.")
12371240 }
12381241 else throw("Strict value is not equal to itself.")
12461249
12471250
12481251
1249-@Callable(dB)
1250-func activate (gf,gg) = if ((toString(dB.caller) != toString(aJ)))
1252+@Callable(dC)
1253+func activate (gg,gh) = if ((toString(dC.caller) != toString(aL)))
12511254 then throw("permissions denied")
1252- else $Tuple2([StringEntry(aa(), gf), StringEntry(ab(), gg)], "success")
1255+ else $Tuple2([StringEntry(ac(), gg), StringEntry(ad(), gh)], "success")
12531256
12541257
12551258
1256-@Callable(dB)
1259+@Callable(dC)
12571260 func refreshKLp () = {
1258- let gh = valueOrElse(getInteger(ag), 0)
1259- let gi = if (((height - gh) >= aj))
1261+ let gi = valueOrElse(getInteger(ai), 0)
1262+ let gj = if (((height - gi) >= al))
12601263 then unit
1261- else aG(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
1262- if ((gi == gi))
1264+ else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1265+ if ((gj == gj))
12631266 then {
1264- let dv = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, af), "0")), aI("invalid kLp"))
1265- let gj = dk(0, 0, 0)
1266- let gk = gj._1
1267- let db = gj._2
1268- let dn = if ((dv != db))
1269- then gk
1270- else aG("nothing to refresh")
1271- $Tuple2(dn, toString(db))
1267+ let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1268+ let gk = dl(0, 0, 0)
1269+ let gl = gk._1
1270+ let dc = gk._2
1271+ let do = if ((dw != dc))
1272+ then gl
1273+ else aI("nothing to refresh")
1274+ $Tuple2(do, toString(dc))
12721275 }
12731276 else throw("Strict value is not equal to itself.")
12741277 }
12751278
12761279
12771280
1278-@Callable(dB)
1279-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aN())
1281+@Callable(dC)
1282+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aP())
12801283
12811284
12821285
1283-@Callable(dB)
1284-func getAccBalanceWrapperREADONLY (bx) = $Tuple2(nil, bw(bx))
1286+@Callable(dC)
1287+func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
12851288
12861289
12871290
1288-@Callable(dB)
1289-func calcPricesWrapperREADONLY (bG,bH,bL) = {
1290- let bU = bK(bG, bH, bL)
1291- $Tuple2(nil, [toString(bU[0]), toString(bU[1]), toString(bU[2])])
1291+@Callable(dC)
1292+func calcPricesWrapperREADONLY (bH,bI,bM) = {
1293+ let bV = bL(bH, bI, bM)
1294+ $Tuple2(nil, [toString(bV[0]), toString(bV[1]), toString(bV[2])])
12921295 }
12931296
12941297
12951298
1296-@Callable(dB)
1299+@Callable(dC)
12971300 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
12981301
12991302
13001303
1301-@Callable(dB)
1304+@Callable(dC)
13021305 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
13031306
13041307
13051308
1306-@Callable(dB)
1307-func calcPriceBigIntWrapperREADONLY (bz,bA) = $Tuple2(nil, toString(by(parseBigIntValue(bz), parseBigIntValue(bA))))
1309+@Callable(dC)
1310+func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
13081311
13091312
13101313
1311-@Callable(dB)
1312-func estimatePutOperationWrapperREADONLY (bW,cs,ct,cu,cv,cw,X,cx,cy) = $Tuple2(nil, cr(bW, cs, ct, cu, cv, cw, X, cx, cy))
1314+@Callable(dC)
1315+func estimatePutOperationWrapperREADONLY (bX,ct,cu,cv,cw,cx,Z,cy,cz) = $Tuple2(nil, cs(bX, ct, cu, cv, cw, cx, Z, cy, cz))
13131316
13141317
13151318
1316-@Callable(dB)
1317-func estimateGetOperationWrapperREADONLY (bW,bX,bY,X) = {
1318- let cI = bV(bW, bX, bY, addressFromStringValue(X))
1319- $Tuple2(nil, $Tuple10(cI._1, cI._2, cI._3, cI._4, cI._5, cI._6, cI._7, toString(cI._8), cI._9, cI._10))
1319+@Callable(dC)
1320+func estimateGetOperationWrapperREADONLY (bX,bY,bZ,Z) = {
1321+ let cJ = bW(bX, bY, bZ, addressFromStringValue(Z))
1322+ $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
13201323 }
13211324
13221325
13231326
1324-@Callable(dB)
1327+@Callable(dC)
13251328 func statsREADONLY () = {
1326- let bM = aN()
1327- let bZ = fromBase58String(bM[q])
1328- let gl = bM[r]
1329- let gm = bM[s]
1330- let cB = bM[v]
1331- let cC = bM[w]
1332- let bN = parseIntValue(bM[t])
1333- let bO = parseIntValue(bM[u])
1334- let gn = valueOrErrorMessage(assetInfo(bZ), (("Asset " + toBase58String(bZ)) + " doesn't exist")).quantity
1335- let go = bw(gl)
1336- let gp = bw(gm)
1337- let gq = if ((gn == 0))
1329+ let bN = aP()
1330+ let ca = fromBase58String(bN[q])
1331+ let gm = bN[r]
1332+ let gn = bN[s]
1333+ let cC = bN[v]
1334+ let cD = bN[w]
1335+ let bO = parseIntValue(bN[t])
1336+ let bP = parseIntValue(bN[u])
1337+ let go = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1338+ let gp = by(gm)
1339+ let gq = by(gn)
1340+ let gr = if ((go == 0))
13381341 then [e, e, e]
1339- else bK(go, gp, gn)
1340- let cj = 0
1341- let gr = G(gq[1], b)
1342- let gs = G(gq[2], b)
1343- let gt = value(getInteger(aJ, au(toString(this))))
1344- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(go), toString(gp), toString(gn), toString(cj), toString(gr), toString(gs), toString(gt)], j))
1342+ else bL(gp, gq, go)
1343+ let ck = 0
1344+ let gs = G(gr[1], b)
1345+ let gt = G(gr[2], b)
1346+ let gu = value(getInteger(aL, aw(toString(this))))
1347+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gp), toString(gq), toString(go), toString(ck), toString(gs), toString(gt), toString(gu)], j))
13451348 }
13461349
13471350
13481351
1349-@Callable(dB)
1350-func evaluatePutByAmountAssetREADONLY (ct) = {
1351- let bM = aN()
1352- let bZ = fromBase58String(bM[q])
1353- let cz = bM[r]
1354- let ca = fromBase58String(cz)
1355- let cA = bM[s]
1352+@Callable(dC)
1353+func evaluatePutByAmountAssetREADONLY (cu) = {
1354+ let bN = aP()
1355+ let ca = fromBase58String(bN[q])
1356+ let cA = bN[r]
13561357 let cb = fromBase58String(cA)
1357- let bN = parseIntValue(bM[t])
1358- let bO = parseIntValue(bM[u])
1359- let cc = bM[p]
1360- let gn = valueOrErrorMessage(assetInfo(bZ), (("Asset " + toBase58String(bZ)) + " doesn't exist")).quantity
1361- let go = bw(cz)
1362- let gp = bw(cA)
1363- let bI = D(go, bN)
1358+ let cB = bN[s]
1359+ let cc = fromBase58String(cB)
1360+ let bO = parseIntValue(bN[t])
1361+ let bP = parseIntValue(bN[u])
1362+ let cd = bN[p]
1363+ let go = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1364+ let gp = by(cA)
1365+ let gq = by(cB)
13641366 let bJ = D(gp, bO)
1365- let ci = if ((gn == 0))
1367+ let bK = D(gq, bP)
1368+ let cj = if ((go == 0))
13661369 then e
1367- else by(bJ, bI)
1368- let cF = D(ct, bN)
1369- let cG = fraction(cF, ci, d)
1370- let cv = G(cG, bO)
1371- let dH = cr("", 500000, ct, ca, cv, cb, "", true, false)
1372- let cQ = dH._1
1373- let gu = dH._3
1374- let ce = dH._4
1375- let cg = dH._5
1376- let cd = dH._6
1377- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cQ), toString(G(ci, b)), toString(ce), toString(cg), toString(cd), cc, toString(ct), toString(cv)], j))
1370+ else bA(bK, bJ)
1371+ let cG = D(cu, bO)
1372+ let cH = fraction(cG, cj, d)
1373+ let cw = G(cH, bP)
1374+ let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
1375+ let cR = dI._1
1376+ let gv = dI._3
1377+ let cf = dI._4
1378+ let ch = dI._5
1379+ let ce = dI._6
1380+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
13781381 }
13791382
13801383
13811384
1382-@Callable(dB)
1383-func evaluatePutByPriceAssetREADONLY (cv) = {
1384- let bM = aN()
1385- let bZ = fromBase58String(bM[q])
1386- let cz = bM[r]
1387- let ca = fromBase58String(cz)
1388- let cA = bM[s]
1385+@Callable(dC)
1386+func evaluatePutByPriceAssetREADONLY (cw) = {
1387+ let bN = aP()
1388+ let ca = fromBase58String(bN[q])
1389+ let cA = bN[r]
13891390 let cb = fromBase58String(cA)
1390- let bN = parseIntValue(bM[t])
1391- let bO = parseIntValue(bM[u])
1392- let cc = bM[p]
1393- let gn = valueOrErrorMessage(assetInfo(bZ), (("Asset " + toBase58String(bZ)) + " doesn't exist")).quantity
1394- let gv = bw(cz)
1395- let gw = bw(cA)
1396- let gx = D(gv, bN)
1391+ let cB = bN[s]
1392+ let cc = fromBase58String(cB)
1393+ let bO = parseIntValue(bN[t])
1394+ let bP = parseIntValue(bN[u])
1395+ let cd = bN[p]
1396+ let go = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1397+ let gw = by(cA)
1398+ let gx = by(cB)
13971399 let gy = D(gw, bO)
1398- let ci = if ((gn == 0))
1400+ let gz = D(gx, bP)
1401+ let cj = if ((go == 0))
13991402 then e
1400- else by(gy, gx)
1401- let cG = D(cv, bO)
1402- let cF = fraction(cG, d, ci)
1403- let ct = G(cF, bN)
1404- let dH = cr("", 500000, ct, ca, cv, cb, "", true, false)
1405- let cQ = dH._1
1406- let gu = dH._3
1407- let ce = dH._4
1408- let cg = dH._5
1409- let cd = dH._6
1410- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cQ), toString(G(ci, b)), toString(ce), toString(cg), toString(cd), cc, toString(ct), toString(cv)], j))
1403+ else bA(gz, gy)
1404+ let cH = D(cw, bP)
1405+ let cG = fraction(cH, d, cj)
1406+ let cu = G(cG, bO)
1407+ let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
1408+ let cR = dI._1
1409+ let gv = dI._3
1410+ let cf = dI._4
1411+ let ch = dI._5
1412+ let ce = dI._6
1413+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
14111414 }
14121415
14131416
14141417
1415-@Callable(dB)
1416-func evaluateGetREADONLY (gz,gA) = {
1417- let cI = bV("", gz, gA, this)
1418- let co = cI._1
1419- let cp = cI._2
1420- let ce = cI._5
1421- let cg = cI._6
1422- let cd = cI._7
1423- let cj = cI._8
1424- let cc = parseIntValue(cI._9)
1425- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(co), toString(cp), toString(ce), toString(cg), toString(cd), toString(cj), toString(cc)], j))
1418+@Callable(dC)
1419+func evaluateGetREADONLY (gA,gB) = {
1420+ let cJ = bW("", gA, gB, this)
1421+ let cp = cJ._1
1422+ let cq = cJ._2
1423+ let cf = cJ._5
1424+ let ch = cJ._6
1425+ let ce = cJ._7
1426+ let ck = cJ._8
1427+ let cd = parseIntValue(cJ._9)
1428+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cp), toString(cq), toString(cf), toString(ch), toString(ce), toString(ck), toString(cd)], j))
14261429 }
14271430
14281431
1429-@Verifier(gB)
1430-func gC () = {
1431- let gD = {
1432- let dM = eO()
1433- if ($isInstanceOf(dM, "ByteVector"))
1432+@Verifier(gC)
1433+func gD () = {
1434+ let gE = {
1435+ let dN = eP()
1436+ if ($isInstanceOf(dN, "ByteVector"))
14341437 then {
1435- let eS = dM
1436- eS
1438+ let eT = dN
1439+ eT
14371440 }
1438- else if ($isInstanceOf(dM, "Unit"))
1439- then gB.senderPublicKey
1441+ else if ($isInstanceOf(dN, "Unit"))
1442+ then gC.senderPublicKey
14401443 else throw("Match error")
14411444 }
1442- let dM = gB
1443- if ($isInstanceOf(dM, "Order"))
1445+ let dN = gC
1446+ if ($isInstanceOf(dN, "Order"))
14441447 then {
1445- let dr = dM
1446- let gE = aM()
1447- let az = dq(dr)
1448- let aA = sigVerify(dr.bodyBytes, dr.proofs[0], dr.senderPublicKey)
1449- let aB = sigVerify(dr.bodyBytes, dr.proofs[1], gE)
1450- if (if (if (az)
1451- then aA
1448+ let ds = dN
1449+ let gF = aO()
1450+ let aB = dr(ds)
1451+ let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
1452+ let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gF)
1453+ if (if (if (aB)
1454+ then aC
14521455 else false)
1453- then aB
1456+ then aD
14541457 else false)
14551458 then true
1456- else ay(az, aA, aB)
1459+ else aA(aB, aC, aD)
14571460 }
1458- else if ($isInstanceOf(dM, "SetScriptTransaction"))
1461+ else if ($isInstanceOf(dN, "SetScriptTransaction"))
14591462 then {
1460- let eP = dM
1461- let gF = blake2b256(value(eP.script))
1462- let gG = fromBase64String(value(getString(aJ, aw())))
1463- let gH = scriptHash(this)
1464- if (if ((gG == gF))
1465- then (gH != gF)
1463+ let eQ = dN
1464+ let gG = blake2b256(value(eQ.script))
1465+ let gH = fromBase64String(value(getString(aL, ay())))
1466+ let gI = scriptHash(this)
1467+ if (if ((gH == gG))
1468+ then (gI != gG)
14661469 else false)
14671470 then true
1468- else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
1471+ else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
14691472 }
1470- else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
1473+ else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
14711474 }
14721475
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
68-func J (K,L,M) = fraction(K, L, M)
68+func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
6969
7070
71-func N (H) = if ((0 > H))
71+func L (M,N,O) = fraction(M, N, O)
72+
73+
74+func P (H) = if ((0 > H))
7275 then -(H)
7376 else H
7477
7578
76-func O (H) = if ((e > H))
79+func Q (H) = if ((e > H))
7780 then -(H)
7881 else H
7982
8083
81-func P () = "%s__factoryContract"
84+func R () = "%s__factoryContract"
8285
8386
84-func Q () = "%s__managerPublicKey"
87+func S () = "%s__managerPublicKey"
8588
8689
87-func R () = "%s__pendingManagerPublicKey"
90+func T () = "%s__pendingManagerPublicKey"
8891
8992
90-func S () = "%s%s__price__last"
93+func U () = "%s%s__price__last"
9194
9295
93-func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
96+func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
9497
9598
96-func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
99+func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
97100
98101
99-func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
102+func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
100103
101104
102-func aa () = "%s__amountAsset"
105+func ac () = "%s__amountAsset"
103106
104107
105-func ab () = "%s__priceAsset"
108+func ad () = "%s__priceAsset"
106109
107110
108-let ac = "%s__fee"
111+let ae = "%s__fee"
109112
110-let ad = fraction(10, b, 10000)
113+let af = fraction(10, b, 10000)
111114
112-let ae = valueOrElse(getInteger(this, ac), ad)
115+let ag = valueOrElse(getInteger(this, ae), af)
113116
114-let af = makeString(["%s", "kLp"], j)
117+let ah = makeString(["%s", "kLp"], j)
115118
116-let ag = makeString(["%s", "kLpRefreshedHeight"], j)
119+let ai = makeString(["%s", "kLpRefreshedHeight"], j)
117120
118-let ah = makeString(["%s", "refreshKLpDelay"], j)
121+let aj = makeString(["%s", "refreshKLpDelay"], j)
119122
120-let ai = 30
123+let ak = 30
121124
122-let aj = valueOrElse(getInteger(this, ah), ai)
125+let al = valueOrElse(getInteger(this, aj), ak)
123126
124-func ak () = "%s__factoryConfig"
127+func am () = "%s__factoryConfig"
125128
126129
127-func al () = "%s%s__matcher__publicKey"
130+func an () = "%s%s__matcher__publicKey"
128131
129132
130-func am (an) = (("%s%s%s__" + an) + "__mappings__poolContract2LpAsset")
133+func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
131134
132135
133-func ao (ap,aq) = (((("%d%d%s__" + ap) + "__") + aq) + "__config")
136+func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
134137
135138
136-func ar (as) = ("%s%s%s__mappings__baseAsset2internalId__" + as)
139+func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
137140
138141
139-func at () = "%s__shutdown"
142+func av () = "%s__shutdown"
140143
141144
142-func au (av) = ("%s%s__poolWeight__" + av)
145+func aw (ax) = ("%s%s__poolWeight__" + ax)
143146
144147
145-func aw () = "%s__allowedLpScriptHash"
148+func ay () = "%s__allowedLpScriptHash"
146149
147150
148-let ax = "%s__feeCollectorAddress"
151+let az = "%s__feeCollectorAddress"
149152
150-func ay (az,aA,aB) = throw(((((("order validation failed: orderValid=" + toString(az)) + " senderValid=") + toString(aA)) + " matcherValid=") + toString(aB)))
153+func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
151154
152155
153-func aC (aD,aE) = valueOrErrorMessage(getString(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
156+func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
154157
155158
156-func aF (aD,aE) = valueOrErrorMessage(getInteger(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
159+func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
157160
158161
159-func aG (aH) = throw(makeString(["lp.ride:", aH], " "))
162+func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
160163
161164
162-func aI (aH) = makeString(["lp.ride:", aH], " ")
165+func aK (aJ) = makeString(["lp.ride:", aJ], " ")
163166
164167
165-let aJ = addressFromStringValue(aC(this, P()))
168+let aL = addressFromStringValue(aE(this, R()))
166169
167-let aK = addressFromStringValue(aC(aJ, ax))
170+let aM = addressFromStringValue(aE(aL, az))
168171
169-func aL () = valueOrElse(getBoolean(aJ, at()), false)
172+func aN () = valueOrElse(getBoolean(aL, av()), false)
170173
171174
172-func aM () = fromBase58String(aC(aJ, al()))
175+func aO () = fromBase58String(aE(aL, an()))
173176
174177
175-func aN () = {
176- let aO = aC(this, aa())
177- let aP = aC(this, ab())
178- let aq = aF(aJ, ar(aP))
179- let ap = aF(aJ, ar(aO))
180- split(aC(aJ, ao(toString(ap), toString(aq))), j)
178+func aP () = {
179+ let aQ = aE(this, ac())
180+ let aR = aE(this, ad())
181+ let as = aH(aL, at(aR))
182+ let ar = aH(aL, at(aQ))
183+ split(aE(aL, aq(toString(ar), toString(as))), j)
181184 }
182185
183186
184-func aQ (aR) = if ((aR == i))
187+func aS (aT) = if ((aT == i))
185188 then unit
186- else fromBase58String(aR)
189+ else fromBase58String(aT)
187190
188191
189-func aS (aR) = if ((aR == unit))
192+func aU (aT) = if ((aT == unit))
190193 then i
191- else toBase58String(value(aR))
194+ else toBase58String(value(aT))
192195
193196
194-func aT (aU) = $Tuple7(addressFromStringValue(aU[o]), parseIntValue(aU[p]), fromBase58String(aU[q]), aQ(aU[r]), aQ(aU[s]), parseIntValue(aU[t]), parseIntValue(aU[u]))
197+func aV (aW) = $Tuple7(addressFromStringValue(aW[o]), parseIntValue(aW[p]), fromBase58String(aW[q]), aS(aW[r]), aS(aW[s]), parseIntValue(aW[t]), parseIntValue(aW[u]))
195198
196199
197-let aV = aT(aN())
200+let aX = aV(aP())
198201
199-let aW = aV
202+let aY = aX
200203
201-let aX = aW._1
204+let aZ = aY._1
202205
203-let aY = aW._2
206+let ba = aY._2
204207
205-let aZ = aW._3
208+let bb = aY._3
206209
207-let ba = aW._4
210+let bc = aY._4
208211
209-let bb = aW._5
212+let bd = aY._5
210213
211-let bc = aW._6
214+let be = aY._6
212215
213-let bd = aW._7
216+let bf = aY._7
214217
215-func be () = split(aC(aJ, ak()), j)
218+func bg () = split(aE(aL, am()), j)
216219
217220
218-let bf = valueOrErrorMessage(addressFromString(be()[B]), "incorrect staking address")
221+let bh = valueOrErrorMessage(addressFromString(bg()[B]), "incorrect staking address")
219222
220-let bg = valueOrErrorMessage(addressFromString(be()[C]), "incorrect staking address")
223+let bi = valueOrErrorMessage(addressFromString(bg()[C]), "incorrect staking address")
221224
222-func bh (bi,bj,bk,bl,bm,bn,bo,bp,bq,br) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bi), toString(bj), toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br)], j)
225+func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], j)
223226
224227
225-func bs (bt,bu,bv,bl,bo,bp) = makeString(["%d%d%d%d%d%d", toString(bt), toString(bu), toString(bv), toString(bl), toString(bo), toString(bp)], j)
228+func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], j)
226229
227230
228-func bw (bx) = if ((bx == "WAVES"))
231+func by (bz) = if ((bz == "WAVES"))
229232 then wavesBalance(this).available
230- else assetBalance(this, fromBase58String(bx))
233+ else assetBalance(this, fromBase58String(bz))
231234
232235
233-func by (bz,bA) = fraction(bz, d, bA)
236+func bA (bB,bC) = fraction(bB, d, bC)
234237
235238
236-func bB (bz,bA,bC) = fraction(bz, d, bA, bC)
239+func bD (bB,bC,K) = fraction(bB, d, bC, K)
237240
238241
239-func bD (bE,bF,bG,bH) = {
240- let bI = D(bG, bE)
242+func bE (bF,bG,bH,bI) = {
241243 let bJ = D(bH, bF)
242- by(bJ, bI)
244+ let bK = D(bI, bG)
245+ bA(bK, bJ)
243246 }
244247
245248
246-func bK (bG,bH,bL) = {
247- let bM = aN()
248- let bN = parseIntValue(bM[t])
249- let bO = parseIntValue(bM[u])
250- let bP = bD(bN, bO, bG, bH)
251- let bA = D(bG, bN)
252- let bz = D(bH, bO)
253- let bQ = D(bL, b)
254- let bR = by(bA, bQ)
255- let bS = by(bz, bQ)
256-[bP, bR, bS]
249+func bL (bH,bI,bM) = {
250+ let bN = aP()
251+ let bO = parseIntValue(bN[t])
252+ let bP = parseIntValue(bN[u])
253+ let bQ = bE(bO, bP, bH, bI)
254+ let bC = D(bH, bO)
255+ let bB = D(bI, bP)
256+ let bR = D(bM, b)
257+ let bS = bA(bC, bR)
258+ let bT = bA(bB, bR)
259+[bQ, bS, bT]
257260 }
258261
259262
260-func bT (bG,bH,bL) = {
261- let bU = bK(bG, bH, bL)
262-[G(bU[0], b), G(bU[1], b), G(bU[2], b)]
263+func bU (bH,bI,bM) = {
264+ let bV = bL(bH, bI, bM)
265+[G(bV[0], b), G(bV[1], b), G(bV[2], b)]
263266 }
264267
265268
266-func bV (bW,bX,bY,X) = {
267- let bM = aN()
268- let bZ = bM[q]
269- let ca = bM[r]
270- let cb = bM[s]
271- let bE = parseIntValue(bM[t])
272- let bF = parseIntValue(bM[u])
273- let cc = bM[p]
274- let cd = valueOrErrorMessage(assetInfo(fromBase58String(bZ)), (("Asset " + bZ) + " doesn't exist")).quantity
275- if ((bZ != bX))
269+func bW (bX,bY,bZ,Z) = {
270+ let bN = aP()
271+ let ca = bN[q]
272+ let cb = bN[r]
273+ let cc = bN[s]
274+ let bF = parseIntValue(bN[t])
275+ let bG = parseIntValue(bN[u])
276+ let cd = bN[p]
277+ let ce = valueOrErrorMessage(assetInfo(fromBase58String(ca)), (("Asset " + ca) + " doesn't exist")).quantity
278+ if ((ca != bY))
276279 then throw("Invalid asset passed.")
277280 else {
278- let ce = bw(ca)
279- let cf = D(ce, bE)
280- let cg = bw(cb)
281- let ch = D(cg, bF)
282- let ci = by(ch, cf)
283- let cj = G(ci, b)
284- let ck = D(bY, b)
285- let cl = D(cd, b)
286- let cm = fraction(cf, ck, cl)
287- let cn = fraction(ch, ck, cl)
288- let co = G(cm, bE)
281+ let cf = by(cb)
282+ let cg = D(cf, bF)
283+ let ch = by(cc)
284+ let ci = D(ch, bG)
285+ let cj = bA(ci, cg)
286+ let ck = G(cj, b)
287+ let cl = D(bZ, b)
288+ let cm = D(ce, b)
289+ let cn = fraction(cg, cl, cm)
290+ let co = fraction(ci, cl, cm)
289291 let cp = G(cn, bF)
290- let cq = if ((bW == ""))
292+ let cq = G(co, bG)
293+ let cr = if ((bX == ""))
291294 then nil
292- else [ScriptTransfer(X, co, if ((ca == "WAVES"))
295+ else [ScriptTransfer(Z, cp, if ((cb == "WAVES"))
293296 then unit
294- else fromBase58String(ca)), ScriptTransfer(X, cp, if ((cb == "WAVES"))
297+ else fromBase58String(cb)), ScriptTransfer(Z, cq, if ((cc == "WAVES"))
295298 then unit
296- else fromBase58String(cb)), StringEntry(Z(toString(X), bW), bs(co, cp, bY, cj, height, lastBlock.timestamp)), IntegerEntry(S(), cj), IntegerEntry(T(height, lastBlock.timestamp), cj)]
297- $Tuple10(co, cp, ca, cb, ce, cg, cd, ci, cc, cq)
299+ else fromBase58String(cc)), StringEntry(ab(toString(Z), bX), bu(cp, cq, bZ, ck, height, lastBlock.timestamp)), IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck)]
300+ $Tuple10(cp, cq, cb, cc, cf, ch, ce, cj, cd, cr)
298301 }
299302 }
300303
301304
302-func cr (bW,cs,ct,cu,cv,cw,X,cx,cy) = {
303- let bM = aN()
304- let bZ = fromBase58String(bM[q])
305- let cz = bM[r]
306- let cA = bM[s]
307- let cB = bM[v]
308- let cC = bM[w]
309- let bN = parseIntValue(bM[t])
310- let bO = parseIntValue(bM[u])
311- let cc = bM[p]
312- let cd = valueOrErrorMessage(assetInfo(bZ), (("Asset " + toBase58String(bZ)) + " doesn't exist")).quantity
313- let cD = toBase58String(valueOrElse(cu, fromBase58String("WAVES")))
314- let cE = toBase58String(valueOrElse(cw, fromBase58String("WAVES")))
315- if (if ((cz != cD))
305+func cs (bX,ct,cu,cv,cw,cx,Z,cy,cz) = {
306+ let bN = aP()
307+ let ca = fromBase58String(bN[q])
308+ let cA = bN[r]
309+ let cB = bN[s]
310+ let cC = bN[v]
311+ let cD = bN[w]
312+ let bO = parseIntValue(bN[t])
313+ let bP = parseIntValue(bN[u])
314+ let cd = bN[p]
315+ let ce = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
316+ let cE = toBase58String(valueOrElse(cv, fromBase58String("WAVES")))
317+ let cF = toBase58String(valueOrElse(cx, fromBase58String("WAVES")))
318+ if (if ((cA != cE))
316319 then true
317- else (cA != cE))
320+ else (cB != cF))
318321 then throw("Invalid amt or price asset passed.")
319322 else {
320- let ce = if (cx)
321- then bw(cz)
322- else (bw(cz) - ct)
323- let cg = if (cx)
324- then bw(cA)
325- else (bw(cA) - cv)
326- let cF = D(ct, bN)
327- let cG = D(cv, bO)
328- let cH = by(cG, cF)
329- let cf = D(ce, bN)
330- let ch = D(cg, bO)
331- let cI = if ((cd == 0))
323+ let cf = if (cy)
324+ then by(cA)
325+ else (by(cA) - cu)
326+ let ch = if (cy)
327+ then by(cB)
328+ else (by(cB) - cw)
329+ let cG = D(cu, bO)
330+ let cH = D(cw, bP)
331+ let cI = bA(cH, cG)
332+ let cg = D(cf, bO)
333+ let ci = D(ch, bP)
334+ let cJ = if ((ce == 0))
332335 then {
333- let ci = e
334- let cJ = e
335- let bQ = pow((cF * cG), 0, toBigInt(5), 1, 0, DOWN)
336- $Tuple5(G(bQ, b), G(cF, bN), G(cG, bO), by((ch + cG), (cf + cF)), cJ)
336+ let cj = e
337+ let cK = e
338+ let bR = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
339+ $Tuple5(G(bR, b), G(cG, bO), G(cH, bP), bA((ci + cH), (cg + cG)), cK)
337340 }
338341 else {
339- let ci = by(ch, cf)
340- let cJ = fraction(O((ci - cH)), d, ci)
341- let cK = D(cs, b)
342- if (if ((ci != e))
343- then (cJ > cK)
342+ let cj = bA(ci, cg)
343+ let cK = fraction(Q((cj - cI)), d, cj)
344+ let cL = D(ct, b)
345+ if (if ((cj != e))
346+ then (cK > cL)
344347 else false)
345- then throw(((("Price slippage " + toString(cJ)) + " exceeded the passed limit of ") + toString(cK)))
348+ then throw(((("Price slippage " + toString(cK)) + " exceeded the passed limit of ") + toString(cL)))
346349 else {
347- let cl = D(cd, b)
348- let cL = fraction(cF, bB(ch, cf, CEILING), d, CEILING)
349- let cM = fraction(cG, d, bB(ch, cf, FLOOR), CEILING)
350- let cN = if ((cL > cG))
351- then $Tuple2(cM, cG)
352- else $Tuple2(cF, cL)
353- let cO = cN._1
354- let cP = cN._2
355- let bQ = fraction(cl, cP, ch, FLOOR)
356- $Tuple5(G(bQ, b), G(cO, bN), G(cP, bO), ci, cJ)
350+ let cm = D(ce, b)
351+ let cM = fraction(cG, bD(ci, cg, CEILING), d, CEILING)
352+ let cN = fraction(cH, d, bD(ci, cg, FLOOR), CEILING)
353+ let cO = if ((cM > cH))
354+ then $Tuple2(cN, cH)
355+ else $Tuple2(cG, cM)
356+ let cP = cO._1
357+ let cQ = cO._2
358+ let bR = fraction(cm, cQ, ci, FLOOR)
359+ $Tuple5(J(bR, b, FLOOR), J(cP, bO, CEILING), J(cQ, bP, CEILING), cj, cK)
357360 }
358361 }
359- let cQ = cI._1
360- let cR = cI._2
361- let cS = cI._3
362- let cj = G(cI._4, b)
363- let cT = G(cI._5, b)
364- if ((0 >= cQ))
362+ let cR = cJ._1
363+ let cS = cJ._2
364+ let cT = cJ._3
365+ let ck = G(cJ._4, b)
366+ let cU = G(cJ._5, b)
367+ if ((0 >= cR))
365368 then throw("Invalid calculations. LP calculated is less than zero.")
366369 else {
367- let cU = if (!(cy))
370+ let cV = if (!(cz))
368371 then 0
369- else cQ
370- let cV = (ct - cR)
371- let cW = (cv - cS)
372- let cX = [IntegerEntry(S(), cj), IntegerEntry(T(height, lastBlock.timestamp), cj), StringEntry(W(X, bW), bh(cR, cS, cU, cj, cs, cT, height, lastBlock.timestamp, cV, cW))]
373- $Tuple13(cQ, cU, cj, ce, cg, cd, bZ, cc, cX, cV, cW, cu, cw)
372+ else cR
373+ let cW = (cu - cS)
374+ let cX = (cw - cT)
375+ let cY = [IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck), StringEntry(Y(Z, bX), bj(cS, cT, cV, ck, ct, cU, height, lastBlock.timestamp, cW, cX))]
376+ $Tuple13(cR, cV, ck, cf, ch, ce, ca, cd, cY, cW, cX, cv, cx)
374377 }
375378 }
376379 }
377380
378381
379-func cY (cZ,da,cd) = {
380- let db = fraction(pow((cZ * da), 0, toBigInt(5), 1, 18, DOWN), g, cd)
381- if ((cd == f))
382+func cZ (da,db,ce) = {
383+ let dc = fraction(pow((da * db), 0, toBigInt(5), 1, 18, DOWN), g, ce)
384+ if ((ce == f))
382385 then f
383- else db
386+ else dc
384387 }
385388
386389
387-func dc (dd,de,df) = {
388- let dg = (toBigInt(bw(aS(ba))) - dd)
389- let dh = (toBigInt(bw(aS(bb))) - de)
390- let di = (toBigInt(value(assetInfo(aZ)).quantity) - df)
391- let dj = cY(dg, dh, di)
392- dj
390+func dd (de,df,dg) = {
391+ let dh = (toBigInt(by(aU(bc))) - de)
392+ let di = (toBigInt(by(aU(bd))) - df)
393+ let dj = (toBigInt(value(assetInfo(bb)).quantity) - dg)
394+ let dk = cZ(dh, di, dj)
395+ dk
393396 }
394397
395398
396-func dk (dl,dm,df) = {
397- let dg = (bw(aS(ba)) + dl)
398- let dh = (bw(aS(bb)) + dm)
399- let di = (value(assetInfo(aZ)).quantity + df)
400- let db = cY(toBigInt(dg), toBigInt(dh), toBigInt(di))
401- let dn = [IntegerEntry(ag, height), StringEntry(af, toString(db))]
402- $Tuple2(dn, db)
399+func dl (dm,dn,dg) = {
400+ let dh = (by(aU(bc)) + dm)
401+ let di = (by(aU(bd)) + dn)
402+ let dj = (value(assetInfo(bb)).quantity + dg)
403+ let dc = cZ(toBigInt(dh), toBigInt(di), toBigInt(dj))
404+ let do = [IntegerEntry(ai, height), StringEntry(ah, toString(dc))]
405+ $Tuple2(do, dc)
403406 }
404407
405408
406-func do (dp,db) = if ((db >= dp))
409+func dp (dq,dc) = if ((dc >= dq))
407410 then true
408- else aG(makeString(["updated KLp lower than current KLp", toString(dp), toString(db)], " "))
411+ else aI(makeString(["updated KLp lower than current KLp", toString(dq), toString(dc)], " "))
409412
410413
411-func dq (dr) = {
412- let ds = dr.amount
413- let dt = fraction(dr.amount, dr.price, b, FLOOR)
414- let du = if ((dr.orderType == Buy))
415- then $Tuple2(ds, -(dt))
416- else $Tuple2(-(ds), dt)
417- let dl = du._1
418- let dm = du._2
419- if (if (if (aL())
414+func dr (ds) = {
415+ let dt = ds.amount
416+ let du = fraction(ds.amount, ds.price, b, FLOOR)
417+ let dv = if ((ds.orderType == Buy))
418+ then $Tuple2(dt, -(du))
419+ else $Tuple2(-(dt), du)
420+ let dm = dv._1
421+ let dn = dv._2
422+ if (if (if (aN())
420423 then true
421- else (aY == m))
424+ else (ba == m))
422425 then true
423- else (aY == n))
426+ else (ba == n))
424427 then throw("Exchange operations disabled")
425- else if (if ((dr.assetPair.amountAsset != ba))
428+ else if (if ((ds.assetPair.amountAsset != bc))
426429 then true
427- else (dr.assetPair.priceAsset != bb))
430+ else (ds.assetPair.priceAsset != bd))
428431 then throw("Wrong order assets.")
429432 else {
430- let dv = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, af), aI("kLp is required"))), aI("invalid kLp"))
431- let dw = dk(dl, dm, 0)
432- let dx = dw._1
433- let dy = dw._2
434- let dz = (dy >= dv)
435- dz
433+ let dw = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
434+ let dx = dl(dm, dn, 0)
435+ let dy = dx._1
436+ let dz = dx._2
437+ let dA = (dz >= dw)
438+ dA
436439 }
437440 }
438441
439442
440-func dA (dB) = if ((size(dB.payments) != 1))
443+func dB (dC) = if ((size(dC.payments) != 1))
441444 then throw("exactly 1 payment is expected")
442445 else {
443- let dC = value(dB.payments[0])
444- let bX = value(dC.assetId)
445- let dD = dC.amount
446- let cI = bV(toBase58String(dB.transactionId), toBase58String(bX), dD, dB.caller)
447- let co = cI._1
448- let cp = cI._2
449- let cc = parseIntValue(cI._9)
450- let cq = cI._10
451- if (if (aL())
446+ let dD = value(dC.payments[0])
447+ let bY = value(dD.assetId)
448+ let dE = dD.amount
449+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bY), dE, dC.caller)
450+ let cp = cJ._1
451+ let cq = cJ._2
452+ let cd = parseIntValue(cJ._9)
453+ let cr = cJ._10
454+ if (if (aN())
452455 then true
453- else (cc == n))
454- then throw(("Get operation is blocked by admin. Status = " + toString(cc)))
455- else $Tuple5(co, cp, dD, bX, cq)
456+ else (cd == n))
457+ then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
458+ else $Tuple5(cp, cq, dE, bY, cr)
456459 }
457460
458461
459-func dE (dB,cs,cy) = if ((size(dB.payments) != 2))
462+func dF (dC,ct,cz) = if ((size(dC.payments) != 2))
460463 then throw("exactly 2 payments are expected")
461464 else {
462- let dF = value(dB.payments[0])
463- let dG = value(dB.payments[1])
464- let dH = cr(toBase58String(dB.transactionId), cs, dF.amount, dF.assetId, dG.amount, dG.assetId, toString(dB.caller), false, cy)
465- let cc = parseIntValue(dH._8)
466- if (if (if (aL())
465+ let dG = value(dC.payments[0])
466+ let dH = value(dC.payments[1])
467+ let dI = cs(toBase58String(dC.transactionId), ct, dG.amount, dG.assetId, dH.amount, dH.assetId, toString(dC.caller), false, cz)
468+ let cd = parseIntValue(dI._8)
469+ if (if (if (aN())
467470 then true
468- else (cc == l))
471+ else (cd == l))
469472 then true
470- else (cc == n))
471- then throw(("Put operation is blocked by admin. Status = " + toString(cc)))
472- else dH
473+ else (cd == n))
474+ then throw(("Put operation is blocked by admin. Status = " + toString(cd)))
475+ else dI
473476 }
474477
475478
476-func dI (dJ) = {
477- let dK = invoke(aJ, "emit", [dJ], nil)
478- if ((dK == dK))
479+func dJ (dK) = {
480+ let dL = invoke(aL, "emit", [dK], nil)
481+ if ((dL == dL))
479482 then {
480- let dL = {
481- let dM = dK
482- if ($isInstanceOf(dM, "Address"))
483+ let dM = {
484+ let dN = dL
485+ if ($isInstanceOf(dN, "Address"))
483486 then {
484- let dN = dM
485- invoke(dN, "emit", [dJ], nil)
487+ let dO = dN
488+ invoke(dO, "emit", [dK], nil)
486489 }
487490 else unit
488491 }
489- if ((dL == dL))
490- then dJ
492+ if ((dM == dM))
493+ then dK
491494 else throw("Strict value is not equal to itself.")
492495 }
493496 else throw("Strict value is not equal to itself.")
494497 }
495498
496499
497-func dO (dJ) = {
498- let dP = fraction(dJ, ae, b)
499- $Tuple2((dJ - dP), dP)
500+func dP (dK) = {
501+ let dQ = fraction(dK, ag, b)
502+ $Tuple2((dK - dQ), dQ)
500503 }
501504
502505
503-func dQ (dR,dS,X,Y) = {
504- let dT = (Y == unit)
505- let dU = bw(aS(ba))
506- let dV = bw(aS(bb))
507- let dW = if ((dS == ba))
506+func dR (dS,dT,Z,aa) = {
507+ let dU = (aa == unit)
508+ let dV = by(aU(bc))
509+ let dW = by(aU(bd))
510+ let dX = if ((dT == bc))
508511 then true
509- else if ((dS == bb))
512+ else if ((dT == bd))
510513 then false
511- else aG("invalid asset")
512- let dX = if (dT)
513- then $Tuple2(dU, dV)
514- else if (dW)
515- then $Tuple2((dU - dR), dV)
516- else $Tuple2(dU, (dV - dR))
517- let dY = dX._1
518- let dZ = dX._2
519- let ea = if (dW)
520- then $Tuple2(dR, 0)
521- else $Tuple2(0, dR)
522- let eb = ea._1
523- let ec = ea._2
524- let ds = dO(eb)._1
525- let dt = dO(ec)._1
526- let ed = dO(dR)
527- let ee = ed._1
528- let dP = ed._2
529- let ef = (dY + ds)
514+ else aI("invalid asset")
515+ let dY = if (dU)
516+ then $Tuple2(dV, dW)
517+ else if (dX)
518+ then $Tuple2((dV - dS), dW)
519+ else $Tuple2(dV, (dW - dS))
520+ let dZ = dY._1
521+ let ea = dY._2
522+ let eb = if (dX)
523+ then $Tuple2(dS, 0)
524+ else $Tuple2(0, dS)
525+ let ec = eb._1
526+ let ed = eb._2
527+ let dt = dP(ec)._1
528+ let du = dP(ed)._1
529+ let ee = dP(dS)
530+ let ef = ee._1
531+ let dQ = ee._2
530532 let eg = (dZ + dt)
531- let eh = by(D(eg, bd), D(ef, bc))
532- let ei = G(eh, b)
533- let ej = if (dW)
534- then dY
535- else dZ
536- let ek = toBigInt(ej)
537- let el = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
538- let em = if ((el > f))
533+ let eh = (ea + du)
534+ let ei = bA(D(eh, bf), D(eg, be))
535+ let ej = G(ei, b)
536+ let ek = if (dX)
537+ then dZ
538+ else ea
539+ let el = toBigInt(ek)
540+ let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
541+ let en = if ((em > f))
539542 then true
540- else aG("initial deposit requires all coins")
541- if ((em == em))
543+ else aI("initial deposit requires all coins")
544+ if ((en == en))
542545 then {
543- let en = toBigInt(ee)
544- let eo = max([0, toInt(((el * (sqrtBigInt((d + ((en * d) / ek)), 18, 18, DOWN) - d)) / d))])
545- let cX = if (dT)
546+ let eo = toBigInt(ef)
547+ let ep = max([0, toInt(((em * (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d)) / d))])
548+ let cY = if (dU)
546549 then nil
547- else [IntegerEntry(S(), ei), IntegerEntry(T(height, lastBlock.timestamp), ei), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bh(eb, ec, eo, ei, 0, 0, height, lastBlock.timestamp, 0, 0))]
548- let ep = by(D(dZ, bd), D(dY, bc))
549- let eq = G(ep, b)
550- let er = {
551- let es = if (dW)
552- then $Tuple2(eb, dY)
553- else $Tuple2(ec, dZ)
554- let dJ = es._1
555- let et = es._2
556- let eu = toInt(fraction(el, toBigInt((dJ / 2)), toBigInt(et)))
557- fraction((eo - eu), b, eu)
550+ else [IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bj(ec, ed, ep, ej, 0, 0, height, lastBlock.timestamp, 0, 0))]
551+ let eq = bA(D(ea, bf), D(dZ, be))
552+ let er = G(eq, b)
553+ let es = {
554+ let et = if (dX)
555+ then $Tuple2(ec, dZ)
556+ else $Tuple2(ed, ea)
557+ let dK = et._1
558+ let eu = et._2
559+ let ev = toInt(fraction(em, toBigInt((dK / 2)), toBigInt(eu)))
560+ fraction((ep - ev), b, ev)
558561 }
559- $Tuple5(eo, cX, dP, er, dW)
562+ $Tuple5(ep, cY, dQ, es, dX)
560563 }
561564 else throw("Strict value is not equal to itself.")
562565 }
563566
564567
565-func ev (ew,ee,dS,X,Y) = {
566- let dT = (Y == unit)
567- let ex = [if ((dS == aZ))
568+func ew (ex,ef,dT,Z,aa) = {
569+ let dU = (aa == unit)
570+ let ey = [if ((dT == bb))
568571 then true
569- else aG("invalid lp asset")]
570- if ((ex == ex))
572+ else aI("invalid lp asset")]
573+ if ((ey == ey))
571574 then {
572- let ey = if ((ew == ba))
575+ let ez = if ((ex == bc))
573576 then true
574- else if ((ew == bb))
577+ else if ((ex == bd))
575578 then false
576- else aG("invalid asset")
577- let ez = if (ey)
578- then toBigInt(bw(aS(ba)))
579- else toBigInt(bw(aS(bb)))
580- let eA = bw(aS(ba))
581- let eB = bw(aS(bb))
582- let eC = if (ey)
583- then eA
584- else eB
585- let eD = toBigInt(eC)
586- let el = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
587- let eE = toBigInt(ee)
588- let eF = max([0, toInt(((ez * (d - pow((d - ((eE * d) / el)), 18, h, 0, 18, DOWN))) / d))])
589- let eG = dO(eF)
590- let eH = eG._1
591- let dP = eG._2
592- let eI = if (ey)
593- then $Tuple4(eH, 0, (eA - eF), eB)
594- else $Tuple4(0, eH, eA, (eB - eF))
595- let eJ = eI._1
596- let eK = eI._2
597- let eL = eI._3
598- let eM = eI._4
599- let eh = by(D(eM, bd), D(eL, bc))
600- let ei = G(eh, b)
601- let cX = if (dT)
579+ else aI("invalid asset")
580+ let eA = if (ez)
581+ then toBigInt(by(aU(bc)))
582+ else toBigInt(by(aU(bd)))
583+ let eB = by(aU(bc))
584+ let eC = by(aU(bd))
585+ let eD = if (ez)
586+ then eB
587+ else eC
588+ let eE = toBigInt(eD)
589+ let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
590+ let eF = toBigInt(ef)
591+ let eG = max([0, toInt(((eA * (d - pow((d - ((eF * d) / em)), 18, h, 0, 18, DOWN))) / d))])
592+ let eH = dP(eG)
593+ let eI = eH._1
594+ let dQ = eH._2
595+ let eJ = if (ez)
596+ then $Tuple4(eI, 0, (eB - eG), eC)
597+ else $Tuple4(0, eI, eB, (eC - eG))
598+ let eK = eJ._1
599+ let eL = eJ._2
600+ let eM = eJ._3
601+ let eN = eJ._4
602+ let ei = bA(D(eN, bf), D(eM, be))
603+ let ej = G(ei, b)
604+ let cY = if (dU)
602605 then nil
603- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bs(eJ, eK, ee, ei, height, lastBlock.timestamp)), IntegerEntry(S(), ei), IntegerEntry(T(height, lastBlock.timestamp), ei)]
604- let ep = by(D(eB, bd), D(eA, bc))
605- let eq = G(ep, b)
606- let er = {
607- let eN = (toInt(fraction(ez, eE, el)) * 2)
608- fraction((eH - eN), b, eN)
606+ else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eK, eL, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
607+ let eq = bA(D(eC, bf), D(eB, be))
608+ let er = G(eq, b)
609+ let es = {
610+ let eO = (toInt(fraction(eA, eF, em)) * 2)
611+ fraction((eI - eO), b, eO)
609612 }
610- $Tuple5(eH, cX, dP, er, ey)
613+ $Tuple5(eI, cY, dQ, es, ez)
611614 }
612615 else throw("Strict value is not equal to itself.")
613616 }
614617
615618
616-func eO () = {
617- let dM = getString(Q())
618- if ($isInstanceOf(dM, "String"))
619+func eP () = {
620+ let dN = getString(S())
621+ if ($isInstanceOf(dN, "String"))
619622 then {
620- let eP = dM
621- fromBase58String(eP)
623+ let eQ = dN
624+ fromBase58String(eQ)
622625 }
623- else if ($isInstanceOf(dM, "Unit"))
626+ else if ($isInstanceOf(dN, "Unit"))
624627 then unit
625628 else throw("Match error")
626629 }
627630
628631
629-func eQ () = {
630- let dM = getString(R())
631- if ($isInstanceOf(dM, "String"))
632+func eR () = {
633+ let dN = getString(T())
634+ if ($isInstanceOf(dN, "String"))
632635 then {
633- let eP = dM
634- fromBase58String(eP)
636+ let eQ = dN
637+ fromBase58String(eQ)
635638 }
636- else if ($isInstanceOf(dM, "Unit"))
639+ else if ($isInstanceOf(dN, "Unit"))
637640 then unit
638641 else throw("Match error")
639642 }
640643
641644
642-func eR (dB) = {
643- let dM = eO()
644- if ($isInstanceOf(dM, "ByteVector"))
645+func eS (dC) = {
646+ let dN = eP()
647+ if ($isInstanceOf(dN, "ByteVector"))
645648 then {
646- let eS = dM
647- (dB.callerPublicKey == eS)
649+ let eT = dN
650+ (dC.callerPublicKey == eT)
648651 }
649- else if ($isInstanceOf(dM, "Unit"))
650- then (dB.caller == this)
652+ else if ($isInstanceOf(dN, "Unit"))
653+ then (dC.caller == this)
651654 else throw("Match error")
652655 }
653656
654657
655-func eT (dB) = {
656- let eU = throw("Permission denied")
657- let dM = eO()
658- if ($isInstanceOf(dM, "ByteVector"))
658+func eU (dC) = {
659+ let eV = throw("Permission denied")
660+ let dN = eP()
661+ if ($isInstanceOf(dN, "ByteVector"))
659662 then {
660- let eS = dM
661- if ((dB.callerPublicKey == eS))
663+ let eT = dN
664+ if ((dC.callerPublicKey == eT))
662665 then true
663- else eU
666+ else eV
664667 }
665- else if ($isInstanceOf(dM, "Unit"))
666- then if ((dB.caller == this))
668+ else if ($isInstanceOf(dN, "Unit"))
669+ then if ((dC.caller == this))
667670 then true
668- else eU
671+ else eV
669672 else throw("Match error")
670673 }
671674
672675
673-@Callable(dB)
674-func setManager (eV) = {
675- let eW = eT(dB)
676- if ((eW == eW))
676+@Callable(dC)
677+func setManager (eW) = {
678+ let eX = eU(dC)
679+ if ((eX == eX))
677680 then {
678- let eX = fromBase58String(eV)
679- if ((eX == eX))
680- then [StringEntry(R(), eV)]
681+ let eY = fromBase58String(eW)
682+ if ((eY == eY))
683+ then [StringEntry(T(), eW)]
681684 else throw("Strict value is not equal to itself.")
682685 }
683686 else throw("Strict value is not equal to itself.")
684687 }
685688
686689
687690
688-@Callable(dB)
691+@Callable(dC)
689692 func confirmManager () = {
690- let eY = eQ()
691- let eZ = if (isDefined(eY))
693+ let eZ = eR()
694+ let fa = if (isDefined(eZ))
692695 then true
693696 else throw("No pending manager")
694- if ((eZ == eZ))
697+ if ((fa == fa))
695698 then {
696- let fa = if ((dB.callerPublicKey == value(eY)))
699+ let fb = if ((dC.callerPublicKey == value(eZ)))
697700 then true
698701 else throw("You are not pending manager")
699- if ((fa == fa))
700- then [StringEntry(Q(), toBase58String(value(eY))), DeleteEntry(R())]
702+ if ((fb == fb))
703+ then [StringEntry(S(), toBase58String(value(eZ))), DeleteEntry(T())]
701704 else throw("Strict value is not equal to itself.")
702705 }
703706 else throw("Strict value is not equal to itself.")
704707 }
705708
706709
707710
708-@Callable(dB)
709-func put (cs,fb) = if ((0 > cs))
711+@Callable(dC)
712+func put (ct,fc) = if ((0 > ct))
710713 then throw("Invalid slippageTolerance passed")
711714 else {
712- let dH = dE(dB, cs, true)
713- let cU = dH._2
714- let bZ = dH._7
715- let cq = dH._9
716- let cV = dH._10
717- let cW = dH._11
718- let fc = dH._12
719- let fd = dH._13
720- let dF = toBigInt(value(dB.payments[0]).amount)
721- let dG = toBigInt(value(dB.payments[1]).amount)
722- let dg = (toBigInt(bw(aS(ba))) - dF)
723- if ((dg == dg))
715+ let dI = dF(dC, ct, true)
716+ let cV = dI._2
717+ let ca = dI._7
718+ let cr = dI._9
719+ let cW = dI._10
720+ let cX = dI._11
721+ let fd = dI._12
722+ let fe = dI._13
723+ let dG = toBigInt(value(dC.payments[0]).amount)
724+ let dH = toBigInt(value(dC.payments[1]).amount)
725+ let dh = (toBigInt(by(aU(bc))) - dG)
726+ if ((dh == dh))
724727 then {
725- let dh = (toBigInt(bw(aS(bb))) - dG)
726- if ((dh == dh))
728+ let di = (toBigInt(by(aU(bd))) - dH)
729+ if ((di == di))
727730 then {
728- let di = toBigInt(value(assetInfo(aZ)).quantity)
729- if ((di == di))
731+ let dj = toBigInt(value(assetInfo(bb)).quantity)
732+ if ((dj == dj))
730733 then {
731- let dj = dc(dF, dG, toBigInt(0))
732- if ((dj == dj))
734+ let dk = dd(dG, dH, toBigInt(0))
735+ if ((dk == dk))
733736 then {
734- let dK = invoke(aJ, "emit", [cU], nil)
735- if ((dK == dK))
737+ let dL = invoke(aL, "emit", [cV], nil)
738+ if ((dL == dL))
736739 then {
737- let dL = {
738- let dM = dK
739- if ($isInstanceOf(dM, "Address"))
740+ let dM = {
741+ let dN = dL
742+ if ($isInstanceOf(dN, "Address"))
740743 then {
741- let dN = dM
742- invoke(dN, "emit", [cU], nil)
744+ let dO = dN
745+ invoke(dO, "emit", [cV], nil)
743746 }
744747 else unit
745748 }
746- if ((dL == dL))
749+ if ((dM == dM))
747750 then {
748- let fe = if ((cV > 0))
749- then invoke(bg, "put", nil, [AttachedPayment(fc, cV)])
751+ let ff = if ((cW > 0))
752+ then invoke(bi, "put", nil, [AttachedPayment(fd, cW)])
750753 else nil
751- if ((fe == fe))
754+ if ((ff == ff))
752755 then {
753- let ff = if ((cW > 0))
754- then invoke(bg, "put", nil, [AttachedPayment(fd, cW)])
756+ let fg = if ((cX > 0))
757+ then invoke(bi, "put", nil, [AttachedPayment(fe, cX)])
755758 else nil
756- if ((ff == ff))
759+ if ((fg == fg))
757760 then {
758- let fg = if (fb)
761+ let fh = if (fc)
759762 then {
760- let fh = invoke(bf, "stake", nil, [AttachedPayment(bZ, cU)])
761- if ((fh == fh))
763+ let fi = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
764+ if ((fi == fi))
762765 then nil
763766 else throw("Strict value is not equal to itself.")
764767 }
765- else [ScriptTransfer(dB.caller, cU, bZ)]
766- let fi = value(assetInfo(aZ)).quantity
767- if ((fi == fi))
768+ else [ScriptTransfer(dC.caller, cV, ca)]
769+ let fj = value(assetInfo(bb)).quantity
770+ if ((fj == fj))
768771 then {
769- let fj = dk(0, 0, 0)
770- if ((fj == fj))
772+ let fk = dl(0, 0, 0)
773+ if ((fk == fk))
771774 then {
772- let db = fj._2
773- let fk = fj._1
774- let fl = aG(makeString([toString(dg), toString(dh), toString(di), toString(dj), toString(db), toString(cU), toString(cV), toString(cW), toString(di), toString(fi)], " "))
775- if ((fl == fl))
775+ let dc = fk._2
776+ let fl = fk._1
777+ let fm = aI(makeString([toString(dh), toString(di), toString(dj), toString(dk), toString(dc), toString(cV), toString(cW), toString(cX), toString(dj), toString(fj)], " "))
778+ if ((fm == fm))
776779 then {
777- let fm = do(dj, db)
778- if ((fm == fm))
779- then ((cq ++ fg) ++ fk)
780+ let fn = dp(dk, dc)
781+ if ((fn == fn))
782+ then ((cr ++ fh) ++ fl)
780783 else throw("Strict value is not equal to itself.")
781784 }
782785 else throw("Strict value is not equal to itself.")
783786 }
784787 else throw("Strict value is not equal to itself.")
785788 }
786789 else throw("Strict value is not equal to itself.")
787790 }
788791 else throw("Strict value is not equal to itself.")
789792 }
790793 else throw("Strict value is not equal to itself.")
791794 }
792795 else throw("Strict value is not equal to itself.")
793796 }
794797 else throw("Strict value is not equal to itself.")
795798 }
796799 else throw("Strict value is not equal to itself.")
797800 }
798801 else throw("Strict value is not equal to itself.")
799802 }
800803 else throw("Strict value is not equal to itself.")
801804 }
802805 else throw("Strict value is not equal to itself.")
803806 }
804807
805808
806809
807-@Callable(dB)
808-func putForFree (fn) = if ((0 > fn))
810+@Callable(dC)
811+func putForFree (fo) = if ((0 > fo))
809812 then throw("Invalid value passed")
810813 else {
811- let dH = dE(dB, fn, false)
812- let cq = dH._9
813- let dF = toBigInt(value(dB.payments[0]).amount)
814- let dG = toBigInt(value(dB.payments[1]).amount)
815- let dj = dc(dF, dG, toBigInt(0))
816- if ((dj == dj))
814+ let dI = dF(dC, fo, false)
815+ let cr = dI._9
816+ let dG = toBigInt(value(dC.payments[0]).amount)
817+ let dH = toBigInt(value(dC.payments[1]).amount)
818+ let dk = dd(dG, dH, toBigInt(0))
819+ if ((dk == dk))
817820 then {
818- let fo = dk(0, 0, 0)
819- let fk = fo._1
820- let db = fo._2
821- let fm = do(dj, db)
822- if ((fm == fm))
823- then (cq ++ fk)
821+ let fp = dl(0, 0, 0)
822+ let fl = fp._1
823+ let dc = fp._2
824+ let fn = dp(dk, dc)
825+ if ((fn == fn))
826+ then (cr ++ fl)
824827 else throw("Strict value is not equal to itself.")
825828 }
826829 else throw("Strict value is not equal to itself.")
827830 }
828831
829832
830833
831-@Callable(dB)
832-func putOneTkn (fp,fq) = {
833- let fr = {
834- let fs = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835- if ($isInstanceOf(fs, "Boolean"))
836- then fs
837- else throw(($getType(fs) + " couldn't be cast to Boolean"))
834+@Callable(dC)
835+func putOneTkn (fq,fr) = {
836+ let fs = {
837+ let ft = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
838+ if ($isInstanceOf(ft, "Boolean"))
839+ then ft
840+ else throw(($getType(ft) + " couldn't be cast to Boolean"))
838841 }
839- let ft = if (if (if (aL())
842+ let fu = if (if (if (aN())
840843 then true
841- else (aY == l))
844+ else (ba == l))
842845 then true
843- else (aY == n))
846+ else (ba == n))
844847 then true
845- else fr
846- let ex = [if (if (!(ft))
848+ else fs
849+ let ey = [if (if (!(fu))
847850 then true
848- else eR(dB))
851+ else eS(dC))
849852 then true
850- else aG("put operation is blocked by admin"), if ((size(dB.payments) == 1))
853+ else aI("put operation is blocked by admin"), if ((size(dC.payments) == 1))
851854 then true
852- else aG("exactly 1 payment are expected")]
853- if ((ex == ex))
855+ else aI("exactly 1 payment are expected")]
856+ if ((ey == ey))
854857 then {
855- let fu = dB.payments[0]
856- let dS = fu.assetId
857- let dR = fu.amount
858- let dj = if ((dS == ba))
859- then dc(toBigInt(dR), toBigInt(0), toBigInt(0))
860- else if ((dS == bb))
861- then dc(toBigInt(0), toBigInt(dR), toBigInt(0))
862- else aG("payment asset is not supported")
863- let X = dB.caller
864- let Y = dB.transactionId
865- let fv = dQ(dR, dS, X, Y)
866- if ((fv == fv))
858+ let fv = dC.payments[0]
859+ let dT = fv.assetId
860+ let dS = fv.amount
861+ let dk = if ((dT == bc))
862+ then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
863+ else if ((dT == bd))
864+ then dd(toBigInt(0), toBigInt(dS), toBigInt(0))
865+ else aI("payment asset is not supported")
866+ let Z = dC.caller
867+ let aa = dC.transactionId
868+ let fw = dR(dS, dT, Z, aa)
869+ if ((fw == fw))
867870 then {
868- let dW = fv._5
869- let fw = fv._4
870- let dP = fv._3
871- let cX = fv._2
872- let fx = fv._1
873- let fy = if (if ((fp > 0))
874- then (fp > fx)
871+ let dX = fw._5
872+ let fx = fw._4
873+ let dQ = fw._3
874+ let cY = fw._2
875+ let fy = fw._1
876+ let fz = if (if ((fq > 0))
877+ then (fq > fy)
875878 else false)
876- then aG(makeString(["amount to receive is less than ", toString(fp)], ""))
877- else fx
878- let dK = dI(fy)
879- if ((dK == dK))
879+ then aI(makeString(["amount to receive is less than ", toString(fq)], ""))
880+ else fy
881+ let dL = dJ(fz)
882+ if ((dL == dL))
880883 then {
881- let fg = if (fq)
884+ let fh = if (fr)
882885 then {
883- let fz = invoke(bf, "stake", nil, [AttachedPayment(aZ, fy)])
884- if ((fz == fz))
886+ let fA = invoke(bh, "stake", nil, [AttachedPayment(bb, fz)])
887+ if ((fA == fA))
885888 then nil
886889 else throw("Strict value is not equal to itself.")
887890 }
888- else [ScriptTransfer(dB.caller, fy, aZ)]
889- let fA = if ((dP > 0))
890- then [ScriptTransfer(aK, dP, dS)]
891+ else [ScriptTransfer(dC.caller, fz, bb)]
892+ let fB = if ((dQ > 0))
893+ then [ScriptTransfer(aM, dQ, dT)]
891894 else nil
892- let fB = if ((this == aK))
895+ let fC = if ((this == aM))
893896 then $Tuple2(0, 0)
894- else if (dW)
895- then $Tuple2(-(dP), 0)
896- else $Tuple2(0, -(dP))
897- let dl = fB._1
898- let dm = fB._2
899- let fC = dk(dl, dm, 0)
900- let fk = fC._1
901- let db = fC._2
902- let dv = value(getString(af))
903- let fm = do(dj, db)
904- if ((fm == fm))
905- then $Tuple2((((cX ++ fg) ++ fA) ++ fk), fy)
897+ else if (dX)
898+ then $Tuple2(-(dQ), 0)
899+ else $Tuple2(0, -(dQ))
900+ let dm = fC._1
901+ let dn = fC._2
902+ let fD = dl(dm, dn, 0)
903+ let fl = fD._1
904+ let dc = fD._2
905+ let dw = value(getString(ah))
906+ let fn = dp(dk, dc)
907+ if ((fn == fn))
908+ then $Tuple2((((cY ++ fh) ++ fB) ++ fl), fz)
906909 else throw("Strict value is not equal to itself.")
907910 }
908911 else throw("Strict value is not equal to itself.")
909912 }
910913 else throw("Strict value is not equal to itself.")
911914 }
912915 else throw("Strict value is not equal to itself.")
913916 }
914917
915918
916919
917-@Callable(dB)
918-func putOneTknREADONLY (dS,dR) = {
919- let fD = dQ(dR, aQ(dS), unit, unit)
920- let fx = fD._1
921- let cX = fD._2
922- let dP = fD._3
923- let fw = fD._4
924- let dW = fD._5
925- $Tuple2(nil, $Tuple3(fx, dP, fw))
920+@Callable(dC)
921+func putOneTknREADONLY (dT,dS) = {
922+ let fE = dR(dS, aS(dT), unit, unit)
923+ let fy = fE._1
924+ let cY = fE._2
925+ let dQ = fE._3
926+ let fx = fE._4
927+ let dX = fE._5
928+ $Tuple2(nil, $Tuple3(fy, dQ, fx))
926929 }
927930
928931
929932
930-@Callable(dB)
931-func getOneTkn (fE,fp) = {
932- let fr = {
933- let fs = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
934- if ($isInstanceOf(fs, "Boolean"))
935- then fs
936- else throw(($getType(fs) + " couldn't be cast to Boolean"))
933+@Callable(dC)
934+func getOneTkn (fF,fq) = {
935+ let fs = {
936+ let ft = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
937+ if ($isInstanceOf(ft, "Boolean"))
938+ then ft
939+ else throw(($getType(ft) + " couldn't be cast to Boolean"))
937940 }
938- let fF = if (if (aL())
941+ let fG = if (if (aN())
939942 then true
940- else (aY == n))
943+ else (ba == n))
941944 then true
942- else fr
943- let ex = [if (if (!(fF))
945+ else fs
946+ let ey = [if (if (!(fG))
944947 then true
945- else eR(dB))
948+ else eS(dC))
946949 then true
947- else aG("get operation is blocked by admin"), if ((size(dB.payments) == 1))
950+ else aI("get operation is blocked by admin"), if ((size(dC.payments) == 1))
948951 then true
949- else aG("exactly 1 payment are expected")]
950- if ((ex == ex))
952+ else aI("exactly 1 payment are expected")]
953+ if ((ey == ey))
951954 then {
952- let ew = aQ(fE)
953- let fu = dB.payments[0]
954- let dS = fu.assetId
955- let ee = fu.amount
956- let dj = dc(toBigInt(0), toBigInt(0), toBigInt(ee))
957- let X = dB.caller
958- let Y = dB.transactionId
959- let fG = ev(ew, ee, dS, X, Y)
960- if ((fG == fG))
955+ let ex = aS(fF)
956+ let fv = dC.payments[0]
957+ let dT = fv.assetId
958+ let ef = fv.amount
959+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(ef))
960+ let Z = dC.caller
961+ let aa = dC.transactionId
962+ let fH = ew(ex, ef, dT, Z, aa)
963+ if ((fH == fH))
961964 then {
962- let ey = fG._5
963- let fw = fG._4
964- let dP = fG._3
965- let cX = fG._2
966- let fH = fG._1
967- let dJ = if (if ((fp > 0))
968- then (fp > fH)
965+ let ez = fH._5
966+ let fx = fH._4
967+ let dQ = fH._3
968+ let cY = fH._2
969+ let fI = fH._1
970+ let dK = if (if ((fq > 0))
971+ then (fq > fI)
969972 else false)
970- then aG(makeString(["amount to receive is less than ", toString(fp)], ""))
971- else fH
972- let fI = invoke(aJ, "burn", [ee], [AttachedPayment(dS, ee)])
973- if ((fI == fI))
973+ then aI(makeString(["amount to receive is less than ", toString(fq)], ""))
974+ else fI
975+ let fJ = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
976+ if ((fJ == fJ))
974977 then {
975- let fJ = [ScriptTransfer(X, dJ, ew)]
976- let fA = if ((dP > 0))
977- then [ScriptTransfer(aK, dP, ew)]
978+ let fK = [ScriptTransfer(Z, dK, ex)]
979+ let fB = if ((dQ > 0))
980+ then [ScriptTransfer(aM, dQ, ex)]
978981 else nil
979- let fK = {
980- let fL = if ((this == aK))
982+ let fL = {
983+ let fM = if ((this == aM))
981984 then 0
982- else dP
983- if (ey)
984- then $Tuple2(-((dJ + fL)), 0)
985- else $Tuple2(0, -((dJ + fL)))
985+ else dQ
986+ if (ez)
987+ then $Tuple2(-((dK + fM)), 0)
988+ else $Tuple2(0, -((dK + fM)))
986989 }
987- let dl = fK._1
988- let dm = fK._2
989- let fM = dk(dl, dm, 0)
990- let fk = fM._1
991- let db = fM._2
992- let fm = do(dj, db)
993- if ((fm == fm))
994- then $Tuple2((((cX ++ fJ) ++ fA) ++ fk), dJ)
990+ let dm = fL._1
991+ let dn = fL._2
992+ let fN = dl(dm, dn, 0)
993+ let fl = fN._1
994+ let dc = fN._2
995+ let fn = dp(dk, dc)
996+ if ((fn == fn))
997+ then $Tuple2((((cY ++ fK) ++ fB) ++ fl), dK)
995998 else throw("Strict value is not equal to itself.")
996999 }
9971000 else throw("Strict value is not equal to itself.")
9981001 }
9991002 else throw("Strict value is not equal to itself.")
10001003 }
10011004 else throw("Strict value is not equal to itself.")
10021005 }
10031006
10041007
10051008
1006-@Callable(dB)
1007-func getOneTknREADONLY (ew,ee) = {
1008- let fN = ev(aQ(ew), ee, aZ, unit, unit)
1009- let fH = fN._1
1010- let cX = fN._2
1011- let dP = fN._3
1012- let fw = fN._4
1013- let ey = fN._5
1014- $Tuple2(nil, $Tuple3(fH, dP, fw))
1009+@Callable(dC)
1010+func getOneTknREADONLY (ex,ef) = {
1011+ let fO = ew(aS(ex), ef, bb, unit, unit)
1012+ let fI = fO._1
1013+ let cY = fO._2
1014+ let dQ = fO._3
1015+ let fx = fO._4
1016+ let ez = fO._5
1017+ $Tuple2(nil, $Tuple3(fI, dQ, fx))
10151018 }
10161019
10171020
10181021
1019-@Callable(dB)
1020-func unstakeAndGetOneTkn (fO,fE,fp) = {
1021- let fr = {
1022- let fs = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1023- if ($isInstanceOf(fs, "Boolean"))
1024- then fs
1025- else throw(($getType(fs) + " couldn't be cast to Boolean"))
1022+@Callable(dC)
1023+func unstakeAndGetOneTkn (fP,fF,fq) = {
1024+ let fs = {
1025+ let ft = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1026+ if ($isInstanceOf(ft, "Boolean"))
1027+ then ft
1028+ else throw(($getType(ft) + " couldn't be cast to Boolean"))
10261029 }
1027- let fF = if (if (aL())
1030+ let fG = if (if (aN())
10281031 then true
1029- else (aY == n))
1032+ else (ba == n))
10301033 then true
1031- else fr
1032- let ex = [if (if (!(fF))
1034+ else fs
1035+ let ey = [if (if (!(fG))
10331036 then true
1034- else eR(dB))
1037+ else eS(dC))
10351038 then true
1036- else aG("get operation is blocked by admin"), if ((size(dB.payments) == 0))
1039+ else aI("get operation is blocked by admin"), if ((size(dC.payments) == 0))
10371040 then true
1038- else aG("no payments are expected")]
1039- if ((ex == ex))
1041+ else aI("no payments are expected")]
1042+ if ((ey == ey))
10401043 then {
1041- let ew = aQ(fE)
1042- let X = dB.caller
1043- let Y = dB.transactionId
1044- let dj = dc(toBigInt(0), toBigInt(0), toBigInt(0))
1045- let fP = invoke(bf, "unstake", [toBase58String(aZ), fO], nil)
1046- if ((fP == fP))
1044+ let ex = aS(fF)
1045+ let Z = dC.caller
1046+ let aa = dC.transactionId
1047+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1048+ let fQ = invoke(bh, "unstake", [toBase58String(bb), fP], nil)
1049+ if ((fQ == fQ))
10471050 then {
1048- let fQ = ev(ew, fO, aZ, X, Y)
1049- if ((fQ == fQ))
1051+ let fR = ew(ex, fP, bb, Z, aa)
1052+ if ((fR == fR))
10501053 then {
1051- let ey = fQ._5
1052- let fw = fQ._4
1053- let dP = fQ._3
1054- let cX = fQ._2
1055- let fH = fQ._1
1056- let dJ = if (if ((fp > 0))
1057- then (fp > fH)
1054+ let ez = fR._5
1055+ let fx = fR._4
1056+ let dQ = fR._3
1057+ let cY = fR._2
1058+ let fI = fR._1
1059+ let dK = if (if ((fq > 0))
1060+ then (fq > fI)
10581061 else false)
1059- then aG(makeString(["amount to receive is less than ", toString(fp)], ""))
1060- else fH
1061- let fI = invoke(aJ, "burn", [fO], [AttachedPayment(aZ, fO)])
1062- if ((fI == fI))
1062+ then aI(makeString(["amount to receive is less than ", toString(fq)], ""))
1063+ else fI
1064+ let fJ = invoke(aL, "burn", [fP], [AttachedPayment(bb, fP)])
1065+ if ((fJ == fJ))
10631066 then {
1064- let fJ = [ScriptTransfer(dB.caller, dJ, ew)]
1065- let fA = if ((dP > 0))
1066- then [ScriptTransfer(aK, dP, ew)]
1067+ let fK = [ScriptTransfer(dC.caller, dK, ex)]
1068+ let fB = if ((dQ > 0))
1069+ then [ScriptTransfer(aM, dQ, ex)]
10671070 else nil
1068- let fR = {
1069- let fL = if ((this == aK))
1071+ let fS = {
1072+ let fM = if ((this == aM))
10701073 then 0
1071- else dP
1072- if (ey)
1073- then $Tuple2(-((dJ + fL)), 0)
1074- else $Tuple2(0, -((dJ + fL)))
1074+ else dQ
1075+ if (ez)
1076+ then $Tuple2(-((dK + fM)), 0)
1077+ else $Tuple2(0, -((dK + fM)))
10751078 }
1076- let dl = fR._1
1077- let dm = fR._2
1078- let fS = dk(dl, dm, 0)
1079- let fk = fS._1
1080- let db = fS._2
1081- let fm = do(dj, db)
1082- if ((fm == fm))
1083- then $Tuple2((((cX ++ fJ) ++ fA) ++ fk), dJ)
1079+ let dm = fS._1
1080+ let dn = fS._2
1081+ let fT = dl(dm, dn, 0)
1082+ let fl = fT._1
1083+ let dc = fT._2
1084+ let fn = dp(dk, dc)
1085+ if ((fn == fn))
1086+ then $Tuple2((((cY ++ fK) ++ fB) ++ fl), dK)
10841087 else throw("Strict value is not equal to itself.")
10851088 }
10861089 else throw("Strict value is not equal to itself.")
10871090 }
10881091 else throw("Strict value is not equal to itself.")
10891092 }
10901093 else throw("Strict value is not equal to itself.")
10911094 }
10921095 else throw("Strict value is not equal to itself.")
10931096 }
10941097
10951098
10961099
1097-@Callable(dB)
1100+@Callable(dC)
10981101 func get () = {
1099- let cI = dA(dB)
1100- let fT = cI._1
1101- let cp = cI._2
1102- let dD = cI._3
1103- let bX = cI._4
1104- let cq = cI._5
1105- let dj = dc(toBigInt(0), toBigInt(0), toBigInt(dD))
1106- let fU = invoke(aJ, "burn", [dD], [AttachedPayment(bX, dD)])
1107- if ((fU == fU))
1102+ let cJ = dB(dC)
1103+ let fU = cJ._1
1104+ let cq = cJ._2
1105+ let dE = cJ._3
1106+ let bY = cJ._4
1107+ let cr = cJ._5
1108+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1109+ let fV = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1110+ if ((fV == fV))
11081111 then {
1109- let fV = dk(-(fT), -(cp), 0)
1110- let fk = fV._1
1111- let db = fV._2
1112- let fm = do(dj, db)
1113- if ((fm == fm))
1114- then (cq ++ fk)
1112+ let fW = dl(-(fU), -(cq), 0)
1113+ let fl = fW._1
1114+ let dc = fW._2
1115+ let fn = dp(dk, dc)
1116+ if ((fn == fn))
1117+ then (cr ++ fl)
11151118 else throw("Strict value is not equal to itself.")
11161119 }
11171120 else throw("Strict value is not equal to itself.")
11181121 }
11191122
11201123
11211124
1122-@Callable(dB)
1123-func getNoLess (fW,fX) = {
1124- let cI = dA(dB)
1125- let co = cI._1
1126- let cp = cI._2
1127- let dD = cI._3
1128- let bX = cI._4
1129- let cq = cI._5
1130- if ((fW > co))
1131- then throw(((("noLessThenAmtAsset failed: " + toString(co)) + " < ") + toString(fW)))
1132- else if ((fX > cp))
1133- then throw(((("noLessThenPriceAsset failed: " + toString(cp)) + " < ") + toString(fX)))
1125+@Callable(dC)
1126+func getNoLess (fX,fY) = {
1127+ let cJ = dB(dC)
1128+ let cp = cJ._1
1129+ let cq = cJ._2
1130+ let dE = cJ._3
1131+ let bY = cJ._4
1132+ let cr = cJ._5
1133+ if ((fX > cp))
1134+ then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fX)))
1135+ else if ((fY > cq))
1136+ then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fY)))
11341137 else {
1135- let dj = dc(toBigInt(0), toBigInt(0), toBigInt(dD))
1136- let fU = invoke(aJ, "burn", [dD], [AttachedPayment(bX, dD)])
1137- if ((fU == fU))
1138+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1139+ let fV = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1140+ if ((fV == fV))
11381141 then {
1139- let fY = dk(-(co), -(cp), 0)
1140- let fk = fY._1
1141- let db = fY._2
1142- let fm = do(dj, db)
1143- if ((fm == fm))
1144- then (cq ++ fk)
1142+ let fZ = dl(-(cp), -(cq), 0)
1143+ let fl = fZ._1
1144+ let dc = fZ._2
1145+ let fn = dp(dk, dc)
1146+ if ((fn == fn))
1147+ then (cr ++ fl)
11451148 else throw("Strict value is not equal to itself.")
11461149 }
11471150 else throw("Strict value is not equal to itself.")
11481151 }
11491152 }
11501153
11511154
11521155
1153-@Callable(dB)
1154-func unstakeAndGet (dJ) = {
1155- let fZ = if ((size(dB.payments) != 0))
1156+@Callable(dC)
1157+func unstakeAndGet (dK) = {
1158+ let ga = if ((size(dC.payments) != 0))
11561159 then throw("No payments are expected")
11571160 else true
1158- if ((fZ == fZ))
1161+ if ((ga == ga))
11591162 then {
1160- let bM = aN()
1161- let bZ = fromBase58String(bM[q])
1162- let dj = dc(toBigInt(0), toBigInt(0), toBigInt(0))
1163- let fP = invoke(bf, "unstake", [toBase58String(bZ), dJ], nil)
1164- if ((fP == fP))
1163+ let bN = aP()
1164+ let ca = fromBase58String(bN[q])
1165+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1166+ let fQ = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1167+ if ((fQ == fQ))
11651168 then {
1166- let cI = bV(toBase58String(dB.transactionId), toBase58String(bZ), dJ, dB.caller)
1167- let co = cI._1
1168- let cp = cI._2
1169- let cc = parseIntValue(cI._9)
1170- let cq = cI._10
1171- let ga = if (if (aL())
1169+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
1170+ let cp = cJ._1
1171+ let cq = cJ._2
1172+ let cd = parseIntValue(cJ._9)
1173+ let cr = cJ._10
1174+ let gb = if (if (aN())
11721175 then true
1173- else (cc == n))
1174- then throw(("Get operation is blocked by admin. Status = " + toString(cc)))
1176+ else (cd == n))
1177+ then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
11751178 else true
1176- if ((ga == ga))
1179+ if ((gb == gb))
11771180 then {
1178- let fU = invoke(aJ, "burn", [dJ], [AttachedPayment(bZ, dJ)])
1179- if ((fU == fU))
1181+ let fV = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1182+ if ((fV == fV))
11801183 then {
1181- let gb = dk(-(co), -(cp), 0)
1182- let fk = gb._1
1183- let db = gb._2
1184- let fm = do(dj, db)
1185- if ((fm == fm))
1186- then (cq ++ fk)
1184+ let gc = dl(-(cp), -(cq), 0)
1185+ let fl = gc._1
1186+ let dc = gc._2
1187+ let fn = dp(dk, dc)
1188+ if ((fn == fn))
1189+ then (cr ++ fl)
11871190 else throw("Strict value is not equal to itself.")
11881191 }
11891192 else throw("Strict value is not equal to itself.")
11901193 }
11911194 else throw("Strict value is not equal to itself.")
11921195 }
11931196 else throw("Strict value is not equal to itself.")
11941197 }
11951198 else throw("Strict value is not equal to itself.")
11961199 }
11971200
11981201
11991202
1200-@Callable(dB)
1201-func unstakeAndGetNoLess (fO,gc,fX) = {
1202- let fF = if (aL())
1203+@Callable(dC)
1204+func unstakeAndGetNoLess (fP,gd,fY) = {
1205+ let fG = if (aN())
12031206 then true
1204- else (aY == n)
1205- let ex = [if (!(fF))
1207+ else (ba == n)
1208+ let ey = [if (!(fG))
12061209 then true
1207- else throw("get operation is blocked by admin"), if ((size(dB.payments) == 0))
1210+ else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
12081211 then true
12091212 else throw("no payments are expected")]
1210- if ((ex == ex))
1213+ if ((ey == ey))
12111214 then {
1212- let dj = dc(toBigInt(0), toBigInt(0), toBigInt(0))
1213- let fP = invoke(bf, "unstake", [toBase58String(aZ), fO], nil)
1214- if ((fP == fP))
1215+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1216+ let fQ = invoke(bh, "unstake", [toBase58String(bb), fP], nil)
1217+ if ((fQ == fQ))
12151218 then {
1216- let cI = bV(toBase58String(dB.transactionId), toBase58String(aZ), fO, dB.caller)
1217- let co = cI._1
1218- let cp = cI._2
1219- let cq = cI._10
1220- let gd = [if ((co >= gc))
1219+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fP, dC.caller)
1220+ let cp = cJ._1
1221+ let cq = cJ._2
1222+ let cr = cJ._10
1223+ let ge = [if ((cp >= gd))
12211224 then true
1222- else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cp >= fX))
1225+ else throw(makeString(["amount asset amount to receive is less than ", toString(gd)], "")), if ((cq >= fY))
12231226 then true
1224- else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
1225- if ((gd == gd))
1227+ else throw(makeString(["price asset amount to receive is less than ", toString(fY)], ""))]
1228+ if ((ge == ge))
12261229 then {
1227- let fU = invoke(aJ, "burn", [fO], [AttachedPayment(aZ, fO)])
1228- if ((fU == fU))
1230+ let fV = invoke(aL, "burn", [fP], [AttachedPayment(bb, fP)])
1231+ if ((fV == fV))
12291232 then {
1230- let ge = dk(-(co), -(cp), 0)
1231- let fk = ge._1
1232- let db = ge._2
1233- let fm = do(dj, db)
1234- if ((fm == fm))
1235- then (cq ++ fk)
1233+ let gf = dl(-(cp), -(cq), 0)
1234+ let fl = gf._1
1235+ let dc = gf._2
1236+ let fn = dp(dk, dc)
1237+ if ((fn == fn))
1238+ then (cr ++ fl)
12361239 else throw("Strict value is not equal to itself.")
12371240 }
12381241 else throw("Strict value is not equal to itself.")
12391242 }
12401243 else throw("Strict value is not equal to itself.")
12411244 }
12421245 else throw("Strict value is not equal to itself.")
12431246 }
12441247 else throw("Strict value is not equal to itself.")
12451248 }
12461249
12471250
12481251
1249-@Callable(dB)
1250-func activate (gf,gg) = if ((toString(dB.caller) != toString(aJ)))
1252+@Callable(dC)
1253+func activate (gg,gh) = if ((toString(dC.caller) != toString(aL)))
12511254 then throw("permissions denied")
1252- else $Tuple2([StringEntry(aa(), gf), StringEntry(ab(), gg)], "success")
1255+ else $Tuple2([StringEntry(ac(), gg), StringEntry(ad(), gh)], "success")
12531256
12541257
12551258
1256-@Callable(dB)
1259+@Callable(dC)
12571260 func refreshKLp () = {
1258- let gh = valueOrElse(getInteger(ag), 0)
1259- let gi = if (((height - gh) >= aj))
1261+ let gi = valueOrElse(getInteger(ai), 0)
1262+ let gj = if (((height - gi) >= al))
12601263 then unit
1261- else aG(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
1262- if ((gi == gi))
1264+ else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1265+ if ((gj == gj))
12631266 then {
1264- let dv = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, af), "0")), aI("invalid kLp"))
1265- let gj = dk(0, 0, 0)
1266- let gk = gj._1
1267- let db = gj._2
1268- let dn = if ((dv != db))
1269- then gk
1270- else aG("nothing to refresh")
1271- $Tuple2(dn, toString(db))
1267+ let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1268+ let gk = dl(0, 0, 0)
1269+ let gl = gk._1
1270+ let dc = gk._2
1271+ let do = if ((dw != dc))
1272+ then gl
1273+ else aI("nothing to refresh")
1274+ $Tuple2(do, toString(dc))
12721275 }
12731276 else throw("Strict value is not equal to itself.")
12741277 }
12751278
12761279
12771280
1278-@Callable(dB)
1279-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aN())
1281+@Callable(dC)
1282+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aP())
12801283
12811284
12821285
1283-@Callable(dB)
1284-func getAccBalanceWrapperREADONLY (bx) = $Tuple2(nil, bw(bx))
1286+@Callable(dC)
1287+func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
12851288
12861289
12871290
1288-@Callable(dB)
1289-func calcPricesWrapperREADONLY (bG,bH,bL) = {
1290- let bU = bK(bG, bH, bL)
1291- $Tuple2(nil, [toString(bU[0]), toString(bU[1]), toString(bU[2])])
1291+@Callable(dC)
1292+func calcPricesWrapperREADONLY (bH,bI,bM) = {
1293+ let bV = bL(bH, bI, bM)
1294+ $Tuple2(nil, [toString(bV[0]), toString(bV[1]), toString(bV[2])])
12921295 }
12931296
12941297
12951298
1296-@Callable(dB)
1299+@Callable(dC)
12971300 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
12981301
12991302
13001303
1301-@Callable(dB)
1304+@Callable(dC)
13021305 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
13031306
13041307
13051308
1306-@Callable(dB)
1307-func calcPriceBigIntWrapperREADONLY (bz,bA) = $Tuple2(nil, toString(by(parseBigIntValue(bz), parseBigIntValue(bA))))
1309+@Callable(dC)
1310+func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
13081311
13091312
13101313
1311-@Callable(dB)
1312-func estimatePutOperationWrapperREADONLY (bW,cs,ct,cu,cv,cw,X,cx,cy) = $Tuple2(nil, cr(bW, cs, ct, cu, cv, cw, X, cx, cy))
1314+@Callable(dC)
1315+func estimatePutOperationWrapperREADONLY (bX,ct,cu,cv,cw,cx,Z,cy,cz) = $Tuple2(nil, cs(bX, ct, cu, cv, cw, cx, Z, cy, cz))
13131316
13141317
13151318
1316-@Callable(dB)
1317-func estimateGetOperationWrapperREADONLY (bW,bX,bY,X) = {
1318- let cI = bV(bW, bX, bY, addressFromStringValue(X))
1319- $Tuple2(nil, $Tuple10(cI._1, cI._2, cI._3, cI._4, cI._5, cI._6, cI._7, toString(cI._8), cI._9, cI._10))
1319+@Callable(dC)
1320+func estimateGetOperationWrapperREADONLY (bX,bY,bZ,Z) = {
1321+ let cJ = bW(bX, bY, bZ, addressFromStringValue(Z))
1322+ $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
13201323 }
13211324
13221325
13231326
1324-@Callable(dB)
1327+@Callable(dC)
13251328 func statsREADONLY () = {
1326- let bM = aN()
1327- let bZ = fromBase58String(bM[q])
1328- let gl = bM[r]
1329- let gm = bM[s]
1330- let cB = bM[v]
1331- let cC = bM[w]
1332- let bN = parseIntValue(bM[t])
1333- let bO = parseIntValue(bM[u])
1334- let gn = valueOrErrorMessage(assetInfo(bZ), (("Asset " + toBase58String(bZ)) + " doesn't exist")).quantity
1335- let go = bw(gl)
1336- let gp = bw(gm)
1337- let gq = if ((gn == 0))
1329+ let bN = aP()
1330+ let ca = fromBase58String(bN[q])
1331+ let gm = bN[r]
1332+ let gn = bN[s]
1333+ let cC = bN[v]
1334+ let cD = bN[w]
1335+ let bO = parseIntValue(bN[t])
1336+ let bP = parseIntValue(bN[u])
1337+ let go = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1338+ let gp = by(gm)
1339+ let gq = by(gn)
1340+ let gr = if ((go == 0))
13381341 then [e, e, e]
1339- else bK(go, gp, gn)
1340- let cj = 0
1341- let gr = G(gq[1], b)
1342- let gs = G(gq[2], b)
1343- let gt = value(getInteger(aJ, au(toString(this))))
1344- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(go), toString(gp), toString(gn), toString(cj), toString(gr), toString(gs), toString(gt)], j))
1342+ else bL(gp, gq, go)
1343+ let ck = 0
1344+ let gs = G(gr[1], b)
1345+ let gt = G(gr[2], b)
1346+ let gu = value(getInteger(aL, aw(toString(this))))
1347+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gp), toString(gq), toString(go), toString(ck), toString(gs), toString(gt), toString(gu)], j))
13451348 }
13461349
13471350
13481351
1349-@Callable(dB)
1350-func evaluatePutByAmountAssetREADONLY (ct) = {
1351- let bM = aN()
1352- let bZ = fromBase58String(bM[q])
1353- let cz = bM[r]
1354- let ca = fromBase58String(cz)
1355- let cA = bM[s]
1352+@Callable(dC)
1353+func evaluatePutByAmountAssetREADONLY (cu) = {
1354+ let bN = aP()
1355+ let ca = fromBase58String(bN[q])
1356+ let cA = bN[r]
13561357 let cb = fromBase58String(cA)
1357- let bN = parseIntValue(bM[t])
1358- let bO = parseIntValue(bM[u])
1359- let cc = bM[p]
1360- let gn = valueOrErrorMessage(assetInfo(bZ), (("Asset " + toBase58String(bZ)) + " doesn't exist")).quantity
1361- let go = bw(cz)
1362- let gp = bw(cA)
1363- let bI = D(go, bN)
1358+ let cB = bN[s]
1359+ let cc = fromBase58String(cB)
1360+ let bO = parseIntValue(bN[t])
1361+ let bP = parseIntValue(bN[u])
1362+ let cd = bN[p]
1363+ let go = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1364+ let gp = by(cA)
1365+ let gq = by(cB)
13641366 let bJ = D(gp, bO)
1365- let ci = if ((gn == 0))
1367+ let bK = D(gq, bP)
1368+ let cj = if ((go == 0))
13661369 then e
1367- else by(bJ, bI)
1368- let cF = D(ct, bN)
1369- let cG = fraction(cF, ci, d)
1370- let cv = G(cG, bO)
1371- let dH = cr("", 500000, ct, ca, cv, cb, "", true, false)
1372- let cQ = dH._1
1373- let gu = dH._3
1374- let ce = dH._4
1375- let cg = dH._5
1376- let cd = dH._6
1377- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cQ), toString(G(ci, b)), toString(ce), toString(cg), toString(cd), cc, toString(ct), toString(cv)], j))
1370+ else bA(bK, bJ)
1371+ let cG = D(cu, bO)
1372+ let cH = fraction(cG, cj, d)
1373+ let cw = G(cH, bP)
1374+ let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
1375+ let cR = dI._1
1376+ let gv = dI._3
1377+ let cf = dI._4
1378+ let ch = dI._5
1379+ let ce = dI._6
1380+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
13781381 }
13791382
13801383
13811384
1382-@Callable(dB)
1383-func evaluatePutByPriceAssetREADONLY (cv) = {
1384- let bM = aN()
1385- let bZ = fromBase58String(bM[q])
1386- let cz = bM[r]
1387- let ca = fromBase58String(cz)
1388- let cA = bM[s]
1385+@Callable(dC)
1386+func evaluatePutByPriceAssetREADONLY (cw) = {
1387+ let bN = aP()
1388+ let ca = fromBase58String(bN[q])
1389+ let cA = bN[r]
13891390 let cb = fromBase58String(cA)
1390- let bN = parseIntValue(bM[t])
1391- let bO = parseIntValue(bM[u])
1392- let cc = bM[p]
1393- let gn = valueOrErrorMessage(assetInfo(bZ), (("Asset " + toBase58String(bZ)) + " doesn't exist")).quantity
1394- let gv = bw(cz)
1395- let gw = bw(cA)
1396- let gx = D(gv, bN)
1391+ let cB = bN[s]
1392+ let cc = fromBase58String(cB)
1393+ let bO = parseIntValue(bN[t])
1394+ let bP = parseIntValue(bN[u])
1395+ let cd = bN[p]
1396+ let go = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1397+ let gw = by(cA)
1398+ let gx = by(cB)
13971399 let gy = D(gw, bO)
1398- let ci = if ((gn == 0))
1400+ let gz = D(gx, bP)
1401+ let cj = if ((go == 0))
13991402 then e
1400- else by(gy, gx)
1401- let cG = D(cv, bO)
1402- let cF = fraction(cG, d, ci)
1403- let ct = G(cF, bN)
1404- let dH = cr("", 500000, ct, ca, cv, cb, "", true, false)
1405- let cQ = dH._1
1406- let gu = dH._3
1407- let ce = dH._4
1408- let cg = dH._5
1409- let cd = dH._6
1410- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cQ), toString(G(ci, b)), toString(ce), toString(cg), toString(cd), cc, toString(ct), toString(cv)], j))
1403+ else bA(gz, gy)
1404+ let cH = D(cw, bP)
1405+ let cG = fraction(cH, d, cj)
1406+ let cu = G(cG, bO)
1407+ let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
1408+ let cR = dI._1
1409+ let gv = dI._3
1410+ let cf = dI._4
1411+ let ch = dI._5
1412+ let ce = dI._6
1413+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
14111414 }
14121415
14131416
14141417
1415-@Callable(dB)
1416-func evaluateGetREADONLY (gz,gA) = {
1417- let cI = bV("", gz, gA, this)
1418- let co = cI._1
1419- let cp = cI._2
1420- let ce = cI._5
1421- let cg = cI._6
1422- let cd = cI._7
1423- let cj = cI._8
1424- let cc = parseIntValue(cI._9)
1425- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(co), toString(cp), toString(ce), toString(cg), toString(cd), toString(cj), toString(cc)], j))
1418+@Callable(dC)
1419+func evaluateGetREADONLY (gA,gB) = {
1420+ let cJ = bW("", gA, gB, this)
1421+ let cp = cJ._1
1422+ let cq = cJ._2
1423+ let cf = cJ._5
1424+ let ch = cJ._6
1425+ let ce = cJ._7
1426+ let ck = cJ._8
1427+ let cd = parseIntValue(cJ._9)
1428+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cp), toString(cq), toString(cf), toString(ch), toString(ce), toString(ck), toString(cd)], j))
14261429 }
14271430
14281431
1429-@Verifier(gB)
1430-func gC () = {
1431- let gD = {
1432- let dM = eO()
1433- if ($isInstanceOf(dM, "ByteVector"))
1432+@Verifier(gC)
1433+func gD () = {
1434+ let gE = {
1435+ let dN = eP()
1436+ if ($isInstanceOf(dN, "ByteVector"))
14341437 then {
1435- let eS = dM
1436- eS
1438+ let eT = dN
1439+ eT
14371440 }
1438- else if ($isInstanceOf(dM, "Unit"))
1439- then gB.senderPublicKey
1441+ else if ($isInstanceOf(dN, "Unit"))
1442+ then gC.senderPublicKey
14401443 else throw("Match error")
14411444 }
1442- let dM = gB
1443- if ($isInstanceOf(dM, "Order"))
1445+ let dN = gC
1446+ if ($isInstanceOf(dN, "Order"))
14441447 then {
1445- let dr = dM
1446- let gE = aM()
1447- let az = dq(dr)
1448- let aA = sigVerify(dr.bodyBytes, dr.proofs[0], dr.senderPublicKey)
1449- let aB = sigVerify(dr.bodyBytes, dr.proofs[1], gE)
1450- if (if (if (az)
1451- then aA
1448+ let ds = dN
1449+ let gF = aO()
1450+ let aB = dr(ds)
1451+ let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
1452+ let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gF)
1453+ if (if (if (aB)
1454+ then aC
14521455 else false)
1453- then aB
1456+ then aD
14541457 else false)
14551458 then true
1456- else ay(az, aA, aB)
1459+ else aA(aB, aC, aD)
14571460 }
1458- else if ($isInstanceOf(dM, "SetScriptTransaction"))
1461+ else if ($isInstanceOf(dN, "SetScriptTransaction"))
14591462 then {
1460- let eP = dM
1461- let gF = blake2b256(value(eP.script))
1462- let gG = fromBase64String(value(getString(aJ, aw())))
1463- let gH = scriptHash(this)
1464- if (if ((gG == gF))
1465- then (gH != gF)
1463+ let eQ = dN
1464+ let gG = blake2b256(value(eQ.script))
1465+ let gH = fromBase64String(value(getString(aL, ay())))
1466+ let gI = scriptHash(this)
1467+ if (if ((gH == gG))
1468+ then (gI != gG)
14661469 else false)
14671470 then true
1468- else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
1471+ else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
14691472 }
1470- else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
1473+ else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
14711474 }
14721475

github/deemru/w8io/026f985 
532.80 ms