tx · 5iacyu898rdBdVsmRyV79tHDPVGDAg3zrpSMpw7TAzN1

3NAYA6kg7zqKjXc1AYGVi3FfawRbUULFzC1:  -0.03100000 Waves

2022.11.28 11:58 [2336742] smart account 3NAYA6kg7zqKjXc1AYGVi3FfawRbUULFzC1 > SELF 0.00000000 Waves

{ "type": 13, "id": "5iacyu898rdBdVsmRyV79tHDPVGDAg3zrpSMpw7TAzN1", "fee": 3100000, "feeAssetId": null, "timestamp": 1669625829163, "version": 1, "sender": "3NAYA6kg7zqKjXc1AYGVi3FfawRbUULFzC1", "senderPublicKey": "7GiECPCqZ7JvTb1VfaViHDJj2avcCTMMR2nPfA48MFiY", "proofs": [ "2DHCuwgQ2MbzTf3dCXnqjb4JqnXdD37gn6ZsUqA11xNS6vMY384n3twu3NUYSAe6magsw76GDCEPsZ3YZpNo48Sc" ], "script": "base64:BgLIKQgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDc5MTU4MDgxIg5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSINb3JkZXJBbXRBc3NldCIQb3JkZXJBbXRBc3NldFN0ciIPb3JkZXJQcmljZUFzc2V0IhJvcmRlclByaWNlQXNzZXRTdHIiCm9yZGVyUHJpY2UiCHByaWNlRGNtIhBjYXN0ZWRPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjI5NDIyMzIzNSIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyMzIzOTIzMzg4IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIzNTEwMjM1NjkiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDI1MDQ2MjUyMTMiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAyNjc5MzI2ODQzIgt0b3RhbEFtb3VudCINJHQwMjY4NDcyNzA3MyILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCnVwZGF0ZWRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiC21heFNsaXBwYWdlIgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiAUAiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDMyNTM3MzI2NjQiE2VtaXRBbW91bnRFc3RpbWF0ZWQiBWJvbnVzIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwMzMzOTMzMzUyOCINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwMzQzMzMzNDQ2NSIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDAzNTEwMDM1MjM4Ig11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDAzNjA2MzM2MTkzIglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5IhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINcG9vbExQQmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hrAAFhAAgAAWIAgMLXLwABYwkAtgIBAIDC1y8AAWQJALYCAQCAgJC7utat8A0AAWUJALYCAQAAAAFmCQC2AgEAAAABZwkAtgIBAAEAAWgJALYCAQACAAFpAgVXQVZFUwABagICX18AAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAAKAAF5AAEAAXoAAgABQQADAAFCAAEAAUMABwEBRAIBRQFGCQC8AgMJALYCAQUBRQUBZAkAtgIBBQFGAQFHAgFIAUkJAKADAQkAvAIDBQFICQC2AgEFAUkFAWQBAUoDAUsBTAFNCQBrAwUBSwUBTAUBTQEBTgEBSAMJAGYCAAAFAUgJAQEtAQUBSAUBSAEBTwEBSAMJAL8CAgUBZQUBSAkAvgIBBQFIBQFIAQFQAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBUQACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFSAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFTAAIRJXMlc19fcHJpY2VfX2xhc3QBAVQCAVUBVgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVUJAMwIAgkApAMBBQFWBQNuaWwFAWoBAVcCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVgCAl9fBQFZAQFaAgFYAVkJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFYAgJfXwUBWQECYWEAAg8lc19fYW1vdW50QXNzZXQBAmFiAAIOJXNfX3ByaWNlQXNzZXQAAmFjAgclc19fZmVlAAJhZAkAawMACgUBYgCQTgACYWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWMFAmFkAAJhZgkAuQkCCQDMCAICAiVzCQDMCAICA2tMcAUDbmlsBQFqAAJhZwkAuQkCCQDMCAICAiVzCQDMCAICEmtMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFqAAJhaAkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hLTHBEZWxheQUDbmlsBQFqAAJhaQAeAAJhagkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhaAUCYWkBAmFrAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFsAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhbQECYW4JAKwCAgkArAICAgglcyVzJXNfXwUCYW4CIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJhbwICYXACYXEJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFwAgJfXwUCYXECCF9fY29uZmlnAQJhcgECYXMJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYXMBAmF0AAIMJXNfX3NodXRkb3duAQJhdQECYXYJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhdgECYXcAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYXgCFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJheQMCYXoCYUECYUIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmF6Ag0gc2VuZGVyVmFsaWQ9CQClAwEFAmFBAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhQgECYUMCAmFEAmFFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYUQFAmFFCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFECQDMCAICAS4JAMwIAgUCYUUJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUYCAmFEAmFFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYUQFAmFFCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFECQDMCAICAS4JAMwIAgUCYUUJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUcBAmFICQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFIBQNuaWwCASABAmFJAQJhSAkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFIBQNuaWwCASAAAmFKCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUMCBQR0aGlzCQEBUAAAAmFLCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUMCBQJhSgUCYXgBAmFMAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhSgkBAmF0AAcBAmFNAAkA2QQBCQECYUMCBQJhSgkBAmFsAAECYU4ABAJhTwkBAmFDAgUEdGhpcwkBAmFhAAQCYVAJAQJhQwIFBHRoaXMJAQJhYgAEAmFxCQECYUYCBQJhSgkBAmFyAQUCYVAEAmFwCQECYUYCBQJhSgkBAmFyAQUCYU8JALUJAgkBAmFDAgUCYUoJAQJhbwIJAKQDAQUCYXAJAKQDAQUCYXEFAWoBAmFRAQJhUgMJAAACBQJhUgUBaQUEdW5pdAkA2QQBBQJhUgECYVMBAmFSAwkAAAIFAmFSBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmFSAQJhVAECYVUJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhVQUBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFVBQFwCQDZBAEJAJEDAgUCYVUFAXEJAQJhUQEJAJEDAgUCYVUFAXIJAQJhUQEJAJEDAgUCYVUFAXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFVBQF1AAJhVgkBAmFUAQkBAmFOAAACYVcFAmFWAAJhWAgFAmFXAl8xAAJhWQgFAmFXAl8yAAJhWggFAmFXAl8zAAJiYQgFAmFXAl80AAJiYggFAmFXAl81AAJiYwgFAmFXAl82AAJiZAgFAmFXAl83AQJiZQAJALUJAgkBAmFDAgUCYUoJAQJhawAFAWoAAmJmCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYmUABQFCAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAAJiZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJlAAUBQwIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwECYmgKAmJpAmJqAmJrAmJsAmJtAmJuAmJvAmJwAmJxAmJyCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiaQkAzAgCCQCkAwEFAmJqCQDMCAIJAKQDAQUCYmsJAMwIAgkApAMBBQJibAkAzAgCCQCkAwEFAmJtCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwCQDMCAIJAKQDAQUCYnEJAMwIAgkApAMBBQJicgUDbmlsBQFqAQJicwYCYnQCYnUCYnYCYmwCYm8CYnAJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJibAkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYnAFA25pbAUBagECYncBAmJ4AwkAAAIFAmJ4AgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJieAECYnkCAmJ6AmJBCQC8AgMFAmJ6BQFkBQJiQQECYkIEAmJDAmJEAmJFAmJGBAJiRwkBAUQCBQJiRQUCYkMEAmJICQEBRAIFAmJGBQJiRAkBAmJ5AgUCYkgFAmJHAQJiSQMCYkUCYkYCYkoEAmJLCQECYU4ABAJiTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiTQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJiTgkBAmJCBAUCYkwFAmJNBQJiRQUCYkYEAmJBCQEBRAIFAmJFBQJiTAQCYnoJAQFEAgUCYkYFAmJNBAJiTwkBAUQCBQJiSgUBYgQCYlAJAQJieQIFAmJBBQJiTwQCYlEJAQJieQIFAmJ6BQJiTwkAzAgCBQJiTgkAzAgCBQJiUAkAzAgCBQJiUQUDbmlsAQJiUgMCYkUCYkYCYkoEAmJTCQECYkkDBQJiRQUCYkYFAmJKCQDMCAIJAQFHAgkAkQMCBQJiUwAABQFiCQDMCAIJAQFHAgkAkQMCBQJiUwABBQFiCQDMCAIJAQFHAgkAkQMCBQJiUwACBQFiBQNuaWwBAmJUBAJiVQJiVgJiVwFYBAJiSwkBAmFOAAQCYlgJAJEDAgUCYksFAXEEAmJZCQCRAwIFAmJLBQFyBAJiWgkAkQMCBQJiSwUBcwQCYkMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYkQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCY2EJAJEDAgUCYksFAXAEAmNiCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlgJAKwCAgkArAICAgZBc3NldCAFAmJYAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmJYBQJiVgkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCY2MJAQJidwEFAmJZBAJjZAkBAUQCBQJjYwUCYkMEAmNlCQECYncBBQJiWgQCY2YJAQFEAgUCY2UFAmJEBAJjZwkBAmJ5AgUCY2YFAmNkBAJjaAkBAUcCBQJjZwUBYgQCY2kJAQFEAgUCYlcFAWIEAmNqCQEBRAIFAmNiBQFiBAJjawkAvAIDBQJjZAUCY2kFAmNqBAJjbAkAvAIDBQJjZgUCY2kFAmNqBAJjbQkBAUcCBQJjawUCYkMEAmNuCQEBRwIFAmNsBQJiRAQCY28DCQAAAgUCYlUCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVgFAmNtAwkAAAIFAmJZAgVXQVZFUwUEdW5pdAkA2QQBBQJiWQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJjbgMJAAACBQJiWgIFV0FWRVMFBHVuaXQJANkEAQUCYloJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCCQClCAEFAVgFAmJVCQECYnMGBQJjbQUCY24FAmJXBQJjaAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjaAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjaAUDbmlsCQCcCgoFAmNtBQJjbgUCYlkFAmJaBQJjYwUCY2UFAmNiBQJjZwUCY2EFAmNvAQJjcAkCYlUCY3ECY3ICY3MCY3QCY3UBWAJjdgJjdwQCYksJAQJhTgAEAmJYCQDZBAEJAJEDAgUCYksFAXEEAmN4CQCRAwIFAmJLBQFyBAJjeQkAkQMCBQJiSwUBcwQCY3oJAJEDAgUCYksFAXYEAmNBCQCRAwIFAmJLBQF3BAJiTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiTQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJjYQkAkQMCBQJiSwUBcAQCY2IICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjQgkA2AQBCQELdmFsdWVPckVsc2UCBQJjcwkA2QQBAgVXQVZFUwQCY0MJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY3UJANkEAQIFV0FWRVMDAwkBAiE9AgUCY3gFAmNCBgkBAiE9AgUCY3kFAmNDCQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCY2MDBQJjdgkBAmJ3AQUCY3gJAGUCCQECYncBBQJjeAUCY3IEAmNlAwUCY3YJAQJidwEFAmN5CQBlAgkBAmJ3AQUCY3kFAmN0BAJjRAkBAUQCBQJjcgUCYkwEAmNFCQEBRAIFAmN0BQJiTQQCY0YJAQJieQIFAmNFBQJjRAQCY2QJAQFEAgUCY2MFAmJMBAJjZgkBAUQCBQJjZQUCYk0EAmNHAwkAAAIFAmNiAAAEAmNnBQFlBAJjSAUBZQQCYk8JAHYGCQC5AgIFAmNEBQJjRQAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUcCBQJiTwUBYgkBAUcCBQJjRAUCYkwJAQFHAgUCY0UFAmJNCQECYnkCCQC3AgIFAmNmBQJjRQkAtwICBQJjZAUCY0QFAmNIBAJjZwkBAmJ5AgUCY2YFAmNkBAJjSAkAvAIDCQEBTwEJALgCAgUCY2cFAmNGBQFkBQJjZwQCY0kJAQFEAgUCY3EFAWIDAwkBAiE9AgUCY2cFAWUJAL8CAgUCY0gFAmNJBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjSAIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmNJBAJjagkBAUQCBQJjYgUBYgQCY0oJALwCAwUCY0QFAmNnBQFkBAJjSwkAvAIDBQJjRQUBZAUCY2cEAmNMAwkAvwICBQJjSgUCY0UJAJQKAgUCY0sFAmNFCQCUCgIFAmNEBQJjSgQCY00IBQJjTAJfMQQCY04IBQJjTAJfMgQCYk8JALwCAwUCY2oFAmNOBQJjZgkAlwoFCQEBRwIFAmJPBQFiCQEBRwIFAmNNBQJiTAkBAUcCBQJjTgUCYk0FAmNnBQJjSAQCY08IBQJjRwJfMQQCY1AIBQJjRwJfMgQCY1EIBQJjRwJfMwQCY2gJAQFHAggFAmNHAl80BQFiBAJjUgkBAUcCCAUCY0cCXzUFAWIDCQBnAgAABQJjTwkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCY1MDCQEBIQEFAmN3AAAFAmNPBAJjVAkAZQIFAmNyBQJjUAQCY1UJAGUCBQJjdAUCY1EEAmNWCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNoCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgUBWAUCYlUJAQJiaAoFAmNQBQJjUQUCY1MFAmNoBQJjcQUCY1IFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNUBQJjVQUDbmlsCQCfCg0FAmNPBQJjUwUCY2gFAmNjBQJjZQUCY2IFAmJYBQJjYQUCY1YFAmNUBQJjVQUCY3MFAmN1AQJjVwECY1gEAmJLCQECYU4ABAJjWQkAkQMCBQJiSwUBcgQCY1oJAJEDAgUCYksFAXMEAmNhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXAEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXUEAmRhCQECYncBBQJjWQQCZGIJAQJidwEFAmNaBAJjZwMJAAACCAUCY1gJb3JkZXJUeXBlBQNCdXkJAQJiQgQFAmJMBQJiTQkAZAIFAmRhCAUCY1gGYW1vdW50BQJkYgkBAmJCBAUCYkwFAmJNCQBlAgUCZGEIBQJjWAZhbW91bnQFAmRiBAJjaAkBAUcCBQJjZwUBYgMDAwkBAmFMAAYJAAACBQJjYQUBbQYJAAACBQJjYQUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQEAmRjCAgFAmNYCWFzc2V0UGFpcgthbW91bnRBc3NldAQCZGQDCQAAAgUCZGMFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRjBAJkZQgIBQJjWAlhc3NldFBhaXIKcHJpY2VBc3NldAQCZGYDCQAAAgUCZGUFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRlAwMJAQIhPQIFAmRkBQJjWQYJAQIhPQIFAmRmBQJjWgkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmRnCAUCY1gFcHJpY2UEAmRoCQBrAwUBYgUCYk0FAmJMBAJkaQkBAUoDBQJkZwUBYgUCZGgEAmRqAwkAAAIIBQJjWAlvcmRlclR5cGUFA0J1eQkAZwIFAmNoBQJkaQkAZwIFAmRpBQJjaAYBAmRrAQJkbAMJAQIhPQIJAJADAQgFAmRsCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZG0JAQV2YWx1ZQEJAJEDAggFAmRsCHBheW1lbnRzAAAEAmJWCQEFdmFsdWUBCAUCZG0HYXNzZXRJZAQCZG4IBQJkbQZhbW91bnQEAmNHCQECYlQECQDYBAEIBQJkbA10cmFuc2FjdGlvbklkCQDYBAEFAmJWBQJkbggFAmRsBmNhbGxlcgQCY20IBQJjRwJfMQQCY24IBQJjRwJfMgQCY2EJAQ1wYXJzZUludFZhbHVlAQgFAmNHAl85BAJjbwgFAmNHA18xMAMDCQECYUwABgkAAAIFAmNhBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjYQkAlwoFBQJjbQUCY24FAmRuBQJiVgUCY28BAmRvAwJkbAJjcQJjdwMJAQIhPQIJAJADAQgFAmRsCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJkcAkBBXZhbHVlAQkAkQMCCAUCZGwIcGF5bWVudHMAAAQCZHEJAQV2YWx1ZQEJAJEDAggFAmRsCHBheW1lbnRzAAEEAmRyCQECY3AJCQDYBAEIBQJkbA10cmFuc2FjdGlvbklkBQJjcQgFAmRwBmFtb3VudAgFAmRwB2Fzc2V0SWQIBQJkcQZhbW91bnQIBQJkcQdhc3NldElkCQClCAEIBQJkbAZjYWxsZXIHBQJjdwQCY2EJAQ1wYXJzZUludFZhbHVlAQgFAmRyAl84AwMDCQECYUwABgkAAAIFAmNhBQFsBgkAAAIFAmNhBQFuCQACAQkArAICAixQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjYQUCZHIBAmRzAQJkdAQCZHUJAPwHBAUCYUoCBGVtaXQJAMwIAgUCZHQFA25pbAUDbmlsAwkAAAIFAmR1BQJkdQQCZHYEAmR3BQJkdQMJAAECBQJkdwIHQWRkcmVzcwQCZHgFAmR3CQD8BwQFAmR4AgRlbWl0CQDMCAIFAmR0BQNuaWwFA25pbAUEdW5pdAMJAAACBQJkdgUCZHYFAmR0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkeQECZHQEAmR6CQBrAwUCZHQFAmFlBQFiCQCUCgIJAGUCBQJkdAUCZHoFAmR6AQJkQQQCZEICZEMBWAFZBAJkRAkAAAIFAVkFBHVuaXQEAmRFCQECYncBCQECYVMBBQJiYQQCZEYJAQJidwEJAQJhUwEFAmJiBAJkRwMJAAACBQJkQwUCYmEGAwkAAAIFAmRDBQJiYgcJAQJhRwECDWludmFsaWQgYXNzZXQEAmRIAwUCZEQJAJQKAgUCZEUFAmRGAwUCZEcJAJQKAgkAZQIFAmRFBQJkQgUCZEYJAJQKAgUCZEUJAGUCBQJkRgUCZEIEAmRJCAUCZEgCXzEEAmRKCAUCZEgCXzIEAmRLAwUCZEcJAJQKAgUCZEIAAAkAlAoCAAAFAmRCBAJkTAgFAmRLAl8xBAJkTQgFAmRLAl8yBAJkTggJAQJkeQEFAmRMAl8xBAJkTwgJAQJkeQEFAmRNAl8xBAJkUAkBAmR5AQUCZEIEAmRRCAUCZFACXzEEAmR6CAUCZFACXzIEAmRSCQBkAgUCZEkFAmROBAJkUwkAZAIFAmRKBQJkTwQCZFQJAQJieQIJAQFEAgUCZFMFAmJkCQEBRAIFAmRSBQJiYwQCZFUJAQFHAgUCZFQFAWIEAmRWAwUCZEcFAmRJBQJkSgQCZFcJALYCAQUCZFYEAmRYCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYVoJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYVoCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJkWQMJAL8CAgUCZFgFAWYGCQECYUcBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmRZBQJkWQQCZFoJALYCAQUCZFEEAmVhCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmRYCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZFoFAWQFAmRXABIAEgUERE9XTgUBZAUBZAUDbmlsBAJjVgMFAmREBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCZFUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZFUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCCQClCAEJAQV2YWx1ZQEFAVgJANgEAQkBBXZhbHVlAQUBWQkBAmJoCgUCZEwFAmRNBQJlYQUCZFUAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJlYgkBAmJ5AgkBAUQCBQJkSgUCYmQJAQFEAgUCZEkFAmJjBAJlYwkBAUcCBQJlYgUBYgQCZWQEAmVlAwUCZEcJAJQKAgUCZEwFAmRJCQCUCgIFAmRNBQJkSgQCZHQIBQJlZQJfMQQCZWYIBQJlZQJfMgQCZWcJAKADAQkAvAIDBQJkWAkAtgIBCQBpAgUCZHQAAgkAtgIBBQJlZgkAawMJAGUCBQJlYQUCZWcFAWIFAmVnCQCWCgQFAmVhBQJjVgUCZHoFAmVkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlaAUCZWkCZFECZEMBWAFZBAJkRAkAAAIFAVkFBHVuaXQEAmVqCQDMCAIDCQAAAgUCZEMFAmFaBgkBAmFHAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmVqBQJlagQCZWsDCQAAAgUCZWkFAmJhBgMJAAACBQJlaQUCYmIHCQECYUcBAg1pbnZhbGlkIGFzc2V0BAJlbAMFAmVrCQC2AgEJAQJidwEJAQJhUwEFAmJhCQC2AgEJAQJidwEJAQJhUwEFAmJiBAJlbQkBAmJ3AQkBAmFTAQUCYmEEAmVuCQECYncBCQECYVMBBQJiYgQCZW8DBQJlawUCZW0FAmVuBAJlcAkAtgIBBQJlbwQCZFgJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhWgkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhWgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVxCQC2AgEFAmRRBAJlcgkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlbAkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZXEFAWQFAmRYABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmVzCQECZHkBBQJlcgQCZXQIBQJlcwJfMQQCZHoIBQJlcwJfMgQCZXUDBQJlawkAlgoEBQJldAAACQBlAgUCZW0FAmVyBQJlbgkAlgoEAAAFAmV0BQJlbQkAZQIFAmVuBQJlcgQCZXYIBQJldQJfMQQCZXcIBQJldQJfMgQCZXgIBQJldQJfMwQCZXkIBQJldQJfNAQCZFQJAQJieQIJAQFEAgUCZXkFAmJkCQEBRAIFAmV4BQJiYwQCZFUJAQFHAgUCZFQFAWIEAmNWAwUCZEQFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYnMGBQJldgUCZXcFAmRRBQJkVQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkVQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkVQUDbmlsBAJlYgkBAmJ5AgkBAUQCBQJlbgUCYmQJAQFEAgUCZW0FAmJjBAJlYwkBAUcCBQJlYgUBYgQCZWQEAmV6CQBoAgkAoAMBCQC8AgMFAmVsBQJlcQUCZFgAAgkAawMJAGUCBQJldAUCZXoFAWIFAmV6CQCWCgQFAmV0BQJjVgUCZHoFAmVkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlQQMCZUICZUMCY2IEAmVECQBpAgkAbAYJAGgCBQJlQgUCZUMAAAAFAAEAAAUERE9XTgUCY2IFAmVEAQJlRQAEAmVGCQECYncBCQECYVMBBQJiYQQCZUcJAQJidwEJAQJhUwEFAmJiBAJjYggJAQV2YWx1ZQEJAOwHAQUCYVoIcXVhbnRpdHkEAmVECQECZUEDBQJlRgUCZUcFAmNiBQJlRAECZUgABAJkdwkAoggBCQEBUQADCQABAgUCZHcCBlN0cmluZwQCZUkFAmR3CQDZBAEFAmVJAwkAAQIFAmR3AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVKAAQCZHcJAKIIAQkBAVIAAwkAAQIFAmR3AgZTdHJpbmcEAmVJBQJkdwkA2QQBBQJlSQMJAAECBQJkdwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlSwECZGwEAmR3CQECZUgAAwkAAQIFAmR3AgpCeXRlVmVjdG9yBAJlTAUCZHcJAAACCAUCZGwPY2FsbGVyUHVibGljS2V5BQJlTAMJAAECBQJkdwIEVW5pdAkAAAIIBQJkbAZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZU0BAmRsBAJlTgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAJkdwkBAmVIAAMJAAECBQJkdwIKQnl0ZVZlY3RvcgQCZUwFAmR3AwkAAAIIBQJkbA9jYWxsZXJQdWJsaWNLZXkFAmVMBgUCZU4DCQABAgUCZHcCBFVuaXQDCQAAAggFAmRsBmNhbGxlcgUEdGhpcwYFAmVOCQACAQILTWF0Y2ggZXJyb3IbAmRsAQpzZXRNYW5hZ2VyAQJlTwQCZVAJAQJlTQEFAmRsAwkAAAIFAmVQBQJlUAQCZVEJANkEAQUCZU8DCQAAAgUCZVEFAmVRCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFSAAUCZU8FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAEOY29uZmlybU1hbmFnZXIABAJlUgkBAmVKAAQCZVMDCQEJaXNEZWZpbmVkAQUCZVIGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmVTBQJlUwQCZVQDCQAAAggFAmRsD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCZVIGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmVUBQJlVAkAzAgCCQELU3RyaW5nRW50cnkCCQEBUQAJANgEAQkBBXZhbHVlAQUCZVIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVIABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGwBA3B1dAICY3ECZVUDCQBmAgAABQJjcQkAAgECIEludmFsaWQgc2xpcHBhZ2VUb2xlcmFuY2UgcGFzc2VkBAJkcgkBAmRvAwUCZGwFAmNxBgQCY1MIBQJkcgJfMgQCYlgIBQJkcgJfNwQCY28IBQJkcgJfOQQCY1QIBQJkcgNfMTAEAmNVCAUCZHIDXzExBAJlVggFAmRyA18xMgQCZVcIBQJkcgNfMTMEAmR1CQD8BwQFAmFKAgRlbWl0CQDMCAIFAmNTBQNuaWwFA25pbAMJAAACBQJkdQUCZHUEAmR2BAJkdwUCZHUDCQABAgUCZHcCB0FkZHJlc3MEAmR4BQJkdwkA/AcEBQJkeAIEZW1pdAkAzAgCBQJjUwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZHYFAmR2BAJlWAMJAGYCBQJjVAAACQD8BwQFAmJnAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZVYFAmNUBQNuaWwFA25pbAMJAAACBQJlWAUCZVgEAmVZAwkAZgIFAmNVAAAJAPwHBAUCYmcCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJlVwUCY1UFA25pbAUDbmlsAwkAAAIFAmVZBQJlWQQCZVoDBQJlVQQCZmEJAPwHBAUCYmYCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJYBQJjUwUDbmlsAwkAAAIFAmZhBQJmYQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkbAZjYWxsZXIFAmNTBQJiWAUDbmlsCQDOCAIFAmNvBQJlWgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAEKcHV0Rm9yRnJlZQECZmIDCQBmAgAABQJmYgkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJkcgkBAmRvAwUCZGwFAmZiBwgFAmRyAl85AmRsAQlwdXRPbmVUa24CAmZjAmZkBAJmZQoAAmZmCQD8BwQFAmFKAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZmYCB0Jvb2xlYW4FAmZmCQACAQkArAICCQADAQUCZmYCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZnAwMDCQECYUwABgkAAAIFAmFZBQFsBgkAAAIFAmFZBQFuBgUCZmUEAmVqCQDMCAIDAwkBASEBBQJmZwYJAQJlSwEFAmRsBgkBAmFHAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGwIcGF5bWVudHMAAQYJAQJhRwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVqBQJlagQCZmgJAJEDAggFAmRsCHBheW1lbnRzAAAEAmRDCAUCZmgHYXNzZXRJZAQCZEIIBQJmaAZhbW91bnQEAVgIBQJkbAZjYWxsZXIEAVkIBQJkbA10cmFuc2FjdGlvbklkBAJmaQkBAmRBBAUCZEIFAmRDBQFYBQFZBAJmaggFAmZpAl8xBAJjVggFAmZpAl8yBAJkeggFAmZpAl8zBAJmawgFAmZpAl80BAJmbAMDCQBmAgUCZmMAAAkAZgIFAmZjBQJmagcJAQJhRwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmMFA25pbAIABQJmagQCZHUJAQJkcwEFAmZsAwkAAAIFAmR1BQJkdQQCZVoDBQJmZAQCZm0JAPwHBAUCYmYCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFaBQJmbAUDbmlsAwkAAAIFAmZtBQJmbQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkbAZjYWxsZXIFAmZsBQJhWgUDbmlsBAJmbgMJAGYCBQJkegAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFLBQJkegUCZEMFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjVgUCZVoFAmZuBQJmbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAERcHV0T25lVGtuUkVBRE9OTFkCAmRDAmRCBAJmbwkBAmRBBAUCZEIJAQJhUQEFAmRDBQR1bml0BQR1bml0BAJmaggFAmZvAl8xBAJjVggFAmZvAl8yBAJkeggFAmZvAl8zBAJmawgFAmZvAl80CQCUCgIFA25pbAkAlQoDBQJmagUCZHoFAmZrAmRsAQlnZXRPbmVUa24CAmZwAmZjBAJmZQoAAmZmCQD8BwQFAmFKAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZmYCB0Jvb2xlYW4FAmZmCQACAQkArAICCQADAQUCZmYCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZxAwMJAQJhTAAGCQAAAgUCYVkFAW4GBQJmZQQCZWoJAMwIAgMDCQEBIQEFAmZxBgkBAmVLAQUCZGwGCQECYUcBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkbAhwYXltZW50cwABBgkBAmFHAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWoFAmVqBAJlaQkBAmFRAQUCZnAEAmZoCQCRAwIIBQJkbAhwYXltZW50cwAABAJkQwgFAmZoB2Fzc2V0SWQEAmRRCAUCZmgGYW1vdW50BAFYCAUCZGwGY2FsbGVyBAFZCAUCZGwNdHJhbnNhY3Rpb25JZAQCZnIJAQJlaAUFAmVpBQJkUQUCZEMFAVgFAVkEAmZzCAUCZnICXzEEAmNWCAUCZnICXzIEAmR6CAUCZnICXzMEAmZrCAUCZnICXzQEAmR0AwMJAGYCBQJmYwAACQBmAgUCZmMFAmZzBwkBAmFHAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmYwUDbmlsAgAFAmZzBAJmdAkA/AcEBQJhSgIEYnVybgkAzAgCBQJkUQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkQwUCZFEFA25pbAMJAAACBQJmdAUCZnQEAmZ1CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVgFAmR0BQJlaQUDbmlsBAJmbgMJAGYCBQJkegAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFLBQJkegUCZWkFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjVgUCZnUFAmZuBQJkdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAERZ2V0T25lVGtuUkVBRE9OTFkCAmVpAmRRBAJmdgkBAmVoBQkBAmFRAQUCZWkFAmRRBQJhWgUEdW5pdAUEdW5pdAQCZnMIBQJmdgJfMQQCY1YIBQJmdgJfMgQCZHoIBQJmdgJfMwQCZmsIBQJmdgJfNAkAlAoCBQNuaWwJAJUKAwUCZnMFAmR6BQJmawJkbAETdW5zdGFrZUFuZEdldE9uZVRrbgMCZncCZnACZmMEAmZlCgACZmYJAPwHBAUCYUoCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmZgIHQm9vbGVhbgUCZmYJAAIBCQCsAgIJAAMBBQJmZgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZnEDAwkBAmFMAAYJAAACBQJhWQUBbgYFAmZlBAJlagkAzAgCAwMJAQEhAQUCZnEGCQECZUsBBQJkbAYJAQJhRwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRsCHBheW1lbnRzAAAGCQECYUcBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlagUCZWoEAmVpCQECYVEBBQJmcAQBWAgFAmRsBmNhbGxlcgQBWQgFAmRsDXRyYW5zYWN0aW9uSWQEAmZ4CQD8BwQFAmJmAgd1bnN0YWtlCQDMCAIJANgEAQUCYVoJAMwIAgUCZncFA25pbAUDbmlsAwkAAAIFAmZ4BQJmeAQCZnkJAQJlaAUFAmVpBQJmdwUCYVoFAVgFAVkEAmZzCAUCZnkCXzEEAmNWCAUCZnkCXzIEAmR6CAUCZnkCXzMEAmZrCAUCZnkCXzQEAmR0AwMJAGYCBQJmYwAACQBmAgUCZmMFAmZzBwkBAmFHAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmYwUDbmlsAgAFAmZzBAJmdAkA/AcEBQJhSgIEYnVybgkAzAgCBQJmdwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhWgUCZncFA25pbAMJAAACBQJmdAUCZnQEAmZ1CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkbAZjYWxsZXIFAmR0BQJlaQUDbmlsBAJmbgMJAGYCBQJkegAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFLBQJkegUCZWkFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjVgUCZnUFAmZuBQJkdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAEDZ2V0AAQCY0cJAQJkawEFAmRsBAJmeggFAmNHAl8xBAJjbggFAmNHAl8yBAJkbggFAmNHAl8zBAJiVggFAmNHAl80BAJjbwgFAmNHAl81BAJmQQkA/AcEBQJhSgIEYnVybgkAzAgCBQJkbgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVgUCZG4FA25pbAMJAAACBQJmQQUCZkEFAmNvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRsAQlnZXROb0xlc3MCAmZCAmZDBAJjRwkBAmRrAQUCZGwEAmNtCAUCY0cCXzEEAmNuCAUCY0cCXzIEAmRuCAUCY0cCXzMEAmJWCAUCY0cCXzQEAmNvCAUCY0cCXzUDCQBmAgUCZkIFAmNtCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJjbQIDIDwgCQCkAwEFAmZCAwkAZgIFAmZDBQJjbgkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmNuAgMgPCAJAKQDAQUCZkMEAmZBCQD8BwQFAmFKAgRidXJuCQDMCAIFAmRuBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJWBQJkbgUDbmlsAwkAAAIFAmZBBQJmQQUCY28JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGwBDXVuc3Rha2VBbmRHZXQBAmR0BAJmRAMJAQIhPQIJAJADAQgFAmRsCHBheW1lbnRzAAAJAAIBAhhObyBwYXltZW50cyBhcmUgZXhwZWN0ZWQGAwkAAAIFAmZEBQJmRAQCYksJAQJhTgAEAmJYCQDZBAEJAJEDAgUCYksFAXEEAmZ4CQD8BwQFAmJmAgd1bnN0YWtlCQDMCAIJANgEAQUCYlgJAMwIAgUCZHQFA25pbAUDbmlsAwkAAAIFAmZ4BQJmeAQCY0cJAQJiVAQJANgEAQgFAmRsDXRyYW5zYWN0aW9uSWQJANgEAQUCYlgFAmR0CAUCZGwGY2FsbGVyBAJjYQkBDXBhcnNlSW50VmFsdWUBCAUCY0cCXzkEAmNvCAUCY0cDXzEwBAJmRQMDCQECYUwABgkAAAIFAmNhBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjYQYDCQAAAgUCZkUFAmZFBAJmQQkA/AcEBQJhSgIEYnVybgkAzAgCBQJkdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiWAUCZHQFA25pbAMJAAACBQJmQQUCZkEFAmNvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRsARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJmdwJmRgJmQwQCZnEDCQECYUwABgkAAAIFAmFZBQFuBAJlagkAzAgCAwkBASEBBQJmcQYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkbAhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVqBQJlagQCZngJAPwHBAUCYmYCB3Vuc3Rha2UJAMwIAgkA2AQBBQJhWgkAzAgCBQJmdwUDbmlsBQNuaWwDCQAAAgUCZngFAmZ4BAJjRwkBAmJUBAkA2AQBCAUCZGwNdHJhbnNhY3Rpb25JZAkA2AQBBQJhWgUCZncIBQJkbAZjYWxsZXIEAmNtCAUCY0cCXzEEAmNuCAUCY0cCXzIEAmNvCAUCY0cDXzEwBAJmRwkAzAgCAwkAZwIFAmNtBQJmRgYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmRgUDbmlsAgAJAMwIAgMJAGcCBQJjbgUCZkMGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmQwUDbmlsAgAFA25pbAMJAAACBQJmRwUCZkcEAmZBCQD8BwQFAmFKAgRidXJuCQDMCAIFAmZ3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFaBQJmdwUDbmlsAwkAAAIFAmZBBQJmQQUCY28JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGwBCGFjdGl2YXRlAgJmSAJmSQMJAQIhPQIJAKUIAQgFAmRsBmNhbGxlcgkApQgBBQJhSgkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFAmZICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgAFAmZJBQNuaWwCB3N1Y2Nlc3MCZGwBCnJlZnJlc2hLTHAABAJmSgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhZwAABAJmSwMJAGcCCQBlAgUGaGVpZ2h0BQJmSgUCYWoFBHVuaXQJAQJhRwEJALkJAgkAzAgCCQCkAwEFAmFqCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJmSwUCZksEAmVECQECZUUACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhZwUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhZgUCZUQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYU4AAmRsARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJieAkAlAoCBQNuaWwJAQJidwEFAmJ4AmRsARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJiRQJiRgJiSgQCYlMJAQJiSQMFAmJFBQJiRgUCYkoJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJiUwAACQDMCAIJAKYDAQkAkQMCBQJiUwABCQDMCAIJAKYDAQkAkQMCBQJiUwACBQNuaWwCZGwBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJkbAEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSAFJCQCUCgIFA25pbAkBAUcCCQCnAwEFAUgFAUkCZGwBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYnoCYkEJAJQKAgUDbmlsCQCmAwEJAQJieQIJAKcDAQUCYnoJAKcDAQUCYkECZGwBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiVQJjcQJjcgJjcwJjdAJjdQFYAmN2AmN3CQCUCgIFA25pbAkBAmNwCQUCYlUFAmNxBQJjcgUCY3MFAmN0BQJjdQUBWAUCY3YFAmN3AmRsASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYlUCYlYCYlcBWAQCY0cJAQJiVAQFAmJVBQJiVgUCYlcJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAVgJAJQKAgUDbmlsCQCcCgoIBQJjRwJfMQgFAmNHAl8yCAUCY0cCXzMIBQJjRwJfNAgFAmNHAl81CAUCY0cCXzYIBQJjRwJfNwkApgMBCAUCY0cCXzgIBQJjRwJfOQgFAmNHA18xMAJkbAENc3RhdHNSRUFET05MWQAEAmJLCQECYU4ABAJiWAkA2QQBCQCRAwIFAmJLBQFxBAJjWQkAkQMCBQJiSwUBcgQCY1oJAJEDAgUCYksFAXMEAmN6CQCRAwIFAmJLBQF2BAJjQQkAkQMCBQJiSwUBdwQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCZkwICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJkYQkBAmJ3AQUCY1kEAmRiCQECYncBBQJjWgQCZk0DCQAAAgUCZkwAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYkkDBQJkYQUCZGIFAmZMBAJjaAAABAJmTgkBAUcCCQCRAwIFAmZNAAEFAWIEAmZPCQEBRwIJAJEDAgUCZk0AAgUBYgQCZlAJAQV2YWx1ZQEJAJoIAgUCYUoJAQJhdQEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmRhCQDMCAIJAKQDAQUCZGIJAMwIAgkApAMBBQJmTAkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCZk4JAMwIAgkApAMBBQJmTwkAzAgCCQCkAwEFAmZQBQNuaWwFAWoCZGwBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjcgQCYksJAQJhTgAEAmJYCQDZBAEJAJEDAgUCYksFAXEEAmN4CQCRAwIFAmJLBQFyBAJiWQkA2QQBBQJjeAQCY3kJAJEDAgUCYksFAXMEAmJaCQDZBAEFAmN5BAJiTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiTQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJjYQkAkQMCBQJiSwUBcAQCZkwICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJkYQkBAmJ3AQUCY3gEAmRiCQECYncBBQJjeQQCYkcJAQFEAgUCZGEFAmJMBAJiSAkBAUQCBQJkYgUCYk0EAmNnAwkAAAIFAmZMAAAFAWUJAQJieQIFAmJIBQJiRwQCY0QJAQFEAgUCY3IFAmJMBAJjRQkAvAIDBQJjRAUCY2cFAWQEAmN0CQEBRwIFAmNFBQJiTQQCZHIJAQJjcAkCAACgwh4FAmNyBQJiWQUCY3QFAmJaAgAGBwQCY08IBQJkcgJfMQQCZlEIBQJkcgJfMwQCY2MIBQJkcgJfNAQCY2UIBQJkcgJfNQQCY2IIBQJkcgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY08JAMwIAgkApAMBCQEBRwIFAmNnBQFiCQDMCAIJAKQDAQUCY2MJAMwIAgkApAMBBQJjZQkAzAgCCQCkAwEFAmNiCQDMCAIFAmNhCQDMCAIJAKQDAQUCY3IJAMwIAgkApAMBBQJjdAUDbmlsBQFqAmRsAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjdAQCYksJAQJhTgAEAmJYCQDZBAEJAJEDAgUCYksFAXEEAmN4CQCRAwIFAmJLBQFyBAJiWQkA2QQBBQJjeAQCY3kJAJEDAgUCYksFAXMEAmJaCQDZBAEFAmN5BAJiTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiTQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJjYQkAkQMCBQJiSwUBcAQCZkwICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmUgkBAmJ3AQUCY3gEAmZTCQECYncBBQJjeQQCZlQJAQFEAgUCZlIFAmJMBAJmVQkBAUQCBQJmUwUCYk0EAmNnAwkAAAIFAmZMAAAFAWUJAQJieQIFAmZVBQJmVAQCY0UJAQFEAgUCY3QFAmJNBAJjRAkAvAIDBQJjRQUBZAUCY2cEAmNyCQEBRwIFAmNEBQJiTAQCZHIJAQJjcAkCAACgwh4FAmNyBQJiWQUCY3QFAmJaAgAGBwQCY08IBQJkcgJfMQQCZlEIBQJkcgJfMwQCY2MIBQJkcgJfNAQCY2UIBQJkcgJfNQQCY2IIBQJkcgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY08JAMwIAgkApAMBCQEBRwIFAmNnBQFiCQDMCAIJAKQDAQUCY2MJAMwIAgkApAMBBQJjZQkAzAgCCQCkAwEFAmNiCQDMCAIFAmNhCQDMCAIJAKQDAQUCY3IJAMwIAgkApAMBBQJjdAUDbmlsBQFqAmRsARNldmFsdWF0ZUdldFJFQURPTkxZAgJmVgJmVwQCY0cJAQJiVAQCAAUCZlYFAmZXBQR0aGlzBAJjbQgFAmNHAl8xBAJjbggFAmNHAl8yBAJjYwgFAmNHAl81BAJjZQgFAmNHAl82BAJjYggFAmNHAl83BAJjaAgFAmNHAl84BAJjYQkBDXBhcnNlSW50VmFsdWUBCAUCY0cCXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjbQkAzAgCCQCkAwEFAmNuCQDMCAIJAKQDAQUCY2MJAMwIAgkApAMBBQJjZQkAzAgCCQCkAwEFAmNiCQDMCAIJAKYDAQUCY2gJAMwIAgkApAMBBQJjYQUDbmlsBQFqAQJmWAECZlkABAJmWgQCZHcJAQJlSAADCQABAgUCZHcCCkJ5dGVWZWN0b3IEAmVMBQJkdwUCZUwDCQABAgUCZHcCBFVuaXQIBQJmWA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZHcFAmZYAwkAAQIFAmR3AgVPcmRlcgQCY1gFAmR3BAJnYQkBAmFNAAQCYXoJAQJjVwEFAmNYBAJhQQkA9AMDCAUCY1gJYm9keUJ5dGVzCQCRAwIIBQJjWAZwcm9vZnMAAAgFAmNYD3NlbmRlclB1YmxpY0tleQQCYUIJAPQDAwgFAmNYCWJvZHlCeXRlcwkAkQMCCAUCY1gGcHJvb2ZzAAEFAmdhAwMDBQJhegUCYUEHBQJhQgcGCQECYXkDBQJhegUCYUEFAmFCAwkAAQIFAmR3AhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZUkFAmR3BAJnYgkA9gMBCQEFdmFsdWUBCAUCZUkGc2NyaXB0BAJnYwkA2wQBCQEFdmFsdWUBCQCdCAIFAmFKCQECYXcABAJnZAkA8QcBBQR0aGlzAwMJAAACBQJnYwUCZ2IJAQIhPQIFAmdkBQJnYgcGCQD0AwMIBQJmWAlib2R5Qnl0ZXMJAJEDAggFAmZYBnByb29mcwAABQJmWgkA9AMDCAUCZlgJYm9keUJ5dGVzCQCRAwIIBQJmWAZwcm9vZnMAAAUCZlo3DE5i", "chainId": 84, "height": 2336742, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GNXM42QsVYSwkkGGDnGL5S31QbaWUCMerT7YM15sPoFy Next: GpiyobVPQeN1oDxZsdrHcByLGXJQTW1dtemKaTS2fNtk Diff:
OldNewDifferences
603603 func eE () = {
604604 let eF = bw(aS(ba))
605605 let eG = bw(aS(bb))
606- let cb = valueOrErrorMessage(assetInfo(aZ), aI(makeString(["Asset ", toBase58String(aZ), " doesn't exist"], ""))).quantity
606+ let cb = value(assetInfo(aZ)).quantity
607607 let eD = eA(eF, eG, cb)
608608 eD
609609 }
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 (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
6868 func J (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((0 > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((e > H))
7777 then -(H)
7878 else H
7979
8080
8181 func P () = "%s__factoryContract"
8282
8383
8484 func Q () = "%s__managerPublicKey"
8585
8686
8787 func R () = "%s__pendingManagerPublicKey"
8888
8989
9090 func S () = "%s%s__price__last"
9191
9292
9393 func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9494
9595
9696 func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
9999 func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102102 func aa () = "%s__amountAsset"
103103
104104
105105 func ab () = "%s__priceAsset"
106106
107107
108108 let ac = "%s__fee"
109109
110110 let ad = fraction(10, b, 10000)
111111
112112 let ae = valueOrElse(getInteger(this, ac), ad)
113113
114114 let af = makeString(["%s", "kLp"], j)
115115
116116 let ag = makeString(["%s", "kLpRefreshedHeight"], j)
117117
118118 let ah = makeString(["%s", "refreshKLpDelay"], j)
119119
120120 let ai = 30
121121
122122 let aj = valueOrElse(getInteger(this, ah), ai)
123123
124124 func ak () = "%s__factoryConfig"
125125
126126
127127 func al () = "%s%s__matcher__publicKey"
128128
129129
130130 func am (an) = (("%s%s%s__" + an) + "__mappings__poolContract2LpAsset")
131131
132132
133133 func ao (ap,aq) = (((("%d%d%s__" + ap) + "__") + aq) + "__config")
134134
135135
136136 func ar (as) = ("%s%s%s__mappings__baseAsset2internalId__" + as)
137137
138138
139139 func at () = "%s__shutdown"
140140
141141
142142 func au (av) = ("%s%s__poolWeight__" + av)
143143
144144
145145 func aw () = "%s__allowedLpScriptHash"
146146
147147
148148 let ax = "%s__feeCollectorAddress"
149149
150150 func ay (az,aA,aB) = throw(((((("order validation failed: orderValid=" + toString(az)) + " senderValid=") + toString(aA)) + " matcherValid=") + toString(aB)))
151151
152152
153153 func aC (aD,aE) = valueOrErrorMessage(getString(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
154154
155155
156156 func aF (aD,aE) = valueOrErrorMessage(getInteger(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
157157
158158
159159 func aG (aH) = throw(makeString(["lp.ride:", aH], " "))
160160
161161
162162 func aI (aH) = makeString(["lp.ride:", aH], " ")
163163
164164
165165 let aJ = addressFromStringValue(aC(this, P()))
166166
167167 let aK = addressFromStringValue(aC(aJ, ax))
168168
169169 func aL () = valueOrElse(getBoolean(aJ, at()), false)
170170
171171
172172 func aM () = fromBase58String(aC(aJ, al()))
173173
174174
175175 func aN () = {
176176 let aO = aC(this, aa())
177177 let aP = aC(this, ab())
178178 let aq = aF(aJ, ar(aP))
179179 let ap = aF(aJ, ar(aO))
180180 split(aC(aJ, ao(toString(ap), toString(aq))), j)
181181 }
182182
183183
184184 func aQ (aR) = if ((aR == i))
185185 then unit
186186 else fromBase58String(aR)
187187
188188
189189 func aS (aR) = if ((aR == unit))
190190 then i
191191 else toBase58String(value(aR))
192192
193193
194194 func aT (aU) = $Tuple7(addressFromStringValue(aU[o]), parseIntValue(aU[p]), fromBase58String(aU[q]), aQ(aU[r]), aQ(aU[s]), parseIntValue(aU[t]), parseIntValue(aU[u]))
195195
196196
197197 let aV = aT(aN())
198198
199199 let aW = aV
200200
201201 let aX = aW._1
202202
203203 let aY = aW._2
204204
205205 let aZ = aW._3
206206
207207 let ba = aW._4
208208
209209 let bb = aW._5
210210
211211 let bc = aW._6
212212
213213 let bd = aW._7
214214
215215 func be () = split(aC(aJ, ak()), j)
216216
217217
218218 let bf = valueOrErrorMessage(addressFromString(be()[B]), "incorrect staking address")
219219
220220 let bg = valueOrErrorMessage(addressFromString(be()[C]), "incorrect staking address")
221221
222222 func bh (bi,bj,bk,bl,bm,bn,bo,bp,bq,br) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bi), toString(bj), toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br)], j)
223223
224224
225225 func bs (bt,bu,bv,bl,bo,bp) = makeString(["%d%d%d%d%d%d", toString(bt), toString(bu), toString(bv), toString(bl), toString(bo), toString(bp)], j)
226226
227227
228228 func bw (bx) = if ((bx == "WAVES"))
229229 then wavesBalance(this).available
230230 else assetBalance(this, fromBase58String(bx))
231231
232232
233233 func by (bz,bA) = fraction(bz, d, bA)
234234
235235
236236 func bB (bC,bD,bE,bF) = {
237237 let bG = D(bE, bC)
238238 let bH = D(bF, bD)
239239 by(bH, bG)
240240 }
241241
242242
243243 func bI (bE,bF,bJ) = {
244244 let bK = aN()
245245 let bL = parseIntValue(bK[t])
246246 let bM = parseIntValue(bK[u])
247247 let bN = bB(bL, bM, bE, bF)
248248 let bA = D(bE, bL)
249249 let bz = D(bF, bM)
250250 let bO = D(bJ, b)
251251 let bP = by(bA, bO)
252252 let bQ = by(bz, bO)
253253 [bN, bP, bQ]
254254 }
255255
256256
257257 func bR (bE,bF,bJ) = {
258258 let bS = bI(bE, bF, bJ)
259259 [G(bS[0], b), G(bS[1], b), G(bS[2], b)]
260260 }
261261
262262
263263 func bT (bU,bV,bW,X) = {
264264 let bK = aN()
265265 let bX = bK[q]
266266 let bY = bK[r]
267267 let bZ = bK[s]
268268 let bC = parseIntValue(bK[t])
269269 let bD = parseIntValue(bK[u])
270270 let ca = bK[p]
271271 let cb = valueOrErrorMessage(assetInfo(fromBase58String(bX)), (("Asset " + bX) + " doesn't exist")).quantity
272272 if ((bX != bV))
273273 then throw("Invalid asset passed.")
274274 else {
275275 let cc = bw(bY)
276276 let cd = D(cc, bC)
277277 let ce = bw(bZ)
278278 let cf = D(ce, bD)
279279 let cg = by(cf, cd)
280280 let ch = G(cg, b)
281281 let ci = D(bW, b)
282282 let cj = D(cb, b)
283283 let ck = fraction(cd, ci, cj)
284284 let cl = fraction(cf, ci, cj)
285285 let cm = G(ck, bC)
286286 let cn = G(cl, bD)
287287 let co = if ((bU == ""))
288288 then nil
289289 else [ScriptTransfer(X, cm, if ((bY == "WAVES"))
290290 then unit
291291 else fromBase58String(bY)), ScriptTransfer(X, cn, if ((bZ == "WAVES"))
292292 then unit
293293 else fromBase58String(bZ)), StringEntry(Z(toString(X), bU), bs(cm, cn, bW, ch, height, lastBlock.timestamp)), IntegerEntry(S(), ch), IntegerEntry(T(height, lastBlock.timestamp), ch)]
294294 $Tuple10(cm, cn, bY, bZ, cc, ce, cb, cg, ca, co)
295295 }
296296 }
297297
298298
299299 func cp (bU,cq,cr,cs,ct,cu,X,cv,cw) = {
300300 let bK = aN()
301301 let bX = fromBase58String(bK[q])
302302 let cx = bK[r]
303303 let cy = bK[s]
304304 let cz = bK[v]
305305 let cA = bK[w]
306306 let bL = parseIntValue(bK[t])
307307 let bM = parseIntValue(bK[u])
308308 let ca = bK[p]
309309 let cb = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
310310 let cB = toBase58String(valueOrElse(cs, fromBase58String("WAVES")))
311311 let cC = toBase58String(valueOrElse(cu, fromBase58String("WAVES")))
312312 if (if ((cx != cB))
313313 then true
314314 else (cy != cC))
315315 then throw("Invalid amt or price asset passed.")
316316 else {
317317 let cc = if (cv)
318318 then bw(cx)
319319 else (bw(cx) - cr)
320320 let ce = if (cv)
321321 then bw(cy)
322322 else (bw(cy) - ct)
323323 let cD = D(cr, bL)
324324 let cE = D(ct, bM)
325325 let cF = by(cE, cD)
326326 let cd = D(cc, bL)
327327 let cf = D(ce, bM)
328328 let cG = if ((cb == 0))
329329 then {
330330 let cg = e
331331 let cH = e
332332 let bO = pow((cD * cE), 0, toBigInt(5), 1, 0, DOWN)
333333 $Tuple5(G(bO, b), G(cD, bL), G(cE, bM), by((cf + cE), (cd + cD)), cH)
334334 }
335335 else {
336336 let cg = by(cf, cd)
337337 let cH = fraction(O((cg - cF)), d, cg)
338338 let cI = D(cq, b)
339339 if (if ((cg != e))
340340 then (cH > cI)
341341 else false)
342342 then throw(((("Price slippage " + toString(cH)) + " exceeded the passed limit of ") + toString(cI)))
343343 else {
344344 let cj = D(cb, b)
345345 let cJ = fraction(cD, cg, d)
346346 let cK = fraction(cE, d, cg)
347347 let cL = if ((cJ > cE))
348348 then $Tuple2(cK, cE)
349349 else $Tuple2(cD, cJ)
350350 let cM = cL._1
351351 let cN = cL._2
352352 let bO = fraction(cj, cN, cf)
353353 $Tuple5(G(bO, b), G(cM, bL), G(cN, bM), cg, cH)
354354 }
355355 }
356356 let cO = cG._1
357357 let cP = cG._2
358358 let cQ = cG._3
359359 let ch = G(cG._4, b)
360360 let cR = G(cG._5, b)
361361 if ((0 >= cO))
362362 then throw("Invalid calculations. LP calculated is less than zero.")
363363 else {
364364 let cS = if (!(cw))
365365 then 0
366366 else cO
367367 let cT = (cr - cP)
368368 let cU = (ct - cQ)
369369 let cV = [IntegerEntry(S(), ch), IntegerEntry(T(height, lastBlock.timestamp), ch), StringEntry(W(X, bU), bh(cP, cQ, cS, ch, cq, cR, height, lastBlock.timestamp, cT, cU))]
370370 $Tuple13(cO, cS, ch, cc, ce, cb, bX, ca, cV, cT, cU, cs, cu)
371371 }
372372 }
373373 }
374374
375375
376376 func cW (cX) = {
377377 let bK = aN()
378378 let cY = bK[r]
379379 let cZ = bK[s]
380380 let ca = parseIntValue(bK[p])
381381 let bL = parseIntValue(bK[t])
382382 let bM = parseIntValue(bK[u])
383383 let da = bw(cY)
384384 let db = bw(cZ)
385385 let cg = if ((cX.orderType == Buy))
386386 then bB(bL, bM, (da + cX.amount), db)
387387 else bB(bL, bM, (da - cX.amount), db)
388388 let ch = G(cg, b)
389389 if (if (if (aL())
390390 then true
391391 else (ca == m))
392392 then true
393393 else (ca == n))
394394 then throw("Exchange operations disabled")
395395 else {
396396 let dc = cX.assetPair.amountAsset
397397 let dd = if ((dc == unit))
398398 then "WAVES"
399399 else toBase58String(value(dc))
400400 let de = cX.assetPair.priceAsset
401401 let df = if ((de == unit))
402402 then "WAVES"
403403 else toBase58String(value(de))
404404 if (if ((dd != cY))
405405 then true
406406 else (df != cZ))
407407 then throw("Wrong order assets.")
408408 else {
409409 let dg = cX.price
410410 let dh = fraction(b, bM, bL)
411411 let di = J(dg, b, dh)
412412 let dj = if ((cX.orderType == Buy))
413413 then (ch >= di)
414414 else (di >= ch)
415415 true
416416 }
417417 }
418418 }
419419
420420
421421 func dk (dl) = if ((size(dl.payments) != 1))
422422 then throw("exactly 1 payment is expected")
423423 else {
424424 let dm = value(dl.payments[0])
425425 let bV = value(dm.assetId)
426426 let dn = dm.amount
427427 let cG = bT(toBase58String(dl.transactionId), toBase58String(bV), dn, dl.caller)
428428 let cm = cG._1
429429 let cn = cG._2
430430 let ca = parseIntValue(cG._9)
431431 let co = cG._10
432432 if (if (aL())
433433 then true
434434 else (ca == n))
435435 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
436436 else $Tuple5(cm, cn, dn, bV, co)
437437 }
438438
439439
440440 func do (dl,cq,cw) = if ((size(dl.payments) != 2))
441441 then throw("exactly 2 payments are expected")
442442 else {
443443 let dp = value(dl.payments[0])
444444 let dq = value(dl.payments[1])
445445 let dr = cp(toBase58String(dl.transactionId), cq, dp.amount, dp.assetId, dq.amount, dq.assetId, toString(dl.caller), false, cw)
446446 let ca = parseIntValue(dr._8)
447447 if (if (if (aL())
448448 then true
449449 else (ca == l))
450450 then true
451451 else (ca == n))
452452 then throw(("Put operation is blocked by admin. Status = " + toString(ca)))
453453 else dr
454454 }
455455
456456
457457 func ds (dt) = {
458458 let du = invoke(aJ, "emit", [dt], nil)
459459 if ((du == du))
460460 then {
461461 let dv = {
462462 let dw = du
463463 if ($isInstanceOf(dw, "Address"))
464464 then {
465465 let dx = dw
466466 invoke(dx, "emit", [dt], nil)
467467 }
468468 else unit
469469 }
470470 if ((dv == dv))
471471 then dt
472472 else throw("Strict value is not equal to itself.")
473473 }
474474 else throw("Strict value is not equal to itself.")
475475 }
476476
477477
478478 func dy (dt) = {
479479 let dz = fraction(dt, ae, b)
480480 $Tuple2((dt - dz), dz)
481481 }
482482
483483
484484 func dA (dB,dC,X,Y) = {
485485 let dD = (Y == unit)
486486 let dE = bw(aS(ba))
487487 let dF = bw(aS(bb))
488488 let dG = if ((dC == ba))
489489 then true
490490 else if ((dC == bb))
491491 then false
492492 else aG("invalid asset")
493493 let dH = if (dD)
494494 then $Tuple2(dE, dF)
495495 else if (dG)
496496 then $Tuple2((dE - dB), dF)
497497 else $Tuple2(dE, (dF - dB))
498498 let dI = dH._1
499499 let dJ = dH._2
500500 let dK = if (dG)
501501 then $Tuple2(dB, 0)
502502 else $Tuple2(0, dB)
503503 let dL = dK._1
504504 let dM = dK._2
505505 let dN = dy(dL)._1
506506 let dO = dy(dM)._1
507507 let dP = dy(dB)
508508 let dQ = dP._1
509509 let dz = dP._2
510510 let dR = (dI + dN)
511511 let dS = (dJ + dO)
512512 let dT = by(D(dS, bd), D(dR, bc))
513513 let dU = G(dT, b)
514514 let dV = if (dG)
515515 then dI
516516 else dJ
517517 let dW = toBigInt(dV)
518518 let dX = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
519519 let dY = if ((dX > f))
520520 then true
521521 else aG("initial deposit requires all coins")
522522 if ((dY == dY))
523523 then {
524524 let dZ = toBigInt(dQ)
525525 let ea = max([0, toInt(((dX * (sqrtBigInt((d + ((dZ * d) / dW)), 18, 18, DOWN) - d)) / d))])
526526 let cV = if (dD)
527527 then nil
528528 else [IntegerEntry(S(), dU), IntegerEntry(T(height, lastBlock.timestamp), dU), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bh(dL, dM, ea, dU, 0, 0, height, lastBlock.timestamp, 0, 0))]
529529 let eb = by(D(dJ, bd), D(dI, bc))
530530 let ec = G(eb, b)
531531 let ed = {
532532 let ee = if (dG)
533533 then $Tuple2(dL, dI)
534534 else $Tuple2(dM, dJ)
535535 let dt = ee._1
536536 let ef = ee._2
537537 let eg = toInt(fraction(dX, toBigInt((dt / 2)), toBigInt(ef)))
538538 fraction((ea - eg), b, eg)
539539 }
540540 $Tuple4(ea, cV, dz, ed)
541541 }
542542 else throw("Strict value is not equal to itself.")
543543 }
544544
545545
546546 func eh (ei,dQ,dC,X,Y) = {
547547 let dD = (Y == unit)
548548 let ej = [if ((dC == aZ))
549549 then true
550550 else aG("invalid lp asset")]
551551 if ((ej == ej))
552552 then {
553553 let ek = if ((ei == ba))
554554 then true
555555 else if ((ei == bb))
556556 then false
557557 else aG("invalid asset")
558558 let el = if (ek)
559559 then toBigInt(bw(aS(ba)))
560560 else toBigInt(bw(aS(bb)))
561561 let em = bw(aS(ba))
562562 let en = bw(aS(bb))
563563 let eo = if (ek)
564564 then em
565565 else en
566566 let ep = toBigInt(eo)
567567 let dX = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
568568 let eq = toBigInt(dQ)
569569 let er = max([0, toInt(((el * (d - pow((d - ((eq * d) / dX)), 18, h, 0, 18, DOWN))) / d))])
570570 let es = dy(er)
571571 let et = es._1
572572 let dz = es._2
573573 let eu = if (ek)
574574 then $Tuple4(et, 0, (em - er), en)
575575 else $Tuple4(0, et, em, (en - er))
576576 let ev = eu._1
577577 let ew = eu._2
578578 let ex = eu._3
579579 let ey = eu._4
580580 let dT = by(D(ey, bd), D(ex, bc))
581581 let dU = G(dT, b)
582582 let cV = if (dD)
583583 then nil
584584 else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bs(ev, ew, dQ, dU, height, lastBlock.timestamp)), IntegerEntry(S(), dU), IntegerEntry(T(height, lastBlock.timestamp), dU)]
585585 let eb = by(D(en, bd), D(em, bc))
586586 let ec = G(eb, b)
587587 let ed = {
588588 let ez = (toInt(fraction(el, eq, dX)) * 2)
589589 fraction((et - ez), b, ez)
590590 }
591591 $Tuple4(et, cV, dz, ed)
592592 }
593593 else throw("Strict value is not equal to itself.")
594594 }
595595
596596
597597 func eA (eB,eC,cb) = {
598598 let eD = (pow((eB * eC), 0, 5, 1, 0, DOWN) / cb)
599599 eD
600600 }
601601
602602
603603 func eE () = {
604604 let eF = bw(aS(ba))
605605 let eG = bw(aS(bb))
606- let cb = valueOrErrorMessage(assetInfo(aZ), aI(makeString(["Asset ", toBase58String(aZ), " doesn't exist"], ""))).quantity
606+ let cb = value(assetInfo(aZ)).quantity
607607 let eD = eA(eF, eG, cb)
608608 eD
609609 }
610610
611611
612612 func eH () = {
613613 let dw = getString(Q())
614614 if ($isInstanceOf(dw, "String"))
615615 then {
616616 let eI = dw
617617 fromBase58String(eI)
618618 }
619619 else if ($isInstanceOf(dw, "Unit"))
620620 then unit
621621 else throw("Match error")
622622 }
623623
624624
625625 func eJ () = {
626626 let dw = getString(R())
627627 if ($isInstanceOf(dw, "String"))
628628 then {
629629 let eI = dw
630630 fromBase58String(eI)
631631 }
632632 else if ($isInstanceOf(dw, "Unit"))
633633 then unit
634634 else throw("Match error")
635635 }
636636
637637
638638 func eK (dl) = {
639639 let dw = eH()
640640 if ($isInstanceOf(dw, "ByteVector"))
641641 then {
642642 let eL = dw
643643 (dl.callerPublicKey == eL)
644644 }
645645 else if ($isInstanceOf(dw, "Unit"))
646646 then (dl.caller == this)
647647 else throw("Match error")
648648 }
649649
650650
651651 func eM (dl) = {
652652 let eN = throw("Permission denied")
653653 let dw = eH()
654654 if ($isInstanceOf(dw, "ByteVector"))
655655 then {
656656 let eL = dw
657657 if ((dl.callerPublicKey == eL))
658658 then true
659659 else eN
660660 }
661661 else if ($isInstanceOf(dw, "Unit"))
662662 then if ((dl.caller == this))
663663 then true
664664 else eN
665665 else throw("Match error")
666666 }
667667
668668
669669 @Callable(dl)
670670 func setManager (eO) = {
671671 let eP = eM(dl)
672672 if ((eP == eP))
673673 then {
674674 let eQ = fromBase58String(eO)
675675 if ((eQ == eQ))
676676 then [StringEntry(R(), eO)]
677677 else throw("Strict value is not equal to itself.")
678678 }
679679 else throw("Strict value is not equal to itself.")
680680 }
681681
682682
683683
684684 @Callable(dl)
685685 func confirmManager () = {
686686 let eR = eJ()
687687 let eS = if (isDefined(eR))
688688 then true
689689 else throw("No pending manager")
690690 if ((eS == eS))
691691 then {
692692 let eT = if ((dl.callerPublicKey == value(eR)))
693693 then true
694694 else throw("You are not pending manager")
695695 if ((eT == eT))
696696 then [StringEntry(Q(), toBase58String(value(eR))), DeleteEntry(R())]
697697 else throw("Strict value is not equal to itself.")
698698 }
699699 else throw("Strict value is not equal to itself.")
700700 }
701701
702702
703703
704704 @Callable(dl)
705705 func put (cq,eU) = if ((0 > cq))
706706 then throw("Invalid slippageTolerance passed")
707707 else {
708708 let dr = do(dl, cq, true)
709709 let cS = dr._2
710710 let bX = dr._7
711711 let co = dr._9
712712 let cT = dr._10
713713 let cU = dr._11
714714 let eV = dr._12
715715 let eW = dr._13
716716 let du = invoke(aJ, "emit", [cS], nil)
717717 if ((du == du))
718718 then {
719719 let dv = {
720720 let dw = du
721721 if ($isInstanceOf(dw, "Address"))
722722 then {
723723 let dx = dw
724724 invoke(dx, "emit", [cS], nil)
725725 }
726726 else unit
727727 }
728728 if ((dv == dv))
729729 then {
730730 let eX = if ((cT > 0))
731731 then invoke(bg, "put", nil, [AttachedPayment(eV, cT)])
732732 else nil
733733 if ((eX == eX))
734734 then {
735735 let eY = if ((cU > 0))
736736 then invoke(bg, "put", nil, [AttachedPayment(eW, cU)])
737737 else nil
738738 if ((eY == eY))
739739 then {
740740 let eZ = if (eU)
741741 then {
742742 let fa = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
743743 if ((fa == fa))
744744 then nil
745745 else throw("Strict value is not equal to itself.")
746746 }
747747 else [ScriptTransfer(dl.caller, cS, bX)]
748748 (co ++ eZ)
749749 }
750750 else throw("Strict value is not equal to itself.")
751751 }
752752 else throw("Strict value is not equal to itself.")
753753 }
754754 else throw("Strict value is not equal to itself.")
755755 }
756756 else throw("Strict value is not equal to itself.")
757757 }
758758
759759
760760
761761 @Callable(dl)
762762 func putForFree (fb) = if ((0 > fb))
763763 then throw("Invalid value passed")
764764 else {
765765 let dr = do(dl, fb, false)
766766 dr._9
767767 }
768768
769769
770770
771771 @Callable(dl)
772772 func putOneTkn (fc,fd) = {
773773 let fe = {
774774 let ff = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
775775 if ($isInstanceOf(ff, "Boolean"))
776776 then ff
777777 else throw(($getType(ff) + " couldn't be cast to Boolean"))
778778 }
779779 let fg = if (if (if (aL())
780780 then true
781781 else (aY == l))
782782 then true
783783 else (aY == n))
784784 then true
785785 else fe
786786 let ej = [if (if (!(fg))
787787 then true
788788 else eK(dl))
789789 then true
790790 else aG("put operation is blocked by admin"), if ((size(dl.payments) == 1))
791791 then true
792792 else aG("exactly 1 payment are expected")]
793793 if ((ej == ej))
794794 then {
795795 let fh = dl.payments[0]
796796 let dC = fh.assetId
797797 let dB = fh.amount
798798 let X = dl.caller
799799 let Y = dl.transactionId
800800 let fi = dA(dB, dC, X, Y)
801801 let fj = fi._1
802802 let cV = fi._2
803803 let dz = fi._3
804804 let fk = fi._4
805805 let fl = if (if ((fc > 0))
806806 then (fc > fj)
807807 else false)
808808 then aG(makeString(["amount to receive is less than ", toString(fc)], ""))
809809 else fj
810810 let du = ds(fl)
811811 if ((du == du))
812812 then {
813813 let eZ = if (fd)
814814 then {
815815 let fm = invoke(bf, "stake", nil, [AttachedPayment(aZ, fl)])
816816 if ((fm == fm))
817817 then nil
818818 else throw("Strict value is not equal to itself.")
819819 }
820820 else [ScriptTransfer(dl.caller, fl, aZ)]
821821 let fn = if ((dz > 0))
822822 then [ScriptTransfer(aK, dz, dC)]
823823 else nil
824824 $Tuple2(((cV ++ eZ) ++ fn), fl)
825825 }
826826 else throw("Strict value is not equal to itself.")
827827 }
828828 else throw("Strict value is not equal to itself.")
829829 }
830830
831831
832832
833833 @Callable(dl)
834834 func putOneTknREADONLY (dC,dB) = {
835835 let fo = dA(dB, aQ(dC), unit, unit)
836836 let fj = fo._1
837837 let cV = fo._2
838838 let dz = fo._3
839839 let fk = fo._4
840840 $Tuple2(nil, $Tuple3(fj, dz, fk))
841841 }
842842
843843
844844
845845 @Callable(dl)
846846 func getOneTkn (fp,fc) = {
847847 let fe = {
848848 let ff = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
849849 if ($isInstanceOf(ff, "Boolean"))
850850 then ff
851851 else throw(($getType(ff) + " couldn't be cast to Boolean"))
852852 }
853853 let fq = if (if (aL())
854854 then true
855855 else (aY == n))
856856 then true
857857 else fe
858858 let ej = [if (if (!(fq))
859859 then true
860860 else eK(dl))
861861 then true
862862 else aG("get operation is blocked by admin"), if ((size(dl.payments) == 1))
863863 then true
864864 else aG("exactly 1 payment are expected")]
865865 if ((ej == ej))
866866 then {
867867 let ei = aQ(fp)
868868 let fh = dl.payments[0]
869869 let dC = fh.assetId
870870 let dQ = fh.amount
871871 let X = dl.caller
872872 let Y = dl.transactionId
873873 let fr = eh(ei, dQ, dC, X, Y)
874874 let fs = fr._1
875875 let cV = fr._2
876876 let dz = fr._3
877877 let fk = fr._4
878878 let dt = if (if ((fc > 0))
879879 then (fc > fs)
880880 else false)
881881 then aG(makeString(["amount to receive is less than ", toString(fc)], ""))
882882 else fs
883883 let ft = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
884884 if ((ft == ft))
885885 then {
886886 let fu = [ScriptTransfer(X, dt, ei)]
887887 let fn = if ((dz > 0))
888888 then [ScriptTransfer(aK, dz, ei)]
889889 else nil
890890 $Tuple2(((cV ++ fu) ++ fn), dt)
891891 }
892892 else throw("Strict value is not equal to itself.")
893893 }
894894 else throw("Strict value is not equal to itself.")
895895 }
896896
897897
898898
899899 @Callable(dl)
900900 func getOneTknREADONLY (ei,dQ) = {
901901 let fv = eh(aQ(ei), dQ, aZ, unit, unit)
902902 let fs = fv._1
903903 let cV = fv._2
904904 let dz = fv._3
905905 let fk = fv._4
906906 $Tuple2(nil, $Tuple3(fs, dz, fk))
907907 }
908908
909909
910910
911911 @Callable(dl)
912912 func unstakeAndGetOneTkn (fw,fp,fc) = {
913913 let fe = {
914914 let ff = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
915915 if ($isInstanceOf(ff, "Boolean"))
916916 then ff
917917 else throw(($getType(ff) + " couldn't be cast to Boolean"))
918918 }
919919 let fq = if (if (aL())
920920 then true
921921 else (aY == n))
922922 then true
923923 else fe
924924 let ej = [if (if (!(fq))
925925 then true
926926 else eK(dl))
927927 then true
928928 else aG("get operation is blocked by admin"), if ((size(dl.payments) == 0))
929929 then true
930930 else aG("no payments are expected")]
931931 if ((ej == ej))
932932 then {
933933 let ei = aQ(fp)
934934 let X = dl.caller
935935 let Y = dl.transactionId
936936 let fx = invoke(bf, "unstake", [toBase58String(aZ), fw], nil)
937937 if ((fx == fx))
938938 then {
939939 let fy = eh(ei, fw, aZ, X, Y)
940940 let fs = fy._1
941941 let cV = fy._2
942942 let dz = fy._3
943943 let fk = fy._4
944944 let dt = if (if ((fc > 0))
945945 then (fc > fs)
946946 else false)
947947 then aG(makeString(["amount to receive is less than ", toString(fc)], ""))
948948 else fs
949949 let ft = invoke(aJ, "burn", [fw], [AttachedPayment(aZ, fw)])
950950 if ((ft == ft))
951951 then {
952952 let fu = [ScriptTransfer(dl.caller, dt, ei)]
953953 let fn = if ((dz > 0))
954954 then [ScriptTransfer(aK, dz, ei)]
955955 else nil
956956 $Tuple2(((cV ++ fu) ++ fn), dt)
957957 }
958958 else throw("Strict value is not equal to itself.")
959959 }
960960 else throw("Strict value is not equal to itself.")
961961 }
962962 else throw("Strict value is not equal to itself.")
963963 }
964964
965965
966966
967967 @Callable(dl)
968968 func get () = {
969969 let cG = dk(dl)
970970 let fz = cG._1
971971 let cn = cG._2
972972 let dn = cG._3
973973 let bV = cG._4
974974 let co = cG._5
975975 let fA = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
976976 if ((fA == fA))
977977 then co
978978 else throw("Strict value is not equal to itself.")
979979 }
980980
981981
982982
983983 @Callable(dl)
984984 func getNoLess (fB,fC) = {
985985 let cG = dk(dl)
986986 let cm = cG._1
987987 let cn = cG._2
988988 let dn = cG._3
989989 let bV = cG._4
990990 let co = cG._5
991991 if ((fB > cm))
992992 then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fB)))
993993 else if ((fC > cn))
994994 then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fC)))
995995 else {
996996 let fA = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
997997 if ((fA == fA))
998998 then co
999999 else throw("Strict value is not equal to itself.")
10001000 }
10011001 }
10021002
10031003
10041004
10051005 @Callable(dl)
10061006 func unstakeAndGet (dt) = {
10071007 let fD = if ((size(dl.payments) != 0))
10081008 then throw("No payments are expected")
10091009 else true
10101010 if ((fD == fD))
10111011 then {
10121012 let bK = aN()
10131013 let bX = fromBase58String(bK[q])
10141014 let fx = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
10151015 if ((fx == fx))
10161016 then {
10171017 let cG = bT(toBase58String(dl.transactionId), toBase58String(bX), dt, dl.caller)
10181018 let ca = parseIntValue(cG._9)
10191019 let co = cG._10
10201020 let fE = if (if (aL())
10211021 then true
10221022 else (ca == n))
10231023 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
10241024 else true
10251025 if ((fE == fE))
10261026 then {
10271027 let fA = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
10281028 if ((fA == fA))
10291029 then co
10301030 else throw("Strict value is not equal to itself.")
10311031 }
10321032 else throw("Strict value is not equal to itself.")
10331033 }
10341034 else throw("Strict value is not equal to itself.")
10351035 }
10361036 else throw("Strict value is not equal to itself.")
10371037 }
10381038
10391039
10401040
10411041 @Callable(dl)
10421042 func unstakeAndGetNoLess (fw,fF,fC) = {
10431043 let fq = if (aL())
10441044 then true
10451045 else (aY == n)
10461046 let ej = [if (!(fq))
10471047 then true
10481048 else throw("get operation is blocked by admin"), if ((size(dl.payments) == 0))
10491049 then true
10501050 else throw("no payments are expected")]
10511051 if ((ej == ej))
10521052 then {
10531053 let fx = invoke(bf, "unstake", [toBase58String(aZ), fw], nil)
10541054 if ((fx == fx))
10551055 then {
10561056 let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fw, dl.caller)
10571057 let cm = cG._1
10581058 let cn = cG._2
10591059 let co = cG._10
10601060 let fG = [if ((cm >= fF))
10611061 then true
10621062 else throw(makeString(["amount asset amount to receive is less than ", toString(fF)], "")), if ((cn >= fC))
10631063 then true
10641064 else throw(makeString(["price asset amount to receive is less than ", toString(fC)], ""))]
10651065 if ((fG == fG))
10661066 then {
10671067 let fA = invoke(aJ, "burn", [fw], [AttachedPayment(aZ, fw)])
10681068 if ((fA == fA))
10691069 then co
10701070 else throw("Strict value is not equal to itself.")
10711071 }
10721072 else throw("Strict value is not equal to itself.")
10731073 }
10741074 else throw("Strict value is not equal to itself.")
10751075 }
10761076 else throw("Strict value is not equal to itself.")
10771077 }
10781078
10791079
10801080
10811081 @Callable(dl)
10821082 func activate (fH,fI) = if ((toString(dl.caller) != toString(aJ)))
10831083 then throw("permissions denied")
10841084 else $Tuple2([StringEntry(aa(), fH), StringEntry(ab(), fI)], "success")
10851085
10861086
10871087
10881088 @Callable(dl)
10891089 func refreshKLp () = {
10901090 let fJ = valueOrElse(getInteger(ag), 0)
10911091 let fK = if (((height - fJ) >= aj))
10921092 then unit
10931093 else aG(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
10941094 if ((fK == fK))
10951095 then {
10961096 let eD = eE()
10971097 [IntegerEntry(ag, height), IntegerEntry(af, eD)]
10981098 }
10991099 else throw("Strict value is not equal to itself.")
11001100 }
11011101
11021102
11031103
11041104 @Callable(dl)
11051105 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aN())
11061106
11071107
11081108
11091109 @Callable(dl)
11101110 func getAccBalanceWrapperREADONLY (bx) = $Tuple2(nil, bw(bx))
11111111
11121112
11131113
11141114 @Callable(dl)
11151115 func calcPricesWrapperREADONLY (bE,bF,bJ) = {
11161116 let bS = bI(bE, bF, bJ)
11171117 $Tuple2(nil, [toString(bS[0]), toString(bS[1]), toString(bS[2])])
11181118 }
11191119
11201120
11211121
11221122 @Callable(dl)
11231123 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11241124
11251125
11261126
11271127 @Callable(dl)
11281128 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
11291129
11301130
11311131
11321132 @Callable(dl)
11331133 func calcPriceBigIntWrapperREADONLY (bz,bA) = $Tuple2(nil, toString(by(parseBigIntValue(bz), parseBigIntValue(bA))))
11341134
11351135
11361136
11371137 @Callable(dl)
11381138 func estimatePutOperationWrapperREADONLY (bU,cq,cr,cs,ct,cu,X,cv,cw) = $Tuple2(nil, cp(bU, cq, cr, cs, ct, cu, X, cv, cw))
11391139
11401140
11411141
11421142 @Callable(dl)
11431143 func estimateGetOperationWrapperREADONLY (bU,bV,bW,X) = {
11441144 let cG = bT(bU, bV, bW, addressFromStringValue(X))
11451145 $Tuple2(nil, $Tuple10(cG._1, cG._2, cG._3, cG._4, cG._5, cG._6, cG._7, toString(cG._8), cG._9, cG._10))
11461146 }
11471147
11481148
11491149
11501150 @Callable(dl)
11511151 func statsREADONLY () = {
11521152 let bK = aN()
11531153 let bX = fromBase58String(bK[q])
11541154 let cY = bK[r]
11551155 let cZ = bK[s]
11561156 let cz = bK[v]
11571157 let cA = bK[w]
11581158 let bL = parseIntValue(bK[t])
11591159 let bM = parseIntValue(bK[u])
11601160 let fL = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
11611161 let da = bw(cY)
11621162 let db = bw(cZ)
11631163 let fM = if ((fL == 0))
11641164 then [e, e, e]
11651165 else bI(da, db, fL)
11661166 let ch = 0
11671167 let fN = G(fM[1], b)
11681168 let fO = G(fM[2], b)
11691169 let fP = value(getInteger(aJ, au(toString(this))))
11701170 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(fL), toString(ch), toString(fN), toString(fO), toString(fP)], j))
11711171 }
11721172
11731173
11741174
11751175 @Callable(dl)
11761176 func evaluatePutByAmountAssetREADONLY (cr) = {
11771177 let bK = aN()
11781178 let bX = fromBase58String(bK[q])
11791179 let cx = bK[r]
11801180 let bY = fromBase58String(cx)
11811181 let cy = bK[s]
11821182 let bZ = fromBase58String(cy)
11831183 let bL = parseIntValue(bK[t])
11841184 let bM = parseIntValue(bK[u])
11851185 let ca = bK[p]
11861186 let fL = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
11871187 let da = bw(cx)
11881188 let db = bw(cy)
11891189 let bG = D(da, bL)
11901190 let bH = D(db, bM)
11911191 let cg = if ((fL == 0))
11921192 then e
11931193 else by(bH, bG)
11941194 let cD = D(cr, bL)
11951195 let cE = fraction(cD, cg, d)
11961196 let ct = G(cE, bM)
11971197 let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
11981198 let cO = dr._1
11991199 let fQ = dr._3
12001200 let cc = dr._4
12011201 let ce = dr._5
12021202 let cb = dr._6
12031203 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
12041204 }
12051205
12061206
12071207
12081208 @Callable(dl)
12091209 func evaluatePutByPriceAssetREADONLY (ct) = {
12101210 let bK = aN()
12111211 let bX = fromBase58String(bK[q])
12121212 let cx = bK[r]
12131213 let bY = fromBase58String(cx)
12141214 let cy = bK[s]
12151215 let bZ = fromBase58String(cy)
12161216 let bL = parseIntValue(bK[t])
12171217 let bM = parseIntValue(bK[u])
12181218 let ca = bK[p]
12191219 let fL = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
12201220 let fR = bw(cx)
12211221 let fS = bw(cy)
12221222 let fT = D(fR, bL)
12231223 let fU = D(fS, bM)
12241224 let cg = if ((fL == 0))
12251225 then e
12261226 else by(fU, fT)
12271227 let cE = D(ct, bM)
12281228 let cD = fraction(cE, d, cg)
12291229 let cr = G(cD, bL)
12301230 let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
12311231 let cO = dr._1
12321232 let fQ = dr._3
12331233 let cc = dr._4
12341234 let ce = dr._5
12351235 let cb = dr._6
12361236 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
12371237 }
12381238
12391239
12401240
12411241 @Callable(dl)
12421242 func evaluateGetREADONLY (fV,fW) = {
12431243 let cG = bT("", fV, fW, this)
12441244 let cm = cG._1
12451245 let cn = cG._2
12461246 let cc = cG._5
12471247 let ce = cG._6
12481248 let cb = cG._7
12491249 let ch = cG._8
12501250 let ca = parseIntValue(cG._9)
12511251 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cm), toString(cn), toString(cc), toString(ce), toString(cb), toString(ch), toString(ca)], j))
12521252 }
12531253
12541254
12551255 @Verifier(fX)
12561256 func fY () = {
12571257 let fZ = {
12581258 let dw = eH()
12591259 if ($isInstanceOf(dw, "ByteVector"))
12601260 then {
12611261 let eL = dw
12621262 eL
12631263 }
12641264 else if ($isInstanceOf(dw, "Unit"))
12651265 then fX.senderPublicKey
12661266 else throw("Match error")
12671267 }
12681268 let dw = fX
12691269 if ($isInstanceOf(dw, "Order"))
12701270 then {
12711271 let cX = dw
12721272 let ga = aM()
12731273 let az = cW(cX)
12741274 let aA = sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
12751275 let aB = sigVerify(cX.bodyBytes, cX.proofs[1], ga)
12761276 if (if (if (az)
12771277 then aA
12781278 else false)
12791279 then aB
12801280 else false)
12811281 then true
12821282 else ay(az, aA, aB)
12831283 }
12841284 else if ($isInstanceOf(dw, "SetScriptTransaction"))
12851285 then {
12861286 let eI = dw
12871287 let gb = blake2b256(value(eI.script))
12881288 let gc = fromBase64String(value(getString(aJ, aw())))
12891289 let gd = scriptHash(this)
12901290 if (if ((gc == gb))
12911291 then (gd != gb)
12921292 else false)
12931293 then true
12941294 else sigVerify(fX.bodyBytes, fX.proofs[0], fZ)
12951295 }
12961296 else sigVerify(fX.bodyBytes, fX.proofs[0], fZ)
12971297 }
12981298

github/deemru/w8io/873ac7e 
155.36 ms