tx · Cw9Ga5AEVmAwX6h3ZgAezy6aPD4nx91gEGrTrVWj54j7

3PCBWDTA6jrFswd7gQgaE3Xk7gLM5RKofvp:  -0.03800000 Waves

2023.02.14 13:44 [3514775] smart account 3PCBWDTA6jrFswd7gQgaE3Xk7gLM5RKofvp > SELF 0.00000000 Waves

{ "type": 13, "id": "Cw9Ga5AEVmAwX6h3ZgAezy6aPD4nx91gEGrTrVWj54j7", "fee": 3800000, "feeAssetId": null, "timestamp": 1676371448261, "version": 2, "chainId": 87, "sender": "3PCBWDTA6jrFswd7gQgaE3Xk7gLM5RKofvp", "senderPublicKey": "8qbG6ndWYubPjXV48b8eH12vFyqazNtd8RhUNCAYDswG", "proofs": [ "Y6iqJhALsFeajfCtrw4VnxKEMYgianWNCWqxaHs91fdSV56ZMpi4eoKsimgV7VWMNMbxExAmwfzQut2LXxVomsv" ], "script": "base64:BgLRLwgCEgQKAgEEEgYKBAEEAQgSAwoBCBIAEgQKAgEEEgMKAQESBAoCAQQSBAoCCAESBAoCCAESBAoCCAESBQoDAQgBEgASBAoCAQESAwoBARIFCgMBAQESBAoCCAgSABIAEgMKAQgSBQoDAQEBEgQKAgEBEgQKAggBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgASAwoBARIDCgEBEgQKAggBIgpsUGRlY2ltYWxzIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiILd2F2ZXNTdHJpbmciA1NFUCIKUG9vbEFjdGl2ZSIPUG9vbFB1dERpc2FibGVkIhNQb29sTWF0Y2hlckRpc2FibGVkIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIg1pZHhQb29sU3RhdHVzIhBpZHhQb29sTFBBc3NldElkIg1pZHhBbXRBc3NldElkIg9pZHhQcmljZUFzc2V0SWQiDmlkeEFtdEFzc2V0RGNtIhBpZHhQcmljZUFzc2V0RGNtIg5pZHhJQW10QXNzZXRJZCIQaWR4SVByaWNlQXNzZXRJZCINaWR4TFBBc3NldERjbSISaWR4UG9vbEFtdEFzc2V0QW10IhRpZHhQb29sUHJpY2VBc3NldEFtdCIRaWR4UG9vbExQQXNzZXRBbXQiGWlkeEZhY3RvcnlTdGFraW5nQ29udHJhY3QiGmlkeEZhY3RvcnlTbGlwcGFnZUNvbnRyYWN0IgV0b1gxOCIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCILdG9YMThCaWdJbnQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiDHN3YXBDb250cmFjdCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgl0aW1lc3RhbXAiA3BhdSILdXNlckFkZHJlc3MiBHR4SWQiA2dhdSICYWEiAnBhIgZrZXlGZWUiCmZlZURlZmF1bHQiA2ZlZSIGa2V5S0xwIhVrZXlLTHBSZWZyZXNoZWRIZWlnaHQiEmtleUtMcFJlZnJlc2hEZWxheSIWa0xwUmVmcmVzaERlbGF5RGVmYXVsdCIPa0xwUmVmcmVzaERlbGF5IhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIgVpbkZlZSIBQCIGb3V0RmVlIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDg0Njk4NjM1Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiEGFtb3VudEJhbGFuY2VYMTgiD3ByaWNlQmFsYW5jZVgxOCIKdXBkYXRlZEtMcCIOY2FsY0N1cnJlbnRLTHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudEtMcCIScmVmcmVzaEtMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkS0xwIgZvbGRLTHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyMTU0MTIxNzUzIgNrTHAiDSR0MDIyMTkzMjIyOTMiDXVudXNlZEFjdGlvbnMiBmtMcE5ldyIMaXNPcmRlclZhbGlkIgRpbmZvIgljb21tb25HZXQiAWkiA3BtdCIGcG10QW10Igljb21tb25QdXQiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiBmVzdFB1dCIEZW1pdCIGYW1vdW50IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IgckbWF0Y2gwIhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiCWZlZUFtb3VudCIPY2FsY1B1dE9uZVRva2VuIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCIGaXNFdmFsIhBhbW91bnRCYWxhbmNlUmF3Ig9wcmljZUJhbGFuY2VSYXciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAyNTQwNjI1Njk5IhBhbW91bnRCYWxhbmNlT2xkIg9wcmljZUJhbGFuY2VPbGQiDSR0MDI1NzAzMjU4NTIiFGFtb3VudEFzc2V0QW1vdW50UmF3IhNwcmljZUFzc2V0QW1vdW50UmF3Ig0kdDAyNTk4NDI2MDQ4Ig1wYXltZW50QW1vdW50IhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAyNzcyOTI3ODk2IgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IhhvdXRJbkFtb3VudEFzc2V0RGVjaW1hbHMiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAyOTk3NDMwMDMwIgt0b3RhbEFtb3VudCINJHQwMzAwMzQzMDI2MCILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIJaXNNYW5hZ2VyIgJwayILbXVzdE1hbmFnZXIiAnBkIg1jbGVhbkFtb3VudEluIglpc1JldmVyc2UiDSR0MDMxOTU3MzIyNjIiCGFzc2V0T3V0Igdhc3NldEluIhJwb29sQXNzZXRJbkJhbGFuY2UiE3Bvb2xBc3NldE91dEJhbGFuY2UiCWFtb3VudE91dCIEb2xkSyIEbmV3SyIGY2hlY2tLIgxhbW91bnRPdXRNaW4iCWFkZHJlc3NUbyILc3dhcENvbnRhY3QiCGNoZWNrTWluIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiINJHQwMzcwNzEzNzUzMyIRcmVmcmVzaEtMcEFjdGlvbnMiEWlzVXBkYXRlZEtMcFZhbGlkIgttYXhTbGlwcGFnZSINJHQwMzgwOTUzODE2MCIMbWluT3V0QW1vdW50IglhdXRvU3Rha2UiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIgdwYXltZW50Ig0kdDAzOTM0ODM5NTAwIgVib251cyITZW1pdEFtb3VudEVzdGltYXRlZCIKZW1pdEFtb3VudCIIc3Rha2VJbnYiB3NlbmRGZWUiDSR0MDQwMDg2NDAyODMiDSR0MDQwMjg2NDAzOTQiDSR0MDQwNzAwNDA4NTciDW91dEFzc2V0SWRTdHIiDWlzR2V0RGlzYWJsZWQiDSR0MDQxNzQyNDE4OTUiD2Ftb3VudEVzdGltYXRlZCIHYnVybkludiINYXNzZXRUcmFuc2ZlciINJHQwNDIzOTU0MjY0MiIQZmVlQW1vdW50Rm9yQ2FsYyINJHQwNDI2NDU0Mjc1MyINJHQwNDMwMTA0MzE2NiINdW5zdGFrZUFtb3VudCIKdW5zdGFrZUludiINJHQwNDQwNzE0NDIyMiINJHQwNDQ3MTc0NDk2NCINJHQwNDQ5Njc0NTA3NSIJb3V0QW10QW10IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNDYwMjE0NjEwMyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINJHQwNDcwNTI0NzEzMyINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIg0kdDA0ODI1OTQ4MzQwIhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyINJHQwNDk2MzU0OTcxNiILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDUwOTAzNTA5NjciEGtMcFVwZGF0ZUFjdGlvbnMiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCINcG9vbExQQmFsYW5jZSISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA1OTYyOTU5Njk4IgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hzAAFhAAgAAWIAgMLXLwABYwkAtgIBAIDC1y8AAWQJALYCAQCAgJC7utat8A0AAWUJALYCAQAAAAFmCQC2AgEAAAABZwkAtgIBAAEAAWgJALYCAQACAAFpAgVXQVZFUwABagICX18AAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAAKAAF5AAEAAXoAAgABQQADAAFCAAEAAUMABwEBRAIBRQFGCQC8AgMJALYCAQUBRQUBZAkAtgIBBQFGAQFHAgFFAUYJALwCAwUBRQUBZAUBRgEBSAIBSQFKCQCgAwEJALwCAwUBSQkAtgIBBQFKBQFkAQFLAwFJAUoBTAkAoAMBCQC9AgQFAUkJALYCAQUBSgUBZAUBTAEBTQMBTgFPAVAJAGsDBQFOBQFPBQFQAQFRAQFJAwkAZgIAAAUBSQkBAS0BBQFJBQFJAQFSAQFJAwkAvwICBQFlBQFJCQC+AgEFAUkFAUkBAVMAAhAlc19fc3dhcENvbnRyYWN0AQFUAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBVQACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFWAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFXAAIRJXMlc19fcHJpY2VfX2xhc3QBAVgCAVkBWgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVkJAMwIAgkApAMBBQFaBQNuaWwFAWoBAmFhAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFiAgJfXwUCYWMBAmFkAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFiAgJfXwUCYWMBAmFlAAIPJXNfX2Ftb3VudEFzc2V0AQJhZgACDiVzX19wcmljZUFzc2V0AAJhZwIHJXNfX2ZlZQACYWgJAGsDAAoFAWIAkE4AAmFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFnBQJhaAACYWoJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWsJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWwJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYW0AHgACYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWwFAmFtAQJhbwACESVzX19mYWN0b3J5Q29uZmlnAQJhcAACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXEBAmFyCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFyAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYXMCAmF0AmF1CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhdAICX18FAmF1AghfX2NvbmZpZwECYXYBAmF3CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF3AQJheAACDCVzX19zaHV0ZG93bgECYXkBAmF6CQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXoBAmFBAAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmFCAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUMEAmFEAmFFAmFGAmFHCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhRAICICgFAmFFAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFGAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhRwECYUgCAmFJAmFKCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYUkFAmFKCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFJCQDMCAICAS4JAMwIAgUCYUoJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUsCAmFJAmFKCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYUkFAmFKCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFJCQDMCAICAS4JAMwIAgUCYUoJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUwBAmFNCQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFNBQNuaWwCASABAmFOAQJhTQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFNBQNuaWwCASAAAmFPCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUgCBQR0aGlzCQEBVAAAAmFQCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUgCBQJhTwUCYUIAAmFRCgACYVIJAPwHBAUCYU8CEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUgIDSW50BQJhUgkAAgEJAKwCAgkAAwEFAmFSAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFTCgACYVIJAPwHBAUCYU8CEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICA0ludAUCYVIJAAIBCQCsAgIJAAMBBQJhUgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJhVAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYU8JAQJheAAHAQJhVQAJANkEAQkBAmFIAgUCYU8JAQJhcAABAmFWAAQCYVcJAQJhSAIFBHRoaXMJAQJhZQAEAmFYCQECYUgCBQR0aGlzCQECYWYABAJhdQkBAmFLAgUCYU8JAQJhdgEFAmFYBAJhdAkBAmFLAgUCYU8JAQJhdgEFAmFXCQC1CQIJAQJhSAIFAmFPCQECYXMCCQCkAwEFAmF0CQCkAwEFAmF1BQFqAQJhWQECYVoDCQAAAgUCYVoFAWkFBHVuaXQJANkEAQUCYVoBAmJhAQJhWgMJAAACBQJhWgUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhWgECYmIBAmJjCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYmMFAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBcAkA2QQBCQCRAwIFAmJjBQFxCQECYVkBCQCRAwIFAmJjBQFyCQECYVkBCQCRAwIFAmJjBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBdQACYmQJAQJiYgEJAQJhVgAAAmJlBQJiZAACYmYIBQJiZQJfMQACYmcIBQJiZQJfMgACYmgIBQJiZQJfMwACYmkIBQJiZQJfNAACYmoIBQJiZQJfNQACYmsIBQJiZQJfNgACYmwIBQJiZQJfNwECYm0ACQC1CQIJAQJhSAIFAmFPCQECYW8ABQFqAAJibgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJtAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYm8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJibQAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJwCgJicQJicgJicwJidAJidQJidgJidwJieAJieQJiegkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnEJAMwIAgkApAMBBQJicgkAzAgCCQCkAwEFAmJzCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYncJAMwIAgkApAMBBQJieAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoFA25pbAUBagECYkEGAmJCAmJDAmJEAmJ0AmJ3AmJ4CQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwkAzAgCCQCkAwEFAmJECQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4BQNuaWwFAWoBAmJFAQJiRgMJAAACBQJiRgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYkYBAmJHAgJiSAJiSQkAvAIDBQJiSAUBZAUCYkkBAmJKAwJiSAJiSQFMCQC9AgQFAmJIBQFkBQJiSQUBTAECYksEAmJMAmJNAmJOAmJPBAJiUAkBAUQCBQJiTgUCYkwEAmJRCQEBRAIFAmJPBQJiTQkBAmJHAgUCYlEFAmJQAQJiUgMCYk4CYk8CYlMEAmJUCQECYVYABAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJiVwkBAmJLBAUCYlUFAmJWBQJiTgUCYk8EAmJJCQEBRAIFAmJOBQJiVQQCYkgJAQFEAgUCYk8FAmJWBAJiWAkBAUQCBQJiUwUBYgQCYlkJAQJiRwIFAmJJBQJiWAQCYloJAQJiRwIFAmJIBQJiWAkAzAgCBQJiVwkAzAgCBQJiWQkAzAgCBQJiWgUDbmlsAQJjYQMCYk4CYk8CYlMEAmNiCQECYlIDBQJiTgUCYk8FAmJTCQDMCAIJAQFIAgkAkQMCBQJjYgAABQFiCQDMCAIJAQFIAgkAkQMCBQJjYgABBQFiCQDMCAIJAQFIAgkAkQMCBQJjYgACBQFiBQNuaWwBAmNjBAJjZAJjZQJjZgJhYgQCYlQJAQJhVgAEAmNnCQCRAwIFAmJUBQFxBAJjaAkAkQMCBQJiVAUBcgQCY2kJAJEDAgUCYlQFAXMEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXUEAmNqCQCRAwIFAmJUBQFwBAJjawgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNnCQCsAgIJAKwCAgIGQXNzZXQgBQJjZwIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJjZwUCY2UJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmNsCQECYkUBBQJjaAQCY20JAQFEAgUCY2wFAmJMBAJjbgkBAmJFAQUCY2kEAmNvCQEBRAIFAmNuBQJiTQQCY3AJAQJiRwIFAmNvBQJjbQQCY3EJAQFIAgUCY3AFAWIEAmNyCQEBRAIFAmNmBQFiBAJjcwkBAUQCBQJjawUBYgQCY3QJALwCAwUCY20FAmNyBQJjcwQCY3UJALwCAwUCY28FAmNyBQJjcwQCY3YJAQFLAwUCY3QFAmJMBQVGTE9PUgQCY3cJAQFLAwUCY3UFAmJNBQVGTE9PUgQCY3gDCQAAAgUCY2QCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFiBQJjdgMJAAACBQJjaAIFV0FWRVMFBHVuaXQJANkEAQUCY2gJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmN3AwkAAAIFAmNpAgVXQVZFUwUEdW5pdAkA2QQBBQJjaQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCCQClCAEFAmFiBQJjZAkBAmJBBgUCY3YFAmN3BQJjZgUCY3EFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCY3EJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY3EFA25pbAkAnAoKBQJjdgUCY3cFAmNoBQJjaQUCY2wFAmNuBQJjawUCY3AFAmNqBQJjeAECY3kJAmNkAmN6AmNBAmNCAmNDAmNEAmFiAmNFAmNGBAJiVAkBAmFWAAQCY2cJANkEAQkAkQMCBQJiVAUBcQQCY0cJAJEDAgUCYlQFAXIEAmNICQCRAwIFAmJUBQFzBAJjSQkAkQMCBQJiVAUBdgQCY0oJAJEDAgUCYlQFAXcEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXQEAmJWCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXUEAmNqCQCRAwIFAmJUBQFwBAJjawgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjZwkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjZwIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNLCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNCCQDZBAECBVdBVkVTBAJjTAkA2AQBCQELdmFsdWVPckVsc2UCBQJjRAkA2QQBAgVXQVZFUwMDCQECIT0CBQJjRwUCY0sGCQECIT0CBQJjSAUCY0wJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJjbAMFAmNFCQECYkUBBQJjRwkAZQIJAQJiRQEFAmNHBQJjQQQCY24DBQJjRQkBAmJFAQUCY0gJAGUCCQECYkUBBQJjSAUCY0MEAmNNCQEBRAIFAmNBBQJiVQQCY04JAQFEAgUCY0MFAmJWBAJjTwkBAmJHAgUCY04FAmNNBAJjbQkBAUQCBQJjbAUCYlUEAmNvCQEBRAIFAmNuBQJiVgQCY1ADCQAAAgUCY2sAAAQCY3AFAWUEAmNRBQFlBAJiWAkAdgYJALkCAgUCY00FAmNOAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSAIFAmJYBQFiCQEBSAIFAmNNBQJiVQkBAUgCBQJjTgUCYlYJAQJiRwIJALcCAgUCY28FAmNOCQC3AgIFAmNtBQJjTQUCY1EEAmNwCQECYkcCBQJjbwUCY20EAmNRCQC8AgMJAQFSAQkAuAICBQJjcAUCY08FAWQFAmNwBAJjUgkBAUQCBQJjegUBYgMDCQECIT0CBQJjcAUBZQkAvwICBQJjUQUCY1IHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNRAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCY1IEAmNzCQEBRAIFAmNrBQFiBAJjUwkAvQIEBQJjTQkBAmJKAwUCY28FAmNtBQdDRUlMSU5HBQFkBQdDRUlMSU5HBAJjVAkAvQIEBQJjTgUBZAkBAmJKAwUCY28FAmNtBQVGTE9PUgUHQ0VJTElORwQCY1UDCQC/AgIFAmNTBQJjTgkAlAoCBQJjVAUCY04JAJQKAgUCY00FAmNTBAJjVggFAmNVAl8xBAJjVwgFAmNVAl8yBAJiWAkAvQIEBQJjcwUCY1cFAmNvBQVGTE9PUgkAlwoFCQEBSwMFAmJYBQFiBQVGTE9PUgkBAUsDBQJjVgUCYlUFB0NFSUxJTkcJAQFLAwUCY1cFAmJWBQdDRUlMSU5HBQJjcAUCY1EEAmNYCAUCY1ACXzEEAmNZCAUCY1ACXzIEAmNaCAUCY1ACXzMEAmNxCQEBSAIIBQJjUAJfNAUBYgQCZGEJAQFIAggFAmNQAl81BQFiAwkAZwIAAAUCY1gJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmRiAwkBASEBBQJjRgAABQJjWAQCZGMJAGUCBQJjQQUCY1kEAmRkCQBlAgUCY0MFAmNaBAJkZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJjcQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjcQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQJhYgUCY2QJAQJicAoFAmNZBQJjWgUCZGIFAmNxBQJjegUCZGEFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRjBQJkZAUDbmlsCQCfCg0FAmNYBQJkYgUCY3EFAmNsBQJjbgUCY2sFAmNnBQJjagUCZGUFAmRjBQJkZAUCY0IFAmNEAQJkZgMCZGcCZGgCY2sEAmRpCQEBRwIFAmRnCQC2AgEFAmJrBAJkagkBAUcCBQJkaAkAtgIBBQJibAQCZGsJALwCAwkAdgYJALkCAgUCZGkFAmRqAAAJALYCAQAFAAEAEgUERE9XTgUBZwUCY2sDCQAAAgUCY2sFAWYFAWYFAmRrAQJkbAMCZG0CZG4CZG8EAmRwCQC4AgIJALYCAQkBAmJFAQkBAmJhAQUCYmkFAmRtBAJkcQkAuAICCQC2AgEJAQJiRQEJAQJiYQEFAmJqBQJkbgQCZHIJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJiaAhxdWFudGl0eQUCZG8EAmRzCQECZGYDBQJkcAUCZHEFAmRyBQJkcwECZHQDAmR1AmR2AmRvBAJkcAkAZAIJAQJiRQEJAQJiYQEFAmJpBQJkdQQCZHEJAGQCCQECYkUBCQECYmEBBQJiagUCZHYEAmRyCQBkAggJAQV2YWx1ZQEJAOwHAQUCYmgIcXVhbnRpdHkFAmRvBAJkawkBAmRmAwkAtgIBBQJkcAkAtgIBBQJkcQkAtgIBBQJkcgQCZHcJAMwIAgkBDEludGVnZXJFbnRyeQIFAmFrBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYWoJAKYDAQUCZGsFA25pbAkAlAoCBQJkdwUCZGsBAmR4AgJkeQJkawMJAMACAgUCZGsFAmR5BgkBAmFMAQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQJkeQkAzAgCCQCmAwEFAmRrBQNuaWwCASABAmR6AQJkQQQCZHAJAQJiRQEJAQJiYQEFAmJpBAJkcQkBAmJFAQkBAmJhAQUCYmoEAmRCCAUCZEEGYW1vdW50BAJkQwkAbgQIBQJkQQZhbW91bnQIBQJkQQVwcmljZQUBYgUFRkxPT1IEAmREAwkAAAIIBQJkQQlvcmRlclR5cGUFA0J1eQkAlAoCBQJkQgkBAS0BBQJkQwkAlAoCCQEBLQEFAmRCBQJkQwQCZHUIBQJkRAJfMQQCZHYIBQJkRAJfMgMDAwkBAmFUAAYJAAACBQJiZwUBbQYJAAACBQJiZwUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQDAwkBAiE9AggIBQJkQQlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJpBgkBAiE9AggIBQJkQQlhc3NldFBhaXIKcHJpY2VBc3NldAUCYmoJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkRQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWoCATAJAQJhTgECC2ludmFsaWQga0xwBAJkRgkBAmR0AwUCZHUFAmR2AAAEAmRHCAUCZEYCXzEEAmRICAUCZEYCXzIEAmRJCQDAAgIFAmRIBQJkRQQCZEoJALkJAgkAzAgCAgRrTHA9CQDMCAIJAKYDAQUCZEUJAMwIAgIIIGtMcE5ldz0JAMwIAgkApgMBBQJkSAkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmRwCQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJkcQkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZHUJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZHYJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmRJBQJkSgECZEsBAmRMAwkBAiE9AgkAkAMBCAUCZEwIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJkTQkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAQCY2UJAQV2YWx1ZQEIBQJkTQdhc3NldElkBAJkTggFAmRNBmFtb3VudAQCY1AJAQJjYwQJANgEAQgFAmRMDXRyYW5zYWN0aW9uSWQJANgEAQUCY2UFAmROCAUCZEwGY2FsbGVyBAJjdggFAmNQAl8xBAJjdwgFAmNQAl8yBAJjagkBDXBhcnNlSW50VmFsdWUBCAUCY1ACXzkEAmN4CAUCY1ADXzEwAwMJAQJhVAAGCQAAAgUCY2oFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNqCQCXCgUFAmN2BQJjdwUCZE4FAmNlBQJjeAECZE8DAmRMAmN6AmNGAwkBAiE9AgkAkAMBCAUCZEwIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmRQCQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwAABAJkUQkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAQQCZFIJAQJjeQkJANgEAQgFAmRMDXRyYW5zYWN0aW9uSWQFAmN6CAUCZFAGYW1vdW50CAUCZFAHYXNzZXRJZAgFAmRRBmFtb3VudAgFAmRRB2Fzc2V0SWQJAKUIAQgFAmRMBmNhbGxlcgcFAmNGBAJjagkBDXBhcnNlSW50VmFsdWUBCAUCZFICXzgDAwMJAQJhVAAGCQAAAgUCY2oFAWwGCQAAAgUCY2oFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNqBQJkUgECZFMBAmRUBAJkVQkA/AcEBQJhTwIEZW1pdAkAzAgCBQJkVAUDbmlsBQNuaWwDCQAAAgUCZFUFAmRVBAJkVgQCZFcFAmRVAwkAAQIFAmRXAgdBZGRyZXNzBAJkWAUCZFcJAPwHBAUCZFgCBGVtaXQJAMwIAgUCZFQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRWBQJkVgUCZFQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmRZAgJkVAJhaQQCZFoDCQAAAgUCYWkAAAAACQBrAwUCZFQFAmFpBQFiCQCUCgIJAGUCBQJkVAUCZFoFAmRaAQJlYQQCZWICZWMCYWICYWMEAmVkCQAAAgUCYWMFBHVuaXQEAmVlCQECYkUBCQECYmEBBQJiaQQCZWYJAQJiRQEJAQJiYQEFAmJqBAJlZwMJAAACBQJlYwUCYmkGAwkAAAIFAmVjBQJiagcJAQJhTAECDWludmFsaWQgYXNzZXQEAmVoAwUCZWQJAJQKAgUCZWUFAmVmAwUCZWcJAJQKAgkAZQIFAmVlBQJlYgUCZWYJAJQKAgUCZWUJAGUCBQJlZgUCZWIEAmVpCAUCZWgCXzEEAmVqCAUCZWgCXzIEAmVrAwUCZWcJAJQKAgUCZWIAAAkAlAoCAAAFAmViBAJlbAgFAmVrAl8xBAJlbQgFAmVrAl8yBAJkQggJAQJkWQIFAmVsBQJhUQJfMQQCZEMICQECZFkCBQJlbQUCYVECXzEEAmVuCQECZFkCBQJlYgUCYVEEAmVvCAUCZW4CXzEEAmRaCAUCZW4CXzIEAmVwCQBkAgUCZWkFAmRCBAJlcQkAZAIFAmVqBQJkQwQCZXIJAQJiRwIJAQFEAgUCZXEFAmJsCQEBRAIFAmVwBQJiawQCZXMJAQFIAgUCZXIFAWIEAmV0AwUCZWcFAmVpBQJlagQCZXUJALYCAQUCZXQEAmV2CQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYmgJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYmgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJldwMJAL8CAgUCZXYFAWYGCQECYUwBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmV3BQJldwQCZXgJALYCAQUCZW8EAmV5CQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmV2CQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZXgFAWQFAmV1ABIAEgUERE9XTgUBZAUBZAUDbmlsBAJkZQMFAmVkBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJwCgUCZWwFAmVtBQJleQUCZXMAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJlegkBAmJHAgkBAUQCBQJlagUCYmwJAQFEAgUCZWkFAmJrBAJlQQkBAUgCBQJlegUBYgQCZUIEAmVDAwUCZWcJAJQKAgUCZWwFAmVpCQCUCgIFAmVtBQJlagQCZFQIBQJlQwJfMQQCZUQIBQJlQwJfMgQCZUUJAKADAQkAvAIDBQJldgkAtgIBCQBpAgUCZFQAAgkAtgIBBQJlRAkAawMJAGUCBQJleQUCZUUFAWIFAmVFCQCXCgUFAmV5BQJkZQUCZFoFAmVCBQJlZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZUYFAmVHAmVvAmVjAmFiAmFjBAJlZAkAAAIFAmFjBQR1bml0BAJiVAkBAmFWAAQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCZUgJAMwIAgMJAAACBQJlYwUCYmgGCQECYUwBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZUgFAmVIBAJlSQMJAAACBQJlRwUCYmkGAwkAAAIFAmVHBQJiagcJAQJhTAECDWludmFsaWQgYXNzZXQEAmVKAwUCZUkJALYCAQkBAmJFAQkBAmJhAQUCYmkJALYCAQkBAmJFAQkBAmJhAQUCYmoEAmVLAwUCZUkFAmJVBQJiVgQCZUwJAQJiRQEJAQJiYQEFAmJpBAJlTQkBAmJFAQkBAmJhAQUCYmoEAmVOAwUCZUkFAmVMBQJlTQQCZU8JALYCAQUCZU4EAmV2CQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYmgJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYmgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJlUAkAtgIBBQJlbwQCZVEJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZUoJALgCAgUBZAkAdgYJALgCAgUBZAkAugICCQC5AgIFAmVQBQFkBQJldgASBQFoAAAAEgUERE9XTgUBZAUDbmlsBAJlUgkBAmRZAgUCZVEFAmFTBAJlUwgFAmVSAl8xBAJkWggFAmVSAl8yBAJlVAMFAmVJCQCWCgQFAmVTAAAJAGUCBQJlTAUCZVEFAmVNCQCWCgQAAAUCZVMFAmVMCQBlAgUCZU0FAmVRBAJlVQgFAmVUAl8xBAJlVggFAmVUAl8yBAJlVwgFAmVUAl8zBAJlWAgFAmVUAl80BAJlcgkBAmJHAgkBAUQCBQJlWAUCYmwJAQFEAgUCZVcFAmJrBAJlcwkBAUgCBQJlcgUBYgQCZGUDBQJlZAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQkBBXZhbHVlAQUCYWIJANgEAQkBBXZhbHVlAQUCYWMJAQJiQQYFAmVVBQJlVgUCZW8FAmVzBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVzBQNuaWwEAmV6CQECYkcCCQEBRAIFAmVNBQJibAkBAUQCBQJlTAUCYmsEAmVBCQEBSAIFAmV6BQFiBAJlQgQCZVkJAGgCCQCgAwEJALwCAwUCZUoFAmVQBQJldgACCQBrAwkAZQIFAmVTBQJlWQUBYgUCZVkJAJcKBQUCZVMFAmRlBQJkWgUCZUIFAmVJCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlWgAEAmRXCQCiCAEJAQFVAAMJAAECBQJkVwIGU3RyaW5nBAJmYQUCZFcJANkEAQUCZmEDCQABAgUCZFcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZmIABAJkVwkAoggBCQEBVgADCQABAgUCZFcCBlN0cmluZwQCZmEFAmRXCQDZBAEFAmZhAwkAAQIFAmRXAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmZjAQJkTAQCZFcJAQJlWgADCQABAgUCZFcCCkJ5dGVWZWN0b3IEAmZkBQJkVwkAAAIIBQJkTA9jYWxsZXJQdWJsaWNLZXkFAmZkAwkAAQIFAmRXAgRVbml0CQAAAggFAmRMBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJmZQECZEwEAmZmCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRXCQECZVoAAwkAAQIFAmRXAgpCeXRlVmVjdG9yBAJmZAUCZFcDCQAAAggFAmRMD2NhbGxlclB1YmxpY0tleQUCZmQGBQJmZgMJAAECBQJkVwIEVW5pdAMJAAACCAUCZEwGY2FsbGVyBQR0aGlzBgUCZmYJAAIBAgtNYXRjaCBlcnJvch0CZEwBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQICZmcCZmgEAmZpAwkAAAIFAmZoBwQCZmoJAQJhSAIFBHRoaXMJAQJhZgAEAmZrCQECYUgCBQR0aGlzCQECYWUACQCUCgIFAmZqBQJmawQCZmoJAQJhSAIFBHRoaXMJAQJhZQAEAmZrCQECYUgCBQR0aGlzCQECYWYACQCUCgIFAmZqBQJmawQCZmoIBQJmaQJfMQQCZmsIBQJmaQJfMgQCZmwJAQJiRQEFAmZrBAJmbQkBAmJFAQUCZmoEAmZuCQBrAwUCZm0FAmZnCQBkAgUCZmwFAmZnBAJmbwkAuQICCQC2AgEFAmZsCQC2AgEFAmZtBAJmcAkAuQICCQC3AgIJALYCAQkBAmJFAQUCZmsJALYCAQUCZmcJALgCAgkAtgIBCQECYkUBBQJmagkAtgIBBQJmbgQCZnEDCQDAAgIFAmZwBQJmbwYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJmcQUCZnEJAJQKAgUDbmlsBQJmbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEmY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMEAmZnAmZoAmZyAmZzBAJmdAoAAmFSCQD8BwQFAmFPAhdnZXRTd2FwQ29udHJhY3RSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYVICBlN0cmluZwUCYVIJAAIBCQCsAgIJAAMBBQJhUgIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAJlSAkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwAABmFtb3VudAUCZmcGCQECYUwBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCZEwGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJmdAYJAQJhTAECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZUgFAmVIBAJkTQkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAQCZmsJAQJiYQEIBQJkTQdhc3NldElkBAJmagMJAAACBQJmaAcJAQJhSAIFBHRoaXMJAQJhZgAJAQJhSAIFBHRoaXMJAQJhZQAEAmZsCQBlAgkBAmJFAQUCZmsICQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwAABmFtb3VudAQCZm0JAQJiRQEFAmZqBAJmbgkAawMFAmZtBQJmZwkAZAIFAmZsBQJmZwQCZm8JALkCAgkAtgIBBQJmbAkAtgIBBQJmbQQCZnAJALkCAgkAtgIBCQECYkUBBQJmawkAuAICCQC2AgEJAQJiRQEFAmZqCQC2AgEFAmZuBAJmcQMJAMACAgUCZnAFAmZvBgkAAgECFG5ldyBLIGlzIGZld2VyIGVycm9yAwkAAAIFAmZxBQJmcQQCZnUDCQBnAgUCZm4FAmZyBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmZ1BQJmdQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmZzBQJmbgkBAmFZAQUCZmoFA25pbAUCZm4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBCnNldE1hbmFnZXIBAmZ2BAJmdwkBAmZlAQUCZEwDCQAAAgUCZncFAmZ3BAJmeAkA2QQBBQJmdgMJAAACBQJmeAUCZngJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVYABQJmdgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQ5jb25maXJtTWFuYWdlcgAEAmZ5CQECZmIABAJmegMJAQlpc0RlZmluZWQBBQJmeQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZnoFAmZ6BAJmQQMJAAACCAUCZEwPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJmeQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZkEFAmZBCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAAkA2AQBCQEFdmFsdWUBBQJmeQkAzAgCCQELRGVsZXRlRW50cnkBCQEBVgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEDcHV0AgJjegJmQgMJAGYCAAAFAmN6CQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRSCQECZE8DBQJkTAUCY3oGBAJkYggFAmRSAl8yBAJjZwgFAmRSAl83BAJjeAgFAmRSAl85BAJkYwgFAmRSA18xMAQCZGQIBQJkUgNfMTEEAmZDCAUCZFIDXzEyBAJmRAgFAmRSA18xMwQCZFAJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRMCHBheW1lbnRzAAAGYW1vdW50BAJkUQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAQZhbW91bnQEAmRzCQECZGwDBQJkUAUCZFEJALYCAQAAAwkAAAIFAmRzBQJkcwQCZFUJAPwHBAUCYU8CBGVtaXQJAMwIAgUCZGIFA25pbAUDbmlsAwkAAAIFAmRVBQJkVQQCZFYEAmRXBQJkVQMJAAECBQJkVwIHQWRkcmVzcwQCZFgFAmRXCQD8BwQFAmRYAgRlbWl0CQDMCAIFAmRiBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkVgUCZFYEAmZFAwkAZgIFAmRjAAAJAPwHBAUCYm8CA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmQwUCZGMFA25pbAUDbmlsAwkAAAIFAmZFBQJmRQQCZkYDCQBmAgUCZGQAAAkA/AcEBQJibwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZEBQJkZAUDbmlsBQNuaWwDCQAAAgUCZkYFAmZGBAJmRwMFAmZCBAJmSAkA/AcEBQJibgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2cFAmRiBQNuaWwDCQAAAgUCZkgFAmZIBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRMBmNhbGxlcgUCZGIFAmNnBQNuaWwEAmZJCQECZHQDAAAAAAAAAwkAAAIFAmZJBQJmSQQCZGsIBQJmSQJfMgQCZkoIBQJmSQJfMQQCZksJAQJkeAIFAmRzBQJkawMJAAACBQJmSwUCZksJAM4IAgkAzggCBQJjeAUCZkcFAmZKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQpwdXRGb3JGcmVlAQJmTAMJAGYCAAAFAmZMCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRSCQECZE8DBQJkTAUCZkwHBAJjeAgFAmRSAl85BAJkUAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAZhbW91bnQEAmRRCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwABBmFtb3VudAQCZHMJAQJkbAMFAmRQBQJkUQkAtgIBAAADCQAAAgUCZHMFAmRzBAJmTQkBAmR0AwAAAAAAAAQCZkoIBQJmTQJfMQQCZGsIBQJmTQJfMgQCZksJAQJkeAIFAmRzBQJkawMJAAACBQJmSwUCZksJAM4IAgUCY3gFAmZKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQlwdXRPbmVUa24CAmZOAmZPBAJmUAoAAmFSCQD8BwQFAmFPAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICB0Jvb2xlYW4FAmFSCQACAQkArAICCQADAQUCYVICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZRAwMDCQECYVQABgkAAAIFAmJnBQFsBgkAAAIFAmJnBQFuBgUCZlAEAmVICQDMCAIDAwkBASEBBQJmUQYJAQJmYwEFAmRMBgkBAmFMAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEwIcGF5bWVudHMAAQYJAQJhTAECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVIBQJlSAQCZlIJAJEDAggFAmRMCHBheW1lbnRzAAAEAmVjCAUCZlIHYXNzZXRJZAQCZWIIBQJmUgZhbW91bnQEAmRzAwkAAAIFAmVjBQJiaQkBAmRsAwkAtgIBBQJlYgkAtgIBAAAJALYCAQAAAwkAAAIFAmVjBQJiagkBAmRsAwkAtgIBAAAJALYCAQUCZWIJALYCAQAACQECYUwBAh5wYXltZW50IGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgUCZHMFAmRzBAJhYggFAmRMBmNhbGxlcgQCYWMIBQJkTA10cmFuc2FjdGlvbklkBAJmUwkBAmVhBAUCZWIFAmVjBQJhYgUCYWMDCQAAAgUCZlMFAmZTBAJlZwgFAmZTAl81BAJmVAgFAmZTAl80BAJkWggFAmZTAl8zBAJkZQgFAmZTAl8yBAJmVQgFAmZTAl8xBAJmVgMDCQBmAgUCZk4AAAkAZgIFAmZOBQJmVQcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk4FA25pbAIABQJmVQQCZFUJAQJkUwEFAmZWAwkAAAIFAmRVBQJkVQQCZkcDBQJmTwQCZlcJAPwHBAUCYm4CBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJoBQJmVgUDbmlsAwkAAAIFAmZXBQJmVwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkTAZjYWxsZXIFAmZWBQJiaAUDbmlsBAJmWAMJAGYCBQJkWgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFQBQJkWgUCZWMFA25pbAUDbmlsBAJmWQMJAAACBQR0aGlzBQJhUAkAlAoCAAAAAAMFAmVnCQCUCgIJAQEtAQUCZFoAAAkAlAoCAAAJAQEtAQUCZFoEAmR1CAUCZlkCXzEEAmR2CAUCZlkCXzIEAmZaCQECZHQDBQJkdQUCZHYAAAQCZkoIBQJmWgJfMQQCZGsIBQJmWgJfMgQCZEUJAQV2YWx1ZQEJAKIIAQUCYWoEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRlBQJmRwUCZlgFAmZKBQJmVgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAERcHV0T25lVGtuUkVBRE9OTFkCAmVjAmViBAJnYQkBAmVhBAUCZWIJAQJhWQEFAmVjBQR1bml0BQR1bml0BAJmVQgFAmdhAl8xBAJkZQgFAmdhAl8yBAJkWggFAmdhAl8zBAJmVAgFAmdhAl80BAJlZwgFAmdhAl81CQCUCgIFA25pbAkAlQoDBQJmVQUCZFoFAmZUAmRMAQlnZXRPbmVUa24CAmdiAmZOBAJmUAoAAmFSCQD8BwQFAmFPAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICB0Jvb2xlYW4FAmFSCQACAQkArAICCQADAQUCYVICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdjAwMJAQJhVAAGCQAAAgUCYmcFAW4GBQJmUAQCZUgJAMwIAgMDCQEBIQEFAmdjBgkBAmZjAQUCZEwGCQECYUwBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkTAhwYXltZW50cwABBgkBAmFMAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUgFAmVIBAJlRwkBAmFZAQUCZ2IEAmZSCQCRAwIIBQJkTAhwYXltZW50cwAABAJlYwgFAmZSB2Fzc2V0SWQEAmVvCAUCZlIGYW1vdW50BAJkcwkBAmRsAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcwUCZHMEAmFiCAUCZEwGY2FsbGVyBAJhYwgFAmRMDXRyYW5zYWN0aW9uSWQEAmdkCQECZUYFBQJlRwUCZW8FAmVjBQJhYgUCYWMDCQAAAgUCZ2QFAmdkBAJlSQgFAmdkAl81BAJmVAgFAmdkAl80BAJkWggFAmdkAl8zBAJkZQgFAmdkAl8yBAJnZQgFAmdkAl8xBAJkVAMDCQBmAgUCZk4AAAkAZgIFAmZOBQJnZQcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk4FA25pbAIABQJnZQQCZ2YJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZW8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZWMFAmVvBQNuaWwDCQAAAgUCZ2YFAmdmBAJnZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZFQFAmVHBQNuaWwEAmZYAwkAZgIFAmRaAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVAFAmRaBQJlRwUDbmlsBQNuaWwEAmdoBAJnaQMJAAACBQR0aGlzBQJhUAAABQJkWgMFAmVJCQCUCgIJAQEtAQkAZAIFAmRUBQJnaQAACQCUCgIAAAkBAS0BCQBkAgUCZFQFAmdpBAJkdQgFAmdoAl8xBAJkdggFAmdoAl8yBAJnagkBAmR0AwUCZHUFAmR2AAAEAmZKCAUCZ2oCXzEEAmRrCAUCZ2oCXzIEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRlBQJnZwUCZlgFAmZKBQJkVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAERZ2V0T25lVGtuUkVBRE9OTFkCAmVHAmVvBAJnawkBAmVGBQkBAmFZAQUCZUcFAmVvBQJiaAUEdW5pdAUEdW5pdAQCZ2UIBQJnawJfMQQCZGUIBQJnawJfMgQCZFoIBQJnawJfMwQCZlQIBQJnawJfNAQCZUkIBQJnawJfNQkAlAoCBQNuaWwJAJUKAwUCZ2UFAmRaBQJmVAJkTAETdW5zdGFrZUFuZEdldE9uZVRrbgMCZ2wCZ2ICZk4EAmZQCgACYVIJAPwHBAUCYU8CKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUgIHQm9vbGVhbgUCYVIJAAIBCQCsAgIJAAMBBQJhUgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ2MDAwkBAmFUAAYJAAACBQJiZwUBbgYFAmZQBAJlSAkAzAgCAwMJAQEhAQUCZ2MGCQECZmMBBQJkTAYJAQJhTAECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRMCHBheW1lbnRzAAAGCQECYUwBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlSAUCZUgEAmVHCQECYVkBBQJnYgQCYWIIBQJkTAZjYWxsZXIEAmFjCAUCZEwNdHJhbnNhY3Rpb25JZAQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJnbQkA/AcEBQJibgIHdW5zdGFrZQkAzAgCCQDYBAEFAmJoCQDMCAIFAmdsBQNuaWwFA25pbAMJAAACBQJnbQUCZ20EAmduCQECZUYFBQJlRwUCZ2wFAmJoBQJhYgUCYWMDCQAAAgUCZ24FAmduBAJlSQgFAmduAl81BAJmVAgFAmduAl80BAJkWggFAmduAl8zBAJkZQgFAmduAl8yBAJnZQgFAmduAl8xBAJkVAMDCQBmAgUCZk4AAAkAZgIFAmZOBQJnZQcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk4FA25pbAIABQJnZQQCZ2YJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZ2wFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmgFAmdsBQNuaWwDCQAAAgUCZ2YFAmdmBAJnZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEwGY2FsbGVyBQJkVAUCZUcFA25pbAQCZlgDCQBmAgUCZFoAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhUAUCZFoFAmVHBQNuaWwFA25pbAQCZ28EAmdpAwkAAAIFBHRoaXMFAmFQAAAFAmRaAwUCZUkJAJQKAgkBAS0BCQBkAgUCZFQFAmdpAAAJAJQKAgAACQEBLQEJAGQCBQJkVAUCZ2kEAmR1CAUCZ28CXzEEAmR2CAUCZ28CXzIEAmdwCQECZHQDBQJkdQUCZHYAAAQCZkoIBQJncAJfMQQCZGsIBQJncAJfMgQCZksJAQJkeAIFAmRzBQJkawMJAAACBQJmSwUCZksJAJQKAgkAzggCCQDOCAIJAM4IAgUCZGUFAmdnBQJmWAUCZkoFAmRUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQNnZXQABAJjUAkBAmRLAQUCZEwEAmdxCAUCY1ACXzEEAmN3CAUCY1ACXzIEAmROCAUCY1ACXzMEAmNlCAUCY1ACXzQEAmN4CAUCY1ACXzUEAmRzCQECZGwDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRzBQJkcwQCZ3IJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZE4FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2UFAmROBQNuaWwDCQAAAgUCZ3IFAmdyBAJncwkBAmR0AwkBAS0BBQJncQkBAS0BBQJjdwAABAJmSggFAmdzAl8xBAJkawgFAmdzAl8yBAJmSwkBAmR4AgUCZHMFAmRrAwkAAAIFAmZLBQJmSwkAzggCBQJjeAUCZkoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBCWdldE5vTGVzcwICZ3QCZ3UEAmNQCQECZEsBBQJkTAQCY3YIBQJjUAJfMQQCY3cIBQJjUAJfMgQCZE4IBQJjUAJfMwQCY2UIBQJjUAJfNAQCY3gIBQJjUAJfNQMJAGYCBQJndAUCY3YJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmN2AgMgPCAJAKQDAQUCZ3QDCQBmAgUCZ3UFAmN3CQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCY3cCAyA8IAkApAMBBQJndQQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJncgkA/AcEBQJhTwIEYnVybgkAzAgCBQJkTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjZQUCZE4FA25pbAMJAAACBQJncgUCZ3IEAmd2CQECZHQDCQEBLQEFAmN2CQEBLQEFAmN3AAAEAmZKCAUCZ3YCXzEEAmRrCAUCZ3YCXzIEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQDOCAIFAmN4BQJmSgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAENdW5zdGFrZUFuZEdldAECZFQEAmd3AwkBAiE9AgkAkAMBCAUCZEwIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCZ3cFAmd3BAJiVAkBAmFWAAQCY2cJANkEAQkAkQMCBQJiVAUBcQQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJnbQkA/AcEBQJibgIHdW5zdGFrZQkAzAgCCQDYBAEFAmNnCQDMCAIFAmRUBQNuaWwFA25pbAMJAAACBQJnbQUCZ20EAmNQCQECY2MECQDYBAEIBQJkTA10cmFuc2FjdGlvbklkCQDYBAEFAmNnBQJkVAgFAmRMBmNhbGxlcgQCY3YIBQJjUAJfMQQCY3cIBQJjUAJfMgQCY2oJAQ1wYXJzZUludFZhbHVlAQgFAmNQAl85BAJjeAgFAmNQA18xMAQCZ3gDAwkBAmFUAAYJAAACBQJjagUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2oGAwkAAAIFAmd4BQJneAQCZ3IJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZFQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2cFAmRUBQNuaWwDCQAAAgUCZ3IFAmdyBAJneQkBAmR0AwkBAS0BBQJjdgkBAS0BBQJjdwAABAJmSggFAmd5Al8xBAJkawgFAmd5Al8yBAJmSwkBAmR4AgUCZHMFAmRrAwkAAAIFAmZLBQJmSwkAzggCBQJjeAUCZkoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmdsAmd6Amd1BAJnYwMJAQJhVAAGCQAAAgUCYmcFAW4EAmVICQDMCAIDCQEBIQEFAmdjBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRMCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUgFAmVIBAJkcwkBAmRsAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcwUCZHMEAmdtCQD8BwQFAmJuAgd1bnN0YWtlCQDMCAIJANgEAQUCYmgJAMwIAgUCZ2wFA25pbAUDbmlsAwkAAAIFAmdtBQJnbQQCY1AJAQJjYwQJANgEAQgFAmRMDXRyYW5zYWN0aW9uSWQJANgEAQUCYmgFAmdsCAUCZEwGY2FsbGVyBAJjdggFAmNQAl8xBAJjdwgFAmNQAl8yBAJjeAgFAmNQA18xMAQCZ0EJAMwIAgMJAGcCBQJjdgUCZ3oGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ3oFA25pbAIACQDMCAIDCQBnAgUCY3cFAmd1BgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ3UFA25pbAIABQNuaWwDCQAAAgUCZ0EFAmdBBAJncgkA/AcEBQJhTwIEYnVybgkAzAgCBQJnbAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiaAUCZ2wFA25pbAMJAAACBQJncgUCZ3IEAmdCCQECZHQDCQEBLQEFAmN2CQEBLQEFAmN3AAAEAmZKCAUCZ0ICXzEEAmRrCAUCZ0ICXzIEAmZLCQECZHgCBQJkcwUCZGsDCQAAAgUCZksFAmZLCQDOCAIFAmN4BQJmSgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEIYWN0aXZhdGUCAmdDAmdEAwkBAiE9AgkApQgBCAUCZEwGY2FsbGVyCQClCAEFAmFPCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAAUCZ0MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAUCZ0QFA25pbAIHc3VjY2VzcwJkTAEKcmVmcmVzaEtMcAAEAmdFCQELdmFsdWVPckVsc2UCCQCfCAEFAmFrAAAEAmdGAwkAZwIJAGUCBQZoZWlnaHQFAmdFBQJhbgUEdW5pdAkBAmFMAQkAuQkCCQDMCAIJAKQDAQUCYW4JAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmdGBQJnRgQCZEUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFqAgEwCQECYU4BAgtpbnZhbGlkIGtMcAQCZ0cJAQJkdAMAAAAAAAAEAmdICAUCZ0cCXzEEAmRrCAUCZ0cCXzIEAmR3AwkBAiE9AgUCZEUFAmRrBQJnSAkBAmFMAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmR3CQCmAwEFAmRrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhVgACZEwBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJGCQCUCgIFA25pbAkBAmJFAQUCYkYCZEwBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJOAmJPAmJTBAJjYgkBAmJSAwUCYk4FAmJPBQJiUwkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmNiAAAJAMwIAgkApgMBCQCRAwIFAmNiAAEJAMwIAgkApgMBCQCRAwIFAmNiAAIFA25pbAJkTAEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRMARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQEBSAIJAKcDAQUBSQUBSgJkTAEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiSAJiSQkAlAoCBQNuaWwJAKYDAQkBAmJHAgkApwMBBQJiSAkApwMBBQJiSQJkTAEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmNkAmN6AmNBAmNCAmNDAmNEAmFiAmNFAmNGCQCUCgIFA25pbAkBAmN5CQUCY2QFAmN6BQJjQQUCY0IFAmNDBQJjRAUCYWIFAmNFBQJjRgJkTAEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmNkAmNlAmNmAmFiBAJjUAkBAmNjBAUCY2QFAmNlBQJjZgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYWIJAJQKAgUDbmlsCQCcCgoIBQJjUAJfMQgFAmNQAl8yCAUCY1ACXzMIBQJjUAJfNAgFAmNQAl81CAUCY1ACXzYIBQJjUAJfNwkApgMBCAUCY1ACXzgIBQJjUAJfOQgFAmNQA18xMAJkTAENc3RhdHNSRUFET05MWQAEAmJUCQECYVYABAJjZwkA2QQBCQCRAwIFAmJUBQFxBAJnSQkAkQMCBQJiVAUBcgQCZ0oJAJEDAgUCYlQFAXMEAmNJCQCRAwIFAmJUBQF2BAJjSgkAkQMCBQJiVAUBdwQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCZ0sICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnTAkBAmJFAQUCZ0kEAmdNCQECYkUBBQJnSgQCZ04DCQAAAgUCZ0sAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYlIDBQJnTAUCZ00FAmdLBAJjcQAABAJnTwkBAUgCCQCRAwIFAmdOAAEFAWIEAmdQCQEBSAIJAJEDAgUCZ04AAgUBYgQCZ1EJAQV2YWx1ZQEJAJoIAgUCYU8JAQJheQEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmdMCQDMCAIJAKQDAQUCZ00JAMwIAgkApAMBBQJnSwkAzAgCCQCkAwEFAmNxCQDMCAIJAKQDAQUCZ08JAMwIAgkApAMBBQJnUAkAzAgCCQCkAwEFAmdRBQNuaWwFAWoCZEwBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjQQQCYlQJAQJhVgAEAmNnCQDZBAEJAJEDAgUCYlQFAXEEAmNHCQCRAwIFAmJUBQFyBAJjaAkA2QQBBQJjRwQCY0gJAJEDAgUCYlQFAXMEAmNpCQDZBAEFAmNIBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJjagkAkQMCBQJiVAUBcAQCZ0sICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnTAkBAmJFAQUCY0cEAmdNCQECYkUBBQJjSAQCYlAJAQFEAgUCZ0wFAmJVBAJiUQkBAUQCBQJnTQUCYlYEAmNwAwkAAAIFAmdLAAAFAWUJAQJiRwIFAmJRBQJiUAQCY00JAQFEAgUCY0EFAmJVBAJjTgkAvAIDBQJjTQUCY3AFAWQEAmNDCQEBSAIFAmNOBQJiVgQCZFIJAQJjeQkCAACgwh4FAmNBBQJjaAUCY0MFAmNpAgAGBwQCY1gIBQJkUgJfMQQCZ1IIBQJkUgJfMwQCY2wIBQJkUgJfNAQCY24IBQJkUgJfNQQCY2sIBQJkUgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1gJAMwIAgkApAMBCQEBSAIFAmNwBQFiCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIFAmNqCQDMCAIJAKQDAQUCY0EJAMwIAgkApAMBBQJjQwUDbmlsBQFqAmRMAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjQwQCYlQJAQJhVgAEAmNnCQDZBAEJAJEDAgUCYlQFAXEEAmNHCQCRAwIFAmJUBQFyBAJjaAkA2QQBBQJjRwQCY0gJAJEDAgUCYlQFAXMEAmNpCQDZBAEFAmNIBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJjagkAkQMCBQJiVAUBcAQCZ0sICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnUwkBAmJFAQUCY0cEAmdUCQECYkUBBQJjSAQCZ1UJAQFEAgUCZ1MFAmJVBAJnVgkBAUQCBQJnVAUCYlYEAmNwAwkAAAIFAmdLAAAFAWUJAQJiRwIFAmdWBQJnVQQCY04JAQFEAgUCY0MFAmJWBAJjTQkAvAIDBQJjTgUBZAUCY3AEAmNBCQEBSAIFAmNNBQJiVQQCZFIJAQJjeQkCAACgwh4FAmNBBQJjaAUCY0MFAmNpAgAGBwQCY1gIBQJkUgJfMQQCZ1IIBQJkUgJfMwQCY2wIBQJkUgJfNAQCY24IBQJkUgJfNQQCY2sIBQJkUgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1gJAMwIAgkApAMBCQEBSAIFAmNwBQFiCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIFAmNqCQDMCAIJAKQDAQUCY0EJAMwIAgkApAMBBQJjQwUDbmlsBQFqAmRMARNldmFsdWF0ZUdldFJFQURPTkxZAgJnVwJnWAQCY1AJAQJjYwQCAAUCZ1cFAmdYBQR0aGlzBAJjdggFAmNQAl8xBAJjdwgFAmNQAl8yBAJjbAgFAmNQAl81BAJjbggFAmNQAl82BAJjawgFAmNQAl83BAJjcQgFAmNQAl84BAJjagkBDXBhcnNlSW50VmFsdWUBCAUCY1ACXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjdgkAzAgCCQCkAwEFAmN3CQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIJAKYDAQUCY3EJAMwIAgkApAMBBQJjagUDbmlsBQFqAQJnWQECZ1oABAJoYQQCZFcJAQJlWgADCQABAgUCZFcCCkJ5dGVWZWN0b3IEAmZkBQJkVwUCZmQDCQABAgUCZFcCBFVuaXQIBQJnWQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZFcFAmdZAwkAAQIFAmRXAgVPcmRlcgQCZEEFAmRXBAJoYgkBAmFVAAQCaGMJAQJkegEFAmRBBAJhRAgFAmhjAl8xBAJhRQgFAmhjAl8yBAJhRgkA9AMDCAUCZEEJYm9keUJ5dGVzCQCRAwIIBQJkQQZwcm9vZnMAAAgFAmRBD3NlbmRlclB1YmxpY0tleQQCYUcJAPQDAwgFAmRBCWJvZHlCeXRlcwkAkQMCCAUCZEEGcHJvb2ZzAAEFAmhiAwMDBQJhRAUCYUYHBQJhRwcGCQECYUMEBQJhRAUCYUUFAmFGBQJhRwMJAAECBQJkVwIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmZhBQJkVwMJAPQDAwgFAmdZCWJvZHlCeXRlcwkAkQMCCAUCZ1kGcHJvb2ZzAAAFAmhhBgQCaGQJAPYDAQkBBXZhbHVlAQgFAmZhBnNjcmlwdAQCaGUJANsEAQkBBXZhbHVlAQkAnQgCBQJhTwkBAmFBAAQCaGYJAPEHAQUEdGhpcwMJAAACBQJoZQUCaGQJAQIhPQIFAmhmBQJoZAcJAPQDAwgFAmdZCWJvZHlCeXRlcwkAkQMCCAUCZ1kGcHJvb2ZzAAAFAmhhZQflqw==", "height": 3514775, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BbiFSwWx3i53JuyAHE2h7oPM9QBMEVWWvEQb4DPy662U Next: 5FchBYAbLbeX9Yv2WGLJFoQ2vCbmhyeqaqbUTdNDWKx9 Diff:
OldNewDifferences
8484 else I
8585
8686
87-func S () = "%s__factoryContract"
87+func S () = "%s__swapContract"
8888
8989
90-func T () = "%s__managerPublicKey"
90+func T () = "%s__factoryContract"
9191
9292
93-func U () = "%s__pendingManagerPublicKey"
93+func U () = "%s__managerPublicKey"
9494
9595
96-func V () = "%s%s__price__last"
96+func V () = "%s__pendingManagerPublicKey"
9797
9898
99-func W (X,Y) = makeString(["%s%s%d%d__price__history", toString(X), toString(Y)], j)
99+func W () = "%s%s__price__last"
100100
101101
102-func Z (aa,ab) = ((("%s%s%s__P__" + aa) + "__") + ab)
102+func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105-func ac (aa,ab) = ((("%s%s%s__G__" + aa) + "__") + ab)
105+func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108-func ad () = "%s__amountAsset"
108+func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111-func ae () = "%s__priceAsset"
111+func ae () = "%s__amountAsset"
112112
113113
114-let af = "%s__fee"
115-
116-let ag = fraction(10, b, 10000)
117-
118-let ah = valueOrElse(getInteger(this, af), ag)
119-
120-let ai = makeString(["%s", "kLp"], j)
121-
122-let aj = makeString(["%s", "kLpRefreshedHeight"], j)
123-
124-let ak = makeString(["%s", "refreshKLpDelay"], j)
125-
126-let al = 30
127-
128-let am = valueOrElse(getInteger(this, ak), al)
129-
130-func an () = "%s__factoryConfig"
114+func af () = "%s__priceAsset"
131115
132116
133-func ao () = "%s%s__matcher__publicKey"
117+let ag = "%s__fee"
118+
119+let ah = fraction(10, b, 10000)
120+
121+let ai = valueOrElse(getInteger(this, ag), ah)
122+
123+let aj = makeString(["%s", "kLp"], j)
124+
125+let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126+
127+let al = makeString(["%s", "refreshKLpDelay"], j)
128+
129+let am = 30
130+
131+let an = valueOrElse(getInteger(this, al), am)
132+
133+func ao () = "%s__factoryConfig"
134134
135135
136-func ap (aq) = (("%s%s%s__" + aq) + "__mappings__poolContract2LpAsset")
136+func ap () = "%s%s__matcher__publicKey"
137137
138138
139-func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
139+func aq (ar) = (("%s%s%s__" + ar) + "__mappings__poolContract2LpAsset")
140140
141141
142-func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
142+func as (at,au) = (((("%d%d%s__" + at) + "__") + au) + "__config")
143143
144144
145-func aw () = "%s__shutdown"
145+func av (aw) = ("%s%s%s__mappings__baseAsset2internalId__" + aw)
146146
147147
148-func ax (ay) = ("%s%s__poolWeight__" + ay)
148+func ax () = "%s__shutdown"
149149
150150
151-func az () = "%s__allowedLpScriptHash"
151+func ay (az) = ("%s%s__poolWeight__" + az)
152152
153153
154-let aA = "%s__feeCollectorAddress"
155-
156-func aB (aC,aD,aE,aF) = throw((((((((("order validation failed: orderValid=" + toString(aC)) + " (") + aD) + ")") + " senderValid=") + toString(aE)) + " matcherValid=") + toString(aF)))
154+func aA () = "%s__allowedLpScriptHash"
157155
158156
159-func aG (aH,aI) = valueOrErrorMessage(getString(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " is not defined"], ""))
157+let aB = "%s__feeCollectorAddress"
158+
159+func aC (aD,aE,aF,aG) = throw((((((((("order validation failed: orderValid=" + toString(aD)) + " (") + aE) + ")") + " senderValid=") + toString(aF)) + " matcherValid=") + toString(aG)))
160160
161161
162-func aJ (aH,aI) = valueOrErrorMessage(getInteger(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " is not defined"], ""))
162+func aH (aI,aJ) = valueOrErrorMessage(getString(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
163163
164164
165-func aK (aL) = throw(makeString(["lp.ride:", aL], " "))
165+func aK (aI,aJ) = valueOrErrorMessage(getInteger(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
166166
167167
168-func aM (aL) = makeString(["lp.ride:", aL], " ")
168+func aL (aM) = throw(makeString(["lp.ride:", aM], " "))
169169
170170
171-let aN = addressFromStringValue(aG(this, S()))
171+func aN (aM) = makeString(["lp.ride:", aM], " ")
172172
173-let aO = addressFromStringValue(aG(aN, aA))
174173
175-let aP = {
176- let aQ = invoke(aN, "getInFeeREADONLY", [toString(this)], nil)
177- if ($isInstanceOf(aQ, "Int"))
178- then aQ
179- else throw(($getType(aQ) + " couldn't be cast to Int"))
174+let aO = addressFromStringValue(aH(this, T()))
175+
176+let aP = addressFromStringValue(aH(aO, aB))
177+
178+let aQ = {
179+ let aR = invoke(aO, "getInFeeREADONLY", [toString(this)], nil)
180+ if ($isInstanceOf(aR, "Int"))
181+ then aR
182+ else throw(($getType(aR) + " couldn't be cast to Int"))
180183 }
181184
182-let aR = {
183- let aQ = invoke(aN, "getOutFeeREADONLY", [toString(this)], nil)
184- if ($isInstanceOf(aQ, "Int"))
185- then aQ
186- else throw(($getType(aQ) + " couldn't be cast to Int"))
185+let aS = {
186+ let aR = invoke(aO, "getOutFeeREADONLY", [toString(this)], nil)
187+ if ($isInstanceOf(aR, "Int"))
188+ then aR
189+ else throw(($getType(aR) + " couldn't be cast to Int"))
187190 }
188191
189-func aS () = valueOrElse(getBoolean(aN, aw()), false)
192+func aT () = valueOrElse(getBoolean(aO, ax()), false)
190193
191194
192-func aT () = fromBase58String(aG(aN, ao()))
195+func aU () = fromBase58String(aH(aO, ap()))
193196
194197
195-func aU () = {
196- let aV = aG(this, ad())
197- let aW = aG(this, ae())
198- let at = aJ(aN, au(aW))
199- let as = aJ(aN, au(aV))
200- split(aG(aN, ar(toString(as), toString(at))), j)
198+func aV () = {
199+ let aW = aH(this, ae())
200+ let aX = aH(this, af())
201+ let au = aK(aO, av(aX))
202+ let at = aK(aO, av(aW))
203+ split(aH(aO, as(toString(at), toString(au))), j)
201204 }
202205
203206
204-func aX (aY) = if ((aY == i))
207+func aY (aZ) = if ((aZ == i))
205208 then unit
206- else fromBase58String(aY)
209+ else fromBase58String(aZ)
207210
208211
209-func aZ (aY) = if ((aY == unit))
212+func ba (aZ) = if ((aZ == unit))
210213 then i
211- else toBase58String(value(aY))
214+ else toBase58String(value(aZ))
212215
213216
214-func ba (bb) = $Tuple7(addressFromStringValue(bb[o]), parseIntValue(bb[p]), fromBase58String(bb[q]), aX(bb[r]), aX(bb[s]), parseIntValue(bb[t]), parseIntValue(bb[u]))
217+func bb (bc) = $Tuple7(addressFromStringValue(bc[o]), parseIntValue(bc[p]), fromBase58String(bc[q]), aY(bc[r]), aY(bc[s]), parseIntValue(bc[t]), parseIntValue(bc[u]))
215218
216219
217-let bc = ba(aU())
220+let bd = bb(aV())
218221
219-let bd = bc
222+let be = bd
220223
221-let be = bd._1
224+let bf = be._1
222225
223-let bf = bd._2
226+let bg = be._2
224227
225-let bg = bd._3
228+let bh = be._3
226229
227-let bh = bd._4
230+let bi = be._4
228231
229-let bi = bd._5
232+let bj = be._5
230233
231-let bj = bd._6
234+let bk = be._6
232235
233-let bk = bd._7
236+let bl = be._7
234237
235-func bl () = split(aG(aN, an()), j)
238+func bm () = split(aH(aO, ao()), j)
236239
237240
238-let bm = valueOrErrorMessage(addressFromString(bl()[B]), "incorrect staking address")
241+let bn = valueOrErrorMessage(addressFromString(bm()[B]), "incorrect staking address")
239242
240-let bn = valueOrErrorMessage(addressFromString(bl()[C]), "incorrect staking address")
243+let bo = valueOrErrorMessage(addressFromString(bm()[C]), "incorrect staking address")
241244
242-func bo (bp,bq,br,bs,bt,bu,bv,bw,bx,by) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by)], j)
245+func bp (bq,br,bs,bt,bu,bv,bw,bx,by,bz) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz)], j)
243246
244247
245-func bz (bA,bB,bC,bs,bv,bw) = makeString(["%d%d%d%d%d%d", toString(bA), toString(bB), toString(bC), toString(bs), toString(bv), toString(bw)], j)
248+func bA (bB,bC,bD,bt,bw,bx) = makeString(["%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bt), toString(bw), toString(bx)], j)
246249
247250
248-func bD (bE) = if ((bE == "WAVES"))
251+func bE (bF) = if ((bF == "WAVES"))
249252 then wavesBalance(this).available
250- else assetBalance(this, fromBase58String(bE))
253+ else assetBalance(this, fromBase58String(bF))
251254
252255
253-func bF (bG,bH) = fraction(bG, d, bH)
256+func bG (bH,bI) = fraction(bH, d, bI)
254257
255258
256-func bI (bG,bH,L) = fraction(bG, d, bH, L)
259+func bJ (bH,bI,L) = fraction(bH, d, bI, L)
257260
258261
259-func bJ (bK,bL,bM,bN) = {
260- let bO = D(bM, bK)
262+func bK (bL,bM,bN,bO) = {
261263 let bP = D(bN, bL)
262- bF(bP, bO)
264+ let bQ = D(bO, bM)
265+ bG(bQ, bP)
263266 }
264267
265268
266-func bQ (bM,bN,bR) = {
267- let bS = aU()
268- let bT = parseIntValue(bS[t])
269- let bU = parseIntValue(bS[u])
270- let bV = bJ(bT, bU, bM, bN)
271- let bH = D(bM, bT)
272- let bG = D(bN, bU)
273- let bW = D(bR, b)
274- let bX = bF(bH, bW)
275- let bY = bF(bG, bW)
276-[bV, bX, bY]
269+func bR (bN,bO,bS) = {
270+ let bT = aV()
271+ let bU = parseIntValue(bT[t])
272+ let bV = parseIntValue(bT[u])
273+ let bW = bK(bU, bV, bN, bO)
274+ let bI = D(bN, bU)
275+ let bH = D(bO, bV)
276+ let bX = D(bS, b)
277+ let bY = bG(bI, bX)
278+ let bZ = bG(bH, bX)
279+[bW, bY, bZ]
277280 }
278281
279282
280-func bZ (bM,bN,bR) = {
281- let ca = bQ(bM, bN, bR)
282-[H(ca[0], b), H(ca[1], b), H(ca[2], b)]
283+func ca (bN,bO,bS) = {
284+ let cb = bR(bN, bO, bS)
285+[H(cb[0], b), H(cb[1], b), H(cb[2], b)]
283286 }
284287
285288
286-func cb (cc,cd,ce,aa) = {
287- let bS = aU()
288- let cf = bS[q]
289- let cg = bS[r]
290- let ch = bS[s]
291- let bK = parseIntValue(bS[t])
292- let bL = parseIntValue(bS[u])
293- let ci = bS[p]
294- let cj = valueOrErrorMessage(assetInfo(fromBase58String(cf)), (("Asset " + cf) + " doesn't exist")).quantity
295- if ((cf != cd))
289+func cc (cd,ce,cf,ab) = {
290+ let bT = aV()
291+ let cg = bT[q]
292+ let ch = bT[r]
293+ let ci = bT[s]
294+ let bL = parseIntValue(bT[t])
295+ let bM = parseIntValue(bT[u])
296+ let cj = bT[p]
297+ let ck = valueOrErrorMessage(assetInfo(fromBase58String(cg)), (("Asset " + cg) + " doesn't exist")).quantity
298+ if ((cg != ce))
296299 then throw("Invalid asset passed.")
297300 else {
298- let ck = bD(cg)
299- let cl = D(ck, bK)
300- let cm = bD(ch)
301- let cn = D(cm, bL)
302- let co = bF(cn, cl)
303- let cp = H(co, b)
304- let cq = D(ce, b)
305- let cr = D(cj, b)
306- let cs = fraction(cl, cq, cr)
307- let ct = fraction(cn, cq, cr)
308- let cu = K(cs, bK, FLOOR)
301+ let cl = bE(ch)
302+ let cm = D(cl, bL)
303+ let cn = bE(ci)
304+ let co = D(cn, bM)
305+ let cp = bG(co, cm)
306+ let cq = H(cp, b)
307+ let cr = D(cf, b)
308+ let cs = D(ck, b)
309+ let ct = fraction(cm, cr, cs)
310+ let cu = fraction(co, cr, cs)
309311 let cv = K(ct, bL, FLOOR)
310- let cw = if ((cc == ""))
312+ let cw = K(cu, bM, FLOOR)
313+ let cx = if ((cd == ""))
311314 then nil
312- else [ScriptTransfer(aa, cu, if ((cg == "WAVES"))
315+ else [ScriptTransfer(ab, cv, if ((ch == "WAVES"))
313316 then unit
314- else fromBase58String(cg)), ScriptTransfer(aa, cv, if ((ch == "WAVES"))
317+ else fromBase58String(ch)), ScriptTransfer(ab, cw, if ((ci == "WAVES"))
315318 then unit
316- else fromBase58String(ch)), StringEntry(ac(toString(aa), cc), bz(cu, cv, ce, cp, height, lastBlock.timestamp)), IntegerEntry(V(), cp), IntegerEntry(W(height, lastBlock.timestamp), cp)]
317- $Tuple10(cu, cv, cg, ch, ck, cm, cj, co, ci, cw)
319+ else fromBase58String(ci)), StringEntry(ad(toString(ab), cd), bA(cv, cw, cf, cq, height, lastBlock.timestamp)), IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq)]
320+ $Tuple10(cv, cw, ch, ci, cl, cn, ck, cp, cj, cx)
318321 }
319322 }
320323
321324
322-func cx (cc,cy,cz,cA,cB,cC,aa,cD,cE) = {
323- let bS = aU()
324- let cf = fromBase58String(bS[q])
325- let cF = bS[r]
326- let cG = bS[s]
327- let cH = bS[v]
328- let cI = bS[w]
329- let bT = parseIntValue(bS[t])
330- let bU = parseIntValue(bS[u])
331- let ci = bS[p]
332- let cj = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
333- let cJ = toBase58String(valueOrElse(cA, fromBase58String("WAVES")))
334- let cK = toBase58String(valueOrElse(cC, fromBase58String("WAVES")))
335- if (if ((cF != cJ))
325+func cy (cd,cz,cA,cB,cC,cD,ab,cE,cF) = {
326+ let bT = aV()
327+ let cg = fromBase58String(bT[q])
328+ let cG = bT[r]
329+ let cH = bT[s]
330+ let cI = bT[v]
331+ let cJ = bT[w]
332+ let bU = parseIntValue(bT[t])
333+ let bV = parseIntValue(bT[u])
334+ let cj = bT[p]
335+ let ck = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
336+ let cK = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
337+ let cL = toBase58String(valueOrElse(cD, fromBase58String("WAVES")))
338+ if (if ((cG != cK))
336339 then true
337- else (cG != cK))
340+ else (cH != cL))
338341 then throw("Invalid amt or price asset passed.")
339342 else {
340- let ck = if (cD)
341- then bD(cF)
342- else (bD(cF) - cz)
343- let cm = if (cD)
344- then bD(cG)
345- else (bD(cG) - cB)
346- let cL = D(cz, bT)
347- let cM = D(cB, bU)
348- let cN = bF(cM, cL)
349- let cl = D(ck, bT)
350- let cn = D(cm, bU)
351- let cO = if ((cj == 0))
343+ let cl = if (cE)
344+ then bE(cG)
345+ else (bE(cG) - cA)
346+ let cn = if (cE)
347+ then bE(cH)
348+ else (bE(cH) - cC)
349+ let cM = D(cA, bU)
350+ let cN = D(cC, bV)
351+ let cO = bG(cN, cM)
352+ let cm = D(cl, bU)
353+ let co = D(cn, bV)
354+ let cP = if ((ck == 0))
352355 then {
353- let co = e
354- let cP = e
355- let bW = pow((cL * cM), 0, toBigInt(5), 1, 0, DOWN)
356- $Tuple5(H(bW, b), H(cL, bT), H(cM, bU), bF((cn + cM), (cl + cL)), cP)
356+ let cp = e
357+ let cQ = e
358+ let bX = pow((cM * cN), 0, toBigInt(5), 1, 0, DOWN)
359+ $Tuple5(H(bX, b), H(cM, bU), H(cN, bV), bG((co + cN), (cm + cM)), cQ)
357360 }
358361 else {
359- let co = bF(cn, cl)
360- let cP = fraction(R((co - cN)), d, co)
361- let cQ = D(cy, b)
362- if (if ((co != e))
363- then (cP > cQ)
362+ let cp = bG(co, cm)
363+ let cQ = fraction(R((cp - cO)), d, cp)
364+ let cR = D(cz, b)
365+ if (if ((cp != e))
366+ then (cQ > cR)
364367 else false)
365- then throw(((("Price slippage " + toString(cP)) + " exceeded the passed limit of ") + toString(cQ)))
368+ then throw(((("Price slippage " + toString(cQ)) + " exceeded the passed limit of ") + toString(cR)))
366369 else {
367- let cr = D(cj, b)
368- let cR = fraction(cL, bI(cn, cl, CEILING), d, CEILING)
369- let cS = fraction(cM, d, bI(cn, cl, FLOOR), CEILING)
370- let cT = if ((cR > cM))
371- then $Tuple2(cS, cM)
372- else $Tuple2(cL, cR)
373- let cU = cT._1
374- let cV = cT._2
375- let bW = fraction(cr, cV, cn, FLOOR)
376- $Tuple5(K(bW, b, FLOOR), K(cU, bT, CEILING), K(cV, bU, CEILING), co, cP)
370+ let cs = D(ck, b)
371+ let cS = fraction(cM, bJ(co, cm, CEILING), d, CEILING)
372+ let cT = fraction(cN, d, bJ(co, cm, FLOOR), CEILING)
373+ let cU = if ((cS > cN))
374+ then $Tuple2(cT, cN)
375+ else $Tuple2(cM, cS)
376+ let cV = cU._1
377+ let cW = cU._2
378+ let bX = fraction(cs, cW, co, FLOOR)
379+ $Tuple5(K(bX, b, FLOOR), K(cV, bU, CEILING), K(cW, bV, CEILING), cp, cQ)
377380 }
378381 }
379- let cW = cO._1
380- let cX = cO._2
381- let cY = cO._3
382- let cp = H(cO._4, b)
383- let cZ = H(cO._5, b)
384- if ((0 >= cW))
382+ let cX = cP._1
383+ let cY = cP._2
384+ let cZ = cP._3
385+ let cq = H(cP._4, b)
386+ let da = H(cP._5, b)
387+ if ((0 >= cX))
385388 then throw("Invalid calculations. LP calculated is less than zero.")
386389 else {
387- let da = if (!(cE))
390+ let db = if (!(cF))
388391 then 0
389- else cW
390- let db = (cz - cX)
391- let dc = (cB - cY)
392- let dd = [IntegerEntry(V(), cp), IntegerEntry(W(height, lastBlock.timestamp), cp), StringEntry(Z(aa, cc), bo(cX, cY, da, cp, cy, cZ, height, lastBlock.timestamp, db, dc))]
393- $Tuple13(cW, da, cp, ck, cm, cj, cf, ci, dd, db, dc, cA, cC)
392+ else cX
393+ let dc = (cA - cY)
394+ let dd = (cC - cZ)
395+ let de = [IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq), StringEntry(aa(ab, cd), bp(cY, cZ, db, cq, cz, da, height, lastBlock.timestamp, dc, dd))]
396+ $Tuple13(cX, db, cq, cl, cn, ck, cg, cj, de, dc, dd, cB, cD)
394397 }
395398 }
396399 }
397400
398401
399-func de (df,dg,cj) = {
400- let dh = G(df, toBigInt(bj))
402+func df (dg,dh,ck) = {
401403 let di = G(dg, toBigInt(bk))
402- let dj = fraction(pow((dh * di), 0, toBigInt(5), 1, 18, DOWN), g, cj)
403- if ((cj == f))
404+ let dj = G(dh, toBigInt(bl))
405+ let dk = fraction(pow((di * dj), 0, toBigInt(5), 1, 18, DOWN), g, ck)
406+ if ((ck == f))
404407 then f
405- else dj
408+ else dk
406409 }
407410
408411
409-func dk (dl,dm,dn) = {
410- let do = (toBigInt(bD(aZ(bh))) - dl)
411- let dp = (toBigInt(bD(aZ(bi))) - dm)
412- let dq = (toBigInt(value(assetInfo(bg)).quantity) - dn)
413- let dr = de(do, dp, dq)
414- dr
412+func dl (dm,dn,do) = {
413+ let dp = (toBigInt(bE(ba(bi))) - dm)
414+ let dq = (toBigInt(bE(ba(bj))) - dn)
415+ let dr = (toBigInt(value(assetInfo(bh)).quantity) - do)
416+ let ds = df(dp, dq, dr)
417+ ds
415418 }
416419
417420
418-func ds (dt,du,dn) = {
419- let do = (bD(aZ(bh)) + dt)
420- let dp = (bD(aZ(bi)) + du)
421- let dq = (value(assetInfo(bg)).quantity + dn)
422- let dj = de(toBigInt(do), toBigInt(dp), toBigInt(dq))
423- let dv = [IntegerEntry(aj, height), StringEntry(ai, toString(dj))]
424- $Tuple2(dv, dj)
421+func dt (du,dv,do) = {
422+ let dp = (bE(ba(bi)) + du)
423+ let dq = (bE(ba(bj)) + dv)
424+ let dr = (value(assetInfo(bh)).quantity + do)
425+ let dk = df(toBigInt(dp), toBigInt(dq), toBigInt(dr))
426+ let dw = [IntegerEntry(ak, height), StringEntry(aj, toString(dk))]
427+ $Tuple2(dw, dk)
425428 }
426429
427430
428-func dw (dx,dj) = if ((dj >= dx))
431+func dx (dy,dk) = if ((dk >= dy))
429432 then true
430- else aK(makeString(["updated KLp lower than current KLp", toString(dx), toString(dj)], " "))
433+ else aL(makeString(["updated KLp lower than current KLp", toString(dy), toString(dk)], " "))
431434
432435
433-func dy (dz) = {
434- let do = bD(aZ(bh))
435- let dp = bD(aZ(bi))
436- let dA = dz.amount
437- let dB = fraction(dz.amount, dz.price, b, FLOOR)
438- let dC = if ((dz.orderType == Buy))
439- then $Tuple2(dA, -(dB))
440- else $Tuple2(-(dA), dB)
441- let dt = dC._1
442- let du = dC._2
443- if (if (if (aS())
436+func dz (dA) = {
437+ let dp = bE(ba(bi))
438+ let dq = bE(ba(bj))
439+ let dB = dA.amount
440+ let dC = fraction(dA.amount, dA.price, b, FLOOR)
441+ let dD = if ((dA.orderType == Buy))
442+ then $Tuple2(dB, -(dC))
443+ else $Tuple2(-(dB), dC)
444+ let du = dD._1
445+ let dv = dD._2
446+ if (if (if (aT())
444447 then true
445- else (bf == m))
448+ else (bg == m))
446449 then true
447- else (bf == n))
450+ else (bg == n))
448451 then throw("Exchange operations disabled")
449- else if (if ((dz.assetPair.amountAsset != bh))
452+ else if (if ((dA.assetPair.amountAsset != bi))
450453 then true
451- else (dz.assetPair.priceAsset != bi))
454+ else (dA.assetPair.priceAsset != bj))
452455 then throw("Wrong order assets.")
453456 else {
454- let dD = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ai), "0")), aM("invalid kLp"))
455- let dE = ds(dt, du, 0)
456- let dF = dE._1
457- let dG = dE._2
458- let dH = (dG >= dD)
459- let dI = makeString(["kLp=", toString(dD), " kLpNew=", toString(dG), " amountAssetBalance=", toString(do), " priceAssetBalance=", toString(dp), " amountAssetBalanceDelta=", toString(dt), " priceAssetBalanceDelta=", toString(du), " height=", toString(height)], "")
460- $Tuple2(dH, dI)
457+ let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
458+ let dF = dt(du, dv, 0)
459+ let dG = dF._1
460+ let dH = dF._2
461+ let dI = (dH >= dE)
462+ let dJ = makeString(["kLp=", toString(dE), " kLpNew=", toString(dH), " amountAssetBalance=", toString(dp), " priceAssetBalance=", toString(dq), " amountAssetBalanceDelta=", toString(du), " priceAssetBalanceDelta=", toString(dv), " height=", toString(height)], "")
463+ $Tuple2(dI, dJ)
461464 }
462465 }
463466
464467
465-func dJ (dK) = if ((size(dK.payments) != 1))
468+func dK (dL) = if ((size(dL.payments) != 1))
466469 then throw("exactly 1 payment is expected")
467470 else {
468- let dL = value(dK.payments[0])
469- let cd = value(dL.assetId)
470- let dM = dL.amount
471- let cO = cb(toBase58String(dK.transactionId), toBase58String(cd), dM, dK.caller)
472- let cu = cO._1
473- let cv = cO._2
474- let ci = parseIntValue(cO._9)
475- let cw = cO._10
476- if (if (aS())
471+ let dM = value(dL.payments[0])
472+ let ce = value(dM.assetId)
473+ let dN = dM.amount
474+ let cP = cc(toBase58String(dL.transactionId), toBase58String(ce), dN, dL.caller)
475+ let cv = cP._1
476+ let cw = cP._2
477+ let cj = parseIntValue(cP._9)
478+ let cx = cP._10
479+ if (if (aT())
477480 then true
478- else (ci == n))
479- then throw(("Get operation is blocked by admin. Status = " + toString(ci)))
480- else $Tuple5(cu, cv, dM, cd, cw)
481+ else (cj == n))
482+ then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
483+ else $Tuple5(cv, cw, dN, ce, cx)
481484 }
482485
483486
484-func dN (dK,cy,cE) = if ((size(dK.payments) != 2))
487+func dO (dL,cz,cF) = if ((size(dL.payments) != 2))
485488 then throw("exactly 2 payments are expected")
486489 else {
487- let dO = value(dK.payments[0])
488- let dP = value(dK.payments[1])
489- let dQ = cx(toBase58String(dK.transactionId), cy, dO.amount, dO.assetId, dP.amount, dP.assetId, toString(dK.caller), false, cE)
490- let ci = parseIntValue(dQ._8)
491- if (if (if (aS())
490+ let dP = value(dL.payments[0])
491+ let dQ = value(dL.payments[1])
492+ let dR = cy(toBase58String(dL.transactionId), cz, dP.amount, dP.assetId, dQ.amount, dQ.assetId, toString(dL.caller), false, cF)
493+ let cj = parseIntValue(dR._8)
494+ if (if (if (aT())
492495 then true
493- else (ci == l))
496+ else (cj == l))
494497 then true
495- else (ci == n))
496- then throw(("Put operation is blocked by admin. Status = " + toString(ci)))
497- else dQ
498+ else (cj == n))
499+ then throw(("Put operation is blocked by admin. Status = " + toString(cj)))
500+ else dR
498501 }
499502
500503
501-func dR (dS) = {
502- let dT = invoke(aN, "emit", [dS], nil)
503- if ((dT == dT))
504+func dS (dT) = {
505+ let dU = invoke(aO, "emit", [dT], nil)
506+ if ((dU == dU))
504507 then {
505- let dU = {
506- let dV = dT
507- if ($isInstanceOf(dV, "Address"))
508+ let dV = {
509+ let dW = dU
510+ if ($isInstanceOf(dW, "Address"))
508511 then {
509- let dW = dV
510- invoke(dW, "emit", [dS], nil)
512+ let dX = dW
513+ invoke(dX, "emit", [dT], nil)
511514 }
512515 else unit
513516 }
514- if ((dU == dU))
515- then dS
517+ if ((dV == dV))
518+ then dT
516519 else throw("Strict value is not equal to itself.")
517520 }
518521 else throw("Strict value is not equal to itself.")
519522 }
520523
521524
522-func dX (dS,ah) = {
523- let dY = if ((ah == 0))
525+func dY (dT,ai) = {
526+ let dZ = if ((ai == 0))
524527 then 0
525- else fraction(dS, ah, b)
526- $Tuple2((dS - dY), dY)
528+ else fraction(dT, ai, b)
529+ $Tuple2((dT - dZ), dZ)
527530 }
528531
529532
530-func dZ (ea,eb,aa,ab) = {
531- let ec = (ab == unit)
532- let ed = bD(aZ(bh))
533- let ee = bD(aZ(bi))
534- let ef = if ((eb == bh))
533+func ea (eb,ec,ab,ac) = {
534+ let ed = (ac == unit)
535+ let ee = bE(ba(bi))
536+ let ef = bE(ba(bj))
537+ let eg = if ((ec == bi))
535538 then true
536- else if ((eb == bi))
539+ else if ((ec == bj))
537540 then false
538- else aK("invalid asset")
539- let eg = if (ec)
540- then $Tuple2(ed, ee)
541- else if (ef)
542- then $Tuple2((ed - ea), ee)
543- else $Tuple2(ed, (ee - ea))
544- let eh = eg._1
545- let ei = eg._2
546- let ej = if (ef)
547- then $Tuple2(ea, 0)
548- else $Tuple2(0, ea)
549- let ek = ej._1
550- let el = ej._2
551- let dA = dX(ek, aP)._1
552- let dB = dX(el, aP)._1
553- let em = dX(ea, aP)
554- let en = em._1
555- let dY = em._2
556- let eo = (eh + dA)
541+ else aL("invalid asset")
542+ let eh = if (ed)
543+ then $Tuple2(ee, ef)
544+ else if (eg)
545+ then $Tuple2((ee - eb), ef)
546+ else $Tuple2(ee, (ef - eb))
547+ let ei = eh._1
548+ let ej = eh._2
549+ let ek = if (eg)
550+ then $Tuple2(eb, 0)
551+ else $Tuple2(0, eb)
552+ let el = ek._1
553+ let em = ek._2
554+ let dB = dY(el, aQ)._1
555+ let dC = dY(em, aQ)._1
556+ let en = dY(eb, aQ)
557+ let eo = en._1
558+ let dZ = en._2
557559 let ep = (ei + dB)
558- let eq = bF(D(ep, bk), D(eo, bj))
559- let er = H(eq, b)
560- let es = if (ef)
561- then eh
562- else ei
563- let et = toBigInt(es)
564- let eu = toBigInt(valueOrErrorMessage(assetInfo(bg), (("asset " + toBase58String(bg)) + " doesn't exist")).quantity)
565- let ev = if ((eu > f))
560+ let eq = (ej + dC)
561+ let er = bG(D(eq, bl), D(ep, bk))
562+ let es = H(er, b)
563+ let et = if (eg)
564+ then ei
565+ else ej
566+ let eu = toBigInt(et)
567+ let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
568+ let ew = if ((ev > f))
566569 then true
567- else aK("initial deposit requires all coins")
568- if ((ev == ev))
570+ else aL("initial deposit requires all coins")
571+ if ((ew == ew))
569572 then {
570- let ew = toBigInt(en)
571- let ex = max([0, toInt(((eu * (sqrtBigInt((d + ((ew * d) / et)), 18, 18, DOWN) - d)) / d))])
572- let dd = if (ec)
573+ let ex = toBigInt(eo)
574+ let ey = max([0, toInt(((ev * (sqrtBigInt((d + ((ex * d) / eu)), 18, 18, DOWN) - d)) / d))])
575+ let de = if (ed)
573576 then nil
574- else [IntegerEntry(V(), er), IntegerEntry(W(height, lastBlock.timestamp), er), StringEntry(Z(toString(value(aa)), toBase58String(value(ab))), bo(ek, el, ex, er, 0, 0, height, lastBlock.timestamp, 0, 0))]
575- let ey = bF(D(ei, bk), D(eh, bj))
576- let ez = H(ey, b)
577- let eA = {
578- let eB = if (ef)
579- then $Tuple2(ek, eh)
580- else $Tuple2(el, ei)
581- let dS = eB._1
582- let eC = eB._2
583- let eD = toInt(fraction(eu, toBigInt((dS / 2)), toBigInt(eC)))
584- fraction((ex - eD), b, eD)
577+ else [IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bp(el, em, ey, es, 0, 0, height, lastBlock.timestamp, 0, 0))]
578+ let ez = bG(D(ej, bl), D(ei, bk))
579+ let eA = H(ez, b)
580+ let eB = {
581+ let eC = if (eg)
582+ then $Tuple2(el, ei)
583+ else $Tuple2(em, ej)
584+ let dT = eC._1
585+ let eD = eC._2
586+ let eE = toInt(fraction(ev, toBigInt((dT / 2)), toBigInt(eD)))
587+ fraction((ey - eE), b, eE)
585588 }
586- $Tuple5(ex, dd, dY, eA, ef)
589+ $Tuple5(ey, de, dZ, eB, eg)
587590 }
588591 else throw("Strict value is not equal to itself.")
589592 }
590593
591594
592-func eE (eF,en,eb,aa,ab) = {
593- let ec = (ab == unit)
594- let bS = aU()
595- let bT = parseIntValue(bS[t])
596- let bU = parseIntValue(bS[u])
597- let eG = [if ((eb == bg))
595+func eF (eG,eo,ec,ab,ac) = {
596+ let ed = (ac == unit)
597+ let bT = aV()
598+ let bU = parseIntValue(bT[t])
599+ let bV = parseIntValue(bT[u])
600+ let eH = [if ((ec == bh))
598601 then true
599- else aK("invalid lp asset")]
600- if ((eG == eG))
602+ else aL("invalid lp asset")]
603+ if ((eH == eH))
601604 then {
602- let eH = if ((eF == bh))
605+ let eI = if ((eG == bi))
603606 then true
604- else if ((eF == bi))
607+ else if ((eG == bj))
605608 then false
606- else aK("invalid asset")
607- let eI = if (eH)
608- then toBigInt(bD(aZ(bh)))
609- else toBigInt(bD(aZ(bi)))
610- let eJ = if (eH)
611- then bT
612- else bU
613- let eK = bD(aZ(bh))
614- let eL = bD(aZ(bi))
615- let eM = if (eH)
616- then eK
617- else eL
618- let eN = toBigInt(eM)
619- let eu = toBigInt(valueOrErrorMessage(assetInfo(bg), (("asset " + toBase58String(bg)) + " doesn't exist")).quantity)
620- let eO = toBigInt(en)
621- let eP = max([0, toInt(((eI * (d - pow((d - ((eO * d) / eu)), 18, h, 0, 18, DOWN))) / d))])
622- let eQ = dX(eP, aR)
623- let eR = eQ._1
624- let dY = eQ._2
625- let eS = if (eH)
626- then $Tuple4(eR, 0, (eK - eP), eL)
627- else $Tuple4(0, eR, eK, (eL - eP))
628- let eT = eS._1
629- let eU = eS._2
630- let eV = eS._3
631- let eW = eS._4
632- let eq = bF(D(eW, bk), D(eV, bj))
633- let er = H(eq, b)
634- let dd = if (ec)
609+ else aL("invalid asset")
610+ let eJ = if (eI)
611+ then toBigInt(bE(ba(bi)))
612+ else toBigInt(bE(ba(bj)))
613+ let eK = if (eI)
614+ then bU
615+ else bV
616+ let eL = bE(ba(bi))
617+ let eM = bE(ba(bj))
618+ let eN = if (eI)
619+ then eL
620+ else eM
621+ let eO = toBigInt(eN)
622+ let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
623+ let eP = toBigInt(eo)
624+ let eQ = max([0, toInt(((eJ * (d - pow((d - ((eP * d) / ev)), 18, h, 0, 18, DOWN))) / d))])
625+ let eR = dY(eQ, aS)
626+ let eS = eR._1
627+ let dZ = eR._2
628+ let eT = if (eI)
629+ then $Tuple4(eS, 0, (eL - eQ), eM)
630+ else $Tuple4(0, eS, eL, (eM - eQ))
631+ let eU = eT._1
632+ let eV = eT._2
633+ let eW = eT._3
634+ let eX = eT._4
635+ let er = bG(D(eX, bl), D(eW, bk))
636+ let es = H(er, b)
637+ let de = if (ed)
635638 then nil
636- else [StringEntry(ac(toString(value(aa)), toBase58String(value(ab))), bz(eT, eU, en, er, height, lastBlock.timestamp)), IntegerEntry(V(), er), IntegerEntry(W(height, lastBlock.timestamp), er)]
637- let ey = bF(D(eL, bk), D(eK, bj))
638- let ez = H(ey, b)
639- let eA = {
640- let eX = (toInt(fraction(eI, eO, eu)) * 2)
641- fraction((eR - eX), b, eX)
639+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bA(eU, eV, eo, es, height, lastBlock.timestamp)), IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es)]
640+ let ez = bG(D(eM, bl), D(eL, bk))
641+ let eA = H(ez, b)
642+ let eB = {
643+ let eY = (toInt(fraction(eJ, eP, ev)) * 2)
644+ fraction((eS - eY), b, eY)
642645 }
643- $Tuple5(eR, dd, dY, eA, eH)
646+ $Tuple5(eS, de, dZ, eB, eI)
644647 }
645648 else throw("Strict value is not equal to itself.")
646649 }
647650
648651
649-func eY () = {
650- let dV = getString(T())
651- if ($isInstanceOf(dV, "String"))
652+func eZ () = {
653+ let dW = getString(U())
654+ if ($isInstanceOf(dW, "String"))
652655 then {
653- let eZ = dV
654- fromBase58String(eZ)
656+ let fa = dW
657+ fromBase58String(fa)
655658 }
656- else if ($isInstanceOf(dV, "Unit"))
659+ else if ($isInstanceOf(dW, "Unit"))
657660 then unit
658661 else throw("Match error")
659662 }
660663
661664
662-func fa () = {
663- let dV = getString(U())
664- if ($isInstanceOf(dV, "String"))
665+func fb () = {
666+ let dW = getString(V())
667+ if ($isInstanceOf(dW, "String"))
665668 then {
666- let eZ = dV
667- fromBase58String(eZ)
669+ let fa = dW
670+ fromBase58String(fa)
668671 }
669- else if ($isInstanceOf(dV, "Unit"))
672+ else if ($isInstanceOf(dW, "Unit"))
670673 then unit
671674 else throw("Match error")
672675 }
673676
674677
675-func fb (dK) = {
676- let dV = eY()
677- if ($isInstanceOf(dV, "ByteVector"))
678+func fc (dL) = {
679+ let dW = eZ()
680+ if ($isInstanceOf(dW, "ByteVector"))
678681 then {
679- let fc = dV
680- (dK.callerPublicKey == fc)
682+ let fd = dW
683+ (dL.callerPublicKey == fd)
681684 }
682- else if ($isInstanceOf(dV, "Unit"))
683- then (dK.caller == this)
685+ else if ($isInstanceOf(dW, "Unit"))
686+ then (dL.caller == this)
684687 else throw("Match error")
685688 }
686689
687690
688-func fd (dK) = {
689- let fe = throw("Permission denied")
690- let dV = eY()
691- if ($isInstanceOf(dV, "ByteVector"))
691+func fe (dL) = {
692+ let ff = throw("Permission denied")
693+ let dW = eZ()
694+ if ($isInstanceOf(dW, "ByteVector"))
692695 then {
693- let fc = dV
694- if ((dK.callerPublicKey == fc))
696+ let fd = dW
697+ if ((dL.callerPublicKey == fd))
695698 then true
696- else fe
699+ else ff
697700 }
698- else if ($isInstanceOf(dV, "Unit"))
699- then if ((dK.caller == this))
701+ else if ($isInstanceOf(dW, "Unit"))
702+ then if ((dL.caller == this))
700703 then true
701- else fe
704+ else ff
702705 else throw("Match error")
703706 }
704707
705708
706-@Callable(dK)
707-func setManager (ff) = {
708- let fg = fd(dK)
709- if ((fg == fg))
709+@Callable(dL)
710+func calculateAmountOutForSwapREADONLY (fg,fh) = {
711+ let fi = if ((fh == false))
710712 then {
711- let fh = fromBase58String(ff)
712- if ((fh == fh))
713- then [StringEntry(U(), ff)]
713+ let fj = aH(this, af())
714+ let fk = aH(this, ae())
715+ $Tuple2(fj, fk)
716+ }
717+ else {
718+ let fj = aH(this, ae())
719+ let fk = aH(this, af())
720+ $Tuple2(fj, fk)
721+ }
722+ let fj = fi._1
723+ let fk = fi._2
724+ let fl = bE(fk)
725+ let fm = bE(fj)
726+ let fn = fraction(fm, fg, (fl + fg))
727+ let fo = (toBigInt(fl) * toBigInt(fm))
728+ let fp = ((toBigInt(bE(fk)) + toBigInt(fg)) * (toBigInt(bE(fj)) - toBigInt(fn)))
729+ let fq = if ((fp >= fo))
730+ then true
731+ else throw("new K is fewer error")
732+ if ((fq == fq))
733+ then $Tuple2(nil, fn)
734+ else throw("Strict value is not equal to itself.")
735+ }
736+
737+
738+
739+@Callable(dL)
740+func calculateAmountOutForSwapAndSendTokens (fg,fh,fr,fs) = {
741+ let ft = {
742+ let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743+ if ($isInstanceOf(aR, "String"))
744+ then aR
745+ else throw(($getType(aR) + " couldn't be cast to String"))
746+ }
747+ let eH = [if ((value(dL.payments[0]).amount >= fg))
748+ then true
749+ else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(ft)))
750+ then true
751+ else aL("Permission denied")]
752+ if ((eH == eH))
753+ then {
754+ let dM = value(dL.payments[0])
755+ let fk = ba(dM.assetId)
756+ let fj = if ((fh == false))
757+ then aH(this, af())
758+ else aH(this, ae())
759+ let fl = (bE(fk) - value(dL.payments[0]).amount)
760+ let fm = bE(fj)
761+ let fn = fraction(fm, fg, (fl + fg))
762+ let fo = (toBigInt(fl) * toBigInt(fm))
763+ let fp = (toBigInt(bE(fk)) * (toBigInt(bE(fj)) - toBigInt(fn)))
764+ let fq = if ((fp >= fo))
765+ then true
766+ else throw("new K is fewer error")
767+ if ((fq == fq))
768+ then {
769+ let fu = if ((fn >= fr))
770+ then true
771+ else throw("Exchange result is fewer coins than expected")
772+ if ((fu == fu))
773+ then $Tuple2([ScriptTransfer(addressFromStringValue(fs), fn, aY(fj))], fn)
774+ else throw("Strict value is not equal to itself.")
775+ }
714776 else throw("Strict value is not equal to itself.")
715777 }
716778 else throw("Strict value is not equal to itself.")
718780
719781
720782
721-@Callable(dK)
722-func confirmManager () = {
723- let fi = fa()
724- let fj = if (isDefined(fi))
725- then true
726- else throw("No pending manager")
727- if ((fj == fj))
783+@Callable(dL)
784+func setManager (fv) = {
785+ let fw = fe(dL)
786+ if ((fw == fw))
728787 then {
729- let fk = if ((dK.callerPublicKey == value(fi)))
730- then true
731- else throw("You are not pending manager")
732- if ((fk == fk))
733- then [StringEntry(T(), toBase58String(value(fi))), DeleteEntry(U())]
788+ let fx = fromBase58String(fv)
789+ if ((fx == fx))
790+ then [StringEntry(V(), fv)]
734791 else throw("Strict value is not equal to itself.")
735792 }
736793 else throw("Strict value is not equal to itself.")
738795
739796
740797
741-@Callable(dK)
742-func put (cy,fl) = if ((0 > cy))
798+@Callable(dL)
799+func confirmManager () = {
800+ let fy = fb()
801+ let fz = if (isDefined(fy))
802+ then true
803+ else throw("No pending manager")
804+ if ((fz == fz))
805+ then {
806+ let fA = if ((dL.callerPublicKey == value(fy)))
807+ then true
808+ else throw("You are not pending manager")
809+ if ((fA == fA))
810+ then [StringEntry(U(), toBase58String(value(fy))), DeleteEntry(V())]
811+ else throw("Strict value is not equal to itself.")
812+ }
813+ else throw("Strict value is not equal to itself.")
814+ }
815+
816+
817+
818+@Callable(dL)
819+func put (cz,fB) = if ((0 > cz))
743820 then throw("Invalid slippageTolerance passed")
744821 else {
745- let dQ = dN(dK, cy, true)
746- let da = dQ._2
747- let cf = dQ._7
748- let cw = dQ._9
749- let db = dQ._10
750- let dc = dQ._11
751- let fm = dQ._12
752- let fn = dQ._13
753- let dO = toBigInt(value(dK.payments[0]).amount)
754- let dP = toBigInt(value(dK.payments[1]).amount)
755- let dr = dk(dO, dP, toBigInt(0))
756- if ((dr == dr))
822+ let dR = dO(dL, cz, true)
823+ let db = dR._2
824+ let cg = dR._7
825+ let cx = dR._9
826+ let dc = dR._10
827+ let dd = dR._11
828+ let fC = dR._12
829+ let fD = dR._13
830+ let dP = toBigInt(value(dL.payments[0]).amount)
831+ let dQ = toBigInt(value(dL.payments[1]).amount)
832+ let ds = dl(dP, dQ, toBigInt(0))
833+ if ((ds == ds))
757834 then {
758- let dT = invoke(aN, "emit", [da], nil)
759- if ((dT == dT))
835+ let dU = invoke(aO, "emit", [db], nil)
836+ if ((dU == dU))
760837 then {
761- let dU = {
762- let dV = dT
763- if ($isInstanceOf(dV, "Address"))
838+ let dV = {
839+ let dW = dU
840+ if ($isInstanceOf(dW, "Address"))
764841 then {
765- let dW = dV
766- invoke(dW, "emit", [da], nil)
842+ let dX = dW
843+ invoke(dX, "emit", [db], nil)
767844 }
768845 else unit
769846 }
770- if ((dU == dU))
847+ if ((dV == dV))
771848 then {
772- let fo = if ((db > 0))
773- then invoke(bn, "put", nil, [AttachedPayment(fm, db)])
849+ let fE = if ((dc > 0))
850+ then invoke(bo, "put", nil, [AttachedPayment(fC, dc)])
774851 else nil
775- if ((fo == fo))
852+ if ((fE == fE))
776853 then {
777- let fp = if ((dc > 0))
778- then invoke(bn, "put", nil, [AttachedPayment(fn, dc)])
854+ let fF = if ((dd > 0))
855+ then invoke(bo, "put", nil, [AttachedPayment(fD, dd)])
779856 else nil
780- if ((fp == fp))
857+ if ((fF == fF))
781858 then {
782- let fq = if (fl)
859+ let fG = if (fB)
783860 then {
784- let fr = invoke(bm, "stake", nil, [AttachedPayment(cf, da)])
785- if ((fr == fr))
861+ let fH = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862+ if ((fH == fH))
786863 then nil
787864 else throw("Strict value is not equal to itself.")
788865 }
789- else [ScriptTransfer(dK.caller, da, cf)]
790- let fs = ds(0, 0, 0)
791- if ((fs == fs))
866+ else [ScriptTransfer(dL.caller, db, cg)]
867+ let fI = dt(0, 0, 0)
868+ if ((fI == fI))
792869 then {
793- let dj = fs._2
794- let ft = fs._1
795- let fu = dw(dr, dj)
796- if ((fu == fu))
797- then ((cw ++ fq) ++ ft)
870+ let dk = fI._2
871+ let fJ = fI._1
872+ let fK = dx(ds, dk)
873+ if ((fK == fK))
874+ then ((cx ++ fG) ++ fJ)
798875 else throw("Strict value is not equal to itself.")
799876 }
800877 else throw("Strict value is not equal to itself.")
812889
813890
814891
815-@Callable(dK)
816-func putForFree (fv) = if ((0 > fv))
892+@Callable(dL)
893+func putForFree (fL) = if ((0 > fL))
817894 then throw("Invalid value passed")
818895 else {
819- let dQ = dN(dK, fv, false)
820- let cw = dQ._9
821- let dO = toBigInt(value(dK.payments[0]).amount)
822- let dP = toBigInt(value(dK.payments[1]).amount)
823- let dr = dk(dO, dP, toBigInt(0))
824- if ((dr == dr))
896+ let dR = dO(dL, fL, false)
897+ let cx = dR._9
898+ let dP = toBigInt(value(dL.payments[0]).amount)
899+ let dQ = toBigInt(value(dL.payments[1]).amount)
900+ let ds = dl(dP, dQ, toBigInt(0))
901+ if ((ds == ds))
825902 then {
826- let fw = ds(0, 0, 0)
827- let ft = fw._1
828- let dj = fw._2
829- let fu = dw(dr, dj)
830- if ((fu == fu))
831- then (cw ++ ft)
903+ let fM = dt(0, 0, 0)
904+ let fJ = fM._1
905+ let dk = fM._2
906+ let fK = dx(ds, dk)
907+ if ((fK == fK))
908+ then (cx ++ fJ)
832909 else throw("Strict value is not equal to itself.")
833910 }
834911 else throw("Strict value is not equal to itself.")
836913
837914
838915
839-@Callable(dK)
840-func putOneTkn (fx,fy) = {
841- let fz = {
842- let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
843- if ($isInstanceOf(aQ, "Boolean"))
844- then aQ
845- else throw(($getType(aQ) + " couldn't be cast to Boolean"))
916+@Callable(dL)
917+func putOneTkn (fN,fO) = {
918+ let fP = {
919+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
920+ if ($isInstanceOf(aR, "Boolean"))
921+ then aR
922+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
846923 }
847- let fA = if (if (if (aS())
924+ let fQ = if (if (if (aT())
848925 then true
849- else (bf == l))
926+ else (bg == l))
850927 then true
851- else (bf == n))
928+ else (bg == n))
852929 then true
853- else fz
854- let eG = [if (if (!(fA))
930+ else fP
931+ let eH = [if (if (!(fQ))
855932 then true
856- else fb(dK))
933+ else fc(dL))
857934 then true
858- else aK("put operation is blocked by admin"), if ((size(dK.payments) == 1))
935+ else aL("put operation is blocked by admin"), if ((size(dL.payments) == 1))
859936 then true
860- else aK("exactly 1 payment are expected")]
861- if ((eG == eG))
937+ else aL("exactly 1 payment are expected")]
938+ if ((eH == eH))
862939 then {
863- let fB = dK.payments[0]
864- let eb = fB.assetId
865- let ea = fB.amount
866- let dr = if ((eb == bh))
867- then dk(toBigInt(ea), toBigInt(0), toBigInt(0))
868- else if ((eb == bi))
869- then dk(toBigInt(0), toBigInt(ea), toBigInt(0))
870- else aK("payment asset is not supported")
871- if ((dr == dr))
940+ let fR = dL.payments[0]
941+ let ec = fR.assetId
942+ let eb = fR.amount
943+ let ds = if ((ec == bi))
944+ then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
945+ else if ((ec == bj))
946+ then dl(toBigInt(0), toBigInt(eb), toBigInt(0))
947+ else aL("payment asset is not supported")
948+ if ((ds == ds))
872949 then {
873- let aa = dK.caller
874- let ab = dK.transactionId
875- let fC = dZ(ea, eb, aa, ab)
876- if ((fC == fC))
950+ let ab = dL.caller
951+ let ac = dL.transactionId
952+ let fS = ea(eb, ec, ab, ac)
953+ if ((fS == fS))
877954 then {
878- let ef = fC._5
879- let fD = fC._4
880- let dY = fC._3
881- let dd = fC._2
882- let fE = fC._1
883- let fF = if (if ((fx > 0))
884- then (fx > fE)
955+ let eg = fS._5
956+ let fT = fS._4
957+ let dZ = fS._3
958+ let de = fS._2
959+ let fU = fS._1
960+ let fV = if (if ((fN > 0))
961+ then (fN > fU)
885962 else false)
886- then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
887- else fE
888- let dT = dR(fF)
889- if ((dT == dT))
963+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
964+ else fU
965+ let dU = dS(fV)
966+ if ((dU == dU))
890967 then {
891- let fq = if (fy)
968+ let fG = if (fO)
892969 then {
893- let fG = invoke(bm, "stake", nil, [AttachedPayment(bg, fF)])
894- if ((fG == fG))
970+ let fW = invoke(bn, "stake", nil, [AttachedPayment(bh, fV)])
971+ if ((fW == fW))
895972 then nil
896973 else throw("Strict value is not equal to itself.")
897974 }
898- else [ScriptTransfer(dK.caller, fF, bg)]
899- let fH = if ((dY > 0))
900- then [ScriptTransfer(aO, dY, eb)]
975+ else [ScriptTransfer(dL.caller, fV, bh)]
976+ let fX = if ((dZ > 0))
977+ then [ScriptTransfer(aP, dZ, ec)]
901978 else nil
902- let fI = if ((this == aO))
979+ let fY = if ((this == aP))
903980 then $Tuple2(0, 0)
904- else if (ef)
905- then $Tuple2(-(dY), 0)
906- else $Tuple2(0, -(dY))
907- let dt = fI._1
908- let du = fI._2
909- let fJ = ds(dt, du, 0)
910- let ft = fJ._1
911- let dj = fJ._2
912- let dD = value(getString(ai))
913- let fu = dw(dr, dj)
914- if ((fu == fu))
915- then $Tuple2((((dd ++ fq) ++ fH) ++ ft), fF)
981+ else if (eg)
982+ then $Tuple2(-(dZ), 0)
983+ else $Tuple2(0, -(dZ))
984+ let du = fY._1
985+ let dv = fY._2
986+ let fZ = dt(du, dv, 0)
987+ let fJ = fZ._1
988+ let dk = fZ._2
989+ let dE = value(getString(aj))
990+ let fK = dx(ds, dk)
991+ if ((fK == fK))
992+ then $Tuple2((((de ++ fG) ++ fX) ++ fJ), fV)
916993 else throw("Strict value is not equal to itself.")
917994 }
918995 else throw("Strict value is not equal to itself.")
9261003
9271004
9281005
929-@Callable(dK)
930-func putOneTknREADONLY (eb,ea) = {
931- let fK = dZ(ea, aX(eb), unit, unit)
932- let fE = fK._1
933- let dd = fK._2
934- let dY = fK._3
935- let fD = fK._4
936- let ef = fK._5
937- $Tuple2(nil, $Tuple3(fE, dY, fD))
1006+@Callable(dL)
1007+func putOneTknREADONLY (ec,eb) = {
1008+ let ga = ea(eb, aY(ec), unit, unit)
1009+ let fU = ga._1
1010+ let de = ga._2
1011+ let dZ = ga._3
1012+ let fT = ga._4
1013+ let eg = ga._5
1014+ $Tuple2(nil, $Tuple3(fU, dZ, fT))
9381015 }
9391016
9401017
9411018
942-@Callable(dK)
943-func getOneTkn (fL,fx) = {
944- let fz = {
945- let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
946- if ($isInstanceOf(aQ, "Boolean"))
947- then aQ
948- else throw(($getType(aQ) + " couldn't be cast to Boolean"))
1019+@Callable(dL)
1020+func getOneTkn (gb,fN) = {
1021+ let fP = {
1022+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1023+ if ($isInstanceOf(aR, "Boolean"))
1024+ then aR
1025+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
9491026 }
950- let fM = if (if (aS())
1027+ let gc = if (if (aT())
9511028 then true
952- else (bf == n))
1029+ else (bg == n))
9531030 then true
954- else fz
955- let eG = [if (if (!(fM))
1031+ else fP
1032+ let eH = [if (if (!(gc))
9561033 then true
957- else fb(dK))
1034+ else fc(dL))
9581035 then true
959- else aK("get operation is blocked by admin"), if ((size(dK.payments) == 1))
1036+ else aL("get operation is blocked by admin"), if ((size(dL.payments) == 1))
9601037 then true
961- else aK("exactly 1 payment are expected")]
962- if ((eG == eG))
1038+ else aL("exactly 1 payment are expected")]
1039+ if ((eH == eH))
9631040 then {
964- let eF = aX(fL)
965- let fB = dK.payments[0]
966- let eb = fB.assetId
967- let en = fB.amount
968- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
969- if ((dr == dr))
1041+ let eG = aY(gb)
1042+ let fR = dL.payments[0]
1043+ let ec = fR.assetId
1044+ let eo = fR.amount
1045+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1046+ if ((ds == ds))
9701047 then {
971- let aa = dK.caller
972- let ab = dK.transactionId
973- let fN = eE(eF, en, eb, aa, ab)
974- if ((fN == fN))
1048+ let ab = dL.caller
1049+ let ac = dL.transactionId
1050+ let gd = eF(eG, eo, ec, ab, ac)
1051+ if ((gd == gd))
9751052 then {
976- let eH = fN._5
977- let fD = fN._4
978- let dY = fN._3
979- let dd = fN._2
980- let fO = fN._1
981- let dS = if (if ((fx > 0))
982- then (fx > fO)
1053+ let eI = gd._5
1054+ let fT = gd._4
1055+ let dZ = gd._3
1056+ let de = gd._2
1057+ let ge = gd._1
1058+ let dT = if (if ((fN > 0))
1059+ then (fN > ge)
9831060 else false)
984- then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
985- else fO
986- let fP = invoke(aN, "burn", [en], [AttachedPayment(eb, en)])
987- if ((fP == fP))
1061+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1062+ else ge
1063+ let gf = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064+ if ((gf == gf))
9881065 then {
989- let fQ = [ScriptTransfer(aa, dS, eF)]
990- let fH = if ((dY > 0))
991- then [ScriptTransfer(aO, dY, eF)]
1066+ let gg = [ScriptTransfer(ab, dT, eG)]
1067+ let fX = if ((dZ > 0))
1068+ then [ScriptTransfer(aP, dZ, eG)]
9921069 else nil
993- let fR = {
994- let fS = if ((this == aO))
1070+ let gh = {
1071+ let gi = if ((this == aP))
9951072 then 0
996- else dY
997- if (eH)
998- then $Tuple2(-((dS + fS)), 0)
999- else $Tuple2(0, -((dS + fS)))
1073+ else dZ
1074+ if (eI)
1075+ then $Tuple2(-((dT + gi)), 0)
1076+ else $Tuple2(0, -((dT + gi)))
10001077 }
1001- let dt = fR._1
1002- let du = fR._2
1003- let fT = ds(dt, du, 0)
1004- let ft = fT._1
1005- let dj = fT._2
1006- let fu = dw(dr, dj)
1007- if ((fu == fu))
1008- then $Tuple2((((dd ++ fQ) ++ fH) ++ ft), dS)
1078+ let du = gh._1
1079+ let dv = gh._2
1080+ let gj = dt(du, dv, 0)
1081+ let fJ = gj._1
1082+ let dk = gj._2
1083+ let fK = dx(ds, dk)
1084+ if ((fK == fK))
1085+ then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
10091086 else throw("Strict value is not equal to itself.")
10101087 }
10111088 else throw("Strict value is not equal to itself.")
10191096
10201097
10211098
1022-@Callable(dK)
1023-func getOneTknREADONLY (eF,en) = {
1024- let fU = eE(aX(eF), en, bg, unit, unit)
1025- let fO = fU._1
1026- let dd = fU._2
1027- let dY = fU._3
1028- let fD = fU._4
1029- let eH = fU._5
1030- $Tuple2(nil, $Tuple3(fO, dY, fD))
1099+@Callable(dL)
1100+func getOneTknREADONLY (eG,eo) = {
1101+ let gk = eF(aY(eG), eo, bh, unit, unit)
1102+ let ge = gk._1
1103+ let de = gk._2
1104+ let dZ = gk._3
1105+ let fT = gk._4
1106+ let eI = gk._5
1107+ $Tuple2(nil, $Tuple3(ge, dZ, fT))
10311108 }
10321109
10331110
10341111
1035-@Callable(dK)
1036-func unstakeAndGetOneTkn (fV,fL,fx) = {
1037- let fz = {
1038- let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1039- if ($isInstanceOf(aQ, "Boolean"))
1040- then aQ
1041- else throw(($getType(aQ) + " couldn't be cast to Boolean"))
1112+@Callable(dL)
1113+func unstakeAndGetOneTkn (gl,gb,fN) = {
1114+ let fP = {
1115+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1116+ if ($isInstanceOf(aR, "Boolean"))
1117+ then aR
1118+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
10421119 }
1043- let fM = if (if (aS())
1120+ let gc = if (if (aT())
10441121 then true
1045- else (bf == n))
1122+ else (bg == n))
10461123 then true
1047- else fz
1048- let eG = [if (if (!(fM))
1124+ else fP
1125+ let eH = [if (if (!(gc))
10491126 then true
1050- else fb(dK))
1127+ else fc(dL))
10511128 then true
1052- else aK("get operation is blocked by admin"), if ((size(dK.payments) == 0))
1129+ else aL("get operation is blocked by admin"), if ((size(dL.payments) == 0))
10531130 then true
1054- else aK("no payments are expected")]
1055- if ((eG == eG))
1131+ else aL("no payments are expected")]
1132+ if ((eH == eH))
10561133 then {
1057- let eF = aX(fL)
1058- let aa = dK.caller
1059- let ab = dK.transactionId
1060- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1061- if ((dr == dr))
1134+ let eG = aY(gb)
1135+ let ab = dL.caller
1136+ let ac = dL.transactionId
1137+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1138+ if ((ds == ds))
10621139 then {
1063- let fW = invoke(bm, "unstake", [toBase58String(bg), fV], nil)
1064- if ((fW == fW))
1140+ let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1141+ if ((gm == gm))
10651142 then {
1066- let fX = eE(eF, fV, bg, aa, ab)
1067- if ((fX == fX))
1143+ let gn = eF(eG, gl, bh, ab, ac)
1144+ if ((gn == gn))
10681145 then {
1069- let eH = fX._5
1070- let fD = fX._4
1071- let dY = fX._3
1072- let dd = fX._2
1073- let fO = fX._1
1074- let dS = if (if ((fx > 0))
1075- then (fx > fO)
1146+ let eI = gn._5
1147+ let fT = gn._4
1148+ let dZ = gn._3
1149+ let de = gn._2
1150+ let ge = gn._1
1151+ let dT = if (if ((fN > 0))
1152+ then (fN > ge)
10761153 else false)
1077- then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
1078- else fO
1079- let fP = invoke(aN, "burn", [fV], [AttachedPayment(bg, fV)])
1080- if ((fP == fP))
1154+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1155+ else ge
1156+ let gf = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1157+ if ((gf == gf))
10811158 then {
1082- let fQ = [ScriptTransfer(dK.caller, dS, eF)]
1083- let fH = if ((dY > 0))
1084- then [ScriptTransfer(aO, dY, eF)]
1159+ let gg = [ScriptTransfer(dL.caller, dT, eG)]
1160+ let fX = if ((dZ > 0))
1161+ then [ScriptTransfer(aP, dZ, eG)]
10851162 else nil
1086- let fY = {
1087- let fS = if ((this == aO))
1163+ let go = {
1164+ let gi = if ((this == aP))
10881165 then 0
1089- else dY
1090- if (eH)
1091- then $Tuple2(-((dS + fS)), 0)
1092- else $Tuple2(0, -((dS + fS)))
1166+ else dZ
1167+ if (eI)
1168+ then $Tuple2(-((dT + gi)), 0)
1169+ else $Tuple2(0, -((dT + gi)))
10931170 }
1094- let dt = fY._1
1095- let du = fY._2
1096- let fZ = ds(dt, du, 0)
1097- let ft = fZ._1
1098- let dj = fZ._2
1099- let fu = dw(dr, dj)
1100- if ((fu == fu))
1101- then $Tuple2((((dd ++ fQ) ++ fH) ++ ft), dS)
1171+ let du = go._1
1172+ let dv = go._2
1173+ let gp = dt(du, dv, 0)
1174+ let fJ = gp._1
1175+ let dk = gp._2
1176+ let fK = dx(ds, dk)
1177+ if ((fK == fK))
1178+ then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
11021179 else throw("Strict value is not equal to itself.")
11031180 }
11041181 else throw("Strict value is not equal to itself.")
11141191
11151192
11161193
1117-@Callable(dK)
1194+@Callable(dL)
11181195 func get () = {
1119- let cO = dJ(dK)
1120- let ga = cO._1
1121- let cv = cO._2
1122- let dM = cO._3
1123- let cd = cO._4
1124- let cw = cO._5
1125- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1126- if ((dr == dr))
1196+ let cP = dK(dL)
1197+ let gq = cP._1
1198+ let cw = cP._2
1199+ let dN = cP._3
1200+ let ce = cP._4
1201+ let cx = cP._5
1202+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1203+ if ((ds == ds))
11271204 then {
1128- let gb = invoke(aN, "burn", [dM], [AttachedPayment(cd, dM)])
1129- if ((gb == gb))
1205+ let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206+ if ((gr == gr))
11301207 then {
1131- let gc = ds(-(ga), -(cv), 0)
1132- let ft = gc._1
1133- let dj = gc._2
1134- let fu = dw(dr, dj)
1135- if ((fu == fu))
1136- then (cw ++ ft)
1208+ let gs = dt(-(gq), -(cw), 0)
1209+ let fJ = gs._1
1210+ let dk = gs._2
1211+ let fK = dx(ds, dk)
1212+ if ((fK == fK))
1213+ then (cx ++ fJ)
11371214 else throw("Strict value is not equal to itself.")
11381215 }
11391216 else throw("Strict value is not equal to itself.")
11431220
11441221
11451222
1146-@Callable(dK)
1147-func getNoLess (gd,ge) = {
1148- let cO = dJ(dK)
1149- let cu = cO._1
1150- let cv = cO._2
1151- let dM = cO._3
1152- let cd = cO._4
1153- let cw = cO._5
1154- if ((gd > cu))
1155- then throw(((("noLessThenAmtAsset failed: " + toString(cu)) + " < ") + toString(gd)))
1156- else if ((ge > cv))
1157- then throw(((("noLessThenPriceAsset failed: " + toString(cv)) + " < ") + toString(ge)))
1223+@Callable(dL)
1224+func getNoLess (gt,gu) = {
1225+ let cP = dK(dL)
1226+ let cv = cP._1
1227+ let cw = cP._2
1228+ let dN = cP._3
1229+ let ce = cP._4
1230+ let cx = cP._5
1231+ if ((gt > cv))
1232+ then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gt)))
1233+ else if ((gu > cw))
1234+ then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gu)))
11581235 else {
1159- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1160- if ((dr == dr))
1236+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1237+ if ((ds == ds))
11611238 then {
1162- let gb = invoke(aN, "burn", [dM], [AttachedPayment(cd, dM)])
1163- if ((gb == gb))
1239+ let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240+ if ((gr == gr))
11641241 then {
1165- let gf = ds(-(cu), -(cv), 0)
1166- let ft = gf._1
1167- let dj = gf._2
1168- let fu = dw(dr, dj)
1169- if ((fu == fu))
1170- then (cw ++ ft)
1242+ let gv = dt(-(cv), -(cw), 0)
1243+ let fJ = gv._1
1244+ let dk = gv._2
1245+ let fK = dx(ds, dk)
1246+ if ((fK == fK))
1247+ then (cx ++ fJ)
11711248 else throw("Strict value is not equal to itself.")
11721249 }
11731250 else throw("Strict value is not equal to itself.")
11781255
11791256
11801257
1181-@Callable(dK)
1182-func unstakeAndGet (dS) = {
1183- let gg = if ((size(dK.payments) != 0))
1258+@Callable(dL)
1259+func unstakeAndGet (dT) = {
1260+ let gw = if ((size(dL.payments) != 0))
11841261 then throw("No payments are expected")
11851262 else true
1186- if ((gg == gg))
1263+ if ((gw == gw))
11871264 then {
1188- let bS = aU()
1189- let cf = fromBase58String(bS[q])
1190- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1191- if ((dr == dr))
1265+ let bT = aV()
1266+ let cg = fromBase58String(bT[q])
1267+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1268+ if ((ds == ds))
11921269 then {
1193- let fW = invoke(bm, "unstake", [toBase58String(cf), dS], nil)
1194- if ((fW == fW))
1270+ let gm = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271+ if ((gm == gm))
11951272 then {
1196- let cO = cb(toBase58String(dK.transactionId), toBase58String(cf), dS, dK.caller)
1197- let cu = cO._1
1198- let cv = cO._2
1199- let ci = parseIntValue(cO._9)
1200- let cw = cO._10
1201- let gh = if (if (aS())
1273+ let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
1274+ let cv = cP._1
1275+ let cw = cP._2
1276+ let cj = parseIntValue(cP._9)
1277+ let cx = cP._10
1278+ let gx = if (if (aT())
12021279 then true
1203- else (ci == n))
1204- then throw(("Get operation is blocked by admin. Status = " + toString(ci)))
1280+ else (cj == n))
1281+ then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
12051282 else true
1206- if ((gh == gh))
1283+ if ((gx == gx))
12071284 then {
1208- let gb = invoke(aN, "burn", [dS], [AttachedPayment(cf, dS)])
1209- if ((gb == gb))
1285+ let gr = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286+ if ((gr == gr))
12101287 then {
1211- let gi = ds(-(cu), -(cv), 0)
1212- let ft = gi._1
1213- let dj = gi._2
1214- let fu = dw(dr, dj)
1215- if ((fu == fu))
1216- then (cw ++ ft)
1288+ let gy = dt(-(cv), -(cw), 0)
1289+ let fJ = gy._1
1290+ let dk = gy._2
1291+ let fK = dx(ds, dk)
1292+ if ((fK == fK))
1293+ then (cx ++ fJ)
12171294 else throw("Strict value is not equal to itself.")
12181295 }
12191296 else throw("Strict value is not equal to itself.")
12291306
12301307
12311308
1232-@Callable(dK)
1233-func unstakeAndGetNoLess (fV,gj,ge) = {
1234- let fM = if (aS())
1309+@Callable(dL)
1310+func unstakeAndGetNoLess (gl,gz,gu) = {
1311+ let gc = if (aT())
12351312 then true
1236- else (bf == n)
1237- let eG = [if (!(fM))
1313+ else (bg == n)
1314+ let eH = [if (!(gc))
12381315 then true
1239- else throw("get operation is blocked by admin"), if ((size(dK.payments) == 0))
1316+ else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
12401317 then true
12411318 else throw("no payments are expected")]
1242- if ((eG == eG))
1319+ if ((eH == eH))
12431320 then {
1244- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1245- if ((dr == dr))
1321+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1322+ if ((ds == ds))
12461323 then {
1247- let fW = invoke(bm, "unstake", [toBase58String(bg), fV], nil)
1248- if ((fW == fW))
1324+ let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1325+ if ((gm == gm))
12491326 then {
1250- let cO = cb(toBase58String(dK.transactionId), toBase58String(bg), fV, dK.caller)
1251- let cu = cO._1
1252- let cv = cO._2
1253- let cw = cO._10
1254- let gk = [if ((cu >= gj))
1327+ let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gl, dL.caller)
1328+ let cv = cP._1
1329+ let cw = cP._2
1330+ let cx = cP._10
1331+ let gA = [if ((cv >= gz))
12551332 then true
1256- else throw(makeString(["amount asset amount to receive is less than ", toString(gj)], "")), if ((cv >= ge))
1333+ else throw(makeString(["amount asset amount to receive is less than ", toString(gz)], "")), if ((cw >= gu))
12571334 then true
1258- else throw(makeString(["price asset amount to receive is less than ", toString(ge)], ""))]
1259- if ((gk == gk))
1335+ else throw(makeString(["price asset amount to receive is less than ", toString(gu)], ""))]
1336+ if ((gA == gA))
12601337 then {
1261- let gb = invoke(aN, "burn", [fV], [AttachedPayment(bg, fV)])
1262- if ((gb == gb))
1338+ let gr = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1339+ if ((gr == gr))
12631340 then {
1264- let gl = ds(-(cu), -(cv), 0)
1265- let ft = gl._1
1266- let dj = gl._2
1267- let fu = dw(dr, dj)
1268- if ((fu == fu))
1269- then (cw ++ ft)
1341+ let gB = dt(-(cv), -(cw), 0)
1342+ let fJ = gB._1
1343+ let dk = gB._2
1344+ let fK = dx(ds, dk)
1345+ if ((fK == fK))
1346+ then (cx ++ fJ)
12701347 else throw("Strict value is not equal to itself.")
12711348 }
12721349 else throw("Strict value is not equal to itself.")
12821359
12831360
12841361
1285-@Callable(dK)
1286-func activate (gm,gn) = if ((toString(dK.caller) != toString(aN)))
1362+@Callable(dL)
1363+func activate (gC,gD) = if ((toString(dL.caller) != toString(aO)))
12871364 then throw("permissions denied")
1288- else $Tuple2([StringEntry(ad(), gm), StringEntry(ae(), gn)], "success")
1365+ else $Tuple2([StringEntry(ae(), gC), StringEntry(af(), gD)], "success")
12891366
12901367
12911368
1292-@Callable(dK)
1369+@Callable(dL)
12931370 func refreshKLp () = {
1294- let go = valueOrElse(getInteger(aj), 0)
1295- let gp = if (((height - go) >= am))
1371+ let gE = valueOrElse(getInteger(ak), 0)
1372+ let gF = if (((height - gE) >= an))
12961373 then unit
1297- else aK(makeString([toString(am), " blocks have not passed since the previous call"], ""))
1298- if ((gp == gp))
1374+ else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1375+ if ((gF == gF))
12991376 then {
1300- let dD = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ai), "0")), aM("invalid kLp"))
1301- let gq = ds(0, 0, 0)
1302- let gr = gq._1
1303- let dj = gq._2
1304- let dv = if ((dD != dj))
1305- then gr
1306- else aK("nothing to refresh")
1307- $Tuple2(dv, toString(dj))
1377+ let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
1378+ let gG = dt(0, 0, 0)
1379+ let gH = gG._1
1380+ let dk = gG._2
1381+ let dw = if ((dE != dk))
1382+ then gH
1383+ else aL("nothing to refresh")
1384+ $Tuple2(dw, toString(dk))
13081385 }
13091386 else throw("Strict value is not equal to itself.")
13101387 }
13111388
13121389
13131390
1314-@Callable(dK)
1315-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
1391+@Callable(dL)
1392+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aV())
13161393
13171394
13181395
1319-@Callable(dK)
1320-func getAccBalanceWrapperREADONLY (bE) = $Tuple2(nil, bD(bE))
1396+@Callable(dL)
1397+func getAccBalanceWrapperREADONLY (bF) = $Tuple2(nil, bE(bF))
13211398
13221399
13231400
1324-@Callable(dK)
1325-func calcPricesWrapperREADONLY (bM,bN,bR) = {
1326- let ca = bQ(bM, bN, bR)
1327- $Tuple2(nil, [toString(ca[0]), toString(ca[1]), toString(ca[2])])
1401+@Callable(dL)
1402+func calcPricesWrapperREADONLY (bN,bO,bS) = {
1403+ let cb = bR(bN, bO, bS)
1404+ $Tuple2(nil, [toString(cb[0]), toString(cb[1]), toString(cb[2])])
13281405 }
13291406
13301407
13311408
1332-@Callable(dK)
1409+@Callable(dL)
13331410 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
13341411
13351412
13361413
1337-@Callable(dK)
1414+@Callable(dL)
13381415 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
13391416
13401417
13411418
1342-@Callable(dK)
1343-func calcPriceBigIntWrapperREADONLY (bG,bH) = $Tuple2(nil, toString(bF(parseBigIntValue(bG), parseBigIntValue(bH))))
1419+@Callable(dL)
1420+func calcPriceBigIntWrapperREADONLY (bH,bI) = $Tuple2(nil, toString(bG(parseBigIntValue(bH), parseBigIntValue(bI))))
13441421
13451422
13461423
1347-@Callable(dK)
1348-func estimatePutOperationWrapperREADONLY (cc,cy,cz,cA,cB,cC,aa,cD,cE) = $Tuple2(nil, cx(cc, cy, cz, cA, cB, cC, aa, cD, cE))
1424+@Callable(dL)
1425+func estimatePutOperationWrapperREADONLY (cd,cz,cA,cB,cC,cD,ab,cE,cF) = $Tuple2(nil, cy(cd, cz, cA, cB, cC, cD, ab, cE, cF))
13491426
13501427
13511428
1352-@Callable(dK)
1353-func estimateGetOperationWrapperREADONLY (cc,cd,ce,aa) = {
1354- let cO = cb(cc, cd, ce, addressFromStringValue(aa))
1355- $Tuple2(nil, $Tuple10(cO._1, cO._2, cO._3, cO._4, cO._5, cO._6, cO._7, toString(cO._8), cO._9, cO._10))
1429+@Callable(dL)
1430+func estimateGetOperationWrapperREADONLY (cd,ce,cf,ab) = {
1431+ let cP = cc(cd, ce, cf, addressFromStringValue(ab))
1432+ $Tuple2(nil, $Tuple10(cP._1, cP._2, cP._3, cP._4, cP._5, cP._6, cP._7, toString(cP._8), cP._9, cP._10))
13561433 }
13571434
13581435
13591436
1360-@Callable(dK)
1437+@Callable(dL)
13611438 func statsREADONLY () = {
1362- let bS = aU()
1363- let cf = fromBase58String(bS[q])
1364- let gs = bS[r]
1365- let gt = bS[s]
1366- let cH = bS[v]
1367- let cI = bS[w]
1368- let bT = parseIntValue(bS[t])
1369- let bU = parseIntValue(bS[u])
1370- let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1371- let gv = bD(gs)
1372- let gw = bD(gt)
1373- let gx = if ((gu == 0))
1439+ let bT = aV()
1440+ let cg = fromBase58String(bT[q])
1441+ let gI = bT[r]
1442+ let gJ = bT[s]
1443+ let cI = bT[v]
1444+ let cJ = bT[w]
1445+ let bU = parseIntValue(bT[t])
1446+ let bV = parseIntValue(bT[u])
1447+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1448+ let gL = bE(gI)
1449+ let gM = bE(gJ)
1450+ let gN = if ((gK == 0))
13741451 then [e, e, e]
1375- else bQ(gv, gw, gu)
1376- let cp = 0
1377- let gy = H(gx[1], b)
1378- let gz = H(gx[2], b)
1379- let gA = value(getInteger(aN, ax(toString(this))))
1380- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gv), toString(gw), toString(gu), toString(cp), toString(gy), toString(gz), toString(gA)], j))
1452+ else bR(gL, gM, gK)
1453+ let cq = 0
1454+ let gO = H(gN[1], b)
1455+ let gP = H(gN[2], b)
1456+ let gQ = value(getInteger(aO, ay(toString(this))))
1457+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gL), toString(gM), toString(gK), toString(cq), toString(gO), toString(gP), toString(gQ)], j))
13811458 }
13821459
13831460
13841461
1385-@Callable(dK)
1386-func evaluatePutByAmountAssetREADONLY (cz) = {
1387- let bS = aU()
1388- let cf = fromBase58String(bS[q])
1389- let cF = bS[r]
1390- let cg = fromBase58String(cF)
1391- let cG = bS[s]
1462+@Callable(dL)
1463+func evaluatePutByAmountAssetREADONLY (cA) = {
1464+ let bT = aV()
1465+ let cg = fromBase58String(bT[q])
1466+ let cG = bT[r]
13921467 let ch = fromBase58String(cG)
1393- let bT = parseIntValue(bS[t])
1394- let bU = parseIntValue(bS[u])
1395- let ci = bS[p]
1396- let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1397- let gv = bD(cF)
1398- let gw = bD(cG)
1399- let bO = D(gv, bT)
1400- let bP = D(gw, bU)
1401- let co = if ((gu == 0))
1468+ let cH = bT[s]
1469+ let ci = fromBase58String(cH)
1470+ let bU = parseIntValue(bT[t])
1471+ let bV = parseIntValue(bT[u])
1472+ let cj = bT[p]
1473+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474+ let gL = bE(cG)
1475+ let gM = bE(cH)
1476+ let bP = D(gL, bU)
1477+ let bQ = D(gM, bV)
1478+ let cp = if ((gK == 0))
14021479 then e
1403- else bF(bP, bO)
1404- let cL = D(cz, bT)
1405- let cM = fraction(cL, co, d)
1406- let cB = H(cM, bU)
1407- let dQ = cx("", 500000, cz, cg, cB, ch, "", true, false)
1408- let cW = dQ._1
1409- let gB = dQ._3
1410- let ck = dQ._4
1411- let cm = dQ._5
1412- let cj = dQ._6
1413- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cW), toString(H(co, b)), toString(ck), toString(cm), toString(cj), ci, toString(cz), toString(cB)], j))
1480+ else bG(bQ, bP)
1481+ let cM = D(cA, bU)
1482+ let cN = fraction(cM, cp, d)
1483+ let cC = H(cN, bV)
1484+ let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1485+ let cX = dR._1
1486+ let gR = dR._3
1487+ let cl = dR._4
1488+ let cn = dR._5
1489+ let ck = dR._6
1490+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
14141491 }
14151492
14161493
14171494
1418-@Callable(dK)
1419-func evaluatePutByPriceAssetREADONLY (cB) = {
1420- let bS = aU()
1421- let cf = fromBase58String(bS[q])
1422- let cF = bS[r]
1423- let cg = fromBase58String(cF)
1424- let cG = bS[s]
1495+@Callable(dL)
1496+func evaluatePutByPriceAssetREADONLY (cC) = {
1497+ let bT = aV()
1498+ let cg = fromBase58String(bT[q])
1499+ let cG = bT[r]
14251500 let ch = fromBase58String(cG)
1426- let bT = parseIntValue(bS[t])
1427- let bU = parseIntValue(bS[u])
1428- let ci = bS[p]
1429- let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1430- let gC = bD(cF)
1431- let gD = bD(cG)
1432- let gE = D(gC, bT)
1433- let gF = D(gD, bU)
1434- let co = if ((gu == 0))
1501+ let cH = bT[s]
1502+ let ci = fromBase58String(cH)
1503+ let bU = parseIntValue(bT[t])
1504+ let bV = parseIntValue(bT[u])
1505+ let cj = bT[p]
1506+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507+ let gS = bE(cG)
1508+ let gT = bE(cH)
1509+ let gU = D(gS, bU)
1510+ let gV = D(gT, bV)
1511+ let cp = if ((gK == 0))
14351512 then e
1436- else bF(gF, gE)
1437- let cM = D(cB, bU)
1438- let cL = fraction(cM, d, co)
1439- let cz = H(cL, bT)
1440- let dQ = cx("", 500000, cz, cg, cB, ch, "", true, false)
1441- let cW = dQ._1
1442- let gB = dQ._3
1443- let ck = dQ._4
1444- let cm = dQ._5
1445- let cj = dQ._6
1446- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cW), toString(H(co, b)), toString(ck), toString(cm), toString(cj), ci, toString(cz), toString(cB)], j))
1513+ else bG(gV, gU)
1514+ let cN = D(cC, bV)
1515+ let cM = fraction(cN, d, cp)
1516+ let cA = H(cM, bU)
1517+ let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1518+ let cX = dR._1
1519+ let gR = dR._3
1520+ let cl = dR._4
1521+ let cn = dR._5
1522+ let ck = dR._6
1523+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
14471524 }
14481525
14491526
14501527
1451-@Callable(dK)
1452-func evaluateGetREADONLY (gG,gH) = {
1453- let cO = cb("", gG, gH, this)
1454- let cu = cO._1
1455- let cv = cO._2
1456- let ck = cO._5
1457- let cm = cO._6
1458- let cj = cO._7
1459- let cp = cO._8
1460- let ci = parseIntValue(cO._9)
1461- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cu), toString(cv), toString(ck), toString(cm), toString(cj), toString(cp), toString(ci)], j))
1528+@Callable(dL)
1529+func evaluateGetREADONLY (gW,gX) = {
1530+ let cP = cc("", gW, gX, this)
1531+ let cv = cP._1
1532+ let cw = cP._2
1533+ let cl = cP._5
1534+ let cn = cP._6
1535+ let ck = cP._7
1536+ let cq = cP._8
1537+ let cj = parseIntValue(cP._9)
1538+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cv), toString(cw), toString(cl), toString(cn), toString(ck), toString(cq), toString(cj)], j))
14621539 }
14631540
14641541
1465-@Verifier(gI)
1466-func gJ () = {
1467- let gK = {
1468- let dV = eY()
1469- if ($isInstanceOf(dV, "ByteVector"))
1542+@Verifier(gY)
1543+func gZ () = {
1544+ let ha = {
1545+ let dW = eZ()
1546+ if ($isInstanceOf(dW, "ByteVector"))
14701547 then {
1471- let fc = dV
1472- fc
1548+ let fd = dW
1549+ fd
14731550 }
1474- else if ($isInstanceOf(dV, "Unit"))
1475- then gI.senderPublicKey
1551+ else if ($isInstanceOf(dW, "Unit"))
1552+ then gY.senderPublicKey
14761553 else throw("Match error")
14771554 }
1478- let dV = gI
1479- if ($isInstanceOf(dV, "Order"))
1555+ let dW = gY
1556+ if ($isInstanceOf(dW, "Order"))
14801557 then {
1481- let dz = dV
1482- let gL = aT()
1483- let gM = dy(dz)
1484- let aC = gM._1
1485- let aD = gM._2
1486- let aE = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1487- let aF = sigVerify(dz.bodyBytes, dz.proofs[1], gL)
1488- if (if (if (aC)
1489- then aE
1490- else false)
1558+ let dA = dW
1559+ let hb = aU()
1560+ let hc = dz(dA)
1561+ let aD = hc._1
1562+ let aE = hc._2
1563+ let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1564+ let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hb)
1565+ if (if (if (aD)
14911566 then aF
14921567 else false)
1568+ then aG
1569+ else false)
14931570 then true
1494- else aB(aC, aD, aE, aF)
1571+ else aC(aD, aE, aF, aG)
14951572 }
1496- else if ($isInstanceOf(dV, "SetScriptTransaction"))
1573+ else if ($isInstanceOf(dW, "SetScriptTransaction"))
14971574 then {
1498- let eZ = dV
1499- if (sigVerify(gI.bodyBytes, gI.proofs[0], gK))
1575+ let fa = dW
1576+ if (sigVerify(gY.bodyBytes, gY.proofs[0], ha))
15001577 then true
15011578 else {
1502- let gN = blake2b256(value(eZ.script))
1503- let gO = fromBase64String(value(getString(aN, az())))
1504- let gP = scriptHash(this)
1505- if ((gO == gN))
1506- then (gP != gN)
1579+ let hd = blake2b256(value(fa.script))
1580+ let he = fromBase64String(value(getString(aO, aA())))
1581+ let hf = scriptHash(this)
1582+ if ((he == hd))
1583+ then (hf != hd)
15071584 else false
15081585 }
15091586 }
1510- else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
1587+ else sigVerify(gY.bodyBytes, gY.proofs[0], ha)
15111588 }
15121589
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 (E,F) = fraction(E, d, F)
6666
6767
6868 func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
7171 func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
7474 func M (N,O,P) = fraction(N, O, P)
7575
7676
7777 func Q (I) = if ((0 > I))
7878 then -(I)
7979 else I
8080
8181
8282 func R (I) = if ((e > I))
8383 then -(I)
8484 else I
8585
8686
87-func S () = "%s__factoryContract"
87+func S () = "%s__swapContract"
8888
8989
90-func T () = "%s__managerPublicKey"
90+func T () = "%s__factoryContract"
9191
9292
93-func U () = "%s__pendingManagerPublicKey"
93+func U () = "%s__managerPublicKey"
9494
9595
96-func V () = "%s%s__price__last"
96+func V () = "%s__pendingManagerPublicKey"
9797
9898
99-func W (X,Y) = makeString(["%s%s%d%d__price__history", toString(X), toString(Y)], j)
99+func W () = "%s%s__price__last"
100100
101101
102-func Z (aa,ab) = ((("%s%s%s__P__" + aa) + "__") + ab)
102+func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105-func ac (aa,ab) = ((("%s%s%s__G__" + aa) + "__") + ab)
105+func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108-func ad () = "%s__amountAsset"
108+func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111-func ae () = "%s__priceAsset"
111+func ae () = "%s__amountAsset"
112112
113113
114-let af = "%s__fee"
115-
116-let ag = fraction(10, b, 10000)
117-
118-let ah = valueOrElse(getInteger(this, af), ag)
119-
120-let ai = makeString(["%s", "kLp"], j)
121-
122-let aj = makeString(["%s", "kLpRefreshedHeight"], j)
123-
124-let ak = makeString(["%s", "refreshKLpDelay"], j)
125-
126-let al = 30
127-
128-let am = valueOrElse(getInteger(this, ak), al)
129-
130-func an () = "%s__factoryConfig"
114+func af () = "%s__priceAsset"
131115
132116
133-func ao () = "%s%s__matcher__publicKey"
117+let ag = "%s__fee"
118+
119+let ah = fraction(10, b, 10000)
120+
121+let ai = valueOrElse(getInteger(this, ag), ah)
122+
123+let aj = makeString(["%s", "kLp"], j)
124+
125+let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126+
127+let al = makeString(["%s", "refreshKLpDelay"], j)
128+
129+let am = 30
130+
131+let an = valueOrElse(getInteger(this, al), am)
132+
133+func ao () = "%s__factoryConfig"
134134
135135
136-func ap (aq) = (("%s%s%s__" + aq) + "__mappings__poolContract2LpAsset")
136+func ap () = "%s%s__matcher__publicKey"
137137
138138
139-func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
139+func aq (ar) = (("%s%s%s__" + ar) + "__mappings__poolContract2LpAsset")
140140
141141
142-func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
142+func as (at,au) = (((("%d%d%s__" + at) + "__") + au) + "__config")
143143
144144
145-func aw () = "%s__shutdown"
145+func av (aw) = ("%s%s%s__mappings__baseAsset2internalId__" + aw)
146146
147147
148-func ax (ay) = ("%s%s__poolWeight__" + ay)
148+func ax () = "%s__shutdown"
149149
150150
151-func az () = "%s__allowedLpScriptHash"
151+func ay (az) = ("%s%s__poolWeight__" + az)
152152
153153
154-let aA = "%s__feeCollectorAddress"
155-
156-func aB (aC,aD,aE,aF) = throw((((((((("order validation failed: orderValid=" + toString(aC)) + " (") + aD) + ")") + " senderValid=") + toString(aE)) + " matcherValid=") + toString(aF)))
154+func aA () = "%s__allowedLpScriptHash"
157155
158156
159-func aG (aH,aI) = valueOrErrorMessage(getString(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " is not defined"], ""))
157+let aB = "%s__feeCollectorAddress"
158+
159+func aC (aD,aE,aF,aG) = throw((((((((("order validation failed: orderValid=" + toString(aD)) + " (") + aE) + ")") + " senderValid=") + toString(aF)) + " matcherValid=") + toString(aG)))
160160
161161
162-func aJ (aH,aI) = valueOrErrorMessage(getInteger(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " is not defined"], ""))
162+func aH (aI,aJ) = valueOrErrorMessage(getString(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
163163
164164
165-func aK (aL) = throw(makeString(["lp.ride:", aL], " "))
165+func aK (aI,aJ) = valueOrErrorMessage(getInteger(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
166166
167167
168-func aM (aL) = makeString(["lp.ride:", aL], " ")
168+func aL (aM) = throw(makeString(["lp.ride:", aM], " "))
169169
170170
171-let aN = addressFromStringValue(aG(this, S()))
171+func aN (aM) = makeString(["lp.ride:", aM], " ")
172172
173-let aO = addressFromStringValue(aG(aN, aA))
174173
175-let aP = {
176- let aQ = invoke(aN, "getInFeeREADONLY", [toString(this)], nil)
177- if ($isInstanceOf(aQ, "Int"))
178- then aQ
179- else throw(($getType(aQ) + " couldn't be cast to Int"))
174+let aO = addressFromStringValue(aH(this, T()))
175+
176+let aP = addressFromStringValue(aH(aO, aB))
177+
178+let aQ = {
179+ let aR = invoke(aO, "getInFeeREADONLY", [toString(this)], nil)
180+ if ($isInstanceOf(aR, "Int"))
181+ then aR
182+ else throw(($getType(aR) + " couldn't be cast to Int"))
180183 }
181184
182-let aR = {
183- let aQ = invoke(aN, "getOutFeeREADONLY", [toString(this)], nil)
184- if ($isInstanceOf(aQ, "Int"))
185- then aQ
186- else throw(($getType(aQ) + " couldn't be cast to Int"))
185+let aS = {
186+ let aR = invoke(aO, "getOutFeeREADONLY", [toString(this)], nil)
187+ if ($isInstanceOf(aR, "Int"))
188+ then aR
189+ else throw(($getType(aR) + " couldn't be cast to Int"))
187190 }
188191
189-func aS () = valueOrElse(getBoolean(aN, aw()), false)
192+func aT () = valueOrElse(getBoolean(aO, ax()), false)
190193
191194
192-func aT () = fromBase58String(aG(aN, ao()))
195+func aU () = fromBase58String(aH(aO, ap()))
193196
194197
195-func aU () = {
196- let aV = aG(this, ad())
197- let aW = aG(this, ae())
198- let at = aJ(aN, au(aW))
199- let as = aJ(aN, au(aV))
200- split(aG(aN, ar(toString(as), toString(at))), j)
198+func aV () = {
199+ let aW = aH(this, ae())
200+ let aX = aH(this, af())
201+ let au = aK(aO, av(aX))
202+ let at = aK(aO, av(aW))
203+ split(aH(aO, as(toString(at), toString(au))), j)
201204 }
202205
203206
204-func aX (aY) = if ((aY == i))
207+func aY (aZ) = if ((aZ == i))
205208 then unit
206- else fromBase58String(aY)
209+ else fromBase58String(aZ)
207210
208211
209-func aZ (aY) = if ((aY == unit))
212+func ba (aZ) = if ((aZ == unit))
210213 then i
211- else toBase58String(value(aY))
214+ else toBase58String(value(aZ))
212215
213216
214-func ba (bb) = $Tuple7(addressFromStringValue(bb[o]), parseIntValue(bb[p]), fromBase58String(bb[q]), aX(bb[r]), aX(bb[s]), parseIntValue(bb[t]), parseIntValue(bb[u]))
217+func bb (bc) = $Tuple7(addressFromStringValue(bc[o]), parseIntValue(bc[p]), fromBase58String(bc[q]), aY(bc[r]), aY(bc[s]), parseIntValue(bc[t]), parseIntValue(bc[u]))
215218
216219
217-let bc = ba(aU())
220+let bd = bb(aV())
218221
219-let bd = bc
222+let be = bd
220223
221-let be = bd._1
224+let bf = be._1
222225
223-let bf = bd._2
226+let bg = be._2
224227
225-let bg = bd._3
228+let bh = be._3
226229
227-let bh = bd._4
230+let bi = be._4
228231
229-let bi = bd._5
232+let bj = be._5
230233
231-let bj = bd._6
234+let bk = be._6
232235
233-let bk = bd._7
236+let bl = be._7
234237
235-func bl () = split(aG(aN, an()), j)
238+func bm () = split(aH(aO, ao()), j)
236239
237240
238-let bm = valueOrErrorMessage(addressFromString(bl()[B]), "incorrect staking address")
241+let bn = valueOrErrorMessage(addressFromString(bm()[B]), "incorrect staking address")
239242
240-let bn = valueOrErrorMessage(addressFromString(bl()[C]), "incorrect staking address")
243+let bo = valueOrErrorMessage(addressFromString(bm()[C]), "incorrect staking address")
241244
242-func bo (bp,bq,br,bs,bt,bu,bv,bw,bx,by) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by)], j)
245+func bp (bq,br,bs,bt,bu,bv,bw,bx,by,bz) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz)], j)
243246
244247
245-func bz (bA,bB,bC,bs,bv,bw) = makeString(["%d%d%d%d%d%d", toString(bA), toString(bB), toString(bC), toString(bs), toString(bv), toString(bw)], j)
248+func bA (bB,bC,bD,bt,bw,bx) = makeString(["%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bt), toString(bw), toString(bx)], j)
246249
247250
248-func bD (bE) = if ((bE == "WAVES"))
251+func bE (bF) = if ((bF == "WAVES"))
249252 then wavesBalance(this).available
250- else assetBalance(this, fromBase58String(bE))
253+ else assetBalance(this, fromBase58String(bF))
251254
252255
253-func bF (bG,bH) = fraction(bG, d, bH)
256+func bG (bH,bI) = fraction(bH, d, bI)
254257
255258
256-func bI (bG,bH,L) = fraction(bG, d, bH, L)
259+func bJ (bH,bI,L) = fraction(bH, d, bI, L)
257260
258261
259-func bJ (bK,bL,bM,bN) = {
260- let bO = D(bM, bK)
262+func bK (bL,bM,bN,bO) = {
261263 let bP = D(bN, bL)
262- bF(bP, bO)
264+ let bQ = D(bO, bM)
265+ bG(bQ, bP)
263266 }
264267
265268
266-func bQ (bM,bN,bR) = {
267- let bS = aU()
268- let bT = parseIntValue(bS[t])
269- let bU = parseIntValue(bS[u])
270- let bV = bJ(bT, bU, bM, bN)
271- let bH = D(bM, bT)
272- let bG = D(bN, bU)
273- let bW = D(bR, b)
274- let bX = bF(bH, bW)
275- let bY = bF(bG, bW)
276-[bV, bX, bY]
269+func bR (bN,bO,bS) = {
270+ let bT = aV()
271+ let bU = parseIntValue(bT[t])
272+ let bV = parseIntValue(bT[u])
273+ let bW = bK(bU, bV, bN, bO)
274+ let bI = D(bN, bU)
275+ let bH = D(bO, bV)
276+ let bX = D(bS, b)
277+ let bY = bG(bI, bX)
278+ let bZ = bG(bH, bX)
279+[bW, bY, bZ]
277280 }
278281
279282
280-func bZ (bM,bN,bR) = {
281- let ca = bQ(bM, bN, bR)
282-[H(ca[0], b), H(ca[1], b), H(ca[2], b)]
283+func ca (bN,bO,bS) = {
284+ let cb = bR(bN, bO, bS)
285+[H(cb[0], b), H(cb[1], b), H(cb[2], b)]
283286 }
284287
285288
286-func cb (cc,cd,ce,aa) = {
287- let bS = aU()
288- let cf = bS[q]
289- let cg = bS[r]
290- let ch = bS[s]
291- let bK = parseIntValue(bS[t])
292- let bL = parseIntValue(bS[u])
293- let ci = bS[p]
294- let cj = valueOrErrorMessage(assetInfo(fromBase58String(cf)), (("Asset " + cf) + " doesn't exist")).quantity
295- if ((cf != cd))
289+func cc (cd,ce,cf,ab) = {
290+ let bT = aV()
291+ let cg = bT[q]
292+ let ch = bT[r]
293+ let ci = bT[s]
294+ let bL = parseIntValue(bT[t])
295+ let bM = parseIntValue(bT[u])
296+ let cj = bT[p]
297+ let ck = valueOrErrorMessage(assetInfo(fromBase58String(cg)), (("Asset " + cg) + " doesn't exist")).quantity
298+ if ((cg != ce))
296299 then throw("Invalid asset passed.")
297300 else {
298- let ck = bD(cg)
299- let cl = D(ck, bK)
300- let cm = bD(ch)
301- let cn = D(cm, bL)
302- let co = bF(cn, cl)
303- let cp = H(co, b)
304- let cq = D(ce, b)
305- let cr = D(cj, b)
306- let cs = fraction(cl, cq, cr)
307- let ct = fraction(cn, cq, cr)
308- let cu = K(cs, bK, FLOOR)
301+ let cl = bE(ch)
302+ let cm = D(cl, bL)
303+ let cn = bE(ci)
304+ let co = D(cn, bM)
305+ let cp = bG(co, cm)
306+ let cq = H(cp, b)
307+ let cr = D(cf, b)
308+ let cs = D(ck, b)
309+ let ct = fraction(cm, cr, cs)
310+ let cu = fraction(co, cr, cs)
309311 let cv = K(ct, bL, FLOOR)
310- let cw = if ((cc == ""))
312+ let cw = K(cu, bM, FLOOR)
313+ let cx = if ((cd == ""))
311314 then nil
312- else [ScriptTransfer(aa, cu, if ((cg == "WAVES"))
315+ else [ScriptTransfer(ab, cv, if ((ch == "WAVES"))
313316 then unit
314- else fromBase58String(cg)), ScriptTransfer(aa, cv, if ((ch == "WAVES"))
317+ else fromBase58String(ch)), ScriptTransfer(ab, cw, if ((ci == "WAVES"))
315318 then unit
316- else fromBase58String(ch)), StringEntry(ac(toString(aa), cc), bz(cu, cv, ce, cp, height, lastBlock.timestamp)), IntegerEntry(V(), cp), IntegerEntry(W(height, lastBlock.timestamp), cp)]
317- $Tuple10(cu, cv, cg, ch, ck, cm, cj, co, ci, cw)
319+ else fromBase58String(ci)), StringEntry(ad(toString(ab), cd), bA(cv, cw, cf, cq, height, lastBlock.timestamp)), IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq)]
320+ $Tuple10(cv, cw, ch, ci, cl, cn, ck, cp, cj, cx)
318321 }
319322 }
320323
321324
322-func cx (cc,cy,cz,cA,cB,cC,aa,cD,cE) = {
323- let bS = aU()
324- let cf = fromBase58String(bS[q])
325- let cF = bS[r]
326- let cG = bS[s]
327- let cH = bS[v]
328- let cI = bS[w]
329- let bT = parseIntValue(bS[t])
330- let bU = parseIntValue(bS[u])
331- let ci = bS[p]
332- let cj = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
333- let cJ = toBase58String(valueOrElse(cA, fromBase58String("WAVES")))
334- let cK = toBase58String(valueOrElse(cC, fromBase58String("WAVES")))
335- if (if ((cF != cJ))
325+func cy (cd,cz,cA,cB,cC,cD,ab,cE,cF) = {
326+ let bT = aV()
327+ let cg = fromBase58String(bT[q])
328+ let cG = bT[r]
329+ let cH = bT[s]
330+ let cI = bT[v]
331+ let cJ = bT[w]
332+ let bU = parseIntValue(bT[t])
333+ let bV = parseIntValue(bT[u])
334+ let cj = bT[p]
335+ let ck = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
336+ let cK = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
337+ let cL = toBase58String(valueOrElse(cD, fromBase58String("WAVES")))
338+ if (if ((cG != cK))
336339 then true
337- else (cG != cK))
340+ else (cH != cL))
338341 then throw("Invalid amt or price asset passed.")
339342 else {
340- let ck = if (cD)
341- then bD(cF)
342- else (bD(cF) - cz)
343- let cm = if (cD)
344- then bD(cG)
345- else (bD(cG) - cB)
346- let cL = D(cz, bT)
347- let cM = D(cB, bU)
348- let cN = bF(cM, cL)
349- let cl = D(ck, bT)
350- let cn = D(cm, bU)
351- let cO = if ((cj == 0))
343+ let cl = if (cE)
344+ then bE(cG)
345+ else (bE(cG) - cA)
346+ let cn = if (cE)
347+ then bE(cH)
348+ else (bE(cH) - cC)
349+ let cM = D(cA, bU)
350+ let cN = D(cC, bV)
351+ let cO = bG(cN, cM)
352+ let cm = D(cl, bU)
353+ let co = D(cn, bV)
354+ let cP = if ((ck == 0))
352355 then {
353- let co = e
354- let cP = e
355- let bW = pow((cL * cM), 0, toBigInt(5), 1, 0, DOWN)
356- $Tuple5(H(bW, b), H(cL, bT), H(cM, bU), bF((cn + cM), (cl + cL)), cP)
356+ let cp = e
357+ let cQ = e
358+ let bX = pow((cM * cN), 0, toBigInt(5), 1, 0, DOWN)
359+ $Tuple5(H(bX, b), H(cM, bU), H(cN, bV), bG((co + cN), (cm + cM)), cQ)
357360 }
358361 else {
359- let co = bF(cn, cl)
360- let cP = fraction(R((co - cN)), d, co)
361- let cQ = D(cy, b)
362- if (if ((co != e))
363- then (cP > cQ)
362+ let cp = bG(co, cm)
363+ let cQ = fraction(R((cp - cO)), d, cp)
364+ let cR = D(cz, b)
365+ if (if ((cp != e))
366+ then (cQ > cR)
364367 else false)
365- then throw(((("Price slippage " + toString(cP)) + " exceeded the passed limit of ") + toString(cQ)))
368+ then throw(((("Price slippage " + toString(cQ)) + " exceeded the passed limit of ") + toString(cR)))
366369 else {
367- let cr = D(cj, b)
368- let cR = fraction(cL, bI(cn, cl, CEILING), d, CEILING)
369- let cS = fraction(cM, d, bI(cn, cl, FLOOR), CEILING)
370- let cT = if ((cR > cM))
371- then $Tuple2(cS, cM)
372- else $Tuple2(cL, cR)
373- let cU = cT._1
374- let cV = cT._2
375- let bW = fraction(cr, cV, cn, FLOOR)
376- $Tuple5(K(bW, b, FLOOR), K(cU, bT, CEILING), K(cV, bU, CEILING), co, cP)
370+ let cs = D(ck, b)
371+ let cS = fraction(cM, bJ(co, cm, CEILING), d, CEILING)
372+ let cT = fraction(cN, d, bJ(co, cm, FLOOR), CEILING)
373+ let cU = if ((cS > cN))
374+ then $Tuple2(cT, cN)
375+ else $Tuple2(cM, cS)
376+ let cV = cU._1
377+ let cW = cU._2
378+ let bX = fraction(cs, cW, co, FLOOR)
379+ $Tuple5(K(bX, b, FLOOR), K(cV, bU, CEILING), K(cW, bV, CEILING), cp, cQ)
377380 }
378381 }
379- let cW = cO._1
380- let cX = cO._2
381- let cY = cO._3
382- let cp = H(cO._4, b)
383- let cZ = H(cO._5, b)
384- if ((0 >= cW))
382+ let cX = cP._1
383+ let cY = cP._2
384+ let cZ = cP._3
385+ let cq = H(cP._4, b)
386+ let da = H(cP._5, b)
387+ if ((0 >= cX))
385388 then throw("Invalid calculations. LP calculated is less than zero.")
386389 else {
387- let da = if (!(cE))
390+ let db = if (!(cF))
388391 then 0
389- else cW
390- let db = (cz - cX)
391- let dc = (cB - cY)
392- let dd = [IntegerEntry(V(), cp), IntegerEntry(W(height, lastBlock.timestamp), cp), StringEntry(Z(aa, cc), bo(cX, cY, da, cp, cy, cZ, height, lastBlock.timestamp, db, dc))]
393- $Tuple13(cW, da, cp, ck, cm, cj, cf, ci, dd, db, dc, cA, cC)
392+ else cX
393+ let dc = (cA - cY)
394+ let dd = (cC - cZ)
395+ let de = [IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq), StringEntry(aa(ab, cd), bp(cY, cZ, db, cq, cz, da, height, lastBlock.timestamp, dc, dd))]
396+ $Tuple13(cX, db, cq, cl, cn, ck, cg, cj, de, dc, dd, cB, cD)
394397 }
395398 }
396399 }
397400
398401
399-func de (df,dg,cj) = {
400- let dh = G(df, toBigInt(bj))
402+func df (dg,dh,ck) = {
401403 let di = G(dg, toBigInt(bk))
402- let dj = fraction(pow((dh * di), 0, toBigInt(5), 1, 18, DOWN), g, cj)
403- if ((cj == f))
404+ let dj = G(dh, toBigInt(bl))
405+ let dk = fraction(pow((di * dj), 0, toBigInt(5), 1, 18, DOWN), g, ck)
406+ if ((ck == f))
404407 then f
405- else dj
408+ else dk
406409 }
407410
408411
409-func dk (dl,dm,dn) = {
410- let do = (toBigInt(bD(aZ(bh))) - dl)
411- let dp = (toBigInt(bD(aZ(bi))) - dm)
412- let dq = (toBigInt(value(assetInfo(bg)).quantity) - dn)
413- let dr = de(do, dp, dq)
414- dr
412+func dl (dm,dn,do) = {
413+ let dp = (toBigInt(bE(ba(bi))) - dm)
414+ let dq = (toBigInt(bE(ba(bj))) - dn)
415+ let dr = (toBigInt(value(assetInfo(bh)).quantity) - do)
416+ let ds = df(dp, dq, dr)
417+ ds
415418 }
416419
417420
418-func ds (dt,du,dn) = {
419- let do = (bD(aZ(bh)) + dt)
420- let dp = (bD(aZ(bi)) + du)
421- let dq = (value(assetInfo(bg)).quantity + dn)
422- let dj = de(toBigInt(do), toBigInt(dp), toBigInt(dq))
423- let dv = [IntegerEntry(aj, height), StringEntry(ai, toString(dj))]
424- $Tuple2(dv, dj)
421+func dt (du,dv,do) = {
422+ let dp = (bE(ba(bi)) + du)
423+ let dq = (bE(ba(bj)) + dv)
424+ let dr = (value(assetInfo(bh)).quantity + do)
425+ let dk = df(toBigInt(dp), toBigInt(dq), toBigInt(dr))
426+ let dw = [IntegerEntry(ak, height), StringEntry(aj, toString(dk))]
427+ $Tuple2(dw, dk)
425428 }
426429
427430
428-func dw (dx,dj) = if ((dj >= dx))
431+func dx (dy,dk) = if ((dk >= dy))
429432 then true
430- else aK(makeString(["updated KLp lower than current KLp", toString(dx), toString(dj)], " "))
433+ else aL(makeString(["updated KLp lower than current KLp", toString(dy), toString(dk)], " "))
431434
432435
433-func dy (dz) = {
434- let do = bD(aZ(bh))
435- let dp = bD(aZ(bi))
436- let dA = dz.amount
437- let dB = fraction(dz.amount, dz.price, b, FLOOR)
438- let dC = if ((dz.orderType == Buy))
439- then $Tuple2(dA, -(dB))
440- else $Tuple2(-(dA), dB)
441- let dt = dC._1
442- let du = dC._2
443- if (if (if (aS())
436+func dz (dA) = {
437+ let dp = bE(ba(bi))
438+ let dq = bE(ba(bj))
439+ let dB = dA.amount
440+ let dC = fraction(dA.amount, dA.price, b, FLOOR)
441+ let dD = if ((dA.orderType == Buy))
442+ then $Tuple2(dB, -(dC))
443+ else $Tuple2(-(dB), dC)
444+ let du = dD._1
445+ let dv = dD._2
446+ if (if (if (aT())
444447 then true
445- else (bf == m))
448+ else (bg == m))
446449 then true
447- else (bf == n))
450+ else (bg == n))
448451 then throw("Exchange operations disabled")
449- else if (if ((dz.assetPair.amountAsset != bh))
452+ else if (if ((dA.assetPair.amountAsset != bi))
450453 then true
451- else (dz.assetPair.priceAsset != bi))
454+ else (dA.assetPair.priceAsset != bj))
452455 then throw("Wrong order assets.")
453456 else {
454- let dD = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ai), "0")), aM("invalid kLp"))
455- let dE = ds(dt, du, 0)
456- let dF = dE._1
457- let dG = dE._2
458- let dH = (dG >= dD)
459- let dI = makeString(["kLp=", toString(dD), " kLpNew=", toString(dG), " amountAssetBalance=", toString(do), " priceAssetBalance=", toString(dp), " amountAssetBalanceDelta=", toString(dt), " priceAssetBalanceDelta=", toString(du), " height=", toString(height)], "")
460- $Tuple2(dH, dI)
457+ let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
458+ let dF = dt(du, dv, 0)
459+ let dG = dF._1
460+ let dH = dF._2
461+ let dI = (dH >= dE)
462+ let dJ = makeString(["kLp=", toString(dE), " kLpNew=", toString(dH), " amountAssetBalance=", toString(dp), " priceAssetBalance=", toString(dq), " amountAssetBalanceDelta=", toString(du), " priceAssetBalanceDelta=", toString(dv), " height=", toString(height)], "")
463+ $Tuple2(dI, dJ)
461464 }
462465 }
463466
464467
465-func dJ (dK) = if ((size(dK.payments) != 1))
468+func dK (dL) = if ((size(dL.payments) != 1))
466469 then throw("exactly 1 payment is expected")
467470 else {
468- let dL = value(dK.payments[0])
469- let cd = value(dL.assetId)
470- let dM = dL.amount
471- let cO = cb(toBase58String(dK.transactionId), toBase58String(cd), dM, dK.caller)
472- let cu = cO._1
473- let cv = cO._2
474- let ci = parseIntValue(cO._9)
475- let cw = cO._10
476- if (if (aS())
471+ let dM = value(dL.payments[0])
472+ let ce = value(dM.assetId)
473+ let dN = dM.amount
474+ let cP = cc(toBase58String(dL.transactionId), toBase58String(ce), dN, dL.caller)
475+ let cv = cP._1
476+ let cw = cP._2
477+ let cj = parseIntValue(cP._9)
478+ let cx = cP._10
479+ if (if (aT())
477480 then true
478- else (ci == n))
479- then throw(("Get operation is blocked by admin. Status = " + toString(ci)))
480- else $Tuple5(cu, cv, dM, cd, cw)
481+ else (cj == n))
482+ then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
483+ else $Tuple5(cv, cw, dN, ce, cx)
481484 }
482485
483486
484-func dN (dK,cy,cE) = if ((size(dK.payments) != 2))
487+func dO (dL,cz,cF) = if ((size(dL.payments) != 2))
485488 then throw("exactly 2 payments are expected")
486489 else {
487- let dO = value(dK.payments[0])
488- let dP = value(dK.payments[1])
489- let dQ = cx(toBase58String(dK.transactionId), cy, dO.amount, dO.assetId, dP.amount, dP.assetId, toString(dK.caller), false, cE)
490- let ci = parseIntValue(dQ._8)
491- if (if (if (aS())
490+ let dP = value(dL.payments[0])
491+ let dQ = value(dL.payments[1])
492+ let dR = cy(toBase58String(dL.transactionId), cz, dP.amount, dP.assetId, dQ.amount, dQ.assetId, toString(dL.caller), false, cF)
493+ let cj = parseIntValue(dR._8)
494+ if (if (if (aT())
492495 then true
493- else (ci == l))
496+ else (cj == l))
494497 then true
495- else (ci == n))
496- then throw(("Put operation is blocked by admin. Status = " + toString(ci)))
497- else dQ
498+ else (cj == n))
499+ then throw(("Put operation is blocked by admin. Status = " + toString(cj)))
500+ else dR
498501 }
499502
500503
501-func dR (dS) = {
502- let dT = invoke(aN, "emit", [dS], nil)
503- if ((dT == dT))
504+func dS (dT) = {
505+ let dU = invoke(aO, "emit", [dT], nil)
506+ if ((dU == dU))
504507 then {
505- let dU = {
506- let dV = dT
507- if ($isInstanceOf(dV, "Address"))
508+ let dV = {
509+ let dW = dU
510+ if ($isInstanceOf(dW, "Address"))
508511 then {
509- let dW = dV
510- invoke(dW, "emit", [dS], nil)
512+ let dX = dW
513+ invoke(dX, "emit", [dT], nil)
511514 }
512515 else unit
513516 }
514- if ((dU == dU))
515- then dS
517+ if ((dV == dV))
518+ then dT
516519 else throw("Strict value is not equal to itself.")
517520 }
518521 else throw("Strict value is not equal to itself.")
519522 }
520523
521524
522-func dX (dS,ah) = {
523- let dY = if ((ah == 0))
525+func dY (dT,ai) = {
526+ let dZ = if ((ai == 0))
524527 then 0
525- else fraction(dS, ah, b)
526- $Tuple2((dS - dY), dY)
528+ else fraction(dT, ai, b)
529+ $Tuple2((dT - dZ), dZ)
527530 }
528531
529532
530-func dZ (ea,eb,aa,ab) = {
531- let ec = (ab == unit)
532- let ed = bD(aZ(bh))
533- let ee = bD(aZ(bi))
534- let ef = if ((eb == bh))
533+func ea (eb,ec,ab,ac) = {
534+ let ed = (ac == unit)
535+ let ee = bE(ba(bi))
536+ let ef = bE(ba(bj))
537+ let eg = if ((ec == bi))
535538 then true
536- else if ((eb == bi))
539+ else if ((ec == bj))
537540 then false
538- else aK("invalid asset")
539- let eg = if (ec)
540- then $Tuple2(ed, ee)
541- else if (ef)
542- then $Tuple2((ed - ea), ee)
543- else $Tuple2(ed, (ee - ea))
544- let eh = eg._1
545- let ei = eg._2
546- let ej = if (ef)
547- then $Tuple2(ea, 0)
548- else $Tuple2(0, ea)
549- let ek = ej._1
550- let el = ej._2
551- let dA = dX(ek, aP)._1
552- let dB = dX(el, aP)._1
553- let em = dX(ea, aP)
554- let en = em._1
555- let dY = em._2
556- let eo = (eh + dA)
541+ else aL("invalid asset")
542+ let eh = if (ed)
543+ then $Tuple2(ee, ef)
544+ else if (eg)
545+ then $Tuple2((ee - eb), ef)
546+ else $Tuple2(ee, (ef - eb))
547+ let ei = eh._1
548+ let ej = eh._2
549+ let ek = if (eg)
550+ then $Tuple2(eb, 0)
551+ else $Tuple2(0, eb)
552+ let el = ek._1
553+ let em = ek._2
554+ let dB = dY(el, aQ)._1
555+ let dC = dY(em, aQ)._1
556+ let en = dY(eb, aQ)
557+ let eo = en._1
558+ let dZ = en._2
557559 let ep = (ei + dB)
558- let eq = bF(D(ep, bk), D(eo, bj))
559- let er = H(eq, b)
560- let es = if (ef)
561- then eh
562- else ei
563- let et = toBigInt(es)
564- let eu = toBigInt(valueOrErrorMessage(assetInfo(bg), (("asset " + toBase58String(bg)) + " doesn't exist")).quantity)
565- let ev = if ((eu > f))
560+ let eq = (ej + dC)
561+ let er = bG(D(eq, bl), D(ep, bk))
562+ let es = H(er, b)
563+ let et = if (eg)
564+ then ei
565+ else ej
566+ let eu = toBigInt(et)
567+ let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
568+ let ew = if ((ev > f))
566569 then true
567- else aK("initial deposit requires all coins")
568- if ((ev == ev))
570+ else aL("initial deposit requires all coins")
571+ if ((ew == ew))
569572 then {
570- let ew = toBigInt(en)
571- let ex = max([0, toInt(((eu * (sqrtBigInt((d + ((ew * d) / et)), 18, 18, DOWN) - d)) / d))])
572- let dd = if (ec)
573+ let ex = toBigInt(eo)
574+ let ey = max([0, toInt(((ev * (sqrtBigInt((d + ((ex * d) / eu)), 18, 18, DOWN) - d)) / d))])
575+ let de = if (ed)
573576 then nil
574- else [IntegerEntry(V(), er), IntegerEntry(W(height, lastBlock.timestamp), er), StringEntry(Z(toString(value(aa)), toBase58String(value(ab))), bo(ek, el, ex, er, 0, 0, height, lastBlock.timestamp, 0, 0))]
575- let ey = bF(D(ei, bk), D(eh, bj))
576- let ez = H(ey, b)
577- let eA = {
578- let eB = if (ef)
579- then $Tuple2(ek, eh)
580- else $Tuple2(el, ei)
581- let dS = eB._1
582- let eC = eB._2
583- let eD = toInt(fraction(eu, toBigInt((dS / 2)), toBigInt(eC)))
584- fraction((ex - eD), b, eD)
577+ else [IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bp(el, em, ey, es, 0, 0, height, lastBlock.timestamp, 0, 0))]
578+ let ez = bG(D(ej, bl), D(ei, bk))
579+ let eA = H(ez, b)
580+ let eB = {
581+ let eC = if (eg)
582+ then $Tuple2(el, ei)
583+ else $Tuple2(em, ej)
584+ let dT = eC._1
585+ let eD = eC._2
586+ let eE = toInt(fraction(ev, toBigInt((dT / 2)), toBigInt(eD)))
587+ fraction((ey - eE), b, eE)
585588 }
586- $Tuple5(ex, dd, dY, eA, ef)
589+ $Tuple5(ey, de, dZ, eB, eg)
587590 }
588591 else throw("Strict value is not equal to itself.")
589592 }
590593
591594
592-func eE (eF,en,eb,aa,ab) = {
593- let ec = (ab == unit)
594- let bS = aU()
595- let bT = parseIntValue(bS[t])
596- let bU = parseIntValue(bS[u])
597- let eG = [if ((eb == bg))
595+func eF (eG,eo,ec,ab,ac) = {
596+ let ed = (ac == unit)
597+ let bT = aV()
598+ let bU = parseIntValue(bT[t])
599+ let bV = parseIntValue(bT[u])
600+ let eH = [if ((ec == bh))
598601 then true
599- else aK("invalid lp asset")]
600- if ((eG == eG))
602+ else aL("invalid lp asset")]
603+ if ((eH == eH))
601604 then {
602- let eH = if ((eF == bh))
605+ let eI = if ((eG == bi))
603606 then true
604- else if ((eF == bi))
607+ else if ((eG == bj))
605608 then false
606- else aK("invalid asset")
607- let eI = if (eH)
608- then toBigInt(bD(aZ(bh)))
609- else toBigInt(bD(aZ(bi)))
610- let eJ = if (eH)
611- then bT
612- else bU
613- let eK = bD(aZ(bh))
614- let eL = bD(aZ(bi))
615- let eM = if (eH)
616- then eK
617- else eL
618- let eN = toBigInt(eM)
619- let eu = toBigInt(valueOrErrorMessage(assetInfo(bg), (("asset " + toBase58String(bg)) + " doesn't exist")).quantity)
620- let eO = toBigInt(en)
621- let eP = max([0, toInt(((eI * (d - pow((d - ((eO * d) / eu)), 18, h, 0, 18, DOWN))) / d))])
622- let eQ = dX(eP, aR)
623- let eR = eQ._1
624- let dY = eQ._2
625- let eS = if (eH)
626- then $Tuple4(eR, 0, (eK - eP), eL)
627- else $Tuple4(0, eR, eK, (eL - eP))
628- let eT = eS._1
629- let eU = eS._2
630- let eV = eS._3
631- let eW = eS._4
632- let eq = bF(D(eW, bk), D(eV, bj))
633- let er = H(eq, b)
634- let dd = if (ec)
609+ else aL("invalid asset")
610+ let eJ = if (eI)
611+ then toBigInt(bE(ba(bi)))
612+ else toBigInt(bE(ba(bj)))
613+ let eK = if (eI)
614+ then bU
615+ else bV
616+ let eL = bE(ba(bi))
617+ let eM = bE(ba(bj))
618+ let eN = if (eI)
619+ then eL
620+ else eM
621+ let eO = toBigInt(eN)
622+ let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
623+ let eP = toBigInt(eo)
624+ let eQ = max([0, toInt(((eJ * (d - pow((d - ((eP * d) / ev)), 18, h, 0, 18, DOWN))) / d))])
625+ let eR = dY(eQ, aS)
626+ let eS = eR._1
627+ let dZ = eR._2
628+ let eT = if (eI)
629+ then $Tuple4(eS, 0, (eL - eQ), eM)
630+ else $Tuple4(0, eS, eL, (eM - eQ))
631+ let eU = eT._1
632+ let eV = eT._2
633+ let eW = eT._3
634+ let eX = eT._4
635+ let er = bG(D(eX, bl), D(eW, bk))
636+ let es = H(er, b)
637+ let de = if (ed)
635638 then nil
636- else [StringEntry(ac(toString(value(aa)), toBase58String(value(ab))), bz(eT, eU, en, er, height, lastBlock.timestamp)), IntegerEntry(V(), er), IntegerEntry(W(height, lastBlock.timestamp), er)]
637- let ey = bF(D(eL, bk), D(eK, bj))
638- let ez = H(ey, b)
639- let eA = {
640- let eX = (toInt(fraction(eI, eO, eu)) * 2)
641- fraction((eR - eX), b, eX)
639+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bA(eU, eV, eo, es, height, lastBlock.timestamp)), IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es)]
640+ let ez = bG(D(eM, bl), D(eL, bk))
641+ let eA = H(ez, b)
642+ let eB = {
643+ let eY = (toInt(fraction(eJ, eP, ev)) * 2)
644+ fraction((eS - eY), b, eY)
642645 }
643- $Tuple5(eR, dd, dY, eA, eH)
646+ $Tuple5(eS, de, dZ, eB, eI)
644647 }
645648 else throw("Strict value is not equal to itself.")
646649 }
647650
648651
649-func eY () = {
650- let dV = getString(T())
651- if ($isInstanceOf(dV, "String"))
652+func eZ () = {
653+ let dW = getString(U())
654+ if ($isInstanceOf(dW, "String"))
652655 then {
653- let eZ = dV
654- fromBase58String(eZ)
656+ let fa = dW
657+ fromBase58String(fa)
655658 }
656- else if ($isInstanceOf(dV, "Unit"))
659+ else if ($isInstanceOf(dW, "Unit"))
657660 then unit
658661 else throw("Match error")
659662 }
660663
661664
662-func fa () = {
663- let dV = getString(U())
664- if ($isInstanceOf(dV, "String"))
665+func fb () = {
666+ let dW = getString(V())
667+ if ($isInstanceOf(dW, "String"))
665668 then {
666- let eZ = dV
667- fromBase58String(eZ)
669+ let fa = dW
670+ fromBase58String(fa)
668671 }
669- else if ($isInstanceOf(dV, "Unit"))
672+ else if ($isInstanceOf(dW, "Unit"))
670673 then unit
671674 else throw("Match error")
672675 }
673676
674677
675-func fb (dK) = {
676- let dV = eY()
677- if ($isInstanceOf(dV, "ByteVector"))
678+func fc (dL) = {
679+ let dW = eZ()
680+ if ($isInstanceOf(dW, "ByteVector"))
678681 then {
679- let fc = dV
680- (dK.callerPublicKey == fc)
682+ let fd = dW
683+ (dL.callerPublicKey == fd)
681684 }
682- else if ($isInstanceOf(dV, "Unit"))
683- then (dK.caller == this)
685+ else if ($isInstanceOf(dW, "Unit"))
686+ then (dL.caller == this)
684687 else throw("Match error")
685688 }
686689
687690
688-func fd (dK) = {
689- let fe = throw("Permission denied")
690- let dV = eY()
691- if ($isInstanceOf(dV, "ByteVector"))
691+func fe (dL) = {
692+ let ff = throw("Permission denied")
693+ let dW = eZ()
694+ if ($isInstanceOf(dW, "ByteVector"))
692695 then {
693- let fc = dV
694- if ((dK.callerPublicKey == fc))
696+ let fd = dW
697+ if ((dL.callerPublicKey == fd))
695698 then true
696- else fe
699+ else ff
697700 }
698- else if ($isInstanceOf(dV, "Unit"))
699- then if ((dK.caller == this))
701+ else if ($isInstanceOf(dW, "Unit"))
702+ then if ((dL.caller == this))
700703 then true
701- else fe
704+ else ff
702705 else throw("Match error")
703706 }
704707
705708
706-@Callable(dK)
707-func setManager (ff) = {
708- let fg = fd(dK)
709- if ((fg == fg))
709+@Callable(dL)
710+func calculateAmountOutForSwapREADONLY (fg,fh) = {
711+ let fi = if ((fh == false))
710712 then {
711- let fh = fromBase58String(ff)
712- if ((fh == fh))
713- then [StringEntry(U(), ff)]
713+ let fj = aH(this, af())
714+ let fk = aH(this, ae())
715+ $Tuple2(fj, fk)
716+ }
717+ else {
718+ let fj = aH(this, ae())
719+ let fk = aH(this, af())
720+ $Tuple2(fj, fk)
721+ }
722+ let fj = fi._1
723+ let fk = fi._2
724+ let fl = bE(fk)
725+ let fm = bE(fj)
726+ let fn = fraction(fm, fg, (fl + fg))
727+ let fo = (toBigInt(fl) * toBigInt(fm))
728+ let fp = ((toBigInt(bE(fk)) + toBigInt(fg)) * (toBigInt(bE(fj)) - toBigInt(fn)))
729+ let fq = if ((fp >= fo))
730+ then true
731+ else throw("new K is fewer error")
732+ if ((fq == fq))
733+ then $Tuple2(nil, fn)
734+ else throw("Strict value is not equal to itself.")
735+ }
736+
737+
738+
739+@Callable(dL)
740+func calculateAmountOutForSwapAndSendTokens (fg,fh,fr,fs) = {
741+ let ft = {
742+ let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743+ if ($isInstanceOf(aR, "String"))
744+ then aR
745+ else throw(($getType(aR) + " couldn't be cast to String"))
746+ }
747+ let eH = [if ((value(dL.payments[0]).amount >= fg))
748+ then true
749+ else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(ft)))
750+ then true
751+ else aL("Permission denied")]
752+ if ((eH == eH))
753+ then {
754+ let dM = value(dL.payments[0])
755+ let fk = ba(dM.assetId)
756+ let fj = if ((fh == false))
757+ then aH(this, af())
758+ else aH(this, ae())
759+ let fl = (bE(fk) - value(dL.payments[0]).amount)
760+ let fm = bE(fj)
761+ let fn = fraction(fm, fg, (fl + fg))
762+ let fo = (toBigInt(fl) * toBigInt(fm))
763+ let fp = (toBigInt(bE(fk)) * (toBigInt(bE(fj)) - toBigInt(fn)))
764+ let fq = if ((fp >= fo))
765+ then true
766+ else throw("new K is fewer error")
767+ if ((fq == fq))
768+ then {
769+ let fu = if ((fn >= fr))
770+ then true
771+ else throw("Exchange result is fewer coins than expected")
772+ if ((fu == fu))
773+ then $Tuple2([ScriptTransfer(addressFromStringValue(fs), fn, aY(fj))], fn)
774+ else throw("Strict value is not equal to itself.")
775+ }
714776 else throw("Strict value is not equal to itself.")
715777 }
716778 else throw("Strict value is not equal to itself.")
717779 }
718780
719781
720782
721-@Callable(dK)
722-func confirmManager () = {
723- let fi = fa()
724- let fj = if (isDefined(fi))
725- then true
726- else throw("No pending manager")
727- if ((fj == fj))
783+@Callable(dL)
784+func setManager (fv) = {
785+ let fw = fe(dL)
786+ if ((fw == fw))
728787 then {
729- let fk = if ((dK.callerPublicKey == value(fi)))
730- then true
731- else throw("You are not pending manager")
732- if ((fk == fk))
733- then [StringEntry(T(), toBase58String(value(fi))), DeleteEntry(U())]
788+ let fx = fromBase58String(fv)
789+ if ((fx == fx))
790+ then [StringEntry(V(), fv)]
734791 else throw("Strict value is not equal to itself.")
735792 }
736793 else throw("Strict value is not equal to itself.")
737794 }
738795
739796
740797
741-@Callable(dK)
742-func put (cy,fl) = if ((0 > cy))
798+@Callable(dL)
799+func confirmManager () = {
800+ let fy = fb()
801+ let fz = if (isDefined(fy))
802+ then true
803+ else throw("No pending manager")
804+ if ((fz == fz))
805+ then {
806+ let fA = if ((dL.callerPublicKey == value(fy)))
807+ then true
808+ else throw("You are not pending manager")
809+ if ((fA == fA))
810+ then [StringEntry(U(), toBase58String(value(fy))), DeleteEntry(V())]
811+ else throw("Strict value is not equal to itself.")
812+ }
813+ else throw("Strict value is not equal to itself.")
814+ }
815+
816+
817+
818+@Callable(dL)
819+func put (cz,fB) = if ((0 > cz))
743820 then throw("Invalid slippageTolerance passed")
744821 else {
745- let dQ = dN(dK, cy, true)
746- let da = dQ._2
747- let cf = dQ._7
748- let cw = dQ._9
749- let db = dQ._10
750- let dc = dQ._11
751- let fm = dQ._12
752- let fn = dQ._13
753- let dO = toBigInt(value(dK.payments[0]).amount)
754- let dP = toBigInt(value(dK.payments[1]).amount)
755- let dr = dk(dO, dP, toBigInt(0))
756- if ((dr == dr))
822+ let dR = dO(dL, cz, true)
823+ let db = dR._2
824+ let cg = dR._7
825+ let cx = dR._9
826+ let dc = dR._10
827+ let dd = dR._11
828+ let fC = dR._12
829+ let fD = dR._13
830+ let dP = toBigInt(value(dL.payments[0]).amount)
831+ let dQ = toBigInt(value(dL.payments[1]).amount)
832+ let ds = dl(dP, dQ, toBigInt(0))
833+ if ((ds == ds))
757834 then {
758- let dT = invoke(aN, "emit", [da], nil)
759- if ((dT == dT))
835+ let dU = invoke(aO, "emit", [db], nil)
836+ if ((dU == dU))
760837 then {
761- let dU = {
762- let dV = dT
763- if ($isInstanceOf(dV, "Address"))
838+ let dV = {
839+ let dW = dU
840+ if ($isInstanceOf(dW, "Address"))
764841 then {
765- let dW = dV
766- invoke(dW, "emit", [da], nil)
842+ let dX = dW
843+ invoke(dX, "emit", [db], nil)
767844 }
768845 else unit
769846 }
770- if ((dU == dU))
847+ if ((dV == dV))
771848 then {
772- let fo = if ((db > 0))
773- then invoke(bn, "put", nil, [AttachedPayment(fm, db)])
849+ let fE = if ((dc > 0))
850+ then invoke(bo, "put", nil, [AttachedPayment(fC, dc)])
774851 else nil
775- if ((fo == fo))
852+ if ((fE == fE))
776853 then {
777- let fp = if ((dc > 0))
778- then invoke(bn, "put", nil, [AttachedPayment(fn, dc)])
854+ let fF = if ((dd > 0))
855+ then invoke(bo, "put", nil, [AttachedPayment(fD, dd)])
779856 else nil
780- if ((fp == fp))
857+ if ((fF == fF))
781858 then {
782- let fq = if (fl)
859+ let fG = if (fB)
783860 then {
784- let fr = invoke(bm, "stake", nil, [AttachedPayment(cf, da)])
785- if ((fr == fr))
861+ let fH = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862+ if ((fH == fH))
786863 then nil
787864 else throw("Strict value is not equal to itself.")
788865 }
789- else [ScriptTransfer(dK.caller, da, cf)]
790- let fs = ds(0, 0, 0)
791- if ((fs == fs))
866+ else [ScriptTransfer(dL.caller, db, cg)]
867+ let fI = dt(0, 0, 0)
868+ if ((fI == fI))
792869 then {
793- let dj = fs._2
794- let ft = fs._1
795- let fu = dw(dr, dj)
796- if ((fu == fu))
797- then ((cw ++ fq) ++ ft)
870+ let dk = fI._2
871+ let fJ = fI._1
872+ let fK = dx(ds, dk)
873+ if ((fK == fK))
874+ then ((cx ++ fG) ++ fJ)
798875 else throw("Strict value is not equal to itself.")
799876 }
800877 else throw("Strict value is not equal to itself.")
801878 }
802879 else throw("Strict value is not equal to itself.")
803880 }
804881 else throw("Strict value is not equal to itself.")
805882 }
806883 else throw("Strict value is not equal to itself.")
807884 }
808885 else throw("Strict value is not equal to itself.")
809886 }
810887 else throw("Strict value is not equal to itself.")
811888 }
812889
813890
814891
815-@Callable(dK)
816-func putForFree (fv) = if ((0 > fv))
892+@Callable(dL)
893+func putForFree (fL) = if ((0 > fL))
817894 then throw("Invalid value passed")
818895 else {
819- let dQ = dN(dK, fv, false)
820- let cw = dQ._9
821- let dO = toBigInt(value(dK.payments[0]).amount)
822- let dP = toBigInt(value(dK.payments[1]).amount)
823- let dr = dk(dO, dP, toBigInt(0))
824- if ((dr == dr))
896+ let dR = dO(dL, fL, false)
897+ let cx = dR._9
898+ let dP = toBigInt(value(dL.payments[0]).amount)
899+ let dQ = toBigInt(value(dL.payments[1]).amount)
900+ let ds = dl(dP, dQ, toBigInt(0))
901+ if ((ds == ds))
825902 then {
826- let fw = ds(0, 0, 0)
827- let ft = fw._1
828- let dj = fw._2
829- let fu = dw(dr, dj)
830- if ((fu == fu))
831- then (cw ++ ft)
903+ let fM = dt(0, 0, 0)
904+ let fJ = fM._1
905+ let dk = fM._2
906+ let fK = dx(ds, dk)
907+ if ((fK == fK))
908+ then (cx ++ fJ)
832909 else throw("Strict value is not equal to itself.")
833910 }
834911 else throw("Strict value is not equal to itself.")
835912 }
836913
837914
838915
839-@Callable(dK)
840-func putOneTkn (fx,fy) = {
841- let fz = {
842- let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
843- if ($isInstanceOf(aQ, "Boolean"))
844- then aQ
845- else throw(($getType(aQ) + " couldn't be cast to Boolean"))
916+@Callable(dL)
917+func putOneTkn (fN,fO) = {
918+ let fP = {
919+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
920+ if ($isInstanceOf(aR, "Boolean"))
921+ then aR
922+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
846923 }
847- let fA = if (if (if (aS())
924+ let fQ = if (if (if (aT())
848925 then true
849- else (bf == l))
926+ else (bg == l))
850927 then true
851- else (bf == n))
928+ else (bg == n))
852929 then true
853- else fz
854- let eG = [if (if (!(fA))
930+ else fP
931+ let eH = [if (if (!(fQ))
855932 then true
856- else fb(dK))
933+ else fc(dL))
857934 then true
858- else aK("put operation is blocked by admin"), if ((size(dK.payments) == 1))
935+ else aL("put operation is blocked by admin"), if ((size(dL.payments) == 1))
859936 then true
860- else aK("exactly 1 payment are expected")]
861- if ((eG == eG))
937+ else aL("exactly 1 payment are expected")]
938+ if ((eH == eH))
862939 then {
863- let fB = dK.payments[0]
864- let eb = fB.assetId
865- let ea = fB.amount
866- let dr = if ((eb == bh))
867- then dk(toBigInt(ea), toBigInt(0), toBigInt(0))
868- else if ((eb == bi))
869- then dk(toBigInt(0), toBigInt(ea), toBigInt(0))
870- else aK("payment asset is not supported")
871- if ((dr == dr))
940+ let fR = dL.payments[0]
941+ let ec = fR.assetId
942+ let eb = fR.amount
943+ let ds = if ((ec == bi))
944+ then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
945+ else if ((ec == bj))
946+ then dl(toBigInt(0), toBigInt(eb), toBigInt(0))
947+ else aL("payment asset is not supported")
948+ if ((ds == ds))
872949 then {
873- let aa = dK.caller
874- let ab = dK.transactionId
875- let fC = dZ(ea, eb, aa, ab)
876- if ((fC == fC))
950+ let ab = dL.caller
951+ let ac = dL.transactionId
952+ let fS = ea(eb, ec, ab, ac)
953+ if ((fS == fS))
877954 then {
878- let ef = fC._5
879- let fD = fC._4
880- let dY = fC._3
881- let dd = fC._2
882- let fE = fC._1
883- let fF = if (if ((fx > 0))
884- then (fx > fE)
955+ let eg = fS._5
956+ let fT = fS._4
957+ let dZ = fS._3
958+ let de = fS._2
959+ let fU = fS._1
960+ let fV = if (if ((fN > 0))
961+ then (fN > fU)
885962 else false)
886- then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
887- else fE
888- let dT = dR(fF)
889- if ((dT == dT))
963+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
964+ else fU
965+ let dU = dS(fV)
966+ if ((dU == dU))
890967 then {
891- let fq = if (fy)
968+ let fG = if (fO)
892969 then {
893- let fG = invoke(bm, "stake", nil, [AttachedPayment(bg, fF)])
894- if ((fG == fG))
970+ let fW = invoke(bn, "stake", nil, [AttachedPayment(bh, fV)])
971+ if ((fW == fW))
895972 then nil
896973 else throw("Strict value is not equal to itself.")
897974 }
898- else [ScriptTransfer(dK.caller, fF, bg)]
899- let fH = if ((dY > 0))
900- then [ScriptTransfer(aO, dY, eb)]
975+ else [ScriptTransfer(dL.caller, fV, bh)]
976+ let fX = if ((dZ > 0))
977+ then [ScriptTransfer(aP, dZ, ec)]
901978 else nil
902- let fI = if ((this == aO))
979+ let fY = if ((this == aP))
903980 then $Tuple2(0, 0)
904- else if (ef)
905- then $Tuple2(-(dY), 0)
906- else $Tuple2(0, -(dY))
907- let dt = fI._1
908- let du = fI._2
909- let fJ = ds(dt, du, 0)
910- let ft = fJ._1
911- let dj = fJ._2
912- let dD = value(getString(ai))
913- let fu = dw(dr, dj)
914- if ((fu == fu))
915- then $Tuple2((((dd ++ fq) ++ fH) ++ ft), fF)
981+ else if (eg)
982+ then $Tuple2(-(dZ), 0)
983+ else $Tuple2(0, -(dZ))
984+ let du = fY._1
985+ let dv = fY._2
986+ let fZ = dt(du, dv, 0)
987+ let fJ = fZ._1
988+ let dk = fZ._2
989+ let dE = value(getString(aj))
990+ let fK = dx(ds, dk)
991+ if ((fK == fK))
992+ then $Tuple2((((de ++ fG) ++ fX) ++ fJ), fV)
916993 else throw("Strict value is not equal to itself.")
917994 }
918995 else throw("Strict value is not equal to itself.")
919996 }
920997 else throw("Strict value is not equal to itself.")
921998 }
922999 else throw("Strict value is not equal to itself.")
9231000 }
9241001 else throw("Strict value is not equal to itself.")
9251002 }
9261003
9271004
9281005
929-@Callable(dK)
930-func putOneTknREADONLY (eb,ea) = {
931- let fK = dZ(ea, aX(eb), unit, unit)
932- let fE = fK._1
933- let dd = fK._2
934- let dY = fK._3
935- let fD = fK._4
936- let ef = fK._5
937- $Tuple2(nil, $Tuple3(fE, dY, fD))
1006+@Callable(dL)
1007+func putOneTknREADONLY (ec,eb) = {
1008+ let ga = ea(eb, aY(ec), unit, unit)
1009+ let fU = ga._1
1010+ let de = ga._2
1011+ let dZ = ga._3
1012+ let fT = ga._4
1013+ let eg = ga._5
1014+ $Tuple2(nil, $Tuple3(fU, dZ, fT))
9381015 }
9391016
9401017
9411018
942-@Callable(dK)
943-func getOneTkn (fL,fx) = {
944- let fz = {
945- let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
946- if ($isInstanceOf(aQ, "Boolean"))
947- then aQ
948- else throw(($getType(aQ) + " couldn't be cast to Boolean"))
1019+@Callable(dL)
1020+func getOneTkn (gb,fN) = {
1021+ let fP = {
1022+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1023+ if ($isInstanceOf(aR, "Boolean"))
1024+ then aR
1025+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
9491026 }
950- let fM = if (if (aS())
1027+ let gc = if (if (aT())
9511028 then true
952- else (bf == n))
1029+ else (bg == n))
9531030 then true
954- else fz
955- let eG = [if (if (!(fM))
1031+ else fP
1032+ let eH = [if (if (!(gc))
9561033 then true
957- else fb(dK))
1034+ else fc(dL))
9581035 then true
959- else aK("get operation is blocked by admin"), if ((size(dK.payments) == 1))
1036+ else aL("get operation is blocked by admin"), if ((size(dL.payments) == 1))
9601037 then true
961- else aK("exactly 1 payment are expected")]
962- if ((eG == eG))
1038+ else aL("exactly 1 payment are expected")]
1039+ if ((eH == eH))
9631040 then {
964- let eF = aX(fL)
965- let fB = dK.payments[0]
966- let eb = fB.assetId
967- let en = fB.amount
968- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
969- if ((dr == dr))
1041+ let eG = aY(gb)
1042+ let fR = dL.payments[0]
1043+ let ec = fR.assetId
1044+ let eo = fR.amount
1045+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1046+ if ((ds == ds))
9701047 then {
971- let aa = dK.caller
972- let ab = dK.transactionId
973- let fN = eE(eF, en, eb, aa, ab)
974- if ((fN == fN))
1048+ let ab = dL.caller
1049+ let ac = dL.transactionId
1050+ let gd = eF(eG, eo, ec, ab, ac)
1051+ if ((gd == gd))
9751052 then {
976- let eH = fN._5
977- let fD = fN._4
978- let dY = fN._3
979- let dd = fN._2
980- let fO = fN._1
981- let dS = if (if ((fx > 0))
982- then (fx > fO)
1053+ let eI = gd._5
1054+ let fT = gd._4
1055+ let dZ = gd._3
1056+ let de = gd._2
1057+ let ge = gd._1
1058+ let dT = if (if ((fN > 0))
1059+ then (fN > ge)
9831060 else false)
984- then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
985- else fO
986- let fP = invoke(aN, "burn", [en], [AttachedPayment(eb, en)])
987- if ((fP == fP))
1061+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1062+ else ge
1063+ let gf = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064+ if ((gf == gf))
9881065 then {
989- let fQ = [ScriptTransfer(aa, dS, eF)]
990- let fH = if ((dY > 0))
991- then [ScriptTransfer(aO, dY, eF)]
1066+ let gg = [ScriptTransfer(ab, dT, eG)]
1067+ let fX = if ((dZ > 0))
1068+ then [ScriptTransfer(aP, dZ, eG)]
9921069 else nil
993- let fR = {
994- let fS = if ((this == aO))
1070+ let gh = {
1071+ let gi = if ((this == aP))
9951072 then 0
996- else dY
997- if (eH)
998- then $Tuple2(-((dS + fS)), 0)
999- else $Tuple2(0, -((dS + fS)))
1073+ else dZ
1074+ if (eI)
1075+ then $Tuple2(-((dT + gi)), 0)
1076+ else $Tuple2(0, -((dT + gi)))
10001077 }
1001- let dt = fR._1
1002- let du = fR._2
1003- let fT = ds(dt, du, 0)
1004- let ft = fT._1
1005- let dj = fT._2
1006- let fu = dw(dr, dj)
1007- if ((fu == fu))
1008- then $Tuple2((((dd ++ fQ) ++ fH) ++ ft), dS)
1078+ let du = gh._1
1079+ let dv = gh._2
1080+ let gj = dt(du, dv, 0)
1081+ let fJ = gj._1
1082+ let dk = gj._2
1083+ let fK = dx(ds, dk)
1084+ if ((fK == fK))
1085+ then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
10091086 else throw("Strict value is not equal to itself.")
10101087 }
10111088 else throw("Strict value is not equal to itself.")
10121089 }
10131090 else throw("Strict value is not equal to itself.")
10141091 }
10151092 else throw("Strict value is not equal to itself.")
10161093 }
10171094 else throw("Strict value is not equal to itself.")
10181095 }
10191096
10201097
10211098
1022-@Callable(dK)
1023-func getOneTknREADONLY (eF,en) = {
1024- let fU = eE(aX(eF), en, bg, unit, unit)
1025- let fO = fU._1
1026- let dd = fU._2
1027- let dY = fU._3
1028- let fD = fU._4
1029- let eH = fU._5
1030- $Tuple2(nil, $Tuple3(fO, dY, fD))
1099+@Callable(dL)
1100+func getOneTknREADONLY (eG,eo) = {
1101+ let gk = eF(aY(eG), eo, bh, unit, unit)
1102+ let ge = gk._1
1103+ let de = gk._2
1104+ let dZ = gk._3
1105+ let fT = gk._4
1106+ let eI = gk._5
1107+ $Tuple2(nil, $Tuple3(ge, dZ, fT))
10311108 }
10321109
10331110
10341111
1035-@Callable(dK)
1036-func unstakeAndGetOneTkn (fV,fL,fx) = {
1037- let fz = {
1038- let aQ = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1039- if ($isInstanceOf(aQ, "Boolean"))
1040- then aQ
1041- else throw(($getType(aQ) + " couldn't be cast to Boolean"))
1112+@Callable(dL)
1113+func unstakeAndGetOneTkn (gl,gb,fN) = {
1114+ let fP = {
1115+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1116+ if ($isInstanceOf(aR, "Boolean"))
1117+ then aR
1118+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
10421119 }
1043- let fM = if (if (aS())
1120+ let gc = if (if (aT())
10441121 then true
1045- else (bf == n))
1122+ else (bg == n))
10461123 then true
1047- else fz
1048- let eG = [if (if (!(fM))
1124+ else fP
1125+ let eH = [if (if (!(gc))
10491126 then true
1050- else fb(dK))
1127+ else fc(dL))
10511128 then true
1052- else aK("get operation is blocked by admin"), if ((size(dK.payments) == 0))
1129+ else aL("get operation is blocked by admin"), if ((size(dL.payments) == 0))
10531130 then true
1054- else aK("no payments are expected")]
1055- if ((eG == eG))
1131+ else aL("no payments are expected")]
1132+ if ((eH == eH))
10561133 then {
1057- let eF = aX(fL)
1058- let aa = dK.caller
1059- let ab = dK.transactionId
1060- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1061- if ((dr == dr))
1134+ let eG = aY(gb)
1135+ let ab = dL.caller
1136+ let ac = dL.transactionId
1137+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1138+ if ((ds == ds))
10621139 then {
1063- let fW = invoke(bm, "unstake", [toBase58String(bg), fV], nil)
1064- if ((fW == fW))
1140+ let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1141+ if ((gm == gm))
10651142 then {
1066- let fX = eE(eF, fV, bg, aa, ab)
1067- if ((fX == fX))
1143+ let gn = eF(eG, gl, bh, ab, ac)
1144+ if ((gn == gn))
10681145 then {
1069- let eH = fX._5
1070- let fD = fX._4
1071- let dY = fX._3
1072- let dd = fX._2
1073- let fO = fX._1
1074- let dS = if (if ((fx > 0))
1075- then (fx > fO)
1146+ let eI = gn._5
1147+ let fT = gn._4
1148+ let dZ = gn._3
1149+ let de = gn._2
1150+ let ge = gn._1
1151+ let dT = if (if ((fN > 0))
1152+ then (fN > ge)
10761153 else false)
1077- then aK(makeString(["amount to receive is less than ", toString(fx)], ""))
1078- else fO
1079- let fP = invoke(aN, "burn", [fV], [AttachedPayment(bg, fV)])
1080- if ((fP == fP))
1154+ then aL(makeString(["amount to receive is less than ", toString(fN)], ""))
1155+ else ge
1156+ let gf = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1157+ if ((gf == gf))
10811158 then {
1082- let fQ = [ScriptTransfer(dK.caller, dS, eF)]
1083- let fH = if ((dY > 0))
1084- then [ScriptTransfer(aO, dY, eF)]
1159+ let gg = [ScriptTransfer(dL.caller, dT, eG)]
1160+ let fX = if ((dZ > 0))
1161+ then [ScriptTransfer(aP, dZ, eG)]
10851162 else nil
1086- let fY = {
1087- let fS = if ((this == aO))
1163+ let go = {
1164+ let gi = if ((this == aP))
10881165 then 0
1089- else dY
1090- if (eH)
1091- then $Tuple2(-((dS + fS)), 0)
1092- else $Tuple2(0, -((dS + fS)))
1166+ else dZ
1167+ if (eI)
1168+ then $Tuple2(-((dT + gi)), 0)
1169+ else $Tuple2(0, -((dT + gi)))
10931170 }
1094- let dt = fY._1
1095- let du = fY._2
1096- let fZ = ds(dt, du, 0)
1097- let ft = fZ._1
1098- let dj = fZ._2
1099- let fu = dw(dr, dj)
1100- if ((fu == fu))
1101- then $Tuple2((((dd ++ fQ) ++ fH) ++ ft), dS)
1171+ let du = go._1
1172+ let dv = go._2
1173+ let gp = dt(du, dv, 0)
1174+ let fJ = gp._1
1175+ let dk = gp._2
1176+ let fK = dx(ds, dk)
1177+ if ((fK == fK))
1178+ then $Tuple2((((de ++ gg) ++ fX) ++ fJ), dT)
11021179 else throw("Strict value is not equal to itself.")
11031180 }
11041181 else throw("Strict value is not equal to itself.")
11051182 }
11061183 else throw("Strict value is not equal to itself.")
11071184 }
11081185 else throw("Strict value is not equal to itself.")
11091186 }
11101187 else throw("Strict value is not equal to itself.")
11111188 }
11121189 else throw("Strict value is not equal to itself.")
11131190 }
11141191
11151192
11161193
1117-@Callable(dK)
1194+@Callable(dL)
11181195 func get () = {
1119- let cO = dJ(dK)
1120- let ga = cO._1
1121- let cv = cO._2
1122- let dM = cO._3
1123- let cd = cO._4
1124- let cw = cO._5
1125- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1126- if ((dr == dr))
1196+ let cP = dK(dL)
1197+ let gq = cP._1
1198+ let cw = cP._2
1199+ let dN = cP._3
1200+ let ce = cP._4
1201+ let cx = cP._5
1202+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1203+ if ((ds == ds))
11271204 then {
1128- let gb = invoke(aN, "burn", [dM], [AttachedPayment(cd, dM)])
1129- if ((gb == gb))
1205+ let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206+ if ((gr == gr))
11301207 then {
1131- let gc = ds(-(ga), -(cv), 0)
1132- let ft = gc._1
1133- let dj = gc._2
1134- let fu = dw(dr, dj)
1135- if ((fu == fu))
1136- then (cw ++ ft)
1208+ let gs = dt(-(gq), -(cw), 0)
1209+ let fJ = gs._1
1210+ let dk = gs._2
1211+ let fK = dx(ds, dk)
1212+ if ((fK == fK))
1213+ then (cx ++ fJ)
11371214 else throw("Strict value is not equal to itself.")
11381215 }
11391216 else throw("Strict value is not equal to itself.")
11401217 }
11411218 else throw("Strict value is not equal to itself.")
11421219 }
11431220
11441221
11451222
1146-@Callable(dK)
1147-func getNoLess (gd,ge) = {
1148- let cO = dJ(dK)
1149- let cu = cO._1
1150- let cv = cO._2
1151- let dM = cO._3
1152- let cd = cO._4
1153- let cw = cO._5
1154- if ((gd > cu))
1155- then throw(((("noLessThenAmtAsset failed: " + toString(cu)) + " < ") + toString(gd)))
1156- else if ((ge > cv))
1157- then throw(((("noLessThenPriceAsset failed: " + toString(cv)) + " < ") + toString(ge)))
1223+@Callable(dL)
1224+func getNoLess (gt,gu) = {
1225+ let cP = dK(dL)
1226+ let cv = cP._1
1227+ let cw = cP._2
1228+ let dN = cP._3
1229+ let ce = cP._4
1230+ let cx = cP._5
1231+ if ((gt > cv))
1232+ then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gt)))
1233+ else if ((gu > cw))
1234+ then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gu)))
11581235 else {
1159- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1160- if ((dr == dr))
1236+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1237+ if ((ds == ds))
11611238 then {
1162- let gb = invoke(aN, "burn", [dM], [AttachedPayment(cd, dM)])
1163- if ((gb == gb))
1239+ let gr = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240+ if ((gr == gr))
11641241 then {
1165- let gf = ds(-(cu), -(cv), 0)
1166- let ft = gf._1
1167- let dj = gf._2
1168- let fu = dw(dr, dj)
1169- if ((fu == fu))
1170- then (cw ++ ft)
1242+ let gv = dt(-(cv), -(cw), 0)
1243+ let fJ = gv._1
1244+ let dk = gv._2
1245+ let fK = dx(ds, dk)
1246+ if ((fK == fK))
1247+ then (cx ++ fJ)
11711248 else throw("Strict value is not equal to itself.")
11721249 }
11731250 else throw("Strict value is not equal to itself.")
11741251 }
11751252 else throw("Strict value is not equal to itself.")
11761253 }
11771254 }
11781255
11791256
11801257
1181-@Callable(dK)
1182-func unstakeAndGet (dS) = {
1183- let gg = if ((size(dK.payments) != 0))
1258+@Callable(dL)
1259+func unstakeAndGet (dT) = {
1260+ let gw = if ((size(dL.payments) != 0))
11841261 then throw("No payments are expected")
11851262 else true
1186- if ((gg == gg))
1263+ if ((gw == gw))
11871264 then {
1188- let bS = aU()
1189- let cf = fromBase58String(bS[q])
1190- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1191- if ((dr == dr))
1265+ let bT = aV()
1266+ let cg = fromBase58String(bT[q])
1267+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1268+ if ((ds == ds))
11921269 then {
1193- let fW = invoke(bm, "unstake", [toBase58String(cf), dS], nil)
1194- if ((fW == fW))
1270+ let gm = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271+ if ((gm == gm))
11951272 then {
1196- let cO = cb(toBase58String(dK.transactionId), toBase58String(cf), dS, dK.caller)
1197- let cu = cO._1
1198- let cv = cO._2
1199- let ci = parseIntValue(cO._9)
1200- let cw = cO._10
1201- let gh = if (if (aS())
1273+ let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
1274+ let cv = cP._1
1275+ let cw = cP._2
1276+ let cj = parseIntValue(cP._9)
1277+ let cx = cP._10
1278+ let gx = if (if (aT())
12021279 then true
1203- else (ci == n))
1204- then throw(("Get operation is blocked by admin. Status = " + toString(ci)))
1280+ else (cj == n))
1281+ then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
12051282 else true
1206- if ((gh == gh))
1283+ if ((gx == gx))
12071284 then {
1208- let gb = invoke(aN, "burn", [dS], [AttachedPayment(cf, dS)])
1209- if ((gb == gb))
1285+ let gr = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286+ if ((gr == gr))
12101287 then {
1211- let gi = ds(-(cu), -(cv), 0)
1212- let ft = gi._1
1213- let dj = gi._2
1214- let fu = dw(dr, dj)
1215- if ((fu == fu))
1216- then (cw ++ ft)
1288+ let gy = dt(-(cv), -(cw), 0)
1289+ let fJ = gy._1
1290+ let dk = gy._2
1291+ let fK = dx(ds, dk)
1292+ if ((fK == fK))
1293+ then (cx ++ fJ)
12171294 else throw("Strict value is not equal to itself.")
12181295 }
12191296 else throw("Strict value is not equal to itself.")
12201297 }
12211298 else throw("Strict value is not equal to itself.")
12221299 }
12231300 else throw("Strict value is not equal to itself.")
12241301 }
12251302 else throw("Strict value is not equal to itself.")
12261303 }
12271304 else throw("Strict value is not equal to itself.")
12281305 }
12291306
12301307
12311308
1232-@Callable(dK)
1233-func unstakeAndGetNoLess (fV,gj,ge) = {
1234- let fM = if (aS())
1309+@Callable(dL)
1310+func unstakeAndGetNoLess (gl,gz,gu) = {
1311+ let gc = if (aT())
12351312 then true
1236- else (bf == n)
1237- let eG = [if (!(fM))
1313+ else (bg == n)
1314+ let eH = [if (!(gc))
12381315 then true
1239- else throw("get operation is blocked by admin"), if ((size(dK.payments) == 0))
1316+ else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
12401317 then true
12411318 else throw("no payments are expected")]
1242- if ((eG == eG))
1319+ if ((eH == eH))
12431320 then {
1244- let dr = dk(toBigInt(0), toBigInt(0), toBigInt(0))
1245- if ((dr == dr))
1321+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1322+ if ((ds == ds))
12461323 then {
1247- let fW = invoke(bm, "unstake", [toBase58String(bg), fV], nil)
1248- if ((fW == fW))
1324+ let gm = invoke(bn, "unstake", [toBase58String(bh), gl], nil)
1325+ if ((gm == gm))
12491326 then {
1250- let cO = cb(toBase58String(dK.transactionId), toBase58String(bg), fV, dK.caller)
1251- let cu = cO._1
1252- let cv = cO._2
1253- let cw = cO._10
1254- let gk = [if ((cu >= gj))
1327+ let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gl, dL.caller)
1328+ let cv = cP._1
1329+ let cw = cP._2
1330+ let cx = cP._10
1331+ let gA = [if ((cv >= gz))
12551332 then true
1256- else throw(makeString(["amount asset amount to receive is less than ", toString(gj)], "")), if ((cv >= ge))
1333+ else throw(makeString(["amount asset amount to receive is less than ", toString(gz)], "")), if ((cw >= gu))
12571334 then true
1258- else throw(makeString(["price asset amount to receive is less than ", toString(ge)], ""))]
1259- if ((gk == gk))
1335+ else throw(makeString(["price asset amount to receive is less than ", toString(gu)], ""))]
1336+ if ((gA == gA))
12601337 then {
1261- let gb = invoke(aN, "burn", [fV], [AttachedPayment(bg, fV)])
1262- if ((gb == gb))
1338+ let gr = invoke(aO, "burn", [gl], [AttachedPayment(bh, gl)])
1339+ if ((gr == gr))
12631340 then {
1264- let gl = ds(-(cu), -(cv), 0)
1265- let ft = gl._1
1266- let dj = gl._2
1267- let fu = dw(dr, dj)
1268- if ((fu == fu))
1269- then (cw ++ ft)
1341+ let gB = dt(-(cv), -(cw), 0)
1342+ let fJ = gB._1
1343+ let dk = gB._2
1344+ let fK = dx(ds, dk)
1345+ if ((fK == fK))
1346+ then (cx ++ fJ)
12701347 else throw("Strict value is not equal to itself.")
12711348 }
12721349 else throw("Strict value is not equal to itself.")
12731350 }
12741351 else throw("Strict value is not equal to itself.")
12751352 }
12761353 else throw("Strict value is not equal to itself.")
12771354 }
12781355 else throw("Strict value is not equal to itself.")
12791356 }
12801357 else throw("Strict value is not equal to itself.")
12811358 }
12821359
12831360
12841361
1285-@Callable(dK)
1286-func activate (gm,gn) = if ((toString(dK.caller) != toString(aN)))
1362+@Callable(dL)
1363+func activate (gC,gD) = if ((toString(dL.caller) != toString(aO)))
12871364 then throw("permissions denied")
1288- else $Tuple2([StringEntry(ad(), gm), StringEntry(ae(), gn)], "success")
1365+ else $Tuple2([StringEntry(ae(), gC), StringEntry(af(), gD)], "success")
12891366
12901367
12911368
1292-@Callable(dK)
1369+@Callable(dL)
12931370 func refreshKLp () = {
1294- let go = valueOrElse(getInteger(aj), 0)
1295- let gp = if (((height - go) >= am))
1371+ let gE = valueOrElse(getInteger(ak), 0)
1372+ let gF = if (((height - gE) >= an))
12961373 then unit
1297- else aK(makeString([toString(am), " blocks have not passed since the previous call"], ""))
1298- if ((gp == gp))
1374+ else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1375+ if ((gF == gF))
12991376 then {
1300- let dD = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ai), "0")), aM("invalid kLp"))
1301- let gq = ds(0, 0, 0)
1302- let gr = gq._1
1303- let dj = gq._2
1304- let dv = if ((dD != dj))
1305- then gr
1306- else aK("nothing to refresh")
1307- $Tuple2(dv, toString(dj))
1377+ let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
1378+ let gG = dt(0, 0, 0)
1379+ let gH = gG._1
1380+ let dk = gG._2
1381+ let dw = if ((dE != dk))
1382+ then gH
1383+ else aL("nothing to refresh")
1384+ $Tuple2(dw, toString(dk))
13081385 }
13091386 else throw("Strict value is not equal to itself.")
13101387 }
13111388
13121389
13131390
1314-@Callable(dK)
1315-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
1391+@Callable(dL)
1392+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aV())
13161393
13171394
13181395
1319-@Callable(dK)
1320-func getAccBalanceWrapperREADONLY (bE) = $Tuple2(nil, bD(bE))
1396+@Callable(dL)
1397+func getAccBalanceWrapperREADONLY (bF) = $Tuple2(nil, bE(bF))
13211398
13221399
13231400
1324-@Callable(dK)
1325-func calcPricesWrapperREADONLY (bM,bN,bR) = {
1326- let ca = bQ(bM, bN, bR)
1327- $Tuple2(nil, [toString(ca[0]), toString(ca[1]), toString(ca[2])])
1401+@Callable(dL)
1402+func calcPricesWrapperREADONLY (bN,bO,bS) = {
1403+ let cb = bR(bN, bO, bS)
1404+ $Tuple2(nil, [toString(cb[0]), toString(cb[1]), toString(cb[2])])
13281405 }
13291406
13301407
13311408
1332-@Callable(dK)
1409+@Callable(dL)
13331410 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
13341411
13351412
13361413
1337-@Callable(dK)
1414+@Callable(dL)
13381415 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
13391416
13401417
13411418
1342-@Callable(dK)
1343-func calcPriceBigIntWrapperREADONLY (bG,bH) = $Tuple2(nil, toString(bF(parseBigIntValue(bG), parseBigIntValue(bH))))
1419+@Callable(dL)
1420+func calcPriceBigIntWrapperREADONLY (bH,bI) = $Tuple2(nil, toString(bG(parseBigIntValue(bH), parseBigIntValue(bI))))
13441421
13451422
13461423
1347-@Callable(dK)
1348-func estimatePutOperationWrapperREADONLY (cc,cy,cz,cA,cB,cC,aa,cD,cE) = $Tuple2(nil, cx(cc, cy, cz, cA, cB, cC, aa, cD, cE))
1424+@Callable(dL)
1425+func estimatePutOperationWrapperREADONLY (cd,cz,cA,cB,cC,cD,ab,cE,cF) = $Tuple2(nil, cy(cd, cz, cA, cB, cC, cD, ab, cE, cF))
13491426
13501427
13511428
1352-@Callable(dK)
1353-func estimateGetOperationWrapperREADONLY (cc,cd,ce,aa) = {
1354- let cO = cb(cc, cd, ce, addressFromStringValue(aa))
1355- $Tuple2(nil, $Tuple10(cO._1, cO._2, cO._3, cO._4, cO._5, cO._6, cO._7, toString(cO._8), cO._9, cO._10))
1429+@Callable(dL)
1430+func estimateGetOperationWrapperREADONLY (cd,ce,cf,ab) = {
1431+ let cP = cc(cd, ce, cf, addressFromStringValue(ab))
1432+ $Tuple2(nil, $Tuple10(cP._1, cP._2, cP._3, cP._4, cP._5, cP._6, cP._7, toString(cP._8), cP._9, cP._10))
13561433 }
13571434
13581435
13591436
1360-@Callable(dK)
1437+@Callable(dL)
13611438 func statsREADONLY () = {
1362- let bS = aU()
1363- let cf = fromBase58String(bS[q])
1364- let gs = bS[r]
1365- let gt = bS[s]
1366- let cH = bS[v]
1367- let cI = bS[w]
1368- let bT = parseIntValue(bS[t])
1369- let bU = parseIntValue(bS[u])
1370- let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1371- let gv = bD(gs)
1372- let gw = bD(gt)
1373- let gx = if ((gu == 0))
1439+ let bT = aV()
1440+ let cg = fromBase58String(bT[q])
1441+ let gI = bT[r]
1442+ let gJ = bT[s]
1443+ let cI = bT[v]
1444+ let cJ = bT[w]
1445+ let bU = parseIntValue(bT[t])
1446+ let bV = parseIntValue(bT[u])
1447+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1448+ let gL = bE(gI)
1449+ let gM = bE(gJ)
1450+ let gN = if ((gK == 0))
13741451 then [e, e, e]
1375- else bQ(gv, gw, gu)
1376- let cp = 0
1377- let gy = H(gx[1], b)
1378- let gz = H(gx[2], b)
1379- let gA = value(getInteger(aN, ax(toString(this))))
1380- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gv), toString(gw), toString(gu), toString(cp), toString(gy), toString(gz), toString(gA)], j))
1452+ else bR(gL, gM, gK)
1453+ let cq = 0
1454+ let gO = H(gN[1], b)
1455+ let gP = H(gN[2], b)
1456+ let gQ = value(getInteger(aO, ay(toString(this))))
1457+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gL), toString(gM), toString(gK), toString(cq), toString(gO), toString(gP), toString(gQ)], j))
13811458 }
13821459
13831460
13841461
1385-@Callable(dK)
1386-func evaluatePutByAmountAssetREADONLY (cz) = {
1387- let bS = aU()
1388- let cf = fromBase58String(bS[q])
1389- let cF = bS[r]
1390- let cg = fromBase58String(cF)
1391- let cG = bS[s]
1462+@Callable(dL)
1463+func evaluatePutByAmountAssetREADONLY (cA) = {
1464+ let bT = aV()
1465+ let cg = fromBase58String(bT[q])
1466+ let cG = bT[r]
13921467 let ch = fromBase58String(cG)
1393- let bT = parseIntValue(bS[t])
1394- let bU = parseIntValue(bS[u])
1395- let ci = bS[p]
1396- let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1397- let gv = bD(cF)
1398- let gw = bD(cG)
1399- let bO = D(gv, bT)
1400- let bP = D(gw, bU)
1401- let co = if ((gu == 0))
1468+ let cH = bT[s]
1469+ let ci = fromBase58String(cH)
1470+ let bU = parseIntValue(bT[t])
1471+ let bV = parseIntValue(bT[u])
1472+ let cj = bT[p]
1473+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474+ let gL = bE(cG)
1475+ let gM = bE(cH)
1476+ let bP = D(gL, bU)
1477+ let bQ = D(gM, bV)
1478+ let cp = if ((gK == 0))
14021479 then e
1403- else bF(bP, bO)
1404- let cL = D(cz, bT)
1405- let cM = fraction(cL, co, d)
1406- let cB = H(cM, bU)
1407- let dQ = cx("", 500000, cz, cg, cB, ch, "", true, false)
1408- let cW = dQ._1
1409- let gB = dQ._3
1410- let ck = dQ._4
1411- let cm = dQ._5
1412- let cj = dQ._6
1413- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cW), toString(H(co, b)), toString(ck), toString(cm), toString(cj), ci, toString(cz), toString(cB)], j))
1480+ else bG(bQ, bP)
1481+ let cM = D(cA, bU)
1482+ let cN = fraction(cM, cp, d)
1483+ let cC = H(cN, bV)
1484+ let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1485+ let cX = dR._1
1486+ let gR = dR._3
1487+ let cl = dR._4
1488+ let cn = dR._5
1489+ let ck = dR._6
1490+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
14141491 }
14151492
14161493
14171494
1418-@Callable(dK)
1419-func evaluatePutByPriceAssetREADONLY (cB) = {
1420- let bS = aU()
1421- let cf = fromBase58String(bS[q])
1422- let cF = bS[r]
1423- let cg = fromBase58String(cF)
1424- let cG = bS[s]
1495+@Callable(dL)
1496+func evaluatePutByPriceAssetREADONLY (cC) = {
1497+ let bT = aV()
1498+ let cg = fromBase58String(bT[q])
1499+ let cG = bT[r]
14251500 let ch = fromBase58String(cG)
1426- let bT = parseIntValue(bS[t])
1427- let bU = parseIntValue(bS[u])
1428- let ci = bS[p]
1429- let gu = valueOrErrorMessage(assetInfo(cf), (("Asset " + toBase58String(cf)) + " doesn't exist")).quantity
1430- let gC = bD(cF)
1431- let gD = bD(cG)
1432- let gE = D(gC, bT)
1433- let gF = D(gD, bU)
1434- let co = if ((gu == 0))
1501+ let cH = bT[s]
1502+ let ci = fromBase58String(cH)
1503+ let bU = parseIntValue(bT[t])
1504+ let bV = parseIntValue(bT[u])
1505+ let cj = bT[p]
1506+ let gK = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507+ let gS = bE(cG)
1508+ let gT = bE(cH)
1509+ let gU = D(gS, bU)
1510+ let gV = D(gT, bV)
1511+ let cp = if ((gK == 0))
14351512 then e
1436- else bF(gF, gE)
1437- let cM = D(cB, bU)
1438- let cL = fraction(cM, d, co)
1439- let cz = H(cL, bT)
1440- let dQ = cx("", 500000, cz, cg, cB, ch, "", true, false)
1441- let cW = dQ._1
1442- let gB = dQ._3
1443- let ck = dQ._4
1444- let cm = dQ._5
1445- let cj = dQ._6
1446- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cW), toString(H(co, b)), toString(ck), toString(cm), toString(cj), ci, toString(cz), toString(cB)], j))
1513+ else bG(gV, gU)
1514+ let cN = D(cC, bV)
1515+ let cM = fraction(cN, d, cp)
1516+ let cA = H(cM, bU)
1517+ let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1518+ let cX = dR._1
1519+ let gR = dR._3
1520+ let cl = dR._4
1521+ let cn = dR._5
1522+ let ck = dR._6
1523+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
14471524 }
14481525
14491526
14501527
1451-@Callable(dK)
1452-func evaluateGetREADONLY (gG,gH) = {
1453- let cO = cb("", gG, gH, this)
1454- let cu = cO._1
1455- let cv = cO._2
1456- let ck = cO._5
1457- let cm = cO._6
1458- let cj = cO._7
1459- let cp = cO._8
1460- let ci = parseIntValue(cO._9)
1461- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cu), toString(cv), toString(ck), toString(cm), toString(cj), toString(cp), toString(ci)], j))
1528+@Callable(dL)
1529+func evaluateGetREADONLY (gW,gX) = {
1530+ let cP = cc("", gW, gX, this)
1531+ let cv = cP._1
1532+ let cw = cP._2
1533+ let cl = cP._5
1534+ let cn = cP._6
1535+ let ck = cP._7
1536+ let cq = cP._8
1537+ let cj = parseIntValue(cP._9)
1538+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cv), toString(cw), toString(cl), toString(cn), toString(ck), toString(cq), toString(cj)], j))
14621539 }
14631540
14641541
1465-@Verifier(gI)
1466-func gJ () = {
1467- let gK = {
1468- let dV = eY()
1469- if ($isInstanceOf(dV, "ByteVector"))
1542+@Verifier(gY)
1543+func gZ () = {
1544+ let ha = {
1545+ let dW = eZ()
1546+ if ($isInstanceOf(dW, "ByteVector"))
14701547 then {
1471- let fc = dV
1472- fc
1548+ let fd = dW
1549+ fd
14731550 }
1474- else if ($isInstanceOf(dV, "Unit"))
1475- then gI.senderPublicKey
1551+ else if ($isInstanceOf(dW, "Unit"))
1552+ then gY.senderPublicKey
14761553 else throw("Match error")
14771554 }
1478- let dV = gI
1479- if ($isInstanceOf(dV, "Order"))
1555+ let dW = gY
1556+ if ($isInstanceOf(dW, "Order"))
14801557 then {
1481- let dz = dV
1482- let gL = aT()
1483- let gM = dy(dz)
1484- let aC = gM._1
1485- let aD = gM._2
1486- let aE = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1487- let aF = sigVerify(dz.bodyBytes, dz.proofs[1], gL)
1488- if (if (if (aC)
1489- then aE
1490- else false)
1558+ let dA = dW
1559+ let hb = aU()
1560+ let hc = dz(dA)
1561+ let aD = hc._1
1562+ let aE = hc._2
1563+ let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1564+ let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hb)
1565+ if (if (if (aD)
14911566 then aF
14921567 else false)
1568+ then aG
1569+ else false)
14931570 then true
1494- else aB(aC, aD, aE, aF)
1571+ else aC(aD, aE, aF, aG)
14951572 }
1496- else if ($isInstanceOf(dV, "SetScriptTransaction"))
1573+ else if ($isInstanceOf(dW, "SetScriptTransaction"))
14971574 then {
1498- let eZ = dV
1499- if (sigVerify(gI.bodyBytes, gI.proofs[0], gK))
1575+ let fa = dW
1576+ if (sigVerify(gY.bodyBytes, gY.proofs[0], ha))
15001577 then true
15011578 else {
1502- let gN = blake2b256(value(eZ.script))
1503- let gO = fromBase64String(value(getString(aN, az())))
1504- let gP = scriptHash(this)
1505- if ((gO == gN))
1506- then (gP != gN)
1579+ let hd = blake2b256(value(fa.script))
1580+ let he = fromBase64String(value(getString(aO, aA())))
1581+ let hf = scriptHash(this)
1582+ if ((he == hd))
1583+ then (hf != hd)
15071584 else false
15081585 }
15091586 }
1510- else sigVerify(gI.bodyBytes, gI.proofs[0], gK)
1587+ else sigVerify(gY.bodyBytes, gY.proofs[0], ha)
15111588 }
15121589

github/deemru/w8io/6500d08 
547.42 ms