tx · 5YqmQs9LJgvf7CqAUrmjmKwzHDu7sfBp3M44qepzouva

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03700000 Waves

2022.12.16 18:16 [2363028] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "5YqmQs9LJgvf7CqAUrmjmKwzHDu7sfBp3M44qepzouva", "fee": 3700000, "feeAssetId": null, "timestamp": 1671203838850, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "5ePfkGLVo8kQKGda1zh7gQoJL43jyx97xAJyCn4tAh6kq8BXpTFWCaasXqSoGcysTTSSMxWAgz5Ckh8td6psJp9v" ], "script": "base64:BgL/KAgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgRiaWczIgRiaWc0IgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgZrZXlETHAiFWtleURMcFJlZnJlc2hlZEhlaWdodCISa2V5RExwUmVmcmVzaERlbGF5IhZkTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9kTHBSZWZyZXNoRGVsYXkiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzQwNjc1OTIiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTgxMTIxODQ1NyIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiBGdldEQiAnhwIgN4cDAiA3hwMSIBcyIBYSIDYW5uIgt4cDBfeHAxX25fbiIFYW5uX3MiBWFubl8xIgljYWxjRE5leHQiAWQiAmRkIgNkZGQiAmRwIgRjYWxjIgNhY2MiAWkiBWROZXh0IghkRGlmZlJhdyIFZERpZmYiA2FyciINJHQwMjAzODUyMDQzMyICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiBWZvdW5kIgdnZXRET2xkIgFuIgphUHJlY2lzaW9uIhBhbm5fc19hUHJlY2lzaW9uIg5hbm5fYVByZWNpc2lvbiICbjEiA2N1ciINJHQwMjEwNjIyMTA4MiINJHQwMjE1MDMyMTU1MCIFZ2V0WUQiAUQiAXgiAWMiAWIiDSR0MDIyMDUwMjIwNzAiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjIzNzcyMjQyNCIHY2FsY0RMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIgpscEVtaXNzaW9uIgp1cGRhdGVkRExwIg5jYWxjQ3VycmVudERMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50RExwIhJyZWZyZXNoRExwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRETHAiBm9sZERMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI0MzYzMjQ1NzUiA2RMcCINJHQwMjQ5MDUyNTAwNSINdW51c2VkQWN0aW9ucyIGZExwTmV3Igxpc09yZGVyVmFsaWQiAmNnIgNwbXQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyILd2l0aFRha2VGZWUiDWNoZWNoRW1pc3Npb24iDSR0MDI3MzIyMjc3ODQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyNzc5MDI3OTY2IgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI3OTcwMjgyMDkiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciBmNoZWNrRCIIbHBBbW91bnQiDnBvb2xQcm9wb3J0aW9uIg9hbW91bnRBc3NldFBhcnQiDnByaWNlQXNzZXRQYXJ0IglscEFtdEJvdGgiBWJvbnVzIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDMwMjc0MzAzODUiAUAiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMzA1NzUzMDg4MiIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIg0kdDAzMTY2NzMyMDE3IhBmZWVBbW91bnRGb3JDYWxjIhBvdXRJbkFtb3VudEFzc2V0Ig0kdDAzMjAyMDMyMTI4IhFyZWZyZXNoRExwQWN0aW9ucyIRaXNVcGRhdGVkRExwVmFsaWQiAW0iAnBtIgJwZCIJaXNNYW5hZ2VyIgJwayICbW0iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgJjbSIDaHBtIgNjcG0iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgphbUFzc2V0UG10IgpwckFzc2V0UG10IgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIg0kdDAzNjI3NzM2NTE2IhRscEFzc2V0RW1pc3Npb25BZnRlciIFZXJyb3IiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIgZjaGVja3MiDSR0MDM4MzEwMzg0NjgiB2VzdGltTFAiDSR0MDM5MjgzMzk2MzIiFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAzOTYzNTM5NzQzIgdtYXhTbHBnIgZlc3RQdXQiDSR0MDQwNzczNDA4MzgiCW91dEFtdEFtdCINJHQwNDE2MjU0MTcwNyINaXNHZXREaXNhYmxlZCINJHQwNDIzMjU0MjQ4MCIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNDMwMDQ0MzA2OCIQZExwVXBkYXRlQWN0aW9ucyINbHBBc3NldEFtb3VudCIFaW5kZXgiBG5ld1kiAmR5Igt0b3RhbEdldFJhdyINJHQwNDM5Njg0NDAxNyINJHQwNDQzNjI0NDQ3NyIOc3VtT2ZHZXRBc3NldHMiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA0NTY0NTQ1NzI2Ig1jaGVja1BheW1lbnRzIgpmYWN0b3J5Q2ZnIgdzdGFraW5nIgp1bnN0YWtlSW52IgF2IgVidXJuQSINJHQwNDY3ODk0Njg3MCINdW5zdGFrZUFtb3VudCIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgNyZXMiDGNoZWNrQW1vdW50cyINJHQwNDgxMTg0ODE5OSINJHQwNDkxMzM0OTMyMSIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiDSR0MDQ5NTgwNDk2ODMiDSR0MDQ5OTYyNTAwNjYiCGFtdEFzU3RyIgdwckFzU3RyIgFrIgJwciIMcmVzU2NhbGVNdWx0Igd1c3JBZGRyIgdwbXRBc0lkIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaHsAAWEAgMLXLwABYgkAtgIBAIDC1y8AAWMJALYCAQCAgJC7utat8A0AAWQJALYCAQAAAAFlCQC2AgEAAAABZgkAtgIBAAEAAWcJALYCAQACAAFoCQC2AgEAAwABaQkAtgIBAAQAAWoJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFrAgVXQVZFUwABbAIDMTAwAAFtAgExAAFuAgJfXwABbwIAAAFwAAEAAXEAAgABcgADAAFzAAQAAXQAAQABdQACAAF2AAMAAXcABAABeAAFAAF5AAYAAXoABwABQQAIAAFCAAkAAUMAAQABRAAGAAFFAAcAAUYACgABRwkAawMACgUBYQCQTgEBSAIBSQFKCQC8AgMJALYCAQUBSQUBYwkAtgIBBQFKAQFLAgFMAU0JAKADAQkAvAIDBQFMCQC2AgEFAU0FAWMBAU4DAUwBTQFPCQCgAwEJAL0CBAUBTAkAtgIBBQFNBQFjBQFPAQFQAwFRAVIBUwkAawMFAVEFAVIFAVMBAVQBAUwDCQC/AgIFAWQFAUwJAL4CAQUBTAUBTAEBVQEBTAMJAL8CAgUBZAUBTAkAvgIBBQFMBQFMAQFWAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBVwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFYAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFZAAIRJXMlc19fcHJpY2VfX2xhc3QBAVoCAmFhAmFiCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUCYWEJAMwIAgkApAMBBQJhYgUDbmlsBQFuAQJhYwICYWQCYWUJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQJhZAICX18FAmFlAQJhZgICYWQCYWUJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJhZAICX18FAmFlAQJhZwACDyVzX19hbW91bnRBc3NldAECYWgAAg4lc19fcHJpY2VBc3NldAECYWkAAgclc19fYW1wAQJhagACDSVzX19hZGRvbkFkZHIAAmFrAgclc19fZmVlAAJhbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhawUBRwACYW0JALkJAgkAzAgCAgIlcwkAzAgCAgNkTHAFA25pbAUBbgACYW4JALkJAgkAzAgCAgIlcwkAzAgCAhJkTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBbgACYW8JALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoRExwRGVsYXkFA25pbAUBbgACYXAAAQACYXEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYW8FAmFwAQJhcgACESVzX19mYWN0b3J5Q29uZmlnAQJhcwACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXQCAmF1AmF2CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhdQICX18FAmF2AghfX2NvbmZpZwECYXcBAmF4CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF4AQJheQACDCVzX19zaHV0ZG93bgECYXoAAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYUEAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUIDAmFDAmFEAmFFCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFAmFDAgsgc25kclZhbGlkPQkApQMBBQJhRAIMIG10Y2hyVmFsaWQ9CQClAwEFAmFFAQJhRgEBTAQCYUcFAUwDCQABAgUCYUcCBlN0cmluZwQCYUgFAmFHBQJhSAkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBAmFJAgJhSgJhSwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFKBQJhSwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhSgkAzAgCAgEuCQDMCAIFAmFLCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFMAgJhSgJhSwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFKBQJhSwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhSgkAzAgCAgEuCQDMCAIFAmFLCQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFNAQJhTgkAAgEJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYU4FA25pbAIBIAECYU8BAmFOCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmFOBQNuaWwCASAAAmFQCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUkCBQR0aGlzCQEBVgAAAmFRCQECYUkCBQR0aGlzCQECYWkAAQJhUgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYVAJAQJheQAHAQJhUwAJANkEAQkBAmFJAgUCYVAJAQJhcwAAAmFUCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUkCBQJhUAkBAmFBAAECYVUABAJhVgkBAmFJAgUEdGhpcwkBAmFnAAQCYVcJAQJhSQIFBHRoaXMJAQJhaAAEAmFYCQECYUwCBQJhUAkBAmF3AQUCYVcEAmF1CQECYUwCBQJhUAkBAmF3AQUCYVYJALUJAgkBAmFJAgUCYVAJAQJhdAIJAKQDAQUCYXUJAKQDAQUCYVgFAW4BAmFZAQJhWgMJAAACBQJhWgUBawUEdW5pdAkA2QQBBQJhWgECYmEBAmFaAwkAAAIFAmFaBQR1bml0BQFrCQDYBAEJAQV2YWx1ZQEFAmFaAQJiYgECYmMJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJiYwUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF1CQDZBAEJAJEDAgUCYmMFAXYJAQJhWQEJAJEDAgUCYmMFAXcJAQJhWQEJAJEDAgUCYmMFAXgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBeQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF6AAJiZAkBAmJiAQkBAmFVAAACYmUFAmJkAAJiZggFAmJlAl8xAAJiZwgFAmJlAl8yAAJiaAgFAmJlAl8zAAJiaQgFAmJlAl80AAJiaggFAmJlAl81AAJiawgFAmJlAl82AAJibAgFAmJlAl83AQJibQAJALUJAgkBAmFJAgUCYVAJAQJhcgAFAW4AAmJuCQECYm0AAAJibwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYm4FAUMCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJicAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYm4FAUUCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJicQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYm4FAUYCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibgUBRAIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYnMKAmJ0AmJ1AmJ2AmJ3AmJ4AmJ5AmJ6AmJBAmJCAmJDCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkJAMwIAgkApAMBBQJiegkAzAgCCQCkAwEFAmJBCQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwUDbmlsBQFuAQJiRAYCYkUCYkYCYkcCYncCYnoCYkEJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiRQkAzAgCCQCkAwEFAmJGCQDMCAIJAKQDAQUCYkcJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ6CQDMCAIJAKQDAQUCYkEFA25pbAUBbgECYkgBAmJJAwkAAAIFAmJJAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiSQECYkoCAmJLAmJMCQC8AgMFAmJLBQFjBQJiTAECYk0DAmJOAmJPAmJQBAJiUQkAvAIDCQC4AgIFAmJOBQJiTwUBYgUCYk8EAmJSCQC/AgIJALgCAgUCYlAJAQFUAQUCYlEFAWQDCQEBIQEFAmJSCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmJRCQCUCgIFAmJSCQCZAwEJAMwIAgUCYk4JAMwIAgUCYk8FA25pbAECYlMDAmJUAmJVAmJWBAJiUQkAvAIDBQJiVQUBYgUCYlQEAmJXCQC/AgIFAmJWBQJiUQMDBQJiVwYJAL8CAgUCYlUFAmJUCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJiVQIBIAkApgMBBQJiVAIBIAkApgMBBQJiUQIBIAkApgMBBQJiVgUCYlcBAmJYBAJiWQJiWgJjYQJjYgQCY2MJAQFIAgUCY2EFAmJZBAJjZAkBAUgCBQJjYgUCYloJAQJiSgIFAmNkBQJjYwECY2UDAmNhAmNiAmNmBAJjZwkBAmFVAAQCY2gJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjZwUBeQQCY2kJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjZwUBegQCY2oJAQJiWAQFAmNoBQJjaQUCY2EFAmNiBAJiTAkBAUgCBQJjYQUCY2gEAmJLCQEBSAIFAmNiBQJjaQQCY2sJAQFIAgUCY2YFAWEEAmNsCQECYkoCBQJiTAUCY2sEAmNtCQECYkoCBQJiSwUCY2sJAMwIAgUCY2oJAMwIAgUCY2wJAMwIAgUCY20FA25pbAECY24DAmNhAmNiAmNmBAJjbwkBAmNlAwUCY2EFAmNiBQJjZgkAzAgCCQEBSwIJAJEDAgUCY28AAAUBYQkAzAgCCQEBSwIJAJEDAgUCY28AAQUBYQkAzAgCCQEBSwIJAJEDAgUCY28AAgUBYQUDbmlsAQJjcAECY3EEAmNyCQBrAwUCY3EFAmFsBQFhCQCUCgIJAGUCBQJjcQUCY3IFAmNyAQJjcwQCY3QCY3UCY3YCY3cEAmNnCQECYVUABAJjeAkAkQMCBQJjZwUBdgQCY3kJAJEDAgUCY2cFAXcEAmN6CQCRAwIFAmNnBQF4BAJjQQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNnBQF5BAJjQgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNnBQF6BAJjQwkAkQMCBQJjZwUBdQQCY0QICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjeAILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CBQJjeAUCY3UJAAIBAg9Xcm9uZyBwbXQgYXNzZXQEAmNFCQECYkgBBQJjeQQCY0YJAQFIAgUCY0UFAmNBBAJjRwkBAmJIAQUCY3oEAmNICQEBSAIFAmNHBQJjQgQCY0kJAQJiSgIFAmNIBQJjRgQCY0oJAQFLAgUCY0kFAWEEAmNLCQEBSAIFAmN2BQFhBAJjTAkBAUgCBQJjRAUBYQQCY00JALwCAwUCY0YFAmNLBQJjTAQCY04JALwCAwUCY0gFAmNLBQJjTAQCY08JAQFOAwUCY00FAmNBBQVGTE9PUgQCY1AJAQFOAwUCY04FAmNCBQVGTE9PUgQCY1EDCQAAAgUCY3QCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN3BQJjTwMJAAACBQJjeQIFV0FWRVMFBHVuaXQJANkEAQUCY3kJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3cFAmNQAwkAAAIFAmN6AgVXQVZFUwUEdW5pdAkA2QQBBQJjegkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYCCQClCAEFAmN3BQJjdAkBAmJEBgUCY08FAmNQBQJjdgUCY0oFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAAUCY0oJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFaAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0oFA25pbAkAnAoKBQJjTwUCY1AFAmN5BQJjegUCY0UFAmNHBQJjRAUCY0kFAmNDBQJjUQECY1INAmN0AmJQAmNTAmNUAmNVAmNWAmN3AmNXAmNYAmNZAmNaAmRhAmRiBAJjZwkBAmFVAAQCY3gJANkEAQkAkQMCBQJjZwUBdgQCZGMJAJEDAgUCY2cFAXcEAmRkCQCRAwIFAmNnBQF4BAJkZQkAkQMCBQJjZwUBQQQCZGYJAJEDAgUCY2cFAUIEAmRnCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2cFAXkEAmRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2cFAXoEAmNDCQCRAwIFAmNnBQF1BAJkaQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjeAIIV3IgbHAgYXMIcXVhbnRpdHkEAmNFAwUCY1cJAQJiSAEFAmRjAwMFAmNZCQAAAgUCZGIFAmRjBwkAZQIJAQJiSAEFAmRjBQJkYQMFAmNZCQECYkgBBQJkYwkAZQIJAQJiSAEFAmRjBQJjUwQCY0cDBQJjVwkBAmJIAQUCZGQDAwUCY1kJAAACBQJkYgUCZGQHCQBlAgkBAmJIAQUCZGQFAmRhAwUCY1kJAQJiSAEFAmRkCQBlAgkBAmJIAQUCZGQFAmNVBAJkagkBAUgCBQJjUwUCZGcEAmRrCQEBSAIFAmNVBQJkaAQCZGwJAQJiSgIFAmRrBQJkagQCY0YJAQFIAgUCY0UFAmRnBAJjSAkBAUgCBQJjRwUCZGgEAmRtAwkAAAIFAmRpAAAEAmNJBQFkBAJkbgUBZAQCY2sJAHYGCQC5AgIFAmRqBQJkawAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUsCBQJjawUBYQkBAUsCBQJkagUCZGcJAQFLAgUCZGsFAmRoCQECYkoCCQC3AgIFAmNIBQJkawkAtwICBQJjRgUCZGoFAmRuBAJjSQkBAmJKAgUCY0gFAmNGBAJkbwkAvAIDCQEBVAEJALgCAgUCY0kFAmRsBQFjBQJjSQQCZG4JAQFIAgUCYlAFAWEDAwMFAmNaCQECIT0CBQJjSQUBZAcJAL8CAgUCZG8FAmRuBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJkbwIDID4gCQCmAwEFAmRuBAJkcAkBAUgCBQJkaQUBYQQCZHEJALwCAwUCZGoFAmNJBQFjBAJkcgkAvAIDBQJkawUBYwUCY0kEAmRzAwkAvwICBQJkcQUCZGsJAJQKAgUCZHIFAmRrCQCUCgIFAmRqBQJkcQQCZHQIBQJkcwJfMQQCZHUIBQJkcwJfMgQCY2sJALwCAwUCZHAFAmR1BQJjSAkAlwoFCQEBTgMFAmNrBQFhBQVGTE9PUgkBAU4DBQJkdAUCZGcFB0NFSUxJTkcJAQFOAwUCZHUFAmRoBQdDRUlMSU5HBQJjSQUCZG4EAmR2CAUCZG0CXzEEAmR3CAUCZG0CXzIEAmR4CAUCZG0CXzMEAmNKCQEBSwIIBQJkbQJfNAUBYQQCZHkJAQFLAggFAmRtAl81BQFhAwkAZwIAAAUCZHYJAAIBAgdMUCA8PSAwBAJkegMJAQEhAQUCY1gAAAUCZHYEAmRBCQBlAgUCY1MFAmR3BAJkQgkAZQIFAmNVBQJkeAQCZEMDAwUCY1kJAAACBQJkYgUCZGMHCQCUCgIFAmRhAAADAwUCY1kJAAACBQJkYgUCZGQHCQCUCgIAAAUCZGEJAJQKAgUCZHcFAmR4BAJkRAgFAmRDAl8xBAJkRQgFAmRDAl8yBAJkRgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVkABQJjSgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVoCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjSgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQJjdwUCY3QJAQJicwoFAmREBQJkRQUCZHoFAmNKBQJiUAUCZHkFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRBBQJkQgUDbmlsCQCfCg0FAmR2BQJkegUCY0oFAmNFBQJjRwUCZGkFAmN4BQJjQwUCZEYFAmRBBQJkQgUCY1QFAmNWAQJkRwECZEgEAmRJCQCRAwIFAmRIAAAEAmRKCQCRAwIFAmRIAAEEAmRLCQC3AgIFAmRJBQJkSgMJAAACBQJkSwUBZQUBZQQCZEwJAQ1wYXJzZUludFZhbHVlAQUCYVEEAmRNCQBoAgUCZEwAAgQCY28JALwCAwUCZEkFAmRKBQFmBAJkTgkAvAIDBQJjbwUBaQUBZgQCZE8JALwCAwkAtgIBBQJkTQUCZEsFAWYEAmRQCQC2AgEJAGUCBQJkTQABCgECZFEBAmRSBAJkUwkAvAIDBQJkUgUCZFIFAWYEAmRUCQC8AgMFAmRTBQJkUgUBZgQCZFUJALwCAwUCZFQFAWYFAmROCQC9AgQJALcCAgUCZE8JALwCAwUCZFUFAWcFAWYFAmRSCQC3AgIJALwCAwUCZFAFAmRSBQFmCQC8AgMFAWgFAmRVBQFmBQdDRUlMSU5HCgECZFYCAmRXAmRYAwgFAmRXAl8yBQJkVwQCZFIIBQJkVwJfMQQCZFkJAQJkUQEFAmRSBAJkWgkAoAMBCQC4AgIFAmRZCQEFdmFsdWUBBQJkUgQCZWEDCQBmAgAABQJkWgkBAS0BBQJkWgUCZFoDCQBnAgABBQJlYQkAlAoCBQJkWQYJAJQKAgUCZFkHBAJlYgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlYwoAAmVkBQJlYgoAAmVlCQCQAwEFAmVkCgACZWYJAJQKAgUCZEsHCgECZWcCAmVoAmVpAwkAZwIFAmVpBQJlZQUCZWgJAQJkVgIFAmVoCQCRAwIFAmVkBQJlaQoBAmVqAgJlaAJlaQMJAGcCBQJlaQUCZWUFAmVoCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlagIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIFAmVmAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmRSCAUCZWMCXzEEAmVrCAUCZWMCXzIDBQJlawUCZFIJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZFIBAmVsAQJkSAQCZW0FAWcEAmRJCQCRAwIFAmRIAAAEAmRKCQCRAwIFAmRIAAEEAmVuCQCnAwEFAWwEAmRMCQC5AgIJAKcDAQUCYVEFAmVuBAJkSwkAtwICBQJkSQUCZEoDCQAAAgUCZEsFAWUFAWUEAmRNCQC5AgIFAmRMBQJlbQQCZE4JALkCAgkAuQICCQC5AgIFAmRJBQJkSgUCZW0FAmVtBAJlbwkAugICCQC5AgIFAmRNBQJkSwUCZW4EAmVwCQC4AgIFAmRNBQJlbgQCZXEJALcCAgUCZW0FAWYKAQJkVgICZFcCZXIEAmVzBQJkVwQCZFIIBQJlcwJfMQQCZWsIBQJlcwJfMgMJAQIhPQIFAmVrBQR1bml0BQJkVwQCZFUJALoCAgkAuQICCQC5AgIFAmRSBQJkUgUCZFIFAmROBAJkWQkAugICCQC5AgIJALcCAgUCZW8JALkCAgUCZFUFAmVtBQJkUgkAtwICCQC6AgIJALkCAgUCZXAFAmRSBQJlbgkAuQICBQJlcQUCZFUEAmVhCQEBVQEJALgCAgUCZFkJAQV2YWx1ZQEFAmRSAwkAwAICBQFmBQJlYQkAlAoCBQJkWQUCZXIJAJQKAgUCZFkFBHVuaXQEAmViCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmV0CgACZWQFAmViCgACZWUJAJADAQUCZWQKAAJlZgkAlAoCBQJkSwUEdW5pdAoBAmVnAgJlaAJlaQMJAGcCBQJlaQUCZWUFAmVoCQECZFYCBQJlaAkAkQMCBQJlZAUCZWkKAQJlagICZWgCZWkDCQBnAgUCZWkFAmVlBQJlaAkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE1CQECZWoCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCCQECZWcCBQJlZgAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPBAJkUggFAmV0Al8xBAJlawgFAmV0Al8yAwkBAiE9AgUCZWsFBHVuaXQFAmRSCQACAQkArAICAhlEIGNhbGN1bGF0aW9uIGVycm9yLCBEID0gCQCmAwEFAmRSAQJldQMCZEgCZFgCZXYEAmVtBQFnBAJldwkAkQMCBQJkSAMJAAACBQJkWAAAAAEAAAQCZW4JAKcDAQUBbAQCZEwJALkCAgkApwMBBQJhUQUCZW4EAmRLBQJldwQCZE0JALkCAgUCZEwFAmVtBAJleAkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV2BQJldgkAuQICBQJldwUCZW0FAmV2BQJlbgkAuQICBQJkTQUCZW0EAmV5CQC4AgIJALcCAgUCZEsJALoCAgkAuQICBQJldgUCZW4FAmRNBQJldgoBAmRWAgJkVwJlcgQCZXoFAmRXBAJlQQgFAmV6Al8xBAJlawgFAmV6Al8yAwkBAiE9AgUCZWsFBHVuaXQFAmRXBAJlQgkAugICCQC3AgIJALkCAgUCZUEFAmVBBQJleAkAtwICCQC5AgIFAWcFAmVBBQJleQQCZUMJAQFVAQkAuAICBQJlQgkBBXZhbHVlAQUCZUEDCQDAAgIFAWYFAmVDCQCUCgIFAmVCBQJlcgkAlAoCBQJlQgUEdW5pdAQCZWIJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZUQKAAJlZAUCZWIKAAJlZQkAkAMBBQJlZAoAAmVmCQCUCgIFAmV2BQR1bml0CgECZWcCAmVoAmVpAwkAZwIFAmVpBQJlZQUCZWgJAQJkVgIFAmVoCQCRAwIFAmVkBQJlaQoBAmVqAgJlaAJlaQMJAGcCBQJlaQUCZWUFAmVoCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlagIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIJAQJlZwIFAmVmAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVBCAUCZUQCXzEEAmVrCAUCZUQCXzIDCQECIT0CBQJlawUEdW5pdAUCZUEJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUEBAmVFAwJlRgJlRwJlSAQCZUkJALwCAwkBAmRHAQkAzAgCBQJlRgkAzAgCBQJlRwUDbmlsBQFjBQJlSAMJAAACBQJlSAUBZQUBZQUCZUkBAmVKAwJlSwJlTAJlTQQCZU4JALgCAgkAtgIBCQECYkgBCQECYmEBBQJiaQUCZUsEAmVPCQC4AgIJALYCAQkBAmJIAQkBAmJhAQUCYmoFAmVMBAJlUAkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJoCHF1YW50aXR5BQJlTQQCZVEJAQJlRQMFAmVOBQJlTwUCZVAFAmVRAQJlUgMCZVMCZVQCZU0EAmVOCQBkAgkBAmJIAQkBAmJhAQUCYmkFAmVTBAJlTwkAZAIJAQJiSAEJAQJiYQEFAmJqBQJlVAQCZVAJAGQCCAkBBXZhbHVlAQkA7AcBBQJiaAhxdWFudGl0eQUCZU0EAmVJCQECZUUDCQC2AgEFAmVOCQC2AgEFAmVPCQC2AgEFAmVQBAJlVQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYW4FBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhbQkApgMBBQJlSQUDbmlsCQCUCgIFAmVVBQJlSQECZVYCAmVXAmVJAwkAwAICBQJlSQUCZVcGCQECYU0BAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwAQJlWAECZVkEAmVaCAUCZVkGYW1vdW50BAJmYQkAbgQIBQJlWQZhbW91bnQIBQJlWQVwcmljZQUBYQUFRkxPT1IEAmZiAwkAAAIIBQJlWQlvcmRlclR5cGUFA0J1eQkAlAoCBQJlWgkBAS0BBQJmYQkAlAoCCQEBLQEFAmVaBQJmYQQCZVMIBQJmYgJfMQQCZVQIBQJmYgJfMgMDAwkBAmFSAAYJAAACBQJiZwUBcgYJAAACBQJiZwUBcwkAAgECDUFkbWluIGJsb2NrZWQDAwkBAiE9AggIBQJlWQlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJpBgkBAiE9AggIBQJlWQlhc3NldFBhaXIKcHJpY2VBc3NldAUCYmoJAAIBAglXciBhc3NldHMEAmZjCQCnAwEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFAmFtBAJmZAkBAmVSAwUCZVMFAmVUAAAEAmZlCAUCZmQCXzEEAmZmCAUCZmQCXzIEAmZnCQDAAgIFAmZmBQJmYwUCZmcBAmZoAQJkWAMJAQIhPQIJAJADAQgFAmRYCHBheW1lbnRzAAEJAAIBAgoxIHBtbnQgZXhwBAJmaQkBBXZhbHVlAQkAkQMCCAUCZFgIcGF5bWVudHMAAAQCY3UJAQV2YWx1ZQEIBQJmaQdhc3NldElkBAJkYQgFAmZpBmFtb3VudAQCZG0JAQJjcwQJANgEAQgFAmRYDXRyYW5zYWN0aW9uSWQJANgEAQUCY3UFAmRhCAUCZFgGY2FsbGVyBAJjTwgFAmRtAl8xBAJjUAgFAmRtAl8yBAJjQwkBDXBhcnNlSW50VmFsdWUBCAUCZG0CXzkEAmNRCAUCZG0DXzEwAwMJAQJhUgAGCQAAAgUCY0MFAXMJAAIBCQCsAgICD0FkbWluIGJsb2NrZWQ6IAkApAMBBQJjQwkAlwoFBQJjTwUCY1AFAmRhBQJjdQUCY1EBAmZqCgJmawJhZQJmbAJmbQJiUAJjWAJjWQJjWgJkYQJkYgQCZG0JAQJjUg0FAmFlBQJiUAgJAQV2YWx1ZQEFAmZsBmFtb3VudAgJAQV2YWx1ZQEFAmZsB2Fzc2V0SWQICQEFdmFsdWUBBQJmbQZhbW91bnQICQEFdmFsdWUBBQJmbQdhc3NldElkBQJmawkAAAIFAmFlAgAFAmNYBQJjWQUCY1oFAmRhBQJkYgQCY0MJAQ1wYXJzZUludFZhbHVlAQgFAmRtAl84AwMDCQECYVIABgkAAAIFAmNDBQFxBgkAAAIFAmNDBQFzCQACAQkArAICAghCbG9ja2VkOgkApAMBBQJjQwUCZG0BAmZuBQJmbwJjdQJjdwJhZQJmcAQCYmMJAQJhVQAEAmN5CQCRAwIFAmJjBQF3BAJjegkAkQMCBQJiYwUBeAQCY3gJAJEDAgUCYmMFAXYEAmRnCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXkEAmRoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXoEAmVQCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjeAIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCZnEDCQC/AgIFAmVQBQFlBgkAAgECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZnEFAmZxBAJjRQkBAmJIAQUCY3kEAmNHCQECYkgBBQJjegQCZnIDCQAAAgUCYWUCAAkAlAoCBQJjRQUCY0cDCQAAAgUCY3UFAmN5AwkAZgIFAmZvBQJjRQkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgkAZQIFAmNFBQJmbwUCY0cDCQAAAgUCY3UFAmN6AwkAZgIFAmZvBQJjRwkAAgECFmludmFsaWQgcGF5bWVudCBhbW91bnQJAJQKAgUCY0UJAGUCBQJjRwUCZm8JAAIBAhB3cm9uZyBwbXRBc3NldElkBAJmcwgFAmZyAl8xBAJmdAgFAmZyAl8yBAJmdQMJAAACBQJjdQUCY3kJAJQKAgUCZm8AAAMJAAACBQJjdQUCY3oJAJQKAgAABQJmbwkAAgECD2ludmFsaWQgcGF5bWVudAQCZnYIBQJmdQJfMQQCZncIBQJmdQJfMgQCZngDBQJmcAkAlQoDCAkBAmNwAQUCZnYCXzEICQECY3ABBQJmdwJfMQgJAQJjcAEFAmZvAl8yCQCVCgMFAmZ2BQJmdwAABAJmeQgFAmZ4Al8xBAJmeggFAmZ4Al8yBAJjcggFAmZ4Al8zBAJmQQkAZAIFAmZzBQJmeQQCZkIJAGQCBQJmdAUCZnoEAmJVCQECZEcBCQDMCAIJALYCAQUCZnMJAMwIAgkAtgIBBQJmdAUDbmlsBAJiVAkBAmRHAQkAzAgCCQC2AgEFAmZBCQDMCAIJALYCAQUCZkIFA25pbAQCZkMDCQC/AgIFAmJUBQJiVQYJAQV0aHJvdwADCQAAAgUCZkMFAmZDBAJmRAkAvQIEBQJlUAkAuAICBQJiVAUCYlUFAmJVBQVGTE9PUgQCY0oJAQFLAgkBAmJKAgkBAUgCBQJmQgUCZGgJAQFIAgUCZkEFAmRnBQFhBAJkRgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVkABQJjSgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVoCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjSgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQJjdwUCYWUJAQJicwoFAmZ2BQJmdwkAoAMBBQJmRAUCY0oAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmRQkAawMFAmZ0BQFhBQJmcwQCZkYJAGsDBQJmbwUBYQkAZAIFAmZFBQFhBAJmRwkAZQIFAmZvBQJmRgQCZkgJALwCAwUCZVAJALYCAQUCZkcJALYCAQUCZnQEAmZJCQCgAwEJALwCAwkAuAICBQJmRAUCZkgFAWIFAmZICQCWCgQJAKADAQUCZkQFAmRGBQJjcgUCZkkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZKBgJmSwJmTAJmTQJmawJmTgJmTwQCYmMJAQJhVQAEAmN4CQCRAwIFAmJjBQF2BAJjeQkAkQMCBQJiYwUBdwQCY3oJAJEDAgUCYmMFAXgEAmZQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXkEAmZRCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmMFAXoEAmZSCQCRAwIFAmJjBQF1BAJjdwMJAAACBQJmawUCYnIFAmZOBQJmawQCZmkJAQV2YWx1ZQEJAJEDAgUCZk0AAAQCY3UJAQV2YWx1ZQEIBQJmaQdhc3NldElkBAJkYQgFAmZpBmFtb3VudAQCZVEJAQJlSgMFAWUFAWUFAWUDCQAAAgUCZVEFAmVRBAJjdAkA2AQBBQJmTwMJAQIhPQIFAmN4CQDYBAEFAmN1CQACAQIIV3JvbmcgTFAEAmNFCQECYkgBBQJjeQQCY0cJAQJiSAEFAmN6BAJmUwoAAmZUCQD8BwQFBHRoaXMCE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCZksJAMwIAgUCZGEFA25pbAUDbmlsAwkAAQIFAmZUAgooSW50LCBJbnQpBQJmVAkAAgEJAKwCAgkAAwEFAmZUAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAwkAAAIFAmZTBQJmUwQCY3IIBQJmUwJfMgQCZlUIBQJmUwJfMQQCZlYDAwkAZgIFAmZMAAAJAGYCBQJmTAUCZlUHCQECYU0BCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZMBQNuaWwCAAUCZlUEAmZXAwkAAAIFAmZLBQJjeQkAlgoEBQJmVgAACQBlAgkAZQIFAmNFBQJmVgUCY3IFAmNHAwkAAAIFAmZLBQJjegkAlgoEAAAFAmZWBQJjRQkAZQIJAGUCBQJjRwUCZlYFAmNyCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmZYCAUCZlcCXzEEAmZZCAUCZlcCXzIEAmZBCAUCZlcCXzMEAmZCCAUCZlcCXzQEAmZaCQECYkoCCQEBSAIFAmZCBQJmUQkBAUgCBQJmQQUCZlAEAmdhCQEBSwIFAmZaBQFhBAJnYgMJAAACBQJmSwIFV0FWRVMFBHVuaXQJANkEAQUCZksEAmdjAwkAZgIFAmNyAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVQFAmNyBQJnYgUDbmlsBQNuaWwEAmNRCQDOCAIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3cFAmZWBQJnYgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYCCQClCAEFAmN3BQJjdAkBAmJEBgUCZlgFAmZZBQJkYQUCZ2EFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFZAAUCZ2EJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFaAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZ2EFA25pbAUCZ2MDCQAAAgUCY1EFAmNRBAJnZAkA/AcEBQJhUAIEYnVybgkAzAgCBQJkYQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjdQUCZGEFA25pbAMJAAACBQJnZAUCZ2QEAmdlBAJnZgMJAAACBQR0aGlzBQJhVAAABQJjcgQCZ2cDCQAAAgkBAmFZAQUCZksFAmJpBgcDBQJnZwkAlAoCCQEBLQEJAGQCBQJmVQUCZ2YAAAkAlAoCAAAJAQEtAQkAZAIFAmZVBQJnZgQCZVMIBQJnZQJfMQQCZVQIBQJnZQJfMgQCZ2gJAQJlUgMFAmVTBQJlVAAABAJnaQgFAmdoAl8xBAJlSQgFAmdoAl8yBAJnagkBAmVWAgUCZVEFAmVJAwkAAAIFAmdqBQJnagkAlAoCCQDOCAIFAmNRBQJnaQUCZlYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmdrAAQCYUcJAKIIAQkBAVcAAwkAAQIFAmFHAgZTdHJpbmcEAmRLBQJhRwkA2QQBBQJkSwMJAAECBQJhRwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJnbAAEAmFHCQCiCAEJAQFYAAMJAAECBQJhRwIGU3RyaW5nBAJkSwUCYUcJANkEAQUCZEsDCQABAgUCYUcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACZ20JAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECZ24BAmRYBAJhRwkBAmdrAAMJAAECBQJhRwIKQnl0ZVZlY3RvcgQCZ28FAmFHCQAAAggFAmRYD2NhbGxlclB1YmxpY0tleQUCZ28DCQABAgUCYUcCBFVuaXQJAAACCAUCZFgGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmdwAQJkWAQCYUcJAQJnawADCQABAgUCYUcCCkJ5dGVWZWN0b3IEAmdvBQJhRwMJAAACCAUCZFgPY2FsbGVyUHVibGljS2V5BQJnbwYFAmdtAwkAAQIFAmFHAgRVbml0AwkAAAIIBQJkWAZjYWxsZXIFBHRoaXMGBQJnbQkAAgECC01hdGNoIGVycm9yHQJkWAELY29uc3RydWN0b3IBAVYEAmV4CQECZ3ABBQJkWAMJAAACBQJleAUCZXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVYABQFWBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBCnNldE1hbmFnZXIBAmdxBAJleAkBAmdwAQUCZFgDCQAAAgUCZXgFAmV4BAJncgkA2QQBBQJncQMJAAACBQJncgUCZ3IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVgABQJncQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYAQ5jb25maXJtTWFuYWdlcgAEAmNvCQECZ2wABAJncwMJAQlpc0RlZmluZWQBBQJjbwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ3MFAmdzBAJndAMJAAACCAUCZFgPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJjbwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ3QFAmd0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAAkA2AQBCQEFdmFsdWUBBQJjbwkAzAgCCQELRGVsZXRlRW50cnkBCQEBWAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAEDcHV0AgJndQJndgQCZ3cJAQJibQAEAmd4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJndwUBQwIKV3Igc3QgYWRkcgQCZ3kJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmd3BQFFAgpXciBzbCBhZGRyAwkAZgIAAAUCZ3UJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmRYCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmd6CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkWAhwYXltZW50cwAABmFtb3VudAQCZ0EJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRYCHBheW1lbnRzAAEGYW1vdW50BAJlTgkAuAICCQC2AgEJAQJiSAEJAQJiYQEFAmJpBQJnegMJAAACBQJlTgUCZU4EAmVPCQC4AgIJALYCAQkBAmJIAQkBAmJhAQUCYmoFAmdBAwkAAAIFAmVPBQJlTwQCZVAJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmgIcXVhbnRpdHkDCQAAAgUCZVAFAmVQBAJlUQkBAmVKAwUCZ3oFAmdBCQC2AgEAAAMJAAACBQJlUQUCZVEEAmdCCQECZmoKCQClCAEIBQJkWAZjYWxsZXIJANgEAQgFAmRYDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZFgIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZFgIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRYCHBheW1lbnRzAAEFAmd1BgcGAAACAAQCZHoIBQJnQgJfMgQCZ0MIBQJnQgJfNwQCY1EIBQJnQgJfOQQCZEEIBQJnQgNfMTAEAmRCCAUCZ0IDXzExBAJjeQgFAmdCA18xMgQCY3oIBQJnQgNfMTMEAmRtCQD8BwQFAmFQAgRlbWl0CQDMCAIFAmR6BQNuaWwFA25pbAMJAAACBQJkbQUCZG0EAmdEBAJhRwUCZG0DCQABAgUCYUcCB0FkZHJlc3MEAmdFBQJhRwkA/AcEBQJnRQIEZW1pdAkAzAgCBQJkegUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZ0QFAmdEBAJnRgMJAGYCBQJkQQAACQD8BwQFAmd5AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3kFAmRBBQNuaWwFA25pbAMJAAACBQJnRgUCZ0YEAmdHAwkAZgIFAmRCAAAJAPwHBAUCZ3kCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjegUCZEIFA25pbAUDbmlsAwkAAAIFAmdHBQJnRwQCZ0gDBQJndgQCZ0kJAPwHBAUCZ3gCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdDBQJkegUDbmlsAwkAAAIFAmdJBQJnSQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkWAZjYWxsZXIFAmR6BQJnQwUDbmlsBAJnSgkBAmVSAwAAAAAAAAQCZ2kIBQJnSgJfMQQCZUkIBQJnSgJfMgQCZ0sICQEFdmFsdWUBCQDsBwEFAmJoCHF1YW50aXR5AwkAAAIFAmdLBQJnSwQCZ0wDCQDAAgIFAmVJBQJlUQYJAQJhTQEJALkJAgkAzAgCAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwCQDMCAIJAKYDAQUCZU4JAMwIAgkApgMBBQJlTwkAzAgCCQCmAwEFAmVQCQDMCAIJAKYDAQUCZVEJAMwIAgkApgMBBQJlSQkAzAgCCQCkAwEFAmR6CQDMCAIJAKQDAQUCZEEJAMwIAgkApAMBBQJkQgkAzAgCCQCmAwEFAmVQCQDMCAIJAKQDAQUCZ0sFA25pbAIBIAMJAAACBQJnTAUCZ0wJAM4IAgkAzggCBQJjUQUCZ0gFAmdpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYAQtwdXRPbmVUa25WMgICZkwCZ3YEAmdNCgACZlQJAPwHBAUCYVACKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmVAIHQm9vbGVhbgUCZlQJAAIBCQCsAgIJAAMBBQJmVAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ04DAwMJAQJhUgAGCQAAAgUCYmcFAXEGCQAAAgUCYmcFAXMGBQJnTQQCZ08JAMwIAgMDCQEBIQEFAmdOBgkBAmduAQUCZFgGCQECYU0BAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkWAhwYXltZW50cwABBgkBAmFNAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ08FAmdPBAJiYwkBAmFVAAQCY3kJAJEDAgUCYmMFAXcEAmN6CQCRAwIFAmJjBQF4BAJjeAkA2QQBCQCRAwIFAmJjBQF2BAJmUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF5BAJmUQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF6BAJjdwMJAAACCAUCZFgGY2FsbGVyBQR0aGlzCAUCZFgMb3JpZ2luQ2FsbGVyCAUCZFgGY2FsbGVyBAJmaQkBBXZhbHVlAQkAkQMCCAUCZFgIcGF5bWVudHMAAAQCY3UJANgEAQkBBXZhbHVlAQgFAmZpB2Fzc2V0SWQEAmRhCAUCZmkGYW1vdW50BAJlUQMJAAACCAUCZmkHYXNzZXRJZAUCYmkJAQJlSgMJALYCAQUCZGEJALYCAQAACQC2AgEAAAkBAmVKAwkAtgIBAAAJALYCAQUCZGEJALYCAQAAAwkAAAIFAmVRBQJlUQQCZ1AJAQJmbgUFAmRhBQJjdQkApQgBBQJjdwkA2AQBCAUCZFgNdHJhbnNhY3Rpb25JZAYDCQAAAgUCZ1AFAmdQBAJjcggFAmdQAl8zBAJjUQgFAmdQAl8yBAJnUQgFAmdQAl8xBAJkegMDCQBmAgUCZkwAAAkAZgIFAmZMBQJnUQcJAQJhTQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZkwFA25pbAIABQJnUQQCZ0IJAPwHBAUCYVACBGVtaXQJAMwIAgUCZHoFA25pbAUDbmlsAwkAAAIFAmdCBQJnQgQCZ0QEAmFHBQJnQgMJAAECBQJhRwIHQWRkcmVzcwQCZ0UFAmFHCQD8BwQFAmdFAgRlbWl0CQDMCAIFAmR6BQNuaWwFA25pbAUEdW5pdAMJAAACBQJnRAUCZ0QEAmdIAwUCZ3YEAmdJCQD8BwQFAmJvAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjeAUCZHoFA25pbAMJAAACBQJnSQUCZ0kFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZFgGY2FsbGVyBQJkegUCY3gFA25pbAQCZ2MDCQBmAgUCY3IAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhVAUCY3IJANkEAQUCY3UFA25pbAUDbmlsBAJnUgMJAAACBQR0aGlzBQJhVAkAlAoCAAAAAAQCZ1MDCQAAAggFAmZpB2Fzc2V0SWQFAmJpBgcDBQJnUwkAlAoCCQEBLQEFAmNyAAAJAJQKAgAACQEBLQEFAmNyBAJlUwgFAmdSAl8xBAJlVAgFAmdSAl8yBAJnVAkBAmVSAwUCZVMFAmVUAAAEAmdpCAUCZ1QCXzEEAmVJCAUCZ1QCXzIEAmdqCQECZVYCBQJlUQUCZUkDCQAAAgUCZ2oFAmdqCQCUCgIJAM4IAgkAzggCCQDOCAIFAmNRBQJnSAUCZ2MFAmdpBQJkegkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAEKcHV0Rm9yRnJlZQECZ1UDCQBmAgAABQJnVQkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJkWAhwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJnVgkBAmZqCgkApQgBCAUCZFgGY2FsbGVyCQDYBAEIBQJkWA10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRYCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRYCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkWAhwYXltZW50cwABBQJnVQcHBgAAAgAEAmNRCAUCZ1YCXzkEAmd6CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkWAhwYXltZW50cwAABmFtb3VudAQCZ0EJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRYCHBheW1lbnRzAAEGYW1vdW50BAJlUQkBAmVKAwUCZ3oFAmdBCQC2AgEAAAMJAAACBQJlUQUCZVEEAmdXCQECZVIDAAAAAAAABAJnaQgFAmdXAl8xBAJlSQgFAmdXAl8yBAJnagkBAmVWAgUCZVEFAmVJAwkAAAIFAmdqBQJnagkAzggCBQJjUQUCZ2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBA2dldAAEAmVRCQECZUoDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVRBQJlUQQCZG0JAQJmaAEFAmRYBAJnWAgFAmRtAl8xBAJjUAgFAmRtAl8yBAJkYQgFAmRtAl8zBAJjdQgFAmRtAl80BAJjUQgFAmRtAl81BAJleQkA/AcEBQJhUAIEYnVybgkAzAgCBQJkYQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjdQUCZGEFA25pbAMJAAACBQJleQUCZXkEAmdZCQECZVIDCQEBLQEFAmdYCQEBLQEFAmNQAAAEAmdpCAUCZ1kCXzEEAmVJCAUCZ1kCXzIEAmdqCQECZVYCBQJlUQUCZUkDCQAAAgUCZ2oFAmdqCQDOCAIFAmNRBQJnaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAELZ2V0T25lVGtuVjICAmZLAmZMBAJnTQoAAmZUCQD8BwQFAmFQAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZlQCB0Jvb2xlYW4FAmZUCQACAQkArAICCQADAQUCZlQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdaAwMJAQJhUgAGCQAAAgUCYmcFAXMGBQJnTQQCZ08JAMwIAgMDCQEBIQEFAmdaBgkBAmduAQUCZFgGCQECYU0BAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkWAhwYXltZW50cwABBgkBAmFNAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ08FAmdPBAJoYQkBAmZKBgUCZksFAmZMCAUCZFgIcGF5bWVudHMIBQJkWAZjYWxsZXIIBQJkWAxvcmlnaW5DYWxsZXIIBQJkWA10cmFuc2FjdGlvbklkBAJjUQgFAmhhAl8xBAJmVggFAmhhAl8yCQCUCgIFAmNRBQJmVgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkWAEKcmVmcmVzaERMcAAEAmhiCQELdmFsdWVPckVsc2UCCQCfCAEFAmFuAAAEAmhjAwkAZwIJAGUCBQZoZWlnaHQFAmhiBQJhcQUEdW5pdAkBAmFNAQkAuQkCCQDMCAIJAKQDAQUCYXEJAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmhjBQJoYwQCZmMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFtAgEwCQECYU8BAgtpbnZhbGlkIGRMcAQCaGQJAQJlUgMAAAAAAAAEAmhlCAUCaGQCXzEEAmVJCAUCaGQCXzIEAmVVAwkBAiE9AgUCZmMFAmVJBQJoZQkBAmFNAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmVVCQCmAwEFAmVJCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYARNnZXRPbmVUa25WMlJFQURPTkxZAgJmSwJoZgQCYmMJAQJhVQAEAmN5CQCRAwIFAmJjBQF3BAJjegkAkQMCBQJiYwUBeAQCY3gJAJEDAgUCYmMFAXYEAmRICQDMCAIJALYCAQkBAmJIAQUCY3kJAMwIAgkAtgIBCQECYkgBBQJjegUDbmlsBAJlSAkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3gCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmJVCQECZEcBBQJkSAQCYlQJALgCAgUCYlUJALwCAwkAtgIBBQJoZgUCYlUFAmVIBAJoZwMJAAACBQJmSwUCY3kAAAMJAAACBQJmSwUCY3oAAQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJoaAkBAmV1AwUCZEgFAmhnBQJiVAQCaGkJALgCAgkAkQMCBQJkSAUCaGcFAmhoBAJoagkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALgCAgUCaGkFAWYFA25pbAQCaGsJAQJjcAEFAmhqBAJmVQgFAmhrAl8xBAJjcggFAmhrAl8yCQCUCgIFA25pbAkAlAoCBQJmVQUCY3ICZFgBHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmZLAmhmBAJiYwkBAmFVAAQCY3kJAJEDAgUCYmMFAXcEAmN6CQCRAwIFAmJjBQF4BAJjeAkAkQMCBQJiYwUBdgQCY0UJAQJiSAEFAmN5BAJjRwkBAmJIAQUCY3oEAmhsCgACZlQJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmSwkAzAgCBQJoZgUDbmlsBQNuaWwDCQABAgUCZlQCCihJbnQsIEludCkFAmZUCQACAQkArAICCQADAQUCZlQCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmZVCAUCaGwCXzEEAmNyCAUCaGwCXzIEAmRtCQECY3MEAgAFAmN4BQJoZgUEdGhpcwQCY08IBQJkbQJfMQQCY1AIBQJkbQJfMgQCaG0JAGQCBQJjTwUCY1AEAmZJAwkAAAIFAmhtAAADCQAAAgUCZlUAAAAACQACAQIXYm9udXMgY2FsY3VsYXRpb24gZXJyb3IJAGsDCQBlAgUCZlUFAmhtBQFhBQJobQkAlAoCBQNuaWwJAJUKAwUCZlUFAmNyBQJmSQJkWAEJZ2V0Tm9MZXNzAgJobgJobwQCZG0JAQJmaAEFAmRYBAJjTwgFAmRtAl8xBAJjUAgFAmRtAl8yBAJkYQgFAmRtAl8zBAJjdQgFAmRtAl80BAJjUQgFAmRtAl81AwkAZgIFAmhuBQJjTwkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQJjTwIDIDwgCQCkAwEFAmhuAwkAZgIFAmhvBQJjUAkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFAmNQAgMgPCAJAKQDAQUCaG8EAmVRCQECZUoDCQC2AgEAAAkAtgIBAAAJALYCAQUCZGEEAmhwCQD8BwQFAmFQAgRidXJuCQDMCAIFAmRhBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN1BQJkYQUDbmlsAwkAAAIFAmhwBQJocAQCaHEJAQJlUgMJAQEtAQUCY08JAQEtAQUCY1AAAAQCZ2kIBQJocQJfMQQCZUkIBQJocQJfMgQCZ2oJAQJlVgIFAmVRBQJlSQMJAAACBQJnagUCZ2oJAM4IAgUCY1EFAmdpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYAQ11bnN0YWtlQW5kR2V0AQJjcQQCaHIDCQECIT0CCQCQAwEIBQJkWAhwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCaHIFAmhyBAJjZwkBAmFVAAQCaHMJAQJibQAEAmdDCQDZBAEJAJEDAgUCY2cFAXYEAmh0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJocwUBQwIKV3Igc3QgYWRkcgQCZVEJAQJlSgMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmh1CQD8BwQFAmh0Agd1bnN0YWtlCQDMCAIJANgEAQUCZ0MJAMwIAgUCY3EFA25pbAUDbmlsAwkAAAIFAmh1BQJodQQCZG0JAQJjcwQJANgEAQgFAmRYDXRyYW5zYWN0aW9uSWQJANgEAQUCZ0MFAmNxCAUCZFgGY2FsbGVyBAJjTwgFAmRtAl8xBAJjUAgFAmRtAl8yBAJjQwkBDXBhcnNlSW50VmFsdWUBCAUCZG0CXzkEAmNRCAUCZG0DXzEwBAJodgMDCQECYVIABgkAAAIFAmNDBQFzCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCY0MGAwkAAAIFAmh2BQJodgQCaHcJAPwHBAUCYVACBGJ1cm4JAMwIAgUCY3EFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0MFAmNxBQNuaWwDCQAAAgUCaHcFAmh3BAJoeAkBAmVSAwkBAS0BBQJjTwkBAS0BBQJjUAAABAJnaQgFAmh4Al8xBAJlSQgFAmh4Al8yBAJnagkBAmVWAgUCZVEFAmVJAwkAAAIFAmdqBQJnagkAzggCBQJjUQUCZ2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFgBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmh5Amh6AmhvBAJnWgMJAQJhUgAGCQAAAgUCYmcFAXMEAmdPCQDMCAIDCQEBIQEFAmdaBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRYCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ08FAmdPBAJlUQkBAmVKAwkAtgIBAAAJALYCAQAACQC2AgEAAAQCaHUJAPwHBAUCYm8CB3Vuc3Rha2UJAMwIAgkA2AQBBQJiaAkAzAgCBQJoeQUDbmlsBQNuaWwDCQAAAgUCaHUFAmh1BAJoQQkBAmNzBAkA2AQBCAUCZFgNdHJhbnNhY3Rpb25JZAkA2AQBBQJiaAUCaHkIBQJkWAZjYWxsZXIEAmNPCAUCaEECXzEEAmNQCAUCaEECXzIEAmNRCAUCaEEDXzEwBAJoQgkAzAgCAwkAZwIFAmNPBQJoegYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoegUDbmlsAgAJAMwIAgMJAGcCBQJjUAUCaG8GCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJobwUDbmlsAgAFA25pbAMJAAACBQJoQgUCaEIEAmhwCQD8BwQFAmFQAgRidXJuCQDMCAIFAmh5BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJoBQJoeQUDbmlsAwkAAAIFAmhwBQJocAQCaEMJAQJlUgMJAQEtAQUCY08JAQEtAQUCY1AAAAQCZ2kIBQJoQwJfMQQCZUkIBQJoQwJfMgQCZ2oJAQJlVgIFAmVRBQJlSQMJAAACBQJnagUCZ2oJAM4IAgUCY1EFAmdpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmh5AmZLAmZMBAJnTQoAAmZUCQD8BwQFAmFQAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZlQCB0Jvb2xlYW4FAmZUCQACAQkArAICCQADAQUCZlQCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdaAwMJAQJhUgAGCQAAAgUCYmcFAXMGBQJnTQQCZ08JAMwIAgMDCQEBIQEFAmdaBgkBAmduAQUCZFgGCQECYU0BAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkWAhwYXltZW50cwAABgkBAmFNAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ08FAmdPBAJjZwkBAmFVAAQCaHMJAQJibQAEAmdDCQDZBAEJAJEDAgUCY2cFAXYEAmh0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJocwUBQwIKV3Igc3QgYWRkcgQCaHUJAPwHBAUCaHQCB3Vuc3Rha2UJAMwIAgkA2AQBBQJnQwkAzAgCBQJoeQUDbmlsBQNuaWwDCQAAAgUCaHUFAmh1BAJoRAkBAmZKBgUCZksFAmZMCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnQwUCaHkFA25pbAgFAmRYBmNhbGxlcggFAmRYDG9yaWdpbkNhbGxlcggFAmRYDXRyYW5zYWN0aW9uSWQEAmNRCAUCaEQCXzEEAmZWCAUCaEQCXzIJAJQKAgUCY1EFAmZWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRYARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJoRQJoRgQCYmMJAQJhVQAEAmN5CQCRAwIFAmJjBQF3BAJjegkAkQMCBQJiYwUBeAQCY3gJAJEDAgUCYmMFAXYEAmhHCQECZm4FBQJoRQUCaEYCAAIABgQCZkQIBQJoRwJfMQQCY1EIBQJoRwJfMgQCY3IIBQJoRwJfMwQCZkkIBQJoRwJfNAkAlAoCBQNuaWwJAJUKAwUCZkQFAmNyBQJmSQJkWAEhcHV0T25lVGtuVjJXaXRob3V0VGFrZUZlZVJFQURPTkxZAgJoRQJoRgQCYmMJAQJhVQAEAmN5CQCRAwIFAmJjBQF3BAJjegkAkQMCBQJiYwUBeAQCY3gJAJEDAgUCYmMFAXYEAmhICQECZm4FBQJoRQUCaEYCAAIABwQCZkQIBQJoSAJfMQQCY1EIBQJoSAJfMgQCY3IIBQJoSAJfMwQCZkkIBQJoSAJfNAkAlAoCBQNuaWwJAJUKAwUCZkQFAmNyBQJmSQJkWAEIYWN0aXZhdGUCAmhJAmhKAwkBAiE9AgkApQgBCAUCZFgGY2FsbGVyCQClCAEFAmFQCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFnAAUCaEkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFoAAUCaEoFA25pbAIHc3VjY2VzcwJkWAEEc2V0UwICaEsCaHYDCQECIT0CCQClCAEIBQJkWAZjYWxsZXIJAQJhSQIFBHRoaXMJAQJhagAFAmdtCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmhLBQJodgUDbmlsAmRYAQRzZXRJAgJoSwJodgMJAQIhPQIJAKUIAQgFAmRYBmNhbGxlcgkBAmFJAgUEdGhpcwkBAmFqAAUCZ20JAMwIAgkBDEludGVnZXJFbnRyeQIFAmhLBQJodgUDbmlsAmRYARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhVQACZFgBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJJCQCUCgIFA25pbAkBAmJIAQUCYkkCZFgBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmNhAmNiAmNmBAJoTAkBAmNlAwUCY2EFAmNiBQJjZgkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmhMAAAJAMwIAgkApgMBCQCRAwIFAmhMAAEJAMwIAgkApgMBCQCRAwIFAmhMAAIFA25pbAJkWAEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBTAJoTQkAlAoCBQNuaWwJAQFLAgkApwMBBQFMBQJoTQJkWAEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUkBSgkAlAoCBQNuaWwJAKYDAQkBAUgCBQFJBQFKAmRYAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJLAmJMCQCUCgIFA25pbAkApgMBCQECYkoCCQCnAwEFAmJLCQCnAwEFAmJMAmRYASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCY3QCYlACY1MCY1QCY1UCY1YCaE4CY1cCY1gJAJQKAgUDbmlsCQECY1INBQJjdAUCYlAFAmNTBQJjVAUCY1UFAmNWBQJoTgUCY1cFAmNYBgcAAAIAAmRYASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCY3QCaE8CY3YCaE4EAmRtCQECY3MEBQJjdAUCaE8FAmN2CQERQGV4dHJOYXRpdmUoMTA2MikBBQJoTgkAlAoCBQNuaWwJAJwKCggFAmRtAl8xCAUCZG0CXzIIBQJkbQJfMwgFAmRtAl80CAUCZG0CXzUIBQJkbQJfNggFAmRtAl83CQCmAwEIBQJkbQJfOAgFAmRtAl85CAUCZG0DXzEwAmRYAQ5nZXRGZWVSRUFET05MWQAJAJQKAgUDbmlsBQJhbAECaFABAmhRAAQCaFIEAmFHCQECZ2sAAwkAAQIFAmFHAgpCeXRlVmVjdG9yBAJnbwUCYUcFAmdvAwkAAQIFAmFHAgRVbml0CAUCaFAPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmFHBQJoUAMJAAECBQJhRwIFT3JkZXIEAmVZBQJhRwQCaFMJAQJhUwAEAmhUCQECZVgBBQJlWQQCaFUJAPQDAwgFAmVZCWJvZHlCeXRlcwkAkQMCCAUCZVkGcHJvb2ZzAAAIBQJlWQ9zZW5kZXJQdWJsaWNLZXkEAmhWCQD0AwMIBQJlWQlib2R5Qnl0ZXMJAJEDAggFAmVZBnByb29mcwABBQJoUwMDAwUCaFQFAmhVBwUCaFYHBgkBAmFCAwUCaFQFAmhVBQJoVgMJAAECBQJhRwIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmRLBQJhRwQCaFcJAPYDAQkBBXZhbHVlAQgFAmRLBnNjcmlwdAQCaFgJANsEAQkBBXZhbHVlAQkAnQgCBQJhUAkBAmF6AAQCaFkJAPEHAQUEdGhpcwMDCQAAAgUCaFgFAmhXCQECIT0CBQJoWQUCaFcHBgkA9AMDCAUCaFAJYm9keUJ5dGVzCQCRAwIIBQJoUAZwcm9vZnMAAAUCaFIJAPQDAwgFAmhQCWJvZHlCeXRlcwkAkQMCCAUCaFAGcHJvb2ZzAAAFAmhSC5PaDA==", "chainId": 84, "height": 2363028, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2hTmsaGUW3EFaABBUbkxfF9dPYX9UKq6MGd83K7jJHiE Next: 4fqMMhfmDYkLB5AgNKBfUefnLTX5cmRyGZJyGErAz2aF Diff:
OldNewDifferences
1515
1616 let g = toBigInt(2)
1717
18-let h = toBigInt((a - ((a * 1) / a)))
18+let h = toBigInt(3)
1919
20-let i = "WAVES"
20+let i = toBigInt(4)
2121
22-let j = "100"
22+let j = toBigInt((a - ((a * 1) / a)))
2323
24-let k = "1"
24+let k = "WAVES"
2525
26-let l = "__"
26+let l = "100"
2727
28-let m = ""
28+let m = "1"
2929
30-let n = 1
30+let n = "__"
3131
32-let o = 2
32+let o = ""
3333
34-let p = 3
34+let p = 1
3535
36-let q = 4
36+let q = 2
3737
38-let r = 1
38+let r = 3
3939
40-let s = 2
40+let s = 4
4141
42-let t = 3
42+let t = 1
4343
44-let u = 4
44+let u = 2
4545
46-let v = 5
46+let v = 3
4747
48-let w = 6
48+let w = 4
4949
50-let x = 7
50+let x = 5
5151
52-let y = 8
52+let y = 6
5353
54-let z = 9
54+let z = 7
5555
56-let A = 1
56+let A = 8
5757
58-let B = 6
58+let B = 9
5959
60-let C = 7
60+let C = 1
6161
62-let D = 10
62+let D = 6
6363
64-let E = fraction(10, a, 10000)
64+let E = 7
6565
66-func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
66+let F = 10
67+
68+let G = fraction(10, a, 10000)
69+
70+func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
6771
6872
69-func I (J,K) = toInt(fraction(J, toBigInt(K), c))
73+func K (L,M) = toInt(fraction(L, toBigInt(M), c))
7074
7175
72-func L (M,N,O) = fraction(M, N, O)
76+func N (L,M,O) = toInt(fraction(L, toBigInt(M), c, O))
7377
7478
75-func P (J) = if ((d > J))
76- then -(J)
77- else J
79+func P (Q,R,S) = fraction(Q, R, S)
7880
7981
80-func Q (J) = if ((d > J))
81- then -(J)
82- else J
82+func T (L) = if ((d > L))
83+ then -(L)
84+ else L
8385
8486
85-func R () = "%s__factoryContract"
87+func U (L) = if ((d > L))
88+ then -(L)
89+ else L
8690
8791
88-func S () = "%s__managerPublicKey"
92+func V () = "%s__factoryContract"
8993
9094
91-func T () = "%s__pendingManagerPublicKey"
95+func W () = "%s__managerPublicKey"
9296
9397
94-func U () = "%s%s__price__last"
98+func X () = "%s__pendingManagerPublicKey"
9599
96100
97-func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
101+func Y () = "%s%s__price__last"
98102
99103
100-func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
104+func Z (aa,ab) = makeString(["%s%s%d%d__price__history", toString(aa), toString(ab)], n)
101105
102106
103-func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
107+func ac (ad,ae) = ((("%s%s%s__P__" + ad) + "__") + ae)
104108
105109
106-func ac () = "%s__amountAsset"
110+func af (ad,ae) = ((("%s%s%s__G__" + ad) + "__") + ae)
107111
108112
109-func ad () = "%s__priceAsset"
113+func ag () = "%s__amountAsset"
110114
111115
112-func ae () = "%s__amp"
116+func ah () = "%s__priceAsset"
113117
114118
115-func af () = "%s__addonAddr"
119+func ai () = "%s__amp"
116120
117121
118-func ag () = "%s__factoryConfig"
122+func aj () = "%s__addonAddr"
119123
120124
121-func ah () = "%s%s__matcher__publicKey"
125+let ak = "%s__fee"
126+
127+let al = valueOrElse(getInteger(this, ak), G)
128+
129+let am = makeString(["%s", "dLp"], n)
130+
131+let an = makeString(["%s", "dLpRefreshedHeight"], n)
132+
133+let ao = makeString(["%s", "refreshDLpDelay"], n)
134+
135+let ap = 1
136+
137+let aq = valueOrElse(getInteger(this, ao), ap)
138+
139+func ar () = "%s__factoryConfig"
122140
123141
124-func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
142+func as () = "%s%s__matcher__publicKey"
125143
126144
127-func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
145+func at (au,av) = (((("%d%d%s__" + au) + "__") + av) + "__config")
128146
129147
130-func an () = "%s__shutdown"
148+func aw (ax) = ("%s%s%s__mappings__baseAsset2internalId__" + ax)
131149
132150
133-func ao () = "%s__allowedLpStableScriptHash"
151+func ay () = "%s__shutdown"
134152
135153
136-func ap () = "%s__feeCollectorAddress"
154+func az () = "%s__allowedLpStableScriptHash"
137155
138156
139-func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
157+func aA () = "%s__feeCollectorAddress"
140158
141159
142-func au (J) = {
143- let av = J
144- if ($isInstanceOf(av, "String"))
160+func aB (aC,aD,aE) = throw(((((("Failed: ordValid=" + toString(aC)) + " sndrValid=") + toString(aD)) + " mtchrValid=") + toString(aE)))
161+
162+
163+func aF (L) = {
164+ let aG = L
165+ if ($isInstanceOf(aG, "String"))
145166 then {
146- let aw = av
147- aw
167+ let aH = aG
168+ aH
148169 }
149170 else throw("fail cast to String")
150171 }
151172
152173
153-func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
174+func aI (aJ,aK) = valueOrErrorMessage(getString(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
154175
155176
156-func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
177+func aL (aJ,aK) = valueOrErrorMessage(getInteger(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
157178
158179
159-func aB (aC) = throw(makeString(["lp_stable.ride:", aC], " "))
180+func aM (aN) = throw(makeString(["lp_stable.ride:", aN], " "))
160181
161182
162-let aD = addressFromStringValue(ax(this, R()))
163-
164-let aE = {
165- let aF = invoke(aD, "getInFeeREADONLY", [toString(this)], nil)
166- if ($isInstanceOf(aF, "Int"))
167- then aF
168- else throw(($getType(aF) + " couldn't be cast to Int"))
169- }
170-
171-let aG = {
172- let aF = invoke(aD, "getOutFeeREADONLY", [toString(this)], nil)
173- if ($isInstanceOf(aF, "Int"))
174- then aF
175- else throw(($getType(aF) + " couldn't be cast to Int"))
176- }
177-
178-let aH = ax(this, ae())
179-
180-func aI () = valueOrElse(getBoolean(aD, an()), false)
183+func aO (aN) = makeString(["lp_stable.ride:", aN], " ")
181184
182185
183-func aJ () = fromBase58String(ax(aD, ah()))
186+let aP = addressFromStringValue(aI(this, V()))
187+
188+let aQ = aI(this, ai())
189+
190+func aR () = valueOrElse(getBoolean(aP, ay()), false)
184191
185192
186-let aK = addressFromStringValue(ax(aD, ap()))
193+func aS () = fromBase58String(aI(aP, as()))
187194
188-func aL () = {
189- let aM = ax(this, ac())
190- let aN = ax(this, ad())
191- let aO = aA(aD, al(aN))
192- let aj = aA(aD, al(aM))
193- split(ax(aD, ai(toString(aj), toString(aO))), l)
195+
196+let aT = addressFromStringValue(aI(aP, aA()))
197+
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)
194204 }
195205
196206
197-func aP (aQ) = if ((aQ == i))
207+func aY (aZ) = if ((aZ == k))
198208 then unit
199- else fromBase58String(aQ)
209+ else fromBase58String(aZ)
200210
201211
202-func aR (aQ) = if ((aQ == unit))
203- then i
204- else toBase58String(value(aQ))
212+func ba (aZ) = if ((aZ == unit))
213+ then k
214+ else toBase58String(value(aZ))
205215
206216
207-func aS (aT) = $Tuple7(addressFromStringValue(aT[r]), parseIntValue(aT[s]), fromBase58String(aT[t]), aP(aT[u]), aP(aT[v]), parseIntValue(aT[w]), parseIntValue(aT[x]))
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]))
208218
209219
210-let aU = aS(aL())
220+let bd = bb(aU())
211221
212-let aV = aU
222+let be = bd
213223
214-let aW = aV._1
224+let bf = be._1
215225
216-let aX = aV._2
226+let bg = be._2
217227
218-let aY = aV._3
228+let bh = be._3
219229
220-let aZ = aV._4
230+let bi = be._4
221231
222-let ba = aV._5
232+let bj = be._5
223233
224-let bb = aV._6
234+let bk = be._6
225235
226-let bc = aV._7
236+let bl = be._7
227237
228-func bd () = split(ax(aD, ag()), l)
238+func bm () = split(aI(aP, ar()), n)
229239
230240
231-let be = bd()
241+let bn = bm()
232242
233-let bf = valueOrErrorMessage(addressFromString(be[A]), "Invalid staking contract address")
243+let bo = valueOrErrorMessage(addressFromString(bn[C]), "Invalid staking contract address")
234244
235-let bg = valueOrErrorMessage(addressFromString(be[C]), "Invalid slipage contract address")
245+let bp = valueOrErrorMessage(addressFromString(bn[E]), "Invalid slipage contract address")
236246
237-let bh = valueOrErrorMessage(addressFromString(be[D]), "Invalid gwx contract address")
247+let bq = valueOrErrorMessage(addressFromString(bn[F]), "Invalid gwx contract address")
238248
239-let bi = valueOrErrorMessage(addressFromString(be[B]), "Invalid gwx contract address")
249+let br = valueOrErrorMessage(addressFromString(bn[D]), "Invalid gwx contract address")
240250
241-func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], l)
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)
242252
243253
244-func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], l)
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)
245255
246256
247-func by (bz) = if ((bz == "WAVES"))
257+func bH (bI) = if ((bI == "WAVES"))
248258 then wavesBalance(this).available
249- else assetBalance(this, fromBase58String(bz))
259+ else assetBalance(this, fromBase58String(bI))
250260
251261
252-func bA (bB,bC) = fraction(bB, c, bC)
262+func bJ (bK,bL) = fraction(bK, c, bL)
253263
254264
255-func bD (bE,bF,bG) = {
256- let bH = fraction((bE - bF), b, bF)
257- let bI = ((bG - P(bH)) > d)
258- if (!(bI))
259- then throw(("Big slpg: " + toString(bH)))
260- else $Tuple2(bI, min([bE, bF]))
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]))
261271 }
262272
263273
264-func bJ (bK,bL,bM) = {
265- let bH = fraction(bL, b, bK)
266- let bN = (bM > bH)
267- if (if (bN)
274+func bS (bT,bU,bV) = {
275+ let bQ = fraction(bU, b, bT)
276+ let bW = (bV > bQ)
277+ if (if (bW)
268278 then true
269- else (bL > bK))
270- then throw(((((((toString(bL) + " ") + toString(bK)) + " ") + toString(bH)) + " ") + toString(bM)))
271- else bN
279+ else (bU > bT))
280+ then throw(((((((toString(bU) + " ") + toString(bT)) + " ") + toString(bQ)) + " ") + toString(bV)))
281+ else bW
272282 }
273283
274284
275-func bO (bP,bQ,bR,bS) = {
276- let bT = F(bR, bP)
277- let bU = F(bS, bQ)
278- bA(bU, bT)
285+func bX (bY,bZ,ca,cb) = {
286+ let cc = H(ca, bY)
287+ let cd = H(cb, bZ)
288+ bJ(cd, cc)
279289 }
280290
281291
282-func bV (bR,bS,bW) = {
283- let bX = aL()
284- let bY = parseIntValue(bX[w])
285- let bZ = parseIntValue(bX[x])
286- let ca = bO(bY, bZ, bR, bS)
287- let bC = F(bR, bY)
288- let bB = F(bS, bZ)
289- let cb = F(bW, a)
290- let cc = bA(bC, cb)
291- let cd = bA(bB, cb)
292-[ca, cc, cd]
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]
293303 }
294304
295305
296-func ce (bR,bS,bW) = {
297- let cf = bV(bR, bS, bW)
298-[I(cf[0], a), I(cf[1], a), I(cf[2], a)]
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)]
299309 }
300310
301311
302-func cg (ch,ci) = {
303- let cj = if ((ci == 0))
304- then 0
305- else fraction(ch, ci, a)
306- $Tuple2((ch - cj), cj)
312+func cp (cq) = {
313+ let cr = fraction(cq, al, a)
314+ $Tuple2((cq - cr), cr)
307315 }
308316
309317
310-func ck (cl,cm,cn,co) = {
311- let bX = aL()
312- let cp = bX[t]
313- let cq = bX[u]
314- let cr = bX[v]
315- let cs = parseIntValue(bX[w])
316- let ct = parseIntValue(bX[x])
317- let cu = bX[s]
318- let cv = valueOrErrorMessage(assetInfo(fromBase58String(cp)), "Wrong LP id").quantity
319- if ((cp != cm))
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))
320328 then throw("Wrong pmt asset")
321329 else {
322- let cw = by(cq)
323- let cx = F(cw, cs)
324- let cy = by(cr)
325- let cz = F(cy, ct)
326- let cA = bA(cz, cx)
327- let cB = I(cA, a)
328- let cC = F(cn, a)
329- let cD = F(cv, a)
330- let cE = fraction(cx, cC, cD)
331- let cF = fraction(cz, cC, cD)
332- let cG = I(cE, cs)
333- let cH = I(cF, ct)
334- let cI = if ((cl == ""))
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 == ""))
335343 then nil
336- else [ScriptTransfer(co, cG, if ((cq == "WAVES"))
344+ else [ScriptTransfer(cw, cO, if ((cy == "WAVES"))
337345 then unit
338- else fromBase58String(cq)), ScriptTransfer(co, cH, if ((cr == "WAVES"))
346+ else fromBase58String(cy)), ScriptTransfer(cw, cP, if ((cz == "WAVES"))
339347 then unit
340- else fromBase58String(cr)), StringEntry(ab(toString(co), cl), bu(cG, cH, cn, cB, height, lastBlock.timestamp)), IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB)]
341- $Tuple10(cG, cH, cq, cr, cw, cy, cv, cA, cu, cI)
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)
342350 }
343351 }
344352
345353
346-func cJ (cl,bG,cK,cL,cM,cN,co,cO,cP,cQ,cR,cS,cT) = {
347- let bX = aL()
348- let cp = fromBase58String(bX[t])
349- let cU = bX[u]
350- let cV = bX[v]
351- let cW = bX[y]
352- let cX = bX[z]
353- let cY = parseIntValue(bX[w])
354- let cZ = parseIntValue(bX[x])
355- let cu = bX[s]
356- let da = valueOrErrorMessage(assetInfo(cp), "Wr lp as").quantity
357- let cw = if (cO)
358- then by(cU)
359- else if (if (cQ)
360- then (cT == cU)
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)
361369 else false)
362- then (by(cU) - cS)
363- else if (cQ)
364- then by(cU)
365- else (by(cU) - cK)
366- let cy = if (cO)
367- then by(cV)
368- else if (if (cQ)
369- then (cT == cV)
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)
370378 else false)
371- then (by(cV) - cS)
372- else if (cQ)
373- then by(cV)
374- else (by(cV) - cM)
375- let db = F(cK, cY)
376- let dc = F(cM, cZ)
377- let dd = bA(dc, db)
378- let cx = F(cw, cY)
379- let cz = F(cy, cZ)
380- let de = if ((da == 0))
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))
381389 then {
382- let cA = d
383- let df = d
384- let cb = pow((db * dc), 0, toBigInt(5), 1, 0, DOWN)
385- $Tuple5(I(cb, a), I(db, cY), I(dc, cZ), bA((cz + dc), (cx + db)), df)
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)
386394 }
387395 else {
388- let cA = bA(cz, cx)
389- let dg = fraction(P((cA - dd)), c, cA)
390- let df = F(bG, a)
391- if (if (if (cR)
392- then (cA != d)
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)
393401 else false)
394- then (dg > df)
402+ then (do > dn)
395403 else false)
396- then throw(((("Price slippage " + toString(dg)) + " > ") + toString(df)))
404+ then throw(((("Price slippage " + toString(do)) + " > ") + toString(dn)))
397405 else {
398- let dh = F(da, a)
399- let di = fraction(db, cA, c)
400- let dj = fraction(dc, c, cA)
401- let dk = if ((di > dc))
402- then $Tuple2(dj, dc)
403- else $Tuple2(db, di)
404- let dl = dk._1
405- let dm = dk._2
406- let cb = fraction(dh, dm, cz)
407- $Tuple5(I(cb, a), I(dl, cY), I(dm, cZ), cA, df)
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)
408416 }
409417 }
410- let dn = de._1
411- let do = de._2
412- let dp = de._3
413- let cB = I(de._4, a)
414- let dq = I(de._5, a)
415- if ((0 >= dn))
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))
416424 then throw("LP <= 0")
417425 else {
418- let dr = if (!(cP))
426+ let dz = if (!(cX))
419427 then 0
420- else dn
421- let ds = (cK - do)
422- let dt = (cM - dp)
423- let du = if (if (cQ)
424- then (cT == cU)
428+ else dv
429+ let dA = (cS - dw)
430+ let dB = (cU - dx)
431+ let dC = if (if (cY)
432+ then (db == dc)
425433 else false)
426- then $Tuple2(cS, 0)
427- else if (if (cQ)
428- then (cT == cV)
434+ then $Tuple2(da, 0)
435+ else if (if (cY)
436+ then (db == dd)
429437 else false)
430- then $Tuple2(0, cS)
431- else $Tuple2(do, dp)
432- let dv = du._1
433- let dw = du._2
434- let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, cl), bj(dv, dw, dr, cB, bG, dq, height, lastBlock.timestamp, ds, dt))]
435- $Tuple13(dn, dr, cB, cw, cy, da, cp, cu, dx, ds, dt, cL, cN)
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)
436444 }
437445 }
438446
439447
440-func dy (dz) = {
441- let bX = aL()
442- let dA = bX[u]
443- let dB = bX[v]
444- let cu = parseIntValue(bX[s])
445- let bY = parseIntValue(bX[w])
446- let bZ = parseIntValue(bX[x])
447- let dC = by(dA)
448- let dD = by(dB)
449- let cA = if ((dz.orderType == Buy))
450- then bO(bY, bZ, (dC + dz.amount), dD)
451- else bO(bY, bZ, (dC - dz.amount), dD)
452- let cB = I(cA, a)
453- if (if (if (aI())
454- then true
455- else (cu == p))
456- then true
457- else (cu == q))
458- then throw("Admin blocked")
448+func dG (dH) = {
449+ let dI = dH[0]
450+ let dJ = dH[1]
451+ let dK = (dI + dJ)
452+ if ((dK == e))
453+ then e
459454 else {
460- let dE = dz.assetPair.amountAsset
461- let dF = if ((dE == unit))
462- then "WAVES"
463- else toBase58String(value(dE))
464- let dG = dz.assetPair.priceAsset
465- let dH = if ((dG == unit))
466- then "WAVES"
467- else toBase58String(value(dG))
468- if (if ((dF != dA))
469- then true
470- else (dH != dB))
471- then throw("Wr assets")
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)
466+ }
467+
468+ func dV (dW,dX) = if (dW._2)
469+ then dW
472470 else {
473- let dI = dz.price
474- let cZ = fraction(a, bZ, bY)
475- let dJ = L(dI, a, cZ)
476- let dK = if ((dz.orderType == Buy))
477- then (cB >= dJ)
478- else (dJ >= cB)
479- true
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)
480480 }
481+
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])
490+
491+ func ej (eh,ei) = if ((ei >= ee))
492+ then eh
493+ else throw("List size exceeds 15")
494+
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)
496+ }
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)))
481502 }
482503 }
483504
484505
485-func dL (dM) = if ((size(dM.payments) != 1))
486- then throw("1 pmnt exp")
487- else {
488- let dN = value(dM.payments[0])
489- let cm = value(dN.assetId)
490- let cS = dN.amount
491- let de = ck(toBase58String(dM.transactionId), toBase58String(cm), cS, dM.caller)
492- let cG = de._1
493- let cH = de._2
494- let cu = parseIntValue(de._9)
495- let cI = de._10
496- if (if (aI())
497- then true
498- else (cu == q))
499- then throw(("Admin blocked: " + toString(cu)))
500- else $Tuple5(cG, cH, cS, cm, cI)
501- }
502-
503-
504-func dO (dP,aa,dQ,dR,bG,cP,cQ,cR,cS,cT) = {
505- let de = cJ(aa, bG, value(dQ).amount, value(dQ).assetId, value(dR).amount, value(dR).assetId, dP, (aa == ""), cP, cQ, cR, cS, cT)
506- let cu = parseIntValue(de._8)
507- if (if (if (aI())
508- then true
509- else (cu == o))
510- then true
511- else (cu == q))
512- then throw(("Blocked:" + toString(cu)))
513- else de
514- }
515-
516-
517-func dS (dT) = {
518- let dU = g
519- let dV = dT[0]
520- let dW = dT[1]
521- let dX = parseBigIntValue(j)
522- let dY = (parseBigIntValue(aH) * dX)
523- let dZ = (dV + dW)
524- if ((dZ == e))
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))
525514 then e
526515 else {
527- let ea = (dY * dU)
528- let eb = (((dV * dW) * dU) * dU)
529- let ec = ((ea * dZ) / dX)
530- let ed = (ea - dX)
531- let ee = (dU + f)
532- func ef (eg,eh) = {
533- let ei = eg
534- let ej = ei._1
535- let ek = ei._2
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
536525 if ((ek != unit))
537- then eg
526+ then dW
538527 else {
539- let el = (((ej * ej) * ej) / eb)
540- let em = (((ec + (el * dU)) * ej) / (((ed * ej) / dX) + (ee * el)))
541- let en = Q((em - value(ej)))
542- if ((f >= en))
543- then $Tuple2(em, eh)
544- else $Tuple2(em, unit)
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)
545534 }
546535 }
547536
548- let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
549- let ep = {
550- let eq = eo
551- let er = size(eq)
552- let es = $Tuple2(dZ, unit)
553- func et (eu,ev) = if ((ev >= er))
554- then eu
555- else ef(eu, eq[ev])
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])
556545
557- func ew (eu,ev) = if ((ev >= er))
558- then eu
546+ func ej (eh,ei) = if ((ei >= ee))
547+ then eh
559548 else throw("List size exceeds 15")
560549
561- ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
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)
562551 }
563- let ej = ep._1
564- let ek = ep._2
552+ let dR = et._1
553+ let ek = et._2
565554 if ((ek != unit))
566- then ej
567- else throw(("D calculation error, D = " + toString(ej)))
555+ then dR
556+ else throw(("D calculation error, D = " + toString(dR)))
568557 }
569558 }
570559
571560
572-func ex (dT,dM,ey) = {
573- let dU = g
574- let ez = dT[if ((dM == 0))
561+func eu (dH,dX,ev) = {
562+ let em = g
563+ let ew = dH[if ((dX == 0))
575564 then 1
576565 else 0]
577- let dX = parseBigIntValue(j)
578- let dY = (parseBigIntValue(aH) * dX)
579- let dZ = ez
580- let ea = (dY * dU)
581- let eA = (((((ey * ey) / (ez * dU)) * ey) * dX) / (ea * dU))
582- let eB = ((dZ + ((ey * dX) / ea)) - ey)
583- func ef (eg,eh) = {
584- let eC = eg
585- let eD = eC._1
586- let ek = eC._2
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
587576 if ((ek != unit))
588- then eg
577+ then dW
589578 else {
590- let eE = (((eD * eD) + eA) / ((g * eD) + eB))
591- let eF = Q((eE - value(eD)))
592- if ((f >= eF))
593- then $Tuple2(eE, eh)
594- else $Tuple2(eE, unit)
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)
595584 }
596585 }
597586
598- let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
599- let eG = {
600- let eq = eo
601- let er = size(eq)
602- let es = $Tuple2(ey, unit)
603- func et (eu,ev) = if ((ev >= er))
604- then eu
605- else ef(eu, eq[ev])
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])
606595
607- func ew (eu,ev) = if ((ev >= er))
608- then eu
596+ func ej (eh,ei) = if ((ei >= ee))
597+ then eh
609598 else throw("List size exceeds 15")
610599
611- ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
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)
612601 }
613- let eD = eG._1
614- let ek = eG._2
602+ let eA = eD._1
603+ let ek = eD._2
615604 if ((ek != unit))
616- then eD
617- else throw(("Y calculation error, Y = " + toString(eD)))
605+ then eA
606+ else throw(("Y calculation error, Y = " + toString(eA)))
618607 }
619608
620609
621-func eH (eI,cm,co,aa,eJ) = {
622- let aT = aL()
623- let cq = aT[u]
624- let cr = aT[v]
625- let cp = aT[t]
626- let cY = parseIntValue(aT[w])
627- let cZ = parseIntValue(aT[x])
628- let eK = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
629- let eL = if ((eK > e))
610+func eE (eF,eG,eH) = {
611+ let eI = fraction(dG([eF, eG]), c, eH)
612+ if ((eH == e))
613+ then e
614+ else eI
615+ }
616+
617+
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
624+ }
625+
626+
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)
634+ }
635+
636+
637+func eV (eW,eI) = if ((eI >= eW))
638+ then true
639+ else aM("updated DLp lower than current DLp")
640+
641+
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())
651+ then true
652+ else (bg == r))
653+ then true
654+ else (bg == s))
655+ then throw("Admin blocked")
656+ else if (if ((eY.assetPair.amountAsset != bi))
657+ then true
658+ else (eY.assetPair.priceAsset != bj))
659+ then throw("Wr assets")
660+ 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
667+ }
668+ }
669+
670+
671+func fh (dX) = if ((size(dX.payments) != 1))
672+ then throw("1 pmnt exp")
673+ 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())
683+ then true
684+ else (cC == s))
685+ then throw(("Admin blocked: " + toString(cC)))
686+ else $Tuple5(cO, cP, da, cu, cQ)
687+ }
688+
689+
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())
694+ then true
695+ else (cC == q))
696+ then true
697+ else (cC == s))
698+ then throw(("Blocked:" + toString(cC)))
699+ else dm
700+ }
701+
702+
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))
630712 then true
631713 else throw("initial deposit requires all coins")
632- if ((eL == eL))
714+ if ((fq == fq))
633715 then {
634- let cw = by(cq)
635- let cy = by(cr)
636- let eM = if ((aa == ""))
637- then $Tuple2(cw, cy)
638- else if ((cm == cq))
639- then if ((eI > cw))
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))
640722 then throw("invalid payment amount")
641- else $Tuple2((cw - eI), cy)
642- else if ((cm == cr))
643- then if ((eI > cy))
723+ else $Tuple2((cE - fo), cG)
724+ else if ((cu == cz))
725+ then if ((fo > cG))
644726 then throw("invalid payment amount")
645- else $Tuple2(cw, (cy - eI))
727+ else $Tuple2(cE, (cG - fo))
646728 else throw("wrong pmtAssetId")
647- let eN = eM._1
648- let eO = eM._2
649- let eP = if ((cm == cq))
650- then $Tuple2(eI, 0)
651- else if ((cm == cr))
652- then $Tuple2(0, eI)
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)
653735 else throw("invalid payment")
654- let eQ = eP._1
655- let eR = eP._2
656- let eS = if (eJ)
657- then $Tuple3(cg(eQ, aE)._1, cg(eR, aE)._1, cg(eI, aE)._2)
658- else $Tuple3(eQ, eR, 0)
659- let eT = eS._1
660- let eU = eS._2
661- let cj = eS._3
662- let eV = (eN + eT)
663- let eW = (eO + eU)
664- let bL = dS([toBigInt(eN), toBigInt(eO)])
665- let bK = dS([toBigInt(eV), toBigInt(eW)])
666- let eX = if ((bK > bL))
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))
667749 then true
668750 else throw()
669- if ((eX == eX))
751+ if ((fC == fC))
670752 then {
671- let eY = fraction(eK, (bK - bL), bL)
672- let cB = I(bA(F(eW, cZ), F(eV, cY)), a)
673- let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, aa), bj(eQ, eR, toInt(eY), cB, 0, 0, height, lastBlock.timestamp, 0, 0))]
674- let eZ = fraction(eO, a, eN)
675- let fa = fraction(eI, a, (eZ + a))
676- let fb = (eI - fa)
677- let fc = fraction(eK, toBigInt(fb), toBigInt(eO))
678- let fd = toInt(fraction((eY - fc), b, fc))
679- $Tuple4(toInt(eY), dx, cj, fd)
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)
680762 }
681763 else throw("Strict value is not equal to itself.")
682764 }
684766 }
685767
686768
687-func fe (ff,fg,fh,dP,fi,fj) = {
688- let aT = aL()
689- let cp = aT[t]
690- let cq = aT[u]
691- let cr = aT[v]
692- let fk = parseIntValue(aT[w])
693- let fl = parseIntValue(aT[x])
694- let fm = aT[s]
695- let co = if ((dP == bi))
696- then fi
697- else dP
698- let dN = value(fh[0])
699- let cm = value(dN.assetId)
700- let cS = dN.amount
701- let cl = toBase58String(fj)
702- if ((cp != toBase58String(cm)))
703- then throw("Wrong LP")
704- else {
705- let cw = by(cq)
706- let cy = by(cr)
707- let fn = {
708- let aF = invoke(this, "getOneTknV2READONLY", [ff, cS], nil)
709- if ($isInstanceOf(aF, "(Int, Int)"))
710- then aF
711- else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
712- }
713- if ((fn == fn))
714- then {
715- let cj = fn._2
716- let fo = fn._1
717- let fp = if (if ((fg > 0))
718- then (fg > fo)
719- else false)
720- then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
721- else fo
722- let fq = if ((ff == cq))
723- then $Tuple4(fp, 0, ((cw - fp) - cj), cy)
724- else if ((ff == cr))
725- then $Tuple4(0, fp, cw, ((cy - fp) - cj))
726- else throw("invalid out asset id")
727- let fr = fq._1
728- let fs = fq._2
729- let eV = fq._3
730- let eW = fq._4
731- let ft = bA(F(eW, fl), F(eV, fk))
732- let fu = I(ft, a)
733- let fv = if ((ff == "WAVES"))
734- then unit
735- else fromBase58String(ff)
736- let fw = if ((cj > 0))
737- then [ScriptTransfer(aK, cj, fv)]
738- else nil
739- let cI = ([ScriptTransfer(co, fp, fv), StringEntry(ab(toString(co), cl), bu(fr, fs, cS, fu, height, lastBlock.timestamp)), IntegerEntry(U(), fu), IntegerEntry(V(height, lastBlock.timestamp), fu)] ++ fw)
740- if ((cI == cI))
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))
785+ then {
786+ let ct = toBase58String(fO)
787+ if ((cx != toBase58String(cu)))
788+ then throw("Wrong LP")
789+ 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)"))
797+ }
798+ if ((fS == fS))
741799 then {
742- let fx = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
743- if ((fx == fx))
744- then $Tuple2(cI, fp)
800+ let cr = fS._2
801+ let fU = fS._1
802+ let fV = if (if ((fL > 0))
803+ then (fL > fU)
804+ 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))
811+ 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"))
819+ then unit
820+ else fromBase58String(fK)
821+ let gc = if ((cr > 0))
822+ then [ScriptTransfer(aT, cr, gb)]
823+ 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))
826+ then {
827+ let gd = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
828+ if ((gd == gd))
829+ then {
830+ let ge = {
831+ let gf = if ((this == aT))
832+ then 0
833+ else cr
834+ let gg = if ((aY(fK) == bi))
835+ then true
836+ else false
837+ if (gg)
838+ then $Tuple2(-((fU + gf)), 0)
839+ else $Tuple2(0, -((fU + gf)))
840+ }
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)
849+ else throw("Strict value is not equal to itself.")
850+ }
851+ else throw("Strict value is not equal to itself.")
852+ }
745853 else throw("Strict value is not equal to itself.")
746854 }
747855 else throw("Strict value is not equal to itself.")
748856 }
749- else throw("Strict value is not equal to itself.")
750857 }
858+ else throw("Strict value is not equal to itself.")
751859 }
752860
753861
754-func fy () = {
755- let av = getString(S())
756- if ($isInstanceOf(av, "String"))
862+func gk () = {
863+ let aG = getString(W())
864+ if ($isInstanceOf(aG, "String"))
757865 then {
758- let dZ = av
759- fromBase58String(dZ)
866+ let dK = aG
867+ fromBase58String(dK)
760868 }
761- else if ($isInstanceOf(av, "Unit"))
869+ else if ($isInstanceOf(aG, "Unit"))
762870 then unit
763871 else throw("Match error")
764872 }
765873
766874
767-func fz () = {
768- let av = getString(T())
769- if ($isInstanceOf(av, "String"))
875+func gl () = {
876+ let aG = getString(X())
877+ if ($isInstanceOf(aG, "String"))
770878 then {
771- let dZ = av
772- fromBase58String(dZ)
879+ let dK = aG
880+ fromBase58String(dK)
773881 }
774- else if ($isInstanceOf(av, "Unit"))
882+ else if ($isInstanceOf(aG, "Unit"))
775883 then unit
776884 else throw("Match error")
777885 }
778886
779887
780-let fA = throw("Permission denied")
888+let gm = throw("Permission denied")
781889
782-func fB (dM) = {
783- let av = fy()
784- if ($isInstanceOf(av, "ByteVector"))
890+func gn (dX) = {
891+ let aG = gk()
892+ if ($isInstanceOf(aG, "ByteVector"))
785893 then {
786- let fC = av
787- (dM.callerPublicKey == fC)
894+ let go = aG
895+ (dX.callerPublicKey == go)
788896 }
789- else if ($isInstanceOf(av, "Unit"))
790- then (dM.caller == this)
897+ else if ($isInstanceOf(aG, "Unit"))
898+ then (dX.caller == this)
791899 else throw("Match error")
792900 }
793901
794902
795-func fD (dM) = {
796- let av = fy()
797- if ($isInstanceOf(av, "ByteVector"))
903+func gp (dX) = {
904+ let aG = gk()
905+ if ($isInstanceOf(aG, "ByteVector"))
798906 then {
799- let fC = av
800- if ((dM.callerPublicKey == fC))
907+ let go = aG
908+ if ((dX.callerPublicKey == go))
801909 then true
802- else fA
910+ else gm
803911 }
804- else if ($isInstanceOf(av, "Unit"))
805- then if ((dM.caller == this))
912+ else if ($isInstanceOf(aG, "Unit"))
913+ then if ((dX.caller == this))
806914 then true
807- else fA
915+ else gm
808916 else throw("Match error")
809917 }
810918
811919
812-@Callable(dM)
813-func constructor (R) = {
814- let eA = fD(dM)
815- if ((eA == eA))
816- then [StringEntry(R(), R)]
920+@Callable(dX)
921+func constructor (V) = {
922+ let ex = gp(dX)
923+ if ((ex == ex))
924+ then [StringEntry(V(), V)]
817925 else throw("Strict value is not equal to itself.")
818926 }
819927
820928
821929
822-@Callable(dM)
823-func setManager (fE) = {
824- let eA = fD(dM)
825- if ((eA == eA))
930+@Callable(dX)
931+func setManager (gq) = {
932+ let ex = gp(dX)
933+ if ((ex == ex))
826934 then {
827- let fF = fromBase58String(fE)
828- if ((fF == fF))
829- then [StringEntry(T(), fE)]
935+ let gr = fromBase58String(gq)
936+ if ((gr == gr))
937+ then [StringEntry(X(), gq)]
830938 else throw("Strict value is not equal to itself.")
831939 }
832940 else throw("Strict value is not equal to itself.")
834942
835943
836944
837-@Callable(dM)
945+@Callable(dX)
838946 func confirmManager () = {
839- let cf = fz()
840- let fG = if (isDefined(cf))
947+ let co = gl()
948+ let gs = if (isDefined(co))
841949 then true
842950 else throw("No pending manager")
843- if ((fG == fG))
951+ if ((gs == gs))
844952 then {
845- let fH = if ((dM.callerPublicKey == value(cf)))
953+ let gt = if ((dX.callerPublicKey == value(co)))
846954 then true
847955 else throw("You are not pending manager")
848- if ((fH == fH))
849- then [StringEntry(S(), toBase58String(value(cf))), DeleteEntry(T())]
956+ if ((gt == gt))
957+ then [StringEntry(W(), toBase58String(value(co))), DeleteEntry(X())]
850958 else throw("Strict value is not equal to itself.")
851959 }
852960 else throw("Strict value is not equal to itself.")
854962
855963
856964
857-@Callable(dM)
858-func put (fI,fJ) = {
859- let fK = bd()
860- let fL = valueOrErrorMessage(addressFromString(fK[A]), "Wr st addr")
861- let fM = valueOrErrorMessage(addressFromString(fK[C]), "Wr sl addr")
862- if ((0 > fI))
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))
863971 then throw("Wrong slippage")
864- else if ((size(dM.payments) != 2))
972+ else if ((size(dX.payments) != 2))
865973 then throw("2 pmnts expd")
866974 else {
867- let fN = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], fI, true, false, true, 0, "")
868- let dr = fN._2
869- let fO = fN._7
870- let cI = fN._9
871- let ds = fN._10
872- let dt = fN._11
873- let cq = fN._12
874- let cr = fN._13
875- let de = invoke(aD, "emit", [dr], nil)
876- if ((de == de))
975+ let gz = toBigInt(value(dX.payments[0]).amount)
976+ let gA = toBigInt(value(dX.payments[1]).amount)
977+ let eN = (toBigInt(bH(ba(bi))) - gz)
978+ if ((eN == eN))
877979 then {
878- let fP = {
879- let av = de
880- if ($isInstanceOf(av, "Address"))
881- then {
882- let fQ = av
883- invoke(fQ, "emit", [dr], nil)
884- }
885- else unit
886- }
887- if ((fP == fP))
980+ let eO = (toBigInt(bH(ba(bj))) - gA)
981+ if ((eO == eO))
888982 then {
889- let fR = if ((ds > 0))
890- then invoke(fM, "put", nil, [AttachedPayment(cq, ds)])
891- else nil
892- if ((fR == fR))
983+ let eP = toBigInt(value(assetInfo(bh)).quantity)
984+ if ((eP == eP))
893985 then {
894- let fS = if ((dt > 0))
895- then invoke(fM, "put", nil, [AttachedPayment(cr, dt)])
896- else nil
897- if ((fS == fS))
986+ let eQ = eJ(gz, gA, toBigInt(0))
987+ if ((eQ == eQ))
898988 then {
899- let fT = if (fJ)
989+ 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, "")
990+ let dz = gB._2
991+ let gC = gB._7
992+ let cQ = gB._9
993+ let dA = gB._10
994+ let dB = gB._11
995+ let cy = gB._12
996+ let cz = gB._13
997+ let dm = invoke(aP, "emit", [dz], nil)
998+ if ((dm == dm))
900999 then {
901- let fU = invoke(fL, "stake", nil, [AttachedPayment(fO, dr)])
902- if ((fU == fU))
903- then nil
1000+ let gD = {
1001+ let aG = dm
1002+ if ($isInstanceOf(aG, "Address"))
1003+ then {
1004+ let gE = aG
1005+ invoke(gE, "emit", [dz], nil)
1006+ }
1007+ else unit
1008+ }
1009+ if ((gD == gD))
1010+ then {
1011+ let gF = if ((dA > 0))
1012+ then invoke(gy, "put", nil, [AttachedPayment(cy, dA)])
1013+ else nil
1014+ if ((gF == gF))
1015+ then {
1016+ let gG = if ((dB > 0))
1017+ then invoke(gy, "put", nil, [AttachedPayment(cz, dB)])
1018+ else nil
1019+ if ((gG == gG))
1020+ then {
1021+ let gH = if (gv)
1022+ then {
1023+ let gI = invoke(gx, "stake", nil, [AttachedPayment(gC, dz)])
1024+ if ((gI == gI))
1025+ then nil
1026+ else throw("Strict value is not equal to itself.")
1027+ }
1028+ else [ScriptTransfer(dX.caller, dz, gC)]
1029+ let gJ = eR(0, 0, 0)
1030+ let gi = gJ._1
1031+ let eI = gJ._2
1032+ let gK = value(assetInfo(bh)).quantity
1033+ if ((gK == gK))
1034+ then {
1035+ let gL = if ((eI >= eQ))
1036+ then true
1037+ else aM(makeString(["updated DLp lower than current DLp", toString(eN), toString(eO), toString(eP), toString(eQ), toString(eI), toString(dz), toString(dA), toString(dB), toString(eP), toString(gK)], " "))
1038+ if ((gL == gL))
1039+ then ((cQ ++ gH) ++ gi)
1040+ else throw("Strict value is not equal to itself.")
1041+ }
1042+ else throw("Strict value is not equal to itself.")
1043+ }
1044+ else throw("Strict value is not equal to itself.")
1045+ }
1046+ else throw("Strict value is not equal to itself.")
1047+ }
9041048 else throw("Strict value is not equal to itself.")
9051049 }
906- else [ScriptTransfer(dM.caller, dr, fO)]
907- (cI ++ fT)
1050+ else throw("Strict value is not equal to itself.")
9081051 }
9091052 else throw("Strict value is not equal to itself.")
9101053 }
9181061
9191062
9201063
921-@Callable(dM)
922-func putOneTknV2 (fg,fJ) = {
923- let fV = {
924- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
925- if ($isInstanceOf(aF, "Boolean"))
926- then aF
927- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1064+@Callable(dX)
1065+func putOneTknV2 (fL,gv) = {
1066+ let gM = {
1067+ let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1068+ if ($isInstanceOf(fT, "Boolean"))
1069+ then fT
1070+ else throw(($getType(fT) + " couldn't be cast to Boolean"))
9281071 }
929- let fW = if (if (if (aI())
1072+ let gN = if (if (if (aR())
9301073 then true
931- else (aX == o))
1074+ else (bg == q))
9321075 then true
933- else (aX == q))
1076+ else (bg == s))
9341077 then true
935- else fV
936- let fX = [if (if (!(fW))
1078+ else gM
1079+ let gO = [if (if (!(gN))
9371080 then true
938- else fB(dM))
1081+ else gn(dX))
9391082 then true
940- else aB("put operation is blocked by admin"), if ((size(dM.payments) == 1))
1083+ else aM("put operation is blocked by admin"), if ((size(dX.payments) == 1))
9411084 then true
942- else aB("exactly 1 payment are expected")]
943- if ((fX == fX))
1085+ else aM("exactly 1 payment are expected")]
1086+ if ((gO == gO))
9441087 then {
945- let aT = aL()
946- let cq = aT[u]
947- let cr = aT[v]
948- let cp = fromBase58String(aT[t])
949- let fk = parseIntValue(aT[w])
950- let fl = parseIntValue(aT[x])
951- let co = if ((dM.caller == this))
952- then dM.originCaller
953- else dM.caller
954- let dN = value(dM.payments[0])
955- let cm = toBase58String(value(dN.assetId))
956- let cS = dN.amount
957- let fY = eH(cS, cm, toString(co), toBase58String(dM.transactionId), true)
958- if ((fY == fY))
1088+ let bc = aU()
1089+ let cy = bc[w]
1090+ let cz = bc[x]
1091+ let cx = fromBase58String(bc[v])
1092+ let fP = parseIntValue(bc[y])
1093+ let fQ = parseIntValue(bc[z])
1094+ let cw = if ((dX.caller == this))
1095+ then dX.originCaller
1096+ else dX.caller
1097+ let fi = value(dX.payments[0])
1098+ let cu = toBase58String(value(fi.assetId))
1099+ let da = fi.amount
1100+ let eQ = if ((fi.assetId == bi))
1101+ then eJ(toBigInt(da), toBigInt(0), toBigInt(0))
1102+ else eJ(toBigInt(0), toBigInt(da), toBigInt(0))
1103+ if ((eQ == eQ))
9591104 then {
960- let cj = fY._3
961- let cI = fY._2
962- let fZ = fY._1
963- let dr = if (if ((fg > 0))
964- then (fg > fZ)
965- else false)
966- then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
967- else fZ
968- let fN = invoke(aD, "emit", [dr], nil)
969- if ((fN == fN))
1105+ let gP = fn(da, cu, toString(cw), toBase58String(dX.transactionId), true)
1106+ if ((gP == gP))
9701107 then {
971- let fP = {
972- let av = fN
973- if ($isInstanceOf(av, "Address"))
974- then {
975- let fQ = av
976- invoke(fQ, "emit", [dr], nil)
1108+ let cr = gP._3
1109+ let cQ = gP._2
1110+ let gQ = gP._1
1111+ let dz = if (if ((fL > 0))
1112+ then (fL > gQ)
1113+ else false)
1114+ then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
1115+ else gQ
1116+ let gB = invoke(aP, "emit", [dz], nil)
1117+ if ((gB == gB))
1118+ then {
1119+ let gD = {
1120+ let aG = gB
1121+ if ($isInstanceOf(aG, "Address"))
1122+ then {
1123+ let gE = aG
1124+ invoke(gE, "emit", [dz], nil)
1125+ }
1126+ else unit
9771127 }
978- else unit
979- }
980- if ((fP == fP))
981- then {
982- let fT = if (fJ)
1128+ if ((gD == gD))
9831129 then {
984- let fU = invoke(bf, "stake", nil, [AttachedPayment(cp, dr)])
985- if ((fU == fU))
986- then nil
1130+ let gH = if (gv)
1131+ then {
1132+ let gI = invoke(bo, "stake", nil, [AttachedPayment(cx, dz)])
1133+ if ((gI == gI))
1134+ then nil
1135+ else throw("Strict value is not equal to itself.")
1136+ }
1137+ else [ScriptTransfer(dX.caller, dz, cx)]
1138+ let gc = if ((cr > 0))
1139+ then [ScriptTransfer(aT, cr, fromBase58String(cu))]
1140+ else nil
1141+ let gR = if ((this == aT))
1142+ then $Tuple2(0, 0)
1143+ else {
1144+ let gS = if ((fi.assetId == bi))
1145+ then true
1146+ else false
1147+ if (gS)
1148+ then $Tuple2(-(cr), 0)
1149+ else $Tuple2(0, -(cr))
1150+ }
1151+ let eS = gR._1
1152+ let eT = gR._2
1153+ let gT = eR(eS, eT, 0)
1154+ let gi = gT._1
1155+ let eI = gT._2
1156+ let gj = eV(eQ, eI)
1157+ if ((gj == gj))
1158+ then $Tuple2((((cQ ++ gH) ++ gc) ++ gi), dz)
9871159 else throw("Strict value is not equal to itself.")
9881160 }
989- else [ScriptTransfer(dM.caller, dr, cp)]
990- let fw = if ((cj > 0))
991- then [ScriptTransfer(aK, cj, fromBase58String(cm))]
992- else nil
993- $Tuple2(((cI ++ fT) ++ fw), dr)
1161+ else throw("Strict value is not equal to itself.")
9941162 }
9951163 else throw("Strict value is not equal to itself.")
9961164 }
10031171
10041172
10051173
1006-@Callable(dM)
1007-func putForFree (ga) = if ((0 > ga))
1174+@Callable(dX)
1175+func putForFree (gU) = if ((0 > gU))
10081176 then throw("Wrong slpg")
1009- else if ((size(dM.payments) != 2))
1177+ else if ((size(dX.payments) != 2))
10101178 then throw("2 pmnts expd")
10111179 else {
1012- let gb = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], ga, false, false, true, 0, "")
1013- gb._9
1180+ let gV = fj(toString(dX.caller), toBase58String(dX.transactionId), AttachedPayment(value(dX.payments[0]).assetId, value(dX.payments[0]).amount), dX.payments[1], gU, false, false, true, 0, "")
1181+ let cQ = gV._9
1182+ let gz = toBigInt(value(dX.payments[0]).amount)
1183+ let gA = toBigInt(value(dX.payments[1]).amount)
1184+ let eQ = eJ(gz, gA, toBigInt(0))
1185+ if ((eQ == eQ))
1186+ then {
1187+ let gW = eR(0, 0, 0)
1188+ let gi = gW._1
1189+ let eI = gW._2
1190+ let gj = eV(eQ, eI)
1191+ if ((gj == gj))
1192+ then (cQ ++ gi)
1193+ else throw("Strict value is not equal to itself.")
1194+ }
1195+ else throw("Strict value is not equal to itself.")
10141196 }
10151197
10161198
10171199
1018-@Callable(dM)
1200+@Callable(dX)
10191201 func get () = {
1020- let de = dL(dM)
1021- let gc = de._1
1022- let cH = de._2
1023- let cS = de._3
1024- let cm = de._4
1025- let cI = de._5
1026- let eB = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1027- if ((eB == eB))
1028- then cI
1029- else throw("Strict value is not equal to itself.")
1030- }
1031-
1032-
1033-
1034-@Callable(dM)
1035-func getOneTknV2 (ff,fg) = {
1036- let fV = {
1037- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1038- if ($isInstanceOf(aF, "Boolean"))
1039- then aF
1040- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1041- }
1042- let gd = if (if (aI())
1043- then true
1044- else (aX == q))
1045- then true
1046- else fV
1047- let fX = [if (if (!(gd))
1048- then true
1049- else fB(dM))
1050- then true
1051- else aB("get operation is blocked by admin"), if ((size(dM.payments) == 1))
1052- then true
1053- else aB("exactly 1 payment are expected")]
1054- if ((fX == fX))
1202+ let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1203+ if ((eQ == eQ))
10551204 then {
1056- let ge = fe(ff, fg, dM.payments, dM.caller, dM.originCaller, dM.transactionId)
1057- let cI = ge._1
1058- let fp = ge._2
1059- $Tuple2(cI, fp)
1205+ let dm = fh(dX)
1206+ let gX = dm._1
1207+ let cP = dm._2
1208+ let da = dm._3
1209+ let cu = dm._4
1210+ let cQ = dm._5
1211+ let ey = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1212+ if ((ey == ey))
1213+ then {
1214+ let gY = eR(-(gX), -(cP), 0)
1215+ let gi = gY._1
1216+ let eI = gY._2
1217+ let gj = eV(eQ, eI)
1218+ if ((gj == gj))
1219+ then (cQ ++ gi)
1220+ else throw("Strict value is not equal to itself.")
1221+ }
1222+ else throw("Strict value is not equal to itself.")
10601223 }
10611224 else throw("Strict value is not equal to itself.")
10621225 }
10631226
10641227
10651228
1066-@Callable(dM)
1067-func getOneTknV2READONLY (ff,gf) = {
1068- let aT = aL()
1069- let cq = aT[u]
1070- let cr = aT[v]
1071- let cp = aT[t]
1072- let dT = [toBigInt(by(cq)), toBigInt(by(cr))]
1073- let gg = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
1074- let bL = dS(dT)
1075- let bK = (bL - fraction(toBigInt(gf), bL, gg))
1076- let gh = if ((ff == cq))
1077- then 0
1078- else if ((ff == cr))
1079- then 1
1080- else throw("invalid out asset id")
1081- let gi = ex(dT, gh, bK)
1082- let gj = (dT[gh] - gi)
1083- let gk = max([0, toInt((gj - f))])
1084- let gl = cg(gk, aG)
1085- let fo = gl._1
1086- let cj = gl._2
1087- $Tuple2(nil, $Tuple2(fo, cj))
1229+@Callable(dX)
1230+func getOneTknV2 (fK,fL) = {
1231+ let gM = {
1232+ let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1233+ if ($isInstanceOf(fT, "Boolean"))
1234+ then fT
1235+ else throw(($getType(fT) + " couldn't be cast to Boolean"))
1236+ }
1237+ let gZ = if (if (aR())
1238+ then true
1239+ else (bg == s))
1240+ then true
1241+ else gM
1242+ let gO = [if (if (!(gZ))
1243+ then true
1244+ else gn(dX))
1245+ then true
1246+ else aM("get operation is blocked by admin"), if ((size(dX.payments) == 1))
1247+ then true
1248+ else aM("exactly 1 payment are expected")]
1249+ if ((gO == gO))
1250+ then {
1251+ let ha = fJ(fK, fL, dX.payments, dX.caller, dX.originCaller, dX.transactionId)
1252+ let cQ = ha._1
1253+ let fV = ha._2
1254+ $Tuple2(cQ, fV)
1255+ }
1256+ else throw("Strict value is not equal to itself.")
10881257 }
10891258
10901259
10911260
1092-@Callable(dM)
1093-func getOneTknV2WithBonusREADONLY (ff,gf) = {
1094- let aT = aL()
1095- let cq = aT[u]
1096- let cr = aT[v]
1097- let cp = aT[t]
1098- let cw = by(cq)
1099- let cy = by(cr)
1100- let gm = {
1101- let aF = invoke(this, "getOneTknV2READONLY", [ff, gf], nil)
1102- if ($isInstanceOf(aF, "(Int, Int)"))
1103- then aF
1104- else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
1105- }
1106- let fo = gm._1
1107- let cj = gm._2
1108- let de = ck("", cp, gf, this)
1109- let cG = de._1
1110- let cH = de._2
1111- let gn = (cG + cH)
1112- let fd = if ((gn == 0))
1113- then if ((fo == 0))
1114- then 0
1115- else throw("bonus calculation error")
1116- else fraction((fo - gn), a, gn)
1117- $Tuple2(nil, $Tuple3(fo, cj, fd))
1261+@Callable(dX)
1262+func refreshDLp () = {
1263+ let hb = valueOrElse(getInteger(an), 0)
1264+ let hc = if (((height - hb) >= aq))
1265+ then unit
1266+ else aM(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
1267+ if ((hc == hc))
1268+ then {
1269+ let fc = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aO("invalid dLp"))
1270+ let hd = eR(0, 0, 0)
1271+ let he = hd._1
1272+ let eI = hd._2
1273+ let eU = if ((fc != eI))
1274+ then he
1275+ else aM("nothing to refresh")
1276+ $Tuple2(eU, toString(eI))
1277+ }
1278+ else throw("Strict value is not equal to itself.")
11181279 }
11191280
11201281
11211282
1122-@Callable(dM)
1123-func getNoLess (go,gp) = {
1124- let de = dL(dM)
1125- let cG = de._1
1126- let cH = de._2
1127- let cS = de._3
1128- let cm = de._4
1129- let cI = de._5
1130- if ((go > cG))
1131- then throw(((("Failed: " + toString(cG)) + " < ") + toString(go)))
1132- else if ((gp > cH))
1133- then throw(((("Failed: " + toString(cH)) + " < ") + toString(gp)))
1283+@Callable(dX)
1284+func getOneTknV2READONLY (fK,hf) = {
1285+ let bc = aU()
1286+ let cy = bc[w]
1287+ let cz = bc[x]
1288+ let cx = bc[v]
1289+ let dH = [toBigInt(bH(cy)), toBigInt(bH(cz))]
1290+ let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cx)), "invalid lp asset").quantity)
1291+ let bU = dG(dH)
1292+ let bT = (bU - fraction(toBigInt(hf), bU, eH))
1293+ let hg = if ((fK == cy))
1294+ then 0
1295+ else if ((fK == cz))
1296+ then 1
1297+ else throw("invalid out asset id")
1298+ let hh = eu(dH, hg, bT)
1299+ let hi = (dH[hg] - hh)
1300+ let hj = max([0, toInt((hi - f))])
1301+ let hk = cp(hj)
1302+ let fU = hk._1
1303+ let cr = hk._2
1304+ $Tuple2(nil, $Tuple2(fU, cr))
1305+ }
1306+
1307+
1308+
1309+@Callable(dX)
1310+func getOneTknV2WithBonusREADONLY (fK,hf) = {
1311+ let bc = aU()
1312+ let cy = bc[w]
1313+ let cz = bc[x]
1314+ let cx = bc[v]
1315+ let cE = bH(cy)
1316+ let cG = bH(cz)
1317+ let hl = {
1318+ let fT = invoke(this, "getOneTknV2READONLY", [fK, hf], nil)
1319+ if ($isInstanceOf(fT, "(Int, Int)"))
1320+ then fT
1321+ else throw(($getType(fT) + " couldn't be cast to (Int, Int)"))
1322+ }
1323+ let fU = hl._1
1324+ let cr = hl._2
1325+ let dm = cs("", cx, hf, this)
1326+ let cO = dm._1
1327+ let cP = dm._2
1328+ let hm = (cO + cP)
1329+ let fI = if ((hm == 0))
1330+ then if ((fU == 0))
1331+ then 0
1332+ else throw("bonus calculation error")
1333+ else fraction((fU - hm), a, hm)
1334+ $Tuple2(nil, $Tuple3(fU, cr, fI))
1335+ }
1336+
1337+
1338+
1339+@Callable(dX)
1340+func getNoLess (hn,ho) = {
1341+ let dm = fh(dX)
1342+ let cO = dm._1
1343+ let cP = dm._2
1344+ let da = dm._3
1345+ let cu = dm._4
1346+ let cQ = dm._5
1347+ if ((hn > cO))
1348+ then throw(((("Failed: " + toString(cO)) + " < ") + toString(hn)))
1349+ else if ((ho > cP))
1350+ then throw(((("Failed: " + toString(cP)) + " < ") + toString(ho)))
11341351 else {
1135- let gq = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1136- if ((gq == gq))
1137- then cI
1352+ let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(da))
1353+ let hp = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1354+ if ((hp == hp))
1355+ then {
1356+ let hq = eR(-(cO), -(cP), 0)
1357+ let gi = hq._1
1358+ let eI = hq._2
1359+ let gj = eV(eQ, eI)
1360+ if ((gj == gj))
1361+ then (cQ ++ gi)
1362+ else throw("Strict value is not equal to itself.")
1363+ }
11381364 else throw("Strict value is not equal to itself.")
11391365 }
11401366 }
11411367
11421368
11431369
1144-@Callable(dM)
1145-func unstakeAndGet (ch) = {
1146- let gr = if ((size(dM.payments) != 0))
1370+@Callable(dX)
1371+func unstakeAndGet (cq) = {
1372+ let hr = if ((size(dX.payments) != 0))
11471373 then throw("No pmnts expd")
11481374 else true
1149- if ((gr == gr))
1375+ if ((hr == hr))
11501376 then {
1151- let bX = aL()
1152- let gs = bd()
1153- let fO = fromBase58String(bX[t])
1154- let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1155- let gu = invoke(gt, "unstake", [toBase58String(fO), ch], nil)
1156- if ((gu == gu))
1377+ let cg = aU()
1378+ let hs = bm()
1379+ let gC = fromBase58String(cg[v])
1380+ let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
1381+ let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1382+ let hu = invoke(ht, "unstake", [toBase58String(gC), cq], nil)
1383+ if ((hu == hu))
11571384 then {
1158- let de = ck(toBase58String(dM.transactionId), toBase58String(fO), ch, dM.caller)
1159- let cu = parseIntValue(de._9)
1160- let cI = de._10
1161- let gv = if (if (aI())
1385+ let dm = cs(toBase58String(dX.transactionId), toBase58String(gC), cq, dX.caller)
1386+ let cO = dm._1
1387+ let cP = dm._2
1388+ let cC = parseIntValue(dm._9)
1389+ let cQ = dm._10
1390+ let hv = if (if (aR())
11621391 then true
1163- else (cu == q))
1164- then throw(("Blocked: " + toString(cu)))
1392+ else (cC == s))
1393+ then throw(("Blocked: " + toString(cC)))
11651394 else true
1166- if ((gv == gv))
1395+ if ((hv == hv))
11671396 then {
1168- let gw = invoke(aD, "burn", [ch], [AttachedPayment(fO, ch)])
1169- if ((gw == gw))
1170- then cI
1397+ let hw = invoke(aP, "burn", [cq], [AttachedPayment(gC, cq)])
1398+ if ((hw == hw))
1399+ then {
1400+ let hx = eR(-(cO), -(cP), 0)
1401+ let gi = hx._1
1402+ let eI = hx._2
1403+ let gj = eV(eQ, eI)
1404+ if ((gj == gj))
1405+ then (cQ ++ gi)
1406+ else throw("Strict value is not equal to itself.")
1407+ }
11711408 else throw("Strict value is not equal to itself.")
11721409 }
11731410 else throw("Strict value is not equal to itself.")
11791416
11801417
11811418
1182-@Callable(dM)
1183-func unstakeAndGetNoLess (gx,gy,gp) = {
1184- let gd = if (aI())
1419+@Callable(dX)
1420+func unstakeAndGetNoLess (hy,hz,ho) = {
1421+ let gZ = if (aR())
11851422 then true
1186- else (aX == q)
1187- let fX = [if (!(gd))
1423+ else (bg == s)
1424+ let gO = [if (!(gZ))
11881425 then true
1189- else throw("get operation is blocked by admin"), if ((size(dM.payments) == 0))
1426+ else throw("get operation is blocked by admin"), if ((size(dX.payments) == 0))
11901427 then true
11911428 else throw("no payments are expected")]
1192- if ((fX == fX))
1429+ if ((gO == gO))
11931430 then {
1194- let gu = invoke(bf, "unstake", [toBase58String(aY), gx], nil)
1195- if ((gu == gu))
1431+ let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1432+ let hu = invoke(bo, "unstake", [toBase58String(bh), hy], nil)
1433+ if ((hu == hu))
11961434 then {
1197- let gz = ck(toBase58String(dM.transactionId), toBase58String(aY), gx, dM.caller)
1198- let cG = gz._1
1199- let cH = gz._2
1200- let cI = gz._10
1201- let gA = [if ((cG >= gy))
1435+ let hA = cs(toBase58String(dX.transactionId), toBase58String(bh), hy, dX.caller)
1436+ let cO = hA._1
1437+ let cP = hA._2
1438+ let cQ = hA._10
1439+ let hB = [if ((cO >= hz))
12021440 then true
1203- else throw(makeString(["amount asset amount to receive is less than ", toString(gy)], "")), if ((cH >= gp))
1441+ else throw(makeString(["amount asset amount to receive is less than ", toString(hz)], "")), if ((cP >= ho))
12041442 then true
1205- else throw(makeString(["price asset amount to receive is less than ", toString(gp)], ""))]
1206- if ((gA == gA))
1443+ else throw(makeString(["price asset amount to receive is less than ", toString(ho)], ""))]
1444+ if ((hB == hB))
12071445 then {
1208- let gq = invoke(aD, "burn", [gx], [AttachedPayment(aY, gx)])
1209- if ((gq == gq))
1210- then cI
1446+ let hp = invoke(aP, "burn", [hy], [AttachedPayment(bh, hy)])
1447+ if ((hp == hp))
1448+ then {
1449+ let hC = eR(-(cO), -(cP), 0)
1450+ let gi = hC._1
1451+ let eI = hC._2
1452+ let gj = eV(eQ, eI)
1453+ if ((gj == gj))
1454+ then (cQ ++ gi)
1455+ else throw("Strict value is not equal to itself.")
1456+ }
12111457 else throw("Strict value is not equal to itself.")
12121458 }
12131459 else throw("Strict value is not equal to itself.")
12191465
12201466
12211467
1222-@Callable(dM)
1223-func unstakeAndGetOneTknV2 (gx,ff,fg) = {
1224- let fV = {
1225- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1226- if ($isInstanceOf(aF, "Boolean"))
1227- then aF
1228- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1468+@Callable(dX)
1469+func unstakeAndGetOneTknV2 (hy,fK,fL) = {
1470+ let gM = {
1471+ let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1472+ if ($isInstanceOf(fT, "Boolean"))
1473+ then fT
1474+ else throw(($getType(fT) + " couldn't be cast to Boolean"))
12291475 }
1230- let gd = if (if (aI())
1476+ let gZ = if (if (aR())
12311477 then true
1232- else (aX == q))
1478+ else (bg == s))
12331479 then true
1234- else fV
1235- let fX = [if (if (!(gd))
1480+ else gM
1481+ let gO = [if (if (!(gZ))
12361482 then true
1237- else fB(dM))
1483+ else gn(dX))
12381484 then true
1239- else aB("get operation is blocked by admin"), if ((size(dM.payments) == 0))
1485+ else aM("get operation is blocked by admin"), if ((size(dX.payments) == 0))
12401486 then true
1241- else aB("no payments are expected")]
1242- if ((fX == fX))
1487+ else aM("no payments are expected")]
1488+ if ((gO == gO))
12431489 then {
1244- let bX = aL()
1245- let gs = bd()
1246- let fO = fromBase58String(bX[t])
1247- let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1248- let gu = invoke(gt, "unstake", [toBase58String(fO), gx], nil)
1249- if ((gu == gu))
1490+ let cg = aU()
1491+ let hs = bm()
1492+ let gC = fromBase58String(cg[v])
1493+ let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
1494+ let hu = invoke(ht, "unstake", [toBase58String(gC), hy], nil)
1495+ if ((hu == hu))
12501496 then {
1251- let gB = fe(ff, fg, [AttachedPayment(fO, gx)], dM.caller, dM.originCaller, dM.transactionId)
1252- let cI = gB._1
1253- let fp = gB._2
1254- $Tuple2(cI, fp)
1497+ let hD = fJ(fK, fL, [AttachedPayment(gC, hy)], dX.caller, dX.originCaller, dX.transactionId)
1498+ let cQ = hD._1
1499+ let fV = hD._2
1500+ $Tuple2(cQ, fV)
12551501 }
12561502 else throw("Strict value is not equal to itself.")
12571503 }
12601506
12611507
12621508
1263-@Callable(dM)
1264-func putOneTknV2WithBonusREADONLY (gC,gD) = {
1265- let aT = aL()
1266- let cq = aT[u]
1267- let cr = aT[v]
1268- let cp = aT[t]
1269- let gE = eH(gC, gD, "", "", true)
1270- let eY = gE._1
1271- let cI = gE._2
1272- let cj = gE._3
1273- let fd = gE._4
1274- $Tuple2(nil, $Tuple3(eY, cj, fd))
1509+@Callable(dX)
1510+func putOneTknV2WithBonusREADONLY (hE,hF) = {
1511+ let bc = aU()
1512+ let cy = bc[w]
1513+ let cz = bc[x]
1514+ let cx = bc[v]
1515+ let hG = fn(hE, hF, "", "", true)
1516+ let fD = hG._1
1517+ let cQ = hG._2
1518+ let cr = hG._3
1519+ let fI = hG._4
1520+ $Tuple2(nil, $Tuple3(fD, cr, fI))
12751521 }
12761522
12771523
12781524
1279-@Callable(dM)
1280-func putOneTknV2WithoutTakeFeeREADONLY (gC,gD) = {
1281- let aT = aL()
1282- let cq = aT[u]
1283- let cr = aT[v]
1284- let cp = aT[t]
1285- let gF = eH(gC, gD, "", "", false)
1286- let eY = gF._1
1287- let cI = gF._2
1288- let cj = gF._3
1289- let fd = gF._4
1290- $Tuple2(nil, $Tuple3(eY, cj, fd))
1525+@Callable(dX)
1526+func putOneTknV2WithoutTakeFeeREADONLY (hE,hF) = {
1527+ let bc = aU()
1528+ let cy = bc[w]
1529+ let cz = bc[x]
1530+ let cx = bc[v]
1531+ let hH = fn(hE, hF, "", "", false)
1532+ let fD = hH._1
1533+ let cQ = hH._2
1534+ let cr = hH._3
1535+ let fI = hH._4
1536+ $Tuple2(nil, $Tuple3(fD, cr, fI))
12911537 }
12921538
12931539
12941540
1295-@Callable(dM)
1296-func activate (gG,gH) = if ((toString(dM.caller) != toString(aD)))
1541+@Callable(dX)
1542+func activate (hI,hJ) = if ((toString(dX.caller) != toString(aP)))
12971543 then throw("denied")
1298- else $Tuple2([StringEntry(ac(), gG), StringEntry(ad(), gH)], "success")
1544+ else $Tuple2([StringEntry(ag(), hI), StringEntry(ah(), hJ)], "success")
12991545
13001546
13011547
1302-@Callable(dM)
1303-func setS (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1304- then fA
1305- else [StringEntry(gI, gv)]
1548+@Callable(dX)
1549+func setS (hK,hv) = if ((toString(dX.caller) != aI(this, aj())))
1550+ then gm
1551+ else [StringEntry(hK, hv)]
13061552
13071553
13081554
1309-@Callable(dM)
1310-func setI (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1311- then fA
1312- else [IntegerEntry(gI, gv)]
1555+@Callable(dX)
1556+func setI (hK,hv) = if ((toString(dX.caller) != aI(this, aj())))
1557+ then gm
1558+ else [IntegerEntry(hK, hv)]
13131559
13141560
13151561
1316-@Callable(dM)
1317-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aL())
1562+@Callable(dX)
1563+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
13181564
13191565
13201566
1321-@Callable(dM)
1322-func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
1567+@Callable(dX)
1568+func getAccBalanceWrapperREADONLY (bI) = $Tuple2(nil, bH(bI))
13231569
13241570
13251571
1326-@Callable(dM)
1327-func calcPricesWrapperREADONLY (bR,bS,bW) = {
1328- let gJ = bV(bR, bS, bW)
1329- $Tuple2(nil, [toString(gJ[0]), toString(gJ[1]), toString(gJ[2])])
1572+@Callable(dX)
1573+func calcPricesWrapperREADONLY (ca,cb,cf) = {
1574+ let hL = ce(ca, cb, cf)
1575+ $Tuple2(nil, [toString(hL[0]), toString(hL[1]), toString(hL[2])])
13301576 }
13311577
13321578
13331579
1334-@Callable(dM)
1335-func fromX18WrapperREADONLY (J,gK) = $Tuple2(nil, I(parseBigIntValue(J), gK))
1580+@Callable(dX)
1581+func fromX18WrapperREADONLY (L,hM) = $Tuple2(nil, K(parseBigIntValue(L), hM))
13361582
13371583
13381584
1339-@Callable(dM)
1340-func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
1585+@Callable(dX)
1586+func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
13411587
13421588
13431589
1344-@Callable(dM)
1345-func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
1590+@Callable(dX)
1591+func calcPriceBigIntWrapperREADONLY (bK,bL) = $Tuple2(nil, toString(bJ(parseBigIntValue(bK), parseBigIntValue(bL))))
13461592
13471593
13481594
1349-@Callable(dM)
1350-func estimatePutOperationWrapperREADONLY (cl,bG,cK,cL,cM,cN,gL,cO,cP) = $Tuple2(nil, cJ(cl, bG, cK, cL, cM, cN, gL, cO, cP, true, false, 0, ""))
1595+@Callable(dX)
1596+func estimatePutOperationWrapperREADONLY (ct,bP,cS,cT,cU,cV,hN,cW,cX) = $Tuple2(nil, cR(ct, bP, cS, cT, cU, cV, hN, cW, cX, true, false, 0, ""))
13511597
13521598
13531599
1354-@Callable(dM)
1355-func estimateGetOperationWrapperREADONLY (cl,gM,cn,gL) = {
1356- let de = ck(cl, gM, cn, addressFromStringValue(gL))
1357- $Tuple2(nil, $Tuple10(de._1, de._2, de._3, de._4, de._5, de._6, de._7, toString(de._8), de._9, de._10))
1600+@Callable(dX)
1601+func estimateGetOperationWrapperREADONLY (ct,hO,cv,hN) = {
1602+ let dm = cs(ct, hO, cv, addressFromStringValue(hN))
1603+ $Tuple2(nil, $Tuple10(dm._1, dm._2, dm._3, dm._4, dm._5, dm._6, dm._7, toString(dm._8), dm._9, dm._10))
13581604 }
13591605
13601606
1361-@Verifier(gN)
1362-func gO () = {
1363- let gP = {
1364- let av = fy()
1365- if ($isInstanceOf(av, "ByteVector"))
1607+
1608+@Callable(dX)
1609+func getFeeREADONLY () = $Tuple2(nil, al)
1610+
1611+
1612+@Verifier(hP)
1613+func hQ () = {
1614+ let hR = {
1615+ let aG = gk()
1616+ if ($isInstanceOf(aG, "ByteVector"))
13661617 then {
1367- let fC = av
1368- fC
1618+ let go = aG
1619+ go
13691620 }
1370- else if ($isInstanceOf(av, "Unit"))
1371- then gN.senderPublicKey
1621+ else if ($isInstanceOf(aG, "Unit"))
1622+ then hP.senderPublicKey
13721623 else throw("Match error")
13731624 }
1374- let av = gN
1375- if ($isInstanceOf(av, "Order"))
1625+ let aG = hP
1626+ if ($isInstanceOf(aG, "Order"))
13761627 then {
1377- let dz = av
1378- let gQ = aJ()
1379- let gR = dy(dz)
1380- let gS = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1381- let gT = sigVerify(dz.bodyBytes, dz.proofs[1], gQ)
1382- if (if (if (gR)
1383- then gS
1628+ let eY = aG
1629+ let hS = aS()
1630+ let hT = eX(eY)
1631+ let hU = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
1632+ let hV = sigVerify(eY.bodyBytes, eY.proofs[1], hS)
1633+ if (if (if (hT)
1634+ then hU
13841635 else false)
1385- then gT
1636+ then hV
13861637 else false)
13871638 then true
1388- else aq(gR, gS, gT)
1639+ else aB(hT, hU, hV)
13891640 }
1390- else if ($isInstanceOf(av, "SetScriptTransaction"))
1641+ else if ($isInstanceOf(aG, "SetScriptTransaction"))
13911642 then {
1392- let dZ = av
1393- let gU = blake2b256(value(dZ.script))
1394- let gV = fromBase64String(value(getString(aD, ao())))
1395- let gW = scriptHash(this)
1396- if (if ((gV == gU))
1397- then (gW != gU)
1643+ let dK = aG
1644+ let hW = blake2b256(value(dK.script))
1645+ let hX = fromBase64String(value(getString(aP, az())))
1646+ let hY = scriptHash(this)
1647+ if (if ((hX == hW))
1648+ then (hY != hW)
13981649 else false)
13991650 then true
1400- else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
1651+ else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
14011652 }
1402- else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
1653+ else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
14031654 }
14041655
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
18-let h = toBigInt((a - ((a * 1) / a)))
18+let h = toBigInt(3)
1919
20-let i = "WAVES"
20+let i = toBigInt(4)
2121
22-let j = "100"
22+let j = toBigInt((a - ((a * 1) / a)))
2323
24-let k = "1"
24+let k = "WAVES"
2525
26-let l = "__"
26+let l = "100"
2727
28-let m = ""
28+let m = "1"
2929
30-let n = 1
30+let n = "__"
3131
32-let o = 2
32+let o = ""
3333
34-let p = 3
34+let p = 1
3535
36-let q = 4
36+let q = 2
3737
38-let r = 1
38+let r = 3
3939
40-let s = 2
40+let s = 4
4141
42-let t = 3
42+let t = 1
4343
44-let u = 4
44+let u = 2
4545
46-let v = 5
46+let v = 3
4747
48-let w = 6
48+let w = 4
4949
50-let x = 7
50+let x = 5
5151
52-let y = 8
52+let y = 6
5353
54-let z = 9
54+let z = 7
5555
56-let A = 1
56+let A = 8
5757
58-let B = 6
58+let B = 9
5959
60-let C = 7
60+let C = 1
6161
62-let D = 10
62+let D = 6
6363
64-let E = fraction(10, a, 10000)
64+let E = 7
6565
66-func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
66+let F = 10
67+
68+let G = fraction(10, a, 10000)
69+
70+func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
6771
6872
69-func I (J,K) = toInt(fraction(J, toBigInt(K), c))
73+func K (L,M) = toInt(fraction(L, toBigInt(M), c))
7074
7175
72-func L (M,N,O) = fraction(M, N, O)
76+func N (L,M,O) = toInt(fraction(L, toBigInt(M), c, O))
7377
7478
75-func P (J) = if ((d > J))
76- then -(J)
77- else J
79+func P (Q,R,S) = fraction(Q, R, S)
7880
7981
80-func Q (J) = if ((d > J))
81- then -(J)
82- else J
82+func T (L) = if ((d > L))
83+ then -(L)
84+ else L
8385
8486
85-func R () = "%s__factoryContract"
87+func U (L) = if ((d > L))
88+ then -(L)
89+ else L
8690
8791
88-func S () = "%s__managerPublicKey"
92+func V () = "%s__factoryContract"
8993
9094
91-func T () = "%s__pendingManagerPublicKey"
95+func W () = "%s__managerPublicKey"
9296
9397
94-func U () = "%s%s__price__last"
98+func X () = "%s__pendingManagerPublicKey"
9599
96100
97-func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
101+func Y () = "%s%s__price__last"
98102
99103
100-func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
104+func Z (aa,ab) = makeString(["%s%s%d%d__price__history", toString(aa), toString(ab)], n)
101105
102106
103-func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
107+func ac (ad,ae) = ((("%s%s%s__P__" + ad) + "__") + ae)
104108
105109
106-func ac () = "%s__amountAsset"
110+func af (ad,ae) = ((("%s%s%s__G__" + ad) + "__") + ae)
107111
108112
109-func ad () = "%s__priceAsset"
113+func ag () = "%s__amountAsset"
110114
111115
112-func ae () = "%s__amp"
116+func ah () = "%s__priceAsset"
113117
114118
115-func af () = "%s__addonAddr"
119+func ai () = "%s__amp"
116120
117121
118-func ag () = "%s__factoryConfig"
122+func aj () = "%s__addonAddr"
119123
120124
121-func ah () = "%s%s__matcher__publicKey"
125+let ak = "%s__fee"
126+
127+let al = valueOrElse(getInteger(this, ak), G)
128+
129+let am = makeString(["%s", "dLp"], n)
130+
131+let an = makeString(["%s", "dLpRefreshedHeight"], n)
132+
133+let ao = makeString(["%s", "refreshDLpDelay"], n)
134+
135+let ap = 1
136+
137+let aq = valueOrElse(getInteger(this, ao), ap)
138+
139+func ar () = "%s__factoryConfig"
122140
123141
124-func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
142+func as () = "%s%s__matcher__publicKey"
125143
126144
127-func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
145+func at (au,av) = (((("%d%d%s__" + au) + "__") + av) + "__config")
128146
129147
130-func an () = "%s__shutdown"
148+func aw (ax) = ("%s%s%s__mappings__baseAsset2internalId__" + ax)
131149
132150
133-func ao () = "%s__allowedLpStableScriptHash"
151+func ay () = "%s__shutdown"
134152
135153
136-func ap () = "%s__feeCollectorAddress"
154+func az () = "%s__allowedLpStableScriptHash"
137155
138156
139-func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
157+func aA () = "%s__feeCollectorAddress"
140158
141159
142-func au (J) = {
143- let av = J
144- if ($isInstanceOf(av, "String"))
160+func aB (aC,aD,aE) = throw(((((("Failed: ordValid=" + toString(aC)) + " sndrValid=") + toString(aD)) + " mtchrValid=") + toString(aE)))
161+
162+
163+func aF (L) = {
164+ let aG = L
165+ if ($isInstanceOf(aG, "String"))
145166 then {
146- let aw = av
147- aw
167+ let aH = aG
168+ aH
148169 }
149170 else throw("fail cast to String")
150171 }
151172
152173
153-func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
174+func aI (aJ,aK) = valueOrErrorMessage(getString(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
154175
155176
156-func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
177+func aL (aJ,aK) = valueOrErrorMessage(getInteger(aJ, aK), makeString(["mandatory ", toString(aJ), ".", aK, " not defined"], ""))
157178
158179
159-func aB (aC) = throw(makeString(["lp_stable.ride:", aC], " "))
180+func aM (aN) = throw(makeString(["lp_stable.ride:", aN], " "))
160181
161182
162-let aD = addressFromStringValue(ax(this, R()))
163-
164-let aE = {
165- let aF = invoke(aD, "getInFeeREADONLY", [toString(this)], nil)
166- if ($isInstanceOf(aF, "Int"))
167- then aF
168- else throw(($getType(aF) + " couldn't be cast to Int"))
169- }
170-
171-let aG = {
172- let aF = invoke(aD, "getOutFeeREADONLY", [toString(this)], nil)
173- if ($isInstanceOf(aF, "Int"))
174- then aF
175- else throw(($getType(aF) + " couldn't be cast to Int"))
176- }
177-
178-let aH = ax(this, ae())
179-
180-func aI () = valueOrElse(getBoolean(aD, an()), false)
183+func aO (aN) = makeString(["lp_stable.ride:", aN], " ")
181184
182185
183-func aJ () = fromBase58String(ax(aD, ah()))
186+let aP = addressFromStringValue(aI(this, V()))
187+
188+let aQ = aI(this, ai())
189+
190+func aR () = valueOrElse(getBoolean(aP, ay()), false)
184191
185192
186-let aK = addressFromStringValue(ax(aD, ap()))
193+func aS () = fromBase58String(aI(aP, as()))
187194
188-func aL () = {
189- let aM = ax(this, ac())
190- let aN = ax(this, ad())
191- let aO = aA(aD, al(aN))
192- let aj = aA(aD, al(aM))
193- split(ax(aD, ai(toString(aj), toString(aO))), l)
195+
196+let aT = addressFromStringValue(aI(aP, aA()))
197+
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)
194204 }
195205
196206
197-func aP (aQ) = if ((aQ == i))
207+func aY (aZ) = if ((aZ == k))
198208 then unit
199- else fromBase58String(aQ)
209+ else fromBase58String(aZ)
200210
201211
202-func aR (aQ) = if ((aQ == unit))
203- then i
204- else toBase58String(value(aQ))
212+func ba (aZ) = if ((aZ == unit))
213+ then k
214+ else toBase58String(value(aZ))
205215
206216
207-func aS (aT) = $Tuple7(addressFromStringValue(aT[r]), parseIntValue(aT[s]), fromBase58String(aT[t]), aP(aT[u]), aP(aT[v]), parseIntValue(aT[w]), parseIntValue(aT[x]))
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]))
208218
209219
210-let aU = aS(aL())
220+let bd = bb(aU())
211221
212-let aV = aU
222+let be = bd
213223
214-let aW = aV._1
224+let bf = be._1
215225
216-let aX = aV._2
226+let bg = be._2
217227
218-let aY = aV._3
228+let bh = be._3
219229
220-let aZ = aV._4
230+let bi = be._4
221231
222-let ba = aV._5
232+let bj = be._5
223233
224-let bb = aV._6
234+let bk = be._6
225235
226-let bc = aV._7
236+let bl = be._7
227237
228-func bd () = split(ax(aD, ag()), l)
238+func bm () = split(aI(aP, ar()), n)
229239
230240
231-let be = bd()
241+let bn = bm()
232242
233-let bf = valueOrErrorMessage(addressFromString(be[A]), "Invalid staking contract address")
243+let bo = valueOrErrorMessage(addressFromString(bn[C]), "Invalid staking contract address")
234244
235-let bg = valueOrErrorMessage(addressFromString(be[C]), "Invalid slipage contract address")
245+let bp = valueOrErrorMessage(addressFromString(bn[E]), "Invalid slipage contract address")
236246
237-let bh = valueOrErrorMessage(addressFromString(be[D]), "Invalid gwx contract address")
247+let bq = valueOrErrorMessage(addressFromString(bn[F]), "Invalid gwx contract address")
238248
239-let bi = valueOrErrorMessage(addressFromString(be[B]), "Invalid gwx contract address")
249+let br = valueOrErrorMessage(addressFromString(bn[D]), "Invalid gwx contract address")
240250
241-func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], l)
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)
242252
243253
244-func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], l)
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)
245255
246256
247-func by (bz) = if ((bz == "WAVES"))
257+func bH (bI) = if ((bI == "WAVES"))
248258 then wavesBalance(this).available
249- else assetBalance(this, fromBase58String(bz))
259+ else assetBalance(this, fromBase58String(bI))
250260
251261
252-func bA (bB,bC) = fraction(bB, c, bC)
262+func bJ (bK,bL) = fraction(bK, c, bL)
253263
254264
255-func bD (bE,bF,bG) = {
256- let bH = fraction((bE - bF), b, bF)
257- let bI = ((bG - P(bH)) > d)
258- if (!(bI))
259- then throw(("Big slpg: " + toString(bH)))
260- else $Tuple2(bI, min([bE, bF]))
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]))
261271 }
262272
263273
264-func bJ (bK,bL,bM) = {
265- let bH = fraction(bL, b, bK)
266- let bN = (bM > bH)
267- if (if (bN)
274+func bS (bT,bU,bV) = {
275+ let bQ = fraction(bU, b, bT)
276+ let bW = (bV > bQ)
277+ if (if (bW)
268278 then true
269- else (bL > bK))
270- then throw(((((((toString(bL) + " ") + toString(bK)) + " ") + toString(bH)) + " ") + toString(bM)))
271- else bN
279+ else (bU > bT))
280+ then throw(((((((toString(bU) + " ") + toString(bT)) + " ") + toString(bQ)) + " ") + toString(bV)))
281+ else bW
272282 }
273283
274284
275-func bO (bP,bQ,bR,bS) = {
276- let bT = F(bR, bP)
277- let bU = F(bS, bQ)
278- bA(bU, bT)
285+func bX (bY,bZ,ca,cb) = {
286+ let cc = H(ca, bY)
287+ let cd = H(cb, bZ)
288+ bJ(cd, cc)
279289 }
280290
281291
282-func bV (bR,bS,bW) = {
283- let bX = aL()
284- let bY = parseIntValue(bX[w])
285- let bZ = parseIntValue(bX[x])
286- let ca = bO(bY, bZ, bR, bS)
287- let bC = F(bR, bY)
288- let bB = F(bS, bZ)
289- let cb = F(bW, a)
290- let cc = bA(bC, cb)
291- let cd = bA(bB, cb)
292-[ca, cc, cd]
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]
293303 }
294304
295305
296-func ce (bR,bS,bW) = {
297- let cf = bV(bR, bS, bW)
298-[I(cf[0], a), I(cf[1], a), I(cf[2], a)]
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)]
299309 }
300310
301311
302-func cg (ch,ci) = {
303- let cj = if ((ci == 0))
304- then 0
305- else fraction(ch, ci, a)
306- $Tuple2((ch - cj), cj)
312+func cp (cq) = {
313+ let cr = fraction(cq, al, a)
314+ $Tuple2((cq - cr), cr)
307315 }
308316
309317
310-func ck (cl,cm,cn,co) = {
311- let bX = aL()
312- let cp = bX[t]
313- let cq = bX[u]
314- let cr = bX[v]
315- let cs = parseIntValue(bX[w])
316- let ct = parseIntValue(bX[x])
317- let cu = bX[s]
318- let cv = valueOrErrorMessage(assetInfo(fromBase58String(cp)), "Wrong LP id").quantity
319- if ((cp != cm))
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))
320328 then throw("Wrong pmt asset")
321329 else {
322- let cw = by(cq)
323- let cx = F(cw, cs)
324- let cy = by(cr)
325- let cz = F(cy, ct)
326- let cA = bA(cz, cx)
327- let cB = I(cA, a)
328- let cC = F(cn, a)
329- let cD = F(cv, a)
330- let cE = fraction(cx, cC, cD)
331- let cF = fraction(cz, cC, cD)
332- let cG = I(cE, cs)
333- let cH = I(cF, ct)
334- let cI = if ((cl == ""))
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 == ""))
335343 then nil
336- else [ScriptTransfer(co, cG, if ((cq == "WAVES"))
344+ else [ScriptTransfer(cw, cO, if ((cy == "WAVES"))
337345 then unit
338- else fromBase58String(cq)), ScriptTransfer(co, cH, if ((cr == "WAVES"))
346+ else fromBase58String(cy)), ScriptTransfer(cw, cP, if ((cz == "WAVES"))
339347 then unit
340- else fromBase58String(cr)), StringEntry(ab(toString(co), cl), bu(cG, cH, cn, cB, height, lastBlock.timestamp)), IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB)]
341- $Tuple10(cG, cH, cq, cr, cw, cy, cv, cA, cu, cI)
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)
342350 }
343351 }
344352
345353
346-func cJ (cl,bG,cK,cL,cM,cN,co,cO,cP,cQ,cR,cS,cT) = {
347- let bX = aL()
348- let cp = fromBase58String(bX[t])
349- let cU = bX[u]
350- let cV = bX[v]
351- let cW = bX[y]
352- let cX = bX[z]
353- let cY = parseIntValue(bX[w])
354- let cZ = parseIntValue(bX[x])
355- let cu = bX[s]
356- let da = valueOrErrorMessage(assetInfo(cp), "Wr lp as").quantity
357- let cw = if (cO)
358- then by(cU)
359- else if (if (cQ)
360- then (cT == cU)
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)
361369 else false)
362- then (by(cU) - cS)
363- else if (cQ)
364- then by(cU)
365- else (by(cU) - cK)
366- let cy = if (cO)
367- then by(cV)
368- else if (if (cQ)
369- then (cT == cV)
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)
370378 else false)
371- then (by(cV) - cS)
372- else if (cQ)
373- then by(cV)
374- else (by(cV) - cM)
375- let db = F(cK, cY)
376- let dc = F(cM, cZ)
377- let dd = bA(dc, db)
378- let cx = F(cw, cY)
379- let cz = F(cy, cZ)
380- let de = if ((da == 0))
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))
381389 then {
382- let cA = d
383- let df = d
384- let cb = pow((db * dc), 0, toBigInt(5), 1, 0, DOWN)
385- $Tuple5(I(cb, a), I(db, cY), I(dc, cZ), bA((cz + dc), (cx + db)), df)
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)
386394 }
387395 else {
388- let cA = bA(cz, cx)
389- let dg = fraction(P((cA - dd)), c, cA)
390- let df = F(bG, a)
391- if (if (if (cR)
392- then (cA != d)
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)
393401 else false)
394- then (dg > df)
402+ then (do > dn)
395403 else false)
396- then throw(((("Price slippage " + toString(dg)) + " > ") + toString(df)))
404+ then throw(((("Price slippage " + toString(do)) + " > ") + toString(dn)))
397405 else {
398- let dh = F(da, a)
399- let di = fraction(db, cA, c)
400- let dj = fraction(dc, c, cA)
401- let dk = if ((di > dc))
402- then $Tuple2(dj, dc)
403- else $Tuple2(db, di)
404- let dl = dk._1
405- let dm = dk._2
406- let cb = fraction(dh, dm, cz)
407- $Tuple5(I(cb, a), I(dl, cY), I(dm, cZ), cA, df)
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)
408416 }
409417 }
410- let dn = de._1
411- let do = de._2
412- let dp = de._3
413- let cB = I(de._4, a)
414- let dq = I(de._5, a)
415- if ((0 >= dn))
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))
416424 then throw("LP <= 0")
417425 else {
418- let dr = if (!(cP))
426+ let dz = if (!(cX))
419427 then 0
420- else dn
421- let ds = (cK - do)
422- let dt = (cM - dp)
423- let du = if (if (cQ)
424- then (cT == cU)
428+ else dv
429+ let dA = (cS - dw)
430+ let dB = (cU - dx)
431+ let dC = if (if (cY)
432+ then (db == dc)
425433 else false)
426- then $Tuple2(cS, 0)
427- else if (if (cQ)
428- then (cT == cV)
434+ then $Tuple2(da, 0)
435+ else if (if (cY)
436+ then (db == dd)
429437 else false)
430- then $Tuple2(0, cS)
431- else $Tuple2(do, dp)
432- let dv = du._1
433- let dw = du._2
434- let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, cl), bj(dv, dw, dr, cB, bG, dq, height, lastBlock.timestamp, ds, dt))]
435- $Tuple13(dn, dr, cB, cw, cy, da, cp, cu, dx, ds, dt, cL, cN)
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)
436444 }
437445 }
438446
439447
440-func dy (dz) = {
441- let bX = aL()
442- let dA = bX[u]
443- let dB = bX[v]
444- let cu = parseIntValue(bX[s])
445- let bY = parseIntValue(bX[w])
446- let bZ = parseIntValue(bX[x])
447- let dC = by(dA)
448- let dD = by(dB)
449- let cA = if ((dz.orderType == Buy))
450- then bO(bY, bZ, (dC + dz.amount), dD)
451- else bO(bY, bZ, (dC - dz.amount), dD)
452- let cB = I(cA, a)
453- if (if (if (aI())
454- then true
455- else (cu == p))
456- then true
457- else (cu == q))
458- then throw("Admin blocked")
448+func dG (dH) = {
449+ let dI = dH[0]
450+ let dJ = dH[1]
451+ let dK = (dI + dJ)
452+ if ((dK == e))
453+ then e
459454 else {
460- let dE = dz.assetPair.amountAsset
461- let dF = if ((dE == unit))
462- then "WAVES"
463- else toBase58String(value(dE))
464- let dG = dz.assetPair.priceAsset
465- let dH = if ((dG == unit))
466- then "WAVES"
467- else toBase58String(value(dG))
468- if (if ((dF != dA))
469- then true
470- else (dH != dB))
471- then throw("Wr assets")
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)
466+ }
467+
468+ func dV (dW,dX) = if (dW._2)
469+ then dW
472470 else {
473- let dI = dz.price
474- let cZ = fraction(a, bZ, bY)
475- let dJ = L(dI, a, cZ)
476- let dK = if ((dz.orderType == Buy))
477- then (cB >= dJ)
478- else (dJ >= cB)
479- true
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)
480480 }
481+
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])
490+
491+ func ej (eh,ei) = if ((ei >= ee))
492+ then eh
493+ else throw("List size exceeds 15")
494+
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)
496+ }
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)))
481502 }
482503 }
483504
484505
485-func dL (dM) = if ((size(dM.payments) != 1))
486- then throw("1 pmnt exp")
487- else {
488- let dN = value(dM.payments[0])
489- let cm = value(dN.assetId)
490- let cS = dN.amount
491- let de = ck(toBase58String(dM.transactionId), toBase58String(cm), cS, dM.caller)
492- let cG = de._1
493- let cH = de._2
494- let cu = parseIntValue(de._9)
495- let cI = de._10
496- if (if (aI())
497- then true
498- else (cu == q))
499- then throw(("Admin blocked: " + toString(cu)))
500- else $Tuple5(cG, cH, cS, cm, cI)
501- }
502-
503-
504-func dO (dP,aa,dQ,dR,bG,cP,cQ,cR,cS,cT) = {
505- let de = cJ(aa, bG, value(dQ).amount, value(dQ).assetId, value(dR).amount, value(dR).assetId, dP, (aa == ""), cP, cQ, cR, cS, cT)
506- let cu = parseIntValue(de._8)
507- if (if (if (aI())
508- then true
509- else (cu == o))
510- then true
511- else (cu == q))
512- then throw(("Blocked:" + toString(cu)))
513- else de
514- }
515-
516-
517-func dS (dT) = {
518- let dU = g
519- let dV = dT[0]
520- let dW = dT[1]
521- let dX = parseBigIntValue(j)
522- let dY = (parseBigIntValue(aH) * dX)
523- let dZ = (dV + dW)
524- if ((dZ == e))
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))
525514 then e
526515 else {
527- let ea = (dY * dU)
528- let eb = (((dV * dW) * dU) * dU)
529- let ec = ((ea * dZ) / dX)
530- let ed = (ea - dX)
531- let ee = (dU + f)
532- func ef (eg,eh) = {
533- let ei = eg
534- let ej = ei._1
535- let ek = ei._2
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
536525 if ((ek != unit))
537- then eg
526+ then dW
538527 else {
539- let el = (((ej * ej) * ej) / eb)
540- let em = (((ec + (el * dU)) * ej) / (((ed * ej) / dX) + (ee * el)))
541- let en = Q((em - value(ej)))
542- if ((f >= en))
543- then $Tuple2(em, eh)
544- else $Tuple2(em, unit)
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)
545534 }
546535 }
547536
548- let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
549- let ep = {
550- let eq = eo
551- let er = size(eq)
552- let es = $Tuple2(dZ, unit)
553- func et (eu,ev) = if ((ev >= er))
554- then eu
555- else ef(eu, eq[ev])
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])
556545
557- func ew (eu,ev) = if ((ev >= er))
558- then eu
546+ func ej (eh,ei) = if ((ei >= ee))
547+ then eh
559548 else throw("List size exceeds 15")
560549
561- ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
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)
562551 }
563- let ej = ep._1
564- let ek = ep._2
552+ let dR = et._1
553+ let ek = et._2
565554 if ((ek != unit))
566- then ej
567- else throw(("D calculation error, D = " + toString(ej)))
555+ then dR
556+ else throw(("D calculation error, D = " + toString(dR)))
568557 }
569558 }
570559
571560
572-func ex (dT,dM,ey) = {
573- let dU = g
574- let ez = dT[if ((dM == 0))
561+func eu (dH,dX,ev) = {
562+ let em = g
563+ let ew = dH[if ((dX == 0))
575564 then 1
576565 else 0]
577- let dX = parseBigIntValue(j)
578- let dY = (parseBigIntValue(aH) * dX)
579- let dZ = ez
580- let ea = (dY * dU)
581- let eA = (((((ey * ey) / (ez * dU)) * ey) * dX) / (ea * dU))
582- let eB = ((dZ + ((ey * dX) / ea)) - ey)
583- func ef (eg,eh) = {
584- let eC = eg
585- let eD = eC._1
586- let ek = eC._2
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
587576 if ((ek != unit))
588- then eg
577+ then dW
589578 else {
590- let eE = (((eD * eD) + eA) / ((g * eD) + eB))
591- let eF = Q((eE - value(eD)))
592- if ((f >= eF))
593- then $Tuple2(eE, eh)
594- else $Tuple2(eE, unit)
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)
595584 }
596585 }
597586
598- let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
599- let eG = {
600- let eq = eo
601- let er = size(eq)
602- let es = $Tuple2(ey, unit)
603- func et (eu,ev) = if ((ev >= er))
604- then eu
605- else ef(eu, eq[ev])
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])
606595
607- func ew (eu,ev) = if ((ev >= er))
608- then eu
596+ func ej (eh,ei) = if ((ei >= ee))
597+ then eh
609598 else throw("List size exceeds 15")
610599
611- ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
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)
612601 }
613- let eD = eG._1
614- let ek = eG._2
602+ let eA = eD._1
603+ let ek = eD._2
615604 if ((ek != unit))
616- then eD
617- else throw(("Y calculation error, Y = " + toString(eD)))
605+ then eA
606+ else throw(("Y calculation error, Y = " + toString(eA)))
618607 }
619608
620609
621-func eH (eI,cm,co,aa,eJ) = {
622- let aT = aL()
623- let cq = aT[u]
624- let cr = aT[v]
625- let cp = aT[t]
626- let cY = parseIntValue(aT[w])
627- let cZ = parseIntValue(aT[x])
628- let eK = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
629- let eL = if ((eK > e))
610+func eE (eF,eG,eH) = {
611+ let eI = fraction(dG([eF, eG]), c, eH)
612+ if ((eH == e))
613+ then e
614+ else eI
615+ }
616+
617+
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
624+ }
625+
626+
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)
634+ }
635+
636+
637+func eV (eW,eI) = if ((eI >= eW))
638+ then true
639+ else aM("updated DLp lower than current DLp")
640+
641+
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())
651+ then true
652+ else (bg == r))
653+ then true
654+ else (bg == s))
655+ then throw("Admin blocked")
656+ else if (if ((eY.assetPair.amountAsset != bi))
657+ then true
658+ else (eY.assetPair.priceAsset != bj))
659+ then throw("Wr assets")
660+ 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
667+ }
668+ }
669+
670+
671+func fh (dX) = if ((size(dX.payments) != 1))
672+ then throw("1 pmnt exp")
673+ 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())
683+ then true
684+ else (cC == s))
685+ then throw(("Admin blocked: " + toString(cC)))
686+ else $Tuple5(cO, cP, da, cu, cQ)
687+ }
688+
689+
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())
694+ then true
695+ else (cC == q))
696+ then true
697+ else (cC == s))
698+ then throw(("Blocked:" + toString(cC)))
699+ else dm
700+ }
701+
702+
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))
630712 then true
631713 else throw("initial deposit requires all coins")
632- if ((eL == eL))
714+ if ((fq == fq))
633715 then {
634- let cw = by(cq)
635- let cy = by(cr)
636- let eM = if ((aa == ""))
637- then $Tuple2(cw, cy)
638- else if ((cm == cq))
639- then if ((eI > cw))
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))
640722 then throw("invalid payment amount")
641- else $Tuple2((cw - eI), cy)
642- else if ((cm == cr))
643- then if ((eI > cy))
723+ else $Tuple2((cE - fo), cG)
724+ else if ((cu == cz))
725+ then if ((fo > cG))
644726 then throw("invalid payment amount")
645- else $Tuple2(cw, (cy - eI))
727+ else $Tuple2(cE, (cG - fo))
646728 else throw("wrong pmtAssetId")
647- let eN = eM._1
648- let eO = eM._2
649- let eP = if ((cm == cq))
650- then $Tuple2(eI, 0)
651- else if ((cm == cr))
652- then $Tuple2(0, eI)
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)
653735 else throw("invalid payment")
654- let eQ = eP._1
655- let eR = eP._2
656- let eS = if (eJ)
657- then $Tuple3(cg(eQ, aE)._1, cg(eR, aE)._1, cg(eI, aE)._2)
658- else $Tuple3(eQ, eR, 0)
659- let eT = eS._1
660- let eU = eS._2
661- let cj = eS._3
662- let eV = (eN + eT)
663- let eW = (eO + eU)
664- let bL = dS([toBigInt(eN), toBigInt(eO)])
665- let bK = dS([toBigInt(eV), toBigInt(eW)])
666- let eX = if ((bK > bL))
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))
667749 then true
668750 else throw()
669- if ((eX == eX))
751+ if ((fC == fC))
670752 then {
671- let eY = fraction(eK, (bK - bL), bL)
672- let cB = I(bA(F(eW, cZ), F(eV, cY)), a)
673- let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, aa), bj(eQ, eR, toInt(eY), cB, 0, 0, height, lastBlock.timestamp, 0, 0))]
674- let eZ = fraction(eO, a, eN)
675- let fa = fraction(eI, a, (eZ + a))
676- let fb = (eI - fa)
677- let fc = fraction(eK, toBigInt(fb), toBigInt(eO))
678- let fd = toInt(fraction((eY - fc), b, fc))
679- $Tuple4(toInt(eY), dx, cj, fd)
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)
680762 }
681763 else throw("Strict value is not equal to itself.")
682764 }
683765 else throw("Strict value is not equal to itself.")
684766 }
685767
686768
687-func fe (ff,fg,fh,dP,fi,fj) = {
688- let aT = aL()
689- let cp = aT[t]
690- let cq = aT[u]
691- let cr = aT[v]
692- let fk = parseIntValue(aT[w])
693- let fl = parseIntValue(aT[x])
694- let fm = aT[s]
695- let co = if ((dP == bi))
696- then fi
697- else dP
698- let dN = value(fh[0])
699- let cm = value(dN.assetId)
700- let cS = dN.amount
701- let cl = toBase58String(fj)
702- if ((cp != toBase58String(cm)))
703- then throw("Wrong LP")
704- else {
705- let cw = by(cq)
706- let cy = by(cr)
707- let fn = {
708- let aF = invoke(this, "getOneTknV2READONLY", [ff, cS], nil)
709- if ($isInstanceOf(aF, "(Int, Int)"))
710- then aF
711- else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
712- }
713- if ((fn == fn))
714- then {
715- let cj = fn._2
716- let fo = fn._1
717- let fp = if (if ((fg > 0))
718- then (fg > fo)
719- else false)
720- then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
721- else fo
722- let fq = if ((ff == cq))
723- then $Tuple4(fp, 0, ((cw - fp) - cj), cy)
724- else if ((ff == cr))
725- then $Tuple4(0, fp, cw, ((cy - fp) - cj))
726- else throw("invalid out asset id")
727- let fr = fq._1
728- let fs = fq._2
729- let eV = fq._3
730- let eW = fq._4
731- let ft = bA(F(eW, fl), F(eV, fk))
732- let fu = I(ft, a)
733- let fv = if ((ff == "WAVES"))
734- then unit
735- else fromBase58String(ff)
736- let fw = if ((cj > 0))
737- then [ScriptTransfer(aK, cj, fv)]
738- else nil
739- let cI = ([ScriptTransfer(co, fp, fv), StringEntry(ab(toString(co), cl), bu(fr, fs, cS, fu, height, lastBlock.timestamp)), IntegerEntry(U(), fu), IntegerEntry(V(height, lastBlock.timestamp), fu)] ++ fw)
740- if ((cI == cI))
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))
785+ then {
786+ let ct = toBase58String(fO)
787+ if ((cx != toBase58String(cu)))
788+ then throw("Wrong LP")
789+ 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)"))
797+ }
798+ if ((fS == fS))
741799 then {
742- let fx = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
743- if ((fx == fx))
744- then $Tuple2(cI, fp)
800+ let cr = fS._2
801+ let fU = fS._1
802+ let fV = if (if ((fL > 0))
803+ then (fL > fU)
804+ 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))
811+ 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"))
819+ then unit
820+ else fromBase58String(fK)
821+ let gc = if ((cr > 0))
822+ then [ScriptTransfer(aT, cr, gb)]
823+ 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))
826+ then {
827+ let gd = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
828+ if ((gd == gd))
829+ then {
830+ let ge = {
831+ let gf = if ((this == aT))
832+ then 0
833+ else cr
834+ let gg = if ((aY(fK) == bi))
835+ then true
836+ else false
837+ if (gg)
838+ then $Tuple2(-((fU + gf)), 0)
839+ else $Tuple2(0, -((fU + gf)))
840+ }
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)
849+ else throw("Strict value is not equal to itself.")
850+ }
851+ else throw("Strict value is not equal to itself.")
852+ }
745853 else throw("Strict value is not equal to itself.")
746854 }
747855 else throw("Strict value is not equal to itself.")
748856 }
749- else throw("Strict value is not equal to itself.")
750857 }
858+ else throw("Strict value is not equal to itself.")
751859 }
752860
753861
754-func fy () = {
755- let av = getString(S())
756- if ($isInstanceOf(av, "String"))
862+func gk () = {
863+ let aG = getString(W())
864+ if ($isInstanceOf(aG, "String"))
757865 then {
758- let dZ = av
759- fromBase58String(dZ)
866+ let dK = aG
867+ fromBase58String(dK)
760868 }
761- else if ($isInstanceOf(av, "Unit"))
869+ else if ($isInstanceOf(aG, "Unit"))
762870 then unit
763871 else throw("Match error")
764872 }
765873
766874
767-func fz () = {
768- let av = getString(T())
769- if ($isInstanceOf(av, "String"))
875+func gl () = {
876+ let aG = getString(X())
877+ if ($isInstanceOf(aG, "String"))
770878 then {
771- let dZ = av
772- fromBase58String(dZ)
879+ let dK = aG
880+ fromBase58String(dK)
773881 }
774- else if ($isInstanceOf(av, "Unit"))
882+ else if ($isInstanceOf(aG, "Unit"))
775883 then unit
776884 else throw("Match error")
777885 }
778886
779887
780-let fA = throw("Permission denied")
888+let gm = throw("Permission denied")
781889
782-func fB (dM) = {
783- let av = fy()
784- if ($isInstanceOf(av, "ByteVector"))
890+func gn (dX) = {
891+ let aG = gk()
892+ if ($isInstanceOf(aG, "ByteVector"))
785893 then {
786- let fC = av
787- (dM.callerPublicKey == fC)
894+ let go = aG
895+ (dX.callerPublicKey == go)
788896 }
789- else if ($isInstanceOf(av, "Unit"))
790- then (dM.caller == this)
897+ else if ($isInstanceOf(aG, "Unit"))
898+ then (dX.caller == this)
791899 else throw("Match error")
792900 }
793901
794902
795-func fD (dM) = {
796- let av = fy()
797- if ($isInstanceOf(av, "ByteVector"))
903+func gp (dX) = {
904+ let aG = gk()
905+ if ($isInstanceOf(aG, "ByteVector"))
798906 then {
799- let fC = av
800- if ((dM.callerPublicKey == fC))
907+ let go = aG
908+ if ((dX.callerPublicKey == go))
801909 then true
802- else fA
910+ else gm
803911 }
804- else if ($isInstanceOf(av, "Unit"))
805- then if ((dM.caller == this))
912+ else if ($isInstanceOf(aG, "Unit"))
913+ then if ((dX.caller == this))
806914 then true
807- else fA
915+ else gm
808916 else throw("Match error")
809917 }
810918
811919
812-@Callable(dM)
813-func constructor (R) = {
814- let eA = fD(dM)
815- if ((eA == eA))
816- then [StringEntry(R(), R)]
920+@Callable(dX)
921+func constructor (V) = {
922+ let ex = gp(dX)
923+ if ((ex == ex))
924+ then [StringEntry(V(), V)]
817925 else throw("Strict value is not equal to itself.")
818926 }
819927
820928
821929
822-@Callable(dM)
823-func setManager (fE) = {
824- let eA = fD(dM)
825- if ((eA == eA))
930+@Callable(dX)
931+func setManager (gq) = {
932+ let ex = gp(dX)
933+ if ((ex == ex))
826934 then {
827- let fF = fromBase58String(fE)
828- if ((fF == fF))
829- then [StringEntry(T(), fE)]
935+ let gr = fromBase58String(gq)
936+ if ((gr == gr))
937+ then [StringEntry(X(), gq)]
830938 else throw("Strict value is not equal to itself.")
831939 }
832940 else throw("Strict value is not equal to itself.")
833941 }
834942
835943
836944
837-@Callable(dM)
945+@Callable(dX)
838946 func confirmManager () = {
839- let cf = fz()
840- let fG = if (isDefined(cf))
947+ let co = gl()
948+ let gs = if (isDefined(co))
841949 then true
842950 else throw("No pending manager")
843- if ((fG == fG))
951+ if ((gs == gs))
844952 then {
845- let fH = if ((dM.callerPublicKey == value(cf)))
953+ let gt = if ((dX.callerPublicKey == value(co)))
846954 then true
847955 else throw("You are not pending manager")
848- if ((fH == fH))
849- then [StringEntry(S(), toBase58String(value(cf))), DeleteEntry(T())]
956+ if ((gt == gt))
957+ then [StringEntry(W(), toBase58String(value(co))), DeleteEntry(X())]
850958 else throw("Strict value is not equal to itself.")
851959 }
852960 else throw("Strict value is not equal to itself.")
853961 }
854962
855963
856964
857-@Callable(dM)
858-func put (fI,fJ) = {
859- let fK = bd()
860- let fL = valueOrErrorMessage(addressFromString(fK[A]), "Wr st addr")
861- let fM = valueOrErrorMessage(addressFromString(fK[C]), "Wr sl addr")
862- if ((0 > fI))
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))
863971 then throw("Wrong slippage")
864- else if ((size(dM.payments) != 2))
972+ else if ((size(dX.payments) != 2))
865973 then throw("2 pmnts expd")
866974 else {
867- let fN = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], fI, true, false, true, 0, "")
868- let dr = fN._2
869- let fO = fN._7
870- let cI = fN._9
871- let ds = fN._10
872- let dt = fN._11
873- let cq = fN._12
874- let cr = fN._13
875- let de = invoke(aD, "emit", [dr], nil)
876- if ((de == de))
975+ let gz = toBigInt(value(dX.payments[0]).amount)
976+ let gA = toBigInt(value(dX.payments[1]).amount)
977+ let eN = (toBigInt(bH(ba(bi))) - gz)
978+ if ((eN == eN))
877979 then {
878- let fP = {
879- let av = de
880- if ($isInstanceOf(av, "Address"))
881- then {
882- let fQ = av
883- invoke(fQ, "emit", [dr], nil)
884- }
885- else unit
886- }
887- if ((fP == fP))
980+ let eO = (toBigInt(bH(ba(bj))) - gA)
981+ if ((eO == eO))
888982 then {
889- let fR = if ((ds > 0))
890- then invoke(fM, "put", nil, [AttachedPayment(cq, ds)])
891- else nil
892- if ((fR == fR))
983+ let eP = toBigInt(value(assetInfo(bh)).quantity)
984+ if ((eP == eP))
893985 then {
894- let fS = if ((dt > 0))
895- then invoke(fM, "put", nil, [AttachedPayment(cr, dt)])
896- else nil
897- if ((fS == fS))
986+ let eQ = eJ(gz, gA, toBigInt(0))
987+ if ((eQ == eQ))
898988 then {
899- let fT = if (fJ)
989+ 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, "")
990+ let dz = gB._2
991+ let gC = gB._7
992+ let cQ = gB._9
993+ let dA = gB._10
994+ let dB = gB._11
995+ let cy = gB._12
996+ let cz = gB._13
997+ let dm = invoke(aP, "emit", [dz], nil)
998+ if ((dm == dm))
900999 then {
901- let fU = invoke(fL, "stake", nil, [AttachedPayment(fO, dr)])
902- if ((fU == fU))
903- then nil
1000+ let gD = {
1001+ let aG = dm
1002+ if ($isInstanceOf(aG, "Address"))
1003+ then {
1004+ let gE = aG
1005+ invoke(gE, "emit", [dz], nil)
1006+ }
1007+ else unit
1008+ }
1009+ if ((gD == gD))
1010+ then {
1011+ let gF = if ((dA > 0))
1012+ then invoke(gy, "put", nil, [AttachedPayment(cy, dA)])
1013+ else nil
1014+ if ((gF == gF))
1015+ then {
1016+ let gG = if ((dB > 0))
1017+ then invoke(gy, "put", nil, [AttachedPayment(cz, dB)])
1018+ else nil
1019+ if ((gG == gG))
1020+ then {
1021+ let gH = if (gv)
1022+ then {
1023+ let gI = invoke(gx, "stake", nil, [AttachedPayment(gC, dz)])
1024+ if ((gI == gI))
1025+ then nil
1026+ else throw("Strict value is not equal to itself.")
1027+ }
1028+ else [ScriptTransfer(dX.caller, dz, gC)]
1029+ let gJ = eR(0, 0, 0)
1030+ let gi = gJ._1
1031+ let eI = gJ._2
1032+ let gK = value(assetInfo(bh)).quantity
1033+ if ((gK == gK))
1034+ then {
1035+ let gL = if ((eI >= eQ))
1036+ then true
1037+ else aM(makeString(["updated DLp lower than current DLp", toString(eN), toString(eO), toString(eP), toString(eQ), toString(eI), toString(dz), toString(dA), toString(dB), toString(eP), toString(gK)], " "))
1038+ if ((gL == gL))
1039+ then ((cQ ++ gH) ++ gi)
1040+ else throw("Strict value is not equal to itself.")
1041+ }
1042+ else throw("Strict value is not equal to itself.")
1043+ }
1044+ else throw("Strict value is not equal to itself.")
1045+ }
1046+ else throw("Strict value is not equal to itself.")
1047+ }
9041048 else throw("Strict value is not equal to itself.")
9051049 }
906- else [ScriptTransfer(dM.caller, dr, fO)]
907- (cI ++ fT)
1050+ else throw("Strict value is not equal to itself.")
9081051 }
9091052 else throw("Strict value is not equal to itself.")
9101053 }
9111054 else throw("Strict value is not equal to itself.")
9121055 }
9131056 else throw("Strict value is not equal to itself.")
9141057 }
9151058 else throw("Strict value is not equal to itself.")
9161059 }
9171060 }
9181061
9191062
9201063
921-@Callable(dM)
922-func putOneTknV2 (fg,fJ) = {
923- let fV = {
924- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
925- if ($isInstanceOf(aF, "Boolean"))
926- then aF
927- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1064+@Callable(dX)
1065+func putOneTknV2 (fL,gv) = {
1066+ let gM = {
1067+ let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1068+ if ($isInstanceOf(fT, "Boolean"))
1069+ then fT
1070+ else throw(($getType(fT) + " couldn't be cast to Boolean"))
9281071 }
929- let fW = if (if (if (aI())
1072+ let gN = if (if (if (aR())
9301073 then true
931- else (aX == o))
1074+ else (bg == q))
9321075 then true
933- else (aX == q))
1076+ else (bg == s))
9341077 then true
935- else fV
936- let fX = [if (if (!(fW))
1078+ else gM
1079+ let gO = [if (if (!(gN))
9371080 then true
938- else fB(dM))
1081+ else gn(dX))
9391082 then true
940- else aB("put operation is blocked by admin"), if ((size(dM.payments) == 1))
1083+ else aM("put operation is blocked by admin"), if ((size(dX.payments) == 1))
9411084 then true
942- else aB("exactly 1 payment are expected")]
943- if ((fX == fX))
1085+ else aM("exactly 1 payment are expected")]
1086+ if ((gO == gO))
9441087 then {
945- let aT = aL()
946- let cq = aT[u]
947- let cr = aT[v]
948- let cp = fromBase58String(aT[t])
949- let fk = parseIntValue(aT[w])
950- let fl = parseIntValue(aT[x])
951- let co = if ((dM.caller == this))
952- then dM.originCaller
953- else dM.caller
954- let dN = value(dM.payments[0])
955- let cm = toBase58String(value(dN.assetId))
956- let cS = dN.amount
957- let fY = eH(cS, cm, toString(co), toBase58String(dM.transactionId), true)
958- if ((fY == fY))
1088+ let bc = aU()
1089+ let cy = bc[w]
1090+ let cz = bc[x]
1091+ let cx = fromBase58String(bc[v])
1092+ let fP = parseIntValue(bc[y])
1093+ let fQ = parseIntValue(bc[z])
1094+ let cw = if ((dX.caller == this))
1095+ then dX.originCaller
1096+ else dX.caller
1097+ let fi = value(dX.payments[0])
1098+ let cu = toBase58String(value(fi.assetId))
1099+ let da = fi.amount
1100+ let eQ = if ((fi.assetId == bi))
1101+ then eJ(toBigInt(da), toBigInt(0), toBigInt(0))
1102+ else eJ(toBigInt(0), toBigInt(da), toBigInt(0))
1103+ if ((eQ == eQ))
9591104 then {
960- let cj = fY._3
961- let cI = fY._2
962- let fZ = fY._1
963- let dr = if (if ((fg > 0))
964- then (fg > fZ)
965- else false)
966- then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
967- else fZ
968- let fN = invoke(aD, "emit", [dr], nil)
969- if ((fN == fN))
1105+ let gP = fn(da, cu, toString(cw), toBase58String(dX.transactionId), true)
1106+ if ((gP == gP))
9701107 then {
971- let fP = {
972- let av = fN
973- if ($isInstanceOf(av, "Address"))
974- then {
975- let fQ = av
976- invoke(fQ, "emit", [dr], nil)
1108+ let cr = gP._3
1109+ let cQ = gP._2
1110+ let gQ = gP._1
1111+ let dz = if (if ((fL > 0))
1112+ then (fL > gQ)
1113+ else false)
1114+ then aM(makeString(["amount to receive is less than ", toString(fL)], ""))
1115+ else gQ
1116+ let gB = invoke(aP, "emit", [dz], nil)
1117+ if ((gB == gB))
1118+ then {
1119+ let gD = {
1120+ let aG = gB
1121+ if ($isInstanceOf(aG, "Address"))
1122+ then {
1123+ let gE = aG
1124+ invoke(gE, "emit", [dz], nil)
1125+ }
1126+ else unit
9771127 }
978- else unit
979- }
980- if ((fP == fP))
981- then {
982- let fT = if (fJ)
1128+ if ((gD == gD))
9831129 then {
984- let fU = invoke(bf, "stake", nil, [AttachedPayment(cp, dr)])
985- if ((fU == fU))
986- then nil
1130+ let gH = if (gv)
1131+ then {
1132+ let gI = invoke(bo, "stake", nil, [AttachedPayment(cx, dz)])
1133+ if ((gI == gI))
1134+ then nil
1135+ else throw("Strict value is not equal to itself.")
1136+ }
1137+ else [ScriptTransfer(dX.caller, dz, cx)]
1138+ let gc = if ((cr > 0))
1139+ then [ScriptTransfer(aT, cr, fromBase58String(cu))]
1140+ else nil
1141+ let gR = if ((this == aT))
1142+ then $Tuple2(0, 0)
1143+ else {
1144+ let gS = if ((fi.assetId == bi))
1145+ then true
1146+ else false
1147+ if (gS)
1148+ then $Tuple2(-(cr), 0)
1149+ else $Tuple2(0, -(cr))
1150+ }
1151+ let eS = gR._1
1152+ let eT = gR._2
1153+ let gT = eR(eS, eT, 0)
1154+ let gi = gT._1
1155+ let eI = gT._2
1156+ let gj = eV(eQ, eI)
1157+ if ((gj == gj))
1158+ then $Tuple2((((cQ ++ gH) ++ gc) ++ gi), dz)
9871159 else throw("Strict value is not equal to itself.")
9881160 }
989- else [ScriptTransfer(dM.caller, dr, cp)]
990- let fw = if ((cj > 0))
991- then [ScriptTransfer(aK, cj, fromBase58String(cm))]
992- else nil
993- $Tuple2(((cI ++ fT) ++ fw), dr)
1161+ else throw("Strict value is not equal to itself.")
9941162 }
9951163 else throw("Strict value is not equal to itself.")
9961164 }
9971165 else throw("Strict value is not equal to itself.")
9981166 }
9991167 else throw("Strict value is not equal to itself.")
10001168 }
10011169 else throw("Strict value is not equal to itself.")
10021170 }
10031171
10041172
10051173
1006-@Callable(dM)
1007-func putForFree (ga) = if ((0 > ga))
1174+@Callable(dX)
1175+func putForFree (gU) = if ((0 > gU))
10081176 then throw("Wrong slpg")
1009- else if ((size(dM.payments) != 2))
1177+ else if ((size(dX.payments) != 2))
10101178 then throw("2 pmnts expd")
10111179 else {
1012- let gb = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], ga, false, false, true, 0, "")
1013- gb._9
1180+ let gV = fj(toString(dX.caller), toBase58String(dX.transactionId), AttachedPayment(value(dX.payments[0]).assetId, value(dX.payments[0]).amount), dX.payments[1], gU, false, false, true, 0, "")
1181+ let cQ = gV._9
1182+ let gz = toBigInt(value(dX.payments[0]).amount)
1183+ let gA = toBigInt(value(dX.payments[1]).amount)
1184+ let eQ = eJ(gz, gA, toBigInt(0))
1185+ if ((eQ == eQ))
1186+ then {
1187+ let gW = eR(0, 0, 0)
1188+ let gi = gW._1
1189+ let eI = gW._2
1190+ let gj = eV(eQ, eI)
1191+ if ((gj == gj))
1192+ then (cQ ++ gi)
1193+ else throw("Strict value is not equal to itself.")
1194+ }
1195+ else throw("Strict value is not equal to itself.")
10141196 }
10151197
10161198
10171199
1018-@Callable(dM)
1200+@Callable(dX)
10191201 func get () = {
1020- let de = dL(dM)
1021- let gc = de._1
1022- let cH = de._2
1023- let cS = de._3
1024- let cm = de._4
1025- let cI = de._5
1026- let eB = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1027- if ((eB == eB))
1028- then cI
1029- else throw("Strict value is not equal to itself.")
1030- }
1031-
1032-
1033-
1034-@Callable(dM)
1035-func getOneTknV2 (ff,fg) = {
1036- let fV = {
1037- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1038- if ($isInstanceOf(aF, "Boolean"))
1039- then aF
1040- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1041- }
1042- let gd = if (if (aI())
1043- then true
1044- else (aX == q))
1045- then true
1046- else fV
1047- let fX = [if (if (!(gd))
1048- then true
1049- else fB(dM))
1050- then true
1051- else aB("get operation is blocked by admin"), if ((size(dM.payments) == 1))
1052- then true
1053- else aB("exactly 1 payment are expected")]
1054- if ((fX == fX))
1202+ let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1203+ if ((eQ == eQ))
10551204 then {
1056- let ge = fe(ff, fg, dM.payments, dM.caller, dM.originCaller, dM.transactionId)
1057- let cI = ge._1
1058- let fp = ge._2
1059- $Tuple2(cI, fp)
1205+ let dm = fh(dX)
1206+ let gX = dm._1
1207+ let cP = dm._2
1208+ let da = dm._3
1209+ let cu = dm._4
1210+ let cQ = dm._5
1211+ let ey = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1212+ if ((ey == ey))
1213+ then {
1214+ let gY = eR(-(gX), -(cP), 0)
1215+ let gi = gY._1
1216+ let eI = gY._2
1217+ let gj = eV(eQ, eI)
1218+ if ((gj == gj))
1219+ then (cQ ++ gi)
1220+ else throw("Strict value is not equal to itself.")
1221+ }
1222+ else throw("Strict value is not equal to itself.")
10601223 }
10611224 else throw("Strict value is not equal to itself.")
10621225 }
10631226
10641227
10651228
1066-@Callable(dM)
1067-func getOneTknV2READONLY (ff,gf) = {
1068- let aT = aL()
1069- let cq = aT[u]
1070- let cr = aT[v]
1071- let cp = aT[t]
1072- let dT = [toBigInt(by(cq)), toBigInt(by(cr))]
1073- let gg = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
1074- let bL = dS(dT)
1075- let bK = (bL - fraction(toBigInt(gf), bL, gg))
1076- let gh = if ((ff == cq))
1077- then 0
1078- else if ((ff == cr))
1079- then 1
1080- else throw("invalid out asset id")
1081- let gi = ex(dT, gh, bK)
1082- let gj = (dT[gh] - gi)
1083- let gk = max([0, toInt((gj - f))])
1084- let gl = cg(gk, aG)
1085- let fo = gl._1
1086- let cj = gl._2
1087- $Tuple2(nil, $Tuple2(fo, cj))
1229+@Callable(dX)
1230+func getOneTknV2 (fK,fL) = {
1231+ let gM = {
1232+ let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1233+ if ($isInstanceOf(fT, "Boolean"))
1234+ then fT
1235+ else throw(($getType(fT) + " couldn't be cast to Boolean"))
1236+ }
1237+ let gZ = if (if (aR())
1238+ then true
1239+ else (bg == s))
1240+ then true
1241+ else gM
1242+ let gO = [if (if (!(gZ))
1243+ then true
1244+ else gn(dX))
1245+ then true
1246+ else aM("get operation is blocked by admin"), if ((size(dX.payments) == 1))
1247+ then true
1248+ else aM("exactly 1 payment are expected")]
1249+ if ((gO == gO))
1250+ then {
1251+ let ha = fJ(fK, fL, dX.payments, dX.caller, dX.originCaller, dX.transactionId)
1252+ let cQ = ha._1
1253+ let fV = ha._2
1254+ $Tuple2(cQ, fV)
1255+ }
1256+ else throw("Strict value is not equal to itself.")
10881257 }
10891258
10901259
10911260
1092-@Callable(dM)
1093-func getOneTknV2WithBonusREADONLY (ff,gf) = {
1094- let aT = aL()
1095- let cq = aT[u]
1096- let cr = aT[v]
1097- let cp = aT[t]
1098- let cw = by(cq)
1099- let cy = by(cr)
1100- let gm = {
1101- let aF = invoke(this, "getOneTknV2READONLY", [ff, gf], nil)
1102- if ($isInstanceOf(aF, "(Int, Int)"))
1103- then aF
1104- else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
1105- }
1106- let fo = gm._1
1107- let cj = gm._2
1108- let de = ck("", cp, gf, this)
1109- let cG = de._1
1110- let cH = de._2
1111- let gn = (cG + cH)
1112- let fd = if ((gn == 0))
1113- then if ((fo == 0))
1114- then 0
1115- else throw("bonus calculation error")
1116- else fraction((fo - gn), a, gn)
1117- $Tuple2(nil, $Tuple3(fo, cj, fd))
1261+@Callable(dX)
1262+func refreshDLp () = {
1263+ let hb = valueOrElse(getInteger(an), 0)
1264+ let hc = if (((height - hb) >= aq))
1265+ then unit
1266+ else aM(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
1267+ if ((hc == hc))
1268+ then {
1269+ let fc = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aO("invalid dLp"))
1270+ let hd = eR(0, 0, 0)
1271+ let he = hd._1
1272+ let eI = hd._2
1273+ let eU = if ((fc != eI))
1274+ then he
1275+ else aM("nothing to refresh")
1276+ $Tuple2(eU, toString(eI))
1277+ }
1278+ else throw("Strict value is not equal to itself.")
11181279 }
11191280
11201281
11211282
1122-@Callable(dM)
1123-func getNoLess (go,gp) = {
1124- let de = dL(dM)
1125- let cG = de._1
1126- let cH = de._2
1127- let cS = de._3
1128- let cm = de._4
1129- let cI = de._5
1130- if ((go > cG))
1131- then throw(((("Failed: " + toString(cG)) + " < ") + toString(go)))
1132- else if ((gp > cH))
1133- then throw(((("Failed: " + toString(cH)) + " < ") + toString(gp)))
1283+@Callable(dX)
1284+func getOneTknV2READONLY (fK,hf) = {
1285+ let bc = aU()
1286+ let cy = bc[w]
1287+ let cz = bc[x]
1288+ let cx = bc[v]
1289+ let dH = [toBigInt(bH(cy)), toBigInt(bH(cz))]
1290+ let eH = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cx)), "invalid lp asset").quantity)
1291+ let bU = dG(dH)
1292+ let bT = (bU - fraction(toBigInt(hf), bU, eH))
1293+ let hg = if ((fK == cy))
1294+ then 0
1295+ else if ((fK == cz))
1296+ then 1
1297+ else throw("invalid out asset id")
1298+ let hh = eu(dH, hg, bT)
1299+ let hi = (dH[hg] - hh)
1300+ let hj = max([0, toInt((hi - f))])
1301+ let hk = cp(hj)
1302+ let fU = hk._1
1303+ let cr = hk._2
1304+ $Tuple2(nil, $Tuple2(fU, cr))
1305+ }
1306+
1307+
1308+
1309+@Callable(dX)
1310+func getOneTknV2WithBonusREADONLY (fK,hf) = {
1311+ let bc = aU()
1312+ let cy = bc[w]
1313+ let cz = bc[x]
1314+ let cx = bc[v]
1315+ let cE = bH(cy)
1316+ let cG = bH(cz)
1317+ let hl = {
1318+ let fT = invoke(this, "getOneTknV2READONLY", [fK, hf], nil)
1319+ if ($isInstanceOf(fT, "(Int, Int)"))
1320+ then fT
1321+ else throw(($getType(fT) + " couldn't be cast to (Int, Int)"))
1322+ }
1323+ let fU = hl._1
1324+ let cr = hl._2
1325+ let dm = cs("", cx, hf, this)
1326+ let cO = dm._1
1327+ let cP = dm._2
1328+ let hm = (cO + cP)
1329+ let fI = if ((hm == 0))
1330+ then if ((fU == 0))
1331+ then 0
1332+ else throw("bonus calculation error")
1333+ else fraction((fU - hm), a, hm)
1334+ $Tuple2(nil, $Tuple3(fU, cr, fI))
1335+ }
1336+
1337+
1338+
1339+@Callable(dX)
1340+func getNoLess (hn,ho) = {
1341+ let dm = fh(dX)
1342+ let cO = dm._1
1343+ let cP = dm._2
1344+ let da = dm._3
1345+ let cu = dm._4
1346+ let cQ = dm._5
1347+ if ((hn > cO))
1348+ then throw(((("Failed: " + toString(cO)) + " < ") + toString(hn)))
1349+ else if ((ho > cP))
1350+ then throw(((("Failed: " + toString(cP)) + " < ") + toString(ho)))
11341351 else {
1135- let gq = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1136- if ((gq == gq))
1137- then cI
1352+ let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(da))
1353+ let hp = invoke(aP, "burn", [da], [AttachedPayment(cu, da)])
1354+ if ((hp == hp))
1355+ then {
1356+ let hq = eR(-(cO), -(cP), 0)
1357+ let gi = hq._1
1358+ let eI = hq._2
1359+ let gj = eV(eQ, eI)
1360+ if ((gj == gj))
1361+ then (cQ ++ gi)
1362+ else throw("Strict value is not equal to itself.")
1363+ }
11381364 else throw("Strict value is not equal to itself.")
11391365 }
11401366 }
11411367
11421368
11431369
1144-@Callable(dM)
1145-func unstakeAndGet (ch) = {
1146- let gr = if ((size(dM.payments) != 0))
1370+@Callable(dX)
1371+func unstakeAndGet (cq) = {
1372+ let hr = if ((size(dX.payments) != 0))
11471373 then throw("No pmnts expd")
11481374 else true
1149- if ((gr == gr))
1375+ if ((hr == hr))
11501376 then {
1151- let bX = aL()
1152- let gs = bd()
1153- let fO = fromBase58String(bX[t])
1154- let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1155- let gu = invoke(gt, "unstake", [toBase58String(fO), ch], nil)
1156- if ((gu == gu))
1377+ let cg = aU()
1378+ let hs = bm()
1379+ let gC = fromBase58String(cg[v])
1380+ let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
1381+ let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1382+ let hu = invoke(ht, "unstake", [toBase58String(gC), cq], nil)
1383+ if ((hu == hu))
11571384 then {
1158- let de = ck(toBase58String(dM.transactionId), toBase58String(fO), ch, dM.caller)
1159- let cu = parseIntValue(de._9)
1160- let cI = de._10
1161- let gv = if (if (aI())
1385+ let dm = cs(toBase58String(dX.transactionId), toBase58String(gC), cq, dX.caller)
1386+ let cO = dm._1
1387+ let cP = dm._2
1388+ let cC = parseIntValue(dm._9)
1389+ let cQ = dm._10
1390+ let hv = if (if (aR())
11621391 then true
1163- else (cu == q))
1164- then throw(("Blocked: " + toString(cu)))
1392+ else (cC == s))
1393+ then throw(("Blocked: " + toString(cC)))
11651394 else true
1166- if ((gv == gv))
1395+ if ((hv == hv))
11671396 then {
1168- let gw = invoke(aD, "burn", [ch], [AttachedPayment(fO, ch)])
1169- if ((gw == gw))
1170- then cI
1397+ let hw = invoke(aP, "burn", [cq], [AttachedPayment(gC, cq)])
1398+ if ((hw == hw))
1399+ then {
1400+ let hx = eR(-(cO), -(cP), 0)
1401+ let gi = hx._1
1402+ let eI = hx._2
1403+ let gj = eV(eQ, eI)
1404+ if ((gj == gj))
1405+ then (cQ ++ gi)
1406+ else throw("Strict value is not equal to itself.")
1407+ }
11711408 else throw("Strict value is not equal to itself.")
11721409 }
11731410 else throw("Strict value is not equal to itself.")
11741411 }
11751412 else throw("Strict value is not equal to itself.")
11761413 }
11771414 else throw("Strict value is not equal to itself.")
11781415 }
11791416
11801417
11811418
1182-@Callable(dM)
1183-func unstakeAndGetNoLess (gx,gy,gp) = {
1184- let gd = if (aI())
1419+@Callable(dX)
1420+func unstakeAndGetNoLess (hy,hz,ho) = {
1421+ let gZ = if (aR())
11851422 then true
1186- else (aX == q)
1187- let fX = [if (!(gd))
1423+ else (bg == s)
1424+ let gO = [if (!(gZ))
11881425 then true
1189- else throw("get operation is blocked by admin"), if ((size(dM.payments) == 0))
1426+ else throw("get operation is blocked by admin"), if ((size(dX.payments) == 0))
11901427 then true
11911428 else throw("no payments are expected")]
1192- if ((fX == fX))
1429+ if ((gO == gO))
11931430 then {
1194- let gu = invoke(bf, "unstake", [toBase58String(aY), gx], nil)
1195- if ((gu == gu))
1431+ let eQ = eJ(toBigInt(0), toBigInt(0), toBigInt(0))
1432+ let hu = invoke(bo, "unstake", [toBase58String(bh), hy], nil)
1433+ if ((hu == hu))
11961434 then {
1197- let gz = ck(toBase58String(dM.transactionId), toBase58String(aY), gx, dM.caller)
1198- let cG = gz._1
1199- let cH = gz._2
1200- let cI = gz._10
1201- let gA = [if ((cG >= gy))
1435+ let hA = cs(toBase58String(dX.transactionId), toBase58String(bh), hy, dX.caller)
1436+ let cO = hA._1
1437+ let cP = hA._2
1438+ let cQ = hA._10
1439+ let hB = [if ((cO >= hz))
12021440 then true
1203- else throw(makeString(["amount asset amount to receive is less than ", toString(gy)], "")), if ((cH >= gp))
1441+ else throw(makeString(["amount asset amount to receive is less than ", toString(hz)], "")), if ((cP >= ho))
12041442 then true
1205- else throw(makeString(["price asset amount to receive is less than ", toString(gp)], ""))]
1206- if ((gA == gA))
1443+ else throw(makeString(["price asset amount to receive is less than ", toString(ho)], ""))]
1444+ if ((hB == hB))
12071445 then {
1208- let gq = invoke(aD, "burn", [gx], [AttachedPayment(aY, gx)])
1209- if ((gq == gq))
1210- then cI
1446+ let hp = invoke(aP, "burn", [hy], [AttachedPayment(bh, hy)])
1447+ if ((hp == hp))
1448+ then {
1449+ let hC = eR(-(cO), -(cP), 0)
1450+ let gi = hC._1
1451+ let eI = hC._2
1452+ let gj = eV(eQ, eI)
1453+ if ((gj == gj))
1454+ then (cQ ++ gi)
1455+ else throw("Strict value is not equal to itself.")
1456+ }
12111457 else throw("Strict value is not equal to itself.")
12121458 }
12131459 else throw("Strict value is not equal to itself.")
12141460 }
12151461 else throw("Strict value is not equal to itself.")
12161462 }
12171463 else throw("Strict value is not equal to itself.")
12181464 }
12191465
12201466
12211467
1222-@Callable(dM)
1223-func unstakeAndGetOneTknV2 (gx,ff,fg) = {
1224- let fV = {
1225- let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1226- if ($isInstanceOf(aF, "Boolean"))
1227- then aF
1228- else throw(($getType(aF) + " couldn't be cast to Boolean"))
1468+@Callable(dX)
1469+func unstakeAndGetOneTknV2 (hy,fK,fL) = {
1470+ let gM = {
1471+ let fT = invoke(aP, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1472+ if ($isInstanceOf(fT, "Boolean"))
1473+ then fT
1474+ else throw(($getType(fT) + " couldn't be cast to Boolean"))
12291475 }
1230- let gd = if (if (aI())
1476+ let gZ = if (if (aR())
12311477 then true
1232- else (aX == q))
1478+ else (bg == s))
12331479 then true
1234- else fV
1235- let fX = [if (if (!(gd))
1480+ else gM
1481+ let gO = [if (if (!(gZ))
12361482 then true
1237- else fB(dM))
1483+ else gn(dX))
12381484 then true
1239- else aB("get operation is blocked by admin"), if ((size(dM.payments) == 0))
1485+ else aM("get operation is blocked by admin"), if ((size(dX.payments) == 0))
12401486 then true
1241- else aB("no payments are expected")]
1242- if ((fX == fX))
1487+ else aM("no payments are expected")]
1488+ if ((gO == gO))
12431489 then {
1244- let bX = aL()
1245- let gs = bd()
1246- let fO = fromBase58String(bX[t])
1247- let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1248- let gu = invoke(gt, "unstake", [toBase58String(fO), gx], nil)
1249- if ((gu == gu))
1490+ let cg = aU()
1491+ let hs = bm()
1492+ let gC = fromBase58String(cg[v])
1493+ let ht = valueOrErrorMessage(addressFromString(hs[C]), "Wr st addr")
1494+ let hu = invoke(ht, "unstake", [toBase58String(gC), hy], nil)
1495+ if ((hu == hu))
12501496 then {
1251- let gB = fe(ff, fg, [AttachedPayment(fO, gx)], dM.caller, dM.originCaller, dM.transactionId)
1252- let cI = gB._1
1253- let fp = gB._2
1254- $Tuple2(cI, fp)
1497+ let hD = fJ(fK, fL, [AttachedPayment(gC, hy)], dX.caller, dX.originCaller, dX.transactionId)
1498+ let cQ = hD._1
1499+ let fV = hD._2
1500+ $Tuple2(cQ, fV)
12551501 }
12561502 else throw("Strict value is not equal to itself.")
12571503 }
12581504 else throw("Strict value is not equal to itself.")
12591505 }
12601506
12611507
12621508
1263-@Callable(dM)
1264-func putOneTknV2WithBonusREADONLY (gC,gD) = {
1265- let aT = aL()
1266- let cq = aT[u]
1267- let cr = aT[v]
1268- let cp = aT[t]
1269- let gE = eH(gC, gD, "", "", true)
1270- let eY = gE._1
1271- let cI = gE._2
1272- let cj = gE._3
1273- let fd = gE._4
1274- $Tuple2(nil, $Tuple3(eY, cj, fd))
1509+@Callable(dX)
1510+func putOneTknV2WithBonusREADONLY (hE,hF) = {
1511+ let bc = aU()
1512+ let cy = bc[w]
1513+ let cz = bc[x]
1514+ let cx = bc[v]
1515+ let hG = fn(hE, hF, "", "", true)
1516+ let fD = hG._1
1517+ let cQ = hG._2
1518+ let cr = hG._3
1519+ let fI = hG._4
1520+ $Tuple2(nil, $Tuple3(fD, cr, fI))
12751521 }
12761522
12771523
12781524
1279-@Callable(dM)
1280-func putOneTknV2WithoutTakeFeeREADONLY (gC,gD) = {
1281- let aT = aL()
1282- let cq = aT[u]
1283- let cr = aT[v]
1284- let cp = aT[t]
1285- let gF = eH(gC, gD, "", "", false)
1286- let eY = gF._1
1287- let cI = gF._2
1288- let cj = gF._3
1289- let fd = gF._4
1290- $Tuple2(nil, $Tuple3(eY, cj, fd))
1525+@Callable(dX)
1526+func putOneTknV2WithoutTakeFeeREADONLY (hE,hF) = {
1527+ let bc = aU()
1528+ let cy = bc[w]
1529+ let cz = bc[x]
1530+ let cx = bc[v]
1531+ let hH = fn(hE, hF, "", "", false)
1532+ let fD = hH._1
1533+ let cQ = hH._2
1534+ let cr = hH._3
1535+ let fI = hH._4
1536+ $Tuple2(nil, $Tuple3(fD, cr, fI))
12911537 }
12921538
12931539
12941540
1295-@Callable(dM)
1296-func activate (gG,gH) = if ((toString(dM.caller) != toString(aD)))
1541+@Callable(dX)
1542+func activate (hI,hJ) = if ((toString(dX.caller) != toString(aP)))
12971543 then throw("denied")
1298- else $Tuple2([StringEntry(ac(), gG), StringEntry(ad(), gH)], "success")
1544+ else $Tuple2([StringEntry(ag(), hI), StringEntry(ah(), hJ)], "success")
12991545
13001546
13011547
1302-@Callable(dM)
1303-func setS (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1304- then fA
1305- else [StringEntry(gI, gv)]
1548+@Callable(dX)
1549+func setS (hK,hv) = if ((toString(dX.caller) != aI(this, aj())))
1550+ then gm
1551+ else [StringEntry(hK, hv)]
13061552
13071553
13081554
1309-@Callable(dM)
1310-func setI (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1311- then fA
1312- else [IntegerEntry(gI, gv)]
1555+@Callable(dX)
1556+func setI (hK,hv) = if ((toString(dX.caller) != aI(this, aj())))
1557+ then gm
1558+ else [IntegerEntry(hK, hv)]
13131559
13141560
13151561
1316-@Callable(dM)
1317-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aL())
1562+@Callable(dX)
1563+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
13181564
13191565
13201566
1321-@Callable(dM)
1322-func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
1567+@Callable(dX)
1568+func getAccBalanceWrapperREADONLY (bI) = $Tuple2(nil, bH(bI))
13231569
13241570
13251571
1326-@Callable(dM)
1327-func calcPricesWrapperREADONLY (bR,bS,bW) = {
1328- let gJ = bV(bR, bS, bW)
1329- $Tuple2(nil, [toString(gJ[0]), toString(gJ[1]), toString(gJ[2])])
1572+@Callable(dX)
1573+func calcPricesWrapperREADONLY (ca,cb,cf) = {
1574+ let hL = ce(ca, cb, cf)
1575+ $Tuple2(nil, [toString(hL[0]), toString(hL[1]), toString(hL[2])])
13301576 }
13311577
13321578
13331579
1334-@Callable(dM)
1335-func fromX18WrapperREADONLY (J,gK) = $Tuple2(nil, I(parseBigIntValue(J), gK))
1580+@Callable(dX)
1581+func fromX18WrapperREADONLY (L,hM) = $Tuple2(nil, K(parseBigIntValue(L), hM))
13361582
13371583
13381584
1339-@Callable(dM)
1340-func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
1585+@Callable(dX)
1586+func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
13411587
13421588
13431589
1344-@Callable(dM)
1345-func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
1590+@Callable(dX)
1591+func calcPriceBigIntWrapperREADONLY (bK,bL) = $Tuple2(nil, toString(bJ(parseBigIntValue(bK), parseBigIntValue(bL))))
13461592
13471593
13481594
1349-@Callable(dM)
1350-func estimatePutOperationWrapperREADONLY (cl,bG,cK,cL,cM,cN,gL,cO,cP) = $Tuple2(nil, cJ(cl, bG, cK, cL, cM, cN, gL, cO, cP, true, false, 0, ""))
1595+@Callable(dX)
1596+func estimatePutOperationWrapperREADONLY (ct,bP,cS,cT,cU,cV,hN,cW,cX) = $Tuple2(nil, cR(ct, bP, cS, cT, cU, cV, hN, cW, cX, true, false, 0, ""))
13511597
13521598
13531599
1354-@Callable(dM)
1355-func estimateGetOperationWrapperREADONLY (cl,gM,cn,gL) = {
1356- let de = ck(cl, gM, cn, addressFromStringValue(gL))
1357- $Tuple2(nil, $Tuple10(de._1, de._2, de._3, de._4, de._5, de._6, de._7, toString(de._8), de._9, de._10))
1600+@Callable(dX)
1601+func estimateGetOperationWrapperREADONLY (ct,hO,cv,hN) = {
1602+ let dm = cs(ct, hO, cv, addressFromStringValue(hN))
1603+ $Tuple2(nil, $Tuple10(dm._1, dm._2, dm._3, dm._4, dm._5, dm._6, dm._7, toString(dm._8), dm._9, dm._10))
13581604 }
13591605
13601606
1361-@Verifier(gN)
1362-func gO () = {
1363- let gP = {
1364- let av = fy()
1365- if ($isInstanceOf(av, "ByteVector"))
1607+
1608+@Callable(dX)
1609+func getFeeREADONLY () = $Tuple2(nil, al)
1610+
1611+
1612+@Verifier(hP)
1613+func hQ () = {
1614+ let hR = {
1615+ let aG = gk()
1616+ if ($isInstanceOf(aG, "ByteVector"))
13661617 then {
1367- let fC = av
1368- fC
1618+ let go = aG
1619+ go
13691620 }
1370- else if ($isInstanceOf(av, "Unit"))
1371- then gN.senderPublicKey
1621+ else if ($isInstanceOf(aG, "Unit"))
1622+ then hP.senderPublicKey
13721623 else throw("Match error")
13731624 }
1374- let av = gN
1375- if ($isInstanceOf(av, "Order"))
1625+ let aG = hP
1626+ if ($isInstanceOf(aG, "Order"))
13761627 then {
1377- let dz = av
1378- let gQ = aJ()
1379- let gR = dy(dz)
1380- let gS = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1381- let gT = sigVerify(dz.bodyBytes, dz.proofs[1], gQ)
1382- if (if (if (gR)
1383- then gS
1628+ let eY = aG
1629+ let hS = aS()
1630+ let hT = eX(eY)
1631+ let hU = sigVerify(eY.bodyBytes, eY.proofs[0], eY.senderPublicKey)
1632+ let hV = sigVerify(eY.bodyBytes, eY.proofs[1], hS)
1633+ if (if (if (hT)
1634+ then hU
13841635 else false)
1385- then gT
1636+ then hV
13861637 else false)
13871638 then true
1388- else aq(gR, gS, gT)
1639+ else aB(hT, hU, hV)
13891640 }
1390- else if ($isInstanceOf(av, "SetScriptTransaction"))
1641+ else if ($isInstanceOf(aG, "SetScriptTransaction"))
13911642 then {
1392- let dZ = av
1393- let gU = blake2b256(value(dZ.script))
1394- let gV = fromBase64String(value(getString(aD, ao())))
1395- let gW = scriptHash(this)
1396- if (if ((gV == gU))
1397- then (gW != gU)
1643+ let dK = aG
1644+ let hW = blake2b256(value(dK.script))
1645+ let hX = fromBase64String(value(getString(aP, az())))
1646+ let hY = scriptHash(this)
1647+ if (if ((hX == hW))
1648+ then (hY != hW)
13981649 else false)
13991650 then true
1400- else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
1651+ else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
14011652 }
1402- else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
1653+ else sigVerify(hP.bodyBytes, hP.proofs[0], hR)
14031654 }
14041655

github/deemru/w8io/169f3d6 
443.93 ms