tx · 5mLpGSjrJ9FY9CnVPpc53f3Rku6vtNeMtpswhY5LcNi6

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02600000 Waves

2023.08.10 17:05 [2704587] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "5mLpGSjrJ9FY9CnVPpc53f3Rku6vtNeMtpswhY5LcNi6", "fee": 2600000, "feeAssetId": null, "timestamp": 1691676359660, "version": 2, "chainId": 84, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "Vam6b6qtBpzicpmBE69Y9fJD8nTtohCjNdzSeq5FfYUqApx8MXn8yPPWrB8KpAn3gcziXFJ9ohZeEPsftdhormz" ], "script": "base64:BgKTLggCEggKBggIAQEBCBIFCgMBCAISAwoBARIECgIICBIECgIICBIDCgEIEgMKAQgSAwoBCBIECgIIARIDCgEIEgASABIFCgMICAQSAwoBCBIDCgEIEgQKAggIEgQKAggIIgNTRVAiBlNDQUxFOCIFTVVMVDgiDlBPT0xXRUlHSFRNVUxUIhBjb250cmFjdEZpbGVuYW1lIgdTQ0FMRTE4IgZNVUxUMTgiCE1VTFQxOEJJIgtibG9ja3NJbkRheSINYmxvY2tzSW5Nb250aCIHd3JhcEVyciIDbXNnIgh0aHJvd0VyciIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yWmVybyIPZ2V0SW50T3JEZWZhdWx0IgpkZWZhdWx0VmFsIgxnZXRJbnRPckZhaWwiA2FicyIDdmFsIg5lbnN1cmVQb3NpdGl2ZSIBdiIBbSIba2V5UmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzIh5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwiFmtleVJlZmVycmFsUHJvZ3JhbU5hbWUiGnJlZmVycmFsUHJvZ3JhbU5hbWVEZWZhdWx0IhNyZWZlcnJhbFByb2dyYW1OYW1lIhFrZXlGYWN0b3J5QWRkcmVzcyIYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwIhlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwIhRJZHhGYWN0b3J5Q2ZnSWRvRGFwcCIVSWR4RmFjdG9yeUNmZ1RlYW1EYXBwIhlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwIhVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAiGUlkeEZhY3RvcnlDZmdTbGlwcGFnZURhcHAiFElkeEZhY3RvcnlDZmdEYW9EYXBwIhpJZHhGYWN0b3J5Q2ZnTWFya2V0aW5nRGFwcCIaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAiFklkeEZhY3RvcnlDZmdCaXJkc0RhcHAiDWtleUZhY3RvcnlDZmciJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzIgpscEFzc2V0U3RyIhRrZXlGYWN0b3J5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhtrZXlGYWN0b3J5UG9vbFdlaWdodEhpc3RvcnkiC3Bvb2xBZGRyZXNzIgNudW0iGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbCIUcmVhZEZhY3RvcnlDZmdPckZhaWwiB2ZhY3RvcnkiGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbCIKZmFjdG9yeUNmZyIYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsIhdnZXRTdGFraW5nQWRkcmVzc09yRmFpbCIZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbCITa2V5TWFuYWdlclB1YmxpY0tleSIWa2V5TWFuYWdlclZhdWx0QWRkcmVzcyIea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50IiFrZXlFbWlzc2lvblJhdGVQZXJCbG9ja01heEN1cnJlbnQiFWtleUVtaXNzaW9uU3RhcnRCbG9jayIda2V5Qm9vc3RpbmdWMkxhc3RVcGRhdGVIZWlnaHQiFWtleUJvb3N0aW5nVjJJbnRlZ3JhbCIba2V5RW1pc3Npb25EdXJhdGlvbkluQmxvY2tzIhNrZXlFbWlzc2lvbkVuZEJsb2NrIhlrZXlOZXh0UGVyZ2V0SW50T3JEZWZhdWx0Ih9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0Ig1JZHhDZmdBc3NldElkIhNJZHhDZmdNaW5Mb2NrQW1vdW50IhVJZHhDZmdNaW5Mb2NrRHVyYXRpb24iFUlkeENmZ01heExvY2tEdXJhdGlvbiISSWR4Q2ZnTWF0aENvbnRyYWN0IhRJZHhDZmdCbG9ja3NJblBlcmlvZCIJa2V5Q29uZmlnIhVyZWFkQ29uZmlnQXJyYXlPckZhaWwiCGNmZ0FycmF5Igdhc3NldElkIg1taW5Mb2NrQW1vdW50Ig9taW5Mb2NrRHVyYXRpb24iD21heExvY2tEdXJhdGlvbiIMbWF0aENvbnRyYWN0Ig5ibG9ja3NJblBlcmlvZCINZm9ybWF0Q29uZmlnUyIMZm9ybWF0Q29uZmlnIhxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzIgckbWF0Y2gwIgFzIhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IhNtYW5hZ2VyVmF1bHRBZGRyZXNzIgttdXN0TWFuYWdlciIBaSICcGQiAnBrIg1JZHhMb2NrQW1vdW50IgxJZHhMb2NrU3RhcnQiD0lkeExvY2tEdXJhdGlvbiIaSWR4TG9ja0xhc3RVcGRhdGVUaW1lc3RhbXAiEElkeExvY2tHd3hBbW91bnQiEElkeExvY2tXeENsYWltZWQiE2tleUxvY2tQYXJhbXNSZWNvcmQiC3VzZXJBZGRyZXNzIgR0eElkIgFiIhpyZWFkTG9ja1BhcmFtc1JlY29yZE9yRmFpbCIVa2V5VXNlckd3eEFtb3VudFRvdGFsIhZmb3JtYXRMb2NrUGFyYW1zUmVjb3JkIgZhbW91bnQiBXN0YXJ0IghkdXJhdGlvbiIJZ3d4QW1vdW50Igl3eENsYWltZWQiDmtleU5leHRVc2VyTnVtIhJrZXlVc2VyMk51bU1hcHBpbmciEmtleU51bTJVc2VyTWFwcGluZyIXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQiIGtleVN0YXRzTG9ja3NEdXJhdGlvblN1bUluQmxvY2tzIhJrZXlTdGF0c0xvY2tzQ291bnQiEmtleVN0YXRzVXNlcnNDb3VudCIga2V5VXNlckJvb3N0RW1pc3Npb25MYXN0SU5URUdSQUwiB3VzZXJOdW0iImtleVVzZXJMcEJvb3N0RW1pc3Npb25MYXN0SU5URUdSQUwiCWxwQXNzZXRJZCIXa2V5VXNlck1heEJvb3N0SU5URUdSQUwiGGtleVRvdGFsTWF4Qm9vc3RJTlRFR1JBTCIha2V5VXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsIhNrZXlVc2VyQm9vc3RDbGFpbWVkIgtrZXlHd3hUb3RhbCIHa2V5Vm90ZSINYW1vdW50QXNzZXRJZCIMcHJpY2VBc3NldElkIgVlcG9jaCIVa2V5U3RhcnRIZWlnaHRCeUVwb2NoIhFrZXlDdXJyZW50RXBvY2hVaSIVa2V5Vm90aW5nUmVzdWx0U3Rha2VkIgxscEFzc2V0SWRTdHIiHWtleVZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsIiVrZXlWb3RpbmdSZXN1bHRTdGFrZWRMYXN0VXBkYXRlSGVpZ2h0IiFrZXlWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbExhc3QiFWtleVZvdGVTdGFrZWRJbnRlZ3JhbCIda2V5Vm90ZVN0YWtlZExhc3RVcGRhdGVIZWlnaHQiGWtleVZvdGVTdGFrZWRJbnRlZ3JhbExhc3QiD2tleVN0YWtlZEJ5VXNlciIOdXNlckFkZHJlc3NTdHIiD2ZhY3RvcnlDb250cmFjdCIQZW1pc3Npb25Db250cmFjdCIPc3Rha2luZ0NvbnRyYWN0IhFnd3hSZXdhcmRDb250cmFjdCIWbHBTdGFraW5nUG9vbHNDb250cmFjdCIZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdCIWdm90aW5nRW1pc3Npb25Db250cmFjdCIda2V5Vm90aW5nRW1pc3Npb25SYXRlQ29udHJhY3QiCmJvb3N0Q29lZmYiAUAiGXVzZXJOdW1iZXJCeUFkZHJlc3NPckZhaWwiEWdldEd3eEFtb3VudFRvdGFsIhJnZXRMb2NrZWRHd3hBbW91bnQiDGZ1bmN0aW9uTmFtZSIadm90aW5nRW1pc3Npb25SYXRlQ29udHJhY3QiGGxvY2tlZFZvdGluZ0VtaXNzaW9uUmF0ZSIUbG9ja2VkVm90aW5nRW1pc3Npb24iBmxvY2tlZCIMSGlzdG9yeUVudHJ5IgR0eXBlIgR1c2VyIglsb2NrU3RhcnQiCmhpc3RvcnlLRVkiC2hpc3RvcnlEQVRBIgpTdGF0c0VudHJ5Ig50b3RhbExvY2tlZEluYyILZHVyYXRpb25JbmMiDGxvY2tDb3VudEluYyINdXNlcnNDb3VudEluYyIbbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzS0VZIg1sb2Nrc0NvdW50S0VZIg11c2Vyc0NvdW50S0VZIg50b3RhbEFtb3VudEtFWSIYbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzIgpsb2Nrc0NvdW50Igp1c2Vyc0NvdW50Igt0b3RhbEFtb3VudCIPTG9ja1BhcmFtc0VudHJ5IiJleHRyYWN0T3B0aW9uYWxQYXltZW50QW1vdW50T3JGYWlsIg9leHBlY3RlZEFzc2V0SWQiA3BtdCIVZ2V0VXNlckd3eEFtb3VudFRvdGFsIhpnZXRWb3RpbmdFbWlzc2lvbkVwb2NoSW5mbyINJHQwMTUxNjQxNTQ1NCIOY3VycmVudEVwb2NoVWkiEmxhc3RGaW5hbGl6ZWRFcG9jaCIXY3VycmVudEVwb2NoU3RhcnRIZWlnaHQiGGdldFBvb2xBc3NldHNCeUxwQXNzZXRJZCIQaWR4QW1vdW50QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIgdwb29sQ2ZnIhRnZXRVc2VyVm90ZUZpbmFsaXplZCINJHQwMTYxNDUxNjIyNSINJHQwMTYyMjgxNjMwMyILdXNlclZvdGVLZXkiCHVzZXJWb3RlIhFnZXRVc2VyVm90ZVN0YWtlZCIMc3Rha2VkQnlVc2VyIhVnZXRWb3RpbmdSZXN1bHRTdGFrZWQiDSR0MDE2ODQ3MTY5MjciF3ZvdGluZ1Jlc3VsdFN0YWtlZFN0YXJ0IhJ2b3RpbmdSZXN1bHRTdGFrZWQiHWdldFZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsIg0kdDAxNzI4OTE3MzY5Ih52b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbFByZXYiInZvdGluZ1Jlc3VsdFN0YWtlZExhc3RVcGRhdGVIZWlnaHQiHHZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsRGgiGnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsIiFyZWZyZXNoVm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWwiD3N0YWtlZFZvdGVEZWx0YSINJHQwMTgyMDYxODI4NiIVdm90aW5nUmVzdWx0U3Rha2VkTmV3IhlnZXRVc2VyVm90ZVN0YWtlZEludGVncmFsIg0kdDAxODg5NzE4OTc3Ig51c2VyVm90ZVN0YWtlZCIadXNlclZvdGVTdGFrZWRJbnRlZ3JhbFByZXYiHnVzZXJWb3RlU3Rha2VkTGFzdFVwZGF0ZUhlaWdodCIYdXNlclZvdGVTdGFrZWRJbnRlZ3JhbERoIhZ1c2VyVm90ZVN0YWtlZEludGVncmFsIhlyZWZyZXNoVm90ZVN0YWtlZEludGVncmFsIgRlZGdlIg0kdDAxOTc2NTE5ODQ1IhF1c2VyVm90ZUZpbmFsaXplZCIHYWN0aW9ucyITdm90aW5nUmVzdWx0QWN0aW9ucyILdm90ZUFjdGlvbnMiG2dldFN0YWtlZFZvdGVzSW50ZWdyYWxzRGlmZiINJHQwMjA2OTkyMDc3OSIddXNlclZvdGVTdGFrZWRJbnRlZ3JhbExhc3RLZXkiGnVzZXJWb3RlU3Rha2VkSW50ZWdyYWxMYXN0IiF2b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbExhc3RLZXkiHnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsTGFzdCIadXNlclZvdGVTdGFrZWRJbnRlZ3JhbERpZmYiHnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsRGlmZiIccmVmcmVzaEJvb3N0RW1pc3Npb25JbnRlZ3JhbCISd3hFbWlzc2lvblBlckJsb2NrIiBib29zdGluZ1YyTGFzdFVwZGF0ZUhlaWdodE9wdGlvbiIYYm9vc3RpbmdWMkluZ2VyZ2FsT3B0aW9uIgtlbWlzc2lvbkVuZCIBaCICZGgiEGxhc3RVcGRhdGVIZWlnaHQiFWJvb3N0RW1pc3Npb25QZXJCbG9jayIZYm9vc3RFbWlzc2lvbkludGVncmFsUHJldiIVYm9vc3RFbWlzc2lvbkludGVncmFsIhRpbnRlcm5hbENsYWltV3hCb29zdCIIcmVhZE9ubHkiCEVNUFRZU1RSIgpwb29sV2VpZ2h0Ig5wb29sQWRkcmVzc1N0ciIidXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWSIgdXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkiHXVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsIhl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsIg0kdDAyNDMyMTI0NDYwIhtzdGFrZWRWb3Rlc0ludGVncmFsc0FjdGlvbnMiFHVzZXJWb3RlSW50ZWdyYWxEaWZmIhZ0b3RhbFZvdGVzSW50ZWdyYWxEaWZmIh1wb29sVXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbCIhdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3IglkYXRhU3RhdGUiBWRlYnVnIgtsb2NrQWN0aW9ucyIOZHVyYXRpb25Nb250aHMiFWR1cmF0aW9uTW9udGhzQWxsb3dlZCIKYXNzZXRJZFN0ciIJcG10QW1vdW50Ig5uZXh0VXNlck51bUtFWSIOdXNlcklzRXhpc3RpbmciCnVzZXJOdW1TdHIiB2NvZWZmWDgiDmdXeEFtb3VudFN0YXJ0Ig5nd3hBbW91bnRUb3RhbCISdXNlckd3eEFtb3VudFRvdGFsIgxnd3hSZXdhcmRJbnYiA2FyciIRZ2V0V3hXaXRoZHJhd2FibGUiCnR4SWRPcHRpb24iD3VzZXJSZWNvcmRBcnJheSIKdXNlckFtb3VudCIMbG9ja0R1cmF0aW9uIgdsb2NrRW5kIgF0IghleHBvbmVudCIOd3hXaXRoZHJhd2FibGUiEWZhY3RvcnlBZGRyZXNzU3RyIg5sb2NrQXNzZXRJZFN0ciILbWluRHVyYXRpb24iC21heER1cmF0aW9uIgtjaGVja0NhbGxlciIPcmVmZXJyZXJBZGRyZXNzIglzaWduYXR1cmUiDSR0MDI5NDI3Mjk0OTIiEWxvY2tBY3Rpb25zUmVzdWx0Ig9yZWZlcnJhbEFkZHJlc3MiBnJlZkludiIRdXBkYXRlUmVmQWN0aXZpdHkiDSR0MDI5OTUwMzAwMTUiDSR0MDMwMzI1MzA0MjciEnVzZXJCb29zdEF2YWlsYWJsZSINJHQwMzA1NTkzMDY2MCIHdHhJZFN0ciIJZ3d4QnVybmVkIgxnd3hSZW1haW5pbmciD2xvY2tlZEd3eEFtb3VudCIVdXNlckd3eEFtb3VudFRvdGFsTmV3Igx0YXJnZXRIZWlnaHQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleY8BAAFhAgJfXwABYgAIAAFjAIDC1y8AAWQFAWMAAWUCDWJvb3N0aW5nLnJpZGUAAWYAEgABZwCAgJC7utat8A0AAWgJALYCAQUBZwABaQCgCwABagCY1gIBAWsBAWwJALkJAgkAzAgCBQFlCQDMCAICAjogCQDMCAIFAWwFA25pbAIAAQFtAQFsCQACAQkBAWsBBQFsAQFuAgFvAXAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQFvBQFwCQEBawEJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAXACDyBpcyBub3QgZGVmaW5lZAEBcQIBbwFwCQELdmFsdWVPckVsc2UCCQCaCAIFAW8FAXAAAAEBcgMBbwFwAXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBbwUBcAUBcwEBdAIBbwFwCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUBbwUBcAkBAWsBCQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQFwAg8gaXMgbm90IGRlZmluZWQBAXUBAXYDCQBmAgAABQF2CQEBLQEFAXYFAXYBAXcCAXgBeQMJAGcCBQF4AAAFAXgJAQFtAQkArAICCQELdmFsdWVPckVsc2UCBQF5AgV2YWx1ZQITIHNob3VsZCBiZSBwb3NpdGl2ZQEBegAJALkJAgkAzAgCAgQlcyVzCQDMCAICBmNvbmZpZwkAzAgCAhhyZWZlcnJhbHNDb250cmFjdEFkZHJlc3MFA25pbAUBYQABQQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAW4CBQR0aGlzCQEBegAAAUIJALkJAgkAzAgCAgQlcyVzCQDMCAICCHJlZmVycmFsCQDMCAICC3Byb2dyYW1OYW1lBQNuaWwFAWEAAUMCBnd4bG9jawABRAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQFCBQFDAQFFAAIcJXMlc19fY29uZmlnX19mYWN0b3J5QWRkcmVzcwABRgABAAFHAAIAAUgAAwABSQAEAAFKAAUAAUsABgABTAAHAAFNAAgAAU4ACQABTwAKAAFQAAsBAVEAAhElc19fZmFjdG9yeUNvbmZpZwEBUgEBUwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQFTCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQFhAQFUAQFVCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgpwb29sV2VpZ2h0CQDMCAIFAVUFA25pbAUBYQEBVgIBVwFYCQCsAgIJAKwCAgkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAVcCAl9fCQCkAwEFAVgBAVkACQERQGV4dHJOYXRpdmUoMTA2MikBCQEBbgIFBHRoaXMJAQFFAAEBWgECYWEJALUJAgkBAW4CBQJhYQkBAVEABQFhAQJhYgECYWMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWMFAUcBAmFkAQJhYwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhYwUBSgECYWUBAmFjCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFjBQFGAQJhZgECYWMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWMFAU8BAmFnAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAmFoAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBAmFpAAIbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50AQJhagACHiVzJXNfX3JhdGVQZXJCbG9ja01heF9fY3VycmVudAECYWsAAholcyVzX19lbWlzc2lvbl9fc3RhcnRCbG9jawECYWwAAhwlcyVzX19ib29zdGluZ1YyX19zdGFydEJsb2NrAQJhbQACGiVzJXNfX2Jvb3N0aW5nVjJfX2ludGVncmFsAQJhbgACGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgECYW8AAhglcyVzX19lbWlzc2lvbl9fZW5kQmxvY2sBAmFwAAIOJXNfX25leHRQZXJpb2QBAmFxAAIoJXMlc19fZ3d4UmV3YXJkRW1pc3Npb25QYXJ0X19zdGFydEhlaWdodAACYXIAAQACYXMAAgACYXQAAwACYXUABAACYXYABQACYXcABgECYXgAAgolc19fY29uZmlnAQJheQAJALUJAgkBAW4CBQR0aGlzCQECYXgABQFhAAJhegkBAmF5AAACYUEJANkEAQkAkQMCBQJhegUCYXIAAmFCCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQJhegUCYXMJAQFrAQIXaW52YWxpZCBtaW4gbG9jayBhbW91bnQAAmFDCQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQJhegUCYXQJAQFrAQIZaW52YWxpZCBtaW4gbG9jayBkdXJhdGlvbgACYUQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFAmF6BQJhdQkBAWsBAhlpbnZhbGlkIG1heCBsb2NrIGR1cmF0aW9uAAJhRQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYXoFAmF2CQEBawECHWludmFsaWQgbWF0aCBjb250cmFjdCBhZGRyZXNzAAJhRgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUCYXoFAmF3CQEBawECGGludmFsaWQgYmxvY2tzIGluIHBlcmlvZAECYUcFAmFBAmFCAmFDAmFEAmFFCQC5CQIJAMwIAgIKJXMlZCVkJWQlcwkAzAgCBQJhQQkAzAgCBQJhQgkAzAgCBQJhQwkAzAgCBQJhRAkAzAgCBQJhRQUDbmlsBQFhAQJhSAUCYUECYUICYUMCYUQCYUUJAQJhRwUFAmFBCQCkAwEFAmFCCQCkAwEFAmFDCQCkAwEFAmFEBQJhRQECYUkABAJhSgkAoggBCQECYWgAAwkAAQIFAmFKAgZTdHJpbmcEAmFLBQJhSgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYUsFBHRoaXMBAmFMAAQCYU0JAQJhSQAEAmFKCQCdCAIFAmFNCQECYWcAAwkAAQIFAmFKAgZTdHJpbmcEAmFLBQJhSgkA2QQBBQJhSwMJAAECBQJhSgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJhTgECYU8EAmFQCQEBbQECEVBlcm1pc3Npb24gZGVuaWVkBAJhSgkBAmFMAAMJAAECBQJhSgIKQnl0ZVZlY3RvcgQCYVEFAmFKAwkAAAIIBQJhTw9jYWxsZXJQdWJsaWNLZXkFAmFRBgUCYVADCQABAgUCYUoCBFVuaXQDCQAAAggFAmFPBmNhbGxlcgUEdGhpcwYFAmFQCQACAQILTWF0Y2ggZXJyb3IAAmFSAAEAAmFTAAIAAmFUAAMAAmFVAAQAAmFWAAUAAmFXAAYBAmFYAgJhWQJhWgkAuQkCCQDMCAICDCVzJXMlc19fbG9jawkAzAgCCQClCAEFAmFZCQDMCAIEAmFKBQJhWgMJAAECBQJhSgIKQnl0ZVZlY3RvcgQCYmEFAmFKCQDYBAEFAmJhAwkAAQIFAmFKAgRVbml0AgZsZWdhY3kJAAIBAgtNYXRjaCBlcnJvcgUDbmlsBQFhAQJiYgICYVkCYVoJALUJAgkBAW4CBQR0aGlzCQECYVgCBQJhWQUCYVoFAWEBAmJjAQJhWQkAuQkCCQDMCAICFCVzJXNfX2d3eEFtb3VudFRvdGFsCQDMCAIJAKUIAQUCYVkFA25pbAUBYQECYmQFAmJlAmJmAmJnAmJoAmJpCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiZQkAzAgCCQCkAwEFAmJmCQDMCAIJAKQDAQUCYmcJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFAmJoCQDMCAIJAKQDAQUCYmkFA25pbAUBYQECYmoAAg8lc19fbmV4dFVzZXJOdW0BAmJrAQJhWQkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fdXNlcjJudW0JAMwIAgUCYVkFA25pbAUBYQECYmwBAVgJALkJAgkAzAgCAhklcyVzJXNfX21hcHBpbmdfX251bTJ1c2VyCQDMCAIFAVgFA25pbAUBYQECYm0AAh4lcyVzX19zdGF0c19fYWN0aXZlVG90YWxMb2NrZWQBAmJuAAIlJXMlc19fc3RhdHNfX2xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwECYm8AAhclcyVzX19zdGF0c19fbG9ja3NDb3VudAECYnAAAh0lcyVzX19zdGF0c19fYWN0aXZlVXNlcnNDb3VudAECYnEBAmJyCQC5CQIJAMwIAgIgJXMlZF9fdXNlckJvb3N0RW1pc3Npb25MYXN0SW50VjIJAMwIAgkApAMBBQJicgUDbmlsBQFhAQJicwICYnICYnQJALkJAgkAzAgCAiAlcyVkX191c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRWMgkAzAgCCQCkAwEFAmJyCQDMCAIFAmJ0BQNuaWwFAWEBAmJ1AQJicgkAuQkCCQDMCAICESVzJWRfX21heEJvb3N0SW50CQDMCAIJAKQDAQUCYnIFA25pbAUBYQECYnYAAhglcyVzX19tYXhCb29zdEludF9fdG90YWwBAmJ3AQJicgkAuQkCCQDMCAICJCVzJWRfX3VzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbAkAzAgCCQCkAwEFAmJyBQNuaWwFAWEBAmJ4AQJicgkAuQkCCQDMCAICFiVzJWRfX3VzZXJCb29zdENsYWltZWQJAMwIAgkApAMBBQJicgUDbmlsBQFhAQJieQACECVzJXNfX2d3eF9fdG90YWwBAmJ6BAJiQQJiQgFvAmJDCQC5CQIJAMwIAgIKJXMlcyVzJXMlZAkAzAgCAgR2b3RlCQDMCAIFAmJBCQDMCAIFAmJCCQDMCAIJAKUIAQUBbwkAzAgCCQCkAwEFAmJDBQNuaWwFAWEBAmJEAQJiQwkAuQkCCQDMCAICBCVzJWQJAMwIAgILc3RhcnRIZWlnaHQJAMwIAgkApAMBBQJiQwUDbmlsBQFhAQJiRQAJALkJAgkAzAgCAgIlcwkAzAgCAg5jdXJyZW50RXBvY2hVaQUDbmlsBQFhAQJiRgICYkcCYkMJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgISdm90aW5nUmVzdWx0U3Rha2VkCQDMCAIFAmJHCQDMCAIJAKQDAQUCYkMFA25pbAUBYQECYkgCAmJHAmJDCQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICGnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsCQDMCAIFAmJHCQDMCAIJAKQDAQUCYkMFA25pbAUBYQECYkkCAmJHAmJDCQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICKnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsTGFzdFVwZGF0ZUhlaWdodAkAzAgCBQJiRwkAzAgCCQCkAwEFAmJDBQNuaWwFAWEBAmJKAwJiRwFvAmJDCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIedm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxMYXN0CQDMCAIFAmJHCQDMCAIJAKUIAQUBbwkAzAgCCQCkAwEFAmJDBQNuaWwFAWEBAmJLAwJiRwFvAmJDCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgISdm90ZVN0YWtlZEludGVncmFsCQDMCAIFAmJHCQDMCAIJAKUIAQUBbwkAzAgCCQCkAwEFAmJDBQNuaWwFAWEBAmJMAwJiRwFvAmJDCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIidm90ZVN0YWtlZEludGVncmFsTGFzdFVwZGF0ZUhlaWdodAkAzAgCBQJiRwkAzAgCCQClCAEFAW8JAMwIAgkApAMBBQJiQwUDbmlsBQFhAQJiTQMCYkcBbwJiQwkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICFnZvdGVTdGFrZWRJbnRlZ3JhbExhc3QJAMwIAgUCYkcJAMwIAgkApQgBBQFvCQDMCAIJAKQDAQUCYkMFA25pbAUBYQECYk4CAmJPAmJHCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICBnN0YWtlZAkAzAgCBQJiTwkAzAgCBQJiRwUDbmlsBQFhAAJiUAkBAVkAAAJhYwkBAVoBBQJiUAACYlEJAQJhZAEFAmFjAAJiUgkBAmFlAQUCYWMAAmJTCQECYWYBBQJhYwACYlQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkAuQkCCQDMCAICAiVzCQDMCAICFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QFA25pbAUBYQkBAWsBAi5scF9zdGFraW5nX3Bvb2xzIGNvbnRyYWN0IGFkZHJlc3MgaXMgdW5kZWZpbmVkCQEBawECKWludmFsaWQgbHBfc3Rha2luZ19wb29scyBjb250cmFjdCBhZGRyZXNzAAJiVQkAuQkCCQDMCAICAiVzCQDMCAICFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QFA25pbAUBYQACYlYJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFAmJQBQJiVQACYlcJALkJAgkAzAgCAgIlcwkAzAgCAhp2b3RpbmdFbWlzc2lvblJhdGVDb250cmFjdAUDbmlsBQFhAAJiWAoAAmJZCQD8BwQFAmJRAhVnZXRCb29zdENvZWZmUkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmJZAgNJbnQFAmJZCQACAQkArAICCQADAQUCYlkCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYloBAmFZBAJhSgkAnQgCBQR0aGlzCQECYmsBCQClCAEFAmFZAwkAAQIFAmFKAgZTdHJpbmcEAmFLBQJhSgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEFAmFLCQEBawECE2ludmFsaWQgdXNlciBudW1iZXIDCQABAgUCYUoCBFVuaXQJAQFtAQIMaW52YWxpZCB1c2VyCQACAQILTWF0Y2ggZXJyb3IBAmNhAAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYnkAAAABAmNiAQJhWQQCY2MCEmdldExvY2tlZEd3eEFtb3VudAQCY2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgQCYUoJAJ0IAgUCYlYFAmJXAwkAAQIFAmFKAgRVbml0BQR1bml0AwkAAQIFAmFKAgZTdHJpbmcEAmFLBQJhSgkApggBBQJhSwkAAgECC01hdGNoIGVycm9yCQEBawECJGludmFsaWQgdm90aW5nIGVtaXNzaW9uIHJhdGUgYWRkcmVzcwQCY2UKAAJiWQkA/AcEBQJiVgUCY2MJAMwIAgkApQgBBQJhWQUDbmlsBQNuaWwDCQABAgUCYlkCA0ludAUCYlkJAAIBCQCsAgIJAAMBBQJiWQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJjZgoAAmJZCQD8BwQFAmNkBQJjYwkAzAgCCQClCAEFAmFZBQNuaWwFA25pbAMJAAECBQJiWQIDSW50BQJiWQkAAgEJAKwCAgkAAwEFAmJZAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmNnCQCWAwEJAMwIAgUCY2UJAMwIAgUCY2YFA25pbAUCY2cBAmNoBwJjaQJjagJiZQJjawJiZwJiaAJhTwQCY2wJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQJjaQkAzAgCBQJjagkAzAgCCQDYBAEIBQJhTw10cmFuc2FjdGlvbklkBQNuaWwFAWEEAmNtCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUCYmUJAMwIAgkApAMBBQJjawkAzAgCCQCkAwEFAmJnCQDMCAIJAKQDAQUCYmgFA25pbAUBYQkBC1N0cmluZ0VudHJ5AgUCY2wFAmNtAQJjbgQCY28CY3ACY3ECY3IEAmNzCQECYm4ABAJjdAkBAmJvAAQCY3UJAQJicAAEAmN2CQECYm0ABAJjdwkBAXECBQR0aGlzBQJjcwQCY3gJAQFxAgUEdGhpcwUCY3QEAmN5CQEBcQIFBHRoaXMFAmN1BAJjegkBAXECBQR0aGlzBQJjdgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3MJAGQCBQJjdwUCY3AJAMwIAgkBDEludGVnZXJFbnRyeQIFAmN0CQBkAgUCY3gFAmNxCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjdQkAZAIFAmN5BQJjcgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3YJAGQCBQJjegUCY28FA25pbAECY0EHAmFZAmFaAmJlAmJmAmJnAmJoAmJpCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhWAIFAmFZBQJhWgkBAmJkBQUCYmUFAmJmBQJiZwUCYmgFAmJpBQNuaWwBAmNCAgJhTwJjQwMJAGYCCQCQAwEIBQJhTwhwYXltZW50cwABCQEBbQECG29ubHkgb25lIHBheW1lbnQgaXMgYWxsb3dlZAMJAAACCQCQAwEIBQJhTwhwYXltZW50cwAAAAAEAmNECQCRAwIIBQJhTwhwYXltZW50cwAAAwkBAiE9AgkBBXZhbHVlAQgFAmNEB2Fzc2V0SWQFAmNDCQEBbQECG2ludmFsaWQgYXNzZXQgaWQgaW4gcGF5bWVudAgFAmNEBmFtb3VudAECY0UBAmFZCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiYwEFAmFZAAABAmNGAAQCY0cEAmNICQEFdmFsdWUBCQCaCAIFAmJWCQECYkUABAJjSQkAZQIFAmNIAAEDCQBmAgAABQJjSQkBAW0BAg1pbnZhbGlkIGVwb2NoCQCUCgIFAmNIBQJjSQQCY0gIBQJjRwJfMQQCY0kIBQJjRwJfMgQCY0oJAQV2YWx1ZQEJAJoIAgUCYlYJAQJiRAEFAmNICQCUCgIFAmNJBQJjSgECY0sBAmJHBAJjTAAEBAJjTQAFBAJjTgoAAmJZCQD8BwQFAmJQAiBnZXRQb29sQ29uZmlnQnlMcEFzc2V0SWRSRUFET05MWQkAzAgCBQJiRwUDbmlsBQNuaWwDCQABAgUCYlkCCUxpc3RbQW55XQUCYlkJAAIBCQCsAgIJAAMBBQJiWQIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldBAJiQQoAAmJZCQCRAwIFAmNOBQJjTAMJAAECBQJiWQIGU3RyaW5nBQJiWQkAAgEJAKwCAgkAAwEFAmJZAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcEAmJCCgACYlkJAJEDAgUCY04FAmNNAwkAAQIFAmJZAgZTdHJpbmcFAmJZCQACAQkArAICCQADAQUCYlkCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwkAlAoCBQJiQQUCYkIBAmNPAgJiRwJiTwQCYVkJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmJPBAJjUAkBAmNGAAQCY0kIBQJjUAJfMQQCY0oIBQJjUAJfMgQCY1EJAQJjSwEFAmJHBAJiQQgFAmNRAl8xBAJiQggFAmNRAl8yBAJjUgkBAmJ6BAUCYkEFAmJCBQJhWQUCY0kEAmNTCQELdmFsdWVPckVsc2UCCQCaCAIFAmJWBQJjUgAABQJjUwECY1QCAmJHAmJPBAJjVQkBC3ZhbHVlT3JFbHNlAgkAmggCBQJiUgkBAmJOAgUCYk8FAmJHAAAEAmNTCQECY08CBQJiRwUCYk8DCQAAAgUCY1UAAAAABQJjUwECY1YBAmJHBAJjVwkBAmNGAAQCY0kIBQJjVwJfMQQCY0oIBQJjVwJfMgQCY1gJAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYlYJAQJiRgIFAmJHBQJjSQAABAJjWQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYkYCBQJiRwUCY0kFAmNYBQJjWQECY1oBAmJHBAJkYQkBAmNGAAQCY0kIBQJkYQJfMQQCY0oIBQJkYQJfMgQCY1kJAQJjVgEFAmJHBAJkYgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYkgCBQJiRwUCY0kAAAQCZGMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJJAgUCYkcFAmNJBQJjSgQCZGQJAGUCBQZoZWlnaHQFAmRjBAJkZQkAZAIJAGgCBQJkZAUCY1kFAmRiBQJkZQECZGYCAmJHAmRnBAJkaAkBAmNGAAQCY0kIBQJkaAJfMQQCY0oIBQJkaAJfMgQCY1kJAQJjVgEFAmJHBAJkaQkAZAIFAmNZBQJkZwQCZGUJAQJjWgEFAmJHCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYkYCBQJiRwUCY0kFAmRpCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYkkCBQJiRwUCY0kFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJIAgUCYkcFAmNJBQJkZQUDbmlsAQJkagICYkcCYk8EAmRrCQECY0YABAJjSQgFAmRrAl8xBAJjSggFAmRrAl8yBAJhWQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYk8EAmRsCQECY1QCBQJiRwUCYk8EAmRtCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiSwMFAmJHBQJhWQUCY0kAAAQCZG4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJMAwUCYkcFAmFZBQJjSQUCY0oEAmRvCQBlAgUGaGVpZ2h0BQJkbgQCZHAJAGQCCQBoAgUCZG8FAmRsBQJkbQUCZHABAmRxAwJiRwJiTwJkcgQCZHMJAQJjRgAEAmNJCAUCZHMCXzEEAmNKCAUCZHMCXzIEAmFZCQERQGV4dHJOYXRpdmUoMTA2MikBBQJiTwQCZHQJAQJjTwIFAmJHBQJiTwQCZHUDCQAAAgUCZHQAAAUDbmlsBAJkZwMFAmRyBQJkdAkBAS0BBQJkdAQCZHYJAQJkZgIFAmJHBQJkZwQCZHAJAQJkagIFAmJHBQJiTwQCZHcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiTAMFAmJHBQJhWQUCY0kFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJLAwUCYkcFAmFZBQJjSQUCZHAFA25pbAkAzggCBQJkdgUCZHcFAmR1AQJkeAICYkcCYk8EAmR5CQECY0YABAJjSQgFAmR5Al8xBAJjSggFAmR5Al8yBAJhWQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYk8EAmR6CQECYk0DBQJiRwUCYVkFAmNJBAJkQQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJkegAABAJkQgkBAmJKAwUCYkcFAmFZBQJjSQQCZEMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCZEIAAAQCZHAJAQJkagIFAmJHBQJiTwQCZGUJAQJjWgEFAmJHBAJkRAkAZQIFAmRwBQJkQQQCZEUJAGUCBQJkZQUCZEMJAJUKAwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZHoFAmRwCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkQgUCZGUFA25pbAUCZEQFAmRFAQJkRgAEAmRHCQEBdAIFAmJRCQECYWkABAJkSAkAmggCBQR0aGlzCQECYWwABAJkSQkAmggCBQR0aGlzCQECYW0ABAJkSgkBAXQCBQJiUQkBAmFvAAQCZEsDCQBmAgUGaGVpZ2h0BQJkSgUCZEoFBmhlaWdodAQCZEwEAmFKBQJkSAMJAAECBQJhSgIDSW50BAJkTQUCYUoJAJYDAQkAzAgCCQBlAgUCZEsFAmRNCQDMCAIAAAUDbmlsAwkAAQIFAmFKAgRVbml0AAAJAAIBAgtNYXRjaCBlcnJvcgQCZE4JAGkCCQBoAgUCZEcJAGUCBQJiWAABBQJiWAQCZE8JAQt2YWx1ZU9yRWxzZQIFAmRJAAAEAmRQCQBkAgkAaAIFAmROBQJkTAUCZE8JAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFtAAUCZFAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbAAFBmhlaWdodAUDbmlsBQJkUAECZFEDAmJHAmJPAmRSBAJhWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmJPCQEBawECFGludmFsaWQgdXNlciBhZGRyZXNzBAJicgkBAmJaAQUCYVkDCQAAAgUCYnIFAmJyBAJkUwIFZW1wdHkEAmRUAwkBAiE9AgUCYkcFAmRTBAJkVQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmJQCQEBUgEFAmJHCQEBawEJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJiRwkBEUBleHRyTmF0aXZlKDEwNTApAgUCYlAJAQFUAQUCZFUDBQJkUgAACQEBbQEJAKwCAgIobm90IHJlYWRvbmx5IG1vZGU6IHVuc3VwcG9ydGVkIGxwIGFzc2V0IAUCYkcEAmRWCQECYnMCBQJicgUCYkcEAmRXCQECYnEBBQJicgQCZFgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCZFYJAQFxAgUEdGhpcwUCZFcEAmRQCAkBAmRGAAJfMgQCZFkJAGUCBQJkUAUCZFgDCQBmAgAABQJkWQkBAW0BAhJ3cm9uZyBjYWxjdWxhdGlvbnMEAmRaCQECZHgCBQJiRwUCYk8EAmVhCAUCZFoCXzEEAmViCAUCZFoCXzIEAmVjCAUCZFoCXzMEAmVkCQBrAwUCZFkFAmRUBQFkBAJlZQMJAAACBQJlYwAAAAAJAGsDBQJlZAUCZWIFAmVjBAJlZgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkVgUCZFAFA25pbAUCZWEEAmVnCQC5CQIJAMwIAgkApAMBBQJkWAkAzAgCCQCkAwEFAmRZCQDMCAIJAKQDAQUCZFQJAMwIAgkApAMBBQJlYgkAzAgCCQCkAwEFAmVjBQNuaWwCAToJAJUKAwUCZWUFAmVmBQJlZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZWgCAmFPAmVpBAJlagkAzAgCAAEJAMwIAgADCQDMCAIABgkAzAgCAAwJAMwIAgAYCQDMCAIAMAUDbmlsAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUCZWoFAmVpCQEBbQECEGludmFsaWQgZHVyYXRpb24EAmJnCQBoAgUCZWkFAWoEAmVrCQDYBAEFAmFBAwkBAiE9AgkAkAMBCAUCYU8IcGF5bWVudHMAAQkBAW0BAjRpbnZhbGlkIHBheW1lbnQgLSBleGFjdCBvbmUgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBAJjRAkAkQMCCAUCYU8IcGF5bWVudHMAAAQCZWwIBQJjRAZhbW91bnQDCQECIT0CBQJhQQkBBXZhbHVlAQgFAmNEB2Fzc2V0SWQJAQFtAQkArAICCQCsAgICHmludmFsaWQgYXNzZXQgaXMgaW4gcGF5bWVudCAtIAUCZWsCDCBpcyBleHBlY3RlZAQCZW0JAQJiagAEAmFZCAUCYU8GY2FsbGVyBAJiTwkApQgBBQJhWQQCZW4JAQlpc0RlZmluZWQBCQCiCAEJAQJiawEFAmJPBAJlbwMFAmVuCQEFdmFsdWUBCQCiCAEJAQJiawEFAmJPCQCkAwEJAQF0AgUEdGhpcwUCZW0EAmJyCQENcGFyc2VJbnRWYWx1ZQEFAmVvBAJjawUGaGVpZ2h0AwMJAGYCBQJhQgUCZWwJAQIhPQIFAmFZBQJiVAcJAQFtAQkArAICAiJhbW91bnQgaXMgbGVzcyB0aGVuIG1pbkxvY2tBbW91bnQ9CQCkAwEFAmFCAwkAZgIFAmFDBQJiZwkBAW0BCQCsAgICLXBhc3NlZCBkdXJhdGlvbiBpcyBsZXNzIHRoZW4gbWluTG9ja0R1cmF0aW9uPQkApAMBBQJhQwMJAGYCBQJiZwUCYUQJAQFtAQkArAICAjBwYXNzZWQgZHVyYXRpb24gaXMgZ3JlYXRlciB0aGVuIG1heExvY2tEdXJhdGlvbj0JAKQDAQUCYUQEAmVwCQBrAwUCYmcFAWMFAmFEBAJlcQkAawMFAmVsBQJlcAUBYwQCZXIJAQJjYQAEAmRXCQECYnEBBQJicgQCZFAICQECZEYAAl8yBAJlcwkBAmNFAQUCYVkEAmV0CQD9BwQFAmJTAhFyZWZyZXNoVXNlclJld2FyZAkAzAgCCAUCYVkFYnl0ZXMFA25pbAUDbmlsAwkAAAIFAmV0BQJldAQCZXUDBQJlbgUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJlbQkAZAIFAmJyAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJrAQUCYk8FAmVvCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJibAEFAmVvBQJiTwUDbmlsCQCUCgIJAM4IAgkAzQgCCQDOCAIJAM4IAgUCZXUJAQJjQQcFAmFZCAUCYU8NdHJhbnNhY3Rpb25JZAUCZWwFAmNrBQJiZwUCZXEAAAkBAmNuBAUCZWwFAmJnAAEDBQJlbgAAAAEJAQJjaAcCBGxvY2sFAmJPBQJlbAUCY2sFAmJnBQJlcQUCYU8JAMwIAgkBDEludGVnZXJFbnRyeQIFAmRXBQJkUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJ5AAkAZAIFAmVyBQJlcQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJjAQUCYVkJAGQCBQJlcwUCZXEFA25pbAUCZXEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmV2AgJhWQJldwQCZXgJAQJiYgIFAmFZBQJldwQCZXkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJleAUCYVIEAmNrCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXgFAmFTBAJlegkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmV4BQJhVAQCZUEJAGQCBQJjawUCZXoEAmJpCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXgFAmFXBAJiaAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmV4BQJhVgQCZUIJAGkCCQBlAgUGaGVpZ2h0BQJjawUCYUYEAmVDCQC8AgMJALYCAQUCZUIJALkCAgkAtgIBCQBoAgAIBQJhRgUBaAkAtgIBBQJlegQCZUQDCQBmAgUGaGVpZ2h0BQJlQQUCZXkJAGUCCQCgAwEJALwCAwkAtgIBBQJleQkAuAICBQFoCQB2BgkAtgIBAAUAAQUCZUMFAWYFAWYFBERPV04FAWgFAmJpBQJlRBECYU8BC2NvbnN0cnVjdG9yBgJlRQJlRgJhQgJlRwJlSAJhRQQCZUkJAQJhTgEFAmFPAwkAAAIFAmVJBQJlSQkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYmoAAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmF4AAkBAmFIBQUCZUYFAmFCBQJlRwUCZUgFAmFFCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFFAAUCZUUFA25pbAkBAmNuBAAAAAAAAAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFPAQdsb2NrUmVmAwJiZwJlSgJlSwQCZUwJAQJlaAIFAmFPBQJiZwQCZU0IBQJlTAJfMQQCZXEIBQJlTAJfMgQCZU4JAKUIAQgFAmFPBmNhbGxlcgQCZU8DAwkAAAIFAmVKAgAGCQAAAgUCZUsBAAUEdW5pdAkA/AcEBQFBAgpjcmVhdGVQYWlyCQDMCAIFAUQJAMwIAgUCZUoJAMwIAgUCZU4JAMwIAgUCZUsFA25pbAUDbmlsAwkAAAIFAmVPBQJlTwQCZVAJAPwHBAUCYUUCFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkJAMwIAgkApQgBCAUCYU8GY2FsbGVyCQDMCAIFAmVxBQNuaWwFA25pbAMJAAACBQJlUAUCZVAJAJQKAgUCZU0FBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU8BBGxvY2sBAmJnBAJlUQkBAmVoAgUCYU8FAmJnBAJlTQgFAmVRAl8xBAJlcQgFAmVRAl8yBAJlUAkA/AcEBQJhRQIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhTwZjYWxsZXIJAMwIAgUCZXEFA25pbAUDbmlsAwkAAAIFAmVQBQJlUAkAlAoCBQJlTQUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhTwEMY2xhaW1XeEJvb3N0AgJiRwJiTwMJAQIhPQIFAmJSCAUCYU8GY2FsbGVyCQEBbQECEnBlcm1pc3Npb25zIGRlbmllZAQCZVIJAQJkUQMFAmJHBQJiTwcEAmVTCAUCZVICXzEEAmVmCAUCZVICXzIEAmVnCAUCZVICXzMJAJQKAgUCZWYJAMwIAgUCZVMFA25pbAJhTwEUY2xhaW1XeEJvb3N0UkVBRE9OTFkCAmJHAmJPBAJlVAkBAmRRAwUCYkcFAmJPBgQCZVMIBQJlVAJfMQQCZWYIBQJlVAJfMgQCZWcIBQJlVAJfMwkAlAoCBQNuaWwJAMwIAgUCZVMJAMwIAgUCZWcFA25pbAJhTwEGdW5sb2NrAQJlVQQCYVkIBQJhTwZjYWxsZXIEAmJPCQClCAEFAmFZBAJhWgkA2QQBBQJlVQQCZXgJAQJiYgIFAmFZAwkAAAIFAmVVAgAFBHVuaXQFAmFaBAJleQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmV4BQJhUgQCY2sJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJleAUCYVMEAmV6CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXgFAmFUBAJlQQkAZAIFAmNrBQJlegQCYmkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJleAUCYVcEAmJoCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXgFAmFWBAJlQgkAaQIJAGUCBQZoZWlnaHQFAmNrBQJhRgQCZUQJAQJldgIFAmFZAwkAAAIFAmVVAgAFBHVuaXQFAmFaBAJlcAkAawMFAmV6BQFjBQJhRAQCZXEJAGsDBQJleQUCZXAFAWMEAmVWCQCXAwEJAMwIAgkAawMJAGgCBQJlQgUCYUYFAmVxBQJhRAkAzAgCBQJiaAUDbmlsBAJlVwkBAXcCCQBlAgUCYmgFAmVWAgxnd3hSZW1haW5pbmcEAmVYCQECY2IBBQJhWQMJAGcCAAAFAmV5CQEBbQECEW5vdGhpbmcgdG8gdW5sb2NrBAJlcgkBAmNhAAQCZXMJAQJjRQEFAmFZBAJlWQkBAXcCCQBlAgUCZXMFAmVWAhV1c2VyR3d4QW1vdW50VG90YWxOZXcDCQBmAgUCZVgFAmVZCQEBbQEJAKwCAgITbG9ja2VkIGd3eCBhbW91bnQ6IAkApAMBBQJlWAQCZXQJAP0HBAUCYlMCEXJlZnJlc2hVc2VyUmV3YXJkCQDMCAIIBQJhWQVieXRlcwUDbmlsBQNuaWwDCQAAAgUCZXQFAmV0CQDOCAIJAM0IAgkAzQgCCQDOCAIJAQJjQQcFAmFZBQJhWgUCZXkFAmNrBQJlegUCZVcJAGQCBQJiaQUCZUQJAQJjbgQJAQEtAQUCZUQAAAAAAAAJAQJjaAcCBnVubG9jawUCYk8FAmVEBQJjawUCZXoFAmVWBQJhTwkBDlNjcmlwdFRyYW5zZmVyAwUCYVkFAmVEBQJhQQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJ5AAkBAXcCCQBlAgUCZXIFAmVWAghnd3hUb3RhbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJjAQUCYVkFAmVZBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU8BE2d3eFVzZXJJbmZvUkVBRE9OTFkBAmJPBAJhWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmJPCQEBawECFGludmFsaWQgdXNlciBhZGRyZXNzBAJiaAkBAmNFAQUCYVkJAJQKAgUDbmlsCQDMCAIFAmJoBQNuaWwCYU8BF3VzZXJNYXhEdXJhdGlvblJFQURPTkxZAQJiTwkAlAoCBQNuaWwJAJQKAgIMaW5jcmVhc2VMb2NrBQJhRAJhTwEgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkCAmJPAmVaBAJhWQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmJPCQEBawECFGludmFsaWQgdXNlciBhZGRyZXNzBAJiaAkBAmNFAQUCYVkJAJQKAgUDbmlsBQJiaAJhTwEQZ2V0VXNlckd3eEFtb3VudAECYk8EAmFZCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUCYk8JAQFrAQIUaW52YWxpZCB1c2VyIGFkZHJlc3MEAmJoCQECY0UBBQJhWQkAlAoCBQNuaWwFAmJoAmFPARNnZXRHd3hUb3RhbFJFQURPTkxZAAkAlAoCBQNuaWwJAQJjYQACYU8BFW9uQm9vc3RFbWlzc2lvblVwZGF0ZQAEAmVJAwkAAAIIBQJhTwZjYWxsZXIFAmJRBgkBAmFOAQUCYU8DCQAAAgUCZUkFAmVJCQECZEYACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFPARJvblN0YWtlZFZvdGVVcGRhdGUDAmJHAmJPAmRyBAJlSQMJAAACCAUCYU8GY2FsbGVyBQJiUgYJAQJhTgEFAmFPAwkAAAIFAmVJBQJlSQQCZHUJAQJkcQMFAmJHBQJiTwUCZHIJAJQKAgUCZHUFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU8BHWdldFZvdGluZ1Jlc3VsdFN0YWtlZFJFQURPTkxZAQJiRwkAlAoCBQNuaWwJAQJjVgEFAmJHAmFPASVnZXRWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbFJFQURPTkxZAQJiRwkAlAoCBQNuaWwJAQJjWgEFAmJHAmFPARxnZXRVc2VyVm90ZUZpbmFsaXplZFJFQURPTkxZAgJiRwJiTwkAlAoCBQNuaWwJAQJjTwIFAmJHBQJiTwJhTwEhZ2V0VXNlclZvdGVTdGFrZWRJbnRlZ3JhbFJFQURPTkxZAgJiRwJiTwkAlAoCBQNuaWwJAQJkagIFAmJHBQJiTwECZmEBAmZiAAQCZmMEAmFKCQECYUwAAwkAAQIFAmFKAgpCeXRlVmVjdG9yBAJhUQUCYUoFAmFRAwkAAQIFAmFKAgRVbml0CAUCZmEPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmZhCWJvZHlCeXRlcwkAkQMCCAUCZmEGcHJvb2ZzAAAFAmZjR06/lw==", "height": 2704587, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BuDxLbzfHhTAMMSWGSuqi2m4qws1eKhjxMyTAgAQGASA Next: J4yBN261bq3dkFdNev3X6agcLXU6hredbUo21P4Q1UL1 Diff:
OldNewDifferences
806806
807807
808808 @Callable(aO)
809-func unlock (eU,be) = {
809+func unlock (eU) = {
810810 let aY = aO.caller
811811 let bO = toString(aY)
812812 let aZ = fromBase58String(eU)
823823 let eD = ev(aY, if ((eU == ""))
824824 then unit
825825 else aZ)
826- if ((be > eD))
827- then m(("maximum amount to unlock: " + toString(eD)))
826+ let ep = fraction(ez, c, aD)
827+ let eq = fraction(ey, ep, c)
828+ let eV = min([fraction((eB * aF), eq, aD), bh])
829+ let eW = w((bh - eV), "gwxRemaining")
830+ let eX = cb(aY)
831+ if ((0 >= ey))
832+ then m("nothing to unlock")
828833 else {
829- let ep = fraction(ez, c, aD)
830- let eq = fraction(ey, ep, c)
831- let eV = fraction((eB * aF), eq, aD)
832- let eW = w((bh - eV), "gwxRemaining")
833- let eX = cb(aY)
834- if ((0 >= ey))
835- then m("nothing to unlock")
834+ let er = ca()
835+ let es = cE(aY)
836+ let eY = w((es - eV), "userGwxAmountTotalNew")
837+ if ((eX > eY))
838+ then m(("locked gwx amount: " + toString(eX)))
836839 else {
837- let er = ca()
838- let es = cE(aY)
839- let eY = w((es - eV), "userGwxAmountTotalNew")
840- if ((eX > eY))
841- then m(("locked gwx amount: " + toString(eX)))
842- else {
843- let et = reentrantInvoke(bS, "refreshUserReward", [aY.bytes], nil)
844- if ((et == et))
845- then ((((cA(aY, aZ, ey, ck, ez, eW, (bi + be)) ++ cn(-(be), 0, 0, 0)) :+ ch("unlock", bO, be, ck, ez, eV, aO)) :+ ScriptTransfer(aY, be, aA)) ++ [IntegerEntry(by(), w((er - eV), "gwxTotal")), IntegerEntry(bc(aY), eY)])
846- else throw("Strict value is not equal to itself.")
847- }
840+ let et = reentrantInvoke(bS, "refreshUserReward", [aY.bytes], nil)
841+ if ((et == et))
842+ then ((((cA(aY, aZ, ey, ck, ez, eW, (bi + eD)) ++ cn(-(eD), 0, 0, 0)) :+ ch("unlock", bO, eD, ck, ez, eV, aO)) :+ ScriptTransfer(aY, eD, aA)) ++ [IntegerEntry(by(), w((er - eV), "gwxTotal")), IntegerEntry(bc(aY), eY)])
843+ else throw("Strict value is not equal to itself.")
848844 }
849845 }
850846 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 8
77
88 let c = 100000000
99
1010 let d = c
1111
1212 let e = "boosting.ride"
1313
1414 let f = 18
1515
1616 let g = 1000000000000000000
1717
1818 let h = toBigInt(g)
1919
2020 let i = 1440
2121
2222 let j = 43800
2323
2424 func k (l) = makeString([e, ": ", l], "")
2525
2626
2727 func m (l) = throw(k(l))
2828
2929
3030 func n (o,p) = valueOrErrorMessage(getString(o, p), k((("mandatory this." + p) + " is not defined")))
3131
3232
3333 func q (o,p) = valueOrElse(getInteger(o, p), 0)
3434
3535
3636 func r (o,p,s) = valueOrElse(getInteger(o, p), s)
3737
3838
3939 func t (o,p) = valueOrErrorMessage(getInteger(o, p), k((("mandatory this." + p) + " is not defined")))
4040
4141
4242 func u (v) = if ((0 > v))
4343 then -(v)
4444 else v
4545
4646
4747 func w (x,y) = if ((x >= 0))
4848 then x
4949 else m((valueOrElse(y, "value") + " should be positive"))
5050
5151
5252 func z () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5353
5454
5555 let A = addressFromStringValue(n(this, z()))
5656
5757 let B = makeString(["%s%s", "referral", "programName"], a)
5858
5959 let C = "wxlock"
6060
6161 let D = valueOrElse(getString(this, B), C)
6262
6363 func E () = "%s%s__config__factoryAddress"
6464
6565
6666 let F = 1
6767
6868 let G = 2
6969
7070 let H = 3
7171
7272 let I = 4
7373
7474 let J = 5
7575
7676 let K = 6
7777
7878 let L = 7
7979
8080 let M = 8
8181
8282 let N = 9
8383
8484 let O = 10
8585
8686 let P = 11
8787
8888 func Q () = "%s__factoryConfig"
8989
9090
9191 func R (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], a)
9292
9393
9494 func T (U) = makeString(["%s%s", "poolWeight", U], a)
9595
9696
9797 func V (W,X) = ((("%s%s__poolWeight__" + W) + "__") + toString(X))
9898
9999
100100 func Y () = addressFromStringValue(n(this, E()))
101101
102102
103103 func Z (aa) = split(n(aa, Q()), a)
104104
105105
106106 func ab (ac) = addressFromStringValue(ac[G])
107107
108108
109109 func ad (ac) = addressFromStringValue(ac[J])
110110
111111
112112 func ae (ac) = addressFromStringValue(ac[F])
113113
114114
115115 func af (ac) = addressFromStringValue(ac[O])
116116
117117
118118 func ag () = "%s__managerPublicKey"
119119
120120
121121 func ah () = "%s__managerVaultAddress"
122122
123123
124124 func ai () = "%s%s__ratePerBlock__current"
125125
126126
127127 func aj () = "%s%s__ratePerBlockMax__current"
128128
129129
130130 func ak () = "%s%s__emission__startBlock"
131131
132132
133133 func al () = "%s%s__boostingV2__startBlock"
134134
135135
136136 func am () = "%s%s__boostingV2__integral"
137137
138138
139139 func an () = "%s%s__emission__duration"
140140
141141
142142 func ao () = "%s%s__emission__endBlock"
143143
144144
145145 func ap () = "%s__nextPeriod"
146146
147147
148148 func aq () = "%s%s__gwxRewardEmissionPart__startHeight"
149149
150150
151151 let ar = 1
152152
153153 let as = 2
154154
155155 let at = 3
156156
157157 let au = 4
158158
159159 let av = 5
160160
161161 let aw = 6
162162
163163 func ax () = "%s__config"
164164
165165
166166 func ay () = split(n(this, ax()), a)
167167
168168
169169 let az = ay()
170170
171171 let aA = fromBase58String(az[ar])
172172
173173 let aB = valueOrErrorMessage(parseInt(az[as]), k("invalid min lock amount"))
174174
175175 let aC = valueOrErrorMessage(parseInt(az[at]), k("invalid min lock duration"))
176176
177177 let aD = valueOrErrorMessage(parseInt(az[au]), k("invalid max lock duration"))
178178
179179 let aE = valueOrErrorMessage(addressFromString(az[av]), k("invalid math contract address"))
180180
181181 let aF = valueOrErrorMessage(parseInt(az[aw]), k("invalid blocks in period"))
182182
183183 func aG (aA,aB,aC,aD,aE) = makeString(["%s%d%d%d%s", aA, aB, aC, aD, aE], a)
184184
185185
186186 func aH (aA,aB,aC,aD,aE) = aG(aA, toString(aB), toString(aC), toString(aD), aE)
187187
188188
189189 func aI () = {
190190 let aJ = getString(ah())
191191 if ($isInstanceOf(aJ, "String"))
192192 then {
193193 let aK = aJ
194194 addressFromStringValue(aK)
195195 }
196196 else this
197197 }
198198
199199
200200 func aL () = {
201201 let aM = aI()
202202 let aJ = getString(aM, ag())
203203 if ($isInstanceOf(aJ, "String"))
204204 then {
205205 let aK = aJ
206206 fromBase58String(aK)
207207 }
208208 else if ($isInstanceOf(aJ, "Unit"))
209209 then unit
210210 else throw("Match error")
211211 }
212212
213213
214214 func aN (aO) = {
215215 let aP = m("Permission denied")
216216 let aJ = aL()
217217 if ($isInstanceOf(aJ, "ByteVector"))
218218 then {
219219 let aQ = aJ
220220 if ((aO.callerPublicKey == aQ))
221221 then true
222222 else aP
223223 }
224224 else if ($isInstanceOf(aJ, "Unit"))
225225 then if ((aO.caller == this))
226226 then true
227227 else aP
228228 else throw("Match error")
229229 }
230230
231231
232232 let aR = 1
233233
234234 let aS = 2
235235
236236 let aT = 3
237237
238238 let aU = 4
239239
240240 let aV = 5
241241
242242 let aW = 6
243243
244244 func aX (aY,aZ) = makeString(["%s%s%s__lock", toString(aY), {
245245 let aJ = aZ
246246 if ($isInstanceOf(aJ, "ByteVector"))
247247 then {
248248 let ba = aJ
249249 toBase58String(ba)
250250 }
251251 else if ($isInstanceOf(aJ, "Unit"))
252252 then "legacy"
253253 else throw("Match error")
254254 }], a)
255255
256256
257257 func bb (aY,aZ) = split(n(this, aX(aY, aZ)), a)
258258
259259
260260 func bc (aY) = makeString(["%s%s__gwxAmountTotal", toString(aY)], a)
261261
262262
263263 func bd (be,bf,bg,bh,bi) = makeString(["%d%d%d%d%d%d%d", toString(be), toString(bf), toString(bg), toString(lastBlock.timestamp), toString(bh), toString(bi)], a)
264264
265265
266266 func bj () = "%s__nextUserNum"
267267
268268
269269 func bk (aY) = makeString(["%s%s%s__mapping__user2num", aY], a)
270270
271271
272272 func bl (X) = makeString(["%s%s%s__mapping__num2user", X], a)
273273
274274
275275 func bm () = "%s%s__stats__activeTotalLocked"
276276
277277
278278 func bn () = "%s%s__stats__locksDurationSumInBlocks"
279279
280280
281281 func bo () = "%s%s__stats__locksCount"
282282
283283
284284 func bp () = "%s%s__stats__activeUsersCount"
285285
286286
287287 func bq (br) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(br)], a)
288288
289289
290290 func bs (br,bt) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(br), bt], a)
291291
292292
293293 func bu (br) = makeString(["%s%d__maxBoostInt", toString(br)], a)
294294
295295
296296 func bv () = "%s%s__maxBoostInt__total"
297297
298298
299299 func bw (br) = makeString(["%s%d__userBoostAvaliableToClaimTotal", toString(br)], a)
300300
301301
302302 func bx (br) = makeString(["%s%d__userBoostClaimed", toString(br)], a)
303303
304304
305305 func by () = "%s%s__gwx__total"
306306
307307
308308 func bz (bA,bB,o,bC) = makeString(["%s%s%s%s%d", "vote", bA, bB, toString(o), toString(bC)], a)
309309
310310
311311 func bD (bC) = makeString(["%s%d", "startHeight", toString(bC)], a)
312312
313313
314314 func bE () = makeString(["%s", "currentEpochUi"], a)
315315
316316
317317 func bF (bG,bC) = makeString(["%s%s%d", "votingResultStaked", bG, toString(bC)], a)
318318
319319
320320 func bH (bG,bC) = makeString(["%s%s%d", "votingResultStakedIntegral", bG, toString(bC)], a)
321321
322322
323323 func bI (bG,bC) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", bG, toString(bC)], a)
324324
325325
326326 func bJ (bG,o,bC) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", bG, toString(o), toString(bC)], a)
327327
328328
329329 func bK (bG,o,bC) = makeString(["%s%s%s%d", "voteStakedIntegral", bG, toString(o), toString(bC)], a)
330330
331331
332332 func bL (bG,o,bC) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", bG, toString(o), toString(bC)], a)
333333
334334
335335 func bM (bG,o,bC) = makeString(["%s%s%s%d", "voteStakedIntegralLast", bG, toString(o), toString(bC)], a)
336336
337337
338338 func bN (bO,bG) = makeString(["%s%s%s", "staked", bO, bG], a)
339339
340340
341341 let bP = Y()
342342
343343 let ac = Z(bP)
344344
345345 let bQ = ad(ac)
346346
347347 let bR = ae(ac)
348348
349349 let bS = af(ac)
350350
351351 let bT = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), k("lp_staking_pools contract address is undefined"))), k("invalid lp_staking_pools contract address"))
352352
353353 let bU = makeString(["%s", "votingEmissionContract"], a)
354354
355355 let bV = addressFromStringValue(getStringValue(bP, bU))
356356
357357 let bW = makeString(["%s", "votingEmissionRateContract"], a)
358358
359359 let bX = {
360360 let bY = invoke(bQ, "getBoostCoeffREADONLY", nil, nil)
361361 if ($isInstanceOf(bY, "Int"))
362362 then bY
363363 else throw(($getType(bY) + " couldn't be cast to Int"))
364364 }
365365
366366 func bZ (aY) = {
367367 let aJ = getString(this, bk(toString(aY)))
368368 if ($isInstanceOf(aJ, "String"))
369369 then {
370370 let aK = aJ
371371 valueOrErrorMessage(parseInt(aK), k("invalid user number"))
372372 }
373373 else if ($isInstanceOf(aJ, "Unit"))
374374 then m("invalid user")
375375 else throw("Match error")
376376 }
377377
378378
379379 func ca () = valueOrElse(getInteger(this, by()), 0)
380380
381381
382382 func cb (aY) = {
383383 let cc = "getLockedGwxAmount"
384384 let cd = valueOrErrorMessage({
385385 let aJ = getString(bV, bW)
386386 if ($isInstanceOf(aJ, "Unit"))
387387 then unit
388388 else if ($isInstanceOf(aJ, "String"))
389389 then {
390390 let aK = aJ
391391 addressFromString(aK)
392392 }
393393 else throw("Match error")
394394 }, k("invalid voting emission rate address"))
395395 let ce = {
396396 let bY = invoke(bV, cc, [toString(aY)], nil)
397397 if ($isInstanceOf(bY, "Int"))
398398 then bY
399399 else throw(($getType(bY) + " couldn't be cast to Int"))
400400 }
401401 let cf = {
402402 let bY = invoke(cd, cc, [toString(aY)], nil)
403403 if ($isInstanceOf(bY, "Int"))
404404 then bY
405405 else throw(($getType(bY) + " couldn't be cast to Int"))
406406 }
407407 let cg = max([ce, cf])
408408 cg
409409 }
410410
411411
412412 func ch (ci,cj,be,ck,bg,bh,aO) = {
413413 let cl = makeString(["%s%s%s%s__history", ci, cj, toBase58String(aO.transactionId)], a)
414414 let cm = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(be), toString(ck), toString(bg), toString(bh)], a)
415415 StringEntry(cl, cm)
416416 }
417417
418418
419419 func cn (co,cp,cq,cr) = {
420420 let cs = bn()
421421 let ct = bo()
422422 let cu = bp()
423423 let cv = bm()
424424 let cw = q(this, cs)
425425 let cx = q(this, ct)
426426 let cy = q(this, cu)
427427 let cz = q(this, cv)
428428 [IntegerEntry(cs, (cw + cp)), IntegerEntry(ct, (cx + cq)), IntegerEntry(cu, (cy + cr)), IntegerEntry(cv, (cz + co))]
429429 }
430430
431431
432432 func cA (aY,aZ,be,bf,bg,bh,bi) = [StringEntry(aX(aY, aZ), bd(be, bf, bg, bh, bi))]
433433
434434
435435 func cB (aO,cC) = if ((size(aO.payments) > 1))
436436 then m("only one payment is allowed")
437437 else if ((size(aO.payments) == 0))
438438 then 0
439439 else {
440440 let cD = aO.payments[0]
441441 if ((value(cD.assetId) != cC))
442442 then m("invalid asset id in payment")
443443 else cD.amount
444444 }
445445
446446
447447 func cE (aY) = valueOrElse(getInteger(this, bc(aY)), 0)
448448
449449
450450 func cF () = {
451451 let cG = {
452452 let cH = value(getInteger(bV, bE()))
453453 let cI = (cH - 1)
454454 if ((0 > cI))
455455 then m("invalid epoch")
456456 else $Tuple2(cH, cI)
457457 }
458458 let cH = cG._1
459459 let cI = cG._2
460460 let cJ = value(getInteger(bV, bD(cH)))
461461 $Tuple2(cI, cJ)
462462 }
463463
464464
465465 func cK (bG) = {
466466 let cL = 4
467467 let cM = 5
468468 let cN = {
469469 let bY = invoke(bP, "getPoolConfigByLpAssetIdREADONLY", [bG], nil)
470470 if ($isInstanceOf(bY, "List[Any]"))
471471 then bY
472472 else throw(($getType(bY) + " couldn't be cast to List[Any]"))
473473 }
474474 let bA = {
475475 let bY = cN[cL]
476476 if ($isInstanceOf(bY, "String"))
477477 then bY
478478 else throw(($getType(bY) + " couldn't be cast to String"))
479479 }
480480 let bB = {
481481 let bY = cN[cM]
482482 if ($isInstanceOf(bY, "String"))
483483 then bY
484484 else throw(($getType(bY) + " couldn't be cast to String"))
485485 }
486486 $Tuple2(bA, bB)
487487 }
488488
489489
490490 func cO (bG,bO) = {
491491 let aY = addressFromStringValue(bO)
492492 let cP = cF()
493493 let cI = cP._1
494494 let cJ = cP._2
495495 let cQ = cK(bG)
496496 let bA = cQ._1
497497 let bB = cQ._2
498498 let cR = bz(bA, bB, aY, cI)
499499 let cS = valueOrElse(getInteger(bV, cR), 0)
500500 cS
501501 }
502502
503503
504504 func cT (bG,bO) = {
505505 let cU = valueOrElse(getInteger(bR, bN(bO, bG)), 0)
506506 let cS = cO(bG, bO)
507507 if ((cU == 0))
508508 then 0
509509 else cS
510510 }
511511
512512
513513 func cV (bG) = {
514514 let cW = cF()
515515 let cI = cW._1
516516 let cJ = cW._2
517517 let cX = valueOrElse(getInteger(bV, bF(bG, cI)), 0)
518518 let cY = valueOrElse(getInteger(this, bF(bG, cI)), cX)
519519 cY
520520 }
521521
522522
523523 func cZ (bG) = {
524524 let da = cF()
525525 let cI = da._1
526526 let cJ = da._2
527527 let cY = cV(bG)
528528 let db = valueOrElse(getInteger(this, bH(bG, cI)), 0)
529529 let dc = valueOrElse(getInteger(this, bI(bG, cI)), cJ)
530530 let dd = (height - dc)
531531 let de = ((dd * cY) + db)
532532 de
533533 }
534534
535535
536536 func df (bG,dg) = {
537537 let dh = cF()
538538 let cI = dh._1
539539 let cJ = dh._2
540540 let cY = cV(bG)
541541 let di = (cY + dg)
542542 let de = cZ(bG)
543543 [IntegerEntry(bF(bG, cI), di), IntegerEntry(bI(bG, cI), height), IntegerEntry(bH(bG, cI), de)]
544544 }
545545
546546
547547 func dj (bG,bO) = {
548548 let dk = cF()
549549 let cI = dk._1
550550 let cJ = dk._2
551551 let aY = addressFromStringValue(bO)
552552 let dl = cT(bG, bO)
553553 let dm = valueOrElse(getInteger(this, bK(bG, aY, cI)), 0)
554554 let dn = valueOrElse(getInteger(this, bL(bG, aY, cI)), cJ)
555555 let do = (height - dn)
556556 let dp = ((do * dl) + dm)
557557 dp
558558 }
559559
560560
561561 func dq (bG,bO,dr) = {
562562 let ds = cF()
563563 let cI = ds._1
564564 let cJ = ds._2
565565 let aY = addressFromStringValue(bO)
566566 let dt = cO(bG, bO)
567567 let du = if ((dt == 0))
568568 then nil
569569 else {
570570 let dg = if (dr)
571571 then dt
572572 else -(dt)
573573 let dv = df(bG, dg)
574574 let dp = dj(bG, bO)
575575 let dw = [IntegerEntry(bL(bG, aY, cI), height), IntegerEntry(bK(bG, aY, cI), dp)]
576576 (dv ++ dw)
577577 }
578578 du
579579 }
580580
581581
582582 func dx (bG,bO) = {
583583 let dy = cF()
584584 let cI = dy._1
585585 let cJ = dy._2
586586 let aY = addressFromStringValue(bO)
587587 let dz = bM(bG, aY, cI)
588588 let dA = valueOrElse(getInteger(this, dz), 0)
589589 let dB = bJ(bG, aY, cI)
590590 let dC = valueOrElse(getInteger(this, dB), 0)
591591 let dp = dj(bG, bO)
592592 let de = cZ(bG)
593593 let dD = (dp - dA)
594594 let dE = (de - dC)
595595 $Tuple3([IntegerEntry(dz, dp), IntegerEntry(dB, de)], dD, dE)
596596 }
597597
598598
599599 func dF () = {
600600 let dG = t(bQ, ai())
601601 let dH = getInteger(this, al())
602602 let dI = getInteger(this, am())
603603 let dJ = t(bQ, ao())
604604 let dK = if ((height > dJ))
605605 then dJ
606606 else height
607607 let dL = {
608608 let aJ = dH
609609 if ($isInstanceOf(aJ, "Int"))
610610 then {
611611 let dM = aJ
612612 max([(dK - dM), 0])
613613 }
614614 else if ($isInstanceOf(aJ, "Unit"))
615615 then 0
616616 else throw("Match error")
617617 }
618618 let dN = ((dG * (bX - 1)) / bX)
619619 let dO = valueOrElse(dI, 0)
620620 let dP = ((dN * dL) + dO)
621621 $Tuple2([IntegerEntry(am(), dP), IntegerEntry(al(), height)], dP)
622622 }
623623
624624
625625 func dQ (bG,bO,dR) = {
626626 let aY = valueOrErrorMessage(addressFromString(bO), k("invalid user address"))
627627 let br = bZ(aY)
628628 if ((br == br))
629629 then {
630630 let dS = "empty"
631631 let dT = if ((bG != dS))
632632 then {
633633 let dU = valueOrErrorMessage(getString(bP, R(bG)), k(("unsupported lp asset " + bG)))
634634 getIntegerValue(bP, T(dU))
635635 }
636636 else if (dR)
637637 then 0
638638 else m(("not readonly mode: unsupported lp asset " + bG))
639639 let dV = bs(br, bG)
640640 let dW = bq(br)
641641 let dX = valueOrElse(getInteger(this, dV), q(this, dW))
642642 let dP = dF()._2
643643 let dY = (dP - dX)
644644 if ((0 > dY))
645645 then m("wrong calculations")
646646 else {
647647 let dZ = dx(bG, bO)
648648 let ea = dZ._1
649649 let eb = dZ._2
650650 let ec = dZ._3
651651 let ed = fraction(dY, dT, d)
652652 let ee = if ((ec == 0))
653653 then 0
654654 else fraction(ed, eb, ec)
655655 let ef = ([IntegerEntry(dV, dP)] ++ ea)
656656 let eg = makeString([toString(dX), toString(dY), toString(dT), toString(eb), toString(ec)], ":")
657657 $Tuple3(ee, ef, eg)
658658 }
659659 }
660660 else throw("Strict value is not equal to itself.")
661661 }
662662
663663
664664 func eh (aO,ei) = {
665665 let ej = [1, 3, 6, 12, 24, 48]
666666 if (!(containsElement(ej, ei)))
667667 then m("invalid duration")
668668 else {
669669 let bg = (ei * j)
670670 let ek = toBase58String(aA)
671671 if ((size(aO.payments) != 1))
672672 then m("invalid payment - exact one payment must be attached")
673673 else {
674674 let cD = aO.payments[0]
675675 let el = cD.amount
676676 if ((aA != value(cD.assetId)))
677677 then m((("invalid asset is in payment - " + ek) + " is expected"))
678678 else {
679679 let em = bj()
680680 let aY = aO.caller
681681 let bO = toString(aY)
682682 let en = isDefined(getString(bk(bO)))
683683 let eo = if (en)
684684 then value(getString(bk(bO)))
685685 else toString(t(this, em))
686686 let br = parseIntValue(eo)
687687 let ck = height
688688 if (if ((aB > el))
689689 then (aY != bT)
690690 else false)
691691 then m(("amount is less then minLockAmount=" + toString(aB)))
692692 else if ((aC > bg))
693693 then m(("passed duration is less then minLockDuration=" + toString(aC)))
694694 else if ((bg > aD))
695695 then m(("passed duration is greater then maxLockDuration=" + toString(aD)))
696696 else {
697697 let ep = fraction(bg, c, aD)
698698 let eq = fraction(el, ep, c)
699699 let er = ca()
700700 let dW = bq(br)
701701 let dP = dF()._2
702702 let es = cE(aY)
703703 let et = reentrantInvoke(bS, "refreshUserReward", [aY.bytes], nil)
704704 if ((et == et))
705705 then {
706706 let eu = if (en)
707707 then nil
708708 else [IntegerEntry(em, (br + 1)), StringEntry(bk(bO), eo), StringEntry(bl(eo), bO)]
709709 $Tuple2(((((eu ++ cA(aY, aO.transactionId, el, ck, bg, eq, 0)) ++ cn(el, bg, 1, if (en)
710710 then 0
711711 else 1)) :+ ch("lock", bO, el, ck, bg, eq, aO)) ++ [IntegerEntry(dW, dP), IntegerEntry(by(), (er + eq)), IntegerEntry(bc(aY), (es + eq))]), eq)
712712 }
713713 else throw("Strict value is not equal to itself.")
714714 }
715715 }
716716 }
717717 }
718718 }
719719
720720
721721 func ev (aY,ew) = {
722722 let ex = bb(aY, ew)
723723 let ey = parseIntValue(ex[aR])
724724 let ck = parseIntValue(ex[aS])
725725 let ez = parseIntValue(ex[aT])
726726 let eA = (ck + ez)
727727 let bi = parseIntValue(ex[aW])
728728 let bh = parseIntValue(ex[aV])
729729 let eB = ((height - ck) / aF)
730730 let eC = fraction(toBigInt(eB), (toBigInt((8 * aF)) * h), toBigInt(ez))
731731 let eD = if ((height > eA))
732732 then ey
733733 else (toInt(fraction(toBigInt(ey), (h - pow(toBigInt(5), 1, eC, f, f, DOWN)), h)) - bi)
734734 eD
735735 }
736736
737737
738738 @Callable(aO)
739739 func constructor (eE,eF,aB,eG,eH,aE) = {
740740 let eI = aN(aO)
741741 if ((eI == eI))
742742 then ([IntegerEntry(bj(), 0), StringEntry(ax(), aH(eF, aB, eG, eH, aE)), StringEntry(E(), eE)] ++ cn(0, 0, 0, 0))
743743 else throw("Strict value is not equal to itself.")
744744 }
745745
746746
747747
748748 @Callable(aO)
749749 func lockRef (bg,eJ,eK) = {
750750 let eL = eh(aO, bg)
751751 let eM = eL._1
752752 let eq = eL._2
753753 let eN = toString(aO.caller)
754754 let eO = if (if ((eJ == ""))
755755 then true
756756 else (eK == base58''))
757757 then unit
758758 else invoke(A, "createPair", [D, eJ, eN, eK], nil)
759759 if ((eO == eO))
760760 then {
761761 let eP = invoke(aE, "updateReferralActivity", [toString(aO.caller), eq], nil)
762762 if ((eP == eP))
763763 then $Tuple2(eM, unit)
764764 else throw("Strict value is not equal to itself.")
765765 }
766766 else throw("Strict value is not equal to itself.")
767767 }
768768
769769
770770
771771 @Callable(aO)
772772 func lock (bg) = {
773773 let eQ = eh(aO, bg)
774774 let eM = eQ._1
775775 let eq = eQ._2
776776 let eP = invoke(aE, "updateReferralActivity", [toString(aO.caller), eq], nil)
777777 if ((eP == eP))
778778 then $Tuple2(eM, unit)
779779 else throw("Strict value is not equal to itself.")
780780 }
781781
782782
783783
784784 @Callable(aO)
785785 func claimWxBoost (bG,bO) = if ((bR != aO.caller))
786786 then m("permissions denied")
787787 else {
788788 let eR = dQ(bG, bO, false)
789789 let eS = eR._1
790790 let ef = eR._2
791791 let eg = eR._3
792792 $Tuple2(ef, [eS])
793793 }
794794
795795
796796
797797 @Callable(aO)
798798 func claimWxBoostREADONLY (bG,bO) = {
799799 let eT = dQ(bG, bO, true)
800800 let eS = eT._1
801801 let ef = eT._2
802802 let eg = eT._3
803803 $Tuple2(nil, [eS, eg])
804804 }
805805
806806
807807
808808 @Callable(aO)
809-func unlock (eU,be) = {
809+func unlock (eU) = {
810810 let aY = aO.caller
811811 let bO = toString(aY)
812812 let aZ = fromBase58String(eU)
813813 let ex = bb(aY, if ((eU == ""))
814814 then unit
815815 else aZ)
816816 let ey = parseIntValue(ex[aR])
817817 let ck = parseIntValue(ex[aS])
818818 let ez = parseIntValue(ex[aT])
819819 let eA = (ck + ez)
820820 let bi = parseIntValue(ex[aW])
821821 let bh = parseIntValue(ex[aV])
822822 let eB = ((height - ck) / aF)
823823 let eD = ev(aY, if ((eU == ""))
824824 then unit
825825 else aZ)
826- if ((be > eD))
827- then m(("maximum amount to unlock: " + toString(eD)))
826+ let ep = fraction(ez, c, aD)
827+ let eq = fraction(ey, ep, c)
828+ let eV = min([fraction((eB * aF), eq, aD), bh])
829+ let eW = w((bh - eV), "gwxRemaining")
830+ let eX = cb(aY)
831+ if ((0 >= ey))
832+ then m("nothing to unlock")
828833 else {
829- let ep = fraction(ez, c, aD)
830- let eq = fraction(ey, ep, c)
831- let eV = fraction((eB * aF), eq, aD)
832- let eW = w((bh - eV), "gwxRemaining")
833- let eX = cb(aY)
834- if ((0 >= ey))
835- then m("nothing to unlock")
834+ let er = ca()
835+ let es = cE(aY)
836+ let eY = w((es - eV), "userGwxAmountTotalNew")
837+ if ((eX > eY))
838+ then m(("locked gwx amount: " + toString(eX)))
836839 else {
837- let er = ca()
838- let es = cE(aY)
839- let eY = w((es - eV), "userGwxAmountTotalNew")
840- if ((eX > eY))
841- then m(("locked gwx amount: " + toString(eX)))
842- else {
843- let et = reentrantInvoke(bS, "refreshUserReward", [aY.bytes], nil)
844- if ((et == et))
845- then ((((cA(aY, aZ, ey, ck, ez, eW, (bi + be)) ++ cn(-(be), 0, 0, 0)) :+ ch("unlock", bO, be, ck, ez, eV, aO)) :+ ScriptTransfer(aY, be, aA)) ++ [IntegerEntry(by(), w((er - eV), "gwxTotal")), IntegerEntry(bc(aY), eY)])
846- else throw("Strict value is not equal to itself.")
847- }
840+ let et = reentrantInvoke(bS, "refreshUserReward", [aY.bytes], nil)
841+ if ((et == et))
842+ then ((((cA(aY, aZ, ey, ck, ez, eW, (bi + eD)) ++ cn(-(eD), 0, 0, 0)) :+ ch("unlock", bO, eD, ck, ez, eV, aO)) :+ ScriptTransfer(aY, eD, aA)) ++ [IntegerEntry(by(), w((er - eV), "gwxTotal")), IntegerEntry(bc(aY), eY)])
843+ else throw("Strict value is not equal to itself.")
848844 }
849845 }
850846 }
851847
852848
853849
854850 @Callable(aO)
855851 func gwxUserInfoREADONLY (bO) = {
856852 let aY = valueOrErrorMessage(addressFromString(bO), k("invalid user address"))
857853 let bh = cE(aY)
858854 $Tuple2(nil, [bh])
859855 }
860856
861857
862858
863859 @Callable(aO)
864860 func userMaxDurationREADONLY (bO) = $Tuple2(nil, $Tuple2("increaseLock", aD))
865861
866862
867863
868864 @Callable(aO)
869865 func getUserGwxAmountAtHeightREADONLY (bO,eZ) = {
870866 let aY = valueOrErrorMessage(addressFromString(bO), k("invalid user address"))
871867 let bh = cE(aY)
872868 $Tuple2(nil, bh)
873869 }
874870
875871
876872
877873 @Callable(aO)
878874 func getUserGwxAmount (bO) = {
879875 let aY = valueOrErrorMessage(addressFromString(bO), k("invalid user address"))
880876 let bh = cE(aY)
881877 $Tuple2(nil, bh)
882878 }
883879
884880
885881
886882 @Callable(aO)
887883 func getGwxTotalREADONLY () = $Tuple2(nil, ca())
888884
889885
890886
891887 @Callable(aO)
892888 func onBoostEmissionUpdate () = {
893889 let eI = if ((aO.caller == bQ))
894890 then true
895891 else aN(aO)
896892 if ((eI == eI))
897893 then dF()
898894 else throw("Strict value is not equal to itself.")
899895 }
900896
901897
902898
903899 @Callable(aO)
904900 func onStakedVoteUpdate (bG,bO,dr) = {
905901 let eI = if ((aO.caller == bR))
906902 then true
907903 else aN(aO)
908904 if ((eI == eI))
909905 then {
910906 let du = dq(bG, bO, dr)
911907 $Tuple2(du, unit)
912908 }
913909 else throw("Strict value is not equal to itself.")
914910 }
915911
916912
917913
918914 @Callable(aO)
919915 func getVotingResultStakedREADONLY (bG) = $Tuple2(nil, cV(bG))
920916
921917
922918
923919 @Callable(aO)
924920 func getVotingResultStakedIntegralREADONLY (bG) = $Tuple2(nil, cZ(bG))
925921
926922
927923
928924 @Callable(aO)
929925 func getUserVoteFinalizedREADONLY (bG,bO) = $Tuple2(nil, cO(bG, bO))
930926
931927
932928
933929 @Callable(aO)
934930 func getUserVoteStakedIntegralREADONLY (bG,bO) = $Tuple2(nil, dj(bG, bO))
935931
936932
937933 @Verifier(fa)
938934 func fb () = {
939935 let fc = {
940936 let aJ = aL()
941937 if ($isInstanceOf(aJ, "ByteVector"))
942938 then {
943939 let aQ = aJ
944940 aQ
945941 }
946942 else if ($isInstanceOf(aJ, "Unit"))
947943 then fa.senderPublicKey
948944 else throw("Match error")
949945 }
950946 sigVerify(fa.bodyBytes, fa.proofs[0], fc)
951947 }
952948

github/deemru/w8io/026f985 
84.79 ms