tx · GNqzB4bP8dYJ1ntqN6rBFuhUsgDCY1tyFYv2o9FV8ePf

3N6wAa7PMFZJu4Zrmp3avXmMnRTrRpMM9Lh:  -0.03800000 Waves

2023.04.06 17:30 [2522826] smart account 3N6wAa7PMFZJu4Zrmp3avXmMnRTrRpMM9Lh > SELF 0.00000000 Waves

{ "type": 13, "id": "GNqzB4bP8dYJ1ntqN6rBFuhUsgDCY1tyFYv2o9FV8ePf", "fee": 3800000, "feeAssetId": null, "timestamp": 1680791420432, "version": 2, "chainId": 84, "sender": "3N6wAa7PMFZJu4Zrmp3avXmMnRTrRpMM9Lh", "senderPublicKey": "Cr8D7eozSzJh7XHsYTjBinPpo3SS83BrCGiBAJsjGxBo", "proofs": [ "4gd2UTfAavzbwVDhaLGhoUZSq65zsrbutU9pdMqmhSYkKpRAbXjZiRFSt7WxfZh6K9uEtPYcaB3iYzU4R3WVpUj7" ], "script": "base64:BgLiLwgCEgUKAwEEARIHCgUBBAEIARIDCgEIEgASBAoCAQQSAwoBARIECgIBBBIECgIIARIECgIIARIECgIIARIFCgMBCAESABIECgIBARIDCgEBEgUKAwEBARIECgIICBIAEgASAwoBCBIFCgMBAQESBAoCAQESBAoCCAESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgSABIDCgEBEgMKAQESBAoCCAEiCmxQZGVjaW1hbHMiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgt3YXZlc1N0cmluZyIDU0VQIgpQb29sQWN0aXZlIg9Qb29sUHV0RGlzYWJsZWQiE1Bvb2xNYXRjaGVyRGlzYWJsZWQiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiDWlkeFBvb2xTdGF0dXMiEGlkeFBvb2xMUEFzc2V0SWQiDWlkeEFtdEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIOaWR4QW10QXNzZXREY20iEGlkeFByaWNlQXNzZXREY20iDmlkeElBbXRBc3NldElkIhBpZHhJUHJpY2VBc3NldElkIg1pZHhMUEFzc2V0RGNtIhJpZHhQb29sQW10QXNzZXRBbXQiFGlkeFBvb2xQcmljZUFzc2V0QW10IhFpZHhQb29sTFBBc3NldEFtdCIZaWR4RmFjdG9yeVN0YWtpbmdDb250cmFjdCIaaWR4RmFjdG9yeVNsaXBwYWdlQ29udHJhY3QiBXRvWDE4IgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igt0b1gxOEJpZ0ludCIHZnJvbVgxOCIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiB3RvU2NhbGUiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCIMc3dhcENvbnRyYWN0IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiCXRpbWVzdGFtcCIDcGF1Igt1c2VyQWRkcmVzcyIEdHhJZCIDZ2F1IgJhYSICcGEiBmtleUZlZSIKZmVlRGVmYXVsdCIDZmVlIgZrZXlLTHAiFWtleUtMcFJlZnJlc2hlZEhlaWdodCISa2V5S0xwUmVmcmVzaERlbGF5IhZrTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9rTHBSZWZyZXNoRGVsYXkiEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIg1rZXlQb29sQ29uZmlnIglpQW10QXNzZXQiC2lQcmljZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiE2tleUFsbFBvb2xzU2h1dGRvd24iDWtleVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIg5vcmRlclZhbGlkSW5mbyILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIGZm10RXJyIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiBWluRmVlIgFAIgZvdXRGZWUiEGlzR2xvYmFsU2h1dGRvd24iE2dldE1hdGNoZXJQdWJPckZhaWwiDWdldFBvb2xDb25maWciCGFtdEFzc2V0IgpwcmljZUFzc2V0IgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwODQ2OTg2MzUiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhBnZXRGYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiEHNsaXBwYWdlQ29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIiFXNsaXBwYWdlVG9sZXJhbmNlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIhJzbGlwYWdlQW10QXNzZXRBbXQiFHNsaXBhZ2VQcmljZUFzc2V0QW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiB2Fzc2V0SWQiD2NhbGNQcmljZUJpZ0ludCIIcHJBbXRYMTgiCGFtQW10WDE4IhRjYWxjUHJpY2VCaWdJbnRSb3VuZCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiB2NhbGNLTHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIQYW1vdW50QmFsYW5jZVgxOCIPcHJpY2VCYWxhbmNlWDE4Igp1cGRhdGVkS0xwIg5jYWxjQ3VycmVudEtMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50S0xwIhJyZWZyZXNoS0xwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRLTHAiBm9sZEtMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIxNTQxMjE3NTMiA2tMcCINJHQwMjIxOTMyMjI5MyINdW51c2VkQWN0aW9ucyIGa0xwTmV3Igxpc09yZGVyVmFsaWQiBGluZm8iCWNvbW1vbkdldCIBaSIDcG10IgZwbXRBbXQiCWNvbW1vblB1dCIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIGZXN0UHV0IgRlbWl0IgZhbW91bnQiB2VtaXRJbnYiDWVtaXRJbnZMZWdhY3kiByRtYXRjaDAiFWxlZ2FjeUZhY3RvcnlDb250cmFjdCIHdGFrZUZlZSIJZmVlQW1vdW50Ig9jYWxjUHV0T25lVG9rZW4iEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIgZpc0V2YWwiEGFtb3VudEJhbGFuY2VSYXciD3ByaWNlQmFsYW5jZVJhdyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDI1NDA2MjU2OTkiEGFtb3VudEJhbGFuY2VPbGQiD3ByaWNlQmFsYW5jZU9sZCINJHQwMjU3MDMyNTg1MiIUYW1vdW50QXNzZXRBbW91bnRSYXciE3ByaWNlQXNzZXRBbW91bnRSYXciDSR0MDI1OTg0MjYwNDgiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDI3NzI5Mjc4OTYiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiGG91dEluQW1vdW50QXNzZXREZWNpbWFscyIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDI5OTc0MzAwMzAiC3RvdGFsQW1vdW50Ig0kdDAzMDAzNDMwMjYwIgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiDWNsZWFuQW1vdW50SW4iCWlzUmV2ZXJzZSINZmVlUG9vbEFtb3VudCINJHQwMzE5NzczMjI4MiIIYXNzZXRPdXQiB2Fzc2V0SW4iEnBvb2xBc3NldEluQmFsYW5jZSITcG9vbEFzc2V0T3V0QmFsYW5jZSIJYW1vdW50T3V0IgRvbGRLIgRuZXdLIgZjaGVja0siDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCIIY2hlY2tNaW4iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iD3Nob3VsZEF1dG9TdGFrZSIEYW1JZCIEcHJJZCIMc2xpcHBhZ2VBSW52IgxzbGlwcGFnZVBJbnYiCmxwVHJhbnNmZXIiC3NscFN0YWtlSW52Ig0kdDAzNzE2NjM3NjI4IhFyZWZyZXNoS0xwQWN0aW9ucyIRaXNVcGRhdGVkS0xwVmFsaWQiC21heFNsaXBwYWdlIg0kdDAzODE5MDM4MjU1IgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDM5NDQzMzk1OTUiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwNDAxODE0MDM3OCINJHQwNDAzODE0MDQ4OSINJHQwNDA3OTU0MDk1MiINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwNDE4Mzc0MTk5MCIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDA0MjQ5MDQyNzM3IhBmZWVBbW91bnRGb3JDYWxjIg0kdDA0Mjc0MDQyODQ4Ig0kdDA0MzEwNTQzMjYxIg11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDA0NDE2NjQ0MzE3Ig0kdDA0NDgxMjQ1MDU5Ig0kdDA0NTA2MjQ1MTcwIglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA0NjExNjQ2MTk4IhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig0kdDA0NzE0NzQ3MjI4Ig1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiDSR0MDQ4MzU0NDg0MzUiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIg0kdDA0OTczMDQ5ODExIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNTA5OTg1MTA2MiIQa0xwVXBkYXRlQWN0aW9ucyIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiDSR0MDU5NzI0NTk3OTMiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaHMAAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUUBRgkAvAIDBQFFBQFkBQFGAQFIAgFJAUoJAKADAQkAvAIDBQFJCQC2AgEFAUoFAWQBAUsDAUkBSgFMCQCgAwEJAL0CBAUBSQkAtgIBBQFKBQFkBQFMAQFNAwFOAU8BUAkAawMFAU4FAU8FAVABAVEBAUkDCQBmAgAABQFJCQEBLQEFAUkFAUkBAVIBAUkDCQC/AgIFAWUFAUkJAL4CAQUBSQUBSQEBUwACECVzX19zd2FwQ29udHJhY3QBAVQAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFVAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVYAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVcAAhElcyVzX19wcmljZV9fbGFzdAEBWAIBWQFaCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBWQkAzAgCCQCkAwEFAVoFA25pbAUBagECYWECAmFiAmFjCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCYWICAl9fBQJhYwECYWQCAmFiAmFjCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCYWICAl9fBQJhYwECYWUAAg8lc19fYW1vdW50QXNzZXQBAmFmAAIOJXNfX3ByaWNlQXNzZXQAAmFnAgclc19fZmVlAAJhaAkAawMACgUBYgCQTgACYWkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWcFAmFoAAJhagkAuQkCCQDMCAICAiVzCQDMCAICA2tMcAUDbmlsBQFqAAJhawkAuQkCCQDMCAICAiVzCQDMCAICEmtMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFqAAJhbAkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hLTHBEZWxheQUDbmlsBQFqAAJhbQAeAAJhbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhbAUCYW0BAmFvAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFwAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhcQECYXIJAKwCAgkArAICAgglcyVzJXNfXwUCYXICIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJhcwICYXQCYXUJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmF0AgJfXwUCYXUCCF9fY29uZmlnAQJhdgECYXcJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYXcBAmF4AAIMJXNfX3NodXRkb3duAQJheQECYXoJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhegECYUEAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYUICFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhQwQCYUQCYUUCYUYCYUcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmFEAgIgKAUCYUUCASkCDSBzZW5kZXJWYWxpZD0JAKUDAQUCYUYCDiBtYXRjaGVyVmFsaWQ9CQClAwEFAmFHAQJhSAICYUkCYUoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhSQUCYUoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYUkJAMwIAgIBLgkAzAgCBQJhSgkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhSwICYUkCYUoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhSQUCYUoJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYUkJAMwIAgIBLgkAzAgCBQJhSgkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhTAECYU0JAAIBCQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYU0FA25pbAIBIAECYU4BAmFNCQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYU0FA25pbAIBIAACYU8JARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhSAIFBHRoaXMJAQFUAAACYVAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhSAIFAmFPBQJhQgACYVEKAAJhUgkA/AcEBQJhTwIQZ2V0SW5GZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFSAgNJbnQFAmFSCQACAQkArAICCQADAQUCYVICGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYVMKAAJhUgkA/AcEBQJhTwIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUgIDSW50BQJhUgkAAgEJAKwCAgkAAwEFAmFSAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBAmFUAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhTwkBAmF4AAcBAmFVAAkA2QQBCQECYUgCBQJhTwkBAmFwAAECYVYABAJhVwkBAmFIAgUEdGhpcwkBAmFlAAQCYVgJAQJhSAIFBHRoaXMJAQJhZgAEAmF1CQECYUsCBQJhTwkBAmF2AQUCYVgEAmF0CQECYUsCBQJhTwkBAmF2AQUCYVcJALUJAgkBAmFIAgUCYU8JAQJhcwIJAKQDAQUCYXQJAKQDAQUCYXUFAWoBAmFZAQJhWgMJAAACBQJhWgUBaQUEdW5pdAkA2QQBBQJhWgECYmEBAmFaAwkAAAIFAmFaBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmFaAQJiYgECYmMJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJiYwUBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQFwCQDZBAEJAJEDAgUCYmMFAXEJAQJhWQEJAJEDAgUCYmMFAXIJAQJhWQEJAJEDAgUCYmMFAXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYwUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJjBQF1AAJiZAkBAmJiAQkBAmFWAAACYmUFAmJkAAJiZggFAmJlAl8xAAJiZwgFAmJlAl8yAAJiaAgFAmJlAl8zAAJiaQgFAmJlAl80AAJiaggFAmJlAl81AAJiawgFAmJlAl82AAJibAgFAmJlAl83AQJibQAJALUJAgkBAmFIAgUCYU8JAQJhbwAFAWoAAmJuCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYm0ABQFCAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAAJibwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJtAAUBQwIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwECYnAKAmJxAmJyAmJzAmJ0AmJ1AmJ2AmJ3AmJ4AmJ5AmJ6CQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyCQDMCAIJAKQDAQUCYnMJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkJAMwIAgkApAMBBQJiegUDbmlsBQFqAQJiQQYCYkICYkMCYkQCYnQCYncCYngJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiQgkAzAgCCQCkAwEFAmJDCQDMCAIJAKQDAQUCYkQJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ3CQDMCAIJAKQDAQUCYngFA25pbAUBagECYkUBAmJGAwkAAAIFAmJGAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiRgECYkcCAmJIAmJJCQC8AgMFAmJIBQFkBQJiSQECYkoDAmJIAmJJAUwJAL0CBAUCYkgFAWQFAmJJBQFMAQJiSwQCYkwCYk0CYk4CYk8EAmJQCQEBRAIFAmJOBQJiTAQCYlEJAQFEAgUCYk8FAmJNCQECYkcCBQJiUQUCYlABAmJSAwJiTgJiTwJiUwQCYlQJAQJhVgAEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXQEAmJWCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlQFAXUEAmJXCQECYksEBQJiVQUCYlYFAmJOBQJiTwQCYkkJAQFEAgUCYk4FAmJVBAJiSAkBAUQCBQJiTwUCYlYEAmJYCQEBRAIFAmJTBQFiBAJiWQkBAmJHAgUCYkkFAmJYBAJiWgkBAmJHAgUCYkgFAmJYCQDMCAIFAmJXCQDMCAIFAmJZCQDMCAIFAmJaBQNuaWwBAmNhAwJiTgJiTwJiUwQCY2IJAQJiUgMFAmJOBQJiTwUCYlMJAMwIAgkBAUgCCQCRAwIFAmNiAAAFAWIJAMwIAgkBAUgCCQCRAwIFAmNiAAEFAWIJAMwIAgkBAUgCCQCRAwIFAmNiAAIFAWIFA25pbAECY2MEAmNkAmNlAmNmAmFiBAJiVAkBAmFWAAQCY2cJAJEDAgUCYlQFAXEEAmNoCQCRAwIFAmJUBQFyBAJjaQkAkQMCBQJiVAUBcwQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCY2oJAJEDAgUCYlQFAXAEAmNrCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY2cJAKwCAgkArAICAgZBc3NldCAFAmNnAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmNnBQJjZQkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCY2wJAQJiRQEFAmNoBAJjbQkBAUQCBQJjbAUCYkwEAmNuCQECYkUBBQJjaQQCY28JAQFEAgUCY24FAmJNBAJjcAkBAmJHAgUCY28FAmNtBAJjcQkBAUgCBQJjcAUBYgQCY3IJAQFEAgUCY2YFAWIEAmNzCQEBRAIFAmNrBQFiBAJjdAkAvAIDBQJjbQUCY3IFAmNzBAJjdQkAvAIDBQJjbwUCY3IFAmNzBAJjdgkBAUsDBQJjdAUCYkwFBUZMT09SBAJjdwkBAUsDBQJjdQUCYk0FBUZMT09SBAJjeAMJAAACBQJjZAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmN2AwkAAAIFAmNoAgVXQVZFUwUEdW5pdAkA2QQBBQJjaAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCY3cDCQAAAgUCY2kCBVdBVkVTBQR1bml0CQDZBAEFAmNpCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQUCYWIFAmNkCQECYkEGBQJjdgUCY3cFAmNmBQJjcQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJjcQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjcQUDbmlsCQCcCgoFAmN2BQJjdwUCY2gFAmNpBQJjbAUCY24FAmNrBQJjcAUCY2oFAmN4AQJjeQkCY2QCY3oCY0ECY0ICY0MCY0QCYWICY0UCY0YEAmJUCQECYVYABAJjZwkA2QQBCQCRAwIFAmJUBQFxBAJjRwkAkQMCBQJiVAUBcgQCY0gJAJEDAgUCYlQFAXMEAmNJCQCRAwIFAmJUBQF2BAJjSgkAkQMCBQJiVAUBdwQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCY2oJAJEDAgUCYlQFAXAEAmNrCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNnCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNnAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCY0sJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY0IJANkEAQIFV0FWRVMEAmNMCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNECQDZBAECBVdBVkVTAwMJAQIhPQIFAmNHBQJjSwYJAQIhPQIFAmNIBQJjTAkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmNsAwUCY0UJAQJiRQEFAmNHCQBlAgkBAmJFAQUCY0cFAmNBBAJjbgMFAmNFCQECYkUBBQJjSAkAZQIJAQJiRQEFAmNIBQJjQwQCY00JAQFEAgUCY0EFAmJVBAJjTgkBAUQCBQJjQwUCYlYEAmNPCQECYkcCBQJjTgUCY00EAmNtCQEBRAIFAmNsBQJiVQQCY28JAQFEAgUCY24FAmJWBAJjUAMJAAACBQJjawAABAJjcAUBZQQCY1EFAWUEAmJYCQB2BgkAuQICBQJjTQUCY04AAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFIAgUCYlgFAWIJAQFIAgUCY00FAmJVCQEBSAIFAmNOBQJiVgkBAmJHAgkAtwICBQJjbwUCY04JALcCAgUCY20FAmNNBQJjUQQCY3AJAQJiRwIFAmNvBQJjbQQCY1EJALwCAwkBAVIBCQC4AgIFAmNwBQJjTwUBZAUCY3AEAmNSCQEBRAIFAmN6BQFiAwMJAQIhPQIFAmNwBQFlCQC/AgIFAmNRBQJjUgcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY1ECHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJjUgQCY3MJAQFEAgUCY2sFAWIEAmNTCQC9AgQFAmNNCQECYkoDBQJjbwUCY20FB0NFSUxJTkcFAWQFB0NFSUxJTkcEAmNUCQC9AgQFAmNOBQFkCQECYkoDBQJjbwUCY20FBUZMT09SBQdDRUlMSU5HBAJjVQMJAL8CAgUCY1MFAmNOCQCUCgIFAmNUBQJjTgkAlAoCBQJjTQUCY1MEAmNWCAUCY1UCXzEEAmNXCAUCY1UCXzIEAmJYCQC9AgQFAmNzBQJjVwUCY28FBUZMT09SCQCXCgUJAQFLAwUCYlgFAWIFBUZMT09SCQEBSwMFAmNWBQJiVQUHQ0VJTElORwkBAUsDBQJjVwUCYlYFB0NFSUxJTkcFAmNwBQJjUQQCY1gIBQJjUAJfMQQCY1kIBQJjUAJfMgQCY1oIBQJjUAJfMwQCY3EJAQFIAggFAmNQAl80BQFiBAJkYQkBAUgCCAUCY1ACXzUFAWIDCQBnAgAABQJjWAkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCZGIDCQEBIQEFAmNGAAAFAmNYBAJkYwkAZQIFAmNBBQJjWQQCZGQJAGUCBQJjQwUCY1oEAmRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmNxCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmFiBQJjZAkBAmJwCgUCY1kFAmNaBQJkYgUCY3EFAmN6BQJkYQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZGMFAmRkBQNuaWwJAJ8KDQUCY1gFAmRiBQJjcQUCY2wFAmNuBQJjawUCY2cFAmNqBQJkZQUCZGMFAmRkBQJjQgUCY0QBAmRmAwJkZwJkaAJjawQCZGkJAQFHAgUCZGcJALYCAQUCYmsEAmRqCQEBRwIFAmRoCQC2AgEFAmJsBAJkawkAvAIDCQB2BgkAuQICBQJkaQUCZGoAAAkAtgIBAAUAAQASBQRET1dOBQFnBQJjawMJAAACBQJjawUBZgUBZgUCZGsBAmRsAwJkbQJkbgJkbwQCZHAJALgCAgkAtgIBCQECYkUBCQECYmEBBQJiaQUCZG0EAmRxCQC4AgIJALYCAQkBAmJFAQkBAmJhAQUCYmoFAmRuBAJkcgkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJoCHF1YW50aXR5BQJkbwQCZHMJAQJkZgMFAmRwBQJkcQUCZHIFAmRzAQJkdAMCZHUCZHYCZG8EAmRwCQBkAgkBAmJFAQkBAmJhAQUCYmkFAmR1BAJkcQkAZAIJAQJiRQEJAQJiYQEFAmJqBQJkdgQCZHIJAGQCCAkBBXZhbHVlAQkA7AcBBQJiaAhxdWFudGl0eQUCZG8EAmRrCQECZGYDCQC2AgEFAmRwCQC2AgEFAmRxCQC2AgEFAmRyBAJkdwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWsFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhagkApgMBBQJkawUDbmlsCQCUCgIFAmR3BQJkawECZHgCAmR5AmRrAwkAwAICBQJkawUCZHkGCQECYUwBCQC5CQIJAMwIAgIidXBkYXRlZCBLTHAgbG93ZXIgdGhhbiBjdXJyZW50IEtMcAkAzAgCCQCmAwEFAmR5CQDMCAIJAKYDAQUCZGsFA25pbAIBIAECZHoBAmRBBAJkcAkBAmJFAQkBAmJhAQUCYmkEAmRxCQECYkUBCQECYmEBBQJiagQCZEIIBQJkQQZhbW91bnQEAmRDCQBuBAgFAmRBBmFtb3VudAgFAmRBBXByaWNlBQFiBQVGTE9PUgQCZEQDCQAAAggFAmRBCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmRCCQEBLQEFAmRDCQCUCgIJAQEtAQUCZEIFAmRDBAJkdQgFAmREAl8xBAJkdggFAmREAl8yAwMDCQECYVQABgkAAAIFAmJnBQFtBgkAAAIFAmJnBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAMDCQECIT0CCAgFAmRBCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYmkGCQECIT0CCAgFAmRBCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJiagkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmRFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhagIBMAkBAmFOAQILaW52YWxpZCBrTHAEAmRGCQECZHQDBQJkdQUCZHYAAAQCZEcIBQJkRgJfMQQCZEgIBQJkRgJfMgQCZEkJAMACAgUCZEgFAmRFBAJkSgkAuQkCCQDMCAICBGtMcD0JAMwIAgkApgMBBQJkRQkAzAgCAggga0xwTmV3PQkAzAgCCQCmAwEFAmRICQDMCAICFCBhbW91bnRBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZHAJAMwIAgITIHByaWNlQXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmRxCQDMCAICGSBhbW91bnRBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJkdQkAzAgCAhggcHJpY2VBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJkdgkAzAgCAgggaGVpZ2h0PQkAzAgCCQCkAwEFBmhlaWdodAUDbmlsAgAJAJQKAgUCZEkFAmRKAQJkSwECZEwDCQECIT0CCQCQAwEIBQJkTAhwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmRNCQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwAABAJjZQkBBXZhbHVlAQgFAmRNB2Fzc2V0SWQEAmROCAUCZE0GYW1vdW50BAJjUAkBAmNjBAkA2AQBCAUCZEwNdHJhbnNhY3Rpb25JZAkA2AQBBQJjZQUCZE4IBQJkTAZjYWxsZXIEAmN2CAUCY1ACXzEEAmN3CAUCY1ACXzIEAmNqCQENcGFyc2VJbnRWYWx1ZQEIBQJjUAJfOQQCY3gIBQJjUANfMTADAwkBAmFUAAYJAAACBQJjagUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2oJAJcKBQUCY3YFAmN3BQJkTgUCY2UFAmN4AQJkTwMCZEwCY3oCY0YDCQECIT0CCQCQAwEIBQJkTAhwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZFAJAQV2YWx1ZQEJAJEDAggFAmRMCHBheW1lbnRzAAAEAmRRCQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwABBAJkUgkBAmN5CQkA2AQBCAUCZEwNdHJhbnNhY3Rpb25JZAUCY3oIBQJkUAZhbW91bnQIBQJkUAdhc3NldElkCAUCZFEGYW1vdW50CAUCZFEHYXNzZXRJZAkApQgBCAUCZEwGY2FsbGVyBwUCY0YEAmNqCQENcGFyc2VJbnRWYWx1ZQEIBQJkUgJfOAMDAwkBAmFUAAYJAAACBQJjagUBbAYJAAACBQJjagUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2oFAmRSAQJkUwECZFQEAmRVCQD8BwQFAmFPAgRlbWl0CQDMCAIFAmRUBQNuaWwFA25pbAMJAAACBQJkVQUCZFUEAmRWBAJkVwUCZFUDCQABAgUCZFcCB0FkZHJlc3MEAmRYBQJkVwkA/AcEBQJkWAIEZW1pdAkAzAgCBQJkVAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZFYFAmRWBQJkVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZFkCAmRUAmFpBAJkWgMJAAACBQJhaQAAAAAJAGsDBQJkVAUCYWkFAWIJAJQKAgkAZQIFAmRUBQJkWgUCZFoBAmVhBAJlYgJlYwJhYgJhYwQCZWQJAAACBQJhYwUEdW5pdAQCZWUJAQJiRQEJAQJiYQEFAmJpBAJlZgkBAmJFAQkBAmJhAQUCYmoEAmVnAwkAAAIFAmVjBQJiaQYDCQAAAgUCZWMFAmJqBwkBAmFMAQINaW52YWxpZCBhc3NldAQCZWgDBQJlZAkAlAoCBQJlZQUCZWYDBQJlZwkAlAoCCQBlAgUCZWUFAmViBQJlZgkAlAoCBQJlZQkAZQIFAmVmBQJlYgQCZWkIBQJlaAJfMQQCZWoIBQJlaAJfMgQCZWsDBQJlZwkAlAoCBQJlYgAACQCUCgIAAAUCZWIEAmVsCAUCZWsCXzEEAmVtCAUCZWsCXzIEAmRCCAkBAmRZAgUCZWwFAmFRAl8xBAJkQwgJAQJkWQIFAmVtBQJhUQJfMQQCZW4JAQJkWQIFAmViBQJhUQQCZW8IBQJlbgJfMQQCZFoIBQJlbgJfMgQCZXAJAGQCBQJlaQUCZEIEAmVxCQBkAgUCZWoFAmRDBAJlcgkBAmJHAgkBAUQCBQJlcQUCYmwJAQFEAgUCZXAFAmJrBAJlcwkBAUgCBQJlcgUBYgQCZXQDBQJlZwUCZWkFAmVqBAJldQkAtgIBBQJldAQCZXYJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiaAkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJiaAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmV3AwkAvwICBQJldgUBZgYJAQJhTAECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZXcFAmV3BAJleAkAtgIBBQJlbwQCZXkJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZXYJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJleAUBZAUCZXUAEgASBQRET1dOBQFkBQFkBQNuaWwEAmRlAwUCZWQFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlcwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECCQClCAEJAQV2YWx1ZQEFAmFiCQDYBAEJAQV2YWx1ZQEFAmFjCQECYnAKBQJlbAUCZW0FAmV5BQJlcwAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmV6CQECYkcCCQEBRAIFAmVqBQJibAkBAUQCBQJlaQUCYmsEAmVBCQEBSAIFAmV6BQFiBAJlQgQCZUMDBQJlZwkAlAoCBQJlbAUCZWkJAJQKAgUCZW0FAmVqBAJkVAgFAmVDAl8xBAJlRAgFAmVDAl8yBAJlRQkAoAMBCQC8AgMFAmV2CQC2AgEJAGkCBQJkVAACCQC2AgEFAmVECQBrAwkAZQIFAmV5BQJlRQUBYgUCZUUJAJcKBQUCZXkFAmRlBQJkWgUCZUIFAmVnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlRgUCZUcCZW8CZWMCYWICYWMEAmVkCQAAAgUCYWMFBHVuaXQEAmJUCQECYVYABAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJlSAkAzAgCAwkAAAIFAmVjBQJiaAYJAQJhTAECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQJlSAUCZUgEAmVJAwkAAAIFAmVHBQJiaQYDCQAAAgUCZUcFAmJqBwkBAmFMAQINaW52YWxpZCBhc3NldAQCZUoDBQJlSQkAtgIBCQECYkUBCQECYmEBBQJiaQkAtgIBCQECYkUBCQECYmEBBQJiagQCZUsDBQJlSQUCYlUFAmJWBAJlTAkBAmJFAQkBAmJhAQUCYmkEAmVNCQECYkUBCQECYmEBBQJiagQCZU4DBQJlSQUCZUwFAmVNBAJlTwkAtgIBBQJlTgQCZXYJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiaAkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJiaAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVQCQC2AgEFAmVvBAJlUQkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlSgkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZVAFAWQFAmV2ABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmVSCQECZFkCBQJlUQUCYVMEAmVTCAUCZVICXzEEAmRaCAUCZVICXzIEAmVUAwUCZUkJAJYKBAUCZVMAAAkAZQIFAmVMBQJlUQUCZU0JAJYKBAAABQJlUwUCZUwJAGUCBQJlTQUCZVEEAmVVCAUCZVQCXzEEAmVWCAUCZVQCXzIEAmVXCAUCZVQCXzMEAmVYCAUCZVQCXzQEAmVyCQECYkcCCQEBRAIFAmVYBQJibAkBAUQCBQJlVwUCYmsEAmVzCQEBSAIFAmVyBQFiBAJkZQMFAmVkBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJBBgUCZVUFAmVWBQJlbwUCZXMFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXMFA25pbAQCZXoJAQJiRwIJAQFEAgUCZU0FAmJsCQEBRAIFAmVMBQJiawQCZUEJAQFIAgUCZXoFAWIEAmVCBAJlWQkAaAIJAKADAQkAvAIDBQJlSgUCZVAFAmV2AAIJAGsDCQBlAgUCZVMFAmVZBQFiBQJlWQkAlwoFBQJlUwUCZGUFAmRaBQJlQgUCZUkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVaAAQCZFcJAKIIAQkBAVUAAwkAAQIFAmRXAgZTdHJpbmcEAmZhBQJkVwkA2QQBBQJmYQMJAAECBQJkVwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJmYgAEAmRXCQCiCAEJAQFWAAMJAAECBQJkVwIGU3RyaW5nBAJmYQUCZFcJANkEAQUCZmEDCQABAgUCZFcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZmMBAmRMBAJkVwkBAmVaAAMJAAECBQJkVwIKQnl0ZVZlY3RvcgQCZmQFAmRXCQAAAggFAmRMD2NhbGxlclB1YmxpY0tleQUCZmQDCQABAgUCZFcCBFVuaXQJAAACCAUCZEwGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmZlAQJkTAQCZmYJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCZFcJAQJlWgADCQABAgUCZFcCCkJ5dGVWZWN0b3IEAmZkBQJkVwMJAAACCAUCZEwPY2FsbGVyUHVibGljS2V5BQJmZAYFAmZmAwkAAQIFAmRXAgRVbml0AwkAAAIIBQJkTAZjYWxsZXIFBHRoaXMGBQJmZgkAAgECC01hdGNoIGVycm9yHQJkTAEhY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcFJFQURPTkxZAwJmZwJmaAJmaQQCZmoDCQAAAgUCZmgHBAJmawkBAmFIAgUEdGhpcwkBAmFmAAQCZmwJAQJhSAIFBHRoaXMJAQJhZQAJAJQKAgUCZmsFAmZsBAJmawkBAmFIAgUEdGhpcwkBAmFlAAQCZmwJAQJhSAIFBHRoaXMJAQJhZgAJAJQKAgUCZmsFAmZsBAJmawgFAmZqAl8xBAJmbAgFAmZqAl8yBAJmbQkBAmJFAQUCZmwEAmZuCQECYkUBBQJmawQCZm8JAGsDBQJmbgUCZmcJAGQCBQJmbQUCZmcEAmZwCQC5AgIJALYCAQUCZm0JALYCAQUCZm4EAmZxCQC5AgIJALcCAgkAtwICCQC2AgEJAQJiRQEFAmZsCQC2AgEFAmZnCQC2AgEFAmZpCQC4AgIJALYCAQkBAmJFAQUCZmsJALYCAQUCZm8EAmZyAwkAwAICBQJmcQUCZnAGCQACAQIUbmV3IEsgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZnIFAmZyCQCUCgIFA25pbAUCZm8JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBQJmZwJmaAJmcwJmdAJmaQQCZnUKAAJhUgkA/AcEBQJhTwIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmFSAgZTdHJpbmcFAmFSCQACAQkArAICCQADAQUCYVICGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZUgJAMwIAgMJAGcCCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAZhbW91bnQFAmZnBgkBAmFMAQIMV3JvbmcgYW1vdW50CQDMCAIDCQAAAggFAmRMBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZnUGCQECYUwBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmVIBQJlSAQCZE0JAQV2YWx1ZQEJAJEDAggFAmRMCHBheW1lbnRzAAAEAmZsCQECYmEBCAUCZE0HYXNzZXRJZAQCZmsDCQAAAgUCZmgHCQECYUgCBQR0aGlzCQECYWYACQECYUgCBQR0aGlzCQECYWUABAJmbQkAZQIJAQJiRQEFAmZsCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAZhbW91bnQEAmZuCQECYkUBBQJmawQCZm8JAGsDBQJmbgUCZmcJAGQCBQJmbQUCZmcEAmZwCQC5AgIJALYCAQUCZm0JALYCAQUCZm4EAmZxCQC5AgIJALcCAgkAtgIBCQECYkUBBQJmbAkAtgIBBQJmaQkAuAICCQC2AgEJAQJiRQEFAmZrCQC2AgEFAmZvBAJmcgMJAMACAgUCZnEFAmZwBgkAAgECFG5ldyBLIGlzIGZld2VyIGVycm9yAwkAAAIFAmZyBQJmcgQCZnYDCQBnAgUCZm8FAmZzBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmZ2BQJmdgkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmZ0BQJmbwkBAmFZAQUCZmsFA25pbAUCZm8JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBCnNldE1hbmFnZXIBAmZ3BAJmeAkBAmZlAQUCZEwDCQAAAgUCZngFAmZ4BAJmeQkA2QQBBQJmdwMJAAACBQJmeQUCZnkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVYABQJmdwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQ5jb25maXJtTWFuYWdlcgAEAmZ6CQECZmIABAJmQQMJAQlpc0RlZmluZWQBBQJmegYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZkEFAmZBBAJmQgMJAAACCAUCZEwPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJmegYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZkIFAmZCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAAkA2AQBCQEFdmFsdWUBBQJmegkAzAgCCQELRGVsZXRlRW50cnkBCQEBVgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEDcHV0AgJjegJmQwMJAGYCAAAFAmN6CQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRSCQECZE8DBQJkTAUCY3oGBAJkYggFAmRSAl8yBAJjZwgFAmRSAl83BAJjeAgFAmRSAl85BAJkYwgFAmRSA18xMAQCZGQIBQJkUgNfMTEEAmZECAUCZFIDXzEyBAJmRQgFAmRSA18xMwQCZFAJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRMCHBheW1lbnRzAAAGYW1vdW50BAJkUQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAQZhbW91bnQEAmRzCQECZGwDBQJkUAUCZFEJALYCAQAAAwkAAAIFAmRzBQJkcwQCZFUJAPwHBAUCYU8CBGVtaXQJAMwIAgUCZGIFA25pbAUDbmlsAwkAAAIFAmRVBQJkVQQCZFYEAmRXBQJkVQMJAAECBQJkVwIHQWRkcmVzcwQCZFgFAmRXCQD8BwQFAmRYAgRlbWl0CQDMCAIFAmRiBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkVgUCZFYEAmZGAwkAZgIFAmRjAAAJAPwHBAUCYm8CA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmRAUCZGMFA25pbAUDbmlsAwkAAAIFAmZGBQJmRgQCZkcDCQBmAgUCZGQAAAkA/AcEBQJibwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZFBQJkZAUDbmlsBQNuaWwDCQAAAgUCZkcFAmZHBAJmSAMFAmZDBAJmSQkA/AcEBQJibgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2cFAmRiBQNuaWwDCQAAAgUCZkkFAmZJBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRMBmNhbGxlcgUCZGIFAmNnBQNuaWwEAmZKCQECZHQDAAAAAAAAAwkAAAIFAmZKBQJmSgQCZGsIBQJmSgJfMgQCZksIBQJmSgJfMQQCZkwJAQJkeAIFAmRzBQJkawMJAAACBQJmTAUCZkwJAM4IAgkAzggCBQJjeAUCZkgFAmZLCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQpwdXRGb3JGcmVlAQJmTQMJAGYCAAAFAmZNCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRSCQECZE8DBQJkTAUCZk0HBAJjeAgFAmRSAl85BAJkUAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEwIcGF5bWVudHMAAAZhbW91bnQEAmRRCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkTAhwYXltZW50cwABBmFtb3VudAQCZHMJAQJkbAMFAmRQBQJkUQkAtgIBAAADCQAAAgUCZHMFAmRzBAJmTgkBAmR0AwAAAAAAAAQCZksIBQJmTgJfMQQCZGsIBQJmTgJfMgQCZkwJAQJkeAIFAmRzBQJkawMJAAACBQJmTAUCZkwJAM4IAgUCY3gFAmZLCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQlwdXRPbmVUa24CAmZPAmZQBAJmUQoAAmFSCQD8BwQFAmFPAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICB0Jvb2xlYW4FAmFSCQACAQkArAICCQADAQUCYVICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZSAwMDCQECYVQABgkAAAIFAmJnBQFsBgkAAAIFAmJnBQFuBgUCZlEEAmVICQDMCAIDAwkBASEBBQJmUgYJAQJmYwEFAmRMBgkBAmFMAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEwIcGF5bWVudHMAAQYJAQJhTAECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVIBQJlSAQCZlMJAJEDAggFAmRMCHBheW1lbnRzAAAEAmVjCAUCZlMHYXNzZXRJZAQCZWIIBQJmUwZhbW91bnQEAmRzAwkAAAIFAmVjBQJiaQkBAmRsAwkAtgIBBQJlYgkAtgIBAAAJALYCAQAAAwkAAAIFAmVjBQJiagkBAmRsAwkAtgIBAAAJALYCAQUCZWIJALYCAQAACQECYUwBAh5wYXltZW50IGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgUCZHMFAmRzBAJhYggFAmRMBmNhbGxlcgQCYWMIBQJkTA10cmFuc2FjdGlvbklkBAJmVAkBAmVhBAUCZWIFAmVjBQJhYgUCYWMDCQAAAgUCZlQFAmZUBAJlZwgFAmZUAl81BAJmVQgFAmZUAl80BAJkWggFAmZUAl8zBAJkZQgFAmZUAl8yBAJmVggFAmZUAl8xBAJmVwMDCQBmAgUCZk8AAAkAZgIFAmZPBQJmVgcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk8FA25pbAIABQJmVgQCZFUJAQJkUwEFAmZXAwkAAAIFAmRVBQJkVQQCZkgDBQJmUAQCZlgJAPwHBAUCYm4CBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJoBQJmVwUDbmlsAwkAAAIFAmZYBQJmWAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkTAZjYWxsZXIFAmZXBQJiaAUDbmlsBAJmWQMJAGYCBQJkWgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFQBQJkWgUCZWMFA25pbAUDbmlsBAJmWgMJAAACBQR0aGlzBQJhUAkAlAoCAAAAAAMFAmVnCQCUCgIJAQEtAQUCZFoAAAkAlAoCAAAJAQEtAQUCZFoEAmR1CAUCZloCXzEEAmR2CAUCZloCXzIEAmdhCQECZHQDBQJkdQUCZHYAAAQCZksIBQJnYQJfMQQCZGsIBQJnYQJfMgQCZEUJAQV2YWx1ZQEJAKIIAQUCYWoEAmZMCQECZHgCBQJkcwUCZGsDCQAAAgUCZkwFAmZMCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRlBQJmSAUCZlkFAmZLBQJmVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAERcHV0T25lVGtuUkVBRE9OTFkCAmVjAmViBAJnYgkBAmVhBAUCZWIJAQJhWQEFAmVjBQR1bml0BQR1bml0BAJmVggFAmdiAl8xBAJkZQgFAmdiAl8yBAJkWggFAmdiAl8zBAJmVQgFAmdiAl80BAJlZwgFAmdiAl81CQCUCgIFA25pbAkAlQoDBQJmVgUCZFoFAmZVAmRMAQlnZXRPbmVUa24CAmdjAmZPBAJmUQoAAmFSCQD8BwQFAmFPAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVICB0Jvb2xlYW4FAmFSCQACAQkArAICCQADAQUCYVICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdkAwMJAQJhVAAGCQAAAgUCYmcFAW4GBQJmUQQCZUgJAMwIAgMDCQEBIQEFAmdkBgkBAmZjAQUCZEwGCQECYUwBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkTAhwYXltZW50cwABBgkBAmFMAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUgFAmVIBAJlRwkBAmFZAQUCZ2MEAmZTCQCRAwIIBQJkTAhwYXltZW50cwAABAJlYwgFAmZTB2Fzc2V0SWQEAmVvCAUCZlMGYW1vdW50BAJkcwkBAmRsAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcwUCZHMEAmFiCAUCZEwGY2FsbGVyBAJhYwgFAmRMDXRyYW5zYWN0aW9uSWQEAmdlCQECZUYFBQJlRwUCZW8FAmVjBQJhYgUCYWMDCQAAAgUCZ2UFAmdlBAJlSQgFAmdlAl81BAJmVQgFAmdlAl80BAJkWggFAmdlAl8zBAJkZQgFAmdlAl8yBAJnZggFAmdlAl8xBAJkVAMDCQBmAgUCZk8AAAkAZgIFAmZPBQJnZgcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk8FA25pbAIABQJnZgQCZ2cJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZW8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZWMFAmVvBQNuaWwDCQAAAgUCZ2cFAmdnBAJnaAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZFQFAmVHBQNuaWwEAmZZAwkAZgIFAmRaAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVAFAmRaBQJlRwUDbmlsBQNuaWwEAmdpBAJnagMJAAACBQR0aGlzBQJhUAAABQJkWgMFAmVJCQCUCgIJAQEtAQkAZAIFAmRUBQJnagAACQCUCgIAAAkBAS0BCQBkAgUCZFQFAmdqBAJkdQgFAmdpAl8xBAJkdggFAmdpAl8yBAJnawkBAmR0AwUCZHUFAmR2AAAEAmZLCAUCZ2sCXzEEAmRrCAUCZ2sCXzIEAmZMCQECZHgCBQJkcwUCZGsDCQAAAgUCZkwFAmZMCQCUCgIJAM4IAgkAzggCCQDOCAIFAmRlBQJnaAUCZlkFAmZLBQJkVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAERZ2V0T25lVGtuUkVBRE9OTFkCAmVHAmVvBAJnbAkBAmVGBQkBAmFZAQUCZUcFAmVvBQJiaAUEdW5pdAUEdW5pdAQCZ2YIBQJnbAJfMQQCZGUIBQJnbAJfMgQCZFoIBQJnbAJfMwQCZlUIBQJnbAJfNAQCZUkIBQJnbAJfNQkAlAoCBQNuaWwJAJUKAwUCZ2YFAmRaBQJmVQJkTAETdW5zdGFrZUFuZEdldE9uZVRrbgMCZ20CZ2MCZk8EAmZRCgACYVIJAPwHBAUCYU8CKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUgIHQm9vbGVhbgUCYVIJAAIBCQCsAgIJAAMBBQJhUgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ2QDAwkBAmFUAAYJAAACBQJiZwUBbgYFAmZRBAJlSAkAzAgCAwMJAQEhAQUCZ2QGCQECZmMBBQJkTAYJAQJhTAECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRMCHBheW1lbnRzAAAGCQECYUwBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlSAUCZUgEAmVHCQECYVkBBQJnYwQCYWIIBQJkTAZjYWxsZXIEAmFjCAUCZEwNdHJhbnNhY3Rpb25JZAQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJnbgkA/AcEBQJibgIHdW5zdGFrZQkAzAgCCQDYBAEFAmJoCQDMCAIFAmdtBQNuaWwFA25pbAMJAAACBQJnbgUCZ24EAmdvCQECZUYFBQJlRwUCZ20FAmJoBQJhYgUCYWMDCQAAAgUCZ28FAmdvBAJlSQgFAmdvAl81BAJmVQgFAmdvAl80BAJkWggFAmdvAl8zBAJkZQgFAmdvAl8yBAJnZggFAmdvAl8xBAJkVAMDCQBmAgUCZk8AAAkAZgIFAmZPBQJnZgcJAQJhTAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk8FA25pbAIABQJnZgQCZ2cJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZ20FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmgFAmdtBQNuaWwDCQAAAgUCZ2cFAmdnBAJnaAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEwGY2FsbGVyBQJkVAUCZUcFA25pbAQCZlkDCQBmAgUCZFoAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhUAUCZFoFAmVHBQNuaWwFA25pbAQCZ3AEAmdqAwkAAAIFBHRoaXMFAmFQAAAFAmRaAwUCZUkJAJQKAgkBAS0BCQBkAgUCZFQFAmdqAAAJAJQKAgAACQEBLQEJAGQCBQJkVAUCZ2oEAmR1CAUCZ3ACXzEEAmR2CAUCZ3ACXzIEAmdxCQECZHQDBQJkdQUCZHYAAAQCZksIBQJncQJfMQQCZGsIBQJncQJfMgQCZkwJAQJkeAIFAmRzBQJkawMJAAACBQJmTAUCZkwJAJQKAgkAzggCCQDOCAIJAM4IAgUCZGUFAmdoBQJmWQUCZksFAmRUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMAQNnZXQABAJjUAkBAmRLAQUCZEwEAmdyCAUCY1ACXzEEAmN3CAUCY1ACXzIEAmROCAUCY1ACXzMEAmNlCAUCY1ACXzQEAmN4CAUCY1ACXzUEAmRzCQECZGwDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRzBQJkcwQCZ3MJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZE4FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2UFAmROBQNuaWwDCQAAAgUCZ3MFAmdzBAJndAkBAmR0AwkBAS0BBQJncgkBAS0BBQJjdwAABAJmSwgFAmd0Al8xBAJkawgFAmd0Al8yBAJmTAkBAmR4AgUCZHMFAmRrAwkAAAIFAmZMBQJmTAkAzggCBQJjeAUCZksJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBCWdldE5vTGVzcwICZ3UCZ3YEAmNQCQECZEsBBQJkTAQCY3YIBQJjUAJfMQQCY3cIBQJjUAJfMgQCZE4IBQJjUAJfMwQCY2UIBQJjUAJfNAQCY3gIBQJjUAJfNQMJAGYCBQJndQUCY3YJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmN2AgMgPCAJAKQDAQUCZ3UDCQBmAgUCZ3YFAmN3CQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCY3cCAyA8IAkApAMBBQJndgQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJncwkA/AcEBQJhTwIEYnVybgkAzAgCBQJkTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjZQUCZE4FA25pbAMJAAACBQJncwUCZ3MEAmd3CQECZHQDCQEBLQEFAmN2CQEBLQEFAmN3AAAEAmZLCAUCZ3cCXzEEAmRrCAUCZ3cCXzIEAmZMCQECZHgCBQJkcwUCZGsDCQAAAgUCZkwFAmZMCQDOCAIFAmN4BQJmSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAENdW5zdGFrZUFuZEdldAECZFQEAmd4AwkBAiE9AgkAkAMBCAUCZEwIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCZ3gFAmd4BAJiVAkBAmFWAAQCY2cJANkEAQkAkQMCBQJiVAUBcQQCZHMJAQJkbAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHMFAmRzBAJnbgkA/AcEBQJibgIHdW5zdGFrZQkAzAgCCQDYBAEFAmNnCQDMCAIFAmRUBQNuaWwFA25pbAMJAAACBQJnbgUCZ24EAmNQCQECY2MECQDYBAEIBQJkTA10cmFuc2FjdGlvbklkCQDYBAEFAmNnBQJkVAgFAmRMBmNhbGxlcgQCY3YIBQJjUAJfMQQCY3cIBQJjUAJfMgQCY2oJAQ1wYXJzZUludFZhbHVlAQgFAmNQAl85BAJjeAgFAmNQA18xMAQCZ3kDAwkBAmFUAAYJAAACBQJjagUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2oGAwkAAAIFAmd5BQJneQQCZ3MJAPwHBAUCYU8CBGJ1cm4JAMwIAgUCZFQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2cFAmRUBQNuaWwDCQAAAgUCZ3MFAmdzBAJnegkBAmR0AwkBAS0BBQJjdgkBAS0BBQJjdwAABAJmSwgFAmd6Al8xBAJkawgFAmd6Al8yBAJmTAkBAmR4AgUCZHMFAmRrAwkAAAIFAmZMBQJmTAkAzggCBQJjeAUCZksJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEwBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmdtAmdBAmd2BAJnZAMJAQJhVAAGCQAAAgUCYmcFAW4EAmVICQDMCAIDCQEBIQEFAmdkBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRMCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUgFAmVIBAJkcwkBAmRsAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcwUCZHMEAmduCQD8BwQFAmJuAgd1bnN0YWtlCQDMCAIJANgEAQUCYmgJAMwIAgUCZ20FA25pbAUDbmlsAwkAAAIFAmduBQJnbgQCY1AJAQJjYwQJANgEAQgFAmRMDXRyYW5zYWN0aW9uSWQJANgEAQUCYmgFAmdtCAUCZEwGY2FsbGVyBAJjdggFAmNQAl8xBAJjdwgFAmNQAl8yBAJjeAgFAmNQA18xMAQCZ0IJAMwIAgMJAGcCBQJjdgUCZ0EGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ0EFA25pbAIACQDMCAIDCQBnAgUCY3cFAmd2BgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ3YFA25pbAIABQNuaWwDCQAAAgUCZ0IFAmdCBAJncwkA/AcEBQJhTwIEYnVybgkAzAgCBQJnbQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiaAUCZ20FA25pbAMJAAACBQJncwUCZ3MEAmdDCQECZHQDCQEBLQEFAmN2CQEBLQEFAmN3AAAEAmZLCAUCZ0MCXzEEAmRrCAUCZ0MCXzIEAmZMCQECZHgCBQJkcwUCZGsDCQAAAgUCZkwFAmZMCQDOCAIFAmN4BQJmSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTAEIYWN0aXZhdGUCAmdEAmdFAwkBAiE9AgkApQgBCAUCZEwGY2FsbGVyCQClCAEFAmFPCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAAUCZ0QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAUCZ0UFA25pbAIHc3VjY2VzcwJkTAEKcmVmcmVzaEtMcAAEAmdGCQELdmFsdWVPckVsc2UCCQCfCAEFAmFrAAAEAmdHAwkAZwIJAGUCBQZoZWlnaHQFAmdGBQJhbgUEdW5pdAkBAmFMAQkAuQkCCQDMCAIJAKQDAQUCYW4JAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmdHBQJnRwQCZEUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFqAgEwCQECYU4BAgtpbnZhbGlkIGtMcAQCZ0gJAQJkdAMAAAAAAAAEAmdJCAUCZ0gCXzEEAmRrCAUCZ0gCXzIEAmR3AwkBAiE9AgUCZEUFAmRrBQJnSQkBAmFMAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmR3CQCmAwEFAmRrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRMARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhVgACZEwBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJGCQCUCgIFA25pbAkBAmJFAQUCYkYCZEwBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJOAmJPAmJTBAJjYgkBAmJSAwUCYk4FAmJPBQJiUwkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmNiAAAJAMwIAgkApgMBCQCRAwIFAmNiAAEJAMwIAgkApgMBCQCRAwIFAmNiAAIFA25pbAJkTAEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRMARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQEBSAIJAKcDAQUBSQUBSgJkTAEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiSAJiSQkAlAoCBQNuaWwJAKYDAQkBAmJHAgkApwMBBQJiSAkApwMBBQJiSQJkTAEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmNkAmN6AmNBAmNCAmNDAmNEAmFiAmNFAmNGCQCUCgIFA25pbAkBAmN5CQUCY2QFAmN6BQJjQQUCY0IFAmNDBQJjRAUCYWIFAmNFBQJjRgJkTAEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmNkAmNlAmNmAmFiBAJjUAkBAmNjBAUCY2QFAmNlBQJjZgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYWIJAJQKAgUDbmlsCQCcCgoIBQJjUAJfMQgFAmNQAl8yCAUCY1ACXzMIBQJjUAJfNAgFAmNQAl81CAUCY1ACXzYIBQJjUAJfNwkApgMBCAUCY1ACXzgIBQJjUAJfOQgFAmNQA18xMAJkTAENc3RhdHNSRUFET05MWQAEAmJUCQECYVYABAJjZwkA2QQBCQCRAwIFAmJUBQFxBAJnSgkAkQMCBQJiVAUBcgQCZ0sJAJEDAgUCYlQFAXMEAmNJCQCRAwIFAmJUBQF2BAJjSgkAkQMCBQJiVAUBdwQCYlUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdAQCYlYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiVAUBdQQCZ0wICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnTQkBAmJFAQUCZ0oEAmdOCQECYkUBBQJnSwQCZ08DCQAAAgUCZ0wAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYlIDBQJnTQUCZ04FAmdMBAJjcQAABAJnUAkBAUgCCQCRAwIFAmdPAAEFAWIEAmdRCQEBSAIJAJEDAgUCZ08AAgUBYgQCZ1IJAQV2YWx1ZQEJAJoIAgUCYU8JAQJheQEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmdNCQDMCAIJAKQDAQUCZ04JAMwIAgkApAMBBQJnTAkAzAgCCQCkAwEFAmNxCQDMCAIJAKQDAQUCZ1AJAMwIAgkApAMBBQJnUQkAzAgCCQCkAwEFAmdSBQNuaWwFAWoCZEwBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjQQQCYlQJAQJhVgAEAmNnCQDZBAEJAJEDAgUCYlQFAXEEAmNHCQCRAwIFAmJUBQFyBAJjaAkA2QQBBQJjRwQCY0gJAJEDAgUCYlQFAXMEAmNpCQDZBAEFAmNIBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJjagkAkQMCBQJiVAUBcAQCZ0wICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnTQkBAmJFAQUCY0cEAmdOCQECYkUBBQJjSAQCYlAJAQFEAgUCZ00FAmJVBAJiUQkBAUQCBQJnTgUCYlYEAmNwAwkAAAIFAmdMAAAFAWUJAQJiRwIFAmJRBQJiUAQCY00JAQFEAgUCY0EFAmJVBAJjTgkAvAIDBQJjTQUCY3AFAWQEAmNDCQEBSAIFAmNOBQJiVgQCZFIJAQJjeQkCAACgwh4FAmNBBQJjaAUCY0MFAmNpAgAGBwQCY1gIBQJkUgJfMQQCZ1MIBQJkUgJfMwQCY2wIBQJkUgJfNAQCY24IBQJkUgJfNQQCY2sIBQJkUgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1gJAMwIAgkApAMBCQEBSAIFAmNwBQFiCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIFAmNqCQDMCAIJAKQDAQUCY0EJAMwIAgkApAMBBQJjQwUDbmlsBQFqAmRMAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjQwQCYlQJAQJhVgAEAmNnCQDZBAEJAJEDAgUCYlQFAXEEAmNHCQCRAwIFAmJUBQFyBAJjaAkA2QQBBQJjRwQCY0gJAJEDAgUCYlQFAXMEAmNpCQDZBAEFAmNIBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF0BAJiVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJUBQF1BAJjagkAkQMCBQJiVAUBcAQCZ0wICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2cJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2cCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnVAkBAmJFAQUCY0cEAmdVCQECYkUBBQJjSAQCZ1YJAQFEAgUCZ1QFAmJVBAJnVwkBAUQCBQJnVQUCYlYEAmNwAwkAAAIFAmdMAAAFAWUJAQJiRwIFAmdXBQJnVgQCY04JAQFEAgUCY0MFAmJWBAJjTQkAvAIDBQJjTgUBZAUCY3AEAmNBCQEBSAIFAmNNBQJiVQQCZFIJAQJjeQkCAACgwh4FAmNBBQJjaAUCY0MFAmNpAgAGBwQCY1gIBQJkUgJfMQQCZ1MIBQJkUgJfMwQCY2wIBQJkUgJfNAQCY24IBQJkUgJfNQQCY2sIBQJkUgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1gJAMwIAgkApAMBCQEBSAIFAmNwBQFiCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIFAmNqCQDMCAIJAKQDAQUCY0EJAMwIAgkApAMBBQJjQwUDbmlsBQFqAmRMARNldmFsdWF0ZUdldFJFQURPTkxZAgJnWAJnWQQCY1AJAQJjYwQCAAUCZ1gFAmdZBQR0aGlzBAJjdggFAmNQAl8xBAJjdwgFAmNQAl8yBAJjbAgFAmNQAl81BAJjbggFAmNQAl82BAJjawgFAmNQAl83BAJjcQgFAmNQAl84BAJjagkBDXBhcnNlSW50VmFsdWUBCAUCY1ACXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjdgkAzAgCCQCkAwEFAmN3CQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNrCQDMCAIJAKYDAQUCY3EJAMwIAgkApAMBBQJjagUDbmlsBQFqAQJnWgECaGEABAJoYgQCZFcJAQJlWgADCQABAgUCZFcCCkJ5dGVWZWN0b3IEAmZkBQJkVwUCZmQDCQABAgUCZFcCBFVuaXQIBQJnWg9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZFcFAmdaAwkAAQIFAmRXAgVPcmRlcgQCZEEFAmRXBAJoYwkBAmFVAAQCaGQJAQJkegEFAmRBBAJhRAgFAmhkAl8xBAJhRQgFAmhkAl8yBAJhRgkA9AMDCAUCZEEJYm9keUJ5dGVzCQCRAwIIBQJkQQZwcm9vZnMAAAgFAmRBD3NlbmRlclB1YmxpY0tleQQCYUcJAPQDAwgFAmRBCWJvZHlCeXRlcwkAkQMCCAUCZEEGcHJvb2ZzAAEFAmhjAwMDBQJhRAUCYUYHBQJhRwcGCQECYUMEBQJhRAUCYUUFAmFGBQJhRwMJAAECBQJkVwIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmZhBQJkVwMJAPQDAwgFAmdaCWJvZHlCeXRlcwkAkQMCCAUCZ1oGcHJvb2ZzAAAFAmhiBgQCaGUJAPYDAQkBBXZhbHVlAQgFAmZhBnNjcmlwdAQCaGYJANsEAQkBBXZhbHVlAQkAnQgCBQJhTwkBAmFBAAQCaGcJAPEHAQUEdGhpcwMJAAACBQJoZgUCaGUJAQIhPQIFAmhnBQJoZQcJAPQDAwgFAmdaCWJvZHlCeXRlcwkAkQMCCAUCZ1oGcHJvb2ZzAAAFAmhiqF/ylA==", "height": 2522826, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BoF1Gq5MSahwVzPKfC88kHQdGLR1FNLkbAvSBNXiZp3Q Next: HPomoVN8WGx5T298k9pBGm5ib8KAq8Ftviq8rWfLmg6s Diff:
OldNewDifferences
130130
131131 let an = valueOrElse(getInteger(this, al), am)
132132
133-func ao (ap) = makeString(["%s%s", "stakedBalance", ap], j)
133+func ao () = "%s__factoryConfig"
134134
135135
136-func aq (ap) = makeString(["%s%s", "shareAssetBalance", ap], j)
136+func ap () = "%s%s__matcher__publicKey"
137137
138138
139-func ar (ap) = valueOrElse(getInteger(this, ao(ap)), 0)
139+func aq (ar) = (("%s%s%s__" + ar) + "__mappings__poolContract2LpAsset")
140140
141141
142-func as (ap) = valueOrElse(getInteger(this, aq(ap)), 0)
142+func as (at,au) = (((("%d%d%s__" + at) + "__") + au) + "__config")
143143
144144
145-func at () = "%s__factoryConfig"
145+func av (aw) = ("%s%s%s__mappings__baseAsset2internalId__" + aw)
146146
147147
148-func au () = "%s%s__matcher__publicKey"
148+func ax () = "%s__shutdown"
149149
150150
151-func av (aw) = (("%s%s%s__" + aw) + "__mappings__poolContract2LpAsset")
151+func ay (az) = ("%s%s__poolWeight__" + az)
152152
153153
154-func ax (ay,az) = (((("%d%d%s__" + ay) + "__") + az) + "__config")
154+func aA () = "%s__allowedLpScriptHash"
155155
156156
157-func aA (aB) = ("%s%s%s__mappings__baseAsset2internalId__" + aB)
157+let aB = "%s__feeCollectorAddress"
158+
159+func aC (aD,aE,aF,aG) = throw((((((((("order validation failed: orderValid=" + toString(aD)) + " (") + aE) + ")") + " senderValid=") + toString(aF)) + " matcherValid=") + toString(aG)))
158160
159161
160-func aC () = "%s__shutdown"
162+func aH (aI,aJ) = valueOrErrorMessage(getString(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
161163
162164
163-func aD (aE) = ("%s%s__poolWeight__" + aE)
165+func aK (aI,aJ) = valueOrErrorMessage(getInteger(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
164166
165167
166-func aF () = "%s__allowedLpScriptHash"
168+func aL (aM) = throw(makeString(["lp.ride:", aM], " "))
167169
168170
169-let aG = "%s__feeCollectorAddress"
170-
171-func aH (aI,aJ,aK,aL) = throw((((((((("order validation failed: orderValid=" + toString(aI)) + " (") + aJ) + ")") + " senderValid=") + toString(aK)) + " matcherValid=") + toString(aL)))
171+func aN (aM) = makeString(["lp.ride:", aM], " ")
172172
173173
174-func aM (aN,aO) = valueOrErrorMessage(getString(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
174+let aO = addressFromStringValue(aH(this, T()))
175+
176+let aP = addressFromStringValue(aH(aO, aB))
177+
178+let aQ = {
179+ let aR = invoke(aO, "getInFeeREADONLY", [toString(this)], nil)
180+ if ($isInstanceOf(aR, "Int"))
181+ then aR
182+ else throw(($getType(aR) + " couldn't be cast to Int"))
183+ }
184+
185+let aS = {
186+ let aR = invoke(aO, "getOutFeeREADONLY", [toString(this)], nil)
187+ if ($isInstanceOf(aR, "Int"))
188+ then aR
189+ else throw(($getType(aR) + " couldn't be cast to Int"))
190+ }
191+
192+func aT () = valueOrElse(getBoolean(aO, ax()), false)
175193
176194
177-func aP (aN,aO) = valueOrErrorMessage(getInteger(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
195+func aU () = fromBase58String(aH(aO, ap()))
178196
179197
180-func aQ (aR) = throw(makeString(["lp.ride:", aR], " "))
181-
182-
183-func aS (aR) = makeString(["lp.ride:", aR], " ")
184-
185-
186-let aT = addressFromStringValue(aM(this, T()))
187-
188-let aU = addressFromStringValue(aM(aT, aG))
189-
190-let aV = {
191- let aW = invoke(aT, "getInFeeREADONLY", [toString(this)], nil)
192- if ($isInstanceOf(aW, "Int"))
193- then aW
194- else throw(($getType(aW) + " couldn't be cast to Int"))
195- }
196-
197-let aX = {
198- let aW = invoke(aT, "getOutFeeREADONLY", [toString(this)], nil)
199- if ($isInstanceOf(aW, "Int"))
200- then aW
201- else throw(($getType(aW) + " couldn't be cast to Int"))
202- }
203-
204-func aY () = valueOrElse(getBoolean(aT, aC()), false)
205-
206-
207-func aZ () = fromBase58String(aM(aT, au()))
208-
209-
210-func ba () = {
211- let bb = aM(this, ae())
212- let bc = aM(this, af())
213- let az = aP(aT, aA(bc))
214- let ay = aP(aT, aA(bb))
215- split(aM(aT, ax(toString(ay), toString(az))), j)
198+func aV () = {
199+ let aW = aH(this, ae())
200+ let aX = aH(this, af())
201+ let au = aK(aO, av(aX))
202+ let at = aK(aO, av(aW))
203+ split(aH(aO, as(toString(at), toString(au))), j)
216204 }
217205
218206
219-func bd (be) = if ((be == i))
207+func aY (aZ) = if ((aZ == i))
220208 then unit
221- else fromBase58String(be)
209+ else fromBase58String(aZ)
222210
223211
224-func bf (be) = if ((be == unit))
212+func ba (aZ) = if ((aZ == unit))
225213 then i
226- else toBase58String(value(be))
214+ else toBase58String(value(aZ))
227215
228216
229-func bg (bh) = $Tuple7(addressFromStringValue(bh[o]), parseIntValue(bh[p]), fromBase58String(bh[q]), bd(bh[r]), bd(bh[s]), parseIntValue(bh[t]), parseIntValue(bh[u]))
217+func bb (bc) = $Tuple7(addressFromStringValue(bc[o]), parseIntValue(bc[p]), fromBase58String(bc[q]), aY(bc[r]), aY(bc[s]), parseIntValue(bc[t]), parseIntValue(bc[u]))
230218
231219
232-let bi = bg(ba())
220+let bd = bb(aV())
233221
234-let bj = bi
222+let be = bd
235223
236-let bk = bj._1
224+let bf = be._1
237225
238-let bl = bj._2
226+let bg = be._2
239227
240-let bm = bj._3
228+let bh = be._3
241229
242-let bn = bj._4
230+let bi = be._4
243231
244-let bo = bj._5
232+let bj = be._5
245233
246-let bp = bj._6
234+let bk = be._6
247235
248-let bq = bj._7
236+let bl = be._7
249237
250-func br () = split(aM(aT, at()), j)
238+func bm () = split(aH(aO, ao()), j)
251239
252240
253-let bs = valueOrErrorMessage(addressFromString(br()[B]), "incorrect staking address")
241+let bn = valueOrErrorMessage(addressFromString(bm()[B]), "incorrect staking address")
254242
255-let bt = valueOrErrorMessage(addressFromString(br()[C]), "incorrect staking address")
243+let bo = valueOrErrorMessage(addressFromString(bm()[C]), "incorrect staking address")
256244
257-func bu (bv,bw,bx,by,bz,bA,bB,bC,bD,bE) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE)], j)
245+func bp (bq,br,bs,bt,bu,bv,bw,bx,by,bz) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz)], j)
258246
259247
260-func bF (bG,bH,bI,by,bB,bC) = makeString(["%d%d%d%d%d%d", toString(bG), toString(bH), toString(bI), toString(by), toString(bB), toString(bC)], j)
248+func bA (bB,bC,bD,bt,bw,bx) = makeString(["%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bt), toString(bw), toString(bx)], j)
261249
262250
263-func bJ (ap) = {
264- let bK = if ((ap == "WAVES"))
265- then wavesBalance(this).available
266- else assetBalance(this, fromBase58String(ap))
267- let bL = ((bK + ar(ap)) - as(ap))
268- max([0, bL])
251+func bE (bF) = if ((bF == "WAVES"))
252+ then wavesBalance(this).available
253+ else assetBalance(this, fromBase58String(bF))
254+
255+
256+func bG (bH,bI) = fraction(bH, d, bI)
257+
258+
259+func bJ (bH,bI,L) = fraction(bH, d, bI, L)
260+
261+
262+func bK (bL,bM,bN,bO) = {
263+ let bP = D(bN, bL)
264+ let bQ = D(bO, bM)
265+ bG(bQ, bP)
269266 }
270267
271268
272-func bM (bN,bO) = fraction(bN, d, bO)
273-
274-
275-func bP (bN,bO,L) = fraction(bN, d, bO, L)
276-
277-
278-func bQ (bR) = {
279- let bS = invoke(bR, "getRate", nil, nil)
280- if ((bS == bS))
281- then {
282- let bT = bS
283- if ($isInstanceOf(bT, "Int"))
284- then {
285- let bU = bT
286- bU
287- }
288- else aQ("proxy.getRate() unexpected value")
289- }
290- else throw("Strict value is not equal to itself.")
269+func bR (bN,bO,bS) = {
270+ let bT = aV()
271+ let bU = parseIntValue(bT[t])
272+ let bV = parseIntValue(bT[u])
273+ let bW = bK(bU, bV, bN, bO)
274+ let bI = D(bN, bU)
275+ let bH = D(bO, bV)
276+ let bX = D(bS, b)
277+ let bY = bG(bI, bX)
278+ let bZ = bG(bH, bX)
279+[bW, bY, bZ]
291280 }
292281
293282
294-func bV (ap,bW,bX,bR) = {
295- let bY = ar(ap)
296- if ((bY == bY))
283+func ca (bN,bO,bS) = {
284+ let cb = bR(bN, bO, bS)
285+[H(cb[0], b), H(cb[1], b), H(cb[2], b)]
286+ }
287+
288+
289+func cc (cd,ce,cf,ab) = {
290+ let bT = aV()
291+ let cg = bT[q]
292+ let ch = bT[r]
293+ let ci = bT[s]
294+ let bL = parseIntValue(bT[t])
295+ let bM = parseIntValue(bT[u])
296+ let cj = bT[p]
297+ let ck = valueOrErrorMessage(assetInfo(fromBase58String(cg)), (("Asset " + cg) + " doesn't exist")).quantity
298+ if ((cg != ce))
299+ then throw("Invalid asset passed.")
300+ else {
301+ let cl = bE(ch)
302+ let cm = D(cl, bL)
303+ let cn = bE(ci)
304+ let co = D(cn, bM)
305+ let cp = bG(co, cm)
306+ let cq = H(cp, b)
307+ let cr = D(cf, b)
308+ let cs = D(ck, b)
309+ let ct = fraction(cm, cr, cs)
310+ let cu = fraction(co, cr, cs)
311+ let cv = K(ct, bL, FLOOR)
312+ let cw = K(cu, bM, FLOOR)
313+ let cx = if ((cd == ""))
314+ then nil
315+ else [ScriptTransfer(ab, cv, if ((ch == "WAVES"))
316+ then unit
317+ else fromBase58String(ch)), ScriptTransfer(ab, cw, if ((ci == "WAVES"))
318+ then unit
319+ else fromBase58String(ci)), StringEntry(ad(toString(ab), cd), bA(cv, cw, cf, cq, height, lastBlock.timestamp)), IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq)]
320+ $Tuple10(cv, cw, ch, ci, cl, cn, ck, cp, cj, cx)
321+ }
322+ }
323+
324+
325+func cy (cd,cz,cA,cB,cC,cD,ab,cE,cF) = {
326+ let bT = aV()
327+ let cg = fromBase58String(bT[q])
328+ let cG = bT[r]
329+ let cH = bT[s]
330+ let cI = bT[v]
331+ let cJ = bT[w]
332+ let bU = parseIntValue(bT[t])
333+ let bV = parseIntValue(bT[u])
334+ let cj = bT[p]
335+ let ck = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
336+ let cK = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
337+ let cL = toBase58String(valueOrElse(cD, fromBase58String("WAVES")))
338+ if (if ((cG != cK))
339+ then true
340+ else (cH != cL))
341+ then throw("Invalid amt or price asset passed.")
342+ else {
343+ let cl = if (cE)
344+ then bE(cG)
345+ else (bE(cG) - cA)
346+ let cn = if (cE)
347+ then bE(cH)
348+ else (bE(cH) - cC)
349+ let cM = D(cA, bU)
350+ let cN = D(cC, bV)
351+ let cO = bG(cN, cM)
352+ let cm = D(cl, bU)
353+ let co = D(cn, bV)
354+ let cP = if ((ck == 0))
355+ then {
356+ let cp = e
357+ let cQ = e
358+ let bX = pow((cM * cN), 0, toBigInt(5), 1, 0, DOWN)
359+ $Tuple5(H(bX, b), H(cM, bU), H(cN, bV), bG((co + cN), (cm + cM)), cQ)
360+ }
361+ else {
362+ let cp = bG(co, cm)
363+ let cQ = fraction(R((cp - cO)), d, cp)
364+ let cR = D(cz, b)
365+ if (if ((cp != e))
366+ then (cQ > cR)
367+ else false)
368+ then throw(((("Price slippage " + toString(cQ)) + " exceeded the passed limit of ") + toString(cR)))
369+ else {
370+ let cs = D(ck, b)
371+ let cS = fraction(cM, bJ(co, cm, CEILING), d, CEILING)
372+ let cT = fraction(cN, d, bJ(co, cm, FLOOR), CEILING)
373+ let cU = if ((cS > cN))
374+ then $Tuple2(cT, cN)
375+ else $Tuple2(cM, cS)
376+ let cV = cU._1
377+ let cW = cU._2
378+ let bX = fraction(cs, cW, co, FLOOR)
379+ $Tuple5(K(bX, b, FLOOR), K(cV, bU, CEILING), K(cW, bV, CEILING), cp, cQ)
380+ }
381+ }
382+ let cX = cP._1
383+ let cY = cP._2
384+ let cZ = cP._3
385+ let cq = H(cP._4, b)
386+ let da = H(cP._5, b)
387+ if ((0 >= cX))
388+ then throw("Invalid calculations. LP calculated is less than zero.")
389+ else {
390+ let db = if (!(cF))
391+ then 0
392+ else cX
393+ let dc = (cA - cY)
394+ let dd = (cC - cZ)
395+ let de = [IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq), StringEntry(aa(ab, cd), bp(cY, cZ, db, cq, cz, da, height, lastBlock.timestamp, dc, dd))]
396+ $Tuple13(cX, db, cq, cl, cn, ck, cg, cj, de, dc, dd, cB, cD)
397+ }
398+ }
399+ }
400+
401+
402+func df (dg,dh,ck) = {
403+ let di = G(dg, toBigInt(bk))
404+ let dj = G(dh, toBigInt(bl))
405+ let dk = fraction(pow((di * dj), 0, toBigInt(5), 1, 18, DOWN), g, ck)
406+ if ((ck == f))
407+ then f
408+ else dk
409+ }
410+
411+
412+func dl (dm,dn,do) = {
413+ let dp = (toBigInt(bE(ba(bi))) - dm)
414+ let dq = (toBigInt(bE(ba(bj))) - dn)
415+ let dr = (toBigInt(value(assetInfo(bh)).quantity) - do)
416+ let ds = df(dp, dq, dr)
417+ ds
418+ }
419+
420+
421+func dt (du,dv,do) = {
422+ let dp = (bE(ba(bi)) + du)
423+ let dq = (bE(ba(bj)) + dv)
424+ let dr = (value(assetInfo(bh)).quantity + do)
425+ let dk = df(toBigInt(dp), toBigInt(dq), toBigInt(dr))
426+ let dw = [IntegerEntry(ak, height), StringEntry(aj, toString(dk))]
427+ $Tuple2(dw, dk)
428+ }
429+
430+
431+func dx (dy,dk) = if ((dk >= dy))
432+ then true
433+ else aL(makeString(["updated KLp lower than current KLp", toString(dy), toString(dk)], " "))
434+
435+
436+func dz (dA) = {
437+ let dp = bE(ba(bi))
438+ let dq = bE(ba(bj))
439+ let dB = dA.amount
440+ let dC = fraction(dA.amount, dA.price, b, FLOOR)
441+ let dD = if ((dA.orderType == Buy))
442+ then $Tuple2(dB, -(dC))
443+ else $Tuple2(-(dB), dC)
444+ let du = dD._1
445+ let dv = dD._2
446+ if (if (if (aT())
447+ then true
448+ else (bg == m))
449+ then true
450+ else (bg == n))
451+ then throw("Exchange operations disabled")
452+ else if (if ((dA.assetPair.amountAsset != bi))
453+ then true
454+ else (dA.assetPair.priceAsset != bj))
455+ then throw("Wrong order assets.")
456+ else {
457+ let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
458+ let dF = dt(du, dv, 0)
459+ let dG = dF._1
460+ let dH = dF._2
461+ let dI = (dH >= dE)
462+ let dJ = makeString(["kLp=", toString(dE), " kLpNew=", toString(dH), " amountAssetBalance=", toString(dp), " priceAssetBalance=", toString(dq), " amountAssetBalanceDelta=", toString(du), " priceAssetBalanceDelta=", toString(dv), " height=", toString(height)], "")
463+ $Tuple2(dI, dJ)
464+ }
465+ }
466+
467+
468+func dK (dL) = if ((size(dL.payments) != 1))
469+ then throw("exactly 1 payment is expected")
470+ else {
471+ let dM = value(dL.payments[0])
472+ let ce = value(dM.assetId)
473+ let dN = dM.amount
474+ let cP = cc(toBase58String(dL.transactionId), toBase58String(ce), dN, dL.caller)
475+ let cv = cP._1
476+ let cw = cP._2
477+ let cj = parseIntValue(cP._9)
478+ let cx = cP._10
479+ if (if (aT())
480+ then true
481+ else (cj == n))
482+ then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
483+ else $Tuple5(cv, cw, dN, ce, cx)
484+ }
485+
486+
487+func dO (dL,cz,cF) = if ((size(dL.payments) != 2))
488+ then throw("exactly 2 payments are expected")
489+ else {
490+ let dP = value(dL.payments[0])
491+ let dQ = value(dL.payments[1])
492+ let dR = cy(toBase58String(dL.transactionId), cz, dP.amount, dP.assetId, dQ.amount, dQ.assetId, toString(dL.caller), false, cF)
493+ let cj = parseIntValue(dR._8)
494+ if (if (if (aT())
495+ then true
496+ else (cj == l))
497+ then true
498+ else (cj == n))
499+ then throw(("Put operation is blocked by admin. Status = " + toString(cj)))
500+ else dR
501+ }
502+
503+
504+func dS (dT) = {
505+ let dU = invoke(aO, "emit", [dT], nil)
506+ if ((dU == dU))
297507 then {
298- let bZ = as(bX)
299- if ((bZ == bZ))
300- then {
301- let ca = bd(ap)
302- if ((bW > 0))
303- then {
304- let cb = invoke(bR, "deposit", nil, [AttachedPayment(ca, bW)])
305- if ((cb == cb))
306- then {
307- let bT = cb
308- if ($isInstanceOf(bT, "Int"))
309- then {
310- let cc = bT
311- let cd = (bY + bW)
312- let ce = (bZ + cc)
313-[IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce)]
314- }
315- else nil
316- }
317- else throw("Strict value is not equal to itself.")
318- }
319- else nil
320- }
508+ let dV = {
509+ let dW = dU
510+ if ($isInstanceOf(dW, "Address"))
511+ then {
512+ let dX = dW
513+ invoke(dX, "emit", [dT], nil)
514+ }
515+ else unit
516+ }
517+ if ((dV == dV))
518+ then dT
321519 else throw("Strict value is not equal to itself.")
322520 }
323521 else throw("Strict value is not equal to itself.")
324522 }
325523
326524
327-func cf (ap,bW,bX,bR,cg,ch) = {
328- let bY = ar(ap)
329- if ((bY == bY))
525+func dY (dT,ai) = {
526+ let dZ = if ((ai == 0))
527+ then 0
528+ else fraction(dT, ai, b)
529+ $Tuple2((dT - dZ), dZ)
530+ }
531+
532+
533+func ea (eb,ec,ab,ac) = {
534+ let ed = (ac == unit)
535+ let ee = bE(ba(bi))
536+ let ef = bE(ba(bj))
537+ let eg = if ((ec == bi))
538+ then true
539+ else if ((ec == bj))
540+ then false
541+ else aL("invalid asset")
542+ let eh = if (ed)
543+ then $Tuple2(ee, ef)
544+ else if (eg)
545+ then $Tuple2((ee - eb), ef)
546+ else $Tuple2(ee, (ef - eb))
547+ let ei = eh._1
548+ let ej = eh._2
549+ let ek = if (eg)
550+ then $Tuple2(eb, 0)
551+ else $Tuple2(0, eb)
552+ let el = ek._1
553+ let em = ek._2
554+ let dB = dY(el, aQ)._1
555+ let dC = dY(em, aQ)._1
556+ let en = dY(eb, aQ)
557+ let eo = en._1
558+ let dZ = en._2
559+ let ep = (ei + dB)
560+ let eq = (ej + dC)
561+ let er = bG(D(eq, bl), D(ep, bk))
562+ let es = H(er, b)
563+ let et = if (eg)
564+ then ei
565+ else ej
566+ let eu = toBigInt(et)
567+ let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
568+ let ew = if ((ev > f))
569+ then true
570+ else aL("initial deposit requires all coins")
571+ if ((ew == ew))
330572 then {
331- let bZ = as(bX)
332- if ((bZ == bZ))
333- then {
334- let ci = bQ(bR)
335- if ((ci == ci))
336- then {
337- let cj = fraction(cg, bY, bZ)
338- let ck = bd(bX)
339- let cl = fraction(cg, bW, cj)
340- let cm = fraction(cg, bW, ci)
341- let cn = max([0, (cl - cm)])
342- if ((cm > 0))
343- then {
344- let co = invoke(bR, "withdraw", nil, [AttachedPayment(ck, cm)])
345- if ((co == co))
346- then {
347- let bT = co
348- if ($isInstanceOf(bT, "Int"))
349- then {
350- let cp = bT
351- let cd = (bY - cp)
352- let ce = ((bZ - cm) - cn)
353-[IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce), ScriptTransfer(ch, cn, bd(bX))]
354- }
355- else nil
356- }
357- else throw("Strict value is not equal to itself.")
358- }
359- else nil
360- }
361- else throw("Strict value is not equal to itself.")
362- }
363- else throw("Strict value is not equal to itself.")
573+ let ex = toBigInt(eo)
574+ let ey = max([0, toInt(((ev * (sqrtBigInt((d + ((ex * d) / eu)), 18, 18, DOWN) - d)) / d))])
575+ let de = if (ed)
576+ then nil
577+ else [IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bp(el, em, ey, es, 0, 0, height, lastBlock.timestamp, 0, 0))]
578+ let ez = bG(D(ej, bl), D(ei, bk))
579+ let eA = H(ez, b)
580+ let eB = {
581+ let eC = if (eg)
582+ then $Tuple2(el, ei)
583+ else $Tuple2(em, ej)
584+ let dT = eC._1
585+ let eD = eC._2
586+ let eE = toInt(fraction(ev, toBigInt((dT / 2)), toBigInt(eD)))
587+ fraction((ey - eE), b, eE)
588+ }
589+ $Tuple5(ey, de, dZ, eB, eg)
364590 }
365591 else throw("Strict value is not equal to itself.")
366592 }
367593
368594
369-func cq (ap) = {
370- let bT = invoke(aT, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
371- if ($isInstanceOf(bT, "(Boolean, Int, Int, String, String, Int, String)"))
595+func eF (eG,eo,ec,ab,ac) = {
596+ let ed = (ac == unit)
597+ let bT = aV()
598+ let bU = parseIntValue(bT[t])
599+ let bV = parseIntValue(bT[u])
600+ let eH = [if ((ec == bh))
601+ then true
602+ else aL("invalid lp asset")]
603+ if ((eH == eH))
372604 then {
373- let cr = bT
374- cr
375- }
376- else aQ((("[" + ap) + "] getLeaseProxyConfig() error"))
377- }
378-
379-
380-func cs (ct,ap,bX,cu,bR,cg,ch) = {
381- let bY = ar(ap)
382- if ((bY == bY))
383- then {
384- let bZ = as(bX)
385- if ((bZ == bZ))
386- then {
387- let cv = max([0, (bJ(ap) - cu)])
388- let cw = fraction(ct, cv, 100)
389- let cx = (bY - cw)
390- if ((cx == 0))
391- then nil
392- else if ((0 > cx))
393- then {
394- let cy = -(cx)
395- bV(ap, cy, bX, bR)
396- }
397- else {
398- let cz = cx
399- cf(ap, cz, bX, bR, cg, ch)
400- }
401- }
402- else throw("Strict value is not equal to itself.")
605+ let eI = if ((eG == bi))
606+ then true
607+ else if ((eG == bj))
608+ then false
609+ else aL("invalid asset")
610+ let eJ = if (eI)
611+ then toBigInt(bE(ba(bi)))
612+ else toBigInt(bE(ba(bj)))
613+ let eK = if (eI)
614+ then bU
615+ else bV
616+ let eL = bE(ba(bi))
617+ let eM = bE(ba(bj))
618+ let eN = if (eI)
619+ then eL
620+ else eM
621+ let eO = toBigInt(eN)
622+ let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
623+ let eP = toBigInt(eo)
624+ let eQ = max([0, toInt(((eJ * (d - pow((d - ((eP * d) / ev)), 18, h, 0, 18, DOWN))) / d))])
625+ let eR = dY(eQ, aS)
626+ let eS = eR._1
627+ let dZ = eR._2
628+ let eT = if (eI)
629+ then $Tuple4(eS, 0, (eL - eQ), eM)
630+ else $Tuple4(0, eS, eL, (eM - eQ))
631+ let eU = eT._1
632+ let eV = eT._2
633+ let eW = eT._3
634+ let eX = eT._4
635+ let er = bG(D(eX, bl), D(eW, bk))
636+ let es = H(er, b)
637+ let de = if (ed)
638+ then nil
639+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bA(eU, eV, eo, es, height, lastBlock.timestamp)), IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es)]
640+ let ez = bG(D(eM, bl), D(eL, bk))
641+ let eA = H(ez, b)
642+ let eB = {
643+ let eY = (toInt(fraction(eJ, eP, ev)) * 2)
644+ fraction((eS - eY), b, eY)
645+ }
646+ $Tuple5(eS, de, dZ, eB, eI)
403647 }
404648 else throw("Strict value is not equal to itself.")
405649 }
406650
407651
408-func cA (ap) = {
409- let cB = cq(ap)
410- let cC = cB._1
411- let cD = cB._2
412- let cu = cB._3
413- let cE = cB._4
414- let cF = cB._5
415- let cg = cB._6
416- let cG = cB._7
417- if (cC)
418- then cs(cD, ap, cF, cu, addressFromStringValue(cE), cg, addressFromStringValue(cG))
419- else nil
420- }
421-
422-
423-func cH (ap,cI) = {
424- let cJ = cq(ap)
425- let cC = cJ._1
426- let cD = cJ._2
427- let cu = cJ._3
428- let cE = cJ._4
429- let cF = cJ._5
430- let cg = cJ._6
431- let cG = cJ._7
432- if (cC)
652+func eZ () = {
653+ let dW = getString(U())
654+ if ($isInstanceOf(dW, "String"))
433655 then {
434- let cK = max([0, ((bJ(ap) - cI) - cu)])
435- if ((cK == cK))
436- then {
437- let cd = fraction(cD, cK, 100)
438- if ((cd == cd))
439- then {
440- let cL = max([0, (ar(ap) - cd)])
441- if ((cL == cL))
442- then cf(ap, cL, cF, addressFromStringValue(cE), cg, addressFromStringValue(cG))
443- else throw("Strict value is not equal to itself.")
444- }
445- else throw("Strict value is not equal to itself.")
446- }
447- else throw("Strict value is not equal to itself.")
656+ let fa = dW
657+ fromBase58String(fa)
448658 }
449- else nil
450- }
451-
452-
453-func cM (cN,cO) = {
454- let cP = cH(aM(this, ae()), cN)
455- let cQ = cH(aM(this, af()), cO)
456- (cP ++ cQ)
457- }
458-
459-
460-func cR (cS,cT,cU,cV) = {
461- let cW = D(cU, cS)
462- let cX = D(cV, cT)
463- bM(cX, cW)
464- }
465-
466-
467-func cY (cU,cV,cZ) = {
468- let da = ba()
469- let db = parseIntValue(da[t])
470- let dc = parseIntValue(da[u])
471- let dd = cR(db, dc, cU, cV)
472- let bO = D(cU, db)
473- let bN = D(cV, dc)
474- let de = D(cZ, b)
475- let df = bM(bO, de)
476- let dg = bM(bN, de)
477-[dd, df, dg]
478- }
479-
480-
481-func dh (cU,cV,cZ) = {
482- let di = cY(cU, cV, cZ)
483-[H(di[0], b), H(di[1], b), H(di[2], b)]
484- }
485-
486-
487-func dj (dk,dl,dm,ab) = {
488- let da = ba()
489- let dn = da[q]
490- let do = da[r]
491- let dp = da[s]
492- let cS = parseIntValue(da[t])
493- let cT = parseIntValue(da[u])
494- let dq = da[p]
495- let dr = valueOrErrorMessage(assetInfo(fromBase58String(dn)), (("Asset " + dn) + " doesn't exist")).quantity
496- if ((dn != dl))
497- then throw("Invalid asset passed.")
498- else {
499- let ds = bJ(do)
500- let dt = D(ds, cS)
501- let du = bJ(dp)
502- let dv = D(du, cT)
503- let dw = bM(dv, dt)
504- let dx = H(dw, b)
505- let dy = D(dm, b)
506- let dz = D(dr, b)
507- let dA = fraction(dt, dy, dz)
508- let dB = fraction(dv, dy, dz)
509- let dC = K(dA, cS, FLOOR)
510- let dD = K(dB, cT, FLOOR)
511- let dE = if ((dk == ""))
512- then nil
513- else [ScriptTransfer(ab, dC, if ((do == "WAVES"))
514- then unit
515- else fromBase58String(do)), ScriptTransfer(ab, dD, if ((dp == "WAVES"))
516- then unit
517- else fromBase58String(dp)), StringEntry(ad(toString(ab), dk), bF(dC, dD, dm, dx, height, lastBlock.timestamp)), IntegerEntry(W(), dx), IntegerEntry(X(height, lastBlock.timestamp), dx)]
518- $Tuple10(dC, dD, do, dp, ds, du, dr, dw, dq, dE)
519- }
520- }
521-
522-
523-func dF (dk,dG,dH,dI,dJ,dK,ab,dL,dM) = {
524- let da = ba()
525- let dn = fromBase58String(da[q])
526- let dN = da[r]
527- let dO = da[s]
528- let dP = da[v]
529- let dQ = da[w]
530- let db = parseIntValue(da[t])
531- let dc = parseIntValue(da[u])
532- let dq = da[p]
533- let dr = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
534- let dR = toBase58String(valueOrElse(dI, fromBase58String("WAVES")))
535- let dS = toBase58String(valueOrElse(dK, fromBase58String("WAVES")))
536- if (if ((dN != dR))
537- then true
538- else (dO != dS))
539- then throw("Invalid amt or price asset passed.")
540- else {
541- let ds = if (dL)
542- then bJ(dN)
543- else (bJ(dN) - dH)
544- let du = if (dL)
545- then bJ(dO)
546- else (bJ(dO) - dJ)
547- let dT = D(dH, db)
548- let dU = D(dJ, dc)
549- let dV = bM(dU, dT)
550- let dt = D(ds, db)
551- let dv = D(du, dc)
552- let dW = if ((dr == 0))
553- then {
554- let dw = e
555- let dX = e
556- let de = pow((dT * dU), 0, toBigInt(5), 1, 0, DOWN)
557- $Tuple5(H(de, b), H(dT, db), H(dU, dc), bM((dv + dU), (dt + dT)), dX)
558- }
559- else {
560- let dw = bM(dv, dt)
561- let dX = fraction(R((dw - dV)), d, dw)
562- let dY = D(dG, b)
563- if (if ((dw != e))
564- then (dX > dY)
565- else false)
566- then throw(((("Price slippage " + toString(dX)) + " exceeded the passed limit of ") + toString(dY)))
567- else {
568- let dz = D(dr, b)
569- let dZ = fraction(dT, bP(dv, dt, CEILING), d, CEILING)
570- let ea = fraction(dU, d, bP(dv, dt, FLOOR), CEILING)
571- let eb = if ((dZ > dU))
572- then $Tuple2(ea, dU)
573- else $Tuple2(dT, dZ)
574- let ec = eb._1
575- let ed = eb._2
576- let de = fraction(dz, ed, dv, FLOOR)
577- $Tuple5(K(de, b, FLOOR), K(ec, db, CEILING), K(ed, dc, CEILING), dw, dX)
578- }
579- }
580- let ee = dW._1
581- let ef = dW._2
582- let eg = dW._3
583- let dx = H(dW._4, b)
584- let eh = H(dW._5, b)
585- if ((0 >= ee))
586- then throw("Invalid calculations. LP calculated is less than zero.")
587- else {
588- let ei = if (!(dM))
589- then 0
590- else ee
591- let ej = (dH - ef)
592- let ek = (dJ - eg)
593- let el = [IntegerEntry(W(), dx), IntegerEntry(X(height, lastBlock.timestamp), dx), StringEntry(aa(ab, dk), bu(ef, eg, ei, dx, dG, eh, height, lastBlock.timestamp, ej, ek))]
594- $Tuple13(ee, ei, dx, ds, du, dr, dn, dq, el, ej, ek, dI, dK)
595- }
596- }
597- }
598-
599-
600-func em (en,eo,dr) = {
601- let ep = G(en, toBigInt(bp))
602- let eq = G(eo, toBigInt(bq))
603- let er = fraction(pow((ep * eq), 0, toBigInt(5), 1, 18, DOWN), g, dr)
604- if ((dr == f))
605- then f
606- else er
607- }
608-
609-
610-func es (et,eu,ev) = {
611- let ew = (toBigInt(bJ(bf(bn))) - et)
612- let ex = (toBigInt(bJ(bf(bo))) - eu)
613- let ey = (toBigInt(value(assetInfo(bm)).quantity) - ev)
614- let ez = em(ew, ex, ey)
615- ez
616- }
617-
618-
619-func eA (eB,eC,ev) = {
620- let ew = (bJ(bf(bn)) + eB)
621- let ex = (bJ(bf(bo)) + eC)
622- let ey = (value(assetInfo(bm)).quantity + ev)
623- let er = em(toBigInt(ew), toBigInt(ex), toBigInt(ey))
624- let eD = [IntegerEntry(ak, height), StringEntry(aj, toString(er))]
625- $Tuple2(eD, er)
626- }
627-
628-
629-func eE (eF,er) = if ((er >= eF))
630- then true
631- else aQ(makeString(["updated KLp lower than current KLp", toString(eF), toString(er)], " "))
632-
633-
634-func eG (eH) = {
635- let ew = bJ(bf(bn))
636- let ex = bJ(bf(bo))
637- let eI = eH.amount
638- let eJ = fraction(eH.amount, eH.price, b, FLOOR)
639- let eK = if ((eH.orderType == Buy))
640- then $Tuple2(eI, -(eJ))
641- else $Tuple2(-(eI), eJ)
642- let eB = eK._1
643- let eC = eK._2
644- if (if (if (aY())
645- then true
646- else (bl == m))
647- then true
648- else (bl == n))
649- then throw("Exchange operations disabled")
650- else if (if ((eH.assetPair.amountAsset != bn))
651- then true
652- else (eH.assetPair.priceAsset != bo))
653- then throw("Wrong order assets.")
654- else {
655- let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
656- let eM = eA(eB, eC, 0)
657- let eN = eM._1
658- let eO = eM._2
659- let eP = (eO >= eL)
660- let eQ = makeString(["kLp=", toString(eL), " kLpNew=", toString(eO), " amountAssetBalance=", toString(ew), " priceAssetBalance=", toString(ex), " amountAssetBalanceDelta=", toString(eB), " priceAssetBalanceDelta=", toString(eC), " height=", toString(height)], "")
661- $Tuple2(eP, eQ)
662- }
663- }
664-
665-
666-func eR (eS) = if ((size(eS.payments) != 1))
667- then throw("exactly 1 payment is expected")
668- else {
669- let eT = value(eS.payments[0])
670- let dl = value(eT.assetId)
671- let eU = eT.amount
672- let dW = dj(toBase58String(eS.transactionId), toBase58String(dl), eU, eS.caller)
673- let dC = dW._1
674- let dD = dW._2
675- let dq = parseIntValue(dW._9)
676- let dE = dW._10
677- if (if (aY())
678- then true
679- else (dq == n))
680- then throw(("Get operation is blocked by admin. Status = " + toString(dq)))
681- else $Tuple5(dC, dD, eU, dl, dE)
682- }
683-
684-
685-func eV (eS,dG,dM) = if ((size(eS.payments) != 2))
686- then throw("exactly 2 payments are expected")
687- else {
688- let eW = value(eS.payments[0])
689- let eX = value(eS.payments[1])
690- let eY = dF(toBase58String(eS.transactionId), dG, eW.amount, eW.assetId, eX.amount, eX.assetId, toString(eS.caller), false, dM)
691- let dq = parseIntValue(eY._8)
692- if (if (if (aY())
693- then true
694- else (dq == l))
695- then true
696- else (dq == n))
697- then throw(("Put operation is blocked by admin. Status = " + toString(dq)))
698- else eY
699- }
700-
701-
702-func eZ (bW) = {
703- let fa = invoke(aT, "emit", [bW], nil)
704- if ((fa == fa))
705- then {
706- let fb = {
707- let bT = fa
708- if ($isInstanceOf(bT, "Address"))
709- then {
710- let fc = bT
711- invoke(fc, "emit", [bW], nil)
712- }
713- else unit
714- }
715- if ((fb == fb))
716- then bW
717- else throw("Strict value is not equal to itself.")
718- }
719- else throw("Strict value is not equal to itself.")
720- }
721-
722-
723-func fd (bW,ai) = {
724- let fe = if ((ai == 0))
725- then 0
726- else fraction(bW, ai, b)
727- $Tuple2((bW - fe), fe)
728- }
729-
730-
731-func ff (fg,fh,ab,ac) = {
732- let fi = (ac == unit)
733- let fj = bJ(bf(bn))
734- let fk = bJ(bf(bo))
735- let fl = if ((fh == bn))
736- then true
737- else if ((fh == bo))
738- then false
739- else aQ("invalid asset")
740- let fm = if (fi)
741- then $Tuple2(fj, fk)
742- else if (fl)
743- then $Tuple2((fj - fg), fk)
744- else $Tuple2(fj, (fk - fg))
745- let fn = fm._1
746- let fo = fm._2
747- let fp = if (fl)
748- then $Tuple2(fg, 0)
749- else $Tuple2(0, fg)
750- let fq = fp._1
751- let fr = fp._2
752- let eI = fd(fq, aV)._1
753- let eJ = fd(fr, aV)._1
754- let fs = fd(fg, aV)
755- let ft = fs._1
756- let fe = fs._2
757- let fu = (fn + eI)
758- let fv = (fo + eJ)
759- let fw = bM(D(fv, bq), D(fu, bp))
760- let fx = H(fw, b)
761- let fy = if (fl)
762- then fn
763- else fo
764- let fz = toBigInt(fy)
765- let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
766- let fB = if ((fA > f))
767- then true
768- else aQ("initial deposit requires all coins")
769- if ((fB == fB))
770- then {
771- let fC = toBigInt(ft)
772- let fD = max([0, toInt(((fA * (sqrtBigInt((d + ((fC * d) / fz)), 18, 18, DOWN) - d)) / d))])
773- let el = if (fi)
774- then nil
775- else [IntegerEntry(W(), fx), IntegerEntry(X(height, lastBlock.timestamp), fx), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bu(fq, fr, fD, fx, 0, 0, height, lastBlock.timestamp, 0, 0))]
776- let fE = bM(D(fo, bq), D(fn, bp))
777- let fF = H(fE, b)
778- let fG = {
779- let fH = if (fl)
780- then $Tuple2(fq, fn)
781- else $Tuple2(fr, fo)
782- let bW = fH._1
783- let fI = fH._2
784- let fJ = toInt(fraction(fA, toBigInt((bW / 2)), toBigInt(fI)))
785- fraction((fD - fJ), b, fJ)
786- }
787- $Tuple5(fD, el, fe, fG, fl)
788- }
789- else throw("Strict value is not equal to itself.")
790- }
791-
792-
793-func fK (fL,ft,fh,ab,ac) = {
794- let fi = (ac == unit)
795- let da = ba()
796- let db = parseIntValue(da[t])
797- let dc = parseIntValue(da[u])
798- let fM = [if ((fh == bm))
799- then true
800- else aQ("invalid lp asset")]
801- if ((fM == fM))
802- then {
803- let fN = if ((fL == bn))
804- then true
805- else if ((fL == bo))
806- then false
807- else aQ("invalid asset")
808- let fO = if (fN)
809- then toBigInt(bJ(bf(bn)))
810- else toBigInt(bJ(bf(bo)))
811- let fP = if (fN)
812- then db
813- else dc
814- let fQ = bJ(bf(bn))
815- let fR = bJ(bf(bo))
816- let fS = if (fN)
817- then fQ
818- else fR
819- let fT = toBigInt(fS)
820- let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
821- let fU = toBigInt(ft)
822- let fV = max([0, toInt(((fO * (d - pow((d - ((fU * d) / fA)), 18, h, 0, 18, DOWN))) / d))])
823- let fW = fd(fV, aX)
824- let fX = fW._1
825- let fe = fW._2
826- let fY = if (fN)
827- then $Tuple4(fX, 0, (fQ - fV), fR)
828- else $Tuple4(0, fX, fQ, (fR - fV))
829- let fZ = fY._1
830- let ga = fY._2
831- let gb = fY._3
832- let gc = fY._4
833- let fw = bM(D(gc, bq), D(gb, bp))
834- let fx = H(fw, b)
835- let el = if (fi)
836- then nil
837- else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bF(fZ, ga, ft, fx, height, lastBlock.timestamp)), IntegerEntry(W(), fx), IntegerEntry(X(height, lastBlock.timestamp), fx)]
838- let fE = bM(D(fR, bq), D(fQ, bp))
839- let fF = H(fE, b)
840- let fG = {
841- let gd = (toInt(fraction(fO, fU, fA)) * 2)
842- fraction((fX - gd), b, gd)
843- }
844- $Tuple5(fX, el, fe, fG, fN)
845- }
846- else throw("Strict value is not equal to itself.")
847- }
848-
849-
850-func ge () = {
851- let bT = getString(U())
852- if ($isInstanceOf(bT, "String"))
853- then {
854- let gf = bT
855- fromBase58String(gf)
856- }
857- else if ($isInstanceOf(bT, "Unit"))
659+ else if ($isInstanceOf(dW, "Unit"))
858660 then unit
859661 else throw("Match error")
860662 }
861663
862664
863-func gg () = {
864- let bT = getString(V())
865- if ($isInstanceOf(bT, "String"))
665+func fb () = {
666+ let dW = getString(V())
667+ if ($isInstanceOf(dW, "String"))
866668 then {
867- let gf = bT
868- fromBase58String(gf)
669+ let fa = dW
670+ fromBase58String(fa)
869671 }
870- else if ($isInstanceOf(bT, "Unit"))
672+ else if ($isInstanceOf(dW, "Unit"))
871673 then unit
872674 else throw("Match error")
873675 }
874676
875677
876-func gh (eS) = {
877- let bT = ge()
878- if ($isInstanceOf(bT, "ByteVector"))
678+func fc (dL) = {
679+ let dW = eZ()
680+ if ($isInstanceOf(dW, "ByteVector"))
879681 then {
880- let gi = bT
881- (eS.callerPublicKey == gi)
682+ let fd = dW
683+ (dL.callerPublicKey == fd)
882684 }
883- else if ($isInstanceOf(bT, "Unit"))
884- then (eS.caller == this)
685+ else if ($isInstanceOf(dW, "Unit"))
686+ then (dL.caller == this)
885687 else throw("Match error")
886688 }
887689
888690
889-func gj (eS) = {
890- let gk = throw("Permission denied")
891- let bT = ge()
892- if ($isInstanceOf(bT, "ByteVector"))
691+func fe (dL) = {
692+ let ff = throw("Permission denied")
693+ let dW = eZ()
694+ if ($isInstanceOf(dW, "ByteVector"))
893695 then {
894- let gi = bT
895- if ((eS.callerPublicKey == gi))
696+ let fd = dW
697+ if ((dL.callerPublicKey == fd))
896698 then true
897- else gk
699+ else ff
898700 }
899- else if ($isInstanceOf(bT, "Unit"))
900- then if ((eS.caller == this))
701+ else if ($isInstanceOf(dW, "Unit"))
702+ then if ((dL.caller == this))
901703 then true
902- else gk
704+ else ff
903705 else throw("Match error")
904706 }
905707
906708
907-@Callable(eS)
908-func rebalance () = (cA(aM(this, ae())) ++ cA(aM(this, af())))
909-
910-
911-
912-@Callable(eS)
913-func calculateAmountOutForSwapREADONLY (gl,gm,gn) = {
914- let go = if ((gm == false))
709+@Callable(dL)
710+func calculateAmountOutForSwapREADONLY (fg,fh,fi) = {
711+ let fj = if ((fh == false))
915712 then {
916- let gp = aM(this, af())
917- let gq = aM(this, ae())
918- $Tuple2(gp, gq)
713+ let fk = aH(this, af())
714+ let fl = aH(this, ae())
715+ $Tuple2(fk, fl)
919716 }
920717 else {
921- let gp = aM(this, ae())
922- let gq = aM(this, af())
923- $Tuple2(gp, gq)
718+ let fk = aH(this, ae())
719+ let fl = aH(this, af())
720+ $Tuple2(fk, fl)
924721 }
925- let gp = go._1
926- let gq = go._2
927- let gr = bJ(gq)
928- let gs = bJ(gp)
929- let gt = fraction(gs, gl, (gr + gl))
930- let gu = (toBigInt(gr) * toBigInt(gs))
931- let gv = (((toBigInt(bJ(gq)) + toBigInt(gl)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
932- let gw = if ((gv >= gu))
722+ let fk = fj._1
723+ let fl = fj._2
724+ let fm = bE(fl)
725+ let fn = bE(fk)
726+ let fo = fraction(fn, fg, (fm + fg))
727+ let fp = (toBigInt(fm) * toBigInt(fn))
728+ let fq = (((toBigInt(bE(fl)) + toBigInt(fg)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
729+ let fr = if ((fq >= fp))
933730 then true
934731 else throw("new K is fewer error")
935- if ((gw == gw))
936- then $Tuple2(nil, gt)
732+ if ((fr == fr))
733+ then $Tuple2(nil, fo)
937734 else throw("Strict value is not equal to itself.")
938735 }
939736
940737
941738
942-@Callable(eS)
943-func calculateAmountOutForSwapAndSendTokens (gl,gm,gx,gy,gn) = {
944- let gz = {
945- let aW = invoke(aT, "getSwapContractREADONLY", nil, nil)
946- if ($isInstanceOf(aW, "String"))
947- then aW
948- else throw(($getType(aW) + " couldn't be cast to String"))
739+@Callable(dL)
740+func calculateAmountOutForSwapAndSendTokens (fg,fh,fs,ft,fi) = {
741+ let fu = {
742+ let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743+ if ($isInstanceOf(aR, "String"))
744+ then aR
745+ else throw(($getType(aR) + " couldn't be cast to String"))
949746 }
950- let fM = [if ((value(eS.payments[0]).amount >= gl))
747+ let eH = [if ((value(dL.payments[0]).amount >= fg))
951748 then true
952- else aQ("Wrong amount"), if ((eS.caller == addressFromStringValue(gz)))
749+ else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(fu)))
953750 then true
954- else aQ("Permission denied")]
955- if ((fM == fM))
751+ else aL("Permission denied")]
752+ if ((eH == eH))
956753 then {
957- let eT = value(eS.payments[0])
958- let gq = bf(eT.assetId)
959- let gp = if ((gm == false))
960- then aM(this, af())
961- else aM(this, ae())
962- let gr = (bJ(gq) - value(eS.payments[0]).amount)
963- let gs = bJ(gp)
964- let gt = fraction(gs, gl, (gr + gl))
965- let gu = (toBigInt(gr) * toBigInt(gs))
966- let gv = ((toBigInt(bJ(gq)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
967- let gw = if ((gv >= gu))
754+ let dM = value(dL.payments[0])
755+ let fl = ba(dM.assetId)
756+ let fk = if ((fh == false))
757+ then aH(this, af())
758+ else aH(this, ae())
759+ let fm = (bE(fl) - value(dL.payments[0]).amount)
760+ let fn = bE(fk)
761+ let fo = fraction(fn, fg, (fm + fg))
762+ let fp = (toBigInt(fm) * toBigInt(fn))
763+ let fq = ((toBigInt(bE(fl)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
764+ let fr = if ((fq >= fp))
968765 then true
969766 else throw("new K is fewer error")
970- if ((gw == gw))
767+ if ((fr == fr))
971768 then {
972- let gA = if ((gt >= gx))
769+ let fv = if ((fo >= fs))
973770 then true
974771 else throw("Exchange result is fewer coins than expected")
975- if ((gA == gA))
976- then {
977- let gB = cA(gq)
978- if ((gB == gB))
979- then {
980- let gC = cH(gp, gt)
981- if ((gC == gC))
982- then $Tuple2(((gC ++ gB) ++ [ScriptTransfer(addressFromStringValue(gy), gt, bd(gp))]), gt)
983- else throw("Strict value is not equal to itself.")
984- }
985- else throw("Strict value is not equal to itself.")
986- }
772+ if ((fv == fv))
773+ then $Tuple2([ScriptTransfer(addressFromStringValue(ft), fo, aY(fk))], fo)
987774 else throw("Strict value is not equal to itself.")
988775 }
989776 else throw("Strict value is not equal to itself.")
993780
994781
995782
996-@Callable(eS)
997-func setManager (gD) = {
998- let gE = gj(eS)
999- if ((gE == gE))
783+@Callable(dL)
784+func setManager (fw) = {
785+ let fx = fe(dL)
786+ if ((fx == fx))
1000787 then {
1001- let gF = fromBase58String(gD)
1002- if ((gF == gF))
1003- then [StringEntry(V(), gD)]
788+ let fy = fromBase58String(fw)
789+ if ((fy == fy))
790+ then [StringEntry(V(), fw)]
1004791 else throw("Strict value is not equal to itself.")
1005792 }
1006793 else throw("Strict value is not equal to itself.")
1008795
1009796
1010797
1011-@Callable(eS)
798+@Callable(dL)
1012799 func confirmManager () = {
1013- let gG = gg()
1014- let gH = if (isDefined(gG))
800+ let fz = fb()
801+ let fA = if (isDefined(fz))
1015802 then true
1016803 else throw("No pending manager")
1017- if ((gH == gH))
804+ if ((fA == fA))
1018805 then {
1019- let gI = if ((eS.callerPublicKey == value(gG)))
806+ let fB = if ((dL.callerPublicKey == value(fz)))
1020807 then true
1021808 else throw("You are not pending manager")
1022- if ((gI == gI))
1023- then [StringEntry(U(), toBase58String(value(gG))), DeleteEntry(V())]
809+ if ((fB == fB))
810+ then [StringEntry(U(), toBase58String(value(fz))), DeleteEntry(V())]
1024811 else throw("Strict value is not equal to itself.")
1025812 }
1026813 else throw("Strict value is not equal to itself.")
1028815
1029816
1030817
1031-@Callable(eS)
1032-func put (dG,gJ) = if ((0 > dG))
818+@Callable(dL)
819+func put (cz,fC) = if ((0 > cz))
1033820 then throw("Invalid slippageTolerance passed")
1034821 else {
1035- let eY = eV(eS, dG, true)
1036- let ei = eY._2
1037- let dn = eY._7
1038- let dE = eY._9
1039- let ej = eY._10
1040- let ek = eY._11
1041- let gK = eY._12
1042- let gL = eY._13
1043- let eW = toBigInt(value(eS.payments[0]).amount)
1044- let eX = toBigInt(value(eS.payments[1]).amount)
1045- let ez = es(eW, eX, toBigInt(0))
1046- if ((ez == ez))
822+ let dR = dO(dL, cz, true)
823+ let db = dR._2
824+ let cg = dR._7
825+ let cx = dR._9
826+ let dc = dR._10
827+ let dd = dR._11
828+ let fD = dR._12
829+ let fE = dR._13
830+ let dP = toBigInt(value(dL.payments[0]).amount)
831+ let dQ = toBigInt(value(dL.payments[1]).amount)
832+ let ds = dl(dP, dQ, toBigInt(0))
833+ if ((ds == ds))
1047834 then {
1048- let fa = invoke(aT, "emit", [ei], nil)
1049- if ((fa == fa))
835+ let dU = invoke(aO, "emit", [db], nil)
836+ if ((dU == dU))
1050837 then {
1051- let fb = {
1052- let bT = fa
1053- if ($isInstanceOf(bT, "Address"))
838+ let dV = {
839+ let dW = dU
840+ if ($isInstanceOf(dW, "Address"))
1054841 then {
1055- let fc = bT
1056- invoke(fc, "emit", [ei], nil)
842+ let dX = dW
843+ invoke(dX, "emit", [db], nil)
1057844 }
1058845 else unit
1059846 }
1060- if ((fb == fb))
847+ if ((dV == dV))
1061848 then {
1062- let gM = if ((ej > 0))
1063- then invoke(bt, "put", nil, [AttachedPayment(gK, ej)])
849+ let fF = if ((dc > 0))
850+ then invoke(bo, "put", nil, [AttachedPayment(fD, dc)])
1064851 else nil
1065- if ((gM == gM))
852+ if ((fF == fF))
1066853 then {
1067- let gN = if ((ek > 0))
1068- then invoke(bt, "put", nil, [AttachedPayment(gL, ek)])
854+ let fG = if ((dd > 0))
855+ then invoke(bo, "put", nil, [AttachedPayment(fE, dd)])
1069856 else nil
1070- if ((gN == gN))
857+ if ((fG == fG))
1071858 then {
1072- let gO = if (gJ)
859+ let fH = if (fC)
1073860 then {
1074- let gP = invoke(bs, "stake", nil, [AttachedPayment(dn, ei)])
1075- if ((gP == gP))
861+ let fI = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862+ if ((fI == fI))
1076863 then nil
1077864 else throw("Strict value is not equal to itself.")
1078865 }
1079- else [ScriptTransfer(eS.caller, ei, dn)]
1080- let gQ = eA(0, 0, 0)
1081- if ((gQ == gQ))
866+ else [ScriptTransfer(dL.caller, db, cg)]
867+ let fJ = dt(0, 0, 0)
868+ if ((fJ == fJ))
1082869 then {
1083- let er = gQ._2
1084- let gR = gQ._1
1085- let gS = eE(ez, er)
1086- if ((gS == gS))
1087- then {
1088- let gT = invoke(this, "rebalance", nil, nil)
1089- if ((gT == gT))
1090- then ((dE ++ gO) ++ gR)
1091- else throw("Strict value is not equal to itself.")
1092- }
870+ let dk = fJ._2
871+ let fK = fJ._1
872+ let fL = dx(ds, dk)
873+ if ((fL == fL))
874+ then ((cx ++ fH) ++ fK)
1093875 else throw("Strict value is not equal to itself.")
1094876 }
1095877 else throw("Strict value is not equal to itself.")
1107889
1108890
1109891
1110-@Callable(eS)
1111-func putForFree (gU) = if ((0 > gU))
892+@Callable(dL)
893+func putForFree (fM) = if ((0 > fM))
1112894 then throw("Invalid value passed")
1113895 else {
1114- let eY = eV(eS, gU, false)
1115- let dE = eY._9
1116- let eW = toBigInt(value(eS.payments[0]).amount)
1117- let eX = toBigInt(value(eS.payments[1]).amount)
1118- let ez = es(eW, eX, toBigInt(0))
1119- if ((ez == ez))
896+ let dR = dO(dL, fM, false)
897+ let cx = dR._9
898+ let dP = toBigInt(value(dL.payments[0]).amount)
899+ let dQ = toBigInt(value(dL.payments[1]).amount)
900+ let ds = dl(dP, dQ, toBigInt(0))
901+ if ((ds == ds))
1120902 then {
1121- let gV = eA(0, 0, 0)
1122- let gR = gV._1
1123- let er = gV._2
1124- let gS = eE(ez, er)
1125- if ((gS == gS))
1126- then (dE ++ gR)
903+ let fN = dt(0, 0, 0)
904+ let fK = fN._1
905+ let dk = fN._2
906+ let fL = dx(ds, dk)
907+ if ((fL == fL))
908+ then (cx ++ fK)
1127909 else throw("Strict value is not equal to itself.")
1128910 }
1129911 else throw("Strict value is not equal to itself.")
1131913
1132914
1133915
1134-@Callable(eS)
1135-func putOneTkn (gW,gX) = {
1136- let gY = {
1137- let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1138- if ($isInstanceOf(aW, "Boolean"))
1139- then aW
1140- else throw(($getType(aW) + " couldn't be cast to Boolean"))
916+@Callable(dL)
917+func putOneTkn (fO,fP) = {
918+ let fQ = {
919+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
920+ if ($isInstanceOf(aR, "Boolean"))
921+ then aR
922+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
1141923 }
1142- let gZ = if (if (if (aY())
924+ let fR = if (if (if (aT())
1143925 then true
1144- else (bl == l))
926+ else (bg == l))
1145927 then true
1146- else (bl == n))
928+ else (bg == n))
1147929 then true
1148- else gY
1149- let fM = [if (if (!(gZ))
930+ else fQ
931+ let eH = [if (if (!(fR))
1150932 then true
1151- else gh(eS))
933+ else fc(dL))
1152934 then true
1153- else aQ("put operation is blocked by admin"), if ((size(eS.payments) == 1))
935+ else aL("put operation is blocked by admin"), if ((size(dL.payments) == 1))
1154936 then true
1155- else aQ("exactly 1 payment are expected")]
1156- if ((fM == fM))
937+ else aL("exactly 1 payment are expected")]
938+ if ((eH == eH))
1157939 then {
1158- let ha = eS.payments[0]
1159- let fh = ha.assetId
1160- let fg = ha.amount
1161- let ez = if ((fh == bn))
1162- then es(toBigInt(fg), toBigInt(0), toBigInt(0))
1163- else if ((fh == bo))
1164- then es(toBigInt(0), toBigInt(fg), toBigInt(0))
1165- else aQ("payment asset is not supported")
1166- if ((ez == ez))
940+ let fS = dL.payments[0]
941+ let ec = fS.assetId
942+ let eb = fS.amount
943+ let ds = if ((ec == bi))
944+ then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
945+ else if ((ec == bj))
946+ then dl(toBigInt(0), toBigInt(eb), toBigInt(0))
947+ else aL("payment asset is not supported")
948+ if ((ds == ds))
1167949 then {
1168- let ab = eS.caller
1169- let ac = eS.transactionId
1170- let hb = ff(fg, fh, ab, ac)
1171- if ((hb == hb))
950+ let ab = dL.caller
951+ let ac = dL.transactionId
952+ let fT = ea(eb, ec, ab, ac)
953+ if ((fT == fT))
1172954 then {
1173- let fl = hb._5
1174- let hc = hb._4
1175- let fe = hb._3
1176- let el = hb._2
1177- let hd = hb._1
1178- let he = if (if ((gW > 0))
1179- then (gW > hd)
955+ let eg = fT._5
956+ let fU = fT._4
957+ let dZ = fT._3
958+ let de = fT._2
959+ let fV = fT._1
960+ let fW = if (if ((fO > 0))
961+ then (fO > fV)
1180962 else false)
1181- then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1182- else hd
1183- let fa = eZ(he)
1184- if ((fa == fa))
963+ then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
964+ else fV
965+ let dU = dS(fW)
966+ if ((dU == dU))
1185967 then {
1186- let gO = if (gX)
968+ let fH = if (fP)
1187969 then {
1188- let hf = invoke(bs, "stake", nil, [AttachedPayment(bm, he)])
1189- if ((hf == hf))
970+ let fX = invoke(bn, "stake", nil, [AttachedPayment(bh, fW)])
971+ if ((fX == fX))
1190972 then nil
1191973 else throw("Strict value is not equal to itself.")
1192974 }
1193- else [ScriptTransfer(eS.caller, he, bm)]
1194- let hg = if ((fe > 0))
1195- then [ScriptTransfer(aU, fe, fh)]
975+ else [ScriptTransfer(dL.caller, fW, bh)]
976+ let fY = if ((dZ > 0))
977+ then [ScriptTransfer(aP, dZ, ec)]
1196978 else nil
1197- let hh = if ((this == aU))
979+ let fZ = if ((this == aP))
1198980 then $Tuple2(0, 0)
1199- else if (fl)
1200- then $Tuple2(-(fe), 0)
1201- else $Tuple2(0, -(fe))
1202- let eB = hh._1
1203- let eC = hh._2
1204- let hi = eA(eB, eC, 0)
1205- let gR = hi._1
1206- let er = hi._2
1207- let eL = value(getString(aj))
1208- let gS = eE(ez, er)
1209- if ((gS == gS))
981+ else if (eg)
982+ then $Tuple2(-(dZ), 0)
983+ else $Tuple2(0, -(dZ))
984+ let du = fZ._1
985+ let dv = fZ._2
986+ let ga = dt(du, dv, 0)
987+ let fK = ga._1
988+ let dk = ga._2
989+ let dE = value(getString(aj))
990+ let fL = dx(ds, dk)
991+ if ((fL == fL))
992+ then $Tuple2((((de ++ fH) ++ fY) ++ fK), fW)
993+ else throw("Strict value is not equal to itself.")
994+ }
995+ else throw("Strict value is not equal to itself.")
996+ }
997+ else throw("Strict value is not equal to itself.")
998+ }
999+ else throw("Strict value is not equal to itself.")
1000+ }
1001+ else throw("Strict value is not equal to itself.")
1002+ }
1003+
1004+
1005+
1006+@Callable(dL)
1007+func putOneTknREADONLY (ec,eb) = {
1008+ let gb = ea(eb, aY(ec), unit, unit)
1009+ let fV = gb._1
1010+ let de = gb._2
1011+ let dZ = gb._3
1012+ let fU = gb._4
1013+ let eg = gb._5
1014+ $Tuple2(nil, $Tuple3(fV, dZ, fU))
1015+ }
1016+
1017+
1018+
1019+@Callable(dL)
1020+func getOneTkn (gc,fO) = {
1021+ let fQ = {
1022+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1023+ if ($isInstanceOf(aR, "Boolean"))
1024+ then aR
1025+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
1026+ }
1027+ let gd = if (if (aT())
1028+ then true
1029+ else (bg == n))
1030+ then true
1031+ else fQ
1032+ let eH = [if (if (!(gd))
1033+ then true
1034+ else fc(dL))
1035+ then true
1036+ else aL("get operation is blocked by admin"), if ((size(dL.payments) == 1))
1037+ then true
1038+ else aL("exactly 1 payment are expected")]
1039+ if ((eH == eH))
1040+ then {
1041+ let eG = aY(gc)
1042+ let fS = dL.payments[0]
1043+ let ec = fS.assetId
1044+ let eo = fS.amount
1045+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1046+ if ((ds == ds))
1047+ then {
1048+ let ab = dL.caller
1049+ let ac = dL.transactionId
1050+ let ge = eF(eG, eo, ec, ab, ac)
1051+ if ((ge == ge))
1052+ then {
1053+ let eI = ge._5
1054+ let fU = ge._4
1055+ let dZ = ge._3
1056+ let de = ge._2
1057+ let gf = ge._1
1058+ let dT = if (if ((fO > 0))
1059+ then (fO > gf)
1060+ else false)
1061+ then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1062+ else gf
1063+ let gg = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064+ if ((gg == gg))
1065+ then {
1066+ let gh = [ScriptTransfer(ab, dT, eG)]
1067+ let fY = if ((dZ > 0))
1068+ then [ScriptTransfer(aP, dZ, eG)]
1069+ else nil
1070+ let gi = {
1071+ let gj = if ((this == aP))
1072+ then 0
1073+ else dZ
1074+ if (eI)
1075+ then $Tuple2(-((dT + gj)), 0)
1076+ else $Tuple2(0, -((dT + gj)))
1077+ }
1078+ let du = gi._1
1079+ let dv = gi._2
1080+ let gk = dt(du, dv, 0)
1081+ let fK = gk._1
1082+ let dk = gk._2
1083+ let fL = dx(ds, dk)
1084+ if ((fL == fL))
1085+ then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
1086+ else throw("Strict value is not equal to itself.")
1087+ }
1088+ else throw("Strict value is not equal to itself.")
1089+ }
1090+ else throw("Strict value is not equal to itself.")
1091+ }
1092+ else throw("Strict value is not equal to itself.")
1093+ }
1094+ else throw("Strict value is not equal to itself.")
1095+ }
1096+
1097+
1098+
1099+@Callable(dL)
1100+func getOneTknREADONLY (eG,eo) = {
1101+ let gl = eF(aY(eG), eo, bh, unit, unit)
1102+ let gf = gl._1
1103+ let de = gl._2
1104+ let dZ = gl._3
1105+ let fU = gl._4
1106+ let eI = gl._5
1107+ $Tuple2(nil, $Tuple3(gf, dZ, fU))
1108+ }
1109+
1110+
1111+
1112+@Callable(dL)
1113+func unstakeAndGetOneTkn (gm,gc,fO) = {
1114+ let fQ = {
1115+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1116+ if ($isInstanceOf(aR, "Boolean"))
1117+ then aR
1118+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
1119+ }
1120+ let gd = if (if (aT())
1121+ then true
1122+ else (bg == n))
1123+ then true
1124+ else fQ
1125+ let eH = [if (if (!(gd))
1126+ then true
1127+ else fc(dL))
1128+ then true
1129+ else aL("get operation is blocked by admin"), if ((size(dL.payments) == 0))
1130+ then true
1131+ else aL("no payments are expected")]
1132+ if ((eH == eH))
1133+ then {
1134+ let eG = aY(gc)
1135+ let ab = dL.caller
1136+ let ac = dL.transactionId
1137+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1138+ if ((ds == ds))
1139+ then {
1140+ let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1141+ if ((gn == gn))
1142+ then {
1143+ let go = eF(eG, gm, bh, ab, ac)
1144+ if ((go == go))
1145+ then {
1146+ let eI = go._5
1147+ let fU = go._4
1148+ let dZ = go._3
1149+ let de = go._2
1150+ let gf = go._1
1151+ let dT = if (if ((fO > 0))
1152+ then (fO > gf)
1153+ else false)
1154+ then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1155+ else gf
1156+ let gg = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1157+ if ((gg == gg))
12101158 then {
1211- let gT = invoke(this, "rebalance", nil, nil)
1212- if ((gT == gT))
1213- then $Tuple2((((el ++ gO) ++ hg) ++ gR), he)
1159+ let gh = [ScriptTransfer(dL.caller, dT, eG)]
1160+ let fY = if ((dZ > 0))
1161+ then [ScriptTransfer(aP, dZ, eG)]
1162+ else nil
1163+ let gp = {
1164+ let gj = if ((this == aP))
1165+ then 0
1166+ else dZ
1167+ if (eI)
1168+ then $Tuple2(-((dT + gj)), 0)
1169+ else $Tuple2(0, -((dT + gj)))
1170+ }
1171+ let du = gp._1
1172+ let dv = gp._2
1173+ let gq = dt(du, dv, 0)
1174+ let fK = gq._1
1175+ let dk = gq._2
1176+ let fL = dx(ds, dk)
1177+ if ((fL == fL))
1178+ then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
12141179 else throw("Strict value is not equal to itself.")
12151180 }
12161181 else throw("Strict value is not equal to itself.")
12261191
12271192
12281193
1229-@Callable(eS)
1230-func putOneTknREADONLY (fh,fg) = {
1231- let hj = ff(fg, bd(fh), unit, unit)
1232- let hd = hj._1
1233- let el = hj._2
1234- let fe = hj._3
1235- let hc = hj._4
1236- let fl = hj._5
1237- $Tuple2(nil, $Tuple3(hd, fe, hc))
1238- }
1239-
1240-
1241-
1242-@Callable(eS)
1243-func getOneTkn (hk,gW) = {
1244- let gY = {
1245- let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1246- if ($isInstanceOf(aW, "Boolean"))
1247- then aW
1248- else throw(($getType(aW) + " couldn't be cast to Boolean"))
1249- }
1250- let hl = if (if (aY())
1251- then true
1252- else (bl == n))
1253- then true
1254- else gY
1255- let fM = [if (if (!(hl))
1256- then true
1257- else gh(eS))
1258- then true
1259- else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 1))
1260- then true
1261- else aQ("exactly 1 payment are expected")]
1262- if ((fM == fM))
1194+@Callable(dL)
1195+func get () = {
1196+ let cP = dK(dL)
1197+ let gr = cP._1
1198+ let cw = cP._2
1199+ let dN = cP._3
1200+ let ce = cP._4
1201+ let cx = cP._5
1202+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1203+ if ((ds == ds))
12631204 then {
1264- let fL = bd(hk)
1265- let ha = eS.payments[0]
1266- let fh = ha.assetId
1267- let ft = ha.amount
1268- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1269- if ((ez == ez))
1205+ let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206+ if ((gs == gs))
12701207 then {
1271- let ab = eS.caller
1272- let ac = eS.transactionId
1273- let hm = fK(fL, ft, fh, ab, ac)
1274- if ((hm == hm))
1275- then {
1276- let fN = hm._5
1277- let hc = hm._4
1278- let fe = hm._3
1279- let el = hm._2
1280- let hn = hm._1
1281- let bW = if (if ((gW > 0))
1282- then (gW > hn)
1283- else false)
1284- then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1285- else hn
1286- let ho = invoke(aT, "burn", [ft], [AttachedPayment(fh, ft)])
1287- if ((ho == ho))
1288- then {
1289- let gC = cH(hk, bW)
1290- let hp = [ScriptTransfer(ab, bW, fL)]
1291- let hg = if ((fe > 0))
1292- then [ScriptTransfer(aU, fe, fL)]
1293- else nil
1294- let hq = {
1295- let hr = if ((this == aU))
1296- then 0
1297- else fe
1298- if (fN)
1299- then $Tuple2(-((bW + hr)), 0)
1300- else $Tuple2(0, -((bW + hr)))
1301- }
1302- let eB = hq._1
1303- let eC = hq._2
1304- let hs = eA(eB, eC, 0)
1305- let gR = hs._1
1306- let er = hs._2
1307- let gS = eE(ez, er)
1308- if ((gS == gS))
1309- then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
1310- else throw("Strict value is not equal to itself.")
1311- }
1312- else throw("Strict value is not equal to itself.")
1313- }
1208+ let gt = dt(-(gr), -(cw), 0)
1209+ let fK = gt._1
1210+ let dk = gt._2
1211+ let fL = dx(ds, dk)
1212+ if ((fL == fL))
1213+ then (cx ++ fK)
13141214 else throw("Strict value is not equal to itself.")
13151215 }
13161216 else throw("Strict value is not equal to itself.")
13201220
13211221
13221222
1323-@Callable(eS)
1324-func getOneTknREADONLY (fL,ft) = {
1325- let ht = fK(bd(fL), ft, bm, unit, unit)
1326- let hn = ht._1
1327- let el = ht._2
1328- let fe = ht._3
1329- let hc = ht._4
1330- let fN = ht._5
1331- $Tuple2(nil, $Tuple3(hn, fe, hc))
1223+@Callable(dL)
1224+func getNoLess (gu,gv) = {
1225+ let cP = dK(dL)
1226+ let cv = cP._1
1227+ let cw = cP._2
1228+ let dN = cP._3
1229+ let ce = cP._4
1230+ let cx = cP._5
1231+ if ((gu > cv))
1232+ then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gu)))
1233+ else if ((gv > cw))
1234+ then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gv)))
1235+ else {
1236+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1237+ if ((ds == ds))
1238+ then {
1239+ let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240+ if ((gs == gs))
1241+ then {
1242+ let gw = dt(-(cv), -(cw), 0)
1243+ let fK = gw._1
1244+ let dk = gw._2
1245+ let fL = dx(ds, dk)
1246+ if ((fL == fL))
1247+ then (cx ++ fK)
1248+ else throw("Strict value is not equal to itself.")
1249+ }
1250+ else throw("Strict value is not equal to itself.")
1251+ }
1252+ else throw("Strict value is not equal to itself.")
1253+ }
13321254 }
13331255
13341256
13351257
1336-@Callable(eS)
1337-func unstakeAndGetOneTkn (hu,hk,gW) = {
1338- let gY = {
1339- let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1340- if ($isInstanceOf(aW, "Boolean"))
1341- then aW
1342- else throw(($getType(aW) + " couldn't be cast to Boolean"))
1343- }
1344- let hl = if (if (aY())
1345- then true
1346- else (bl == n))
1347- then true
1348- else gY
1349- let fM = [if (if (!(hl))
1350- then true
1351- else gh(eS))
1352- then true
1353- else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 0))
1354- then true
1355- else aQ("no payments are expected")]
1356- if ((fM == fM))
1258+@Callable(dL)
1259+func unstakeAndGet (dT) = {
1260+ let gx = if ((size(dL.payments) != 0))
1261+ then throw("No payments are expected")
1262+ else true
1263+ if ((gx == gx))
13571264 then {
1358- let fL = bd(hk)
1359- let ab = eS.caller
1360- let ac = eS.transactionId
1361- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1362- if ((ez == ez))
1265+ let bT = aV()
1266+ let cg = fromBase58String(bT[q])
1267+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1268+ if ((ds == ds))
13631269 then {
1364- let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1365- if ((hv == hv))
1270+ let gn = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271+ if ((gn == gn))
13661272 then {
1367- let hw = fK(fL, hu, bm, ab, ac)
1368- if ((hw == hw))
1273+ let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
1274+ let cv = cP._1
1275+ let cw = cP._2
1276+ let cj = parseIntValue(cP._9)
1277+ let cx = cP._10
1278+ let gy = if (if (aT())
1279+ then true
1280+ else (cj == n))
1281+ then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
1282+ else true
1283+ if ((gy == gy))
13691284 then {
1370- let fN = hw._5
1371- let hc = hw._4
1372- let fe = hw._3
1373- let el = hw._2
1374- let hn = hw._1
1375- let bW = if (if ((gW > 0))
1376- then (gW > hn)
1377- else false)
1378- then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1379- else hn
1380- let ho = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1381- if ((ho == ho))
1285+ let gs = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286+ if ((gs == gs))
13821287 then {
1383- let gC = cH(hk, bW)
1384- let hp = [ScriptTransfer(eS.caller, bW, fL)]
1385- let hg = if ((fe > 0))
1386- then [ScriptTransfer(aU, fe, fL)]
1387- else nil
1388- let hx = {
1389- let hr = if ((this == aU))
1390- then 0
1391- else fe
1392- if (fN)
1393- then $Tuple2(-((bW + hr)), 0)
1394- else $Tuple2(0, -((bW + hr)))
1395- }
1396- let eB = hx._1
1397- let eC = hx._2
1398- let hy = eA(eB, eC, 0)
1399- let gR = hy._1
1400- let er = hy._2
1401- let gS = eE(ez, er)
1402- if ((gS == gS))
1403- then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
1288+ let gz = dt(-(cv), -(cw), 0)
1289+ let fK = gz._1
1290+ let dk = gz._2
1291+ let fL = dx(ds, dk)
1292+ if ((fL == fL))
1293+ then (cx ++ fK)
14041294 else throw("Strict value is not equal to itself.")
14051295 }
14061296 else throw("Strict value is not equal to itself.")
14161306
14171307
14181308
1419-@Callable(eS)
1420-func get () = {
1421- let dW = eR(eS)
1422- let dC = dW._1
1423- let dD = dW._2
1424- let eU = dW._3
1425- let dl = dW._4
1426- let dE = dW._5
1427- let gC = cM(dC, dD)
1428- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1429- if ((ez == ez))
1309+@Callable(dL)
1310+func unstakeAndGetNoLess (gm,gA,gv) = {
1311+ let gd = if (aT())
1312+ then true
1313+ else (bg == n)
1314+ let eH = [if (!(gd))
1315+ then true
1316+ else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
1317+ then true
1318+ else throw("no payments are expected")]
1319+ if ((eH == eH))
14301320 then {
1431- let hz = invoke(aT, "burn", [eU], [AttachedPayment(dl, eU)])
1432- if ((hz == hz))
1321+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1322+ if ((ds == ds))
14331323 then {
1434- let hA = eA(-(dC), -(dD), 0)
1435- let gR = hA._1
1436- let er = hA._2
1437- let gS = eE(ez, er)
1438- if ((gS == gS))
1439- then ((gC ++ dE) ++ gR)
1440- else throw("Strict value is not equal to itself.")
1441- }
1442- else throw("Strict value is not equal to itself.")
1443- }
1444- else throw("Strict value is not equal to itself.")
1445- }
1446-
1447-
1448-
1449-@Callable(eS)
1450-func getNoLess (hB,hC) = {
1451- let dW = eR(eS)
1452- let dC = dW._1
1453- let dD = dW._2
1454- let eU = dW._3
1455- let dl = dW._4
1456- let dE = dW._5
1457- if ((hB > dC))
1458- then throw(((("noLessThenAmtAsset failed: " + toString(dC)) + " < ") + toString(hB)))
1459- else if ((hC > dD))
1460- then throw(((("noLessThenPriceAsset failed: " + toString(dD)) + " < ") + toString(hC)))
1461- else {
1462- let gC = cM(dC, dD)
1463- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1464- if ((ez == ez))
1465- then {
1466- let hz = invoke(aT, "burn", [eU], [AttachedPayment(dl, eU)])
1467- if ((hz == hz))
1468- then {
1469- let hD = eA(-(dC), -(dD), 0)
1470- let gR = hD._1
1471- let er = hD._2
1472- let gS = eE(ez, er)
1473- if ((gS == gS))
1474- then ((gC ++ dE) ++ gR)
1475- else throw("Strict value is not equal to itself.")
1476- }
1477- else throw("Strict value is not equal to itself.")
1478- }
1479- else throw("Strict value is not equal to itself.")
1480- }
1481- }
1482-
1483-
1484-
1485-@Callable(eS)
1486-func unstakeAndGet (bW) = {
1487- let hE = if ((size(eS.payments) != 0))
1488- then throw("No payments are expected")
1489- else true
1490- if ((hE == hE))
1491- then {
1492- let da = ba()
1493- let dn = fromBase58String(da[q])
1494- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1495- if ((ez == ez))
1496- then {
1497- let hv = invoke(bs, "unstake", [toBase58String(dn), bW], nil)
1498- if ((hv == hv))
1324+ let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1325+ if ((gn == gn))
14991326 then {
1500- let dW = dj(toBase58String(eS.transactionId), toBase58String(dn), bW, eS.caller)
1501- let dC = dW._1
1502- let dD = dW._2
1503- let dq = parseIntValue(dW._9)
1504- let dE = dW._10
1505- let gC = cM(dC, dD)
1506- let hF = if (if (aY())
1327+ let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gm, dL.caller)
1328+ let cv = cP._1
1329+ let cw = cP._2
1330+ let cx = cP._10
1331+ let gB = [if ((cv >= gA))
15071332 then true
1508- else (dq == n))
1509- then throw(("Get operation is blocked by admin. Status = " + toString(dq)))
1510- else true
1511- if ((hF == hF))
1333+ else throw(makeString(["amount asset amount to receive is less than ", toString(gA)], "")), if ((cw >= gv))
1334+ then true
1335+ else throw(makeString(["price asset amount to receive is less than ", toString(gv)], ""))]
1336+ if ((gB == gB))
15121337 then {
1513- let hz = invoke(aT, "burn", [bW], [AttachedPayment(dn, bW)])
1514- if ((hz == hz))
1338+ let gs = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1339+ if ((gs == gs))
15151340 then {
1516- let hG = eA(-(dC), -(dD), 0)
1517- let gR = hG._1
1518- let er = hG._2
1519- let gS = eE(ez, er)
1520- if ((gS == gS))
1521- then ((gC ++ dE) ++ gR)
1341+ let gC = dt(-(cv), -(cw), 0)
1342+ let fK = gC._1
1343+ let dk = gC._2
1344+ let fL = dx(ds, dk)
1345+ if ((fL == fL))
1346+ then (cx ++ fK)
15221347 else throw("Strict value is not equal to itself.")
15231348 }
15241349 else throw("Strict value is not equal to itself.")
15341359
15351360
15361361
1537-@Callable(eS)
1538-func unstakeAndGetNoLess (hu,hH,hC) = {
1539- let hl = if (aY())
1540- then true
1541- else (bl == n)
1542- let fM = [if (!(hl))
1543- then true
1544- else throw("get operation is blocked by admin"), if ((size(eS.payments) == 0))
1545- then true
1546- else throw("no payments are expected")]
1547- if ((fM == fM))
1362+@Callable(dL)
1363+func activate (gD,gE) = if ((toString(dL.caller) != toString(aO)))
1364+ then throw("permissions denied")
1365+ else $Tuple2([StringEntry(ae(), gD), StringEntry(af(), gE)], "success")
1366+
1367+
1368+
1369+@Callable(dL)
1370+func refreshKLp () = {
1371+ let gF = valueOrElse(getInteger(ak), 0)
1372+ let gG = if (((height - gF) >= an))
1373+ then unit
1374+ else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1375+ if ((gG == gG))
15481376 then {
1549- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1550- if ((ez == ez))
1551- then {
1552- let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1553- if ((hv == hv))
1554- then {
1555- let dW = dj(toBase58String(eS.transactionId), toBase58String(bm), hu, eS.caller)
1556- let dC = dW._1
1557- let dD = dW._2
1558- let dE = dW._10
1559- let gC = cM(dC, dD)
1560- let hI = [if ((dC >= hH))
1561- then true
1562- else throw(makeString(["amount asset amount to receive is less than ", toString(hH)], "")), if ((dD >= hC))
1563- then true
1564- else throw(makeString(["price asset amount to receive is less than ", toString(hC)], ""))]
1565- if ((hI == hI))
1566- then {
1567- let hz = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1568- if ((hz == hz))
1569- then {
1570- let hJ = eA(-(dC), -(dD), 0)
1571- let gR = hJ._1
1572- let er = hJ._2
1573- let gS = eE(ez, er)
1574- if ((gS == gS))
1575- then ((gC ++ dE) ++ gR)
1576- else throw("Strict value is not equal to itself.")
1577- }
1578- else throw("Strict value is not equal to itself.")
1579- }
1580- else throw("Strict value is not equal to itself.")
1581- }
1582- else throw("Strict value is not equal to itself.")
1583- }
1584- else throw("Strict value is not equal to itself.")
1377+ let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
1378+ let gH = dt(0, 0, 0)
1379+ let gI = gH._1
1380+ let dk = gH._2
1381+ let dw = if ((dE != dk))
1382+ then gI
1383+ else aL("nothing to refresh")
1384+ $Tuple2(dw, toString(dk))
15851385 }
15861386 else throw("Strict value is not equal to itself.")
15871387 }
15881388
15891389
15901390
1591-@Callable(eS)
1592-func activate (hK,hL) = if ((toString(eS.caller) != toString(aT)))
1593- then throw("permissions denied")
1594- else $Tuple2([StringEntry(ae(), hK), StringEntry(af(), hL)], "success")
1391+@Callable(dL)
1392+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aV())
15951393
15961394
15971395
1598-@Callable(eS)
1599-func refreshKLp () = {
1600- let hM = valueOrElse(getInteger(ak), 0)
1601- let hN = if (((height - hM) >= an))
1602- then unit
1603- else aQ(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1604- if ((hN == hN))
1605- then {
1606- let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
1607- let hO = eA(0, 0, 0)
1608- let hP = hO._1
1609- let er = hO._2
1610- let eD = if ((eL != er))
1611- then hP
1612- else aQ("nothing to refresh")
1613- $Tuple2(eD, toString(er))
1614- }
1615- else throw("Strict value is not equal to itself.")
1396+@Callable(dL)
1397+func getAccBalanceWrapperREADONLY (bF) = $Tuple2(nil, bE(bF))
1398+
1399+
1400+
1401+@Callable(dL)
1402+func calcPricesWrapperREADONLY (bN,bO,bS) = {
1403+ let cb = bR(bN, bO, bS)
1404+ $Tuple2(nil, [toString(cb[0]), toString(cb[1]), toString(cb[2])])
16161405 }
16171406
16181407
16191408
1620-@Callable(eS)
1621-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ba())
1409+@Callable(dL)
1410+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16221411
16231412
16241413
1625-@Callable(eS)
1626-func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bJ(ap))
1414+@Callable(dL)
1415+func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
16271416
16281417
16291418
1630-@Callable(eS)
1631-func calcPricesWrapperREADONLY (cU,cV,cZ) = {
1632- let di = cY(cU, cV, cZ)
1633- $Tuple2(nil, [toString(di[0]), toString(di[1]), toString(di[2])])
1419+@Callable(dL)
1420+func calcPriceBigIntWrapperREADONLY (bH,bI) = $Tuple2(nil, toString(bG(parseBigIntValue(bH), parseBigIntValue(bI))))
1421+
1422+
1423+
1424+@Callable(dL)
1425+func estimatePutOperationWrapperREADONLY (cd,cz,cA,cB,cC,cD,ab,cE,cF) = $Tuple2(nil, cy(cd, cz, cA, cB, cC, cD, ab, cE, cF))
1426+
1427+
1428+
1429+@Callable(dL)
1430+func estimateGetOperationWrapperREADONLY (cd,ce,cf,ab) = {
1431+ let cP = cc(cd, ce, cf, addressFromStringValue(ab))
1432+ $Tuple2(nil, $Tuple10(cP._1, cP._2, cP._3, cP._4, cP._5, cP._6, cP._7, toString(cP._8), cP._9, cP._10))
16341433 }
16351434
16361435
16371436
1638-@Callable(eS)
1639-func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
1640-
1641-
1642-
1643-@Callable(eS)
1644-func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
1645-
1646-
1647-
1648-@Callable(eS)
1649-func calcPriceBigIntWrapperREADONLY (bN,bO) = $Tuple2(nil, toString(bM(parseBigIntValue(bN), parseBigIntValue(bO))))
1650-
1651-
1652-
1653-@Callable(eS)
1654-func estimatePutOperationWrapperREADONLY (dk,dG,dH,dI,dJ,dK,ab,dL,dM) = $Tuple2(nil, dF(dk, dG, dH, dI, dJ, dK, ab, dL, dM))
1655-
1656-
1657-
1658-@Callable(eS)
1659-func estimateGetOperationWrapperREADONLY (dk,dl,dm,ab) = {
1660- let dW = dj(dk, dl, dm, addressFromStringValue(ab))
1661- $Tuple2(nil, $Tuple10(dW._1, dW._2, dW._3, dW._4, dW._5, dW._6, dW._7, toString(dW._8), dW._9, dW._10))
1437+@Callable(dL)
1438+func statsREADONLY () = {
1439+ let bT = aV()
1440+ let cg = fromBase58String(bT[q])
1441+ let gJ = bT[r]
1442+ let gK = bT[s]
1443+ let cI = bT[v]
1444+ let cJ = bT[w]
1445+ let bU = parseIntValue(bT[t])
1446+ let bV = parseIntValue(bT[u])
1447+ let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1448+ let gM = bE(gJ)
1449+ let gN = bE(gK)
1450+ let gO = if ((gL == 0))
1451+ then [e, e, e]
1452+ else bR(gM, gN, gL)
1453+ let cq = 0
1454+ let gP = H(gO[1], b)
1455+ let gQ = H(gO[2], b)
1456+ let gR = value(getInteger(aO, ay(toString(this))))
1457+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gM), toString(gN), toString(gL), toString(cq), toString(gP), toString(gQ), toString(gR)], j))
16621458 }
16631459
16641460
16651461
1666-@Callable(eS)
1667-func statsREADONLY () = {
1668- let da = ba()
1669- let dn = fromBase58String(da[q])
1670- let hQ = da[r]
1671- let hR = da[s]
1672- let dP = da[v]
1673- let dQ = da[w]
1674- let db = parseIntValue(da[t])
1675- let dc = parseIntValue(da[u])
1676- let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1677- let hT = bJ(hQ)
1678- let hU = bJ(hR)
1679- let hV = if ((hS == 0))
1680- then [e, e, e]
1681- else cY(hT, hU, hS)
1682- let dx = 0
1683- let hW = H(hV[1], b)
1684- let hX = H(hV[2], b)
1685- let hY = value(getInteger(aT, aD(toString(this))))
1686- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hT), toString(hU), toString(hS), toString(dx), toString(hW), toString(hX), toString(hY)], j))
1462+@Callable(dL)
1463+func evaluatePutByAmountAssetREADONLY (cA) = {
1464+ let bT = aV()
1465+ let cg = fromBase58String(bT[q])
1466+ let cG = bT[r]
1467+ let ch = fromBase58String(cG)
1468+ let cH = bT[s]
1469+ let ci = fromBase58String(cH)
1470+ let bU = parseIntValue(bT[t])
1471+ let bV = parseIntValue(bT[u])
1472+ let cj = bT[p]
1473+ let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474+ let gM = bE(cG)
1475+ let gN = bE(cH)
1476+ let bP = D(gM, bU)
1477+ let bQ = D(gN, bV)
1478+ let cp = if ((gL == 0))
1479+ then e
1480+ else bG(bQ, bP)
1481+ let cM = D(cA, bU)
1482+ let cN = fraction(cM, cp, d)
1483+ let cC = H(cN, bV)
1484+ let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1485+ let cX = dR._1
1486+ let gS = dR._3
1487+ let cl = dR._4
1488+ let cn = dR._5
1489+ let ck = dR._6
1490+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
16871491 }
16881492
16891493
16901494
1691-@Callable(eS)
1692-func evaluatePutByAmountAssetREADONLY (dH) = {
1693- let da = ba()
1694- let dn = fromBase58String(da[q])
1695- let dN = da[r]
1696- let do = fromBase58String(dN)
1697- let dO = da[s]
1698- let dp = fromBase58String(dO)
1699- let db = parseIntValue(da[t])
1700- let dc = parseIntValue(da[u])
1701- let dq = da[p]
1702- let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1703- let hT = bJ(dN)
1704- let hU = bJ(dO)
1705- let cW = D(hT, db)
1706- let cX = D(hU, dc)
1707- let dw = if ((hS == 0))
1495+@Callable(dL)
1496+func evaluatePutByPriceAssetREADONLY (cC) = {
1497+ let bT = aV()
1498+ let cg = fromBase58String(bT[q])
1499+ let cG = bT[r]
1500+ let ch = fromBase58String(cG)
1501+ let cH = bT[s]
1502+ let ci = fromBase58String(cH)
1503+ let bU = parseIntValue(bT[t])
1504+ let bV = parseIntValue(bT[u])
1505+ let cj = bT[p]
1506+ let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507+ let gT = bE(cG)
1508+ let gU = bE(cH)
1509+ let gV = D(gT, bU)
1510+ let gW = D(gU, bV)
1511+ let cp = if ((gL == 0))
17081512 then e
1709- else bM(cX, cW)
1710- let dT = D(dH, db)
1711- let dU = fraction(dT, dw, d)
1712- let dJ = H(dU, dc)
1713- let eY = dF("", 500000, dH, do, dJ, dp, "", true, false)
1714- let ee = eY._1
1715- let hZ = eY._3
1716- let ds = eY._4
1717- let du = eY._5
1718- let dr = eY._6
1719- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(dw, b)), toString(ds), toString(du), toString(dr), dq, toString(dH), toString(dJ)], j))
1513+ else bG(gW, gV)
1514+ let cN = D(cC, bV)
1515+ let cM = fraction(cN, d, cp)
1516+ let cA = H(cM, bU)
1517+ let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1518+ let cX = dR._1
1519+ let gS = dR._3
1520+ let cl = dR._4
1521+ let cn = dR._5
1522+ let ck = dR._6
1523+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
17201524 }
17211525
17221526
17231527
1724-@Callable(eS)
1725-func evaluatePutByPriceAssetREADONLY (dJ) = {
1726- let da = ba()
1727- let dn = fromBase58String(da[q])
1728- let dN = da[r]
1729- let do = fromBase58String(dN)
1730- let dO = da[s]
1731- let dp = fromBase58String(dO)
1732- let db = parseIntValue(da[t])
1733- let dc = parseIntValue(da[u])
1734- let dq = da[p]
1735- let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1736- let ia = bJ(dN)
1737- let ib = bJ(dO)
1738- let ic = D(ia, db)
1739- let id = D(ib, dc)
1740- let dw = if ((hS == 0))
1741- then e
1742- else bM(id, ic)
1743- let dU = D(dJ, dc)
1744- let dT = fraction(dU, d, dw)
1745- let dH = H(dT, db)
1746- let eY = dF("", 500000, dH, do, dJ, dp, "", true, false)
1747- let ee = eY._1
1748- let hZ = eY._3
1749- let ds = eY._4
1750- let du = eY._5
1751- let dr = eY._6
1752- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(dw, b)), toString(ds), toString(du), toString(dr), dq, toString(dH), toString(dJ)], j))
1528+@Callable(dL)
1529+func evaluateGetREADONLY (gX,gY) = {
1530+ let cP = cc("", gX, gY, this)
1531+ let cv = cP._1
1532+ let cw = cP._2
1533+ let cl = cP._5
1534+ let cn = cP._6
1535+ let ck = cP._7
1536+ let cq = cP._8
1537+ let cj = parseIntValue(cP._9)
1538+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cv), toString(cw), toString(cl), toString(cn), toString(ck), toString(cq), toString(cj)], j))
17531539 }
17541540
17551541
1756-
1757-@Callable(eS)
1758-func evaluateGetREADONLY (ie,if) = {
1759- let dW = dj("", ie, if, this)
1760- let dC = dW._1
1761- let dD = dW._2
1762- let ds = dW._5
1763- let du = dW._6
1764- let dr = dW._7
1765- let dx = dW._8
1766- let dq = parseIntValue(dW._9)
1767- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dC), toString(dD), toString(ds), toString(du), toString(dr), toString(dx), toString(dq)], j))
1768- }
1769-
1770-
1771-@Verifier(ig)
1772-func ih () = {
1773- let ii = {
1774- let bT = ge()
1775- if ($isInstanceOf(bT, "ByteVector"))
1542+@Verifier(gZ)
1543+func ha () = {
1544+ let hb = {
1545+ let dW = eZ()
1546+ if ($isInstanceOf(dW, "ByteVector"))
17761547 then {
1777- let gi = bT
1778- gi
1548+ let fd = dW
1549+ fd
17791550 }
1780- else if ($isInstanceOf(bT, "Unit"))
1781- then ig.senderPublicKey
1551+ else if ($isInstanceOf(dW, "Unit"))
1552+ then gZ.senderPublicKey
17821553 else throw("Match error")
17831554 }
1784- let bT = ig
1785- if ($isInstanceOf(bT, "Order"))
1555+ let dW = gZ
1556+ if ($isInstanceOf(dW, "Order"))
17861557 then {
1787- let eH = bT
1788- let ij = aZ()
1789- let ik = eG(eH)
1790- let aI = ik._1
1791- let aJ = ik._2
1792- let aK = sigVerify(eH.bodyBytes, eH.proofs[0], eH.senderPublicKey)
1793- let aL = sigVerify(eH.bodyBytes, eH.proofs[1], ij)
1794- if (if (if (aI)
1795- then aK
1558+ let dA = dW
1559+ let hc = aU()
1560+ let hd = dz(dA)
1561+ let aD = hd._1
1562+ let aE = hd._2
1563+ let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1564+ let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hc)
1565+ if (if (if (aD)
1566+ then aF
17961567 else false)
1797- then aL
1568+ then aG
17981569 else false)
17991570 then true
1800- else aH(aI, aJ, aK, aL)
1571+ else aC(aD, aE, aF, aG)
18011572 }
1802- else if ($isInstanceOf(bT, "SetScriptTransaction"))
1573+ else if ($isInstanceOf(dW, "SetScriptTransaction"))
18031574 then {
1804- let gf = bT
1805- if (sigVerify(ig.bodyBytes, ig.proofs[0], ii))
1575+ let fa = dW
1576+ if (sigVerify(gZ.bodyBytes, gZ.proofs[0], hb))
18061577 then true
18071578 else {
1808- let il = blake2b256(value(gf.script))
1809- let im = fromBase64String(value(getString(aT, aF())))
1810- let in = scriptHash(this)
1811- if ((im == il))
1812- then (in != il)
1579+ let he = blake2b256(value(fa.script))
1580+ let hf = fromBase64String(value(getString(aO, aA())))
1581+ let hg = scriptHash(this)
1582+ if ((hf == he))
1583+ then (hg != he)
18131584 else false
18141585 }
18151586 }
1816- else sigVerify(ig.bodyBytes, ig.proofs[0], ii)
1587+ else sigVerify(gZ.bodyBytes, gZ.proofs[0], hb)
18171588 }
18181589
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (E,F) = fraction(E, d, F)
6666
6767
6868 func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
7171 func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
7474 func M (N,O,P) = fraction(N, O, P)
7575
7676
7777 func Q (I) = if ((0 > I))
7878 then -(I)
7979 else I
8080
8181
8282 func R (I) = if ((e > I))
8383 then -(I)
8484 else I
8585
8686
8787 func S () = "%s__swapContract"
8888
8989
9090 func T () = "%s__factoryContract"
9191
9292
9393 func U () = "%s__managerPublicKey"
9494
9595
9696 func V () = "%s__pendingManagerPublicKey"
9797
9898
9999 func W () = "%s%s__price__last"
100100
101101
102102 func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105105 func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108108 func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111111 func ae () = "%s__amountAsset"
112112
113113
114114 func af () = "%s__priceAsset"
115115
116116
117117 let ag = "%s__fee"
118118
119119 let ah = fraction(10, b, 10000)
120120
121121 let ai = valueOrElse(getInteger(this, ag), ah)
122122
123123 let aj = makeString(["%s", "kLp"], j)
124124
125125 let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126126
127127 let al = makeString(["%s", "refreshKLpDelay"], j)
128128
129129 let am = 30
130130
131131 let an = valueOrElse(getInteger(this, al), am)
132132
133-func ao (ap) = makeString(["%s%s", "stakedBalance", ap], j)
133+func ao () = "%s__factoryConfig"
134134
135135
136-func aq (ap) = makeString(["%s%s", "shareAssetBalance", ap], j)
136+func ap () = "%s%s__matcher__publicKey"
137137
138138
139-func ar (ap) = valueOrElse(getInteger(this, ao(ap)), 0)
139+func aq (ar) = (("%s%s%s__" + ar) + "__mappings__poolContract2LpAsset")
140140
141141
142-func as (ap) = valueOrElse(getInteger(this, aq(ap)), 0)
142+func as (at,au) = (((("%d%d%s__" + at) + "__") + au) + "__config")
143143
144144
145-func at () = "%s__factoryConfig"
145+func av (aw) = ("%s%s%s__mappings__baseAsset2internalId__" + aw)
146146
147147
148-func au () = "%s%s__matcher__publicKey"
148+func ax () = "%s__shutdown"
149149
150150
151-func av (aw) = (("%s%s%s__" + aw) + "__mappings__poolContract2LpAsset")
151+func ay (az) = ("%s%s__poolWeight__" + az)
152152
153153
154-func ax (ay,az) = (((("%d%d%s__" + ay) + "__") + az) + "__config")
154+func aA () = "%s__allowedLpScriptHash"
155155
156156
157-func aA (aB) = ("%s%s%s__mappings__baseAsset2internalId__" + aB)
157+let aB = "%s__feeCollectorAddress"
158+
159+func aC (aD,aE,aF,aG) = throw((((((((("order validation failed: orderValid=" + toString(aD)) + " (") + aE) + ")") + " senderValid=") + toString(aF)) + " matcherValid=") + toString(aG)))
158160
159161
160-func aC () = "%s__shutdown"
162+func aH (aI,aJ) = valueOrErrorMessage(getString(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
161163
162164
163-func aD (aE) = ("%s%s__poolWeight__" + aE)
165+func aK (aI,aJ) = valueOrErrorMessage(getInteger(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
164166
165167
166-func aF () = "%s__allowedLpScriptHash"
168+func aL (aM) = throw(makeString(["lp.ride:", aM], " "))
167169
168170
169-let aG = "%s__feeCollectorAddress"
170-
171-func aH (aI,aJ,aK,aL) = throw((((((((("order validation failed: orderValid=" + toString(aI)) + " (") + aJ) + ")") + " senderValid=") + toString(aK)) + " matcherValid=") + toString(aL)))
171+func aN (aM) = makeString(["lp.ride:", aM], " ")
172172
173173
174-func aM (aN,aO) = valueOrErrorMessage(getString(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
174+let aO = addressFromStringValue(aH(this, T()))
175+
176+let aP = addressFromStringValue(aH(aO, aB))
177+
178+let aQ = {
179+ let aR = invoke(aO, "getInFeeREADONLY", [toString(this)], nil)
180+ if ($isInstanceOf(aR, "Int"))
181+ then aR
182+ else throw(($getType(aR) + " couldn't be cast to Int"))
183+ }
184+
185+let aS = {
186+ let aR = invoke(aO, "getOutFeeREADONLY", [toString(this)], nil)
187+ if ($isInstanceOf(aR, "Int"))
188+ then aR
189+ else throw(($getType(aR) + " couldn't be cast to Int"))
190+ }
191+
192+func aT () = valueOrElse(getBoolean(aO, ax()), false)
175193
176194
177-func aP (aN,aO) = valueOrErrorMessage(getInteger(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
195+func aU () = fromBase58String(aH(aO, ap()))
178196
179197
180-func aQ (aR) = throw(makeString(["lp.ride:", aR], " "))
181-
182-
183-func aS (aR) = makeString(["lp.ride:", aR], " ")
184-
185-
186-let aT = addressFromStringValue(aM(this, T()))
187-
188-let aU = addressFromStringValue(aM(aT, aG))
189-
190-let aV = {
191- let aW = invoke(aT, "getInFeeREADONLY", [toString(this)], nil)
192- if ($isInstanceOf(aW, "Int"))
193- then aW
194- else throw(($getType(aW) + " couldn't be cast to Int"))
195- }
196-
197-let aX = {
198- let aW = invoke(aT, "getOutFeeREADONLY", [toString(this)], nil)
199- if ($isInstanceOf(aW, "Int"))
200- then aW
201- else throw(($getType(aW) + " couldn't be cast to Int"))
202- }
203-
204-func aY () = valueOrElse(getBoolean(aT, aC()), false)
205-
206-
207-func aZ () = fromBase58String(aM(aT, au()))
208-
209-
210-func ba () = {
211- let bb = aM(this, ae())
212- let bc = aM(this, af())
213- let az = aP(aT, aA(bc))
214- let ay = aP(aT, aA(bb))
215- split(aM(aT, ax(toString(ay), toString(az))), j)
198+func aV () = {
199+ let aW = aH(this, ae())
200+ let aX = aH(this, af())
201+ let au = aK(aO, av(aX))
202+ let at = aK(aO, av(aW))
203+ split(aH(aO, as(toString(at), toString(au))), j)
216204 }
217205
218206
219-func bd (be) = if ((be == i))
207+func aY (aZ) = if ((aZ == i))
220208 then unit
221- else fromBase58String(be)
209+ else fromBase58String(aZ)
222210
223211
224-func bf (be) = if ((be == unit))
212+func ba (aZ) = if ((aZ == unit))
225213 then i
226- else toBase58String(value(be))
214+ else toBase58String(value(aZ))
227215
228216
229-func bg (bh) = $Tuple7(addressFromStringValue(bh[o]), parseIntValue(bh[p]), fromBase58String(bh[q]), bd(bh[r]), bd(bh[s]), parseIntValue(bh[t]), parseIntValue(bh[u]))
217+func bb (bc) = $Tuple7(addressFromStringValue(bc[o]), parseIntValue(bc[p]), fromBase58String(bc[q]), aY(bc[r]), aY(bc[s]), parseIntValue(bc[t]), parseIntValue(bc[u]))
230218
231219
232-let bi = bg(ba())
220+let bd = bb(aV())
233221
234-let bj = bi
222+let be = bd
235223
236-let bk = bj._1
224+let bf = be._1
237225
238-let bl = bj._2
226+let bg = be._2
239227
240-let bm = bj._3
228+let bh = be._3
241229
242-let bn = bj._4
230+let bi = be._4
243231
244-let bo = bj._5
232+let bj = be._5
245233
246-let bp = bj._6
234+let bk = be._6
247235
248-let bq = bj._7
236+let bl = be._7
249237
250-func br () = split(aM(aT, at()), j)
238+func bm () = split(aH(aO, ao()), j)
251239
252240
253-let bs = valueOrErrorMessage(addressFromString(br()[B]), "incorrect staking address")
241+let bn = valueOrErrorMessage(addressFromString(bm()[B]), "incorrect staking address")
254242
255-let bt = valueOrErrorMessage(addressFromString(br()[C]), "incorrect staking address")
243+let bo = valueOrErrorMessage(addressFromString(bm()[C]), "incorrect staking address")
256244
257-func bu (bv,bw,bx,by,bz,bA,bB,bC,bD,bE) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE)], j)
245+func bp (bq,br,bs,bt,bu,bv,bw,bx,by,bz) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz)], j)
258246
259247
260-func bF (bG,bH,bI,by,bB,bC) = makeString(["%d%d%d%d%d%d", toString(bG), toString(bH), toString(bI), toString(by), toString(bB), toString(bC)], j)
248+func bA (bB,bC,bD,bt,bw,bx) = makeString(["%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bt), toString(bw), toString(bx)], j)
261249
262250
263-func bJ (ap) = {
264- let bK = if ((ap == "WAVES"))
265- then wavesBalance(this).available
266- else assetBalance(this, fromBase58String(ap))
267- let bL = ((bK + ar(ap)) - as(ap))
268- max([0, bL])
251+func bE (bF) = if ((bF == "WAVES"))
252+ then wavesBalance(this).available
253+ else assetBalance(this, fromBase58String(bF))
254+
255+
256+func bG (bH,bI) = fraction(bH, d, bI)
257+
258+
259+func bJ (bH,bI,L) = fraction(bH, d, bI, L)
260+
261+
262+func bK (bL,bM,bN,bO) = {
263+ let bP = D(bN, bL)
264+ let bQ = D(bO, bM)
265+ bG(bQ, bP)
269266 }
270267
271268
272-func bM (bN,bO) = fraction(bN, d, bO)
273-
274-
275-func bP (bN,bO,L) = fraction(bN, d, bO, L)
276-
277-
278-func bQ (bR) = {
279- let bS = invoke(bR, "getRate", nil, nil)
280- if ((bS == bS))
281- then {
282- let bT = bS
283- if ($isInstanceOf(bT, "Int"))
284- then {
285- let bU = bT
286- bU
287- }
288- else aQ("proxy.getRate() unexpected value")
289- }
290- else throw("Strict value is not equal to itself.")
269+func bR (bN,bO,bS) = {
270+ let bT = aV()
271+ let bU = parseIntValue(bT[t])
272+ let bV = parseIntValue(bT[u])
273+ let bW = bK(bU, bV, bN, bO)
274+ let bI = D(bN, bU)
275+ let bH = D(bO, bV)
276+ let bX = D(bS, b)
277+ let bY = bG(bI, bX)
278+ let bZ = bG(bH, bX)
279+[bW, bY, bZ]
291280 }
292281
293282
294-func bV (ap,bW,bX,bR) = {
295- let bY = ar(ap)
296- if ((bY == bY))
283+func ca (bN,bO,bS) = {
284+ let cb = bR(bN, bO, bS)
285+[H(cb[0], b), H(cb[1], b), H(cb[2], b)]
286+ }
287+
288+
289+func cc (cd,ce,cf,ab) = {
290+ let bT = aV()
291+ let cg = bT[q]
292+ let ch = bT[r]
293+ let ci = bT[s]
294+ let bL = parseIntValue(bT[t])
295+ let bM = parseIntValue(bT[u])
296+ let cj = bT[p]
297+ let ck = valueOrErrorMessage(assetInfo(fromBase58String(cg)), (("Asset " + cg) + " doesn't exist")).quantity
298+ if ((cg != ce))
299+ then throw("Invalid asset passed.")
300+ else {
301+ let cl = bE(ch)
302+ let cm = D(cl, bL)
303+ let cn = bE(ci)
304+ let co = D(cn, bM)
305+ let cp = bG(co, cm)
306+ let cq = H(cp, b)
307+ let cr = D(cf, b)
308+ let cs = D(ck, b)
309+ let ct = fraction(cm, cr, cs)
310+ let cu = fraction(co, cr, cs)
311+ let cv = K(ct, bL, FLOOR)
312+ let cw = K(cu, bM, FLOOR)
313+ let cx = if ((cd == ""))
314+ then nil
315+ else [ScriptTransfer(ab, cv, if ((ch == "WAVES"))
316+ then unit
317+ else fromBase58String(ch)), ScriptTransfer(ab, cw, if ((ci == "WAVES"))
318+ then unit
319+ else fromBase58String(ci)), StringEntry(ad(toString(ab), cd), bA(cv, cw, cf, cq, height, lastBlock.timestamp)), IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq)]
320+ $Tuple10(cv, cw, ch, ci, cl, cn, ck, cp, cj, cx)
321+ }
322+ }
323+
324+
325+func cy (cd,cz,cA,cB,cC,cD,ab,cE,cF) = {
326+ let bT = aV()
327+ let cg = fromBase58String(bT[q])
328+ let cG = bT[r]
329+ let cH = bT[s]
330+ let cI = bT[v]
331+ let cJ = bT[w]
332+ let bU = parseIntValue(bT[t])
333+ let bV = parseIntValue(bT[u])
334+ let cj = bT[p]
335+ let ck = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
336+ let cK = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
337+ let cL = toBase58String(valueOrElse(cD, fromBase58String("WAVES")))
338+ if (if ((cG != cK))
339+ then true
340+ else (cH != cL))
341+ then throw("Invalid amt or price asset passed.")
342+ else {
343+ let cl = if (cE)
344+ then bE(cG)
345+ else (bE(cG) - cA)
346+ let cn = if (cE)
347+ then bE(cH)
348+ else (bE(cH) - cC)
349+ let cM = D(cA, bU)
350+ let cN = D(cC, bV)
351+ let cO = bG(cN, cM)
352+ let cm = D(cl, bU)
353+ let co = D(cn, bV)
354+ let cP = if ((ck == 0))
355+ then {
356+ let cp = e
357+ let cQ = e
358+ let bX = pow((cM * cN), 0, toBigInt(5), 1, 0, DOWN)
359+ $Tuple5(H(bX, b), H(cM, bU), H(cN, bV), bG((co + cN), (cm + cM)), cQ)
360+ }
361+ else {
362+ let cp = bG(co, cm)
363+ let cQ = fraction(R((cp - cO)), d, cp)
364+ let cR = D(cz, b)
365+ if (if ((cp != e))
366+ then (cQ > cR)
367+ else false)
368+ then throw(((("Price slippage " + toString(cQ)) + " exceeded the passed limit of ") + toString(cR)))
369+ else {
370+ let cs = D(ck, b)
371+ let cS = fraction(cM, bJ(co, cm, CEILING), d, CEILING)
372+ let cT = fraction(cN, d, bJ(co, cm, FLOOR), CEILING)
373+ let cU = if ((cS > cN))
374+ then $Tuple2(cT, cN)
375+ else $Tuple2(cM, cS)
376+ let cV = cU._1
377+ let cW = cU._2
378+ let bX = fraction(cs, cW, co, FLOOR)
379+ $Tuple5(K(bX, b, FLOOR), K(cV, bU, CEILING), K(cW, bV, CEILING), cp, cQ)
380+ }
381+ }
382+ let cX = cP._1
383+ let cY = cP._2
384+ let cZ = cP._3
385+ let cq = H(cP._4, b)
386+ let da = H(cP._5, b)
387+ if ((0 >= cX))
388+ then throw("Invalid calculations. LP calculated is less than zero.")
389+ else {
390+ let db = if (!(cF))
391+ then 0
392+ else cX
393+ let dc = (cA - cY)
394+ let dd = (cC - cZ)
395+ let de = [IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq), StringEntry(aa(ab, cd), bp(cY, cZ, db, cq, cz, da, height, lastBlock.timestamp, dc, dd))]
396+ $Tuple13(cX, db, cq, cl, cn, ck, cg, cj, de, dc, dd, cB, cD)
397+ }
398+ }
399+ }
400+
401+
402+func df (dg,dh,ck) = {
403+ let di = G(dg, toBigInt(bk))
404+ let dj = G(dh, toBigInt(bl))
405+ let dk = fraction(pow((di * dj), 0, toBigInt(5), 1, 18, DOWN), g, ck)
406+ if ((ck == f))
407+ then f
408+ else dk
409+ }
410+
411+
412+func dl (dm,dn,do) = {
413+ let dp = (toBigInt(bE(ba(bi))) - dm)
414+ let dq = (toBigInt(bE(ba(bj))) - dn)
415+ let dr = (toBigInt(value(assetInfo(bh)).quantity) - do)
416+ let ds = df(dp, dq, dr)
417+ ds
418+ }
419+
420+
421+func dt (du,dv,do) = {
422+ let dp = (bE(ba(bi)) + du)
423+ let dq = (bE(ba(bj)) + dv)
424+ let dr = (value(assetInfo(bh)).quantity + do)
425+ let dk = df(toBigInt(dp), toBigInt(dq), toBigInt(dr))
426+ let dw = [IntegerEntry(ak, height), StringEntry(aj, toString(dk))]
427+ $Tuple2(dw, dk)
428+ }
429+
430+
431+func dx (dy,dk) = if ((dk >= dy))
432+ then true
433+ else aL(makeString(["updated KLp lower than current KLp", toString(dy), toString(dk)], " "))
434+
435+
436+func dz (dA) = {
437+ let dp = bE(ba(bi))
438+ let dq = bE(ba(bj))
439+ let dB = dA.amount
440+ let dC = fraction(dA.amount, dA.price, b, FLOOR)
441+ let dD = if ((dA.orderType == Buy))
442+ then $Tuple2(dB, -(dC))
443+ else $Tuple2(-(dB), dC)
444+ let du = dD._1
445+ let dv = dD._2
446+ if (if (if (aT())
447+ then true
448+ else (bg == m))
449+ then true
450+ else (bg == n))
451+ then throw("Exchange operations disabled")
452+ else if (if ((dA.assetPair.amountAsset != bi))
453+ then true
454+ else (dA.assetPair.priceAsset != bj))
455+ then throw("Wrong order assets.")
456+ else {
457+ let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
458+ let dF = dt(du, dv, 0)
459+ let dG = dF._1
460+ let dH = dF._2
461+ let dI = (dH >= dE)
462+ let dJ = makeString(["kLp=", toString(dE), " kLpNew=", toString(dH), " amountAssetBalance=", toString(dp), " priceAssetBalance=", toString(dq), " amountAssetBalanceDelta=", toString(du), " priceAssetBalanceDelta=", toString(dv), " height=", toString(height)], "")
463+ $Tuple2(dI, dJ)
464+ }
465+ }
466+
467+
468+func dK (dL) = if ((size(dL.payments) != 1))
469+ then throw("exactly 1 payment is expected")
470+ else {
471+ let dM = value(dL.payments[0])
472+ let ce = value(dM.assetId)
473+ let dN = dM.amount
474+ let cP = cc(toBase58String(dL.transactionId), toBase58String(ce), dN, dL.caller)
475+ let cv = cP._1
476+ let cw = cP._2
477+ let cj = parseIntValue(cP._9)
478+ let cx = cP._10
479+ if (if (aT())
480+ then true
481+ else (cj == n))
482+ then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
483+ else $Tuple5(cv, cw, dN, ce, cx)
484+ }
485+
486+
487+func dO (dL,cz,cF) = if ((size(dL.payments) != 2))
488+ then throw("exactly 2 payments are expected")
489+ else {
490+ let dP = value(dL.payments[0])
491+ let dQ = value(dL.payments[1])
492+ let dR = cy(toBase58String(dL.transactionId), cz, dP.amount, dP.assetId, dQ.amount, dQ.assetId, toString(dL.caller), false, cF)
493+ let cj = parseIntValue(dR._8)
494+ if (if (if (aT())
495+ then true
496+ else (cj == l))
497+ then true
498+ else (cj == n))
499+ then throw(("Put operation is blocked by admin. Status = " + toString(cj)))
500+ else dR
501+ }
502+
503+
504+func dS (dT) = {
505+ let dU = invoke(aO, "emit", [dT], nil)
506+ if ((dU == dU))
297507 then {
298- let bZ = as(bX)
299- if ((bZ == bZ))
300- then {
301- let ca = bd(ap)
302- if ((bW > 0))
303- then {
304- let cb = invoke(bR, "deposit", nil, [AttachedPayment(ca, bW)])
305- if ((cb == cb))
306- then {
307- let bT = cb
308- if ($isInstanceOf(bT, "Int"))
309- then {
310- let cc = bT
311- let cd = (bY + bW)
312- let ce = (bZ + cc)
313-[IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce)]
314- }
315- else nil
316- }
317- else throw("Strict value is not equal to itself.")
318- }
319- else nil
320- }
508+ let dV = {
509+ let dW = dU
510+ if ($isInstanceOf(dW, "Address"))
511+ then {
512+ let dX = dW
513+ invoke(dX, "emit", [dT], nil)
514+ }
515+ else unit
516+ }
517+ if ((dV == dV))
518+ then dT
321519 else throw("Strict value is not equal to itself.")
322520 }
323521 else throw("Strict value is not equal to itself.")
324522 }
325523
326524
327-func cf (ap,bW,bX,bR,cg,ch) = {
328- let bY = ar(ap)
329- if ((bY == bY))
525+func dY (dT,ai) = {
526+ let dZ = if ((ai == 0))
527+ then 0
528+ else fraction(dT, ai, b)
529+ $Tuple2((dT - dZ), dZ)
530+ }
531+
532+
533+func ea (eb,ec,ab,ac) = {
534+ let ed = (ac == unit)
535+ let ee = bE(ba(bi))
536+ let ef = bE(ba(bj))
537+ let eg = if ((ec == bi))
538+ then true
539+ else if ((ec == bj))
540+ then false
541+ else aL("invalid asset")
542+ let eh = if (ed)
543+ then $Tuple2(ee, ef)
544+ else if (eg)
545+ then $Tuple2((ee - eb), ef)
546+ else $Tuple2(ee, (ef - eb))
547+ let ei = eh._1
548+ let ej = eh._2
549+ let ek = if (eg)
550+ then $Tuple2(eb, 0)
551+ else $Tuple2(0, eb)
552+ let el = ek._1
553+ let em = ek._2
554+ let dB = dY(el, aQ)._1
555+ let dC = dY(em, aQ)._1
556+ let en = dY(eb, aQ)
557+ let eo = en._1
558+ let dZ = en._2
559+ let ep = (ei + dB)
560+ let eq = (ej + dC)
561+ let er = bG(D(eq, bl), D(ep, bk))
562+ let es = H(er, b)
563+ let et = if (eg)
564+ then ei
565+ else ej
566+ let eu = toBigInt(et)
567+ let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
568+ let ew = if ((ev > f))
569+ then true
570+ else aL("initial deposit requires all coins")
571+ if ((ew == ew))
330572 then {
331- let bZ = as(bX)
332- if ((bZ == bZ))
333- then {
334- let ci = bQ(bR)
335- if ((ci == ci))
336- then {
337- let cj = fraction(cg, bY, bZ)
338- let ck = bd(bX)
339- let cl = fraction(cg, bW, cj)
340- let cm = fraction(cg, bW, ci)
341- let cn = max([0, (cl - cm)])
342- if ((cm > 0))
343- then {
344- let co = invoke(bR, "withdraw", nil, [AttachedPayment(ck, cm)])
345- if ((co == co))
346- then {
347- let bT = co
348- if ($isInstanceOf(bT, "Int"))
349- then {
350- let cp = bT
351- let cd = (bY - cp)
352- let ce = ((bZ - cm) - cn)
353-[IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce), ScriptTransfer(ch, cn, bd(bX))]
354- }
355- else nil
356- }
357- else throw("Strict value is not equal to itself.")
358- }
359- else nil
360- }
361- else throw("Strict value is not equal to itself.")
362- }
363- else throw("Strict value is not equal to itself.")
573+ let ex = toBigInt(eo)
574+ let ey = max([0, toInt(((ev * (sqrtBigInt((d + ((ex * d) / eu)), 18, 18, DOWN) - d)) / d))])
575+ let de = if (ed)
576+ then nil
577+ else [IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bp(el, em, ey, es, 0, 0, height, lastBlock.timestamp, 0, 0))]
578+ let ez = bG(D(ej, bl), D(ei, bk))
579+ let eA = H(ez, b)
580+ let eB = {
581+ let eC = if (eg)
582+ then $Tuple2(el, ei)
583+ else $Tuple2(em, ej)
584+ let dT = eC._1
585+ let eD = eC._2
586+ let eE = toInt(fraction(ev, toBigInt((dT / 2)), toBigInt(eD)))
587+ fraction((ey - eE), b, eE)
588+ }
589+ $Tuple5(ey, de, dZ, eB, eg)
364590 }
365591 else throw("Strict value is not equal to itself.")
366592 }
367593
368594
369-func cq (ap) = {
370- let bT = invoke(aT, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
371- if ($isInstanceOf(bT, "(Boolean, Int, Int, String, String, Int, String)"))
595+func eF (eG,eo,ec,ab,ac) = {
596+ let ed = (ac == unit)
597+ let bT = aV()
598+ let bU = parseIntValue(bT[t])
599+ let bV = parseIntValue(bT[u])
600+ let eH = [if ((ec == bh))
601+ then true
602+ else aL("invalid lp asset")]
603+ if ((eH == eH))
372604 then {
373- let cr = bT
374- cr
375- }
376- else aQ((("[" + ap) + "] getLeaseProxyConfig() error"))
377- }
378-
379-
380-func cs (ct,ap,bX,cu,bR,cg,ch) = {
381- let bY = ar(ap)
382- if ((bY == bY))
383- then {
384- let bZ = as(bX)
385- if ((bZ == bZ))
386- then {
387- let cv = max([0, (bJ(ap) - cu)])
388- let cw = fraction(ct, cv, 100)
389- let cx = (bY - cw)
390- if ((cx == 0))
391- then nil
392- else if ((0 > cx))
393- then {
394- let cy = -(cx)
395- bV(ap, cy, bX, bR)
396- }
397- else {
398- let cz = cx
399- cf(ap, cz, bX, bR, cg, ch)
400- }
401- }
402- else throw("Strict value is not equal to itself.")
605+ let eI = if ((eG == bi))
606+ then true
607+ else if ((eG == bj))
608+ then false
609+ else aL("invalid asset")
610+ let eJ = if (eI)
611+ then toBigInt(bE(ba(bi)))
612+ else toBigInt(bE(ba(bj)))
613+ let eK = if (eI)
614+ then bU
615+ else bV
616+ let eL = bE(ba(bi))
617+ let eM = bE(ba(bj))
618+ let eN = if (eI)
619+ then eL
620+ else eM
621+ let eO = toBigInt(eN)
622+ let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
623+ let eP = toBigInt(eo)
624+ let eQ = max([0, toInt(((eJ * (d - pow((d - ((eP * d) / ev)), 18, h, 0, 18, DOWN))) / d))])
625+ let eR = dY(eQ, aS)
626+ let eS = eR._1
627+ let dZ = eR._2
628+ let eT = if (eI)
629+ then $Tuple4(eS, 0, (eL - eQ), eM)
630+ else $Tuple4(0, eS, eL, (eM - eQ))
631+ let eU = eT._1
632+ let eV = eT._2
633+ let eW = eT._3
634+ let eX = eT._4
635+ let er = bG(D(eX, bl), D(eW, bk))
636+ let es = H(er, b)
637+ let de = if (ed)
638+ then nil
639+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bA(eU, eV, eo, es, height, lastBlock.timestamp)), IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es)]
640+ let ez = bG(D(eM, bl), D(eL, bk))
641+ let eA = H(ez, b)
642+ let eB = {
643+ let eY = (toInt(fraction(eJ, eP, ev)) * 2)
644+ fraction((eS - eY), b, eY)
645+ }
646+ $Tuple5(eS, de, dZ, eB, eI)
403647 }
404648 else throw("Strict value is not equal to itself.")
405649 }
406650
407651
408-func cA (ap) = {
409- let cB = cq(ap)
410- let cC = cB._1
411- let cD = cB._2
412- let cu = cB._3
413- let cE = cB._4
414- let cF = cB._5
415- let cg = cB._6
416- let cG = cB._7
417- if (cC)
418- then cs(cD, ap, cF, cu, addressFromStringValue(cE), cg, addressFromStringValue(cG))
419- else nil
420- }
421-
422-
423-func cH (ap,cI) = {
424- let cJ = cq(ap)
425- let cC = cJ._1
426- let cD = cJ._2
427- let cu = cJ._3
428- let cE = cJ._4
429- let cF = cJ._5
430- let cg = cJ._6
431- let cG = cJ._7
432- if (cC)
652+func eZ () = {
653+ let dW = getString(U())
654+ if ($isInstanceOf(dW, "String"))
433655 then {
434- let cK = max([0, ((bJ(ap) - cI) - cu)])
435- if ((cK == cK))
436- then {
437- let cd = fraction(cD, cK, 100)
438- if ((cd == cd))
439- then {
440- let cL = max([0, (ar(ap) - cd)])
441- if ((cL == cL))
442- then cf(ap, cL, cF, addressFromStringValue(cE), cg, addressFromStringValue(cG))
443- else throw("Strict value is not equal to itself.")
444- }
445- else throw("Strict value is not equal to itself.")
446- }
447- else throw("Strict value is not equal to itself.")
656+ let fa = dW
657+ fromBase58String(fa)
448658 }
449- else nil
450- }
451-
452-
453-func cM (cN,cO) = {
454- let cP = cH(aM(this, ae()), cN)
455- let cQ = cH(aM(this, af()), cO)
456- (cP ++ cQ)
457- }
458-
459-
460-func cR (cS,cT,cU,cV) = {
461- let cW = D(cU, cS)
462- let cX = D(cV, cT)
463- bM(cX, cW)
464- }
465-
466-
467-func cY (cU,cV,cZ) = {
468- let da = ba()
469- let db = parseIntValue(da[t])
470- let dc = parseIntValue(da[u])
471- let dd = cR(db, dc, cU, cV)
472- let bO = D(cU, db)
473- let bN = D(cV, dc)
474- let de = D(cZ, b)
475- let df = bM(bO, de)
476- let dg = bM(bN, de)
477-[dd, df, dg]
478- }
479-
480-
481-func dh (cU,cV,cZ) = {
482- let di = cY(cU, cV, cZ)
483-[H(di[0], b), H(di[1], b), H(di[2], b)]
484- }
485-
486-
487-func dj (dk,dl,dm,ab) = {
488- let da = ba()
489- let dn = da[q]
490- let do = da[r]
491- let dp = da[s]
492- let cS = parseIntValue(da[t])
493- let cT = parseIntValue(da[u])
494- let dq = da[p]
495- let dr = valueOrErrorMessage(assetInfo(fromBase58String(dn)), (("Asset " + dn) + " doesn't exist")).quantity
496- if ((dn != dl))
497- then throw("Invalid asset passed.")
498- else {
499- let ds = bJ(do)
500- let dt = D(ds, cS)
501- let du = bJ(dp)
502- let dv = D(du, cT)
503- let dw = bM(dv, dt)
504- let dx = H(dw, b)
505- let dy = D(dm, b)
506- let dz = D(dr, b)
507- let dA = fraction(dt, dy, dz)
508- let dB = fraction(dv, dy, dz)
509- let dC = K(dA, cS, FLOOR)
510- let dD = K(dB, cT, FLOOR)
511- let dE = if ((dk == ""))
512- then nil
513- else [ScriptTransfer(ab, dC, if ((do == "WAVES"))
514- then unit
515- else fromBase58String(do)), ScriptTransfer(ab, dD, if ((dp == "WAVES"))
516- then unit
517- else fromBase58String(dp)), StringEntry(ad(toString(ab), dk), bF(dC, dD, dm, dx, height, lastBlock.timestamp)), IntegerEntry(W(), dx), IntegerEntry(X(height, lastBlock.timestamp), dx)]
518- $Tuple10(dC, dD, do, dp, ds, du, dr, dw, dq, dE)
519- }
520- }
521-
522-
523-func dF (dk,dG,dH,dI,dJ,dK,ab,dL,dM) = {
524- let da = ba()
525- let dn = fromBase58String(da[q])
526- let dN = da[r]
527- let dO = da[s]
528- let dP = da[v]
529- let dQ = da[w]
530- let db = parseIntValue(da[t])
531- let dc = parseIntValue(da[u])
532- let dq = da[p]
533- let dr = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
534- let dR = toBase58String(valueOrElse(dI, fromBase58String("WAVES")))
535- let dS = toBase58String(valueOrElse(dK, fromBase58String("WAVES")))
536- if (if ((dN != dR))
537- then true
538- else (dO != dS))
539- then throw("Invalid amt or price asset passed.")
540- else {
541- let ds = if (dL)
542- then bJ(dN)
543- else (bJ(dN) - dH)
544- let du = if (dL)
545- then bJ(dO)
546- else (bJ(dO) - dJ)
547- let dT = D(dH, db)
548- let dU = D(dJ, dc)
549- let dV = bM(dU, dT)
550- let dt = D(ds, db)
551- let dv = D(du, dc)
552- let dW = if ((dr == 0))
553- then {
554- let dw = e
555- let dX = e
556- let de = pow((dT * dU), 0, toBigInt(5), 1, 0, DOWN)
557- $Tuple5(H(de, b), H(dT, db), H(dU, dc), bM((dv + dU), (dt + dT)), dX)
558- }
559- else {
560- let dw = bM(dv, dt)
561- let dX = fraction(R((dw - dV)), d, dw)
562- let dY = D(dG, b)
563- if (if ((dw != e))
564- then (dX > dY)
565- else false)
566- then throw(((("Price slippage " + toString(dX)) + " exceeded the passed limit of ") + toString(dY)))
567- else {
568- let dz = D(dr, b)
569- let dZ = fraction(dT, bP(dv, dt, CEILING), d, CEILING)
570- let ea = fraction(dU, d, bP(dv, dt, FLOOR), CEILING)
571- let eb = if ((dZ > dU))
572- then $Tuple2(ea, dU)
573- else $Tuple2(dT, dZ)
574- let ec = eb._1
575- let ed = eb._2
576- let de = fraction(dz, ed, dv, FLOOR)
577- $Tuple5(K(de, b, FLOOR), K(ec, db, CEILING), K(ed, dc, CEILING), dw, dX)
578- }
579- }
580- let ee = dW._1
581- let ef = dW._2
582- let eg = dW._3
583- let dx = H(dW._4, b)
584- let eh = H(dW._5, b)
585- if ((0 >= ee))
586- then throw("Invalid calculations. LP calculated is less than zero.")
587- else {
588- let ei = if (!(dM))
589- then 0
590- else ee
591- let ej = (dH - ef)
592- let ek = (dJ - eg)
593- let el = [IntegerEntry(W(), dx), IntegerEntry(X(height, lastBlock.timestamp), dx), StringEntry(aa(ab, dk), bu(ef, eg, ei, dx, dG, eh, height, lastBlock.timestamp, ej, ek))]
594- $Tuple13(ee, ei, dx, ds, du, dr, dn, dq, el, ej, ek, dI, dK)
595- }
596- }
597- }
598-
599-
600-func em (en,eo,dr) = {
601- let ep = G(en, toBigInt(bp))
602- let eq = G(eo, toBigInt(bq))
603- let er = fraction(pow((ep * eq), 0, toBigInt(5), 1, 18, DOWN), g, dr)
604- if ((dr == f))
605- then f
606- else er
607- }
608-
609-
610-func es (et,eu,ev) = {
611- let ew = (toBigInt(bJ(bf(bn))) - et)
612- let ex = (toBigInt(bJ(bf(bo))) - eu)
613- let ey = (toBigInt(value(assetInfo(bm)).quantity) - ev)
614- let ez = em(ew, ex, ey)
615- ez
616- }
617-
618-
619-func eA (eB,eC,ev) = {
620- let ew = (bJ(bf(bn)) + eB)
621- let ex = (bJ(bf(bo)) + eC)
622- let ey = (value(assetInfo(bm)).quantity + ev)
623- let er = em(toBigInt(ew), toBigInt(ex), toBigInt(ey))
624- let eD = [IntegerEntry(ak, height), StringEntry(aj, toString(er))]
625- $Tuple2(eD, er)
626- }
627-
628-
629-func eE (eF,er) = if ((er >= eF))
630- then true
631- else aQ(makeString(["updated KLp lower than current KLp", toString(eF), toString(er)], " "))
632-
633-
634-func eG (eH) = {
635- let ew = bJ(bf(bn))
636- let ex = bJ(bf(bo))
637- let eI = eH.amount
638- let eJ = fraction(eH.amount, eH.price, b, FLOOR)
639- let eK = if ((eH.orderType == Buy))
640- then $Tuple2(eI, -(eJ))
641- else $Tuple2(-(eI), eJ)
642- let eB = eK._1
643- let eC = eK._2
644- if (if (if (aY())
645- then true
646- else (bl == m))
647- then true
648- else (bl == n))
649- then throw("Exchange operations disabled")
650- else if (if ((eH.assetPair.amountAsset != bn))
651- then true
652- else (eH.assetPair.priceAsset != bo))
653- then throw("Wrong order assets.")
654- else {
655- let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
656- let eM = eA(eB, eC, 0)
657- let eN = eM._1
658- let eO = eM._2
659- let eP = (eO >= eL)
660- let eQ = makeString(["kLp=", toString(eL), " kLpNew=", toString(eO), " amountAssetBalance=", toString(ew), " priceAssetBalance=", toString(ex), " amountAssetBalanceDelta=", toString(eB), " priceAssetBalanceDelta=", toString(eC), " height=", toString(height)], "")
661- $Tuple2(eP, eQ)
662- }
663- }
664-
665-
666-func eR (eS) = if ((size(eS.payments) != 1))
667- then throw("exactly 1 payment is expected")
668- else {
669- let eT = value(eS.payments[0])
670- let dl = value(eT.assetId)
671- let eU = eT.amount
672- let dW = dj(toBase58String(eS.transactionId), toBase58String(dl), eU, eS.caller)
673- let dC = dW._1
674- let dD = dW._2
675- let dq = parseIntValue(dW._9)
676- let dE = dW._10
677- if (if (aY())
678- then true
679- else (dq == n))
680- then throw(("Get operation is blocked by admin. Status = " + toString(dq)))
681- else $Tuple5(dC, dD, eU, dl, dE)
682- }
683-
684-
685-func eV (eS,dG,dM) = if ((size(eS.payments) != 2))
686- then throw("exactly 2 payments are expected")
687- else {
688- let eW = value(eS.payments[0])
689- let eX = value(eS.payments[1])
690- let eY = dF(toBase58String(eS.transactionId), dG, eW.amount, eW.assetId, eX.amount, eX.assetId, toString(eS.caller), false, dM)
691- let dq = parseIntValue(eY._8)
692- if (if (if (aY())
693- then true
694- else (dq == l))
695- then true
696- else (dq == n))
697- then throw(("Put operation is blocked by admin. Status = " + toString(dq)))
698- else eY
699- }
700-
701-
702-func eZ (bW) = {
703- let fa = invoke(aT, "emit", [bW], nil)
704- if ((fa == fa))
705- then {
706- let fb = {
707- let bT = fa
708- if ($isInstanceOf(bT, "Address"))
709- then {
710- let fc = bT
711- invoke(fc, "emit", [bW], nil)
712- }
713- else unit
714- }
715- if ((fb == fb))
716- then bW
717- else throw("Strict value is not equal to itself.")
718- }
719- else throw("Strict value is not equal to itself.")
720- }
721-
722-
723-func fd (bW,ai) = {
724- let fe = if ((ai == 0))
725- then 0
726- else fraction(bW, ai, b)
727- $Tuple2((bW - fe), fe)
728- }
729-
730-
731-func ff (fg,fh,ab,ac) = {
732- let fi = (ac == unit)
733- let fj = bJ(bf(bn))
734- let fk = bJ(bf(bo))
735- let fl = if ((fh == bn))
736- then true
737- else if ((fh == bo))
738- then false
739- else aQ("invalid asset")
740- let fm = if (fi)
741- then $Tuple2(fj, fk)
742- else if (fl)
743- then $Tuple2((fj - fg), fk)
744- else $Tuple2(fj, (fk - fg))
745- let fn = fm._1
746- let fo = fm._2
747- let fp = if (fl)
748- then $Tuple2(fg, 0)
749- else $Tuple2(0, fg)
750- let fq = fp._1
751- let fr = fp._2
752- let eI = fd(fq, aV)._1
753- let eJ = fd(fr, aV)._1
754- let fs = fd(fg, aV)
755- let ft = fs._1
756- let fe = fs._2
757- let fu = (fn + eI)
758- let fv = (fo + eJ)
759- let fw = bM(D(fv, bq), D(fu, bp))
760- let fx = H(fw, b)
761- let fy = if (fl)
762- then fn
763- else fo
764- let fz = toBigInt(fy)
765- let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
766- let fB = if ((fA > f))
767- then true
768- else aQ("initial deposit requires all coins")
769- if ((fB == fB))
770- then {
771- let fC = toBigInt(ft)
772- let fD = max([0, toInt(((fA * (sqrtBigInt((d + ((fC * d) / fz)), 18, 18, DOWN) - d)) / d))])
773- let el = if (fi)
774- then nil
775- else [IntegerEntry(W(), fx), IntegerEntry(X(height, lastBlock.timestamp), fx), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bu(fq, fr, fD, fx, 0, 0, height, lastBlock.timestamp, 0, 0))]
776- let fE = bM(D(fo, bq), D(fn, bp))
777- let fF = H(fE, b)
778- let fG = {
779- let fH = if (fl)
780- then $Tuple2(fq, fn)
781- else $Tuple2(fr, fo)
782- let bW = fH._1
783- let fI = fH._2
784- let fJ = toInt(fraction(fA, toBigInt((bW / 2)), toBigInt(fI)))
785- fraction((fD - fJ), b, fJ)
786- }
787- $Tuple5(fD, el, fe, fG, fl)
788- }
789- else throw("Strict value is not equal to itself.")
790- }
791-
792-
793-func fK (fL,ft,fh,ab,ac) = {
794- let fi = (ac == unit)
795- let da = ba()
796- let db = parseIntValue(da[t])
797- let dc = parseIntValue(da[u])
798- let fM = [if ((fh == bm))
799- then true
800- else aQ("invalid lp asset")]
801- if ((fM == fM))
802- then {
803- let fN = if ((fL == bn))
804- then true
805- else if ((fL == bo))
806- then false
807- else aQ("invalid asset")
808- let fO = if (fN)
809- then toBigInt(bJ(bf(bn)))
810- else toBigInt(bJ(bf(bo)))
811- let fP = if (fN)
812- then db
813- else dc
814- let fQ = bJ(bf(bn))
815- let fR = bJ(bf(bo))
816- let fS = if (fN)
817- then fQ
818- else fR
819- let fT = toBigInt(fS)
820- let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
821- let fU = toBigInt(ft)
822- let fV = max([0, toInt(((fO * (d - pow((d - ((fU * d) / fA)), 18, h, 0, 18, DOWN))) / d))])
823- let fW = fd(fV, aX)
824- let fX = fW._1
825- let fe = fW._2
826- let fY = if (fN)
827- then $Tuple4(fX, 0, (fQ - fV), fR)
828- else $Tuple4(0, fX, fQ, (fR - fV))
829- let fZ = fY._1
830- let ga = fY._2
831- let gb = fY._3
832- let gc = fY._4
833- let fw = bM(D(gc, bq), D(gb, bp))
834- let fx = H(fw, b)
835- let el = if (fi)
836- then nil
837- else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bF(fZ, ga, ft, fx, height, lastBlock.timestamp)), IntegerEntry(W(), fx), IntegerEntry(X(height, lastBlock.timestamp), fx)]
838- let fE = bM(D(fR, bq), D(fQ, bp))
839- let fF = H(fE, b)
840- let fG = {
841- let gd = (toInt(fraction(fO, fU, fA)) * 2)
842- fraction((fX - gd), b, gd)
843- }
844- $Tuple5(fX, el, fe, fG, fN)
845- }
846- else throw("Strict value is not equal to itself.")
847- }
848-
849-
850-func ge () = {
851- let bT = getString(U())
852- if ($isInstanceOf(bT, "String"))
853- then {
854- let gf = bT
855- fromBase58String(gf)
856- }
857- else if ($isInstanceOf(bT, "Unit"))
659+ else if ($isInstanceOf(dW, "Unit"))
858660 then unit
859661 else throw("Match error")
860662 }
861663
862664
863-func gg () = {
864- let bT = getString(V())
865- if ($isInstanceOf(bT, "String"))
665+func fb () = {
666+ let dW = getString(V())
667+ if ($isInstanceOf(dW, "String"))
866668 then {
867- let gf = bT
868- fromBase58String(gf)
669+ let fa = dW
670+ fromBase58String(fa)
869671 }
870- else if ($isInstanceOf(bT, "Unit"))
672+ else if ($isInstanceOf(dW, "Unit"))
871673 then unit
872674 else throw("Match error")
873675 }
874676
875677
876-func gh (eS) = {
877- let bT = ge()
878- if ($isInstanceOf(bT, "ByteVector"))
678+func fc (dL) = {
679+ let dW = eZ()
680+ if ($isInstanceOf(dW, "ByteVector"))
879681 then {
880- let gi = bT
881- (eS.callerPublicKey == gi)
682+ let fd = dW
683+ (dL.callerPublicKey == fd)
882684 }
883- else if ($isInstanceOf(bT, "Unit"))
884- then (eS.caller == this)
685+ else if ($isInstanceOf(dW, "Unit"))
686+ then (dL.caller == this)
885687 else throw("Match error")
886688 }
887689
888690
889-func gj (eS) = {
890- let gk = throw("Permission denied")
891- let bT = ge()
892- if ($isInstanceOf(bT, "ByteVector"))
691+func fe (dL) = {
692+ let ff = throw("Permission denied")
693+ let dW = eZ()
694+ if ($isInstanceOf(dW, "ByteVector"))
893695 then {
894- let gi = bT
895- if ((eS.callerPublicKey == gi))
696+ let fd = dW
697+ if ((dL.callerPublicKey == fd))
896698 then true
897- else gk
699+ else ff
898700 }
899- else if ($isInstanceOf(bT, "Unit"))
900- then if ((eS.caller == this))
701+ else if ($isInstanceOf(dW, "Unit"))
702+ then if ((dL.caller == this))
901703 then true
902- else gk
704+ else ff
903705 else throw("Match error")
904706 }
905707
906708
907-@Callable(eS)
908-func rebalance () = (cA(aM(this, ae())) ++ cA(aM(this, af())))
909-
910-
911-
912-@Callable(eS)
913-func calculateAmountOutForSwapREADONLY (gl,gm,gn) = {
914- let go = if ((gm == false))
709+@Callable(dL)
710+func calculateAmountOutForSwapREADONLY (fg,fh,fi) = {
711+ let fj = if ((fh == false))
915712 then {
916- let gp = aM(this, af())
917- let gq = aM(this, ae())
918- $Tuple2(gp, gq)
713+ let fk = aH(this, af())
714+ let fl = aH(this, ae())
715+ $Tuple2(fk, fl)
919716 }
920717 else {
921- let gp = aM(this, ae())
922- let gq = aM(this, af())
923- $Tuple2(gp, gq)
718+ let fk = aH(this, ae())
719+ let fl = aH(this, af())
720+ $Tuple2(fk, fl)
924721 }
925- let gp = go._1
926- let gq = go._2
927- let gr = bJ(gq)
928- let gs = bJ(gp)
929- let gt = fraction(gs, gl, (gr + gl))
930- let gu = (toBigInt(gr) * toBigInt(gs))
931- let gv = (((toBigInt(bJ(gq)) + toBigInt(gl)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
932- let gw = if ((gv >= gu))
722+ let fk = fj._1
723+ let fl = fj._2
724+ let fm = bE(fl)
725+ let fn = bE(fk)
726+ let fo = fraction(fn, fg, (fm + fg))
727+ let fp = (toBigInt(fm) * toBigInt(fn))
728+ let fq = (((toBigInt(bE(fl)) + toBigInt(fg)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
729+ let fr = if ((fq >= fp))
933730 then true
934731 else throw("new K is fewer error")
935- if ((gw == gw))
936- then $Tuple2(nil, gt)
732+ if ((fr == fr))
733+ then $Tuple2(nil, fo)
937734 else throw("Strict value is not equal to itself.")
938735 }
939736
940737
941738
942-@Callable(eS)
943-func calculateAmountOutForSwapAndSendTokens (gl,gm,gx,gy,gn) = {
944- let gz = {
945- let aW = invoke(aT, "getSwapContractREADONLY", nil, nil)
946- if ($isInstanceOf(aW, "String"))
947- then aW
948- else throw(($getType(aW) + " couldn't be cast to String"))
739+@Callable(dL)
740+func calculateAmountOutForSwapAndSendTokens (fg,fh,fs,ft,fi) = {
741+ let fu = {
742+ let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743+ if ($isInstanceOf(aR, "String"))
744+ then aR
745+ else throw(($getType(aR) + " couldn't be cast to String"))
949746 }
950- let fM = [if ((value(eS.payments[0]).amount >= gl))
747+ let eH = [if ((value(dL.payments[0]).amount >= fg))
951748 then true
952- else aQ("Wrong amount"), if ((eS.caller == addressFromStringValue(gz)))
749+ else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(fu)))
953750 then true
954- else aQ("Permission denied")]
955- if ((fM == fM))
751+ else aL("Permission denied")]
752+ if ((eH == eH))
956753 then {
957- let eT = value(eS.payments[0])
958- let gq = bf(eT.assetId)
959- let gp = if ((gm == false))
960- then aM(this, af())
961- else aM(this, ae())
962- let gr = (bJ(gq) - value(eS.payments[0]).amount)
963- let gs = bJ(gp)
964- let gt = fraction(gs, gl, (gr + gl))
965- let gu = (toBigInt(gr) * toBigInt(gs))
966- let gv = ((toBigInt(bJ(gq)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
967- let gw = if ((gv >= gu))
754+ let dM = value(dL.payments[0])
755+ let fl = ba(dM.assetId)
756+ let fk = if ((fh == false))
757+ then aH(this, af())
758+ else aH(this, ae())
759+ let fm = (bE(fl) - value(dL.payments[0]).amount)
760+ let fn = bE(fk)
761+ let fo = fraction(fn, fg, (fm + fg))
762+ let fp = (toBigInt(fm) * toBigInt(fn))
763+ let fq = ((toBigInt(bE(fl)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
764+ let fr = if ((fq >= fp))
968765 then true
969766 else throw("new K is fewer error")
970- if ((gw == gw))
767+ if ((fr == fr))
971768 then {
972- let gA = if ((gt >= gx))
769+ let fv = if ((fo >= fs))
973770 then true
974771 else throw("Exchange result is fewer coins than expected")
975- if ((gA == gA))
976- then {
977- let gB = cA(gq)
978- if ((gB == gB))
979- then {
980- let gC = cH(gp, gt)
981- if ((gC == gC))
982- then $Tuple2(((gC ++ gB) ++ [ScriptTransfer(addressFromStringValue(gy), gt, bd(gp))]), gt)
983- else throw("Strict value is not equal to itself.")
984- }
985- else throw("Strict value is not equal to itself.")
986- }
772+ if ((fv == fv))
773+ then $Tuple2([ScriptTransfer(addressFromStringValue(ft), fo, aY(fk))], fo)
987774 else throw("Strict value is not equal to itself.")
988775 }
989776 else throw("Strict value is not equal to itself.")
990777 }
991778 else throw("Strict value is not equal to itself.")
992779 }
993780
994781
995782
996-@Callable(eS)
997-func setManager (gD) = {
998- let gE = gj(eS)
999- if ((gE == gE))
783+@Callable(dL)
784+func setManager (fw) = {
785+ let fx = fe(dL)
786+ if ((fx == fx))
1000787 then {
1001- let gF = fromBase58String(gD)
1002- if ((gF == gF))
1003- then [StringEntry(V(), gD)]
788+ let fy = fromBase58String(fw)
789+ if ((fy == fy))
790+ then [StringEntry(V(), fw)]
1004791 else throw("Strict value is not equal to itself.")
1005792 }
1006793 else throw("Strict value is not equal to itself.")
1007794 }
1008795
1009796
1010797
1011-@Callable(eS)
798+@Callable(dL)
1012799 func confirmManager () = {
1013- let gG = gg()
1014- let gH = if (isDefined(gG))
800+ let fz = fb()
801+ let fA = if (isDefined(fz))
1015802 then true
1016803 else throw("No pending manager")
1017- if ((gH == gH))
804+ if ((fA == fA))
1018805 then {
1019- let gI = if ((eS.callerPublicKey == value(gG)))
806+ let fB = if ((dL.callerPublicKey == value(fz)))
1020807 then true
1021808 else throw("You are not pending manager")
1022- if ((gI == gI))
1023- then [StringEntry(U(), toBase58String(value(gG))), DeleteEntry(V())]
809+ if ((fB == fB))
810+ then [StringEntry(U(), toBase58String(value(fz))), DeleteEntry(V())]
1024811 else throw("Strict value is not equal to itself.")
1025812 }
1026813 else throw("Strict value is not equal to itself.")
1027814 }
1028815
1029816
1030817
1031-@Callable(eS)
1032-func put (dG,gJ) = if ((0 > dG))
818+@Callable(dL)
819+func put (cz,fC) = if ((0 > cz))
1033820 then throw("Invalid slippageTolerance passed")
1034821 else {
1035- let eY = eV(eS, dG, true)
1036- let ei = eY._2
1037- let dn = eY._7
1038- let dE = eY._9
1039- let ej = eY._10
1040- let ek = eY._11
1041- let gK = eY._12
1042- let gL = eY._13
1043- let eW = toBigInt(value(eS.payments[0]).amount)
1044- let eX = toBigInt(value(eS.payments[1]).amount)
1045- let ez = es(eW, eX, toBigInt(0))
1046- if ((ez == ez))
822+ let dR = dO(dL, cz, true)
823+ let db = dR._2
824+ let cg = dR._7
825+ let cx = dR._9
826+ let dc = dR._10
827+ let dd = dR._11
828+ let fD = dR._12
829+ let fE = dR._13
830+ let dP = toBigInt(value(dL.payments[0]).amount)
831+ let dQ = toBigInt(value(dL.payments[1]).amount)
832+ let ds = dl(dP, dQ, toBigInt(0))
833+ if ((ds == ds))
1047834 then {
1048- let fa = invoke(aT, "emit", [ei], nil)
1049- if ((fa == fa))
835+ let dU = invoke(aO, "emit", [db], nil)
836+ if ((dU == dU))
1050837 then {
1051- let fb = {
1052- let bT = fa
1053- if ($isInstanceOf(bT, "Address"))
838+ let dV = {
839+ let dW = dU
840+ if ($isInstanceOf(dW, "Address"))
1054841 then {
1055- let fc = bT
1056- invoke(fc, "emit", [ei], nil)
842+ let dX = dW
843+ invoke(dX, "emit", [db], nil)
1057844 }
1058845 else unit
1059846 }
1060- if ((fb == fb))
847+ if ((dV == dV))
1061848 then {
1062- let gM = if ((ej > 0))
1063- then invoke(bt, "put", nil, [AttachedPayment(gK, ej)])
849+ let fF = if ((dc > 0))
850+ then invoke(bo, "put", nil, [AttachedPayment(fD, dc)])
1064851 else nil
1065- if ((gM == gM))
852+ if ((fF == fF))
1066853 then {
1067- let gN = if ((ek > 0))
1068- then invoke(bt, "put", nil, [AttachedPayment(gL, ek)])
854+ let fG = if ((dd > 0))
855+ then invoke(bo, "put", nil, [AttachedPayment(fE, dd)])
1069856 else nil
1070- if ((gN == gN))
857+ if ((fG == fG))
1071858 then {
1072- let gO = if (gJ)
859+ let fH = if (fC)
1073860 then {
1074- let gP = invoke(bs, "stake", nil, [AttachedPayment(dn, ei)])
1075- if ((gP == gP))
861+ let fI = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862+ if ((fI == fI))
1076863 then nil
1077864 else throw("Strict value is not equal to itself.")
1078865 }
1079- else [ScriptTransfer(eS.caller, ei, dn)]
1080- let gQ = eA(0, 0, 0)
1081- if ((gQ == gQ))
866+ else [ScriptTransfer(dL.caller, db, cg)]
867+ let fJ = dt(0, 0, 0)
868+ if ((fJ == fJ))
1082869 then {
1083- let er = gQ._2
1084- let gR = gQ._1
1085- let gS = eE(ez, er)
1086- if ((gS == gS))
1087- then {
1088- let gT = invoke(this, "rebalance", nil, nil)
1089- if ((gT == gT))
1090- then ((dE ++ gO) ++ gR)
1091- else throw("Strict value is not equal to itself.")
1092- }
870+ let dk = fJ._2
871+ let fK = fJ._1
872+ let fL = dx(ds, dk)
873+ if ((fL == fL))
874+ then ((cx ++ fH) ++ fK)
1093875 else throw("Strict value is not equal to itself.")
1094876 }
1095877 else throw("Strict value is not equal to itself.")
1096878 }
1097879 else throw("Strict value is not equal to itself.")
1098880 }
1099881 else throw("Strict value is not equal to itself.")
1100882 }
1101883 else throw("Strict value is not equal to itself.")
1102884 }
1103885 else throw("Strict value is not equal to itself.")
1104886 }
1105887 else throw("Strict value is not equal to itself.")
1106888 }
1107889
1108890
1109891
1110-@Callable(eS)
1111-func putForFree (gU) = if ((0 > gU))
892+@Callable(dL)
893+func putForFree (fM) = if ((0 > fM))
1112894 then throw("Invalid value passed")
1113895 else {
1114- let eY = eV(eS, gU, false)
1115- let dE = eY._9
1116- let eW = toBigInt(value(eS.payments[0]).amount)
1117- let eX = toBigInt(value(eS.payments[1]).amount)
1118- let ez = es(eW, eX, toBigInt(0))
1119- if ((ez == ez))
896+ let dR = dO(dL, fM, false)
897+ let cx = dR._9
898+ let dP = toBigInt(value(dL.payments[0]).amount)
899+ let dQ = toBigInt(value(dL.payments[1]).amount)
900+ let ds = dl(dP, dQ, toBigInt(0))
901+ if ((ds == ds))
1120902 then {
1121- let gV = eA(0, 0, 0)
1122- let gR = gV._1
1123- let er = gV._2
1124- let gS = eE(ez, er)
1125- if ((gS == gS))
1126- then (dE ++ gR)
903+ let fN = dt(0, 0, 0)
904+ let fK = fN._1
905+ let dk = fN._2
906+ let fL = dx(ds, dk)
907+ if ((fL == fL))
908+ then (cx ++ fK)
1127909 else throw("Strict value is not equal to itself.")
1128910 }
1129911 else throw("Strict value is not equal to itself.")
1130912 }
1131913
1132914
1133915
1134-@Callable(eS)
1135-func putOneTkn (gW,gX) = {
1136- let gY = {
1137- let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1138- if ($isInstanceOf(aW, "Boolean"))
1139- then aW
1140- else throw(($getType(aW) + " couldn't be cast to Boolean"))
916+@Callable(dL)
917+func putOneTkn (fO,fP) = {
918+ let fQ = {
919+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
920+ if ($isInstanceOf(aR, "Boolean"))
921+ then aR
922+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
1141923 }
1142- let gZ = if (if (if (aY())
924+ let fR = if (if (if (aT())
1143925 then true
1144- else (bl == l))
926+ else (bg == l))
1145927 then true
1146- else (bl == n))
928+ else (bg == n))
1147929 then true
1148- else gY
1149- let fM = [if (if (!(gZ))
930+ else fQ
931+ let eH = [if (if (!(fR))
1150932 then true
1151- else gh(eS))
933+ else fc(dL))
1152934 then true
1153- else aQ("put operation is blocked by admin"), if ((size(eS.payments) == 1))
935+ else aL("put operation is blocked by admin"), if ((size(dL.payments) == 1))
1154936 then true
1155- else aQ("exactly 1 payment are expected")]
1156- if ((fM == fM))
937+ else aL("exactly 1 payment are expected")]
938+ if ((eH == eH))
1157939 then {
1158- let ha = eS.payments[0]
1159- let fh = ha.assetId
1160- let fg = ha.amount
1161- let ez = if ((fh == bn))
1162- then es(toBigInt(fg), toBigInt(0), toBigInt(0))
1163- else if ((fh == bo))
1164- then es(toBigInt(0), toBigInt(fg), toBigInt(0))
1165- else aQ("payment asset is not supported")
1166- if ((ez == ez))
940+ let fS = dL.payments[0]
941+ let ec = fS.assetId
942+ let eb = fS.amount
943+ let ds = if ((ec == bi))
944+ then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
945+ else if ((ec == bj))
946+ then dl(toBigInt(0), toBigInt(eb), toBigInt(0))
947+ else aL("payment asset is not supported")
948+ if ((ds == ds))
1167949 then {
1168- let ab = eS.caller
1169- let ac = eS.transactionId
1170- let hb = ff(fg, fh, ab, ac)
1171- if ((hb == hb))
950+ let ab = dL.caller
951+ let ac = dL.transactionId
952+ let fT = ea(eb, ec, ab, ac)
953+ if ((fT == fT))
1172954 then {
1173- let fl = hb._5
1174- let hc = hb._4
1175- let fe = hb._3
1176- let el = hb._2
1177- let hd = hb._1
1178- let he = if (if ((gW > 0))
1179- then (gW > hd)
955+ let eg = fT._5
956+ let fU = fT._4
957+ let dZ = fT._3
958+ let de = fT._2
959+ let fV = fT._1
960+ let fW = if (if ((fO > 0))
961+ then (fO > fV)
1180962 else false)
1181- then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1182- else hd
1183- let fa = eZ(he)
1184- if ((fa == fa))
963+ then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
964+ else fV
965+ let dU = dS(fW)
966+ if ((dU == dU))
1185967 then {
1186- let gO = if (gX)
968+ let fH = if (fP)
1187969 then {
1188- let hf = invoke(bs, "stake", nil, [AttachedPayment(bm, he)])
1189- if ((hf == hf))
970+ let fX = invoke(bn, "stake", nil, [AttachedPayment(bh, fW)])
971+ if ((fX == fX))
1190972 then nil
1191973 else throw("Strict value is not equal to itself.")
1192974 }
1193- else [ScriptTransfer(eS.caller, he, bm)]
1194- let hg = if ((fe > 0))
1195- then [ScriptTransfer(aU, fe, fh)]
975+ else [ScriptTransfer(dL.caller, fW, bh)]
976+ let fY = if ((dZ > 0))
977+ then [ScriptTransfer(aP, dZ, ec)]
1196978 else nil
1197- let hh = if ((this == aU))
979+ let fZ = if ((this == aP))
1198980 then $Tuple2(0, 0)
1199- else if (fl)
1200- then $Tuple2(-(fe), 0)
1201- else $Tuple2(0, -(fe))
1202- let eB = hh._1
1203- let eC = hh._2
1204- let hi = eA(eB, eC, 0)
1205- let gR = hi._1
1206- let er = hi._2
1207- let eL = value(getString(aj))
1208- let gS = eE(ez, er)
1209- if ((gS == gS))
981+ else if (eg)
982+ then $Tuple2(-(dZ), 0)
983+ else $Tuple2(0, -(dZ))
984+ let du = fZ._1
985+ let dv = fZ._2
986+ let ga = dt(du, dv, 0)
987+ let fK = ga._1
988+ let dk = ga._2
989+ let dE = value(getString(aj))
990+ let fL = dx(ds, dk)
991+ if ((fL == fL))
992+ then $Tuple2((((de ++ fH) ++ fY) ++ fK), fW)
993+ else throw("Strict value is not equal to itself.")
994+ }
995+ else throw("Strict value is not equal to itself.")
996+ }
997+ else throw("Strict value is not equal to itself.")
998+ }
999+ else throw("Strict value is not equal to itself.")
1000+ }
1001+ else throw("Strict value is not equal to itself.")
1002+ }
1003+
1004+
1005+
1006+@Callable(dL)
1007+func putOneTknREADONLY (ec,eb) = {
1008+ let gb = ea(eb, aY(ec), unit, unit)
1009+ let fV = gb._1
1010+ let de = gb._2
1011+ let dZ = gb._3
1012+ let fU = gb._4
1013+ let eg = gb._5
1014+ $Tuple2(nil, $Tuple3(fV, dZ, fU))
1015+ }
1016+
1017+
1018+
1019+@Callable(dL)
1020+func getOneTkn (gc,fO) = {
1021+ let fQ = {
1022+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1023+ if ($isInstanceOf(aR, "Boolean"))
1024+ then aR
1025+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
1026+ }
1027+ let gd = if (if (aT())
1028+ then true
1029+ else (bg == n))
1030+ then true
1031+ else fQ
1032+ let eH = [if (if (!(gd))
1033+ then true
1034+ else fc(dL))
1035+ then true
1036+ else aL("get operation is blocked by admin"), if ((size(dL.payments) == 1))
1037+ then true
1038+ else aL("exactly 1 payment are expected")]
1039+ if ((eH == eH))
1040+ then {
1041+ let eG = aY(gc)
1042+ let fS = dL.payments[0]
1043+ let ec = fS.assetId
1044+ let eo = fS.amount
1045+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1046+ if ((ds == ds))
1047+ then {
1048+ let ab = dL.caller
1049+ let ac = dL.transactionId
1050+ let ge = eF(eG, eo, ec, ab, ac)
1051+ if ((ge == ge))
1052+ then {
1053+ let eI = ge._5
1054+ let fU = ge._4
1055+ let dZ = ge._3
1056+ let de = ge._2
1057+ let gf = ge._1
1058+ let dT = if (if ((fO > 0))
1059+ then (fO > gf)
1060+ else false)
1061+ then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1062+ else gf
1063+ let gg = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064+ if ((gg == gg))
1065+ then {
1066+ let gh = [ScriptTransfer(ab, dT, eG)]
1067+ let fY = if ((dZ > 0))
1068+ then [ScriptTransfer(aP, dZ, eG)]
1069+ else nil
1070+ let gi = {
1071+ let gj = if ((this == aP))
1072+ then 0
1073+ else dZ
1074+ if (eI)
1075+ then $Tuple2(-((dT + gj)), 0)
1076+ else $Tuple2(0, -((dT + gj)))
1077+ }
1078+ let du = gi._1
1079+ let dv = gi._2
1080+ let gk = dt(du, dv, 0)
1081+ let fK = gk._1
1082+ let dk = gk._2
1083+ let fL = dx(ds, dk)
1084+ if ((fL == fL))
1085+ then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
1086+ else throw("Strict value is not equal to itself.")
1087+ }
1088+ else throw("Strict value is not equal to itself.")
1089+ }
1090+ else throw("Strict value is not equal to itself.")
1091+ }
1092+ else throw("Strict value is not equal to itself.")
1093+ }
1094+ else throw("Strict value is not equal to itself.")
1095+ }
1096+
1097+
1098+
1099+@Callable(dL)
1100+func getOneTknREADONLY (eG,eo) = {
1101+ let gl = eF(aY(eG), eo, bh, unit, unit)
1102+ let gf = gl._1
1103+ let de = gl._2
1104+ let dZ = gl._3
1105+ let fU = gl._4
1106+ let eI = gl._5
1107+ $Tuple2(nil, $Tuple3(gf, dZ, fU))
1108+ }
1109+
1110+
1111+
1112+@Callable(dL)
1113+func unstakeAndGetOneTkn (gm,gc,fO) = {
1114+ let fQ = {
1115+ let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1116+ if ($isInstanceOf(aR, "Boolean"))
1117+ then aR
1118+ else throw(($getType(aR) + " couldn't be cast to Boolean"))
1119+ }
1120+ let gd = if (if (aT())
1121+ then true
1122+ else (bg == n))
1123+ then true
1124+ else fQ
1125+ let eH = [if (if (!(gd))
1126+ then true
1127+ else fc(dL))
1128+ then true
1129+ else aL("get operation is blocked by admin"), if ((size(dL.payments) == 0))
1130+ then true
1131+ else aL("no payments are expected")]
1132+ if ((eH == eH))
1133+ then {
1134+ let eG = aY(gc)
1135+ let ab = dL.caller
1136+ let ac = dL.transactionId
1137+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1138+ if ((ds == ds))
1139+ then {
1140+ let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1141+ if ((gn == gn))
1142+ then {
1143+ let go = eF(eG, gm, bh, ab, ac)
1144+ if ((go == go))
1145+ then {
1146+ let eI = go._5
1147+ let fU = go._4
1148+ let dZ = go._3
1149+ let de = go._2
1150+ let gf = go._1
1151+ let dT = if (if ((fO > 0))
1152+ then (fO > gf)
1153+ else false)
1154+ then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1155+ else gf
1156+ let gg = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1157+ if ((gg == gg))
12101158 then {
1211- let gT = invoke(this, "rebalance", nil, nil)
1212- if ((gT == gT))
1213- then $Tuple2((((el ++ gO) ++ hg) ++ gR), he)
1159+ let gh = [ScriptTransfer(dL.caller, dT, eG)]
1160+ let fY = if ((dZ > 0))
1161+ then [ScriptTransfer(aP, dZ, eG)]
1162+ else nil
1163+ let gp = {
1164+ let gj = if ((this == aP))
1165+ then 0
1166+ else dZ
1167+ if (eI)
1168+ then $Tuple2(-((dT + gj)), 0)
1169+ else $Tuple2(0, -((dT + gj)))
1170+ }
1171+ let du = gp._1
1172+ let dv = gp._2
1173+ let gq = dt(du, dv, 0)
1174+ let fK = gq._1
1175+ let dk = gq._2
1176+ let fL = dx(ds, dk)
1177+ if ((fL == fL))
1178+ then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
12141179 else throw("Strict value is not equal to itself.")
12151180 }
12161181 else throw("Strict value is not equal to itself.")
12171182 }
12181183 else throw("Strict value is not equal to itself.")
12191184 }
12201185 else throw("Strict value is not equal to itself.")
12211186 }
12221187 else throw("Strict value is not equal to itself.")
12231188 }
12241189 else throw("Strict value is not equal to itself.")
12251190 }
12261191
12271192
12281193
1229-@Callable(eS)
1230-func putOneTknREADONLY (fh,fg) = {
1231- let hj = ff(fg, bd(fh), unit, unit)
1232- let hd = hj._1
1233- let el = hj._2
1234- let fe = hj._3
1235- let hc = hj._4
1236- let fl = hj._5
1237- $Tuple2(nil, $Tuple3(hd, fe, hc))
1238- }
1239-
1240-
1241-
1242-@Callable(eS)
1243-func getOneTkn (hk,gW) = {
1244- let gY = {
1245- let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1246- if ($isInstanceOf(aW, "Boolean"))
1247- then aW
1248- else throw(($getType(aW) + " couldn't be cast to Boolean"))
1249- }
1250- let hl = if (if (aY())
1251- then true
1252- else (bl == n))
1253- then true
1254- else gY
1255- let fM = [if (if (!(hl))
1256- then true
1257- else gh(eS))
1258- then true
1259- else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 1))
1260- then true
1261- else aQ("exactly 1 payment are expected")]
1262- if ((fM == fM))
1194+@Callable(dL)
1195+func get () = {
1196+ let cP = dK(dL)
1197+ let gr = cP._1
1198+ let cw = cP._2
1199+ let dN = cP._3
1200+ let ce = cP._4
1201+ let cx = cP._5
1202+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1203+ if ((ds == ds))
12631204 then {
1264- let fL = bd(hk)
1265- let ha = eS.payments[0]
1266- let fh = ha.assetId
1267- let ft = ha.amount
1268- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1269- if ((ez == ez))
1205+ let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206+ if ((gs == gs))
12701207 then {
1271- let ab = eS.caller
1272- let ac = eS.transactionId
1273- let hm = fK(fL, ft, fh, ab, ac)
1274- if ((hm == hm))
1275- then {
1276- let fN = hm._5
1277- let hc = hm._4
1278- let fe = hm._3
1279- let el = hm._2
1280- let hn = hm._1
1281- let bW = if (if ((gW > 0))
1282- then (gW > hn)
1283- else false)
1284- then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1285- else hn
1286- let ho = invoke(aT, "burn", [ft], [AttachedPayment(fh, ft)])
1287- if ((ho == ho))
1288- then {
1289- let gC = cH(hk, bW)
1290- let hp = [ScriptTransfer(ab, bW, fL)]
1291- let hg = if ((fe > 0))
1292- then [ScriptTransfer(aU, fe, fL)]
1293- else nil
1294- let hq = {
1295- let hr = if ((this == aU))
1296- then 0
1297- else fe
1298- if (fN)
1299- then $Tuple2(-((bW + hr)), 0)
1300- else $Tuple2(0, -((bW + hr)))
1301- }
1302- let eB = hq._1
1303- let eC = hq._2
1304- let hs = eA(eB, eC, 0)
1305- let gR = hs._1
1306- let er = hs._2
1307- let gS = eE(ez, er)
1308- if ((gS == gS))
1309- then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
1310- else throw("Strict value is not equal to itself.")
1311- }
1312- else throw("Strict value is not equal to itself.")
1313- }
1208+ let gt = dt(-(gr), -(cw), 0)
1209+ let fK = gt._1
1210+ let dk = gt._2
1211+ let fL = dx(ds, dk)
1212+ if ((fL == fL))
1213+ then (cx ++ fK)
13141214 else throw("Strict value is not equal to itself.")
13151215 }
13161216 else throw("Strict value is not equal to itself.")
13171217 }
13181218 else throw("Strict value is not equal to itself.")
13191219 }
13201220
13211221
13221222
1323-@Callable(eS)
1324-func getOneTknREADONLY (fL,ft) = {
1325- let ht = fK(bd(fL), ft, bm, unit, unit)
1326- let hn = ht._1
1327- let el = ht._2
1328- let fe = ht._3
1329- let hc = ht._4
1330- let fN = ht._5
1331- $Tuple2(nil, $Tuple3(hn, fe, hc))
1223+@Callable(dL)
1224+func getNoLess (gu,gv) = {
1225+ let cP = dK(dL)
1226+ let cv = cP._1
1227+ let cw = cP._2
1228+ let dN = cP._3
1229+ let ce = cP._4
1230+ let cx = cP._5
1231+ if ((gu > cv))
1232+ then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gu)))
1233+ else if ((gv > cw))
1234+ then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gv)))
1235+ else {
1236+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1237+ if ((ds == ds))
1238+ then {
1239+ let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240+ if ((gs == gs))
1241+ then {
1242+ let gw = dt(-(cv), -(cw), 0)
1243+ let fK = gw._1
1244+ let dk = gw._2
1245+ let fL = dx(ds, dk)
1246+ if ((fL == fL))
1247+ then (cx ++ fK)
1248+ else throw("Strict value is not equal to itself.")
1249+ }
1250+ else throw("Strict value is not equal to itself.")
1251+ }
1252+ else throw("Strict value is not equal to itself.")
1253+ }
13321254 }
13331255
13341256
13351257
1336-@Callable(eS)
1337-func unstakeAndGetOneTkn (hu,hk,gW) = {
1338- let gY = {
1339- let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1340- if ($isInstanceOf(aW, "Boolean"))
1341- then aW
1342- else throw(($getType(aW) + " couldn't be cast to Boolean"))
1343- }
1344- let hl = if (if (aY())
1345- then true
1346- else (bl == n))
1347- then true
1348- else gY
1349- let fM = [if (if (!(hl))
1350- then true
1351- else gh(eS))
1352- then true
1353- else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 0))
1354- then true
1355- else aQ("no payments are expected")]
1356- if ((fM == fM))
1258+@Callable(dL)
1259+func unstakeAndGet (dT) = {
1260+ let gx = if ((size(dL.payments) != 0))
1261+ then throw("No payments are expected")
1262+ else true
1263+ if ((gx == gx))
13571264 then {
1358- let fL = bd(hk)
1359- let ab = eS.caller
1360- let ac = eS.transactionId
1361- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1362- if ((ez == ez))
1265+ let bT = aV()
1266+ let cg = fromBase58String(bT[q])
1267+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1268+ if ((ds == ds))
13631269 then {
1364- let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1365- if ((hv == hv))
1270+ let gn = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271+ if ((gn == gn))
13661272 then {
1367- let hw = fK(fL, hu, bm, ab, ac)
1368- if ((hw == hw))
1273+ let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
1274+ let cv = cP._1
1275+ let cw = cP._2
1276+ let cj = parseIntValue(cP._9)
1277+ let cx = cP._10
1278+ let gy = if (if (aT())
1279+ then true
1280+ else (cj == n))
1281+ then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
1282+ else true
1283+ if ((gy == gy))
13691284 then {
1370- let fN = hw._5
1371- let hc = hw._4
1372- let fe = hw._3
1373- let el = hw._2
1374- let hn = hw._1
1375- let bW = if (if ((gW > 0))
1376- then (gW > hn)
1377- else false)
1378- then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1379- else hn
1380- let ho = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1381- if ((ho == ho))
1285+ let gs = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286+ if ((gs == gs))
13821287 then {
1383- let gC = cH(hk, bW)
1384- let hp = [ScriptTransfer(eS.caller, bW, fL)]
1385- let hg = if ((fe > 0))
1386- then [ScriptTransfer(aU, fe, fL)]
1387- else nil
1388- let hx = {
1389- let hr = if ((this == aU))
1390- then 0
1391- else fe
1392- if (fN)
1393- then $Tuple2(-((bW + hr)), 0)
1394- else $Tuple2(0, -((bW + hr)))
1395- }
1396- let eB = hx._1
1397- let eC = hx._2
1398- let hy = eA(eB, eC, 0)
1399- let gR = hy._1
1400- let er = hy._2
1401- let gS = eE(ez, er)
1402- if ((gS == gS))
1403- then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
1288+ let gz = dt(-(cv), -(cw), 0)
1289+ let fK = gz._1
1290+ let dk = gz._2
1291+ let fL = dx(ds, dk)
1292+ if ((fL == fL))
1293+ then (cx ++ fK)
14041294 else throw("Strict value is not equal to itself.")
14051295 }
14061296 else throw("Strict value is not equal to itself.")
14071297 }
14081298 else throw("Strict value is not equal to itself.")
14091299 }
14101300 else throw("Strict value is not equal to itself.")
14111301 }
14121302 else throw("Strict value is not equal to itself.")
14131303 }
14141304 else throw("Strict value is not equal to itself.")
14151305 }
14161306
14171307
14181308
1419-@Callable(eS)
1420-func get () = {
1421- let dW = eR(eS)
1422- let dC = dW._1
1423- let dD = dW._2
1424- let eU = dW._3
1425- let dl = dW._4
1426- let dE = dW._5
1427- let gC = cM(dC, dD)
1428- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1429- if ((ez == ez))
1309+@Callable(dL)
1310+func unstakeAndGetNoLess (gm,gA,gv) = {
1311+ let gd = if (aT())
1312+ then true
1313+ else (bg == n)
1314+ let eH = [if (!(gd))
1315+ then true
1316+ else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
1317+ then true
1318+ else throw("no payments are expected")]
1319+ if ((eH == eH))
14301320 then {
1431- let hz = invoke(aT, "burn", [eU], [AttachedPayment(dl, eU)])
1432- if ((hz == hz))
1321+ let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1322+ if ((ds == ds))
14331323 then {
1434- let hA = eA(-(dC), -(dD), 0)
1435- let gR = hA._1
1436- let er = hA._2
1437- let gS = eE(ez, er)
1438- if ((gS == gS))
1439- then ((gC ++ dE) ++ gR)
1440- else throw("Strict value is not equal to itself.")
1441- }
1442- else throw("Strict value is not equal to itself.")
1443- }
1444- else throw("Strict value is not equal to itself.")
1445- }
1446-
1447-
1448-
1449-@Callable(eS)
1450-func getNoLess (hB,hC) = {
1451- let dW = eR(eS)
1452- let dC = dW._1
1453- let dD = dW._2
1454- let eU = dW._3
1455- let dl = dW._4
1456- let dE = dW._5
1457- if ((hB > dC))
1458- then throw(((("noLessThenAmtAsset failed: " + toString(dC)) + " < ") + toString(hB)))
1459- else if ((hC > dD))
1460- then throw(((("noLessThenPriceAsset failed: " + toString(dD)) + " < ") + toString(hC)))
1461- else {
1462- let gC = cM(dC, dD)
1463- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1464- if ((ez == ez))
1465- then {
1466- let hz = invoke(aT, "burn", [eU], [AttachedPayment(dl, eU)])
1467- if ((hz == hz))
1468- then {
1469- let hD = eA(-(dC), -(dD), 0)
1470- let gR = hD._1
1471- let er = hD._2
1472- let gS = eE(ez, er)
1473- if ((gS == gS))
1474- then ((gC ++ dE) ++ gR)
1475- else throw("Strict value is not equal to itself.")
1476- }
1477- else throw("Strict value is not equal to itself.")
1478- }
1479- else throw("Strict value is not equal to itself.")
1480- }
1481- }
1482-
1483-
1484-
1485-@Callable(eS)
1486-func unstakeAndGet (bW) = {
1487- let hE = if ((size(eS.payments) != 0))
1488- then throw("No payments are expected")
1489- else true
1490- if ((hE == hE))
1491- then {
1492- let da = ba()
1493- let dn = fromBase58String(da[q])
1494- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1495- if ((ez == ez))
1496- then {
1497- let hv = invoke(bs, "unstake", [toBase58String(dn), bW], nil)
1498- if ((hv == hv))
1324+ let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1325+ if ((gn == gn))
14991326 then {
1500- let dW = dj(toBase58String(eS.transactionId), toBase58String(dn), bW, eS.caller)
1501- let dC = dW._1
1502- let dD = dW._2
1503- let dq = parseIntValue(dW._9)
1504- let dE = dW._10
1505- let gC = cM(dC, dD)
1506- let hF = if (if (aY())
1327+ let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gm, dL.caller)
1328+ let cv = cP._1
1329+ let cw = cP._2
1330+ let cx = cP._10
1331+ let gB = [if ((cv >= gA))
15071332 then true
1508- else (dq == n))
1509- then throw(("Get operation is blocked by admin. Status = " + toString(dq)))
1510- else true
1511- if ((hF == hF))
1333+ else throw(makeString(["amount asset amount to receive is less than ", toString(gA)], "")), if ((cw >= gv))
1334+ then true
1335+ else throw(makeString(["price asset amount to receive is less than ", toString(gv)], ""))]
1336+ if ((gB == gB))
15121337 then {
1513- let hz = invoke(aT, "burn", [bW], [AttachedPayment(dn, bW)])
1514- if ((hz == hz))
1338+ let gs = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1339+ if ((gs == gs))
15151340 then {
1516- let hG = eA(-(dC), -(dD), 0)
1517- let gR = hG._1
1518- let er = hG._2
1519- let gS = eE(ez, er)
1520- if ((gS == gS))
1521- then ((gC ++ dE) ++ gR)
1341+ let gC = dt(-(cv), -(cw), 0)
1342+ let fK = gC._1
1343+ let dk = gC._2
1344+ let fL = dx(ds, dk)
1345+ if ((fL == fL))
1346+ then (cx ++ fK)
15221347 else throw("Strict value is not equal to itself.")
15231348 }
15241349 else throw("Strict value is not equal to itself.")
15251350 }
15261351 else throw("Strict value is not equal to itself.")
15271352 }
15281353 else throw("Strict value is not equal to itself.")
15291354 }
15301355 else throw("Strict value is not equal to itself.")
15311356 }
15321357 else throw("Strict value is not equal to itself.")
15331358 }
15341359
15351360
15361361
1537-@Callable(eS)
1538-func unstakeAndGetNoLess (hu,hH,hC) = {
1539- let hl = if (aY())
1540- then true
1541- else (bl == n)
1542- let fM = [if (!(hl))
1543- then true
1544- else throw("get operation is blocked by admin"), if ((size(eS.payments) == 0))
1545- then true
1546- else throw("no payments are expected")]
1547- if ((fM == fM))
1362+@Callable(dL)
1363+func activate (gD,gE) = if ((toString(dL.caller) != toString(aO)))
1364+ then throw("permissions denied")
1365+ else $Tuple2([StringEntry(ae(), gD), StringEntry(af(), gE)], "success")
1366+
1367+
1368+
1369+@Callable(dL)
1370+func refreshKLp () = {
1371+ let gF = valueOrElse(getInteger(ak), 0)
1372+ let gG = if (((height - gF) >= an))
1373+ then unit
1374+ else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1375+ if ((gG == gG))
15481376 then {
1549- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1550- if ((ez == ez))
1551- then {
1552- let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1553- if ((hv == hv))
1554- then {
1555- let dW = dj(toBase58String(eS.transactionId), toBase58String(bm), hu, eS.caller)
1556- let dC = dW._1
1557- let dD = dW._2
1558- let dE = dW._10
1559- let gC = cM(dC, dD)
1560- let hI = [if ((dC >= hH))
1561- then true
1562- else throw(makeString(["amount asset amount to receive is less than ", toString(hH)], "")), if ((dD >= hC))
1563- then true
1564- else throw(makeString(["price asset amount to receive is less than ", toString(hC)], ""))]
1565- if ((hI == hI))
1566- then {
1567- let hz = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1568- if ((hz == hz))
1569- then {
1570- let hJ = eA(-(dC), -(dD), 0)
1571- let gR = hJ._1
1572- let er = hJ._2
1573- let gS = eE(ez, er)
1574- if ((gS == gS))
1575- then ((gC ++ dE) ++ gR)
1576- else throw("Strict value is not equal to itself.")
1577- }
1578- else throw("Strict value is not equal to itself.")
1579- }
1580- else throw("Strict value is not equal to itself.")
1581- }
1582- else throw("Strict value is not equal to itself.")
1583- }
1584- else throw("Strict value is not equal to itself.")
1377+ let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
1378+ let gH = dt(0, 0, 0)
1379+ let gI = gH._1
1380+ let dk = gH._2
1381+ let dw = if ((dE != dk))
1382+ then gI
1383+ else aL("nothing to refresh")
1384+ $Tuple2(dw, toString(dk))
15851385 }
15861386 else throw("Strict value is not equal to itself.")
15871387 }
15881388
15891389
15901390
1591-@Callable(eS)
1592-func activate (hK,hL) = if ((toString(eS.caller) != toString(aT)))
1593- then throw("permissions denied")
1594- else $Tuple2([StringEntry(ae(), hK), StringEntry(af(), hL)], "success")
1391+@Callable(dL)
1392+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aV())
15951393
15961394
15971395
1598-@Callable(eS)
1599-func refreshKLp () = {
1600- let hM = valueOrElse(getInteger(ak), 0)
1601- let hN = if (((height - hM) >= an))
1602- then unit
1603- else aQ(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1604- if ((hN == hN))
1605- then {
1606- let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
1607- let hO = eA(0, 0, 0)
1608- let hP = hO._1
1609- let er = hO._2
1610- let eD = if ((eL != er))
1611- then hP
1612- else aQ("nothing to refresh")
1613- $Tuple2(eD, toString(er))
1614- }
1615- else throw("Strict value is not equal to itself.")
1396+@Callable(dL)
1397+func getAccBalanceWrapperREADONLY (bF) = $Tuple2(nil, bE(bF))
1398+
1399+
1400+
1401+@Callable(dL)
1402+func calcPricesWrapperREADONLY (bN,bO,bS) = {
1403+ let cb = bR(bN, bO, bS)
1404+ $Tuple2(nil, [toString(cb[0]), toString(cb[1]), toString(cb[2])])
16161405 }
16171406
16181407
16191408
1620-@Callable(eS)
1621-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ba())
1409+@Callable(dL)
1410+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16221411
16231412
16241413
1625-@Callable(eS)
1626-func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bJ(ap))
1414+@Callable(dL)
1415+func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
16271416
16281417
16291418
1630-@Callable(eS)
1631-func calcPricesWrapperREADONLY (cU,cV,cZ) = {
1632- let di = cY(cU, cV, cZ)
1633- $Tuple2(nil, [toString(di[0]), toString(di[1]), toString(di[2])])
1419+@Callable(dL)
1420+func calcPriceBigIntWrapperREADONLY (bH,bI) = $Tuple2(nil, toString(bG(parseBigIntValue(bH), parseBigIntValue(bI))))
1421+
1422+
1423+
1424+@Callable(dL)
1425+func estimatePutOperationWrapperREADONLY (cd,cz,cA,cB,cC,cD,ab,cE,cF) = $Tuple2(nil, cy(cd, cz, cA, cB, cC, cD, ab, cE, cF))
1426+
1427+
1428+
1429+@Callable(dL)
1430+func estimateGetOperationWrapperREADONLY (cd,ce,cf,ab) = {
1431+ let cP = cc(cd, ce, cf, addressFromStringValue(ab))
1432+ $Tuple2(nil, $Tuple10(cP._1, cP._2, cP._3, cP._4, cP._5, cP._6, cP._7, toString(cP._8), cP._9, cP._10))
16341433 }
16351434
16361435
16371436
1638-@Callable(eS)
1639-func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
1640-
1641-
1642-
1643-@Callable(eS)
1644-func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
1645-
1646-
1647-
1648-@Callable(eS)
1649-func calcPriceBigIntWrapperREADONLY (bN,bO) = $Tuple2(nil, toString(bM(parseBigIntValue(bN), parseBigIntValue(bO))))
1650-
1651-
1652-
1653-@Callable(eS)
1654-func estimatePutOperationWrapperREADONLY (dk,dG,dH,dI,dJ,dK,ab,dL,dM) = $Tuple2(nil, dF(dk, dG, dH, dI, dJ, dK, ab, dL, dM))
1655-
1656-
1657-
1658-@Callable(eS)
1659-func estimateGetOperationWrapperREADONLY (dk,dl,dm,ab) = {
1660- let dW = dj(dk, dl, dm, addressFromStringValue(ab))
1661- $Tuple2(nil, $Tuple10(dW._1, dW._2, dW._3, dW._4, dW._5, dW._6, dW._7, toString(dW._8), dW._9, dW._10))
1437+@Callable(dL)
1438+func statsREADONLY () = {
1439+ let bT = aV()
1440+ let cg = fromBase58String(bT[q])
1441+ let gJ = bT[r]
1442+ let gK = bT[s]
1443+ let cI = bT[v]
1444+ let cJ = bT[w]
1445+ let bU = parseIntValue(bT[t])
1446+ let bV = parseIntValue(bT[u])
1447+ let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1448+ let gM = bE(gJ)
1449+ let gN = bE(gK)
1450+ let gO = if ((gL == 0))
1451+ then [e, e, e]
1452+ else bR(gM, gN, gL)
1453+ let cq = 0
1454+ let gP = H(gO[1], b)
1455+ let gQ = H(gO[2], b)
1456+ let gR = value(getInteger(aO, ay(toString(this))))
1457+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gM), toString(gN), toString(gL), toString(cq), toString(gP), toString(gQ), toString(gR)], j))
16621458 }
16631459
16641460
16651461
1666-@Callable(eS)
1667-func statsREADONLY () = {
1668- let da = ba()
1669- let dn = fromBase58String(da[q])
1670- let hQ = da[r]
1671- let hR = da[s]
1672- let dP = da[v]
1673- let dQ = da[w]
1674- let db = parseIntValue(da[t])
1675- let dc = parseIntValue(da[u])
1676- let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1677- let hT = bJ(hQ)
1678- let hU = bJ(hR)
1679- let hV = if ((hS == 0))
1680- then [e, e, e]
1681- else cY(hT, hU, hS)
1682- let dx = 0
1683- let hW = H(hV[1], b)
1684- let hX = H(hV[2], b)
1685- let hY = value(getInteger(aT, aD(toString(this))))
1686- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hT), toString(hU), toString(hS), toString(dx), toString(hW), toString(hX), toString(hY)], j))
1462+@Callable(dL)
1463+func evaluatePutByAmountAssetREADONLY (cA) = {
1464+ let bT = aV()
1465+ let cg = fromBase58String(bT[q])
1466+ let cG = bT[r]
1467+ let ch = fromBase58String(cG)
1468+ let cH = bT[s]
1469+ let ci = fromBase58String(cH)
1470+ let bU = parseIntValue(bT[t])
1471+ let bV = parseIntValue(bT[u])
1472+ let cj = bT[p]
1473+ let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474+ let gM = bE(cG)
1475+ let gN = bE(cH)
1476+ let bP = D(gM, bU)
1477+ let bQ = D(gN, bV)
1478+ let cp = if ((gL == 0))
1479+ then e
1480+ else bG(bQ, bP)
1481+ let cM = D(cA, bU)
1482+ let cN = fraction(cM, cp, d)
1483+ let cC = H(cN, bV)
1484+ let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1485+ let cX = dR._1
1486+ let gS = dR._3
1487+ let cl = dR._4
1488+ let cn = dR._5
1489+ let ck = dR._6
1490+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
16871491 }
16881492
16891493
16901494
1691-@Callable(eS)
1692-func evaluatePutByAmountAssetREADONLY (dH) = {
1693- let da = ba()
1694- let dn = fromBase58String(da[q])
1695- let dN = da[r]
1696- let do = fromBase58String(dN)
1697- let dO = da[s]
1698- let dp = fromBase58String(dO)
1699- let db = parseIntValue(da[t])
1700- let dc = parseIntValue(da[u])
1701- let dq = da[p]
1702- let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1703- let hT = bJ(dN)
1704- let hU = bJ(dO)
1705- let cW = D(hT, db)
1706- let cX = D(hU, dc)
1707- let dw = if ((hS == 0))
1495+@Callable(dL)
1496+func evaluatePutByPriceAssetREADONLY (cC) = {
1497+ let bT = aV()
1498+ let cg = fromBase58String(bT[q])
1499+ let cG = bT[r]
1500+ let ch = fromBase58String(cG)
1501+ let cH = bT[s]
1502+ let ci = fromBase58String(cH)
1503+ let bU = parseIntValue(bT[t])
1504+ let bV = parseIntValue(bT[u])
1505+ let cj = bT[p]
1506+ let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507+ let gT = bE(cG)
1508+ let gU = bE(cH)
1509+ let gV = D(gT, bU)
1510+ let gW = D(gU, bV)
1511+ let cp = if ((gL == 0))
17081512 then e
1709- else bM(cX, cW)
1710- let dT = D(dH, db)
1711- let dU = fraction(dT, dw, d)
1712- let dJ = H(dU, dc)
1713- let eY = dF("", 500000, dH, do, dJ, dp, "", true, false)
1714- let ee = eY._1
1715- let hZ = eY._3
1716- let ds = eY._4
1717- let du = eY._5
1718- let dr = eY._6
1719- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(dw, b)), toString(ds), toString(du), toString(dr), dq, toString(dH), toString(dJ)], j))
1513+ else bG(gW, gV)
1514+ let cN = D(cC, bV)
1515+ let cM = fraction(cN, d, cp)
1516+ let cA = H(cM, bU)
1517+ let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1518+ let cX = dR._1
1519+ let gS = dR._3
1520+ let cl = dR._4
1521+ let cn = dR._5
1522+ let ck = dR._6
1523+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
17201524 }
17211525
17221526
17231527
1724-@Callable(eS)
1725-func evaluatePutByPriceAssetREADONLY (dJ) = {
1726- let da = ba()
1727- let dn = fromBase58String(da[q])
1728- let dN = da[r]
1729- let do = fromBase58String(dN)
1730- let dO = da[s]
1731- let dp = fromBase58String(dO)
1732- let db = parseIntValue(da[t])
1733- let dc = parseIntValue(da[u])
1734- let dq = da[p]
1735- let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1736- let ia = bJ(dN)
1737- let ib = bJ(dO)
1738- let ic = D(ia, db)
1739- let id = D(ib, dc)
1740- let dw = if ((hS == 0))
1741- then e
1742- else bM(id, ic)
1743- let dU = D(dJ, dc)
1744- let dT = fraction(dU, d, dw)
1745- let dH = H(dT, db)
1746- let eY = dF("", 500000, dH, do, dJ, dp, "", true, false)
1747- let ee = eY._1
1748- let hZ = eY._3
1749- let ds = eY._4
1750- let du = eY._5
1751- let dr = eY._6
1752- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(dw, b)), toString(ds), toString(du), toString(dr), dq, toString(dH), toString(dJ)], j))
1528+@Callable(dL)
1529+func evaluateGetREADONLY (gX,gY) = {
1530+ let cP = cc("", gX, gY, this)
1531+ let cv = cP._1
1532+ let cw = cP._2
1533+ let cl = cP._5
1534+ let cn = cP._6
1535+ let ck = cP._7
1536+ let cq = cP._8
1537+ let cj = parseIntValue(cP._9)
1538+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cv), toString(cw), toString(cl), toString(cn), toString(ck), toString(cq), toString(cj)], j))
17531539 }
17541540
17551541
1756-
1757-@Callable(eS)
1758-func evaluateGetREADONLY (ie,if) = {
1759- let dW = dj("", ie, if, this)
1760- let dC = dW._1
1761- let dD = dW._2
1762- let ds = dW._5
1763- let du = dW._6
1764- let dr = dW._7
1765- let dx = dW._8
1766- let dq = parseIntValue(dW._9)
1767- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dC), toString(dD), toString(ds), toString(du), toString(dr), toString(dx), toString(dq)], j))
1768- }
1769-
1770-
1771-@Verifier(ig)
1772-func ih () = {
1773- let ii = {
1774- let bT = ge()
1775- if ($isInstanceOf(bT, "ByteVector"))
1542+@Verifier(gZ)
1543+func ha () = {
1544+ let hb = {
1545+ let dW = eZ()
1546+ if ($isInstanceOf(dW, "ByteVector"))
17761547 then {
1777- let gi = bT
1778- gi
1548+ let fd = dW
1549+ fd
17791550 }
1780- else if ($isInstanceOf(bT, "Unit"))
1781- then ig.senderPublicKey
1551+ else if ($isInstanceOf(dW, "Unit"))
1552+ then gZ.senderPublicKey
17821553 else throw("Match error")
17831554 }
1784- let bT = ig
1785- if ($isInstanceOf(bT, "Order"))
1555+ let dW = gZ
1556+ if ($isInstanceOf(dW, "Order"))
17861557 then {
1787- let eH = bT
1788- let ij = aZ()
1789- let ik = eG(eH)
1790- let aI = ik._1
1791- let aJ = ik._2
1792- let aK = sigVerify(eH.bodyBytes, eH.proofs[0], eH.senderPublicKey)
1793- let aL = sigVerify(eH.bodyBytes, eH.proofs[1], ij)
1794- if (if (if (aI)
1795- then aK
1558+ let dA = dW
1559+ let hc = aU()
1560+ let hd = dz(dA)
1561+ let aD = hd._1
1562+ let aE = hd._2
1563+ let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1564+ let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hc)
1565+ if (if (if (aD)
1566+ then aF
17961567 else false)
1797- then aL
1568+ then aG
17981569 else false)
17991570 then true
1800- else aH(aI, aJ, aK, aL)
1571+ else aC(aD, aE, aF, aG)
18011572 }
1802- else if ($isInstanceOf(bT, "SetScriptTransaction"))
1573+ else if ($isInstanceOf(dW, "SetScriptTransaction"))
18031574 then {
1804- let gf = bT
1805- if (sigVerify(ig.bodyBytes, ig.proofs[0], ii))
1575+ let fa = dW
1576+ if (sigVerify(gZ.bodyBytes, gZ.proofs[0], hb))
18061577 then true
18071578 else {
1808- let il = blake2b256(value(gf.script))
1809- let im = fromBase64String(value(getString(aT, aF())))
1810- let in = scriptHash(this)
1811- if ((im == il))
1812- then (in != il)
1579+ let he = blake2b256(value(fa.script))
1580+ let hf = fromBase64String(value(getString(aO, aA())))
1581+ let hg = scriptHash(this)
1582+ if ((hf == he))
1583+ then (hg != he)
18131584 else false
18141585 }
18151586 }
1816- else sigVerify(ig.bodyBytes, ig.proofs[0], ii)
1587+ else sigVerify(gZ.bodyBytes, gZ.proofs[0], hb)
18171588 }
18181589

github/deemru/w8io/026f985 
325.30 ms