tx · HjsH5rQaUnzwmTQBwsTcPXASbdeV3777gCMb9j3WuJac

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03600000 Waves

2022.12.16 09:51 [2362516] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "HjsH5rQaUnzwmTQBwsTcPXASbdeV3777gCMb9j3WuJac", "fee": 3600000, "feeAssetId": null, "timestamp": 1671173421369, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "5i9uJp9BrSwjM7uQa6gvVqV3N6J1bkJj1njR35ACqkHT44Qw4ew5g3g3keTJSgx7TZvzvVLda94NYjSd14UsqZdg" ], "script": "base64:BgLNKAgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgRiaWczIgRiaWc0IgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgZrZXlETHAiFWtleURMcFJlZnJlc2hlZEhlaWdodCISa2V5RExwUmVmcmVzaERlbGF5IhZkTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9kTHBSZWZyZXNoRGVsYXkiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzI1NTc0NDEiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTc4NzIxODIxNyIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiBGdldEQiAnhwIgN4cDAiA3hwMSIBcyIBYSIDYW5uIgt4cDBfeHAxX25fbiIFYW5uX3MiBWFubl8xIgljYWxjRE5leHQiAWQiAmRkIgNkZGQiAmRwIgRjYWxjIgNhY2MiAWkiBWROZXh0IghkRGlmZlJhdyIFZERpZmYiA2FyciINJHQwMjAxNDUyMDE5MyICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiBWZvdW5kIgdnZXRET2xkIgFuIgphUHJlY2lzaW9uIhBhbm5fc19hUHJlY2lzaW9uIg5hbm5fYVByZWNpc2lvbiICbjEiA2N1ciINJHQwMjA4MjIyMDg0MiINJHQwMjEyNjMyMTMxMCIFZ2V0WUQiAUQiAXgiAWMiAWIiDSR0MDIxODEwMjE4MzAiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjIxMzcyMjE4NCIHY2FsY0RMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIgpscEVtaXNzaW9uIgp1cGRhdGVkRExwIg5jYWxjQ3VycmVudERMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50RExwIhJyZWZyZXNoRExwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRETHAiBm9sZERMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI0MTIzMjQzMzUiA2RMcCINJHQwMjQ2NjUyNDc2NSINdW51c2VkQWN0aW9ucyIGZExwTmV3Igxpc09yZGVyVmFsaWQiAmNnIgNwbXQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyILd2l0aFRha2VGZWUiDWNoZWNoRW1pc3Npb24iDSR0MDI3MDgyMjc1NDQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyNzU1MDI3NzI2IgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI3NzMwMjc5NjkiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciBmNoZWNrRCIIbHBBbW91bnQiDnBvb2xQcm9wb3J0aW9uIg9hbW91bnRBc3NldFBhcnQiDnByaWNlQXNzZXRQYXJ0IglscEFtdEJvdGgiBWJvbnVzIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDMwMDM0MzAxNDUiAUAiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMzAzMzUzMDY0MiIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIg0kdDAzMTQyNzMxNzc3IhBmZWVBbW91bnRGb3JDYWxjIhBvdXRJbkFtb3VudEFzc2V0Ig0kdDAzMTc4MDMxODg4IhFyZWZyZXNoRExwQWN0aW9ucyIRaXNVcGRhdGVkRExwVmFsaWQiAW0iAnBtIgJwZCIJaXNNYW5hZ2VyIgJwayICbW0iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgJjbSIDaHBtIgNjcG0iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgphbUFzc2V0UG10IgpwckFzc2V0UG10IgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIg0kdDAzNTc0NDM1ODA5IiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCIGY2hlY2tzIg0kdDAzNjk0NjM3MTA0Igdlc3RpbUxQIg0kdDAzNzkxOTM4MjY4IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMzgyNzEzODM3OSIHbWF4U2xwZyIGZXN0UHV0Ig0kdDAzOTMzODM5NDAzIglvdXRBbXRBbXQiDSR0MDQwMTkyNDAyNzQiDWlzR2V0RGlzYWJsZWQiDSR0MDQwODkyNDEwNDciGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDQxNTcxNDE2MzUiEGRMcFVwZGF0ZUFjdGlvbnMiDWxwQXNzZXRBbW91bnQiBWluZGV4IgRuZXdZIgJkeSILdG90YWxHZXRSYXciDSR0MDQyNTM1NDI1ODQiDSR0MDQyOTI5NDMwNDQiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNDQyMTI0NDI5MyINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDSR0MDQ1MzU2NDU0MzciDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiDSR0MDQ2Njg1NDY3NjYiDSR0MDQ3NzAwNDc4ODgiEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIg0kdDA0ODE0NzQ4MjUwIg0kdDA0ODUyOTQ4NjMzIghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2h6AAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEAAgABaAkAtgIBAAMAAWkJALYCAQAEAAFqCQC2AgEJAGUCBQFhCQBpAgkAaAIFAWEAAQUBYQABawIFV0FWRVMAAWwCAzEwMAABbQIBMQABbgICX18AAW8CAAABcAABAAFxAAIAAXIAAwABcwAEAAF0AAEAAXUAAgABdgADAAF3AAQAAXgABQABeQAGAAF6AAcAAUEACAABQgAJAAFDAAEAAUQABgABRQAHAAFGAAoAAUcJAGsDAAoFAWEAkE4BAUgCAUkBSgkAvAIDCQC2AgEFAUkFAWMJALYCAQUBSgEBSwIBTAFNCQCgAwEJALwCAwUBTAkAtgIBBQFNBQFjAQFOAwFPAVABUQkAawMFAU8FAVAFAVEBAVIBAUwDCQC/AgIFAWQFAUwJAL4CAQUBTAUBTAEBUwEBTAMJAL8CAgUBZAUBTAkAvgIBBQFMBQFMAQFUAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBVQACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFWAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFXAAIRJXMlc19fcHJpY2VfX2xhc3QBAVgCAVkBWgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVkJAMwIAgkApAMBBQFaBQNuaWwFAW4BAmFhAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFiAgJfXwUCYWMBAmFkAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFiAgJfXwUCYWMBAmFlAAIPJXNfX2Ftb3VudEFzc2V0AQJhZgACDiVzX19wcmljZUFzc2V0AQJhZwACByVzX19hbXABAmFoAAINJXNfX2FkZG9uQWRkcgACYWkCByVzX19mZWUAAmFqCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFpBQFHAAJhawkAuQkCCQDMCAICAiVzCQDMCAICA2RMcAUDbmlsBQFuAAJhbAkAuQkCCQDMCAICAiVzCQDMCAICEmRMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFuAAJhbQkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hETHBEZWxheQUDbmlsBQFuAAJhbgABAAJhbwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhbQUCYW4BAmFwAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFxAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhcgICYXMCYXQJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFzAgJfXwUCYXQCCF9fY29uZmlnAQJhdQECYXYJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYXYBAmF3AAIMJXNfX3NodXRkb3duAQJheAACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJheQACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhegMCYUECYUICYUMJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUCYUECCyBzbmRyVmFsaWQ9CQClAwEFAmFCAgwgbXRjaHJWYWxpZD0JAKUDAQUCYUMBAmFEAQFMBAJhRQUBTAMJAAECBQJhRQIGU3RyaW5nBAJhRgUCYUUFAmFGCQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwECYUcCAmFIAmFJCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYUgFAmFJCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFICQDMCAICAS4JAMwIAgUCYUkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYUoCAmFIAmFJCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYUgFAmFJCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFICQDMCAICAS4JAMwIAgUCYUkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYUsBAmFMCQACAQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJhTAUDbmlsAgEgAQJhTQECYUwJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYUwFA25pbAIBIAACYU4JARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhRwIFBHRoaXMJAQFUAAACYU8JAQJhRwIFBHRoaXMJAQJhZwABAmFQAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhTgkBAmF3AAcBAmFRAAkA2QQBCQECYUcCBQJhTgkBAmFxAAACYVIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhRwIFAmFOCQECYXkAAQJhUwAEAmFUCQECYUcCBQR0aGlzCQECYWUABAJhVQkBAmFHAgUEdGhpcwkBAmFmAAQCYVYJAQJhSgIFAmFOCQECYXUBBQJhVQQCYXMJAQJhSgIFAmFOCQECYXUBBQJhVAkAtQkCCQECYUcCBQJhTgkBAmFyAgkApAMBBQJhcwkApAMBBQJhVgUBbgECYVcBAmFYAwkAAAIFAmFYBQFrBQR1bml0CQDZBAEFAmFYAQJhWQECYVgDCQAAAgUCYVgFBHVuaXQFAWsJANgEAQkBBXZhbHVlAQUCYVgBAmFaAQJiYQkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmJhBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmEFAXUJANkEAQkAkQMCBQJiYQUBdgkBAmFXAQkAkQMCBQJiYQUBdwkBAmFXAQkAkQMCBQJiYQUBeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJhBQF5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmEFAXoAAmJiCQECYVoBCQECYVMAAAJiYwUCYmIAAmJkCAUCYmMCXzEAAmJlCAUCYmMCXzIAAmJmCAUCYmMCXzMAAmJnCAUCYmMCXzQAAmJoCAUCYmMCXzUAAmJpCAUCYmMCXzYAAmJqCAUCYmMCXzcBAmJrAAkAtQkCCQECYUcCBQJhTgkBAmFwAAUBbgACYmwJAQJiawAAAmJtCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibAUBQwIgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MAAmJuCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibAUBRQIgSW52YWxpZCBzbGlwYWdlIGNvbnRyYWN0IGFkZHJlc3MAAmJvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibAUBRgIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwACYnAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJsBQFEAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAQJicQoCYnICYnMCYnQCYnUCYnYCYncCYngCYnkCYnoCYkEJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJyCQDMCAIJAKQDAQUCYnMJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkJAMwIAgkApAMBBQJiegkAzAgCCQCkAwEFAmJBBQNuaWwFAW4BAmJCBgJiQwJiRAJiRQJidQJieAJieQkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJDCQDMCAIJAKQDAQUCYkQJAMwIAgkApAMBBQJiRQkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYngJAMwIAgkApAMBBQJieQUDbmlsBQFuAQJiRgECYkcDCQAAAgUCYkcCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJHAQJiSAICYkkCYkoJALwCAwUCYkkFAWMFAmJKAQJiSwMCYkwCYk0CYk4EAmJPCQC8AgMJALgCAgUCYkwFAmJNBQFiBQJiTQQCYlAJAL8CAgkAuAICBQJiTgkBAVIBBQJiTwUBZAMJAQEhAQUCYlAJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCYk8JAJQKAgUCYlAJAJkDAQkAzAgCBQJiTAkAzAgCBQJiTQUDbmlsAQJiUQMCYlICYlMCYlQEAmJPCQC8AgMFAmJTBQFiBQJiUgQCYlUJAL8CAgUCYlQFAmJPAwMFAmJVBgkAvwICBQJiUwUCYlIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmJTAgEgCQCmAwEFAmJSAgEgCQCmAwEFAmJPAgEgCQCmAwEFAmJUBQJiVQECYlYEAmJXAmJYAmJZAmJaBAJjYQkBAUgCBQJiWQUCYlcEAmNiCQEBSAIFAmJaBQJiWAkBAmJIAgUCY2IFAmNhAQJjYwMCYlkCYloCY2QEAmNlCQECYVMABAJjZgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNlBQF5BAJjZwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNlBQF6BAJjaAkBAmJWBAUCY2YFAmNnBQJiWQUCYloEAmJKCQEBSAIFAmJZBQJjZgQCYkkJAQFIAgUCYloFAmNnBAJjaQkBAUgCBQJjZAUBYQQCY2oJAQJiSAIFAmJKBQJjaQQCY2sJAQJiSAIFAmJJBQJjaQkAzAgCBQJjaAkAzAgCBQJjagkAzAgCBQJjawUDbmlsAQJjbAMCYlkCYloCY2QEAmNtCQECY2MDBQJiWQUCYloFAmNkCQDMCAIJAQFLAgkAkQMCBQJjbQAABQFhCQDMCAIJAQFLAgkAkQMCBQJjbQABBQFhCQDMCAIJAQFLAgkAkQMCBQJjbQACBQFhBQNuaWwBAmNuAQJjbwQCY3AJAGsDBQJjbwUCYWoFAWEJAJQKAgkAZQIFAmNvBQJjcAUCY3ABAmNxBAJjcgJjcwJjdAJjdQQCY2UJAQJhUwAEAmN2CQCRAwIFAmNlBQF2BAJjdwkAkQMCBQJjZQUBdwQCY3gJAJEDAgUCY2UFAXgEAmN5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2UFAXkEAmN6CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2UFAXoEAmNBCQCRAwIFAmNlBQF1BAJjQggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmN2AgtXcm9uZyBMUCBpZAhxdWFudGl0eQMJAQIhPQIFAmN2BQJjcwkAAgECD1dyb25nIHBtdCBhc3NldAQCY0MJAQJiRgEFAmN3BAJjRAkBAUgCBQJjQwUCY3kEAmNFCQECYkYBBQJjeAQCY0YJAQFIAgUCY0UFAmN6BAJjRwkBAmJIAgUCY0YFAmNEBAJjSAkBAUsCBQJjRwUBYQQCY0kJAQFIAgUCY3QFAWEEAmNKCQEBSAIFAmNCBQFhBAJjSwkAvAIDBQJjRAUCY0kFAmNKBAJjTAkAvAIDBQJjRgUCY0kFAmNKBAJjTQkBAUsCBQJjSwUCY3kEAmNOCQEBSwIFAmNMBQJjegQCY08DCQAAAgUCY3ICAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN1BQJjTQMJAAACBQJjdwIFV0FWRVMFBHVuaXQJANkEAQUCY3cJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3UFAmNOAwkAAAIFAmN4AgVXQVZFUwUEdW5pdAkA2QQBBQJjeAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCCQClCAEFAmN1BQJjcgkBAmJCBgUCY00FAmNOBQJjdAUCY0gFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCY0gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0gFA25pbAkAnAoKBQJjTQUCY04FAmN3BQJjeAUCY0MFAmNFBQJjQgUCY0cFAmNBBQJjTwECY1ANAmNyAmJOAmNRAmNSAmNTAmNUAmN1AmNVAmNWAmNXAmNYAmNZAmNaBAJjZQkBAmFTAAQCY3YJANkEAQkAkQMCBQJjZQUBdgQCZGEJAJEDAgUCY2UFAXcEAmRiCQCRAwIFAmNlBQF4BAJkYwkAkQMCBQJjZQUBQQQCZGQJAJEDAgUCY2UFAUIEAmRlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2UFAXkEAmRmCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2UFAXoEAmNBCQCRAwIFAmNlBQF1BAJkZwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjdgIIV3IgbHAgYXMIcXVhbnRpdHkEAmNDAwUCY1UJAQJiRgEFAmRhAwMFAmNXCQAAAgUCY1oFAmRhBwkAZQIJAQJiRgEFAmRhBQJjWQMFAmNXCQECYkYBBQJkYQkAZQIJAQJiRgEFAmRhBQJjUQQCY0UDBQJjVQkBAmJGAQUCZGIDAwUCY1cJAAACBQJjWgUCZGIHCQBlAgkBAmJGAQUCZGIFAmNZAwUCY1cJAQJiRgEFAmRiCQBlAgkBAmJGAQUCZGIFAmNTBAJkaAkBAUgCBQJjUQUCZGUEAmRpCQEBSAIFAmNTBQJkZgQCZGoJAQJiSAIFAmRpBQJkaAQCY0QJAQFIAgUCY0MFAmRlBAJjRgkBAUgCBQJjRQUCZGYEAmRrAwkAAAIFAmRnAAAEAmNHBQFkBAJkbAUBZAQCY2kJAHYGCQC5AgIFAmRoBQJkaQAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUsCBQJjaQUBYQkBAUsCBQJkaAUCZGUJAQFLAgUCZGkFAmRmCQECYkgCCQC3AgIFAmNGBQJkaQkAtwICBQJjRAUCZGgFAmRsBAJjRwkBAmJIAgUCY0YFAmNEBAJkbQkAvAIDCQEBUgEJALgCAgUCY0cFAmRqBQFjBQJjRwQCZGwJAQFIAgUCYk4FAWEDAwMFAmNYCQECIT0CBQJjRwUBZAcJAL8CAgUCZG0FAmRsBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJkbQIDID4gCQCmAwEFAmRsBAJkbgkBAUgCBQJkZwUBYQQCZG8JALwCAwUCZGgFAmNHBQFjBAJkcAkAvAIDBQJkaQUBYwUCY0cEAmRxAwkAvwICBQJkbwUCZGkJAJQKAgUCZHAFAmRpCQCUCgIFAmRoBQJkbwQCZHIIBQJkcQJfMQQCZHMIBQJkcQJfMgQCY2kJALwCAwUCZG4FAmRzBQJjRgkAlwoFCQEBSwIFAmNpBQFhCQEBSwIFAmRyBQJkZQkBAUsCBQJkcwUCZGYFAmNHBQJkbAQCZHQIBQJkawJfMQQCZHUIBQJkawJfMgQCZHYIBQJkawJfMwQCY0gJAQFLAggFAmRrAl80BQFhBAJkdwkBAUsCCAUCZGsCXzUFAWEDCQBnAgAABQJkdAkAAgECB0xQIDw9IDAEAmR4AwkBASEBBQJjVgAABQJkdAQCZHkJAGUCBQJjUQUCZHUEAmR6CQBlAgUCY1MFAmR2BAJkQQMDBQJjVwkAAAIFAmNaBQJkYQcJAJQKAgUCY1kAAAMDBQJjVwkAAAIFAmNaBQJkYgcJAJQKAgAABQJjWQkAlAoCBQJkdQUCZHYEAmRCCAUCZEECXzEEAmRDCAUCZEECXzIEAmRECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmNICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmN1BQJjcgkBAmJxCgUCZEIFAmRDBQJkeAUCY0gFAmJOBQJkdwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZHkFAmR6BQNuaWwJAJ8KDQUCZHQFAmR4BQJjSAUCY0MFAmNFBQJkZwUCY3YFAmNBBQJkRAUCZHkFAmR6BQJjUgUCY1QBAmRFAQJkRgQCZEcJAJEDAgUCZEYAAAQCZEgJAJEDAgUCZEYAAQQCZEkJALcCAgUCZEcFAmRIAwkAAAIFAmRJBQFlBQFlBAJkSgkBDXBhcnNlSW50VmFsdWUBBQJhTwQCZEsJAGgCBQJkSgACBAJjbQkAvAIDBQJkRwUCZEgFAWYEAmRMCQC8AgMFAmNtBQFpBQFmBAJkTQkAvAIDCQC2AgEFAmRLBQJkSQUBZgQCZE4JALYCAQkAZQIFAmRLAAEKAQJkTwECZFAEAmRRCQC8AgMFAmRQBQJkUAUBZgQCZFIJALwCAwUCZFEFAmRQBQFmBAJkUwkAvAIDBQJkUgUBZgUCZEwJAL0CBAkAtwICBQJkTQkAvAIDBQJkUwUBZwUBZgUCZFAJALcCAgkAvAIDBQJkTgUCZFAFAWYJALwCAwUBaAUCZFMFAWYFB0NFSUxJTkcKAQJkVAICZFUCZFYDCAUCZFUCXzIFAmRVBAJkUAgFAmRVAl8xBAJkVwkBAmRPAQUCZFAEAmRYCQCgAwEJALgCAgUCZFcJAQV2YWx1ZQEFAmRQBAJkWQMJAGYCAAAFAmRYCQEBLQEFAmRYBQJkWAMJAGcCAAEFAmRZCQCUCgIFAmRXBgkAlAoCBQJkVwcEAmRaCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVhCgACZWIFAmRaCgACZWMJAJADAQUCZWIKAAJlZAkAlAoCBQJkSQcKAQJlZQICZWYCZWcDCQBnAgUCZWcFAmVjBQJlZgkBAmRUAgUCZWYJAJEDAgUCZWIFAmVnCgECZWgCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVoAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgUCZWQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZFAIBQJlYQJfMQQCZWkIBQJlYQJfMgMFAmVpBQJkUAkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJkUAECZWoBAmRGBAJlawUBZwQCZEcJAJEDAgUCZEYAAAQCZEgJAJEDAgUCZEYAAQQCZWwJAKcDAQUBbAQCZEoJALkCAgkApwMBBQJhTwUCZWwEAmRJCQC3AgIFAmRHBQJkSAMJAAACBQJkSQUBZQUBZQQCZEsJALkCAgUCZEoFAmVrBAJkTAkAuQICCQC5AgIJALkCAgUCZEcFAmRIBQJlawUCZWsEAmVtCQC6AgIJALkCAgUCZEsFAmRJBQJlbAQCZW4JALgCAgUCZEsFAmVsBAJlbwkAtwICBQJlawUBZgoBAmRUAgJkVQJlcAQCZXEFAmRVBAJkUAgFAmVxAl8xBAJlaQgFAmVxAl8yAwkBAiE9AgUCZWkFBHVuaXQFAmRVBAJkUwkAugICCQC5AgIJALkCAgUCZFAFAmRQBQJkUAUCZEwEAmRXCQC6AgIJALkCAgkAtwICBQJlbQkAuQICBQJkUwUCZWsFAmRQCQC3AgIJALoCAgkAuQICBQJlbgUCZFAFAmVsCQC5AgIFAmVvBQJkUwQCZFkJAQFTAQkAuAICBQJkVwkBBXZhbHVlAQUCZFADCQDAAgIFAWYFAmRZCQCUCgIFAmRXBQJlcAkAlAoCBQJkVwUEdW5pdAQCZFoJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZXIKAAJlYgUCZFoKAAJlYwkAkAMBBQJlYgoAAmVkCQCUCgIFAmRJBQR1bml0CgECZWUCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAQJkVAIFAmVmCQCRAwIFAmViBQJlZwoBAmVoAgJlZgJlZwMJAGcCBQJlZwUCZWMFAmVmCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlaAIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIFAmVkAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmRQCAUCZXICXzEEAmVpCAUCZXICXzIDCQECIT0CBQJlaQUEdW5pdAUCZFAJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZFABAmVzAwJkRgJkVgJldAQCZWsFAWcEAmV1CQCRAwIFAmRGAwkAAAIFAmRWAAAAAQAABAJlbAkApwMBBQFsBAJkSgkAuQICCQCnAwEFAmFPBQJlbAQCZEkFAmV1BAJkSwkAuQICBQJkSgUCZWsEAmV2CQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXQFAmV0CQC5AgIFAmV1BQJlawUCZXQFAmVsCQC5AgIFAmRLBQJlawQCZXcJALgCAgkAtwICBQJkSQkAugICCQC5AgIFAmV0BQJlbAUCZEsFAmV0CgECZFQCAmRVAmVwBAJleAUCZFUEAmV5CAUCZXgCXzEEAmVpCAUCZXgCXzIDCQECIT0CBQJlaQUEdW5pdAUCZFUEAmV6CQC6AgIJALcCAgkAuQICBQJleQUCZXkFAmV2CQC3AgIJALkCAgUBZwUCZXkFAmV3BAJlQQkBAVMBCQC4AgIFAmV6CQEFdmFsdWUBBQJleQMJAMACAgUBZgUCZUEJAJQKAgUCZXoFAmVwCQCUCgIFAmV6BQR1bml0BAJkWgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlQgoAAmViBQJkWgoAAmVjCQCQAwEFAmViCgACZWQJAJQKAgUCZXQFBHVuaXQKAQJlZQICZWYCZWcDCQBnAgUCZWcFAmVjBQJlZgkBAmRUAgUCZWYJAJEDAgUCZWIFAmVnCgECZWgCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVoAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgUCZWQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZXkIBQJlQgJfMQQCZWkIBQJlQgJfMgMJAQIhPQIFAmVpBQR1bml0BQJleQkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJleQECZUMDAmVEAmVFAmVGBAJlRwkAvAIDCQECZEUBCQDMCAIFAmVECQDMCAIFAmVFBQNuaWwFAWMFAmVGAwkAAAIFAmVGBQFlBQFlBQJlRwECZUgDAmVJAmVKAmVLBAJlTAkAuAICCQC2AgEJAQJiRgEJAQJhWQEFAmJnBQJlSQQCZU0JALgCAgkAtgIBCQECYkYBCQECYVkBBQJiaAUCZUoEAmVOCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmYIcXVhbnRpdHkFAmVLBAJlTwkBAmVDAwUCZUwFAmVNBQJlTgUCZU8BAmVQAwJlUQJlUgJlSwQCZUwJAGQCCQECYkYBCQECYVkBBQJiZwUCZVEEAmVNCQBkAgkBAmJGAQkBAmFZAQUCYmgFAmVSBAJlTgkAZAIICQEFdmFsdWUBCQDsBwEFAmJmCHF1YW50aXR5BQJlSwQCZUcJAQJlQwMJALYCAQUCZUwJALYCAQUCZU0JALYCAQUCZU4EAmVTCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhbAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFrCQCmAwEFAmVHBQNuaWwJAJQKAgUCZVMFAmVHAQJlVAICZVUCZUcDCQDAAgIFAmVHBQJlVQYJAQJhSwECInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHABAmVWAQJlVwQCZVgIBQJlVwZhbW91bnQEAmVZCQBuBAgFAmVXBmFtb3VudAgFAmVXBXByaWNlBQFhBQVGTE9PUgQCZVoDCQAAAggFAmVXCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmVYCQEBLQEFAmVZCQCUCgIJAQEtAQUCZVgFAmVZBAJlUQgFAmVaAl8xBAJlUggFAmVaAl8yAwMDCQECYVAABgkAAAIFAmJlBQFyBgkAAAIFAmJlBQFzCQACAQINQWRtaW4gYmxvY2tlZAMDCQECIT0CCAgFAmVXCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYmcGCQECIT0CCAgFAmVXCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJiaAkAAgECCVdyIGFzc2V0cwQCZmEJAKcDAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUCYWsEAmZiCQECZVADBQJlUQUCZVIAAAQCZmMIBQJmYgJfMQQCZmQIBQJmYgJfMgQCZmUJAMACAgUCZmQFAmZhBQJmZQECZmYBAmRWAwkBAiE9AgkAkAMBCAUCZFYIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmZnCQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABAJjcwkBBXZhbHVlAQgFAmZnB2Fzc2V0SWQEAmNZCAUCZmcGYW1vdW50BAJkawkBAmNxBAkA2AQBCAUCZFYNdHJhbnNhY3Rpb25JZAkA2AQBBQJjcwUCY1kIBQJkVgZjYWxsZXIEAmNNCAUCZGsCXzEEAmNOCAUCZGsCXzIEAmNBCQENcGFyc2VJbnRWYWx1ZQEIBQJkawJfOQQCY08IBQJkawNfMTADAwkBAmFQAAYJAAACBQJjQQUBcwkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmNBCQCXCgUFAmNNBQJjTgUCY1kFAmNzBQJjTwECZmgKAmZpAmFjAmZqAmZrAmJOAmNWAmNXAmNYAmNZAmNaBAJkawkBAmNQDQUCYWMFAmJOCAkBBXZhbHVlAQUCZmoGYW1vdW50CAkBBXZhbHVlAQUCZmoHYXNzZXRJZAgJAQV2YWx1ZQEFAmZrBmFtb3VudAgJAQV2YWx1ZQEFAmZrB2Fzc2V0SWQFAmZpCQAAAgUCYWMCAAUCY1YFAmNXBQJjWAUCY1kFAmNaBAJjQQkBDXBhcnNlSW50VmFsdWUBCAUCZGsCXzgDAwMJAQJhUAAGCQAAAgUCY0EFAXEGCQAAAgUCY0EFAXMJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmNBBQJkawECZmwFAmZtAmNzAmN1AmFjAmZuBAJiYQkBAmFTAAQCY3cJAJEDAgUCYmEFAXcEAmN4CQCRAwIFAmJhBQF4BAJjdgkAkQMCBQJiYQUBdgQCZGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBeQQCZGYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBegQCZU4JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmN2AhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJmbwMJAL8CAgUCZU4FAWUGCQACAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJmbwUCZm8EAmNDCQECYkYBBQJjdwQCY0UJAQJiRgEFAmN4BAJmcAMJAAACBQJhYwIACQCUCgIFAmNDBQJjRQMJAAACBQJjcwUCY3cDCQBmAgUCZm0FAmNDCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY0MFAmZtBQJjRQMJAAACBQJjcwUCY3gDCQBmAgUCZm0FAmNFCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjQwkAZQIFAmNFBQJmbQkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmZxCAUCZnACXzEEAmZyCAUCZnACXzIEAmZzAwkAAAIFAmNzBQJjdwkAlAoCBQJmbQAAAwkAAAIFAmNzBQJjeAkAlAoCAAAFAmZtCQACAQIPaW52YWxpZCBwYXltZW50BAJmdAgFAmZzAl8xBAJmdQgFAmZzAl8yBAJmdgMFAmZuCQCVCgMICQECY24BBQJmdAJfMQgJAQJjbgEFAmZ1Al8xCAkBAmNuAQUCZm0CXzIJAJUKAwUCZnQFAmZ1AAAEAmZ3CAUCZnYCXzEEAmZ4CAUCZnYCXzIEAmNwCAUCZnYCXzMEAmZ5CQBkAgUCZnEFAmZ3BAJmegkAZAIFAmZyBQJmeAQCYlMJAQJkRQEJAMwIAgkAtgIBBQJmcQkAzAgCCQC2AgEFAmZyBQNuaWwEAmJSCQECZEUBCQDMCAIJALYCAQUCZnkJAMwIAgkAtgIBBQJmegUDbmlsBAJmQQMJAL8CAgUCYlIFAmJTBgkBBXRocm93AAMJAAACBQJmQQUCZkEEAmZCCQC9AgQFAmVOCQC4AgIFAmJSBQJiUwUCYlMFBUZMT09SBAJjSAkBAUsCCQECYkgCCQEBSAIFAmZ6BQJkZgkBAUgCBQJmeQUCZGUFAWEEAmRECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmNICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmN1BQJhYwkBAmJxCgUCZnQFAmZ1CQCgAwEFAmZCBQJjSAAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmZDCQBrAwUCZnIFAWEFAmZxBAJmRAkAawMFAmZtBQFhCQBkAgUCZkMFAWEEAmZFCQBlAgUCZm0FAmZEBAJmRgkAvAIDBQJlTgkAtgIBBQJmRQkAtgIBBQJmcgQCZkcJAKADAQkAvAIDCQC4AgIFAmZCBQJmRgUBYgUCZkYJAJYKBAkAoAMBBQJmQgUCZEQFAmNwBQJmRwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZkgGAmZJAmZKAmZLAmZpAmZMAmZNBAJiYQkBAmFTAAQCY3YJAJEDAgUCYmEFAXYEAmN3CQCRAwIFAmJhBQF3BAJjeAkAkQMCBQJiYQUBeAQCZk4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBeQQCZk8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBegQCZlAJAJEDAgUCYmEFAXUEAmN1AwkAAAIFAmZpBQJicAUCZkwFAmZpBAJmZwkBBXZhbHVlAQkAkQMCBQJmSwAABAJjcwkBBXZhbHVlAQgFAmZnB2Fzc2V0SWQEAmNZCAUCZmcGYW1vdW50BAJlTwkBAmVIAwUBZQUBZQUBZQMJAAACBQJlTwUCZU8EAmNyCQDYBAEFAmZNAwkBAiE9AgUCY3YJANgEAQUCY3MJAAIBAghXcm9uZyBMUAQCY0MJAQJiRgEFAmN3BAJjRQkBAmJGAQUCY3gEAmZRCgACZlIJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmSQkAzAgCBQJjWQUDbmlsBQNuaWwDCQABAgUCZlICCihJbnQsIEludCkFAmZSCQACAQkArAICCQADAQUCZlICHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkDCQAAAgUCZlEFAmZRBAJjcAgFAmZRAl8yBAJmUwgFAmZRAl8xBAJmVAMDCQBmAgUCZkoAAAkAZgIFAmZKBQJmUwcJAQJhSwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZkoFA25pbAIABQJmUwQCZlUDCQAAAgUCZkkFAmN3CQCWCgQFAmZUAAAJAGUCCQBlAgUCY0MFAmZUBQJjcAUCY0UDCQAAAgUCZkkFAmN4CQCWCgQAAAUCZlQFAmNDCQBlAgkAZQIFAmNFBQJmVAUCY3AJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZlYIBQJmVQJfMQQCZlcIBQJmVQJfMgQCZnkIBQJmVQJfMwQCZnoIBQJmVQJfNAQCZlgJAQJiSAIJAQFIAgUCZnoFAmZPCQEBSAIFAmZ5BQJmTgQCZlkJAQFLAgUCZlgFAWEEAmZaAwkAAAIFAmZJAgVXQVZFUwUEdW5pdAkA2QQBBQJmSQQCZ2EDCQBmAgUCY3AAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhUgUCY3AFAmZaBQNuaWwFA25pbAQCY08JAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjdQUCZlQFAmZaCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQUCY3UFAmNyCQECYkIGBQJmVgUCZlcFAmNZBQJmWQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJmWQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJmWQUDbmlsBQJnYQMJAAACBQJjTwUCY08EAmdiCQD8BwQFAmFOAgRidXJuCQDMCAIFAmNZBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNzBQJjWQUDbmlsAwkAAAIFAmdiBQJnYgQCZ2MEAmdkAwkAAAIFBHRoaXMFAmFSAAAFAmNwBAJnZQMJAAACCQECYVcBBQJmSQUCYmcGBwMFAmdlCQCUCgIJAQEtAQkAZAIFAmZTBQJnZAAACQCUCgIAAAkBAS0BCQBkAgUCZlMFAmdkBAJlUQgFAmdjAl8xBAJlUggFAmdjAl8yBAJnZgkBAmVQAwUCZVEFAmVSAAAEAmdnCAUCZ2YCXzEEAmVHCAUCZ2YCXzIEAmdoCQECZVQCBQJlTwUCZUcDCQAAAgUCZ2gFAmdoCQCUCgIJAM4IAgUCY08FAmdnBQJmVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZ2kABAJhRQkAoggBCQEBVQADCQABAgUCYUUCBlN0cmluZwQCZEkFAmFFCQDZBAEFAmRJAwkAAQIFAmFFAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmdqAAQCYUUJAKIIAQkBAVYAAwkAAQIFAmFFAgZTdHJpbmcEAmRJBQJhRQkA2QQBBQJkSQMJAAECBQJhRQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJnawkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJnbAECZFYEAmFFCQECZ2kAAwkAAQIFAmFFAgpCeXRlVmVjdG9yBAJnbQUCYUUJAAACCAUCZFYPY2FsbGVyUHVibGljS2V5BQJnbQMJAAECBQJhRQIEVW5pdAkAAAIIBQJkVgZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ24BAmRWBAJhRQkBAmdpAAMJAAECBQJhRQIKQnl0ZVZlY3RvcgQCZ20FAmFFAwkAAAIIBQJkVg9jYWxsZXJQdWJsaWNLZXkFAmdtBgUCZ2sDCQABAgUCYUUCBFVuaXQDCQAAAggFAmRWBmNhbGxlcgUEdGhpcwYFAmdrCQACAQILTWF0Y2ggZXJyb3IdAmRWAQtjb25zdHJ1Y3RvcgEBVAQCZXYJAQJnbgEFAmRWAwkAAAIFAmV2BQJldgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAAFAVQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEKc2V0TWFuYWdlcgECZ28EAmV2CQECZ24BBQJkVgMJAAACBQJldgUCZXYEAmdwCQDZBAEFAmdvAwkAAAIFAmdwBQJncAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVgAFAmdvBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBDmNvbmZpcm1NYW5hZ2VyAAQCY20JAQJnagAEAmdxAwkBCWlzRGVmaW5lZAEFAmNtBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJncQUCZ3EEAmdyAwkAAAIIBQJkVg9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmNtBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJncgUCZ3IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUACQDYBAEJAQV2YWx1ZQEFAmNtCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFWAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQNwdXQCAmdzAmd0BAJndQkBAmJrAAQCZ3YJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmd1BQFDAgpXciBzdCBhZGRyBAJndwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ3UFAUUCCldyIHNsIGFkZHIDCQBmAgAABQJncwkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCZFYIcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZ3gJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAGYW1vdW50BAJneQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAQZhbW91bnQEAmVPCQECZUgDBQJneAUCZ3kJALYCAQAAAwkAAAIFAmVPBQJlTwQCZ3oJAQJmaAoJAKUIAQgFAmRWBmNhbGxlcgkA2AQBCAUCZFYNdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZFYIcGF5bWVudHMAAQUCZ3MGBwYAAAIABAJkeAgFAmd6Al8yBAJnQQgFAmd6Al83BAJjTwgFAmd6Al85BAJkeQgFAmd6A18xMAQCZHoIBQJnegNfMTEEAmN3CAUCZ3oDXzEyBAJjeAgFAmd6A18xMwQCZGsJAPwHBAUCYU4CBGVtaXQJAMwIAgUCZHgFA25pbAUDbmlsAwkAAAIFAmRrBQJkawQCZ0IEAmFFBQJkawMJAAECBQJhRQIHQWRkcmVzcwQCZ0MFAmFFCQD8BwQFAmdDAgRlbWl0CQDMCAIFAmR4BQNuaWwFA25pbAUEdW5pdAMJAAACBQJnQgUCZ0IEAmdEAwkAZgIFAmR5AAAJAPwHBAUCZ3cCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjdwUCZHkFA25pbAUDbmlsAwkAAAIFAmdEBQJnRAQCZ0UDCQBmAgUCZHoAAAkA/AcEBQJndwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN4BQJkegUDbmlsBQNuaWwDCQAAAgUCZ0UFAmdFBAJnRgMFAmd0BAJnRwkA/AcEBQJndgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0EFAmR4BQNuaWwDCQAAAgUCZ0cFAmdHBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRWBmNhbGxlcgUCZHgFAmdBBQNuaWwEAmdICQECZVADAAAAAAAABAJnZwgFAmdIAl8xBAJlRwgFAmdIAl8yBAJnaAkBAmVUAgUCZU8FAmVHAwkAAAIFAmdoBQJnaAkAzggCCQDOCAIFAmNPBQJnRgUCZ2cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBC3B1dE9uZVRrblYyAgJmSgJndAQCZ0kKAAJmUgkA/AcEBQJhTgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZSAgdCb29sZWFuBQJmUgkAAgEJAKwCAgkAAwEFAmZSAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnSgMDAwkBAmFQAAYJAAACBQJiZQUBcQYJAAACBQJiZQUBcwYFAmdJBAJnSwkAzAgCAwMJAQEhAQUCZ0oGCQECZ2wBBQJkVgYJAQJhSwECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRWCHBheW1lbnRzAAEGCQECYUsBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJnSwUCZ0sEAmJhCQECYVMABAJjdwkAkQMCBQJiYQUBdwQCY3gJAJEDAgUCYmEFAXgEAmN2CQDZBAEJAJEDAgUCYmEFAXYEAmZOCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmEFAXkEAmZPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmEFAXoEAmN1AwkAAAIIBQJkVgZjYWxsZXIFBHRoaXMIBQJkVgxvcmlnaW5DYWxsZXIIBQJkVgZjYWxsZXIEAmZnCQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABAJjcwkA2AQBCQEFdmFsdWUBCAUCZmcHYXNzZXRJZAQCY1kIBQJmZwZhbW91bnQEAmdMCQECZmwFBQJjWQUCY3MJAKUIAQUCY3UJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQGAwkAAAIFAmdMBQJnTAQCY3AIBQJnTAJfMwQCY08IBQJnTAJfMgQCZ00IBQJnTAJfMQQCZHgDAwkAZgIFAmZKAAAJAGYCBQJmSgUCZ00HCQECYUsBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZKBQNuaWwCAAUCZ00EAmd6CQD8BwQFAmFOAgRlbWl0CQDMCAIFAmR4BQNuaWwFA25pbAMJAAACBQJnegUCZ3oEAmdCBAJhRQUCZ3oDCQABAgUCYUUCB0FkZHJlc3MEAmdDBQJhRQkA/AcEBQJnQwIEZW1pdAkAzAgCBQJkeAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ0IFAmdCBAJnRgMFAmd0BAJnRwkA/AcEBQJibQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3YFAmR4BQNuaWwDCQAAAgUCZ0cFAmdHBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRWBmNhbGxlcgUCZHgFAmN2BQNuaWwEAmdhAwkAZgIFAmNwAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVIFAmNwCQDZBAEFAmNzBQNuaWwFA25pbAQCZ04DCQAAAgUEdGhpcwUCYVIJAJQKAgAAAAAEAmdPAwkAAAIIBQJmZwdhc3NldElkBQJiZwYHAwUCZ08JAJQKAgkBAS0BBQJjcAAACQCUCgIAAAkBAS0BBQJjcAQCZVEIBQJnTgJfMQQCZVIIBQJnTgJfMgQCZ1AJAQJlUAMFAmVRBQJlUgAABAJnZwgFAmdQAl8xBAJlRwgFAmdQAl8yCQCUCgIJAM4IAgkAzggCCQDOCAIFAmNPBQJnRgUCZ2EFAmdnBQJkeAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEKcHV0Rm9yRnJlZQECZ1EDCQBmAgAABQJnUQkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJkVghwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJnUgkBAmZoCgkApQgBCAUCZFYGY2FsbGVyCQDYBAEIBQJkVg10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkVghwYXltZW50cwABBQJnUQcHBgAAAgAEAmNPCAUCZ1ICXzkEAmd4CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABmFtb3VudAQCZ3kJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAEGYW1vdW50BAJlTwkBAmVIAwUCZ3gFAmd5CQC2AgEAAAMJAAACBQJlTwUCZU8EAmdTCQECZVADAAAAAAAABAJnZwgFAmdTAl8xBAJlRwgFAmdTAl8yBAJnaAkBAmVUAgUCZU8FAmVHAwkAAAIFAmdoBQJnaAkAzggCBQJjTwUCZ2cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBA2dldAAEAmRrCQECZmYBBQJkVgQCZ1QIBQJkawJfMQQCY04IBQJkawJfMgQCY1kIBQJkawJfMwQCY3MIBQJkawJfNAQCY08IBQJkawJfNQQCZXcJAPwHBAUCYU4CBGJ1cm4JAMwIAgUCY1kFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3MFAmNZBQNuaWwDCQAAAgUCZXcFAmV3BAJlTwkBAmVIAwkAtgIBAAAJALYCAQAACQC2AgEFAmNZBAJnVQkBAmVQAwkBAS0BBQJnVAkBAS0BBQJjTgAABAJnZwgFAmdVAl8xBAJlRwgFAmdVAl8yBAJnaAkBAmVUAgUCZU8FAmVHAwkAAAIFAmdoBQJnaAkAzggCBQJjTwUCZ2cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBC2dldE9uZVRrblYyAgJmSQJmSgQCZ0kKAAJmUgkA/AcEBQJhTgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZSAgdCb29sZWFuBQJmUgkAAgEJAKwCAgkAAwEFAmZSAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnVgMDCQECYVAABgkAAAIFAmJlBQFzBgUCZ0kEAmdLCQDMCAIDAwkBASEBBQJnVgYJAQJnbAEFAmRWBgkBAmFLAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFYIcGF5bWVudHMAAQYJAQJhSwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdLBQJnSwQCZ1cJAQJmSAYFAmZJBQJmSggFAmRWCHBheW1lbnRzCAUCZFYGY2FsbGVyCAUCZFYMb3JpZ2luQ2FsbGVyCAUCZFYNdHJhbnNhY3Rpb25JZAQCY08IBQJnVwJfMQQCZlQIBQJnVwJfMgkAlAoCBQJjTwUCZlQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBCnJlZnJlc2hETHAABAJnWAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhbAAABAJnWQMJAGcCCQBlAgUGaGVpZ2h0BQJnWAUCYW8FBHVuaXQJAQJhSwEJALkJAgkAzAgCCQCkAwEFAmFvCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJnWQUCZ1kEAmZhCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhawIBMAkBAmFNAQILaW52YWxpZCBkTHAEAmdaCQECZVADAAAAAAAABAJoYQgFAmdaAl8xBAJlRwgFAmdaAl8yBAJlUwMJAQIhPQIFAmZhBQJlRwUCaGEJAQJhSwECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJlUwkApgMBBQJlRwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgETZ2V0T25lVGtuVjJSRUFET05MWQICZkkCaGIEAmJhCQECYVMABAJjdwkAkQMCBQJiYQUBdwQCY3gJAJEDAgUCYmEFAXgEAmN2CQCRAwIFAmJhBQF2BAJkRgkAzAgCCQC2AgEJAQJiRgEFAmN3CQDMCAIJALYCAQkBAmJGAQUCY3gFA25pbAQCZUYJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmN2AhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJiUwkBAmRFAQUCZEYEAmJSCQC4AgIFAmJTCQC8AgMJALYCAQUCaGIFAmJTBQJlRgQCaGMDCQAAAgUCZkkFAmN3AAADCQAAAgUCZkkFAmN4AAEJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCaGQJAQJlcwMFAmRGBQJoYwUCYlIEAmhlCQC4AgIJAJEDAgUCZEYFAmhjBQJoZAQCaGYJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC4AgIFAmhlBQFmBQNuaWwEAmhnCQECY24BBQJoZgQCZlMIBQJoZwJfMQQCY3AIBQJoZwJfMgkAlAoCBQNuaWwJAJQKAgUCZlMFAmNwAmRWARxnZXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJmSQJoYgQCYmEJAQJhUwAEAmN3CQCRAwIFAmJhBQF3BAJjeAkAkQMCBQJiYQUBeAQCY3YJAJEDAgUCYmEFAXYEAmNDCQECYkYBBQJjdwQCY0UJAQJiRgEFAmN4BAJoaAoAAmZSCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZkkJAMwIAgUCaGIFA25pbAUDbmlsAwkAAQIFAmZSAgooSW50LCBJbnQpBQJmUgkAAgEJAKwCAgkAAwEFAmZSAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpBAJmUwgFAmhoAl8xBAJjcAgFAmhoAl8yBAJkawkBAmNxBAIABQJjdgUCaGIFBHRoaXMEAmNNCAUCZGsCXzEEAmNOCAUCZGsCXzIEAmhpCQBkAgUCY00FAmNOBAJmRwMJAAACBQJoaQAAAwkAAAIFAmZTAAAAAAkAAgECF2JvbnVzIGNhbGN1bGF0aW9uIGVycm9yCQBrAwkAZQIFAmZTBQJoaQUBYQUCaGkJAJQKAgUDbmlsCQCVCgMFAmZTBQJjcAUCZkcCZFYBCWdldE5vTGVzcwICaGoCaGsEAmRrCQECZmYBBQJkVgQCY00IBQJkawJfMQQCY04IBQJkawJfMgQCY1kIBQJkawJfMwQCY3MIBQJkawJfNAQCY08IBQJkawJfNQMJAGYCBQJoagUCY00JAAIBCQCsAgIJAKwCAgkArAICAglGYWlsZWQ6ICAJAKQDAQUCY00CAyA8IAkApAMBBQJoagMJAGYCBQJoawUCY04JAAIBCQCsAgIJAKwCAgkArAICAghGYWlsZWQ6IAkApAMBBQJjTgIDIDwgCQCkAwEFAmhrBAJlTwkBAmVIAwkAtgIBAAAJALYCAQAACQC2AgEFAmNZBAJobAkA/AcEBQJhTgIEYnVybgkAzAgCBQJjWQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcwUCY1kFA25pbAMJAAACBQJobAUCaGwEAmhtCQECZVADCQEBLQEFAmNNCQEBLQEFAmNOAAAEAmdnCAUCaG0CXzEEAmVHCAUCaG0CXzIEAmdoCQECZVQCBQJlTwUCZUcDCQAAAgUCZ2gFAmdoCQDOCAIFAmNPBQJnZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgENdW5zdGFrZUFuZEdldAECY28EAmhuAwkBAiE9AgkAkAMBCAUCZFYIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmhuBQJobgQCY2UJAQJhUwAEAmhvCQECYmsABAJnQQkA2QQBCQCRAwIFAmNlBQF2BAJocAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaG8FAUMCCldyIHN0IGFkZHIEAmVPCQECZUgDCQC2AgEAAAkAtgIBAAAJALYCAQAABAJocQkA/AcEBQJocAIHdW5zdGFrZQkAzAgCCQDYBAEFAmdBCQDMCAIFAmNvBQNuaWwFA25pbAMJAAACBQJocQUCaHEEAmRrCQECY3EECQDYBAEIBQJkVg10cmFuc2FjdGlvbklkCQDYBAEFAmdBBQJjbwgFAmRWBmNhbGxlcgQCY00IBQJkawJfMQQCY04IBQJkawJfMgQCY0EJAQ1wYXJzZUludFZhbHVlAQgFAmRrAl85BAJjTwgFAmRrA18xMAQCaHIDAwkBAmFQAAYJAAACBQJjQQUBcwkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFAmNBBgMJAAACBQJocgUCaHIEAmhzCQD8BwQFAmFOAgRidXJuCQDMCAIFAmNvBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdBBQJjbwUDbmlsAwkAAAIFAmhzBQJocwQCaHQJAQJlUAMJAQEtAQUCY00JAQEtAQUCY04AAAQCZ2cIBQJodAJfMQQCZUcIBQJodAJfMgQCZ2gJAQJlVAIFAmVPBQJlRwMJAAACBQJnaAUCZ2gJAM4IAgUCY08FAmdnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJodQJodgJoawQCZ1YDCQECYVAABgkAAAIFAmJlBQFzBAJnSwkAzAgCAwkBASEBBQJnVgYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkVghwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdLBQJnSwQCZU8JAQJlSAMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmhxCQD8BwQFAmJtAgd1bnN0YWtlCQDMCAIJANgEAQUCYmYJAMwIAgUCaHUFA25pbAUDbmlsAwkAAAIFAmhxBQJocQQCaHcJAQJjcQQJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQJANgEAQUCYmYFAmh1CAUCZFYGY2FsbGVyBAJjTQgFAmh3Al8xBAJjTggFAmh3Al8yBAJjTwgFAmh3A18xMAQCaHgJAMwIAgMJAGcCBQJjTQUCaHYGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaHYFA25pbAIACQDMCAIDCQBnAgUCY04FAmhrBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaGsFA25pbAIABQNuaWwDCQAAAgUCaHgFAmh4BAJobAkA/AcEBQJhTgIEYnVybgkAzAgCBQJodQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiZgUCaHUFA25pbAMJAAACBQJobAUCaGwEAmh5CQECZVADCQEBLQEFAmNNCQEBLQEFAmNOAAAEAmdnCAUCaHkCXzEEAmVHCAUCaHkCXzIEAmdoCQECZVQCBQJlTwUCZUcDCQAAAgUCZ2gFAmdoCQDOCAIFAmNPBQJnZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJodQJmSQJmSgQCZ0kKAAJmUgkA/AcEBQJhTgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZSAgdCb29sZWFuBQJmUgkAAgEJAKwCAgkAAwEFAmZSAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnVgMDCQECYVAABgkAAAIFAmJlBQFzBgUCZ0kEAmdLCQDMCAIDAwkBASEBBQJnVgYJAQJnbAEFAmRWBgkBAmFLAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFYIcGF5bWVudHMAAAYJAQJhSwECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdLBQJnSwQCY2UJAQJhUwAEAmhvCQECYmsABAJnQQkA2QQBCQCRAwIFAmNlBQF2BAJocAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCaG8FAUMCCldyIHN0IGFkZHIEAmhxCQD8BwQFAmhwAgd1bnN0YWtlCQDMCAIJANgEAQUCZ0EJAMwIAgUCaHUFA25pbAUDbmlsAwkAAAIFAmhxBQJocQQCaHoJAQJmSAYFAmZJBQJmSgkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0EFAmh1BQNuaWwIBQJkVgZjYWxsZXIIBQJkVgxvcmlnaW5DYWxsZXIIBQJkVg10cmFuc2FjdGlvbklkBAJjTwgFAmh6Al8xBAJmVAgFAmh6Al8yCQCUCgIFAmNPBQJmVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICaEECaEIEAmJhCQECYVMABAJjdwkAkQMCBQJiYQUBdwQCY3gJAJEDAgUCYmEFAXgEAmN2CQCRAwIFAmJhBQF2BAJoQwkBAmZsBQUCaEEFAmhCAgACAAYEAmZCCAUCaEMCXzEEAmNPCAUCaEMCXzIEAmNwCAUCaEMCXzMEAmZHCAUCaEMCXzQJAJQKAgUDbmlsCQCVCgMFAmZCBQJjcAUCZkcCZFYBIXB1dE9uZVRrblYyV2l0aG91dFRha2VGZWVSRUFET05MWQICaEECaEIEAmJhCQECYVMABAJjdwkAkQMCBQJiYQUBdwQCY3gJAJEDAgUCYmEFAXgEAmN2CQCRAwIFAmJhBQF2BAJoRAkBAmZsBQUCaEEFAmhCAgACAAcEAmZCCAUCaEQCXzEEAmNPCAUCaEQCXzIEAmNwCAUCaEQCXzMEAmZHCAUCaEQCXzQJAJQKAgUDbmlsCQCVCgMFAmZCBQJjcAUCZkcCZFYBCGFjdGl2YXRlAgJoRQJoRgMJAQIhPQIJAKUIAQgFAmRWBmNhbGxlcgkApQgBBQJhTgkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQAFAmhFCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgAFAmhGBQNuaWwCB3N1Y2Nlc3MCZFYBBHNldFMCAmhHAmhyAwkBAiE9AgkApQgBCAUCZFYGY2FsbGVyCQECYUcCBQR0aGlzCQECYWgABQJnawkAzAgCCQELU3RyaW5nRW50cnkCBQJoRwUCaHIFA25pbAJkVgEEc2V0SQICaEcCaHIDCQECIT0CCQClCAEIBQJkVgZjYWxsZXIJAQJhRwIFBHRoaXMJAQJhaAAFAmdrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJoRwUCaHIFA25pbAJkVgEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYVMAAmRWARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJiRwkAlAoCBQNuaWwJAQJiRgEFAmJHAmRWARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJiWQJiWgJjZAQCaEgJAQJjYwMFAmJZBQJiWgUCY2QJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJoSAAACQDMCAIJAKYDAQkAkQMCBQJoSAABCQDMCAIJAKYDAQkAkQMCBQJoSAACBQNuaWwCZFYBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUwCaEkJAJQKAgUDbmlsCQEBSwIJAKcDAQUBTAUCaEkCZFYBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQCmAwEJAQFIAgUBSQUBSgJkVgEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiSQJiSgkAlAoCBQNuaWwJAKYDAQkBAmJIAgkApwMBBQJiSQkApwMBBQJiSgJkVgEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmNyAmJOAmNRAmNSAmNTAmNUAmhKAmNVAmNWCQCUCgIFA25pbAkBAmNQDQUCY3IFAmJOBQJjUQUCY1IFAmNTBQJjVAUCaEoFAmNVBQJjVgYHAAACAAJkVgEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmNyAmhLAmN0AmhKBAJkawkBAmNxBAUCY3IFAmhLBQJjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQUCaEoJAJQKAgUDbmlsCQCcCgoIBQJkawJfMQgFAmRrAl8yCAUCZGsCXzMIBQJkawJfNAgFAmRrAl81CAUCZGsCXzYIBQJkawJfNwkApgMBCAUCZGsCXzgIBQJkawJfOQgFAmRrA18xMAJkVgEOZ2V0RmVlUkVBRE9OTFkACQCUCgIFA25pbAUCYWoBAmhMAQJoTQAEAmhOBAJhRQkBAmdpAAMJAAECBQJhRQIKQnl0ZVZlY3RvcgQCZ20FAmFFBQJnbQMJAAECBQJhRQIEVW5pdAgFAmhMD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhRQUCaEwDCQABAgUCYUUCBU9yZGVyBAJlVwUCYUUEAmhPCQECYVEABAJoUAkBAmVWAQUCZVcEAmhRCQD0AwMIBQJlVwlib2R5Qnl0ZXMJAJEDAggFAmVXBnByb29mcwAACAUCZVcPc2VuZGVyUHVibGljS2V5BAJoUgkA9AMDCAUCZVcJYm9keUJ5dGVzCQCRAwIIBQJlVwZwcm9vZnMAAQUCaE8DAwMFAmhQBQJoUQcFAmhSBwYJAQJhegMFAmhQBQJoUQUCaFIDCQABAgUCYUUCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJkSQUCYUUEAmhTCQD2AwEJAQV2YWx1ZQEIBQJkSQZzY3JpcHQEAmhUCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYU4JAQJheAAEAmhVCQDxBwEFBHRoaXMDAwkAAAIFAmhUBQJoUwkBAiE9AgUCaFUFAmhTBwYJAPQDAwgFAmhMCWJvZHlCeXRlcwkAkQMCCAUCaEwGcHJvb2ZzAAAFAmhOCQD0AwMIBQJoTAlib2R5Qnl0ZXMJAJEDAggFAmhMBnByb29mcwAABQJoTrsY4Cc=", "chainId": 84, "height": 2362516, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HaCm9rH4DQY94cT8vVtvKsaUsAHAQdqTassK9GhdcJqb Next: HBwtdpm4AsG8tvQjR1jKHdzTstrSktt7yJYZw9kTMZw2 Diff:
OldNewDifferences
7373 func K (L,M) = toInt(fraction(L, toBigInt(M), c))
7474
7575
76-func N (L,M,O) = toInt(fraction(L, toBigInt(M), c, O))
76+func N (O,P,Q) = fraction(O, P, Q)
7777
7878
79-func P (Q,R,S) = fraction(Q, R, S)
80-
81-
82-func T (L) = if ((d > L))
79+func R (L) = if ((d > L))
8380 then -(L)
8481 else L
8582
8683
87-func U (L) = if ((d > L))
84+func S (L) = if ((d > L))
8885 then -(L)
8986 else L
9087
9188
92-func V () = "%s__factoryContract"
89+func T () = "%s__factoryContract"
9390
9491
95-func W () = "%s__managerPublicKey"
92+func U () = "%s__managerPublicKey"
9693
9794
98-func X () = "%s__pendingManagerPublicKey"
95+func V () = "%s__pendingManagerPublicKey"
9996
10097
101-func Y () = "%s%s__price__last"
98+func W () = "%s%s__price__last"
10299
103100
104-func Z (aa,ab) = makeString(["%s%s%d%d__price__history", toString(aa), toString(ab)], n)
101+func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], n)
105102
106103
107-func ac (ad,ae) = ((("%s%s%s__P__" + ad) + "__") + ae)
104+func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
108105
109106
110-func af (ad,ae) = ((("%s%s%s__G__" + ad) + "__") + ae)
107+func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
111108
112109
113-func ag () = "%s__amountAsset"
110+func ae () = "%s__amountAsset"
114111
115112
116-func ah () = "%s__priceAsset"
113+func af () = "%s__priceAsset"
117114
118115
119-func ai () = "%s__amp"
116+func ag () = "%s__amp"
120117
121118
122-func aj () = "%s__addonAddr"
119+func ah () = "%s__addonAddr"
123120
124121
125-let ak = "%s__fee"
122+let ai = "%s__fee"
126123
127-let al = valueOrElse(getInteger(this, ak), G)
124+let aj = valueOrElse(getInteger(this, ai), G)
128125
129-let am = makeString(["%s", "dLp"], n)
126+let ak = makeString(["%s", "dLp"], n)
130127
131-let an = makeString(["%s", "dLpRefreshedHeight"], n)
128+let al = makeString(["%s", "dLpRefreshedHeight"], n)
132129
133-let ao = makeString(["%s", "refreshDLpDelay"], n)
130+let am = makeString(["%s", "refreshDLpDelay"], n)
134131
135-let ap = 1
132+let an = 1
136133
137-let aq = valueOrElse(getInteger(this, ao), ap)
134+let ao = valueOrElse(getInteger(this, am), an)
138135
139-func ar () = "%s__factoryConfig"
136+func ap () = "%s__factoryConfig"
140137
141138
142-func as () = "%s%s__matcher__publicKey"
139+func aq () = "%s%s__matcher__publicKey"
143140
144141
145-func at (au,av) = (((("%d%d%s__" + au) + "__") + av) + "__config")
142+func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
146143
147144
148-func aw (ax) = ("%s%s%s__mappings__baseAsset2internalId__" + ax)
145+func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
149146
150147
151-func ay () = "%s__shutdown"
148+func aw () = "%s__shutdown"
152149
153150
154-func az () = "%s__allowedLpStableScriptHash"
151+func ax () = "%s__allowedLpStableScriptHash"
155152
156153
157-func aA () = "%s__feeCollectorAddress"
154+func ay () = "%s__feeCollectorAddress"
158155
159156
160-func aB (aC,aD,aE) = throw(((((("Failed: ordValid=" + toString(aC)) + " sndrValid=") + toString(aD)) + " mtchrValid=") + toString(aE)))
157+func az (aA,aB,aC) = throw(((((("Failed: ordValid=" + toString(aA)) + " sndrValid=") + toString(aB)) + " mtchrValid=") + toString(aC)))
161158
162159
163-func aF (L) = {
164- let aG = L
165- if ($isInstanceOf(aG, "String"))
160+func aD (L) = {
161+ let aE = L
162+ if ($isInstanceOf(aE, "String"))
166163 then {
167- let aH = aG
168- aH
164+ let aF = aE
165+ aF
169166 }
170167 else throw("fail cast to String")
171168 }
172169
173170
174-func aI (aJ,aK) = valueOrErrorMessage(getString(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
171+func aG (aH,aI) = valueOrErrorMessage(getString(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
175172
176173
177-func aL (aJ,aK) = valueOrErrorMessage(getInteger(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
174+func aJ (aH,aI) = valueOrErrorMessage(getInteger(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
178175
179176
180-func aM (aN) = throw(makeString(["lp_stable.ride:", aN], " "))
177+func aK (aL) = throw(makeString(["lp_stable.ride:", aL], " "))
181178
182179
183-func aO (aN) = makeString(["lp_stable.ride:", aN], " ")
180+func aM (aL) = makeString(["lp_stable.ride:", aL], " ")
184181
185182
186-let aP = addressFromStringValue(aI(this, V()))
183+let aN = addressFromStringValue(aG(this, T()))
187184
188-let aQ = aI(this, ai())
185+let aO = aG(this, ag())
189186
190-func aR () = valueOrElse(getBoolean(aP, ay()), false)
187+func aP () = valueOrElse(getBoolean(aN, aw()), false)
191188
192189
193-func aS () = fromBase58String(aI(aP, as()))
190+func aQ () = fromBase58String(aG(aN, aq()))
194191
195192
196-let aT = addressFromStringValue(aI(aP, aA()))
193+let aR = addressFromStringValue(aG(aN, ay()))
197194
198-func aU () = {
199- let aV = aI(this, ag())
200- let aW = aI(this, ah())
201- let aX = aL(aP, aw(aW))
202- let au = aL(aP, aw(aV))
203- split(aI(aP, at(toString(au), toString(aX))), n)
195+func aS () = {
196+ let aT = aG(this, ae())
197+ let aU = aG(this, af())
198+ let aV = aJ(aN, au(aU))
199+ let as = aJ(aN, au(aT))
200+ split(aG(aN, ar(toString(as), toString(aV))), n)
204201 }
205202
206203
207-func aY (aZ) = if ((aZ == k))
204+func aW (aX) = if ((aX == k))
208205 then unit
209- else fromBase58String(aZ)
206+ else fromBase58String(aX)
210207
211208
212-func ba (aZ) = if ((aZ == unit))
209+func aY (aX) = if ((aX == unit))
213210 then k
214- else toBase58String(value(aZ))
211+ else toBase58String(value(aX))
215212
216213
217-func bb (bc) = $Tuple7(addressFromStringValue(bc[t]), parseIntValue(bc[u]), fromBase58String(bc[v]), aY(bc[w]), aY(bc[x]), parseIntValue(bc[y]), parseIntValue(bc[z]))
214+func aZ (ba) = $Tuple7(addressFromStringValue(ba[t]), parseIntValue(ba[u]), fromBase58String(ba[v]), aW(ba[w]), aW(ba[x]), parseIntValue(ba[y]), parseIntValue(ba[z]))
218215
219216
220-let bd = bb(aU())
217+let bb = aZ(aS())
221218
222-let be = bd
219+let bc = bb
223220
224-let bf = be._1
221+let bd = bc._1
225222
226-let bg = be._2
223+let be = bc._2
227224
228-let bh = be._3
225+let bf = bc._3
229226
230-let bi = be._4
227+let bg = bc._4
231228
232-let bj = be._5
229+let bh = bc._5
233230
234-let bk = be._6
231+let bi = bc._6
235232
236-let bl = be._7
233+let bj = bc._7
237234
238-func bm () = split(aI(aP, ar()), n)
235+func bk () = split(aG(aN, ap()), n)
239236
240237
241-let bn = bm()
238+let bl = bk()
242239
243-let bo = valueOrErrorMessage(addressFromString(bn[C]), "Invalid staking contract address")
240+let bm = valueOrErrorMessage(addressFromString(bl[C]), "Invalid staking contract address")
244241
245-let bp = valueOrErrorMessage(addressFromString(bn[E]), "Invalid slipage contract address")
242+let bn = valueOrErrorMessage(addressFromString(bl[E]), "Invalid slipage contract address")
246243
247-let bq = valueOrErrorMessage(addressFromString(bn[F]), "Invalid gwx contract address")
244+let bo = valueOrErrorMessage(addressFromString(bl[F]), "Invalid gwx contract address")
248245
249-let br = valueOrErrorMessage(addressFromString(bn[D]), "Invalid gwx contract address")
246+let bp = valueOrErrorMessage(addressFromString(bl[D]), "Invalid gwx contract address")
250247
251-func bs (bt,bu,bv,bw,bx,by,bz,bA,bB,bC) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC)], n)
248+func bq (br,bs,bt,bu,bv,bw,bx,by,bz,bA) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA)], n)
252249
253250
254-func bD (bE,bF,bG,bw,bz,bA) = makeString(["%d%d%d%d%d%d", toString(bE), toString(bF), toString(bG), toString(bw), toString(bz), toString(bA)], n)
251+func bB (bC,bD,bE,bu,bx,by) = makeString(["%d%d%d%d%d%d", toString(bC), toString(bD), toString(bE), toString(bu), toString(bx), toString(by)], n)
255252
256253
257-func bH (bI) = if ((bI == "WAVES"))
254+func bF (bG) = if ((bG == "WAVES"))
258255 then wavesBalance(this).available
259- else assetBalance(this, fromBase58String(bI))
256+ else assetBalance(this, fromBase58String(bG))
260257
261258
262-func bJ (bK,bL) = fraction(bK, c, bL)
259+func bH (bI,bJ) = fraction(bI, c, bJ)
263260
264261
265-func bM (bN,bO,bP) = {
266- let bQ = fraction((bN - bO), b, bO)
267- let bR = ((bP - T(bQ)) > d)
268- if (!(bR))
269- then throw(("Big slpg: " + toString(bQ)))
270- else $Tuple2(bR, min([bN, bO]))
262+func bK (bL,bM,bN) = {
263+ let bO = fraction((bL - bM), b, bM)
264+ let bP = ((bN - R(bO)) > d)
265+ if (!(bP))
266+ then throw(("Big slpg: " + toString(bO)))
267+ else $Tuple2(bP, min([bL, bM]))
271268 }
272269
273270
274-func bS (bT,bU,bV) = {
275- let bQ = fraction(bU, b, bT)
276- let bW = (bV > bQ)
277- if (if (bW)
271+func bQ (bR,bS,bT) = {
272+ let bO = fraction(bS, b, bR)
273+ let bU = (bT > bO)
274+ if (if (bU)
278275 then true
279- else (bU > bT))
280- then throw(((((((toString(bU) + " ") + toString(bT)) + " ") + toString(bQ)) + " ") + toString(bV)))
281- else bW
276+ else (bS > bR))
277+ then throw(((((((toString(bS) + " ") + toString(bR)) + " ") + toString(bO)) + " ") + toString(bT)))
278+ else bU
282279 }
283280
284281
285-func bX (bY,bZ,ca,cb) = {
286- let cc = H(ca, bY)
287- let cd = H(cb, bZ)
288- bJ(cd, cc)
282+func bV (bW,bX,bY,bZ) = {
283+ let ca = H(bY, bW)
284+ let cb = H(bZ, bX)
285+ bH(cb, ca)
289286 }
290287
291288
292-func ce (ca,cb,cf) = {
293- let cg = aU()
294- let ch = parseIntValue(cg[y])
295- let ci = parseIntValue(cg[z])
296- let cj = bX(ch, ci, ca, cb)
297- let bL = H(ca, ch)
298- let bK = H(cb, ci)
299- let ck = H(cf, a)
300- let cl = bJ(bL, ck)
301- let cm = bJ(bK, ck)
302-[cj, cl, cm]
289+func cc (bY,bZ,cd) = {
290+ let ce = aS()
291+ let cf = parseIntValue(ce[y])
292+ let cg = parseIntValue(ce[z])
293+ let ch = bV(cf, cg, bY, bZ)
294+ let bJ = H(bY, cf)
295+ let bI = H(bZ, cg)
296+ let ci = H(cd, a)
297+ let cj = bH(bJ, ci)
298+ let ck = bH(bI, ci)
299+[ch, cj, ck]
303300 }
304301
305302
306-func cn (ca,cb,cf) = {
307- let co = ce(ca, cb, cf)
308-[K(co[0], a), K(co[1], a), K(co[2], a)]
303+func cl (bY,bZ,cd) = {
304+ let cm = cc(bY, bZ, cd)
305+[K(cm[0], a), K(cm[1], a), K(cm[2], a)]
309306 }
310307
311308
312-func cp (cq) = {
313- let cr = fraction(cq, al, a)
314- $Tuple2((cq - cr), cr)
309+func cn (co) = {
310+ let cp = fraction(co, aj, a)
311+ $Tuple2((co - cp), cp)
315312 }
316313
317314
318-func cs (ct,cu,cv,cw) = {
319- let cg = aU()
320- let cx = cg[v]
321- let cy = cg[w]
322- let cz = cg[x]
323- let cA = parseIntValue(cg[y])
324- let cB = parseIntValue(cg[z])
325- let cC = cg[u]
326- let cD = valueOrErrorMessage(assetInfo(fromBase58String(cx)), "Wrong LP id").quantity
327- if ((cx != cu))
315+func cq (cr,cs,ct,cu) = {
316+ let ce = aS()
317+ let cv = ce[v]
318+ let cw = ce[w]
319+ let cx = ce[x]
320+ let cy = parseIntValue(ce[y])
321+ let cz = parseIntValue(ce[z])
322+ let cA = ce[u]
323+ let cB = valueOrErrorMessage(assetInfo(fromBase58String(cv)), "Wrong LP id").quantity
324+ if ((cv != cs))
328325 then throw("Wrong pmt asset")
329326 else {
330- let cE = bH(cy)
331- let cF = H(cE, cA)
332- let cG = bH(cz)
333- let cH = H(cG, cB)
334- let cI = bJ(cH, cF)
335- let cJ = K(cI, a)
336- let cK = H(cv, a)
337- let cL = H(cD, a)
338- let cM = fraction(cF, cK, cL)
339- let cN = fraction(cH, cK, cL)
340- let cO = N(cM, cA, FLOOR)
341- let cP = N(cN, cB, FLOOR)
342- let cQ = if ((ct == ""))
327+ let cC = bF(cw)
328+ let cD = H(cC, cy)
329+ let cE = bF(cx)
330+ let cF = H(cE, cz)
331+ let cG = bH(cF, cD)
332+ let cH = K(cG, a)
333+ let cI = H(ct, a)
334+ let cJ = H(cB, a)
335+ let cK = fraction(cD, cI, cJ)
336+ let cL = fraction(cF, cI, cJ)
337+ let cM = K(cK, cy)
338+ let cN = K(cL, cz)
339+ let cO = if ((cr == ""))
343340 then nil
344- else [ScriptTransfer(cw, cO, if ((cy == "WAVES"))
341+ else [ScriptTransfer(cu, cM, if ((cw == "WAVES"))
345342 then unit
346- else fromBase58String(cy)), ScriptTransfer(cw, cP, if ((cz == "WAVES"))
343+ else fromBase58String(cw)), ScriptTransfer(cu, cN, if ((cx == "WAVES"))
347344 then unit
348- else fromBase58String(cz)), StringEntry(af(toString(cw), ct), bD(cO, cP, cv, cJ, height, lastBlock.timestamp)), IntegerEntry(Y(), cJ), IntegerEntry(Z(height, lastBlock.timestamp), cJ)]
349- $Tuple10(cO, cP, cy, cz, cE, cG, cD, cI, cC, cQ)
345+ else fromBase58String(cx)), StringEntry(ad(toString(cu), cr), bB(cM, cN, ct, cH, height, lastBlock.timestamp)), IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH)]
346+ $Tuple10(cM, cN, cw, cx, cC, cE, cB, cG, cA, cO)
350347 }
351348 }
352349
353350
354-func cR (ct,bP,cS,cT,cU,cV,cw,cW,cX,cY,cZ,da,db) = {
355- let cg = aU()
356- let cx = fromBase58String(cg[v])
357- let dc = cg[w]
358- let dd = cg[x]
359- let de = cg[A]
360- let df = cg[B]
361- let dg = parseIntValue(cg[y])
362- let dh = parseIntValue(cg[z])
363- let cC = cg[u]
364- let di = valueOrErrorMessage(assetInfo(cx), "Wr lp as").quantity
365- let cE = if (cW)
366- then bH(dc)
367- else if (if (cY)
368- then (db == dc)
351+func cP (cr,bN,cQ,cR,cS,cT,cu,cU,cV,cW,cX,cY,cZ) = {
352+ let ce = aS()
353+ let cv = fromBase58String(ce[v])
354+ let da = ce[w]
355+ let db = ce[x]
356+ let dc = ce[A]
357+ let dd = ce[B]
358+ let de = parseIntValue(ce[y])
359+ let df = parseIntValue(ce[z])
360+ let cA = ce[u]
361+ let dg = valueOrErrorMessage(assetInfo(cv), "Wr lp as").quantity
362+ let cC = if (cU)
363+ then bF(da)
364+ else if (if (cW)
365+ then (cZ == da)
369366 else false)
370- then (bH(dc) - da)
371- else if (cY)
372- then bH(dc)
373- else (bH(dc) - cS)
374- let cG = if (cW)
375- then bH(dd)
376- else if (if (cY)
377- then (db == dd)
367+ then (bF(da) - cY)
368+ else if (cW)
369+ then bF(da)
370+ else (bF(da) - cQ)
371+ let cE = if (cU)
372+ then bF(db)
373+ else if (if (cW)
374+ then (cZ == db)
378375 else false)
379- then (bH(dd) - da)
380- else if (cY)
381- then bH(dd)
382- else (bH(dd) - cU)
383- let dj = H(cS, dg)
384- let dk = H(cU, dh)
385- let dl = bJ(dk, dj)
386- let cF = H(cE, dg)
387- let cH = H(cG, dh)
388- let dm = if ((di == 0))
376+ then (bF(db) - cY)
377+ else if (cW)
378+ then bF(db)
379+ else (bF(db) - cS)
380+ let dh = H(cQ, de)
381+ let di = H(cS, df)
382+ let dj = bH(di, dh)
383+ let cD = H(cC, de)
384+ let cF = H(cE, df)
385+ let dk = if ((dg == 0))
389386 then {
390- let cI = d
391- let dn = d
392- let ck = pow((dj * dk), 0, toBigInt(5), 1, 0, DOWN)
393- $Tuple5(K(ck, a), K(dj, dg), K(dk, dh), bJ((cH + dk), (cF + dj)), dn)
387+ let cG = d
388+ let dl = d
389+ let ci = pow((dh * di), 0, toBigInt(5), 1, 0, DOWN)
390+ $Tuple5(K(ci, a), K(dh, de), K(di, df), bH((cF + di), (cD + dh)), dl)
394391 }
395392 else {
396- let cI = bJ(cH, cF)
397- let do = fraction(T((cI - dl)), c, cI)
398- let dn = H(bP, a)
399- if (if (if (cZ)
400- then (cI != d)
393+ let cG = bH(cF, cD)
394+ let dm = fraction(R((cG - dj)), c, cG)
395+ let dl = H(bN, a)
396+ if (if (if (cX)
397+ then (cG != d)
401398 else false)
402- then (do > dn)
399+ then (dm > dl)
403400 else false)
404- then throw(((("Price slippage " + toString(do)) + " > ") + toString(dn)))
401+ then throw(((("Price slippage " + toString(dm)) + " > ") + toString(dl)))
405402 else {
406- let dp = H(di, a)
407- let dq = fraction(dj, cI, c)
408- let dr = fraction(dk, c, cI)
409- let ds = if ((dq > dk))
410- then $Tuple2(dr, dk)
411- else $Tuple2(dj, dq)
412- let dt = ds._1
413- let du = ds._2
414- let ck = fraction(dp, du, cH)
415- $Tuple5(N(ck, a, FLOOR), N(dt, dg, CEILING), N(du, dh, CEILING), cI, dn)
403+ let dn = H(dg, a)
404+ let do = fraction(dh, cG, c)
405+ let dp = fraction(di, c, cG)
406+ let dq = if ((do > di))
407+ then $Tuple2(dp, di)
408+ else $Tuple2(dh, do)
409+ let dr = dq._1
410+ let ds = dq._2
411+ let ci = fraction(dn, ds, cF)
412+ $Tuple5(K(ci, a), K(dr, de), K(ds, df), cG, dl)
416413 }
417414 }
418- let dv = dm._1
419- let dw = dm._2
420- let dx = dm._3
421- let cJ = K(dm._4, a)
422- let dy = K(dm._5, a)
423- if ((0 >= dv))
415+ let dt = dk._1
416+ let du = dk._2
417+ let dv = dk._3
418+ let cH = K(dk._4, a)
419+ let dw = K(dk._5, a)
420+ if ((0 >= dt))
424421 then throw("LP <= 0")
425422 else {
426- let dz = if (!(cX))
423+ let dx = if (!(cV))
427424 then 0
428- else dv
429- let dA = (cS - dw)
430- let dB = (cU - dx)
431- let dC = if (if (cY)
432- then (db == dc)
425+ else dt
426+ let dy = (cQ - du)
427+ let dz = (cS - dv)
428+ let dA = if (if (cW)
429+ then (cZ == da)
433430 else false)
434- then $Tuple2(da, 0)
435- else if (if (cY)
436- then (db == dd)
431+ then $Tuple2(cY, 0)
432+ else if (if (cW)
433+ then (cZ == db)
437434 else false)
438- then $Tuple2(0, da)
439- else $Tuple2(dw, dx)
440- let dD = dC._1
441- let dE = dC._2
442- let dF = [IntegerEntry(Y(), cJ), IntegerEntry(Z(height, lastBlock.timestamp), cJ), StringEntry(ac(cw, ct), bs(dD, dE, dz, cJ, bP, dy, height, lastBlock.timestamp, dA, dB))]
443- $Tuple13(dv, dz, cJ, cE, cG, di, cx, cC, dF, dA, dB, cT, cV)
435+ then $Tuple2(0, cY)
436+ else $Tuple2(du, dv)
437+ let dB = dA._1
438+ let dC = dA._2
439+ let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, cr), bq(dB, dC, dx, cH, bN, dw, height, lastBlock.timestamp, dy, dz))]
440+ $Tuple13(dt, dx, cH, cC, cE, dg, cv, cA, dD, dy, dz, cR, cT)
444441 }
445442 }
446443
447444
448-func dG (dH) = {
449- let dI = dH[0]
450- let dJ = dH[1]
451- let dK = (dI + dJ)
452- if ((dK == e))
445+func dE (dF) = {
446+ let dG = dF[0]
447+ let dH = dF[1]
448+ let dI = (dG + dH)
449+ if ((dI == e))
453450 then e
454451 else {
455- let dL = parseIntValue(aQ)
456- let dM = (dL * 2)
457- let co = fraction(dI, dJ, f)
458- let dN = fraction(co, i, f)
459- let dO = fraction(toBigInt(dM), dK, f)
460- let dP = toBigInt((dM - 1))
461- func dQ (dR) = {
462- let dS = fraction(dR, dR, f)
463- let dT = fraction(dS, dR, f)
464- let dU = fraction(dT, f, dN)
465- fraction((dO + fraction(dU, g, f)), dR, (fraction(dP, dR, f) + fraction(h, dU, f)), CEILING)
452+ let dJ = parseIntValue(aO)
453+ let dK = (dJ * 2)
454+ let cm = fraction(dG, dH, f)
455+ let dL = fraction(cm, i, f)
456+ let dM = fraction(toBigInt(dK), dI, f)
457+ let dN = toBigInt((dK - 1))
458+ func dO (dP) = {
459+ let dQ = fraction(dP, dP, f)
460+ let dR = fraction(dQ, dP, f)
461+ let dS = fraction(dR, f, dL)
462+ fraction((dM + fraction(dS, g, f)), dP, (fraction(dN, dP, f) + fraction(h, dS, f)), CEILING)
466463 }
467464
468- func dV (dW,dX) = if (dW._2)
469- then dW
465+ func dT (dU,dV) = if (dU._2)
466+ then dU
470467 else {
471- let dR = dW._1
472- let dY = dQ(dR)
473- let dZ = toInt((dY - value(dR)))
474- let ea = if ((0 > dZ))
475- then -(dZ)
476- else dZ
477- if ((1 >= ea))
478- then $Tuple2(dY, true)
479- else $Tuple2(dY, false)
468+ let dP = dU._1
469+ let dW = dO(dP)
470+ let dX = toInt((dW - value(dP)))
471+ let dY = if ((0 > dX))
472+ then -(dX)
473+ else dX
474+ if ((1 >= dY))
475+ then $Tuple2(dW, true)
476+ else $Tuple2(dW, false)
480477 }
481478
482- let eb = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
483- let ec = {
484- let ed = eb
485- let ee = size(ed)
486- let ef = $Tuple2(dK, false)
487- func eg (eh,ei) = if ((ei >= ee))
488- then eh
489- else dV(eh, ed[ei])
479+ let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
480+ let ea = {
481+ let eb = dZ
482+ let ec = size(eb)
483+ let ed = $Tuple2(dI, false)
484+ func ee (ef,eg) = if ((eg >= ec))
485+ then ef
486+ else dT(ef, eb[eg])
490487
491- func ej (eh,ei) = if ((ei >= ee))
492- then eh
488+ func eh (ef,eg) = if ((eg >= ec))
489+ then ef
493490 else throw("List size exceeds 15")
494491
495- ej(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(ef, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
492+ eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
496493 }
497- let dR = ec._1
498- let ek = ec._2
499- if (ek)
500- then dR
501- else throw(("D calculation error, D = " + toString(dR)))
494+ let dP = ea._1
495+ let ei = ea._2
496+ if (ei)
497+ then dP
498+ else throw(("D calculation error, D = " + toString(dP)))
502499 }
503500 }
504501
505502
506-func el (dH) = {
507- let em = g
508- let dI = dH[0]
509- let dJ = dH[1]
510- let en = parseBigIntValue(l)
511- let dL = (parseBigIntValue(aQ) * en)
512- let dK = (dI + dJ)
513- if ((dK == e))
503+func ej (dF) = {
504+ let ek = g
505+ let dG = dF[0]
506+ let dH = dF[1]
507+ let el = parseBigIntValue(l)
508+ let dJ = (parseBigIntValue(aO) * el)
509+ let dI = (dG + dH)
510+ if ((dI == e))
514511 then e
515512 else {
516- let dM = (dL * em)
517- let dN = (((dI * dJ) * em) * em)
518- let eo = ((dM * dK) / en)
519- let ep = (dM - en)
520- let eq = (em + f)
521- func dV (dW,er) = {
522- let es = dW
523- let dR = es._1
524- let ek = es._2
525- if ((ek != unit))
526- then dW
513+ let dK = (dJ * ek)
514+ let dL = (((dG * dH) * ek) * ek)
515+ let em = ((dK * dI) / el)
516+ let en = (dK - el)
517+ let eo = (ek + f)
518+ func dT (dU,ep) = {
519+ let eq = dU
520+ let dP = eq._1
521+ let ei = eq._2
522+ if ((ei != unit))
523+ then dU
527524 else {
528- let dU = (((dR * dR) * dR) / dN)
529- let dY = (((eo + (dU * em)) * dR) / (((ep * dR) / en) + (eq * dU)))
530- let ea = U((dY - value(dR)))
531- if ((f >= ea))
532- then $Tuple2(dY, er)
533- else $Tuple2(dY, unit)
525+ let dS = (((dP * dP) * dP) / dL)
526+ let dW = (((em + (dS * ek)) * dP) / (((en * dP) / el) + (eo * dS)))
527+ let dY = S((dW - value(dP)))
528+ if ((f >= dY))
529+ then $Tuple2(dW, ep)
530+ else $Tuple2(dW, unit)
534531 }
535532 }
536533
537- let eb = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
538- let et = {
539- let ed = eb
540- let ee = size(ed)
541- let ef = $Tuple2(dK, unit)
542- func eg (eh,ei) = if ((ei >= ee))
543- then eh
544- else dV(eh, ed[ei])
534+ let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
535+ let er = {
536+ let eb = dZ
537+ let ec = size(eb)
538+ let ed = $Tuple2(dI, unit)
539+ func ee (ef,eg) = if ((eg >= ec))
540+ then ef
541+ else dT(ef, eb[eg])
545542
546- func ej (eh,ei) = if ((ei >= ee))
547- then eh
543+ func eh (ef,eg) = if ((eg >= ec))
544+ then ef
548545 else throw("List size exceeds 15")
549546
550- ej(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(ef, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
547+ eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
551548 }
552- let dR = et._1
553- let ek = et._2
554- if ((ek != unit))
555- then dR
556- else throw(("D calculation error, D = " + toString(dR)))
549+ let dP = er._1
550+ let ei = er._2
551+ if ((ei != unit))
552+ then dP
553+ else throw(("D calculation error, D = " + toString(dP)))
557554 }
558555 }
559556
560557
561-func eu (dH,dX,ev) = {
562- let em = g
563- let ew = dH[if ((dX == 0))
558+func es (dF,dV,et) = {
559+ let ek = g
560+ let eu = dF[if ((dV == 0))
564561 then 1
565562 else 0]
566- let en = parseBigIntValue(l)
567- let dL = (parseBigIntValue(aQ) * en)
568- let dK = ew
569- let dM = (dL * em)
570- let ex = (((((ev * ev) / (ew * em)) * ev) * en) / (dM * em))
571- let ey = ((dK + ((ev * en) / dM)) - ev)
572- func dV (dW,er) = {
573- let ez = dW
574- let eA = ez._1
575- let ek = ez._2
576- if ((ek != unit))
577- then dW
563+ let el = parseBigIntValue(l)
564+ let dJ = (parseBigIntValue(aO) * el)
565+ let dI = eu
566+ let dK = (dJ * ek)
567+ let ev = (((((et * et) / (eu * ek)) * et) * el) / (dK * ek))
568+ let ew = ((dI + ((et * el) / dK)) - et)
569+ func dT (dU,ep) = {
570+ let ex = dU
571+ let ey = ex._1
572+ let ei = ex._2
573+ if ((ei != unit))
574+ then dU
578575 else {
579- let eB = (((eA * eA) + ex) / ((g * eA) + ey))
580- let eC = U((eB - value(eA)))
581- if ((f >= eC))
582- then $Tuple2(eB, er)
583- else $Tuple2(eB, unit)
576+ let ez = (((ey * ey) + ev) / ((g * ey) + ew))
577+ let eA = S((ez - value(ey)))
578+ if ((f >= eA))
579+ then $Tuple2(ez, ep)
580+ else $Tuple2(ez, unit)
584581 }
585582 }
586583
587- let eb = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
588- let eD = {
589- let ed = eb
590- let ee = size(ed)
591- let ef = $Tuple2(ev, unit)
592- func eg (eh,ei) = if ((ei >= ee))
593- then eh
594- else dV(eh, ed[ei])
584+ let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
585+ let eB = {
586+ let eb = dZ
587+ let ec = size(eb)
588+ let ed = $Tuple2(et, unit)
589+ func ee (ef,eg) = if ((eg >= ec))
590+ then ef
591+ else dT(ef, eb[eg])
595592
596- func ej (eh,ei) = if ((ei >= ee))
597- then eh
593+ func eh (ef,eg) = if ((eg >= ec))
594+ then ef
598595 else throw("List size exceeds 15")
599596
600- ej(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(ef, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
597+ eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
601598 }
602- let eA = eD._1
603- let ek = eD._2
604- if ((ek != unit))
605- then eA
606- else throw(("Y calculation error, Y = " + toString(eA)))
599+ let ey = eB._1
600+ let ei = eB._2
601+ if ((ei != unit))
602+ then ey
603+ else throw(("Y calculation error, Y = " + toString(ey)))
607604 }
608605
609606
610-func eE (eF,eG,eH) = {
611- let eI = fraction(dG([eF, eG]), c, eH)
612- if ((eH == e))
607+func eC (eD,eE,eF) = {
608+ let eG = fraction(dE([eD, eE]), c, eF)
609+ if ((eF == e))
613610 then e
614- else eI
611+ else eG
615612 }
616613
617614
618-func eJ (eK,eL,eM) = {
619- let eN = (toBigInt(bH(ba(bi))) - eK)
620- let eO = (toBigInt(bH(ba(bj))) - eL)
621- let eP = (toBigInt(value(assetInfo(bh)).quantity) - eM)
622- let eQ = eE(eN, eO, eP)
623- eQ
615+func eH (eI,eJ,eK) = {
616+ let eL = (toBigInt(bF(aY(bg))) - eI)
617+ let eM = (toBigInt(bF(aY(bh))) - eJ)
618+ let eN = (toBigInt(value(assetInfo(bf)).quantity) - eK)
619+ let eO = eC(eL, eM, eN)
620+ eO
624621 }
625622
626623
627-func eR (eS,eT,eM) = {
628- let eN = (bH(ba(bi)) + eS)
629- let eO = (bH(ba(bj)) + eT)
630- let eP = (value(assetInfo(bh)).quantity + eM)
631- let eI = eE(toBigInt(eN), toBigInt(eO), toBigInt(eP))
632- let eU = [IntegerEntry(an, height), StringEntry(am, toString(eI))]
633- $Tuple2(eU, eI)
624+func eP (eQ,eR,eK) = {
625+ let eL = (bF(aY(bg)) + eQ)
626+ let eM = (bF(aY(bh)) + eR)
627+ let eN = (value(assetInfo(bf)).quantity + eK)
628+ let eG = eC(toBigInt(eL), toBigInt(eM), toBigInt(eN))
629+ let eS = [IntegerEntry(al, height), StringEntry(ak, toString(eG))]
630+ $Tuple2(eS, eG)
634631 }
635632
636633
637-func eV (eW,eI) = if ((eI >= eW))
634+func eT (eU,eG) = if ((eG >= eU))
638635 then true
639- else aM("updated DLp lower than current DLp")
636+ else aK("updated DLp lower than current DLp")
640637
641638
642-func eX (eY) = {
643- let eZ = eY.amount
644- let fa = fraction(eY.amount, eY.price, a, FLOOR)
645- let fb = if ((eY.orderType == Buy))
646- then $Tuple2(eZ, -(fa))
647- else $Tuple2(-(eZ), fa)
648- let eS = fb._1
649- let eT = fb._2
650- if (if (if (aR())
639+func eV (eW) = {
640+ let eX = eW.amount
641+ let eY = fraction(eW.amount, eW.price, a, FLOOR)
642+ let eZ = if ((eW.orderType == Buy))
643+ then $Tuple2(eX, -(eY))
644+ else $Tuple2(-(eX), eY)
645+ let eQ = eZ._1
646+ let eR = eZ._2
647+ if (if (if (aP())
651648 then true
652- else (bg == r))
649+ else (be == r))
653650 then true
654- else (bg == s))
651+ else (be == s))
655652 then throw("Admin blocked")
656- else if (if ((eY.assetPair.amountAsset != bi))
653+ else if (if ((eW.assetPair.amountAsset != bg))
657654 then true
658- else (eY.assetPair.priceAsset != bj))
655+ else (eW.assetPair.priceAsset != bh))
659656 then throw("Wr assets")
660657 else {
661- let fc = parseBigIntValue(getStringValue(this, am))
662- let fd = eR(eS, eT, 0)
663- let fe = fd._1
664- let ff = fd._2
665- let fg = (ff >= fc)
666- fg
658+ let fa = parseBigIntValue(getStringValue(this, ak))
659+ let fb = eP(eQ, eR, 0)
660+ let fc = fb._1
661+ let fd = fb._2
662+ let fe = (fd >= fa)
663+ fe
667664 }
668665 }
669666
670667
671-func fh (dX) = if ((size(dX.payments) != 1))
668+func ff (dV) = if ((size(dV.payments) != 1))
672669 then throw("1 pmnt exp")
673670 else {
674- let fi = value(dX.payments[0])
675- let cu = value(fi.assetId)
676- let da = fi.amount
677- let dm = cs(toBase58String(dX.transactionId), toBase58String(cu), da, dX.caller)
678- let cO = dm._1
679- let cP = dm._2
680- let cC = parseIntValue(dm._9)
681- let cQ = dm._10
682- if (if (aR())
671+ let fg = value(dV.payments[0])
672+ let cs = value(fg.assetId)
673+ let cY = fg.amount
674+ let dk = cq(toBase58String(dV.transactionId), toBase58String(cs), cY, dV.caller)
675+ let cM = dk._1
676+ let cN = dk._2
677+ let cA = parseIntValue(dk._9)
678+ let cO = dk._10
679+ if (if (aP())
683680 then true
684- else (cC == s))
685- then throw(("Admin blocked: " + toString(cC)))
686- else $Tuple5(cO, cP, da, cu, cQ)
681+ else (cA == s))
682+ then throw(("Admin blocked: " + toString(cA)))
683+ else $Tuple5(cM, cN, cY, cs, cO)
687684 }
688685
689686
690-func fj (fk,ae,fl,fm,bP,cX,cY,cZ,da,db) = {
691- let dm = cR(ae, bP, value(fl).amount, value(fl).assetId, value(fm).amount, value(fm).assetId, fk, (ae == ""), cX, cY, cZ, da, db)
692- let cC = parseIntValue(dm._8)
693- if (if (if (aR())
687+func fh (fi,ac,fj,fk,bN,cV,cW,cX,cY,cZ) = {
688+ let dk = cP(ac, bN, value(fj).amount, value(fj).assetId, value(fk).amount, value(fk).assetId, fi, (ac == ""), cV, cW, cX, cY, cZ)
689+ let cA = parseIntValue(dk._8)
690+ if (if (if (aP())
694691 then true
695- else (cC == q))
692+ else (cA == q))
696693 then true
697- else (cC == s))
698- then throw(("Blocked:" + toString(cC)))
699- else dm
694+ else (cA == s))
695+ then throw(("Blocked:" + toString(cA)))
696+ else dk
700697 }
701698
702699
703-func fn (fo,cu,cw,ae,fp) = {
704- let bc = aU()
705- let cy = bc[w]
706- let cz = bc[x]
707- let cx = bc[v]
708- let dg = parseIntValue(bc[y])
709- let dh = parseIntValue(bc[z])
710- let eP = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cx)), "invalid lp asset").quantity)
711- let fq = if ((eP > e))
700+func fl (fm,cs,cu,ac,fn) = {
701+ let ba = aS()
702+ let cw = ba[w]
703+ let cx = ba[x]
704+ let cv = ba[v]
705+ let de = parseIntValue(ba[y])
706+ let df = parseIntValue(ba[z])
707+ let eN = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
708+ let fo = if ((eN > e))
712709 then true
713710 else throw("initial deposit requires all coins")
714- if ((fq == fq))
711+ if ((fo == fo))
715712 then {
716- let cE = bH(cy)
717- let cG = bH(cz)
718- let fr = if ((ae == ""))
719- then $Tuple2(cE, cG)
720- else if ((cu == cy))
721- then if ((fo > cE))
713+ let cC = bF(cw)
714+ let cE = bF(cx)
715+ let fp = if ((ac == ""))
716+ then $Tuple2(cC, cE)
717+ else if ((cs == cw))
718+ then if ((fm > cC))
722719 then throw("invalid payment amount")
723- else $Tuple2((cE - fo), cG)
724- else if ((cu == cz))
725- then if ((fo > cG))
720+ else $Tuple2((cC - fm), cE)
721+ else if ((cs == cx))
722+ then if ((fm > cE))
726723 then throw("invalid payment amount")
727- else $Tuple2(cE, (cG - fo))
724+ else $Tuple2(cC, (cE - fm))
728725 else throw("wrong pmtAssetId")
729- let fs = fr._1
730- let ft = fr._2
731- let fu = if ((cu == cy))
732- then $Tuple2(fo, 0)
733- else if ((cu == cz))
734- then $Tuple2(0, fo)
726+ let fq = fp._1
727+ let fr = fp._2
728+ let fs = if ((cs == cw))
729+ then $Tuple2(fm, 0)
730+ else if ((cs == cx))
731+ then $Tuple2(0, fm)
735732 else throw("invalid payment")
736- let fv = fu._1
737- let fw = fu._2
738- let fx = if (fp)
739- then $Tuple3(cp(fv)._1, cp(fw)._1, cp(fo)._2)
740- else $Tuple3(fv, fw, 0)
741- let fy = fx._1
742- let fz = fx._2
743- let cr = fx._3
744- let fA = (fs + fy)
745- let fB = (ft + fz)
746- let bU = dG([toBigInt(fs), toBigInt(ft)])
747- let bT = dG([toBigInt(fA), toBigInt(fB)])
748- let fC = if ((bT > bU))
733+ let ft = fs._1
734+ let fu = fs._2
735+ let fv = if (fn)
736+ then $Tuple3(cn(ft)._1, cn(fu)._1, cn(fm)._2)
737+ else $Tuple3(ft, fu, 0)
738+ let fw = fv._1
739+ let fx = fv._2
740+ let cp = fv._3
741+ let fy = (fq + fw)
742+ let fz = (fr + fx)
743+ let bS = dE([toBigInt(fq), toBigInt(fr)])
744+ let bR = dE([toBigInt(fy), toBigInt(fz)])
745+ let fA = if ((bR > bS))
749746 then true
750747 else throw()
751- if ((fC == fC))
748+ if ((fA == fA))
752749 then {
753- let fD = fraction(eP, (bT - bU), bU, FLOOR)
754- let cJ = K(bJ(H(fB, dh), H(fA, dg)), a)
755- let dF = [IntegerEntry(Y(), cJ), IntegerEntry(Z(height, lastBlock.timestamp), cJ), StringEntry(ac(cw, ae), bs(fv, fw, toInt(fD), cJ, 0, 0, height, lastBlock.timestamp, 0, 0))]
756- let fE = fraction(ft, a, fs)
757- let fF = fraction(fo, a, (fE + a))
758- let fG = (fo - fF)
759- let fH = fraction(eP, toBigInt(fG), toBigInt(ft))
760- let fI = toInt(fraction((fD - fH), b, fH))
761- $Tuple4(toInt(fD), dF, cr, fI)
750+ let fB = fraction(eN, (bR - bS), bS, FLOOR)
751+ let cH = K(bH(H(fz, df), H(fy, de)), a)
752+ let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(ft, fu, toInt(fB), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
753+ let fC = fraction(fr, a, fq)
754+ let fD = fraction(fm, a, (fC + a))
755+ let fE = (fm - fD)
756+ let fF = fraction(eN, toBigInt(fE), toBigInt(fr))
757+ let fG = toInt(fraction((fB - fF), b, fF))
758+ $Tuple4(toInt(fB), dD, cp, fG)
762759 }
763760 else throw("Strict value is not equal to itself.")
764761 }
766763 }
767764
768765
769-func fJ (fK,fL,fM,fk,fN,fO) = {
770- let bc = aU()
771- let cx = bc[v]
772- let cy = bc[w]
773- let cz = bc[x]
774- let fP = parseIntValue(bc[y])
775- let fQ = parseIntValue(bc[z])
776- let fR = bc[u]
777- let cw = if ((fk == br))
778- then fN
779- else fk
780- let fi = value(fM[0])
781- let cu = value(fi.assetId)
782- let da = fi.amount
783- let eQ = eJ(e, e, e)
784- if ((eQ == eQ))
766+func fH (fI,fJ,fK,fi,fL,fM) = {
767+ let ba = aS()
768+ let cv = ba[v]
769+ let cw = ba[w]
770+ let cx = ba[x]
771+ let fN = parseIntValue(ba[y])
772+ let fO = parseIntValue(ba[z])
773+ let fP = ba[u]
774+ let cu = if ((fi == bp))
775+ then fL
776+ else fi
777+ let fg = value(fK[0])
778+ let cs = value(fg.assetId)
779+ let cY = fg.amount
780+ let eO = eH(e, e, e)
781+ if ((eO == eO))
785782 then {
786- let ct = toBase58String(fO)
787- if ((cx != toBase58String(cu)))
783+ let cr = toBase58String(fM)
784+ if ((cv != toBase58String(cs)))
788785 then throw("Wrong LP")
789786 else {
790- let cE = bH(cy)
791- let cG = bH(cz)
792- let fS = {
793- let fT = invoke(this, "getOneTknV2READONLY", [fK, da], nil)
794- if ($isInstanceOf(fT, "(Int, Int)"))
795- then fT
796- else throw(($getType(fT) + " couldn't be cast to (Int, Int)"))
787+ let cC = bF(cw)
788+ let cE = bF(cx)
789+ let fQ = {
790+ let fR = invoke(this, "getOneTknV2READONLY", [fI, cY], nil)
791+ if ($isInstanceOf(fR, "(Int, Int)"))
792+ then fR
793+ else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
797794 }
798- if ((fS == fS))
795+ if ((fQ == fQ))
799796 then {
800- let cr = fS._2
801- let fU = fS._1
802- let fV = if (if ((fL > 0))
803- then (fL > fU)
797+ let cp = fQ._2
798+ let fS = fQ._1
799+ let fT = if (if ((fJ > 0))
800+ then (fJ > fS)
804801 else false)
805- then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
806- else fU
807- let fW = if ((fK == cy))
808- then $Tuple4(fV, 0, ((cE - fV) - cr), cG)
809- else if ((fK == cz))
810- then $Tuple4(0, fV, cE, ((cG - fV) - cr))
802+ then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
803+ else fS
804+ let fU = if ((fI == cw))
805+ then $Tuple4(fT, 0, ((cC - fT) - cp), cE)
806+ else if ((fI == cx))
807+ then $Tuple4(0, fT, cC, ((cE - fT) - cp))
811808 else throw("invalid out asset id")
812- let fX = fW._1
813- let fY = fW._2
814- let fA = fW._3
815- let fB = fW._4
816- let fZ = bJ(H(fB, fQ), H(fA, fP))
817- let ga = K(fZ, a)
818- let gb = if ((fK == "WAVES"))
809+ let fV = fU._1
810+ let fW = fU._2
811+ let fy = fU._3
812+ let fz = fU._4
813+ let fX = bH(H(fz, fO), H(fy, fN))
814+ let fY = K(fX, a)
815+ let fZ = if ((fI == "WAVES"))
819816 then unit
820- else fromBase58String(fK)
821- let gc = if ((cr > 0))
822- then [ScriptTransfer(aT, cr, gb)]
817+ else fromBase58String(fI)
818+ let ga = if ((cp > 0))
819+ then [ScriptTransfer(aR, cp, fZ)]
823820 else nil
824- let cQ = ([ScriptTransfer(cw, fV, gb), StringEntry(af(toString(cw), ct), bD(fX, fY, da, ga, height, lastBlock.timestamp)), IntegerEntry(Y(), ga), IntegerEntry(Z(height, lastBlock.timestamp), ga)] ++ gc)
825- if ((cQ == cQ))
821+ let cO = ([ScriptTransfer(cu, fT, fZ), StringEntry(ad(toString(cu), cr), bB(fV, fW, cY, fY, height, lastBlock.timestamp)), IntegerEntry(W(), fY), IntegerEntry(X(height, lastBlock.timestamp), fY)] ++ ga)
822+ if ((cO == cO))
826823 then {
827- let gd = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
828- if ((gd == gd))
824+ let gb = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
825+ if ((gb == gb))
829826 then {
830- let ge = {
831- let gf = if ((this == aT))
827+ let gc = {
828+ let gd = if ((this == aR))
832829 then 0
833- else cr
834- let gg = if ((aY(fK) == bi))
830+ else cp
831+ let ge = if ((aW(fI) == bg))
835832 then true
836833 else false
837- if (gg)
838- then $Tuple2(-((fU + gf)), 0)
839- else $Tuple2(0, -((fU + gf)))
834+ if (ge)
835+ then $Tuple2(-((fS + gd)), 0)
836+ else $Tuple2(0, -((fS + gd)))
840837 }
841- let eS = ge._1
842- let eT = ge._2
843- let gh = eR(eS, eT, 0)
844- let gi = gh._1
845- let eI = gh._2
846- let gj = eV(eQ, eI)
847- if ((gj == gj))
848- then $Tuple2((cQ ++ gi), fV)
838+ let eQ = gc._1
839+ let eR = gc._2
840+ let gf = eP(eQ, eR, 0)
841+ let gg = gf._1
842+ let eG = gf._2
843+ let gh = eT(eO, eG)
844+ if ((gh == gh))
845+ then $Tuple2((cO ++ gg), fT)
849846 else throw("Strict value is not equal to itself.")
850847 }
851848 else throw("Strict value is not equal to itself.")
859856 }
860857
861858
862-func gk () = {
863- let aG = getString(W())
864- if ($isInstanceOf(aG, "String"))
859+func gi () = {
860+ let aE = getString(U())
861+ if ($isInstanceOf(aE, "String"))
865862 then {
866- let dK = aG
867- fromBase58String(dK)
863+ let dI = aE
864+ fromBase58String(dI)
868865 }
869- else if ($isInstanceOf(aG, "Unit"))
866+ else if ($isInstanceOf(aE, "Unit"))
870867 then unit
871868 else throw("Match error")
872869 }
873870
874871
875-func gl () = {
876- let aG = getString(X())
877- if ($isInstanceOf(aG, "String"))
872+func gj () = {
873+ let aE = getString(V())
874+ if ($isInstanceOf(aE, "String"))
878875 then {
879- let dK = aG
880- fromBase58String(dK)
876+ let dI = aE
877+ fromBase58String(dI)
881878 }
882- else if ($isInstanceOf(aG, "Unit"))
879+ else if ($isInstanceOf(aE, "Unit"))
883880 then unit
884881 else throw("Match error")
885882 }
886883
887884
888-let gm = throw("Permission denied")
885+let gk = throw("Permission denied")
889886
890-func gn (dX) = {
891- let aG = gk()
892- if ($isInstanceOf(aG, "ByteVector"))
887+func gl (dV) = {
888+ let aE = gi()
889+ if ($isInstanceOf(aE, "ByteVector"))
893890 then {
894- let go = aG
895- (dX.callerPublicKey == go)
891+ let gm = aE
892+ (dV.callerPublicKey == gm)
896893 }
897- else if ($isInstanceOf(aG, "Unit"))
898- then (dX.caller == this)
894+ else if ($isInstanceOf(aE, "Unit"))
895+ then (dV.caller == this)
899896 else throw("Match error")
900897 }
901898
902899
903-func gp (dX) = {
904- let aG = gk()
905- if ($isInstanceOf(aG, "ByteVector"))
900+func gn (dV) = {
901+ let aE = gi()
902+ if ($isInstanceOf(aE, "ByteVector"))
906903 then {
907- let go = aG
908- if ((dX.callerPublicKey == go))
904+ let gm = aE
905+ if ((dV.callerPublicKey == gm))
909906 then true
910- else gm
907+ else gk
911908 }
912- else if ($isInstanceOf(aG, "Unit"))
913- then if ((dX.caller == this))
909+ else if ($isInstanceOf(aE, "Unit"))
910+ then if ((dV.caller == this))
914911 then true
915- else gm
912+ else gk
916913 else throw("Match error")
917914 }
918915
919916
920-@Callable(dX)
921-func constructor (V) = {
922- let ex = gp(dX)
923- if ((ex == ex))
924- then [StringEntry(V(), V)]
917+@Callable(dV)
918+func constructor (T) = {
919+ let ev = gn(dV)
920+ if ((ev == ev))
921+ then [StringEntry(T(), T)]
925922 else throw("Strict value is not equal to itself.")
926923 }
927924
928925
929926
930-@Callable(dX)
931-func setManager (gq) = {
932- let ex = gp(dX)
933- if ((ex == ex))
927+@Callable(dV)
928+func setManager (go) = {
929+ let ev = gn(dV)
930+ if ((ev == ev))
934931 then {
935- let gr = fromBase58String(gq)
936- if ((gr == gr))
937- then [StringEntry(X(), gq)]
932+ let gp = fromBase58String(go)
933+ if ((gp == gp))
934+ then [StringEntry(V(), go)]
938935 else throw("Strict value is not equal to itself.")
939936 }
940937 else throw("Strict value is not equal to itself.")
942939
943940
944941
945-@Callable(dX)
942+@Callable(dV)
946943 func confirmManager () = {
947- let co = gl()
948- let gs = if (isDefined(co))
944+ let cm = gj()
945+ let gq = if (isDefined(cm))
949946 then true
950947 else throw("No pending manager")
951- if ((gs == gs))
948+ if ((gq == gq))
952949 then {
953- let gt = if ((dX.callerPublicKey == value(co)))
950+ let gr = if ((dV.callerPublicKey == value(cm)))
954951 then true
955952 else throw("You are not pending manager")
956- if ((gt == gt))
957- then [StringEntry(W(), toBase58String(value(co))), DeleteEntry(X())]
953+ if ((gr == gr))
954+ then [StringEntry(U(), toBase58String(value(cm))), DeleteEntry(V())]
958955 else throw("Strict value is not equal to itself.")
959956 }
960957 else throw("Strict value is not equal to itself.")
962959
963960
964961
965-@Callable(dX)
966-func put (gu,gv) = {
967- let gw = bm()
968- let gx = valueOrErrorMessage(addressFromString(gw[C]), "Wr st addr")
969- let gy = valueOrErrorMessage(addressFromString(gw[E]), "Wr sl addr")
970- if ((0 > gu))
962+@Callable(dV)
963+func put (gs,gt) = {
964+ let gu = bk()
965+ let gv = valueOrErrorMessage(addressFromString(gu[C]), "Wr st addr")
966+ let gw = valueOrErrorMessage(addressFromString(gu[E]), "Wr sl addr")
967+ if ((0 > gs))
971968 then throw("Wrong slippage")
972- else if ((size(dX.payments) != 2))
969+ else if ((size(dV.payments) != 2))
973970 then throw("2 pmnts expd")
974971 else {
975- let gz = toBigInt(value(dX.payments[0]).amount)
976- let gA = toBigInt(value(dX.payments[1]).amount)
977- let eQ = eJ(gz, gA, toBigInt(0))
978- if ((eQ == eQ))
972+ let gx = toBigInt(value(dV.payments[0]).amount)
973+ let gy = toBigInt(value(dV.payments[1]).amount)
974+ let eO = eH(gx, gy, toBigInt(0))
975+ if ((eO == eO))
979976 then {
980- let gB = fj(toString(dX.caller), toBase58String(dX.transactionId), AttachedPayment(value(dX.payments[0]).assetId, value(dX.payments[0]).amount), dX.payments[1], gu, true, false, true, 0, "")
981- let dz = gB._2
982- let gC = gB._7
983- let cQ = gB._9
984- let dA = gB._10
985- let dB = gB._11
986- let cy = gB._12
987- let cz = gB._13
988- let dm = invoke(aP, "emit", [dz], nil)
989- if ((dm == dm))
977+ let gz = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gs, true, false, true, 0, "")
978+ let dx = gz._2
979+ let gA = gz._7
980+ let cO = gz._9
981+ let dy = gz._10
982+ let dz = gz._11
983+ let cw = gz._12
984+ let cx = gz._13
985+ let dk = invoke(aN, "emit", [dx], nil)
986+ if ((dk == dk))
990987 then {
991- let gD = {
992- let aG = dm
993- if ($isInstanceOf(aG, "Address"))
988+ let gB = {
989+ let aE = dk
990+ if ($isInstanceOf(aE, "Address"))
994991 then {
995- let gE = aG
996- invoke(gE, "emit", [dz], nil)
992+ let gC = aE
993+ invoke(gC, "emit", [dx], nil)
997994 }
998995 else unit
999996 }
1000- if ((gD == gD))
997+ if ((gB == gB))
1001998 then {
1002- let gF = if ((dA > 0))
1003- then invoke(gy, "put", nil, [AttachedPayment(cy, dA)])
999+ let gD = if ((dy > 0))
1000+ then invoke(gw, "put", nil, [AttachedPayment(cw, dy)])
10041001 else nil
1005- if ((gF == gF))
1002+ if ((gD == gD))
10061003 then {
1007- let gG = if ((dB > 0))
1008- then invoke(gy, "put", nil, [AttachedPayment(cz, dB)])
1004+ let gE = if ((dz > 0))
1005+ then invoke(gw, "put", nil, [AttachedPayment(cx, dz)])
10091006 else nil
1010- if ((gG == gG))
1007+ if ((gE == gE))
10111008 then {
1012- let gH = if (gv)
1009+ let gF = if (gt)
10131010 then {
1014- let gI = invoke(gx, "stake", nil, [AttachedPayment(gC, dz)])
1015- if ((gI == gI))
1011+ let gG = invoke(gv, "stake", nil, [AttachedPayment(gA, dx)])
1012+ if ((gG == gG))
10161013 then nil
10171014 else throw("Strict value is not equal to itself.")
10181015 }
1019- else [ScriptTransfer(dX.caller, dz, gC)]
1020- let gJ = eR(0, 0, 0)
1021- let gi = gJ._1
1022- let eI = gJ._2
1023- let gj = eV(eQ, eI)
1024- if ((gj == gj))
1025- then ((cQ ++ gH) ++ gi)
1016+ else [ScriptTransfer(dV.caller, dx, gA)]
1017+ let gH = eP(0, 0, 0)
1018+ let gg = gH._1
1019+ let eG = gH._2
1020+ let gh = eT(eO, eG)
1021+ if ((gh == gh))
1022+ then ((cO ++ gF) ++ gg)
10261023 else throw("Strict value is not equal to itself.")
10271024 }
10281025 else throw("Strict value is not equal to itself.")
10391036
10401037
10411038
1042-@Callable(dX)
1043-func putOneTknV2 (fL,gv) = {
1044- let gK = {
1045- let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1046- if ($isInstanceOf(fT, "Boolean"))
1047- then fT
1048- else throw(($getType(fT) + " couldn't be cast to Boolean"))
1039+@Callable(dV)
1040+func putOneTknV2 (fJ,gt) = {
1041+ let gI = {
1042+ let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1043+ if ($isInstanceOf(fR, "Boolean"))
1044+ then fR
1045+ else throw(($getType(fR) + " couldn't be cast to Boolean"))
10491046 }
1050- let gL = if (if (if (aR())
1047+ let gJ = if (if (if (aP())
10511048 then true
1052- else (bg == q))
1049+ else (be == q))
10531050 then true
1054- else (bg == s))
1051+ else (be == s))
10551052 then true
1056- else gK
1057- let gM = [if (if (!(gL))
1053+ else gI
1054+ let gK = [if (if (!(gJ))
10581055 then true
1059- else gn(dX))
1056+ else gl(dV))
10601057 then true
1061- else aM("put operation is blocked by admin"), if ((size(dX.payments) == 1))
1058+ else aK("put operation is blocked by admin"), if ((size(dV.payments) == 1))
10621059 then true
1063- else aM("exactly 1 payment are expected")]
1064- if ((gM == gM))
1060+ else aK("exactly 1 payment are expected")]
1061+ if ((gK == gK))
10651062 then {
1066- let bc = aU()
1067- let cy = bc[w]
1068- let cz = bc[x]
1069- let cx = fromBase58String(bc[v])
1070- let fP = parseIntValue(bc[y])
1071- let fQ = parseIntValue(bc[z])
1072- let cw = if ((dX.caller == this))
1073- then dX.originCaller
1074- else dX.caller
1075- let fi = value(dX.payments[0])
1076- let cu = toBase58String(value(fi.assetId))
1077- let da = fi.amount
1078- let gN = fn(da, cu, toString(cw), toBase58String(dX.transactionId), true)
1079- if ((gN == gN))
1063+ let ba = aS()
1064+ let cw = ba[w]
1065+ let cx = ba[x]
1066+ let cv = fromBase58String(ba[v])
1067+ let fN = parseIntValue(ba[y])
1068+ let fO = parseIntValue(ba[z])
1069+ let cu = if ((dV.caller == this))
1070+ then dV.originCaller
1071+ else dV.caller
1072+ let fg = value(dV.payments[0])
1073+ let cs = toBase58String(value(fg.assetId))
1074+ let cY = fg.amount
1075+ let gL = fl(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
1076+ if ((gL == gL))
10801077 then {
1081- let cr = gN._3
1082- let cQ = gN._2
1083- let gO = gN._1
1084- let dz = if (if ((fL > 0))
1085- then (fL > gO)
1078+ let cp = gL._3
1079+ let cO = gL._2
1080+ let gM = gL._1
1081+ let dx = if (if ((fJ > 0))
1082+ then (fJ > gM)
10861083 else false)
1087- then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
1088- else gO
1089- let gB = invoke(aP, "emit", [dz], nil)
1090- if ((gB == gB))
1084+ then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
1085+ else gM
1086+ let gz = invoke(aN, "emit", [dx], nil)
1087+ if ((gz == gz))
10911088 then {
1092- let gD = {
1093- let aG = gB
1094- if ($isInstanceOf(aG, "Address"))
1089+ let gB = {
1090+ let aE = gz
1091+ if ($isInstanceOf(aE, "Address"))
10951092 then {
1096- let gE = aG
1097- invoke(gE, "emit", [dz], nil)
1093+ let gC = aE
1094+ invoke(gC, "emit", [dx], nil)
10981095 }
10991096 else unit
11001097 }
1101- if ((gD == gD))
1098+ if ((gB == gB))
11021099 then {
1103- let gH = if (gv)
1100+ let gF = if (gt)
11041101 then {
1105- let gI = invoke(bo, "stake", nil, [AttachedPayment(cx, dz)])
1106- if ((gI == gI))
1102+ let gG = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
1103+ if ((gG == gG))
11071104 then nil
11081105 else throw("Strict value is not equal to itself.")
11091106 }
1110- else [ScriptTransfer(dX.caller, dz, cx)]
1111- let gc = if ((cr > 0))
1112- then [ScriptTransfer(aT, cr, fromBase58String(cu))]
1107+ else [ScriptTransfer(dV.caller, dx, cv)]
1108+ let ga = if ((cp > 0))
1109+ then [ScriptTransfer(aR, cp, fromBase58String(cs))]
11131110 else nil
1114- let gP = if ((this == aT))
1111+ let gN = if ((this == aR))
11151112 then $Tuple2(0, 0)
11161113 else {
1117- let gQ = if ((fi.assetId == bi))
1114+ let gO = if ((fg.assetId == bg))
11181115 then true
11191116 else false
1120- if (gQ)
1121- then $Tuple2(-(cr), 0)
1122- else $Tuple2(0, -(cr))
1117+ if (gO)
1118+ then $Tuple2(-(cp), 0)
1119+ else $Tuple2(0, -(cp))
11231120 }
1124- let eS = gP._1
1125- let eT = gP._2
1126- let gR = eR(eS, eT, 0)
1127- let gi = gR._1
1128- let eI = gR._2
1129- $Tuple2((((cQ ++ gH) ++ gc) ++ gi), dz)
1121+ let eQ = gN._1
1122+ let eR = gN._2
1123+ let gP = eP(eQ, eR, 0)
1124+ let gg = gP._1
1125+ let eG = gP._2
1126+ $Tuple2((((cO ++ gF) ++ ga) ++ gg), dx)
11301127 }
11311128 else throw("Strict value is not equal to itself.")
11321129 }
11391136
11401137
11411138
1142-@Callable(dX)
1143-func putForFree (gS) = if ((0 > gS))
1139+@Callable(dV)
1140+func putForFree (gQ) = if ((0 > gQ))
11441141 then throw("Wrong slpg")
1145- else if ((size(dX.payments) != 2))
1142+ else if ((size(dV.payments) != 2))
11461143 then throw("2 pmnts expd")
11471144 else {
1148- let gT = fj(toString(dX.caller), toBase58String(dX.transactionId), AttachedPayment(value(dX.payments[0]).assetId, value(dX.payments[0]).amount), dX.payments[1], gS, false, false, true, 0, "")
1149- let cQ = gT._9
1150- let gz = toBigInt(value(dX.payments[0]).amount)
1151- let gA = toBigInt(value(dX.payments[1]).amount)
1152- let eQ = eJ(gz, gA, toBigInt(0))
1153- if ((eQ == eQ))
1145+ let gR = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gQ, false, false, true, 0, "")
1146+ let cO = gR._9
1147+ let gx = toBigInt(value(dV.payments[0]).amount)
1148+ let gy = toBigInt(value(dV.payments[1]).amount)
1149+ let eO = eH(gx, gy, toBigInt(0))
1150+ if ((eO == eO))
11541151 then {
1155- let gU = eR(0, 0, 0)
1156- let gi = gU._1
1157- let eI = gU._2
1158- let gj = eV(eQ, eI)
1159- if ((gj == gj))
1160- then (cQ ++ gi)
1152+ let gS = eP(0, 0, 0)
1153+ let gg = gS._1
1154+ let eG = gS._2
1155+ let gh = eT(eO, eG)
1156+ if ((gh == gh))
1157+ then (cO ++ gg)
11611158 else throw("Strict value is not equal to itself.")
11621159 }
11631160 else throw("Strict value is not equal to itself.")
11651162
11661163
11671164
1168-@Callable(dX)
1165+@Callable(dV)
11691166 func get () = {
1170- let dm = fh(dX)
1171- let gV = dm._1
1172- let cP = dm._2
1173- let da = dm._3
1174- let cu = dm._4
1175- let cQ = dm._5
1176- let ey = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1177- if ((ey == ey))
1167+ let dk = ff(dV)
1168+ let gT = dk._1
1169+ let cN = dk._2
1170+ let cY = dk._3
1171+ let cs = dk._4
1172+ let cO = dk._5
1173+ let ew = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1174+ if ((ew == ew))
11781175 then {
1179- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(da))
1180- let gW = eR(-(gV), -(cP), 0)
1181- let gi = gW._1
1182- let eI = gW._2
1183- let gj = eV(eQ, eI)
1184- if ((gj == gj))
1185- then (cQ ++ gi)
1176+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1177+ let gU = eP(-(gT), -(cN), 0)
1178+ let gg = gU._1
1179+ let eG = gU._2
1180+ let gh = eT(eO, eG)
1181+ if ((gh == gh))
1182+ then (cO ++ gg)
11861183 else throw("Strict value is not equal to itself.")
11871184 }
11881185 else throw("Strict value is not equal to itself.")
11901187
11911188
11921189
1193-@Callable(dX)
1194-func getOneTknV2 (fK,fL) = {
1195- let gK = {
1196- let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1197- if ($isInstanceOf(fT, "Boolean"))
1198- then fT
1199- else throw(($getType(fT) + " couldn't be cast to Boolean"))
1190+@Callable(dV)
1191+func getOneTknV2 (fI,fJ) = {
1192+ let gI = {
1193+ let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1194+ if ($isInstanceOf(fR, "Boolean"))
1195+ then fR
1196+ else throw(($getType(fR) + " couldn't be cast to Boolean"))
12001197 }
1201- let gX = if (if (aR())
1198+ let gV = if (if (aP())
12021199 then true
1203- else (bg == s))
1200+ else (be == s))
12041201 then true
1205- else gK
1206- let gM = [if (if (!(gX))
1202+ else gI
1203+ let gK = [if (if (!(gV))
12071204 then true
1208- else gn(dX))
1205+ else gl(dV))
12091206 then true
1210- else aM("get operation is blocked by admin"), if ((size(dX.payments) == 1))
1207+ else aK("get operation is blocked by admin"), if ((size(dV.payments) == 1))
12111208 then true
1212- else aM("exactly 1 payment are expected")]
1213- if ((gM == gM))
1209+ else aK("exactly 1 payment are expected")]
1210+ if ((gK == gK))
12141211 then {
1215- let gY = fJ(fK, fL, dX.payments, dX.caller, dX.originCaller, dX.transactionId)
1216- let cQ = gY._1
1217- let fV = gY._2
1218- $Tuple2(cQ, fV)
1212+ let gW = fH(fI, fJ, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1213+ let cO = gW._1
1214+ let fT = gW._2
1215+ $Tuple2(cO, fT)
12191216 }
12201217 else throw("Strict value is not equal to itself.")
12211218 }
12221219
12231220
12241221
1225-@Callable(dX)
1222+@Callable(dV)
12261223 func refreshDLp () = {
1227- let gZ = valueOrElse(getInteger(an), 0)
1228- let ha = if (((height - gZ) >= aq))
1224+ let gX = valueOrElse(getInteger(al), 0)
1225+ let gY = if (((height - gX) >= ao))
12291226 then unit
1230- else aM(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
1231- if ((ha == ha))
1227+ else aK(makeString([toString(ao), " blocks have not passed since the previous call"], ""))
1228+ if ((gY == gY))
12321229 then {
1233- let fc = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aO("invalid dLp"))
1234- let hb = eR(0, 0, 0)
1235- let hc = hb._1
1236- let eI = hb._2
1237- let eU = if ((fc != eI))
1238- then hc
1239- else aM("nothing to refresh")
1240- $Tuple2(eU, toString(eI))
1230+ let fa = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
1231+ let gZ = eP(0, 0, 0)
1232+ let ha = gZ._1
1233+ let eG = gZ._2
1234+ let eS = if ((fa != eG))
1235+ then ha
1236+ else aK("nothing to refresh")
1237+ $Tuple2(eS, toString(eG))
12411238 }
12421239 else throw("Strict value is not equal to itself.")
12431240 }
12441241
12451242
12461243
1247-@Callable(dX)
1248-func getOneTknV2READONLY (fK,hd) = {
1249- let bc = aU()
1250- let cy = bc[w]
1251- let cz = bc[x]
1252- let cx = bc[v]
1253- let dH = [toBigInt(bH(cy)), toBigInt(bH(cz))]
1254- let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cx)), "invalid lp asset").quantity)
1255- let bU = dG(dH)
1256- let bT = (bU - fraction(toBigInt(hd), bU, eH))
1257- let he = if ((fK == cy))
1244+@Callable(dV)
1245+func getOneTknV2READONLY (fI,hb) = {
1246+ let ba = aS()
1247+ let cw = ba[w]
1248+ let cx = ba[x]
1249+ let cv = ba[v]
1250+ let dF = [toBigInt(bF(cw)), toBigInt(bF(cx))]
1251+ let eF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
1252+ let bS = dE(dF)
1253+ let bR = (bS - fraction(toBigInt(hb), bS, eF))
1254+ let hc = if ((fI == cw))
12581255 then 0
1259- else if ((fK == cz))
1256+ else if ((fI == cx))
12601257 then 1
12611258 else throw("invalid out asset id")
1262- let hf = eu(dH, he, bT)
1263- let hg = (dH[he] - hf)
1264- let hh = max([0, toInt((hg - f))])
1265- let hi = cp(hh)
1266- let fU = hi._1
1267- let cr = hi._2
1268- $Tuple2(nil, $Tuple2(fU, cr))
1259+ let hd = es(dF, hc, bR)
1260+ let he = (dF[hc] - hd)
1261+ let hf = max([0, toInt((he - f))])
1262+ let hg = cn(hf)
1263+ let fS = hg._1
1264+ let cp = hg._2
1265+ $Tuple2(nil, $Tuple2(fS, cp))
12691266 }
12701267
12711268
12721269
1273-@Callable(dX)
1274-func getOneTknV2WithBonusREADONLY (fK,hd) = {
1275- let bc = aU()
1276- let cy = bc[w]
1277- let cz = bc[x]
1278- let cx = bc[v]
1279- let cE = bH(cy)
1280- let cG = bH(cz)
1281- let hj = {
1282- let fT = invoke(this, "getOneTknV2READONLY", [fK, hd], nil)
1283- if ($isInstanceOf(fT, "(Int, Int)"))
1284- then fT
1285- else throw(($getType(fT) + " couldn't be cast to (Int, Int)"))
1270+@Callable(dV)
1271+func getOneTknV2WithBonusREADONLY (fI,hb) = {
1272+ let ba = aS()
1273+ let cw = ba[w]
1274+ let cx = ba[x]
1275+ let cv = ba[v]
1276+ let cC = bF(cw)
1277+ let cE = bF(cx)
1278+ let hh = {
1279+ let fR = invoke(this, "getOneTknV2READONLY", [fI, hb], nil)
1280+ if ($isInstanceOf(fR, "(Int, Int)"))
1281+ then fR
1282+ else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
12861283 }
1287- let fU = hj._1
1288- let cr = hj._2
1289- let dm = cs("", cx, hd, this)
1290- let cO = dm._1
1291- let cP = dm._2
1292- let hk = (cO + cP)
1293- let fI = if ((hk == 0))
1294- then if ((fU == 0))
1284+ let fS = hh._1
1285+ let cp = hh._2
1286+ let dk = cq("", cv, hb, this)
1287+ let cM = dk._1
1288+ let cN = dk._2
1289+ let hi = (cM + cN)
1290+ let fG = if ((hi == 0))
1291+ then if ((fS == 0))
12951292 then 0
12961293 else throw("bonus calculation error")
1297- else fraction((fU - hk), a, hk)
1298- $Tuple2(nil, $Tuple3(fU, cr, fI))
1294+ else fraction((fS - hi), a, hi)
1295+ $Tuple2(nil, $Tuple3(fS, cp, fG))
12991296 }
13001297
13011298
13021299
1303-@Callable(dX)
1304-func getNoLess (hl,hm) = {
1305- let dm = fh(dX)
1306- let cO = dm._1
1307- let cP = dm._2
1308- let da = dm._3
1309- let cu = dm._4
1310- let cQ = dm._5
1311- if ((hl > cO))
1312- then throw(((("Failed: " + toString(cO)) + " < ") + toString(hl)))
1313- else if ((hm > cP))
1314- then throw(((("Failed: " + toString(cP)) + " < ") + toString(hm)))
1300+@Callable(dV)
1301+func getNoLess (hj,hk) = {
1302+ let dk = ff(dV)
1303+ let cM = dk._1
1304+ let cN = dk._2
1305+ let cY = dk._3
1306+ let cs = dk._4
1307+ let cO = dk._5
1308+ if ((hj > cM))
1309+ then throw(((("Failed: " + toString(cM)) + " < ") + toString(hj)))
1310+ else if ((hk > cN))
1311+ then throw(((("Failed: " + toString(cN)) + " < ") + toString(hk)))
13151312 else {
1316- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(da))
1317- let hn = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1318- if ((hn == hn))
1313+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1314+ let hl = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1315+ if ((hl == hl))
13191316 then {
1320- let ho = eR(-(cO), -(cP), 0)
1321- let gi = ho._1
1322- let eI = ho._2
1323- let gj = eV(eQ, eI)
1324- if ((gj == gj))
1325- then (cQ ++ gi)
1317+ let hm = eP(-(cM), -(cN), 0)
1318+ let gg = hm._1
1319+ let eG = hm._2
1320+ let gh = eT(eO, eG)
1321+ if ((gh == gh))
1322+ then (cO ++ gg)
13261323 else throw("Strict value is not equal to itself.")
13271324 }
13281325 else throw("Strict value is not equal to itself.")
13311328
13321329
13331330
1334-@Callable(dX)
1335-func unstakeAndGet (cq) = {
1336- let hp = if ((size(dX.payments) != 0))
1331+@Callable(dV)
1332+func unstakeAndGet (co) = {
1333+ let hn = if ((size(dV.payments) != 0))
13371334 then throw("No pmnts expd")
13381335 else true
1339- if ((hp == hp))
1336+ if ((hn == hn))
13401337 then {
1341- let cg = aU()
1342- let hq = bm()
1343- let gC = fromBase58String(cg[v])
1344- let hr = valueOrErrorMessage(addressFromString(hq[C]), "Wr st addr")
1345- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1346- let hs = invoke(hr, "unstake", [toBase58String(gC), cq], nil)
1347- if ((hs == hs))
1338+ let ce = aS()
1339+ let ho = bk()
1340+ let gA = fromBase58String(ce[v])
1341+ let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1342+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1343+ let hq = invoke(hp, "unstake", [toBase58String(gA), co], nil)
1344+ if ((hq == hq))
13481345 then {
1349- let dm = cs(toBase58String(dX.transactionId), toBase58String(gC), cq, dX.caller)
1350- let cO = dm._1
1351- let cP = dm._2
1352- let cC = parseIntValue(dm._9)
1353- let cQ = dm._10
1354- let ht = if (if (aR())
1346+ let dk = cq(toBase58String(dV.transactionId), toBase58String(gA), co, dV.caller)
1347+ let cM = dk._1
1348+ let cN = dk._2
1349+ let cA = parseIntValue(dk._9)
1350+ let cO = dk._10
1351+ let hr = if (if (aP())
13551352 then true
1356- else (cC == s))
1357- then throw(("Blocked: " + toString(cC)))
1353+ else (cA == s))
1354+ then throw(("Blocked: " + toString(cA)))
13581355 else true
1359- if ((ht == ht))
1356+ if ((hr == hr))
13601357 then {
1361- let hu = invoke(aP, "burn", [cq], [AttachedPayment(gC, cq)])
1362- if ((hu == hu))
1358+ let hs = invoke(aN, "burn", [co], [AttachedPayment(gA, co)])
1359+ if ((hs == hs))
13631360 then {
1364- let hv = eR(-(cO), -(cP), 0)
1365- let gi = hv._1
1366- let eI = hv._2
1367- let gj = eV(eQ, eI)
1368- if ((gj == gj))
1369- then (cQ ++ gi)
1361+ let ht = eP(-(cM), -(cN), 0)
1362+ let gg = ht._1
1363+ let eG = ht._2
1364+ let gh = eT(eO, eG)
1365+ if ((gh == gh))
1366+ then (cO ++ gg)
13701367 else throw("Strict value is not equal to itself.")
13711368 }
13721369 else throw("Strict value is not equal to itself.")
13801377
13811378
13821379
1383-@Callable(dX)
1384-func unstakeAndGetNoLess (hw,hx,hm) = {
1385- let gX = if (aR())
1380+@Callable(dV)
1381+func unstakeAndGetNoLess (hu,hv,hk) = {
1382+ let gV = if (aP())
13861383 then true
1387- else (bg == s)
1388- let gM = [if (!(gX))
1384+ else (be == s)
1385+ let gK = [if (!(gV))
13891386 then true
1390- else throw("get operation is blocked by admin"), if ((size(dX.payments) == 0))
1387+ else throw("get operation is blocked by admin"), if ((size(dV.payments) == 0))
13911388 then true
13921389 else throw("no payments are expected")]
1393- if ((gM == gM))
1390+ if ((gK == gK))
13941391 then {
1395- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1396- let hs = invoke(bo, "unstake", [toBase58String(bh), hw], nil)
1397- if ((hs == hs))
1392+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1393+ let hq = invoke(bm, "unstake", [toBase58String(bf), hu], nil)
1394+ if ((hq == hq))
13981395 then {
1399- let hy = cs(toBase58String(dX.transactionId), toBase58String(bh), hw, dX.caller)
1400- let cO = hy._1
1401- let cP = hy._2
1402- let cQ = hy._10
1403- let hz = [if ((cO >= hx))
1396+ let hw = cq(toBase58String(dV.transactionId), toBase58String(bf), hu, dV.caller)
1397+ let cM = hw._1
1398+ let cN = hw._2
1399+ let cO = hw._10
1400+ let hx = [if ((cM >= hv))
14041401 then true
1405- else throw(makeString(["amount asset amount to receive is less than ", toString(hx)], "")), if ((cP >= hm))
1402+ else throw(makeString(["amount asset amount to receive is less than ", toString(hv)], "")), if ((cN >= hk))
14061403 then true
1407- else throw(makeString(["price asset amount to receive is less than ", toString(hm)], ""))]
1408- if ((hz == hz))
1404+ else throw(makeString(["price asset amount to receive is less than ", toString(hk)], ""))]
1405+ if ((hx == hx))
14091406 then {
1410- let hn = invoke(aP, "burn", [hw], [AttachedPayment(bh, hw)])
1411- if ((hn == hn))
1407+ let hl = invoke(aN, "burn", [hu], [AttachedPayment(bf, hu)])
1408+ if ((hl == hl))
14121409 then {
1413- let hA = eR(-(cO), -(cP), 0)
1414- let gi = hA._1
1415- let eI = hA._2
1416- let gj = eV(eQ, eI)
1417- if ((gj == gj))
1418- then (cQ ++ gi)
1410+ let hy = eP(-(cM), -(cN), 0)
1411+ let gg = hy._1
1412+ let eG = hy._2
1413+ let gh = eT(eO, eG)
1414+ if ((gh == gh))
1415+ then (cO ++ gg)
14191416 else throw("Strict value is not equal to itself.")
14201417 }
14211418 else throw("Strict value is not equal to itself.")
14291426
14301427
14311428
1432-@Callable(dX)
1433-func unstakeAndGetOneTknV2 (hw,fK,fL) = {
1434- let gK = {
1435- let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1436- if ($isInstanceOf(fT, "Boolean"))
1437- then fT
1438- else throw(($getType(fT) + " couldn't be cast to Boolean"))
1429+@Callable(dV)
1430+func unstakeAndGetOneTknV2 (hu,fI,fJ) = {
1431+ let gI = {
1432+ let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1433+ if ($isInstanceOf(fR, "Boolean"))
1434+ then fR
1435+ else throw(($getType(fR) + " couldn't be cast to Boolean"))
14391436 }
1440- let gX = if (if (aR())
1437+ let gV = if (if (aP())
14411438 then true
1442- else (bg == s))
1439+ else (be == s))
14431440 then true
1444- else gK
1445- let gM = [if (if (!(gX))
1441+ else gI
1442+ let gK = [if (if (!(gV))
14461443 then true
1447- else gn(dX))
1444+ else gl(dV))
14481445 then true
1449- else aM("get operation is blocked by admin"), if ((size(dX.payments) == 0))
1446+ else aK("get operation is blocked by admin"), if ((size(dV.payments) == 0))
14501447 then true
1451- else aM("no payments are expected")]
1452- if ((gM == gM))
1448+ else aK("no payments are expected")]
1449+ if ((gK == gK))
14531450 then {
1454- let cg = aU()
1455- let hq = bm()
1456- let gC = fromBase58String(cg[v])
1457- let hr = valueOrErrorMessage(addressFromString(hq[C]), "Wr st addr")
1458- let hs = invoke(hr, "unstake", [toBase58String(gC), hw], nil)
1459- if ((hs == hs))
1451+ let ce = aS()
1452+ let ho = bk()
1453+ let gA = fromBase58String(ce[v])
1454+ let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1455+ let hq = invoke(hp, "unstake", [toBase58String(gA), hu], nil)
1456+ if ((hq == hq))
14601457 then {
1461- let hB = fJ(fK, fL, [AttachedPayment(gC, hw)], dX.caller, dX.originCaller, dX.transactionId)
1462- let cQ = hB._1
1463- let fV = hB._2
1464- $Tuple2(cQ, fV)
1458+ let hz = fH(fI, fJ, [AttachedPayment(gA, hu)], dV.caller, dV.originCaller, dV.transactionId)
1459+ let cO = hz._1
1460+ let fT = hz._2
1461+ $Tuple2(cO, fT)
14651462 }
14661463 else throw("Strict value is not equal to itself.")
14671464 }
14701467
14711468
14721469
1473-@Callable(dX)
1474-func putOneTknV2WithBonusREADONLY (hC,hD) = {
1475- let bc = aU()
1476- let cy = bc[w]
1477- let cz = bc[x]
1478- let cx = bc[v]
1479- let hE = fn(hC, hD, "", "", true)
1480- let fD = hE._1
1481- let cQ = hE._2
1482- let cr = hE._3
1483- let fI = hE._4
1484- $Tuple2(nil, $Tuple3(fD, cr, fI))
1470+@Callable(dV)
1471+func putOneTknV2WithBonusREADONLY (hA,hB) = {
1472+ let ba = aS()
1473+ let cw = ba[w]
1474+ let cx = ba[x]
1475+ let cv = ba[v]
1476+ let hC = fl(hA, hB, "", "", true)
1477+ let fB = hC._1
1478+ let cO = hC._2
1479+ let cp = hC._3
1480+ let fG = hC._4
1481+ $Tuple2(nil, $Tuple3(fB, cp, fG))
14851482 }
14861483
14871484
14881485
1489-@Callable(dX)
1490-func putOneTknV2WithoutTakeFeeREADONLY (hC,hD) = {
1491- let bc = aU()
1492- let cy = bc[w]
1493- let cz = bc[x]
1494- let cx = bc[v]
1495- let hF = fn(hC, hD, "", "", false)
1496- let fD = hF._1
1497- let cQ = hF._2
1498- let cr = hF._3
1499- let fI = hF._4
1500- $Tuple2(nil, $Tuple3(fD, cr, fI))
1486+@Callable(dV)
1487+func putOneTknV2WithoutTakeFeeREADONLY (hA,hB) = {
1488+ let ba = aS()
1489+ let cw = ba[w]
1490+ let cx = ba[x]
1491+ let cv = ba[v]
1492+ let hD = fl(hA, hB, "", "", false)
1493+ let fB = hD._1
1494+ let cO = hD._2
1495+ let cp = hD._3
1496+ let fG = hD._4
1497+ $Tuple2(nil, $Tuple3(fB, cp, fG))
15011498 }
15021499
15031500
15041501
1505-@Callable(dX)
1506-func activate (hG,hH) = if ((toString(dX.caller) != toString(aP)))
1502+@Callable(dV)
1503+func activate (hE,hF) = if ((toString(dV.caller) != toString(aN)))
15071504 then throw("denied")
1508- else $Tuple2([StringEntry(ag(), hG), StringEntry(ah(), hH)], "success")
1505+ else $Tuple2([StringEntry(ae(), hE), StringEntry(af(), hF)], "success")
15091506
15101507
15111508
1512-@Callable(dX)
1513-func setS (hI,ht) = if ((toString(dX.caller) != aI(this, aj())))
1514- then gm
1515- else [StringEntry(hI, ht)]
1509+@Callable(dV)
1510+func setS (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1511+ then gk
1512+ else [StringEntry(hG, hr)]
15161513
15171514
15181515
1519-@Callable(dX)
1520-func setI (hI,ht) = if ((toString(dX.caller) != aI(this, aj())))
1521- then gm
1522- else [IntegerEntry(hI, ht)]
1516+@Callable(dV)
1517+func setI (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1518+ then gk
1519+ else [IntegerEntry(hG, hr)]
15231520
15241521
15251522
1526-@Callable(dX)
1527-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
1523+@Callable(dV)
1524+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aS())
15281525
15291526
15301527
1531-@Callable(dX)
1532-func getAccBalanceWrapperREADONLY (bI) = $Tuple2(nil, bH(bI))
1528+@Callable(dV)
1529+func getAccBalanceWrapperREADONLY (bG) = $Tuple2(nil, bF(bG))
15331530
15341531
15351532
1536-@Callable(dX)
1537-func calcPricesWrapperREADONLY (ca,cb,cf) = {
1538- let hJ = ce(ca, cb, cf)
1539- $Tuple2(nil, [toString(hJ[0]), toString(hJ[1]), toString(hJ[2])])
1533+@Callable(dV)
1534+func calcPricesWrapperREADONLY (bY,bZ,cd) = {
1535+ let hH = cc(bY, bZ, cd)
1536+ $Tuple2(nil, [toString(hH[0]), toString(hH[1]), toString(hH[2])])
15401537 }
15411538
15421539
15431540
1544-@Callable(dX)
1545-func fromX18WrapperREADONLY (L,hK) = $Tuple2(nil, K(parseBigIntValue(L), hK))
1541+@Callable(dV)
1542+func fromX18WrapperREADONLY (L,hI) = $Tuple2(nil, K(parseBigIntValue(L), hI))
15461543
15471544
15481545
1549-@Callable(dX)
1546+@Callable(dV)
15501547 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
15511548
15521549
15531550
1554-@Callable(dX)
1555-func calcPriceBigIntWrapperREADONLY (bK,bL) = $Tuple2(nil, toString(bJ(parseBigIntValue(bK), parseBigIntValue(bL))))
1551+@Callable(dV)
1552+func calcPriceBigIntWrapperREADONLY (bI,bJ) = $Tuple2(nil, toString(bH(parseBigIntValue(bI), parseBigIntValue(bJ))))
15561553
15571554
15581555
1559-@Callable(dX)
1560-func estimatePutOperationWrapperREADONLY (ct,bP,cS,cT,cU,cV,hL,cW,cX) = $Tuple2(nil, cR(ct, bP, cS, cT, cU, cV, hL, cW, cX, true, false, 0, ""))
1556+@Callable(dV)
1557+func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hJ,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hJ, cU, cV, true, false, 0, ""))
15611558
15621559
15631560
1564-@Callable(dX)
1565-func estimateGetOperationWrapperREADONLY (ct,hM,cv,hL) = {
1566- let dm = cs(ct, hM, cv, addressFromStringValue(hL))
1567- $Tuple2(nil, $Tuple10(dm._1, dm._2, dm._3, dm._4, dm._5, dm._6, dm._7, toString(dm._8), dm._9, dm._10))
1561+@Callable(dV)
1562+func estimateGetOperationWrapperREADONLY (cr,hK,ct,hJ) = {
1563+ let dk = cq(cr, hK, ct, addressFromStringValue(hJ))
1564+ $Tuple2(nil, $Tuple10(dk._1, dk._2, dk._3, dk._4, dk._5, dk._6, dk._7, toString(dk._8), dk._9, dk._10))
15681565 }
15691566
15701567
15711568
1572-@Callable(dX)
1573-func getFeeREADONLY () = $Tuple2(nil, al)
1569+@Callable(dV)
1570+func getFeeREADONLY () = $Tuple2(nil, aj)
15741571
15751572
1576-@Verifier(hN)
1577-func hO () = {
1578- let hP = {
1579- let aG = gk()
1580- if ($isInstanceOf(aG, "ByteVector"))
1573+@Verifier(hL)
1574+func hM () = {
1575+ let hN = {
1576+ let aE = gi()
1577+ if ($isInstanceOf(aE, "ByteVector"))
15811578 then {
1582- let go = aG
1583- go
1579+ let gm = aE
1580+ gm
15841581 }
1585- else if ($isInstanceOf(aG, "Unit"))
1586- then hN.senderPublicKey
1582+ else if ($isInstanceOf(aE, "Unit"))
1583+ then hL.senderPublicKey
15871584 else throw("Match error")
15881585 }
1589- let aG = hN
1590- if ($isInstanceOf(aG, "Order"))
1586+ let aE = hL
1587+ if ($isInstanceOf(aE, "Order"))
15911588 then {
1592- let eY = aG
1593- let hQ = aS()
1594- let hR = eX(eY)
1595- let hS = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
1596- let hT = sigVerify(eY.bodyBytes, eY.proofs[1], hQ)
1597- if (if (if (hR)
1598- then hS
1589+ let eW = aE
1590+ let hO = aQ()
1591+ let hP = eV(eW)
1592+ let hQ = sigVerify(eW.bodyBytes, eW.proofs[0], eW.senderPublicKey)
1593+ let hR = sigVerify(eW.bodyBytes, eW.proofs[1], hO)
1594+ if (if (if (hP)
1595+ then hQ
15991596 else false)
1600- then hT
1597+ then hR
16011598 else false)
16021599 then true
1603- else aB(hR, hS, hT)
1600+ else az(hP, hQ, hR)
16041601 }
1605- else if ($isInstanceOf(aG, "SetScriptTransaction"))
1602+ else if ($isInstanceOf(aE, "SetScriptTransaction"))
16061603 then {
1607- let dK = aG
1608- let hU = blake2b256(value(dK.script))
1609- let hV = fromBase64String(value(getString(aP, az())))
1610- let hW = scriptHash(this)
1611- if (if ((hV == hU))
1612- then (hW != hU)
1604+ let dI = aE
1605+ let hS = blake2b256(value(dI.script))
1606+ let hT = fromBase64String(value(getString(aN, ax())))
1607+ let hU = scriptHash(this)
1608+ if (if ((hT == hS))
1609+ then (hU != hS)
16131610 else false)
16141611 then true
1615- else sigVerify(hN.bodyBytes, hN.proofs[0], hP)
1612+ else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
16161613 }
1617- else sigVerify(hN.bodyBytes, hN.proofs[0], hP)
1614+ else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
16181615 }
16191616
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 = "100"
2727
2828 let m = "1"
2929
3030 let n = "__"
3131
3232 let o = ""
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 1
4343
4444 let u = 2
4545
4646 let v = 3
4747
4848 let w = 4
4949
5050 let x = 5
5151
5252 let y = 6
5353
5454 let z = 7
5555
5656 let A = 8
5757
5858 let B = 9
5959
6060 let C = 1
6161
6262 let D = 6
6363
6464 let E = 7
6565
6666 let F = 10
6767
6868 let G = fraction(10, a, 10000)
6969
7070 func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
7171
7272
7373 func K (L,M) = toInt(fraction(L, toBigInt(M), c))
7474
7575
76-func N (L,M,O) = toInt(fraction(L, toBigInt(M), c, O))
76+func N (O,P,Q) = fraction(O, P, Q)
7777
7878
79-func P (Q,R,S) = fraction(Q, R, S)
80-
81-
82-func T (L) = if ((d > L))
79+func R (L) = if ((d > L))
8380 then -(L)
8481 else L
8582
8683
87-func U (L) = if ((d > L))
84+func S (L) = if ((d > L))
8885 then -(L)
8986 else L
9087
9188
92-func V () = "%s__factoryContract"
89+func T () = "%s__factoryContract"
9390
9491
95-func W () = "%s__managerPublicKey"
92+func U () = "%s__managerPublicKey"
9693
9794
98-func X () = "%s__pendingManagerPublicKey"
95+func V () = "%s__pendingManagerPublicKey"
9996
10097
101-func Y () = "%s%s__price__last"
98+func W () = "%s%s__price__last"
10299
103100
104-func Z (aa,ab) = makeString(["%s%s%d%d__price__history", toString(aa), toString(ab)], n)
101+func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], n)
105102
106103
107-func ac (ad,ae) = ((("%s%s%s__P__" + ad) + "__") + ae)
104+func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
108105
109106
110-func af (ad,ae) = ((("%s%s%s__G__" + ad) + "__") + ae)
107+func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
111108
112109
113-func ag () = "%s__amountAsset"
110+func ae () = "%s__amountAsset"
114111
115112
116-func ah () = "%s__priceAsset"
113+func af () = "%s__priceAsset"
117114
118115
119-func ai () = "%s__amp"
116+func ag () = "%s__amp"
120117
121118
122-func aj () = "%s__addonAddr"
119+func ah () = "%s__addonAddr"
123120
124121
125-let ak = "%s__fee"
122+let ai = "%s__fee"
126123
127-let al = valueOrElse(getInteger(this, ak), G)
124+let aj = valueOrElse(getInteger(this, ai), G)
128125
129-let am = makeString(["%s", "dLp"], n)
126+let ak = makeString(["%s", "dLp"], n)
130127
131-let an = makeString(["%s", "dLpRefreshedHeight"], n)
128+let al = makeString(["%s", "dLpRefreshedHeight"], n)
132129
133-let ao = makeString(["%s", "refreshDLpDelay"], n)
130+let am = makeString(["%s", "refreshDLpDelay"], n)
134131
135-let ap = 1
132+let an = 1
136133
137-let aq = valueOrElse(getInteger(this, ao), ap)
134+let ao = valueOrElse(getInteger(this, am), an)
138135
139-func ar () = "%s__factoryConfig"
136+func ap () = "%s__factoryConfig"
140137
141138
142-func as () = "%s%s__matcher__publicKey"
139+func aq () = "%s%s__matcher__publicKey"
143140
144141
145-func at (au,av) = (((("%d%d%s__" + au) + "__") + av) + "__config")
142+func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
146143
147144
148-func aw (ax) = ("%s%s%s__mappings__baseAsset2internalId__" + ax)
145+func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
149146
150147
151-func ay () = "%s__shutdown"
148+func aw () = "%s__shutdown"
152149
153150
154-func az () = "%s__allowedLpStableScriptHash"
151+func ax () = "%s__allowedLpStableScriptHash"
155152
156153
157-func aA () = "%s__feeCollectorAddress"
154+func ay () = "%s__feeCollectorAddress"
158155
159156
160-func aB (aC,aD,aE) = throw(((((("Failed: ordValid=" + toString(aC)) + " sndrValid=") + toString(aD)) + " mtchrValid=") + toString(aE)))
157+func az (aA,aB,aC) = throw(((((("Failed: ordValid=" + toString(aA)) + " sndrValid=") + toString(aB)) + " mtchrValid=") + toString(aC)))
161158
162159
163-func aF (L) = {
164- let aG = L
165- if ($isInstanceOf(aG, "String"))
160+func aD (L) = {
161+ let aE = L
162+ if ($isInstanceOf(aE, "String"))
166163 then {
167- let aH = aG
168- aH
164+ let aF = aE
165+ aF
169166 }
170167 else throw("fail cast to String")
171168 }
172169
173170
174-func aI (aJ,aK) = valueOrErrorMessage(getString(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
171+func aG (aH,aI) = valueOrErrorMessage(getString(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
175172
176173
177-func aL (aJ,aK) = valueOrErrorMessage(getInteger(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
174+func aJ (aH,aI) = valueOrErrorMessage(getInteger(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
178175
179176
180-func aM (aN) = throw(makeString(["lp_stable.ride:", aN], " "))
177+func aK (aL) = throw(makeString(["lp_stable.ride:", aL], " "))
181178
182179
183-func aO (aN) = makeString(["lp_stable.ride:", aN], " ")
180+func aM (aL) = makeString(["lp_stable.ride:", aL], " ")
184181
185182
186-let aP = addressFromStringValue(aI(this, V()))
183+let aN = addressFromStringValue(aG(this, T()))
187184
188-let aQ = aI(this, ai())
185+let aO = aG(this, ag())
189186
190-func aR () = valueOrElse(getBoolean(aP, ay()), false)
187+func aP () = valueOrElse(getBoolean(aN, aw()), false)
191188
192189
193-func aS () = fromBase58String(aI(aP, as()))
190+func aQ () = fromBase58String(aG(aN, aq()))
194191
195192
196-let aT = addressFromStringValue(aI(aP, aA()))
193+let aR = addressFromStringValue(aG(aN, ay()))
197194
198-func aU () = {
199- let aV = aI(this, ag())
200- let aW = aI(this, ah())
201- let aX = aL(aP, aw(aW))
202- let au = aL(aP, aw(aV))
203- split(aI(aP, at(toString(au), toString(aX))), n)
195+func aS () = {
196+ let aT = aG(this, ae())
197+ let aU = aG(this, af())
198+ let aV = aJ(aN, au(aU))
199+ let as = aJ(aN, au(aT))
200+ split(aG(aN, ar(toString(as), toString(aV))), n)
204201 }
205202
206203
207-func aY (aZ) = if ((aZ == k))
204+func aW (aX) = if ((aX == k))
208205 then unit
209- else fromBase58String(aZ)
206+ else fromBase58String(aX)
210207
211208
212-func ba (aZ) = if ((aZ == unit))
209+func aY (aX) = if ((aX == unit))
213210 then k
214- else toBase58String(value(aZ))
211+ else toBase58String(value(aX))
215212
216213
217-func bb (bc) = $Tuple7(addressFromStringValue(bc[t]), parseIntValue(bc[u]), fromBase58String(bc[v]), aY(bc[w]), aY(bc[x]), parseIntValue(bc[y]), parseIntValue(bc[z]))
214+func aZ (ba) = $Tuple7(addressFromStringValue(ba[t]), parseIntValue(ba[u]), fromBase58String(ba[v]), aW(ba[w]), aW(ba[x]), parseIntValue(ba[y]), parseIntValue(ba[z]))
218215
219216
220-let bd = bb(aU())
217+let bb = aZ(aS())
221218
222-let be = bd
219+let bc = bb
223220
224-let bf = be._1
221+let bd = bc._1
225222
226-let bg = be._2
223+let be = bc._2
227224
228-let bh = be._3
225+let bf = bc._3
229226
230-let bi = be._4
227+let bg = bc._4
231228
232-let bj = be._5
229+let bh = bc._5
233230
234-let bk = be._6
231+let bi = bc._6
235232
236-let bl = be._7
233+let bj = bc._7
237234
238-func bm () = split(aI(aP, ar()), n)
235+func bk () = split(aG(aN, ap()), n)
239236
240237
241-let bn = bm()
238+let bl = bk()
242239
243-let bo = valueOrErrorMessage(addressFromString(bn[C]), "Invalid staking contract address")
240+let bm = valueOrErrorMessage(addressFromString(bl[C]), "Invalid staking contract address")
244241
245-let bp = valueOrErrorMessage(addressFromString(bn[E]), "Invalid slipage contract address")
242+let bn = valueOrErrorMessage(addressFromString(bl[E]), "Invalid slipage contract address")
246243
247-let bq = valueOrErrorMessage(addressFromString(bn[F]), "Invalid gwx contract address")
244+let bo = valueOrErrorMessage(addressFromString(bl[F]), "Invalid gwx contract address")
248245
249-let br = valueOrErrorMessage(addressFromString(bn[D]), "Invalid gwx contract address")
246+let bp = valueOrErrorMessage(addressFromString(bl[D]), "Invalid gwx contract address")
250247
251-func bs (bt,bu,bv,bw,bx,by,bz,bA,bB,bC) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC)], n)
248+func bq (br,bs,bt,bu,bv,bw,bx,by,bz,bA) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA)], n)
252249
253250
254-func bD (bE,bF,bG,bw,bz,bA) = makeString(["%d%d%d%d%d%d", toString(bE), toString(bF), toString(bG), toString(bw), toString(bz), toString(bA)], n)
251+func bB (bC,bD,bE,bu,bx,by) = makeString(["%d%d%d%d%d%d", toString(bC), toString(bD), toString(bE), toString(bu), toString(bx), toString(by)], n)
255252
256253
257-func bH (bI) = if ((bI == "WAVES"))
254+func bF (bG) = if ((bG == "WAVES"))
258255 then wavesBalance(this).available
259- else assetBalance(this, fromBase58String(bI))
256+ else assetBalance(this, fromBase58String(bG))
260257
261258
262-func bJ (bK,bL) = fraction(bK, c, bL)
259+func bH (bI,bJ) = fraction(bI, c, bJ)
263260
264261
265-func bM (bN,bO,bP) = {
266- let bQ = fraction((bN - bO), b, bO)
267- let bR = ((bP - T(bQ)) > d)
268- if (!(bR))
269- then throw(("Big slpg: " + toString(bQ)))
270- else $Tuple2(bR, min([bN, bO]))
262+func bK (bL,bM,bN) = {
263+ let bO = fraction((bL - bM), b, bM)
264+ let bP = ((bN - R(bO)) > d)
265+ if (!(bP))
266+ then throw(("Big slpg: " + toString(bO)))
267+ else $Tuple2(bP, min([bL, bM]))
271268 }
272269
273270
274-func bS (bT,bU,bV) = {
275- let bQ = fraction(bU, b, bT)
276- let bW = (bV > bQ)
277- if (if (bW)
271+func bQ (bR,bS,bT) = {
272+ let bO = fraction(bS, b, bR)
273+ let bU = (bT > bO)
274+ if (if (bU)
278275 then true
279- else (bU > bT))
280- then throw(((((((toString(bU) + " ") + toString(bT)) + " ") + toString(bQ)) + " ") + toString(bV)))
281- else bW
276+ else (bS > bR))
277+ then throw(((((((toString(bS) + " ") + toString(bR)) + " ") + toString(bO)) + " ") + toString(bT)))
278+ else bU
282279 }
283280
284281
285-func bX (bY,bZ,ca,cb) = {
286- let cc = H(ca, bY)
287- let cd = H(cb, bZ)
288- bJ(cd, cc)
282+func bV (bW,bX,bY,bZ) = {
283+ let ca = H(bY, bW)
284+ let cb = H(bZ, bX)
285+ bH(cb, ca)
289286 }
290287
291288
292-func ce (ca,cb,cf) = {
293- let cg = aU()
294- let ch = parseIntValue(cg[y])
295- let ci = parseIntValue(cg[z])
296- let cj = bX(ch, ci, ca, cb)
297- let bL = H(ca, ch)
298- let bK = H(cb, ci)
299- let ck = H(cf, a)
300- let cl = bJ(bL, ck)
301- let cm = bJ(bK, ck)
302-[cj, cl, cm]
289+func cc (bY,bZ,cd) = {
290+ let ce = aS()
291+ let cf = parseIntValue(ce[y])
292+ let cg = parseIntValue(ce[z])
293+ let ch = bV(cf, cg, bY, bZ)
294+ let bJ = H(bY, cf)
295+ let bI = H(bZ, cg)
296+ let ci = H(cd, a)
297+ let cj = bH(bJ, ci)
298+ let ck = bH(bI, ci)
299+[ch, cj, ck]
303300 }
304301
305302
306-func cn (ca,cb,cf) = {
307- let co = ce(ca, cb, cf)
308-[K(co[0], a), K(co[1], a), K(co[2], a)]
303+func cl (bY,bZ,cd) = {
304+ let cm = cc(bY, bZ, cd)
305+[K(cm[0], a), K(cm[1], a), K(cm[2], a)]
309306 }
310307
311308
312-func cp (cq) = {
313- let cr = fraction(cq, al, a)
314- $Tuple2((cq - cr), cr)
309+func cn (co) = {
310+ let cp = fraction(co, aj, a)
311+ $Tuple2((co - cp), cp)
315312 }
316313
317314
318-func cs (ct,cu,cv,cw) = {
319- let cg = aU()
320- let cx = cg[v]
321- let cy = cg[w]
322- let cz = cg[x]
323- let cA = parseIntValue(cg[y])
324- let cB = parseIntValue(cg[z])
325- let cC = cg[u]
326- let cD = valueOrErrorMessage(assetInfo(fromBase58String(cx)), "Wrong LP id").quantity
327- if ((cx != cu))
315+func cq (cr,cs,ct,cu) = {
316+ let ce = aS()
317+ let cv = ce[v]
318+ let cw = ce[w]
319+ let cx = ce[x]
320+ let cy = parseIntValue(ce[y])
321+ let cz = parseIntValue(ce[z])
322+ let cA = ce[u]
323+ let cB = valueOrErrorMessage(assetInfo(fromBase58String(cv)), "Wrong LP id").quantity
324+ if ((cv != cs))
328325 then throw("Wrong pmt asset")
329326 else {
330- let cE = bH(cy)
331- let cF = H(cE, cA)
332- let cG = bH(cz)
333- let cH = H(cG, cB)
334- let cI = bJ(cH, cF)
335- let cJ = K(cI, a)
336- let cK = H(cv, a)
337- let cL = H(cD, a)
338- let cM = fraction(cF, cK, cL)
339- let cN = fraction(cH, cK, cL)
340- let cO = N(cM, cA, FLOOR)
341- let cP = N(cN, cB, FLOOR)
342- let cQ = if ((ct == ""))
327+ let cC = bF(cw)
328+ let cD = H(cC, cy)
329+ let cE = bF(cx)
330+ let cF = H(cE, cz)
331+ let cG = bH(cF, cD)
332+ let cH = K(cG, a)
333+ let cI = H(ct, a)
334+ let cJ = H(cB, a)
335+ let cK = fraction(cD, cI, cJ)
336+ let cL = fraction(cF, cI, cJ)
337+ let cM = K(cK, cy)
338+ let cN = K(cL, cz)
339+ let cO = if ((cr == ""))
343340 then nil
344- else [ScriptTransfer(cw, cO, if ((cy == "WAVES"))
341+ else [ScriptTransfer(cu, cM, if ((cw == "WAVES"))
345342 then unit
346- else fromBase58String(cy)), ScriptTransfer(cw, cP, if ((cz == "WAVES"))
343+ else fromBase58String(cw)), ScriptTransfer(cu, cN, if ((cx == "WAVES"))
347344 then unit
348- else fromBase58String(cz)), StringEntry(af(toString(cw), ct), bD(cO, cP, cv, cJ, height, lastBlock.timestamp)), IntegerEntry(Y(), cJ), IntegerEntry(Z(height, lastBlock.timestamp), cJ)]
349- $Tuple10(cO, cP, cy, cz, cE, cG, cD, cI, cC, cQ)
345+ else fromBase58String(cx)), StringEntry(ad(toString(cu), cr), bB(cM, cN, ct, cH, height, lastBlock.timestamp)), IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH)]
346+ $Tuple10(cM, cN, cw, cx, cC, cE, cB, cG, cA, cO)
350347 }
351348 }
352349
353350
354-func cR (ct,bP,cS,cT,cU,cV,cw,cW,cX,cY,cZ,da,db) = {
355- let cg = aU()
356- let cx = fromBase58String(cg[v])
357- let dc = cg[w]
358- let dd = cg[x]
359- let de = cg[A]
360- let df = cg[B]
361- let dg = parseIntValue(cg[y])
362- let dh = parseIntValue(cg[z])
363- let cC = cg[u]
364- let di = valueOrErrorMessage(assetInfo(cx), "Wr lp as").quantity
365- let cE = if (cW)
366- then bH(dc)
367- else if (if (cY)
368- then (db == dc)
351+func cP (cr,bN,cQ,cR,cS,cT,cu,cU,cV,cW,cX,cY,cZ) = {
352+ let ce = aS()
353+ let cv = fromBase58String(ce[v])
354+ let da = ce[w]
355+ let db = ce[x]
356+ let dc = ce[A]
357+ let dd = ce[B]
358+ let de = parseIntValue(ce[y])
359+ let df = parseIntValue(ce[z])
360+ let cA = ce[u]
361+ let dg = valueOrErrorMessage(assetInfo(cv), "Wr lp as").quantity
362+ let cC = if (cU)
363+ then bF(da)
364+ else if (if (cW)
365+ then (cZ == da)
369366 else false)
370- then (bH(dc) - da)
371- else if (cY)
372- then bH(dc)
373- else (bH(dc) - cS)
374- let cG = if (cW)
375- then bH(dd)
376- else if (if (cY)
377- then (db == dd)
367+ then (bF(da) - cY)
368+ else if (cW)
369+ then bF(da)
370+ else (bF(da) - cQ)
371+ let cE = if (cU)
372+ then bF(db)
373+ else if (if (cW)
374+ then (cZ == db)
378375 else false)
379- then (bH(dd) - da)
380- else if (cY)
381- then bH(dd)
382- else (bH(dd) - cU)
383- let dj = H(cS, dg)
384- let dk = H(cU, dh)
385- let dl = bJ(dk, dj)
386- let cF = H(cE, dg)
387- let cH = H(cG, dh)
388- let dm = if ((di == 0))
376+ then (bF(db) - cY)
377+ else if (cW)
378+ then bF(db)
379+ else (bF(db) - cS)
380+ let dh = H(cQ, de)
381+ let di = H(cS, df)
382+ let dj = bH(di, dh)
383+ let cD = H(cC, de)
384+ let cF = H(cE, df)
385+ let dk = if ((dg == 0))
389386 then {
390- let cI = d
391- let dn = d
392- let ck = pow((dj * dk), 0, toBigInt(5), 1, 0, DOWN)
393- $Tuple5(K(ck, a), K(dj, dg), K(dk, dh), bJ((cH + dk), (cF + dj)), dn)
387+ let cG = d
388+ let dl = d
389+ let ci = pow((dh * di), 0, toBigInt(5), 1, 0, DOWN)
390+ $Tuple5(K(ci, a), K(dh, de), K(di, df), bH((cF + di), (cD + dh)), dl)
394391 }
395392 else {
396- let cI = bJ(cH, cF)
397- let do = fraction(T((cI - dl)), c, cI)
398- let dn = H(bP, a)
399- if (if (if (cZ)
400- then (cI != d)
393+ let cG = bH(cF, cD)
394+ let dm = fraction(R((cG - dj)), c, cG)
395+ let dl = H(bN, a)
396+ if (if (if (cX)
397+ then (cG != d)
401398 else false)
402- then (do > dn)
399+ then (dm > dl)
403400 else false)
404- then throw(((("Price slippage " + toString(do)) + " > ") + toString(dn)))
401+ then throw(((("Price slippage " + toString(dm)) + " > ") + toString(dl)))
405402 else {
406- let dp = H(di, a)
407- let dq = fraction(dj, cI, c)
408- let dr = fraction(dk, c, cI)
409- let ds = if ((dq > dk))
410- then $Tuple2(dr, dk)
411- else $Tuple2(dj, dq)
412- let dt = ds._1
413- let du = ds._2
414- let ck = fraction(dp, du, cH)
415- $Tuple5(N(ck, a, FLOOR), N(dt, dg, CEILING), N(du, dh, CEILING), cI, dn)
403+ let dn = H(dg, a)
404+ let do = fraction(dh, cG, c)
405+ let dp = fraction(di, c, cG)
406+ let dq = if ((do > di))
407+ then $Tuple2(dp, di)
408+ else $Tuple2(dh, do)
409+ let dr = dq._1
410+ let ds = dq._2
411+ let ci = fraction(dn, ds, cF)
412+ $Tuple5(K(ci, a), K(dr, de), K(ds, df), cG, dl)
416413 }
417414 }
418- let dv = dm._1
419- let dw = dm._2
420- let dx = dm._3
421- let cJ = K(dm._4, a)
422- let dy = K(dm._5, a)
423- if ((0 >= dv))
415+ let dt = dk._1
416+ let du = dk._2
417+ let dv = dk._3
418+ let cH = K(dk._4, a)
419+ let dw = K(dk._5, a)
420+ if ((0 >= dt))
424421 then throw("LP <= 0")
425422 else {
426- let dz = if (!(cX))
423+ let dx = if (!(cV))
427424 then 0
428- else dv
429- let dA = (cS - dw)
430- let dB = (cU - dx)
431- let dC = if (if (cY)
432- then (db == dc)
425+ else dt
426+ let dy = (cQ - du)
427+ let dz = (cS - dv)
428+ let dA = if (if (cW)
429+ then (cZ == da)
433430 else false)
434- then $Tuple2(da, 0)
435- else if (if (cY)
436- then (db == dd)
431+ then $Tuple2(cY, 0)
432+ else if (if (cW)
433+ then (cZ == db)
437434 else false)
438- then $Tuple2(0, da)
439- else $Tuple2(dw, dx)
440- let dD = dC._1
441- let dE = dC._2
442- let dF = [IntegerEntry(Y(), cJ), IntegerEntry(Z(height, lastBlock.timestamp), cJ), StringEntry(ac(cw, ct), bs(dD, dE, dz, cJ, bP, dy, height, lastBlock.timestamp, dA, dB))]
443- $Tuple13(dv, dz, cJ, cE, cG, di, cx, cC, dF, dA, dB, cT, cV)
435+ then $Tuple2(0, cY)
436+ else $Tuple2(du, dv)
437+ let dB = dA._1
438+ let dC = dA._2
439+ let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, cr), bq(dB, dC, dx, cH, bN, dw, height, lastBlock.timestamp, dy, dz))]
440+ $Tuple13(dt, dx, cH, cC, cE, dg, cv, cA, dD, dy, dz, cR, cT)
444441 }
445442 }
446443
447444
448-func dG (dH) = {
449- let dI = dH[0]
450- let dJ = dH[1]
451- let dK = (dI + dJ)
452- if ((dK == e))
445+func dE (dF) = {
446+ let dG = dF[0]
447+ let dH = dF[1]
448+ let dI = (dG + dH)
449+ if ((dI == e))
453450 then e
454451 else {
455- let dL = parseIntValue(aQ)
456- let dM = (dL * 2)
457- let co = fraction(dI, dJ, f)
458- let dN = fraction(co, i, f)
459- let dO = fraction(toBigInt(dM), dK, f)
460- let dP = toBigInt((dM - 1))
461- func dQ (dR) = {
462- let dS = fraction(dR, dR, f)
463- let dT = fraction(dS, dR, f)
464- let dU = fraction(dT, f, dN)
465- fraction((dO + fraction(dU, g, f)), dR, (fraction(dP, dR, f) + fraction(h, dU, f)), CEILING)
452+ let dJ = parseIntValue(aO)
453+ let dK = (dJ * 2)
454+ let cm = fraction(dG, dH, f)
455+ let dL = fraction(cm, i, f)
456+ let dM = fraction(toBigInt(dK), dI, f)
457+ let dN = toBigInt((dK - 1))
458+ func dO (dP) = {
459+ let dQ = fraction(dP, dP, f)
460+ let dR = fraction(dQ, dP, f)
461+ let dS = fraction(dR, f, dL)
462+ fraction((dM + fraction(dS, g, f)), dP, (fraction(dN, dP, f) + fraction(h, dS, f)), CEILING)
466463 }
467464
468- func dV (dW,dX) = if (dW._2)
469- then dW
465+ func dT (dU,dV) = if (dU._2)
466+ then dU
470467 else {
471- let dR = dW._1
472- let dY = dQ(dR)
473- let dZ = toInt((dY - value(dR)))
474- let ea = if ((0 > dZ))
475- then -(dZ)
476- else dZ
477- if ((1 >= ea))
478- then $Tuple2(dY, true)
479- else $Tuple2(dY, false)
468+ let dP = dU._1
469+ let dW = dO(dP)
470+ let dX = toInt((dW - value(dP)))
471+ let dY = if ((0 > dX))
472+ then -(dX)
473+ else dX
474+ if ((1 >= dY))
475+ then $Tuple2(dW, true)
476+ else $Tuple2(dW, false)
480477 }
481478
482- let eb = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
483- let ec = {
484- let ed = eb
485- let ee = size(ed)
486- let ef = $Tuple2(dK, false)
487- func eg (eh,ei) = if ((ei >= ee))
488- then eh
489- else dV(eh, ed[ei])
479+ let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
480+ let ea = {
481+ let eb = dZ
482+ let ec = size(eb)
483+ let ed = $Tuple2(dI, false)
484+ func ee (ef,eg) = if ((eg >= ec))
485+ then ef
486+ else dT(ef, eb[eg])
490487
491- func ej (eh,ei) = if ((ei >= ee))
492- then eh
488+ func eh (ef,eg) = if ((eg >= ec))
489+ then ef
493490 else throw("List size exceeds 15")
494491
495- ej(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(ef, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
492+ eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
496493 }
497- let dR = ec._1
498- let ek = ec._2
499- if (ek)
500- then dR
501- else throw(("D calculation error, D = " + toString(dR)))
494+ let dP = ea._1
495+ let ei = ea._2
496+ if (ei)
497+ then dP
498+ else throw(("D calculation error, D = " + toString(dP)))
502499 }
503500 }
504501
505502
506-func el (dH) = {
507- let em = g
508- let dI = dH[0]
509- let dJ = dH[1]
510- let en = parseBigIntValue(l)
511- let dL = (parseBigIntValue(aQ) * en)
512- let dK = (dI + dJ)
513- if ((dK == e))
503+func ej (dF) = {
504+ let ek = g
505+ let dG = dF[0]
506+ let dH = dF[1]
507+ let el = parseBigIntValue(l)
508+ let dJ = (parseBigIntValue(aO) * el)
509+ let dI = (dG + dH)
510+ if ((dI == e))
514511 then e
515512 else {
516- let dM = (dL * em)
517- let dN = (((dI * dJ) * em) * em)
518- let eo = ((dM * dK) / en)
519- let ep = (dM - en)
520- let eq = (em + f)
521- func dV (dW,er) = {
522- let es = dW
523- let dR = es._1
524- let ek = es._2
525- if ((ek != unit))
526- then dW
513+ let dK = (dJ * ek)
514+ let dL = (((dG * dH) * ek) * ek)
515+ let em = ((dK * dI) / el)
516+ let en = (dK - el)
517+ let eo = (ek + f)
518+ func dT (dU,ep) = {
519+ let eq = dU
520+ let dP = eq._1
521+ let ei = eq._2
522+ if ((ei != unit))
523+ then dU
527524 else {
528- let dU = (((dR * dR) * dR) / dN)
529- let dY = (((eo + (dU * em)) * dR) / (((ep * dR) / en) + (eq * dU)))
530- let ea = U((dY - value(dR)))
531- if ((f >= ea))
532- then $Tuple2(dY, er)
533- else $Tuple2(dY, unit)
525+ let dS = (((dP * dP) * dP) / dL)
526+ let dW = (((em + (dS * ek)) * dP) / (((en * dP) / el) + (eo * dS)))
527+ let dY = S((dW - value(dP)))
528+ if ((f >= dY))
529+ then $Tuple2(dW, ep)
530+ else $Tuple2(dW, unit)
534531 }
535532 }
536533
537- let eb = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
538- let et = {
539- let ed = eb
540- let ee = size(ed)
541- let ef = $Tuple2(dK, unit)
542- func eg (eh,ei) = if ((ei >= ee))
543- then eh
544- else dV(eh, ed[ei])
534+ let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
535+ let er = {
536+ let eb = dZ
537+ let ec = size(eb)
538+ let ed = $Tuple2(dI, unit)
539+ func ee (ef,eg) = if ((eg >= ec))
540+ then ef
541+ else dT(ef, eb[eg])
545542
546- func ej (eh,ei) = if ((ei >= ee))
547- then eh
543+ func eh (ef,eg) = if ((eg >= ec))
544+ then ef
548545 else throw("List size exceeds 15")
549546
550- ej(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(ef, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
547+ eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
551548 }
552- let dR = et._1
553- let ek = et._2
554- if ((ek != unit))
555- then dR
556- else throw(("D calculation error, D = " + toString(dR)))
549+ let dP = er._1
550+ let ei = er._2
551+ if ((ei != unit))
552+ then dP
553+ else throw(("D calculation error, D = " + toString(dP)))
557554 }
558555 }
559556
560557
561-func eu (dH,dX,ev) = {
562- let em = g
563- let ew = dH[if ((dX == 0))
558+func es (dF,dV,et) = {
559+ let ek = g
560+ let eu = dF[if ((dV == 0))
564561 then 1
565562 else 0]
566- let en = parseBigIntValue(l)
567- let dL = (parseBigIntValue(aQ) * en)
568- let dK = ew
569- let dM = (dL * em)
570- let ex = (((((ev * ev) / (ew * em)) * ev) * en) / (dM * em))
571- let ey = ((dK + ((ev * en) / dM)) - ev)
572- func dV (dW,er) = {
573- let ez = dW
574- let eA = ez._1
575- let ek = ez._2
576- if ((ek != unit))
577- then dW
563+ let el = parseBigIntValue(l)
564+ let dJ = (parseBigIntValue(aO) * el)
565+ let dI = eu
566+ let dK = (dJ * ek)
567+ let ev = (((((et * et) / (eu * ek)) * et) * el) / (dK * ek))
568+ let ew = ((dI + ((et * el) / dK)) - et)
569+ func dT (dU,ep) = {
570+ let ex = dU
571+ let ey = ex._1
572+ let ei = ex._2
573+ if ((ei != unit))
574+ then dU
578575 else {
579- let eB = (((eA * eA) + ex) / ((g * eA) + ey))
580- let eC = U((eB - value(eA)))
581- if ((f >= eC))
582- then $Tuple2(eB, er)
583- else $Tuple2(eB, unit)
576+ let ez = (((ey * ey) + ev) / ((g * ey) + ew))
577+ let eA = S((ez - value(ey)))
578+ if ((f >= eA))
579+ then $Tuple2(ez, ep)
580+ else $Tuple2(ez, unit)
584581 }
585582 }
586583
587- let eb = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
588- let eD = {
589- let ed = eb
590- let ee = size(ed)
591- let ef = $Tuple2(ev, unit)
592- func eg (eh,ei) = if ((ei >= ee))
593- then eh
594- else dV(eh, ed[ei])
584+ let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
585+ let eB = {
586+ let eb = dZ
587+ let ec = size(eb)
588+ let ed = $Tuple2(et, unit)
589+ func ee (ef,eg) = if ((eg >= ec))
590+ then ef
591+ else dT(ef, eb[eg])
595592
596- func ej (eh,ei) = if ((ei >= ee))
597- then eh
593+ func eh (ef,eg) = if ((eg >= ec))
594+ then ef
598595 else throw("List size exceeds 15")
599596
600- ej(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(eg(ef, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
597+ eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
601598 }
602- let eA = eD._1
603- let ek = eD._2
604- if ((ek != unit))
605- then eA
606- else throw(("Y calculation error, Y = " + toString(eA)))
599+ let ey = eB._1
600+ let ei = eB._2
601+ if ((ei != unit))
602+ then ey
603+ else throw(("Y calculation error, Y = " + toString(ey)))
607604 }
608605
609606
610-func eE (eF,eG,eH) = {
611- let eI = fraction(dG([eF, eG]), c, eH)
612- if ((eH == e))
607+func eC (eD,eE,eF) = {
608+ let eG = fraction(dE([eD, eE]), c, eF)
609+ if ((eF == e))
613610 then e
614- else eI
611+ else eG
615612 }
616613
617614
618-func eJ (eK,eL,eM) = {
619- let eN = (toBigInt(bH(ba(bi))) - eK)
620- let eO = (toBigInt(bH(ba(bj))) - eL)
621- let eP = (toBigInt(value(assetInfo(bh)).quantity) - eM)
622- let eQ = eE(eN, eO, eP)
623- eQ
615+func eH (eI,eJ,eK) = {
616+ let eL = (toBigInt(bF(aY(bg))) - eI)
617+ let eM = (toBigInt(bF(aY(bh))) - eJ)
618+ let eN = (toBigInt(value(assetInfo(bf)).quantity) - eK)
619+ let eO = eC(eL, eM, eN)
620+ eO
624621 }
625622
626623
627-func eR (eS,eT,eM) = {
628- let eN = (bH(ba(bi)) + eS)
629- let eO = (bH(ba(bj)) + eT)
630- let eP = (value(assetInfo(bh)).quantity + eM)
631- let eI = eE(toBigInt(eN), toBigInt(eO), toBigInt(eP))
632- let eU = [IntegerEntry(an, height), StringEntry(am, toString(eI))]
633- $Tuple2(eU, eI)
624+func eP (eQ,eR,eK) = {
625+ let eL = (bF(aY(bg)) + eQ)
626+ let eM = (bF(aY(bh)) + eR)
627+ let eN = (value(assetInfo(bf)).quantity + eK)
628+ let eG = eC(toBigInt(eL), toBigInt(eM), toBigInt(eN))
629+ let eS = [IntegerEntry(al, height), StringEntry(ak, toString(eG))]
630+ $Tuple2(eS, eG)
634631 }
635632
636633
637-func eV (eW,eI) = if ((eI >= eW))
634+func eT (eU,eG) = if ((eG >= eU))
638635 then true
639- else aM("updated DLp lower than current DLp")
636+ else aK("updated DLp lower than current DLp")
640637
641638
642-func eX (eY) = {
643- let eZ = eY.amount
644- let fa = fraction(eY.amount, eY.price, a, FLOOR)
645- let fb = if ((eY.orderType == Buy))
646- then $Tuple2(eZ, -(fa))
647- else $Tuple2(-(eZ), fa)
648- let eS = fb._1
649- let eT = fb._2
650- if (if (if (aR())
639+func eV (eW) = {
640+ let eX = eW.amount
641+ let eY = fraction(eW.amount, eW.price, a, FLOOR)
642+ let eZ = if ((eW.orderType == Buy))
643+ then $Tuple2(eX, -(eY))
644+ else $Tuple2(-(eX), eY)
645+ let eQ = eZ._1
646+ let eR = eZ._2
647+ if (if (if (aP())
651648 then true
652- else (bg == r))
649+ else (be == r))
653650 then true
654- else (bg == s))
651+ else (be == s))
655652 then throw("Admin blocked")
656- else if (if ((eY.assetPair.amountAsset != bi))
653+ else if (if ((eW.assetPair.amountAsset != bg))
657654 then true
658- else (eY.assetPair.priceAsset != bj))
655+ else (eW.assetPair.priceAsset != bh))
659656 then throw("Wr assets")
660657 else {
661- let fc = parseBigIntValue(getStringValue(this, am))
662- let fd = eR(eS, eT, 0)
663- let fe = fd._1
664- let ff = fd._2
665- let fg = (ff >= fc)
666- fg
658+ let fa = parseBigIntValue(getStringValue(this, ak))
659+ let fb = eP(eQ, eR, 0)
660+ let fc = fb._1
661+ let fd = fb._2
662+ let fe = (fd >= fa)
663+ fe
667664 }
668665 }
669666
670667
671-func fh (dX) = if ((size(dX.payments) != 1))
668+func ff (dV) = if ((size(dV.payments) != 1))
672669 then throw("1 pmnt exp")
673670 else {
674- let fi = value(dX.payments[0])
675- let cu = value(fi.assetId)
676- let da = fi.amount
677- let dm = cs(toBase58String(dX.transactionId), toBase58String(cu), da, dX.caller)
678- let cO = dm._1
679- let cP = dm._2
680- let cC = parseIntValue(dm._9)
681- let cQ = dm._10
682- if (if (aR())
671+ let fg = value(dV.payments[0])
672+ let cs = value(fg.assetId)
673+ let cY = fg.amount
674+ let dk = cq(toBase58String(dV.transactionId), toBase58String(cs), cY, dV.caller)
675+ let cM = dk._1
676+ let cN = dk._2
677+ let cA = parseIntValue(dk._9)
678+ let cO = dk._10
679+ if (if (aP())
683680 then true
684- else (cC == s))
685- then throw(("Admin blocked: " + toString(cC)))
686- else $Tuple5(cO, cP, da, cu, cQ)
681+ else (cA == s))
682+ then throw(("Admin blocked: " + toString(cA)))
683+ else $Tuple5(cM, cN, cY, cs, cO)
687684 }
688685
689686
690-func fj (fk,ae,fl,fm,bP,cX,cY,cZ,da,db) = {
691- let dm = cR(ae, bP, value(fl).amount, value(fl).assetId, value(fm).amount, value(fm).assetId, fk, (ae == ""), cX, cY, cZ, da, db)
692- let cC = parseIntValue(dm._8)
693- if (if (if (aR())
687+func fh (fi,ac,fj,fk,bN,cV,cW,cX,cY,cZ) = {
688+ let dk = cP(ac, bN, value(fj).amount, value(fj).assetId, value(fk).amount, value(fk).assetId, fi, (ac == ""), cV, cW, cX, cY, cZ)
689+ let cA = parseIntValue(dk._8)
690+ if (if (if (aP())
694691 then true
695- else (cC == q))
692+ else (cA == q))
696693 then true
697- else (cC == s))
698- then throw(("Blocked:" + toString(cC)))
699- else dm
694+ else (cA == s))
695+ then throw(("Blocked:" + toString(cA)))
696+ else dk
700697 }
701698
702699
703-func fn (fo,cu,cw,ae,fp) = {
704- let bc = aU()
705- let cy = bc[w]
706- let cz = bc[x]
707- let cx = bc[v]
708- let dg = parseIntValue(bc[y])
709- let dh = parseIntValue(bc[z])
710- let eP = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cx)), "invalid lp asset").quantity)
711- let fq = if ((eP > e))
700+func fl (fm,cs,cu,ac,fn) = {
701+ let ba = aS()
702+ let cw = ba[w]
703+ let cx = ba[x]
704+ let cv = ba[v]
705+ let de = parseIntValue(ba[y])
706+ let df = parseIntValue(ba[z])
707+ let eN = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
708+ let fo = if ((eN > e))
712709 then true
713710 else throw("initial deposit requires all coins")
714- if ((fq == fq))
711+ if ((fo == fo))
715712 then {
716- let cE = bH(cy)
717- let cG = bH(cz)
718- let fr = if ((ae == ""))
719- then $Tuple2(cE, cG)
720- else if ((cu == cy))
721- then if ((fo > cE))
713+ let cC = bF(cw)
714+ let cE = bF(cx)
715+ let fp = if ((ac == ""))
716+ then $Tuple2(cC, cE)
717+ else if ((cs == cw))
718+ then if ((fm > cC))
722719 then throw("invalid payment amount")
723- else $Tuple2((cE - fo), cG)
724- else if ((cu == cz))
725- then if ((fo > cG))
720+ else $Tuple2((cC - fm), cE)
721+ else if ((cs == cx))
722+ then if ((fm > cE))
726723 then throw("invalid payment amount")
727- else $Tuple2(cE, (cG - fo))
724+ else $Tuple2(cC, (cE - fm))
728725 else throw("wrong pmtAssetId")
729- let fs = fr._1
730- let ft = fr._2
731- let fu = if ((cu == cy))
732- then $Tuple2(fo, 0)
733- else if ((cu == cz))
734- then $Tuple2(0, fo)
726+ let fq = fp._1
727+ let fr = fp._2
728+ let fs = if ((cs == cw))
729+ then $Tuple2(fm, 0)
730+ else if ((cs == cx))
731+ then $Tuple2(0, fm)
735732 else throw("invalid payment")
736- let fv = fu._1
737- let fw = fu._2
738- let fx = if (fp)
739- then $Tuple3(cp(fv)._1, cp(fw)._1, cp(fo)._2)
740- else $Tuple3(fv, fw, 0)
741- let fy = fx._1
742- let fz = fx._2
743- let cr = fx._3
744- let fA = (fs + fy)
745- let fB = (ft + fz)
746- let bU = dG([toBigInt(fs), toBigInt(ft)])
747- let bT = dG([toBigInt(fA), toBigInt(fB)])
748- let fC = if ((bT > bU))
733+ let ft = fs._1
734+ let fu = fs._2
735+ let fv = if (fn)
736+ then $Tuple3(cn(ft)._1, cn(fu)._1, cn(fm)._2)
737+ else $Tuple3(ft, fu, 0)
738+ let fw = fv._1
739+ let fx = fv._2
740+ let cp = fv._3
741+ let fy = (fq + fw)
742+ let fz = (fr + fx)
743+ let bS = dE([toBigInt(fq), toBigInt(fr)])
744+ let bR = dE([toBigInt(fy), toBigInt(fz)])
745+ let fA = if ((bR > bS))
749746 then true
750747 else throw()
751- if ((fC == fC))
748+ if ((fA == fA))
752749 then {
753- let fD = fraction(eP, (bT - bU), bU, FLOOR)
754- let cJ = K(bJ(H(fB, dh), H(fA, dg)), a)
755- let dF = [IntegerEntry(Y(), cJ), IntegerEntry(Z(height, lastBlock.timestamp), cJ), StringEntry(ac(cw, ae), bs(fv, fw, toInt(fD), cJ, 0, 0, height, lastBlock.timestamp, 0, 0))]
756- let fE = fraction(ft, a, fs)
757- let fF = fraction(fo, a, (fE + a))
758- let fG = (fo - fF)
759- let fH = fraction(eP, toBigInt(fG), toBigInt(ft))
760- let fI = toInt(fraction((fD - fH), b, fH))
761- $Tuple4(toInt(fD), dF, cr, fI)
750+ let fB = fraction(eN, (bR - bS), bS, FLOOR)
751+ let cH = K(bH(H(fz, df), H(fy, de)), a)
752+ let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(ft, fu, toInt(fB), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
753+ let fC = fraction(fr, a, fq)
754+ let fD = fraction(fm, a, (fC + a))
755+ let fE = (fm - fD)
756+ let fF = fraction(eN, toBigInt(fE), toBigInt(fr))
757+ let fG = toInt(fraction((fB - fF), b, fF))
758+ $Tuple4(toInt(fB), dD, cp, fG)
762759 }
763760 else throw("Strict value is not equal to itself.")
764761 }
765762 else throw("Strict value is not equal to itself.")
766763 }
767764
768765
769-func fJ (fK,fL,fM,fk,fN,fO) = {
770- let bc = aU()
771- let cx = bc[v]
772- let cy = bc[w]
773- let cz = bc[x]
774- let fP = parseIntValue(bc[y])
775- let fQ = parseIntValue(bc[z])
776- let fR = bc[u]
777- let cw = if ((fk == br))
778- then fN
779- else fk
780- let fi = value(fM[0])
781- let cu = value(fi.assetId)
782- let da = fi.amount
783- let eQ = eJ(e, e, e)
784- if ((eQ == eQ))
766+func fH (fI,fJ,fK,fi,fL,fM) = {
767+ let ba = aS()
768+ let cv = ba[v]
769+ let cw = ba[w]
770+ let cx = ba[x]
771+ let fN = parseIntValue(ba[y])
772+ let fO = parseIntValue(ba[z])
773+ let fP = ba[u]
774+ let cu = if ((fi == bp))
775+ then fL
776+ else fi
777+ let fg = value(fK[0])
778+ let cs = value(fg.assetId)
779+ let cY = fg.amount
780+ let eO = eH(e, e, e)
781+ if ((eO == eO))
785782 then {
786- let ct = toBase58String(fO)
787- if ((cx != toBase58String(cu)))
783+ let cr = toBase58String(fM)
784+ if ((cv != toBase58String(cs)))
788785 then throw("Wrong LP")
789786 else {
790- let cE = bH(cy)
791- let cG = bH(cz)
792- let fS = {
793- let fT = invoke(this, "getOneTknV2READONLY", [fK, da], nil)
794- if ($isInstanceOf(fT, "(Int, Int)"))
795- then fT
796- else throw(($getType(fT) + " couldn't be cast to (Int, Int)"))
787+ let cC = bF(cw)
788+ let cE = bF(cx)
789+ let fQ = {
790+ let fR = invoke(this, "getOneTknV2READONLY", [fI, cY], nil)
791+ if ($isInstanceOf(fR, "(Int, Int)"))
792+ then fR
793+ else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
797794 }
798- if ((fS == fS))
795+ if ((fQ == fQ))
799796 then {
800- let cr = fS._2
801- let fU = fS._1
802- let fV = if (if ((fL > 0))
803- then (fL > fU)
797+ let cp = fQ._2
798+ let fS = fQ._1
799+ let fT = if (if ((fJ > 0))
800+ then (fJ > fS)
804801 else false)
805- then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
806- else fU
807- let fW = if ((fK == cy))
808- then $Tuple4(fV, 0, ((cE - fV) - cr), cG)
809- else if ((fK == cz))
810- then $Tuple4(0, fV, cE, ((cG - fV) - cr))
802+ then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
803+ else fS
804+ let fU = if ((fI == cw))
805+ then $Tuple4(fT, 0, ((cC - fT) - cp), cE)
806+ else if ((fI == cx))
807+ then $Tuple4(0, fT, cC, ((cE - fT) - cp))
811808 else throw("invalid out asset id")
812- let fX = fW._1
813- let fY = fW._2
814- let fA = fW._3
815- let fB = fW._4
816- let fZ = bJ(H(fB, fQ), H(fA, fP))
817- let ga = K(fZ, a)
818- let gb = if ((fK == "WAVES"))
809+ let fV = fU._1
810+ let fW = fU._2
811+ let fy = fU._3
812+ let fz = fU._4
813+ let fX = bH(H(fz, fO), H(fy, fN))
814+ let fY = K(fX, a)
815+ let fZ = if ((fI == "WAVES"))
819816 then unit
820- else fromBase58String(fK)
821- let gc = if ((cr > 0))
822- then [ScriptTransfer(aT, cr, gb)]
817+ else fromBase58String(fI)
818+ let ga = if ((cp > 0))
819+ then [ScriptTransfer(aR, cp, fZ)]
823820 else nil
824- let cQ = ([ScriptTransfer(cw, fV, gb), StringEntry(af(toString(cw), ct), bD(fX, fY, da, ga, height, lastBlock.timestamp)), IntegerEntry(Y(), ga), IntegerEntry(Z(height, lastBlock.timestamp), ga)] ++ gc)
825- if ((cQ == cQ))
821+ let cO = ([ScriptTransfer(cu, fT, fZ), StringEntry(ad(toString(cu), cr), bB(fV, fW, cY, fY, height, lastBlock.timestamp)), IntegerEntry(W(), fY), IntegerEntry(X(height, lastBlock.timestamp), fY)] ++ ga)
822+ if ((cO == cO))
826823 then {
827- let gd = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
828- if ((gd == gd))
824+ let gb = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
825+ if ((gb == gb))
829826 then {
830- let ge = {
831- let gf = if ((this == aT))
827+ let gc = {
828+ let gd = if ((this == aR))
832829 then 0
833- else cr
834- let gg = if ((aY(fK) == bi))
830+ else cp
831+ let ge = if ((aW(fI) == bg))
835832 then true
836833 else false
837- if (gg)
838- then $Tuple2(-((fU + gf)), 0)
839- else $Tuple2(0, -((fU + gf)))
834+ if (ge)
835+ then $Tuple2(-((fS + gd)), 0)
836+ else $Tuple2(0, -((fS + gd)))
840837 }
841- let eS = ge._1
842- let eT = ge._2
843- let gh = eR(eS, eT, 0)
844- let gi = gh._1
845- let eI = gh._2
846- let gj = eV(eQ, eI)
847- if ((gj == gj))
848- then $Tuple2((cQ ++ gi), fV)
838+ let eQ = gc._1
839+ let eR = gc._2
840+ let gf = eP(eQ, eR, 0)
841+ let gg = gf._1
842+ let eG = gf._2
843+ let gh = eT(eO, eG)
844+ if ((gh == gh))
845+ then $Tuple2((cO ++ gg), fT)
849846 else throw("Strict value is not equal to itself.")
850847 }
851848 else throw("Strict value is not equal to itself.")
852849 }
853850 else throw("Strict value is not equal to itself.")
854851 }
855852 else throw("Strict value is not equal to itself.")
856853 }
857854 }
858855 else throw("Strict value is not equal to itself.")
859856 }
860857
861858
862-func gk () = {
863- let aG = getString(W())
864- if ($isInstanceOf(aG, "String"))
859+func gi () = {
860+ let aE = getString(U())
861+ if ($isInstanceOf(aE, "String"))
865862 then {
866- let dK = aG
867- fromBase58String(dK)
863+ let dI = aE
864+ fromBase58String(dI)
868865 }
869- else if ($isInstanceOf(aG, "Unit"))
866+ else if ($isInstanceOf(aE, "Unit"))
870867 then unit
871868 else throw("Match error")
872869 }
873870
874871
875-func gl () = {
876- let aG = getString(X())
877- if ($isInstanceOf(aG, "String"))
872+func gj () = {
873+ let aE = getString(V())
874+ if ($isInstanceOf(aE, "String"))
878875 then {
879- let dK = aG
880- fromBase58String(dK)
876+ let dI = aE
877+ fromBase58String(dI)
881878 }
882- else if ($isInstanceOf(aG, "Unit"))
879+ else if ($isInstanceOf(aE, "Unit"))
883880 then unit
884881 else throw("Match error")
885882 }
886883
887884
888-let gm = throw("Permission denied")
885+let gk = throw("Permission denied")
889886
890-func gn (dX) = {
891- let aG = gk()
892- if ($isInstanceOf(aG, "ByteVector"))
887+func gl (dV) = {
888+ let aE = gi()
889+ if ($isInstanceOf(aE, "ByteVector"))
893890 then {
894- let go = aG
895- (dX.callerPublicKey == go)
891+ let gm = aE
892+ (dV.callerPublicKey == gm)
896893 }
897- else if ($isInstanceOf(aG, "Unit"))
898- then (dX.caller == this)
894+ else if ($isInstanceOf(aE, "Unit"))
895+ then (dV.caller == this)
899896 else throw("Match error")
900897 }
901898
902899
903-func gp (dX) = {
904- let aG = gk()
905- if ($isInstanceOf(aG, "ByteVector"))
900+func gn (dV) = {
901+ let aE = gi()
902+ if ($isInstanceOf(aE, "ByteVector"))
906903 then {
907- let go = aG
908- if ((dX.callerPublicKey == go))
904+ let gm = aE
905+ if ((dV.callerPublicKey == gm))
909906 then true
910- else gm
907+ else gk
911908 }
912- else if ($isInstanceOf(aG, "Unit"))
913- then if ((dX.caller == this))
909+ else if ($isInstanceOf(aE, "Unit"))
910+ then if ((dV.caller == this))
914911 then true
915- else gm
912+ else gk
916913 else throw("Match error")
917914 }
918915
919916
920-@Callable(dX)
921-func constructor (V) = {
922- let ex = gp(dX)
923- if ((ex == ex))
924- then [StringEntry(V(), V)]
917+@Callable(dV)
918+func constructor (T) = {
919+ let ev = gn(dV)
920+ if ((ev == ev))
921+ then [StringEntry(T(), T)]
925922 else throw("Strict value is not equal to itself.")
926923 }
927924
928925
929926
930-@Callable(dX)
931-func setManager (gq) = {
932- let ex = gp(dX)
933- if ((ex == ex))
927+@Callable(dV)
928+func setManager (go) = {
929+ let ev = gn(dV)
930+ if ((ev == ev))
934931 then {
935- let gr = fromBase58String(gq)
936- if ((gr == gr))
937- then [StringEntry(X(), gq)]
932+ let gp = fromBase58String(go)
933+ if ((gp == gp))
934+ then [StringEntry(V(), go)]
938935 else throw("Strict value is not equal to itself.")
939936 }
940937 else throw("Strict value is not equal to itself.")
941938 }
942939
943940
944941
945-@Callable(dX)
942+@Callable(dV)
946943 func confirmManager () = {
947- let co = gl()
948- let gs = if (isDefined(co))
944+ let cm = gj()
945+ let gq = if (isDefined(cm))
949946 then true
950947 else throw("No pending manager")
951- if ((gs == gs))
948+ if ((gq == gq))
952949 then {
953- let gt = if ((dX.callerPublicKey == value(co)))
950+ let gr = if ((dV.callerPublicKey == value(cm)))
954951 then true
955952 else throw("You are not pending manager")
956- if ((gt == gt))
957- then [StringEntry(W(), toBase58String(value(co))), DeleteEntry(X())]
953+ if ((gr == gr))
954+ then [StringEntry(U(), toBase58String(value(cm))), DeleteEntry(V())]
958955 else throw("Strict value is not equal to itself.")
959956 }
960957 else throw("Strict value is not equal to itself.")
961958 }
962959
963960
964961
965-@Callable(dX)
966-func put (gu,gv) = {
967- let gw = bm()
968- let gx = valueOrErrorMessage(addressFromString(gw[C]), "Wr st addr")
969- let gy = valueOrErrorMessage(addressFromString(gw[E]), "Wr sl addr")
970- if ((0 > gu))
962+@Callable(dV)
963+func put (gs,gt) = {
964+ let gu = bk()
965+ let gv = valueOrErrorMessage(addressFromString(gu[C]), "Wr st addr")
966+ let gw = valueOrErrorMessage(addressFromString(gu[E]), "Wr sl addr")
967+ if ((0 > gs))
971968 then throw("Wrong slippage")
972- else if ((size(dX.payments) != 2))
969+ else if ((size(dV.payments) != 2))
973970 then throw("2 pmnts expd")
974971 else {
975- let gz = toBigInt(value(dX.payments[0]).amount)
976- let gA = toBigInt(value(dX.payments[1]).amount)
977- let eQ = eJ(gz, gA, toBigInt(0))
978- if ((eQ == eQ))
972+ let gx = toBigInt(value(dV.payments[0]).amount)
973+ let gy = toBigInt(value(dV.payments[1]).amount)
974+ let eO = eH(gx, gy, toBigInt(0))
975+ if ((eO == eO))
979976 then {
980- let gB = fj(toString(dX.caller), toBase58String(dX.transactionId), AttachedPayment(value(dX.payments[0]).assetId, value(dX.payments[0]).amount), dX.payments[1], gu, true, false, true, 0, "")
981- let dz = gB._2
982- let gC = gB._7
983- let cQ = gB._9
984- let dA = gB._10
985- let dB = gB._11
986- let cy = gB._12
987- let cz = gB._13
988- let dm = invoke(aP, "emit", [dz], nil)
989- if ((dm == dm))
977+ let gz = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gs, true, false, true, 0, "")
978+ let dx = gz._2
979+ let gA = gz._7
980+ let cO = gz._9
981+ let dy = gz._10
982+ let dz = gz._11
983+ let cw = gz._12
984+ let cx = gz._13
985+ let dk = invoke(aN, "emit", [dx], nil)
986+ if ((dk == dk))
990987 then {
991- let gD = {
992- let aG = dm
993- if ($isInstanceOf(aG, "Address"))
988+ let gB = {
989+ let aE = dk
990+ if ($isInstanceOf(aE, "Address"))
994991 then {
995- let gE = aG
996- invoke(gE, "emit", [dz], nil)
992+ let gC = aE
993+ invoke(gC, "emit", [dx], nil)
997994 }
998995 else unit
999996 }
1000- if ((gD == gD))
997+ if ((gB == gB))
1001998 then {
1002- let gF = if ((dA > 0))
1003- then invoke(gy, "put", nil, [AttachedPayment(cy, dA)])
999+ let gD = if ((dy > 0))
1000+ then invoke(gw, "put", nil, [AttachedPayment(cw, dy)])
10041001 else nil
1005- if ((gF == gF))
1002+ if ((gD == gD))
10061003 then {
1007- let gG = if ((dB > 0))
1008- then invoke(gy, "put", nil, [AttachedPayment(cz, dB)])
1004+ let gE = if ((dz > 0))
1005+ then invoke(gw, "put", nil, [AttachedPayment(cx, dz)])
10091006 else nil
1010- if ((gG == gG))
1007+ if ((gE == gE))
10111008 then {
1012- let gH = if (gv)
1009+ let gF = if (gt)
10131010 then {
1014- let gI = invoke(gx, "stake", nil, [AttachedPayment(gC, dz)])
1015- if ((gI == gI))
1011+ let gG = invoke(gv, "stake", nil, [AttachedPayment(gA, dx)])
1012+ if ((gG == gG))
10161013 then nil
10171014 else throw("Strict value is not equal to itself.")
10181015 }
1019- else [ScriptTransfer(dX.caller, dz, gC)]
1020- let gJ = eR(0, 0, 0)
1021- let gi = gJ._1
1022- let eI = gJ._2
1023- let gj = eV(eQ, eI)
1024- if ((gj == gj))
1025- then ((cQ ++ gH) ++ gi)
1016+ else [ScriptTransfer(dV.caller, dx, gA)]
1017+ let gH = eP(0, 0, 0)
1018+ let gg = gH._1
1019+ let eG = gH._2
1020+ let gh = eT(eO, eG)
1021+ if ((gh == gh))
1022+ then ((cO ++ gF) ++ gg)
10261023 else throw("Strict value is not equal to itself.")
10271024 }
10281025 else throw("Strict value is not equal to itself.")
10291026 }
10301027 else throw("Strict value is not equal to itself.")
10311028 }
10321029 else throw("Strict value is not equal to itself.")
10331030 }
10341031 else throw("Strict value is not equal to itself.")
10351032 }
10361033 else throw("Strict value is not equal to itself.")
10371034 }
10381035 }
10391036
10401037
10411038
1042-@Callable(dX)
1043-func putOneTknV2 (fL,gv) = {
1044- let gK = {
1045- let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1046- if ($isInstanceOf(fT, "Boolean"))
1047- then fT
1048- else throw(($getType(fT) + " couldn't be cast to Boolean"))
1039+@Callable(dV)
1040+func putOneTknV2 (fJ,gt) = {
1041+ let gI = {
1042+ let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1043+ if ($isInstanceOf(fR, "Boolean"))
1044+ then fR
1045+ else throw(($getType(fR) + " couldn't be cast to Boolean"))
10491046 }
1050- let gL = if (if (if (aR())
1047+ let gJ = if (if (if (aP())
10511048 then true
1052- else (bg == q))
1049+ else (be == q))
10531050 then true
1054- else (bg == s))
1051+ else (be == s))
10551052 then true
1056- else gK
1057- let gM = [if (if (!(gL))
1053+ else gI
1054+ let gK = [if (if (!(gJ))
10581055 then true
1059- else gn(dX))
1056+ else gl(dV))
10601057 then true
1061- else aM("put operation is blocked by admin"), if ((size(dX.payments) == 1))
1058+ else aK("put operation is blocked by admin"), if ((size(dV.payments) == 1))
10621059 then true
1063- else aM("exactly 1 payment are expected")]
1064- if ((gM == gM))
1060+ else aK("exactly 1 payment are expected")]
1061+ if ((gK == gK))
10651062 then {
1066- let bc = aU()
1067- let cy = bc[w]
1068- let cz = bc[x]
1069- let cx = fromBase58String(bc[v])
1070- let fP = parseIntValue(bc[y])
1071- let fQ = parseIntValue(bc[z])
1072- let cw = if ((dX.caller == this))
1073- then dX.originCaller
1074- else dX.caller
1075- let fi = value(dX.payments[0])
1076- let cu = toBase58String(value(fi.assetId))
1077- let da = fi.amount
1078- let gN = fn(da, cu, toString(cw), toBase58String(dX.transactionId), true)
1079- if ((gN == gN))
1063+ let ba = aS()
1064+ let cw = ba[w]
1065+ let cx = ba[x]
1066+ let cv = fromBase58String(ba[v])
1067+ let fN = parseIntValue(ba[y])
1068+ let fO = parseIntValue(ba[z])
1069+ let cu = if ((dV.caller == this))
1070+ then dV.originCaller
1071+ else dV.caller
1072+ let fg = value(dV.payments[0])
1073+ let cs = toBase58String(value(fg.assetId))
1074+ let cY = fg.amount
1075+ let gL = fl(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
1076+ if ((gL == gL))
10801077 then {
1081- let cr = gN._3
1082- let cQ = gN._2
1083- let gO = gN._1
1084- let dz = if (if ((fL > 0))
1085- then (fL > gO)
1078+ let cp = gL._3
1079+ let cO = gL._2
1080+ let gM = gL._1
1081+ let dx = if (if ((fJ > 0))
1082+ then (fJ > gM)
10861083 else false)
1087- then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
1088- else gO
1089- let gB = invoke(aP, "emit", [dz], nil)
1090- if ((gB == gB))
1084+ then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
1085+ else gM
1086+ let gz = invoke(aN, "emit", [dx], nil)
1087+ if ((gz == gz))
10911088 then {
1092- let gD = {
1093- let aG = gB
1094- if ($isInstanceOf(aG, "Address"))
1089+ let gB = {
1090+ let aE = gz
1091+ if ($isInstanceOf(aE, "Address"))
10951092 then {
1096- let gE = aG
1097- invoke(gE, "emit", [dz], nil)
1093+ let gC = aE
1094+ invoke(gC, "emit", [dx], nil)
10981095 }
10991096 else unit
11001097 }
1101- if ((gD == gD))
1098+ if ((gB == gB))
11021099 then {
1103- let gH = if (gv)
1100+ let gF = if (gt)
11041101 then {
1105- let gI = invoke(bo, "stake", nil, [AttachedPayment(cx, dz)])
1106- if ((gI == gI))
1102+ let gG = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
1103+ if ((gG == gG))
11071104 then nil
11081105 else throw("Strict value is not equal to itself.")
11091106 }
1110- else [ScriptTransfer(dX.caller, dz, cx)]
1111- let gc = if ((cr > 0))
1112- then [ScriptTransfer(aT, cr, fromBase58String(cu))]
1107+ else [ScriptTransfer(dV.caller, dx, cv)]
1108+ let ga = if ((cp > 0))
1109+ then [ScriptTransfer(aR, cp, fromBase58String(cs))]
11131110 else nil
1114- let gP = if ((this == aT))
1111+ let gN = if ((this == aR))
11151112 then $Tuple2(0, 0)
11161113 else {
1117- let gQ = if ((fi.assetId == bi))
1114+ let gO = if ((fg.assetId == bg))
11181115 then true
11191116 else false
1120- if (gQ)
1121- then $Tuple2(-(cr), 0)
1122- else $Tuple2(0, -(cr))
1117+ if (gO)
1118+ then $Tuple2(-(cp), 0)
1119+ else $Tuple2(0, -(cp))
11231120 }
1124- let eS = gP._1
1125- let eT = gP._2
1126- let gR = eR(eS, eT, 0)
1127- let gi = gR._1
1128- let eI = gR._2
1129- $Tuple2((((cQ ++ gH) ++ gc) ++ gi), dz)
1121+ let eQ = gN._1
1122+ let eR = gN._2
1123+ let gP = eP(eQ, eR, 0)
1124+ let gg = gP._1
1125+ let eG = gP._2
1126+ $Tuple2((((cO ++ gF) ++ ga) ++ gg), dx)
11301127 }
11311128 else throw("Strict value is not equal to itself.")
11321129 }
11331130 else throw("Strict value is not equal to itself.")
11341131 }
11351132 else throw("Strict value is not equal to itself.")
11361133 }
11371134 else throw("Strict value is not equal to itself.")
11381135 }
11391136
11401137
11411138
1142-@Callable(dX)
1143-func putForFree (gS) = if ((0 > gS))
1139+@Callable(dV)
1140+func putForFree (gQ) = if ((0 > gQ))
11441141 then throw("Wrong slpg")
1145- else if ((size(dX.payments) != 2))
1142+ else if ((size(dV.payments) != 2))
11461143 then throw("2 pmnts expd")
11471144 else {
1148- let gT = fj(toString(dX.caller), toBase58String(dX.transactionId), AttachedPayment(value(dX.payments[0]).assetId, value(dX.payments[0]).amount), dX.payments[1], gS, false, false, true, 0, "")
1149- let cQ = gT._9
1150- let gz = toBigInt(value(dX.payments[0]).amount)
1151- let gA = toBigInt(value(dX.payments[1]).amount)
1152- let eQ = eJ(gz, gA, toBigInt(0))
1153- if ((eQ == eQ))
1145+ let gR = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gQ, false, false, true, 0, "")
1146+ let cO = gR._9
1147+ let gx = toBigInt(value(dV.payments[0]).amount)
1148+ let gy = toBigInt(value(dV.payments[1]).amount)
1149+ let eO = eH(gx, gy, toBigInt(0))
1150+ if ((eO == eO))
11541151 then {
1155- let gU = eR(0, 0, 0)
1156- let gi = gU._1
1157- let eI = gU._2
1158- let gj = eV(eQ, eI)
1159- if ((gj == gj))
1160- then (cQ ++ gi)
1152+ let gS = eP(0, 0, 0)
1153+ let gg = gS._1
1154+ let eG = gS._2
1155+ let gh = eT(eO, eG)
1156+ if ((gh == gh))
1157+ then (cO ++ gg)
11611158 else throw("Strict value is not equal to itself.")
11621159 }
11631160 else throw("Strict value is not equal to itself.")
11641161 }
11651162
11661163
11671164
1168-@Callable(dX)
1165+@Callable(dV)
11691166 func get () = {
1170- let dm = fh(dX)
1171- let gV = dm._1
1172- let cP = dm._2
1173- let da = dm._3
1174- let cu = dm._4
1175- let cQ = dm._5
1176- let ey = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1177- if ((ey == ey))
1167+ let dk = ff(dV)
1168+ let gT = dk._1
1169+ let cN = dk._2
1170+ let cY = dk._3
1171+ let cs = dk._4
1172+ let cO = dk._5
1173+ let ew = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1174+ if ((ew == ew))
11781175 then {
1179- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(da))
1180- let gW = eR(-(gV), -(cP), 0)
1181- let gi = gW._1
1182- let eI = gW._2
1183- let gj = eV(eQ, eI)
1184- if ((gj == gj))
1185- then (cQ ++ gi)
1176+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1177+ let gU = eP(-(gT), -(cN), 0)
1178+ let gg = gU._1
1179+ let eG = gU._2
1180+ let gh = eT(eO, eG)
1181+ if ((gh == gh))
1182+ then (cO ++ gg)
11861183 else throw("Strict value is not equal to itself.")
11871184 }
11881185 else throw("Strict value is not equal to itself.")
11891186 }
11901187
11911188
11921189
1193-@Callable(dX)
1194-func getOneTknV2 (fK,fL) = {
1195- let gK = {
1196- let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1197- if ($isInstanceOf(fT, "Boolean"))
1198- then fT
1199- else throw(($getType(fT) + " couldn't be cast to Boolean"))
1190+@Callable(dV)
1191+func getOneTknV2 (fI,fJ) = {
1192+ let gI = {
1193+ let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1194+ if ($isInstanceOf(fR, "Boolean"))
1195+ then fR
1196+ else throw(($getType(fR) + " couldn't be cast to Boolean"))
12001197 }
1201- let gX = if (if (aR())
1198+ let gV = if (if (aP())
12021199 then true
1203- else (bg == s))
1200+ else (be == s))
12041201 then true
1205- else gK
1206- let gM = [if (if (!(gX))
1202+ else gI
1203+ let gK = [if (if (!(gV))
12071204 then true
1208- else gn(dX))
1205+ else gl(dV))
12091206 then true
1210- else aM("get operation is blocked by admin"), if ((size(dX.payments) == 1))
1207+ else aK("get operation is blocked by admin"), if ((size(dV.payments) == 1))
12111208 then true
1212- else aM("exactly 1 payment are expected")]
1213- if ((gM == gM))
1209+ else aK("exactly 1 payment are expected")]
1210+ if ((gK == gK))
12141211 then {
1215- let gY = fJ(fK, fL, dX.payments, dX.caller, dX.originCaller, dX.transactionId)
1216- let cQ = gY._1
1217- let fV = gY._2
1218- $Tuple2(cQ, fV)
1212+ let gW = fH(fI, fJ, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1213+ let cO = gW._1
1214+ let fT = gW._2
1215+ $Tuple2(cO, fT)
12191216 }
12201217 else throw("Strict value is not equal to itself.")
12211218 }
12221219
12231220
12241221
1225-@Callable(dX)
1222+@Callable(dV)
12261223 func refreshDLp () = {
1227- let gZ = valueOrElse(getInteger(an), 0)
1228- let ha = if (((height - gZ) >= aq))
1224+ let gX = valueOrElse(getInteger(al), 0)
1225+ let gY = if (((height - gX) >= ao))
12291226 then unit
1230- else aM(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
1231- if ((ha == ha))
1227+ else aK(makeString([toString(ao), " blocks have not passed since the previous call"], ""))
1228+ if ((gY == gY))
12321229 then {
1233- let fc = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aO("invalid dLp"))
1234- let hb = eR(0, 0, 0)
1235- let hc = hb._1
1236- let eI = hb._2
1237- let eU = if ((fc != eI))
1238- then hc
1239- else aM("nothing to refresh")
1240- $Tuple2(eU, toString(eI))
1230+ let fa = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
1231+ let gZ = eP(0, 0, 0)
1232+ let ha = gZ._1
1233+ let eG = gZ._2
1234+ let eS = if ((fa != eG))
1235+ then ha
1236+ else aK("nothing to refresh")
1237+ $Tuple2(eS, toString(eG))
12411238 }
12421239 else throw("Strict value is not equal to itself.")
12431240 }
12441241
12451242
12461243
1247-@Callable(dX)
1248-func getOneTknV2READONLY (fK,hd) = {
1249- let bc = aU()
1250- let cy = bc[w]
1251- let cz = bc[x]
1252- let cx = bc[v]
1253- let dH = [toBigInt(bH(cy)), toBigInt(bH(cz))]
1254- let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cx)), "invalid lp asset").quantity)
1255- let bU = dG(dH)
1256- let bT = (bU - fraction(toBigInt(hd), bU, eH))
1257- let he = if ((fK == cy))
1244+@Callable(dV)
1245+func getOneTknV2READONLY (fI,hb) = {
1246+ let ba = aS()
1247+ let cw = ba[w]
1248+ let cx = ba[x]
1249+ let cv = ba[v]
1250+ let dF = [toBigInt(bF(cw)), toBigInt(bF(cx))]
1251+ let eF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
1252+ let bS = dE(dF)
1253+ let bR = (bS - fraction(toBigInt(hb), bS, eF))
1254+ let hc = if ((fI == cw))
12581255 then 0
1259- else if ((fK == cz))
1256+ else if ((fI == cx))
12601257 then 1
12611258 else throw("invalid out asset id")
1262- let hf = eu(dH, he, bT)
1263- let hg = (dH[he] - hf)
1264- let hh = max([0, toInt((hg - f))])
1265- let hi = cp(hh)
1266- let fU = hi._1
1267- let cr = hi._2
1268- $Tuple2(nil, $Tuple2(fU, cr))
1259+ let hd = es(dF, hc, bR)
1260+ let he = (dF[hc] - hd)
1261+ let hf = max([0, toInt((he - f))])
1262+ let hg = cn(hf)
1263+ let fS = hg._1
1264+ let cp = hg._2
1265+ $Tuple2(nil, $Tuple2(fS, cp))
12691266 }
12701267
12711268
12721269
1273-@Callable(dX)
1274-func getOneTknV2WithBonusREADONLY (fK,hd) = {
1275- let bc = aU()
1276- let cy = bc[w]
1277- let cz = bc[x]
1278- let cx = bc[v]
1279- let cE = bH(cy)
1280- let cG = bH(cz)
1281- let hj = {
1282- let fT = invoke(this, "getOneTknV2READONLY", [fK, hd], nil)
1283- if ($isInstanceOf(fT, "(Int, Int)"))
1284- then fT
1285- else throw(($getType(fT) + " couldn't be cast to (Int, Int)"))
1270+@Callable(dV)
1271+func getOneTknV2WithBonusREADONLY (fI,hb) = {
1272+ let ba = aS()
1273+ let cw = ba[w]
1274+ let cx = ba[x]
1275+ let cv = ba[v]
1276+ let cC = bF(cw)
1277+ let cE = bF(cx)
1278+ let hh = {
1279+ let fR = invoke(this, "getOneTknV2READONLY", [fI, hb], nil)
1280+ if ($isInstanceOf(fR, "(Int, Int)"))
1281+ then fR
1282+ else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
12861283 }
1287- let fU = hj._1
1288- let cr = hj._2
1289- let dm = cs("", cx, hd, this)
1290- let cO = dm._1
1291- let cP = dm._2
1292- let hk = (cO + cP)
1293- let fI = if ((hk == 0))
1294- then if ((fU == 0))
1284+ let fS = hh._1
1285+ let cp = hh._2
1286+ let dk = cq("", cv, hb, this)
1287+ let cM = dk._1
1288+ let cN = dk._2
1289+ let hi = (cM + cN)
1290+ let fG = if ((hi == 0))
1291+ then if ((fS == 0))
12951292 then 0
12961293 else throw("bonus calculation error")
1297- else fraction((fU - hk), a, hk)
1298- $Tuple2(nil, $Tuple3(fU, cr, fI))
1294+ else fraction((fS - hi), a, hi)
1295+ $Tuple2(nil, $Tuple3(fS, cp, fG))
12991296 }
13001297
13011298
13021299
1303-@Callable(dX)
1304-func getNoLess (hl,hm) = {
1305- let dm = fh(dX)
1306- let cO = dm._1
1307- let cP = dm._2
1308- let da = dm._3
1309- let cu = dm._4
1310- let cQ = dm._5
1311- if ((hl > cO))
1312- then throw(((("Failed: " + toString(cO)) + " < ") + toString(hl)))
1313- else if ((hm > cP))
1314- then throw(((("Failed: " + toString(cP)) + " < ") + toString(hm)))
1300+@Callable(dV)
1301+func getNoLess (hj,hk) = {
1302+ let dk = ff(dV)
1303+ let cM = dk._1
1304+ let cN = dk._2
1305+ let cY = dk._3
1306+ let cs = dk._4
1307+ let cO = dk._5
1308+ if ((hj > cM))
1309+ then throw(((("Failed: " + toString(cM)) + " < ") + toString(hj)))
1310+ else if ((hk > cN))
1311+ then throw(((("Failed: " + toString(cN)) + " < ") + toString(hk)))
13151312 else {
1316- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(da))
1317- let hn = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1318- if ((hn == hn))
1313+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1314+ let hl = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1315+ if ((hl == hl))
13191316 then {
1320- let ho = eR(-(cO), -(cP), 0)
1321- let gi = ho._1
1322- let eI = ho._2
1323- let gj = eV(eQ, eI)
1324- if ((gj == gj))
1325- then (cQ ++ gi)
1317+ let hm = eP(-(cM), -(cN), 0)
1318+ let gg = hm._1
1319+ let eG = hm._2
1320+ let gh = eT(eO, eG)
1321+ if ((gh == gh))
1322+ then (cO ++ gg)
13261323 else throw("Strict value is not equal to itself.")
13271324 }
13281325 else throw("Strict value is not equal to itself.")
13291326 }
13301327 }
13311328
13321329
13331330
1334-@Callable(dX)
1335-func unstakeAndGet (cq) = {
1336- let hp = if ((size(dX.payments) != 0))
1331+@Callable(dV)
1332+func unstakeAndGet (co) = {
1333+ let hn = if ((size(dV.payments) != 0))
13371334 then throw("No pmnts expd")
13381335 else true
1339- if ((hp == hp))
1336+ if ((hn == hn))
13401337 then {
1341- let cg = aU()
1342- let hq = bm()
1343- let gC = fromBase58String(cg[v])
1344- let hr = valueOrErrorMessage(addressFromString(hq[C]), "Wr st addr")
1345- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1346- let hs = invoke(hr, "unstake", [toBase58String(gC), cq], nil)
1347- if ((hs == hs))
1338+ let ce = aS()
1339+ let ho = bk()
1340+ let gA = fromBase58String(ce[v])
1341+ let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1342+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1343+ let hq = invoke(hp, "unstake", [toBase58String(gA), co], nil)
1344+ if ((hq == hq))
13481345 then {
1349- let dm = cs(toBase58String(dX.transactionId), toBase58String(gC), cq, dX.caller)
1350- let cO = dm._1
1351- let cP = dm._2
1352- let cC = parseIntValue(dm._9)
1353- let cQ = dm._10
1354- let ht = if (if (aR())
1346+ let dk = cq(toBase58String(dV.transactionId), toBase58String(gA), co, dV.caller)
1347+ let cM = dk._1
1348+ let cN = dk._2
1349+ let cA = parseIntValue(dk._9)
1350+ let cO = dk._10
1351+ let hr = if (if (aP())
13551352 then true
1356- else (cC == s))
1357- then throw(("Blocked: " + toString(cC)))
1353+ else (cA == s))
1354+ then throw(("Blocked: " + toString(cA)))
13581355 else true
1359- if ((ht == ht))
1356+ if ((hr == hr))
13601357 then {
1361- let hu = invoke(aP, "burn", [cq], [AttachedPayment(gC, cq)])
1362- if ((hu == hu))
1358+ let hs = invoke(aN, "burn", [co], [AttachedPayment(gA, co)])
1359+ if ((hs == hs))
13631360 then {
1364- let hv = eR(-(cO), -(cP), 0)
1365- let gi = hv._1
1366- let eI = hv._2
1367- let gj = eV(eQ, eI)
1368- if ((gj == gj))
1369- then (cQ ++ gi)
1361+ let ht = eP(-(cM), -(cN), 0)
1362+ let gg = ht._1
1363+ let eG = ht._2
1364+ let gh = eT(eO, eG)
1365+ if ((gh == gh))
1366+ then (cO ++ gg)
13701367 else throw("Strict value is not equal to itself.")
13711368 }
13721369 else throw("Strict value is not equal to itself.")
13731370 }
13741371 else throw("Strict value is not equal to itself.")
13751372 }
13761373 else throw("Strict value is not equal to itself.")
13771374 }
13781375 else throw("Strict value is not equal to itself.")
13791376 }
13801377
13811378
13821379
1383-@Callable(dX)
1384-func unstakeAndGetNoLess (hw,hx,hm) = {
1385- let gX = if (aR())
1380+@Callable(dV)
1381+func unstakeAndGetNoLess (hu,hv,hk) = {
1382+ let gV = if (aP())
13861383 then true
1387- else (bg == s)
1388- let gM = [if (!(gX))
1384+ else (be == s)
1385+ let gK = [if (!(gV))
13891386 then true
1390- else throw("get operation is blocked by admin"), if ((size(dX.payments) == 0))
1387+ else throw("get operation is blocked by admin"), if ((size(dV.payments) == 0))
13911388 then true
13921389 else throw("no payments are expected")]
1393- if ((gM == gM))
1390+ if ((gK == gK))
13941391 then {
1395- let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1396- let hs = invoke(bo, "unstake", [toBase58String(bh), hw], nil)
1397- if ((hs == hs))
1392+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1393+ let hq = invoke(bm, "unstake", [toBase58String(bf), hu], nil)
1394+ if ((hq == hq))
13981395 then {
1399- let hy = cs(toBase58String(dX.transactionId), toBase58String(bh), hw, dX.caller)
1400- let cO = hy._1
1401- let cP = hy._2
1402- let cQ = hy._10
1403- let hz = [if ((cO >= hx))
1396+ let hw = cq(toBase58String(dV.transactionId), toBase58String(bf), hu, dV.caller)
1397+ let cM = hw._1
1398+ let cN = hw._2
1399+ let cO = hw._10
1400+ let hx = [if ((cM >= hv))
14041401 then true
1405- else throw(makeString(["amount asset amount to receive is less than ", toString(hx)], "")), if ((cP >= hm))
1402+ else throw(makeString(["amount asset amount to receive is less than ", toString(hv)], "")), if ((cN >= hk))
14061403 then true
1407- else throw(makeString(["price asset amount to receive is less than ", toString(hm)], ""))]
1408- if ((hz == hz))
1404+ else throw(makeString(["price asset amount to receive is less than ", toString(hk)], ""))]
1405+ if ((hx == hx))
14091406 then {
1410- let hn = invoke(aP, "burn", [hw], [AttachedPayment(bh, hw)])
1411- if ((hn == hn))
1407+ let hl = invoke(aN, "burn", [hu], [AttachedPayment(bf, hu)])
1408+ if ((hl == hl))
14121409 then {
1413- let hA = eR(-(cO), -(cP), 0)
1414- let gi = hA._1
1415- let eI = hA._2
1416- let gj = eV(eQ, eI)
1417- if ((gj == gj))
1418- then (cQ ++ gi)
1410+ let hy = eP(-(cM), -(cN), 0)
1411+ let gg = hy._1
1412+ let eG = hy._2
1413+ let gh = eT(eO, eG)
1414+ if ((gh == gh))
1415+ then (cO ++ gg)
14191416 else throw("Strict value is not equal to itself.")
14201417 }
14211418 else throw("Strict value is not equal to itself.")
14221419 }
14231420 else throw("Strict value is not equal to itself.")
14241421 }
14251422 else throw("Strict value is not equal to itself.")
14261423 }
14271424 else throw("Strict value is not equal to itself.")
14281425 }
14291426
14301427
14311428
1432-@Callable(dX)
1433-func unstakeAndGetOneTknV2 (hw,fK,fL) = {
1434- let gK = {
1435- let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1436- if ($isInstanceOf(fT, "Boolean"))
1437- then fT
1438- else throw(($getType(fT) + " couldn't be cast to Boolean"))
1429+@Callable(dV)
1430+func unstakeAndGetOneTknV2 (hu,fI,fJ) = {
1431+ let gI = {
1432+ let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1433+ if ($isInstanceOf(fR, "Boolean"))
1434+ then fR
1435+ else throw(($getType(fR) + " couldn't be cast to Boolean"))
14391436 }
1440- let gX = if (if (aR())
1437+ let gV = if (if (aP())
14411438 then true
1442- else (bg == s))
1439+ else (be == s))
14431440 then true
1444- else gK
1445- let gM = [if (if (!(gX))
1441+ else gI
1442+ let gK = [if (if (!(gV))
14461443 then true
1447- else gn(dX))
1444+ else gl(dV))
14481445 then true
1449- else aM("get operation is blocked by admin"), if ((size(dX.payments) == 0))
1446+ else aK("get operation is blocked by admin"), if ((size(dV.payments) == 0))
14501447 then true
1451- else aM("no payments are expected")]
1452- if ((gM == gM))
1448+ else aK("no payments are expected")]
1449+ if ((gK == gK))
14531450 then {
1454- let cg = aU()
1455- let hq = bm()
1456- let gC = fromBase58String(cg[v])
1457- let hr = valueOrErrorMessage(addressFromString(hq[C]), "Wr st addr")
1458- let hs = invoke(hr, "unstake", [toBase58String(gC), hw], nil)
1459- if ((hs == hs))
1451+ let ce = aS()
1452+ let ho = bk()
1453+ let gA = fromBase58String(ce[v])
1454+ let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1455+ let hq = invoke(hp, "unstake", [toBase58String(gA), hu], nil)
1456+ if ((hq == hq))
14601457 then {
1461- let hB = fJ(fK, fL, [AttachedPayment(gC, hw)], dX.caller, dX.originCaller, dX.transactionId)
1462- let cQ = hB._1
1463- let fV = hB._2
1464- $Tuple2(cQ, fV)
1458+ let hz = fH(fI, fJ, [AttachedPayment(gA, hu)], dV.caller, dV.originCaller, dV.transactionId)
1459+ let cO = hz._1
1460+ let fT = hz._2
1461+ $Tuple2(cO, fT)
14651462 }
14661463 else throw("Strict value is not equal to itself.")
14671464 }
14681465 else throw("Strict value is not equal to itself.")
14691466 }
14701467
14711468
14721469
1473-@Callable(dX)
1474-func putOneTknV2WithBonusREADONLY (hC,hD) = {
1475- let bc = aU()
1476- let cy = bc[w]
1477- let cz = bc[x]
1478- let cx = bc[v]
1479- let hE = fn(hC, hD, "", "", true)
1480- let fD = hE._1
1481- let cQ = hE._2
1482- let cr = hE._3
1483- let fI = hE._4
1484- $Tuple2(nil, $Tuple3(fD, cr, fI))
1470+@Callable(dV)
1471+func putOneTknV2WithBonusREADONLY (hA,hB) = {
1472+ let ba = aS()
1473+ let cw = ba[w]
1474+ let cx = ba[x]
1475+ let cv = ba[v]
1476+ let hC = fl(hA, hB, "", "", true)
1477+ let fB = hC._1
1478+ let cO = hC._2
1479+ let cp = hC._3
1480+ let fG = hC._4
1481+ $Tuple2(nil, $Tuple3(fB, cp, fG))
14851482 }
14861483
14871484
14881485
1489-@Callable(dX)
1490-func putOneTknV2WithoutTakeFeeREADONLY (hC,hD) = {
1491- let bc = aU()
1492- let cy = bc[w]
1493- let cz = bc[x]
1494- let cx = bc[v]
1495- let hF = fn(hC, hD, "", "", false)
1496- let fD = hF._1
1497- let cQ = hF._2
1498- let cr = hF._3
1499- let fI = hF._4
1500- $Tuple2(nil, $Tuple3(fD, cr, fI))
1486+@Callable(dV)
1487+func putOneTknV2WithoutTakeFeeREADONLY (hA,hB) = {
1488+ let ba = aS()
1489+ let cw = ba[w]
1490+ let cx = ba[x]
1491+ let cv = ba[v]
1492+ let hD = fl(hA, hB, "", "", false)
1493+ let fB = hD._1
1494+ let cO = hD._2
1495+ let cp = hD._3
1496+ let fG = hD._4
1497+ $Tuple2(nil, $Tuple3(fB, cp, fG))
15011498 }
15021499
15031500
15041501
1505-@Callable(dX)
1506-func activate (hG,hH) = if ((toString(dX.caller) != toString(aP)))
1502+@Callable(dV)
1503+func activate (hE,hF) = if ((toString(dV.caller) != toString(aN)))
15071504 then throw("denied")
1508- else $Tuple2([StringEntry(ag(), hG), StringEntry(ah(), hH)], "success")
1505+ else $Tuple2([StringEntry(ae(), hE), StringEntry(af(), hF)], "success")
15091506
15101507
15111508
1512-@Callable(dX)
1513-func setS (hI,ht) = if ((toString(dX.caller) != aI(this, aj())))
1514- then gm
1515- else [StringEntry(hI, ht)]
1509+@Callable(dV)
1510+func setS (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1511+ then gk
1512+ else [StringEntry(hG, hr)]
15161513
15171514
15181515
1519-@Callable(dX)
1520-func setI (hI,ht) = if ((toString(dX.caller) != aI(this, aj())))
1521- then gm
1522- else [IntegerEntry(hI, ht)]
1516+@Callable(dV)
1517+func setI (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1518+ then gk
1519+ else [IntegerEntry(hG, hr)]
15231520
15241521
15251522
1526-@Callable(dX)
1527-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
1523+@Callable(dV)
1524+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aS())
15281525
15291526
15301527
1531-@Callable(dX)
1532-func getAccBalanceWrapperREADONLY (bI) = $Tuple2(nil, bH(bI))
1528+@Callable(dV)
1529+func getAccBalanceWrapperREADONLY (bG) = $Tuple2(nil, bF(bG))
15331530
15341531
15351532
1536-@Callable(dX)
1537-func calcPricesWrapperREADONLY (ca,cb,cf) = {
1538- let hJ = ce(ca, cb, cf)
1539- $Tuple2(nil, [toString(hJ[0]), toString(hJ[1]), toString(hJ[2])])
1533+@Callable(dV)
1534+func calcPricesWrapperREADONLY (bY,bZ,cd) = {
1535+ let hH = cc(bY, bZ, cd)
1536+ $Tuple2(nil, [toString(hH[0]), toString(hH[1]), toString(hH[2])])
15401537 }
15411538
15421539
15431540
1544-@Callable(dX)
1545-func fromX18WrapperREADONLY (L,hK) = $Tuple2(nil, K(parseBigIntValue(L), hK))
1541+@Callable(dV)
1542+func fromX18WrapperREADONLY (L,hI) = $Tuple2(nil, K(parseBigIntValue(L), hI))
15461543
15471544
15481545
1549-@Callable(dX)
1546+@Callable(dV)
15501547 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
15511548
15521549
15531550
1554-@Callable(dX)
1555-func calcPriceBigIntWrapperREADONLY (bK,bL) = $Tuple2(nil, toString(bJ(parseBigIntValue(bK), parseBigIntValue(bL))))
1551+@Callable(dV)
1552+func calcPriceBigIntWrapperREADONLY (bI,bJ) = $Tuple2(nil, toString(bH(parseBigIntValue(bI), parseBigIntValue(bJ))))
15561553
15571554
15581555
1559-@Callable(dX)
1560-func estimatePutOperationWrapperREADONLY (ct,bP,cS,cT,cU,cV,hL,cW,cX) = $Tuple2(nil, cR(ct, bP, cS, cT, cU, cV, hL, cW, cX, true, false, 0, ""))
1556+@Callable(dV)
1557+func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hJ,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hJ, cU, cV, true, false, 0, ""))
15611558
15621559
15631560
1564-@Callable(dX)
1565-func estimateGetOperationWrapperREADONLY (ct,hM,cv,hL) = {
1566- let dm = cs(ct, hM, cv, addressFromStringValue(hL))
1567- $Tuple2(nil, $Tuple10(dm._1, dm._2, dm._3, dm._4, dm._5, dm._6, dm._7, toString(dm._8), dm._9, dm._10))
1561+@Callable(dV)
1562+func estimateGetOperationWrapperREADONLY (cr,hK,ct,hJ) = {
1563+ let dk = cq(cr, hK, ct, addressFromStringValue(hJ))
1564+ $Tuple2(nil, $Tuple10(dk._1, dk._2, dk._3, dk._4, dk._5, dk._6, dk._7, toString(dk._8), dk._9, dk._10))
15681565 }
15691566
15701567
15711568
1572-@Callable(dX)
1573-func getFeeREADONLY () = $Tuple2(nil, al)
1569+@Callable(dV)
1570+func getFeeREADONLY () = $Tuple2(nil, aj)
15741571
15751572
1576-@Verifier(hN)
1577-func hO () = {
1578- let hP = {
1579- let aG = gk()
1580- if ($isInstanceOf(aG, "ByteVector"))
1573+@Verifier(hL)
1574+func hM () = {
1575+ let hN = {
1576+ let aE = gi()
1577+ if ($isInstanceOf(aE, "ByteVector"))
15811578 then {
1582- let go = aG
1583- go
1579+ let gm = aE
1580+ gm
15841581 }
1585- else if ($isInstanceOf(aG, "Unit"))
1586- then hN.senderPublicKey
1582+ else if ($isInstanceOf(aE, "Unit"))
1583+ then hL.senderPublicKey
15871584 else throw("Match error")
15881585 }
1589- let aG = hN
1590- if ($isInstanceOf(aG, "Order"))
1586+ let aE = hL
1587+ if ($isInstanceOf(aE, "Order"))
15911588 then {
1592- let eY = aG
1593- let hQ = aS()
1594- let hR = eX(eY)
1595- let hS = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
1596- let hT = sigVerify(eY.bodyBytes, eY.proofs[1], hQ)
1597- if (if (if (hR)
1598- then hS
1589+ let eW = aE
1590+ let hO = aQ()
1591+ let hP = eV(eW)
1592+ let hQ = sigVerify(eW.bodyBytes, eW.proofs[0], eW.senderPublicKey)
1593+ let hR = sigVerify(eW.bodyBytes, eW.proofs[1], hO)
1594+ if (if (if (hP)
1595+ then hQ
15991596 else false)
1600- then hT
1597+ then hR
16011598 else false)
16021599 then true
1603- else aB(hR, hS, hT)
1600+ else az(hP, hQ, hR)
16041601 }
1605- else if ($isInstanceOf(aG, "SetScriptTransaction"))
1602+ else if ($isInstanceOf(aE, "SetScriptTransaction"))
16061603 then {
1607- let dK = aG
1608- let hU = blake2b256(value(dK.script))
1609- let hV = fromBase64String(value(getString(aP, az())))
1610- let hW = scriptHash(this)
1611- if (if ((hV == hU))
1612- then (hW != hU)
1604+ let dI = aE
1605+ let hS = blake2b256(value(dI.script))
1606+ let hT = fromBase64String(value(getString(aN, ax())))
1607+ let hU = scriptHash(this)
1608+ if (if ((hT == hS))
1609+ then (hU != hS)
16131610 else false)
16141611 then true
1615- else sigVerify(hN.bodyBytes, hN.proofs[0], hP)
1612+ else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
16161613 }
1617- else sigVerify(hN.bodyBytes, hN.proofs[0], hP)
1614+ else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
16181615 }
16191616

github/deemru/w8io/169f3d6 
621.45 ms