tx · Ct2tUhd6dMJj4rkn2cN5cdBpLNnxEyXjXmoVYqMWkiXN

3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g:  -0.04200000 Waves

2023.05.10 14:22 [3637188] smart account 3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g > SELF 0.00000000 Waves

{ "type": 13, "id": "Ct2tUhd6dMJj4rkn2cN5cdBpLNnxEyXjXmoVYqMWkiXN", "fee": 4200000, "feeAssetId": null, "timestamp": 1683717732896, "version": 2, "chainId": 87, "sender": "3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g", "senderPublicKey": "7JeravxHejNM5QqFiU1URLXYHueuDGzjdGucMBFJe5nz", "proofs": [ "4CU45JWS3dJmjERCEqHQyB3oejU1Lqp2xypqYoihkp2ZdrZZzhwq8Sed1KfoQas4uC2gaYpwwXyzCCPfiXz1mk5" ], "script": "base64:BgKSOAgCEgASBQoDAQQBEgcKBQEEAQgBEgQKAgEEEgMKAQESBAoCAQQSBAoCCAESBAoCCAESBAoCCAESBQoDAQgBEgASBAoCAQESAwoBARIFCgMBAQESBAoCCAgSABIAEgMKAQgSBQoDAQEBEgQKAgEBEgQKAggBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgASAwoBARIDCgEBEgQKAggBIgpsUGRlY2ltYWxzIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiILd2F2ZXNTdHJpbmciA1NFUCIKUG9vbEFjdGl2ZSIPUG9vbFB1dERpc2FibGVkIhNQb29sTWF0Y2hlckRpc2FibGVkIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIg1pZHhQb29sU3RhdHVzIhBpZHhQb29sTFBBc3NldElkIg1pZHhBbXRBc3NldElkIg9pZHhQcmljZUFzc2V0SWQiDmlkeEFtdEFzc2V0RGNtIhBpZHhQcmljZUFzc2V0RGNtIg5pZHhJQW10QXNzZXRJZCIQaWR4SVByaWNlQXNzZXRJZCINaWR4TFBBc3NldERjbSISaWR4UG9vbEFtdEFzc2V0QW10IhRpZHhQb29sUHJpY2VBc3NldEFtdCIRaWR4UG9vbExQQXNzZXRBbXQiGWlkeEZhY3RvcnlTdGFraW5nQ29udHJhY3QiGmlkeEZhY3RvcnlTbGlwcGFnZUNvbnRyYWN0IgV0b1gxOCIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCILdG9YMThCaWdJbnQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiDHN3YXBDb250cmFjdCICZmMiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIUa2V5QWRkaXRpb25hbEJhbGFuY2UiB2Fzc2V0SWQiFmtleVN0YWtpbmdBc3NldEJhbGFuY2UiGmdldEFkZGl0aW9uYWxCYWxhbmNlT3JaZXJvIhxnZXRTdGFraW5nQXNzZXRCYWxhbmNlT3JaZXJvIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiFmtleVNraXBPcmRlclZhbGlkYXRpb24iC3Bvb2xBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiDm9yZGVyVmFsaWRJbmZvIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIhdhZGRyZXNzRnJvbVN0cmluZ09yVGhpcyINYWRkcmVzc1N0cmluZyIHJG1hdGNoMCIBYSIcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcyIOZmFjdG9yeUFkZHJlc3MiA2ZjYSIBcyIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIGZm10RXJyIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiBWluRmVlIgFAIgZvdXRGZWUiEGlzR2xvYmFsU2h1dGRvd24iE2dldE1hdGNoZXJQdWJPckZhaWwiDWdldFBvb2xDb25maWciCGFtdEFzc2V0IgpwcmljZUFzc2V0IgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwOTUyOTk2OTUiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhBnZXRGYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiEHNsaXBwYWdlQ29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIiFXNsaXBwYWdlVG9sZXJhbmNlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIhJzbGlwYWdlQW10QXNzZXRBbXQiFHNsaXBhZ2VQcmljZUFzc2V0QW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiDWJhbGFuY2VPblBvb2wiDHRvdGFsQmFsYW5jZSIPY2FsY1ByaWNlQmlnSW50IghwckFtdFgxOCIIYW1BbXRYMTgiFGNhbGNQcmljZUJpZ0ludFJvdW5kIgdnZXRSYXRlIgVwcm94eSIDaW52IgFyIgdkZXBvc2l0IgZhbW91bnQiDnN0YWtpbmdBc3NldElkIhhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UiGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlIgVhc3NldCINZGVwb3NpdEludm9rZSIUcmVjZWl2ZWRTdGFraW5nQXNzZXQiFG5ld0FkZGl0aW9uYWxCYWxhbmNlIhZuZXdTdGFraW5nQXNzZXRCYWxhbmNlIgh3aXRoZHJhdyIMcHJveHlSYXRlTXVsIg1wcm9maXRBZGRyZXNzIhBjdXJyZW50UHJveHlSYXRlIgdvbGRSYXRlIgxzdGFraW5nQXNzZXQiFG9sZFNlbmRTdGFraW5nQW1vdW50IhZzZW5kU3Rha2luZ0Fzc2V0QW1vdW50Igxwcm9maXRBbW91bnQiDndpdGhkcmF3SW52b2tlIg5yZWNlaXZlZEFzc2V0cyITZ2V0TGVhc2VQcm94eUNvbmZpZyIRcmViYWxhbmNlSW50ZXJuYWwiC3RhcmdldFJhdGlvIgptaW5CYWxhbmNlIhRsZWFzYWJsZVRvdGFsQmFsYW5jZSIXdGFyZ2V0QWRkaXRpb25hbEJhbGFuY2UiBGRpZmYiD3NlbmRBc3NldEFtb3VudCIOZ2V0QXNzZXRBbW91bnQiDnJlYmFsYW5jZUFzc2V0Ig0kdDAxNTkzMTE2MDY3Igppc0xlYXNhYmxlIgtsZWFzZWRSYXRpbyIMcHJveHlBZGRyZXNzIgxwcm94eUFzc2V0SWQiFHN0YWtpbmdQcm9maXRBZGRyZXNzIhl3aXRoZHJhd0FuZFJlYmFsYW5jZUFzc2V0IglnZXRBbW91bnQiDSR0MDE2NDY2MTY2MDIiF25ld1RvdGFsTGVhc2FibGVCYWxhbmNlIg53aXRoZHJhd0Ftb3VudCIXd2l0aGRyYXdBbmRSZWJhbGFuY2VBbGwiFGFtb3VudEFzc2V0T3V0QW1vdW50IhNwcmljZUFzc2V0T3V0QW1vdW50IhJBbUFtdFdpdGhkcmF3U3RhdGUiElByQW10V2l0aGRyYXdTdGF0ZSIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiB2NhbGNLTHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIQYW1vdW50QmFsYW5jZVgxOCIPcHJpY2VCYWxhbmNlWDE4Igp1cGRhdGVkS0xwIg5jYWxjQ3VycmVudEtMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50S0xwIhJyZWZyZXNoS0xwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhNza2lwT3JkZXJWYWxpZGF0aW9uIhJ2YWxpZGF0ZVVwZGF0ZWRLTHAiBm9sZEtMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI4OTkxMjkyMDMiA2tMcCINJHQwMjk2NDMyOTc0MyINdW51c2VkQWN0aW9ucyIGa0xwTmV3Igxpc09yZGVyVmFsaWQiBGluZm8iCWNvbW1vbkdldCIBaSIDcG10IgZwbXRBbXQiCWNvbW1vblB1dCIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIGZXN0UHV0IgRlbWl0IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiCWZlZUFtb3VudCIPY2FsY1B1dE9uZVRva2VuIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCIGaXNFdmFsIhBhbW91bnRCYWxhbmNlUmF3Ig9wcmljZUJhbGFuY2VSYXciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAzMjg1NjMzMTQ5IhBhbW91bnRCYWxhbmNlT2xkIg9wcmljZUJhbGFuY2VPbGQiDSR0MDMzMTUzMzMzMDIiFGFtb3VudEFzc2V0QW1vdW50UmF3IhNwcmljZUFzc2V0QW1vdW50UmF3Ig0kdDAzMzQzNDMzNDk4Ig1wYXltZW50QW1vdW50IhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAzNTE3OTM1MzQ2IgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IhhvdXRJbkFtb3VudEFzc2V0RGVjaW1hbHMiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAzNzQyNDM3NDgwIgt0b3RhbEFtb3VudCINJHQwMzc0ODQzNzcxMCILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IhNtYW5hZ2VyVmF1bHRBZGRyZXNzIglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiDWNsZWFuQW1vdW50SW4iCWlzUmV2ZXJzZSINZmVlUG9vbEFtb3VudCINJHQwMzk1NjkzOTg3NCIIYXNzZXRPdXQiB2Fzc2V0SW4iEnBvb2xBc3NldEluQmFsYW5jZSITcG9vbEFzc2V0T3V0QmFsYW5jZSIJYW1vdW50T3V0IgRvbGRLIgRuZXdLIgZjaGVja0siDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCIIY2hlY2tNaW4iDnJlYmFsYW5jZVN0YXRlIg13aXRoZHJhd1N0YXRlIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiINJHQwNDQzNjE0NDgyMyIRcmVmcmVzaEtMcEFjdGlvbnMiEWlzVXBkYXRlZEtMcFZhbGlkIgNyZWIiC21heFNsaXBwYWdlIg0kdDA0NTQzNTQ1NTAwIgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDQ2Njg4NDY4NDAiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwNDc0MjY0NzYyMyINJHQwNDc2MjY0NzczNCINJHQwNDgwODk0ODI0NiINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwNDkxMzE0OTI4NCIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDA0OTk0ODUwMTk1IhBmZWVBbW91bnRGb3JDYWxjIg0kdDA1MDE5ODUwMzA2Ig0kdDA1MDU4NDUwNzQwIg11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDA1MTY0NTUxNzk2Ig0kdDA1MjQ1NTUyNzAyIg0kdDA1MjcwNTUyODEzIhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNTM5MDg1Mzk4OSISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINJHQwNTUwODQ1NTE2NSINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIg0kdDA1NjQzNzU2NTE4IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyINJHQwNTc5NTk1ODA0MCILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDU5MjQ0NTkzMDgiEGtMcFVwZGF0ZUFjdGlvbnMiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCINcG9vbExQQmFsYW5jZSISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA2Nzk3MDY4MDg3IgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2iCAQABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBRQFGCQC8AgMFAUUFAWQFAUYBAUgCAUkBSgkAoAMBCQC8AgMFAUkJALYCAQUBSgUBZAEBSwMBSQFKAUwJAKADAQkAvQIEBQFJCQC2AgEFAUoFAWQFAUwBAU0DAU4BTwFQCQBrAwUBTgUBTwUBUAEBUQEBSQMJAGYCAAAFAUkJAQEtAQUBSQUBSQEBUgEBSQMJAL8CAgUBZQUBSQkAvgIBBQFJBQFJAQFTAAIQJXNfX3N3YXBDb250cmFjdAEBVAACEyVzX19mYWN0b3J5Q29udHJhY3QBAVUAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVgACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzAQFXAAIRJXMlc19fcHJpY2VfX2xhc3QBAVgCAVkBWgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVkJAMwIAgkApAMBBQFaBQNuaWwFAWoBAmFhAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFiAgJfXwUCYWMBAmFkAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFiAgJfXwUCYWMBAmFlAAIPJXNfX2Ftb3VudEFzc2V0AQJhZgACDiVzX19wcmljZUFzc2V0AAJhZwIHJXNfX2ZlZQACYWgJAGsDAAoFAWIAkE4AAmFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFnBQJhaAACYWoJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWsJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWwJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYW0AHgACYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWwFAmFtAQJhbwECYXAJALkJAgkAzAgCAgQlcyVzCQDMCAICDXN0YWtlZEJhbGFuY2UJAMwIAgUCYXAFA25pbAUBagECYXEBAmFwCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhFzaGFyZUFzc2V0QmFsYW5jZQkAzAgCBQJhcAUDbmlsBQFqAQJhcgECYXAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFvAQUCYXAAAAECYXMBAmFwCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhcQEFAmFwAAABAmF0AAIRJXNfX2ZhY3RvcnlDb25maWcBAmF1AAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhdgECYXcJAKwCAgkArAICAgglcyVzJXNfXwUCYXcCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJheAICYXkCYXoJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmF5AgJfXwUCYXoCCF9fY29uZmlnAQJhQQECYUIJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYUIBAmFDAAIMJXNfX3NodXRkb3duAQJhRAECYUUJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhRQECYUYAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYUcCFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhSAECYUkJAKwCAgIbJXMlc19fc2tpcE9yZGVyVmFsaWRhdGlvbl9fBQJhSQECYUoEAmFLAmFMAmFNAmFOCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhSwICICgFAmFMAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFNAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhTgECYU8BAmFQBAJhUQkApggBBQJhUAMJAAECBQJhUQIHQWRkcmVzcwQCYVIFAmFRBQJhUgUEdGhpcwECYVMABAJhVAQCYVEJAKIIAQkBAVQAAwkAAQIFAmFRAgZTdHJpbmcEAmFVBQJhUQkBAmFPAQUCYVUFBHRoaXMEAmFRCQCdCAIFAmFUCQEBVgADCQABAgUCYVECBlN0cmluZwQCYVYFAmFRCQECYU8BBQJhVgUEdGhpcwECYVcCAmFYAmFZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVgFAmFZCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFYCQDMCAICAS4JAMwIAgUCYVkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYVoCAmFYAmFZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYVgFAmFZCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFYCQDMCAICAS4JAMwIAgUCYVkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYmEBAmJiCQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmJiBQNuaWwCASABAmJjAQJiYgkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmJiBQNuaWwCASAAAmJkCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYVcCBQR0aGlzCQEBVAAAAmJlCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYVcCBQJiZAUCYUcAAmJmCgACYmcJAPwHBAUCYmQCEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZwIDSW50BQJiZwkAAgEJAKwCAgkAAwEFAmJnAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmJoCgACYmcJAPwHBAUCYmQCEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCA0ludAUCYmcJAAIBCQCsAgIJAAMBBQJiZwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJiaQAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYmQJAQJhQwAHAQJiagAJANkEAQkBAmFXAgUCYmQJAQJhdQABAmJrAAQCYmwJAQJhVwIFBHRoaXMJAQJhZQAEAmJtCQECYVcCBQR0aGlzCQECYWYABAJhegkBAmFaAgUCYmQJAQJhQQEFAmJtBAJheQkBAmFaAgUCYmQJAQJhQQEFAmJsCQC1CQIJAQJhVwIFAmJkCQECYXgCCQCkAwEFAmF5CQCkAwEFAmF6BQFqAQJibgECYm8DCQAAAgUCYm8FAWkFBHVuaXQJANkEAQUCYm8BAmJwAQJibwMJAAACBQJibwUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJibwECYnEBAmJyCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYnIFAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJicgUBcAkA2QQBCQCRAwIFAmJyBQFxCQECYm4BCQCRAwIFAmJyBQFyCQECYm4BCQCRAwIFAmJyBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnIFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJicgUBdQACYnMJAQJicQEJAQJiawAAAmJ0BQJicwACYnUIBQJidAJfMQACYnYIBQJidAJfMgACYncIBQJidAJfMwACYngIBQJidAJfNAACYnkIBQJidAJfNQACYnoIBQJidAJfNgACYkEIBQJidAJfNwECYkIACQC1CQIJAQJhVwIFAmJkCQECYXQABQFqAAJiQwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJCAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYkQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJiQgAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJFCgJiRgJiRwJiSAJiSQJiSgJiSwJiTAJiTQJiTgJiTwkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYkYJAMwIAgkApAMBBQJiRwkAzAgCCQCkAwEFAmJICQDMCAIJAKQDAQUCYkkJAMwIAgkApAMBBQJiSgkAzAgCCQCkAwEFAmJLCQDMCAIJAKQDAQUCYkwJAMwIAgkApAMBBQJiTQkAzAgCCQCkAwEFAmJOCQDMCAIJAKQDAQUCYk8FA25pbAUBagECYlAGAmJRAmJSAmJTAmJJAmJMAmJNCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYlEJAMwIAgkApAMBBQJiUgkAzAgCCQCkAwEFAmJTCQDMCAIJAKQDAQUCYkkJAMwIAgkApAMBBQJiTAkAzAgCCQCkAwEFAmJNBQNuaWwFAWoBAmJUAQJhcAQCYlUDCQAAAgUCYXACBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmFwBAJiVgkAZQIJAGQCBQJiVQkBAmFyAQUCYXAJAQJhcwEFAmFwCQCWAwEJAMwIAgAACQDMCAIFAmJWBQNuaWwBAmJXAgJiWAJiWQkAvAIDBQJiWAUBZAUCYlkBAmJaAwJiWAJiWQFMCQC9AgQFAmJYBQFkBQJiWQUBTAECY2EBAmNiBAJjYwkA/AcEBQJjYgIHZ2V0UmF0ZQUDbmlsBQNuaWwDCQAAAgUCY2MFAmNjBAJhUQUCY2MDCQABAgUCYVECA0ludAQCY2QFAmFRBQJjZAkBAmJhAQIgcHJveHkuZ2V0UmF0ZSgpIHVuZXhwZWN0ZWQgdmFsdWUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNlBAJhcAJjZgJjZwJjYgQCY2gJAQJhcgEFAmFwAwkAAAIFAmNoBQJjaAQCY2kJAQJhcwEFAmNnAwkAAAIFAmNpBQJjaQQCY2oJAQJibgEFAmFwAwkAZgIFAmNmAAAEAmNrCQD8BwQFAmNiAgdkZXBvc2l0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNqBQJjZgUDbmlsAwkAAAIFAmNrBQJjawQCYVEFAmNrAwkAAQIFAmFRAgNJbnQEAmNsBQJhUQQCY20JAGQCBQJjaAUCY2YEAmNuCQBkAgUCY2kFAmNsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYW8BBQJhcAUCY20JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcQEFAmNnBQJjbgUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY28GAmFwAmNmAmNnAmNiAmNwAmNxBAJjaAkBAmFyAQUCYXADCQAAAgUCY2gFAmNoBAJjaQkBAmFzAQUCY2cDCQAAAgUCY2kFAmNpBAJjcgkBAmNhAQUCY2IDCQAAAgUCY3IFAmNyBAJjcwkAawMFAmNwBQJjaAUCY2kEAmN0CQECYm4BBQJjZwQCY3UJAGsDBQJjcAUCY2YFAmNzBAJjdgkAawMFAmNwBQJjZgUCY3IEAmN3CQCWAwEJAMwIAgAACQDMCAIJAGUCBQJjdQUCY3YFA25pbAMJAGYCBQJjdgAABAJjeAkA/AcEBQJjYgIId2l0aGRyYXcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3QFAmN2BQNuaWwDCQAAAgUCY3gFAmN4BAJhUQUCY3gDCQABAgUCYVECA0ludAQCY3kFAmFRBAJjbQkAZQIFAmNoBQJjeQQCY24JAGUCCQBlAgUCY2kFAmN2BQJjdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFvAQUCYXAFAmNtCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXEBBQJjZwUCY24JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3EFAmN3CQECYm4BBQJjZwUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY3oBAmFwBAJhUQkA/AcEBQJiZAIaZ2V0UG9vbExlYXNlQ29uZmlnUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzCQDMCAIFAmFwBQNuaWwFA25pbAMJAAECBQJhUQIwKEJvb2xlYW4sIEludCwgSW50LCBTdHJpbmcsIFN0cmluZywgSW50LCBTdHJpbmcpBAJhUgUCYVEFAmFSCQECYmEBCQCsAgIJAKwCAgIBWwUCYXACHV0gZ2V0TGVhc2VQcm94eUNvbmZpZygpIGVycm9yAQJjQQcCY0ICYXACY2cCY0MCY2ICY3ACY3EEAmNoCQECYXIBBQJhcAMJAAACBQJjaAUCY2gEAmNpCQECYXMBBQJjZwMJAAACBQJjaQUCY2kEAmNECQCWAwEJAMwIAgAACQDMCAIJAGUCCQECYlQBBQJhcAUCY0MFA25pbAQCY0UJAGsDBQJjQgUCY0QAZAQCY0YJAGUCBQJjaAUCY0UDCQAAAgUCY0YAAAUDbmlsAwkAZgIAAAUCY0YEAmNHCQEBLQEFAmNGCQECY2UEBQJhcAUCY0cFAmNnBQJjYgQCY0gFAmNGCQECY28GBQJhcAUCY0gFAmNnBQJjYgUCY3AFAmNxCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjSQECYXAEAmNKCQECY3oBBQJhcAQCY0sIBQJjSgJfMQQCY0wIBQJjSgJfMgQCY0MIBQJjSgJfMwQCY00IBQJjSgJfNAQCY04IBQJjSgJfNQQCY3AIBQJjSgJfNgQCY08IBQJjSgJfNwMFAmNLCQECY0EHBQJjTAUCYXAFAmNOBQJjQwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY00FAmNwCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTwUDbmlsAQJjUAICYXACY1EEAmNSCQECY3oBBQJhcAQCY0sIBQJjUgJfMQQCY0wIBQJjUgJfMgQCY0MIBQJjUgJfMwQCY00IBQJjUgJfNAQCY04IBQJjUgJfNQQCY3AIBQJjUgJfNgQCY08IBQJjUgJfNwMFAmNLBAJjUwkAlgMBCQDMCAIAAAkAzAgCCQBlAgkAZQIJAQJiVAEFAmFwBQJjUQUCY0MFA25pbAMJAAACBQJjUwUCY1MEAmNtCQBrAwUCY0wFAmNTAGQDCQAAAgUCY20FAmNtBAJjVAkAZQIJAQJhcgEFAmFwBQJjbQMJAAACBQJjVAUCY1QDCQBmAgAABQJjVAkBAmNlBAUCYXAJAQEtAQUCY1QFAmNOCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTQkBAmNvBgUCYXAFAmNUBQJjTgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY00FAmNwCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAQJjVQICY1YCY1cEAmNYCQECY1ACCQECYVcCBQR0aGlzCQECYWUABQJjVgQCY1kJAQJjUAIJAQJhVwIFBHRoaXMJAQJhZgAFAmNXCQDOCAIFAmNYBQJjWQECY1oEAmRhAmRiAmRjAmRkBAJkZQkBAUQCBQJkYwUCZGEEAmRmCQEBRAIFAmRkBQJkYgkBAmJXAgUCZGYFAmRlAQJkZwMCZGMCZGQCZGgEAmRpCQECYmsABAJkagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQF0BAJkawkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQF1BAJkbAkBAmNaBAUCZGoFAmRrBQJkYwUCZGQEAmJZCQEBRAIFAmRjBQJkagQCYlgJAQFEAgUCZGQFAmRrBAJkbQkBAUQCBQJkaAUBYgQCZG4JAQJiVwIFAmJZBQJkbQQCZG8JAQJiVwIFAmJYBQJkbQkAzAgCBQJkbAkAzAgCBQJkbgkAzAgCBQJkbwUDbmlsAQJkcAMCZGMCZGQCZGgEAmRxCQECZGcDBQJkYwUCZGQFAmRoCQDMCAIJAQFIAgkAkQMCBQJkcQAABQFiCQDMCAIJAQFIAgkAkQMCBQJkcQABBQFiCQDMCAIJAQFIAgkAkQMCBQJkcQACBQFiBQNuaWwBAmRyBAJkcwJkdAJkdQJhYgQCZGkJAQJiawAEAmR2CQCRAwIFAmRpBQFxBAJkdwkAkQMCBQJkaQUBcgQCZHgJAJEDAgUCZGkFAXMEAmRhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXQEAmRiCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXUEAmR5CQCRAwIFAmRpBQFwBAJkeggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmR2CQCsAgIJAKwCAgIGQXNzZXQgBQJkdgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJkdgUCZHQJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmRBCQECYlQBBQJkdwQCZEIJAQFEAgUCZEEFAmRhBAJkQwkBAmJUAQUCZHgEAmRECQEBRAIFAmRDBQJkYgQCZEUJAQJiVwIFAmREBQJkQgQCZEYJAQFIAgUCZEUFAWIEAmRHCQEBRAIFAmR1BQFiBAJkSAkBAUQCBQJkegUBYgQCZEkJALwCAwUCZEIFAmRHBQJkSAQCZEoJALwCAwUCZEQFAmRHBQJkSAQCZEsJAQFLAwUCZEkFAmRhBQVGTE9PUgQCZEwJAQFLAwUCZEoFAmRiBQVGTE9PUgQCZE0DCQAAAgUCZHMCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFiBQJkSwMJAAACBQJkdwIFV0FWRVMFBHVuaXQJANkEAQUCZHcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmRMAwkAAAIFAmR4AgVXQVZFUwUEdW5pdAkA2QQBBQJkeAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCCQClCAEFAmFiBQJkcwkBAmJQBgUCZEsFAmRMBQJkdQUCZEYFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZEYJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZEYFA25pbAkAnAoKBQJkSwUCZEwFAmR3BQJkeAUCZEEFAmRDBQJkegUCZEUFAmR5BQJkTQECZE4JAmRzAmRPAmRQAmRRAmRSAmRTAmFiAmRUAmRVBAJkaQkBAmJrAAQCZHYJANkEAQkAkQMCBQJkaQUBcQQCZFYJAJEDAgUCZGkFAXIEAmRXCQCRAwIFAmRpBQFzBAJkWAkAkQMCBQJkaQUBdgQCZFkJAJEDAgUCZGkFAXcEAmRqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXQEAmRrCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXUEAmR5CQCRAwIFAmRpBQFwBAJkeggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkdgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJkdgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmRaCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmRRCQDZBAECBVdBVkVTBAJlYQkA2AQBCQELdmFsdWVPckVsc2UCBQJkUwkA2QQBAgVXQVZFUwMDCQECIT0CBQJkVgUCZFoGCQECIT0CBQJkVwUCZWEJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJkQQMFAmRUCQECYlQBBQJkVgkAZQIJAQJiVAEFAmRWBQJkUAQCZEMDBQJkVAkBAmJUAQUCZFcJAGUCCQECYlQBBQJkVwUCZFIEAmViCQEBRAIFAmRQBQJkagQCZWMJAQFEAgUCZFIFAmRrBAJlZAkBAmJXAgUCZWMFAmViBAJkQgkBAUQCBQJkQQUCZGoEAmRECQEBRAIFAmRDBQJkawQCZWUDCQAAAgUCZHoAAAQCZEUFAWUEAmVmBQFlBAJkbQkAdgYJALkCAgUCZWIFAmVjAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSAIFAmRtBQFiCQEBSAIFAmViBQJkagkBAUgCBQJlYwUCZGsJAQJiVwIJALcCAgUCZEQFAmVjCQC3AgIFAmRCBQJlYgUCZWYEAmRFCQECYlcCBQJkRAUCZEIEAmVmCQC8AgMJAQFSAQkAuAICBQJkRQUCZWQFAWQFAmRFBAJlZwkBAUQCBQJkTwUBYgMDCQECIT0CBQJkRQUBZQkAvwICBQJlZgUCZWcHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmVmAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCZWcEAmRICQEBRAIFAmR6BQFiBAJlaAkAvQIEBQJlYgkBAmJaAwUCZEQFAmRCBQdDRUlMSU5HBQFkBQdDRUlMSU5HBAJlaQkAvQIEBQJlYwUBZAkBAmJaAwUCZEQFAmRCBQVGTE9PUgUHQ0VJTElORwQCZWoDCQC/AgIFAmVoBQJlYwkAlAoCBQJlaQUCZWMJAJQKAgUCZWIFAmVoBAJlawgFAmVqAl8xBAJlbAgFAmVqAl8yBAJkbQkAvQIEBQJkSAUCZWwFAmREBQVGTE9PUgkAlwoFCQEBSwMFAmRtBQFiBQVGTE9PUgkBAUsDBQJlawUCZGoFB0NFSUxJTkcJAQFLAwUCZWwFAmRrBQdDRUlMSU5HBQJkRQUCZWYEAmVtCAUCZWUCXzEEAmVuCAUCZWUCXzIEAmVvCAUCZWUCXzMEAmRGCQEBSAIIBQJlZQJfNAUBYgQCZXAJAQFIAggFAmVlAl81BQFiAwkAZwIAAAUCZW0JAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmVxAwkBASEBBQJkVQAABQJlbQQCZXIJAGUCBQJkUAUCZW4EAmVzCQBlAgUCZFIFAmVvBAJldAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJkRgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkRgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQJhYgUCZHMJAQJiRQoFAmVuBQJlbwUCZXEFAmRGBQJkTwUCZXAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVyBQJlcwUDbmlsCQCfCg0FAmVtBQJlcQUCZEYFAmRBBQJkQwUCZHoFAmR2BQJkeQUCZXQFAmVyBQJlcwUCZFEFAmRTAQJldQMCZXYCZXcCZHoEAmV4CQEBRwIFAmV2CQC2AgEFAmJ6BAJleQkBAUcCBQJldwkAtgIBBQJiQQQCZXoJALwCAwkAdgYJALkCAgUCZXgFAmV5AAAJALYCAQAFAAEAEgUERE9XTgUBZwUCZHoDCQAAAgUCZHoFAWYFAWYFAmV6AQJlQQMCZUICZUMCZUQEAmVFCQC4AgIJALYCAQkBAmJUAQkBAmJwAQUCYngFAmVCBAJlRgkAuAICCQC2AgEJAQJiVAEJAQJicAEFAmJ5BQJlQwQCZUcJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJidwhxdWFudGl0eQUCZUQEAmVICQECZXUDBQJlRQUCZUYFAmVHBQJlSAECZUkDAmVKAmVLAmVEBAJlRQkAZAIJAQJiVAEJAQJicAEFAmJ4BQJlSgQCZUYJAGQCCQECYlQBCQECYnABBQJieQUCZUsEAmVHCQBkAggJAQV2YWx1ZQEJAOwHAQUCYncIcXVhbnRpdHkFAmVEBAJlegkBAmV1AwkAtgIBBQJlRQkAtgIBBQJlRgkAtgIBBQJlRwQCZUwJAMwIAgkBDEludGVnZXJFbnRyeQIFAmFrBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYWoJAKYDAQUCZXoFA25pbAkAlAoCBQJlTAUCZXoBAmVNAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJiZAkBAmFIAQkApQgBBQR0aGlzBwECZU4CAmVPAmV6AwkAwAICBQJlegUCZU8GCQECYmEBCQC5CQIJAMwIAgIidXBkYXRlZCBLTHAgbG93ZXIgdGhhbiBjdXJyZW50IEtMcAkAzAgCCQCmAwEFAmVPCQDMCAIJAKYDAQUCZXoFA25pbAIBIAECZVABAmVRBAJlRQkBAmJUAQkBAmJwAQUCYngEAmVGCQECYlQBCQECYnABBQJieQQCZVIIBQJlUQZhbW91bnQEAmVTCQBuBAgFAmVRBmFtb3VudAgFAmVRBXByaWNlBQFiBQVGTE9PUgQCZVQDCQAAAggFAmVRCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmVSCQEBLQEFAmVTCQCUCgIJAQEtAQUCZVIFAmVTBAJlSggFAmVUAl8xBAJlSwgFAmVUAl8yAwMDCQECYmkABgkAAAIFAmJ2BQFtBgkAAAIFAmJ2BQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAMDCQECIT0CCAgFAmVRCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYngGCQECIT0CCAgFAmVRCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJieQkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmVVCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhagIBMAkBAmJjAQILaW52YWxpZCBrTHAEAmVWCQECZUkDBQJlSgUCZUsAAAQCZVcIBQJlVgJfMQQCZVgIBQJlVgJfMgQCZVkJAMACAgUCZVgFAmVVBAJlWgkAuQkCCQDMCAICBGtMcD0JAMwIAgkApgMBBQJlVQkAzAgCAggga0xwTmV3PQkAzAgCCQCmAwEFAmVYCQDMCAICFCBhbW91bnRBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZUUJAMwIAgITIHByaWNlQXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVGCQDMCAICGSBhbW91bnRBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJlSgkAzAgCAhggcHJpY2VBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJlSwkAzAgCAgggaGVpZ2h0PQkAzAgCCQCkAwEFBmhlaWdodAUDbmlsAgAJAJQKAgUCZVkFAmVaAQJmYQECZmIDCQECIT0CCQCQAwEIBQJmYghwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmZjCQEFdmFsdWUBCQCRAwIIBQJmYghwYXltZW50cwAABAJkdAkBBXZhbHVlAQgFAmZjB2Fzc2V0SWQEAmZkCAUCZmMGYW1vdW50BAJlZQkBAmRyBAkA2AQBCAUCZmINdHJhbnNhY3Rpb25JZAkA2AQBBQJkdAUCZmQIBQJmYgZjYWxsZXIEAmRLCAUCZWUCXzEEAmRMCAUCZWUCXzIEAmR5CQENcGFyc2VJbnRWYWx1ZQEIBQJlZQJfOQQCZE0IBQJlZQNfMTADAwkBAmJpAAYJAAACBQJkeQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCZHkJAJcKBQUCZEsFAmRMBQJmZAUCZHQFAmRNAQJmZQMCZmICZE8CZFUDCQECIT0CCQCQAwEIBQJmYghwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZmYJAQV2YWx1ZQEJAJEDAggFAmZiCHBheW1lbnRzAAAEAmZnCQEFdmFsdWUBCQCRAwIIBQJmYghwYXltZW50cwABBAJmaAkBAmROCQkA2AQBCAUCZmINdHJhbnNhY3Rpb25JZAUCZE8IBQJmZgZhbW91bnQIBQJmZgdhc3NldElkCAUCZmcGYW1vdW50CAUCZmcHYXNzZXRJZAkApQgBCAUCZmIGY2FsbGVyBwUCZFUEAmR5CQENcGFyc2VJbnRWYWx1ZQEIBQJmaAJfOAMDAwkBAmJpAAYJAAACBQJkeQUBbAYJAAACBQJkeQUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCZHkFAmZoAQJmaQECY2YEAmZqCQD8BwQFAmJkAgRlbWl0CQDMCAIFAmNmBQNuaWwFA25pbAMJAAACBQJmagUCZmoEAmZrBAJhUQUCZmoDCQABAgUCYVECB0FkZHJlc3MEAmZsBQJhUQkA/AcEBQJmbAIEZW1pdAkAzAgCBQJjZgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZmsFAmZrBQJjZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZm0CAmNmAmFpBAJmbgMJAAACBQJhaQAAAAAJAGsDBQJjZgUCYWkFAWIJAJQKAgkAZQIFAmNmBQJmbgUCZm4BAmZvBAJmcAJmcQJhYgJhYwQCZnIJAAACBQJhYwUEdW5pdAQCZnMJAQJiVAEJAQJicAEFAmJ4BAJmdAkBAmJUAQkBAmJwAQUCYnkEAmZ1AwkAAAIFAmZxBQJieAYDCQAAAgUCZnEFAmJ5BwkBAmJhAQINaW52YWxpZCBhc3NldAQCZnYDBQJmcgkAlAoCBQJmcwUCZnQDBQJmdQkAlAoCCQBlAgUCZnMFAmZwBQJmdAkAlAoCBQJmcwkAZQIFAmZ0BQJmcAQCZncIBQJmdgJfMQQCZngIBQJmdgJfMgQCZnkDBQJmdQkAlAoCBQJmcAAACQCUCgIAAAUCZnAEAmZ6CAUCZnkCXzEEAmZBCAUCZnkCXzIEAmVSCAkBAmZtAgUCZnoFAmJmAl8xBAJlUwgJAQJmbQIFAmZBBQJiZgJfMQQCZkIJAQJmbQIFAmZwBQJiZgQCZkMIBQJmQgJfMQQCZm4IBQJmQgJfMgQCZkQJAGQCBQJmdwUCZVIEAmZFCQBkAgUCZngFAmVTBAJmRgkBAmJXAgkBAUQCBQJmRQUCYkEJAQFEAgUCZkQFAmJ6BAJmRwkBAUgCBQJmRgUBYgQCZkgDBQJmdQUCZncFAmZ4BAJmSQkAtgIBBQJmSAQCZkoJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJidwkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJidwIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZLAwkAvwICBQJmSgUBZgYJAQJiYQECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZksFAmZLBAJmTAkAtgIBBQJmQwQCZk0JAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZkoJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJmTAUBZAUCZkkAEgASBQRET1dOBQFkBQFkBQNuaWwEAmV0AwUCZnIFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJmRwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJmRwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECCQClCAEJAQV2YWx1ZQEFAmFiCQDYBAEJAQV2YWx1ZQEFAmFjCQECYkUKBQJmegUCZkEFAmZNBQJmRwAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmZOCQECYlcCCQEBRAIFAmZ4BQJiQQkBAUQCBQJmdwUCYnoEAmZPCQEBSAIFAmZOBQFiBAJmUAQCZlEDBQJmdQkAlAoCBQJmegUCZncJAJQKAgUCZkEFAmZ4BAJjZggFAmZRAl8xBAJmUggFAmZRAl8yBAJmUwkAoAMBCQC8AgMFAmZKCQC2AgEJAGkCBQJjZgACCQC2AgEFAmZSCQBrAwkAZQIFAmZNBQJmUwUBYgUCZlMJAJcKBQUCZk0FAmV0BQJmbgUCZlAFAmZ1CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmVAUCZlUCZkMCZnECYWICYWMEAmZyCQAAAgUCYWMFBHVuaXQEAmRpCQECYmsABAJkagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQF0BAJkawkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQF1BAJmVgkAzAgCAwkAAAIFAmZxBQJidwYJAQJiYQECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQJmVgUCZlYEAmZXAwkAAAIFAmZVBQJieAYDCQAAAgUCZlUFAmJ5BwkBAmJhAQINaW52YWxpZCBhc3NldAQCZlgDBQJmVwkAtgIBCQECYlQBCQECYnABBQJieAkAtgIBCQECYlQBCQECYnABBQJieQQCZlkDBQJmVwUCZGoFAmRrBAJmWgkBAmJUAQkBAmJwAQUCYngEAmdhCQECYlQBCQECYnABBQJieQQCZ2IDBQJmVwUCZloFAmdhBAJnYwkAtgIBBQJnYgQCZkoJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJidwkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJidwIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmdkCQC2AgEFAmZDBAJnZQkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJmWAkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZ2QFAWQFAmZKABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmdmCQECZm0CBQJnZQUCYmgEAmdnCAUCZ2YCXzEEAmZuCAUCZ2YCXzIEAmdoAwUCZlcJAJYKBAUCZ2cAAAkAZQIFAmZaBQJnZQUCZ2EJAJYKBAAABQJnZwUCZloJAGUCBQJnYQUCZ2UEAmdpCAUCZ2gCXzEEAmdqCAUCZ2gCXzIEAmdrCAUCZ2gCXzMEAmdsCAUCZ2gCXzQEAmZGCQECYlcCCQEBRAIFAmdsBQJiQQkBAUQCBQJnawUCYnoEAmZHCQEBSAIFAmZGBQFiBAJldAMFAmZyBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJQBgUCZ2kFAmdqBQJmQwUCZkcFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZkcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZkcFA25pbAQCZk4JAQJiVwIJAQFEAgUCZ2EFAmJBCQEBRAIFAmZaBQJiegQCZk8JAQFIAgUCZk4FAWIEAmZQBAJnbQkAaAIJAKADAQkAvAIDBQJmWAUCZ2QFAmZKAAIJAGsDCQBlAgUCZ2cFAmdtBQFiBQJnbQkAlwoFBQJnZwUCZXQFAmZuBQJmUAUCZlcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmduAAQCZ28JAQJhUwAEAmFRCQCdCAIFAmdvCQEBVQADCQABAgUCYVECBlN0cmluZwQCYVYFAmFRCQDZBAEFAmFWAwkAAQIFAmFRAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmdwAQJmYgQCYVEJAQJnbgADCQABAgUCYVECCkJ5dGVWZWN0b3IEAmdxBQJhUQkAAAIIBQJmYg9jYWxsZXJQdWJsaWNLZXkFAmdxAwkAAQIFAmFRAgRVbml0CQAAAggFAmZiBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJncgECZmIEAmdzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmFRCQECZ24AAwkAAQIFAmFRAgpCeXRlVmVjdG9yBAJncQUCYVEDCQAAAggFAmZiD2NhbGxlclB1YmxpY0tleQUCZ3EGBQJncwMJAAECBQJhUQIEVW5pdAMJAAACCAUCZmIGY2FsbGVyBQR0aGlzBgUCZ3MJAAIBAgtNYXRjaCBlcnJvchwCZmIBCXJlYmFsYW5jZQAJAM4IAgkBAmNJAQkBAmFXAgUEdGhpcwkBAmFlAAkBAmNJAQkBAmFXAgUEdGhpcwkBAmFmAAJmYgEhY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcFJFQURPTkxZAwJndAJndQJndgQCZ3cDCQAAAgUCZ3UHBAJneAkBAmFXAgUEdGhpcwkBAmFmAAQCZ3kJAQJhVwIFBHRoaXMJAQJhZQAJAJQKAgUCZ3gFAmd5BAJneAkBAmFXAgUEdGhpcwkBAmFlAAQCZ3kJAQJhVwIFBHRoaXMJAQJhZgAJAJQKAgUCZ3gFAmd5BAJneAgFAmd3Al8xBAJneQgFAmd3Al8yBAJnegkBAmJUAQUCZ3kEAmdBCQECYlQBBQJneAQCZ0IJAGsDBQJnQQUCZ3QJAGQCBQJnegUCZ3QEAmdDCQC5AgIJALYCAQUCZ3oJALYCAQUCZ0EEAmdECQC5AgIJALcCAgkAtwICCQC2AgEJAQJiVAEFAmd5CQC2AgEFAmd0CQC2AgEFAmd2CQC4AgIJALYCAQkBAmJUAQUCZ3gJALYCAQUCZ0IEAmdFAwkAwAICBQJnRAUCZ0MGCQACAQIUbmV3IEsgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZ0UFAmdFCQCUCgIFA25pbAUCZ0IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmIBJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBQJndAJndQJnRgJnRwJndgQCZ0gKAAJiZwkA/AcEBQJiZAIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmJnAgZTdHJpbmcFAmJnCQACAQkArAICCQADAQUCYmcCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZlYJAMwIAgMJAGcCCAkBBXZhbHVlAQkAkQMCCAUCZmIIcGF5bWVudHMAAAZhbW91bnQFAmd0BgkBAmJhAQIMV3JvbmcgYW1vdW50CQDMCAIDCQAAAggFAmZiBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ0gGCQECYmEBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmZWBQJmVgQCZmMJAQV2YWx1ZQEJAJEDAggFAmZiCHBheW1lbnRzAAAEAmd5CQECYnABCAUCZmMHYXNzZXRJZAQCZ3gDCQAAAgUCZ3UHCQECYVcCBQR0aGlzCQECYWYACQECYVcCBQR0aGlzCQECYWUABAJnegkAZQIJAQJiVAEFAmd5CAkBBXZhbHVlAQkAkQMCCAUCZmIIcGF5bWVudHMAAAZhbW91bnQEAmdBCQECYlQBBQJneAQCZ0IJAGsDBQJnQQUCZ3QJAGQCBQJnegUCZ3QEAmdDCQC5AgIJALYCAQUCZ3oJALYCAQUCZ0EEAmdECQC5AgIJALcCAgkAtgIBCQECYlQBBQJneQkAtgIBBQJndgkAuAICCQC2AgEJAQJiVAEFAmd4CQC2AgEFAmdCBAJnRQMJAMACAgUCZ0QFAmdDBgkAAgECFG5ldyBLIGlzIGZld2VyIGVycm9yAwkAAAIFAmdFBQJnRQQCZ0kDCQBnAgUCZ0IFAmdGBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmdJBQJnSQQCZ0oJAQJjSQEFAmd5AwkAAAIFAmdKBQJnSgQCZ0sJAQJjUAIFAmd4BQJnQgMJAAACBQJnSwUCZ0sJAJQKAgkAzggCCQDOCAIFAmdLBQJnSgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnRwUCZ0IJAQJibgEFAmd4BQNuaWwFAmdCCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiAQNwdXQCAmRPAmdMAwkAZgIAAAUCZE8JAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZmgJAQJmZQMFAmZiBQJkTwYEAmVxCAUCZmgCXzIEAmR2CAUCZmgCXzcEAmRNCAUCZmgCXzkEAmVyCAUCZmgDXzEwBAJlcwgFAmZoA18xMQQCZ00IBQJmaANfMTIEAmdOCAUCZmgDXzEzBAJmZgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZmIIcGF5bWVudHMAAAZhbW91bnQEAmZnCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJmYghwYXltZW50cwABBmFtb3VudAQCZUgJAQJlQQMFAmZmBQJmZwkAtgIBAAADCQAAAgUCZUgFAmVIBAJmagkA/AcEBQJiZAIEZW1pdAkAzAgCBQJlcQUDbmlsBQNuaWwDCQAAAgUCZmoFAmZqBAJmawQCYVEFAmZqAwkAAQIFAmFRAgdBZGRyZXNzBAJmbAUCYVEJAPwHBAUCZmwCBGVtaXQJAMwIAgUCZXEFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZrBQJmawQCZ08DCQBmAgUCZXIAAAkA/AcEBQJiRAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdNBQJlcgUDbmlsBQNuaWwDCQAAAgUCZ08FAmdPBAJnUAMJAGYCBQJlcwAACQD8BwQFAmJEAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ04FAmVzBQNuaWwFA25pbAMJAAACBQJnUAUCZ1AEAmdRAwUCZ0wEAmdSCQD8BwQFAmJDAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkdgUCZXEFA25pbAMJAAACBQJnUgUCZ1IFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZmIGY2FsbGVyBQJlcQUCZHYFA25pbAQCZ1MJAQJlSQMAAAAAAAADCQAAAgUCZ1MFAmdTBAJleggFAmdTAl8yBAJnVAgFAmdTAl8xBAJnVQkBAmVOAgUCZUgFAmV6AwkAAAIFAmdVBQJnVQQCZ1YJAPwHBAUEdGhpcwIJcmViYWxhbmNlBQNuaWwFA25pbAMJAAACBQJnVgUCZ1YJAM4IAgkAzggCBQJkTQUCZ1EFAmdUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiAQpwdXRGb3JGcmVlAQJnVwMJAGYCAAAFAmdXCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmZoCQECZmUDBQJmYgUCZ1cHBAJkTQgFAmZoAl85BAJmZgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZmIIcGF5bWVudHMAAAZhbW91bnQEAmZnCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJmYghwYXltZW50cwABBmFtb3VudAQCZUgJAQJlQQMFAmZmBQJmZwkAtgIBAAADCQAAAgUCZUgFAmVIBAJnWAkBAmVJAwAAAAAAAAQCZ1QIBQJnWAJfMQQCZXoIBQJnWAJfMgQCZ1UJAQJlTgIFAmVIBQJlegMJAAACBQJnVQUCZ1UJAM4IAgUCZE0FAmdUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiAQlwdXRPbmVUa24CAmdZAmdaBAJoYQoAAmJnCQD8BwQFAmJkAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCB0Jvb2xlYW4FAmJnCQACAQkArAICCQADAQUCYmcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhiAwMDCQECYmkABgkAAAIFAmJ2BQFsBgkAAAIFAmJ2BQFuBgUCaGEEAmZWCQDMCAIDAwkBASEBBQJoYgYJAQJncAEFAmZiBgkBAmJhAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZmIIcGF5bWVudHMAAQYJAQJiYQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZWBQJmVgQCaGMJAJEDAggFAmZiCHBheW1lbnRzAAAEAmZxCAUCaGMHYXNzZXRJZAQCZnAIBQJoYwZhbW91bnQEAmVIAwkAAAIFAmZxBQJieAkBAmVBAwkAtgIBBQJmcAkAtgIBAAAJALYCAQAAAwkAAAIFAmZxBQJieQkBAmVBAwkAtgIBAAAJALYCAQUCZnAJALYCAQAACQECYmEBAh5wYXltZW50IGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgUCZUgFAmVIBAJhYggFAmZiBmNhbGxlcgQCYWMIBQJmYg10cmFuc2FjdGlvbklkBAJoZAkBAmZvBAUCZnAFAmZxBQJhYgUCYWMDCQAAAgUCaGQFAmhkBAJmdQgFAmhkAl81BAJoZQgFAmhkAl80BAJmbggFAmhkAl8zBAJldAgFAmhkAl8yBAJoZggFAmhkAl8xBAJoZwMDCQBmAgUCZ1kAAAkAZgIFAmdZBQJoZgcJAQJiYQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ1kFA25pbAIABQJoZgQCZmoJAQJmaQEFAmhnAwkAAAIFAmZqBQJmagQCZ1EDBQJnWgQCaGgJAPwHBAUCYkMCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJ3BQJoZwUDbmlsAwkAAAIFAmhoBQJoaAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJmYgZjYWxsZXIFAmhnBQJidwUDbmlsBAJoaQMJAGYCBQJmbgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJlBQJmbgUCZnEFA25pbAUDbmlsBAJoagMJAAACBQR0aGlzBQJiZQkAlAoCAAAAAAMFAmZ1CQCUCgIJAQEtAQUCZm4AAAkAlAoCAAAJAQEtAQUCZm4EAmVKCAUCaGoCXzEEAmVLCAUCaGoCXzIEAmhrCQECZUkDBQJlSgUCZUsAAAQCZ1QIBQJoawJfMQQCZXoIBQJoawJfMgQCZVUJAQV2YWx1ZQEJAKIIAQUCYWoEAmdVCQECZU4CBQJlSAUCZXoDCQAAAgUCZ1UFAmdVBAJnVgkA/AcEBQR0aGlzAglyZWJhbGFuY2UFA25pbAUDbmlsAwkAAAIFAmdWBQJnVgkAlAoCCQDOCAIJAM4IAgkAzggCBQJldAUCZ1EFAmhpBQJnVAUCaGcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmIBEXB1dE9uZVRrblJFQURPTkxZAgJmcQJmcAQCaGwJAQJmbwQFAmZwCQECYm4BBQJmcQUEdW5pdAUEdW5pdAQCaGYIBQJobAJfMQQCZXQIBQJobAJfMgQCZm4IBQJobAJfMwQCaGUIBQJobAJfNAQCZnUIBQJobAJfNQkAlAoCBQNuaWwJAJUKAwUCaGYFAmZuBQJoZQJmYgEJZ2V0T25lVGtuAgJobQJnWQQCaGEKAAJiZwkA/AcEBQJiZAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJnAgdCb29sZWFuBQJiZwkAAgEJAKwCAgkAAwEFAmJnAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJobgMDCQECYmkABgkAAAIFAmJ2BQFuBgUCaGEEAmZWCQDMCAIDAwkBASEBBQJobgYJAQJncAEFAmZiBgkBAmJhAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZmIIcGF5bWVudHMAAQYJAQJiYQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZWBQJmVgQCZlUJAQJibgEFAmhtBAJoYwkAkQMCCAUCZmIIcGF5bWVudHMAAAQCZnEIBQJoYwdhc3NldElkBAJmQwgFAmhjBmFtb3VudAQCZUgJAQJlQQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUgFAmVIBAJhYggFAmZiBmNhbGxlcgQCYWMIBQJmYg10cmFuc2FjdGlvbklkBAJobwkBAmZUBQUCZlUFAmZDBQJmcQUCYWIFAmFjAwkAAAIFAmhvBQJobwQCZlcIBQJobwJfNQQCaGUIBQJobwJfNAQCZm4IBQJobwJfMwQCZXQIBQJobwJfMgQCaHAIBQJobwJfMQQCY2YDAwkAZgIFAmdZAAAJAGYCBQJnWQUCaHAHCQECYmEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmdZBQNuaWwCAAUCaHAEAmhxCQD8BwQFAmJkAgRidXJuCQDMCAIFAmZDBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZxBQJmQwUDbmlsAwkAAAIFAmhxBQJocQQCZ0sJAQJjUAIFAmhtCQBkAgUCY2YJAJYDAQkAzAgCAAAJAMwIAgUCZm4FA25pbAQCaHIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmNmBQJmVQUDbmlsBAJoaQMJAGYCBQJmbgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJlBQJmbgUCZlUFA25pbAUDbmlsBAJocwQCaHQDCQAAAgUEdGhpcwUCYmUAAAUCZm4DBQJmVwkAlAoCCQEBLQEJAGQCBQJjZgUCaHQAAAkAlAoCAAAJAQEtAQkAZAIFAmNmBQJodAQCZUoIBQJocwJfMQQCZUsIBQJocwJfMgQCaHUJAQJlSQMFAmVKBQJlSwAABAJnVAgFAmh1Al8xBAJleggFAmh1Al8yBAJnVQkBAmVOAgUCZUgFAmV6AwkAAAIFAmdVBQJnVQkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIFAmV0BQJnSwUCaHIFAmhpBQJnVAUCY2YJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmIBEWdldE9uZVRrblJFQURPTkxZAgJmVQJmQwQCaHYJAQJmVAUJAQJibgEFAmZVBQJmQwUCYncFBHVuaXQFBHVuaXQEAmhwCAUCaHYCXzEEAmV0CAUCaHYCXzIEAmZuCAUCaHYCXzMEAmhlCAUCaHYCXzQEAmZXCAUCaHYCXzUJAJQKAgUDbmlsCQCVCgMFAmhwBQJmbgUCaGUCZmIBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmh3AmhtAmdZBAJoYQoAAmJnCQD8BwQFAmJkAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCB0Jvb2xlYW4FAmJnCQACAQkArAICCQADAQUCYmcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhuAwMJAQJiaQAGCQAAAgUCYnYFAW4GBQJoYQQCZlYJAMwIAgMDCQEBIQEFAmhuBgkBAmdwAQUCZmIGCQECYmEBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJmYghwYXltZW50cwAABgkBAmJhAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlYFAmZWBAJmVQkBAmJuAQUCaG0EAmFiCAUCZmIGY2FsbGVyBAJhYwgFAmZiDXRyYW5zYWN0aW9uSWQEAmVICQECZUEDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVIBQJlSAQCaHgJAPwHBAUCYkMCB3Vuc3Rha2UJAMwIAgkA2AQBBQJidwkAzAgCBQJodwUDbmlsBQNuaWwDCQAAAgUCaHgFAmh4BAJoeQkBAmZUBQUCZlUFAmh3BQJidwUCYWIFAmFjAwkAAAIFAmh5BQJoeQQCZlcIBQJoeQJfNQQCaGUIBQJoeQJfNAQCZm4IBQJoeQJfMwQCZXQIBQJoeQJfMgQCaHAIBQJoeQJfMQQCY2YDAwkAZgIFAmdZAAAJAGYCBQJnWQUCaHAHCQECYmEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmdZBQNuaWwCAAUCaHAEAmhxCQD8BwQFAmJkAgRidXJuCQDMCAIFAmh3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJ3BQJodwUDbmlsAwkAAAIFAmhxBQJocQQCZ0sJAQJjUAIFAmhtCQBkAgUCY2YJAJYDAQkAzAgCAAAJAMwIAgUCZm4FA25pbAQCaHIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmZiBmNhbGxlcgUCY2YFAmZVBQNuaWwEAmhpAwkAZgIFAmZuAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYmUFAmZuBQJmVQUDbmlsBQNuaWwEAmh6BAJodAMJAAACBQR0aGlzBQJiZQAABQJmbgMFAmZXCQCUCgIJAQEtAQkAZAIFAmNmBQJodAAACQCUCgIAAAkBAS0BCQBkAgUCY2YFAmh0BAJlSggFAmh6Al8xBAJlSwgFAmh6Al8yBAJoQQkBAmVJAwUCZUoFAmVLAAAEAmdUCAUCaEECXzEEAmV6CAUCaEECXzIEAmdVCQECZU4CBQJlSAUCZXoDCQAAAgUCZ1UFAmdVCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgUCZXQFAmdLBQJocgUCaGkFAmdUBQJjZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmYgEDZ2V0AAQCZWUJAQJmYQEFAmZiBAJkSwgFAmVlAl8xBAJkTAgFAmVlAl8yBAJmZAgFAmVlAl8zBAJkdAgFAmVlAl80BAJkTQgFAmVlAl81BAJnSwkBAmNVAgUCZEsFAmRMBAJlSAkBAmVBAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSAUCZUgEAmhCCQD8BwQFAmJkAgRidXJuCQDMCAIFAmZkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR0BQJmZAUDbmlsAwkAAAIFAmhCBQJoQgQCaEMJAQJlSQMJAQEtAQUCZEsJAQEtAQUCZEwAAAQCZ1QIBQJoQwJfMQQCZXoIBQJoQwJfMgQCZ1UJAQJlTgIFAmVIBQJlegMJAAACBQJnVQUCZ1UJAM4IAgkAzggCBQJnSwUCZE0FAmdUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiAQlnZXROb0xlc3MCAmhEAmhFBAJlZQkBAmZhAQUCZmIEAmRLCAUCZWUCXzEEAmRMCAUCZWUCXzIEAmZkCAUCZWUCXzMEAmR0CAUCZWUCXzQEAmRNCAUCZWUCXzUDCQBmAgUCaEQFAmRLCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJkSwIDIDwgCQCkAwEFAmhEAwkAZgIFAmhFBQJkTAkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmRMAgMgPCAJAKQDAQUCaEUEAmdLCQECY1UCBQJkSwUCZEwEAmVICQECZUEDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVIBQJlSAQCaEIJAPwHBAUCYmQCBGJ1cm4JAMwIAgUCZmQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHQFAmZkBQNuaWwDCQAAAgUCaEIFAmhCBAJoRgkBAmVJAwkBAS0BBQJkSwkBAS0BBQJkTAAABAJnVAgFAmhGAl8xBAJleggFAmhGAl8yBAJnVQkBAmVOAgUCZUgFAmV6AwkAAAIFAmdVBQJnVQkAzggCCQDOCAIFAmdLBQJkTQUCZ1QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmIBDXVuc3Rha2VBbmRHZXQBAmNmBAJoRwMJAQIhPQIJAJADAQgFAmZiCHBheW1lbnRzAAAJAAIBAhhObyBwYXltZW50cyBhcmUgZXhwZWN0ZWQGAwkAAAIFAmhHBQJoRwQCZGkJAQJiawAEAmR2CQDZBAEJAJEDAgUCZGkFAXEEAmVICQECZUEDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVIBQJlSAQCaHgJAPwHBAUCYkMCB3Vuc3Rha2UJAMwIAgkA2AQBBQJkdgkAzAgCBQJjZgUDbmlsBQNuaWwDCQAAAgUCaHgFAmh4BAJlZQkBAmRyBAkA2AQBCAUCZmINdHJhbnNhY3Rpb25JZAkA2AQBBQJkdgUCY2YIBQJmYgZjYWxsZXIEAmRLCAUCZWUCXzEEAmRMCAUCZWUCXzIEAmR5CQENcGFyc2VJbnRWYWx1ZQEIBQJlZQJfOQQCZE0IBQJlZQNfMTAEAmdLCQECY1UCBQJkSwUCZEwEAmhIAwMJAQJiaQAGCQAAAgUCZHkFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmR5BgMJAAACBQJoSAUCaEgEAmhCCQD8BwQFAmJkAgRidXJuCQDMCAIFAmNmBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR2BQJjZgUDbmlsAwkAAAIFAmhCBQJoQgQCaEkJAQJlSQMJAQEtAQUCZEsJAQEtAQUCZEwAAAQCZ1QIBQJoSQJfMQQCZXoIBQJoSQJfMgQCZ1UJAQJlTgIFAmVIBQJlegMJAAACBQJnVQUCZ1UJAM4IAgkAzggCBQJnSwUCZE0FAmdUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJodwJoSgJoRQQCaG4DCQECYmkABgkAAAIFAmJ2BQFuBAJmVgkAzAgCAwkBASEBBQJobgYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJmYghwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZWBQJmVgQCZUgJAQJlQQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUgFAmVIBAJoeAkA/AcEBQJiQwIHdW5zdGFrZQkAzAgCCQDYBAEFAmJ3CQDMCAIFAmh3BQNuaWwFA25pbAMJAAACBQJoeAUCaHgEAmVlCQECZHIECQDYBAEIBQJmYg10cmFuc2FjdGlvbklkCQDYBAEFAmJ3BQJodwgFAmZiBmNhbGxlcgQCZEsIBQJlZQJfMQQCZEwIBQJlZQJfMgQCZE0IBQJlZQNfMTAEAmdLCQECY1UCBQJkSwUCZEwEAmhLCQDMCAIDCQBnAgUCZEsFAmhKBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhKBQNuaWwCAAkAzAgCAwkAZwIFAmRMBQJoRQYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhFBQNuaWwCAAUDbmlsAwkAAAIFAmhLBQJoSwQCaEIJAPwHBAUCYmQCBGJ1cm4JAMwIAgUCaHcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYncFAmh3BQNuaWwDCQAAAgUCaEIFAmhCBAJoTAkBAmVJAwkBAS0BBQJkSwkBAS0BBQJkTAAABAJnVAgFAmhMAl8xBAJleggFAmhMAl8yBAJnVQkBAmVOAgUCZUgFAmV6AwkAAAIFAmdVBQJnVQkAzggCCQDOCAIFAmdLBQJkTQUCZ1QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmIBCGFjdGl2YXRlAgJoTQJoTgMJAQIhPQIJAKUIAQgFAmZiBmNhbGxlcgkApQgBBQJiZAkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQAFAmhNCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgAFAmhOBQNuaWwCB3N1Y2Nlc3MCZmIBCnJlZnJlc2hLTHAABAJoTwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhawAABAJoUAMJAGcCCQBlAgUGaGVpZ2h0BQJoTwUCYW4FBHVuaXQJAQJiYQEJALkJAgkAzAgCCQCkAwEFAmFuCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJoUAUCaFAEAmVVCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhagIBMAkBAmJjAQILaW52YWxpZCBrTHAEAmhRCQECZUkDAAAAAAAABAJoUggFAmhRAl8xBAJleggFAmhRAl8yBAJlTAMJAQIhPQIFAmVVBQJlegUCaFIJAQJiYQECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJlTAkApgMBBQJlegkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmYgEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYmsAAmZiARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJhcAkAlAoCBQNuaWwJAQJiVAEFAmFwAmZiARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJkYwJkZAJkaAQCZHEJAQJkZwMFAmRjBQJkZAUCZGgJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJkcQAACQDMCAIJAKYDAQkAkQMCBQJkcQABCQDMCAIJAKYDAQkAkQMCBQJkcQACBQNuaWwCZmIBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJmYgEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSQFKCQCUCgIFA25pbAkBAUgCCQCnAwEFAUkFAUoCZmIBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYlgCYlkJAJQKAgUDbmlsCQCmAwEJAQJiVwIJAKcDAQUCYlgJAKcDAQUCYlkCZmIBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJkcwJkTwJkUAJkUQJkUgJkUwJhYgJkVAJkVQkAlAoCBQNuaWwJAQJkTgkFAmRzBQJkTwUCZFAFAmRRBQJkUgUCZFMFAmFiBQJkVAUCZFUCZmIBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJkcwJkdAJkdQJhYgQCZWUJAQJkcgQFAmRzBQJkdAUCZHUJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFiCQCUCgIFA25pbAkAnAoKCAUCZWUCXzEIBQJlZQJfMggFAmVlAl8zCAUCZWUCXzQIBQJlZQJfNQgFAmVlAl82CAUCZWUCXzcJAKYDAQgFAmVlAl84CAUCZWUCXzkIBQJlZQNfMTACZmIBDXN0YXRzUkVBRE9OTFkABAJkaQkBAmJrAAQCZHYJANkEAQkAkQMCBQJkaQUBcQQCaFMJAJEDAgUCZGkFAXIEAmhUCQCRAwIFAmRpBQFzBAJkWAkAkQMCBQJkaQUBdgQCZFkJAJEDAgUCZGkFAXcEAmRqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXQEAmRrCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXUEAmhVCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmR2CQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmR2Ag4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaFYJAQJiVAEFAmhTBAJoVwkBAmJUAQUCaFQEAmhYAwkAAAIFAmhVAAAJAMwIAgUBZQkAzAgCBQFlCQDMCAIFAWUFA25pbAkBAmRnAwUCaFYFAmhXBQJoVQQCZEYAAAQCaFkJAQFIAgkAkQMCBQJoWAABBQFiBAJoWgkBAUgCCQCRAwIFAmhYAAIFAWIEAmlhCQEFdmFsdWUBCQCaCAIFAmJkCQECYUQBCQClCAEFBHRoaXMJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJoVgkAzAgCCQCkAwEFAmhXCQDMCAIJAKQDAQUCaFUJAMwIAgkApAMBBQJkRgkAzAgCCQCkAwEFAmhZCQDMCAIJAKQDAQUCaFoJAMwIAgkApAMBBQJpYQUDbmlsBQFqAmZiASBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQECZFAEAmRpCQECYmsABAJkdgkA2QQBCQCRAwIFAmRpBQFxBAJkVgkAkQMCBQJkaQUBcgQCZHcJANkEAQUCZFYEAmRXCQCRAwIFAmRpBQFzBAJkeAkA2QQBBQJkVwQCZGoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBdAQCZGsJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBdQQCZHkJAJEDAgUCZGkFAXAEAmhVCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmR2CQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmR2Ag4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaFYJAQJiVAEFAmRWBAJoVwkBAmJUAQUCZFcEAmRlCQEBRAIFAmhWBQJkagQCZGYJAQFEAgUCaFcFAmRrBAJkRQMJAAACBQJoVQAABQFlCQECYlcCBQJkZgUCZGUEAmViCQEBRAIFAmRQBQJkagQCZWMJALwCAwUCZWIFAmRFBQFkBAJkUgkBAUgCBQJlYwUCZGsEAmZoCQECZE4JAgAAoMIeBQJkUAUCZHcFAmRSBQJkeAIABgcEAmVtCAUCZmgCXzEEAmliCAUCZmgCXzMEAmRBCAUCZmgCXzQEAmRDCAUCZmgCXzUEAmR6CAUCZmgCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmVtCQDMCAIJAKQDAQkBAUgCBQJkRQUBYgkAzAgCCQCkAwEFAmRBCQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkegkAzAgCBQJkeQkAzAgCCQCkAwEFAmRQCQDMCAIJAKQDAQUCZFIFA25pbAUBagJmYgEfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQECZFIEAmRpCQECYmsABAJkdgkA2QQBCQCRAwIFAmRpBQFxBAJkVgkAkQMCBQJkaQUBcgQCZHcJANkEAQUCZFYEAmRXCQCRAwIFAmRpBQFzBAJkeAkA2QQBBQJkVwQCZGoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBdAQCZGsJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBdQQCZHkJAJEDAgUCZGkFAXAEAmhVCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmR2CQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmR2Ag4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaWMJAQJiVAEFAmRWBAJpZAkBAmJUAQUCZFcEAmllCQEBRAIFAmljBQJkagQCaWYJAQFEAgUCaWQFAmRrBAJkRQMJAAACBQJoVQAABQFlCQECYlcCBQJpZgUCaWUEAmVjCQEBRAIFAmRSBQJkawQCZWIJALwCAwUCZWMFAWQFAmRFBAJkUAkBAUgCBQJlYgUCZGoEAmZoCQECZE4JAgAAoMIeBQJkUAUCZHcFAmRSBQJkeAIABgcEAmVtCAUCZmgCXzEEAmliCAUCZmgCXzMEAmRBCAUCZmgCXzQEAmRDCAUCZmgCXzUEAmR6CAUCZmgCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmVtCQDMCAIJAKQDAQkBAUgCBQJkRQUBYgkAzAgCCQCkAwEFAmRBCQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkegkAzAgCBQJkeQkAzAgCCQCkAwEFAmRQCQDMCAIJAKQDAQUCZFIFA25pbAUBagJmYgETZXZhbHVhdGVHZXRSRUFET05MWQICaWcCaWgEAmVlCQECZHIEAgAFAmlnBQJpaAUEdGhpcwQCZEsIBQJlZQJfMQQCZEwIBQJlZQJfMgQCZEEIBQJlZQJfNQQCZEMIBQJlZQJfNgQCZHoIBQJlZQJfNwQCZEYIBQJlZQJfOAQCZHkJAQ1wYXJzZUludFZhbHVlAQgFAmVlAl85CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZEsJAMwIAgkApAMBBQJkTAkAzAgCCQCkAwEFAmRBCQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkegkAzAgCCQCmAwEFAmRGCQDMCAIJAKQDAQUCZHkFA25pbAUBagECaWkBAmlqAAQCaWsEAmFRCQECZ24AAwkAAQIFAmFRAgpCeXRlVmVjdG9yBAJncQUCYVEFAmdxAwkAAQIFAmFRAgRVbml0CAUCaWkPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmFRBQJpaQMJAAECBQJhUQIFT3JkZXIEAmVRBQJhUQQCaWwJAQJiagAEAmltAwkBAmVNAAkAlAoCBgIACQECZVABBQJlUQQCYUsIBQJpbQJfMQQCYUwIBQJpbQJfMgQCYU0JAPQDAwgFAmVRCWJvZHlCeXRlcwkAkQMCCAUCZVEGcHJvb2ZzAAAIBQJlUQ9zZW5kZXJQdWJsaWNLZXkEAmFOCQD0AwMIBQJlUQlib2R5Qnl0ZXMJAJEDAggFAmVRBnByb29mcwABBQJpbAMDAwUCYUsFAmFNBwUCYU4HBgkBAmFKBAUCYUsFAmFMBQJhTQUCYU4DCQABAgUCYVECFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJhVgUCYVEDCQD0AwMIBQJpaQlib2R5Qnl0ZXMJAJEDAggFAmlpBnByb29mcwAABQJpawYEAmluCQD2AwEJAQV2YWx1ZQEIBQJhVgZzY3JpcHQEAmlvCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYmQJAQJhRgAEAmlwCQDxBwEFBHRoaXMDCQAAAgUCaW8FAmluCQECIT0CBQJpcAUCaW4HCQD0AwMIBQJpaQlib2R5Qnl0ZXMJAJEDAggFAmlpBnByb29mcwAABQJpaybyJ24=", "height": 3637188, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CduMoVHsvJnpVJaEkLFSUdnBGfbMnV4fFSN2HXYjDS25 Next: GMFP2C2noGtCKxopywEhvFDqpDLetBEHkyFYVzaQrBfk Diff:
OldNewDifferences
9393 func U () = "%s__managerPublicKey"
9494
9595
96-func V () = "%s__pendingManagerPublicKey"
96+func V () = "%s__managerVaultAddress"
9797
9898
9999 func W () = "%s%s__price__last"
168168
169169 let aG = "%s__feeCollectorAddress"
170170
171-func aH (aI,aJ,aK,aL) = throw((((((((("order validation failed: orderValid=" + toString(aI)) + " (") + aJ) + ")") + " senderValid=") + toString(aK)) + " matcherValid=") + toString(aL)))
171+func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
172172
173173
174-func aM (aN,aO) = valueOrErrorMessage(getString(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
174+func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
175175
176176
177-func aP (aN,aO) = valueOrErrorMessage(getInteger(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
178-
179-
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)
177+func aO (aP) = {
178+ let aQ = addressFromString(aP)
179+ if ($isInstanceOf(aQ, "Address"))
180+ then {
181+ let aR = aQ
182+ aR
183+ }
184+ else this
216185 }
217186
218187
219-func bd (be) = if ((be == i))
220- then unit
221- else fromBase58String(be)
222-
223-
224-func bf (be) = if ((be == unit))
225- then i
226- else toBase58String(value(be))
227-
228-
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]))
230-
231-
232-let bi = bg(ba())
233-
234-let bj = bi
235-
236-let bk = bj._1
237-
238-let bl = bj._2
239-
240-let bm = bj._3
241-
242-let bn = bj._4
243-
244-let bo = bj._5
245-
246-let bp = bj._6
247-
248-let bq = bj._7
249-
250-func br () = split(aM(aT, at()), j)
251-
252-
253-let bs = valueOrErrorMessage(addressFromString(br()[B]), "incorrect staking address")
254-
255-let bt = valueOrErrorMessage(addressFromString(br()[C]), "incorrect staking address")
256-
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)
258-
259-
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)
261-
262-
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])
188+func aS () = {
189+ let aT = {
190+ let aQ = getString(T())
191+ if ($isInstanceOf(aQ, "String"))
192+ then {
193+ let aU = aQ
194+ aO(aU)
195+ }
196+ else this
197+ }
198+ let aQ = getString(aT, V())
199+ if ($isInstanceOf(aQ, "String"))
200+ then {
201+ let aV = aQ
202+ aO(aV)
203+ }
204+ else this
269205 }
270206
271207
272-func bM (bN,bO) = fraction(bN, d, bO)
208+func aW (aX,aY) = valueOrErrorMessage(getString(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
273209
274210
275-func bP (bN,bO,L) = fraction(bN, d, bO, L)
211+func aZ (aX,aY) = valueOrErrorMessage(getInteger(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
276212
277213
278-func bQ (bR) = {
279- let bS = invoke(bR, "getRate", nil, nil)
280- if ((bS == bS))
214+func ba (bb) = throw(makeString(["lp.ride:", bb], " "))
215+
216+
217+func bc (bb) = makeString(["lp.ride:", bb], " ")
218+
219+
220+let bd = addressFromStringValue(aW(this, T()))
221+
222+let be = addressFromStringValue(aW(bd, aG))
223+
224+let bf = {
225+ let bg = invoke(bd, "getInFeeREADONLY", [toString(this)], nil)
226+ if ($isInstanceOf(bg, "Int"))
227+ then bg
228+ else throw(($getType(bg) + " couldn't be cast to Int"))
229+ }
230+
231+let bh = {
232+ let bg = invoke(bd, "getOutFeeREADONLY", [toString(this)], nil)
233+ if ($isInstanceOf(bg, "Int"))
234+ then bg
235+ else throw(($getType(bg) + " couldn't be cast to Int"))
236+ }
237+
238+func bi () = valueOrElse(getBoolean(bd, aC()), false)
239+
240+
241+func bj () = fromBase58String(aW(bd, au()))
242+
243+
244+func bk () = {
245+ let bl = aW(this, ae())
246+ let bm = aW(this, af())
247+ let az = aZ(bd, aA(bm))
248+ let ay = aZ(bd, aA(bl))
249+ split(aW(bd, ax(toString(ay), toString(az))), j)
250+ }
251+
252+
253+func bn (bo) = if ((bo == i))
254+ then unit
255+ else fromBase58String(bo)
256+
257+
258+func bp (bo) = if ((bo == unit))
259+ then i
260+ else toBase58String(value(bo))
261+
262+
263+func bq (br) = $Tuple7(addressFromStringValue(br[o]), parseIntValue(br[p]), fromBase58String(br[q]), bn(br[r]), bn(br[s]), parseIntValue(br[t]), parseIntValue(br[u]))
264+
265+
266+let bs = bq(bk())
267+
268+let bt = bs
269+
270+let bu = bt._1
271+
272+let bv = bt._2
273+
274+let bw = bt._3
275+
276+let bx = bt._4
277+
278+let by = bt._5
279+
280+let bz = bt._6
281+
282+let bA = bt._7
283+
284+func bB () = split(aW(bd, at()), j)
285+
286+
287+let bC = valueOrErrorMessage(addressFromString(bB()[B]), "incorrect staking address")
288+
289+let bD = valueOrErrorMessage(addressFromString(bB()[C]), "incorrect staking address")
290+
291+func bE (bF,bG,bH,bI,bJ,bK,bL,bM,bN,bO) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN), toString(bO)], j)
292+
293+
294+func bP (bQ,bR,bS,bI,bL,bM) = makeString(["%d%d%d%d%d%d", toString(bQ), toString(bR), toString(bS), toString(bI), toString(bL), toString(bM)], j)
295+
296+
297+func bT (ap) = {
298+ let bU = if ((ap == "WAVES"))
299+ then wavesBalance(this).available
300+ else assetBalance(this, fromBase58String(ap))
301+ let bV = ((bU + ar(ap)) - as(ap))
302+ max([0, bV])
303+ }
304+
305+
306+func bW (bX,bY) = fraction(bX, d, bY)
307+
308+
309+func bZ (bX,bY,L) = fraction(bX, d, bY, L)
310+
311+
312+func ca (cb) = {
313+ let cc = invoke(cb, "getRate", nil, nil)
314+ if ((cc == cc))
281315 then {
282- let bT = bS
283- if ($isInstanceOf(bT, "Int"))
316+ let aQ = cc
317+ if ($isInstanceOf(aQ, "Int"))
284318 then {
285- let bU = bT
286- bU
319+ let cd = aQ
320+ cd
287321 }
288- else aQ("proxy.getRate() unexpected value")
322+ else ba("proxy.getRate() unexpected value")
289323 }
290324 else throw("Strict value is not equal to itself.")
291325 }
292326
293327
294-func bV (ap,bW,bX,bR) = {
295- let bY = ar(ap)
296- if ((bY == bY))
328+func ce (ap,cf,cg,cb) = {
329+ let ch = ar(ap)
330+ if ((ch == ch))
297331 then {
298- let bZ = as(bX)
299- if ((bZ == bZ))
332+ let ci = as(cg)
333+ if ((ci == ci))
300334 then {
301- let ca = bd(ap)
302- if ((bW > 0))
335+ let cj = bn(ap)
336+ if ((cf > 0))
303337 then {
304- let cb = invoke(bR, "deposit", nil, [AttachedPayment(ca, bW)])
305- if ((cb == cb))
338+ let ck = invoke(cb, "deposit", nil, [AttachedPayment(cj, cf)])
339+ if ((ck == ck))
306340 then {
307- let bT = cb
308- if ($isInstanceOf(bT, "Int"))
341+ let aQ = ck
342+ if ($isInstanceOf(aQ, "Int"))
309343 then {
310- let cc = bT
311- let cd = (bY + bW)
312- let ce = (bZ + cc)
313-[IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce)]
344+ let cl = aQ
345+ let cm = (ch + cf)
346+ let cn = (ci + cl)
347+[IntegerEntry(ao(ap), cm), IntegerEntry(aq(cg), cn)]
314348 }
315349 else nil
316350 }
324358 }
325359
326360
327-func cf (ap,bW,bX,bR,cg,ch) = {
328- let bY = ar(ap)
329- if ((bY == bY))
361+func co (ap,cf,cg,cb,cp,cq) = {
362+ let ch = ar(ap)
363+ if ((ch == ch))
330364 then {
331- let bZ = as(bX)
332- if ((bZ == bZ))
365+ let ci = as(cg)
366+ if ((ci == ci))
333367 then {
334- let ci = bQ(bR)
335- if ((ci == ci))
368+ let cr = ca(cb)
369+ if ((cr == cr))
336370 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))
371+ let cs = fraction(cp, ch, ci)
372+ let ct = bn(cg)
373+ let cu = fraction(cp, cf, cs)
374+ let cv = fraction(cp, cf, cr)
375+ let cw = max([0, (cu - cv)])
376+ if ((cv > 0))
343377 then {
344- let co = invoke(bR, "withdraw", nil, [AttachedPayment(ck, cm)])
345- if ((co == co))
378+ let cx = invoke(cb, "withdraw", nil, [AttachedPayment(ct, cv)])
379+ if ((cx == cx))
346380 then {
347- let bT = co
348- if ($isInstanceOf(bT, "Int"))
381+ let aQ = cx
382+ if ($isInstanceOf(aQ, "Int"))
349383 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))]
384+ let cy = aQ
385+ let cm = (ch - cy)
386+ let cn = ((ci - cv) - cw)
387+[IntegerEntry(ao(ap), cm), IntegerEntry(aq(cg), cn), ScriptTransfer(cq, cw, bn(cg))]
354388 }
355389 else nil
356390 }
366400 }
367401
368402
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)"))
403+func cz (ap) = {
404+ let aQ = invoke(bd, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
405+ if ($isInstanceOf(aQ, "(Boolean, Int, Int, String, String, Int, String)"))
372406 then {
373- let cr = bT
374- cr
407+ let aR = aQ
408+ aR
375409 }
376- else aQ((("[" + ap) + "] getLeaseProxyConfig() error"))
410+ else ba((("[" + ap) + "] getLeaseProxyConfig() error"))
377411 }
378412
379413
380-func cs (ct,ap,bX,cu,bR,cg,ch) = {
381- let bY = ar(ap)
382- if ((bY == bY))
414+func cA (cB,ap,cg,cC,cb,cp,cq) = {
415+ let ch = ar(ap)
416+ if ((ch == ch))
383417 then {
384- let bZ = as(bX)
385- if ((bZ == bZ))
418+ let ci = as(cg)
419+ if ((ci == ci))
386420 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))
421+ let cD = max([0, (bT(ap) - cC)])
422+ let cE = fraction(cB, cD, 100)
423+ let cF = (ch - cE)
424+ if ((cF == 0))
391425 then nil
392- else if ((0 > cx))
426+ else if ((0 > cF))
393427 then {
394- let cy = -(cx)
395- bV(ap, cy, bX, bR)
428+ let cG = -(cF)
429+ ce(ap, cG, cg, cb)
396430 }
397431 else {
398- let cz = cx
399- cf(ap, cz, bX, bR, cg, ch)
432+ let cH = cF
433+ co(ap, cH, cg, cb, cp, cq)
400434 }
401435 }
402436 else throw("Strict value is not equal to itself.")
405439 }
406440
407441
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))
442+func cI (ap) = {
443+ let cJ = cz(ap)
444+ let cK = cJ._1
445+ let cL = cJ._2
446+ let cC = cJ._3
447+ let cM = cJ._4
448+ let cN = cJ._5
449+ let cp = cJ._6
450+ let cO = cJ._7
451+ if (cK)
452+ then cA(cL, ap, cN, cC, addressFromStringValue(cM), cp, addressFromStringValue(cO))
419453 else nil
420454 }
421455
422456
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)
457+func cP (ap,cQ) = {
458+ let cR = cz(ap)
459+ let cK = cR._1
460+ let cL = cR._2
461+ let cC = cR._3
462+ let cM = cR._4
463+ let cN = cR._5
464+ let cp = cR._6
465+ let cO = cR._7
466+ if (cK)
433467 then {
434- let cK = max([0, ((bJ(ap) - cI) - cu)])
435- if ((cK == cK))
468+ let cS = max([0, ((bT(ap) - cQ) - cC)])
469+ if ((cS == cS))
436470 then {
437- let cd = fraction(cD, cK, 100)
438- if ((cd == cd))
471+ let cm = fraction(cL, cS, 100)
472+ if ((cm == cm))
439473 then {
440- let cL = (ar(ap) - cd)
441- if ((cL == cL))
442- then if ((0 > cL))
443- then bV(ap, -(cL), cF, addressFromStringValue(cE))
444- else cf(ap, cL, cF, addressFromStringValue(cE), cg, addressFromStringValue(cG))
474+ let cT = (ar(ap) - cm)
475+ if ((cT == cT))
476+ then if ((0 > cT))
477+ then ce(ap, -(cT), cN, addressFromStringValue(cM))
478+ else co(ap, cT, cN, addressFromStringValue(cM), cp, addressFromStringValue(cO))
445479 else throw("Strict value is not equal to itself.")
446480 }
447481 else throw("Strict value is not equal to itself.")
452486 }
453487
454488
455-func cM (cN,cO) = {
456- let cP = cH(aM(this, ae()), cN)
457- let cQ = cH(aM(this, af()), cO)
458- (cP ++ cQ)
489+func cU (cV,cW) = {
490+ let cX = cP(aW(this, ae()), cV)
491+ let cY = cP(aW(this, af()), cW)
492+ (cX ++ cY)
459493 }
460494
461495
462-func cR (cS,cT,cU,cV) = {
463- let cW = D(cU, cS)
464- let cX = D(cV, cT)
465- bM(cX, cW)
496+func cZ (da,db,dc,dd) = {
497+ let de = D(dc, da)
498+ let df = D(dd, db)
499+ bW(df, de)
466500 }
467501
468502
469-func cY (cU,cV,cZ) = {
470- let da = ba()
471- let db = parseIntValue(da[t])
472- let dc = parseIntValue(da[u])
473- let dd = cR(db, dc, cU, cV)
474- let bO = D(cU, db)
475- let bN = D(cV, dc)
476- let de = D(cZ, b)
477- let df = bM(bO, de)
478- let dg = bM(bN, de)
479-[dd, df, dg]
503+func dg (dc,dd,dh) = {
504+ let di = bk()
505+ let dj = parseIntValue(di[t])
506+ let dk = parseIntValue(di[u])
507+ let dl = cZ(dj, dk, dc, dd)
508+ let bY = D(dc, dj)
509+ let bX = D(dd, dk)
510+ let dm = D(dh, b)
511+ let dn = bW(bY, dm)
512+ let do = bW(bX, dm)
513+[dl, dn, do]
480514 }
481515
482516
483-func dh (cU,cV,cZ) = {
484- let di = cY(cU, cV, cZ)
485-[H(di[0], b), H(di[1], b), H(di[2], b)]
517+func dp (dc,dd,dh) = {
518+ let dq = dg(dc, dd, dh)
519+[H(dq[0], b), H(dq[1], b), H(dq[2], b)]
486520 }
487521
488522
489-func dj (dk,dl,dm,ab) = {
490- let da = ba()
491- let dn = da[q]
492- let do = da[r]
493- let dp = da[s]
494- let cS = parseIntValue(da[t])
495- let cT = parseIntValue(da[u])
496- let dq = da[p]
497- let dr = valueOrErrorMessage(assetInfo(fromBase58String(dn)), (("Asset " + dn) + " doesn't exist")).quantity
498- if ((dn != dl))
523+func dr (ds,dt,du,ab) = {
524+ let di = bk()
525+ let dv = di[q]
526+ let dw = di[r]
527+ let dx = di[s]
528+ let da = parseIntValue(di[t])
529+ let db = parseIntValue(di[u])
530+ let dy = di[p]
531+ let dz = valueOrErrorMessage(assetInfo(fromBase58String(dv)), (("Asset " + dv) + " doesn't exist")).quantity
532+ if ((dv != dt))
499533 then throw("Invalid asset passed.")
500534 else {
501- let ds = bJ(do)
502- let dt = D(ds, cS)
503- let du = bJ(dp)
504- let dv = D(du, cT)
505- let dw = bM(dv, dt)
506- let dx = H(dw, b)
507- let dy = D(dm, b)
508- let dz = D(dr, b)
509- let dA = fraction(dt, dy, dz)
510- let dB = fraction(dv, dy, dz)
511- let dC = K(dA, cS, FLOOR)
512- let dD = K(dB, cT, FLOOR)
513- let dE = if ((dk == ""))
535+ let dA = bT(dw)
536+ let dB = D(dA, da)
537+ let dC = bT(dx)
538+ let dD = D(dC, db)
539+ let dE = bW(dD, dB)
540+ let dF = H(dE, b)
541+ let dG = D(du, b)
542+ let dH = D(dz, b)
543+ let dI = fraction(dB, dG, dH)
544+ let dJ = fraction(dD, dG, dH)
545+ let dK = K(dI, da, FLOOR)
546+ let dL = K(dJ, db, FLOOR)
547+ let dM = if ((ds == ""))
514548 then nil
515- else [ScriptTransfer(ab, dC, if ((do == "WAVES"))
549+ else [ScriptTransfer(ab, dK, if ((dw == "WAVES"))
516550 then unit
517- else fromBase58String(do)), ScriptTransfer(ab, dD, if ((dp == "WAVES"))
551+ else fromBase58String(dw)), ScriptTransfer(ab, dL, if ((dx == "WAVES"))
518552 then unit
519- 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)]
520- $Tuple10(dC, dD, do, dp, ds, du, dr, dw, dq, dE)
553+ else fromBase58String(dx)), StringEntry(ad(toString(ab), ds), bP(dK, dL, du, dF, height, lastBlock.timestamp)), IntegerEntry(W(), dF), IntegerEntry(X(height, lastBlock.timestamp), dF)]
554+ $Tuple10(dK, dL, dw, dx, dA, dC, dz, dE, dy, dM)
521555 }
522556 }
523557
524558
525-func dF (dk,dG,dH,dI,dJ,dK,ab,dL,dM) = {
526- let da = ba()
527- let dn = fromBase58String(da[q])
528- let dN = da[r]
529- let dO = da[s]
530- let dP = da[v]
531- let dQ = da[w]
532- let db = parseIntValue(da[t])
533- let dc = parseIntValue(da[u])
534- let dq = da[p]
535- let dr = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
536- let dR = toBase58String(valueOrElse(dI, fromBase58String("WAVES")))
537- let dS = toBase58String(valueOrElse(dK, fromBase58String("WAVES")))
538- if (if ((dN != dR))
559+func dN (ds,dO,dP,dQ,dR,dS,ab,dT,dU) = {
560+ let di = bk()
561+ let dv = fromBase58String(di[q])
562+ let dV = di[r]
563+ let dW = di[s]
564+ let dX = di[v]
565+ let dY = di[w]
566+ let dj = parseIntValue(di[t])
567+ let dk = parseIntValue(di[u])
568+ let dy = di[p]
569+ let dz = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
570+ let dZ = toBase58String(valueOrElse(dQ, fromBase58String("WAVES")))
571+ let ea = toBase58String(valueOrElse(dS, fromBase58String("WAVES")))
572+ if (if ((dV != dZ))
539573 then true
540- else (dO != dS))
574+ else (dW != ea))
541575 then throw("Invalid amt or price asset passed.")
542576 else {
543- let ds = if (dL)
544- then bJ(dN)
545- else (bJ(dN) - dH)
546- let du = if (dL)
547- then bJ(dO)
548- else (bJ(dO) - dJ)
549- let dT = D(dH, db)
550- let dU = D(dJ, dc)
551- let dV = bM(dU, dT)
552- let dt = D(ds, db)
553- let dv = D(du, dc)
554- let dW = if ((dr == 0))
577+ let dA = if (dT)
578+ then bT(dV)
579+ else (bT(dV) - dP)
580+ let dC = if (dT)
581+ then bT(dW)
582+ else (bT(dW) - dR)
583+ let eb = D(dP, dj)
584+ let ec = D(dR, dk)
585+ let ed = bW(ec, eb)
586+ let dB = D(dA, dj)
587+ let dD = D(dC, dk)
588+ let ee = if ((dz == 0))
555589 then {
556- let dw = e
557- let dX = e
558- let de = pow((dT * dU), 0, toBigInt(5), 1, 0, DOWN)
559- $Tuple5(H(de, b), H(dT, db), H(dU, dc), bM((dv + dU), (dt + dT)), dX)
590+ let dE = e
591+ let ef = e
592+ let dm = pow((eb * ec), 0, toBigInt(5), 1, 0, DOWN)
593+ $Tuple5(H(dm, b), H(eb, dj), H(ec, dk), bW((dD + ec), (dB + eb)), ef)
560594 }
561595 else {
562- let dw = bM(dv, dt)
563- let dX = fraction(R((dw - dV)), d, dw)
564- let dY = D(dG, b)
565- if (if ((dw != e))
566- then (dX > dY)
596+ let dE = bW(dD, dB)
597+ let ef = fraction(R((dE - ed)), d, dE)
598+ let eg = D(dO, b)
599+ if (if ((dE != e))
600+ then (ef > eg)
567601 else false)
568- then throw(((("Price slippage " + toString(dX)) + " exceeded the passed limit of ") + toString(dY)))
602+ then throw(((("Price slippage " + toString(ef)) + " exceeded the passed limit of ") + toString(eg)))
569603 else {
570- let dz = D(dr, b)
571- let dZ = fraction(dT, bP(dv, dt, CEILING), d, CEILING)
572- let ea = fraction(dU, d, bP(dv, dt, FLOOR), CEILING)
573- let eb = if ((dZ > dU))
574- then $Tuple2(ea, dU)
575- else $Tuple2(dT, dZ)
576- let ec = eb._1
577- let ed = eb._2
578- let de = fraction(dz, ed, dv, FLOOR)
579- $Tuple5(K(de, b, FLOOR), K(ec, db, CEILING), K(ed, dc, CEILING), dw, dX)
604+ let dH = D(dz, b)
605+ let eh = fraction(eb, bZ(dD, dB, CEILING), d, CEILING)
606+ let ei = fraction(ec, d, bZ(dD, dB, FLOOR), CEILING)
607+ let ej = if ((eh > ec))
608+ then $Tuple2(ei, ec)
609+ else $Tuple2(eb, eh)
610+ let ek = ej._1
611+ let el = ej._2
612+ let dm = fraction(dH, el, dD, FLOOR)
613+ $Tuple5(K(dm, b, FLOOR), K(ek, dj, CEILING), K(el, dk, CEILING), dE, ef)
580614 }
581615 }
582- let ee = dW._1
583- let ef = dW._2
584- let eg = dW._3
585- let dx = H(dW._4, b)
586- let eh = H(dW._5, b)
587- if ((0 >= ee))
616+ let em = ee._1
617+ let en = ee._2
618+ let eo = ee._3
619+ let dF = H(ee._4, b)
620+ let ep = H(ee._5, b)
621+ if ((0 >= em))
588622 then throw("Invalid calculations. LP calculated is less than zero.")
589623 else {
590- let ei = if (!(dM))
624+ let eq = if (!(dU))
591625 then 0
592- else ee
593- let ej = (dH - ef)
594- let ek = (dJ - eg)
595- 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))]
596- $Tuple13(ee, ei, dx, ds, du, dr, dn, dq, el, ej, ek, dI, dK)
626+ else em
627+ let er = (dP - en)
628+ let es = (dR - eo)
629+ let et = [IntegerEntry(W(), dF), IntegerEntry(X(height, lastBlock.timestamp), dF), StringEntry(aa(ab, ds), bE(en, eo, eq, dF, dO, ep, height, lastBlock.timestamp, er, es))]
630+ $Tuple13(em, eq, dF, dA, dC, dz, dv, dy, et, er, es, dQ, dS)
597631 }
598632 }
599633 }
600634
601635
602-func em (en,eo,dr) = {
603- let ep = G(en, toBigInt(bp))
604- let eq = G(eo, toBigInt(bq))
605- let er = fraction(pow((ep * eq), 0, toBigInt(5), 1, 18, DOWN), g, dr)
606- if ((dr == f))
636+func eu (ev,ew,dz) = {
637+ let ex = G(ev, toBigInt(bz))
638+ let ey = G(ew, toBigInt(bA))
639+ let ez = fraction(pow((ex * ey), 0, toBigInt(5), 1, 18, DOWN), g, dz)
640+ if ((dz == f))
607641 then f
608- else er
642+ else ez
609643 }
610644
611645
612-func es (et,eu,ev) = {
613- let ew = (toBigInt(bJ(bf(bn))) - et)
614- let ex = (toBigInt(bJ(bf(bo))) - eu)
615- let ey = (toBigInt(value(assetInfo(bm)).quantity) - ev)
616- let ez = em(ew, ex, ey)
617- ez
646+func eA (eB,eC,eD) = {
647+ let eE = (toBigInt(bT(bp(bx))) - eB)
648+ let eF = (toBigInt(bT(bp(by))) - eC)
649+ let eG = (toBigInt(value(assetInfo(bw)).quantity) - eD)
650+ let eH = eu(eE, eF, eG)
651+ eH
618652 }
619653
620654
621-func eA (eB,eC,ev) = {
622- let ew = (bJ(bf(bn)) + eB)
623- let ex = (bJ(bf(bo)) + eC)
624- let ey = (value(assetInfo(bm)).quantity + ev)
625- let er = em(toBigInt(ew), toBigInt(ex), toBigInt(ey))
626- let eD = [IntegerEntry(ak, height), StringEntry(aj, toString(er))]
627- $Tuple2(eD, er)
655+func eI (eJ,eK,eD) = {
656+ let eE = (bT(bp(bx)) + eJ)
657+ let eF = (bT(bp(by)) + eK)
658+ let eG = (value(assetInfo(bw)).quantity + eD)
659+ let ez = eu(toBigInt(eE), toBigInt(eF), toBigInt(eG))
660+ let eL = [IntegerEntry(ak, height), StringEntry(aj, toString(ez))]
661+ $Tuple2(eL, ez)
628662 }
629663
630664
631-func eE (eF,er) = if ((er >= eF))
632- then true
633- else aQ(makeString(["updated KLp lower than current KLp", toString(eF), toString(er)], " "))
665+func eM () = valueOrElse(getBoolean(bd, aH(toString(this))), false)
634666
635667
636-func eG (eH) = {
637- let ew = bJ(bf(bn))
638- let ex = bJ(bf(bo))
639- let eI = eH.amount
640- let eJ = fraction(eH.amount, eH.price, b, FLOOR)
641- let eK = if ((eH.orderType == Buy))
642- then $Tuple2(eI, -(eJ))
643- else $Tuple2(-(eI), eJ)
644- let eB = eK._1
645- let eC = eK._2
646- if (if (if (aY())
668+func eN (eO,ez) = if ((ez >= eO))
669+ then true
670+ else ba(makeString(["updated KLp lower than current KLp", toString(eO), toString(ez)], " "))
671+
672+
673+func eP (eQ) = {
674+ let eE = bT(bp(bx))
675+ let eF = bT(bp(by))
676+ let eR = eQ.amount
677+ let eS = fraction(eQ.amount, eQ.price, b, FLOOR)
678+ let eT = if ((eQ.orderType == Buy))
679+ then $Tuple2(eR, -(eS))
680+ else $Tuple2(-(eR), eS)
681+ let eJ = eT._1
682+ let eK = eT._2
683+ if (if (if (bi())
647684 then true
648- else (bl == m))
685+ else (bv == m))
649686 then true
650- else (bl == n))
687+ else (bv == n))
651688 then throw("Exchange operations disabled")
652- else if (if ((eH.assetPair.amountAsset != bn))
689+ else if (if ((eQ.assetPair.amountAsset != bx))
653690 then true
654- else (eH.assetPair.priceAsset != bo))
691+ else (eQ.assetPair.priceAsset != by))
655692 then throw("Wrong order assets.")
656693 else {
657- let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
658- let eM = eA(eB, eC, 0)
659- let eN = eM._1
660- let eO = eM._2
661- let eP = (eO >= eL)
662- let eQ = makeString(["kLp=", toString(eL), " kLpNew=", toString(eO), " amountAssetBalance=", toString(ew), " priceAssetBalance=", toString(ex), " amountAssetBalanceDelta=", toString(eB), " priceAssetBalanceDelta=", toString(eC), " height=", toString(height)], "")
663- $Tuple2(eP, eQ)
694+ let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
695+ let eV = eI(eJ, eK, 0)
696+ let eW = eV._1
697+ let eX = eV._2
698+ let eY = (eX >= eU)
699+ let eZ = makeString(["kLp=", toString(eU), " kLpNew=", toString(eX), " amountAssetBalance=", toString(eE), " priceAssetBalance=", toString(eF), " amountAssetBalanceDelta=", toString(eJ), " priceAssetBalanceDelta=", toString(eK), " height=", toString(height)], "")
700+ $Tuple2(eY, eZ)
664701 }
665702 }
666703
667704
668-func eR (eS) = if ((size(eS.payments) != 1))
705+func fa (fb) = if ((size(fb.payments) != 1))
669706 then throw("exactly 1 payment is expected")
670707 else {
671- let eT = value(eS.payments[0])
672- let dl = value(eT.assetId)
673- let eU = eT.amount
674- let dW = dj(toBase58String(eS.transactionId), toBase58String(dl), eU, eS.caller)
675- let dC = dW._1
676- let dD = dW._2
677- let dq = parseIntValue(dW._9)
678- let dE = dW._10
679- if (if (aY())
708+ let fc = value(fb.payments[0])
709+ let dt = value(fc.assetId)
710+ let fd = fc.amount
711+ let ee = dr(toBase58String(fb.transactionId), toBase58String(dt), fd, fb.caller)
712+ let dK = ee._1
713+ let dL = ee._2
714+ let dy = parseIntValue(ee._9)
715+ let dM = ee._10
716+ if (if (bi())
680717 then true
681- else (dq == n))
682- then throw(("Get operation is blocked by admin. Status = " + toString(dq)))
683- else $Tuple5(dC, dD, eU, dl, dE)
718+ else (dy == n))
719+ then throw(("Get operation is blocked by admin. Status = " + toString(dy)))
720+ else $Tuple5(dK, dL, fd, dt, dM)
684721 }
685722
686723
687-func eV (eS,dG,dM) = if ((size(eS.payments) != 2))
724+func fe (fb,dO,dU) = if ((size(fb.payments) != 2))
688725 then throw("exactly 2 payments are expected")
689726 else {
690- let eW = value(eS.payments[0])
691- let eX = value(eS.payments[1])
692- let eY = dF(toBase58String(eS.transactionId), dG, eW.amount, eW.assetId, eX.amount, eX.assetId, toString(eS.caller), false, dM)
693- let dq = parseIntValue(eY._8)
694- if (if (if (aY())
727+ let ff = value(fb.payments[0])
728+ let fg = value(fb.payments[1])
729+ let fh = dN(toBase58String(fb.transactionId), dO, ff.amount, ff.assetId, fg.amount, fg.assetId, toString(fb.caller), false, dU)
730+ let dy = parseIntValue(fh._8)
731+ if (if (if (bi())
695732 then true
696- else (dq == l))
733+ else (dy == l))
697734 then true
698- else (dq == n))
699- then throw(("Put operation is blocked by admin. Status = " + toString(dq)))
700- else eY
735+ else (dy == n))
736+ then throw(("Put operation is blocked by admin. Status = " + toString(dy)))
737+ else fh
701738 }
702739
703740
704-func eZ (bW) = {
705- let fa = invoke(aT, "emit", [bW], nil)
706- if ((fa == fa))
741+func fi (cf) = {
742+ let fj = invoke(bd, "emit", [cf], nil)
743+ if ((fj == fj))
707744 then {
708- let fb = {
709- let bT = fa
710- if ($isInstanceOf(bT, "Address"))
745+ let fk = {
746+ let aQ = fj
747+ if ($isInstanceOf(aQ, "Address"))
711748 then {
712- let fc = bT
713- invoke(fc, "emit", [bW], nil)
749+ let fl = aQ
750+ invoke(fl, "emit", [cf], nil)
714751 }
715752 else unit
716753 }
717- if ((fb == fb))
718- then bW
754+ if ((fk == fk))
755+ then cf
719756 else throw("Strict value is not equal to itself.")
720757 }
721758 else throw("Strict value is not equal to itself.")
722759 }
723760
724761
725-func fd (bW,ai) = {
726- let fe = if ((ai == 0))
762+func fm (cf,ai) = {
763+ let fn = if ((ai == 0))
727764 then 0
728- else fraction(bW, ai, b)
729- $Tuple2((bW - fe), fe)
765+ else fraction(cf, ai, b)
766+ $Tuple2((cf - fn), fn)
730767 }
731768
732769
733-func ff (fg,fh,ab,ac) = {
734- let fi = (ac == unit)
735- let fj = bJ(bf(bn))
736- let fk = bJ(bf(bo))
737- let fl = if ((fh == bn))
770+func fo (fp,fq,ab,ac) = {
771+ let fr = (ac == unit)
772+ let fs = bT(bp(bx))
773+ let ft = bT(bp(by))
774+ let fu = if ((fq == bx))
738775 then true
739- else if ((fh == bo))
776+ else if ((fq == by))
740777 then false
741- else aQ("invalid asset")
742- let fm = if (fi)
743- then $Tuple2(fj, fk)
744- else if (fl)
745- then $Tuple2((fj - fg), fk)
746- else $Tuple2(fj, (fk - fg))
747- let fn = fm._1
748- let fo = fm._2
749- let fp = if (fl)
750- then $Tuple2(fg, 0)
751- else $Tuple2(0, fg)
752- let fq = fp._1
753- let fr = fp._2
754- let eI = fd(fq, aV)._1
755- let eJ = fd(fr, aV)._1
756- let fs = fd(fg, aV)
757- let ft = fs._1
758- let fe = fs._2
759- let fu = (fn + eI)
760- let fv = (fo + eJ)
761- let fw = bM(D(fv, bq), D(fu, bp))
762- let fx = H(fw, b)
763- let fy = if (fl)
764- then fn
765- else fo
766- let fz = toBigInt(fy)
767- let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
768- let fB = if ((fA > f))
778+ else ba("invalid asset")
779+ let fv = if (fr)
780+ then $Tuple2(fs, ft)
781+ else if (fu)
782+ then $Tuple2((fs - fp), ft)
783+ else $Tuple2(fs, (ft - fp))
784+ let fw = fv._1
785+ let fx = fv._2
786+ let fy = if (fu)
787+ then $Tuple2(fp, 0)
788+ else $Tuple2(0, fp)
789+ let fz = fy._1
790+ let fA = fy._2
791+ let eR = fm(fz, bf)._1
792+ let eS = fm(fA, bf)._1
793+ let fB = fm(fp, bf)
794+ let fC = fB._1
795+ let fn = fB._2
796+ let fD = (fw + eR)
797+ let fE = (fx + eS)
798+ let fF = bW(D(fE, bA), D(fD, bz))
799+ let fG = H(fF, b)
800+ let fH = if (fu)
801+ then fw
802+ else fx
803+ let fI = toBigInt(fH)
804+ let fJ = toBigInt(valueOrErrorMessage(assetInfo(bw), (("asset " + toBase58String(bw)) + " doesn't exist")).quantity)
805+ let fK = if ((fJ > f))
769806 then true
770- else aQ("initial deposit requires all coins")
771- if ((fB == fB))
807+ else ba("initial deposit requires all coins")
808+ if ((fK == fK))
772809 then {
773- let fC = toBigInt(ft)
774- let fD = max([0, toInt(((fA * (sqrtBigInt((d + ((fC * d) / fz)), 18, 18, DOWN) - d)) / d))])
775- let el = if (fi)
810+ let fL = toBigInt(fC)
811+ let fM = max([0, toInt(((fJ * (sqrtBigInt((d + ((fL * d) / fI)), 18, 18, DOWN) - d)) / d))])
812+ let et = if (fr)
776813 then nil
777- 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))]
778- let fE = bM(D(fo, bq), D(fn, bp))
779- let fF = H(fE, b)
780- let fG = {
781- let fH = if (fl)
782- then $Tuple2(fq, fn)
783- else $Tuple2(fr, fo)
784- let bW = fH._1
785- let fI = fH._2
786- let fJ = toInt(fraction(fA, toBigInt((bW / 2)), toBigInt(fI)))
787- fraction((fD - fJ), b, fJ)
814+ else [IntegerEntry(W(), fG), IntegerEntry(X(height, lastBlock.timestamp), fG), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bE(fz, fA, fM, fG, 0, 0, height, lastBlock.timestamp, 0, 0))]
815+ let fN = bW(D(fx, bA), D(fw, bz))
816+ let fO = H(fN, b)
817+ let fP = {
818+ let fQ = if (fu)
819+ then $Tuple2(fz, fw)
820+ else $Tuple2(fA, fx)
821+ let cf = fQ._1
822+ let fR = fQ._2
823+ let fS = toInt(fraction(fJ, toBigInt((cf / 2)), toBigInt(fR)))
824+ fraction((fM - fS), b, fS)
788825 }
789- $Tuple5(fD, el, fe, fG, fl)
826+ $Tuple5(fM, et, fn, fP, fu)
790827 }
791828 else throw("Strict value is not equal to itself.")
792829 }
793830
794831
795-func fK (fL,ft,fh,ab,ac) = {
796- let fi = (ac == unit)
797- let da = ba()
798- let db = parseIntValue(da[t])
799- let dc = parseIntValue(da[u])
800- let fM = [if ((fh == bm))
832+func fT (fU,fC,fq,ab,ac) = {
833+ let fr = (ac == unit)
834+ let di = bk()
835+ let dj = parseIntValue(di[t])
836+ let dk = parseIntValue(di[u])
837+ let fV = [if ((fq == bw))
801838 then true
802- else aQ("invalid lp asset")]
803- if ((fM == fM))
839+ else ba("invalid lp asset")]
840+ if ((fV == fV))
804841 then {
805- let fN = if ((fL == bn))
842+ let fW = if ((fU == bx))
806843 then true
807- else if ((fL == bo))
844+ else if ((fU == by))
808845 then false
809- else aQ("invalid asset")
810- let fO = if (fN)
811- then toBigInt(bJ(bf(bn)))
812- else toBigInt(bJ(bf(bo)))
813- let fP = if (fN)
814- then db
815- else dc
816- let fQ = bJ(bf(bn))
817- let fR = bJ(bf(bo))
818- let fS = if (fN)
819- then fQ
820- else fR
821- let fT = toBigInt(fS)
822- let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
823- let fU = toBigInt(ft)
824- let fV = max([0, toInt(((fO * (d - pow((d - ((fU * d) / fA)), 18, h, 0, 18, DOWN))) / d))])
825- let fW = fd(fV, aX)
826- let fX = fW._1
827- let fe = fW._2
828- let fY = if (fN)
829- then $Tuple4(fX, 0, (fQ - fV), fR)
830- else $Tuple4(0, fX, fQ, (fR - fV))
831- let fZ = fY._1
832- let ga = fY._2
833- let gb = fY._3
834- let gc = fY._4
835- let fw = bM(D(gc, bq), D(gb, bp))
836- let fx = H(fw, b)
837- let el = if (fi)
846+ else ba("invalid asset")
847+ let fX = if (fW)
848+ then toBigInt(bT(bp(bx)))
849+ else toBigInt(bT(bp(by)))
850+ let fY = if (fW)
851+ then dj
852+ else dk
853+ let fZ = bT(bp(bx))
854+ let ga = bT(bp(by))
855+ let gb = if (fW)
856+ then fZ
857+ else ga
858+ let gc = toBigInt(gb)
859+ let fJ = toBigInt(valueOrErrorMessage(assetInfo(bw), (("asset " + toBase58String(bw)) + " doesn't exist")).quantity)
860+ let gd = toBigInt(fC)
861+ let ge = max([0, toInt(((fX * (d - pow((d - ((gd * d) / fJ)), 18, h, 0, 18, DOWN))) / d))])
862+ let gf = fm(ge, bh)
863+ let gg = gf._1
864+ let fn = gf._2
865+ let gh = if (fW)
866+ then $Tuple4(gg, 0, (fZ - ge), ga)
867+ else $Tuple4(0, gg, fZ, (ga - ge))
868+ let gi = gh._1
869+ let gj = gh._2
870+ let gk = gh._3
871+ let gl = gh._4
872+ let fF = bW(D(gl, bA), D(gk, bz))
873+ let fG = H(fF, b)
874+ let et = if (fr)
838875 then nil
839- 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)]
840- let fE = bM(D(fR, bq), D(fQ, bp))
841- let fF = H(fE, b)
842- let fG = {
843- let gd = (toInt(fraction(fO, fU, fA)) * 2)
844- fraction((fX - gd), b, gd)
876+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bP(gi, gj, fC, fG, height, lastBlock.timestamp)), IntegerEntry(W(), fG), IntegerEntry(X(height, lastBlock.timestamp), fG)]
877+ let fN = bW(D(ga, bA), D(fZ, bz))
878+ let fO = H(fN, b)
879+ let fP = {
880+ let gm = (toInt(fraction(fX, gd, fJ)) * 2)
881+ fraction((gg - gm), b, gm)
845882 }
846- $Tuple5(fX, el, fe, fG, fN)
883+ $Tuple5(gg, et, fn, fP, fW)
847884 }
848885 else throw("Strict value is not equal to itself.")
849886 }
850887
851888
852-func ge () = {
853- let bT = getString(U())
854- if ($isInstanceOf(bT, "String"))
889+func gn () = {
890+ let go = aS()
891+ let aQ = getString(go, U())
892+ if ($isInstanceOf(aQ, "String"))
855893 then {
856- let gf = bT
857- fromBase58String(gf)
894+ let aV = aQ
895+ fromBase58String(aV)
858896 }
859- else if ($isInstanceOf(bT, "Unit"))
897+ else if ($isInstanceOf(aQ, "Unit"))
860898 then unit
861899 else throw("Match error")
862900 }
863901
864902
865-func gg () = {
866- let bT = getString(V())
867- if ($isInstanceOf(bT, "String"))
903+func gp (fb) = {
904+ let aQ = gn()
905+ if ($isInstanceOf(aQ, "ByteVector"))
868906 then {
869- let gf = bT
870- fromBase58String(gf)
907+ let gq = aQ
908+ (fb.callerPublicKey == gq)
871909 }
872- else if ($isInstanceOf(bT, "Unit"))
873- then unit
910+ else if ($isInstanceOf(aQ, "Unit"))
911+ then (fb.caller == this)
874912 else throw("Match error")
875913 }
876914
877915
878-func gh (eS) = {
879- let bT = ge()
880- if ($isInstanceOf(bT, "ByteVector"))
916+func gr (fb) = {
917+ let gs = throw("Permission denied")
918+ let aQ = gn()
919+ if ($isInstanceOf(aQ, "ByteVector"))
881920 then {
882- let gi = bT
883- (eS.callerPublicKey == gi)
921+ let gq = aQ
922+ if ((fb.callerPublicKey == gq))
923+ then true
924+ else gs
884925 }
885- else if ($isInstanceOf(bT, "Unit"))
886- then (eS.caller == this)
926+ else if ($isInstanceOf(aQ, "Unit"))
927+ then if ((fb.caller == this))
928+ then true
929+ else gs
887930 else throw("Match error")
888931 }
889932
890933
891-func gj (eS) = {
892- let gk = throw("Permission denied")
893- let bT = ge()
894- if ($isInstanceOf(bT, "ByteVector"))
895- then {
896- let gi = bT
897- if ((eS.callerPublicKey == gi))
898- then true
899- else gk
900- }
901- else if ($isInstanceOf(bT, "Unit"))
902- then if ((eS.caller == this))
903- then true
904- else gk
905- else throw("Match error")
906- }
907-
908-
909-@Callable(eS)
910-func rebalance () = (cA(aM(this, ae())) ++ cA(aM(this, af())))
934+@Callable(fb)
935+func rebalance () = (cI(aW(this, ae())) ++ cI(aW(this, af())))
911936
912937
913938
914-@Callable(eS)
915-func calculateAmountOutForSwapREADONLY (gl,gm,gn) = {
916- let go = if ((gm == false))
939+@Callable(fb)
940+func calculateAmountOutForSwapREADONLY (gt,gu,gv) = {
941+ let gw = if ((gu == false))
917942 then {
918- let gp = aM(this, af())
919- let gq = aM(this, ae())
920- $Tuple2(gp, gq)
943+ let gx = aW(this, af())
944+ let gy = aW(this, ae())
945+ $Tuple2(gx, gy)
921946 }
922947 else {
923- let gp = aM(this, ae())
924- let gq = aM(this, af())
925- $Tuple2(gp, gq)
948+ let gx = aW(this, ae())
949+ let gy = aW(this, af())
950+ $Tuple2(gx, gy)
926951 }
927- let gp = go._1
928- let gq = go._2
929- let gr = bJ(gq)
930- let gs = bJ(gp)
931- let gt = fraction(gs, gl, (gr + gl))
932- let gu = (toBigInt(gr) * toBigInt(gs))
933- let gv = (((toBigInt(bJ(gq)) + toBigInt(gl)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
934- let gw = if ((gv >= gu))
952+ let gx = gw._1
953+ let gy = gw._2
954+ let gz = bT(gy)
955+ let gA = bT(gx)
956+ let gB = fraction(gA, gt, (gz + gt))
957+ let gC = (toBigInt(gz) * toBigInt(gA))
958+ let gD = (((toBigInt(bT(gy)) + toBigInt(gt)) + toBigInt(gv)) * (toBigInt(bT(gx)) - toBigInt(gB)))
959+ let gE = if ((gD >= gC))
935960 then true
936961 else throw("new K is fewer error")
937- if ((gw == gw))
938- then $Tuple2(nil, gt)
962+ if ((gE == gE))
963+ then $Tuple2(nil, gB)
939964 else throw("Strict value is not equal to itself.")
940965 }
941966
942967
943968
944-@Callable(eS)
945-func calculateAmountOutForSwapAndSendTokens (gl,gm,gx,gy,gn) = {
946- let gz = {
947- let aW = invoke(aT, "getSwapContractREADONLY", nil, nil)
948- if ($isInstanceOf(aW, "String"))
949- then aW
950- else throw(($getType(aW) + " couldn't be cast to String"))
969+@Callable(fb)
970+func calculateAmountOutForSwapAndSendTokens (gt,gu,gF,gG,gv) = {
971+ let gH = {
972+ let bg = invoke(bd, "getSwapContractREADONLY", nil, nil)
973+ if ($isInstanceOf(bg, "String"))
974+ then bg
975+ else throw(($getType(bg) + " couldn't be cast to String"))
951976 }
952- let fM = [if ((value(eS.payments[0]).amount >= gl))
977+ let fV = [if ((value(fb.payments[0]).amount >= gt))
953978 then true
954- else aQ("Wrong amount"), if ((eS.caller == addressFromStringValue(gz)))
979+ else ba("Wrong amount"), if ((fb.caller == addressFromStringValue(gH)))
955980 then true
956- else aQ("Permission denied")]
957- if ((fM == fM))
981+ else ba("Permission denied")]
982+ if ((fV == fV))
958983 then {
959- let eT = value(eS.payments[0])
960- let gq = bf(eT.assetId)
961- let gp = if ((gm == false))
962- then aM(this, af())
963- else aM(this, ae())
964- let gr = (bJ(gq) - value(eS.payments[0]).amount)
965- let gs = bJ(gp)
966- let gt = fraction(gs, gl, (gr + gl))
967- let gu = (toBigInt(gr) * toBigInt(gs))
968- let gv = ((toBigInt(bJ(gq)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
969- let gw = if ((gv >= gu))
984+ let fc = value(fb.payments[0])
985+ let gy = bp(fc.assetId)
986+ let gx = if ((gu == false))
987+ then aW(this, af())
988+ else aW(this, ae())
989+ let gz = (bT(gy) - value(fb.payments[0]).amount)
990+ let gA = bT(gx)
991+ let gB = fraction(gA, gt, (gz + gt))
992+ let gC = (toBigInt(gz) * toBigInt(gA))
993+ let gD = ((toBigInt(bT(gy)) + toBigInt(gv)) * (toBigInt(bT(gx)) - toBigInt(gB)))
994+ let gE = if ((gD >= gC))
970995 then true
971996 else throw("new K is fewer error")
972- if ((gw == gw))
997+ if ((gE == gE))
973998 then {
974- let gA = if ((gt >= gx))
999+ let gI = if ((gB >= gF))
9751000 then true
9761001 else throw("Exchange result is fewer coins than expected")
977- if ((gA == gA))
1002+ if ((gI == gI))
9781003 then {
979- let gB = cA(gq)
980- if ((gB == gB))
1004+ let gJ = cI(gy)
1005+ if ((gJ == gJ))
9811006 then {
982- let gC = cH(gp, gt)
983- if ((gC == gC))
984- then $Tuple2(((gC ++ gB) ++ [ScriptTransfer(addressFromStringValue(gy), gt, bd(gp))]), gt)
1007+ let gK = cP(gx, gB)
1008+ if ((gK == gK))
1009+ then $Tuple2(((gK ++ gJ) ++ [ScriptTransfer(addressFromStringValue(gG), gB, bn(gx))]), gB)
9851010 else throw("Strict value is not equal to itself.")
9861011 }
9871012 else throw("Strict value is not equal to itself.")
9951020
9961021
9971022
998-@Callable(eS)
999-func setManager (gD) = {
1000- let gE = gj(eS)
1001- if ((gE == gE))
1002- then {
1003- let gF = fromBase58String(gD)
1004- if ((gF == gF))
1005- then [StringEntry(V(), gD)]
1006- else throw("Strict value is not equal to itself.")
1007- }
1008- else throw("Strict value is not equal to itself.")
1009- }
1010-
1011-
1012-
1013-@Callable(eS)
1014-func confirmManager () = {
1015- let gG = gg()
1016- let gH = if (isDefined(gG))
1017- then true
1018- else throw("No pending manager")
1019- if ((gH == gH))
1020- then {
1021- let gI = if ((eS.callerPublicKey == value(gG)))
1022- then true
1023- else throw("You are not pending manager")
1024- if ((gI == gI))
1025- then [StringEntry(U(), toBase58String(value(gG))), DeleteEntry(V())]
1026- else throw("Strict value is not equal to itself.")
1027- }
1028- else throw("Strict value is not equal to itself.")
1029- }
1030-
1031-
1032-
1033-@Callable(eS)
1034-func put (dG,gJ) = if ((0 > dG))
1023+@Callable(fb)
1024+func put (dO,gL) = if ((0 > dO))
10351025 then throw("Invalid slippageTolerance passed")
10361026 else {
1037- let eY = eV(eS, dG, true)
1038- let ei = eY._2
1039- let dn = eY._7
1040- let dE = eY._9
1041- let ej = eY._10
1042- let ek = eY._11
1043- let gK = eY._12
1044- let gL = eY._13
1045- let eW = toBigInt(value(eS.payments[0]).amount)
1046- let eX = toBigInt(value(eS.payments[1]).amount)
1047- let ez = es(eW, eX, toBigInt(0))
1048- if ((ez == ez))
1027+ let fh = fe(fb, dO, true)
1028+ let eq = fh._2
1029+ let dv = fh._7
1030+ let dM = fh._9
1031+ let er = fh._10
1032+ let es = fh._11
1033+ let gM = fh._12
1034+ let gN = fh._13
1035+ let ff = toBigInt(value(fb.payments[0]).amount)
1036+ let fg = toBigInt(value(fb.payments[1]).amount)
1037+ let eH = eA(ff, fg, toBigInt(0))
1038+ if ((eH == eH))
10491039 then {
1050- let fa = invoke(aT, "emit", [ei], nil)
1051- if ((fa == fa))
1040+ let fj = invoke(bd, "emit", [eq], nil)
1041+ if ((fj == fj))
10521042 then {
1053- let fb = {
1054- let bT = fa
1055- if ($isInstanceOf(bT, "Address"))
1043+ let fk = {
1044+ let aQ = fj
1045+ if ($isInstanceOf(aQ, "Address"))
10561046 then {
1057- let fc = bT
1058- invoke(fc, "emit", [ei], nil)
1047+ let fl = aQ
1048+ invoke(fl, "emit", [eq], nil)
10591049 }
10601050 else unit
10611051 }
1062- if ((fb == fb))
1052+ if ((fk == fk))
10631053 then {
1064- let gM = if ((ej > 0))
1065- then invoke(bt, "put", nil, [AttachedPayment(gK, ej)])
1054+ let gO = if ((er > 0))
1055+ then invoke(bD, "put", nil, [AttachedPayment(gM, er)])
10661056 else nil
1067- if ((gM == gM))
1057+ if ((gO == gO))
10681058 then {
1069- let gN = if ((ek > 0))
1070- then invoke(bt, "put", nil, [AttachedPayment(gL, ek)])
1059+ let gP = if ((es > 0))
1060+ then invoke(bD, "put", nil, [AttachedPayment(gN, es)])
10711061 else nil
1072- if ((gN == gN))
1062+ if ((gP == gP))
10731063 then {
1074- let gO = if (gJ)
1064+ let gQ = if (gL)
10751065 then {
1076- let gP = invoke(bs, "stake", nil, [AttachedPayment(dn, ei)])
1077- if ((gP == gP))
1066+ let gR = invoke(bC, "stake", nil, [AttachedPayment(dv, eq)])
1067+ if ((gR == gR))
10781068 then nil
10791069 else throw("Strict value is not equal to itself.")
10801070 }
1081- else [ScriptTransfer(eS.caller, ei, dn)]
1082- let gQ = eA(0, 0, 0)
1083- if ((gQ == gQ))
1071+ else [ScriptTransfer(fb.caller, eq, dv)]
1072+ let gS = eI(0, 0, 0)
1073+ if ((gS == gS))
10841074 then {
1085- let er = gQ._2
1086- let gR = gQ._1
1087- let gS = eE(ez, er)
1088- if ((gS == gS))
1075+ let ez = gS._2
1076+ let gT = gS._1
1077+ let gU = eN(eH, ez)
1078+ if ((gU == gU))
10891079 then {
1090- let gT = invoke(this, "rebalance", nil, nil)
1091- if ((gT == gT))
1092- then ((dE ++ gO) ++ gR)
1080+ let gV = invoke(this, "rebalance", nil, nil)
1081+ if ((gV == gV))
1082+ then ((dM ++ gQ) ++ gT)
10931083 else throw("Strict value is not equal to itself.")
10941084 }
10951085 else throw("Strict value is not equal to itself.")
11091099
11101100
11111101
1112-@Callable(eS)
1113-func putForFree (gU) = if ((0 > gU))
1102+@Callable(fb)
1103+func putForFree (gW) = if ((0 > gW))
11141104 then throw("Invalid value passed")
11151105 else {
1116- let eY = eV(eS, gU, false)
1117- let dE = eY._9
1118- let eW = toBigInt(value(eS.payments[0]).amount)
1119- let eX = toBigInt(value(eS.payments[1]).amount)
1120- let ez = es(eW, eX, toBigInt(0))
1121- if ((ez == ez))
1106+ let fh = fe(fb, gW, false)
1107+ let dM = fh._9
1108+ let ff = toBigInt(value(fb.payments[0]).amount)
1109+ let fg = toBigInt(value(fb.payments[1]).amount)
1110+ let eH = eA(ff, fg, toBigInt(0))
1111+ if ((eH == eH))
11221112 then {
1123- let gV = eA(0, 0, 0)
1124- let gR = gV._1
1125- let er = gV._2
1126- let gS = eE(ez, er)
1127- if ((gS == gS))
1128- then (dE ++ gR)
1113+ let gX = eI(0, 0, 0)
1114+ let gT = gX._1
1115+ let ez = gX._2
1116+ let gU = eN(eH, ez)
1117+ if ((gU == gU))
1118+ then (dM ++ gT)
11291119 else throw("Strict value is not equal to itself.")
11301120 }
11311121 else throw("Strict value is not equal to itself.")
11331123
11341124
11351125
1136-@Callable(eS)
1137-func putOneTkn (gW,gX) = {
1138- let gY = {
1139- let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1140- if ($isInstanceOf(aW, "Boolean"))
1141- then aW
1142- else throw(($getType(aW) + " couldn't be cast to Boolean"))
1126+@Callable(fb)
1127+func putOneTkn (gY,gZ) = {
1128+ let ha = {
1129+ let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1130+ if ($isInstanceOf(bg, "Boolean"))
1131+ then bg
1132+ else throw(($getType(bg) + " couldn't be cast to Boolean"))
11431133 }
1144- let gZ = if (if (if (aY())
1134+ let hb = if (if (if (bi())
11451135 then true
1146- else (bl == l))
1136+ else (bv == l))
11471137 then true
1148- else (bl == n))
1138+ else (bv == n))
11491139 then true
1150- else gY
1151- let fM = [if (if (!(gZ))
1140+ else ha
1141+ let fV = [if (if (!(hb))
11521142 then true
1153- else gh(eS))
1143+ else gp(fb))
11541144 then true
1155- else aQ("put operation is blocked by admin"), if ((size(eS.payments) == 1))
1145+ else ba("put operation is blocked by admin"), if ((size(fb.payments) == 1))
11561146 then true
1157- else aQ("exactly 1 payment are expected")]
1158- if ((fM == fM))
1147+ else ba("exactly 1 payment are expected")]
1148+ if ((fV == fV))
11591149 then {
1160- let ha = eS.payments[0]
1161- let fh = ha.assetId
1162- let fg = ha.amount
1163- let ez = if ((fh == bn))
1164- then es(toBigInt(fg), toBigInt(0), toBigInt(0))
1165- else if ((fh == bo))
1166- then es(toBigInt(0), toBigInt(fg), toBigInt(0))
1167- else aQ("payment asset is not supported")
1168- if ((ez == ez))
1150+ let hc = fb.payments[0]
1151+ let fq = hc.assetId
1152+ let fp = hc.amount
1153+ let eH = if ((fq == bx))
1154+ then eA(toBigInt(fp), toBigInt(0), toBigInt(0))
1155+ else if ((fq == by))
1156+ then eA(toBigInt(0), toBigInt(fp), toBigInt(0))
1157+ else ba("payment asset is not supported")
1158+ if ((eH == eH))
11691159 then {
1170- let ab = eS.caller
1171- let ac = eS.transactionId
1172- let hb = ff(fg, fh, ab, ac)
1173- if ((hb == hb))
1160+ let ab = fb.caller
1161+ let ac = fb.transactionId
1162+ let hd = fo(fp, fq, ab, ac)
1163+ if ((hd == hd))
11741164 then {
1175- let fl = hb._5
1176- let hc = hb._4
1177- let fe = hb._3
1178- let el = hb._2
1179- let hd = hb._1
1180- let he = if (if ((gW > 0))
1181- then (gW > hd)
1165+ let fu = hd._5
1166+ let he = hd._4
1167+ let fn = hd._3
1168+ let et = hd._2
1169+ let hf = hd._1
1170+ let hg = if (if ((gY > 0))
1171+ then (gY > hf)
11821172 else false)
1183- then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1184- else hd
1185- let fa = eZ(he)
1186- if ((fa == fa))
1173+ then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
1174+ else hf
1175+ let fj = fi(hg)
1176+ if ((fj == fj))
11871177 then {
1188- let gO = if (gX)
1178+ let gQ = if (gZ)
11891179 then {
1190- let hf = invoke(bs, "stake", nil, [AttachedPayment(bm, he)])
1191- if ((hf == hf))
1180+ let hh = invoke(bC, "stake", nil, [AttachedPayment(bw, hg)])
1181+ if ((hh == hh))
11921182 then nil
11931183 else throw("Strict value is not equal to itself.")
11941184 }
1195- else [ScriptTransfer(eS.caller, he, bm)]
1196- let hg = if ((fe > 0))
1197- then [ScriptTransfer(aU, fe, fh)]
1185+ else [ScriptTransfer(fb.caller, hg, bw)]
1186+ let hi = if ((fn > 0))
1187+ then [ScriptTransfer(be, fn, fq)]
11981188 else nil
1199- let hh = if ((this == aU))
1189+ let hj = if ((this == be))
12001190 then $Tuple2(0, 0)
1201- else if (fl)
1202- then $Tuple2(-(fe), 0)
1203- else $Tuple2(0, -(fe))
1204- let eB = hh._1
1205- let eC = hh._2
1206- let hi = eA(eB, eC, 0)
1207- let gR = hi._1
1208- let er = hi._2
1209- let eL = value(getString(aj))
1210- let gS = eE(ez, er)
1211- if ((gS == gS))
1191+ else if (fu)
1192+ then $Tuple2(-(fn), 0)
1193+ else $Tuple2(0, -(fn))
1194+ let eJ = hj._1
1195+ let eK = hj._2
1196+ let hk = eI(eJ, eK, 0)
1197+ let gT = hk._1
1198+ let ez = hk._2
1199+ let eU = value(getString(aj))
1200+ let gU = eN(eH, ez)
1201+ if ((gU == gU))
12121202 then {
1213- let gT = invoke(this, "rebalance", nil, nil)
1214- if ((gT == gT))
1215- then $Tuple2((((el ++ gO) ++ hg) ++ gR), he)
1203+ let gV = invoke(this, "rebalance", nil, nil)
1204+ if ((gV == gV))
1205+ then $Tuple2((((et ++ gQ) ++ hi) ++ gT), hg)
12161206 else throw("Strict value is not equal to itself.")
12171207 }
12181208 else throw("Strict value is not equal to itself.")
12281218
12291219
12301220
1231-@Callable(eS)
1232-func putOneTknREADONLY (fh,fg) = {
1233- let hj = ff(fg, bd(fh), unit, unit)
1234- let hd = hj._1
1235- let el = hj._2
1236- let fe = hj._3
1237- let hc = hj._4
1238- let fl = hj._5
1239- $Tuple2(nil, $Tuple3(hd, fe, hc))
1221+@Callable(fb)
1222+func putOneTknREADONLY (fq,fp) = {
1223+ let hl = fo(fp, bn(fq), unit, unit)
1224+ let hf = hl._1
1225+ let et = hl._2
1226+ let fn = hl._3
1227+ let he = hl._4
1228+ let fu = hl._5
1229+ $Tuple2(nil, $Tuple3(hf, fn, he))
12401230 }
12411231
12421232
12431233
1244-@Callable(eS)
1245-func getOneTkn (hk,gW) = {
1246- let gY = {
1247- let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1248- if ($isInstanceOf(aW, "Boolean"))
1249- then aW
1250- else throw(($getType(aW) + " couldn't be cast to Boolean"))
1234+@Callable(fb)
1235+func getOneTkn (hm,gY) = {
1236+ let ha = {
1237+ let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1238+ if ($isInstanceOf(bg, "Boolean"))
1239+ then bg
1240+ else throw(($getType(bg) + " couldn't be cast to Boolean"))
12511241 }
1252- let hl = if (if (aY())
1242+ let hn = if (if (bi())
12531243 then true
1254- else (bl == n))
1244+ else (bv == n))
12551245 then true
1256- else gY
1257- let fM = [if (if (!(hl))
1246+ else ha
1247+ let fV = [if (if (!(hn))
12581248 then true
1259- else gh(eS))
1249+ else gp(fb))
12601250 then true
1261- else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 1))
1251+ else ba("get operation is blocked by admin"), if ((size(fb.payments) == 1))
12621252 then true
1263- else aQ("exactly 1 payment are expected")]
1264- if ((fM == fM))
1253+ else ba("exactly 1 payment are expected")]
1254+ if ((fV == fV))
12651255 then {
1266- let fL = bd(hk)
1267- let ha = eS.payments[0]
1268- let fh = ha.assetId
1269- let ft = ha.amount
1270- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1271- if ((ez == ez))
1256+ let fU = bn(hm)
1257+ let hc = fb.payments[0]
1258+ let fq = hc.assetId
1259+ let fC = hc.amount
1260+ let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1261+ if ((eH == eH))
12721262 then {
1273- let ab = eS.caller
1274- let ac = eS.transactionId
1275- let hm = fK(fL, ft, fh, ab, ac)
1276- if ((hm == hm))
1263+ let ab = fb.caller
1264+ let ac = fb.transactionId
1265+ let ho = fT(fU, fC, fq, ab, ac)
1266+ if ((ho == ho))
12771267 then {
1278- let fN = hm._5
1279- let hc = hm._4
1280- let fe = hm._3
1281- let el = hm._2
1282- let hn = hm._1
1283- let bW = if (if ((gW > 0))
1284- then (gW > hn)
1268+ let fW = ho._5
1269+ let he = ho._4
1270+ let fn = ho._3
1271+ let et = ho._2
1272+ let hp = ho._1
1273+ let cf = if (if ((gY > 0))
1274+ then (gY > hp)
12851275 else false)
1286- then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1287- else hn
1288- let ho = invoke(aT, "burn", [ft], [AttachedPayment(fh, ft)])
1289- if ((ho == ho))
1276+ then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
1277+ else hp
1278+ let hq = invoke(bd, "burn", [fC], [AttachedPayment(fq, fC)])
1279+ if ((hq == hq))
12901280 then {
1291- let gC = cH(hk, (bW + max([0, fe])))
1292- let hp = [ScriptTransfer(ab, bW, fL)]
1293- let hg = if ((fe > 0))
1294- then [ScriptTransfer(aU, fe, fL)]
1281+ let gK = cP(hm, (cf + max([0, fn])))
1282+ let hr = [ScriptTransfer(ab, cf, fU)]
1283+ let hi = if ((fn > 0))
1284+ then [ScriptTransfer(be, fn, fU)]
12951285 else nil
1296- let hq = {
1297- let hr = if ((this == aU))
1286+ let hs = {
1287+ let ht = if ((this == be))
12981288 then 0
1299- else fe
1300- if (fN)
1301- then $Tuple2(-((bW + hr)), 0)
1302- else $Tuple2(0, -((bW + hr)))
1289+ else fn
1290+ if (fW)
1291+ then $Tuple2(-((cf + ht)), 0)
1292+ else $Tuple2(0, -((cf + ht)))
13031293 }
1304- let eB = hq._1
1305- let eC = hq._2
1306- let hs = eA(eB, eC, 0)
1307- let gR = hs._1
1308- let er = hs._2
1309- let gS = eE(ez, er)
1310- if ((gS == gS))
1311- then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
1294+ let eJ = hs._1
1295+ let eK = hs._2
1296+ let hu = eI(eJ, eK, 0)
1297+ let gT = hu._1
1298+ let ez = hu._2
1299+ let gU = eN(eH, ez)
1300+ if ((gU == gU))
1301+ then $Tuple2(((((et ++ gK) ++ hr) ++ hi) ++ gT), cf)
13121302 else throw("Strict value is not equal to itself.")
13131303 }
13141304 else throw("Strict value is not equal to itself.")
13221312
13231313
13241314
1325-@Callable(eS)
1326-func getOneTknREADONLY (fL,ft) = {
1327- let ht = fK(bd(fL), ft, bm, unit, unit)
1328- let hn = ht._1
1329- let el = ht._2
1330- let fe = ht._3
1331- let hc = ht._4
1332- let fN = ht._5
1333- $Tuple2(nil, $Tuple3(hn, fe, hc))
1315+@Callable(fb)
1316+func getOneTknREADONLY (fU,fC) = {
1317+ let hv = fT(bn(fU), fC, bw, unit, unit)
1318+ let hp = hv._1
1319+ let et = hv._2
1320+ let fn = hv._3
1321+ let he = hv._4
1322+ let fW = hv._5
1323+ $Tuple2(nil, $Tuple3(hp, fn, he))
13341324 }
13351325
13361326
13371327
1338-@Callable(eS)
1339-func unstakeAndGetOneTkn (hu,hk,gW) = {
1340- let gY = {
1341- let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1342- if ($isInstanceOf(aW, "Boolean"))
1343- then aW
1344- else throw(($getType(aW) + " couldn't be cast to Boolean"))
1328+@Callable(fb)
1329+func unstakeAndGetOneTkn (hw,hm,gY) = {
1330+ let ha = {
1331+ let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1332+ if ($isInstanceOf(bg, "Boolean"))
1333+ then bg
1334+ else throw(($getType(bg) + " couldn't be cast to Boolean"))
13451335 }
1346- let hl = if (if (aY())
1336+ let hn = if (if (bi())
13471337 then true
1348- else (bl == n))
1338+ else (bv == n))
13491339 then true
1350- else gY
1351- let fM = [if (if (!(hl))
1340+ else ha
1341+ let fV = [if (if (!(hn))
13521342 then true
1353- else gh(eS))
1343+ else gp(fb))
13541344 then true
1355- else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 0))
1345+ else ba("get operation is blocked by admin"), if ((size(fb.payments) == 0))
13561346 then true
1357- else aQ("no payments are expected")]
1358- if ((fM == fM))
1347+ else ba("no payments are expected")]
1348+ if ((fV == fV))
13591349 then {
1360- let fL = bd(hk)
1361- let ab = eS.caller
1362- let ac = eS.transactionId
1363- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1364- if ((ez == ez))
1350+ let fU = bn(hm)
1351+ let ab = fb.caller
1352+ let ac = fb.transactionId
1353+ let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1354+ if ((eH == eH))
13651355 then {
1366- let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1367- if ((hv == hv))
1356+ let hx = invoke(bC, "unstake", [toBase58String(bw), hw], nil)
1357+ if ((hx == hx))
13681358 then {
1369- let hw = fK(fL, hu, bm, ab, ac)
1370- if ((hw == hw))
1359+ let hy = fT(fU, hw, bw, ab, ac)
1360+ if ((hy == hy))
13711361 then {
1372- let fN = hw._5
1373- let hc = hw._4
1374- let fe = hw._3
1375- let el = hw._2
1376- let hn = hw._1
1377- let bW = if (if ((gW > 0))
1378- then (gW > hn)
1362+ let fW = hy._5
1363+ let he = hy._4
1364+ let fn = hy._3
1365+ let et = hy._2
1366+ let hp = hy._1
1367+ let cf = if (if ((gY > 0))
1368+ then (gY > hp)
13791369 else false)
1380- then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1381- else hn
1382- let ho = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1383- if ((ho == ho))
1370+ then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
1371+ else hp
1372+ let hq = invoke(bd, "burn", [hw], [AttachedPayment(bw, hw)])
1373+ if ((hq == hq))
13841374 then {
1385- let gC = cH(hk, (bW + max([0, fe])))
1386- let hp = [ScriptTransfer(eS.caller, bW, fL)]
1387- let hg = if ((fe > 0))
1388- then [ScriptTransfer(aU, fe, fL)]
1375+ let gK = cP(hm, (cf + max([0, fn])))
1376+ let hr = [ScriptTransfer(fb.caller, cf, fU)]
1377+ let hi = if ((fn > 0))
1378+ then [ScriptTransfer(be, fn, fU)]
13891379 else nil
1390- let hx = {
1391- let hr = if ((this == aU))
1380+ let hz = {
1381+ let ht = if ((this == be))
13921382 then 0
1393- else fe
1394- if (fN)
1395- then $Tuple2(-((bW + hr)), 0)
1396- else $Tuple2(0, -((bW + hr)))
1383+ else fn
1384+ if (fW)
1385+ then $Tuple2(-((cf + ht)), 0)
1386+ else $Tuple2(0, -((cf + ht)))
13971387 }
1398- let eB = hx._1
1399- let eC = hx._2
1400- let hy = eA(eB, eC, 0)
1401- let gR = hy._1
1402- let er = hy._2
1403- let gS = eE(ez, er)
1404- if ((gS == gS))
1405- then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
1388+ let eJ = hz._1
1389+ let eK = hz._2
1390+ let hA = eI(eJ, eK, 0)
1391+ let gT = hA._1
1392+ let ez = hA._2
1393+ let gU = eN(eH, ez)
1394+ if ((gU == gU))
1395+ then $Tuple2(((((et ++ gK) ++ hr) ++ hi) ++ gT), cf)
14061396 else throw("Strict value is not equal to itself.")
14071397 }
14081398 else throw("Strict value is not equal to itself.")
14181408
14191409
14201410
1421-@Callable(eS)
1411+@Callable(fb)
14221412 func get () = {
1423- let dW = eR(eS)
1424- let dC = dW._1
1425- let dD = dW._2
1426- let eU = dW._3
1427- let dl = dW._4
1428- let dE = dW._5
1429- let gC = cM(dC, dD)
1430- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1431- if ((ez == ez))
1413+ let ee = fa(fb)
1414+ let dK = ee._1
1415+ let dL = ee._2
1416+ let fd = ee._3
1417+ let dt = ee._4
1418+ let dM = ee._5
1419+ let gK = cU(dK, dL)
1420+ let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1421+ if ((eH == eH))
14321422 then {
1433- let hz = invoke(aT, "burn", [eU], [AttachedPayment(dl, eU)])
1434- if ((hz == hz))
1423+ let hB = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1424+ if ((hB == hB))
14351425 then {
1436- let hA = eA(-(dC), -(dD), 0)
1437- let gR = hA._1
1438- let er = hA._2
1439- let gS = eE(ez, er)
1440- if ((gS == gS))
1441- then ((gC ++ dE) ++ gR)
1426+ let hC = eI(-(dK), -(dL), 0)
1427+ let gT = hC._1
1428+ let ez = hC._2
1429+ let gU = eN(eH, ez)
1430+ if ((gU == gU))
1431+ then ((gK ++ dM) ++ gT)
14421432 else throw("Strict value is not equal to itself.")
14431433 }
14441434 else throw("Strict value is not equal to itself.")
14481438
14491439
14501440
1451-@Callable(eS)
1452-func getNoLess (hB,hC) = {
1453- let dW = eR(eS)
1454- let dC = dW._1
1455- let dD = dW._2
1456- let eU = dW._3
1457- let dl = dW._4
1458- let dE = dW._5
1459- if ((hB > dC))
1460- then throw(((("noLessThenAmtAsset failed: " + toString(dC)) + " < ") + toString(hB)))
1461- else if ((hC > dD))
1462- then throw(((("noLessThenPriceAsset failed: " + toString(dD)) + " < ") + toString(hC)))
1441+@Callable(fb)
1442+func getNoLess (hD,hE) = {
1443+ let ee = fa(fb)
1444+ let dK = ee._1
1445+ let dL = ee._2
1446+ let fd = ee._3
1447+ let dt = ee._4
1448+ let dM = ee._5
1449+ if ((hD > dK))
1450+ then throw(((("noLessThenAmtAsset failed: " + toString(dK)) + " < ") + toString(hD)))
1451+ else if ((hE > dL))
1452+ then throw(((("noLessThenPriceAsset failed: " + toString(dL)) + " < ") + toString(hE)))
14631453 else {
1464- let gC = cM(dC, dD)
1465- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1466- if ((ez == ez))
1454+ let gK = cU(dK, dL)
1455+ let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1456+ if ((eH == eH))
14671457 then {
1468- let hz = invoke(aT, "burn", [eU], [AttachedPayment(dl, eU)])
1469- if ((hz == hz))
1458+ let hB = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1459+ if ((hB == hB))
14701460 then {
1471- let hD = eA(-(dC), -(dD), 0)
1472- let gR = hD._1
1473- let er = hD._2
1474- let gS = eE(ez, er)
1475- if ((gS == gS))
1476- then ((gC ++ dE) ++ gR)
1461+ let hF = eI(-(dK), -(dL), 0)
1462+ let gT = hF._1
1463+ let ez = hF._2
1464+ let gU = eN(eH, ez)
1465+ if ((gU == gU))
1466+ then ((gK ++ dM) ++ gT)
14771467 else throw("Strict value is not equal to itself.")
14781468 }
14791469 else throw("Strict value is not equal to itself.")
14841474
14851475
14861476
1487-@Callable(eS)
1488-func unstakeAndGet (bW) = {
1489- let hE = if ((size(eS.payments) != 0))
1477+@Callable(fb)
1478+func unstakeAndGet (cf) = {
1479+ let hG = if ((size(fb.payments) != 0))
14901480 then throw("No payments are expected")
14911481 else true
1492- if ((hE == hE))
1482+ if ((hG == hG))
14931483 then {
1494- let da = ba()
1495- let dn = fromBase58String(da[q])
1496- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1497- if ((ez == ez))
1484+ let di = bk()
1485+ let dv = fromBase58String(di[q])
1486+ let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1487+ if ((eH == eH))
14981488 then {
1499- let hv = invoke(bs, "unstake", [toBase58String(dn), bW], nil)
1500- if ((hv == hv))
1489+ let hx = invoke(bC, "unstake", [toBase58String(dv), cf], nil)
1490+ if ((hx == hx))
15011491 then {
1502- let dW = dj(toBase58String(eS.transactionId), toBase58String(dn), bW, eS.caller)
1503- let dC = dW._1
1504- let dD = dW._2
1505- let dq = parseIntValue(dW._9)
1506- let dE = dW._10
1507- let gC = cM(dC, dD)
1508- let hF = if (if (aY())
1492+ let ee = dr(toBase58String(fb.transactionId), toBase58String(dv), cf, fb.caller)
1493+ let dK = ee._1
1494+ let dL = ee._2
1495+ let dy = parseIntValue(ee._9)
1496+ let dM = ee._10
1497+ let gK = cU(dK, dL)
1498+ let hH = if (if (bi())
15091499 then true
1510- else (dq == n))
1511- then throw(("Get operation is blocked by admin. Status = " + toString(dq)))
1500+ else (dy == n))
1501+ then throw(("Get operation is blocked by admin. Status = " + toString(dy)))
15121502 else true
1513- if ((hF == hF))
1503+ if ((hH == hH))
15141504 then {
1515- let hz = invoke(aT, "burn", [bW], [AttachedPayment(dn, bW)])
1516- if ((hz == hz))
1505+ let hB = invoke(bd, "burn", [cf], [AttachedPayment(dv, cf)])
1506+ if ((hB == hB))
15171507 then {
1518- let hG = eA(-(dC), -(dD), 0)
1519- let gR = hG._1
1520- let er = hG._2
1521- let gS = eE(ez, er)
1522- if ((gS == gS))
1523- then ((gC ++ dE) ++ gR)
1508+ let hI = eI(-(dK), -(dL), 0)
1509+ let gT = hI._1
1510+ let ez = hI._2
1511+ let gU = eN(eH, ez)
1512+ if ((gU == gU))
1513+ then ((gK ++ dM) ++ gT)
15241514 else throw("Strict value is not equal to itself.")
15251515 }
15261516 else throw("Strict value is not equal to itself.")
15361526
15371527
15381528
1539-@Callable(eS)
1540-func unstakeAndGetNoLess (hu,hH,hC) = {
1541- let hl = if (aY())
1529+@Callable(fb)
1530+func unstakeAndGetNoLess (hw,hJ,hE) = {
1531+ let hn = if (bi())
15421532 then true
1543- else (bl == n)
1544- let fM = [if (!(hl))
1533+ else (bv == n)
1534+ let fV = [if (!(hn))
15451535 then true
1546- else throw("get operation is blocked by admin"), if ((size(eS.payments) == 0))
1536+ else throw("get operation is blocked by admin"), if ((size(fb.payments) == 0))
15471537 then true
15481538 else throw("no payments are expected")]
1549- if ((fM == fM))
1539+ if ((fV == fV))
15501540 then {
1551- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1552- if ((ez == ez))
1541+ let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1542+ if ((eH == eH))
15531543 then {
1554- let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1555- if ((hv == hv))
1544+ let hx = invoke(bC, "unstake", [toBase58String(bw), hw], nil)
1545+ if ((hx == hx))
15561546 then {
1557- let dW = dj(toBase58String(eS.transactionId), toBase58String(bm), hu, eS.caller)
1558- let dC = dW._1
1559- let dD = dW._2
1560- let dE = dW._10
1561- let gC = cM(dC, dD)
1562- let hI = [if ((dC >= hH))
1547+ let ee = dr(toBase58String(fb.transactionId), toBase58String(bw), hw, fb.caller)
1548+ let dK = ee._1
1549+ let dL = ee._2
1550+ let dM = ee._10
1551+ let gK = cU(dK, dL)
1552+ let hK = [if ((dK >= hJ))
15631553 then true
1564- else throw(makeString(["amount asset amount to receive is less than ", toString(hH)], "")), if ((dD >= hC))
1554+ else throw(makeString(["amount asset amount to receive is less than ", toString(hJ)], "")), if ((dL >= hE))
15651555 then true
1566- else throw(makeString(["price asset amount to receive is less than ", toString(hC)], ""))]
1567- if ((hI == hI))
1556+ else throw(makeString(["price asset amount to receive is less than ", toString(hE)], ""))]
1557+ if ((hK == hK))
15681558 then {
1569- let hz = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1570- if ((hz == hz))
1559+ let hB = invoke(bd, "burn", [hw], [AttachedPayment(bw, hw)])
1560+ if ((hB == hB))
15711561 then {
1572- let hJ = eA(-(dC), -(dD), 0)
1573- let gR = hJ._1
1574- let er = hJ._2
1575- let gS = eE(ez, er)
1576- if ((gS == gS))
1577- then ((gC ++ dE) ++ gR)
1562+ let hL = eI(-(dK), -(dL), 0)
1563+ let gT = hL._1
1564+ let ez = hL._2
1565+ let gU = eN(eH, ez)
1566+ if ((gU == gU))
1567+ then ((gK ++ dM) ++ gT)
15781568 else throw("Strict value is not equal to itself.")
15791569 }
15801570 else throw("Strict value is not equal to itself.")
15901580
15911581
15921582
1593-@Callable(eS)
1594-func activate (hK,hL) = if ((toString(eS.caller) != toString(aT)))
1583+@Callable(fb)
1584+func activate (hM,hN) = if ((toString(fb.caller) != toString(bd)))
15951585 then throw("permissions denied")
1596- else $Tuple2([StringEntry(ae(), hK), StringEntry(af(), hL)], "success")
1586+ else $Tuple2([StringEntry(ae(), hM), StringEntry(af(), hN)], "success")
15971587
15981588
15991589
1600-@Callable(eS)
1590+@Callable(fb)
16011591 func refreshKLp () = {
1602- let hM = valueOrElse(getInteger(ak), 0)
1603- let hN = if (((height - hM) >= an))
1592+ let hO = valueOrElse(getInteger(ak), 0)
1593+ let hP = if (((height - hO) >= an))
16041594 then unit
1605- else aQ(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1606- if ((hN == hN))
1595+ else ba(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1596+ if ((hP == hP))
16071597 then {
1608- let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
1609- let hO = eA(0, 0, 0)
1610- let hP = hO._1
1611- let er = hO._2
1612- let eD = if ((eL != er))
1613- then hP
1614- else aQ("nothing to refresh")
1615- $Tuple2(eD, toString(er))
1598+ let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
1599+ let hQ = eI(0, 0, 0)
1600+ let hR = hQ._1
1601+ let ez = hQ._2
1602+ let eL = if ((eU != ez))
1603+ then hR
1604+ else ba("nothing to refresh")
1605+ $Tuple2(eL, toString(ez))
16161606 }
16171607 else throw("Strict value is not equal to itself.")
16181608 }
16191609
16201610
16211611
1622-@Callable(eS)
1623-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ba())
1612+@Callable(fb)
1613+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bk())
16241614
16251615
16261616
1627-@Callable(eS)
1628-func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bJ(ap))
1617+@Callable(fb)
1618+func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bT(ap))
16291619
16301620
16311621
1632-@Callable(eS)
1633-func calcPricesWrapperREADONLY (cU,cV,cZ) = {
1634- let di = cY(cU, cV, cZ)
1635- $Tuple2(nil, [toString(di[0]), toString(di[1]), toString(di[2])])
1622+@Callable(fb)
1623+func calcPricesWrapperREADONLY (dc,dd,dh) = {
1624+ let dq = dg(dc, dd, dh)
1625+ $Tuple2(nil, [toString(dq[0]), toString(dq[1]), toString(dq[2])])
16361626 }
16371627
16381628
16391629
1640-@Callable(eS)
1630+@Callable(fb)
16411631 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16421632
16431633
16441634
1645-@Callable(eS)
1635+@Callable(fb)
16461636 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
16471637
16481638
16491639
1650-@Callable(eS)
1651-func calcPriceBigIntWrapperREADONLY (bN,bO) = $Tuple2(nil, toString(bM(parseBigIntValue(bN), parseBigIntValue(bO))))
1640+@Callable(fb)
1641+func calcPriceBigIntWrapperREADONLY (bX,bY) = $Tuple2(nil, toString(bW(parseBigIntValue(bX), parseBigIntValue(bY))))
16521642
16531643
16541644
1655-@Callable(eS)
1656-func estimatePutOperationWrapperREADONLY (dk,dG,dH,dI,dJ,dK,ab,dL,dM) = $Tuple2(nil, dF(dk, dG, dH, dI, dJ, dK, ab, dL, dM))
1645+@Callable(fb)
1646+func estimatePutOperationWrapperREADONLY (ds,dO,dP,dQ,dR,dS,ab,dT,dU) = $Tuple2(nil, dN(ds, dO, dP, dQ, dR, dS, ab, dT, dU))
16571647
16581648
16591649
1660-@Callable(eS)
1661-func estimateGetOperationWrapperREADONLY (dk,dl,dm,ab) = {
1662- let dW = dj(dk, dl, dm, addressFromStringValue(ab))
1663- $Tuple2(nil, $Tuple10(dW._1, dW._2, dW._3, dW._4, dW._5, dW._6, dW._7, toString(dW._8), dW._9, dW._10))
1650+@Callable(fb)
1651+func estimateGetOperationWrapperREADONLY (ds,dt,du,ab) = {
1652+ let ee = dr(ds, dt, du, addressFromStringValue(ab))
1653+ $Tuple2(nil, $Tuple10(ee._1, ee._2, ee._3, ee._4, ee._5, ee._6, ee._7, toString(ee._8), ee._9, ee._10))
16641654 }
16651655
16661656
16671657
1668-@Callable(eS)
1658+@Callable(fb)
16691659 func statsREADONLY () = {
1670- let da = ba()
1671- let dn = fromBase58String(da[q])
1672- let hQ = da[r]
1673- let hR = da[s]
1674- let dP = da[v]
1675- let dQ = da[w]
1676- let db = parseIntValue(da[t])
1677- let dc = parseIntValue(da[u])
1678- let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1679- let hT = bJ(hQ)
1680- let hU = bJ(hR)
1681- let hV = if ((hS == 0))
1660+ let di = bk()
1661+ let dv = fromBase58String(di[q])
1662+ let hS = di[r]
1663+ let hT = di[s]
1664+ let dX = di[v]
1665+ let dY = di[w]
1666+ let dj = parseIntValue(di[t])
1667+ let dk = parseIntValue(di[u])
1668+ let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1669+ let hV = bT(hS)
1670+ let hW = bT(hT)
1671+ let hX = if ((hU == 0))
16821672 then [e, e, e]
1683- else cY(hT, hU, hS)
1684- let dx = 0
1685- let hW = H(hV[1], b)
1686- let hX = H(hV[2], b)
1687- let hY = value(getInteger(aT, aD(toString(this))))
1688- $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))
1673+ else dg(hV, hW, hU)
1674+ let dF = 0
1675+ let hY = H(hX[1], b)
1676+ let hZ = H(hX[2], b)
1677+ let ia = value(getInteger(bd, aD(toString(this))))
1678+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hV), toString(hW), toString(hU), toString(dF), toString(hY), toString(hZ), toString(ia)], j))
16891679 }
16901680
16911681
16921682
1693-@Callable(eS)
1694-func evaluatePutByAmountAssetREADONLY (dH) = {
1695- let da = ba()
1696- let dn = fromBase58String(da[q])
1697- let dN = da[r]
1698- let do = fromBase58String(dN)
1699- let dO = da[s]
1700- let dp = fromBase58String(dO)
1701- let db = parseIntValue(da[t])
1702- let dc = parseIntValue(da[u])
1703- let dq = da[p]
1704- let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1705- let hT = bJ(dN)
1706- let hU = bJ(dO)
1707- let cW = D(hT, db)
1708- let cX = D(hU, dc)
1709- let dw = if ((hS == 0))
1683+@Callable(fb)
1684+func evaluatePutByAmountAssetREADONLY (dP) = {
1685+ let di = bk()
1686+ let dv = fromBase58String(di[q])
1687+ let dV = di[r]
1688+ let dw = fromBase58String(dV)
1689+ let dW = di[s]
1690+ let dx = fromBase58String(dW)
1691+ let dj = parseIntValue(di[t])
1692+ let dk = parseIntValue(di[u])
1693+ let dy = di[p]
1694+ let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1695+ let hV = bT(dV)
1696+ let hW = bT(dW)
1697+ let de = D(hV, dj)
1698+ let df = D(hW, dk)
1699+ let dE = if ((hU == 0))
17101700 then e
1711- else bM(cX, cW)
1712- let dT = D(dH, db)
1713- let dU = fraction(dT, dw, d)
1714- let dJ = H(dU, dc)
1715- let eY = dF("", 500000, dH, do, dJ, dp, "", true, false)
1716- let ee = eY._1
1717- let hZ = eY._3
1718- let ds = eY._4
1719- let du = eY._5
1720- let dr = eY._6
1721- $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))
1701+ else bW(df, de)
1702+ let eb = D(dP, dj)
1703+ let ec = fraction(eb, dE, d)
1704+ let dR = H(ec, dk)
1705+ let fh = dN("", 500000, dP, dw, dR, dx, "", true, false)
1706+ let em = fh._1
1707+ let ib = fh._3
1708+ let dA = fh._4
1709+ let dC = fh._5
1710+ let dz = fh._6
1711+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(em), toString(H(dE, b)), toString(dA), toString(dC), toString(dz), dy, toString(dP), toString(dR)], j))
17221712 }
17231713
17241714
17251715
1726-@Callable(eS)
1727-func evaluatePutByPriceAssetREADONLY (dJ) = {
1728- let da = ba()
1729- let dn = fromBase58String(da[q])
1730- let dN = da[r]
1731- let do = fromBase58String(dN)
1732- let dO = da[s]
1733- let dp = fromBase58String(dO)
1734- let db = parseIntValue(da[t])
1735- let dc = parseIntValue(da[u])
1736- let dq = da[p]
1737- let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1738- let ia = bJ(dN)
1739- let ib = bJ(dO)
1740- let ic = D(ia, db)
1741- let id = D(ib, dc)
1742- let dw = if ((hS == 0))
1716+@Callable(fb)
1717+func evaluatePutByPriceAssetREADONLY (dR) = {
1718+ let di = bk()
1719+ let dv = fromBase58String(di[q])
1720+ let dV = di[r]
1721+ let dw = fromBase58String(dV)
1722+ let dW = di[s]
1723+ let dx = fromBase58String(dW)
1724+ let dj = parseIntValue(di[t])
1725+ let dk = parseIntValue(di[u])
1726+ let dy = di[p]
1727+ let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1728+ let ic = bT(dV)
1729+ let id = bT(dW)
1730+ let ie = D(ic, dj)
1731+ let if = D(id, dk)
1732+ let dE = if ((hU == 0))
17431733 then e
1744- else bM(id, ic)
1745- let dU = D(dJ, dc)
1746- let dT = fraction(dU, d, dw)
1747- let dH = H(dT, db)
1748- let eY = dF("", 500000, dH, do, dJ, dp, "", true, false)
1749- let ee = eY._1
1750- let hZ = eY._3
1751- let ds = eY._4
1752- let du = eY._5
1753- let dr = eY._6
1754- $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))
1734+ else bW(if, ie)
1735+ let ec = D(dR, dk)
1736+ let eb = fraction(ec, d, dE)
1737+ let dP = H(eb, dj)
1738+ let fh = dN("", 500000, dP, dw, dR, dx, "", true, false)
1739+ let em = fh._1
1740+ let ib = fh._3
1741+ let dA = fh._4
1742+ let dC = fh._5
1743+ let dz = fh._6
1744+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(em), toString(H(dE, b)), toString(dA), toString(dC), toString(dz), dy, toString(dP), toString(dR)], j))
17551745 }
17561746
17571747
17581748
1759-@Callable(eS)
1760-func evaluateGetREADONLY (ie,if) = {
1761- let dW = dj("", ie, if, this)
1762- let dC = dW._1
1763- let dD = dW._2
1764- let ds = dW._5
1765- let du = dW._6
1766- let dr = dW._7
1767- let dx = dW._8
1768- let dq = parseIntValue(dW._9)
1769- $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))
1749+@Callable(fb)
1750+func evaluateGetREADONLY (ig,ih) = {
1751+ let ee = dr("", ig, ih, this)
1752+ let dK = ee._1
1753+ let dL = ee._2
1754+ let dA = ee._5
1755+ let dC = ee._6
1756+ let dz = ee._7
1757+ let dF = ee._8
1758+ let dy = parseIntValue(ee._9)
1759+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dK), toString(dL), toString(dA), toString(dC), toString(dz), toString(dF), toString(dy)], j))
17701760 }
17711761
17721762
1773-@Verifier(ig)
1774-func ih () = {
1775- let ii = {
1776- let bT = ge()
1777- if ($isInstanceOf(bT, "ByteVector"))
1763+@Verifier(ii)
1764+func ij () = {
1765+ let ik = {
1766+ let aQ = gn()
1767+ if ($isInstanceOf(aQ, "ByteVector"))
17781768 then {
1779- let gi = bT
1780- gi
1769+ let gq = aQ
1770+ gq
17811771 }
1782- else if ($isInstanceOf(bT, "Unit"))
1783- then ig.senderPublicKey
1772+ else if ($isInstanceOf(aQ, "Unit"))
1773+ then ii.senderPublicKey
17841774 else throw("Match error")
17851775 }
1786- let bT = ig
1787- if ($isInstanceOf(bT, "Order"))
1776+ let aQ = ii
1777+ if ($isInstanceOf(aQ, "Order"))
17881778 then {
1789- let eH = bT
1790- let ij = aZ()
1791- let ik = eG(eH)
1792- let aI = ik._1
1793- let aJ = ik._2
1794- let aK = sigVerify(eH.bodyBytes, eH.proofs[0], eH.senderPublicKey)
1795- let aL = sigVerify(eH.bodyBytes, eH.proofs[1], ij)
1796- if (if (if (aI)
1797- then aK
1779+ let eQ = aQ
1780+ let il = bj()
1781+ let im = if (eM())
1782+ then $Tuple2(true, "")
1783+ else eP(eQ)
1784+ let aK = im._1
1785+ let aL = im._2
1786+ let aM = sigVerify(eQ.bodyBytes, eQ.proofs[0], eQ.senderPublicKey)
1787+ let aN = sigVerify(eQ.bodyBytes, eQ.proofs[1], il)
1788+ if (if (if (aK)
1789+ then aM
17981790 else false)
1799- then aL
1791+ then aN
18001792 else false)
18011793 then true
1802- else aH(aI, aJ, aK, aL)
1794+ else aJ(aK, aL, aM, aN)
18031795 }
1804- else if ($isInstanceOf(bT, "SetScriptTransaction"))
1796+ else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18051797 then {
1806- let gf = bT
1807- if (sigVerify(ig.bodyBytes, ig.proofs[0], ii))
1798+ let aV = aQ
1799+ if (sigVerify(ii.bodyBytes, ii.proofs[0], ik))
18081800 then true
18091801 else {
1810- let il = blake2b256(value(gf.script))
1811- let im = fromBase64String(value(getString(aT, aF())))
1812- let in = scriptHash(this)
1813- if ((im == il))
1814- then (in != il)
1802+ let in = blake2b256(value(aV.script))
1803+ let io = fromBase64String(value(getString(bd, aF())))
1804+ let ip = scriptHash(this)
1805+ if ((io == in))
1806+ then (ip != in)
18151807 else false
18161808 }
18171809 }
1818- else sigVerify(ig.bodyBytes, ig.proofs[0], ii)
1810+ else sigVerify(ii.bodyBytes, ii.proofs[0], ik)
18191811 }
18201812
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
96-func V () = "%s__pendingManagerPublicKey"
96+func V () = "%s__managerVaultAddress"
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
133133 func ao (ap) = makeString(["%s%s", "stakedBalance", ap], j)
134134
135135
136136 func aq (ap) = makeString(["%s%s", "shareAssetBalance", ap], j)
137137
138138
139139 func ar (ap) = valueOrElse(getInteger(this, ao(ap)), 0)
140140
141141
142142 func as (ap) = valueOrElse(getInteger(this, aq(ap)), 0)
143143
144144
145145 func at () = "%s__factoryConfig"
146146
147147
148148 func au () = "%s%s__matcher__publicKey"
149149
150150
151151 func av (aw) = (("%s%s%s__" + aw) + "__mappings__poolContract2LpAsset")
152152
153153
154154 func ax (ay,az) = (((("%d%d%s__" + ay) + "__") + az) + "__config")
155155
156156
157157 func aA (aB) = ("%s%s%s__mappings__baseAsset2internalId__" + aB)
158158
159159
160160 func aC () = "%s__shutdown"
161161
162162
163163 func aD (aE) = ("%s%s__poolWeight__" + aE)
164164
165165
166166 func aF () = "%s__allowedLpScriptHash"
167167
168168
169169 let aG = "%s__feeCollectorAddress"
170170
171-func aH (aI,aJ,aK,aL) = throw((((((((("order validation failed: orderValid=" + toString(aI)) + " (") + aJ) + ")") + " senderValid=") + toString(aK)) + " matcherValid=") + toString(aL)))
171+func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
172172
173173
174-func aM (aN,aO) = valueOrErrorMessage(getString(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
174+func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
175175
176176
177-func aP (aN,aO) = valueOrErrorMessage(getInteger(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
178-
179-
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)
177+func aO (aP) = {
178+ let aQ = addressFromString(aP)
179+ if ($isInstanceOf(aQ, "Address"))
180+ then {
181+ let aR = aQ
182+ aR
183+ }
184+ else this
216185 }
217186
218187
219-func bd (be) = if ((be == i))
220- then unit
221- else fromBase58String(be)
222-
223-
224-func bf (be) = if ((be == unit))
225- then i
226- else toBase58String(value(be))
227-
228-
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]))
230-
231-
232-let bi = bg(ba())
233-
234-let bj = bi
235-
236-let bk = bj._1
237-
238-let bl = bj._2
239-
240-let bm = bj._3
241-
242-let bn = bj._4
243-
244-let bo = bj._5
245-
246-let bp = bj._6
247-
248-let bq = bj._7
249-
250-func br () = split(aM(aT, at()), j)
251-
252-
253-let bs = valueOrErrorMessage(addressFromString(br()[B]), "incorrect staking address")
254-
255-let bt = valueOrErrorMessage(addressFromString(br()[C]), "incorrect staking address")
256-
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)
258-
259-
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)
261-
262-
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])
188+func aS () = {
189+ let aT = {
190+ let aQ = getString(T())
191+ if ($isInstanceOf(aQ, "String"))
192+ then {
193+ let aU = aQ
194+ aO(aU)
195+ }
196+ else this
197+ }
198+ let aQ = getString(aT, V())
199+ if ($isInstanceOf(aQ, "String"))
200+ then {
201+ let aV = aQ
202+ aO(aV)
203+ }
204+ else this
269205 }
270206
271207
272-func bM (bN,bO) = fraction(bN, d, bO)
208+func aW (aX,aY) = valueOrErrorMessage(getString(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
273209
274210
275-func bP (bN,bO,L) = fraction(bN, d, bO, L)
211+func aZ (aX,aY) = valueOrErrorMessage(getInteger(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
276212
277213
278-func bQ (bR) = {
279- let bS = invoke(bR, "getRate", nil, nil)
280- if ((bS == bS))
214+func ba (bb) = throw(makeString(["lp.ride:", bb], " "))
215+
216+
217+func bc (bb) = makeString(["lp.ride:", bb], " ")
218+
219+
220+let bd = addressFromStringValue(aW(this, T()))
221+
222+let be = addressFromStringValue(aW(bd, aG))
223+
224+let bf = {
225+ let bg = invoke(bd, "getInFeeREADONLY", [toString(this)], nil)
226+ if ($isInstanceOf(bg, "Int"))
227+ then bg
228+ else throw(($getType(bg) + " couldn't be cast to Int"))
229+ }
230+
231+let bh = {
232+ let bg = invoke(bd, "getOutFeeREADONLY", [toString(this)], nil)
233+ if ($isInstanceOf(bg, "Int"))
234+ then bg
235+ else throw(($getType(bg) + " couldn't be cast to Int"))
236+ }
237+
238+func bi () = valueOrElse(getBoolean(bd, aC()), false)
239+
240+
241+func bj () = fromBase58String(aW(bd, au()))
242+
243+
244+func bk () = {
245+ let bl = aW(this, ae())
246+ let bm = aW(this, af())
247+ let az = aZ(bd, aA(bm))
248+ let ay = aZ(bd, aA(bl))
249+ split(aW(bd, ax(toString(ay), toString(az))), j)
250+ }
251+
252+
253+func bn (bo) = if ((bo == i))
254+ then unit
255+ else fromBase58String(bo)
256+
257+
258+func bp (bo) = if ((bo == unit))
259+ then i
260+ else toBase58String(value(bo))
261+
262+
263+func bq (br) = $Tuple7(addressFromStringValue(br[o]), parseIntValue(br[p]), fromBase58String(br[q]), bn(br[r]), bn(br[s]), parseIntValue(br[t]), parseIntValue(br[u]))
264+
265+
266+let bs = bq(bk())
267+
268+let bt = bs
269+
270+let bu = bt._1
271+
272+let bv = bt._2
273+
274+let bw = bt._3
275+
276+let bx = bt._4
277+
278+let by = bt._5
279+
280+let bz = bt._6
281+
282+let bA = bt._7
283+
284+func bB () = split(aW(bd, at()), j)
285+
286+
287+let bC = valueOrErrorMessage(addressFromString(bB()[B]), "incorrect staking address")
288+
289+let bD = valueOrErrorMessage(addressFromString(bB()[C]), "incorrect staking address")
290+
291+func bE (bF,bG,bH,bI,bJ,bK,bL,bM,bN,bO) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN), toString(bO)], j)
292+
293+
294+func bP (bQ,bR,bS,bI,bL,bM) = makeString(["%d%d%d%d%d%d", toString(bQ), toString(bR), toString(bS), toString(bI), toString(bL), toString(bM)], j)
295+
296+
297+func bT (ap) = {
298+ let bU = if ((ap == "WAVES"))
299+ then wavesBalance(this).available
300+ else assetBalance(this, fromBase58String(ap))
301+ let bV = ((bU + ar(ap)) - as(ap))
302+ max([0, bV])
303+ }
304+
305+
306+func bW (bX,bY) = fraction(bX, d, bY)
307+
308+
309+func bZ (bX,bY,L) = fraction(bX, d, bY, L)
310+
311+
312+func ca (cb) = {
313+ let cc = invoke(cb, "getRate", nil, nil)
314+ if ((cc == cc))
281315 then {
282- let bT = bS
283- if ($isInstanceOf(bT, "Int"))
316+ let aQ = cc
317+ if ($isInstanceOf(aQ, "Int"))
284318 then {
285- let bU = bT
286- bU
319+ let cd = aQ
320+ cd
287321 }
288- else aQ("proxy.getRate() unexpected value")
322+ else ba("proxy.getRate() unexpected value")
289323 }
290324 else throw("Strict value is not equal to itself.")
291325 }
292326
293327
294-func bV (ap,bW,bX,bR) = {
295- let bY = ar(ap)
296- if ((bY == bY))
328+func ce (ap,cf,cg,cb) = {
329+ let ch = ar(ap)
330+ if ((ch == ch))
297331 then {
298- let bZ = as(bX)
299- if ((bZ == bZ))
332+ let ci = as(cg)
333+ if ((ci == ci))
300334 then {
301- let ca = bd(ap)
302- if ((bW > 0))
335+ let cj = bn(ap)
336+ if ((cf > 0))
303337 then {
304- let cb = invoke(bR, "deposit", nil, [AttachedPayment(ca, bW)])
305- if ((cb == cb))
338+ let ck = invoke(cb, "deposit", nil, [AttachedPayment(cj, cf)])
339+ if ((ck == ck))
306340 then {
307- let bT = cb
308- if ($isInstanceOf(bT, "Int"))
341+ let aQ = ck
342+ if ($isInstanceOf(aQ, "Int"))
309343 then {
310- let cc = bT
311- let cd = (bY + bW)
312- let ce = (bZ + cc)
313-[IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce)]
344+ let cl = aQ
345+ let cm = (ch + cf)
346+ let cn = (ci + cl)
347+[IntegerEntry(ao(ap), cm), IntegerEntry(aq(cg), cn)]
314348 }
315349 else nil
316350 }
317351 else throw("Strict value is not equal to itself.")
318352 }
319353 else nil
320354 }
321355 else throw("Strict value is not equal to itself.")
322356 }
323357 else throw("Strict value is not equal to itself.")
324358 }
325359
326360
327-func cf (ap,bW,bX,bR,cg,ch) = {
328- let bY = ar(ap)
329- if ((bY == bY))
361+func co (ap,cf,cg,cb,cp,cq) = {
362+ let ch = ar(ap)
363+ if ((ch == ch))
330364 then {
331- let bZ = as(bX)
332- if ((bZ == bZ))
365+ let ci = as(cg)
366+ if ((ci == ci))
333367 then {
334- let ci = bQ(bR)
335- if ((ci == ci))
368+ let cr = ca(cb)
369+ if ((cr == cr))
336370 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))
371+ let cs = fraction(cp, ch, ci)
372+ let ct = bn(cg)
373+ let cu = fraction(cp, cf, cs)
374+ let cv = fraction(cp, cf, cr)
375+ let cw = max([0, (cu - cv)])
376+ if ((cv > 0))
343377 then {
344- let co = invoke(bR, "withdraw", nil, [AttachedPayment(ck, cm)])
345- if ((co == co))
378+ let cx = invoke(cb, "withdraw", nil, [AttachedPayment(ct, cv)])
379+ if ((cx == cx))
346380 then {
347- let bT = co
348- if ($isInstanceOf(bT, "Int"))
381+ let aQ = cx
382+ if ($isInstanceOf(aQ, "Int"))
349383 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))]
384+ let cy = aQ
385+ let cm = (ch - cy)
386+ let cn = ((ci - cv) - cw)
387+[IntegerEntry(ao(ap), cm), IntegerEntry(aq(cg), cn), ScriptTransfer(cq, cw, bn(cg))]
354388 }
355389 else nil
356390 }
357391 else throw("Strict value is not equal to itself.")
358392 }
359393 else nil
360394 }
361395 else throw("Strict value is not equal to itself.")
362396 }
363397 else throw("Strict value is not equal to itself.")
364398 }
365399 else throw("Strict value is not equal to itself.")
366400 }
367401
368402
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)"))
403+func cz (ap) = {
404+ let aQ = invoke(bd, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
405+ if ($isInstanceOf(aQ, "(Boolean, Int, Int, String, String, Int, String)"))
372406 then {
373- let cr = bT
374- cr
407+ let aR = aQ
408+ aR
375409 }
376- else aQ((("[" + ap) + "] getLeaseProxyConfig() error"))
410+ else ba((("[" + ap) + "] getLeaseProxyConfig() error"))
377411 }
378412
379413
380-func cs (ct,ap,bX,cu,bR,cg,ch) = {
381- let bY = ar(ap)
382- if ((bY == bY))
414+func cA (cB,ap,cg,cC,cb,cp,cq) = {
415+ let ch = ar(ap)
416+ if ((ch == ch))
383417 then {
384- let bZ = as(bX)
385- if ((bZ == bZ))
418+ let ci = as(cg)
419+ if ((ci == ci))
386420 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))
421+ let cD = max([0, (bT(ap) - cC)])
422+ let cE = fraction(cB, cD, 100)
423+ let cF = (ch - cE)
424+ if ((cF == 0))
391425 then nil
392- else if ((0 > cx))
426+ else if ((0 > cF))
393427 then {
394- let cy = -(cx)
395- bV(ap, cy, bX, bR)
428+ let cG = -(cF)
429+ ce(ap, cG, cg, cb)
396430 }
397431 else {
398- let cz = cx
399- cf(ap, cz, bX, bR, cg, ch)
432+ let cH = cF
433+ co(ap, cH, cg, cb, cp, cq)
400434 }
401435 }
402436 else throw("Strict value is not equal to itself.")
403437 }
404438 else throw("Strict value is not equal to itself.")
405439 }
406440
407441
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))
442+func cI (ap) = {
443+ let cJ = cz(ap)
444+ let cK = cJ._1
445+ let cL = cJ._2
446+ let cC = cJ._3
447+ let cM = cJ._4
448+ let cN = cJ._5
449+ let cp = cJ._6
450+ let cO = cJ._7
451+ if (cK)
452+ then cA(cL, ap, cN, cC, addressFromStringValue(cM), cp, addressFromStringValue(cO))
419453 else nil
420454 }
421455
422456
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)
457+func cP (ap,cQ) = {
458+ let cR = cz(ap)
459+ let cK = cR._1
460+ let cL = cR._2
461+ let cC = cR._3
462+ let cM = cR._4
463+ let cN = cR._5
464+ let cp = cR._6
465+ let cO = cR._7
466+ if (cK)
433467 then {
434- let cK = max([0, ((bJ(ap) - cI) - cu)])
435- if ((cK == cK))
468+ let cS = max([0, ((bT(ap) - cQ) - cC)])
469+ if ((cS == cS))
436470 then {
437- let cd = fraction(cD, cK, 100)
438- if ((cd == cd))
471+ let cm = fraction(cL, cS, 100)
472+ if ((cm == cm))
439473 then {
440- let cL = (ar(ap) - cd)
441- if ((cL == cL))
442- then if ((0 > cL))
443- then bV(ap, -(cL), cF, addressFromStringValue(cE))
444- else cf(ap, cL, cF, addressFromStringValue(cE), cg, addressFromStringValue(cG))
474+ let cT = (ar(ap) - cm)
475+ if ((cT == cT))
476+ then if ((0 > cT))
477+ then ce(ap, -(cT), cN, addressFromStringValue(cM))
478+ else co(ap, cT, cN, addressFromStringValue(cM), cp, addressFromStringValue(cO))
445479 else throw("Strict value is not equal to itself.")
446480 }
447481 else throw("Strict value is not equal to itself.")
448482 }
449483 else throw("Strict value is not equal to itself.")
450484 }
451485 else nil
452486 }
453487
454488
455-func cM (cN,cO) = {
456- let cP = cH(aM(this, ae()), cN)
457- let cQ = cH(aM(this, af()), cO)
458- (cP ++ cQ)
489+func cU (cV,cW) = {
490+ let cX = cP(aW(this, ae()), cV)
491+ let cY = cP(aW(this, af()), cW)
492+ (cX ++ cY)
459493 }
460494
461495
462-func cR (cS,cT,cU,cV) = {
463- let cW = D(cU, cS)
464- let cX = D(cV, cT)
465- bM(cX, cW)
496+func cZ (da,db,dc,dd) = {
497+ let de = D(dc, da)
498+ let df = D(dd, db)
499+ bW(df, de)
466500 }
467501
468502
469-func cY (cU,cV,cZ) = {
470- let da = ba()
471- let db = parseIntValue(da[t])
472- let dc = parseIntValue(da[u])
473- let dd = cR(db, dc, cU, cV)
474- let bO = D(cU, db)
475- let bN = D(cV, dc)
476- let de = D(cZ, b)
477- let df = bM(bO, de)
478- let dg = bM(bN, de)
479-[dd, df, dg]
503+func dg (dc,dd,dh) = {
504+ let di = bk()
505+ let dj = parseIntValue(di[t])
506+ let dk = parseIntValue(di[u])
507+ let dl = cZ(dj, dk, dc, dd)
508+ let bY = D(dc, dj)
509+ let bX = D(dd, dk)
510+ let dm = D(dh, b)
511+ let dn = bW(bY, dm)
512+ let do = bW(bX, dm)
513+[dl, dn, do]
480514 }
481515
482516
483-func dh (cU,cV,cZ) = {
484- let di = cY(cU, cV, cZ)
485-[H(di[0], b), H(di[1], b), H(di[2], b)]
517+func dp (dc,dd,dh) = {
518+ let dq = dg(dc, dd, dh)
519+[H(dq[0], b), H(dq[1], b), H(dq[2], b)]
486520 }
487521
488522
489-func dj (dk,dl,dm,ab) = {
490- let da = ba()
491- let dn = da[q]
492- let do = da[r]
493- let dp = da[s]
494- let cS = parseIntValue(da[t])
495- let cT = parseIntValue(da[u])
496- let dq = da[p]
497- let dr = valueOrErrorMessage(assetInfo(fromBase58String(dn)), (("Asset " + dn) + " doesn't exist")).quantity
498- if ((dn != dl))
523+func dr (ds,dt,du,ab) = {
524+ let di = bk()
525+ let dv = di[q]
526+ let dw = di[r]
527+ let dx = di[s]
528+ let da = parseIntValue(di[t])
529+ let db = parseIntValue(di[u])
530+ let dy = di[p]
531+ let dz = valueOrErrorMessage(assetInfo(fromBase58String(dv)), (("Asset " + dv) + " doesn't exist")).quantity
532+ if ((dv != dt))
499533 then throw("Invalid asset passed.")
500534 else {
501- let ds = bJ(do)
502- let dt = D(ds, cS)
503- let du = bJ(dp)
504- let dv = D(du, cT)
505- let dw = bM(dv, dt)
506- let dx = H(dw, b)
507- let dy = D(dm, b)
508- let dz = D(dr, b)
509- let dA = fraction(dt, dy, dz)
510- let dB = fraction(dv, dy, dz)
511- let dC = K(dA, cS, FLOOR)
512- let dD = K(dB, cT, FLOOR)
513- let dE = if ((dk == ""))
535+ let dA = bT(dw)
536+ let dB = D(dA, da)
537+ let dC = bT(dx)
538+ let dD = D(dC, db)
539+ let dE = bW(dD, dB)
540+ let dF = H(dE, b)
541+ let dG = D(du, b)
542+ let dH = D(dz, b)
543+ let dI = fraction(dB, dG, dH)
544+ let dJ = fraction(dD, dG, dH)
545+ let dK = K(dI, da, FLOOR)
546+ let dL = K(dJ, db, FLOOR)
547+ let dM = if ((ds == ""))
514548 then nil
515- else [ScriptTransfer(ab, dC, if ((do == "WAVES"))
549+ else [ScriptTransfer(ab, dK, if ((dw == "WAVES"))
516550 then unit
517- else fromBase58String(do)), ScriptTransfer(ab, dD, if ((dp == "WAVES"))
551+ else fromBase58String(dw)), ScriptTransfer(ab, dL, if ((dx == "WAVES"))
518552 then unit
519- 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)]
520- $Tuple10(dC, dD, do, dp, ds, du, dr, dw, dq, dE)
553+ else fromBase58String(dx)), StringEntry(ad(toString(ab), ds), bP(dK, dL, du, dF, height, lastBlock.timestamp)), IntegerEntry(W(), dF), IntegerEntry(X(height, lastBlock.timestamp), dF)]
554+ $Tuple10(dK, dL, dw, dx, dA, dC, dz, dE, dy, dM)
521555 }
522556 }
523557
524558
525-func dF (dk,dG,dH,dI,dJ,dK,ab,dL,dM) = {
526- let da = ba()
527- let dn = fromBase58String(da[q])
528- let dN = da[r]
529- let dO = da[s]
530- let dP = da[v]
531- let dQ = da[w]
532- let db = parseIntValue(da[t])
533- let dc = parseIntValue(da[u])
534- let dq = da[p]
535- let dr = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
536- let dR = toBase58String(valueOrElse(dI, fromBase58String("WAVES")))
537- let dS = toBase58String(valueOrElse(dK, fromBase58String("WAVES")))
538- if (if ((dN != dR))
559+func dN (ds,dO,dP,dQ,dR,dS,ab,dT,dU) = {
560+ let di = bk()
561+ let dv = fromBase58String(di[q])
562+ let dV = di[r]
563+ let dW = di[s]
564+ let dX = di[v]
565+ let dY = di[w]
566+ let dj = parseIntValue(di[t])
567+ let dk = parseIntValue(di[u])
568+ let dy = di[p]
569+ let dz = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
570+ let dZ = toBase58String(valueOrElse(dQ, fromBase58String("WAVES")))
571+ let ea = toBase58String(valueOrElse(dS, fromBase58String("WAVES")))
572+ if (if ((dV != dZ))
539573 then true
540- else (dO != dS))
574+ else (dW != ea))
541575 then throw("Invalid amt or price asset passed.")
542576 else {
543- let ds = if (dL)
544- then bJ(dN)
545- else (bJ(dN) - dH)
546- let du = if (dL)
547- then bJ(dO)
548- else (bJ(dO) - dJ)
549- let dT = D(dH, db)
550- let dU = D(dJ, dc)
551- let dV = bM(dU, dT)
552- let dt = D(ds, db)
553- let dv = D(du, dc)
554- let dW = if ((dr == 0))
577+ let dA = if (dT)
578+ then bT(dV)
579+ else (bT(dV) - dP)
580+ let dC = if (dT)
581+ then bT(dW)
582+ else (bT(dW) - dR)
583+ let eb = D(dP, dj)
584+ let ec = D(dR, dk)
585+ let ed = bW(ec, eb)
586+ let dB = D(dA, dj)
587+ let dD = D(dC, dk)
588+ let ee = if ((dz == 0))
555589 then {
556- let dw = e
557- let dX = e
558- let de = pow((dT * dU), 0, toBigInt(5), 1, 0, DOWN)
559- $Tuple5(H(de, b), H(dT, db), H(dU, dc), bM((dv + dU), (dt + dT)), dX)
590+ let dE = e
591+ let ef = e
592+ let dm = pow((eb * ec), 0, toBigInt(5), 1, 0, DOWN)
593+ $Tuple5(H(dm, b), H(eb, dj), H(ec, dk), bW((dD + ec), (dB + eb)), ef)
560594 }
561595 else {
562- let dw = bM(dv, dt)
563- let dX = fraction(R((dw - dV)), d, dw)
564- let dY = D(dG, b)
565- if (if ((dw != e))
566- then (dX > dY)
596+ let dE = bW(dD, dB)
597+ let ef = fraction(R((dE - ed)), d, dE)
598+ let eg = D(dO, b)
599+ if (if ((dE != e))
600+ then (ef > eg)
567601 else false)
568- then throw(((("Price slippage " + toString(dX)) + " exceeded the passed limit of ") + toString(dY)))
602+ then throw(((("Price slippage " + toString(ef)) + " exceeded the passed limit of ") + toString(eg)))
569603 else {
570- let dz = D(dr, b)
571- let dZ = fraction(dT, bP(dv, dt, CEILING), d, CEILING)
572- let ea = fraction(dU, d, bP(dv, dt, FLOOR), CEILING)
573- let eb = if ((dZ > dU))
574- then $Tuple2(ea, dU)
575- else $Tuple2(dT, dZ)
576- let ec = eb._1
577- let ed = eb._2
578- let de = fraction(dz, ed, dv, FLOOR)
579- $Tuple5(K(de, b, FLOOR), K(ec, db, CEILING), K(ed, dc, CEILING), dw, dX)
604+ let dH = D(dz, b)
605+ let eh = fraction(eb, bZ(dD, dB, CEILING), d, CEILING)
606+ let ei = fraction(ec, d, bZ(dD, dB, FLOOR), CEILING)
607+ let ej = if ((eh > ec))
608+ then $Tuple2(ei, ec)
609+ else $Tuple2(eb, eh)
610+ let ek = ej._1
611+ let el = ej._2
612+ let dm = fraction(dH, el, dD, FLOOR)
613+ $Tuple5(K(dm, b, FLOOR), K(ek, dj, CEILING), K(el, dk, CEILING), dE, ef)
580614 }
581615 }
582- let ee = dW._1
583- let ef = dW._2
584- let eg = dW._3
585- let dx = H(dW._4, b)
586- let eh = H(dW._5, b)
587- if ((0 >= ee))
616+ let em = ee._1
617+ let en = ee._2
618+ let eo = ee._3
619+ let dF = H(ee._4, b)
620+ let ep = H(ee._5, b)
621+ if ((0 >= em))
588622 then throw("Invalid calculations. LP calculated is less than zero.")
589623 else {
590- let ei = if (!(dM))
624+ let eq = if (!(dU))
591625 then 0
592- else ee
593- let ej = (dH - ef)
594- let ek = (dJ - eg)
595- 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))]
596- $Tuple13(ee, ei, dx, ds, du, dr, dn, dq, el, ej, ek, dI, dK)
626+ else em
627+ let er = (dP - en)
628+ let es = (dR - eo)
629+ let et = [IntegerEntry(W(), dF), IntegerEntry(X(height, lastBlock.timestamp), dF), StringEntry(aa(ab, ds), bE(en, eo, eq, dF, dO, ep, height, lastBlock.timestamp, er, es))]
630+ $Tuple13(em, eq, dF, dA, dC, dz, dv, dy, et, er, es, dQ, dS)
597631 }
598632 }
599633 }
600634
601635
602-func em (en,eo,dr) = {
603- let ep = G(en, toBigInt(bp))
604- let eq = G(eo, toBigInt(bq))
605- let er = fraction(pow((ep * eq), 0, toBigInt(5), 1, 18, DOWN), g, dr)
606- if ((dr == f))
636+func eu (ev,ew,dz) = {
637+ let ex = G(ev, toBigInt(bz))
638+ let ey = G(ew, toBigInt(bA))
639+ let ez = fraction(pow((ex * ey), 0, toBigInt(5), 1, 18, DOWN), g, dz)
640+ if ((dz == f))
607641 then f
608- else er
642+ else ez
609643 }
610644
611645
612-func es (et,eu,ev) = {
613- let ew = (toBigInt(bJ(bf(bn))) - et)
614- let ex = (toBigInt(bJ(bf(bo))) - eu)
615- let ey = (toBigInt(value(assetInfo(bm)).quantity) - ev)
616- let ez = em(ew, ex, ey)
617- ez
646+func eA (eB,eC,eD) = {
647+ let eE = (toBigInt(bT(bp(bx))) - eB)
648+ let eF = (toBigInt(bT(bp(by))) - eC)
649+ let eG = (toBigInt(value(assetInfo(bw)).quantity) - eD)
650+ let eH = eu(eE, eF, eG)
651+ eH
618652 }
619653
620654
621-func eA (eB,eC,ev) = {
622- let ew = (bJ(bf(bn)) + eB)
623- let ex = (bJ(bf(bo)) + eC)
624- let ey = (value(assetInfo(bm)).quantity + ev)
625- let er = em(toBigInt(ew), toBigInt(ex), toBigInt(ey))
626- let eD = [IntegerEntry(ak, height), StringEntry(aj, toString(er))]
627- $Tuple2(eD, er)
655+func eI (eJ,eK,eD) = {
656+ let eE = (bT(bp(bx)) + eJ)
657+ let eF = (bT(bp(by)) + eK)
658+ let eG = (value(assetInfo(bw)).quantity + eD)
659+ let ez = eu(toBigInt(eE), toBigInt(eF), toBigInt(eG))
660+ let eL = [IntegerEntry(ak, height), StringEntry(aj, toString(ez))]
661+ $Tuple2(eL, ez)
628662 }
629663
630664
631-func eE (eF,er) = if ((er >= eF))
632- then true
633- else aQ(makeString(["updated KLp lower than current KLp", toString(eF), toString(er)], " "))
665+func eM () = valueOrElse(getBoolean(bd, aH(toString(this))), false)
634666
635667
636-func eG (eH) = {
637- let ew = bJ(bf(bn))
638- let ex = bJ(bf(bo))
639- let eI = eH.amount
640- let eJ = fraction(eH.amount, eH.price, b, FLOOR)
641- let eK = if ((eH.orderType == Buy))
642- then $Tuple2(eI, -(eJ))
643- else $Tuple2(-(eI), eJ)
644- let eB = eK._1
645- let eC = eK._2
646- if (if (if (aY())
668+func eN (eO,ez) = if ((ez >= eO))
669+ then true
670+ else ba(makeString(["updated KLp lower than current KLp", toString(eO), toString(ez)], " "))
671+
672+
673+func eP (eQ) = {
674+ let eE = bT(bp(bx))
675+ let eF = bT(bp(by))
676+ let eR = eQ.amount
677+ let eS = fraction(eQ.amount, eQ.price, b, FLOOR)
678+ let eT = if ((eQ.orderType == Buy))
679+ then $Tuple2(eR, -(eS))
680+ else $Tuple2(-(eR), eS)
681+ let eJ = eT._1
682+ let eK = eT._2
683+ if (if (if (bi())
647684 then true
648- else (bl == m))
685+ else (bv == m))
649686 then true
650- else (bl == n))
687+ else (bv == n))
651688 then throw("Exchange operations disabled")
652- else if (if ((eH.assetPair.amountAsset != bn))
689+ else if (if ((eQ.assetPair.amountAsset != bx))
653690 then true
654- else (eH.assetPair.priceAsset != bo))
691+ else (eQ.assetPair.priceAsset != by))
655692 then throw("Wrong order assets.")
656693 else {
657- let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
658- let eM = eA(eB, eC, 0)
659- let eN = eM._1
660- let eO = eM._2
661- let eP = (eO >= eL)
662- let eQ = makeString(["kLp=", toString(eL), " kLpNew=", toString(eO), " amountAssetBalance=", toString(ew), " priceAssetBalance=", toString(ex), " amountAssetBalanceDelta=", toString(eB), " priceAssetBalanceDelta=", toString(eC), " height=", toString(height)], "")
663- $Tuple2(eP, eQ)
694+ let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
695+ let eV = eI(eJ, eK, 0)
696+ let eW = eV._1
697+ let eX = eV._2
698+ let eY = (eX >= eU)
699+ let eZ = makeString(["kLp=", toString(eU), " kLpNew=", toString(eX), " amountAssetBalance=", toString(eE), " priceAssetBalance=", toString(eF), " amountAssetBalanceDelta=", toString(eJ), " priceAssetBalanceDelta=", toString(eK), " height=", toString(height)], "")
700+ $Tuple2(eY, eZ)
664701 }
665702 }
666703
667704
668-func eR (eS) = if ((size(eS.payments) != 1))
705+func fa (fb) = if ((size(fb.payments) != 1))
669706 then throw("exactly 1 payment is expected")
670707 else {
671- let eT = value(eS.payments[0])
672- let dl = value(eT.assetId)
673- let eU = eT.amount
674- let dW = dj(toBase58String(eS.transactionId), toBase58String(dl), eU, eS.caller)
675- let dC = dW._1
676- let dD = dW._2
677- let dq = parseIntValue(dW._9)
678- let dE = dW._10
679- if (if (aY())
708+ let fc = value(fb.payments[0])
709+ let dt = value(fc.assetId)
710+ let fd = fc.amount
711+ let ee = dr(toBase58String(fb.transactionId), toBase58String(dt), fd, fb.caller)
712+ let dK = ee._1
713+ let dL = ee._2
714+ let dy = parseIntValue(ee._9)
715+ let dM = ee._10
716+ if (if (bi())
680717 then true
681- else (dq == n))
682- then throw(("Get operation is blocked by admin. Status = " + toString(dq)))
683- else $Tuple5(dC, dD, eU, dl, dE)
718+ else (dy == n))
719+ then throw(("Get operation is blocked by admin. Status = " + toString(dy)))
720+ else $Tuple5(dK, dL, fd, dt, dM)
684721 }
685722
686723
687-func eV (eS,dG,dM) = if ((size(eS.payments) != 2))
724+func fe (fb,dO,dU) = if ((size(fb.payments) != 2))
688725 then throw("exactly 2 payments are expected")
689726 else {
690- let eW = value(eS.payments[0])
691- let eX = value(eS.payments[1])
692- let eY = dF(toBase58String(eS.transactionId), dG, eW.amount, eW.assetId, eX.amount, eX.assetId, toString(eS.caller), false, dM)
693- let dq = parseIntValue(eY._8)
694- if (if (if (aY())
727+ let ff = value(fb.payments[0])
728+ let fg = value(fb.payments[1])
729+ let fh = dN(toBase58String(fb.transactionId), dO, ff.amount, ff.assetId, fg.amount, fg.assetId, toString(fb.caller), false, dU)
730+ let dy = parseIntValue(fh._8)
731+ if (if (if (bi())
695732 then true
696- else (dq == l))
733+ else (dy == l))
697734 then true
698- else (dq == n))
699- then throw(("Put operation is blocked by admin. Status = " + toString(dq)))
700- else eY
735+ else (dy == n))
736+ then throw(("Put operation is blocked by admin. Status = " + toString(dy)))
737+ else fh
701738 }
702739
703740
704-func eZ (bW) = {
705- let fa = invoke(aT, "emit", [bW], nil)
706- if ((fa == fa))
741+func fi (cf) = {
742+ let fj = invoke(bd, "emit", [cf], nil)
743+ if ((fj == fj))
707744 then {
708- let fb = {
709- let bT = fa
710- if ($isInstanceOf(bT, "Address"))
745+ let fk = {
746+ let aQ = fj
747+ if ($isInstanceOf(aQ, "Address"))
711748 then {
712- let fc = bT
713- invoke(fc, "emit", [bW], nil)
749+ let fl = aQ
750+ invoke(fl, "emit", [cf], nil)
714751 }
715752 else unit
716753 }
717- if ((fb == fb))
718- then bW
754+ if ((fk == fk))
755+ then cf
719756 else throw("Strict value is not equal to itself.")
720757 }
721758 else throw("Strict value is not equal to itself.")
722759 }
723760
724761
725-func fd (bW,ai) = {
726- let fe = if ((ai == 0))
762+func fm (cf,ai) = {
763+ let fn = if ((ai == 0))
727764 then 0
728- else fraction(bW, ai, b)
729- $Tuple2((bW - fe), fe)
765+ else fraction(cf, ai, b)
766+ $Tuple2((cf - fn), fn)
730767 }
731768
732769
733-func ff (fg,fh,ab,ac) = {
734- let fi = (ac == unit)
735- let fj = bJ(bf(bn))
736- let fk = bJ(bf(bo))
737- let fl = if ((fh == bn))
770+func fo (fp,fq,ab,ac) = {
771+ let fr = (ac == unit)
772+ let fs = bT(bp(bx))
773+ let ft = bT(bp(by))
774+ let fu = if ((fq == bx))
738775 then true
739- else if ((fh == bo))
776+ else if ((fq == by))
740777 then false
741- else aQ("invalid asset")
742- let fm = if (fi)
743- then $Tuple2(fj, fk)
744- else if (fl)
745- then $Tuple2((fj - fg), fk)
746- else $Tuple2(fj, (fk - fg))
747- let fn = fm._1
748- let fo = fm._2
749- let fp = if (fl)
750- then $Tuple2(fg, 0)
751- else $Tuple2(0, fg)
752- let fq = fp._1
753- let fr = fp._2
754- let eI = fd(fq, aV)._1
755- let eJ = fd(fr, aV)._1
756- let fs = fd(fg, aV)
757- let ft = fs._1
758- let fe = fs._2
759- let fu = (fn + eI)
760- let fv = (fo + eJ)
761- let fw = bM(D(fv, bq), D(fu, bp))
762- let fx = H(fw, b)
763- let fy = if (fl)
764- then fn
765- else fo
766- let fz = toBigInt(fy)
767- let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
768- let fB = if ((fA > f))
778+ else ba("invalid asset")
779+ let fv = if (fr)
780+ then $Tuple2(fs, ft)
781+ else if (fu)
782+ then $Tuple2((fs - fp), ft)
783+ else $Tuple2(fs, (ft - fp))
784+ let fw = fv._1
785+ let fx = fv._2
786+ let fy = if (fu)
787+ then $Tuple2(fp, 0)
788+ else $Tuple2(0, fp)
789+ let fz = fy._1
790+ let fA = fy._2
791+ let eR = fm(fz, bf)._1
792+ let eS = fm(fA, bf)._1
793+ let fB = fm(fp, bf)
794+ let fC = fB._1
795+ let fn = fB._2
796+ let fD = (fw + eR)
797+ let fE = (fx + eS)
798+ let fF = bW(D(fE, bA), D(fD, bz))
799+ let fG = H(fF, b)
800+ let fH = if (fu)
801+ then fw
802+ else fx
803+ let fI = toBigInt(fH)
804+ let fJ = toBigInt(valueOrErrorMessage(assetInfo(bw), (("asset " + toBase58String(bw)) + " doesn't exist")).quantity)
805+ let fK = if ((fJ > f))
769806 then true
770- else aQ("initial deposit requires all coins")
771- if ((fB == fB))
807+ else ba("initial deposit requires all coins")
808+ if ((fK == fK))
772809 then {
773- let fC = toBigInt(ft)
774- let fD = max([0, toInt(((fA * (sqrtBigInt((d + ((fC * d) / fz)), 18, 18, DOWN) - d)) / d))])
775- let el = if (fi)
810+ let fL = toBigInt(fC)
811+ let fM = max([0, toInt(((fJ * (sqrtBigInt((d + ((fL * d) / fI)), 18, 18, DOWN) - d)) / d))])
812+ let et = if (fr)
776813 then nil
777- 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))]
778- let fE = bM(D(fo, bq), D(fn, bp))
779- let fF = H(fE, b)
780- let fG = {
781- let fH = if (fl)
782- then $Tuple2(fq, fn)
783- else $Tuple2(fr, fo)
784- let bW = fH._1
785- let fI = fH._2
786- let fJ = toInt(fraction(fA, toBigInt((bW / 2)), toBigInt(fI)))
787- fraction((fD - fJ), b, fJ)
814+ else [IntegerEntry(W(), fG), IntegerEntry(X(height, lastBlock.timestamp), fG), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bE(fz, fA, fM, fG, 0, 0, height, lastBlock.timestamp, 0, 0))]
815+ let fN = bW(D(fx, bA), D(fw, bz))
816+ let fO = H(fN, b)
817+ let fP = {
818+ let fQ = if (fu)
819+ then $Tuple2(fz, fw)
820+ else $Tuple2(fA, fx)
821+ let cf = fQ._1
822+ let fR = fQ._2
823+ let fS = toInt(fraction(fJ, toBigInt((cf / 2)), toBigInt(fR)))
824+ fraction((fM - fS), b, fS)
788825 }
789- $Tuple5(fD, el, fe, fG, fl)
826+ $Tuple5(fM, et, fn, fP, fu)
790827 }
791828 else throw("Strict value is not equal to itself.")
792829 }
793830
794831
795-func fK (fL,ft,fh,ab,ac) = {
796- let fi = (ac == unit)
797- let da = ba()
798- let db = parseIntValue(da[t])
799- let dc = parseIntValue(da[u])
800- let fM = [if ((fh == bm))
832+func fT (fU,fC,fq,ab,ac) = {
833+ let fr = (ac == unit)
834+ let di = bk()
835+ let dj = parseIntValue(di[t])
836+ let dk = parseIntValue(di[u])
837+ let fV = [if ((fq == bw))
801838 then true
802- else aQ("invalid lp asset")]
803- if ((fM == fM))
839+ else ba("invalid lp asset")]
840+ if ((fV == fV))
804841 then {
805- let fN = if ((fL == bn))
842+ let fW = if ((fU == bx))
806843 then true
807- else if ((fL == bo))
844+ else if ((fU == by))
808845 then false
809- else aQ("invalid asset")
810- let fO = if (fN)
811- then toBigInt(bJ(bf(bn)))
812- else toBigInt(bJ(bf(bo)))
813- let fP = if (fN)
814- then db
815- else dc
816- let fQ = bJ(bf(bn))
817- let fR = bJ(bf(bo))
818- let fS = if (fN)
819- then fQ
820- else fR
821- let fT = toBigInt(fS)
822- let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
823- let fU = toBigInt(ft)
824- let fV = max([0, toInt(((fO * (d - pow((d - ((fU * d) / fA)), 18, h, 0, 18, DOWN))) / d))])
825- let fW = fd(fV, aX)
826- let fX = fW._1
827- let fe = fW._2
828- let fY = if (fN)
829- then $Tuple4(fX, 0, (fQ - fV), fR)
830- else $Tuple4(0, fX, fQ, (fR - fV))
831- let fZ = fY._1
832- let ga = fY._2
833- let gb = fY._3
834- let gc = fY._4
835- let fw = bM(D(gc, bq), D(gb, bp))
836- let fx = H(fw, b)
837- let el = if (fi)
846+ else ba("invalid asset")
847+ let fX = if (fW)
848+ then toBigInt(bT(bp(bx)))
849+ else toBigInt(bT(bp(by)))
850+ let fY = if (fW)
851+ then dj
852+ else dk
853+ let fZ = bT(bp(bx))
854+ let ga = bT(bp(by))
855+ let gb = if (fW)
856+ then fZ
857+ else ga
858+ let gc = toBigInt(gb)
859+ let fJ = toBigInt(valueOrErrorMessage(assetInfo(bw), (("asset " + toBase58String(bw)) + " doesn't exist")).quantity)
860+ let gd = toBigInt(fC)
861+ let ge = max([0, toInt(((fX * (d - pow((d - ((gd * d) / fJ)), 18, h, 0, 18, DOWN))) / d))])
862+ let gf = fm(ge, bh)
863+ let gg = gf._1
864+ let fn = gf._2
865+ let gh = if (fW)
866+ then $Tuple4(gg, 0, (fZ - ge), ga)
867+ else $Tuple4(0, gg, fZ, (ga - ge))
868+ let gi = gh._1
869+ let gj = gh._2
870+ let gk = gh._3
871+ let gl = gh._4
872+ let fF = bW(D(gl, bA), D(gk, bz))
873+ let fG = H(fF, b)
874+ let et = if (fr)
838875 then nil
839- 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)]
840- let fE = bM(D(fR, bq), D(fQ, bp))
841- let fF = H(fE, b)
842- let fG = {
843- let gd = (toInt(fraction(fO, fU, fA)) * 2)
844- fraction((fX - gd), b, gd)
876+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bP(gi, gj, fC, fG, height, lastBlock.timestamp)), IntegerEntry(W(), fG), IntegerEntry(X(height, lastBlock.timestamp), fG)]
877+ let fN = bW(D(ga, bA), D(fZ, bz))
878+ let fO = H(fN, b)
879+ let fP = {
880+ let gm = (toInt(fraction(fX, gd, fJ)) * 2)
881+ fraction((gg - gm), b, gm)
845882 }
846- $Tuple5(fX, el, fe, fG, fN)
883+ $Tuple5(gg, et, fn, fP, fW)
847884 }
848885 else throw("Strict value is not equal to itself.")
849886 }
850887
851888
852-func ge () = {
853- let bT = getString(U())
854- if ($isInstanceOf(bT, "String"))
889+func gn () = {
890+ let go = aS()
891+ let aQ = getString(go, U())
892+ if ($isInstanceOf(aQ, "String"))
855893 then {
856- let gf = bT
857- fromBase58String(gf)
894+ let aV = aQ
895+ fromBase58String(aV)
858896 }
859- else if ($isInstanceOf(bT, "Unit"))
897+ else if ($isInstanceOf(aQ, "Unit"))
860898 then unit
861899 else throw("Match error")
862900 }
863901
864902
865-func gg () = {
866- let bT = getString(V())
867- if ($isInstanceOf(bT, "String"))
903+func gp (fb) = {
904+ let aQ = gn()
905+ if ($isInstanceOf(aQ, "ByteVector"))
868906 then {
869- let gf = bT
870- fromBase58String(gf)
907+ let gq = aQ
908+ (fb.callerPublicKey == gq)
871909 }
872- else if ($isInstanceOf(bT, "Unit"))
873- then unit
910+ else if ($isInstanceOf(aQ, "Unit"))
911+ then (fb.caller == this)
874912 else throw("Match error")
875913 }
876914
877915
878-func gh (eS) = {
879- let bT = ge()
880- if ($isInstanceOf(bT, "ByteVector"))
916+func gr (fb) = {
917+ let gs = throw("Permission denied")
918+ let aQ = gn()
919+ if ($isInstanceOf(aQ, "ByteVector"))
881920 then {
882- let gi = bT
883- (eS.callerPublicKey == gi)
921+ let gq = aQ
922+ if ((fb.callerPublicKey == gq))
923+ then true
924+ else gs
884925 }
885- else if ($isInstanceOf(bT, "Unit"))
886- then (eS.caller == this)
926+ else if ($isInstanceOf(aQ, "Unit"))
927+ then if ((fb.caller == this))
928+ then true
929+ else gs
887930 else throw("Match error")
888931 }
889932
890933
891-func gj (eS) = {
892- let gk = throw("Permission denied")
893- let bT = ge()
894- if ($isInstanceOf(bT, "ByteVector"))
895- then {
896- let gi = bT
897- if ((eS.callerPublicKey == gi))
898- then true
899- else gk
900- }
901- else if ($isInstanceOf(bT, "Unit"))
902- then if ((eS.caller == this))
903- then true
904- else gk
905- else throw("Match error")
906- }
907-
908-
909-@Callable(eS)
910-func rebalance () = (cA(aM(this, ae())) ++ cA(aM(this, af())))
934+@Callable(fb)
935+func rebalance () = (cI(aW(this, ae())) ++ cI(aW(this, af())))
911936
912937
913938
914-@Callable(eS)
915-func calculateAmountOutForSwapREADONLY (gl,gm,gn) = {
916- let go = if ((gm == false))
939+@Callable(fb)
940+func calculateAmountOutForSwapREADONLY (gt,gu,gv) = {
941+ let gw = if ((gu == false))
917942 then {
918- let gp = aM(this, af())
919- let gq = aM(this, ae())
920- $Tuple2(gp, gq)
943+ let gx = aW(this, af())
944+ let gy = aW(this, ae())
945+ $Tuple2(gx, gy)
921946 }
922947 else {
923- let gp = aM(this, ae())
924- let gq = aM(this, af())
925- $Tuple2(gp, gq)
948+ let gx = aW(this, ae())
949+ let gy = aW(this, af())
950+ $Tuple2(gx, gy)
926951 }
927- let gp = go._1
928- let gq = go._2
929- let gr = bJ(gq)
930- let gs = bJ(gp)
931- let gt = fraction(gs, gl, (gr + gl))
932- let gu = (toBigInt(gr) * toBigInt(gs))
933- let gv = (((toBigInt(bJ(gq)) + toBigInt(gl)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
934- let gw = if ((gv >= gu))
952+ let gx = gw._1
953+ let gy = gw._2
954+ let gz = bT(gy)
955+ let gA = bT(gx)
956+ let gB = fraction(gA, gt, (gz + gt))
957+ let gC = (toBigInt(gz) * toBigInt(gA))
958+ let gD = (((toBigInt(bT(gy)) + toBigInt(gt)) + toBigInt(gv)) * (toBigInt(bT(gx)) - toBigInt(gB)))
959+ let gE = if ((gD >= gC))
935960 then true
936961 else throw("new K is fewer error")
937- if ((gw == gw))
938- then $Tuple2(nil, gt)
962+ if ((gE == gE))
963+ then $Tuple2(nil, gB)
939964 else throw("Strict value is not equal to itself.")
940965 }
941966
942967
943968
944-@Callable(eS)
945-func calculateAmountOutForSwapAndSendTokens (gl,gm,gx,gy,gn) = {
946- let gz = {
947- let aW = invoke(aT, "getSwapContractREADONLY", nil, nil)
948- if ($isInstanceOf(aW, "String"))
949- then aW
950- else throw(($getType(aW) + " couldn't be cast to String"))
969+@Callable(fb)
970+func calculateAmountOutForSwapAndSendTokens (gt,gu,gF,gG,gv) = {
971+ let gH = {
972+ let bg = invoke(bd, "getSwapContractREADONLY", nil, nil)
973+ if ($isInstanceOf(bg, "String"))
974+ then bg
975+ else throw(($getType(bg) + " couldn't be cast to String"))
951976 }
952- let fM = [if ((value(eS.payments[0]).amount >= gl))
977+ let fV = [if ((value(fb.payments[0]).amount >= gt))
953978 then true
954- else aQ("Wrong amount"), if ((eS.caller == addressFromStringValue(gz)))
979+ else ba("Wrong amount"), if ((fb.caller == addressFromStringValue(gH)))
955980 then true
956- else aQ("Permission denied")]
957- if ((fM == fM))
981+ else ba("Permission denied")]
982+ if ((fV == fV))
958983 then {
959- let eT = value(eS.payments[0])
960- let gq = bf(eT.assetId)
961- let gp = if ((gm == false))
962- then aM(this, af())
963- else aM(this, ae())
964- let gr = (bJ(gq) - value(eS.payments[0]).amount)
965- let gs = bJ(gp)
966- let gt = fraction(gs, gl, (gr + gl))
967- let gu = (toBigInt(gr) * toBigInt(gs))
968- let gv = ((toBigInt(bJ(gq)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
969- let gw = if ((gv >= gu))
984+ let fc = value(fb.payments[0])
985+ let gy = bp(fc.assetId)
986+ let gx = if ((gu == false))
987+ then aW(this, af())
988+ else aW(this, ae())
989+ let gz = (bT(gy) - value(fb.payments[0]).amount)
990+ let gA = bT(gx)
991+ let gB = fraction(gA, gt, (gz + gt))
992+ let gC = (toBigInt(gz) * toBigInt(gA))
993+ let gD = ((toBigInt(bT(gy)) + toBigInt(gv)) * (toBigInt(bT(gx)) - toBigInt(gB)))
994+ let gE = if ((gD >= gC))
970995 then true
971996 else throw("new K is fewer error")
972- if ((gw == gw))
997+ if ((gE == gE))
973998 then {
974- let gA = if ((gt >= gx))
999+ let gI = if ((gB >= gF))
9751000 then true
9761001 else throw("Exchange result is fewer coins than expected")
977- if ((gA == gA))
1002+ if ((gI == gI))
9781003 then {
979- let gB = cA(gq)
980- if ((gB == gB))
1004+ let gJ = cI(gy)
1005+ if ((gJ == gJ))
9811006 then {
982- let gC = cH(gp, gt)
983- if ((gC == gC))
984- then $Tuple2(((gC ++ gB) ++ [ScriptTransfer(addressFromStringValue(gy), gt, bd(gp))]), gt)
1007+ let gK = cP(gx, gB)
1008+ if ((gK == gK))
1009+ then $Tuple2(((gK ++ gJ) ++ [ScriptTransfer(addressFromStringValue(gG), gB, bn(gx))]), gB)
9851010 else throw("Strict value is not equal to itself.")
9861011 }
9871012 else throw("Strict value is not equal to itself.")
9881013 }
9891014 else throw("Strict value is not equal to itself.")
9901015 }
9911016 else throw("Strict value is not equal to itself.")
9921017 }
9931018 else throw("Strict value is not equal to itself.")
9941019 }
9951020
9961021
9971022
998-@Callable(eS)
999-func setManager (gD) = {
1000- let gE = gj(eS)
1001- if ((gE == gE))
1002- then {
1003- let gF = fromBase58String(gD)
1004- if ((gF == gF))
1005- then [StringEntry(V(), gD)]
1006- else throw("Strict value is not equal to itself.")
1007- }
1008- else throw("Strict value is not equal to itself.")
1009- }
1010-
1011-
1012-
1013-@Callable(eS)
1014-func confirmManager () = {
1015- let gG = gg()
1016- let gH = if (isDefined(gG))
1017- then true
1018- else throw("No pending manager")
1019- if ((gH == gH))
1020- then {
1021- let gI = if ((eS.callerPublicKey == value(gG)))
1022- then true
1023- else throw("You are not pending manager")
1024- if ((gI == gI))
1025- then [StringEntry(U(), toBase58String(value(gG))), DeleteEntry(V())]
1026- else throw("Strict value is not equal to itself.")
1027- }
1028- else throw("Strict value is not equal to itself.")
1029- }
1030-
1031-
1032-
1033-@Callable(eS)
1034-func put (dG,gJ) = if ((0 > dG))
1023+@Callable(fb)
1024+func put (dO,gL) = if ((0 > dO))
10351025 then throw("Invalid slippageTolerance passed")
10361026 else {
1037- let eY = eV(eS, dG, true)
1038- let ei = eY._2
1039- let dn = eY._7
1040- let dE = eY._9
1041- let ej = eY._10
1042- let ek = eY._11
1043- let gK = eY._12
1044- let gL = eY._13
1045- let eW = toBigInt(value(eS.payments[0]).amount)
1046- let eX = toBigInt(value(eS.payments[1]).amount)
1047- let ez = es(eW, eX, toBigInt(0))
1048- if ((ez == ez))
1027+ let fh = fe(fb, dO, true)
1028+ let eq = fh._2
1029+ let dv = fh._7
1030+ let dM = fh._9
1031+ let er = fh._10
1032+ let es = fh._11
1033+ let gM = fh._12
1034+ let gN = fh._13
1035+ let ff = toBigInt(value(fb.payments[0]).amount)
1036+ let fg = toBigInt(value(fb.payments[1]).amount)
1037+ let eH = eA(ff, fg, toBigInt(0))
1038+ if ((eH == eH))
10491039 then {
1050- let fa = invoke(aT, "emit", [ei], nil)
1051- if ((fa == fa))
1040+ let fj = invoke(bd, "emit", [eq], nil)
1041+ if ((fj == fj))
10521042 then {
1053- let fb = {
1054- let bT = fa
1055- if ($isInstanceOf(bT, "Address"))
1043+ let fk = {
1044+ let aQ = fj
1045+ if ($isInstanceOf(aQ, "Address"))
10561046 then {
1057- let fc = bT
1058- invoke(fc, "emit", [ei], nil)
1047+ let fl = aQ
1048+ invoke(fl, "emit", [eq], nil)
10591049 }
10601050 else unit
10611051 }
1062- if ((fb == fb))
1052+ if ((fk == fk))
10631053 then {
1064- let gM = if ((ej > 0))
1065- then invoke(bt, "put", nil, [AttachedPayment(gK, ej)])
1054+ let gO = if ((er > 0))
1055+ then invoke(bD, "put", nil, [AttachedPayment(gM, er)])
10661056 else nil
1067- if ((gM == gM))
1057+ if ((gO == gO))
10681058 then {
1069- let gN = if ((ek > 0))
1070- then invoke(bt, "put", nil, [AttachedPayment(gL, ek)])
1059+ let gP = if ((es > 0))
1060+ then invoke(bD, "put", nil, [AttachedPayment(gN, es)])
10711061 else nil
1072- if ((gN == gN))
1062+ if ((gP == gP))
10731063 then {
1074- let gO = if (gJ)
1064+ let gQ = if (gL)
10751065 then {
1076- let gP = invoke(bs, "stake", nil, [AttachedPayment(dn, ei)])
1077- if ((gP == gP))
1066+ let gR = invoke(bC, "stake", nil, [AttachedPayment(dv, eq)])
1067+ if ((gR == gR))
10781068 then nil
10791069 else throw("Strict value is not equal to itself.")
10801070 }
1081- else [ScriptTransfer(eS.caller, ei, dn)]
1082- let gQ = eA(0, 0, 0)
1083- if ((gQ == gQ))
1071+ else [ScriptTransfer(fb.caller, eq, dv)]
1072+ let gS = eI(0, 0, 0)
1073+ if ((gS == gS))
10841074 then {
1085- let er = gQ._2
1086- let gR = gQ._1
1087- let gS = eE(ez, er)
1088- if ((gS == gS))
1075+ let ez = gS._2
1076+ let gT = gS._1
1077+ let gU = eN(eH, ez)
1078+ if ((gU == gU))
10891079 then {
1090- let gT = invoke(this, "rebalance", nil, nil)
1091- if ((gT == gT))
1092- then ((dE ++ gO) ++ gR)
1080+ let gV = invoke(this, "rebalance", nil, nil)
1081+ if ((gV == gV))
1082+ then ((dM ++ gQ) ++ gT)
10931083 else throw("Strict value is not equal to itself.")
10941084 }
10951085 else throw("Strict value is not equal to itself.")
10961086 }
10971087 else throw("Strict value is not equal to itself.")
10981088 }
10991089 else throw("Strict value is not equal to itself.")
11001090 }
11011091 else throw("Strict value is not equal to itself.")
11021092 }
11031093 else throw("Strict value is not equal to itself.")
11041094 }
11051095 else throw("Strict value is not equal to itself.")
11061096 }
11071097 else throw("Strict value is not equal to itself.")
11081098 }
11091099
11101100
11111101
1112-@Callable(eS)
1113-func putForFree (gU) = if ((0 > gU))
1102+@Callable(fb)
1103+func putForFree (gW) = if ((0 > gW))
11141104 then throw("Invalid value passed")
11151105 else {
1116- let eY = eV(eS, gU, false)
1117- let dE = eY._9
1118- let eW = toBigInt(value(eS.payments[0]).amount)
1119- let eX = toBigInt(value(eS.payments[1]).amount)
1120- let ez = es(eW, eX, toBigInt(0))
1121- if ((ez == ez))
1106+ let fh = fe(fb, gW, false)
1107+ let dM = fh._9
1108+ let ff = toBigInt(value(fb.payments[0]).amount)
1109+ let fg = toBigInt(value(fb.payments[1]).amount)
1110+ let eH = eA(ff, fg, toBigInt(0))
1111+ if ((eH == eH))
11221112 then {
1123- let gV = eA(0, 0, 0)
1124- let gR = gV._1
1125- let er = gV._2
1126- let gS = eE(ez, er)
1127- if ((gS == gS))
1128- then (dE ++ gR)
1113+ let gX = eI(0, 0, 0)
1114+ let gT = gX._1
1115+ let ez = gX._2
1116+ let gU = eN(eH, ez)
1117+ if ((gU == gU))
1118+ then (dM ++ gT)
11291119 else throw("Strict value is not equal to itself.")
11301120 }
11311121 else throw("Strict value is not equal to itself.")
11321122 }
11331123
11341124
11351125
1136-@Callable(eS)
1137-func putOneTkn (gW,gX) = {
1138- let gY = {
1139- let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1140- if ($isInstanceOf(aW, "Boolean"))
1141- then aW
1142- else throw(($getType(aW) + " couldn't be cast to Boolean"))
1126+@Callable(fb)
1127+func putOneTkn (gY,gZ) = {
1128+ let ha = {
1129+ let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1130+ if ($isInstanceOf(bg, "Boolean"))
1131+ then bg
1132+ else throw(($getType(bg) + " couldn't be cast to Boolean"))
11431133 }
1144- let gZ = if (if (if (aY())
1134+ let hb = if (if (if (bi())
11451135 then true
1146- else (bl == l))
1136+ else (bv == l))
11471137 then true
1148- else (bl == n))
1138+ else (bv == n))
11491139 then true
1150- else gY
1151- let fM = [if (if (!(gZ))
1140+ else ha
1141+ let fV = [if (if (!(hb))
11521142 then true
1153- else gh(eS))
1143+ else gp(fb))
11541144 then true
1155- else aQ("put operation is blocked by admin"), if ((size(eS.payments) == 1))
1145+ else ba("put operation is blocked by admin"), if ((size(fb.payments) == 1))
11561146 then true
1157- else aQ("exactly 1 payment are expected")]
1158- if ((fM == fM))
1147+ else ba("exactly 1 payment are expected")]
1148+ if ((fV == fV))
11591149 then {
1160- let ha = eS.payments[0]
1161- let fh = ha.assetId
1162- let fg = ha.amount
1163- let ez = if ((fh == bn))
1164- then es(toBigInt(fg), toBigInt(0), toBigInt(0))
1165- else if ((fh == bo))
1166- then es(toBigInt(0), toBigInt(fg), toBigInt(0))
1167- else aQ("payment asset is not supported")
1168- if ((ez == ez))
1150+ let hc = fb.payments[0]
1151+ let fq = hc.assetId
1152+ let fp = hc.amount
1153+ let eH = if ((fq == bx))
1154+ then eA(toBigInt(fp), toBigInt(0), toBigInt(0))
1155+ else if ((fq == by))
1156+ then eA(toBigInt(0), toBigInt(fp), toBigInt(0))
1157+ else ba("payment asset is not supported")
1158+ if ((eH == eH))
11691159 then {
1170- let ab = eS.caller
1171- let ac = eS.transactionId
1172- let hb = ff(fg, fh, ab, ac)
1173- if ((hb == hb))
1160+ let ab = fb.caller
1161+ let ac = fb.transactionId
1162+ let hd = fo(fp, fq, ab, ac)
1163+ if ((hd == hd))
11741164 then {
1175- let fl = hb._5
1176- let hc = hb._4
1177- let fe = hb._3
1178- let el = hb._2
1179- let hd = hb._1
1180- let he = if (if ((gW > 0))
1181- then (gW > hd)
1165+ let fu = hd._5
1166+ let he = hd._4
1167+ let fn = hd._3
1168+ let et = hd._2
1169+ let hf = hd._1
1170+ let hg = if (if ((gY > 0))
1171+ then (gY > hf)
11821172 else false)
1183- then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1184- else hd
1185- let fa = eZ(he)
1186- if ((fa == fa))
1173+ then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
1174+ else hf
1175+ let fj = fi(hg)
1176+ if ((fj == fj))
11871177 then {
1188- let gO = if (gX)
1178+ let gQ = if (gZ)
11891179 then {
1190- let hf = invoke(bs, "stake", nil, [AttachedPayment(bm, he)])
1191- if ((hf == hf))
1180+ let hh = invoke(bC, "stake", nil, [AttachedPayment(bw, hg)])
1181+ if ((hh == hh))
11921182 then nil
11931183 else throw("Strict value is not equal to itself.")
11941184 }
1195- else [ScriptTransfer(eS.caller, he, bm)]
1196- let hg = if ((fe > 0))
1197- then [ScriptTransfer(aU, fe, fh)]
1185+ else [ScriptTransfer(fb.caller, hg, bw)]
1186+ let hi = if ((fn > 0))
1187+ then [ScriptTransfer(be, fn, fq)]
11981188 else nil
1199- let hh = if ((this == aU))
1189+ let hj = if ((this == be))
12001190 then $Tuple2(0, 0)
1201- else if (fl)
1202- then $Tuple2(-(fe), 0)
1203- else $Tuple2(0, -(fe))
1204- let eB = hh._1
1205- let eC = hh._2
1206- let hi = eA(eB, eC, 0)
1207- let gR = hi._1
1208- let er = hi._2
1209- let eL = value(getString(aj))
1210- let gS = eE(ez, er)
1211- if ((gS == gS))
1191+ else if (fu)
1192+ then $Tuple2(-(fn), 0)
1193+ else $Tuple2(0, -(fn))
1194+ let eJ = hj._1
1195+ let eK = hj._2
1196+ let hk = eI(eJ, eK, 0)
1197+ let gT = hk._1
1198+ let ez = hk._2
1199+ let eU = value(getString(aj))
1200+ let gU = eN(eH, ez)
1201+ if ((gU == gU))
12121202 then {
1213- let gT = invoke(this, "rebalance", nil, nil)
1214- if ((gT == gT))
1215- then $Tuple2((((el ++ gO) ++ hg) ++ gR), he)
1203+ let gV = invoke(this, "rebalance", nil, nil)
1204+ if ((gV == gV))
1205+ then $Tuple2((((et ++ gQ) ++ hi) ++ gT), hg)
12161206 else throw("Strict value is not equal to itself.")
12171207 }
12181208 else throw("Strict value is not equal to itself.")
12191209 }
12201210 else throw("Strict value is not equal to itself.")
12211211 }
12221212 else throw("Strict value is not equal to itself.")
12231213 }
12241214 else throw("Strict value is not equal to itself.")
12251215 }
12261216 else throw("Strict value is not equal to itself.")
12271217 }
12281218
12291219
12301220
1231-@Callable(eS)
1232-func putOneTknREADONLY (fh,fg) = {
1233- let hj = ff(fg, bd(fh), unit, unit)
1234- let hd = hj._1
1235- let el = hj._2
1236- let fe = hj._3
1237- let hc = hj._4
1238- let fl = hj._5
1239- $Tuple2(nil, $Tuple3(hd, fe, hc))
1221+@Callable(fb)
1222+func putOneTknREADONLY (fq,fp) = {
1223+ let hl = fo(fp, bn(fq), unit, unit)
1224+ let hf = hl._1
1225+ let et = hl._2
1226+ let fn = hl._3
1227+ let he = hl._4
1228+ let fu = hl._5
1229+ $Tuple2(nil, $Tuple3(hf, fn, he))
12401230 }
12411231
12421232
12431233
1244-@Callable(eS)
1245-func getOneTkn (hk,gW) = {
1246- let gY = {
1247- let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1248- if ($isInstanceOf(aW, "Boolean"))
1249- then aW
1250- else throw(($getType(aW) + " couldn't be cast to Boolean"))
1234+@Callable(fb)
1235+func getOneTkn (hm,gY) = {
1236+ let ha = {
1237+ let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1238+ if ($isInstanceOf(bg, "Boolean"))
1239+ then bg
1240+ else throw(($getType(bg) + " couldn't be cast to Boolean"))
12511241 }
1252- let hl = if (if (aY())
1242+ let hn = if (if (bi())
12531243 then true
1254- else (bl == n))
1244+ else (bv == n))
12551245 then true
1256- else gY
1257- let fM = [if (if (!(hl))
1246+ else ha
1247+ let fV = [if (if (!(hn))
12581248 then true
1259- else gh(eS))
1249+ else gp(fb))
12601250 then true
1261- else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 1))
1251+ else ba("get operation is blocked by admin"), if ((size(fb.payments) == 1))
12621252 then true
1263- else aQ("exactly 1 payment are expected")]
1264- if ((fM == fM))
1253+ else ba("exactly 1 payment are expected")]
1254+ if ((fV == fV))
12651255 then {
1266- let fL = bd(hk)
1267- let ha = eS.payments[0]
1268- let fh = ha.assetId
1269- let ft = ha.amount
1270- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1271- if ((ez == ez))
1256+ let fU = bn(hm)
1257+ let hc = fb.payments[0]
1258+ let fq = hc.assetId
1259+ let fC = hc.amount
1260+ let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1261+ if ((eH == eH))
12721262 then {
1273- let ab = eS.caller
1274- let ac = eS.transactionId
1275- let hm = fK(fL, ft, fh, ab, ac)
1276- if ((hm == hm))
1263+ let ab = fb.caller
1264+ let ac = fb.transactionId
1265+ let ho = fT(fU, fC, fq, ab, ac)
1266+ if ((ho == ho))
12771267 then {
1278- let fN = hm._5
1279- let hc = hm._4
1280- let fe = hm._3
1281- let el = hm._2
1282- let hn = hm._1
1283- let bW = if (if ((gW > 0))
1284- then (gW > hn)
1268+ let fW = ho._5
1269+ let he = ho._4
1270+ let fn = ho._3
1271+ let et = ho._2
1272+ let hp = ho._1
1273+ let cf = if (if ((gY > 0))
1274+ then (gY > hp)
12851275 else false)
1286- then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1287- else hn
1288- let ho = invoke(aT, "burn", [ft], [AttachedPayment(fh, ft)])
1289- if ((ho == ho))
1276+ then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
1277+ else hp
1278+ let hq = invoke(bd, "burn", [fC], [AttachedPayment(fq, fC)])
1279+ if ((hq == hq))
12901280 then {
1291- let gC = cH(hk, (bW + max([0, fe])))
1292- let hp = [ScriptTransfer(ab, bW, fL)]
1293- let hg = if ((fe > 0))
1294- then [ScriptTransfer(aU, fe, fL)]
1281+ let gK = cP(hm, (cf + max([0, fn])))
1282+ let hr = [ScriptTransfer(ab, cf, fU)]
1283+ let hi = if ((fn > 0))
1284+ then [ScriptTransfer(be, fn, fU)]
12951285 else nil
1296- let hq = {
1297- let hr = if ((this == aU))
1286+ let hs = {
1287+ let ht = if ((this == be))
12981288 then 0
1299- else fe
1300- if (fN)
1301- then $Tuple2(-((bW + hr)), 0)
1302- else $Tuple2(0, -((bW + hr)))
1289+ else fn
1290+ if (fW)
1291+ then $Tuple2(-((cf + ht)), 0)
1292+ else $Tuple2(0, -((cf + ht)))
13031293 }
1304- let eB = hq._1
1305- let eC = hq._2
1306- let hs = eA(eB, eC, 0)
1307- let gR = hs._1
1308- let er = hs._2
1309- let gS = eE(ez, er)
1310- if ((gS == gS))
1311- then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
1294+ let eJ = hs._1
1295+ let eK = hs._2
1296+ let hu = eI(eJ, eK, 0)
1297+ let gT = hu._1
1298+ let ez = hu._2
1299+ let gU = eN(eH, ez)
1300+ if ((gU == gU))
1301+ then $Tuple2(((((et ++ gK) ++ hr) ++ hi) ++ gT), cf)
13121302 else throw("Strict value is not equal to itself.")
13131303 }
13141304 else throw("Strict value is not equal to itself.")
13151305 }
13161306 else throw("Strict value is not equal to itself.")
13171307 }
13181308 else throw("Strict value is not equal to itself.")
13191309 }
13201310 else throw("Strict value is not equal to itself.")
13211311 }
13221312
13231313
13241314
1325-@Callable(eS)
1326-func getOneTknREADONLY (fL,ft) = {
1327- let ht = fK(bd(fL), ft, bm, unit, unit)
1328- let hn = ht._1
1329- let el = ht._2
1330- let fe = ht._3
1331- let hc = ht._4
1332- let fN = ht._5
1333- $Tuple2(nil, $Tuple3(hn, fe, hc))
1315+@Callable(fb)
1316+func getOneTknREADONLY (fU,fC) = {
1317+ let hv = fT(bn(fU), fC, bw, unit, unit)
1318+ let hp = hv._1
1319+ let et = hv._2
1320+ let fn = hv._3
1321+ let he = hv._4
1322+ let fW = hv._5
1323+ $Tuple2(nil, $Tuple3(hp, fn, he))
13341324 }
13351325
13361326
13371327
1338-@Callable(eS)
1339-func unstakeAndGetOneTkn (hu,hk,gW) = {
1340- let gY = {
1341- let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1342- if ($isInstanceOf(aW, "Boolean"))
1343- then aW
1344- else throw(($getType(aW) + " couldn't be cast to Boolean"))
1328+@Callable(fb)
1329+func unstakeAndGetOneTkn (hw,hm,gY) = {
1330+ let ha = {
1331+ let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1332+ if ($isInstanceOf(bg, "Boolean"))
1333+ then bg
1334+ else throw(($getType(bg) + " couldn't be cast to Boolean"))
13451335 }
1346- let hl = if (if (aY())
1336+ let hn = if (if (bi())
13471337 then true
1348- else (bl == n))
1338+ else (bv == n))
13491339 then true
1350- else gY
1351- let fM = [if (if (!(hl))
1340+ else ha
1341+ let fV = [if (if (!(hn))
13521342 then true
1353- else gh(eS))
1343+ else gp(fb))
13541344 then true
1355- else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 0))
1345+ else ba("get operation is blocked by admin"), if ((size(fb.payments) == 0))
13561346 then true
1357- else aQ("no payments are expected")]
1358- if ((fM == fM))
1347+ else ba("no payments are expected")]
1348+ if ((fV == fV))
13591349 then {
1360- let fL = bd(hk)
1361- let ab = eS.caller
1362- let ac = eS.transactionId
1363- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1364- if ((ez == ez))
1350+ let fU = bn(hm)
1351+ let ab = fb.caller
1352+ let ac = fb.transactionId
1353+ let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1354+ if ((eH == eH))
13651355 then {
1366- let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1367- if ((hv == hv))
1356+ let hx = invoke(bC, "unstake", [toBase58String(bw), hw], nil)
1357+ if ((hx == hx))
13681358 then {
1369- let hw = fK(fL, hu, bm, ab, ac)
1370- if ((hw == hw))
1359+ let hy = fT(fU, hw, bw, ab, ac)
1360+ if ((hy == hy))
13711361 then {
1372- let fN = hw._5
1373- let hc = hw._4
1374- let fe = hw._3
1375- let el = hw._2
1376- let hn = hw._1
1377- let bW = if (if ((gW > 0))
1378- then (gW > hn)
1362+ let fW = hy._5
1363+ let he = hy._4
1364+ let fn = hy._3
1365+ let et = hy._2
1366+ let hp = hy._1
1367+ let cf = if (if ((gY > 0))
1368+ then (gY > hp)
13791369 else false)
1380- then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1381- else hn
1382- let ho = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1383- if ((ho == ho))
1370+ then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
1371+ else hp
1372+ let hq = invoke(bd, "burn", [hw], [AttachedPayment(bw, hw)])
1373+ if ((hq == hq))
13841374 then {
1385- let gC = cH(hk, (bW + max([0, fe])))
1386- let hp = [ScriptTransfer(eS.caller, bW, fL)]
1387- let hg = if ((fe > 0))
1388- then [ScriptTransfer(aU, fe, fL)]
1375+ let gK = cP(hm, (cf + max([0, fn])))
1376+ let hr = [ScriptTransfer(fb.caller, cf, fU)]
1377+ let hi = if ((fn > 0))
1378+ then [ScriptTransfer(be, fn, fU)]
13891379 else nil
1390- let hx = {
1391- let hr = if ((this == aU))
1380+ let hz = {
1381+ let ht = if ((this == be))
13921382 then 0
1393- else fe
1394- if (fN)
1395- then $Tuple2(-((bW + hr)), 0)
1396- else $Tuple2(0, -((bW + hr)))
1383+ else fn
1384+ if (fW)
1385+ then $Tuple2(-((cf + ht)), 0)
1386+ else $Tuple2(0, -((cf + ht)))
13971387 }
1398- let eB = hx._1
1399- let eC = hx._2
1400- let hy = eA(eB, eC, 0)
1401- let gR = hy._1
1402- let er = hy._2
1403- let gS = eE(ez, er)
1404- if ((gS == gS))
1405- then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
1388+ let eJ = hz._1
1389+ let eK = hz._2
1390+ let hA = eI(eJ, eK, 0)
1391+ let gT = hA._1
1392+ let ez = hA._2
1393+ let gU = eN(eH, ez)
1394+ if ((gU == gU))
1395+ then $Tuple2(((((et ++ gK) ++ hr) ++ hi) ++ gT), cf)
14061396 else throw("Strict value is not equal to itself.")
14071397 }
14081398 else throw("Strict value is not equal to itself.")
14091399 }
14101400 else throw("Strict value is not equal to itself.")
14111401 }
14121402 else throw("Strict value is not equal to itself.")
14131403 }
14141404 else throw("Strict value is not equal to itself.")
14151405 }
14161406 else throw("Strict value is not equal to itself.")
14171407 }
14181408
14191409
14201410
1421-@Callable(eS)
1411+@Callable(fb)
14221412 func get () = {
1423- let dW = eR(eS)
1424- let dC = dW._1
1425- let dD = dW._2
1426- let eU = dW._3
1427- let dl = dW._4
1428- let dE = dW._5
1429- let gC = cM(dC, dD)
1430- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1431- if ((ez == ez))
1413+ let ee = fa(fb)
1414+ let dK = ee._1
1415+ let dL = ee._2
1416+ let fd = ee._3
1417+ let dt = ee._4
1418+ let dM = ee._5
1419+ let gK = cU(dK, dL)
1420+ let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1421+ if ((eH == eH))
14321422 then {
1433- let hz = invoke(aT, "burn", [eU], [AttachedPayment(dl, eU)])
1434- if ((hz == hz))
1423+ let hB = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1424+ if ((hB == hB))
14351425 then {
1436- let hA = eA(-(dC), -(dD), 0)
1437- let gR = hA._1
1438- let er = hA._2
1439- let gS = eE(ez, er)
1440- if ((gS == gS))
1441- then ((gC ++ dE) ++ gR)
1426+ let hC = eI(-(dK), -(dL), 0)
1427+ let gT = hC._1
1428+ let ez = hC._2
1429+ let gU = eN(eH, ez)
1430+ if ((gU == gU))
1431+ then ((gK ++ dM) ++ gT)
14421432 else throw("Strict value is not equal to itself.")
14431433 }
14441434 else throw("Strict value is not equal to itself.")
14451435 }
14461436 else throw("Strict value is not equal to itself.")
14471437 }
14481438
14491439
14501440
1451-@Callable(eS)
1452-func getNoLess (hB,hC) = {
1453- let dW = eR(eS)
1454- let dC = dW._1
1455- let dD = dW._2
1456- let eU = dW._3
1457- let dl = dW._4
1458- let dE = dW._5
1459- if ((hB > dC))
1460- then throw(((("noLessThenAmtAsset failed: " + toString(dC)) + " < ") + toString(hB)))
1461- else if ((hC > dD))
1462- then throw(((("noLessThenPriceAsset failed: " + toString(dD)) + " < ") + toString(hC)))
1441+@Callable(fb)
1442+func getNoLess (hD,hE) = {
1443+ let ee = fa(fb)
1444+ let dK = ee._1
1445+ let dL = ee._2
1446+ let fd = ee._3
1447+ let dt = ee._4
1448+ let dM = ee._5
1449+ if ((hD > dK))
1450+ then throw(((("noLessThenAmtAsset failed: " + toString(dK)) + " < ") + toString(hD)))
1451+ else if ((hE > dL))
1452+ then throw(((("noLessThenPriceAsset failed: " + toString(dL)) + " < ") + toString(hE)))
14631453 else {
1464- let gC = cM(dC, dD)
1465- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1466- if ((ez == ez))
1454+ let gK = cU(dK, dL)
1455+ let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1456+ if ((eH == eH))
14671457 then {
1468- let hz = invoke(aT, "burn", [eU], [AttachedPayment(dl, eU)])
1469- if ((hz == hz))
1458+ let hB = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1459+ if ((hB == hB))
14701460 then {
1471- let hD = eA(-(dC), -(dD), 0)
1472- let gR = hD._1
1473- let er = hD._2
1474- let gS = eE(ez, er)
1475- if ((gS == gS))
1476- then ((gC ++ dE) ++ gR)
1461+ let hF = eI(-(dK), -(dL), 0)
1462+ let gT = hF._1
1463+ let ez = hF._2
1464+ let gU = eN(eH, ez)
1465+ if ((gU == gU))
1466+ then ((gK ++ dM) ++ gT)
14771467 else throw("Strict value is not equal to itself.")
14781468 }
14791469 else throw("Strict value is not equal to itself.")
14801470 }
14811471 else throw("Strict value is not equal to itself.")
14821472 }
14831473 }
14841474
14851475
14861476
1487-@Callable(eS)
1488-func unstakeAndGet (bW) = {
1489- let hE = if ((size(eS.payments) != 0))
1477+@Callable(fb)
1478+func unstakeAndGet (cf) = {
1479+ let hG = if ((size(fb.payments) != 0))
14901480 then throw("No payments are expected")
14911481 else true
1492- if ((hE == hE))
1482+ if ((hG == hG))
14931483 then {
1494- let da = ba()
1495- let dn = fromBase58String(da[q])
1496- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1497- if ((ez == ez))
1484+ let di = bk()
1485+ let dv = fromBase58String(di[q])
1486+ let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1487+ if ((eH == eH))
14981488 then {
1499- let hv = invoke(bs, "unstake", [toBase58String(dn), bW], nil)
1500- if ((hv == hv))
1489+ let hx = invoke(bC, "unstake", [toBase58String(dv), cf], nil)
1490+ if ((hx == hx))
15011491 then {
1502- let dW = dj(toBase58String(eS.transactionId), toBase58String(dn), bW, eS.caller)
1503- let dC = dW._1
1504- let dD = dW._2
1505- let dq = parseIntValue(dW._9)
1506- let dE = dW._10
1507- let gC = cM(dC, dD)
1508- let hF = if (if (aY())
1492+ let ee = dr(toBase58String(fb.transactionId), toBase58String(dv), cf, fb.caller)
1493+ let dK = ee._1
1494+ let dL = ee._2
1495+ let dy = parseIntValue(ee._9)
1496+ let dM = ee._10
1497+ let gK = cU(dK, dL)
1498+ let hH = if (if (bi())
15091499 then true
1510- else (dq == n))
1511- then throw(("Get operation is blocked by admin. Status = " + toString(dq)))
1500+ else (dy == n))
1501+ then throw(("Get operation is blocked by admin. Status = " + toString(dy)))
15121502 else true
1513- if ((hF == hF))
1503+ if ((hH == hH))
15141504 then {
1515- let hz = invoke(aT, "burn", [bW], [AttachedPayment(dn, bW)])
1516- if ((hz == hz))
1505+ let hB = invoke(bd, "burn", [cf], [AttachedPayment(dv, cf)])
1506+ if ((hB == hB))
15171507 then {
1518- let hG = eA(-(dC), -(dD), 0)
1519- let gR = hG._1
1520- let er = hG._2
1521- let gS = eE(ez, er)
1522- if ((gS == gS))
1523- then ((gC ++ dE) ++ gR)
1508+ let hI = eI(-(dK), -(dL), 0)
1509+ let gT = hI._1
1510+ let ez = hI._2
1511+ let gU = eN(eH, ez)
1512+ if ((gU == gU))
1513+ then ((gK ++ dM) ++ gT)
15241514 else throw("Strict value is not equal to itself.")
15251515 }
15261516 else throw("Strict value is not equal to itself.")
15271517 }
15281518 else throw("Strict value is not equal to itself.")
15291519 }
15301520 else throw("Strict value is not equal to itself.")
15311521 }
15321522 else throw("Strict value is not equal to itself.")
15331523 }
15341524 else throw("Strict value is not equal to itself.")
15351525 }
15361526
15371527
15381528
1539-@Callable(eS)
1540-func unstakeAndGetNoLess (hu,hH,hC) = {
1541- let hl = if (aY())
1529+@Callable(fb)
1530+func unstakeAndGetNoLess (hw,hJ,hE) = {
1531+ let hn = if (bi())
15421532 then true
1543- else (bl == n)
1544- let fM = [if (!(hl))
1533+ else (bv == n)
1534+ let fV = [if (!(hn))
15451535 then true
1546- else throw("get operation is blocked by admin"), if ((size(eS.payments) == 0))
1536+ else throw("get operation is blocked by admin"), if ((size(fb.payments) == 0))
15471537 then true
15481538 else throw("no payments are expected")]
1549- if ((fM == fM))
1539+ if ((fV == fV))
15501540 then {
1551- let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1552- if ((ez == ez))
1541+ let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
1542+ if ((eH == eH))
15531543 then {
1554- let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1555- if ((hv == hv))
1544+ let hx = invoke(bC, "unstake", [toBase58String(bw), hw], nil)
1545+ if ((hx == hx))
15561546 then {
1557- let dW = dj(toBase58String(eS.transactionId), toBase58String(bm), hu, eS.caller)
1558- let dC = dW._1
1559- let dD = dW._2
1560- let dE = dW._10
1561- let gC = cM(dC, dD)
1562- let hI = [if ((dC >= hH))
1547+ let ee = dr(toBase58String(fb.transactionId), toBase58String(bw), hw, fb.caller)
1548+ let dK = ee._1
1549+ let dL = ee._2
1550+ let dM = ee._10
1551+ let gK = cU(dK, dL)
1552+ let hK = [if ((dK >= hJ))
15631553 then true
1564- else throw(makeString(["amount asset amount to receive is less than ", toString(hH)], "")), if ((dD >= hC))
1554+ else throw(makeString(["amount asset amount to receive is less than ", toString(hJ)], "")), if ((dL >= hE))
15651555 then true
1566- else throw(makeString(["price asset amount to receive is less than ", toString(hC)], ""))]
1567- if ((hI == hI))
1556+ else throw(makeString(["price asset amount to receive is less than ", toString(hE)], ""))]
1557+ if ((hK == hK))
15681558 then {
1569- let hz = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1570- if ((hz == hz))
1559+ let hB = invoke(bd, "burn", [hw], [AttachedPayment(bw, hw)])
1560+ if ((hB == hB))
15711561 then {
1572- let hJ = eA(-(dC), -(dD), 0)
1573- let gR = hJ._1
1574- let er = hJ._2
1575- let gS = eE(ez, er)
1576- if ((gS == gS))
1577- then ((gC ++ dE) ++ gR)
1562+ let hL = eI(-(dK), -(dL), 0)
1563+ let gT = hL._1
1564+ let ez = hL._2
1565+ let gU = eN(eH, ez)
1566+ if ((gU == gU))
1567+ then ((gK ++ dM) ++ gT)
15781568 else throw("Strict value is not equal to itself.")
15791569 }
15801570 else throw("Strict value is not equal to itself.")
15811571 }
15821572 else throw("Strict value is not equal to itself.")
15831573 }
15841574 else throw("Strict value is not equal to itself.")
15851575 }
15861576 else throw("Strict value is not equal to itself.")
15871577 }
15881578 else throw("Strict value is not equal to itself.")
15891579 }
15901580
15911581
15921582
1593-@Callable(eS)
1594-func activate (hK,hL) = if ((toString(eS.caller) != toString(aT)))
1583+@Callable(fb)
1584+func activate (hM,hN) = if ((toString(fb.caller) != toString(bd)))
15951585 then throw("permissions denied")
1596- else $Tuple2([StringEntry(ae(), hK), StringEntry(af(), hL)], "success")
1586+ else $Tuple2([StringEntry(ae(), hM), StringEntry(af(), hN)], "success")
15971587
15981588
15991589
1600-@Callable(eS)
1590+@Callable(fb)
16011591 func refreshKLp () = {
1602- let hM = valueOrElse(getInteger(ak), 0)
1603- let hN = if (((height - hM) >= an))
1592+ let hO = valueOrElse(getInteger(ak), 0)
1593+ let hP = if (((height - hO) >= an))
16041594 then unit
1605- else aQ(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1606- if ((hN == hN))
1595+ else ba(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1596+ if ((hP == hP))
16071597 then {
1608- let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
1609- let hO = eA(0, 0, 0)
1610- let hP = hO._1
1611- let er = hO._2
1612- let eD = if ((eL != er))
1613- then hP
1614- else aQ("nothing to refresh")
1615- $Tuple2(eD, toString(er))
1598+ let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
1599+ let hQ = eI(0, 0, 0)
1600+ let hR = hQ._1
1601+ let ez = hQ._2
1602+ let eL = if ((eU != ez))
1603+ then hR
1604+ else ba("nothing to refresh")
1605+ $Tuple2(eL, toString(ez))
16161606 }
16171607 else throw("Strict value is not equal to itself.")
16181608 }
16191609
16201610
16211611
1622-@Callable(eS)
1623-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ba())
1612+@Callable(fb)
1613+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bk())
16241614
16251615
16261616
1627-@Callable(eS)
1628-func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bJ(ap))
1617+@Callable(fb)
1618+func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bT(ap))
16291619
16301620
16311621
1632-@Callable(eS)
1633-func calcPricesWrapperREADONLY (cU,cV,cZ) = {
1634- let di = cY(cU, cV, cZ)
1635- $Tuple2(nil, [toString(di[0]), toString(di[1]), toString(di[2])])
1622+@Callable(fb)
1623+func calcPricesWrapperREADONLY (dc,dd,dh) = {
1624+ let dq = dg(dc, dd, dh)
1625+ $Tuple2(nil, [toString(dq[0]), toString(dq[1]), toString(dq[2])])
16361626 }
16371627
16381628
16391629
1640-@Callable(eS)
1630+@Callable(fb)
16411631 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16421632
16431633
16441634
1645-@Callable(eS)
1635+@Callable(fb)
16461636 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
16471637
16481638
16491639
1650-@Callable(eS)
1651-func calcPriceBigIntWrapperREADONLY (bN,bO) = $Tuple2(nil, toString(bM(parseBigIntValue(bN), parseBigIntValue(bO))))
1640+@Callable(fb)
1641+func calcPriceBigIntWrapperREADONLY (bX,bY) = $Tuple2(nil, toString(bW(parseBigIntValue(bX), parseBigIntValue(bY))))
16521642
16531643
16541644
1655-@Callable(eS)
1656-func estimatePutOperationWrapperREADONLY (dk,dG,dH,dI,dJ,dK,ab,dL,dM) = $Tuple2(nil, dF(dk, dG, dH, dI, dJ, dK, ab, dL, dM))
1645+@Callable(fb)
1646+func estimatePutOperationWrapperREADONLY (ds,dO,dP,dQ,dR,dS,ab,dT,dU) = $Tuple2(nil, dN(ds, dO, dP, dQ, dR, dS, ab, dT, dU))
16571647
16581648
16591649
1660-@Callable(eS)
1661-func estimateGetOperationWrapperREADONLY (dk,dl,dm,ab) = {
1662- let dW = dj(dk, dl, dm, addressFromStringValue(ab))
1663- $Tuple2(nil, $Tuple10(dW._1, dW._2, dW._3, dW._4, dW._5, dW._6, dW._7, toString(dW._8), dW._9, dW._10))
1650+@Callable(fb)
1651+func estimateGetOperationWrapperREADONLY (ds,dt,du,ab) = {
1652+ let ee = dr(ds, dt, du, addressFromStringValue(ab))
1653+ $Tuple2(nil, $Tuple10(ee._1, ee._2, ee._3, ee._4, ee._5, ee._6, ee._7, toString(ee._8), ee._9, ee._10))
16641654 }
16651655
16661656
16671657
1668-@Callable(eS)
1658+@Callable(fb)
16691659 func statsREADONLY () = {
1670- let da = ba()
1671- let dn = fromBase58String(da[q])
1672- let hQ = da[r]
1673- let hR = da[s]
1674- let dP = da[v]
1675- let dQ = da[w]
1676- let db = parseIntValue(da[t])
1677- let dc = parseIntValue(da[u])
1678- let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1679- let hT = bJ(hQ)
1680- let hU = bJ(hR)
1681- let hV = if ((hS == 0))
1660+ let di = bk()
1661+ let dv = fromBase58String(di[q])
1662+ let hS = di[r]
1663+ let hT = di[s]
1664+ let dX = di[v]
1665+ let dY = di[w]
1666+ let dj = parseIntValue(di[t])
1667+ let dk = parseIntValue(di[u])
1668+ let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1669+ let hV = bT(hS)
1670+ let hW = bT(hT)
1671+ let hX = if ((hU == 0))
16821672 then [e, e, e]
1683- else cY(hT, hU, hS)
1684- let dx = 0
1685- let hW = H(hV[1], b)
1686- let hX = H(hV[2], b)
1687- let hY = value(getInteger(aT, aD(toString(this))))
1688- $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))
1673+ else dg(hV, hW, hU)
1674+ let dF = 0
1675+ let hY = H(hX[1], b)
1676+ let hZ = H(hX[2], b)
1677+ let ia = value(getInteger(bd, aD(toString(this))))
1678+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hV), toString(hW), toString(hU), toString(dF), toString(hY), toString(hZ), toString(ia)], j))
16891679 }
16901680
16911681
16921682
1693-@Callable(eS)
1694-func evaluatePutByAmountAssetREADONLY (dH) = {
1695- let da = ba()
1696- let dn = fromBase58String(da[q])
1697- let dN = da[r]
1698- let do = fromBase58String(dN)
1699- let dO = da[s]
1700- let dp = fromBase58String(dO)
1701- let db = parseIntValue(da[t])
1702- let dc = parseIntValue(da[u])
1703- let dq = da[p]
1704- let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1705- let hT = bJ(dN)
1706- let hU = bJ(dO)
1707- let cW = D(hT, db)
1708- let cX = D(hU, dc)
1709- let dw = if ((hS == 0))
1683+@Callable(fb)
1684+func evaluatePutByAmountAssetREADONLY (dP) = {
1685+ let di = bk()
1686+ let dv = fromBase58String(di[q])
1687+ let dV = di[r]
1688+ let dw = fromBase58String(dV)
1689+ let dW = di[s]
1690+ let dx = fromBase58String(dW)
1691+ let dj = parseIntValue(di[t])
1692+ let dk = parseIntValue(di[u])
1693+ let dy = di[p]
1694+ let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1695+ let hV = bT(dV)
1696+ let hW = bT(dW)
1697+ let de = D(hV, dj)
1698+ let df = D(hW, dk)
1699+ let dE = if ((hU == 0))
17101700 then e
1711- else bM(cX, cW)
1712- let dT = D(dH, db)
1713- let dU = fraction(dT, dw, d)
1714- let dJ = H(dU, dc)
1715- let eY = dF("", 500000, dH, do, dJ, dp, "", true, false)
1716- let ee = eY._1
1717- let hZ = eY._3
1718- let ds = eY._4
1719- let du = eY._5
1720- let dr = eY._6
1721- $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))
1701+ else bW(df, de)
1702+ let eb = D(dP, dj)
1703+ let ec = fraction(eb, dE, d)
1704+ let dR = H(ec, dk)
1705+ let fh = dN("", 500000, dP, dw, dR, dx, "", true, false)
1706+ let em = fh._1
1707+ let ib = fh._3
1708+ let dA = fh._4
1709+ let dC = fh._5
1710+ let dz = fh._6
1711+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(em), toString(H(dE, b)), toString(dA), toString(dC), toString(dz), dy, toString(dP), toString(dR)], j))
17221712 }
17231713
17241714
17251715
1726-@Callable(eS)
1727-func evaluatePutByPriceAssetREADONLY (dJ) = {
1728- let da = ba()
1729- let dn = fromBase58String(da[q])
1730- let dN = da[r]
1731- let do = fromBase58String(dN)
1732- let dO = da[s]
1733- let dp = fromBase58String(dO)
1734- let db = parseIntValue(da[t])
1735- let dc = parseIntValue(da[u])
1736- let dq = da[p]
1737- let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1738- let ia = bJ(dN)
1739- let ib = bJ(dO)
1740- let ic = D(ia, db)
1741- let id = D(ib, dc)
1742- let dw = if ((hS == 0))
1716+@Callable(fb)
1717+func evaluatePutByPriceAssetREADONLY (dR) = {
1718+ let di = bk()
1719+ let dv = fromBase58String(di[q])
1720+ let dV = di[r]
1721+ let dw = fromBase58String(dV)
1722+ let dW = di[s]
1723+ let dx = fromBase58String(dW)
1724+ let dj = parseIntValue(di[t])
1725+ let dk = parseIntValue(di[u])
1726+ let dy = di[p]
1727+ let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1728+ let ic = bT(dV)
1729+ let id = bT(dW)
1730+ let ie = D(ic, dj)
1731+ let if = D(id, dk)
1732+ let dE = if ((hU == 0))
17431733 then e
1744- else bM(id, ic)
1745- let dU = D(dJ, dc)
1746- let dT = fraction(dU, d, dw)
1747- let dH = H(dT, db)
1748- let eY = dF("", 500000, dH, do, dJ, dp, "", true, false)
1749- let ee = eY._1
1750- let hZ = eY._3
1751- let ds = eY._4
1752- let du = eY._5
1753- let dr = eY._6
1754- $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))
1734+ else bW(if, ie)
1735+ let ec = D(dR, dk)
1736+ let eb = fraction(ec, d, dE)
1737+ let dP = H(eb, dj)
1738+ let fh = dN("", 500000, dP, dw, dR, dx, "", true, false)
1739+ let em = fh._1
1740+ let ib = fh._3
1741+ let dA = fh._4
1742+ let dC = fh._5
1743+ let dz = fh._6
1744+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(em), toString(H(dE, b)), toString(dA), toString(dC), toString(dz), dy, toString(dP), toString(dR)], j))
17551745 }
17561746
17571747
17581748
1759-@Callable(eS)
1760-func evaluateGetREADONLY (ie,if) = {
1761- let dW = dj("", ie, if, this)
1762- let dC = dW._1
1763- let dD = dW._2
1764- let ds = dW._5
1765- let du = dW._6
1766- let dr = dW._7
1767- let dx = dW._8
1768- let dq = parseIntValue(dW._9)
1769- $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))
1749+@Callable(fb)
1750+func evaluateGetREADONLY (ig,ih) = {
1751+ let ee = dr("", ig, ih, this)
1752+ let dK = ee._1
1753+ let dL = ee._2
1754+ let dA = ee._5
1755+ let dC = ee._6
1756+ let dz = ee._7
1757+ let dF = ee._8
1758+ let dy = parseIntValue(ee._9)
1759+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dK), toString(dL), toString(dA), toString(dC), toString(dz), toString(dF), toString(dy)], j))
17701760 }
17711761
17721762
1773-@Verifier(ig)
1774-func ih () = {
1775- let ii = {
1776- let bT = ge()
1777- if ($isInstanceOf(bT, "ByteVector"))
1763+@Verifier(ii)
1764+func ij () = {
1765+ let ik = {
1766+ let aQ = gn()
1767+ if ($isInstanceOf(aQ, "ByteVector"))
17781768 then {
1779- let gi = bT
1780- gi
1769+ let gq = aQ
1770+ gq
17811771 }
1782- else if ($isInstanceOf(bT, "Unit"))
1783- then ig.senderPublicKey
1772+ else if ($isInstanceOf(aQ, "Unit"))
1773+ then ii.senderPublicKey
17841774 else throw("Match error")
17851775 }
1786- let bT = ig
1787- if ($isInstanceOf(bT, "Order"))
1776+ let aQ = ii
1777+ if ($isInstanceOf(aQ, "Order"))
17881778 then {
1789- let eH = bT
1790- let ij = aZ()
1791- let ik = eG(eH)
1792- let aI = ik._1
1793- let aJ = ik._2
1794- let aK = sigVerify(eH.bodyBytes, eH.proofs[0], eH.senderPublicKey)
1795- let aL = sigVerify(eH.bodyBytes, eH.proofs[1], ij)
1796- if (if (if (aI)
1797- then aK
1779+ let eQ = aQ
1780+ let il = bj()
1781+ let im = if (eM())
1782+ then $Tuple2(true, "")
1783+ else eP(eQ)
1784+ let aK = im._1
1785+ let aL = im._2
1786+ let aM = sigVerify(eQ.bodyBytes, eQ.proofs[0], eQ.senderPublicKey)
1787+ let aN = sigVerify(eQ.bodyBytes, eQ.proofs[1], il)
1788+ if (if (if (aK)
1789+ then aM
17981790 else false)
1799- then aL
1791+ then aN
18001792 else false)
18011793 then true
1802- else aH(aI, aJ, aK, aL)
1794+ else aJ(aK, aL, aM, aN)
18031795 }
1804- else if ($isInstanceOf(bT, "SetScriptTransaction"))
1796+ else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18051797 then {
1806- let gf = bT
1807- if (sigVerify(ig.bodyBytes, ig.proofs[0], ii))
1798+ let aV = aQ
1799+ if (sigVerify(ii.bodyBytes, ii.proofs[0], ik))
18081800 then true
18091801 else {
1810- let il = blake2b256(value(gf.script))
1811- let im = fromBase64String(value(getString(aT, aF())))
1812- let in = scriptHash(this)
1813- if ((im == il))
1814- then (in != il)
1802+ let in = blake2b256(value(aV.script))
1803+ let io = fromBase64String(value(getString(bd, aF())))
1804+ let ip = scriptHash(this)
1805+ if ((io == in))
1806+ then (ip != in)
18151807 else false
18161808 }
18171809 }
1818- else sigVerify(ig.bodyBytes, ig.proofs[0], ii)
1810+ else sigVerify(ii.bodyBytes, ii.proofs[0], ik)
18191811 }
18201812

github/deemru/w8io/6500d08 
611.84 ms