tx · BbTE5uRLUxUa58oBXjZm7AAvLxmQFZNp9rYMzLBg3WYS

3N9SbhVEu6NbUtNXiarejsn3FFTQw4TdQba:  -0.03300000 Waves

2022.11.28 16:07 [2336996] smart account 3N9SbhVEu6NbUtNXiarejsn3FFTQw4TdQba > SELF 0.00000000 Waves

{ "type": 13, "id": "BbTE5uRLUxUa58oBXjZm7AAvLxmQFZNp9rYMzLBg3WYS", "fee": 3300000, "feeAssetId": null, "timestamp": 1669640843138, "version": 1, "sender": "3N9SbhVEu6NbUtNXiarejsn3FFTQw4TdQba", "senderPublicKey": "HfkkTzjsVGtKhtCp2bBGJbWRXAUWa57mqVCD9pCLF64V", "proofs": [ "8S5nQGydQ8JZ5psrozppvnznXB79Wwi1NH7CTBhFKWSBb2aQVhFtZJcRCvDf3WBhMN5hrVi6d12zoAQQLagCoxB" ], "script": "base64:BgL+KwgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDc5MTU4MDgxIg5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiB2NhbGNLTHAiDWFtb3VudEJhbGFuY2UiDHByaWNlQmFsYW5jZSIKdXBkYXRlZEtMcCIScmVmcmVzaEtMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIHYWN0aW9ucyIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMTk4MzgyMDA1MCIQb3JkZXJBbXRBc3NldFN0ciISb3JkZXJQcmljZUFzc2V0U3RyIgNrTHAiDSR0MDIwNjQ1MjA3NDUiDXVudXNlZEFjdGlvbnMiBmtMcE5ldyIMaXNPcmRlclZhbGlkIgljb21tb25HZXQiAWkiA3BtdCIGcG10QW10Igljb21tb25QdXQiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiBmVzdFB1dCIEZW1pdCIGYW1vdW50IgdlbWl0SW52Ig1lbWl0SW52TGVnYWN5IgckbWF0Y2gwIhVsZWdhY3lGYWN0b3J5Q29udHJhY3QiB3Rha2VGZWUiCWZlZUFtb3VudCIPY2FsY1B1dE9uZVRva2VuIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCIGaXNFdmFsIhBhbW91bnRCYWxhbmNlUmF3Ig9wcmljZUJhbGFuY2VSYXciFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDAyMzQyOTIzNzIyIhBhbW91bnRCYWxhbmNlT2xkIg9wcmljZUJhbGFuY2VPbGQiDSR0MDIzNzI2MjM4NzUiFGFtb3VudEFzc2V0QW1vdW50UmF3IhNwcmljZUFzc2V0QW1vdW50UmF3Ig0kdDAyMzk5NzI0MDU2Ig1wYXltZW50QW1vdW50IhBhbW91bnRCYWxhbmNlTmV3Ig9wcmljZUJhbGFuY2VOZXciC3ByaWNlTmV3WDE4IghwcmljZU5ldyIOcGF5bWVudEJhbGFuY2UiFHBheW1lbnRCYWxhbmNlQmlnSW50IgxzdXBwbHlCaWdJbnQiC2NoZWNoU3VwcGx5Ig1kZXBvc2l0QmlnSW50Igtpc3N1ZUFtb3VudCILcHJpY2VPbGRYMTgiCHByaWNlT2xkIgRsb3NzIg0kdDAyNTUzMzI1NzAwIgdiYWxhbmNlIg9pc3N1ZUFtb3VudEJvdGgiD2NhbGNHZXRPbmVUb2tlbiIKb3V0QXNzZXRJZCIGY2hlY2tzIhBvdXRJbkFtb3VudEFzc2V0Ig1iYWxhbmNlQmlnSW50IgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMjczMDIyNzM1MiILdG90YWxBbW91bnQiDSR0MDI3MzU2Mjc1ODIiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciGGFtb3VudEJvdGhJblBheW1lbnRBc3NldCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiDSR0MDMxNTMzMzE1OTgiEXJlZnJlc2hLTHBBY3Rpb25zIgttYXhTbGlwcGFnZSINJHQwMzE4ODQzMTk0OSIMbWluT3V0QW1vdW50IglhdXRvU3Rha2UiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIgFAIg1pc1B1dERpc2FibGVkIgdwYXltZW50Ig0kdDAzMjcyNTMyODc3IgVib251cyITZW1pdEFtb3VudEVzdGltYXRlZCIKZW1pdEFtb3VudCIIc3Rha2VJbnYiB3NlbmRGZWUiDSR0MDMzNDYzMzM2NjAiDSR0MDMzNjYzMzM3NzEiDSR0MDMzOTY0MzQxMjEiDW91dEFzc2V0SWRTdHIiDWlzR2V0RGlzYWJsZWQiDSR0MDM0OTI2MzUwNzkiD2Ftb3VudEVzdGltYXRlZCIHYnVybkludiINYXNzZXRUcmFuc2ZlciINJHQwMzU1NzkzNTgyNiIQZmVlQW1vdW50Rm9yQ2FsYyINJHQwMzU4MjkzNTkzNyINJHQwMzYxMjEzNjI3NyINdW5zdGFrZUFtb3VudCIKdW5zdGFrZUludiINJHQwMzcxMDIzNzI1MyINJHQwMzc3NDgzNzk5NSINJHQwMzc5OTgzODEwNiIJb3V0QW10QW10IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwMzg4OTgzODk4MCISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINJHQwMzk3NzYzOTg1NyINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIg0kdDA0MDgzMDQwOTExIhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyINJHQwNDIwNTE0MjEzMiILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDQzMTIwNDMxNzUiDXBvb2xMUEJhbGFuY2UiEmFjY0FtdEFzc2V0QmFsYW5jZSIUYWNjUHJpY2VBc3NldEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNoawABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBSAFJCQCgAwEJALwCAwUBSAkAtgIBBQFJBQFkAQFKAwFLAUwBTQkAawMFAUsFAUwFAU0BAU4BAUgDCQBmAgAABQFICQEBLQEFAUgFAUgBAU8BAUgDCQC/AgIFAWUFAUgJAL4CAQUBSAUBSAEBUAACEyVzX19mYWN0b3J5Q29udHJhY3QBAVEAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBUgACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBUwACESVzJXNfX3ByaWNlX19sYXN0AQFUAgFVAVYJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFVCQDMCAIJAKQDAQUBVgUDbmlsBQFqAQFXAgFYAVkJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQFYAgJfXwUBWQEBWgIBWAFZCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUBWAICX18FAVkBAmFhAAIPJXNfX2Ftb3VudEFzc2V0AQJhYgACDiVzX19wcmljZUFzc2V0AAJhYwIHJXNfX2ZlZQACYWQJAGsDAAoFAWIAkE4AAmFlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFjBQJhZAACYWYJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWcJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWgJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYWkAHgACYWoJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWgFAmFpAQJhawACESVzX19mYWN0b3J5Q29uZmlnAQJhbAACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYW0BAmFuCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFuAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYW8CAmFwAmFxCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhcAICX18FAmFxAghfX2NvbmZpZwECYXIBAmFzCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFzAQJhdAACDCVzX19zaHV0ZG93bgECYXUBAmF2CQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXYBAmF3AAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmF4Ahclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYXkDAmF6AmFBAmFCCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhegINIHNlbmRlclZhbGlkPQkApQMBBQJhQQIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYUIBAmFDAgJhRAJhRQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFEBQJhRQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRAkAzAgCAgEuCQDMCAIFAmFFCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFGAgJhRAJhRQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFEBQJhRQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRAkAzAgCAgEuCQDMCAIFAmFFCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFHAQJhSAkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhSAUDbmlsAgEgAQJhSQECYUgJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhSAUDbmlsAgEgAAJhSgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFDAgUEdGhpcwkBAVAAAAJhSwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFDAgUCYUoFAmF4AQJhTAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUoJAQJhdAAHAQJhTQAJANkEAQkBAmFDAgUCYUoJAQJhbAABAmFOAAQCYU8JAQJhQwIFBHRoaXMJAQJhYQAEAmFQCQECYUMCBQR0aGlzCQECYWIABAJhcQkBAmFGAgUCYUoJAQJhcgEFAmFQBAJhcAkBAmFGAgUCYUoJAQJhcgEFAmFPCQC1CQIJAQJhQwIFAmFKCQECYW8CCQCkAwEFAmFwCQCkAwEFAmFxBQFqAQJhUQECYVIDCQAAAgUCYVIFAWkFBHVuaXQJANkEAQUCYVIBAmFTAQJhUgMJAAACBQJhUgUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhUgECYVQBAmFVCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYVUFAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBcAkA2QQBCQCRAwIFAmFVBQFxCQECYVEBCQCRAwIFAmFVBQFyCQECYVEBCQCRAwIFAmFVBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVUFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBdQACYVYJAQJhVAEJAQJhTgAAAmFXBQJhVgACYVgIBQJhVwJfMQACYVkIBQJhVwJfMgACYVoIBQJhVwJfMwACYmEIBQJhVwJfNAACYmIIBQJhVwJfNQACYmMIBQJhVwJfNgACYmQIBQJhVwJfNwECYmUACQC1CQIJAQJhQwIFAmFKCQECYWsABQFqAAJiZgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJlAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYmcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJiZQAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJoCgJiaQJiagJiawJibAJibQJibgJibwJicAJicQJicgkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmkJAMwIAgkApAMBBQJiagkAzAgCCQCkAwEFAmJrCQDMCAIJAKQDAQUCYmwJAMwIAgkApAMBBQJibQkAzAgCCQCkAwEFAmJuCQDMCAIJAKQDAQUCYm8JAMwIAgkApAMBBQJicAkAzAgCCQCkAwEFAmJxCQDMCAIJAKQDAQUCYnIFA25pbAUBagECYnMGAmJ0AmJ1AmJ2AmJsAmJvAmJwCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnQJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYmwJAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwBQNuaWwFAWoBAmJ3AQJieAMJAAACBQJieAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYngBAmJ5AgJiegJiQQkAvAIDBQJiegUBZAUCYkEBAmJCBAJiQwJiRAJiRQJiRgQCYkcJAQFEAgUCYkUFAmJDBAJiSAkBAUQCBQJiRgUCYkQJAQJieQIFAmJIBQJiRwECYkkDAmJFAmJGAmJKBAJiSwkBAmFOAAQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCYk4JAQJiQgQFAmJMBQJiTQUCYkUFAmJGBAJiQQkBAUQCBQJiRQUCYkwEAmJ6CQEBRAIFAmJGBQJiTQQCYk8JAQFEAgUCYkoFAWIEAmJQCQECYnkCBQJiQQUCYk8EAmJRCQECYnkCBQJiegUCYk8JAMwIAgUCYk4JAMwIAgUCYlAJAMwIAgUCYlEFA25pbAECYlIDAmJFAmJGAmJKBAJiUwkBAmJJAwUCYkUFAmJGBQJiSgkAzAgCCQEBRwIJAJEDAgUCYlMAAAUBYgkAzAgCCQEBRwIJAJEDAgUCYlMAAQUBYgkAzAgCCQEBRwIJAJEDAgUCYlMAAgUBYgUDbmlsAQJiVAQCYlUCYlYCYlcBWAQCYksJAQJhTgAEAmJYCQCRAwIFAmJLBQFxBAJiWQkAkQMCBQJiSwUBcgQCYloJAJEDAgUCYksFAXMEAmJDCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXQEAmJECQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXUEAmNhCQCRAwIFAmJLBQFwBAJjYggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmJYCQCsAgIJAKwCAgIGQXNzZXQgBQJiWAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJiWAUCYlYJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmNjCQECYncBBQJiWQQCY2QJAQFEAgUCY2MFAmJDBAJjZQkBAmJ3AQUCYloEAmNmCQEBRAIFAmNlBQJiRAQCY2cJAQJieQIFAmNmBQJjZAQCY2gJAQFHAgUCY2cFAWIEAmNpCQEBRAIFAmJXBQFiBAJjagkBAUQCBQJjYgUBYgQCY2sJALwCAwUCY2QFAmNpBQJjagQCY2wJALwCAwUCY2YFAmNpBQJjagQCY20JAQFHAgUCY2sFAmJDBAJjbgkBAUcCBQJjbAUCYkQEAmNvAwkAAAIFAmJVAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJjbQMJAAACBQJiWQIFV0FWRVMFBHVuaXQJANkEAQUCYlkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWAUCY24DCQAAAgUCYloCBVdBVkVTBQR1bml0CQDZBAEFAmJaCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgkApQgBBQFYBQJiVQkBAmJzBgUCY20FAmNuBQJiVwUCY2gFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCY2gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2gFA25pbAkAnAoKBQJjbQUCY24FAmJZBQJiWgUCY2MFAmNlBQJjYgUCY2cFAmNhBQJjbwECY3AJAmJVAmNxAmNyAmNzAmN0AmN1AVgCY3YCY3cEAmJLCQECYU4ABAJiWAkA2QQBCQCRAwIFAmJLBQFxBAJjeAkAkQMCBQJiSwUBcgQCY3kJAJEDAgUCYksFAXMEAmN6CQCRAwIFAmJLBQF2BAJjQQkAkQMCBQJiSwUBdwQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCY2EJAJEDAgUCYksFAXAEAmNiCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJYCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJYAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCY0IJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY3MJANkEAQIFV0FWRVMEAmNDCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmN1CQDZBAECBVdBVkVTAwMJAQIhPQIFAmN4BQJjQgYJAQIhPQIFAmN5BQJjQwkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmNjAwUCY3YJAQJidwEFAmN4CQBlAgkBAmJ3AQUCY3gFAmNyBAJjZQMFAmN2CQECYncBBQJjeQkAZQIJAQJidwEFAmN5BQJjdAQCY0QJAQFEAgUCY3IFAmJMBAJjRQkBAUQCBQJjdAUCYk0EAmNGCQECYnkCBQJjRQUCY0QEAmNkCQEBRAIFAmNjBQJiTAQCY2YJAQFEAgUCY2UFAmJNBAJjRwMJAAACBQJjYgAABAJjZwUBZQQCY0gFAWUEAmJPCQB2BgkAuQICBQJjRAUCY0UAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFHAgUCYk8FAWIJAQFHAgUCY0QFAmJMCQEBRwIFAmNFBQJiTQkBAmJ5AgkAtwICBQJjZgUCY0UJALcCAgUCY2QFAmNEBQJjSAQCY2cJAQJieQIFAmNmBQJjZAQCY0gJALwCAwkBAU8BCQC4AgIFAmNnBQJjRgUBZAUCY2cEAmNJCQEBRAIFAmNxBQFiAwMJAQIhPQIFAmNnBQFlCQC/AgIFAmNIBQJjSQcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCY0gCHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJjSQQCY2oJAQFEAgUCY2IFAWIEAmNKCQC8AgMFAmNEBQJjZwUBZAQCY0sJALwCAwUCY0UFAWQFAmNnBAJjTAMJAL8CAgUCY0oFAmNFCQCUCgIFAmNLBQJjRQkAlAoCBQJjRAUCY0oEAmNNCAUCY0wCXzEEAmNOCAUCY0wCXzIEAmJPCQC8AgMFAmNqBQJjTgUCY2YJAJcKBQkBAUcCBQJiTwUBYgkBAUcCBQJjTQUCYkwJAQFHAgUCY04FAmJNBQJjZwUCY0gEAmNPCAUCY0cCXzEEAmNQCAUCY0cCXzIEAmNRCAUCY0cCXzMEAmNoCQEBRwIIBQJjRwJfNAUBYgQCY1IJAQFHAggFAmNHAl81BQFiAwkAZwIAAAUCY08JAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmNTAwkBASEBBQJjdwAABQJjTwQCY1QJAGUCBQJjcgUCY1AEAmNVCQBlAgUCY3QFAmNRBAJjVgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjaAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjaAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAVgFAmJVCQECYmgKBQJjUAUCY1EFAmNTBQJjaAUCY3EFAmNSBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjVAUCY1UFA25pbAkAnwoNBQJjTwUCY1MFAmNoBQJjYwUCY2UFAmNiBQJiWAUCY2EFAmNWBQJjVAUCY1UFAmNzBQJjdQECY1cDAmNYAmNZAmNiBAJjWgkAvAIDCQB2BgkAuQICBQJjWAUCY1kAAAkAtgIBAAUAAQAABQRET1dOBQFkBQJjYgUCY1oBAmRhAwJkYgJkYwJkZAQCZGUJAGQCCQECYncBCQECYVMBBQJiYQUCZGIEAmRmCQBkAgkBAmJ3AQkBAmFTAQUCYmIFAmRjBAJkZwkAZAIICQEFdmFsdWUBCQDsBwEFAmFaCHF1YW50aXR5BQJkZAQCY1oJAQJjVwMJALYCAQUCZGUJALYCAQUCZGYJALYCAQUCZGcEAmRoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhZwUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFmCQCmAwEFAmNaBQNuaWwJAJQKAgUCZGgFAmNaAQJkaQECZGoEAmJLCQECYU4ABAJkawkAkQMCBQJiSwUBcgQCZGwJAJEDAgUCYksFAXMEAmNhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXAEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXUEAmRtCAUCZGoGYW1vdW50BAJkbgkAawMIBQJkagZhbW91bnQIBQJkagVwcmljZQUBYgQCZG8DCQAAAggFAmRqCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmRtCQEBLQEFAmRuCQCUCgIJAQEtAQUCZG0FAmRuBAJkYggFAmRvAl8xBAJkYwgFAmRvAl8yAwMDCQECYUwABgkAAAIFAmNhBQFtBgkAAAIFAmNhBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAQCZHAJAQJhUwEJAQV2YWx1ZQEICAUCZGoJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BAJkcQkBAmFTAQkBBXZhbHVlAQgIBQJkaglhc3NldFBhaXIKcHJpY2VBc3NldAMDCQECIT0CBQJkcAUCZGsGCQECIT0CBQJkcQUCZGwJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJkcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQJhZgkBAmFJAQIPa0xwIGlzIHJlcXVpcmVkCQECYUkBAgtpbnZhbGlkIGtMcAQCZHMJAQJkYQMFAmRiBQJkYwAABAJkdAgFAmRzAl8xBAJkdQgFAmRzAl8yBAJkdgkAvwICBQJkdQUCZHIFAmR2AQJkdwECZHgDCQECIT0CCQCQAwEIBQJkeAhwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmR5CQEFdmFsdWUBCQCRAwIIBQJkeAhwYXltZW50cwAABAJiVgkBBXZhbHVlAQgFAmR5B2Fzc2V0SWQEAmR6CAUCZHkGYW1vdW50BAJjRwkBAmJUBAkA2AQBCAUCZHgNdHJhbnNhY3Rpb25JZAkA2AQBBQJiVgUCZHoIBQJkeAZjYWxsZXIEAmNtCAUCY0cCXzEEAmNuCAUCY0cCXzIEAmNhCQENcGFyc2VJbnRWYWx1ZQEIBQJjRwJfOQQCY28IBQJjRwNfMTADAwkBAmFMAAYJAAACBQJjYQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2EJAJcKBQUCY20FAmNuBQJkegUCYlYFAmNvAQJkQQMCZHgCY3ECY3cDCQECIT0CCQCQAwEIBQJkeAhwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZEIJAQV2YWx1ZQEJAJEDAggFAmR4CHBheW1lbnRzAAAEAmRDCQEFdmFsdWUBCQCRAwIIBQJkeAhwYXltZW50cwABBAJkRAkBAmNwCQkA2AQBCAUCZHgNdHJhbnNhY3Rpb25JZAUCY3EIBQJkQgZhbW91bnQIBQJkQgdhc3NldElkCAUCZEMGYW1vdW50CAUCZEMHYXNzZXRJZAkApQgBCAUCZHgGY2FsbGVyBwUCY3cEAmNhCQENcGFyc2VJbnRWYWx1ZQEIBQJkRAJfOAMDAwkBAmFMAAYJAAACBQJjYQUBbAYJAAACBQJjYQUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2EFAmREAQJkRQECZEYEAmRHCQD8BwQFAmFKAgRlbWl0CQDMCAIFAmRGBQNuaWwFA25pbAMJAAACBQJkRwUCZEcEAmRIBAJkSQUCZEcDCQABAgUCZEkCB0FkZHJlc3MEAmRKBQJkSQkA/AcEBQJkSgIEZW1pdAkAzAgCBQJkRgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZEgFAmRIBQJkRgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZEsBAmRGBAJkTAkAawMFAmRGBQJhZQUBYgkAlAoCCQBlAgUCZEYFAmRMBQJkTAECZE0EAmROAmRPAVgBWQQCZFAJAAACBQFZBQR1bml0BAJkUQkBAmJ3AQkBAmFTAQUCYmEEAmRSCQECYncBCQECYVMBBQJiYgQCZFMDCQAAAgUCZE8FAmJhBgMJAAACBQJkTwUCYmIHCQECYUcBAg1pbnZhbGlkIGFzc2V0BAJkVAMFAmRQCQCUCgIFAmRRBQJkUgMFAmRTCQCUCgIJAGUCBQJkUQUCZE4FAmRSCQCUCgIFAmRRCQBlAgUCZFIFAmROBAJkVQgFAmRUAl8xBAJkVggFAmRUAl8yBAJkVwMFAmRTCQCUCgIFAmROAAAJAJQKAgAABQJkTgQCZFgIBQJkVwJfMQQCZFkIBQJkVwJfMgQCZG0ICQECZEsBBQJkWAJfMQQCZG4ICQECZEsBBQJkWQJfMQQCZFoJAQJkSwEFAmROBAJlYQgFAmRaAl8xBAJkTAgFAmRaAl8yBAJlYgkAZAIFAmRVBQJkbQQCZWMJAGQCBQJkVgUCZG4EAmVkCQECYnkCCQEBRAIFAmVjBQJiZAkBAUQCBQJlYgUCYmMEAmVlCQEBRwIFAmVkBQFiBAJlZgMFAmRTBQJkVQUCZFYEAmVnCQC2AgEFAmVmBAJlaAkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmFaCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmFaAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZWkDCQC/AgIFAmVoBQFmBgkBAmFHAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJlaQUCZWkEAmVqCQC2AgEFAmVhBAJlawkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlaAkAuAICCQEKc3FydEJpZ0ludAQJALcCAgUBZAkAugICCQC5AgIFAmVqBQFkBQJlZwASABIFBERPV04FAWQFAWQFA25pbAQCY1YDBQJkUAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgkApQgBCQEFdmFsdWUBBQFYCQDYBAEJAQV2YWx1ZQEFAVkJAQJiaAoFAmRYBQJkWQUCZWsFAmVlAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZWwJAQJieQIJAQFEAgUCZFYFAmJkCQEBRAIFAmRVBQJiYwQCZW0JAQFHAgUCZWwFAWIEAmVuBAJlbwMFAmRTCQCUCgIFAmRYBQJkVQkAlAoCBQJkWQUCZFYEAmRGCAUCZW8CXzEEAmVwCAUCZW8CXzIEAmVxCQCgAwEJALwCAwUCZWgJALYCAQkAaQIFAmRGAAIJALYCAQUCZXAJAGsDCQBlAgUCZWsFAmVxBQFiBQJlcQkAlwoFBQJlawUCY1YFAmRMBQJlbgUCZFMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVyBQJlcwJlYQJkTwFYAVkEAmRQCQAAAgUBWQUEdW5pdAQCZXQJAMwIAgMJAAACBQJkTwUCYVoGCQECYUcBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZXQFAmV0BAJldQMJAAACBQJlcwUCYmEGAwkAAAIFAmVzBQJiYgcJAQJhRwECDWludmFsaWQgYXNzZXQEAmV2AwUCZXUJALYCAQkBAmJ3AQkBAmFTAQUCYmEJALYCAQkBAmJ3AQkBAmFTAQUCYmIEAmV3CQECYncBCQECYVMBBQJiYQQCZXgJAQJidwEJAQJhUwEFAmJiBAJleQMFAmV1BQJldwUCZXgEAmV6CQC2AgEFAmV5BAJlaAkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmFaCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmFaAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZUEJALYCAQUCZWEEAmVCCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmV2CQC4AgIFAWQJAHYGCQC4AgIFAWQJALoCAgkAuQICBQJlQQUBZAUCZWgAEgUBaAAAABIFBERPV04FAWQFA25pbAQCZUMJAQJkSwEFAmVCBAJlRAgFAmVDAl8xBAJkTAgFAmVDAl8yBAJlRQMFAmV1CQCWCgQFAmVEAAAJAGUCBQJldwUCZUIFAmV4CQCWCgQAAAUCZUQFAmV3CQBlAgUCZXgFAmVCBAJlRggFAmVFAl8xBAJlRwgFAmVFAl8yBAJlSAgFAmVFAl8zBAJlSQgFAmVFAl80BAJlZAkBAmJ5AgkBAUQCBQJlSQUCYmQJAQFEAgUCZUgFAmJjBAJlZQkBAUcCBQJlZAUBYgQCY1YDBQJkUAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgkApQgBCQEFdmFsdWUBBQFYCQDYBAEJAQV2YWx1ZQEFAVkJAQJicwYFAmVGBQJlRwUCZWEFAmVlBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmVlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVlBQNuaWwEAmVsCQECYnkCCQEBRAIFAmV4BQJiZAkBAUQCBQJldwUCYmMEAmVtCQEBRwIFAmVsBQFiBAJlbgQCZUoJAGgCCQCgAwEJALwCAwUCZXYFAmVBBQJlaAACCQBrAwkAZQIFAmVEBQJlSgUBYgUCZUoJAJcKBQUCZUQFAmNWBQJkTAUCZW4FAmV1CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlSwAEAmRJCQCiCAEJAQFRAAMJAAECBQJkSQIGU3RyaW5nBAJlTAUCZEkJANkEAQUCZUwDCQABAgUCZEkCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZU0ABAJkSQkAoggBCQEBUgADCQABAgUCZEkCBlN0cmluZwQCZUwFAmRJCQDZBAEFAmVMAwkAAQIFAmRJAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVOAQJkeAQCZEkJAQJlSwADCQABAgUCZEkCCkJ5dGVWZWN0b3IEAmVPBQJkSQkAAAIIBQJkeA9jYWxsZXJQdWJsaWNLZXkFAmVPAwkAAQIFAmRJAgRVbml0CQAAAggFAmR4BmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJlUAECZHgEAmVRCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRJCQECZUsAAwkAAQIFAmRJAgpCeXRlVmVjdG9yBAJlTwUCZEkDCQAAAggFAmR4D2NhbGxlclB1YmxpY0tleQUCZU8GBQJlUQMJAAECBQJkSQIEVW5pdAMJAAACCAUCZHgGY2FsbGVyBQR0aGlzBgUCZVEJAAIBAgtNYXRjaCBlcnJvchsCZHgBCnNldE1hbmFnZXIBAmVSBAJlUwkBAmVQAQUCZHgDCQAAAgUCZVMFAmVTBAJlVAkA2QQBBQJlUgMJAAACBQJlVAUCZVQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQJlUgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR4AQ5jb25maXJtTWFuYWdlcgAEAmVVCQECZU0ABAJlVgMJAQlpc0RlZmluZWQBBQJlVQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZVYFAmVWBAJlVwMJAAACCAUCZHgPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlVQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZVcFAmVXCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAkA2AQBCQEFdmFsdWUBBQJlVQkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkeAEDcHV0AgJjcQJlWAMJAGYCAAAFAmNxCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRECQECZEEDBQJkeAUCY3EGBAJjUwgFAmREAl8yBAJiWAgFAmREAl83BAJjbwgFAmREAl85BAJjVAgFAmREA18xMAQCY1UIBQJkRANfMTEEAmVZCAUCZEQDXzEyBAJlWggFAmREA18xMwQCZEcJAPwHBAUCYUoCBGVtaXQJAMwIAgUCY1MFA25pbAUDbmlsAwkAAAIFAmRHBQJkRwQCZEgEAmRJBQJkRwMJAAECBQJkSQIHQWRkcmVzcwQCZEoFAmRJCQD8BwQFAmRKAgRlbWl0CQDMCAIFAmNTBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkSAUCZEgEAmZhAwkAZgIFAmNUAAAJAPwHBAUCYmcCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJlWQUCY1QFA25pbAUDbmlsAwkAAAIFAmZhBQJmYQQCZmIDCQBmAgUCY1UAAAkA/AcEBQJiZwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmVaBQJjVQUDbmlsBQNuaWwDCQAAAgUCZmIFAmZiBAJmYwMFAmVYBAJmZAkA/AcEBQJiZgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlgFAmNTBQNuaWwDCQAAAgUCZmQFAmZkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmR4BmNhbGxlcgUCY1MFAmJYBQNuaWwEAmZlCQECZGEDAAAAAAAABAJmZggFAmZlAl8xBAJjWggFAmZlAl8yCQDOCAIJAM4IAgUCY28FAmZjBQJmZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkeAEKcHV0Rm9yRnJlZQECZmcDCQBmAgAABQJmZwkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJkRAkBAmRBAwUCZHgFAmZnBwQCY28IBQJkRAJfOQQCZmgJAQJkYQMAAAAAAAAEAmZmCAUCZmgCXzEEAmNaCAUCZmgCXzIJAM4IAgUCY28FAmZmAmR4AQlwdXRPbmVUa24CAmZpAmZqBAJmawoAAmZsCQD8BwQFAmFKAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZmwCB0Jvb2xlYW4FAmZsCQACAQkArAICCQADAQUCZmwCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZtAwMDCQECYUwABgkAAAIFAmFZBQFsBgkAAAIFAmFZBQFuBgUCZmsEAmV0CQDMCAIDAwkBASEBBQJmbQYJAQJlTgEFAmR4BgkBAmFHAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZHgIcGF5bWVudHMAAQYJAQJhRwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmV0BQJldAQCZm4JAJEDAggFAmR4CHBheW1lbnRzAAAEAmRPCAUCZm4HYXNzZXRJZAQCZE4IBQJmbgZhbW91bnQEAVgIBQJkeAZjYWxsZXIEAVkIBQJkeA10cmFuc2FjdGlvbklkBAJmbwkBAmRNBAUCZE4FAmRPBQFYBQFZAwkAAAIFAmZvBQJmbwQCZFMIBQJmbwJfNQQCZnAIBQJmbwJfNAQCZEwIBQJmbwJfMwQCY1YIBQJmbwJfMgQCZnEIBQJmbwJfMQQCZnIDAwkAZgIFAmZpAAAJAGYCBQJmaQUCZnEHCQECYUcBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZpBQNuaWwCAAUCZnEEAmRHCQECZEUBBQJmcgMJAAACBQJkRwUCZEcEAmZjAwUCZmoEAmZzCQD8BwQFAmJmAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhWgUCZnIFA25pbAMJAAACBQJmcwUCZnMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZHgGY2FsbGVyBQJmcgUCYVoFA25pbAQCZnQDCQBmAgUCZEwAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhSwUCZEwFAmRPBQNuaWwFA25pbAQCZnUDCQAAAgUEdGhpcwUCYUsJAJQKAgAAAAADBQJkUwkAlAoCCQEBLQEFAmRMAAAJAJQKAgAACQEBLQEFAmRMBAJkYggFAmZ1Al8xBAJkYwgFAmZ1Al8yBAJmdgkBAmRhAwUCZGIFAmRjAAAEAmZmCAUCZnYCXzEEAmNaCAUCZnYCXzIJAJQKAgkAzggCCQDOCAIJAM4IAgUCY1YFAmZjBQJmdAUCZmYFAmZyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR4ARFwdXRPbmVUa25SRUFET05MWQICZE8CZE4EAmZ3CQECZE0EBQJkTgkBAmFRAQUCZE8FBHVuaXQFBHVuaXQEAmZxCAUCZncCXzEEAmNWCAUCZncCXzIEAmRMCAUCZncCXzMEAmZwCAUCZncCXzQEAmRTCAUCZncCXzUJAJQKAgUDbmlsCQCVCgMFAmZxBQJkTAUCZnACZHgBCWdldE9uZVRrbgICZngCZmkEAmZrCgACZmwJAPwHBAUCYUoCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmbAIHQm9vbGVhbgUCZmwJAAIBCQCsAgIJAAMBBQJmbAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZnkDAwkBAmFMAAYJAAACBQJhWQUBbgYFAmZrBAJldAkAzAgCAwMJAQEhAQUCZnkGCQECZU4BBQJkeAYJAQJhRwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmR4CHBheW1lbnRzAAEGCQECYUcBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJldAUCZXQEAmVzCQECYVEBBQJmeAQCZm4JAJEDAggFAmR4CHBheW1lbnRzAAAEAmRPCAUCZm4HYXNzZXRJZAQCZWEIBQJmbgZhbW91bnQEAVgIBQJkeAZjYWxsZXIEAVkIBQJkeA10cmFuc2FjdGlvbklkBAJmegkBAmVyBQUCZXMFAmVhBQJkTwUBWAUBWQMJAAACBQJmegUCZnoEAmV1CAUCZnoCXzUEAmZwCAUCZnoCXzQEAmRMCAUCZnoCXzMEAmNWCAUCZnoCXzIEAmZBCAUCZnoCXzEEAmRGAwMJAGYCBQJmaQAACQBmAgUCZmkFAmZBBwkBAmFHAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmaQUDbmlsAgAFAmZBBAJmQgkA/AcEBQJhSgIEYnVybgkAzAgCBQJlYQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkTwUCZWEFA25pbAMJAAACBQJmQgUCZkIEAmZDCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVgFAmRGBQJlcwUDbmlsBAJmdAMJAGYCBQJkTAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFLBQJkTAUCZXMFA25pbAUDbmlsBAJmRAQCZkUDCQAAAgUEdGhpcwUCYUsAAAUCZEwDBQJldQkAlAoCCQEBLQEJAGQCBQJkRgUCZkUAAAkAlAoCAAAJAQEtAQkAZAIFAmRGBQJmRQQCZGIIBQJmRAJfMQQCZGMIBQJmRAJfMgQCZkYJAQJkYQMFAmRiBQJkYwAABAJmZggFAmZGAl8xBAJjWggFAmZGAl8yCQCUCgIJAM4IAgkAzggCCQDOCAIFAmNWBQJmQwUCZnQFAmZmBQJkRgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkeAERZ2V0T25lVGtuUkVBRE9OTFkCAmVzAmVhBAJmRwkBAmVyBQkBAmFRAQUCZXMFAmVhBQJhWgUEdW5pdAUEdW5pdAQCZkEIBQJmRwJfMQQCY1YIBQJmRwJfMgQCZEwIBQJmRwJfMwQCZnAIBQJmRwJfNAQCZXUIBQJmRwJfNQkAlAoCBQNuaWwJAJUKAwUCZkEFAmRMBQJmcAJkeAETdW5zdGFrZUFuZEdldE9uZVRrbgMCZkgCZngCZmkEAmZrCgACZmwJAPwHBAUCYUoCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmbAIHQm9vbGVhbgUCZmwJAAIBCQCsAgIJAAMBBQJmbAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZnkDAwkBAmFMAAYJAAACBQJhWQUBbgYFAmZrBAJldAkAzAgCAwMJAQEhAQUCZnkGCQECZU4BBQJkeAYJAQJhRwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmR4CHBheW1lbnRzAAAGCQECYUcBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJldAUCZXQEAmVzCQECYVEBBQJmeAQBWAgFAmR4BmNhbGxlcgQBWQgFAmR4DXRyYW5zYWN0aW9uSWQEAmZJCQD8BwQFAmJmAgd1bnN0YWtlCQDMCAIJANgEAQUCYVoJAMwIAgUCZkgFA25pbAUDbmlsAwkAAAIFAmZJBQJmSQQCZkoJAQJlcgUFAmVzBQJmSAUCYVoFAVgFAVkDCQAAAgUCZkoFAmZKBAJldQgFAmZKAl81BAJmcAgFAmZKAl80BAJkTAgFAmZKAl8zBAJjVggFAmZKAl8yBAJmQQgFAmZKAl8xBAJkRgMDCQBmAgUCZmkAAAkAZgIFAmZpBQJmQQcJAQJhRwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmkFA25pbAIABQJmQQQCZkIJAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZkgFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVoFAmZIBQNuaWwDCQAAAgUCZkIFAmZCBAJmQwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZHgGY2FsbGVyBQJkRgUCZXMFA25pbAQCZnQDCQBmAgUCZEwAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhSwUCZEwFAmVzBQNuaWwFA25pbAQCZksEAmZFAwkAAAIFBHRoaXMFAmFLAAAFAmRMAwUCZXUJAJQKAgkBAS0BCQBkAgUCZEYFAmZFAAAJAJQKAgAACQEBLQEJAGQCBQJkRgUCZkUEAmRiCAUCZksCXzEEAmRjCAUCZksCXzIEAmZMCQECZGEDBQJkYgUCZGMAAAQCZmYIBQJmTAJfMQQCY1oIBQJmTAJfMgkAlAoCCQDOCAIJAM4IAgkAzggCBQJjVgUCZkMFAmZ0BQJmZgUCZEYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZHgBA2dldAAEAmNHCQECZHcBBQJkeAQCZk0IBQJjRwJfMQQCY24IBQJjRwJfMgQCZHoIBQJjRwJfMwQCYlYIBQJjRwJfNAQCY28IBQJjRwJfNQQCZk4JAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZHoFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlYFAmR6BQNuaWwDCQAAAgUCZk4FAmZOBAJmTwkBAmRhAwkBAS0BBQJmTQkBAS0BBQJjbgAABAJmZggFAmZPAl8xBAJjWggFAmZPAl8yCQDOCAIFAmNvBQJmZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkeAEJZ2V0Tm9MZXNzAgJmUAJmUQQCY0cJAQJkdwEFAmR4BAJjbQgFAmNHAl8xBAJjbggFAmNHAl8yBAJkeggFAmNHAl8zBAJiVggFAmNHAl80BAJjbwgFAmNHAl81AwkAZgIFAmZQBQJjbQkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY20CAyA8IAkApAMBBQJmUAMJAGYCBQJmUQUCY24JAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjbgIDIDwgCQCkAwEFAmZRBAJmTgkA/AcEBQJhSgIEYnVybgkAzAgCBQJkegUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVgUCZHoFA25pbAMJAAACBQJmTgUCZk4EAmZSCQECZGEDCQEBLQEFAmNtCQEBLQEFAmNuAAAEAmZmCAUCZlICXzEEAmNaCAUCZlICXzIJAM4IAgUCY28FAmZmCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR4AQ11bnN0YWtlQW5kR2V0AQJkRgQCZlMDCQECIT0CCQCQAwEIBQJkeAhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmUwUCZlMEAmJLCQECYU4ABAJiWAkA2QQBCQCRAwIFAmJLBQFxBAJmSQkA/AcEBQJiZgIHdW5zdGFrZQkAzAgCCQDYBAEFAmJYCQDMCAIFAmRGBQNuaWwFA25pbAMJAAACBQJmSQUCZkkEAmNHCQECYlQECQDYBAEIBQJkeA10cmFuc2FjdGlvbklkCQDYBAEFAmJYBQJkRggFAmR4BmNhbGxlcgQCY20IBQJjRwJfMQQCY24IBQJjRwJfMgQCY2EJAQ1wYXJzZUludFZhbHVlAQgFAmNHAl85BAJjbwgFAmNHA18xMAQCZlQDAwkBAmFMAAYJAAACBQJjYQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2EGAwkAAAIFAmZUBQJmVAQCZk4JAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZEYFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlgFAmRGBQNuaWwDCQAAAgUCZk4FAmZOBAJmVQkBAmRhAwkBAS0BBQJjbQkBAS0BBQJjbgAABAJmZggFAmZVAl8xBAJjWggFAmZVAl8yCQDOCAIFAmNvBQJmZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkeAETdW5zdGFrZUFuZEdldE5vTGVzcwMCZkgCZlYCZlEEAmZ5AwkBAmFMAAYJAAACBQJhWQUBbgQCZXQJAMwIAgMJAQEhAQUCZnkGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZHgIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJldAUCZXQEAmZJCQD8BwQFAmJmAgd1bnN0YWtlCQDMCAIJANgEAQUCYVoJAMwIAgUCZkgFA25pbAUDbmlsAwkAAAIFAmZJBQJmSQQCY0cJAQJiVAQJANgEAQgFAmR4DXRyYW5zYWN0aW9uSWQJANgEAQUCYVoFAmZICAUCZHgGY2FsbGVyBAJjbQgFAmNHAl8xBAJjbggFAmNHAl8yBAJjbwgFAmNHA18xMAQCZlcJAMwIAgMJAGcCBQJjbQUCZlYGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlYFA25pbAIACQDMCAIDCQBnAgUCY24FAmZRBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlEFA25pbAIABQNuaWwDCQAAAgUCZlcFAmZXBAJmTgkA/AcEBQJhSgIEYnVybgkAzAgCBQJmSAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhWgUCZkgFA25pbAMJAAACBQJmTgUCZk4EAmZYCQECZGEDCQEBLQEFAmNtCQEBLQEFAmNuAAAEAmZmCAUCZlgCXzEEAmNaCAUCZlgCXzIJAM4IAgUCY28FAmZmCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmR4AQhhY3RpdmF0ZQICZlkCZloDCQECIT0CCQClCAEIBQJkeAZjYWxsZXIJAKUIAQUCYUoJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQJmWQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWIABQJmWgUDbmlsAgdzdWNjZXNzAmR4AQpyZWZyZXNoS0xwAAQCZ2EJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYWcAAAQCZ2IDCQBnAgkAZQIFBmhlaWdodAUCZ2EFAmFqBQR1bml0CQECYUcBCQC5CQIJAMwIAgkApAMBBQJhagkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCZ2IFAmdiBAJnYwkBAmRhAwAAAAAAAAQCZGgIBQJnYwJfMQQCY1oIBQJnYwJfMgkAlAoCBQJkaAkApgMBBQJjWgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkeAEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYU4AAmR4ARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJieAkAlAoCBQNuaWwJAQJidwEFAmJ4AmR4ARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJiRQJiRgJiSgQCYlMJAQJiSQMFAmJFBQJiRgUCYkoJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJiUwAACQDMCAIJAKYDAQkAkQMCBQJiUwABCQDMCAIJAKYDAQkAkQMCBQJiUwACBQNuaWwCZHgBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJkeAEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSAFJCQCUCgIFA25pbAkBAUcCCQCnAwEFAUgFAUkCZHgBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYnoCYkEJAJQKAgUDbmlsCQCmAwEJAQJieQIJAKcDAQUCYnoJAKcDAQUCYkECZHgBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiVQJjcQJjcgJjcwJjdAJjdQFYAmN2AmN3CQCUCgIFA25pbAkBAmNwCQUCYlUFAmNxBQJjcgUCY3MFAmN0BQJjdQUBWAUCY3YFAmN3AmR4ASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYlUCYlYCYlcBWAQCY0cJAQJiVAQFAmJVBQJiVgUCYlcJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAVgJAJQKAgUDbmlsCQCcCgoIBQJjRwJfMQgFAmNHAl8yCAUCY0cCXzMIBQJjRwJfNAgFAmNHAl81CAUCY0cCXzYIBQJjRwJfNwkApgMBCAUCY0cCXzgIBQJjRwJfOQgFAmNHA18xMAJkeAENc3RhdHNSRUFET05MWQAEAmJLCQECYU4ABAJiWAkA2QQBCQCRAwIFAmJLBQFxBAJkawkAkQMCBQJiSwUBcgQCZGwJAJEDAgUCYksFAXMEAmN6CQCRAwIFAmJLBQF2BAJjQQkAkQMCBQJiSwUBdwQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCZ2QICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnZQkBAmJ3AQUCZGsEAmdmCQECYncBBQJkbAQCZ2cDCQAAAgUCZ2QAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYkkDBQJnZQUCZ2YFAmdkBAJjaAAABAJnaAkBAUcCCQCRAwIFAmdnAAEFAWIEAmdpCQEBRwIJAJEDAgUCZ2cAAgUBYgQCZ2oJAQV2YWx1ZQEJAJoIAgUCYUoJAQJhdQEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmdlCQDMCAIJAKQDAQUCZ2YJAMwIAgkApAMBBQJnZAkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCZ2gJAMwIAgkApAMBBQJnaQkAzAgCCQCkAwEFAmdqBQNuaWwFAWoCZHgBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjcgQCYksJAQJhTgAEAmJYCQDZBAEJAJEDAgUCYksFAXEEAmN4CQCRAwIFAmJLBQFyBAJiWQkA2QQBBQJjeAQCY3kJAJEDAgUCYksFAXMEAmJaCQDZBAEFAmN5BAJiTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiTQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJjYQkAkQMCBQJiSwUBcAQCZ2QICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnZQkBAmJ3AQUCY3gEAmdmCQECYncBBQJjeQQCYkcJAQFEAgUCZ2UFAmJMBAJiSAkBAUQCBQJnZgUCYk0EAmNnAwkAAAIFAmdkAAAFAWUJAQJieQIFAmJIBQJiRwQCY0QJAQFEAgUCY3IFAmJMBAJjRQkAvAIDBQJjRAUCY2cFAWQEAmN0CQEBRwIFAmNFBQJiTQQCZEQJAQJjcAkCAACgwh4FAmNyBQJiWQUCY3QFAmJaAgAGBwQCY08IBQJkRAJfMQQCZ2sIBQJkRAJfMwQCY2MIBQJkRAJfNAQCY2UIBQJkRAJfNQQCY2IIBQJkRAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY08JAMwIAgkApAMBCQEBRwIFAmNnBQFiCQDMCAIJAKQDAQUCY2MJAMwIAgkApAMBBQJjZQkAzAgCCQCkAwEFAmNiCQDMCAIFAmNhCQDMCAIJAKQDAQUCY3IJAMwIAgkApAMBBQJjdAUDbmlsBQFqAmR4AR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjdAQCYksJAQJhTgAEAmJYCQDZBAEJAJEDAgUCYksFAXEEAmN4CQCRAwIFAmJLBQFyBAJiWQkA2QQBBQJjeAQCY3kJAJEDAgUCYksFAXMEAmJaCQDZBAEFAmN5BAJiTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiTQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJjYQkAkQMCBQJiSwUBcAQCZ2QICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnbAkBAmJ3AQUCY3gEAmdtCQECYncBBQJjeQQCZ24JAQFEAgUCZ2wFAmJMBAJnbwkBAUQCBQJnbQUCYk0EAmNnAwkAAAIFAmdkAAAFAWUJAQJieQIFAmdvBQJnbgQCY0UJAQFEAgUCY3QFAmJNBAJjRAkAvAIDBQJjRQUBZAUCY2cEAmNyCQEBRwIFAmNEBQJiTAQCZEQJAQJjcAkCAACgwh4FAmNyBQJiWQUCY3QFAmJaAgAGBwQCY08IBQJkRAJfMQQCZ2sIBQJkRAJfMwQCY2MIBQJkRAJfNAQCY2UIBQJkRAJfNQQCY2IIBQJkRAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY08JAMwIAgkApAMBCQEBRwIFAmNnBQFiCQDMCAIJAKQDAQUCY2MJAMwIAgkApAMBBQJjZQkAzAgCCQCkAwEFAmNiCQDMCAIFAmNhCQDMCAIJAKQDAQUCY3IJAMwIAgkApAMBBQJjdAUDbmlsBQFqAmR4ARNldmFsdWF0ZUdldFJFQURPTkxZAgJncAJncQQCY0cJAQJiVAQCAAUCZ3AFAmdxBQR0aGlzBAJjbQgFAmNHAl8xBAJjbggFAmNHAl8yBAJjYwgFAmNHAl81BAJjZQgFAmNHAl82BAJjYggFAmNHAl83BAJjaAgFAmNHAl84BAJjYQkBDXBhcnNlSW50VmFsdWUBCAUCY0cCXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjbQkAzAgCCQCkAwEFAmNuCQDMCAIJAKQDAQUCY2MJAMwIAgkApAMBBQJjZQkAzAgCCQCkAwEFAmNiCQDMCAIJAKYDAQUCY2gJAMwIAgkApAMBBQJjYQUDbmlsBQFqAQJncgECZ3MABAJndAQCZEkJAQJlSwADCQABAgUCZEkCCkJ5dGVWZWN0b3IEAmVPBQJkSQUCZU8DCQABAgUCZEkCBFVuaXQIBQJncg9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZEkFAmdyAwkAAQIFAmRJAgVPcmRlcgQCZGoFAmRJBAJndQkBAmFNAAQCYXoJAQJkaQEFAmRqBAJhQQkA9AMDCAUCZGoJYm9keUJ5dGVzCQCRAwIIBQJkagZwcm9vZnMAAAgFAmRqD3NlbmRlclB1YmxpY0tleQQCYUIJAPQDAwgFAmRqCWJvZHlCeXRlcwkAkQMCCAUCZGoGcHJvb2ZzAAEFAmd1AwMDBQJhegUCYUEHBQJhQgcGCQECYXkDBQJhegUCYUEFAmFCAwkAAQIFAmRJAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZUwFAmRJBAJndgkA9gMBCQEFdmFsdWUBCAUCZUwGc2NyaXB0BAJndwkA2wQBCQEFdmFsdWUBCQCdCAIFAmFKCQECYXcABAJneAkA8QcBBQR0aGlzAwMJAAACBQJndwUCZ3YJAQIhPQIFAmd4BQJndgcGCQD0AwMIBQJncglib2R5Qnl0ZXMJAJEDAggFAmdyBnByb29mcwAABQJndAkA9AMDCAUCZ3IJYm9keUJ5dGVzCQCRAwIIBQJncgZwcm9vZnMAAAUCZ3TgLAlD", "chainId": 84, "height": 2336996, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7ChXQZZzw7A4RqdEe8yZdbYS3ve5nR4b9fDM2o71LKsi Next: 4LekBnyXvHxeepZcPEJF5V1GsYPrKj3zf6PPPNhFbiqT Diff:
OldNewDifferences
800800 let X = dx.caller
801801 let Y = dx.transactionId
802802 let fo = dM(dN, dO, X, Y)
803- let fp = fo._1
804- let cV = fo._2
805- let dL = fo._3
806- let fq = fo._4
807- let dS = fo._5
808- let fr = if (if ((fi > 0))
809- then (fi > fp)
810- else false)
811- then aG(makeString(["amount to receive is less than ", toString(fi)], ""))
812- else fp
813- let dG = dE(fr)
814- if ((dG == dG))
803+ if ((fo == fo))
815804 then {
816- let fc = if (fj)
805+ let dS = fo._5
806+ let fp = fo._4
807+ let dL = fo._3
808+ let cV = fo._2
809+ let fq = fo._1
810+ let fr = if (if ((fi > 0))
811+ then (fi > fq)
812+ else false)
813+ then aG(makeString(["amount to receive is less than ", toString(fi)], ""))
814+ else fq
815+ let dG = dE(fr)
816+ if ((dG == dG))
817817 then {
818- let fs = invoke(bf, "stake", nil, [AttachedPayment(aZ, fr)])
819- if ((fs == fs))
820- then nil
821- else throw("Strict value is not equal to itself.")
818+ let fc = if (fj)
819+ then {
820+ let fs = invoke(bf, "stake", nil, [AttachedPayment(aZ, fr)])
821+ if ((fs == fs))
822+ then nil
823+ else throw("Strict value is not equal to itself.")
824+ }
825+ else [ScriptTransfer(dx.caller, fr, aZ)]
826+ let ft = if ((dL > 0))
827+ then [ScriptTransfer(aK, dL, dO)]
828+ else nil
829+ let fu = if ((this == aK))
830+ then $Tuple2(0, 0)
831+ else if (dS)
832+ then $Tuple2(-(dL), 0)
833+ else $Tuple2(0, -(dL))
834+ let db = fu._1
835+ let dc = fu._2
836+ let fv = da(db, dc, 0)
837+ let ff = fv._1
838+ let cZ = fv._2
839+ $Tuple2((((cV ++ fc) ++ ft) ++ ff), fr)
822840 }
823- else [ScriptTransfer(dx.caller, fr, aZ)]
824- let ft = if ((dL > 0))
825- then [ScriptTransfer(aK, dL, dO)]
826- else nil
827- let fu = if ((this == aK))
828- then $Tuple2(0, 0)
829- else if (dS)
830- then $Tuple2(-(dL), 0)
831- else $Tuple2(0, -(dL))
832- let db = fu._1
833- let dc = fu._2
834- let fv = da(db, dc, 0)
835- let ff = fv._1
836- let cZ = fv._2
837- $Tuple2((((cV ++ fc) ++ ft) ++ ff), fr)
841+ else throw("Strict value is not equal to itself.")
838842 }
839843 else throw("Strict value is not equal to itself.")
840844 }
846850 @Callable(dx)
847851 func putOneTknREADONLY (dO,dN) = {
848852 let fw = dM(dN, aQ(dO), unit, unit)
849- let fp = fw._1
853+ let fq = fw._1
850854 let cV = fw._2
851855 let dL = fw._3
852- let fq = fw._4
856+ let fp = fw._4
853857 let dS = fw._5
854- $Tuple2(nil, $Tuple3(fp, dL, fq))
858+ $Tuple2(nil, $Tuple3(fq, dL, fp))
855859 }
856860
857861
885889 let X = dx.caller
886890 let Y = dx.transactionId
887891 let fz = er(es, ea, dO, X, Y)
888- let fA = fz._1
889- let cV = fz._2
890- let dL = fz._3
891- let fq = fz._4
892- let eu = fz._5
893- let dF = if (if ((fi > 0))
894- then (fi > fA)
895- else false)
896- then aG(makeString(["amount to receive is less than ", toString(fi)], ""))
897- else fA
898- let fB = invoke(aJ, "burn", [ea], [AttachedPayment(dO, ea)])
899- if ((fB == fB))
892+ if ((fz == fz))
900893 then {
901- let fC = [ScriptTransfer(X, dF, es)]
902- let ft = if ((dL > 0))
903- then [ScriptTransfer(aK, dL, es)]
904- else nil
905- let fD = {
906- let fE = if ((this == aK))
907- then 0
908- else dL
909- if (eu)
910- then $Tuple2(-((dF + fE)), 0)
911- else $Tuple2(0, -((dF + fE)))
912- }
913- let db = fD._1
914- let dc = fD._2
915- let fF = da(db, dc, 0)
916- let ff = fF._1
917- let cZ = fF._2
918- $Tuple2((((cV ++ fC) ++ ft) ++ ff), dF)
894+ let eu = fz._5
895+ let fp = fz._4
896+ let dL = fz._3
897+ let cV = fz._2
898+ let fA = fz._1
899+ let dF = if (if ((fi > 0))
900+ then (fi > fA)
901+ else false)
902+ then aG(makeString(["amount to receive is less than ", toString(fi)], ""))
903+ else fA
904+ let fB = invoke(aJ, "burn", [ea], [AttachedPayment(dO, ea)])
905+ if ((fB == fB))
906+ then {
907+ let fC = [ScriptTransfer(X, dF, es)]
908+ let ft = if ((dL > 0))
909+ then [ScriptTransfer(aK, dL, es)]
910+ else nil
911+ let fD = {
912+ let fE = if ((this == aK))
913+ then 0
914+ else dL
915+ if (eu)
916+ then $Tuple2(-((dF + fE)), 0)
917+ else $Tuple2(0, -((dF + fE)))
918+ }
919+ let db = fD._1
920+ let dc = fD._2
921+ let fF = da(db, dc, 0)
922+ let ff = fF._1
923+ let cZ = fF._2
924+ $Tuple2((((cV ++ fC) ++ ft) ++ ff), dF)
925+ }
926+ else throw("Strict value is not equal to itself.")
919927 }
920928 else throw("Strict value is not equal to itself.")
921929 }
930938 let fA = fG._1
931939 let cV = fG._2
932940 let dL = fG._3
933- let fq = fG._4
941+ let fp = fG._4
934942 let eu = fG._5
935- $Tuple2(nil, $Tuple3(fA, dL, fq))
943+ $Tuple2(nil, $Tuple3(fA, dL, fp))
936944 }
937945
938946
966974 if ((fI == fI))
967975 then {
968976 let fJ = er(es, fH, aZ, X, Y)
969- let fA = fJ._1
970- let cV = fJ._2
971- let dL = fJ._3
972- let fq = fJ._4
973- let eu = fJ._5
974- let dF = if (if ((fi > 0))
975- then (fi > fA)
976- else false)
977- then aG(makeString(["amount to receive is less than ", toString(fi)], ""))
978- else fA
979- let fB = invoke(aJ, "burn", [fH], [AttachedPayment(aZ, fH)])
980- if ((fB == fB))
977+ if ((fJ == fJ))
981978 then {
982- let fC = [ScriptTransfer(dx.caller, dF, es)]
983- let ft = if ((dL > 0))
984- then [ScriptTransfer(aK, dL, es)]
985- else nil
986- let fK = {
987- let fE = if ((this == aK))
988- then 0
989- else dL
990- if (eu)
991- then $Tuple2(-((dF + fE)), 0)
992- else $Tuple2(0, -((dF + fE)))
993- }
994- let db = fK._1
995- let dc = fK._2
996- let fL = da(db, dc, 0)
997- let ff = fL._1
998- let cZ = fL._2
999- $Tuple2((((cV ++ fC) ++ ft) ++ ff), dF)
979+ let eu = fJ._5
980+ let fp = fJ._4
981+ let dL = fJ._3
982+ let cV = fJ._2
983+ let fA = fJ._1
984+ let dF = if (if ((fi > 0))
985+ then (fi > fA)
986+ else false)
987+ then aG(makeString(["amount to receive is less than ", toString(fi)], ""))
988+ else fA
989+ let fB = invoke(aJ, "burn", [fH], [AttachedPayment(aZ, fH)])
990+ if ((fB == fB))
991+ then {
992+ let fC = [ScriptTransfer(dx.caller, dF, es)]
993+ let ft = if ((dL > 0))
994+ then [ScriptTransfer(aK, dL, es)]
995+ else nil
996+ let fK = {
997+ let fE = if ((this == aK))
998+ then 0
999+ else dL
1000+ if (eu)
1001+ then $Tuple2(-((dF + fE)), 0)
1002+ else $Tuple2(0, -((dF + fE)))
1003+ }
1004+ let db = fK._1
1005+ let dc = fK._2
1006+ let fL = da(db, dc, 0)
1007+ let ff = fL._1
1008+ let cZ = fL._2
1009+ $Tuple2((((cV ++ fC) ++ ft) ++ ff), dF)
1010+ }
1011+ else throw("Strict value is not equal to itself.")
10001012 }
10011013 else throw("Strict value is not equal to itself.")
10021014 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
6868 func J (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((0 > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((e > H))
7777 then -(H)
7878 else H
7979
8080
8181 func P () = "%s__factoryContract"
8282
8383
8484 func Q () = "%s__managerPublicKey"
8585
8686
8787 func R () = "%s__pendingManagerPublicKey"
8888
8989
9090 func S () = "%s%s__price__last"
9191
9292
9393 func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9494
9595
9696 func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
9999 func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102102 func aa () = "%s__amountAsset"
103103
104104
105105 func ab () = "%s__priceAsset"
106106
107107
108108 let ac = "%s__fee"
109109
110110 let ad = fraction(10, b, 10000)
111111
112112 let ae = valueOrElse(getInteger(this, ac), ad)
113113
114114 let af = makeString(["%s", "kLp"], j)
115115
116116 let ag = makeString(["%s", "kLpRefreshedHeight"], j)
117117
118118 let ah = makeString(["%s", "refreshKLpDelay"], j)
119119
120120 let ai = 30
121121
122122 let aj = valueOrElse(getInteger(this, ah), ai)
123123
124124 func ak () = "%s__factoryConfig"
125125
126126
127127 func al () = "%s%s__matcher__publicKey"
128128
129129
130130 func am (an) = (("%s%s%s__" + an) + "__mappings__poolContract2LpAsset")
131131
132132
133133 func ao (ap,aq) = (((("%d%d%s__" + ap) + "__") + aq) + "__config")
134134
135135
136136 func ar (as) = ("%s%s%s__mappings__baseAsset2internalId__" + as)
137137
138138
139139 func at () = "%s__shutdown"
140140
141141
142142 func au (av) = ("%s%s__poolWeight__" + av)
143143
144144
145145 func aw () = "%s__allowedLpScriptHash"
146146
147147
148148 let ax = "%s__feeCollectorAddress"
149149
150150 func ay (az,aA,aB) = throw(((((("order validation failed: orderValid=" + toString(az)) + " senderValid=") + toString(aA)) + " matcherValid=") + toString(aB)))
151151
152152
153153 func aC (aD,aE) = valueOrErrorMessage(getString(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
154154
155155
156156 func aF (aD,aE) = valueOrErrorMessage(getInteger(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
157157
158158
159159 func aG (aH) = throw(makeString(["lp.ride:", aH], " "))
160160
161161
162162 func aI (aH) = makeString(["lp.ride:", aH], " ")
163163
164164
165165 let aJ = addressFromStringValue(aC(this, P()))
166166
167167 let aK = addressFromStringValue(aC(aJ, ax))
168168
169169 func aL () = valueOrElse(getBoolean(aJ, at()), false)
170170
171171
172172 func aM () = fromBase58String(aC(aJ, al()))
173173
174174
175175 func aN () = {
176176 let aO = aC(this, aa())
177177 let aP = aC(this, ab())
178178 let aq = aF(aJ, ar(aP))
179179 let ap = aF(aJ, ar(aO))
180180 split(aC(aJ, ao(toString(ap), toString(aq))), j)
181181 }
182182
183183
184184 func aQ (aR) = if ((aR == i))
185185 then unit
186186 else fromBase58String(aR)
187187
188188
189189 func aS (aR) = if ((aR == unit))
190190 then i
191191 else toBase58String(value(aR))
192192
193193
194194 func aT (aU) = $Tuple7(addressFromStringValue(aU[o]), parseIntValue(aU[p]), fromBase58String(aU[q]), aQ(aU[r]), aQ(aU[s]), parseIntValue(aU[t]), parseIntValue(aU[u]))
195195
196196
197197 let aV = aT(aN())
198198
199199 let aW = aV
200200
201201 let aX = aW._1
202202
203203 let aY = aW._2
204204
205205 let aZ = aW._3
206206
207207 let ba = aW._4
208208
209209 let bb = aW._5
210210
211211 let bc = aW._6
212212
213213 let bd = aW._7
214214
215215 func be () = split(aC(aJ, ak()), j)
216216
217217
218218 let bf = valueOrErrorMessage(addressFromString(be()[B]), "incorrect staking address")
219219
220220 let bg = valueOrErrorMessage(addressFromString(be()[C]), "incorrect staking address")
221221
222222 func bh (bi,bj,bk,bl,bm,bn,bo,bp,bq,br) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bi), toString(bj), toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br)], j)
223223
224224
225225 func bs (bt,bu,bv,bl,bo,bp) = makeString(["%d%d%d%d%d%d", toString(bt), toString(bu), toString(bv), toString(bl), toString(bo), toString(bp)], j)
226226
227227
228228 func bw (bx) = if ((bx == "WAVES"))
229229 then wavesBalance(this).available
230230 else assetBalance(this, fromBase58String(bx))
231231
232232
233233 func by (bz,bA) = fraction(bz, d, bA)
234234
235235
236236 func bB (bC,bD,bE,bF) = {
237237 let bG = D(bE, bC)
238238 let bH = D(bF, bD)
239239 by(bH, bG)
240240 }
241241
242242
243243 func bI (bE,bF,bJ) = {
244244 let bK = aN()
245245 let bL = parseIntValue(bK[t])
246246 let bM = parseIntValue(bK[u])
247247 let bN = bB(bL, bM, bE, bF)
248248 let bA = D(bE, bL)
249249 let bz = D(bF, bM)
250250 let bO = D(bJ, b)
251251 let bP = by(bA, bO)
252252 let bQ = by(bz, bO)
253253 [bN, bP, bQ]
254254 }
255255
256256
257257 func bR (bE,bF,bJ) = {
258258 let bS = bI(bE, bF, bJ)
259259 [G(bS[0], b), G(bS[1], b), G(bS[2], b)]
260260 }
261261
262262
263263 func bT (bU,bV,bW,X) = {
264264 let bK = aN()
265265 let bX = bK[q]
266266 let bY = bK[r]
267267 let bZ = bK[s]
268268 let bC = parseIntValue(bK[t])
269269 let bD = parseIntValue(bK[u])
270270 let ca = bK[p]
271271 let cb = valueOrErrorMessage(assetInfo(fromBase58String(bX)), (("Asset " + bX) + " doesn't exist")).quantity
272272 if ((bX != bV))
273273 then throw("Invalid asset passed.")
274274 else {
275275 let cc = bw(bY)
276276 let cd = D(cc, bC)
277277 let ce = bw(bZ)
278278 let cf = D(ce, bD)
279279 let cg = by(cf, cd)
280280 let ch = G(cg, b)
281281 let ci = D(bW, b)
282282 let cj = D(cb, b)
283283 let ck = fraction(cd, ci, cj)
284284 let cl = fraction(cf, ci, cj)
285285 let cm = G(ck, bC)
286286 let cn = G(cl, bD)
287287 let co = if ((bU == ""))
288288 then nil
289289 else [ScriptTransfer(X, cm, if ((bY == "WAVES"))
290290 then unit
291291 else fromBase58String(bY)), ScriptTransfer(X, cn, if ((bZ == "WAVES"))
292292 then unit
293293 else fromBase58String(bZ)), StringEntry(Z(toString(X), bU), bs(cm, cn, bW, ch, height, lastBlock.timestamp)), IntegerEntry(S(), ch), IntegerEntry(T(height, lastBlock.timestamp), ch)]
294294 $Tuple10(cm, cn, bY, bZ, cc, ce, cb, cg, ca, co)
295295 }
296296 }
297297
298298
299299 func cp (bU,cq,cr,cs,ct,cu,X,cv,cw) = {
300300 let bK = aN()
301301 let bX = fromBase58String(bK[q])
302302 let cx = bK[r]
303303 let cy = bK[s]
304304 let cz = bK[v]
305305 let cA = bK[w]
306306 let bL = parseIntValue(bK[t])
307307 let bM = parseIntValue(bK[u])
308308 let ca = bK[p]
309309 let cb = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
310310 let cB = toBase58String(valueOrElse(cs, fromBase58String("WAVES")))
311311 let cC = toBase58String(valueOrElse(cu, fromBase58String("WAVES")))
312312 if (if ((cx != cB))
313313 then true
314314 else (cy != cC))
315315 then throw("Invalid amt or price asset passed.")
316316 else {
317317 let cc = if (cv)
318318 then bw(cx)
319319 else (bw(cx) - cr)
320320 let ce = if (cv)
321321 then bw(cy)
322322 else (bw(cy) - ct)
323323 let cD = D(cr, bL)
324324 let cE = D(ct, bM)
325325 let cF = by(cE, cD)
326326 let cd = D(cc, bL)
327327 let cf = D(ce, bM)
328328 let cG = if ((cb == 0))
329329 then {
330330 let cg = e
331331 let cH = e
332332 let bO = pow((cD * cE), 0, toBigInt(5), 1, 0, DOWN)
333333 $Tuple5(G(bO, b), G(cD, bL), G(cE, bM), by((cf + cE), (cd + cD)), cH)
334334 }
335335 else {
336336 let cg = by(cf, cd)
337337 let cH = fraction(O((cg - cF)), d, cg)
338338 let cI = D(cq, b)
339339 if (if ((cg != e))
340340 then (cH > cI)
341341 else false)
342342 then throw(((("Price slippage " + toString(cH)) + " exceeded the passed limit of ") + toString(cI)))
343343 else {
344344 let cj = D(cb, b)
345345 let cJ = fraction(cD, cg, d)
346346 let cK = fraction(cE, d, cg)
347347 let cL = if ((cJ > cE))
348348 then $Tuple2(cK, cE)
349349 else $Tuple2(cD, cJ)
350350 let cM = cL._1
351351 let cN = cL._2
352352 let bO = fraction(cj, cN, cf)
353353 $Tuple5(G(bO, b), G(cM, bL), G(cN, bM), cg, cH)
354354 }
355355 }
356356 let cO = cG._1
357357 let cP = cG._2
358358 let cQ = cG._3
359359 let ch = G(cG._4, b)
360360 let cR = G(cG._5, b)
361361 if ((0 >= cO))
362362 then throw("Invalid calculations. LP calculated is less than zero.")
363363 else {
364364 let cS = if (!(cw))
365365 then 0
366366 else cO
367367 let cT = (cr - cP)
368368 let cU = (ct - cQ)
369369 let cV = [IntegerEntry(S(), ch), IntegerEntry(T(height, lastBlock.timestamp), ch), StringEntry(W(X, bU), bh(cP, cQ, cS, ch, cq, cR, height, lastBlock.timestamp, cT, cU))]
370370 $Tuple13(cO, cS, ch, cc, ce, cb, bX, ca, cV, cT, cU, cs, cu)
371371 }
372372 }
373373 }
374374
375375
376376 func cW (cX,cY,cb) = {
377377 let cZ = fraction(pow((cX * cY), 0, toBigInt(5), 1, 0, DOWN), d, cb)
378378 cZ
379379 }
380380
381381
382382 func da (db,dc,dd) = {
383383 let de = (bw(aS(ba)) + db)
384384 let df = (bw(aS(bb)) + dc)
385385 let dg = (value(assetInfo(aZ)).quantity + dd)
386386 let cZ = cW(toBigInt(de), toBigInt(df), toBigInt(dg))
387387 let dh = [IntegerEntry(ag, height), StringEntry(af, toString(cZ))]
388388 $Tuple2(dh, cZ)
389389 }
390390
391391
392392 func di (dj) = {
393393 let bK = aN()
394394 let dk = bK[r]
395395 let dl = bK[s]
396396 let ca = parseIntValue(bK[p])
397397 let bL = parseIntValue(bK[t])
398398 let bM = parseIntValue(bK[u])
399399 let dm = dj.amount
400400 let dn = fraction(dj.amount, dj.price, b)
401401 let do = if ((dj.orderType == Buy))
402402 then $Tuple2(dm, -(dn))
403403 else $Tuple2(-(dm), dn)
404404 let db = do._1
405405 let dc = do._2
406406 if (if (if (aL())
407407 then true
408408 else (ca == m))
409409 then true
410410 else (ca == n))
411411 then throw("Exchange operations disabled")
412412 else {
413413 let dp = aS(value(dj.assetPair.amountAsset))
414414 let dq = aS(value(dj.assetPair.priceAsset))
415415 if (if ((dp != dk))
416416 then true
417417 else (dq != dl))
418418 then throw("Wrong order assets.")
419419 else {
420420 let dr = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, af), aI("kLp is required"))), aI("invalid kLp"))
421421 let ds = da(db, dc, 0)
422422 let dt = ds._1
423423 let du = ds._2
424424 let dv = (du > dr)
425425 dv
426426 }
427427 }
428428 }
429429
430430
431431 func dw (dx) = if ((size(dx.payments) != 1))
432432 then throw("exactly 1 payment is expected")
433433 else {
434434 let dy = value(dx.payments[0])
435435 let bV = value(dy.assetId)
436436 let dz = dy.amount
437437 let cG = bT(toBase58String(dx.transactionId), toBase58String(bV), dz, dx.caller)
438438 let cm = cG._1
439439 let cn = cG._2
440440 let ca = parseIntValue(cG._9)
441441 let co = cG._10
442442 if (if (aL())
443443 then true
444444 else (ca == n))
445445 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
446446 else $Tuple5(cm, cn, dz, bV, co)
447447 }
448448
449449
450450 func dA (dx,cq,cw) = if ((size(dx.payments) != 2))
451451 then throw("exactly 2 payments are expected")
452452 else {
453453 let dB = value(dx.payments[0])
454454 let dC = value(dx.payments[1])
455455 let dD = cp(toBase58String(dx.transactionId), cq, dB.amount, dB.assetId, dC.amount, dC.assetId, toString(dx.caller), false, cw)
456456 let ca = parseIntValue(dD._8)
457457 if (if (if (aL())
458458 then true
459459 else (ca == l))
460460 then true
461461 else (ca == n))
462462 then throw(("Put operation is blocked by admin. Status = " + toString(ca)))
463463 else dD
464464 }
465465
466466
467467 func dE (dF) = {
468468 let dG = invoke(aJ, "emit", [dF], nil)
469469 if ((dG == dG))
470470 then {
471471 let dH = {
472472 let dI = dG
473473 if ($isInstanceOf(dI, "Address"))
474474 then {
475475 let dJ = dI
476476 invoke(dJ, "emit", [dF], nil)
477477 }
478478 else unit
479479 }
480480 if ((dH == dH))
481481 then dF
482482 else throw("Strict value is not equal to itself.")
483483 }
484484 else throw("Strict value is not equal to itself.")
485485 }
486486
487487
488488 func dK (dF) = {
489489 let dL = fraction(dF, ae, b)
490490 $Tuple2((dF - dL), dL)
491491 }
492492
493493
494494 func dM (dN,dO,X,Y) = {
495495 let dP = (Y == unit)
496496 let dQ = bw(aS(ba))
497497 let dR = bw(aS(bb))
498498 let dS = if ((dO == ba))
499499 then true
500500 else if ((dO == bb))
501501 then false
502502 else aG("invalid asset")
503503 let dT = if (dP)
504504 then $Tuple2(dQ, dR)
505505 else if (dS)
506506 then $Tuple2((dQ - dN), dR)
507507 else $Tuple2(dQ, (dR - dN))
508508 let dU = dT._1
509509 let dV = dT._2
510510 let dW = if (dS)
511511 then $Tuple2(dN, 0)
512512 else $Tuple2(0, dN)
513513 let dX = dW._1
514514 let dY = dW._2
515515 let dm = dK(dX)._1
516516 let dn = dK(dY)._1
517517 let dZ = dK(dN)
518518 let ea = dZ._1
519519 let dL = dZ._2
520520 let eb = (dU + dm)
521521 let ec = (dV + dn)
522522 let ed = by(D(ec, bd), D(eb, bc))
523523 let ee = G(ed, b)
524524 let ef = if (dS)
525525 then dU
526526 else dV
527527 let eg = toBigInt(ef)
528528 let eh = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
529529 let ei = if ((eh > f))
530530 then true
531531 else aG("initial deposit requires all coins")
532532 if ((ei == ei))
533533 then {
534534 let ej = toBigInt(ea)
535535 let ek = max([0, toInt(((eh * (sqrtBigInt((d + ((ej * d) / eg)), 18, 18, DOWN) - d)) / d))])
536536 let cV = if (dP)
537537 then nil
538538 else [IntegerEntry(S(), ee), IntegerEntry(T(height, lastBlock.timestamp), ee), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bh(dX, dY, ek, ee, 0, 0, height, lastBlock.timestamp, 0, 0))]
539539 let el = by(D(dV, bd), D(dU, bc))
540540 let em = G(el, b)
541541 let en = {
542542 let eo = if (dS)
543543 then $Tuple2(dX, dU)
544544 else $Tuple2(dY, dV)
545545 let dF = eo._1
546546 let ep = eo._2
547547 let eq = toInt(fraction(eh, toBigInt((dF / 2)), toBigInt(ep)))
548548 fraction((ek - eq), b, eq)
549549 }
550550 $Tuple5(ek, cV, dL, en, dS)
551551 }
552552 else throw("Strict value is not equal to itself.")
553553 }
554554
555555
556556 func er (es,ea,dO,X,Y) = {
557557 let dP = (Y == unit)
558558 let et = [if ((dO == aZ))
559559 then true
560560 else aG("invalid lp asset")]
561561 if ((et == et))
562562 then {
563563 let eu = if ((es == ba))
564564 then true
565565 else if ((es == bb))
566566 then false
567567 else aG("invalid asset")
568568 let ev = if (eu)
569569 then toBigInt(bw(aS(ba)))
570570 else toBigInt(bw(aS(bb)))
571571 let ew = bw(aS(ba))
572572 let ex = bw(aS(bb))
573573 let ey = if (eu)
574574 then ew
575575 else ex
576576 let ez = toBigInt(ey)
577577 let eh = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
578578 let eA = toBigInt(ea)
579579 let eB = max([0, toInt(((ev * (d - pow((d - ((eA * d) / eh)), 18, h, 0, 18, DOWN))) / d))])
580580 let eC = dK(eB)
581581 let eD = eC._1
582582 let dL = eC._2
583583 let eE = if (eu)
584584 then $Tuple4(eD, 0, (ew - eB), ex)
585585 else $Tuple4(0, eD, ew, (ex - eB))
586586 let eF = eE._1
587587 let eG = eE._2
588588 let eH = eE._3
589589 let eI = eE._4
590590 let ed = by(D(eI, bd), D(eH, bc))
591591 let ee = G(ed, b)
592592 let cV = if (dP)
593593 then nil
594594 else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bs(eF, eG, ea, ee, height, lastBlock.timestamp)), IntegerEntry(S(), ee), IntegerEntry(T(height, lastBlock.timestamp), ee)]
595595 let el = by(D(ex, bd), D(ew, bc))
596596 let em = G(el, b)
597597 let en = {
598598 let eJ = (toInt(fraction(ev, eA, eh)) * 2)
599599 fraction((eD - eJ), b, eJ)
600600 }
601601 $Tuple5(eD, cV, dL, en, eu)
602602 }
603603 else throw("Strict value is not equal to itself.")
604604 }
605605
606606
607607 func eK () = {
608608 let dI = getString(Q())
609609 if ($isInstanceOf(dI, "String"))
610610 then {
611611 let eL = dI
612612 fromBase58String(eL)
613613 }
614614 else if ($isInstanceOf(dI, "Unit"))
615615 then unit
616616 else throw("Match error")
617617 }
618618
619619
620620 func eM () = {
621621 let dI = getString(R())
622622 if ($isInstanceOf(dI, "String"))
623623 then {
624624 let eL = dI
625625 fromBase58String(eL)
626626 }
627627 else if ($isInstanceOf(dI, "Unit"))
628628 then unit
629629 else throw("Match error")
630630 }
631631
632632
633633 func eN (dx) = {
634634 let dI = eK()
635635 if ($isInstanceOf(dI, "ByteVector"))
636636 then {
637637 let eO = dI
638638 (dx.callerPublicKey == eO)
639639 }
640640 else if ($isInstanceOf(dI, "Unit"))
641641 then (dx.caller == this)
642642 else throw("Match error")
643643 }
644644
645645
646646 func eP (dx) = {
647647 let eQ = throw("Permission denied")
648648 let dI = eK()
649649 if ($isInstanceOf(dI, "ByteVector"))
650650 then {
651651 let eO = dI
652652 if ((dx.callerPublicKey == eO))
653653 then true
654654 else eQ
655655 }
656656 else if ($isInstanceOf(dI, "Unit"))
657657 then if ((dx.caller == this))
658658 then true
659659 else eQ
660660 else throw("Match error")
661661 }
662662
663663
664664 @Callable(dx)
665665 func setManager (eR) = {
666666 let eS = eP(dx)
667667 if ((eS == eS))
668668 then {
669669 let eT = fromBase58String(eR)
670670 if ((eT == eT))
671671 then [StringEntry(R(), eR)]
672672 else throw("Strict value is not equal to itself.")
673673 }
674674 else throw("Strict value is not equal to itself.")
675675 }
676676
677677
678678
679679 @Callable(dx)
680680 func confirmManager () = {
681681 let eU = eM()
682682 let eV = if (isDefined(eU))
683683 then true
684684 else throw("No pending manager")
685685 if ((eV == eV))
686686 then {
687687 let eW = if ((dx.callerPublicKey == value(eU)))
688688 then true
689689 else throw("You are not pending manager")
690690 if ((eW == eW))
691691 then [StringEntry(Q(), toBase58String(value(eU))), DeleteEntry(R())]
692692 else throw("Strict value is not equal to itself.")
693693 }
694694 else throw("Strict value is not equal to itself.")
695695 }
696696
697697
698698
699699 @Callable(dx)
700700 func put (cq,eX) = if ((0 > cq))
701701 then throw("Invalid slippageTolerance passed")
702702 else {
703703 let dD = dA(dx, cq, true)
704704 let cS = dD._2
705705 let bX = dD._7
706706 let co = dD._9
707707 let cT = dD._10
708708 let cU = dD._11
709709 let eY = dD._12
710710 let eZ = dD._13
711711 let dG = invoke(aJ, "emit", [cS], nil)
712712 if ((dG == dG))
713713 then {
714714 let dH = {
715715 let dI = dG
716716 if ($isInstanceOf(dI, "Address"))
717717 then {
718718 let dJ = dI
719719 invoke(dJ, "emit", [cS], nil)
720720 }
721721 else unit
722722 }
723723 if ((dH == dH))
724724 then {
725725 let fa = if ((cT > 0))
726726 then invoke(bg, "put", nil, [AttachedPayment(eY, cT)])
727727 else nil
728728 if ((fa == fa))
729729 then {
730730 let fb = if ((cU > 0))
731731 then invoke(bg, "put", nil, [AttachedPayment(eZ, cU)])
732732 else nil
733733 if ((fb == fb))
734734 then {
735735 let fc = if (eX)
736736 then {
737737 let fd = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
738738 if ((fd == fd))
739739 then nil
740740 else throw("Strict value is not equal to itself.")
741741 }
742742 else [ScriptTransfer(dx.caller, cS, bX)]
743743 let fe = da(0, 0, 0)
744744 let ff = fe._1
745745 let cZ = fe._2
746746 ((co ++ fc) ++ ff)
747747 }
748748 else throw("Strict value is not equal to itself.")
749749 }
750750 else throw("Strict value is not equal to itself.")
751751 }
752752 else throw("Strict value is not equal to itself.")
753753 }
754754 else throw("Strict value is not equal to itself.")
755755 }
756756
757757
758758
759759 @Callable(dx)
760760 func putForFree (fg) = if ((0 > fg))
761761 then throw("Invalid value passed")
762762 else {
763763 let dD = dA(dx, fg, false)
764764 let co = dD._9
765765 let fh = da(0, 0, 0)
766766 let ff = fh._1
767767 let cZ = fh._2
768768 (co ++ ff)
769769 }
770770
771771
772772
773773 @Callable(dx)
774774 func putOneTkn (fi,fj) = {
775775 let fk = {
776776 let fl = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
777777 if ($isInstanceOf(fl, "Boolean"))
778778 then fl
779779 else throw(($getType(fl) + " couldn't be cast to Boolean"))
780780 }
781781 let fm = if (if (if (aL())
782782 then true
783783 else (aY == l))
784784 then true
785785 else (aY == n))
786786 then true
787787 else fk
788788 let et = [if (if (!(fm))
789789 then true
790790 else eN(dx))
791791 then true
792792 else aG("put operation is blocked by admin"), if ((size(dx.payments) == 1))
793793 then true
794794 else aG("exactly 1 payment are expected")]
795795 if ((et == et))
796796 then {
797797 let fn = dx.payments[0]
798798 let dO = fn.assetId
799799 let dN = fn.amount
800800 let X = dx.caller
801801 let Y = dx.transactionId
802802 let fo = dM(dN, dO, X, Y)
803- let fp = fo._1
804- let cV = fo._2
805- let dL = fo._3
806- let fq = fo._4
807- let dS = fo._5
808- let fr = if (if ((fi > 0))
809- then (fi > fp)
810- else false)
811- then aG(makeString(["amount to receive is less than ", toString(fi)], ""))
812- else fp
813- let dG = dE(fr)
814- if ((dG == dG))
803+ if ((fo == fo))
815804 then {
816- let fc = if (fj)
805+ let dS = fo._5
806+ let fp = fo._4
807+ let dL = fo._3
808+ let cV = fo._2
809+ let fq = fo._1
810+ let fr = if (if ((fi > 0))
811+ then (fi > fq)
812+ else false)
813+ then aG(makeString(["amount to receive is less than ", toString(fi)], ""))
814+ else fq
815+ let dG = dE(fr)
816+ if ((dG == dG))
817817 then {
818- let fs = invoke(bf, "stake", nil, [AttachedPayment(aZ, fr)])
819- if ((fs == fs))
820- then nil
821- else throw("Strict value is not equal to itself.")
818+ let fc = if (fj)
819+ then {
820+ let fs = invoke(bf, "stake", nil, [AttachedPayment(aZ, fr)])
821+ if ((fs == fs))
822+ then nil
823+ else throw("Strict value is not equal to itself.")
824+ }
825+ else [ScriptTransfer(dx.caller, fr, aZ)]
826+ let ft = if ((dL > 0))
827+ then [ScriptTransfer(aK, dL, dO)]
828+ else nil
829+ let fu = if ((this == aK))
830+ then $Tuple2(0, 0)
831+ else if (dS)
832+ then $Tuple2(-(dL), 0)
833+ else $Tuple2(0, -(dL))
834+ let db = fu._1
835+ let dc = fu._2
836+ let fv = da(db, dc, 0)
837+ let ff = fv._1
838+ let cZ = fv._2
839+ $Tuple2((((cV ++ fc) ++ ft) ++ ff), fr)
822840 }
823- else [ScriptTransfer(dx.caller, fr, aZ)]
824- let ft = if ((dL > 0))
825- then [ScriptTransfer(aK, dL, dO)]
826- else nil
827- let fu = if ((this == aK))
828- then $Tuple2(0, 0)
829- else if (dS)
830- then $Tuple2(-(dL), 0)
831- else $Tuple2(0, -(dL))
832- let db = fu._1
833- let dc = fu._2
834- let fv = da(db, dc, 0)
835- let ff = fv._1
836- let cZ = fv._2
837- $Tuple2((((cV ++ fc) ++ ft) ++ ff), fr)
841+ else throw("Strict value is not equal to itself.")
838842 }
839843 else throw("Strict value is not equal to itself.")
840844 }
841845 else throw("Strict value is not equal to itself.")
842846 }
843847
844848
845849
846850 @Callable(dx)
847851 func putOneTknREADONLY (dO,dN) = {
848852 let fw = dM(dN, aQ(dO), unit, unit)
849- let fp = fw._1
853+ let fq = fw._1
850854 let cV = fw._2
851855 let dL = fw._3
852- let fq = fw._4
856+ let fp = fw._4
853857 let dS = fw._5
854- $Tuple2(nil, $Tuple3(fp, dL, fq))
858+ $Tuple2(nil, $Tuple3(fq, dL, fp))
855859 }
856860
857861
858862
859863 @Callable(dx)
860864 func getOneTkn (fx,fi) = {
861865 let fk = {
862866 let fl = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
863867 if ($isInstanceOf(fl, "Boolean"))
864868 then fl
865869 else throw(($getType(fl) + " couldn't be cast to Boolean"))
866870 }
867871 let fy = if (if (aL())
868872 then true
869873 else (aY == n))
870874 then true
871875 else fk
872876 let et = [if (if (!(fy))
873877 then true
874878 else eN(dx))
875879 then true
876880 else aG("get operation is blocked by admin"), if ((size(dx.payments) == 1))
877881 then true
878882 else aG("exactly 1 payment are expected")]
879883 if ((et == et))
880884 then {
881885 let es = aQ(fx)
882886 let fn = dx.payments[0]
883887 let dO = fn.assetId
884888 let ea = fn.amount
885889 let X = dx.caller
886890 let Y = dx.transactionId
887891 let fz = er(es, ea, dO, X, Y)
888- let fA = fz._1
889- let cV = fz._2
890- let dL = fz._3
891- let fq = fz._4
892- let eu = fz._5
893- let dF = if (if ((fi > 0))
894- then (fi > fA)
895- else false)
896- then aG(makeString(["amount to receive is less than ", toString(fi)], ""))
897- else fA
898- let fB = invoke(aJ, "burn", [ea], [AttachedPayment(dO, ea)])
899- if ((fB == fB))
892+ if ((fz == fz))
900893 then {
901- let fC = [ScriptTransfer(X, dF, es)]
902- let ft = if ((dL > 0))
903- then [ScriptTransfer(aK, dL, es)]
904- else nil
905- let fD = {
906- let fE = if ((this == aK))
907- then 0
908- else dL
909- if (eu)
910- then $Tuple2(-((dF + fE)), 0)
911- else $Tuple2(0, -((dF + fE)))
912- }
913- let db = fD._1
914- let dc = fD._2
915- let fF = da(db, dc, 0)
916- let ff = fF._1
917- let cZ = fF._2
918- $Tuple2((((cV ++ fC) ++ ft) ++ ff), dF)
894+ let eu = fz._5
895+ let fp = fz._4
896+ let dL = fz._3
897+ let cV = fz._2
898+ let fA = fz._1
899+ let dF = if (if ((fi > 0))
900+ then (fi > fA)
901+ else false)
902+ then aG(makeString(["amount to receive is less than ", toString(fi)], ""))
903+ else fA
904+ let fB = invoke(aJ, "burn", [ea], [AttachedPayment(dO, ea)])
905+ if ((fB == fB))
906+ then {
907+ let fC = [ScriptTransfer(X, dF, es)]
908+ let ft = if ((dL > 0))
909+ then [ScriptTransfer(aK, dL, es)]
910+ else nil
911+ let fD = {
912+ let fE = if ((this == aK))
913+ then 0
914+ else dL
915+ if (eu)
916+ then $Tuple2(-((dF + fE)), 0)
917+ else $Tuple2(0, -((dF + fE)))
918+ }
919+ let db = fD._1
920+ let dc = fD._2
921+ let fF = da(db, dc, 0)
922+ let ff = fF._1
923+ let cZ = fF._2
924+ $Tuple2((((cV ++ fC) ++ ft) ++ ff), dF)
925+ }
926+ else throw("Strict value is not equal to itself.")
919927 }
920928 else throw("Strict value is not equal to itself.")
921929 }
922930 else throw("Strict value is not equal to itself.")
923931 }
924932
925933
926934
927935 @Callable(dx)
928936 func getOneTknREADONLY (es,ea) = {
929937 let fG = er(aQ(es), ea, aZ, unit, unit)
930938 let fA = fG._1
931939 let cV = fG._2
932940 let dL = fG._3
933- let fq = fG._4
941+ let fp = fG._4
934942 let eu = fG._5
935- $Tuple2(nil, $Tuple3(fA, dL, fq))
943+ $Tuple2(nil, $Tuple3(fA, dL, fp))
936944 }
937945
938946
939947
940948 @Callable(dx)
941949 func unstakeAndGetOneTkn (fH,fx,fi) = {
942950 let fk = {
943951 let fl = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
944952 if ($isInstanceOf(fl, "Boolean"))
945953 then fl
946954 else throw(($getType(fl) + " couldn't be cast to Boolean"))
947955 }
948956 let fy = if (if (aL())
949957 then true
950958 else (aY == n))
951959 then true
952960 else fk
953961 let et = [if (if (!(fy))
954962 then true
955963 else eN(dx))
956964 then true
957965 else aG("get operation is blocked by admin"), if ((size(dx.payments) == 0))
958966 then true
959967 else aG("no payments are expected")]
960968 if ((et == et))
961969 then {
962970 let es = aQ(fx)
963971 let X = dx.caller
964972 let Y = dx.transactionId
965973 let fI = invoke(bf, "unstake", [toBase58String(aZ), fH], nil)
966974 if ((fI == fI))
967975 then {
968976 let fJ = er(es, fH, aZ, X, Y)
969- let fA = fJ._1
970- let cV = fJ._2
971- let dL = fJ._3
972- let fq = fJ._4
973- let eu = fJ._5
974- let dF = if (if ((fi > 0))
975- then (fi > fA)
976- else false)
977- then aG(makeString(["amount to receive is less than ", toString(fi)], ""))
978- else fA
979- let fB = invoke(aJ, "burn", [fH], [AttachedPayment(aZ, fH)])
980- if ((fB == fB))
977+ if ((fJ == fJ))
981978 then {
982- let fC = [ScriptTransfer(dx.caller, dF, es)]
983- let ft = if ((dL > 0))
984- then [ScriptTransfer(aK, dL, es)]
985- else nil
986- let fK = {
987- let fE = if ((this == aK))
988- then 0
989- else dL
990- if (eu)
991- then $Tuple2(-((dF + fE)), 0)
992- else $Tuple2(0, -((dF + fE)))
993- }
994- let db = fK._1
995- let dc = fK._2
996- let fL = da(db, dc, 0)
997- let ff = fL._1
998- let cZ = fL._2
999- $Tuple2((((cV ++ fC) ++ ft) ++ ff), dF)
979+ let eu = fJ._5
980+ let fp = fJ._4
981+ let dL = fJ._3
982+ let cV = fJ._2
983+ let fA = fJ._1
984+ let dF = if (if ((fi > 0))
985+ then (fi > fA)
986+ else false)
987+ then aG(makeString(["amount to receive is less than ", toString(fi)], ""))
988+ else fA
989+ let fB = invoke(aJ, "burn", [fH], [AttachedPayment(aZ, fH)])
990+ if ((fB == fB))
991+ then {
992+ let fC = [ScriptTransfer(dx.caller, dF, es)]
993+ let ft = if ((dL > 0))
994+ then [ScriptTransfer(aK, dL, es)]
995+ else nil
996+ let fK = {
997+ let fE = if ((this == aK))
998+ then 0
999+ else dL
1000+ if (eu)
1001+ then $Tuple2(-((dF + fE)), 0)
1002+ else $Tuple2(0, -((dF + fE)))
1003+ }
1004+ let db = fK._1
1005+ let dc = fK._2
1006+ let fL = da(db, dc, 0)
1007+ let ff = fL._1
1008+ let cZ = fL._2
1009+ $Tuple2((((cV ++ fC) ++ ft) ++ ff), dF)
1010+ }
1011+ else throw("Strict value is not equal to itself.")
10001012 }
10011013 else throw("Strict value is not equal to itself.")
10021014 }
10031015 else throw("Strict value is not equal to itself.")
10041016 }
10051017 else throw("Strict value is not equal to itself.")
10061018 }
10071019
10081020
10091021
10101022 @Callable(dx)
10111023 func get () = {
10121024 let cG = dw(dx)
10131025 let fM = cG._1
10141026 let cn = cG._2
10151027 let dz = cG._3
10161028 let bV = cG._4
10171029 let co = cG._5
10181030 let fN = invoke(aJ, "burn", [dz], [AttachedPayment(bV, dz)])
10191031 if ((fN == fN))
10201032 then {
10211033 let fO = da(-(fM), -(cn), 0)
10221034 let ff = fO._1
10231035 let cZ = fO._2
10241036 (co ++ ff)
10251037 }
10261038 else throw("Strict value is not equal to itself.")
10271039 }
10281040
10291041
10301042
10311043 @Callable(dx)
10321044 func getNoLess (fP,fQ) = {
10331045 let cG = dw(dx)
10341046 let cm = cG._1
10351047 let cn = cG._2
10361048 let dz = cG._3
10371049 let bV = cG._4
10381050 let co = cG._5
10391051 if ((fP > cm))
10401052 then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fP)))
10411053 else if ((fQ > cn))
10421054 then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fQ)))
10431055 else {
10441056 let fN = invoke(aJ, "burn", [dz], [AttachedPayment(bV, dz)])
10451057 if ((fN == fN))
10461058 then {
10471059 let fR = da(-(cm), -(cn), 0)
10481060 let ff = fR._1
10491061 let cZ = fR._2
10501062 (co ++ ff)
10511063 }
10521064 else throw("Strict value is not equal to itself.")
10531065 }
10541066 }
10551067
10561068
10571069
10581070 @Callable(dx)
10591071 func unstakeAndGet (dF) = {
10601072 let fS = if ((size(dx.payments) != 0))
10611073 then throw("No payments are expected")
10621074 else true
10631075 if ((fS == fS))
10641076 then {
10651077 let bK = aN()
10661078 let bX = fromBase58String(bK[q])
10671079 let fI = invoke(bf, "unstake", [toBase58String(bX), dF], nil)
10681080 if ((fI == fI))
10691081 then {
10701082 let cG = bT(toBase58String(dx.transactionId), toBase58String(bX), dF, dx.caller)
10711083 let cm = cG._1
10721084 let cn = cG._2
10731085 let ca = parseIntValue(cG._9)
10741086 let co = cG._10
10751087 let fT = if (if (aL())
10761088 then true
10771089 else (ca == n))
10781090 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
10791091 else true
10801092 if ((fT == fT))
10811093 then {
10821094 let fN = invoke(aJ, "burn", [dF], [AttachedPayment(bX, dF)])
10831095 if ((fN == fN))
10841096 then {
10851097 let fU = da(-(cm), -(cn), 0)
10861098 let ff = fU._1
10871099 let cZ = fU._2
10881100 (co ++ ff)
10891101 }
10901102 else throw("Strict value is not equal to itself.")
10911103 }
10921104 else throw("Strict value is not equal to itself.")
10931105 }
10941106 else throw("Strict value is not equal to itself.")
10951107 }
10961108 else throw("Strict value is not equal to itself.")
10971109 }
10981110
10991111
11001112
11011113 @Callable(dx)
11021114 func unstakeAndGetNoLess (fH,fV,fQ) = {
11031115 let fy = if (aL())
11041116 then true
11051117 else (aY == n)
11061118 let et = [if (!(fy))
11071119 then true
11081120 else throw("get operation is blocked by admin"), if ((size(dx.payments) == 0))
11091121 then true
11101122 else throw("no payments are expected")]
11111123 if ((et == et))
11121124 then {
11131125 let fI = invoke(bf, "unstake", [toBase58String(aZ), fH], nil)
11141126 if ((fI == fI))
11151127 then {
11161128 let cG = bT(toBase58String(dx.transactionId), toBase58String(aZ), fH, dx.caller)
11171129 let cm = cG._1
11181130 let cn = cG._2
11191131 let co = cG._10
11201132 let fW = [if ((cm >= fV))
11211133 then true
11221134 else throw(makeString(["amount asset amount to receive is less than ", toString(fV)], "")), if ((cn >= fQ))
11231135 then true
11241136 else throw(makeString(["price asset amount to receive is less than ", toString(fQ)], ""))]
11251137 if ((fW == fW))
11261138 then {
11271139 let fN = invoke(aJ, "burn", [fH], [AttachedPayment(aZ, fH)])
11281140 if ((fN == fN))
11291141 then {
11301142 let fX = da(-(cm), -(cn), 0)
11311143 let ff = fX._1
11321144 let cZ = fX._2
11331145 (co ++ ff)
11341146 }
11351147 else throw("Strict value is not equal to itself.")
11361148 }
11371149 else throw("Strict value is not equal to itself.")
11381150 }
11391151 else throw("Strict value is not equal to itself.")
11401152 }
11411153 else throw("Strict value is not equal to itself.")
11421154 }
11431155
11441156
11451157
11461158 @Callable(dx)
11471159 func activate (fY,fZ) = if ((toString(dx.caller) != toString(aJ)))
11481160 then throw("permissions denied")
11491161 else $Tuple2([StringEntry(aa(), fY), StringEntry(ab(), fZ)], "success")
11501162
11511163
11521164
11531165 @Callable(dx)
11541166 func refreshKLp () = {
11551167 let ga = valueOrElse(getInteger(ag), 0)
11561168 let gb = if (((height - ga) >= aj))
11571169 then unit
11581170 else aG(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
11591171 if ((gb == gb))
11601172 then {
11611173 let gc = da(0, 0, 0)
11621174 let dh = gc._1
11631175 let cZ = gc._2
11641176 $Tuple2(dh, toString(cZ))
11651177 }
11661178 else throw("Strict value is not equal to itself.")
11671179 }
11681180
11691181
11701182
11711183 @Callable(dx)
11721184 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aN())
11731185
11741186
11751187
11761188 @Callable(dx)
11771189 func getAccBalanceWrapperREADONLY (bx) = $Tuple2(nil, bw(bx))
11781190
11791191
11801192
11811193 @Callable(dx)
11821194 func calcPricesWrapperREADONLY (bE,bF,bJ) = {
11831195 let bS = bI(bE, bF, bJ)
11841196 $Tuple2(nil, [toString(bS[0]), toString(bS[1]), toString(bS[2])])
11851197 }
11861198
11871199
11881200
11891201 @Callable(dx)
11901202 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11911203
11921204
11931205
11941206 @Callable(dx)
11951207 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
11961208
11971209
11981210
11991211 @Callable(dx)
12001212 func calcPriceBigIntWrapperREADONLY (bz,bA) = $Tuple2(nil, toString(by(parseBigIntValue(bz), parseBigIntValue(bA))))
12011213
12021214
12031215
12041216 @Callable(dx)
12051217 func estimatePutOperationWrapperREADONLY (bU,cq,cr,cs,ct,cu,X,cv,cw) = $Tuple2(nil, cp(bU, cq, cr, cs, ct, cu, X, cv, cw))
12061218
12071219
12081220
12091221 @Callable(dx)
12101222 func estimateGetOperationWrapperREADONLY (bU,bV,bW,X) = {
12111223 let cG = bT(bU, bV, bW, addressFromStringValue(X))
12121224 $Tuple2(nil, $Tuple10(cG._1, cG._2, cG._3, cG._4, cG._5, cG._6, cG._7, toString(cG._8), cG._9, cG._10))
12131225 }
12141226
12151227
12161228
12171229 @Callable(dx)
12181230 func statsREADONLY () = {
12191231 let bK = aN()
12201232 let bX = fromBase58String(bK[q])
12211233 let dk = bK[r]
12221234 let dl = bK[s]
12231235 let cz = bK[v]
12241236 let cA = bK[w]
12251237 let bL = parseIntValue(bK[t])
12261238 let bM = parseIntValue(bK[u])
12271239 let gd = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
12281240 let ge = bw(dk)
12291241 let gf = bw(dl)
12301242 let gg = if ((gd == 0))
12311243 then [e, e, e]
12321244 else bI(ge, gf, gd)
12331245 let ch = 0
12341246 let gh = G(gg[1], b)
12351247 let gi = G(gg[2], b)
12361248 let gj = value(getInteger(aJ, au(toString(this))))
12371249 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(ge), toString(gf), toString(gd), toString(ch), toString(gh), toString(gi), toString(gj)], j))
12381250 }
12391251
12401252
12411253
12421254 @Callable(dx)
12431255 func evaluatePutByAmountAssetREADONLY (cr) = {
12441256 let bK = aN()
12451257 let bX = fromBase58String(bK[q])
12461258 let cx = bK[r]
12471259 let bY = fromBase58String(cx)
12481260 let cy = bK[s]
12491261 let bZ = fromBase58String(cy)
12501262 let bL = parseIntValue(bK[t])
12511263 let bM = parseIntValue(bK[u])
12521264 let ca = bK[p]
12531265 let gd = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
12541266 let ge = bw(cx)
12551267 let gf = bw(cy)
12561268 let bG = D(ge, bL)
12571269 let bH = D(gf, bM)
12581270 let cg = if ((gd == 0))
12591271 then e
12601272 else by(bH, bG)
12611273 let cD = D(cr, bL)
12621274 let cE = fraction(cD, cg, d)
12631275 let ct = G(cE, bM)
12641276 let dD = cp("", 500000, cr, bY, ct, bZ, "", true, false)
12651277 let cO = dD._1
12661278 let gk = dD._3
12671279 let cc = dD._4
12681280 let ce = dD._5
12691281 let cb = dD._6
12701282 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
12711283 }
12721284
12731285
12741286
12751287 @Callable(dx)
12761288 func evaluatePutByPriceAssetREADONLY (ct) = {
12771289 let bK = aN()
12781290 let bX = fromBase58String(bK[q])
12791291 let cx = bK[r]
12801292 let bY = fromBase58String(cx)
12811293 let cy = bK[s]
12821294 let bZ = fromBase58String(cy)
12831295 let bL = parseIntValue(bK[t])
12841296 let bM = parseIntValue(bK[u])
12851297 let ca = bK[p]
12861298 let gd = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
12871299 let gl = bw(cx)
12881300 let gm = bw(cy)
12891301 let gn = D(gl, bL)
12901302 let go = D(gm, bM)
12911303 let cg = if ((gd == 0))
12921304 then e
12931305 else by(go, gn)
12941306 let cE = D(ct, bM)
12951307 let cD = fraction(cE, d, cg)
12961308 let cr = G(cD, bL)
12971309 let dD = cp("", 500000, cr, bY, ct, bZ, "", true, false)
12981310 let cO = dD._1
12991311 let gk = dD._3
13001312 let cc = dD._4
13011313 let ce = dD._5
13021314 let cb = dD._6
13031315 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
13041316 }
13051317
13061318
13071319
13081320 @Callable(dx)
13091321 func evaluateGetREADONLY (gp,gq) = {
13101322 let cG = bT("", gp, gq, this)
13111323 let cm = cG._1
13121324 let cn = cG._2
13131325 let cc = cG._5
13141326 let ce = cG._6
13151327 let cb = cG._7
13161328 let ch = cG._8
13171329 let ca = parseIntValue(cG._9)
13181330 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cm), toString(cn), toString(cc), toString(ce), toString(cb), toString(ch), toString(ca)], j))
13191331 }
13201332
13211333
13221334 @Verifier(gr)
13231335 func gs () = {
13241336 let gt = {
13251337 let dI = eK()
13261338 if ($isInstanceOf(dI, "ByteVector"))
13271339 then {
13281340 let eO = dI
13291341 eO
13301342 }
13311343 else if ($isInstanceOf(dI, "Unit"))
13321344 then gr.senderPublicKey
13331345 else throw("Match error")
13341346 }
13351347 let dI = gr
13361348 if ($isInstanceOf(dI, "Order"))
13371349 then {
13381350 let dj = dI
13391351 let gu = aM()
13401352 let az = di(dj)
13411353 let aA = sigVerify(dj.bodyBytes, dj.proofs[0], dj.senderPublicKey)
13421354 let aB = sigVerify(dj.bodyBytes, dj.proofs[1], gu)
13431355 if (if (if (az)
13441356 then aA
13451357 else false)
13461358 then aB
13471359 else false)
13481360 then true
13491361 else ay(az, aA, aB)
13501362 }
13511363 else if ($isInstanceOf(dI, "SetScriptTransaction"))
13521364 then {
13531365 let eL = dI
13541366 let gv = blake2b256(value(eL.script))
13551367 let gw = fromBase64String(value(getString(aJ, aw())))
13561368 let gx = scriptHash(this)
13571369 if (if ((gw == gv))
13581370 then (gx != gv)
13591371 else false)
13601372 then true
13611373 else sigVerify(gr.bodyBytes, gr.proofs[0], gt)
13621374 }
13631375 else sigVerify(gr.bodyBytes, gr.proofs[0], gt)
13641376 }
13651377

github/deemru/w8io/873ac7e 
115.51 ms