tx · C4WBdBbCEgLmESxEkzqc9vNi8wFYYyMcBn6qQRRjnJk3

3NCUrmBwKvfQDkfTg1gL8BPKZid8fC4YDx3:  -0.03400000 Waves

2022.12.06 14:08 [2348402] smart account 3NCUrmBwKvfQDkfTg1gL8BPKZid8fC4YDx3 > SELF 0.00000000 Waves

{ "type": 13, "id": "C4WBdBbCEgLmESxEkzqc9vNi8wFYYyMcBn6qQRRjnJk3", "fee": 3400000, "feeAssetId": null, "timestamp": 1670324891112, "version": 1, "sender": "3NCUrmBwKvfQDkfTg1gL8BPKZid8fC4YDx3", "senderPublicKey": "DnbhDz6GvchfLCy83fxyPKD7SoAmXD6DrJ5ubi3LXtgM", "proofs": [ "3oWT72pUWLC6oH4PoVzUarQJ2eKnTgh16NY3X3h7WNt2CDwvd37MAuA8bxYGrG4mGt8nWbMpym3RA5NZzvggKdaS" ], "script": "base64:BgKdLAgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDc5MTU4MDgxIg5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiB2NhbGNLTHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIKdXBkYXRlZEtMcCIScmVmcmVzaEtMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkS0xwIgpjdXJyZW50S0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjAwMjUyMDIzNyIDa0xwIg0kdDAyMDcwODIwODA4Ig11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjM0OTIyMzc4NSIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyMzc4OTIzOTM4IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyINJHQwMjQwNjAyNDExOSINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCIEbG9zcyINJHQwMjU1OTYyNTc2MyIHYmFsYW5jZSIPaXNzdWVBbW91bnRCb3RoIg9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDI3MzY1Mjc0MTUiC3RvdGFsQW1vdW50Ig0kdDAyNzQxOTI3NjQ1IgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iD3Nob3VsZEF1dG9TdGFrZSIEYW1JZCIEcHJJZCIMc2xpcHBhZ2VBSW52IgxzbGlwcGFnZVBJbnYiCmxwVHJhbnNmZXIiC3NscFN0YWtlSW52Ig0kdDAzMTU5NjMxNjYxIhFyZWZyZXNoS0xwQWN0aW9ucyIRaXNVcGRhdGVkS0xwVmFsaWQiC21heFNsaXBwYWdlIg0kdDAzMjAxMDMyMDc1IgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiAUAiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDMyOTEzMzMwNjUiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwMzM2NTEzMzg0OCINJHQwMzM4NTEzMzk1OSINJHQwMzQyMTMzNDM3MCINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwMzUxNzUzNTMyOCIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDAzNTgyODM2MDc1IhBmZWVBbW91bnRGb3JDYWxjIg0kdDAzNjA3ODM2MTg2Ig0kdDAzNjQzMTM2NTg3Ig11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDAzNzQxMjM3NTYzIg0kdDAzODA1ODM4MzA1Ig0kdDAzODMwODM4NDE2IglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDAzOTI2OTM5MzUxIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig0kdDA0MDIwODQwMjg5Ig1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiDSR0MDQxMzIzNDE0MDQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIg0kdDA0MjYwNzQyNjg4IgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNDM4NjM0MzkyNyIQa0xwVXBkYXRlQWN0aW9ucyIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaGwAAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUgBSQkAoAMBCQC8AgMFAUgJALYCAQUBSQUBZAEBSgMBSwFMAU0JAGsDBQFLBQFMBQFNAQFOAQFIAwkAZgIAAAUBSAkBAS0BBQFIBQFIAQFPAQFIAwkAvwICBQFlBQFICQC+AgEFAUgFAUgBAVAAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFRAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVIAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVMAAhElcyVzX19wcmljZV9fbGFzdAEBVAIBVQFWCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVQkAzAgCCQCkAwEFAVYFA25pbAUBagEBVwIBWAFZCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWAICX18FAVkBAVoCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVgCAl9fBQFZAQJhYQACDyVzX19hbW91bnRBc3NldAECYWIAAg4lc19fcHJpY2VBc3NldAACYWMCByVzX19mZWUAAmFkCQBrAwAKBQFiAJBOAAJhZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhYwUCYWQAAmFmCQC5CQIJAMwIAgICJXMJAMwIAgIDa0xwBQNuaWwFAWoAAmFnCQC5CQIJAMwIAgICJXMJAMwIAgISa0xwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAWoAAmFoCQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaEtMcERlbGF5BQNuaWwFAWoAAmFpAB4AAmFqCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFoBQJhaQECYWsAAhElc19fZmFjdG9yeUNvbmZpZwECYWwAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFtAQJhbgkArAICCQCsAgICCCVzJXMlc19fBQJhbgIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAmFvAgJhcAJhcQkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYXACAl9fBQJhcQIIX19jb25maWcBAmFyAQJhcwkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhcwECYXQAAgwlc19fc2h1dGRvd24BAmF1AQJhdgkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAmF2AQJhdwACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAAJheAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmF5AwJhegJhQQJhQgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYXoCDSBzZW5kZXJWYWxpZD0JAKUDAQUCYUECDiBtYXRjaGVyVmFsaWQ9CQClAwEFAmFCAQJhQwICYUQCYUUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhRAUCYUUJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYUQJAMwIAgIBLgkAzAgCBQJhRQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhRgICYUQCYUUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhRAUCYUUJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYUQJAMwIAgIBLgkAzAgCBQJhRQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhRwECYUgJAAIBCQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYUgFA25pbAIBIAECYUkBAmFICQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYUgFA25pbAIBIAACYUoJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhQwIFBHRoaXMJAQFQAAACYUsJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhQwIFAmFKBQJheAECYUwACQELdmFsdWVPckVsc2UCCQCbCAIFAmFKCQECYXQABwECYU0ACQDZBAEJAQJhQwIFAmFKCQECYWwAAQJhTgAEAmFPCQECYUMCBQR0aGlzCQECYWEABAJhUAkBAmFDAgUEdGhpcwkBAmFiAAQCYXEJAQJhRgIFAmFKCQECYXIBBQJhUAQCYXAJAQJhRgIFAmFKCQECYXIBBQJhTwkAtQkCCQECYUMCBQJhSgkBAmFvAgkApAMBBQJhcAkApAMBBQJhcQUBagECYVEBAmFSAwkAAAIFAmFSBQFpBQR1bml0CQDZBAEFAmFSAQJhUwECYVIDCQAAAgUCYVIFBHVuaXQFAWkJANgEAQkBBXZhbHVlAQUCYVIBAmFUAQJhVQkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFVBQFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVUFAXAJANkEAQkAkQMCBQJhVQUBcQkBAmFRAQkAkQMCBQJhVQUBcgkBAmFRAQkAkQMCBQJhVQUBcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFVBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVUFAXUAAmFWCQECYVQBCQECYU4AAAJhVwUCYVYAAmFYCAUCYVcCXzEAAmFZCAUCYVcCXzIAAmFaCAUCYVcCXzMAAmJhCAUCYVcCXzQAAmJiCAUCYVcCXzUAAmJjCAUCYVcCXzYAAmJkCAUCYVcCXzcBAmJlAAkAtQkCCQECYUMCBQJhSgkBAmFrAAUBagACYmYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJiZQAFAUICGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MAAmJnCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYmUABQFDAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAQJiaAoCYmkCYmoCYmsCYmwCYm0CYm4CYm8CYnACYnECYnIJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJpCQDMCAIJAKQDAQUCYmoJAMwIAgkApAMBBQJiawkAzAgCCQCkAwEFAmJsCQDMCAIJAKQDAQUCYm0JAMwIAgkApAMBBQJibgkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYnAJAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyBQNuaWwFAWoBAmJzBgJidAJidQJidgJibAJibwJicAkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ0CQDMCAIJAKQDAQUCYnUJAMwIAgkApAMBBQJidgkAzAgCCQCkAwEFAmJsCQDMCAIJAKQDAQUCYm8JAMwIAgkApAMBBQJicAUDbmlsBQFqAQJidwECYngDCQAAAgUCYngCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJ4AQJieQICYnoCYkEJALwCAwUCYnoFAWQFAmJBAQJiQgQCYkMCYkQCYkUCYkYEAmJHCQEBRAIFAmJFBQJiQwQCYkgJAQFEAgUCYkYFAmJECQECYnkCBQJiSAUCYkcBAmJJAwJiRQJiRgJiSgQCYksJAQJhTgAEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXUEAmJOCQECYkIEBQJiTAUCYk0FAmJFBQJiRgQCYkEJAQFEAgUCYkUFAmJMBAJiegkBAUQCBQJiRgUCYk0EAmJPCQEBRAIFAmJKBQFiBAJiUAkBAmJ5AgUCYkEFAmJPBAJiUQkBAmJ5AgUCYnoFAmJPCQDMCAIFAmJOCQDMCAIFAmJQCQDMCAIFAmJRBQNuaWwBAmJSAwJiRQJiRgJiSgQCYlMJAQJiSQMFAmJFBQJiRgUCYkoJAMwIAgkBAUcCCQCRAwIFAmJTAAAFAWIJAMwIAgkBAUcCCQCRAwIFAmJTAAEFAWIJAMwIAgkBAUcCCQCRAwIFAmJTAAIFAWIFA25pbAECYlQEAmJVAmJWAmJXAVgEAmJLCQECYU4ABAJiWAkAkQMCBQJiSwUBcQQCYlkJAJEDAgUCYksFAXIEAmJaCQCRAwIFAmJLBQFzBAJiQwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiRAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJjYQkAkQMCBQJiSwUBcAQCY2IICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiWAkArAICCQCsAgICBkFzc2V0IAUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5AwkBAiE9AgUCYlgFAmJWCQACAQIVSW52YWxpZCBhc3NldCBwYXNzZWQuBAJjYwkBAmJ3AQUCYlkEAmNkCQEBRAIFAmNjBQJiQwQCY2UJAQJidwEFAmJaBAJjZgkBAUQCBQJjZQUCYkQEAmNnCQECYnkCBQJjZgUCY2QEAmNoCQEBRwIFAmNnBQFiBAJjaQkBAUQCBQJiVwUBYgQCY2oJAQFEAgUCY2IFAWIEAmNrCQC8AgMFAmNkBQJjaQUCY2oEAmNsCQC8AgMFAmNmBQJjaQUCY2oEAmNtCQEBRwIFAmNrBQJiQwQCY24JAQFHAgUCY2wFAmJEBAJjbwMJAAACBQJiVQIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWAUCY20DCQAAAgUCYlkCBVdBVkVTBQR1bml0CQDZBAEFAmJZCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVgFAmNuAwkAAAIFAmJaAgVXQVZFUwUEdW5pdAkA2QQBBQJiWgkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQUBWAUCYlUJAQJicwYFAmNtBQJjbgUCYlcFAmNoBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNoCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNoBQNuaWwJAJwKCgUCY20FAmNuBQJiWQUCYloFAmNjBQJjZQUCY2IFAmNnBQJjYQUCY28BAmNwCQJiVQJjcQJjcgJjcwJjdAJjdQFYAmN2AmN3BAJiSwkBAmFOAAQCYlgJANkEAQkAkQMCBQJiSwUBcQQCY3gJAJEDAgUCYksFAXIEAmN5CQCRAwIFAmJLBQFzBAJjegkAkQMCBQJiSwUBdgQCY0EJAJEDAgUCYksFAXcEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXUEAmNhCQCRAwIFAmJLBQFwBAJjYggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiWAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiWAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNCCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNzCQDZBAECBVdBVkVTBAJjQwkA2AQBCQELdmFsdWVPckVsc2UCBQJjdQkA2QQBAgVXQVZFUwMDCQECIT0CBQJjeAUCY0IGCQECIT0CBQJjeQUCY0MJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJjYwMFAmN2CQECYncBBQJjeAkAZQIJAQJidwEFAmN4BQJjcgQCY2UDBQJjdgkBAmJ3AQUCY3kJAGUCCQECYncBBQJjeQUCY3QEAmNECQEBRAIFAmNyBQJiTAQCY0UJAQFEAgUCY3QFAmJNBAJjRgkBAmJ5AgUCY0UFAmNEBAJjZAkBAUQCBQJjYwUCYkwEAmNmCQEBRAIFAmNlBQJiTQQCY0cDCQAAAgUCY2IAAAQCY2cFAWUEAmNIBQFlBAJiTwkAdgYJALkCAgUCY0QFAmNFAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBRwIFAmJPBQFiCQEBRwIFAmNEBQJiTAkBAUcCBQJjRQUCYk0JAQJieQIJALcCAgUCY2YFAmNFCQC3AgIFAmNkBQJjRAUCY0gEAmNnCQECYnkCBQJjZgUCY2QEAmNICQC8AgMJAQFPAQkAuAICBQJjZwUCY0YFAWQFAmNnBAJjSQkBAUQCBQJjcQUBYgMDCQECIT0CBQJjZwUBZQkAvwICBQJjSAUCY0kHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNIAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCY0kEAmNqCQEBRAIFAmNiBQFiBAJjSgkAvAIDBQJjRAUCY2cFAWQEAmNLCQC8AgMFAmNFBQFkBQJjZwQCY0wDCQC/AgIFAmNKBQJjRQkAlAoCBQJjSwUCY0UJAJQKAgUCY0QFAmNKBAJjTQgFAmNMAl8xBAJjTggFAmNMAl8yBAJiTwkAvAIDBQJjagUCY04FAmNmCQCXCgUJAQFHAgUCYk8FAWIJAQFHAgUCY00FAmJMCQEBRwIFAmNOBQJiTQUCY2cFAmNIBAJjTwgFAmNHAl8xBAJjUAgFAmNHAl8yBAJjUQgFAmNHAl8zBAJjaAkBAUcCCAUCY0cCXzQFAWIEAmNSCQEBRwIIBQJjRwJfNQUBYgMJAGcCAAAFAmNPCQACAQI2SW52YWxpZCBjYWxjdWxhdGlvbnMuIExQIGNhbGN1bGF0ZWQgaXMgbGVzcyB0aGFuIHplcm8uBAJjUwMJAQEhAQUCY3cAAAUCY08EAmNUCQBlAgUCY3IFAmNQBAJjVQkAZQIFAmN0BQJjUQQCY1YJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCY2gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCBQFYBQJiVQkBAmJoCgUCY1AFAmNRBQJjUwUCY2gFAmNxBQJjUgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY1QFAmNVBQNuaWwJAJ8KDQUCY08FAmNTBQJjaAUCY2MFAmNlBQJjYgUCYlgFAmNhBQJjVgUCY1QFAmNVBQJjcwUCY3UBAmNXAwJjWAJjWQJjYgQCY1oJALwCAwkAdgYJALkCAgUCY1gFAmNZAAAJALYCAQAFAAEAAAUERE9XTgUBZAUCY2IFAmNaAQJkYQMCZGICZGMCZGQEAmRlCQBkAgkBAmJ3AQkBAmFTAQUCYmEFAmRiBAJkZgkAZAIJAQJidwEJAQJhUwEFAmJiBQJkYwQCZGcJAGQCCAkBBXZhbHVlAQkA7AcBBQJhWghxdWFudGl0eQUCZGQEAmNaCQECY1cDCQC2AgEFAmRlCQC2AgEFAmRmCQC2AgEFAmRnBAJkaAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWcFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhZgkApgMBBQJjWgUDbmlsCQCUCgIFAmRoBQJjWgECZGkBAmNaBAJkZQkBAmJ3AQkBAmFTAQUCYmEEAmRmCQECYncBCQECYVMBBQJiYgQCZGcICQEFdmFsdWUBCQDsBwEFAmFaCHF1YW50aXR5BAJkagkBAmNXAwkAtgIBBQJkZQkAtgIBBQJkZgkAtgIBBQJkZwMJAMACAgUCY1oFAmRqBgkBAmFHAQIidXBkYXRlZCBLTHAgbG93ZXIgdGhhbiBjdXJyZW50IEtMcAECZGsBAmRsBAJkbQgFAmRsBmFtb3VudAQCZG4JAGsDCAUCZGwGYW1vdW50CAUCZGwFcHJpY2UFAWIEAmRvAwkAAAIIBQJkbAlvcmRlclR5cGUFA0J1eQkAlAoCBQJkbQkBAS0BBQJkbgkAlAoCCQEBLQEFAmRtBQJkbgQCZGIIBQJkbwJfMQQCZGMIBQJkbwJfMgMDAwkBAmFMAAYJAAACBQJhWQUBbQYJAAACBQJhWQUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQDAwkBAiE9AggIBQJkbAlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJhBgkBAiE9AggIBQJkbAlhc3NldFBhaXIKcHJpY2VBc3NldAUCYmIJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQJhZgkBAmFJAQIPa0xwIGlzIHJlcXVpcmVkCQECYUkBAgtpbnZhbGlkIGtMcAQCZHEJAQJkYQMFAmRiBQJkYwAABAJkcggFAmRxAl8xBAJkcwgFAmRxAl8yBAJkdAkAvwICBQJkcwUCZHAFAmR0AQJkdQECZHYDCQECIT0CCQCQAwEIBQJkdghwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmR3CQEFdmFsdWUBCQCRAwIIBQJkdghwYXltZW50cwAABAJiVgkBBXZhbHVlAQgFAmR3B2Fzc2V0SWQEAmR4CAUCZHcGYW1vdW50BAJjRwkBAmJUBAkA2AQBCAUCZHYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiVgUCZHgIBQJkdgZjYWxsZXIEAmNtCAUCY0cCXzEEAmNuCAUCY0cCXzIEAmNhCQENcGFyc2VJbnRWYWx1ZQEIBQJjRwJfOQQCY28IBQJjRwNfMTADAwkBAmFMAAYJAAACBQJjYQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2EJAJcKBQUCY20FAmNuBQJkeAUCYlYFAmNvAQJkeQMCZHYCY3ECY3cDCQECIT0CCQCQAwEIBQJkdghwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZHoJAQV2YWx1ZQEJAJEDAggFAmR2CHBheW1lbnRzAAAEAmRBCQEFdmFsdWUBCQCRAwIIBQJkdghwYXltZW50cwABBAJkQgkBAmNwCQkA2AQBCAUCZHYNdHJhbnNhY3Rpb25JZAUCY3EIBQJkegZhbW91bnQIBQJkegdhc3NldElkCAUCZEEGYW1vdW50CAUCZEEHYXNzZXRJZAkApQgBCAUCZHYGY2FsbGVyBwUCY3cEAmNhCQENcGFyc2VJbnRWYWx1ZQEIBQJkQgJfOAMDAwkBAmFMAAYJAAACBQJjYQUBbAYJAAACBQJjYQUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2EFAmRCAQJkQwECZEQEAmRFCQD8BwQFAmFKAgRlbWl0CQDMCAIFAmREBQNuaWwFA25pbAMJAAACBQJkRQUCZEUEAmRGBAJkRwUCZEUDCQABAgUCZEcCB0FkZHJlc3MEAmRIBQJkRwkA/AcEBQJkSAIEZW1pdAkAzAgCBQJkRAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZEYFAmRGBQJkRAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZEkBAmREBAJkSgkAawMFAmREBQJhZQUBYgkAlAoCCQBlAgUCZEQFAmRKBQJkSgECZEsEAmRMAmRNAVgBWQQCZE4JAAACBQFZBQR1bml0BAJkTwkBAmJ3AQkBAmFTAQUCYmEEAmRQCQECYncBCQECYVMBBQJiYgQCZFEDCQAAAgUCZE0FAmJhBgMJAAACBQJkTQUCYmIHCQECYUcBAg1pbnZhbGlkIGFzc2V0BAJkUgMFAmROCQCUCgIFAmRPBQJkUAMFAmRRCQCUCgIJAGUCBQJkTwUCZEwFAmRQCQCUCgIFAmRPCQBlAgUCZFAFAmRMBAJkUwgFAmRSAl8xBAJkVAgFAmRSAl8yBAJkVQMFAmRRCQCUCgIFAmRMAAAJAJQKAgAABQJkTAQCZFYIBQJkVQJfMQQCZFcIBQJkVQJfMgQCZG0ICQECZEkBBQJkVgJfMQQCZG4ICQECZEkBBQJkVwJfMQQCZFgJAQJkSQEFAmRMBAJkWQgFAmRYAl8xBAJkSggFAmRYAl8yBAJkWgkAZAIFAmRTBQJkbQQCZWEJAGQCBQJkVAUCZG4EAmViCQECYnkCCQEBRAIFAmVhBQJiZAkBAUQCBQJkWgUCYmMEAmVjCQEBRwIFAmViBQFiBAJlZAMFAmRRBQJkUwUCZFQEAmVlCQC2AgEFAmVkBAJlZgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmFaCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmFaAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZWcDCQC/AgIFAmVmBQFmBgkBAmFHAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJlZwUCZWcEAmVoCQC2AgEFAmRZBAJlaQkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlZgkAuAICCQEKc3FydEJpZ0ludAQJALcCAgUBZAkAugICCQC5AgIFAmVoBQFkBQJlZQASABIFBERPV04FAWQFAWQFA25pbAQCY1YDBQJkTgUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmVjCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVjCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgkApQgBCQEFdmFsdWUBBQFYCQDYBAEJAQV2YWx1ZQEFAVkJAQJiaAoFAmRWBQJkVwUCZWkFAmVjAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZWoJAQJieQIJAQFEAgUCZFQFAmJkCQEBRAIFAmRTBQJiYwQCZWsJAQFHAgUCZWoFAWIEAmVsBAJlbQMFAmRRCQCUCgIFAmRWBQJkUwkAlAoCBQJkVwUCZFQEAmRECAUCZW0CXzEEAmVuCAUCZW0CXzIEAmVvCQCgAwEJALwCAwUCZWYJALYCAQkAaQIFAmREAAIJALYCAQUCZW4JAGsDCQBlAgUCZWkFAmVvBQFiBQJlbwkAlwoFBQJlaQUCY1YFAmRKBQJlbAUCZFEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVwBQJlcQJkWQJkTQFYAVkEAmROCQAAAgUBWQUEdW5pdAQCZXIJAMwIAgMJAAACBQJkTQUCYVoGCQECYUcBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZXIFAmVyBAJlcwMJAAACBQJlcQUCYmEGAwkAAAIFAmVxBQJiYgcJAQJhRwECDWludmFsaWQgYXNzZXQEAmV0AwUCZXMJALYCAQkBAmJ3AQkBAmFTAQUCYmEJALYCAQkBAmJ3AQkBAmFTAQUCYmIEAmV1CQECYncBCQECYVMBBQJiYQQCZXYJAQJidwEJAQJhUwEFAmJiBAJldwMFAmVzBQJldQUCZXYEAmV4CQC2AgEFAmV3BAJlZgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmFaCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmFaAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZXkJALYCAQUCZFkEAmV6CQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmV0CQC4AgIFAWQJAHYGCQC4AgIFAWQJALoCAgkAuQICBQJleQUBZAUCZWYAEgUBaAAAABIFBERPV04FAWQFA25pbAQCZUEJAQJkSQEFAmV6BAJlQggFAmVBAl8xBAJkSggFAmVBAl8yBAJlQwMFAmVzCQCWCgQFAmVCAAAJAGUCBQJldQUCZXoFAmV2CQCWCgQAAAUCZUIFAmV1CQBlAgUCZXYFAmV6BAJlRAgFAmVDAl8xBAJlRQgFAmVDAl8yBAJlRggFAmVDAl8zBAJlRwgFAmVDAl80BAJlYgkBAmJ5AgkBAUQCBQJlRwUCYmQJAQFEAgUCZUYFAmJjBAJlYwkBAUcCBQJlYgUBYgQCY1YDBQJkTgUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgkApQgBCQEFdmFsdWUBBQFYCQDYBAEJAQV2YWx1ZQEFAVkJAQJicwYFAmVEBQJlRQUCZFkFAmVjBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmVjCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVjBQNuaWwEAmVqCQECYnkCCQEBRAIFAmV2BQJiZAkBAUQCBQJldQUCYmMEAmVrCQEBRwIFAmVqBQFiBAJlbAQCZUgJAGgCCQCgAwEJALwCAwUCZXQFAmV5BQJlZgACCQBrAwkAZQIFAmVCBQJlSAUBYgUCZUgJAJcKBQUCZUIFAmNWBQJkSgUCZWwFAmVzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlSQAEAmRHCQCiCAEJAQFRAAMJAAECBQJkRwIGU3RyaW5nBAJlSgUCZEcJANkEAQUCZUoDCQABAgUCZEcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZUsABAJkRwkAoggBCQEBUgADCQABAgUCZEcCBlN0cmluZwQCZUoFAmRHCQDZBAEFAmVKAwkAAQIFAmRHAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVMAQJkdgQCZEcJAQJlSQADCQABAgUCZEcCCkJ5dGVWZWN0b3IEAmVNBQJkRwkAAAIIBQJkdg9jYWxsZXJQdWJsaWNLZXkFAmVNAwkAAQIFAmRHAgRVbml0CQAAAggFAmR2BmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJlTgECZHYEAmVPCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRHCQECZUkAAwkAAQIFAmRHAgpCeXRlVmVjdG9yBAJlTQUCZEcDCQAAAggFAmR2D2NhbGxlclB1YmxpY0tleQUCZU0GBQJlTwMJAAECBQJkRwIEVW5pdAMJAAACCAUCZHYGY2FsbGVyBQR0aGlzBgUCZU8JAAIBAgtNYXRjaCBlcnJvchsCZHYBCnNldE1hbmFnZXIBAmVQBAJlUQkBAmVOAQUCZHYDCQAAAgUCZVEFAmVRBAJlUgkA2QQBBQJlUAMJAAACBQJlUgUCZVIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQJlUAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR2AQ5jb25maXJtTWFuYWdlcgAEAmVTCQECZUsABAJlVAMJAQlpc0RlZmluZWQBBQJlUwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZVQFAmVUBAJlVQMJAAACCAUCZHYPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlUwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZVUFAmVVCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAkA2AQBCQEFdmFsdWUBBQJlUwkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkdgEDcHV0AgJjcQJlVgMJAGYCAAAFAmNxCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRCCQECZHkDBQJkdgUCY3EGBAJjUwgFAmRCAl8yBAJiWAgFAmRCAl83BAJjbwgFAmRCAl85BAJjVAgFAmRCA18xMAQCY1UIBQJkQgNfMTEEAmVXCAUCZEIDXzEyBAJlWAgFAmRCA18xMwQCZEUJAPwHBAUCYUoCBGVtaXQJAMwIAgUCY1MFA25pbAUDbmlsAwkAAAIFAmRFBQJkRQQCZEYEAmRHBQJkRQMJAAECBQJkRwIHQWRkcmVzcwQCZEgFAmRHCQD8BwQFAmRIAgRlbWl0CQDMCAIFAmNTBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkRgUCZEYEAmVZAwkAZgIFAmNUAAAJAPwHBAUCYmcCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJlVwUCY1QFA25pbAUDbmlsAwkAAAIFAmVZBQJlWQQCZVoDCQBmAgUCY1UAAAkA/AcEBQJiZwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmVYBQJjVQUDbmlsBQNuaWwDCQAAAgUCZVoFAmVaBAJmYQMFAmVWBAJmYgkA/AcEBQJiZgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlgFAmNTBQNuaWwDCQAAAgUCZmIFAmZiBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmR2BmNhbGxlcgUCY1MFAmJYBQNuaWwEAmZjCQECZGEDAAAAAAAABAJmZAgFAmZjAl8xBAJjWggFAmZjAl8yBAJmZQkBAmRpAQUCY1oDCQAAAgUCZmUFAmZlCQDOCAIJAM4IAgUCY28FAmZhBQJmZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkdgEKcHV0Rm9yRnJlZQECZmYDCQBmAgAABQJmZgkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJkQgkBAmR5AwUCZHYFAmZmBwQCY28IBQJkQgJfOQQCZmcJAQJkYQMAAAAAAAAEAmZkCAUCZmcCXzEEAmNaCAUCZmcCXzIEAmZlCQECZGkBBQJjWgMJAAACBQJmZQUCZmUJAM4IAgUCY28FAmZkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR2AQlwdXRPbmVUa24CAmZoAmZpBAJmagoAAmZrCQD8BwQFAmFKAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZmsCB0Jvb2xlYW4FAmZrCQACAQkArAICCQADAQUCZmsCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZsAwMDCQECYUwABgkAAAIFAmFZBQFsBgkAAAIFAmFZBQFuBgUCZmoEAmVyCQDMCAIDAwkBASEBBQJmbAYJAQJlTAEFAmR2BgkBAmFHAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZHYIcGF5bWVudHMAAQYJAQJhRwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVyBQJlcgQCZm0JAJEDAggFAmR2CHBheW1lbnRzAAAEAmRNCAUCZm0HYXNzZXRJZAQCZEwIBQJmbQZhbW91bnQEAVgIBQJkdgZjYWxsZXIEAVkIBQJkdg10cmFuc2FjdGlvbklkBAJmbgkBAmRLBAUCZEwFAmRNBQFYBQFZAwkAAAIFAmZuBQJmbgQCZFEIBQJmbgJfNQQCZm8IBQJmbgJfNAQCZEoIBQJmbgJfMwQCY1YIBQJmbgJfMgQCZnAIBQJmbgJfMQQCZnEDAwkAZgIFAmZoAAAJAGYCBQJmaAUCZnAHCQECYUcBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZoBQNuaWwCAAUCZnAEAmRFCQECZEMBBQJmcQMJAAACBQJkRQUCZEUEAmZhAwUCZmkEAmZyCQD8BwQFAmJmAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhWgUCZnEFA25pbAMJAAACBQJmcgUCZnIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZHYGY2FsbGVyBQJmcQUCYVoFA25pbAQCZnMDCQBmAgUCZEoAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhSwUCZEoFAmRNBQNuaWwFA25pbAQCZnQDCQAAAgUEdGhpcwUCYUsJAJQKAgAAAAADBQJkUQkAlAoCCQEBLQEFAmRKAAAJAJQKAgAACQEBLQEFAmRKBAJkYggFAmZ0Al8xBAJkYwgFAmZ0Al8yBAJmdQkBAmRhAwUCZGIFAmRjAAAEAmZkCAUCZnUCXzEEAmNaCAUCZnUCXzIEAmZlCQECZGkBBQJjWgMJAAACBQJmZQUCZmUJAJQKAgkAzggCCQDOCAIJAM4IAgUCY1YFAmZhBQJmcwUCZmQFAmZxCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR2ARFwdXRPbmVUa25SRUFET05MWQICZE0CZEwEAmZ2CQECZEsEBQJkTAkBAmFRAQUCZE0FBHVuaXQFBHVuaXQEAmZwCAUCZnYCXzEEAmNWCAUCZnYCXzIEAmRKCAUCZnYCXzMEAmZvCAUCZnYCXzQEAmRRCAUCZnYCXzUJAJQKAgUDbmlsCQCVCgMFAmZwBQJkSgUCZm8CZHYBCWdldE9uZVRrbgICZncCZmgEAmZqCgACZmsJAPwHBAUCYUoCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmawIHQm9vbGVhbgUCZmsJAAIBCQCsAgIJAAMBBQJmawIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZngDAwkBAmFMAAYJAAACBQJhWQUBbgYFAmZqBAJlcgkAzAgCAwMJAQEhAQUCZngGCQECZUwBBQJkdgYJAQJhRwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmR2CHBheW1lbnRzAAEGCQECYUcBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlcgUCZXIEAmVxCQECYVEBBQJmdwQCZm0JAJEDAggFAmR2CHBheW1lbnRzAAAEAmRNCAUCZm0HYXNzZXRJZAQCZFkIBQJmbQZhbW91bnQEAVgIBQJkdgZjYWxsZXIEAVkIBQJkdg10cmFuc2FjdGlvbklkBAJmeQkBAmVwBQUCZXEFAmRZBQJkTQUBWAUBWQMJAAACBQJmeQUCZnkEAmVzCAUCZnkCXzUEAmZvCAUCZnkCXzQEAmRKCAUCZnkCXzMEAmNWCAUCZnkCXzIEAmZ6CAUCZnkCXzEEAmREAwMJAGYCBQJmaAAACQBmAgUCZmgFAmZ6BwkBAmFHAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmaAUDbmlsAgAFAmZ6BAJmQQkA/AcEBQJhSgIEYnVybgkAzAgCBQJkWQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkTQUCZFkFA25pbAMJAAACBQJmQQUCZkEEAmZCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVgFAmREBQJlcQUDbmlsBAJmcwMJAGYCBQJkSgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFLBQJkSgUCZXEFA25pbAUDbmlsBAJmQwQCZkQDCQAAAgUEdGhpcwUCYUsAAAUCZEoDBQJlcwkAlAoCCQEBLQEJAGQCBQJkRAUCZkQAAAkAlAoCAAAJAQEtAQkAZAIFAmREBQJmRAQCZGIIBQJmQwJfMQQCZGMIBQJmQwJfMgQCZkUJAQJkYQMFAmRiBQJkYwAABAJmZAgFAmZFAl8xBAJjWggFAmZFAl8yBAJmZQkBAmRpAQUCY1oDCQAAAgUCZmUFAmZlCQCUCgIJAM4IAgkAzggCCQDOCAIFAmNWBQJmQgUCZnMFAmZkBQJkRAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkdgERZ2V0T25lVGtuUkVBRE9OTFkCAmVxAmRZBAJmRgkBAmVwBQkBAmFRAQUCZXEFAmRZBQJhWgUEdW5pdAUEdW5pdAQCZnoIBQJmRgJfMQQCY1YIBQJmRgJfMgQCZEoIBQJmRgJfMwQCZm8IBQJmRgJfNAQCZXMIBQJmRgJfNQkAlAoCBQNuaWwJAJUKAwUCZnoFAmRKBQJmbwJkdgETdW5zdGFrZUFuZEdldE9uZVRrbgMCZkcCZncCZmgEAmZqCgACZmsJAPwHBAUCYUoCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmawIHQm9vbGVhbgUCZmsJAAIBCQCsAgIJAAMBBQJmawIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZngDAwkBAmFMAAYJAAACBQJhWQUBbgYFAmZqBAJlcgkAzAgCAwMJAQEhAQUCZngGCQECZUwBBQJkdgYJAQJhRwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmR2CHBheW1lbnRzAAAGCQECYUcBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlcgUCZXIEAmVxCQECYVEBBQJmdwQBWAgFAmR2BmNhbGxlcgQBWQgFAmR2DXRyYW5zYWN0aW9uSWQEAmZICQD8BwQFAmJmAgd1bnN0YWtlCQDMCAIJANgEAQUCYVoJAMwIAgUCZkcFA25pbAUDbmlsAwkAAAIFAmZIBQJmSAQCZkkJAQJlcAUFAmVxBQJmRwUCYVoFAVgFAVkDCQAAAgUCZkkFAmZJBAJlcwgFAmZJAl81BAJmbwgFAmZJAl80BAJkSggFAmZJAl8zBAJjVggFAmZJAl8yBAJmeggFAmZJAl8xBAJkRAMDCQBmAgUCZmgAAAkAZgIFAmZoBQJmegcJAQJhRwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmgFA25pbAIABQJmegQCZkEJAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZkcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVoFAmZHBQNuaWwDCQAAAgUCZkEFAmZBBAJmQgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZHYGY2FsbGVyBQJkRAUCZXEFA25pbAQCZnMDCQBmAgUCZEoAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhSwUCZEoFAmVxBQNuaWwFA25pbAQCZkoEAmZEAwkAAAIFBHRoaXMFAmFLAAAFAmRKAwUCZXMJAJQKAgkBAS0BCQBkAgUCZEQFAmZEAAAJAJQKAgAACQEBLQEJAGQCBQJkRAUCZkQEAmRiCAUCZkoCXzEEAmRjCAUCZkoCXzIEAmZLCQECZGEDBQJkYgUCZGMAAAQCZmQIBQJmSwJfMQQCY1oIBQJmSwJfMgQCZmUJAQJkaQEFAmNaAwkAAAIFAmZlBQJmZQkAlAoCCQDOCAIJAM4IAgkAzggCBQJjVgUCZkIFAmZzBQJmZAUCZEQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHYBA2dldAAEAmNHCQECZHUBBQJkdgQCZkwIBQJjRwJfMQQCY24IBQJjRwJfMgQCZHgIBQJjRwJfMwQCYlYIBQJjRwJfNAQCY28IBQJjRwJfNQQCZk0JAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZHgFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlYFAmR4BQNuaWwDCQAAAgUCZk0FAmZNBAJmTgkBAmRhAwkBAS0BBQJmTAkBAS0BBQJjbgAABAJmZAgFAmZOAl8xBAJjWggFAmZOAl8yBAJmZQkBAmRpAQUCY1oDCQAAAgUCZmUFAmZlCQDOCAIFAmNvBQJmZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkdgEJZ2V0Tm9MZXNzAgJmTwJmUAQCY0cJAQJkdQEFAmR2BAJjbQgFAmNHAl8xBAJjbggFAmNHAl8yBAJkeAgFAmNHAl8zBAJiVggFAmNHAl80BAJjbwgFAmNHAl81AwkAZgIFAmZPBQJjbQkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY20CAyA8IAkApAMBBQJmTwMJAGYCBQJmUAUCY24JAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjbgIDIDwgCQCkAwEFAmZQBAJmTQkA/AcEBQJhSgIEYnVybgkAzAgCBQJkeAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVgUCZHgFA25pbAMJAAACBQJmTQUCZk0EAmZRCQECZGEDCQEBLQEFAmNtCQEBLQEFAmNuAAAEAmZkCAUCZlECXzEEAmNaCAUCZlECXzIEAmZlCQECZGkBBQJjWgMJAAACBQJmZQUCZmUJAM4IAgUCY28FAmZkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR2AQ11bnN0YWtlQW5kR2V0AQJkRAQCZlIDCQECIT0CCQCQAwEIBQJkdghwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmUgUCZlIEAmJLCQECYU4ABAJiWAkA2QQBCQCRAwIFAmJLBQFxBAJmSAkA/AcEBQJiZgIHdW5zdGFrZQkAzAgCCQDYBAEFAmJYCQDMCAIFAmREBQNuaWwFA25pbAMJAAACBQJmSAUCZkgEAmNHCQECYlQECQDYBAEIBQJkdg10cmFuc2FjdGlvbklkCQDYBAEFAmJYBQJkRAgFAmR2BmNhbGxlcgQCY20IBQJjRwJfMQQCY24IBQJjRwJfMgQCY2EJAQ1wYXJzZUludFZhbHVlAQgFAmNHAl85BAJjbwgFAmNHA18xMAQCZlMDAwkBAmFMAAYJAAACBQJjYQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2EGAwkAAAIFAmZTBQJmUwQCZk0JAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZEQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlgFAmREBQNuaWwDCQAAAgUCZk0FAmZNBAJmVAkBAmRhAwkBAS0BBQJjbQkBAS0BBQJjbgAABAJmZAgFAmZUAl8xBAJjWggFAmZUAl8yBAJmZQkBAmRpAQUCY1oDCQAAAgUCZmUFAmZlCQDOCAIFAmNvBQJmZAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkdgETdW5zdGFrZUFuZEdldE5vTGVzcwMCZkcCZlUCZlAEAmZ4AwkBAmFMAAYJAAACBQJhWQUBbgQCZXIJAMwIAgMJAQEhAQUCZngGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZHYIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlcgUCZXIEAmZICQD8BwQFAmJmAgd1bnN0YWtlCQDMCAIJANgEAQUCYVoJAMwIAgUCZkcFA25pbAUDbmlsAwkAAAIFAmZIBQJmSAQCY0cJAQJiVAQJANgEAQgFAmR2DXRyYW5zYWN0aW9uSWQJANgEAQUCYVoFAmZHCAUCZHYGY2FsbGVyBAJjbQgFAmNHAl8xBAJjbggFAmNHAl8yBAJjbwgFAmNHA18xMAQCZlYJAMwIAgMJAGcCBQJjbQUCZlUGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlUFA25pbAIACQDMCAIDCQBnAgUCY24FAmZQBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlAFA25pbAIABQNuaWwDCQAAAgUCZlYFAmZWBAJmTQkA/AcEBQJhSgIEYnVybgkAzAgCBQJmRwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhWgUCZkcFA25pbAMJAAACBQJmTQUCZk0EAmZXCQECZGEDCQEBLQEFAmNtCQEBLQEFAmNuAAAEAmZkCAUCZlcCXzEEAmNaCAUCZlcCXzIEAmZlCQECZGkBBQJjWgMJAAACBQJmZQUCZmUJAM4IAgUCY28FAmZkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR2AQhhY3RpdmF0ZQICZlgCZlkDCQECIT0CCQClCAEIBQJkdgZjYWxsZXIJAKUIAQUCYUoJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQJmWAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWIABQJmWQUDbmlsAgdzdWNjZXNzAmR2AQpyZWZyZXNoS0xwAAQCZloJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYWcAAAQCZ2EDCQBnAgkAZQIFBmhlaWdodAUCZloFAmFqBQR1bml0CQECYUcBCQC5CQIJAMwIAgkApAMBBQJhagkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCZ2EFAmdhBAJkcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWYCATAJAQJhSQECC2ludmFsaWQga0xwBAJnYgkBAmRhAwAAAAAAAAQCZ2MIBQJnYgJfMQQCY1oIBQJnYgJfMgQCZGgDCQECIT0CBQJkcAUCY1oFAmdjCQECYUcBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZGgJAKYDAQUCY1oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHYBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFOAAJkdgEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYngJAJQKAgUDbmlsCQECYncBBQJieAJkdgEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYkUCYkYCYkoEAmJTCQECYkkDBQJiRQUCYkYFAmJKCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCYlMAAAkAzAgCCQCmAwEJAJEDAgUCYlMAAQkAzAgCCQCmAwEJAJEDAgUCYlMAAgUDbmlsAmR2ARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRQFGCQCUCgIFA25pbAkApgMBCQEBRAIFAUUFAUYCZHYBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUgBSQkAlAoCBQNuaWwJAQFHAgkApwMBBQFIBQFJAmR2AR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJ6AmJBCQCUCgIFA25pbAkApgMBCQECYnkCCQCnAwEFAmJ6CQCnAwEFAmJBAmR2ASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCYlUCY3ECY3ICY3MCY3QCY3UBWAJjdgJjdwkAlAoCBQNuaWwJAQJjcAkFAmJVBQJjcQUCY3IFAmNzBQJjdAUCY3UFAVgFAmN2BQJjdwJkdgEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmJVAmJWAmJXAVgEAmNHCQECYlQEBQJiVQUCYlYFAmJXCQERQGV4dHJOYXRpdmUoMTA2MikBBQFYCQCUCgIFA25pbAkAnAoKCAUCY0cCXzEIBQJjRwJfMggFAmNHAl8zCAUCY0cCXzQIBQJjRwJfNQgFAmNHAl82CAUCY0cCXzcJAKYDAQgFAmNHAl84CAUCY0cCXzkIBQJjRwNfMTACZHYBDXN0YXRzUkVBRE9OTFkABAJiSwkBAmFOAAQCYlgJANkEAQkAkQMCBQJiSwUBcQQCZ2QJAJEDAgUCYksFAXIEAmdlCQCRAwIFAmJLBQFzBAJjegkAkQMCBQJiSwUBdgQCY0EJAJEDAgUCYksFAXcEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXUEAmdmCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJYCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJYAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ2cJAQJidwEFAmdkBAJnaAkBAmJ3AQUCZ2UEAmdpAwkAAAIFAmdmAAAJAMwIAgUBZQkAzAgCBQFlCQDMCAIFAWUFA25pbAkBAmJJAwUCZ2cFAmdoBQJnZgQCY2gAAAQCZ2oJAQFHAgkAkQMCBQJnaQABBQFiBAJnawkBAUcCCQCRAwIFAmdpAAIFAWIEAmdsCQEFdmFsdWUBCQCaCAIFAmFKCQECYXUBCQClCAEFBHRoaXMJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJnZwkAzAgCCQCkAwEFAmdoCQDMCAIJAKQDAQUCZ2YJAMwIAgkApAMBBQJjaAkAzAgCCQCkAwEFAmdqCQDMCAIJAKQDAQUCZ2sJAMwIAgkApAMBBQJnbAUDbmlsBQFqAmR2ASBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQECY3IEAmJLCQECYU4ABAJiWAkA2QQBCQCRAwIFAmJLBQFxBAJjeAkAkQMCBQJiSwUBcgQCYlkJANkEAQUCY3gEAmN5CQCRAwIFAmJLBQFzBAJiWgkA2QQBBQJjeQQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCY2EJAJEDAgUCYksFAXAEAmdmCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJYCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJYAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ2cJAQJidwEFAmN4BAJnaAkBAmJ3AQUCY3kEAmJHCQEBRAIFAmdnBQJiTAQCYkgJAQFEAgUCZ2gFAmJNBAJjZwMJAAACBQJnZgAABQFlCQECYnkCBQJiSAUCYkcEAmNECQEBRAIFAmNyBQJiTAQCY0UJALwCAwUCY0QFAmNnBQFkBAJjdAkBAUcCBQJjRQUCYk0EAmRCCQECY3AJAgAAoMIeBQJjcgUCYlkFAmN0BQJiWgIABgcEAmNPCAUCZEICXzEEAmdtCAUCZEICXzMEAmNjCAUCZEICXzQEAmNlCAUCZEICXzUEAmNiCAUCZEICXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNPCQDMCAIJAKQDAQkBAUcCBQJjZwUBYgkAzAgCCQCkAwEFAmNjCQDMCAIJAKQDAQUCY2UJAMwIAgkApAMBBQJjYgkAzAgCBQJjYQkAzAgCCQCkAwEFAmNyCQDMCAIJAKQDAQUCY3QFA25pbAUBagJkdgEfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQECY3QEAmJLCQECYU4ABAJiWAkA2QQBCQCRAwIFAmJLBQFxBAJjeAkAkQMCBQJiSwUBcgQCYlkJANkEAQUCY3gEAmN5CQCRAwIFAmJLBQFzBAJiWgkA2QQBBQJjeQQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCY2EJAJEDAgUCYksFAXAEAmdmCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJYCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJYAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ24JAQJidwEFAmN4BAJnbwkBAmJ3AQUCY3kEAmdwCQEBRAIFAmduBQJiTAQCZ3EJAQFEAgUCZ28FAmJNBAJjZwMJAAACBQJnZgAABQFlCQECYnkCBQJncQUCZ3AEAmNFCQEBRAIFAmN0BQJiTQQCY0QJALwCAwUCY0UFAWQFAmNnBAJjcgkBAUcCBQJjRAUCYkwEAmRCCQECY3AJAgAAoMIeBQJjcgUCYlkFAmN0BQJiWgIABgcEAmNPCAUCZEICXzEEAmdtCAUCZEICXzMEAmNjCAUCZEICXzQEAmNlCAUCZEICXzUEAmNiCAUCZEICXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNPCQDMCAIJAKQDAQkBAUcCBQJjZwUBYgkAzAgCCQCkAwEFAmNjCQDMCAIJAKQDAQUCY2UJAMwIAgkApAMBBQJjYgkAzAgCBQJjYQkAzAgCCQCkAwEFAmNyCQDMCAIJAKQDAQUCY3QFA25pbAUBagJkdgETZXZhbHVhdGVHZXRSRUFET05MWQICZ3ICZ3MEAmNHCQECYlQEAgAFAmdyBQJncwUEdGhpcwQCY20IBQJjRwJfMQQCY24IBQJjRwJfMgQCY2MIBQJjRwJfNQQCY2UIBQJjRwJfNgQCY2IIBQJjRwJfNwQCY2gIBQJjRwJfOAQCY2EJAQ1wYXJzZUludFZhbHVlAQgFAmNHAl85CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY20JAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNjCQDMCAIJAKQDAQUCY2UJAMwIAgkApAMBBQJjYgkAzAgCCQCmAwEFAmNoCQDMCAIJAKQDAQUCY2EFA25pbAUBagECZ3QBAmd1AAQCZ3YEAmRHCQECZUkAAwkAAQIFAmRHAgpCeXRlVmVjdG9yBAJlTQUCZEcFAmVNAwkAAQIFAmRHAgRVbml0CAUCZ3QPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmRHBQJndAMJAAECBQJkRwIFT3JkZXIEAmRsBQJkRwQCZ3cJAQJhTQAEAmF6CQECZGsBBQJkbAQCYUEJAPQDAwgFAmRsCWJvZHlCeXRlcwkAkQMCCAUCZGwGcHJvb2ZzAAAIBQJkbA9zZW5kZXJQdWJsaWNLZXkEAmFCCQD0AwMIBQJkbAlib2R5Qnl0ZXMJAJEDAggFAmRsBnByb29mcwABBQJndwMDAwUCYXoFAmFBBwUCYUIHBgkBAmF5AwUCYXoFAmFBBQJhQgMJAAECBQJkRwIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmVKBQJkRwQCZ3gJAPYDAQkBBXZhbHVlAQgFAmVKBnNjcmlwdAQCZ3kJANsEAQkBBXZhbHVlAQkAnQgCBQJhSgkBAmF3AAQCZ3oJAPEHAQUEdGhpcwMDCQAAAgUCZ3kFAmd4CQECIT0CBQJnegUCZ3gHBgkA9AMDCAUCZ3QJYm9keUJ5dGVzCQCRAwIIBQJndAZwcm9vZnMAAAUCZ3YJAPQDAwgFAmd0CWJvZHlCeXRlcwkAkQMCCAUCZ3QGcHJvb2ZzAAAFAmd2pTn++w==", "chainId": 84, "height": 2348402, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DbqnAXNvE9fFVnERWSKM5MEXPr3rcmwkvBjwCZfjdKMj Next: FtGde27MmRTpR7VfRxhuBMTQ7otN2Li1wNR5tqnMjAU Diff:
OldNewDifferences
389389 }
390390
391391
392-func di (dj) = {
393- let dk = dj.amount
394- let dl = fraction(dj.amount, dj.price, b)
395- let dm = if ((dj.orderType == Buy))
396- then $Tuple2(dk, -(dl))
397- else $Tuple2(-(dk), dl)
398- let db = dm._1
399- let dc = dm._2
392+func di (cZ) = {
393+ let de = bw(aS(ba))
394+ let df = bw(aS(bb))
395+ let dg = value(assetInfo(aZ)).quantity
396+ let dj = cW(toBigInt(de), toBigInt(df), toBigInt(dg))
397+ if ((cZ >= dj))
398+ then true
399+ else aG("updated KLp lower than current KLp")
400+ }
401+
402+
403+func dk (dl) = {
404+ let dm = dl.amount
405+ let dn = fraction(dl.amount, dl.price, b)
406+ let do = if ((dl.orderType == Buy))
407+ then $Tuple2(dm, -(dn))
408+ else $Tuple2(-(dm), dn)
409+ let db = do._1
410+ let dc = do._2
400411 if (if (if (aL())
401412 then true
402413 else (aY == m))
403414 then true
404415 else (aY == n))
405416 then throw("Exchange operations disabled")
406- else if (if ((dj.assetPair.amountAsset != ba))
417+ else if (if ((dl.assetPair.amountAsset != ba))
407418 then true
408- else (dj.assetPair.priceAsset != bb))
419+ else (dl.assetPair.priceAsset != bb))
409420 then throw("Wrong order assets.")
410421 else {
411- let dn = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, af), aI("kLp is required"))), aI("invalid kLp"))
412- let do = da(db, dc, 0)
413- let dp = do._1
414- let dq = do._2
415- let dr = (dq > dn)
416- dr
422+ let dp = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, af), aI("kLp is required"))), aI("invalid kLp"))
423+ let dq = da(db, dc, 0)
424+ let dr = dq._1
425+ let ds = dq._2
426+ let dt = (ds > dp)
427+ dt
417428 }
418429 }
419430
420431
421-func ds (dt) = if ((size(dt.payments) != 1))
432+func du (dv) = if ((size(dv.payments) != 1))
422433 then throw("exactly 1 payment is expected")
423434 else {
424- let du = value(dt.payments[0])
425- let bV = value(du.assetId)
426- let dv = du.amount
427- let cG = bT(toBase58String(dt.transactionId), toBase58String(bV), dv, dt.caller)
435+ let dw = value(dv.payments[0])
436+ let bV = value(dw.assetId)
437+ let dx = dw.amount
438+ let cG = bT(toBase58String(dv.transactionId), toBase58String(bV), dx, dv.caller)
428439 let cm = cG._1
429440 let cn = cG._2
430441 let ca = parseIntValue(cG._9)
433444 then true
434445 else (ca == n))
435446 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
436- else $Tuple5(cm, cn, dv, bV, co)
447+ else $Tuple5(cm, cn, dx, bV, co)
437448 }
438449
439450
440-func dw (dt,cq,cw) = if ((size(dt.payments) != 2))
451+func dy (dv,cq,cw) = if ((size(dv.payments) != 2))
441452 then throw("exactly 2 payments are expected")
442453 else {
443- let dx = value(dt.payments[0])
444- let dy = value(dt.payments[1])
445- let dz = cp(toBase58String(dt.transactionId), cq, dx.amount, dx.assetId, dy.amount, dy.assetId, toString(dt.caller), false, cw)
446- let ca = parseIntValue(dz._8)
454+ let dz = value(dv.payments[0])
455+ let dA = value(dv.payments[1])
456+ let dB = cp(toBase58String(dv.transactionId), cq, dz.amount, dz.assetId, dA.amount, dA.assetId, toString(dv.caller), false, cw)
457+ let ca = parseIntValue(dB._8)
447458 if (if (if (aL())
448459 then true
449460 else (ca == l))
450461 then true
451462 else (ca == n))
452463 then throw(("Put operation is blocked by admin. Status = " + toString(ca)))
453- else dz
464+ else dB
454465 }
455466
456467
457-func dA (dB) = {
458- let dC = invoke(aJ, "emit", [dB], nil)
459- if ((dC == dC))
468+func dC (dD) = {
469+ let dE = invoke(aJ, "emit", [dD], nil)
470+ if ((dE == dE))
460471 then {
461- let dD = {
462- let dE = dC
463- if ($isInstanceOf(dE, "Address"))
472+ let dF = {
473+ let dG = dE
474+ if ($isInstanceOf(dG, "Address"))
464475 then {
465- let dF = dE
466- invoke(dF, "emit", [dB], nil)
476+ let dH = dG
477+ invoke(dH, "emit", [dD], nil)
467478 }
468479 else unit
469480 }
470- if ((dD == dD))
471- then dB
481+ if ((dF == dF))
482+ then dD
472483 else throw("Strict value is not equal to itself.")
473484 }
474485 else throw("Strict value is not equal to itself.")
475486 }
476487
477488
478-func dG (dB) = {
479- let dH = fraction(dB, ae, b)
480- $Tuple2((dB - dH), dH)
489+func dI (dD) = {
490+ let dJ = fraction(dD, ae, b)
491+ $Tuple2((dD - dJ), dJ)
481492 }
482493
483494
484-func dI (dJ,dK,X,Y) = {
485- let dL = (Y == unit)
486- let dM = bw(aS(ba))
487- let dN = bw(aS(bb))
488- let dO = if ((dK == ba))
495+func dK (dL,dM,X,Y) = {
496+ let dN = (Y == unit)
497+ let dO = bw(aS(ba))
498+ let dP = bw(aS(bb))
499+ let dQ = if ((dM == ba))
489500 then true
490- else if ((dK == bb))
501+ else if ((dM == bb))
491502 then false
492503 else aG("invalid asset")
493- let dP = if (dL)
494- then $Tuple2(dM, dN)
495- else if (dO)
496- then $Tuple2((dM - dJ), dN)
497- else $Tuple2(dM, (dN - dJ))
498- let dQ = dP._1
499- let dR = dP._2
500- let dS = if (dO)
501- then $Tuple2(dJ, 0)
502- else $Tuple2(0, dJ)
503- let dT = dS._1
504- let dU = dS._2
505- let dk = dG(dT)._1
506- let dl = dG(dU)._1
507- let dV = dG(dJ)
508- let dW = dV._1
509- let dH = dV._2
510- let dX = (dQ + dk)
511- let dY = (dR + dl)
512- let dZ = by(D(dY, bd), D(dX, bc))
513- let ea = G(dZ, b)
514- let eb = if (dO)
515- then dQ
516- else dR
517- let ec = toBigInt(eb)
518- let ed = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
519- let ee = if ((ed > f))
504+ let dR = if (dN)
505+ then $Tuple2(dO, dP)
506+ else if (dQ)
507+ then $Tuple2((dO - dL), dP)
508+ else $Tuple2(dO, (dP - dL))
509+ let dS = dR._1
510+ let dT = dR._2
511+ let dU = if (dQ)
512+ then $Tuple2(dL, 0)
513+ else $Tuple2(0, dL)
514+ let dV = dU._1
515+ let dW = dU._2
516+ let dm = dI(dV)._1
517+ let dn = dI(dW)._1
518+ let dX = dI(dL)
519+ let dY = dX._1
520+ let dJ = dX._2
521+ let dZ = (dS + dm)
522+ let ea = (dT + dn)
523+ let eb = by(D(ea, bd), D(dZ, bc))
524+ let ec = G(eb, b)
525+ let ed = if (dQ)
526+ then dS
527+ else dT
528+ let ee = toBigInt(ed)
529+ let ef = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
530+ let eg = if ((ef > f))
520531 then true
521532 else aG("initial deposit requires all coins")
522- if ((ee == ee))
533+ if ((eg == eg))
523534 then {
524- let ef = toBigInt(dW)
525- let eg = max([0, toInt(((ed * (sqrtBigInt((d + ((ef * d) / ec)), 18, 18, DOWN) - d)) / d))])
526- let cV = if (dL)
535+ let eh = toBigInt(dY)
536+ let ei = max([0, toInt(((ef * (sqrtBigInt((d + ((eh * d) / ee)), 18, 18, DOWN) - d)) / d))])
537+ let cV = if (dN)
527538 then nil
528- else [IntegerEntry(S(), ea), IntegerEntry(T(height, lastBlock.timestamp), ea), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bh(dT, dU, eg, ea, 0, 0, height, lastBlock.timestamp, 0, 0))]
529- let eh = by(D(dR, bd), D(dQ, bc))
530- let ei = G(eh, b)
531- let ej = {
532- let ek = if (dO)
533- then $Tuple2(dT, dQ)
534- else $Tuple2(dU, dR)
535- let dB = ek._1
536- let el = ek._2
537- let em = toInt(fraction(ed, toBigInt((dB / 2)), toBigInt(el)))
538- fraction((eg - em), b, em)
539+ else [IntegerEntry(S(), ec), IntegerEntry(T(height, lastBlock.timestamp), ec), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bh(dV, dW, ei, ec, 0, 0, height, lastBlock.timestamp, 0, 0))]
540+ let ej = by(D(dT, bd), D(dS, bc))
541+ let ek = G(ej, b)
542+ let el = {
543+ let em = if (dQ)
544+ then $Tuple2(dV, dS)
545+ else $Tuple2(dW, dT)
546+ let dD = em._1
547+ let en = em._2
548+ let eo = toInt(fraction(ef, toBigInt((dD / 2)), toBigInt(en)))
549+ fraction((ei - eo), b, eo)
539550 }
540- $Tuple5(eg, cV, dH, ej, dO)
551+ $Tuple5(ei, cV, dJ, el, dQ)
541552 }
542553 else throw("Strict value is not equal to itself.")
543554 }
544555
545556
546-func en (eo,dW,dK,X,Y) = {
547- let dL = (Y == unit)
548- let ep = [if ((dK == aZ))
557+func ep (eq,dY,dM,X,Y) = {
558+ let dN = (Y == unit)
559+ let er = [if ((dM == aZ))
549560 then true
550561 else aG("invalid lp asset")]
551- if ((ep == ep))
562+ if ((er == er))
552563 then {
553- let eq = if ((eo == ba))
564+ let es = if ((eq == ba))
554565 then true
555- else if ((eo == bb))
566+ else if ((eq == bb))
556567 then false
557568 else aG("invalid asset")
558- let er = if (eq)
569+ let et = if (es)
559570 then toBigInt(bw(aS(ba)))
560571 else toBigInt(bw(aS(bb)))
561- let es = bw(aS(ba))
562- let et = bw(aS(bb))
563- let eu = if (eq)
564- then es
565- else et
566- let ev = toBigInt(eu)
567- let ed = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
568- let ew = toBigInt(dW)
569- let ex = max([0, toInt(((er * (d - pow((d - ((ew * d) / ed)), 18, h, 0, 18, DOWN))) / d))])
570- let ey = dG(ex)
571- let ez = ey._1
572- let dH = ey._2
573- let eA = if (eq)
574- then $Tuple4(ez, 0, (es - ex), et)
575- else $Tuple4(0, ez, es, (et - ex))
572+ let eu = bw(aS(ba))
573+ let ev = bw(aS(bb))
574+ let ew = if (es)
575+ then eu
576+ else ev
577+ let ex = toBigInt(ew)
578+ let ef = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
579+ let ey = toBigInt(dY)
580+ let ez = max([0, toInt(((et * (d - pow((d - ((ey * d) / ef)), 18, h, 0, 18, DOWN))) / d))])
581+ let eA = dI(ez)
576582 let eB = eA._1
577- let eC = eA._2
578- let eD = eA._3
579- let eE = eA._4
580- let dZ = by(D(eE, bd), D(eD, bc))
581- let ea = G(dZ, b)
582- let cV = if (dL)
583+ let dJ = eA._2
584+ let eC = if (es)
585+ then $Tuple4(eB, 0, (eu - ez), ev)
586+ else $Tuple4(0, eB, eu, (ev - ez))
587+ let eD = eC._1
588+ let eE = eC._2
589+ let eF = eC._3
590+ let eG = eC._4
591+ let eb = by(D(eG, bd), D(eF, bc))
592+ let ec = G(eb, b)
593+ let cV = if (dN)
583594 then nil
584- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bs(eB, eC, dW, ea, height, lastBlock.timestamp)), IntegerEntry(S(), ea), IntegerEntry(T(height, lastBlock.timestamp), ea)]
585- let eh = by(D(et, bd), D(es, bc))
586- let ei = G(eh, b)
587- let ej = {
588- let eF = (toInt(fraction(er, ew, ed)) * 2)
589- fraction((ez - eF), b, eF)
595+ else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bs(eD, eE, dY, ec, height, lastBlock.timestamp)), IntegerEntry(S(), ec), IntegerEntry(T(height, lastBlock.timestamp), ec)]
596+ let ej = by(D(ev, bd), D(eu, bc))
597+ let ek = G(ej, b)
598+ let el = {
599+ let eH = (toInt(fraction(et, ey, ef)) * 2)
600+ fraction((eB - eH), b, eH)
590601 }
591- $Tuple5(ez, cV, dH, ej, eq)
602+ $Tuple5(eB, cV, dJ, el, es)
592603 }
593604 else throw("Strict value is not equal to itself.")
594605 }
595606
596607
597-func eG () = {
598- let dE = getString(Q())
599- if ($isInstanceOf(dE, "String"))
608+func eI () = {
609+ let dG = getString(Q())
610+ if ($isInstanceOf(dG, "String"))
600611 then {
601- let eH = dE
602- fromBase58String(eH)
612+ let eJ = dG
613+ fromBase58String(eJ)
603614 }
604- else if ($isInstanceOf(dE, "Unit"))
615+ else if ($isInstanceOf(dG, "Unit"))
605616 then unit
606617 else throw("Match error")
607618 }
608619
609620
610-func eI () = {
611- let dE = getString(R())
612- if ($isInstanceOf(dE, "String"))
621+func eK () = {
622+ let dG = getString(R())
623+ if ($isInstanceOf(dG, "String"))
613624 then {
614- let eH = dE
615- fromBase58String(eH)
625+ let eJ = dG
626+ fromBase58String(eJ)
616627 }
617- else if ($isInstanceOf(dE, "Unit"))
628+ else if ($isInstanceOf(dG, "Unit"))
618629 then unit
619630 else throw("Match error")
620631 }
621632
622633
623-func eJ (dt) = {
624- let dE = eG()
625- if ($isInstanceOf(dE, "ByteVector"))
634+func eL (dv) = {
635+ let dG = eI()
636+ if ($isInstanceOf(dG, "ByteVector"))
626637 then {
627- let eK = dE
628- (dt.callerPublicKey == eK)
638+ let eM = dG
639+ (dv.callerPublicKey == eM)
629640 }
630- else if ($isInstanceOf(dE, "Unit"))
631- then (dt.caller == this)
641+ else if ($isInstanceOf(dG, "Unit"))
642+ then (dv.caller == this)
632643 else throw("Match error")
633644 }
634645
635646
636-func eL (dt) = {
637- let eM = throw("Permission denied")
638- let dE = eG()
639- if ($isInstanceOf(dE, "ByteVector"))
647+func eN (dv) = {
648+ let eO = throw("Permission denied")
649+ let dG = eI()
650+ if ($isInstanceOf(dG, "ByteVector"))
640651 then {
641- let eK = dE
642- if ((dt.callerPublicKey == eK))
652+ let eM = dG
653+ if ((dv.callerPublicKey == eM))
643654 then true
644- else eM
655+ else eO
645656 }
646- else if ($isInstanceOf(dE, "Unit"))
647- then if ((dt.caller == this))
657+ else if ($isInstanceOf(dG, "Unit"))
658+ then if ((dv.caller == this))
648659 then true
649- else eM
660+ else eO
650661 else throw("Match error")
651662 }
652663
653664
654-@Callable(dt)
655-func setManager (eN) = {
656- let eO = eL(dt)
657- if ((eO == eO))
665+@Callable(dv)
666+func setManager (eP) = {
667+ let eQ = eN(dv)
668+ if ((eQ == eQ))
658669 then {
659- let eP = fromBase58String(eN)
660- if ((eP == eP))
661- then [StringEntry(R(), eN)]
670+ let eR = fromBase58String(eP)
671+ if ((eR == eR))
672+ then [StringEntry(R(), eP)]
662673 else throw("Strict value is not equal to itself.")
663674 }
664675 else throw("Strict value is not equal to itself.")
666677
667678
668679
669-@Callable(dt)
680+@Callable(dv)
670681 func confirmManager () = {
671- let eQ = eI()
672- let eR = if (isDefined(eQ))
682+ let eS = eK()
683+ let eT = if (isDefined(eS))
673684 then true
674685 else throw("No pending manager")
675- if ((eR == eR))
686+ if ((eT == eT))
676687 then {
677- let eS = if ((dt.callerPublicKey == value(eQ)))
688+ let eU = if ((dv.callerPublicKey == value(eS)))
678689 then true
679690 else throw("You are not pending manager")
680- if ((eS == eS))
681- then [StringEntry(Q(), toBase58String(value(eQ))), DeleteEntry(R())]
691+ if ((eU == eU))
692+ then [StringEntry(Q(), toBase58String(value(eS))), DeleteEntry(R())]
682693 else throw("Strict value is not equal to itself.")
683694 }
684695 else throw("Strict value is not equal to itself.")
686697
687698
688699
689-@Callable(dt)
690-func put (cq,eT) = if ((0 > cq))
700+@Callable(dv)
701+func put (cq,eV) = if ((0 > cq))
691702 then throw("Invalid slippageTolerance passed")
692703 else {
693- let dz = dw(dt, cq, true)
694- let cS = dz._2
695- let bX = dz._7
696- let co = dz._9
697- let cT = dz._10
698- let cU = dz._11
699- let eU = dz._12
700- let eV = dz._13
701- let dC = invoke(aJ, "emit", [cS], nil)
702- if ((dC == dC))
704+ let dB = dy(dv, cq, true)
705+ let cS = dB._2
706+ let bX = dB._7
707+ let co = dB._9
708+ let cT = dB._10
709+ let cU = dB._11
710+ let eW = dB._12
711+ let eX = dB._13
712+ let dE = invoke(aJ, "emit", [cS], nil)
713+ if ((dE == dE))
703714 then {
704- let dD = {
705- let dE = dC
706- if ($isInstanceOf(dE, "Address"))
715+ let dF = {
716+ let dG = dE
717+ if ($isInstanceOf(dG, "Address"))
707718 then {
708- let dF = dE
709- invoke(dF, "emit", [cS], nil)
719+ let dH = dG
720+ invoke(dH, "emit", [cS], nil)
710721 }
711722 else unit
712723 }
713- if ((dD == dD))
724+ if ((dF == dF))
714725 then {
715- let eW = if ((cT > 0))
716- then invoke(bg, "put", nil, [AttachedPayment(eU, cT)])
726+ let eY = if ((cT > 0))
727+ then invoke(bg, "put", nil, [AttachedPayment(eW, cT)])
717728 else nil
718- if ((eW == eW))
729+ if ((eY == eY))
719730 then {
720- let eX = if ((cU > 0))
721- then invoke(bg, "put", nil, [AttachedPayment(eV, cU)])
731+ let eZ = if ((cU > 0))
732+ then invoke(bg, "put", nil, [AttachedPayment(eX, cU)])
722733 else nil
723- if ((eX == eX))
734+ if ((eZ == eZ))
724735 then {
725- let eY = if (eT)
736+ let fa = if (eV)
726737 then {
727- let eZ = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
728- if ((eZ == eZ))
738+ let fb = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
739+ if ((fb == fb))
729740 then nil
730741 else throw("Strict value is not equal to itself.")
731742 }
732- else [ScriptTransfer(dt.caller, cS, bX)]
733- let fa = da(0, 0, 0)
734- let fb = fa._1
735- let cZ = fa._2
736- ((co ++ eY) ++ fb)
743+ else [ScriptTransfer(dv.caller, cS, bX)]
744+ let fc = da(0, 0, 0)
745+ let fd = fc._1
746+ let cZ = fc._2
747+ let fe = di(cZ)
748+ if ((fe == fe))
749+ then ((co ++ fa) ++ fd)
750+ else throw("Strict value is not equal to itself.")
737751 }
738752 else throw("Strict value is not equal to itself.")
739753 }
746760
747761
748762
749-@Callable(dt)
750-func putForFree (fc) = if ((0 > fc))
763+@Callable(dv)
764+func putForFree (ff) = if ((0 > ff))
751765 then throw("Invalid value passed")
752766 else {
753- let dz = dw(dt, fc, false)
754- let co = dz._9
755- let fd = da(0, 0, 0)
756- let fb = fd._1
757- let cZ = fd._2
758- (co ++ fb)
767+ let dB = dy(dv, ff, false)
768+ let co = dB._9
769+ let fg = da(0, 0, 0)
770+ let fd = fg._1
771+ let cZ = fg._2
772+ let fe = di(cZ)
773+ if ((fe == fe))
774+ then (co ++ fd)
775+ else throw("Strict value is not equal to itself.")
759776 }
760777
761778
762779
763-@Callable(dt)
764-func putOneTkn (fe,ff) = {
765- let fg = {
766- let fh = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
767- if ($isInstanceOf(fh, "Boolean"))
768- then fh
769- else throw(($getType(fh) + " couldn't be cast to Boolean"))
780+@Callable(dv)
781+func putOneTkn (fh,fi) = {
782+ let fj = {
783+ let fk = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
784+ if ($isInstanceOf(fk, "Boolean"))
785+ then fk
786+ else throw(($getType(fk) + " couldn't be cast to Boolean"))
770787 }
771- let fi = if (if (if (aL())
788+ let fl = if (if (if (aL())
772789 then true
773790 else (aY == l))
774791 then true
775792 else (aY == n))
776793 then true
777- else fg
778- let ep = [if (if (!(fi))
794+ else fj
795+ let er = [if (if (!(fl))
779796 then true
780- else eJ(dt))
797+ else eL(dv))
781798 then true
782- else aG("put operation is blocked by admin"), if ((size(dt.payments) == 1))
799+ else aG("put operation is blocked by admin"), if ((size(dv.payments) == 1))
783800 then true
784801 else aG("exactly 1 payment are expected")]
785- if ((ep == ep))
802+ if ((er == er))
786803 then {
787- let fj = dt.payments[0]
788- let dK = fj.assetId
789- let dJ = fj.amount
790- let X = dt.caller
791- let Y = dt.transactionId
792- let fk = dI(dJ, dK, X, Y)
793- if ((fk == fk))
804+ let fm = dv.payments[0]
805+ let dM = fm.assetId
806+ let dL = fm.amount
807+ let X = dv.caller
808+ let Y = dv.transactionId
809+ let fn = dK(dL, dM, X, Y)
810+ if ((fn == fn))
794811 then {
795- let dO = fk._5
796- let fl = fk._4
797- let dH = fk._3
798- let cV = fk._2
799- let fm = fk._1
800- let fn = if (if ((fe > 0))
801- then (fe > fm)
812+ let dQ = fn._5
813+ let fo = fn._4
814+ let dJ = fn._3
815+ let cV = fn._2
816+ let fp = fn._1
817+ let fq = if (if ((fh > 0))
818+ then (fh > fp)
802819 else false)
803- then aG(makeString(["amount to receive is less than ", toString(fe)], ""))
804- else fm
805- let dC = dA(fn)
806- if ((dC == dC))
820+ then aG(makeString(["amount to receive is less than ", toString(fh)], ""))
821+ else fp
822+ let dE = dC(fq)
823+ if ((dE == dE))
807824 then {
808- let eY = if (ff)
825+ let fa = if (fi)
809826 then {
810- let fo = invoke(bf, "stake", nil, [AttachedPayment(aZ, fn)])
811- if ((fo == fo))
827+ let fr = invoke(bf, "stake", nil, [AttachedPayment(aZ, fq)])
828+ if ((fr == fr))
812829 then nil
813830 else throw("Strict value is not equal to itself.")
814831 }
815- else [ScriptTransfer(dt.caller, fn, aZ)]
816- let fp = if ((dH > 0))
817- then [ScriptTransfer(aK, dH, dK)]
832+ else [ScriptTransfer(dv.caller, fq, aZ)]
833+ let fs = if ((dJ > 0))
834+ then [ScriptTransfer(aK, dJ, dM)]
818835 else nil
819- let fq = if ((this == aK))
836+ let ft = if ((this == aK))
820837 then $Tuple2(0, 0)
821- else if (dO)
822- then $Tuple2(-(dH), 0)
823- else $Tuple2(0, -(dH))
824- let db = fq._1
825- let dc = fq._2
826- let fr = da(db, dc, 0)
827- let fb = fr._1
828- let cZ = fr._2
829- $Tuple2((((cV ++ eY) ++ fp) ++ fb), fn)
838+ else if (dQ)
839+ then $Tuple2(-(dJ), 0)
840+ else $Tuple2(0, -(dJ))
841+ let db = ft._1
842+ let dc = ft._2
843+ let fu = da(db, dc, 0)
844+ let fd = fu._1
845+ let cZ = fu._2
846+ let fe = di(cZ)
847+ if ((fe == fe))
848+ then $Tuple2((((cV ++ fa) ++ fs) ++ fd), fq)
849+ else throw("Strict value is not equal to itself.")
830850 }
831851 else throw("Strict value is not equal to itself.")
832852 }
837857
838858
839859
840-@Callable(dt)
841-func putOneTknREADONLY (dK,dJ) = {
842- let fs = dI(dJ, aQ(dK), unit, unit)
843- let fm = fs._1
844- let cV = fs._2
845- let dH = fs._3
846- let fl = fs._4
847- let dO = fs._5
848- $Tuple2(nil, $Tuple3(fm, dH, fl))
860+@Callable(dv)
861+func putOneTknREADONLY (dM,dL) = {
862+ let fv = dK(dL, aQ(dM), unit, unit)
863+ let fp = fv._1
864+ let cV = fv._2
865+ let dJ = fv._3
866+ let fo = fv._4
867+ let dQ = fv._5
868+ $Tuple2(nil, $Tuple3(fp, dJ, fo))
849869 }
850870
851871
852872
853-@Callable(dt)
854-func getOneTkn (ft,fe) = {
855- let fg = {
856- let fh = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
857- if ($isInstanceOf(fh, "Boolean"))
858- then fh
859- else throw(($getType(fh) + " couldn't be cast to Boolean"))
873+@Callable(dv)
874+func getOneTkn (fw,fh) = {
875+ let fj = {
876+ let fk = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
877+ if ($isInstanceOf(fk, "Boolean"))
878+ then fk
879+ else throw(($getType(fk) + " couldn't be cast to Boolean"))
860880 }
861- let fu = if (if (aL())
881+ let fx = if (if (aL())
862882 then true
863883 else (aY == n))
864884 then true
865- else fg
866- let ep = [if (if (!(fu))
885+ else fj
886+ let er = [if (if (!(fx))
867887 then true
868- else eJ(dt))
888+ else eL(dv))
869889 then true
870- else aG("get operation is blocked by admin"), if ((size(dt.payments) == 1))
890+ else aG("get operation is blocked by admin"), if ((size(dv.payments) == 1))
871891 then true
872892 else aG("exactly 1 payment are expected")]
873- if ((ep == ep))
893+ if ((er == er))
874894 then {
875- let eo = aQ(ft)
876- let fj = dt.payments[0]
877- let dK = fj.assetId
878- let dW = fj.amount
879- let X = dt.caller
880- let Y = dt.transactionId
881- let fv = en(eo, dW, dK, X, Y)
882- if ((fv == fv))
895+ let eq = aQ(fw)
896+ let fm = dv.payments[0]
897+ let dM = fm.assetId
898+ let dY = fm.amount
899+ let X = dv.caller
900+ let Y = dv.transactionId
901+ let fy = ep(eq, dY, dM, X, Y)
902+ if ((fy == fy))
883903 then {
884- let eq = fv._5
885- let fl = fv._4
886- let dH = fv._3
887- let cV = fv._2
888- let fw = fv._1
889- let dB = if (if ((fe > 0))
890- then (fe > fw)
904+ let es = fy._5
905+ let fo = fy._4
906+ let dJ = fy._3
907+ let cV = fy._2
908+ let fz = fy._1
909+ let dD = if (if ((fh > 0))
910+ then (fh > fz)
891911 else false)
892- then aG(makeString(["amount to receive is less than ", toString(fe)], ""))
893- else fw
894- let fx = invoke(aJ, "burn", [dW], [AttachedPayment(dK, dW)])
895- if ((fx == fx))
912+ then aG(makeString(["amount to receive is less than ", toString(fh)], ""))
913+ else fz
914+ let fA = invoke(aJ, "burn", [dY], [AttachedPayment(dM, dY)])
915+ if ((fA == fA))
896916 then {
897- let fy = [ScriptTransfer(X, dB, eo)]
898- let fp = if ((dH > 0))
899- then [ScriptTransfer(aK, dH, eo)]
917+ let fB = [ScriptTransfer(X, dD, eq)]
918+ let fs = if ((dJ > 0))
919+ then [ScriptTransfer(aK, dJ, eq)]
900920 else nil
901- let fz = {
902- let fA = if ((this == aK))
921+ let fC = {
922+ let fD = if ((this == aK))
903923 then 0
904- else dH
905- if (eq)
906- then $Tuple2(-((dB + fA)), 0)
907- else $Tuple2(0, -((dB + fA)))
924+ else dJ
925+ if (es)
926+ then $Tuple2(-((dD + fD)), 0)
927+ else $Tuple2(0, -((dD + fD)))
908928 }
909- let db = fz._1
910- let dc = fz._2
911- let fB = da(db, dc, 0)
912- let fb = fB._1
913- let cZ = fB._2
914- $Tuple2((((cV ++ fy) ++ fp) ++ fb), dB)
929+ let db = fC._1
930+ let dc = fC._2
931+ let fE = da(db, dc, 0)
932+ let fd = fE._1
933+ let cZ = fE._2
934+ let fe = di(cZ)
935+ if ((fe == fe))
936+ then $Tuple2((((cV ++ fB) ++ fs) ++ fd), dD)
937+ else throw("Strict value is not equal to itself.")
915938 }
916939 else throw("Strict value is not equal to itself.")
917940 }
922945
923946
924947
925-@Callable(dt)
926-func getOneTknREADONLY (eo,dW) = {
927- let fC = en(aQ(eo), dW, aZ, unit, unit)
928- let fw = fC._1
929- let cV = fC._2
930- let dH = fC._3
931- let fl = fC._4
932- let eq = fC._5
933- $Tuple2(nil, $Tuple3(fw, dH, fl))
948+@Callable(dv)
949+func getOneTknREADONLY (eq,dY) = {
950+ let fF = ep(aQ(eq), dY, aZ, unit, unit)
951+ let fz = fF._1
952+ let cV = fF._2
953+ let dJ = fF._3
954+ let fo = fF._4
955+ let es = fF._5
956+ $Tuple2(nil, $Tuple3(fz, dJ, fo))
934957 }
935958
936959
937960
938-@Callable(dt)
939-func unstakeAndGetOneTkn (fD,ft,fe) = {
940- let fg = {
941- let fh = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
942- if ($isInstanceOf(fh, "Boolean"))
943- then fh
944- else throw(($getType(fh) + " couldn't be cast to Boolean"))
961+@Callable(dv)
962+func unstakeAndGetOneTkn (fG,fw,fh) = {
963+ let fj = {
964+ let fk = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
965+ if ($isInstanceOf(fk, "Boolean"))
966+ then fk
967+ else throw(($getType(fk) + " couldn't be cast to Boolean"))
945968 }
946- let fu = if (if (aL())
969+ let fx = if (if (aL())
947970 then true
948971 else (aY == n))
949972 then true
950- else fg
951- let ep = [if (if (!(fu))
973+ else fj
974+ let er = [if (if (!(fx))
952975 then true
953- else eJ(dt))
976+ else eL(dv))
954977 then true
955- else aG("get operation is blocked by admin"), if ((size(dt.payments) == 0))
978+ else aG("get operation is blocked by admin"), if ((size(dv.payments) == 0))
956979 then true
957980 else aG("no payments are expected")]
958- if ((ep == ep))
981+ if ((er == er))
959982 then {
960- let eo = aQ(ft)
961- let X = dt.caller
962- let Y = dt.transactionId
963- let fE = invoke(bf, "unstake", [toBase58String(aZ), fD], nil)
964- if ((fE == fE))
983+ let eq = aQ(fw)
984+ let X = dv.caller
985+ let Y = dv.transactionId
986+ let fH = invoke(bf, "unstake", [toBase58String(aZ), fG], nil)
987+ if ((fH == fH))
965988 then {
966- let fF = en(eo, fD, aZ, X, Y)
967- if ((fF == fF))
989+ let fI = ep(eq, fG, aZ, X, Y)
990+ if ((fI == fI))
968991 then {
969- let eq = fF._5
970- let fl = fF._4
971- let dH = fF._3
972- let cV = fF._2
973- let fw = fF._1
974- let dB = if (if ((fe > 0))
975- then (fe > fw)
992+ let es = fI._5
993+ let fo = fI._4
994+ let dJ = fI._3
995+ let cV = fI._2
996+ let fz = fI._1
997+ let dD = if (if ((fh > 0))
998+ then (fh > fz)
976999 else false)
977- then aG(makeString(["amount to receive is less than ", toString(fe)], ""))
978- else fw
979- let fx = invoke(aJ, "burn", [fD], [AttachedPayment(aZ, fD)])
980- if ((fx == fx))
1000+ then aG(makeString(["amount to receive is less than ", toString(fh)], ""))
1001+ else fz
1002+ let fA = invoke(aJ, "burn", [fG], [AttachedPayment(aZ, fG)])
1003+ if ((fA == fA))
9811004 then {
982- let fy = [ScriptTransfer(dt.caller, dB, eo)]
983- let fp = if ((dH > 0))
984- then [ScriptTransfer(aK, dH, eo)]
1005+ let fB = [ScriptTransfer(dv.caller, dD, eq)]
1006+ let fs = if ((dJ > 0))
1007+ then [ScriptTransfer(aK, dJ, eq)]
9851008 else nil
986- let fG = {
987- let fA = if ((this == aK))
1009+ let fJ = {
1010+ let fD = if ((this == aK))
9881011 then 0
989- else dH
990- if (eq)
991- then $Tuple2(-((dB + fA)), 0)
992- else $Tuple2(0, -((dB + fA)))
1012+ else dJ
1013+ if (es)
1014+ then $Tuple2(-((dD + fD)), 0)
1015+ else $Tuple2(0, -((dD + fD)))
9931016 }
994- let db = fG._1
995- let dc = fG._2
996- let fH = da(db, dc, 0)
997- let fb = fH._1
998- let cZ = fH._2
999- $Tuple2((((cV ++ fy) ++ fp) ++ fb), dB)
1017+ let db = fJ._1
1018+ let dc = fJ._2
1019+ let fK = da(db, dc, 0)
1020+ let fd = fK._1
1021+ let cZ = fK._2
1022+ let fe = di(cZ)
1023+ if ((fe == fe))
1024+ then $Tuple2((((cV ++ fB) ++ fs) ++ fd), dD)
1025+ else throw("Strict value is not equal to itself.")
10001026 }
10011027 else throw("Strict value is not equal to itself.")
10021028 }
10091035
10101036
10111037
1012-@Callable(dt)
1038+@Callable(dv)
10131039 func get () = {
1014- let cG = ds(dt)
1015- let fI = cG._1
1040+ let cG = du(dv)
1041+ let fL = cG._1
10161042 let cn = cG._2
1017- let dv = cG._3
1043+ let dx = cG._3
10181044 let bV = cG._4
10191045 let co = cG._5
1020- let fJ = invoke(aJ, "burn", [dv], [AttachedPayment(bV, dv)])
1021- if ((fJ == fJ))
1046+ let fM = invoke(aJ, "burn", [dx], [AttachedPayment(bV, dx)])
1047+ if ((fM == fM))
10221048 then {
1023- let fK = da(-(fI), -(cn), 0)
1024- let fb = fK._1
1025- let cZ = fK._2
1026- (co ++ fb)
1049+ let fN = da(-(fL), -(cn), 0)
1050+ let fd = fN._1
1051+ let cZ = fN._2
1052+ let fe = di(cZ)
1053+ if ((fe == fe))
1054+ then (co ++ fd)
1055+ else throw("Strict value is not equal to itself.")
10271056 }
10281057 else throw("Strict value is not equal to itself.")
10291058 }
10301059
10311060
10321061
1033-@Callable(dt)
1034-func getNoLess (fL,fM) = {
1035- let cG = ds(dt)
1062+@Callable(dv)
1063+func getNoLess (fO,fP) = {
1064+ let cG = du(dv)
10361065 let cm = cG._1
10371066 let cn = cG._2
1038- let dv = cG._3
1067+ let dx = cG._3
10391068 let bV = cG._4
10401069 let co = cG._5
1041- if ((fL > cm))
1042- then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fL)))
1043- else if ((fM > cn))
1044- then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fM)))
1070+ if ((fO > cm))
1071+ then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fO)))
1072+ else if ((fP > cn))
1073+ then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fP)))
10451074 else {
1046- let fJ = invoke(aJ, "burn", [dv], [AttachedPayment(bV, dv)])
1047- if ((fJ == fJ))
1075+ let fM = invoke(aJ, "burn", [dx], [AttachedPayment(bV, dx)])
1076+ if ((fM == fM))
10481077 then {
1049- let fN = da(-(cm), -(cn), 0)
1050- let fb = fN._1
1051- let cZ = fN._2
1052- (co ++ fb)
1078+ let fQ = da(-(cm), -(cn), 0)
1079+ let fd = fQ._1
1080+ let cZ = fQ._2
1081+ let fe = di(cZ)
1082+ if ((fe == fe))
1083+ then (co ++ fd)
1084+ else throw("Strict value is not equal to itself.")
10531085 }
10541086 else throw("Strict value is not equal to itself.")
10551087 }
10571089
10581090
10591091
1060-@Callable(dt)
1061-func unstakeAndGet (dB) = {
1062- let fO = if ((size(dt.payments) != 0))
1092+@Callable(dv)
1093+func unstakeAndGet (dD) = {
1094+ let fR = if ((size(dv.payments) != 0))
10631095 then throw("No payments are expected")
10641096 else true
1065- if ((fO == fO))
1097+ if ((fR == fR))
10661098 then {
10671099 let bK = aN()
10681100 let bX = fromBase58String(bK[q])
1069- let fE = invoke(bf, "unstake", [toBase58String(bX), dB], nil)
1070- if ((fE == fE))
1101+ let fH = invoke(bf, "unstake", [toBase58String(bX), dD], nil)
1102+ if ((fH == fH))
10711103 then {
1072- let cG = bT(toBase58String(dt.transactionId), toBase58String(bX), dB, dt.caller)
1104+ let cG = bT(toBase58String(dv.transactionId), toBase58String(bX), dD, dv.caller)
10731105 let cm = cG._1
10741106 let cn = cG._2
10751107 let ca = parseIntValue(cG._9)
10761108 let co = cG._10
1077- let fP = if (if (aL())
1109+ let fS = if (if (aL())
10781110 then true
10791111 else (ca == n))
10801112 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
10811113 else true
1082- if ((fP == fP))
1114+ if ((fS == fS))
10831115 then {
1084- let fJ = invoke(aJ, "burn", [dB], [AttachedPayment(bX, dB)])
1085- if ((fJ == fJ))
1116+ let fM = invoke(aJ, "burn", [dD], [AttachedPayment(bX, dD)])
1117+ if ((fM == fM))
10861118 then {
1087- let fQ = da(-(cm), -(cn), 0)
1088- let fb = fQ._1
1089- let cZ = fQ._2
1090- (co ++ fb)
1119+ let fT = da(-(cm), -(cn), 0)
1120+ let fd = fT._1
1121+ let cZ = fT._2
1122+ let fe = di(cZ)
1123+ if ((fe == fe))
1124+ then (co ++ fd)
1125+ else throw("Strict value is not equal to itself.")
10911126 }
10921127 else throw("Strict value is not equal to itself.")
10931128 }
11001135
11011136
11021137
1103-@Callable(dt)
1104-func unstakeAndGetNoLess (fD,fR,fM) = {
1105- let fu = if (aL())
1138+@Callable(dv)
1139+func unstakeAndGetNoLess (fG,fU,fP) = {
1140+ let fx = if (aL())
11061141 then true
11071142 else (aY == n)
1108- let ep = [if (!(fu))
1143+ let er = [if (!(fx))
11091144 then true
1110- else throw("get operation is blocked by admin"), if ((size(dt.payments) == 0))
1145+ else throw("get operation is blocked by admin"), if ((size(dv.payments) == 0))
11111146 then true
11121147 else throw("no payments are expected")]
1113- if ((ep == ep))
1148+ if ((er == er))
11141149 then {
1115- let fE = invoke(bf, "unstake", [toBase58String(aZ), fD], nil)
1116- if ((fE == fE))
1150+ let fH = invoke(bf, "unstake", [toBase58String(aZ), fG], nil)
1151+ if ((fH == fH))
11171152 then {
1118- let cG = bT(toBase58String(dt.transactionId), toBase58String(aZ), fD, dt.caller)
1153+ let cG = bT(toBase58String(dv.transactionId), toBase58String(aZ), fG, dv.caller)
11191154 let cm = cG._1
11201155 let cn = cG._2
11211156 let co = cG._10
1122- let fS = [if ((cm >= fR))
1157+ let fV = [if ((cm >= fU))
11231158 then true
1124- else throw(makeString(["amount asset amount to receive is less than ", toString(fR)], "")), if ((cn >= fM))
1159+ else throw(makeString(["amount asset amount to receive is less than ", toString(fU)], "")), if ((cn >= fP))
11251160 then true
1126- else throw(makeString(["price asset amount to receive is less than ", toString(fM)], ""))]
1127- if ((fS == fS))
1161+ else throw(makeString(["price asset amount to receive is less than ", toString(fP)], ""))]
1162+ if ((fV == fV))
11281163 then {
1129- let fJ = invoke(aJ, "burn", [fD], [AttachedPayment(aZ, fD)])
1130- if ((fJ == fJ))
1164+ let fM = invoke(aJ, "burn", [fG], [AttachedPayment(aZ, fG)])
1165+ if ((fM == fM))
11311166 then {
1132- let fT = da(-(cm), -(cn), 0)
1133- let fb = fT._1
1134- let cZ = fT._2
1135- (co ++ fb)
1167+ let fW = da(-(cm), -(cn), 0)
1168+ let fd = fW._1
1169+ let cZ = fW._2
1170+ let fe = di(cZ)
1171+ if ((fe == fe))
1172+ then (co ++ fd)
1173+ else throw("Strict value is not equal to itself.")
11361174 }
11371175 else throw("Strict value is not equal to itself.")
11381176 }
11451183
11461184
11471185
1148-@Callable(dt)
1149-func activate (fU,fV) = if ((toString(dt.caller) != toString(aJ)))
1186+@Callable(dv)
1187+func activate (fX,fY) = if ((toString(dv.caller) != toString(aJ)))
11501188 then throw("permissions denied")
1151- else $Tuple2([StringEntry(aa(), fU), StringEntry(ab(), fV)], "success")
1189+ else $Tuple2([StringEntry(aa(), fX), StringEntry(ab(), fY)], "success")
11521190
11531191
11541192
1155-@Callable(dt)
1193+@Callable(dv)
11561194 func refreshKLp () = {
1157- let fW = valueOrElse(getInteger(ag), 0)
1158- let fX = if (((height - fW) >= aj))
1195+ let fZ = valueOrElse(getInteger(ag), 0)
1196+ let ga = if (((height - fZ) >= aj))
11591197 then unit
11601198 else aG(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
1161- if ((fX == fX))
1199+ if ((ga == ga))
11621200 then {
1163- let dn = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, af), "0")), aI("invalid kLp"))
1164- let fY = da(0, 0, 0)
1165- let fZ = fY._1
1166- let cZ = fY._2
1167- let dh = if ((dn != cZ))
1168- then fZ
1201+ let dp = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, af), "0")), aI("invalid kLp"))
1202+ let gb = da(0, 0, 0)
1203+ let gc = gb._1
1204+ let cZ = gb._2
1205+ let dh = if ((dp != cZ))
1206+ then gc
11691207 else aG("nothing to refresh")
11701208 $Tuple2(dh, toString(cZ))
11711209 }
11741212
11751213
11761214
1177-@Callable(dt)
1215+@Callable(dv)
11781216 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aN())
11791217
11801218
11811219
1182-@Callable(dt)
1220+@Callable(dv)
11831221 func getAccBalanceWrapperREADONLY (bx) = $Tuple2(nil, bw(bx))
11841222
11851223
11861224
1187-@Callable(dt)
1225+@Callable(dv)
11881226 func calcPricesWrapperREADONLY (bE,bF,bJ) = {
11891227 let bS = bI(bE, bF, bJ)
11901228 $Tuple2(nil, [toString(bS[0]), toString(bS[1]), toString(bS[2])])
11921230
11931231
11941232
1195-@Callable(dt)
1233+@Callable(dv)
11961234 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11971235
11981236
11991237
1200-@Callable(dt)
1238+@Callable(dv)
12011239 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
12021240
12031241
12041242
1205-@Callable(dt)
1243+@Callable(dv)
12061244 func calcPriceBigIntWrapperREADONLY (bz,bA) = $Tuple2(nil, toString(by(parseBigIntValue(bz), parseBigIntValue(bA))))
12071245
12081246
12091247
1210-@Callable(dt)
1248+@Callable(dv)
12111249 func estimatePutOperationWrapperREADONLY (bU,cq,cr,cs,ct,cu,X,cv,cw) = $Tuple2(nil, cp(bU, cq, cr, cs, ct, cu, X, cv, cw))
12121250
12131251
12141252
1215-@Callable(dt)
1253+@Callable(dv)
12161254 func estimateGetOperationWrapperREADONLY (bU,bV,bW,X) = {
12171255 let cG = bT(bU, bV, bW, addressFromStringValue(X))
12181256 $Tuple2(nil, $Tuple10(cG._1, cG._2, cG._3, cG._4, cG._5, cG._6, cG._7, toString(cG._8), cG._9, cG._10))
12201258
12211259
12221260
1223-@Callable(dt)
1261+@Callable(dv)
12241262 func statsREADONLY () = {
12251263 let bK = aN()
12261264 let bX = fromBase58String(bK[q])
1227- let ga = bK[r]
1228- let gb = bK[s]
1265+ let gd = bK[r]
1266+ let ge = bK[s]
12291267 let cz = bK[v]
12301268 let cA = bK[w]
12311269 let bL = parseIntValue(bK[t])
12321270 let bM = parseIntValue(bK[u])
1233- let gc = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1234- let gd = bw(ga)
1235- let ge = bw(gb)
1236- let gf = if ((gc == 0))
1271+ let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1272+ let gg = bw(gd)
1273+ let gh = bw(ge)
1274+ let gi = if ((gf == 0))
12371275 then [e, e, e]
1238- else bI(gd, ge, gc)
1276+ else bI(gg, gh, gf)
12391277 let ch = 0
1240- let gg = G(gf[1], b)
1241- let gh = G(gf[2], b)
1242- let gi = value(getInteger(aJ, au(toString(this))))
1243- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gd), toString(ge), toString(gc), toString(ch), toString(gg), toString(gh), toString(gi)], j))
1278+ let gj = G(gi[1], b)
1279+ let gk = G(gi[2], b)
1280+ let gl = value(getInteger(aJ, au(toString(this))))
1281+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gg), toString(gh), toString(gf), toString(ch), toString(gj), toString(gk), toString(gl)], j))
12441282 }
12451283
12461284
12471285
1248-@Callable(dt)
1286+@Callable(dv)
12491287 func evaluatePutByAmountAssetREADONLY (cr) = {
12501288 let bK = aN()
12511289 let bX = fromBase58String(bK[q])
12561294 let bL = parseIntValue(bK[t])
12571295 let bM = parseIntValue(bK[u])
12581296 let ca = bK[p]
1259- let gc = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1260- let gd = bw(cx)
1261- let ge = bw(cy)
1262- let bG = D(gd, bL)
1263- let bH = D(ge, bM)
1264- let cg = if ((gc == 0))
1297+ let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1298+ let gg = bw(cx)
1299+ let gh = bw(cy)
1300+ let bG = D(gg, bL)
1301+ let bH = D(gh, bM)
1302+ let cg = if ((gf == 0))
12651303 then e
12661304 else by(bH, bG)
12671305 let cD = D(cr, bL)
12681306 let cE = fraction(cD, cg, d)
12691307 let ct = G(cE, bM)
1270- let dz = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1271- let cO = dz._1
1272- let gj = dz._3
1273- let cc = dz._4
1274- let ce = dz._5
1275- let cb = dz._6
1308+ let dB = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1309+ let cO = dB._1
1310+ let gm = dB._3
1311+ let cc = dB._4
1312+ let ce = dB._5
1313+ let cb = dB._6
12761314 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
12771315 }
12781316
12791317
12801318
1281-@Callable(dt)
1319+@Callable(dv)
12821320 func evaluatePutByPriceAssetREADONLY (ct) = {
12831321 let bK = aN()
12841322 let bX = fromBase58String(bK[q])
12891327 let bL = parseIntValue(bK[t])
12901328 let bM = parseIntValue(bK[u])
12911329 let ca = bK[p]
1292- let gc = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1293- let gk = bw(cx)
1294- let gl = bw(cy)
1295- let gm = D(gk, bL)
1296- let gn = D(gl, bM)
1297- let cg = if ((gc == 0))
1330+ let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1331+ let gn = bw(cx)
1332+ let go = bw(cy)
1333+ let gp = D(gn, bL)
1334+ let gq = D(go, bM)
1335+ let cg = if ((gf == 0))
12981336 then e
1299- else by(gn, gm)
1337+ else by(gq, gp)
13001338 let cE = D(ct, bM)
13011339 let cD = fraction(cE, d, cg)
13021340 let cr = G(cD, bL)
1303- let dz = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1304- let cO = dz._1
1305- let gj = dz._3
1306- let cc = dz._4
1307- let ce = dz._5
1308- let cb = dz._6
1341+ let dB = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1342+ let cO = dB._1
1343+ let gm = dB._3
1344+ let cc = dB._4
1345+ let ce = dB._5
1346+ let cb = dB._6
13091347 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
13101348 }
13111349
13121350
13131351
1314-@Callable(dt)
1315-func evaluateGetREADONLY (go,gp) = {
1316- let cG = bT("", go, gp, this)
1352+@Callable(dv)
1353+func evaluateGetREADONLY (gr,gs) = {
1354+ let cG = bT("", gr, gs, this)
13171355 let cm = cG._1
13181356 let cn = cG._2
13191357 let cc = cG._5
13251363 }
13261364
13271365
1328-@Verifier(gq)
1329-func gr () = {
1330- let gs = {
1331- let dE = eG()
1332- if ($isInstanceOf(dE, "ByteVector"))
1366+@Verifier(gt)
1367+func gu () = {
1368+ let gv = {
1369+ let dG = eI()
1370+ if ($isInstanceOf(dG, "ByteVector"))
13331371 then {
1334- let eK = dE
1335- eK
1372+ let eM = dG
1373+ eM
13361374 }
1337- else if ($isInstanceOf(dE, "Unit"))
1338- then gq.senderPublicKey
1375+ else if ($isInstanceOf(dG, "Unit"))
1376+ then gt.senderPublicKey
13391377 else throw("Match error")
13401378 }
1341- let dE = gq
1342- if ($isInstanceOf(dE, "Order"))
1379+ let dG = gt
1380+ if ($isInstanceOf(dG, "Order"))
13431381 then {
1344- let dj = dE
1345- let gt = aM()
1346- let az = di(dj)
1347- let aA = sigVerify(dj.bodyBytes, dj.proofs[0], dj.senderPublicKey)
1348- let aB = sigVerify(dj.bodyBytes, dj.proofs[1], gt)
1382+ let dl = dG
1383+ let gw = aM()
1384+ let az = dk(dl)
1385+ let aA = sigVerify(dl.bodyBytes, dl.proofs[0], dl.senderPublicKey)
1386+ let aB = sigVerify(dl.bodyBytes, dl.proofs[1], gw)
13491387 if (if (if (az)
13501388 then aA
13511389 else false)
13541392 then true
13551393 else ay(az, aA, aB)
13561394 }
1357- else if ($isInstanceOf(dE, "SetScriptTransaction"))
1395+ else if ($isInstanceOf(dG, "SetScriptTransaction"))
13581396 then {
1359- let eH = dE
1360- let gu = blake2b256(value(eH.script))
1361- let gv = fromBase64String(value(getString(aJ, aw())))
1362- let gw = scriptHash(this)
1363- if (if ((gv == gu))
1364- then (gw != gu)
1397+ let eJ = dG
1398+ let gx = blake2b256(value(eJ.script))
1399+ let gy = fromBase64String(value(getString(aJ, aw())))
1400+ let gz = scriptHash(this)
1401+ if (if ((gy == gx))
1402+ then (gz != gx)
13651403 else false)
13661404 then true
1367- else sigVerify(gq.bodyBytes, gq.proofs[0], gs)
1405+ else sigVerify(gt.bodyBytes, gt.proofs[0], gv)
13681406 }
1369- else sigVerify(gq.bodyBytes, gq.proofs[0], gs)
1407+ else sigVerify(gt.bodyBytes, gt.proofs[0], gv)
13701408 }
13711409
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
6868 func J (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((0 > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((e > H))
7777 then -(H)
7878 else H
7979
8080
8181 func P () = "%s__factoryContract"
8282
8383
8484 func Q () = "%s__managerPublicKey"
8585
8686
8787 func R () = "%s__pendingManagerPublicKey"
8888
8989
9090 func S () = "%s%s__price__last"
9191
9292
9393 func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9494
9595
9696 func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
9999 func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102102 func aa () = "%s__amountAsset"
103103
104104
105105 func ab () = "%s__priceAsset"
106106
107107
108108 let ac = "%s__fee"
109109
110110 let ad = fraction(10, b, 10000)
111111
112112 let ae = valueOrElse(getInteger(this, ac), ad)
113113
114114 let af = makeString(["%s", "kLp"], j)
115115
116116 let ag = makeString(["%s", "kLpRefreshedHeight"], j)
117117
118118 let ah = makeString(["%s", "refreshKLpDelay"], j)
119119
120120 let ai = 30
121121
122122 let aj = valueOrElse(getInteger(this, ah), ai)
123123
124124 func ak () = "%s__factoryConfig"
125125
126126
127127 func al () = "%s%s__matcher__publicKey"
128128
129129
130130 func am (an) = (("%s%s%s__" + an) + "__mappings__poolContract2LpAsset")
131131
132132
133133 func ao (ap,aq) = (((("%d%d%s__" + ap) + "__") + aq) + "__config")
134134
135135
136136 func ar (as) = ("%s%s%s__mappings__baseAsset2internalId__" + as)
137137
138138
139139 func at () = "%s__shutdown"
140140
141141
142142 func au (av) = ("%s%s__poolWeight__" + av)
143143
144144
145145 func aw () = "%s__allowedLpScriptHash"
146146
147147
148148 let ax = "%s__feeCollectorAddress"
149149
150150 func ay (az,aA,aB) = throw(((((("order validation failed: orderValid=" + toString(az)) + " senderValid=") + toString(aA)) + " matcherValid=") + toString(aB)))
151151
152152
153153 func aC (aD,aE) = valueOrErrorMessage(getString(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
154154
155155
156156 func aF (aD,aE) = valueOrErrorMessage(getInteger(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
157157
158158
159159 func aG (aH) = throw(makeString(["lp.ride:", aH], " "))
160160
161161
162162 func aI (aH) = makeString(["lp.ride:", aH], " ")
163163
164164
165165 let aJ = addressFromStringValue(aC(this, P()))
166166
167167 let aK = addressFromStringValue(aC(aJ, ax))
168168
169169 func aL () = valueOrElse(getBoolean(aJ, at()), false)
170170
171171
172172 func aM () = fromBase58String(aC(aJ, al()))
173173
174174
175175 func aN () = {
176176 let aO = aC(this, aa())
177177 let aP = aC(this, ab())
178178 let aq = aF(aJ, ar(aP))
179179 let ap = aF(aJ, ar(aO))
180180 split(aC(aJ, ao(toString(ap), toString(aq))), j)
181181 }
182182
183183
184184 func aQ (aR) = if ((aR == i))
185185 then unit
186186 else fromBase58String(aR)
187187
188188
189189 func aS (aR) = if ((aR == unit))
190190 then i
191191 else toBase58String(value(aR))
192192
193193
194194 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]))
195195
196196
197197 let aV = aT(aN())
198198
199199 let aW = aV
200200
201201 let aX = aW._1
202202
203203 let aY = aW._2
204204
205205 let aZ = aW._3
206206
207207 let ba = aW._4
208208
209209 let bb = aW._5
210210
211211 let bc = aW._6
212212
213213 let bd = aW._7
214214
215215 func be () = split(aC(aJ, ak()), j)
216216
217217
218218 let bf = valueOrErrorMessage(addressFromString(be()[B]), "incorrect staking address")
219219
220220 let bg = valueOrErrorMessage(addressFromString(be()[C]), "incorrect staking address")
221221
222222 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)
223223
224224
225225 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)
226226
227227
228228 func bw (bx) = if ((bx == "WAVES"))
229229 then wavesBalance(this).available
230230 else assetBalance(this, fromBase58String(bx))
231231
232232
233233 func by (bz,bA) = fraction(bz, d, bA)
234234
235235
236236 func bB (bC,bD,bE,bF) = {
237237 let bG = D(bE, bC)
238238 let bH = D(bF, bD)
239239 by(bH, bG)
240240 }
241241
242242
243243 func bI (bE,bF,bJ) = {
244244 let bK = aN()
245245 let bL = parseIntValue(bK[t])
246246 let bM = parseIntValue(bK[u])
247247 let bN = bB(bL, bM, bE, bF)
248248 let bA = D(bE, bL)
249249 let bz = D(bF, bM)
250250 let bO = D(bJ, b)
251251 let bP = by(bA, bO)
252252 let bQ = by(bz, bO)
253253 [bN, bP, bQ]
254254 }
255255
256256
257257 func bR (bE,bF,bJ) = {
258258 let bS = bI(bE, bF, bJ)
259259 [G(bS[0], b), G(bS[1], b), G(bS[2], b)]
260260 }
261261
262262
263263 func bT (bU,bV,bW,X) = {
264264 let bK = aN()
265265 let bX = bK[q]
266266 let bY = bK[r]
267267 let bZ = bK[s]
268268 let bC = parseIntValue(bK[t])
269269 let bD = parseIntValue(bK[u])
270270 let ca = bK[p]
271271 let cb = valueOrErrorMessage(assetInfo(fromBase58String(bX)), (("Asset " + bX) + " doesn't exist")).quantity
272272 if ((bX != bV))
273273 then throw("Invalid asset passed.")
274274 else {
275275 let cc = bw(bY)
276276 let cd = D(cc, bC)
277277 let ce = bw(bZ)
278278 let cf = D(ce, bD)
279279 let cg = by(cf, cd)
280280 let ch = G(cg, b)
281281 let ci = D(bW, b)
282282 let cj = D(cb, b)
283283 let ck = fraction(cd, ci, cj)
284284 let cl = fraction(cf, ci, cj)
285285 let cm = G(ck, bC)
286286 let cn = G(cl, bD)
287287 let co = if ((bU == ""))
288288 then nil
289289 else [ScriptTransfer(X, cm, if ((bY == "WAVES"))
290290 then unit
291291 else fromBase58String(bY)), ScriptTransfer(X, cn, if ((bZ == "WAVES"))
292292 then unit
293293 else fromBase58String(bZ)), StringEntry(Z(toString(X), bU), bs(cm, cn, bW, ch, height, lastBlock.timestamp)), IntegerEntry(S(), ch), IntegerEntry(T(height, lastBlock.timestamp), ch)]
294294 $Tuple10(cm, cn, bY, bZ, cc, ce, cb, cg, ca, co)
295295 }
296296 }
297297
298298
299299 func cp (bU,cq,cr,cs,ct,cu,X,cv,cw) = {
300300 let bK = aN()
301301 let bX = fromBase58String(bK[q])
302302 let cx = bK[r]
303303 let cy = bK[s]
304304 let cz = bK[v]
305305 let cA = bK[w]
306306 let bL = parseIntValue(bK[t])
307307 let bM = parseIntValue(bK[u])
308308 let ca = bK[p]
309309 let cb = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
310310 let cB = toBase58String(valueOrElse(cs, fromBase58String("WAVES")))
311311 let cC = toBase58String(valueOrElse(cu, fromBase58String("WAVES")))
312312 if (if ((cx != cB))
313313 then true
314314 else (cy != cC))
315315 then throw("Invalid amt or price asset passed.")
316316 else {
317317 let cc = if (cv)
318318 then bw(cx)
319319 else (bw(cx) - cr)
320320 let ce = if (cv)
321321 then bw(cy)
322322 else (bw(cy) - ct)
323323 let cD = D(cr, bL)
324324 let cE = D(ct, bM)
325325 let cF = by(cE, cD)
326326 let cd = D(cc, bL)
327327 let cf = D(ce, bM)
328328 let cG = if ((cb == 0))
329329 then {
330330 let cg = e
331331 let cH = e
332332 let bO = pow((cD * cE), 0, toBigInt(5), 1, 0, DOWN)
333333 $Tuple5(G(bO, b), G(cD, bL), G(cE, bM), by((cf + cE), (cd + cD)), cH)
334334 }
335335 else {
336336 let cg = by(cf, cd)
337337 let cH = fraction(O((cg - cF)), d, cg)
338338 let cI = D(cq, b)
339339 if (if ((cg != e))
340340 then (cH > cI)
341341 else false)
342342 then throw(((("Price slippage " + toString(cH)) + " exceeded the passed limit of ") + toString(cI)))
343343 else {
344344 let cj = D(cb, b)
345345 let cJ = fraction(cD, cg, d)
346346 let cK = fraction(cE, d, cg)
347347 let cL = if ((cJ > cE))
348348 then $Tuple2(cK, cE)
349349 else $Tuple2(cD, cJ)
350350 let cM = cL._1
351351 let cN = cL._2
352352 let bO = fraction(cj, cN, cf)
353353 $Tuple5(G(bO, b), G(cM, bL), G(cN, bM), cg, cH)
354354 }
355355 }
356356 let cO = cG._1
357357 let cP = cG._2
358358 let cQ = cG._3
359359 let ch = G(cG._4, b)
360360 let cR = G(cG._5, b)
361361 if ((0 >= cO))
362362 then throw("Invalid calculations. LP calculated is less than zero.")
363363 else {
364364 let cS = if (!(cw))
365365 then 0
366366 else cO
367367 let cT = (cr - cP)
368368 let cU = (ct - cQ)
369369 let cV = [IntegerEntry(S(), ch), IntegerEntry(T(height, lastBlock.timestamp), ch), StringEntry(W(X, bU), bh(cP, cQ, cS, ch, cq, cR, height, lastBlock.timestamp, cT, cU))]
370370 $Tuple13(cO, cS, ch, cc, ce, cb, bX, ca, cV, cT, cU, cs, cu)
371371 }
372372 }
373373 }
374374
375375
376376 func cW (cX,cY,cb) = {
377377 let cZ = fraction(pow((cX * cY), 0, toBigInt(5), 1, 0, DOWN), d, cb)
378378 cZ
379379 }
380380
381381
382382 func da (db,dc,dd) = {
383383 let de = (bw(aS(ba)) + db)
384384 let df = (bw(aS(bb)) + dc)
385385 let dg = (value(assetInfo(aZ)).quantity + dd)
386386 let cZ = cW(toBigInt(de), toBigInt(df), toBigInt(dg))
387387 let dh = [IntegerEntry(ag, height), StringEntry(af, toString(cZ))]
388388 $Tuple2(dh, cZ)
389389 }
390390
391391
392-func di (dj) = {
393- let dk = dj.amount
394- let dl = fraction(dj.amount, dj.price, b)
395- let dm = if ((dj.orderType == Buy))
396- then $Tuple2(dk, -(dl))
397- else $Tuple2(-(dk), dl)
398- let db = dm._1
399- let dc = dm._2
392+func di (cZ) = {
393+ let de = bw(aS(ba))
394+ let df = bw(aS(bb))
395+ let dg = value(assetInfo(aZ)).quantity
396+ let dj = cW(toBigInt(de), toBigInt(df), toBigInt(dg))
397+ if ((cZ >= dj))
398+ then true
399+ else aG("updated KLp lower than current KLp")
400+ }
401+
402+
403+func dk (dl) = {
404+ let dm = dl.amount
405+ let dn = fraction(dl.amount, dl.price, b)
406+ let do = if ((dl.orderType == Buy))
407+ then $Tuple2(dm, -(dn))
408+ else $Tuple2(-(dm), dn)
409+ let db = do._1
410+ let dc = do._2
400411 if (if (if (aL())
401412 then true
402413 else (aY == m))
403414 then true
404415 else (aY == n))
405416 then throw("Exchange operations disabled")
406- else if (if ((dj.assetPair.amountAsset != ba))
417+ else if (if ((dl.assetPair.amountAsset != ba))
407418 then true
408- else (dj.assetPair.priceAsset != bb))
419+ else (dl.assetPair.priceAsset != bb))
409420 then throw("Wrong order assets.")
410421 else {
411- let dn = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, af), aI("kLp is required"))), aI("invalid kLp"))
412- let do = da(db, dc, 0)
413- let dp = do._1
414- let dq = do._2
415- let dr = (dq > dn)
416- dr
422+ let dp = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, af), aI("kLp is required"))), aI("invalid kLp"))
423+ let dq = da(db, dc, 0)
424+ let dr = dq._1
425+ let ds = dq._2
426+ let dt = (ds > dp)
427+ dt
417428 }
418429 }
419430
420431
421-func ds (dt) = if ((size(dt.payments) != 1))
432+func du (dv) = if ((size(dv.payments) != 1))
422433 then throw("exactly 1 payment is expected")
423434 else {
424- let du = value(dt.payments[0])
425- let bV = value(du.assetId)
426- let dv = du.amount
427- let cG = bT(toBase58String(dt.transactionId), toBase58String(bV), dv, dt.caller)
435+ let dw = value(dv.payments[0])
436+ let bV = value(dw.assetId)
437+ let dx = dw.amount
438+ let cG = bT(toBase58String(dv.transactionId), toBase58String(bV), dx, dv.caller)
428439 let cm = cG._1
429440 let cn = cG._2
430441 let ca = parseIntValue(cG._9)
431442 let co = cG._10
432443 if (if (aL())
433444 then true
434445 else (ca == n))
435446 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
436- else $Tuple5(cm, cn, dv, bV, co)
447+ else $Tuple5(cm, cn, dx, bV, co)
437448 }
438449
439450
440-func dw (dt,cq,cw) = if ((size(dt.payments) != 2))
451+func dy (dv,cq,cw) = if ((size(dv.payments) != 2))
441452 then throw("exactly 2 payments are expected")
442453 else {
443- let dx = value(dt.payments[0])
444- let dy = value(dt.payments[1])
445- let dz = cp(toBase58String(dt.transactionId), cq, dx.amount, dx.assetId, dy.amount, dy.assetId, toString(dt.caller), false, cw)
446- let ca = parseIntValue(dz._8)
454+ let dz = value(dv.payments[0])
455+ let dA = value(dv.payments[1])
456+ let dB = cp(toBase58String(dv.transactionId), cq, dz.amount, dz.assetId, dA.amount, dA.assetId, toString(dv.caller), false, cw)
457+ let ca = parseIntValue(dB._8)
447458 if (if (if (aL())
448459 then true
449460 else (ca == l))
450461 then true
451462 else (ca == n))
452463 then throw(("Put operation is blocked by admin. Status = " + toString(ca)))
453- else dz
464+ else dB
454465 }
455466
456467
457-func dA (dB) = {
458- let dC = invoke(aJ, "emit", [dB], nil)
459- if ((dC == dC))
468+func dC (dD) = {
469+ let dE = invoke(aJ, "emit", [dD], nil)
470+ if ((dE == dE))
460471 then {
461- let dD = {
462- let dE = dC
463- if ($isInstanceOf(dE, "Address"))
472+ let dF = {
473+ let dG = dE
474+ if ($isInstanceOf(dG, "Address"))
464475 then {
465- let dF = dE
466- invoke(dF, "emit", [dB], nil)
476+ let dH = dG
477+ invoke(dH, "emit", [dD], nil)
467478 }
468479 else unit
469480 }
470- if ((dD == dD))
471- then dB
481+ if ((dF == dF))
482+ then dD
472483 else throw("Strict value is not equal to itself.")
473484 }
474485 else throw("Strict value is not equal to itself.")
475486 }
476487
477488
478-func dG (dB) = {
479- let dH = fraction(dB, ae, b)
480- $Tuple2((dB - dH), dH)
489+func dI (dD) = {
490+ let dJ = fraction(dD, ae, b)
491+ $Tuple2((dD - dJ), dJ)
481492 }
482493
483494
484-func dI (dJ,dK,X,Y) = {
485- let dL = (Y == unit)
486- let dM = bw(aS(ba))
487- let dN = bw(aS(bb))
488- let dO = if ((dK == ba))
495+func dK (dL,dM,X,Y) = {
496+ let dN = (Y == unit)
497+ let dO = bw(aS(ba))
498+ let dP = bw(aS(bb))
499+ let dQ = if ((dM == ba))
489500 then true
490- else if ((dK == bb))
501+ else if ((dM == bb))
491502 then false
492503 else aG("invalid asset")
493- let dP = if (dL)
494- then $Tuple2(dM, dN)
495- else if (dO)
496- then $Tuple2((dM - dJ), dN)
497- else $Tuple2(dM, (dN - dJ))
498- let dQ = dP._1
499- let dR = dP._2
500- let dS = if (dO)
501- then $Tuple2(dJ, 0)
502- else $Tuple2(0, dJ)
503- let dT = dS._1
504- let dU = dS._2
505- let dk = dG(dT)._1
506- let dl = dG(dU)._1
507- let dV = dG(dJ)
508- let dW = dV._1
509- let dH = dV._2
510- let dX = (dQ + dk)
511- let dY = (dR + dl)
512- let dZ = by(D(dY, bd), D(dX, bc))
513- let ea = G(dZ, b)
514- let eb = if (dO)
515- then dQ
516- else dR
517- let ec = toBigInt(eb)
518- let ed = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
519- let ee = if ((ed > f))
504+ let dR = if (dN)
505+ then $Tuple2(dO, dP)
506+ else if (dQ)
507+ then $Tuple2((dO - dL), dP)
508+ else $Tuple2(dO, (dP - dL))
509+ let dS = dR._1
510+ let dT = dR._2
511+ let dU = if (dQ)
512+ then $Tuple2(dL, 0)
513+ else $Tuple2(0, dL)
514+ let dV = dU._1
515+ let dW = dU._2
516+ let dm = dI(dV)._1
517+ let dn = dI(dW)._1
518+ let dX = dI(dL)
519+ let dY = dX._1
520+ let dJ = dX._2
521+ let dZ = (dS + dm)
522+ let ea = (dT + dn)
523+ let eb = by(D(ea, bd), D(dZ, bc))
524+ let ec = G(eb, b)
525+ let ed = if (dQ)
526+ then dS
527+ else dT
528+ let ee = toBigInt(ed)
529+ let ef = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
530+ let eg = if ((ef > f))
520531 then true
521532 else aG("initial deposit requires all coins")
522- if ((ee == ee))
533+ if ((eg == eg))
523534 then {
524- let ef = toBigInt(dW)
525- let eg = max([0, toInt(((ed * (sqrtBigInt((d + ((ef * d) / ec)), 18, 18, DOWN) - d)) / d))])
526- let cV = if (dL)
535+ let eh = toBigInt(dY)
536+ let ei = max([0, toInt(((ef * (sqrtBigInt((d + ((eh * d) / ee)), 18, 18, DOWN) - d)) / d))])
537+ let cV = if (dN)
527538 then nil
528- else [IntegerEntry(S(), ea), IntegerEntry(T(height, lastBlock.timestamp), ea), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bh(dT, dU, eg, ea, 0, 0, height, lastBlock.timestamp, 0, 0))]
529- let eh = by(D(dR, bd), D(dQ, bc))
530- let ei = G(eh, b)
531- let ej = {
532- let ek = if (dO)
533- then $Tuple2(dT, dQ)
534- else $Tuple2(dU, dR)
535- let dB = ek._1
536- let el = ek._2
537- let em = toInt(fraction(ed, toBigInt((dB / 2)), toBigInt(el)))
538- fraction((eg - em), b, em)
539+ else [IntegerEntry(S(), ec), IntegerEntry(T(height, lastBlock.timestamp), ec), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bh(dV, dW, ei, ec, 0, 0, height, lastBlock.timestamp, 0, 0))]
540+ let ej = by(D(dT, bd), D(dS, bc))
541+ let ek = G(ej, b)
542+ let el = {
543+ let em = if (dQ)
544+ then $Tuple2(dV, dS)
545+ else $Tuple2(dW, dT)
546+ let dD = em._1
547+ let en = em._2
548+ let eo = toInt(fraction(ef, toBigInt((dD / 2)), toBigInt(en)))
549+ fraction((ei - eo), b, eo)
539550 }
540- $Tuple5(eg, cV, dH, ej, dO)
551+ $Tuple5(ei, cV, dJ, el, dQ)
541552 }
542553 else throw("Strict value is not equal to itself.")
543554 }
544555
545556
546-func en (eo,dW,dK,X,Y) = {
547- let dL = (Y == unit)
548- let ep = [if ((dK == aZ))
557+func ep (eq,dY,dM,X,Y) = {
558+ let dN = (Y == unit)
559+ let er = [if ((dM == aZ))
549560 then true
550561 else aG("invalid lp asset")]
551- if ((ep == ep))
562+ if ((er == er))
552563 then {
553- let eq = if ((eo == ba))
564+ let es = if ((eq == ba))
554565 then true
555- else if ((eo == bb))
566+ else if ((eq == bb))
556567 then false
557568 else aG("invalid asset")
558- let er = if (eq)
569+ let et = if (es)
559570 then toBigInt(bw(aS(ba)))
560571 else toBigInt(bw(aS(bb)))
561- let es = bw(aS(ba))
562- let et = bw(aS(bb))
563- let eu = if (eq)
564- then es
565- else et
566- let ev = toBigInt(eu)
567- let ed = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
568- let ew = toBigInt(dW)
569- let ex = max([0, toInt(((er * (d - pow((d - ((ew * d) / ed)), 18, h, 0, 18, DOWN))) / d))])
570- let ey = dG(ex)
571- let ez = ey._1
572- let dH = ey._2
573- let eA = if (eq)
574- then $Tuple4(ez, 0, (es - ex), et)
575- else $Tuple4(0, ez, es, (et - ex))
572+ let eu = bw(aS(ba))
573+ let ev = bw(aS(bb))
574+ let ew = if (es)
575+ then eu
576+ else ev
577+ let ex = toBigInt(ew)
578+ let ef = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
579+ let ey = toBigInt(dY)
580+ let ez = max([0, toInt(((et * (d - pow((d - ((ey * d) / ef)), 18, h, 0, 18, DOWN))) / d))])
581+ let eA = dI(ez)
576582 let eB = eA._1
577- let eC = eA._2
578- let eD = eA._3
579- let eE = eA._4
580- let dZ = by(D(eE, bd), D(eD, bc))
581- let ea = G(dZ, b)
582- let cV = if (dL)
583+ let dJ = eA._2
584+ let eC = if (es)
585+ then $Tuple4(eB, 0, (eu - ez), ev)
586+ else $Tuple4(0, eB, eu, (ev - ez))
587+ let eD = eC._1
588+ let eE = eC._2
589+ let eF = eC._3
590+ let eG = eC._4
591+ let eb = by(D(eG, bd), D(eF, bc))
592+ let ec = G(eb, b)
593+ let cV = if (dN)
583594 then nil
584- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bs(eB, eC, dW, ea, height, lastBlock.timestamp)), IntegerEntry(S(), ea), IntegerEntry(T(height, lastBlock.timestamp), ea)]
585- let eh = by(D(et, bd), D(es, bc))
586- let ei = G(eh, b)
587- let ej = {
588- let eF = (toInt(fraction(er, ew, ed)) * 2)
589- fraction((ez - eF), b, eF)
595+ else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bs(eD, eE, dY, ec, height, lastBlock.timestamp)), IntegerEntry(S(), ec), IntegerEntry(T(height, lastBlock.timestamp), ec)]
596+ let ej = by(D(ev, bd), D(eu, bc))
597+ let ek = G(ej, b)
598+ let el = {
599+ let eH = (toInt(fraction(et, ey, ef)) * 2)
600+ fraction((eB - eH), b, eH)
590601 }
591- $Tuple5(ez, cV, dH, ej, eq)
602+ $Tuple5(eB, cV, dJ, el, es)
592603 }
593604 else throw("Strict value is not equal to itself.")
594605 }
595606
596607
597-func eG () = {
598- let dE = getString(Q())
599- if ($isInstanceOf(dE, "String"))
608+func eI () = {
609+ let dG = getString(Q())
610+ if ($isInstanceOf(dG, "String"))
600611 then {
601- let eH = dE
602- fromBase58String(eH)
612+ let eJ = dG
613+ fromBase58String(eJ)
603614 }
604- else if ($isInstanceOf(dE, "Unit"))
615+ else if ($isInstanceOf(dG, "Unit"))
605616 then unit
606617 else throw("Match error")
607618 }
608619
609620
610-func eI () = {
611- let dE = getString(R())
612- if ($isInstanceOf(dE, "String"))
621+func eK () = {
622+ let dG = getString(R())
623+ if ($isInstanceOf(dG, "String"))
613624 then {
614- let eH = dE
615- fromBase58String(eH)
625+ let eJ = dG
626+ fromBase58String(eJ)
616627 }
617- else if ($isInstanceOf(dE, "Unit"))
628+ else if ($isInstanceOf(dG, "Unit"))
618629 then unit
619630 else throw("Match error")
620631 }
621632
622633
623-func eJ (dt) = {
624- let dE = eG()
625- if ($isInstanceOf(dE, "ByteVector"))
634+func eL (dv) = {
635+ let dG = eI()
636+ if ($isInstanceOf(dG, "ByteVector"))
626637 then {
627- let eK = dE
628- (dt.callerPublicKey == eK)
638+ let eM = dG
639+ (dv.callerPublicKey == eM)
629640 }
630- else if ($isInstanceOf(dE, "Unit"))
631- then (dt.caller == this)
641+ else if ($isInstanceOf(dG, "Unit"))
642+ then (dv.caller == this)
632643 else throw("Match error")
633644 }
634645
635646
636-func eL (dt) = {
637- let eM = throw("Permission denied")
638- let dE = eG()
639- if ($isInstanceOf(dE, "ByteVector"))
647+func eN (dv) = {
648+ let eO = throw("Permission denied")
649+ let dG = eI()
650+ if ($isInstanceOf(dG, "ByteVector"))
640651 then {
641- let eK = dE
642- if ((dt.callerPublicKey == eK))
652+ let eM = dG
653+ if ((dv.callerPublicKey == eM))
643654 then true
644- else eM
655+ else eO
645656 }
646- else if ($isInstanceOf(dE, "Unit"))
647- then if ((dt.caller == this))
657+ else if ($isInstanceOf(dG, "Unit"))
658+ then if ((dv.caller == this))
648659 then true
649- else eM
660+ else eO
650661 else throw("Match error")
651662 }
652663
653664
654-@Callable(dt)
655-func setManager (eN) = {
656- let eO = eL(dt)
657- if ((eO == eO))
665+@Callable(dv)
666+func setManager (eP) = {
667+ let eQ = eN(dv)
668+ if ((eQ == eQ))
658669 then {
659- let eP = fromBase58String(eN)
660- if ((eP == eP))
661- then [StringEntry(R(), eN)]
670+ let eR = fromBase58String(eP)
671+ if ((eR == eR))
672+ then [StringEntry(R(), eP)]
662673 else throw("Strict value is not equal to itself.")
663674 }
664675 else throw("Strict value is not equal to itself.")
665676 }
666677
667678
668679
669-@Callable(dt)
680+@Callable(dv)
670681 func confirmManager () = {
671- let eQ = eI()
672- let eR = if (isDefined(eQ))
682+ let eS = eK()
683+ let eT = if (isDefined(eS))
673684 then true
674685 else throw("No pending manager")
675- if ((eR == eR))
686+ if ((eT == eT))
676687 then {
677- let eS = if ((dt.callerPublicKey == value(eQ)))
688+ let eU = if ((dv.callerPublicKey == value(eS)))
678689 then true
679690 else throw("You are not pending manager")
680- if ((eS == eS))
681- then [StringEntry(Q(), toBase58String(value(eQ))), DeleteEntry(R())]
691+ if ((eU == eU))
692+ then [StringEntry(Q(), toBase58String(value(eS))), DeleteEntry(R())]
682693 else throw("Strict value is not equal to itself.")
683694 }
684695 else throw("Strict value is not equal to itself.")
685696 }
686697
687698
688699
689-@Callable(dt)
690-func put (cq,eT) = if ((0 > cq))
700+@Callable(dv)
701+func put (cq,eV) = if ((0 > cq))
691702 then throw("Invalid slippageTolerance passed")
692703 else {
693- let dz = dw(dt, cq, true)
694- let cS = dz._2
695- let bX = dz._7
696- let co = dz._9
697- let cT = dz._10
698- let cU = dz._11
699- let eU = dz._12
700- let eV = dz._13
701- let dC = invoke(aJ, "emit", [cS], nil)
702- if ((dC == dC))
704+ let dB = dy(dv, cq, true)
705+ let cS = dB._2
706+ let bX = dB._7
707+ let co = dB._9
708+ let cT = dB._10
709+ let cU = dB._11
710+ let eW = dB._12
711+ let eX = dB._13
712+ let dE = invoke(aJ, "emit", [cS], nil)
713+ if ((dE == dE))
703714 then {
704- let dD = {
705- let dE = dC
706- if ($isInstanceOf(dE, "Address"))
715+ let dF = {
716+ let dG = dE
717+ if ($isInstanceOf(dG, "Address"))
707718 then {
708- let dF = dE
709- invoke(dF, "emit", [cS], nil)
719+ let dH = dG
720+ invoke(dH, "emit", [cS], nil)
710721 }
711722 else unit
712723 }
713- if ((dD == dD))
724+ if ((dF == dF))
714725 then {
715- let eW = if ((cT > 0))
716- then invoke(bg, "put", nil, [AttachedPayment(eU, cT)])
726+ let eY = if ((cT > 0))
727+ then invoke(bg, "put", nil, [AttachedPayment(eW, cT)])
717728 else nil
718- if ((eW == eW))
729+ if ((eY == eY))
719730 then {
720- let eX = if ((cU > 0))
721- then invoke(bg, "put", nil, [AttachedPayment(eV, cU)])
731+ let eZ = if ((cU > 0))
732+ then invoke(bg, "put", nil, [AttachedPayment(eX, cU)])
722733 else nil
723- if ((eX == eX))
734+ if ((eZ == eZ))
724735 then {
725- let eY = if (eT)
736+ let fa = if (eV)
726737 then {
727- let eZ = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
728- if ((eZ == eZ))
738+ let fb = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
739+ if ((fb == fb))
729740 then nil
730741 else throw("Strict value is not equal to itself.")
731742 }
732- else [ScriptTransfer(dt.caller, cS, bX)]
733- let fa = da(0, 0, 0)
734- let fb = fa._1
735- let cZ = fa._2
736- ((co ++ eY) ++ fb)
743+ else [ScriptTransfer(dv.caller, cS, bX)]
744+ let fc = da(0, 0, 0)
745+ let fd = fc._1
746+ let cZ = fc._2
747+ let fe = di(cZ)
748+ if ((fe == fe))
749+ then ((co ++ fa) ++ fd)
750+ else throw("Strict value is not equal to itself.")
737751 }
738752 else throw("Strict value is not equal to itself.")
739753 }
740754 else throw("Strict value is not equal to itself.")
741755 }
742756 else throw("Strict value is not equal to itself.")
743757 }
744758 else throw("Strict value is not equal to itself.")
745759 }
746760
747761
748762
749-@Callable(dt)
750-func putForFree (fc) = if ((0 > fc))
763+@Callable(dv)
764+func putForFree (ff) = if ((0 > ff))
751765 then throw("Invalid value passed")
752766 else {
753- let dz = dw(dt, fc, false)
754- let co = dz._9
755- let fd = da(0, 0, 0)
756- let fb = fd._1
757- let cZ = fd._2
758- (co ++ fb)
767+ let dB = dy(dv, ff, false)
768+ let co = dB._9
769+ let fg = da(0, 0, 0)
770+ let fd = fg._1
771+ let cZ = fg._2
772+ let fe = di(cZ)
773+ if ((fe == fe))
774+ then (co ++ fd)
775+ else throw("Strict value is not equal to itself.")
759776 }
760777
761778
762779
763-@Callable(dt)
764-func putOneTkn (fe,ff) = {
765- let fg = {
766- let fh = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
767- if ($isInstanceOf(fh, "Boolean"))
768- then fh
769- else throw(($getType(fh) + " couldn't be cast to Boolean"))
780+@Callable(dv)
781+func putOneTkn (fh,fi) = {
782+ let fj = {
783+ let fk = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
784+ if ($isInstanceOf(fk, "Boolean"))
785+ then fk
786+ else throw(($getType(fk) + " couldn't be cast to Boolean"))
770787 }
771- let fi = if (if (if (aL())
788+ let fl = if (if (if (aL())
772789 then true
773790 else (aY == l))
774791 then true
775792 else (aY == n))
776793 then true
777- else fg
778- let ep = [if (if (!(fi))
794+ else fj
795+ let er = [if (if (!(fl))
779796 then true
780- else eJ(dt))
797+ else eL(dv))
781798 then true
782- else aG("put operation is blocked by admin"), if ((size(dt.payments) == 1))
799+ else aG("put operation is blocked by admin"), if ((size(dv.payments) == 1))
783800 then true
784801 else aG("exactly 1 payment are expected")]
785- if ((ep == ep))
802+ if ((er == er))
786803 then {
787- let fj = dt.payments[0]
788- let dK = fj.assetId
789- let dJ = fj.amount
790- let X = dt.caller
791- let Y = dt.transactionId
792- let fk = dI(dJ, dK, X, Y)
793- if ((fk == fk))
804+ let fm = dv.payments[0]
805+ let dM = fm.assetId
806+ let dL = fm.amount
807+ let X = dv.caller
808+ let Y = dv.transactionId
809+ let fn = dK(dL, dM, X, Y)
810+ if ((fn == fn))
794811 then {
795- let dO = fk._5
796- let fl = fk._4
797- let dH = fk._3
798- let cV = fk._2
799- let fm = fk._1
800- let fn = if (if ((fe > 0))
801- then (fe > fm)
812+ let dQ = fn._5
813+ let fo = fn._4
814+ let dJ = fn._3
815+ let cV = fn._2
816+ let fp = fn._1
817+ let fq = if (if ((fh > 0))
818+ then (fh > fp)
802819 else false)
803- then aG(makeString(["amount to receive is less than ", toString(fe)], ""))
804- else fm
805- let dC = dA(fn)
806- if ((dC == dC))
820+ then aG(makeString(["amount to receive is less than ", toString(fh)], ""))
821+ else fp
822+ let dE = dC(fq)
823+ if ((dE == dE))
807824 then {
808- let eY = if (ff)
825+ let fa = if (fi)
809826 then {
810- let fo = invoke(bf, "stake", nil, [AttachedPayment(aZ, fn)])
811- if ((fo == fo))
827+ let fr = invoke(bf, "stake", nil, [AttachedPayment(aZ, fq)])
828+ if ((fr == fr))
812829 then nil
813830 else throw("Strict value is not equal to itself.")
814831 }
815- else [ScriptTransfer(dt.caller, fn, aZ)]
816- let fp = if ((dH > 0))
817- then [ScriptTransfer(aK, dH, dK)]
832+ else [ScriptTransfer(dv.caller, fq, aZ)]
833+ let fs = if ((dJ > 0))
834+ then [ScriptTransfer(aK, dJ, dM)]
818835 else nil
819- let fq = if ((this == aK))
836+ let ft = if ((this == aK))
820837 then $Tuple2(0, 0)
821- else if (dO)
822- then $Tuple2(-(dH), 0)
823- else $Tuple2(0, -(dH))
824- let db = fq._1
825- let dc = fq._2
826- let fr = da(db, dc, 0)
827- let fb = fr._1
828- let cZ = fr._2
829- $Tuple2((((cV ++ eY) ++ fp) ++ fb), fn)
838+ else if (dQ)
839+ then $Tuple2(-(dJ), 0)
840+ else $Tuple2(0, -(dJ))
841+ let db = ft._1
842+ let dc = ft._2
843+ let fu = da(db, dc, 0)
844+ let fd = fu._1
845+ let cZ = fu._2
846+ let fe = di(cZ)
847+ if ((fe == fe))
848+ then $Tuple2((((cV ++ fa) ++ fs) ++ fd), fq)
849+ else throw("Strict value is not equal to itself.")
830850 }
831851 else throw("Strict value is not equal to itself.")
832852 }
833853 else throw("Strict value is not equal to itself.")
834854 }
835855 else throw("Strict value is not equal to itself.")
836856 }
837857
838858
839859
840-@Callable(dt)
841-func putOneTknREADONLY (dK,dJ) = {
842- let fs = dI(dJ, aQ(dK), unit, unit)
843- let fm = fs._1
844- let cV = fs._2
845- let dH = fs._3
846- let fl = fs._4
847- let dO = fs._5
848- $Tuple2(nil, $Tuple3(fm, dH, fl))
860+@Callable(dv)
861+func putOneTknREADONLY (dM,dL) = {
862+ let fv = dK(dL, aQ(dM), unit, unit)
863+ let fp = fv._1
864+ let cV = fv._2
865+ let dJ = fv._3
866+ let fo = fv._4
867+ let dQ = fv._5
868+ $Tuple2(nil, $Tuple3(fp, dJ, fo))
849869 }
850870
851871
852872
853-@Callable(dt)
854-func getOneTkn (ft,fe) = {
855- let fg = {
856- let fh = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
857- if ($isInstanceOf(fh, "Boolean"))
858- then fh
859- else throw(($getType(fh) + " couldn't be cast to Boolean"))
873+@Callable(dv)
874+func getOneTkn (fw,fh) = {
875+ let fj = {
876+ let fk = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
877+ if ($isInstanceOf(fk, "Boolean"))
878+ then fk
879+ else throw(($getType(fk) + " couldn't be cast to Boolean"))
860880 }
861- let fu = if (if (aL())
881+ let fx = if (if (aL())
862882 then true
863883 else (aY == n))
864884 then true
865- else fg
866- let ep = [if (if (!(fu))
885+ else fj
886+ let er = [if (if (!(fx))
867887 then true
868- else eJ(dt))
888+ else eL(dv))
869889 then true
870- else aG("get operation is blocked by admin"), if ((size(dt.payments) == 1))
890+ else aG("get operation is blocked by admin"), if ((size(dv.payments) == 1))
871891 then true
872892 else aG("exactly 1 payment are expected")]
873- if ((ep == ep))
893+ if ((er == er))
874894 then {
875- let eo = aQ(ft)
876- let fj = dt.payments[0]
877- let dK = fj.assetId
878- let dW = fj.amount
879- let X = dt.caller
880- let Y = dt.transactionId
881- let fv = en(eo, dW, dK, X, Y)
882- if ((fv == fv))
895+ let eq = aQ(fw)
896+ let fm = dv.payments[0]
897+ let dM = fm.assetId
898+ let dY = fm.amount
899+ let X = dv.caller
900+ let Y = dv.transactionId
901+ let fy = ep(eq, dY, dM, X, Y)
902+ if ((fy == fy))
883903 then {
884- let eq = fv._5
885- let fl = fv._4
886- let dH = fv._3
887- let cV = fv._2
888- let fw = fv._1
889- let dB = if (if ((fe > 0))
890- then (fe > fw)
904+ let es = fy._5
905+ let fo = fy._4
906+ let dJ = fy._3
907+ let cV = fy._2
908+ let fz = fy._1
909+ let dD = if (if ((fh > 0))
910+ then (fh > fz)
891911 else false)
892- then aG(makeString(["amount to receive is less than ", toString(fe)], ""))
893- else fw
894- let fx = invoke(aJ, "burn", [dW], [AttachedPayment(dK, dW)])
895- if ((fx == fx))
912+ then aG(makeString(["amount to receive is less than ", toString(fh)], ""))
913+ else fz
914+ let fA = invoke(aJ, "burn", [dY], [AttachedPayment(dM, dY)])
915+ if ((fA == fA))
896916 then {
897- let fy = [ScriptTransfer(X, dB, eo)]
898- let fp = if ((dH > 0))
899- then [ScriptTransfer(aK, dH, eo)]
917+ let fB = [ScriptTransfer(X, dD, eq)]
918+ let fs = if ((dJ > 0))
919+ then [ScriptTransfer(aK, dJ, eq)]
900920 else nil
901- let fz = {
902- let fA = if ((this == aK))
921+ let fC = {
922+ let fD = if ((this == aK))
903923 then 0
904- else dH
905- if (eq)
906- then $Tuple2(-((dB + fA)), 0)
907- else $Tuple2(0, -((dB + fA)))
924+ else dJ
925+ if (es)
926+ then $Tuple2(-((dD + fD)), 0)
927+ else $Tuple2(0, -((dD + fD)))
908928 }
909- let db = fz._1
910- let dc = fz._2
911- let fB = da(db, dc, 0)
912- let fb = fB._1
913- let cZ = fB._2
914- $Tuple2((((cV ++ fy) ++ fp) ++ fb), dB)
929+ let db = fC._1
930+ let dc = fC._2
931+ let fE = da(db, dc, 0)
932+ let fd = fE._1
933+ let cZ = fE._2
934+ let fe = di(cZ)
935+ if ((fe == fe))
936+ then $Tuple2((((cV ++ fB) ++ fs) ++ fd), dD)
937+ else throw("Strict value is not equal to itself.")
915938 }
916939 else throw("Strict value is not equal to itself.")
917940 }
918941 else throw("Strict value is not equal to itself.")
919942 }
920943 else throw("Strict value is not equal to itself.")
921944 }
922945
923946
924947
925-@Callable(dt)
926-func getOneTknREADONLY (eo,dW) = {
927- let fC = en(aQ(eo), dW, aZ, unit, unit)
928- let fw = fC._1
929- let cV = fC._2
930- let dH = fC._3
931- let fl = fC._4
932- let eq = fC._5
933- $Tuple2(nil, $Tuple3(fw, dH, fl))
948+@Callable(dv)
949+func getOneTknREADONLY (eq,dY) = {
950+ let fF = ep(aQ(eq), dY, aZ, unit, unit)
951+ let fz = fF._1
952+ let cV = fF._2
953+ let dJ = fF._3
954+ let fo = fF._4
955+ let es = fF._5
956+ $Tuple2(nil, $Tuple3(fz, dJ, fo))
934957 }
935958
936959
937960
938-@Callable(dt)
939-func unstakeAndGetOneTkn (fD,ft,fe) = {
940- let fg = {
941- let fh = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
942- if ($isInstanceOf(fh, "Boolean"))
943- then fh
944- else throw(($getType(fh) + " couldn't be cast to Boolean"))
961+@Callable(dv)
962+func unstakeAndGetOneTkn (fG,fw,fh) = {
963+ let fj = {
964+ let fk = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
965+ if ($isInstanceOf(fk, "Boolean"))
966+ then fk
967+ else throw(($getType(fk) + " couldn't be cast to Boolean"))
945968 }
946- let fu = if (if (aL())
969+ let fx = if (if (aL())
947970 then true
948971 else (aY == n))
949972 then true
950- else fg
951- let ep = [if (if (!(fu))
973+ else fj
974+ let er = [if (if (!(fx))
952975 then true
953- else eJ(dt))
976+ else eL(dv))
954977 then true
955- else aG("get operation is blocked by admin"), if ((size(dt.payments) == 0))
978+ else aG("get operation is blocked by admin"), if ((size(dv.payments) == 0))
956979 then true
957980 else aG("no payments are expected")]
958- if ((ep == ep))
981+ if ((er == er))
959982 then {
960- let eo = aQ(ft)
961- let X = dt.caller
962- let Y = dt.transactionId
963- let fE = invoke(bf, "unstake", [toBase58String(aZ), fD], nil)
964- if ((fE == fE))
983+ let eq = aQ(fw)
984+ let X = dv.caller
985+ let Y = dv.transactionId
986+ let fH = invoke(bf, "unstake", [toBase58String(aZ), fG], nil)
987+ if ((fH == fH))
965988 then {
966- let fF = en(eo, fD, aZ, X, Y)
967- if ((fF == fF))
989+ let fI = ep(eq, fG, aZ, X, Y)
990+ if ((fI == fI))
968991 then {
969- let eq = fF._5
970- let fl = fF._4
971- let dH = fF._3
972- let cV = fF._2
973- let fw = fF._1
974- let dB = if (if ((fe > 0))
975- then (fe > fw)
992+ let es = fI._5
993+ let fo = fI._4
994+ let dJ = fI._3
995+ let cV = fI._2
996+ let fz = fI._1
997+ let dD = if (if ((fh > 0))
998+ then (fh > fz)
976999 else false)
977- then aG(makeString(["amount to receive is less than ", toString(fe)], ""))
978- else fw
979- let fx = invoke(aJ, "burn", [fD], [AttachedPayment(aZ, fD)])
980- if ((fx == fx))
1000+ then aG(makeString(["amount to receive is less than ", toString(fh)], ""))
1001+ else fz
1002+ let fA = invoke(aJ, "burn", [fG], [AttachedPayment(aZ, fG)])
1003+ if ((fA == fA))
9811004 then {
982- let fy = [ScriptTransfer(dt.caller, dB, eo)]
983- let fp = if ((dH > 0))
984- then [ScriptTransfer(aK, dH, eo)]
1005+ let fB = [ScriptTransfer(dv.caller, dD, eq)]
1006+ let fs = if ((dJ > 0))
1007+ then [ScriptTransfer(aK, dJ, eq)]
9851008 else nil
986- let fG = {
987- let fA = if ((this == aK))
1009+ let fJ = {
1010+ let fD = if ((this == aK))
9881011 then 0
989- else dH
990- if (eq)
991- then $Tuple2(-((dB + fA)), 0)
992- else $Tuple2(0, -((dB + fA)))
1012+ else dJ
1013+ if (es)
1014+ then $Tuple2(-((dD + fD)), 0)
1015+ else $Tuple2(0, -((dD + fD)))
9931016 }
994- let db = fG._1
995- let dc = fG._2
996- let fH = da(db, dc, 0)
997- let fb = fH._1
998- let cZ = fH._2
999- $Tuple2((((cV ++ fy) ++ fp) ++ fb), dB)
1017+ let db = fJ._1
1018+ let dc = fJ._2
1019+ let fK = da(db, dc, 0)
1020+ let fd = fK._1
1021+ let cZ = fK._2
1022+ let fe = di(cZ)
1023+ if ((fe == fe))
1024+ then $Tuple2((((cV ++ fB) ++ fs) ++ fd), dD)
1025+ else throw("Strict value is not equal to itself.")
10001026 }
10011027 else throw("Strict value is not equal to itself.")
10021028 }
10031029 else throw("Strict value is not equal to itself.")
10041030 }
10051031 else throw("Strict value is not equal to itself.")
10061032 }
10071033 else throw("Strict value is not equal to itself.")
10081034 }
10091035
10101036
10111037
1012-@Callable(dt)
1038+@Callable(dv)
10131039 func get () = {
1014- let cG = ds(dt)
1015- let fI = cG._1
1040+ let cG = du(dv)
1041+ let fL = cG._1
10161042 let cn = cG._2
1017- let dv = cG._3
1043+ let dx = cG._3
10181044 let bV = cG._4
10191045 let co = cG._5
1020- let fJ = invoke(aJ, "burn", [dv], [AttachedPayment(bV, dv)])
1021- if ((fJ == fJ))
1046+ let fM = invoke(aJ, "burn", [dx], [AttachedPayment(bV, dx)])
1047+ if ((fM == fM))
10221048 then {
1023- let fK = da(-(fI), -(cn), 0)
1024- let fb = fK._1
1025- let cZ = fK._2
1026- (co ++ fb)
1049+ let fN = da(-(fL), -(cn), 0)
1050+ let fd = fN._1
1051+ let cZ = fN._2
1052+ let fe = di(cZ)
1053+ if ((fe == fe))
1054+ then (co ++ fd)
1055+ else throw("Strict value is not equal to itself.")
10271056 }
10281057 else throw("Strict value is not equal to itself.")
10291058 }
10301059
10311060
10321061
1033-@Callable(dt)
1034-func getNoLess (fL,fM) = {
1035- let cG = ds(dt)
1062+@Callable(dv)
1063+func getNoLess (fO,fP) = {
1064+ let cG = du(dv)
10361065 let cm = cG._1
10371066 let cn = cG._2
1038- let dv = cG._3
1067+ let dx = cG._3
10391068 let bV = cG._4
10401069 let co = cG._5
1041- if ((fL > cm))
1042- then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fL)))
1043- else if ((fM > cn))
1044- then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fM)))
1070+ if ((fO > cm))
1071+ then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fO)))
1072+ else if ((fP > cn))
1073+ then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fP)))
10451074 else {
1046- let fJ = invoke(aJ, "burn", [dv], [AttachedPayment(bV, dv)])
1047- if ((fJ == fJ))
1075+ let fM = invoke(aJ, "burn", [dx], [AttachedPayment(bV, dx)])
1076+ if ((fM == fM))
10481077 then {
1049- let fN = da(-(cm), -(cn), 0)
1050- let fb = fN._1
1051- let cZ = fN._2
1052- (co ++ fb)
1078+ let fQ = da(-(cm), -(cn), 0)
1079+ let fd = fQ._1
1080+ let cZ = fQ._2
1081+ let fe = di(cZ)
1082+ if ((fe == fe))
1083+ then (co ++ fd)
1084+ else throw("Strict value is not equal to itself.")
10531085 }
10541086 else throw("Strict value is not equal to itself.")
10551087 }
10561088 }
10571089
10581090
10591091
1060-@Callable(dt)
1061-func unstakeAndGet (dB) = {
1062- let fO = if ((size(dt.payments) != 0))
1092+@Callable(dv)
1093+func unstakeAndGet (dD) = {
1094+ let fR = if ((size(dv.payments) != 0))
10631095 then throw("No payments are expected")
10641096 else true
1065- if ((fO == fO))
1097+ if ((fR == fR))
10661098 then {
10671099 let bK = aN()
10681100 let bX = fromBase58String(bK[q])
1069- let fE = invoke(bf, "unstake", [toBase58String(bX), dB], nil)
1070- if ((fE == fE))
1101+ let fH = invoke(bf, "unstake", [toBase58String(bX), dD], nil)
1102+ if ((fH == fH))
10711103 then {
1072- let cG = bT(toBase58String(dt.transactionId), toBase58String(bX), dB, dt.caller)
1104+ let cG = bT(toBase58String(dv.transactionId), toBase58String(bX), dD, dv.caller)
10731105 let cm = cG._1
10741106 let cn = cG._2
10751107 let ca = parseIntValue(cG._9)
10761108 let co = cG._10
1077- let fP = if (if (aL())
1109+ let fS = if (if (aL())
10781110 then true
10791111 else (ca == n))
10801112 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
10811113 else true
1082- if ((fP == fP))
1114+ if ((fS == fS))
10831115 then {
1084- let fJ = invoke(aJ, "burn", [dB], [AttachedPayment(bX, dB)])
1085- if ((fJ == fJ))
1116+ let fM = invoke(aJ, "burn", [dD], [AttachedPayment(bX, dD)])
1117+ if ((fM == fM))
10861118 then {
1087- let fQ = da(-(cm), -(cn), 0)
1088- let fb = fQ._1
1089- let cZ = fQ._2
1090- (co ++ fb)
1119+ let fT = da(-(cm), -(cn), 0)
1120+ let fd = fT._1
1121+ let cZ = fT._2
1122+ let fe = di(cZ)
1123+ if ((fe == fe))
1124+ then (co ++ fd)
1125+ else throw("Strict value is not equal to itself.")
10911126 }
10921127 else throw("Strict value is not equal to itself.")
10931128 }
10941129 else throw("Strict value is not equal to itself.")
10951130 }
10961131 else throw("Strict value is not equal to itself.")
10971132 }
10981133 else throw("Strict value is not equal to itself.")
10991134 }
11001135
11011136
11021137
1103-@Callable(dt)
1104-func unstakeAndGetNoLess (fD,fR,fM) = {
1105- let fu = if (aL())
1138+@Callable(dv)
1139+func unstakeAndGetNoLess (fG,fU,fP) = {
1140+ let fx = if (aL())
11061141 then true
11071142 else (aY == n)
1108- let ep = [if (!(fu))
1143+ let er = [if (!(fx))
11091144 then true
1110- else throw("get operation is blocked by admin"), if ((size(dt.payments) == 0))
1145+ else throw("get operation is blocked by admin"), if ((size(dv.payments) == 0))
11111146 then true
11121147 else throw("no payments are expected")]
1113- if ((ep == ep))
1148+ if ((er == er))
11141149 then {
1115- let fE = invoke(bf, "unstake", [toBase58String(aZ), fD], nil)
1116- if ((fE == fE))
1150+ let fH = invoke(bf, "unstake", [toBase58String(aZ), fG], nil)
1151+ if ((fH == fH))
11171152 then {
1118- let cG = bT(toBase58String(dt.transactionId), toBase58String(aZ), fD, dt.caller)
1153+ let cG = bT(toBase58String(dv.transactionId), toBase58String(aZ), fG, dv.caller)
11191154 let cm = cG._1
11201155 let cn = cG._2
11211156 let co = cG._10
1122- let fS = [if ((cm >= fR))
1157+ let fV = [if ((cm >= fU))
11231158 then true
1124- else throw(makeString(["amount asset amount to receive is less than ", toString(fR)], "")), if ((cn >= fM))
1159+ else throw(makeString(["amount asset amount to receive is less than ", toString(fU)], "")), if ((cn >= fP))
11251160 then true
1126- else throw(makeString(["price asset amount to receive is less than ", toString(fM)], ""))]
1127- if ((fS == fS))
1161+ else throw(makeString(["price asset amount to receive is less than ", toString(fP)], ""))]
1162+ if ((fV == fV))
11281163 then {
1129- let fJ = invoke(aJ, "burn", [fD], [AttachedPayment(aZ, fD)])
1130- if ((fJ == fJ))
1164+ let fM = invoke(aJ, "burn", [fG], [AttachedPayment(aZ, fG)])
1165+ if ((fM == fM))
11311166 then {
1132- let fT = da(-(cm), -(cn), 0)
1133- let fb = fT._1
1134- let cZ = fT._2
1135- (co ++ fb)
1167+ let fW = da(-(cm), -(cn), 0)
1168+ let fd = fW._1
1169+ let cZ = fW._2
1170+ let fe = di(cZ)
1171+ if ((fe == fe))
1172+ then (co ++ fd)
1173+ else throw("Strict value is not equal to itself.")
11361174 }
11371175 else throw("Strict value is not equal to itself.")
11381176 }
11391177 else throw("Strict value is not equal to itself.")
11401178 }
11411179 else throw("Strict value is not equal to itself.")
11421180 }
11431181 else throw("Strict value is not equal to itself.")
11441182 }
11451183
11461184
11471185
1148-@Callable(dt)
1149-func activate (fU,fV) = if ((toString(dt.caller) != toString(aJ)))
1186+@Callable(dv)
1187+func activate (fX,fY) = if ((toString(dv.caller) != toString(aJ)))
11501188 then throw("permissions denied")
1151- else $Tuple2([StringEntry(aa(), fU), StringEntry(ab(), fV)], "success")
1189+ else $Tuple2([StringEntry(aa(), fX), StringEntry(ab(), fY)], "success")
11521190
11531191
11541192
1155-@Callable(dt)
1193+@Callable(dv)
11561194 func refreshKLp () = {
1157- let fW = valueOrElse(getInteger(ag), 0)
1158- let fX = if (((height - fW) >= aj))
1195+ let fZ = valueOrElse(getInteger(ag), 0)
1196+ let ga = if (((height - fZ) >= aj))
11591197 then unit
11601198 else aG(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
1161- if ((fX == fX))
1199+ if ((ga == ga))
11621200 then {
1163- let dn = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, af), "0")), aI("invalid kLp"))
1164- let fY = da(0, 0, 0)
1165- let fZ = fY._1
1166- let cZ = fY._2
1167- let dh = if ((dn != cZ))
1168- then fZ
1201+ let dp = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, af), "0")), aI("invalid kLp"))
1202+ let gb = da(0, 0, 0)
1203+ let gc = gb._1
1204+ let cZ = gb._2
1205+ let dh = if ((dp != cZ))
1206+ then gc
11691207 else aG("nothing to refresh")
11701208 $Tuple2(dh, toString(cZ))
11711209 }
11721210 else throw("Strict value is not equal to itself.")
11731211 }
11741212
11751213
11761214
1177-@Callable(dt)
1215+@Callable(dv)
11781216 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aN())
11791217
11801218
11811219
1182-@Callable(dt)
1220+@Callable(dv)
11831221 func getAccBalanceWrapperREADONLY (bx) = $Tuple2(nil, bw(bx))
11841222
11851223
11861224
1187-@Callable(dt)
1225+@Callable(dv)
11881226 func calcPricesWrapperREADONLY (bE,bF,bJ) = {
11891227 let bS = bI(bE, bF, bJ)
11901228 $Tuple2(nil, [toString(bS[0]), toString(bS[1]), toString(bS[2])])
11911229 }
11921230
11931231
11941232
1195-@Callable(dt)
1233+@Callable(dv)
11961234 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11971235
11981236
11991237
1200-@Callable(dt)
1238+@Callable(dv)
12011239 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
12021240
12031241
12041242
1205-@Callable(dt)
1243+@Callable(dv)
12061244 func calcPriceBigIntWrapperREADONLY (bz,bA) = $Tuple2(nil, toString(by(parseBigIntValue(bz), parseBigIntValue(bA))))
12071245
12081246
12091247
1210-@Callable(dt)
1248+@Callable(dv)
12111249 func estimatePutOperationWrapperREADONLY (bU,cq,cr,cs,ct,cu,X,cv,cw) = $Tuple2(nil, cp(bU, cq, cr, cs, ct, cu, X, cv, cw))
12121250
12131251
12141252
1215-@Callable(dt)
1253+@Callable(dv)
12161254 func estimateGetOperationWrapperREADONLY (bU,bV,bW,X) = {
12171255 let cG = bT(bU, bV, bW, addressFromStringValue(X))
12181256 $Tuple2(nil, $Tuple10(cG._1, cG._2, cG._3, cG._4, cG._5, cG._6, cG._7, toString(cG._8), cG._9, cG._10))
12191257 }
12201258
12211259
12221260
1223-@Callable(dt)
1261+@Callable(dv)
12241262 func statsREADONLY () = {
12251263 let bK = aN()
12261264 let bX = fromBase58String(bK[q])
1227- let ga = bK[r]
1228- let gb = bK[s]
1265+ let gd = bK[r]
1266+ let ge = bK[s]
12291267 let cz = bK[v]
12301268 let cA = bK[w]
12311269 let bL = parseIntValue(bK[t])
12321270 let bM = parseIntValue(bK[u])
1233- let gc = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1234- let gd = bw(ga)
1235- let ge = bw(gb)
1236- let gf = if ((gc == 0))
1271+ let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1272+ let gg = bw(gd)
1273+ let gh = bw(ge)
1274+ let gi = if ((gf == 0))
12371275 then [e, e, e]
1238- else bI(gd, ge, gc)
1276+ else bI(gg, gh, gf)
12391277 let ch = 0
1240- let gg = G(gf[1], b)
1241- let gh = G(gf[2], b)
1242- let gi = value(getInteger(aJ, au(toString(this))))
1243- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gd), toString(ge), toString(gc), toString(ch), toString(gg), toString(gh), toString(gi)], j))
1278+ let gj = G(gi[1], b)
1279+ let gk = G(gi[2], b)
1280+ let gl = value(getInteger(aJ, au(toString(this))))
1281+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gg), toString(gh), toString(gf), toString(ch), toString(gj), toString(gk), toString(gl)], j))
12441282 }
12451283
12461284
12471285
1248-@Callable(dt)
1286+@Callable(dv)
12491287 func evaluatePutByAmountAssetREADONLY (cr) = {
12501288 let bK = aN()
12511289 let bX = fromBase58String(bK[q])
12521290 let cx = bK[r]
12531291 let bY = fromBase58String(cx)
12541292 let cy = bK[s]
12551293 let bZ = fromBase58String(cy)
12561294 let bL = parseIntValue(bK[t])
12571295 let bM = parseIntValue(bK[u])
12581296 let ca = bK[p]
1259- let gc = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1260- let gd = bw(cx)
1261- let ge = bw(cy)
1262- let bG = D(gd, bL)
1263- let bH = D(ge, bM)
1264- let cg = if ((gc == 0))
1297+ let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1298+ let gg = bw(cx)
1299+ let gh = bw(cy)
1300+ let bG = D(gg, bL)
1301+ let bH = D(gh, bM)
1302+ let cg = if ((gf == 0))
12651303 then e
12661304 else by(bH, bG)
12671305 let cD = D(cr, bL)
12681306 let cE = fraction(cD, cg, d)
12691307 let ct = G(cE, bM)
1270- let dz = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1271- let cO = dz._1
1272- let gj = dz._3
1273- let cc = dz._4
1274- let ce = dz._5
1275- let cb = dz._6
1308+ let dB = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1309+ let cO = dB._1
1310+ let gm = dB._3
1311+ let cc = dB._4
1312+ let ce = dB._5
1313+ let cb = dB._6
12761314 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
12771315 }
12781316
12791317
12801318
1281-@Callable(dt)
1319+@Callable(dv)
12821320 func evaluatePutByPriceAssetREADONLY (ct) = {
12831321 let bK = aN()
12841322 let bX = fromBase58String(bK[q])
12851323 let cx = bK[r]
12861324 let bY = fromBase58String(cx)
12871325 let cy = bK[s]
12881326 let bZ = fromBase58String(cy)
12891327 let bL = parseIntValue(bK[t])
12901328 let bM = parseIntValue(bK[u])
12911329 let ca = bK[p]
1292- let gc = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1293- let gk = bw(cx)
1294- let gl = bw(cy)
1295- let gm = D(gk, bL)
1296- let gn = D(gl, bM)
1297- let cg = if ((gc == 0))
1330+ let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1331+ let gn = bw(cx)
1332+ let go = bw(cy)
1333+ let gp = D(gn, bL)
1334+ let gq = D(go, bM)
1335+ let cg = if ((gf == 0))
12981336 then e
1299- else by(gn, gm)
1337+ else by(gq, gp)
13001338 let cE = D(ct, bM)
13011339 let cD = fraction(cE, d, cg)
13021340 let cr = G(cD, bL)
1303- let dz = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1304- let cO = dz._1
1305- let gj = dz._3
1306- let cc = dz._4
1307- let ce = dz._5
1308- let cb = dz._6
1341+ let dB = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1342+ let cO = dB._1
1343+ let gm = dB._3
1344+ let cc = dB._4
1345+ let ce = dB._5
1346+ let cb = dB._6
13091347 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
13101348 }
13111349
13121350
13131351
1314-@Callable(dt)
1315-func evaluateGetREADONLY (go,gp) = {
1316- let cG = bT("", go, gp, this)
1352+@Callable(dv)
1353+func evaluateGetREADONLY (gr,gs) = {
1354+ let cG = bT("", gr, gs, this)
13171355 let cm = cG._1
13181356 let cn = cG._2
13191357 let cc = cG._5
13201358 let ce = cG._6
13211359 let cb = cG._7
13221360 let ch = cG._8
13231361 let ca = parseIntValue(cG._9)
13241362 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cm), toString(cn), toString(cc), toString(ce), toString(cb), toString(ch), toString(ca)], j))
13251363 }
13261364
13271365
1328-@Verifier(gq)
1329-func gr () = {
1330- let gs = {
1331- let dE = eG()
1332- if ($isInstanceOf(dE, "ByteVector"))
1366+@Verifier(gt)
1367+func gu () = {
1368+ let gv = {
1369+ let dG = eI()
1370+ if ($isInstanceOf(dG, "ByteVector"))
13331371 then {
1334- let eK = dE
1335- eK
1372+ let eM = dG
1373+ eM
13361374 }
1337- else if ($isInstanceOf(dE, "Unit"))
1338- then gq.senderPublicKey
1375+ else if ($isInstanceOf(dG, "Unit"))
1376+ then gt.senderPublicKey
13391377 else throw("Match error")
13401378 }
1341- let dE = gq
1342- if ($isInstanceOf(dE, "Order"))
1379+ let dG = gt
1380+ if ($isInstanceOf(dG, "Order"))
13431381 then {
1344- let dj = dE
1345- let gt = aM()
1346- let az = di(dj)
1347- let aA = sigVerify(dj.bodyBytes, dj.proofs[0], dj.senderPublicKey)
1348- let aB = sigVerify(dj.bodyBytes, dj.proofs[1], gt)
1382+ let dl = dG
1383+ let gw = aM()
1384+ let az = dk(dl)
1385+ let aA = sigVerify(dl.bodyBytes, dl.proofs[0], dl.senderPublicKey)
1386+ let aB = sigVerify(dl.bodyBytes, dl.proofs[1], gw)
13491387 if (if (if (az)
13501388 then aA
13511389 else false)
13521390 then aB
13531391 else false)
13541392 then true
13551393 else ay(az, aA, aB)
13561394 }
1357- else if ($isInstanceOf(dE, "SetScriptTransaction"))
1395+ else if ($isInstanceOf(dG, "SetScriptTransaction"))
13581396 then {
1359- let eH = dE
1360- let gu = blake2b256(value(eH.script))
1361- let gv = fromBase64String(value(getString(aJ, aw())))
1362- let gw = scriptHash(this)
1363- if (if ((gv == gu))
1364- then (gw != gu)
1397+ let eJ = dG
1398+ let gx = blake2b256(value(eJ.script))
1399+ let gy = fromBase64String(value(getString(aJ, aw())))
1400+ let gz = scriptHash(this)
1401+ if (if ((gy == gx))
1402+ then (gz != gx)
13651403 else false)
13661404 then true
1367- else sigVerify(gq.bodyBytes, gq.proofs[0], gs)
1405+ else sigVerify(gt.bodyBytes, gt.proofs[0], gv)
13681406 }
1369- else sigVerify(gq.bodyBytes, gq.proofs[0], gs)
1407+ else sigVerify(gt.bodyBytes, gt.proofs[0], gv)
13701408 }
13711409

github/deemru/w8io/169f3d6 
312.98 ms