tx · 25f8t1snD62qzckptRSWsL8NEyom8SbdE3z6J7P2GbE8

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03400000 Waves

2022.10.06 11:45 [2260237] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "25f8t1snD62qzckptRSWsL8NEyom8SbdE3z6J7P2GbE8", "fee": 3400000, "feeAssetId": null, "timestamp": 1665045945979, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "5JEHN4MdhHidDSGsuG1gwCzKRTf9sC8n1m9PDCHcd2QgxLJk8YAPiyiHx7qhvW15WTsgjL8m9t1imT8mJpjuxZrH" ], "script": "base64:BgKkIggCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgQKAgEEEgQKAgEIEgQKAgEIEgMKAQESABIHCgUBAQEIARIECgIIARIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEIARIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgpzbGlwcGFnZTREIgVBbXVsdCIFRGNvbnYiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIgtpZHhJQW10QXNJZCINaWR4SVByaWNlQXNJZCIPaWR4RmFjdFN0YWtDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiA3N0ciIHJG1hdGNoMCIGdmFsU3RyIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiA2ZjYSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTYzMjcxNjY3MiIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiA21vYSIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCICY2ciAWkiA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCITZXN0aW1hdGVQdXRPbmVUa25WMiIJcG10QW10UmF3Igpwb29sQ29uZmlnIg0kdDAyMTAwMzIxMDQ4Ig0kdDAyMTA1MjIxNTEzIgxhbUJhbGFuY2VOb3ciDHByQmFsYW5jZU5vdyINJHQwMjE1MTcyMTY1MSIQYW1CYWxhbmNlRm9yQ2FsYyIQcHJCYWxhbmNlRm9yQ2FsYyIKeFByZWNpc2lvbiIGcmVzdWx0IgFAIg0kdDAyMjEyMDIyMjE2IgthbUFzc2V0UGFydCILcHJBc3NldFBhcnQiBmVzdFB1dCIHZXN0aW1MUCIJbHBBc3NldElkIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDIzNTcxMjM2NzkiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMjM4NjYyMzk1MyIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIgRnZXREIgJ4cCIBbiIDeHAwIgN4cDEiCmFQcmVjaXNpb24iAWEiAXMiA2FubiIEY2FsYyIDYWNjIgNjdXIiDSR0MDI1MTE5MjUxMzkiAWQiBWZvdW5kIgJkcCIFZE5leHQiBWREaWZmIgNhcnIiDSR0MDI1NTYzMjU2MDkiAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIgVnZXRZRCIBRCIBeCIBYyIBYiINJHQwMjYxMTcyNjEzNyIBeSIFeU5leHQiBXlEaWZmIg0kdDAyNjQ1MjI2NDk5IgFtIgJwbSICcGQiAm1tIgJwayIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiAmNtIgNocG0iA2NwbSIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiAWUiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIgVvdXRMcCIHZ3d4Q250ciIHcG9vbENmZyIFYWRkb24iEHBheW1lbnRBbW91bnRSYXciDSR0MDMxMTk1MzEyNDciDSR0MDMxNDA3MzIwMjMiDHZpcnRTd2FwSW5BbSINdmlydFN3YXBPdXRQciIMdmlydFN3YXBJblByIg12aXJ0U3dhcE91dEFtIgZEMHZzRDEiCWxwQ2FsY1JlcyINcGF5bWVudEFtb3VudCIOcGF5bWVudEFzc2V0SWQiD2xwQXNzZXRFbWlzc2lvbiIOcG9vbFByb3BvcnRpb24iD2Ftb3VudEFzc2V0UGFydCIOcHJpY2VBc3NldFBhcnQiCWxwQW10Qm90aCIFYm9udXMiB21heFNscGciCW91dEFtdEFtdCIKZXhjaFJlc3VsdCIHbm90VXNlZCIJb3V0QW1vdW50Igplc3RpbUFtQW10Igplc3RpbVByQW10Ig0kdDA0MDI4MTQwNzQxIgt0b3RhbEdldFJhdyIIZmluYWxSZXMiDSR0MDQxNDg4NDE1OTIiDSR0MDQyNjE3NDI3NzIiDWxwQXNzZXRBbW91bnQiDSR0MDQzMjg1NDM1OTMiFGFtb3VudEJhbGFuY2VGb3JTd2FwIhNwcmljZUJhbGFuY2VGb3JTd2FwIgxhbW91bnRUb1N3YXAiC2Ftb3VudFRvQWRkIgp5UHJlY2lzaW9uIg0kdDA0NDEyMTQ0MTcwIgpscEVtaXNzaW9uIgVpbmRleCIEbmV3WSICZHkiDSR0MDQ0ODUzNDQ5MDIiDSR0MDQ1MjQ3NDUzNjIiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDXVuc3Rha2VBbW91bnQiDSR0MDQ3NjY3NDc4NTUiBWFzc2V0IgxwYXltZW50QXNzZXQiDSR0MDQ4MjgzNDgzNzMiDSR0MDQ4Mzc3NDg1NTkiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IghscEFtb3VudCIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoWwABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWgCAzEwMAABaQIBMQABagICX18AAWsCAAABbAABAAFtAAIAAW4AAwABbwAEAAFwAAEAAXEAAgABcgADAAFzAAQAAXQABQABdQAGAAF2AAcAAXcACAABeAAJAAF5AAEAAXoABwABQQAKAAFCCQBrAwAFBQFhAJBOAQFDAgFEAUUJALwCAwkAtgIBBQFEBQFjCQC2AgEFAUUBAUYCAUcBSAkAoAMBCQC8AgMFAUcJALYCAQUBSAUBYwEBSQMBSgFLAUwJAGsDBQFKBQFLBQFMAQFNAQFHAwkAvwICBQFkBQFHCQC+AgEFAUcFAUcBAU4BAUcDCQC/AgIFAWQFAUcJAL4CAQUBRwUBRwEBTwACEyVzX19mYWN0b3J5Q29udHJhY3QBAVAAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBUQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBUgACESVzJXNfX3ByaWNlX19sYXN0AQFTAgFUAVUJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFUCQDMCAIJAKQDAQUBVQUDbmlsBQFqAQFWAgFXAVgJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQFXAgJfXwUBWAEBWQIBVwFYCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUBVwICX18FAVgBAVoAAg8lc19fYW1vdW50QXNzZXQBAmFhAAIOJXNfX3ByaWNlQXNzZXQBAmFiAAIHJXNfX2FtcAECYWMAAg0lc19fYWRkb25BZGRyAAJhZAIHJXNfX2ZlZQACYWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWQFAUIBAmFmAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFnAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhaAICYWkCYWoJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFpAgJfXwUCYWoCCF9fY29uZmlnAQJhawECYWwJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYWwBAmFtAAIMJXNfX3NodXRkb3duAQJhbgACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhbwACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhcAMCYXECYXICYXMJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUCYXECCyBzbmRyVmFsaWQ9CQClAwEFAmFyAgwgbXRjaHJWYWxpZD0JAKUDAQUCYXMBAmF0AQFHBAJhdQUBRwMJAAECBQJhdQIGU3RyaW5nBAJhdgUCYXUFAmF2CQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwECYXcCAmF4AmF5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXgFAmF5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF4CQDMCAICAS4JAMwIAgUCYXkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYXoCAmF4AmF5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXgFAmF5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF4CQDMCAICAS4JAMwIAgUCYXkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAACYUEJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhdwIFBHRoaXMJAQFPAAACYUIJAQJhdwIFBHRoaXMJAQJhYgABAmFDAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhQQkBAmFtAAcBAmFEAAkA2QQBCQECYXcCBQJhQQkBAmFnAAACYUUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhdwIFAmFBCQECYW8AAQJhRgAEAmFHCQECYXcCBQR0aGlzCQEBWgAEAmFICQECYXcCBQR0aGlzCQECYWEABAJhSQkBAmF6AgUCYUEJAQJhawEFAmFIBAJhaQkBAmF6AgUCYUEJAQJhawEFAmFHCQC1CQIJAQJhdwIFAmFBCQECYWgCCQCkAwEFAmFpCQCkAwEFAmFJBQFqAQJhSgAJALUJAgkBAmF3AgUCYUEJAQJhZgAFAWoAAmFLCQECYUoAAAJhTAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUsFAXkCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJhTQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUsFAXoCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJhTgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYUsFAUECHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmFPCgJhUAJhUQJhUgJhUwJhVAJhVQJhVgJhVwJhWAJhWQkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYVAJAMwIAgkApAMBBQJhUQkAzAgCCQCkAwEFAmFSCQDMCAIJAKQDAQUCYVMJAMwIAgkApAMBBQJhVAkAzAgCCQCkAwEFAmFVCQDMCAIJAKQDAQUCYVYJAMwIAgkApAMBBQJhVwkAzAgCCQCkAwEFAmFYCQDMCAIJAKQDAQUCYVkFA25pbAUBagECYVoGAmJhAmJiAmJjAmFTAmFWAmFXCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmEJAMwIAgkApAMBBQJiYgkAzAgCCQCkAwEFAmJjCQDMCAIJAKQDAQUCYVMJAMwIAgkApAMBBQJhVgkAzAgCCQCkAwEFAmFXBQNuaWwFAWoBAmJkAQJiZQMJAAACBQJiZQIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYmUBAmJmAgJiZwJiaAkAvAIDBQJiZwUBYwUCYmgBAmJpAwJiagJiawJibAQCYm0JALwCAwkAuAICBQJiagUCYmsFAWIFAmJrBAJibgkAvwICCQC4AgIFAmJsCQEBTQEFAmJtBQFkAwkBASEBBQJibgkAAgEJAKwCAgIKQmlnIHNscGc6IAkApgMBBQJibQkAlAoCBQJibgkAmQMBCQDMCAIFAmJqCQDMCAIFAmJrBQNuaWwBAmJvAwJicAJicQJicgQCYm0JALwCAwUCYnEFAWIFAmJwBAJicwkAvwICBQJicgUCYm0DAwUCYnMGCQC/AgIFAmJxBQJicAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKYDAQUCYnECASAJAKYDAQUCYnACASAJAKYDAQUCYm0CASAJAKYDAQUCYnIFAmJzAQJidAQCYnUCYnYCYncCYngEAmJ5CQEBQwIFAmJ3BQJidQQCYnoJAQFDAgUCYngFAmJ2CQECYmYCBQJiegUCYnkBAmJBAwJidwJieAJiQgQCYkMJAQJhRgAEAmJECQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkMFAXUEAmJFCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkMFAXYEAmJGCQECYnQEBQJiRAUCYkUFAmJ3BQJieAQCYmgJAQFDAgUCYncFAmJEBAJiZwkBAUMCBQJieAUCYkUEAmJHCQEBQwIFAmJCBQFhBAJiSAkBAmJmAgUCYmgFAmJHBAJiSQkBAmJmAgUCYmcFAmJHCQDMCAIFAmJGCQDMCAIFAmJICQDMCAIFAmJJBQNuaWwBAmJKAwJidwJieAJiQgQCYksJAQJiQQMFAmJ3BQJieAUCYkIJAMwIAgkBAUYCCQCRAwIFAmJLAAAFAWEJAMwIAgkBAUYCCQCRAwIFAmJLAAEFAWEJAMwIAgkBAUYCCQCRAwIFAmJLAAIFAWEFA25pbAECYkwBAmJNBAJiTgkAawMFAmJNBQJhZQUBYQkAlAoCCQBlAgUCYk0FAmJOBQJiTgECYk8EAmJQAmJRAmJSAmJTBAJiQwkBAmFGAAQCYlQJAJEDAgUCYkMFAXIEAmJVCQCRAwIFAmJDBQFzBAJiVgkAkQMCBQJiQwUBdAQCYlcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQwUBdQQCYlgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQwUBdgQCYlkJAJEDAgUCYkMFAXEEAmJaCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlQCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUCYlQFAmJRCQACAQIPV3JvbmcgcG10IGFzc2V0BAJjYQkBAmJkAQUCYlUEAmNiCQEBQwIFAmNhBQJiVwQCY2MJAQJiZAEFAmJWBAJjZAkBAUMCBQJjYwUCYlgEAmNlCQECYmYCBQJjZAUCY2IEAmNmCQEBRgIFAmNlBQFhBAJjZwkBAUMCBQJiUgUBYQQCY2gJAQFDAgUCYloFAWEEAmNpCQC8AgMFAmNiBQJjZwUCY2gEAmNqCQC8AgMFAmNkBQJjZwUCY2gEAmNrCQEBRgIFAmNpBQJiVwQCY2wJAQFGAgUCY2oFAmJYBAJjbQMJAAACBQJiUAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlMFAmNrAwkAAAIFAmJVAgVXQVZFUwUEdW5pdAkA2QQBBQJiVQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiUwUCY2wDCQAAAgUCYlYCBVdBVkVTBQR1bml0CQDZBAEFAmJWCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgkApQgBBQJiUwUCYlAJAQJhWgYFAmNrBQJjbAUCYlIFAmNmBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUgAFAmNmCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNmBQNuaWwJAJwKCgUCY2sFAmNsBQJiVQUCYlYFAmNhBQJjYwUCYloFAmNlBQJiWQUCY20BAmNuDQJiUAJibAJjbwJjcAJjcQJjcgJiUwJjcwJjdAJjdQJjdgJjdwJjeAQCYkMJAQJhRgAEAmJUCQDZBAEJAJEDAgUCYkMFAXIEAmN5CQCRAwIFAmJDBQFzBAJjegkAkQMCBQJiQwUBdAQCY0EJAJEDAgUCYkMFAXcEAmNCCQCRAwIFAmJDBQF4BAJjQwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJDBQF1BAJjRAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJDBQF2BAJiWQkAkQMCBQJiQwUBcQQCY0UICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlQCCFdyIGxwIGFzCHF1YW50aXR5BAJjYQMFAmNzCQECYmQBBQJjeQMDBQJjdQkAAAIFAmN4BQJjeQcJAGUCCQECYmQBBQJjeQUCY3cDBQJjdQkBAmJkAQUCY3kJAGUCCQECYmQBBQJjeQUCY28EAmNjAwUCY3MJAQJiZAEFAmN6AwMFAmN1CQAAAgUCY3gFAmN6BwkAZQIJAQJiZAEFAmN6BQJjdwMFAmN1CQECYmQBBQJjegkAZQIJAQJiZAEFAmN6BQJjcQQCY0YJAQFDAgUCY28FAmNDBAJjRwkBAUMCBQJjcQUCY0QEAmNICQECYmYCBQJjRwUCY0YEAmNiCQEBQwIFAmNhBQJjQwQCY2QJAQFDAgUCY2MFAmNEBAJjSQMJAAACBQJjRQAABAJjZQUBZAQCY0oFAWQEAmJHCQB2BgkAuQICBQJjRgUCY0cAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFGAgUCYkcFAWEJAQFGAgUCY0YFAmNDCQEBRgIFAmNHBQJjRAkBAmJmAgkAtwICBQJjZAUCY0cJALcCAgUCY2IFAmNGBQJjSgQCY2UJAQJiZgIFAmNkBQJjYgQCY0sJALwCAwkBAU0BCQC4AgIFAmNlBQJjSAUBYwUCY2UEAmNKCQEBQwIFAmJsBQFhAwMDBQJjdgkBAiE9AgUCY2UFAWQHCQC/AgIFAmNLBQJjSgcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY0sCAyA+IAkApgMBBQJjSgQCY0wJAQFDAgUCY0UFAWEEAmNNCQC8AgMFAmNGBQJjZQUBYwQCY04JALwCAwUCY0cFAWMFAmNlBAJjTwMJAL8CAgUCY00FAmNHCQCUCgIFAmNOBQJjRwkAlAoCBQJjRgUCY00EAmNQCAUCY08CXzEEAmNRCAUCY08CXzIEAmJHCQC8AgMFAmNMBQJjUQUCY2QJAJcKBQkBAUYCBQJiRwUBYQkBAUYCBQJjUAUCY0MJAQFGAgUCY1EFAmNEBQJjZQUCY0oEAmNSCAUCY0kCXzEEAmNTCAUCY0kCXzIEAmNUCAUCY0kCXzMEAmNmCQEBRgIIBQJjSQJfNAUBYQQCY1UJAQFGAggFAmNJAl81BQFhAwkAZwIAAAUCY1IJAAIBAgdMUCA8PSAwBAJjVgMJAQEhAQUCY3QAAAUCY1IEAmNXCQBlAgUCY28FAmNTBAJjWAkAZQIFAmNxBQJjVAQCY1kDAwUCY3UJAAACBQJjeAUCY3kHCQCUCgIFAmN3AAADAwUCY3UJAAACBQJjeAUCY3oHCQCUCgIAAAUCY3cJAJQKAgUCY1MFAmNUBAJjWggFAmNZAl8xBAJkYQgFAmNZAl8yBAJkYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVIABQJjZgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjZgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVgIFAmJTBQJiUAkBAmFPCgUCY1oFAmRhBQJjVgUCY2YFAmJsBQJjVQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY1cFAmNYBQNuaWwJAJ8KDQUCY1IFAmNWBQJjZgUCY2EFAmNjBQJjRQUCYlQFAmJZBQJkYgUCY1cFAmNYBQJjcAUCY3IBAmRjAQJkZAQCYkMJAQJhRgAEAmRlCQCRAwIFAmJDBQFzBAJkZgkAkQMCBQJiQwUBdAQCYlkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQwUBcQQCYkQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQwUBdQQCYkUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQwUBdgQCZGcJAQJiZAEFAmRlBAJkaAkBAmJkAQUCZGYEAmNlAwkAAAIIBQJkZAlvcmRlclR5cGUFA0J1eQkBAmJ0BAUCYkQFAmJFCQBkAgUCZGcIBQJkZAZhbW91bnQFAmRoCQECYnQEBQJiRAUCYkUJAGUCBQJkZwgFAmRkBmFtb3VudAUCZGgEAmNmCQEBRgIFAmNlBQFhAwMDCQECYUMABgkAAAIFAmJZBQFuBgkAAAIFAmJZBQFvCQACAQINQWRtaW4gYmxvY2tlZAQCZGkICAUCZGQJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BAJkagMJAAACBQJkaQUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGkEAmRrCAgFAmRkCWFzc2V0UGFpcgpwcmljZUFzc2V0BAJkbAMJAAACBQJkawUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGsDAwkBAiE9AgUCZGoFAmRlBgkBAiE9AgUCZGwFAmRmCQACAQIJV3IgYXNzZXRzBAJkbQgFAmRkBXByaWNlBAJjRAkAawMFAWEFAmJFBQJiRAQCZG4JAQFJAwUCZG0FAWEFAmNEBAJkbwMJAAACCAUCZGQJb3JkZXJUeXBlBQNCdXkJAGcCBQJjZgUCZG4JAGcCBQJkbgUCY2YGAQJkcAECZHEDCQECIT0CCQCQAwEIBQJkcQhwYXltZW50cwABCQACAQIKMSBwbW50IGV4cAQCZHIJAQV2YWx1ZQEJAJEDAggFAmRxCHBheW1lbnRzAAAEAmJRCQEFdmFsdWUBCAUCZHIHYXNzZXRJZAQCY3cIBQJkcgZhbW91bnQEAmNJCQECYk8ECQDYBAEIBQJkcQ10cmFuc2FjdGlvbklkCQDYBAEFAmJRBQJjdwgFAmRxBmNhbGxlcgQCY2sIBQJjSQJfMQQCY2wIBQJjSQJfMgQCYlkJAQ1wYXJzZUludFZhbHVlAQgFAmNJAl85BAJjbQgFAmNJA18xMAMDCQECYUMABgkAAAIFAmJZBQFvCQACAQkArAICAg9BZG1pbiBibG9ja2VkOiAJAKQDAQUCYlkJAJcKBQUCY2sFAmNsBQJjdwUCYlEFAmNtAQJkcwoCZHQBWAJkdQJkdgJibAJjdAJjdQJjdgJjdwJjeAQCY0kJAQJjbg0FAVgFAmJsCAkBBXZhbHVlAQUCZHUGYW1vdW50CAkBBXZhbHVlAQUCZHUHYXNzZXRJZAgJAQV2YWx1ZQEFAmR2BmFtb3VudAgJAQV2YWx1ZQEFAmR2B2Fzc2V0SWQFAmR0CQAAAgUBWAIABQJjdAUCY3UFAmN2BQJjdwUCY3gEAmJZCQENcGFyc2VJbnRWYWx1ZQEIBQJjSQJfOAMDAwkBAmFDAAYJAAACBQJiWQUBbQYJAAACBQJiWQUBbwkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUCYlkFAmNJAQJkdwQCZHgCYlECYlMBWAQCZHkJAQJhRgAEAmJVCQCRAwIFAmR5BQFzBAJiVgkAkQMCBQJkeQUBdAQCY2EJAQJiZAEFAmJVBAJjYwkBAmJkAQUCYlYEAmR6CQECYkwBBQJkeAQCY3cIBQJkegJfMQQCYk4IBQJkegJfMgQCZEEDCQAAAgUBWAIACQCUCgIFAmNhBQJjYwMJAAACBQJiUQUCYlUDCQBmAgUCZHgFAmNhCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY2EFAmR4BQJjYwMJAAACBQJiUQUCYlYDCQBmAgUCZHgFAmNjCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjYQkAZQIFAmNjBQJkeAkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmRCCAUCZEECXzEEAmRDCAUCZEECXzIEAmREAwkAAAIFAmJRBQJiVQkAlAoCBQJkQgUCZEMJAJQKAgUCZEMFAmRCBAJkRQgFAmREAl8xBAJkRggFAmREAl8yBAJkRwABBAJkSAoAAmRJCQD8BwQFAmFOAgxjYWxjUHV0WE9ubHkJAMwIAgkApAMBBQJjdwkAzAgCCQCkAwEFAmRFCQDMCAIJAKQDAQUCZEYJAMwIAgIACQDMCAIFAmFCCQDMCAIFAWgJAMwIAgkApAMBBQJkRwkAzAgCBQFpBQNuaWwFA25pbAMJAAECBQJkSQIKKEludCwgSW50KQUCZEkJAAIBCQCsAgIJAAMBBQJkSQIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZEoDCQAAAgUCYlEFAmJVBQJkSAkAlAoCCAUCZEgCXzIIBQJkSAJfMQQCZEsIBQJkSgJfMQQCZEwIBQJkSgJfMgQCZE0JAQJkcwoFAmJTBQFYCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVQUCZEsJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJWBQJkTAAABgYHBQJkeAUCYlEEAmROCAUCZE0CXzIEAmRPCAUCZE0CXzcEAmNtCAUCZE0CXzkEAmNXCAUCZE0DXzEwBAJjWAgFAmRNA18xMQUCZE0BAmRQBgJkUQJkUgJkUwJkdAJkVAJkVQMJAQIhPQIJAJADAQUCZFMAAQkAAgECCzEgcG1udCBleHBkBAJkeQkBAmFGAAQCYlQJAJEDAgUCZHkFAXIEAmJVCQCRAwIFAmR5BQFzBAJiVgkAkQMCBQJkeQUBdAQCZFYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkeQUBdQQCZFcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkeQUBdgQCZFgJAJEDAgUCZHkFAXEEAmJTAwkAAAIFAmR0BQR0aGlzBQJkVAUCZHQEAmRyCQEFdmFsdWUBCQCRAwIFAmRTAAAEAmJRCQEFdmFsdWUBCAUCZHIHYXNzZXRJZAQCY3cIBQJkcgZhbW91bnQDCQBmAgCAlOvcAwUCY3cJAAIBAg1NaW4gcG10IDEwIExQBAJiUAkA2AQBBQJkVQMJAQIhPQIFAmJUCQDYBAEFAmJRCQACAQIIV3JvbmcgTFAEAmNhCQECYmQBBQJiVQQCY2MJAQJiZAEFAmJWBAJkWQoAAmRJCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZFEJAMwIAgUCY3cFA25pbAUDbmlsAwkAAQIFAmRJAgooSW50LCBJbnQpBQJkSQkAAgEJAKwCAgkAAwEFAmRJAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJkWggFAmRZAl8xBAJiTggFAmRZAl8yBAJlYQMDCQBmAgUCZFIAAAkAZgIFAmRSBQJkWgcJAAIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmRSBQNuaWwCAAUCZFoEAmViAwkAAAIFAmRRBQJiVQkAlAoCBQJlYQAACQCUCgIAAAUCZWEEAmVjCAUCZWICXzEEAmVkCAUCZWICXzIEAmVlCQECYmYCCQEBQwIFAmNjBQJkVwkBAUMCBQJjYQUCZFYEAmVmCQEBRgIFAmVlBQFhBAJlZwMJAAACBQJkUQIFV0FWRVMFBHVuaXQJANkEAQUCZFEEAmVoAwkAZgIFAmJOAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUFAmJOBQJlZwUDbmlsBQNuaWwEAmNtCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYlMFAmVhBQJlZwkAzAgCCQELU3RyaW5nRW50cnkCCQEBWQIJAKUIAQUCYlMFAmJQCQECYVoGBQJlYwUCZWQFAmN3BQJlZgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVIABQJlZgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlZgUDbmlsBQJlaAMJAAACBQJjbQUCY20EAmVpCQD8BwQFAmFBAgRidXJuCQDMCAIFAmN3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJRBQJjdwUDbmlsAwkAAAIFAmVpBQJlaQkAlAoCBQJjbQUCZWEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVqAQJlawQCZWwJALYCAQACBAJlbQkAkQMCBQJlawAABAJlbgkAkQMCBQJlawABBAJlbwkApwMBBQFoBAJlcAkAuQICCQCnAwEFAmFCBQJlbwQCZXEJALcCAgUCZW0FAmVuAwkAAAIFAmVxBQFlBQFlBAJlcgkAuQICBQJlcAUCZWwKAQJlcwICZXQCZXUEAmV2BQJldAQCZXcIBQJldgJfMQQCZXgIBQJldgJfMgMJAQIhPQIFAmV4BQR1bml0BQJldAQCZXkJALoCAgkAuQICCQC5AgIFAmV3BQJldwUCZXcJALkCAgkAuQICCQC5AgIFAmVtBQJlbgUCZWwFAmVsBAJlegkAugICCQC5AgIJALcCAgkAugICCQC5AgIFAmVyBQJlcQUCZW8JALkCAgUCZXkFAmVsBQJldwkAtwICCQC6AgIJALkCAgkAuAICBQJlcgUCZW8FAmV3BQJlbwkAuQICCQC3AgIFAmVsCQC2AgEAAQUCZXkEAmVBCQEBTgEJALgCAgUCZXoJAQV2YWx1ZQEFAmV3AwkAwAICBQFmBQJlQQkAlAoCBQJlegUCZXUJAJQKAgUCZXoFBHVuaXQEAmVCCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgUDbmlsBAJlQwoAAmVEBQJlQgoAAmVFCQCQAwEFAmVECgACZUYJAJQKAgUCZXEFBHVuaXQKAQJlRwICZUgCZUkDCQBnAgUCZUkFAmVFBQJlSAkBAmVzAgUCZUgJAJEDAgUCZUQFAmVJCgECZUoCAmVIAmVJAwkAZwIFAmVJBQJlRQUCZUgJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA3CQECZUoCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCBQJlRgAAAAEAAgADAAQABQAGAAcEAmV3CAUCZUMCXzEEAmV4CAUCZUMCXzIDCQECIT0CBQJleAUEdW5pdAUCZXcJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZXcBAmVLAwJlawJkcQJlTAQCZWwJALYCAQACBAJlTQkAkQMCBQJlawMJAAACBQJkcQAAAAEAAAQCZW8JAKcDAQUBaAQCZXAJALkCAgkApwMBBQJhQgUCZW8EAmVxBQJlTQQCZXIJALkCAgUCZXAFAmVsBAJlTgkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmVMBQJlTAkAuQICBQJlTQUCZWwFAmVMBQJlbwkAuQICBQJlcgUCZWwEAmVPCQC4AgIJALcCAgUCZXEJALoCAgkAuQICBQJlTAUCZW8FAmVyBQJlTAoBAmVzAgJldAJldQQCZVAFAmV0BAJlUQgFAmVQAl8xBAJleAgFAmVQAl8yAwkBAiE9AgUCZXgFBHVuaXQFAmV0BAJlUgkAugICCQC3AgIJALkCAgUCZVEFAmVRBQJlTgkAtwICCQC5AgIJALYCAQACBQJlUQUCZU8EAmVTCQEBTgEJALgCAgUCZVIJAQV2YWx1ZQEFAmVRAwkAwAICBQFmBQJlUwkAlAoCBQJlUgUCZXUJAJQKAgUCZVIFBHVuaXQEAmVCCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVUCgACZUQFAmVCCgACZUUJAJADAQUCZUQKAAJlRgkAlAoCBQJlcQUEdW5pdAoBAmVHAgJlSAJlSQMJAGcCBQJlSQUCZUUFAmVICQECZXMCBQJlSAkAkQMCBQJlRAUCZUkKAQJlSgICZUgCZUkDCQBnAgUCZUkFAmVFBQJlSAkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZUoCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCCQECZUcCBQJlRgAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJlUQgFAmVUAl8xBAJleAgFAmVUAl8yAwkBAiE9AgUCZXgFBHVuaXQFAmVRCQACAQkArAICAhlZIGNhbGN1bGF0aW9uIGVycm9yLCBZID0gCQCmAwEFAmVRAQJlVQAEAmF1CQCiCAEJAQFQAAMJAAECBQJhdQIGU3RyaW5nBAJlcQUCYXUJANkEAQUCZXEDCQABAgUCYXUCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVYABAJhdQkAoggBCQEBUQADCQABAgUCYXUCBlN0cmluZwQCZXEFAmF1CQDZBAEFAmVxAwkAAQIFAmF1AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmVXCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmVYAQJkcQQCYXUJAQJlVQADCQABAgUCYXUCCkJ5dGVWZWN0b3IEAmVZBQJhdQMJAAACCAUCZHEPY2FsbGVyUHVibGljS2V5BQJlWQYFAmVXAwkAAQIFAmF1AgRVbml0AwkAAAIIBQJkcQZjYWxsZXIFBHRoaXMGBQJlVwkAAgECC01hdGNoIGVycm9yHwJkcQELY29uc3RydWN0b3IBAU8EAmVOCQECZVgBBQJkcQMJAAACBQJlTgUCZU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU8ABQFPBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHEBCnNldE1hbmFnZXIBAmVaBAJlTgkBAmVYAQUCZHEDCQAAAgUCZU4FAmVOBAJmYQkA2QQBBQJlWgMJAAACBQJmYQUCZmEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVEABQJlWgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRxAQ5jb25maXJtTWFuYWdlcgAEAmJLCQECZVYABAJmYgMJAQlpc0RlZmluZWQBBQJiSwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmIFAmZiBAJmYwMJAAACCAUCZHEPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJiSwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmMFAmZjCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFQAAkA2AQBCQEFdmFsdWUBBQJiSwkAzAgCCQELRGVsZXRlRW50cnkBCQEBUQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcQEDcHV0AgJmZAJmZQQCZmYJAQJhSgAEAmZnCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJmZgUBeQIKV3Igc3QgYWRkcgQCZmgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZmBQF6AgpXciBzbCBhZGRyAwkAZgIAAAUCZmQJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmRxCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmZpCQECZHMKCQClCAEIBQJkcQZjYWxsZXIJANgEAQgFAmRxDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZHEIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZHEIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRxCHBheW1lbnRzAAEFAmZkBgcGAAACAAQCY1YIBQJmaQJfMgQCZE8IBQJmaQJfNwQCY20IBQJmaQJfOQQCY1cIBQJmaQNfMTAEAmNYCAUCZmkDXzExBAJiVQgFAmZpA18xMgQCYlYIBQJmaQNfMTMEAmNJCQD8BwQFAmFBAgRlbWl0CQDMCAIFAmNWBQNuaWwFA25pbAMJAAACBQJjSQUCY0kEAmZqBAJhdQUCY0kDCQABAgUCYXUCB0FkZHJlc3MEAmZrBQJhdQkA/AcEBQJmawIEZW1pdAkAzAgCBQJjVgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZmoFAmZqBAJmbAMJAGYCBQJjVwAACQD8BwQFAmZoAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlUFAmNXBQNuaWwFA25pbAMJAAACBQJmbAUCZmwEAmZtAwkAZgIFAmNYAAAJAPwHBAUCZmgCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVgUCY1gFA25pbAUDbmlsAwkAAAIFAmZtBQJmbQQCZm4DBQJmZQQCZm8JAPwHBAUCZmcCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRPBQJjVgUDbmlsAwkAAAIFAmZvBQJmbwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkcQZjYWxsZXIFAmNWBQJkTwUDbmlsCQDOCAIFAmNtBQJmbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcQEJcHV0T25lVGtuBQJkSwJkTAJmcAJibAJmZQQCYkMJAQJhSgAEAmZnCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiQwUBeQIKV3Igc3QgYWRkcgQCZmgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJDBQF6AgpXciBzbCBhZGRyBAJmcQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkMFAUECC1dyIGd3eCBhZGRyBAJmcgkBAmFGAAQCYlUJAJEDAgUCZnIFAXMEAmJWCQCRAwIFAmZyBQF0BAJiVwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmZyBQF1BAJiWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmZyBQF2BAJmcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQECYWMAAgAEAmJTAwkAAAIFAmZzCQClCAEIBQJkcQZjYWxsZXIIBQJkcQxvcmlnaW5DYWxsZXIIBQJkcQZjYWxsZXIDAwMDCQBnAgAABQJibAYJAGcCAAAFAmRLBgkAZwIAAAUCZEwGCQBnAgAABQJmcAkAAgECDFdyb25nIHBhcmFtcwMJAQIhPQIJAJADAQgFAmRxCHBheW1lbnRzAAEJAAIBAgsxIHBtbnQgZXhwZAQCZHIJAQV2YWx1ZQEJAJEDAggFAmRxCHBheW1lbnRzAAAEAmJRCQDYBAEJAQV2YWx1ZQEIBQJkcgdhc3NldElkBAJmdAgFAmRyBmFtb3VudAQCZnUJAQJiTAEFAmZ0BAJjdwgFAmZ1Al8xBAJiTggFAmZ1Al8yAwkAZgIAgK3iBAUCZnQJAAIBAg1Xcm9uZyBwbXQgYW10BAJjYQkBAmJkAQUCYlUEAmNjCQECYmQBBQJiVgQCZnYDCQAAAgUCYlEFAmJVAwMJAGYCBQJmdAUCY2EGCQBmAgUCZEsFAmN3CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGCQBlAgUCY2EFAmZ0BQJjYwkAZQIFAmN3BQJkSwUCZEwAAAAAAwkAAAIFAmJRBQJiVgMDCQBmAgUCZnQFAmNjBgkAZgIFAmRMBQJjdwkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJgKBgUCY2EJAGUCBQJjYwUCZnQAAAAACQBlAgUCY3cFAmRMBQJkSwkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmRCCAUCZnYCXzEEAmRDCAUCZnYCXzIEAmZ3CAUCZnYCXzMEAmZ4CAUCZnYCXzQEAmZ5CAUCZnYCXzUEAmZ6CAUCZnYCXzYEAmJxCQD8BwQFAmZxAgVjYWxjRAkAzAgCCQCkAwEFAmRCCQDMCAIJAKQDAQUCZEMJAMwIAgUCYUIJAMwIAgUBaAkAzAgCBQFpBQNuaWwFA25pbAQCYnAJAPwHBAUCZnECBWNhbGNECQDMCAIJAKYDAQkAtgIBCQBlAgkAZAIFAmRCBQJmdwUCZnoJAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUCZEMFAmZ5BQJmeAkAzAgCBQJhQgkAzAgCBQFoCQDMCAIFAWkFA25pbAUDbmlsBAJmQQkBAmJvAwkApwMBCQECYXQBBQJicAkApwMBCQECYXQBBQJicQUBZwMJAAACBQJmQQUCZkEEAmRNCQECZHMKCQClCAEIBQJkcQZjYWxsZXIJANgEAQgFAmRxDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJVBQJkSwkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlYFAmRMBQJibAYGBgUCY3cFAmJRBAJkTggFAmRNAl8yBAJkTwgFAmRNAl83BAJjbQgFAmRNAl85BAJjVwgFAmRNA18xMAQCY1gIBQJkTQNfMTEEAmZCCQECYmkDCQC2AgEFAmROCQC2AgEFAmZwCQC2AgEFAmJsBAJjVgkAoAMBCAUCZkICXzIEAmZpCQD8BwQFAmFBAgRlbWl0CQDMCAIFAmNWBQNuaWwFA25pbAMJAAACBQJmaQUCZmkEAmZqBAJhdQUCZmkDCQABAgUCYXUCB0FkZHJlc3MEAmZrBQJhdQkA/AcEBQJmawIEZW1pdAkAzAgCBQJjVgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZmoFAmZqBAJmbAMJAGYCBQJjVwAACQD8BwQFAmZoAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVQUCY1cFA25pbAUDbmlsAwkAAAIFAmZsBQJmbAQCZm0DCQBmAgUCY1gAAAkA/AcEBQJmaAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlYFAmNYBQNuaWwFA25pbAMJAAACBQJmbQUCZm0EAmZuAwUCZmUEAmZvCQD8BwQFAmZnAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkTwUCY1YFA25pbAMJAAACBQJmbwUCZm8FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZHEGY2FsbGVyBQJjVgUCZE8FA25pbAQCZWgDCQBmAgUCYk4AAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRQUCYk4JANkEAQUCYlEFA25pbAUDbmlsCQDOCAIJAM4IAgUCY20FAmZuBQJlaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcQELcHV0T25lVGtuVjICAmRSAmZlAwkBAiE9AgkAkAMBCAUCZHEIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBAJkeQkBAmFGAAQCYlUJAJEDAgUCZHkFAXMEAmJWCQCRAwIFAmR5BQF0BAJkVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR5BQF1BAJkVwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR5BQF2BAJiUwMJAAACCAUCZHEGY2FsbGVyBQR0aGlzCAUCZHEMb3JpZ2luQ2FsbGVyCAUCZHEGY2FsbGVyBAJkcgkBBXZhbHVlAQkAkQMCCAUCZHEIcGF5bWVudHMAAAQCYlEJANgEAQkBBXZhbHVlAQgFAmRyB2Fzc2V0SWQEAmN3CAUCZHIGYW1vdW50AwkAZgIAgK3iBAUCY3cJAAIBAg1Xcm9uZyBwbXQgYW10BAJjSQkBAmR3BAUCY3cFAmJRCQClCAEFAmJTCQDYBAEIBQJkcQ10cmFuc2FjdGlvbklkBAJkTggFAmNJAl8yBAJkTwgFAmNJAl83BAJjbQgFAmNJAl85BAJjVwgFAmNJA18xMAQCY1gIBQJjSQNfMTEEAmNWAwMJAGYCBQJkUgAACQBmAgUCZFIFAmROBwkAAgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZFIFA25pbAIABQJkTgQCZmkJAPwHBAUCYUECBGVtaXQJAMwIAgUCY1YFA25pbAUDbmlsAwkAAAIFAmZpBQJmaQQCZmoEAmF1BQJmaQMJAAECBQJhdQIHQWRkcmVzcwQCZmsFAmF1CQD8BwQFAmZrAgRlbWl0CQDMCAIFAmNWBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmagUCZmoEAmZsAwkAZgIFAmNXAAAJAPwHBAUCYU0CA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJVBQJjVwUDbmlsBQNuaWwDCQAAAgUCZmwFAmZsBAJmbQMJAGYCBQJjWAAACQD8BwQFAmFNAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVgUCY1gFA25pbAUDbmlsAwkAAAIFAmZtBQJmbQQCZm4DBQJmZQQCZm8JAPwHBAUCYUwCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRPBQJjVgUDbmlsAwkAAAIFAmZvBQJmbwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkcQZjYWxsZXIFAmNWBQJkTwUDbmlsBAJiTggJAQJiTAEFAmN3Al8yBAJlaAMJAGYCBQJiTgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFFBQJiTgkA2QQBBQJiUQUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNtBQJmbgUCZWgFAmNWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRxARZwdXRPbmVUa25WMk9sZFJFQURPTkxZAgJmQwJmRAQCY0kJAQJkdwQFAmZDBQJmRAIAAgAEAmROCAUCY0kCXzIEAmRPCAUCY0kCXzcEAmNtCAUCY0kCXzkEAmNXCAUCY0kDXzEwBAJjWAgFAmNJA18xMQkAlAoCBQNuaWwFAmROAmRxARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJmQwJmRAQCZHkJAQJhRgAEAmJVCQCRAwIFAmR5BQFzBAJiVgkAkQMCBQJkeQUBdAQCY0kJAQJkdwQFAmZDBQJmRAIAAgAEAmROCAUCY0kCXzIEAmNmCAUCY0kCXzMEAmZFCAUCY0kCXzYEAmRPCAUCY0kCXzcEAmNhCQECYmQBBQJiVQQCY2MJAQJiZAEFAmJWBAJmRgkAawMFAmNjBQFhBQJjYQQCZkcJAGsDBQJmQwUBYQkAZAIFAmZGBQFhBAJmSAkAZQIFAmZDBQJmRwQCZkkJAGsDBQJmRQUCZkgFAmNjBAJmSgkAawMJAGUCBQJkTgUCZkkFAWEFAmZJBAJiTggJAQJiTAEFAmZDAl8yCQCUCgIFA25pbAkAlQoDBQJkTgUCYk4FAmZKAmRxAQpwdXRGb3JGcmVlAQJmSwMJAGYCAAAFAmZLCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmRxCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmRNCQECZHMKCQClCAEIBQJkcQZjYWxsZXIJANgEAQgFAmRxDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZHEIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZHEIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRxCHBheW1lbnRzAAEFAmZLBwcGAAACAAgFAmRNAl85AmRxAQNnZXQABAJjSQkBAmRwAQUCZHEEAmZMCAUCY0kCXzEEAmNsCAUCY0kCXzIEAmN3CAUCY0kCXzMEAmJRCAUCY0kCXzQEAmNtCAUCY0kCXzUEAmVPCQD8BwQFAmFBAgRidXJuCQDMCAIFAmN3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJRBQJjdwUDbmlsAwkAAAIFAmVPBQJlTwUCY20JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHEBCWdldE9uZVRrbgUCZk0CZk4CZk8CZFECYmwDCQECIT0CCQCQAwEIBQJkcQhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEAmJDCQECYUYABAJiVAkAkQMCBQJiQwUBcgQCYlUJAJEDAgUCYkMFAXMEAmJWCQCRAwIFAmJDBQF0BAJiVwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJDBQF1BAJiWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJDBQF2BAJiWQkAkQMCBQJiQwUBcQQCZmYJAQJhSgAEAmZxCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJmZgUBQQIKV3Igc2wgYWRkcgQCZHIJAQV2YWx1ZQEJAJEDAggFAmRxCHBheW1lbnRzAAAEAmZzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQJhYwACAAQCYlMDCQAAAgUCZnMJAKUIAQgFAmRxBmNhbGxlcggFAmRxDG9yaWdpbkNhbGxlcggFAmRxBmNhbGxlcgQCYlAJANgEAQgFAmRxDXRyYW5zYWN0aW9uSWQEAmJRCQEFdmFsdWUBCAUCZHIHYXNzZXRJZAQCY3cIBQJkcgZhbW91bnQDCQBmAgCAlOvcAwUCY3cJAAIBAg1NaW4gcG10IDEwIExQAwMDCQBmAgAABQJibAYJAGYCAAAFAmZNBgkAZgIAAAUCZk8JAAIBAgxXcm9uZyBwYXJhbXMDCQECIT0CBQJiVAkA2AQBBQJiUQkAAgECCFdyb25nIExQBAJjSQkBAmJPBAkA2AQBCAUCZHENdHJhbnNhY3Rpb25JZAkA2AQBBQJiUQUCY3cIBQJkcQZjYWxsZXIEAmZQCAUCY0kCXzEEAmZRCAUCY0kCXzIEAmNhCQECYmQBBQJiVQQCY2MJAQJiZAEFAmJWBAJmUgMJAAACBQJkUQUCYlUJAJkKBwkAZQIFAmNhBQJmUAkAZQIFAmNjBQJmUQUCZk0FAmZRAAAAAAkAZAIFAmZQBQJmTQMJAAACBQJkUQUCYlYJAJkKBwkAZQIFAmNhBQJmUAkAZQIFAmNjBQJmUQAAAAAFAmZNBQJmUAkAZAIFAmZRBQJmTQkAAgECEHdyb25nIG91dEFzc2V0SWQEAmRCCAUCZlICXzEEAmRDCAUCZlICXzIEAmZ3CAUCZlICXzMEAmZ4CAUCZlICXzQEAmZ5CAUCZlICXzUEAmZ6CAUCZlICXzYEAmZTCAUCZlICXzcDAwkAZgIAAAUCZncGCQBmAgAABQJmeQkAAgECCldyb25nIGNhbGMEAmJxCQD8BwQFAmZxAgVjYWxjRAkAzAgCCQCkAwEFAmRCCQDMCAIJAKQDAQUCZEMJAMwIAgUCYUIJAMwIAgUBaAkAzAgCBQFpBQNuaWwFA25pbAQCYnAJAPwHBAUCZnECBWNhbGNECQDMCAIJAKQDAQkAZAIJAGUCBQJkQgUCZncFAmZ6CQDMCAIJAKQDAQkAZQIJAGQCBQJkQwUCZngFAmZ5CQDMCAIFAmFCCQDMCAIFAWgJAMwIAgUBaQUDbmlsBQNuaWwEAmZBCQECYm8DCQCnAwEJAQJhdAEFAmJwCQCnAwEJAQJhdAEFAmJxBQFnAwkAAAIFAmZBBQJmQQQCZFoICQECYkwBBQJmUwJfMQQCZlQJAQJiaQMJALYCAQUCZFoJALYCAQUCZk8JALYCAQUCYmwDCQAAAgUCZlQFAmZUBAJmVQMJAAACBQJkUQUCYlUJAJQKAgkAoAMBCAUCZlQCXzIAAAkAlAoCAAAJAKADAQgFAmZUAl8yBAJlYwgFAmZVAl8xBAJlZAgFAmZVAl8yBAJlYQkAZAIFAmVjBQJlZAQCYk4JAGUCBQJmUwUCZFoEAmVnAwkAAAIFAmRRAgVXQVZFUwUEdW5pdAkA2QQBBQJkUQQCZWgDCQBmAgUCYk4AAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRQUCYk4FAmVnBQNuaWwFA25pbAQCZWUJAQJiZgIJAQFDAgUCY2MFAmJYCQEBQwIFAmNhBQJiVwQCZWYJAQFGAgUCZWUFAWEEAmNtCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJTBQJlYQUCZWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCCQClCAEFAmJTBQJiUAkBAmFaBgUCZWMFAmVkBQJjdwUCZWYFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFSAAUCZWYJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWYFA25pbAMJAAACBQJjbQUCY20EAmVpCQD8BwQFAmFBAgRidXJuCQDMCAIFAmN3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJRBQJjdwUDbmlsAwkAAAIFAmVpBQJlaQkAzggCBQJjbQUCZWgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHEBC2dldE9uZVRrblYyAgJkUQJkUgQCZlYJAQJkUAYFAmRRBQJkUggFAmRxCHBheW1lbnRzCAUCZHEGY2FsbGVyCAUCZHEMb3JpZ2luQ2FsbGVyCAUCZHENdHJhbnNhY3Rpb25JZAQCY20IBQJmVgJfMQQCZWEIBQJmVgJfMgkAlAoCBQJjbQUCZWECZHEBFmdldE9uZVRrblYyT2xkUkVBRE9OTFkCAmRRAmZXBAJkeQkBAmFGAAQCYlQJAJEDAgUCZHkFAXIEAmJVCQCRAwIFAmR5BQFzBAJiVgkAkQMCBQJkeQUBdAQCY0kJAQJiTwQCAAUCYlQFAmZXBQR0aGlzBAJmUAgFAmNJAl8xBAJmUQgFAmNJAl8yBAJjYQkBAmJkAQUCYlUEAmNjCQECYmQBBQJiVgQCZEIJAGUCBQJjYQUCZlAEAmRDCQBlAgUCY2MFAmZRBAJmWAMJAAACBQJkUQUCYlUJAJYKBAUCZEMFAmRCBQJmUQUCZlADCQAAAgUCZFEFAmJWCQCWCgQFAmRCBQJkQwUCZlAFAmZRCQACAQIQd3Jvbmcgb3V0QXNzZXRJZAQCZlkIBQJmWAJfMQQCZloIBQJmWAJfMgQCZ2EIBQJmWAJfMwQCZ2IIBQJmWAJfNAQCZ2MAAQQCZk0KAAJkSQkA/AcEBQJhTgIMY2FsY1N3YXBYVG9ZCQDMCAIJAKQDAQUCZ2EJAMwIAgkApAMBBQJmWQkAzAgCCQCkAwEFAmZaCQDMCAICAAkAzAgCBQJhQgkAzAgCBQFoCQDMCAIJAKQDAQUCZ2MJAMwIAgUBaQUDbmlsBQNuaWwDCQABAgUCZEkCA0ludAUCZEkJAAIBCQCsAgIJAAMBBQJkSQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJmUwkAZAIFAmZNBQJnYgQCZ2QJAQJiTAEFAmZTBAJkWggFAmdkAl8xBAJiTggFAmdkAl8yCQCUCgIFA25pbAkAlAoCBQJkWgUCYk4CZHEBE2dldE9uZVRrblYyUkVBRE9OTFkCAmRRAmZXBAJkeQkBAmFGAAQCYlUJAJEDAgUCZHkFAXMEAmJWCQCRAwIFAmR5BQF0BAJiVAkAkQMCBQJkeQUBcgQCZWsJAMwIAgkAtgIBCQECYmQBBQJiVQkAzAgCCQC2AgEJAQJiZAEFAmJWBQNuaWwEAmdlCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiVAIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCYnEJAQJlagEFAmVrBAJicAkAuAICBQJicQkAugICCQC5AgIJALYCAQUCZlcFAmJxBQJnZQQCZ2YDCQAAAgUCZFEFAmJVAAAAAQQCZ2cJAQJlSwMFAmVrBQJnZgUCYnAEAmdoCQC4AgIJAJEDAgUCZWsFAmdmBQJnZwQCZlMJAKADAQkAuAICBQJnaAUBZgQCZ2kJAQJiTAEFAmZTBAJkWggFAmdpAl8xBAJiTggFAmdpAl8yCQCUCgIFA25pbAkAlAoCBQJkWgUCYk4CZHEBHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmRRAmZXBAJkeQkBAmFGAAQCYlUJAJEDAgUCZHkFAXMEAmJWCQCRAwIFAmR5BQF0BAJiVAkAkQMCBQJkeQUBcgQCY2EJAQJiZAEFAmJVBAJjYwkBAmJkAQUCYlYEAmdqCgACZEkJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJkUQkAzAgCBQJmVwUDbmlsBQNuaWwDCQABAgUCZEkCCihJbnQsIEludCkFAmRJCQACAQkArAICCQADAQUCZEkCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmRaCAUCZ2oCXzEEAmJOCAUCZ2oCXzIEAmNJCQECYk8EAgAFAmJUBQJmVwUEdGhpcwQCY2sIBQJjSQJfMQQCY2wIBQJjSQJfMgQCZ2sJAGQCBQJjawUCY2wEAmZKCQBrAwkAZQIFAmRaBQJnawUBYQUCZ2sJAJQKAgUDbmlsCQCVCgMFAmRaBQJiTgUCZkoCZHEBCWdldE5vTGVzcwICZ2wCZ20EAmNJCQECZHABBQJkcQQCY2sIBQJjSQJfMQQCY2wIBQJjSQJfMgQCY3cIBQJjSQJfMwQCYlEIBQJjSQJfNAQCY20IBQJjSQJfNQMJAGYCBQJnbAUCY2sJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY2sCAyA8IAkApAMBBQJnbAMJAGYCBQJnbQUCY2wJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjbAIDIDwgCQCkAwEFAmdtBAJnbgkA/AcEBQJhQQIEYnVybgkAzAgCBQJjdwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiUQUCY3cFA25pbAMJAAACBQJnbgUCZ24FAmNtCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRxAQ11bnN0YWtlQW5kR2V0AQJiTQQCZ28DCQECIT0CCQCQAwEIBQJkcQhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZ28FAmdvBAJiQwkBAmFGAAQCZ3AJAQJhSgAEAmRPCQDZBAEJAJEDAgUCYkMFAXIEAmdxCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJncAUBeQIKV3Igc3QgYWRkcgQCZ3IJAPwHBAUCZ3ECB3Vuc3Rha2UJAMwIAgkA2AQBBQJkTwkAzAgCBQJiTQUDbmlsBQNuaWwDCQAAAgUCZ3IFAmdyBAJjSQkBAmJPBAkA2AQBCAUCZHENdHJhbnNhY3Rpb25JZAkA2AQBBQJkTwUCYk0IBQJkcQZjYWxsZXIEAmJZCQENcGFyc2VJbnRWYWx1ZQEIBQJjSQJfOQQCY20IBQJjSQNfMTAEAmdzAwMJAQJhQwAGCQAAAgUCYlkFAW8JAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJiWQYDCQAAAgUCZ3MFAmdzBAJndAkA/AcEBQJhQQIEYnVybgkAzAgCBQJiTQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkTwUCYk0FA25pbAMJAAACBQJndAUCZ3QFAmNtCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRxARN1bnN0YWtlQW5kR2V0T25lVGtuAwJndQJkUQJkUgQCZ28DCQECIT0CCQCQAwEIBQJkcQhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZ28FAmdvBAJiQwkBAmFGAAQCZ3AJAQJhSgAEAmRPCQDZBAEJAJEDAgUCYkMFAXIEAmdxCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJncAUBeQIKV3Igc3QgYWRkcgQCZ3IJAPwHBAUCZ3ECB3Vuc3Rha2UJAMwIAgkA2AQBBQJkTwkAzAgCBQJndQUDbmlsBQNuaWwDCQAAAgUCZ3IFAmdyBAJndgkBAmRQBgUCZFEFAmRSCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkTwUCZ3UFA25pbAgFAmRxBmNhbGxlcggFAmRxDG9yaWdpbkNhbGxlcggFAmRxDXRyYW5zYWN0aW9uSWQEAmNtCAUCZ3YCXzEEAmVhCAUCZ3YCXzIJAJQKAgUCY20FAmVhCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRxARNwdXRPbmVUa25WMlJFQURPTkxZAgJiTQJndwQCZHkJAQJhRgAEAmJVCQCRAwIFAmR5BQFzBAJiVgkAkQMCBQJkeQUBdAQCYlQJAJEDAgUCZHkFAXIEAmd4BQJndwQCZnQFAmJNBAJneQkBAmJMAQUCZnQEAmZDCAUCZ3kCXzEEAmJOCAUCZ3kCXzIEAmd6AwkAAAIFAmd4BQJiVQkAlAoCBQJmQwAAAwkAAAIFAmd4BQJiVgkAlAoCAAAFAmZDCQACAQIPaW52YWxpZCBwYXltZW50BAJnQQgFAmd6Al8xBAJnQggFAmd6Al8yBAJnQwkBAmJkAQUCYlUEAmdECQECYmQBBQJiVgQCZ0UJAGQCBQJnQwUCZ0EEAmdGCQBkAgUCZ0MFAmdCBAJicQkBAmVqAQkAzAgCCQC2AgEFAmdDCQDMCAIJALYCAQUCZ0QFA25pbAQCYnAJAQJlagEJAMwIAgkAtgIBBQJnRQkAzAgCCQC2AgEFAmdGBQNuaWwEAmdlCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiVAIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZ0cJALoCAgkAuQICBQJnZQkAuAICBQJicAUCYnEFAmJxCQCUCgIFA25pbAkAoAMBBQJnRwJkcQEIYWN0aXZhdGUCAmdIAmdJAwkBAiE9AgkApQgBCAUCZHEGY2FsbGVyCQClCAEFAmFBCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoABQJnSAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQJnSQUDbmlsAgdzdWNjZXNzAmRxAQRzZXRTAgJnSgJncwMJAQIhPQIJAKUIAQgFAmRxBmNhbGxlcgkBAmF3AgUEdGhpcwkBAmFjAAUCZVcJAMwIAgkBC1N0cmluZ0VudHJ5AgUCZ0oFAmdzBQNuaWwCZHEBBHNldEkCAmdKAmdzAwkBAiE9AgkApQgBCAUCZHEGY2FsbGVyCQECYXcCBQR0aGlzCQECYWMABQJlVwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZ0oFAmdzBQNuaWwCZHEBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFGAAJkcQEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYmUJAJQKAgUDbmlsCQECYmQBBQJiZQJkcQEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYncCYngCYkIEAmdLCQECYkEDBQJidwUCYngFAmJCCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCZ0sAAAkAzAgCCQCmAwEJAJEDAgUCZ0sAAQkAzAgCCQCmAwEJAJEDAgUCZ0sAAgUDbmlsAmRxARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFHAmdMCQCUCgIFA25pbAkBAUYCCQCnAwEFAUcFAmdMAmRxARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRAFFCQCUCgIFA25pbAkApgMBCQEBQwIFAUQFAUUCZHEBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYmcCYmgJAJQKAgUDbmlsCQCmAwEJAQJiZgIJAKcDAQUCYmcJAKcDAQUCYmgCZHEBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiUAJibAJjbwJjcAJjcQJjcgJnTQJjcwJjdAkAlAoCBQNuaWwJAQJjbg0FAmJQBQJibAUCY28FAmNwBQJjcQUCY3IFAmdNBQJjcwUCY3QGBwAAAgACZHEBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJiUAJnTgJiUgJnTQQCY0kJAQJiTwQFAmJQBQJnTgUCYlIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdNCQCUCgIFA25pbAkAnAoKCAUCY0kCXzEIBQJjSQJfMggFAmNJAl8zCAUCY0kCXzQIBQJjSQJfNQgFAmNJAl82CAUCY0kCXzcJAKYDAQgFAmNJAl84CAUCY0kCXzkIBQJjSQNfMTACZHEBDmdldEZlZVJFQURPTkxZAAkAlAoCBQNuaWwFAmFlAQJnTwECZ1AABAJnUQQCYXUJAQJlVQADCQABAgUCYXUCCkJ5dGVWZWN0b3IEAmVZBQJhdQUCZVkDCQABAgUCYXUCBFVuaXQIBQJnTw9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYXUFAmdPAwkAAQIFAmF1AgVPcmRlcgQCZGQFAmF1BAJnUgkBAmFEAAQCZ1MJAQJkYwEFAmRkBAJnVAkA9AMDCAUCZGQJYm9keUJ5dGVzCQCRAwIIBQJkZAZwcm9vZnMAAAgFAmRkD3NlbmRlclB1YmxpY0tleQQCZ1UJAPQDAwgFAmRkCWJvZHlCeXRlcwkAkQMCCAUCZGQGcHJvb2ZzAAEFAmdSAwMDBQJnUwUCZ1QHBQJnVQcGCQECYXADBQJnUwUCZ1QFAmdVAwkAAQIFAmF1AhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZXEFAmF1BAJnVgkA9gMBCQEFdmFsdWUBCAUCZXEGc2NyaXB0BAJnVwkA2wQBCQEFdmFsdWUBCQCdCAIFAmFBCQECYW4ABAJnWAkA8QcBBQR0aGlzAwMJAAACBQJnVwUCZ1YJAQIhPQIFAmdYBQJnVgcGCQD0AwMIBQJnTwlib2R5Qnl0ZXMJAJEDAggFAmdPBnByb29mcwAABQJnUQkA9AMDCAUCZ08JYm9keUJ5dGVzCQCRAwIIBQJnTwZwcm9vZnMAAAUCZ1GQDnED", "chainId": 84, "height": 2260237, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3ppjAW5aoof9hAMn2ybH48vyf8RhKxBYPqJJKpiLZj65 Next: 5XGzi9cqEmgov9qmND2Fm4hBAoQwJQCiwKHcnPKGmPZ Diff:
OldNewDifferences
625625 }
626626
627627
628-func eK () = {
628+func eK (ek,dq,eL) = {
629+ let el = toBigInt(2)
630+ let eM = ek[if ((dq == 0))
631+ then 1
632+ else 0]
633+ let eo = parseBigIntValue(h)
634+ let ep = (parseBigIntValue(aB) * eo)
635+ let eq = eM
636+ let er = (ep * el)
637+ let eN = (((((eL * eL) / (eM * el)) * eL) * eo) / (er * el))
638+ let eO = ((eq + ((eL * eo) / er)) - eL)
639+ func es (et,eu) = {
640+ let eP = et
641+ let eQ = eP._1
642+ let ex = eP._2
643+ if ((ex != unit))
644+ then et
645+ else {
646+ let eR = (((eQ * eQ) + eN) / ((toBigInt(2) * eQ) + eO))
647+ let eS = N((eR - value(eQ)))
648+ if ((f >= eS))
649+ then $Tuple2(eR, eu)
650+ else $Tuple2(eR, unit)
651+ }
652+ }
653+
654+ let eB = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
655+ let eT = {
656+ let eD = eB
657+ let eE = size(eD)
658+ let eF = $Tuple2(eq, unit)
659+ func eG (eH,eI) = if ((eI >= eE))
660+ then eH
661+ else es(eH, eD[eI])
662+
663+ func eJ (eH,eI) = if ((eI >= eE))
664+ then eH
665+ else throw("List size exceeds 15")
666+
667+ eJ(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eF, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
668+ }
669+ let eQ = eT._1
670+ let ex = eT._2
671+ if ((ex != unit))
672+ then eQ
673+ else throw(("Y calculation error, Y = " + toString(eQ)))
674+ }
675+
676+
677+func eU () = {
629678 let au = getString(P())
630679 if ($isInstanceOf(au, "String"))
631680 then {
638687 }
639688
640689
641-func eL () = {
690+func eV () = {
642691 let au = getString(Q())
643692 if ($isInstanceOf(au, "String"))
644693 then {
651700 }
652701
653702
654-let eM = throw("Permission denied")
703+let eW = throw("Permission denied")
655704
656-func eN (dq) = {
657- let au = eK()
705+func eX (dq) = {
706+ let au = eU()
658707 if ($isInstanceOf(au, "ByteVector"))
659708 then {
660- let eO = au
661- if ((dq.callerPublicKey == eO))
709+ let eY = au
710+ if ((dq.callerPublicKey == eY))
662711 then true
663- else eM
712+ else eW
664713 }
665714 else if ($isInstanceOf(au, "Unit"))
666715 then if ((dq.caller == this))
667716 then true
668- else eM
717+ else eW
669718 else throw("Match error")
670719 }
671720
672721
673722 @Callable(dq)
674723 func constructor (O) = {
675- let eP = eN(dq)
676- if ((eP == eP))
724+ let eN = eX(dq)
725+ if ((eN == eN))
677726 then [StringEntry(O(), O)]
678727 else throw("Strict value is not equal to itself.")
679728 }
681730
682731
683732 @Callable(dq)
684-func setManager (eQ) = {
685- let eP = eN(dq)
686- if ((eP == eP))
733+func setManager (eZ) = {
734+ let eN = eX(dq)
735+ if ((eN == eN))
687736 then {
688- let eR = fromBase58String(eQ)
689- if ((eR == eR))
690- then [StringEntry(Q(), eQ)]
737+ let fa = fromBase58String(eZ)
738+ if ((fa == fa))
739+ then [StringEntry(Q(), eZ)]
691740 else throw("Strict value is not equal to itself.")
692741 }
693742 else throw("Strict value is not equal to itself.")
697746
698747 @Callable(dq)
699748 func confirmManager () = {
700- let bK = eL()
701- let eS = if (isDefined(bK))
749+ let bK = eV()
750+ let fb = if (isDefined(bK))
702751 then true
703752 else throw("No pending manager")
704- if ((eS == eS))
753+ if ((fb == fb))
705754 then {
706- let eT = if ((dq.callerPublicKey == value(bK)))
755+ let fc = if ((dq.callerPublicKey == value(bK)))
707756 then true
708757 else throw("You are not pending manager")
709- if ((eT == eT))
758+ if ((fc == fc))
710759 then [StringEntry(P(), toBase58String(value(bK))), DeleteEntry(Q())]
711760 else throw("Strict value is not equal to itself.")
712761 }
716765
717766
718767 @Callable(dq)
719-func put (eU,eV) = {
720- let eW = aJ()
721- let eX = valueOrErrorMessage(addressFromString(eW[y]), "Wr st addr")
722- let eY = valueOrErrorMessage(addressFromString(eW[z]), "Wr sl addr")
723- if ((0 > eU))
768+func put (fd,fe) = {
769+ let ff = aJ()
770+ let fg = valueOrErrorMessage(addressFromString(ff[y]), "Wr st addr")
771+ let fh = valueOrErrorMessage(addressFromString(ff[z]), "Wr sl addr")
772+ if ((0 > fd))
724773 then throw("Wrong slippage")
725774 else if ((size(dq.payments) != 2))
726775 then throw("2 pmnts expd")
727776 else {
728- let eZ = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], eU, true, false, true, 0, "")
729- let cV = eZ._2
730- let dO = eZ._7
731- let cm = eZ._9
732- let cW = eZ._10
733- let cX = eZ._11
734- let bU = eZ._12
735- let bV = eZ._13
777+ let fi = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], fd, true, false, true, 0, "")
778+ let cV = fi._2
779+ let dO = fi._7
780+ let cm = fi._9
781+ let cW = fi._10
782+ let cX = fi._11
783+ let bU = fi._12
784+ let bV = fi._13
736785 let cI = invoke(aA, "emit", [cV], nil)
737786 if ((cI == cI))
738787 then {
739- let fa = {
788+ let fj = {
740789 let au = cI
741790 if ($isInstanceOf(au, "Address"))
742791 then {
743- let fb = au
744- invoke(fb, "emit", [cV], nil)
792+ let fk = au
793+ invoke(fk, "emit", [cV], nil)
745794 }
746795 else unit
747796 }
748- if ((fa == fa))
797+ if ((fj == fj))
749798 then {
750- let fc = if ((cW > 0))
751- then invoke(eY, "put", nil, [AttachedPayment(bU, cW)])
799+ let fl = if ((cW > 0))
800+ then invoke(fh, "put", nil, [AttachedPayment(bU, cW)])
752801 else nil
753- if ((fc == fc))
802+ if ((fl == fl))
754803 then {
755- let fd = if ((cX > 0))
756- then invoke(eY, "put", nil, [AttachedPayment(bV, cX)])
804+ let fm = if ((cX > 0))
805+ then invoke(fh, "put", nil, [AttachedPayment(bV, cX)])
757806 else nil
758- if ((fd == fd))
807+ if ((fm == fm))
759808 then {
760- let fe = if (eV)
809+ let fn = if (fe)
761810 then {
762- let ff = invoke(eX, "stake", nil, [AttachedPayment(dO, cV)])
763- if ((ff == ff))
811+ let fo = invoke(fg, "stake", nil, [AttachedPayment(dO, cV)])
812+ if ((fo == fo))
764813 then nil
765814 else throw("Strict value is not equal to itself.")
766815 }
767816 else [ScriptTransfer(dq.caller, cV, dO)]
768- (cm ++ fe)
817+ (cm ++ fn)
769818 }
770819 else throw("Strict value is not equal to itself.")
771820 }
780829
781830
782831 @Callable(dq)
783-func putOneTkn (dK,dL,fg,bl,eV) = {
832+func putOneTkn (dK,dL,fp,bl,fe) = {
784833 let bC = aJ()
785- let eX = valueOrErrorMessage(addressFromString(bC[y]), "Wr st addr")
786- let eY = valueOrErrorMessage(addressFromString(bC[z]), "Wr sl addr")
787- let fh = valueOrErrorMessage(addressFromString(bC[A]), "Wr gwx addr")
788- let fi = aF()
789- let bU = fi[s]
790- let bV = fi[t]
791- let bW = parseIntValue(fi[u])
792- let bX = parseIntValue(fi[v])
793- let fj = valueOrElse(getString(this, ac()), "")
794- let bS = if ((fj == toString(dq.caller)))
834+ let fg = valueOrErrorMessage(addressFromString(bC[y]), "Wr st addr")
835+ let fh = valueOrErrorMessage(addressFromString(bC[z]), "Wr sl addr")
836+ let fq = valueOrErrorMessage(addressFromString(bC[A]), "Wr gwx addr")
837+ let fr = aF()
838+ let bU = fr[s]
839+ let bV = fr[t]
840+ let bW = parseIntValue(fr[u])
841+ let bX = parseIntValue(fr[v])
842+ let fs = valueOrElse(getString(this, ac()), "")
843+ let bS = if ((fs == toString(dq.caller)))
795844 then dq.originCaller
796845 else dq.caller
797846 if (if (if (if ((0 >= bl))
800849 then true
801850 else (0 >= dL))
802851 then true
803- else (0 >= fg))
852+ else (0 >= fp))
804853 then throw("Wrong params")
805854 else if ((size(dq.payments) != 1))
806855 then throw("1 pmnt expd")
807856 else {
808857 let dr = value(dq.payments[0])
809858 let bQ = toBase58String(value(dr.assetId))
810- let fk = dr.amount
811- let fl = bL(fk)
812- let cw = fl._1
813- let bN = fl._2
814- if ((10000000 > fk))
859+ let ft = dr.amount
860+ let fu = bL(ft)
861+ let cw = fu._1
862+ let bN = fu._2
863+ if ((10000000 > ft))
815864 then throw("Wrong pmt amt")
816865 else {
817866 let ca = bd(bU)
818867 let cc = bd(bV)
819- let fm = if ((bQ == bU))
820- then if (if ((fk > ca))
868+ let fv = if ((bQ == bU))
869+ then if (if ((ft > ca))
821870 then true
822871 else (dK > cw))
823872 then throw("invalid payment amount")
824- else $Tuple6((ca - fk), cc, (cw - dK), dL, 0, 0)
873+ else $Tuple6((ca - ft), cc, (cw - dK), dL, 0, 0)
825874 else if ((bQ == bV))
826- then if (if ((fk > cc))
875+ then if (if ((ft > cc))
827876 then true
828877 else (dL > cw))
829878 then throw("invalid payment amount")
830- else $Tuple6(ca, (cc - fk), 0, 0, (cw - dL), dK)
879+ else $Tuple6(ca, (cc - ft), 0, 0, (cw - dL), dK)
831880 else throw("wrong pmtAssetId")
832- let dB = fm._1
833- let dC = fm._2
834- let fn = fm._3
835- let fo = fm._4
836- let fp = fm._5
837- let fq = fm._6
838- let bq = invoke(fh, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
839- let bp = invoke(fh, "calcD", [toString(toBigInt(((dB + fn) - fq))), toString(toBigInt(((dC + fp) - fo))), aB, h, i], nil)
840- let fr = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
841- if ((fr == fr))
881+ let dB = fv._1
882+ let dC = fv._2
883+ let fw = fv._3
884+ let fx = fv._4
885+ let fy = fv._5
886+ let fz = fv._6
887+ let bq = invoke(fq, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
888+ let bp = invoke(fq, "calcD", [toString(toBigInt(((dB + fw) - fz))), toString(toBigInt(((dC + fy) - fx))), aB, h, i], nil)
889+ let fA = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
890+ if ((fA == fA))
842891 then {
843892 let dM = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(fromBase58String(bU), dK), AttachedPayment(fromBase58String(bV), dL), bl, true, true, true, cw, bQ)
844893 let dN = dM._2
846895 let cm = dM._9
847896 let cW = dM._10
848897 let cX = dM._11
849- let fs = bi(toBigInt(dN), toBigInt(fg), toBigInt(bl))
850- let cV = toInt(fs._2)
851- let eZ = invoke(aA, "emit", [cV], nil)
852- if ((eZ == eZ))
898+ let fB = bi(toBigInt(dN), toBigInt(fp), toBigInt(bl))
899+ let cV = toInt(fB._2)
900+ let fi = invoke(aA, "emit", [cV], nil)
901+ if ((fi == fi))
853902 then {
854- let fa = {
855- let au = eZ
903+ let fj = {
904+ let au = fi
856905 if ($isInstanceOf(au, "Address"))
857906 then {
858- let fb = au
859- invoke(fb, "emit", [cV], nil)
907+ let fk = au
908+ invoke(fk, "emit", [cV], nil)
860909 }
861910 else unit
862911 }
863- if ((fa == fa))
912+ if ((fj == fj))
864913 then {
865- let fc = if ((cW > 0))
866- then invoke(eY, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
914+ let fl = if ((cW > 0))
915+ then invoke(fh, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
867916 else nil
868- if ((fc == fc))
917+ if ((fl == fl))
869918 then {
870- let fd = if ((cX > 0))
871- then invoke(eY, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
919+ let fm = if ((cX > 0))
920+ then invoke(fh, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
872921 else nil
873- if ((fd == fd))
922+ if ((fm == fm))
874923 then {
875- let fe = if (eV)
924+ let fn = if (fe)
876925 then {
877- let ff = invoke(eX, "stake", nil, [AttachedPayment(dO, cV)])
878- if ((ff == ff))
926+ let fo = invoke(fg, "stake", nil, [AttachedPayment(dO, cV)])
927+ if ((fo == fo))
879928 then nil
880929 else throw("Strict value is not equal to itself.")
881930 }
883932 let eh = if ((bN > 0))
884933 then [ScriptTransfer(aE, bN, fromBase58String(bQ))]
885934 else nil
886- ((cm ++ fe) ++ eh)
935+ ((cm ++ fn) ++ eh)
887936 }
888937 else throw("Strict value is not equal to itself.")
889938 }
901950
902951
903952 @Callable(dq)
904-func putOneTknV2 (dR,eV) = if ((size(dq.payments) != 1))
953+func putOneTknV2 (dR,fe) = if ((size(dq.payments) != 1))
905954 then throw("1 pmnt expd")
906955 else {
907956 let dy = aF()
929978 else false)
930979 then throw(makeString(["amount to receive is less than ", toString(dR)], ""))
931980 else dN
932- let eZ = invoke(aA, "emit", [cV], nil)
933- if ((eZ == eZ))
981+ let fi = invoke(aA, "emit", [cV], nil)
982+ if ((fi == fi))
934983 then {
935- let fa = {
936- let au = eZ
984+ let fj = {
985+ let au = fi
937986 if ($isInstanceOf(au, "Address"))
938987 then {
939- let fb = au
940- invoke(fb, "emit", [cV], nil)
988+ let fk = au
989+ invoke(fk, "emit", [cV], nil)
941990 }
942991 else unit
943992 }
944- if ((fa == fa))
993+ if ((fj == fj))
945994 then {
946- let fc = if ((cW > 0))
995+ let fl = if ((cW > 0))
947996 then invoke(aM, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
948997 else nil
949- if ((fc == fc))
998+ if ((fl == fl))
950999 then {
951- let fd = if ((cX > 0))
1000+ let fm = if ((cX > 0))
9521001 then invoke(aM, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
9531002 else nil
954- if ((fd == fd))
1003+ if ((fm == fm))
9551004 then {
956- let fe = if (eV)
1005+ let fn = if (fe)
9571006 then {
958- let ff = invoke(aL, "stake", nil, [AttachedPayment(dO, cV)])
959- if ((ff == ff))
1007+ let fo = invoke(aL, "stake", nil, [AttachedPayment(dO, cV)])
1008+ if ((fo == fo))
9601009 then nil
9611010 else throw("Strict value is not equal to itself.")
9621011 }
9651014 let eh = if ((bN > 0))
9661015 then [ScriptTransfer(aE, bN, fromBase58String(bQ))]
9671016 else nil
968- $Tuple2(((cm ++ fe) ++ eh), cV)
1017+ $Tuple2(((cm ++ fn) ++ eh), cV)
9691018 }
9701019 else throw("Strict value is not equal to itself.")
9711020 }
9801029
9811030
9821031 @Callable(dq)
983-func putOneTknV2OldREADONLY (ft,fu) = {
984- let cI = dw(ft, fu, "", "")
1032+func putOneTknV2OldREADONLY (fC,fD) = {
1033+ let cI = dw(fC, fD, "", "")
9851034 let dN = cI._2
9861035 let dO = cI._7
9871036 let cm = cI._9
9931042
9941043
9951044 @Callable(dq)
996-func putOneTknV2WithBonusREADONLY (ft,fu) = {
1045+func putOneTknV2WithBonusREADONLY (fC,fD) = {
9971046 let dy = aF()
9981047 let bU = dy[s]
9991048 let bV = dy[t]
1000- let cI = dw(ft, fu, "", "")
1049+ let cI = dw(fC, fD, "", "")
10011050 let dN = cI._2
10021051 let cf = cI._3
1003- let fv = cI._6
1052+ let fE = cI._6
10041053 let dO = cI._7
10051054 let ca = bd(bU)
10061055 let cc = bd(bV)
1007- let fw = fraction(cc, a, ca)
1008- let fx = fraction(ft, a, (fw + a))
1009- let fy = (ft - fx)
1010- let fz = fraction(fv, fy, cc)
1011- let fA = fraction((dN - fz), a, fz)
1012- let bN = bL(ft)._2
1013- $Tuple2(nil, $Tuple3(dN, bN, fA))
1056+ let fF = fraction(cc, a, ca)
1057+ let fG = fraction(fC, a, (fF + a))
1058+ let fH = (fC - fG)
1059+ let fI = fraction(fE, fH, cc)
1060+ let fJ = fraction((dN - fI), a, fI)
1061+ let bN = bL(fC)._2
1062+ $Tuple2(nil, $Tuple3(dN, bN, fJ))
10141063 }
10151064
10161065
10171066
10181067 @Callable(dq)
1019-func putForFree (fB) = if ((0 > fB))
1068+func putForFree (fK) = if ((0 > fK))
10201069 then throw("Wrong slpg")
10211070 else if ((size(dq.payments) != 2))
10221071 then throw("2 pmnts expd")
10231072 else {
1024- let dM = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], fB, false, false, true, 0, "")
1073+ let dM = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], fK, false, false, true, 0, "")
10251074 dM._9
10261075 }
10271076
10301079 @Callable(dq)
10311080 func get () = {
10321081 let cI = dp(dq)
1033- let fC = cI._1
1082+ let fL = cI._1
10341083 let cl = cI._2
10351084 let cw = cI._3
10361085 let bQ = cI._4
10371086 let cm = cI._5
1038- let fD = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1039- if ((fD == fD))
1087+ let eO = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1088+ if ((eO == eO))
10401089 then cm
10411090 else throw("Strict value is not equal to itself.")
10421091 }
10441093
10451094
10461095 @Callable(dq)
1047-func getOneTkn (fE,fF,fG,dQ,bl) = if ((size(dq.payments) != 1))
1096+func getOneTkn (fM,fN,fO,dQ,bl) = if ((size(dq.payments) != 1))
10481097 then throw("1 pmnt expd")
10491098 else {
10501099 let bC = aF()
10541103 let bW = parseIntValue(bC[u])
10551104 let bX = parseIntValue(bC[v])
10561105 let bY = bC[q]
1057- let eW = aJ()
1058- let fh = valueOrErrorMessage(addressFromString(eW[A]), "Wr sl addr")
1106+ let ff = aJ()
1107+ let fq = valueOrErrorMessage(addressFromString(ff[A]), "Wr sl addr")
10591108 let dr = value(dq.payments[0])
1060- let fj = valueOrElse(getString(this, ac()), "")
1061- let bS = if ((fj == toString(dq.caller)))
1109+ let fs = valueOrElse(getString(this, ac()), "")
1110+ let bS = if ((fs == toString(dq.caller)))
10621111 then dq.originCaller
10631112 else dq.caller
10641113 let bP = toBase58String(dq.transactionId)
10681117 then throw("Min pmt 10 LP")
10691118 else if (if (if ((0 > bl))
10701119 then true
1071- else (0 > fE))
1120+ else (0 > fM))
10721121 then true
1073- else (0 > fG))
1122+ else (0 > fO))
10741123 then throw("Wrong params")
10751124 else if ((bT != toBase58String(bQ)))
10761125 then throw("Wrong LP")
10771126 else {
10781127 let cI = bO(toBase58String(dq.transactionId), toBase58String(bQ), cw, dq.caller)
1079- let fH = cI._1
1080- let fI = cI._2
1128+ let fP = cI._1
1129+ let fQ = cI._2
10811130 let ca = bd(bU)
10821131 let cc = bd(bV)
1083- let fJ = if ((dQ == bU))
1084- then $Tuple7((ca - fH), (cc - fI), fE, fI, 0, 0, (fH + fE))
1132+ let fR = if ((dQ == bU))
1133+ then $Tuple7((ca - fP), (cc - fQ), fM, fQ, 0, 0, (fP + fM))
10851134 else if ((dQ == bV))
1086- then $Tuple7((ca - fH), (cc - fI), 0, 0, fE, fH, (fI + fE))
1135+ then $Tuple7((ca - fP), (cc - fQ), 0, 0, fM, fP, (fQ + fM))
10871136 else throw("wrong outAssetId")
1088- let dB = fJ._1
1089- let dC = fJ._2
1090- let fn = fJ._3
1091- let fo = fJ._4
1092- let fp = fJ._5
1093- let fq = fJ._6
1094- let fK = fJ._7
1095- if (if ((0 > fn))
1137+ let dB = fR._1
1138+ let dC = fR._2
1139+ let fw = fR._3
1140+ let fx = fR._4
1141+ let fy = fR._5
1142+ let fz = fR._6
1143+ let fS = fR._7
1144+ if (if ((0 > fw))
10961145 then true
1097- else (0 > fp))
1146+ else (0 > fy))
10981147 then throw("Wrong calc")
10991148 else {
1100- let bq = invoke(fh, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
1101- let bp = invoke(fh, "calcD", [toString(((dB - fn) + fq)), toString(((dC + fo) - fp)), aB, h, i], nil)
1102- let fr = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
1103- if ((fr == fr))
1149+ let bq = invoke(fq, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
1150+ let bp = invoke(fq, "calcD", [toString(((dB - fw) + fz)), toString(((dC + fx) - fy)), aB, h, i], nil)
1151+ let fA = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
1152+ if ((fA == fA))
11041153 then {
1105- let dZ = bL(fK)._1
1106- let fL = bi(toBigInt(dZ), toBigInt(fG), toBigInt(bl))
1107- if ((fL == fL))
1154+ let dZ = bL(fS)._1
1155+ let fT = bi(toBigInt(dZ), toBigInt(fO), toBigInt(bl))
1156+ if ((fT == fT))
11081157 then {
1109- let fM = if ((dQ == bU))
1110- then $Tuple2(toInt(fL._2), 0)
1111- else $Tuple2(0, toInt(fL._2))
1112- let ec = fM._1
1113- let ed = fM._2
1158+ let fU = if ((dQ == bU))
1159+ then $Tuple2(toInt(fT._2), 0)
1160+ else $Tuple2(0, toInt(fT._2))
1161+ let ec = fU._1
1162+ let ed = fU._2
11141163 let ea = (ec + ed)
1115- let bN = (fK - dZ)
1164+ let bN = (fS - dZ)
11161165 let eg = if ((dQ == "WAVES"))
11171166 then unit
11181167 else fromBase58String(dQ)
11421191
11431192 @Callable(dq)
11441193 func getOneTknV2 (dQ,dR) = {
1145- let fN = dP(dQ, dR, dq.payments, dq.caller, dq.originCaller, dq.transactionId)
1146- let cm = fN._1
1147- let ea = fN._2
1194+ let fV = dP(dQ, dR, dq.payments, dq.caller, dq.originCaller, dq.transactionId)
1195+ let cm = fV._1
1196+ let ea = fV._2
11481197 $Tuple2(cm, ea)
11491198 }
11501199
11511200
11521201
11531202 @Callable(dq)
1154-func getOneTknV2READONLY (dQ,fO) = {
1203+func getOneTknV2OldREADONLY (dQ,fW) = {
11551204 let dy = aF()
11561205 let bT = dy[r]
11571206 let bU = dy[s]
11581207 let bV = dy[t]
1159- let cI = bO("", bT, fO, this)
1160- let fH = cI._1
1161- let fI = cI._2
1208+ let cI = bO("", bT, fW, this)
1209+ let fP = cI._1
1210+ let fQ = cI._2
11621211 let ca = bd(bU)
11631212 let cc = bd(bV)
1164- let dB = (ca - fH)
1165- let dC = (cc - fI)
1166- let fP = if ((dQ == bU))
1167- then $Tuple4(dC, dB, fI, fH)
1213+ let dB = (ca - fP)
1214+ let dC = (cc - fQ)
1215+ let fX = if ((dQ == bU))
1216+ then $Tuple4(dC, dB, fQ, fP)
11681217 else if ((dQ == bV))
1169- then $Tuple4(dB, dC, fH, fI)
1218+ then $Tuple4(dB, dC, fP, fQ)
11701219 else throw("wrong outAssetId")
1171- let fQ = fP._1
1172- let fR = fP._2
1173- let fS = fP._3
1174- let fT = fP._4
1175- let fU = 1
1176- let fE = {
1177- let dI = invoke(aN, "calcSwapXToY", [toString(fS), toString(fQ), toString(fR), "", aB, h, toString(fU), i], nil)
1220+ let fY = fX._1
1221+ let fZ = fX._2
1222+ let ga = fX._3
1223+ let gb = fX._4
1224+ let gc = 1
1225+ let fM = {
1226+ let dI = invoke(aN, "calcSwapXToY", [toString(ga), toString(fY), toString(fZ), "", aB, h, toString(gc), i], nil)
11781227 if ($isInstanceOf(dI, "Int"))
11791228 then dI
11801229 else throw(($getType(dI) + " couldn't be cast to Int"))
11811230 }
1182- let fK = (fE + fT)
1183- let fV = bL(fK)
1184- let dZ = fV._1
1185- let bN = fV._2
1231+ let fS = (fM + gb)
1232+ let gd = bL(fS)
1233+ let dZ = gd._1
1234+ let bN = gd._2
11861235 $Tuple2(nil, $Tuple2(dZ, bN))
11871236 }
11881237
11891238
11901239
11911240 @Callable(dq)
1192-func getOneTknV2WithBonusREADONLY (dQ,fO) = {
1241+func getOneTknV2READONLY (dQ,fW) = {
1242+ let dy = aF()
1243+ let bU = dy[s]
1244+ let bV = dy[t]
1245+ let bT = dy[r]
1246+ let ek = [toBigInt(bd(bU)), toBigInt(bd(bV))]
1247+ let ge = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bT)), "invalid lp asset").quantity)
1248+ let bq = ej(ek)
1249+ let bp = (bq - ((toBigInt(fW) * bq) / ge))
1250+ let gf = if ((dQ == bU))
1251+ then 0
1252+ else 1
1253+ let gg = eK(ek, gf, bp)
1254+ let gh = (ek[gf] - gg)
1255+ let fS = toInt((gh - f))
1256+ let gi = bL(fS)
1257+ let dZ = gi._1
1258+ let bN = gi._2
1259+ $Tuple2(nil, $Tuple2(dZ, bN))
1260+ }
1261+
1262+
1263+
1264+@Callable(dq)
1265+func getOneTknV2WithBonusREADONLY (dQ,fW) = {
11931266 let dy = aF()
11941267 let bU = dy[s]
11951268 let bV = dy[t]
11961269 let bT = dy[r]
11971270 let ca = bd(bU)
11981271 let cc = bd(bV)
1199- let fW = {
1200- let dI = invoke(this, "getOneTknV2READONLY", [dQ, fO], nil)
1272+ let gj = {
1273+ let dI = invoke(this, "getOneTknV2READONLY", [dQ, fW], nil)
12011274 if ($isInstanceOf(dI, "(Int, Int)"))
12021275 then dI
12031276 else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
12041277 }
1205- let dZ = fW._1
1206- let bN = fW._2
1207- let cI = bO("", bT, fO, this)
1278+ let dZ = gj._1
1279+ let bN = gj._2
1280+ let cI = bO("", bT, fW, this)
12081281 let ck = cI._1
12091282 let cl = cI._2
1210- let fX = (ck + cl)
1211- let fA = fraction((dZ - fX), a, fX)
1212- $Tuple2(nil, $Tuple3(dZ, bN, fA))
1283+ let gk = (ck + cl)
1284+ let fJ = fraction((dZ - gk), a, gk)
1285+ $Tuple2(nil, $Tuple3(dZ, bN, fJ))
12131286 }
12141287
12151288
12161289
12171290 @Callable(dq)
1218-func getNoLess (fY,fZ) = {
1291+func getNoLess (gl,gm) = {
12191292 let cI = dp(dq)
12201293 let ck = cI._1
12211294 let cl = cI._2
12221295 let cw = cI._3
12231296 let bQ = cI._4
12241297 let cm = cI._5
1225- if ((fY > ck))
1226- then throw(((("Failed: " + toString(ck)) + " < ") + toString(fY)))
1227- else if ((fZ > cl))
1228- then throw(((("Failed: " + toString(cl)) + " < ") + toString(fZ)))
1298+ if ((gl > ck))
1299+ then throw(((("Failed: " + toString(ck)) + " < ") + toString(gl)))
1300+ else if ((gm > cl))
1301+ then throw(((("Failed: " + toString(cl)) + " < ") + toString(gm)))
12291302 else {
1230- let ga = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1231- if ((ga == ga))
1303+ let gn = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1304+ if ((gn == gn))
12321305 then cm
12331306 else throw("Strict value is not equal to itself.")
12341307 }
12381311
12391312 @Callable(dq)
12401313 func unstakeAndGet (bM) = {
1241- let gb = if ((size(dq.payments) != 0))
1314+ let go = if ((size(dq.payments) != 0))
12421315 then throw("No pmnts expd")
12431316 else true
1244- if ((gb == gb))
1317+ if ((go == go))
12451318 then {
12461319 let bC = aF()
1247- let gc = aJ()
1320+ let gp = aJ()
12481321 let dO = fromBase58String(bC[r])
1249- let gd = valueOrErrorMessage(addressFromString(gc[y]), "Wr st addr")
1250- let ge = invoke(gd, "unstake", [toBase58String(dO), bM], nil)
1251- if ((ge == ge))
1322+ let gq = valueOrErrorMessage(addressFromString(gp[y]), "Wr st addr")
1323+ let gr = invoke(gq, "unstake", [toBase58String(dO), bM], nil)
1324+ if ((gr == gr))
12521325 then {
12531326 let cI = bO(toBase58String(dq.transactionId), toBase58String(dO), bM, dq.caller)
12541327 let bY = parseIntValue(cI._9)
12551328 let cm = cI._10
1256- let gf = if (if (aC())
1329+ let gs = if (if (aC())
12571330 then true
12581331 else (bY == o))
12591332 then throw(("Blocked: " + toString(bY)))
12601333 else true
1261- if ((gf == gf))
1334+ if ((gs == gs))
12621335 then {
1263- let gg = invoke(aA, "burn", [bM], [AttachedPayment(dO, bM)])
1264- if ((gg == gg))
1336+ let gt = invoke(aA, "burn", [bM], [AttachedPayment(dO, bM)])
1337+ if ((gt == gt))
12651338 then cm
12661339 else throw("Strict value is not equal to itself.")
12671340 }
12751348
12761349
12771350 @Callable(dq)
1278-func unstakeAndGetOneTkn (gh,dQ,dR) = {
1279- let gb = if ((size(dq.payments) != 0))
1351+func unstakeAndGetOneTkn (gu,dQ,dR) = {
1352+ let go = if ((size(dq.payments) != 0))
12801353 then throw("No pmnts expd")
12811354 else true
1282- if ((gb == gb))
1355+ if ((go == go))
12831356 then {
12841357 let bC = aF()
1285- let gc = aJ()
1358+ let gp = aJ()
12861359 let dO = fromBase58String(bC[r])
1287- let gd = valueOrErrorMessage(addressFromString(gc[y]), "Wr st addr")
1288- let ge = invoke(gd, "unstake", [toBase58String(dO), gh], nil)
1289- if ((ge == ge))
1360+ let gq = valueOrErrorMessage(addressFromString(gp[y]), "Wr st addr")
1361+ let gr = invoke(gq, "unstake", [toBase58String(dO), gu], nil)
1362+ if ((gr == gr))
12901363 then {
1291- let gi = dP(dQ, dR, [AttachedPayment(dO, gh)], dq.caller, dq.originCaller, dq.transactionId)
1292- let cm = gi._1
1293- let ea = gi._2
1364+ let gv = dP(dQ, dR, [AttachedPayment(dO, gu)], dq.caller, dq.originCaller, dq.transactionId)
1365+ let cm = gv._1
1366+ let ea = gv._2
12941367 $Tuple2(cm, ea)
12951368 }
12961369 else throw("Strict value is not equal to itself.")
13011374
13021375
13031376 @Callable(dq)
1304-func putOneTknV2READONLY (bM,gj) = {
1377+func putOneTknV2READONLY (bM,gw) = {
13051378 let dy = aF()
13061379 let bU = dy[s]
13071380 let bV = dy[t]
13081381 let bT = dy[r]
1309- let gk = gj
1310- let fk = bM
1311- let gl = bL(fk)
1312- let ft = gl._1
1313- let bN = gl._2
1314- let gm = if ((gk == bU))
1315- then $Tuple2(ft, 0)
1316- else if ((gk == bV))
1317- then $Tuple2(0, ft)
1382+ let gx = gw
1383+ let ft = bM
1384+ let gy = bL(ft)
1385+ let fC = gy._1
1386+ let bN = gy._2
1387+ let gz = if ((gx == bU))
1388+ then $Tuple2(fC, 0)
1389+ else if ((gx == bV))
1390+ then $Tuple2(0, fC)
13181391 else throw("invalid payment")
1319- let gn = gm._1
1320- let go = gm._2
1321- let gp = bd(bU)
1322- let gq = bd(bV)
1323- let gr = (gp + gn)
1324- let gs = (gp + go)
1325- let bq = ej([toBigInt(gp), toBigInt(gq)])
1326- let bp = ej([toBigInt(gr), toBigInt(gs)])
1327- let gt = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bT)), "invalid lp asset").quantity)
1328- let gu = ((gt * (bp - bq)) / bq)
1329- $Tuple2(nil, toInt(gu))
1392+ let gA = gz._1
1393+ let gB = gz._2
1394+ let gC = bd(bU)
1395+ let gD = bd(bV)
1396+ let gE = (gC + gA)
1397+ let gF = (gC + gB)
1398+ let bq = ej([toBigInt(gC), toBigInt(gD)])
1399+ let bp = ej([toBigInt(gE), toBigInt(gF)])
1400+ let ge = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bT)), "invalid lp asset").quantity)
1401+ let gG = ((ge * (bp - bq)) / bq)
1402+ $Tuple2(nil, toInt(gG))
13301403 }
13311404
13321405
13331406
13341407 @Callable(dq)
1335-func activate (gv,gw) = if ((toString(dq.caller) != toString(aA)))
1408+func activate (gH,gI) = if ((toString(dq.caller) != toString(aA)))
13361409 then throw("denied")
1337- else $Tuple2([StringEntry(Z(), gv), StringEntry(aa(), gw)], "success")
1410+ else $Tuple2([StringEntry(Z(), gH), StringEntry(aa(), gI)], "success")
13381411
13391412
13401413
13411414 @Callable(dq)
1342-func setS (gx,gf) = if ((toString(dq.caller) != aw(this, ac())))
1343- then eM
1344- else [StringEntry(gx, gf)]
1415+func setS (gJ,gs) = if ((toString(dq.caller) != aw(this, ac())))
1416+ then eW
1417+ else [StringEntry(gJ, gs)]
13451418
13461419
13471420
13481421 @Callable(dq)
1349-func setI (gx,gf) = if ((toString(dq.caller) != aw(this, ac())))
1350- then eM
1351- else [IntegerEntry(gx, gf)]
1422+func setI (gJ,gs) = if ((toString(dq.caller) != aw(this, ac())))
1423+ then eW
1424+ else [IntegerEntry(gJ, gs)]
13521425
13531426
13541427
13641437
13651438 @Callable(dq)
13661439 func calcPricesWrapperREADONLY (bw,bx,bB) = {
1367- let gy = bA(bw, bx, bB)
1368- $Tuple2(nil, [toString(gy[0]), toString(gy[1]), toString(gy[2])])
1440+ let gK = bA(bw, bx, bB)
1441+ $Tuple2(nil, [toString(gK[0]), toString(gK[1]), toString(gK[2])])
13691442 }
13701443
13711444
13721445
13731446 @Callable(dq)
1374-func fromX18WrapperREADONLY (G,gz) = $Tuple2(nil, F(parseBigIntValue(G), gz))
1447+func fromX18WrapperREADONLY (G,gL) = $Tuple2(nil, F(parseBigIntValue(G), gL))
13751448
13761449
13771450
13861459
13871460
13881461 @Callable(dq)
1389-func estimatePutOperationWrapperREADONLY (bP,bl,co,cp,cq,cr,gA,cs,ct) = $Tuple2(nil, cn(bP, bl, co, cp, cq, cr, gA, cs, ct, true, false, 0, ""))
1462+func estimatePutOperationWrapperREADONLY (bP,bl,co,cp,cq,cr,gM,cs,ct) = $Tuple2(nil, cn(bP, bl, co, cp, cq, cr, gM, cs, ct, true, false, 0, ""))
13901463
13911464
13921465
13931466 @Callable(dq)
1394-func estimateGetOperationWrapperREADONLY (bP,gB,bR,gA) = {
1395- let cI = bO(bP, gB, bR, addressFromStringValue(gA))
1467+func estimateGetOperationWrapperREADONLY (bP,gN,bR,gM) = {
1468+ let cI = bO(bP, gN, bR, addressFromStringValue(gM))
13961469 $Tuple2(nil, $Tuple10(cI._1, cI._2, cI._3, cI._4, cI._5, cI._6, cI._7, toString(cI._8), cI._9, cI._10))
13971470 }
13981471
14021475 func getFeeREADONLY () = $Tuple2(nil, ae)
14031476
14041477
1405-@Verifier(gC)
1406-func gD () = {
1407- let gE = {
1408- let au = eK()
1478+@Verifier(gO)
1479+func gP () = {
1480+ let gQ = {
1481+ let au = eU()
14091482 if ($isInstanceOf(au, "ByteVector"))
14101483 then {
1411- let eO = au
1412- eO
1484+ let eY = au
1485+ eY
14131486 }
14141487 else if ($isInstanceOf(au, "Unit"))
1415- then gC.senderPublicKey
1488+ then gO.senderPublicKey
14161489 else throw("Match error")
14171490 }
1418- let au = gC
1491+ let au = gO
14191492 if ($isInstanceOf(au, "Order"))
14201493 then {
14211494 let dd = au
1422- let gF = aD()
1423- let gG = dc(dd)
1424- let gH = sigVerify(dd.bodyBytes, dd.proofs[0], dd.senderPublicKey)
1425- let gI = sigVerify(dd.bodyBytes, dd.proofs[1], gF)
1426- if (if (if (gG)
1427- then gH
1495+ let gR = aD()
1496+ let gS = dc(dd)
1497+ let gT = sigVerify(dd.bodyBytes, dd.proofs[0], dd.senderPublicKey)
1498+ let gU = sigVerify(dd.bodyBytes, dd.proofs[1], gR)
1499+ if (if (if (gS)
1500+ then gT
14281501 else false)
1429- then gI
1502+ then gU
14301503 else false)
14311504 then true
1432- else ap(gG, gH, gI)
1505+ else ap(gS, gT, gU)
14331506 }
14341507 else if ($isInstanceOf(au, "SetScriptTransaction"))
14351508 then {
14361509 let eq = au
1437- let gJ = blake2b256(value(eq.script))
1438- let gK = fromBase64String(value(getString(aA, an())))
1439- let gL = scriptHash(this)
1440- if (if ((gK == gJ))
1441- then (gL != gJ)
1510+ let gV = blake2b256(value(eq.script))
1511+ let gW = fromBase64String(value(getString(aA, an())))
1512+ let gX = scriptHash(this)
1513+ if (if ((gW == gV))
1514+ then (gX != gV)
14421515 else false)
14431516 then true
1444- else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
1517+ else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
14451518 }
1446- else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
1519+ else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
14471520 }
14481521
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt((a - ((a * 1) / a)))
1717
1818 let h = "100"
1919
2020 let i = "1"
2121
2222 let j = "__"
2323
2424 let k = ""
2525
2626 let l = 1
2727
2828 let m = 2
2929
3030 let n = 3
3131
3232 let o = 4
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 5
4343
4444 let u = 6
4545
4646 let v = 7
4747
4848 let w = 8
4949
5050 let x = 9
5151
5252 let y = 1
5353
5454 let z = 7
5555
5656 let A = 10
5757
5858 let B = fraction(5, a, 10000)
5959
6060 func C (D,E) = fraction(toBigInt(D), c, toBigInt(E))
6161
6262
6363 func F (G,H) = toInt(fraction(G, toBigInt(H), c))
6464
6565
6666 func I (J,K,L) = fraction(J, K, L)
6767
6868
6969 func M (G) = if ((d > G))
7070 then -(G)
7171 else G
7272
7373
7474 func N (G) = if ((d > G))
7575 then -(G)
7676 else G
7777
7878
7979 func O () = "%s__factoryContract"
8080
8181
8282 func P () = "%s__managerPublicKey"
8383
8484
8585 func Q () = "%s__pendingManagerPublicKey"
8686
8787
8888 func R () = "%s%s__price__last"
8989
9090
9191 func S (T,U) = makeString(["%s%s%d%d__price__history", toString(T), toString(U)], j)
9292
9393
9494 func V (W,X) = ((("%s%s%s__P__" + W) + "__") + X)
9595
9696
9797 func Y (W,X) = ((("%s%s%s__G__" + W) + "__") + X)
9898
9999
100100 func Z () = "%s__amountAsset"
101101
102102
103103 func aa () = "%s__priceAsset"
104104
105105
106106 func ab () = "%s__amp"
107107
108108
109109 func ac () = "%s__addonAddr"
110110
111111
112112 let ad = "%s__fee"
113113
114114 let ae = valueOrElse(getInteger(this, ad), B)
115115
116116 func af () = "%s__factoryConfig"
117117
118118
119119 func ag () = "%s%s__matcher__publicKey"
120120
121121
122122 func ah (ai,aj) = (((("%d%d%s__" + ai) + "__") + aj) + "__config")
123123
124124
125125 func ak (al) = ("%s%s%s__mappings__baseAsset2internalId__" + al)
126126
127127
128128 func am () = "%s__shutdown"
129129
130130
131131 func an () = "%s__allowedLpStableScriptHash"
132132
133133
134134 func ao () = "%s__feeCollectorAddress"
135135
136136
137137 func ap (aq,ar,as) = throw(((((("Failed: ordValid=" + toString(aq)) + " sndrValid=") + toString(ar)) + " mtchrValid=") + toString(as)))
138138
139139
140140 func at (G) = {
141141 let au = G
142142 if ($isInstanceOf(au, "String"))
143143 then {
144144 let av = au
145145 av
146146 }
147147 else throw("fail cast to String")
148148 }
149149
150150
151151 func aw (ax,ay) = valueOrErrorMessage(getString(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
152152
153153
154154 func az (ax,ay) = valueOrErrorMessage(getInteger(ax, ay), makeString(["mandatory ", toString(ax), ".", ay, " not defined"], ""))
155155
156156
157157 let aA = addressFromStringValue(aw(this, O()))
158158
159159 let aB = aw(this, ab())
160160
161161 func aC () = valueOrElse(getBoolean(aA, am()), false)
162162
163163
164164 func aD () = fromBase58String(aw(aA, ag()))
165165
166166
167167 let aE = addressFromStringValue(aw(aA, ao()))
168168
169169 func aF () = {
170170 let aG = aw(this, Z())
171171 let aH = aw(this, aa())
172172 let aI = az(aA, ak(aH))
173173 let ai = az(aA, ak(aG))
174174 split(aw(aA, ah(toString(ai), toString(aI))), j)
175175 }
176176
177177
178178 func aJ () = split(aw(aA, af()), j)
179179
180180
181181 let aK = aJ()
182182
183183 let aL = valueOrErrorMessage(addressFromString(aK[y]), "Invalid staking contract address")
184184
185185 let aM = valueOrErrorMessage(addressFromString(aK[z]), "Invalid slipage contract address")
186186
187187 let aN = valueOrErrorMessage(addressFromString(aK[A]), "Invalid gwx contract address")
188188
189189 func aO (aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX), toString(aY)], j)
190190
191191
192192 func aZ (ba,bb,bc,aS,aV,aW) = makeString(["%d%d%d%d%d%d", toString(ba), toString(bb), toString(bc), toString(aS), toString(aV), toString(aW)], j)
193193
194194
195195 func bd (be) = if ((be == "WAVES"))
196196 then wavesBalance(this).available
197197 else assetBalance(this, fromBase58String(be))
198198
199199
200200 func bf (bg,bh) = fraction(bg, c, bh)
201201
202202
203203 func bi (bj,bk,bl) = {
204204 let bm = fraction((bj - bk), b, bk)
205205 let bn = ((bl - M(bm)) > d)
206206 if (!(bn))
207207 then throw(("Big slpg: " + toString(bm)))
208208 else $Tuple2(bn, min([bj, bk]))
209209 }
210210
211211
212212 func bo (bp,bq,br) = {
213213 let bm = fraction(bq, b, bp)
214214 let bs = (br > bm)
215215 if (if (bs)
216216 then true
217217 else (bq > bp))
218218 then throw(((((((toString(bq) + " ") + toString(bp)) + " ") + toString(bm)) + " ") + toString(br)))
219219 else bs
220220 }
221221
222222
223223 func bt (bu,bv,bw,bx) = {
224224 let by = C(bw, bu)
225225 let bz = C(bx, bv)
226226 bf(bz, by)
227227 }
228228
229229
230230 func bA (bw,bx,bB) = {
231231 let bC = aF()
232232 let bD = parseIntValue(bC[u])
233233 let bE = parseIntValue(bC[v])
234234 let bF = bt(bD, bE, bw, bx)
235235 let bh = C(bw, bD)
236236 let bg = C(bx, bE)
237237 let bG = C(bB, a)
238238 let bH = bf(bh, bG)
239239 let bI = bf(bg, bG)
240240 [bF, bH, bI]
241241 }
242242
243243
244244 func bJ (bw,bx,bB) = {
245245 let bK = bA(bw, bx, bB)
246246 [F(bK[0], a), F(bK[1], a), F(bK[2], a)]
247247 }
248248
249249
250250 func bL (bM) = {
251251 let bN = fraction(bM, ae, a)
252252 $Tuple2((bM - bN), bN)
253253 }
254254
255255
256256 func bO (bP,bQ,bR,bS) = {
257257 let bC = aF()
258258 let bT = bC[r]
259259 let bU = bC[s]
260260 let bV = bC[t]
261261 let bW = parseIntValue(bC[u])
262262 let bX = parseIntValue(bC[v])
263263 let bY = bC[q]
264264 let bZ = valueOrErrorMessage(assetInfo(fromBase58String(bT)), "Wrong LP id").quantity
265265 if ((bT != bQ))
266266 then throw("Wrong pmt asset")
267267 else {
268268 let ca = bd(bU)
269269 let cb = C(ca, bW)
270270 let cc = bd(bV)
271271 let cd = C(cc, bX)
272272 let ce = bf(cd, cb)
273273 let cf = F(ce, a)
274274 let cg = C(bR, a)
275275 let ch = C(bZ, a)
276276 let ci = fraction(cb, cg, ch)
277277 let cj = fraction(cd, cg, ch)
278278 let ck = F(ci, bW)
279279 let cl = F(cj, bX)
280280 let cm = if ((bP == ""))
281281 then nil
282282 else [ScriptTransfer(bS, ck, if ((bU == "WAVES"))
283283 then unit
284284 else fromBase58String(bU)), ScriptTransfer(bS, cl, if ((bV == "WAVES"))
285285 then unit
286286 else fromBase58String(bV)), StringEntry(Y(toString(bS), bP), aZ(ck, cl, bR, cf, height, lastBlock.timestamp)), IntegerEntry(R(), cf), IntegerEntry(S(height, lastBlock.timestamp), cf)]
287287 $Tuple10(ck, cl, bU, bV, ca, cc, bZ, ce, bY, cm)
288288 }
289289 }
290290
291291
292292 func cn (bP,bl,co,cp,cq,cr,bS,cs,ct,cu,cv,cw,cx) = {
293293 let bC = aF()
294294 let bT = fromBase58String(bC[r])
295295 let cy = bC[s]
296296 let cz = bC[t]
297297 let cA = bC[w]
298298 let cB = bC[x]
299299 let cC = parseIntValue(bC[u])
300300 let cD = parseIntValue(bC[v])
301301 let bY = bC[q]
302302 let cE = valueOrErrorMessage(assetInfo(bT), "Wr lp as").quantity
303303 let ca = if (cs)
304304 then bd(cy)
305305 else if (if (cu)
306306 then (cx == cy)
307307 else false)
308308 then (bd(cy) - cw)
309309 else if (cu)
310310 then bd(cy)
311311 else (bd(cy) - co)
312312 let cc = if (cs)
313313 then bd(cz)
314314 else if (if (cu)
315315 then (cx == cz)
316316 else false)
317317 then (bd(cz) - cw)
318318 else if (cu)
319319 then bd(cz)
320320 else (bd(cz) - cq)
321321 let cF = C(co, cC)
322322 let cG = C(cq, cD)
323323 let cH = bf(cG, cF)
324324 let cb = C(ca, cC)
325325 let cd = C(cc, cD)
326326 let cI = if ((cE == 0))
327327 then {
328328 let ce = d
329329 let cJ = d
330330 let bG = pow((cF * cG), 0, toBigInt(5), 1, 0, DOWN)
331331 $Tuple5(F(bG, a), F(cF, cC), F(cG, cD), bf((cd + cG), (cb + cF)), cJ)
332332 }
333333 else {
334334 let ce = bf(cd, cb)
335335 let cK = fraction(M((ce - cH)), c, ce)
336336 let cJ = C(bl, a)
337337 if (if (if (cv)
338338 then (ce != d)
339339 else false)
340340 then (cK > cJ)
341341 else false)
342342 then throw(((("Price slippage " + toString(cK)) + " > ") + toString(cJ)))
343343 else {
344344 let cL = C(cE, a)
345345 let cM = fraction(cF, ce, c)
346346 let cN = fraction(cG, c, ce)
347347 let cO = if ((cM > cG))
348348 then $Tuple2(cN, cG)
349349 else $Tuple2(cF, cM)
350350 let cP = cO._1
351351 let cQ = cO._2
352352 let bG = fraction(cL, cQ, cd)
353353 $Tuple5(F(bG, a), F(cP, cC), F(cQ, cD), ce, cJ)
354354 }
355355 }
356356 let cR = cI._1
357357 let cS = cI._2
358358 let cT = cI._3
359359 let cf = F(cI._4, a)
360360 let cU = F(cI._5, a)
361361 if ((0 >= cR))
362362 then throw("LP <= 0")
363363 else {
364364 let cV = if (!(ct))
365365 then 0
366366 else cR
367367 let cW = (co - cS)
368368 let cX = (cq - cT)
369369 let cY = if (if (cu)
370370 then (cx == cy)
371371 else false)
372372 then $Tuple2(cw, 0)
373373 else if (if (cu)
374374 then (cx == cz)
375375 else false)
376376 then $Tuple2(0, cw)
377377 else $Tuple2(cS, cT)
378378 let cZ = cY._1
379379 let da = cY._2
380380 let db = [IntegerEntry(R(), cf), IntegerEntry(S(height, lastBlock.timestamp), cf), StringEntry(V(bS, bP), aO(cZ, da, cV, cf, bl, cU, height, lastBlock.timestamp, cW, cX))]
381381 $Tuple13(cR, cV, cf, ca, cc, cE, bT, bY, db, cW, cX, cp, cr)
382382 }
383383 }
384384
385385
386386 func dc (dd) = {
387387 let bC = aF()
388388 let de = bC[s]
389389 let df = bC[t]
390390 let bY = parseIntValue(bC[q])
391391 let bD = parseIntValue(bC[u])
392392 let bE = parseIntValue(bC[v])
393393 let dg = bd(de)
394394 let dh = bd(df)
395395 let ce = if ((dd.orderType == Buy))
396396 then bt(bD, bE, (dg + dd.amount), dh)
397397 else bt(bD, bE, (dg - dd.amount), dh)
398398 let cf = F(ce, a)
399399 if (if (if (aC())
400400 then true
401401 else (bY == n))
402402 then true
403403 else (bY == o))
404404 then throw("Admin blocked")
405405 else {
406406 let di = dd.assetPair.amountAsset
407407 let dj = if ((di == unit))
408408 then "WAVES"
409409 else toBase58String(value(di))
410410 let dk = dd.assetPair.priceAsset
411411 let dl = if ((dk == unit))
412412 then "WAVES"
413413 else toBase58String(value(dk))
414414 if (if ((dj != de))
415415 then true
416416 else (dl != df))
417417 then throw("Wr assets")
418418 else {
419419 let dm = dd.price
420420 let cD = fraction(a, bE, bD)
421421 let dn = I(dm, a, cD)
422422 let do = if ((dd.orderType == Buy))
423423 then (cf >= dn)
424424 else (dn >= cf)
425425 true
426426 }
427427 }
428428 }
429429
430430
431431 func dp (dq) = if ((size(dq.payments) != 1))
432432 then throw("1 pmnt exp")
433433 else {
434434 let dr = value(dq.payments[0])
435435 let bQ = value(dr.assetId)
436436 let cw = dr.amount
437437 let cI = bO(toBase58String(dq.transactionId), toBase58String(bQ), cw, dq.caller)
438438 let ck = cI._1
439439 let cl = cI._2
440440 let bY = parseIntValue(cI._9)
441441 let cm = cI._10
442442 if (if (aC())
443443 then true
444444 else (bY == o))
445445 then throw(("Admin blocked: " + toString(bY)))
446446 else $Tuple5(ck, cl, cw, bQ, cm)
447447 }
448448
449449
450450 func ds (dt,X,du,dv,bl,ct,cu,cv,cw,cx) = {
451451 let cI = cn(X, bl, value(du).amount, value(du).assetId, value(dv).amount, value(dv).assetId, dt, (X == ""), ct, cu, cv, cw, cx)
452452 let bY = parseIntValue(cI._8)
453453 if (if (if (aC())
454454 then true
455455 else (bY == m))
456456 then true
457457 else (bY == o))
458458 then throw(("Blocked:" + toString(bY)))
459459 else cI
460460 }
461461
462462
463463 func dw (dx,bQ,bS,X) = {
464464 let dy = aF()
465465 let bU = dy[s]
466466 let bV = dy[t]
467467 let ca = bd(bU)
468468 let cc = bd(bV)
469469 let dz = bL(dx)
470470 let cw = dz._1
471471 let bN = dz._2
472472 let dA = if ((X == ""))
473473 then $Tuple2(ca, cc)
474474 else if ((bQ == bU))
475475 then if ((dx > ca))
476476 then throw("invalid payment amount")
477477 else $Tuple2((ca - dx), cc)
478478 else if ((bQ == bV))
479479 then if ((dx > cc))
480480 then throw("invalid payment amount")
481481 else $Tuple2(ca, (cc - dx))
482482 else throw("wrong pmtAssetId")
483483 let dB = dA._1
484484 let dC = dA._2
485485 let dD = if ((bQ == bU))
486486 then $Tuple2(dB, dC)
487487 else $Tuple2(dC, dB)
488488 let dE = dD._1
489489 let dF = dD._2
490490 let dG = 1
491491 let dH = {
492492 let dI = invoke(aN, "calcPutXOnly", [toString(cw), toString(dE), toString(dF), "", aB, h, toString(dG), i], nil)
493493 if ($isInstanceOf(dI, "(Int, Int)"))
494494 then dI
495495 else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
496496 }
497497 let dJ = if ((bQ == bU))
498498 then dH
499499 else $Tuple2(dH._2, dH._1)
500500 let dK = dJ._1
501501 let dL = dJ._2
502502 let dM = ds(bS, X, AttachedPayment(fromBase58String(bU), dK), AttachedPayment(fromBase58String(bV), dL), 0, true, true, false, dx, bQ)
503503 let dN = dM._2
504504 let dO = dM._7
505505 let cm = dM._9
506506 let cW = dM._10
507507 let cX = dM._11
508508 dM
509509 }
510510
511511
512512 func dP (dQ,dR,dS,dt,dT,dU) = if ((size(dS) != 1))
513513 then throw("1 pmnt expd")
514514 else {
515515 let dy = aF()
516516 let bT = dy[r]
517517 let bU = dy[s]
518518 let bV = dy[t]
519519 let dV = parseIntValue(dy[u])
520520 let dW = parseIntValue(dy[v])
521521 let dX = dy[q]
522522 let bS = if ((dt == this))
523523 then dT
524524 else dt
525525 let dr = value(dS[0])
526526 let bQ = value(dr.assetId)
527527 let cw = dr.amount
528528 if ((1000000000 > cw))
529529 then throw("Min pmt 10 LP")
530530 else {
531531 let bP = toBase58String(dU)
532532 if ((bT != toBase58String(bQ)))
533533 then throw("Wrong LP")
534534 else {
535535 let ca = bd(bU)
536536 let cc = bd(bV)
537537 let dY = {
538538 let dI = invoke(this, "getOneTknV2READONLY", [dQ, cw], nil)
539539 if ($isInstanceOf(dI, "(Int, Int)"))
540540 then dI
541541 else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
542542 }
543543 let dZ = dY._1
544544 let bN = dY._2
545545 let ea = if (if ((dR > 0))
546546 then (dR > dZ)
547547 else false)
548548 then throw(makeString(["amount to receive is less than ", toString(dR)], ""))
549549 else dZ
550550 let eb = if ((dQ == bU))
551551 then $Tuple2(ea, 0)
552552 else $Tuple2(0, ea)
553553 let ec = eb._1
554554 let ed = eb._2
555555 let ee = bf(C(cc, dW), C(ca, dV))
556556 let ef = F(ee, a)
557557 let eg = if ((dQ == "WAVES"))
558558 then unit
559559 else fromBase58String(dQ)
560560 let eh = if ((bN > 0))
561561 then [ScriptTransfer(aE, bN, eg)]
562562 else nil
563563 let cm = ([ScriptTransfer(bS, ea, eg), StringEntry(Y(toString(bS), bP), aZ(ec, ed, cw, ef, height, lastBlock.timestamp)), IntegerEntry(R(), ef), IntegerEntry(S(height, lastBlock.timestamp), ef)] ++ eh)
564564 if ((cm == cm))
565565 then {
566566 let ei = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
567567 if ((ei == ei))
568568 then $Tuple2(cm, ea)
569569 else throw("Strict value is not equal to itself.")
570570 }
571571 else throw("Strict value is not equal to itself.")
572572 }
573573 }
574574 }
575575
576576
577577 func ej (ek) = {
578578 let el = toBigInt(2)
579579 let em = ek[0]
580580 let en = ek[1]
581581 let eo = parseBigIntValue(h)
582582 let ep = (parseBigIntValue(aB) * eo)
583583 let eq = (em + en)
584584 if ((eq == e))
585585 then e
586586 else {
587587 let er = (ep * el)
588588 func es (et,eu) = {
589589 let ev = et
590590 let ew = ev._1
591591 let ex = ev._2
592592 if ((ex != unit))
593593 then et
594594 else {
595595 let ey = (((ew * ew) * ew) / (((em * en) * el) * el))
596596 let ez = (((((er * eq) / eo) + (ey * el)) * ew) / ((((er - eo) * ew) / eo) + ((el + toBigInt(1)) * ey)))
597597 let eA = N((ez - value(ew)))
598598 if ((f >= eA))
599599 then $Tuple2(ez, eu)
600600 else $Tuple2(ez, unit)
601601 }
602602 }
603603
604604 let eB = [0, 1, 2, 3, 4, 5, 6]
605605 let eC = {
606606 let eD = eB
607607 let eE = size(eD)
608608 let eF = $Tuple2(eq, unit)
609609 func eG (eH,eI) = if ((eI >= eE))
610610 then eH
611611 else es(eH, eD[eI])
612612
613613 func eJ (eH,eI) = if ((eI >= eE))
614614 then eH
615615 else throw("List size exceeds 7")
616616
617617 eJ(eG(eG(eG(eG(eG(eG(eG(eF, 0), 1), 2), 3), 4), 5), 6), 7)
618618 }
619619 let ew = eC._1
620620 let ex = eC._2
621621 if ((ex != unit))
622622 then ew
623623 else throw(("D calculation error, D = " + toString(ew)))
624624 }
625625 }
626626
627627
628-func eK () = {
628+func eK (ek,dq,eL) = {
629+ let el = toBigInt(2)
630+ let eM = ek[if ((dq == 0))
631+ then 1
632+ else 0]
633+ let eo = parseBigIntValue(h)
634+ let ep = (parseBigIntValue(aB) * eo)
635+ let eq = eM
636+ let er = (ep * el)
637+ let eN = (((((eL * eL) / (eM * el)) * eL) * eo) / (er * el))
638+ let eO = ((eq + ((eL * eo) / er)) - eL)
639+ func es (et,eu) = {
640+ let eP = et
641+ let eQ = eP._1
642+ let ex = eP._2
643+ if ((ex != unit))
644+ then et
645+ else {
646+ let eR = (((eQ * eQ) + eN) / ((toBigInt(2) * eQ) + eO))
647+ let eS = N((eR - value(eQ)))
648+ if ((f >= eS))
649+ then $Tuple2(eR, eu)
650+ else $Tuple2(eR, unit)
651+ }
652+ }
653+
654+ let eB = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
655+ let eT = {
656+ let eD = eB
657+ let eE = size(eD)
658+ let eF = $Tuple2(eq, unit)
659+ func eG (eH,eI) = if ((eI >= eE))
660+ then eH
661+ else es(eH, eD[eI])
662+
663+ func eJ (eH,eI) = if ((eI >= eE))
664+ then eH
665+ else throw("List size exceeds 15")
666+
667+ eJ(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eG(eF, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
668+ }
669+ let eQ = eT._1
670+ let ex = eT._2
671+ if ((ex != unit))
672+ then eQ
673+ else throw(("Y calculation error, Y = " + toString(eQ)))
674+ }
675+
676+
677+func eU () = {
629678 let au = getString(P())
630679 if ($isInstanceOf(au, "String"))
631680 then {
632681 let eq = au
633682 fromBase58String(eq)
634683 }
635684 else if ($isInstanceOf(au, "Unit"))
636685 then unit
637686 else throw("Match error")
638687 }
639688
640689
641-func eL () = {
690+func eV () = {
642691 let au = getString(Q())
643692 if ($isInstanceOf(au, "String"))
644693 then {
645694 let eq = au
646695 fromBase58String(eq)
647696 }
648697 else if ($isInstanceOf(au, "Unit"))
649698 then unit
650699 else throw("Match error")
651700 }
652701
653702
654-let eM = throw("Permission denied")
703+let eW = throw("Permission denied")
655704
656-func eN (dq) = {
657- let au = eK()
705+func eX (dq) = {
706+ let au = eU()
658707 if ($isInstanceOf(au, "ByteVector"))
659708 then {
660- let eO = au
661- if ((dq.callerPublicKey == eO))
709+ let eY = au
710+ if ((dq.callerPublicKey == eY))
662711 then true
663- else eM
712+ else eW
664713 }
665714 else if ($isInstanceOf(au, "Unit"))
666715 then if ((dq.caller == this))
667716 then true
668- else eM
717+ else eW
669718 else throw("Match error")
670719 }
671720
672721
673722 @Callable(dq)
674723 func constructor (O) = {
675- let eP = eN(dq)
676- if ((eP == eP))
724+ let eN = eX(dq)
725+ if ((eN == eN))
677726 then [StringEntry(O(), O)]
678727 else throw("Strict value is not equal to itself.")
679728 }
680729
681730
682731
683732 @Callable(dq)
684-func setManager (eQ) = {
685- let eP = eN(dq)
686- if ((eP == eP))
733+func setManager (eZ) = {
734+ let eN = eX(dq)
735+ if ((eN == eN))
687736 then {
688- let eR = fromBase58String(eQ)
689- if ((eR == eR))
690- then [StringEntry(Q(), eQ)]
737+ let fa = fromBase58String(eZ)
738+ if ((fa == fa))
739+ then [StringEntry(Q(), eZ)]
691740 else throw("Strict value is not equal to itself.")
692741 }
693742 else throw("Strict value is not equal to itself.")
694743 }
695744
696745
697746
698747 @Callable(dq)
699748 func confirmManager () = {
700- let bK = eL()
701- let eS = if (isDefined(bK))
749+ let bK = eV()
750+ let fb = if (isDefined(bK))
702751 then true
703752 else throw("No pending manager")
704- if ((eS == eS))
753+ if ((fb == fb))
705754 then {
706- let eT = if ((dq.callerPublicKey == value(bK)))
755+ let fc = if ((dq.callerPublicKey == value(bK)))
707756 then true
708757 else throw("You are not pending manager")
709- if ((eT == eT))
758+ if ((fc == fc))
710759 then [StringEntry(P(), toBase58String(value(bK))), DeleteEntry(Q())]
711760 else throw("Strict value is not equal to itself.")
712761 }
713762 else throw("Strict value is not equal to itself.")
714763 }
715764
716765
717766
718767 @Callable(dq)
719-func put (eU,eV) = {
720- let eW = aJ()
721- let eX = valueOrErrorMessage(addressFromString(eW[y]), "Wr st addr")
722- let eY = valueOrErrorMessage(addressFromString(eW[z]), "Wr sl addr")
723- if ((0 > eU))
768+func put (fd,fe) = {
769+ let ff = aJ()
770+ let fg = valueOrErrorMessage(addressFromString(ff[y]), "Wr st addr")
771+ let fh = valueOrErrorMessage(addressFromString(ff[z]), "Wr sl addr")
772+ if ((0 > fd))
724773 then throw("Wrong slippage")
725774 else if ((size(dq.payments) != 2))
726775 then throw("2 pmnts expd")
727776 else {
728- let eZ = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], eU, true, false, true, 0, "")
729- let cV = eZ._2
730- let dO = eZ._7
731- let cm = eZ._9
732- let cW = eZ._10
733- let cX = eZ._11
734- let bU = eZ._12
735- let bV = eZ._13
777+ let fi = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], fd, true, false, true, 0, "")
778+ let cV = fi._2
779+ let dO = fi._7
780+ let cm = fi._9
781+ let cW = fi._10
782+ let cX = fi._11
783+ let bU = fi._12
784+ let bV = fi._13
736785 let cI = invoke(aA, "emit", [cV], nil)
737786 if ((cI == cI))
738787 then {
739- let fa = {
788+ let fj = {
740789 let au = cI
741790 if ($isInstanceOf(au, "Address"))
742791 then {
743- let fb = au
744- invoke(fb, "emit", [cV], nil)
792+ let fk = au
793+ invoke(fk, "emit", [cV], nil)
745794 }
746795 else unit
747796 }
748- if ((fa == fa))
797+ if ((fj == fj))
749798 then {
750- let fc = if ((cW > 0))
751- then invoke(eY, "put", nil, [AttachedPayment(bU, cW)])
799+ let fl = if ((cW > 0))
800+ then invoke(fh, "put", nil, [AttachedPayment(bU, cW)])
752801 else nil
753- if ((fc == fc))
802+ if ((fl == fl))
754803 then {
755- let fd = if ((cX > 0))
756- then invoke(eY, "put", nil, [AttachedPayment(bV, cX)])
804+ let fm = if ((cX > 0))
805+ then invoke(fh, "put", nil, [AttachedPayment(bV, cX)])
757806 else nil
758- if ((fd == fd))
807+ if ((fm == fm))
759808 then {
760- let fe = if (eV)
809+ let fn = if (fe)
761810 then {
762- let ff = invoke(eX, "stake", nil, [AttachedPayment(dO, cV)])
763- if ((ff == ff))
811+ let fo = invoke(fg, "stake", nil, [AttachedPayment(dO, cV)])
812+ if ((fo == fo))
764813 then nil
765814 else throw("Strict value is not equal to itself.")
766815 }
767816 else [ScriptTransfer(dq.caller, cV, dO)]
768- (cm ++ fe)
817+ (cm ++ fn)
769818 }
770819 else throw("Strict value is not equal to itself.")
771820 }
772821 else throw("Strict value is not equal to itself.")
773822 }
774823 else throw("Strict value is not equal to itself.")
775824 }
776825 else throw("Strict value is not equal to itself.")
777826 }
778827 }
779828
780829
781830
782831 @Callable(dq)
783-func putOneTkn (dK,dL,fg,bl,eV) = {
832+func putOneTkn (dK,dL,fp,bl,fe) = {
784833 let bC = aJ()
785- let eX = valueOrErrorMessage(addressFromString(bC[y]), "Wr st addr")
786- let eY = valueOrErrorMessage(addressFromString(bC[z]), "Wr sl addr")
787- let fh = valueOrErrorMessage(addressFromString(bC[A]), "Wr gwx addr")
788- let fi = aF()
789- let bU = fi[s]
790- let bV = fi[t]
791- let bW = parseIntValue(fi[u])
792- let bX = parseIntValue(fi[v])
793- let fj = valueOrElse(getString(this, ac()), "")
794- let bS = if ((fj == toString(dq.caller)))
834+ let fg = valueOrErrorMessage(addressFromString(bC[y]), "Wr st addr")
835+ let fh = valueOrErrorMessage(addressFromString(bC[z]), "Wr sl addr")
836+ let fq = valueOrErrorMessage(addressFromString(bC[A]), "Wr gwx addr")
837+ let fr = aF()
838+ let bU = fr[s]
839+ let bV = fr[t]
840+ let bW = parseIntValue(fr[u])
841+ let bX = parseIntValue(fr[v])
842+ let fs = valueOrElse(getString(this, ac()), "")
843+ let bS = if ((fs == toString(dq.caller)))
795844 then dq.originCaller
796845 else dq.caller
797846 if (if (if (if ((0 >= bl))
798847 then true
799848 else (0 >= dK))
800849 then true
801850 else (0 >= dL))
802851 then true
803- else (0 >= fg))
852+ else (0 >= fp))
804853 then throw("Wrong params")
805854 else if ((size(dq.payments) != 1))
806855 then throw("1 pmnt expd")
807856 else {
808857 let dr = value(dq.payments[0])
809858 let bQ = toBase58String(value(dr.assetId))
810- let fk = dr.amount
811- let fl = bL(fk)
812- let cw = fl._1
813- let bN = fl._2
814- if ((10000000 > fk))
859+ let ft = dr.amount
860+ let fu = bL(ft)
861+ let cw = fu._1
862+ let bN = fu._2
863+ if ((10000000 > ft))
815864 then throw("Wrong pmt amt")
816865 else {
817866 let ca = bd(bU)
818867 let cc = bd(bV)
819- let fm = if ((bQ == bU))
820- then if (if ((fk > ca))
868+ let fv = if ((bQ == bU))
869+ then if (if ((ft > ca))
821870 then true
822871 else (dK > cw))
823872 then throw("invalid payment amount")
824- else $Tuple6((ca - fk), cc, (cw - dK), dL, 0, 0)
873+ else $Tuple6((ca - ft), cc, (cw - dK), dL, 0, 0)
825874 else if ((bQ == bV))
826- then if (if ((fk > cc))
875+ then if (if ((ft > cc))
827876 then true
828877 else (dL > cw))
829878 then throw("invalid payment amount")
830- else $Tuple6(ca, (cc - fk), 0, 0, (cw - dL), dK)
879+ else $Tuple6(ca, (cc - ft), 0, 0, (cw - dL), dK)
831880 else throw("wrong pmtAssetId")
832- let dB = fm._1
833- let dC = fm._2
834- let fn = fm._3
835- let fo = fm._4
836- let fp = fm._5
837- let fq = fm._6
838- let bq = invoke(fh, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
839- let bp = invoke(fh, "calcD", [toString(toBigInt(((dB + fn) - fq))), toString(toBigInt(((dC + fp) - fo))), aB, h, i], nil)
840- let fr = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
841- if ((fr == fr))
881+ let dB = fv._1
882+ let dC = fv._2
883+ let fw = fv._3
884+ let fx = fv._4
885+ let fy = fv._5
886+ let fz = fv._6
887+ let bq = invoke(fq, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
888+ let bp = invoke(fq, "calcD", [toString(toBigInt(((dB + fw) - fz))), toString(toBigInt(((dC + fy) - fx))), aB, h, i], nil)
889+ let fA = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
890+ if ((fA == fA))
842891 then {
843892 let dM = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(fromBase58String(bU), dK), AttachedPayment(fromBase58String(bV), dL), bl, true, true, true, cw, bQ)
844893 let dN = dM._2
845894 let dO = dM._7
846895 let cm = dM._9
847896 let cW = dM._10
848897 let cX = dM._11
849- let fs = bi(toBigInt(dN), toBigInt(fg), toBigInt(bl))
850- let cV = toInt(fs._2)
851- let eZ = invoke(aA, "emit", [cV], nil)
852- if ((eZ == eZ))
898+ let fB = bi(toBigInt(dN), toBigInt(fp), toBigInt(bl))
899+ let cV = toInt(fB._2)
900+ let fi = invoke(aA, "emit", [cV], nil)
901+ if ((fi == fi))
853902 then {
854- let fa = {
855- let au = eZ
903+ let fj = {
904+ let au = fi
856905 if ($isInstanceOf(au, "Address"))
857906 then {
858- let fb = au
859- invoke(fb, "emit", [cV], nil)
907+ let fk = au
908+ invoke(fk, "emit", [cV], nil)
860909 }
861910 else unit
862911 }
863- if ((fa == fa))
912+ if ((fj == fj))
864913 then {
865- let fc = if ((cW > 0))
866- then invoke(eY, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
914+ let fl = if ((cW > 0))
915+ then invoke(fh, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
867916 else nil
868- if ((fc == fc))
917+ if ((fl == fl))
869918 then {
870- let fd = if ((cX > 0))
871- then invoke(eY, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
919+ let fm = if ((cX > 0))
920+ then invoke(fh, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
872921 else nil
873- if ((fd == fd))
922+ if ((fm == fm))
874923 then {
875- let fe = if (eV)
924+ let fn = if (fe)
876925 then {
877- let ff = invoke(eX, "stake", nil, [AttachedPayment(dO, cV)])
878- if ((ff == ff))
926+ let fo = invoke(fg, "stake", nil, [AttachedPayment(dO, cV)])
927+ if ((fo == fo))
879928 then nil
880929 else throw("Strict value is not equal to itself.")
881930 }
882931 else [ScriptTransfer(dq.caller, cV, dO)]
883932 let eh = if ((bN > 0))
884933 then [ScriptTransfer(aE, bN, fromBase58String(bQ))]
885934 else nil
886- ((cm ++ fe) ++ eh)
935+ ((cm ++ fn) ++ eh)
887936 }
888937 else throw("Strict value is not equal to itself.")
889938 }
890939 else throw("Strict value is not equal to itself.")
891940 }
892941 else throw("Strict value is not equal to itself.")
893942 }
894943 else throw("Strict value is not equal to itself.")
895944 }
896945 else throw("Strict value is not equal to itself.")
897946 }
898947 }
899948 }
900949
901950
902951
903952 @Callable(dq)
904-func putOneTknV2 (dR,eV) = if ((size(dq.payments) != 1))
953+func putOneTknV2 (dR,fe) = if ((size(dq.payments) != 1))
905954 then throw("1 pmnt expd")
906955 else {
907956 let dy = aF()
908957 let bU = dy[s]
909958 let bV = dy[t]
910959 let dV = parseIntValue(dy[u])
911960 let dW = parseIntValue(dy[v])
912961 let bS = if ((dq.caller == this))
913962 then dq.originCaller
914963 else dq.caller
915964 let dr = value(dq.payments[0])
916965 let bQ = toBase58String(value(dr.assetId))
917966 let cw = dr.amount
918967 if ((10000000 > cw))
919968 then throw("Wrong pmt amt")
920969 else {
921970 let cI = dw(cw, bQ, toString(bS), toBase58String(dq.transactionId))
922971 let dN = cI._2
923972 let dO = cI._7
924973 let cm = cI._9
925974 let cW = cI._10
926975 let cX = cI._11
927976 let cV = if (if ((dR > 0))
928977 then (dR > dN)
929978 else false)
930979 then throw(makeString(["amount to receive is less than ", toString(dR)], ""))
931980 else dN
932- let eZ = invoke(aA, "emit", [cV], nil)
933- if ((eZ == eZ))
981+ let fi = invoke(aA, "emit", [cV], nil)
982+ if ((fi == fi))
934983 then {
935- let fa = {
936- let au = eZ
984+ let fj = {
985+ let au = fi
937986 if ($isInstanceOf(au, "Address"))
938987 then {
939- let fb = au
940- invoke(fb, "emit", [cV], nil)
988+ let fk = au
989+ invoke(fk, "emit", [cV], nil)
941990 }
942991 else unit
943992 }
944- if ((fa == fa))
993+ if ((fj == fj))
945994 then {
946- let fc = if ((cW > 0))
995+ let fl = if ((cW > 0))
947996 then invoke(aM, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
948997 else nil
949- if ((fc == fc))
998+ if ((fl == fl))
950999 then {
951- let fd = if ((cX > 0))
1000+ let fm = if ((cX > 0))
9521001 then invoke(aM, "put", nil, [AttachedPayment(fromBase58String(bV), cX)])
9531002 else nil
954- if ((fd == fd))
1003+ if ((fm == fm))
9551004 then {
956- let fe = if (eV)
1005+ let fn = if (fe)
9571006 then {
958- let ff = invoke(aL, "stake", nil, [AttachedPayment(dO, cV)])
959- if ((ff == ff))
1007+ let fo = invoke(aL, "stake", nil, [AttachedPayment(dO, cV)])
1008+ if ((fo == fo))
9601009 then nil
9611010 else throw("Strict value is not equal to itself.")
9621011 }
9631012 else [ScriptTransfer(dq.caller, cV, dO)]
9641013 let bN = bL(cw)._2
9651014 let eh = if ((bN > 0))
9661015 then [ScriptTransfer(aE, bN, fromBase58String(bQ))]
9671016 else nil
968- $Tuple2(((cm ++ fe) ++ eh), cV)
1017+ $Tuple2(((cm ++ fn) ++ eh), cV)
9691018 }
9701019 else throw("Strict value is not equal to itself.")
9711020 }
9721021 else throw("Strict value is not equal to itself.")
9731022 }
9741023 else throw("Strict value is not equal to itself.")
9751024 }
9761025 else throw("Strict value is not equal to itself.")
9771026 }
9781027 }
9791028
9801029
9811030
9821031 @Callable(dq)
983-func putOneTknV2OldREADONLY (ft,fu) = {
984- let cI = dw(ft, fu, "", "")
1032+func putOneTknV2OldREADONLY (fC,fD) = {
1033+ let cI = dw(fC, fD, "", "")
9851034 let dN = cI._2
9861035 let dO = cI._7
9871036 let cm = cI._9
9881037 let cW = cI._10
9891038 let cX = cI._11
9901039 $Tuple2(nil, dN)
9911040 }
9921041
9931042
9941043
9951044 @Callable(dq)
996-func putOneTknV2WithBonusREADONLY (ft,fu) = {
1045+func putOneTknV2WithBonusREADONLY (fC,fD) = {
9971046 let dy = aF()
9981047 let bU = dy[s]
9991048 let bV = dy[t]
1000- let cI = dw(ft, fu, "", "")
1049+ let cI = dw(fC, fD, "", "")
10011050 let dN = cI._2
10021051 let cf = cI._3
1003- let fv = cI._6
1052+ let fE = cI._6
10041053 let dO = cI._7
10051054 let ca = bd(bU)
10061055 let cc = bd(bV)
1007- let fw = fraction(cc, a, ca)
1008- let fx = fraction(ft, a, (fw + a))
1009- let fy = (ft - fx)
1010- let fz = fraction(fv, fy, cc)
1011- let fA = fraction((dN - fz), a, fz)
1012- let bN = bL(ft)._2
1013- $Tuple2(nil, $Tuple3(dN, bN, fA))
1056+ let fF = fraction(cc, a, ca)
1057+ let fG = fraction(fC, a, (fF + a))
1058+ let fH = (fC - fG)
1059+ let fI = fraction(fE, fH, cc)
1060+ let fJ = fraction((dN - fI), a, fI)
1061+ let bN = bL(fC)._2
1062+ $Tuple2(nil, $Tuple3(dN, bN, fJ))
10141063 }
10151064
10161065
10171066
10181067 @Callable(dq)
1019-func putForFree (fB) = if ((0 > fB))
1068+func putForFree (fK) = if ((0 > fK))
10201069 then throw("Wrong slpg")
10211070 else if ((size(dq.payments) != 2))
10221071 then throw("2 pmnts expd")
10231072 else {
1024- let dM = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], fB, false, false, true, 0, "")
1073+ let dM = ds(toString(dq.caller), toBase58String(dq.transactionId), AttachedPayment(value(dq.payments[0]).assetId, value(dq.payments[0]).amount), dq.payments[1], fK, false, false, true, 0, "")
10251074 dM._9
10261075 }
10271076
10281077
10291078
10301079 @Callable(dq)
10311080 func get () = {
10321081 let cI = dp(dq)
1033- let fC = cI._1
1082+ let fL = cI._1
10341083 let cl = cI._2
10351084 let cw = cI._3
10361085 let bQ = cI._4
10371086 let cm = cI._5
1038- let fD = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1039- if ((fD == fD))
1087+ let eO = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1088+ if ((eO == eO))
10401089 then cm
10411090 else throw("Strict value is not equal to itself.")
10421091 }
10431092
10441093
10451094
10461095 @Callable(dq)
1047-func getOneTkn (fE,fF,fG,dQ,bl) = if ((size(dq.payments) != 1))
1096+func getOneTkn (fM,fN,fO,dQ,bl) = if ((size(dq.payments) != 1))
10481097 then throw("1 pmnt expd")
10491098 else {
10501099 let bC = aF()
10511100 let bT = bC[r]
10521101 let bU = bC[s]
10531102 let bV = bC[t]
10541103 let bW = parseIntValue(bC[u])
10551104 let bX = parseIntValue(bC[v])
10561105 let bY = bC[q]
1057- let eW = aJ()
1058- let fh = valueOrErrorMessage(addressFromString(eW[A]), "Wr sl addr")
1106+ let ff = aJ()
1107+ let fq = valueOrErrorMessage(addressFromString(ff[A]), "Wr sl addr")
10591108 let dr = value(dq.payments[0])
1060- let fj = valueOrElse(getString(this, ac()), "")
1061- let bS = if ((fj == toString(dq.caller)))
1109+ let fs = valueOrElse(getString(this, ac()), "")
1110+ let bS = if ((fs == toString(dq.caller)))
10621111 then dq.originCaller
10631112 else dq.caller
10641113 let bP = toBase58String(dq.transactionId)
10651114 let bQ = value(dr.assetId)
10661115 let cw = dr.amount
10671116 if ((1000000000 > cw))
10681117 then throw("Min pmt 10 LP")
10691118 else if (if (if ((0 > bl))
10701119 then true
1071- else (0 > fE))
1120+ else (0 > fM))
10721121 then true
1073- else (0 > fG))
1122+ else (0 > fO))
10741123 then throw("Wrong params")
10751124 else if ((bT != toBase58String(bQ)))
10761125 then throw("Wrong LP")
10771126 else {
10781127 let cI = bO(toBase58String(dq.transactionId), toBase58String(bQ), cw, dq.caller)
1079- let fH = cI._1
1080- let fI = cI._2
1128+ let fP = cI._1
1129+ let fQ = cI._2
10811130 let ca = bd(bU)
10821131 let cc = bd(bV)
1083- let fJ = if ((dQ == bU))
1084- then $Tuple7((ca - fH), (cc - fI), fE, fI, 0, 0, (fH + fE))
1132+ let fR = if ((dQ == bU))
1133+ then $Tuple7((ca - fP), (cc - fQ), fM, fQ, 0, 0, (fP + fM))
10851134 else if ((dQ == bV))
1086- then $Tuple7((ca - fH), (cc - fI), 0, 0, fE, fH, (fI + fE))
1135+ then $Tuple7((ca - fP), (cc - fQ), 0, 0, fM, fP, (fQ + fM))
10871136 else throw("wrong outAssetId")
1088- let dB = fJ._1
1089- let dC = fJ._2
1090- let fn = fJ._3
1091- let fo = fJ._4
1092- let fp = fJ._5
1093- let fq = fJ._6
1094- let fK = fJ._7
1095- if (if ((0 > fn))
1137+ let dB = fR._1
1138+ let dC = fR._2
1139+ let fw = fR._3
1140+ let fx = fR._4
1141+ let fy = fR._5
1142+ let fz = fR._6
1143+ let fS = fR._7
1144+ if (if ((0 > fw))
10961145 then true
1097- else (0 > fp))
1146+ else (0 > fy))
10981147 then throw("Wrong calc")
10991148 else {
1100- let bq = invoke(fh, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
1101- let bp = invoke(fh, "calcD", [toString(((dB - fn) + fq)), toString(((dC + fo) - fp)), aB, h, i], nil)
1102- let fr = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
1103- if ((fr == fr))
1149+ let bq = invoke(fq, "calcD", [toString(dB), toString(dC), aB, h, i], nil)
1150+ let bp = invoke(fq, "calcD", [toString(((dB - fw) + fz)), toString(((dC + fx) - fy)), aB, h, i], nil)
1151+ let fA = bo(parseBigIntValue(at(bp)), parseBigIntValue(at(bq)), g)
1152+ if ((fA == fA))
11041153 then {
1105- let dZ = bL(fK)._1
1106- let fL = bi(toBigInt(dZ), toBigInt(fG), toBigInt(bl))
1107- if ((fL == fL))
1154+ let dZ = bL(fS)._1
1155+ let fT = bi(toBigInt(dZ), toBigInt(fO), toBigInt(bl))
1156+ if ((fT == fT))
11081157 then {
1109- let fM = if ((dQ == bU))
1110- then $Tuple2(toInt(fL._2), 0)
1111- else $Tuple2(0, toInt(fL._2))
1112- let ec = fM._1
1113- let ed = fM._2
1158+ let fU = if ((dQ == bU))
1159+ then $Tuple2(toInt(fT._2), 0)
1160+ else $Tuple2(0, toInt(fT._2))
1161+ let ec = fU._1
1162+ let ed = fU._2
11141163 let ea = (ec + ed)
1115- let bN = (fK - dZ)
1164+ let bN = (fS - dZ)
11161165 let eg = if ((dQ == "WAVES"))
11171166 then unit
11181167 else fromBase58String(dQ)
11191168 let eh = if ((bN > 0))
11201169 then [ScriptTransfer(aE, bN, eg)]
11211170 else nil
11221171 let ee = bf(C(cc, bX), C(ca, bW))
11231172 let ef = F(ee, a)
11241173 let cm = [ScriptTransfer(bS, ea, eg), StringEntry(Y(toString(bS), bP), aZ(ec, ed, cw, ef, height, lastBlock.timestamp)), IntegerEntry(R(), ef), IntegerEntry(S(height, lastBlock.timestamp), ef)]
11251174 if ((cm == cm))
11261175 then {
11271176 let ei = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
11281177 if ((ei == ei))
11291178 then (cm ++ eh)
11301179 else throw("Strict value is not equal to itself.")
11311180 }
11321181 else throw("Strict value is not equal to itself.")
11331182 }
11341183 else throw("Strict value is not equal to itself.")
11351184 }
11361185 else throw("Strict value is not equal to itself.")
11371186 }
11381187 }
11391188 }
11401189
11411190
11421191
11431192 @Callable(dq)
11441193 func getOneTknV2 (dQ,dR) = {
1145- let fN = dP(dQ, dR, dq.payments, dq.caller, dq.originCaller, dq.transactionId)
1146- let cm = fN._1
1147- let ea = fN._2
1194+ let fV = dP(dQ, dR, dq.payments, dq.caller, dq.originCaller, dq.transactionId)
1195+ let cm = fV._1
1196+ let ea = fV._2
11481197 $Tuple2(cm, ea)
11491198 }
11501199
11511200
11521201
11531202 @Callable(dq)
1154-func getOneTknV2READONLY (dQ,fO) = {
1203+func getOneTknV2OldREADONLY (dQ,fW) = {
11551204 let dy = aF()
11561205 let bT = dy[r]
11571206 let bU = dy[s]
11581207 let bV = dy[t]
1159- let cI = bO("", bT, fO, this)
1160- let fH = cI._1
1161- let fI = cI._2
1208+ let cI = bO("", bT, fW, this)
1209+ let fP = cI._1
1210+ let fQ = cI._2
11621211 let ca = bd(bU)
11631212 let cc = bd(bV)
1164- let dB = (ca - fH)
1165- let dC = (cc - fI)
1166- let fP = if ((dQ == bU))
1167- then $Tuple4(dC, dB, fI, fH)
1213+ let dB = (ca - fP)
1214+ let dC = (cc - fQ)
1215+ let fX = if ((dQ == bU))
1216+ then $Tuple4(dC, dB, fQ, fP)
11681217 else if ((dQ == bV))
1169- then $Tuple4(dB, dC, fH, fI)
1218+ then $Tuple4(dB, dC, fP, fQ)
11701219 else throw("wrong outAssetId")
1171- let fQ = fP._1
1172- let fR = fP._2
1173- let fS = fP._3
1174- let fT = fP._4
1175- let fU = 1
1176- let fE = {
1177- let dI = invoke(aN, "calcSwapXToY", [toString(fS), toString(fQ), toString(fR), "", aB, h, toString(fU), i], nil)
1220+ let fY = fX._1
1221+ let fZ = fX._2
1222+ let ga = fX._3
1223+ let gb = fX._4
1224+ let gc = 1
1225+ let fM = {
1226+ let dI = invoke(aN, "calcSwapXToY", [toString(ga), toString(fY), toString(fZ), "", aB, h, toString(gc), i], nil)
11781227 if ($isInstanceOf(dI, "Int"))
11791228 then dI
11801229 else throw(($getType(dI) + " couldn't be cast to Int"))
11811230 }
1182- let fK = (fE + fT)
1183- let fV = bL(fK)
1184- let dZ = fV._1
1185- let bN = fV._2
1231+ let fS = (fM + gb)
1232+ let gd = bL(fS)
1233+ let dZ = gd._1
1234+ let bN = gd._2
11861235 $Tuple2(nil, $Tuple2(dZ, bN))
11871236 }
11881237
11891238
11901239
11911240 @Callable(dq)
1192-func getOneTknV2WithBonusREADONLY (dQ,fO) = {
1241+func getOneTknV2READONLY (dQ,fW) = {
1242+ let dy = aF()
1243+ let bU = dy[s]
1244+ let bV = dy[t]
1245+ let bT = dy[r]
1246+ let ek = [toBigInt(bd(bU)), toBigInt(bd(bV))]
1247+ let ge = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bT)), "invalid lp asset").quantity)
1248+ let bq = ej(ek)
1249+ let bp = (bq - ((toBigInt(fW) * bq) / ge))
1250+ let gf = if ((dQ == bU))
1251+ then 0
1252+ else 1
1253+ let gg = eK(ek, gf, bp)
1254+ let gh = (ek[gf] - gg)
1255+ let fS = toInt((gh - f))
1256+ let gi = bL(fS)
1257+ let dZ = gi._1
1258+ let bN = gi._2
1259+ $Tuple2(nil, $Tuple2(dZ, bN))
1260+ }
1261+
1262+
1263+
1264+@Callable(dq)
1265+func getOneTknV2WithBonusREADONLY (dQ,fW) = {
11931266 let dy = aF()
11941267 let bU = dy[s]
11951268 let bV = dy[t]
11961269 let bT = dy[r]
11971270 let ca = bd(bU)
11981271 let cc = bd(bV)
1199- let fW = {
1200- let dI = invoke(this, "getOneTknV2READONLY", [dQ, fO], nil)
1272+ let gj = {
1273+ let dI = invoke(this, "getOneTknV2READONLY", [dQ, fW], nil)
12011274 if ($isInstanceOf(dI, "(Int, Int)"))
12021275 then dI
12031276 else throw(($getType(dI) + " couldn't be cast to (Int, Int)"))
12041277 }
1205- let dZ = fW._1
1206- let bN = fW._2
1207- let cI = bO("", bT, fO, this)
1278+ let dZ = gj._1
1279+ let bN = gj._2
1280+ let cI = bO("", bT, fW, this)
12081281 let ck = cI._1
12091282 let cl = cI._2
1210- let fX = (ck + cl)
1211- let fA = fraction((dZ - fX), a, fX)
1212- $Tuple2(nil, $Tuple3(dZ, bN, fA))
1283+ let gk = (ck + cl)
1284+ let fJ = fraction((dZ - gk), a, gk)
1285+ $Tuple2(nil, $Tuple3(dZ, bN, fJ))
12131286 }
12141287
12151288
12161289
12171290 @Callable(dq)
1218-func getNoLess (fY,fZ) = {
1291+func getNoLess (gl,gm) = {
12191292 let cI = dp(dq)
12201293 let ck = cI._1
12211294 let cl = cI._2
12221295 let cw = cI._3
12231296 let bQ = cI._4
12241297 let cm = cI._5
1225- if ((fY > ck))
1226- then throw(((("Failed: " + toString(ck)) + " < ") + toString(fY)))
1227- else if ((fZ > cl))
1228- then throw(((("Failed: " + toString(cl)) + " < ") + toString(fZ)))
1298+ if ((gl > ck))
1299+ then throw(((("Failed: " + toString(ck)) + " < ") + toString(gl)))
1300+ else if ((gm > cl))
1301+ then throw(((("Failed: " + toString(cl)) + " < ") + toString(gm)))
12291302 else {
1230- let ga = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1231- if ((ga == ga))
1303+ let gn = invoke(aA, "burn", [cw], [AttachedPayment(bQ, cw)])
1304+ if ((gn == gn))
12321305 then cm
12331306 else throw("Strict value is not equal to itself.")
12341307 }
12351308 }
12361309
12371310
12381311
12391312 @Callable(dq)
12401313 func unstakeAndGet (bM) = {
1241- let gb = if ((size(dq.payments) != 0))
1314+ let go = if ((size(dq.payments) != 0))
12421315 then throw("No pmnts expd")
12431316 else true
1244- if ((gb == gb))
1317+ if ((go == go))
12451318 then {
12461319 let bC = aF()
1247- let gc = aJ()
1320+ let gp = aJ()
12481321 let dO = fromBase58String(bC[r])
1249- let gd = valueOrErrorMessage(addressFromString(gc[y]), "Wr st addr")
1250- let ge = invoke(gd, "unstake", [toBase58String(dO), bM], nil)
1251- if ((ge == ge))
1322+ let gq = valueOrErrorMessage(addressFromString(gp[y]), "Wr st addr")
1323+ let gr = invoke(gq, "unstake", [toBase58String(dO), bM], nil)
1324+ if ((gr == gr))
12521325 then {
12531326 let cI = bO(toBase58String(dq.transactionId), toBase58String(dO), bM, dq.caller)
12541327 let bY = parseIntValue(cI._9)
12551328 let cm = cI._10
1256- let gf = if (if (aC())
1329+ let gs = if (if (aC())
12571330 then true
12581331 else (bY == o))
12591332 then throw(("Blocked: " + toString(bY)))
12601333 else true
1261- if ((gf == gf))
1334+ if ((gs == gs))
12621335 then {
1263- let gg = invoke(aA, "burn", [bM], [AttachedPayment(dO, bM)])
1264- if ((gg == gg))
1336+ let gt = invoke(aA, "burn", [bM], [AttachedPayment(dO, bM)])
1337+ if ((gt == gt))
12651338 then cm
12661339 else throw("Strict value is not equal to itself.")
12671340 }
12681341 else throw("Strict value is not equal to itself.")
12691342 }
12701343 else throw("Strict value is not equal to itself.")
12711344 }
12721345 else throw("Strict value is not equal to itself.")
12731346 }
12741347
12751348
12761349
12771350 @Callable(dq)
1278-func unstakeAndGetOneTkn (gh,dQ,dR) = {
1279- let gb = if ((size(dq.payments) != 0))
1351+func unstakeAndGetOneTkn (gu,dQ,dR) = {
1352+ let go = if ((size(dq.payments) != 0))
12801353 then throw("No pmnts expd")
12811354 else true
1282- if ((gb == gb))
1355+ if ((go == go))
12831356 then {
12841357 let bC = aF()
1285- let gc = aJ()
1358+ let gp = aJ()
12861359 let dO = fromBase58String(bC[r])
1287- let gd = valueOrErrorMessage(addressFromString(gc[y]), "Wr st addr")
1288- let ge = invoke(gd, "unstake", [toBase58String(dO), gh], nil)
1289- if ((ge == ge))
1360+ let gq = valueOrErrorMessage(addressFromString(gp[y]), "Wr st addr")
1361+ let gr = invoke(gq, "unstake", [toBase58String(dO), gu], nil)
1362+ if ((gr == gr))
12901363 then {
1291- let gi = dP(dQ, dR, [AttachedPayment(dO, gh)], dq.caller, dq.originCaller, dq.transactionId)
1292- let cm = gi._1
1293- let ea = gi._2
1364+ let gv = dP(dQ, dR, [AttachedPayment(dO, gu)], dq.caller, dq.originCaller, dq.transactionId)
1365+ let cm = gv._1
1366+ let ea = gv._2
12941367 $Tuple2(cm, ea)
12951368 }
12961369 else throw("Strict value is not equal to itself.")
12971370 }
12981371 else throw("Strict value is not equal to itself.")
12991372 }
13001373
13011374
13021375
13031376 @Callable(dq)
1304-func putOneTknV2READONLY (bM,gj) = {
1377+func putOneTknV2READONLY (bM,gw) = {
13051378 let dy = aF()
13061379 let bU = dy[s]
13071380 let bV = dy[t]
13081381 let bT = dy[r]
1309- let gk = gj
1310- let fk = bM
1311- let gl = bL(fk)
1312- let ft = gl._1
1313- let bN = gl._2
1314- let gm = if ((gk == bU))
1315- then $Tuple2(ft, 0)
1316- else if ((gk == bV))
1317- then $Tuple2(0, ft)
1382+ let gx = gw
1383+ let ft = bM
1384+ let gy = bL(ft)
1385+ let fC = gy._1
1386+ let bN = gy._2
1387+ let gz = if ((gx == bU))
1388+ then $Tuple2(fC, 0)
1389+ else if ((gx == bV))
1390+ then $Tuple2(0, fC)
13181391 else throw("invalid payment")
1319- let gn = gm._1
1320- let go = gm._2
1321- let gp = bd(bU)
1322- let gq = bd(bV)
1323- let gr = (gp + gn)
1324- let gs = (gp + go)
1325- let bq = ej([toBigInt(gp), toBigInt(gq)])
1326- let bp = ej([toBigInt(gr), toBigInt(gs)])
1327- let gt = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bT)), "invalid lp asset").quantity)
1328- let gu = ((gt * (bp - bq)) / bq)
1329- $Tuple2(nil, toInt(gu))
1392+ let gA = gz._1
1393+ let gB = gz._2
1394+ let gC = bd(bU)
1395+ let gD = bd(bV)
1396+ let gE = (gC + gA)
1397+ let gF = (gC + gB)
1398+ let bq = ej([toBigInt(gC), toBigInt(gD)])
1399+ let bp = ej([toBigInt(gE), toBigInt(gF)])
1400+ let ge = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(bT)), "invalid lp asset").quantity)
1401+ let gG = ((ge * (bp - bq)) / bq)
1402+ $Tuple2(nil, toInt(gG))
13301403 }
13311404
13321405
13331406
13341407 @Callable(dq)
1335-func activate (gv,gw) = if ((toString(dq.caller) != toString(aA)))
1408+func activate (gH,gI) = if ((toString(dq.caller) != toString(aA)))
13361409 then throw("denied")
1337- else $Tuple2([StringEntry(Z(), gv), StringEntry(aa(), gw)], "success")
1410+ else $Tuple2([StringEntry(Z(), gH), StringEntry(aa(), gI)], "success")
13381411
13391412
13401413
13411414 @Callable(dq)
1342-func setS (gx,gf) = if ((toString(dq.caller) != aw(this, ac())))
1343- then eM
1344- else [StringEntry(gx, gf)]
1415+func setS (gJ,gs) = if ((toString(dq.caller) != aw(this, ac())))
1416+ then eW
1417+ else [StringEntry(gJ, gs)]
13451418
13461419
13471420
13481421 @Callable(dq)
1349-func setI (gx,gf) = if ((toString(dq.caller) != aw(this, ac())))
1350- then eM
1351- else [IntegerEntry(gx, gf)]
1422+func setI (gJ,gs) = if ((toString(dq.caller) != aw(this, ac())))
1423+ then eW
1424+ else [IntegerEntry(gJ, gs)]
13521425
13531426
13541427
13551428 @Callable(dq)
13561429 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aF())
13571430
13581431
13591432
13601433 @Callable(dq)
13611434 func getAccBalanceWrapperREADONLY (be) = $Tuple2(nil, bd(be))
13621435
13631436
13641437
13651438 @Callable(dq)
13661439 func calcPricesWrapperREADONLY (bw,bx,bB) = {
1367- let gy = bA(bw, bx, bB)
1368- $Tuple2(nil, [toString(gy[0]), toString(gy[1]), toString(gy[2])])
1440+ let gK = bA(bw, bx, bB)
1441+ $Tuple2(nil, [toString(gK[0]), toString(gK[1]), toString(gK[2])])
13691442 }
13701443
13711444
13721445
13731446 @Callable(dq)
1374-func fromX18WrapperREADONLY (G,gz) = $Tuple2(nil, F(parseBigIntValue(G), gz))
1447+func fromX18WrapperREADONLY (G,gL) = $Tuple2(nil, F(parseBigIntValue(G), gL))
13751448
13761449
13771450
13781451 @Callable(dq)
13791452 func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
13801453
13811454
13821455
13831456 @Callable(dq)
13841457 func calcPriceBigIntWrapperREADONLY (bg,bh) = $Tuple2(nil, toString(bf(parseBigIntValue(bg), parseBigIntValue(bh))))
13851458
13861459
13871460
13881461 @Callable(dq)
1389-func estimatePutOperationWrapperREADONLY (bP,bl,co,cp,cq,cr,gA,cs,ct) = $Tuple2(nil, cn(bP, bl, co, cp, cq, cr, gA, cs, ct, true, false, 0, ""))
1462+func estimatePutOperationWrapperREADONLY (bP,bl,co,cp,cq,cr,gM,cs,ct) = $Tuple2(nil, cn(bP, bl, co, cp, cq, cr, gM, cs, ct, true, false, 0, ""))
13901463
13911464
13921465
13931466 @Callable(dq)
1394-func estimateGetOperationWrapperREADONLY (bP,gB,bR,gA) = {
1395- let cI = bO(bP, gB, bR, addressFromStringValue(gA))
1467+func estimateGetOperationWrapperREADONLY (bP,gN,bR,gM) = {
1468+ let cI = bO(bP, gN, bR, addressFromStringValue(gM))
13961469 $Tuple2(nil, $Tuple10(cI._1, cI._2, cI._3, cI._4, cI._5, cI._6, cI._7, toString(cI._8), cI._9, cI._10))
13971470 }
13981471
13991472
14001473
14011474 @Callable(dq)
14021475 func getFeeREADONLY () = $Tuple2(nil, ae)
14031476
14041477
1405-@Verifier(gC)
1406-func gD () = {
1407- let gE = {
1408- let au = eK()
1478+@Verifier(gO)
1479+func gP () = {
1480+ let gQ = {
1481+ let au = eU()
14091482 if ($isInstanceOf(au, "ByteVector"))
14101483 then {
1411- let eO = au
1412- eO
1484+ let eY = au
1485+ eY
14131486 }
14141487 else if ($isInstanceOf(au, "Unit"))
1415- then gC.senderPublicKey
1488+ then gO.senderPublicKey
14161489 else throw("Match error")
14171490 }
1418- let au = gC
1491+ let au = gO
14191492 if ($isInstanceOf(au, "Order"))
14201493 then {
14211494 let dd = au
1422- let gF = aD()
1423- let gG = dc(dd)
1424- let gH = sigVerify(dd.bodyBytes, dd.proofs[0], dd.senderPublicKey)
1425- let gI = sigVerify(dd.bodyBytes, dd.proofs[1], gF)
1426- if (if (if (gG)
1427- then gH
1495+ let gR = aD()
1496+ let gS = dc(dd)
1497+ let gT = sigVerify(dd.bodyBytes, dd.proofs[0], dd.senderPublicKey)
1498+ let gU = sigVerify(dd.bodyBytes, dd.proofs[1], gR)
1499+ if (if (if (gS)
1500+ then gT
14281501 else false)
1429- then gI
1502+ then gU
14301503 else false)
14311504 then true
1432- else ap(gG, gH, gI)
1505+ else ap(gS, gT, gU)
14331506 }
14341507 else if ($isInstanceOf(au, "SetScriptTransaction"))
14351508 then {
14361509 let eq = au
1437- let gJ = blake2b256(value(eq.script))
1438- let gK = fromBase64String(value(getString(aA, an())))
1439- let gL = scriptHash(this)
1440- if (if ((gK == gJ))
1441- then (gL != gJ)
1510+ let gV = blake2b256(value(eq.script))
1511+ let gW = fromBase64String(value(getString(aA, an())))
1512+ let gX = scriptHash(this)
1513+ if (if ((gW == gV))
1514+ then (gX != gV)
14421515 else false)
14431516 then true
1444- else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
1517+ else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
14451518 }
1446- else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
1519+ else sigVerify(gO.bodyBytes, gO.proofs[0], gQ)
14471520 }
14481521

github/deemru/w8io/c3f4982 
271.69 ms