tx · AVqsmwLuTfVwoTu784h3RwAbShFM6czGY2PtudSBfZt1

3MqjK2SfnefGxk4fiaeRHZaxg6wHAZ6tbd2:  -0.03000000 Waves

2022.11.17 18:16 [2321281] smart account 3MqjK2SfnefGxk4fiaeRHZaxg6wHAZ6tbd2 > SELF 0.00000000 Waves

{ "type": 13, "id": "AVqsmwLuTfVwoTu784h3RwAbShFM6czGY2PtudSBfZt1", "fee": 3000000, "feeAssetId": null, "timestamp": 1668698178213, "version": 1, "sender": "3MqjK2SfnefGxk4fiaeRHZaxg6wHAZ6tbd2", "senderPublicKey": "4eCcSEdDzsn3CVYwcVcGA3AbMH8prX8N1GVuLubC57iy", "proofs": [ "Ntt7M2fwBfhbH18ME6EuvGV1Z8QYQRu94KJPthrBUw2We4yEMYvjB7nNvgtpW1UBRRN9fnLbuGSEF2mkJAjNvrn" ], "script": "base64:BgK8JwgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASAwoBCBIFCgMBAQESBAoCAQESBAoCCAESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgSABIDCgEBEgMKAQESBAoCCAEiCmxQZGVjaW1hbHMiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgt3YXZlc1N0cmluZyIDU0VQIgpQb29sQWN0aXZlIg9Qb29sUHV0RGlzYWJsZWQiE1Bvb2xNYXRjaGVyRGlzYWJsZWQiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiDWlkeFBvb2xTdGF0dXMiEGlkeFBvb2xMUEFzc2V0SWQiDWlkeEFtdEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIOaWR4QW10QXNzZXREY20iEGlkeFByaWNlQXNzZXREY20iDmlkeElBbXRBc3NldElkIhBpZHhJUHJpY2VBc3NldElkIg1pZHhMUEFzc2V0RGNtIhJpZHhQb29sQW10QXNzZXRBbXQiFGlkeFBvb2xQcmljZUFzc2V0QW10IhFpZHhQb29sTFBBc3NldEFtdCIZaWR4RmFjdG9yeVN0YWtpbmdDb250cmFjdCIaaWR4RmFjdG9yeVNsaXBwYWdlQ29udHJhY3QiBXRvWDE4IgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiCXRpbWVzdGFtcCIDcGF1Igt1c2VyQWRkcmVzcyIEdHhJZCIDZ2F1IgJhYSICcGEiBmtleUZlZSIKZmVlRGVmYXVsdCIDZmVlIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDc1NDQ3NzEwIg5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSINb3JkZXJBbXRBc3NldCIQb3JkZXJBbXRBc3NldFN0ciIPb3JkZXJQcmljZUFzc2V0IhJvcmRlclByaWNlQXNzZXRTdHIiCm9yZGVyUHJpY2UiCHByaWNlRGNtIhBjYXN0ZWRPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjI1NzEyMjg2NCIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyMjg2ODIzMDE3IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIzMTM5MjMxOTgiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDI0Njc1MjQ4NDIiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAyNjQyMjI2NDcyIgt0b3RhbEFtb3VudCINJHQwMjY0NzYyNjcwMiILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIJaXNNYW5hZ2VyIgJwayILbXVzdE1hbmFnZXIiAnBkIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiILbWF4U2xpcHBhZ2UiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIBQCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzE2MDkzMTczOSIFYm9udXMiE2VtaXRBbW91bnRFc3RpbWF0ZWQiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzMjQ2ODMyNjAzIg1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzMzQwODMzNTQzIg9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDM0MTc4MzQzMTYiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDM1MTQxMzUyNzEiCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgxjaGVja0Ftb3VudHMiC2FtdEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIg1wb29sTFBCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaGMAAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUgBSQkAoAMBCQC8AgMFAUgJALYCAQUBSQUBZAEBSgMBSwFMAU0JAGsDBQFLBQFMBQFNAQFOAQFIAwkAZgIAAAUBSAkBAS0BBQFIBQFIAQFPAQFIAwkAvwICBQFlBQFICQC+AgEFAUgFAUgBAVAAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFRAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVIAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVMAAhElcyVzX19wcmljZV9fbGFzdAEBVAIBVQFWCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVQkAzAgCCQCkAwEFAVYFA25pbAUBagEBVwIBWAFZCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWAICX18FAVkBAVoCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVgCAl9fBQFZAQJhYQACDyVzX19hbW91bnRBc3NldAECYWIAAg4lc19fcHJpY2VBc3NldAACYWMCByVzX19mZWUAAmFkCQBrAwAKBQFiAJBOAAJhZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhYwUCYWQBAmFmAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFnAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhaAECYWkJAKwCAgkArAICAgglcyVzJXNfXwUCYWkCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJhagICYWsCYWwJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFrAgJfXwUCYWwCCF9fY29uZmlnAQJhbQECYW4JAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYW4BAmFvAAIMJXNfX3NodXRkb3duAQJhcAECYXEJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhcQECYXIAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYXMCFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhdAMCYXUCYXYCYXcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmF1Ag0gc2VuZGVyVmFsaWQ9CQClAwEFAmF2Ag4gbWF0Y2hlclZhbGlkPQkApQMBBQJhdwECYXgCAmF5AmF6CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXkFAmF6CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF5CQDMCAICAS4JAMwIAgUCYXoJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUECAmF5AmF6CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXkFAmF6CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF5CQDMCAICAS4JAMwIAgUCYXoJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUIBAmFDCQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFDBQNuaWwCASAAAmFECQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXgCBQR0aGlzCQEBUAAAAmFFCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXgCBQJhRAUCYXMBAmFGAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhRAkBAmFvAAcBAmFHAAkA2QQBCQECYXgCBQJhRAkBAmFnAAECYUgABAJhSQkBAmF4AgUEdGhpcwkBAmFhAAQCYUoJAQJheAIFBHRoaXMJAQJhYgAEAmFsCQECYUECBQJhRAkBAmFtAQUCYUoEAmFrCQECYUECBQJhRAkBAmFtAQUCYUkJALUJAgkBAmF4AgUCYUQJAQJhagIJAKQDAQUCYWsJAKQDAQUCYWwFAWoBAmFLAQJhTAMJAAACBQJhTAUBaQUEdW5pdAkA2QQBBQJhTAECYU0BAmFMAwkAAAIFAmFMBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmFMAQJhTgECYU8JAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhTwUBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFPBQFwCQDZBAEJAJEDAgUCYU8FAXEJAQJhSwEJAJEDAgUCYU8FAXIJAQJhSwEJAJEDAgUCYU8FAXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTwUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFPBQF1AAJhUAkBAmFOAQkBAmFIAAACYVEFAmFQAAJhUggFAmFRAl8xAAJhUwgFAmFRAl8yAAJhVAgFAmFRAl8zAAJhVQgFAmFRAl80AAJhVggFAmFRAl81AAJhVwgFAmFRAl82AAJhWAgFAmFRAl83AQJhWQAJALUJAgkBAmF4AgUCYUQJAQJhZgAFAWoAAmFaCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYVkABQFCAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAAJiYQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmFZAAUBQwIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwECYmIKAmJjAmJkAmJlAmJmAmJnAmJoAmJpAmJqAmJrAmJsCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiYwkAzAgCCQCkAwEFAmJkCQDMCAIJAKQDAQUCYmUJAMwIAgkApAMBBQJiZgkAzAgCCQCkAwEFAmJnCQDMCAIJAKQDAQUCYmgJAMwIAgkApAMBBQJiaQkAzAgCCQCkAwEFAmJqCQDMCAIJAKQDAQUCYmsJAMwIAgkApAMBBQJibAUDbmlsBQFqAQJibQYCYm4CYm8CYnACYmYCYmkCYmoJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJibgkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYnAJAMwIAgkApAMBBQJiZgkAzAgCCQCkAwEFAmJpCQDMCAIJAKQDAQUCYmoFA25pbAUBagECYnEBAmJyAwkAAAIFAmJyAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJicgECYnMCAmJ0AmJ1CQC8AgMFAmJ0BQFkBQJidQECYnYEAmJ3AmJ4AmJ5AmJ6BAJiQQkBAUQCBQJieQUCYncEAmJCCQEBRAIFAmJ6BQJieAkBAmJzAgUCYkIFAmJBAQJiQwMCYnkCYnoCYkQEAmJFCQECYUgABAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiSAkBAmJ2BAUCYkYFAmJHBQJieQUCYnoEAmJ1CQEBRAIFAmJ5BQJiRgQCYnQJAQFEAgUCYnoFAmJHBAJiSQkBAUQCBQJiRAUBYgQCYkoJAQJicwIFAmJ1BQJiSQQCYksJAQJicwIFAmJ0BQJiSQkAzAgCBQJiSAkAzAgCBQJiSgkAzAgCBQJiSwUDbmlsAQJiTAMCYnkCYnoCYkQEAmJNCQECYkMDBQJieQUCYnoFAmJECQDMCAIJAQFHAgkAkQMCBQJiTQAABQFiCQDMCAIJAQFHAgkAkQMCBQJiTQABBQFiCQDMCAIJAQFHAgkAkQMCBQJiTQACBQFiBQNuaWwBAmJOBAJiTwJiUAJiUQFYBAJiRQkBAmFIAAQCYlIJAJEDAgUCYkUFAXEEAmJTCQCRAwIFAmJFBQFyBAJiVAkAkQMCBQJiRQUBcwQCYncJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYngJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYlUJAJEDAgUCYkUFAXAEAmJWCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlIJAKwCAgkArAICAgZBc3NldCAFAmJSAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmJSBQJiUAkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCYlcJAQJicQEFAmJTBAJiWAkBAUQCBQJiVwUCYncEAmJZCQECYnEBBQJiVAQCYloJAQFEAgUCYlkFAmJ4BAJjYQkBAmJzAgUCYloFAmJYBAJjYgkBAUcCBQJjYQUBYgQCY2MJAQFEAgUCYlEFAWIEAmNkCQEBRAIFAmJWBQFiBAJjZQkAvAIDBQJiWAUCY2MFAmNkBAJjZgkAvAIDBQJiWgUCY2MFAmNkBAJjZwkBAUcCBQJjZQUCYncEAmNoCQEBRwIFAmNmBQJieAQCY2kDCQAAAgUCYk8CAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVgFAmNnAwkAAAIFAmJTAgVXQVZFUwUEdW5pdAkA2QQBBQJiUwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJjaAMJAAACBQJiVAIFV0FWRVMFBHVuaXQJANkEAQUCYlQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCCQClCAEFAVgFAmJPCQECYm0GBQJjZwUCY2gFAmJRBQJjYgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjYgUDbmlsCQCcCgoFAmNnBQJjaAUCYlMFAmJUBQJiVwUCYlkFAmJWBQJjYQUCYlUFAmNpAQJjagkCYk8CY2sCY2wCY20CY24CY28BWAJjcAJjcQQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNyCQCRAwIFAmJFBQFyBAJjcwkAkQMCBQJiRQUBcwQCY3QJAJEDAgUCYkUFAXYEAmN1CQCRAwIFAmJFBQF3BAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiVQkAkQMCBQJiRQUBcAQCYlYICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjdgkA2AQBCQELdmFsdWVPckVsc2UCBQJjbQkA2QQBAgVXQVZFUwQCY3cJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY28JANkEAQIFV0FWRVMDAwkBAiE9AgUCY3IFAmN2BgkBAiE9AgUCY3MFAmN3CQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCYlcDBQJjcAkBAmJxAQUCY3IJAGUCCQECYnEBBQJjcgUCY2wEAmJZAwUCY3AJAQJicQEFAmNzCQBlAgkBAmJxAQUCY3MFAmNuBAJjeAkBAUQCBQJjbAUCYkYEAmN5CQEBRAIFAmNuBQJiRwQCY3oJAQJicwIFAmN5BQJjeAQCYlgJAQFEAgUCYlcFAmJGBAJiWgkBAUQCBQJiWQUCYkcEAmNBAwkAAAIFAmJWAAAEAmNhBQFlBAJjQgUBZQQCYkkJAHYGCQC5AgIFAmN4BQJjeQAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUcCBQJiSQUBYgkBAUcCBQJjeAUCYkYJAQFHAgUCY3kFAmJHCQECYnMCCQC3AgIFAmJaBQJjeQkAtwICBQJiWAUCY3gFAmNCBAJjYQkBAmJzAgUCYloFAmJYBAJjQgkAvAIDCQEBTwEJALgCAgUCY2EFAmN6BQFkBQJjYQQCY0MJAQFEAgUCY2sFAWIDAwkBAiE9AgUCY2EFAWUJAL8CAgUCY0IFAmNDBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjQgIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmNDBAJjZAkBAUQCBQJiVgUBYgQCY0QJALwCAwUCY3gFAmNhBQFkBAJjRQkAvAIDBQJjeQUBZAUCY2EEAmNGAwkAvwICBQJjRAUCY3kJAJQKAgUCY0UFAmN5CQCUCgIFAmN4BQJjRAQCY0cIBQJjRgJfMQQCY0gIBQJjRgJfMgQCYkkJALwCAwUCY2QFAmNIBQJiWgkAlwoFCQEBRwIFAmJJBQFiCQEBRwIFAmNHBQJiRgkBAUcCBQJjSAUCYkcFAmNhBQJjQgQCY0kIBQJjQQJfMQQCY0oIBQJjQQJfMgQCY0sIBQJjQQJfMwQCY2IJAQFHAggFAmNBAl80BQFiBAJjTAkBAUcCCAUCY0ECXzUFAWIDCQBnAgAABQJjSQkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCY00DCQEBIQEFAmNxAAAFAmNJBAJjTgkAZQIFAmNsBQJjSgQCY08JAGUCBQJjbgUCY0sEAmNQCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNiCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNiCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgUBWAUCYk8JAQJiYgoFAmNKBQJjSwUCY00FAmNiBQJjawUCY0wFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNOBQJjTwUDbmlsCQCfCg0FAmNJBQJjTQUCY2IFAmJXBQJiWQUCYlYFAmJSBQJiVQUCY1AFAmNOBQJjTwUCY20FAmNvAQJjUQECY1IEAmJFCQECYUgABAJjUwkAkQMCBQJiRQUBcgQCY1QJAJEDAgUCYkUFAXMEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXAEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmNVCQECYnEBBQJjUwQCY1YJAQJicQEFAmNUBAJjYQMJAAACCAUCY1IJb3JkZXJUeXBlBQNCdXkJAQJidgQFAmJGBQJiRwkAZAIFAmNVCAUCY1IGYW1vdW50BQJjVgkBAmJ2BAUCYkYFAmJHCQBlAgUCY1UIBQJjUgZhbW91bnQFAmNWBAJjYgkBAUcCBQJjYQUBYgMDAwkBAmFGAAYJAAACBQJiVQUBbQYJAAACBQJiVQUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQEAmNXCAgFAmNSCWFzc2V0UGFpcgthbW91bnRBc3NldAQCY1gDCQAAAgUCY1cFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmNXBAJjWQgIBQJjUglhc3NldFBhaXIKcHJpY2VBc3NldAQCY1oDCQAAAgUCY1kFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmNZAwMJAQIhPQIFAmNYBQJjUwYJAQIhPQIFAmNaBQJjVAkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmRhCAUCY1IFcHJpY2UEAmRiCQBrAwUBYgUCYkcFAmJGBAJkYwkBAUoDBQJkYQUBYgUCZGIEAmRkAwkAAAIIBQJjUglvcmRlclR5cGUFA0J1eQkAZwIFAmNiBQJkYwkAZwIFAmRjBQJjYgYBAmRlAQJkZgMJAQIhPQIJAJADAQgFAmRmCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZGcJAQV2YWx1ZQEJAJEDAggFAmRmCHBheW1lbnRzAAAEAmJQCQEFdmFsdWUBCAUCZGcHYXNzZXRJZAQCZGgIBQJkZwZhbW91bnQEAmNBCQECYk4ECQDYBAEIBQJkZg10cmFuc2FjdGlvbklkCQDYBAEFAmJQBQJkaAgFAmRmBmNhbGxlcgQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCYlUJAQ1wYXJzZUludFZhbHVlAQgFAmNBAl85BAJjaQgFAmNBA18xMAMDCQECYUYABgkAAAIFAmJVBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJiVQkAlwoFBQJjZwUCY2gFAmRoBQJiUAUCY2kBAmRpAwJkZgJjawJjcQMJAQIhPQIJAJADAQgFAmRmCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJkagkBBXZhbHVlAQkAkQMCCAUCZGYIcGF5bWVudHMAAAQCZGsJAQV2YWx1ZQEJAJEDAggFAmRmCHBheW1lbnRzAAEEAmRsCQECY2oJCQDYBAEIBQJkZg10cmFuc2FjdGlvbklkBQJjawgFAmRqBmFtb3VudAgFAmRqB2Fzc2V0SWQIBQJkawZhbW91bnQIBQJkawdhc3NldElkCQClCAEIBQJkZgZjYWxsZXIHBQJjcQQCYlUJAQ1wYXJzZUludFZhbHVlAQgFAmRsAl84AwMDCQECYUYABgkAAAIFAmJVBQFsBgkAAAIFAmJVBQFuCQACAQkArAICAixQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJiVQUCZGwBAmRtAQJkbgQCZG8JAPwHBAUCYUQCBGVtaXQJAMwIAgUCZG4FA25pbAUDbmlsAwkAAAIFAmRvBQJkbwQCZHAEAmRxBQJkbwMJAAECBQJkcQIHQWRkcmVzcwQCZHIFAmRxCQD8BwQFAmRyAgRlbWl0CQDMCAIFAmRuBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkcAUCZHAFAmRuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkcwECZG4EAmR0CQBrAwUCZG4FAmFlBQFiCQCUCgIJAGUCBQJkbgUCZHQFAmR0AQJkdQQCZHYCZHcBWAFZBAJkeAkAAAIFAVkFBHVuaXQEAmR5CQECYnEBCQECYU0BBQJhVQQCZHoJAQJicQEJAQJhTQEFAmFWBAJkQQMJAAACBQJkdwUCYVUGAwkAAAIFAmR3BQJhVgcJAQJhQgECDWludmFsaWQgYXNzZXQEAmRCAwUCZHgJAJQKAgUCZHkFAmR6AwUCZEEJAJQKAgkAZQIFAmR5BQJkdgUCZHoJAJQKAgUCZHkJAGUCBQJkegUCZHYEAmRDCAUCZEICXzEEAmRECAUCZEICXzIEAmRFAwUCZEEJAJQKAgUCZHYAAAkAlAoCAAAFAmR2BAJkRggFAmRFAl8xBAJkRwgFAmRFAl8yBAJkSAgJAQJkcwEFAmRGAl8xBAJkSQgJAQJkcwEFAmRHAl8xBAJkSgkBAmRzAQUCZHYEAmRLCAUCZEoCXzEEAmR0CAUCZEoCXzIEAmRMCQBkAgUCZEMFAmRIBAJkTQkAZAIFAmREBQJkSQQCZE4JAQJicwIJAQFEAgUCZE0FAmFYCQEBRAIFAmRMBQJhVwQCZE8JAQFHAgUCZE4FAWIEAmRQAwUCZEEFAmRDBQJkRAQCZFEJALYCAQUCZFAEAmRSCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYVQJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYVQCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJkUwMJAL8CAgUCZFIFAWYGCQECYUIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmRTBQJkUwQCZFQJALYCAQUCZEsEAmRVCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmRSCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZFQFAWQFAmRRABIAEgUERE9XTgUBZAUBZAUDbmlsBAJjUAMFAmR4BQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCZE8JAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZE8JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCCQClCAEJAQV2YWx1ZQEFAVgJANgEAQkBBXZhbHVlAQUBWQkBAmJiCgUCZEYFAmRHBQJkVQUCZE8AAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJkVgkBAmJzAgkBAUQCBQJkRAUCYVgJAQFEAgUCZEMFAmFXBAJkVwkBAUcCBQJkVgUBYgQCZFgEAmRZAwUCZEEJAJQKAgUCZEYFAmRDCQCUCgIFAmRHBQJkRAQCZG4IBQJkWQJfMQQCZFoIBQJkWQJfMgQCZWEJAKADAQkAvAIDBQJkUgkAtgIBCQBpAgUCZG4AAgkAtgIBBQJkWgkAawMJAGUCBQJkVQUCZWEFAWIFAmVhCQCWCgQFAmRVBQJjUAUCZHQFAmRYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlYgUCZWMCZEsCZHcBWAFZBAJkeAkAAAIFAVkFBHVuaXQEAmVkCQDMCAIDCQAAAgUCZHcFAmFUBgkBAmFCAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmVkBQJlZAQCZWUDCQAAAgUCZWMFAmFVBgMJAAACBQJlYwUCYVYHCQECYUIBAg1pbnZhbGlkIGFzc2V0BAJlZgMFAmVlCQC2AgEJAQJicQEJAQJhTQEFAmFVCQC2AgEJAQJicQEJAQJhTQEFAmFWBAJlZwkBAmJxAQkBAmFNAQUCYVUEAmVoCQECYnEBCQECYU0BBQJhVgQCZWkDBQJlZQUCZWcFAmVoBAJlagkAtgIBBQJlaQQCZFIJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhVAkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhVAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVrCQC2AgEFAmRLBAJlbAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlZgkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZWsFAWQFAmRSABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmVtCQECZHMBBQJlbAQCZW4IBQJlbQJfMQQCZHQIBQJlbQJfMgQCZW8DBQJlZQkAlgoEBQJlbgAACQBlAgUCZWcFAmVsBQJlaAkAlgoEAAAFAmVuBQJlZwkAZQIFAmVoBQJlbAQCZXAIBQJlbwJfMQQCZXEIBQJlbwJfMgQCZXIIBQJlbwJfMwQCZXMIBQJlbwJfNAQCZE4JAQJicwIJAQFEAgUCZXMFAmFYCQEBRAIFAmVyBQJhVwQCZE8JAQFHAgUCZE4FAWIEAmNQAwUCZHgFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYm0GBQJlcAUCZXEFAmRLBQJkTwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkTwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkTwUDbmlsBAJkVgkBAmJzAgkBAUQCBQJlaAUCYVgJAQFEAgUCZWcFAmFXBAJkVwkBAUcCBQJkVgUBYgQCZFgEAmV0CQBoAgkAoAMBCQC8AgMFAmVmBQJlawUCZFIAAgkAawMJAGUCBQJlbgUCZXQFAWIFAmV0CQCWCgQFAmVuBQJjUAUCZHQFAmRYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJldQAEAmRxCQCiCAEJAQFRAAMJAAECBQJkcQIGU3RyaW5nBAJldgUCZHEJANkEAQUCZXYDCQABAgUCZHECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZXcABAJkcQkAoggBCQEBUgADCQABAgUCZHECBlN0cmluZwQCZXYFAmRxCQDZBAEFAmV2AwkAAQIFAmRxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmV4AQJkZgQCZHEJAQJldQADCQABAgUCZHECCkJ5dGVWZWN0b3IEAmV5BQJkcQkAAAIIBQJkZg9jYWxsZXJQdWJsaWNLZXkFAmV5AwkAAQIFAmRxAgRVbml0CQAAAggFAmRmBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJlegECZGYEAmVBCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRxCQECZXUAAwkAAQIFAmRxAgpCeXRlVmVjdG9yBAJleQUCZHEDCQAAAggFAmRmD2NhbGxlclB1YmxpY0tleQUCZXkGBQJlQQMJAAECBQJkcQIEVW5pdAMJAAACCAUCZGYGY2FsbGVyBQR0aGlzBgUCZUEJAAIBAgtNYXRjaCBlcnJvchoCZGYBCnNldE1hbmFnZXIBAmVCBAJlQwkBAmV6AQUCZGYDCQAAAgUCZUMFAmVDBAJlRAkA2QQBBQJlQgMJAAACBQJlRAUCZUQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQJlQgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQ5jb25maXJtTWFuYWdlcgAEAmVFCQECZXcABAJlRgMJAQlpc0RlZmluZWQBBQJlRQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUYFAmVGBAJlRwMJAAACCAUCZGYPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlRQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUcFAmVHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAkA2AQBCQEFdmFsdWUBBQJlRQkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEDcHV0AgJjawJlSAMJAGYCAAAFAmNrCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRsCQECZGkDBQJkZgUCY2sGBAJjTQgFAmRsAl8yBAJiUggFAmRsAl83BAJjaQgFAmRsAl85BAJjTggFAmRsA18xMAQCY08IBQJkbANfMTEEAmVJCAUCZGwDXzEyBAJlSggFAmRsA18xMwQCZG8JAPwHBAUCYUQCBGVtaXQJAMwIAgUCY00FA25pbAUDbmlsAwkAAAIFAmRvBQJkbwQCZHAEAmRxBQJkbwMJAAECBQJkcQIHQWRkcmVzcwQCZHIFAmRxCQD8BwQFAmRyAgRlbWl0CQDMCAIFAmNNBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkcAUCZHAEAmVLAwkAZgIFAmNOAAAJAPwHBAUCYmECA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJlSQUCY04FA25pbAUDbmlsAwkAAAIFAmVLBQJlSwQCZUwDCQBmAgUCY08AAAkA/AcEBQJiYQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmVKBQJjTwUDbmlsBQNuaWwDCQAAAgUCZUwFAmVMBAJlTQMFAmVIBAJlTgkA/AcEBQJhWgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmNNBQNuaWwDCQAAAgUCZU4FAmVOBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCY00FAmJSBQNuaWwJAM4IAgUCY2kFAmVNCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQpwdXRGb3JGcmVlAQJlTwMJAGYCAAAFAmVPCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRsCQECZGkDBQJkZgUCZU8HCAUCZGwCXzkCZGYBCXB1dE9uZVRrbgICZVACZVEEAmVSCgACZVMJAPwHBAUCYUQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJlUwIHQm9vbGVhbgUCZVMJAAIBCQCsAgIJAAMBBQJlUwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZVQDAwMJAQJhRgAGCQAAAgUCYVMFAWwGCQAAAgUCYVMFAW4GBQJlUgQCZWQJAMwIAgMDCQEBIQEFAmVUBgkBAmV4AQUCZGYGCQECYUIBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwABBgkBAmFCAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWQFAmVkBAJlVQkAkQMCCAUCZGYIcGF5bWVudHMAAAQCZHcIBQJlVQdhc3NldElkBAJkdggFAmVVBmFtb3VudAQBWAgFAmRmBmNhbGxlcgQBWQgFAmRmDXRyYW5zYWN0aW9uSWQEAmVWCQECZHUEBQJkdgUCZHcFAVgFAVkDCQAAAgUCZVYFAmVWBAJlVwgFAmVWAl80BAJkdAgFAmVWAl8zBAJjUAgFAmVWAl8yBAJlWAgFAmVWAl8xBAJlWQMDCQBmAgUCZVAAAAkAZgIFAmVQBQJlWAcJAQJhQgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZVAFA25pbAIABQJlWAQCZG8JAQJkbQEFAmVZAwkAAAIFAmRvBQJkbwQCZU0DBQJlUQQCZVoJAPwHBAUCYVoCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFUBQJlWQUDbmlsAwkAAAIFAmVaBQJlWgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkZgZjYWxsZXIFAmVZBQJhVAUDbmlsBAJmYQMJAGYCBQJkdAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFFBQJkdAUCZHcFA25pbAUDbmlsCQCUCgIJAM4IAgkAzggCBQJjUAUCZU0FAmZhBQJlWQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgERcHV0T25lVGtuUkVBRE9OTFkCAmR3AmR2BAJmYgkBAmR1BAUCZHYJAQJhSwEFAmR3BQR1bml0BQR1bml0BAJlWAgFAmZiAl8xBAJjUAgFAmZiAl8yBAJkdAgFAmZiAl8zBAJlVwgFAmZiAl80CQCUCgIFA25pbAkAlQoDBQJlWAUCZHQFAmVXAmRmAQlnZXRPbmVUa24CAmZjAmVQBAJlUgoAAmVTCQD8BwQFAmFEAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZVMCB0Jvb2xlYW4FAmVTCQACAQkArAICCQADAQUCZVMCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZkAwMJAQJhRgAGCQAAAgUCYVMFAW4GBQJlUgQCZWQJAMwIAgMDCQEBIQEFAmZkBgkBAmV4AQUCZGYGCQECYUIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwABBgkBAmFCAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWQFAmVkBAJlYwkBAmFLAQUCZmMEAmVVCQCRAwIIBQJkZghwYXltZW50cwAABAJkdwgFAmVVB2Fzc2V0SWQEAmRLCAUCZVUGYW1vdW50BAFYCAUCZGYGY2FsbGVyBAFZCAUCZGYNdHJhbnNhY3Rpb25JZAQCZmUJAQJlYgUFAmVjBQJkSwUCZHcFAVgFAVkDCQAAAgUCZmUFAmZlBAJlVwgFAmZlAl80BAJkdAgFAmZlAl8zBAJjUAgFAmZlAl8yBAJmZggFAmZlAl8xBAJkbgMDCQBmAgUCZVAAAAkAZgIFAmVQBQJmZgcJAQJhQgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZVAFA25pbAIABQJmZgQCZmcJAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZEsFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHcFAmRLBQNuaWwDCQAAAgUCZmcFAmZnBAJmaAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJkbgUCZWMFA25pbAQCZmEDCQBmAgUCZHQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRQUCZHQFAmVjBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY1AFAmZoBQJmYQUCZG4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBEWdldE9uZVRrblJFQURPTkxZAgJlYwJkSwQCZmkJAQJlYgUJAQJhSwEFAmVjBQJkSwUCYVQFBHVuaXQFBHVuaXQEAmZmCAUCZmkCXzEEAmNQCAUCZmkCXzIEAmR0CAUCZmkCXzMEAmVXCAUCZmkCXzQJAJQKAgUDbmlsCQCVCgMFAmZmBQJkdAUCZVcCZGYBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZqAmZjAmVQBAJlUgoAAmVTCQD8BwQFAmFEAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZVMCB0Jvb2xlYW4FAmVTCQACAQkArAICCQADAQUCZVMCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZkAwMJAQJhRgAGCQAAAgUCYVMFAW4GBQJlUgQCZWQJAMwIAgMDCQEBIQEFAmZkBgkBAmV4AQUCZGYGCQECYUIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwAABgkBAmFCAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWQFAmVkBAJlYwkBAmFLAQUCZmMEAVgIBQJkZgZjYWxsZXIEAVkIBQJkZg10cmFuc2FjdGlvbklkBAJmawkA/AcEBQJhWgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFUCQDMCAIFAmZqBQNuaWwFA25pbAMJAAACBQJmawUCZmsEAmZsCQECZWIFBQJlYwUCZmoFAmFUBQFYBQFZBAJmZggFAmZsAl8xBAJjUAgFAmZsAl8yBAJkdAgFAmZsAl8zBAJlVwgFAmZsAl80BAJkbgMDCQBmAgUCZVAAAAkAZgIFAmVQBQJmZgcJAQJhQgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZVAFA25pbAIABQJmZgQCZmcJAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZmoFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVQFAmZqBQNuaWwDCQAAAgUCZmcFAmZnBAJmaAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZGYGY2FsbGVyBQJkbgUCZWMFA25pbAQCZmEDCQBmAgUCZHQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRQUCZHQFAmVjBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY1AFAmZoBQJmYQUCZG4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBA2dldAAEAmNBCQECZGUBBQJkZgQCZm0IBQJjQQJfMQQCY2gIBQJjQQJfMgQCZGgIBQJjQQJfMwQCYlAIBQJjQQJfNAQCY2kIBQJjQQJfNQQCZm4JAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZGgFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlAFAmRoBQNuaWwDCQAAAgUCZm4FAmZuBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEJZ2V0Tm9MZXNzAgJmbwJmcAQCY0EJAQJkZQEFAmRmBAJjZwgFAmNBAl8xBAJjaAgFAmNBAl8yBAJkaAgFAmNBAl8zBAJiUAgFAmNBAl80BAJjaQgFAmNBAl81AwkAZgIFAmZvBQJjZwkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY2cCAyA8IAkApAMBBQJmbwMJAGYCBQJmcAUCY2gJAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjaAIDIDwgCQCkAwEFAmZwBAJmbgkA/AcEBQJhRAIEYnVybgkAzAgCBQJkaAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiUAUCZGgFA25pbAMJAAACBQJmbgUCZm4FAmNpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQ11bnN0YWtlQW5kR2V0AQJkbgQCZnEDCQECIT0CCQCQAwEIBQJkZghwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmcQUCZnEEAmJFCQECYUgABAJiUgkA2QQBCQCRAwIFAmJFBQFxBAJmawkA/AcEBQJhWgIHdW5zdGFrZQkAzAgCCQDYBAEFAmJSCQDMCAIFAmRuBQNuaWwFA25pbAMJAAACBQJmawUCZmsEAmNBCQECYk4ECQDYBAEIBQJkZg10cmFuc2FjdGlvbklkCQDYBAEFAmJSBQJkbggFAmRmBmNhbGxlcgQCYlUJAQ1wYXJzZUludFZhbHVlAQgFAmNBAl85BAJjaQgFAmNBA18xMAQCZnIDAwkBAmFGAAYJAAACBQJiVQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCYlUGAwkAAAIFAmZyBQJmcgQCZm4JAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZG4FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmRuBQNuaWwDCQAAAgUCZm4FAmZuBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgETdW5zdGFrZUFuZEdldE5vTGVzcwMCZmoCZnMCZnAEAmZkAwkBAmFGAAYJAAACBQJhUwUBbgQCZWQJAMwIAgMJAQEhAQUCZmQGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGYIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlZAUCZWQEAmZrCQD8BwQFAmFaAgd1bnN0YWtlCQDMCAIJANgEAQUCYVQJAMwIAgUCZmoFA25pbAUDbmlsAwkAAAIFAmZrBQJmawQCY0EJAQJiTgQJANgEAQgFAmRmDXRyYW5zYWN0aW9uSWQJANgEAQUCYVQFAmZqCAUCZGYGY2FsbGVyBAJjZwgFAmNBAl8xBAJjaAgFAmNBAl8yBAJjaQgFAmNBA18xMAQCZnQJAMwIAgMJAGcCBQJjZwUCZnMGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZnMFA25pbAIACQDMCAIDCQBnAgUCY2gFAmZwBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZnAFA25pbAIABQNuaWwDCQAAAgUCZnQFAmZ0BAJmbgkA/AcEBQJhRAIEYnVybgkAzAgCBQJmagUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhVAUCZmoFA25pbAMJAAACBQJmbgUCZm4FAmNpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQhhY3RpdmF0ZQICZnUCZnYDCQECIT0CCQClCAEIBQJkZgZjYWxsZXIJAKUIAQUCYUQJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQJmdQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWIABQJmdgUDbmlsAgdzdWNjZXNzAmRmARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhSAACZGYBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJyCQCUCgIFA25pbAkBAmJxAQUCYnICZGYBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJ5AmJ6AmJEBAJiTQkBAmJDAwUCYnkFAmJ6BQJiRAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmJNAAAJAMwIAgkApgMBCQCRAwIFAmJNAAEJAMwIAgkApgMBCQCRAwIFAmJNAAIFA25pbAJkZgEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRmARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFIAUkJAJQKAgUDbmlsCQEBRwIJAKcDAQUBSAUBSQJkZgEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJidAJidQkAlAoCBQNuaWwJAKYDAQkBAmJzAgkApwMBBQJidAkApwMBBQJidQJkZgEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmJPAmNrAmNsAmNtAmNuAmNvAVgCY3ACY3EJAJQKAgUDbmlsCQECY2oJBQJiTwUCY2sFAmNsBQJjbQUCY24FAmNvBQFYBQJjcAUCY3ECZGYBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJiTwJiUAJiUQFYBAJjQQkBAmJOBAUCYk8FAmJQBQJiUQkBEUBleHRyTmF0aXZlKDEwNjIpAQUBWAkAlAoCBQNuaWwJAJwKCggFAmNBAl8xCAUCY0ECXzIIBQJjQQJfMwgFAmNBAl80CAUCY0ECXzUIBQJjQQJfNggFAmNBAl83CQCmAwEIBQJjQQJfOAgFAmNBAl85CAUCY0EDXzEwAmRmAQ1zdGF0c1JFQURPTkxZAAQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNTCQCRAwIFAmJFBQFyBAJjVAkAkQMCBQJiRQUBcwQCY3QJAJEDAgUCYkUFAXYEAmN1CQCRAwIFAmJFBQF3BAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJmdwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNVCQECYnEBBQJjUwQCY1YJAQJicQEFAmNUBAJmeAMJAAACBQJmdwAACQDMCAIFAWUJAMwIAgUBZQkAzAgCBQFlBQNuaWwJAQJiQwMFAmNVBQJjVgUCZncEAmNiAAAEAmZ5CQEBRwIJAJEDAgUCZngAAQUBYgQCZnoJAQFHAgkAkQMCBQJmeAACBQFiBAJmQQkBBXZhbHVlAQkAmggCBQJhRAkBAmFwAQkApQgBBQR0aGlzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY1UJAMwIAgkApAMBBQJjVgkAzAgCCQCkAwEFAmZ3CQDMCAIJAKQDAQUCY2IJAMwIAgkApAMBBQJmeQkAzAgCCQCkAwEFAmZ6CQDMCAIJAKQDAQUCZkEFA25pbAUBagJkZgEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmNsBAJiRQkBAmFIAAQCYlIJANkEAQkAkQMCBQJiRQUBcQQCY3IJAJEDAgUCYkUFAXIEAmJTCQDZBAEFAmNyBAJjcwkAkQMCBQJiRQUBcwQCYlQJANkEAQUCY3MEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmJVCQCRAwIFAmJFBQFwBAJmdwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNVCQECYnEBBQJjcgQCY1YJAQJicQEFAmNzBAJiQQkBAUQCBQJjVQUCYkYEAmJCCQEBRAIFAmNWBQJiRwQCY2EDCQAAAgUCZncAAAUBZQkBAmJzAgUCYkIFAmJBBAJjeAkBAUQCBQJjbAUCYkYEAmN5CQC8AgMFAmN4BQJjYQUBZAQCY24JAQFHAgUCY3kFAmJHBAJkbAkBAmNqCQIAAKDCHgUCY2wFAmJTBQJjbgUCYlQCAAYHBAJjSQgFAmRsAl8xBAJmQggFAmRsAl8zBAJiVwgFAmRsAl80BAJiWQgFAmRsAl81BAJiVggFAmRsAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjSQkAzAgCCQCkAwEJAQFHAgUCY2EFAWIJAMwIAgkApAMBBQJiVwkAzAgCCQCkAwEFAmJZCQDMCAIJAKQDAQUCYlYJAMwIAgUCYlUJAMwIAgkApAMBBQJjbAkAzAgCCQCkAwEFAmNuBQNuaWwFAWoCZGYBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmNuBAJiRQkBAmFIAAQCYlIJANkEAQkAkQMCBQJiRQUBcQQCY3IJAJEDAgUCYkUFAXIEAmJTCQDZBAEFAmNyBAJjcwkAkQMCBQJiRQUBcwQCYlQJANkEAQUCY3MEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmJVCQCRAwIFAmJFBQFwBAJmdwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiUgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiUgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZDCQECYnEBBQJjcgQCZkQJAQJicQEFAmNzBAJmRQkBAUQCBQJmQwUCYkYEAmZGCQEBRAIFAmZEBQJiRwQCY2EDCQAAAgUCZncAAAUBZQkBAmJzAgUCZkYFAmZFBAJjeQkBAUQCBQJjbgUCYkcEAmN4CQC8AgMFAmN5BQFkBQJjYQQCY2wJAQFHAgUCY3gFAmJGBAJkbAkBAmNqCQIAAKDCHgUCY2wFAmJTBQJjbgUCYlQCAAYHBAJjSQgFAmRsAl8xBAJmQggFAmRsAl8zBAJiVwgFAmRsAl80BAJiWQgFAmRsAl81BAJiVggFAmRsAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjSQkAzAgCCQCkAwEJAQFHAgUCY2EFAWIJAMwIAgkApAMBBQJiVwkAzAgCCQCkAwEFAmJZCQDMCAIJAKQDAQUCYlYJAMwIAgUCYlUJAMwIAgkApAMBBQJjbAkAzAgCCQCkAwEFAmNuBQNuaWwFAWoCZGYBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmZHAmZIBAJjQQkBAmJOBAIABQJmRwUCZkgFBHRoaXMEAmNnCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmJXCAUCY0ECXzUEAmJZCAUCY0ECXzYEAmJWCAUCY0ECXzcEAmNiCAUCY0ECXzgEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJjQQJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNnCQDMCAIJAKQDAQUCY2gJAMwIAgkApAMBBQJiVwkAzAgCCQCkAwEFAmJZCQDMCAIJAKQDAQUCYlYJAMwIAgkApgMBBQJjYgkAzAgCCQCkAwEFAmJVBQNuaWwFAWoBAmZJAQJmSgAEAmZLBAJkcQkBAmV1AAMJAAECBQJkcQIKQnl0ZVZlY3RvcgQCZXkFAmRxBQJleQMJAAECBQJkcQIEVW5pdAgFAmZJD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJkcQUCZkkDCQABAgUCZHECBU9yZGVyBAJjUgUCZHEEAmZMCQECYUcABAJhdQkBAmNRAQUCY1IEAmF2CQD0AwMIBQJjUglib2R5Qnl0ZXMJAJEDAggFAmNSBnByb29mcwAACAUCY1IPc2VuZGVyUHVibGljS2V5BAJhdwkA9AMDCAUCY1IJYm9keUJ5dGVzCQCRAwIIBQJjUgZwcm9vZnMAAQUCZkwDAwMFAmF1BQJhdgcFAmF3BwYJAQJhdAMFAmF1BQJhdgUCYXcDCQABAgUCZHECFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJldgUCZHEEAmZNCQD2AwEJAQV2YWx1ZQEIBQJldgZzY3JpcHQEAmZOCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUQJAQJhcgAEAmZPCQDxBwEFBHRoaXMDAwkAAAIFAmZOBQJmTQkBAiE9AgUCZk8FAmZNBwYJAPQDAwgFAmZJCWJvZHlCeXRlcwkAkQMCCAUCZkkGcHJvb2ZzAAAFAmZLCQD0AwMIBQJmSQlib2R5Qnl0ZXMJAJEDAggFAmZJBnByb29mcwAABQJmS0Bl1TM=", "chainId": 84, "height": 2321281, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5B818rJQHokxFgdhyoixEpB2PhWqMDCK2BDuVLmcsJXE Next: 4L5a6Ar2jCzqLwn5Gb69QVFcNB3MSKtzMXdC28uq6mEQ 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 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 = {
519519 let dY = if (dA)
520520 then $Tuple2(dF, dC)
521521 else $Tuple2(dG, dD)
522522 let dn = dY._1
523523 let dZ = dY._2
524524 let ea = toInt(fraction(dR, toBigInt((dn / 2)), toBigInt(dZ)))
525525 fraction((dU - ea), b, ea)
526526 }
527527 $Tuple4(dU, cP, dt, dX)
528528 }
529529 else throw("Strict value is not equal to itself.")
530530 }
531531
532532
533533 func eb (ec,dK,dw,X,Y) = {
534534 let dx = (Y == unit)
535535 let ed = [if ((dw == aT))
536536 then true
537537 else aB("invalid lp asset")]
538538 if ((ed == ed))
539539 then {
540540 let ee = if ((ec == aU))
541541 then true
542542 else if ((ec == aV))
543543 then false
544544 else aB("invalid asset")
545545 let ef = if (ee)
546546 then toBigInt(bq(aM(aU)))
547547 else toBigInt(bq(aM(aV)))
548548 let eg = bq(aM(aU))
549549 let eh = bq(aM(aV))
550550 let ei = if (ee)
551551 then eg
552552 else eh
553553 let ej = toBigInt(ei)
554554 let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
555555 let ek = toBigInt(dK)
556556 let el = max([0, toInt(((ef * (d - pow((d - ((ek * d) / dR)), 18, h, 0, 18, DOWN))) / d))])
557557 let em = ds(el)
558558 let en = em._1
559559 let dt = em._2
560560 let eo = if (ee)
561561 then $Tuple4(en, 0, (eg - el), eh)
562562 else $Tuple4(0, en, eg, (eh - el))
563563 let ep = eo._1
564564 let eq = eo._2
565565 let er = eo._3
566566 let es = eo._4
567567 let dN = bs(D(es, aX), D(er, aW))
568568 let dO = G(dN, b)
569569 let cP = if (dx)
570570 then nil
571571 else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(ep, eq, dK, dO, height, lastBlock.timestamp)), IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO)]
572572 let dV = bs(D(eh, aX), D(eg, aW))
573573 let dW = G(dV, b)
574574 let dX = {
575575 let et = (toInt(fraction(ef, ek, dR)) * 2)
576576 fraction((en - et), b, et)
577577 }
578578 $Tuple4(en, cP, dt, dX)
579579 }
580580 else throw("Strict value is not equal to itself.")
581581 }
582582
583583
584584 func eu () = {
585585 let dq = getString(Q())
586586 if ($isInstanceOf(dq, "String"))
587587 then {
588588 let ev = dq
589589 fromBase58String(ev)
590590 }
591591 else if ($isInstanceOf(dq, "Unit"))
592592 then unit
593593 else throw("Match error")
594594 }
595595
596596
597597 func ew () = {
598598 let dq = getString(R())
599599 if ($isInstanceOf(dq, "String"))
600600 then {
601601 let ev = dq
602602 fromBase58String(ev)
603603 }
604604 else if ($isInstanceOf(dq, "Unit"))
605605 then unit
606606 else throw("Match error")
607607 }
608608
609609
610610 func ex (df) = {
611611 let dq = eu()
612612 if ($isInstanceOf(dq, "ByteVector"))
613613 then {
614614 let ey = dq
615615 (df.callerPublicKey == ey)
616616 }
617617 else if ($isInstanceOf(dq, "Unit"))
618618 then (df.caller == this)
619619 else throw("Match error")
620620 }
621621
622622
623623 func ez (df) = {
624624 let eA = throw("Permission denied")
625625 let dq = eu()
626626 if ($isInstanceOf(dq, "ByteVector"))
627627 then {
628628 let ey = dq
629629 if ((df.callerPublicKey == ey))
630630 then true
631631 else eA
632632 }
633633 else if ($isInstanceOf(dq, "Unit"))
634634 then if ((df.caller == this))
635635 then true
636636 else eA
637637 else throw("Match error")
638638 }
639639
640640
641641 @Callable(df)
642642 func setManager (eB) = {
643643 let eC = ez(df)
644644 if ((eC == eC))
645645 then {
646646 let eD = fromBase58String(eB)
647647 if ((eD == eD))
648648 then [StringEntry(R(), eB)]
649649 else throw("Strict value is not equal to itself.")
650650 }
651651 else throw("Strict value is not equal to itself.")
652652 }
653653
654654
655655
656656 @Callable(df)
657657 func confirmManager () = {
658658 let eE = ew()
659659 let eF = if (isDefined(eE))
660660 then true
661661 else throw("No pending manager")
662662 if ((eF == eF))
663663 then {
664664 let eG = if ((df.callerPublicKey == value(eE)))
665665 then true
666666 else throw("You are not pending manager")
667667 if ((eG == eG))
668668 then [StringEntry(Q(), toBase58String(value(eE))), DeleteEntry(R())]
669669 else throw("Strict value is not equal to itself.")
670670 }
671671 else throw("Strict value is not equal to itself.")
672672 }
673673
674674
675675
676676 @Callable(df)
677677 func put (ck,eH) = if ((0 > ck))
678678 then throw("Invalid slippageTolerance passed")
679679 else {
680680 let dl = di(df, ck, true)
681681 let cM = dl._2
682682 let bR = dl._7
683683 let ci = dl._9
684684 let cN = dl._10
685685 let cO = dl._11
686686 let eI = dl._12
687687 let eJ = dl._13
688688 let do = invoke(aD, "emit", [cM], nil)
689689 if ((do == do))
690690 then {
691691 let dp = {
692692 let dq = do
693693 if ($isInstanceOf(dq, "Address"))
694694 then {
695695 let dr = dq
696696 invoke(dr, "emit", [cM], nil)
697697 }
698698 else unit
699699 }
700700 if ((dp == dp))
701701 then {
702702 let eK = if ((cN > 0))
703703 then invoke(ba, "put", nil, [AttachedPayment(eI, cN)])
704704 else nil
705705 if ((eK == eK))
706706 then {
707707 let eL = if ((cO > 0))
708708 then invoke(ba, "put", nil, [AttachedPayment(eJ, cO)])
709709 else nil
710710 if ((eL == eL))
711711 then {
712712 let eM = if (eH)
713713 then {
714714 let eN = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
715715 if ((eN == eN))
716716 then nil
717717 else throw("Strict value is not equal to itself.")
718718 }
719719 else [ScriptTransfer(df.caller, cM, bR)]
720720 (ci ++ eM)
721721 }
722722 else throw("Strict value is not equal to itself.")
723723 }
724724 else throw("Strict value is not equal to itself.")
725725 }
726726 else throw("Strict value is not equal to itself.")
727727 }
728728 else throw("Strict value is not equal to itself.")
729729 }
730730
731731
732732
733733 @Callable(df)
734734 func putForFree (eO) = if ((0 > eO))
735735 then throw("Invalid value passed")
736736 else {
737737 let dl = di(df, eO, false)
738738 dl._9
739739 }
740740
741741
742742
743743 @Callable(df)
744744 func putOneTkn (eP,eQ) = {
745745 let eR = {
746746 let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
747747 if ($isInstanceOf(eS, "Boolean"))
748748 then eS
749749 else throw(($getType(eS) + " couldn't be cast to Boolean"))
750750 }
751751 let eT = if (if (if (aF())
752752 then true
753753 else (aS == l))
754754 then true
755755 else (aS == n))
756756 then true
757757 else eR
758758 let ed = [if (if (!(eT))
759759 then true
760760 else ex(df))
761761 then true
762762 else aB("put operation is blocked by admin"), if ((size(df.payments) == 1))
763763 then true
764764 else aB("exactly 1 payment are expected")]
765765 if ((ed == ed))
766766 then {
767767 let eU = df.payments[0]
768768 let dw = eU.assetId
769769 let dv = eU.amount
770770 let X = df.caller
771771 let Y = df.transactionId
772772 let eV = du(dv, dw, X, Y)
773773 if ((eV == eV))
774774 then {
775775 let eW = eV._4
776776 let dt = eV._3
777777 let cP = eV._2
778778 let eX = eV._1
779779 let eY = if (if ((eP > 0))
780780 then (eP > eX)
781781 else false)
782782 then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
783783 else eX
784784 let do = dm(eY)
785785 if ((do == do))
786786 then {
787787 let eM = if (eQ)
788788 then {
789789 let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
790790 if ((eZ == eZ))
791791 then nil
792792 else throw("Strict value is not equal to itself.")
793793 }
794794 else [ScriptTransfer(df.caller, eY, aT)]
795795 let fa = if ((dt > 0))
796796 then [ScriptTransfer(aE, dt, dw)]
797797 else nil
798798 $Tuple2(((cP ++ eM) ++ fa), eY)
799799 }
800800 else throw("Strict value is not equal to itself.")
801801 }
802802 else throw("Strict value is not equal to itself.")
803803 }
804804 else throw("Strict value is not equal to itself.")
805805 }
806806
807807
808808
809809 @Callable(df)
810810 func putOneTknREADONLY (dw,dv) = {
811811 let fb = du(dv, aK(dw), unit, unit)
812812 let eX = fb._1
813813 let cP = fb._2
814814 let dt = fb._3
815815 let eW = fb._4
816816 $Tuple2(nil, $Tuple3(eX, dt, eW))
817817 }
818818
819819
820820
821821 @Callable(df)
822822 func getOneTkn (fc,eP) = {
823823 let eR = {
824824 let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
825825 if ($isInstanceOf(eS, "Boolean"))
826826 then eS
827827 else throw(($getType(eS) + " couldn't be cast to Boolean"))
828828 }
829829 let fd = if (if (aF())
830830 then true
831831 else (aS == n))
832832 then true
833833 else eR
834834 let ed = [if (if (!(fd))
835835 then true
836836 else ex(df))
837837 then true
838838 else aB("get operation is blocked by admin"), if ((size(df.payments) == 1))
839839 then true
840840 else aB("exactly 1 payment are expected")]
841841 if ((ed == ed))
842842 then {
843843 let ec = aK(fc)
844844 let eU = df.payments[0]
845845 let dw = eU.assetId
846846 let dK = eU.amount
847847 let X = df.caller
848848 let Y = df.transactionId
849849 let fe = eb(ec, dK, dw, X, Y)
850850 if ((fe == fe))
851851 then {
852852 let eW = fe._4
853853 let dt = fe._3
854854 let cP = fe._2
855855 let ff = fe._1
856856 let dn = if (if ((eP > 0))
857857 then (eP > ff)
858858 else false)
859859 then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
860860 else ff
861861 let fg = invoke(aD, "burn", [dK], [AttachedPayment(dw, dK)])
862862 if ((fg == fg))
863863 then {
864864 let fh = [ScriptTransfer(X, dn, ec)]
865865 let fa = if ((dt > 0))
866866 then [ScriptTransfer(aE, dt, ec)]
867867 else nil
868868 $Tuple2(((cP ++ fh) ++ fa), dn)
869869 }
870870 else throw("Strict value is not equal to itself.")
871871 }
872872 else throw("Strict value is not equal to itself.")
873873 }
874874 else throw("Strict value is not equal to itself.")
875875 }
876876
877877
878878
879879 @Callable(df)
880880 func getOneTknREADONLY (ec,dK) = {
881881 let fi = eb(aK(ec), dK, aT, unit, unit)
882882 let ff = fi._1
883883 let cP = fi._2
884884 let dt = fi._3
885885 let eW = fi._4
886886 $Tuple2(nil, $Tuple3(ff, dt, eW))
887887 }
888888
889889
890890
891891 @Callable(df)
892892 func unstakeAndGetOneTkn (fj,fc,eP) = {
893893 let eR = {
894894 let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
895895 if ($isInstanceOf(eS, "Boolean"))
896896 then eS
897897 else throw(($getType(eS) + " couldn't be cast to Boolean"))
898898 }
899899 let fd = if (if (aF())
900900 then true
901901 else (aS == n))
902902 then true
903903 else eR
904904 let ed = [if (if (!(fd))
905905 then true
906906 else ex(df))
907907 then true
908908 else aB("get operation is blocked by admin"), if ((size(df.payments) == 0))
909909 then true
910910 else aB("no payments are expected")]
911911 if ((ed == ed))
912912 then {
913913 let ec = aK(fc)
914914 let X = df.caller
915915 let Y = df.transactionId
916916 let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
917917 if ((fk == fk))
918918 then {
919919 let fl = eb(ec, fj, aT, X, Y)
920920 let ff = fl._1
921921 let cP = fl._2
922922 let dt = fl._3
923923 let eW = fl._4
924924 let dn = if (if ((eP > 0))
925925 then (eP > ff)
926926 else false)
927927 then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
928928 else ff
929929 let fg = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
930930 if ((fg == fg))
931931 then {
932932 let fh = [ScriptTransfer(df.caller, dn, ec)]
933933 let fa = if ((dt > 0))
934934 then [ScriptTransfer(aE, dt, ec)]
935935 else nil
936936 $Tuple2(((cP ++ fh) ++ fa), dn)
937937 }
938938 else throw("Strict value is not equal to itself.")
939939 }
940940 else throw("Strict value is not equal to itself.")
941941 }
942942 else throw("Strict value is not equal to itself.")
943943 }
944944
945945
946946
947947 @Callable(df)
948948 func get () = {
949949 let cA = de(df)
950950 let fm = cA._1
951951 let ch = cA._2
952952 let dh = cA._3
953953 let bP = cA._4
954954 let ci = cA._5
955955 let fn = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
956956 if ((fn == fn))
957957 then ci
958958 else throw("Strict value is not equal to itself.")
959959 }
960960
961961
962962
963963 @Callable(df)
964964 func getNoLess (fo,fp) = {
965965 let cA = de(df)
966966 let cg = cA._1
967967 let ch = cA._2
968968 let dh = cA._3
969969 let bP = cA._4
970970 let ci = cA._5
971971 if ((fo > cg))
972972 then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
973973 else if ((fp > ch))
974974 then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
975975 else {
976976 let fn = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
977977 if ((fn == fn))
978978 then ci
979979 else throw("Strict value is not equal to itself.")
980980 }
981981 }
982982
983983
984984
985985 @Callable(df)
986986 func unstakeAndGet (dn) = {
987987 let fq = if ((size(df.payments) != 0))
988988 then throw("No payments are expected")
989989 else true
990990 if ((fq == fq))
991991 then {
992992 let bE = aH()
993993 let bR = fromBase58String(bE[q])
994994 let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
995995 if ((fk == fk))
996996 then {
997997 let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
998998 let bU = parseIntValue(cA._9)
999999 let ci = cA._10
10001000 let fr = if (if (aF())
10011001 then true
10021002 else (bU == n))
10031003 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
10041004 else true
10051005 if ((fr == fr))
10061006 then {
10071007 let fn = invoke(aD, "burn", [dn], [AttachedPayment(bR, dn)])
10081008 if ((fn == fn))
10091009 then ci
10101010 else throw("Strict value is not equal to itself.")
10111011 }
10121012 else throw("Strict value is not equal to itself.")
10131013 }
10141014 else throw("Strict value is not equal to itself.")
10151015 }
10161016 else throw("Strict value is not equal to itself.")
10171017 }
10181018
10191019
10201020
10211021 @Callable(df)
10221022 func unstakeAndGetNoLess (fj,fs,fp) = {
10231023 let fd = if (aF())
10241024 then true
10251025 else (aS == n)
10261026 let ed = [if (!(fd))
10271027 then true
10281028 else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
10291029 then true
10301030 else throw("no payments are expected")]
10311031 if ((ed == ed))
10321032 then {
10331033 let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
10341034 if ((fk == fk))
10351035 then {
10361036 let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
10371037 let cg = cA._1
10381038 let ch = cA._2
10391039 let ci = cA._10
10401040 let ft = [if ((cg >= fs))
10411041 then true
10421042 else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
10431043 then true
10441044 else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
10451045 if ((ft == ft))
10461046 then {
10471047 let fn = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
10481048 if ((fn == fn))
10491049 then ci
10501050 else throw("Strict value is not equal to itself.")
10511051 }
10521052 else throw("Strict value is not equal to itself.")
10531053 }
10541054 else throw("Strict value is not equal to itself.")
10551055 }
10561056 else throw("Strict value is not equal to itself.")
10571057 }
10581058
10591059
10601060
10611061 @Callable(df)
10621062 func activate (fu,fv) = if ((toString(df.caller) != toString(aD)))
10631063 then throw("permissions denied")
10641064 else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
10651065
10661066
10671067
10681068 @Callable(df)
10691069 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
10701070
10711071
10721072
10731073 @Callable(df)
10741074 func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
10751075
10761076
10771077
10781078 @Callable(df)
10791079 func calcPricesWrapperREADONLY (by,bz,bD) = {
10801080 let bM = bC(by, bz, bD)
10811081 $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
10821082 }
10831083
10841084
10851085
10861086 @Callable(df)
10871087 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
10881088
10891089
10901090
10911091 @Callable(df)
10921092 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
10931093
10941094
10951095
10961096 @Callable(df)
10971097 func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
10981098
10991099
11001100
11011101 @Callable(df)
11021102 func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
11031103
11041104
11051105
11061106 @Callable(df)
11071107 func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
11081108 let cA = bN(bO, bP, bQ, addressFromStringValue(X))
11091109 $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
11101110 }
11111111
11121112
11131113
11141114 @Callable(df)
11151115 func statsREADONLY () = {
11161116 let bE = aH()
11171117 let bR = fromBase58String(bE[q])
11181118 let cS = bE[r]
11191119 let cT = bE[s]
11201120 let ct = bE[v]
11211121 let cu = bE[w]
11221122 let bF = parseIntValue(bE[t])
11231123 let bG = parseIntValue(bE[u])
11241124 let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
11251125 let cU = bq(cS)
11261126 let cV = bq(cT)
11271127 let fx = if ((fw == 0))
11281128 then [e, e, e]
11291129 else bC(cU, cV, fw)
11301130 let cb = 0
11311131 let fy = G(fx[1], b)
11321132 let fz = G(fx[2], b)
11331133 let fA = value(getInteger(aD, ap(toString(this))))
11341134 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
11351135 }
11361136
11371137
11381138
11391139 @Callable(df)
11401140 func evaluatePutByAmountAssetREADONLY (cl) = {
11411141 let bE = aH()
11421142 let bR = fromBase58String(bE[q])
11431143 let cr = bE[r]
11441144 let bS = fromBase58String(cr)
11451145 let cs = bE[s]
11461146 let bT = fromBase58String(cs)
11471147 let bF = parseIntValue(bE[t])
11481148 let bG = parseIntValue(bE[u])
11491149 let bU = bE[p]
11501150 let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
11511151 let cU = bq(cr)
11521152 let cV = bq(cs)
11531153 let bA = D(cU, bF)
11541154 let bB = D(cV, bG)
11551155 let ca = if ((fw == 0))
11561156 then e
11571157 else bs(bB, bA)
11581158 let cx = D(cl, bF)
11591159 let cy = fraction(cx, ca, d)
11601160 let cn = G(cy, bG)
11611161 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11621162 let cI = dl._1
11631163 let fB = dl._3
11641164 let bW = dl._4
11651165 let bY = dl._5
11661166 let bV = dl._6
11671167 $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))
11681168 }
11691169
11701170
11711171
11721172 @Callable(df)
11731173 func evaluatePutByPriceAssetREADONLY (cn) = {
11741174 let bE = aH()
11751175 let bR = fromBase58String(bE[q])
11761176 let cr = bE[r]
11771177 let bS = fromBase58String(cr)
11781178 let cs = bE[s]
11791179 let bT = fromBase58String(cs)
11801180 let bF = parseIntValue(bE[t])
11811181 let bG = parseIntValue(bE[u])
11821182 let bU = bE[p]
11831183 let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
11841184 let fC = bq(cr)
11851185 let fD = bq(cs)
11861186 let fE = D(fC, bF)
11871187 let fF = D(fD, bG)
11881188 let ca = if ((fw == 0))
11891189 then e
11901190 else bs(fF, fE)
11911191 let cy = D(cn, bG)
11921192 let cx = fraction(cy, d, ca)
11931193 let cl = G(cx, bF)
11941194 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11951195 let cI = dl._1
11961196 let fB = dl._3
11971197 let bW = dl._4
11981198 let bY = dl._5
11991199 let bV = dl._6
12001200 $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))
12011201 }
12021202
12031203
12041204
12051205 @Callable(df)
12061206 func evaluateGetREADONLY (fG,fH) = {
12071207 let cA = bN("", fG, fH, this)
12081208 let cg = cA._1
12091209 let ch = cA._2
12101210 let bW = cA._5
12111211 let bY = cA._6
12121212 let bV = cA._7
12131213 let cb = cA._8
12141214 let bU = parseIntValue(cA._9)
12151215 $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))
12161216 }
12171217
12181218
12191219 @Verifier(fI)
12201220 func fJ () = {
12211221 let fK = {
12221222 let dq = eu()
12231223 if ($isInstanceOf(dq, "ByteVector"))
12241224 then {
12251225 let ey = dq
12261226 ey
12271227 }
12281228 else if ($isInstanceOf(dq, "Unit"))
12291229 then fI.senderPublicKey
12301230 else throw("Match error")
12311231 }
12321232 let dq = fI
12331233 if ($isInstanceOf(dq, "Order"))
12341234 then {
12351235 let cR = dq
12361236 let fL = aG()
12371237 let au = cQ(cR)
12381238 let av = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
12391239 let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
12401240 if (if (if (au)
12411241 then av
12421242 else false)
12431243 then aw
12441244 else false)
12451245 then true
12461246 else at(au, av, aw)
12471247 }
12481248 else if ($isInstanceOf(dq, "SetScriptTransaction"))
12491249 then {
12501250 let ev = dq
12511251 let fM = blake2b256(value(ev.script))
12521252 let fN = fromBase64String(value(getString(aD, ar())))
12531253 let fO = scriptHash(this)
12541254 if (if ((fN == fM))
12551255 then (fO != fM)
12561256 else false)
12571257 then true
12581258 else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
12591259 }
12601260 else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
12611261 }
12621262

github/deemru/w8io/026f985 
86.48 ms