tx · 2hTmsaGUW3EFaABBUbkxfF9dPYX9UKq6MGd83K7jJHiE

3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA:  -0.03200000 Waves

2022.12.16 12:30 [2362679] smart account 3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA > SELF 0.00000000 Waves

{ "type": 13, "id": "2hTmsaGUW3EFaABBUbkxfF9dPYX9UKq6MGd83K7jJHiE", "fee": 3200000, "feeAssetId": null, "timestamp": 1671182901683, "version": 1, "sender": "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA", "senderPublicKey": "35yd3qw1gxKDxKwGAykHN9fANbXNWwseaUwbWDj24o3x", "proofs": [ "285VmAyuzauen96h2q4QhvkEDFTkk1x6GstVXwoqEGYnZzZqHPaxusprFFUUnejH5YDqA8j8xZp5t4ZHwdCA8puY" ], "script": "base64:BgKmIggCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEBARIFCgMBCAESBAoCAQgSBAoCAQgSBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCCIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiCnNsaXBwYWdlNEQiC3dhdmVzU3RyaW5nIgVBbXVsdCIFRGNvbnYiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIgtpZHhJQW10QXNJZCINaWR4SVByaWNlQXNJZCIPaWR4RmFjdFN0YWtDbnRyIhJpZHhGYWN0b3J5UmVzdENudHIiEGlkeEZhY3RTbGlwcENudHIiEWlkeEZhY3RHd3hSZXdDbnRyIgpmZWVEZWZhdWx0IgJ0MSIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0IgJ0cyIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiAXQiA3BhdSICdWEiBHR4SWQiA2dhdSICYWEiAnBhIgNhbXAiA2FkYSIEZmNmZyIEbXRwayICcGMiBmlBbXRBcyIFaVByQXMiA21iYSIFYkFTdHIiA2FwcyIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIDdG9lIgNvclYiBnNlbmRyViIGbWF0Y2hWIgNzdHIiByRtYXRjaDAiBnZhbFN0ciIEc3RyZiIEYWRkciIDa2V5IgRpbnRmIgh0aHJvd0VyciIDbXNnIgNmY2EiBWluRmVlIgFAIgZvdXRGZWUiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNjkwOTcwOTUiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIDZmVlIglmZWVBbW91bnQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiCWluQW1JZFN0ciIJaW5QcklkU3RyIgZhbXREY20iCHByaWNlRGNtIgRscEVtIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgFyIgtzbGlwcGFnZVgxOCIPc2xpcHBhZ2VSZWFsWDE4Ig1scEVtaXNzaW9uWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIg0kdDAxNzU2MjE3OTA3Igp3cml0ZUFtQW10Igp3cml0ZVByQW10Igtjb21tb25TdGF0ZSIDbW9hIgVvcmRlciIHYW10QXNJZCIGcHJBc0lkIg9hY2NBbXRBc0JhbGFuY2UiDmFjY1ByQXNCYWxhbmNlIgpvckFtdEFzc2V0IgpvckFtdEFzU3RyIglvclByQXNzZXQiCW9yUHJBc1N0ciIKb3JkZXJQcmljZSIOY2FzdE9yZGVyUHJpY2UiEWlzT3JkZXJQcmljZVZhbGlkIgJjZyIBaSIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10IgRnZXREIgJ4cCIBbiIDeHAwIgN4cDEiCmFQcmVjaXNpb24iAWEiAXMiA2FubiILeHAwX3hwMV9uX24iEGFubl9zX2FQcmVjaXNpb24iDmFubl9hUHJlY2lzaW9uIgJuMSIEY2FsYyIDYWNjIgNjdXIiDSR0MDIyNDU5MjI0NzkiAWQiBWZvdW5kIgJkcCIFZE5leHQiBWREaWZmIgNhcnIiDSR0MDIyOTAwMjI5NDciAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIgVnZXRZRCIBRCIBeCIBYyIBYiINJHQwMjM0NDcyMzQ2NyIBeSIFeU5leHQiBXlEaWZmIg0kdDAyMzc3NDIzODIxIg1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciC3dpdGhUYWtlRmVlIg9scEFzc2V0RW1pc3Npb24iDWNoZWNoRW1pc3Npb24iDSR0MDI0NjA0MjUwNjYiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyNTA3MjI1MjQ4IgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI1MjUyMjU1MDYiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciBmNoZWNrRCIIbHBBbW91bnQiDnBvb2xQcm9wb3J0aW9uIg9hbW91bnRBc3NldFBhcnQiDnByaWNlQXNzZXRQYXJ0IglscEFtdEJvdGgiBWJvbnVzIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDI3NTA4Mjc2MTkiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMjc4MDkyODExNiIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIgFtIgJwbSICcGQiCWlzTWFuYWdlciICcGsiAm1tIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiBmNoZWNrcyINJHQwMzM0NzgzMzYzNiIHZXN0aW1MUCIHbWF4U2xwZyIGZXN0UHV0IglvdXRBbXRBbXQiDWlzR2V0RGlzYWJsZWQiDSR0MDM2MjU4MzY0MTMiDWxwQXNzZXRBbW91bnQiCmxwRW1pc3Npb24iBWluZGV4IgRuZXdZIgJkeSILdG90YWxHZXRSYXciDSR0MDM3MjAzMzcyNTgiDSR0MDM3NjAzMzc3MTgiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiDSR0MDQxNTU2NDE3NDQiEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIg0kdDA0MjAwMzQyMTA2Ig0kdDA0MjM4NTQyNDg5IghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2htAAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEAAgABaAkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWkCBVdBVkVTAAFqAgMxMDAAAWsCATEAAWwCAl9fAAFtAgAAAW4AAQABbwACAAFwAAMAAXEABAABcgABAAFzAAIAAXQAAwABdQAEAAF2AAUAAXcABgABeAAHAAF5AAgAAXoACQABQQABAAFCAAYAAUMABwABRAAKAAFFCQBrAwAKBQFhAJBOAQFGAgFHAUgJALwCAwkAtgIBBQFHBQFjCQC2AgEFAUgBAUkCAUoBSwkAoAMBCQC8AgMFAUoJALYCAQUBSwUBYwEBTAMBTQFOAU8JAGsDBQFNBQFOBQFPAQFQAQFKAwkAvwICBQFkBQFKCQC+AgEFAUoFAUoBAVEBAUoDCQC/AgIFAWQFAUoJAL4CAQUBSgUBSgEBUgACEyVzX19mYWN0b3J5Q29udHJhY3QBAVMAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVAACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBVQACESVzJXNfX3ByaWNlX19sYXN0AQFWAgFXAVgJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFXCQDMCAIJAKQDAQUBWAUDbmlsBQFsAQFZAgFaAmFhCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWgICX18FAmFhAQJhYgIBWgJhYQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVoCAl9fBQJhYQECYWMAAg8lc19fYW1vdW50QXNzZXQBAmFkAAIOJXNfX3ByaWNlQXNzZXQBAmFlAAIHJXNfX2FtcAECYWYAAg0lc19fYWRkb25BZGRyAQJhZwACESVzX19mYWN0b3J5Q29uZmlnAQJhaAACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYWkCAmFqAmFrCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhagICX18FAmFrAghfX2NvbmZpZwECYWwBAmFtCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFtAQJhbgACDCVzX19zaHV0ZG93bgECYW8AAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYXAAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYXEDAmFyAmFzAmF0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFAmFyAgsgc25kclZhbGlkPQkApQMBBQJhcwIMIG10Y2hyVmFsaWQ9CQClAwEFAmF0AQJhdQEBSgQCYXYFAUoDCQABAgUCYXYCBlN0cmluZwQCYXcFAmF2BQJhdwkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBAmF4AgJheQJhegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmF5BQJhegkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJheQkAzAgCAgEuCQDMCAIFAmF6CQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFBAgJheQJhegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmF5BQJhegkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJheQkAzAgCAgEuCQDMCAIFAmF6CQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFCAQJhQwkAAgEJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYUMFA25pbAIBIAACYUQJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJheAIFBHRoaXMJAQFSAAACYUUKAAJhRgkA/AcEBQJhRAIQZ2V0SW5GZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFGAgNJbnQFAmFGCQACAQkArAICCQADAQUCYUYCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYUcKAAJhRgkA/AcEBQJhRAIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRgIDSW50BQJhRgkAAgEJAKwCAgkAAwEFAmFGAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFICQECYXgCBQR0aGlzCQECYWUAAQJhSQAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUQJAQJhbgAHAQJhSgAJANkEAQkBAmF4AgUCYUQJAQJhaAAAAmFLCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXgCBQJhRAkBAmFwAAECYUwABAJhTQkBAmF4AgUEdGhpcwkBAmFjAAQCYU4JAQJheAIFBHRoaXMJAQJhZAAEAmFPCQECYUECBQJhRAkBAmFsAQUCYU4EAmFqCQECYUECBQJhRAkBAmFsAQUCYU0JALUJAgkBAmF4AgUCYUQJAQJhaQIJAKQDAQUCYWoJAKQDAQUCYU8FAWwBAmFQAQJhUQMJAAACBQJhUQUBaQUEdW5pdAkA2QQBBQJhUQECYVIBAmFRAwkAAAIFAmFRBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmFRAQJhUwECYVQJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhVAUBcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFUBQFzCQDZBAEJAJEDAgUCYVQFAXQJAQJhUAEJAJEDAgUCYVQFAXUJAQJhUAEJAJEDAgUCYVQFAXYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVAUBdwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFUBQF4AAJhVQkBAmFTAQkBAmFMAAACYVYFAmFVAAJhVwgFAmFWAl8xAAJhWAgFAmFWAl8yAAJhWQgFAmFWAl8zAAJhWggFAmFWAl80AAJiYQgFAmFWAl81AAJiYggFAmFWAl82AAJiYwgFAmFWAl83AQJiZAAJALUJAgkBAmF4AgUCYUQJAQJhZwAFAWwAAmJlCQECYmQAAAJiZgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmUFAUECIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJiZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmUFAUMCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJiaAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmUFAUQCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJpCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiZQUBQgIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYmoKAmJrAmJsAmJtAmJuAmJvAmJwAmJxAmJyAmJzAmJ0CQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiawkAzAgCCQCkAwEFAmJsCQDMCAIJAKQDAQUCYm0JAMwIAgkApAMBBQJibgkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYnAJAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyCQDMCAIJAKQDAQUCYnMJAMwIAgkApAMBBQJidAUDbmlsBQFsAQJidQYCYnYCYncCYngCYm4CYnECYnIJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJidgkAzAgCCQCkAwEFAmJ3CQDMCAIJAKQDAQUCYngJAMwIAgkApAMBBQJibgkAzAgCCQCkAwEFAmJxCQDMCAIJAKQDAQUCYnIFA25pbAUBbAECYnkBAmJ6AwkAAAIFAmJ6AgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiegECYkECAmJCAmJDCQC8AgMFAmJCBQFjBQJiQwECYkQDAmJFAmJGAmJHBAJiSAkAvAIDCQC4AgIFAmJFBQJiRgUBYgUCYkYEAmJJCQC/AgIJALgCAgUCYkcJAQFQAQUCYkgFAWQDCQEBIQEFAmJJCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmJICQCUCgIFAmJJCQCZAwEJAMwIAgUCYkUJAMwIAgUCYkYFA25pbAECYkoDAmJLAmJMAmJNBAJiSAkAvAIDBQJiTAUBYgUCYksEAmJOCQC/AgIFAmJNBQJiSAMDBQJiTgYJAL8CAgUCYkwFAmJLCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJiTAIBIAkApgMBBQJiSwIBIAkApgMBBQJiSAIBIAkApgMBBQJiTQUCYk4BAmJPBAJiUAJiUQJiUgJiUwQCYlQJAQFGAgUCYlIFAmJQBAJiVQkBAUYCBQJiUwUCYlEJAQJiQQIFAmJVBQJiVAECYlYDAmJSAmJTAmJXBAJiWAkBAmFMAAQCYlkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWAUBdwQCYloJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWAUBeAQCY2EJAQJiTwQFAmJZBQJiWgUCYlIFAmJTBAJiQwkBAUYCBQJiUgUCYlkEAmJCCQEBRgIFAmJTBQJiWgQCY2IJAQFGAgUCYlcFAWEEAmNjCQECYkECBQJiQwUCY2IEAmNkCQECYkECBQJiQgUCY2IJAMwIAgUCY2EJAMwIAgUCY2MJAMwIAgUCY2QFA25pbAECY2UDAmJSAmJTAmJXBAJjZgkBAmJWAwUCYlIFAmJTBQJiVwkAzAgCCQEBSQIJAJEDAgUCY2YAAAUBYQkAzAgCCQEBSQIJAJEDAgUCY2YAAQUBYQkAzAgCCQEBSQIJAJEDAgUCY2YAAgUBYQUDbmlsAQJjZwICY2gCY2kEAmNqAwkAAAIFAmNpAAAAAAkAawMFAmNoBQJjaQUBYQkAlAoCCQBlAgUCY2gFAmNqBQJjagECY2sEAmNsAmNtAmNuAmNvBAJiWAkBAmFMAAQCY3AJAJEDAgUCYlgFAXQEAmNxCQCRAwIFAmJYBQF1BAJjcgkAkQMCBQJiWAUBdgQCY3MJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWAUBdwQCY3QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWAUBeAQCY3UJAJEDAgUCYlgFAXMEAmN2CAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3ACC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUCY3AFAmNtCQACAQIPV3JvbmcgcG10IGFzc2V0BAJjdwkBAmJ5AQUCY3EEAmN4CQEBRgIFAmN3BQJjcwQCY3kJAQJieQEFAmNyBAJjegkBAUYCBQJjeQUCY3QEAmNBCQECYkECBQJjegUCY3gEAmNCCQEBSQIFAmNBBQFhBAJjQwkBAUYCBQJjbgUBYQQCY0QJAQFGAgUCY3YFAWEEAmNFCQC8AgMFAmN4BQJjQwUCY0QEAmNGCQC8AgMFAmN6BQJjQwUCY0QEAmNHCQEBSQIFAmNFBQJjcwQCY0gJAQFJAgUCY0YFAmN0BAJjSQMJAAACBQJjbAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY28FAmNHAwkAAAIFAmNxAgVXQVZFUwUEdW5pdAkA2QQBBQJjcQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjbwUCY0gDCQAAAgUCY3ICBVdBVkVTBQR1bml0CQDZBAEFAmNyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQUCY28FAmNsCQECYnUGBQJjRwUCY0gFAmNuBQJjQgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJjQgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjQgUDbmlsCQCcCgoFAmNHBQJjSAUCY3EFAmNyBQJjdwUCY3kFAmN2BQJjQQUCY3UFAmNJAQJjSg0CY2wCYkcCY0sCY0wCY00CY04CY28CY08CY1ACY1ECY1ICY1MCY1QEAmJYCQECYUwABAJjcAkA2QQBCQCRAwIFAmJYBQF0BAJjVQkAkQMCBQJiWAUBdQQCY1YJAJEDAgUCYlgFAXYEAmNXCQCRAwIFAmJYBQF5BAJjWAkAkQMCBQJiWAUBegQCY1kJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWAUBdwQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWAUBeAQCY3UJAJEDAgUCYlgFAXMEAmRhCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNwAghXciBscCBhcwhxdWFudGl0eQQCY3cDBQJjTwkBAmJ5AQUCY1UDAwUCY1EJAAACBQJjVAUCY1UHCQBlAgkBAmJ5AQUCY1UFAmNTAwUCY1EJAQJieQEFAmNVCQBlAgkBAmJ5AQUCY1UFAmNLBAJjeQMFAmNPCQECYnkBBQJjVgMDBQJjUQkAAAIFAmNUBQJjVgcJAGUCCQECYnkBBQJjVgUCY1MDBQJjUQkBAmJ5AQUCY1YJAGUCCQECYnkBBQJjVgUCY00EAmRiCQEBRgIFAmNLBQJjWQQCZGMJAQFGAgUCY00FAmNaBAJkZAkBAmJBAgUCZGMFAmRiBAJjeAkBAUYCBQJjdwUCY1kEAmN6CQEBRgIFAmN5BQJjWgQCZGUDCQAAAgUCZGEAAAQCY0EFAWQEAmRmBQFkBAJjYgkAdgYJALkCAgUCZGIFAmRjAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSQIFAmNiBQFhCQEBSQIFAmRiBQJjWQkBAUkCBQJkYwUCY1oJAQJiQQIJALcCAgUCY3oFAmRjCQC3AgIFAmN4BQJkYgUCZGYEAmNBCQECYkECBQJjegUCY3gEAmRnCQC8AgMJAQFQAQkAuAICBQJjQQUCZGQFAWMFAmNBBAJkZgkBAUYCBQJiRwUBYQMDAwUCY1IJAQIhPQIFAmNBBQFkBwkAvwICBQJkZwUCZGYHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmRnAgMgPiAJAKYDAQUCZGYEAmRoCQEBRgIFAmRhBQFhBAJkaQkAvAIDBQJkYgUCY0EFAWMEAmRqCQC8AgMFAmRjBQFjBQJjQQQCZGsDCQC/AgIFAmRpBQJkYwkAlAoCBQJkagUCZGMJAJQKAgUCZGIFAmRpBAJkbAgFAmRrAl8xBAJkbQgFAmRrAl8yBAJjYgkAvAIDBQJkaAUCZG0FAmN6CQCXCgUJAQFJAgUCY2IFAWEJAQFJAgUCZGwFAmNZCQEBSQIFAmRtBQJjWgUCY0EFAmRmBAJkbggFAmRlAl8xBAJkbwgFAmRlAl8yBAJkcAgFAmRlAl8zBAJjQgkBAUkCCAUCZGUCXzQFAWEEAmRxCQEBSQIIBQJkZQJfNQUBYQMJAGcCAAAFAmRuCQACAQIHTFAgPD0gMAQCZHIDCQEBIQEFAmNQAAAFAmRuBAJkcwkAZQIFAmNLBQJkbwQCZHQJAGUCBQJjTQUCZHAEAmR1AwMFAmNRCQAAAgUCY1QFAmNVBwkAlAoCBQJjUwAAAwMFAmNRCQAAAgUCY1QFAmNWBwkAlAoCAAAFAmNTCQCUCgIFAmRvBQJkcAQCZHYIBQJkdQJfMQQCZHcIBQJkdQJfMgQCZHgJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY0IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCBQJjbwUCY2wJAQJiagoFAmR2BQJkdwUCZHIFAmNCBQJiRwUCZHEFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRzBQJkdAUDbmlsCQCfCg0FAmRuBQJkcgUCY0IFAmN3BQJjeQUCZGEFAmNwBQJjdQUCZHgFAmRzBQJkdAUCY0wFAmNOAQJkeQECZHoEAmJYCQECYUwABAJkQQkAkQMCBQJiWAUBdQQCZEIJAJEDAgUCYlgFAXYEAmN1CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlgFAXMEAmJZCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlgFAXcEAmJaCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlgFAXgEAmRDCQECYnkBBQJkQQQCZEQJAQJieQEFAmRCBAJjQQMJAAACCAUCZHoJb3JkZXJUeXBlBQNCdXkJAQJiTwQFAmJZBQJiWgkAZAIFAmRDCAUCZHoGYW1vdW50BQJkRAkBAmJPBAUCYlkFAmJaCQBlAgUCZEMIBQJkegZhbW91bnQFAmREBAJjQgkBAUkCBQJjQQUBYQMDAwkBAmFJAAYJAAACBQJjdQUBcAYJAAACBQJjdQUBcQkAAgECDUFkbWluIGJsb2NrZWQEAmRFCAgFAmR6CWFzc2V0UGFpcgthbW91bnRBc3NldAQCZEYDCQAAAgUCZEUFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRFBAJkRwgIBQJkeglhc3NldFBhaXIKcHJpY2VBc3NldAQCZEgDCQAAAgUCZEcFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRHAwMJAQIhPQIFAmRGBQJkQQYJAQIhPQIFAmRIBQJkQgkAAgECCVdyIGFzc2V0cwQCZEkIBQJkegVwcmljZQQCY1oJAGsDBQFhBQJiWgUCYlkEAmRKCQEBTAMFAmRJBQFhBQJjWgQCZEsDCQAAAggFAmR6CW9yZGVyVHlwZQUDQnV5CQBnAgUCY0IFAmRKCQBnAgUCZEoFAmNCBgECZEwBAmRNAwkBAiE9AgkAkAMBCAUCZE0IcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmROCQEFdmFsdWUBCQCRAwIIBQJkTQhwYXltZW50cwAABAJjbQkBBXZhbHVlAQgFAmROB2Fzc2V0SWQEAmNTCAUCZE4GYW1vdW50BAJkZQkBAmNrBAkA2AQBCAUCZE0NdHJhbnNhY3Rpb25JZAkA2AQBBQJjbQUCY1MIBQJkTQZjYWxsZXIEAmNHCAUCZGUCXzEEAmNICAUCZGUCXzIEAmN1CQENcGFyc2VJbnRWYWx1ZQEIBQJkZQJfOQQCY0kIBQJkZQNfMTADAwkBAmFJAAYJAAACBQJjdQUBcQkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmN1CQCXCgUFAmNHBQJjSAUCY1MFAmNtBQJjSQECZE8KAmRQAmFhAmRRAmRSAmJHAmNQAmNRAmNSAmNTAmNUBAJkZQkBAmNKDQUCYWEFAmJHCAkBBXZhbHVlAQUCZFEGYW1vdW50CAkBBXZhbHVlAQUCZFEHYXNzZXRJZAgJAQV2YWx1ZQEFAmRSBmFtb3VudAgJAQV2YWx1ZQEFAmRSB2Fzc2V0SWQFAmRQCQAAAgUCYWECAAUCY1AFAmNRBQJjUgUCY1MFAmNUBAJjdQkBDXBhcnNlSW50VmFsdWUBCAUCZGUCXzgDAwMJAQJhSQAGCQAAAgUCY3UFAW8GCQAAAgUCY3UFAXEJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmN1BQJkZQECZFMBAmRUBAJkVQUBZwQCZFYJAJEDAgUCZFQAAAQCZFcJAJEDAgUCZFQAAQQCZFgJAKcDAQUBagQCZFkJALkCAgkApwMBBQJhSAUCZFgEAmRaCQC3AgIFAmRWBQJkVwMJAAACBQJkWgUBZQUBZQQCZWEJALkCAgUCZFkFAmRVBAJlYgkAuQICCQC5AgIJALkCAgUCZFYFAmRXBQJkVQUCZFUEAmVjCQC6AgIJALkCAgUCZWEFAmRaBQJkWAQCZWQJALgCAgUCZWEFAmRYBAJlZQkAtwICBQJkVQUBZgoBAmVmAgJlZwJlaAQCZWkFAmVnBAJlaggFAmVpAl8xBAJlawgFAmVpAl8yAwkBAiE9AgUCZWsFBHVuaXQFAmVnBAJlbAkAugICCQC5AgIJALkCAgUCZWoFAmVqBQJlagUCZWIEAmVtCQC6AgIJALkCAgkAtwICBQJlYwkAuQICBQJlbAUCZFUFAmVqCQC3AgIJALoCAgkAuQICBQJlZAUCZWoFAmRYCQC5AgIFAmVlBQJlbAQCZW4JAQFRAQkAuAICBQJlbQkBBXZhbHVlAQUCZWoDCQDAAgIFAWYFAmVuCQCUCgIFAmVtBQJlaAkAlAoCBQJlbQUEdW5pdAQCZW8JAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZXAKAAJlcQUCZW8KAAJlcgkAkAMBBQJlcQoAAmVzCQCUCgIFAmRaBQR1bml0CgECZXQCAmV1AmV2AwkAZwIFAmV2BQJlcgUCZXUJAQJlZgIFAmV1CQCRAwIFAmVxBQJldgoBAmV3AgJldQJldgMJAGcCBQJldgUCZXIFAmV1CQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJldwIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIFAmVzAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVqCAUCZXACXzEEAmVrCAUCZXACXzIDCQECIT0CBQJlawUEdW5pdAUCZWoJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZWoBAmV4AwJkVAJkTQJleQQCZFUFAWcEAmV6CQCRAwIFAmRUAwkAAAIFAmRNAAAAAQAABAJkWAkApwMBBQFqBAJkWQkAuQICCQCnAwEFAmFIBQJkWAQCZFoFAmV6BAJlYQkAuQICBQJkWQUCZFUEAmVBCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXkFAmV5CQC5AgIFAmV6BQJkVQUCZXkFAmRYCQC5AgIFAmVhBQJkVQQCZUIJALgCAgkAtwICBQJkWgkAugICCQC5AgIFAmV5BQJkWAUCZWEFAmV5CgECZWYCAmVnAmVoBAJlQwUCZWcEAmVECAUCZUMCXzEEAmVrCAUCZUMCXzIDCQECIT0CBQJlawUEdW5pdAUCZWcEAmVFCQC6AgIJALcCAgkAuQICBQJlRAUCZUQFAmVBCQC3AgIJALkCAgUBZwUCZUQFAmVCBAJlRgkBAVEBCQC4AgIFAmVFCQEFdmFsdWUBBQJlRAMJAMACAgUBZgUCZUYJAJQKAgUCZUUFAmVoCQCUCgIFAmVFBQR1bml0BAJlbwkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlRwoAAmVxBQJlbwoAAmVyCQCQAwEFAmVxCgACZXMJAJQKAgUCZXkFBHVuaXQKAQJldAICZXUCZXYDCQBnAgUCZXYFAmVyBQJldQkBAmVmAgUCZXUJAJEDAgUCZXEFAmV2CgECZXcCAmV1AmV2AwkAZwIFAmV2BQJlcgUCZXUJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmV3AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgUCZXMAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUQIBQJlRwJfMQQCZWsIBQJlRwJfMgMJAQIhPQIFAmVrBQR1bml0BQJlRAkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlRAECZUgFAmVJAmNtAmNvAmFhAmVKBAJhVAkBAmFMAAQCY3EJAJEDAgUCYVQFAXUEAmNyCQCRAwIFAmFUBQF2BAJjcAkAkQMCBQJhVAUBdAQCY1kJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVAUBdwQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVAUBeAQCZUsJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNwAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJlTAMJAL8CAgUCZUsFAWUGCQACAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJlTAUCZUwEAmN3CQECYnkBBQJjcQQCY3kJAQJieQEFAmNyBAJlTQMJAAACBQJhYQIACQCUCgIFAmN3BQJjeQMJAAACBQJjbQUCY3EDCQBmAgUCZUkFAmN3CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY3cFAmVJBQJjeQMJAAACBQJjbQUCY3IDCQBmAgUCZUkFAmN5CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjdwkAZQIFAmN5BQJlSQkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmVOCAUCZU0CXzEEAmVPCAUCZU0CXzIEAmVQAwkAAAIFAmNtBQJjcQkAlAoCBQJlSQAAAwkAAAIFAmNtBQJjcgkAlAoCAAAFAmVJCQACAQIPaW52YWxpZCBwYXltZW50BAJlUQgFAmVQAl8xBAJlUggFAmVQAl8yBAJlUwMFAmVKCQCVCgMICQECY2cCBQJlUQUCYUUCXzEICQECY2cCBQJlUgUCYUUCXzEICQECY2cCBQJlSQUCYUUCXzIJAJUKAwUCZVEFAmVSAAAEAmVUCAUCZVMCXzEEAmVVCAUCZVMCXzIEAmNqCAUCZVMCXzMEAmVWCQBkAgUCZU4FAmVUBAJlVwkAZAIFAmVPBQJlVQQCYkwJAQJkUwEJAMwIAgkAtgIBBQJlTgkAzAgCCQC2AgEFAmVPBQNuaWwEAmJLCQECZFMBCQDMCAIJALYCAQUCZVYJAMwIAgkAtgIBBQJlVwUDbmlsBAJlWAMJAL8CAgUCYksFAmJMBgkBBXRocm93AAMJAAACBQJlWAUCZVgEAmVZCQC8AgMFAmVLCQC4AgIFAmJLBQJiTAUCYkwEAmNCCQEBSQIJAQJiQQIJAQFGAgUCZVcFAmNaCQEBRgIFAmVWBQJjWQUBYQQCZHgJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY0IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCBQJjbwUCYWEJAQJiagoFAmVRBQJlUgkAoAMBBQJlWQUCY0IAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJlWgkAawMFAmVPBQFhBQJlTgQCZmEJAGsDBQJlSQUBYQkAZAIFAmVaBQFhBAJmYgkAZQIFAmVJBQJmYQQCZmMJALwCAwUCZUsJALYCAQUCZmIJALYCAQUCZU8EAmZkCQCgAwEJALwCAwkAuAICBQJlWQUCZmMFAWIFAmZjCQCWCgQJAKADAQUCZVkFAmR4BQJjagUCZmQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZlBgJmZgJmZwJmaAJkUAJmaQJmagQCYVQJAQJhTAAEAmNwCQCRAwIFAmFUBQF0BAJjcQkAkQMCBQJhVAUBdQQCY3IJAJEDAgUCYVQFAXYEAmZrCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVQFAXcEAmZsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVQFAXgEAmZtCQCRAwIFAmFUBQFzBAJjbwMJAAACBQJkUAUCYmkFAmZpBQJkUAQCZE4JAQV2YWx1ZQEJAJEDAgUCZmgAAAQCY20JAQV2YWx1ZQEIBQJkTgdhc3NldElkBAJjUwgFAmROBmFtb3VudAQCY2wJANgEAQUCZmoDCQECIT0CBQJjcAkA2AQBBQJjbQkAAgECCFdyb25nIExQBAJjdwkBAmJ5AQUCY3EEAmN5CQECYnkBBQJjcgQCZm4KAAJhRgkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZmCQDMCAIFAmNTBQNuaWwFA25pbAMJAAECBQJhRgIKKEludCwgSW50KQUCYUYJAAIBCQCsAgIJAAMBBQJhRgIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJmbgUCZm4EAmNqCAUCZm4CXzIEAmZvCAUCZm4CXzEEAmZwAwMJAGYCBQJmZwAACQBmAgUCZmcFAmZvBwkBAmFCAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmZwUDbmlsAgAFAmZvBAJmcQMJAAACBQJmZgUCY3EJAJYKBAUCZnAAAAkAZQIJAGUCBQJjdwUCZnAFAmNqBQJjeQMJAAACBQJmZgUCY3IJAJYKBAAABQJmcAUCY3cJAGUCCQBlAgUCY3kFAmZwBQJjagkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJmcggFAmZxAl8xBAJmcwgFAmZxAl8yBAJlVggFAmZxAl8zBAJlVwgFAmZxAl80BAJmdAkBAmJBAgkBAUYCBQJlVwUCZmwJAQFGAgUCZVYFAmZrBAJmdQkBAUkCBQJmdAUBYQQCZnYDCQAAAgUCZmYCBVdBVkVTBQR1bml0CQDZBAEFAmZmBAJmdwMJAGYCBQJjagAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFLBQJjagUCZnYFA25pbAUDbmlsBAJjSQkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNvBQJmcAUCZnYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgkApQgBBQJjbwUCY2wJAQJidQYFAmZyBQJmcwUCY1MFAmZ1BQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmZ1CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZ1BQNuaWwFAmZ3AwkAAAIFAmNJBQJjSQQCZngJAPwHBAUCYUQCBGJ1cm4JAMwIAgUCY1MFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY20FAmNTBQNuaWwDCQAAAgUCZngFAmZ4CQCUCgIFAmNJBQJmcAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZnkABAJhdgkAoggBCQEBUwADCQABAgUCYXYCBlN0cmluZwQCZFoFAmF2CQDZBAEFAmRaAwkAAQIFAmF2AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmZ6AAQCYXYJAKIIAQkBAVQAAwkAAQIFAmF2AgZTdHJpbmcEAmRaBQJhdgkA2QQBBQJkWgMJAAECBQJhdgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJmQQkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJmQgECZE0EAmF2CQECZnkAAwkAAQIFAmF2AgpCeXRlVmVjdG9yBAJmQwUCYXYJAAACCAUCZE0PY2FsbGVyUHVibGljS2V5BQJmQwMJAAECBQJhdgIEVW5pdAkAAAIIBQJkTQZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZkQBAmRNBAJhdgkBAmZ5AAMJAAECBQJhdgIKQnl0ZVZlY3RvcgQCZkMFAmF2AwkAAAIIBQJkTQ9jYWxsZXJQdWJsaWNLZXkFAmZDBgUCZkEDCQABAgUCYXYCBFVuaXQDCQAAAggFAmRNBmNhbGxlcgUEdGhpcwYFAmZBCQACAQILTWF0Y2ggZXJyb3IbAmRNAQtjb25zdHJ1Y3RvcgEBUgQCZUEJAQJmRAEFAmRNAwkAAAIFAmVBBQJlQQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgAFAVIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTQEKc2V0TWFuYWdlcgECZkUEAmVBCQECZkQBBQJkTQMJAAACBQJlQQUCZUEEAmZGCQDZBAEFAmZFAwkAAAIFAmZGBQJmRgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAAFAmZFBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE0BDmNvbmZpcm1NYW5hZ2VyAAQCY2YJAQJmegAEAmZHAwkBCWlzRGVmaW5lZAEFAmNmBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmRwUCZkcEAmZIAwkAAAIIBQJkTQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmNmBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmSAUCZkgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMACQDYBAEJAQV2YWx1ZQEFAmNmCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFUAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRNAQNwdXQCAmZJAmZKBAJmSwkBAmJkAAQCZkwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZLBQFBAgpXciBzdCBhZGRyBAJmTQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZksFAUMCCldyIHNsIGFkZHIDCQBmAgAABQJmSQkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCZE0IcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZk4JAQJkTwoJAKUIAQgFAmRNBmNhbGxlcgkA2AQBCAUCZE0NdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkTQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkTQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZE0IcGF5bWVudHMAAQUCZkkGBwYAAAIABAJkcggFAmZOAl8yBAJmTwgFAmZOAl83BAJjSQgFAmZOAl85BAJkcwgFAmZOA18xMAQCZHQIBQJmTgNfMTEEAmNxCAUCZk4DXzEyBAJjcggFAmZOA18xMwQCZGUJAPwHBAUCYUQCBGVtaXQJAMwIAgUCZHIFA25pbAUDbmlsAwkAAAIFAmRlBQJkZQQCZlAEAmF2BQJkZQMJAAECBQJhdgIHQWRkcmVzcwQCZlEFAmF2CQD8BwQFAmZRAgRlbWl0CQDMCAIFAmRyBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmUAUCZlAEAmZSAwkAZgIFAmRzAAAJAPwHBAUCZk0CA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcQUCZHMFA25pbAUDbmlsAwkAAAIFAmZSBQJmUgQCZlMDCQBmAgUCZHQAAAkA/AcEBQJmTQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNyBQJkdAUDbmlsBQNuaWwDCQAAAgUCZlMFAmZTBAJmVAMFAmZKBAJmVQkA/AcEBQJmTAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZk8FAmRyBQNuaWwDCQAAAgUCZlUFAmZVBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRNBmNhbGxlcgUCZHIFAmZPBQNuaWwJAM4IAgUCY0kFAmZUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRNAQtwdXRPbmVUa25WMgICZmcCZkoEAmZWCgACYUYJAPwHBAUCYUQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRgIHQm9vbGVhbgUCYUYJAAIBCQCsAgIJAAMBBQJhRgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZlcDAwMJAQJhSQAGCQAAAgUCYVgFAW8GCQAAAgUCYVgFAXEGBQJmVgQCZlgJAMwIAgMDCQEBIQEFAmZXBgkBAmZCAQUCZE0GCQECYUIBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkTQhwYXltZW50cwABBgkBAmFCAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlgFAmZYBAJhVAkBAmFMAAQCY3EJAJEDAgUCYVQFAXUEAmNyCQCRAwIFAmFUBQF2BAJjcAkA2QQBCQCRAwIFAmFUBQF0BAJmawkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFUBQF3BAJmbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFUBQF4BAJjbwMJAAACCAUCZE0GY2FsbGVyBQR0aGlzCAUCZE0Mb3JpZ2luQ2FsbGVyCAUCZE0GY2FsbGVyBAJkTgkBBXZhbHVlAQkAkQMCCAUCZE0IcGF5bWVudHMAAAQCY20JANgEAQkBBXZhbHVlAQgFAmROB2Fzc2V0SWQEAmNTCAUCZE4GYW1vdW50BAJmWQkBAmVIBQUCY1MFAmNtCQClCAEFAmNvCQDYBAEIBQJkTQ10cmFuc2FjdGlvbklkBgMJAAACBQJmWQUCZlkEAmNqCAUCZlkCXzMEAmNJCAUCZlkCXzIEAmZaCAUCZlkCXzEEAmRyAwMJAGYCBQJmZwAACQBmAgUCZmcFAmZaBwkBAmFCAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmZwUDbmlsAgAFAmZaBAJmTgkA/AcEBQJhRAIEZW1pdAkAzAgCBQJkcgUDbmlsBQNuaWwDCQAAAgUCZk4FAmZOBAJmUAQCYXYFAmZOAwkAAQIFAmF2AgdBZGRyZXNzBAJmUQUCYXYJAPwHBAUCZlECBGVtaXQJAMwIAgUCZHIFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZQBQJmUAQCZlQDBQJmSgQCZlUJAPwHBAUCYmYCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNwBQJkcgUDbmlsAwkAAAIFAmZVBQJmVQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkTQZjYWxsZXIFAmRyBQJjcAUDbmlsBAJmdwMJAGYCBQJjagAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFLBQJjagkA2QQBBQJjbQUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNJBQJmVAUCZncFAmRyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRNAQpwdXRGb3JGcmVlAQJnYQMJAGYCAAAFAmdhCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmRNCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmdiCQECZE8KCQClCAEIBQJkTQZjYWxsZXIJANgEAQgFAmRNDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZE0IcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZE0IcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRNCHBheW1lbnRzAAEFAmdhBwcGAAACAAgFAmdiAl85AmRNAQNnZXQABAJkZQkBAmRMAQUCZE0EAmdjCAUCZGUCXzEEAmNICAUCZGUCXzIEAmNTCAUCZGUCXzMEAmNtCAUCZGUCXzQEAmNJCAUCZGUCXzUEAmVCCQD8BwQFAmFEAgRidXJuCQDMCAIFAmNTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNtBQJjUwUDbmlsAwkAAAIFAmVCBQJlQgUCY0kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE0BC2dldE9uZVRrblYyAgJmZgJmZwQCZlYKAAJhRgkA/AcEBQJhRAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFGAgdCb29sZWFuBQJhRgkAAgEJAKwCAgkAAwEFAmFGAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnZAMDCQECYUkABgkAAAIFAmFYBQFxBgUCZlYEAmZYCQDMCAIDAwkBASEBBQJnZAYJAQJmQgEFAmRNBgkBAmFCAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZE0IcGF5bWVudHMAAQYJAQJhQgECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZYBQJmWAQCZ2UJAQJmZQYFAmZmBQJmZwgFAmRNCHBheW1lbnRzCAUCZE0GY2FsbGVyCAUCZE0Mb3JpZ2luQ2FsbGVyCAUCZE0NdHJhbnNhY3Rpb25JZAQCY0kIBQJnZQJfMQQCZnAIBQJnZQJfMgkAlAoCBQJjSQUCZnAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE0BE2dldE9uZVRrblYyUkVBRE9OTFkCAmZmAmdmBAJhVAkBAmFMAAQCY3EJAJEDAgUCYVQFAXUEAmNyCQCRAwIFAmFUBQF2BAJjcAkAkQMCBQJhVAUBdAQCZFQJAMwIAgkAtgIBCQECYnkBBQJjcQkAzAgCCQC2AgEJAQJieQEFAmNyBQNuaWwEAmdnCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjcAIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCYkwJAQJkUwEFAmRUBAJiSwkAuAICBQJiTAkAvAIDCQC2AgEFAmdmBQJiTAUCZ2cEAmdoAwkAAAIFAmZmBQJjcQAAAwkAAAIFAmZmBQJjcgABCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmdpCQECZXgDBQJkVAUCZ2gFAmJLBAJnagkAuAICCQCRAwIFAmRUBQJnaAUCZ2kEAmdrCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAuAICBQJnagUBZgUDbmlsBAJnbAkBAmNnAgUCZ2sFAmFHBAJmbwgFAmdsAl8xBAJjaggFAmdsAl8yCQCUCgIFA25pbAkAlAoCBQJmbwUCY2oCZE0BHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmZmAmdmBAJhVAkBAmFMAAQCY3EJAJEDAgUCYVQFAXUEAmNyCQCRAwIFAmFUBQF2BAJjcAkAkQMCBQJhVAUBdAQCY3cJAQJieQEFAmNxBAJjeQkBAmJ5AQUCY3IEAmdtCgACYUYJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmZgkAzAgCBQJnZgUDbmlsBQNuaWwDCQABAgUCYUYCCihJbnQsIEludCkFAmFGCQACAQkArAICCQADAQUCYUYCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmZvCAUCZ20CXzEEAmNqCAUCZ20CXzIEAmRlCQECY2sEAgAFAmNwBQJnZgUEdGhpcwQCY0cIBQJkZQJfMQQCY0gIBQJkZQJfMgQCZ24JAGQCBQJjRwUCY0gEAmZkAwkAAAIFAmduAAADCQAAAgUCZm8AAAAACQACAQIXYm9udXMgY2FsY3VsYXRpb24gZXJyb3IJAGsDCQBlAgUCZm8FAmduBQFhBQJnbgkAlAoCBQNuaWwJAJUKAwUCZm8FAmNqBQJmZAJkTQEJZ2V0Tm9MZXNzAgJnbwJncAQCZGUJAQJkTAEFAmRNBAJjRwgFAmRlAl8xBAJjSAgFAmRlAl8yBAJjUwgFAmRlAl8zBAJjbQgFAmRlAl80BAJjSQgFAmRlAl81AwkAZgIFAmdvBQJjRwkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQJjRwIDIDwgCQCkAwEFAmdvAwkAZgIFAmdwBQJjSAkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFAmNIAgMgPCAJAKQDAQUCZ3AEAmdxCQD8BwQFAmFEAgRidXJuCQDMCAIFAmNTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNtBQJjUwUDbmlsAwkAAAIFAmdxBQJncQUCY0kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE0BDXVuc3Rha2VBbmRHZXQBAmNoBAJncgMJAQIhPQIJAJADAQgFAmRNCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQJncgUCZ3IEAmJYCQECYUwABAJncwkBAmJkAAQCZk8JANkEAQkAkQMCBQJiWAUBdAQCZ3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdzBQFBAgpXciBzdCBhZGRyBAJndQkA/AcEBQJndAIHdW5zdGFrZQkAzAgCCQDYBAEFAmZPCQDMCAIFAmNoBQNuaWwFA25pbAMJAAACBQJndQUCZ3UEAmRlCQECY2sECQDYBAEIBQJkTQ10cmFuc2FjdGlvbklkCQDYBAEFAmZPBQJjaAgFAmRNBmNhbGxlcgQCY3UJAQ1wYXJzZUludFZhbHVlAQgFAmRlAl85BAJjSQgFAmRlA18xMAQCZ3YDAwkBAmFJAAYJAAACBQJjdQUBcQkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFAmN1BgMJAAACBQJndgUCZ3YEAmd3CQD8BwQFAmFEAgRidXJuCQDMCAIFAmNoBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZPBQJjaAUDbmlsAwkAAAIFAmd3BQJndwUCY0kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE0BE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmd4Amd5AmdwBAJnZAMJAQJhSQAGCQAAAgUCYVgFAXEEAmZYCQDMCAIDCQEBIQEFAmdkBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRNCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlgFAmZYBAJndQkA/AcEBQJiZgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFZCQDMCAIFAmd4BQNuaWwFA25pbAMJAAACBQJndQUCZ3UEAmd6CQECY2sECQDYBAEIBQJkTQ10cmFuc2FjdGlvbklkCQDYBAEFAmFZBQJneAgFAmRNBmNhbGxlcgQCY0cIBQJnegJfMQQCY0gIBQJnegJfMgQCY0kIBQJnegNfMTAEAmdBCQDMCAIDCQBnAgUCY0cFAmd5BgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmd5BQNuaWwCAAkAzAgCAwkAZwIFAmNIBQJncAYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmdwBQNuaWwCAAUDbmlsAwkAAAIFAmdBBQJnQQQCZ3EJAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZ3gFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVkFAmd4BQNuaWwDCQAAAgUCZ3EFAmdxBQJjSQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTQEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJneAJmZgJmZwQCZlYKAAJhRgkA/AcEBQJhRAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFGAgdCb29sZWFuBQJhRgkAAgEJAKwCAgkAAwEFAmFGAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnZAMDCQECYUkABgkAAAIFAmFYBQFxBgUCZlYEAmZYCQDMCAIDAwkBASEBBQJnZAYJAQJmQgEFAmRNBgkBAmFCAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZE0IcGF5bWVudHMAAAYJAQJhQgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZYBQJmWAQCYlgJAQJhTAAEAmdzCQECYmQABAJmTwkA2QQBCQCRAwIFAmJYBQF0BAJndAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ3MFAUECCldyIHN0IGFkZHIEAmd1CQD8BwQFAmd0Agd1bnN0YWtlCQDMCAIJANgEAQUCZk8JAMwIAgUCZ3gFA25pbAUDbmlsAwkAAAIFAmd1BQJndQQCZ0IJAQJmZQYFAmZmBQJmZwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZk8FAmd4BQNuaWwIBQJkTQZjYWxsZXIIBQJkTQxvcmlnaW5DYWxsZXIIBQJkTQ10cmFuc2FjdGlvbklkBAJjSQgFAmdCAl8xBAJmcAgFAmdCAl8yCQCUCgIFAmNJBQJmcAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTQEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZ0MCZ0QEAmFUCQECYUwABAJjcQkAkQMCBQJhVAUBdQQCY3IJAJEDAgUCYVQFAXYEAmNwCQCRAwIFAmFUBQF0BAJnRQkBAmVIBQUCZ0MFAmdEAgACAAYEAmVZCAUCZ0UCXzEEAmNJCAUCZ0UCXzIEAmNqCAUCZ0UCXzMEAmZkCAUCZ0UCXzQJAJQKAgUDbmlsCQCVCgMFAmVZBQJjagUCZmQCZE0BIXB1dE9uZVRrblYyV2l0aG91dFRha2VGZWVSRUFET05MWQICZ0MCZ0QEAmFUCQECYUwABAJjcQkAkQMCBQJhVAUBdQQCY3IJAJEDAgUCYVQFAXYEAmNwCQCRAwIFAmFUBQF0BAJnRgkBAmVIBQUCZ0MFAmdEAgACAAcEAmVZCAUCZ0YCXzEEAmNJCAUCZ0YCXzIEAmNqCAUCZ0YCXzMEAmZkCAUCZ0YCXzQJAJQKAgUDbmlsCQCVCgMFAmVZBQJjagUCZmQCZE0BCGFjdGl2YXRlAgJnRwJnSAMJAQIhPQIJAKUIAQgFAmRNBmNhbGxlcgkApQgBBQJhRAkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwAFAmdHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAAFAmdIBQNuaWwCB3N1Y2Nlc3MCZE0BBHNldFMCAmdJAmd2AwkBAiE9AgkApQgBCAUCZE0GY2FsbGVyCQECYXgCBQR0aGlzCQECYWYABQJmQQkAzAgCCQELU3RyaW5nRW50cnkCBQJnSQUCZ3YFA25pbAJkTQEEc2V0SQICZ0kCZ3YDCQECIT0CCQClCAEIBQJkTQZjYWxsZXIJAQJheAIFBHRoaXMJAQJhZgAFAmZBCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJnSQUCZ3YFA25pbAJkTQEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYUwAAmRNARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJiegkAlAoCBQNuaWwJAQJieQEFAmJ6AmRNARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJiUgJiUwJiVwQCZ0oJAQJiVgMFAmJSBQJiUwUCYlcJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJnSgAACQDMCAIJAKYDAQkAkQMCBQJnSgABCQDMCAIJAKYDAQkAkQMCBQJnSgACBQNuaWwCZE0BFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUoCZ0sJAJQKAgUDbmlsCQEBSQIJAKcDAQUBSgUCZ0sCZE0BFHRvWDE4V3JhcHBlclJFQURPTkxZAgFHAUgJAJQKAgUDbmlsCQCmAwEJAQFGAgUBRwUBSAJkTQEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiQgJiQwkAlAoCBQNuaWwJAKYDAQkBAmJBAgkApwMBBQJiQgkApwMBBQJiQwJkTQEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmNsAmJHAmNLAmNMAmNNAmNOAmdMAmNPAmNQCQCUCgIFA25pbAkBAmNKDQUCY2wFAmJHBQJjSwUCY0wFAmNNBQJjTgUCZ0wFAmNPBQJjUAYHAAACAAJkTQEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmNsAmdNAmNuAmdMBAJkZQkBAmNrBAUCY2wFAmdNBQJjbgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ0wJAJQKAgUDbmlsCQCcCgoIBQJkZQJfMQgFAmRlAl8yCAUCZGUCXzMIBQJkZQJfNAgFAmRlAl81CAUCZGUCXzYIBQJkZQJfNwkApgMBCAUCZGUCXzgIBQJkZQJfOQgFAmRlA18xMAECZ04BAmdPAAQCZ1AEAmF2CQECZnkAAwkAAQIFAmF2AgpCeXRlVmVjdG9yBAJmQwUCYXYFAmZDAwkAAQIFAmF2AgRVbml0CAUCZ04Pc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmF2BQJnTgMJAAECBQJhdgIFT3JkZXIEAmR6BQJhdgQCZ1EJAQJhSgAEAmdSCQECZHkBBQJkegQCZ1MJAPQDAwgFAmR6CWJvZHlCeXRlcwkAkQMCCAUCZHoGcHJvb2ZzAAAIBQJkeg9zZW5kZXJQdWJsaWNLZXkEAmdUCQD0AwMIBQJkeglib2R5Qnl0ZXMJAJEDAggFAmR6BnByb29mcwABBQJnUQMDAwUCZ1IFAmdTBwUCZ1QHBgkBAmFxAwUCZ1IFAmdTBQJnVAMJAAECBQJhdgIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmRaBQJhdgQCZ1UJAPYDAQkBBXZhbHVlAQgFAmRaBnNjcmlwdAQCZ1YJANsEAQkBBXZhbHVlAQkAnQgCBQJhRAkBAmFvAAQCZ1cJAPEHAQUEdGhpcwMDCQAAAgUCZ1YFAmdVCQECIT0CBQJnVwUCZ1UHBgkA9AMDCAUCZ04JYm9keUJ5dGVzCQCRAwIIBQJnTgZwcm9vZnMAAAUCZ1AJAPQDAwgFAmdOCWJvZHlCeXRlcwkAkQMCCAUCZ04GcHJvb2ZzAAAFAmdQf6Cfrw==", "chainId": 84, "height": 2362679, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7x6iboFTkL424tAYvrX7d34eUgZe2JMyAM6u2maXdMGv Next: 5YqmQs9LJgvf7CqAUrmjmKwzHDu7sfBp3M44qepzouva Diff:
OldNewDifferences
1515
1616 let g = toBigInt(2)
1717
18-let h = toBigInt(3)
18+let h = toBigInt((a - ((a * 1) / a)))
1919
20-let i = toBigInt(4)
20+let i = "WAVES"
2121
22-let j = toBigInt((a - ((a * 1) / a)))
22+let j = "100"
2323
24-let k = "WAVES"
24+let k = "1"
2525
26-let l = "100"
26+let l = "__"
2727
28-let m = "1"
28+let m = ""
2929
30-let n = "__"
30+let n = 1
3131
32-let o = ""
32+let o = 2
3333
34-let p = 1
34+let p = 3
3535
36-let q = 2
36+let q = 4
3737
38-let r = 3
38+let r = 1
3939
40-let s = 4
40+let s = 2
4141
42-let t = 1
42+let t = 3
4343
44-let u = 2
44+let u = 4
4545
46-let v = 3
46+let v = 5
4747
48-let w = 4
48+let w = 6
4949
50-let x = 5
50+let x = 7
5151
52-let y = 6
52+let y = 8
5353
54-let z = 7
54+let z = 9
5555
56-let A = 8
56+let A = 1
5757
58-let B = 9
58+let B = 6
5959
60-let C = 1
60+let C = 7
6161
62-let D = 6
62+let D = 10
6363
64-let E = 7
64+let E = fraction(10, a, 10000)
6565
66-let F = 10
67-
68-let G = fraction(10, a, 10000)
69-
70-func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
66+func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
7167
7268
73-func K (L,M) = toInt(fraction(L, toBigInt(M), c))
69+func I (J,K) = toInt(fraction(J, toBigInt(K), c))
7470
7571
76-func N (O,P,Q) = fraction(O, P, Q)
72+func L (M,N,O) = fraction(M, N, O)
7773
7874
79-func R (L) = if ((d > L))
80- then -(L)
81- else L
75+func P (J) = if ((d > J))
76+ then -(J)
77+ else J
8278
8379
84-func S (L) = if ((d > L))
85- then -(L)
86- else L
80+func Q (J) = if ((d > J))
81+ then -(J)
82+ else J
8783
8884
89-func T () = "%s__factoryContract"
85+func R () = "%s__factoryContract"
9086
9187
92-func U () = "%s__managerPublicKey"
88+func S () = "%s__managerPublicKey"
9389
9490
95-func V () = "%s__pendingManagerPublicKey"
91+func T () = "%s__pendingManagerPublicKey"
9692
9793
98-func W () = "%s%s__price__last"
94+func U () = "%s%s__price__last"
9995
10096
101-func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], n)
97+func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
10298
10399
104-func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
100+func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
105101
106102
107-func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
103+func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
108104
109105
110-func ae () = "%s__amountAsset"
106+func ac () = "%s__amountAsset"
111107
112108
113-func af () = "%s__priceAsset"
109+func ad () = "%s__priceAsset"
114110
115111
116-func ag () = "%s__amp"
112+func ae () = "%s__amp"
117113
118114
119-func ah () = "%s__addonAddr"
115+func af () = "%s__addonAddr"
120116
121117
122-let ai = "%s__fee"
123-
124-let aj = valueOrElse(getInteger(this, ai), G)
125-
126-let ak = makeString(["%s", "dLp"], n)
127-
128-let al = makeString(["%s", "dLpRefreshedHeight"], n)
129-
130-let am = makeString(["%s", "refreshDLpDelay"], n)
131-
132-let an = 1
133-
134-let ao = valueOrElse(getInteger(this, am), an)
135-
136-func ap () = "%s__factoryConfig"
118+func ag () = "%s__factoryConfig"
137119
138120
139-func aq () = "%s%s__matcher__publicKey"
121+func ah () = "%s%s__matcher__publicKey"
140122
141123
142-func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
124+func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
143125
144126
145-func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
127+func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
146128
147129
148-func aw () = "%s__shutdown"
130+func an () = "%s__shutdown"
149131
150132
151-func ax () = "%s__allowedLpStableScriptHash"
133+func ao () = "%s__allowedLpStableScriptHash"
152134
153135
154-func ay () = "%s__feeCollectorAddress"
136+func ap () = "%s__feeCollectorAddress"
155137
156138
157-func az (aA,aB,aC) = throw(((((("Failed: ordValid=" + toString(aA)) + " sndrValid=") + toString(aB)) + " mtchrValid=") + toString(aC)))
139+func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
158140
159141
160-func aD (L) = {
161- let aE = L
162- if ($isInstanceOf(aE, "String"))
142+func au (J) = {
143+ let av = J
144+ if ($isInstanceOf(av, "String"))
163145 then {
164- let aF = aE
165- aF
146+ let aw = av
147+ aw
166148 }
167149 else throw("fail cast to String")
168150 }
169151
170152
171-func aG (aH,aI) = valueOrErrorMessage(getString(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
153+func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
172154
173155
174-func aJ (aH,aI) = valueOrErrorMessage(getInteger(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
156+func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
175157
176158
177-func aK (aL) = throw(makeString(["lp_stable.ride:", aL], " "))
159+func aB (aC) = throw(makeString(["lp_stable.ride:", aC], " "))
178160
179161
180-func aM (aL) = makeString(["lp_stable.ride:", aL], " ")
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)
181181
182182
183-let aN = addressFromStringValue(aG(this, T()))
184-
185-let aO = aG(this, ag())
186-
187-func aP () = valueOrElse(getBoolean(aN, aw()), false)
183+func aJ () = fromBase58String(ax(aD, ah()))
188184
189185
190-func aQ () = fromBase58String(aG(aN, aq()))
186+let aK = addressFromStringValue(ax(aD, ap()))
191187
192-
193-let aR = addressFromStringValue(aG(aN, ay()))
194-
195-func aS () = {
196- let aT = aG(this, ae())
197- let aU = aG(this, af())
198- let aV = aJ(aN, au(aU))
199- let as = aJ(aN, au(aT))
200- split(aG(aN, ar(toString(as), toString(aV))), n)
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)
201194 }
202195
203196
204-func aW (aX) = if ((aX == k))
197+func aP (aQ) = if ((aQ == i))
205198 then unit
206- else fromBase58String(aX)
199+ else fromBase58String(aQ)
207200
208201
209-func aY (aX) = if ((aX == unit))
210- then k
211- else toBase58String(value(aX))
202+func aR (aQ) = if ((aQ == unit))
203+ then i
204+ else toBase58String(value(aQ))
212205
213206
214-func aZ (ba) = $Tuple7(addressFromStringValue(ba[t]), parseIntValue(ba[u]), fromBase58String(ba[v]), aW(ba[w]), aW(ba[x]), parseIntValue(ba[y]), parseIntValue(ba[z]))
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]))
215208
216209
217-let bb = aZ(aS())
210+let aU = aS(aL())
218211
219-let bc = bb
212+let aV = aU
220213
221-let bd = bc._1
214+let aW = aV._1
222215
223-let be = bc._2
216+let aX = aV._2
224217
225-let bf = bc._3
218+let aY = aV._3
226219
227-let bg = bc._4
220+let aZ = aV._4
228221
229-let bh = bc._5
222+let ba = aV._5
230223
231-let bi = bc._6
224+let bb = aV._6
232225
233-let bj = bc._7
226+let bc = aV._7
234227
235-func bk () = split(aG(aN, ap()), n)
228+func bd () = split(ax(aD, ag()), l)
236229
237230
238-let bl = bk()
231+let be = bd()
239232
240-let bm = valueOrErrorMessage(addressFromString(bl[C]), "Invalid staking contract address")
233+let bf = valueOrErrorMessage(addressFromString(be[A]), "Invalid staking contract address")
241234
242-let bn = valueOrErrorMessage(addressFromString(bl[E]), "Invalid slipage contract address")
235+let bg = valueOrErrorMessage(addressFromString(be[C]), "Invalid slipage contract address")
243236
244-let bo = valueOrErrorMessage(addressFromString(bl[F]), "Invalid gwx contract address")
237+let bh = valueOrErrorMessage(addressFromString(be[D]), "Invalid gwx contract address")
245238
246-let bp = valueOrErrorMessage(addressFromString(bl[D]), "Invalid gwx contract address")
239+let bi = valueOrErrorMessage(addressFromString(be[B]), "Invalid gwx contract address")
247240
248-func bq (br,bs,bt,bu,bv,bw,bx,by,bz,bA) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA)], n)
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)
249242
250243
251-func bB (bC,bD,bE,bu,bx,by) = makeString(["%d%d%d%d%d%d", toString(bC), toString(bD), toString(bE), toString(bu), toString(bx), toString(by)], n)
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)
252245
253246
254-func bF (bG) = if ((bG == "WAVES"))
247+func by (bz) = if ((bz == "WAVES"))
255248 then wavesBalance(this).available
256- else assetBalance(this, fromBase58String(bG))
249+ else assetBalance(this, fromBase58String(bz))
257250
258251
259-func bH (bI,bJ) = fraction(bI, c, bJ)
252+func bA (bB,bC) = fraction(bB, c, bC)
260253
261254
262-func bK (bL,bM,bN) = {
263- let bO = fraction((bL - bM), b, bM)
264- let bP = ((bN - R(bO)) > d)
265- if (!(bP))
266- then throw(("Big slpg: " + toString(bO)))
267- else $Tuple2(bP, min([bL, bM]))
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]))
268261 }
269262
270263
271-func bQ (bR,bS,bT) = {
272- let bO = fraction(bS, b, bR)
273- let bU = (bT > bO)
274- if (if (bU)
264+func bJ (bK,bL,bM) = {
265+ let bH = fraction(bL, b, bK)
266+ let bN = (bM > bH)
267+ if (if (bN)
275268 then true
276- else (bS > bR))
277- then throw(((((((toString(bS) + " ") + toString(bR)) + " ") + toString(bO)) + " ") + toString(bT)))
278- else bU
269+ else (bL > bK))
270+ then throw(((((((toString(bL) + " ") + toString(bK)) + " ") + toString(bH)) + " ") + toString(bM)))
271+ else bN
279272 }
280273
281274
282-func bV (bW,bX,bY,bZ) = {
283- let ca = H(bY, bW)
284- let cb = H(bZ, bX)
285- bH(cb, ca)
275+func bO (bP,bQ,bR,bS) = {
276+ let bT = F(bR, bP)
277+ let bU = F(bS, bQ)
278+ bA(bU, bT)
286279 }
287280
288281
289-func cc (bY,bZ,cd) = {
290- let ce = aS()
291- let cf = parseIntValue(ce[y])
292- let cg = parseIntValue(ce[z])
293- let ch = bV(cf, cg, bY, bZ)
294- let bJ = H(bY, cf)
295- let bI = H(bZ, cg)
296- let ci = H(cd, a)
297- let cj = bH(bJ, ci)
298- let ck = bH(bI, ci)
299-[ch, cj, ck]
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]
300293 }
301294
302295
303-func cl (bY,bZ,cd) = {
304- let cm = cc(bY, bZ, cd)
305-[K(cm[0], a), K(cm[1], a), K(cm[2], a)]
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)]
306299 }
307300
308301
309-func cn (co) = {
310- let cp = fraction(co, aj, a)
311- $Tuple2((co - cp), cp)
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)
312307 }
313308
314309
315-func cq (cr,cs,ct,cu) = {
316- let ce = aS()
317- let cv = ce[v]
318- let cw = ce[w]
319- let cx = ce[x]
320- let cy = parseIntValue(ce[y])
321- let cz = parseIntValue(ce[z])
322- let cA = ce[u]
323- let cB = valueOrErrorMessage(assetInfo(fromBase58String(cv)), "Wrong LP id").quantity
324- if ((cv != cs))
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))
325320 then throw("Wrong pmt asset")
326321 else {
327- let cC = bF(cw)
328- let cD = H(cC, cy)
329- let cE = bF(cx)
330- let cF = H(cE, cz)
331- let cG = bH(cF, cD)
332- let cH = K(cG, a)
333- let cI = H(ct, a)
334- let cJ = H(cB, a)
335- let cK = fraction(cD, cI, cJ)
336- let cL = fraction(cF, cI, cJ)
337- let cM = K(cK, cy)
338- let cN = K(cL, cz)
339- let cO = if ((cr == ""))
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 == ""))
340335 then nil
341- else [ScriptTransfer(cu, cM, if ((cw == "WAVES"))
336+ else [ScriptTransfer(co, cG, if ((cq == "WAVES"))
342337 then unit
343- else fromBase58String(cw)), ScriptTransfer(cu, cN, if ((cx == "WAVES"))
338+ else fromBase58String(cq)), ScriptTransfer(co, cH, if ((cr == "WAVES"))
344339 then unit
345- else fromBase58String(cx)), StringEntry(ad(toString(cu), cr), bB(cM, cN, ct, cH, height, lastBlock.timestamp)), IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH)]
346- $Tuple10(cM, cN, cw, cx, cC, cE, cB, cG, cA, cO)
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)
347342 }
348343 }
349344
350345
351-func cP (cr,bN,cQ,cR,cS,cT,cu,cU,cV,cW,cX,cY,cZ) = {
352- let ce = aS()
353- let cv = fromBase58String(ce[v])
354- let da = ce[w]
355- let db = ce[x]
356- let dc = ce[A]
357- let dd = ce[B]
358- let de = parseIntValue(ce[y])
359- let df = parseIntValue(ce[z])
360- let cA = ce[u]
361- let dg = valueOrErrorMessage(assetInfo(cv), "Wr lp as").quantity
362- let cC = if (cU)
363- then bF(da)
364- else if (if (cW)
365- then (cZ == da)
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)
366361 else false)
367- then (bF(da) - cY)
368- else if (cW)
369- then bF(da)
370- else (bF(da) - cQ)
371- let cE = if (cU)
372- then bF(db)
373- else if (if (cW)
374- then (cZ == db)
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)
375370 else false)
376- then (bF(db) - cY)
377- else if (cW)
378- then bF(db)
379- else (bF(db) - cS)
380- let dh = H(cQ, de)
381- let di = H(cS, df)
382- let dj = bH(di, dh)
383- let cD = H(cC, de)
384- let cF = H(cE, df)
385- let dk = if ((dg == 0))
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))
386381 then {
387- let cG = d
388- let dl = d
389- let ci = pow((dh * di), 0, toBigInt(5), 1, 0, DOWN)
390- $Tuple5(K(ci, a), K(dh, de), K(di, df), bH((cF + di), (cD + dh)), dl)
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)
391386 }
392387 else {
393- let cG = bH(cF, cD)
394- let dm = fraction(R((cG - dj)), c, cG)
395- let dl = H(bN, a)
396- if (if (if (cX)
397- then (cG != d)
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)
398393 else false)
399- then (dm > dl)
394+ then (dg > df)
400395 else false)
401- then throw(((("Price slippage " + toString(dm)) + " > ") + toString(dl)))
396+ then throw(((("Price slippage " + toString(dg)) + " > ") + toString(df)))
402397 else {
403- let dn = H(dg, a)
404- let do = fraction(dh, cG, c)
405- let dp = fraction(di, c, cG)
406- let dq = if ((do > di))
407- then $Tuple2(dp, di)
408- else $Tuple2(dh, do)
409- let dr = dq._1
410- let ds = dq._2
411- let ci = fraction(dn, ds, cF)
412- $Tuple5(K(ci, a), K(dr, de), K(ds, df), cG, dl)
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)
413408 }
414409 }
415- let dt = dk._1
416- let du = dk._2
417- let dv = dk._3
418- let cH = K(dk._4, a)
419- let dw = K(dk._5, a)
420- if ((0 >= dt))
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))
421416 then throw("LP <= 0")
422417 else {
423- let dx = if (!(cV))
418+ let dr = if (!(cP))
424419 then 0
425- else dt
426- let dy = (cQ - du)
427- let dz = (cS - dv)
428- let dA = if (if (cW)
429- then (cZ == da)
420+ else dn
421+ let ds = (cK - do)
422+ let dt = (cM - dp)
423+ let du = if (if (cQ)
424+ then (cT == cU)
430425 else false)
431- then $Tuple2(cY, 0)
432- else if (if (cW)
433- then (cZ == db)
426+ then $Tuple2(cS, 0)
427+ else if (if (cQ)
428+ then (cT == cV)
434429 else false)
435- then $Tuple2(0, cY)
436- else $Tuple2(du, dv)
437- let dB = dA._1
438- let dC = dA._2
439- let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, cr), bq(dB, dC, dx, cH, bN, dw, height, lastBlock.timestamp, dy, dz))]
440- $Tuple13(dt, dx, cH, cC, cE, dg, cv, cA, dD, dy, dz, cR, cT)
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)
441436 }
442437 }
443438
444439
445-func dE (dF) = {
446- let dG = dF[0]
447- let dH = dF[1]
448- let dI = (dG + dH)
449- if ((dI == e))
450- then e
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")
451459 else {
452- let dJ = parseIntValue(aO)
453- let dK = (dJ * 2)
454- let cm = fraction(dG, dH, f)
455- let dL = fraction(cm, i, f)
456- let dM = fraction(toBigInt(dK), dI, f)
457- let dN = toBigInt((dK - 1))
458- func dO (dP) = {
459- let dQ = fraction(dP, dP, f)
460- let dR = fraction(dQ, dP, f)
461- let dS = fraction(dR, f, dL)
462- fraction((dM + fraction(dS, g, f)), dP, (fraction(dN, dP, f) + fraction(h, dS, f)), CEILING)
463- }
464-
465- func dT (dU,dV) = if (dU._2)
466- then dU
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")
467472 else {
468- let dP = dU._1
469- let dW = dO(dP)
470- let dX = toInt((dW - value(dP)))
471- let dY = if ((0 > dX))
472- then -(dX)
473- else dX
474- if ((1 >= dY))
475- then $Tuple2(dW, true)
476- else $Tuple2(dW, false)
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
477480 }
478-
479- let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
480- let ea = {
481- let eb = dZ
482- let ec = size(eb)
483- let ed = $Tuple2(dI, false)
484- func ee (ef,eg) = if ((eg >= ec))
485- then ef
486- else dT(ef, eb[eg])
487-
488- func eh (ef,eg) = if ((eg >= ec))
489- then ef
490- else throw("List size exceeds 15")
491-
492- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
493- }
494- let dP = ea._1
495- let ei = ea._2
496- if (ei)
497- then dP
498- else throw(("D calculation error, D = " + toString(dP)))
499481 }
500482 }
501483
502484
503-func ej (dF) = {
504- let ek = g
505- let dG = dF[0]
506- let dH = dF[1]
507- let el = parseBigIntValue(l)
508- let dJ = (parseBigIntValue(aO) * el)
509- let dI = (dG + dH)
510- if ((dI == e))
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))
511525 then e
512526 else {
513- let dK = (dJ * ek)
514- let dL = (((dG * dH) * ek) * ek)
515- let em = ((dK * dI) / el)
516- let en = (dK - el)
517- let eo = (ek + f)
518- func dT (dU,ep) = {
519- let eq = dU
520- let dP = eq._1
521- let ei = eq._2
522- if ((ei != unit))
523- then dU
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
536+ if ((ek != unit))
537+ then eg
524538 else {
525- let dS = (((dP * dP) * dP) / dL)
526- let dW = (((em + (dS * ek)) * dP) / (((en * dP) / el) + (eo * dS)))
527- let dY = S((dW - value(dP)))
528- if ((f >= dY))
529- then $Tuple2(dW, ep)
530- else $Tuple2(dW, unit)
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)
531545 }
532546 }
533547
534- let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
535- let er = {
536- let eb = dZ
537- let ec = size(eb)
538- let ed = $Tuple2(dI, unit)
539- func ee (ef,eg) = if ((eg >= ec))
540- then ef
541- else dT(ef, eb[eg])
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])
542556
543- func eh (ef,eg) = if ((eg >= ec))
544- then ef
557+ func ew (eu,ev) = if ((ev >= er))
558+ then eu
545559 else throw("List size exceeds 15")
546560
547- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
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)
548562 }
549- let dP = er._1
550- let ei = er._2
551- if ((ei != unit))
552- then dP
553- else throw(("D calculation error, D = " + toString(dP)))
563+ let ej = ep._1
564+ let ek = ep._2
565+ if ((ek != unit))
566+ then ej
567+ else throw(("D calculation error, D = " + toString(ej)))
554568 }
555569 }
556570
557571
558-func es (dF,dV,et) = {
559- let ek = g
560- let eu = dF[if ((dV == 0))
572+func ex (dT,dM,ey) = {
573+ let dU = g
574+ let ez = dT[if ((dM == 0))
561575 then 1
562576 else 0]
563- let el = parseBigIntValue(l)
564- let dJ = (parseBigIntValue(aO) * el)
565- let dI = eu
566- let dK = (dJ * ek)
567- let ev = (((((et * et) / (eu * ek)) * et) * el) / (dK * ek))
568- let ew = ((dI + ((et * el) / dK)) - et)
569- func dT (dU,ep) = {
570- let ex = dU
571- let ey = ex._1
572- let ei = ex._2
573- if ((ei != unit))
574- then dU
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
587+ if ((ek != unit))
588+ then eg
575589 else {
576- let ez = (((ey * ey) + ev) / ((g * ey) + ew))
577- let eA = S((ez - value(ey)))
578- if ((f >= eA))
579- then $Tuple2(ez, ep)
580- else $Tuple2(ez, unit)
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)
581595 }
582596 }
583597
584- let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
585- let eB = {
586- let eb = dZ
587- let ec = size(eb)
588- let ed = $Tuple2(et, unit)
589- func ee (ef,eg) = if ((eg >= ec))
590- then ef
591- else dT(ef, eb[eg])
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])
592606
593- func eh (ef,eg) = if ((eg >= ec))
594- then ef
607+ func ew (eu,ev) = if ((ev >= er))
608+ then eu
595609 else throw("List size exceeds 15")
596610
597- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
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)
598612 }
599- let ey = eB._1
600- let ei = eB._2
601- if ((ei != unit))
602- then ey
603- else throw(("Y calculation error, Y = " + toString(ey)))
613+ let eD = eG._1
614+ let ek = eG._2
615+ if ((ek != unit))
616+ then eD
617+ else throw(("Y calculation error, Y = " + toString(eD)))
604618 }
605619
606620
607-func eC (eD,eE,eF) = {
608- let eG = fraction(dE([eD, eE]), c, eF)
609- if ((eF == e))
610- then e
611- else eG
612- }
613-
614-
615-func eH (eI,eJ,eK) = {
616- let eL = (toBigInt(bF(aY(bg))) - eI)
617- let eM = (toBigInt(bF(aY(bh))) - eJ)
618- let eN = (toBigInt(value(assetInfo(bf)).quantity) - eK)
619- let eO = eC(eL, eM, eN)
620- eO
621- }
622-
623-
624-func eP (eQ,eR,eK) = {
625- let eL = (bF(aY(bg)) + eQ)
626- let eM = (bF(aY(bh)) + eR)
627- let eN = (value(assetInfo(bf)).quantity + eK)
628- let eG = eC(toBigInt(eL), toBigInt(eM), toBigInt(eN))
629- let eS = [IntegerEntry(al, height), StringEntry(ak, toString(eG))]
630- $Tuple2(eS, eG)
631- }
632-
633-
634-func eT (eU,eG) = if ((eG >= eU))
635- then true
636- else aK("updated DLp lower than current DLp")
637-
638-
639-func eV (eW) = {
640- let eX = eW.amount
641- let eY = fraction(eW.amount, eW.price, a, FLOOR)
642- let eZ = if ((eW.orderType == Buy))
643- then $Tuple2(eX, -(eY))
644- else $Tuple2(-(eX), eY)
645- let eQ = eZ._1
646- let eR = eZ._2
647- if (if (if (aP())
648- then true
649- else (be == r))
650- then true
651- else (be == s))
652- then throw("Admin blocked")
653- else if (if ((eW.assetPair.amountAsset != bg))
654- then true
655- else (eW.assetPair.priceAsset != bh))
656- then throw("Wr assets")
657- else {
658- let fa = parseBigIntValue(getStringValue(this, ak))
659- let fb = eP(eQ, eR, 0)
660- let fc = fb._1
661- let fd = fb._2
662- let fe = (fd >= fa)
663- fe
664- }
665- }
666-
667-
668-func ff (dV) = if ((size(dV.payments) != 1))
669- then throw("1 pmnt exp")
670- else {
671- let fg = value(dV.payments[0])
672- let cs = value(fg.assetId)
673- let cY = fg.amount
674- let dk = cq(toBase58String(dV.transactionId), toBase58String(cs), cY, dV.caller)
675- let cM = dk._1
676- let cN = dk._2
677- let cA = parseIntValue(dk._9)
678- let cO = dk._10
679- if (if (aP())
680- then true
681- else (cA == s))
682- then throw(("Admin blocked: " + toString(cA)))
683- else $Tuple5(cM, cN, cY, cs, cO)
684- }
685-
686-
687-func fh (fi,ac,fj,fk,bN,cV,cW,cX,cY,cZ) = {
688- let dk = cP(ac, bN, value(fj).amount, value(fj).assetId, value(fk).amount, value(fk).assetId, fi, (ac == ""), cV, cW, cX, cY, cZ)
689- let cA = parseIntValue(dk._8)
690- if (if (if (aP())
691- then true
692- else (cA == q))
693- then true
694- else (cA == s))
695- then throw(("Blocked:" + toString(cA)))
696- else dk
697- }
698-
699-
700-func fl (fm,cs,cu,ac,fn) = {
701- let ba = aS()
702- let cw = ba[w]
703- let cx = ba[x]
704- let cv = ba[v]
705- let de = parseIntValue(ba[y])
706- let df = parseIntValue(ba[z])
707- let eN = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
708- let fo = if ((eN > e))
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))
709630 then true
710631 else throw("initial deposit requires all coins")
711- if ((fo == fo))
632+ if ((eL == eL))
712633 then {
713- let cC = bF(cw)
714- let cE = bF(cx)
715- let fp = if ((ac == ""))
716- then $Tuple2(cC, cE)
717- else if ((cs == cw))
718- then if ((fm > cC))
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))
719640 then throw("invalid payment amount")
720- else $Tuple2((cC - fm), cE)
721- else if ((cs == cx))
722- then if ((fm > cE))
641+ else $Tuple2((cw - eI), cy)
642+ else if ((cm == cr))
643+ then if ((eI > cy))
723644 then throw("invalid payment amount")
724- else $Tuple2(cC, (cE - fm))
645+ else $Tuple2(cw, (cy - eI))
725646 else throw("wrong pmtAssetId")
726- let fq = fp._1
727- let fr = fp._2
728- let fs = if ((cs == cw))
729- then $Tuple2(fm, 0)
730- else if ((cs == cx))
731- then $Tuple2(0, fm)
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)
732653 else throw("invalid payment")
733- let ft = fs._1
734- let fu = fs._2
735- let fv = if (fn)
736- then $Tuple3(cn(ft)._1, cn(fu)._1, cn(fm)._2)
737- else $Tuple3(ft, fu, 0)
738- let fw = fv._1
739- let fx = fv._2
740- let cp = fv._3
741- let fy = (fq + fw)
742- let fz = (fr + fx)
743- let bS = dE([toBigInt(fq), toBigInt(fr)])
744- let bR = dE([toBigInt(fy), toBigInt(fz)])
745- let fA = if ((bR > bS))
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))
746667 then true
747668 else throw()
748- if ((fA == fA))
669+ if ((eX == eX))
749670 then {
750- let fB = fraction(eN, (bR - bS), bS, FLOOR)
751- let cH = K(bH(H(fz, df), H(fy, de)), a)
752- let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(ft, fu, toInt(fB), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
753- let fC = fraction(fr, a, fq)
754- let fD = fraction(fm, a, (fC + a))
755- let fE = (fm - fD)
756- let fF = fraction(eN, toBigInt(fE), toBigInt(fr))
757- let fG = toInt(fraction((fB - fF), b, fF))
758- $Tuple4(toInt(fB), dD, cp, fG)
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)
759680 }
760681 else throw("Strict value is not equal to itself.")
761682 }
763684 }
764685
765686
766-func fH (fI,fJ,fK,fi,fL,fM) = {
767- let ba = aS()
768- let cv = ba[v]
769- let cw = ba[w]
770- let cx = ba[x]
771- let fN = parseIntValue(ba[y])
772- let fO = parseIntValue(ba[z])
773- let fP = ba[u]
774- let cu = if ((fi == bp))
775- then fL
776- else fi
777- let fg = value(fK[0])
778- let cs = value(fg.assetId)
779- let cY = fg.amount
780- let eO = eH(e, e, e)
781- if ((eO == eO))
782- then {
783- let cr = toBase58String(fM)
784- if ((cv != toBase58String(cs)))
785- then throw("Wrong LP")
786- else {
787- let cC = bF(cw)
788- let cE = bF(cx)
789- let fQ = {
790- let fR = invoke(this, "getOneTknV2READONLY", [fI, cY], nil)
791- if ($isInstanceOf(fR, "(Int, Int)"))
792- then fR
793- else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
794- }
795- if ((fQ == fQ))
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))
796741 then {
797- let cp = fQ._2
798- let fS = fQ._1
799- let fT = if (if ((fJ > 0))
800- then (fJ > fS)
801- else false)
802- then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
803- else fS
804- let fU = if ((fI == cw))
805- then $Tuple4(fT, 0, ((cC - fT) - cp), cE)
806- else if ((fI == cx))
807- then $Tuple4(0, fT, cC, ((cE - fT) - cp))
808- else throw("invalid out asset id")
809- let fV = fU._1
810- let fW = fU._2
811- let fy = fU._3
812- let fz = fU._4
813- let fX = bH(H(fz, fO), H(fy, fN))
814- let fY = K(fX, a)
815- let fZ = if ((fI == "WAVES"))
816- then unit
817- else fromBase58String(fI)
818- let ga = if ((cp > 0))
819- then [ScriptTransfer(aR, cp, fZ)]
820- else nil
821- let cO = ([ScriptTransfer(cu, fT, fZ), StringEntry(ad(toString(cu), cr), bB(fV, fW, cY, fY, height, lastBlock.timestamp)), IntegerEntry(W(), fY), IntegerEntry(X(height, lastBlock.timestamp), fY)] ++ ga)
822- if ((cO == cO))
823- then {
824- let gb = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
825- if ((gb == gb))
826- then {
827- let gc = {
828- let gd = if ((this == aR))
829- then 0
830- else cp
831- let ge = if ((aW(fI) == bg))
832- then true
833- else false
834- if (ge)
835- then $Tuple2(-((fS + gd)), 0)
836- else $Tuple2(0, -((fS + gd)))
837- }
838- let eQ = gc._1
839- let eR = gc._2
840- let gf = eP(eQ, eR, 0)
841- let gg = gf._1
842- let eG = gf._2
843- let gh = eT(eO, eG)
844- if ((gh == gh))
845- then $Tuple2((cO ++ gg), fT)
846- else throw("Strict value is not equal to itself.")
847- }
848- else throw("Strict value is not equal to itself.")
849- }
742+ let fx = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
743+ if ((fx == fx))
744+ then $Tuple2(cI, fp)
850745 else throw("Strict value is not equal to itself.")
851746 }
852747 else throw("Strict value is not equal to itself.")
853748 }
749+ else throw("Strict value is not equal to itself.")
854750 }
855- else throw("Strict value is not equal to itself.")
856751 }
857752
858753
859-func gi () = {
860- let aE = getString(U())
861- if ($isInstanceOf(aE, "String"))
754+func fy () = {
755+ let av = getString(S())
756+ if ($isInstanceOf(av, "String"))
862757 then {
863- let dI = aE
864- fromBase58String(dI)
758+ let dZ = av
759+ fromBase58String(dZ)
865760 }
866- else if ($isInstanceOf(aE, "Unit"))
761+ else if ($isInstanceOf(av, "Unit"))
867762 then unit
868763 else throw("Match error")
869764 }
870765
871766
872-func gj () = {
873- let aE = getString(V())
874- if ($isInstanceOf(aE, "String"))
767+func fz () = {
768+ let av = getString(T())
769+ if ($isInstanceOf(av, "String"))
875770 then {
876- let dI = aE
877- fromBase58String(dI)
771+ let dZ = av
772+ fromBase58String(dZ)
878773 }
879- else if ($isInstanceOf(aE, "Unit"))
774+ else if ($isInstanceOf(av, "Unit"))
880775 then unit
881776 else throw("Match error")
882777 }
883778
884779
885-let gk = throw("Permission denied")
780+let fA = throw("Permission denied")
886781
887-func gl (dV) = {
888- let aE = gi()
889- if ($isInstanceOf(aE, "ByteVector"))
782+func fB (dM) = {
783+ let av = fy()
784+ if ($isInstanceOf(av, "ByteVector"))
890785 then {
891- let gm = aE
892- (dV.callerPublicKey == gm)
786+ let fC = av
787+ (dM.callerPublicKey == fC)
893788 }
894- else if ($isInstanceOf(aE, "Unit"))
895- then (dV.caller == this)
789+ else if ($isInstanceOf(av, "Unit"))
790+ then (dM.caller == this)
896791 else throw("Match error")
897792 }
898793
899794
900-func gn (dV) = {
901- let aE = gi()
902- if ($isInstanceOf(aE, "ByteVector"))
795+func fD (dM) = {
796+ let av = fy()
797+ if ($isInstanceOf(av, "ByteVector"))
903798 then {
904- let gm = aE
905- if ((dV.callerPublicKey == gm))
799+ let fC = av
800+ if ((dM.callerPublicKey == fC))
906801 then true
907- else gk
802+ else fA
908803 }
909- else if ($isInstanceOf(aE, "Unit"))
910- then if ((dV.caller == this))
804+ else if ($isInstanceOf(av, "Unit"))
805+ then if ((dM.caller == this))
911806 then true
912- else gk
807+ else fA
913808 else throw("Match error")
914809 }
915810
916811
917-@Callable(dV)
918-func constructor (T) = {
919- let ev = gn(dV)
920- if ((ev == ev))
921- then [StringEntry(T(), T)]
812+@Callable(dM)
813+func constructor (R) = {
814+ let eA = fD(dM)
815+ if ((eA == eA))
816+ then [StringEntry(R(), R)]
922817 else throw("Strict value is not equal to itself.")
923818 }
924819
925820
926821
927-@Callable(dV)
928-func setManager (go) = {
929- let ev = gn(dV)
930- if ((ev == ev))
822+@Callable(dM)
823+func setManager (fE) = {
824+ let eA = fD(dM)
825+ if ((eA == eA))
931826 then {
932- let gp = fromBase58String(go)
933- if ((gp == gp))
934- then [StringEntry(V(), go)]
827+ let fF = fromBase58String(fE)
828+ if ((fF == fF))
829+ then [StringEntry(T(), fE)]
935830 else throw("Strict value is not equal to itself.")
936831 }
937832 else throw("Strict value is not equal to itself.")
939834
940835
941836
942-@Callable(dV)
837+@Callable(dM)
943838 func confirmManager () = {
944- let cm = gj()
945- let gq = if (isDefined(cm))
839+ let cf = fz()
840+ let fG = if (isDefined(cf))
946841 then true
947842 else throw("No pending manager")
948- if ((gq == gq))
843+ if ((fG == fG))
949844 then {
950- let gr = if ((dV.callerPublicKey == value(cm)))
845+ let fH = if ((dM.callerPublicKey == value(cf)))
951846 then true
952847 else throw("You are not pending manager")
953- if ((gr == gr))
954- then [StringEntry(U(), toBase58String(value(cm))), DeleteEntry(V())]
848+ if ((fH == fH))
849+ then [StringEntry(S(), toBase58String(value(cf))), DeleteEntry(T())]
955850 else throw("Strict value is not equal to itself.")
956851 }
957852 else throw("Strict value is not equal to itself.")
959854
960855
961856
962-@Callable(dV)
963-func put (gs,gt) = {
964- let gu = bk()
965- let gv = valueOrErrorMessage(addressFromString(gu[C]), "Wr st addr")
966- let gw = valueOrErrorMessage(addressFromString(gu[E]), "Wr sl addr")
967- if ((0 > gs))
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))
968863 then throw("Wrong slippage")
969- else if ((size(dV.payments) != 2))
864+ else if ((size(dM.payments) != 2))
970865 then throw("2 pmnts expd")
971866 else {
972- let gx = toBigInt(value(dV.payments[0]).amount)
973- let gy = toBigInt(value(dV.payments[1]).amount)
974- let eO = eH(gx, gy, toBigInt(0))
975- if ((eO == eO))
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))
976877 then {
977- let gz = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gs, true, false, true, 0, "")
978- let dx = gz._2
979- let gA = gz._7
980- let cO = gz._9
981- let dy = gz._10
982- let dz = gz._11
983- let cw = gz._12
984- let cx = gz._13
985- let dk = invoke(aN, "emit", [dx], nil)
986- if ((dk == dk))
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))
987888 then {
988- let gB = {
989- let aE = dk
990- if ($isInstanceOf(aE, "Address"))
991- then {
992- let gC = aE
993- invoke(gC, "emit", [dx], nil)
994- }
995- else unit
996- }
997- if ((gB == gB))
889+ let fR = if ((ds > 0))
890+ then invoke(fM, "put", nil, [AttachedPayment(cq, ds)])
891+ else nil
892+ if ((fR == fR))
998893 then {
999- let gD = if ((dy > 0))
1000- then invoke(gw, "put", nil, [AttachedPayment(cw, dy)])
894+ let fS = if ((dt > 0))
895+ then invoke(fM, "put", nil, [AttachedPayment(cr, dt)])
1001896 else nil
1002- if ((gD == gD))
897+ if ((fS == fS))
1003898 then {
1004- let gE = if ((dz > 0))
1005- then invoke(gw, "put", nil, [AttachedPayment(cx, dz)])
1006- else nil
1007- if ((gE == gE))
899+ let fT = if (fJ)
1008900 then {
1009- let gF = if (gt)
1010- then {
1011- let gG = invoke(gv, "stake", nil, [AttachedPayment(gA, dx)])
1012- if ((gG == gG))
1013- then nil
1014- else throw("Strict value is not equal to itself.")
1015- }
1016- else [ScriptTransfer(dV.caller, dx, gA)]
1017- let gH = eP(0, 0, 0)
1018- let gg = gH._1
1019- let eG = gH._2
1020- let gh = eT(eO, eG)
1021- if ((gh == gh))
1022- then ((cO ++ gF) ++ gg)
901+ let fU = invoke(fL, "stake", nil, [AttachedPayment(fO, dr)])
902+ if ((fU == fU))
903+ then nil
1023904 else throw("Strict value is not equal to itself.")
1024905 }
1025- else throw("Strict value is not equal to itself.")
906+ else [ScriptTransfer(dM.caller, dr, fO)]
907+ (cI ++ fT)
1026908 }
1027909 else throw("Strict value is not equal to itself.")
1028910 }
1036918
1037919
1038920
1039-@Callable(dV)
1040-func putOneTknV2 (fJ,gt) = {
1041- let gI = {
1042- let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1043- if ($isInstanceOf(fR, "Boolean"))
1044- then fR
1045- else throw(($getType(fR) + " couldn't be cast to Boolean"))
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"))
1046928 }
1047- let gJ = if (if (if (aP())
929+ let fW = if (if (if (aI())
1048930 then true
1049- else (be == q))
931+ else (aX == o))
1050932 then true
1051- else (be == s))
933+ else (aX == q))
1052934 then true
1053- else gI
1054- let gK = [if (if (!(gJ))
935+ else fV
936+ let fX = [if (if (!(fW))
1055937 then true
1056- else gl(dV))
938+ else fB(dM))
1057939 then true
1058- else aK("put operation is blocked by admin"), if ((size(dV.payments) == 1))
940+ else aB("put operation is blocked by admin"), if ((size(dM.payments) == 1))
1059941 then true
1060- else aK("exactly 1 payment are expected")]
1061- if ((gK == gK))
942+ else aB("exactly 1 payment are expected")]
943+ if ((fX == fX))
1062944 then {
1063- let ba = aS()
1064- let cw = ba[w]
1065- let cx = ba[x]
1066- let cv = fromBase58String(ba[v])
1067- let fN = parseIntValue(ba[y])
1068- let fO = parseIntValue(ba[z])
1069- let cu = if ((dV.caller == this))
1070- then dV.originCaller
1071- else dV.caller
1072- let fg = value(dV.payments[0])
1073- let cs = toBase58String(value(fg.assetId))
1074- let cY = fg.amount
1075- let gL = fl(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
1076- if ((gL == gL))
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))
1077959 then {
1078- let cp = gL._3
1079- let cO = gL._2
1080- let gM = gL._1
1081- let dx = if (if ((fJ > 0))
1082- then (fJ > gM)
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)
1083965 else false)
1084- then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
1085- else gM
1086- let gz = invoke(aN, "emit", [dx], nil)
1087- if ((gz == gz))
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))
1088970 then {
1089- let gB = {
1090- let aE = gz
1091- if ($isInstanceOf(aE, "Address"))
971+ let fP = {
972+ let av = fN
973+ if ($isInstanceOf(av, "Address"))
1092974 then {
1093- let gC = aE
1094- invoke(gC, "emit", [dx], nil)
975+ let fQ = av
976+ invoke(fQ, "emit", [dr], nil)
1095977 }
1096978 else unit
1097979 }
1098- if ((gB == gB))
980+ if ((fP == fP))
1099981 then {
1100- let gF = if (gt)
982+ let fT = if (fJ)
1101983 then {
1102- let gG = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
1103- if ((gG == gG))
984+ let fU = invoke(bf, "stake", nil, [AttachedPayment(cp, dr)])
985+ if ((fU == fU))
1104986 then nil
1105987 else throw("Strict value is not equal to itself.")
1106988 }
1107- else [ScriptTransfer(dV.caller, dx, cv)]
1108- let ga = if ((cp > 0))
1109- then [ScriptTransfer(aR, cp, fromBase58String(cs))]
989+ else [ScriptTransfer(dM.caller, dr, cp)]
990+ let fw = if ((cj > 0))
991+ then [ScriptTransfer(aK, cj, fromBase58String(cm))]
1110992 else nil
1111- let gN = if ((this == aR))
1112- then $Tuple2(0, 0)
1113- else {
1114- let gO = if ((fg.assetId == bg))
1115- then true
1116- else false
1117- if (gO)
1118- then $Tuple2(-(cp), 0)
1119- else $Tuple2(0, -(cp))
1120- }
1121- let eQ = gN._1
1122- let eR = gN._2
1123- let gP = eP(eQ, eR, 0)
1124- let gg = gP._1
1125- let eG = gP._2
1126- $Tuple2((((cO ++ gF) ++ ga) ++ gg), dx)
993+ $Tuple2(((cI ++ fT) ++ fw), dr)
1127994 }
1128995 else throw("Strict value is not equal to itself.")
1129996 }
11361003
11371004
11381005
1139-@Callable(dV)
1140-func putForFree (gQ) = if ((0 > gQ))
1006+@Callable(dM)
1007+func putForFree (ga) = if ((0 > ga))
11411008 then throw("Wrong slpg")
1142- else if ((size(dV.payments) != 2))
1009+ else if ((size(dM.payments) != 2))
11431010 then throw("2 pmnts expd")
11441011 else {
1145- let gR = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gQ, false, false, true, 0, "")
1146- let cO = gR._9
1147- let gx = toBigInt(value(dV.payments[0]).amount)
1148- let gy = toBigInt(value(dV.payments[1]).amount)
1149- let eO = eH(gx, gy, toBigInt(0))
1150- if ((eO == eO))
1151- then {
1152- let gS = eP(0, 0, 0)
1153- let gg = gS._1
1154- let eG = gS._2
1155- let gh = eT(eO, eG)
1156- if ((gh == gh))
1157- then (cO ++ gg)
1158- else throw("Strict value is not equal to itself.")
1159- }
1160- else throw("Strict value is not equal to itself.")
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
11611014 }
11621015
11631016
11641017
1165-@Callable(dV)
1018+@Callable(dM)
11661019 func get () = {
1167- let dk = ff(dV)
1168- let gT = dk._1
1169- let cN = dk._2
1170- let cY = dk._3
1171- let cs = dk._4
1172- let cO = dk._5
1173- let ew = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1174- if ((ew == ew))
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))
11751055 then {
1176- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1177- let gU = eP(-(gT), -(cN), 0)
1178- let gg = gU._1
1179- let eG = gU._2
1180- let gh = eT(eO, eG)
1181- if ((gh == gh))
1182- then (cO ++ gg)
1183- else throw("Strict value is not equal to itself.")
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)
11841060 }
11851061 else throw("Strict value is not equal to itself.")
11861062 }
11871063
11881064
11891065
1190-@Callable(dV)
1191-func getOneTknV2 (fI,fJ) = {
1192- let gI = {
1193- let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1194- if ($isInstanceOf(fR, "Boolean"))
1195- then fR
1196- else throw(($getType(fR) + " couldn't be cast to Boolean"))
1197- }
1198- let gV = if (if (aP())
1199- then true
1200- else (be == s))
1201- then true
1202- else gI
1203- let gK = [if (if (!(gV))
1204- then true
1205- else gl(dV))
1206- then true
1207- else aK("get operation is blocked by admin"), if ((size(dV.payments) == 1))
1208- then true
1209- else aK("exactly 1 payment are expected")]
1210- if ((gK == gK))
1211- then {
1212- let gW = fH(fI, fJ, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1213- let cO = gW._1
1214- let fT = gW._2
1215- $Tuple2(cO, fT)
1216- }
1217- else throw("Strict value is not equal to itself.")
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))
12181088 }
12191089
12201090
12211091
1222-@Callable(dV)
1223-func refreshDLp () = {
1224- let gX = valueOrElse(getInteger(al), 0)
1225- let gY = if (((height - gX) >= ao))
1226- then unit
1227- else aK(makeString([toString(ao), " blocks have not passed since the previous call"], ""))
1228- if ((gY == gY))
1229- then {
1230- let fa = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
1231- let gZ = eP(0, 0, 0)
1232- let ha = gZ._1
1233- let eG = gZ._2
1234- let eS = if ((fa != eG))
1235- then ha
1236- else aK("nothing to refresh")
1237- $Tuple2(eS, toString(eG))
1238- }
1239- else throw("Strict value is not equal to itself.")
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))
12401118 }
12411119
12421120
12431121
1244-@Callable(dV)
1245-func getOneTknV2READONLY (fI,hb) = {
1246- let ba = aS()
1247- let cw = ba[w]
1248- let cx = ba[x]
1249- let cv = ba[v]
1250- let dF = [toBigInt(bF(cw)), toBigInt(bF(cx))]
1251- let eF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
1252- let bS = dE(dF)
1253- let bR = (bS - fraction(toBigInt(hb), bS, eF))
1254- let hc = if ((fI == cw))
1255- then 0
1256- else if ((fI == cx))
1257- then 1
1258- else throw("invalid out asset id")
1259- let hd = es(dF, hc, bR)
1260- let he = (dF[hc] - hd)
1261- let hf = max([0, toInt((he - f))])
1262- let hg = cn(hf)
1263- let fS = hg._1
1264- let cp = hg._2
1265- $Tuple2(nil, $Tuple2(fS, cp))
1266- }
1267-
1268-
1269-
1270-@Callable(dV)
1271-func getOneTknV2WithBonusREADONLY (fI,hb) = {
1272- let ba = aS()
1273- let cw = ba[w]
1274- let cx = ba[x]
1275- let cv = ba[v]
1276- let cC = bF(cw)
1277- let cE = bF(cx)
1278- let hh = {
1279- let fR = invoke(this, "getOneTknV2READONLY", [fI, hb], nil)
1280- if ($isInstanceOf(fR, "(Int, Int)"))
1281- then fR
1282- else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
1283- }
1284- let fS = hh._1
1285- let cp = hh._2
1286- let dk = cq("", cv, hb, this)
1287- let cM = dk._1
1288- let cN = dk._2
1289- let hi = (cM + cN)
1290- let fG = if ((hi == 0))
1291- then if ((fS == 0))
1292- then 0
1293- else throw("bonus calculation error")
1294- else fraction((fS - hi), a, hi)
1295- $Tuple2(nil, $Tuple3(fS, cp, fG))
1296- }
1297-
1298-
1299-
1300-@Callable(dV)
1301-func getNoLess (hj,hk) = {
1302- let dk = ff(dV)
1303- let cM = dk._1
1304- let cN = dk._2
1305- let cY = dk._3
1306- let cs = dk._4
1307- let cO = dk._5
1308- if ((hj > cM))
1309- then throw(((("Failed: " + toString(cM)) + " < ") + toString(hj)))
1310- else if ((hk > cN))
1311- then throw(((("Failed: " + toString(cN)) + " < ") + toString(hk)))
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)))
13121134 else {
1313- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1314- let hl = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1315- if ((hl == hl))
1316- then {
1317- let hm = eP(-(cM), -(cN), 0)
1318- let gg = hm._1
1319- let eG = hm._2
1320- let gh = eT(eO, eG)
1321- if ((gh == gh))
1322- then (cO ++ gg)
1323- else throw("Strict value is not equal to itself.")
1324- }
1135+ let gq = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1136+ if ((gq == gq))
1137+ then cI
13251138 else throw("Strict value is not equal to itself.")
13261139 }
13271140 }
13281141
13291142
13301143
1331-@Callable(dV)
1332-func unstakeAndGet (co) = {
1333- let hn = if ((size(dV.payments) != 0))
1144+@Callable(dM)
1145+func unstakeAndGet (ch) = {
1146+ let gr = if ((size(dM.payments) != 0))
13341147 then throw("No pmnts expd")
13351148 else true
1336- if ((hn == hn))
1149+ if ((gr == gr))
13371150 then {
1338- let ce = aS()
1339- let ho = bk()
1340- let gA = fromBase58String(ce[v])
1341- let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1342- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1343- let hq = invoke(hp, "unstake", [toBase58String(gA), co], nil)
1344- if ((hq == hq))
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))
13451157 then {
1346- let dk = cq(toBase58String(dV.transactionId), toBase58String(gA), co, dV.caller)
1347- let cM = dk._1
1348- let cN = dk._2
1349- let cA = parseIntValue(dk._9)
1350- let cO = dk._10
1351- let hr = if (if (aP())
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())
13521162 then true
1353- else (cA == s))
1354- then throw(("Blocked: " + toString(cA)))
1163+ else (cu == q))
1164+ then throw(("Blocked: " + toString(cu)))
13551165 else true
1356- if ((hr == hr))
1166+ if ((gv == gv))
13571167 then {
1358- let hs = invoke(aN, "burn", [co], [AttachedPayment(gA, co)])
1359- if ((hs == hs))
1360- then {
1361- let ht = eP(-(cM), -(cN), 0)
1362- let gg = ht._1
1363- let eG = ht._2
1364- let gh = eT(eO, eG)
1365- if ((gh == gh))
1366- then (cO ++ gg)
1367- else throw("Strict value is not equal to itself.")
1368- }
1168+ let gw = invoke(aD, "burn", [ch], [AttachedPayment(fO, ch)])
1169+ if ((gw == gw))
1170+ then cI
13691171 else throw("Strict value is not equal to itself.")
13701172 }
13711173 else throw("Strict value is not equal to itself.")
13771179
13781180
13791181
1380-@Callable(dV)
1381-func unstakeAndGetNoLess (hu,hv,hk) = {
1382- let gV = if (aP())
1182+@Callable(dM)
1183+func unstakeAndGetNoLess (gx,gy,gp) = {
1184+ let gd = if (aI())
13831185 then true
1384- else (be == s)
1385- let gK = [if (!(gV))
1186+ else (aX == q)
1187+ let fX = [if (!(gd))
13861188 then true
1387- else throw("get operation is blocked by admin"), if ((size(dV.payments) == 0))
1189+ else throw("get operation is blocked by admin"), if ((size(dM.payments) == 0))
13881190 then true
13891191 else throw("no payments are expected")]
1390- if ((gK == gK))
1192+ if ((fX == fX))
13911193 then {
1392- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1393- let hq = invoke(bm, "unstake", [toBase58String(bf), hu], nil)
1394- if ((hq == hq))
1194+ let gu = invoke(bf, "unstake", [toBase58String(aY), gx], nil)
1195+ if ((gu == gu))
13951196 then {
1396- let hw = cq(toBase58String(dV.transactionId), toBase58String(bf), hu, dV.caller)
1397- let cM = hw._1
1398- let cN = hw._2
1399- let cO = hw._10
1400- let hx = [if ((cM >= hv))
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))
14011202 then true
1402- else throw(makeString(["amount asset amount to receive is less than ", toString(hv)], "")), if ((cN >= hk))
1203+ else throw(makeString(["amount asset amount to receive is less than ", toString(gy)], "")), if ((cH >= gp))
14031204 then true
1404- else throw(makeString(["price asset amount to receive is less than ", toString(hk)], ""))]
1405- if ((hx == hx))
1205+ else throw(makeString(["price asset amount to receive is less than ", toString(gp)], ""))]
1206+ if ((gA == gA))
14061207 then {
1407- let hl = invoke(aN, "burn", [hu], [AttachedPayment(bf, hu)])
1408- if ((hl == hl))
1409- then {
1410- let hy = eP(-(cM), -(cN), 0)
1411- let gg = hy._1
1412- let eG = hy._2
1413- let gh = eT(eO, eG)
1414- if ((gh == gh))
1415- then (cO ++ gg)
1416- else throw("Strict value is not equal to itself.")
1417- }
1208+ let gq = invoke(aD, "burn", [gx], [AttachedPayment(aY, gx)])
1209+ if ((gq == gq))
1210+ then cI
14181211 else throw("Strict value is not equal to itself.")
14191212 }
14201213 else throw("Strict value is not equal to itself.")
14261219
14271220
14281221
1429-@Callable(dV)
1430-func unstakeAndGetOneTknV2 (hu,fI,fJ) = {
1431- let gI = {
1432- let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1433- if ($isInstanceOf(fR, "Boolean"))
1434- then fR
1435- else throw(($getType(fR) + " couldn't be cast to Boolean"))
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"))
14361229 }
1437- let gV = if (if (aP())
1230+ let gd = if (if (aI())
14381231 then true
1439- else (be == s))
1232+ else (aX == q))
14401233 then true
1441- else gI
1442- let gK = [if (if (!(gV))
1234+ else fV
1235+ let fX = [if (if (!(gd))
14431236 then true
1444- else gl(dV))
1237+ else fB(dM))
14451238 then true
1446- else aK("get operation is blocked by admin"), if ((size(dV.payments) == 0))
1239+ else aB("get operation is blocked by admin"), if ((size(dM.payments) == 0))
14471240 then true
1448- else aK("no payments are expected")]
1449- if ((gK == gK))
1241+ else aB("no payments are expected")]
1242+ if ((fX == fX))
14501243 then {
1451- let ce = aS()
1452- let ho = bk()
1453- let gA = fromBase58String(ce[v])
1454- let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1455- let hq = invoke(hp, "unstake", [toBase58String(gA), hu], nil)
1456- if ((hq == hq))
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))
14571250 then {
1458- let hz = fH(fI, fJ, [AttachedPayment(gA, hu)], dV.caller, dV.originCaller, dV.transactionId)
1459- let cO = hz._1
1460- let fT = hz._2
1461- $Tuple2(cO, fT)
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)
14621255 }
14631256 else throw("Strict value is not equal to itself.")
14641257 }
14671260
14681261
14691262
1470-@Callable(dV)
1471-func putOneTknV2WithBonusREADONLY (hA,hB) = {
1472- let ba = aS()
1473- let cw = ba[w]
1474- let cx = ba[x]
1475- let cv = ba[v]
1476- let hC = fl(hA, hB, "", "", true)
1477- let fB = hC._1
1478- let cO = hC._2
1479- let cp = hC._3
1480- let fG = hC._4
1481- $Tuple2(nil, $Tuple3(fB, cp, fG))
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))
14821275 }
14831276
14841277
14851278
1486-@Callable(dV)
1487-func putOneTknV2WithoutTakeFeeREADONLY (hA,hB) = {
1488- let ba = aS()
1489- let cw = ba[w]
1490- let cx = ba[x]
1491- let cv = ba[v]
1492- let hD = fl(hA, hB, "", "", false)
1493- let fB = hD._1
1494- let cO = hD._2
1495- let cp = hD._3
1496- let fG = hD._4
1497- $Tuple2(nil, $Tuple3(fB, cp, fG))
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))
14981291 }
14991292
15001293
15011294
1502-@Callable(dV)
1503-func activate (hE,hF) = if ((toString(dV.caller) != toString(aN)))
1295+@Callable(dM)
1296+func activate (gG,gH) = if ((toString(dM.caller) != toString(aD)))
15041297 then throw("denied")
1505- else $Tuple2([StringEntry(ae(), hE), StringEntry(af(), hF)], "success")
1298+ else $Tuple2([StringEntry(ac(), gG), StringEntry(ad(), gH)], "success")
15061299
15071300
15081301
1509-@Callable(dV)
1510-func setS (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1511- then gk
1512- else [StringEntry(hG, hr)]
1302+@Callable(dM)
1303+func setS (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1304+ then fA
1305+ else [StringEntry(gI, gv)]
15131306
15141307
15151308
1516-@Callable(dV)
1517-func setI (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1518- then gk
1519- else [IntegerEntry(hG, hr)]
1309+@Callable(dM)
1310+func setI (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1311+ then fA
1312+ else [IntegerEntry(gI, gv)]
15201313
15211314
15221315
1523-@Callable(dV)
1524-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aS())
1316+@Callable(dM)
1317+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aL())
15251318
15261319
15271320
1528-@Callable(dV)
1529-func getAccBalanceWrapperREADONLY (bG) = $Tuple2(nil, bF(bG))
1321+@Callable(dM)
1322+func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
15301323
15311324
15321325
1533-@Callable(dV)
1534-func calcPricesWrapperREADONLY (bY,bZ,cd) = {
1535- let hH = cc(bY, bZ, cd)
1536- $Tuple2(nil, [toString(hH[0]), toString(hH[1]), toString(hH[2])])
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])])
15371330 }
15381331
15391332
15401333
1541-@Callable(dV)
1542-func fromX18WrapperREADONLY (L,hI) = $Tuple2(nil, K(parseBigIntValue(L), hI))
1334+@Callable(dM)
1335+func fromX18WrapperREADONLY (J,gK) = $Tuple2(nil, I(parseBigIntValue(J), gK))
15431336
15441337
15451338
1546-@Callable(dV)
1547-func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
1339+@Callable(dM)
1340+func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
15481341
15491342
15501343
1551-@Callable(dV)
1552-func calcPriceBigIntWrapperREADONLY (bI,bJ) = $Tuple2(nil, toString(bH(parseBigIntValue(bI), parseBigIntValue(bJ))))
1344+@Callable(dM)
1345+func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
15531346
15541347
15551348
1556-@Callable(dV)
1557-func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hJ,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hJ, cU, cV, true, false, 0, ""))
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, ""))
15581351
15591352
15601353
1561-@Callable(dV)
1562-func estimateGetOperationWrapperREADONLY (cr,hK,ct,hJ) = {
1563- let dk = cq(cr, hK, ct, addressFromStringValue(hJ))
1564- $Tuple2(nil, $Tuple10(dk._1, dk._2, dk._3, dk._4, dk._5, dk._6, dk._7, toString(dk._8), dk._9, dk._10))
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))
15651358 }
15661359
15671360
1568-
1569-@Callable(dV)
1570-func getFeeREADONLY () = $Tuple2(nil, aj)
1571-
1572-
1573-@Verifier(hL)
1574-func hM () = {
1575- let hN = {
1576- let aE = gi()
1577- if ($isInstanceOf(aE, "ByteVector"))
1361+@Verifier(gN)
1362+func gO () = {
1363+ let gP = {
1364+ let av = fy()
1365+ if ($isInstanceOf(av, "ByteVector"))
15781366 then {
1579- let gm = aE
1580- gm
1367+ let fC = av
1368+ fC
15811369 }
1582- else if ($isInstanceOf(aE, "Unit"))
1583- then hL.senderPublicKey
1370+ else if ($isInstanceOf(av, "Unit"))
1371+ then gN.senderPublicKey
15841372 else throw("Match error")
15851373 }
1586- let aE = hL
1587- if ($isInstanceOf(aE, "Order"))
1374+ let av = gN
1375+ if ($isInstanceOf(av, "Order"))
15881376 then {
1589- let eW = aE
1590- let hO = aQ()
1591- let hP = eV(eW)
1592- let hQ = sigVerify(eW.bodyBytes, eW.proofs[0], eW.senderPublicKey)
1593- let hR = sigVerify(eW.bodyBytes, eW.proofs[1], hO)
1594- if (if (if (hP)
1595- then hQ
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
15961384 else false)
1597- then hR
1385+ then gT
15981386 else false)
15991387 then true
1600- else az(hP, hQ, hR)
1388+ else aq(gR, gS, gT)
16011389 }
1602- else if ($isInstanceOf(aE, "SetScriptTransaction"))
1390+ else if ($isInstanceOf(av, "SetScriptTransaction"))
16031391 then {
1604- let dI = aE
1605- let hS = blake2b256(value(dI.script))
1606- let hT = fromBase64String(value(getString(aN, ax())))
1607- let hU = scriptHash(this)
1608- if (if ((hT == hS))
1609- then (hU != hS)
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)
16101398 else false)
16111399 then true
1612- else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
1400+ else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
16131401 }
1614- else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
1402+ else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
16151403 }
16161404
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(3)
18+let h = toBigInt((a - ((a * 1) / a)))
1919
20-let i = toBigInt(4)
20+let i = "WAVES"
2121
22-let j = toBigInt((a - ((a * 1) / a)))
22+let j = "100"
2323
24-let k = "WAVES"
24+let k = "1"
2525
26-let l = "100"
26+let l = "__"
2727
28-let m = "1"
28+let m = ""
2929
30-let n = "__"
30+let n = 1
3131
32-let o = ""
32+let o = 2
3333
34-let p = 1
34+let p = 3
3535
36-let q = 2
36+let q = 4
3737
38-let r = 3
38+let r = 1
3939
40-let s = 4
40+let s = 2
4141
42-let t = 1
42+let t = 3
4343
44-let u = 2
44+let u = 4
4545
46-let v = 3
46+let v = 5
4747
48-let w = 4
48+let w = 6
4949
50-let x = 5
50+let x = 7
5151
52-let y = 6
52+let y = 8
5353
54-let z = 7
54+let z = 9
5555
56-let A = 8
56+let A = 1
5757
58-let B = 9
58+let B = 6
5959
60-let C = 1
60+let C = 7
6161
62-let D = 6
62+let D = 10
6363
64-let E = 7
64+let E = fraction(10, a, 10000)
6565
66-let F = 10
67-
68-let G = fraction(10, a, 10000)
69-
70-func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
66+func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
7167
7268
73-func K (L,M) = toInt(fraction(L, toBigInt(M), c))
69+func I (J,K) = toInt(fraction(J, toBigInt(K), c))
7470
7571
76-func N (O,P,Q) = fraction(O, P, Q)
72+func L (M,N,O) = fraction(M, N, O)
7773
7874
79-func R (L) = if ((d > L))
80- then -(L)
81- else L
75+func P (J) = if ((d > J))
76+ then -(J)
77+ else J
8278
8379
84-func S (L) = if ((d > L))
85- then -(L)
86- else L
80+func Q (J) = if ((d > J))
81+ then -(J)
82+ else J
8783
8884
89-func T () = "%s__factoryContract"
85+func R () = "%s__factoryContract"
9086
9187
92-func U () = "%s__managerPublicKey"
88+func S () = "%s__managerPublicKey"
9389
9490
95-func V () = "%s__pendingManagerPublicKey"
91+func T () = "%s__pendingManagerPublicKey"
9692
9793
98-func W () = "%s%s__price__last"
94+func U () = "%s%s__price__last"
9995
10096
101-func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], n)
97+func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
10298
10399
104-func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
100+func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
105101
106102
107-func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
103+func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
108104
109105
110-func ae () = "%s__amountAsset"
106+func ac () = "%s__amountAsset"
111107
112108
113-func af () = "%s__priceAsset"
109+func ad () = "%s__priceAsset"
114110
115111
116-func ag () = "%s__amp"
112+func ae () = "%s__amp"
117113
118114
119-func ah () = "%s__addonAddr"
115+func af () = "%s__addonAddr"
120116
121117
122-let ai = "%s__fee"
123-
124-let aj = valueOrElse(getInteger(this, ai), G)
125-
126-let ak = makeString(["%s", "dLp"], n)
127-
128-let al = makeString(["%s", "dLpRefreshedHeight"], n)
129-
130-let am = makeString(["%s", "refreshDLpDelay"], n)
131-
132-let an = 1
133-
134-let ao = valueOrElse(getInteger(this, am), an)
135-
136-func ap () = "%s__factoryConfig"
118+func ag () = "%s__factoryConfig"
137119
138120
139-func aq () = "%s%s__matcher__publicKey"
121+func ah () = "%s%s__matcher__publicKey"
140122
141123
142-func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
124+func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
143125
144126
145-func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
127+func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
146128
147129
148-func aw () = "%s__shutdown"
130+func an () = "%s__shutdown"
149131
150132
151-func ax () = "%s__allowedLpStableScriptHash"
133+func ao () = "%s__allowedLpStableScriptHash"
152134
153135
154-func ay () = "%s__feeCollectorAddress"
136+func ap () = "%s__feeCollectorAddress"
155137
156138
157-func az (aA,aB,aC) = throw(((((("Failed: ordValid=" + toString(aA)) + " sndrValid=") + toString(aB)) + " mtchrValid=") + toString(aC)))
139+func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
158140
159141
160-func aD (L) = {
161- let aE = L
162- if ($isInstanceOf(aE, "String"))
142+func au (J) = {
143+ let av = J
144+ if ($isInstanceOf(av, "String"))
163145 then {
164- let aF = aE
165- aF
146+ let aw = av
147+ aw
166148 }
167149 else throw("fail cast to String")
168150 }
169151
170152
171-func aG (aH,aI) = valueOrErrorMessage(getString(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
153+func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
172154
173155
174-func aJ (aH,aI) = valueOrErrorMessage(getInteger(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
156+func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
175157
176158
177-func aK (aL) = throw(makeString(["lp_stable.ride:", aL], " "))
159+func aB (aC) = throw(makeString(["lp_stable.ride:", aC], " "))
178160
179161
180-func aM (aL) = makeString(["lp_stable.ride:", aL], " ")
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)
181181
182182
183-let aN = addressFromStringValue(aG(this, T()))
184-
185-let aO = aG(this, ag())
186-
187-func aP () = valueOrElse(getBoolean(aN, aw()), false)
183+func aJ () = fromBase58String(ax(aD, ah()))
188184
189185
190-func aQ () = fromBase58String(aG(aN, aq()))
186+let aK = addressFromStringValue(ax(aD, ap()))
191187
192-
193-let aR = addressFromStringValue(aG(aN, ay()))
194-
195-func aS () = {
196- let aT = aG(this, ae())
197- let aU = aG(this, af())
198- let aV = aJ(aN, au(aU))
199- let as = aJ(aN, au(aT))
200- split(aG(aN, ar(toString(as), toString(aV))), n)
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)
201194 }
202195
203196
204-func aW (aX) = if ((aX == k))
197+func aP (aQ) = if ((aQ == i))
205198 then unit
206- else fromBase58String(aX)
199+ else fromBase58String(aQ)
207200
208201
209-func aY (aX) = if ((aX == unit))
210- then k
211- else toBase58String(value(aX))
202+func aR (aQ) = if ((aQ == unit))
203+ then i
204+ else toBase58String(value(aQ))
212205
213206
214-func aZ (ba) = $Tuple7(addressFromStringValue(ba[t]), parseIntValue(ba[u]), fromBase58String(ba[v]), aW(ba[w]), aW(ba[x]), parseIntValue(ba[y]), parseIntValue(ba[z]))
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]))
215208
216209
217-let bb = aZ(aS())
210+let aU = aS(aL())
218211
219-let bc = bb
212+let aV = aU
220213
221-let bd = bc._1
214+let aW = aV._1
222215
223-let be = bc._2
216+let aX = aV._2
224217
225-let bf = bc._3
218+let aY = aV._3
226219
227-let bg = bc._4
220+let aZ = aV._4
228221
229-let bh = bc._5
222+let ba = aV._5
230223
231-let bi = bc._6
224+let bb = aV._6
232225
233-let bj = bc._7
226+let bc = aV._7
234227
235-func bk () = split(aG(aN, ap()), n)
228+func bd () = split(ax(aD, ag()), l)
236229
237230
238-let bl = bk()
231+let be = bd()
239232
240-let bm = valueOrErrorMessage(addressFromString(bl[C]), "Invalid staking contract address")
233+let bf = valueOrErrorMessage(addressFromString(be[A]), "Invalid staking contract address")
241234
242-let bn = valueOrErrorMessage(addressFromString(bl[E]), "Invalid slipage contract address")
235+let bg = valueOrErrorMessage(addressFromString(be[C]), "Invalid slipage contract address")
243236
244-let bo = valueOrErrorMessage(addressFromString(bl[F]), "Invalid gwx contract address")
237+let bh = valueOrErrorMessage(addressFromString(be[D]), "Invalid gwx contract address")
245238
246-let bp = valueOrErrorMessage(addressFromString(bl[D]), "Invalid gwx contract address")
239+let bi = valueOrErrorMessage(addressFromString(be[B]), "Invalid gwx contract address")
247240
248-func bq (br,bs,bt,bu,bv,bw,bx,by,bz,bA) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA)], n)
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)
249242
250243
251-func bB (bC,bD,bE,bu,bx,by) = makeString(["%d%d%d%d%d%d", toString(bC), toString(bD), toString(bE), toString(bu), toString(bx), toString(by)], n)
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)
252245
253246
254-func bF (bG) = if ((bG == "WAVES"))
247+func by (bz) = if ((bz == "WAVES"))
255248 then wavesBalance(this).available
256- else assetBalance(this, fromBase58String(bG))
249+ else assetBalance(this, fromBase58String(bz))
257250
258251
259-func bH (bI,bJ) = fraction(bI, c, bJ)
252+func bA (bB,bC) = fraction(bB, c, bC)
260253
261254
262-func bK (bL,bM,bN) = {
263- let bO = fraction((bL - bM), b, bM)
264- let bP = ((bN - R(bO)) > d)
265- if (!(bP))
266- then throw(("Big slpg: " + toString(bO)))
267- else $Tuple2(bP, min([bL, bM]))
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]))
268261 }
269262
270263
271-func bQ (bR,bS,bT) = {
272- let bO = fraction(bS, b, bR)
273- let bU = (bT > bO)
274- if (if (bU)
264+func bJ (bK,bL,bM) = {
265+ let bH = fraction(bL, b, bK)
266+ let bN = (bM > bH)
267+ if (if (bN)
275268 then true
276- else (bS > bR))
277- then throw(((((((toString(bS) + " ") + toString(bR)) + " ") + toString(bO)) + " ") + toString(bT)))
278- else bU
269+ else (bL > bK))
270+ then throw(((((((toString(bL) + " ") + toString(bK)) + " ") + toString(bH)) + " ") + toString(bM)))
271+ else bN
279272 }
280273
281274
282-func bV (bW,bX,bY,bZ) = {
283- let ca = H(bY, bW)
284- let cb = H(bZ, bX)
285- bH(cb, ca)
275+func bO (bP,bQ,bR,bS) = {
276+ let bT = F(bR, bP)
277+ let bU = F(bS, bQ)
278+ bA(bU, bT)
286279 }
287280
288281
289-func cc (bY,bZ,cd) = {
290- let ce = aS()
291- let cf = parseIntValue(ce[y])
292- let cg = parseIntValue(ce[z])
293- let ch = bV(cf, cg, bY, bZ)
294- let bJ = H(bY, cf)
295- let bI = H(bZ, cg)
296- let ci = H(cd, a)
297- let cj = bH(bJ, ci)
298- let ck = bH(bI, ci)
299-[ch, cj, ck]
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]
300293 }
301294
302295
303-func cl (bY,bZ,cd) = {
304- let cm = cc(bY, bZ, cd)
305-[K(cm[0], a), K(cm[1], a), K(cm[2], a)]
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)]
306299 }
307300
308301
309-func cn (co) = {
310- let cp = fraction(co, aj, a)
311- $Tuple2((co - cp), cp)
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)
312307 }
313308
314309
315-func cq (cr,cs,ct,cu) = {
316- let ce = aS()
317- let cv = ce[v]
318- let cw = ce[w]
319- let cx = ce[x]
320- let cy = parseIntValue(ce[y])
321- let cz = parseIntValue(ce[z])
322- let cA = ce[u]
323- let cB = valueOrErrorMessage(assetInfo(fromBase58String(cv)), "Wrong LP id").quantity
324- if ((cv != cs))
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))
325320 then throw("Wrong pmt asset")
326321 else {
327- let cC = bF(cw)
328- let cD = H(cC, cy)
329- let cE = bF(cx)
330- let cF = H(cE, cz)
331- let cG = bH(cF, cD)
332- let cH = K(cG, a)
333- let cI = H(ct, a)
334- let cJ = H(cB, a)
335- let cK = fraction(cD, cI, cJ)
336- let cL = fraction(cF, cI, cJ)
337- let cM = K(cK, cy)
338- let cN = K(cL, cz)
339- let cO = if ((cr == ""))
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 == ""))
340335 then nil
341- else [ScriptTransfer(cu, cM, if ((cw == "WAVES"))
336+ else [ScriptTransfer(co, cG, if ((cq == "WAVES"))
342337 then unit
343- else fromBase58String(cw)), ScriptTransfer(cu, cN, if ((cx == "WAVES"))
338+ else fromBase58String(cq)), ScriptTransfer(co, cH, if ((cr == "WAVES"))
344339 then unit
345- else fromBase58String(cx)), StringEntry(ad(toString(cu), cr), bB(cM, cN, ct, cH, height, lastBlock.timestamp)), IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH)]
346- $Tuple10(cM, cN, cw, cx, cC, cE, cB, cG, cA, cO)
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)
347342 }
348343 }
349344
350345
351-func cP (cr,bN,cQ,cR,cS,cT,cu,cU,cV,cW,cX,cY,cZ) = {
352- let ce = aS()
353- let cv = fromBase58String(ce[v])
354- let da = ce[w]
355- let db = ce[x]
356- let dc = ce[A]
357- let dd = ce[B]
358- let de = parseIntValue(ce[y])
359- let df = parseIntValue(ce[z])
360- let cA = ce[u]
361- let dg = valueOrErrorMessage(assetInfo(cv), "Wr lp as").quantity
362- let cC = if (cU)
363- then bF(da)
364- else if (if (cW)
365- then (cZ == da)
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)
366361 else false)
367- then (bF(da) - cY)
368- else if (cW)
369- then bF(da)
370- else (bF(da) - cQ)
371- let cE = if (cU)
372- then bF(db)
373- else if (if (cW)
374- then (cZ == db)
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)
375370 else false)
376- then (bF(db) - cY)
377- else if (cW)
378- then bF(db)
379- else (bF(db) - cS)
380- let dh = H(cQ, de)
381- let di = H(cS, df)
382- let dj = bH(di, dh)
383- let cD = H(cC, de)
384- let cF = H(cE, df)
385- let dk = if ((dg == 0))
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))
386381 then {
387- let cG = d
388- let dl = d
389- let ci = pow((dh * di), 0, toBigInt(5), 1, 0, DOWN)
390- $Tuple5(K(ci, a), K(dh, de), K(di, df), bH((cF + di), (cD + dh)), dl)
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)
391386 }
392387 else {
393- let cG = bH(cF, cD)
394- let dm = fraction(R((cG - dj)), c, cG)
395- let dl = H(bN, a)
396- if (if (if (cX)
397- then (cG != d)
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)
398393 else false)
399- then (dm > dl)
394+ then (dg > df)
400395 else false)
401- then throw(((("Price slippage " + toString(dm)) + " > ") + toString(dl)))
396+ then throw(((("Price slippage " + toString(dg)) + " > ") + toString(df)))
402397 else {
403- let dn = H(dg, a)
404- let do = fraction(dh, cG, c)
405- let dp = fraction(di, c, cG)
406- let dq = if ((do > di))
407- then $Tuple2(dp, di)
408- else $Tuple2(dh, do)
409- let dr = dq._1
410- let ds = dq._2
411- let ci = fraction(dn, ds, cF)
412- $Tuple5(K(ci, a), K(dr, de), K(ds, df), cG, dl)
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)
413408 }
414409 }
415- let dt = dk._1
416- let du = dk._2
417- let dv = dk._3
418- let cH = K(dk._4, a)
419- let dw = K(dk._5, a)
420- if ((0 >= dt))
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))
421416 then throw("LP <= 0")
422417 else {
423- let dx = if (!(cV))
418+ let dr = if (!(cP))
424419 then 0
425- else dt
426- let dy = (cQ - du)
427- let dz = (cS - dv)
428- let dA = if (if (cW)
429- then (cZ == da)
420+ else dn
421+ let ds = (cK - do)
422+ let dt = (cM - dp)
423+ let du = if (if (cQ)
424+ then (cT == cU)
430425 else false)
431- then $Tuple2(cY, 0)
432- else if (if (cW)
433- then (cZ == db)
426+ then $Tuple2(cS, 0)
427+ else if (if (cQ)
428+ then (cT == cV)
434429 else false)
435- then $Tuple2(0, cY)
436- else $Tuple2(du, dv)
437- let dB = dA._1
438- let dC = dA._2
439- let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, cr), bq(dB, dC, dx, cH, bN, dw, height, lastBlock.timestamp, dy, dz))]
440- $Tuple13(dt, dx, cH, cC, cE, dg, cv, cA, dD, dy, dz, cR, cT)
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)
441436 }
442437 }
443438
444439
445-func dE (dF) = {
446- let dG = dF[0]
447- let dH = dF[1]
448- let dI = (dG + dH)
449- if ((dI == e))
450- then e
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")
451459 else {
452- let dJ = parseIntValue(aO)
453- let dK = (dJ * 2)
454- let cm = fraction(dG, dH, f)
455- let dL = fraction(cm, i, f)
456- let dM = fraction(toBigInt(dK), dI, f)
457- let dN = toBigInt((dK - 1))
458- func dO (dP) = {
459- let dQ = fraction(dP, dP, f)
460- let dR = fraction(dQ, dP, f)
461- let dS = fraction(dR, f, dL)
462- fraction((dM + fraction(dS, g, f)), dP, (fraction(dN, dP, f) + fraction(h, dS, f)), CEILING)
463- }
464-
465- func dT (dU,dV) = if (dU._2)
466- then dU
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")
467472 else {
468- let dP = dU._1
469- let dW = dO(dP)
470- let dX = toInt((dW - value(dP)))
471- let dY = if ((0 > dX))
472- then -(dX)
473- else dX
474- if ((1 >= dY))
475- then $Tuple2(dW, true)
476- else $Tuple2(dW, false)
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
477480 }
478-
479- let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
480- let ea = {
481- let eb = dZ
482- let ec = size(eb)
483- let ed = $Tuple2(dI, false)
484- func ee (ef,eg) = if ((eg >= ec))
485- then ef
486- else dT(ef, eb[eg])
487-
488- func eh (ef,eg) = if ((eg >= ec))
489- then ef
490- else throw("List size exceeds 15")
491-
492- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
493- }
494- let dP = ea._1
495- let ei = ea._2
496- if (ei)
497- then dP
498- else throw(("D calculation error, D = " + toString(dP)))
499481 }
500482 }
501483
502484
503-func ej (dF) = {
504- let ek = g
505- let dG = dF[0]
506- let dH = dF[1]
507- let el = parseBigIntValue(l)
508- let dJ = (parseBigIntValue(aO) * el)
509- let dI = (dG + dH)
510- if ((dI == e))
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))
511525 then e
512526 else {
513- let dK = (dJ * ek)
514- let dL = (((dG * dH) * ek) * ek)
515- let em = ((dK * dI) / el)
516- let en = (dK - el)
517- let eo = (ek + f)
518- func dT (dU,ep) = {
519- let eq = dU
520- let dP = eq._1
521- let ei = eq._2
522- if ((ei != unit))
523- then dU
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
536+ if ((ek != unit))
537+ then eg
524538 else {
525- let dS = (((dP * dP) * dP) / dL)
526- let dW = (((em + (dS * ek)) * dP) / (((en * dP) / el) + (eo * dS)))
527- let dY = S((dW - value(dP)))
528- if ((f >= dY))
529- then $Tuple2(dW, ep)
530- else $Tuple2(dW, unit)
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)
531545 }
532546 }
533547
534- let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
535- let er = {
536- let eb = dZ
537- let ec = size(eb)
538- let ed = $Tuple2(dI, unit)
539- func ee (ef,eg) = if ((eg >= ec))
540- then ef
541- else dT(ef, eb[eg])
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])
542556
543- func eh (ef,eg) = if ((eg >= ec))
544- then ef
557+ func ew (eu,ev) = if ((ev >= er))
558+ then eu
545559 else throw("List size exceeds 15")
546560
547- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
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)
548562 }
549- let dP = er._1
550- let ei = er._2
551- if ((ei != unit))
552- then dP
553- else throw(("D calculation error, D = " + toString(dP)))
563+ let ej = ep._1
564+ let ek = ep._2
565+ if ((ek != unit))
566+ then ej
567+ else throw(("D calculation error, D = " + toString(ej)))
554568 }
555569 }
556570
557571
558-func es (dF,dV,et) = {
559- let ek = g
560- let eu = dF[if ((dV == 0))
572+func ex (dT,dM,ey) = {
573+ let dU = g
574+ let ez = dT[if ((dM == 0))
561575 then 1
562576 else 0]
563- let el = parseBigIntValue(l)
564- let dJ = (parseBigIntValue(aO) * el)
565- let dI = eu
566- let dK = (dJ * ek)
567- let ev = (((((et * et) / (eu * ek)) * et) * el) / (dK * ek))
568- let ew = ((dI + ((et * el) / dK)) - et)
569- func dT (dU,ep) = {
570- let ex = dU
571- let ey = ex._1
572- let ei = ex._2
573- if ((ei != unit))
574- then dU
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
587+ if ((ek != unit))
588+ then eg
575589 else {
576- let ez = (((ey * ey) + ev) / ((g * ey) + ew))
577- let eA = S((ez - value(ey)))
578- if ((f >= eA))
579- then $Tuple2(ez, ep)
580- else $Tuple2(ez, unit)
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)
581595 }
582596 }
583597
584- let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
585- let eB = {
586- let eb = dZ
587- let ec = size(eb)
588- let ed = $Tuple2(et, unit)
589- func ee (ef,eg) = if ((eg >= ec))
590- then ef
591- else dT(ef, eb[eg])
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])
592606
593- func eh (ef,eg) = if ((eg >= ec))
594- then ef
607+ func ew (eu,ev) = if ((ev >= er))
608+ then eu
595609 else throw("List size exceeds 15")
596610
597- eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
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)
598612 }
599- let ey = eB._1
600- let ei = eB._2
601- if ((ei != unit))
602- then ey
603- else throw(("Y calculation error, Y = " + toString(ey)))
613+ let eD = eG._1
614+ let ek = eG._2
615+ if ((ek != unit))
616+ then eD
617+ else throw(("Y calculation error, Y = " + toString(eD)))
604618 }
605619
606620
607-func eC (eD,eE,eF) = {
608- let eG = fraction(dE([eD, eE]), c, eF)
609- if ((eF == e))
610- then e
611- else eG
612- }
613-
614-
615-func eH (eI,eJ,eK) = {
616- let eL = (toBigInt(bF(aY(bg))) - eI)
617- let eM = (toBigInt(bF(aY(bh))) - eJ)
618- let eN = (toBigInt(value(assetInfo(bf)).quantity) - eK)
619- let eO = eC(eL, eM, eN)
620- eO
621- }
622-
623-
624-func eP (eQ,eR,eK) = {
625- let eL = (bF(aY(bg)) + eQ)
626- let eM = (bF(aY(bh)) + eR)
627- let eN = (value(assetInfo(bf)).quantity + eK)
628- let eG = eC(toBigInt(eL), toBigInt(eM), toBigInt(eN))
629- let eS = [IntegerEntry(al, height), StringEntry(ak, toString(eG))]
630- $Tuple2(eS, eG)
631- }
632-
633-
634-func eT (eU,eG) = if ((eG >= eU))
635- then true
636- else aK("updated DLp lower than current DLp")
637-
638-
639-func eV (eW) = {
640- let eX = eW.amount
641- let eY = fraction(eW.amount, eW.price, a, FLOOR)
642- let eZ = if ((eW.orderType == Buy))
643- then $Tuple2(eX, -(eY))
644- else $Tuple2(-(eX), eY)
645- let eQ = eZ._1
646- let eR = eZ._2
647- if (if (if (aP())
648- then true
649- else (be == r))
650- then true
651- else (be == s))
652- then throw("Admin blocked")
653- else if (if ((eW.assetPair.amountAsset != bg))
654- then true
655- else (eW.assetPair.priceAsset != bh))
656- then throw("Wr assets")
657- else {
658- let fa = parseBigIntValue(getStringValue(this, ak))
659- let fb = eP(eQ, eR, 0)
660- let fc = fb._1
661- let fd = fb._2
662- let fe = (fd >= fa)
663- fe
664- }
665- }
666-
667-
668-func ff (dV) = if ((size(dV.payments) != 1))
669- then throw("1 pmnt exp")
670- else {
671- let fg = value(dV.payments[0])
672- let cs = value(fg.assetId)
673- let cY = fg.amount
674- let dk = cq(toBase58String(dV.transactionId), toBase58String(cs), cY, dV.caller)
675- let cM = dk._1
676- let cN = dk._2
677- let cA = parseIntValue(dk._9)
678- let cO = dk._10
679- if (if (aP())
680- then true
681- else (cA == s))
682- then throw(("Admin blocked: " + toString(cA)))
683- else $Tuple5(cM, cN, cY, cs, cO)
684- }
685-
686-
687-func fh (fi,ac,fj,fk,bN,cV,cW,cX,cY,cZ) = {
688- let dk = cP(ac, bN, value(fj).amount, value(fj).assetId, value(fk).amount, value(fk).assetId, fi, (ac == ""), cV, cW, cX, cY, cZ)
689- let cA = parseIntValue(dk._8)
690- if (if (if (aP())
691- then true
692- else (cA == q))
693- then true
694- else (cA == s))
695- then throw(("Blocked:" + toString(cA)))
696- else dk
697- }
698-
699-
700-func fl (fm,cs,cu,ac,fn) = {
701- let ba = aS()
702- let cw = ba[w]
703- let cx = ba[x]
704- let cv = ba[v]
705- let de = parseIntValue(ba[y])
706- let df = parseIntValue(ba[z])
707- let eN = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
708- let fo = if ((eN > e))
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))
709630 then true
710631 else throw("initial deposit requires all coins")
711- if ((fo == fo))
632+ if ((eL == eL))
712633 then {
713- let cC = bF(cw)
714- let cE = bF(cx)
715- let fp = if ((ac == ""))
716- then $Tuple2(cC, cE)
717- else if ((cs == cw))
718- then if ((fm > cC))
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))
719640 then throw("invalid payment amount")
720- else $Tuple2((cC - fm), cE)
721- else if ((cs == cx))
722- then if ((fm > cE))
641+ else $Tuple2((cw - eI), cy)
642+ else if ((cm == cr))
643+ then if ((eI > cy))
723644 then throw("invalid payment amount")
724- else $Tuple2(cC, (cE - fm))
645+ else $Tuple2(cw, (cy - eI))
725646 else throw("wrong pmtAssetId")
726- let fq = fp._1
727- let fr = fp._2
728- let fs = if ((cs == cw))
729- then $Tuple2(fm, 0)
730- else if ((cs == cx))
731- then $Tuple2(0, fm)
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)
732653 else throw("invalid payment")
733- let ft = fs._1
734- let fu = fs._2
735- let fv = if (fn)
736- then $Tuple3(cn(ft)._1, cn(fu)._1, cn(fm)._2)
737- else $Tuple3(ft, fu, 0)
738- let fw = fv._1
739- let fx = fv._2
740- let cp = fv._3
741- let fy = (fq + fw)
742- let fz = (fr + fx)
743- let bS = dE([toBigInt(fq), toBigInt(fr)])
744- let bR = dE([toBigInt(fy), toBigInt(fz)])
745- let fA = if ((bR > bS))
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))
746667 then true
747668 else throw()
748- if ((fA == fA))
669+ if ((eX == eX))
749670 then {
750- let fB = fraction(eN, (bR - bS), bS, FLOOR)
751- let cH = K(bH(H(fz, df), H(fy, de)), a)
752- let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(ft, fu, toInt(fB), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
753- let fC = fraction(fr, a, fq)
754- let fD = fraction(fm, a, (fC + a))
755- let fE = (fm - fD)
756- let fF = fraction(eN, toBigInt(fE), toBigInt(fr))
757- let fG = toInt(fraction((fB - fF), b, fF))
758- $Tuple4(toInt(fB), dD, cp, fG)
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)
759680 }
760681 else throw("Strict value is not equal to itself.")
761682 }
762683 else throw("Strict value is not equal to itself.")
763684 }
764685
765686
766-func fH (fI,fJ,fK,fi,fL,fM) = {
767- let ba = aS()
768- let cv = ba[v]
769- let cw = ba[w]
770- let cx = ba[x]
771- let fN = parseIntValue(ba[y])
772- let fO = parseIntValue(ba[z])
773- let fP = ba[u]
774- let cu = if ((fi == bp))
775- then fL
776- else fi
777- let fg = value(fK[0])
778- let cs = value(fg.assetId)
779- let cY = fg.amount
780- let eO = eH(e, e, e)
781- if ((eO == eO))
782- then {
783- let cr = toBase58String(fM)
784- if ((cv != toBase58String(cs)))
785- then throw("Wrong LP")
786- else {
787- let cC = bF(cw)
788- let cE = bF(cx)
789- let fQ = {
790- let fR = invoke(this, "getOneTknV2READONLY", [fI, cY], nil)
791- if ($isInstanceOf(fR, "(Int, Int)"))
792- then fR
793- else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
794- }
795- if ((fQ == fQ))
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))
796741 then {
797- let cp = fQ._2
798- let fS = fQ._1
799- let fT = if (if ((fJ > 0))
800- then (fJ > fS)
801- else false)
802- then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
803- else fS
804- let fU = if ((fI == cw))
805- then $Tuple4(fT, 0, ((cC - fT) - cp), cE)
806- else if ((fI == cx))
807- then $Tuple4(0, fT, cC, ((cE - fT) - cp))
808- else throw("invalid out asset id")
809- let fV = fU._1
810- let fW = fU._2
811- let fy = fU._3
812- let fz = fU._4
813- let fX = bH(H(fz, fO), H(fy, fN))
814- let fY = K(fX, a)
815- let fZ = if ((fI == "WAVES"))
816- then unit
817- else fromBase58String(fI)
818- let ga = if ((cp > 0))
819- then [ScriptTransfer(aR, cp, fZ)]
820- else nil
821- let cO = ([ScriptTransfer(cu, fT, fZ), StringEntry(ad(toString(cu), cr), bB(fV, fW, cY, fY, height, lastBlock.timestamp)), IntegerEntry(W(), fY), IntegerEntry(X(height, lastBlock.timestamp), fY)] ++ ga)
822- if ((cO == cO))
823- then {
824- let gb = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
825- if ((gb == gb))
826- then {
827- let gc = {
828- let gd = if ((this == aR))
829- then 0
830- else cp
831- let ge = if ((aW(fI) == bg))
832- then true
833- else false
834- if (ge)
835- then $Tuple2(-((fS + gd)), 0)
836- else $Tuple2(0, -((fS + gd)))
837- }
838- let eQ = gc._1
839- let eR = gc._2
840- let gf = eP(eQ, eR, 0)
841- let gg = gf._1
842- let eG = gf._2
843- let gh = eT(eO, eG)
844- if ((gh == gh))
845- then $Tuple2((cO ++ gg), fT)
846- else throw("Strict value is not equal to itself.")
847- }
848- else throw("Strict value is not equal to itself.")
849- }
742+ let fx = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
743+ if ((fx == fx))
744+ then $Tuple2(cI, fp)
850745 else throw("Strict value is not equal to itself.")
851746 }
852747 else throw("Strict value is not equal to itself.")
853748 }
749+ else throw("Strict value is not equal to itself.")
854750 }
855- else throw("Strict value is not equal to itself.")
856751 }
857752
858753
859-func gi () = {
860- let aE = getString(U())
861- if ($isInstanceOf(aE, "String"))
754+func fy () = {
755+ let av = getString(S())
756+ if ($isInstanceOf(av, "String"))
862757 then {
863- let dI = aE
864- fromBase58String(dI)
758+ let dZ = av
759+ fromBase58String(dZ)
865760 }
866- else if ($isInstanceOf(aE, "Unit"))
761+ else if ($isInstanceOf(av, "Unit"))
867762 then unit
868763 else throw("Match error")
869764 }
870765
871766
872-func gj () = {
873- let aE = getString(V())
874- if ($isInstanceOf(aE, "String"))
767+func fz () = {
768+ let av = getString(T())
769+ if ($isInstanceOf(av, "String"))
875770 then {
876- let dI = aE
877- fromBase58String(dI)
771+ let dZ = av
772+ fromBase58String(dZ)
878773 }
879- else if ($isInstanceOf(aE, "Unit"))
774+ else if ($isInstanceOf(av, "Unit"))
880775 then unit
881776 else throw("Match error")
882777 }
883778
884779
885-let gk = throw("Permission denied")
780+let fA = throw("Permission denied")
886781
887-func gl (dV) = {
888- let aE = gi()
889- if ($isInstanceOf(aE, "ByteVector"))
782+func fB (dM) = {
783+ let av = fy()
784+ if ($isInstanceOf(av, "ByteVector"))
890785 then {
891- let gm = aE
892- (dV.callerPublicKey == gm)
786+ let fC = av
787+ (dM.callerPublicKey == fC)
893788 }
894- else if ($isInstanceOf(aE, "Unit"))
895- then (dV.caller == this)
789+ else if ($isInstanceOf(av, "Unit"))
790+ then (dM.caller == this)
896791 else throw("Match error")
897792 }
898793
899794
900-func gn (dV) = {
901- let aE = gi()
902- if ($isInstanceOf(aE, "ByteVector"))
795+func fD (dM) = {
796+ let av = fy()
797+ if ($isInstanceOf(av, "ByteVector"))
903798 then {
904- let gm = aE
905- if ((dV.callerPublicKey == gm))
799+ let fC = av
800+ if ((dM.callerPublicKey == fC))
906801 then true
907- else gk
802+ else fA
908803 }
909- else if ($isInstanceOf(aE, "Unit"))
910- then if ((dV.caller == this))
804+ else if ($isInstanceOf(av, "Unit"))
805+ then if ((dM.caller == this))
911806 then true
912- else gk
807+ else fA
913808 else throw("Match error")
914809 }
915810
916811
917-@Callable(dV)
918-func constructor (T) = {
919- let ev = gn(dV)
920- if ((ev == ev))
921- then [StringEntry(T(), T)]
812+@Callable(dM)
813+func constructor (R) = {
814+ let eA = fD(dM)
815+ if ((eA == eA))
816+ then [StringEntry(R(), R)]
922817 else throw("Strict value is not equal to itself.")
923818 }
924819
925820
926821
927-@Callable(dV)
928-func setManager (go) = {
929- let ev = gn(dV)
930- if ((ev == ev))
822+@Callable(dM)
823+func setManager (fE) = {
824+ let eA = fD(dM)
825+ if ((eA == eA))
931826 then {
932- let gp = fromBase58String(go)
933- if ((gp == gp))
934- then [StringEntry(V(), go)]
827+ let fF = fromBase58String(fE)
828+ if ((fF == fF))
829+ then [StringEntry(T(), fE)]
935830 else throw("Strict value is not equal to itself.")
936831 }
937832 else throw("Strict value is not equal to itself.")
938833 }
939834
940835
941836
942-@Callable(dV)
837+@Callable(dM)
943838 func confirmManager () = {
944- let cm = gj()
945- let gq = if (isDefined(cm))
839+ let cf = fz()
840+ let fG = if (isDefined(cf))
946841 then true
947842 else throw("No pending manager")
948- if ((gq == gq))
843+ if ((fG == fG))
949844 then {
950- let gr = if ((dV.callerPublicKey == value(cm)))
845+ let fH = if ((dM.callerPublicKey == value(cf)))
951846 then true
952847 else throw("You are not pending manager")
953- if ((gr == gr))
954- then [StringEntry(U(), toBase58String(value(cm))), DeleteEntry(V())]
848+ if ((fH == fH))
849+ then [StringEntry(S(), toBase58String(value(cf))), DeleteEntry(T())]
955850 else throw("Strict value is not equal to itself.")
956851 }
957852 else throw("Strict value is not equal to itself.")
958853 }
959854
960855
961856
962-@Callable(dV)
963-func put (gs,gt) = {
964- let gu = bk()
965- let gv = valueOrErrorMessage(addressFromString(gu[C]), "Wr st addr")
966- let gw = valueOrErrorMessage(addressFromString(gu[E]), "Wr sl addr")
967- if ((0 > gs))
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))
968863 then throw("Wrong slippage")
969- else if ((size(dV.payments) != 2))
864+ else if ((size(dM.payments) != 2))
970865 then throw("2 pmnts expd")
971866 else {
972- let gx = toBigInt(value(dV.payments[0]).amount)
973- let gy = toBigInt(value(dV.payments[1]).amount)
974- let eO = eH(gx, gy, toBigInt(0))
975- if ((eO == eO))
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))
976877 then {
977- let gz = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gs, true, false, true, 0, "")
978- let dx = gz._2
979- let gA = gz._7
980- let cO = gz._9
981- let dy = gz._10
982- let dz = gz._11
983- let cw = gz._12
984- let cx = gz._13
985- let dk = invoke(aN, "emit", [dx], nil)
986- if ((dk == dk))
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))
987888 then {
988- let gB = {
989- let aE = dk
990- if ($isInstanceOf(aE, "Address"))
991- then {
992- let gC = aE
993- invoke(gC, "emit", [dx], nil)
994- }
995- else unit
996- }
997- if ((gB == gB))
889+ let fR = if ((ds > 0))
890+ then invoke(fM, "put", nil, [AttachedPayment(cq, ds)])
891+ else nil
892+ if ((fR == fR))
998893 then {
999- let gD = if ((dy > 0))
1000- then invoke(gw, "put", nil, [AttachedPayment(cw, dy)])
894+ let fS = if ((dt > 0))
895+ then invoke(fM, "put", nil, [AttachedPayment(cr, dt)])
1001896 else nil
1002- if ((gD == gD))
897+ if ((fS == fS))
1003898 then {
1004- let gE = if ((dz > 0))
1005- then invoke(gw, "put", nil, [AttachedPayment(cx, dz)])
1006- else nil
1007- if ((gE == gE))
899+ let fT = if (fJ)
1008900 then {
1009- let gF = if (gt)
1010- then {
1011- let gG = invoke(gv, "stake", nil, [AttachedPayment(gA, dx)])
1012- if ((gG == gG))
1013- then nil
1014- else throw("Strict value is not equal to itself.")
1015- }
1016- else [ScriptTransfer(dV.caller, dx, gA)]
1017- let gH = eP(0, 0, 0)
1018- let gg = gH._1
1019- let eG = gH._2
1020- let gh = eT(eO, eG)
1021- if ((gh == gh))
1022- then ((cO ++ gF) ++ gg)
901+ let fU = invoke(fL, "stake", nil, [AttachedPayment(fO, dr)])
902+ if ((fU == fU))
903+ then nil
1023904 else throw("Strict value is not equal to itself.")
1024905 }
1025- else throw("Strict value is not equal to itself.")
906+ else [ScriptTransfer(dM.caller, dr, fO)]
907+ (cI ++ fT)
1026908 }
1027909 else throw("Strict value is not equal to itself.")
1028910 }
1029911 else throw("Strict value is not equal to itself.")
1030912 }
1031913 else throw("Strict value is not equal to itself.")
1032914 }
1033915 else throw("Strict value is not equal to itself.")
1034916 }
1035917 }
1036918
1037919
1038920
1039-@Callable(dV)
1040-func putOneTknV2 (fJ,gt) = {
1041- let gI = {
1042- let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1043- if ($isInstanceOf(fR, "Boolean"))
1044- then fR
1045- else throw(($getType(fR) + " couldn't be cast to Boolean"))
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"))
1046928 }
1047- let gJ = if (if (if (aP())
929+ let fW = if (if (if (aI())
1048930 then true
1049- else (be == q))
931+ else (aX == o))
1050932 then true
1051- else (be == s))
933+ else (aX == q))
1052934 then true
1053- else gI
1054- let gK = [if (if (!(gJ))
935+ else fV
936+ let fX = [if (if (!(fW))
1055937 then true
1056- else gl(dV))
938+ else fB(dM))
1057939 then true
1058- else aK("put operation is blocked by admin"), if ((size(dV.payments) == 1))
940+ else aB("put operation is blocked by admin"), if ((size(dM.payments) == 1))
1059941 then true
1060- else aK("exactly 1 payment are expected")]
1061- if ((gK == gK))
942+ else aB("exactly 1 payment are expected")]
943+ if ((fX == fX))
1062944 then {
1063- let ba = aS()
1064- let cw = ba[w]
1065- let cx = ba[x]
1066- let cv = fromBase58String(ba[v])
1067- let fN = parseIntValue(ba[y])
1068- let fO = parseIntValue(ba[z])
1069- let cu = if ((dV.caller == this))
1070- then dV.originCaller
1071- else dV.caller
1072- let fg = value(dV.payments[0])
1073- let cs = toBase58String(value(fg.assetId))
1074- let cY = fg.amount
1075- let gL = fl(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
1076- if ((gL == gL))
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))
1077959 then {
1078- let cp = gL._3
1079- let cO = gL._2
1080- let gM = gL._1
1081- let dx = if (if ((fJ > 0))
1082- then (fJ > gM)
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)
1083965 else false)
1084- then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
1085- else gM
1086- let gz = invoke(aN, "emit", [dx], nil)
1087- if ((gz == gz))
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))
1088970 then {
1089- let gB = {
1090- let aE = gz
1091- if ($isInstanceOf(aE, "Address"))
971+ let fP = {
972+ let av = fN
973+ if ($isInstanceOf(av, "Address"))
1092974 then {
1093- let gC = aE
1094- invoke(gC, "emit", [dx], nil)
975+ let fQ = av
976+ invoke(fQ, "emit", [dr], nil)
1095977 }
1096978 else unit
1097979 }
1098- if ((gB == gB))
980+ if ((fP == fP))
1099981 then {
1100- let gF = if (gt)
982+ let fT = if (fJ)
1101983 then {
1102- let gG = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
1103- if ((gG == gG))
984+ let fU = invoke(bf, "stake", nil, [AttachedPayment(cp, dr)])
985+ if ((fU == fU))
1104986 then nil
1105987 else throw("Strict value is not equal to itself.")
1106988 }
1107- else [ScriptTransfer(dV.caller, dx, cv)]
1108- let ga = if ((cp > 0))
1109- then [ScriptTransfer(aR, cp, fromBase58String(cs))]
989+ else [ScriptTransfer(dM.caller, dr, cp)]
990+ let fw = if ((cj > 0))
991+ then [ScriptTransfer(aK, cj, fromBase58String(cm))]
1110992 else nil
1111- let gN = if ((this == aR))
1112- then $Tuple2(0, 0)
1113- else {
1114- let gO = if ((fg.assetId == bg))
1115- then true
1116- else false
1117- if (gO)
1118- then $Tuple2(-(cp), 0)
1119- else $Tuple2(0, -(cp))
1120- }
1121- let eQ = gN._1
1122- let eR = gN._2
1123- let gP = eP(eQ, eR, 0)
1124- let gg = gP._1
1125- let eG = gP._2
1126- $Tuple2((((cO ++ gF) ++ ga) ++ gg), dx)
993+ $Tuple2(((cI ++ fT) ++ fw), dr)
1127994 }
1128995 else throw("Strict value is not equal to itself.")
1129996 }
1130997 else throw("Strict value is not equal to itself.")
1131998 }
1132999 else throw("Strict value is not equal to itself.")
11331000 }
11341001 else throw("Strict value is not equal to itself.")
11351002 }
11361003
11371004
11381005
1139-@Callable(dV)
1140-func putForFree (gQ) = if ((0 > gQ))
1006+@Callable(dM)
1007+func putForFree (ga) = if ((0 > ga))
11411008 then throw("Wrong slpg")
1142- else if ((size(dV.payments) != 2))
1009+ else if ((size(dM.payments) != 2))
11431010 then throw("2 pmnts expd")
11441011 else {
1145- let gR = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gQ, false, false, true, 0, "")
1146- let cO = gR._9
1147- let gx = toBigInt(value(dV.payments[0]).amount)
1148- let gy = toBigInt(value(dV.payments[1]).amount)
1149- let eO = eH(gx, gy, toBigInt(0))
1150- if ((eO == eO))
1151- then {
1152- let gS = eP(0, 0, 0)
1153- let gg = gS._1
1154- let eG = gS._2
1155- let gh = eT(eO, eG)
1156- if ((gh == gh))
1157- then (cO ++ gg)
1158- else throw("Strict value is not equal to itself.")
1159- }
1160- else throw("Strict value is not equal to itself.")
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
11611014 }
11621015
11631016
11641017
1165-@Callable(dV)
1018+@Callable(dM)
11661019 func get () = {
1167- let dk = ff(dV)
1168- let gT = dk._1
1169- let cN = dk._2
1170- let cY = dk._3
1171- let cs = dk._4
1172- let cO = dk._5
1173- let ew = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1174- if ((ew == ew))
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))
11751055 then {
1176- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1177- let gU = eP(-(gT), -(cN), 0)
1178- let gg = gU._1
1179- let eG = gU._2
1180- let gh = eT(eO, eG)
1181- if ((gh == gh))
1182- then (cO ++ gg)
1183- else throw("Strict value is not equal to itself.")
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)
11841060 }
11851061 else throw("Strict value is not equal to itself.")
11861062 }
11871063
11881064
11891065
1190-@Callable(dV)
1191-func getOneTknV2 (fI,fJ) = {
1192- let gI = {
1193- let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1194- if ($isInstanceOf(fR, "Boolean"))
1195- then fR
1196- else throw(($getType(fR) + " couldn't be cast to Boolean"))
1197- }
1198- let gV = if (if (aP())
1199- then true
1200- else (be == s))
1201- then true
1202- else gI
1203- let gK = [if (if (!(gV))
1204- then true
1205- else gl(dV))
1206- then true
1207- else aK("get operation is blocked by admin"), if ((size(dV.payments) == 1))
1208- then true
1209- else aK("exactly 1 payment are expected")]
1210- if ((gK == gK))
1211- then {
1212- let gW = fH(fI, fJ, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1213- let cO = gW._1
1214- let fT = gW._2
1215- $Tuple2(cO, fT)
1216- }
1217- else throw("Strict value is not equal to itself.")
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))
12181088 }
12191089
12201090
12211091
1222-@Callable(dV)
1223-func refreshDLp () = {
1224- let gX = valueOrElse(getInteger(al), 0)
1225- let gY = if (((height - gX) >= ao))
1226- then unit
1227- else aK(makeString([toString(ao), " blocks have not passed since the previous call"], ""))
1228- if ((gY == gY))
1229- then {
1230- let fa = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
1231- let gZ = eP(0, 0, 0)
1232- let ha = gZ._1
1233- let eG = gZ._2
1234- let eS = if ((fa != eG))
1235- then ha
1236- else aK("nothing to refresh")
1237- $Tuple2(eS, toString(eG))
1238- }
1239- else throw("Strict value is not equal to itself.")
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))
12401118 }
12411119
12421120
12431121
1244-@Callable(dV)
1245-func getOneTknV2READONLY (fI,hb) = {
1246- let ba = aS()
1247- let cw = ba[w]
1248- let cx = ba[x]
1249- let cv = ba[v]
1250- let dF = [toBigInt(bF(cw)), toBigInt(bF(cx))]
1251- let eF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
1252- let bS = dE(dF)
1253- let bR = (bS - fraction(toBigInt(hb), bS, eF))
1254- let hc = if ((fI == cw))
1255- then 0
1256- else if ((fI == cx))
1257- then 1
1258- else throw("invalid out asset id")
1259- let hd = es(dF, hc, bR)
1260- let he = (dF[hc] - hd)
1261- let hf = max([0, toInt((he - f))])
1262- let hg = cn(hf)
1263- let fS = hg._1
1264- let cp = hg._2
1265- $Tuple2(nil, $Tuple2(fS, cp))
1266- }
1267-
1268-
1269-
1270-@Callable(dV)
1271-func getOneTknV2WithBonusREADONLY (fI,hb) = {
1272- let ba = aS()
1273- let cw = ba[w]
1274- let cx = ba[x]
1275- let cv = ba[v]
1276- let cC = bF(cw)
1277- let cE = bF(cx)
1278- let hh = {
1279- let fR = invoke(this, "getOneTknV2READONLY", [fI, hb], nil)
1280- if ($isInstanceOf(fR, "(Int, Int)"))
1281- then fR
1282- else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
1283- }
1284- let fS = hh._1
1285- let cp = hh._2
1286- let dk = cq("", cv, hb, this)
1287- let cM = dk._1
1288- let cN = dk._2
1289- let hi = (cM + cN)
1290- let fG = if ((hi == 0))
1291- then if ((fS == 0))
1292- then 0
1293- else throw("bonus calculation error")
1294- else fraction((fS - hi), a, hi)
1295- $Tuple2(nil, $Tuple3(fS, cp, fG))
1296- }
1297-
1298-
1299-
1300-@Callable(dV)
1301-func getNoLess (hj,hk) = {
1302- let dk = ff(dV)
1303- let cM = dk._1
1304- let cN = dk._2
1305- let cY = dk._3
1306- let cs = dk._4
1307- let cO = dk._5
1308- if ((hj > cM))
1309- then throw(((("Failed: " + toString(cM)) + " < ") + toString(hj)))
1310- else if ((hk > cN))
1311- then throw(((("Failed: " + toString(cN)) + " < ") + toString(hk)))
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)))
13121134 else {
1313- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1314- let hl = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1315- if ((hl == hl))
1316- then {
1317- let hm = eP(-(cM), -(cN), 0)
1318- let gg = hm._1
1319- let eG = hm._2
1320- let gh = eT(eO, eG)
1321- if ((gh == gh))
1322- then (cO ++ gg)
1323- else throw("Strict value is not equal to itself.")
1324- }
1135+ let gq = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1136+ if ((gq == gq))
1137+ then cI
13251138 else throw("Strict value is not equal to itself.")
13261139 }
13271140 }
13281141
13291142
13301143
1331-@Callable(dV)
1332-func unstakeAndGet (co) = {
1333- let hn = if ((size(dV.payments) != 0))
1144+@Callable(dM)
1145+func unstakeAndGet (ch) = {
1146+ let gr = if ((size(dM.payments) != 0))
13341147 then throw("No pmnts expd")
13351148 else true
1336- if ((hn == hn))
1149+ if ((gr == gr))
13371150 then {
1338- let ce = aS()
1339- let ho = bk()
1340- let gA = fromBase58String(ce[v])
1341- let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1342- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1343- let hq = invoke(hp, "unstake", [toBase58String(gA), co], nil)
1344- if ((hq == hq))
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))
13451157 then {
1346- let dk = cq(toBase58String(dV.transactionId), toBase58String(gA), co, dV.caller)
1347- let cM = dk._1
1348- let cN = dk._2
1349- let cA = parseIntValue(dk._9)
1350- let cO = dk._10
1351- let hr = if (if (aP())
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())
13521162 then true
1353- else (cA == s))
1354- then throw(("Blocked: " + toString(cA)))
1163+ else (cu == q))
1164+ then throw(("Blocked: " + toString(cu)))
13551165 else true
1356- if ((hr == hr))
1166+ if ((gv == gv))
13571167 then {
1358- let hs = invoke(aN, "burn", [co], [AttachedPayment(gA, co)])
1359- if ((hs == hs))
1360- then {
1361- let ht = eP(-(cM), -(cN), 0)
1362- let gg = ht._1
1363- let eG = ht._2
1364- let gh = eT(eO, eG)
1365- if ((gh == gh))
1366- then (cO ++ gg)
1367- else throw("Strict value is not equal to itself.")
1368- }
1168+ let gw = invoke(aD, "burn", [ch], [AttachedPayment(fO, ch)])
1169+ if ((gw == gw))
1170+ then cI
13691171 else throw("Strict value is not equal to itself.")
13701172 }
13711173 else throw("Strict value is not equal to itself.")
13721174 }
13731175 else throw("Strict value is not equal to itself.")
13741176 }
13751177 else throw("Strict value is not equal to itself.")
13761178 }
13771179
13781180
13791181
1380-@Callable(dV)
1381-func unstakeAndGetNoLess (hu,hv,hk) = {
1382- let gV = if (aP())
1182+@Callable(dM)
1183+func unstakeAndGetNoLess (gx,gy,gp) = {
1184+ let gd = if (aI())
13831185 then true
1384- else (be == s)
1385- let gK = [if (!(gV))
1186+ else (aX == q)
1187+ let fX = [if (!(gd))
13861188 then true
1387- else throw("get operation is blocked by admin"), if ((size(dV.payments) == 0))
1189+ else throw("get operation is blocked by admin"), if ((size(dM.payments) == 0))
13881190 then true
13891191 else throw("no payments are expected")]
1390- if ((gK == gK))
1192+ if ((fX == fX))
13911193 then {
1392- let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1393- let hq = invoke(bm, "unstake", [toBase58String(bf), hu], nil)
1394- if ((hq == hq))
1194+ let gu = invoke(bf, "unstake", [toBase58String(aY), gx], nil)
1195+ if ((gu == gu))
13951196 then {
1396- let hw = cq(toBase58String(dV.transactionId), toBase58String(bf), hu, dV.caller)
1397- let cM = hw._1
1398- let cN = hw._2
1399- let cO = hw._10
1400- let hx = [if ((cM >= hv))
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))
14011202 then true
1402- else throw(makeString(["amount asset amount to receive is less than ", toString(hv)], "")), if ((cN >= hk))
1203+ else throw(makeString(["amount asset amount to receive is less than ", toString(gy)], "")), if ((cH >= gp))
14031204 then true
1404- else throw(makeString(["price asset amount to receive is less than ", toString(hk)], ""))]
1405- if ((hx == hx))
1205+ else throw(makeString(["price asset amount to receive is less than ", toString(gp)], ""))]
1206+ if ((gA == gA))
14061207 then {
1407- let hl = invoke(aN, "burn", [hu], [AttachedPayment(bf, hu)])
1408- if ((hl == hl))
1409- then {
1410- let hy = eP(-(cM), -(cN), 0)
1411- let gg = hy._1
1412- let eG = hy._2
1413- let gh = eT(eO, eG)
1414- if ((gh == gh))
1415- then (cO ++ gg)
1416- else throw("Strict value is not equal to itself.")
1417- }
1208+ let gq = invoke(aD, "burn", [gx], [AttachedPayment(aY, gx)])
1209+ if ((gq == gq))
1210+ then cI
14181211 else throw("Strict value is not equal to itself.")
14191212 }
14201213 else throw("Strict value is not equal to itself.")
14211214 }
14221215 else throw("Strict value is not equal to itself.")
14231216 }
14241217 else throw("Strict value is not equal to itself.")
14251218 }
14261219
14271220
14281221
1429-@Callable(dV)
1430-func unstakeAndGetOneTknV2 (hu,fI,fJ) = {
1431- let gI = {
1432- let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1433- if ($isInstanceOf(fR, "Boolean"))
1434- then fR
1435- else throw(($getType(fR) + " couldn't be cast to Boolean"))
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"))
14361229 }
1437- let gV = if (if (aP())
1230+ let gd = if (if (aI())
14381231 then true
1439- else (be == s))
1232+ else (aX == q))
14401233 then true
1441- else gI
1442- let gK = [if (if (!(gV))
1234+ else fV
1235+ let fX = [if (if (!(gd))
14431236 then true
1444- else gl(dV))
1237+ else fB(dM))
14451238 then true
1446- else aK("get operation is blocked by admin"), if ((size(dV.payments) == 0))
1239+ else aB("get operation is blocked by admin"), if ((size(dM.payments) == 0))
14471240 then true
1448- else aK("no payments are expected")]
1449- if ((gK == gK))
1241+ else aB("no payments are expected")]
1242+ if ((fX == fX))
14501243 then {
1451- let ce = aS()
1452- let ho = bk()
1453- let gA = fromBase58String(ce[v])
1454- let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1455- let hq = invoke(hp, "unstake", [toBase58String(gA), hu], nil)
1456- if ((hq == hq))
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))
14571250 then {
1458- let hz = fH(fI, fJ, [AttachedPayment(gA, hu)], dV.caller, dV.originCaller, dV.transactionId)
1459- let cO = hz._1
1460- let fT = hz._2
1461- $Tuple2(cO, fT)
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)
14621255 }
14631256 else throw("Strict value is not equal to itself.")
14641257 }
14651258 else throw("Strict value is not equal to itself.")
14661259 }
14671260
14681261
14691262
1470-@Callable(dV)
1471-func putOneTknV2WithBonusREADONLY (hA,hB) = {
1472- let ba = aS()
1473- let cw = ba[w]
1474- let cx = ba[x]
1475- let cv = ba[v]
1476- let hC = fl(hA, hB, "", "", true)
1477- let fB = hC._1
1478- let cO = hC._2
1479- let cp = hC._3
1480- let fG = hC._4
1481- $Tuple2(nil, $Tuple3(fB, cp, fG))
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))
14821275 }
14831276
14841277
14851278
1486-@Callable(dV)
1487-func putOneTknV2WithoutTakeFeeREADONLY (hA,hB) = {
1488- let ba = aS()
1489- let cw = ba[w]
1490- let cx = ba[x]
1491- let cv = ba[v]
1492- let hD = fl(hA, hB, "", "", false)
1493- let fB = hD._1
1494- let cO = hD._2
1495- let cp = hD._3
1496- let fG = hD._4
1497- $Tuple2(nil, $Tuple3(fB, cp, fG))
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))
14981291 }
14991292
15001293
15011294
1502-@Callable(dV)
1503-func activate (hE,hF) = if ((toString(dV.caller) != toString(aN)))
1295+@Callable(dM)
1296+func activate (gG,gH) = if ((toString(dM.caller) != toString(aD)))
15041297 then throw("denied")
1505- else $Tuple2([StringEntry(ae(), hE), StringEntry(af(), hF)], "success")
1298+ else $Tuple2([StringEntry(ac(), gG), StringEntry(ad(), gH)], "success")
15061299
15071300
15081301
1509-@Callable(dV)
1510-func setS (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1511- then gk
1512- else [StringEntry(hG, hr)]
1302+@Callable(dM)
1303+func setS (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1304+ then fA
1305+ else [StringEntry(gI, gv)]
15131306
15141307
15151308
1516-@Callable(dV)
1517-func setI (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1518- then gk
1519- else [IntegerEntry(hG, hr)]
1309+@Callable(dM)
1310+func setI (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1311+ then fA
1312+ else [IntegerEntry(gI, gv)]
15201313
15211314
15221315
1523-@Callable(dV)
1524-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aS())
1316+@Callable(dM)
1317+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aL())
15251318
15261319
15271320
1528-@Callable(dV)
1529-func getAccBalanceWrapperREADONLY (bG) = $Tuple2(nil, bF(bG))
1321+@Callable(dM)
1322+func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
15301323
15311324
15321325
1533-@Callable(dV)
1534-func calcPricesWrapperREADONLY (bY,bZ,cd) = {
1535- let hH = cc(bY, bZ, cd)
1536- $Tuple2(nil, [toString(hH[0]), toString(hH[1]), toString(hH[2])])
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])])
15371330 }
15381331
15391332
15401333
1541-@Callable(dV)
1542-func fromX18WrapperREADONLY (L,hI) = $Tuple2(nil, K(parseBigIntValue(L), hI))
1334+@Callable(dM)
1335+func fromX18WrapperREADONLY (J,gK) = $Tuple2(nil, I(parseBigIntValue(J), gK))
15431336
15441337
15451338
1546-@Callable(dV)
1547-func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
1339+@Callable(dM)
1340+func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
15481341
15491342
15501343
1551-@Callable(dV)
1552-func calcPriceBigIntWrapperREADONLY (bI,bJ) = $Tuple2(nil, toString(bH(parseBigIntValue(bI), parseBigIntValue(bJ))))
1344+@Callable(dM)
1345+func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
15531346
15541347
15551348
1556-@Callable(dV)
1557-func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hJ,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hJ, cU, cV, true, false, 0, ""))
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, ""))
15581351
15591352
15601353
1561-@Callable(dV)
1562-func estimateGetOperationWrapperREADONLY (cr,hK,ct,hJ) = {
1563- let dk = cq(cr, hK, ct, addressFromStringValue(hJ))
1564- $Tuple2(nil, $Tuple10(dk._1, dk._2, dk._3, dk._4, dk._5, dk._6, dk._7, toString(dk._8), dk._9, dk._10))
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))
15651358 }
15661359
15671360
1568-
1569-@Callable(dV)
1570-func getFeeREADONLY () = $Tuple2(nil, aj)
1571-
1572-
1573-@Verifier(hL)
1574-func hM () = {
1575- let hN = {
1576- let aE = gi()
1577- if ($isInstanceOf(aE, "ByteVector"))
1361+@Verifier(gN)
1362+func gO () = {
1363+ let gP = {
1364+ let av = fy()
1365+ if ($isInstanceOf(av, "ByteVector"))
15781366 then {
1579- let gm = aE
1580- gm
1367+ let fC = av
1368+ fC
15811369 }
1582- else if ($isInstanceOf(aE, "Unit"))
1583- then hL.senderPublicKey
1370+ else if ($isInstanceOf(av, "Unit"))
1371+ then gN.senderPublicKey
15841372 else throw("Match error")
15851373 }
1586- let aE = hL
1587- if ($isInstanceOf(aE, "Order"))
1374+ let av = gN
1375+ if ($isInstanceOf(av, "Order"))
15881376 then {
1589- let eW = aE
1590- let hO = aQ()
1591- let hP = eV(eW)
1592- let hQ = sigVerify(eW.bodyBytes, eW.proofs[0], eW.senderPublicKey)
1593- let hR = sigVerify(eW.bodyBytes, eW.proofs[1], hO)
1594- if (if (if (hP)
1595- then hQ
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
15961384 else false)
1597- then hR
1385+ then gT
15981386 else false)
15991387 then true
1600- else az(hP, hQ, hR)
1388+ else aq(gR, gS, gT)
16011389 }
1602- else if ($isInstanceOf(aE, "SetScriptTransaction"))
1390+ else if ($isInstanceOf(av, "SetScriptTransaction"))
16031391 then {
1604- let dI = aE
1605- let hS = blake2b256(value(dI.script))
1606- let hT = fromBase64String(value(getString(aN, ax())))
1607- let hU = scriptHash(this)
1608- if (if ((hT == hS))
1609- then (hU != hS)
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)
16101398 else false)
16111399 then true
1612- else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
1400+ else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
16131401 }
1614- else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
1402+ else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
16151403 }
16161404

github/deemru/w8io/c3f4982 
415.66 ms