tx · FzV24NVEjjqLnb7UqqJizKNRYBRrZELS3FnsSSHSfCUQ

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02800000 Waves

2023.03.10 12:09 [2483778] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "FzV24NVEjjqLnb7UqqJizKNRYBRrZELS3FnsSSHSfCUQ", "fee": 2800000, "feeAssetId": null, "timestamp": 1678439392971, "version": 2, "chainId": 84, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "qWXahWXJoGT1JoLQCPdy75QduD3ECzSxeZzC4WNsSGmk2QRn1q38M48nBGEQWVPK61AR9zUisqkGrqYXp6JgRaY" ], "script": "base64:BgLFLwgCEggKBggIAQEBCBIFCgMBCAISAwoBARIDCgEBEgQKAggIEgQKAggIEgMKAQgSAwoBCBIDCgEIEgQKAggBEgASABIFCgMICAQSAwoBCBIECgIICBIDCgEIEgAiA1NFUCIGU0NBTEU4IgVNVUxUOCIOUE9PTFdFSUdIVE1VTFQiB3dyYXBFcnIiA21zZyIIdGhyb3dFcnIiBHN0cmYiB2FkZHJlc3MiA2tleSIDaW96IgNpb2QiCmRlZmF1bHRWYWwiA2lvZiIDYWJzIgN2YWwiA2FhbCIHJG1hdGNoMCIKdmFsQW55THlzdCICYWkiBnZhbEludCIba2V5UmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzIh5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwiFmtleVJlZmVycmFsUHJvZ3JhbU5hbWUiGnJlZmVycmFsUHJvZ3JhbU5hbWVEZWZhdWx0IhNyZWZlcnJhbFByb2dyYW1OYW1lIhFrZXlGYWN0b3J5QWRkcmVzcyIYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwIhlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwIhRJZHhGYWN0b3J5Q2ZnSWRvRGFwcCIVSWR4RmFjdG9yeUNmZ1RlYW1EYXBwIhlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwIhVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAiGUlkeEZhY3RvcnlDZmdTbGlwcGFnZURhcHAiFElkeEZhY3RvcnlDZmdEYW9EYXBwIhpJZHhGYWN0b3J5Q2ZnTWFya2V0aW5nRGFwcCIaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAiFklkeEZhY3RvcnlDZmdCaXJkc0RhcHAiDWtleUZhY3RvcnlDZmciGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nIgpscEFzc2V0U3RyIhBrZXlGYWN0b3J5THBMaXN0IiZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcyIUa2V5RmFjdG9yeVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIba2V5RmFjdG9yeVBvb2xXZWlnaHRIaXN0b3J5Igtwb29sQWRkcmVzcyIDbnVtIhhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwiCnJlYWRMcExpc3QiFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIgdmYWN0b3J5IhhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwiCmZhY3RvcnlDZmciGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbCIXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwiGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwiE2tleU1hbmFnZXJQdWJsaWNLZXkiGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5Ih5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQiIWtleUVtaXNzaW9uUmF0ZVBlckJsb2NrTWF4Q3VycmVudCIVa2V5RW1pc3Npb25TdGFydEJsb2NrIh1rZXlCb29zdGluZ1YyTGFzdFVwZGF0ZUhlaWdodCIVa2V5Qm9vc3RpbmdWMkludGVncmFsIhtrZXlFbWlzc2lvbkR1cmF0aW9uSW5CbG9ja3MiE2tleUVtaXNzaW9uRW5kQmxvY2siDWtleU5leHRQZXJpb2QiH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQiDUlkeENmZ0Fzc2V0SWQiE0lkeENmZ01pbkxvY2tBbW91bnQiFUlkeENmZ01pbkxvY2tEdXJhdGlvbiIVSWR4Q2ZnTWF4TG9ja0R1cmF0aW9uIhJJZHhDZmdNYXRoQ29udHJhY3QiCWtleUNvbmZpZyIVcmVhZENvbmZpZ0FycmF5T3JGYWlsIgxtYXRoQ29udHJhY3QiDWZvcm1hdENvbmZpZ1MiB2Fzc2V0SWQiDW1pbkxvY2tBbW91bnQiD21pbkxvY2tEdXJhdGlvbiIPbWF4TG9ja0R1cmF0aW9uIgxmb3JtYXRDb25maWciFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0IgttdXN0TWFuYWdlciIBaSICcGQiAnBrIg5JZHhMb2NrVXNlck51bSINSWR4TG9ja0Ftb3VudCIMSWR4TG9ja1N0YXJ0Ig9JZHhMb2NrRHVyYXRpb24iDUlkeExvY2tQYXJhbUsiDUlkeExvY2tQYXJhbUIiE2tleUxvY2tQYXJhbXNSZWNvcmQiC3VzZXJBZGRyZXNzIhpyZWFkTG9ja1BhcmFtc1JlY29yZE9yRmFpbCIXZm9ybWF0TG9ja1BhcmFtc1JlY29yZFMiB3VzZXJOdW0iBmFtb3VudCIFc3RhcnQiCGR1cmF0aW9uIgZwYXJhbUsiBnBhcmFtQiIQbGFzdFVwZFRpbWVzdGFtcCIJZ3d4QW1vdW50IhZmb3JtYXRMb2NrUGFyYW1zUmVjb3JkIg5rZXlOZXh0VXNlck51bSISa2V5VXNlcjJOdW1NYXBwaW5nIhJrZXlOdW0yVXNlck1hcHBpbmciFmtleUxvY2tQYXJhbVVzZXJBbW91bnQiFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2siFGtleUxvY2tQYXJhbUR1cmF0aW9uIg1rZXlMb2NrUGFyYW1LIg1rZXlMb2NrUGFyYW1CIhVrZXlMb2NrUGFyYW1CeVBlcmlvZEsiBnBlcmlvZCIVa2V5TG9ja1BhcmFtQnlQZXJpb2RCIhdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudCIga2V5U3RhdHNMb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MiEmtleVN0YXRzTG9ja3NDb3VudCISa2V5U3RhdHNVc2Vyc0NvdW50IiBrZXlVc2VyQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTCIia2V5VXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTCIJbHBBc3NldElkIhdrZXlVc2VyTWF4Qm9vc3RJTlRFR1JBTCIYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMIiFrZXlVc2VyQm9vc3RBdmFsYWlibGVUb0NsYWltVG90YWwiE2tleVVzZXJCb29zdENsYWltZWQiEWtleVRvdGFsQ2FjaGVkR3d4IhtrZXlUb3RhbENhY2hlZEd3eENvcnJlY3RpdmUiD2ZhY3RvcnlDb250cmFjdCIQZW1pc3Npb25Db250cmFjdCIPc3Rha2luZ0NvbnRyYWN0IhFnd3hSZXdhcmRDb250cmFjdCIWbHBTdGFraW5nUG9vbHNDb250cmFjdCIZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdCIWdm90aW5nRW1pc3Npb25Db250cmFjdCIKYm9vc3RDb2VmZiIBQCIRZ2V0VG90YWxDYWNoZWRHd3giB2NvcnJlY3QiEWtleUN1cnJlbnRFcG9jaFVpIg5jdXJyZW50RXBvY2hVaSIOa2V5VGFyZ2V0RXBvY2giEXRhcmdldEVwb2NoT3B0aW9uIhF0b3RhbENhY2hlZEd3eFJhdyIVaXNDb3JyZWN0aW9uQWN0aXZhdGVkIgpjb3JyZWN0aXZlIgxIaXN0b3J5RW50cnkiBHR5cGUiBHVzZXIiCWxvY2tTdGFydCIBayIBYiIKaGlzdG9yeUtFWSILaGlzdG9yeURBVEEiClN0YXRzRW50cnkiDnRvdGFsTG9ja2VkSW5jIgtkdXJhdGlvbkluYyIMbG9ja0NvdW50SW5jIg11c2Vyc0NvdW50SW5jIhtsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3NLRVkiDWxvY2tzQ291bnRLRVkiDXVzZXJzQ291bnRLRVkiDnRvdGFsQW1vdW50S0VZIhhsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MiCmxvY2tzQ291bnQiCnVzZXJzQ291bnQiC3RvdGFsQW1vdW50Ig1jYWxjR3d4QW1vdW50IgRrUmF3IgRiUmF3IgFoIgVTQ0FMRSIPTG9ja1BhcmFtc0VudHJ5Ig11c2VyQW1vdW50S0VZIg1zdGFydEJsb2NrS0VZIgtkdXJhdGlvbktFWSIEa0tFWSIEYktFWSIMa0J5UGVyaW9kS0VZIgxiQnlQZXJpb2RLRVkiImV4dHJhY3RPcHRpb25hbFBheW1lbnRBbW91bnRPckZhaWwiD2V4cGVjdGVkQXNzZXRJZCIDcG10IhljYWxjVXNlckd3eEFtb3VudEF0SGVpZ2h0Igx0YXJnZXRIZWlnaHQiBUVNUFRZIhJ1c2VyMk51bU1hcHBpbmdLRVkiDWd3eEFtb3VudENhbGMiFGNhbGNDdXJyZW50R3d4QW1vdW50IhpnZXRWb3RpbmdFbWlzc2lvbkVwb2NoSW5mbyINJHQwMTUxNTAxNTQzOCISbGFzdEZpbmFsaXplZEVwb2NoIhVrZXlTdGFydEhlaWdodEJ5RXBvY2giBWVwb2NoIhdjdXJyZW50RXBvY2hTdGFydEhlaWdodCIYZ2V0UG9vbEFzc2V0c0J5THBBc3NldElkIgxscEFzc2V0SWRTdHIiEGlkeEFtb3VudEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIHcG9vbENmZyINYW1vdW50QXNzZXRJZCIMcHJpY2VBc3NldElkIgdrZXlWb3RlIhVrZXlWb3RpbmdSZXN1bHRTdGFrZWQiHWtleVZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsIiVrZXlWb3RpbmdSZXN1bHRTdGFrZWRMYXN0VXBkYXRlSGVpZ2h0IiFrZXlWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbExhc3QiFWtleVZvdGVTdGFrZWRJbnRlZ3JhbCIda2V5Vm90ZVN0YWtlZExhc3RVcGRhdGVIZWlnaHQiGWtleVZvdGVTdGFrZWRJbnRlZ3JhbExhc3QiD2tleVN0YWtlZEJ5VXNlciIOdXNlckFkZHJlc3NTdHIiFGdldFVzZXJWb3RlRmluYWxpemVkIg0kdDAxODIyODE4MzA4Ig0kdDAxODMxMTE4Mzg2Igt1c2VyVm90ZUtleSIIdXNlclZvdGUiEWdldFVzZXJWb3RlU3Rha2VkIgxzdGFrZWRCeVVzZXIiFWdldFZvdGluZ1Jlc3VsdFN0YWtlZCINJHQwMTg5MzAxOTAxMCIXdm90aW5nUmVzdWx0U3Rha2VkU3RhcnQiEnZvdGluZ1Jlc3VsdFN0YWtlZCIhcmVmcmVzaFZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsIg9zdGFrZWRWb3RlRGVsdGEiDSR0MDE5NTMxMTk2MTEiFXZvdGluZ1Jlc3VsdFN0YWtlZE5ldyIddm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxLZXkiHnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsUHJldiIfdm90aW5nUmVzdWx0TGFzdFVwZGF0ZUhlaWdodEtleSIidm90aW5nUmVzdWx0U3Rha2VkTGFzdFVwZGF0ZUhlaWdodCIcdm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxEaCIadm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWwiGXJlZnJlc2hWb3RlU3Rha2VkSW50ZWdyYWwiBGVkZ2UiDSR0MDIwODExMjA4OTEiB2FjdGlvbnMiDSR0MDIxNDk2MjE2MTUiE3ZvdGluZ1Jlc3VsdEFjdGlvbnMiDnVzZXJWb3RlU3Rha2VkIhl1c2VyVm90ZVN0YWtlZEludGVncmFsS2V5Ihp1c2VyVm90ZVN0YWtlZEludGVncmFsUHJldiIhdXNlclZvdGVTdGFrZWRMYXN0VXBkYXRlSGVpZ2h0S2V5Ih51c2VyVm90ZVN0YWtlZExhc3RVcGRhdGVIZWlnaHQiGHVzZXJWb3RlU3Rha2VkSW50ZWdyYWxEaCIWdXNlclZvdGVTdGFrZWRJbnRlZ3JhbCILdm90ZUFjdGlvbnMiG2dldFN0YWtlZFZvdGVzSW50ZWdyYWxzRGlmZiINJHQwMjI2MDcyMjY4NyIadXNlclZvdGVTdGFrZWRJbnRlZ3JhbExhc3QiHnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsTGFzdCIadXNlclZvdGVTdGFrZWRJbnRlZ3JhbERpZmYiHnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsRGlmZiIccmVmcmVzaEJvb3N0RW1pc3Npb25JbnRlZ3JhbCISd3hFbWlzc2lvblBlckJsb2NrIiBib29zdGluZ1YyTGFzdFVwZGF0ZUhlaWdodE9wdGlvbiIYYm9vc3RpbmdWMkluZ2VyZ2FsT3B0aW9uIgtlbWlzc2lvbkVuZCICZGgiEGxhc3RVcGRhdGVIZWlnaHQiFWJvb3N0RW1pc3Npb25QZXJCbG9jayIZYm9vc3RFbWlzc2lvbkludGVncmFsUHJldiIVYm9vc3RFbWlzc2lvbkludGVncmFsIhRpbnRlcm5hbENsYWltV3hCb29zdCIIcmVhZE9ubHkiEHVzZXJSZWNvcmRPcHRpb24iD3VzZXJSZWNvcmRBcnJheSIKdXNlck51bVN0ciIIRU1QVFlTVFIiCnBvb2xXZWlnaHQiDnBvb2xBZGRyZXNzU3RyIiJ1c2VyTHBCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZIiB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWSIddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwiGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwiDSR0MDI3MjEyMjczNTEiG3N0YWtlZFZvdGVzSW50ZWdyYWxzQWN0aW9ucyIUdXNlclZvdGVJbnRlZ3JhbERpZmYiFnRvdGFsVm90ZXNJbnRlZ3JhbERpZmYiHXBvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsIiF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXciCWRhdGFTdGF0ZSIFZGVidWciC2xvY2tBY3Rpb25zIghjZmdBcnJheSIKYXNzZXRJZFN0ciIJcG10QW1vdW50Ig5uZXh0VXNlck51bUtFWSIOdXNlcklzRXhpc3RpbmciB2NvZWZmWDgiDmdXeEFtb3VudFN0YXJ0IhNnV3hQYXJhbXNSZXN1bHRMaXN0IgNhcnIiEWZhY3RvcnlBZGRyZXNzU3RyIg5sb2NrQXNzZXRJZFN0ciILbWluRHVyYXRpb24iC21heER1cmF0aW9uIgtjaGVja0NhbGxlciIPcmVmZXJyZXJBZGRyZXNzIglzaWduYXR1cmUiDSR0MDMxOTQxMzIwMDYiEWxvY2tBY3Rpb25zUmVzdWx0Ig9yZWZlcnJhbEFkZHJlc3MiBnJlZkludiIRdXBkYXRlUmVmQWN0aXZpdHkiDSR0MDMyNDY0MzI1MjkiDWRlbHRhRHVyYXRpb24iCnVzZXJBbW91bnQiDGxvY2tEdXJhdGlvbiIHbG9ja0VuZCIRcmVtYWluaW5nRHVyYXRpb24iDXVzZXJBbW91bnROZXciD2xvY2tEdXJhdGlvbk5ldyIMbG9ja1N0YXJ0TmV3IgtjdXJyVXNlckd3eCIHZ3d4RGlmZiIXdG90YWxDYWNoZWRHd3hDb3JyZWN0ZWQiDSR0MDM1NjE2MzU3MTgiEnVzZXJCb29zdEF2YWlsYWJsZSINJHQwMzU4NTAzNTk1MSIQbWF4RGVsdGFEdXJhdGlvbiIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXmIAQABYQICX18AAWIACAABYwCAwtcvAAFkBQFjAQFlAQFmCQC5CQIJAMwIAgIOYm9vc3RpbmcucmlkZToJAMwIAgUBZgUDbmlsAgEgAQFnAQFmCQACAQkBAWUBBQFmAQFoAgFpAWoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQFpBQFqCQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQFqAg8gaXMgbm90IGRlZmluZWQBAWsCAWkBagkBC3ZhbHVlT3JFbHNlAgkAmggCBQFpBQFqAAABAWwDAWkBagFtCQELdmFsdWVPckVsc2UCCQCaCAIFAWkFAWoFAW0BAW4CAWkBagkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAWkFAWoJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAWoCDyBpcyBub3QgZGVmaW5lZAEBbwEBcAMJAGYCAAAFAXAJAQEtAQUBcAUBcAEBcQEBcAQBcgUBcAMJAAECBQFyAglMaXN0W0FueV0EAXMFAXIFAXMJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BAXQBAXAEAXIFAXADCQABAgUBcgIDSW50BAF1BQFyBQF1CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQF2AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIGY29uZmlnCQDMCAICGHJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwUDbmlsBQFhAAF3CQERQGV4dHJOYXRpdmUoMTA2MikBCQEBaAIFBHRoaXMJAQF2AAABeAkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgILcHJvZ3JhbU5hbWUFA25pbAUBYQABeQIGd3hsb2NrAAF6CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAXgFAXkBAUEAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzAAFCAAEAAUMAAgABRAADAAFFAAQAAUYABQABRwAGAAFIAAcAAUkACAABSgAJAAFLAAoAAUwACwEBTQACESVzX19mYWN0b3J5Q29uZmlnAQFOAQFPCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAU8JAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWEBAVAAAhAlc19fbHBUb2tlbnNMaXN0AQFRAQFPCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAU8JAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWEBAVIBAVMJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUBUwUDbmlsBQFhAQFUAgFVAVYJAKwCAgkArAICCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUBVQICX18JAKQDAQUBVgEBVwAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQFoAgUEdGhpcwkBAUEAAQFYAAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIJAQFXAAkBAVAAAgAFAWEBAVkBAVoJALUJAgkBAWgCBQFaCQEBTQAFAWEBAmFhAQJhYgkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhYgUBQwECYWMBAmFiCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFiBQFGAQJhZAECYWIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWIFAUIBAmFlAQJhYgkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhYgUBSwECYWYAAhQlc19fbWFuYWdlclB1YmxpY0tleQECYWcAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAmFoAAIbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50AQJhaQACHiVzJXNfX3JhdGVQZXJCbG9ja01heF9fY3VycmVudAECYWoAAholcyVzX19lbWlzc2lvbl9fc3RhcnRCbG9jawECYWsAAhwlcyVzX19ib29zdGluZ1YyX19zdGFydEJsb2NrAQJhbAACGiVzJXNfX2Jvb3N0aW5nVjJfX2ludGVncmFsAQJhbQACGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgECYW4AAhglcyVzX19lbWlzc2lvbl9fZW5kQmxvY2sBAmFvAAIOJXNfX25leHRQZXJpb2QBAmFwAAIoJXMlc19fZ3d4UmV3YXJkRW1pc3Npb25QYXJ0X19zdGFydEhlaWdodAACYXEAAQACYXIAAgACYXMAAwACYXQABAACYXUABQECYXYAAgolc19fY29uZmlnAQJhdwAJALUJAgkBAWgCBQR0aGlzCQECYXYABQFhAAJheAkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCCQECYXcABQJhdQECYXkFAmF6AmFBAmFCAmFDAmF4CQC5CQIJAMwIAgIIJXMlZCVkJWQJAMwIAgUCYXoJAMwIAgUCYUEJAMwIAgUCYUIJAMwIAgUCYUMJAMwIAgUCYXgFA25pbAUBYQECYUQFAmF6AmFBAmFCAmFDAmF4CQECYXkFBQJhegkApAMBBQJhQQkApAMBBQJhQgkApAMBBQJhQwUCYXgBAmFFAAQBcgkAoggBCQECYWYAAwkAAQIFAXICBlN0cmluZwQCYUYFAXIJANkEAQUCYUYDCQABAgUBcgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJhRwAEAXIJAKIIAQkBAmFnAAMJAAECBQFyAgZTdHJpbmcEAmFGBQFyCQDZBAEFAmFGAwkAAQIFAXICBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECYUgBAmFJBAJhSgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAFyCQECYUUAAwkAAQIFAXICCkJ5dGVWZWN0b3IEAmFLBQFyAwkAAAIIBQJhSQ9jYWxsZXJQdWJsaWNLZXkFAmFLBgUCYUoDCQABAgUBcgIEVW5pdAMJAAACCAUCYUkGY2FsbGVyBQR0aGlzBgUCYUoJAAIBAgtNYXRjaCBlcnJvcgACYUwAAQACYU0AAgACYU4AAwACYU8ABAACYVAABQACYVEABgECYVIBAmFTCQC5CQIJAMwIAgIKJXMlc19fbG9jawkAzAgCBQJhUwUDbmlsBQFhAQJhVAECYVMJALUJAgkBAWgCBQR0aGlzCQECYVIBBQJhUwUBYQECYVUIAmFWAmFXAmFYAmFZAmFaAmJhAmJiAmJjCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCBQJhVgkAzAgCBQJhVwkAzAgCBQJhWAkAzAgCBQJhWQkAzAgCBQJhWgkAzAgCBQJiYQkAzAgCBQJiYgkAzAgCBQJiYwUDbmlsBQFhAQJiZAcCYVYCYVcCYVgCYVkCYVoCYmECYmMJAQJhVQgFAmFWCQCkAwEFAmFXCQCkAwEFAmFYCQCkAwEFAmFZCQCkAwEFAmFaCQCkAwEFAmJhCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQCkAwEFAmJjAQJiZQACDyVzX19uZXh0VXNlck51bQECYmYBAmFTCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX191c2VyMm51bQkAzAgCBQJhUwUDbmlsBQFhAQJiZwEBVgkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fbnVtMnVzZXIJAMwIAgUBVgUDbmlsBQFhAQJiaAECYVYJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFWCQDMCAICBmFtb3VudAUDbmlsBQFhAQJiaQECYVYJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFWCQDMCAICBXN0YXJ0BQNuaWwFAWEBAmJqAQJhVgkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYVYJAMwIAgIIZHVyYXRpb24FA25pbAUBYQECYmsBAmFWCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhVgkAzAgCAgFrBQNuaWwFAWEBAmJsAQJhVgkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYVYJAMwIAgIBYgUDbmlsBQFhAQJibQICYVYCYm4JALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCBQJhVgkAzAgCAgFrCQDMCAIFAmJuBQNuaWwFAWEBAmJvAgJhVgJibgkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIFAmFWCQDMCAICAWIJAMwIAgUCYm4FA25pbAUBYQECYnAAAh4lcyVzX19zdGF0c19fYWN0aXZlVG90YWxMb2NrZWQBAmJxAAIlJXMlc19fc3RhdHNfX2xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwECYnIAAhclcyVzX19zdGF0c19fbG9ja3NDb3VudAECYnMAAh0lcyVzX19zdGF0c19fYWN0aXZlVXNlcnNDb3VudAECYnQBAmFWCQC5CQIJAMwIAgIgJXMlZF9fdXNlckJvb3N0RW1pc3Npb25MYXN0SW50VjIJAMwIAgUCYVYFA25pbAUBYQECYnUCAmFWAmJ2CQC5CQIJAMwIAgIgJXMlZF9fdXNlckJvb3N0RW1pc3Npb25MYXN0SW50VjIJAMwIAgUCYVYJAMwIAgUCYnYFA25pbAUBYQECYncBAmFWCQC5CQIJAMwIAgIRJXMlZF9fbWF4Qm9vc3RJbnQJAMwIAgUCYVYFA25pbAUBYQECYngAAhglcyVzX19tYXhCb29zdEludF9fdG90YWwBAmJ5AQJhVgkAuQkCCQDMCAICJCVzJWRfX3VzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbAkAzAgCBQJhVgUDbmlsBQFhAQJiegECYVYJALkJAgkAzAgCAhYlcyVkX191c2VyQm9vc3RDbGFpbWVkCQDMCAIFAmFWBQNuaWwFAWEBAmJBAAIWJXMlc19fZ3d4Q2FjaGVkX190b3RhbAECYkIAAhwlc19fZ3d4Q2FjaGVkVG90YWxDb3JyZWN0aXZlAAJiQwkBAVcAAAJhYgkBAVkBBQJiQwACYkQJAQJhYwEFAmFiAAJiRQkBAmFkAQUCYWIAAmJGCQECYWUBBQJhYgACYkcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkAuQkCCQDMCAICAiVzCQDMCAICFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QFA25pbAUBYQkBAWUBAi5scF9zdGFraW5nX3Bvb2xzIGNvbnRyYWN0IGFkZHJlc3MgaXMgdW5kZWZpbmVkCQEBZQECKWludmFsaWQgbHBfc3Rha2luZ19wb29scyBjb250cmFjdCBhZGRyZXNzAAJiSAkAuQkCCQDMCAICAiVzCQDMCAICFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QFA25pbAUBYQACYkkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFAmJDBQJiSAACYkoKAAJiSwkA/AcEBQJiRAIVZ2V0Qm9vc3RDb2VmZlJFQURPTkxZBQNuaWwFA25pbAMJAAECBQJiSwIDSW50BQJiSwkAAgEJAKwCAgkAAwEFAmJLAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBAmJMAQJiTQQCYk4JALkJAgkAzAgCAgIlcwkAzAgCAg5jdXJyZW50RXBvY2hVaQUDbmlsBQFhBAJiTwkBEUBleHRyTmF0aXZlKDEwNTApAgUCYkkFAmJOBAJiUAkAuQkCCQDMCAICBCVzJXMJAMwIAgIpdG90YWxDYWNoZWRHd3hDb3JyZWN0aW9uX19hY3RpdmF0aW9uRXBvY2gFA25pbAUBYQQCYlEJAJoIAgUEdGhpcwUCYlAEAmJSCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiQQAAAAQCYlMDCQEJaXNEZWZpbmVkAQUCYlEJAGcCBQJiTwkBBXZhbHVlAQUCYlEHBAJiVAMDBQJiUwUCYk0HCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiQgAAAAAACQCWAwEJAMwIAgAACQDMCAIJAGQCBQJiUgUCYlQFA25pbAECYlUIAmJWAmJXAmFXAmJYAmFZAmJZAmJaAmFJBAJjYQkAuQkCCQDMCAICESVzJXMlcyVzX19oaXN0b3J5CQDMCAIFAmJWCQDMCAIFAmJXCQDMCAIJANgEAQgFAmFJDXRyYW5zYWN0aW9uSWQFA25pbAUBYQQCY2IJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQJhVwkAzAgCCQCkAwEFAmJYCQDMCAIJAKQDAQUCYVkJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJaBQNuaWwFAWEJAQtTdHJpbmdFbnRyeQIFAmNhBQJjYgECY2MEAmNkAmNlAmNmAmNnBAJjaAkBAmJxAAQCY2kJAQJicgAEAmNqCQECYnMABAJjawkBAmJwAAQCY2wJAQFrAgUEdGhpcwUCY2gEAmNtCQEBawIFBHRoaXMFAmNpBAJjbgkBAWsCBQR0aGlzBQJjagQCY28JAQFrAgUEdGhpcwUCY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNoCQBkAgUCY2wFAmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjaQkAZAIFAmNtBQJjZgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY2oJAGQCBQJjbgUCY2cJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNrCQBkAgUCY28FAmNkBQNuaWwBAmNwAwJjcQJjcgJjcwQCY3QA6AcJAGkCCQBkAgkAaAIFAmNxBQJjcwUCY3IFAmN0AQJjdQgCYVMCYVYCYVcCYVgCYVkCYlkCYloCYm4EAmN2CQECYmgBBQJhVgQCY3cJAQJiaQEFAmFWBAJjeAkBAmJqAQUCYVYEAmN5CQECYmsBBQJhVgQCY3oJAQJibAEFAmFWBAJjQQkBAmJtAgUCYVYFAmJuBAJjQgkBAmJvAgUCYVYFAmJuBAJiYwkBAmNwAwUCYlkFAmJaBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAmN2BQJhVwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3cFAmFYCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjeAUCYVkJAMwIAgkBDEludGVnZXJFbnRyeQIFAmN5BQJiWQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3oFAmJaCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjQQUCYlkJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNCBQJiWgkAzAgCCQELU3RyaW5nRW50cnkCCQECYVIBBQJhUwkBAmJkBwUCYVYFAmFXBQJhWAUCYVkFAmJZBQJiWgUCYmMFA25pbAECY0MCAmFJAmNEAwkAZgIJAJADAQgFAmFJCHBheW1lbnRzAAEJAAIBAhtvbmx5IG9uZSBwYXltZW50IGlzIGFsbG93ZWQDCQAAAgkAkAMBCAUCYUkIcGF5bWVudHMAAAAABAJjRQkAkQMCCAUCYUkIcGF5bWVudHMAAAMJAQIhPQIJAQV2YWx1ZQEIBQJjRQdhc3NldElkBQJjRAkAAgECG2ludmFsaWQgYXNzZXQgaWQgaW4gcGF5bWVudAgFAmNFBmFtb3VudAECY0YCAmFTAmNHBAJjSAIFZW1wdHkEAmNJCQECYmYBBQJhUwQCYVYJAQt2YWx1ZU9yRWxzZQIJAKIIAQUCY0kFAmNIBAJiWQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYmsBBQJhVgAABAJiWgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYmwBBQJhVgAABAJjSgkBAmNwAwUCYlkFAmJaBQJjRwQCYmMDCQBmAgAABQJjSgAABQJjSgUCYmMBAmNLAQJhUwkBAmNGAgUCYVMFBmhlaWdodAECY0wABAJiTgkAuQkCCQDMCAICAiVzCQDMCAICDmN1cnJlbnRFcG9jaFVpBQNuaWwFAWEEAmNNBAJiTwkBBXZhbHVlAQkAmggCBQJiSQUCYk4EAmNOCQBlAgUCYk8AAQMJAGYCAAAFAmNOCQEBZwECDWludmFsaWQgZXBvY2gJAJQKAgUCYk8FAmNOBAJiTwgFAmNNAl8xBAJjTggFAmNNAl8yCgECY08BAmNQCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtzdGFydEhlaWdodAkAzAgCCQCkAwEFAmNQBQNuaWwFAWEEAmNRCQEFdmFsdWUBCQCaCAIFAmJJCQECY08BBQJiTwkAlAoCBQJjTgUCY1EBAmNSAQJjUwQCY1QABAQCY1UABQQCY1YKAAJiSwkA/AcEBQJiQwIYZ2V0UG9vbENvbmZpZ0J5THBBc3NldElkCQDMCAIFAmNTBQNuaWwFA25pbAMJAAECBQJiSwIJTGlzdFtBbnldBQJiSwkAAgEJAKwCAgkAAwEFAmJLAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0EAmNXCgACYksJAJEDAgUCY1YFAmNUAwkAAQIFAmJLAgZTdHJpbmcFAmJLCQACAQkArAICCQADAQUCYksCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCY1gKAAJiSwkAkQMCBQJjVgUCY1UDCQABAgUCYksCBlN0cmluZwUCYksJAAIBCQCsAgIJAAMBBQJiSwIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQCUCgIFAmNXBQJjWAECY1kEAmNXAmNYAWkCY1AJALkJAgkAzAgCAgolcyVzJXMlcyVkCQDMCAICBHZvdGUJAMwIAgUCY1cJAMwIAgUCY1gJAMwIAgkApQgBBQFpCQDMCAIJAKQDAQUCY1AFA25pbAUBYQECY1oCAmNTAmNQCQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICEnZvdGluZ1Jlc3VsdFN0YWtlZAkAzAgCBQJjUwkAzAgCCQCkAwEFAmNQBQNuaWwFAWEBAmRhAgJjUwJjUAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAhp2b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbAkAzAgCBQJjUwkAzAgCCQCkAwEFAmNQBQNuaWwFAWEBAmRiAgJjUwJjUAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAip2b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbExhc3RVcGRhdGVIZWlnaHQJAMwIAgUCY1MJAMwIAgkApAMBBQJjUAUDbmlsBQFhAQJkYwMCY1MBaQJjUAkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICHnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsTGFzdAkAzAgCBQJjUwkAzAgCCQClCAEFAWkJAMwIAgkApAMBBQJjUAUDbmlsBQFhAQJkZAMCY1MBaQJjUAkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICEnZvdGVTdGFrZWRJbnRlZ3JhbAkAzAgCBQJjUwkAzAgCCQClCAEFAWkJAMwIAgkApAMBBQJjUAUDbmlsBQFhAQJkZQMCY1MBaQJjUAkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICInZvdGVTdGFrZWRJbnRlZ3JhbExhc3RVcGRhdGVIZWlnaHQJAMwIAgUCY1MJAMwIAgkApQgBBQFpCQDMCAIJAKQDAQUCY1AFA25pbAUBYQECZGYDAmNTAWkCY1AJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAhZ2b3RlU3Rha2VkSW50ZWdyYWxMYXN0CQDMCAIFAmNTCQDMCAIJAKUIAQUBaQkAzAgCCQCkAwEFAmNQBQNuaWwFAWEBAmRnAgJkaAJjUwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgZzdGFrZWQJAMwIAgUCZGgJAMwIAgUCY1MFA25pbAUBYQECZGkCAmNTAmRoBAJhUwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZGgEAmRqCQECY0wABAJjTggFAmRqAl8xBAJjUQgFAmRqAl8yBAJkawkBAmNSAQUCY1MEAmNXCAUCZGsCXzEEAmNYCAUCZGsCXzIEAmRsCQECY1kEBQJjVwUCY1gFAmFTBQJjTgQCZG0JAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYkkFAmRsAAAFAmRtAQJkbgICY1MCZGgEAmRvCQELdmFsdWVPckVsc2UCCQCaCAIFAmJFCQECZGcCBQJkaAUCY1MAAAQCZG0JAQJkaQIFAmNTBQJkaAMJAAACBQJkbwAAAAAFAmRtAQJkcAECY1MEAmRxCQECY0wABAJjTggFAmRxAl8xBAJjUQgFAmRxAl8yBAJkcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQJiSQkBAmNaAgUCY1MFAmNOAAAEAmRzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJjWgIFAmNTBQJjTgUCZHIFAmRzAQJkdAICY1MCZHUEAmR2CQECY0wABAJjTggFAmR2Al8xBAJjUQgFAmR2Al8yBAJkcwkBAmRwAQUCY1MEAmR3CQBkAgUCZHMFAmR1BAJkeAkBAmRhAgUCY1MFAmNOBAJkeQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJkeAAABAJkegkBAmRiAgUCY1MFAmNOBAJkQQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJkegUCY1EEAmRCCQBlAgUGaGVpZ2h0BQJkQQQCZEMJAGQCCQBoAgUCZEIFAmRzBQJkeQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECY1oCBQJjUwUCY04FAmR3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkegUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkeAUCZEMFA25pbAUCZEMBAmREAwJjUwJkaAJkRQQCZEYJAQJjTAAEAmNOCAUCZEYCXzEEAmNRCAUCZEYCXzIEAmFTCQERQGV4dHJOYXRpdmUoMTA2MikBBQJkaAQCY1QABAQCY1UABQQCY1YKAAJiSwkA/AcEBQJiQwIYZ2V0UG9vbENvbmZpZ0J5THBBc3NldElkCQDMCAIFAmNTBQNuaWwFA25pbAMJAAECBQJiSwIJTGlzdFtBbnldBQJiSwkAAgEJAKwCAgkAAwEFAmJLAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0EAmNXCgACYksJAJEDAgUCY1YFAmNUAwkAAQIFAmJLAgZTdHJpbmcFAmJLCQACAQkArAICCQADAQUCYksCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCY1gKAAJiSwkAkQMCBQJjVgUCY1UDCQABAgUCYksCBlN0cmluZwUCYksJAAIBCQCsAgIJAAMBBQJiSwIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAJkbQkBC3ZhbHVlT3JFbHNlAgkAmggCBQJiSQkBAmNZBAUCY1cFAmNYBQJhUwUCY04AAAQCZEcDCQAAAgUCZG0AAAUDbmlsBAJkdQMFAmRFBQJkbQkBAS0BBQJkbQQCZEgJAQJkdAIFAmNTBQJkdQQCZEkIBQJkSAJfMQQCZEMIBQJkSAJfMgQCZEoDBQJkRQAABQJkbQQCZEsJAQJkZAMFAmNTBQJhUwUCY04EAmRMCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmRLAAAEAmRNCQECZGUDBQJjUwUCYVMFAmNOBAJkTgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJkTQUCY1EEAmRPCQBlAgUGaGVpZ2h0BQJkTgQCZFAJAGQCCQBoAgUCZE8FAmRKBQJkTAQCZFEJAMwIAgkBDEludGVnZXJFbnRyeQIFAmRNBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAmRLBQJkUAUDbmlsCQDOCAIFAmRJBQJkUQUCZEcBAmRSAgJjUwJkaAQCZFMJAQJjTAAEAmNOCAUCZFMCXzEEAmNRCAUCZFMCXzIEAmFTCQERQGV4dHJOYXRpdmUoMTA2MikBBQJkaAQCZEoJAQJkbgIFAmNTBQJkaAQCZHMJAQJkcAEFAmNTBAJkTAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECZGQDBQJjUwUCYVMFAmNOAAAEAmR5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJkYQIFAmNTBQJjTgAABAJkTgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECZGUDBQJjUwUCYVMFAmNOBQJjUQQCZEEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmRiAgUCY1MFAmNOBQJjUQQCZEsJAQJkZgMFAmNTBQJhUwUCY04EAmRUCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmRLAAAEAmR4CQECZGMDBQJjUwUCYVMFAmNOBAJkVQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJkeAAABAJkTwkAZQIFBmhlaWdodAUCZE4EAmRCCQBlAgUGaGVpZ2h0BQJkQQQCZFAJAGQCCQBoAgUCZE8FAmRKBQJkTAQCZEMJAGQCCQBoAgUCZEIFAmRzBQJkeQQCZFYJAGUCBQJkUAUCZFQEAmRXCQBlAgUCZEMFAmRVCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFAmRLBQJkUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZHgFAmRDBQNuaWwFAmRWBQJkVwECZFgABAJkWQkBAW4CBQJiRAkBAmFoAAQCZFoJAJoIAgUCYkQJAQJhawAEAmVhCQCaCAIFBHRoaXMJAQJhbAAEAmViCQEBbgIFAmJECQECYW4ABAJjcwMJAGYCBQZoZWlnaHQFAmViBQJlYgUGaGVpZ2h0BAJlYwQBcgUCZFoDCQABAgUBcgIDSW50BAJlZAUBcgkAlgMBCQDMCAIJAGUCBQJjcwUCZWQJAMwIAgAABQNuaWwDCQABAgUBcgIEVW5pdAAACQACAQILTWF0Y2ggZXJyb3IEAmVlCQBpAgkAaAIFAmRZCQBlAgUCYkoAAQUCYkoEAmVmCQELdmFsdWVPckVsc2UCBQJlYQAABAJlZwkAZAIJAGgCBQJlZQUCZWMFAmVmCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbAAFAmVnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWsABQZoZWlnaHQFA25pbAUCZWcBAmVoAwJjUwJkaAJlaQQCZWoJAJ0IAgUEdGhpcwkBAmFSAQUCZGgDCQAAAgUCZWoFBHVuaXQJAJUKAwAABQNuaWwCFXVzZXJSZWNvcmQ6OmlzOjplbXB0eQQCZWsJALUJAgkBBXZhbHVlAQUCZWoFAWEEAmVsCQCRAwIFAmVrBQJhTAQCZW0CBWVtcHR5BAJlbgMJAQIhPQIFAmNTBQJlbQQCZW8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJiQwkBAU4BBQJjUwkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFAmNTCQERQGV4dHJOYXRpdmUoMTA1MCkCBQJiQwkBAVIBBQJlbwMFAmVpAAAJAAIBCQCsAgICKG5vdCByZWFkb25seSBtb2RlOiB1bnN1cHBvcnRlZCBscCBhc3NldCAFAmNTBAJlcAkBAmJ1AgUCZWwFAmNTBAJlcQkBAmJ0AQUCZWwEAmVyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmVwCQEBawIFBHRoaXMFAmVxBAJlZwgJAQJkWAACXzIEAmVzCQBlAgUCZWcFAmVyAwkAZgIAAAUCZXMJAAIBAhJ3cm9uZyBjYWxjdWxhdGlvbnMEAmV0CQECZFICBQJjUwUCZGgEAmV1CAUCZXQCXzEEAmV2CAUCZXQCXzIEAmV3CAUCZXQCXzMEAmV4CQBrAwUCZXMFAmVuBQFkBAJleQMJAAACBQJldwAAAAAJAGsDBQJleAUCZXYFAmV3BAJlegkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJlcAUCZWcFA25pbAUCZXUEAmVBCQC5CQIJAMwIAgkApAMBBQJlcgkAzAgCCQCkAwEFAmVzCQDMCAIJAKQDAQUCZW4JAMwIAgkApAMBBQJldgkAzAgCCQCkAwEFAmV3BQNuaWwCAToJAJUKAwUCZXkFAmV6BQJlQQECZUICAmFJAmFZBAJlQwkBAmF3AAQCZUQJAJEDAgUCZUMFAmFxBAJhegkA2QQBBQJlRAQCYUEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlQwUCYXIEAmFCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZUMFAmFzBAJhQwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVDBQJhdAMJAQIhPQIJAJADAQgFAmFJCHBheW1lbnRzAAEJAAIBAjRpbnZhbGlkIHBheW1lbnQgLSBleGFjdCBvbmUgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBAJjRQkAkQMCCAUCYUkIcGF5bWVudHMAAAQCZUUIBQJjRQZhbW91bnQDCQECIT0CBQJhegkBBXZhbHVlAQgFAmNFB2Fzc2V0SWQJAAIBCQCsAgIJAKwCAgIeaW52YWxpZCBhc3NldCBpcyBpbiBwYXltZW50IC0gBQJlRAIMIGlzIGV4cGVjdGVkBAJlRgkBAmJlAAQCZGgJAKUIAQgFAmFJBmNhbGxlcgQCZUcJAQlpc0RlZmluZWQBCQCiCAEJAQJiZgEFAmRoBAJlbAMFAmVHCQEFdmFsdWUBCQCiCAEJAQJiZgEFAmRoCQCkAwEJAQFuAgUEdGhpcwUCZUYEAmFWCQENcGFyc2VJbnRWYWx1ZQEFAmVsBAJiWAUGaGVpZ2h0BAJjdwkBAmJpAQUCZWwEAmN4CQECYmoBBQJlbAQCY3YJAQJiaAEFAmVsAwMJAGYCBQJhQQUCZUUJAQIhPQIIBQJhSQZjYWxsZXIFAmJHBwkAAgEJAKwCAgIiYW1vdW50IGlzIGxlc3MgdGhlbiBtaW5Mb2NrQW1vdW50PQkApAMBBQJhQQMJAGYCBQJhQgUCYVkJAAIBCQCsAgICLXBhc3NlZCBkdXJhdGlvbiBpcyBsZXNzIHRoZW4gbWluTG9ja0R1cmF0aW9uPQkApAMBBQJhQgMJAGYCBQJhWQUCYUMJAAIBCQCsAgICMHBhc3NlZCBkdXJhdGlvbiBpcyBncmVhdGVyIHRoZW4gbWF4TG9ja0R1cmF0aW9uPQkApAMBBQJhQwMDBQJlRwkAZwIJAGQCCQEBbgIFBHRoaXMFAmN3CQEBbgIFBHRoaXMFAmN4BQJiWAcJAAIBAjZ0aGVyZSBpcyBhbiBhY3RpdmUgbG9jayAtIGNvbnNpZGVyIHRvIHVzZSBpbmNyZWFzZUxvY2sDCQBmAgkBAWsCBQR0aGlzBQJjdgAACQACAQkArAICAjR0aGVyZSBhcmUgbG9ja2VkIFdYcyAtIGNvbnNpZGVyIHRvIHVzZSBpbmNyZWFzZUxvY2sgBQJjdgQCZUgJAGsDBQJhWQUBYwUCYUMEAmVJCQBrAwUCZUUFAmVIBQFjBAJlSgkBAXEBCQD8BwQFAmF4AhVjYWxjR3d4UGFyYW1zUkVBRE9OTFkJAMwIAgUCZUkJAMwIAgUCYlgJAMwIAgUCYVkFA25pbAUDbmlsBAJiWQkBAXQBCQCRAwIFAmVKAAAEAmJaCQEBdAEJAJEDAgUCZUoAAQQCYm4JAKQDAQkBAXQBCQCRAwIFAmVKAAIEAmJSCQECYkwBBwQCZXEJAQJidAEFAmVsBAJlZwgJAQJkWAACXzIEAmVLAwUCZUcFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZUYJAGQCBQJhVgABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZgEFAmRoBQJlbAkAzAgCCQELU3RyaW5nRW50cnkCCQECYmcBBQJlbAUCZGgFA25pbAkAlAoCCQDOCAIJAM0IAgkAzggCCQDOCAIFAmVLCQECY3UIBQJkaAUCZWwFAmVFBQJiWAUCYVkFAmJZBQJiWgUCYm4JAQJjYwQFAmVFBQJhWQABAwUCZUcAAAABCQECYlUIAgRsb2NrBQJkaAUCZUUFAmJYBQJhWQUCYlkFAmJaBQJhSQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZXEFAmVnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYkEACQBkAgUCYlIFAmVJBQNuaWwFAmVJEQJhSQELY29uc3RydWN0b3IGAmVMAmVNAmFBAmVOAmVPAmF4BAJlUAkBAmFIAQUCYUkDCQAAAgUCZVAFAmVQCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiZQAAAAkAzAgCCQELU3RyaW5nRW50cnkCCQECYXYACQECYUQFBQJlTQUCYUEFAmVOBQJlTwUCYXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAUEABQJlTAUDbmlsCQECY2MEAAAAAAAAAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUkBB2xvY2tSZWYDAmFZAmVRAmVSBAJlUwkBAmVCAgUCYUkFAmFZBAJlVAgFAmVTAl8xBAJlSQgFAmVTAl8yBAJlVQkApQgBCAUCYUkGY2FsbGVyBAJlVgMDCQAAAgUCZVECAAYJAAACBQJlUgEABQR1bml0CQD8BwQFAXcCCmNyZWF0ZVBhaXIJAMwIAgUBegkAzAgCBQJlUQkAzAgCBQJlVQkAzAgCBQJlUgUDbmlsBQNuaWwDCQAAAgUCZVYFAmVWBAJlVwkA/AcEBQJheAIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhSQZjYWxsZXIJAMwIAgUCZUkFA25pbAUDbmlsAwkAAAIFAmVXBQJlVwkAlAoCBQJlVAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhSQEEbG9jawECYVkEAmVYCQECZUICBQJhSQUCYVkEAmVUCAUCZVgCXzEEAmVJCAUCZVgCXzIEAmVXCQD8BwQFAmF4AhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIJAKUIAQgFAmFJBmNhbGxlcgkAzAgCBQJlSQUDbmlsBQNuaWwDCQAAAgUCZVcFAmVXCQCUCgIFAmVUBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFJAQxpbmNyZWFzZUxvY2sBAmVZBAJlQwkBAmF3AAQCZUQJAJEDAgUCZUMFAmFxBAJhegkA2QQBBQJlRAQCYUIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlQwUCYXMEAmFDCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZUMFAmF0BAJlRQkBAmNDAgUCYUkFAmF6BAJkaAkApQgBCAUCYUkGY2FsbGVyBAJlawkBAmFUAQUCZGgEAmVsCQCRAwIFAmVrBQJhTAQCZVoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlawUCYU0EAmJYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZWsFAmFOBAJmYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVrBQJhTwQCZmIJAGQCBQJiWAUCZmEEAmZjCQCWAwEJAMwIAgkAZQIFAmZiBQZoZWlnaHQJAMwIAgAABQNuaWwEAmZkCQBkAgUCZVoFAmVFBAJmZQkAZAIFAmZjBQJlWQMJAGYCAAAFAmVZCQACAQIaZHVyYXRpb24gaXMgbGVzcyB0aGVuIHplcm8DCQBmAgUCYUIFAmZlCQACAQkArAICAi1sb2NrRHVyYXRpb25OZXcgaXMgbGVzcyB0aGVuIG1pbkxvY2tEdXJhdGlvbj0JAKQDAQUCYUIDCQBmAgUCZmUFAmFDCQACAQkArAICAkRkZWx0YUR1cmF0aW9uICsgZXhpc3RlZExvY2tEdXJhdGlvbiBpcyBncmVhdGVyIHRoZW4gbWF4TG9ja0R1cmF0aW9uPQkApAMBBQJhQwQCZUgJAGsDBQJmZQUBYwUCYUMEAmVJCQBrAwUCZmQFAmVIBQFjBAJlVwkA/AcEBQJheAIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhSQZjYWxsZXIJAMwIAgUCZUkFA25pbAUDbmlsAwkAAAIFAmVXBQJlVwQCZmYFBmhlaWdodAQCZUoJAQFxAQkA/AcEBQJheAIVY2FsY0d3eFBhcmFtc1JFQURPTkxZCQDMCAIFAmVJCQDMCAIFAmZmCQDMCAIFAmZlBQNuaWwFA25pbAQCYlkJAQF0AQkAkQMCBQJlSgAABAJiWgkBAXQBCQCRAwIFAmVKAAEEAmJuCQCkAwEJAQF0AQkAkQMCBQJlSgACBAJmZwkBAmNLAQUCZGgEAmZoCQBlAgUCZUkFAmZnAwkAZgIAAAUCZmgJAAIBCQCsAgICGGd3eERpZmYgaXMgbGVzcyB0aGVuIDA6IAkApAMBBQJmaAQCYlIJAQJiTAEHBAJmaQkBAmJMAQYJAM4IAgkAzQgCCQDOCAIJAQJjdQgFAmRoBQJlbAUCZmQFAmZmBQJmZQUCYlkFAmJaBQJibgkBAmNjBAUCZUUFAmVZAAAAAAkBAmJVCAIEbG9jawUCZGgFAmVFBQJiWAUCZmUFAmJZBQJiWgUCYUkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiQQAJAGQCBQJiUgUCZmgFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhSQEMY2xhaW1XeEJvb3N0AgJjUwJkaAMJAQIhPQIFAmJFCAUCYUkGY2FsbGVyCQACAQIScGVybWlzc2lvbnMgZGVuaWVkBAJmagkBAmVoAwUCY1MFAmRoBwQCZmsIBQJmagJfMQQCZXoIBQJmagJfMgQCZUEIBQJmagJfMwkAlAoCBQJlegkAzAgCBQJmawUDbmlsAmFJARRjbGFpbVd4Qm9vc3RSRUFET05MWQICY1MCZGgEAmZsCQECZWgDBQJjUwUCZGgGBAJmawgFAmZsAl8xBAJleggFAmZsAl8yBAJlQQgFAmZsAl8zCQCUCgIFA25pbAkAzAgCBQJmawkAzAgCBQJlQQUDbmlsAmFJAQZ1bmxvY2sBAmFTBAJlawkBAmFUAQUCYVMEAmVsCQCRAwIFAmVrBQJhTAQCZVoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlawUCYU0EAmJYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZWsFAmFOBAJmYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVrBQJhTwQCZmIJAGQCBQJiWAUCZmEEAmVDCQECYXcABAJhegkA2QQBCQCRAwIFAmVDBQJhcQMJAGcCBQJmYgUGaGVpZ2h0CQACAQkArAICCQCsAgICBXdhaXQgCQCkAwEFAmZiAgogdG8gdW5sb2NrAwkAZwIAAAUCZVoJAAIBAhFub3RoaW5nIHRvIHVubG9jawQCYm4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYXgJAQJhbwAAAAkAzQgCCQDNCAIJAM4IAgkBAmN1CAUCYVMFAmVsAAAFAmJYBQJmYQAAAAAJAKQDAQUCYm4JAQJjYwQJAQEtAQUCZVoAAAAAAP///////////wEJAQJiVQgCBnVubG9jawUCYVMFAmVaBQJiWAUCZmEAAAAABQJhSQkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYVMFAmVaBQJhegJhSQETZ3d4VXNlckluZm9SRUFET05MWQECYVMEAmJjCQECY0sBBQJhUwkAlAoCBQNuaWwJAMwIAgUCYmMFA25pbAJhSQEXdXNlck1heER1cmF0aW9uUkVBRE9OTFkBAmRoBAJlQwkBAmF3AAQCYUMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlQwUCYXQEAmVqCQCdCAIFBHRoaXMJAQJhUgEFAmRoAwkAAAIFAmVqBQR1bml0CQCUCgIFA25pbAkAlAoCAgRsb2NrBQJhQwQCZWsJALUJAgkBBXZhbHVlAQUCZWoFAWEEAmJYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZWsFAmFOBAJmYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVrBQJhTwQCZmIJAGQCBQJiWAUCZmEEAmZjCQCWAwEJAMwIAgkAZQIFAmZiBQZoZWlnaHQJAMwIAgAABQNuaWwEAmZtCQBlAgUCYUMFAmZjCQCUCgIFA25pbAkAlAoCAgxpbmNyZWFzZUxvY2sFAmZtAmFJASBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQICYVMCY0cEAmJjCQECY0YCBQJhUwUCY0cJAJQKAgUDbmlsBQJiYwJhSQEZZ2V0VG90YWxDYWNoZWRHd3hSRUFET05MWQAJAJQKAgUDbmlsCQECYkwBBgJhSQEVb25Cb29zdEVtaXNzaW9uVXBkYXRlAAQCZVADCQAAAggFAmFJBmNhbGxlcgUCYkQGCQECYUgBBQJhSQMJAAACBQJlUAUCZVAJAQJkWAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUkBEm9uU3Rha2VkVm90ZVVwZGF0ZQMCY1MCZGgCZEUEAmVQAwkAAAIIBQJhSQZjYWxsZXIFAmJFBgkBAmFIAQUCYUkDCQAAAgUCZVAFAmVQBAJkRwkBAmREAwUCY1MFAmRoBQJkRQkAlAoCBQJkRwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhSQEdZ2V0Vm90aW5nUmVzdWx0U3Rha2VkUkVBRE9OTFkBAmNTCQCUCgIFA25pbAkBAmRwAQUCY1MCYUkBHGdldFVzZXJWb3RlRmluYWxpemVkUkVBRE9OTFkCAmNTAmRoCQCUCgIFA25pbAkBAmRpAgUCY1MFAmRoAmFJAQpzZXRNYW5hZ2VyAQJmbgQCZVAJAQJhSAEFAmFJAwkAAAIFAmVQBQJlUAQCZm8JANkEAQUCZm4DCQAAAgUCZm8FAmZvCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZwAFAmZuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUkBDmNvbmZpcm1NYW5hZ2VyAAQCZnAJAQJhRwAEAmZxAwkBCWlzRGVmaW5lZAEFAmZwBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmcQUCZnEEAmZyAwkAAAIIBQJhSQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmZwBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmcgUCZnIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAkA2AQBCQEFdmFsdWUBBQJmcAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWcABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZzAQJmdAAEAmZ1BAFyCQECYUUAAwkAAQIFAXICCkJ5dGVWZWN0b3IEAmFLBQFyBQJhSwMJAAECBQFyAgRVbml0CAUCZnMPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmZzCWJvZHlCeXRlcwkAkQMCCAUCZnMGcHJvb2ZzAAAFAmZ1Oyp1Cg==", "height": 2483778, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4Vnqz6fqMhAWfNBiEDS2s7rktQBgtxMuB14Yhmy3Qwvy Next: AGsP8Ym1mk848FFLDZKoFojG7dBg2ztABQjkqkxEP2uM Diff:
OldNewDifferences
330330
331331 let bF = ae(ab)
332332
333-let bG = makeString(["%s", "votingEmissionContract"], a)
333+let bG = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), e("lp_staking_pools contract address is undefined"))), e("invalid lp_staking_pools contract address"))
334334
335-let bH = addressFromStringValue(getStringValue(bC, bG))
335+let bH = makeString(["%s", "votingEmissionContract"], a)
336336
337-let bI = {
338- let bJ = invoke(bD, "getBoostCoeffREADONLY", nil, nil)
339- if ($isInstanceOf(bJ, "Int"))
340- then bJ
341- else throw(($getType(bJ) + " couldn't be cast to Int"))
337+let bI = addressFromStringValue(getStringValue(bC, bH))
338+
339+let bJ = {
340+ let bK = invoke(bD, "getBoostCoeffREADONLY", nil, nil)
341+ if ($isInstanceOf(bK, "Int"))
342+ then bK
343+ else throw(($getType(bK) + " couldn't be cast to Int"))
342344 }
343345
344-func bK (bL) = {
345- let bM = makeString(["%s", "currentEpochUi"], a)
346- let bN = getIntegerValue(bH, bM)
347- let bO = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
348- let bP = getInteger(this, bO)
349- let bQ = valueOrElse(getInteger(this, bA()), 0)
350- let bR = if (isDefined(bP))
351- then (bN >= value(bP))
346+func bL (bM) = {
347+ let bN = makeString(["%s", "currentEpochUi"], a)
348+ let bO = getIntegerValue(bI, bN)
349+ let bP = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
350+ let bQ = getInteger(this, bP)
351+ let bR = valueOrElse(getInteger(this, bA()), 0)
352+ let bS = if (isDefined(bQ))
353+ then (bO >= value(bQ))
352354 else false
353- let bS = if (if (bR)
354- then bL
355+ let bT = if (if (bS)
356+ then bM
355357 else false)
356358 then valueOrElse(getInteger(this, bB()), 0)
357359 else 0
358- max([0, (bQ + bS)])
360+ max([0, (bR + bT)])
359361 }
360362
361363
362-func bT (bU,bV,aW,bW,aY,bX,bY,aI) = {
363- let bZ = makeString(["%s%s%s%s__history", bU, bV, toBase58String(aI.transactionId)], a)
364- let ca = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aW), toString(bW), toString(aY), toString(bX), toString(bY)], a)
365- StringEntry(bZ, ca)
364+func bU (bV,bW,aW,bX,aY,bY,bZ,aI) = {
365+ let ca = makeString(["%s%s%s%s__history", bV, bW, toBase58String(aI.transactionId)], a)
366+ let cb = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aW), toString(bX), toString(aY), toString(bY), toString(bZ)], a)
367+ StringEntry(ca, cb)
366368 }
367369
368370
369-func cb (cc,cd,ce,cf) = {
370- let cg = bq()
371- let ch = br()
372- let ci = bs()
373- let cj = bp()
374- let ck = k(this, cg)
371+func cc (cd,ce,cf,cg) = {
372+ let ch = bq()
373+ let ci = br()
374+ let cj = bs()
375+ let ck = bp()
375376 let cl = k(this, ch)
376377 let cm = k(this, ci)
377378 let cn = k(this, cj)
378-[IntegerEntry(cg, (ck + cd)), IntegerEntry(ch, (cl + ce)), IntegerEntry(ci, (cm + cf)), IntegerEntry(cj, (cn + cc))]
379+ let co = k(this, ck)
380+[IntegerEntry(ch, (cl + ce)), IntegerEntry(ci, (cm + cf)), IntegerEntry(cj, (cn + cg)), IntegerEntry(ck, (co + cd))]
379381 }
380382
381383
382-func co (cp,cq,cr) = {
383- let cs = 1000
384- (((cp * cr) + cq) / cs)
384+func cp (cq,cr,cs) = {
385+ let ct = 1000
386+ (((cq * cs) + cr) / ct)
385387 }
386388
387389
388-func ct (aS,aV,aW,aX,aY,bX,bY,bn) = {
389- let cu = bh(aV)
390- let cv = bi(aV)
391- let cw = bj(aV)
392- let cx = bk(aV)
393- let cy = bl(aV)
394- let cz = bm(aV, bn)
395- let cA = bo(aV, bn)
396- let bc = co(bX, bY, height)
397-[IntegerEntry(cu, aW), IntegerEntry(cv, aX), IntegerEntry(cw, aY), IntegerEntry(cx, bX), IntegerEntry(cy, bY), IntegerEntry(cz, bX), IntegerEntry(cA, bY), StringEntry(aR(aS), bd(aV, aW, aX, aY, bX, bY, bc))]
390+func cu (aS,aV,aW,aX,aY,bY,bZ,bn) = {
391+ let cv = bh(aV)
392+ let cw = bi(aV)
393+ let cx = bj(aV)
394+ let cy = bk(aV)
395+ let cz = bl(aV)
396+ let cA = bm(aV, bn)
397+ let cB = bo(aV, bn)
398+ let bc = cp(bY, bZ, height)
399+[IntegerEntry(cv, aW), IntegerEntry(cw, aX), IntegerEntry(cx, aY), IntegerEntry(cy, bY), IntegerEntry(cz, bZ), IntegerEntry(cA, bY), IntegerEntry(cB, bZ), StringEntry(aR(aS), bd(aV, aW, aX, aY, bY, bZ, bc))]
398400 }
399401
400402
401-func cB (aI,cC) = if ((size(aI.payments) > 1))
403+func cC (aI,cD) = if ((size(aI.payments) > 1))
402404 then throw("only one payment is allowed")
403405 else if ((size(aI.payments) == 0))
404406 then 0
405407 else {
406- let cD = aI.payments[0]
407- if ((value(cD.assetId) != cC))
408+ let cE = aI.payments[0]
409+ if ((value(cE.assetId) != cD))
408410 then throw("invalid asset id in payment")
409- else cD.amount
411+ else cE.amount
410412 }
411413
412414
413-func cE (aS,cF) = {
414- let cG = "empty"
415- let cH = bf(aS)
416- let aV = valueOrElse(getString(cH), cG)
417- let bX = valueOrElse(getInteger(bk(aV)), 0)
418- let bY = valueOrElse(getInteger(bl(aV)), 0)
419- let cI = co(bX, bY, cF)
420- let bc = if ((0 > cI))
415+func cF (aS,cG) = {
416+ let cH = "empty"
417+ let cI = bf(aS)
418+ let aV = valueOrElse(getString(cI), cH)
419+ let bY = valueOrElse(getInteger(bk(aV)), 0)
420+ let bZ = valueOrElse(getInteger(bl(aV)), 0)
421+ let cJ = cp(bY, bZ, cG)
422+ let bc = if ((0 > cJ))
421423 then 0
422- else cI
424+ else cJ
423425 bc
424426 }
425427
426428
427-func cJ (aS) = cE(aS, height)
429+func cK (aS) = cF(aS, height)
428430
429431
430-func cK () = {
431- let bM = makeString(["%s", "currentEpochUi"], a)
432- let cL = {
433- let bN = value(getInteger(bH, bM))
434- let cM = (bN - 1)
435- if ((0 > cM))
432+func cL () = {
433+ let bN = makeString(["%s", "currentEpochUi"], a)
434+ let cM = {
435+ let bO = value(getInteger(bI, bN))
436+ let cN = (bO - 1)
437+ if ((0 > cN))
436438 then g("invalid epoch")
437- else $Tuple2(bN, cM)
439+ else $Tuple2(bO, cN)
438440 }
439- let bN = cL._1
440- let cM = cL._2
441- func cN (cO) = makeString(["%s%d", "startHeight", toString(cO)], a)
441+ let bO = cM._1
442+ let cN = cM._2
443+ func cO (cP) = makeString(["%s%d", "startHeight", toString(cP)], a)
442444
443- let cP = value(getInteger(bH, cN(bN)))
444- $Tuple2(cM, cP)
445+ let cQ = value(getInteger(bI, cO(bO)))
446+ $Tuple2(cN, cQ)
445447 }
446448
447449
448-func cQ (cR) = {
449- let cS = 4
450- let cT = 5
451- let cU = {
452- let bJ = invoke(bC, "getPoolConfigByLpAssetId", [cR], nil)
453- if ($isInstanceOf(bJ, "List[Any]"))
454- then bJ
455- else throw(($getType(bJ) + " couldn't be cast to List[Any]"))
456- }
450+func cR (cS) = {
451+ let cT = 4
452+ let cU = 5
457453 let cV = {
458- let bJ = cU[cS]
459- if ($isInstanceOf(bJ, "String"))
460- then bJ
461- else throw(($getType(bJ) + " couldn't be cast to String"))
454+ let bK = invoke(bC, "getPoolConfigByLpAssetId", [cS], nil)
455+ if ($isInstanceOf(bK, "List[Any]"))
456+ then bK
457+ else throw(($getType(bK) + " couldn't be cast to List[Any]"))
462458 }
463459 let cW = {
464- let bJ = cU[cT]
465- if ($isInstanceOf(bJ, "String"))
466- then bJ
467- else throw(($getType(bJ) + " couldn't be cast to String"))
460+ let bK = cV[cT]
461+ if ($isInstanceOf(bK, "String"))
462+ then bK
463+ else throw(($getType(bK) + " couldn't be cast to String"))
468464 }
469- $Tuple2(cV, cW)
465+ let cX = {
466+ let bK = cV[cU]
467+ if ($isInstanceOf(bK, "String"))
468+ then bK
469+ else throw(($getType(bK) + " couldn't be cast to String"))
470+ }
471+ $Tuple2(cW, cX)
470472 }
471473
472474
473-func cX (cV,cW,i,cO) = makeString(["%s%s%s%s%d", "vote", cV, cW, toString(i), toString(cO)], a)
475+func cY (cW,cX,i,cP) = makeString(["%s%s%s%s%d", "vote", cW, cX, toString(i), toString(cP)], a)
474476
475477
476-func cY (cR,cO) = makeString(["%s%s%d", "votingResultStaked", cR, toString(cO)], a)
478+func cZ (cS,cP) = makeString(["%s%s%d", "votingResultStaked", cS, toString(cP)], a)
477479
478480
479-func cZ (cR,cO) = makeString(["%s%s%d", "votingResultStakedIntegral", cR, toString(cO)], a)
481+func da (cS,cP) = makeString(["%s%s%d", "votingResultStakedIntegral", cS, toString(cP)], a)
480482
481483
482-func da (cR,cO) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", cR, toString(cO)], a)
484+func db (cS,cP) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", cS, toString(cP)], a)
483485
484486
485-func db (cR,i,cO) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", cR, toString(i), toString(cO)], a)
487+func dc (cS,i,cP) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", cS, toString(i), toString(cP)], a)
486488
487489
488-func dc (cR,i,cO) = makeString(["%s%s%s%d", "voteStakedIntegral", cR, toString(i), toString(cO)], a)
490+func dd (cS,i,cP) = makeString(["%s%s%s%d", "voteStakedIntegral", cS, toString(i), toString(cP)], a)
489491
490492
491-func dd (cR,i,cO) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", cR, toString(i), toString(cO)], a)
493+func de (cS,i,cP) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", cS, toString(i), toString(cP)], a)
492494
493495
494-func de (cR,i,cO) = makeString(["%s%s%s%d", "voteStakedIntegralLast", cR, toString(i), toString(cO)], a)
496+func df (cS,i,cP) = makeString(["%s%s%s%d", "voteStakedIntegralLast", cS, toString(i), toString(cP)], a)
495497
496498
497-func df (dg,cR) = makeString(["%s%s%s", "staked", dg, cR], a)
499+func dg (dh,cS) = makeString(["%s%s%s", "staked", dh, cS], a)
498500
499501
500-func dh (cR,dg) = {
501- let aS = addressFromStringValue(dg)
502- let di = cK()
503- let cM = di._1
504- let cP = di._2
505- let dj = cQ(cR)
506- let cV = dj._1
507- let cW = dj._2
508- let dk = cX(cV, cW, aS, cM)
509- let dl = valueOrElse(getInteger(bH, dk), 0)
510- dl
502+func di (cS,dh) = {
503+ let aS = addressFromStringValue(dh)
504+ let dj = cL()
505+ let cN = dj._1
506+ let cQ = dj._2
507+ let dk = cR(cS)
508+ let cW = dk._1
509+ let cX = dk._2
510+ let dl = cY(cW, cX, aS, cN)
511+ let dm = valueOrElse(getInteger(bI, dl), 0)
512+ dm
511513 }
512514
513515
514-func dm (cR,dg) = {
515- let dn = valueOrElse(getInteger(bE, df(dg, cR)), 0)
516- let dl = dh(cR, dg)
517- if ((dn == 0))
516+func dn (cS,dh) = {
517+ let do = valueOrElse(getInteger(bE, dg(dh, cS)), 0)
518+ let dm = di(cS, dh)
519+ if ((do == 0))
518520 then 0
519- else dl
521+ else dm
520522 }
521523
522524
523-func do (cR) = {
524- let dp = cK()
525- let cM = dp._1
526- let cP = dp._2
527- let dq = valueOrElse(getInteger(bH, cY(cR, cM)), 0)
528- let dr = valueOrElse(getInteger(this, cY(cR, cM)), dq)
529- dr
525+func dp (cS) = {
526+ let dq = cL()
527+ let cN = dq._1
528+ let cQ = dq._2
529+ let dr = valueOrElse(getInteger(bI, cZ(cS, cN)), 0)
530+ let ds = valueOrElse(getInteger(this, cZ(cS, cN)), dr)
531+ ds
530532 }
531533
532534
533-func ds (cR,dt) = {
534- let du = cK()
535- let cM = du._1
536- let cP = du._2
537- let dr = do(cR)
538- let dv = (dr + dt)
539- let dw = cZ(cR, cM)
540- let dx = valueOrElse(getInteger(this, dw), 0)
541- let dy = da(cR, cM)
542- let dz = valueOrElse(getInteger(this, dy), cP)
543- let dA = (height - dz)
544- let dB = ((dA * dr) + dx)
545- $Tuple2([IntegerEntry(cY(cR, cM), dv), IntegerEntry(dy, height), IntegerEntry(dw, dB)], dB)
535+func dt (cS,du) = {
536+ let dv = cL()
537+ let cN = dv._1
538+ let cQ = dv._2
539+ let ds = dp(cS)
540+ let dw = (ds + du)
541+ let dx = da(cS, cN)
542+ let dy = valueOrElse(getInteger(this, dx), 0)
543+ let dz = db(cS, cN)
544+ let dA = valueOrElse(getInteger(this, dz), cQ)
545+ let dB = (height - dA)
546+ let dC = ((dB * ds) + dy)
547+ $Tuple2([IntegerEntry(cZ(cS, cN), dw), IntegerEntry(dz, height), IntegerEntry(dx, dC)], dC)
546548 }
547549
548550
549-func dC (cR,dg,dD) = {
550- let dE = cK()
551- let cM = dE._1
552- let cP = dE._2
553- let aS = addressFromStringValue(dg)
554- let cS = 4
555- let cT = 5
556- let cU = {
557- let bJ = invoke(bC, "getPoolConfigByLpAssetId", [cR], nil)
558- if ($isInstanceOf(bJ, "List[Any]"))
559- then bJ
560- else throw(($getType(bJ) + " couldn't be cast to List[Any]"))
561- }
551+func dD (cS,dh,dE) = {
552+ let dF = cL()
553+ let cN = dF._1
554+ let cQ = dF._2
555+ let aS = addressFromStringValue(dh)
556+ let cT = 4
557+ let cU = 5
562558 let cV = {
563- let bJ = cU[cS]
564- if ($isInstanceOf(bJ, "String"))
565- then bJ
566- else throw(($getType(bJ) + " couldn't be cast to String"))
559+ let bK = invoke(bC, "getPoolConfigByLpAssetId", [cS], nil)
560+ if ($isInstanceOf(bK, "List[Any]"))
561+ then bK
562+ else throw(($getType(bK) + " couldn't be cast to List[Any]"))
567563 }
568564 let cW = {
569- let bJ = cU[cT]
570- if ($isInstanceOf(bJ, "String"))
571- then bJ
572- else throw(($getType(bJ) + " couldn't be cast to String"))
565+ let bK = cV[cT]
566+ if ($isInstanceOf(bK, "String"))
567+ then bK
568+ else throw(($getType(bK) + " couldn't be cast to String"))
573569 }
574- let dl = valueOrElse(getInteger(bH, cX(cV, cW, aS, cM)), 0)
575- let dF = if ((dl == 0))
570+ let cX = {
571+ let bK = cV[cU]
572+ if ($isInstanceOf(bK, "String"))
573+ then bK
574+ else throw(($getType(bK) + " couldn't be cast to String"))
575+ }
576+ let dm = valueOrElse(getInteger(bI, cY(cW, cX, aS, cN)), 0)
577+ let dG = if ((dm == 0))
576578 then nil
577579 else {
578- let dt = if (dD)
579- then dl
580- else -(dl)
581- let dG = ds(cR, dt)
582- let dH = dG._1
583- let dB = dG._2
584- let dI = if (dD)
580+ let du = if (dE)
581+ then dm
582+ else -(dm)
583+ let dH = dt(cS, du)
584+ let dI = dH._1
585+ let dC = dH._2
586+ let dJ = if (dE)
585587 then 0
586- else dl
587- let dJ = dc(cR, aS, cM)
588- let dK = valueOrElse(getInteger(this, dJ), 0)
589- let dL = dd(cR, aS, cM)
590- let dM = valueOrElse(getInteger(this, dL), cP)
591- let dN = (height - dM)
592- let dO = ((dN * dI) + dK)
593- let dP = [IntegerEntry(dL, height), IntegerEntry(dJ, dO)]
594- (dH ++ dP)
588+ else dm
589+ let dK = dd(cS, aS, cN)
590+ let dL = valueOrElse(getInteger(this, dK), 0)
591+ let dM = de(cS, aS, cN)
592+ let dN = valueOrElse(getInteger(this, dM), cQ)
593+ let dO = (height - dN)
594+ let dP = ((dO * dJ) + dL)
595+ let dQ = [IntegerEntry(dM, height), IntegerEntry(dK, dP)]
596+ (dI ++ dQ)
595597 }
596- dF
598+ dG
597599 }
598600
599601
600-func dQ (cR,dg) = {
601- let dR = cK()
602- let cM = dR._1
603- let cP = dR._2
604- let aS = addressFromStringValue(dg)
605- let dI = dm(cR, dg)
606- let dr = do(cR)
607- let dK = valueOrElse(getInteger(this, dc(cR, aS, cM)), 0)
608- let dx = valueOrElse(getInteger(this, cZ(cR, cM)), 0)
609- let dM = valueOrElse(getInteger(this, dd(cR, aS, cM)), cP)
610- let dz = valueOrElse(getInteger(this, da(cR, cM)), cP)
611- let dJ = de(cR, aS, cM)
612- let dS = valueOrElse(getInteger(this, dJ), 0)
613- let dw = db(cR, aS, cM)
614- let dT = valueOrElse(getInteger(this, dw), 0)
615- let dN = (height - dM)
616- let dA = (height - dz)
617- let dO = ((dN * dI) + dK)
618- let dB = ((dA * dr) + dx)
619- let dU = (dO - dS)
620- let dV = (dB - dT)
621- $Tuple3([IntegerEntry(dJ, dO), IntegerEntry(dw, dB)], dU, dV)
602+func dR (cS,dh) = {
603+ let dS = cL()
604+ let cN = dS._1
605+ let cQ = dS._2
606+ let aS = addressFromStringValue(dh)
607+ let dJ = dn(cS, dh)
608+ let ds = dp(cS)
609+ let dL = valueOrElse(getInteger(this, dd(cS, aS, cN)), 0)
610+ let dy = valueOrElse(getInteger(this, da(cS, cN)), 0)
611+ let dN = valueOrElse(getInteger(this, de(cS, aS, cN)), cQ)
612+ let dA = valueOrElse(getInteger(this, db(cS, cN)), cQ)
613+ let dK = df(cS, aS, cN)
614+ let dT = valueOrElse(getInteger(this, dK), 0)
615+ let dx = dc(cS, aS, cN)
616+ let dU = valueOrElse(getInteger(this, dx), 0)
617+ let dO = (height - dN)
618+ let dB = (height - dA)
619+ let dP = ((dO * dJ) + dL)
620+ let dC = ((dB * ds) + dy)
621+ let dV = (dP - dT)
622+ let dW = (dC - dU)
623+ $Tuple3([IntegerEntry(dK, dP), IntegerEntry(dx, dC)], dV, dW)
622624 }
623625
624626
625-func dW () = {
626- let dX = n(bD, ah())
627- let dY = getInteger(bD, ak())
628- let dZ = getInteger(this, al())
629- let ea = n(bD, an())
630- let cr = if ((height > ea))
631- then ea
627+func dX () = {
628+ let dY = n(bD, ah())
629+ let dZ = getInteger(bD, ak())
630+ let ea = getInteger(this, al())
631+ let eb = n(bD, an())
632+ let cs = if ((height > eb))
633+ then eb
632634 else height
633- let eb = {
634- let r = dY
635+ let ec = {
636+ let r = dZ
635637 if ($isInstanceOf(r, "Int"))
636638 then {
637- let ec = r
638- max([(cr - ec), 0])
639+ let ed = r
640+ max([(cs - ed), 0])
639641 }
640642 else if ($isInstanceOf(r, "Unit"))
641643 then 0
642644 else throw("Match error")
643645 }
644- let ed = ((dX * (bI - 1)) / bI)
645- let ee = valueOrElse(dZ, 0)
646- let ef = ((ed * eb) + ee)
647- $Tuple2([IntegerEntry(al(), ef), IntegerEntry(ak(), height)], ef)
646+ let ee = ((dY * (bJ - 1)) / bJ)
647+ let ef = valueOrElse(ea, 0)
648+ let eg = ((ee * ec) + ef)
649+ $Tuple2([IntegerEntry(al(), eg), IntegerEntry(ak(), height)], eg)
648650 }
649651
650652
651-func eg (cR,dg,eh) = {
652- let ei = getString(this, aR(dg))
653- if ((ei == unit))
653+func eh (cS,dh,ei) = {
654+ let ej = getString(this, aR(dh))
655+ if ((ej == unit))
654656 then $Tuple3(0, nil, "userRecord::is::empty")
655657 else {
656- let ej = split(value(ei), a)
657- let ek = ej[aL]
658- let el = "empty"
659- let em = if ((cR != el))
658+ let ek = split(value(ej), a)
659+ let el = ek[aL]
660+ let em = "empty"
661+ let en = if ((cS != em))
660662 then {
661- let en = valueOrErrorMessage(getString(bC, N(cR)), ("unsupported lp asset " + cR))
662- getIntegerValue(bC, R(en))
663+ let eo = valueOrErrorMessage(getString(bC, N(cS)), ("unsupported lp asset " + cS))
664+ getIntegerValue(bC, R(eo))
663665 }
664- else if (eh)
666+ else if (ei)
665667 then 0
666- else throw(("not readonly mode: unsupported lp asset " + cR))
667- let eo = bu(ek, cR)
668- let ep = bt(ek)
669- let eq = valueOrElse(getInteger(this, eo), k(this, ep))
670- let ef = dW()._2
671- let er = (ef - eq)
672- if ((0 > er))
668+ else throw(("not readonly mode: unsupported lp asset " + cS))
669+ let ep = bu(el, cS)
670+ let eq = bt(el)
671+ let er = valueOrElse(getInteger(this, ep), k(this, eq))
672+ let eg = dX()._2
673+ let es = (eg - er)
674+ if ((0 > es))
673675 then throw("wrong calculations")
674676 else {
675- let es = dQ(cR, dg)
676- let et = es._1
677- let eu = es._2
678- let ev = es._3
679- let ew = fraction(er, em, d)
680- let ex = if ((ev == 0))
677+ let et = dR(cS, dh)
678+ let eu = et._1
679+ let ev = et._2
680+ let ew = et._3
681+ let ex = fraction(es, en, d)
682+ let ey = if ((ew == 0))
681683 then 0
682- else fraction(ew, eu, ev)
683- let ey = ([IntegerEntry(eo, ef)] ++ et)
684- let ez = makeString([toString(eq), toString(er), toString(em), toString(eu), toString(ev)], ":")
685- $Tuple3(ex, ey, ez)
684+ else fraction(ex, ev, ew)
685+ let ez = ([IntegerEntry(ep, eg)] ++ eu)
686+ let eA = makeString([toString(er), toString(es), toString(en), toString(ev), toString(ew)], ":")
687+ $Tuple3(ey, ez, eA)
686688 }
687689 }
688690 }
689691
690692
691-func eA (aI,aY) = {
692- let eB = aw()
693- let eC = eB[aq]
694- let az = fromBase58String(eC)
695- let aA = parseIntValue(eB[ar])
696- let aB = parseIntValue(eB[as])
697- let aC = parseIntValue(eB[at])
693+func eB (aI,aY) = {
694+ let eC = aw()
695+ let eD = eC[aq]
696+ let az = fromBase58String(eD)
697+ let aA = parseIntValue(eC[ar])
698+ let aB = parseIntValue(eC[as])
699+ let aC = parseIntValue(eC[at])
698700 if ((size(aI.payments) != 1))
699701 then throw("invalid payment - exact one payment must be attached")
700702 else {
701- let cD = aI.payments[0]
702- let eD = cD.amount
703- if ((az != value(cD.assetId)))
704- then throw((("invalid asset is in payment - " + eC) + " is expected"))
703+ let cE = aI.payments[0]
704+ let eE = cE.amount
705+ if ((az != value(cE.assetId)))
706+ then throw((("invalid asset is in payment - " + eD) + " is expected"))
705707 else {
706- let eE = be()
707- let dg = toString(aI.caller)
708- let eF = isDefined(getString(bf(dg)))
709- let ek = if (eF)
710- then value(getString(bf(dg)))
711- else toString(n(this, eE))
712- let aV = parseIntValue(ek)
713- let bW = height
714- let cv = bi(ek)
715- let cw = bj(ek)
716- let cu = bh(ek)
717- if ((aA > eD))
708+ let eF = be()
709+ let dh = toString(aI.caller)
710+ let eG = isDefined(getString(bf(dh)))
711+ let el = if (eG)
712+ then value(getString(bf(dh)))
713+ else toString(n(this, eF))
714+ let aV = parseIntValue(el)
715+ let bX = height
716+ let cw = bi(el)
717+ let cx = bj(el)
718+ let cv = bh(el)
719+ if (if ((aA > eE))
720+ then (aI.caller != bG)
721+ else false)
718722 then throw(("amount is less then minLockAmount=" + toString(aA)))
719723 else if ((aB > aY))
720724 then throw(("passed duration is less then minLockDuration=" + toString(aB)))
721725 else if ((aY > aC))
722726 then throw(("passed duration is greater then maxLockDuration=" + toString(aC)))
723- else if (if (eF)
724- then ((n(this, cv) + n(this, cw)) >= bW)
727+ else if (if (eG)
728+ then ((n(this, cw) + n(this, cx)) >= bX)
725729 else false)
726730 then throw("there is an active lock - consider to use increaseLock")
727- else if ((k(this, cu) > 0))
728- then throw(("there are locked WXs - consider to use increaseLock " + cu))
731+ else if ((k(this, cv) > 0))
732+ then throw(("there are locked WXs - consider to use increaseLock " + cv))
729733 else {
730- let eG = fraction(aY, c, aC)
731- let eH = fraction(eD, eG, c)
732- let eI = q(invoke(ax, "calcGwxParamsREADONLY", [eH, bW, aY], nil))
733- let bX = t(eI[0])
734- let bY = t(eI[1])
735- let bn = toString(t(eI[2]))
736- let bQ = bK(false)
737- let ep = bt(ek)
738- let ef = dW()._2
739- let eJ = if (eF)
734+ let eH = fraction(aY, c, aC)
735+ let eI = fraction(eE, eH, c)
736+ let eJ = q(invoke(ax, "calcGwxParamsREADONLY", [eI, bX, aY], nil))
737+ let bY = t(eJ[0])
738+ let bZ = t(eJ[1])
739+ let bn = toString(t(eJ[2]))
740+ let bR = bL(false)
741+ let eq = bt(el)
742+ let eg = dX()._2
743+ let eK = if (eG)
740744 then nil
741- else [IntegerEntry(eE, (aV + 1)), StringEntry(bf(dg), ek), StringEntry(bg(ek), dg)]
742- $Tuple2(((((eJ ++ ct(dg, ek, eD, bW, aY, bX, bY, bn)) ++ cb(eD, aY, 1, if (eF)
745+ else [IntegerEntry(eF, (aV + 1)), StringEntry(bf(dh), el), StringEntry(bg(el), dh)]
746+ $Tuple2(((((eK ++ cu(dh, el, eE, bX, aY, bY, bZ, bn)) ++ cc(eE, aY, 1, if (eG)
743747 then 0
744- else 1)) :+ bT("lock", dg, eD, bW, aY, bX, bY, aI)) ++ [IntegerEntry(ep, ef), IntegerEntry(bA(), (bQ + eH))]), eH)
748+ else 1)) :+ bU("lock", dh, eE, bX, aY, bY, bZ, aI)) ++ [IntegerEntry(eq, eg), IntegerEntry(bA(), (bR + eI))]), eI)
745749 }
746750 }
747751 }
749753
750754
751755 @Callable(aI)
752-func constructor (eK,eL,aA,eM,eN,ax) = {
753- let eO = aH(aI)
754- if ((eO == eO))
755- then ([IntegerEntry(be(), 0), StringEntry(av(), aD(eL, aA, eM, eN, ax)), StringEntry(A(), eK)] ++ cb(0, 0, 0, 0))
756+func constructor (eL,eM,aA,eN,eO,ax) = {
757+ let eP = aH(aI)
758+ if ((eP == eP))
759+ then ([IntegerEntry(be(), 0), StringEntry(av(), aD(eM, aA, eN, eO, ax)), StringEntry(A(), eL)] ++ cc(0, 0, 0, 0))
756760 else throw("Strict value is not equal to itself.")
757761 }
758762
759763
760764
761765 @Callable(aI)
762-func lockRef (aY,eP,eQ) = {
763- let eR = eA(aI, aY)
764- let eS = eR._1
765- let eH = eR._2
766- let eT = toString(aI.caller)
767- let eU = if (if ((eP == ""))
766+func lockRef (aY,eQ,eR) = {
767+ let eS = eB(aI, aY)
768+ let eT = eS._1
769+ let eI = eS._2
770+ let eU = toString(aI.caller)
771+ let eV = if (if ((eQ == ""))
768772 then true
769- else (eQ == base58''))
773+ else (eR == base58''))
770774 then unit
771- else invoke(w, "createPair", [z, eP, eT, eQ], nil)
772- if ((eU == eU))
775+ else invoke(w, "createPair", [z, eQ, eU, eR], nil)
776+ if ((eV == eV))
773777 then {
774- let eV = invoke(ax, "updateReferralActivity", [toString(aI.caller), eH], nil)
775- if ((eV == eV))
776- then $Tuple2(eS, unit)
778+ let eW = invoke(ax, "updateReferralActivity", [toString(aI.caller), eI], nil)
779+ if ((eW == eW))
780+ then $Tuple2(eT, unit)
777781 else throw("Strict value is not equal to itself.")
778782 }
779783 else throw("Strict value is not equal to itself.")
783787
784788 @Callable(aI)
785789 func lock (aY) = {
786- let eW = eA(aI, aY)
787- let eS = eW._1
788- let eH = eW._2
789- let eV = invoke(ax, "updateReferralActivity", [toString(aI.caller), eH], nil)
790- if ((eV == eV))
791- then $Tuple2(eS, unit)
790+ let eX = eB(aI, aY)
791+ let eT = eX._1
792+ let eI = eX._2
793+ let eW = invoke(ax, "updateReferralActivity", [toString(aI.caller), eI], nil)
794+ if ((eW == eW))
795+ then $Tuple2(eT, unit)
792796 else throw("Strict value is not equal to itself.")
793797 }
794798
795799
796800
797801 @Callable(aI)
798-func increaseLock (eX) = {
799- let eB = aw()
800- let eC = eB[aq]
801- let az = fromBase58String(eC)
802- let aB = parseIntValue(eB[as])
803- let aC = parseIntValue(eB[at])
804- let eD = cB(aI, az)
805- let dg = toString(aI.caller)
806- let ej = aT(dg)
807- let ek = ej[aL]
808- let eY = parseIntValue(ej[aM])
809- let bW = parseIntValue(ej[aN])
810- let eZ = parseIntValue(ej[aO])
811- let fa = (bW + eZ)
812- let fb = max([(fa - height), 0])
813- let fc = (eY + eD)
814- let fd = (fb + eX)
815- if ((0 > eX))
802+func increaseLock (eY) = {
803+ let eC = aw()
804+ let eD = eC[aq]
805+ let az = fromBase58String(eD)
806+ let aB = parseIntValue(eC[as])
807+ let aC = parseIntValue(eC[at])
808+ let eE = cC(aI, az)
809+ let dh = toString(aI.caller)
810+ let ek = aT(dh)
811+ let el = ek[aL]
812+ let eZ = parseIntValue(ek[aM])
813+ let bX = parseIntValue(ek[aN])
814+ let fa = parseIntValue(ek[aO])
815+ let fb = (bX + fa)
816+ let fc = max([(fb - height), 0])
817+ let fd = (eZ + eE)
818+ let fe = (fc + eY)
819+ if ((0 > eY))
816820 then throw("duration is less then zero")
817- else if ((aB > fd))
821+ else if ((aB > fe))
818822 then throw(("lockDurationNew is less then minLockDuration=" + toString(aB)))
819- else if ((fd > aC))
823+ else if ((fe > aC))
820824 then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aC)))
821825 else {
822- let eG = fraction(fd, c, aC)
823- let eH = fraction(fc, eG, c)
824- let eV = invoke(ax, "updateReferralActivity", [toString(aI.caller), eH], nil)
825- if ((eV == eV))
826+ let eH = fraction(fe, c, aC)
827+ let eI = fraction(fd, eH, c)
828+ let eW = invoke(ax, "updateReferralActivity", [toString(aI.caller), eI], nil)
829+ if ((eW == eW))
826830 then {
827- let fe = height
828- let eI = q(invoke(ax, "calcGwxParamsREADONLY", [eH, fe, fd], nil))
829- let bX = t(eI[0])
830- let bY = t(eI[1])
831- let bn = toString(t(eI[2]))
832- let ff = cJ(dg)
833- let fg = (eH - ff)
834- if ((0 > fg))
835- then throw(("gwxDiff is less then 0: " + toString(fg)))
831+ let ff = height
832+ let eJ = q(invoke(ax, "calcGwxParamsREADONLY", [eI, ff, fe], nil))
833+ let bY = t(eJ[0])
834+ let bZ = t(eJ[1])
835+ let bn = toString(t(eJ[2]))
836+ let fg = cK(dh)
837+ let fh = (eI - fg)
838+ if ((0 > fh))
839+ then throw(("gwxDiff is less then 0: " + toString(fh)))
836840 else {
837- let bQ = bK(false)
838- let fh = bK(true)
839- (((ct(dg, ek, fc, fe, fd, bX, bY, bn) ++ cb(eD, eX, 0, 0)) :+ bT("lock", dg, eD, bW, fd, bX, bY, aI)) ++ [IntegerEntry(bA(), (bQ + fg))])
841+ let bR = bL(false)
842+ let fi = bL(true)
843+ (((cu(dh, el, fd, ff, fe, bY, bZ, bn) ++ cc(eE, eY, 0, 0)) :+ bU("lock", dh, eE, bX, fe, bY, bZ, aI)) ++ [IntegerEntry(bA(), (bR + fh))])
840844 }
841845 }
842846 else throw("Strict value is not equal to itself.")
846850
847851
848852 @Callable(aI)
849-func claimWxBoost (cR,dg) = if ((bE != aI.caller))
853+func claimWxBoost (cS,dh) = if ((bE != aI.caller))
850854 then throw("permissions denied")
851855 else {
852- let fi = eg(cR, dg, false)
853- let fj = fi._1
854- let ey = fi._2
855- let ez = fi._3
856- $Tuple2(ey, [fj])
856+ let fj = eh(cS, dh, false)
857+ let fk = fj._1
858+ let ez = fj._2
859+ let eA = fj._3
860+ $Tuple2(ez, [fk])
857861 }
858862
859863
860864
861865 @Callable(aI)
862-func claimWxBoostREADONLY (cR,dg) = {
863- let fk = eg(cR, dg, true)
864- let fj = fk._1
865- let ey = fk._2
866- let ez = fk._3
867- $Tuple2(nil, [fj, ez])
866+func claimWxBoostREADONLY (cS,dh) = {
867+ let fl = eh(cS, dh, true)
868+ let fk = fl._1
869+ let ez = fl._2
870+ let eA = fl._3
871+ $Tuple2(nil, [fk, eA])
868872 }
869873
870874
871875
872876 @Callable(aI)
873877 func unlock (aS) = {
874- let ej = aT(aS)
875- let ek = ej[aL]
876- let eY = parseIntValue(ej[aM])
877- let bW = parseIntValue(ej[aN])
878- let eZ = parseIntValue(ej[aO])
879- let fa = (bW + eZ)
880- let eB = aw()
881- let az = fromBase58String(eB[aq])
882- if ((fa >= height))
883- then throw((("wait " + toString(fa)) + " to unlock"))
884- else if ((0 >= eY))
878+ let ek = aT(aS)
879+ let el = ek[aL]
880+ let eZ = parseIntValue(ek[aM])
881+ let bX = parseIntValue(ek[aN])
882+ let fa = parseIntValue(ek[aO])
883+ let fb = (bX + fa)
884+ let eC = aw()
885+ let az = fromBase58String(eC[aq])
886+ if ((fb >= height))
887+ then throw((("wait " + toString(fb)) + " to unlock"))
888+ else if ((0 >= eZ))
885889 then throw("nothing to unlock")
886890 else {
887891 let bn = valueOrElse(getInteger(ax, ao()), 0)
888- (((ct(aS, ek, 0, bW, eZ, 0, 0, toString(bn)) ++ cb(-(eY), 0, 0, -1)) :+ bT("unlock", aS, eY, bW, eZ, 0, 0, aI)) :+ ScriptTransfer(addressFromStringValue(aS), eY, az))
892+ (((cu(aS, el, 0, bX, fa, 0, 0, toString(bn)) ++ cc(-(eZ), 0, 0, -1)) :+ bU("unlock", aS, eZ, bX, fa, 0, 0, aI)) :+ ScriptTransfer(addressFromStringValue(aS), eZ, az))
889893 }
890894 }
891895
893897
894898 @Callable(aI)
895899 func gwxUserInfoREADONLY (aS) = {
896- let bc = cJ(aS)
900+ let bc = cK(aS)
897901 $Tuple2(nil, [bc])
898902 }
899903
900904
901905
902906 @Callable(aI)
903-func getUserGwxAmountAtHeightREADONLY (aS,cF) = {
904- let bc = cE(aS, cF)
907+func userMaxDurationREADONLY (dh) = {
908+ let eC = aw()
909+ let aC = parseIntValue(eC[at])
910+ let ej = getString(this, aR(dh))
911+ if ((ej == unit))
912+ then $Tuple2(nil, $Tuple2("lock", aC))
913+ else {
914+ let ek = split(value(ej), a)
915+ let bX = parseIntValue(ek[aN])
916+ let fa = parseIntValue(ek[aO])
917+ let fb = (bX + fa)
918+ let fc = max([(fb - height), 0])
919+ let fm = (aC - fc)
920+ $Tuple2(nil, $Tuple2("increaseLock", fm))
921+ }
922+ }
923+
924+
925+
926+@Callable(aI)
927+func getUserGwxAmountAtHeightREADONLY (aS,cG) = {
928+ let bc = cF(aS, cG)
905929 $Tuple2(nil, bc)
906930 }
907931
908932
909933
910934 @Callable(aI)
911-func getTotalCachedGwxREADONLY () = $Tuple2(nil, bK(true))
935+func getTotalCachedGwxREADONLY () = $Tuple2(nil, bL(true))
912936
913937
914938
915939 @Callable(aI)
916940 func onBoostEmissionUpdate () = {
917- let eO = if ((aI.caller == bD))
941+ let eP = if ((aI.caller == bD))
918942 then true
919943 else aH(aI)
920- if ((eO == eO))
921- then dW()
944+ if ((eP == eP))
945+ then dX()
922946 else throw("Strict value is not equal to itself.")
923947 }
924948
925949
926950
927951 @Callable(aI)
928-func onStakedVoteUpdate (cR,dg,dD) = {
929- let eO = if ((aI.caller == bE))
952+func onStakedVoteUpdate (cS,dh,dE) = {
953+ let eP = if ((aI.caller == bE))
930954 then true
931955 else aH(aI)
932- if ((eO == eO))
956+ if ((eP == eP))
933957 then {
934- let dF = dC(cR, dg, dD)
935- $Tuple2(dF, unit)
958+ let dG = dD(cS, dh, dE)
959+ $Tuple2(dG, unit)
936960 }
937961 else throw("Strict value is not equal to itself.")
938962 }
940964
941965
942966 @Callable(aI)
943-func getVotingResultStakedREADONLY (cR) = $Tuple2(nil, do(cR))
967+func getVotingResultStakedREADONLY (cS) = $Tuple2(nil, dp(cS))
944968
945969
946970
947971 @Callable(aI)
948-func getUserVoteFinalizedREADONLY (cR,dg) = $Tuple2(nil, dh(cR, dg))
972+func getUserVoteFinalizedREADONLY (cS,dh) = $Tuple2(nil, di(cS, dh))
949973
950974
951975
952976 @Callable(aI)
953-func setManager (fl) = {
954- let eO = aH(aI)
955- if ((eO == eO))
977+func setManager (fn) = {
978+ let eP = aH(aI)
979+ if ((eP == eP))
956980 then {
957- let fm = fromBase58String(fl)
958- if ((fm == fm))
959- then [StringEntry(ag(), fl)]
981+ let fo = fromBase58String(fn)
982+ if ((fo == fo))
983+ then [StringEntry(ag(), fn)]
960984 else throw("Strict value is not equal to itself.")
961985 }
962986 else throw("Strict value is not equal to itself.")
966990
967991 @Callable(aI)
968992 func confirmManager () = {
969- let fn = aG()
970- let fo = if (isDefined(fn))
993+ let fp = aG()
994+ let fq = if (isDefined(fp))
971995 then true
972996 else throw("No pending manager")
973- if ((fo == fo))
997+ if ((fq == fq))
974998 then {
975- let fp = if ((aI.callerPublicKey == value(fn)))
999+ let fr = if ((aI.callerPublicKey == value(fp)))
9761000 then true
9771001 else throw("You are not pending manager")
978- if ((fp == fp))
979- then [StringEntry(af(), toBase58String(value(fn))), DeleteEntry(ag())]
1002+ if ((fr == fr))
1003+ then [StringEntry(af(), toBase58String(value(fp))), DeleteEntry(ag())]
9801004 else throw("Strict value is not equal to itself.")
9811005 }
9821006 else throw("Strict value is not equal to itself.")
9831007 }
9841008
9851009
986-@Verifier(fq)
987-func fr () = {
988- let fs = {
1010+@Verifier(fs)
1011+func ft () = {
1012+ let fu = {
9891013 let r = aE()
9901014 if ($isInstanceOf(r, "ByteVector"))
9911015 then {
9931017 aK
9941018 }
9951019 else if ($isInstanceOf(r, "Unit"))
996- then fq.senderPublicKey
1020+ then fs.senderPublicKey
9971021 else throw("Match error")
9981022 }
999- sigVerify(fq.bodyBytes, fq.proofs[0], fs)
1023+ sigVerify(fs.bodyBytes, fs.proofs[0], fu)
10001024 }
10011025
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 func e (f) = makeString(["boosting.ride:", f], " ")
1313
1414
1515 func g (f) = throw(e(f))
1616
1717
1818 func h (i,j) = valueOrErrorMessage(getString(i, j), (("mandatory this." + j) + " is not defined"))
1919
2020
2121 func k (i,j) = valueOrElse(getInteger(i, j), 0)
2222
2323
2424 func l (i,j,m) = valueOrElse(getInteger(i, j), m)
2525
2626
2727 func n (i,j) = valueOrErrorMessage(getInteger(i, j), (("mandatory this." + j) + " is not defined"))
2828
2929
3030 func o (p) = if ((0 > p))
3131 then -(p)
3232 else p
3333
3434
3535 func q (p) = {
3636 let r = p
3737 if ($isInstanceOf(r, "List[Any]"))
3838 then {
3939 let s = r
4040 s
4141 }
4242 else throw("fail to cast into List[Any]")
4343 }
4444
4545
4646 func t (p) = {
4747 let r = p
4848 if ($isInstanceOf(r, "Int"))
4949 then {
5050 let u = r
5151 u
5252 }
5353 else throw("fail to cast into Int")
5454 }
5555
5656
5757 func v () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5858
5959
6060 let w = addressFromStringValue(h(this, v()))
6161
6262 let x = makeString(["%s%s", "referral", "programName"], a)
6363
6464 let y = "wxlock"
6565
6666 let z = valueOrElse(getString(this, x), y)
6767
6868 func A () = "%s%s__config__factoryAddress"
6969
7070
7171 let B = 1
7272
7373 let C = 2
7474
7575 let D = 3
7676
7777 let E = 4
7878
7979 let F = 5
8080
8181 let G = 6
8282
8383 let H = 7
8484
8585 let I = 8
8686
8787 let J = 9
8888
8989 let K = 10
9090
9191 let L = 11
9292
9393 func M () = "%s__factoryConfig"
9494
9595
9696 func N (O) = makeString(["%s%s%s", O, "mappings__lpAsset2PoolContract"], a)
9797
9898
9999 func P () = "%s__lpTokensList"
100100
101101
102102 func Q (O) = makeString(["%s%s%s", O, "mappings__lpAsset2PoolContract"], a)
103103
104104
105105 func R (S) = makeString(["%s%s", "poolWeight", S], a)
106106
107107
108108 func T (U,V) = ((("%s%s__poolWeight__" + U) + "__") + toString(V))
109109
110110
111111 func W () = addressFromStringValue(h(this, A()))
112112
113113
114114 func X () = split(valueOrElse(getString(W(), P()), ""), a)
115115
116116
117117 func Y (Z) = split(h(Z, M()), a)
118118
119119
120120 func aa (ab) = addressFromStringValue(ab[C])
121121
122122
123123 func ac (ab) = addressFromStringValue(ab[F])
124124
125125
126126 func ad (ab) = addressFromStringValue(ab[B])
127127
128128
129129 func ae (ab) = addressFromStringValue(ab[K])
130130
131131
132132 func af () = "%s__managerPublicKey"
133133
134134
135135 func ag () = "%s__pendingManagerPublicKey"
136136
137137
138138 func ah () = "%s%s__ratePerBlock__current"
139139
140140
141141 func ai () = "%s%s__ratePerBlockMax__current"
142142
143143
144144 func aj () = "%s%s__emission__startBlock"
145145
146146
147147 func ak () = "%s%s__boostingV2__startBlock"
148148
149149
150150 func al () = "%s%s__boostingV2__integral"
151151
152152
153153 func am () = "%s%s__emission__duration"
154154
155155
156156 func an () = "%s%s__emission__endBlock"
157157
158158
159159 func ao () = "%s__nextPeriod"
160160
161161
162162 func ap () = "%s%s__gwxRewardEmissionPart__startHeight"
163163
164164
165165 let aq = 1
166166
167167 let ar = 2
168168
169169 let as = 3
170170
171171 let at = 4
172172
173173 let au = 5
174174
175175 func av () = "%s__config"
176176
177177
178178 func aw () = split(h(this, av()), a)
179179
180180
181181 let ax = addressFromStringValue(aw()[au])
182182
183183 func ay (az,aA,aB,aC,ax) = makeString(["%s%d%d%d", az, aA, aB, aC, ax], a)
184184
185185
186186 func aD (az,aA,aB,aC,ax) = ay(az, toString(aA), toString(aB), toString(aC), ax)
187187
188188
189189 func aE () = {
190190 let r = getString(af())
191191 if ($isInstanceOf(r, "String"))
192192 then {
193193 let aF = r
194194 fromBase58String(aF)
195195 }
196196 else if ($isInstanceOf(r, "Unit"))
197197 then unit
198198 else throw("Match error")
199199 }
200200
201201
202202 func aG () = {
203203 let r = getString(ag())
204204 if ($isInstanceOf(r, "String"))
205205 then {
206206 let aF = r
207207 fromBase58String(aF)
208208 }
209209 else if ($isInstanceOf(r, "Unit"))
210210 then unit
211211 else throw("Match error")
212212 }
213213
214214
215215 func aH (aI) = {
216216 let aJ = throw("Permission denied")
217217 let r = aE()
218218 if ($isInstanceOf(r, "ByteVector"))
219219 then {
220220 let aK = r
221221 if ((aI.callerPublicKey == aK))
222222 then true
223223 else aJ
224224 }
225225 else if ($isInstanceOf(r, "Unit"))
226226 then if ((aI.caller == this))
227227 then true
228228 else aJ
229229 else throw("Match error")
230230 }
231231
232232
233233 let aL = 1
234234
235235 let aM = 2
236236
237237 let aN = 3
238238
239239 let aO = 4
240240
241241 let aP = 5
242242
243243 let aQ = 6
244244
245245 func aR (aS) = makeString(["%s%s__lock", aS], a)
246246
247247
248248 func aT (aS) = split(h(this, aR(aS)), a)
249249
250250
251251 func aU (aV,aW,aX,aY,aZ,ba,bb,bc) = makeString(["%d%d%d%d%d%d%d%d", aV, aW, aX, aY, aZ, ba, bb, bc], a)
252252
253253
254254 func bd (aV,aW,aX,aY,aZ,ba,bc) = aU(aV, toString(aW), toString(aX), toString(aY), toString(aZ), toString(ba), toString(lastBlock.timestamp), toString(bc))
255255
256256
257257 func be () = "%s__nextUserNum"
258258
259259
260260 func bf (aS) = makeString(["%s%s%s__mapping__user2num", aS], a)
261261
262262
263263 func bg (V) = makeString(["%s%s%s__mapping__num2user", V], a)
264264
265265
266266 func bh (aV) = makeString(["%s%d%s__paramByUserNum", aV, "amount"], a)
267267
268268
269269 func bi (aV) = makeString(["%s%d%s__paramByUserNum", aV, "start"], a)
270270
271271
272272 func bj (aV) = makeString(["%s%d%s__paramByUserNum", aV, "duration"], a)
273273
274274
275275 func bk (aV) = makeString(["%s%d%s__paramByUserNum", aV, "k"], a)
276276
277277
278278 func bl (aV) = makeString(["%s%d%s__paramByUserNum", aV, "b"], a)
279279
280280
281281 func bm (aV,bn) = makeString(["%s%d%s%d__paramByPeriod", aV, "k", bn], a)
282282
283283
284284 func bo (aV,bn) = makeString(["%s%d%s%d__paramByPeriod", aV, "b", bn], a)
285285
286286
287287 func bp () = "%s%s__stats__activeTotalLocked"
288288
289289
290290 func bq () = "%s%s__stats__locksDurationSumInBlocks"
291291
292292
293293 func br () = "%s%s__stats__locksCount"
294294
295295
296296 func bs () = "%s%s__stats__activeUsersCount"
297297
298298
299299 func bt (aV) = makeString(["%s%d__userBoostEmissionLastIntV2", aV], a)
300300
301301
302302 func bu (aV,bv) = makeString(["%s%d__userBoostEmissionLastIntV2", aV, bv], a)
303303
304304
305305 func bw (aV) = makeString(["%s%d__maxBoostInt", aV], a)
306306
307307
308308 func bx () = "%s%s__maxBoostInt__total"
309309
310310
311311 func by (aV) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aV], a)
312312
313313
314314 func bz (aV) = makeString(["%s%d__userBoostClaimed", aV], a)
315315
316316
317317 func bA () = "%s%s__gwxCached__total"
318318
319319
320320 func bB () = "%s__gwxCachedTotalCorrective"
321321
322322
323323 let bC = W()
324324
325325 let ab = Y(bC)
326326
327327 let bD = ac(ab)
328328
329329 let bE = ad(ab)
330330
331331 let bF = ae(ab)
332332
333-let bG = makeString(["%s", "votingEmissionContract"], a)
333+let bG = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), e("lp_staking_pools contract address is undefined"))), e("invalid lp_staking_pools contract address"))
334334
335-let bH = addressFromStringValue(getStringValue(bC, bG))
335+let bH = makeString(["%s", "votingEmissionContract"], a)
336336
337-let bI = {
338- let bJ = invoke(bD, "getBoostCoeffREADONLY", nil, nil)
339- if ($isInstanceOf(bJ, "Int"))
340- then bJ
341- else throw(($getType(bJ) + " couldn't be cast to Int"))
337+let bI = addressFromStringValue(getStringValue(bC, bH))
338+
339+let bJ = {
340+ let bK = invoke(bD, "getBoostCoeffREADONLY", nil, nil)
341+ if ($isInstanceOf(bK, "Int"))
342+ then bK
343+ else throw(($getType(bK) + " couldn't be cast to Int"))
342344 }
343345
344-func bK (bL) = {
345- let bM = makeString(["%s", "currentEpochUi"], a)
346- let bN = getIntegerValue(bH, bM)
347- let bO = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
348- let bP = getInteger(this, bO)
349- let bQ = valueOrElse(getInteger(this, bA()), 0)
350- let bR = if (isDefined(bP))
351- then (bN >= value(bP))
346+func bL (bM) = {
347+ let bN = makeString(["%s", "currentEpochUi"], a)
348+ let bO = getIntegerValue(bI, bN)
349+ let bP = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
350+ let bQ = getInteger(this, bP)
351+ let bR = valueOrElse(getInteger(this, bA()), 0)
352+ let bS = if (isDefined(bQ))
353+ then (bO >= value(bQ))
352354 else false
353- let bS = if (if (bR)
354- then bL
355+ let bT = if (if (bS)
356+ then bM
355357 else false)
356358 then valueOrElse(getInteger(this, bB()), 0)
357359 else 0
358- max([0, (bQ + bS)])
360+ max([0, (bR + bT)])
359361 }
360362
361363
362-func bT (bU,bV,aW,bW,aY,bX,bY,aI) = {
363- let bZ = makeString(["%s%s%s%s__history", bU, bV, toBase58String(aI.transactionId)], a)
364- let ca = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aW), toString(bW), toString(aY), toString(bX), toString(bY)], a)
365- StringEntry(bZ, ca)
364+func bU (bV,bW,aW,bX,aY,bY,bZ,aI) = {
365+ let ca = makeString(["%s%s%s%s__history", bV, bW, toBase58String(aI.transactionId)], a)
366+ let cb = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aW), toString(bX), toString(aY), toString(bY), toString(bZ)], a)
367+ StringEntry(ca, cb)
366368 }
367369
368370
369-func cb (cc,cd,ce,cf) = {
370- let cg = bq()
371- let ch = br()
372- let ci = bs()
373- let cj = bp()
374- let ck = k(this, cg)
371+func cc (cd,ce,cf,cg) = {
372+ let ch = bq()
373+ let ci = br()
374+ let cj = bs()
375+ let ck = bp()
375376 let cl = k(this, ch)
376377 let cm = k(this, ci)
377378 let cn = k(this, cj)
378-[IntegerEntry(cg, (ck + cd)), IntegerEntry(ch, (cl + ce)), IntegerEntry(ci, (cm + cf)), IntegerEntry(cj, (cn + cc))]
379+ let co = k(this, ck)
380+[IntegerEntry(ch, (cl + ce)), IntegerEntry(ci, (cm + cf)), IntegerEntry(cj, (cn + cg)), IntegerEntry(ck, (co + cd))]
379381 }
380382
381383
382-func co (cp,cq,cr) = {
383- let cs = 1000
384- (((cp * cr) + cq) / cs)
384+func cp (cq,cr,cs) = {
385+ let ct = 1000
386+ (((cq * cs) + cr) / ct)
385387 }
386388
387389
388-func ct (aS,aV,aW,aX,aY,bX,bY,bn) = {
389- let cu = bh(aV)
390- let cv = bi(aV)
391- let cw = bj(aV)
392- let cx = bk(aV)
393- let cy = bl(aV)
394- let cz = bm(aV, bn)
395- let cA = bo(aV, bn)
396- let bc = co(bX, bY, height)
397-[IntegerEntry(cu, aW), IntegerEntry(cv, aX), IntegerEntry(cw, aY), IntegerEntry(cx, bX), IntegerEntry(cy, bY), IntegerEntry(cz, bX), IntegerEntry(cA, bY), StringEntry(aR(aS), bd(aV, aW, aX, aY, bX, bY, bc))]
390+func cu (aS,aV,aW,aX,aY,bY,bZ,bn) = {
391+ let cv = bh(aV)
392+ let cw = bi(aV)
393+ let cx = bj(aV)
394+ let cy = bk(aV)
395+ let cz = bl(aV)
396+ let cA = bm(aV, bn)
397+ let cB = bo(aV, bn)
398+ let bc = cp(bY, bZ, height)
399+[IntegerEntry(cv, aW), IntegerEntry(cw, aX), IntegerEntry(cx, aY), IntegerEntry(cy, bY), IntegerEntry(cz, bZ), IntegerEntry(cA, bY), IntegerEntry(cB, bZ), StringEntry(aR(aS), bd(aV, aW, aX, aY, bY, bZ, bc))]
398400 }
399401
400402
401-func cB (aI,cC) = if ((size(aI.payments) > 1))
403+func cC (aI,cD) = if ((size(aI.payments) > 1))
402404 then throw("only one payment is allowed")
403405 else if ((size(aI.payments) == 0))
404406 then 0
405407 else {
406- let cD = aI.payments[0]
407- if ((value(cD.assetId) != cC))
408+ let cE = aI.payments[0]
409+ if ((value(cE.assetId) != cD))
408410 then throw("invalid asset id in payment")
409- else cD.amount
411+ else cE.amount
410412 }
411413
412414
413-func cE (aS,cF) = {
414- let cG = "empty"
415- let cH = bf(aS)
416- let aV = valueOrElse(getString(cH), cG)
417- let bX = valueOrElse(getInteger(bk(aV)), 0)
418- let bY = valueOrElse(getInteger(bl(aV)), 0)
419- let cI = co(bX, bY, cF)
420- let bc = if ((0 > cI))
415+func cF (aS,cG) = {
416+ let cH = "empty"
417+ let cI = bf(aS)
418+ let aV = valueOrElse(getString(cI), cH)
419+ let bY = valueOrElse(getInteger(bk(aV)), 0)
420+ let bZ = valueOrElse(getInteger(bl(aV)), 0)
421+ let cJ = cp(bY, bZ, cG)
422+ let bc = if ((0 > cJ))
421423 then 0
422- else cI
424+ else cJ
423425 bc
424426 }
425427
426428
427-func cJ (aS) = cE(aS, height)
429+func cK (aS) = cF(aS, height)
428430
429431
430-func cK () = {
431- let bM = makeString(["%s", "currentEpochUi"], a)
432- let cL = {
433- let bN = value(getInteger(bH, bM))
434- let cM = (bN - 1)
435- if ((0 > cM))
432+func cL () = {
433+ let bN = makeString(["%s", "currentEpochUi"], a)
434+ let cM = {
435+ let bO = value(getInteger(bI, bN))
436+ let cN = (bO - 1)
437+ if ((0 > cN))
436438 then g("invalid epoch")
437- else $Tuple2(bN, cM)
439+ else $Tuple2(bO, cN)
438440 }
439- let bN = cL._1
440- let cM = cL._2
441- func cN (cO) = makeString(["%s%d", "startHeight", toString(cO)], a)
441+ let bO = cM._1
442+ let cN = cM._2
443+ func cO (cP) = makeString(["%s%d", "startHeight", toString(cP)], a)
442444
443- let cP = value(getInteger(bH, cN(bN)))
444- $Tuple2(cM, cP)
445+ let cQ = value(getInteger(bI, cO(bO)))
446+ $Tuple2(cN, cQ)
445447 }
446448
447449
448-func cQ (cR) = {
449- let cS = 4
450- let cT = 5
451- let cU = {
452- let bJ = invoke(bC, "getPoolConfigByLpAssetId", [cR], nil)
453- if ($isInstanceOf(bJ, "List[Any]"))
454- then bJ
455- else throw(($getType(bJ) + " couldn't be cast to List[Any]"))
456- }
450+func cR (cS) = {
451+ let cT = 4
452+ let cU = 5
457453 let cV = {
458- let bJ = cU[cS]
459- if ($isInstanceOf(bJ, "String"))
460- then bJ
461- else throw(($getType(bJ) + " couldn't be cast to String"))
454+ let bK = invoke(bC, "getPoolConfigByLpAssetId", [cS], nil)
455+ if ($isInstanceOf(bK, "List[Any]"))
456+ then bK
457+ else throw(($getType(bK) + " couldn't be cast to List[Any]"))
462458 }
463459 let cW = {
464- let bJ = cU[cT]
465- if ($isInstanceOf(bJ, "String"))
466- then bJ
467- else throw(($getType(bJ) + " couldn't be cast to String"))
460+ let bK = cV[cT]
461+ if ($isInstanceOf(bK, "String"))
462+ then bK
463+ else throw(($getType(bK) + " couldn't be cast to String"))
468464 }
469- $Tuple2(cV, cW)
465+ let cX = {
466+ let bK = cV[cU]
467+ if ($isInstanceOf(bK, "String"))
468+ then bK
469+ else throw(($getType(bK) + " couldn't be cast to String"))
470+ }
471+ $Tuple2(cW, cX)
470472 }
471473
472474
473-func cX (cV,cW,i,cO) = makeString(["%s%s%s%s%d", "vote", cV, cW, toString(i), toString(cO)], a)
475+func cY (cW,cX,i,cP) = makeString(["%s%s%s%s%d", "vote", cW, cX, toString(i), toString(cP)], a)
474476
475477
476-func cY (cR,cO) = makeString(["%s%s%d", "votingResultStaked", cR, toString(cO)], a)
478+func cZ (cS,cP) = makeString(["%s%s%d", "votingResultStaked", cS, toString(cP)], a)
477479
478480
479-func cZ (cR,cO) = makeString(["%s%s%d", "votingResultStakedIntegral", cR, toString(cO)], a)
481+func da (cS,cP) = makeString(["%s%s%d", "votingResultStakedIntegral", cS, toString(cP)], a)
480482
481483
482-func da (cR,cO) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", cR, toString(cO)], a)
484+func db (cS,cP) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", cS, toString(cP)], a)
483485
484486
485-func db (cR,i,cO) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", cR, toString(i), toString(cO)], a)
487+func dc (cS,i,cP) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", cS, toString(i), toString(cP)], a)
486488
487489
488-func dc (cR,i,cO) = makeString(["%s%s%s%d", "voteStakedIntegral", cR, toString(i), toString(cO)], a)
490+func dd (cS,i,cP) = makeString(["%s%s%s%d", "voteStakedIntegral", cS, toString(i), toString(cP)], a)
489491
490492
491-func dd (cR,i,cO) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", cR, toString(i), toString(cO)], a)
493+func de (cS,i,cP) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", cS, toString(i), toString(cP)], a)
492494
493495
494-func de (cR,i,cO) = makeString(["%s%s%s%d", "voteStakedIntegralLast", cR, toString(i), toString(cO)], a)
496+func df (cS,i,cP) = makeString(["%s%s%s%d", "voteStakedIntegralLast", cS, toString(i), toString(cP)], a)
495497
496498
497-func df (dg,cR) = makeString(["%s%s%s", "staked", dg, cR], a)
499+func dg (dh,cS) = makeString(["%s%s%s", "staked", dh, cS], a)
498500
499501
500-func dh (cR,dg) = {
501- let aS = addressFromStringValue(dg)
502- let di = cK()
503- let cM = di._1
504- let cP = di._2
505- let dj = cQ(cR)
506- let cV = dj._1
507- let cW = dj._2
508- let dk = cX(cV, cW, aS, cM)
509- let dl = valueOrElse(getInteger(bH, dk), 0)
510- dl
502+func di (cS,dh) = {
503+ let aS = addressFromStringValue(dh)
504+ let dj = cL()
505+ let cN = dj._1
506+ let cQ = dj._2
507+ let dk = cR(cS)
508+ let cW = dk._1
509+ let cX = dk._2
510+ let dl = cY(cW, cX, aS, cN)
511+ let dm = valueOrElse(getInteger(bI, dl), 0)
512+ dm
511513 }
512514
513515
514-func dm (cR,dg) = {
515- let dn = valueOrElse(getInteger(bE, df(dg, cR)), 0)
516- let dl = dh(cR, dg)
517- if ((dn == 0))
516+func dn (cS,dh) = {
517+ let do = valueOrElse(getInteger(bE, dg(dh, cS)), 0)
518+ let dm = di(cS, dh)
519+ if ((do == 0))
518520 then 0
519- else dl
521+ else dm
520522 }
521523
522524
523-func do (cR) = {
524- let dp = cK()
525- let cM = dp._1
526- let cP = dp._2
527- let dq = valueOrElse(getInteger(bH, cY(cR, cM)), 0)
528- let dr = valueOrElse(getInteger(this, cY(cR, cM)), dq)
529- dr
525+func dp (cS) = {
526+ let dq = cL()
527+ let cN = dq._1
528+ let cQ = dq._2
529+ let dr = valueOrElse(getInteger(bI, cZ(cS, cN)), 0)
530+ let ds = valueOrElse(getInteger(this, cZ(cS, cN)), dr)
531+ ds
530532 }
531533
532534
533-func ds (cR,dt) = {
534- let du = cK()
535- let cM = du._1
536- let cP = du._2
537- let dr = do(cR)
538- let dv = (dr + dt)
539- let dw = cZ(cR, cM)
540- let dx = valueOrElse(getInteger(this, dw), 0)
541- let dy = da(cR, cM)
542- let dz = valueOrElse(getInteger(this, dy), cP)
543- let dA = (height - dz)
544- let dB = ((dA * dr) + dx)
545- $Tuple2([IntegerEntry(cY(cR, cM), dv), IntegerEntry(dy, height), IntegerEntry(dw, dB)], dB)
535+func dt (cS,du) = {
536+ let dv = cL()
537+ let cN = dv._1
538+ let cQ = dv._2
539+ let ds = dp(cS)
540+ let dw = (ds + du)
541+ let dx = da(cS, cN)
542+ let dy = valueOrElse(getInteger(this, dx), 0)
543+ let dz = db(cS, cN)
544+ let dA = valueOrElse(getInteger(this, dz), cQ)
545+ let dB = (height - dA)
546+ let dC = ((dB * ds) + dy)
547+ $Tuple2([IntegerEntry(cZ(cS, cN), dw), IntegerEntry(dz, height), IntegerEntry(dx, dC)], dC)
546548 }
547549
548550
549-func dC (cR,dg,dD) = {
550- let dE = cK()
551- let cM = dE._1
552- let cP = dE._2
553- let aS = addressFromStringValue(dg)
554- let cS = 4
555- let cT = 5
556- let cU = {
557- let bJ = invoke(bC, "getPoolConfigByLpAssetId", [cR], nil)
558- if ($isInstanceOf(bJ, "List[Any]"))
559- then bJ
560- else throw(($getType(bJ) + " couldn't be cast to List[Any]"))
561- }
551+func dD (cS,dh,dE) = {
552+ let dF = cL()
553+ let cN = dF._1
554+ let cQ = dF._2
555+ let aS = addressFromStringValue(dh)
556+ let cT = 4
557+ let cU = 5
562558 let cV = {
563- let bJ = cU[cS]
564- if ($isInstanceOf(bJ, "String"))
565- then bJ
566- else throw(($getType(bJ) + " couldn't be cast to String"))
559+ let bK = invoke(bC, "getPoolConfigByLpAssetId", [cS], nil)
560+ if ($isInstanceOf(bK, "List[Any]"))
561+ then bK
562+ else throw(($getType(bK) + " couldn't be cast to List[Any]"))
567563 }
568564 let cW = {
569- let bJ = cU[cT]
570- if ($isInstanceOf(bJ, "String"))
571- then bJ
572- else throw(($getType(bJ) + " couldn't be cast to String"))
565+ let bK = cV[cT]
566+ if ($isInstanceOf(bK, "String"))
567+ then bK
568+ else throw(($getType(bK) + " couldn't be cast to String"))
573569 }
574- let dl = valueOrElse(getInteger(bH, cX(cV, cW, aS, cM)), 0)
575- let dF = if ((dl == 0))
570+ let cX = {
571+ let bK = cV[cU]
572+ if ($isInstanceOf(bK, "String"))
573+ then bK
574+ else throw(($getType(bK) + " couldn't be cast to String"))
575+ }
576+ let dm = valueOrElse(getInteger(bI, cY(cW, cX, aS, cN)), 0)
577+ let dG = if ((dm == 0))
576578 then nil
577579 else {
578- let dt = if (dD)
579- then dl
580- else -(dl)
581- let dG = ds(cR, dt)
582- let dH = dG._1
583- let dB = dG._2
584- let dI = if (dD)
580+ let du = if (dE)
581+ then dm
582+ else -(dm)
583+ let dH = dt(cS, du)
584+ let dI = dH._1
585+ let dC = dH._2
586+ let dJ = if (dE)
585587 then 0
586- else dl
587- let dJ = dc(cR, aS, cM)
588- let dK = valueOrElse(getInteger(this, dJ), 0)
589- let dL = dd(cR, aS, cM)
590- let dM = valueOrElse(getInteger(this, dL), cP)
591- let dN = (height - dM)
592- let dO = ((dN * dI) + dK)
593- let dP = [IntegerEntry(dL, height), IntegerEntry(dJ, dO)]
594- (dH ++ dP)
588+ else dm
589+ let dK = dd(cS, aS, cN)
590+ let dL = valueOrElse(getInteger(this, dK), 0)
591+ let dM = de(cS, aS, cN)
592+ let dN = valueOrElse(getInteger(this, dM), cQ)
593+ let dO = (height - dN)
594+ let dP = ((dO * dJ) + dL)
595+ let dQ = [IntegerEntry(dM, height), IntegerEntry(dK, dP)]
596+ (dI ++ dQ)
595597 }
596- dF
598+ dG
597599 }
598600
599601
600-func dQ (cR,dg) = {
601- let dR = cK()
602- let cM = dR._1
603- let cP = dR._2
604- let aS = addressFromStringValue(dg)
605- let dI = dm(cR, dg)
606- let dr = do(cR)
607- let dK = valueOrElse(getInteger(this, dc(cR, aS, cM)), 0)
608- let dx = valueOrElse(getInteger(this, cZ(cR, cM)), 0)
609- let dM = valueOrElse(getInteger(this, dd(cR, aS, cM)), cP)
610- let dz = valueOrElse(getInteger(this, da(cR, cM)), cP)
611- let dJ = de(cR, aS, cM)
612- let dS = valueOrElse(getInteger(this, dJ), 0)
613- let dw = db(cR, aS, cM)
614- let dT = valueOrElse(getInteger(this, dw), 0)
615- let dN = (height - dM)
616- let dA = (height - dz)
617- let dO = ((dN * dI) + dK)
618- let dB = ((dA * dr) + dx)
619- let dU = (dO - dS)
620- let dV = (dB - dT)
621- $Tuple3([IntegerEntry(dJ, dO), IntegerEntry(dw, dB)], dU, dV)
602+func dR (cS,dh) = {
603+ let dS = cL()
604+ let cN = dS._1
605+ let cQ = dS._2
606+ let aS = addressFromStringValue(dh)
607+ let dJ = dn(cS, dh)
608+ let ds = dp(cS)
609+ let dL = valueOrElse(getInteger(this, dd(cS, aS, cN)), 0)
610+ let dy = valueOrElse(getInteger(this, da(cS, cN)), 0)
611+ let dN = valueOrElse(getInteger(this, de(cS, aS, cN)), cQ)
612+ let dA = valueOrElse(getInteger(this, db(cS, cN)), cQ)
613+ let dK = df(cS, aS, cN)
614+ let dT = valueOrElse(getInteger(this, dK), 0)
615+ let dx = dc(cS, aS, cN)
616+ let dU = valueOrElse(getInteger(this, dx), 0)
617+ let dO = (height - dN)
618+ let dB = (height - dA)
619+ let dP = ((dO * dJ) + dL)
620+ let dC = ((dB * ds) + dy)
621+ let dV = (dP - dT)
622+ let dW = (dC - dU)
623+ $Tuple3([IntegerEntry(dK, dP), IntegerEntry(dx, dC)], dV, dW)
622624 }
623625
624626
625-func dW () = {
626- let dX = n(bD, ah())
627- let dY = getInteger(bD, ak())
628- let dZ = getInteger(this, al())
629- let ea = n(bD, an())
630- let cr = if ((height > ea))
631- then ea
627+func dX () = {
628+ let dY = n(bD, ah())
629+ let dZ = getInteger(bD, ak())
630+ let ea = getInteger(this, al())
631+ let eb = n(bD, an())
632+ let cs = if ((height > eb))
633+ then eb
632634 else height
633- let eb = {
634- let r = dY
635+ let ec = {
636+ let r = dZ
635637 if ($isInstanceOf(r, "Int"))
636638 then {
637- let ec = r
638- max([(cr - ec), 0])
639+ let ed = r
640+ max([(cs - ed), 0])
639641 }
640642 else if ($isInstanceOf(r, "Unit"))
641643 then 0
642644 else throw("Match error")
643645 }
644- let ed = ((dX * (bI - 1)) / bI)
645- let ee = valueOrElse(dZ, 0)
646- let ef = ((ed * eb) + ee)
647- $Tuple2([IntegerEntry(al(), ef), IntegerEntry(ak(), height)], ef)
646+ let ee = ((dY * (bJ - 1)) / bJ)
647+ let ef = valueOrElse(ea, 0)
648+ let eg = ((ee * ec) + ef)
649+ $Tuple2([IntegerEntry(al(), eg), IntegerEntry(ak(), height)], eg)
648650 }
649651
650652
651-func eg (cR,dg,eh) = {
652- let ei = getString(this, aR(dg))
653- if ((ei == unit))
653+func eh (cS,dh,ei) = {
654+ let ej = getString(this, aR(dh))
655+ if ((ej == unit))
654656 then $Tuple3(0, nil, "userRecord::is::empty")
655657 else {
656- let ej = split(value(ei), a)
657- let ek = ej[aL]
658- let el = "empty"
659- let em = if ((cR != el))
658+ let ek = split(value(ej), a)
659+ let el = ek[aL]
660+ let em = "empty"
661+ let en = if ((cS != em))
660662 then {
661- let en = valueOrErrorMessage(getString(bC, N(cR)), ("unsupported lp asset " + cR))
662- getIntegerValue(bC, R(en))
663+ let eo = valueOrErrorMessage(getString(bC, N(cS)), ("unsupported lp asset " + cS))
664+ getIntegerValue(bC, R(eo))
663665 }
664- else if (eh)
666+ else if (ei)
665667 then 0
666- else throw(("not readonly mode: unsupported lp asset " + cR))
667- let eo = bu(ek, cR)
668- let ep = bt(ek)
669- let eq = valueOrElse(getInteger(this, eo), k(this, ep))
670- let ef = dW()._2
671- let er = (ef - eq)
672- if ((0 > er))
668+ else throw(("not readonly mode: unsupported lp asset " + cS))
669+ let ep = bu(el, cS)
670+ let eq = bt(el)
671+ let er = valueOrElse(getInteger(this, ep), k(this, eq))
672+ let eg = dX()._2
673+ let es = (eg - er)
674+ if ((0 > es))
673675 then throw("wrong calculations")
674676 else {
675- let es = dQ(cR, dg)
676- let et = es._1
677- let eu = es._2
678- let ev = es._3
679- let ew = fraction(er, em, d)
680- let ex = if ((ev == 0))
677+ let et = dR(cS, dh)
678+ let eu = et._1
679+ let ev = et._2
680+ let ew = et._3
681+ let ex = fraction(es, en, d)
682+ let ey = if ((ew == 0))
681683 then 0
682- else fraction(ew, eu, ev)
683- let ey = ([IntegerEntry(eo, ef)] ++ et)
684- let ez = makeString([toString(eq), toString(er), toString(em), toString(eu), toString(ev)], ":")
685- $Tuple3(ex, ey, ez)
684+ else fraction(ex, ev, ew)
685+ let ez = ([IntegerEntry(ep, eg)] ++ eu)
686+ let eA = makeString([toString(er), toString(es), toString(en), toString(ev), toString(ew)], ":")
687+ $Tuple3(ey, ez, eA)
686688 }
687689 }
688690 }
689691
690692
691-func eA (aI,aY) = {
692- let eB = aw()
693- let eC = eB[aq]
694- let az = fromBase58String(eC)
695- let aA = parseIntValue(eB[ar])
696- let aB = parseIntValue(eB[as])
697- let aC = parseIntValue(eB[at])
693+func eB (aI,aY) = {
694+ let eC = aw()
695+ let eD = eC[aq]
696+ let az = fromBase58String(eD)
697+ let aA = parseIntValue(eC[ar])
698+ let aB = parseIntValue(eC[as])
699+ let aC = parseIntValue(eC[at])
698700 if ((size(aI.payments) != 1))
699701 then throw("invalid payment - exact one payment must be attached")
700702 else {
701- let cD = aI.payments[0]
702- let eD = cD.amount
703- if ((az != value(cD.assetId)))
704- then throw((("invalid asset is in payment - " + eC) + " is expected"))
703+ let cE = aI.payments[0]
704+ let eE = cE.amount
705+ if ((az != value(cE.assetId)))
706+ then throw((("invalid asset is in payment - " + eD) + " is expected"))
705707 else {
706- let eE = be()
707- let dg = toString(aI.caller)
708- let eF = isDefined(getString(bf(dg)))
709- let ek = if (eF)
710- then value(getString(bf(dg)))
711- else toString(n(this, eE))
712- let aV = parseIntValue(ek)
713- let bW = height
714- let cv = bi(ek)
715- let cw = bj(ek)
716- let cu = bh(ek)
717- if ((aA > eD))
708+ let eF = be()
709+ let dh = toString(aI.caller)
710+ let eG = isDefined(getString(bf(dh)))
711+ let el = if (eG)
712+ then value(getString(bf(dh)))
713+ else toString(n(this, eF))
714+ let aV = parseIntValue(el)
715+ let bX = height
716+ let cw = bi(el)
717+ let cx = bj(el)
718+ let cv = bh(el)
719+ if (if ((aA > eE))
720+ then (aI.caller != bG)
721+ else false)
718722 then throw(("amount is less then minLockAmount=" + toString(aA)))
719723 else if ((aB > aY))
720724 then throw(("passed duration is less then minLockDuration=" + toString(aB)))
721725 else if ((aY > aC))
722726 then throw(("passed duration is greater then maxLockDuration=" + toString(aC)))
723- else if (if (eF)
724- then ((n(this, cv) + n(this, cw)) >= bW)
727+ else if (if (eG)
728+ then ((n(this, cw) + n(this, cx)) >= bX)
725729 else false)
726730 then throw("there is an active lock - consider to use increaseLock")
727- else if ((k(this, cu) > 0))
728- then throw(("there are locked WXs - consider to use increaseLock " + cu))
731+ else if ((k(this, cv) > 0))
732+ then throw(("there are locked WXs - consider to use increaseLock " + cv))
729733 else {
730- let eG = fraction(aY, c, aC)
731- let eH = fraction(eD, eG, c)
732- let eI = q(invoke(ax, "calcGwxParamsREADONLY", [eH, bW, aY], nil))
733- let bX = t(eI[0])
734- let bY = t(eI[1])
735- let bn = toString(t(eI[2]))
736- let bQ = bK(false)
737- let ep = bt(ek)
738- let ef = dW()._2
739- let eJ = if (eF)
734+ let eH = fraction(aY, c, aC)
735+ let eI = fraction(eE, eH, c)
736+ let eJ = q(invoke(ax, "calcGwxParamsREADONLY", [eI, bX, aY], nil))
737+ let bY = t(eJ[0])
738+ let bZ = t(eJ[1])
739+ let bn = toString(t(eJ[2]))
740+ let bR = bL(false)
741+ let eq = bt(el)
742+ let eg = dX()._2
743+ let eK = if (eG)
740744 then nil
741- else [IntegerEntry(eE, (aV + 1)), StringEntry(bf(dg), ek), StringEntry(bg(ek), dg)]
742- $Tuple2(((((eJ ++ ct(dg, ek, eD, bW, aY, bX, bY, bn)) ++ cb(eD, aY, 1, if (eF)
745+ else [IntegerEntry(eF, (aV + 1)), StringEntry(bf(dh), el), StringEntry(bg(el), dh)]
746+ $Tuple2(((((eK ++ cu(dh, el, eE, bX, aY, bY, bZ, bn)) ++ cc(eE, aY, 1, if (eG)
743747 then 0
744- else 1)) :+ bT("lock", dg, eD, bW, aY, bX, bY, aI)) ++ [IntegerEntry(ep, ef), IntegerEntry(bA(), (bQ + eH))]), eH)
748+ else 1)) :+ bU("lock", dh, eE, bX, aY, bY, bZ, aI)) ++ [IntegerEntry(eq, eg), IntegerEntry(bA(), (bR + eI))]), eI)
745749 }
746750 }
747751 }
748752 }
749753
750754
751755 @Callable(aI)
752-func constructor (eK,eL,aA,eM,eN,ax) = {
753- let eO = aH(aI)
754- if ((eO == eO))
755- then ([IntegerEntry(be(), 0), StringEntry(av(), aD(eL, aA, eM, eN, ax)), StringEntry(A(), eK)] ++ cb(0, 0, 0, 0))
756+func constructor (eL,eM,aA,eN,eO,ax) = {
757+ let eP = aH(aI)
758+ if ((eP == eP))
759+ then ([IntegerEntry(be(), 0), StringEntry(av(), aD(eM, aA, eN, eO, ax)), StringEntry(A(), eL)] ++ cc(0, 0, 0, 0))
756760 else throw("Strict value is not equal to itself.")
757761 }
758762
759763
760764
761765 @Callable(aI)
762-func lockRef (aY,eP,eQ) = {
763- let eR = eA(aI, aY)
764- let eS = eR._1
765- let eH = eR._2
766- let eT = toString(aI.caller)
767- let eU = if (if ((eP == ""))
766+func lockRef (aY,eQ,eR) = {
767+ let eS = eB(aI, aY)
768+ let eT = eS._1
769+ let eI = eS._2
770+ let eU = toString(aI.caller)
771+ let eV = if (if ((eQ == ""))
768772 then true
769- else (eQ == base58''))
773+ else (eR == base58''))
770774 then unit
771- else invoke(w, "createPair", [z, eP, eT, eQ], nil)
772- if ((eU == eU))
775+ else invoke(w, "createPair", [z, eQ, eU, eR], nil)
776+ if ((eV == eV))
773777 then {
774- let eV = invoke(ax, "updateReferralActivity", [toString(aI.caller), eH], nil)
775- if ((eV == eV))
776- then $Tuple2(eS, unit)
778+ let eW = invoke(ax, "updateReferralActivity", [toString(aI.caller), eI], nil)
779+ if ((eW == eW))
780+ then $Tuple2(eT, unit)
777781 else throw("Strict value is not equal to itself.")
778782 }
779783 else throw("Strict value is not equal to itself.")
780784 }
781785
782786
783787
784788 @Callable(aI)
785789 func lock (aY) = {
786- let eW = eA(aI, aY)
787- let eS = eW._1
788- let eH = eW._2
789- let eV = invoke(ax, "updateReferralActivity", [toString(aI.caller), eH], nil)
790- if ((eV == eV))
791- then $Tuple2(eS, unit)
790+ let eX = eB(aI, aY)
791+ let eT = eX._1
792+ let eI = eX._2
793+ let eW = invoke(ax, "updateReferralActivity", [toString(aI.caller), eI], nil)
794+ if ((eW == eW))
795+ then $Tuple2(eT, unit)
792796 else throw("Strict value is not equal to itself.")
793797 }
794798
795799
796800
797801 @Callable(aI)
798-func increaseLock (eX) = {
799- let eB = aw()
800- let eC = eB[aq]
801- let az = fromBase58String(eC)
802- let aB = parseIntValue(eB[as])
803- let aC = parseIntValue(eB[at])
804- let eD = cB(aI, az)
805- let dg = toString(aI.caller)
806- let ej = aT(dg)
807- let ek = ej[aL]
808- let eY = parseIntValue(ej[aM])
809- let bW = parseIntValue(ej[aN])
810- let eZ = parseIntValue(ej[aO])
811- let fa = (bW + eZ)
812- let fb = max([(fa - height), 0])
813- let fc = (eY + eD)
814- let fd = (fb + eX)
815- if ((0 > eX))
802+func increaseLock (eY) = {
803+ let eC = aw()
804+ let eD = eC[aq]
805+ let az = fromBase58String(eD)
806+ let aB = parseIntValue(eC[as])
807+ let aC = parseIntValue(eC[at])
808+ let eE = cC(aI, az)
809+ let dh = toString(aI.caller)
810+ let ek = aT(dh)
811+ let el = ek[aL]
812+ let eZ = parseIntValue(ek[aM])
813+ let bX = parseIntValue(ek[aN])
814+ let fa = parseIntValue(ek[aO])
815+ let fb = (bX + fa)
816+ let fc = max([(fb - height), 0])
817+ let fd = (eZ + eE)
818+ let fe = (fc + eY)
819+ if ((0 > eY))
816820 then throw("duration is less then zero")
817- else if ((aB > fd))
821+ else if ((aB > fe))
818822 then throw(("lockDurationNew is less then minLockDuration=" + toString(aB)))
819- else if ((fd > aC))
823+ else if ((fe > aC))
820824 then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aC)))
821825 else {
822- let eG = fraction(fd, c, aC)
823- let eH = fraction(fc, eG, c)
824- let eV = invoke(ax, "updateReferralActivity", [toString(aI.caller), eH], nil)
825- if ((eV == eV))
826+ let eH = fraction(fe, c, aC)
827+ let eI = fraction(fd, eH, c)
828+ let eW = invoke(ax, "updateReferralActivity", [toString(aI.caller), eI], nil)
829+ if ((eW == eW))
826830 then {
827- let fe = height
828- let eI = q(invoke(ax, "calcGwxParamsREADONLY", [eH, fe, fd], nil))
829- let bX = t(eI[0])
830- let bY = t(eI[1])
831- let bn = toString(t(eI[2]))
832- let ff = cJ(dg)
833- let fg = (eH - ff)
834- if ((0 > fg))
835- then throw(("gwxDiff is less then 0: " + toString(fg)))
831+ let ff = height
832+ let eJ = q(invoke(ax, "calcGwxParamsREADONLY", [eI, ff, fe], nil))
833+ let bY = t(eJ[0])
834+ let bZ = t(eJ[1])
835+ let bn = toString(t(eJ[2]))
836+ let fg = cK(dh)
837+ let fh = (eI - fg)
838+ if ((0 > fh))
839+ then throw(("gwxDiff is less then 0: " + toString(fh)))
836840 else {
837- let bQ = bK(false)
838- let fh = bK(true)
839- (((ct(dg, ek, fc, fe, fd, bX, bY, bn) ++ cb(eD, eX, 0, 0)) :+ bT("lock", dg, eD, bW, fd, bX, bY, aI)) ++ [IntegerEntry(bA(), (bQ + fg))])
841+ let bR = bL(false)
842+ let fi = bL(true)
843+ (((cu(dh, el, fd, ff, fe, bY, bZ, bn) ++ cc(eE, eY, 0, 0)) :+ bU("lock", dh, eE, bX, fe, bY, bZ, aI)) ++ [IntegerEntry(bA(), (bR + fh))])
840844 }
841845 }
842846 else throw("Strict value is not equal to itself.")
843847 }
844848 }
845849
846850
847851
848852 @Callable(aI)
849-func claimWxBoost (cR,dg) = if ((bE != aI.caller))
853+func claimWxBoost (cS,dh) = if ((bE != aI.caller))
850854 then throw("permissions denied")
851855 else {
852- let fi = eg(cR, dg, false)
853- let fj = fi._1
854- let ey = fi._2
855- let ez = fi._3
856- $Tuple2(ey, [fj])
856+ let fj = eh(cS, dh, false)
857+ let fk = fj._1
858+ let ez = fj._2
859+ let eA = fj._3
860+ $Tuple2(ez, [fk])
857861 }
858862
859863
860864
861865 @Callable(aI)
862-func claimWxBoostREADONLY (cR,dg) = {
863- let fk = eg(cR, dg, true)
864- let fj = fk._1
865- let ey = fk._2
866- let ez = fk._3
867- $Tuple2(nil, [fj, ez])
866+func claimWxBoostREADONLY (cS,dh) = {
867+ let fl = eh(cS, dh, true)
868+ let fk = fl._1
869+ let ez = fl._2
870+ let eA = fl._3
871+ $Tuple2(nil, [fk, eA])
868872 }
869873
870874
871875
872876 @Callable(aI)
873877 func unlock (aS) = {
874- let ej = aT(aS)
875- let ek = ej[aL]
876- let eY = parseIntValue(ej[aM])
877- let bW = parseIntValue(ej[aN])
878- let eZ = parseIntValue(ej[aO])
879- let fa = (bW + eZ)
880- let eB = aw()
881- let az = fromBase58String(eB[aq])
882- if ((fa >= height))
883- then throw((("wait " + toString(fa)) + " to unlock"))
884- else if ((0 >= eY))
878+ let ek = aT(aS)
879+ let el = ek[aL]
880+ let eZ = parseIntValue(ek[aM])
881+ let bX = parseIntValue(ek[aN])
882+ let fa = parseIntValue(ek[aO])
883+ let fb = (bX + fa)
884+ let eC = aw()
885+ let az = fromBase58String(eC[aq])
886+ if ((fb >= height))
887+ then throw((("wait " + toString(fb)) + " to unlock"))
888+ else if ((0 >= eZ))
885889 then throw("nothing to unlock")
886890 else {
887891 let bn = valueOrElse(getInteger(ax, ao()), 0)
888- (((ct(aS, ek, 0, bW, eZ, 0, 0, toString(bn)) ++ cb(-(eY), 0, 0, -1)) :+ bT("unlock", aS, eY, bW, eZ, 0, 0, aI)) :+ ScriptTransfer(addressFromStringValue(aS), eY, az))
892+ (((cu(aS, el, 0, bX, fa, 0, 0, toString(bn)) ++ cc(-(eZ), 0, 0, -1)) :+ bU("unlock", aS, eZ, bX, fa, 0, 0, aI)) :+ ScriptTransfer(addressFromStringValue(aS), eZ, az))
889893 }
890894 }
891895
892896
893897
894898 @Callable(aI)
895899 func gwxUserInfoREADONLY (aS) = {
896- let bc = cJ(aS)
900+ let bc = cK(aS)
897901 $Tuple2(nil, [bc])
898902 }
899903
900904
901905
902906 @Callable(aI)
903-func getUserGwxAmountAtHeightREADONLY (aS,cF) = {
904- let bc = cE(aS, cF)
907+func userMaxDurationREADONLY (dh) = {
908+ let eC = aw()
909+ let aC = parseIntValue(eC[at])
910+ let ej = getString(this, aR(dh))
911+ if ((ej == unit))
912+ then $Tuple2(nil, $Tuple2("lock", aC))
913+ else {
914+ let ek = split(value(ej), a)
915+ let bX = parseIntValue(ek[aN])
916+ let fa = parseIntValue(ek[aO])
917+ let fb = (bX + fa)
918+ let fc = max([(fb - height), 0])
919+ let fm = (aC - fc)
920+ $Tuple2(nil, $Tuple2("increaseLock", fm))
921+ }
922+ }
923+
924+
925+
926+@Callable(aI)
927+func getUserGwxAmountAtHeightREADONLY (aS,cG) = {
928+ let bc = cF(aS, cG)
905929 $Tuple2(nil, bc)
906930 }
907931
908932
909933
910934 @Callable(aI)
911-func getTotalCachedGwxREADONLY () = $Tuple2(nil, bK(true))
935+func getTotalCachedGwxREADONLY () = $Tuple2(nil, bL(true))
912936
913937
914938
915939 @Callable(aI)
916940 func onBoostEmissionUpdate () = {
917- let eO = if ((aI.caller == bD))
941+ let eP = if ((aI.caller == bD))
918942 then true
919943 else aH(aI)
920- if ((eO == eO))
921- then dW()
944+ if ((eP == eP))
945+ then dX()
922946 else throw("Strict value is not equal to itself.")
923947 }
924948
925949
926950
927951 @Callable(aI)
928-func onStakedVoteUpdate (cR,dg,dD) = {
929- let eO = if ((aI.caller == bE))
952+func onStakedVoteUpdate (cS,dh,dE) = {
953+ let eP = if ((aI.caller == bE))
930954 then true
931955 else aH(aI)
932- if ((eO == eO))
956+ if ((eP == eP))
933957 then {
934- let dF = dC(cR, dg, dD)
935- $Tuple2(dF, unit)
958+ let dG = dD(cS, dh, dE)
959+ $Tuple2(dG, unit)
936960 }
937961 else throw("Strict value is not equal to itself.")
938962 }
939963
940964
941965
942966 @Callable(aI)
943-func getVotingResultStakedREADONLY (cR) = $Tuple2(nil, do(cR))
967+func getVotingResultStakedREADONLY (cS) = $Tuple2(nil, dp(cS))
944968
945969
946970
947971 @Callable(aI)
948-func getUserVoteFinalizedREADONLY (cR,dg) = $Tuple2(nil, dh(cR, dg))
972+func getUserVoteFinalizedREADONLY (cS,dh) = $Tuple2(nil, di(cS, dh))
949973
950974
951975
952976 @Callable(aI)
953-func setManager (fl) = {
954- let eO = aH(aI)
955- if ((eO == eO))
977+func setManager (fn) = {
978+ let eP = aH(aI)
979+ if ((eP == eP))
956980 then {
957- let fm = fromBase58String(fl)
958- if ((fm == fm))
959- then [StringEntry(ag(), fl)]
981+ let fo = fromBase58String(fn)
982+ if ((fo == fo))
983+ then [StringEntry(ag(), fn)]
960984 else throw("Strict value is not equal to itself.")
961985 }
962986 else throw("Strict value is not equal to itself.")
963987 }
964988
965989
966990
967991 @Callable(aI)
968992 func confirmManager () = {
969- let fn = aG()
970- let fo = if (isDefined(fn))
993+ let fp = aG()
994+ let fq = if (isDefined(fp))
971995 then true
972996 else throw("No pending manager")
973- if ((fo == fo))
997+ if ((fq == fq))
974998 then {
975- let fp = if ((aI.callerPublicKey == value(fn)))
999+ let fr = if ((aI.callerPublicKey == value(fp)))
9761000 then true
9771001 else throw("You are not pending manager")
978- if ((fp == fp))
979- then [StringEntry(af(), toBase58String(value(fn))), DeleteEntry(ag())]
1002+ if ((fr == fr))
1003+ then [StringEntry(af(), toBase58String(value(fp))), DeleteEntry(ag())]
9801004 else throw("Strict value is not equal to itself.")
9811005 }
9821006 else throw("Strict value is not equal to itself.")
9831007 }
9841008
9851009
986-@Verifier(fq)
987-func fr () = {
988- let fs = {
1010+@Verifier(fs)
1011+func ft () = {
1012+ let fu = {
9891013 let r = aE()
9901014 if ($isInstanceOf(r, "ByteVector"))
9911015 then {
9921016 let aK = r
9931017 aK
9941018 }
9951019 else if ($isInstanceOf(r, "Unit"))
996- then fq.senderPublicKey
1020+ then fs.senderPublicKey
9971021 else throw("Match error")
9981022 }
999- sigVerify(fq.bodyBytes, fq.proofs[0], fs)
1023+ sigVerify(fs.bodyBytes, fs.proofs[0], fu)
10001024 }
10011025

github/deemru/w8io/169f3d6 
258.84 ms