tx · DiTYwhDSJX5AYYJ8H3DUqafmoSV5TZA6A5zYL56MjSE4

3MtQw51ChuPVJckfoZkuvqn73UiXDZSRmvi:  -0.04200000 Waves

2023.07.10 10:28 [2659511] smart account 3MtQw51ChuPVJckfoZkuvqn73UiXDZSRmvi > SELF 0.00000000 Waves

{ "type": 13, "id": "DiTYwhDSJX5AYYJ8H3DUqafmoSV5TZA6A5zYL56MjSE4", "fee": 4200000, "feeAssetId": null, "timestamp": 1688974149990, "version": 2, "chainId": 84, "sender": "3MtQw51ChuPVJckfoZkuvqn73UiXDZSRmvi", "senderPublicKey": "DW6wmKbzcE2fCwMjuV8anYx2tWHumv6MPCvzbxXtFPYF", "proofs": [ "2Jj57QTx12ja2qBKaZJdqJHaS7DbQ7eazewe7j4c8cmsusotViDYnxsMveCKTUAp9uS29YZFwyF6T6cEWWXRVa9s" ], "script": "base64:BgKSOAgCEgASBQoDAQQBEgcKBQEEAQgBEgQKAgEEEgMKAQESBAoCAQQSBAoCCAESBAoCCAESBAoCCAESBQoDAQgBEgASBAoCAQESAwoBARIFCgMBAQESBAoCCAgSABIAEgMKAQgSBQoDAQEBEgQKAgEBEgQKAggBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgASAwoBARIDCgEBEgQKAggBIgpsUGRlY2ltYWxzIgZzY2FsZTgiDHNjYWxlOEJpZ0ludCIHc2NhbGUxOCIKemVyb0JpZ0ludCIEYmlnMCIEYmlnMSIEYmlnMiILd2F2ZXNTdHJpbmciA1NFUCIKUG9vbEFjdGl2ZSIPUG9vbFB1dERpc2FibGVkIhNQb29sTWF0Y2hlckRpc2FibGVkIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIg1pZHhQb29sU3RhdHVzIhBpZHhQb29sTFBBc3NldElkIg1pZHhBbXRBc3NldElkIg9pZHhQcmljZUFzc2V0SWQiDmlkeEFtdEFzc2V0RGNtIhBpZHhQcmljZUFzc2V0RGNtIg5pZHhJQW10QXNzZXRJZCIQaWR4SVByaWNlQXNzZXRJZCINaWR4TFBBc3NldERjbSISaWR4UG9vbEFtdEFzc2V0QW10IhRpZHhQb29sUHJpY2VBc3NldEFtdCIRaWR4UG9vbExQQXNzZXRBbXQiGWlkeEZhY3RvcnlTdGFraW5nQ29udHJhY3QiGmlkeEZhY3RvcnlTbGlwcGFnZUNvbnRyYWN0IgV0b1gxOCIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCILdG9YMThCaWdJbnQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiDHN3YXBDb250cmFjdCICZmMiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIUa2V5QWRkaXRpb25hbEJhbGFuY2UiB2Fzc2V0SWQiFmtleVN0YWtpbmdBc3NldEJhbGFuY2UiGmdldEFkZGl0aW9uYWxCYWxhbmNlT3JaZXJvIhxnZXRTdGFraW5nQXNzZXRCYWxhbmNlT3JaZXJvIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiFmtleVNraXBPcmRlclZhbGlkYXRpb24iC3Bvb2xBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiDm9yZGVyVmFsaWRJbmZvIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIhdhZGRyZXNzRnJvbVN0cmluZ09yVGhpcyINYWRkcmVzc1N0cmluZyIHJG1hdGNoMCIBYSIcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcyIOZmFjdG9yeUFkZHJlc3MiA2ZjYSIBcyIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIGZm10RXJyIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiBWluRmVlIgFAIgZvdXRGZWUiEGlzR2xvYmFsU2h1dGRvd24iE2dldE1hdGNoZXJQdWJPckZhaWwiDWdldFBvb2xDb25maWciCGFtdEFzc2V0IgpwcmljZUFzc2V0IgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwOTUyOTk2OTUiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhBnZXRGYWN0b3J5Q29uZmlnIg9zdGFraW5nQ29udHJhY3QiEHNsaXBwYWdlQ29udHJhY3QiEWRhdGFQdXRBY3Rpb25JbmZvIg1pbkFtdEFzc2V0QW10Ig9pblByaWNlQXNzZXRBbXQiCG91dExwQW10IgVwcmljZSIdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIiFXNsaXBwYWdlVG9sZXJhbmNlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIhJzbGlwYWdlQW10QXNzZXRBbXQiFHNsaXBhZ2VQcmljZUFzc2V0QW10IhFkYXRhR2V0QWN0aW9uSW5mbyIOb3V0QW10QXNzZXRBbXQiEG91dFByaWNlQXNzZXRBbXQiB2luTHBBbXQiDWdldEFjY0JhbGFuY2UiDWJhbGFuY2VPblBvb2wiDHRvdGFsQmFsYW5jZSIPY2FsY1ByaWNlQmlnSW50IghwckFtdFgxOCIIYW1BbXRYMTgiFGNhbGNQcmljZUJpZ0ludFJvdW5kIgdnZXRSYXRlIgVwcm94eSIDaW52IgFyIgdkZXBvc2l0IgZhbW91bnQiDnN0YWtpbmdBc3NldElkIhhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UiGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlIgVhc3NldCINZGVwb3NpdEludm9rZSIUcmVjZWl2ZWRTdGFraW5nQXNzZXQiFG5ld0FkZGl0aW9uYWxCYWxhbmNlIhZuZXdTdGFraW5nQXNzZXRCYWxhbmNlIgh3aXRoZHJhdyIMcHJveHlSYXRlTXVsIg1wcm9maXRBZGRyZXNzIhBjdXJyZW50UHJveHlSYXRlIgdvbGRSYXRlIgxzdGFraW5nQXNzZXQiFG9sZFNlbmRTdGFraW5nQW1vdW50IhZzZW5kU3Rha2luZ0Fzc2V0QW1vdW50Igxwcm9maXRBbW91bnQiDndpdGhkcmF3SW52b2tlIg5yZWNlaXZlZEFzc2V0cyITZ2V0TGVhc2VQcm94eUNvbmZpZyIRcmViYWxhbmNlSW50ZXJuYWwiC3RhcmdldFJhdGlvIgptaW5CYWxhbmNlIhRsZWFzYWJsZVRvdGFsQmFsYW5jZSIXdGFyZ2V0QWRkaXRpb25hbEJhbGFuY2UiBGRpZmYiD3NlbmRBc3NldEFtb3VudCIOZ2V0QXNzZXRBbW91bnQiDnJlYmFsYW5jZUFzc2V0Ig0kdDAxNTkzMTE2MDY3Igppc0xlYXNhYmxlIgtsZWFzZWRSYXRpbyIMcHJveHlBZGRyZXNzIgxwcm94eUFzc2V0SWQiFHN0YWtpbmdQcm9maXRBZGRyZXNzIhl3aXRoZHJhd0FuZFJlYmFsYW5jZUFzc2V0IglnZXRBbW91bnQiDSR0MDE2NDY2MTY2MDIiF25ld1RvdGFsTGVhc2FibGVCYWxhbmNlIg53aXRoZHJhd0Ftb3VudCIXd2l0aGRyYXdBbmRSZWJhbGFuY2VBbGwiFGFtb3VudEFzc2V0T3V0QW1vdW50IhNwcmljZUFzc2V0T3V0QW1vdW50IhJBbUFtdFdpdGhkcmF3U3RhdGUiElByQW10V2l0aGRyYXdTdGF0ZSIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiB2NhbGNLTHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIQYW1vdW50QmFsYW5jZVgxOCIPcHJpY2VCYWxhbmNlWDE4Igp1cGRhdGVkS0xwIg5jYWxjQ3VycmVudEtMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50S0xwIhJyZWZyZXNoS0xwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhNza2lwT3JkZXJWYWxpZGF0aW9uIhJ2YWxpZGF0ZVVwZGF0ZWRLTHAiBm9sZEtMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI5MDEzMjkyMjUiA2tMcCINJHQwMjk2NjUyOTc2NSINdW51c2VkQWN0aW9ucyIGa0xwTmV3Igxpc09yZGVyVmFsaWQiBGluZm8iCWNvbW1vbkdldCIBaSIDcG10IgZwbXRBbXQiCWNvbW1vblB1dCIKYW1Bc3NldFBtdCIKcHJBc3NldFBtdCIGZXN0UHV0IgRlbWl0IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiCWZlZUFtb3VudCIPY2FsY1B1dE9uZVRva2VuIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCIGaXNFdmFsIhBhbW91bnRCYWxhbmNlUmF3Ig9wcmljZUJhbGFuY2VSYXciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAzMjg3ODMzMTcxIhBhbW91bnRCYWxhbmNlT2xkIg9wcmljZUJhbGFuY2VPbGQiDSR0MDMzMTc1MzMzMjQiFGFtb3VudEFzc2V0QW1vdW50UmF3IhNwcmljZUFzc2V0QW1vdW50UmF3Ig0kdDAzMzQ1NjMzNTIwIg1wYXltZW50QW1vdW50IhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAzNTIwMTM1MzY4IgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IhhvdXRJbkFtb3VudEFzc2V0RGVjaW1hbHMiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAzNzQ0NjM3NTAyIgt0b3RhbEFtb3VudCINJHQwMzc1MDYzNzczMiILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IhNtYW5hZ2VyVmF1bHRBZGRyZXNzIglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiDWNsZWFuQW1vdW50SW4iCWlzUmV2ZXJzZSINZmVlUG9vbEFtb3VudCINJHQwMzk1OTAzOTg5NSIIYXNzZXRPdXQiB2Fzc2V0SW4iEnBvb2xBc3NldEluQmFsYW5jZSITcG9vbEFzc2V0T3V0QmFsYW5jZSIJYW1vdW50T3V0IgRvbGRLIgRuZXdLIgZjaGVja0siDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCIIY2hlY2tNaW4iDnJlYmFsYW5jZVN0YXRlIg13aXRoZHJhd1N0YXRlIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiINJHQwNDQzOTg0NDg2MCIRcmVmcmVzaEtMcEFjdGlvbnMiEWlzVXBkYXRlZEtMcFZhbGlkIgNyZWIiC21heFNsaXBwYWdlIg0kdDA0NTQ3MjQ1NTM3IgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDQ2NzI1NDY4NzciBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwNDc0NjM0NzY2MCINJHQwNDc2NjM0Nzc3MSINJHQwNDgxMjY0ODI4MyINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwNDkxNjg0OTMyMSIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDA0OTk4NTUwMjMyIhBmZWVBbW91bnRGb3JDYWxjIg0kdDA1MDIzNTUwMzQzIg0kdDA1MDYyMTUwNzc3Ig11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDA1MTY4MjUxODMzIg0kdDA1MjQ5MjUyNzM5Ig0kdDA1Mjc0MjUyODUwIhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNTM5NDU1NDAyNiISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINJHQwNTUxMjE1NTIwMiINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIg0kdDA1NjQ3NDU2NTU1IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyINJHQwNTc5OTY1ODA3NyILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDU5MjgxNTkzNDUiEGtMcFVwZGF0ZUFjdGlvbnMiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCINcG9vbExQQmFsYW5jZSISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA2ODAwNzY4MTI0IgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2iCAQABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBRQFGCQC8AgMFAUUFAWQFAUYBAUgCAUkBSgkAoAMBCQC8AgMFAUkJALYCAQUBSgUBZAEBSwMBSQFKAUwJAKADAQkAvQIEBQFJCQC2AgEFAUoFAWQFAUwBAU0DAU4BTwFQCQBrAwUBTgUBTwUBUAEBUQEBSQMJAGYCAAAFAUkJAQEtAQUBSQUBSQEBUgEBSQMJAL8CAgUBZQUBSQkAvgIBBQFJBQFJAQFTAAIQJXNfX3N3YXBDb250cmFjdAEBVAACEyVzX19mYWN0b3J5Q29udHJhY3QBAVUAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVgACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzAQFXAAIRJXMlc19fcHJpY2VfX2xhc3QBAVgCAVkBWgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVkJAMwIAgkApAMBBQFaBQNuaWwFAWoBAmFhAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFiAgJfXwUCYWMBAmFkAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFiAgJfXwUCYWMBAmFlAAIPJXNfX2Ftb3VudEFzc2V0AQJhZgACDiVzX19wcmljZUFzc2V0AAJhZwIHJXNfX2ZlZQACYWgJAGsDAAoFAWIAkE4AAmFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFnBQJhaAACYWoJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWsJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWwJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYW0AHgACYW4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWwFAmFtAQJhbwECYXAJALkJAgkAzAgCAgQlcyVzCQDMCAICDXN0YWtlZEJhbGFuY2UJAMwIAgUCYXAFA25pbAUBagECYXEBAmFwCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhFzaGFyZUFzc2V0QmFsYW5jZQkAzAgCBQJhcAUDbmlsBQFqAQJhcgECYXAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFvAQUCYXAAAAECYXMBAmFwCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhcQEFAmFwAAABAmF0AAIRJXNfX2ZhY3RvcnlDb25maWcBAmF1AAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhdgECYXcJAKwCAgkArAICAgglcyVzJXNfXwUCYXcCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJheAICYXkCYXoJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmF5AgJfXwUCYXoCCF9fY29uZmlnAQJhQQECYUIJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYUIBAmFDAAIMJXNfX3NodXRkb3duAQJhRAECYUUJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhRQECYUYAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYUcCFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhSAECYUkJAKwCAgIbJXMlc19fc2tpcE9yZGVyVmFsaWRhdGlvbl9fBQJhSQECYUoEAmFLAmFMAmFNAmFOCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhSwICICgFAmFMAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFNAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhTgECYU8BAmFQBAJhUQkApggBBQJhUAMJAAECBQJhUQIHQWRkcmVzcwQCYVIFAmFRBQJhUgUEdGhpcwECYVMABAJhVAQCYVEJAKIIAQkBAVQAAwkAAQIFAmFRAgZTdHJpbmcEAmFVBQJhUQkBAmFPAQUCYVUFBHRoaXMEAmFRCQCdCAIFAmFUCQEBVgADCQABAgUCYVECBlN0cmluZwQCYVYFAmFRCQECYU8BBQJhVgUEdGhpcwECYVcCAmFYAmFZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVgFAmFZCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFYCQDMCAICAS4JAMwIAgUCYVkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYVoCAmFYAmFZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYVgFAmFZCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFYCQDMCAICAS4JAMwIAgUCYVkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYmEBAmJiCQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmJiBQNuaWwCASABAmJjAQJiYgkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmJiBQNuaWwCASAAAmJkCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYVcCBQR0aGlzCQEBVAAAAmJlCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYVcCBQJiZAUCYUcAAmJmCgACYmcJAPwHBAUCYmQCEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZwIDSW50BQJiZwkAAgEJAKwCAgkAAwEFAmJnAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmJoCgACYmcJAPwHBAUCYmQCEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCA0ludAUCYmcJAAIBCQCsAgIJAAMBBQJiZwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJiaQAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYmQJAQJhQwAHAQJiagAJANkEAQkBAmFXAgUCYmQJAQJhdQABAmJrAAQCYmwJAQJhVwIFBHRoaXMJAQJhZQAEAmJtCQECYVcCBQR0aGlzCQECYWYABAJhegkBAmFaAgUCYmQJAQJhQQEFAmJtBAJheQkBAmFaAgUCYmQJAQJhQQEFAmJsCQC1CQIJAQJhVwIFAmJkCQECYXgCCQCkAwEFAmF5CQCkAwEFAmF6BQFqAQJibgECYm8DCQAAAgUCYm8FAWkFBHVuaXQJANkEAQUCYm8BAmJwAQJibwMJAAACBQJibwUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJibwECYnEBAmJyCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYnIFAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJicgUBcAkA2QQBCQCRAwIFAmJyBQFxCQECYm4BCQCRAwIFAmJyBQFyCQECYm4BCQCRAwIFAmJyBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnIFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJicgUBdQACYnMJAQJicQEJAQJiawAAAmJ0BQJicwACYnUIBQJidAJfMQACYnYIBQJidAJfMgACYncIBQJidAJfMwACYngIBQJidAJfNAACYnkIBQJidAJfNQACYnoIBQJidAJfNgACYkEIBQJidAJfNwECYkIACQC1CQIJAQJhVwIFAmJkCQECYXQABQFqAAJiQwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJCAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYkQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJiQgAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJFCgJiRgJiRwJiSAJiSQJiSgJiSwJiTAJiTQJiTgJiTwkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYkYJAMwIAgkApAMBBQJiRwkAzAgCCQCkAwEFAmJICQDMCAIJAKQDAQUCYkkJAMwIAgkApAMBBQJiSgkAzAgCCQCkAwEFAmJLCQDMCAIJAKQDAQUCYkwJAMwIAgkApAMBBQJiTQkAzAgCCQCkAwEFAmJOCQDMCAIJAKQDAQUCYk8FA25pbAUBagECYlAGAmJRAmJSAmJTAmJJAmJMAmJNCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYlEJAMwIAgkApAMBBQJiUgkAzAgCCQCkAwEFAmJTCQDMCAIJAKQDAQUCYkkJAMwIAgkApAMBBQJiTAkAzAgCCQCkAwEFAmJNBQNuaWwFAWoBAmJUAQJhcAQCYlUDCQAAAgUCYXACBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmFwBAJiVgkAZQIJAGQCBQJiVQkBAmFyAQUCYXAJAQJhcwEFAmFwCQCWAwEJAMwIAgAACQDMCAIFAmJWBQNuaWwBAmJXAgJiWAJiWQkAvAIDBQJiWAUBZAUCYlkBAmJaAwJiWAJiWQFMCQC9AgQFAmJYBQFkBQJiWQUBTAECY2EBAmNiBAJjYwkA/AcEBQJjYgIHZ2V0UmF0ZQUDbmlsBQNuaWwDCQAAAgUCY2MFAmNjBAJhUQUCY2MDCQABAgUCYVECA0ludAQCY2QFAmFRBQJjZAkBAmJhAQIgcHJveHkuZ2V0UmF0ZSgpIHVuZXhwZWN0ZWQgdmFsdWUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNlBAJhcAJjZgJjZwJjYgQCY2gJAQJhcgEFAmFwAwkAAAIFAmNoBQJjaAQCY2kJAQJhcwEFAmNnAwkAAAIFAmNpBQJjaQQCY2oJAQJibgEFAmFwAwkAZgIFAmNmAAAEAmNrCQD8BwQFAmNiAgdkZXBvc2l0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNqBQJjZgUDbmlsAwkAAAIFAmNrBQJjawQCYVEFAmNrAwkAAQIFAmFRAgNJbnQEAmNsBQJhUQQCY20JAGQCBQJjaAUCY2YEAmNuCQBkAgUCY2kFAmNsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYW8BBQJhcAUCY20JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcQEFAmNnBQJjbgUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY28GAmFwAmNmAmNnAmNiAmNwAmNxBAJjaAkBAmFyAQUCYXADCQAAAgUCY2gFAmNoBAJjaQkBAmFzAQUCY2cDCQAAAgUCY2kFAmNpBAJjcgkBAmNhAQUCY2IDCQAAAgUCY3IFAmNyBAJjcwkAawMFAmNwBQJjaAUCY2kEAmN0CQECYm4BBQJjZwQCY3UJAGsDBQJjcAUCY2YFAmNzBAJjdgkAawMFAmNwBQJjZgUCY3IEAmN3CQCWAwEJAMwIAgAACQDMCAIJAGUCBQJjdQUCY3YFA25pbAMJAGYCBQJjdgAABAJjeAkA/AcEBQJjYgIId2l0aGRyYXcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3QFAmN2BQNuaWwDCQAAAgUCY3gFAmN4BAJhUQUCY3gDCQABAgUCYVECA0ludAQCY3kFAmFRBAJjbQkAZQIFAmNoBQJjeQQCY24JAGUCCQBlAgUCY2kFAmN2BQJjdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFvAQUCYXAFAmNtCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXEBBQJjZwUCY24JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3EFAmN3CQECYm4BBQJjZwUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY3oBAmFwBAJhUQkA/AcEBQJiZAIaZ2V0UG9vbExlYXNlQ29uZmlnUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzCQDMCAIFAmFwBQNuaWwFA25pbAMJAAECBQJhUQIwKEJvb2xlYW4sIEludCwgSW50LCBTdHJpbmcsIFN0cmluZywgSW50LCBTdHJpbmcpBAJhUgUCYVEFAmFSCQECYmEBCQCsAgIJAKwCAgIBWwUCYXACHV0gZ2V0TGVhc2VQcm94eUNvbmZpZygpIGVycm9yAQJjQQcCY0ICYXACY2cCY0MCY2ICY3ACY3EEAmNoCQECYXIBBQJhcAMJAAACBQJjaAUCY2gEAmNpCQECYXMBBQJjZwMJAAACBQJjaQUCY2kEAmNECQCWAwEJAMwIAgAACQDMCAIJAGUCCQECYlQBBQJhcAUCY0MFA25pbAQCY0UJAGsDBQJjQgUCY0QAZAQCY0YJAGUCBQJjaAUCY0UDCQAAAgUCY0YAAAUDbmlsAwkAZgIAAAUCY0YEAmNHCQEBLQEFAmNGCQECY2UEBQJhcAUCY0cFAmNnBQJjYgQCY0gFAmNGCQECY28GBQJhcAUCY0gFAmNnBQJjYgUCY3AFAmNxCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjSQECYXAEAmNKCQECY3oBBQJhcAQCY0sIBQJjSgJfMQQCY0wIBQJjSgJfMgQCY0MIBQJjSgJfMwQCY00IBQJjSgJfNAQCY04IBQJjSgJfNQQCY3AIBQJjSgJfNgQCY08IBQJjSgJfNwMFAmNLCQECY0EHBQJjTAUCYXAFAmNOBQJjQwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY00FAmNwCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTwUDbmlsAQJjUAICYXACY1EEAmNSCQECY3oBBQJhcAQCY0sIBQJjUgJfMQQCY0wIBQJjUgJfMgQCY0MIBQJjUgJfMwQCY00IBQJjUgJfNAQCY04IBQJjUgJfNQQCY3AIBQJjUgJfNgQCY08IBQJjUgJfNwMFAmNLBAJjUwkAlgMBCQDMCAIAAAkAzAgCCQBlAgkAZQIJAQJiVAEFAmFwBQJjUQUCY0MFA25pbAMJAAACBQJjUwUCY1MEAmNtCQBrAwUCY0wFAmNTAGQDCQAAAgUCY20FAmNtBAJjVAkAZQIJAQJhcgEFAmFwBQJjbQMJAAACBQJjVAUCY1QDCQBmAgAABQJjVAkBAmNlBAUCYXAJAQEtAQUCY1QFAmNOCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTQkBAmNvBgUCYXAFAmNUBQJjTgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY00FAmNwCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAQJjVQICY1YCY1cEAmNYCQECY1ACCQECYVcCBQR0aGlzCQECYWUABQJjVgQCY1kJAQJjUAIJAQJhVwIFBHRoaXMJAQJhZgAFAmNXCQDOCAIFAmNYBQJjWQECY1oEAmRhAmRiAmRjAmRkBAJkZQkBAUQCBQJkYwUCZGEEAmRmCQEBRAIFAmRkBQJkYgkBAmJXAgUCZGYFAmRlAQJkZwMCZGMCZGQCZGgEAmRpCQECYmsABAJkagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQF0BAJkawkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQF1BAJkbAkBAmNaBAUCZGoFAmRrBQJkYwUCZGQEAmJZCQEBRAIFAmRjBQJkagQCYlgJAQFEAgUCZGQFAmRrBAJkbQkBAUQCBQJkaAUBYgQCZG4JAQJiVwIFAmJZBQJkbQQCZG8JAQJiVwIFAmJYBQJkbQkAzAgCBQJkbAkAzAgCBQJkbgkAzAgCBQJkbwUDbmlsAQJkcAMCZGMCZGQCZGgEAmRxCQECZGcDBQJkYwUCZGQFAmRoCQDMCAIJAQFIAgkAkQMCBQJkcQAABQFiCQDMCAIJAQFIAgkAkQMCBQJkcQABBQFiCQDMCAIJAQFIAgkAkQMCBQJkcQACBQFiBQNuaWwBAmRyBAJkcwJkdAJkdQJhYgQCZGkJAQJiawAEAmR2CQCRAwIFAmRpBQFxBAJkdwkAkQMCBQJkaQUBcgQCZHgJAJEDAgUCZGkFAXMEAmRhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXQEAmRiCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXUEAmR5CQCRAwIFAmRpBQFwBAJkeggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmR2CQCsAgIJAKwCAgIGQXNzZXQgBQJkdgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJkdgUCZHQJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmRBCQECYlQBBQJkdwQCZEIJAQFEAgUCZEEFAmRhBAJkQwkBAmJUAQUCZHgEAmRECQEBRAIFAmRDBQJkYgQCZEUJAQJiVwIFAmREBQJkQgQCZEYJAQFIAgUCZEUFAWIEAmRHCQEBRAIFAmR1BQFiBAJkSAkBAUQCBQJkegUBYgQCZEkJALwCAwUCZEIFAmRHBQJkSAQCZEoJALwCAwUCZEQFAmRHBQJkSAQCZEsJAQFLAwUCZEkFAmRhBQVGTE9PUgQCZEwJAQFLAwUCZEoFAmRiBQVGTE9PUgQCZE0DCQAAAgUCZHMCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFiBQJkSwMJAAACBQJkdwIFV0FWRVMFBHVuaXQJANkEAQUCZHcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmRMAwkAAAIFAmR4AgVXQVZFUwUEdW5pdAkA2QQBBQJkeAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCCQClCAEFAmFiBQJkcwkBAmJQBgUCZEsFAmRMBQJkdQUCZEYFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZEYJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZEYFA25pbAkAnAoKBQJkSwUCZEwFAmR3BQJkeAUCZEEFAmRDBQJkegUCZEUFAmR5BQJkTQECZE4JAmRzAmRPAmRQAmRRAmRSAmRTAmFiAmRUAmRVBAJkaQkBAmJrAAQCZHYJANkEAQkAkQMCBQJkaQUBcQQCZFYJAJEDAgUCZGkFAXIEAmRXCQCRAwIFAmRpBQFzBAJkWAkAkQMCBQJkaQUBdgQCZFkJAJEDAgUCZGkFAXcEAmRqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXQEAmRrCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXUEAmR5CQCRAwIFAmRpBQFwBAJkeggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkdgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJkdgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmRaCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmRRCQDZBAECBVdBVkVTBAJlYQkA2AQBCQELdmFsdWVPckVsc2UCBQJkUwkA2QQBAgVXQVZFUwMDCQECIT0CBQJkVgUCZFoGCQECIT0CBQJkVwUCZWEJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJkQQMFAmRUCQECYlQBBQJkVgkAZQIJAQJiVAEFAmRWBQJkUAQCZEMDBQJkVAkBAmJUAQUCZFcJAGUCCQECYlQBBQJkVwUCZFIEAmViCQEBRAIFAmRQBQJkagQCZWMJAQFEAgUCZFIFAmRrBAJlZAkBAmJXAgUCZWMFAmViBAJkQgkBAUQCBQJkQQUCZGoEAmRECQEBRAIFAmRDBQJkawQCZWUDCQAAAgUCZHoAAAQCZEUFAWUEAmVmBQFlBAJkbQkAdgYJALkCAgUCZWIFAmVjAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSAIFAmRtBQFiCQEBSAIFAmViBQJkagkBAUgCBQJlYwUCZGsJAQJiVwIJALcCAgUCZEQFAmVjCQC3AgIFAmRCBQJlYgUCZWYEAmRFCQECYlcCBQJkRAUCZEIEAmVmCQC8AgMJAQFSAQkAuAICBQJkRQUCZWQFAWQFAmRFBAJlZwkBAUQCBQJkTwUBYgMDCQECIT0CBQJkRQUBZQkAvwICBQJlZgUCZWcHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmVmAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCZWcEAmRICQEBRAIFAmR6BQFiBAJlaAkAvQIEBQJlYgkBAmJaAwUCZEQFAmRCBQdDRUlMSU5HBQFkBQdDRUlMSU5HBAJlaQkAvQIEBQJlYwUBZAkBAmJaAwUCZEQFAmRCBQVGTE9PUgUHQ0VJTElORwQCZWoDCQC/AgIFAmVoBQJlYwkAlAoCBQJlaQUCZWMJAJQKAgUCZWIFAmVoBAJlawgFAmVqAl8xBAJlbAgFAmVqAl8yBAJkbQkAvQIEBQJkSAUCZWwFAmREBQVGTE9PUgkAlwoFCQEBSwMFAmRtBQFiBQVGTE9PUgkBAUsDBQJlawUCZGoFB0NFSUxJTkcJAQFLAwUCZWwFAmRrBQdDRUlMSU5HBQJkRQUCZWYEAmVtCAUCZWUCXzEEAmVuCAUCZWUCXzIEAmVvCAUCZWUCXzMEAmRGCQEBSAIIBQJlZQJfNAUBYgQCZXAJAQFIAggFAmVlAl81BQFiAwkAZwIAAAUCZW0JAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmVxAwkBASEBBQJkVQAABQJlbQQCZXIJAGUCBQJkUAUCZW4EAmVzCQBlAgUCZFIFAmVvBAJldAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJkRgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkRgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQJhYgUCZHMJAQJiRQoFAmVuBQJlbwUCZXEFAmRGBQJkTwUCZXAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVyBQJlcwUDbmlsCQCfCg0FAmVtBQJlcQUCZEYFAmRBBQJkQwUCZHoFAmR2BQJkeQUCZXQFAmVyBQJlcwUCZFEFAmRTAQJldQMCZXYCZXcCZHoEAmV4CQEBRwIFAmV2CQC2AgEFAmJ6BAJleQkBAUcCBQJldwkAtgIBBQJiQQQCZXoJALwCAwkAdgYJALkCAgUCZXgFAmV5AAAJALYCAQAFAAEAEgUERE9XTgUBZwUCZHoDCQAAAgUCZHoFAWYFAWYFAmV6AQJlQQMCZUICZUMCZUQEAmVFCQC4AgIJALYCAQkBAmJUAQkBAmJwAQUCYngFAmVCBAJlRgkAuAICCQC2AgEJAQJiVAEJAQJicAEFAmJ5BQJlQwQCZUcJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJidwhxdWFudGl0eQUCZUQEAmVICQECZXUDBQJlRQUCZUYFAmVHBQJlSAECZUkDAmVKAmVLAmVEBAJlRQkAZAIJAQJiVAEJAQJicAEFAmJ4BQJlSgQCZUYJAGQCCQECYlQBCQECYnABBQJieQUCZUsEAmVHCQBkAggJAQV2YWx1ZQEJAOwHAQUCYncIcXVhbnRpdHkFAmVEBAJlegkBAmV1AwkAtgIBBQJlRQkAtgIBBQJlRgkAtgIBBQJlRwQCZUwJAMwIAgkBDEludGVnZXJFbnRyeQIFAmFrBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYWoJAKYDAQUCZXoFA25pbAkAlAoCBQJlTAUCZXoBAmVNAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJiZAkBAmFIAQkApQgBBQR0aGlzBwECZU4CAmVPAmV6AwMJAAACBQJlegUBZgYJAMACAgUCZXoFAmVPBgkBAmJhAQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQJlTwkAzAgCCQCmAwEFAmV6BQNuaWwCASABAmVQAQJlUQQCZUUJAQJiVAEJAQJicAEFAmJ4BAJlRgkBAmJUAQkBAmJwAQUCYnkEAmVSCAUCZVEGYW1vdW50BAJlUwkAbgQIBQJlUQZhbW91bnQIBQJlUQVwcmljZQUBYgUFRkxPT1IEAmVUAwkAAAIIBQJlUQlvcmRlclR5cGUFA0J1eQkAlAoCBQJlUgkBAS0BBQJlUwkAlAoCCQEBLQEFAmVSBQJlUwQCZUoIBQJlVAJfMQQCZUsIBQJlVAJfMgMDAwkBAmJpAAYJAAACBQJidgUBbQYJAAACBQJidgUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQDAwkBAiE9AggIBQJlUQlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJ4BgkBAiE9AggIBQJlUQlhc3NldFBhaXIKcHJpY2VBc3NldAUCYnkJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJlVQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWoCATAJAQJiYwECC2ludmFsaWQga0xwBAJlVgkBAmVJAwUCZUoFAmVLAAAEAmVXCAUCZVYCXzEEAmVYCAUCZVYCXzIEAmVZCQDAAgIFAmVYBQJlVQQCZVoJALkJAgkAzAgCAgRrTHA9CQDMCAIJAKYDAQUCZVUJAMwIAgIIIGtMcE5ldz0JAMwIAgkApgMBBQJlWAkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVFCQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlRgkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZUoJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZUsJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmVZBQJlWgECZmEBAmZiAwkBAiE9AgkAkAMBCAUCZmIIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJmYwkBBXZhbHVlAQkAkQMCCAUCZmIIcGF5bWVudHMAAAQCZHQJAQV2YWx1ZQEIBQJmYwdhc3NldElkBAJmZAgFAmZjBmFtb3VudAQCZWUJAQJkcgQJANgEAQgFAmZiDXRyYW5zYWN0aW9uSWQJANgEAQUCZHQFAmZkCAUCZmIGY2FsbGVyBAJkSwgFAmVlAl8xBAJkTAgFAmVlAl8yBAJkeQkBDXBhcnNlSW50VmFsdWUBCAUCZWUCXzkEAmRNCAUCZWUDXzEwAwMJAQJiaQAGCQAAAgUCZHkFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmR5CQCXCgUFAmRLBQJkTAUCZmQFAmR0BQJkTQECZmUDAmZiAmRPAmRVAwkBAiE9AgkAkAMBCAUCZmIIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmZmCQEFdmFsdWUBCQCRAwIIBQJmYghwYXltZW50cwAABAJmZwkBBXZhbHVlAQkAkQMCCAUCZmIIcGF5bWVudHMAAQQCZmgJAQJkTgkJANgEAQgFAmZiDXRyYW5zYWN0aW9uSWQFAmRPCAUCZmYGYW1vdW50CAUCZmYHYXNzZXRJZAgFAmZnBmFtb3VudAgFAmZnB2Fzc2V0SWQJAKUIAQgFAmZiBmNhbGxlcgcFAmRVBAJkeQkBDXBhcnNlSW50VmFsdWUBCAUCZmgCXzgDAwMJAQJiaQAGCQAAAgUCZHkFAWwGCQAAAgUCZHkFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmR5BQJmaAECZmkBAmNmBAJmagkA/AcEBQJiZAIEZW1pdAkAzAgCBQJjZgUDbmlsBQNuaWwDCQAAAgUCZmoFAmZqBAJmawQCYVEFAmZqAwkAAQIFAmFRAgdBZGRyZXNzBAJmbAUCYVEJAPwHBAUCZmwCBGVtaXQJAMwIAgUCY2YFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZrBQJmawUCY2YJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZtAgJjZgJhaQQCZm4DCQAAAgUCYWkAAAAACQBrAwUCY2YFAmFpBQFiCQCUCgIJAGUCBQJjZgUCZm4FAmZuAQJmbwQCZnACZnECYWICYWMEAmZyCQAAAgUCYWMFBHVuaXQEAmZzCQECYlQBCQECYnABBQJieAQCZnQJAQJiVAEJAQJicAEFAmJ5BAJmdQMJAAACBQJmcQUCYngGAwkAAAIFAmZxBQJieQcJAQJiYQECDWludmFsaWQgYXNzZXQEAmZ2AwUCZnIJAJQKAgUCZnMFAmZ0AwUCZnUJAJQKAgkAZQIFAmZzBQJmcAUCZnQJAJQKAgUCZnMJAGUCBQJmdAUCZnAEAmZ3CAUCZnYCXzEEAmZ4CAUCZnYCXzIEAmZ5AwUCZnUJAJQKAgUCZnAAAAkAlAoCAAAFAmZwBAJmeggFAmZ5Al8xBAJmQQgFAmZ5Al8yBAJlUggJAQJmbQIFAmZ6BQJiZgJfMQQCZVMICQECZm0CBQJmQQUCYmYCXzEEAmZCCQECZm0CBQJmcAUCYmYEAmZDCAUCZkICXzEEAmZuCAUCZkICXzIEAmZECQBkAgUCZncFAmVSBAJmRQkAZAIFAmZ4BQJlUwQCZkYJAQJiVwIJAQFEAgUCZkUFAmJBCQEBRAIFAmZEBQJiegQCZkcJAQFIAgUCZkYFAWIEAmZIAwUCZnUFAmZ3BQJmeAQCZkkJALYCAQUCZkgEAmZKCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYncJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYncCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmSwMJAL8CAgUCZkoFAWYGCQECYmEBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZLBQJmSwQCZkwJALYCAQUCZkMEAmZNCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmZKCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZkwFAWQFAmZJABIAEgUERE9XTgUBZAUBZAUDbmlsBAJldAMFAmZyBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZkcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJFCgUCZnoFAmZBBQJmTQUCZkcAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmTgkBAmJXAgkBAUQCBQJmeAUCYkEJAQFEAgUCZncFAmJ6BAJmTwkBAUgCBQJmTgUBYgQCZlAEAmZRAwUCZnUJAJQKAgUCZnoFAmZ3CQCUCgIFAmZBBQJmeAQCY2YIBQJmUQJfMQQCZlIIBQJmUQJfMgQCZlMJAKADAQkAvAIDBQJmSgkAtgIBCQBpAgUCY2YAAgkAtgIBBQJmUgkAawMJAGUCBQJmTQUCZlMFAWIFAmZTCQCXCgUFAmZNBQJldAUCZm4FAmZQBQJmdQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZlQFAmZVAmZDAmZxAmFiAmFjBAJmcgkAAAIFAmFjBQR1bml0BAJkaQkBAmJrAAQCZGoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBdAQCZGsJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBdQQCZlYJAMwIAgMJAAACBQJmcQUCYncGCQECYmEBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZlYFAmZWBAJmVwMJAAACBQJmVQUCYngGAwkAAAIFAmZVBQJieQcJAQJiYQECDWludmFsaWQgYXNzZXQEAmZYAwUCZlcJALYCAQkBAmJUAQkBAmJwAQUCYngJALYCAQkBAmJUAQkBAmJwAQUCYnkEAmZZAwUCZlcFAmRqBQJkawQCZloJAQJiVAEJAQJicAEFAmJ4BAJnYQkBAmJUAQkBAmJwAQUCYnkEAmdiAwUCZlcFAmZaBQJnYQQCZ2MJALYCAQUCZ2IEAmZKCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYncJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYncCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnZAkAtgIBBQJmQwQCZ2UJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZlgJALgCAgUBZAkAdgYJALgCAgUBZAkAugICCQC5AgIFAmdkBQFkBQJmSgASBQFoAAAAEgUERE9XTgUBZAUDbmlsBAJnZgkBAmZtAgUCZ2UFAmJoBAJnZwgFAmdmAl8xBAJmbggFAmdmAl8yBAJnaAMFAmZXCQCWCgQFAmdnAAAJAGUCBQJmWgUCZ2UFAmdhCQCWCgQAAAUCZ2cFAmZaCQBlAgUCZ2EFAmdlBAJnaQgFAmdoAl8xBAJnaggFAmdoAl8yBAJnawgFAmdoAl8zBAJnbAgFAmdoAl80BAJmRgkBAmJXAgkBAUQCBQJnbAUCYkEJAQFEAgUCZ2sFAmJ6BAJmRwkBAUgCBQJmRgUBYgQCZXQDBQJmcgUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQkBBXZhbHVlAQUCYWIJANgEAQkBBXZhbHVlAQUCYWMJAQJiUAYFAmdpBQJnagUCZkMFAmZHBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmZHCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZHBQNuaWwEAmZOCQECYlcCCQEBRAIFAmdhBQJiQQkBAUQCBQJmWgUCYnoEAmZPCQEBSAIFAmZOBQFiBAJmUAQCZ20JAGgCCQCgAwEJALwCAwUCZlgFAmdkBQJmSgACCQBrAwkAZQIFAmdnBQJnbQUBYgUCZ20JAJcKBQUCZ2cFAmV0BQJmbgUCZlAFAmZXCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJnbgAEAmdvCQECYVMABAJhUQkAnQgCBQJnbwkBAVUAAwkAAQIFAmFRAgZTdHJpbmcEAmFWBQJhUQkA2QQBBQJhVgMJAAECBQJhUQIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJncAECZmIEAmFRCQECZ24AAwkAAQIFAmFRAgpCeXRlVmVjdG9yBAJncQUCYVEJAAACCAUCZmIPY2FsbGVyUHVibGljS2V5BQJncQMJAAECBQJhUQIEVW5pdAkAAAIIBQJmYgZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ3IBAmZiBAJncwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAJhUQkBAmduAAMJAAECBQJhUQIKQnl0ZVZlY3RvcgQCZ3EFAmFRAwkAAAIIBQJmYg9jYWxsZXJQdWJsaWNLZXkFAmdxBgUCZ3MDCQABAgUCYVECBFVuaXQDCQAAAggFAmZiBmNhbGxlcgUEdGhpcwYFAmdzCQACAQILTWF0Y2ggZXJyb3IcAmZiAQlyZWJhbGFuY2UACQDOCAIJAQJjSQEJAQJhVwIFBHRoaXMJAQJhZQAJAQJjSQEJAQJhVwIFBHRoaXMJAQJhZgACZmIBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQMCZ3QCZ3UCZ3YEAmd3AwkAAAIFAmd1BwQCZ3gJAQJhVwIFBHRoaXMJAQJhZgAEAmd5CQECYVcCBQR0aGlzCQECYWUACQCUCgIFAmd4BQJneQQCZ3gJAQJhVwIFBHRoaXMJAQJhZQAEAmd5CQECYVcCBQR0aGlzCQECYWYACQCUCgIFAmd4BQJneQQCZ3gIBQJndwJfMQQCZ3kIBQJndwJfMgQCZ3oJAQJiVAEFAmd5BAJnQQkBAmJUAQUCZ3gEAmdCCQBrAwUCZ0EFAmd0CQBkAgUCZ3oFAmd0BAJnQwkAuQICCQC2AgEFAmd6CQC2AgEFAmdBBAJnRAkAuQICCQC3AgIJALcCAgkAtgIBCQECYlQBBQJneQkAtgIBBQJndAkAtgIBBQJndgkAuAICCQC2AgEJAQJiVAEFAmd4CQC2AgEFAmdCBAJnRQMJAMACAgUCZ0QFAmdDBgkAAgECFG5ldyBLIGlzIGZld2VyIGVycm9yAwkAAAIFAmdFBQJnRQkAlAoCBQNuaWwFAmdCCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiASZjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwQW5kU2VuZFRva2VucwUCZ3QCZ3UCZ0YCZ0cCZ3YEAmdICgACYmcJAPwHBAUCYmQCF2dldFN3YXBDb250cmFjdFJFQURPTkxZBQNuaWwFA25pbAMJAAECBQJiZwIGU3RyaW5nBQJiZwkAAgEJAKwCAgkAAwEFAmJnAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcEAmZWCQDMCAIDCQBnAggJAQV2YWx1ZQEJAJEDAggFAmZiCHBheW1lbnRzAAAGYW1vdW50BQJndAYJAQJiYQECDFdyb25nIGFtb3VudAkAzAgCAwkAAAIIBQJmYgZjYWxsZXIJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdIBgkBAmJhAQIRUGVybWlzc2lvbiBkZW5pZWQFA25pbAMJAAACBQJmVgUCZlYEAmZjCQEFdmFsdWUBCQCRAwIIBQJmYghwYXltZW50cwAABAJneQkBAmJwAQgFAmZjB2Fzc2V0SWQEAmd4AwkAAAIFAmd1BwkBAmFXAgUEdGhpcwkBAmFmAAkBAmFXAgUEdGhpcwkBAmFlAAQCZ3oJAGUCCQBlAgkBAmJUAQUCZ3kICQEFdmFsdWUBCQCRAwIIBQJmYghwYXltZW50cwAABmFtb3VudAUCZ3YEAmdBCQECYlQBBQJneAQCZ0IJAGsDBQJnQQUCZ3QJAGQCBQJnegUCZ3QEAmdDCQC5AgIJALYCAQUCZ3oJALYCAQUCZ0EEAmdECQC5AgIJALcCAgkAtgIBCQECYlQBBQJneQkAtgIBBQJndgkAuAICCQC2AgEJAQJiVAEFAmd4CQC2AgEFAmdCBAJnRQMJAMACAgUCZ0QFAmdDBgkAAgECFG5ldyBLIGlzIGZld2VyIGVycm9yAwkAAAIFAmdFBQJnRQQCZ0kDCQBnAgUCZ0IFAmdGBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmdJBQJnSQQCZ0oJAQJjSQEFAmd5AwkAAAIFAmdKBQJnSgQCZ0sJAQJjUAIFAmd4BQJnQgMJAAACBQJnSwUCZ0sJAJQKAgkAzggCCQDOCAIFAmdLBQJnSgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnRwUCZ0IJAQJibgEFAmd4BQNuaWwFAmdCCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiAQNwdXQCAmRPAmdMAwkAZgIAAAUCZE8JAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZmgJAQJmZQMFAmZiBQJkTwYEAmVxCAUCZmgCXzIEAmR2CAUCZmgCXzcEAmRNCAUCZmgCXzkEAmVyCAUCZmgDXzEwBAJlcwgFAmZoA18xMQQCZ00IBQJmaANfMTIEAmdOCAUCZmgDXzEzBAJmZgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZmIIcGF5bWVudHMAAAZhbW91bnQEAmZnCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJmYghwYXltZW50cwABBmFtb3VudAQCZUgJAQJlQQMFAmZmBQJmZwkAtgIBAAADCQAAAgUCZUgFAmVIBAJmagkA/AcEBQJiZAIEZW1pdAkAzAgCBQJlcQUDbmlsBQNuaWwDCQAAAgUCZmoFAmZqBAJmawQCYVEFAmZqAwkAAQIFAmFRAgdBZGRyZXNzBAJmbAUCYVEJAPwHBAUCZmwCBGVtaXQJAMwIAgUCZXEFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZrBQJmawQCZ08DCQBmAgUCZXIAAAkA/AcEBQJiRAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdNBQJlcgUDbmlsBQNuaWwDCQAAAgUCZ08FAmdPBAJnUAMJAGYCBQJlcwAACQD8BwQFAmJEAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ04FAmVzBQNuaWwFA25pbAMJAAACBQJnUAUCZ1AEAmdRAwUCZ0wEAmdSCQD8BwQFAmJDAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkdgUCZXEFA25pbAMJAAACBQJnUgUCZ1IFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZmIGY2FsbGVyBQJlcQUCZHYFA25pbAQCZ1MJAQJlSQMAAAAAAAADCQAAAgUCZ1MFAmdTBAJleggFAmdTAl8yBAJnVAgFAmdTAl8xBAJnVQkBAmVOAgUCZUgFAmV6AwkAAAIFAmdVBQJnVQQCZ1YJAPwHBAUEdGhpcwIJcmViYWxhbmNlBQNuaWwFA25pbAMJAAACBQJnVgUCZ1YJAM4IAgkAzggCBQJkTQUCZ1EFAmdUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiAQpwdXRGb3JGcmVlAQJnVwMJAGYCAAAFAmdXCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmZoCQECZmUDBQJmYgUCZ1cHBAJkTQgFAmZoAl85BAJmZgkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZmIIcGF5bWVudHMAAAZhbW91bnQEAmZnCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJmYghwYXltZW50cwABBmFtb3VudAQCZUgJAQJlQQMFAmZmBQJmZwkAtgIBAAADCQAAAgUCZUgFAmVIBAJnWAkBAmVJAwAAAAAAAAQCZ1QIBQJnWAJfMQQCZXoIBQJnWAJfMgQCZ1UJAQJlTgIFAmVIBQJlegMJAAACBQJnVQUCZ1UJAM4IAgUCZE0FAmdUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiAQlwdXRPbmVUa24CAmdZAmdaBAJoYQoAAmJnCQD8BwQFAmJkAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCB0Jvb2xlYW4FAmJnCQACAQkArAICCQADAQUCYmcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhiAwMDCQECYmkABgkAAAIFAmJ2BQFsBgkAAAIFAmJ2BQFuBgUCaGEEAmZWCQDMCAIDAwkBASEBBQJoYgYJAQJncAEFAmZiBgkBAmJhAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZmIIcGF5bWVudHMAAQYJAQJiYQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZWBQJmVgQCaGMJAJEDAggFAmZiCHBheW1lbnRzAAAEAmZxCAUCaGMHYXNzZXRJZAQCZnAIBQJoYwZhbW91bnQEAmVIAwkAAAIFAmZxBQJieAkBAmVBAwkAtgIBBQJmcAkAtgIBAAAJALYCAQAAAwkAAAIFAmZxBQJieQkBAmVBAwkAtgIBAAAJALYCAQUCZnAJALYCAQAACQECYmEBAh5wYXltZW50IGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgUCZUgFAmVIBAJhYggFAmZiBmNhbGxlcgQCYWMIBQJmYg10cmFuc2FjdGlvbklkBAJoZAkBAmZvBAUCZnAFAmZxBQJhYgUCYWMDCQAAAgUCaGQFAmhkBAJmdQgFAmhkAl81BAJoZQgFAmhkAl80BAJmbggFAmhkAl8zBAJldAgFAmhkAl8yBAJoZggFAmhkAl8xBAJoZwMDCQBmAgUCZ1kAAAkAZgIFAmdZBQJoZgcJAQJiYQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ1kFA25pbAIABQJoZgQCZmoJAQJmaQEFAmhnAwkAAAIFAmZqBQJmagQCZ1EDBQJnWgQCaGgJAPwHBAUCYkMCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJ3BQJoZwUDbmlsAwkAAAIFAmhoBQJoaAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJmYgZjYWxsZXIFAmhnBQJidwUDbmlsBAJoaQMJAGYCBQJmbgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJlBQJmbgUCZnEFA25pbAUDbmlsBAJoagMJAAACBQR0aGlzBQJiZQkAlAoCAAAAAAMFAmZ1CQCUCgIJAQEtAQUCZm4AAAkAlAoCAAAJAQEtAQUCZm4EAmVKCAUCaGoCXzEEAmVLCAUCaGoCXzIEAmhrCQECZUkDBQJlSgUCZUsAAAQCZ1QIBQJoawJfMQQCZXoIBQJoawJfMgQCZVUJAQV2YWx1ZQEJAKIIAQUCYWoEAmdVCQECZU4CBQJlSAUCZXoDCQAAAgUCZ1UFAmdVBAJnVgkA/AcEBQR0aGlzAglyZWJhbGFuY2UFA25pbAUDbmlsAwkAAAIFAmdWBQJnVgkAlAoCCQDOCAIJAM4IAgkAzggCBQJldAUCZ1EFAmhpBQJnVAUCaGcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmIBEXB1dE9uZVRrblJFQURPTkxZAgJmcQJmcAQCaGwJAQJmbwQFAmZwCQECYm4BBQJmcQUEdW5pdAUEdW5pdAQCaGYIBQJobAJfMQQCZXQIBQJobAJfMgQCZm4IBQJobAJfMwQCaGUIBQJobAJfNAQCZnUIBQJobAJfNQkAlAoCBQNuaWwJAJUKAwUCaGYFAmZuBQJoZQJmYgEJZ2V0T25lVGtuAgJobQJnWQQCaGEKAAJiZwkA/AcEBQJiZAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJnAgdCb29sZWFuBQJiZwkAAgEJAKwCAgkAAwEFAmJnAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJobgMDCQECYmkABgkAAAIFAmJ2BQFuBgUCaGEEAmZWCQDMCAIDAwkBASEBBQJobgYJAQJncAEFAmZiBgkBAmJhAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZmIIcGF5bWVudHMAAQYJAQJiYQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZWBQJmVgQCZlUJAQJibgEFAmhtBAJoYwkAkQMCCAUCZmIIcGF5bWVudHMAAAQCZnEIBQJoYwdhc3NldElkBAJmQwgFAmhjBmFtb3VudAQCZUgJAQJlQQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUgFAmVIBAJhYggFAmZiBmNhbGxlcgQCYWMIBQJmYg10cmFuc2FjdGlvbklkBAJobwkBAmZUBQUCZlUFAmZDBQJmcQUCYWIFAmFjAwkAAAIFAmhvBQJobwQCZlcIBQJobwJfNQQCaGUIBQJobwJfNAQCZm4IBQJobwJfMwQCZXQIBQJobwJfMgQCaHAIBQJobwJfMQQCY2YDAwkAZgIFAmdZAAAJAGYCBQJnWQUCaHAHCQECYmEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmdZBQNuaWwCAAUCaHAEAmhxCQD8BwQFAmJkAgRidXJuCQDMCAIFAmZDBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZxBQJmQwUDbmlsAwkAAAIFAmhxBQJocQQCZ0sJAQJjUAIFAmhtCQBkAgUCY2YJAJYDAQkAzAgCAAAJAMwIAgUCZm4FA25pbAQCaHIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmNmBQJmVQUDbmlsBAJoaQMJAGYCBQJmbgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJlBQJmbgUCZlUFA25pbAUDbmlsBAJocwQCaHQDCQAAAgUEdGhpcwUCYmUAAAUCZm4DBQJmVwkAlAoCCQEBLQEJAGQCBQJjZgUCaHQAAAkAlAoCAAAJAQEtAQkAZAIFAmNmBQJodAQCZUoIBQJocwJfMQQCZUsIBQJocwJfMgQCaHUJAQJlSQMFAmVKBQJlSwAABAJnVAgFAmh1Al8xBAJleggFAmh1Al8yBAJnVQkBAmVOAgUCZUgFAmV6AwkAAAIFAmdVBQJnVQkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIFAmV0BQJnSwUCaHIFAmhpBQJnVAUCY2YJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmIBEWdldE9uZVRrblJFQURPTkxZAgJmVQJmQwQCaHYJAQJmVAUJAQJibgEFAmZVBQJmQwUCYncFBHVuaXQFBHVuaXQEAmhwCAUCaHYCXzEEAmV0CAUCaHYCXzIEAmZuCAUCaHYCXzMEAmhlCAUCaHYCXzQEAmZXCAUCaHYCXzUJAJQKAgUDbmlsCQCVCgMFAmhwBQJmbgUCaGUCZmIBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmh3AmhtAmdZBAJoYQoAAmJnCQD8BwQFAmJkAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYmcCB0Jvb2xlYW4FAmJnCQACAQkArAICCQADAQUCYmcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhuAwMJAQJiaQAGCQAAAgUCYnYFAW4GBQJoYQQCZlYJAMwIAgMDCQEBIQEFAmhuBgkBAmdwAQUCZmIGCQECYmEBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJmYghwYXltZW50cwAABgkBAmJhAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlYFAmZWBAJmVQkBAmJuAQUCaG0EAmFiCAUCZmIGY2FsbGVyBAJhYwgFAmZiDXRyYW5zYWN0aW9uSWQEAmVICQECZUEDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVIBQJlSAQCaHgJAPwHBAUCYkMCB3Vuc3Rha2UJAMwIAgkA2AQBBQJidwkAzAgCBQJodwUDbmlsBQNuaWwDCQAAAgUCaHgFAmh4BAJoeQkBAmZUBQUCZlUFAmh3BQJidwUCYWIFAmFjAwkAAAIFAmh5BQJoeQQCZlcIBQJoeQJfNQQCaGUIBQJoeQJfNAQCZm4IBQJoeQJfMwQCZXQIBQJoeQJfMgQCaHAIBQJoeQJfMQQCY2YDAwkAZgIFAmdZAAAJAGYCBQJnWQUCaHAHCQECYmEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmdZBQNuaWwCAAUCaHAEAmhxCQD8BwQFAmJkAgRidXJuCQDMCAIFAmh3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJ3BQJodwUDbmlsAwkAAAIFAmhxBQJocQQCZ0sJAQJjUAIFAmhtCQBkAgUCY2YJAJYDAQkAzAgCAAAJAMwIAgUCZm4FA25pbAQCaHIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmZiBmNhbGxlcgUCY2YFAmZVBQNuaWwEAmhpAwkAZgIFAmZuAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYmUFAmZuBQJmVQUDbmlsBQNuaWwEAmh6BAJodAMJAAACBQR0aGlzBQJiZQAABQJmbgMFAmZXCQCUCgIJAQEtAQkAZAIFAmNmBQJodAAACQCUCgIAAAkBAS0BCQBkAgUCY2YFAmh0BAJlSggFAmh6Al8xBAJlSwgFAmh6Al8yBAJoQQkBAmVJAwUCZUoFAmVLAAAEAmdUCAUCaEECXzEEAmV6CAUCaEECXzIEAmdVCQECZU4CBQJlSAUCZXoDCQAAAgUCZ1UFAmdVCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgUCZXQFAmdLBQJocgUCaGkFAmdUBQJjZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmYgEDZ2V0AAQCZWUJAQJmYQEFAmZiBAJkSwgFAmVlAl8xBAJkTAgFAmVlAl8yBAJmZAgFAmVlAl8zBAJkdAgFAmVlAl80BAJkTQgFAmVlAl81BAJnSwkBAmNVAgUCZEsFAmRMBAJlSAkBAmVBAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSAUCZUgEAmhCCQD8BwQFAmJkAgRidXJuCQDMCAIFAmZkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR0BQJmZAUDbmlsAwkAAAIFAmhCBQJoQgQCaEMJAQJlSQMJAQEtAQUCZEsJAQEtAQUCZEwAAAQCZ1QIBQJoQwJfMQQCZXoIBQJoQwJfMgQCZ1UJAQJlTgIFAmVIBQJlegMJAAACBQJnVQUCZ1UJAM4IAgkAzggCBQJnSwUCZE0FAmdUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiAQlnZXROb0xlc3MCAmhEAmhFBAJlZQkBAmZhAQUCZmIEAmRLCAUCZWUCXzEEAmRMCAUCZWUCXzIEAmZkCAUCZWUCXzMEAmR0CAUCZWUCXzQEAmRNCAUCZWUCXzUDCQBmAgUCaEQFAmRLCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJkSwIDIDwgCQCkAwEFAmhEAwkAZgIFAmhFBQJkTAkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmRMAgMgPCAJAKQDAQUCaEUEAmdLCQECY1UCBQJkSwUCZEwEAmVICQECZUEDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVIBQJlSAQCaEIJAPwHBAUCYmQCBGJ1cm4JAMwIAgUCZmQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHQFAmZkBQNuaWwDCQAAAgUCaEIFAmhCBAJoRgkBAmVJAwkBAS0BBQJkSwkBAS0BBQJkTAAABAJnVAgFAmhGAl8xBAJleggFAmhGAl8yBAJnVQkBAmVOAgUCZUgFAmV6AwkAAAIFAmdVBQJnVQkAzggCCQDOCAIFAmdLBQJkTQUCZ1QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmIBDXVuc3Rha2VBbmRHZXQBAmNmBAJoRwMJAQIhPQIJAJADAQgFAmZiCHBheW1lbnRzAAAJAAIBAhhObyBwYXltZW50cyBhcmUgZXhwZWN0ZWQGAwkAAAIFAmhHBQJoRwQCZGkJAQJiawAEAmR2CQDZBAEJAJEDAgUCZGkFAXEEAmVICQECZUEDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVIBQJlSAQCaHgJAPwHBAUCYkMCB3Vuc3Rha2UJAMwIAgkA2AQBBQJkdgkAzAgCBQJjZgUDbmlsBQNuaWwDCQAAAgUCaHgFAmh4BAJlZQkBAmRyBAkA2AQBCAUCZmINdHJhbnNhY3Rpb25JZAkA2AQBBQJkdgUCY2YIBQJmYgZjYWxsZXIEAmRLCAUCZWUCXzEEAmRMCAUCZWUCXzIEAmR5CQENcGFyc2VJbnRWYWx1ZQEIBQJlZQJfOQQCZE0IBQJlZQNfMTAEAmdLCQECY1UCBQJkSwUCZEwEAmhIAwMJAQJiaQAGCQAAAgUCZHkFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmR5BgMJAAACBQJoSAUCaEgEAmhCCQD8BwQFAmJkAgRidXJuCQDMCAIFAmNmBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR2BQJjZgUDbmlsAwkAAAIFAmhCBQJoQgQCaEkJAQJlSQMJAQEtAQUCZEsJAQEtAQUCZEwAAAQCZ1QIBQJoSQJfMQQCZXoIBQJoSQJfMgQCZ1UJAQJlTgIFAmVIBQJlegMJAAACBQJnVQUCZ1UJAM4IAgkAzggCBQJnSwUCZE0FAmdUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJodwJoSgJoRQQCaG4DCQECYmkABgkAAAIFAmJ2BQFuBAJmVgkAzAgCAwkBASEBBQJobgYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJmYghwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZWBQJmVgQCZUgJAQJlQQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUgFAmVIBAJoeAkA/AcEBQJiQwIHdW5zdGFrZQkAzAgCCQDYBAEFAmJ3CQDMCAIFAmh3BQNuaWwFA25pbAMJAAACBQJoeAUCaHgEAmVlCQECZHIECQDYBAEIBQJmYg10cmFuc2FjdGlvbklkCQDYBAEFAmJ3BQJodwgFAmZiBmNhbGxlcgQCZEsIBQJlZQJfMQQCZEwIBQJlZQJfMgQCZE0IBQJlZQNfMTAEAmdLCQECY1UCBQJkSwUCZEwEAmhLCQDMCAIDCQBnAgUCZEsFAmhKBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhKBQNuaWwCAAkAzAgCAwkAZwIFAmRMBQJoRQYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhFBQNuaWwCAAUDbmlsAwkAAAIFAmhLBQJoSwQCaEIJAPwHBAUCYmQCBGJ1cm4JAMwIAgUCaHcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYncFAmh3BQNuaWwDCQAAAgUCaEIFAmhCBAJoTAkBAmVJAwkBAS0BBQJkSwkBAS0BBQJkTAAABAJnVAgFAmhMAl8xBAJleggFAmhMAl8yBAJnVQkBAmVOAgUCZUgFAmV6AwkAAAIFAmdVBQJnVQkAzggCCQDOCAIFAmdLBQJkTQUCZ1QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmIBCGFjdGl2YXRlAgJoTQJoTgMJAQIhPQIJAKUIAQgFAmZiBmNhbGxlcgkApQgBBQJiZAkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQAFAmhNCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgAFAmhOBQNuaWwCB3N1Y2Nlc3MCZmIBCnJlZnJlc2hLTHAABAJoTwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhawAABAJoUAMJAGcCCQBlAgUGaGVpZ2h0BQJoTwUCYW4FBHVuaXQJAQJiYQEJALkJAgkAzAgCCQCkAwEFAmFuCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJoUAUCaFAEAmVVCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhagIBMAkBAmJjAQILaW52YWxpZCBrTHAEAmhRCQECZUkDAAAAAAAABAJoUggFAmhRAl8xBAJleggFAmhRAl8yBAJlTAMJAQIhPQIFAmVVBQJlegUCaFIJAQJiYQECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJlTAkApgMBBQJlegkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmYgEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYmsAAmZiARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJhcAkAlAoCBQNuaWwJAQJiVAEFAmFwAmZiARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJkYwJkZAJkaAQCZHEJAQJkZwMFAmRjBQJkZAUCZGgJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJkcQAACQDMCAIJAKYDAQkAkQMCBQJkcQABCQDMCAIJAKYDAQkAkQMCBQJkcQACBQNuaWwCZmIBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJmYgEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSQFKCQCUCgIFA25pbAkBAUgCCQCnAwEFAUkFAUoCZmIBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYlgCYlkJAJQKAgUDbmlsCQCmAwEJAQJiVwIJAKcDAQUCYlgJAKcDAQUCYlkCZmIBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJkcwJkTwJkUAJkUQJkUgJkUwJhYgJkVAJkVQkAlAoCBQNuaWwJAQJkTgkFAmRzBQJkTwUCZFAFAmRRBQJkUgUCZFMFAmFiBQJkVAUCZFUCZmIBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJkcwJkdAJkdQJhYgQCZWUJAQJkcgQFAmRzBQJkdAUCZHUJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFiCQCUCgIFA25pbAkAnAoKCAUCZWUCXzEIBQJlZQJfMggFAmVlAl8zCAUCZWUCXzQIBQJlZQJfNQgFAmVlAl82CAUCZWUCXzcJAKYDAQgFAmVlAl84CAUCZWUCXzkIBQJlZQNfMTACZmIBDXN0YXRzUkVBRE9OTFkABAJkaQkBAmJrAAQCZHYJANkEAQkAkQMCBQJkaQUBcQQCaFMJAJEDAgUCZGkFAXIEAmhUCQCRAwIFAmRpBQFzBAJkWAkAkQMCBQJkaQUBdgQCZFkJAJEDAgUCZGkFAXcEAmRqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXQEAmRrCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXUEAmhVCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmR2CQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmR2Ag4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaFYJAQJiVAEFAmhTBAJoVwkBAmJUAQUCaFQEAmhYAwkAAAIFAmhVAAAJAMwIAgUBZQkAzAgCBQFlCQDMCAIFAWUFA25pbAkBAmRnAwUCaFYFAmhXBQJoVQQCZEYAAAQCaFkJAQFIAgkAkQMCBQJoWAABBQFiBAJoWgkBAUgCCQCRAwIFAmhYAAIFAWIEAmlhCQEFdmFsdWUBCQCaCAIFAmJkCQECYUQBCQClCAEFBHRoaXMJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJoVgkAzAgCCQCkAwEFAmhXCQDMCAIJAKQDAQUCaFUJAMwIAgkApAMBBQJkRgkAzAgCCQCkAwEFAmhZCQDMCAIJAKQDAQUCaFoJAMwIAgkApAMBBQJpYQUDbmlsBQFqAmZiASBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQECZFAEAmRpCQECYmsABAJkdgkA2QQBCQCRAwIFAmRpBQFxBAJkVgkAkQMCBQJkaQUBcgQCZHcJANkEAQUCZFYEAmRXCQCRAwIFAmRpBQFzBAJkeAkA2QQBBQJkVwQCZGoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBdAQCZGsJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBdQQCZHkJAJEDAgUCZGkFAXAEAmhVCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmR2CQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmR2Ag4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaFYJAQJiVAEFAmRWBAJoVwkBAmJUAQUCZFcEAmRlCQEBRAIFAmhWBQJkagQCZGYJAQFEAgUCaFcFAmRrBAJkRQMJAAACBQJoVQAABQFlCQECYlcCBQJkZgUCZGUEAmViCQEBRAIFAmRQBQJkagQCZWMJALwCAwUCZWIFAmRFBQFkBAJkUgkBAUgCBQJlYwUCZGsEAmZoCQECZE4JAgAAoMIeBQJkUAUCZHcFAmRSBQJkeAIABgcEAmVtCAUCZmgCXzEEAmliCAUCZmgCXzMEAmRBCAUCZmgCXzQEAmRDCAUCZmgCXzUEAmR6CAUCZmgCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmVtCQDMCAIJAKQDAQkBAUgCBQJkRQUBYgkAzAgCCQCkAwEFAmRBCQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkegkAzAgCBQJkeQkAzAgCCQCkAwEFAmRQCQDMCAIJAKQDAQUCZFIFA25pbAUBagJmYgEfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQECZFIEAmRpCQECYmsABAJkdgkA2QQBCQCRAwIFAmRpBQFxBAJkVgkAkQMCBQJkaQUBcgQCZHcJANkEAQUCZFYEAmRXCQCRAwIFAmRpBQFzBAJkeAkA2QQBBQJkVwQCZGoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBdAQCZGsJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBdQQCZHkJAJEDAgUCZGkFAXAEAmhVCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmR2CQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmR2Ag4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaWMJAQJiVAEFAmRWBAJpZAkBAmJUAQUCZFcEAmllCQEBRAIFAmljBQJkagQCaWYJAQFEAgUCaWQFAmRrBAJkRQMJAAACBQJoVQAABQFlCQECYlcCBQJpZgUCaWUEAmVjCQEBRAIFAmRSBQJkawQCZWIJALwCAwUCZWMFAWQFAmRFBAJkUAkBAUgCBQJlYgUCZGoEAmZoCQECZE4JAgAAoMIeBQJkUAUCZHcFAmRSBQJkeAIABgcEAmVtCAUCZmgCXzEEAmliCAUCZmgCXzMEAmRBCAUCZmgCXzQEAmRDCAUCZmgCXzUEAmR6CAUCZmgCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmVtCQDMCAIJAKQDAQkBAUgCBQJkRQUBYgkAzAgCCQCkAwEFAmRBCQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkegkAzAgCBQJkeQkAzAgCCQCkAwEFAmRQCQDMCAIJAKQDAQUCZFIFA25pbAUBagJmYgETZXZhbHVhdGVHZXRSRUFET05MWQICaWcCaWgEAmVlCQECZHIEAgAFAmlnBQJpaAUEdGhpcwQCZEsIBQJlZQJfMQQCZEwIBQJlZQJfMgQCZEEIBQJlZQJfNQQCZEMIBQJlZQJfNgQCZHoIBQJlZQJfNwQCZEYIBQJlZQJfOAQCZHkJAQ1wYXJzZUludFZhbHVlAQgFAmVlAl85CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZEsJAMwIAgkApAMBBQJkTAkAzAgCCQCkAwEFAmRBCQDMCAIJAKQDAQUCZEMJAMwIAgkApAMBBQJkegkAzAgCCQCmAwEFAmRGCQDMCAIJAKQDAQUCZHkFA25pbAUBagECaWkBAmlqAAQCaWsEAmFRCQECZ24AAwkAAQIFAmFRAgpCeXRlVmVjdG9yBAJncQUCYVEFAmdxAwkAAQIFAmFRAgRVbml0CAUCaWkPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmFRBQJpaQMJAAECBQJhUQIFT3JkZXIEAmVRBQJhUQQCaWwJAQJiagAEAmltAwkBAmVNAAkAlAoCBgIACQECZVABBQJlUQQCYUsIBQJpbQJfMQQCYUwIBQJpbQJfMgQCYU0JAPQDAwgFAmVRCWJvZHlCeXRlcwkAkQMCCAUCZVEGcHJvb2ZzAAAIBQJlUQ9zZW5kZXJQdWJsaWNLZXkEAmFOCQD0AwMIBQJlUQlib2R5Qnl0ZXMJAJEDAggFAmVRBnByb29mcwABBQJpbAMDAwUCYUsFAmFNBwUCYU4HBgkBAmFKBAUCYUsFAmFMBQJhTQUCYU4DCQABAgUCYVECFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJhVgUCYVEDCQD0AwMIBQJpaQlib2R5Qnl0ZXMJAJEDAggFAmlpBnByb29mcwAABQJpawYEAmluCQD2AwEJAQV2YWx1ZQEIBQJhVgZzY3JpcHQEAmlvCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYmQJAQJhRgAEAmlwCQDxBwEFBHRoaXMDCQAAAgUCaW8FAmluCQECIT0CBQJpcAUCaW4HCQD0AwMIBQJpaQlib2R5Qnl0ZXMJAJEDAggFAmlpBnByb29mcwAABQJpa41Ixbk=", "height": 2659511, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8YyxYFpGM5vrvFTzpLVwSLffvi3fmz6rfKkL5TqRZsEU Next: GjdB5ccHZVQDQmdNLpnyBiQzrhis8F6mcffmUi1PFTy7 Diff:
OldNewDifferences
665665 func eM () = valueOrElse(getBoolean(bd, aH(toString(this))), false)
666666
667667
668-func eN (eO,ez) = if ((ez >= eO))
668+func eN (eO,ez) = if (if ((ez == f))
669+ then true
670+ else (ez >= eO))
669671 then true
670672 else ba(makeString(["updated KLp lower than current KLp", toString(eO), toString(ez)], " "))
671673
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (E,F) = fraction(E, d, F)
6666
6767
6868 func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
7171 func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
7474 func M (N,O,P) = fraction(N, O, P)
7575
7676
7777 func Q (I) = if ((0 > I))
7878 then -(I)
7979 else I
8080
8181
8282 func R (I) = if ((e > I))
8383 then -(I)
8484 else I
8585
8686
8787 func S () = "%s__swapContract"
8888
8989
9090 func T () = "%s__factoryContract"
9191
9292
9393 func U () = "%s__managerPublicKey"
9494
9595
9696 func V () = "%s__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
171171 func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
172172
173173
174174 func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
175175
176176
177177 func aO (aP) = {
178178 let aQ = addressFromString(aP)
179179 if ($isInstanceOf(aQ, "Address"))
180180 then {
181181 let aR = aQ
182182 aR
183183 }
184184 else this
185185 }
186186
187187
188188 func aS () = {
189189 let aT = {
190190 let aQ = getString(T())
191191 if ($isInstanceOf(aQ, "String"))
192192 then {
193193 let aU = aQ
194194 aO(aU)
195195 }
196196 else this
197197 }
198198 let aQ = getString(aT, V())
199199 if ($isInstanceOf(aQ, "String"))
200200 then {
201201 let aV = aQ
202202 aO(aV)
203203 }
204204 else this
205205 }
206206
207207
208208 func aW (aX,aY) = valueOrErrorMessage(getString(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
209209
210210
211211 func aZ (aX,aY) = valueOrErrorMessage(getInteger(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
212212
213213
214214 func ba (bb) = throw(makeString(["lp.ride:", bb], " "))
215215
216216
217217 func bc (bb) = makeString(["lp.ride:", bb], " ")
218218
219219
220220 let bd = addressFromStringValue(aW(this, T()))
221221
222222 let be = addressFromStringValue(aW(bd, aG))
223223
224224 let bf = {
225225 let bg = invoke(bd, "getInFeeREADONLY", [toString(this)], nil)
226226 if ($isInstanceOf(bg, "Int"))
227227 then bg
228228 else throw(($getType(bg) + " couldn't be cast to Int"))
229229 }
230230
231231 let bh = {
232232 let bg = invoke(bd, "getOutFeeREADONLY", [toString(this)], nil)
233233 if ($isInstanceOf(bg, "Int"))
234234 then bg
235235 else throw(($getType(bg) + " couldn't be cast to Int"))
236236 }
237237
238238 func bi () = valueOrElse(getBoolean(bd, aC()), false)
239239
240240
241241 func bj () = fromBase58String(aW(bd, au()))
242242
243243
244244 func bk () = {
245245 let bl = aW(this, ae())
246246 let bm = aW(this, af())
247247 let az = aZ(bd, aA(bm))
248248 let ay = aZ(bd, aA(bl))
249249 split(aW(bd, ax(toString(ay), toString(az))), j)
250250 }
251251
252252
253253 func bn (bo) = if ((bo == i))
254254 then unit
255255 else fromBase58String(bo)
256256
257257
258258 func bp (bo) = if ((bo == unit))
259259 then i
260260 else toBase58String(value(bo))
261261
262262
263263 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]))
264264
265265
266266 let bs = bq(bk())
267267
268268 let bt = bs
269269
270270 let bu = bt._1
271271
272272 let bv = bt._2
273273
274274 let bw = bt._3
275275
276276 let bx = bt._4
277277
278278 let by = bt._5
279279
280280 let bz = bt._6
281281
282282 let bA = bt._7
283283
284284 func bB () = split(aW(bd, at()), j)
285285
286286
287287 let bC = valueOrErrorMessage(addressFromString(bB()[B]), "incorrect staking address")
288288
289289 let bD = valueOrErrorMessage(addressFromString(bB()[C]), "incorrect staking address")
290290
291291 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)
292292
293293
294294 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)
295295
296296
297297 func bT (ap) = {
298298 let bU = if ((ap == "WAVES"))
299299 then wavesBalance(this).available
300300 else assetBalance(this, fromBase58String(ap))
301301 let bV = ((bU + ar(ap)) - as(ap))
302302 max([0, bV])
303303 }
304304
305305
306306 func bW (bX,bY) = fraction(bX, d, bY)
307307
308308
309309 func bZ (bX,bY,L) = fraction(bX, d, bY, L)
310310
311311
312312 func ca (cb) = {
313313 let cc = invoke(cb, "getRate", nil, nil)
314314 if ((cc == cc))
315315 then {
316316 let aQ = cc
317317 if ($isInstanceOf(aQ, "Int"))
318318 then {
319319 let cd = aQ
320320 cd
321321 }
322322 else ba("proxy.getRate() unexpected value")
323323 }
324324 else throw("Strict value is not equal to itself.")
325325 }
326326
327327
328328 func ce (ap,cf,cg,cb) = {
329329 let ch = ar(ap)
330330 if ((ch == ch))
331331 then {
332332 let ci = as(cg)
333333 if ((ci == ci))
334334 then {
335335 let cj = bn(ap)
336336 if ((cf > 0))
337337 then {
338338 let ck = invoke(cb, "deposit", nil, [AttachedPayment(cj, cf)])
339339 if ((ck == ck))
340340 then {
341341 let aQ = ck
342342 if ($isInstanceOf(aQ, "Int"))
343343 then {
344344 let cl = aQ
345345 let cm = (ch + cf)
346346 let cn = (ci + cl)
347347 [IntegerEntry(ao(ap), cm), IntegerEntry(aq(cg), cn)]
348348 }
349349 else nil
350350 }
351351 else throw("Strict value is not equal to itself.")
352352 }
353353 else nil
354354 }
355355 else throw("Strict value is not equal to itself.")
356356 }
357357 else throw("Strict value is not equal to itself.")
358358 }
359359
360360
361361 func co (ap,cf,cg,cb,cp,cq) = {
362362 let ch = ar(ap)
363363 if ((ch == ch))
364364 then {
365365 let ci = as(cg)
366366 if ((ci == ci))
367367 then {
368368 let cr = ca(cb)
369369 if ((cr == cr))
370370 then {
371371 let cs = fraction(cp, ch, ci)
372372 let ct = bn(cg)
373373 let cu = fraction(cp, cf, cs)
374374 let cv = fraction(cp, cf, cr)
375375 let cw = max([0, (cu - cv)])
376376 if ((cv > 0))
377377 then {
378378 let cx = invoke(cb, "withdraw", nil, [AttachedPayment(ct, cv)])
379379 if ((cx == cx))
380380 then {
381381 let aQ = cx
382382 if ($isInstanceOf(aQ, "Int"))
383383 then {
384384 let cy = aQ
385385 let cm = (ch - cy)
386386 let cn = ((ci - cv) - cw)
387387 [IntegerEntry(ao(ap), cm), IntegerEntry(aq(cg), cn), ScriptTransfer(cq, cw, bn(cg))]
388388 }
389389 else nil
390390 }
391391 else throw("Strict value is not equal to itself.")
392392 }
393393 else nil
394394 }
395395 else throw("Strict value is not equal to itself.")
396396 }
397397 else throw("Strict value is not equal to itself.")
398398 }
399399 else throw("Strict value is not equal to itself.")
400400 }
401401
402402
403403 func cz (ap) = {
404404 let aQ = invoke(bd, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
405405 if ($isInstanceOf(aQ, "(Boolean, Int, Int, String, String, Int, String)"))
406406 then {
407407 let aR = aQ
408408 aR
409409 }
410410 else ba((("[" + ap) + "] getLeaseProxyConfig() error"))
411411 }
412412
413413
414414 func cA (cB,ap,cg,cC,cb,cp,cq) = {
415415 let ch = ar(ap)
416416 if ((ch == ch))
417417 then {
418418 let ci = as(cg)
419419 if ((ci == ci))
420420 then {
421421 let cD = max([0, (bT(ap) - cC)])
422422 let cE = fraction(cB, cD, 100)
423423 let cF = (ch - cE)
424424 if ((cF == 0))
425425 then nil
426426 else if ((0 > cF))
427427 then {
428428 let cG = -(cF)
429429 ce(ap, cG, cg, cb)
430430 }
431431 else {
432432 let cH = cF
433433 co(ap, cH, cg, cb, cp, cq)
434434 }
435435 }
436436 else throw("Strict value is not equal to itself.")
437437 }
438438 else throw("Strict value is not equal to itself.")
439439 }
440440
441441
442442 func cI (ap) = {
443443 let cJ = cz(ap)
444444 let cK = cJ._1
445445 let cL = cJ._2
446446 let cC = cJ._3
447447 let cM = cJ._4
448448 let cN = cJ._5
449449 let cp = cJ._6
450450 let cO = cJ._7
451451 if (cK)
452452 then cA(cL, ap, cN, cC, addressFromStringValue(cM), cp, addressFromStringValue(cO))
453453 else nil
454454 }
455455
456456
457457 func cP (ap,cQ) = {
458458 let cR = cz(ap)
459459 let cK = cR._1
460460 let cL = cR._2
461461 let cC = cR._3
462462 let cM = cR._4
463463 let cN = cR._5
464464 let cp = cR._6
465465 let cO = cR._7
466466 if (cK)
467467 then {
468468 let cS = max([0, ((bT(ap) - cQ) - cC)])
469469 if ((cS == cS))
470470 then {
471471 let cm = fraction(cL, cS, 100)
472472 if ((cm == cm))
473473 then {
474474 let cT = (ar(ap) - cm)
475475 if ((cT == cT))
476476 then if ((0 > cT))
477477 then ce(ap, -(cT), cN, addressFromStringValue(cM))
478478 else co(ap, cT, cN, addressFromStringValue(cM), cp, addressFromStringValue(cO))
479479 else throw("Strict value is not equal to itself.")
480480 }
481481 else throw("Strict value is not equal to itself.")
482482 }
483483 else throw("Strict value is not equal to itself.")
484484 }
485485 else nil
486486 }
487487
488488
489489 func cU (cV,cW) = {
490490 let cX = cP(aW(this, ae()), cV)
491491 let cY = cP(aW(this, af()), cW)
492492 (cX ++ cY)
493493 }
494494
495495
496496 func cZ (da,db,dc,dd) = {
497497 let de = D(dc, da)
498498 let df = D(dd, db)
499499 bW(df, de)
500500 }
501501
502502
503503 func dg (dc,dd,dh) = {
504504 let di = bk()
505505 let dj = parseIntValue(di[t])
506506 let dk = parseIntValue(di[u])
507507 let dl = cZ(dj, dk, dc, dd)
508508 let bY = D(dc, dj)
509509 let bX = D(dd, dk)
510510 let dm = D(dh, b)
511511 let dn = bW(bY, dm)
512512 let do = bW(bX, dm)
513513 [dl, dn, do]
514514 }
515515
516516
517517 func dp (dc,dd,dh) = {
518518 let dq = dg(dc, dd, dh)
519519 [H(dq[0], b), H(dq[1], b), H(dq[2], b)]
520520 }
521521
522522
523523 func dr (ds,dt,du,ab) = {
524524 let di = bk()
525525 let dv = di[q]
526526 let dw = di[r]
527527 let dx = di[s]
528528 let da = parseIntValue(di[t])
529529 let db = parseIntValue(di[u])
530530 let dy = di[p]
531531 let dz = valueOrErrorMessage(assetInfo(fromBase58String(dv)), (("Asset " + dv) + " doesn't exist")).quantity
532532 if ((dv != dt))
533533 then throw("Invalid asset passed.")
534534 else {
535535 let dA = bT(dw)
536536 let dB = D(dA, da)
537537 let dC = bT(dx)
538538 let dD = D(dC, db)
539539 let dE = bW(dD, dB)
540540 let dF = H(dE, b)
541541 let dG = D(du, b)
542542 let dH = D(dz, b)
543543 let dI = fraction(dB, dG, dH)
544544 let dJ = fraction(dD, dG, dH)
545545 let dK = K(dI, da, FLOOR)
546546 let dL = K(dJ, db, FLOOR)
547547 let dM = if ((ds == ""))
548548 then nil
549549 else [ScriptTransfer(ab, dK, if ((dw == "WAVES"))
550550 then unit
551551 else fromBase58String(dw)), ScriptTransfer(ab, dL, if ((dx == "WAVES"))
552552 then unit
553553 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)]
554554 $Tuple10(dK, dL, dw, dx, dA, dC, dz, dE, dy, dM)
555555 }
556556 }
557557
558558
559559 func dN (ds,dO,dP,dQ,dR,dS,ab,dT,dU) = {
560560 let di = bk()
561561 let dv = fromBase58String(di[q])
562562 let dV = di[r]
563563 let dW = di[s]
564564 let dX = di[v]
565565 let dY = di[w]
566566 let dj = parseIntValue(di[t])
567567 let dk = parseIntValue(di[u])
568568 let dy = di[p]
569569 let dz = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
570570 let dZ = toBase58String(valueOrElse(dQ, fromBase58String("WAVES")))
571571 let ea = toBase58String(valueOrElse(dS, fromBase58String("WAVES")))
572572 if (if ((dV != dZ))
573573 then true
574574 else (dW != ea))
575575 then throw("Invalid amt or price asset passed.")
576576 else {
577577 let dA = if (dT)
578578 then bT(dV)
579579 else (bT(dV) - dP)
580580 let dC = if (dT)
581581 then bT(dW)
582582 else (bT(dW) - dR)
583583 let eb = D(dP, dj)
584584 let ec = D(dR, dk)
585585 let ed = bW(ec, eb)
586586 let dB = D(dA, dj)
587587 let dD = D(dC, dk)
588588 let ee = if ((dz == 0))
589589 then {
590590 let dE = e
591591 let ef = e
592592 let dm = pow((eb * ec), 0, toBigInt(5), 1, 0, DOWN)
593593 $Tuple5(H(dm, b), H(eb, dj), H(ec, dk), bW((dD + ec), (dB + eb)), ef)
594594 }
595595 else {
596596 let dE = bW(dD, dB)
597597 let ef = fraction(R((dE - ed)), d, dE)
598598 let eg = D(dO, b)
599599 if (if ((dE != e))
600600 then (ef > eg)
601601 else false)
602602 then throw(((("Price slippage " + toString(ef)) + " exceeded the passed limit of ") + toString(eg)))
603603 else {
604604 let dH = D(dz, b)
605605 let eh = fraction(eb, bZ(dD, dB, CEILING), d, CEILING)
606606 let ei = fraction(ec, d, bZ(dD, dB, FLOOR), CEILING)
607607 let ej = if ((eh > ec))
608608 then $Tuple2(ei, ec)
609609 else $Tuple2(eb, eh)
610610 let ek = ej._1
611611 let el = ej._2
612612 let dm = fraction(dH, el, dD, FLOOR)
613613 $Tuple5(K(dm, b, FLOOR), K(ek, dj, CEILING), K(el, dk, CEILING), dE, ef)
614614 }
615615 }
616616 let em = ee._1
617617 let en = ee._2
618618 let eo = ee._3
619619 let dF = H(ee._4, b)
620620 let ep = H(ee._5, b)
621621 if ((0 >= em))
622622 then throw("Invalid calculations. LP calculated is less than zero.")
623623 else {
624624 let eq = if (!(dU))
625625 then 0
626626 else em
627627 let er = (dP - en)
628628 let es = (dR - eo)
629629 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))]
630630 $Tuple13(em, eq, dF, dA, dC, dz, dv, dy, et, er, es, dQ, dS)
631631 }
632632 }
633633 }
634634
635635
636636 func eu (ev,ew,dz) = {
637637 let ex = G(ev, toBigInt(bz))
638638 let ey = G(ew, toBigInt(bA))
639639 let ez = fraction(pow((ex * ey), 0, toBigInt(5), 1, 18, DOWN), g, dz)
640640 if ((dz == f))
641641 then f
642642 else ez
643643 }
644644
645645
646646 func eA (eB,eC,eD) = {
647647 let eE = (toBigInt(bT(bp(bx))) - eB)
648648 let eF = (toBigInt(bT(bp(by))) - eC)
649649 let eG = (toBigInt(value(assetInfo(bw)).quantity) - eD)
650650 let eH = eu(eE, eF, eG)
651651 eH
652652 }
653653
654654
655655 func eI (eJ,eK,eD) = {
656656 let eE = (bT(bp(bx)) + eJ)
657657 let eF = (bT(bp(by)) + eK)
658658 let eG = (value(assetInfo(bw)).quantity + eD)
659659 let ez = eu(toBigInt(eE), toBigInt(eF), toBigInt(eG))
660660 let eL = [IntegerEntry(ak, height), StringEntry(aj, toString(ez))]
661661 $Tuple2(eL, ez)
662662 }
663663
664664
665665 func eM () = valueOrElse(getBoolean(bd, aH(toString(this))), false)
666666
667667
668-func eN (eO,ez) = if ((ez >= eO))
668+func eN (eO,ez) = if (if ((ez == f))
669+ then true
670+ else (ez >= eO))
669671 then true
670672 else ba(makeString(["updated KLp lower than current KLp", toString(eO), toString(ez)], " "))
671673
672674
673675 func eP (eQ) = {
674676 let eE = bT(bp(bx))
675677 let eF = bT(bp(by))
676678 let eR = eQ.amount
677679 let eS = fraction(eQ.amount, eQ.price, b, FLOOR)
678680 let eT = if ((eQ.orderType == Buy))
679681 then $Tuple2(eR, -(eS))
680682 else $Tuple2(-(eR), eS)
681683 let eJ = eT._1
682684 let eK = eT._2
683685 if (if (if (bi())
684686 then true
685687 else (bv == m))
686688 then true
687689 else (bv == n))
688690 then throw("Exchange operations disabled")
689691 else if (if ((eQ.assetPair.amountAsset != bx))
690692 then true
691693 else (eQ.assetPair.priceAsset != by))
692694 then throw("Wrong order assets.")
693695 else {
694696 let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
695697 let eV = eI(eJ, eK, 0)
696698 let eW = eV._1
697699 let eX = eV._2
698700 let eY = (eX >= eU)
699701 let eZ = makeString(["kLp=", toString(eU), " kLpNew=", toString(eX), " amountAssetBalance=", toString(eE), " priceAssetBalance=", toString(eF), " amountAssetBalanceDelta=", toString(eJ), " priceAssetBalanceDelta=", toString(eK), " height=", toString(height)], "")
700702 $Tuple2(eY, eZ)
701703 }
702704 }
703705
704706
705707 func fa (fb) = if ((size(fb.payments) != 1))
706708 then throw("exactly 1 payment is expected")
707709 else {
708710 let fc = value(fb.payments[0])
709711 let dt = value(fc.assetId)
710712 let fd = fc.amount
711713 let ee = dr(toBase58String(fb.transactionId), toBase58String(dt), fd, fb.caller)
712714 let dK = ee._1
713715 let dL = ee._2
714716 let dy = parseIntValue(ee._9)
715717 let dM = ee._10
716718 if (if (bi())
717719 then true
718720 else (dy == n))
719721 then throw(("Get operation is blocked by admin. Status = " + toString(dy)))
720722 else $Tuple5(dK, dL, fd, dt, dM)
721723 }
722724
723725
724726 func fe (fb,dO,dU) = if ((size(fb.payments) != 2))
725727 then throw("exactly 2 payments are expected")
726728 else {
727729 let ff = value(fb.payments[0])
728730 let fg = value(fb.payments[1])
729731 let fh = dN(toBase58String(fb.transactionId), dO, ff.amount, ff.assetId, fg.amount, fg.assetId, toString(fb.caller), false, dU)
730732 let dy = parseIntValue(fh._8)
731733 if (if (if (bi())
732734 then true
733735 else (dy == l))
734736 then true
735737 else (dy == n))
736738 then throw(("Put operation is blocked by admin. Status = " + toString(dy)))
737739 else fh
738740 }
739741
740742
741743 func fi (cf) = {
742744 let fj = invoke(bd, "emit", [cf], nil)
743745 if ((fj == fj))
744746 then {
745747 let fk = {
746748 let aQ = fj
747749 if ($isInstanceOf(aQ, "Address"))
748750 then {
749751 let fl = aQ
750752 invoke(fl, "emit", [cf], nil)
751753 }
752754 else unit
753755 }
754756 if ((fk == fk))
755757 then cf
756758 else throw("Strict value is not equal to itself.")
757759 }
758760 else throw("Strict value is not equal to itself.")
759761 }
760762
761763
762764 func fm (cf,ai) = {
763765 let fn = if ((ai == 0))
764766 then 0
765767 else fraction(cf, ai, b)
766768 $Tuple2((cf - fn), fn)
767769 }
768770
769771
770772 func fo (fp,fq,ab,ac) = {
771773 let fr = (ac == unit)
772774 let fs = bT(bp(bx))
773775 let ft = bT(bp(by))
774776 let fu = if ((fq == bx))
775777 then true
776778 else if ((fq == by))
777779 then false
778780 else ba("invalid asset")
779781 let fv = if (fr)
780782 then $Tuple2(fs, ft)
781783 else if (fu)
782784 then $Tuple2((fs - fp), ft)
783785 else $Tuple2(fs, (ft - fp))
784786 let fw = fv._1
785787 let fx = fv._2
786788 let fy = if (fu)
787789 then $Tuple2(fp, 0)
788790 else $Tuple2(0, fp)
789791 let fz = fy._1
790792 let fA = fy._2
791793 let eR = fm(fz, bf)._1
792794 let eS = fm(fA, bf)._1
793795 let fB = fm(fp, bf)
794796 let fC = fB._1
795797 let fn = fB._2
796798 let fD = (fw + eR)
797799 let fE = (fx + eS)
798800 let fF = bW(D(fE, bA), D(fD, bz))
799801 let fG = H(fF, b)
800802 let fH = if (fu)
801803 then fw
802804 else fx
803805 let fI = toBigInt(fH)
804806 let fJ = toBigInt(valueOrErrorMessage(assetInfo(bw), (("asset " + toBase58String(bw)) + " doesn't exist")).quantity)
805807 let fK = if ((fJ > f))
806808 then true
807809 else ba("initial deposit requires all coins")
808810 if ((fK == fK))
809811 then {
810812 let fL = toBigInt(fC)
811813 let fM = max([0, toInt(((fJ * (sqrtBigInt((d + ((fL * d) / fI)), 18, 18, DOWN) - d)) / d))])
812814 let et = if (fr)
813815 then nil
814816 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))]
815817 let fN = bW(D(fx, bA), D(fw, bz))
816818 let fO = H(fN, b)
817819 let fP = {
818820 let fQ = if (fu)
819821 then $Tuple2(fz, fw)
820822 else $Tuple2(fA, fx)
821823 let cf = fQ._1
822824 let fR = fQ._2
823825 let fS = toInt(fraction(fJ, toBigInt((cf / 2)), toBigInt(fR)))
824826 fraction((fM - fS), b, fS)
825827 }
826828 $Tuple5(fM, et, fn, fP, fu)
827829 }
828830 else throw("Strict value is not equal to itself.")
829831 }
830832
831833
832834 func fT (fU,fC,fq,ab,ac) = {
833835 let fr = (ac == unit)
834836 let di = bk()
835837 let dj = parseIntValue(di[t])
836838 let dk = parseIntValue(di[u])
837839 let fV = [if ((fq == bw))
838840 then true
839841 else ba("invalid lp asset")]
840842 if ((fV == fV))
841843 then {
842844 let fW = if ((fU == bx))
843845 then true
844846 else if ((fU == by))
845847 then false
846848 else ba("invalid asset")
847849 let fX = if (fW)
848850 then toBigInt(bT(bp(bx)))
849851 else toBigInt(bT(bp(by)))
850852 let fY = if (fW)
851853 then dj
852854 else dk
853855 let fZ = bT(bp(bx))
854856 let ga = bT(bp(by))
855857 let gb = if (fW)
856858 then fZ
857859 else ga
858860 let gc = toBigInt(gb)
859861 let fJ = toBigInt(valueOrErrorMessage(assetInfo(bw), (("asset " + toBase58String(bw)) + " doesn't exist")).quantity)
860862 let gd = toBigInt(fC)
861863 let ge = max([0, toInt(((fX * (d - pow((d - ((gd * d) / fJ)), 18, h, 0, 18, DOWN))) / d))])
862864 let gf = fm(ge, bh)
863865 let gg = gf._1
864866 let fn = gf._2
865867 let gh = if (fW)
866868 then $Tuple4(gg, 0, (fZ - ge), ga)
867869 else $Tuple4(0, gg, fZ, (ga - ge))
868870 let gi = gh._1
869871 let gj = gh._2
870872 let gk = gh._3
871873 let gl = gh._4
872874 let fF = bW(D(gl, bA), D(gk, bz))
873875 let fG = H(fF, b)
874876 let et = if (fr)
875877 then nil
876878 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)]
877879 let fN = bW(D(ga, bA), D(fZ, bz))
878880 let fO = H(fN, b)
879881 let fP = {
880882 let gm = (toInt(fraction(fX, gd, fJ)) * 2)
881883 fraction((gg - gm), b, gm)
882884 }
883885 $Tuple5(gg, et, fn, fP, fW)
884886 }
885887 else throw("Strict value is not equal to itself.")
886888 }
887889
888890
889891 func gn () = {
890892 let go = aS()
891893 let aQ = getString(go, U())
892894 if ($isInstanceOf(aQ, "String"))
893895 then {
894896 let aV = aQ
895897 fromBase58String(aV)
896898 }
897899 else if ($isInstanceOf(aQ, "Unit"))
898900 then unit
899901 else throw("Match error")
900902 }
901903
902904
903905 func gp (fb) = {
904906 let aQ = gn()
905907 if ($isInstanceOf(aQ, "ByteVector"))
906908 then {
907909 let gq = aQ
908910 (fb.callerPublicKey == gq)
909911 }
910912 else if ($isInstanceOf(aQ, "Unit"))
911913 then (fb.caller == this)
912914 else throw("Match error")
913915 }
914916
915917
916918 func gr (fb) = {
917919 let gs = throw("Permission denied")
918920 let aQ = gn()
919921 if ($isInstanceOf(aQ, "ByteVector"))
920922 then {
921923 let gq = aQ
922924 if ((fb.callerPublicKey == gq))
923925 then true
924926 else gs
925927 }
926928 else if ($isInstanceOf(aQ, "Unit"))
927929 then if ((fb.caller == this))
928930 then true
929931 else gs
930932 else throw("Match error")
931933 }
932934
933935
934936 @Callable(fb)
935937 func rebalance () = (cI(aW(this, ae())) ++ cI(aW(this, af())))
936938
937939
938940
939941 @Callable(fb)
940942 func calculateAmountOutForSwapREADONLY (gt,gu,gv) = {
941943 let gw = if ((gu == false))
942944 then {
943945 let gx = aW(this, af())
944946 let gy = aW(this, ae())
945947 $Tuple2(gx, gy)
946948 }
947949 else {
948950 let gx = aW(this, ae())
949951 let gy = aW(this, af())
950952 $Tuple2(gx, gy)
951953 }
952954 let gx = gw._1
953955 let gy = gw._2
954956 let gz = bT(gy)
955957 let gA = bT(gx)
956958 let gB = fraction(gA, gt, (gz + gt))
957959 let gC = (toBigInt(gz) * toBigInt(gA))
958960 let gD = (((toBigInt(bT(gy)) + toBigInt(gt)) + toBigInt(gv)) * (toBigInt(bT(gx)) - toBigInt(gB)))
959961 let gE = if ((gD >= gC))
960962 then true
961963 else throw("new K is fewer error")
962964 if ((gE == gE))
963965 then $Tuple2(nil, gB)
964966 else throw("Strict value is not equal to itself.")
965967 }
966968
967969
968970
969971 @Callable(fb)
970972 func calculateAmountOutForSwapAndSendTokens (gt,gu,gF,gG,gv) = {
971973 let gH = {
972974 let bg = invoke(bd, "getSwapContractREADONLY", nil, nil)
973975 if ($isInstanceOf(bg, "String"))
974976 then bg
975977 else throw(($getType(bg) + " couldn't be cast to String"))
976978 }
977979 let fV = [if ((value(fb.payments[0]).amount >= gt))
978980 then true
979981 else ba("Wrong amount"), if ((fb.caller == addressFromStringValue(gH)))
980982 then true
981983 else ba("Permission denied")]
982984 if ((fV == fV))
983985 then {
984986 let fc = value(fb.payments[0])
985987 let gy = bp(fc.assetId)
986988 let gx = if ((gu == false))
987989 then aW(this, af())
988990 else aW(this, ae())
989991 let gz = ((bT(gy) - value(fb.payments[0]).amount) - gv)
990992 let gA = bT(gx)
991993 let gB = fraction(gA, gt, (gz + gt))
992994 let gC = (toBigInt(gz) * toBigInt(gA))
993995 let gD = ((toBigInt(bT(gy)) + toBigInt(gv)) * (toBigInt(bT(gx)) - toBigInt(gB)))
994996 let gE = if ((gD >= gC))
995997 then true
996998 else throw("new K is fewer error")
997999 if ((gE == gE))
9981000 then {
9991001 let gI = if ((gB >= gF))
10001002 then true
10011003 else throw("Exchange result is fewer coins than expected")
10021004 if ((gI == gI))
10031005 then {
10041006 let gJ = cI(gy)
10051007 if ((gJ == gJ))
10061008 then {
10071009 let gK = cP(gx, gB)
10081010 if ((gK == gK))
10091011 then $Tuple2(((gK ++ gJ) ++ [ScriptTransfer(addressFromStringValue(gG), gB, bn(gx))]), gB)
10101012 else throw("Strict value is not equal to itself.")
10111013 }
10121014 else throw("Strict value is not equal to itself.")
10131015 }
10141016 else throw("Strict value is not equal to itself.")
10151017 }
10161018 else throw("Strict value is not equal to itself.")
10171019 }
10181020 else throw("Strict value is not equal to itself.")
10191021 }
10201022
10211023
10221024
10231025 @Callable(fb)
10241026 func put (dO,gL) = if ((0 > dO))
10251027 then throw("Invalid slippageTolerance passed")
10261028 else {
10271029 let fh = fe(fb, dO, true)
10281030 let eq = fh._2
10291031 let dv = fh._7
10301032 let dM = fh._9
10311033 let er = fh._10
10321034 let es = fh._11
10331035 let gM = fh._12
10341036 let gN = fh._13
10351037 let ff = toBigInt(value(fb.payments[0]).amount)
10361038 let fg = toBigInt(value(fb.payments[1]).amount)
10371039 let eH = eA(ff, fg, toBigInt(0))
10381040 if ((eH == eH))
10391041 then {
10401042 let fj = invoke(bd, "emit", [eq], nil)
10411043 if ((fj == fj))
10421044 then {
10431045 let fk = {
10441046 let aQ = fj
10451047 if ($isInstanceOf(aQ, "Address"))
10461048 then {
10471049 let fl = aQ
10481050 invoke(fl, "emit", [eq], nil)
10491051 }
10501052 else unit
10511053 }
10521054 if ((fk == fk))
10531055 then {
10541056 let gO = if ((er > 0))
10551057 then invoke(bD, "put", nil, [AttachedPayment(gM, er)])
10561058 else nil
10571059 if ((gO == gO))
10581060 then {
10591061 let gP = if ((es > 0))
10601062 then invoke(bD, "put", nil, [AttachedPayment(gN, es)])
10611063 else nil
10621064 if ((gP == gP))
10631065 then {
10641066 let gQ = if (gL)
10651067 then {
10661068 let gR = invoke(bC, "stake", nil, [AttachedPayment(dv, eq)])
10671069 if ((gR == gR))
10681070 then nil
10691071 else throw("Strict value is not equal to itself.")
10701072 }
10711073 else [ScriptTransfer(fb.caller, eq, dv)]
10721074 let gS = eI(0, 0, 0)
10731075 if ((gS == gS))
10741076 then {
10751077 let ez = gS._2
10761078 let gT = gS._1
10771079 let gU = eN(eH, ez)
10781080 if ((gU == gU))
10791081 then {
10801082 let gV = invoke(this, "rebalance", nil, nil)
10811083 if ((gV == gV))
10821084 then ((dM ++ gQ) ++ gT)
10831085 else throw("Strict value is not equal to itself.")
10841086 }
10851087 else throw("Strict value is not equal to itself.")
10861088 }
10871089 else throw("Strict value is not equal to itself.")
10881090 }
10891091 else throw("Strict value is not equal to itself.")
10901092 }
10911093 else throw("Strict value is not equal to itself.")
10921094 }
10931095 else throw("Strict value is not equal to itself.")
10941096 }
10951097 else throw("Strict value is not equal to itself.")
10961098 }
10971099 else throw("Strict value is not equal to itself.")
10981100 }
10991101
11001102
11011103
11021104 @Callable(fb)
11031105 func putForFree (gW) = if ((0 > gW))
11041106 then throw("Invalid value passed")
11051107 else {
11061108 let fh = fe(fb, gW, false)
11071109 let dM = fh._9
11081110 let ff = toBigInt(value(fb.payments[0]).amount)
11091111 let fg = toBigInt(value(fb.payments[1]).amount)
11101112 let eH = eA(ff, fg, toBigInt(0))
11111113 if ((eH == eH))
11121114 then {
11131115 let gX = eI(0, 0, 0)
11141116 let gT = gX._1
11151117 let ez = gX._2
11161118 let gU = eN(eH, ez)
11171119 if ((gU == gU))
11181120 then (dM ++ gT)
11191121 else throw("Strict value is not equal to itself.")
11201122 }
11211123 else throw("Strict value is not equal to itself.")
11221124 }
11231125
11241126
11251127
11261128 @Callable(fb)
11271129 func putOneTkn (gY,gZ) = {
11281130 let ha = {
11291131 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11301132 if ($isInstanceOf(bg, "Boolean"))
11311133 then bg
11321134 else throw(($getType(bg) + " couldn't be cast to Boolean"))
11331135 }
11341136 let hb = if (if (if (bi())
11351137 then true
11361138 else (bv == l))
11371139 then true
11381140 else (bv == n))
11391141 then true
11401142 else ha
11411143 let fV = [if (if (!(hb))
11421144 then true
11431145 else gp(fb))
11441146 then true
11451147 else ba("put operation is blocked by admin"), if ((size(fb.payments) == 1))
11461148 then true
11471149 else ba("exactly 1 payment are expected")]
11481150 if ((fV == fV))
11491151 then {
11501152 let hc = fb.payments[0]
11511153 let fq = hc.assetId
11521154 let fp = hc.amount
11531155 let eH = if ((fq == bx))
11541156 then eA(toBigInt(fp), toBigInt(0), toBigInt(0))
11551157 else if ((fq == by))
11561158 then eA(toBigInt(0), toBigInt(fp), toBigInt(0))
11571159 else ba("payment asset is not supported")
11581160 if ((eH == eH))
11591161 then {
11601162 let ab = fb.caller
11611163 let ac = fb.transactionId
11621164 let hd = fo(fp, fq, ab, ac)
11631165 if ((hd == hd))
11641166 then {
11651167 let fu = hd._5
11661168 let he = hd._4
11671169 let fn = hd._3
11681170 let et = hd._2
11691171 let hf = hd._1
11701172 let hg = if (if ((gY > 0))
11711173 then (gY > hf)
11721174 else false)
11731175 then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
11741176 else hf
11751177 let fj = fi(hg)
11761178 if ((fj == fj))
11771179 then {
11781180 let gQ = if (gZ)
11791181 then {
11801182 let hh = invoke(bC, "stake", nil, [AttachedPayment(bw, hg)])
11811183 if ((hh == hh))
11821184 then nil
11831185 else throw("Strict value is not equal to itself.")
11841186 }
11851187 else [ScriptTransfer(fb.caller, hg, bw)]
11861188 let hi = if ((fn > 0))
11871189 then [ScriptTransfer(be, fn, fq)]
11881190 else nil
11891191 let hj = if ((this == be))
11901192 then $Tuple2(0, 0)
11911193 else if (fu)
11921194 then $Tuple2(-(fn), 0)
11931195 else $Tuple2(0, -(fn))
11941196 let eJ = hj._1
11951197 let eK = hj._2
11961198 let hk = eI(eJ, eK, 0)
11971199 let gT = hk._1
11981200 let ez = hk._2
11991201 let eU = value(getString(aj))
12001202 let gU = eN(eH, ez)
12011203 if ((gU == gU))
12021204 then {
12031205 let gV = invoke(this, "rebalance", nil, nil)
12041206 if ((gV == gV))
12051207 then $Tuple2((((et ++ gQ) ++ hi) ++ gT), hg)
12061208 else throw("Strict value is not equal to itself.")
12071209 }
12081210 else throw("Strict value is not equal to itself.")
12091211 }
12101212 else throw("Strict value is not equal to itself.")
12111213 }
12121214 else throw("Strict value is not equal to itself.")
12131215 }
12141216 else throw("Strict value is not equal to itself.")
12151217 }
12161218 else throw("Strict value is not equal to itself.")
12171219 }
12181220
12191221
12201222
12211223 @Callable(fb)
12221224 func putOneTknREADONLY (fq,fp) = {
12231225 let hl = fo(fp, bn(fq), unit, unit)
12241226 let hf = hl._1
12251227 let et = hl._2
12261228 let fn = hl._3
12271229 let he = hl._4
12281230 let fu = hl._5
12291231 $Tuple2(nil, $Tuple3(hf, fn, he))
12301232 }
12311233
12321234
12331235
12341236 @Callable(fb)
12351237 func getOneTkn (hm,gY) = {
12361238 let ha = {
12371239 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12381240 if ($isInstanceOf(bg, "Boolean"))
12391241 then bg
12401242 else throw(($getType(bg) + " couldn't be cast to Boolean"))
12411243 }
12421244 let hn = if (if (bi())
12431245 then true
12441246 else (bv == n))
12451247 then true
12461248 else ha
12471249 let fV = [if (if (!(hn))
12481250 then true
12491251 else gp(fb))
12501252 then true
12511253 else ba("get operation is blocked by admin"), if ((size(fb.payments) == 1))
12521254 then true
12531255 else ba("exactly 1 payment are expected")]
12541256 if ((fV == fV))
12551257 then {
12561258 let fU = bn(hm)
12571259 let hc = fb.payments[0]
12581260 let fq = hc.assetId
12591261 let fC = hc.amount
12601262 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
12611263 if ((eH == eH))
12621264 then {
12631265 let ab = fb.caller
12641266 let ac = fb.transactionId
12651267 let ho = fT(fU, fC, fq, ab, ac)
12661268 if ((ho == ho))
12671269 then {
12681270 let fW = ho._5
12691271 let he = ho._4
12701272 let fn = ho._3
12711273 let et = ho._2
12721274 let hp = ho._1
12731275 let cf = if (if ((gY > 0))
12741276 then (gY > hp)
12751277 else false)
12761278 then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
12771279 else hp
12781280 let hq = invoke(bd, "burn", [fC], [AttachedPayment(fq, fC)])
12791281 if ((hq == hq))
12801282 then {
12811283 let gK = cP(hm, (cf + max([0, fn])))
12821284 let hr = [ScriptTransfer(ab, cf, fU)]
12831285 let hi = if ((fn > 0))
12841286 then [ScriptTransfer(be, fn, fU)]
12851287 else nil
12861288 let hs = {
12871289 let ht = if ((this == be))
12881290 then 0
12891291 else fn
12901292 if (fW)
12911293 then $Tuple2(-((cf + ht)), 0)
12921294 else $Tuple2(0, -((cf + ht)))
12931295 }
12941296 let eJ = hs._1
12951297 let eK = hs._2
12961298 let hu = eI(eJ, eK, 0)
12971299 let gT = hu._1
12981300 let ez = hu._2
12991301 let gU = eN(eH, ez)
13001302 if ((gU == gU))
13011303 then $Tuple2(((((et ++ gK) ++ hr) ++ hi) ++ gT), cf)
13021304 else throw("Strict value is not equal to itself.")
13031305 }
13041306 else throw("Strict value is not equal to itself.")
13051307 }
13061308 else throw("Strict value is not equal to itself.")
13071309 }
13081310 else throw("Strict value is not equal to itself.")
13091311 }
13101312 else throw("Strict value is not equal to itself.")
13111313 }
13121314
13131315
13141316
13151317 @Callable(fb)
13161318 func getOneTknREADONLY (fU,fC) = {
13171319 let hv = fT(bn(fU), fC, bw, unit, unit)
13181320 let hp = hv._1
13191321 let et = hv._2
13201322 let fn = hv._3
13211323 let he = hv._4
13221324 let fW = hv._5
13231325 $Tuple2(nil, $Tuple3(hp, fn, he))
13241326 }
13251327
13261328
13271329
13281330 @Callable(fb)
13291331 func unstakeAndGetOneTkn (hw,hm,gY) = {
13301332 let ha = {
13311333 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13321334 if ($isInstanceOf(bg, "Boolean"))
13331335 then bg
13341336 else throw(($getType(bg) + " couldn't be cast to Boolean"))
13351337 }
13361338 let hn = if (if (bi())
13371339 then true
13381340 else (bv == n))
13391341 then true
13401342 else ha
13411343 let fV = [if (if (!(hn))
13421344 then true
13431345 else gp(fb))
13441346 then true
13451347 else ba("get operation is blocked by admin"), if ((size(fb.payments) == 0))
13461348 then true
13471349 else ba("no payments are expected")]
13481350 if ((fV == fV))
13491351 then {
13501352 let fU = bn(hm)
13511353 let ab = fb.caller
13521354 let ac = fb.transactionId
13531355 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
13541356 if ((eH == eH))
13551357 then {
13561358 let hx = invoke(bC, "unstake", [toBase58String(bw), hw], nil)
13571359 if ((hx == hx))
13581360 then {
13591361 let hy = fT(fU, hw, bw, ab, ac)
13601362 if ((hy == hy))
13611363 then {
13621364 let fW = hy._5
13631365 let he = hy._4
13641366 let fn = hy._3
13651367 let et = hy._2
13661368 let hp = hy._1
13671369 let cf = if (if ((gY > 0))
13681370 then (gY > hp)
13691371 else false)
13701372 then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
13711373 else hp
13721374 let hq = invoke(bd, "burn", [hw], [AttachedPayment(bw, hw)])
13731375 if ((hq == hq))
13741376 then {
13751377 let gK = cP(hm, (cf + max([0, fn])))
13761378 let hr = [ScriptTransfer(fb.caller, cf, fU)]
13771379 let hi = if ((fn > 0))
13781380 then [ScriptTransfer(be, fn, fU)]
13791381 else nil
13801382 let hz = {
13811383 let ht = if ((this == be))
13821384 then 0
13831385 else fn
13841386 if (fW)
13851387 then $Tuple2(-((cf + ht)), 0)
13861388 else $Tuple2(0, -((cf + ht)))
13871389 }
13881390 let eJ = hz._1
13891391 let eK = hz._2
13901392 let hA = eI(eJ, eK, 0)
13911393 let gT = hA._1
13921394 let ez = hA._2
13931395 let gU = eN(eH, ez)
13941396 if ((gU == gU))
13951397 then $Tuple2(((((et ++ gK) ++ hr) ++ hi) ++ gT), cf)
13961398 else throw("Strict value is not equal to itself.")
13971399 }
13981400 else throw("Strict value is not equal to itself.")
13991401 }
14001402 else throw("Strict value is not equal to itself.")
14011403 }
14021404 else throw("Strict value is not equal to itself.")
14031405 }
14041406 else throw("Strict value is not equal to itself.")
14051407 }
14061408 else throw("Strict value is not equal to itself.")
14071409 }
14081410
14091411
14101412
14111413 @Callable(fb)
14121414 func get () = {
14131415 let ee = fa(fb)
14141416 let dK = ee._1
14151417 let dL = ee._2
14161418 let fd = ee._3
14171419 let dt = ee._4
14181420 let dM = ee._5
14191421 let gK = cU(dK, dL)
14201422 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
14211423 if ((eH == eH))
14221424 then {
14231425 let hB = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
14241426 if ((hB == hB))
14251427 then {
14261428 let hC = eI(-(dK), -(dL), 0)
14271429 let gT = hC._1
14281430 let ez = hC._2
14291431 let gU = eN(eH, ez)
14301432 if ((gU == gU))
14311433 then ((gK ++ dM) ++ gT)
14321434 else throw("Strict value is not equal to itself.")
14331435 }
14341436 else throw("Strict value is not equal to itself.")
14351437 }
14361438 else throw("Strict value is not equal to itself.")
14371439 }
14381440
14391441
14401442
14411443 @Callable(fb)
14421444 func getNoLess (hD,hE) = {
14431445 let ee = fa(fb)
14441446 let dK = ee._1
14451447 let dL = ee._2
14461448 let fd = ee._3
14471449 let dt = ee._4
14481450 let dM = ee._5
14491451 if ((hD > dK))
14501452 then throw(((("noLessThenAmtAsset failed: " + toString(dK)) + " < ") + toString(hD)))
14511453 else if ((hE > dL))
14521454 then throw(((("noLessThenPriceAsset failed: " + toString(dL)) + " < ") + toString(hE)))
14531455 else {
14541456 let gK = cU(dK, dL)
14551457 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
14561458 if ((eH == eH))
14571459 then {
14581460 let hB = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
14591461 if ((hB == hB))
14601462 then {
14611463 let hF = eI(-(dK), -(dL), 0)
14621464 let gT = hF._1
14631465 let ez = hF._2
14641466 let gU = eN(eH, ez)
14651467 if ((gU == gU))
14661468 then ((gK ++ dM) ++ gT)
14671469 else throw("Strict value is not equal to itself.")
14681470 }
14691471 else throw("Strict value is not equal to itself.")
14701472 }
14711473 else throw("Strict value is not equal to itself.")
14721474 }
14731475 }
14741476
14751477
14761478
14771479 @Callable(fb)
14781480 func unstakeAndGet (cf) = {
14791481 let hG = if ((size(fb.payments) != 0))
14801482 then throw("No payments are expected")
14811483 else true
14821484 if ((hG == hG))
14831485 then {
14841486 let di = bk()
14851487 let dv = fromBase58String(di[q])
14861488 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
14871489 if ((eH == eH))
14881490 then {
14891491 let hx = invoke(bC, "unstake", [toBase58String(dv), cf], nil)
14901492 if ((hx == hx))
14911493 then {
14921494 let ee = dr(toBase58String(fb.transactionId), toBase58String(dv), cf, fb.caller)
14931495 let dK = ee._1
14941496 let dL = ee._2
14951497 let dy = parseIntValue(ee._9)
14961498 let dM = ee._10
14971499 let gK = cU(dK, dL)
14981500 let hH = if (if (bi())
14991501 then true
15001502 else (dy == n))
15011503 then throw(("Get operation is blocked by admin. Status = " + toString(dy)))
15021504 else true
15031505 if ((hH == hH))
15041506 then {
15051507 let hB = invoke(bd, "burn", [cf], [AttachedPayment(dv, cf)])
15061508 if ((hB == hB))
15071509 then {
15081510 let hI = eI(-(dK), -(dL), 0)
15091511 let gT = hI._1
15101512 let ez = hI._2
15111513 let gU = eN(eH, ez)
15121514 if ((gU == gU))
15131515 then ((gK ++ dM) ++ gT)
15141516 else throw("Strict value is not equal to itself.")
15151517 }
15161518 else throw("Strict value is not equal to itself.")
15171519 }
15181520 else throw("Strict value is not equal to itself.")
15191521 }
15201522 else throw("Strict value is not equal to itself.")
15211523 }
15221524 else throw("Strict value is not equal to itself.")
15231525 }
15241526 else throw("Strict value is not equal to itself.")
15251527 }
15261528
15271529
15281530
15291531 @Callable(fb)
15301532 func unstakeAndGetNoLess (hw,hJ,hE) = {
15311533 let hn = if (bi())
15321534 then true
15331535 else (bv == n)
15341536 let fV = [if (!(hn))
15351537 then true
15361538 else throw("get operation is blocked by admin"), if ((size(fb.payments) == 0))
15371539 then true
15381540 else throw("no payments are expected")]
15391541 if ((fV == fV))
15401542 then {
15411543 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
15421544 if ((eH == eH))
15431545 then {
15441546 let hx = invoke(bC, "unstake", [toBase58String(bw), hw], nil)
15451547 if ((hx == hx))
15461548 then {
15471549 let ee = dr(toBase58String(fb.transactionId), toBase58String(bw), hw, fb.caller)
15481550 let dK = ee._1
15491551 let dL = ee._2
15501552 let dM = ee._10
15511553 let gK = cU(dK, dL)
15521554 let hK = [if ((dK >= hJ))
15531555 then true
15541556 else throw(makeString(["amount asset amount to receive is less than ", toString(hJ)], "")), if ((dL >= hE))
15551557 then true
15561558 else throw(makeString(["price asset amount to receive is less than ", toString(hE)], ""))]
15571559 if ((hK == hK))
15581560 then {
15591561 let hB = invoke(bd, "burn", [hw], [AttachedPayment(bw, hw)])
15601562 if ((hB == hB))
15611563 then {
15621564 let hL = eI(-(dK), -(dL), 0)
15631565 let gT = hL._1
15641566 let ez = hL._2
15651567 let gU = eN(eH, ez)
15661568 if ((gU == gU))
15671569 then ((gK ++ dM) ++ gT)
15681570 else throw("Strict value is not equal to itself.")
15691571 }
15701572 else throw("Strict value is not equal to itself.")
15711573 }
15721574 else throw("Strict value is not equal to itself.")
15731575 }
15741576 else throw("Strict value is not equal to itself.")
15751577 }
15761578 else throw("Strict value is not equal to itself.")
15771579 }
15781580 else throw("Strict value is not equal to itself.")
15791581 }
15801582
15811583
15821584
15831585 @Callable(fb)
15841586 func activate (hM,hN) = if ((toString(fb.caller) != toString(bd)))
15851587 then throw("permissions denied")
15861588 else $Tuple2([StringEntry(ae(), hM), StringEntry(af(), hN)], "success")
15871589
15881590
15891591
15901592 @Callable(fb)
15911593 func refreshKLp () = {
15921594 let hO = valueOrElse(getInteger(ak), 0)
15931595 let hP = if (((height - hO) >= an))
15941596 then unit
15951597 else ba(makeString([toString(an), " blocks have not passed since the previous call"], ""))
15961598 if ((hP == hP))
15971599 then {
15981600 let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
15991601 let hQ = eI(0, 0, 0)
16001602 let hR = hQ._1
16011603 let ez = hQ._2
16021604 let eL = if ((eU != ez))
16031605 then hR
16041606 else ba("nothing to refresh")
16051607 $Tuple2(eL, toString(ez))
16061608 }
16071609 else throw("Strict value is not equal to itself.")
16081610 }
16091611
16101612
16111613
16121614 @Callable(fb)
16131615 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bk())
16141616
16151617
16161618
16171619 @Callable(fb)
16181620 func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bT(ap))
16191621
16201622
16211623
16221624 @Callable(fb)
16231625 func calcPricesWrapperREADONLY (dc,dd,dh) = {
16241626 let dq = dg(dc, dd, dh)
16251627 $Tuple2(nil, [toString(dq[0]), toString(dq[1]), toString(dq[2])])
16261628 }
16271629
16281630
16291631
16301632 @Callable(fb)
16311633 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16321634
16331635
16341636
16351637 @Callable(fb)
16361638 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
16371639
16381640
16391641
16401642 @Callable(fb)
16411643 func calcPriceBigIntWrapperREADONLY (bX,bY) = $Tuple2(nil, toString(bW(parseBigIntValue(bX), parseBigIntValue(bY))))
16421644
16431645
16441646
16451647 @Callable(fb)
16461648 func estimatePutOperationWrapperREADONLY (ds,dO,dP,dQ,dR,dS,ab,dT,dU) = $Tuple2(nil, dN(ds, dO, dP, dQ, dR, dS, ab, dT, dU))
16471649
16481650
16491651
16501652 @Callable(fb)
16511653 func estimateGetOperationWrapperREADONLY (ds,dt,du,ab) = {
16521654 let ee = dr(ds, dt, du, addressFromStringValue(ab))
16531655 $Tuple2(nil, $Tuple10(ee._1, ee._2, ee._3, ee._4, ee._5, ee._6, ee._7, toString(ee._8), ee._9, ee._10))
16541656 }
16551657
16561658
16571659
16581660 @Callable(fb)
16591661 func statsREADONLY () = {
16601662 let di = bk()
16611663 let dv = fromBase58String(di[q])
16621664 let hS = di[r]
16631665 let hT = di[s]
16641666 let dX = di[v]
16651667 let dY = di[w]
16661668 let dj = parseIntValue(di[t])
16671669 let dk = parseIntValue(di[u])
16681670 let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
16691671 let hV = bT(hS)
16701672 let hW = bT(hT)
16711673 let hX = if ((hU == 0))
16721674 then [e, e, e]
16731675 else dg(hV, hW, hU)
16741676 let dF = 0
16751677 let hY = H(hX[1], b)
16761678 let hZ = H(hX[2], b)
16771679 let ia = value(getInteger(bd, aD(toString(this))))
16781680 $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))
16791681 }
16801682
16811683
16821684
16831685 @Callable(fb)
16841686 func evaluatePutByAmountAssetREADONLY (dP) = {
16851687 let di = bk()
16861688 let dv = fromBase58String(di[q])
16871689 let dV = di[r]
16881690 let dw = fromBase58String(dV)
16891691 let dW = di[s]
16901692 let dx = fromBase58String(dW)
16911693 let dj = parseIntValue(di[t])
16921694 let dk = parseIntValue(di[u])
16931695 let dy = di[p]
16941696 let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
16951697 let hV = bT(dV)
16961698 let hW = bT(dW)
16971699 let de = D(hV, dj)
16981700 let df = D(hW, dk)
16991701 let dE = if ((hU == 0))
17001702 then e
17011703 else bW(df, de)
17021704 let eb = D(dP, dj)
17031705 let ec = fraction(eb, dE, d)
17041706 let dR = H(ec, dk)
17051707 let fh = dN("", 500000, dP, dw, dR, dx, "", true, false)
17061708 let em = fh._1
17071709 let ib = fh._3
17081710 let dA = fh._4
17091711 let dC = fh._5
17101712 let dz = fh._6
17111713 $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))
17121714 }
17131715
17141716
17151717
17161718 @Callable(fb)
17171719 func evaluatePutByPriceAssetREADONLY (dR) = {
17181720 let di = bk()
17191721 let dv = fromBase58String(di[q])
17201722 let dV = di[r]
17211723 let dw = fromBase58String(dV)
17221724 let dW = di[s]
17231725 let dx = fromBase58String(dW)
17241726 let dj = parseIntValue(di[t])
17251727 let dk = parseIntValue(di[u])
17261728 let dy = di[p]
17271729 let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
17281730 let ic = bT(dV)
17291731 let id = bT(dW)
17301732 let ie = D(ic, dj)
17311733 let if = D(id, dk)
17321734 let dE = if ((hU == 0))
17331735 then e
17341736 else bW(if, ie)
17351737 let ec = D(dR, dk)
17361738 let eb = fraction(ec, d, dE)
17371739 let dP = H(eb, dj)
17381740 let fh = dN("", 500000, dP, dw, dR, dx, "", true, false)
17391741 let em = fh._1
17401742 let ib = fh._3
17411743 let dA = fh._4
17421744 let dC = fh._5
17431745 let dz = fh._6
17441746 $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))
17451747 }
17461748
17471749
17481750
17491751 @Callable(fb)
17501752 func evaluateGetREADONLY (ig,ih) = {
17511753 let ee = dr("", ig, ih, this)
17521754 let dK = ee._1
17531755 let dL = ee._2
17541756 let dA = ee._5
17551757 let dC = ee._6
17561758 let dz = ee._7
17571759 let dF = ee._8
17581760 let dy = parseIntValue(ee._9)
17591761 $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))
17601762 }
17611763
17621764
17631765 @Verifier(ii)
17641766 func ij () = {
17651767 let ik = {
17661768 let aQ = gn()
17671769 if ($isInstanceOf(aQ, "ByteVector"))
17681770 then {
17691771 let gq = aQ
17701772 gq
17711773 }
17721774 else if ($isInstanceOf(aQ, "Unit"))
17731775 then ii.senderPublicKey
17741776 else throw("Match error")
17751777 }
17761778 let aQ = ii
17771779 if ($isInstanceOf(aQ, "Order"))
17781780 then {
17791781 let eQ = aQ
17801782 let il = bj()
17811783 let im = if (eM())
17821784 then $Tuple2(true, "")
17831785 else eP(eQ)
17841786 let aK = im._1
17851787 let aL = im._2
17861788 let aM = sigVerify(eQ.bodyBytes, eQ.proofs[0], eQ.senderPublicKey)
17871789 let aN = sigVerify(eQ.bodyBytes, eQ.proofs[1], il)
17881790 if (if (if (aK)
17891791 then aM
17901792 else false)
17911793 then aN
17921794 else false)
17931795 then true
17941796 else aJ(aK, aL, aM, aN)
17951797 }
17961798 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
17971799 then {
17981800 let aV = aQ
17991801 if (sigVerify(ii.bodyBytes, ii.proofs[0], ik))
18001802 then true
18011803 else {
18021804 let in = blake2b256(value(aV.script))
18031805 let io = fromBase64String(value(getString(bd, aF())))
18041806 let ip = scriptHash(this)
18051807 if ((io == in))
18061808 then (ip != in)
18071809 else false
18081810 }
18091811 }
18101812 else sigVerify(ii.bodyBytes, ii.proofs[0], ik)
18111813 }
18121814

github/deemru/w8io/3ef1775 
225.07 ms