tx · BWctxADPfWjZAJCkLM6nbjfLo6asgTVjYqyTyyrspLAi

3N8sfbgCJCsLbcWYRiVKm6ivccPLMsQmVDx:  -0.03000000 Waves

2022.11.07 10:38 [2306431] smart account 3N8sfbgCJCsLbcWYRiVKm6ivccPLMsQmVDx > SELF 0.00000000 Waves

{ "type": 13, "id": "BWctxADPfWjZAJCkLM6nbjfLo6asgTVjYqyTyyrspLAi", "fee": 3000000, "feeAssetId": null, "timestamp": 1667806657598, "version": 1, "sender": "3N8sfbgCJCsLbcWYRiVKm6ivccPLMsQmVDx", "senderPublicKey": "G4Ha5wvhDpHGy5koVJsmfWC2zwF89jXDUmWBb28mRyrr", "proofs": [ "5aYikFZHouTNYHXaSawDmF8Brqgib631Wwb9yDNYpUtEDkELKw31X9KUdjDLP5Nxbsup4ooP7WoVLzHm7cTRvjBS" ], "script": "base64:BgL1JggCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASAwoBCBIFCgMBAQESBAoCAQESBAoCCAESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgSABIDCgEBEgMKAQESBAoCCAEiCmxQZGVjaW1hbHMiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgt3YXZlc1N0cmluZyIDU0VQIgpQb29sQWN0aXZlIg9Qb29sUHV0RGlzYWJsZWQiE1Bvb2xNYXRjaGVyRGlzYWJsZWQiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiDWlkeFBvb2xTdGF0dXMiEGlkeFBvb2xMUEFzc2V0SWQiDWlkeEFtdEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIOaWR4QW10QXNzZXREY20iEGlkeFByaWNlQXNzZXREY20iDmlkeElBbXRBc3NldElkIhBpZHhJUHJpY2VBc3NldElkIg1pZHhMUEFzc2V0RGNtIhJpZHhQb29sQW10QXNzZXRBbXQiFGlkeFBvb2xQcmljZUFzc2V0QW10IhFpZHhQb29sTFBBc3NldEFtdCIZaWR4RmFjdG9yeVN0YWtpbmdDb250cmFjdCIaaWR4RmFjdG9yeVNsaXBwYWdlQ29udHJhY3QiBXRvWDE4IgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiCXRpbWVzdGFtcCIDcGF1Igt1c2VyQWRkcmVzcyIEdHhJZCIDZ2F1IgJhYSICcGEiBmtleUZlZSIKZmVlRGVmYXVsdCIDZmVlIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDc1NDQ3NzEwIg5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSINb3JkZXJBbXRBc3NldCIQb3JkZXJBbXRBc3NldFN0ciIPb3JkZXJQcmljZUFzc2V0IhJvcmRlclByaWNlQXNzZXRTdHIiCm9yZGVyUHJpY2UiCHByaWNlRGNtIhBjYXN0ZWRPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjI1NzEyMjg2NCIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyMjg2ODIzMDE3IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIzMTM5MjMxOTgiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiC3ByaWNlSW1wYWN0Ig9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDI2MTM2MjYxODYiC3RvdGFsQW1vdW50Ig0kdDAyNjE5MDI2NDE2IgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCILbXVzdE1hbmFnZXIiAnBkIgJwayIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiC21heFNsaXBwYWdlIgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiAUAiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDMwOTk4MzExMjUiE2VtaXRBbW91bnRFc3RpbWF0ZWQiBWJvbnVzIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwMzE4NTQzMTk4OSINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwMzI3NjEzMjg5MyIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDAzMzUyODMzNjY2Ig11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDAzNDQ1ODM0NTg4IglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5IhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciINcG9vbExQQmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hiAAFhAAgAAWIAgMLXLwABYwkAtgIBAIDC1y8AAWQJALYCAQCAgJC7utat8A0AAWUJALYCAQAAAAFmCQC2AgEAAAABZwkAtgIBAAEAAWgJALYCAQACAAFpAgVXQVZFUwABagICX18AAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAAKAAF5AAEAAXoAAgABQQADAAFCAAEAAUMABwEBRAIBRQFGCQC8AgMJALYCAQUBRQUBZAkAtgIBBQFGAQFHAgFIAUkJAKADAQkAvAIDBQFICQC2AgEFAUkFAWQBAUoDAUsBTAFNCQBrAwUBSwUBTAUBTQEBTgEBSAMJAGYCAAAFAUgJAQEtAQUBSAUBSAEBTwEBSAMJAL8CAgUBZQUBSAkAvgIBBQFIBQFIAQFQAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBUQACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFSAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFTAAIRJXMlc19fcHJpY2VfX2xhc3QBAVQCAVUBVgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVUJAMwIAgkApAMBBQFWBQNuaWwFAWoBAVcCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVgCAl9fBQFZAQFaAgFYAVkJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFYAgJfXwUBWQECYWEAAg8lc19fYW1vdW50QXNzZXQBAmFiAAIOJXNfX3ByaWNlQXNzZXQAAmFjAgclc19fZmVlAAJhZAkAawMACgUBYgCQTgACYWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWMFAmFkAQJhZgACESVzX19mYWN0b3J5Q29uZmlnAQJhZwACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYWgBAmFpCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFpAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYWoCAmFrAmFsCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhawICX18FAmFsAghfX2NvbmZpZwECYW0BAmFuCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFuAQJhbwACDCVzX19zaHV0ZG93bgECYXABAmFxCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXEBAmFyAAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmFzAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYXQDAmF1AmF2AmF3CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhdQINIHNlbmRlclZhbGlkPQkApQMBBQJhdgIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYXcBAmF4AgJheQJhegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmF5BQJhegkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJheQkAzAgCAgEuCQDMCAIFAmF6CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFBAgJheQJhegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmF5BQJhegkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJheQkAzAgCAgEuCQDMCAIFAmF6CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFCAQJhQwkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhQwUDbmlsAgEgAAJhRAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF4AgUEdGhpcwkBAVAAAAJhRQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmF4AgUCYUQFAmFzAQJhRgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUQJAQJhbwAHAQJhRwAJANkEAQkBAmF4AgUCYUQJAQJhZwABAmFIAAQCYUkJAQJheAIFBHRoaXMJAQJhYQAEAmFKCQECYXgCBQR0aGlzCQECYWIABAJhbAkBAmFBAgUCYUQJAQJhbQEFAmFKBAJhawkBAmFBAgUCYUQJAQJhbQEFAmFJCQC1CQIJAQJheAIFAmFECQECYWoCCQCkAwEFAmFrCQCkAwEFAmFsBQFqAQJhSwECYUwDCQAAAgUCYUwFAWkFBHVuaXQJANkEAQUCYUwBAmFNAQJhTAMJAAACBQJhTAUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhTAECYU4BAmFPCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYU8FAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTwUBcAkA2QQBCQCRAwIFAmFPBQFxCQECYUsBCQCRAwIFAmFPBQFyCQECYUsBCQCRAwIFAmFPBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYU8FAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTwUBdQACYVAJAQJhTgEJAQJhSAAAAmFRBQJhUAACYVIIBQJhUQJfMQACYVMIBQJhUQJfMgACYVQIBQJhUQJfMwACYVUIBQJhUQJfNAACYVYIBQJhUQJfNQACYVcIBQJhUQJfNgACYVgIBQJhUQJfNwECYVkACQC1CQIJAQJheAIFAmFECQECYWYABQFqAAJhWgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmFZAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYmEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJhWQAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJiCgJiYwJiZAJiZQJiZgJiZwJiaAJiaQJiagJiawJibAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmMJAMwIAgkApAMBBQJiZAkAzAgCCQCkAwEFAmJlCQDMCAIJAKQDAQUCYmYJAMwIAgkApAMBBQJiZwkAzAgCCQCkAwEFAmJoCQDMCAIJAKQDAQUCYmkJAMwIAgkApAMBBQJiagkAzAgCCQCkAwEFAmJrCQDMCAIJAKQDAQUCYmwFA25pbAUBagECYm0GAmJuAmJvAmJwAmJmAmJpAmJqCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwCQDMCAIJAKQDAQUCYmYJAMwIAgkApAMBBQJiaQkAzAgCCQCkAwEFAmJqBQNuaWwFAWoBAmJxAQJicgMJAAACBQJicgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYnIBAmJzAgJidAJidQkAvAIDBQJidAUBZAUCYnUBAmJ2BAJidwJieAJieQJiegQCYkEJAQFEAgUCYnkFAmJ3BAJiQgkBAUQCBQJiegUCYngJAQJicwIFAmJCBQJiQQECYkMDAmJ5AmJ6AmJEBAJiRQkBAmFIAAQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYkgJAQJidgQFAmJGBQJiRwUCYnkFAmJ6BAJidQkBAUQCBQJieQUCYkYEAmJ0CQEBRAIFAmJ6BQJiRwQCYkkJAQFEAgUCYkQFAWIEAmJKCQECYnMCBQJidQUCYkkEAmJLCQECYnMCBQJidAUCYkkJAMwIAgUCYkgJAMwIAgUCYkoJAMwIAgUCYksFA25pbAECYkwDAmJ5AmJ6AmJEBAJiTQkBAmJDAwUCYnkFAmJ6BQJiRAkAzAgCCQEBRwIJAJEDAgUCYk0AAAUBYgkAzAgCCQEBRwIJAJEDAgUCYk0AAQUBYgkAzAgCCQEBRwIJAJEDAgUCYk0AAgUBYgUDbmlsAQJiTgQCYk8CYlACYlEBWAQCYkUJAQJhSAAEAmJSCQCRAwIFAmJFBQFxBAJiUwkAkQMCBQJiRQUBcgQCYlQJAJEDAgUCYkUFAXMEAmJ3CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJ4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmJVCQCRAwIFAmJFBQFwBAJiVggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJSCQCsAgIJAKwCAgIGQXNzZXQgBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJiUgUCYlAJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmJXCQECYnEBBQJiUwQCYlgJAQFEAgUCYlcFAmJ3BAJiWQkBAmJxAQUCYlQEAmJaCQEBRAIFAmJZBQJieAQCY2EJAQJicwIFAmJaBQJiWAQCY2IJAQFHAgUCY2EFAWIEAmNjCQEBRAIFAmJRBQFiBAJjZAkBAUQCBQJiVgUBYgQCY2UJALwCAwUCYlgFAmNjBQJjZAQCY2YJALwCAwUCYloFAmNjBQJjZAQCY2cJAQFHAgUCY2UFAmJ3BAJjaAkBAUcCBQJjZgUCYngEAmNpAwkAAAIFAmJPAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJjZwMJAAACBQJiUwIFV0FWRVMFBHVuaXQJANkEAQUCYlMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWAUCY2gDCQAAAgUCYlQCBVdBVkVTBQR1bml0CQDZBAEFAmJUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgkApQgBBQFYBQJiTwkBAmJtBgUCY2cFAmNoBQJiUQUCY2IFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCY2IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2IFA25pbAkAnAoKBQJjZwUCY2gFAmJTBQJiVAUCYlcFAmJZBQJiVgUCY2EFAmJVBQJjaQECY2oJAmJPAmNrAmNsAmNtAmNuAmNvAVgCY3ACY3EEAmJFCQECYUgABAJiUgkA2QQBCQCRAwIFAmJFBQFxBAJjcgkAkQMCBQJiRQUBcgQCY3MJAJEDAgUCYkUFAXMEAmN0CQCRAwIFAmJFBQF2BAJjdQkAkQMCBQJiRQUBdwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYlUJAJEDAgUCYkUFAXAEAmJWCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJSCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJSAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCY3YJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY20JANkEAQIFV0FWRVMEAmN3CQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNvCQDZBAECBVdBVkVTAwMJAQIhPQIFAmNyBQJjdgYJAQIhPQIFAmNzBQJjdwkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmJXAwUCY3AJAQJicQEFAmNyCQBlAgkBAmJxAQUCY3IFAmNsBAJiWQMFAmNwCQECYnEBBQJjcwkAZQIJAQJicQEFAmNzBQJjbgQCY3gJAQFEAgUCY2wFAmJGBAJjeQkBAUQCBQJjbgUCYkcEAmN6CQECYnMCBQJjeQUCY3gEAmJYCQEBRAIFAmJXBQJiRgQCYloJAQFEAgUCYlkFAmJHBAJjQQMJAAACBQJiVgAABAJjYQUBZQQCY0IFAWUEAmJJCQB2BgkAuQICBQJjeAUCY3kAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFHAgUCYkkFAWIJAQFHAgUCY3gFAmJGCQEBRwIFAmN5BQJiRwkBAmJzAgkAtwICBQJiWgUCY3kJALcCAgUCYlgFAmN4BQJjQgQCY2EJAQJicwIFAmJaBQJiWAQCY0IJALwCAwkBAU8BCQC4AgIFAmNhBQJjegUBZAUCY2EEAmNDCQEBRAIFAmNrBQFiAwMJAQIhPQIFAmNhBQFlCQC/AgIFAmNCBQJjQwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY0ICHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJjQwQCY2QJAQFEAgUCYlYFAWIEAmNECQC8AgMFAmN4BQJjYQUBZAQCY0UJALwCAwUCY3kFAWQFAmNhBAJjRgMJAL8CAgUCY0QFAmN5CQCUCgIFAmNFBQJjeQkAlAoCBQJjeAUCY0QEAmNHCAUCY0YCXzEEAmNICAUCY0YCXzIEAmJJCQC8AgMFAmNkBQJjSAUCYloJAJcKBQkBAUcCBQJiSQUBYgkBAUcCBQJjRwUCYkYJAQFHAgUCY0gFAmJHBQJjYQUCY0IEAmNJCAUCY0ECXzEEAmNKCAUCY0ECXzIEAmNLCAUCY0ECXzMEAmNiCQEBRwIIBQJjQQJfNAUBYgQCY0wJAQFHAggFAmNBAl81BQFiAwkAZwIAAAUCY0kJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmNNAwkBASEBBQJjcQAABQJjSQQCY04JAGUCBQJjbAUCY0oEAmNPCQBlAgUCY24FAmNLBAJjUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjYgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAVgFAmJPCQECYmIKBQJjSgUCY0sFAmNNBQJjYgUCY2sFAmNMBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjTgUCY08FA25pbAkAnwoNBQJjSQUCY00FAmNiBQJiVwUCYlkFAmJWBQJiUgUCYlUFAmNQBQJjTgUCY08FAmNtBQJjbwECY1EBAmNSBAJiRQkBAmFIAAQCY1MJAJEDAgUCYkUFAXIEAmNUCQCRAwIFAmJFBQFzBAJiVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQFwBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJjVQkBAmJxAQUCY1MEAmNWCQECYnEBBQJjVAQCY2EDCQAAAggFAmNSCW9yZGVyVHlwZQUDQnV5CQECYnYEBQJiRgUCYkcJAGQCBQJjVQgFAmNSBmFtb3VudAUCY1YJAQJidgQFAmJGBQJiRwkAZQIFAmNVCAUCY1IGYW1vdW50BQJjVgQCY2IJAQFHAgUCY2EFAWIDAwMJAQJhRgAGCQAAAgUCYlUFAW0GCQAAAgUCYlUFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkBAJjVwgIBQJjUglhc3NldFBhaXILYW1vdW50QXNzZXQEAmNYAwkAAAIFAmNXBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJjVwQCY1kICAUCY1IJYXNzZXRQYWlyCnByaWNlQXNzZXQEAmNaAwkAAAIFAmNZBQR1bml0AgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJjWQMDCQECIT0CBQJjWAUCY1MGCQECIT0CBQJjWgUCY1QJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkYQgFAmNSBXByaWNlBAJkYgkAawMFAWIFAmJHBQJiRgQCZGMJAQFKAwUCZGEFAWIFAmRiBAJkZAMJAAACCAUCY1IJb3JkZXJUeXBlBQNCdXkJAGcCBQJjYgUCZGMJAGcCBQJkYwUCY2IGAQJkZQECZGYDCQECIT0CCQCQAwEIBQJkZghwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmRnCQEFdmFsdWUBCQCRAwIIBQJkZghwYXltZW50cwAABAJiUAkBBXZhbHVlAQgFAmRnB2Fzc2V0SWQEAmRoCAUCZGcGYW1vdW50BAJjQQkBAmJOBAkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiUAUCZGgIBQJkZgZjYWxsZXIEAmNnCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJjQQJfOQQCY2kIBQJjQQNfMTADAwkBAmFGAAYJAAACBQJiVQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYlUJAJcKBQUCY2cFAmNoBQJkaAUCYlAFAmNpAQJkaQMCZGYCY2sCY3EDCQECIT0CCQCQAwEIBQJkZghwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZGoJAQV2YWx1ZQEJAJEDAggFAmRmCHBheW1lbnRzAAAEAmRrCQEFdmFsdWUBCQCRAwIIBQJkZghwYXltZW50cwABBAJkbAkBAmNqCQkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAUCY2sIBQJkagZhbW91bnQIBQJkagdhc3NldElkCAUCZGsGYW1vdW50CAUCZGsHYXNzZXRJZAkApQgBCAUCZGYGY2FsbGVyBwUCY3EEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJkbAJfOAMDAwkBAmFGAAYJAAACBQJiVQUBbAYJAAACBQJiVQUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYlUFAmRsAQJkbQECZG4EAmRvCQD8BwQFAmFEAgRlbWl0CQDMCAIFAmRuBQNuaWwFA25pbAMJAAACBQJkbwUCZG8EAmRwBAJkcQUCZG8DCQABAgUCZHECB0FkZHJlc3MEAmRyBQJkcQkA/AcEBQJkcgIEZW1pdAkAzAgCBQJkbgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZHAFAmRwBQJkbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZHMBAmRuBAJkdAkAawMFAmRuBQJhZQUBYgkAlAoCCQBlAgUCZG4FAmR0BQJkdAECZHUEAmR2AmR3AVgBWQQCZHgJAAACBQFZBQR1bml0BAJkeQkBAmJxAQkBAmFNAQUCYVUEAmR6CQECYnEBCQECYU0BBQJhVgQCZEEDCQAAAgUCZHcFAmFVBgMJAAACBQJkdwUCYVYHCQECYUIBAg1pbnZhbGlkIGFzc2V0BAJkQgMFAmR4CQCUCgIFAmR5BQJkegMFAmRBCQCUCgIJAGUCBQJkeQUCZHYFAmR6CQCUCgIFAmR5CQBlAgUCZHoFAmR2BAJkQwgFAmRCAl8xBAJkRAgFAmRCAl8yBAJkRQMFAmRBCQCUCgIFAmR2AAAJAJQKAgAABQJkdgQCZEYIBQJkRQJfMQQCZEcIBQJkRQJfMgQCZEgICQECZHMBBQJkRgJfMQQCZEkICQECZHMBBQJkRwJfMQQCZEoJAQJkcwEFAmR2BAJkSwgFAmRKAl8xBAJkdAgFAmRKAl8yBAJkTAkAZAIFAmRDBQJkSAQCZE0JAGQCBQJkRAUCZEkEAmROCQECYnMCCQEBRAIFAmRNBQJhWAkBAUQCBQJkTAUCYVcEAmRPCQEBRwIFAmROBQFiBAJkUAMFAmRBBQJkQwUCZEQEAmRRCQC2AgEFAmRQBAJkUgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmFUCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmFUAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZFMDCQC/AgIFAmRSBQFmBgkBAmFCAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJkUwUCZFMEAmRUCQC2AgEFAmRLBAJkVQkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJkUgkAuAICCQEKc3FydEJpZ0ludAQJALcCAgUBZAkAugICCQC5AgIFAmRUBQFkBQJkUQASABIFBERPV04FAWQFAWQFA25pbAQCY1ADBQJkeAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmRPCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRPCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgkApQgBCQEFdmFsdWUBBQFYCQDYBAEJAQV2YWx1ZQEFAVkJAQJiYgoFAmRGBQJkRwUCZFUFAmRPAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZFYJAQJicwIJAQFEAgUCZEQFAmFYCQEBRAIFAmRDBQJhVwQCZFcJAQFHAgUCZFYFAWIEAmRYCQEBTgEJAGkCCQBoAgkAZQIFAmRPBQJkVwUBYgUCZFcJAJYKBAUCZFUFAmNQBQJkdAUCZFgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmRZBQJkWgJkSwJkdwFYAVkEAmR4CQAAAgUBWQUEdW5pdAQCZWEJAMwIAgMJAAACBQJkdwUCYVQGCQECYUIBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZWEFAmVhBAJlYgMJAAACBQJkWgUCYVUGAwkAAAIFAmRaBQJhVgcJAQJhQgECDWludmFsaWQgYXNzZXQEAmVjAwUCZWIJALYCAQkBAmJxAQkBAmFNAQUCYVUJALYCAQkBAmJxAQkBAmFNAQUCYVYEAmVkCQECYnEBCQECYU0BBQJhVQQCZWUJAQJicQEJAQJhTQEFAmFWBAJlZgMFAmViBQJlZAUCZWUEAmVnCQC2AgEFAmVmBAJkUgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmFUCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmFUAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZWgJALYCAQUCZEsEAmVpCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmVjCQC4AgIFAWQJAHYGCQC4AgIFAWQJALoCAgkAuQICBQJlaAUBZAUCZFIAEgUBaAAAABIFBERPV04FAWQFA25pbAQCZWoJAQJkcwEFAmVpBAJlawgFAmVqAl8xBAJkdAgFAmVqAl8yBAJlbAMFAmViCQCWCgQFAmVrAAAJAGUCBQJlZAUCZWkFAmVlCQCWCgQAAAUCZWsFAmVkCQBlAgUCZWUFAmVpBAJlbQgFAmVsAl8xBAJlbggFAmVsAl8yBAJlbwgFAmVsAl8zBAJlcAgFAmVsAl80BAJkTgkBAmJzAgkBAUQCBQJlcAUCYVgJAQFEAgUCZW8FAmFXBAJkTwkBAUcCBQJkTgUBYgQCY1ADBQJkeAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgkApQgBCQEFdmFsdWUBBQFYCQDYBAEJAQV2YWx1ZQEFAVkJAQJibQYFAmVtBQJlbgUCZEsFAmRPBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmRPCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRPBQNuaWwEAmRWCQECYnMCCQEBRAIFAmVlBQJhWAkBAUQCBQJlZAUCYVcEAmRXCQEBRwIFAmRWBQFiBAJkWAkBAU4BCQBpAgkAaAIJAGUCBQJkTwUCZFcFAWIFAmRXCQCWCgQFAmVrBQJjUAUCZHQFAmRYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlcQAEAmRxCQCiCAEJAQFRAAMJAAECBQJkcQIGU3RyaW5nBAJlcgUCZHEJANkEAQUCZXIDCQABAgUCZHECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZXMABAJkcQkAoggBCQEBUgADCQABAgUCZHECBlN0cmluZwQCZXIFAmRxCQDZBAEFAmVyAwkAAQIFAmRxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmV0AQJkZgQCZXUJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCZHEJAQJlcQADCQABAgUCZHECCkJ5dGVWZWN0b3IEAmV2BQJkcQMJAAACCAUCZGYPY2FsbGVyUHVibGljS2V5BQJldgYFAmV1AwkAAQIFAmRxAgRVbml0AwkAAAIIBQJkZgZjYWxsZXIFBHRoaXMGBQJldQkAAgECC01hdGNoIGVycm9yGgJkZgEKc2V0TWFuYWdlcgECZXcEAmV4CQECZXQBBQJkZgMJAAACBQJleAUCZXgEAmV5CQDZBAEFAmV3AwkAAAIFAmV5BQJleQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgAFAmV3BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBDmNvbmZpcm1NYW5hZ2VyAAQCZXoJAQJlcwAEAmVBAwkBCWlzRGVmaW5lZAEFAmV6BgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJlQQUCZUEEAmVCAwkAAAIIBQJkZg9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmV6BgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJlQgUCZUIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVEACQDYBAEJAQV2YWx1ZQEFAmV6CQDMCAIJAQtEZWxldGVFbnRyeQEJAQFSAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQNwdXQCAmNrAmVDAwkAZgIAAAUCY2sJAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZGwJAQJkaQMFAmRmBQJjawYEAmNNCAUCZGwCXzIEAmJSCAUCZGwCXzcEAmNpCAUCZGwCXzkEAmNOCAUCZGwDXzEwBAJjTwgFAmRsA18xMQQCZUQIBQJkbANfMTIEAmVFCAUCZGwDXzEzBAJkbwkA/AcEBQJhRAIEZW1pdAkAzAgCBQJjTQUDbmlsBQNuaWwDCQAAAgUCZG8FAmRvBAJkcAQCZHEFAmRvAwkAAQIFAmRxAgdBZGRyZXNzBAJkcgUCZHEJAPwHBAUCZHICBGVtaXQJAMwIAgUCY00FA25pbAUDbmlsBQR1bml0AwkAAAIFAmRwBQJkcAQCZUYDCQBmAgUCY04AAAkA/AcEBQJiYQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmVEBQJjTgUDbmlsBQNuaWwDCQAAAgUCZUYFAmVGBAJlRwMJAGYCBQJjTwAACQD8BwQFAmJhAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZUUFAmNPBQNuaWwFA25pbAMJAAACBQJlRwUCZUcEAmVIAwUCZUMEAmVJCQD8BwQFAmFaAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiUgUCY00FA25pbAMJAAACBQJlSQUCZUkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZGYGY2FsbGVyBQJjTQUCYlIFA25pbAkAzggCBQJjaQUCZUgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBCnB1dEZvckZyZWUBAmVKAwkAZgIAAAUCZUoJAAIBAhRJbnZhbGlkIHZhbHVlIHBhc3NlZAQCZGwJAQJkaQMFAmRmBQJlSgcIBQJkbAJfOQJkZgEJcHV0T25lVGtuAgJlSwJlTAQCZU0KAAJlTgkA/AcEBQJhRAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmVOAgdCb29sZWFuBQJlTgkAAgEJAKwCAgkAAwEFAmVOAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJlTwMDAwkBAmFGAAYJAAACBQJhUwUBbAYJAAACBQJhUwUBbgYFAmVNBAJlYQkAzAgCAwkBASEBBQJlTwYJAQJhQgECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRmCHBheW1lbnRzAAEGCQECYUIBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlYQUCZWEEAmVQCQCRAwIIBQJkZghwYXltZW50cwAABAJkdwgFAmVQB2Fzc2V0SWQEAmR2CAUCZVAGYW1vdW50BAFYCAUCZGYGY2FsbGVyBAFZCAUCZGYNdHJhbnNhY3Rpb25JZAQCZVEJAQJkdQQFAmR2BQJkdwUBWAUBWQQCZVIIBQJlUQJfMQQCY1AIBQJlUQJfMgQCZHQIBQJlUQJfMwQCZVMIBQJlUQJfNAQCZVQDAwkAZgIFAmVLAAAJAGYCBQJlSwUCZVIHCQECYUIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVLBQNuaWwCAAUCZVIEAmRvCQECZG0BBQJlVAMJAAACBQJkbwUCZG8EAmVIAwUCZUwEAmVVCQD8BwQFAmFaAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhVAUCZVQFA25pbAMJAAACBQJlVQUCZVUFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZGYGY2FsbGVyBQJlVAUCYVQFA25pbAQCZVYDCQBmAgUCZHQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRQUCZHQFAmR3BQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY1AFAmVIBQJlVgUCZVQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBEXB1dE9uZVRrblJFQURPTkxZAgJkdwJkdgQCZVcJAQJkdQQFAmR2CQECYUsBBQJkdwUEdW5pdAUEdW5pdAQCZVIIBQJlVwJfMQQCY1AIBQJlVwJfMgQCZHQIBQJlVwJfMwQCZVMIBQJlVwJfNAkAlAoCBQNuaWwJAJUKAwUCZVIFAmR0BQJlUwJkZgEJZ2V0T25lVGtuAgJlWAJlSwQCZU0KAAJlTgkA/AcEBQJhRAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmVOAgdCb29sZWFuBQJlTgkAAgEJAKwCAgkAAwEFAmVOAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJlWQMDCQECYUYABgkAAAIFAmFTBQFuBgUCZU0EAmVhCQDMCAIDCQEBIQEFAmVZBgkBAmFCAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGYIcGF5bWVudHMAAQYJAQJhQgECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVhBQJlYQQCZFoJAQJhSwEFAmVYBAJlUAkAkQMCCAUCZGYIcGF5bWVudHMAAAQCZHcIBQJlUAdhc3NldElkBAJkSwgFAmVQBmFtb3VudAQBWAgFAmRmBmNhbGxlcgQBWQgFAmRmDXRyYW5zYWN0aW9uSWQEAmVaCQECZFkFBQJkWgUCZEsFAmR3BQFYBQFZBAJmYQgFAmVaAl8xBAJjUAgFAmVaAl8yBAJkdAgFAmVaAl8zBAJlUwgFAmVaAl80BAJkbgMDCQBmAgUCZUsAAAkAZgIFAmVLBQJmYQcJAQJhQgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZUsFA25pbAIABQJmYQQCZmIJAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZEsFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHcFAmRLBQNuaWwDCQAAAgUCZmIFAmZiBAJmYwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJkbgUCZFoFA25pbAQCZVYDCQBmAgUCZHQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRQUCZHQFAmRaBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY1AFAmZjBQJlVgUCZG4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBEWdldE9uZVRrblJFQURPTkxZAgJkWgJkSwQCZmQJAQJkWQUJAQJhSwEFAmRaBQJkSwUCYVQFBHVuaXQFBHVuaXQEAmZhCAUCZmQCXzEEAmNQCAUCZmQCXzIEAmR0CAUCZmQCXzMEAmVTCAUCZmQCXzQJAJQKAgUDbmlsCQCVCgMFAmZhBQJkdAUCZVMCZGYBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZlAmVYAmVLBAJlTQoAAmVOCQD8BwQFAmFEAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZU4CB0Jvb2xlYW4FAmVOCQACAQkArAICCQADAQUCZU4CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmVZAwMJAQJhRgAGCQAAAgUCYVMFAW4GBQJlTQQCZWEJAMwIAgMJAQEhAQUCZVkGCQECYUIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwAABgkBAmFCAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWEFAmVhBAJkWgkBAmFLAQUCZVgEAVgIBQJkZgZjYWxsZXIEAVkIBQJkZg10cmFuc2FjdGlvbklkBAJmZgkA/AcEBQJhWgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFUCQDMCAIFAmZlBQNuaWwFA25pbAMJAAACBQJmZgUCZmYEAmZnCQECZFkFBQJkWgUCZmUFAmFUBQFYBQFZBAJmYQgFAmZnAl8xBAJjUAgFAmZnAl8yBAJkdAgFAmZnAl8zBAJlUwgFAmZnAl80BAJkbgMDCQBmAgUCZUsAAAkAZgIFAmVLBQJmYQcJAQJhQgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZUsFA25pbAIABQJmYQQCZmIJAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZmUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVQFAmZlBQNuaWwDCQAAAgUCZmIFAmZiBAJmYwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZGYGY2FsbGVyBQJkbgUCZFoFA25pbAQCZVYDCQBmAgUCZHQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRQUCZHQFAmRaBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY1AFAmZjBQJlVgUCZG4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBA2dldAAEAmNBCQECZGUBBQJkZgQCZmgIBQJjQQJfMQQCY2gIBQJjQQJfMgQCZGgIBQJjQQJfMwQCYlAIBQJjQQJfNAQCY2kIBQJjQQJfNQQCZmkJAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZGgFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlAFAmRoBQNuaWwDCQAAAgUCZmkFAmZpBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEJZ2V0Tm9MZXNzAgJmagJmawQCY0EJAQJkZQEFAmRmBAJjZwgFAmNBAl8xBAJjaAgFAmNBAl8yBAJkaAgFAmNBAl8zBAJiUAgFAmNBAl80BAJjaQgFAmNBAl81AwkAZgIFAmZqBQJjZwkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY2cCAyA8IAkApAMBBQJmagMJAGYCBQJmawUCY2gJAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjaAIDIDwgCQCkAwEFAmZrBAJmaQkA/AcEBQJhRAIEYnVybgkAzAgCBQJkaAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiUAUCZGgFA25pbAMJAAACBQJmaQUCZmkFAmNpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQ11bnN0YWtlQW5kR2V0AQJkbgQCZmwDCQECIT0CCQCQAwEIBQJkZghwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmbAUCZmwEAmJFCQECYUgABAJiUgkA2QQBCQCRAwIFAmJFBQFxBAJmZgkA/AcEBQJhWgIHdW5zdGFrZQkAzAgCCQDYBAEFAmJSCQDMCAIFAmRuBQNuaWwFA25pbAMJAAACBQJmZgUCZmYEAmNBCQECYk4ECQDYBAEIBQJkZg10cmFuc2FjdGlvbklkCQDYBAEFAmJSBQJkbggFAmRmBmNhbGxlcgQCYlUJAQ1wYXJzZUludFZhbHVlAQgFAmNBAl85BAJjaQgFAmNBA18xMAQCZm0DAwkBAmFGAAYJAAACBQJiVQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYlUGAwkAAAIFAmZtBQJmbQQCZmkJAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZG4FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmRuBQNuaWwDCQAAAgUCZmkFAmZpBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgETdW5zdGFrZUFuZEdldE5vTGVzcwMCZmUCZm4CZmsEAmVZAwkBAmFGAAYJAAACBQJhUwUBbgQCZWEJAMwIAgMJAQEhAQUCZVkGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGYIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlYQUCZWEEAmZmCQD8BwQFAmFaAgd1bnN0YWtlCQDMCAIJANgEAQUCYVQJAMwIAgUCZmUFA25pbAUDbmlsAwkAAAIFAmZmBQJmZgQCY0EJAQJiTgQJANgEAQgFAmRmDXRyYW5zYWN0aW9uSWQJANgEAQUCYVQFAmZlCAUCZGYGY2FsbGVyBAJjZwgFAmNBAl8xBAJjaAgFAmNBAl8yBAJjaQgFAmNBA18xMAQCZm8JAMwIAgMJAGcCBQJjZwUCZm4GCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZm4FA25pbAIACQDMCAIDCQBnAgUCY2gFAmZrBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmsFA25pbAIABQNuaWwDCQAAAgUCZm8FAmZvBAJmaQkA/AcEBQJhRAIEYnVybgkAzAgCBQJmZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhVAUCZmUFA25pbAMJAAACBQJmaQUCZmkFAmNpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQhhY3RpdmF0ZQICZnACZnEDCQECIT0CCQClCAEIBQJkZgZjYWxsZXIJAKUIAQUCYUQJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQJmcAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWIABQJmcQUDbmlsAgdzdWNjZXNzAmRmARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhSAACZGYBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJyCQCUCgIFA25pbAkBAmJxAQUCYnICZGYBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJ5AmJ6AmJEBAJiTQkBAmJDAwUCYnkFAmJ6BQJiRAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmJNAAAJAMwIAgkApgMBCQCRAwIFAmJNAAEJAMwIAgkApgMBCQCRAwIFAmJNAAIFA25pbAJkZgEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRmARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFIAUkJAJQKAgUDbmlsCQEBRwIJAKcDAQUBSAUBSQJkZgEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJidAJidQkAlAoCBQNuaWwJAKYDAQkBAmJzAgkApwMBBQJidAkApwMBBQJidQJkZgEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmJPAmNrAmNsAmNtAmNuAmNvAVgCY3ACY3EJAJQKAgUDbmlsCQECY2oJBQJiTwUCY2sFAmNsBQJjbQUCY24FAmNvBQFYBQJjcAUCY3ECZGYBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJiTwJiUAJiUQFYBAJjQQkBAmJOBAUCYk8FAmJQBQJiUQkBEUBleHRyTmF0aXZlKDEwNjIpAQUBWAkAlAoCBQNuaWwJAJwKCggFAmNBAl8xCAUCY0ECXzIIBQJjQQJfMwgFAmNBAl80CAUCY0ECXzUIBQJjQQJfNggFAmNBAl83CQCmAwEIBQJjQQJfOAgFAmNBAl85CAUCY0EDXzEwAmRmAQ1zdGF0c1JFQURPTkxZAAQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNTCQCRAwIFAmJFBQFyBAJjVAkAkQMCBQJiRQUBcwQCY3QJAJEDAgUCYkUFAXYEAmN1CQCRAwIFAmJFBQF3BAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJmcggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNVCQECYnEBBQJjUwQCY1YJAQJicQEFAmNUBAJmcwMJAAACBQJmcgAACQDMCAIFAWUJAMwIAgUBZQkAzAgCBQFlBQNuaWwJAQJiQwMFAmNVBQJjVgUCZnIEAmNiAAAEAmZ0CQEBRwIJAJEDAgUCZnMAAQUBYgQCZnUJAQFHAgkAkQMCBQJmcwACBQFiBAJmdgkBBXZhbHVlAQkAmggCBQJhRAkBAmFwAQkApQgBBQR0aGlzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1UJAMwIAgkApAMBBQJjVgkAzAgCCQCkAwEFAmZyCQDMCAIJAKQDAQUCY2IJAMwIAgkApAMBBQJmdAkAzAgCCQCkAwEFAmZ1CQDMCAIJAKQDAQUCZnYFA25pbAUBagJkZgEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmNsBAJiRQkBAmFIAAQCYlIJANkEAQkAkQMCBQJiRQUBcQQCY3IJAJEDAgUCYkUFAXIEAmJTCQDZBAEFAmNyBAJjcwkAkQMCBQJiRQUBcwQCYlQJANkEAQUCY3MEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmJVCQCRAwIFAmJFBQFwBAJmcggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNVCQECYnEBBQJjcgQCY1YJAQJicQEFAmNzBAJiQQkBAUQCBQJjVQUCYkYEAmJCCQEBRAIFAmNWBQJiRwQCY2EDCQAAAgUCZnIAAAUBZQkBAmJzAgUCYkIFAmJBBAJjeAkBAUQCBQJjbAUCYkYEAmN5CQC8AgMFAmN4BQJjYQUBZAQCY24JAQFHAgUCY3kFAmJHBAJkbAkBAmNqCQIAAKDCHgUCY2wFAmJTBQJjbgUCYlQCAAYHBAJjSQgFAmRsAl8xBAJmdwgFAmRsAl8zBAJiVwgFAmRsAl80BAJiWQgFAmRsAl81BAJiVggFAmRsAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjSQkAzAgCCQCkAwEJAQFHAgUCY2EFAWIJAMwIAgkApAMBBQJiVwkAzAgCCQCkAwEFAmJZCQDMCAIJAKQDAQUCYlYJAMwIAgUCYlUJAMwIAgkApAMBBQJjbAkAzAgCCQCkAwEFAmNuBQNuaWwFAWoCZGYBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmNuBAJiRQkBAmFIAAQCYlIJANkEAQkAkQMCBQJiRQUBcQQCY3IJAJEDAgUCYkUFAXIEAmJTCQDZBAEFAmNyBAJjcwkAkQMCBQJiRQUBcwQCYlQJANkEAQUCY3MEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmJVCQCRAwIFAmJFBQFwBAJmcggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZ4CQECYnEBBQJjcgQCZnkJAQJicQEFAmNzBAJmegkBAUQCBQJmeAUCYkYEAmZBCQEBRAIFAmZ5BQJiRwQCY2EDCQAAAgUCZnIAAAUBZQkBAmJzAgUCZkEFAmZ6BAJjeQkBAUQCBQJjbgUCYkcEAmN4CQC8AgMFAmN5BQFkBQJjYQQCY2wJAQFHAgUCY3gFAmJGBAJkbAkBAmNqCQIAAKDCHgUCY2wFAmJTBQJjbgUCYlQCAAYHBAJjSQgFAmRsAl8xBAJmdwgFAmRsAl8zBAJiVwgFAmRsAl80BAJiWQgFAmRsAl81BAJiVggFAmRsAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjSQkAzAgCCQCkAwEJAQFHAgUCY2EFAWIJAMwIAgkApAMBBQJiVwkAzAgCCQCkAwEFAmJZCQDMCAIJAKQDAQUCYlYJAMwIAgUCYlUJAMwIAgkApAMBBQJjbAkAzAgCCQCkAwEFAmNuBQNuaWwFAWoCZGYBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmZCAmZDBAJjQQkBAmJOBAIABQJmQgUCZkMFBHRoaXMEAmNnCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmJXCAUCY0ECXzUEAmJZCAUCY0ECXzYEAmJWCAUCY0ECXzcEAmNiCAUCY0ECXzgEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJjQQJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNnCQDMCAIJAKQDAQUCY2gJAMwIAgkApAMBBQJiVwkAzAgCCQCkAwEFAmJZCQDMCAIJAKQDAQUCYlYJAMwIAgkApgMBBQJjYgkAzAgCCQCkAwEFAmJVBQNuaWwFAWoBAmZEAQJmRQAEAmZGBAJkcQkBAmVxAAMJAAECBQJkcQIKQnl0ZVZlY3RvcgQCZXYFAmRxBQJldgMJAAECBQJkcQIEVW5pdAgFAmZED3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJkcQUCZkQDCQABAgUCZHECBU9yZGVyBAJjUgUCZHEEAmZHCQECYUcABAJhdQkBAmNRAQUCY1IEAmF2CQD0AwMIBQJjUglib2R5Qnl0ZXMJAJEDAggFAmNSBnByb29mcwAACAUCY1IPc2VuZGVyUHVibGljS2V5BAJhdwkA9AMDCAUCY1IJYm9keUJ5dGVzCQCRAwIIBQJjUgZwcm9vZnMAAQUCZkcDAwMFAmF1BQJhdgcFAmF3BwYJAQJhdAMFAmF1BQJhdgUCYXcDCQABAgUCZHECFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlcgUCZHEEAmZICQD2AwEJAQV2YWx1ZQEIBQJlcgZzY3JpcHQEAmZJCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUQJAQJhcgAEAmZKCQDxBwEFBHRoaXMDAwkAAAIFAmZJBQJmSAkBAiE9AgUCZkoFAmZIBwYJAPQDAwgFAmZECWJvZHlCeXRlcwkAkQMCCAUCZkQGcHJvb2ZzAAAFAmZGCQD0AwMIBQJmRAlib2R5Qnl0ZXMJAJEDAggFAmZEBnByb29mcwAABQJmRq+655Q=", "chainId": 84, "height": 2306431, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EcUVyUsMbjbEoiGazRHiRGbQg3qDsrnV9E2qW5kJxpna Next: Gshs8AobPhsBQbTWamkwYdgXX83qQyigBbB5Pqm8xobe Diff:
OldNewDifferences
107107
108108 let ac = "%s__fee"
109109
110-let ad = fraction(50, b, 10000)
110+let ad = fraction(10, b, 10000)
111111
112112 let ae = valueOrElse(getInteger(this, ac), ad)
113113
981981
982982
983983 @Callable(df)
984-func activate (fn,fo) = if ((toString(df.caller) != toString(aD)))
984+func unstakeAndGetNoLess (fe,fn,fk) = {
985+ let eY = if (aF())
986+ then true
987+ else (aS == n)
988+ let ea = [if (!(eY))
989+ then true
990+ else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
991+ then true
992+ else throw("no payments are expected")]
993+ if ((ea == ea))
994+ then {
995+ let ff = invoke(aZ, "unstake", [toBase58String(aT), fe], nil)
996+ if ((ff == ff))
997+ then {
998+ let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fe, df.caller)
999+ let cg = cA._1
1000+ let ch = cA._2
1001+ let ci = cA._10
1002+ let fo = [if ((cg >= fn))
1003+ then true
1004+ else throw(makeString(["amount asset amount to receive is less than ", toString(fn)], "")), if ((ch >= fk))
1005+ then true
1006+ else throw(makeString(["price asset amount to receive is less than ", toString(fk)], ""))]
1007+ if ((fo == fo))
1008+ then {
1009+ let fi = invoke(aD, "burn", [fe], [AttachedPayment(aT, fe)])
1010+ if ((fi == fi))
1011+ then ci
1012+ else throw("Strict value is not equal to itself.")
1013+ }
1014+ else throw("Strict value is not equal to itself.")
1015+ }
1016+ else throw("Strict value is not equal to itself.")
1017+ }
1018+ else throw("Strict value is not equal to itself.")
1019+ }
1020+
1021+
1022+
1023+@Callable(df)
1024+func activate (fp,fq) = if ((toString(df.caller) != toString(aD)))
9851025 then throw("permissions denied")
986- else $Tuple2([StringEntry(aa(), fn), StringEntry(ab(), fo)], "success")
1026+ else $Tuple2([StringEntry(aa(), fp), StringEntry(ab(), fq)], "success")
9871027
9881028
9891029
10431083 let cu = bE[w]
10441084 let bF = parseIntValue(bE[t])
10451085 let bG = parseIntValue(bE[u])
1046- let fp = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1086+ let fr = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
10471087 let cU = bq(cS)
10481088 let cV = bq(cT)
1049- let fq = if ((fp == 0))
1089+ let fs = if ((fr == 0))
10501090 then [e, e, e]
1051- else bC(cU, cV, fp)
1091+ else bC(cU, cV, fr)
10521092 let cb = 0
1053- let fr = G(fq[1], b)
1054- let fs = G(fq[2], b)
1055- let ft = value(getInteger(aD, ap(toString(this))))
1056- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fp), toString(cb), toString(fr), toString(fs), toString(ft)], j))
1093+ let ft = G(fs[1], b)
1094+ let fu = G(fs[2], b)
1095+ let fv = value(getInteger(aD, ap(toString(this))))
1096+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fr), toString(cb), toString(ft), toString(fu), toString(fv)], j))
10571097 }
10581098
10591099
10691109 let bF = parseIntValue(bE[t])
10701110 let bG = parseIntValue(bE[u])
10711111 let bU = bE[p]
1072- let fp = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1112+ let fr = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
10731113 let cU = bq(cr)
10741114 let cV = bq(cs)
10751115 let bA = D(cU, bF)
10761116 let bB = D(cV, bG)
1077- let ca = if ((fp == 0))
1117+ let ca = if ((fr == 0))
10781118 then e
10791119 else bs(bB, bA)
10801120 let cx = D(cl, bF)
10821122 let cn = G(cy, bG)
10831123 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
10841124 let cI = dl._1
1085- let fu = dl._3
1125+ let fw = dl._3
10861126 let bW = dl._4
10871127 let bY = dl._5
10881128 let bV = dl._6
11021142 let bF = parseIntValue(bE[t])
11031143 let bG = parseIntValue(bE[u])
11041144 let bU = bE[p]
1105- let fp = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1106- let fv = bq(cr)
1107- let fw = bq(cs)
1108- let fx = D(fv, bF)
1109- let fy = D(fw, bG)
1110- let ca = if ((fp == 0))
1145+ let fr = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1146+ let fx = bq(cr)
1147+ let fy = bq(cs)
1148+ let fz = D(fx, bF)
1149+ let fA = D(fy, bG)
1150+ let ca = if ((fr == 0))
11111151 then e
1112- else bs(fy, fx)
1152+ else bs(fA, fz)
11131153 let cy = D(cn, bG)
11141154 let cx = fraction(cy, d, ca)
11151155 let cl = G(cx, bF)
11161156 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11171157 let cI = dl._1
1118- let fu = dl._3
1158+ let fw = dl._3
11191159 let bW = dl._4
11201160 let bY = dl._5
11211161 let bV = dl._6
11251165
11261166
11271167 @Callable(df)
1128-func evaluateGetREADONLY (fz,fA) = {
1129- let cA = bN("", fz, fA, this)
1168+func evaluateGetREADONLY (fB,fC) = {
1169+ let cA = bN("", fB, fC, this)
11301170 let cg = cA._1
11311171 let ch = cA._2
11321172 let bW = cA._5
11381178 }
11391179
11401180
1141-@Verifier(fB)
1142-func fC () = {
1143- let fD = {
1181+@Verifier(fD)
1182+func fE () = {
1183+ let fF = {
11441184 let dq = eq()
11451185 if ($isInstanceOf(dq, "ByteVector"))
11461186 then {
11481188 ev
11491189 }
11501190 else if ($isInstanceOf(dq, "Unit"))
1151- then fB.senderPublicKey
1191+ then fD.senderPublicKey
11521192 else throw("Match error")
11531193 }
1154- let dq = fB
1194+ let dq = fD
11551195 if ($isInstanceOf(dq, "Order"))
11561196 then {
11571197 let cR = dq
1158- let fE = aG()
1198+ let fG = aG()
11591199 let au = cQ(cR)
11601200 let av = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1161- let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fE)
1201+ let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fG)
11621202 if (if (if (au)
11631203 then av
11641204 else false)
11701210 else if ($isInstanceOf(dq, "SetScriptTransaction"))
11711211 then {
11721212 let er = dq
1173- let fF = blake2b256(value(er.script))
1174- let fG = fromBase64String(value(getString(aD, ar())))
1175- let fH = scriptHash(this)
1176- if (if ((fG == fF))
1177- then (fH != fF)
1213+ let fH = blake2b256(value(er.script))
1214+ let fI = fromBase64String(value(getString(aD, ar())))
1215+ let fJ = scriptHash(this)
1216+ if (if ((fI == fH))
1217+ then (fJ != fH)
11781218 else false)
11791219 then true
1180- else sigVerify(fB.bodyBytes, fB.proofs[0], fD)
1220+ else sigVerify(fD.bodyBytes, fD.proofs[0], fF)
11811221 }
1182- else sigVerify(fB.bodyBytes, fB.proofs[0], fD)
1222+ else sigVerify(fD.bodyBytes, fD.proofs[0], fF)
11831223 }
11841224
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
110-let ad = fraction(50, b, 10000)
110+let ad = fraction(10, b, 10000)
111111
112112 let ae = valueOrElse(getInteger(this, ac), ad)
113113
114114 func af () = "%s__factoryConfig"
115115
116116
117117 func ag () = "%s%s__matcher__publicKey"
118118
119119
120120 func ah (ai) = (("%s%s%s__" + ai) + "__mappings__poolContract2LpAsset")
121121
122122
123123 func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
124124
125125
126126 func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
127127
128128
129129 func ao () = "%s__shutdown"
130130
131131
132132 func ap (aq) = ("%s%s__poolWeight__" + aq)
133133
134134
135135 func ar () = "%s__allowedLpScriptHash"
136136
137137
138138 let as = "%s__feeCollectorAddress"
139139
140140 func at (au,av,aw) = throw(((((("order validation failed: orderValid=" + toString(au)) + " senderValid=") + toString(av)) + " matcherValid=") + toString(aw)))
141141
142142
143143 func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " is not defined"], ""))
144144
145145
146146 func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " is not defined"], ""))
147147
148148
149149 func aB (aC) = throw(makeString(["lp.ride:", aC], " "))
150150
151151
152152 let aD = addressFromStringValue(ax(this, P()))
153153
154154 let aE = addressFromStringValue(ax(aD, as))
155155
156156 func aF () = valueOrElse(getBoolean(aD, ao()), false)
157157
158158
159159 func aG () = fromBase58String(ax(aD, ag()))
160160
161161
162162 func aH () = {
163163 let aI = ax(this, aa())
164164 let aJ = ax(this, ab())
165165 let al = aA(aD, am(aJ))
166166 let ak = aA(aD, am(aI))
167167 split(ax(aD, aj(toString(ak), toString(al))), j)
168168 }
169169
170170
171171 func aK (aL) = if ((aL == i))
172172 then unit
173173 else fromBase58String(aL)
174174
175175
176176 func aM (aL) = if ((aL == unit))
177177 then i
178178 else toBase58String(value(aL))
179179
180180
181181 func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
182182
183183
184184 let aP = aN(aH())
185185
186186 let aQ = aP
187187
188188 let aR = aQ._1
189189
190190 let aS = aQ._2
191191
192192 let aT = aQ._3
193193
194194 let aU = aQ._4
195195
196196 let aV = aQ._5
197197
198198 let aW = aQ._6
199199
200200 let aX = aQ._7
201201
202202 func aY () = split(ax(aD, af()), j)
203203
204204
205205 let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
206206
207207 let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
208208
209209 func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
210210
211211
212212 func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
213213
214214
215215 func bq (br) = if ((br == "WAVES"))
216216 then wavesBalance(this).available
217217 else assetBalance(this, fromBase58String(br))
218218
219219
220220 func bs (bt,bu) = fraction(bt, d, bu)
221221
222222
223223 func bv (bw,bx,by,bz) = {
224224 let bA = D(by, bw)
225225 let bB = D(bz, bx)
226226 bs(bB, bA)
227227 }
228228
229229
230230 func bC (by,bz,bD) = {
231231 let bE = aH()
232232 let bF = parseIntValue(bE[t])
233233 let bG = parseIntValue(bE[u])
234234 let bH = bv(bF, bG, by, bz)
235235 let bu = D(by, bF)
236236 let bt = D(bz, bG)
237237 let bI = D(bD, b)
238238 let bJ = bs(bu, bI)
239239 let bK = bs(bt, bI)
240240 [bH, bJ, bK]
241241 }
242242
243243
244244 func bL (by,bz,bD) = {
245245 let bM = bC(by, bz, bD)
246246 [G(bM[0], b), G(bM[1], b), G(bM[2], b)]
247247 }
248248
249249
250250 func bN (bO,bP,bQ,X) = {
251251 let bE = aH()
252252 let bR = bE[q]
253253 let bS = bE[r]
254254 let bT = bE[s]
255255 let bw = parseIntValue(bE[t])
256256 let bx = parseIntValue(bE[u])
257257 let bU = bE[p]
258258 let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
259259 if ((bR != bP))
260260 then throw("Invalid asset passed.")
261261 else {
262262 let bW = bq(bS)
263263 let bX = D(bW, bw)
264264 let bY = bq(bT)
265265 let bZ = D(bY, bx)
266266 let ca = bs(bZ, bX)
267267 let cb = G(ca, b)
268268 let cc = D(bQ, b)
269269 let cd = D(bV, b)
270270 let ce = fraction(bX, cc, cd)
271271 let cf = fraction(bZ, cc, cd)
272272 let cg = G(ce, bw)
273273 let ch = G(cf, bx)
274274 let ci = if ((bO == ""))
275275 then nil
276276 else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
277277 then unit
278278 else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
279279 then unit
280280 else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
281281 $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
282282 }
283283 }
284284
285285
286286 func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
287287 let bE = aH()
288288 let bR = fromBase58String(bE[q])
289289 let cr = bE[r]
290290 let cs = bE[s]
291291 let ct = bE[v]
292292 let cu = bE[w]
293293 let bF = parseIntValue(bE[t])
294294 let bG = parseIntValue(bE[u])
295295 let bU = bE[p]
296296 let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
297297 let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
298298 let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
299299 if (if ((cr != cv))
300300 then true
301301 else (cs != cw))
302302 then throw("Invalid amt or price asset passed.")
303303 else {
304304 let bW = if (cp)
305305 then bq(cr)
306306 else (bq(cr) - cl)
307307 let bY = if (cp)
308308 then bq(cs)
309309 else (bq(cs) - cn)
310310 let cx = D(cl, bF)
311311 let cy = D(cn, bG)
312312 let cz = bs(cy, cx)
313313 let bX = D(bW, bF)
314314 let bZ = D(bY, bG)
315315 let cA = if ((bV == 0))
316316 then {
317317 let ca = e
318318 let cB = e
319319 let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
320320 $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
321321 }
322322 else {
323323 let ca = bs(bZ, bX)
324324 let cB = fraction(O((ca - cz)), d, ca)
325325 let cC = D(ck, b)
326326 if (if ((ca != e))
327327 then (cB > cC)
328328 else false)
329329 then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
330330 else {
331331 let cd = D(bV, b)
332332 let cD = fraction(cx, ca, d)
333333 let cE = fraction(cy, d, ca)
334334 let cF = if ((cD > cy))
335335 then $Tuple2(cE, cy)
336336 else $Tuple2(cx, cD)
337337 let cG = cF._1
338338 let cH = cF._2
339339 let bI = fraction(cd, cH, bZ)
340340 $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
341341 }
342342 }
343343 let cI = cA._1
344344 let cJ = cA._2
345345 let cK = cA._3
346346 let cb = G(cA._4, b)
347347 let cL = G(cA._5, b)
348348 if ((0 >= cI))
349349 then throw("Invalid calculations. LP calculated is less than zero.")
350350 else {
351351 let cM = if (!(cq))
352352 then 0
353353 else cI
354354 let cN = (cl - cJ)
355355 let cO = (cn - cK)
356356 let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
357357 $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
358358 }
359359 }
360360 }
361361
362362
363363 func cQ (cR) = {
364364 let bE = aH()
365365 let cS = bE[r]
366366 let cT = bE[s]
367367 let bU = parseIntValue(bE[p])
368368 let bF = parseIntValue(bE[t])
369369 let bG = parseIntValue(bE[u])
370370 let cU = bq(cS)
371371 let cV = bq(cT)
372372 let ca = if ((cR.orderType == Buy))
373373 then bv(bF, bG, (cU + cR.amount), cV)
374374 else bv(bF, bG, (cU - cR.amount), cV)
375375 let cb = G(ca, b)
376376 if (if (if (aF())
377377 then true
378378 else (bU == m))
379379 then true
380380 else (bU == n))
381381 then throw("Exchange operations disabled")
382382 else {
383383 let cW = cR.assetPair.amountAsset
384384 let cX = if ((cW == unit))
385385 then "WAVES"
386386 else toBase58String(value(cW))
387387 let cY = cR.assetPair.priceAsset
388388 let cZ = if ((cY == unit))
389389 then "WAVES"
390390 else toBase58String(value(cY))
391391 if (if ((cX != cS))
392392 then true
393393 else (cZ != cT))
394394 then throw("Wrong order assets.")
395395 else {
396396 let da = cR.price
397397 let db = fraction(b, bG, bF)
398398 let dc = J(da, b, db)
399399 let dd = if ((cR.orderType == Buy))
400400 then (cb >= dc)
401401 else (dc >= cb)
402402 true
403403 }
404404 }
405405 }
406406
407407
408408 func de (df) = if ((size(df.payments) != 1))
409409 then throw("exactly 1 payment is expected")
410410 else {
411411 let dg = value(df.payments[0])
412412 let bP = value(dg.assetId)
413413 let dh = dg.amount
414414 let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
415415 let cg = cA._1
416416 let ch = cA._2
417417 let bU = parseIntValue(cA._9)
418418 let ci = cA._10
419419 if (if (aF())
420420 then true
421421 else (bU == n))
422422 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
423423 else $Tuple5(cg, ch, dh, bP, ci)
424424 }
425425
426426
427427 func di (df,ck,cq) = if ((size(df.payments) != 2))
428428 then throw("exactly 2 payments are expected")
429429 else {
430430 let dj = value(df.payments[0])
431431 let dk = value(df.payments[1])
432432 let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
433433 let bU = parseIntValue(dl._8)
434434 if (if (if (aF())
435435 then true
436436 else (bU == l))
437437 then true
438438 else (bU == n))
439439 then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
440440 else dl
441441 }
442442
443443
444444 func dm (dn) = {
445445 let do = invoke(aD, "emit", [dn], nil)
446446 if ((do == do))
447447 then {
448448 let dp = {
449449 let dq = do
450450 if ($isInstanceOf(dq, "Address"))
451451 then {
452452 let dr = dq
453453 invoke(dr, "emit", [dn], nil)
454454 }
455455 else unit
456456 }
457457 if ((dp == dp))
458458 then dn
459459 else throw("Strict value is not equal to itself.")
460460 }
461461 else throw("Strict value is not equal to itself.")
462462 }
463463
464464
465465 func ds (dn) = {
466466 let dt = fraction(dn, ae, b)
467467 $Tuple2((dn - dt), dt)
468468 }
469469
470470
471471 func du (dv,dw,X,Y) = {
472472 let dx = (Y == unit)
473473 let dy = bq(aM(aU))
474474 let dz = bq(aM(aV))
475475 let dA = if ((dw == aU))
476476 then true
477477 else if ((dw == aV))
478478 then false
479479 else aB("invalid asset")
480480 let dB = if (dx)
481481 then $Tuple2(dy, dz)
482482 else if (dA)
483483 then $Tuple2((dy - dv), dz)
484484 else $Tuple2(dy, (dz - dv))
485485 let dC = dB._1
486486 let dD = dB._2
487487 let dE = if (dA)
488488 then $Tuple2(dv, 0)
489489 else $Tuple2(0, dv)
490490 let dF = dE._1
491491 let dG = dE._2
492492 let dH = ds(dF)._1
493493 let dI = ds(dG)._1
494494 let dJ = ds(dv)
495495 let dK = dJ._1
496496 let dt = dJ._2
497497 let dL = (dC + dH)
498498 let dM = (dD + dI)
499499 let dN = bs(D(dM, aX), D(dL, aW))
500500 let dO = G(dN, b)
501501 let dP = if (dA)
502502 then dC
503503 else dD
504504 let dQ = toBigInt(dP)
505505 let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
506506 let dS = if ((dR > f))
507507 then true
508508 else aB("initial deposit requires all coins")
509509 if ((dS == dS))
510510 then {
511511 let dT = toBigInt(dK)
512512 let dU = max([0, toInt(((dR * (sqrtBigInt((d + ((dT * d) / dQ)), 18, 18, DOWN) - d)) / d))])
513513 let cP = if (dx)
514514 then nil
515515 else [IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dF, dG, dU, dO, 0, 0, height, lastBlock.timestamp, 0, 0))]
516516 let dV = bs(D(dD, aX), D(dC, aW))
517517 let dW = G(dV, b)
518518 let dX = N((((dO - dW) * b) / dW))
519519 $Tuple4(dU, cP, dt, dX)
520520 }
521521 else throw("Strict value is not equal to itself.")
522522 }
523523
524524
525525 func dY (dZ,dK,dw,X,Y) = {
526526 let dx = (Y == unit)
527527 let ea = [if ((dw == aT))
528528 then true
529529 else aB("invalid lp asset")]
530530 if ((ea == ea))
531531 then {
532532 let eb = if ((dZ == aU))
533533 then true
534534 else if ((dZ == aV))
535535 then false
536536 else aB("invalid asset")
537537 let ec = if (eb)
538538 then toBigInt(bq(aM(aU)))
539539 else toBigInt(bq(aM(aV)))
540540 let ed = bq(aM(aU))
541541 let ee = bq(aM(aV))
542542 let ef = if (eb)
543543 then ed
544544 else ee
545545 let eg = toBigInt(ef)
546546 let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
547547 let eh = toBigInt(dK)
548548 let ei = max([0, toInt(((ec * (d - pow((d - ((eh * d) / dR)), 18, h, 0, 18, DOWN))) / d))])
549549 let ej = ds(ei)
550550 let ek = ej._1
551551 let dt = ej._2
552552 let el = if (eb)
553553 then $Tuple4(ek, 0, (ed - ei), ee)
554554 else $Tuple4(0, ek, ed, (ee - ei))
555555 let em = el._1
556556 let en = el._2
557557 let eo = el._3
558558 let ep = el._4
559559 let dN = bs(D(ep, aX), D(eo, aW))
560560 let dO = G(dN, b)
561561 let cP = if (dx)
562562 then nil
563563 else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(em, en, dK, dO, height, lastBlock.timestamp)), IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO)]
564564 let dV = bs(D(ee, aX), D(ed, aW))
565565 let dW = G(dV, b)
566566 let dX = N((((dO - dW) * b) / dW))
567567 $Tuple4(ek, cP, dt, dX)
568568 }
569569 else throw("Strict value is not equal to itself.")
570570 }
571571
572572
573573 func eq () = {
574574 let dq = getString(Q())
575575 if ($isInstanceOf(dq, "String"))
576576 then {
577577 let er = dq
578578 fromBase58String(er)
579579 }
580580 else if ($isInstanceOf(dq, "Unit"))
581581 then unit
582582 else throw("Match error")
583583 }
584584
585585
586586 func es () = {
587587 let dq = getString(R())
588588 if ($isInstanceOf(dq, "String"))
589589 then {
590590 let er = dq
591591 fromBase58String(er)
592592 }
593593 else if ($isInstanceOf(dq, "Unit"))
594594 then unit
595595 else throw("Match error")
596596 }
597597
598598
599599 func et (df) = {
600600 let eu = throw("Permission denied")
601601 let dq = eq()
602602 if ($isInstanceOf(dq, "ByteVector"))
603603 then {
604604 let ev = dq
605605 if ((df.callerPublicKey == ev))
606606 then true
607607 else eu
608608 }
609609 else if ($isInstanceOf(dq, "Unit"))
610610 then if ((df.caller == this))
611611 then true
612612 else eu
613613 else throw("Match error")
614614 }
615615
616616
617617 @Callable(df)
618618 func setManager (ew) = {
619619 let ex = et(df)
620620 if ((ex == ex))
621621 then {
622622 let ey = fromBase58String(ew)
623623 if ((ey == ey))
624624 then [StringEntry(R(), ew)]
625625 else throw("Strict value is not equal to itself.")
626626 }
627627 else throw("Strict value is not equal to itself.")
628628 }
629629
630630
631631
632632 @Callable(df)
633633 func confirmManager () = {
634634 let ez = es()
635635 let eA = if (isDefined(ez))
636636 then true
637637 else throw("No pending manager")
638638 if ((eA == eA))
639639 then {
640640 let eB = if ((df.callerPublicKey == value(ez)))
641641 then true
642642 else throw("You are not pending manager")
643643 if ((eB == eB))
644644 then [StringEntry(Q(), toBase58String(value(ez))), DeleteEntry(R())]
645645 else throw("Strict value is not equal to itself.")
646646 }
647647 else throw("Strict value is not equal to itself.")
648648 }
649649
650650
651651
652652 @Callable(df)
653653 func put (ck,eC) = if ((0 > ck))
654654 then throw("Invalid slippageTolerance passed")
655655 else {
656656 let dl = di(df, ck, true)
657657 let cM = dl._2
658658 let bR = dl._7
659659 let ci = dl._9
660660 let cN = dl._10
661661 let cO = dl._11
662662 let eD = dl._12
663663 let eE = dl._13
664664 let do = invoke(aD, "emit", [cM], nil)
665665 if ((do == do))
666666 then {
667667 let dp = {
668668 let dq = do
669669 if ($isInstanceOf(dq, "Address"))
670670 then {
671671 let dr = dq
672672 invoke(dr, "emit", [cM], nil)
673673 }
674674 else unit
675675 }
676676 if ((dp == dp))
677677 then {
678678 let eF = if ((cN > 0))
679679 then invoke(ba, "put", nil, [AttachedPayment(eD, cN)])
680680 else nil
681681 if ((eF == eF))
682682 then {
683683 let eG = if ((cO > 0))
684684 then invoke(ba, "put", nil, [AttachedPayment(eE, cO)])
685685 else nil
686686 if ((eG == eG))
687687 then {
688688 let eH = if (eC)
689689 then {
690690 let eI = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
691691 if ((eI == eI))
692692 then nil
693693 else throw("Strict value is not equal to itself.")
694694 }
695695 else [ScriptTransfer(df.caller, cM, bR)]
696696 (ci ++ eH)
697697 }
698698 else throw("Strict value is not equal to itself.")
699699 }
700700 else throw("Strict value is not equal to itself.")
701701 }
702702 else throw("Strict value is not equal to itself.")
703703 }
704704 else throw("Strict value is not equal to itself.")
705705 }
706706
707707
708708
709709 @Callable(df)
710710 func putForFree (eJ) = if ((0 > eJ))
711711 then throw("Invalid value passed")
712712 else {
713713 let dl = di(df, eJ, false)
714714 dl._9
715715 }
716716
717717
718718
719719 @Callable(df)
720720 func putOneTkn (eK,eL) = {
721721 let eM = {
722722 let eN = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
723723 if ($isInstanceOf(eN, "Boolean"))
724724 then eN
725725 else throw(($getType(eN) + " couldn't be cast to Boolean"))
726726 }
727727 let eO = if (if (if (aF())
728728 then true
729729 else (aS == l))
730730 then true
731731 else (aS == n))
732732 then true
733733 else eM
734734 let ea = [if (!(eO))
735735 then true
736736 else aB("put operation is blocked by admin"), if ((size(df.payments) == 1))
737737 then true
738738 else aB("exactly 1 payment are expected")]
739739 if ((ea == ea))
740740 then {
741741 let eP = df.payments[0]
742742 let dw = eP.assetId
743743 let dv = eP.amount
744744 let X = df.caller
745745 let Y = df.transactionId
746746 let eQ = du(dv, dw, X, Y)
747747 let eR = eQ._1
748748 let cP = eQ._2
749749 let dt = eQ._3
750750 let eS = eQ._4
751751 let eT = if (if ((eK > 0))
752752 then (eK > eR)
753753 else false)
754754 then aB(makeString(["amount to receive is less than ", toString(eK)], ""))
755755 else eR
756756 let do = dm(eT)
757757 if ((do == do))
758758 then {
759759 let eH = if (eL)
760760 then {
761761 let eU = invoke(aZ, "stake", nil, [AttachedPayment(aT, eT)])
762762 if ((eU == eU))
763763 then nil
764764 else throw("Strict value is not equal to itself.")
765765 }
766766 else [ScriptTransfer(df.caller, eT, aT)]
767767 let eV = if ((dt > 0))
768768 then [ScriptTransfer(aE, dt, dw)]
769769 else nil
770770 $Tuple2(((cP ++ eH) ++ eV), eT)
771771 }
772772 else throw("Strict value is not equal to itself.")
773773 }
774774 else throw("Strict value is not equal to itself.")
775775 }
776776
777777
778778
779779 @Callable(df)
780780 func putOneTknREADONLY (dw,dv) = {
781781 let eW = du(dv, aK(dw), unit, unit)
782782 let eR = eW._1
783783 let cP = eW._2
784784 let dt = eW._3
785785 let eS = eW._4
786786 $Tuple2(nil, $Tuple3(eR, dt, eS))
787787 }
788788
789789
790790
791791 @Callable(df)
792792 func getOneTkn (eX,eK) = {
793793 let eM = {
794794 let eN = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
795795 if ($isInstanceOf(eN, "Boolean"))
796796 then eN
797797 else throw(($getType(eN) + " couldn't be cast to Boolean"))
798798 }
799799 let eY = if (if (aF())
800800 then true
801801 else (aS == n))
802802 then true
803803 else eM
804804 let ea = [if (!(eY))
805805 then true
806806 else aB("get operation is blocked by admin"), if ((size(df.payments) == 1))
807807 then true
808808 else aB("exactly 1 payment are expected")]
809809 if ((ea == ea))
810810 then {
811811 let dZ = aK(eX)
812812 let eP = df.payments[0]
813813 let dw = eP.assetId
814814 let dK = eP.amount
815815 let X = df.caller
816816 let Y = df.transactionId
817817 let eZ = dY(dZ, dK, dw, X, Y)
818818 let fa = eZ._1
819819 let cP = eZ._2
820820 let dt = eZ._3
821821 let eS = eZ._4
822822 let dn = if (if ((eK > 0))
823823 then (eK > fa)
824824 else false)
825825 then aB(makeString(["amount to receive is less than ", toString(eK)], ""))
826826 else fa
827827 let fb = invoke(aD, "burn", [dK], [AttachedPayment(dw, dK)])
828828 if ((fb == fb))
829829 then {
830830 let fc = [ScriptTransfer(X, dn, dZ)]
831831 let eV = if ((dt > 0))
832832 then [ScriptTransfer(aE, dt, dZ)]
833833 else nil
834834 $Tuple2(((cP ++ fc) ++ eV), dn)
835835 }
836836 else throw("Strict value is not equal to itself.")
837837 }
838838 else throw("Strict value is not equal to itself.")
839839 }
840840
841841
842842
843843 @Callable(df)
844844 func getOneTknREADONLY (dZ,dK) = {
845845 let fd = dY(aK(dZ), dK, aT, unit, unit)
846846 let fa = fd._1
847847 let cP = fd._2
848848 let dt = fd._3
849849 let eS = fd._4
850850 $Tuple2(nil, $Tuple3(fa, dt, eS))
851851 }
852852
853853
854854
855855 @Callable(df)
856856 func unstakeAndGetOneTkn (fe,eX,eK) = {
857857 let eM = {
858858 let eN = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
859859 if ($isInstanceOf(eN, "Boolean"))
860860 then eN
861861 else throw(($getType(eN) + " couldn't be cast to Boolean"))
862862 }
863863 let eY = if (if (aF())
864864 then true
865865 else (aS == n))
866866 then true
867867 else eM
868868 let ea = [if (!(eY))
869869 then true
870870 else aB("get operation is blocked by admin"), if ((size(df.payments) == 0))
871871 then true
872872 else aB("no payments are expected")]
873873 if ((ea == ea))
874874 then {
875875 let dZ = aK(eX)
876876 let X = df.caller
877877 let Y = df.transactionId
878878 let ff = invoke(aZ, "unstake", [toBase58String(aT), fe], nil)
879879 if ((ff == ff))
880880 then {
881881 let fg = dY(dZ, fe, aT, X, Y)
882882 let fa = fg._1
883883 let cP = fg._2
884884 let dt = fg._3
885885 let eS = fg._4
886886 let dn = if (if ((eK > 0))
887887 then (eK > fa)
888888 else false)
889889 then aB(makeString(["amount to receive is less than ", toString(eK)], ""))
890890 else fa
891891 let fb = invoke(aD, "burn", [fe], [AttachedPayment(aT, fe)])
892892 if ((fb == fb))
893893 then {
894894 let fc = [ScriptTransfer(df.caller, dn, dZ)]
895895 let eV = if ((dt > 0))
896896 then [ScriptTransfer(aE, dt, dZ)]
897897 else nil
898898 $Tuple2(((cP ++ fc) ++ eV), dn)
899899 }
900900 else throw("Strict value is not equal to itself.")
901901 }
902902 else throw("Strict value is not equal to itself.")
903903 }
904904 else throw("Strict value is not equal to itself.")
905905 }
906906
907907
908908
909909 @Callable(df)
910910 func get () = {
911911 let cA = de(df)
912912 let fh = cA._1
913913 let ch = cA._2
914914 let dh = cA._3
915915 let bP = cA._4
916916 let ci = cA._5
917917 let fi = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
918918 if ((fi == fi))
919919 then ci
920920 else throw("Strict value is not equal to itself.")
921921 }
922922
923923
924924
925925 @Callable(df)
926926 func getNoLess (fj,fk) = {
927927 let cA = de(df)
928928 let cg = cA._1
929929 let ch = cA._2
930930 let dh = cA._3
931931 let bP = cA._4
932932 let ci = cA._5
933933 if ((fj > cg))
934934 then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fj)))
935935 else if ((fk > ch))
936936 then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fk)))
937937 else {
938938 let fi = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
939939 if ((fi == fi))
940940 then ci
941941 else throw("Strict value is not equal to itself.")
942942 }
943943 }
944944
945945
946946
947947 @Callable(df)
948948 func unstakeAndGet (dn) = {
949949 let fl = if ((size(df.payments) != 0))
950950 then throw("No payments are expected")
951951 else true
952952 if ((fl == fl))
953953 then {
954954 let bE = aH()
955955 let bR = fromBase58String(bE[q])
956956 let ff = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
957957 if ((ff == ff))
958958 then {
959959 let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
960960 let bU = parseIntValue(cA._9)
961961 let ci = cA._10
962962 let fm = if (if (aF())
963963 then true
964964 else (bU == n))
965965 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
966966 else true
967967 if ((fm == fm))
968968 then {
969969 let fi = invoke(aD, "burn", [dn], [AttachedPayment(bR, dn)])
970970 if ((fi == fi))
971971 then ci
972972 else throw("Strict value is not equal to itself.")
973973 }
974974 else throw("Strict value is not equal to itself.")
975975 }
976976 else throw("Strict value is not equal to itself.")
977977 }
978978 else throw("Strict value is not equal to itself.")
979979 }
980980
981981
982982
983983 @Callable(df)
984-func activate (fn,fo) = if ((toString(df.caller) != toString(aD)))
984+func unstakeAndGetNoLess (fe,fn,fk) = {
985+ let eY = if (aF())
986+ then true
987+ else (aS == n)
988+ let ea = [if (!(eY))
989+ then true
990+ else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
991+ then true
992+ else throw("no payments are expected")]
993+ if ((ea == ea))
994+ then {
995+ let ff = invoke(aZ, "unstake", [toBase58String(aT), fe], nil)
996+ if ((ff == ff))
997+ then {
998+ let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fe, df.caller)
999+ let cg = cA._1
1000+ let ch = cA._2
1001+ let ci = cA._10
1002+ let fo = [if ((cg >= fn))
1003+ then true
1004+ else throw(makeString(["amount asset amount to receive is less than ", toString(fn)], "")), if ((ch >= fk))
1005+ then true
1006+ else throw(makeString(["price asset amount to receive is less than ", toString(fk)], ""))]
1007+ if ((fo == fo))
1008+ then {
1009+ let fi = invoke(aD, "burn", [fe], [AttachedPayment(aT, fe)])
1010+ if ((fi == fi))
1011+ then ci
1012+ else throw("Strict value is not equal to itself.")
1013+ }
1014+ else throw("Strict value is not equal to itself.")
1015+ }
1016+ else throw("Strict value is not equal to itself.")
1017+ }
1018+ else throw("Strict value is not equal to itself.")
1019+ }
1020+
1021+
1022+
1023+@Callable(df)
1024+func activate (fp,fq) = if ((toString(df.caller) != toString(aD)))
9851025 then throw("permissions denied")
986- else $Tuple2([StringEntry(aa(), fn), StringEntry(ab(), fo)], "success")
1026+ else $Tuple2([StringEntry(aa(), fp), StringEntry(ab(), fq)], "success")
9871027
9881028
9891029
9901030 @Callable(df)
9911031 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
9921032
9931033
9941034
9951035 @Callable(df)
9961036 func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
9971037
9981038
9991039
10001040 @Callable(df)
10011041 func calcPricesWrapperREADONLY (by,bz,bD) = {
10021042 let bM = bC(by, bz, bD)
10031043 $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
10041044 }
10051045
10061046
10071047
10081048 @Callable(df)
10091049 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
10101050
10111051
10121052
10131053 @Callable(df)
10141054 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
10151055
10161056
10171057
10181058 @Callable(df)
10191059 func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
10201060
10211061
10221062
10231063 @Callable(df)
10241064 func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
10251065
10261066
10271067
10281068 @Callable(df)
10291069 func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
10301070 let cA = bN(bO, bP, bQ, addressFromStringValue(X))
10311071 $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
10321072 }
10331073
10341074
10351075
10361076 @Callable(df)
10371077 func statsREADONLY () = {
10381078 let bE = aH()
10391079 let bR = fromBase58String(bE[q])
10401080 let cS = bE[r]
10411081 let cT = bE[s]
10421082 let ct = bE[v]
10431083 let cu = bE[w]
10441084 let bF = parseIntValue(bE[t])
10451085 let bG = parseIntValue(bE[u])
1046- let fp = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1086+ let fr = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
10471087 let cU = bq(cS)
10481088 let cV = bq(cT)
1049- let fq = if ((fp == 0))
1089+ let fs = if ((fr == 0))
10501090 then [e, e, e]
1051- else bC(cU, cV, fp)
1091+ else bC(cU, cV, fr)
10521092 let cb = 0
1053- let fr = G(fq[1], b)
1054- let fs = G(fq[2], b)
1055- let ft = value(getInteger(aD, ap(toString(this))))
1056- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fp), toString(cb), toString(fr), toString(fs), toString(ft)], j))
1093+ let ft = G(fs[1], b)
1094+ let fu = G(fs[2], b)
1095+ let fv = value(getInteger(aD, ap(toString(this))))
1096+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fr), toString(cb), toString(ft), toString(fu), toString(fv)], j))
10571097 }
10581098
10591099
10601100
10611101 @Callable(df)
10621102 func evaluatePutByAmountAssetREADONLY (cl) = {
10631103 let bE = aH()
10641104 let bR = fromBase58String(bE[q])
10651105 let cr = bE[r]
10661106 let bS = fromBase58String(cr)
10671107 let cs = bE[s]
10681108 let bT = fromBase58String(cs)
10691109 let bF = parseIntValue(bE[t])
10701110 let bG = parseIntValue(bE[u])
10711111 let bU = bE[p]
1072- let fp = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1112+ let fr = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
10731113 let cU = bq(cr)
10741114 let cV = bq(cs)
10751115 let bA = D(cU, bF)
10761116 let bB = D(cV, bG)
1077- let ca = if ((fp == 0))
1117+ let ca = if ((fr == 0))
10781118 then e
10791119 else bs(bB, bA)
10801120 let cx = D(cl, bF)
10811121 let cy = fraction(cx, ca, d)
10821122 let cn = G(cy, bG)
10831123 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
10841124 let cI = dl._1
1085- let fu = dl._3
1125+ let fw = dl._3
10861126 let bW = dl._4
10871127 let bY = dl._5
10881128 let bV = dl._6
10891129 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
10901130 }
10911131
10921132
10931133
10941134 @Callable(df)
10951135 func evaluatePutByPriceAssetREADONLY (cn) = {
10961136 let bE = aH()
10971137 let bR = fromBase58String(bE[q])
10981138 let cr = bE[r]
10991139 let bS = fromBase58String(cr)
11001140 let cs = bE[s]
11011141 let bT = fromBase58String(cs)
11021142 let bF = parseIntValue(bE[t])
11031143 let bG = parseIntValue(bE[u])
11041144 let bU = bE[p]
1105- let fp = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1106- let fv = bq(cr)
1107- let fw = bq(cs)
1108- let fx = D(fv, bF)
1109- let fy = D(fw, bG)
1110- let ca = if ((fp == 0))
1145+ let fr = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1146+ let fx = bq(cr)
1147+ let fy = bq(cs)
1148+ let fz = D(fx, bF)
1149+ let fA = D(fy, bG)
1150+ let ca = if ((fr == 0))
11111151 then e
1112- else bs(fy, fx)
1152+ else bs(fA, fz)
11131153 let cy = D(cn, bG)
11141154 let cx = fraction(cy, d, ca)
11151155 let cl = G(cx, bF)
11161156 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11171157 let cI = dl._1
1118- let fu = dl._3
1158+ let fw = dl._3
11191159 let bW = dl._4
11201160 let bY = dl._5
11211161 let bV = dl._6
11221162 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
11231163 }
11241164
11251165
11261166
11271167 @Callable(df)
1128-func evaluateGetREADONLY (fz,fA) = {
1129- let cA = bN("", fz, fA, this)
1168+func evaluateGetREADONLY (fB,fC) = {
1169+ let cA = bN("", fB, fC, this)
11301170 let cg = cA._1
11311171 let ch = cA._2
11321172 let bW = cA._5
11331173 let bY = cA._6
11341174 let bV = cA._7
11351175 let cb = cA._8
11361176 let bU = parseIntValue(cA._9)
11371177 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
11381178 }
11391179
11401180
1141-@Verifier(fB)
1142-func fC () = {
1143- let fD = {
1181+@Verifier(fD)
1182+func fE () = {
1183+ let fF = {
11441184 let dq = eq()
11451185 if ($isInstanceOf(dq, "ByteVector"))
11461186 then {
11471187 let ev = dq
11481188 ev
11491189 }
11501190 else if ($isInstanceOf(dq, "Unit"))
1151- then fB.senderPublicKey
1191+ then fD.senderPublicKey
11521192 else throw("Match error")
11531193 }
1154- let dq = fB
1194+ let dq = fD
11551195 if ($isInstanceOf(dq, "Order"))
11561196 then {
11571197 let cR = dq
1158- let fE = aG()
1198+ let fG = aG()
11591199 let au = cQ(cR)
11601200 let av = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1161- let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fE)
1201+ let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fG)
11621202 if (if (if (au)
11631203 then av
11641204 else false)
11651205 then aw
11661206 else false)
11671207 then true
11681208 else at(au, av, aw)
11691209 }
11701210 else if ($isInstanceOf(dq, "SetScriptTransaction"))
11711211 then {
11721212 let er = dq
1173- let fF = blake2b256(value(er.script))
1174- let fG = fromBase64String(value(getString(aD, ar())))
1175- let fH = scriptHash(this)
1176- if (if ((fG == fF))
1177- then (fH != fF)
1213+ let fH = blake2b256(value(er.script))
1214+ let fI = fromBase64String(value(getString(aD, ar())))
1215+ let fJ = scriptHash(this)
1216+ if (if ((fI == fH))
1217+ then (fJ != fH)
11781218 else false)
11791219 then true
1180- else sigVerify(fB.bodyBytes, fB.proofs[0], fD)
1220+ else sigVerify(fD.bodyBytes, fD.proofs[0], fF)
11811221 }
1182- else sigVerify(fB.bodyBytes, fB.proofs[0], fD)
1222+ else sigVerify(fD.bodyBytes, fD.proofs[0], fF)
11831223 }
11841224

github/deemru/w8io/026f985 
118.94 ms