tx · 5i1hDiMHv7QhuYsVhcggdNTP3dd8P66tbbnySD1yyLsj

3P9ZegsKUtsEpdRPNVrMH7nHEEqY5MrmjDp:  -0.01400000 Waves

2020.11.25 22:17 [2345063] smart account 3P9ZegsKUtsEpdRPNVrMH7nHEEqY5MrmjDp > SELF 0.00000000 Waves

{ "type": 13, "id": "5i1hDiMHv7QhuYsVhcggdNTP3dd8P66tbbnySD1yyLsj", "fee": 1400000, "feeAssetId": null, "timestamp": 1606331779730, "version": 1, "sender": "3P9ZegsKUtsEpdRPNVrMH7nHEEqY5MrmjDp", "senderPublicKey": "7ziFsWp9eo6kUB6ovqQzJfjgQarifNfpCGNW9DZi8YhN", "proofs": [ "5P2wt8kGF1ZwjaUjCpbxFQsxDry2x1xhvKCasFT7kDcnmnyEc5XKMJ3rYjtLhjyEA5wFJLhZdLZfZfWbezUYCgnC", "4wNQtbgvkvY3jiHLMyZruELZTSGLJ7eG5cvGAX4Ccci31vPZWF8R4Maff9LJQ57YHTrvjQiMmqNvbNrCvMcHkw4d" ], "script": "base64:AAIEAAAAAAAAADgIAhINCgsICAgICAgICAgBARIDCgEBEgASAwoBARIDCgEIEgQKAggBEgASAwoBARIAEgMKAQESAAAAAG0BAAAAAlNFAAAAAgAAAAFrAAAAAXYJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAAWsFAAAAAXYBAAAAAklFAAAAAgAAAAFrAAAAAXYJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAFrBQAAAAF2AQAAAAJTVAAAAAMAAAABYQAAAANhbXQAAAABdAkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAABYQUAAAADYW10BQAAAAF0AQAAAAVkZWJ1ZwAAAAIAAAABawAAAAF2CQEAAAACU0UAAAACCQABLAAAAAICAAAAB19fZGJnX18FAAAAAWsFAAAAAXYAAAAABHRlbjYAAAAAAAAPQkAAAAAABHRlbjgAAAAAAAX14QAAAAAAA01BWAB//////////wAAAAARY29uZmlnUHJvdmlkZXJLZXkCAAAADmNvbmZpZ1Byb3ZpZGVyAAAAAA5jb25maWdQcm92aWRlcgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAABFjb25maWdQcm92aWRlcktleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAFzBQAAAAR0aGlzAQAAAAZsb2NhbEkAAAACAAAAAWsAAAABZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAAWsFAAAAAWUBAAAABmxvY2FsUwAAAAIAAAABawAAAAFlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAABawUAAAABZQEAAAAFY29uZkkAAAACAAAAAWsAAAABZQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADmNvbmZpZ1Byb3ZpZGVyBQAAAAFrBQAAAAFlAQAAAAVjb25mUwAAAAIAAAABawAAAAFlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAOY29uZmlnUHJvdmlkZXIFAAAAAWsFAAAAAWUAAAAABUJVTExLAgAAAAZCVUxMSWQAAAAABUJFQVJLAgAAAAZCRUFSSWQAAAAABVVTRE5LAgAAAAttYWluVG9rZW5JZAAAAAAIQlVMTENPTEsCAAAADmJ1bGxDb2xsYXRlcmFsAAAAAAhCRUFSQ09MSwIAAAAOYmVhckNvbGxhdGVyYWwAAAAACUJVTExDSVJDSwIAAAAPYnVsbENpcmN1bGF0aW9uAAAAAAlCRUFSQ0lSQ0sCAAAAD2JlYXJDaXJjdWxhdGlvbgAAAAAISVNTUEVSQ0sCAAAAD2lzc3VlUGVyY2VudGlsZQAAAAAIUkVEUEVSQ0sCAAAAEHJlZGVlbVBlcmNlbnRpbGUAAAAAB01JTklTU0sCAAAACG1pbklzc3VlAAAAAAdNSU5SRURLAgAAAAltaW5SZWRlZW0AAAAACE1JTlBPT0xLAgAAAAdtaW5Qb29sAAAAAAdGRUVBQ0NLAgAAAA9mZWVzQWNjdW11bGF0ZWQAAAAABldMSVNUSwIAAAAOaXNzdWVXaGl0ZUxpc3QAAAAACFJFQlBFUkNLAgAAABNyZWJhbGFuY2VQZXJjZW50aWxlAAAAAAdSRUJJRFhLAgAAABVsYXN0U2V0dGxlbWVudFByaWNlSWQAAAAABUhFQURLAgAAAAtoZWFkUG9pbnRlcgAAAAAFVEFJTEsCAAAAC3RhaWxQb2ludGVyAAAAAAZRU0laRUsCAAAACXF1ZXVlU2l6ZQAAAAAJUE9PTFVTRE5LAgAAABJwb29sTWFpblRva2VuVmFsdWUAAAAAB1BPT0xVUEsCAAAABnBvb2xVcAAAAAAIUE9PTERXTksCAAAAB3Bvb2xEd24AAAAACVBPT0xDSVJDSwIAAAAUcG9vbFRva2VuQ2lyY3VsYXRpb24AAAAABVBPT0xLAgAAAAlwb29sVG9rZW4AAAAACEFTU05BTUVLAgAAAA1kZWZvQXNzZXROYW1lAAAAAARMRVZLAgAAAAhsZXZlcmFnZQAAAAAJV0FWRVNGRUVLAgAAABF3YXZlc1BhY2VtYWtlckZlZQAAAAAIVVNETkZFRUsCAAAAEHVzZG5QYWNlbWFrZXJGZWUAAAAAC29yYWNsZVBLS2V5AgAAAAZvcmFjbGUBAAAAEWxhc3RQcmljZUluZGV4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ZQkAAGsAAAADBQAAAAdidWxsQ29sBQAAAAZwb29sVXAFAAAACGJ1bGxDaXJjAAAAABBwb29sQmVhckV4cG9zdXJlCQAAawAAAAMFAAAAB2JlYXJDb2wFAAAAB3Bvb2xEd24FAAAACGJlYXJDaXJjAAAAAAlwb29sVmFsdWUJAABkAAAAAgkAAGQAAAACBQAAAAhwb29sTWFpbgUAAAAQcG9vbEJ1bGxFeHBvc3VyZQUAAAAQcG9vbEJlYXJFeHBvc3VyZQAAAAAGb3JhY2xlCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAC29yYWNsZVBLS2V5AgAAAA5ubyBvcmFjbGVQS0tleQIAAAASYmFkIG9yYWNsZSBhZGRyZXNzAAAAABRyZWJhbGFuY2VkUHJpY2VJbmRleAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAB1JFQklEWEsCAAAAF25vIGxhc3QgcmViYWxhbmNlIHByaWNlAAAAABBvcmFjbGVQcmljZUluZGV4CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAGb3JhY2xlCQEAAAARbGFzdFByaWNlSW5kZXhLZXkAAAABBQAAAAlhc3NldE5hbWUJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAE2JhZCBvcmFjbGUgZGF0YSBhdCAJAAQlAAAAAQUAAAAGb3JhY2xlAgAAABA6IG5vIGludGVnZXIgYXQgCQEAAAARbGFzdFByaWNlSW5kZXhLZXkAAAABBQAAAAlhc3NldE5hbWUAAAAACGxldmVyYWdlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAABExFVksAAAAAAAAAAAMBAAAADWhlaWdodEJ5SW5kZXgAAAACAAAACWFzc2V0TmFtZQAAAApwcmljZUluZGV4CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAGb3JhY2xlCQABLAAAAAIJAQAAABBwcmljZUluZGV4UHJlZml4AAAAAQUAAAAJYXNzZXROYW1lCQABpAAAAAEFAAAACnByaWNlSW5kZXgJAAEsAAAAAgIAAAARbm8gZGF0YSBhdCBpbmRleCAJAAGkAAAAAQUAAAAKcHJpY2VJbmRleAEAAAANcHJpY2VCeUhlaWdodAAAAAIAAAAJYXNzZXROYW1lAAAAC3ByaWNlSGVpZ2h0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAGb3JhY2xlCQABLAAAAAIJAQAAABFwcmljZUhlaWdodFByZWZpeAAAAAEFAAAACWFzc2V0TmFtZQkAAaQAAAABBQAAAAtwcmljZUhlaWdodAkAASwAAAACAgAAABNubyBkYXRhIGZvciBoZWlnaHQgCQABpAAAAAEFAAAAC3ByaWNlSGVpZ2h0AQAAAAxwcmljZUJ5SW5kZXgAAAACAAAACWFzc2V0TmFtZQAAAApwcmljZUluZGV4CQEAAAANcHJpY2VCeUhlaWdodAAAAAIFAAAACWFzc2V0TmFtZQkBAAAADWhlaWdodEJ5SW5kZXgAAAACBQAAAAlhc3NldE5hbWUFAAAACnByaWNlSW5kZXgAAAAACXF1ZXVlU2l6ZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAAZRU0laRUsAAAAAAAAAAAAAAAAAC2hlYWRQb2ludGVyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAABUhFQURLAgAAAAAAAAAAC3RhaWxQb2ludGVyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAABVRBSUxLAgAAAAAAAAAAD2ZlZXNBY2N1bXVsYXRlZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAAdGRUVBQ0NLAAAAAAAAAAAAAAAAAAVJU1NVRQIAAAAFSVNTVUUAAAAABlJFREVFTQIAAAAGUkVERUVNAAAAAARQT09MAgAAAARQT09MAAAAAAZVTlBPT0wCAAAABlVOUE9PTAAAAAAKZmVlQWRkcktleQIAAAAKZmVlQWRkcmVzcwAAAAAOc3Rha2luZ0FkZHJLZXkCAAAADnN0YWtpbmdBZGRyZXNzAAAAAA9kYWVtb25QdWJLZXlLZXkCAAAAD2RhZW1vblB1YmxpY0tleQAAAAAKZmVlQWRkcmVzcwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAQAAAAVjb25mUwAAAAIFAAAACmZlZUFkZHJLZXkCAAAADW5vIGZlZUFkZHJlc3MCAAAADmJhZCBmZWVBZGRyZXNzAAAAAA5zdGFraW5nQWRkcmVzcwkBAAAABWNvbmZTAAAAAgUAAAAOc3Rha2luZ0FkZHJLZXkCAAAAEW5vIHN0YWtpbmdBZGRyZXNzAAAAAA9kYWVtb25QdWJsaWNLZXkJAAJZAAAAAQkBAAAABWNvbmZTAAAAAgUAAAAPZGFlbW9uUHViS2V5S2V5AgAAABJubyBkYWVtb25QdWJsaWNLZXkAAAAACnJwZEFkZHJlc3MJAAQmAAAAAQIAAAAjM1BOaWtNNnlwNE5xY1NVOGd1eFF0bVI1b25yMkQ0ZTh5VEoAAAAABmFkbWlucwkABEwAAAACAgAAACwySEhxVjhXOURKYXlWNVI2dEJEMlNiOHNycGhwb2JvRGk3cjF0MWFQaXVtQwkABEwAAAACAgAAACw1WlhlODJSUkFTVTdxc2hYTTJKOUpOWWhxSjlHV1lqalZxMmd3VVY1TmF6OQkABEwAAAACAgAAACw1V1JYRlNqd2NUYk5mS2NKczhacVhtU1NXWXNTVkpVdE12TXFaajVoSDROYwUAAAADbmlsAQAAAAxidWlsZE5ld0l0ZW0AAAAHAAAABmFjdGlvbgAAAANhbXQAAAAFdG9rZW4AAAAKcHJpY2VJbmRleAAAAAdpbnZva2VyAAAACW1pblBheW91dAAAAAltYXhQYXlvdXQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGYWN0aW9uAgAAAAF8CQABpAAAAAEFAAAAA2FtdAIAAAABfAUAAAAFdG9rZW4CAAAAAXwJAAGkAAAAAQUAAAAKcHJpY2VJbmRleAIAAAABfAUAAAAHaW52b2tlcgIAAAABfAkAAaQAAAABBQAAAAltaW5QYXlvdXQCAAAAAXwJAAGkAAAAAQUAAAAJbWF4UGF5b3V0AgAAAAF8AQAAAAt1c2VyRGlmZkFicwAAAAAEAAAACyR0MDU3OTc1ODg2CQAFFAAAAAIJAABlAAAAAgUAAAAHYnVsbENvbAUAAAAQcG9vbEJ1bGxFeHBvc3VyZQkAAGUAAAACBQAAAAdiZWFyQ29sBQAAABBwb29sQmVhckV4cG9zdXJlBAAAAAt1c2VyQnVsbENvbAgFAAAACyR0MDU3OTc1ODg2AAAAAl8xBAAAAAt1c2VyQmVhckNvbAgFAAAACyR0MDU3OTc1ODg2AAAAAl8yBAAAAARkaWZmCQAAZQAAAAIFAAAAC3VzZXJCdWxsQ29sBQAAAAt1c2VyQmVhckNvbAMJAABmAAAAAgUAAAAEZGlmZgAAAAAAAAAAAAUAAAAEZGlmZgkAAGUAAAACAAAAAAAAAAAABQAAAARkaWZmAQAAAAhtYXhJc3N1ZQAAAAEAAAAHdG9rZW5JZAQAAAAOcG9vbEludmVzdG1lbnQDCQAAZgAAAAIFAAAABnBvb2xVcAAAAAAAAAAAAAUAAAAEQlVMTAUAAAAEQkVBUgMJAQAAAAIhPQAAAAIFAAAAB3Rva2VuSWQFAAAADnBvb2xJbnZlc3RtZW50BQAAAAhwb29sTWFpbgkAAGQAAAACCQEAAAALdXNlckRpZmZBYnMAAAAABQAAAAlwb29sVmFsdWUBAAAADXZhbGlkYXRlUE1GZWUAAAACAAAAAWkAAAAJbWluUGF5b3V0AwkAAGYAAAACAAAAAAAAAAAABQAAAAltaW5QYXlvdXQJAAACAAAAAQIAAAATbmVnYXRpdmUgbWluIHBheW91dAQAAAABcAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQQAAAACb2sEAAAAByRtYXRjaDAIBQAAAAFwAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAmJ2BQAAAAckbWF0Y2gwAwkAAAAAAAACCQACWAAAAAEFAAAAAmJ2BQAAAAltYWluVG9rZW4JAABnAAAAAggFAAAAAXAAAAAGYW1vdW50BQAAAAptaW5Vc2RuRmVlBwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFd2F2ZXMFAAAAByRtYXRjaDAJAABnAAAAAggFAAAAAXAAAAAGYW1vdW50BQAAAAttaW5XYXZlc0ZlZQkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgMJAQAAAAEhAAAAAQUAAAACb2sJAAACAAAAAQIAAAAXaW5jb3JyZWN0IHBhY2VtYWtlciBmZWUGAQAAABV2YWxpZGF0ZVJlcXVlc3RSZWRlZW0AAAABAAAAA2ludgMJAAAAAAAAAggFAAAAA2ludgAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAIY2FuJ3QgZG8KAQAAAAxlcnJvck1lc3NhZ2UAAAABAAAAA2dvdAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAZYmFkIHRva2VuIGF0dDogb25seSBCVUxMKAUAAAAEQlVMTAIAAAAKKSBvciBCRUFSKAUAAAAEQkVBUgIAAAAhKSB0b2tlbnMgYXJlIGFjY2VwdGVkLCByZWNlaXZlZDogBQAAAANnb3QEAAAAB2Fzc2V0SWQJAAJYAAAAAQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAADaW52AAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQCAAAADWJhZCB0b2tlbiBhdHQDAwkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAUAAAAEQkVBUgkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAUAAAAEQlVMTAcJAQAAAAxlcnJvck1lc3NhZ2UAAAABBQAAAAdhc3NldElkBAAAAA5hdHRhY2hlZEFtb3VudAgJAAGRAAAAAggFAAAAA2ludgAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAAA2NvbAMJAAAAAAAAAgUAAAAHYXNzZXRJZAUAAAAEQkVBUgUAAAAHYmVhckNvbAUAAAAHYnVsbENvbAQAAAAEY2lyYwMJAAAAAAAAAgUAAAAHYXNzZXRJZAUAAAAEQkVBUgUAAAAIYmVhckNpcmMFAAAACGJ1bGxDaXJjBAAAAAllc3RpbWF0ZWQJAABrAAAAAwUAAAADY29sBQAAAA5hdHRhY2hlZEFtb3VudAUAAAAEY2lyYwMJAABmAAAAAgUAAAAJbWluUmVkZWVtBQAAAAllc3RpbWF0ZWQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAADFBdHRhY2hlZCBwYXltZW50IHRvbyBzbWFsbC4gTWluIHJlZGVlbSBhbW91bnQgaXMgCQABpAAAAAEJAABpAAAAAgUAAAAJbWluUmVkZWVtAAAAAAAAD0JAAgAAAAcgVVNETiwgAgAAABFhdHRhY2hlZCBhbW91bnQ6IAkAAaQAAAABBQAAAA5hdHRhY2hlZEFtb3VudAIAAAAHLCBjb2w6IAkAAaQAAAABBQAAAANjb2wCAAAACCwgY2lyYzogCQABpAAAAAEFAAAABGNpcmMCAAAADSwgZXN0aW1hdGVkOiAJAAGkAAAAAQUAAAAJZXN0aW1hdGVkBQAAAAR1bml0AQAAAAdlbnF1ZXVlAAAACAAAAAJpZAAAAAZhY3Rpb24AAAADYW10AAAABXRva2VuAAAACnByaWNlSW5kZXgAAAAHaW52b2tlcgAAAAltaW5QYXlvdXQAAAAJbWF4UGF5b3V0BAAAABFpbmNyZWFzZVF1ZXVlU2l6ZQkBAAAAAklFAAAAAgUAAAAGUVNJWkVLCQAAZAAAAAIFAAAACXF1ZXVlU2l6ZQAAAAAAAAAAAQQAAAADaXRtCQEAAAAMYnVpbGROZXdJdGVtAAAABwUAAAAGYWN0aW9uBQAAAANhbXQFAAAABXRva2VuBQAAAApwcmljZUluZGV4BQAAAAdpbnZva2VyBQAAAAltaW5QYXlvdXQFAAAACW1heFBheW91dAMJAAAAAAAAAgUAAAAJcXVldWVTaXplAAAAAAAAAAAACQAETAAAAAIJAQAAAAJTRQAAAAIFAAAABUhFQURLBQAAAAJpZAkABEwAAAACCQEAAAACU0UAAAACBQAAAAVUQUlMSwUAAAACaWQJAARMAAAAAgkBAAAAAlNFAAAAAgUAAAACaWQFAAAAA2l0bQkABEwAAAACBQAAABFpbmNyZWFzZVF1ZXVlU2l6ZQUAAAADbmlsBAAAAAZwcmV2SWQJAQAAAAZsb2NhbFMAAAACBQAAAAVUQUlMSwIAAAAWY2FuJ3QgZ2V0IHRhaWwgcG9pbnRlcgQAAAAHcHJldkl0bQkBAAAABmxvY2FsUwAAAAIFAAAABnByZXZJZAIAAAAVY2FuJ3QgcmVzb2x2ZSBwb2ludGVyBAAAAA51cGRhdGVkUHJldkl0bQkAASwAAAACBQAAAAdwcmV2SXRtBQAAAAJpZAkABEwAAAACCQEAAAACU0UAAAACBQAAAAZwcmV2SWQFAAAADnVwZGF0ZWRQcmV2SXRtCQAETAAAAAIJAQAAAAJTRQAAAAIFAAAAAmlkBQAAAANpdG0JAARMAAAAAgkBAAAAAlNFAAAAAgUAAAAFVEFJTEsFAAAAAmlkCQAETAAAAAIFAAAAEWluY3JlYXNlUXVldWVTaXplBQAAAANuaWwBAAAAC3Bvb2xTdXBwb3J0AAAABwAAAAtjdXJCdWxsQ29sMAAAAAtjdXJCZWFyQ29sMAAAAAxjdXJCdWxsQ2lyYzAAAAAMY3VyQmVhckNpcmMwAAAADGN1clBvb2xNYWluMAAAAApjdXJQb29sVXAwAAAAC2N1clBvb2xEd24wCgEAAAAHY2xvc2VVcAAAAAcAAAACYzEAAAACYzIAAAACYTAAAAACYTEAAAACYzAAAAACcHUAAAACcGQEAAAABGRpZmYJAABlAAAAAgUAAAACYzEFAAAAAmMyBAAAAANleHAJAABrAAAAAwUAAAACYzEFAAAAAnB1BQAAAAJhMAQAAAAQbGlxdWlkYXRlZFRva2VucwMJAABmAAAAAgUAAAAEZGlmZgUAAAADZXhwBQAAAAJwdQkAAGsAAAADBQAAAARkaWZmBQAAAAJhMAUAAAACYzEEAAAAD2xpcXVpZGF0ZWRWYWx1ZQMJAABmAAAAAgUAAAAEZGlmZgUAAAADZXhwBQAAAANleHAJAABrAAAAAwUAAAAQbGlxdWlkYXRlZFRva2VucwUAAAACYzEFAAAAAmEwCQAFGQAAAAcJAABlAAAAAgUAAAACYzEFAAAAD2xpcXVpZGF0ZWRWYWx1ZQUAAAACYzIJAABlAAAAAgUAAAACYTAFAAAAEGxpcXVpZGF0ZWRUb2tlbnMFAAAAAmExCQAAZAAAAAIFAAAAAmMwBQAAAA9saXF1aWRhdGVkVmFsdWUJAABlAAAAAgUAAAACcHUFAAAAEGxpcXVpZGF0ZWRUb2tlbnMFAAAAAnBkCgEAAAAIY2xvc2VEd24AAAAHAAAAAmMxAAAAAmMyAAAAAmEwAAAAAmExAAAAAmMwAAAAAnB1AAAAAnBkBAAAAARkaWZmCQAAZQAAAAIFAAAAAmMyBQAAAAJjMQQAAAADZXhwCQAAawAAAAMFAAAAAmMyBQAAAAJwZAUAAAACYTEEAAAAEGxpcXVpZGF0ZWRUb2tlbnMDCQAAZgAAAAIFAAAABGRpZmYFAAAAA2V4cAUAAAACcGQJAABrAAAAAwUAAAAEZGlmZgUAAAACYTEFAAAAAmMyBAAAAA9saXF1aWRhdGVkVmFsdWUDCQAAZgAAAAIFAAAABGRpZmYFAAAAA2V4cAUAAAADZXhwCQAAawAAAAMFAAAAEGxpcXVpZGF0ZWRUb2tlbnMFAAAAAmMyBQAAAAJhMQkABRkAAAAHBQAAAAJjMQkAAGUAAAACBQAAAAJjMgUAAAAPbGlxdWlkYXRlZFZhbHVlBQAAAAJhMAkAAGUAAAACBQAAAAJhMQUAAAAQbGlxdWlkYXRlZFRva2VucwkAAGQAAAACBQAAAAJjMAUAAAAPbGlxdWlkYXRlZFZhbHVlBQAAAAJwdQkAAGUAAAACBQAAAAJwZAUAAAAQbGlxdWlkYXRlZFRva2VucwoBAAAAB29wZW5Ed24AAAAHAAAAAmMxAAAAAmMyAAAAAmEwAAAAAmExAAAAAmMwAAAAAnB1AAAAAnBkBAAAAARkaWZmCQAAZQAAAAIFAAAAAmMxBQAAAAJjMgQAAAAOc3BlbnRQb29sVmFsdWUDCQAAZgAAAAIFAAAAAmMwBQAAAARkaWZmBQAAAARkaWZmBQAAAAJjMAQAAAAOYWNxdWlyZWRUb2tlbnMJAABrAAAAAwUAAAAOc3BlbnRQb29sVmFsdWUFAAAAAmExBQAAAAJjMgkABRkAAAAHBQAAAAJjMQkAAGQAAAACBQAAAAJjMgUAAAAOc3BlbnRQb29sVmFsdWUFAAAAAmEwCQAAZAAAAAIFAAAAAmExBQAAAA5hY3F1aXJlZFRva2VucwkAAGUAAAACBQAAAAJjMAUAAAAOc3BlbnRQb29sVmFsdWUFAAAAAnB1CQAAZAAAAAIFAAAAAnBkBQAAAA5hY3F1aXJlZFRva2VucwoBAAAABm9wZW5VcAAAAAcAAAACYzEAAAACYzIAAAACYTAAAAACYTEAAAACYzAAAAACcHUAAAACcGQEAAAABGRpZmYJAABlAAAAAgUAAAACYzIFAAAAAmMxBAAAAA5zcGVudFBvb2xWYWx1ZQMJAABmAAAAAgUAAAACYzAFAAAABGRpZmYFAAAABGRpZmYFAAAAAmMwBAAAAA5hY3F1aXJlZFRva2VucwkAAGsAAAADBQAAAA5zcGVudFBvb2xWYWx1ZQUAAAACYTAFAAAAAmMxCQAFGQAAAAcJAABkAAAAAgUAAAACYzEFAAAADnNwZW50UG9vbFZhbHVlBQAAAAJjMgkAAGQAAAACBQAAAAJhMAUAAAAOYWNxdWlyZWRUb2tlbnMFAAAAAmExCQAAZQAAAAIFAAAAAmMwBQAAAA5zcGVudFBvb2xWYWx1ZQkAAGQAAAACBQAAAAJwdQUAAAAOYWNxdWlyZWRUb2tlbnMFAAAAAnBkBAAAAA0kdDAxMDI1NTExMjkwAwkAAGYAAAACBQAAAAtjdXJCdWxsQ29sMAUAAAALY3VyQmVhckNvbDAEAAAADGFmdGVyQ2xvc2VVcAkBAAAAB2Nsb3NlVXAAAAAHBQAAAAtjdXJCdWxsQ29sMAUAAAALY3VyQmVhckNvbDAFAAAADGN1ckJ1bGxDaXJjMAUAAAAMY3VyQmVhckNpcmMwBQAAAAxjdXJQb29sTWFpbjAFAAAACmN1clBvb2xVcDAFAAAAC2N1clBvb2xEd24wBAAAAA0kdDAxMDQ4MTEwNjE4BQAAAAxhZnRlckNsb3NlVXAEAAAAAWEIBQAAAA0kdDAxMDQ4MTEwNjE4AAAAAl8xBAAAAAFiCAUAAAANJHQwMTA0ODExMDYxOAAAAAJfMgQAAAABYwgFAAAADSR0MDEwNDgxMTA2MTgAAAACXzMEAAAAAWQIBQAAAA0kdDAxMDQ4MTEwNjE4AAAAAl80BAAAAAFlCAUAAAANJHQwMTA0ODExMDYxOAAAAAJfNQQAAAABZggFAAAADSR0MDEwNDgxMTA2MTgAAAACXzYEAAAAAWcIBQAAAA0kdDAxMDQ4MTEwNjE4AAAAAl83AwkAAGYAAAACBQAAAAFmAAAAAAAAAAAABQAAAAxhZnRlckNsb3NlVXADCQAAAAAAAAIFAAAAAWYAAAAAAAAAAAAJAQAAAAdvcGVuRHduAAAABwUAAAABYQUAAAABYgUAAAABYwUAAAABZAUAAAABZQUAAAABZgUAAAABZwkAAAIAAAABAgAAAApwb29sVXAgPCAwBAAAAA1hZnRlckNsb3NlRHduCQEAAAAIY2xvc2VEd24AAAAHBQAAAAtjdXJCdWxsQ29sMAUAAAALY3VyQmVhckNvbDAFAAAADGN1ckJ1bGxDaXJjMAUAAAAMY3VyQmVhckNpcmMwBQAAAAxjdXJQb29sTWFpbjAFAAAACmN1clBvb2xVcDAFAAAAC2N1clBvb2xEd24wBAAAAA0kdDAxMDk2OTExMTA5BQAAAA1hZnRlckNsb3NlRHduBAAAAAFhCAUAAAANJHQwMTA5NjkxMTEwOQAAAAJfMQQAAAABYggFAAAADSR0MDEwOTY5MTExMDkAAAACXzIEAAAAAWMIBQAAAA0kdDAxMDk2OTExMTA5AAAAAl8zBAAAAAFkCAUAAAANJHQwMTA5NjkxMTEwOQAAAAJfNAQAAAABZQgFAAAADSR0MDEwOTY5MTExMDkAAAACXzUEAAAAAWYIBQAAAA0kdDAxMDk2OTExMTA5AAAAAl82BAAAAAFnCAUAAAANJHQwMTA5NjkxMTEwOQAAAAJfNwMJAABmAAAAAgUAAAABZwAAAAAAAAAAAAUAAAANYWZ0ZXJDbG9zZUR3bgMJAAAAAAAAAgUAAAABZwAAAAAAAAAAAAkBAAAABm9wZW5VcAAAAAcFAAAAAWEFAAAAAWIFAAAAAWMFAAAAAWQFAAAAAWUFAAAAAWYFAAAAAWcJAAACAAAAAQIAAAALcG9vbER3biA8IDAEAAAAAmMxCAUAAAANJHQwMTAyNTUxMTI5MAAAAAJfMQQAAAACYzIIBQAAAA0kdDAxMDI1NTExMjkwAAAAAl8yBAAAAAJhMAgFAAAADSR0MDEwMjU1MTEyOTAAAAACXzMEAAAAAmExCAUAAAANJHQwMTAyNTUxMTI5MAAAAAJfNAQAAAACYzAIBQAAAA0kdDAxMDI1NTExMjkwAAAAAl81BAAAAAJwdQgFAAAADSR0MDEwMjU1MTEyOTAAAAACXzYEAAAAAnBkCAUAAAANJHQwMTAyNTUxMTI5MAAAAAJfNwQAAAAGY2hhcmdlCQAAawAAAAMJAQAAAAt1c2VyRGlmZkFicwAAAAAFAAAAE3JlYmFsYW5jZVBlcmNlbnRpbGUJAABoAAAAAgkAAGgAAAACAAAAAAAAAAWgAAAAAAAAAABkAAAAAAAAAABkBAAAABNwZXJjZW50aWxlQWN0aXZhdGVkCQAAZwAAAAIFAAAABmhlaWdodAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAA5jb25maWdQcm92aWRlcgIAAAAacGVyY2VudGlsZUFjdGl2YXRpb25IZWlnaHQAAAAAAACYloAEAAAACGMxU3BsaXRQAwMFAAAAE3BlcmNlbnRpbGVBY3RpdmF0ZWQJAABmAAAAAgUAAAACcGQAAAAAAAAAAAAHBQAAAAZjaGFyZ2UAAAAAAAAAAAAEAAAACGMyU3BsaXRQAwMFAAAAE3BlcmNlbnRpbGVBY3RpdmF0ZWQJAABmAAAAAgUAAAACcHUAAAAAAAAAAAAHBQAAAAZjaGFyZ2UAAAAAAAAAAAAJAAUZAAAABwkAAGUAAAACBQAAAAJjMQUAAAAIYzFTcGxpdFAJAABlAAAAAgUAAAACYzIFAAAACGMyU3BsaXRQBQAAAAJhMAUAAAACYTEJAABkAAAAAgkAAGQAAAACBQAAAAJjMAUAAAAIYzFTcGxpdFAFAAAACGMyU3BsaXRQBQAAAAJwdQUAAAACcGQBAAAAB3Bvb2xTdXAAAAAEAAAAC2N1ckJ1bGxDb2wwAAAAC2N1ckJlYXJDb2wwAAAADGN1ckJ1bGxDaXJjMAAAAAxjdXJCZWFyQ2lyYzAEAAAADSR0MDExODcxMTIwNTMJAQAAAAtwb29sU3VwcG9ydAAAAAcFAAAAC2N1ckJ1bGxDb2wwBQAAAAtjdXJCZWFyQ29sMAUAAAAMY3VyQnVsbENpcmMwBQAAAAxjdXJCZWFyQ2lyYzAFAAAACHBvb2xNYWluBQAAAAZwb29sVXAFAAAAB3Bvb2xEd24EAAAACGJ1bGxDb2wxCAUAAAANJHQwMTE4NzExMjA1MwAAAAJfMQQAAAAIYmVhckNvbDEIBQAAAA0kdDAxMTg3MTEyMDUzAAAAAl8yBAAAAAhidWxsQ2ljMQgFAAAADSR0MDExODcxMTIwNTMAAAACXzMEAAAACWJlYXJDaXJjMQgFAAAADSR0MDExODcxMTIwNTMAAAACXzQEAAAACXBvb2xNYWluMQgFAAAADSR0MDExODcxMTIwNTMAAAACXzUEAAAAB3Bvb2xVcDEIBQAAAA0kdDAxMTg3MTEyMDUzAAAAAl82BAAAAAhwb29sRHduMQgFAAAADSR0MDExODcxMTIwNTMAAAACXzcJAARMAAAAAgkBAAAAAklFAAAAAgUAAAAIQlVMTENPTEsFAAAACGJ1bGxDb2wxCQAETAAAAAIJAQAAAAJJRQAAAAIFAAAACUJVTExDSVJDSwUAAAAIYnVsbENpYzEJAARMAAAAAgkBAAAAAklFAAAAAgUAAAAIQkVBUkNPTEsFAAAACGJlYXJDb2wxCQAETAAAAAIJAQAAAAJJRQAAAAIFAAAACUJFQVJDSVJDSwUAAAAJYmVhckNpcmMxCQAETAAAAAIJAQAAAAJJRQAAAAIFAAAACVBPT0xVU0ROSwUAAAAJcG9vbE1haW4xCQAETAAAAAIJAQAAAAJJRQAAAAIFAAAAB1BPT0xVUEsFAAAAB3Bvb2xVcDEJAARMAAAAAgkBAAAAAklFAAAAAgUAAAAIUE9PTERXTksFAAAACHBvb2xEd24xBQAAAANuaWwBAAAAB2RlcXVldWUAAAAACgEAAAACc3AAAAACAAAAAWEAAAACbXgDCQAAZwAAAAIFAAAAAm14BQAAAAFhCQAFFAAAAAIFAAAAAWEAAAAAAAAAAAAJAAUUAAAAAgUAAAACbXgJAABlAAAAAgUAAAABYQUAAAACbXgDCQAAAAAAAAIFAAAACXF1ZXVlU2l6ZQAAAAAAAAAAAAkAAAIAAAABAgAAABFub3RoaW5nIHRvIHNldHRsZQoBAAAACmNvbGxlY3RGZWUAAAABAAAABGZlZXMJAQAAAAJJRQAAAAIFAAAAB0ZFRUFDQ0sJAABkAAAAAgUAAAAPZmVlc0FjY3VtdWxhdGVkBQAAAARmZWVzBAAAABFkZWNyZWFzZVF1ZXVlU2l6ZQkBAAAAAklFAAAAAgUAAAAGUVNJWkVLCQAAZQAAAAIFAAAACXF1ZXVlU2l6ZQAAAAAAAAAAAQQAAAANaXNMYXN0RWxlbWVudAkAAAAAAAACBQAAAAtoZWFkUG9pbnRlcgUAAAALdGFpbFBvaW50ZXIEAAAADW92ZXJ3cml0ZVRhaWwJAQAAAAJTRQAAAAIFAAAABVRBSUxLAgAAAAAEAAAAB2RhdGFTdHIJAQAAAAZsb2NhbFMAAAACBQAAAAtoZWFkUG9pbnRlcgIAAAAZYmFkIGhlYWQgcG9pbnRlcihkZXF1ZXVlKQQAAAAEZGF0YQkABLUAAAACBQAAAAdkYXRhU3RyAgAAAAF8BAAAAAZhY3Rpb24JAAGRAAAAAgUAAAAEZGF0YQAAAAAAAAAAAAQAAAADYW10CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAEZGF0YQAAAAAAAAAAAQQAAAAFdG9rZW4JAAGRAAAAAgUAAAAEZGF0YQAAAAAAAAAAAgQAAAAKcHJpY2VJbmRleAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAABGRhdGEAAAAAAAAAAAMEAAAAB2ludm9rZXIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAEZGF0YQAAAAAAAAAABAQAAAAJbWluUGF5b3V0AwkAAGYAAAACAAAAAAAAAAAICQABkAAAAAEFAAAABGRhdGEAAAAAAAAAAAAJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAARkYXRhAAAAAAAAAAAFBAAAAAltYXhQYXlvdXQDCQAAZgAAAAIAAAAAAAAAAAgJAAGQAAAAAQUAAAAEZGF0YQUAAAADTUFYCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAEZGF0YQAAAAAAAAAABgQAAAAEbmV4dAkAAZEAAAACBQAAAARkYXRhCQAAZQAAAAIJAAGQAAAAAQUAAAAEZGF0YQAAAAAAAAAAAQoBAAAAB3BheWJhY2sAAAABAAAAA3RrbgkABEwAAAACCQEAAAACU0UAAAACBQAAAAVIRUFESwUAAAAEbmV4dAkABEwAAAACBQAAABFkZWNyZWFzZVF1ZXVlU2l6ZQkABEwAAAACCQEAAAACU1QAAAADBQAAAAdpbnZva2VyBQAAAANhbXQJAAJZAAAAAQUAAAADdGtuBQAAAANuaWwEAAAABWl0ZW1zAwkAAGYAAAACBQAAABRyZWJhbGFuY2VkUHJpY2VJbmRleAUAAAAKcHJpY2VJbmRleAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACRjb3JydXB0IHN0YXRlLCByZWJhbGFuY2VkUHJpY2VJbmRleD0JAAGkAAAAAQUAAAAUcmViYWxhbmNlZFByaWNlSW5kZXgCAAAAEywgcmVxdWVzdCBwcmljZSBpZD0JAAGkAAAAAQUAAAAKcHJpY2VJbmRleAMJAABmAAAAAgUAAAAKcHJpY2VJbmRleAUAAAAUcmViYWxhbmNlZFByaWNlSW5kZXgJAAACAAAAAQIAAAApY2FuJ3QgZGVxdWV1ZSwgdG9vIGVhcmx5LCByZWJhbGFuY2UgZmlyc3QDCQAAAAAAAAIFAAAABmFjdGlvbgUAAAAFSVNTVUUEAAAAB2ZlZVNpemUJAABrAAAAAwUAAAADYW10BQAAAA9pc3N1ZVBlcmNlbnRpbGUAAAAAAAAAJxAEAAAAD2FkZGVkQ29sbGF0ZXJhbAkAAGUAAAACBQAAAANhbXQFAAAAB2ZlZVNpemUEAAAAAWEDCQAAAAAAAAIFAAAABXRva2VuBQAAAARCVUxMCQAAawAAAAMFAAAACGJ1bGxDaXJjBQAAAA9hZGRlZENvbGxhdGVyYWwFAAAAB2J1bGxDb2wDCQAAAAAAAAIFAAAABXRva2VuBQAAAARCRUFSCQAAawAAAAMFAAAACGJlYXJDaXJjBQAAAA9hZGRlZENvbGxhdGVyYWwFAAAAB2JlYXJDb2wJAAACAAAAAQIAAAAMYmFkIHRva2VuIGlkBAAAAA0kdDAxNDE2NzE0MjIzCQEAAAACc3AAAAACBQAAAAFhBQAAAAltYXhQYXlvdXQEAAAAEmFkZGVkVG9DaXJjdWxhdGlvbggFAAAADSR0MDE0MTY3MTQyMjMAAAACXzEEAAAAC2V4dHJhVG9rZW5zCAUAAAANJHQwMTQxNjcxNDIyMwAAAAJfMgQAAAANJHQwMTQyNDAxNDQxMQMJAAAAAAAAAgUAAAAFdG9rZW4FAAAABEJVTEwJAAUWAAAABAUAAAASYWRkZWRUb0NpcmN1bGF0aW9uBQAAAA9hZGRlZENvbGxhdGVyYWwAAAAAAAAAAAAAAAAAAAAAAAAJAAUWAAAABAAAAAAAAAAAAAAAAAAAAAAAAAUAAAASYWRkZWRUb0NpcmN1bGF0aW9uBQAAAA9hZGRlZENvbGxhdGVyYWwEAAAACXBsdXNCdWxscwgFAAAADSR0MDE0MjQwMTQ0MTEAAAACXzEEAAAAC3BsdXNCdWxsQ29sCAUAAAANJHQwMTQyNDAxNDQxMQAAAAJfMgQAAAAJcGx1c0JlYXJzCAUAAAANJHQwMTQyNDAxNDQxMQAAAAJfMwQAAAALcGx1c0JlYXJDb2wIBQAAAA0kdDAxNDI0MDE0NDExAAAAAl80AwkAAGYAAAACBQAAAAltaW5QYXlvdXQFAAAAEmFkZGVkVG9DaXJjdWxhdGlvbgkBAAAAB3BheWJhY2sAAAABBQAAAAltYWluVG9rZW4JAAROAAAAAgkBAAAAB3Bvb2xTdXAAAAAECQAAZAAAAAIFAAAAB2J1bGxDb2wFAAAAC3BsdXNCdWxsQ29sCQAAZAAAAAIFAAAAB2JlYXJDb2wFAAAAC3BsdXNCZWFyQ29sCQAAZAAAAAIFAAAACGJ1bGxDaXJjBQAAAAlwbHVzQnVsbHMJAABkAAAAAgUAAAAIYmVhckNpcmMFAAAACXBsdXNCZWFycwkABEwAAAACCQEAAAACU0UAAAACBQAAAAVIRUFESwUAAAAEbmV4dAkABEwAAAACCQEAAAAKY29sbGVjdEZlZQAAAAEFAAAAB2ZlZVNpemUJAARMAAAAAgUAAAARZGVjcmVhc2VRdWV1ZVNpemUJAARMAAAAAgkBAAAAAlNUAAAAAwUAAAAHaW52b2tlcgUAAAASYWRkZWRUb0NpcmN1bGF0aW9uCQACWQAAAAEFAAAABXRva2VuCQAETAAAAAIJAQAAAAJTVAAAAAMFAAAACmZlZUFkZHJlc3MFAAAAC2V4dHJhVG9rZW5zCQACWQAAAAEFAAAABXRva2VuBQAAAANuaWwDCQAAAAAAAAIFAAAABmFjdGlvbgUAAAAGUkVERUVNBAAAAA1yZW1vdmVkVG9rZW5zBQAAAANhbXQEAAAABmNhbGNQbwMJAAAAAAAAAgUAAAAFdG9rZW4FAAAABEJVTEwJAABrAAAAAwUAAAAHYnVsbENvbAUAAAANcmVtb3ZlZFRva2VucwUAAAAIYnVsbENpcmMDCQAAAAAAAAIFAAAABXRva2VuBQAAAARCRUFSCQAAawAAAAMFAAAAB2JlYXJDb2wFAAAADXJlbW92ZWRUb2tlbnMFAAAACGJlYXJDaXJjCQAAAgAAAAECAAAADGJhZCB0b2tlbiBpZAQAAAANJHQwMTUzMjYxNTM3NQkBAAAAAnNwAAAAAgUAAAAGY2FsY1BvBQAAAAltYXhQYXlvdXQEAAAADHBheW91dENhcHBlZAgFAAAADSR0MDE1MzI2MTUzNzUAAAACXzEEAAAABWV4dHJhCAUAAAANJHQwMTUzMjYxNTM3NQAAAAJfMgQAAAAHZmVlU2l6ZQkAAGsAAAADBQAAAAxwYXlvdXRDYXBwZWQFAAAAEHJlZGVlbVBlcmNlbnRpbGUAAAAAAAAAJxAEAAAABnBheW91dAMJAABmAAAAAgUAAAAMcGF5b3V0Q2FwcGVkBQAAAAdmZWVTaXplCQAAZQAAAAIFAAAADHBheW91dENhcHBlZAUAAAAHZmVlU2l6ZQAAAAAAAAAAAAQAAAANJHQwMTU1NjExNTcyMAMJAAAAAAAAAgUAAAAFdG9rZW4FAAAABEJVTEwJAAUWAAAABAUAAAANcmVtb3ZlZFRva2VucwUAAAAMcGF5b3V0Q2FwcGVkAAAAAAAAAAAAAAAAAAAAAAAACQAFFgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAFAAAADXJlbW92ZWRUb2tlbnMFAAAADHBheW91dENhcHBlZAQAAAAKbWludXNCdWxscwgFAAAADSR0MDE1NTYxMTU3MjAAAAACXzEEAAAADG1pbnVzQnVsbENvbAgFAAAADSR0MDE1NTYxMTU3MjAAAAACXzIEAAAACm1pbnVzQmVhcnMIBQAAAA0kdDAxNTU2MTE1NzIwAAAAAl8zBAAAAAxtaW51c0JlYXJDb2wIBQAAAA0kdDAxNTU2MTE1NzIwAAAAAl80AwkAAGYAAAACBQAAAAltaW5QYXlvdXQFAAAABnBheW91dAkBAAAAB3BheWJhY2sAAAABBQAAAAV0b2tlbgkABE4AAAACCQEAAAAHcG9vbFN1cAAAAAQJAABlAAAAAgUAAAAHYnVsbENvbAUAAAAMbWludXNCdWxsQ29sCQAAZQAAAAIFAAAAB2JlYXJDb2wFAAAADG1pbnVzQmVhckNvbAkAAGUAAAACBQAAAAhidWxsQ2lyYwUAAAAKbWludXNCdWxscwkAAGUAAAACBQAAAAhiZWFyQ2lyYwUAAAAKbWludXNCZWFycwkABEwAAAACCQEAAAACU0UAAAACBQAAAAVIRUFESwUAAAAEbmV4dAkABEwAAAACCQEAAAAKY29sbGVjdEZlZQAAAAEFAAAAB2ZlZVNpemUJAARMAAAAAgUAAAARZGVjcmVhc2VRdWV1ZVNpemUJAARMAAAAAgkBAAAAAlNUAAAAAwUAAAAHaW52b2tlcgUAAAAGcGF5b3V0CQACWQAAAAEFAAAACW1haW5Ub2tlbgkABEwAAAACCQEAAAACU1QAAAADBQAAAApmZWVBZGRyZXNzBQAAAAVleHRyYQkAAlkAAAABBQAAAAltYWluVG9rZW4FAAAAA25pbAMJAAAAAAAAAgUAAAAGYWN0aW9uBQAAAARQT09MBAAAAAtpc3N1ZVRva2VucwkAAGsAAAADBQAAABRwb29sVG9rZW5DaXJjdWxhdGlvbgUAAAADYW10BQAAAAlwb29sVmFsdWUDCQAAZgAAAAIFAAAACW1pblBheW91dAUAAAALaXNzdWVUb2tlbnMJAQAAAAdwYXliYWNrAAAAAQUAAAAJbWFpblRva2VuCQAETAAAAAIJAQAAAAJJRQAAAAIFAAAACVBPT0xVU0ROSwkAAGQAAAACBQAAAAhwb29sTWFpbgUAAAADYW10CQAETAAAAAIJAQAAAAJJRQAAAAIFAAAACVBPT0xDSVJDSwkAAGQAAAACBQAAABRwb29sVG9rZW5DaXJjdWxhdGlvbgUAAAALaXNzdWVUb2tlbnMJAARMAAAAAgkBAAAAAlNFAAAAAgUAAAAFSEVBREsFAAAABG5leHQJAARMAAAAAgUAAAARZGVjcmVhc2VRdWV1ZVNpemUJAARMAAAAAgkBAAAAAlNUAAAAAwUAAAAHaW52b2tlcgUAAAALaXNzdWVUb2tlbnMJAAJZAAAAAQUAAAAJcG9vbFRva2VuBQAAAANuaWwDCQAAAAAAAAIFAAAABmFjdGlvbgUAAAAGVU5QT09MCgEAAAAFc2hhcmUAAAABAAAAAWEJAABrAAAAAwUAAAABYQUAAAADYW10BQAAABRwb29sVG9rZW5DaXJjdWxhdGlvbgQAAAAMdW5wb29sZWRNYWluCQEAAAAFc2hhcmUAAAABBQAAAAhwb29sTWFpbgQAAAAKdW5wb29sZWRVcAkBAAAABXNoYXJlAAAAAQUAAAAGcG9vbFVwBAAAAAt1bnBvb2xlZER3bgkBAAAABXNoYXJlAAAAAQUAAAAHcG9vbER3bgQAAAAPdW5wb29sZWRVcFZhbHVlCQAAawAAAAMFAAAACnVucG9vbGVkVXAFAAAAB2J1bGxDb2wFAAAACGJ1bGxDaXJjBAAAABB1bnBvb2xlZER3blZhbHVlCQAAawAAAAMFAAAAC3VucG9vbGVkRHduBQAAAAdiZWFyQ29sBQAAAAhiZWFyQ2lyYwQAAAASdG90YWxVbnBvb2xlZFZhbHVlCQAAZAAAAAIJAABkAAAAAgUAAAAMdW5wb29sZWRNYWluBQAAAA91bnBvb2xlZFVwVmFsdWUFAAAAEHVucG9vbGVkRHduVmFsdWUDCQAAZgAAAAIFAAAACW1pblBheW91dAUAAAASdG90YWxVbnBvb2xlZFZhbHVlCQEAAAAHcGF5YmFjawAAAAEFAAAACXBvb2xUb2tlbgkABEwAAAACCQEAAAACSUUAAAACBQAAAAlQT09MVVNETksJAABlAAAAAgUAAAAIcG9vbE1haW4FAAAADHVucG9vbGVkTWFpbgkABEwAAAACCQEAAAACSUUAAAACBQAAAAlQT09MQ0lSQ0sJAABlAAAAAgUAAAAUcG9vbFRva2VuQ2lyY3VsYXRpb24FAAAAA2FtdAkABEwAAAACCQEAAAACSUUAAAACBQAAAAdQT09MVVBLCQAAZQAAAAIFAAAABnBvb2xVcAUAAAAKdW5wb29sZWRVcAkABEwAAAACCQEAAAACSUUAAAACBQAAAAhQT09MRFdOSwkAAGUAAAACBQAAAAdwb29sRHduBQAAAAt1bnBvb2xlZER3bgkABEwAAAACCQEAAAACSUUAAAACBQAAAAlCVUxMQ0lSQ0sJAABlAAAAAgUAAAAIYnVsbENpcmMFAAAACnVucG9vbGVkVXAJAARMAAAAAgkBAAAAAklFAAAAAgUAAAAJQkVBUkNJUkNLCQAAZQAAAAIFAAAACGJlYXJDaXJjBQAAAAt1bnBvb2xlZER3bgkABEwAAAACCQEAAAACSUUAAAACBQAAAAhCVUxMQ09MSwkAAGUAAAACBQAAAAdidWxsQ29sBQAAAA91bnBvb2xlZFVwVmFsdWUJAARMAAAAAgkBAAAAAklFAAAAAgUAAAAIQkVBUkNPTEsJAABlAAAAAgUAAAAHYmVhckNvbAUAAAAQdW5wb29sZWREd25WYWx1ZQkABEwAAAACCQEAAAACU0UAAAACBQAAAAVIRUFESwUAAAAEbmV4dAkABEwAAAACBQAAABFkZWNyZWFzZVF1ZXVlU2l6ZQkABEwAAAACCQEAAAACU1QAAAADBQAAAAdpbnZva2VyBQAAABJ0b3RhbFVucG9vbGVkVmFsdWUJAAJZAAAAAQUAAAAJbWFpblRva2VuBQAAAANuaWwJAAACAAAAAQkAASwAAAACAgAAAAxiYWQgYWN0aW9uOiAFAAAABmFjdGlvbgMFAAAADWlzTGFzdEVsZW1lbnQJAARMAAAAAgUAAAANb3ZlcndyaXRlVGFpbAUAAAAFaXRlbXMFAAAABWl0ZW1zAQAAAAlyZWJhbGFuY2UAAAAACgEAAAACTFYAAAAEAAAAAXYAAAACcDAAAAACcDEAAAABbQQAAAAFZGVub20EAAAAAm1kCQAAaQAAAAIJAABoAAAAAgkAAGgAAAACAAAAAAAAAAACAwkAAGYAAAACBQAAAAJwMQUAAAACcDAFAAAAAnAxBQAAAAJwMAUAAAABbQAAAAAAtQTzMwMJAABmAAAAAgAAAAAAAAAACgUAAAACbWQAAAAAAAAAAAoDCQAAZgAAAAIAAAAAAAAAAGQFAAAAAm1kAAAAAAAAAABkAAAAAAAAAAPoBAAAAARwbWF4CQAAaQAAAAIDCQAAZgAAAAIFAAAAAnAxBQAAAAJwMAUAAAACcDEFAAAAAnAwBQAAAAVkZW5vbQQAAAAEcG1pbgkAAGkAAAACAwkAAGYAAAACBQAAAAJwMAUAAAACcDEFAAAAAnAxBQAAAAJwMAUAAAAFZGVub20EAAAAAWEJAABoAAAAAgUAAAAEcG1pbgUAAAAEcG1pbgQAAAABYgkAAGUAAAACCQAAaAAAAAIJAABoAAAAAgkAAGgAAAACBQAAAAFtBQAAAAFtBQAAAARwbWF4BQAAAARwbWF4CQAAaAAAAAIJAABoAAAAAgkAAGUAAAACCQAAaAAAAAIJAABoAAAAAgAAAAAAAAAAAgUAAAABbQUAAAABbQUAAAABbQUAAAAEcG1heAUAAAAEcG1pbgQAAAACbWEJAABlAAAAAgkAAGgAAAACBQAAAAFtBQAAAAFtBQAAAAFtCQAAawAAAAMFAAAAAXYJAABkAAAAAgkAAGgAAAACBQAAAAJtYQUAAAABYQUAAAABYgkAAGQAAAACCQAAaAAAAAIJAABkAAAAAgUAAAACbWEAAAAAAAAAAAEFAAAAAWEFAAAAAWIEAAAAEXNldHRsZWRQcmljZUluZGV4CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAHUkVCSURYSwIAAAARaW5jb25zaXN0ZW50IGRhdGEEAAAAE3Vuc2V0dGxlZFByaWNlSW5kZXgJAABkAAAAAgUAAAARc2V0dGxlZFByaWNlSW5kZXgAAAAAAAAAAAEEAAAADHNldHRsZWRQcmljZQkBAAAADHByaWNlQnlJbmRleAAAAAIFAAAACWFzc2V0TmFtZQUAAAARc2V0dGxlZFByaWNlSW5kZXgEAAAACW5leHRQcmljZQkBAAAADHByaWNlQnlJbmRleAAAAAIFAAAACWFzc2V0TmFtZQUAAAATdW5zZXR0bGVkUHJpY2VJbmRleAQAAAAGbWluVm9sAwkAAGYAAAACBQAAAAdiZWFyQ29sBQAAAAdidWxsQ29sBQAAAAdidWxsQ29sBQAAAAdiZWFyQ29sBAAAAAZyZWRpc3QJAQAAAAJMVgAAAAQFAAAABm1pblZvbAUAAAAMc2V0dGxlZFByaWNlBQAAAAluZXh0UHJpY2UFAAAACGxldmVyYWdlBAAAABNwcmljZVVwR29vZEZvckJ1bGxzCQAAAAAAAAIFAAAACWFzc2V0TmFtZQIAAAAABAAAAAtwcmljZUdvZXNVcAkAAGYAAAACBQAAAAluZXh0UHJpY2UFAAAADHNldHRsZWRQcmljZQQAAAAJYnVsbHNFYXJuCQAAAAAAAAIFAAAAE3ByaWNlVXBHb29kRm9yQnVsbHMFAAAAC3ByaWNlR29lc1VwBAAAAApuZXdCdWxsQ29sAwUAAAAJYnVsbHNFYXJuCQAAZAAAAAIFAAAAB2J1bGxDb2wFAAAABnJlZGlzdAkAAGUAAAACBQAAAAdidWxsQ29sBQAAAAZyZWRpc3QEAAAACm5ld0JlYXJDb2wDBQAAAAlidWxsc0Vhcm4JAABlAAAAAgUAAAAHYmVhckNvbAUAAAAGcmVkaXN0CQAAZAAAAAIFAAAAB2JlYXJDb2wFAAAABnJlZGlzdAQAAAANJHQwMTk2MDgxOTc5NAkBAAAAC3Bvb2xTdXBwb3J0AAAABwUAAAAKbmV3QnVsbENvbAUAAAAKbmV3QmVhckNvbAUAAAAIYnVsbENpcmMFAAAACGJlYXJDaXJjBQAAAAhwb29sTWFpbgUAAAAGcG9vbFVwBQAAAAdwb29sRHduBAAAAAp1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", "chainId": 87, "height": 2345063, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H5XQMYij4pYQCbR2oGmk5yYmxhkNhSjH5Yz2XMT6xTHD Next: FME1ftFJS9X58ARtT2mSb19qHiAZf6Y7HYhDKVbNxNbc Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 1000000
4+func a (b,c) = StringEntry(b, c)
55
6-let b = 100000000
76
8-let c = "configProvider"
7+func d (b,c) = IntegerEntry(b, c)
98
10-let d = {
11- let e = getString(this, c)
12- if ($isInstanceOf(e, "String"))
9+
10+func e (f,g,h) = ScriptTransfer(f, g, h)
11+
12+
13+func i (b,c) = a(("__dbg__" + b), c)
14+
15+
16+let j = 1000000
17+
18+let k = 100000000
19+
20+let l = 9223372036854775807
21+
22+let m = "configProvider"
23+
24+let n = {
25+ let o = getString(this, m)
26+ if ($isInstanceOf(o, "String"))
1327 then {
14- let f = e
15- addressFromStringValue(f)
28+ let p = o
29+ addressFromStringValue(p)
1630 }
1731 else this
1832 }
1933
20-let g = "BULLId"
21-
22-let h = "BEARId"
23-
24-let i = "mainTokenId"
25-
26-let j = "bullCollateral"
27-
28-let k = "bearCollateral"
29-
30-let l = "bullCirculation"
31-
32-let m = "bearCirculation"
33-
34-let n = "issuePercentile"
35-
36-let o = "redeemPercentile"
37-
38-let p = "minIssue"
39-
40-let q = "minRedeem"
41-
42-let r = "minPool"
43-
44-let s = "feesAccumulated"
45-
46-let t = "issueWhiteList"
47-
48-let u = "oracle"
49-
50-let v = "price_index"
51-
52-let w = "price_index_"
53-
54-let x = "price_"
55-
56-let y = "price_index"
57-
58-let z = "lastSettlementPriceId"
59-
60-let A = "headPointer"
61-
62-let B = "tailPointer"
63-
64-let C = "queueSize"
65-
66-let D = "poolMainTokenValue"
67-
68-let E = "poolUp"
69-
70-let F = "poolDwn"
71-
72-let G = "poolTokenCirculation"
73-
74-let H = "poolToken"
75-
76-let I = valueOrErrorMessage(getInteger(this, j), "no bullCollateralKey")
77-
78-let J = valueOrErrorMessage(getInteger(this, k), "no bearCollateralKey")
79-
80-let K = valueOrErrorMessage(getInteger(this, l), "no bullCirculationKey")
81-
82-let L = valueOrErrorMessage(getInteger(this, m), "no bearCirculationKey")
83-
84-let M = valueOrErrorMessage(getString(this, g), "no BULLKey")
85-
86-let N = valueOrErrorMessage(getString(this, h), "no BEARKey")
87-
88-let O = valueOrErrorMessage(getString(this, i), "no mainTokenKey")
89-
90-let P = valueOrErrorMessage(getInteger(d, n), "no issuePercentileKey")
91-
92-let Q = valueOrErrorMessage(getInteger(d, o), "no redeemPercentileKey")
93-
94-let R = valueOrErrorMessage(getInteger(d, p), "no minIssueKey")
95-
96-let S = valueOrErrorMessage(getInteger(d, q), "no minRedeemKey")
97-
98-let T = valueOrErrorMessage(getInteger(d, r), "no minPoolKey")
99-
100-let U = valueOrErrorMessage(getString(d, t), "no whitelistKey")
101-
102-func V (W) = if ((U == ""))
103- then true
104- else isDefined(indexOf(U, toString(W)))
34+func q (b,r) = valueOrErrorMessage(getInteger(this, b), r)
10535
10636
107-let X = valueOrErrorMessage(getInteger(this, D), "no poolMainTokenValueKey")
108-
109-let Y = valueOrErrorMessage(getInteger(this, E), "no poolUpKey")
110-
111-let Z = valueOrErrorMessage(getInteger(this, F), "no poolDwnKey")
112-
113-let aa = valueOrErrorMessage(getString(this, H), "no poolTokenKey")
114-
115-let ab = valueOrErrorMessage(getInteger(this, G), "no poolTokenCirculationKey")
116-
117-let ac = ((X + fraction(I, Y, K)) + fraction(J, Z, L))
118-
119-let ad = valueOrErrorMessage(addressFromPublicKey(fromBase58String(valueOrErrorMessage(getString(this, u), "no oraclePKKey"))), "bad oracle address")
120-
121-let ae = valueOrErrorMessage(getInteger(this, z), "no last rebalance price")
122-
123-let af = valueOrErrorMessage(getInteger(ad, v), ((("bad oracle data at " + toString(ad)) + ": no integer at ") + v))
124-
125-let ag = valueOrElse(getInteger(this, C), 0)
126-
127-let ah = valueOrElse(getString(this, A), "")
128-
129-let ai = valueOrElse(getString(this, B), "")
130-
131-let aj = valueOrElse(getInteger(this, s), 0)
132-
133-let ak = "ISSUE"
134-
135-let al = "REDEEM"
136-
137-let am = "POOL"
138-
139-let an = "UNPOOL"
140-
141-let ao = "feeAddress"
142-
143-let ap = "stakingAddress"
144-
145-let aq = "daemonPublicKey"
146-
147-let ar = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(d, ao), "no feeAddress")), "bad feeAddress")
148-
149-let as = valueOrErrorMessage(getString(d, ap), "no stakingAddress")
150-
151-let at = fromBase58String(valueOrErrorMessage(getString(d, aq), "no daemonPublicKey"))
152-
153-let au = addressFromString("3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ")
154-
155-let av = ["2HHqV8W9DJayV5R6tBD2Sb8srphpoboDi7r1t1aPiumC", "5ZXe82RRASU7qshXM2J9JNYhqJ9GWYjjVq2gwUV5Naz9", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
156-
157-func aw (W,ax,ay) = if (if ((W == 0))
158- then true
159- else (ax == 0))
160- then 0
161- else fraction(W, ax, ay)
37+func s (b,r) = valueOrErrorMessage(getString(this, b), r)
16238
16339
164-func az (aA,aB,aC,aD,aE) = (((((((((aA + "|") + toString(aB)) + "|") + aC) + "|") + toString(aD)) + "|") + aE) + "|")
40+func t (b,r) = valueOrErrorMessage(getInteger(n, b), r)
16541
16642
167-func aF (aG) = {
168- let aH = if ((Y > 0))
169- then M
170- else N
171- if ((aH == aG))
172- then X
173- else ((2 * ac) - X)
43+func u (b,r) = valueOrErrorMessage(getString(n, b), r)
44+
45+
46+let v = "BULLId"
47+
48+let w = "BEARId"
49+
50+let x = "mainTokenId"
51+
52+let y = "bullCollateral"
53+
54+let z = "bearCollateral"
55+
56+let A = "bullCirculation"
57+
58+let B = "bearCirculation"
59+
60+let C = "issuePercentile"
61+
62+let D = "redeemPercentile"
63+
64+let E = "minIssue"
65+
66+let F = "minRedeem"
67+
68+let G = "minPool"
69+
70+let H = "feesAccumulated"
71+
72+let I = "issueWhiteList"
73+
74+let J = "rebalancePercentile"
75+
76+let K = "lastSettlementPriceId"
77+
78+let L = "headPointer"
79+
80+let M = "tailPointer"
81+
82+let N = "queueSize"
83+
84+let O = "poolMainTokenValue"
85+
86+let P = "poolUp"
87+
88+let Q = "poolDwn"
89+
90+let R = "poolTokenCirculation"
91+
92+let S = "poolToken"
93+
94+let T = "defoAssetName"
95+
96+let U = "leverage"
97+
98+let V = "wavesPacemakerFee"
99+
100+let W = "usdnPacemakerFee"
101+
102+let X = "oracle"
103+
104+func Y (Z) = if ((Z == ""))
105+ then "price_index"
106+ else ("%s%s__idxCurrent__" + Z)
107+
108+
109+func aa (Z) = if ((Z == ""))
110+ then "price_index_"
111+ else (("%s%s%d__idx2Height__" + Z) + "__")
112+
113+
114+func ab (Z) = if ((Z == ""))
115+ then "price_"
116+ else (("%s%s%d__priceByHeight__" + Z) + "__")
117+
118+
119+let ac = valueOrElse(getInteger(n, W), 0)
120+
121+let ad = valueOrElse(getInteger(n, V), 0)
122+
123+let ae = valueOrElse(getString(this, T), "")
124+
125+let af = q(y, "no 0")
126+
127+let ag = q(z, "no 1")
128+
129+let ah = q(A, "no 2")
130+
131+let ai = q(B, "no 3")
132+
133+let aj = s(v, "no 14")
134+
135+let ak = s(w, "no 15")
136+
137+let al = s(x, "no 16")
138+
139+let am = t(C, "no 4")
140+
141+let an = t(D, "no 5")
142+
143+let ao = t(E, "no 6")
144+
145+let ap = t(F, "no 7")
146+
147+let aq = t(G, "no 8")
148+
149+let ar = valueOrElse(getInteger(n, ((toString(this) + "_") + J)), 0)
150+
151+let as = u(I, "no 9")
152+
153+func at (f) = if ((as == ""))
154+ then true
155+ else isDefined(indexOf(as, toString(f)))
156+
157+
158+let au = q(O, "no")
159+
160+let av = q(P, "no 10")
161+
162+let aw = q(Q, "no 11")
163+
164+let ax = s(S, "no 12")
165+
166+let ay = q(R, "no 13")
167+
168+let az = fraction(af, av, ah)
169+
170+let aA = fraction(ag, aw, ai)
171+
172+let aB = ((au + az) + aA)
173+
174+let aC = valueOrErrorMessage(addressFromPublicKey(fromBase58String(valueOrErrorMessage(getString(this, X), "no oraclePKKey"))), "bad oracle address")
175+
176+let aD = valueOrErrorMessage(getInteger(this, K), "no last rebalance price")
177+
178+let aE = valueOrErrorMessage(getInteger(aC, Y(ae)), ((("bad oracle data at " + toString(aC)) + ": no integer at ") + Y(ae)))
179+
180+let aF = valueOrElse(getInteger(this, U), 3)
181+
182+func aG (ae,aH) = valueOrErrorMessage(getInteger(aC, (aa(ae) + toString(aH))), ("no data at index " + toString(aH)))
183+
184+
185+func aI (ae,aJ) = valueOrErrorMessage(getInteger(aC, (ab(ae) + toString(aJ))), ("no data for height " + toString(aJ)))
186+
187+
188+func aK (ae,aH) = aI(ae, aG(ae, aH))
189+
190+
191+let aL = valueOrElse(getInteger(this, N), 0)
192+
193+let aM = valueOrElse(getString(this, L), "")
194+
195+let aN = valueOrElse(getString(this, M), "")
196+
197+let aO = valueOrElse(getInteger(this, H), 0)
198+
199+let aP = "ISSUE"
200+
201+let aQ = "REDEEM"
202+
203+let aR = "POOL"
204+
205+let aS = "UNPOOL"
206+
207+let aT = "feeAddress"
208+
209+let aU = "stakingAddress"
210+
211+let aV = "daemonPublicKey"
212+
213+let aW = valueOrErrorMessage(addressFromString(u(aT, "no feeAddress")), "bad feeAddress")
214+
215+let aX = u(aU, "no stakingAddress")
216+
217+let aY = fromBase58String(u(aV, "no daemonPublicKey"))
218+
219+let aZ = addressFromString("3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ")
220+
221+let ba = ["2HHqV8W9DJayV5R6tBD2Sb8srphpoboDi7r1t1aPiumC", "5ZXe82RRASU7qshXM2J9JNYhqJ9GWYjjVq2gwUV5Naz9", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
222+
223+func bb (bc,g,bd,aH,be,bf,bg) = (((((((((((((bc + "|") + toString(g)) + "|") + bd) + "|") + toString(aH)) + "|") + be) + "|") + toString(bf)) + "|") + toString(bg)) + "|")
224+
225+
226+func bh () = {
227+ let bi = $Tuple2((af - az), (ag - aA))
228+ let bj = bi._1
229+ let bk = bi._2
230+ let bl = (bj - bk)
231+ if ((bl > 0))
232+ then bl
233+ else (0 - bl)
174234 }
175235
176236
177-func aI (aJ) = if ((aJ.caller == this))
237+func bm (bn) = {
238+ let bo = if ((av > 0))
239+ then aj
240+ else ak
241+ if ((bn != bo))
242+ then au
243+ else (bh() + aB)
244+ }
245+
246+
247+func bp (bq,bf) = if ((0 > bf))
248+ then throw("negative min payout")
249+ else {
250+ let br = bq.payments[1]
251+ let bs = {
252+ let o = br.assetId
253+ if ($isInstanceOf(o, "ByteVector"))
254+ then {
255+ let bt = o
256+ if ((toBase58String(bt) == al))
257+ then (br.amount >= ac)
258+ else false
259+ }
260+ else if ($isInstanceOf(o, "Unit"))
261+ then {
262+ let bu = o
263+ (br.amount >= ad)
264+ }
265+ else throw("Match error")
266+ }
267+ if (!(bs))
268+ then throw("incorrect pacemaker fee")
269+ else true
270+ }
271+
272+
273+func bv (bw) = if ((bw.caller == this))
178274 then throw("can't do")
179275 else {
180- func aK (aL) = throw(((((("only BULL(" + M) + ") or BEAR(") + N) + ") tokens are accepted, received: ") + aL))
276+ func bx (by) = throw(((((("bad token att: only BULL(" + aj) + ") or BEAR(") + ak) + ") tokens are accepted, received: ") + by))
181277
182- let aM = toBase58String(valueOrErrorMessage(value(aJ.payments[0]).assetId, "waves are not accepted here"))
183- if (if ((aM != N))
184- then (aM != M)
278+ let Z = toBase58String(valueOrErrorMessage(value(bw.payments[0]).assetId, "bad token att"))
279+ if (if ((Z != ak))
280+ then (Z != aj)
185281 else false)
186- then aK(aM)
282+ then bx(Z)
187283 else {
188- let aN = aJ.payments[0].amount
189- let aO = if ((aM == N))
190- then J
191- else I
192- let aP = if ((aM == N))
193- then L
194- else K
195- let aQ = fraction(aO, aN, aP)
196- if ((S > aQ))
197- then throw((((((((((("Attached payment too small. Min redeem amount is " + toString((S / 1000000))) + " USDN, ") + "attached amount: ") + toString(aN)) + ", col: ") + toString(aO)) + ", circ: ") + toString(aP)) + ", estimated: ") + toString(aQ)))
284+ let bz = bw.payments[0].amount
285+ let bA = if ((Z == ak))
286+ then ag
287+ else af
288+ let bB = if ((Z == ak))
289+ then ai
290+ else ah
291+ let bC = fraction(bA, bz, bB)
292+ if ((ap > bC))
293+ then throw((((((((((("Attached payment too small. Min redeem amount is " + toString((ap / 1000000))) + " USDN, ") + "attached amount: ") + toString(bz)) + ", col: ") + toString(bA)) + ", circ: ") + toString(bB)) + ", estimated: ") + toString(bC)))
198294 else unit
199295 }
200296 }
201297
202298
203-func aR (aS,aA,aB,aC,aD,aE) = {
204- let aT = IntegerEntry(C, (ag + 1))
205- let aU = az(aA, aB, aC, aD, aE)
206- if ((ag == 0))
207- then [StringEntry(A, aS), StringEntry(B, aS), StringEntry(aS, aU), aT]
299+func bD (bE,bc,g,bd,aH,be,bf,bg) = {
300+ let bF = d(N, (aL + 1))
301+ let bG = bb(bc, g, bd, aH, be, bf, bg)
302+ if ((aL == 0))
303+ then [a(L, bE), a(M, bE), a(bE, bG), bF]
208304 else {
209- let aV = valueOrErrorMessage(getString(this, B), "can't get tail pointer")
210- let aW = split(valueOrErrorMessage(getString(this, aV), "can't resolve pointer"), "|")
211- let aX = ((((((((((aW[0] + "|") + aW[1]) + "|") + aW[2]) + "|") + aW[3]) + "|") + aW[4]) + "|") + aS)
212-[StringEntry(aV, aX), StringEntry(aS, aU), StringEntry(B, aS), aT]
305+ let bH = s(M, "can't get tail pointer")
306+ let bI = s(bH, "can't resolve pointer")
307+ let bJ = (bI + bE)
308+[a(bH, bJ), a(bE, bG), a(M, bE), bF]
213309 }
214310 }
215311
216312
217-func aY (aZ,ba,bb,bc,bd,be,bf) = {
218- func bg (bh,bi,bj,bk,bl,bm,bn) = {
219- let bo = (bh - bi)
220- let bp = fraction(bh, bm, bj)
221- let bq = if ((bo > bp))
222- then bm
223- else fraction(bo, bj, bh)
224- let br = if ((bo > bp))
225- then bp
226- else fraction(bq, bh, bj)
227- $Tuple7((bh - br), bi, (bj - bq), bk, (bl + br), (bm - bq), bn)
313+func bK (bL,bM,bN,bO,bP,bQ,bR) = {
314+ func bS (bT,bU,bV,bW,bX,bY,bZ) = {
315+ let bl = (bT - bU)
316+ let ca = fraction(bT, bY, bV)
317+ let cb = if ((bl > ca))
318+ then bY
319+ else fraction(bl, bV, bT)
320+ let cc = if ((bl > ca))
321+ then ca
322+ else fraction(cb, bT, bV)
323+ $Tuple7((bT - cc), bU, (bV - cb), bW, (bX + cc), (bY - cb), bZ)
228324 }
229325
230- func bs (bh,bi,bj,bk,bl,bm,bn) = {
231- let bo = (bi - bh)
232- let bp = fraction(bi, bn, bk)
233- let bq = if ((bo > bp))
234- then bn
235- else fraction(bo, bk, bi)
236- let br = if ((bo > bp))
237- then bp
238- else fraction(bq, bi, bk)
239- $Tuple7(bh, (bi - br), bj, (bk - bq), (bl + br), bm, (bn - bq))
326+ func cd (bT,bU,bV,bW,bX,bY,bZ) = {
327+ let bl = (bU - bT)
328+ let ca = fraction(bU, bZ, bW)
329+ let cb = if ((bl > ca))
330+ then bZ
331+ else fraction(bl, bW, bU)
332+ let cc = if ((bl > ca))
333+ then ca
334+ else fraction(cb, bU, bW)
335+ $Tuple7(bT, (bU - cc), bV, (bW - cb), (bX + cc), bY, (bZ - cb))
240336 }
241337
242- func bt (bh,bi,bj,bk,bl,bm,bn) = {
243- let bo = (bh - bi)
244- let bu = if ((bl > bo))
245- then bo
246- else bl
247- let bv = fraction(bu, bk, bi)
248- $Tuple7(bh, (bi + bu), bj, (bk + bv), (bl - bu), bm, (bn + bv))
338+ func ce (bT,bU,bV,bW,bX,bY,bZ) = {
339+ let bl = (bT - bU)
340+ let cf = if ((bX > bl))
341+ then bl
342+ else bX
343+ let cg = fraction(cf, bW, bU)
344+ $Tuple7(bT, (bU + cf), bV, (bW + cg), (bX - cf), bY, (bZ + cg))
249345 }
250346
251- func bw (bh,bi,bj,bk,bl,bm,bn) = {
252- let bo = (bi - bh)
253- let bu = if ((bl > bo))
254- then bo
255- else bl
256- let bv = fraction(bu, bj, bh)
257- $Tuple7((bh + bu), bi, (bj + bv), bk, (bl - bu), (bm + bv), bn)
347+ func ch (bT,bU,bV,bW,bX,bY,bZ) = {
348+ let bl = (bU - bT)
349+ let cf = if ((bX > bl))
350+ then bl
351+ else bX
352+ let cg = fraction(cf, bV, bT)
353+ $Tuple7((bT + cf), bU, (bV + cg), bW, (bX - cf), (bY + cg), bZ)
258354 }
259355
260- if ((aZ > ba))
356+ let ci = if ((bL > bM))
261357 then {
262- let bx = bg(aZ, ba, bb, bc, bd, be, bf)
263- let by = bx
264- let W = by._1
265- let ax = by._2
266- let ay = by._3
267- let bz = by._4
268- let bA = by._5
269- let bB = by._6
270- let bC = by._7
271- if ((bB > 0))
272- then bx
273- else if ((bB == 0))
274- then bt(W, ax, ay, bz, bA, bB, bC)
358+ let cj = bS(bL, bM, bN, bO, bP, bQ, bR)
359+ let ck = cj
360+ let f = ck._1
361+ let cl = ck._2
362+ let cm = ck._3
363+ let cn = ck._4
364+ let r = ck._5
365+ let co = ck._6
366+ let cp = ck._7
367+ if ((co > 0))
368+ then cj
369+ else if ((co == 0))
370+ then ce(f, cl, cm, cn, r, co, cp)
275371 else throw("poolUp < 0")
276372 }
277373 else {
278- let bD = bs(aZ, ba, bb, bc, bd, be, bf)
279- let bE = bD
280- let W = bE._1
281- let ax = bE._2
282- let ay = bE._3
283- let bz = bE._4
284- let bA = bE._5
285- let bB = bE._6
286- let bC = bE._7
287- if ((bC > 0))
288- then bD
289- else if ((bC == 0))
290- then bw(W, ax, ay, bz, bA, bB, bC)
374+ let cq = cd(bL, bM, bN, bO, bP, bQ, bR)
375+ let cr = cq
376+ let f = cr._1
377+ let cl = cr._2
378+ let cm = cr._3
379+ let cn = cr._4
380+ let r = cr._5
381+ let co = cr._6
382+ let cp = cr._7
383+ if ((cp > 0))
384+ then cq
385+ else if ((cp == 0))
386+ then ch(f, cl, cm, cn, r, co, cp)
291387 else throw("poolDwn < 0")
388+ }
389+ let bT = ci._1
390+ let bU = ci._2
391+ let bV = ci._3
392+ let bW = ci._4
393+ let bX = ci._5
394+ let bY = ci._6
395+ let bZ = ci._7
396+ let cs = fraction(bh(), ar, ((1440 * 100) * 100))
397+ let ct = (height >= valueOrElse(getInteger(n, "percentileActivationHeight"), 10000000))
398+ let cu = if (if (ct)
399+ then (bZ > 0)
400+ else false)
401+ then cs
402+ else 0
403+ let cv = if (if (ct)
404+ then (bY > 0)
405+ else false)
406+ then cs
407+ else 0
408+ $Tuple7((bT - cu), (bU - cv), bV, bW, ((bX + cu) + cv), bY, bZ)
409+ }
410+
411+
412+func cw (bL,bM,bN,bO) = {
413+ let cx = bK(bL, bM, bN, bO, au, av, aw)
414+ let cy = cx._1
415+ let cz = cx._2
416+ let cA = cx._3
417+ let cB = cx._4
418+ let cC = cx._5
419+ let cD = cx._6
420+ let cE = cx._7
421+[d(y, cy), d(A, cA), d(z, cz), d(B, cB), d(O, cC), d(P, cD), d(Q, cE)]
422+ }
423+
424+
425+func cF () = {
426+ func cG (f,cH) = if ((cH >= f))
427+ then $Tuple2(f, 0)
428+ else $Tuple2(cH, (f - cH))
429+
430+ if ((aL == 0))
431+ then throw("nothing to settle")
432+ else {
433+ func cI (cJ) = d(H, (aO + cJ))
434+
435+ let cK = d(N, (aL - 1))
436+ let cL = (aM == aN)
437+ let cM = a(M, "")
438+ let cN = s(aM, "bad head pointer(dequeue)")
439+ let cO = split(cN, "|")
440+ let bc = cO[0]
441+ let g = parseIntValue(cO[1])
442+ let bd = cO[2]
443+ let aH = parseIntValue(cO[3])
444+ let be = addressFromStringValue(cO[4])
445+ let bf = if ((8 > size(cO)))
446+ then 0
447+ else parseIntValue(cO[5])
448+ let bg = if ((8 > size(cO)))
449+ then l
450+ else parseIntValue(cO[6])
451+ let cP = cO[(size(cO) - 1)]
452+ func cQ (cR) = [a(L, cP), cK, e(be, g, fromBase58String(cR))]
453+
454+ let cS = if ((aD > aH))
455+ then throw(((("corrupt state, rebalancedPriceIndex=" + toString(aD)) + ", request price id=") + toString(aH)))
456+ else if ((aH > aD))
457+ then throw("can't dequeue, too early, rebalance first")
458+ else if ((bc == aP))
459+ then {
460+ let cT = fraction(g, am, 10000)
461+ let cU = (g - cT)
462+ let f = if ((bd == aj))
463+ then fraction(ah, cU, af)
464+ else if ((bd == ak))
465+ then fraction(ai, cU, ag)
466+ else throw("bad token id")
467+ let cV = cG(f, bg)
468+ let cW = cV._1
469+ let cX = cV._2
470+ let cY = if ((bd == aj))
471+ then $Tuple4(cW, cU, 0, 0)
472+ else $Tuple4(0, 0, cW, cU)
473+ let cZ = cY._1
474+ let da = cY._2
475+ let db = cY._3
476+ let dc = cY._4
477+ if ((bf > cW))
478+ then cQ(al)
479+ else (cw((af + da), (ag + dc), (ah + cZ), (ai + db)) ++ [a(L, cP), cI(cT), cK, e(be, cW, fromBase58String(bd)), e(aW, cX, fromBase58String(bd))])
480+ }
481+ else if ((bc == aQ))
482+ then {
483+ let dd = g
484+ let de = if ((bd == aj))
485+ then fraction(af, dd, ah)
486+ else if ((bd == ak))
487+ then fraction(ag, dd, ai)
488+ else throw("bad token id")
489+ let df = cG(de, bg)
490+ let dg = df._1
491+ let dh = df._2
492+ let cT = fraction(dg, an, 10000)
493+ let di = if ((dg > cT))
494+ then (dg - cT)
495+ else 0
496+ let dj = if ((bd == aj))
497+ then $Tuple4(dd, dg, 0, 0)
498+ else $Tuple4(0, 0, dd, dg)
499+ let dk = dj._1
500+ let dl = dj._2
501+ let dm = dj._3
502+ let dn = dj._4
503+ if ((bf > di))
504+ then cQ(bd)
505+ else (cw((af - dl), (ag - dn), (ah - dk), (ai - dm)) ++ [a(L, cP), cI(cT), cK, e(be, di, fromBase58String(al)), e(aW, dh, fromBase58String(al))])
506+ }
507+ else if ((bc == aR))
508+ then {
509+ let do = fraction(ay, g, aB)
510+ if ((bf > do))
511+ then cQ(al)
512+ else [d(O, (au + g)), d(R, (ay + do)), a(L, cP), cK, e(be, do, fromBase58String(ax))]
513+ }
514+ else if ((bc == aS))
515+ then {
516+ func dp (f) = fraction(f, g, ay)
517+
518+ let dq = dp(au)
519+ let dr = dp(av)
520+ let ds = dp(aw)
521+ let dt = fraction(dr, af, ah)
522+ let du = fraction(ds, ag, ai)
523+ let dv = ((dq + dt) + du)
524+ if ((bf > dv))
525+ then cQ(ax)
526+ else [d(O, (au - dq)), d(R, (ay - g)), d(P, (av - dr)), d(Q, (aw - ds)), d(A, (ah - dr)), d(B, (ai - ds)), d(y, (af - dt)), d(z, (ag - du)), a(L, cP), cK, e(be, dv, fromBase58String(al))]
527+ }
528+ else throw(("bad action: " + bc))
529+ if (cL)
530+ then cM :: cS
531+ else cS
292532 }
293533 }
294534
295535
296-func bF (aZ,ba,bb,bc) = {
297- let bG = aY(aZ, ba, bb, bc, X, Y, Z)
298- let bH = bG._1
299- let bI = bG._2
300- let bJ = bG._3
301- let bK = bG._4
302- let bL = bG._5
303- let bM = bG._6
304- let bN = bG._7
305-[IntegerEntry(j, bH), IntegerEntry(l, bJ), IntegerEntry(k, bI), IntegerEntry(m, bK), IntegerEntry(D, bL), IntegerEntry(E, bM), IntegerEntry(F, bN)]
536+func dw () = {
537+ func dx (c,dy,dz,dA) = {
538+ let dB = {
539+ let dC = (((2 * (if ((dz > dy))
540+ then dz
541+ else dy)) * dA) / 3037000499)
542+ if ((10 > dC))
543+ then 10
544+ else if ((100 > dC))
545+ then 100
546+ else 1000
547+ }
548+ let dD = ((if ((dz > dy))
549+ then dz
550+ else dy) / dB)
551+ let dE = ((if ((dy > dz))
552+ then dz
553+ else dy) / dB)
554+ let f = (dE * dE)
555+ let cl = ((((dA * dA) * dD) * dD) - (((((2 * dA) * dA) - dA) * dD) * dE))
556+ let dF = ((dA * dA) - dA)
557+ fraction(c, ((dF * f) + cl), (((dF + 1) * f) + cl))
558+ }
559+
560+ let dG = valueOrErrorMessage(getInteger(this, K), "inconsistent data")
561+ let dH = (dG + 1)
562+ let dI = aK(ae, dG)
563+ let dJ = aK(ae, dH)
564+ let dK = if ((ag > af))
565+ then af
566+ else ag
567+ let dL = dx(dK, dI, dJ, aF)
568+ let dM = (ae == "")
569+ let dN = (dJ > dI)
570+ let dO = (dM == dN)
571+ let dP = if (dO)
572+ then (af + dL)
573+ else (af - dL)
574+ let dQ = if (dO)
575+ then (ag - dL)
576+ else (ag + dL)
577+ let dR = bK(dP, dQ, ah, ai, au, av, aw)
578+ let dS = dR._1
579+ let dT = dR._2
580+ let dU = dR._3
581+ let dV = dR._4
582+ let dW = dR._5
583+ let dX = dR._6
584+ let dY = dR._7
585+[d(y, dS), d(z, dT), d(A, dU), d(B, dV), d(O, dW), d(P, dX), d(Q, dY), d(K, dH)]
306586 }
307587
308588
309-func bO () = if ((ag == 0))
310- then throw("nothing to settle")
589+func dZ (ea,eb) = if ((ea > eb))
590+ then throw(((("price too old: minPayout " + toString(ea)) + " > avg = ") + toString(eb)))
591+ else ((eb + eb) - ea)
592+
593+
594+func ec (bw,bn,bf) = if (if ((bn != aj))
595+ then (bn != ak)
596+ else false)
597+ then throw("bad token req")
598+ else if ((bw.caller == this))
599+ then throw("can't do")
600+ else if (!(at(bw.caller)))
601+ then throw("only whitelisted can do")
602+ else {
603+ let bx = (((("bad token req, only BULL(" + aj) + ") or BEAR(") + ak) + ") allowed")
604+ if ((bw.payments[0].assetId != fromBase58String(al)))
605+ then throw("bad token att")
606+ else {
607+ let g = bw.payments[0].amount
608+ let ed = if ((bn == aj))
609+ then $Tuple2(af, ah)
610+ else if ((bn == ak))
611+ then $Tuple2(ag, ai)
612+ else throw(bx)
613+ let bA = ed._1
614+ let bB = ed._2
615+ let ee = fraction(g, bB, bA)
616+ let ef = if ((bf == 0))
617+ then $Tuple2(0, l)
618+ else $Tuple2(bf, dZ(bf, ee))
619+ let eg = ef._1
620+ let eh = ef._2
621+ if ((ao > g))
622+ then throw((("Attached payment too small. Min required: " + toString((ao / 1000000))) + " USDN"))
623+ else {
624+ let ei = bm(bn)
625+ if (if ((as == ""))
626+ then (bw.payments[0].amount > ei)
627+ else false)
628+ then throw((("trying to issue more than pool can handle. Max attachment allowed = " + toString((ei / 1000000))) + " USDN"))
629+ else (bD(toBase58String(bw.transactionId), aP, g, bn, (aE + 1), toString(bw.caller), eg, eh) ++ [i("requested", bn), i("bull", aj), i("bear", ak)])
630+ }
631+ }
632+ }
633+
634+
635+func ej (bw,bf) = {
636+ let g = bw.payments[0].amount
637+ let bn = toBase58String(valueOrErrorMessage(bw.payments[0].assetId, "bad token att"))
638+ if (if ((bn != aj))
639+ then (bn != ak)
640+ else false)
641+ then throw("bad token req")
642+ else {
643+ let ek = if ((bn == aj))
644+ then $Tuple2(af, ah)
645+ else if ((bn == ak))
646+ then $Tuple2(ag, ai)
647+ else throw("bad token req")
648+ let bA = ek._1
649+ let bB = ek._2
650+ let ee = fraction(g, bA, bB)
651+ let el = if ((bf == 0))
652+ then $Tuple2(0, l)
653+ else $Tuple2(bf, dZ(bf, ee))
654+ let eg = el._1
655+ let eh = el._2
656+ if ((bv(bw) == unit))
657+ then bD(toBase58String(bw.transactionId), aQ, g, bn, (aE + 1), toString(bw.caller), eg, eh)
658+ else throw("doesn't happen")
659+ }
660+ }
661+
662+
663+func em (bw,bf) = if (!(at(bw.caller)))
664+ then throw("only whitelisted can do")
311665 else {
312- func bP (bQ) = IntegerEntry(s, (aj + bQ))
313-
314- let bR = IntegerEntry(C, (ag - 1))
315- let bS = (ah == ai)
316- let bT = StringEntry(B, "")
317- let bU = split(valueOrErrorMessage(getString(this, ah), "bad head pointer"), "|")
318- let aA = bU[0]
319- let aB = parseIntValue(bU[1])
320- let aC = bU[2]
321- let aD = parseIntValue(bU[3])
322- let aE = addressFromStringValue(bU[4])
323- let bV = bU[5]
324- let bW = if ((ae > aD))
325- then throw(((("corrupt state, rebalancedPriceIndex=" + toString(ae)) + ", request price id=") + toString(aD)))
326- else if ((aD > ae))
327- then throw("can't dequeue, too early, rebalance first")
328- else if ((aA == ak))
329- then {
330- let bX = fraction(aB, P, 10000)
331- let bY = (aB - bX)
332- if ((aC == M))
333- then {
334- let bZ = fraction(K, bY, I)
335- (bF((I + bY), J, (K + bZ), L) ++ [StringEntry(A, bV), bP(bX), bR, ScriptTransfer(aE, bZ, fromBase58String(M))])
336- }
337- else if ((aC == N))
338- then {
339- let bZ = fraction(L, bY, J)
340- (bF(I, (J + bY), K, (L + bZ)) ++ [StringEntry(A, bV), bP(bX), bR, ScriptTransfer(aE, bZ, fromBase58String(N))])
341- }
342- else throw("bad token id")
343- }
344- else if ((aA == al))
345- then {
346- let ca = aB
347- if ((aC == M))
348- then {
349- let cb = fraction(I, ca, K)
350- let bX = fraction(cb, Q, 10000)
351- let cc = if ((cb > bX))
352- then (cb - bX)
353- else 0
354- (bF((I - cb), J, (K - ca), L) ++ [StringEntry(A, bV), bP(bX), bR, ScriptTransfer(aE, cc, fromBase58String(O))])
355- }
356- else if ((aC == N))
357- then {
358- let cb = fraction(J, ca, L)
359- let bX = fraction(cb, Q, 10000)
360- let cc = if ((cb > bX))
361- then (cb - bX)
362- else 0
363- (bF(I, (J - cb), K, (L - ca)) ++ [StringEntry(A, bV), bP(bX), bR, ScriptTransfer(aE, cc, fromBase58String(O))])
364- }
365- else throw("bad token id")
366- }
367- else if ((aA == am))
368- then {
369- let cd = fraction(ab, aB, ac)
370-[IntegerEntry(D, (X + aB)), IntegerEntry(G, (ab + cd)), StringEntry(A, bV), bR, ScriptTransfer(aE, cd, fromBase58String(aa))]
371- }
372- else if ((aA == an))
373- then {
374- func ce (W) = fraction(W, aB, ab)
375-
376- let cf = ce(X)
377- let cg = ce(Y)
378- let ch = ce(Z)
379- let ci = fraction(cg, I, K)
380- let cj = fraction(ch, J, L)
381-[IntegerEntry(D, (X - cf)), IntegerEntry(G, (ab - aB)), IntegerEntry(E, (Y - cg)), IntegerEntry(F, (Z - ch)), IntegerEntry(l, (K - cg)), IntegerEntry(m, (L - ch)), IntegerEntry(j, (I - ci)), IntegerEntry(k, (J - cj)), StringEntry(A, bV), bR, ScriptTransfer(aE, ((cf + ci) + cj), fromBase58String(O))]
382- }
383- else throw(("bad action: " + aA))
384- if (bS)
385- then bT :: bW
386- else bW
666+ let en = (("main token must be attached(" + al) + ")")
667+ let eo = bw.payments[0]
668+ if ((eo.assetId != fromBase58String(al)))
669+ then throw(en)
670+ else if ((aq > eo.amount))
671+ then throw(((("pool at least " + toString(aq)) + " ") + al))
672+ else {
673+ let ep = fraction(ay, eo.amount, aB)
674+ let eq = if ((bf == 0))
675+ then $Tuple2(0, l)
676+ else $Tuple2(bf, dZ(bf, ep))
677+ let eg = eq._1
678+ let eh = eq._2
679+ bD(toBase58String(bw.transactionId), aR, bw.payments[0].amount, "", (aE + 1), toString(bw.caller), eg, eh)
680+ }
387681 }
388682
389683
390-func ck () = {
391- func cl (cm,cn,co) = {
392- let cp = 100
393- let cq = ((if ((co > cn))
394- then co
395- else cn) / cp)
396- let cr = ((if ((cn > co))
397- then co
398- else cn) / cp)
399- let W = (cr * cr)
400- let ax = (((9 * cq) * cq) - ((15 * cq) * cr))
401- fraction(cm, ((6 * W) + ax), ((7 * W) + ax))
402- }
403-
404- let cs = valueOrErrorMessage(getInteger(this, z), "inconsistent data")
405- let ct = (cs + 1)
406- let cu = valueOrErrorMessage(getInteger(ad, ("price_index_" + toString(cs))), "bad oracle data for settled price height")
407- let cv = valueOrErrorMessage(getInteger(ad, ("price_" + toString(cu))), "bad oracle data for price")
408- let cw = valueOrErrorMessage(getInteger(ad, ("price_index_" + toString(ct))), "no next price height")
409- let cx = valueOrErrorMessage(getInteger(ad, ("price_" + toString(cw))), "no next price")
410- let cy = if ((J > I))
411- then I
412- else J
413- let cz = cl(cy, cv, cx)
414- let cA = if ((cx > cv))
415- then (I + cz)
416- else (I - cz)
417- let cB = if ((cx > cv))
418- then (J - cz)
419- else (J + cz)
420- let cC = aY(cA, cB, K, L, X, Y, Z)
421- let cD = cC._1
422- let cE = cC._2
423- let cF = cC._3
424- let cG = cC._4
425- let cH = cC._5
426- let cI = cC._6
427- let cJ = cC._7
428-[IntegerEntry(j, cD), IntegerEntry(k, cE), IntegerEntry(l, cF), IntegerEntry(m, cG), IntegerEntry(D, cH), IntegerEntry(E, cI), IntegerEntry(F, cJ), IntegerEntry(z, ct)]
684+func er (bw,bf) = {
685+ let en = (("only pool token allowed(" + ax) + ")")
686+ let eo = bw.payments[0]
687+ if ((eo.assetId != fromBase58String(ax)))
688+ then throw(en)
689+ else {
690+ let ep = fraction(aB, eo.amount, ay)
691+ if ((aq > ep))
692+ then throw(((("unpool at least for" + toString(aq)) + " ") + al))
693+ else {
694+ let es = if ((bf == 0))
695+ then $Tuple2(0, l)
696+ else $Tuple2(bf, dZ(bf, ep))
697+ let eg = es._1
698+ let eh = es._2
699+ bD(toBase58String(bw.transactionId), aS, bw.payments[0].amount, "", (aE + 1), toString(bw.caller), eg, eh)
700+ }
701+ }
429702 }
430703
431704
432-@Callable(aJ)
433-func init (cK,cL,cM,cN,cO,cP,cQ,cR,cp) = if (isDefined(getString(this, g)))
705+@Callable(bw)
706+func init (et,eu,ev,ew,ex,ey,ez,eA,eB,dB,eC) = if (isDefined(getString(this, v)))
434707 then throw("already initialized")
435708 else {
436- let cS = aJ.payments[0].amount
437- let cT = (cS / 3)
438- let cU = cT
439- let cV = ((cS - cT) - cU)
440- if (if (if ((cU == 0))
709+ let eD = bw.payments[0].amount
710+ let eE = (eD / 3)
711+ let eF = eE
712+ let eG = ((eD - eE) - eF)
713+ if (if (if ((eF == 0))
441714 then true
442- else (cT == 0))
715+ else (eE == 0))
443716 then true
444- else (cV == 0))
717+ else (eG == 0))
445718 then throw("can't init balances")
446719 else {
447- let cW = valueOrErrorMessage(getInteger(valueOrErrorMessage(addressFromPublicKey(fromBase58String(cL)), "bad oracle address"), v), "can't find last oracle price index")
448- let cX = Issue(cM, cO, ((100 * a) * a), 6, true)
449- let cY = Issue(cN, cP, ((100 * a) * a), 6, true)
450- let cZ = Issue(cQ, cR, ((100 * a) * a), 6, true)
451- let da = calculateAssetId(cX)
452- let db = calculateAssetId(cY)
453- let dc = calculateAssetId(cZ)
454-[cX, cY, cZ, StringEntry(g, toBase58String(da)), StringEntry(h, toBase58String(db)), StringEntry(i, toBase58String(value(aJ.payments[0].assetId))), StringEntry(H, toBase58String(dc)), StringEntry(u, cL), IntegerEntry(z, cW), IntegerEntry(j, cT), IntegerEntry(k, cU), IntegerEntry(l, (cT / cp)), IntegerEntry(m, (cU / cp)), IntegerEntry(G, (cV / cp)), IntegerEntry(F, 0), IntegerEntry(E, 0), IntegerEntry(D, cV), StringEntry(c, cK), ScriptTransfer(aJ.caller, (cT / cp), da), ScriptTransfer(aJ.caller, (cU / cp), db), ScriptTransfer(aJ.caller, (cV / cp), dc)]
720+ let eH = valueOrErrorMessage(getInteger(valueOrErrorMessage(addressFromPublicKey(fromBase58String(eu)), "bad oracle address"), Y(eB)), "can't find last oracle price index")
721+ let eI = Issue(ev, ex, ((100 * j) * j), 6, true)
722+ let eJ = Issue(ew, ey, ((100 * j) * j), 6, true)
723+ let eK = Issue(ez, eA, ((100 * j) * j), 6, true)
724+ let eL = calculateAssetId(eI)
725+ let eM = calculateAssetId(eJ)
726+ let eN = calculateAssetId(eK)
727+[eI, eJ, eK, a(v, toBase58String(eL)), a(w, toBase58String(eM)), a(x, toBase58String(value(bw.payments[0].assetId))), a(S, toBase58String(eN)), a(T, eB), a(X, eu), d(K, eH), d(y, eE), d(z, eF), d(A, (eE / dB)), d(B, (eF / dB)), d(R, (eG / dB)), d(Q, 0), d(P, 0), d(O, eG), a(m, et), d(U, eC), e(bw.caller, (eE / dB), eL), e(bw.caller, (eF / dB), eM), e(bw.caller, (eG / dB), eN)]
455728 }
456729 }
457730
458731
459732
460-@Callable(dd)
461-func withdrawFee (de) = if ((de > aj))
462- then throw(("too much. available: " + toString(aj)))
463- else [IntegerEntry(s, (aj - de)), ScriptTransfer(ar, de, fromBase58String(O))]
733+@Callable(bq)
734+func withdrawFee (eO) = if ((eO > aO))
735+ then throw(("too much. available: " + toString(aO)))
736+ else [d(H, (aO - eO)), e(aW, eO, fromBase58String(al))]
464737
465738
466739
467-@Callable(aJ)
468-func requestRedeem () = if ((aI(aJ) == unit))
469- then {
470- let aM = toBase58String(valueOrErrorMessage(aJ.payments[0].assetId, "waves are not accepted here"))
471- aR(toBase58String(aJ.transactionId), al, aJ.payments[0].amount, aM, (af + 1), toString(aJ.caller))
472- }
473- else throw("doesn't happen")
740+@Callable(bw)
741+func requestRedeem () = ej(bw, 0)
474742
475743
476744
477-@Callable(aJ)
478-func requestIssue (aG) = if ((aJ.caller == this))
479- then throw("can't do")
480- else if (!(V(aJ.caller)))
481- then throw("only whitelisted can do")
482- else {
483- let aK = throw((((((("only BULL(" + M) + ") or BEAR(") + N) + ") tokens are available in exchange for USDN(") + O) + ")"))
484- if (if ((aG != M))
485- then (aG != N)
486- else false)
487- then aK
488- else if ((aJ.payments[0].assetId != fromBase58String(O)))
489- then aK
490- else if ((R > aJ.payments[0].amount))
491- then throw((("Attached payment too small. Min required: " + toString((R / 1000000))) + " USDN"))
492- else {
493- let df = aF(aG)
494- if (if ((U == ""))
495- then (aJ.payments[0].amount > df)
496- else false)
497- then throw((("trying to issue more than pool can handle. Max attachment allowed = " + toString((df / 1000000))) + " USDN"))
498- else aR(toBase58String(aJ.transactionId), ak, aJ.payments[0].amount, aG, (af + 1), toString(aJ.caller))
499- }
500- }
745+@Callable(bw)
746+func requestRedeemSl (eP) = if (bp(bw, eP))
747+ then ej(bw, eP)
748+ else throw()
501749
502750
503751
504-@Callable(aJ)
752+@Callable(bw)
753+func requestIssue (bn) = ec(bw, bn, 0)
754+
755+
756+
757+@Callable(bw)
758+func requestIssueSl (bn,eP) = if (bp(bw, eP))
759+ then ec(bw, bn, eP)
760+ else throw()
761+
762+
763+
764+@Callable(bw)
765+func requestPool () = em(bw, 0)
766+
767+
768+
769+@Callable(bw)
770+func requestPoolSl (eP) = if (bp(bw, eP))
771+ then em(bw, eP)
772+ else throw()
773+
774+
775+
776+@Callable(bw)
777+func requestUnpool () = er(bw, 0)
778+
779+
780+
781+@Callable(bw)
782+func requestUnpoolSl (eP) = if (bp(bw, eP))
783+ then er(bw, eP)
784+ else throw()
785+
786+
787+
788+@Callable(bw)
505789 func settle () = {
506- let dg = (ah == "")
507- let dh = (af > ae)
508- if (dg)
509- then if (dh)
510- then ck()
790+ let eQ = (aM == "")
791+ let eR = (aE > aD)
792+ if (eQ)
793+ then if (eR)
794+ then dw()
511795 else throw("[OK] all done, carry on")
512796 else {
513- let bU = split(valueOrErrorMessage(getString(this, ah), "bad head pointer"), "|")
514- let aD = parseIntValue(bU[3])
515- if ((aD > ae))
516- then if (dh)
517- then ck()
797+ let cO = split(valueOrErrorMessage(getString(this, aM), ("bad head pointer(settle): " + aM)), "|")
798+ let aH = parseIntValue(cO[3])
799+ if ((aH > aD))
800+ then if (eR)
801+ then dw()
518802 else throw("[OK] need to wait")
519- else if ((aD == ae))
520- then bO()
521- else throw("corrupt data, future price id already rebalanced")
803+ else if ((aH == aD))
804+ then cF()
805+ else throw("future price already rebalanced")
522806 }
523807 }
524808
525809
526-
527-@Callable(aJ)
528-func requestPool () = if (!(V(aJ.caller)))
529- then throw("only whitelisted can do")
530- else {
531- let di = (("main token must be attached(" + O) + ")")
532- let dj = aJ.payments[0]
533- if ((dj.assetId != fromBase58String(O)))
534- then throw(di)
535- else if ((T > dj.amount))
536- then throw(((("pool at least " + toString(T)) + " ") + O))
537- else aR(toBase58String(aJ.transactionId), am, aJ.payments[0].amount, "", (af + 1), toString(aJ.caller))
538- }
539-
540-
541-
542-@Callable(aJ)
543-func requestUnpool () = {
544- let di = (("only pool token allowed(" + aa) + ")")
545- let dj = aJ.payments[0]
546- if ((dj.assetId != fromBase58String(aa)))
547- then throw(di)
548- else {
549- let dk = fraction(ac, dj.amount, ab)
550- if ((T > dk))
551- then throw(((("unpool at least for" + toString(T)) + " ") + O))
552- else aR(toBase58String(aJ.transactionId), an, aJ.payments[0].amount, "", (af + 1), toString(aJ.caller))
553- }
554- }
555-
556-
557-@Verifier(dl)
558-func dm () = {
559- let dn = if (!(isDefined(getString(this, g))))
560- then sigVerify(dl.bodyBytes, dl.proofs[0], dl.senderPublicKey)
810+@Verifier(eS)
811+func eT () = {
812+ let eU = if (!(isDefined(getString(this, v))))
813+ then sigVerify(eS.bodyBytes, eS.proofs[0], eS.senderPublicKey)
561814 else false
562- let do = ((((if (sigVerify(dl.bodyBytes, dl.proofs[0], fromBase58String(av[0])))
815+ let eV = ((((if (sigVerify(eS.bodyBytes, eS.proofs[0], fromBase58String(ba[0])))
563816 then 1
564- else 0) + (if (sigVerify(dl.bodyBytes, dl.proofs[1], fromBase58String(av[1])))
817+ else 0) + (if (sigVerify(eS.bodyBytes, eS.proofs[1], fromBase58String(ba[1])))
565818 then 1
566- else 0)) + (if (sigVerify(dl.bodyBytes, dl.proofs[2], fromBase58String(av[2])))
819+ else 0)) + (if (sigVerify(eS.bodyBytes, eS.proofs[2], fromBase58String(ba[2])))
567820 then 1
568821 else 0)) > 1)
569- let dp = {
570- let e = dl
571- if ($isInstanceOf(e, "InvokeScriptTransaction"))
822+ let eW = {
823+ let o = eS
824+ if ($isInstanceOf(o, "InvokeScriptTransaction"))
572825 then {
573- let dl = e
574- let dq = sigVerify(dl.bodyBytes, dl.proofs[0], at)
575- let dr = if ((dl.feeAssetId == unit))
576- then ((1000 * 1000) >= dl.fee)
826+ let eS = o
827+ let eX = sigVerify(eS.bodyBytes, eS.proofs[0], aY)
828+ let eY = if ((eS.feeAssetId == unit))
829+ then ((1000 * 1000) >= eS.fee)
577830 else false
578- let ds = (dl.dApp == au)
579- let dt = (dl.function == "unlockNeutrino")
580- let du = if (if ((dl.function == "lockNeutrinoSP"))
581- then (dl.args[0] == as)
831+ let eZ = (eS.dApp == aZ)
832+ let fa = (eS.function == "unlockNeutrino")
833+ let fb = if (if ((eS.function == "lockNeutrinoSP"))
834+ then (eS.args[0] == aX)
582835 else false)
583- then (wavesBalance(this).available >= b)
836+ then (wavesBalance(this).available >= k)
584837 else false
585- let dv = if (du)
838+ let fc = if (fb)
586839 then true
587- else dt
588- if (if (if (dq)
589- then dr
840+ else fa
841+ if (if (if (eX)
842+ then eY
590843 else false)
591- then ds
844+ then eZ
592845 else false)
593- then dv
846+ then fc
594847 else false
595848 }
596849 else false
597850 }
598- if (if (dn)
851+ if (if (eU)
599852 then true
600- else do)
853+ else eV)
601854 then true
602- else dp
855+ else eW
603856 }
604857

github/deemru/w8io/6500d08 
171.48 ms