tx · DGxgzhaGyVSHxPutX3mgzHx1Gzb3BYqLk4sEeYRoqPnx

3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz:  -0.04200000 Waves

2023.10.16 17:56 [3867170] smart account 3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz > SELF 0.00000000 Waves

{ "type": 13, "id": "DGxgzhaGyVSHxPutX3mgzHx1Gzb3BYqLk4sEeYRoqPnx", "fee": 4200000, "feeAssetId": null, "timestamp": 1697468175339, "version": 2, "chainId": 87, "sender": "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz", "senderPublicKey": "DxhbzFs9BZTiN6kcnyybxmqPTV8xReD6Z5gWQ5AgRX8w", "proofs": [ "3sqM5hE3p3EZyxhd9sZgCDb5fSqQJswT1V5V7TAJ8H3VBL9nAMKb13fdEMeU6jmCA5cXFm7QEYfwNm4jt1mpagy" ], "script": "base64:BgLnLQgCEgUKAwEEARIHCgUBBAEIARIDCgEIEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgRiaWczIgRiaWc0IgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIKYW1wSW5pdGlhbCIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiCHQxQmlnSW50IgJmMSIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiAnQyIgJmMiICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiAnBsIgJwaCIBaCIBdCIDcGF1IgJ1YSIEdHhJZCIDZ2F1IgJhYSICcGEiA2FtcCINa2V5QW1wSGlzdG9yeSIMaGVpZ2h0QmxvY2tzIhRrZXlDaGFuZ2VBbXBMYXN0Q2FsbCIGa2V5RmVlIgNmZWUiBmtleURMcCIVa2V5RExwUmVmcmVzaGVkSGVpZ2h0IhJrZXlETHBSZWZyZXNoRGVsYXkiFmRMcFJlZnJlc2hEZWxheURlZmF1bHQiD2RMcFJlZnJlc2hEZWxheSIEZmNmZyIEbXRwayICcGMiBmlBbXRBcyIFaVByQXMiA21iYSIFYkFTdHIiA2FwcyIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIWa2V5U2tpcE9yZGVyVmFsaWRhdGlvbiILcG9vbEFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiF2FkZHJlc3NGcm9tU3RyaW5nT3JUaGlzIg1hZGRyZXNzU3RyaW5nIgckbWF0Y2gwIgFhIhxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzIg5mYWN0b3J5QWRkcmVzcyIDZmNhIgFzIgRzdHJmIgRhZGRyIgNrZXkiBGludGYiCHRocm93RXJyIgNtc2ciBmZtdEVyciIFaW5GZWUiAUAiBm91dEZlZSIVa2V5QWRkcmVzc1doaXRlbGlzdGVkIgdhZGRyZXNzIhRpc0FkZHJlc3NXaGl0ZWxpc3RlZCIBQSIDaWdzIgJtcCITZmVlQ29sbGVjdG9yQWRkcmVzcyIDZ3BjIgVhbXRBcyIHcHJpY2VBcyIIaVByaWNlQXMiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA4ODM2OTAyMiIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiA2dmYyINZmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0Ig9zbGlwYWdlQ29udHJhY3QiC2d3eENvbnRyYWN0IgxyZXN0Q29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIKc2xpcEJ5VXNlciIMc2xpcHBhZ2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiDHNsaXBhZ2VBbUFtdCIMc2xpcGFnZVByQW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiBGNwYmkiCHByQW10WDE4IghhbUFtdFgxOCIFY3BiaXIiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIIYW10QXNEY20iB3ByQXNEY20iCHByaWNlWDE4IghscEFtdFgxOCINbHBQckluQW1Bc1gxOCINbHBQckluUHJBc1gxOCIPY2FsY3VsYXRlUHJpY2VzIgFwIgd0YWtlRmVlIgZhbW91bnQiCWZlZUFtb3VudCIEZ2V0RCICeHAiA3hwMCIDeHAxIgNhbm4iC3hwMF94cDFfbl9uIgVhbm5fcyIFYW5uXzEiCWNhbGNETmV4dCIBZCICZGQiA2RkZCICZHAiBGNhbGMiA2FjYyIBaSIFZE5leHQiCGREaWZmUmF3IgVkRGlmZiIDYXJyIg0kdDAxMzUyNzEzNTc1IgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIFZm91bmQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiBmFtdERjbSIIcHJpY2VEY20iBGxwRW0iC2NoZWNrQXNzZXRzIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgFyIgZjaGVja0QiC3NsaXBwYWdlWDE4Ig9zbGlwcGFnZVJlYWxYMTgiDWxwRW1pc3Npb25YMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiDSR0MDIxNDk4MjE4NDMiCndyaXRlQW1BbXQiCndyaXRlUHJBbXQiC2NvbW1vblN0YXRlIgVnZXRZRCIBRCIBbiIBeCIKYVByZWNpc2lvbiIBYyIBYiIDY3VyIg0kdDAyMzAzODIzMDU4IgF5IgV5TmV4dCIFeURpZmYiDSR0MDIzMzY1MjM0MTIiB2NhbGNETHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIKbHBFbWlzc2lvbiIKdXBkYXRlZERMcCIOY2FsY0N1cnJlbnRETHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudERMcCIScmVmcmVzaERMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkRExwIgZvbGRETHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyNTYxMDI1ODIyIgNkTHAiDSR0MDI2MTY0MjYyNjQiDXVudXNlZEFjdGlvbnMiBmRMcE5ldyIMaXNPcmRlclZhbGlkIgRpbmZvIgJjZyIDcG10Ig1pc0dldERpc2FibGVkIgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10Ig1pc1B1dERpc2FibGVkIg1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciC3dpdGhUYWtlRmVlIg1jaGVjaEVtaXNzaW9uIg0kdDAyOTEyMzI5NTg1IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCINJHQwMjk1OTEyOTc2NyILYW1BbW91bnRSYXciC3ByQW1vdW50UmF3Ig0kdDAyOTc3MTMwMDI1IghhbUFtb3VudCIIcHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IghscEFtb3VudCIOcG9vbFByb3BvcnRpb24iD2Ftb3VudEFzc2V0UGFydCIOcHJpY2VBc3NldFBhcnQiCWxwQW10Qm90aCIFYm9udXMiE2dldE9uZVRrblYySW50ZXJuYWwiCm91dEFzc2V0SWQiDG1pbk91dEFtb3VudCIIcGF5bWVudHMiDG9yaWdpbkNhbGxlciINdHJhbnNhY3Rpb25JZCIKYW1EZWNpbWFscyIKcHJEZWNpbWFscyIKcG9vbFN0YXR1cyINJHQwMzIxMzczMjI0OCIIdG90YWxHZXQiC3RvdGFsQW1vdW50Ig0kdDAzMjQzODMyNzQ1IgVvdXRBbSIFb3V0UHIiCGN1clByWDE4IgVjdXJQciIRb3V0QXNzZXRJZE9yV2F2ZXMiEHNlbmRGZWVUb01hdGNoZXIiBGJ1cm4iDSR0MDMzNTMwMzM4ODAiEGZlZUFtb3VudEZvckNhbGMiEG91dEluQW1vdW50QXNzZXQiDSR0MDMzODgzMzM5OTEiEXJlZnJlc2hETHBBY3Rpb25zIhFpc1VwZGF0ZWRETHBWYWxpZCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCITbWFuYWdlclZhdWx0QWRkcmVzcyICcGQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgRnZXRZIglpc1JldmVyc2UiE3Bvb2xBbW91bnRJbkJhbGFuY2UiDSR0MDM1NDc4MzU0OTgiDSR0MDM1ODI5MzU4NzYiE3NraXBPcmRlclZhbGlkYXRpb24iDWNsZWFuQW1vdW50SW4iDWZlZVBvb2xBbW91bnQiDSR0MDM2MjI4MzY2NTIiCGFzc2V0T3V0IgJkeSILdG90YWxHZXRSYXciBW5ld1hwIgRuZXdEIgxhbW91bnRPdXRNaW4iCWFkZHJlc3NUbyILc3dhcENvbnRhY3QiEmlzUG9vbFN3YXBEaXNhYmxlZCIOaXNTd2FwRGlzYWJsZWQiBmNoZWNrcyIHYXNzZXRJbiINJHQwMzg0MjQzODgxOCIIY2hlY2tNaW4iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgphbUFzc2V0UG10IgpwckFzc2V0UG10IgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIg0kdDA0MzI3MzQzNDE1IgVjaGVjayIUbHBBc3NldEVtaXNzaW9uQWZ0ZXIiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg0kdDA0NTA5MzQ1MjUxIgdlc3RpbUxQIg0kdDA0NjEzNjQ2NDg1IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwNDY0ODg0NjU5NiIHbWF4U2xwZyIGZXN0UHV0Ig0kdDA0NzYyNjQ3NjkxIglvdXRBbXRBbXQiDSR0MDQ4ODY0NDg5NDYiDSR0MDQ5NjAxNDk3NTYiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDUwMjgwNTAzNDQiEGRMcFVwZGF0ZUFjdGlvbnMiDWxwQXNzZXRBbW91bnQiBWluZGV4IgRuZXdZIg0kdDA1MTM1NDUxNDA5Ig0kdDA1MTc4NDUxODk5Ig5zdW1PZkdldEFzc2V0cyISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDUzMDY1NTMxNDYiDWNoZWNrUGF5bWVudHMiCmZhY3RvcnlDZmciB3N0YWtpbmciCnVuc3Rha2VJbnYiAXYiBWJ1cm5BIg0kdDA1NDI1NjU0MzM3Ig11bnN0YWtlQW1vdW50IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiA3JlcyIMY2hlY2tBbW91bnRzIg0kdDA1NTYyNTU1NzA2IhdscEFzc2V0UmVjaXBpZW50QWRkcmVzcyINJHQwNTY3NjU1Njk1MyIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiDSR0MDU3MDgxNTcxODQiDSR0MDU3MzMyNTc0MzYiCGFtdEFzU3RyIgdwckFzU3RyIgJwciIMcmVzU2NhbGVNdWx0Igd1c3JBZGRyIgdwbXRBc0lkIgNjZmciDSR0MDU5OTE2NjAxMTUiBGxpc3QiBWRlbGF5IgVkZWx0YSIGdGFyZ2V0IgZjdXJBbXAiCW5ld0FtcFJhdyIGbmV3QW1wIghsYXN0Q2FsbCIEd2FpdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA2MTA0ODYxMTY1IgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2iHAQABYQCAwtcvAAFiCQC2AgEAgMLXLwABYwkAtgIBAICAkLu61q3wDQABZAkAtgIBAAAAAWUJALYCAQAAAAFmCQC2AgEAAQABZwkAtgIBAAIAAWgJALYCAQADAAFpCQC2AgEABAABagkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWsCBVdBVkVTAAFsADIAAW0CAzEwMAABbgIBMQABbwICX18AAXACAAABcQABAAFyAAIAAXMAAwABdAAEAAF1AAEAAXYAAgABdwADAAF4AAQAAXkABQABegAGAAFBAAcAAUIACAABQwAJAAFEAAEAAUUABgABRgAHAAFHAAoAAUgJAGsDAAoFAWEAkE4BAUkCAUoBSwkAvAIDCQC2AgEFAUoFAWMJALYCAQUBSwEBTAIBSgFLCQC8AgMFAUoFAWMFAUsBAU0CAU4BTwkAoAMBCQC8AgMFAU4JALYCAQUBTwUBYwEBUAMBTgFPAVEJAKADAQkAvQIEBQFOCQC2AgEFAU8FAWMFAVEBAVICAUoBSwkAvAIDBQFKBQFjCQC2AgEFAUsBAVMCAU4BTwkAvAIDBQFOCQC2AgEFAU8FAWMBAVQDAVUBVgFXCQBrAwUBVQUBVgUBVwEBWAEBTgMJAL8CAgUBZAUBTgkAvgIBBQFOBQFOAQFZAQFOAwkAvwICBQFkBQFOCQC+AgEFAU4FAU4BAVoAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQJhYQACFCVzX19tYW5hZ2VyUHVibGljS2V5AQJhYgACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzAQJhYwACESVzJXNfX3ByaWNlX19sYXN0AQJhZAICYWUCYWYJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQJhZQkAzAgCCQCkAwEFAmFmBQNuaWwFAW8BAmFnAgJhaAJhaQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFoAgJfXwUCYWkBAmFqAgJhaAJhaQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFoAgJfXwUCYWkBAmFrAAIPJXNfX2Ftb3VudEFzc2V0AQJhbAACDiVzX19wcmljZUFzc2V0AQJhbQACByVzX19hbXABAmFuAQJhbwkArAICAgslcyVkX19hbXBfXwkApAMBBQJhbwECYXAAAhUlc19fY2hhbmdlQW1wTGFzdENhbGwAAmFxAgclc19fZmVlAAJhcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhcQUBSAACYXMJALkJAgkAzAgCAgIlcwkAzAgCAgNkTHAFA25pbAUBbwACYXQJALkJAgkAzAgCAgIlcwkAzAgCAhJkTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBbwACYXUJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoRExwRGVsYXkFA25pbAUBbwACYXYAHgACYXcJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYXUFAmF2AQJheAACESVzX19mYWN0b3J5Q29uZmlnAQJheQACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXoCAmFBAmFCCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhQQICX18FAmFCAghfX2NvbmZpZwECYUMBAmFECQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFEAQJhRQACDCVzX19zaHV0ZG93bgECYUYAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYUcAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUgBAmFJCQCsAgICGyVzJXNfX3NraXBPcmRlclZhbGlkYXRpb25fXwUCYUkBAmFKBAJhSwJhTAJhTQJhTgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYUsCAiAoBQJhTAIBKQINIHNlbmRlclZhbGlkPQkApQMBBQJhTQIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYU4BAmFPAQJhUAQCYVEJAKYIAQUCYVADCQABAgUCYVECB0FkZHJlc3MEAmFSBQJhUQUCYVIFBHRoaXMBAmFTAAQCYVQEAmFRCQCiCAEJAQFaAAMJAAECBQJhUQIGU3RyaW5nBAJhVQUCYVEJAQJhTwEFAmFVBQR0aGlzBAJhUQkAnQgCBQJhVAkBAmFiAAMJAAECBQJhUQIGU3RyaW5nBAJhVgUCYVEJAQJhTwEFAmFWBQR0aGlzAQJhVwICYVgCYVkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhWAUCYVkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYVgJAMwIAgIBLgkAzAgCBQJhWQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhWgICYVgCYVkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhWAUCYVkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYVgJAMwIAgIBLgkAzAgCBQJhWQkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJiYQECYmIJAAIBCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmJiBQNuaWwCASABAmJjAQJiYgkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJiYgUDbmlsAgEgAAJhVQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFXAgUEdGhpcwkBAVoAAAJiZAoAAmJlCQD8BwQFAmFVAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmUCA0ludAUCYmUJAAIBCQCsAgIJAAMBBQJiZQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJiZgoAAmJlCQD8BwQFAmFVAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJlAgNJbnQFAmJlCQACAQkArAICCQADAQUCYmUCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYmcBAmJoCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgt3aGl0ZWxpc3RlZAkAzAgCCQClCAEFAmJoBQNuaWwFAW8BAmJpAQJiaAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhVQkBAmJnAQUCYmgHAAJiagkBAmFXAgUEdGhpcwkBAmFtAAECYmsACQELdmFsdWVPckVsc2UCCQCbCAIFAmFVCQECYUUABwECYmwACQDZBAEJAQJhVwIFAmFVCQECYXkAAAJibQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFXAgUCYVUJAQJhRwABAmJuAAQCYm8JAQJhVwIFBHRoaXMJAQJhawAEAmJwCQECYVcCBQR0aGlzCQECYWwABAJicQkBAmFaAgUCYVUJAQJhQwEFAmJwBAJhQQkBAmFaAgUCYVUJAQJhQwEFAmJvCQC1CQIJAQJhVwIFAmFVCQECYXoCCQCkAwEFAmFBCQCkAwEFAmJxBQFvAQJicgECYnMDCQAAAgUCYnMFAWsFBHVuaXQJANkEAQUCYnMBAmJ0AQJicwMJAAACBQJicwUEdW5pdAUBawkA2AQBCQEFdmFsdWUBBQJicwECYnUBAmJ2CQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYnYFAXUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidgUBdgkA2QQBCQCRAwIFAmJ2BQF3CQECYnIBCQCRAwIFAmJ2BQF4CQECYnIBCQCRAwIFAmJ2BQF5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnYFAXoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJidgUBQQACYncJAQJidQEJAQJibgAAAmJ4BQJidwACYnkIBQJieAJfMQACYnoIBQJieAJfMgACYkEIBQJieAJfMwACYkIIBQJieAJfNAACYkMIBQJieAJfNQACYkQIBQJieAJfNgACYkUIBQJieAJfNwECYkYACQC1CQIJAQJhVwIFAmFVCQECYXgABQFvAAJiRwkBAmJGAAACYkgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJHBQFEAiBJbnZhbGlkIHN0YWtpbmcgY29udHJhY3QgYWRkcmVzcwACYkkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJHBQFGAiBJbnZhbGlkIHNsaXBhZ2UgY29udHJhY3QgYWRkcmVzcwACYkoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJHBQFHAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAAJiSwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYkcFAUUCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MBAmJMCgJiTQJiTgJiTwJiUAJiUQJiUgJiUwJiVAJiVQJiVgkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYk0JAMwIAgkApAMBBQJiTgkAzAgCCQCkAwEFAmJPCQDMCAIJAKQDAQUCYlAJAMwIAgkApAMBBQJiUQkAzAgCCQCkAwEFAmJSCQDMCAIJAKQDAQUCYlMJAMwIAgkApAMBBQJiVAkAzAgCCQCkAwEFAmJVCQDMCAIJAKQDAQUCYlYFA25pbAUBbwECYlcGAmJYAmJZAmJaAmJQAmJTAmJUCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYlgJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJaCQDMCAIJAKQDAQUCYlAJAMwIAgkApAMBBQJiUwkAzAgCCQCkAwEFAmJUBQNuaWwFAW8BAmNhAQJjYgMJAAACBQJjYgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCY2IBAmNjAgJjZAJjZQkAvAIDBQJjZAUBYwUCY2UBAmNmAwJjZAJjZQFRCQC9AgQFAmNkBQFjBQJjZQUBUQECY2cDAmNoAmNpAmNqBAJjawkAvAIDCQC4AgIFAmNoBQJjaQUBYgUCY2kEAmNsCQC/AgIJALgCAgUCY2oJAQFYAQUCY2sFAWQDCQEBIQEFAmNsCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmNrCQCUCgIFAmNsCQCZAwEJAMwIAgUCY2gJAMwIAgUCY2kFA25pbAECY20DAmNuAmNvAmNwBAJjawkAvAIDBQJjbwUBYgUCY24EAmNxCQC/AgIFAmNwBQJjawMDBQJjcQYJAL8CAgUCY28FAmNuCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJjbwIBIAkApgMBBQJjbgIBIAkApgMBBQJjawIBIAkApgMBBQJjcAUCY3EBAmNyBAJjcwJjdAJjdQJjdgQCY3cJAQFJAgUCY3UFAmNzBAJjeAkBAUkCBQJjdgUCY3QJAQJjYwIFAmN4BQJjdwECY3kDAmN1AmN2AmN6BAJjQQUCYkQEAmNCBQJiRQQCY0MJAQJjcgQFAmNBBQJjQgUCY3UFAmN2BAJjZQkBAUkCBQJjdQUCY0EEAmNkCQEBSQIFAmN2BQJjQgQCY0QJAQFJAgUCY3oFAWEEAmNFCQECY2MCBQJjZQUCY0QEAmNGCQECY2MCBQJjZAUCY0QJAMwIAgUCY0MJAMwIAgUCY0UJAMwIAgUCY0YFA25pbAECY0cDAmN1AmN2AmN6BAJjSAkBAmN5AwUCY3UFAmN2BQJjegkAzAgCCQEBTQIJAJEDAgUCY0gAAAUBYQkAzAgCCQEBTQIJAJEDAgUCY0gAAQUBYQkAzAgCCQEBTQIJAJEDAgUCY0gAAgUBYQUDbmlsAQJjSQICY0oCYXIEAmNLAwkAAAIFAmFyAAAAAAkAawMFAmNKBQJhcgUBYQkAlAoCCQBlAgUCY0oFAmNLBQJjSwECY0wBAmNNBAJjTgkAkQMCBQJjTQAABAJjTwkAkQMCBQJjTQABBAJhVgkAtwICBQJjTgUCY08DCQAAAgUCYVYFAWUFAWUEAmFSCQENcGFyc2VJbnRWYWx1ZQEFAmJqBAJjUAkAaAIFAmFSAAIEAmNICQC8AgMFAmNOBQJjTwUBZgQCY1EJALwCAwUCY0gFAWkFAWYEAmNSCQC8AgMJALYCAQUCY1AFAmFWBQFmBAJjUwkAtgIBCQBlAgUCY1AAAQoBAmNUAQJjVQQCY1YJALwCAwUCY1UFAmNVBQFmBAJjVwkAvAIDBQJjVgUCY1UFAWYEAmNYCQC8AgMFAmNXBQFmBQJjUQkAvAIDCQC3AgIFAmNSCQC8AgMFAmNYBQFnBQFmBQJjVQkAtwICCQC8AgMFAmNTBQJjVQUBZgkAvAIDBQFoBQJjWAUBZgoBAmNZAgJjWgJkYQMIBQJjWgJfMgUCY1oEAmNVCAUCY1oCXzEEAmRiCQECY1QBBQJjVQQCZGMJALgCAgUCZGIJAQV2YWx1ZQEFAmNVBAJkZAMJAL8CAgUBZQUCZGMJAL4CAQUCZGMFAmRjAwkAwAICBQFmBQJkZAkAlAoCBQJkYgYJAJQKAgUCZGIHBAJkZQkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQBQNuaWwEAmRmCgACZGcFAmRlCgACZGgJAJADAQUCZGcKAAJkaQkAlAoCBQJhVgcKAQJkagICZGsCZGwDCQBnAgUCZGwFAmRoBQJkawkBAmNZAgUCZGsJAJEDAgUCZGcFAmRsCgECZG0CAmRrAmRsAwkAZwIFAmRsBQJkaAUCZGsJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNwkBAmRtAgkBAmRqAgkBAmRqAgkBAmRqAgkBAmRqAgkBAmRqAgkBAmRqAgkBAmRqAgkBAmRqAgkBAmRqAgkBAmRqAgkBAmRqAgkBAmRqAgkBAmRqAgkBAmRqAgkBAmRqAgkBAmRqAgkBAmRqAgUCZGkAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEEAmNVCAUCZGYCXzEEAmRuCAUCZGYCXzIDBQJkbgUCY1UJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCY1UBAmRvBAJkcAJkcQJkcgJkcwQCZHQFAmJBBAJkdQkA2AQBCQEFdmFsdWUBBQJiQgQCZHYJANgEAQkBBXZhbHVlAQUCYkMEAmR3BQJiRAQCZHgFAmJFBAJkeQkApAMBBQJiegQCZHoICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHQCC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgkA2AQBBQJkdAUCZHEJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmRBCQECY2EBBQJkdQQCZEIJAQFJAgUCZEEFAmR3BAJkQwkBAmNhAQUCZHYEAmRECQEBSQIFAmRDBQJkeAQCZEUJAQJjYwIFAmREBQJkQgQCZEYJAQFNAgUCZEUFAWEEAmRHCQEBSQIFAmRyBQFhBAJkSAkBAUkCBQJkegUBYQQCZEkJALwCAwUCZEIFAmRHBQJkSAQCZEoJALwCAwUCZEQFAmRHBQJkSAQCZEsJAQFQAwUCZEkFAmR3BQVGTE9PUgQCZEwJAQFQAwUCZEoFAmR4BQVGTE9PUgQCZE0DCQAAAgUCZHACAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmRzBQJkSwMJAAACBQJkdQIFV0FWRVMFBHVuaXQJANkEAQUCZHUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCZHMFAmRMAwkAAAIFAmR2AgVXQVZFUwUEdW5pdAkA2QQBBQJkdgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWoCCQClCAEFAmRzBQJkcAkBAmJXBgUCZEsFAmRMBQJkcgUCZEYFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwAFAmRGCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkRgUDbmlsCQCcCgoFAmRLBQJkTAUCZHUFAmR2BQJkQQUCZEMFAmR6BQJkRQUCZHkFAmRNAQJkTg0CZHACY2oCZE8CZFACZFECZFICZHMCZFMCZFQCZFUCZFYCZFcCZFgEAmR0BQJiQQQCZFkJANgEAQkBBXZhbHVlAQUCYkIEAmRaCQDYBAEJAQV2YWx1ZQEFAmJDBAJlYQUCYkQEAmViBQJiRQQCZHkJAKQDAQUCYnoEAmVjCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmR0AghXciBscCBhcwhxdWFudGl0eQQCZWQJAMwIAgMDCQAAAgUCZFAJAQJicgEFAmRZCQAAAgUCZFIJAQJicgEFAmRaBwYJAQJiYQECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4FA25pbAMJAAACBQJlZAUCZWQEAmRBAwUCZFMJAQJjYQEFAmRZAwMFAmRVCQAAAgUCZFgFAmRZBwkAZQIJAQJjYQEFAmRZBQJkVwMFAmRVCQECY2EBBQJkWQkAZQIJAQJjYQEFAmRZBQJkTwQCZEMDBQJkUwkBAmNhAQUCZFoDAwUCZFUJAAACBQJkWAUCZFoHCQBlAgkBAmNhAQUCZFoFAmRXAwUCZFUJAQJjYQEFAmRaCQBlAgkBAmNhAQUCZFoFAmRRBAJlZQkBAUkCBQJkTwUCZWEEAmVmCQEBSQIFAmRRBQJlYgQCZWcJAQJjYwIFAmVmBQJlZQQCZEIJAQFJAgUCZEEFAmVhBAJkRAkBAUkCBQJkQwUCZWIEAmNvCQECY0wBCQDMCAIFAmRCCQDMCAIFAmREBQNuaWwEAmVoAwkAAAIFAmVjAAAEAmNuCQECY0wBCQDMCAIJALcCAgUCZEIFAmVlCQDMCAIJALcCAgUCZEQFAmVmBQNuaWwEAmVpAwkAvwICBQJjbgUCY28GCQACAQIcRDEgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBEMAMJAAACBQJlaQUCZWkEAmRFBQFkBAJlagUBZAQCY0QFAmNuCQCXCgUJAQFNAgUCY0QFAWEJAQFNAgUCZWUFAmVhCQEBTQIFAmVmBQJlYgkBAmNjAgkAtwICBQJkRAUCZWYJALcCAgUCZEIFAmVlBQJlagkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQCZEUJAQJjYwIFAmREBQJkQgQCZWsJALwCAwkBAVgBCQC4AgIFAmRFBQJlZwUBYwUCZEUEAmVqCQEBSQIFAmNqBQFhAwMDBQJkVgkBAiE9AgUCZEUFAWQHCQC/AgIFAmVrBQJlagcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZWsCAyA+IAkApgMBBQJlagQCZWwJAQFJAgUCZWMFAWEEAmVtCQC9AgQFAmVlCQECY2YDBQJkRAUCZEIFB0NFSUxJTkcFAWMFB0NFSUxJTkcEAmVuCQC9AgQFAmVmBQFjCQECY2YDBQJkRAUCZEIFBUZMT09SBQdDRUlMSU5HBAJlbwMJAL8CAgUCZW0FAmVmCQCUCgIFAmVuBQJlZgkAlAoCBQJlZQUCZW0EAmVwCAUCZW8CXzEEAmVxCAUCZW8CXzIEAmNuCQECY0wBCQDMCAIJALcCAgUCZEIFAmVwCQDMCAIJALcCAgUCZEQFAmVxBQNuaWwEAmVpAwkAvwICBQJjbgUCY28GCQACAQIcRDEgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBEMAMJAAACBQJlaQUCZWkEAmNECQC8AgMFAmVsCQC4AgIFAmNuBQJjbwUCY28JAJcKBQkBAVADBQJjRAUBYQUFRkxPT1IJAQFQAwUCZXAFAmVhBQdDRUlMSU5HCQEBUAMFAmVxBQJlYgUHQ0VJTElORwUCZEUFAmVqCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJlcggFAmVoAl8xBAJlcwgFAmVoAl8yBAJldAgFAmVoAl8zBAJkRgkBAU0CCAUCZWgCXzQFAWEEAmV1CQEBTQIIBQJlaAJfNQUBYQMJAGcCAAAFAmVyCQACAQIHTFAgPD0gMAQCZXYDCQEBIQEFAmRUAAAFAmVyBAJldwkAZQIFAmRPBQJlcwQCZXgJAGUCBQJkUQUCZXQEAmV5AwMFAmRVCQAAAgUCZFgFAmRZBwkAlAoCBQJkVwAAAwMFAmRVCQAAAgUCZFgFAmRaBwkAlAoCAAAFAmRXCQCUCgIFAmVzBQJldAQCZXoIBQJleQJfMQQCZUEIBQJleQJfMgQCZUIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwAFAmRGCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkRgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWcCBQJkcwUCZHAJAQJiTAoFAmV6BQJlQQUCZXYFAmRGBQJjagUCZXUFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmV3BQJleAUDbmlsCQCfCg0FAmVyBQJldgUCZEYFAmRBBQJkQwUCZWMFAmR0BQJkeQUCZUIFAmV3BQJleAUCZFAFAmRSCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlQwMCY00CZGECZUQEAmVFBQFnBAJlRgkAkQMCBQJjTQMJAAACBQJkYQAAAAEAAAQCZUcJAKcDAQUBbQQCYVIJALkCAgkApwMBBQJiagUCZUcEAmFWBQJlRgQCY1AJALkCAgUCYVIFAmVFBAJlSAkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmVEBQJlRAkAuQICBQJlRgUCZUUFAmVEBQJlRwkAuQICBQJjUAUCZUUEAmVJCQC4AgIJALcCAgUCYVYJALoCAgkAuQICBQJlRAUCZUcFAmNQBQJlRAoBAmNZAgJjWgJlSgQCZUsFAmNaBAJlTAgFAmVLAl8xBAJkbggFAmVLAl8yAwkBAiE9AgUCZG4FBHVuaXQFAmNaBAJlTQkAugICCQC3AgIJALkCAgUCZUwFAmVMBQJlSAkAtwICCQC5AgIFAWcFAmVMBQJlSQQCZU4JAQFZAQkAuAICBQJlTQkBBXZhbHVlAQUCZUwDCQDAAgIFAWYFAmVOCQCUCgIFAmVNBQJlSgkAlAoCBQJlTQUEdW5pdAQCZGUJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZU8KAAJkZwUCZGUKAAJkaAkAkAMBBQJkZwoAAmRpCQCUCgIFAmVEBQR1bml0CgECZGoCAmRrAmRsAwkAZwIFAmRsBQJkaAUCZGsJAQJjWQIFAmRrCQCRAwIFAmRnBQJkbAoBAmRtAgJkawJkbAMJAGcCBQJkbAUCZGgFAmRrCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJkbQIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIFAmRpAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVMCAUCZU8CXzEEAmRuCAUCZU8CXzIDCQECIT0CBQJkbgUEdW5pdAUCZUwJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUwBAmVQAwJlUQJlUgJlUwQCZVQJALwCAwkBAmNMAQkAzAgCCQEBTAIFAmVRCQC2AgEFAmJECQDMCAIJAQFMAgUCZVIJALYCAQUCYkUFA25pbAUBYwUCZVMDCQAAAgUCZVMFAWUFAWUFAmVUAQJlVQMCZVYCZVcCZVgEAmVZCQC4AgIJALYCAQkBAmNhAQkBAmJ0AQUCYkIFAmVWBAJlWgkAuAICCQC2AgEJAQJjYQEJAQJidAEFAmJDBQJlVwQCZmEJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJiQQhxdWFudGl0eQUCZVgEAmZiCQECZVADBQJlWQUCZVoFAmZhBQJmYgECZmMDAmZkAmZlAmVYBAJlWQkAZAIJAQJjYQEJAQJidAEFAmJCBQJmZAQCZVoJAGQCCQECY2EBCQECYnQBBQJiQwUCZmUEAmZhCQBkAggJAQV2YWx1ZQEJAOwHAQUCYkEIcXVhbnRpdHkFAmVYBAJlVAkBAmVQAwkAtgIBBQJlWQkAtgIBBQJlWgkAtgIBBQJmYQQCZmYJAMwIAgkBDEludGVnZXJFbnRyeQIFAmF0BQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYXMJAKYDAQUCZVQFA25pbAkAlAoCBQJmZgUCZVQBAmZnAgJmaAJlVAMJAMACAgUCZVQFAmZoBgkBAmJhAQIidXBkYXRlZCBETHAgbG93ZXIgdGhhbiBjdXJyZW50IERMcAECZmkBAmZqBAJlWQkBAmNhAQkBAmJ0AQUCYkIEAmVaCQECY2EBCQECYnQBBQJiQwQCZmsIBQJmagZhbW91bnQEAmZsCQBuBAgFAmZqBmFtb3VudAgFAmZqBXByaWNlBQFhBQVGTE9PUgQCZm0DCQAAAggFAmZqCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmZrCQEBLQEFAmZsCQCUCgIJAQEtAQUCZmsFAmZsBAJmZAgFAmZtAl8xBAJmZQgFAmZtAl8yAwMDCQECYmsABgkAAAIFAmJ6BQFzBgkAAAIFAmJ6BQF0CQACAQINQWRtaW4gYmxvY2tlZAMDCQECIT0CCAgFAmZqCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYkIGCQECIT0CCAgFAmZqCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJiQwkAAgECCVdyIGFzc2V0cwQCZm4JAKcDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhcwIBMAQCZm8JAQJmYwMFAmZkBQJmZQAABAJmcAgFAmZvAl8xBAJmcQgFAmZvAl8yBAJmcgkAwAICBQJmcQUCZm4EAmZzCQC5CQIJAMwIAgIEZExwPQkAzAgCCQCmAwEFAmZuCQDMCAICCCBkTHBOZXc9CQDMCAIJAKYDAQUCZnEJAMwIAgIUIGFtb3VudEFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlWQkAzAgCAhMgcHJpY2VBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZVoJAMwIAgIZIGFtb3VudEFzc2V0QmFsYW5jZURlbHRhPQkAzAgCCQCkAwEFAmZkCQDMCAICGCBwcmljZUFzc2V0QmFsYW5jZURlbHRhPQkAzAgCCQCkAwEFAmZlCQDMCAICCCBoZWlnaHQ9CQDMCAIJAKQDAQUGaGVpZ2h0BQNuaWwCAAkAlAoCBQJmcgUCZnMBAmZ0AQJkYQMJAQIhPQIJAJADAQgFAmRhCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBAJmdQkBBXZhbHVlAQkAkQMCCAUCZGEIcGF5bWVudHMAAAQCZHEJAQV2YWx1ZQEIBQJmdQdhc3NldElkBAJkVwgFAmZ1BmFtb3VudAQCZWgJAQJkbwQJANgEAQgFAmRhDXRyYW5zYWN0aW9uSWQJANgEAQUCZHEFAmRXCAUCZGEGY2FsbGVyBAJkSwgFAmVoAl8xBAJkTAgFAmVoAl8yBAJkeQkBDXBhcnNlSW50VmFsdWUBCAUCZWgCXzkEAmRNCAUCZWgDXzEwBAJmdgMJAQEhAQkBAmJpAQgFAmRhBmNhbGxlcgMJAQJiawAGCQAAAgUCYnoFAXQHAwUCZnYJAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQJkeQkAlwoFBQJkSwUCZEwFAmRXBQJkcQUCZE0BAmZ3CgJmeAJhaQJmeQJmegJjagJkVAJkVQJkVgJkVwJkWAQCZWgJAQJkTg0FAmFpBQJjaggJAQV2YWx1ZQEFAmZ5BmFtb3VudAgJAQV2YWx1ZQEFAmZ5B2Fzc2V0SWQICQEFdmFsdWUBBQJmegZhbW91bnQICQEFdmFsdWUBBQJmegdhc3NldElkBQJmeAkAAAIFAmFpAgAFAmRUBQJkVQUCZFYFAmRXBQJkWAQCZHkJAQ1wYXJzZUludFZhbHVlAQgFAmVoAl84BAJmQQMJAQEhAQkBAmJpAQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZngDAwkBAmJrAAYJAAACBQJiegUBdAYJAAACBQJiegUBcgcDBQJmQQkAAgEJAKwCAgIIQmxvY2tlZDoJAKQDAQUCZHkFAmVoAQJmQgUCZkMCZHECZHMCYWkCZkQEAmR1CQDYBAEJAQV2YWx1ZQEFAmJCBAJkdgkA2AQBCQEFdmFsdWUBBQJiQwQCZHQFAmJBBAJlYQUCYkQEAmViBQJiRQQCZmEJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkdAIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZkUDCQC/AgIFAmZhBQFlBgkAAgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZkUFAmZFBAJkQQkBAmNhAQUCZHUEAmRDCQECY2EBBQJkdgQCZkYDCQAAAgUCYWkCAAkAlAoCBQJkQQUCZEMDCQAAAgUCZHEFAmR1AwkAZgIFAmZDBQJkQQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFAmRBBQJmQwUCZEMDCQAAAgUCZHEFAmR2AwkAZgIFAmZDBQJkQwkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUCZEEJAGUCBQJkQwUCZkMJAAIBAhB3cm9uZyBwbXRBc3NldElkBAJmRwgFAmZGAl8xBAJmSAgFAmZGAl8yBAJmSQMJAAACBQJkcQUCZHUJAJQKAgUCZkMAAAMJAAACBQJkcQUCZHYJAJQKAgAABQJmQwkAAgECD2ludmFsaWQgcGF5bWVudAQCZkoIBQJmSQJfMQQCZksIBQJmSQJfMgQCZkwDBQJmRAkAlQoDCAkBAmNJAgUCZkoFAmJkAl8xCAkBAmNJAgUCZksFAmJkAl8xCAkBAmNJAgUCZkMFAmJkAl8yCQCVCgMFAmZKBQJmSwAABAJmTQgFAmZMAl8xBAJmTggFAmZMAl8yBAJjSwgFAmZMAl8zBAJmTwkAZAIFAmZHBQJmTQQCZlAJAGQCBQJmSAUCZk4EAmNvCQECY0wBCQDMCAIJAQFJAgUCZkcFAmJECQDMCAIJAQFJAgUCZkgFAmJFBQNuaWwEAmNuCQECY0wBCQDMCAIJAQFJAgUCZk8FAmJECQDMCAIJAQFJAgUCZlAFAmJFBQNuaWwEAmVpAwkAvwICBQJjbgUCY28GCQEFdGhyb3cAAwkAAAIFAmVpBQJlaQQCZlEJAL0CBAUCZmEJALgCAgUCY24FAmNvBQJjbwUFRkxPT1IEAmRGCQEBTQIJAQJjYwIJAQFJAgUCZlAFAmViCQEBSQIFAmZPBQJlYQUBYQQCZUIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwAFAmRGCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkRgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWcCBQJkcwUCYWkJAQJiTAoFAmZKBQJmSwkAoAMBBQJmUQUCZEYAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmUgkAawMFAmZIBQFhBQJmRwQCZlMJAGsDBQJmQwUBYQkAZAIFAmZSBQFhBAJmVAkAZQIFAmZDBQJmUwQCZlUJALwCAwUCZmEJALYCAQUCZlQJALYCAQUCZkgEAmZWCQCgAwEJALwCAwkAuAICBQJmUQUCZlUFAWIFAmZVCQCWCgQJAKADAQUCZlEFAmVCBQJjSwUCZlYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZXBgJmWAJmWQJmWgJmeAJnYQJnYgQCZHQJANgEAQkBBXZhbHVlAQUCYkEEAmR1CQDYBAEJAQV2YWx1ZQEFAmJCBAJkdgkA2AQBCQEFdmFsdWUBBQJiQwQCZ2MFAmJEBAJnZAUCYkUEAmdlBQJiegQCZHMDCQAAAgUCZngFAmJLBQJnYQUCZngEAmZ1CQEFdmFsdWUBCQCRAwIFAmZaAAAEAmRxCQEFdmFsdWUBCAUCZnUHYXNzZXRJZAQCZFcIBQJmdQZhbW91bnQEAmZiCQECZVUDBQFlBQFlBQFlAwkAAAIFAmZiBQJmYgQCZHAJANgEAQUCZ2IDCQECIT0CBQJkdAkA2AQBBQJkcQkAAgECCFdyb25nIExQBAJkQQkBAmNhAQUCZHUEAmRDCQECY2EBBQJkdgQCZ2YKAAJiZQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZYCQDMCAIFAmRXBQNuaWwFA25pbAMJAAECBQJiZQIKKEludCwgSW50KQUCYmUJAAIBCQCsAgIJAAMBBQJiZQIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJnZgUCZ2YEAmNLCAUCZ2YCXzIEAmdnCAUCZ2YCXzEEAmdoAwMJAGYCBQJmWQAACQBmAgUCZlkFAmdnBwkBAmJhAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmWQUDbmlsAgAFAmdnBAJnaQMJAAACBQJmWAUCZHUJAJYKBAUCZ2gAAAkAZQIJAGUCBQJkQQUCZ2gFAmNLBQJkQwMJAAACBQJmWAUCZHYJAJYKBAAABQJnaAUCZEEJAGUCCQBlAgUCZEMFAmdoBQJjSwkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJnaggFAmdpAl8xBAJnawgFAmdpAl8yBAJmTwgFAmdpAl8zBAJmUAgFAmdpAl80BAJnbAkBAmNjAgkBAUkCBQJmUAUCZ2QJAQFJAgUCZk8FAmdjBAJnbQkBAU0CBQJnbAUBYQQCZ24DCQAAAgUCZlgCBVdBVkVTBQR1bml0CQDZBAEFAmZYBAJnbwMJAGYCBQJjSwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJtBQJjSwUCZ24FA25pbAUDbmlsBAJkTQkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmRzBQJnaAUCZ24JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFqAgkApQgBBQJkcwUCZHAJAQJiVwYFAmdqBQJnawUCZFcFAmdtBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWMABQJnbQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFkAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZ20FA25pbAUCZ28DCQAAAgUCZE0FAmRNBAJncAkA/AcEBQJhVQIEYnVybgkAzAgCBQJkVwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkcQUCZFcFA25pbAMJAAACBQJncAUCZ3AEAmdxBAJncgMJAAACBQR0aGlzBQJibQAABQJjSwQCZ3MDCQAAAgkBAmJyAQUCZlgFAmJCBgcDBQJncwkAlAoCCQEBLQEJAGQCBQJnZwUCZ3IAAAkAlAoCAAAJAQEtAQkAZAIFAmdnBQJncgQCZmQIBQJncQJfMQQCZmUIBQJncQJfMgQCZ3QJAQJmYwMFAmZkBQJmZQAABAJndQgFAmd0Al8xBAJlVAgFAmd0Al8yBAJndgkBAmZnAgUCZmIFAmVUAwkAAAIFAmd2BQJndgkAlAoCCQDOCAIFAmRNBQJndQUCZ2gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmd3AAQCZ3gJAQJhUwAEAmFRCQCdCAIFAmd4CQECYWEAAwkAAQIFAmFRAgZTdHJpbmcEAmFWBQJhUQkA2QQBBQJhVgMJAAECBQJhUQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJneQkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJnegECZGEEAmFRCQECZ3cAAwkAAQIFAmFRAgpCeXRlVmVjdG9yBAJnQQUCYVEJAAACCAUCZGEPY2FsbGVyUHVibGljS2V5BQJnQQMJAAECBQJhUQIEVW5pdAkAAAIIBQJkYQZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ0IBAmRhBAJhUQkBAmd3AAMJAAECBQJhUQIKQnl0ZVZlY3RvcgQCZ0EFAmFRAwkAAAIIBQJkYQ9jYWxsZXJQdWJsaWNLZXkFAmdBBgUCZ3kDCQABAgUCYVECBFVuaXQDCQAAAggFAmRhBmNhbGxlcgUEdGhpcwYFAmd5CQACAQILTWF0Y2ggZXJyb3IBAmdDAwJnRAJlRAJnRQQCYnYJAQJibgAEAmR1CQCRAwIFAmJ2BQF4BAJkdgkAkQMCBQJidgUBeQQCZUUFAWcEAmVHCQCnAwEFAW0EAmFSCQC5AgIJAKcDAQUCYmoFAmVHBAJjTQMJAAACBQJnRAcJAMwIAgkAtwICCQC2AgEJAQJjYQEFAmR1BQJnRQkAzAgCCQC2AgEJAQJjYQEFAmR2BQNuaWwJAMwIAgkAtwICCQC2AgEJAQJjYQEFAmR2BQJnRQkAzAgCCQC2AgEJAQJjYQEFAmR1BQNuaWwEAmVGCQCRAwIFAmNNAAAEAmFWBQJlRgQCY1AJALkCAgUCYVIFAmVFBAJlSAkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmVEBQJlRAkAuQICBQJlRgUCZUUFAmVEBQJlRwkAuQICBQJjUAUCZUUEAmVJCQC4AgIJALcCAgUCYVYJALoCAgkAuQICBQJlRAUCZUcFAmNQBQJlRAoBAmNZAgJjWgJlSgQCZ0YFAmNaBAJlTAgFAmdGAl8xBAJkbggFAmdGAl8yAwkBAiE9AgUCZG4FBHVuaXQFAmNaBAJlTQkAugICCQC3AgIJALkCAgUCZUwFAmVMBQJlSAkAtwICCQC5AgIFAWcFAmVMBQJlSQQCZU4JAQFZAQkAuAICBQJlTQkBBXZhbHVlAQUCZUwDCQDAAgIFAWYFAmVOCQCUCgIFAmVNBQJlSgkAlAoCBQJlTQUEdW5pdAQCZGUJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZ0cKAAJkZwUCZGUKAAJkaAkAkAMBBQJkZwoAAmRpCQCUCgIFAmVEBQR1bml0CgECZGoCAmRrAmRsAwkAZwIFAmRsBQJkaAUCZGsJAQJjWQIFAmRrCQCRAwIFAmRnBQJkbAoBAmRtAgJkawJkbAMJAGcCBQJkbAUCZGgFAmRrCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJkbQIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIJAQJkagIFAmRpAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVMCAUCZ0cCXzEEAmRuCAUCZ0cCXzIDCQECIT0CBQJkbgUEdW5pdAUCZUwJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUwBAmdIAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhVQkBAmFIAQkApQgBBQR0aGlzBxsCZGEBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQMCZ0kCZ0QCZ0oEAmdLAwkAAAIFAmdEBwQCZ0wJAQJhVwIFBHRoaXMJAQJhbAAEAmdFCQC3AgIJALYCAQkBAmNhAQkBAmFXAgUEdGhpcwkBAmFrAAkAtgIBBQJnSQkAlAoCBQJnTAUCZ0UEAmdMCQECYVcCBQR0aGlzCQECYWsABAJnRQkAtwICCQC2AgEJAQJjYQEJAQJhVwIFBHRoaXMJAQJhbAAJALYCAQUCZ0kJAJQKAgUCZ0wFAmdFBAJnTAgFAmdLAl8xBAJnRQgFAmdLAl8yBAJidgkBAmJuAAQCZHUJAJEDAgUCYnYFAXgEAmR2CQCRAwIFAmJ2BQF5BAJjTQkAzAgCCQC2AgEJAQJjYQEFAmR1CQDMCAIJALYCAQkBAmNhAQUCZHYFA25pbAQCZUQJAQJjTAEFAmNNBAJlTAkBAmdDAwUCZ0QFAmVECQC2AgEFAmdJBAJnTQkAuAICCQC4AgIJALYCAQkBAmNhAQUCZ0wFAmVMCQC2AgEAAQQCZ04JAJYDAQkAzAgCAAAJAMwIAgkAoAMBBQJnTQUDbmlsBAJnTwMJAAACBQJnRAcJAMwIAgkAtwICCQC3AgIJALYCAQkBAmNhAQUCZHUJALYCAQUCZ0kJALYCAQUCZ0oJAMwIAgkAuAICCQC2AgEJAQJjYQEFAmR2BQJnTQUDbmlsCQDMCAIJALgCAgkAtgIBCQECY2EBBQJkdQUCZ00JAMwIAgkAtwICCQC3AgIJALYCAQkBAmNhAQUCZHYJALYCAQUCZ0kJALYCAQUCZ0oFA25pbAQCZ1AJAQJjTAEFAmdPBAJlaQMJAMACAgUCZ1AFAmVEBgkAAgEJALkJAgkAzAgCAhRuZXcgRCBpcyBmZXdlciBlcnJvcgkAzAgCCQCmAwEFAmVECQDMCAIJAKYDAQUCZ1AFA25pbAICX18DCQAAAgUCZWkFAmVpCQCUCgIFA25pbAUCZ04JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGEBJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBQJnSQJnRAJnUQJnUgJnSgQCZ1MKAAJiZQkA/AcEBQJhVQIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmJlAgZTdHJpbmcFAmJlCQACAQkArAICCQADAQUCYmUCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZ1QKAAJiZQkA/AcEBQJhVQIaaXNQb29sU3dhcERpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZQIHQm9vbGVhbgUCYmUJAAIBCQCsAgIJAAMBBQJiZQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ1UDCQEBIQEJAQJiaQEIBQJkYQZjYWxsZXIDAwkBAmJrAAYJAAACBQJiegUBdAYFAmdUBwQCZ1YJAMwIAgMDCQEBIQEFAmdVBgkBAmd6AQUCZGEGCQECYmEBAiJzd2FwIG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQBnAggJAQV2YWx1ZQEJAJEDAggFAmRhCHBheW1lbnRzAAAGYW1vdW50BQJnSQYJAQJiYQECDFdyb25nIGFtb3VudAkAzAgCAwkAAAIIBQJkYQZjYWxsZXIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdTBgkBAmJhAQIRUGVybWlzc2lvbiBkZW5pZWQFA25pbAMJAAACBQJnVgUCZ1YEAmZ1CQEFdmFsdWUBCQCRAwIIBQJkYQhwYXltZW50cwAABAJnVwkBAmJ0AQgFAmZ1B2Fzc2V0SWQEAmdYAwkAAAIFAmdEBwQCZ0wJAQJhVwIFBHRoaXMJAQJhbAAEAmdFCQBlAgkBAmNhAQUCZ1cICQEFdmFsdWUBCQCRAwIIBQJkYQhwYXltZW50cwAABmFtb3VudAkAlAoCBQJnTAUCZ0UEAmdMCQECYVcCBQR0aGlzCQECYWsABAJnRQkAZQIJAQJjYQEFAmdXCAkBBXZhbHVlAQkAkQMCCAUCZGEIcGF5bWVudHMAAAZhbW91bnQJAJQKAgUCZ0wFAmdFBAJnTAgFAmdYAl8xBAJnRQgFAmdYAl8yBAJidgkBAmJuAAQCZHUJAJEDAgUCYnYFAXgEAmR2CQCRAwIFAmJ2BQF5BAJjTQMJAAACBQJnRAcJAMwIAgkAuAICCQC2AgEJAQJjYQEFAmR1CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkYQhwYXltZW50cwAABmFtb3VudAkAzAgCCQC2AgEJAQJjYQEFAmR2BQNuaWwJAMwIAgkAtgIBCQECY2EBBQJkdQkAzAgCCQC4AgIJALYCAQkBAmNhAQUCZHYJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRhCHBheW1lbnRzAAAGYW1vdW50BQNuaWwEAmVECQECY0wBBQJjTQQCZUwJAQJnQwMFAmdEBQJlRAkAtgIBAAAEAmdNCQC4AgIJALgCAgkAtgIBCQECY2EBBQJnTAUCZUwJALYCAQABBAJnTgkAlgMBCQDMCAIAAAkAzAgCCQCgAwEFAmdNBQNuaWwEAmdZAwkAZwIFAmdOBQJnUQYJAAIBAixFeGNoYW5nZSByZXN1bHQgaXMgZmV3ZXIgY29pbnMgdGhhbiBleHBlY3RlZAMJAAACBQJnWQUCZ1kEAmdPAwkAAAIFAmdEBwkAzAgCCQC3AgIJALYCAQkBAmNhAQUCZHUJALYCAQUCZ0oJAMwIAgkAuAICCQC2AgEJAQJjYQEFAmR2BQJnTQUDbmlsCQDMCAIJALgCAgkAtgIBCQECY2EBBQJkdQUCZ00JAMwIAgkAtwICCQC2AgEJAQJjYQEFAmR2CQC2AgEFAmdKBQNuaWwEAmdQCQECY0wBBQJnTwQCZWkDCQDAAgIFAmdQBQJlRAYJAAIBAhRuZXcgRCBpcyBmZXdlciBlcnJvcgMJAAACBQJlaQUCZWkEAmZkAwUCZ0QJAQEtAQUCZ04FAmdKBAJmZQMFAmdEBQJnSgkBAS0BBQJnTgQCZ3UICQECZmMDBQJmZAUCZmUAAAJfMQMJAAACBQJndQUCZ3UJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnUgUCZ04JAQJicgEFAmdMBQNuaWwFAmdOCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRhAQtjb25zdHJ1Y3RvcgEBWgQCZUgJAQJnQgEFAmRhAwkAAAIFAmVIBQJlSAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgAFAVoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkYQEDcHV0AgJnWgJoYQQCaGIJAQJiRgAEAmhjCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJoYgUBRAIKV3Igc3QgYWRkcgQCaGQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmhiBQFGAgpXciBzbCBhZGRyAwkAZgIAAAUCZ1oJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmRhCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmhlCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkYQhwYXltZW50cwAABmFtb3VudAQCaGYJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRhCHBheW1lbnRzAAEGYW1vdW50BAJlWQkAuAICCQC2AgEJAQJjYQEJAQJidAEFAmJCBQJoZQMJAAACBQJlWQUCZVkEAmVaCQC4AgIJALYCAQkBAmNhAQkBAmJ0AQUCYkMFAmhmAwkAAAIFAmVaBQJlWgQCZmEJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYkEIcXVhbnRpdHkDCQAAAgUCZmEFAmZhBAJmYgkBAmVVAwUCaGUFAmhmCQC2AgEAAAMJAAACBQJmYgUCZmIEAmhnCQECZncKCQClCAEIBQJkYQZjYWxsZXIJANgEAQgFAmRhDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZGEIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZGEIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRhCHBheW1lbnRzAAEFAmdaBgcGAAACAAQCZXYIBQJoZwJfMgQCaGgIBQJoZwJfNwQCZE0IBQJoZwJfOQQCZXcIBQJoZwNfMTAEAmV4CAUCaGcDXzExBAJkdQgFAmhnA18xMgQCZHYIBQJoZwNfMTMEAmVoCQD8BwQFAmFVAgRlbWl0CQDMCAIFAmV2BQNuaWwFA25pbAMJAAACBQJlaAUCZWgEAmhpBAJhUQUCZWgDCQABAgUCYVECB0FkZHJlc3MEAmhqBQJhUQkA/AcEBQJoagIEZW1pdAkAzAgCBQJldgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCaGkFAmhpBAJoawMJAGYCBQJldwAACQD8BwQFAmhkAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHUFAmV3BQNuaWwFA25pbAMJAAACBQJoawUCaGsEAmhsAwkAZgIFAmV4AAAJAPwHBAUCaGQCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkdgUCZXgFA25pbAUDbmlsAwkAAAIFAmhsBQJobAQCaG0DBQJoYQQCaG4JAPwHBAUCaGMCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmhoBQJldgUDbmlsAwkAAAIFAmhuBQJobgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkYQZjYWxsZXIFAmV2BQJoaAUDbmlsBAJobwkBAmZjAwAAAAAAAAQCZ3UIBQJobwJfMQQCZVQIBQJobwJfMgQCaHADCQDAAgIFAmVUBQJmYgYJAQJiYQEJALkJAgkAzAgCAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwCQDMCAIJAKYDAQUCZVkJAMwIAgkApgMBBQJlWgkAzAgCCQCmAwEFAmZhCQDMCAIJAKYDAQUCZmIJAMwIAgkApgMBBQJlVAkAzAgCCQCkAwEFAmV3CQDMCAIJAKQDAQUCZXgFA25pbAIBIAMJAAACBQJocAUCaHAEAmhxCAkBBXZhbHVlAQkA7AcBBQJiQQhxdWFudGl0eQMJAAACBQJocQUCaHEJAM4IAgkAzggCBQJkTQUCaG0FAmd1CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRhAQtwdXRPbmVUa25WMgICZlkCaGEEAmhyCgACYmUJAPwHBAUCYVUCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZQIHQm9vbGVhbgUCYmUJAAIBCQCsAgIJAAMBBQJiZQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZkEDCQEBIQEJAQJiaQEIBQJkYQZjYWxsZXIDAwMJAQJiawAGCQAAAgUCYnoFAXIGCQAAAgUCYnoFAXQGBQJocgcEAmdWCQDMCAIDAwkBASEBBQJmQQYJAQJnegEFAmRhBgkBAmJhAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGEIcGF5bWVudHMAAQYJAQJiYQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdWBQJnVgQCZHUJANgEAQkBBXZhbHVlAQUCYkIEAmR2CQDYBAEJAQV2YWx1ZQEFAmJDBAJkdAUCYkEEAmdjBQJiRAQCZ2QFAmJFBAJkcwMJAAACCAUCZGEGY2FsbGVyBQR0aGlzCAUCZGEMb3JpZ2luQ2FsbGVyCAUCZGEGY2FsbGVyBAJmdQkBBXZhbHVlAQkAkQMCCAUCZGEIcGF5bWVudHMAAAQCZHEJANgEAQkBBXZhbHVlAQgFAmZ1B2Fzc2V0SWQEAmRXCAUCZnUGYW1vdW50BAJmYgMJAAACCAUCZnUHYXNzZXRJZAUCYkIJAQJlVQMJALYCAQUCZFcJALYCAQAACQC2AgEAAAkBAmVVAwkAtgIBAAAJALYCAQUCZFcJALYCAQAAAwkAAAIFAmZiBQJmYgQCaHMJAQJmQgUFAmRXBQJkcQkApQgBBQJkcwkA2AQBCAUCZGENdHJhbnNhY3Rpb25JZAYDCQAAAgUCaHMFAmhzBAJjSwgFAmhzAl8zBAJkTQgFAmhzAl8yBAJodAgFAmhzAl8xBAJldgMDCQBmAgUCZlkAAAkAZgIFAmZZBQJodAcJAQJiYQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlkFA25pbAIABQJodAQCaGcJAPwHBAUCYVUCBGVtaXQJAMwIAgUCZXYFA25pbAUDbmlsAwkAAAIFAmhnBQJoZwQCaGkEAmFRBQJoZwMJAAECBQJhUQIHQWRkcmVzcwQCaGoFAmFRCQD8BwQFAmhqAgRlbWl0CQDMCAIFAmV2BQNuaWwFA25pbAUEdW5pdAMJAAACBQJoaQUCaGkEAmhtAwUCaGEEAmhuCQD8BwQFAmJIAghzdGFrZUZvcgkAzAgCCQClCAEIBQJkYQZjYWxsZXIFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHQFAmV2BQNuaWwDCQAAAgUCaG4FAmhuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRhBmNhbGxlcgUCZXYFAmR0BQNuaWwEAmdvAwkAZgIFAmNLAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYm0FAmNLCQDZBAEFAmRxBQNuaWwFA25pbAQCaHUDCQAAAgUEdGhpcwUCYm0JAJQKAgAAAAAEAmh2AwkAAAIIBQJmdQdhc3NldElkBQJiQgYHAwUCaHYJAJQKAgkBAS0BBQJjSwAACQCUCgIAAAkBAS0BBQJjSwQCZmQIBQJodQJfMQQCZmUIBQJodQJfMgQCaHcJAQJmYwMFAmZkBQJmZQAABAJndQgFAmh3Al8xBAJlVAgFAmh3Al8yBAJndgkBAmZnAgUCZmIFAmVUAwkAAAIFAmd2BQJndgkAlAoCCQDOCAIJAM4IAgkAzggCBQJkTQUCaG0FAmdvBQJndQUCZXYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGEBCnB1dEZvckZyZWUBAmh4AwkAZgIAAAUCaHgJAAIBAgpXcm9uZyBzbHBnAwkBAiE9AgkAkAMBCAUCZGEIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCaHkJAQJmdwoJAKUIAQgFAmRhBmNhbGxlcgkA2AQBCAUCZGENdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkYQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkYQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZGEIcGF5bWVudHMAAQUCaHgHBwYAAAIABAJkTQgFAmh5Al85BAJoZQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZGEIcGF5bWVudHMAAAZhbW91bnQEAmhmCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkYQhwYXltZW50cwABBmFtb3VudAQCZmIJAQJlVQMFAmhlBQJoZgkAtgIBAAADCQAAAgUCZmIFAmZiBAJoegkBAmZjAwAAAAAAAAQCZ3UIBQJoegJfMQQCZVQIBQJoegJfMgQCZ3YJAQJmZwIFAmZiBQJlVAMJAAACBQJndgUCZ3YJAM4IAgUCZE0FAmd1CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRhAQNnZXQABAJmYgkBAmVVAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJmYgUCZmIEAmVoCQECZnQBBQJkYQQCaEEIBQJlaAJfMQQCZEwIBQJlaAJfMgQCZFcIBQJlaAJfMwQCZHEIBQJlaAJfNAQCZE0IBQJlaAJfNQQCZUkJAPwHBAUCYVUCBGJ1cm4JAMwIAgUCZFcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHEFAmRXBQNuaWwDCQAAAgUCZUkFAmVJBAJoQgkBAmZjAwkBAS0BBQJoQQkBAS0BBQJkTAAABAJndQgFAmhCAl8xBAJlVAgFAmhCAl8yBAJndgkBAmZnAgUCZmIFAmVUAwkAAAIFAmd2BQJndgkAzggCBQJkTQUCZ3UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGEBC2dldE9uZVRrblYyAgJmWAJmWQQCaHIKAAJiZQkA/AcEBQJhVQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJlAgdCb29sZWFuBQJiZQkAAgEJAKwCAgkAAwEFAmJlAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmdgMJAQEhAQkBAmJpAQgFAmRhBmNhbGxlcgMDCQECYmsABgkAAAIFAmJ6BQF0BgUCaHIHBAJnVgkAzAgCAwMJAQEhAQUCZnYGCQECZ3oBBQJkYQYJAQJiYQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRhCHBheW1lbnRzAAEGCQECYmEBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnVgUCZ1YEAmhDCQECZlcGBQJmWAUCZlkIBQJkYQhwYXltZW50cwgFAmRhBmNhbGxlcggFAmRhDG9yaWdpbkNhbGxlcggFAmRhDXRyYW5zYWN0aW9uSWQEAmRNCAUCaEMCXzEEAmdoCAUCaEMCXzIJAJQKAgUCZE0FAmdoCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRhAQpyZWZyZXNoRExwAAQCaEQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYXQAAAQCaEUDCQBnAgkAZQIFBmhlaWdodAUCaEQFAmF3BQR1bml0CQECYmEBCQC5CQIJAMwIAgkApAMBBQJhdwkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCaEUFAmhFBAJmbgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYXMCATAJAQJiYwECC2ludmFsaWQgZExwBAJoRgkBAmZjAwAAAAAAAAQCaEcIBQJoRgJfMQQCZVQIBQJoRgJfMgQCZmYDCQECIT0CBQJmbgUCZVQFAmhHCQECYmEBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZmYJAKYDAQUCZVQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGEBE2dldE9uZVRrblYyUkVBRE9OTFkCAmZYAmhIBAJkdQkA2AQBCQEFdmFsdWUBBQJiQgQCZHYJANgEAQkBBXZhbHVlAQUCYkMEAmR0CQDYBAEJAQV2YWx1ZQEFAmJBBAJjTQkAzAgCCQC2AgEJAQJjYQEFAmR1CQDMCAIJALYCAQkBAmNhAQUCZHYFA25pbAQCZVMJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmR0AhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJjbwkBAmNMAQUCY00EAmNuCQC4AgIFAmNvCQC8AgMJALYCAQUCaEgFAmNvBQJlUwQCaEkDCQAAAgUCZlgFAmR1AAADCQAAAgUCZlgFAmR2AAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCaEoJAQJlQwMFAmNNBQJoSQUCY24EAmdNCQC4AgIJAJEDAgUCY00FAmhJBQJoSgQCZ04JAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmdNBQFmBQNuaWwEAmhLCQECY0kCBQJnTgUCYmYEAmdnCAUCaEsCXzEEAmNLCAUCaEsCXzIJAJQKAgUDbmlsCQCUCgIFAmdnBQJjSwJkYQEcZ2V0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZlgCaEgEAmR1CQDYBAEJAQV2YWx1ZQEFAmJCBAJkdgkA2AQBCQEFdmFsdWUBBQJiQwQCZHQJANgEAQkBBXZhbHVlAQUCYkEEAmRBCQECY2EBBQJkdQQCZEMJAQJjYQEFAmR2BAJoTAoAAmJlCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZlgJAMwIAgUCaEgFA25pbAUDbmlsAwkAAQIFAmJlAgooSW50LCBJbnQpBQJiZQkAAgEJAKwCAgkAAwEFAmJlAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJnZwgFAmhMAl8xBAJjSwgFAmhMAl8yBAJlaAkBAmRvBAIABQJkdAUCaEgFBHRoaXMEAmRLCAUCZWgCXzEEAmRMCAUCZWgCXzIEAmhNCQBkAgUCZEsFAmRMBAJmVgMJAAACBQJoTQAAAwkAAAIFAmdnAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmdnBQJoTQUBYQUCaE0JAJQKAgUDbmlsCQCVCgMFAmdnBQJjSwUCZlYCZGEBCWdldE5vTGVzcwICaE4CaE8EAmVoCQECZnQBBQJkYQQCZEsIBQJlaAJfMQQCZEwIBQJlaAJfMgQCZFcIBQJlaAJfMwQCZHEIBQJlaAJfNAQCZE0IBQJlaAJfNQMJAGYCBQJoTgUCZEsJAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCZEsCAyA8IAkApAMBBQJoTgMJAGYCBQJoTwUCZEwJAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJkTAIDIDwgCQCkAwEFAmhPBAJmYgkBAmVVAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJmYgUCZmIEAmhQCQD8BwQFAmFVAgRidXJuCQDMCAIFAmRXBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRxBQJkVwUDbmlsAwkAAAIFAmhQBQJoUAQCaFEJAQJmYwMJAQEtAQUCZEsJAQEtAQUCZEwAAAQCZ3UIBQJoUQJfMQQCZVQIBQJoUQJfMgQCZ3YJAQJmZwIFAmZiBQJlVAMJAAACBQJndgUCZ3YJAM4IAgUCZE0FAmd1CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRhAQ11bnN0YWtlQW5kR2V0AQJjSgQCaFIDCQECIT0CCQCQAwEIBQJkYQhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCaFIFAmhSBAJoUwkBAmJGAAQCaGgFAmJBBAJoVAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaFMFAUQCCldyIHN0IGFkZHIEAmZiCQECZVUDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmZiBQJmYgQCaFUJAPwHBAUCaFQCB3Vuc3Rha2UJAMwIAgkA2AQBBQJoaAkAzAgCBQJjSgUDbmlsBQNuaWwDCQAAAgUCaFUFAmhVBAJlaAkBAmRvBAkA2AQBCAUCZGENdHJhbnNhY3Rpb25JZAkA2AQBBQJoaAUCY0oIBQJkYQZjYWxsZXIEAmRLCAUCZWgCXzEEAmRMCAUCZWgCXzIEAmR5CQENcGFyc2VJbnRWYWx1ZQEIBQJlaAJfOQQCZE0IBQJlaANfMTAEAmZ2AwkBASEBCQECYmkBCAUCZGEGY2FsbGVyAwkBAmJrAAYJAAACBQJiegUBdAcEAmhWAwUCZnYJAAIBCQCsAgICCUJsb2NrZWQ6IAkApAMBBQJkeQYDCQAAAgUCaFYFAmhWBAJoVwkA/AcEBQJhVQIEYnVybgkAzAgCBQJjSgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJoaAUCY0oFA25pbAMJAAACBQJoVwUCaFcEAmhYCQECZmMDCQEBLQEFAmRLCQEBLQEFAmRMAAAEAmd1CAUCaFgCXzEEAmVUCAUCaFgCXzIEAmd2CQECZmcCBQJmYgUCZVQDCQAAAgUCZ3YFAmd2CQDOCAIFAmRNBQJndQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkYQETdW5zdGFrZUFuZEdldE5vTGVzcwMCaFkCaFoCaE8EAmZ2AwkBASEBCQECYmkBCAUCZGEGY2FsbGVyAwkBAmJrAAYJAAACBQJiegUBdAcEAmdWCQDMCAIDCQEBIQEFAmZ2BgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRhCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ1YFAmdWBAJmYgkBAmVVAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJmYgUCZmIEAmhVCQD8BwQFAmJIAgd1bnN0YWtlCQDMCAIJANgEAQUCYkEJAMwIAgUCaFkFA25pbAUDbmlsAwkAAAIFAmhVBQJoVQQCaWEJAQJkbwQJANgEAQgFAmRhDXRyYW5zYWN0aW9uSWQJANgEAQUCYkEFAmhZCAUCZGEGY2FsbGVyBAJkSwgFAmlhAl8xBAJkTAgFAmlhAl8yBAJkTQgFAmlhA18xMAQCaWIJAMwIAgMJAGcCBQJkSwUCaFoGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaFoFA25pbAIACQDMCAIDCQBnAgUCZEwFAmhPBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaE8FA25pbAIABQNuaWwDCQAAAgUCaWIFAmliBAJoUAkA/AcEBQJhVQIEYnVybgkAzAgCBQJoWQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiQQUCaFkFA25pbAMJAAACBQJoUAUCaFAEAmljCQECZmMDCQEBLQEFAmRLCQEBLQEFAmRMAAAEAmd1CAUCaWMCXzEEAmVUCAUCaWMCXzIEAmd2CQECZmcCBQJmYgUCZVQDCQAAAgUCZ3YFAmd2CQDOCAIFAmRNBQJndQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkYQEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJoWQJmWAJmWQQCaHIKAAJiZQkA/AcEBQJhVQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJlAgdCb29sZWFuBQJiZQkAAgEJAKwCAgkAAwEFAmJlAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmdgMJAQEhAQkBAmJpAQgFAmRhBmNhbGxlcgMDCQECYmsABgkAAAIFAmJ6BQF0BgUCaHIHBAJnVgkAzAgCAwMJAQEhAQUCZnYGCQECZ3oBBQJkYQYJAQJiYQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRhCHBheW1lbnRzAAAGCQECYmEBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnVgUCZ1YEAmhTCQECYkYABAJoaAUCYkEEAmhUCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJoUwUBRAIKV3Igc3QgYWRkcgQCZHMIBQJkYQZjYWxsZXIEAmlkBQR0aGlzBAJoVQkA/AcEBQJoVAIPdW5zdGFrZUlOVEVSTkFMCQDMCAIFAmhoCQDMCAIFAmhZCQDMCAIIBQJkcwVieXRlcwkAzAgCCAUCaWQFYnl0ZXMFA25pbAUDbmlsAwkAAAIFAmhVBQJoVQQCaWUJAQJmVwYFAmZYBQJmWQkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCaGgFAmhZBQNuaWwIBQJkYQZjYWxsZXIIBQJkYQxvcmlnaW5DYWxsZXIIBQJkYQ10cmFuc2FjdGlvbklkBAJkTQgFAmllAl8xBAJnaAgFAmllAl8yCQCUCgIFAmRNBQJnaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkYQEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICaWYCaWcEAmloCQECZkIFBQJpZgUCaWcCAAIABgQCZlEIBQJpaAJfMQQCZE0IBQJpaAJfMgQCY0sIBQJpaAJfMwQCZlYIBQJpaAJfNAkAlAoCBQNuaWwJAJUKAwUCZlEFAmNLBQJmVgJkYQEhcHV0T25lVGtuVjJXaXRob3V0VGFrZUZlZVJFQURPTkxZAgJpZgJpZwQCaWkJAQJmQgUFAmlmBQJpZwIAAgAHBAJmUQgFAmlpAl8xBAJkTQgFAmlpAl8yBAJjSwgFAmlpAl8zBAJmVggFAmlpAl80CQCUCgIFA25pbAkAlQoDBQJmUQUCY0sFAmZWAmRhAQhhY3RpdmF0ZQICaWoCaWsDCQECIT0CCQClCAEIBQJkYQZjYWxsZXIJAKUIAQUCYVUJAAIBAgZkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWsABQJpagkAzAgCCQELU3RyaW5nRW50cnkCCQECYWwABQJpawkAzAgCCQELU3RyaW5nRW50cnkCCQECYW0ACQCkAwEFAWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFuAQUGaGVpZ2h0CQCkAwEFAWwFA25pbAIHc3VjY2VzcwJkYQEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYm4AAmRhARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJjYgkAlAoCBQNuaWwJAQJjYQEFAmNiAmRhARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJjdQJjdgJjegQCaWwJAQJjeQMFAmN1BQJjdgUCY3oJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJpbAAACQDMCAIJAKYDAQkAkQMCBQJpbAABCQDMCAIJAKYDAQkAkQMCBQJpbAACBQNuaWwCZGEBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAU4CaW0JAJQKAgUDbmlsCQEBTQIJAKcDAQUBTgUCaW0CZGEBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFKAUsJAJQKAgUDbmlsCQCmAwEJAQFJAgUBSgUBSwJkYQEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJjZAJjZQkAlAoCBQNuaWwJAKYDAQkBAmNjAgkApwMBBQJjZAkApwMBBQJjZQJkYQEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmRwAmNqAmRPAmRQAmRRAmRSAmluAmRTAmRUCQCUCgIFA25pbAkBAmRODQUCZHAFAmNqBQJkTwUCZFAFAmRRBQJkUgUCaW4FAmRTBQJkVAYHAAACAAJkYQEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmRwAmlvAmRyAmluBAJlaAkBAmRvBAUCZHAFAmlvBQJkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCaW4JAJQKAgUDbmlsCQCcCgoIBQJlaAJfMQgFAmVoAl8yCAUCZWgCXzMIBQJlaAJfNAgFAmVoAl81CAUCZWgCXzYIBQJlaAJfNwkApgMBCAUCZWgCXzgIBQJlaAJfOQgFAmVoA18xMAJkYQEJY2hhbmdlQW1wAAQCaXAJAPwHBAUCYVUCGmdldENoYW5nZUFtcENvbmZpZ1JFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwEAmlxBAJhUQUCaXADCQABAgUCYVECCUxpc3RbQW55XQQCaXIFAmFRCQCVCgMKAAJiZQkAkQMCBQJpcgAAAwkAAQIFAmJlAgNJbnQFAmJlCQACAQkArAICCQADAQUCYmUCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAoAAmJlCQCRAwIFAmlyAAEDCQABAgUCYmUCA0ludAUCYmUJAAIBCQCsAgIJAAMBBQJiZQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50CgACYmUJAJEDAgUCaXIAAgMJAAECBQJiZQIDSW50BQJiZQkAAgEJAKwCAgkAAwEFAmJlAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQJAQJiYQECEmludmFsaWQgZW50cnkgdHlwZQQCaXMIBQJpcQJfMQQCaXQIBQJpcQJfMgQCaXUIBQJpcQJfMwQCaXYJAQ1wYXJzZUludFZhbHVlAQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBAmFtAAQCaXcJAGQCBQJpdgUCaXQEAml4AwkAZgIAAAUCaXQDCQBmAgUCaXUFAml3BQJpdQUCaXcDCQBmAgUCaXcFAml1BQJpdQUCaXcEAml5CQELdmFsdWVPckVsc2UCCQCfCAEJAQJhcAAAAAQCaXoJAGQCBQJpeQUCaXMEAmdWCQDMCAIDCQBmAgUGaGVpZ2h0BQJpegYJAQJiYQECF3RyeSBhZ2FpbiBpbiBmZXcgYmxvY2tzCQDMCAIDCQECIT0CBQJpdgUCaXgGCQECYmEBAhZhbHJlYWR5IHJlYWNoZWQgdGFyZ2V0BQNuaWwDCQAAAgUCZ1YFAmdWCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXAABQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFtAAkApAMBBQJpeAkAzAgCCQELU3RyaW5nRW50cnkCCQECYW4BBQZoZWlnaHQJAKQDAQUCaXgFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECaUEBAmlCAAQCaUMEAmFRCQECZ3cAAwkAAQIFAmFRAgpCeXRlVmVjdG9yBAJnQQUCYVEFAmdBAwkAAQIFAmFRAgRVbml0CAUCaUEPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmFRBQJpQQMJAAECBQJhUQIFT3JkZXIEAmZqBQJhUQQCaUQJAQJibAAEAmlFAwkBAmdIAAkAlAoCBgIACQECZmkBBQJmagQCYUsIBQJpRQJfMQQCYUwIBQJpRQJfMgQCYU0JAPQDAwgFAmZqCWJvZHlCeXRlcwkAkQMCCAUCZmoGcHJvb2ZzAAAIBQJmag9zZW5kZXJQdWJsaWNLZXkEAmFOCQD0AwMIBQJmaglib2R5Qnl0ZXMJAJEDAggFAmZqBnByb29mcwABBQJpRAMDAwUCYUsFAmFNBwUCYU4HBgkBAmFKBAUCYUsFAmFMBQJhTQUCYU4DCQABAgUCYVECFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJhVgUCYVEDCQD0AwMIBQJpQQlib2R5Qnl0ZXMJAJEDAggFAmlBBnByb29mcwAABQJpQwYEAmlGCQD2AwEJAQV2YWx1ZQEIBQJhVgZzY3JpcHQEAmlHCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYVUJAQJhRgAEAmlICQDxBwEFBHRoaXMDCQAAAgUCaUcFAmlGCQECIT0CBQJpSAUCaUYHCQD0AwMIBQJpQQlib2R5Qnl0ZXMJAJEDAggFAmlBBnByb29mcwAABQJpQ1Wa7u0=", "height": 3867170, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DxBZzH4mWKw7otSJkPb1CkGPohreFeV3wCt3UUVCPn1T Next: none Diff:
OldNewDifferences
477477 let eb = bE
478478 let dy = toString(bz)
479479 let ec = valueOrErrorMessage(assetInfo(dt), "Wr lp as").quantity
480- let dA = if (dS)
481- then ca(dY)
482- else if (if (dU)
483- then (dX == dY)
484- else false)
485- then (ca(dY) - dW)
486- else if (dU)
480+ let ed = [if (if ((dP == br(dY)))
481+ then (dR == br(dZ))
482+ else false)
483+ then true
484+ else ba("Invalid amt or price asset passed.")]
485+ if ((ed == ed))
486+ then {
487+ let dA = if (dS)
487488 then ca(dY)
488- else (ca(dY) - dO)
489- let dC = if (dS)
490- then ca(dZ)
491- else if (if (dU)
492- then (dX == dZ)
493- else false)
494- then (ca(dZ) - dW)
495- else if (dU)
489+ else if (if (dU)
490+ then (dX == dY)
491+ else false)
492+ then (ca(dY) - dW)
493+ else if (dU)
494+ then ca(dY)
495+ else (ca(dY) - dO)
496+ let dC = if (dS)
496497 then ca(dZ)
497- else (ca(dZ) - dQ)
498- let ed = I(dO, ea)
499- let ee = I(dQ, eb)
500- let ef = cc(ee, ed)
501- let dB = I(dA, ea)
502- let dD = I(dC, eb)
503- let co = cL([dB, dD])
504- let eg = if ((ec == 0))
505- then {
506- let cn = cL([(dB + ed), (dD + ee)])
507- let eh = if ((cn > co))
508- then true
509- else throw("D1 should be greater than D0")
510- if ((eh == eh))
498+ else if (if (dU)
499+ then (dX == dZ)
500+ else false)
501+ then (ca(dZ) - dW)
502+ else if (dU)
503+ then ca(dZ)
504+ else (ca(dZ) - dQ)
505+ let ee = I(dO, ea)
506+ let ef = I(dQ, eb)
507+ let eg = cc(ef, ee)
508+ let dB = I(dA, ea)
509+ let dD = I(dC, eb)
510+ let co = cL([dB, dD])
511+ let eh = if ((ec == 0))
511512 then {
512- let dE = d
513- let ei = d
514- let cD = cn
515- $Tuple5(M(cD, a), M(ed, ea), M(ee, eb), cc((dD + ee), (dB + ed)), ei)
516- }
517- else throw("Strict value is not equal to itself.")
518- }
519- else {
520- let dE = cc(dD, dB)
521- let ej = fraction(X((dE - ef)), c, dE)
522- let ei = I(cj, a)
523- if (if (if (dV)
524- then (dE != d)
525- else false)
526- then (ej > ei)
527- else false)
528- then throw(((("Price slippage " + toString(ej)) + " > ") + toString(ei)))
529- else {
530- let ek = I(ec, a)
531- let el = fraction(ed, cf(dD, dB, CEILING), c, CEILING)
532- let em = fraction(ee, c, cf(dD, dB, FLOOR), CEILING)
533- let en = if ((el > ee))
534- then $Tuple2(em, ee)
535- else $Tuple2(ed, el)
536- let eo = en._1
537- let ep = en._2
538- let cn = cL([(dB + eo), (dD + ep)])
539- let eh = if ((cn > co))
513+ let cn = cL([(dB + ee), (dD + ef)])
514+ let ei = if ((cn > co))
540515 then true
541516 else throw("D1 should be greater than D0")
542- if ((eh == eh))
517+ if ((ei == ei))
543518 then {
544- let cD = fraction(ek, (cn - co), co)
545- $Tuple5(P(cD, a, FLOOR), P(eo, ea, CEILING), P(ep, eb, CEILING), dE, ei)
519+ let dE = d
520+ let ej = d
521+ let cD = cn
522+ $Tuple5(M(cD, a), M(ee, ea), M(ef, eb), cc((dD + ef), (dB + ee)), ej)
546523 }
547524 else throw("Strict value is not equal to itself.")
548525 }
526+ else {
527+ let dE = cc(dD, dB)
528+ let ek = fraction(X((dE - eg)), c, dE)
529+ let ej = I(cj, a)
530+ if (if (if (dV)
531+ then (dE != d)
532+ else false)
533+ then (ek > ej)
534+ else false)
535+ then throw(((("Price slippage " + toString(ek)) + " > ") + toString(ej)))
536+ else {
537+ let el = I(ec, a)
538+ let em = fraction(ee, cf(dD, dB, CEILING), c, CEILING)
539+ let en = fraction(ef, c, cf(dD, dB, FLOOR), CEILING)
540+ let eo = if ((em > ef))
541+ then $Tuple2(en, ef)
542+ else $Tuple2(ee, em)
543+ let ep = eo._1
544+ let eq = eo._2
545+ let cn = cL([(dB + ep), (dD + eq)])
546+ let ei = if ((cn > co))
547+ then true
548+ else throw("D1 should be greater than D0")
549+ if ((ei == ei))
550+ then {
551+ let cD = fraction(el, (cn - co), co)
552+ $Tuple5(P(cD, a, FLOOR), P(ep, ea, CEILING), P(eq, eb, CEILING), dE, ej)
553+ }
554+ else throw("Strict value is not equal to itself.")
555+ }
556+ }
557+ let er = eh._1
558+ let es = eh._2
559+ let et = eh._3
560+ let dF = M(eh._4, a)
561+ let eu = M(eh._5, a)
562+ if ((0 >= er))
563+ then throw("LP <= 0")
564+ else {
565+ let ev = if (!(dT))
566+ then 0
567+ else er
568+ let ew = (dO - es)
569+ let ex = (dQ - et)
570+ let ey = if (if (dU)
571+ then (dX == dY)
572+ else false)
573+ then $Tuple2(dW, 0)
574+ else if (if (dU)
575+ then (dX == dZ)
576+ else false)
577+ then $Tuple2(0, dW)
578+ else $Tuple2(es, et)
579+ let ez = ey._1
580+ let eA = ey._2
581+ let eB = [IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF), StringEntry(ag(ds, dp), bL(ez, eA, ev, dF, cj, eu, height, lastBlock.timestamp, ew, ex))]
582+ $Tuple13(er, ev, dF, dA, dC, ec, dt, dy, eB, ew, ex, dP, dR)
583+ }
549584 }
550- let eq = eg._1
551- let er = eg._2
552- let es = eg._3
553- let dF = M(eg._4, a)
554- let et = M(eg._5, a)
555- if ((0 >= eq))
556- then throw("LP <= 0")
557- else {
558- let eu = if (!(dT))
559- then 0
560- else eq
561- let ev = (dO - er)
562- let ew = (dQ - es)
563- let ex = if (if (dU)
564- then (dX == dY)
565- else false)
566- then $Tuple2(dW, 0)
567- else if (if (dU)
568- then (dX == dZ)
569- else false)
570- then $Tuple2(0, dW)
571- else $Tuple2(er, es)
572- let ey = ex._1
573- let ez = ex._2
574- let eA = [IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF), StringEntry(ag(ds, dp), bL(ey, ez, eu, dF, cj, et, height, lastBlock.timestamp, ev, ew))]
575- $Tuple13(eq, eu, dF, dA, dC, ec, dt, dy, eA, ev, ew, dP, dR)
576- }
585+ else throw("Strict value is not equal to itself.")
577586 }
578587
579588
580-func eB (cM,da,eC) = {
581- let eD = g
582- let eE = cM[if ((da == 0))
589+func eC (cM,da,eD) = {
590+ let eE = g
591+ let eF = cM[if ((da == 0))
583592 then 1
584593 else 0]
585- let eF = parseBigIntValue(m)
586- let aR = (parseBigIntValue(bj) * eF)
587- let aV = eE
588- let cP = (aR * eD)
589- let eG = (((((eC * eC) / (eE * eD)) * eC) * eF) / (cP * eD))
590- let eH = ((aV + ((eC * eF) / cP)) - eC)
591- func cY (cZ,eI) = {
592- let eJ = cZ
593- let eK = eJ._1
594- let dn = eJ._2
594+ let eG = parseBigIntValue(m)
595+ let aR = (parseBigIntValue(bj) * eG)
596+ let aV = eF
597+ let cP = (aR * eE)
598+ let eH = (((((eD * eD) / (eF * eE)) * eD) * eG) / (cP * eE))
599+ let eI = ((aV + ((eD * eG) / cP)) - eD)
600+ func cY (cZ,eJ) = {
601+ let eK = cZ
602+ let eL = eK._1
603+ let dn = eK._2
595604 if ((dn != unit))
596605 then cZ
597606 else {
598- let eL = (((eK * eK) + eG) / ((g * eK) + eH))
599- let eM = Y((eL - value(eK)))
600- if ((f >= eM))
601- then $Tuple2(eL, eI)
602- else $Tuple2(eL, unit)
607+ let eM = (((eL * eL) + eH) / ((g * eL) + eI))
608+ let eN = Y((eM - value(eL)))
609+ if ((f >= eN))
610+ then $Tuple2(eM, eJ)
611+ else $Tuple2(eM, unit)
603612 }
604613 }
605614
606615 let de = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
607- let eN = {
616+ let eO = {
608617 let dg = de
609618 let dh = size(dg)
610- let di = $Tuple2(eC, unit)
619+ let di = $Tuple2(eD, unit)
611620 func dj (dk,dl) = if ((dl >= dh))
612621 then dk
613622 else cY(dk, dg[dl])
618627
619628 dm(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(di, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
620629 }
621- let eK = eN._1
622- let dn = eN._2
630+ let eL = eO._1
631+ let dn = eO._2
623632 if ((dn != unit))
624- then eK
625- else throw(("Y calculation error, Y = " + toString(eK)))
633+ then eL
634+ else throw(("Y calculation error, Y = " + toString(eL)))
626635 }
627636
628637
629-func eO (eP,eQ,eR) = {
630- let eS = fraction(cL([L(eP, toBigInt(bD)), L(eQ, toBigInt(bE))]), c, eR)
631- if ((eR == e))
638+func eP (eQ,eR,eS) = {
639+ let eT = fraction(cL([L(eQ, toBigInt(bD)), L(eR, toBigInt(bE))]), c, eS)
640+ if ((eS == e))
632641 then e
633- else eS
642+ else eT
634643 }
635644
636645
637-func eT (eU,eV,eW) = {
638- let eX = (toBigInt(ca(bt(bB))) - eU)
639- let eY = (toBigInt(ca(bt(bC))) - eV)
640- let eZ = (toBigInt(value(assetInfo(bA)).quantity) - eW)
641- let fa = eO(eX, eY, eZ)
642- fa
646+func eU (eV,eW,eX) = {
647+ let eY = (toBigInt(ca(bt(bB))) - eV)
648+ let eZ = (toBigInt(ca(bt(bC))) - eW)
649+ let fa = (toBigInt(value(assetInfo(bA)).quantity) - eX)
650+ let fb = eP(eY, eZ, fa)
651+ fb
643652 }
644653
645654
646-func fb (fc,fd,eW) = {
647- let eX = (ca(bt(bB)) + fc)
648- let eY = (ca(bt(bC)) + fd)
649- let eZ = (value(assetInfo(bA)).quantity + eW)
650- let eS = eO(toBigInt(eX), toBigInt(eY), toBigInt(eZ))
651- let fe = [IntegerEntry(at, height), StringEntry(as, toString(eS))]
652- $Tuple2(fe, eS)
655+func fc (fd,fe,eX) = {
656+ let eY = (ca(bt(bB)) + fd)
657+ let eZ = (ca(bt(bC)) + fe)
658+ let fa = (value(assetInfo(bA)).quantity + eX)
659+ let eT = eP(toBigInt(eY), toBigInt(eZ), toBigInt(fa))
660+ let ff = [IntegerEntry(at, height), StringEntry(as, toString(eT))]
661+ $Tuple2(ff, eT)
653662 }
654663
655664
656-func ff (fg,eS) = if ((eS >= fg))
665+func fg (fh,eT) = if ((eT >= fh))
657666 then true
658667 else ba("updated DLp lower than current DLp")
659668
660669
661-func fh (fi) = {
662- let eX = ca(bt(bB))
663- let eY = ca(bt(bC))
664- let fj = fi.amount
665- let fk = fraction(fi.amount, fi.price, a, FLOOR)
666- let fl = if ((fi.orderType == Buy))
667- then $Tuple2(fj, -(fk))
668- else $Tuple2(-(fj), fk)
669- let fc = fl._1
670- let fd = fl._2
670+func fi (fj) = {
671+ let eY = ca(bt(bB))
672+ let eZ = ca(bt(bC))
673+ let fk = fj.amount
674+ let fl = fraction(fj.amount, fj.price, a, FLOOR)
675+ let fm = if ((fj.orderType == Buy))
676+ then $Tuple2(fk, -(fl))
677+ else $Tuple2(-(fk), fl)
678+ let fd = fm._1
679+ let fe = fm._2
671680 if (if (if (bk())
672681 then true
673682 else (bz == s))
674683 then true
675684 else (bz == t))
676685 then throw("Admin blocked")
677- else if (if ((fi.assetPair.amountAsset != bB))
686+ else if (if ((fj.assetPair.amountAsset != bB))
678687 then true
679- else (fi.assetPair.priceAsset != bC))
688+ else (fj.assetPair.priceAsset != bC))
680689 then throw("Wr assets")
681690 else {
682- let fm = parseBigIntValue(valueOrElse(getString(this, as), "0"))
683- let fn = fb(fc, fd, 0)
684- let fo = fn._1
685- let fp = fn._2
686- let fq = (fp >= fm)
687- let fr = makeString(["dLp=", toString(fm), " dLpNew=", toString(fp), " amountAssetBalance=", toString(eX), " priceAssetBalance=", toString(eY), " amountAssetBalanceDelta=", toString(fc), " priceAssetBalanceDelta=", toString(fd), " height=", toString(height)], "")
688- $Tuple2(fq, fr)
691+ let fn = parseBigIntValue(valueOrElse(getString(this, as), "0"))
692+ let fo = fc(fd, fe, 0)
693+ let fp = fo._1
694+ let fq = fo._2
695+ let fr = (fq >= fn)
696+ let fs = makeString(["dLp=", toString(fn), " dLpNew=", toString(fq), " amountAssetBalance=", toString(eY), " priceAssetBalance=", toString(eZ), " amountAssetBalanceDelta=", toString(fd), " priceAssetBalanceDelta=", toString(fe), " height=", toString(height)], "")
697+ $Tuple2(fr, fs)
689698 }
690699 }
691700
692701
693-func fs (da) = if ((size(da.payments) != 1))
702+func ft (da) = if ((size(da.payments) != 1))
694703 then throw("1 pmnt exp")
695704 else {
696- let ft = value(da.payments[0])
697- let dq = value(ft.assetId)
698- let dW = ft.amount
699- let eg = do(toBase58String(da.transactionId), toBase58String(dq), dW, da.caller)
700- let dK = eg._1
701- let dL = eg._2
702- let dy = parseIntValue(eg._9)
703- let dM = eg._10
704- let fu = if (!(bi(da.caller)))
705+ let fu = value(da.payments[0])
706+ let dq = value(fu.assetId)
707+ let dW = fu.amount
708+ let eh = do(toBase58String(da.transactionId), toBase58String(dq), dW, da.caller)
709+ let dK = eh._1
710+ let dL = eh._2
711+ let dy = parseIntValue(eh._9)
712+ let dM = eh._10
713+ let fv = if (!(bi(da.caller)))
705714 then if (bk())
706715 then true
707716 else (bz == t)
708717 else false
709- if (fu)
718+ if (fv)
710719 then throw(("Admin blocked: " + toString(dy)))
711720 else $Tuple5(dK, dL, dW, dq, dM)
712721 }
713722
714723
715-func fv (fw,ai,fx,fy,cj,dT,dU,dV,dW,dX) = {
716- let eg = dN(ai, cj, value(fx).amount, value(fx).assetId, value(fy).amount, value(fy).assetId, fw, (ai == ""), dT, dU, dV, dW, dX)
717- let dy = parseIntValue(eg._8)
718- let fz = if (!(bi(addressFromStringValue(fw))))
724+func fw (fx,ai,fy,fz,cj,dT,dU,dV,dW,dX) = {
725+ let eh = dN(ai, cj, value(fy).amount, value(fy).assetId, value(fz).amount, value(fz).assetId, fx, (ai == ""), dT, dU, dV, dW, dX)
726+ let dy = parseIntValue(eh._8)
727+ let fA = if (!(bi(addressFromStringValue(fx))))
719728 then if (if (bk())
720729 then true
721730 else (bz == t))
722731 then true
723732 else (bz == r)
724733 else false
725- if (fz)
734+ if (fA)
726735 then throw(("Blocked:" + toString(dy)))
727- else eg
736+ else eh
728737 }
729738
730739
731-func fA (fB,dq,ds,ai,fC) = {
740+func fB (fC,dq,ds,ai,fD) = {
732741 let du = toBase58String(value(bB))
733742 let dv = toBase58String(value(bC))
734743 let dt = bA
735744 let ea = bD
736745 let eb = bE
737- let eZ = toBigInt(valueOrErrorMessage(assetInfo(dt), "invalid lp asset").quantity)
738- let fD = if ((eZ > e))
746+ let fa = toBigInt(valueOrErrorMessage(assetInfo(dt), "invalid lp asset").quantity)
747+ let fE = if ((fa > e))
739748 then true
740749 else throw("initial deposit requires all coins")
741- if ((fD == fD))
750+ if ((fE == fE))
742751 then {
743752 let dA = ca(du)
744753 let dC = ca(dv)
745- let fE = if ((ai == ""))
754+ let fF = if ((ai == ""))
746755 then $Tuple2(dA, dC)
747756 else if ((dq == du))
748- then if ((fB > dA))
757+ then if ((fC > dA))
749758 then throw("invalid payment amount")
750- else $Tuple2((dA - fB), dC)
759+ else $Tuple2((dA - fC), dC)
751760 else if ((dq == dv))
752- then if ((fB > dC))
761+ then if ((fC > dC))
753762 then throw("invalid payment amount")
754- else $Tuple2(dA, (dC - fB))
763+ else $Tuple2(dA, (dC - fC))
755764 else throw("wrong pmtAssetId")
756- let fF = fE._1
757- let fG = fE._2
758- let fH = if ((dq == du))
759- then $Tuple2(fB, 0)
765+ let fG = fF._1
766+ let fH = fF._2
767+ let fI = if ((dq == du))
768+ then $Tuple2(fC, 0)
760769 else if ((dq == dv))
761- then $Tuple2(0, fB)
770+ then $Tuple2(0, fC)
762771 else throw("invalid payment")
763- let fI = fH._1
764- let fJ = fH._2
765- let fK = if (fC)
766- then $Tuple3(cI(fI, bd)._1, cI(fJ, bd)._1, cI(fB, bd)._2)
767- else $Tuple3(fI, fJ, 0)
768- let fL = fK._1
769- let fM = fK._2
770- let cK = fK._3
771- let fN = (fF + fL)
772+ let fJ = fI._1
773+ let fK = fI._2
774+ let fL = if (fD)
775+ then $Tuple3(cI(fJ, bd)._1, cI(fK, bd)._1, cI(fC, bd)._2)
776+ else $Tuple3(fJ, fK, 0)
777+ let fM = fL._1
778+ let fN = fL._2
779+ let cK = fL._3
772780 let fO = (fG + fM)
773- let co = cL([I(fF, bD), I(fG, bE)])
774- let cn = cL([I(fN, bD), I(fO, bE)])
775- let eh = if ((cn > co))
781+ let fP = (fH + fN)
782+ let co = cL([I(fG, bD), I(fH, bE)])
783+ let cn = cL([I(fO, bD), I(fP, bE)])
784+ let ei = if ((cn > co))
776785 then true
777786 else throw()
778- if ((eh == eh))
787+ if ((ei == ei))
779788 then {
780- let fP = fraction(eZ, (cn - co), co, FLOOR)
781- let dF = M(cc(I(fO, eb), I(fN, ea)), a)
782- let eA = [IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF), StringEntry(ag(ds, ai), bL(fI, fJ, toInt(fP), dF, 0, 0, height, lastBlock.timestamp, 0, 0))]
783- let fQ = fraction(fG, a, fF)
784- let fR = fraction(fB, a, (fQ + a))
785- let fS = (fB - fR)
786- let fT = fraction(eZ, toBigInt(fS), toBigInt(fG))
787- let fU = toInt(fraction((fP - fT), b, fT))
788- $Tuple4(toInt(fP), eA, cK, fU)
789+ let fQ = fraction(fa, (cn - co), co, FLOOR)
790+ let dF = M(cc(I(fP, eb), I(fO, ea)), a)
791+ let eB = [IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF), StringEntry(ag(ds, ai), bL(fJ, fK, toInt(fQ), dF, 0, 0, height, lastBlock.timestamp, 0, 0))]
792+ let fR = fraction(fH, a, fG)
793+ let fS = fraction(fC, a, (fR + a))
794+ let fT = (fC - fS)
795+ let fU = fraction(fa, toBigInt(fT), toBigInt(fH))
796+ let fV = toInt(fraction((fQ - fU), b, fU))
797+ $Tuple4(toInt(fQ), eB, cK, fV)
789798 }
790799 else throw("Strict value is not equal to itself.")
791800 }
793802 }
794803
795804
796-func fV (fW,fX,fY,fw,fZ,ga) = {
805+func fW (fX,fY,fZ,fx,ga,gb) = {
797806 let dt = toBase58String(value(bA))
798807 let du = toBase58String(value(bB))
799808 let dv = toBase58String(value(bC))
800- let gb = bD
801- let gc = bE
802- let gd = bz
803- let ds = if ((fw == bK))
804- then fZ
805- else fw
806- let ft = value(fY[0])
807- let dq = value(ft.assetId)
808- let dW = ft.amount
809- let fa = eT(e, e, e)
810- if ((fa == fa))
809+ let gc = bD
810+ let gd = bE
811+ let ge = bz
812+ let ds = if ((fx == bK))
813+ then ga
814+ else fx
815+ let fu = value(fZ[0])
816+ let dq = value(fu.assetId)
817+ let dW = fu.amount
818+ let fb = eU(e, e, e)
819+ if ((fb == fb))
811820 then {
812- let dp = toBase58String(ga)
821+ let dp = toBase58String(gb)
813822 if ((dt != toBase58String(dq)))
814823 then throw("Wrong LP")
815824 else {
816825 let dA = ca(du)
817826 let dC = ca(dv)
818- let ge = {
819- let be = invoke(this, "getOneTknV2READONLY", [fW, dW], nil)
827+ let gf = {
828+ let be = invoke(this, "getOneTknV2READONLY", [fX, dW], nil)
820829 if ($isInstanceOf(be, "(Int, Int)"))
821830 then be
822831 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
823832 }
824- if ((ge == ge))
833+ if ((gf == gf))
825834 then {
826- let cK = ge._2
827- let gf = ge._1
828- let gg = if (if ((fX > 0))
829- then (fX > gf)
835+ let cK = gf._2
836+ let gg = gf._1
837+ let gh = if (if ((fY > 0))
838+ then (fY > gg)
830839 else false)
831- then ba(makeString(["amount to receive is less than ", toString(fX)], ""))
832- else gf
833- let gh = if ((fW == du))
834- then $Tuple4(gg, 0, ((dA - gg) - cK), dC)
835- else if ((fW == dv))
836- then $Tuple4(0, gg, dA, ((dC - gg) - cK))
840+ then ba(makeString(["amount to receive is less than ", toString(fY)], ""))
841+ else gg
842+ let gi = if ((fX == du))
843+ then $Tuple4(gh, 0, ((dA - gh) - cK), dC)
844+ else if ((fX == dv))
845+ then $Tuple4(0, gh, dA, ((dC - gh) - cK))
837846 else throw("invalid out asset id")
838- let gi = gh._1
839- let gj = gh._2
840- let fN = gh._3
841- let fO = gh._4
842- let gk = cc(I(fO, gc), I(fN, gb))
843- let gl = M(gk, a)
844- let gm = if ((fW == "WAVES"))
847+ let gj = gi._1
848+ let gk = gi._2
849+ let fO = gi._3
850+ let fP = gi._4
851+ let gl = cc(I(fP, gd), I(fO, gc))
852+ let gm = M(gl, a)
853+ let gn = if ((fX == "WAVES"))
845854 then unit
846- else fromBase58String(fW)
847- let gn = if ((cK > 0))
848- then [ScriptTransfer(bm, cK, gm)]
855+ else fromBase58String(fX)
856+ let go = if ((cK > 0))
857+ then [ScriptTransfer(bm, cK, gn)]
849858 else nil
850- let dM = ([ScriptTransfer(ds, gg, gm), StringEntry(aj(toString(ds), dp), bW(gi, gj, dW, gl, height, lastBlock.timestamp)), IntegerEntry(ac(), gl), IntegerEntry(ad(height, lastBlock.timestamp), gl)] ++ gn)
859+ let dM = ([ScriptTransfer(ds, gh, gn), StringEntry(aj(toString(ds), dp), bW(gj, gk, dW, gm, height, lastBlock.timestamp)), IntegerEntry(ac(), gm), IntegerEntry(ad(height, lastBlock.timestamp), gm)] ++ go)
851860 if ((dM == dM))
852861 then {
853- let go = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
854- if ((go == go))
862+ let gp = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
863+ if ((gp == gp))
855864 then {
856- let gp = {
857- let gq = if ((this == bm))
865+ let gq = {
866+ let gr = if ((this == bm))
858867 then 0
859868 else cK
860- let gr = if ((br(fW) == bB))
869+ let gs = if ((br(fX) == bB))
861870 then true
862871 else false
863- if (gr)
864- then $Tuple2(-((gf + gq)), 0)
865- else $Tuple2(0, -((gf + gq)))
872+ if (gs)
873+ then $Tuple2(-((gg + gr)), 0)
874+ else $Tuple2(0, -((gg + gr)))
866875 }
867- let fc = gp._1
868- let fd = gp._2
869- let gs = fb(fc, fd, 0)
870- let gt = gs._1
871- let eS = gs._2
872- let gu = ff(fa, eS)
873- if ((gu == gu))
874- then $Tuple2((dM ++ gt), gg)
876+ let fd = gq._1
877+ let fe = gq._2
878+ let gt = fc(fd, fe, 0)
879+ let gu = gt._1
880+ let eT = gt._2
881+ let gv = fg(fb, eT)
882+ if ((gv == gv))
883+ then $Tuple2((dM ++ gu), gh)
875884 else throw("Strict value is not equal to itself.")
876885 }
877886 else throw("Strict value is not equal to itself.")
885894 }
886895
887896
888-func gv () = {
889- let gw = aS()
890- let aQ = getString(gw, aa())
897+func gw () = {
898+ let gx = aS()
899+ let aQ = getString(gx, aa())
891900 if ($isInstanceOf(aQ, "String"))
892901 then {
893902 let aV = aQ
899908 }
900909
901910
902-let gx = throw("Permission denied")
911+let gy = throw("Permission denied")
903912
904-func gy (da) = {
905- let aQ = gv()
913+func gz (da) = {
914+ let aQ = gw()
906915 if ($isInstanceOf(aQ, "ByteVector"))
907916 then {
908- let gz = aQ
909- (da.callerPublicKey == gz)
917+ let gA = aQ
918+ (da.callerPublicKey == gA)
910919 }
911920 else if ($isInstanceOf(aQ, "Unit"))
912921 then (da.caller == this)
914923 }
915924
916925
917-func gA (da) = {
918- let aQ = gv()
926+func gB (da) = {
927+ let aQ = gw()
919928 if ($isInstanceOf(aQ, "ByteVector"))
920929 then {
921- let gz = aQ
922- if ((da.callerPublicKey == gz))
930+ let gA = aQ
931+ if ((da.callerPublicKey == gA))
923932 then true
924- else gx
933+ else gy
925934 }
926935 else if ($isInstanceOf(aQ, "Unit"))
927936 then if ((da.caller == this))
928937 then true
929- else gx
938+ else gy
930939 else throw("Match error")
931940 }
932941
933942
934-func gB (gC,eC,gD) = {
943+func gC (gD,eD,gE) = {
935944 let bv = bn()
936945 let du = bv[x]
937946 let dv = bv[y]
938- let eD = g
939- let eF = parseBigIntValue(m)
940- let aR = (parseBigIntValue(bj) * eF)
941- let cM = if ((gC == false))
942- then [(toBigInt(ca(du)) + gD), toBigInt(ca(dv))]
943- else [(toBigInt(ca(dv)) + gD), toBigInt(ca(du))]
944- let eE = cM[0]
945- let aV = eE
946- let cP = (aR * eD)
947- let eG = (((((eC * eC) / (eE * eD)) * eC) * eF) / (cP * eD))
948- let eH = ((aV + ((eC * eF) / cP)) - eC)
949- func cY (cZ,eI) = {
950- let gE = cZ
951- let eK = gE._1
952- let dn = gE._2
947+ let eE = g
948+ let eG = parseBigIntValue(m)
949+ let aR = (parseBigIntValue(bj) * eG)
950+ let cM = if ((gD == false))
951+ then [(toBigInt(ca(du)) + gE), toBigInt(ca(dv))]
952+ else [(toBigInt(ca(dv)) + gE), toBigInt(ca(du))]
953+ let eF = cM[0]
954+ let aV = eF
955+ let cP = (aR * eE)
956+ let eH = (((((eD * eD) / (eF * eE)) * eD) * eG) / (cP * eE))
957+ let eI = ((aV + ((eD * eG) / cP)) - eD)
958+ func cY (cZ,eJ) = {
959+ let gF = cZ
960+ let eL = gF._1
961+ let dn = gF._2
953962 if ((dn != unit))
954963 then cZ
955964 else {
956- let eL = (((eK * eK) + eG) / ((g * eK) + eH))
957- let eM = Y((eL - value(eK)))
958- if ((f >= eM))
959- then $Tuple2(eL, eI)
960- else $Tuple2(eL, unit)
965+ let eM = (((eL * eL) + eH) / ((g * eL) + eI))
966+ let eN = Y((eM - value(eL)))
967+ if ((f >= eN))
968+ then $Tuple2(eM, eJ)
969+ else $Tuple2(eM, unit)
961970 }
962971 }
963972
964973 let de = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
965- let gF = {
974+ let gG = {
966975 let dg = de
967976 let dh = size(dg)
968- let di = $Tuple2(eC, unit)
977+ let di = $Tuple2(eD, unit)
969978 func dj (dk,dl) = if ((dl >= dh))
970979 then dk
971980 else cY(dk, dg[dl])
976985
977986 dm(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(di, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
978987 }
979- let eK = gF._1
980- let dn = gF._2
988+ let eL = gG._1
989+ let dn = gG._2
981990 if ((dn != unit))
982- then eK
983- else throw(("Y calculation error, Y = " + toString(eK)))
991+ then eL
992+ else throw(("Y calculation error, Y = " + toString(eL)))
984993 }
985994
986995
987-func gG () = valueOrElse(getBoolean(aU, aH(toString(this))), false)
996+func gH () = valueOrElse(getBoolean(aU, aH(toString(this))), false)
988997
989998
990999 @Callable(da)
991-func calculateAmountOutForSwapREADONLY (gH,gC,gI) = {
992- let gJ = if ((gC == false))
1000+func calculateAmountOutForSwapREADONLY (gI,gD,gJ) = {
1001+ let gK = if ((gD == false))
9931002 then {
994- let gK = aW(this, al())
995- let gD = (toBigInt(ca(aW(this, ak()))) + toBigInt(gH))
996- $Tuple2(gK, gD)
1003+ let gL = aW(this, al())
1004+ let gE = (toBigInt(ca(aW(this, ak()))) + toBigInt(gI))
1005+ $Tuple2(gL, gE)
9971006 }
9981007 else {
999- let gK = aW(this, ak())
1000- let gD = (toBigInt(ca(aW(this, al()))) + toBigInt(gH))
1001- $Tuple2(gK, gD)
1008+ let gL = aW(this, ak())
1009+ let gE = (toBigInt(ca(aW(this, al()))) + toBigInt(gI))
1010+ $Tuple2(gL, gE)
10021011 }
1003- let gK = gJ._1
1004- let gD = gJ._2
1012+ let gL = gK._1
1013+ let gE = gK._2
10051014 let bv = bn()
10061015 let du = bv[x]
10071016 let dv = bv[y]
10081017 let cM = [toBigInt(ca(du)), toBigInt(ca(dv))]
1009- let eC = cL(cM)
1010- let eK = gB(gC, eC, toBigInt(gH))
1011- let gL = ((toBigInt(ca(gK)) - eK) - toBigInt(1))
1012- let gM = max([0, toInt(gL)])
1013- let gN = if ((gC == false))
1014- then [((toBigInt(ca(du)) + toBigInt(gH)) + toBigInt(gI)), (toBigInt(ca(dv)) - gL)]
1015- else [(toBigInt(ca(du)) - gL), ((toBigInt(ca(dv)) + toBigInt(gH)) + toBigInt(gI))]
1016- let gO = cL(gN)
1017- let eh = if ((gO >= eC))
1018+ let eD = cL(cM)
1019+ let eL = gC(gD, eD, toBigInt(gI))
1020+ let gM = ((toBigInt(ca(gL)) - eL) - toBigInt(1))
1021+ let gN = max([0, toInt(gM)])
1022+ let gO = if ((gD == false))
1023+ then [((toBigInt(ca(du)) + toBigInt(gI)) + toBigInt(gJ)), (toBigInt(ca(dv)) - gM)]
1024+ else [(toBigInt(ca(du)) - gM), ((toBigInt(ca(dv)) + toBigInt(gI)) + toBigInt(gJ))]
1025+ let gP = cL(gO)
1026+ let ei = if ((gP >= eD))
10181027 then true
1019- else throw(makeString(["new D is fewer error", toString(eC), toString(gO)], "__"))
1020- if ((eh == eh))
1021- then $Tuple2(nil, gM)
1028+ else throw(makeString(["new D is fewer error", toString(eD), toString(gP)], "__"))
1029+ if ((ei == ei))
1030+ then $Tuple2(nil, gN)
10221031 else throw("Strict value is not equal to itself.")
10231032 }
10241033
10251034
10261035
10271036 @Callable(da)
1028-func calculateAmountOutForSwapAndSendTokens (gH,gC,gP,gQ,gI) = {
1029- let gR = {
1037+func calculateAmountOutForSwapAndSendTokens (gI,gD,gQ,gR,gJ) = {
1038+ let gS = {
10301039 let be = invoke(aU, "getSwapContractREADONLY", nil, nil)
10311040 if ($isInstanceOf(be, "String"))
10321041 then be
10331042 else throw(($getType(be) + " couldn't be cast to String"))
10341043 }
1035- let gS = {
1044+ let gT = {
10361045 let be = invoke(aU, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
10371046 if ($isInstanceOf(be, "Boolean"))
10381047 then be
10391048 else throw(($getType(be) + " couldn't be cast to Boolean"))
10401049 }
1041- let gT = if (!(bi(da.caller)))
1050+ let gU = if (!(bi(da.caller)))
10421051 then if (if (bk())
10431052 then true
10441053 else (bz == t))
10451054 then true
1046- else gS
1055+ else gT
10471056 else false
1048- let gU = [if (if (!(gT))
1057+ let gV = [if (if (!(gU))
10491058 then true
1050- else gy(da))
1059+ else gz(da))
10511060 then true
1052- else ba("swap operation is blocked by admin"), if ((value(da.payments[0]).amount >= gH))
1061+ else ba("swap operation is blocked by admin"), if ((value(da.payments[0]).amount >= gI))
10531062 then true
1054- else ba("Wrong amount"), if ((da.caller == addressFromStringValue(gR)))
1063+ else ba("Wrong amount"), if ((da.caller == addressFromStringValue(gS)))
10551064 then true
10561065 else ba("Permission denied")]
1057- if ((gU == gU))
1066+ if ((gV == gV))
10581067 then {
1059- let ft = value(da.payments[0])
1060- let gV = bt(ft.assetId)
1061- let gW = if ((gC == false))
1068+ let fu = value(da.payments[0])
1069+ let gW = bt(fu.assetId)
1070+ let gX = if ((gD == false))
10621071 then {
1063- let gK = aW(this, al())
1064- let gD = (ca(gV) - value(da.payments[0]).amount)
1065- $Tuple2(gK, gD)
1072+ let gL = aW(this, al())
1073+ let gE = (ca(gW) - value(da.payments[0]).amount)
1074+ $Tuple2(gL, gE)
10661075 }
10671076 else {
1068- let gK = aW(this, ak())
1069- let gD = (ca(gV) - value(da.payments[0]).amount)
1070- $Tuple2(gK, gD)
1077+ let gL = aW(this, ak())
1078+ let gE = (ca(gW) - value(da.payments[0]).amount)
1079+ $Tuple2(gL, gE)
10711080 }
1072- let gK = gW._1
1073- let gD = gW._2
1081+ let gL = gX._1
1082+ let gE = gX._2
10741083 let bv = bn()
10751084 let du = bv[x]
10761085 let dv = bv[y]
1077- let cM = if ((gC == false))
1086+ let cM = if ((gD == false))
10781087 then [(toBigInt(ca(du)) - toBigInt(value(da.payments[0]).amount)), toBigInt(ca(dv))]
10791088 else [toBigInt(ca(du)), (toBigInt(ca(dv)) - toBigInt(value(da.payments[0]).amount))]
1080- let eC = cL(cM)
1081- let eK = gB(gC, eC, toBigInt(0))
1082- let gL = ((toBigInt(ca(gK)) - eK) - toBigInt(1))
1083- let gM = max([0, toInt(gL)])
1084- let gX = if ((gM >= gP))
1089+ let eD = cL(cM)
1090+ let eL = gC(gD, eD, toBigInt(0))
1091+ let gM = ((toBigInt(ca(gL)) - eL) - toBigInt(1))
1092+ let gN = max([0, toInt(gM)])
1093+ let gY = if ((gN >= gQ))
10851094 then true
10861095 else throw("Exchange result is fewer coins than expected")
1087- if ((gX == gX))
1096+ if ((gY == gY))
10881097 then {
1089- let gN = if ((gC == false))
1090- then [(toBigInt(ca(du)) + toBigInt(gI)), (toBigInt(ca(dv)) - gL)]
1091- else [(toBigInt(ca(du)) - gL), (toBigInt(ca(dv)) + toBigInt(gI))]
1092- let gO = cL(gN)
1093- let eh = if ((gO >= eC))
1098+ let gO = if ((gD == false))
1099+ then [(toBigInt(ca(du)) + toBigInt(gJ)), (toBigInt(ca(dv)) - gM)]
1100+ else [(toBigInt(ca(du)) - gM), (toBigInt(ca(dv)) + toBigInt(gJ))]
1101+ let gP = cL(gO)
1102+ let ei = if ((gP >= eD))
10941103 then true
10951104 else throw("new D is fewer error")
1096- if ((eh == eh))
1105+ if ((ei == ei))
10971106 then {
1098- let fc = if (gC)
1099- then -(gM)
1100- else gI
1101- let fd = if (gC)
1102- then gI
1103- else -(gM)
1104- let gt = fb(fc, fd, 0)._1
1105- if ((gt == gt))
1106- then $Tuple2([ScriptTransfer(addressFromStringValue(gQ), gM, br(gK))], gM)
1107+ let fd = if (gD)
1108+ then -(gN)
1109+ else gJ
1110+ let fe = if (gD)
1111+ then gJ
1112+ else -(gN)
1113+ let gu = fc(fd, fe, 0)._1
1114+ if ((gu == gu))
1115+ then $Tuple2([ScriptTransfer(addressFromStringValue(gR), gN, br(gL))], gN)
11071116 else throw("Strict value is not equal to itself.")
11081117 }
11091118 else throw("Strict value is not equal to itself.")
11171126
11181127 @Callable(da)
11191128 func constructor (Z) = {
1120- let eG = gA(da)
1121- if ((eG == eG))
1129+ let eH = gB(da)
1130+ if ((eH == eH))
11221131 then [StringEntry(Z(), Z)]
11231132 else throw("Strict value is not equal to itself.")
11241133 }
11261135
11271136
11281137 @Callable(da)
1129-func put (gY,gZ) = {
1130- let ha = bF()
1131- let hb = valueOrErrorMessage(addressFromString(ha[D]), "Wr st addr")
1132- let hc = valueOrErrorMessage(addressFromString(ha[F]), "Wr sl addr")
1133- if ((0 > gY))
1138+func put (gZ,ha) = {
1139+ let hb = bF()
1140+ let hc = valueOrErrorMessage(addressFromString(hb[D]), "Wr st addr")
1141+ let hd = valueOrErrorMessage(addressFromString(hb[F]), "Wr sl addr")
1142+ if ((0 > gZ))
11341143 then throw("Wrong slippage")
11351144 else if ((size(da.payments) != 2))
11361145 then throw("2 pmnts expd")
11371146 else {
1138- let hd = toBigInt(value(da.payments[0]).amount)
1139- let he = toBigInt(value(da.payments[1]).amount)
1140- let eX = (toBigInt(ca(bt(bB))) - hd)
1141- if ((eX == eX))
1147+ let he = toBigInt(value(da.payments[0]).amount)
1148+ let hf = toBigInt(value(da.payments[1]).amount)
1149+ let eY = (toBigInt(ca(bt(bB))) - he)
1150+ if ((eY == eY))
11421151 then {
1143- let eY = (toBigInt(ca(bt(bC))) - he)
1144- if ((eY == eY))
1152+ let eZ = (toBigInt(ca(bt(bC))) - hf)
1153+ if ((eZ == eZ))
11451154 then {
1146- let eZ = toBigInt(value(assetInfo(bA)).quantity)
1147- if ((eZ == eZ))
1155+ let fa = toBigInt(value(assetInfo(bA)).quantity)
1156+ if ((fa == fa))
11481157 then {
1149- let fa = eT(hd, he, toBigInt(0))
1150- if ((fa == fa))
1158+ let fb = eU(he, hf, toBigInt(0))
1159+ if ((fb == fb))
11511160 then {
1152- let hf = fv(toString(da.caller), toBase58String(da.transactionId), AttachedPayment(value(da.payments[0]).assetId, value(da.payments[0]).amount), da.payments[1], gY, true, false, true, 0, "")
1153- let eu = hf._2
1154- let hg = hf._7
1155- let dM = hf._9
1156- let ev = hf._10
1157- let ew = hf._11
1158- let du = hf._12
1159- let dv = hf._13
1160- let eg = invoke(aU, "emit", [eu], nil)
1161- if ((eg == eg))
1161+ let hg = fw(toString(da.caller), toBase58String(da.transactionId), AttachedPayment(value(da.payments[0]).assetId, value(da.payments[0]).amount), da.payments[1], gZ, true, false, true, 0, "")
1162+ let ev = hg._2
1163+ let hh = hg._7
1164+ let dM = hg._9
1165+ let ew = hg._10
1166+ let ex = hg._11
1167+ let du = hg._12
1168+ let dv = hg._13
1169+ let eh = invoke(aU, "emit", [ev], nil)
1170+ if ((eh == eh))
11621171 then {
1163- let hh = {
1164- let aQ = eg
1172+ let hi = {
1173+ let aQ = eh
11651174 if ($isInstanceOf(aQ, "Address"))
11661175 then {
1167- let hi = aQ
1168- invoke(hi, "emit", [eu], nil)
1176+ let hj = aQ
1177+ invoke(hj, "emit", [ev], nil)
11691178 }
11701179 else unit
11711180 }
1172- if ((hh == hh))
1181+ if ((hi == hi))
11731182 then {
1174- let hj = if ((ev > 0))
1175- then invoke(hc, "put", nil, [AttachedPayment(du, ev)])
1183+ let hk = if ((ew > 0))
1184+ then invoke(hd, "put", nil, [AttachedPayment(du, ew)])
11761185 else nil
1177- if ((hj == hj))
1186+ if ((hk == hk))
11781187 then {
1179- let hk = if ((ew > 0))
1180- then invoke(hc, "put", nil, [AttachedPayment(dv, ew)])
1188+ let hl = if ((ex > 0))
1189+ then invoke(hd, "put", nil, [AttachedPayment(dv, ex)])
11811190 else nil
1182- if ((hk == hk))
1191+ if ((hl == hl))
11831192 then {
1184- let hl = if (gZ)
1193+ let hm = if (ha)
11851194 then {
1186- let hm = invoke(hb, "stake", nil, [AttachedPayment(hg, eu)])
1187- if ((hm == hm))
1195+ let hn = invoke(hc, "stake", nil, [AttachedPayment(hh, ev)])
1196+ if ((hn == hn))
11881197 then nil
11891198 else throw("Strict value is not equal to itself.")
11901199 }
1191- else [ScriptTransfer(da.caller, eu, hg)]
1192- let hn = fb(0, 0, 0)
1193- let gt = hn._1
1194- let eS = hn._2
1195- let ho = if ((eS >= fa))
1200+ else [ScriptTransfer(da.caller, ev, hh)]
1201+ let ho = fc(0, 0, 0)
1202+ let gu = ho._1
1203+ let eT = ho._2
1204+ let hp = if ((eT >= fb))
11961205 then true
1197- else ba(makeString(["updated DLp lower than current DLp", toString(eX), toString(eY), toString(eZ), toString(fa), toString(eS), toString(ev), toString(ew)], " "))
1198- if ((ho == ho))
1206+ else ba(makeString(["updated DLp lower than current DLp", toString(eY), toString(eZ), toString(fa), toString(fb), toString(eT), toString(ew), toString(ex)], " "))
1207+ if ((hp == hp))
11991208 then {
1200- let hp = value(assetInfo(bA)).quantity
1201- if ((hp == hp))
1202- then ((dM ++ hl) ++ gt)
1209+ let hq = value(assetInfo(bA)).quantity
1210+ if ((hq == hq))
1211+ then ((dM ++ hm) ++ gu)
12031212 else throw("Strict value is not equal to itself.")
12041213 }
12051214 else throw("Strict value is not equal to itself.")
12251234
12261235
12271236 @Callable(da)
1228-func putOneTknV2 (fX,gZ) = {
1229- let hq = {
1237+func putOneTknV2 (fY,ha) = {
1238+ let hr = {
12301239 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12311240 if ($isInstanceOf(be, "Boolean"))
12321241 then be
12331242 else throw(($getType(be) + " couldn't be cast to Boolean"))
12341243 }
1235- let fz = if (!(bi(da.caller)))
1244+ let fA = if (!(bi(da.caller)))
12361245 then if (if (if (bk())
12371246 then true
12381247 else (bz == r))
12391248 then true
12401249 else (bz == t))
12411250 then true
1242- else hq
1251+ else hr
12431252 else false
1244- let gU = [if (if (!(fz))
1253+ let gV = [if (if (!(fA))
12451254 then true
1246- else gy(da))
1255+ else gz(da))
12471256 then true
12481257 else ba("put operation is blocked by admin"), if ((size(da.payments) == 1))
12491258 then true
12501259 else ba("exactly 1 payment are expected")]
1251- if ((gU == gU))
1260+ if ((gV == gV))
12521261 then {
12531262 let du = toBase58String(value(bB))
12541263 let dv = toBase58String(value(bC))
12551264 let dt = bA
1256- let gb = bD
1257- let gc = bE
1265+ let gc = bD
1266+ let gd = bE
12581267 let ds = if ((da.caller == this))
12591268 then da.originCaller
12601269 else da.caller
1261- let ft = value(da.payments[0])
1262- let dq = toBase58String(value(ft.assetId))
1263- let dW = ft.amount
1264- let fa = if ((ft.assetId == bB))
1265- then eT(toBigInt(dW), toBigInt(0), toBigInt(0))
1266- else eT(toBigInt(0), toBigInt(dW), toBigInt(0))
1267- if ((fa == fa))
1270+ let fu = value(da.payments[0])
1271+ let dq = toBase58String(value(fu.assetId))
1272+ let dW = fu.amount
1273+ let fb = if ((fu.assetId == bB))
1274+ then eU(toBigInt(dW), toBigInt(0), toBigInt(0))
1275+ else eU(toBigInt(0), toBigInt(dW), toBigInt(0))
1276+ if ((fb == fb))
12681277 then {
1269- let hr = fA(dW, dq, toString(ds), toBase58String(da.transactionId), true)
1270- if ((hr == hr))
1278+ let hs = fB(dW, dq, toString(ds), toBase58String(da.transactionId), true)
1279+ if ((hs == hs))
12711280 then {
1272- let cK = hr._3
1273- let dM = hr._2
1274- let hs = hr._1
1275- let eu = if (if ((fX > 0))
1276- then (fX > hs)
1281+ let cK = hs._3
1282+ let dM = hs._2
1283+ let ht = hs._1
1284+ let ev = if (if ((fY > 0))
1285+ then (fY > ht)
12771286 else false)
1278- then ba(makeString(["amount to receive is less than ", toString(fX)], ""))
1279- else hs
1280- let hf = invoke(aU, "emit", [eu], nil)
1281- if ((hf == hf))
1287+ then ba(makeString(["amount to receive is less than ", toString(fY)], ""))
1288+ else ht
1289+ let hg = invoke(aU, "emit", [ev], nil)
1290+ if ((hg == hg))
12821291 then {
1283- let hh = {
1284- let aQ = hf
1292+ let hi = {
1293+ let aQ = hg
12851294 if ($isInstanceOf(aQ, "Address"))
12861295 then {
1287- let hi = aQ
1288- invoke(hi, "emit", [eu], nil)
1296+ let hj = aQ
1297+ invoke(hj, "emit", [ev], nil)
12891298 }
12901299 else unit
12911300 }
1292- if ((hh == hh))
1301+ if ((hi == hi))
12931302 then {
1294- let hl = if (gZ)
1303+ let hm = if (ha)
12951304 then {
1296- let hm = invoke(bH, "stakeFor", [toString(da.caller)], [AttachedPayment(dt, eu)])
1297- if ((hm == hm))
1305+ let hn = invoke(bH, "stakeFor", [toString(da.caller)], [AttachedPayment(dt, ev)])
1306+ if ((hn == hn))
12981307 then nil
12991308 else throw("Strict value is not equal to itself.")
13001309 }
1301- else [ScriptTransfer(da.caller, eu, dt)]
1302- let gn = if ((cK > 0))
1310+ else [ScriptTransfer(da.caller, ev, dt)]
1311+ let go = if ((cK > 0))
13031312 then [ScriptTransfer(bm, cK, fromBase58String(dq))]
13041313 else nil
1305- let ht = if ((this == bm))
1314+ let hu = if ((this == bm))
13061315 then $Tuple2(0, 0)
13071316 else {
1308- let hu = if ((ft.assetId == bB))
1317+ let hv = if ((fu.assetId == bB))
13091318 then true
13101319 else false
1311- if (hu)
1320+ if (hv)
13121321 then $Tuple2(-(cK), 0)
13131322 else $Tuple2(0, -(cK))
13141323 }
1315- let fc = ht._1
1316- let fd = ht._2
1317- let hv = fb(fc, fd, 0)
1318- let gt = hv._1
1319- let eS = hv._2
1320- let gu = ff(fa, eS)
1321- if ((gu == gu))
1322- then $Tuple2((((dM ++ hl) ++ gn) ++ gt), eu)
1324+ let fd = hu._1
1325+ let fe = hu._2
1326+ let hw = fc(fd, fe, 0)
1327+ let gu = hw._1
1328+ let eT = hw._2
1329+ let gv = fg(fb, eT)
1330+ if ((gv == gv))
1331+ then $Tuple2((((dM ++ hm) ++ go) ++ gu), ev)
13231332 else throw("Strict value is not equal to itself.")
13241333 }
13251334 else throw("Strict value is not equal to itself.")
13361345
13371346
13381347 @Callable(da)
1339-func putForFree (hw) = if ((0 > hw))
1348+func putForFree (hx) = if ((0 > hx))
13401349 then throw("Wrong slpg")
13411350 else if ((size(da.payments) != 2))
13421351 then throw("2 pmnts expd")
13431352 else {
1344- let hx = fv(toString(da.caller), toBase58String(da.transactionId), AttachedPayment(value(da.payments[0]).assetId, value(da.payments[0]).amount), da.payments[1], hw, false, false, true, 0, "")
1345- let dM = hx._9
1346- let hd = toBigInt(value(da.payments[0]).amount)
1347- let he = toBigInt(value(da.payments[1]).amount)
1348- let fa = eT(hd, he, toBigInt(0))
1349- if ((fa == fa))
1353+ let hy = fw(toString(da.caller), toBase58String(da.transactionId), AttachedPayment(value(da.payments[0]).assetId, value(da.payments[0]).amount), da.payments[1], hx, false, false, true, 0, "")
1354+ let dM = hy._9
1355+ let he = toBigInt(value(da.payments[0]).amount)
1356+ let hf = toBigInt(value(da.payments[1]).amount)
1357+ let fb = eU(he, hf, toBigInt(0))
1358+ if ((fb == fb))
13501359 then {
1351- let hy = fb(0, 0, 0)
1352- let gt = hy._1
1353- let eS = hy._2
1354- let gu = ff(fa, eS)
1355- if ((gu == gu))
1356- then (dM ++ gt)
1360+ let hz = fc(0, 0, 0)
1361+ let gu = hz._1
1362+ let eT = hz._2
1363+ let gv = fg(fb, eT)
1364+ if ((gv == gv))
1365+ then (dM ++ gu)
13571366 else throw("Strict value is not equal to itself.")
13581367 }
13591368 else throw("Strict value is not equal to itself.")
13631372
13641373 @Callable(da)
13651374 func get () = {
1366- let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1367- if ((fa == fa))
1375+ let fb = eU(toBigInt(0), toBigInt(0), toBigInt(0))
1376+ if ((fb == fb))
13681377 then {
1369- let eg = fs(da)
1370- let hz = eg._1
1371- let dL = eg._2
1372- let dW = eg._3
1373- let dq = eg._4
1374- let dM = eg._5
1375- let eH = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
1376- if ((eH == eH))
1378+ let eh = ft(da)
1379+ let hA = eh._1
1380+ let dL = eh._2
1381+ let dW = eh._3
1382+ let dq = eh._4
1383+ let dM = eh._5
1384+ let eI = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
1385+ if ((eI == eI))
13771386 then {
1378- let hA = fb(-(hz), -(dL), 0)
1379- let gt = hA._1
1380- let eS = hA._2
1381- let gu = ff(fa, eS)
1382- if ((gu == gu))
1383- then (dM ++ gt)
1387+ let hB = fc(-(hA), -(dL), 0)
1388+ let gu = hB._1
1389+ let eT = hB._2
1390+ let gv = fg(fb, eT)
1391+ if ((gv == gv))
1392+ then (dM ++ gu)
13841393 else throw("Strict value is not equal to itself.")
13851394 }
13861395 else throw("Strict value is not equal to itself.")
13911400
13921401
13931402 @Callable(da)
1394-func getOneTknV2 (fW,fX) = {
1395- let hq = {
1403+func getOneTknV2 (fX,fY) = {
1404+ let hr = {
13961405 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13971406 if ($isInstanceOf(be, "Boolean"))
13981407 then be
13991408 else throw(($getType(be) + " couldn't be cast to Boolean"))
14001409 }
1401- let fu = if (!(bi(da.caller)))
1410+ let fv = if (!(bi(da.caller)))
14021411 then if (if (bk())
14031412 then true
14041413 else (bz == t))
14051414 then true
1406- else hq
1415+ else hr
14071416 else false
1408- let gU = [if (if (!(fu))
1417+ let gV = [if (if (!(fv))
14091418 then true
1410- else gy(da))
1419+ else gz(da))
14111420 then true
14121421 else ba("get operation is blocked by admin"), if ((size(da.payments) == 1))
14131422 then true
14141423 else ba("exactly 1 payment are expected")]
1415- if ((gU == gU))
1424+ if ((gV == gV))
14161425 then {
1417- let hB = fV(fW, fX, da.payments, da.caller, da.originCaller, da.transactionId)
1418- let dM = hB._1
1419- let gg = hB._2
1420- $Tuple2(dM, gg)
1426+ let hC = fW(fX, fY, da.payments, da.caller, da.originCaller, da.transactionId)
1427+ let dM = hC._1
1428+ let gh = hC._2
1429+ $Tuple2(dM, gh)
14211430 }
14221431 else throw("Strict value is not equal to itself.")
14231432 }
14261435
14271436 @Callable(da)
14281437 func refreshDLp () = {
1429- let hC = valueOrElse(getInteger(at), 0)
1430- let hD = if (((height - hC) >= aw))
1438+ let hD = valueOrElse(getInteger(at), 0)
1439+ let hE = if (((height - hD) >= aw))
14311440 then unit
14321441 else ba(makeString([toString(aw), " blocks have not passed since the previous call"], ""))
1433- if ((hD == hD))
1442+ if ((hE == hE))
14341443 then {
1435- let fm = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), bc("invalid dLp"))
1436- let hE = fb(0, 0, 0)
1437- let hF = hE._1
1438- let eS = hE._2
1439- let fe = if ((fm != eS))
1440- then hF
1444+ let fn = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), bc("invalid dLp"))
1445+ let hF = fc(0, 0, 0)
1446+ let hG = hF._1
1447+ let eT = hF._2
1448+ let ff = if ((fn != eT))
1449+ then hG
14411450 else ba("nothing to refresh")
1442- $Tuple2(fe, toString(eS))
1451+ $Tuple2(ff, toString(eT))
14431452 }
14441453 else throw("Strict value is not equal to itself.")
14451454 }
14471456
14481457
14491458 @Callable(da)
1450-func getOneTknV2READONLY (fW,hG) = {
1459+func getOneTknV2READONLY (fX,hH) = {
14511460 let du = toBase58String(value(bB))
14521461 let dv = toBase58String(value(bC))
14531462 let dt = toBase58String(value(bA))
14541463 let cM = [toBigInt(ca(du)), toBigInt(ca(dv))]
1455- let eR = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dt)), "invalid lp asset").quantity)
1464+ let eS = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dt)), "invalid lp asset").quantity)
14561465 let co = cL(cM)
1457- let cn = (co - fraction(toBigInt(hG), co, eR))
1458- let hH = if ((fW == du))
1466+ let cn = (co - fraction(toBigInt(hH), co, eS))
1467+ let hI = if ((fX == du))
14591468 then 0
1460- else if ((fW == dv))
1469+ else if ((fX == dv))
14611470 then 1
14621471 else throw("invalid out asset id")
1463- let hI = eB(cM, hH, cn)
1464- let gL = (cM[hH] - hI)
1465- let gM = max([0, toInt((gL - f))])
1466- let hJ = cI(gM, bf)
1467- let gf = hJ._1
1468- let cK = hJ._2
1469- $Tuple2(nil, $Tuple2(gf, cK))
1472+ let hJ = eC(cM, hI, cn)
1473+ let gM = (cM[hI] - hJ)
1474+ let gN = max([0, toInt((gM - f))])
1475+ let hK = cI(gN, bf)
1476+ let gg = hK._1
1477+ let cK = hK._2
1478+ $Tuple2(nil, $Tuple2(gg, cK))
14701479 }
14711480
14721481
14731482
14741483 @Callable(da)
1475-func getOneTknV2WithBonusREADONLY (fW,hG) = {
1484+func getOneTknV2WithBonusREADONLY (fX,hH) = {
14761485 let du = toBase58String(value(bB))
14771486 let dv = toBase58String(value(bC))
14781487 let dt = toBase58String(value(bA))
14791488 let dA = ca(du)
14801489 let dC = ca(dv)
1481- let hK = {
1482- let be = invoke(this, "getOneTknV2READONLY", [fW, hG], nil)
1490+ let hL = {
1491+ let be = invoke(this, "getOneTknV2READONLY", [fX, hH], nil)
14831492 if ($isInstanceOf(be, "(Int, Int)"))
14841493 then be
14851494 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
14861495 }
1487- let gf = hK._1
1488- let cK = hK._2
1489- let eg = do("", dt, hG, this)
1490- let dK = eg._1
1491- let dL = eg._2
1492- let hL = (dK + dL)
1493- let fU = if ((hL == 0))
1494- then if ((gf == 0))
1496+ let gg = hL._1
1497+ let cK = hL._2
1498+ let eh = do("", dt, hH, this)
1499+ let dK = eh._1
1500+ let dL = eh._2
1501+ let hM = (dK + dL)
1502+ let fV = if ((hM == 0))
1503+ then if ((gg == 0))
14951504 then 0
14961505 else throw("bonus calculation error")
1497- else fraction((gf - hL), a, hL)
1498- $Tuple2(nil, $Tuple3(gf, cK, fU))
1506+ else fraction((gg - hM), a, hM)
1507+ $Tuple2(nil, $Tuple3(gg, cK, fV))
14991508 }
15001509
15011510
15021511
15031512 @Callable(da)
1504-func getNoLess (hM,hN) = {
1505- let eg = fs(da)
1506- let dK = eg._1
1507- let dL = eg._2
1508- let dW = eg._3
1509- let dq = eg._4
1510- let dM = eg._5
1511- if ((hM > dK))
1512- then throw(((("Failed: " + toString(dK)) + " < ") + toString(hM)))
1513- else if ((hN > dL))
1514- then throw(((("Failed: " + toString(dL)) + " < ") + toString(hN)))
1513+func getNoLess (hN,hO) = {
1514+ let eh = ft(da)
1515+ let dK = eh._1
1516+ let dL = eh._2
1517+ let dW = eh._3
1518+ let dq = eh._4
1519+ let dM = eh._5
1520+ if ((hN > dK))
1521+ then throw(((("Failed: " + toString(dK)) + " < ") + toString(hN)))
1522+ else if ((hO > dL))
1523+ then throw(((("Failed: " + toString(dL)) + " < ") + toString(hO)))
15151524 else {
1516- let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1517- if ((fa == fa))
1525+ let fb = eU(toBigInt(0), toBigInt(0), toBigInt(0))
1526+ if ((fb == fb))
15181527 then {
1519- let hO = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
1520- if ((hO == hO))
1528+ let hP = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
1529+ if ((hP == hP))
15211530 then {
1522- let hP = fb(-(dK), -(dL), 0)
1523- let gt = hP._1
1524- let eS = hP._2
1525- let gu = ff(fa, eS)
1526- if ((gu == gu))
1527- then (dM ++ gt)
1531+ let hQ = fc(-(dK), -(dL), 0)
1532+ let gu = hQ._1
1533+ let eT = hQ._2
1534+ let gv = fg(fb, eT)
1535+ if ((gv == gv))
1536+ then (dM ++ gu)
15281537 else throw("Strict value is not equal to itself.")
15291538 }
15301539 else throw("Strict value is not equal to itself.")
15371546
15381547 @Callable(da)
15391548 func unstakeAndGet (cJ) = {
1540- let hQ = if ((size(da.payments) != 0))
1549+ let hR = if ((size(da.payments) != 0))
15411550 then throw("No pmnts expd")
15421551 else true
1543- if ((hQ == hQ))
1552+ if ((hR == hR))
15441553 then {
1545- let hR = bF()
1546- let hg = bA
1547- let hS = valueOrErrorMessage(addressFromString(hR[D]), "Wr st addr")
1548- let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1549- if ((fa == fa))
1554+ let hS = bF()
1555+ let hh = bA
1556+ let hT = valueOrErrorMessage(addressFromString(hS[D]), "Wr st addr")
1557+ let fb = eU(toBigInt(0), toBigInt(0), toBigInt(0))
1558+ if ((fb == fb))
15501559 then {
1551- let hT = invoke(hS, "unstake", [toBase58String(hg), cJ], nil)
1552- if ((hT == hT))
1560+ let hU = invoke(hT, "unstake", [toBase58String(hh), cJ], nil)
1561+ if ((hU == hU))
15531562 then {
1554- let eg = do(toBase58String(da.transactionId), toBase58String(hg), cJ, da.caller)
1555- let dK = eg._1
1556- let dL = eg._2
1557- let dy = parseIntValue(eg._9)
1558- let dM = eg._10
1559- let fu = if (!(bi(da.caller)))
1563+ let eh = do(toBase58String(da.transactionId), toBase58String(hh), cJ, da.caller)
1564+ let dK = eh._1
1565+ let dL = eh._2
1566+ let dy = parseIntValue(eh._9)
1567+ let dM = eh._10
1568+ let fv = if (!(bi(da.caller)))
15601569 then if (bk())
15611570 then true
15621571 else (bz == t)
15631572 else false
1564- let hU = if (fu)
1573+ let hV = if (fv)
15651574 then throw(("Blocked: " + toString(dy)))
15661575 else true
1567- if ((hU == hU))
1576+ if ((hV == hV))
15681577 then {
1569- let hV = invoke(aU, "burn", [cJ], [AttachedPayment(hg, cJ)])
1570- if ((hV == hV))
1578+ let hW = invoke(aU, "burn", [cJ], [AttachedPayment(hh, cJ)])
1579+ if ((hW == hW))
15711580 then {
1572- let hW = fb(-(dK), -(dL), 0)
1573- let gt = hW._1
1574- let eS = hW._2
1575- let gu = ff(fa, eS)
1576- if ((gu == gu))
1577- then (dM ++ gt)
1581+ let hX = fc(-(dK), -(dL), 0)
1582+ let gu = hX._1
1583+ let eT = hX._2
1584+ let gv = fg(fb, eT)
1585+ if ((gv == gv))
1586+ then (dM ++ gu)
15781587 else throw("Strict value is not equal to itself.")
15791588 }
15801589 else throw("Strict value is not equal to itself.")
15911600
15921601
15931602 @Callable(da)
1594-func unstakeAndGetNoLess (hX,hY,hN) = {
1595- let fu = if (!(bi(da.caller)))
1603+func unstakeAndGetNoLess (hY,hZ,hO) = {
1604+ let fv = if (!(bi(da.caller)))
15961605 then if (bk())
15971606 then true
15981607 else (bz == t)
15991608 else false
1600- let gU = [if (!(fu))
1609+ let gV = [if (!(fv))
16011610 then true
16021611 else throw("get operation is blocked by admin"), if ((size(da.payments) == 0))
16031612 then true
16041613 else throw("no payments are expected")]
1605- if ((gU == gU))
1614+ if ((gV == gV))
16061615 then {
1607- let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1608- if ((fa == fa))
1616+ let fb = eU(toBigInt(0), toBigInt(0), toBigInt(0))
1617+ if ((fb == fb))
16091618 then {
1610- let hT = invoke(bH, "unstake", [toBase58String(bA), hX], nil)
1611- if ((hT == hT))
1619+ let hU = invoke(bH, "unstake", [toBase58String(bA), hY], nil)
1620+ if ((hU == hU))
16121621 then {
1613- let hZ = do(toBase58String(da.transactionId), toBase58String(bA), hX, da.caller)
1614- let dK = hZ._1
1615- let dL = hZ._2
1616- let dM = hZ._10
1617- let ia = [if ((dK >= hY))
1622+ let ia = do(toBase58String(da.transactionId), toBase58String(bA), hY, da.caller)
1623+ let dK = ia._1
1624+ let dL = ia._2
1625+ let dM = ia._10
1626+ let ib = [if ((dK >= hZ))
16181627 then true
1619- else throw(makeString(["amount asset amount to receive is less than ", toString(hY)], "")), if ((dL >= hN))
1628+ else throw(makeString(["amount asset amount to receive is less than ", toString(hZ)], "")), if ((dL >= hO))
16201629 then true
1621- else throw(makeString(["price asset amount to receive is less than ", toString(hN)], ""))]
1622- if ((ia == ia))
1630+ else throw(makeString(["price asset amount to receive is less than ", toString(hO)], ""))]
1631+ if ((ib == ib))
16231632 then {
1624- let hO = invoke(aU, "burn", [hX], [AttachedPayment(bA, hX)])
1625- if ((hO == hO))
1633+ let hP = invoke(aU, "burn", [hY], [AttachedPayment(bA, hY)])
1634+ if ((hP == hP))
16261635 then {
1627- let ib = fb(-(dK), -(dL), 0)
1628- let gt = ib._1
1629- let eS = ib._2
1630- let gu = ff(fa, eS)
1631- if ((gu == gu))
1632- then (dM ++ gt)
1636+ let ic = fc(-(dK), -(dL), 0)
1637+ let gu = ic._1
1638+ let eT = ic._2
1639+ let gv = fg(fb, eT)
1640+ if ((gv == gv))
1641+ then (dM ++ gu)
16331642 else throw("Strict value is not equal to itself.")
16341643 }
16351644 else throw("Strict value is not equal to itself.")
16461655
16471656
16481657 @Callable(da)
1649-func unstakeAndGetOneTknV2 (hX,fW,fX) = {
1650- let hq = {
1658+func unstakeAndGetOneTknV2 (hY,fX,fY) = {
1659+ let hr = {
16511660 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
16521661 if ($isInstanceOf(be, "Boolean"))
16531662 then be
16541663 else throw(($getType(be) + " couldn't be cast to Boolean"))
16551664 }
1656- let fu = if (!(bi(da.caller)))
1665+ let fv = if (!(bi(da.caller)))
16571666 then if (if (bk())
16581667 then true
16591668 else (bz == t))
16601669 then true
1661- else hq
1670+ else hr
16621671 else false
1663- let gU = [if (if (!(fu))
1672+ let gV = [if (if (!(fv))
16641673 then true
1665- else gy(da))
1674+ else gz(da))
16661675 then true
16671676 else ba("get operation is blocked by admin"), if ((size(da.payments) == 0))
16681677 then true
16691678 else ba("no payments are expected")]
1670- if ((gU == gU))
1679+ if ((gV == gV))
16711680 then {
1672- let hR = bF()
1673- let hg = bA
1674- let hS = valueOrErrorMessage(addressFromString(hR[D]), "Wr st addr")
1681+ let hS = bF()
1682+ let hh = bA
1683+ let hT = valueOrErrorMessage(addressFromString(hS[D]), "Wr st addr")
16751684 let ds = da.caller
1676- let ic = this
1677- let hT = invoke(hS, "unstakeINTERNAL", [hg, hX, ds.bytes, ic.bytes], nil)
1678- if ((hT == hT))
1685+ let id = this
1686+ let hU = invoke(hT, "unstakeINTERNAL", [hh, hY, ds.bytes, id.bytes], nil)
1687+ if ((hU == hU))
16791688 then {
1680- let id = fV(fW, fX, [AttachedPayment(hg, hX)], da.caller, da.originCaller, da.transactionId)
1681- let dM = id._1
1682- let gg = id._2
1683- $Tuple2(dM, gg)
1689+ let ie = fW(fX, fY, [AttachedPayment(hh, hY)], da.caller, da.originCaller, da.transactionId)
1690+ let dM = ie._1
1691+ let gh = ie._2
1692+ $Tuple2(dM, gh)
16841693 }
16851694 else throw("Strict value is not equal to itself.")
16861695 }
16901699
16911700
16921701 @Callable(da)
1693-func putOneTknV2WithBonusREADONLY (ie,if) = {
1694- let ig = fA(ie, if, "", "", true)
1695- let fP = ig._1
1696- let dM = ig._2
1697- let cK = ig._3
1698- let fU = ig._4
1699- $Tuple2(nil, $Tuple3(fP, cK, fU))
1702+func putOneTknV2WithBonusREADONLY (if,ig) = {
1703+ let ih = fB(if, ig, "", "", true)
1704+ let fQ = ih._1
1705+ let dM = ih._2
1706+ let cK = ih._3
1707+ let fV = ih._4
1708+ $Tuple2(nil, $Tuple3(fQ, cK, fV))
17001709 }
17011710
17021711
17031712
17041713 @Callable(da)
1705-func putOneTknV2WithoutTakeFeeREADONLY (ie,if) = {
1706- let ih = fA(ie, if, "", "", false)
1707- let fP = ih._1
1708- let dM = ih._2
1709- let cK = ih._3
1710- let fU = ih._4
1711- $Tuple2(nil, $Tuple3(fP, cK, fU))
1714+func putOneTknV2WithoutTakeFeeREADONLY (if,ig) = {
1715+ let ii = fB(if, ig, "", "", false)
1716+ let fQ = ii._1
1717+ let dM = ii._2
1718+ let cK = ii._3
1719+ let fV = ii._4
1720+ $Tuple2(nil, $Tuple3(fQ, cK, fV))
17121721 }
17131722
17141723
17151724
17161725 @Callable(da)
1717-func activate (ii,ij) = if ((toString(da.caller) != toString(aU)))
1726+func activate (ij,ik) = if ((toString(da.caller) != toString(aU)))
17181727 then throw("denied")
1719- else $Tuple2([StringEntry(ak(), ii), StringEntry(al(), ij), StringEntry(am(), toString(l)), StringEntry(an(height), toString(l))], "success")
1728+ else $Tuple2([StringEntry(ak(), ij), StringEntry(al(), ik), StringEntry(am(), toString(l)), StringEntry(an(height), toString(l))], "success")
17201729
17211730
17221731
17321741
17331742 @Callable(da)
17341743 func calcPricesWrapperREADONLY (cu,cv,cz) = {
1735- let ik = cy(cu, cv, cz)
1736- $Tuple2(nil, [toString(ik[0]), toString(ik[1]), toString(ik[2])])
1744+ let il = cy(cu, cv, cz)
1745+ $Tuple2(nil, [toString(il[0]), toString(il[1]), toString(il[2])])
17371746 }
17381747
17391748
17401749
17411750 @Callable(da)
1742-func fromX18WrapperREADONLY (N,il) = $Tuple2(nil, M(parseBigIntValue(N), il))
1751+func fromX18WrapperREADONLY (N,im) = $Tuple2(nil, M(parseBigIntValue(N), im))
17431752
17441753
17451754
17541763
17551764
17561765 @Callable(da)
1757-func estimatePutOperationWrapperREADONLY (dp,cj,dO,dP,dQ,dR,im,dS,dT) = $Tuple2(nil, dN(dp, cj, dO, dP, dQ, dR, im, dS, dT, true, false, 0, ""))
1766+func estimatePutOperationWrapperREADONLY (dp,cj,dO,dP,dQ,dR,in,dS,dT) = $Tuple2(nil, dN(dp, cj, dO, dP, dQ, dR, in, dS, dT, true, false, 0, ""))
17581767
17591768
17601769
17611770 @Callable(da)
1762-func estimateGetOperationWrapperREADONLY (dp,in,dr,im) = {
1763- let eg = do(dp, in, dr, addressFromStringValue(im))
1764- $Tuple2(nil, $Tuple10(eg._1, eg._2, eg._3, eg._4, eg._5, eg._6, eg._7, toString(eg._8), eg._9, eg._10))
1771+func estimateGetOperationWrapperREADONLY (dp,io,dr,in) = {
1772+ let eh = do(dp, io, dr, addressFromStringValue(in))
1773+ $Tuple2(nil, $Tuple10(eh._1, eh._2, eh._3, eh._4, eh._5, eh._6, eh._7, toString(eh._8), eh._9, eh._10))
17651774 }
17661775
17671776
17681777
17691778 @Callable(da)
17701779 func changeAmp () = {
1771- let io = invoke(aU, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1772- let ip = {
1773- let aQ = io
1780+ let ip = invoke(aU, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1781+ let iq = {
1782+ let aQ = ip
17741783 if ($isInstanceOf(aQ, "List[Any]"))
17751784 then {
1776- let iq = aQ
1785+ let ir = aQ
17771786 $Tuple3({
1778- let be = iq[0]
1787+ let be = ir[0]
17791788 if ($isInstanceOf(be, "Int"))
17801789 then be
17811790 else throw(($getType(be) + " couldn't be cast to Int"))
17821791 }, {
1783- let be = iq[1]
1792+ let be = ir[1]
17841793 if ($isInstanceOf(be, "Int"))
17851794 then be
17861795 else throw(($getType(be) + " couldn't be cast to Int"))
17871796 }, {
1788- let be = iq[2]
1797+ let be = ir[2]
17891798 if ($isInstanceOf(be, "Int"))
17901799 then be
17911800 else throw(($getType(be) + " couldn't be cast to Int"))
17931802 }
17941803 else ba("invalid entry type")
17951804 }
1796- let ir = ip._1
1797- let is = ip._2
1798- let it = ip._3
1799- let iu = parseIntValue(getStringValue(am()))
1800- let iv = (iu + is)
1801- let iw = if ((0 > is))
1802- then if ((it > iv))
1803- then it
1804- else iv
1805- else if ((iv > it))
1806- then it
1807- else iv
1808- let ix = valueOrElse(getInteger(ap()), 0)
1809- let iy = (ix + ir)
1810- let gU = [if ((height > iy))
1805+ let is = iq._1
1806+ let it = iq._2
1807+ let iu = iq._3
1808+ let iv = parseIntValue(getStringValue(am()))
1809+ let iw = (iv + it)
1810+ let ix = if ((0 > it))
1811+ then if ((iu > iw))
1812+ then iu
1813+ else iw
1814+ else if ((iw > iu))
1815+ then iu
1816+ else iw
1817+ let iy = valueOrElse(getInteger(ap()), 0)
1818+ let iz = (iy + is)
1819+ let gV = [if ((height > iz))
18111820 then true
1812- else ba("try again in few blocks"), if ((iu != iw))
1821+ else ba("try again in few blocks"), if ((iv != ix))
18131822 then true
18141823 else ba("already reached target")]
1815- if ((gU == gU))
1816- then [IntegerEntry(ap(), height), StringEntry(am(), toString(iw)), StringEntry(an(height), toString(iw))]
1824+ if ((gV == gV))
1825+ then [IntegerEntry(ap(), height), StringEntry(am(), toString(ix)), StringEntry(an(height), toString(ix))]
18171826 else throw("Strict value is not equal to itself.")
18181827 }
18191828
18201829
1821-@Verifier(iz)
1822-func iA () = {
1823- let iB = {
1824- let aQ = gv()
1830+@Verifier(iA)
1831+func iB () = {
1832+ let iC = {
1833+ let aQ = gw()
18251834 if ($isInstanceOf(aQ, "ByteVector"))
18261835 then {
1827- let gz = aQ
1828- gz
1836+ let gA = aQ
1837+ gA
18291838 }
18301839 else if ($isInstanceOf(aQ, "Unit"))
1831- then iz.senderPublicKey
1840+ then iA.senderPublicKey
18321841 else throw("Match error")
18331842 }
1834- let aQ = iz
1843+ let aQ = iA
18351844 if ($isInstanceOf(aQ, "Order"))
18361845 then {
1837- let fi = aQ
1838- let iC = bl()
1839- let iD = if (gG())
1846+ let fj = aQ
1847+ let iD = bl()
1848+ let iE = if (gH())
18401849 then $Tuple2(true, "")
1841- else fh(fi)
1842- let aK = iD._1
1843- let aL = iD._2
1844- let aM = sigVerify(fi.bodyBytes, fi.proofs[0], fi.senderPublicKey)
1845- let aN = sigVerify(fi.bodyBytes, fi.proofs[1], iC)
1850+ else fi(fj)
1851+ let aK = iE._1
1852+ let aL = iE._2
1853+ let aM = sigVerify(fj.bodyBytes, fj.proofs[0], fj.senderPublicKey)
1854+ let aN = sigVerify(fj.bodyBytes, fj.proofs[1], iD)
18461855 if (if (if (aK)
18471856 then aM
18481857 else false)
18541863 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18551864 then {
18561865 let aV = aQ
1857- if (sigVerify(iz.bodyBytes, iz.proofs[0], iB))
1866+ if (sigVerify(iA.bodyBytes, iA.proofs[0], iC))
18581867 then true
18591868 else {
1860- let iE = blake2b256(value(aV.script))
1861- let iF = fromBase64String(value(getString(aU, aF())))
1862- let iG = scriptHash(this)
1863- if ((iF == iE))
1864- then (iG != iE)
1869+ let iF = blake2b256(value(aV.script))
1870+ let iG = fromBase64String(value(getString(aU, aF())))
1871+ let iH = scriptHash(this)
1872+ if ((iG == iF))
1873+ then (iH != iF)
18651874 else false
18661875 }
18671876 }
1868- else sigVerify(iz.bodyBytes, iz.proofs[0], iB)
1877+ else sigVerify(iA.bodyBytes, iA.proofs[0], iC)
18691878 }
18701879
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
1818 let h = toBigInt(3)
1919
2020 let i = toBigInt(4)
2121
2222 let j = toBigInt((a - ((a * 1) / a)))
2323
2424 let k = "WAVES"
2525
2626 let l = 50
2727
2828 let m = "100"
2929
3030 let n = "1"
3131
3232 let o = "__"
3333
3434 let p = ""
3535
3636 let q = 1
3737
3838 let r = 2
3939
4040 let s = 3
4141
4242 let t = 4
4343
4444 let u = 1
4545
4646 let v = 2
4747
4848 let w = 3
4949
5050 let x = 4
5151
5252 let y = 5
5353
5454 let z = 6
5555
5656 let A = 7
5757
5858 let B = 8
5959
6060 let C = 9
6161
6262 let D = 1
6363
6464 let E = 6
6565
6666 let F = 7
6767
6868 let G = 10
6969
7070 let H = fraction(10, a, 10000)
7171
7272 func I (J,K) = fraction(toBigInt(J), c, toBigInt(K))
7373
7474
7575 func L (J,K) = fraction(J, c, K)
7676
7777
7878 func M (N,O) = toInt(fraction(N, toBigInt(O), c))
7979
8080
8181 func P (N,O,Q) = toInt(fraction(N, toBigInt(O), c, Q))
8282
8383
8484 func R (J,K) = fraction(J, c, toBigInt(K))
8585
8686
8787 func S (N,O) = fraction(N, toBigInt(O), c)
8888
8989
9090 func T (U,V,W) = fraction(U, V, W)
9191
9292
9393 func X (N) = if ((d > N))
9494 then -(N)
9595 else N
9696
9797
9898 func Y (N) = if ((d > N))
9999 then -(N)
100100 else N
101101
102102
103103 func Z () = "%s__factoryContract"
104104
105105
106106 func aa () = "%s__managerPublicKey"
107107
108108
109109 func ab () = "%s__managerVaultAddress"
110110
111111
112112 func ac () = "%s%s__price__last"
113113
114114
115115 func ad (ae,af) = makeString(["%s%s%d%d__price__history", toString(ae), toString(af)], o)
116116
117117
118118 func ag (ah,ai) = ((("%s%s%s__P__" + ah) + "__") + ai)
119119
120120
121121 func aj (ah,ai) = ((("%s%s%s__G__" + ah) + "__") + ai)
122122
123123
124124 func ak () = "%s__amountAsset"
125125
126126
127127 func al () = "%s__priceAsset"
128128
129129
130130 func am () = "%s__amp"
131131
132132
133133 func an (ao) = ("%s%d__amp__" + toString(ao))
134134
135135
136136 func ap () = "%s__changeAmpLastCall"
137137
138138
139139 let aq = "%s__fee"
140140
141141 let ar = valueOrElse(getInteger(this, aq), H)
142142
143143 let as = makeString(["%s", "dLp"], o)
144144
145145 let at = makeString(["%s", "dLpRefreshedHeight"], o)
146146
147147 let au = makeString(["%s", "refreshDLpDelay"], o)
148148
149149 let av = 30
150150
151151 let aw = valueOrElse(getInteger(this, au), av)
152152
153153 func ax () = "%s__factoryConfig"
154154
155155
156156 func ay () = "%s%s__matcher__publicKey"
157157
158158
159159 func az (aA,aB) = (((("%d%d%s__" + aA) + "__") + aB) + "__config")
160160
161161
162162 func aC (aD) = ("%s%s%s__mappings__baseAsset2internalId__" + aD)
163163
164164
165165 func aE () = "%s__shutdown"
166166
167167
168168 func aF () = "%s__allowedLpStableScriptHash"
169169
170170
171171 func aG () = "%s__feeCollectorAddress"
172172
173173
174174 func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
175175
176176
177177 func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
178178
179179
180180 func aO (aP) = {
181181 let aQ = addressFromString(aP)
182182 if ($isInstanceOf(aQ, "Address"))
183183 then {
184184 let aR = aQ
185185 aR
186186 }
187187 else this
188188 }
189189
190190
191191 func aS () = {
192192 let aT = {
193193 let aQ = getString(Z())
194194 if ($isInstanceOf(aQ, "String"))
195195 then {
196196 let aU = aQ
197197 aO(aU)
198198 }
199199 else this
200200 }
201201 let aQ = getString(aT, ab())
202202 if ($isInstanceOf(aQ, "String"))
203203 then {
204204 let aV = aQ
205205 aO(aV)
206206 }
207207 else this
208208 }
209209
210210
211211 func aW (aX,aY) = valueOrErrorMessage(getString(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " not defined"], ""))
212212
213213
214214 func aZ (aX,aY) = valueOrErrorMessage(getInteger(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " not defined"], ""))
215215
216216
217217 func ba (bb) = throw(makeString(["lp_stable.ride:", bb], " "))
218218
219219
220220 func bc (bb) = makeString(["lp_stable.ride:", bb], " ")
221221
222222
223223 let aU = addressFromStringValue(aW(this, Z()))
224224
225225 let bd = {
226226 let be = invoke(aU, "getInFeeREADONLY", [toString(this)], nil)
227227 if ($isInstanceOf(be, "Int"))
228228 then be
229229 else throw(($getType(be) + " couldn't be cast to Int"))
230230 }
231231
232232 let bf = {
233233 let be = invoke(aU, "getOutFeeREADONLY", [toString(this)], nil)
234234 if ($isInstanceOf(be, "Int"))
235235 then be
236236 else throw(($getType(be) + " couldn't be cast to Int"))
237237 }
238238
239239 func bg (bh) = makeString(["%s%s", "whitelisted", toString(bh)], o)
240240
241241
242242 func bi (bh) = valueOrElse(getBoolean(aU, bg(bh)), false)
243243
244244
245245 let bj = aW(this, am())
246246
247247 func bk () = valueOrElse(getBoolean(aU, aE()), false)
248248
249249
250250 func bl () = fromBase58String(aW(aU, ay()))
251251
252252
253253 let bm = addressFromStringValue(aW(aU, aG()))
254254
255255 func bn () = {
256256 let bo = aW(this, ak())
257257 let bp = aW(this, al())
258258 let bq = aZ(aU, aC(bp))
259259 let aA = aZ(aU, aC(bo))
260260 split(aW(aU, az(toString(aA), toString(bq))), o)
261261 }
262262
263263
264264 func br (bs) = if ((bs == k))
265265 then unit
266266 else fromBase58String(bs)
267267
268268
269269 func bt (bs) = if ((bs == unit))
270270 then k
271271 else toBase58String(value(bs))
272272
273273
274274 func bu (bv) = $Tuple7(addressFromStringValue(bv[u]), parseIntValue(bv[v]), fromBase58String(bv[w]), br(bv[x]), br(bv[y]), parseIntValue(bv[z]), parseIntValue(bv[A]))
275275
276276
277277 let bw = bu(bn())
278278
279279 let bx = bw
280280
281281 let by = bx._1
282282
283283 let bz = bx._2
284284
285285 let bA = bx._3
286286
287287 let bB = bx._4
288288
289289 let bC = bx._5
290290
291291 let bD = bx._6
292292
293293 let bE = bx._7
294294
295295 func bF () = split(aW(aU, ax()), o)
296296
297297
298298 let bG = bF()
299299
300300 let bH = valueOrErrorMessage(addressFromString(bG[D]), "Invalid staking contract address")
301301
302302 let bI = valueOrErrorMessage(addressFromString(bG[F]), "Invalid slipage contract address")
303303
304304 let bJ = valueOrErrorMessage(addressFromString(bG[G]), "Invalid gwx contract address")
305305
306306 let bK = valueOrErrorMessage(addressFromString(bG[E]), "Invalid gwx contract address")
307307
308308 func bL (bM,bN,bO,bP,bQ,bR,bS,bT,bU,bV) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ), toString(bR), toString(bS), toString(bT), toString(bU), toString(bV)], o)
309309
310310
311311 func bW (bX,bY,bZ,bP,bS,bT) = makeString(["%d%d%d%d%d%d", toString(bX), toString(bY), toString(bZ), toString(bP), toString(bS), toString(bT)], o)
312312
313313
314314 func ca (cb) = if ((cb == "WAVES"))
315315 then wavesBalance(this).available
316316 else assetBalance(this, fromBase58String(cb))
317317
318318
319319 func cc (cd,ce) = fraction(cd, c, ce)
320320
321321
322322 func cf (cd,ce,Q) = fraction(cd, c, ce, Q)
323323
324324
325325 func cg (ch,ci,cj) = {
326326 let ck = fraction((ch - ci), b, ci)
327327 let cl = ((cj - X(ck)) > d)
328328 if (!(cl))
329329 then throw(("Big slpg: " + toString(ck)))
330330 else $Tuple2(cl, min([ch, ci]))
331331 }
332332
333333
334334 func cm (cn,co,cp) = {
335335 let ck = fraction(co, b, cn)
336336 let cq = (cp > ck)
337337 if (if (cq)
338338 then true
339339 else (co > cn))
340340 then throw(((((((toString(co) + " ") + toString(cn)) + " ") + toString(ck)) + " ") + toString(cp)))
341341 else cq
342342 }
343343
344344
345345 func cr (cs,ct,cu,cv) = {
346346 let cw = I(cu, cs)
347347 let cx = I(cv, ct)
348348 cc(cx, cw)
349349 }
350350
351351
352352 func cy (cu,cv,cz) = {
353353 let cA = bD
354354 let cB = bE
355355 let cC = cr(cA, cB, cu, cv)
356356 let ce = I(cu, cA)
357357 let cd = I(cv, cB)
358358 let cD = I(cz, a)
359359 let cE = cc(ce, cD)
360360 let cF = cc(cd, cD)
361361 [cC, cE, cF]
362362 }
363363
364364
365365 func cG (cu,cv,cz) = {
366366 let cH = cy(cu, cv, cz)
367367 [M(cH[0], a), M(cH[1], a), M(cH[2], a)]
368368 }
369369
370370
371371 func cI (cJ,ar) = {
372372 let cK = if ((ar == 0))
373373 then 0
374374 else fraction(cJ, ar, a)
375375 $Tuple2((cJ - cK), cK)
376376 }
377377
378378
379379 func cL (cM) = {
380380 let cN = cM[0]
381381 let cO = cM[1]
382382 let aV = (cN + cO)
383383 if ((aV == e))
384384 then e
385385 else {
386386 let aR = parseIntValue(bj)
387387 let cP = (aR * 2)
388388 let cH = fraction(cN, cO, f)
389389 let cQ = fraction(cH, i, f)
390390 let cR = fraction(toBigInt(cP), aV, f)
391391 let cS = toBigInt((cP - 1))
392392 func cT (cU) = {
393393 let cV = fraction(cU, cU, f)
394394 let cW = fraction(cV, cU, f)
395395 let cX = fraction(cW, f, cQ)
396396 fraction((cR + fraction(cX, g, f)), cU, (fraction(cS, cU, f) + fraction(h, cX, f)))
397397 }
398398
399399 func cY (cZ,da) = if (cZ._2)
400400 then cZ
401401 else {
402402 let cU = cZ._1
403403 let db = cT(cU)
404404 let dc = (db - value(cU))
405405 let dd = if ((e > dc))
406406 then -(dc)
407407 else dc
408408 if ((f >= dd))
409409 then $Tuple2(db, true)
410410 else $Tuple2(db, false)
411411 }
412412
413413 let de = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
414414 let df = {
415415 let dg = de
416416 let dh = size(dg)
417417 let di = $Tuple2(aV, false)
418418 func dj (dk,dl) = if ((dl >= dh))
419419 then dk
420420 else cY(dk, dg[dl])
421421
422422 func dm (dk,dl) = if ((dl >= dh))
423423 then dk
424424 else throw("List size exceeds 17")
425425
426426 dm(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(di, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
427427 }
428428 let cU = df._1
429429 let dn = df._2
430430 if (dn)
431431 then cU
432432 else throw(("D calculation error, D = " + toString(cU)))
433433 }
434434 }
435435
436436
437437 func do (dp,dq,dr,ds) = {
438438 let dt = bA
439439 let du = toBase58String(value(bB))
440440 let dv = toBase58String(value(bC))
441441 let dw = bD
442442 let dx = bE
443443 let dy = toString(bz)
444444 let dz = valueOrErrorMessage(assetInfo(dt), "Wrong LP id").quantity
445445 if ((toBase58String(dt) != dq))
446446 then throw("Wrong pmt asset")
447447 else {
448448 let dA = ca(du)
449449 let dB = I(dA, dw)
450450 let dC = ca(dv)
451451 let dD = I(dC, dx)
452452 let dE = cc(dD, dB)
453453 let dF = M(dE, a)
454454 let dG = I(dr, a)
455455 let dH = I(dz, a)
456456 let dI = fraction(dB, dG, dH)
457457 let dJ = fraction(dD, dG, dH)
458458 let dK = P(dI, dw, FLOOR)
459459 let dL = P(dJ, dx, FLOOR)
460460 let dM = if ((dp == ""))
461461 then nil
462462 else [ScriptTransfer(ds, dK, if ((du == "WAVES"))
463463 then unit
464464 else fromBase58String(du)), ScriptTransfer(ds, dL, if ((dv == "WAVES"))
465465 then unit
466466 else fromBase58String(dv)), StringEntry(aj(toString(ds), dp), bW(dK, dL, dr, dF, height, lastBlock.timestamp)), IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF)]
467467 $Tuple10(dK, dL, du, dv, dA, dC, dz, dE, dy, dM)
468468 }
469469 }
470470
471471
472472 func dN (dp,cj,dO,dP,dQ,dR,ds,dS,dT,dU,dV,dW,dX) = {
473473 let dt = bA
474474 let dY = toBase58String(value(bB))
475475 let dZ = toBase58String(value(bC))
476476 let ea = bD
477477 let eb = bE
478478 let dy = toString(bz)
479479 let ec = valueOrErrorMessage(assetInfo(dt), "Wr lp as").quantity
480- let dA = if (dS)
481- then ca(dY)
482- else if (if (dU)
483- then (dX == dY)
484- else false)
485- then (ca(dY) - dW)
486- else if (dU)
480+ let ed = [if (if ((dP == br(dY)))
481+ then (dR == br(dZ))
482+ else false)
483+ then true
484+ else ba("Invalid amt or price asset passed.")]
485+ if ((ed == ed))
486+ then {
487+ let dA = if (dS)
487488 then ca(dY)
488- else (ca(dY) - dO)
489- let dC = if (dS)
490- then ca(dZ)
491- else if (if (dU)
492- then (dX == dZ)
493- else false)
494- then (ca(dZ) - dW)
495- else if (dU)
489+ else if (if (dU)
490+ then (dX == dY)
491+ else false)
492+ then (ca(dY) - dW)
493+ else if (dU)
494+ then ca(dY)
495+ else (ca(dY) - dO)
496+ let dC = if (dS)
496497 then ca(dZ)
497- else (ca(dZ) - dQ)
498- let ed = I(dO, ea)
499- let ee = I(dQ, eb)
500- let ef = cc(ee, ed)
501- let dB = I(dA, ea)
502- let dD = I(dC, eb)
503- let co = cL([dB, dD])
504- let eg = if ((ec == 0))
505- then {
506- let cn = cL([(dB + ed), (dD + ee)])
507- let eh = if ((cn > co))
508- then true
509- else throw("D1 should be greater than D0")
510- if ((eh == eh))
498+ else if (if (dU)
499+ then (dX == dZ)
500+ else false)
501+ then (ca(dZ) - dW)
502+ else if (dU)
503+ then ca(dZ)
504+ else (ca(dZ) - dQ)
505+ let ee = I(dO, ea)
506+ let ef = I(dQ, eb)
507+ let eg = cc(ef, ee)
508+ let dB = I(dA, ea)
509+ let dD = I(dC, eb)
510+ let co = cL([dB, dD])
511+ let eh = if ((ec == 0))
511512 then {
512- let dE = d
513- let ei = d
514- let cD = cn
515- $Tuple5(M(cD, a), M(ed, ea), M(ee, eb), cc((dD + ee), (dB + ed)), ei)
516- }
517- else throw("Strict value is not equal to itself.")
518- }
519- else {
520- let dE = cc(dD, dB)
521- let ej = fraction(X((dE - ef)), c, dE)
522- let ei = I(cj, a)
523- if (if (if (dV)
524- then (dE != d)
525- else false)
526- then (ej > ei)
527- else false)
528- then throw(((("Price slippage " + toString(ej)) + " > ") + toString(ei)))
529- else {
530- let ek = I(ec, a)
531- let el = fraction(ed, cf(dD, dB, CEILING), c, CEILING)
532- let em = fraction(ee, c, cf(dD, dB, FLOOR), CEILING)
533- let en = if ((el > ee))
534- then $Tuple2(em, ee)
535- else $Tuple2(ed, el)
536- let eo = en._1
537- let ep = en._2
538- let cn = cL([(dB + eo), (dD + ep)])
539- let eh = if ((cn > co))
513+ let cn = cL([(dB + ee), (dD + ef)])
514+ let ei = if ((cn > co))
540515 then true
541516 else throw("D1 should be greater than D0")
542- if ((eh == eh))
517+ if ((ei == ei))
543518 then {
544- let cD = fraction(ek, (cn - co), co)
545- $Tuple5(P(cD, a, FLOOR), P(eo, ea, CEILING), P(ep, eb, CEILING), dE, ei)
519+ let dE = d
520+ let ej = d
521+ let cD = cn
522+ $Tuple5(M(cD, a), M(ee, ea), M(ef, eb), cc((dD + ef), (dB + ee)), ej)
546523 }
547524 else throw("Strict value is not equal to itself.")
548525 }
526+ else {
527+ let dE = cc(dD, dB)
528+ let ek = fraction(X((dE - eg)), c, dE)
529+ let ej = I(cj, a)
530+ if (if (if (dV)
531+ then (dE != d)
532+ else false)
533+ then (ek > ej)
534+ else false)
535+ then throw(((("Price slippage " + toString(ek)) + " > ") + toString(ej)))
536+ else {
537+ let el = I(ec, a)
538+ let em = fraction(ee, cf(dD, dB, CEILING), c, CEILING)
539+ let en = fraction(ef, c, cf(dD, dB, FLOOR), CEILING)
540+ let eo = if ((em > ef))
541+ then $Tuple2(en, ef)
542+ else $Tuple2(ee, em)
543+ let ep = eo._1
544+ let eq = eo._2
545+ let cn = cL([(dB + ep), (dD + eq)])
546+ let ei = if ((cn > co))
547+ then true
548+ else throw("D1 should be greater than D0")
549+ if ((ei == ei))
550+ then {
551+ let cD = fraction(el, (cn - co), co)
552+ $Tuple5(P(cD, a, FLOOR), P(ep, ea, CEILING), P(eq, eb, CEILING), dE, ej)
553+ }
554+ else throw("Strict value is not equal to itself.")
555+ }
556+ }
557+ let er = eh._1
558+ let es = eh._2
559+ let et = eh._3
560+ let dF = M(eh._4, a)
561+ let eu = M(eh._5, a)
562+ if ((0 >= er))
563+ then throw("LP <= 0")
564+ else {
565+ let ev = if (!(dT))
566+ then 0
567+ else er
568+ let ew = (dO - es)
569+ let ex = (dQ - et)
570+ let ey = if (if (dU)
571+ then (dX == dY)
572+ else false)
573+ then $Tuple2(dW, 0)
574+ else if (if (dU)
575+ then (dX == dZ)
576+ else false)
577+ then $Tuple2(0, dW)
578+ else $Tuple2(es, et)
579+ let ez = ey._1
580+ let eA = ey._2
581+ let eB = [IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF), StringEntry(ag(ds, dp), bL(ez, eA, ev, dF, cj, eu, height, lastBlock.timestamp, ew, ex))]
582+ $Tuple13(er, ev, dF, dA, dC, ec, dt, dy, eB, ew, ex, dP, dR)
583+ }
549584 }
550- let eq = eg._1
551- let er = eg._2
552- let es = eg._3
553- let dF = M(eg._4, a)
554- let et = M(eg._5, a)
555- if ((0 >= eq))
556- then throw("LP <= 0")
557- else {
558- let eu = if (!(dT))
559- then 0
560- else eq
561- let ev = (dO - er)
562- let ew = (dQ - es)
563- let ex = if (if (dU)
564- then (dX == dY)
565- else false)
566- then $Tuple2(dW, 0)
567- else if (if (dU)
568- then (dX == dZ)
569- else false)
570- then $Tuple2(0, dW)
571- else $Tuple2(er, es)
572- let ey = ex._1
573- let ez = ex._2
574- let eA = [IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF), StringEntry(ag(ds, dp), bL(ey, ez, eu, dF, cj, et, height, lastBlock.timestamp, ev, ew))]
575- $Tuple13(eq, eu, dF, dA, dC, ec, dt, dy, eA, ev, ew, dP, dR)
576- }
585+ else throw("Strict value is not equal to itself.")
577586 }
578587
579588
580-func eB (cM,da,eC) = {
581- let eD = g
582- let eE = cM[if ((da == 0))
589+func eC (cM,da,eD) = {
590+ let eE = g
591+ let eF = cM[if ((da == 0))
583592 then 1
584593 else 0]
585- let eF = parseBigIntValue(m)
586- let aR = (parseBigIntValue(bj) * eF)
587- let aV = eE
588- let cP = (aR * eD)
589- let eG = (((((eC * eC) / (eE * eD)) * eC) * eF) / (cP * eD))
590- let eH = ((aV + ((eC * eF) / cP)) - eC)
591- func cY (cZ,eI) = {
592- let eJ = cZ
593- let eK = eJ._1
594- let dn = eJ._2
594+ let eG = parseBigIntValue(m)
595+ let aR = (parseBigIntValue(bj) * eG)
596+ let aV = eF
597+ let cP = (aR * eE)
598+ let eH = (((((eD * eD) / (eF * eE)) * eD) * eG) / (cP * eE))
599+ let eI = ((aV + ((eD * eG) / cP)) - eD)
600+ func cY (cZ,eJ) = {
601+ let eK = cZ
602+ let eL = eK._1
603+ let dn = eK._2
595604 if ((dn != unit))
596605 then cZ
597606 else {
598- let eL = (((eK * eK) + eG) / ((g * eK) + eH))
599- let eM = Y((eL - value(eK)))
600- if ((f >= eM))
601- then $Tuple2(eL, eI)
602- else $Tuple2(eL, unit)
607+ let eM = (((eL * eL) + eH) / ((g * eL) + eI))
608+ let eN = Y((eM - value(eL)))
609+ if ((f >= eN))
610+ then $Tuple2(eM, eJ)
611+ else $Tuple2(eM, unit)
603612 }
604613 }
605614
606615 let de = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
607- let eN = {
616+ let eO = {
608617 let dg = de
609618 let dh = size(dg)
610- let di = $Tuple2(eC, unit)
619+ let di = $Tuple2(eD, unit)
611620 func dj (dk,dl) = if ((dl >= dh))
612621 then dk
613622 else cY(dk, dg[dl])
614623
615624 func dm (dk,dl) = if ((dl >= dh))
616625 then dk
617626 else throw("List size exceeds 15")
618627
619628 dm(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(di, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
620629 }
621- let eK = eN._1
622- let dn = eN._2
630+ let eL = eO._1
631+ let dn = eO._2
623632 if ((dn != unit))
624- then eK
625- else throw(("Y calculation error, Y = " + toString(eK)))
633+ then eL
634+ else throw(("Y calculation error, Y = " + toString(eL)))
626635 }
627636
628637
629-func eO (eP,eQ,eR) = {
630- let eS = fraction(cL([L(eP, toBigInt(bD)), L(eQ, toBigInt(bE))]), c, eR)
631- if ((eR == e))
638+func eP (eQ,eR,eS) = {
639+ let eT = fraction(cL([L(eQ, toBigInt(bD)), L(eR, toBigInt(bE))]), c, eS)
640+ if ((eS == e))
632641 then e
633- else eS
642+ else eT
634643 }
635644
636645
637-func eT (eU,eV,eW) = {
638- let eX = (toBigInt(ca(bt(bB))) - eU)
639- let eY = (toBigInt(ca(bt(bC))) - eV)
640- let eZ = (toBigInt(value(assetInfo(bA)).quantity) - eW)
641- let fa = eO(eX, eY, eZ)
642- fa
646+func eU (eV,eW,eX) = {
647+ let eY = (toBigInt(ca(bt(bB))) - eV)
648+ let eZ = (toBigInt(ca(bt(bC))) - eW)
649+ let fa = (toBigInt(value(assetInfo(bA)).quantity) - eX)
650+ let fb = eP(eY, eZ, fa)
651+ fb
643652 }
644653
645654
646-func fb (fc,fd,eW) = {
647- let eX = (ca(bt(bB)) + fc)
648- let eY = (ca(bt(bC)) + fd)
649- let eZ = (value(assetInfo(bA)).quantity + eW)
650- let eS = eO(toBigInt(eX), toBigInt(eY), toBigInt(eZ))
651- let fe = [IntegerEntry(at, height), StringEntry(as, toString(eS))]
652- $Tuple2(fe, eS)
655+func fc (fd,fe,eX) = {
656+ let eY = (ca(bt(bB)) + fd)
657+ let eZ = (ca(bt(bC)) + fe)
658+ let fa = (value(assetInfo(bA)).quantity + eX)
659+ let eT = eP(toBigInt(eY), toBigInt(eZ), toBigInt(fa))
660+ let ff = [IntegerEntry(at, height), StringEntry(as, toString(eT))]
661+ $Tuple2(ff, eT)
653662 }
654663
655664
656-func ff (fg,eS) = if ((eS >= fg))
665+func fg (fh,eT) = if ((eT >= fh))
657666 then true
658667 else ba("updated DLp lower than current DLp")
659668
660669
661-func fh (fi) = {
662- let eX = ca(bt(bB))
663- let eY = ca(bt(bC))
664- let fj = fi.amount
665- let fk = fraction(fi.amount, fi.price, a, FLOOR)
666- let fl = if ((fi.orderType == Buy))
667- then $Tuple2(fj, -(fk))
668- else $Tuple2(-(fj), fk)
669- let fc = fl._1
670- let fd = fl._2
670+func fi (fj) = {
671+ let eY = ca(bt(bB))
672+ let eZ = ca(bt(bC))
673+ let fk = fj.amount
674+ let fl = fraction(fj.amount, fj.price, a, FLOOR)
675+ let fm = if ((fj.orderType == Buy))
676+ then $Tuple2(fk, -(fl))
677+ else $Tuple2(-(fk), fl)
678+ let fd = fm._1
679+ let fe = fm._2
671680 if (if (if (bk())
672681 then true
673682 else (bz == s))
674683 then true
675684 else (bz == t))
676685 then throw("Admin blocked")
677- else if (if ((fi.assetPair.amountAsset != bB))
686+ else if (if ((fj.assetPair.amountAsset != bB))
678687 then true
679- else (fi.assetPair.priceAsset != bC))
688+ else (fj.assetPair.priceAsset != bC))
680689 then throw("Wr assets")
681690 else {
682- let fm = parseBigIntValue(valueOrElse(getString(this, as), "0"))
683- let fn = fb(fc, fd, 0)
684- let fo = fn._1
685- let fp = fn._2
686- let fq = (fp >= fm)
687- let fr = makeString(["dLp=", toString(fm), " dLpNew=", toString(fp), " amountAssetBalance=", toString(eX), " priceAssetBalance=", toString(eY), " amountAssetBalanceDelta=", toString(fc), " priceAssetBalanceDelta=", toString(fd), " height=", toString(height)], "")
688- $Tuple2(fq, fr)
691+ let fn = parseBigIntValue(valueOrElse(getString(this, as), "0"))
692+ let fo = fc(fd, fe, 0)
693+ let fp = fo._1
694+ let fq = fo._2
695+ let fr = (fq >= fn)
696+ let fs = makeString(["dLp=", toString(fn), " dLpNew=", toString(fq), " amountAssetBalance=", toString(eY), " priceAssetBalance=", toString(eZ), " amountAssetBalanceDelta=", toString(fd), " priceAssetBalanceDelta=", toString(fe), " height=", toString(height)], "")
697+ $Tuple2(fr, fs)
689698 }
690699 }
691700
692701
693-func fs (da) = if ((size(da.payments) != 1))
702+func ft (da) = if ((size(da.payments) != 1))
694703 then throw("1 pmnt exp")
695704 else {
696- let ft = value(da.payments[0])
697- let dq = value(ft.assetId)
698- let dW = ft.amount
699- let eg = do(toBase58String(da.transactionId), toBase58String(dq), dW, da.caller)
700- let dK = eg._1
701- let dL = eg._2
702- let dy = parseIntValue(eg._9)
703- let dM = eg._10
704- let fu = if (!(bi(da.caller)))
705+ let fu = value(da.payments[0])
706+ let dq = value(fu.assetId)
707+ let dW = fu.amount
708+ let eh = do(toBase58String(da.transactionId), toBase58String(dq), dW, da.caller)
709+ let dK = eh._1
710+ let dL = eh._2
711+ let dy = parseIntValue(eh._9)
712+ let dM = eh._10
713+ let fv = if (!(bi(da.caller)))
705714 then if (bk())
706715 then true
707716 else (bz == t)
708717 else false
709- if (fu)
718+ if (fv)
710719 then throw(("Admin blocked: " + toString(dy)))
711720 else $Tuple5(dK, dL, dW, dq, dM)
712721 }
713722
714723
715-func fv (fw,ai,fx,fy,cj,dT,dU,dV,dW,dX) = {
716- let eg = dN(ai, cj, value(fx).amount, value(fx).assetId, value(fy).amount, value(fy).assetId, fw, (ai == ""), dT, dU, dV, dW, dX)
717- let dy = parseIntValue(eg._8)
718- let fz = if (!(bi(addressFromStringValue(fw))))
724+func fw (fx,ai,fy,fz,cj,dT,dU,dV,dW,dX) = {
725+ let eh = dN(ai, cj, value(fy).amount, value(fy).assetId, value(fz).amount, value(fz).assetId, fx, (ai == ""), dT, dU, dV, dW, dX)
726+ let dy = parseIntValue(eh._8)
727+ let fA = if (!(bi(addressFromStringValue(fx))))
719728 then if (if (bk())
720729 then true
721730 else (bz == t))
722731 then true
723732 else (bz == r)
724733 else false
725- if (fz)
734+ if (fA)
726735 then throw(("Blocked:" + toString(dy)))
727- else eg
736+ else eh
728737 }
729738
730739
731-func fA (fB,dq,ds,ai,fC) = {
740+func fB (fC,dq,ds,ai,fD) = {
732741 let du = toBase58String(value(bB))
733742 let dv = toBase58String(value(bC))
734743 let dt = bA
735744 let ea = bD
736745 let eb = bE
737- let eZ = toBigInt(valueOrErrorMessage(assetInfo(dt), "invalid lp asset").quantity)
738- let fD = if ((eZ > e))
746+ let fa = toBigInt(valueOrErrorMessage(assetInfo(dt), "invalid lp asset").quantity)
747+ let fE = if ((fa > e))
739748 then true
740749 else throw("initial deposit requires all coins")
741- if ((fD == fD))
750+ if ((fE == fE))
742751 then {
743752 let dA = ca(du)
744753 let dC = ca(dv)
745- let fE = if ((ai == ""))
754+ let fF = if ((ai == ""))
746755 then $Tuple2(dA, dC)
747756 else if ((dq == du))
748- then if ((fB > dA))
757+ then if ((fC > dA))
749758 then throw("invalid payment amount")
750- else $Tuple2((dA - fB), dC)
759+ else $Tuple2((dA - fC), dC)
751760 else if ((dq == dv))
752- then if ((fB > dC))
761+ then if ((fC > dC))
753762 then throw("invalid payment amount")
754- else $Tuple2(dA, (dC - fB))
763+ else $Tuple2(dA, (dC - fC))
755764 else throw("wrong pmtAssetId")
756- let fF = fE._1
757- let fG = fE._2
758- let fH = if ((dq == du))
759- then $Tuple2(fB, 0)
765+ let fG = fF._1
766+ let fH = fF._2
767+ let fI = if ((dq == du))
768+ then $Tuple2(fC, 0)
760769 else if ((dq == dv))
761- then $Tuple2(0, fB)
770+ then $Tuple2(0, fC)
762771 else throw("invalid payment")
763- let fI = fH._1
764- let fJ = fH._2
765- let fK = if (fC)
766- then $Tuple3(cI(fI, bd)._1, cI(fJ, bd)._1, cI(fB, bd)._2)
767- else $Tuple3(fI, fJ, 0)
768- let fL = fK._1
769- let fM = fK._2
770- let cK = fK._3
771- let fN = (fF + fL)
772+ let fJ = fI._1
773+ let fK = fI._2
774+ let fL = if (fD)
775+ then $Tuple3(cI(fJ, bd)._1, cI(fK, bd)._1, cI(fC, bd)._2)
776+ else $Tuple3(fJ, fK, 0)
777+ let fM = fL._1
778+ let fN = fL._2
779+ let cK = fL._3
772780 let fO = (fG + fM)
773- let co = cL([I(fF, bD), I(fG, bE)])
774- let cn = cL([I(fN, bD), I(fO, bE)])
775- let eh = if ((cn > co))
781+ let fP = (fH + fN)
782+ let co = cL([I(fG, bD), I(fH, bE)])
783+ let cn = cL([I(fO, bD), I(fP, bE)])
784+ let ei = if ((cn > co))
776785 then true
777786 else throw()
778- if ((eh == eh))
787+ if ((ei == ei))
779788 then {
780- let fP = fraction(eZ, (cn - co), co, FLOOR)
781- let dF = M(cc(I(fO, eb), I(fN, ea)), a)
782- let eA = [IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF), StringEntry(ag(ds, ai), bL(fI, fJ, toInt(fP), dF, 0, 0, height, lastBlock.timestamp, 0, 0))]
783- let fQ = fraction(fG, a, fF)
784- let fR = fraction(fB, a, (fQ + a))
785- let fS = (fB - fR)
786- let fT = fraction(eZ, toBigInt(fS), toBigInt(fG))
787- let fU = toInt(fraction((fP - fT), b, fT))
788- $Tuple4(toInt(fP), eA, cK, fU)
789+ let fQ = fraction(fa, (cn - co), co, FLOOR)
790+ let dF = M(cc(I(fP, eb), I(fO, ea)), a)
791+ let eB = [IntegerEntry(ac(), dF), IntegerEntry(ad(height, lastBlock.timestamp), dF), StringEntry(ag(ds, ai), bL(fJ, fK, toInt(fQ), dF, 0, 0, height, lastBlock.timestamp, 0, 0))]
792+ let fR = fraction(fH, a, fG)
793+ let fS = fraction(fC, a, (fR + a))
794+ let fT = (fC - fS)
795+ let fU = fraction(fa, toBigInt(fT), toBigInt(fH))
796+ let fV = toInt(fraction((fQ - fU), b, fU))
797+ $Tuple4(toInt(fQ), eB, cK, fV)
789798 }
790799 else throw("Strict value is not equal to itself.")
791800 }
792801 else throw("Strict value is not equal to itself.")
793802 }
794803
795804
796-func fV (fW,fX,fY,fw,fZ,ga) = {
805+func fW (fX,fY,fZ,fx,ga,gb) = {
797806 let dt = toBase58String(value(bA))
798807 let du = toBase58String(value(bB))
799808 let dv = toBase58String(value(bC))
800- let gb = bD
801- let gc = bE
802- let gd = bz
803- let ds = if ((fw == bK))
804- then fZ
805- else fw
806- let ft = value(fY[0])
807- let dq = value(ft.assetId)
808- let dW = ft.amount
809- let fa = eT(e, e, e)
810- if ((fa == fa))
809+ let gc = bD
810+ let gd = bE
811+ let ge = bz
812+ let ds = if ((fx == bK))
813+ then ga
814+ else fx
815+ let fu = value(fZ[0])
816+ let dq = value(fu.assetId)
817+ let dW = fu.amount
818+ let fb = eU(e, e, e)
819+ if ((fb == fb))
811820 then {
812- let dp = toBase58String(ga)
821+ let dp = toBase58String(gb)
813822 if ((dt != toBase58String(dq)))
814823 then throw("Wrong LP")
815824 else {
816825 let dA = ca(du)
817826 let dC = ca(dv)
818- let ge = {
819- let be = invoke(this, "getOneTknV2READONLY", [fW, dW], nil)
827+ let gf = {
828+ let be = invoke(this, "getOneTknV2READONLY", [fX, dW], nil)
820829 if ($isInstanceOf(be, "(Int, Int)"))
821830 then be
822831 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
823832 }
824- if ((ge == ge))
833+ if ((gf == gf))
825834 then {
826- let cK = ge._2
827- let gf = ge._1
828- let gg = if (if ((fX > 0))
829- then (fX > gf)
835+ let cK = gf._2
836+ let gg = gf._1
837+ let gh = if (if ((fY > 0))
838+ then (fY > gg)
830839 else false)
831- then ba(makeString(["amount to receive is less than ", toString(fX)], ""))
832- else gf
833- let gh = if ((fW == du))
834- then $Tuple4(gg, 0, ((dA - gg) - cK), dC)
835- else if ((fW == dv))
836- then $Tuple4(0, gg, dA, ((dC - gg) - cK))
840+ then ba(makeString(["amount to receive is less than ", toString(fY)], ""))
841+ else gg
842+ let gi = if ((fX == du))
843+ then $Tuple4(gh, 0, ((dA - gh) - cK), dC)
844+ else if ((fX == dv))
845+ then $Tuple4(0, gh, dA, ((dC - gh) - cK))
837846 else throw("invalid out asset id")
838- let gi = gh._1
839- let gj = gh._2
840- let fN = gh._3
841- let fO = gh._4
842- let gk = cc(I(fO, gc), I(fN, gb))
843- let gl = M(gk, a)
844- let gm = if ((fW == "WAVES"))
847+ let gj = gi._1
848+ let gk = gi._2
849+ let fO = gi._3
850+ let fP = gi._4
851+ let gl = cc(I(fP, gd), I(fO, gc))
852+ let gm = M(gl, a)
853+ let gn = if ((fX == "WAVES"))
845854 then unit
846- else fromBase58String(fW)
847- let gn = if ((cK > 0))
848- then [ScriptTransfer(bm, cK, gm)]
855+ else fromBase58String(fX)
856+ let go = if ((cK > 0))
857+ then [ScriptTransfer(bm, cK, gn)]
849858 else nil
850- let dM = ([ScriptTransfer(ds, gg, gm), StringEntry(aj(toString(ds), dp), bW(gi, gj, dW, gl, height, lastBlock.timestamp)), IntegerEntry(ac(), gl), IntegerEntry(ad(height, lastBlock.timestamp), gl)] ++ gn)
859+ let dM = ([ScriptTransfer(ds, gh, gn), StringEntry(aj(toString(ds), dp), bW(gj, gk, dW, gm, height, lastBlock.timestamp)), IntegerEntry(ac(), gm), IntegerEntry(ad(height, lastBlock.timestamp), gm)] ++ go)
851860 if ((dM == dM))
852861 then {
853- let go = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
854- if ((go == go))
862+ let gp = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
863+ if ((gp == gp))
855864 then {
856- let gp = {
857- let gq = if ((this == bm))
865+ let gq = {
866+ let gr = if ((this == bm))
858867 then 0
859868 else cK
860- let gr = if ((br(fW) == bB))
869+ let gs = if ((br(fX) == bB))
861870 then true
862871 else false
863- if (gr)
864- then $Tuple2(-((gf + gq)), 0)
865- else $Tuple2(0, -((gf + gq)))
872+ if (gs)
873+ then $Tuple2(-((gg + gr)), 0)
874+ else $Tuple2(0, -((gg + gr)))
866875 }
867- let fc = gp._1
868- let fd = gp._2
869- let gs = fb(fc, fd, 0)
870- let gt = gs._1
871- let eS = gs._2
872- let gu = ff(fa, eS)
873- if ((gu == gu))
874- then $Tuple2((dM ++ gt), gg)
876+ let fd = gq._1
877+ let fe = gq._2
878+ let gt = fc(fd, fe, 0)
879+ let gu = gt._1
880+ let eT = gt._2
881+ let gv = fg(fb, eT)
882+ if ((gv == gv))
883+ then $Tuple2((dM ++ gu), gh)
875884 else throw("Strict value is not equal to itself.")
876885 }
877886 else throw("Strict value is not equal to itself.")
878887 }
879888 else throw("Strict value is not equal to itself.")
880889 }
881890 else throw("Strict value is not equal to itself.")
882891 }
883892 }
884893 else throw("Strict value is not equal to itself.")
885894 }
886895
887896
888-func gv () = {
889- let gw = aS()
890- let aQ = getString(gw, aa())
897+func gw () = {
898+ let gx = aS()
899+ let aQ = getString(gx, aa())
891900 if ($isInstanceOf(aQ, "String"))
892901 then {
893902 let aV = aQ
894903 fromBase58String(aV)
895904 }
896905 else if ($isInstanceOf(aQ, "Unit"))
897906 then unit
898907 else throw("Match error")
899908 }
900909
901910
902-let gx = throw("Permission denied")
911+let gy = throw("Permission denied")
903912
904-func gy (da) = {
905- let aQ = gv()
913+func gz (da) = {
914+ let aQ = gw()
906915 if ($isInstanceOf(aQ, "ByteVector"))
907916 then {
908- let gz = aQ
909- (da.callerPublicKey == gz)
917+ let gA = aQ
918+ (da.callerPublicKey == gA)
910919 }
911920 else if ($isInstanceOf(aQ, "Unit"))
912921 then (da.caller == this)
913922 else throw("Match error")
914923 }
915924
916925
917-func gA (da) = {
918- let aQ = gv()
926+func gB (da) = {
927+ let aQ = gw()
919928 if ($isInstanceOf(aQ, "ByteVector"))
920929 then {
921- let gz = aQ
922- if ((da.callerPublicKey == gz))
930+ let gA = aQ
931+ if ((da.callerPublicKey == gA))
923932 then true
924- else gx
933+ else gy
925934 }
926935 else if ($isInstanceOf(aQ, "Unit"))
927936 then if ((da.caller == this))
928937 then true
929- else gx
938+ else gy
930939 else throw("Match error")
931940 }
932941
933942
934-func gB (gC,eC,gD) = {
943+func gC (gD,eD,gE) = {
935944 let bv = bn()
936945 let du = bv[x]
937946 let dv = bv[y]
938- let eD = g
939- let eF = parseBigIntValue(m)
940- let aR = (parseBigIntValue(bj) * eF)
941- let cM = if ((gC == false))
942- then [(toBigInt(ca(du)) + gD), toBigInt(ca(dv))]
943- else [(toBigInt(ca(dv)) + gD), toBigInt(ca(du))]
944- let eE = cM[0]
945- let aV = eE
946- let cP = (aR * eD)
947- let eG = (((((eC * eC) / (eE * eD)) * eC) * eF) / (cP * eD))
948- let eH = ((aV + ((eC * eF) / cP)) - eC)
949- func cY (cZ,eI) = {
950- let gE = cZ
951- let eK = gE._1
952- let dn = gE._2
947+ let eE = g
948+ let eG = parseBigIntValue(m)
949+ let aR = (parseBigIntValue(bj) * eG)
950+ let cM = if ((gD == false))
951+ then [(toBigInt(ca(du)) + gE), toBigInt(ca(dv))]
952+ else [(toBigInt(ca(dv)) + gE), toBigInt(ca(du))]
953+ let eF = cM[0]
954+ let aV = eF
955+ let cP = (aR * eE)
956+ let eH = (((((eD * eD) / (eF * eE)) * eD) * eG) / (cP * eE))
957+ let eI = ((aV + ((eD * eG) / cP)) - eD)
958+ func cY (cZ,eJ) = {
959+ let gF = cZ
960+ let eL = gF._1
961+ let dn = gF._2
953962 if ((dn != unit))
954963 then cZ
955964 else {
956- let eL = (((eK * eK) + eG) / ((g * eK) + eH))
957- let eM = Y((eL - value(eK)))
958- if ((f >= eM))
959- then $Tuple2(eL, eI)
960- else $Tuple2(eL, unit)
965+ let eM = (((eL * eL) + eH) / ((g * eL) + eI))
966+ let eN = Y((eM - value(eL)))
967+ if ((f >= eN))
968+ then $Tuple2(eM, eJ)
969+ else $Tuple2(eM, unit)
961970 }
962971 }
963972
964973 let de = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
965- let gF = {
974+ let gG = {
966975 let dg = de
967976 let dh = size(dg)
968- let di = $Tuple2(eC, unit)
977+ let di = $Tuple2(eD, unit)
969978 func dj (dk,dl) = if ((dl >= dh))
970979 then dk
971980 else cY(dk, dg[dl])
972981
973982 func dm (dk,dl) = if ((dl >= dh))
974983 then dk
975984 else throw("List size exceeds 15")
976985
977986 dm(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(dj(di, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
978987 }
979- let eK = gF._1
980- let dn = gF._2
988+ let eL = gG._1
989+ let dn = gG._2
981990 if ((dn != unit))
982- then eK
983- else throw(("Y calculation error, Y = " + toString(eK)))
991+ then eL
992+ else throw(("Y calculation error, Y = " + toString(eL)))
984993 }
985994
986995
987-func gG () = valueOrElse(getBoolean(aU, aH(toString(this))), false)
996+func gH () = valueOrElse(getBoolean(aU, aH(toString(this))), false)
988997
989998
990999 @Callable(da)
991-func calculateAmountOutForSwapREADONLY (gH,gC,gI) = {
992- let gJ = if ((gC == false))
1000+func calculateAmountOutForSwapREADONLY (gI,gD,gJ) = {
1001+ let gK = if ((gD == false))
9931002 then {
994- let gK = aW(this, al())
995- let gD = (toBigInt(ca(aW(this, ak()))) + toBigInt(gH))
996- $Tuple2(gK, gD)
1003+ let gL = aW(this, al())
1004+ let gE = (toBigInt(ca(aW(this, ak()))) + toBigInt(gI))
1005+ $Tuple2(gL, gE)
9971006 }
9981007 else {
999- let gK = aW(this, ak())
1000- let gD = (toBigInt(ca(aW(this, al()))) + toBigInt(gH))
1001- $Tuple2(gK, gD)
1008+ let gL = aW(this, ak())
1009+ let gE = (toBigInt(ca(aW(this, al()))) + toBigInt(gI))
1010+ $Tuple2(gL, gE)
10021011 }
1003- let gK = gJ._1
1004- let gD = gJ._2
1012+ let gL = gK._1
1013+ let gE = gK._2
10051014 let bv = bn()
10061015 let du = bv[x]
10071016 let dv = bv[y]
10081017 let cM = [toBigInt(ca(du)), toBigInt(ca(dv))]
1009- let eC = cL(cM)
1010- let eK = gB(gC, eC, toBigInt(gH))
1011- let gL = ((toBigInt(ca(gK)) - eK) - toBigInt(1))
1012- let gM = max([0, toInt(gL)])
1013- let gN = if ((gC == false))
1014- then [((toBigInt(ca(du)) + toBigInt(gH)) + toBigInt(gI)), (toBigInt(ca(dv)) - gL)]
1015- else [(toBigInt(ca(du)) - gL), ((toBigInt(ca(dv)) + toBigInt(gH)) + toBigInt(gI))]
1016- let gO = cL(gN)
1017- let eh = if ((gO >= eC))
1018+ let eD = cL(cM)
1019+ let eL = gC(gD, eD, toBigInt(gI))
1020+ let gM = ((toBigInt(ca(gL)) - eL) - toBigInt(1))
1021+ let gN = max([0, toInt(gM)])
1022+ let gO = if ((gD == false))
1023+ then [((toBigInt(ca(du)) + toBigInt(gI)) + toBigInt(gJ)), (toBigInt(ca(dv)) - gM)]
1024+ else [(toBigInt(ca(du)) - gM), ((toBigInt(ca(dv)) + toBigInt(gI)) + toBigInt(gJ))]
1025+ let gP = cL(gO)
1026+ let ei = if ((gP >= eD))
10181027 then true
1019- else throw(makeString(["new D is fewer error", toString(eC), toString(gO)], "__"))
1020- if ((eh == eh))
1021- then $Tuple2(nil, gM)
1028+ else throw(makeString(["new D is fewer error", toString(eD), toString(gP)], "__"))
1029+ if ((ei == ei))
1030+ then $Tuple2(nil, gN)
10221031 else throw("Strict value is not equal to itself.")
10231032 }
10241033
10251034
10261035
10271036 @Callable(da)
1028-func calculateAmountOutForSwapAndSendTokens (gH,gC,gP,gQ,gI) = {
1029- let gR = {
1037+func calculateAmountOutForSwapAndSendTokens (gI,gD,gQ,gR,gJ) = {
1038+ let gS = {
10301039 let be = invoke(aU, "getSwapContractREADONLY", nil, nil)
10311040 if ($isInstanceOf(be, "String"))
10321041 then be
10331042 else throw(($getType(be) + " couldn't be cast to String"))
10341043 }
1035- let gS = {
1044+ let gT = {
10361045 let be = invoke(aU, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
10371046 if ($isInstanceOf(be, "Boolean"))
10381047 then be
10391048 else throw(($getType(be) + " couldn't be cast to Boolean"))
10401049 }
1041- let gT = if (!(bi(da.caller)))
1050+ let gU = if (!(bi(da.caller)))
10421051 then if (if (bk())
10431052 then true
10441053 else (bz == t))
10451054 then true
1046- else gS
1055+ else gT
10471056 else false
1048- let gU = [if (if (!(gT))
1057+ let gV = [if (if (!(gU))
10491058 then true
1050- else gy(da))
1059+ else gz(da))
10511060 then true
1052- else ba("swap operation is blocked by admin"), if ((value(da.payments[0]).amount >= gH))
1061+ else ba("swap operation is blocked by admin"), if ((value(da.payments[0]).amount >= gI))
10531062 then true
1054- else ba("Wrong amount"), if ((da.caller == addressFromStringValue(gR)))
1063+ else ba("Wrong amount"), if ((da.caller == addressFromStringValue(gS)))
10551064 then true
10561065 else ba("Permission denied")]
1057- if ((gU == gU))
1066+ if ((gV == gV))
10581067 then {
1059- let ft = value(da.payments[0])
1060- let gV = bt(ft.assetId)
1061- let gW = if ((gC == false))
1068+ let fu = value(da.payments[0])
1069+ let gW = bt(fu.assetId)
1070+ let gX = if ((gD == false))
10621071 then {
1063- let gK = aW(this, al())
1064- let gD = (ca(gV) - value(da.payments[0]).amount)
1065- $Tuple2(gK, gD)
1072+ let gL = aW(this, al())
1073+ let gE = (ca(gW) - value(da.payments[0]).amount)
1074+ $Tuple2(gL, gE)
10661075 }
10671076 else {
1068- let gK = aW(this, ak())
1069- let gD = (ca(gV) - value(da.payments[0]).amount)
1070- $Tuple2(gK, gD)
1077+ let gL = aW(this, ak())
1078+ let gE = (ca(gW) - value(da.payments[0]).amount)
1079+ $Tuple2(gL, gE)
10711080 }
1072- let gK = gW._1
1073- let gD = gW._2
1081+ let gL = gX._1
1082+ let gE = gX._2
10741083 let bv = bn()
10751084 let du = bv[x]
10761085 let dv = bv[y]
1077- let cM = if ((gC == false))
1086+ let cM = if ((gD == false))
10781087 then [(toBigInt(ca(du)) - toBigInt(value(da.payments[0]).amount)), toBigInt(ca(dv))]
10791088 else [toBigInt(ca(du)), (toBigInt(ca(dv)) - toBigInt(value(da.payments[0]).amount))]
1080- let eC = cL(cM)
1081- let eK = gB(gC, eC, toBigInt(0))
1082- let gL = ((toBigInt(ca(gK)) - eK) - toBigInt(1))
1083- let gM = max([0, toInt(gL)])
1084- let gX = if ((gM >= gP))
1089+ let eD = cL(cM)
1090+ let eL = gC(gD, eD, toBigInt(0))
1091+ let gM = ((toBigInt(ca(gL)) - eL) - toBigInt(1))
1092+ let gN = max([0, toInt(gM)])
1093+ let gY = if ((gN >= gQ))
10851094 then true
10861095 else throw("Exchange result is fewer coins than expected")
1087- if ((gX == gX))
1096+ if ((gY == gY))
10881097 then {
1089- let gN = if ((gC == false))
1090- then [(toBigInt(ca(du)) + toBigInt(gI)), (toBigInt(ca(dv)) - gL)]
1091- else [(toBigInt(ca(du)) - gL), (toBigInt(ca(dv)) + toBigInt(gI))]
1092- let gO = cL(gN)
1093- let eh = if ((gO >= eC))
1098+ let gO = if ((gD == false))
1099+ then [(toBigInt(ca(du)) + toBigInt(gJ)), (toBigInt(ca(dv)) - gM)]
1100+ else [(toBigInt(ca(du)) - gM), (toBigInt(ca(dv)) + toBigInt(gJ))]
1101+ let gP = cL(gO)
1102+ let ei = if ((gP >= eD))
10941103 then true
10951104 else throw("new D is fewer error")
1096- if ((eh == eh))
1105+ if ((ei == ei))
10971106 then {
1098- let fc = if (gC)
1099- then -(gM)
1100- else gI
1101- let fd = if (gC)
1102- then gI
1103- else -(gM)
1104- let gt = fb(fc, fd, 0)._1
1105- if ((gt == gt))
1106- then $Tuple2([ScriptTransfer(addressFromStringValue(gQ), gM, br(gK))], gM)
1107+ let fd = if (gD)
1108+ then -(gN)
1109+ else gJ
1110+ let fe = if (gD)
1111+ then gJ
1112+ else -(gN)
1113+ let gu = fc(fd, fe, 0)._1
1114+ if ((gu == gu))
1115+ then $Tuple2([ScriptTransfer(addressFromStringValue(gR), gN, br(gL))], gN)
11071116 else throw("Strict value is not equal to itself.")
11081117 }
11091118 else throw("Strict value is not equal to itself.")
11101119 }
11111120 else throw("Strict value is not equal to itself.")
11121121 }
11131122 else throw("Strict value is not equal to itself.")
11141123 }
11151124
11161125
11171126
11181127 @Callable(da)
11191128 func constructor (Z) = {
1120- let eG = gA(da)
1121- if ((eG == eG))
1129+ let eH = gB(da)
1130+ if ((eH == eH))
11221131 then [StringEntry(Z(), Z)]
11231132 else throw("Strict value is not equal to itself.")
11241133 }
11251134
11261135
11271136
11281137 @Callable(da)
1129-func put (gY,gZ) = {
1130- let ha = bF()
1131- let hb = valueOrErrorMessage(addressFromString(ha[D]), "Wr st addr")
1132- let hc = valueOrErrorMessage(addressFromString(ha[F]), "Wr sl addr")
1133- if ((0 > gY))
1138+func put (gZ,ha) = {
1139+ let hb = bF()
1140+ let hc = valueOrErrorMessage(addressFromString(hb[D]), "Wr st addr")
1141+ let hd = valueOrErrorMessage(addressFromString(hb[F]), "Wr sl addr")
1142+ if ((0 > gZ))
11341143 then throw("Wrong slippage")
11351144 else if ((size(da.payments) != 2))
11361145 then throw("2 pmnts expd")
11371146 else {
1138- let hd = toBigInt(value(da.payments[0]).amount)
1139- let he = toBigInt(value(da.payments[1]).amount)
1140- let eX = (toBigInt(ca(bt(bB))) - hd)
1141- if ((eX == eX))
1147+ let he = toBigInt(value(da.payments[0]).amount)
1148+ let hf = toBigInt(value(da.payments[1]).amount)
1149+ let eY = (toBigInt(ca(bt(bB))) - he)
1150+ if ((eY == eY))
11421151 then {
1143- let eY = (toBigInt(ca(bt(bC))) - he)
1144- if ((eY == eY))
1152+ let eZ = (toBigInt(ca(bt(bC))) - hf)
1153+ if ((eZ == eZ))
11451154 then {
1146- let eZ = toBigInt(value(assetInfo(bA)).quantity)
1147- if ((eZ == eZ))
1155+ let fa = toBigInt(value(assetInfo(bA)).quantity)
1156+ if ((fa == fa))
11481157 then {
1149- let fa = eT(hd, he, toBigInt(0))
1150- if ((fa == fa))
1158+ let fb = eU(he, hf, toBigInt(0))
1159+ if ((fb == fb))
11511160 then {
1152- let hf = fv(toString(da.caller), toBase58String(da.transactionId), AttachedPayment(value(da.payments[0]).assetId, value(da.payments[0]).amount), da.payments[1], gY, true, false, true, 0, "")
1153- let eu = hf._2
1154- let hg = hf._7
1155- let dM = hf._9
1156- let ev = hf._10
1157- let ew = hf._11
1158- let du = hf._12
1159- let dv = hf._13
1160- let eg = invoke(aU, "emit", [eu], nil)
1161- if ((eg == eg))
1161+ let hg = fw(toString(da.caller), toBase58String(da.transactionId), AttachedPayment(value(da.payments[0]).assetId, value(da.payments[0]).amount), da.payments[1], gZ, true, false, true, 0, "")
1162+ let ev = hg._2
1163+ let hh = hg._7
1164+ let dM = hg._9
1165+ let ew = hg._10
1166+ let ex = hg._11
1167+ let du = hg._12
1168+ let dv = hg._13
1169+ let eh = invoke(aU, "emit", [ev], nil)
1170+ if ((eh == eh))
11621171 then {
1163- let hh = {
1164- let aQ = eg
1172+ let hi = {
1173+ let aQ = eh
11651174 if ($isInstanceOf(aQ, "Address"))
11661175 then {
1167- let hi = aQ
1168- invoke(hi, "emit", [eu], nil)
1176+ let hj = aQ
1177+ invoke(hj, "emit", [ev], nil)
11691178 }
11701179 else unit
11711180 }
1172- if ((hh == hh))
1181+ if ((hi == hi))
11731182 then {
1174- let hj = if ((ev > 0))
1175- then invoke(hc, "put", nil, [AttachedPayment(du, ev)])
1183+ let hk = if ((ew > 0))
1184+ then invoke(hd, "put", nil, [AttachedPayment(du, ew)])
11761185 else nil
1177- if ((hj == hj))
1186+ if ((hk == hk))
11781187 then {
1179- let hk = if ((ew > 0))
1180- then invoke(hc, "put", nil, [AttachedPayment(dv, ew)])
1188+ let hl = if ((ex > 0))
1189+ then invoke(hd, "put", nil, [AttachedPayment(dv, ex)])
11811190 else nil
1182- if ((hk == hk))
1191+ if ((hl == hl))
11831192 then {
1184- let hl = if (gZ)
1193+ let hm = if (ha)
11851194 then {
1186- let hm = invoke(hb, "stake", nil, [AttachedPayment(hg, eu)])
1187- if ((hm == hm))
1195+ let hn = invoke(hc, "stake", nil, [AttachedPayment(hh, ev)])
1196+ if ((hn == hn))
11881197 then nil
11891198 else throw("Strict value is not equal to itself.")
11901199 }
1191- else [ScriptTransfer(da.caller, eu, hg)]
1192- let hn = fb(0, 0, 0)
1193- let gt = hn._1
1194- let eS = hn._2
1195- let ho = if ((eS >= fa))
1200+ else [ScriptTransfer(da.caller, ev, hh)]
1201+ let ho = fc(0, 0, 0)
1202+ let gu = ho._1
1203+ let eT = ho._2
1204+ let hp = if ((eT >= fb))
11961205 then true
1197- else ba(makeString(["updated DLp lower than current DLp", toString(eX), toString(eY), toString(eZ), toString(fa), toString(eS), toString(ev), toString(ew)], " "))
1198- if ((ho == ho))
1206+ else ba(makeString(["updated DLp lower than current DLp", toString(eY), toString(eZ), toString(fa), toString(fb), toString(eT), toString(ew), toString(ex)], " "))
1207+ if ((hp == hp))
11991208 then {
1200- let hp = value(assetInfo(bA)).quantity
1201- if ((hp == hp))
1202- then ((dM ++ hl) ++ gt)
1209+ let hq = value(assetInfo(bA)).quantity
1210+ if ((hq == hq))
1211+ then ((dM ++ hm) ++ gu)
12031212 else throw("Strict value is not equal to itself.")
12041213 }
12051214 else throw("Strict value is not equal to itself.")
12061215 }
12071216 else throw("Strict value is not equal to itself.")
12081217 }
12091218 else throw("Strict value is not equal to itself.")
12101219 }
12111220 else throw("Strict value is not equal to itself.")
12121221 }
12131222 else throw("Strict value is not equal to itself.")
12141223 }
12151224 else throw("Strict value is not equal to itself.")
12161225 }
12171226 else throw("Strict value is not equal to itself.")
12181227 }
12191228 else throw("Strict value is not equal to itself.")
12201229 }
12211230 else throw("Strict value is not equal to itself.")
12221231 }
12231232 }
12241233
12251234
12261235
12271236 @Callable(da)
1228-func putOneTknV2 (fX,gZ) = {
1229- let hq = {
1237+func putOneTknV2 (fY,ha) = {
1238+ let hr = {
12301239 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12311240 if ($isInstanceOf(be, "Boolean"))
12321241 then be
12331242 else throw(($getType(be) + " couldn't be cast to Boolean"))
12341243 }
1235- let fz = if (!(bi(da.caller)))
1244+ let fA = if (!(bi(da.caller)))
12361245 then if (if (if (bk())
12371246 then true
12381247 else (bz == r))
12391248 then true
12401249 else (bz == t))
12411250 then true
1242- else hq
1251+ else hr
12431252 else false
1244- let gU = [if (if (!(fz))
1253+ let gV = [if (if (!(fA))
12451254 then true
1246- else gy(da))
1255+ else gz(da))
12471256 then true
12481257 else ba("put operation is blocked by admin"), if ((size(da.payments) == 1))
12491258 then true
12501259 else ba("exactly 1 payment are expected")]
1251- if ((gU == gU))
1260+ if ((gV == gV))
12521261 then {
12531262 let du = toBase58String(value(bB))
12541263 let dv = toBase58String(value(bC))
12551264 let dt = bA
1256- let gb = bD
1257- let gc = bE
1265+ let gc = bD
1266+ let gd = bE
12581267 let ds = if ((da.caller == this))
12591268 then da.originCaller
12601269 else da.caller
1261- let ft = value(da.payments[0])
1262- let dq = toBase58String(value(ft.assetId))
1263- let dW = ft.amount
1264- let fa = if ((ft.assetId == bB))
1265- then eT(toBigInt(dW), toBigInt(0), toBigInt(0))
1266- else eT(toBigInt(0), toBigInt(dW), toBigInt(0))
1267- if ((fa == fa))
1270+ let fu = value(da.payments[0])
1271+ let dq = toBase58String(value(fu.assetId))
1272+ let dW = fu.amount
1273+ let fb = if ((fu.assetId == bB))
1274+ then eU(toBigInt(dW), toBigInt(0), toBigInt(0))
1275+ else eU(toBigInt(0), toBigInt(dW), toBigInt(0))
1276+ if ((fb == fb))
12681277 then {
1269- let hr = fA(dW, dq, toString(ds), toBase58String(da.transactionId), true)
1270- if ((hr == hr))
1278+ let hs = fB(dW, dq, toString(ds), toBase58String(da.transactionId), true)
1279+ if ((hs == hs))
12711280 then {
1272- let cK = hr._3
1273- let dM = hr._2
1274- let hs = hr._1
1275- let eu = if (if ((fX > 0))
1276- then (fX > hs)
1281+ let cK = hs._3
1282+ let dM = hs._2
1283+ let ht = hs._1
1284+ let ev = if (if ((fY > 0))
1285+ then (fY > ht)
12771286 else false)
1278- then ba(makeString(["amount to receive is less than ", toString(fX)], ""))
1279- else hs
1280- let hf = invoke(aU, "emit", [eu], nil)
1281- if ((hf == hf))
1287+ then ba(makeString(["amount to receive is less than ", toString(fY)], ""))
1288+ else ht
1289+ let hg = invoke(aU, "emit", [ev], nil)
1290+ if ((hg == hg))
12821291 then {
1283- let hh = {
1284- let aQ = hf
1292+ let hi = {
1293+ let aQ = hg
12851294 if ($isInstanceOf(aQ, "Address"))
12861295 then {
1287- let hi = aQ
1288- invoke(hi, "emit", [eu], nil)
1296+ let hj = aQ
1297+ invoke(hj, "emit", [ev], nil)
12891298 }
12901299 else unit
12911300 }
1292- if ((hh == hh))
1301+ if ((hi == hi))
12931302 then {
1294- let hl = if (gZ)
1303+ let hm = if (ha)
12951304 then {
1296- let hm = invoke(bH, "stakeFor", [toString(da.caller)], [AttachedPayment(dt, eu)])
1297- if ((hm == hm))
1305+ let hn = invoke(bH, "stakeFor", [toString(da.caller)], [AttachedPayment(dt, ev)])
1306+ if ((hn == hn))
12981307 then nil
12991308 else throw("Strict value is not equal to itself.")
13001309 }
1301- else [ScriptTransfer(da.caller, eu, dt)]
1302- let gn = if ((cK > 0))
1310+ else [ScriptTransfer(da.caller, ev, dt)]
1311+ let go = if ((cK > 0))
13031312 then [ScriptTransfer(bm, cK, fromBase58String(dq))]
13041313 else nil
1305- let ht = if ((this == bm))
1314+ let hu = if ((this == bm))
13061315 then $Tuple2(0, 0)
13071316 else {
1308- let hu = if ((ft.assetId == bB))
1317+ let hv = if ((fu.assetId == bB))
13091318 then true
13101319 else false
1311- if (hu)
1320+ if (hv)
13121321 then $Tuple2(-(cK), 0)
13131322 else $Tuple2(0, -(cK))
13141323 }
1315- let fc = ht._1
1316- let fd = ht._2
1317- let hv = fb(fc, fd, 0)
1318- let gt = hv._1
1319- let eS = hv._2
1320- let gu = ff(fa, eS)
1321- if ((gu == gu))
1322- then $Tuple2((((dM ++ hl) ++ gn) ++ gt), eu)
1324+ let fd = hu._1
1325+ let fe = hu._2
1326+ let hw = fc(fd, fe, 0)
1327+ let gu = hw._1
1328+ let eT = hw._2
1329+ let gv = fg(fb, eT)
1330+ if ((gv == gv))
1331+ then $Tuple2((((dM ++ hm) ++ go) ++ gu), ev)
13231332 else throw("Strict value is not equal to itself.")
13241333 }
13251334 else throw("Strict value is not equal to itself.")
13261335 }
13271336 else throw("Strict value is not equal to itself.")
13281337 }
13291338 else throw("Strict value is not equal to itself.")
13301339 }
13311340 else throw("Strict value is not equal to itself.")
13321341 }
13331342 else throw("Strict value is not equal to itself.")
13341343 }
13351344
13361345
13371346
13381347 @Callable(da)
1339-func putForFree (hw) = if ((0 > hw))
1348+func putForFree (hx) = if ((0 > hx))
13401349 then throw("Wrong slpg")
13411350 else if ((size(da.payments) != 2))
13421351 then throw("2 pmnts expd")
13431352 else {
1344- let hx = fv(toString(da.caller), toBase58String(da.transactionId), AttachedPayment(value(da.payments[0]).assetId, value(da.payments[0]).amount), da.payments[1], hw, false, false, true, 0, "")
1345- let dM = hx._9
1346- let hd = toBigInt(value(da.payments[0]).amount)
1347- let he = toBigInt(value(da.payments[1]).amount)
1348- let fa = eT(hd, he, toBigInt(0))
1349- if ((fa == fa))
1353+ let hy = fw(toString(da.caller), toBase58String(da.transactionId), AttachedPayment(value(da.payments[0]).assetId, value(da.payments[0]).amount), da.payments[1], hx, false, false, true, 0, "")
1354+ let dM = hy._9
1355+ let he = toBigInt(value(da.payments[0]).amount)
1356+ let hf = toBigInt(value(da.payments[1]).amount)
1357+ let fb = eU(he, hf, toBigInt(0))
1358+ if ((fb == fb))
13501359 then {
1351- let hy = fb(0, 0, 0)
1352- let gt = hy._1
1353- let eS = hy._2
1354- let gu = ff(fa, eS)
1355- if ((gu == gu))
1356- then (dM ++ gt)
1360+ let hz = fc(0, 0, 0)
1361+ let gu = hz._1
1362+ let eT = hz._2
1363+ let gv = fg(fb, eT)
1364+ if ((gv == gv))
1365+ then (dM ++ gu)
13571366 else throw("Strict value is not equal to itself.")
13581367 }
13591368 else throw("Strict value is not equal to itself.")
13601369 }
13611370
13621371
13631372
13641373 @Callable(da)
13651374 func get () = {
1366- let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1367- if ((fa == fa))
1375+ let fb = eU(toBigInt(0), toBigInt(0), toBigInt(0))
1376+ if ((fb == fb))
13681377 then {
1369- let eg = fs(da)
1370- let hz = eg._1
1371- let dL = eg._2
1372- let dW = eg._3
1373- let dq = eg._4
1374- let dM = eg._5
1375- let eH = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
1376- if ((eH == eH))
1378+ let eh = ft(da)
1379+ let hA = eh._1
1380+ let dL = eh._2
1381+ let dW = eh._3
1382+ let dq = eh._4
1383+ let dM = eh._5
1384+ let eI = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
1385+ if ((eI == eI))
13771386 then {
1378- let hA = fb(-(hz), -(dL), 0)
1379- let gt = hA._1
1380- let eS = hA._2
1381- let gu = ff(fa, eS)
1382- if ((gu == gu))
1383- then (dM ++ gt)
1387+ let hB = fc(-(hA), -(dL), 0)
1388+ let gu = hB._1
1389+ let eT = hB._2
1390+ let gv = fg(fb, eT)
1391+ if ((gv == gv))
1392+ then (dM ++ gu)
13841393 else throw("Strict value is not equal to itself.")
13851394 }
13861395 else throw("Strict value is not equal to itself.")
13871396 }
13881397 else throw("Strict value is not equal to itself.")
13891398 }
13901399
13911400
13921401
13931402 @Callable(da)
1394-func getOneTknV2 (fW,fX) = {
1395- let hq = {
1403+func getOneTknV2 (fX,fY) = {
1404+ let hr = {
13961405 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13971406 if ($isInstanceOf(be, "Boolean"))
13981407 then be
13991408 else throw(($getType(be) + " couldn't be cast to Boolean"))
14001409 }
1401- let fu = if (!(bi(da.caller)))
1410+ let fv = if (!(bi(da.caller)))
14021411 then if (if (bk())
14031412 then true
14041413 else (bz == t))
14051414 then true
1406- else hq
1415+ else hr
14071416 else false
1408- let gU = [if (if (!(fu))
1417+ let gV = [if (if (!(fv))
14091418 then true
1410- else gy(da))
1419+ else gz(da))
14111420 then true
14121421 else ba("get operation is blocked by admin"), if ((size(da.payments) == 1))
14131422 then true
14141423 else ba("exactly 1 payment are expected")]
1415- if ((gU == gU))
1424+ if ((gV == gV))
14161425 then {
1417- let hB = fV(fW, fX, da.payments, da.caller, da.originCaller, da.transactionId)
1418- let dM = hB._1
1419- let gg = hB._2
1420- $Tuple2(dM, gg)
1426+ let hC = fW(fX, fY, da.payments, da.caller, da.originCaller, da.transactionId)
1427+ let dM = hC._1
1428+ let gh = hC._2
1429+ $Tuple2(dM, gh)
14211430 }
14221431 else throw("Strict value is not equal to itself.")
14231432 }
14241433
14251434
14261435
14271436 @Callable(da)
14281437 func refreshDLp () = {
1429- let hC = valueOrElse(getInteger(at), 0)
1430- let hD = if (((height - hC) >= aw))
1438+ let hD = valueOrElse(getInteger(at), 0)
1439+ let hE = if (((height - hD) >= aw))
14311440 then unit
14321441 else ba(makeString([toString(aw), " blocks have not passed since the previous call"], ""))
1433- if ((hD == hD))
1442+ if ((hE == hE))
14341443 then {
1435- let fm = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), bc("invalid dLp"))
1436- let hE = fb(0, 0, 0)
1437- let hF = hE._1
1438- let eS = hE._2
1439- let fe = if ((fm != eS))
1440- then hF
1444+ let fn = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, as), "0")), bc("invalid dLp"))
1445+ let hF = fc(0, 0, 0)
1446+ let hG = hF._1
1447+ let eT = hF._2
1448+ let ff = if ((fn != eT))
1449+ then hG
14411450 else ba("nothing to refresh")
1442- $Tuple2(fe, toString(eS))
1451+ $Tuple2(ff, toString(eT))
14431452 }
14441453 else throw("Strict value is not equal to itself.")
14451454 }
14461455
14471456
14481457
14491458 @Callable(da)
1450-func getOneTknV2READONLY (fW,hG) = {
1459+func getOneTknV2READONLY (fX,hH) = {
14511460 let du = toBase58String(value(bB))
14521461 let dv = toBase58String(value(bC))
14531462 let dt = toBase58String(value(bA))
14541463 let cM = [toBigInt(ca(du)), toBigInt(ca(dv))]
1455- let eR = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dt)), "invalid lp asset").quantity)
1464+ let eS = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dt)), "invalid lp asset").quantity)
14561465 let co = cL(cM)
1457- let cn = (co - fraction(toBigInt(hG), co, eR))
1458- let hH = if ((fW == du))
1466+ let cn = (co - fraction(toBigInt(hH), co, eS))
1467+ let hI = if ((fX == du))
14591468 then 0
1460- else if ((fW == dv))
1469+ else if ((fX == dv))
14611470 then 1
14621471 else throw("invalid out asset id")
1463- let hI = eB(cM, hH, cn)
1464- let gL = (cM[hH] - hI)
1465- let gM = max([0, toInt((gL - f))])
1466- let hJ = cI(gM, bf)
1467- let gf = hJ._1
1468- let cK = hJ._2
1469- $Tuple2(nil, $Tuple2(gf, cK))
1472+ let hJ = eC(cM, hI, cn)
1473+ let gM = (cM[hI] - hJ)
1474+ let gN = max([0, toInt((gM - f))])
1475+ let hK = cI(gN, bf)
1476+ let gg = hK._1
1477+ let cK = hK._2
1478+ $Tuple2(nil, $Tuple2(gg, cK))
14701479 }
14711480
14721481
14731482
14741483 @Callable(da)
1475-func getOneTknV2WithBonusREADONLY (fW,hG) = {
1484+func getOneTknV2WithBonusREADONLY (fX,hH) = {
14761485 let du = toBase58String(value(bB))
14771486 let dv = toBase58String(value(bC))
14781487 let dt = toBase58String(value(bA))
14791488 let dA = ca(du)
14801489 let dC = ca(dv)
1481- let hK = {
1482- let be = invoke(this, "getOneTknV2READONLY", [fW, hG], nil)
1490+ let hL = {
1491+ let be = invoke(this, "getOneTknV2READONLY", [fX, hH], nil)
14831492 if ($isInstanceOf(be, "(Int, Int)"))
14841493 then be
14851494 else throw(($getType(be) + " couldn't be cast to (Int, Int)"))
14861495 }
1487- let gf = hK._1
1488- let cK = hK._2
1489- let eg = do("", dt, hG, this)
1490- let dK = eg._1
1491- let dL = eg._2
1492- let hL = (dK + dL)
1493- let fU = if ((hL == 0))
1494- then if ((gf == 0))
1496+ let gg = hL._1
1497+ let cK = hL._2
1498+ let eh = do("", dt, hH, this)
1499+ let dK = eh._1
1500+ let dL = eh._2
1501+ let hM = (dK + dL)
1502+ let fV = if ((hM == 0))
1503+ then if ((gg == 0))
14951504 then 0
14961505 else throw("bonus calculation error")
1497- else fraction((gf - hL), a, hL)
1498- $Tuple2(nil, $Tuple3(gf, cK, fU))
1506+ else fraction((gg - hM), a, hM)
1507+ $Tuple2(nil, $Tuple3(gg, cK, fV))
14991508 }
15001509
15011510
15021511
15031512 @Callable(da)
1504-func getNoLess (hM,hN) = {
1505- let eg = fs(da)
1506- let dK = eg._1
1507- let dL = eg._2
1508- let dW = eg._3
1509- let dq = eg._4
1510- let dM = eg._5
1511- if ((hM > dK))
1512- then throw(((("Failed: " + toString(dK)) + " < ") + toString(hM)))
1513- else if ((hN > dL))
1514- then throw(((("Failed: " + toString(dL)) + " < ") + toString(hN)))
1513+func getNoLess (hN,hO) = {
1514+ let eh = ft(da)
1515+ let dK = eh._1
1516+ let dL = eh._2
1517+ let dW = eh._3
1518+ let dq = eh._4
1519+ let dM = eh._5
1520+ if ((hN > dK))
1521+ then throw(((("Failed: " + toString(dK)) + " < ") + toString(hN)))
1522+ else if ((hO > dL))
1523+ then throw(((("Failed: " + toString(dL)) + " < ") + toString(hO)))
15151524 else {
1516- let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1517- if ((fa == fa))
1525+ let fb = eU(toBigInt(0), toBigInt(0), toBigInt(0))
1526+ if ((fb == fb))
15181527 then {
1519- let hO = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
1520- if ((hO == hO))
1528+ let hP = invoke(aU, "burn", [dW], [AttachedPayment(dq, dW)])
1529+ if ((hP == hP))
15211530 then {
1522- let hP = fb(-(dK), -(dL), 0)
1523- let gt = hP._1
1524- let eS = hP._2
1525- let gu = ff(fa, eS)
1526- if ((gu == gu))
1527- then (dM ++ gt)
1531+ let hQ = fc(-(dK), -(dL), 0)
1532+ let gu = hQ._1
1533+ let eT = hQ._2
1534+ let gv = fg(fb, eT)
1535+ if ((gv == gv))
1536+ then (dM ++ gu)
15281537 else throw("Strict value is not equal to itself.")
15291538 }
15301539 else throw("Strict value is not equal to itself.")
15311540 }
15321541 else throw("Strict value is not equal to itself.")
15331542 }
15341543 }
15351544
15361545
15371546
15381547 @Callable(da)
15391548 func unstakeAndGet (cJ) = {
1540- let hQ = if ((size(da.payments) != 0))
1549+ let hR = if ((size(da.payments) != 0))
15411550 then throw("No pmnts expd")
15421551 else true
1543- if ((hQ == hQ))
1552+ if ((hR == hR))
15441553 then {
1545- let hR = bF()
1546- let hg = bA
1547- let hS = valueOrErrorMessage(addressFromString(hR[D]), "Wr st addr")
1548- let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1549- if ((fa == fa))
1554+ let hS = bF()
1555+ let hh = bA
1556+ let hT = valueOrErrorMessage(addressFromString(hS[D]), "Wr st addr")
1557+ let fb = eU(toBigInt(0), toBigInt(0), toBigInt(0))
1558+ if ((fb == fb))
15501559 then {
1551- let hT = invoke(hS, "unstake", [toBase58String(hg), cJ], nil)
1552- if ((hT == hT))
1560+ let hU = invoke(hT, "unstake", [toBase58String(hh), cJ], nil)
1561+ if ((hU == hU))
15531562 then {
1554- let eg = do(toBase58String(da.transactionId), toBase58String(hg), cJ, da.caller)
1555- let dK = eg._1
1556- let dL = eg._2
1557- let dy = parseIntValue(eg._9)
1558- let dM = eg._10
1559- let fu = if (!(bi(da.caller)))
1563+ let eh = do(toBase58String(da.transactionId), toBase58String(hh), cJ, da.caller)
1564+ let dK = eh._1
1565+ let dL = eh._2
1566+ let dy = parseIntValue(eh._9)
1567+ let dM = eh._10
1568+ let fv = if (!(bi(da.caller)))
15601569 then if (bk())
15611570 then true
15621571 else (bz == t)
15631572 else false
1564- let hU = if (fu)
1573+ let hV = if (fv)
15651574 then throw(("Blocked: " + toString(dy)))
15661575 else true
1567- if ((hU == hU))
1576+ if ((hV == hV))
15681577 then {
1569- let hV = invoke(aU, "burn", [cJ], [AttachedPayment(hg, cJ)])
1570- if ((hV == hV))
1578+ let hW = invoke(aU, "burn", [cJ], [AttachedPayment(hh, cJ)])
1579+ if ((hW == hW))
15711580 then {
1572- let hW = fb(-(dK), -(dL), 0)
1573- let gt = hW._1
1574- let eS = hW._2
1575- let gu = ff(fa, eS)
1576- if ((gu == gu))
1577- then (dM ++ gt)
1581+ let hX = fc(-(dK), -(dL), 0)
1582+ let gu = hX._1
1583+ let eT = hX._2
1584+ let gv = fg(fb, eT)
1585+ if ((gv == gv))
1586+ then (dM ++ gu)
15781587 else throw("Strict value is not equal to itself.")
15791588 }
15801589 else throw("Strict value is not equal to itself.")
15811590 }
15821591 else throw("Strict value is not equal to itself.")
15831592 }
15841593 else throw("Strict value is not equal to itself.")
15851594 }
15861595 else throw("Strict value is not equal to itself.")
15871596 }
15881597 else throw("Strict value is not equal to itself.")
15891598 }
15901599
15911600
15921601
15931602 @Callable(da)
1594-func unstakeAndGetNoLess (hX,hY,hN) = {
1595- let fu = if (!(bi(da.caller)))
1603+func unstakeAndGetNoLess (hY,hZ,hO) = {
1604+ let fv = if (!(bi(da.caller)))
15961605 then if (bk())
15971606 then true
15981607 else (bz == t)
15991608 else false
1600- let gU = [if (!(fu))
1609+ let gV = [if (!(fv))
16011610 then true
16021611 else throw("get operation is blocked by admin"), if ((size(da.payments) == 0))
16031612 then true
16041613 else throw("no payments are expected")]
1605- if ((gU == gU))
1614+ if ((gV == gV))
16061615 then {
1607- let fa = eT(toBigInt(0), toBigInt(0), toBigInt(0))
1608- if ((fa == fa))
1616+ let fb = eU(toBigInt(0), toBigInt(0), toBigInt(0))
1617+ if ((fb == fb))
16091618 then {
1610- let hT = invoke(bH, "unstake", [toBase58String(bA), hX], nil)
1611- if ((hT == hT))
1619+ let hU = invoke(bH, "unstake", [toBase58String(bA), hY], nil)
1620+ if ((hU == hU))
16121621 then {
1613- let hZ = do(toBase58String(da.transactionId), toBase58String(bA), hX, da.caller)
1614- let dK = hZ._1
1615- let dL = hZ._2
1616- let dM = hZ._10
1617- let ia = [if ((dK >= hY))
1622+ let ia = do(toBase58String(da.transactionId), toBase58String(bA), hY, da.caller)
1623+ let dK = ia._1
1624+ let dL = ia._2
1625+ let dM = ia._10
1626+ let ib = [if ((dK >= hZ))
16181627 then true
1619- else throw(makeString(["amount asset amount to receive is less than ", toString(hY)], "")), if ((dL >= hN))
1628+ else throw(makeString(["amount asset amount to receive is less than ", toString(hZ)], "")), if ((dL >= hO))
16201629 then true
1621- else throw(makeString(["price asset amount to receive is less than ", toString(hN)], ""))]
1622- if ((ia == ia))
1630+ else throw(makeString(["price asset amount to receive is less than ", toString(hO)], ""))]
1631+ if ((ib == ib))
16231632 then {
1624- let hO = invoke(aU, "burn", [hX], [AttachedPayment(bA, hX)])
1625- if ((hO == hO))
1633+ let hP = invoke(aU, "burn", [hY], [AttachedPayment(bA, hY)])
1634+ if ((hP == hP))
16261635 then {
1627- let ib = fb(-(dK), -(dL), 0)
1628- let gt = ib._1
1629- let eS = ib._2
1630- let gu = ff(fa, eS)
1631- if ((gu == gu))
1632- then (dM ++ gt)
1636+ let ic = fc(-(dK), -(dL), 0)
1637+ let gu = ic._1
1638+ let eT = ic._2
1639+ let gv = fg(fb, eT)
1640+ if ((gv == gv))
1641+ then (dM ++ gu)
16331642 else throw("Strict value is not equal to itself.")
16341643 }
16351644 else throw("Strict value is not equal to itself.")
16361645 }
16371646 else throw("Strict value is not equal to itself.")
16381647 }
16391648 else throw("Strict value is not equal to itself.")
16401649 }
16411650 else throw("Strict value is not equal to itself.")
16421651 }
16431652 else throw("Strict value is not equal to itself.")
16441653 }
16451654
16461655
16471656
16481657 @Callable(da)
1649-func unstakeAndGetOneTknV2 (hX,fW,fX) = {
1650- let hq = {
1658+func unstakeAndGetOneTknV2 (hY,fX,fY) = {
1659+ let hr = {
16511660 let be = invoke(aU, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
16521661 if ($isInstanceOf(be, "Boolean"))
16531662 then be
16541663 else throw(($getType(be) + " couldn't be cast to Boolean"))
16551664 }
1656- let fu = if (!(bi(da.caller)))
1665+ let fv = if (!(bi(da.caller)))
16571666 then if (if (bk())
16581667 then true
16591668 else (bz == t))
16601669 then true
1661- else hq
1670+ else hr
16621671 else false
1663- let gU = [if (if (!(fu))
1672+ let gV = [if (if (!(fv))
16641673 then true
1665- else gy(da))
1674+ else gz(da))
16661675 then true
16671676 else ba("get operation is blocked by admin"), if ((size(da.payments) == 0))
16681677 then true
16691678 else ba("no payments are expected")]
1670- if ((gU == gU))
1679+ if ((gV == gV))
16711680 then {
1672- let hR = bF()
1673- let hg = bA
1674- let hS = valueOrErrorMessage(addressFromString(hR[D]), "Wr st addr")
1681+ let hS = bF()
1682+ let hh = bA
1683+ let hT = valueOrErrorMessage(addressFromString(hS[D]), "Wr st addr")
16751684 let ds = da.caller
1676- let ic = this
1677- let hT = invoke(hS, "unstakeINTERNAL", [hg, hX, ds.bytes, ic.bytes], nil)
1678- if ((hT == hT))
1685+ let id = this
1686+ let hU = invoke(hT, "unstakeINTERNAL", [hh, hY, ds.bytes, id.bytes], nil)
1687+ if ((hU == hU))
16791688 then {
1680- let id = fV(fW, fX, [AttachedPayment(hg, hX)], da.caller, da.originCaller, da.transactionId)
1681- let dM = id._1
1682- let gg = id._2
1683- $Tuple2(dM, gg)
1689+ let ie = fW(fX, fY, [AttachedPayment(hh, hY)], da.caller, da.originCaller, da.transactionId)
1690+ let dM = ie._1
1691+ let gh = ie._2
1692+ $Tuple2(dM, gh)
16841693 }
16851694 else throw("Strict value is not equal to itself.")
16861695 }
16871696 else throw("Strict value is not equal to itself.")
16881697 }
16891698
16901699
16911700
16921701 @Callable(da)
1693-func putOneTknV2WithBonusREADONLY (ie,if) = {
1694- let ig = fA(ie, if, "", "", true)
1695- let fP = ig._1
1696- let dM = ig._2
1697- let cK = ig._3
1698- let fU = ig._4
1699- $Tuple2(nil, $Tuple3(fP, cK, fU))
1702+func putOneTknV2WithBonusREADONLY (if,ig) = {
1703+ let ih = fB(if, ig, "", "", true)
1704+ let fQ = ih._1
1705+ let dM = ih._2
1706+ let cK = ih._3
1707+ let fV = ih._4
1708+ $Tuple2(nil, $Tuple3(fQ, cK, fV))
17001709 }
17011710
17021711
17031712
17041713 @Callable(da)
1705-func putOneTknV2WithoutTakeFeeREADONLY (ie,if) = {
1706- let ih = fA(ie, if, "", "", false)
1707- let fP = ih._1
1708- let dM = ih._2
1709- let cK = ih._3
1710- let fU = ih._4
1711- $Tuple2(nil, $Tuple3(fP, cK, fU))
1714+func putOneTknV2WithoutTakeFeeREADONLY (if,ig) = {
1715+ let ii = fB(if, ig, "", "", false)
1716+ let fQ = ii._1
1717+ let dM = ii._2
1718+ let cK = ii._3
1719+ let fV = ii._4
1720+ $Tuple2(nil, $Tuple3(fQ, cK, fV))
17121721 }
17131722
17141723
17151724
17161725 @Callable(da)
1717-func activate (ii,ij) = if ((toString(da.caller) != toString(aU)))
1726+func activate (ij,ik) = if ((toString(da.caller) != toString(aU)))
17181727 then throw("denied")
1719- else $Tuple2([StringEntry(ak(), ii), StringEntry(al(), ij), StringEntry(am(), toString(l)), StringEntry(an(height), toString(l))], "success")
1728+ else $Tuple2([StringEntry(ak(), ij), StringEntry(al(), ik), StringEntry(am(), toString(l)), StringEntry(an(height), toString(l))], "success")
17201729
17211730
17221731
17231732 @Callable(da)
17241733 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bn())
17251734
17261735
17271736
17281737 @Callable(da)
17291738 func getAccBalanceWrapperREADONLY (cb) = $Tuple2(nil, ca(cb))
17301739
17311740
17321741
17331742 @Callable(da)
17341743 func calcPricesWrapperREADONLY (cu,cv,cz) = {
1735- let ik = cy(cu, cv, cz)
1736- $Tuple2(nil, [toString(ik[0]), toString(ik[1]), toString(ik[2])])
1744+ let il = cy(cu, cv, cz)
1745+ $Tuple2(nil, [toString(il[0]), toString(il[1]), toString(il[2])])
17371746 }
17381747
17391748
17401749
17411750 @Callable(da)
1742-func fromX18WrapperREADONLY (N,il) = $Tuple2(nil, M(parseBigIntValue(N), il))
1751+func fromX18WrapperREADONLY (N,im) = $Tuple2(nil, M(parseBigIntValue(N), im))
17431752
17441753
17451754
17461755 @Callable(da)
17471756 func toX18WrapperREADONLY (J,K) = $Tuple2(nil, toString(I(J, K)))
17481757
17491758
17501759
17511760 @Callable(da)
17521761 func calcPriceBigIntWrapperREADONLY (cd,ce) = $Tuple2(nil, toString(cc(parseBigIntValue(cd), parseBigIntValue(ce))))
17531762
17541763
17551764
17561765 @Callable(da)
1757-func estimatePutOperationWrapperREADONLY (dp,cj,dO,dP,dQ,dR,im,dS,dT) = $Tuple2(nil, dN(dp, cj, dO, dP, dQ, dR, im, dS, dT, true, false, 0, ""))
1766+func estimatePutOperationWrapperREADONLY (dp,cj,dO,dP,dQ,dR,in,dS,dT) = $Tuple2(nil, dN(dp, cj, dO, dP, dQ, dR, in, dS, dT, true, false, 0, ""))
17581767
17591768
17601769
17611770 @Callable(da)
1762-func estimateGetOperationWrapperREADONLY (dp,in,dr,im) = {
1763- let eg = do(dp, in, dr, addressFromStringValue(im))
1764- $Tuple2(nil, $Tuple10(eg._1, eg._2, eg._3, eg._4, eg._5, eg._6, eg._7, toString(eg._8), eg._9, eg._10))
1771+func estimateGetOperationWrapperREADONLY (dp,io,dr,in) = {
1772+ let eh = do(dp, io, dr, addressFromStringValue(in))
1773+ $Tuple2(nil, $Tuple10(eh._1, eh._2, eh._3, eh._4, eh._5, eh._6, eh._7, toString(eh._8), eh._9, eh._10))
17651774 }
17661775
17671776
17681777
17691778 @Callable(da)
17701779 func changeAmp () = {
1771- let io = invoke(aU, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1772- let ip = {
1773- let aQ = io
1780+ let ip = invoke(aU, "getChangeAmpConfigREADONLY", [toString(this)], nil)
1781+ let iq = {
1782+ let aQ = ip
17741783 if ($isInstanceOf(aQ, "List[Any]"))
17751784 then {
1776- let iq = aQ
1785+ let ir = aQ
17771786 $Tuple3({
1778- let be = iq[0]
1787+ let be = ir[0]
17791788 if ($isInstanceOf(be, "Int"))
17801789 then be
17811790 else throw(($getType(be) + " couldn't be cast to Int"))
17821791 }, {
1783- let be = iq[1]
1792+ let be = ir[1]
17841793 if ($isInstanceOf(be, "Int"))
17851794 then be
17861795 else throw(($getType(be) + " couldn't be cast to Int"))
17871796 }, {
1788- let be = iq[2]
1797+ let be = ir[2]
17891798 if ($isInstanceOf(be, "Int"))
17901799 then be
17911800 else throw(($getType(be) + " couldn't be cast to Int"))
17921801 })
17931802 }
17941803 else ba("invalid entry type")
17951804 }
1796- let ir = ip._1
1797- let is = ip._2
1798- let it = ip._3
1799- let iu = parseIntValue(getStringValue(am()))
1800- let iv = (iu + is)
1801- let iw = if ((0 > is))
1802- then if ((it > iv))
1803- then it
1804- else iv
1805- else if ((iv > it))
1806- then it
1807- else iv
1808- let ix = valueOrElse(getInteger(ap()), 0)
1809- let iy = (ix + ir)
1810- let gU = [if ((height > iy))
1805+ let is = iq._1
1806+ let it = iq._2
1807+ let iu = iq._3
1808+ let iv = parseIntValue(getStringValue(am()))
1809+ let iw = (iv + it)
1810+ let ix = if ((0 > it))
1811+ then if ((iu > iw))
1812+ then iu
1813+ else iw
1814+ else if ((iw > iu))
1815+ then iu
1816+ else iw
1817+ let iy = valueOrElse(getInteger(ap()), 0)
1818+ let iz = (iy + is)
1819+ let gV = [if ((height > iz))
18111820 then true
1812- else ba("try again in few blocks"), if ((iu != iw))
1821+ else ba("try again in few blocks"), if ((iv != ix))
18131822 then true
18141823 else ba("already reached target")]
1815- if ((gU == gU))
1816- then [IntegerEntry(ap(), height), StringEntry(am(), toString(iw)), StringEntry(an(height), toString(iw))]
1824+ if ((gV == gV))
1825+ then [IntegerEntry(ap(), height), StringEntry(am(), toString(ix)), StringEntry(an(height), toString(ix))]
18171826 else throw("Strict value is not equal to itself.")
18181827 }
18191828
18201829
1821-@Verifier(iz)
1822-func iA () = {
1823- let iB = {
1824- let aQ = gv()
1830+@Verifier(iA)
1831+func iB () = {
1832+ let iC = {
1833+ let aQ = gw()
18251834 if ($isInstanceOf(aQ, "ByteVector"))
18261835 then {
1827- let gz = aQ
1828- gz
1836+ let gA = aQ
1837+ gA
18291838 }
18301839 else if ($isInstanceOf(aQ, "Unit"))
1831- then iz.senderPublicKey
1840+ then iA.senderPublicKey
18321841 else throw("Match error")
18331842 }
1834- let aQ = iz
1843+ let aQ = iA
18351844 if ($isInstanceOf(aQ, "Order"))
18361845 then {
1837- let fi = aQ
1838- let iC = bl()
1839- let iD = if (gG())
1846+ let fj = aQ
1847+ let iD = bl()
1848+ let iE = if (gH())
18401849 then $Tuple2(true, "")
1841- else fh(fi)
1842- let aK = iD._1
1843- let aL = iD._2
1844- let aM = sigVerify(fi.bodyBytes, fi.proofs[0], fi.senderPublicKey)
1845- let aN = sigVerify(fi.bodyBytes, fi.proofs[1], iC)
1850+ else fi(fj)
1851+ let aK = iE._1
1852+ let aL = iE._2
1853+ let aM = sigVerify(fj.bodyBytes, fj.proofs[0], fj.senderPublicKey)
1854+ let aN = sigVerify(fj.bodyBytes, fj.proofs[1], iD)
18461855 if (if (if (aK)
18471856 then aM
18481857 else false)
18491858 then aN
18501859 else false)
18511860 then true
18521861 else aJ(aK, aL, aM, aN)
18531862 }
18541863 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18551864 then {
18561865 let aV = aQ
1857- if (sigVerify(iz.bodyBytes, iz.proofs[0], iB))
1866+ if (sigVerify(iA.bodyBytes, iA.proofs[0], iC))
18581867 then true
18591868 else {
1860- let iE = blake2b256(value(aV.script))
1861- let iF = fromBase64String(value(getString(aU, aF())))
1862- let iG = scriptHash(this)
1863- if ((iF == iE))
1864- then (iG != iE)
1869+ let iF = blake2b256(value(aV.script))
1870+ let iG = fromBase64String(value(getString(aU, aF())))
1871+ let iH = scriptHash(this)
1872+ if ((iG == iF))
1873+ then (iH != iF)
18651874 else false
18661875 }
18671876 }
1868- else sigVerify(iz.bodyBytes, iz.proofs[0], iB)
1877+ else sigVerify(iA.bodyBytes, iA.proofs[0], iC)
18691878 }
18701879

github/deemru/w8io/3ef1775 
498.90 ms