tx · 8QM9tca9vsupr8qCpWhjN6t68CQuNDTfTTrJy6maZRww

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03100000 Waves

2022.09.16 17:54 [2231810] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "8QM9tca9vsupr8qCpWhjN6t68CQuNDTfTTrJy6maZRww", "fee": 3100000, "feeAssetId": null, "timestamp": 1663340158930, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "2oudUqe8tvE4uMrEoVxDQZPSfyXAzzZQTxAgWyYS1zj7Zf7NepAVpReRzb5BaaXU3XxBPgajyjV24BeG4LwJjPQK" ], "script": "base64:BgLEHggCEgMKAQgSAwoBCBIAEgQKAgEEEgcKBQEBAQEEEgQKAgEEEgQKAgEIEgQKAgEIEgMKAQESABIHCgUBAQEIARIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgYKBAEBCAESBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCCIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCHRob3VzYW5kIgp6ZXJvQmlnSW50IglvbmVCaWdJbnQiCnNsaXBwYWdlNEQiBUFtdWx0IgVEY29udiIDU0VQIgVFTVBUWSIKUG9vbEFjdGl2ZSIKUG9vbFB1dERpcyIOUG9vbE1hdGNoZXJEaXMiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiCWlkeFBvb2xTdCIJaWR4TFBBc0lkIglpZHhBbUFzSWQiCWlkeFByQXNJZCILaWR4QW10QXNEY20iDWlkeFByaWNlQXNEY20iC2lkeElBbXRBc0lkIg1pZHhJUHJpY2VBc0lkIg9pZHhGYWN0U3Rha0NudHIiEGlkeEZhY3RTbGlwcENudHIiEWlkeEZhY3RHd3hSZXdDbnRyIhJmZWVQZXJtaWxsZURlZmF1bHQiAnQxIgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiAnRzIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiAXQiA3BhdSICdWEiBHR4SWQiA2dhdSICYWEiAnBhIgNhbXAiA2FkYSIOa2V5RmVlUGVybWlsbGUiC2ZlZVBlcm1pbGxlIgRmY2ZnIgRtdHBrIgJwYyIGaUFtdEFzIgVpUHJBcyIDbWJhIgViQVN0ciIDYXBzIhxrZXlBbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIgN0b2UiA29yViIGc2VuZHJWIgZtYXRjaFYiA3N0ciIHJG1hdGNoMCIGdmFsU3RyIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiA2ZjYSIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIDZmVlIgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTYyNzExNjYxNiIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiA21vYSIFb3JkZXIiB2FtdEFzSWQiBnByQXNJZCIPYWNjQW10QXNCYWxhbmNlIg5hY2NQckFzQmFsYW5jZSIKb3JBbXRBc3NldCIKb3JBbXRBc1N0ciIJb3JQckFzc2V0IglvclByQXNTdHIiCm9yZGVyUHJpY2UiDmNhc3RPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCICY2ciAWkiA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCITZXN0aW1hdGVQdXRPbmVUa25WMiIJcG10QW10UmF3Igpwb29sQ29uZmlnIg0kdDAyMDk0MjIwOTg3IglmZWVBbW91bnQiDSR0MDIwOTkxMjE0NTIiDGFtQmFsYW5jZU5vdyIMcHJCYWxhbmNlTm93Ig0kdDAyMTQ1NjIxNTkwIhBhbUJhbGFuY2VGb3JDYWxjIhBwckJhbGFuY2VGb3JDYWxjIgp4UHJlY2lzaW9uIgZyZXN1bHQiAUAiDSR0MDIyMDU5MjIxNTUiC2FtQXNzZXRQYXJ0IgtwckFzc2V0UGFydCIGZXN0UHV0Igdlc3RpbUxQIglscEFzc2V0SWQiAW0iAXMiAnBtIgJwZCICbW0iAnBrIgFjIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIBZSICZWwiBmxlZ2FjeSICc2EiAnNwIghscFRybnNmciICc3MiBW91dExwIgdnd3hDbnRyIgdwb29sQ2ZnIgVhZGRvbiIQcGF5bWVudEFtb3VudFJhdyINJHQwMjcxMjUyNzE3NyINJHQwMjczMzcyNzk1MyIMdmlydFN3YXBJbkFtIg12aXJ0U3dhcE91dFByIgx2aXJ0U3dhcEluUHIiDXZpcnRTd2FwT3V0QW0iBkQwdnNEMSIJbHBDYWxjUmVzIhBzZW5kRmVlVG9NYXRjaGVyIgxtaW5PdXRBbW91bnQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiDXBheW1lbnRBbW91bnQiDnBheW1lbnRBc3NldElkIg9scEFzc2V0RW1pc3Npb24iDSR0MDMyNzgwMzMwODkiEHByaWNlQXNzZXRBbW91bnQiEWFtb3VudEFzc2V0QW1vdW50IglscEFtdEJvdGgiD2xwQXNzZXRQcmljZU9uZSIQbHBBc3NldFByaWNlQm90aCIFYm9udXMiB21heFNscGciCW91dEFtdEFtdCIBYiIKZXhjaFJlc3VsdCIHbm90VXNlZCIJb3V0QW1vdW50IgpvdXRBc3NldElkIgplc3RpbUFtQW10Igplc3RpbVByQW10Ig0kdDAzNjM3MDM2ODMwIgt0b3RhbEdldFJhdyIIdG90YWxHZXQiCGZpbmFsUmVzIg0kdDAzNzU3NzM3NjgxIgVvdXRBbSIFb3V0UHIiC3RvdGFsQW1vdW50IhFvdXRBc3NldElkT3JXYXZlcyIIY3VyUHJYMTgiBWN1clByIgRidXJuIgpwb29sU3RhdHVzIg0kdDAzOTc3NTM5ODYyIg1scEFzc2V0QW1vdW50Ig0kdDA0MDk1NjQxMjI3IhRhbW91bnRCYWxhbmNlRm9yU3dhcCITcHJpY2VCYWxhbmNlRm9yU3dhcCIMYW1vdW50VG9Td2FwIgp5UHJlY2lzaW9uIg0kdDA0MTc5OTQxODQ4Ig0kdDA0MjE5MjQyMzA3IhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiD291dEFtb3VudFJlc3VsdCIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoVwABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZADoBwABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEJAGUCBQFhCQBpAgkAaAIFAWEAAQUBYQABaAIDMTAwAAFpAgExAAFqAgJfXwABawIAAAFsAAEAAW0AAgABbgADAAFvAAQAAXAAAQABcQACAAFyAAMAAXMABAABdAAFAAF1AAYAAXYABwABdwAIAAF4AAkAAXkAAQABegAHAAFBAAoAAUIAAAEBQwIBRAFFCQC8AgMJALYCAQUBRAUBYwkAtgIBBQFFAQFGAgFHAUgJAKADAQkAvAIDBQFHCQC2AgEFAUgFAWMBAUkDAUoBSwFMCQBrAwUBSgUBSwUBTAEBTQEBRwMJAL8CAgUBZQUBRwkAvgIBBQFHBQFHAQFOAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBTwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFQAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFRAAIRJXMlc19fcHJpY2VfX2xhc3QBAVICAVMBVAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVMJAMwIAgkApAMBBQFUBQNuaWwFAWoBAVUCAVYBVwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVYCAl9fBQFXAQFYAgFWAVcJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFWAgJfXwUBVwEBWQACDyVzX19hbW91bnRBc3NldAEBWgACDiVzX19wcmljZUFzc2V0AQJhYQACByVzX19hbXABAmFiAAINJXNfX2FkZG9uQWRkcgACYWMCDyVzX19mZWVQZXJtaWxsZQACYWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWMFAUIBAmFlAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFmAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhZwICYWgCYWkJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFoAgJfXwUCYWkCCF9fY29uZmlnAQJhagECYWsJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYWsBAmFsAAIMJXNfX3NodXRkb3duAQJhbQACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJhbgACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhbwMCYXACYXECYXIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUCYXACCyBzbmRyVmFsaWQ9CQClAwEFAmFxAgwgbXRjaHJWYWxpZD0JAKUDAQUCYXIBAmFzAQFHBAJhdAUBRwMJAAECBQJhdAIGU3RyaW5nBAJhdQUCYXQFAmF1CQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwECYXYCAmF3AmF4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXcFAmF4CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF3CQDMCAICAS4JAMwIAgUCYXgJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYXkCAmF3AmF4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXcFAmF4CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF3CQDMCAICAS4JAMwIAgUCYXgJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAACYXoJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhdgIFBHRoaXMJAQFOAAACYUEJAQJhdgIFBHRoaXMJAQJhYQABAmFCAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhegkBAmFsAAcBAmFDAAkA2QQBCQECYXYCBQJhegkBAmFmAAACYUQJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhdgIFAmF6CQECYW4AAQJhRQAEAmFGCQECYXYCBQR0aGlzCQEBWQAEAmFHCQECYXYCBQR0aGlzCQEBWgAEAmFICQECYXkCBQJhegkBAmFqAQUCYUcEAmFoCQECYXkCBQJhegkBAmFqAQUCYUYJALUJAgkBAmF2AgUCYXoJAQJhZwIJAKQDAQUCYWgJAKQDAQUCYUgFAWoBAmFJAAkAtQkCCQECYXYCBQJhegkBAmFlAAUBagACYUoJAQJhSQAAAmFLCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJhSgUBeQIgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MAAmFMCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJhSgUBegIgSW52YWxpZCBzbGlwYWdlIGNvbnRyYWN0IGFkZHJlc3MAAmFNCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJhSgUBQQIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYU4KAmFPAmFQAmFRAmFSAmFTAmFUAmFVAmFWAmFXAmFYCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJhTwkAzAgCCQCkAwEFAmFQCQDMCAIJAKQDAQUCYVEJAMwIAgkApAMBBQJhUgkAzAgCCQCkAwEFAmFTCQDMCAIJAKQDAQUCYVQJAMwIAgkApAMBBQJhVQkAzAgCCQCkAwEFAmFWCQDMCAIJAKQDAQUCYVcJAMwIAgkApAMBBQJhWAUDbmlsBQFqAQJhWQYCYVoCYmECYmICYVICYVUCYVYJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJhWgkAzAgCCQCkAwEFAmJhCQDMCAIJAKQDAQUCYmIJAMwIAgkApAMBBQJhUgkAzAgCCQCkAwEFAmFVCQDMCAIJAKQDAQUCYVYFA25pbAUBagECYmMBAmJkAwkAAAIFAmJkAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiZAECYmUCAmJmAmJnCQC8AgMFAmJmBQFjBQJiZwECYmgDAmJpAmJqAmJrBAJibAkAvAIDCQC4AgIFAmJpBQJiagUBYgUCYmoEAmJtCQC/AgIJALgCAgUCYmsJAQFNAQUCYmwFAWUDCQEBIQEFAmJtCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmJsCQCUCgIFAmJtCQCZAwEJAMwIAgUCYmkJAMwIAgUCYmoFA25pbAECYm4DAmJvAmJwAmJxBAJibAkAvAIDBQJicAUBYgUCYm8EAmJyCQC/AgIFAmJxBQJibAMDBQJicgYJAL8CAgUCYnAFAmJvCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJicAIBIAkApgMBBQJibwIBIAkApgMBBQJibAIBIAkApgMBBQJicQUCYnIBAmJzBAJidAJidQJidgJidwQCYngJAQFDAgUCYnYFAmJ0BAJieQkBAUMCBQJidwUCYnUJAQJiZQIFAmJ5BQJieAECYnoDAmJ2AmJ3AmJBBAJiQgkBAmFFAAQCYkMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQgUBdQQCYkQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQgUBdgQCYkUJAQJicwQFAmJDBQJiRAUCYnYFAmJ3BAJiZwkBAUMCBQJidgUCYkMEAmJmCQEBQwIFAmJ3BQJiRAQCYkYJAQFDAgUCYkEFAWEEAmJHCQECYmUCBQJiZwUCYkYEAmJICQECYmUCBQJiZgUCYkYJAMwIAgUCYkUJAMwIAgUCYkcJAMwIAgUCYkgFA25pbAECYkkDAmJ2AmJ3AmJBBAJiSgkBAmJ6AwUCYnYFAmJ3BQJiQQkAzAgCCQEBRgIJAJEDAgUCYkoAAAUBYQkAzAgCCQEBRgIJAJEDAgUCYkoAAQUBYQkAzAgCCQEBRgIJAJEDAgUCYkoAAgUBYQUDbmlsAQJiSwECYkwEAmJNCQBrAwUCYkwFAmFkBQFkCQCUCgIJAGUCBQJiTAUCYk0FAmJNAQJiTgQCYk8CYlACYlECYlIEAmJCCQECYUUABAJiUwkAkQMCBQJiQgUBcgQCYlQJAJEDAgUCYkIFAXMEAmJVCQCRAwIFAmJCBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJCBQF1BAJiVwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJCBQF2BAJiWAkAkQMCBQJiQgUBcQQCYlkICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiUwILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQJiUwUCYlAJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmJaCQECYmMBBQJiVAQCY2EJAQFDAgUCYloFAmJWBAJjYgkBAmJjAQUCYlUEAmNjCQEBQwIFAmNiBQJiVwQCY2QJAQJiZQIFAmNjBQJjYQQCY2UJAQFGAgUCY2QFAWEEAmNmCQEBQwIFAmJRBQFhBAJjZwkBAUMCBQJiWQUBYQQCY2gJALwCAwUCY2EFAmNmBQJjZwQCY2kJALwCAwUCY2MFAmNmBQJjZwQCY2oJAQFGAgUCY2gFAmJWBAJjawkBAUYCBQJjaQUCYlcEAmNsAwkAAAIFAmJPAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiUgUCY2oDCQAAAgUCYlQCBVdBVkVTBQR1bml0CQDZBAEFAmJUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJSBQJjawMJAAACBQJiVQIFV0FWRVMFBHVuaXQJANkEAQUCYlUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVgCCQClCAEFAmJSBQJiTwkBAmFZBgUCY2oFAmNrBQJiUQUCY2UFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFRAAUCY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFSAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2UFA25pbAkAnAoKBQJjagUCY2sFAmJUBQJiVQUCYloFAmNiBQJiWQUCY2QFAmJYBQJjbAECY20NAmJPAmJrAmNuAmNvAmNwAmNxAmJSAmNyAmNzAmN0AmN1AmN2AmN3BAJiQgkBAmFFAAQCYlMJANkEAQkAkQMCBQJiQgUBcgQCY3gJAJEDAgUCYkIFAXMEAmN5CQCRAwIFAmJCBQF0BAJjegkAkQMCBQJiQgUBdwQCY0EJAJEDAgUCYkIFAXgEAmNCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkIFAXUEAmNDCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkIFAXYEAmJYCQCRAwIFAmJCBQFxBAJjRAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUwIIV3IgbHAgYXMIcXVhbnRpdHkEAmJaAwUCY3IJAQJiYwEFAmN4AwMFAmN0CQAAAgUCY3cFAmN4BwkAZQIJAQJiYwEFAmN4BQJjdgMFAmN0CQECYmMBBQJjeAkAZQIJAQJiYwEFAmN4BQJjbgQCY2IDBQJjcgkBAmJjAQUCY3kDAwUCY3QJAAACBQJjdwUCY3kHCQBlAgkBAmJjAQUCY3kFAmN2AwUCY3QJAQJiYwEFAmN5CQBlAgkBAmJjAQUCY3kFAmNwBAJjRQkBAUMCBQJjbgUCY0IEAmNGCQEBQwIFAmNwBQJjQwQCY0cJAQJiZQIFAmNGBQJjRQQCY2EJAQFDAgUCYloFAmNCBAJjYwkBAUMCBQJjYgUCY0MEAmNIAwkAAAIFAmNEAAAEAmNkBQFlBAJjSQUBZQQCYkYJAHYGCQC5AgIFAmNFBQJjRgAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUYCBQJiRgUBYQkBAUYCBQJjRQUCY0IJAQFGAgUCY0YFAmNDCQECYmUCCQC3AgIFAmNjBQJjRgkAtwICBQJjYQUCY0UFAmNJBAJjZAkBAmJlAgUCY2MFAmNhBAJjSgkAvAIDCQEBTQEJALgCAgUCY2QFAmNHBQFjBQJjZAQCY0kJAQFDAgUCYmsFAWEDAwMFAmN1CQECIT0CBQJjZAUBZQcJAL8CAgUCY0oFAmNJBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjSgIDID4gCQCmAwEFAmNJBAJjSwkBAUMCBQJjRAUBYQQCY0wJALwCAwUCY0UFAmNkBQFjBAJjTQkAvAIDBQJjRgUBYwUCY2QEAmNOAwkAvwICBQJjTAUCY0YJAJQKAgUCY00FAmNGCQCUCgIFAmNFBQJjTAQCY08IBQJjTgJfMQQCY1AIBQJjTgJfMgQCYkYJALwCAwUCY0sFAmNQBQJjYwkAlwoFCQEBRgIFAmJGBQFhCQEBRgIFAmNPBQJjQgkBAUYCBQJjUAUCY0MFAmNkBQJjSQQCY1EIBQJjSAJfMQQCY1IIBQJjSAJfMgQCY1MIBQJjSAJfMwQCY2UJAQFGAggFAmNIAl80BQFhBAJjVAkBAUYCCAUCY0gCXzUFAWEDCQBnAgAABQJjUQkAAgECB0xQIDw9IDAEAmNVAwkBASEBBQJjcwAABQJjUQQCY1YJAGUCBQJjbgUCY1IEAmNXCQBlAgUCY3AFAmNTBAJjWAMDBQJjdAkAAAIFAmN3BQJjeAcJAJQKAgUCY3YAAAMDBQJjdAkAAAIFAmN3BQJjeQcJAJQKAgAABQJjdgkAlAoCBQJjUgUCY1MEAmNZCAUCY1gCXzEEAmNaCAUCY1gCXzIEAmRhCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUQAFAmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAgUCYlIFAmJPCQECYU4KBQJjWQUCY1oFAmNVBQJjZQUCYmsFAmNUBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjVgUCY1cFA25pbAkAnwoNBQJjUQUCY1UFAmNlBQJiWgUCY2IFAmNEBQJiUwUCYlgFAmRhBQJjVgUCY1cFAmNvBQJjcQECZGIBAmRjBAJiQgkBAmFFAAQCZGQJAJEDAgUCYkIFAXMEAmRlCQCRAwIFAmJCBQF0BAJiWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJCBQFxBAJiQwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJCBQF1BAJiRAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJCBQF2BAJkZgkBAmJjAQUCZGQEAmRnCQECYmMBBQJkZQQCY2QDCQAAAggFAmRjCW9yZGVyVHlwZQUDQnV5CQECYnMEBQJiQwUCYkQJAGQCBQJkZggFAmRjBmFtb3VudAUCZGcJAQJicwQFAmJDBQJiRAkAZQIFAmRmCAUCZGMGYW1vdW50BQJkZwQCY2UJAQFGAgUCY2QFAWEDAwMJAQJhQgAGCQAAAgUCYlgFAW4GCQAAAgUCYlgFAW8JAAIBAg1BZG1pbiBibG9ja2VkBAJkaAgIBQJkYwlhc3NldFBhaXILYW1vdW50QXNzZXQEAmRpAwkAAAIFAmRoBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJkaAQCZGoICAUCZGMJYXNzZXRQYWlyCnByaWNlQXNzZXQEAmRrAwkAAAIFAmRqBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJkagMDCQECIT0CBQJkaQUCZGQGCQECIT0CBQJkawUCZGUJAAIBAglXciBhc3NldHMEAmRsCAUCZGMFcHJpY2UEAmNDCQBrAwUBYQUCYkQFAmJDBAJkbQkBAUkDBQJkbAUBYQUCY0MEAmRuAwkAAAIIBQJkYwlvcmRlclR5cGUFA0J1eQkAZwIFAmNlBQJkbQkAZwIFAmRtBQJjZQYBAmRvAQJkcAMJAQIhPQIJAJADAQgFAmRwCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBAJkcQkBBXZhbHVlAQkAkQMCCAUCZHAIcGF5bWVudHMAAAQCYlAJAQV2YWx1ZQEIBQJkcQdhc3NldElkBAJjdggFAmRxBmFtb3VudAQCY0gJAQJiTgQJANgEAQgFAmRwDXRyYW5zYWN0aW9uSWQJANgEAQUCYlAFAmN2CAUCZHAGY2FsbGVyBAJjaggFAmNIAl8xBAJjawgFAmNIAl8yBAJiWAkBDXBhcnNlSW50VmFsdWUBCAUCY0gCXzkEAmNsCAUCY0gDXzEwAwMJAQJhQgAGCQAAAgUCYlgFAW8JAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQJiWAkAlwoFBQJjagUCY2sFAmN2BQJiUAUCY2wBAmRyCgJkcwFXAmR0AmR1AmJrAmNzAmN0AmN1AmN2AmN3BAJjSAkBAmNtDQUBVwUCYmsICQEFdmFsdWUBBQJkdAZhbW91bnQICQEFdmFsdWUBBQJkdAdhc3NldElkCAkBBXZhbHVlAQUCZHUGYW1vdW50CAkBBXZhbHVlAQUCZHUHYXNzZXRJZAUCZHMHBQJjcwUCY3QFAmN1BQJjdgUCY3cEAmJYCQENcGFyc2VJbnRWYWx1ZQEIBQJjSAJfOAMDAwkBAmFCAAYJAAACBQJiWAUBbQYJAAACBQJiWAUBbwkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUCYlgFAmNIAQJkdgQCZHcCYlACYlIBVwQCZHgJAQJhRQAEAmJUCQCRAwIFAmR4BQFzBAJiVQkAkQMCBQJkeAUBdAQCYloJAQJiYwEFAmJUBAJjYgkBAmJjAQUCYlUEAmR5CQECYksBBQJkdwQCY3YIBQJkeQJfMQQCZHoIBQJkeQJfMgQCZEEDCQAAAgUBVwIACQCUCgIFAmJaBQJjYgMJAAACBQJiUAUCYlQDCQBmAgUCZHcFAmJaCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCYloFAmR3BQJjYgMJAAACBQJiUAUCYlUDCQBmAgUCZHcFAmNiCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJiWgkAZQIFAmNiBQJkdwkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmRCCAUCZEECXzEEAmRDCAUCZEECXzIEAmREAwkAAAIFAmJQBQJiVAkAlAoCBQJkQgUCZEMJAJQKAgUCZEMFAmRCBAJkRQgFAmREAl8xBAJkRggFAmREAl8yBAJkRwABBAJkSAoAAmRJCQD8BwQFAmFNAgxjYWxjUHV0WE9ubHkJAMwIAgkApAMBBQJjdgkAzAgCCQCkAwEFAmRFCQDMCAIJAKQDAQUCZEYJAMwIAgIACQDMCAIFAmFBCQDMCAIFAWgJAMwIAgkApAMBBQJkRwkAzAgCBQFpBQNuaWwFA25pbAMJAAECBQJkSQIKKEludCwgSW50KQUCZEkJAAIBCQCsAgIJAAMBCQD8BwQFAmFNAgxjYWxjUHV0WE9ubHkJAMwIAgkApAMBBQJjdgkAzAgCCQCkAwEFAmRFCQDMCAIJAKQDAQUCZEYJAMwIAgIACQDMCAIFAmFBCQDMCAIFAWgJAMwIAgkApAMBBQJkRwkAzAgCBQFpBQNuaWwFA25pbAIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZEoDCQAAAgUCYlAFAmJUBQJkSAkAlAoCCAUCZEgCXzIIBQJkSAJfMQQCZEsIBQJkSgJfMQQCZEwIBQJkSgJfMgQCZE0JAQJkcgoFAmJSBQFXCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVAUCZEsJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJVBQJkTAAABgYHBQJjdgUCYlAEAmROCAUCZE0CXzIEAmRPCAUCZE0CXzcEAmNsCAUCZE0CXzkEAmNWCAUCZE0DXzEwBAJjVwgFAmRNA18xMQUCZE0BAmRQAAQCYXQJAKIIAQkBAU8AAwkAAQIFAmF0AgZTdHJpbmcEAmRRBQJhdAkA2QQBBQJkUQMJAAECBQJhdAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJkUgAEAmF0CQCiCAEJAQFQAAMJAAECBQJhdAIGU3RyaW5nBAJkUQUCYXQJANkEAQUCZFEDCQABAgUCYXQCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZFMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECZFQBAmRwBAJhdAkBAmRQAAMJAAECBQJhdAIKQnl0ZVZlY3RvcgQCZFUFAmF0AwkAAAIIBQJkcA9jYWxsZXJQdWJsaWNLZXkFAmRVBgUCZFMDCQABAgUCYXQCBFVuaXQDCQAAAggFAmRwBmNhbGxlcgUEdGhpcwYFAmRTCQACAQILTWF0Y2ggZXJyb3IcAmRwAQtjb25zdHJ1Y3RvcgEBTgQCZFYJAQJkVAEFAmRwAwkAAAIFAmRWBQJkVgkAzAgCCQELU3RyaW5nRW50cnkCCQEBTgAFAU4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkcAEKc2V0TWFuYWdlcgECZFcEAmRWCQECZFQBBQJkcAMJAAACBQJkVgUCZFYEAmRYCQDZBAEFAmRXAwkAAAIFAmRYBQJkWAkAzAgCCQELU3RyaW5nRW50cnkCCQEBUAAFAmRXBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHABDmNvbmZpcm1NYW5hZ2VyAAQCYkoJAQJkUgAEAmRZAwkBCWlzRGVmaW5lZAEFAmJKBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJkWQUCZFkEAmRaAwkAAAIIBQJkcA9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmJKBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJkWgUCZFoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU8ACQDYBAEJAQV2YWx1ZQEFAmJKCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFQAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRwAQNwdXQCAmVhAmViBAJlYwkBAmFJAAQCZWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmVjBQF5AgpXciBzdCBhZGRyBAJlZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZWMFAXoCCldyIHNsIGFkZHIDCQBmAgAABQJlYQkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCZHAIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZWYJAQJkcgoJAKUIAQgFAmRwBmNhbGxlcgkA2AQBCAUCZHANdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkcAhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkcAhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZHAIcGF5bWVudHMAAQUCZWEGBwYAAAIABAJjVQgFAmVmAl8yBAJkTwgFAmVmAl83BAJjbAgFAmVmAl85BAJjVggFAmVmA18xMAQCY1cIBQJlZgNfMTEEAmJUCAUCZWYDXzEyBAJiVQgFAmVmA18xMwQCY0gJAPwHBAUCYXoCBGVtaXQJAMwIAgUCY1UFA25pbAUDbmlsAwkAAAIFAmNIBQJjSAQCZWcEAmF0BQJjSAMJAAECBQJhdAIHQWRkcmVzcwQCZWgFAmF0CQD8BwQFAmVoAgRlbWl0CQDMCAIFAmNVBQNuaWwFA25pbAUEdW5pdAMJAAACBQJlZwUCZWcEAmVpAwkAZgIFAmNWAAAJAPwHBAUCZWUCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVAUCY1YFA25pbAUDbmlsAwkAAAIFAmVpBQJlaQQCZWoDCQBmAgUCY1cAAAkA/AcEBQJlZQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJVBQJjVwUDbmlsBQNuaWwDCQAAAgUCZWoFAmVqBAJlawMFAmViBAJlbAkA/AcEBQJlZAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZE8FAmNVBQNuaWwDCQAAAgUCZWwFAmVsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRwBmNhbGxlcgUCY1UFAmRPBQNuaWwJAM4IAgUCY2wFAmVrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRwAQlwdXRPbmVUa24FAmRLAmRMAmVtAmJrAmViBAJiQgkBAmFJAAQCZWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJCBQF5AgpXciBzdCBhZGRyBAJlZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkIFAXoCCldyIHNsIGFkZHIEAmVuCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiQgUBQQILV3IgZ3d4IGFkZHIEAmVvCQECYUUABAJiVAkAkQMCBQJlbwUBcwQCYlUJAJEDAgUCZW8FAXQEAmJWCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZW8FAXUEAmJXCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZW8FAXYEAmVwCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQJhYgACAAQCYlIDCQAAAgUCZXAJAKUIAQgFAmRwBmNhbGxlcggFAmRwDG9yaWdpbkNhbGxlcggFAmRwBmNhbGxlcgMDAwMJAGcCAAAFAmJrBgkAZwIAAAUCZEsGCQBnAgAABQJkTAYJAGcCAAAFAmVtCQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgkAkAMBCAUCZHAIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBAJkcQkBBXZhbHVlAQkAkQMCCAUCZHAIcGF5bWVudHMAAAQCYlAJANgEAQkBBXZhbHVlAQgFAmRxB2Fzc2V0SWQEAmVxCAUCZHEGYW1vdW50BAJlcgkBAmJLAQUCZXEEAmN2CAUCZXICXzEEAmR6CAUCZXICXzIDCQBmAgCAreIEBQJlcQkAAgECDVdyb25nIHBtdCBhbXQEAmJaCQECYmMBBQJiVAQCY2IJAQJiYwEFAmJVBAJlcwMJAAACBQJiUAUCYlQDAwkAZgIFAmVxBQJiWgYJAGYCBQJkSwUCY3YJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCYCgYJAGUCBQJiWgUCZXEFAmNiCQBlAgUCY3YFAmRLBQJkTAAAAAADCQAAAgUCYlAFAmJVAwMJAGYCBQJlcQUCY2IGCQBmAgUCZEwFAmN2CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAmAoGBQJiWgkAZQIFAmNiBQJlcQAAAAAJAGUCBQJjdgUCZEwFAmRLCQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZEIIBQJlcwJfMQQCZEMIBQJlcwJfMgQCZXQIBQJlcwJfMwQCZXUIBQJlcwJfNAQCZXYIBQJlcwJfNQQCZXcIBQJlcwJfNgQCYnAJAPwHBAUCZW4CBWNhbGNECQDMCAIJAKQDAQUCZEIJAMwIAgkApAMBBQJkQwkAzAgCBQJhQQkAzAgCBQFoCQDMCAIFAWkFA25pbAUDbmlsBAJibwkA/AcEBQJlbgIFY2FsY0QJAMwIAgkApgMBCQC2AgEJAGUCCQBkAgUCZEIFAmV0BQJldwkAzAgCCQCmAwEJALYCAQkAZQIJAGQCBQJkQwUCZXYFAmV1CQDMCAIFAmFBCQDMCAIFAWgJAMwIAgUBaQUDbmlsBQNuaWwEAmV4CQECYm4DCQCnAwEJAQJhcwEFAmJvCQCnAwEJAQJhcwEFAmJwBQFnAwkAAAIFAmV4BQJleAQCZE0JAQJkcgoJAKUIAQgFAmRwBmNhbGxlcgkA2AQBCAUCZHANdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlQFAmRLCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVQUCZEwFAmJrBgYGBQJjdgUCYlAEAmROCAUCZE0CXzIEAmRPCAUCZE0CXzcEAmNsCAUCZE0CXzkEAmNWCAUCZE0DXzEwBAJjVwgFAmRNA18xMQQCZXkJAQJiaAMJALYCAQUCZE4JALYCAQUCZW0JALYCAQUCYmsEAmNVCQCgAwEIBQJleQJfMgQCZWYJAPwHBAUCYXoCBGVtaXQJAMwIAgUCY1UFA25pbAUDbmlsAwkAAAIFAmVmBQJlZgQCZWcEAmF0BQJlZgMJAAECBQJhdAIHQWRkcmVzcwQCZWgFAmF0CQD8BwQFAmVoAgRlbWl0CQDMCAIFAmNVBQNuaWwFA25pbAUEdW5pdAMJAAACBQJlZwUCZWcEAmVpAwkAZgIFAmNWAAAJAPwHBAUCZWUCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJUBQJjVgUDbmlsBQNuaWwDCQAAAgUCZWkFAmVpBAJlagMJAGYCBQJjVwAACQD8BwQFAmVlAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQJiVQUCY1cFA25pbAUDbmlsAwkAAAIFAmVqBQJlagQCZWsDBQJlYgQCZWwJAPwHBAUCZWQCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRPBQJjVQUDbmlsAwkAAAIFAmVsBQJlbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkcAZjYWxsZXIFAmNVBQJkTwUDbmlsBAJlegMJAGYCBQJkegAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFEBQJkegkA2QQBBQJiUAUDbmlsBQNuaWwJAM4IAgkAzggCBQJjbAUCZWsFAmV6CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRwAQtwdXRPbmVUa25WMgICZUECZWIDCQECIT0CCQCQAwEIBQJkcAhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEAmR4CQECYUUABAJiVAkAkQMCBQJkeAUBcwQCYlUJAJEDAgUCZHgFAXQEAmVCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZHgFAXUEAmVDCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZHgFAXYEAmJSAwkAAAIIBQJkcAZjYWxsZXIFBHRoaXMIBQJkcAxvcmlnaW5DYWxsZXIIBQJkcAZjYWxsZXIEAmRxCQEFdmFsdWUBCQCRAwIIBQJkcAhwYXltZW50cwAABAJiUAkA2AQBCQEFdmFsdWUBCAUCZHEHYXNzZXRJZAQCY3YIBQJkcQZhbW91bnQDCQBmAgCAreIEBQJjdgkAAgECDVdyb25nIHBtdCBhbXQEAmNICQECZHYEBQJjdgUCYlAJAKUIAQUCYlIJANgEAQgFAmRwDXRyYW5zYWN0aW9uSWQEAmROCAUCY0gCXzIEAmRPCAUCY0gCXzcEAmNsCAUCY0gCXzkEAmNWCAUCY0gDXzEwBAJjVwgFAmNIA18xMQQCY1UDAwkAZgIFAmVBAAAJAGYCBQJlQQUCZE4HCQACAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJlQQUDbmlsAgAFAmROBAJlZgkA/AcEBQJhegIEZW1pdAkAzAgCBQJjVQUDbmlsBQNuaWwDCQAAAgUCZWYFAmVmBAJlZwQCYXQFAmVmAwkAAQIFAmF0AgdBZGRyZXNzBAJlaAUCYXQJAPwHBAUCZWgCBGVtaXQJAMwIAgUCY1UFA25pbAUDbmlsBQR1bml0AwkAAAIFAmVnBQJlZwQCZWkDCQBmAgUCY1YAAAkA/AcEBQJhTAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUCYlQFAmNWBQNuaWwFA25pbAMJAAACBQJlaQUCZWkEAmVqAwkAZgIFAmNXAAAJAPwHBAUCYUwCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFAmJVBQJjVwUDbmlsBQNuaWwDCQAAAgUCZWoFAmVqBAJlawMFAmViBAJlbAkA/AcEBQJhSwIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZE8FAmNVBQNuaWwDCQAAAgUCZWwFAmVsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRwBmNhbGxlcgUCY1UFAmRPBQNuaWwJAJQKAgkAzggCBQJjbAUCZWsFAmNVCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRwARNwdXRPbmVUa25WMlJFQURPTkxZAgJlRAJlRQQCY0gJAQJkdgQFAmVEBQJlRQIAAgAEAmROCAUCY0gCXzIEAmRPCAUCY0gCXzcEAmNsCAUCY0gCXzkEAmNWCAUCY0gDXzEwBAJjVwgFAmNIA18xMQkAlAoCBQNuaWwFAmROAmRwARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJlRAJlRQQCZHgJAQJhRQAEAmJUCQCRAwIFAmR4BQFzBAJiVQkAkQMCBQJkeAUBdAQCYloJAQJiYwEFAmJUBAJjYgkBAmJjAQUCYlUEAmNICQECZHYEBQJlRAUCZUUCAAIABAJkTggFAmNIAl8yBAJjZQgFAmNIAl8zBAJlRggFAmNIAl82BAJkTwgFAmNIAl83BAJlRwMJAAACBQJlRQUCYlQEAmVICQBrAwUCZUQFAmNlBQFhCQCUCgIFAmVEBQJlSAQCZUkJAGsDBQJlRAUBYQUCY2UJAJQKAgUCZUkFAmVEBAJlSQgFAmVHAl8xBAJlSAgFAmVHAl8yBAJlSgkAawMFAmVGBQJlSAUCY2IEAmVLAwkAAAIFAmVFBQJiVAkAawMFAmVJBQFhBQJkTgkAawMFAmVIBQFhBQJkTgQCZUwJAGsDCQBkAgUCZUgFAmVJBQFhBQJlSgQCZU0JAGsDCQBlAgUCZUwFAmVLBQFhBQJlSwQCZHoICQECYksBBQJlRAJfMgkAlAoCBQNuaWwJAJUKAwUCZE4FAmR6BQJlTQJkcAEKcHV0Rm9yRnJlZQECZU4DCQBmAgAABQJlTgkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJkcAhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJkTQkBAmRyCgkApQgBCAUCZHAGY2FsbGVyCQDYBAEIBQJkcA10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRwCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRwCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkcAhwYXltZW50cwABBQJlTgcHBgAAAgAIBQJkTQJfOQJkcAEDZ2V0AAQCY0gJAQJkbwEFAmRwBAJlTwgFAmNIAl8xBAJjawgFAmNIAl8yBAJjdggFAmNIAl8zBAJiUAgFAmNIAl80BAJjbAgFAmNIAl81BAJlUAkA/AcEBQJhegIEYnVybgkAzAgCBQJjdgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiUAUCY3YFA25pbAMJAAACBQJlUAUCZVAFAmNsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRwAQlnZXRPbmVUa24FAmVRAmVSAmVTAmVUAmJrAwkBAiE9AgkAkAMBCAUCZHAIcGF5bWVudHMAAQkAAgECCzEgcG1udCBleHBkBAJiQgkBAmFFAAQCYlMJAJEDAgUCYkIFAXIEAmJUCQCRAwIFAmJCBQFzBAJiVQkAkQMCBQJiQgUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQgUBdQQCYlcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiQgUBdgQCYlgJAJEDAgUCYkIFAXEEAmVjCQECYUkABAJlbgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZWMFAUECCldyIHNsIGFkZHIEAmRxCQEFdmFsdWUBCQCRAwIIBQJkcAhwYXltZW50cwAABAJlcAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQECYWIAAgAEAmJSAwkAAAIFAmVwCQClCAEIBQJkcAZjYWxsZXIIBQJkcAxvcmlnaW5DYWxsZXIIBQJkcAZjYWxsZXIEAmJPCQDYBAEIBQJkcA10cmFuc2FjdGlvbklkBAJiUAkBBXZhbHVlAQgFAmRxB2Fzc2V0SWQEAmN2CAUCZHEGYW1vdW50AwkAZgIAgJTr3AMFAmN2CQACAQINTWluIHBtdCAxMCBMUAMDAwkAZgIAAAUCYmsGCQBmAgAABQJlUQYJAGYCAAAFAmVTCQACAQIMV3JvbmcgcGFyYW1zAwkBAiE9AgUCYlMJANgEAQUCYlAJAAIBAghXcm9uZyBMUAQCY0gJAQJiTgQJANgEAQgFAmRwDXRyYW5zYWN0aW9uSWQJANgEAQUCYlAFAmN2CAUCZHAGY2FsbGVyBAJlVQgFAmNIAl8xBAJlVggFAmNIAl8yBAJiWgkBAmJjAQUCYlQEAmNiCQECYmMBBQJiVQQCZVcDCQAAAgUCZVQFAmJUCQCZCgcJAGUCBQJiWgUCZVUJAGUCBQJjYgUCZVYFAmVRBQJlVgAAAAAJAGQCBQJlVQUCZVEDCQAAAgUCZVQFAmJVCQCZCgcJAGUCBQJiWgUCZVUJAGUCBQJjYgUCZVYAAAAABQJlUQUCZVUJAGQCBQJlVgUCZVEJAAIBAhB3cm9uZyBvdXRBc3NldElkBAJkQggFAmVXAl8xBAJkQwgFAmVXAl8yBAJldAgFAmVXAl8zBAJldQgFAmVXAl80BAJldggFAmVXAl81BAJldwgFAmVXAl82BAJlWAgFAmVXAl83AwMJAGYCAAAFAmV0BgkAZgIAAAUCZXYJAAIBAgpXcm9uZyBjYWxjBAJicAkA/AcEBQJlbgIFY2FsY0QJAMwIAgkApAMBBQJkQgkAzAgCCQCkAwEFAmRDCQDMCAIFAmFBCQDMCAIFAWgJAMwIAgUBaQUDbmlsBQNuaWwEAmJvCQD8BwQFAmVuAgVjYWxjRAkAzAgCCQCkAwEJAGQCCQBlAgUCZEIFAmV0BQJldwkAzAgCCQCkAwEJAGUCCQBkAgUCZEMFAmV1BQJldgkAzAgCBQJhQQkAzAgCBQFoCQDMCAIFAWkFA25pbAUDbmlsBAJleAkBAmJuAwkApwMBCQECYXMBBQJibwkApwMBCQECYXMBBQJicAUBZwMJAAACBQJleAUCZXgEAmVZCAkBAmJLAQUCZVgCXzEEAmVaCQECYmgDCQC2AgEFAmVZCQC2AgEFAmVTCQC2AgEFAmJrAwkAAAIFAmVaBQJlWgQCZmEDCQAAAgUCZVQFAmJUCQCUCgIJAKADAQgFAmVaAl8yAAAJAJQKAgAACQCgAwEIBQJlWgJfMgQCZmIIBQJmYQJfMQQCZmMIBQJmYQJfMgQCZmQJAGQCBQJmYgUCZmMEAmR6CQBlAgUCZVgFAmVZBAJmZQMJAAACBQJlVAIFV0FWRVMFBHVuaXQJANkEAQUCZVQEAmV6AwkAZgIFAmR6AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUQFAmR6BQJmZQUDbmlsBQNuaWwEAmZmCQECYmUCCQEBQwIFAmNiBQJiVwkBAUMCBQJiWgUCYlYEAmZnCQEBRgIFAmZmBQFhBAJjbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiUgUCZmQFAmZlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFYAgkApQgBBQJiUgUCYk8JAQJhWQYFAmZiBQJmYwUCY3YFAmZnBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUQAFAmZnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZnBQNuaWwDCQAAAgUCY2wFAmNsBAJmaAkA/AcEBQJhegIEYnVybgkAzAgCBQJjdgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiUAUCY3YFA25pbAMJAAACBQJmaAUCZmgJAM4IAgUCY2wFAmV6CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRwAQtnZXRPbmVUa25WMgICZVQCZUEDCQECIT0CCQCQAwEIBQJkcAhwYXltZW50cwABCQACAQILMSBwbW50IGV4cGQEAmR4CQECYUUABAJiUwkAkQMCBQJkeAUBcgQCYlQJAJEDAgUCZHgFAXMEAmJVCQCRAwIFAmR4BQF0BAJlQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR4BQF1BAJlQwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmR4BQF2BAJmaQkAkQMCBQJkeAUBcQQCYlIDCQAAAggFAmRwBmNhbGxlcgUEdGhpcwgFAmRwDG9yaWdpbkNhbGxlcggFAmRwBmNhbGxlcgQCZHEJAQV2YWx1ZQEJAJEDAggFAmRwCHBheW1lbnRzAAAEAmJQCQEFdmFsdWUBCAUCZHEHYXNzZXRJZAQCY3YIBQJkcQZhbW91bnQDCQBmAgCAlOvcAwUCY3YJAAIBAg1NaW4gcG10IDEwIExQBAJiTwkA2AQBCAUCZHANdHJhbnNhY3Rpb25JZAMJAQIhPQIFAmJTCQDYBAEFAmJQCQACAQIIV3JvbmcgTFAEAmJaCQECYmMBBQJiVAQCY2IJAQJiYwEFAmJVBAJlWQoAAmRJCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZVQJAMwIAgUCY3YFA25pbAUDbmlsAwkAAQIFAmRJAgNJbnQFAmRJCQACAQkArAICCQADAQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmVUCQDMCAIFAmN2BQNuaWwFA25pbAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJmZAMDCQBmAgUCZUEAAAkAZgIFAmVBBQJlWQcJAAIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVBBQNuaWwCAAUCZVkEAmZqAwkAAAIFAmVUBQJiVAkAlAoCBQJmZAAACQCUCgIAAAUCZmQEAmZiCAUCZmoCXzEEAmZjCAUCZmoCXzIEAmZmCQECYmUCCQEBQwIFAmNiBQJlQwkBAUMCBQJiWgUCZUIEAmZnCQEBRgIFAmZmBQFhBAJjbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiUgUCZmQDCQAAAgUCZVQCBVdBVkVTBQR1bml0CQDZBAEFAmVUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFYAgkApQgBBQJiUgUCYk8JAQJhWQYFAmZiBQJmYwUCY3YFAmZnBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUQAFAmZnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZnBQNuaWwDCQAAAgUCY2wFAmNsBAJmaAkA/AcEBQJhegIEYnVybgkAzAgCBQJjdgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiUAUCY3YFA25pbAMJAAACBQJmaAUCZmgJAJQKAgUCY2wFAmZkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRwARNnZXRPbmVUa25WMlJFQURPTkxZAgJlVAJmawQCZHgJAQJhRQAEAmJTCQCRAwIFAmR4BQFyBAJiVAkAkQMCBQJkeAUBcwQCYlUJAJEDAgUCZHgFAXQEAmNICQECYk4EAgAFAmJTBQJmawUEdGhpcwQCZVUIBQJjSAJfMQQCZVYIBQJjSAJfMgQCYloJAQJiYwEFAmJUBAJjYgkBAmJjAQUCYlUEAmRCCQBlAgUCYloFAmVVBAJkQwkAZQIFAmNiBQJlVgQCZmwDCQAAAgUCZVQFAmJUCQCVCgMFAmRDBQJkQgUCZVYDCQAAAgUCZVQFAmJVCQCVCgMFAmRCBQJkQwUCZVUJAAIBAhB3cm9uZyBvdXRBc3NldElkBAJmbQgFAmZsAl8xBAJmbggFAmZsAl8yBAJmbwgFAmZsAl8zBAJmcAABBAJlUQoAAmRJCQD8BwQFAmFNAgxjYWxjU3dhcFhUb1kJAMwIAgkApAMBBQJmbwkAzAgCCQCkAwEFAmZtCQDMCAIJAKQDAQUCZm4JAMwIAgIACQDMCAIFAmFBCQDMCAIFAWgJAMwIAgkApAMBBQJmcAkAzAgCBQFpBQNuaWwFA25pbAMJAAECBQJkSQIDSW50BQJkSQkAAgEJAKwCAgkAAwEJAPwHBAUCYU0CDGNhbGNTd2FwWFRvWQkAzAgCCQCkAwEFAmZvCQDMCAIJAKQDAQUCZm0JAMwIAgkApAMBBQJmbgkAzAgCAgAJAMwIAgUCYUEJAMwIAgUBaAkAzAgCCQCkAwEFAmZwCQDMCAIFAWkFA25pbAUDbmlsAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmVYCQBkAgUCZVEDCQAAAgUCZVQFAmJUBQJlVQUCZVYEAmZxCQECYksBBQJlWAQCZVkIBQJmcQJfMQQCZHoIBQJmcQJfMgkAlAoCBQNuaWwJAJQKAgUCZVkFAmR6AmRwARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJlVAJmawQCZHgJAQJhRQAEAmJUCQCRAwIFAmR4BQFzBAJiVQkAkQMCBQJkeAUBdAQCYlMJAJEDAgUCZHgFAXIEAmJaCQECYmMBBQJiVAQCY2IJAQJiYwEFAmJVBAJmcgoAAmRJCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZVQJAMwIAgUCZmsFA25pbAUDbmlsAwkAAQIFAmRJAgooSW50LCBJbnQpBQJkSQkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJlVAkAzAgCBQJmawUDbmlsBQNuaWwCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmVZCAUCZnICXzEEAmR6CAUCZnICXzIEAmNICQECYk4EAgAFAmJTBQJmawUEdGhpcwQCY2oIBQJjSAJfMQQCY2sIBQJjSAJfMgQCZUsJAGsDBQJlWQUBYQUCZmsEAmVMCQBrAwkAZAIFAmNqBQJjawUBYQUCZmsEAmVNCQBrAwkAZQIFAmVLBQJlTAUBYQUCZUwJAJQKAgUDbmlsCQCVCgMFAmVZBQJkegUCZU0CZHABCWdldE5vTGVzcwICZnMCZnQEAmNICQECZG8BBQJkcAQCY2oIBQJjSAJfMQQCY2sIBQJjSAJfMgQCY3YIBQJjSAJfMwQCYlAIBQJjSAJfNAQCY2wIBQJjSAJfNQMJAGYCBQJmcwUCY2oJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY2oCAyA8IAkApAMBBQJmcwMJAGYCBQJmdAUCY2sJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjawIDIDwgCQCkAwEFAmZ0BAJmdQkA/AcEBQJhegIEYnVybgkAzAgCBQJjdgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiUAUCY3YFA25pbAMJAAACBQJmdQUCZnUFAmNsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRwAQ11bnN0YWtlQW5kR2V0AQJiTAQCZnYDCQECIT0CCQCQAwEIBQJkcAhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZnYFAmZ2BAJiQgkBAmFFAAQCZncJAQJhSQAEAmRPCQDZBAEJAJEDAgUCYkIFAXIEAmZ4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJmdwUBeQIKV3Igc3QgYWRkcgQCZnkJAPwHBAUCZngCB3Vuc3Rha2UJAMwIAgkA2AQBBQJkTwkAzAgCBQJiTAUDbmlsBQNuaWwDCQAAAgUCZnkFAmZ5BAJjSAkBAmJOBAkA2AQBCAUCZHANdHJhbnNhY3Rpb25JZAkA2AQBBQJkTwUCYkwIBQJkcAZjYWxsZXIEAmJYCQENcGFyc2VJbnRWYWx1ZQEIBQJjSAJfOQQCY2wIBQJjSANfMTAEAmZ6AwMJAQJhQgAGCQAAAgUCYlgFAW8JAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJiWAYDCQAAAgUCZnoFAmZ6BAJmQQkA/AcEBQJhegIEYnVybgkAzAgCBQJiTAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkTwUCYkwFA25pbAMJAAACBQJmQQUCZkEFAmNsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRwARN1bnN0YWtlQW5kR2V0T25lVGtuBAJiTAJlUwJlVAJiawQCZnYDCQECIT0CCQCQAwEIBQJkcAhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCZnYFAmZ2BAJiQgkBAmFFAAQCZncJAQJhSQAEAmRPCQDZBAEJAJEDAgUCYkIFAXIEAmZ4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJmdwUBeQIKV3Igc3QgYWRkcgQCZnkJAPwHBAUCZngCB3Vuc3Rha2UJAMwIAgkA2AQBBQJkTwkAzAgCBQJiTAUDbmlsBQNuaWwDCQAAAgUCZnkFAmZ5BAJmQgoAAmRJCQD8BwQFBHRoaXMCC2dldE9uZVRrblYyCQDMCAIFAmVTCQDMCAIFAmVUCQDMCAIFAmJrBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRPBQJiTAUDbmlsAwkAAQIFAmRJAgNJbnQFAmRJBQR1bml0AwkAAAIFAmZCBQJmQgkAlAoCBQNuaWwFAmZCCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRwAQhhY3RpdmF0ZQICZkMCZkQDCQECIT0CCQClCAEIBQJkcAZjYWxsZXIJAKUIAQUCYXoJAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQEBWQAFAmZDCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAAUCZkQFA25pbAIHc3VjY2VzcwJkcAEEc2V0UwICZkUCZnoDCQECIT0CCQClCAEIBQJkcAZjYWxsZXIJAQJhdgIFBHRoaXMJAQJhYgAFAmRTCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmZFBQJmegUDbmlsAmRwAQRzZXRJAgJmRQJmegMJAQIhPQIJAKUIAQgFAmRwBmNhbGxlcgkBAmF2AgUEdGhpcwkBAmFiAAUCZFMJAMwIAgkBDEludGVnZXJFbnRyeQIFAmZFBQJmegUDbmlsAmRwARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhRQACZHABHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJkCQCUCgIFA25pbAkBAmJjAQUCYmQCZHABGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJ2AmJ3AmJBBAJmRgkBAmJ6AwUCYnYFAmJ3BQJiQQkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmZGAAAJAMwIAgkApgMBCQCRAwIFAmZGAAEJAMwIAgkApgMBCQCRAwIFAmZGAAIFA25pbAJkcAEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBRwJmRwkAlAoCBQNuaWwJAQFGAgkApwMBBQFHBQJmRwJkcAEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUQBRQkAlAoCBQNuaWwJAKYDAQkBAUMCBQFEBQFFAmRwAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJmAmJnCQCUCgIFA25pbAkApgMBCQECYmUCCQCnAwEFAmJmCQCnAwEFAmJnAmRwASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCYk8CYmsCY24CY28CY3ACY3ECZkgCY3ICY3MJAJQKAgUDbmlsCQECY20NBQJiTwUCYmsFAmNuBQJjbwUCY3AFAmNxBQJmSAUCY3IFAmNzBgcAAAIAAmRwASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYk8CZkkCYlECZkgEAmNICQECYk4EBQJiTwUCZkkFAmJRCQERQGV4dHJOYXRpdmUoMTA2MikBBQJmSAkAlAoCBQNuaWwJAJwKCggFAmNIAl8xCAUCY0gCXzIIBQJjSAJfMwgFAmNIAl80CAUCY0gCXzUIBQJjSAJfNggFAmNIAl83CQCmAwEIBQJjSAJfOAgFAmNIAl85CAUCY0gDXzEwAQJmSgECZksABAJmTAQCYXQJAQJkUAADCQABAgUCYXQCCkJ5dGVWZWN0b3IEAmRVBQJhdAUCZFUDCQABAgUCYXQCBFVuaXQIBQJmSg9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYXQFAmZKAwkAAQIFAmF0AgVPcmRlcgQCZGMFAmF0BAJmTQkBAmFDAAQCZk4JAQJkYgEFAmRjBAJmTwkA9AMDCAUCZGMJYm9keUJ5dGVzCQCRAwIIBQJkYwZwcm9vZnMAAAgFAmRjD3NlbmRlclB1YmxpY0tleQQCZlAJAPQDAwgFAmRjCWJvZHlCeXRlcwkAkQMCCAUCZGMGcHJvb2ZzAAEFAmZNAwMDBQJmTgUCZk8HBQJmUAcGCQECYW8DBQJmTgUCZk8FAmZQAwkAAQIFAmF0AhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZFEFAmF0BAJmUQkA9gMBCQEFdmFsdWUBCAUCZFEGc2NyaXB0BAJmUgkA2wQBCQEFdmFsdWUBCQCdCAIFAmF6CQECYW0ABAJmUwkA8QcBBQR0aGlzAwMJAAACBQJmUgUCZlEJAQIhPQIFAmZTBQJmUQcGCQD0AwMIBQJmSglib2R5Qnl0ZXMJAJEDAggFAmZKBnByb29mcwAABQJmTAkA9AMDCAUCZkoJYm9keUJ5dGVzCQCRAwIIBQJmSgZwcm9vZnMAAAUCZkznD0D6", "chainId": 84, "height": 2231810, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8gucaChBSFXFe1PoPkeLAq4infA5CfyA6N4P6WD23PQf Next: 6UsuFaZNWUaeRdn9gxRU2Mid97XP6sfp36AXoGZaqY2C Diff:
OldNewDifferences
173173 func aI () = split(av(az, ae()), j)
174174
175175
176-func aJ (aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT)], j)
176+let aJ = aI()
177+
178+let aK = valueOrErrorMessage(addressFromString(aJ[y]), "Invalid staking contract address")
179+
180+let aL = valueOrErrorMessage(addressFromString(aJ[z]), "Invalid slipage contract address")
181+
182+let aM = valueOrErrorMessage(addressFromString(aJ[A]), "Invalid gwx contract address")
183+
184+func aN (aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX)], j)
177185
178186
179-func aU (aV,aW,aX,aN,aQ,aR) = makeString(["%d%d%d%d%d%d", toString(aV), toString(aW), toString(aX), toString(aN), toString(aQ), toString(aR)], j)
187+func aY (aZ,ba,bb,aR,aU,aV) = makeString(["%d%d%d%d%d%d", toString(aZ), toString(ba), toString(bb), toString(aR), toString(aU), toString(aV)], j)
180188
181189
182-func aY (aZ) = if ((aZ == "WAVES"))
190+func bc (bd) = if ((bd == "WAVES"))
183191 then wavesBalance(this).available
184- else assetBalance(this, fromBase58String(aZ))
192+ else assetBalance(this, fromBase58String(bd))
185193
186194
187-func ba (bb,bc) = fraction(bb, c, bc)
195+func be (bf,bg) = fraction(bf, c, bg)
188196
189197
190-func bd (be,bf,bg) = {
191- let bh = fraction((be - bf), b, bf)
192- let bi = ((bg - M(bh)) > e)
193- if (!(bi))
194- then throw(("Big slpg: " + toString(bh)))
195- else $Tuple2(bi, min([be, bf]))
198+func bh (bi,bj,bk) = {
199+ let bl = fraction((bi - bj), b, bj)
200+ let bm = ((bk - M(bl)) > e)
201+ if (!(bm))
202+ then throw(("Big slpg: " + toString(bl)))
203+ else $Tuple2(bm, min([bi, bj]))
196204 }
197205
198206
199-func bj (bk,bl,bm) = {
200- let bh = fraction(bl, b, bk)
201- let bn = (bm > bh)
202- if (if (bn)
207+func bn (bo,bp,bq) = {
208+ let bl = fraction(bp, b, bo)
209+ let br = (bq > bl)
210+ if (if (br)
203211 then true
204- else (bl > bk))
205- then throw(((((((toString(bl) + " ") + toString(bk)) + " ") + toString(bh)) + " ") + toString(bm)))
206- else bn
212+ else (bp > bo))
213+ then throw(((((((toString(bp) + " ") + toString(bo)) + " ") + toString(bl)) + " ") + toString(bq)))
214+ else br
207215 }
208216
209217
210-func bo (bp,bq,br,bs) = {
211- let bt = C(br, bp)
212- let bu = C(bs, bq)
213- ba(bu, bt)
218+func bs (bt,bu,bv,bw) = {
219+ let bx = C(bv, bt)
220+ let by = C(bw, bu)
221+ be(by, bx)
214222 }
215223
216224
217-func bv (br,bs,bw) = {
218- let bx = aE()
219- let by = parseIntValue(bx[u])
220- let bz = parseIntValue(bx[v])
221- let bA = bo(by, bz, br, bs)
222- let bc = C(br, by)
223- let bb = C(bs, bz)
224- let bB = C(bw, a)
225- let bC = ba(bc, bB)
226- let bD = ba(bb, bB)
227-[bA, bC, bD]
225+func bz (bv,bw,bA) = {
226+ let bB = aE()
227+ let bC = parseIntValue(bB[u])
228+ let bD = parseIntValue(bB[v])
229+ let bE = bs(bC, bD, bv, bw)
230+ let bg = C(bv, bC)
231+ let bf = C(bw, bD)
232+ let bF = C(bA, a)
233+ let bG = be(bg, bF)
234+ let bH = be(bf, bF)
235+[bE, bG, bH]
228236 }
229237
230238
231-func bE (br,bs,bw) = {
232- let bF = bv(br, bs, bw)
233-[F(bF[0], a), F(bF[1], a), F(bF[2], a)]
239+func bI (bv,bw,bA) = {
240+ let bJ = bz(bv, bw, bA)
241+[F(bJ[0], a), F(bJ[1], a), F(bJ[2], a)]
234242 }
235243
236244
237-func bG (bH,bI,bJ,bK) = {
238- let bx = aE()
239- let bL = bx[r]
240- let bM = bx[s]
241- let bN = bx[t]
242- let bO = parseIntValue(bx[u])
243- let bP = parseIntValue(bx[v])
244- let bQ = bx[q]
245- let bR = valueOrErrorMessage(assetInfo(fromBase58String(bL)), "Wrong LP id").quantity
246- if ((bL != bI))
245+func bK (bL) = {
246+ let bM = fraction(bL, ad, d)
247+ $Tuple2((bL - bM), bM)
248+ }
249+
250+
251+func bN (bO,bP,bQ,bR) = {
252+ let bB = aE()
253+ let bS = bB[r]
254+ let bT = bB[s]
255+ let bU = bB[t]
256+ let bV = parseIntValue(bB[u])
257+ let bW = parseIntValue(bB[v])
258+ let bX = bB[q]
259+ let bY = valueOrErrorMessage(assetInfo(fromBase58String(bS)), "Wrong LP id").quantity
260+ if ((bS != bP))
247261 then throw("Wrong pmt asset")
248262 else {
249- let bS = aY(bM)
250- let bT = C(bS, bO)
251- let bU = aY(bN)
252- let bV = C(bU, bP)
253- let bW = ba(bV, bT)
254- let bX = F(bW, a)
255- let bY = C(bJ, a)
256- let bZ = C(bR, a)
257- let ca = fraction(bT, bY, bZ)
258- let cb = fraction(bV, bY, bZ)
259- let cc = F(ca, bO)
260- let cd = F(cb, bP)
261- let ce = if ((bH == ""))
263+ let bZ = bc(bT)
264+ let ca = C(bZ, bV)
265+ let cb = bc(bU)
266+ let cc = C(cb, bW)
267+ let cd = be(cc, ca)
268+ let ce = F(cd, a)
269+ let cf = C(bQ, a)
270+ let cg = C(bY, a)
271+ let ch = fraction(ca, cf, cg)
272+ let ci = fraction(cc, cf, cg)
273+ let cj = F(ch, bV)
274+ let ck = F(ci, bW)
275+ let cl = if ((bO == ""))
262276 then nil
263- else [ScriptTransfer(bK, cc, if ((bM == "WAVES"))
277+ else [ScriptTransfer(bR, cj, if ((bT == "WAVES"))
264278 then unit
265- else fromBase58String(bM)), ScriptTransfer(bK, cd, if ((bN == "WAVES"))
279+ else fromBase58String(bT)), ScriptTransfer(bR, ck, if ((bU == "WAVES"))
266280 then unit
267- else fromBase58String(bN)), StringEntry(X(toString(bK), bH), aU(cc, cd, bJ, bX, height, lastBlock.timestamp)), IntegerEntry(Q(), bX), IntegerEntry(R(height, lastBlock.timestamp), bX)]
268- $Tuple10(cc, cd, bM, bN, bS, bU, bR, bW, bQ, ce)
281+ else fromBase58String(bU)), StringEntry(X(toString(bR), bO), aY(cj, ck, bQ, ce, height, lastBlock.timestamp)), IntegerEntry(Q(), ce), IntegerEntry(R(height, lastBlock.timestamp), ce)]
282+ $Tuple10(cj, ck, bT, bU, bZ, cb, bY, cd, bX, cl)
269283 }
270284 }
271285
272286
273-func cf (bH,bg,cg,ch,ci,cj,bK,ck,cl,cm,cn,co) = {
274- let bx = aE()
275- let bL = fromBase58String(bx[r])
276- let cp = bx[s]
277- let cq = bx[t]
278- let cr = bx[w]
279- let cs = bx[x]
280- let ct = parseIntValue(bx[u])
281- let cu = parseIntValue(bx[v])
282- let bQ = bx[q]
283- let cv = valueOrErrorMessage(assetInfo(bL), "Wr lp as").quantity
284- let bS = if (ck)
285- then aY(cp)
286- else if (if (cm)
287- then (co == cp)
287+func cm (bO,bk,cn,co,cp,cq,bR,cr,cs,ct,cu,cv,cw) = {
288+ let bB = aE()
289+ let bS = fromBase58String(bB[r])
290+ let cx = bB[s]
291+ let cy = bB[t]
292+ let cz = bB[w]
293+ let cA = bB[x]
294+ let cB = parseIntValue(bB[u])
295+ let cC = parseIntValue(bB[v])
296+ let bX = bB[q]
297+ let cD = valueOrErrorMessage(assetInfo(bS), "Wr lp as").quantity
298+ let bZ = if (cr)
299+ then bc(cx)
300+ else if (if (ct)
301+ then (cw == cx)
288302 else false)
289- then (aY(cp) - cn)
290- else if (cm)
291- then aY(cp)
292- else (aY(cp) - cg)
293- let bU = if (ck)
294- then aY(cq)
295- else if (if (cm)
296- then (co == cq)
303+ then (bc(cx) - cv)
304+ else if (ct)
305+ then bc(cx)
306+ else (bc(cx) - cn)
307+ let cb = if (cr)
308+ then bc(cy)
309+ else if (if (ct)
310+ then (cw == cy)
297311 else false)
298- then (aY(cq) - cn)
299- else if (cm)
300- then aY(cq)
301- else (aY(cq) - ci)
302- let cw = C(cg, ct)
303- let cx = C(ci, cu)
304- let cy = ba(cx, cw)
305- let bT = C(bS, ct)
306- let bV = C(bU, cu)
307- let cz = if ((cv == 0))
312+ then (bc(cy) - cv)
313+ else if (ct)
314+ then bc(cy)
315+ else (bc(cy) - cp)
316+ let cE = C(cn, cB)
317+ let cF = C(cp, cC)
318+ let cG = be(cF, cE)
319+ let ca = C(bZ, cB)
320+ let cc = C(cb, cC)
321+ let cH = if ((cD == 0))
308322 then {
309- let bW = e
310- let cA = e
311- let bB = pow((cw * cx), 0, toBigInt(5), 1, 0, DOWN)
312- $Tuple5(F(bB, a), F(cw, ct), F(cx, cu), ba((bV + cx), (bT + cw)), cA)
323+ let cd = e
324+ let cI = e
325+ let bF = pow((cE * cF), 0, toBigInt(5), 1, 0, DOWN)
326+ $Tuple5(F(bF, a), F(cE, cB), F(cF, cC), be((cc + cF), (ca + cE)), cI)
313327 }
314328 else {
315- let bW = ba(bV, bT)
316- let cB = fraction(M((bW - cy)), c, bW)
317- let cA = C(bg, a)
318- if (if ((bW != e))
319- then (cB > cA)
329+ let cd = be(cc, ca)
330+ let cJ = fraction(M((cd - cG)), c, cd)
331+ let cI = C(bk, a)
332+ if (if (if (cu)
333+ then (cd != e)
320334 else false)
321- then throw(((("Price slippage " + toString(cB)) + " > ") + toString(cA)))
335+ then (cJ > cI)
336+ else false)
337+ then throw(((("Price slippage " + toString(cJ)) + " > ") + toString(cI)))
322338 else {
323- let cC = C(cv, a)
324- let cD = fraction(cw, bW, c)
325- let cE = fraction(cx, c, bW)
326- let cF = if ((cD > cx))
327- then $Tuple2(cE, cx)
328- else $Tuple2(cw, cD)
329- let cG = cF._1
330- let cH = cF._2
331- let bB = fraction(cC, cH, bV)
332- $Tuple5(F(bB, a), F(cG, ct), F(cH, cu), bW, cA)
339+ let cK = C(cD, a)
340+ let cL = fraction(cE, cd, c)
341+ let cM = fraction(cF, c, cd)
342+ let cN = if ((cL > cF))
343+ then $Tuple2(cM, cF)
344+ else $Tuple2(cE, cL)
345+ let cO = cN._1
346+ let cP = cN._2
347+ let bF = fraction(cK, cP, cc)
348+ $Tuple5(F(bF, a), F(cO, cB), F(cP, cC), cd, cI)
333349 }
334350 }
335- let cI = cz._1
336- let cJ = cz._2
337- let cK = cz._3
338- let bX = F(cz._4, a)
339- let cL = F(cz._5, a)
340- if ((0 >= cI))
351+ let cQ = cH._1
352+ let cR = cH._2
353+ let cS = cH._3
354+ let ce = F(cH._4, a)
355+ let cT = F(cH._5, a)
356+ if ((0 >= cQ))
341357 then throw("LP <= 0")
342358 else {
343- let cM = if (!(cl))
359+ let cU = if (!(cs))
344360 then 0
345- else cI
346- let cN = (cg - cJ)
347- let cO = (ci - cK)
348- let cP = if (if (cm)
349- then (co == cp)
361+ else cQ
362+ let cV = (cn - cR)
363+ let cW = (cp - cS)
364+ let cX = if (if (ct)
365+ then (cw == cx)
350366 else false)
351- then $Tuple2(cn, 0)
352- else if (if (cm)
353- then (co == cq)
367+ then $Tuple2(cv, 0)
368+ else if (if (ct)
369+ then (cw == cy)
354370 else false)
355- then $Tuple2(0, cn)
356- else $Tuple2(cJ, cK)
357- let cQ = cP._1
358- let cR = cP._2
359- let cS = [IntegerEntry(Q(), bX), IntegerEntry(R(height, lastBlock.timestamp), bX), StringEntry(U(bK, bH), aJ(cQ, cR, cM, bX, bg, cL, height, lastBlock.timestamp, cN, cO))]
360- $Tuple13(cI, cM, bX, bS, bU, cv, bL, bQ, cS, cN, cO, ch, cj)
371+ then $Tuple2(0, cv)
372+ else $Tuple2(cR, cS)
373+ let cY = cX._1
374+ let cZ = cX._2
375+ let da = [IntegerEntry(Q(), ce), IntegerEntry(R(height, lastBlock.timestamp), ce), StringEntry(U(bR, bO), aN(cY, cZ, cU, ce, bk, cT, height, lastBlock.timestamp, cV, cW))]
376+ $Tuple13(cQ, cU, ce, bZ, cb, cD, bS, bX, da, cV, cW, co, cq)
361377 }
362378 }
363379
364380
365-func cT (cU) = {
366- let bx = aE()
367- let cV = bx[s]
368- let cW = bx[t]
369- let bQ = parseIntValue(bx[q])
370- let by = parseIntValue(bx[u])
371- let bz = parseIntValue(bx[v])
372- let cX = aY(cV)
373- let cY = aY(cW)
374- let bW = if ((cU.orderType == Buy))
375- then bo(by, bz, (cX + cU.amount), cY)
376- else bo(by, bz, (cX - cU.amount), cY)
377- let bX = F(bW, a)
381+func db (dc) = {
382+ let bB = aE()
383+ let dd = bB[s]
384+ let de = bB[t]
385+ let bX = parseIntValue(bB[q])
386+ let bC = parseIntValue(bB[u])
387+ let bD = parseIntValue(bB[v])
388+ let df = bc(dd)
389+ let dg = bc(de)
390+ let cd = if ((dc.orderType == Buy))
391+ then bs(bC, bD, (df + dc.amount), dg)
392+ else bs(bC, bD, (df - dc.amount), dg)
393+ let ce = F(cd, a)
378394 if (if (if (aB())
379395 then true
380- else (bQ == n))
396+ else (bX == n))
381397 then true
382- else (bQ == o))
398+ else (bX == o))
383399 then throw("Admin blocked")
384400 else {
385- let cZ = cU.assetPair.amountAsset
386- let da = if ((cZ == unit))
401+ let dh = dc.assetPair.amountAsset
402+ let di = if ((dh == unit))
387403 then "WAVES"
388- else toBase58String(value(cZ))
389- let db = cU.assetPair.priceAsset
390- let dc = if ((db == unit))
404+ else toBase58String(value(dh))
405+ let dj = dc.assetPair.priceAsset
406+ let dk = if ((dj == unit))
391407 then "WAVES"
392- else toBase58String(value(db))
393- if (if ((da != cV))
408+ else toBase58String(value(dj))
409+ if (if ((di != dd))
394410 then true
395- else (dc != cW))
411+ else (dk != de))
396412 then throw("Wr assets")
397413 else {
398- let dd = cU.price
399- let cu = fraction(a, bz, by)
400- let de = I(dd, a, cu)
401- let df = if ((cU.orderType == Buy))
402- then (bX >= de)
403- else (de >= bX)
414+ let dl = dc.price
415+ let cC = fraction(a, bD, bC)
416+ let dm = I(dl, a, cC)
417+ let dn = if ((dc.orderType == Buy))
418+ then (ce >= dm)
419+ else (dm >= ce)
404420 true
405421 }
406422 }
407423 }
408424
409425
410-func dg (dh) = if ((size(dh.payments) != 1))
426+func do (dp) = if ((size(dp.payments) != 1))
411427 then throw("1 pmnt exp")
412428 else {
413- let di = value(dh.payments[0])
414- let bI = value(di.assetId)
415- let cn = di.amount
416- let cz = bG(toBase58String(dh.transactionId), toBase58String(bI), cn, dh.caller)
417- let cc = cz._1
418- let cd = cz._2
419- let bQ = parseIntValue(cz._9)
420- let ce = cz._10
429+ let dq = value(dp.payments[0])
430+ let bP = value(dq.assetId)
431+ let cv = dq.amount
432+ let cH = bN(toBase58String(dp.transactionId), toBase58String(bP), cv, dp.caller)
433+ let cj = cH._1
434+ let ck = cH._2
435+ let bX = parseIntValue(cH._9)
436+ let cl = cH._10
421437 if (if (aB())
422438 then true
423- else (bQ == o))
424- then throw(("Admin blocked: " + toString(bQ)))
425- else $Tuple5(cc, cd, cn, bI, ce)
439+ else (bX == o))
440+ then throw(("Admin blocked: " + toString(bX)))
441+ else $Tuple5(cj, ck, cv, bP, cl)
426442 }
427443
428444
429-func dj (dk,W,dl,dm,bg,cl,cm,cn,co) = {
430- let cz = cf(W, bg, value(dl).amount, value(dl).assetId, value(dm).amount, value(dm).assetId, dk, false, cl, cm, cn, co)
431- let bQ = parseIntValue(cz._8)
445+func dr (ds,W,dt,du,bk,cs,ct,cu,cv,cw) = {
446+ let cH = cm(W, bk, value(dt).amount, value(dt).assetId, value(du).amount, value(du).assetId, ds, false, cs, ct, cu, cv, cw)
447+ let bX = parseIntValue(cH._8)
432448 if (if (if (aB())
433449 then true
434- else (bQ == m))
450+ else (bX == m))
435451 then true
436- else (bQ == o))
437- then throw(("Blocked:" + toString(bQ)))
438- else cz
452+ else (bX == o))
453+ then throw(("Blocked:" + toString(bX)))
454+ else cH
439455 }
440456
441457
442-func dn (do) = {
443- let dp = fraction(do, ad, d)
444- $Tuple2((do - dp), dp)
458+func dv (dw,bP,bR,W) = {
459+ let dx = aE()
460+ let bT = dx[s]
461+ let bU = dx[t]
462+ let bZ = bc(bT)
463+ let cb = bc(bU)
464+ let dy = bK(dw)
465+ let cv = dy._1
466+ let dz = dy._2
467+ let dA = if ((W == ""))
468+ then $Tuple2(bZ, cb)
469+ else if ((bP == bT))
470+ then if ((dw > bZ))
471+ then throw("invalid payment amount")
472+ else $Tuple2((bZ - dw), cb)
473+ else if ((bP == bU))
474+ then if ((dw > cb))
475+ then throw("invalid payment amount")
476+ else $Tuple2(bZ, (cb - dw))
477+ else throw("wrong pmtAssetId")
478+ let dB = dA._1
479+ let dC = dA._2
480+ let dD = if ((bP == bT))
481+ then $Tuple2(dB, dC)
482+ else $Tuple2(dC, dB)
483+ let dE = dD._1
484+ let dF = dD._2
485+ let dG = 1
486+ let dH = {
487+ let dI = invoke(aM, "calcPutXOnly", [toString(cv), toString(dE), toString(dF), "", aA, h, toString(dG), i], nil)
488+ if ($isInstanceOf(dI, "(Int, Int)"))
489+ then dI
490+ else throw(($getType(invoke(aM, "calcPutXOnly", [toString(cv), toString(dE), toString(dF), "", aA, h, toString(dG), i], nil)) + " couldn't be cast to (Int, Int)"))
491+ }
492+ let dJ = if ((bP == bT))
493+ then dH
494+ else $Tuple2(dH._2, dH._1)
495+ let dK = dJ._1
496+ let dL = dJ._2
497+ let dM = dr(bR, W, AttachedPayment(fromBase58String(bT), dK), AttachedPayment(fromBase58String(bU), dL), 0, true, true, false, cv, bP)
498+ let dN = dM._2
499+ let dO = dM._7
500+ let cl = dM._9
501+ let cV = dM._10
502+ let cW = dM._11
503+ dM
445504 }
446505
447506
448-func dq () = {
507+func dP () = {
449508 let at = getString(O())
450509 if ($isInstanceOf(at, "String"))
451510 then {
452- let dr = at
453- fromBase58String(dr)
511+ let dQ = at
512+ fromBase58String(dQ)
454513 }
455514 else if ($isInstanceOf(at, "Unit"))
456515 then unit
458517 }
459518
460519
461-func ds () = {
520+func dR () = {
462521 let at = getString(P())
463522 if ($isInstanceOf(at, "String"))
464523 then {
465- let dr = at
466- fromBase58String(dr)
524+ let dQ = at
525+ fromBase58String(dQ)
467526 }
468527 else if ($isInstanceOf(at, "Unit"))
469528 then unit
471530 }
472531
473532
474-let dt = throw("Permission denied")
533+let dS = throw("Permission denied")
475534
476-func du (dh) = {
477- let at = dq()
535+func dT (dp) = {
536+ let at = dP()
478537 if ($isInstanceOf(at, "ByteVector"))
479538 then {
480- let dv = at
481- if ((dh.callerPublicKey == dv))
539+ let dU = at
540+ if ((dp.callerPublicKey == dU))
482541 then true
483- else dt
542+ else dS
484543 }
485544 else if ($isInstanceOf(at, "Unit"))
486- then if ((dh.caller == this))
545+ then if ((dp.caller == this))
487546 then true
488- else dt
547+ else dS
489548 else throw("Match error")
490549 }
491550
492551
493-@Callable(dh)
552+@Callable(dp)
494553 func constructor (N) = {
495- let dw = du(dh)
496- if ((dw == dw))
554+ let dV = dT(dp)
555+ if ((dV == dV))
497556 then [StringEntry(N(), N)]
498557 else throw("Strict value is not equal to itself.")
499558 }
500559
501560
502561
503-@Callable(dh)
504-func setManager (dx) = {
505- let dw = du(dh)
506- if ((dw == dw))
562+@Callable(dp)
563+func setManager (dW) = {
564+ let dV = dT(dp)
565+ if ((dV == dV))
507566 then {
508- let dy = fromBase58String(dx)
509- if ((dy == dy))
510- then [StringEntry(P(), dx)]
567+ let dX = fromBase58String(dW)
568+ if ((dX == dX))
569+ then [StringEntry(P(), dW)]
511570 else throw("Strict value is not equal to itself.")
512571 }
513572 else throw("Strict value is not equal to itself.")
515574
516575
517576
518-@Callable(dh)
577+@Callable(dp)
519578 func confirmManager () = {
520- let bF = ds()
521- let dz = if (isDefined(bF))
579+ let bJ = dR()
580+ let dY = if (isDefined(bJ))
522581 then true
523582 else throw("No pending manager")
524- if ((dz == dz))
583+ if ((dY == dY))
525584 then {
526- let dA = if ((dh.callerPublicKey == value(bF)))
585+ let dZ = if ((dp.callerPublicKey == value(bJ)))
527586 then true
528587 else throw("You are not pending manager")
529- if ((dA == dA))
530- then [StringEntry(O(), toBase58String(value(bF))), DeleteEntry(P())]
588+ if ((dZ == dZ))
589+ then [StringEntry(O(), toBase58String(value(bJ))), DeleteEntry(P())]
531590 else throw("Strict value is not equal to itself.")
532591 }
533592 else throw("Strict value is not equal to itself.")
535594
536595
537596
538-@Callable(dh)
539-func put (dB,dC) = {
540- let dD = aI()
541- let dE = valueOrErrorMessage(addressFromString(dD[y]), "Wr st addr")
542- let dF = valueOrErrorMessage(addressFromString(dD[z]), "Wr sl addr")
543- if ((0 > dB))
597+@Callable(dp)
598+func put (ea,eb) = {
599+ let ec = aI()
600+ let ed = valueOrErrorMessage(addressFromString(ec[y]), "Wr st addr")
601+ let ee = valueOrErrorMessage(addressFromString(ec[z]), "Wr sl addr")
602+ if ((0 > ea))
544603 then throw("Wrong slippage")
545- else if ((size(dh.payments) != 2))
604+ else if ((size(dp.payments) != 2))
546605 then throw("2 pmnts expd")
547606 else {
548- let dG = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(value(dh.payments[0]).assetId, value(dh.payments[0]).amount), dh.payments[1], dB, true, false, 0, "")
549- let cM = dG._2
550- let dH = dG._7
551- let ce = dG._9
552- let cN = dG._10
553- let cO = dG._11
554- let bM = dG._12
555- let bN = dG._13
556- let cz = invoke(az, "emit", [cM], nil)
557- if ((cz == cz))
607+ let ef = dr(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], ea, true, false, true, 0, "")
608+ let cU = ef._2
609+ let dO = ef._7
610+ let cl = ef._9
611+ let cV = ef._10
612+ let cW = ef._11
613+ let bT = ef._12
614+ let bU = ef._13
615+ let cH = invoke(az, "emit", [cU], nil)
616+ if ((cH == cH))
558617 then {
559- let dI = {
560- let at = cz
618+ let eg = {
619+ let at = cH
561620 if ($isInstanceOf(at, "Address"))
562621 then {
563- let dJ = at
564- invoke(dJ, "emit", [cM], nil)
622+ let eh = at
623+ invoke(eh, "emit", [cU], nil)
565624 }
566625 else unit
567626 }
568- if ((dI == dI))
627+ if ((eg == eg))
569628 then {
570- let dK = if ((cN > 0))
571- then invoke(dF, "put", nil, [AttachedPayment(bM, cN)])
629+ let ei = if ((cV > 0))
630+ then invoke(ee, "put", nil, [AttachedPayment(bT, cV)])
572631 else nil
573- if ((dK == dK))
632+ if ((ei == ei))
574633 then {
575- let dL = if ((cO > 0))
576- then invoke(dF, "put", nil, [AttachedPayment(bN, cO)])
634+ let ej = if ((cW > 0))
635+ then invoke(ee, "put", nil, [AttachedPayment(bU, cW)])
577636 else nil
578- if ((dL == dL))
637+ if ((ej == ej))
579638 then {
580- let dM = if (dC)
639+ let ek = if (eb)
581640 then {
582- let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
583- if ((dN == dN))
641+ let el = invoke(ed, "stake", nil, [AttachedPayment(dO, cU)])
642+ if ((el == el))
584643 then nil
585644 else throw("Strict value is not equal to itself.")
586645 }
587- else [ScriptTransfer(dh.caller, cM, dH)]
588- (ce ++ dM)
646+ else [ScriptTransfer(dp.caller, cU, dO)]
647+ (cl ++ ek)
589648 }
590649 else throw("Strict value is not equal to itself.")
591650 }
599658
600659
601660
602-@Callable(dh)
603-func putOneTkn (dO,dP,dQ,bg,dC) = {
604- let bx = aI()
605- let dE = valueOrErrorMessage(addressFromString(bx[y]), "Wr st addr")
606- let dF = valueOrErrorMessage(addressFromString(bx[z]), "Wr sl addr")
607- let dR = valueOrErrorMessage(addressFromString(bx[A]), "Wr gwx addr")
608- let dS = aE()
609- let bM = dS[s]
610- let bN = dS[t]
611- let bO = parseIntValue(dS[u])
612- let bP = parseIntValue(dS[v])
613- let dT = valueOrElse(getString(this, ab()), "")
614- let bK = if ((dT == toString(dh.caller)))
615- then dh.originCaller
616- else dh.caller
617- if (if (if (if ((0 >= bg))
661+@Callable(dp)
662+func putOneTkn (dK,dL,em,bk,eb) = {
663+ let bB = aI()
664+ let ed = valueOrErrorMessage(addressFromString(bB[y]), "Wr st addr")
665+ let ee = valueOrErrorMessage(addressFromString(bB[z]), "Wr sl addr")
666+ let en = valueOrErrorMessage(addressFromString(bB[A]), "Wr gwx addr")
667+ let eo = aE()
668+ let bT = eo[s]
669+ let bU = eo[t]
670+ let bV = parseIntValue(eo[u])
671+ let bW = parseIntValue(eo[v])
672+ let ep = valueOrElse(getString(this, ab()), "")
673+ let bR = if ((ep == toString(dp.caller)))
674+ then dp.originCaller
675+ else dp.caller
676+ if (if (if (if ((0 >= bk))
618677 then true
619- else (0 >= dO))
678+ else (0 >= dK))
620679 then true
621- else (0 >= dP))
680+ else (0 >= dL))
622681 then true
623- else (0 >= dQ))
682+ else (0 >= em))
624683 then throw("Wrong params")
625- else if ((size(dh.payments) != 1))
684+ else if ((size(dp.payments) != 1))
626685 then throw("1 pmnt expd")
627686 else {
628- let di = value(dh.payments[0])
629- let bI = toBase58String(value(di.assetId))
630- let dU = di.amount
631- let dV = dn(dU)
632- let cn = dV._1
633- let dW = dV._2
634- if ((10000000 > dU))
687+ let dq = value(dp.payments[0])
688+ let bP = toBase58String(value(dq.assetId))
689+ let eq = dq.amount
690+ let er = bK(eq)
691+ let cv = er._1
692+ let dz = er._2
693+ if ((10000000 > eq))
635694 then throw("Wrong pmt amt")
636695 else {
637- let bS = aY(bM)
638- let bU = aY(bN)
639- let dX = if ((bI == bM))
640- then if (if ((dU > bS))
696+ let bZ = bc(bT)
697+ let cb = bc(bU)
698+ let es = if ((bP == bT))
699+ then if (if ((eq > bZ))
641700 then true
642- else (dO > cn))
701+ else (dK > cv))
643702 then throw("invalid payment amount")
644- else $Tuple6((bS - dU), bU, (cn - dO), dP, 0, 0)
645- else if ((bI == bN))
646- then if (if ((dU > bU))
703+ else $Tuple6((bZ - eq), cb, (cv - dK), dL, 0, 0)
704+ else if ((bP == bU))
705+ then if (if ((eq > cb))
647706 then true
648- else (dP > cn))
707+ else (dL > cv))
649708 then throw("invalid payment amount")
650- else $Tuple6(bS, (bU - dU), 0, 0, (cn - dP), dO)
709+ else $Tuple6(bZ, (cb - eq), 0, 0, (cv - dL), dK)
651710 else throw("wrong pmtAssetId")
652- let dY = dX._1
653- let dZ = dX._2
654- let ea = dX._3
655- let eb = dX._4
656- let ec = dX._5
657- let ed = dX._6
658- let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
659- let bk = invoke(dR, "calcD", [toString(toBigInt(((dY + ea) - ed))), toString(toBigInt(((dZ + ec) - eb))), aA, h, i], nil)
660- let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
661- if ((ee == ee))
711+ let dB = es._1
712+ let dC = es._2
713+ let et = es._3
714+ let eu = es._4
715+ let ev = es._5
716+ let ew = es._6
717+ let bp = invoke(en, "calcD", [toString(dB), toString(dC), aA, h, i], nil)
718+ let bo = invoke(en, "calcD", [toString(toBigInt(((dB + et) - ew))), toString(toBigInt(((dC + ev) - eu))), aA, h, i], nil)
719+ let ex = bn(parseBigIntValue(as(bo)), parseBigIntValue(as(bp)), g)
720+ if ((ex == ex))
662721 then {
663- let ef = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(fromBase58String(bM), dO), AttachedPayment(fromBase58String(bN), dP), bg, true, true, cn, bI)
664- let eg = ef._2
665- let dH = ef._7
666- let ce = ef._9
667- let cN = ef._10
668- let cO = ef._11
669- let eh = bd(toBigInt(eg), toBigInt(dQ), toBigInt(bg))
670- let cM = toInt(eh._2)
671- let dG = invoke(az, "emit", [cM], nil)
672- if ((dG == dG))
722+ let dM = dr(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(fromBase58String(bT), dK), AttachedPayment(fromBase58String(bU), dL), bk, true, true, true, cv, bP)
723+ let dN = dM._2
724+ let dO = dM._7
725+ let cl = dM._9
726+ let cV = dM._10
727+ let cW = dM._11
728+ let ey = bh(toBigInt(dN), toBigInt(em), toBigInt(bk))
729+ let cU = toInt(ey._2)
730+ let ef = invoke(az, "emit", [cU], nil)
731+ if ((ef == ef))
673732 then {
674- let dI = {
675- let at = dG
733+ let eg = {
734+ let at = ef
676735 if ($isInstanceOf(at, "Address"))
677736 then {
678- let dJ = at
679- invoke(dJ, "emit", [cM], nil)
737+ let eh = at
738+ invoke(eh, "emit", [cU], nil)
680739 }
681740 else unit
682741 }
683- if ((dI == dI))
742+ if ((eg == eg))
684743 then {
685- let dK = if ((cN > 0))
686- then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
744+ let ei = if ((cV > 0))
745+ then invoke(ee, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
687746 else nil
688- if ((dK == dK))
747+ if ((ei == ei))
689748 then {
690- let dL = if ((cO > 0))
691- then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bN), cO)])
749+ let ej = if ((cW > 0))
750+ then invoke(ee, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
692751 else nil
693- if ((dL == dL))
752+ if ((ej == ej))
694753 then {
695- let dM = if (dC)
754+ let ek = if (eb)
696755 then {
697- let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
698- if ((dN == dN))
756+ let el = invoke(ed, "stake", nil, [AttachedPayment(dO, cU)])
757+ if ((el == el))
699758 then nil
700759 else throw("Strict value is not equal to itself.")
701760 }
702- else [ScriptTransfer(dh.caller, cM, dH)]
703- let ei = if ((dW > 0))
704- then [ScriptTransfer(aD, dW, fromBase58String(bI))]
761+ else [ScriptTransfer(dp.caller, cU, dO)]
762+ let ez = if ((dz > 0))
763+ then [ScriptTransfer(aD, dz, fromBase58String(bP))]
705764 else nil
706- ((ce ++ dM) ++ ei)
765+ ((cl ++ ek) ++ ez)
707766 }
708767 else throw("Strict value is not equal to itself.")
709768 }
720779
721780
722781
723-@Callable(dh)
724-func putForFree (ej) = if ((0 > ej))
782+@Callable(dp)
783+func putOneTknV2 (eA,eb) = if ((size(dp.payments) != 1))
784+ then throw("1 pmnt expd")
785+ else {
786+ let dx = aE()
787+ let bT = dx[s]
788+ let bU = dx[t]
789+ let eB = parseIntValue(dx[u])
790+ let eC = parseIntValue(dx[v])
791+ let bR = if ((dp.caller == this))
792+ then dp.originCaller
793+ else dp.caller
794+ let dq = value(dp.payments[0])
795+ let bP = toBase58String(value(dq.assetId))
796+ let cv = dq.amount
797+ if ((10000000 > cv))
798+ then throw("Wrong pmt amt")
799+ else {
800+ let cH = dv(cv, bP, toString(bR), toBase58String(dp.transactionId))
801+ let dN = cH._2
802+ let dO = cH._7
803+ let cl = cH._9
804+ let cV = cH._10
805+ let cW = cH._11
806+ let cU = if (if ((eA > 0))
807+ then (eA > dN)
808+ else false)
809+ then throw(makeString(["amount to receive is less than ", toString(eA)], ""))
810+ else dN
811+ let ef = invoke(az, "emit", [cU], nil)
812+ if ((ef == ef))
813+ then {
814+ let eg = {
815+ let at = ef
816+ if ($isInstanceOf(at, "Address"))
817+ then {
818+ let eh = at
819+ invoke(eh, "emit", [cU], nil)
820+ }
821+ else unit
822+ }
823+ if ((eg == eg))
824+ then {
825+ let ei = if ((cV > 0))
826+ then invoke(aL, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
827+ else nil
828+ if ((ei == ei))
829+ then {
830+ let ej = if ((cW > 0))
831+ then invoke(aL, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
832+ else nil
833+ if ((ej == ej))
834+ then {
835+ let ek = if (eb)
836+ then {
837+ let el = invoke(aK, "stake", nil, [AttachedPayment(dO, cU)])
838+ if ((el == el))
839+ then nil
840+ else throw("Strict value is not equal to itself.")
841+ }
842+ else [ScriptTransfer(dp.caller, cU, dO)]
843+ $Tuple2((cl ++ ek), cU)
844+ }
845+ else throw("Strict value is not equal to itself.")
846+ }
847+ else throw("Strict value is not equal to itself.")
848+ }
849+ else throw("Strict value is not equal to itself.")
850+ }
851+ else throw("Strict value is not equal to itself.")
852+ }
853+ }
854+
855+
856+
857+@Callable(dp)
858+func putOneTknV2READONLY (eD,eE) = {
859+ let cH = dv(eD, eE, "", "")
860+ let dN = cH._2
861+ let dO = cH._7
862+ let cl = cH._9
863+ let cV = cH._10
864+ let cW = cH._11
865+ $Tuple2(nil, dN)
866+ }
867+
868+
869+
870+@Callable(dp)
871+func putOneTknV2WithBonusREADONLY (eD,eE) = {
872+ let dx = aE()
873+ let bT = dx[s]
874+ let bU = dx[t]
875+ let bZ = bc(bT)
876+ let cb = bc(bU)
877+ let cH = dv(eD, eE, "", "")
878+ let dN = cH._2
879+ let ce = cH._3
880+ let eF = cH._6
881+ let dO = cH._7
882+ let eG = if ((eE == bT))
883+ then {
884+ let eH = fraction(eD, ce, a)
885+ $Tuple2(eD, eH)
886+ }
887+ else {
888+ let eI = fraction(eD, a, ce)
889+ $Tuple2(eI, eD)
890+ }
891+ let eI = eG._1
892+ let eH = eG._2
893+ let eJ = fraction(eF, eH, cb)
894+ let eK = if ((eE == bT))
895+ then fraction(eI, a, dN)
896+ else fraction(eH, a, dN)
897+ let eL = fraction((eH + eI), a, eJ)
898+ let eM = fraction((eL - eK), a, eK)
899+ let dz = bK(eD)._2
900+ $Tuple2(nil, $Tuple3(dN, dz, eM))
901+ }
902+
903+
904+
905+@Callable(dp)
906+func putForFree (eN) = if ((0 > eN))
725907 then throw("Wrong slpg")
726- else if ((size(dh.payments) != 2))
908+ else if ((size(dp.payments) != 2))
727909 then throw("2 pmnts expd")
728910 else {
729- let ef = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(value(dh.payments[0]).assetId, value(dh.payments[0]).amount), dh.payments[1], ej, false, false, 0, "")
730- ef._9
911+ let dM = dr(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], eN, false, false, true, 0, "")
912+ dM._9
731913 }
732914
733915
734916
735-@Callable(dh)
917+@Callable(dp)
736918 func get () = {
737- let cz = dg(dh)
738- let ek = cz._1
739- let cd = cz._2
740- let cn = cz._3
741- let bI = cz._4
742- let ce = cz._5
743- let el = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
744- if ((el == el))
745- then ce
919+ let cH = do(dp)
920+ let eO = cH._1
921+ let ck = cH._2
922+ let cv = cH._3
923+ let bP = cH._4
924+ let cl = cH._5
925+ let eP = invoke(az, "burn", [cv], [AttachedPayment(bP, cv)])
926+ if ((eP == eP))
927+ then cl
746928 else throw("Strict value is not equal to itself.")
747929 }
748930
749931
750932
751-@Callable(dh)
752-func getOneTkn (em,en,eo,ep,bg) = if ((size(dh.payments) != 1))
933+@Callable(dp)
934+func getOneTkn (eQ,eR,eS,eT,bk) = if ((size(dp.payments) != 1))
753935 then throw("1 pmnt expd")
754936 else {
755- let bx = aE()
756- let bL = bx[r]
757- let bM = bx[s]
758- let bN = bx[t]
759- let bO = parseIntValue(bx[u])
760- let bP = parseIntValue(bx[v])
761- let bQ = bx[q]
762- let dD = aI()
763- let dR = valueOrErrorMessage(addressFromString(dD[A]), "Wr sl addr")
764- let di = value(dh.payments[0])
765- let dT = valueOrElse(getString(this, ab()), "")
766- let bK = if ((dT == toString(dh.caller)))
767- then dh.originCaller
768- else dh.caller
769- let bH = toBase58String(dh.transactionId)
770- let bI = value(di.assetId)
771- let cn = di.amount
772- if ((1000000000 > cn))
937+ let bB = aE()
938+ let bS = bB[r]
939+ let bT = bB[s]
940+ let bU = bB[t]
941+ let bV = parseIntValue(bB[u])
942+ let bW = parseIntValue(bB[v])
943+ let bX = bB[q]
944+ let ec = aI()
945+ let en = valueOrErrorMessage(addressFromString(ec[A]), "Wr sl addr")
946+ let dq = value(dp.payments[0])
947+ let ep = valueOrElse(getString(this, ab()), "")
948+ let bR = if ((ep == toString(dp.caller)))
949+ then dp.originCaller
950+ else dp.caller
951+ let bO = toBase58String(dp.transactionId)
952+ let bP = value(dq.assetId)
953+ let cv = dq.amount
954+ if ((1000000000 > cv))
773955 then throw("Min pmt 10 LP")
774- else if (if (if ((0 > bg))
956+ else if (if (if ((0 > bk))
775957 then true
776- else (0 > em))
958+ else (0 > eQ))
777959 then true
778- else (0 > eo))
960+ else (0 > eS))
779961 then throw("Wrong params")
780- else if ((bL != toBase58String(bI)))
962+ else if ((bS != toBase58String(bP)))
781963 then throw("Wrong LP")
782964 else {
783- let cz = bG(toBase58String(dh.transactionId), toBase58String(bI), cn, dh.caller)
784- let eq = cz._1
785- let er = cz._2
786- let bS = aY(bM)
787- let bU = aY(bN)
788- let es = if ((ep == bM))
789- then $Tuple7((bS - eq), (bU - er), em, er, 0, 0, (eq + em))
790- else if ((ep == bN))
791- then $Tuple7((bS - eq), (bU - er), 0, 0, em, eq, (er + em))
965+ let cH = bN(toBase58String(dp.transactionId), toBase58String(bP), cv, dp.caller)
966+ let eU = cH._1
967+ let eV = cH._2
968+ let bZ = bc(bT)
969+ let cb = bc(bU)
970+ let eW = if ((eT == bT))
971+ then $Tuple7((bZ - eU), (cb - eV), eQ, eV, 0, 0, (eU + eQ))
972+ else if ((eT == bU))
973+ then $Tuple7((bZ - eU), (cb - eV), 0, 0, eQ, eU, (eV + eQ))
792974 else throw("wrong outAssetId")
793- let dY = es._1
794- let dZ = es._2
795- let ea = es._3
796- let eb = es._4
797- let ec = es._5
798- let ed = es._6
799- let et = es._7
800- if (if ((0 > ea))
975+ let dB = eW._1
976+ let dC = eW._2
977+ let et = eW._3
978+ let eu = eW._4
979+ let ev = eW._5
980+ let ew = eW._6
981+ let eX = eW._7
982+ if (if ((0 > et))
801983 then true
802- else (0 > ec))
984+ else (0 > ev))
803985 then throw("Wrong calc")
804986 else {
805- let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
806- let bk = invoke(dR, "calcD", [toString(((dY - ea) + ed)), toString(((dZ + eb) - ec)), aA, h, i], nil)
807- let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
808- if ((ee == ee))
987+ let bp = invoke(en, "calcD", [toString(dB), toString(dC), aA, h, i], nil)
988+ let bo = invoke(en, "calcD", [toString(((dB - et) + ew)), toString(((dC + eu) - ev)), aA, h, i], nil)
989+ let ex = bn(parseBigIntValue(as(bo)), parseBigIntValue(as(bp)), g)
990+ if ((ex == ex))
809991 then {
810- let eu = dn(et)._1
811- let ev = bd(toBigInt(eu), toBigInt(eo), toBigInt(bg))
812- if ((ev == ev))
992+ let eY = bK(eX)._1
993+ let eZ = bh(toBigInt(eY), toBigInt(eS), toBigInt(bk))
994+ if ((eZ == eZ))
813995 then {
814- let ew = if ((ep == bM))
815- then $Tuple2(toInt(ev._2), 0)
816- else $Tuple2(0, toInt(ev._2))
817- let ex = ew._1
818- let ey = ew._2
819- let ez = (ex + ey)
820- let dW = (et - eu)
821- let eA = if ((ep == "WAVES"))
996+ let fa = if ((eT == bT))
997+ then $Tuple2(toInt(eZ._2), 0)
998+ else $Tuple2(0, toInt(eZ._2))
999+ let fb = fa._1
1000+ let fc = fa._2
1001+ let fd = (fb + fc)
1002+ let dz = (eX - eY)
1003+ let fe = if ((eT == "WAVES"))
8221004 then unit
823- else fromBase58String(ep)
824- let ei = if ((dW > 0))
825- then [ScriptTransfer(aD, dW, eA)]
1005+ else fromBase58String(eT)
1006+ let ez = if ((dz > 0))
1007+ then [ScriptTransfer(aD, dz, fe)]
8261008 else nil
827- let eB = ba(C(bU, bP), C(bS, bO))
828- let eC = F(eB, a)
829- let ce = [ScriptTransfer(bK, ez, eA), StringEntry(X(toString(bK), bH), aU(ex, ey, cn, eC, height, lastBlock.timestamp)), IntegerEntry(Q(), eC), IntegerEntry(R(height, lastBlock.timestamp), eC)]
830- if ((ce == ce))
1009+ let ff = be(C(cb, bW), C(bZ, bV))
1010+ let fg = F(ff, a)
1011+ let cl = [ScriptTransfer(bR, fd, fe), StringEntry(X(toString(bR), bO), aY(fb, fc, cv, fg, height, lastBlock.timestamp)), IntegerEntry(Q(), fg), IntegerEntry(R(height, lastBlock.timestamp), fg)]
1012+ if ((cl == cl))
8311013 then {
832- let eD = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
833- if ((eD == eD))
834- then (ce ++ ei)
1014+ let fh = invoke(az, "burn", [cv], [AttachedPayment(bP, cv)])
1015+ if ((fh == fh))
1016+ then (cl ++ ez)
8351017 else throw("Strict value is not equal to itself.")
8361018 }
8371019 else throw("Strict value is not equal to itself.")
8451027
8461028
8471029
848-@Callable(dh)
849-func getNoLess (eE,eF) = {
850- let cz = dg(dh)
851- let cc = cz._1
852- let cd = cz._2
853- let cn = cz._3
854- let bI = cz._4
855- let ce = cz._5
856- if ((eE > cc))
857- then throw(((("Failed: " + toString(cc)) + " < ") + toString(eE)))
858- else if ((eF > cd))
859- then throw(((("Failed: " + toString(cd)) + " < ") + toString(eF)))
1030+@Callable(dp)
1031+func getOneTknV2 (eT,eA) = if ((size(dp.payments) != 1))
1032+ then throw("1 pmnt expd")
1033+ else {
1034+ let dx = aE()
1035+ let bS = dx[r]
1036+ let bT = dx[s]
1037+ let bU = dx[t]
1038+ let eB = parseIntValue(dx[u])
1039+ let eC = parseIntValue(dx[v])
1040+ let fi = dx[q]
1041+ let bR = if ((dp.caller == this))
1042+ then dp.originCaller
1043+ else dp.caller
1044+ let dq = value(dp.payments[0])
1045+ let bP = value(dq.assetId)
1046+ let cv = dq.amount
1047+ if ((1000000000 > cv))
1048+ then throw("Min pmt 10 LP")
8601049 else {
861- let eG = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
862- if ((eG == eG))
863- then ce
1050+ let bO = toBase58String(dp.transactionId)
1051+ if ((bS != toBase58String(bP)))
1052+ then throw("Wrong LP")
1053+ else {
1054+ let bZ = bc(bT)
1055+ let cb = bc(bU)
1056+ let eY = {
1057+ let dI = invoke(this, "getOneTknV2READONLY", [eT, cv], nil)
1058+ if ($isInstanceOf(dI, "Int"))
1059+ then dI
1060+ else throw(($getType(invoke(this, "getOneTknV2READONLY", [eT, cv], nil)) + " couldn't be cast to Int"))
1061+ }
1062+ let fd = if (if ((eA > 0))
1063+ then (eA > eY)
1064+ else false)
1065+ then throw(makeString(["amount to receive is less than ", toString(eA)], ""))
1066+ else eY
1067+ let fj = if ((eT == bT))
1068+ then $Tuple2(fd, 0)
1069+ else $Tuple2(0, fd)
1070+ let fb = fj._1
1071+ let fc = fj._2
1072+ let ff = be(C(cb, eC), C(bZ, eB))
1073+ let fg = F(ff, a)
1074+ let cl = [ScriptTransfer(bR, fd, if ((eT == "WAVES"))
1075+ then unit
1076+ else fromBase58String(eT)), StringEntry(X(toString(bR), bO), aY(fb, fc, cv, fg, height, lastBlock.timestamp)), IntegerEntry(Q(), fg), IntegerEntry(R(height, lastBlock.timestamp), fg)]
1077+ if ((cl == cl))
1078+ then {
1079+ let fh = invoke(az, "burn", [cv], [AttachedPayment(bP, cv)])
1080+ if ((fh == fh))
1081+ then $Tuple2(cl, fd)
1082+ else throw("Strict value is not equal to itself.")
1083+ }
1084+ else throw("Strict value is not equal to itself.")
1085+ }
1086+ }
1087+ }
1088+
1089+
1090+
1091+@Callable(dp)
1092+func getOneTknV2READONLY (eT,fk) = {
1093+ let dx = aE()
1094+ let bS = dx[r]
1095+ let bT = dx[s]
1096+ let bU = dx[t]
1097+ let cH = bN("", bS, fk, this)
1098+ let eU = cH._1
1099+ let eV = cH._2
1100+ let bZ = bc(bT)
1101+ let cb = bc(bU)
1102+ let dB = (bZ - eU)
1103+ let dC = (cb - eV)
1104+ let fl = if ((eT == bT))
1105+ then $Tuple3(dC, dB, eV)
1106+ else if ((eT == bU))
1107+ then $Tuple3(dB, dC, eU)
1108+ else throw("wrong outAssetId")
1109+ let fm = fl._1
1110+ let fn = fl._2
1111+ let fo = fl._3
1112+ let fp = 1
1113+ let eQ = {
1114+ let dI = invoke(aM, "calcSwapXToY", [toString(fo), toString(fm), toString(fn), "", aA, h, toString(fp), i], nil)
1115+ if ($isInstanceOf(dI, "Int"))
1116+ then dI
1117+ else throw(($getType(invoke(aM, "calcSwapXToY", [toString(fo), toString(fm), toString(fn), "", aA, h, toString(fp), i], nil)) + " couldn't be cast to Int"))
1118+ }
1119+ let eX = (eQ + (if ((eT == bT))
1120+ then eU
1121+ else eV))
1122+ let fq = bK(eX)
1123+ let eY = fq._1
1124+ let dz = fq._2
1125+ $Tuple2(nil, $Tuple2(eY, dz))
1126+ }
1127+
1128+
1129+
1130+@Callable(dp)
1131+func getOneTknV2WithBonusREADONLY (eT,fk) = {
1132+ let dx = aE()
1133+ let bT = dx[s]
1134+ let bU = dx[t]
1135+ let bS = dx[r]
1136+ let bZ = bc(bT)
1137+ let cb = bc(bU)
1138+ let fr = {
1139+ let dI = invoke(this, "getOneTknV2READONLY", [eT, fk], nil)
1140+ if ($isInstanceOf(dI, "(Int, Int)"))
1141+ then dI
1142+ else throw(($getType(invoke(this, "getOneTknV2READONLY", [eT, fk], nil)) + " couldn't be cast to (Int, Int)"))
1143+ }
1144+ let eY = fr._1
1145+ let dz = fr._2
1146+ let cH = bN("", bS, fk, this)
1147+ let cj = cH._1
1148+ let ck = cH._2
1149+ let eK = fraction(eY, a, fk)
1150+ let eL = fraction((cj + ck), a, fk)
1151+ let eM = fraction((eK - eL), a, eL)
1152+ $Tuple2(nil, $Tuple3(eY, dz, eM))
1153+ }
1154+
1155+
1156+
1157+@Callable(dp)
1158+func getNoLess (fs,ft) = {
1159+ let cH = do(dp)
1160+ let cj = cH._1
1161+ let ck = cH._2
1162+ let cv = cH._3
1163+ let bP = cH._4
1164+ let cl = cH._5
1165+ if ((fs > cj))
1166+ then throw(((("Failed: " + toString(cj)) + " < ") + toString(fs)))
1167+ else if ((ft > ck))
1168+ then throw(((("Failed: " + toString(ck)) + " < ") + toString(ft)))
1169+ else {
1170+ let fu = invoke(az, "burn", [cv], [AttachedPayment(bP, cv)])
1171+ if ((fu == fu))
1172+ then cl
8641173 else throw("Strict value is not equal to itself.")
8651174 }
8661175 }
8671176
8681177
8691178
870-@Callable(dh)
871-func unstakeAndGet (do) = {
872- let eH = if ((size(dh.payments) != 0))
1179+@Callable(dp)
1180+func unstakeAndGet (bL) = {
1181+ let fv = if ((size(dp.payments) != 0))
8731182 then throw("No pmnts expd")
8741183 else true
875- if ((eH == eH))
1184+ if ((fv == fv))
8761185 then {
877- let bx = aE()
878- let eI = aI()
879- let dH = fromBase58String(bx[r])
880- let eJ = valueOrErrorMessage(addressFromString(eI[y]), "Wr st addr")
881- let eK = invoke(eJ, "unstake", [toBase58String(dH), do], nil)
882- if ((eK == eK))
1186+ let bB = aE()
1187+ let fw = aI()
1188+ let dO = fromBase58String(bB[r])
1189+ let fx = valueOrErrorMessage(addressFromString(fw[y]), "Wr st addr")
1190+ let fy = invoke(fx, "unstake", [toBase58String(dO), bL], nil)
1191+ if ((fy == fy))
8831192 then {
884- let cz = bG(toBase58String(dh.transactionId), toBase58String(dH), do, dh.caller)
885- let bQ = parseIntValue(cz._9)
886- let ce = cz._10
887- let eL = if (if (aB())
1193+ let cH = bN(toBase58String(dp.transactionId), toBase58String(dO), bL, dp.caller)
1194+ let bX = parseIntValue(cH._9)
1195+ let cl = cH._10
1196+ let fz = if (if (aB())
8881197 then true
889- else (bQ == o))
890- then throw(("Blocked: " + toString(bQ)))
1198+ else (bX == o))
1199+ then throw(("Blocked: " + toString(bX)))
8911200 else true
892- if ((eL == eL))
1201+ if ((fz == fz))
8931202 then {
894- let eM = invoke(az, "burn", [do], [AttachedPayment(dH, do)])
895- if ((eM == eM))
896- then ce
1203+ let fA = invoke(az, "burn", [bL], [AttachedPayment(dO, bL)])
1204+ if ((fA == fA))
1205+ then cl
8971206 else throw("Strict value is not equal to itself.")
8981207 }
8991208 else throw("Strict value is not equal to itself.")
9051214
9061215
9071216
908-@Callable(dh)
909-func activate (eN,eO) = if ((toString(dh.caller) != toString(az)))
910- then throw("denied")
911- else $Tuple2([StringEntry(Y(), eN), StringEntry(Z(), eO)], "success")
1217+@Callable(dp)
1218+func unstakeAndGetOneTkn (bL,eS,eT,bk) = {
1219+ let fv = if ((size(dp.payments) != 0))
1220+ then throw("No pmnts expd")
1221+ else true
1222+ if ((fv == fv))
1223+ then {
1224+ let bB = aE()
1225+ let fw = aI()
1226+ let dO = fromBase58String(bB[r])
1227+ let fx = valueOrErrorMessage(addressFromString(fw[y]), "Wr st addr")
1228+ let fy = invoke(fx, "unstake", [toBase58String(dO), bL], nil)
1229+ if ((fy == fy))
1230+ then {
1231+ let fB = {
1232+ let dI = invoke(this, "getOneTknV2", [eS, eT, bk], [AttachedPayment(dO, bL)])
1233+ if ($isInstanceOf(dI, "Int"))
1234+ then dI
1235+ else unit
1236+ }
1237+ if ((fB == fB))
1238+ then $Tuple2(nil, fB)
1239+ else throw("Strict value is not equal to itself.")
1240+ }
1241+ else throw("Strict value is not equal to itself.")
1242+ }
1243+ else throw("Strict value is not equal to itself.")
1244+ }
9121245
9131246
9141247
915-@Callable(dh)
916-func setS (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
917- then dt
918- else [StringEntry(eP, eL)]
1248+@Callable(dp)
1249+func activate (fC,fD) = if ((toString(dp.caller) != toString(az)))
1250+ then throw("denied")
1251+ else $Tuple2([StringEntry(Y(), fC), StringEntry(Z(), fD)], "success")
9191252
9201253
9211254
922-@Callable(dh)
923-func setI (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
924- then dt
925- else [IntegerEntry(eP, eL)]
1255+@Callable(dp)
1256+func setS (fE,fz) = if ((toString(dp.caller) != av(this, ab())))
1257+ then dS
1258+ else [StringEntry(fE, fz)]
9261259
9271260
9281261
929-@Callable(dh)
1262+@Callable(dp)
1263+func setI (fE,fz) = if ((toString(dp.caller) != av(this, ab())))
1264+ then dS
1265+ else [IntegerEntry(fE, fz)]
1266+
1267+
1268+
1269+@Callable(dp)
9301270 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
9311271
9321272
9331273
934-@Callable(dh)
935-func getAccBalanceWrapperREADONLY (aZ) = $Tuple2(nil, aY(aZ))
1274+@Callable(dp)
1275+func getAccBalanceWrapperREADONLY (bd) = $Tuple2(nil, bc(bd))
9361276
9371277
9381278
939-@Callable(dh)
940-func calcPricesWrapperREADONLY (br,bs,bw) = {
941- let eQ = bv(br, bs, bw)
942- $Tuple2(nil, [toString(eQ[0]), toString(eQ[1]), toString(eQ[2])])
1279+@Callable(dp)
1280+func calcPricesWrapperREADONLY (bv,bw,bA) = {
1281+ let fF = bz(bv, bw, bA)
1282+ $Tuple2(nil, [toString(fF[0]), toString(fF[1]), toString(fF[2])])
9431283 }
9441284
9451285
9461286
947-@Callable(dh)
948-func fromX18WrapperREADONLY (G,eR) = $Tuple2(nil, F(parseBigIntValue(G), eR))
1287+@Callable(dp)
1288+func fromX18WrapperREADONLY (G,fG) = $Tuple2(nil, F(parseBigIntValue(G), fG))
9491289
9501290
9511291
952-@Callable(dh)
1292+@Callable(dp)
9531293 func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
9541294
9551295
9561296
957-@Callable(dh)
958-func calcPriceBigIntWrapperREADONLY (bb,bc) = $Tuple2(nil, toString(ba(parseBigIntValue(bb), parseBigIntValue(bc))))
1297+@Callable(dp)
1298+func calcPriceBigIntWrapperREADONLY (bf,bg) = $Tuple2(nil, toString(be(parseBigIntValue(bf), parseBigIntValue(bg))))
9591299
9601300
9611301
962-@Callable(dh)
963-func estimatePutOperationWrapperREADONLY (bH,bg,cg,ch,ci,cj,eS,ck,cl) = $Tuple2(nil, cf(bH, bg, cg, ch, ci, cj, eS, ck, cl, false, 0, ""))
1302+@Callable(dp)
1303+func estimatePutOperationWrapperREADONLY (bO,bk,cn,co,cp,cq,fH,cr,cs) = $Tuple2(nil, cm(bO, bk, cn, co, cp, cq, fH, cr, cs, true, false, 0, ""))
9641304
9651305
9661306
967-@Callable(dh)
968-func estimateGetOperationWrapperREADONLY (bH,eT,bJ,eS) = {
969- let cz = bG(bH, eT, bJ, addressFromStringValue(eS))
970- $Tuple2(nil, $Tuple10(cz._1, cz._2, cz._3, cz._4, cz._5, cz._6, cz._7, toString(cz._8), cz._9, cz._10))
1307+@Callable(dp)
1308+func estimateGetOperationWrapperREADONLY (bO,fI,bQ,fH) = {
1309+ let cH = bN(bO, fI, bQ, addressFromStringValue(fH))
1310+ $Tuple2(nil, $Tuple10(cH._1, cH._2, cH._3, cH._4, cH._5, cH._6, cH._7, toString(cH._8), cH._9, cH._10))
9711311 }
9721312
9731313
974-@Verifier(eU)
975-func eV () = {
976- let eW = {
977- let at = dq()
1314+@Verifier(fJ)
1315+func fK () = {
1316+ let fL = {
1317+ let at = dP()
9781318 if ($isInstanceOf(at, "ByteVector"))
9791319 then {
980- let dv = at
981- dv
1320+ let dU = at
1321+ dU
9821322 }
9831323 else if ($isInstanceOf(at, "Unit"))
984- then eU.senderPublicKey
1324+ then fJ.senderPublicKey
9851325 else throw("Match error")
9861326 }
987- let at = eU
1327+ let at = fJ
9881328 if ($isInstanceOf(at, "Order"))
9891329 then {
990- let cU = at
991- let eX = aC()
992- let eY = cT(cU)
993- let eZ = sigVerify(cU.bodyBytes, cU.proofs[0], cU.senderPublicKey)
994- let fa = sigVerify(cU.bodyBytes, cU.proofs[1], eX)
995- if (if (if (eY)
996- then eZ
1330+ let dc = at
1331+ let fM = aC()
1332+ let fN = db(dc)
1333+ let fO = sigVerify(dc.bodyBytes, dc.proofs[0], dc.senderPublicKey)
1334+ let fP = sigVerify(dc.bodyBytes, dc.proofs[1], fM)
1335+ if (if (if (fN)
1336+ then fO
9971337 else false)
998- then fa
1338+ then fP
9991339 else false)
10001340 then true
1001- else ao(eY, eZ, fa)
1341+ else ao(fN, fO, fP)
10021342 }
10031343 else if ($isInstanceOf(at, "SetScriptTransaction"))
10041344 then {
1005- let dr = at
1006- let fb = blake2b256(value(dr.script))
1007- let fc = fromBase64String(value(getString(az, am())))
1008- let fd = scriptHash(this)
1009- if (if ((fc == fb))
1010- then (fd != fb)
1345+ let dQ = at
1346+ let fQ = blake2b256(value(dQ.script))
1347+ let fR = fromBase64String(value(getString(az, am())))
1348+ let fS = scriptHash(this)
1349+ if (if ((fR == fQ))
1350+ then (fS != fQ)
10111351 else false)
10121352 then true
1013- else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
1353+ else sigVerify(fJ.bodyBytes, fJ.proofs[0], fL)
10141354 }
1015- else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
1355+ else sigVerify(fJ.bodyBytes, fJ.proofs[0], fL)
10161356 }
10171357
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 = 1000
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 = 0
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 ((e > G))
7070 then -(G)
7171 else G
7272
7373
7474 func N () = "%s__factoryContract"
7575
7676
7777 func O () = "%s__managerPublicKey"
7878
7979
8080 func P () = "%s__pendingManagerPublicKey"
8181
8282
8383 func Q () = "%s%s__price__last"
8484
8585
8686 func R (S,T) = makeString(["%s%s%d%d__price__history", toString(S), toString(T)], j)
8787
8888
8989 func U (V,W) = ((("%s%s%s__P__" + V) + "__") + W)
9090
9191
9292 func X (V,W) = ((("%s%s%s__G__" + V) + "__") + W)
9393
9494
9595 func Y () = "%s__amountAsset"
9696
9797
9898 func Z () = "%s__priceAsset"
9999
100100
101101 func aa () = "%s__amp"
102102
103103
104104 func ab () = "%s__addonAddr"
105105
106106
107107 let ac = "%s__feePermille"
108108
109109 let ad = valueOrElse(getInteger(this, ac), B)
110110
111111 func ae () = "%s__factoryConfig"
112112
113113
114114 func af () = "%s%s__matcher__publicKey"
115115
116116
117117 func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
118118
119119
120120 func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
121121
122122
123123 func al () = "%s__shutdown"
124124
125125
126126 func am () = "%s__allowedLpStableScriptHash"
127127
128128
129129 func an () = "%s__feeCollectorAddress"
130130
131131
132132 func ao (ap,aq,ar) = throw(((((("Failed: ordValid=" + toString(ap)) + " sndrValid=") + toString(aq)) + " mtchrValid=") + toString(ar)))
133133
134134
135135 func as (G) = {
136136 let at = G
137137 if ($isInstanceOf(at, "String"))
138138 then {
139139 let au = at
140140 au
141141 }
142142 else throw("fail cast to String")
143143 }
144144
145145
146146 func av (aw,ax) = valueOrErrorMessage(getString(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
147147
148148
149149 func ay (aw,ax) = valueOrErrorMessage(getInteger(aw, ax), makeString(["mandatory ", toString(aw), ".", ax, " not defined"], ""))
150150
151151
152152 let az = addressFromStringValue(av(this, N()))
153153
154154 let aA = av(this, aa())
155155
156156 func aB () = valueOrElse(getBoolean(az, al()), false)
157157
158158
159159 func aC () = fromBase58String(av(az, af()))
160160
161161
162162 let aD = addressFromStringValue(av(az, an()))
163163
164164 func aE () = {
165165 let aF = av(this, Y())
166166 let aG = av(this, Z())
167167 let aH = ay(az, aj(aG))
168168 let ah = ay(az, aj(aF))
169169 split(av(az, ag(toString(ah), toString(aH))), j)
170170 }
171171
172172
173173 func aI () = split(av(az, ae()), j)
174174
175175
176-func aJ (aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aK), toString(aL), toString(aM), toString(aN), toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT)], j)
176+let aJ = aI()
177+
178+let aK = valueOrErrorMessage(addressFromString(aJ[y]), "Invalid staking contract address")
179+
180+let aL = valueOrErrorMessage(addressFromString(aJ[z]), "Invalid slipage contract address")
181+
182+let aM = valueOrErrorMessage(addressFromString(aJ[A]), "Invalid gwx contract address")
183+
184+func aN (aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aO), toString(aP), toString(aQ), toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(aX)], j)
177185
178186
179-func aU (aV,aW,aX,aN,aQ,aR) = makeString(["%d%d%d%d%d%d", toString(aV), toString(aW), toString(aX), toString(aN), toString(aQ), toString(aR)], j)
187+func aY (aZ,ba,bb,aR,aU,aV) = makeString(["%d%d%d%d%d%d", toString(aZ), toString(ba), toString(bb), toString(aR), toString(aU), toString(aV)], j)
180188
181189
182-func aY (aZ) = if ((aZ == "WAVES"))
190+func bc (bd) = if ((bd == "WAVES"))
183191 then wavesBalance(this).available
184- else assetBalance(this, fromBase58String(aZ))
192+ else assetBalance(this, fromBase58String(bd))
185193
186194
187-func ba (bb,bc) = fraction(bb, c, bc)
195+func be (bf,bg) = fraction(bf, c, bg)
188196
189197
190-func bd (be,bf,bg) = {
191- let bh = fraction((be - bf), b, bf)
192- let bi = ((bg - M(bh)) > e)
193- if (!(bi))
194- then throw(("Big slpg: " + toString(bh)))
195- else $Tuple2(bi, min([be, bf]))
198+func bh (bi,bj,bk) = {
199+ let bl = fraction((bi - bj), b, bj)
200+ let bm = ((bk - M(bl)) > e)
201+ if (!(bm))
202+ then throw(("Big slpg: " + toString(bl)))
203+ else $Tuple2(bm, min([bi, bj]))
196204 }
197205
198206
199-func bj (bk,bl,bm) = {
200- let bh = fraction(bl, b, bk)
201- let bn = (bm > bh)
202- if (if (bn)
207+func bn (bo,bp,bq) = {
208+ let bl = fraction(bp, b, bo)
209+ let br = (bq > bl)
210+ if (if (br)
203211 then true
204- else (bl > bk))
205- then throw(((((((toString(bl) + " ") + toString(bk)) + " ") + toString(bh)) + " ") + toString(bm)))
206- else bn
212+ else (bp > bo))
213+ then throw(((((((toString(bp) + " ") + toString(bo)) + " ") + toString(bl)) + " ") + toString(bq)))
214+ else br
207215 }
208216
209217
210-func bo (bp,bq,br,bs) = {
211- let bt = C(br, bp)
212- let bu = C(bs, bq)
213- ba(bu, bt)
218+func bs (bt,bu,bv,bw) = {
219+ let bx = C(bv, bt)
220+ let by = C(bw, bu)
221+ be(by, bx)
214222 }
215223
216224
217-func bv (br,bs,bw) = {
218- let bx = aE()
219- let by = parseIntValue(bx[u])
220- let bz = parseIntValue(bx[v])
221- let bA = bo(by, bz, br, bs)
222- let bc = C(br, by)
223- let bb = C(bs, bz)
224- let bB = C(bw, a)
225- let bC = ba(bc, bB)
226- let bD = ba(bb, bB)
227-[bA, bC, bD]
225+func bz (bv,bw,bA) = {
226+ let bB = aE()
227+ let bC = parseIntValue(bB[u])
228+ let bD = parseIntValue(bB[v])
229+ let bE = bs(bC, bD, bv, bw)
230+ let bg = C(bv, bC)
231+ let bf = C(bw, bD)
232+ let bF = C(bA, a)
233+ let bG = be(bg, bF)
234+ let bH = be(bf, bF)
235+[bE, bG, bH]
228236 }
229237
230238
231-func bE (br,bs,bw) = {
232- let bF = bv(br, bs, bw)
233-[F(bF[0], a), F(bF[1], a), F(bF[2], a)]
239+func bI (bv,bw,bA) = {
240+ let bJ = bz(bv, bw, bA)
241+[F(bJ[0], a), F(bJ[1], a), F(bJ[2], a)]
234242 }
235243
236244
237-func bG (bH,bI,bJ,bK) = {
238- let bx = aE()
239- let bL = bx[r]
240- let bM = bx[s]
241- let bN = bx[t]
242- let bO = parseIntValue(bx[u])
243- let bP = parseIntValue(bx[v])
244- let bQ = bx[q]
245- let bR = valueOrErrorMessage(assetInfo(fromBase58String(bL)), "Wrong LP id").quantity
246- if ((bL != bI))
245+func bK (bL) = {
246+ let bM = fraction(bL, ad, d)
247+ $Tuple2((bL - bM), bM)
248+ }
249+
250+
251+func bN (bO,bP,bQ,bR) = {
252+ let bB = aE()
253+ let bS = bB[r]
254+ let bT = bB[s]
255+ let bU = bB[t]
256+ let bV = parseIntValue(bB[u])
257+ let bW = parseIntValue(bB[v])
258+ let bX = bB[q]
259+ let bY = valueOrErrorMessage(assetInfo(fromBase58String(bS)), "Wrong LP id").quantity
260+ if ((bS != bP))
247261 then throw("Wrong pmt asset")
248262 else {
249- let bS = aY(bM)
250- let bT = C(bS, bO)
251- let bU = aY(bN)
252- let bV = C(bU, bP)
253- let bW = ba(bV, bT)
254- let bX = F(bW, a)
255- let bY = C(bJ, a)
256- let bZ = C(bR, a)
257- let ca = fraction(bT, bY, bZ)
258- let cb = fraction(bV, bY, bZ)
259- let cc = F(ca, bO)
260- let cd = F(cb, bP)
261- let ce = if ((bH == ""))
263+ let bZ = bc(bT)
264+ let ca = C(bZ, bV)
265+ let cb = bc(bU)
266+ let cc = C(cb, bW)
267+ let cd = be(cc, ca)
268+ let ce = F(cd, a)
269+ let cf = C(bQ, a)
270+ let cg = C(bY, a)
271+ let ch = fraction(ca, cf, cg)
272+ let ci = fraction(cc, cf, cg)
273+ let cj = F(ch, bV)
274+ let ck = F(ci, bW)
275+ let cl = if ((bO == ""))
262276 then nil
263- else [ScriptTransfer(bK, cc, if ((bM == "WAVES"))
277+ else [ScriptTransfer(bR, cj, if ((bT == "WAVES"))
264278 then unit
265- else fromBase58String(bM)), ScriptTransfer(bK, cd, if ((bN == "WAVES"))
279+ else fromBase58String(bT)), ScriptTransfer(bR, ck, if ((bU == "WAVES"))
266280 then unit
267- else fromBase58String(bN)), StringEntry(X(toString(bK), bH), aU(cc, cd, bJ, bX, height, lastBlock.timestamp)), IntegerEntry(Q(), bX), IntegerEntry(R(height, lastBlock.timestamp), bX)]
268- $Tuple10(cc, cd, bM, bN, bS, bU, bR, bW, bQ, ce)
281+ else fromBase58String(bU)), StringEntry(X(toString(bR), bO), aY(cj, ck, bQ, ce, height, lastBlock.timestamp)), IntegerEntry(Q(), ce), IntegerEntry(R(height, lastBlock.timestamp), ce)]
282+ $Tuple10(cj, ck, bT, bU, bZ, cb, bY, cd, bX, cl)
269283 }
270284 }
271285
272286
273-func cf (bH,bg,cg,ch,ci,cj,bK,ck,cl,cm,cn,co) = {
274- let bx = aE()
275- let bL = fromBase58String(bx[r])
276- let cp = bx[s]
277- let cq = bx[t]
278- let cr = bx[w]
279- let cs = bx[x]
280- let ct = parseIntValue(bx[u])
281- let cu = parseIntValue(bx[v])
282- let bQ = bx[q]
283- let cv = valueOrErrorMessage(assetInfo(bL), "Wr lp as").quantity
284- let bS = if (ck)
285- then aY(cp)
286- else if (if (cm)
287- then (co == cp)
287+func cm (bO,bk,cn,co,cp,cq,bR,cr,cs,ct,cu,cv,cw) = {
288+ let bB = aE()
289+ let bS = fromBase58String(bB[r])
290+ let cx = bB[s]
291+ let cy = bB[t]
292+ let cz = bB[w]
293+ let cA = bB[x]
294+ let cB = parseIntValue(bB[u])
295+ let cC = parseIntValue(bB[v])
296+ let bX = bB[q]
297+ let cD = valueOrErrorMessage(assetInfo(bS), "Wr lp as").quantity
298+ let bZ = if (cr)
299+ then bc(cx)
300+ else if (if (ct)
301+ then (cw == cx)
288302 else false)
289- then (aY(cp) - cn)
290- else if (cm)
291- then aY(cp)
292- else (aY(cp) - cg)
293- let bU = if (ck)
294- then aY(cq)
295- else if (if (cm)
296- then (co == cq)
303+ then (bc(cx) - cv)
304+ else if (ct)
305+ then bc(cx)
306+ else (bc(cx) - cn)
307+ let cb = if (cr)
308+ then bc(cy)
309+ else if (if (ct)
310+ then (cw == cy)
297311 else false)
298- then (aY(cq) - cn)
299- else if (cm)
300- then aY(cq)
301- else (aY(cq) - ci)
302- let cw = C(cg, ct)
303- let cx = C(ci, cu)
304- let cy = ba(cx, cw)
305- let bT = C(bS, ct)
306- let bV = C(bU, cu)
307- let cz = if ((cv == 0))
312+ then (bc(cy) - cv)
313+ else if (ct)
314+ then bc(cy)
315+ else (bc(cy) - cp)
316+ let cE = C(cn, cB)
317+ let cF = C(cp, cC)
318+ let cG = be(cF, cE)
319+ let ca = C(bZ, cB)
320+ let cc = C(cb, cC)
321+ let cH = if ((cD == 0))
308322 then {
309- let bW = e
310- let cA = e
311- let bB = pow((cw * cx), 0, toBigInt(5), 1, 0, DOWN)
312- $Tuple5(F(bB, a), F(cw, ct), F(cx, cu), ba((bV + cx), (bT + cw)), cA)
323+ let cd = e
324+ let cI = e
325+ let bF = pow((cE * cF), 0, toBigInt(5), 1, 0, DOWN)
326+ $Tuple5(F(bF, a), F(cE, cB), F(cF, cC), be((cc + cF), (ca + cE)), cI)
313327 }
314328 else {
315- let bW = ba(bV, bT)
316- let cB = fraction(M((bW - cy)), c, bW)
317- let cA = C(bg, a)
318- if (if ((bW != e))
319- then (cB > cA)
329+ let cd = be(cc, ca)
330+ let cJ = fraction(M((cd - cG)), c, cd)
331+ let cI = C(bk, a)
332+ if (if (if (cu)
333+ then (cd != e)
320334 else false)
321- then throw(((("Price slippage " + toString(cB)) + " > ") + toString(cA)))
335+ then (cJ > cI)
336+ else false)
337+ then throw(((("Price slippage " + toString(cJ)) + " > ") + toString(cI)))
322338 else {
323- let cC = C(cv, a)
324- let cD = fraction(cw, bW, c)
325- let cE = fraction(cx, c, bW)
326- let cF = if ((cD > cx))
327- then $Tuple2(cE, cx)
328- else $Tuple2(cw, cD)
329- let cG = cF._1
330- let cH = cF._2
331- let bB = fraction(cC, cH, bV)
332- $Tuple5(F(bB, a), F(cG, ct), F(cH, cu), bW, cA)
339+ let cK = C(cD, a)
340+ let cL = fraction(cE, cd, c)
341+ let cM = fraction(cF, c, cd)
342+ let cN = if ((cL > cF))
343+ then $Tuple2(cM, cF)
344+ else $Tuple2(cE, cL)
345+ let cO = cN._1
346+ let cP = cN._2
347+ let bF = fraction(cK, cP, cc)
348+ $Tuple5(F(bF, a), F(cO, cB), F(cP, cC), cd, cI)
333349 }
334350 }
335- let cI = cz._1
336- let cJ = cz._2
337- let cK = cz._3
338- let bX = F(cz._4, a)
339- let cL = F(cz._5, a)
340- if ((0 >= cI))
351+ let cQ = cH._1
352+ let cR = cH._2
353+ let cS = cH._3
354+ let ce = F(cH._4, a)
355+ let cT = F(cH._5, a)
356+ if ((0 >= cQ))
341357 then throw("LP <= 0")
342358 else {
343- let cM = if (!(cl))
359+ let cU = if (!(cs))
344360 then 0
345- else cI
346- let cN = (cg - cJ)
347- let cO = (ci - cK)
348- let cP = if (if (cm)
349- then (co == cp)
361+ else cQ
362+ let cV = (cn - cR)
363+ let cW = (cp - cS)
364+ let cX = if (if (ct)
365+ then (cw == cx)
350366 else false)
351- then $Tuple2(cn, 0)
352- else if (if (cm)
353- then (co == cq)
367+ then $Tuple2(cv, 0)
368+ else if (if (ct)
369+ then (cw == cy)
354370 else false)
355- then $Tuple2(0, cn)
356- else $Tuple2(cJ, cK)
357- let cQ = cP._1
358- let cR = cP._2
359- let cS = [IntegerEntry(Q(), bX), IntegerEntry(R(height, lastBlock.timestamp), bX), StringEntry(U(bK, bH), aJ(cQ, cR, cM, bX, bg, cL, height, lastBlock.timestamp, cN, cO))]
360- $Tuple13(cI, cM, bX, bS, bU, cv, bL, bQ, cS, cN, cO, ch, cj)
371+ then $Tuple2(0, cv)
372+ else $Tuple2(cR, cS)
373+ let cY = cX._1
374+ let cZ = cX._2
375+ let da = [IntegerEntry(Q(), ce), IntegerEntry(R(height, lastBlock.timestamp), ce), StringEntry(U(bR, bO), aN(cY, cZ, cU, ce, bk, cT, height, lastBlock.timestamp, cV, cW))]
376+ $Tuple13(cQ, cU, ce, bZ, cb, cD, bS, bX, da, cV, cW, co, cq)
361377 }
362378 }
363379
364380
365-func cT (cU) = {
366- let bx = aE()
367- let cV = bx[s]
368- let cW = bx[t]
369- let bQ = parseIntValue(bx[q])
370- let by = parseIntValue(bx[u])
371- let bz = parseIntValue(bx[v])
372- let cX = aY(cV)
373- let cY = aY(cW)
374- let bW = if ((cU.orderType == Buy))
375- then bo(by, bz, (cX + cU.amount), cY)
376- else bo(by, bz, (cX - cU.amount), cY)
377- let bX = F(bW, a)
381+func db (dc) = {
382+ let bB = aE()
383+ let dd = bB[s]
384+ let de = bB[t]
385+ let bX = parseIntValue(bB[q])
386+ let bC = parseIntValue(bB[u])
387+ let bD = parseIntValue(bB[v])
388+ let df = bc(dd)
389+ let dg = bc(de)
390+ let cd = if ((dc.orderType == Buy))
391+ then bs(bC, bD, (df + dc.amount), dg)
392+ else bs(bC, bD, (df - dc.amount), dg)
393+ let ce = F(cd, a)
378394 if (if (if (aB())
379395 then true
380- else (bQ == n))
396+ else (bX == n))
381397 then true
382- else (bQ == o))
398+ else (bX == o))
383399 then throw("Admin blocked")
384400 else {
385- let cZ = cU.assetPair.amountAsset
386- let da = if ((cZ == unit))
401+ let dh = dc.assetPair.amountAsset
402+ let di = if ((dh == unit))
387403 then "WAVES"
388- else toBase58String(value(cZ))
389- let db = cU.assetPair.priceAsset
390- let dc = if ((db == unit))
404+ else toBase58String(value(dh))
405+ let dj = dc.assetPair.priceAsset
406+ let dk = if ((dj == unit))
391407 then "WAVES"
392- else toBase58String(value(db))
393- if (if ((da != cV))
408+ else toBase58String(value(dj))
409+ if (if ((di != dd))
394410 then true
395- else (dc != cW))
411+ else (dk != de))
396412 then throw("Wr assets")
397413 else {
398- let dd = cU.price
399- let cu = fraction(a, bz, by)
400- let de = I(dd, a, cu)
401- let df = if ((cU.orderType == Buy))
402- then (bX >= de)
403- else (de >= bX)
414+ let dl = dc.price
415+ let cC = fraction(a, bD, bC)
416+ let dm = I(dl, a, cC)
417+ let dn = if ((dc.orderType == Buy))
418+ then (ce >= dm)
419+ else (dm >= ce)
404420 true
405421 }
406422 }
407423 }
408424
409425
410-func dg (dh) = if ((size(dh.payments) != 1))
426+func do (dp) = if ((size(dp.payments) != 1))
411427 then throw("1 pmnt exp")
412428 else {
413- let di = value(dh.payments[0])
414- let bI = value(di.assetId)
415- let cn = di.amount
416- let cz = bG(toBase58String(dh.transactionId), toBase58String(bI), cn, dh.caller)
417- let cc = cz._1
418- let cd = cz._2
419- let bQ = parseIntValue(cz._9)
420- let ce = cz._10
429+ let dq = value(dp.payments[0])
430+ let bP = value(dq.assetId)
431+ let cv = dq.amount
432+ let cH = bN(toBase58String(dp.transactionId), toBase58String(bP), cv, dp.caller)
433+ let cj = cH._1
434+ let ck = cH._2
435+ let bX = parseIntValue(cH._9)
436+ let cl = cH._10
421437 if (if (aB())
422438 then true
423- else (bQ == o))
424- then throw(("Admin blocked: " + toString(bQ)))
425- else $Tuple5(cc, cd, cn, bI, ce)
439+ else (bX == o))
440+ then throw(("Admin blocked: " + toString(bX)))
441+ else $Tuple5(cj, ck, cv, bP, cl)
426442 }
427443
428444
429-func dj (dk,W,dl,dm,bg,cl,cm,cn,co) = {
430- let cz = cf(W, bg, value(dl).amount, value(dl).assetId, value(dm).amount, value(dm).assetId, dk, false, cl, cm, cn, co)
431- let bQ = parseIntValue(cz._8)
445+func dr (ds,W,dt,du,bk,cs,ct,cu,cv,cw) = {
446+ let cH = cm(W, bk, value(dt).amount, value(dt).assetId, value(du).amount, value(du).assetId, ds, false, cs, ct, cu, cv, cw)
447+ let bX = parseIntValue(cH._8)
432448 if (if (if (aB())
433449 then true
434- else (bQ == m))
450+ else (bX == m))
435451 then true
436- else (bQ == o))
437- then throw(("Blocked:" + toString(bQ)))
438- else cz
452+ else (bX == o))
453+ then throw(("Blocked:" + toString(bX)))
454+ else cH
439455 }
440456
441457
442-func dn (do) = {
443- let dp = fraction(do, ad, d)
444- $Tuple2((do - dp), dp)
458+func dv (dw,bP,bR,W) = {
459+ let dx = aE()
460+ let bT = dx[s]
461+ let bU = dx[t]
462+ let bZ = bc(bT)
463+ let cb = bc(bU)
464+ let dy = bK(dw)
465+ let cv = dy._1
466+ let dz = dy._2
467+ let dA = if ((W == ""))
468+ then $Tuple2(bZ, cb)
469+ else if ((bP == bT))
470+ then if ((dw > bZ))
471+ then throw("invalid payment amount")
472+ else $Tuple2((bZ - dw), cb)
473+ else if ((bP == bU))
474+ then if ((dw > cb))
475+ then throw("invalid payment amount")
476+ else $Tuple2(bZ, (cb - dw))
477+ else throw("wrong pmtAssetId")
478+ let dB = dA._1
479+ let dC = dA._2
480+ let dD = if ((bP == bT))
481+ then $Tuple2(dB, dC)
482+ else $Tuple2(dC, dB)
483+ let dE = dD._1
484+ let dF = dD._2
485+ let dG = 1
486+ let dH = {
487+ let dI = invoke(aM, "calcPutXOnly", [toString(cv), toString(dE), toString(dF), "", aA, h, toString(dG), i], nil)
488+ if ($isInstanceOf(dI, "(Int, Int)"))
489+ then dI
490+ else throw(($getType(invoke(aM, "calcPutXOnly", [toString(cv), toString(dE), toString(dF), "", aA, h, toString(dG), i], nil)) + " couldn't be cast to (Int, Int)"))
491+ }
492+ let dJ = if ((bP == bT))
493+ then dH
494+ else $Tuple2(dH._2, dH._1)
495+ let dK = dJ._1
496+ let dL = dJ._2
497+ let dM = dr(bR, W, AttachedPayment(fromBase58String(bT), dK), AttachedPayment(fromBase58String(bU), dL), 0, true, true, false, cv, bP)
498+ let dN = dM._2
499+ let dO = dM._7
500+ let cl = dM._9
501+ let cV = dM._10
502+ let cW = dM._11
503+ dM
445504 }
446505
447506
448-func dq () = {
507+func dP () = {
449508 let at = getString(O())
450509 if ($isInstanceOf(at, "String"))
451510 then {
452- let dr = at
453- fromBase58String(dr)
511+ let dQ = at
512+ fromBase58String(dQ)
454513 }
455514 else if ($isInstanceOf(at, "Unit"))
456515 then unit
457516 else throw("Match error")
458517 }
459518
460519
461-func ds () = {
520+func dR () = {
462521 let at = getString(P())
463522 if ($isInstanceOf(at, "String"))
464523 then {
465- let dr = at
466- fromBase58String(dr)
524+ let dQ = at
525+ fromBase58String(dQ)
467526 }
468527 else if ($isInstanceOf(at, "Unit"))
469528 then unit
470529 else throw("Match error")
471530 }
472531
473532
474-let dt = throw("Permission denied")
533+let dS = throw("Permission denied")
475534
476-func du (dh) = {
477- let at = dq()
535+func dT (dp) = {
536+ let at = dP()
478537 if ($isInstanceOf(at, "ByteVector"))
479538 then {
480- let dv = at
481- if ((dh.callerPublicKey == dv))
539+ let dU = at
540+ if ((dp.callerPublicKey == dU))
482541 then true
483- else dt
542+ else dS
484543 }
485544 else if ($isInstanceOf(at, "Unit"))
486- then if ((dh.caller == this))
545+ then if ((dp.caller == this))
487546 then true
488- else dt
547+ else dS
489548 else throw("Match error")
490549 }
491550
492551
493-@Callable(dh)
552+@Callable(dp)
494553 func constructor (N) = {
495- let dw = du(dh)
496- if ((dw == dw))
554+ let dV = dT(dp)
555+ if ((dV == dV))
497556 then [StringEntry(N(), N)]
498557 else throw("Strict value is not equal to itself.")
499558 }
500559
501560
502561
503-@Callable(dh)
504-func setManager (dx) = {
505- let dw = du(dh)
506- if ((dw == dw))
562+@Callable(dp)
563+func setManager (dW) = {
564+ let dV = dT(dp)
565+ if ((dV == dV))
507566 then {
508- let dy = fromBase58String(dx)
509- if ((dy == dy))
510- then [StringEntry(P(), dx)]
567+ let dX = fromBase58String(dW)
568+ if ((dX == dX))
569+ then [StringEntry(P(), dW)]
511570 else throw("Strict value is not equal to itself.")
512571 }
513572 else throw("Strict value is not equal to itself.")
514573 }
515574
516575
517576
518-@Callable(dh)
577+@Callable(dp)
519578 func confirmManager () = {
520- let bF = ds()
521- let dz = if (isDefined(bF))
579+ let bJ = dR()
580+ let dY = if (isDefined(bJ))
522581 then true
523582 else throw("No pending manager")
524- if ((dz == dz))
583+ if ((dY == dY))
525584 then {
526- let dA = if ((dh.callerPublicKey == value(bF)))
585+ let dZ = if ((dp.callerPublicKey == value(bJ)))
527586 then true
528587 else throw("You are not pending manager")
529- if ((dA == dA))
530- then [StringEntry(O(), toBase58String(value(bF))), DeleteEntry(P())]
588+ if ((dZ == dZ))
589+ then [StringEntry(O(), toBase58String(value(bJ))), DeleteEntry(P())]
531590 else throw("Strict value is not equal to itself.")
532591 }
533592 else throw("Strict value is not equal to itself.")
534593 }
535594
536595
537596
538-@Callable(dh)
539-func put (dB,dC) = {
540- let dD = aI()
541- let dE = valueOrErrorMessage(addressFromString(dD[y]), "Wr st addr")
542- let dF = valueOrErrorMessage(addressFromString(dD[z]), "Wr sl addr")
543- if ((0 > dB))
597+@Callable(dp)
598+func put (ea,eb) = {
599+ let ec = aI()
600+ let ed = valueOrErrorMessage(addressFromString(ec[y]), "Wr st addr")
601+ let ee = valueOrErrorMessage(addressFromString(ec[z]), "Wr sl addr")
602+ if ((0 > ea))
544603 then throw("Wrong slippage")
545- else if ((size(dh.payments) != 2))
604+ else if ((size(dp.payments) != 2))
546605 then throw("2 pmnts expd")
547606 else {
548- let dG = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(value(dh.payments[0]).assetId, value(dh.payments[0]).amount), dh.payments[1], dB, true, false, 0, "")
549- let cM = dG._2
550- let dH = dG._7
551- let ce = dG._9
552- let cN = dG._10
553- let cO = dG._11
554- let bM = dG._12
555- let bN = dG._13
556- let cz = invoke(az, "emit", [cM], nil)
557- if ((cz == cz))
607+ let ef = dr(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], ea, true, false, true, 0, "")
608+ let cU = ef._2
609+ let dO = ef._7
610+ let cl = ef._9
611+ let cV = ef._10
612+ let cW = ef._11
613+ let bT = ef._12
614+ let bU = ef._13
615+ let cH = invoke(az, "emit", [cU], nil)
616+ if ((cH == cH))
558617 then {
559- let dI = {
560- let at = cz
618+ let eg = {
619+ let at = cH
561620 if ($isInstanceOf(at, "Address"))
562621 then {
563- let dJ = at
564- invoke(dJ, "emit", [cM], nil)
622+ let eh = at
623+ invoke(eh, "emit", [cU], nil)
565624 }
566625 else unit
567626 }
568- if ((dI == dI))
627+ if ((eg == eg))
569628 then {
570- let dK = if ((cN > 0))
571- then invoke(dF, "put", nil, [AttachedPayment(bM, cN)])
629+ let ei = if ((cV > 0))
630+ then invoke(ee, "put", nil, [AttachedPayment(bT, cV)])
572631 else nil
573- if ((dK == dK))
632+ if ((ei == ei))
574633 then {
575- let dL = if ((cO > 0))
576- then invoke(dF, "put", nil, [AttachedPayment(bN, cO)])
634+ let ej = if ((cW > 0))
635+ then invoke(ee, "put", nil, [AttachedPayment(bU, cW)])
577636 else nil
578- if ((dL == dL))
637+ if ((ej == ej))
579638 then {
580- let dM = if (dC)
639+ let ek = if (eb)
581640 then {
582- let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
583- if ((dN == dN))
641+ let el = invoke(ed, "stake", nil, [AttachedPayment(dO, cU)])
642+ if ((el == el))
584643 then nil
585644 else throw("Strict value is not equal to itself.")
586645 }
587- else [ScriptTransfer(dh.caller, cM, dH)]
588- (ce ++ dM)
646+ else [ScriptTransfer(dp.caller, cU, dO)]
647+ (cl ++ ek)
589648 }
590649 else throw("Strict value is not equal to itself.")
591650 }
592651 else throw("Strict value is not equal to itself.")
593652 }
594653 else throw("Strict value is not equal to itself.")
595654 }
596655 else throw("Strict value is not equal to itself.")
597656 }
598657 }
599658
600659
601660
602-@Callable(dh)
603-func putOneTkn (dO,dP,dQ,bg,dC) = {
604- let bx = aI()
605- let dE = valueOrErrorMessage(addressFromString(bx[y]), "Wr st addr")
606- let dF = valueOrErrorMessage(addressFromString(bx[z]), "Wr sl addr")
607- let dR = valueOrErrorMessage(addressFromString(bx[A]), "Wr gwx addr")
608- let dS = aE()
609- let bM = dS[s]
610- let bN = dS[t]
611- let bO = parseIntValue(dS[u])
612- let bP = parseIntValue(dS[v])
613- let dT = valueOrElse(getString(this, ab()), "")
614- let bK = if ((dT == toString(dh.caller)))
615- then dh.originCaller
616- else dh.caller
617- if (if (if (if ((0 >= bg))
661+@Callable(dp)
662+func putOneTkn (dK,dL,em,bk,eb) = {
663+ let bB = aI()
664+ let ed = valueOrErrorMessage(addressFromString(bB[y]), "Wr st addr")
665+ let ee = valueOrErrorMessage(addressFromString(bB[z]), "Wr sl addr")
666+ let en = valueOrErrorMessage(addressFromString(bB[A]), "Wr gwx addr")
667+ let eo = aE()
668+ let bT = eo[s]
669+ let bU = eo[t]
670+ let bV = parseIntValue(eo[u])
671+ let bW = parseIntValue(eo[v])
672+ let ep = valueOrElse(getString(this, ab()), "")
673+ let bR = if ((ep == toString(dp.caller)))
674+ then dp.originCaller
675+ else dp.caller
676+ if (if (if (if ((0 >= bk))
618677 then true
619- else (0 >= dO))
678+ else (0 >= dK))
620679 then true
621- else (0 >= dP))
680+ else (0 >= dL))
622681 then true
623- else (0 >= dQ))
682+ else (0 >= em))
624683 then throw("Wrong params")
625- else if ((size(dh.payments) != 1))
684+ else if ((size(dp.payments) != 1))
626685 then throw("1 pmnt expd")
627686 else {
628- let di = value(dh.payments[0])
629- let bI = toBase58String(value(di.assetId))
630- let dU = di.amount
631- let dV = dn(dU)
632- let cn = dV._1
633- let dW = dV._2
634- if ((10000000 > dU))
687+ let dq = value(dp.payments[0])
688+ let bP = toBase58String(value(dq.assetId))
689+ let eq = dq.amount
690+ let er = bK(eq)
691+ let cv = er._1
692+ let dz = er._2
693+ if ((10000000 > eq))
635694 then throw("Wrong pmt amt")
636695 else {
637- let bS = aY(bM)
638- let bU = aY(bN)
639- let dX = if ((bI == bM))
640- then if (if ((dU > bS))
696+ let bZ = bc(bT)
697+ let cb = bc(bU)
698+ let es = if ((bP == bT))
699+ then if (if ((eq > bZ))
641700 then true
642- else (dO > cn))
701+ else (dK > cv))
643702 then throw("invalid payment amount")
644- else $Tuple6((bS - dU), bU, (cn - dO), dP, 0, 0)
645- else if ((bI == bN))
646- then if (if ((dU > bU))
703+ else $Tuple6((bZ - eq), cb, (cv - dK), dL, 0, 0)
704+ else if ((bP == bU))
705+ then if (if ((eq > cb))
647706 then true
648- else (dP > cn))
707+ else (dL > cv))
649708 then throw("invalid payment amount")
650- else $Tuple6(bS, (bU - dU), 0, 0, (cn - dP), dO)
709+ else $Tuple6(bZ, (cb - eq), 0, 0, (cv - dL), dK)
651710 else throw("wrong pmtAssetId")
652- let dY = dX._1
653- let dZ = dX._2
654- let ea = dX._3
655- let eb = dX._4
656- let ec = dX._5
657- let ed = dX._6
658- let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
659- let bk = invoke(dR, "calcD", [toString(toBigInt(((dY + ea) - ed))), toString(toBigInt(((dZ + ec) - eb))), aA, h, i], nil)
660- let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
661- if ((ee == ee))
711+ let dB = es._1
712+ let dC = es._2
713+ let et = es._3
714+ let eu = es._4
715+ let ev = es._5
716+ let ew = es._6
717+ let bp = invoke(en, "calcD", [toString(dB), toString(dC), aA, h, i], nil)
718+ let bo = invoke(en, "calcD", [toString(toBigInt(((dB + et) - ew))), toString(toBigInt(((dC + ev) - eu))), aA, h, i], nil)
719+ let ex = bn(parseBigIntValue(as(bo)), parseBigIntValue(as(bp)), g)
720+ if ((ex == ex))
662721 then {
663- let ef = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(fromBase58String(bM), dO), AttachedPayment(fromBase58String(bN), dP), bg, true, true, cn, bI)
664- let eg = ef._2
665- let dH = ef._7
666- let ce = ef._9
667- let cN = ef._10
668- let cO = ef._11
669- let eh = bd(toBigInt(eg), toBigInt(dQ), toBigInt(bg))
670- let cM = toInt(eh._2)
671- let dG = invoke(az, "emit", [cM], nil)
672- if ((dG == dG))
722+ let dM = dr(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(fromBase58String(bT), dK), AttachedPayment(fromBase58String(bU), dL), bk, true, true, true, cv, bP)
723+ let dN = dM._2
724+ let dO = dM._7
725+ let cl = dM._9
726+ let cV = dM._10
727+ let cW = dM._11
728+ let ey = bh(toBigInt(dN), toBigInt(em), toBigInt(bk))
729+ let cU = toInt(ey._2)
730+ let ef = invoke(az, "emit", [cU], nil)
731+ if ((ef == ef))
673732 then {
674- let dI = {
675- let at = dG
733+ let eg = {
734+ let at = ef
676735 if ($isInstanceOf(at, "Address"))
677736 then {
678- let dJ = at
679- invoke(dJ, "emit", [cM], nil)
737+ let eh = at
738+ invoke(eh, "emit", [cU], nil)
680739 }
681740 else unit
682741 }
683- if ((dI == dI))
742+ if ((eg == eg))
684743 then {
685- let dK = if ((cN > 0))
686- then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bM), cN)])
744+ let ei = if ((cV > 0))
745+ then invoke(ee, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
687746 else nil
688- if ((dK == dK))
747+ if ((ei == ei))
689748 then {
690- let dL = if ((cO > 0))
691- then invoke(dF, "put", nil, [AttachedPayment(fromBase58String(bN), cO)])
749+ let ej = if ((cW > 0))
750+ then invoke(ee, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
692751 else nil
693- if ((dL == dL))
752+ if ((ej == ej))
694753 then {
695- let dM = if (dC)
754+ let ek = if (eb)
696755 then {
697- let dN = invoke(dE, "stake", nil, [AttachedPayment(dH, cM)])
698- if ((dN == dN))
756+ let el = invoke(ed, "stake", nil, [AttachedPayment(dO, cU)])
757+ if ((el == el))
699758 then nil
700759 else throw("Strict value is not equal to itself.")
701760 }
702- else [ScriptTransfer(dh.caller, cM, dH)]
703- let ei = if ((dW > 0))
704- then [ScriptTransfer(aD, dW, fromBase58String(bI))]
761+ else [ScriptTransfer(dp.caller, cU, dO)]
762+ let ez = if ((dz > 0))
763+ then [ScriptTransfer(aD, dz, fromBase58String(bP))]
705764 else nil
706- ((ce ++ dM) ++ ei)
765+ ((cl ++ ek) ++ ez)
707766 }
708767 else throw("Strict value is not equal to itself.")
709768 }
710769 else throw("Strict value is not equal to itself.")
711770 }
712771 else throw("Strict value is not equal to itself.")
713772 }
714773 else throw("Strict value is not equal to itself.")
715774 }
716775 else throw("Strict value is not equal to itself.")
717776 }
718777 }
719778 }
720779
721780
722781
723-@Callable(dh)
724-func putForFree (ej) = if ((0 > ej))
782+@Callable(dp)
783+func putOneTknV2 (eA,eb) = if ((size(dp.payments) != 1))
784+ then throw("1 pmnt expd")
785+ else {
786+ let dx = aE()
787+ let bT = dx[s]
788+ let bU = dx[t]
789+ let eB = parseIntValue(dx[u])
790+ let eC = parseIntValue(dx[v])
791+ let bR = if ((dp.caller == this))
792+ then dp.originCaller
793+ else dp.caller
794+ let dq = value(dp.payments[0])
795+ let bP = toBase58String(value(dq.assetId))
796+ let cv = dq.amount
797+ if ((10000000 > cv))
798+ then throw("Wrong pmt amt")
799+ else {
800+ let cH = dv(cv, bP, toString(bR), toBase58String(dp.transactionId))
801+ let dN = cH._2
802+ let dO = cH._7
803+ let cl = cH._9
804+ let cV = cH._10
805+ let cW = cH._11
806+ let cU = if (if ((eA > 0))
807+ then (eA > dN)
808+ else false)
809+ then throw(makeString(["amount to receive is less than ", toString(eA)], ""))
810+ else dN
811+ let ef = invoke(az, "emit", [cU], nil)
812+ if ((ef == ef))
813+ then {
814+ let eg = {
815+ let at = ef
816+ if ($isInstanceOf(at, "Address"))
817+ then {
818+ let eh = at
819+ invoke(eh, "emit", [cU], nil)
820+ }
821+ else unit
822+ }
823+ if ((eg == eg))
824+ then {
825+ let ei = if ((cV > 0))
826+ then invoke(aL, "put", nil, [AttachedPayment(fromBase58String(bT), cV)])
827+ else nil
828+ if ((ei == ei))
829+ then {
830+ let ej = if ((cW > 0))
831+ then invoke(aL, "put", nil, [AttachedPayment(fromBase58String(bU), cW)])
832+ else nil
833+ if ((ej == ej))
834+ then {
835+ let ek = if (eb)
836+ then {
837+ let el = invoke(aK, "stake", nil, [AttachedPayment(dO, cU)])
838+ if ((el == el))
839+ then nil
840+ else throw("Strict value is not equal to itself.")
841+ }
842+ else [ScriptTransfer(dp.caller, cU, dO)]
843+ $Tuple2((cl ++ ek), cU)
844+ }
845+ else throw("Strict value is not equal to itself.")
846+ }
847+ else throw("Strict value is not equal to itself.")
848+ }
849+ else throw("Strict value is not equal to itself.")
850+ }
851+ else throw("Strict value is not equal to itself.")
852+ }
853+ }
854+
855+
856+
857+@Callable(dp)
858+func putOneTknV2READONLY (eD,eE) = {
859+ let cH = dv(eD, eE, "", "")
860+ let dN = cH._2
861+ let dO = cH._7
862+ let cl = cH._9
863+ let cV = cH._10
864+ let cW = cH._11
865+ $Tuple2(nil, dN)
866+ }
867+
868+
869+
870+@Callable(dp)
871+func putOneTknV2WithBonusREADONLY (eD,eE) = {
872+ let dx = aE()
873+ let bT = dx[s]
874+ let bU = dx[t]
875+ let bZ = bc(bT)
876+ let cb = bc(bU)
877+ let cH = dv(eD, eE, "", "")
878+ let dN = cH._2
879+ let ce = cH._3
880+ let eF = cH._6
881+ let dO = cH._7
882+ let eG = if ((eE == bT))
883+ then {
884+ let eH = fraction(eD, ce, a)
885+ $Tuple2(eD, eH)
886+ }
887+ else {
888+ let eI = fraction(eD, a, ce)
889+ $Tuple2(eI, eD)
890+ }
891+ let eI = eG._1
892+ let eH = eG._2
893+ let eJ = fraction(eF, eH, cb)
894+ let eK = if ((eE == bT))
895+ then fraction(eI, a, dN)
896+ else fraction(eH, a, dN)
897+ let eL = fraction((eH + eI), a, eJ)
898+ let eM = fraction((eL - eK), a, eK)
899+ let dz = bK(eD)._2
900+ $Tuple2(nil, $Tuple3(dN, dz, eM))
901+ }
902+
903+
904+
905+@Callable(dp)
906+func putForFree (eN) = if ((0 > eN))
725907 then throw("Wrong slpg")
726- else if ((size(dh.payments) != 2))
908+ else if ((size(dp.payments) != 2))
727909 then throw("2 pmnts expd")
728910 else {
729- let ef = dj(toString(dh.caller), toBase58String(dh.transactionId), AttachedPayment(value(dh.payments[0]).assetId, value(dh.payments[0]).amount), dh.payments[1], ej, false, false, 0, "")
730- ef._9
911+ let dM = dr(toString(dp.caller), toBase58String(dp.transactionId), AttachedPayment(value(dp.payments[0]).assetId, value(dp.payments[0]).amount), dp.payments[1], eN, false, false, true, 0, "")
912+ dM._9
731913 }
732914
733915
734916
735-@Callable(dh)
917+@Callable(dp)
736918 func get () = {
737- let cz = dg(dh)
738- let ek = cz._1
739- let cd = cz._2
740- let cn = cz._3
741- let bI = cz._4
742- let ce = cz._5
743- let el = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
744- if ((el == el))
745- then ce
919+ let cH = do(dp)
920+ let eO = cH._1
921+ let ck = cH._2
922+ let cv = cH._3
923+ let bP = cH._4
924+ let cl = cH._5
925+ let eP = invoke(az, "burn", [cv], [AttachedPayment(bP, cv)])
926+ if ((eP == eP))
927+ then cl
746928 else throw("Strict value is not equal to itself.")
747929 }
748930
749931
750932
751-@Callable(dh)
752-func getOneTkn (em,en,eo,ep,bg) = if ((size(dh.payments) != 1))
933+@Callable(dp)
934+func getOneTkn (eQ,eR,eS,eT,bk) = if ((size(dp.payments) != 1))
753935 then throw("1 pmnt expd")
754936 else {
755- let bx = aE()
756- let bL = bx[r]
757- let bM = bx[s]
758- let bN = bx[t]
759- let bO = parseIntValue(bx[u])
760- let bP = parseIntValue(bx[v])
761- let bQ = bx[q]
762- let dD = aI()
763- let dR = valueOrErrorMessage(addressFromString(dD[A]), "Wr sl addr")
764- let di = value(dh.payments[0])
765- let dT = valueOrElse(getString(this, ab()), "")
766- let bK = if ((dT == toString(dh.caller)))
767- then dh.originCaller
768- else dh.caller
769- let bH = toBase58String(dh.transactionId)
770- let bI = value(di.assetId)
771- let cn = di.amount
772- if ((1000000000 > cn))
937+ let bB = aE()
938+ let bS = bB[r]
939+ let bT = bB[s]
940+ let bU = bB[t]
941+ let bV = parseIntValue(bB[u])
942+ let bW = parseIntValue(bB[v])
943+ let bX = bB[q]
944+ let ec = aI()
945+ let en = valueOrErrorMessage(addressFromString(ec[A]), "Wr sl addr")
946+ let dq = value(dp.payments[0])
947+ let ep = valueOrElse(getString(this, ab()), "")
948+ let bR = if ((ep == toString(dp.caller)))
949+ then dp.originCaller
950+ else dp.caller
951+ let bO = toBase58String(dp.transactionId)
952+ let bP = value(dq.assetId)
953+ let cv = dq.amount
954+ if ((1000000000 > cv))
773955 then throw("Min pmt 10 LP")
774- else if (if (if ((0 > bg))
956+ else if (if (if ((0 > bk))
775957 then true
776- else (0 > em))
958+ else (0 > eQ))
777959 then true
778- else (0 > eo))
960+ else (0 > eS))
779961 then throw("Wrong params")
780- else if ((bL != toBase58String(bI)))
962+ else if ((bS != toBase58String(bP)))
781963 then throw("Wrong LP")
782964 else {
783- let cz = bG(toBase58String(dh.transactionId), toBase58String(bI), cn, dh.caller)
784- let eq = cz._1
785- let er = cz._2
786- let bS = aY(bM)
787- let bU = aY(bN)
788- let es = if ((ep == bM))
789- then $Tuple7((bS - eq), (bU - er), em, er, 0, 0, (eq + em))
790- else if ((ep == bN))
791- then $Tuple7((bS - eq), (bU - er), 0, 0, em, eq, (er + em))
965+ let cH = bN(toBase58String(dp.transactionId), toBase58String(bP), cv, dp.caller)
966+ let eU = cH._1
967+ let eV = cH._2
968+ let bZ = bc(bT)
969+ let cb = bc(bU)
970+ let eW = if ((eT == bT))
971+ then $Tuple7((bZ - eU), (cb - eV), eQ, eV, 0, 0, (eU + eQ))
972+ else if ((eT == bU))
973+ then $Tuple7((bZ - eU), (cb - eV), 0, 0, eQ, eU, (eV + eQ))
792974 else throw("wrong outAssetId")
793- let dY = es._1
794- let dZ = es._2
795- let ea = es._3
796- let eb = es._4
797- let ec = es._5
798- let ed = es._6
799- let et = es._7
800- if (if ((0 > ea))
975+ let dB = eW._1
976+ let dC = eW._2
977+ let et = eW._3
978+ let eu = eW._4
979+ let ev = eW._5
980+ let ew = eW._6
981+ let eX = eW._7
982+ if (if ((0 > et))
801983 then true
802- else (0 > ec))
984+ else (0 > ev))
803985 then throw("Wrong calc")
804986 else {
805- let bl = invoke(dR, "calcD", [toString(dY), toString(dZ), aA, h, i], nil)
806- let bk = invoke(dR, "calcD", [toString(((dY - ea) + ed)), toString(((dZ + eb) - ec)), aA, h, i], nil)
807- let ee = bj(parseBigIntValue(as(bk)), parseBigIntValue(as(bl)), g)
808- if ((ee == ee))
987+ let bp = invoke(en, "calcD", [toString(dB), toString(dC), aA, h, i], nil)
988+ let bo = invoke(en, "calcD", [toString(((dB - et) + ew)), toString(((dC + eu) - ev)), aA, h, i], nil)
989+ let ex = bn(parseBigIntValue(as(bo)), parseBigIntValue(as(bp)), g)
990+ if ((ex == ex))
809991 then {
810- let eu = dn(et)._1
811- let ev = bd(toBigInt(eu), toBigInt(eo), toBigInt(bg))
812- if ((ev == ev))
992+ let eY = bK(eX)._1
993+ let eZ = bh(toBigInt(eY), toBigInt(eS), toBigInt(bk))
994+ if ((eZ == eZ))
813995 then {
814- let ew = if ((ep == bM))
815- then $Tuple2(toInt(ev._2), 0)
816- else $Tuple2(0, toInt(ev._2))
817- let ex = ew._1
818- let ey = ew._2
819- let ez = (ex + ey)
820- let dW = (et - eu)
821- let eA = if ((ep == "WAVES"))
996+ let fa = if ((eT == bT))
997+ then $Tuple2(toInt(eZ._2), 0)
998+ else $Tuple2(0, toInt(eZ._2))
999+ let fb = fa._1
1000+ let fc = fa._2
1001+ let fd = (fb + fc)
1002+ let dz = (eX - eY)
1003+ let fe = if ((eT == "WAVES"))
8221004 then unit
823- else fromBase58String(ep)
824- let ei = if ((dW > 0))
825- then [ScriptTransfer(aD, dW, eA)]
1005+ else fromBase58String(eT)
1006+ let ez = if ((dz > 0))
1007+ then [ScriptTransfer(aD, dz, fe)]
8261008 else nil
827- let eB = ba(C(bU, bP), C(bS, bO))
828- let eC = F(eB, a)
829- let ce = [ScriptTransfer(bK, ez, eA), StringEntry(X(toString(bK), bH), aU(ex, ey, cn, eC, height, lastBlock.timestamp)), IntegerEntry(Q(), eC), IntegerEntry(R(height, lastBlock.timestamp), eC)]
830- if ((ce == ce))
1009+ let ff = be(C(cb, bW), C(bZ, bV))
1010+ let fg = F(ff, a)
1011+ let cl = [ScriptTransfer(bR, fd, fe), StringEntry(X(toString(bR), bO), aY(fb, fc, cv, fg, height, lastBlock.timestamp)), IntegerEntry(Q(), fg), IntegerEntry(R(height, lastBlock.timestamp), fg)]
1012+ if ((cl == cl))
8311013 then {
832- let eD = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
833- if ((eD == eD))
834- then (ce ++ ei)
1014+ let fh = invoke(az, "burn", [cv], [AttachedPayment(bP, cv)])
1015+ if ((fh == fh))
1016+ then (cl ++ ez)
8351017 else throw("Strict value is not equal to itself.")
8361018 }
8371019 else throw("Strict value is not equal to itself.")
8381020 }
8391021 else throw("Strict value is not equal to itself.")
8401022 }
8411023 else throw("Strict value is not equal to itself.")
8421024 }
8431025 }
8441026 }
8451027
8461028
8471029
848-@Callable(dh)
849-func getNoLess (eE,eF) = {
850- let cz = dg(dh)
851- let cc = cz._1
852- let cd = cz._2
853- let cn = cz._3
854- let bI = cz._4
855- let ce = cz._5
856- if ((eE > cc))
857- then throw(((("Failed: " + toString(cc)) + " < ") + toString(eE)))
858- else if ((eF > cd))
859- then throw(((("Failed: " + toString(cd)) + " < ") + toString(eF)))
1030+@Callable(dp)
1031+func getOneTknV2 (eT,eA) = if ((size(dp.payments) != 1))
1032+ then throw("1 pmnt expd")
1033+ else {
1034+ let dx = aE()
1035+ let bS = dx[r]
1036+ let bT = dx[s]
1037+ let bU = dx[t]
1038+ let eB = parseIntValue(dx[u])
1039+ let eC = parseIntValue(dx[v])
1040+ let fi = dx[q]
1041+ let bR = if ((dp.caller == this))
1042+ then dp.originCaller
1043+ else dp.caller
1044+ let dq = value(dp.payments[0])
1045+ let bP = value(dq.assetId)
1046+ let cv = dq.amount
1047+ if ((1000000000 > cv))
1048+ then throw("Min pmt 10 LP")
8601049 else {
861- let eG = invoke(az, "burn", [cn], [AttachedPayment(bI, cn)])
862- if ((eG == eG))
863- then ce
1050+ let bO = toBase58String(dp.transactionId)
1051+ if ((bS != toBase58String(bP)))
1052+ then throw("Wrong LP")
1053+ else {
1054+ let bZ = bc(bT)
1055+ let cb = bc(bU)
1056+ let eY = {
1057+ let dI = invoke(this, "getOneTknV2READONLY", [eT, cv], nil)
1058+ if ($isInstanceOf(dI, "Int"))
1059+ then dI
1060+ else throw(($getType(invoke(this, "getOneTknV2READONLY", [eT, cv], nil)) + " couldn't be cast to Int"))
1061+ }
1062+ let fd = if (if ((eA > 0))
1063+ then (eA > eY)
1064+ else false)
1065+ then throw(makeString(["amount to receive is less than ", toString(eA)], ""))
1066+ else eY
1067+ let fj = if ((eT == bT))
1068+ then $Tuple2(fd, 0)
1069+ else $Tuple2(0, fd)
1070+ let fb = fj._1
1071+ let fc = fj._2
1072+ let ff = be(C(cb, eC), C(bZ, eB))
1073+ let fg = F(ff, a)
1074+ let cl = [ScriptTransfer(bR, fd, if ((eT == "WAVES"))
1075+ then unit
1076+ else fromBase58String(eT)), StringEntry(X(toString(bR), bO), aY(fb, fc, cv, fg, height, lastBlock.timestamp)), IntegerEntry(Q(), fg), IntegerEntry(R(height, lastBlock.timestamp), fg)]
1077+ if ((cl == cl))
1078+ then {
1079+ let fh = invoke(az, "burn", [cv], [AttachedPayment(bP, cv)])
1080+ if ((fh == fh))
1081+ then $Tuple2(cl, fd)
1082+ else throw("Strict value is not equal to itself.")
1083+ }
1084+ else throw("Strict value is not equal to itself.")
1085+ }
1086+ }
1087+ }
1088+
1089+
1090+
1091+@Callable(dp)
1092+func getOneTknV2READONLY (eT,fk) = {
1093+ let dx = aE()
1094+ let bS = dx[r]
1095+ let bT = dx[s]
1096+ let bU = dx[t]
1097+ let cH = bN("", bS, fk, this)
1098+ let eU = cH._1
1099+ let eV = cH._2
1100+ let bZ = bc(bT)
1101+ let cb = bc(bU)
1102+ let dB = (bZ - eU)
1103+ let dC = (cb - eV)
1104+ let fl = if ((eT == bT))
1105+ then $Tuple3(dC, dB, eV)
1106+ else if ((eT == bU))
1107+ then $Tuple3(dB, dC, eU)
1108+ else throw("wrong outAssetId")
1109+ let fm = fl._1
1110+ let fn = fl._2
1111+ let fo = fl._3
1112+ let fp = 1
1113+ let eQ = {
1114+ let dI = invoke(aM, "calcSwapXToY", [toString(fo), toString(fm), toString(fn), "", aA, h, toString(fp), i], nil)
1115+ if ($isInstanceOf(dI, "Int"))
1116+ then dI
1117+ else throw(($getType(invoke(aM, "calcSwapXToY", [toString(fo), toString(fm), toString(fn), "", aA, h, toString(fp), i], nil)) + " couldn't be cast to Int"))
1118+ }
1119+ let eX = (eQ + (if ((eT == bT))
1120+ then eU
1121+ else eV))
1122+ let fq = bK(eX)
1123+ let eY = fq._1
1124+ let dz = fq._2
1125+ $Tuple2(nil, $Tuple2(eY, dz))
1126+ }
1127+
1128+
1129+
1130+@Callable(dp)
1131+func getOneTknV2WithBonusREADONLY (eT,fk) = {
1132+ let dx = aE()
1133+ let bT = dx[s]
1134+ let bU = dx[t]
1135+ let bS = dx[r]
1136+ let bZ = bc(bT)
1137+ let cb = bc(bU)
1138+ let fr = {
1139+ let dI = invoke(this, "getOneTknV2READONLY", [eT, fk], nil)
1140+ if ($isInstanceOf(dI, "(Int, Int)"))
1141+ then dI
1142+ else throw(($getType(invoke(this, "getOneTknV2READONLY", [eT, fk], nil)) + " couldn't be cast to (Int, Int)"))
1143+ }
1144+ let eY = fr._1
1145+ let dz = fr._2
1146+ let cH = bN("", bS, fk, this)
1147+ let cj = cH._1
1148+ let ck = cH._2
1149+ let eK = fraction(eY, a, fk)
1150+ let eL = fraction((cj + ck), a, fk)
1151+ let eM = fraction((eK - eL), a, eL)
1152+ $Tuple2(nil, $Tuple3(eY, dz, eM))
1153+ }
1154+
1155+
1156+
1157+@Callable(dp)
1158+func getNoLess (fs,ft) = {
1159+ let cH = do(dp)
1160+ let cj = cH._1
1161+ let ck = cH._2
1162+ let cv = cH._3
1163+ let bP = cH._4
1164+ let cl = cH._5
1165+ if ((fs > cj))
1166+ then throw(((("Failed: " + toString(cj)) + " < ") + toString(fs)))
1167+ else if ((ft > ck))
1168+ then throw(((("Failed: " + toString(ck)) + " < ") + toString(ft)))
1169+ else {
1170+ let fu = invoke(az, "burn", [cv], [AttachedPayment(bP, cv)])
1171+ if ((fu == fu))
1172+ then cl
8641173 else throw("Strict value is not equal to itself.")
8651174 }
8661175 }
8671176
8681177
8691178
870-@Callable(dh)
871-func unstakeAndGet (do) = {
872- let eH = if ((size(dh.payments) != 0))
1179+@Callable(dp)
1180+func unstakeAndGet (bL) = {
1181+ let fv = if ((size(dp.payments) != 0))
8731182 then throw("No pmnts expd")
8741183 else true
875- if ((eH == eH))
1184+ if ((fv == fv))
8761185 then {
877- let bx = aE()
878- let eI = aI()
879- let dH = fromBase58String(bx[r])
880- let eJ = valueOrErrorMessage(addressFromString(eI[y]), "Wr st addr")
881- let eK = invoke(eJ, "unstake", [toBase58String(dH), do], nil)
882- if ((eK == eK))
1186+ let bB = aE()
1187+ let fw = aI()
1188+ let dO = fromBase58String(bB[r])
1189+ let fx = valueOrErrorMessage(addressFromString(fw[y]), "Wr st addr")
1190+ let fy = invoke(fx, "unstake", [toBase58String(dO), bL], nil)
1191+ if ((fy == fy))
8831192 then {
884- let cz = bG(toBase58String(dh.transactionId), toBase58String(dH), do, dh.caller)
885- let bQ = parseIntValue(cz._9)
886- let ce = cz._10
887- let eL = if (if (aB())
1193+ let cH = bN(toBase58String(dp.transactionId), toBase58String(dO), bL, dp.caller)
1194+ let bX = parseIntValue(cH._9)
1195+ let cl = cH._10
1196+ let fz = if (if (aB())
8881197 then true
889- else (bQ == o))
890- then throw(("Blocked: " + toString(bQ)))
1198+ else (bX == o))
1199+ then throw(("Blocked: " + toString(bX)))
8911200 else true
892- if ((eL == eL))
1201+ if ((fz == fz))
8931202 then {
894- let eM = invoke(az, "burn", [do], [AttachedPayment(dH, do)])
895- if ((eM == eM))
896- then ce
1203+ let fA = invoke(az, "burn", [bL], [AttachedPayment(dO, bL)])
1204+ if ((fA == fA))
1205+ then cl
8971206 else throw("Strict value is not equal to itself.")
8981207 }
8991208 else throw("Strict value is not equal to itself.")
9001209 }
9011210 else throw("Strict value is not equal to itself.")
9021211 }
9031212 else throw("Strict value is not equal to itself.")
9041213 }
9051214
9061215
9071216
908-@Callable(dh)
909-func activate (eN,eO) = if ((toString(dh.caller) != toString(az)))
910- then throw("denied")
911- else $Tuple2([StringEntry(Y(), eN), StringEntry(Z(), eO)], "success")
1217+@Callable(dp)
1218+func unstakeAndGetOneTkn (bL,eS,eT,bk) = {
1219+ let fv = if ((size(dp.payments) != 0))
1220+ then throw("No pmnts expd")
1221+ else true
1222+ if ((fv == fv))
1223+ then {
1224+ let bB = aE()
1225+ let fw = aI()
1226+ let dO = fromBase58String(bB[r])
1227+ let fx = valueOrErrorMessage(addressFromString(fw[y]), "Wr st addr")
1228+ let fy = invoke(fx, "unstake", [toBase58String(dO), bL], nil)
1229+ if ((fy == fy))
1230+ then {
1231+ let fB = {
1232+ let dI = invoke(this, "getOneTknV2", [eS, eT, bk], [AttachedPayment(dO, bL)])
1233+ if ($isInstanceOf(dI, "Int"))
1234+ then dI
1235+ else unit
1236+ }
1237+ if ((fB == fB))
1238+ then $Tuple2(nil, fB)
1239+ else throw("Strict value is not equal to itself.")
1240+ }
1241+ else throw("Strict value is not equal to itself.")
1242+ }
1243+ else throw("Strict value is not equal to itself.")
1244+ }
9121245
9131246
9141247
915-@Callable(dh)
916-func setS (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
917- then dt
918- else [StringEntry(eP, eL)]
1248+@Callable(dp)
1249+func activate (fC,fD) = if ((toString(dp.caller) != toString(az)))
1250+ then throw("denied")
1251+ else $Tuple2([StringEntry(Y(), fC), StringEntry(Z(), fD)], "success")
9191252
9201253
9211254
922-@Callable(dh)
923-func setI (eP,eL) = if ((toString(dh.caller) != av(this, ab())))
924- then dt
925- else [IntegerEntry(eP, eL)]
1255+@Callable(dp)
1256+func setS (fE,fz) = if ((toString(dp.caller) != av(this, ab())))
1257+ then dS
1258+ else [StringEntry(fE, fz)]
9261259
9271260
9281261
929-@Callable(dh)
1262+@Callable(dp)
1263+func setI (fE,fz) = if ((toString(dp.caller) != av(this, ab())))
1264+ then dS
1265+ else [IntegerEntry(fE, fz)]
1266+
1267+
1268+
1269+@Callable(dp)
9301270 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aE())
9311271
9321272
9331273
934-@Callable(dh)
935-func getAccBalanceWrapperREADONLY (aZ) = $Tuple2(nil, aY(aZ))
1274+@Callable(dp)
1275+func getAccBalanceWrapperREADONLY (bd) = $Tuple2(nil, bc(bd))
9361276
9371277
9381278
939-@Callable(dh)
940-func calcPricesWrapperREADONLY (br,bs,bw) = {
941- let eQ = bv(br, bs, bw)
942- $Tuple2(nil, [toString(eQ[0]), toString(eQ[1]), toString(eQ[2])])
1279+@Callable(dp)
1280+func calcPricesWrapperREADONLY (bv,bw,bA) = {
1281+ let fF = bz(bv, bw, bA)
1282+ $Tuple2(nil, [toString(fF[0]), toString(fF[1]), toString(fF[2])])
9431283 }
9441284
9451285
9461286
947-@Callable(dh)
948-func fromX18WrapperREADONLY (G,eR) = $Tuple2(nil, F(parseBigIntValue(G), eR))
1287+@Callable(dp)
1288+func fromX18WrapperREADONLY (G,fG) = $Tuple2(nil, F(parseBigIntValue(G), fG))
9491289
9501290
9511291
952-@Callable(dh)
1292+@Callable(dp)
9531293 func toX18WrapperREADONLY (D,E) = $Tuple2(nil, toString(C(D, E)))
9541294
9551295
9561296
957-@Callable(dh)
958-func calcPriceBigIntWrapperREADONLY (bb,bc) = $Tuple2(nil, toString(ba(parseBigIntValue(bb), parseBigIntValue(bc))))
1297+@Callable(dp)
1298+func calcPriceBigIntWrapperREADONLY (bf,bg) = $Tuple2(nil, toString(be(parseBigIntValue(bf), parseBigIntValue(bg))))
9591299
9601300
9611301
962-@Callable(dh)
963-func estimatePutOperationWrapperREADONLY (bH,bg,cg,ch,ci,cj,eS,ck,cl) = $Tuple2(nil, cf(bH, bg, cg, ch, ci, cj, eS, ck, cl, false, 0, ""))
1302+@Callable(dp)
1303+func estimatePutOperationWrapperREADONLY (bO,bk,cn,co,cp,cq,fH,cr,cs) = $Tuple2(nil, cm(bO, bk, cn, co, cp, cq, fH, cr, cs, true, false, 0, ""))
9641304
9651305
9661306
967-@Callable(dh)
968-func estimateGetOperationWrapperREADONLY (bH,eT,bJ,eS) = {
969- let cz = bG(bH, eT, bJ, addressFromStringValue(eS))
970- $Tuple2(nil, $Tuple10(cz._1, cz._2, cz._3, cz._4, cz._5, cz._6, cz._7, toString(cz._8), cz._9, cz._10))
1307+@Callable(dp)
1308+func estimateGetOperationWrapperREADONLY (bO,fI,bQ,fH) = {
1309+ let cH = bN(bO, fI, bQ, addressFromStringValue(fH))
1310+ $Tuple2(nil, $Tuple10(cH._1, cH._2, cH._3, cH._4, cH._5, cH._6, cH._7, toString(cH._8), cH._9, cH._10))
9711311 }
9721312
9731313
974-@Verifier(eU)
975-func eV () = {
976- let eW = {
977- let at = dq()
1314+@Verifier(fJ)
1315+func fK () = {
1316+ let fL = {
1317+ let at = dP()
9781318 if ($isInstanceOf(at, "ByteVector"))
9791319 then {
980- let dv = at
981- dv
1320+ let dU = at
1321+ dU
9821322 }
9831323 else if ($isInstanceOf(at, "Unit"))
984- then eU.senderPublicKey
1324+ then fJ.senderPublicKey
9851325 else throw("Match error")
9861326 }
987- let at = eU
1327+ let at = fJ
9881328 if ($isInstanceOf(at, "Order"))
9891329 then {
990- let cU = at
991- let eX = aC()
992- let eY = cT(cU)
993- let eZ = sigVerify(cU.bodyBytes, cU.proofs[0], cU.senderPublicKey)
994- let fa = sigVerify(cU.bodyBytes, cU.proofs[1], eX)
995- if (if (if (eY)
996- then eZ
1330+ let dc = at
1331+ let fM = aC()
1332+ let fN = db(dc)
1333+ let fO = sigVerify(dc.bodyBytes, dc.proofs[0], dc.senderPublicKey)
1334+ let fP = sigVerify(dc.bodyBytes, dc.proofs[1], fM)
1335+ if (if (if (fN)
1336+ then fO
9971337 else false)
998- then fa
1338+ then fP
9991339 else false)
10001340 then true
1001- else ao(eY, eZ, fa)
1341+ else ao(fN, fO, fP)
10021342 }
10031343 else if ($isInstanceOf(at, "SetScriptTransaction"))
10041344 then {
1005- let dr = at
1006- let fb = blake2b256(value(dr.script))
1007- let fc = fromBase64String(value(getString(az, am())))
1008- let fd = scriptHash(this)
1009- if (if ((fc == fb))
1010- then (fd != fb)
1345+ let dQ = at
1346+ let fQ = blake2b256(value(dQ.script))
1347+ let fR = fromBase64String(value(getString(az, am())))
1348+ let fS = scriptHash(this)
1349+ if (if ((fR == fQ))
1350+ then (fS != fQ)
10111351 else false)
10121352 then true
1013- else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
1353+ else sigVerify(fJ.bodyBytes, fJ.proofs[0], fL)
10141354 }
1015- else sigVerify(eU.bodyBytes, eU.proofs[0], eW)
1355+ else sigVerify(fJ.bodyBytes, fJ.proofs[0], fL)
10161356 }
10171357

github/deemru/w8io/873ac7e 
342.37 ms