tx · 33pdhw7o2wWmTnNpXq7KvjLEUqoAWciq3H8wWt9Gcirv

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02800000 Waves

2023.03.14 15:36 [2489721] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "33pdhw7o2wWmTnNpXq7KvjLEUqoAWciq3H8wWt9Gcirv", "fee": 2800000, "feeAssetId": null, "timestamp": 1678797457487, "version": 2, "chainId": 84, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "37Cm8kSjpCf7tVn6noQu4LdxKGX1qrCybuX73dJkAg1QqX1eueEPpGgACoFuEvdhKZDMn849CiM2AFdbXonz2ic4" ], "script": "base64:BgLFLwgCEggKBggIAQEBCBIFCgMBCAISAwoBARIDCgEBEgQKAggIEgQKAggIEgMKAQgSAwoBCBIDCgEIEgQKAggBEgASABIFCgMICAQSAwoBCBIECgIICBIDCgEIEgAiA1NFUCIGU0NBTEU4IgVNVUxUOCIOUE9PTFdFSUdIVE1VTFQiB3dyYXBFcnIiA21zZyIIdGhyb3dFcnIiBHN0cmYiB2FkZHJlc3MiA2tleSIDaW96IgNpb2QiCmRlZmF1bHRWYWwiA2lvZiIDYWJzIgN2YWwiA2FhbCIHJG1hdGNoMCIKdmFsQW55THlzdCICYWkiBnZhbEludCIba2V5UmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzIh5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwiFmtleVJlZmVycmFsUHJvZ3JhbU5hbWUiGnJlZmVycmFsUHJvZ3JhbU5hbWVEZWZhdWx0IhNyZWZlcnJhbFByb2dyYW1OYW1lIhFrZXlGYWN0b3J5QWRkcmVzcyIYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwIhlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwIhRJZHhGYWN0b3J5Q2ZnSWRvRGFwcCIVSWR4RmFjdG9yeUNmZ1RlYW1EYXBwIhlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwIhVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAiGUlkeEZhY3RvcnlDZmdTbGlwcGFnZURhcHAiFElkeEZhY3RvcnlDZmdEYW9EYXBwIhpJZHhGYWN0b3J5Q2ZnTWFya2V0aW5nRGFwcCIaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAiFklkeEZhY3RvcnlDZmdCaXJkc0RhcHAiDWtleUZhY3RvcnlDZmciGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nIgpscEFzc2V0U3RyIhBrZXlGYWN0b3J5THBMaXN0IiZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcyIUa2V5RmFjdG9yeVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIba2V5RmFjdG9yeVBvb2xXZWlnaHRIaXN0b3J5Igtwb29sQWRkcmVzcyIDbnVtIhhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwiCnJlYWRMcExpc3QiFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIgdmYWN0b3J5IhhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwiCmZhY3RvcnlDZmciGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbCIXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwiGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwiE2tleU1hbmFnZXJQdWJsaWNLZXkiGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5Ih5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQiIWtleUVtaXNzaW9uUmF0ZVBlckJsb2NrTWF4Q3VycmVudCIVa2V5RW1pc3Npb25TdGFydEJsb2NrIh1rZXlCb29zdGluZ1YyTGFzdFVwZGF0ZUhlaWdodCIVa2V5Qm9vc3RpbmdWMkludGVncmFsIhtrZXlFbWlzc2lvbkR1cmF0aW9uSW5CbG9ja3MiE2tleUVtaXNzaW9uRW5kQmxvY2siDWtleU5leHRQZXJpb2QiH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQiDUlkeENmZ0Fzc2V0SWQiE0lkeENmZ01pbkxvY2tBbW91bnQiFUlkeENmZ01pbkxvY2tEdXJhdGlvbiIVSWR4Q2ZnTWF4TG9ja0R1cmF0aW9uIhJJZHhDZmdNYXRoQ29udHJhY3QiCWtleUNvbmZpZyIVcmVhZENvbmZpZ0FycmF5T3JGYWlsIgxtYXRoQ29udHJhY3QiDWZvcm1hdENvbmZpZ1MiB2Fzc2V0SWQiDW1pbkxvY2tBbW91bnQiD21pbkxvY2tEdXJhdGlvbiIPbWF4TG9ja0R1cmF0aW9uIgxmb3JtYXRDb25maWciFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0IgttdXN0TWFuYWdlciIBaSICcGQiAnBrIg5JZHhMb2NrVXNlck51bSINSWR4TG9ja0Ftb3VudCIMSWR4TG9ja1N0YXJ0Ig9JZHhMb2NrRHVyYXRpb24iDUlkeExvY2tQYXJhbUsiDUlkeExvY2tQYXJhbUIiE2tleUxvY2tQYXJhbXNSZWNvcmQiC3VzZXJBZGRyZXNzIhpyZWFkTG9ja1BhcmFtc1JlY29yZE9yRmFpbCIXZm9ybWF0TG9ja1BhcmFtc1JlY29yZFMiB3VzZXJOdW0iBmFtb3VudCIFc3RhcnQiCGR1cmF0aW9uIgZwYXJhbUsiBnBhcmFtQiIQbGFzdFVwZFRpbWVzdGFtcCIJZ3d4QW1vdW50IhZmb3JtYXRMb2NrUGFyYW1zUmVjb3JkIg5rZXlOZXh0VXNlck51bSISa2V5VXNlcjJOdW1NYXBwaW5nIhJrZXlOdW0yVXNlck1hcHBpbmciFmtleUxvY2tQYXJhbVVzZXJBbW91bnQiFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2siFGtleUxvY2tQYXJhbUR1cmF0aW9uIg1rZXlMb2NrUGFyYW1LIg1rZXlMb2NrUGFyYW1CIhVrZXlMb2NrUGFyYW1CeVBlcmlvZEsiBnBlcmlvZCIVa2V5TG9ja1BhcmFtQnlQZXJpb2RCIhdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudCIga2V5U3RhdHNMb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MiEmtleVN0YXRzTG9ja3NDb3VudCISa2V5U3RhdHNVc2Vyc0NvdW50IiBrZXlVc2VyQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTCIia2V5VXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTCIJbHBBc3NldElkIhdrZXlVc2VyTWF4Qm9vc3RJTlRFR1JBTCIYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMIiFrZXlVc2VyQm9vc3RBdmFsYWlibGVUb0NsYWltVG90YWwiE2tleVVzZXJCb29zdENsYWltZWQiEWtleVRvdGFsQ2FjaGVkR3d4IhtrZXlUb3RhbENhY2hlZEd3eENvcnJlY3RpdmUiD2ZhY3RvcnlDb250cmFjdCIQZW1pc3Npb25Db250cmFjdCIPc3Rha2luZ0NvbnRyYWN0IhFnd3hSZXdhcmRDb250cmFjdCIWbHBTdGFraW5nUG9vbHNDb250cmFjdCIZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdCIWdm90aW5nRW1pc3Npb25Db250cmFjdCIKYm9vc3RDb2VmZiIBQCIRZ2V0VG90YWxDYWNoZWRHd3giB2NvcnJlY3QiEWtleUN1cnJlbnRFcG9jaFVpIg5jdXJyZW50RXBvY2hVaSIOa2V5VGFyZ2V0RXBvY2giEXRhcmdldEVwb2NoT3B0aW9uIhF0b3RhbENhY2hlZEd3eFJhdyIVaXNDb3JyZWN0aW9uQWN0aXZhdGVkIgpjb3JyZWN0aXZlIgxIaXN0b3J5RW50cnkiBHR5cGUiBHVzZXIiCWxvY2tTdGFydCIBayIBYiIKaGlzdG9yeUtFWSILaGlzdG9yeURBVEEiClN0YXRzRW50cnkiDnRvdGFsTG9ja2VkSW5jIgtkdXJhdGlvbkluYyIMbG9ja0NvdW50SW5jIg11c2Vyc0NvdW50SW5jIhtsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3NLRVkiDWxvY2tzQ291bnRLRVkiDXVzZXJzQ291bnRLRVkiDnRvdGFsQW1vdW50S0VZIhhsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MiCmxvY2tzQ291bnQiCnVzZXJzQ291bnQiC3RvdGFsQW1vdW50Ig1jYWxjR3d4QW1vdW50IgRrUmF3IgRiUmF3IgFoIgVTQ0FMRSIPTG9ja1BhcmFtc0VudHJ5Ig11c2VyQW1vdW50S0VZIg1zdGFydEJsb2NrS0VZIgtkdXJhdGlvbktFWSIEa0tFWSIEYktFWSIMa0J5UGVyaW9kS0VZIgxiQnlQZXJpb2RLRVkiImV4dHJhY3RPcHRpb25hbFBheW1lbnRBbW91bnRPckZhaWwiD2V4cGVjdGVkQXNzZXRJZCIDcG10IhljYWxjVXNlckd3eEFtb3VudEF0SGVpZ2h0Igx0YXJnZXRIZWlnaHQiBUVNUFRZIhJ1c2VyMk51bU1hcHBpbmdLRVkiDWd3eEFtb3VudENhbGMiFGNhbGNDdXJyZW50R3d4QW1vdW50IhpnZXRWb3RpbmdFbWlzc2lvbkVwb2NoSW5mbyINJHQwMTUxNTAxNTQzOCISbGFzdEZpbmFsaXplZEVwb2NoIhVrZXlTdGFydEhlaWdodEJ5RXBvY2giBWVwb2NoIhdjdXJyZW50RXBvY2hTdGFydEhlaWdodCIYZ2V0UG9vbEFzc2V0c0J5THBBc3NldElkIgxscEFzc2V0SWRTdHIiEGlkeEFtb3VudEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIHcG9vbENmZyINYW1vdW50QXNzZXRJZCIMcHJpY2VBc3NldElkIgdrZXlWb3RlIhVrZXlWb3RpbmdSZXN1bHRTdGFrZWQiHWtleVZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsIiVrZXlWb3RpbmdSZXN1bHRTdGFrZWRMYXN0VXBkYXRlSGVpZ2h0IiFrZXlWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbExhc3QiFWtleVZvdGVTdGFrZWRJbnRlZ3JhbCIda2V5Vm90ZVN0YWtlZExhc3RVcGRhdGVIZWlnaHQiGWtleVZvdGVTdGFrZWRJbnRlZ3JhbExhc3QiD2tleVN0YWtlZEJ5VXNlciIOdXNlckFkZHJlc3NTdHIiFGdldFVzZXJWb3RlRmluYWxpemVkIg0kdDAxODIyODE4MzA4Ig0kdDAxODMxMTE4Mzg2Igt1c2VyVm90ZUtleSIIdXNlclZvdGUiEWdldFVzZXJWb3RlU3Rha2VkIgxzdGFrZWRCeVVzZXIiFWdldFZvdGluZ1Jlc3VsdFN0YWtlZCINJHQwMTg5MzAxOTAxMCIXdm90aW5nUmVzdWx0U3Rha2VkU3RhcnQiEnZvdGluZ1Jlc3VsdFN0YWtlZCIhcmVmcmVzaFZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsIg9zdGFrZWRWb3RlRGVsdGEiDSR0MDE5NTMxMTk2MTEiFXZvdGluZ1Jlc3VsdFN0YWtlZE5ldyIddm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxLZXkiHnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsUHJldiIfdm90aW5nUmVzdWx0TGFzdFVwZGF0ZUhlaWdodEtleSIidm90aW5nUmVzdWx0U3Rha2VkTGFzdFVwZGF0ZUhlaWdodCIcdm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxEaCIadm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWwiGXJlZnJlc2hWb3RlU3Rha2VkSW50ZWdyYWwiBGVkZ2UiDSR0MDIwODExMjA4OTEiB2FjdGlvbnMiDSR0MDIxNDk2MjE2MTUiE3ZvdGluZ1Jlc3VsdEFjdGlvbnMiDnVzZXJWb3RlU3Rha2VkIhl1c2VyVm90ZVN0YWtlZEludGVncmFsS2V5Ihp1c2VyVm90ZVN0YWtlZEludGVncmFsUHJldiIhdXNlclZvdGVTdGFrZWRMYXN0VXBkYXRlSGVpZ2h0S2V5Ih51c2VyVm90ZVN0YWtlZExhc3RVcGRhdGVIZWlnaHQiGHVzZXJWb3RlU3Rha2VkSW50ZWdyYWxEaCIWdXNlclZvdGVTdGFrZWRJbnRlZ3JhbCILdm90ZUFjdGlvbnMiG2dldFN0YWtlZFZvdGVzSW50ZWdyYWxzRGlmZiINJHQwMjI2MDcyMjY4NyIadXNlclZvdGVTdGFrZWRJbnRlZ3JhbExhc3QiHnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsTGFzdCIadXNlclZvdGVTdGFrZWRJbnRlZ3JhbERpZmYiHnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsRGlmZiIccmVmcmVzaEJvb3N0RW1pc3Npb25JbnRlZ3JhbCISd3hFbWlzc2lvblBlckJsb2NrIiBib29zdGluZ1YyTGFzdFVwZGF0ZUhlaWdodE9wdGlvbiIYYm9vc3RpbmdWMkluZ2VyZ2FsT3B0aW9uIgtlbWlzc2lvbkVuZCICZGgiEGxhc3RVcGRhdGVIZWlnaHQiFWJvb3N0RW1pc3Npb25QZXJCbG9jayIZYm9vc3RFbWlzc2lvbkludGVncmFsUHJldiIVYm9vc3RFbWlzc2lvbkludGVncmFsIhRpbnRlcm5hbENsYWltV3hCb29zdCIIcmVhZE9ubHkiEHVzZXJSZWNvcmRPcHRpb24iD3VzZXJSZWNvcmRBcnJheSIKdXNlck51bVN0ciIIRU1QVFlTVFIiCnBvb2xXZWlnaHQiDnBvb2xBZGRyZXNzU3RyIiJ1c2VyTHBCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZIiB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWSIddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwiGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwiDSR0MDI3MjEyMjczNTEiG3N0YWtlZFZvdGVzSW50ZWdyYWxzQWN0aW9ucyIUdXNlclZvdGVJbnRlZ3JhbERpZmYiFnRvdGFsVm90ZXNJbnRlZ3JhbERpZmYiHXBvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsIiF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXciCWRhdGFTdGF0ZSIFZGVidWciC2xvY2tBY3Rpb25zIghjZmdBcnJheSIKYXNzZXRJZFN0ciIJcG10QW1vdW50Ig5uZXh0VXNlck51bUtFWSIOdXNlcklzRXhpc3RpbmciB2NvZWZmWDgiDmdXeEFtb3VudFN0YXJ0IhNnV3hQYXJhbXNSZXN1bHRMaXN0IgNhcnIiEWZhY3RvcnlBZGRyZXNzU3RyIg5sb2NrQXNzZXRJZFN0ciILbWluRHVyYXRpb24iC21heER1cmF0aW9uIgtjaGVja0NhbGxlciIPcmVmZXJyZXJBZGRyZXNzIglzaWduYXR1cmUiDSR0MDMxOTQxMzIwMDYiEWxvY2tBY3Rpb25zUmVzdWx0Ig9yZWZlcnJhbEFkZHJlc3MiBnJlZkludiIRdXBkYXRlUmVmQWN0aXZpdHkiDSR0MDMyNDY0MzI1MjkiDWRlbHRhRHVyYXRpb24iCnVzZXJBbW91bnQiDGxvY2tEdXJhdGlvbiIHbG9ja0VuZCIRcmVtYWluaW5nRHVyYXRpb24iDXVzZXJBbW91bnROZXciD2xvY2tEdXJhdGlvbk5ldyIMbG9ja1N0YXJ0TmV3IgtjdXJyVXNlckd3eCIHZ3d4RGlmZiIXdG90YWxDYWNoZWRHd3hDb3JyZWN0ZWQiDSR0MDM1NjE2MzU3MTgiEnVzZXJCb29zdEF2YWlsYWJsZSINJHQwMzU4NTAzNTk1MSIQbWF4RGVsdGFEdXJhdGlvbiIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXmIAQABYQICX18AAWIACAABYwCAwtcvAAFkBQFjAQFlAQFmCQC5CQIJAMwIAgIOYm9vc3RpbmcucmlkZToJAMwIAgUBZgUDbmlsAgEgAQFnAQFmCQACAQkBAWUBBQFmAQFoAgFpAWoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQFpBQFqCQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQFqAg8gaXMgbm90IGRlZmluZWQBAWsCAWkBagkBC3ZhbHVlT3JFbHNlAgkAmggCBQFpBQFqAAABAWwDAWkBagFtCQELdmFsdWVPckVsc2UCCQCaCAIFAWkFAWoFAW0BAW4CAWkBagkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAWkFAWoJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAWoCDyBpcyBub3QgZGVmaW5lZAEBbwEBcAMJAGYCAAAFAXAJAQEtAQUBcAUBcAEBcQEBcAQBcgUBcAMJAAECBQFyAglMaXN0W0FueV0EAXMFAXIFAXMJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BAXQBAXAEAXIFAXADCQABAgUBcgIDSW50BAF1BQFyBQF1CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQF2AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIGY29uZmlnCQDMCAICGHJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwUDbmlsBQFhAAF3CQERQGV4dHJOYXRpdmUoMTA2MikBCQEBaAIFBHRoaXMJAQF2AAABeAkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgILcHJvZ3JhbU5hbWUFA25pbAUBYQABeQIGd3hsb2NrAAF6CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAXgFAXkBAUEAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzAAFCAAEAAUMAAgABRAADAAFFAAQAAUYABQABRwAGAAFIAAcAAUkACAABSgAJAAFLAAoAAUwACwEBTQACESVzX19mYWN0b3J5Q29uZmlnAQFOAQFPCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAU8JAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWEBAVAAAhAlc19fbHBUb2tlbnNMaXN0AQFRAQFPCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAU8JAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWEBAVIBAVMJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUBUwUDbmlsBQFhAQFUAgFVAVYJAKwCAgkArAICCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUBVQICX18JAKQDAQUBVgEBVwAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQFoAgUEdGhpcwkBAUEAAQFYAAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIJAQFXAAkBAVAAAgAFAWEBAVkBAVoJALUJAgkBAWgCBQFaCQEBTQAFAWEBAmFhAQJhYgkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhYgUBQwECYWMBAmFiCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFiBQFGAQJhZAECYWIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWIFAUIBAmFlAQJhYgkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhYgUBSwECYWYAAhQlc19fbWFuYWdlclB1YmxpY0tleQECYWcAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAmFoAAIbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50AQJhaQACHiVzJXNfX3JhdGVQZXJCbG9ja01heF9fY3VycmVudAECYWoAAholcyVzX19lbWlzc2lvbl9fc3RhcnRCbG9jawECYWsAAhwlcyVzX19ib29zdGluZ1YyX19zdGFydEJsb2NrAQJhbAACGiVzJXNfX2Jvb3N0aW5nVjJfX2ludGVncmFsAQJhbQACGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgECYW4AAhglcyVzX19lbWlzc2lvbl9fZW5kQmxvY2sBAmFvAAIOJXNfX25leHRQZXJpb2QBAmFwAAIoJXMlc19fZ3d4UmV3YXJkRW1pc3Npb25QYXJ0X19zdGFydEhlaWdodAACYXEAAQACYXIAAgACYXMAAwACYXQABAACYXUABQECYXYAAgolc19fY29uZmlnAQJhdwAJALUJAgkBAWgCBQR0aGlzCQECYXYABQFhAAJheAkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCCQECYXcABQJhdQECYXkFAmF6AmFBAmFCAmFDAmF4CQC5CQIJAMwIAgIIJXMlZCVkJWQJAMwIAgUCYXoJAMwIAgUCYUEJAMwIAgUCYUIJAMwIAgUCYUMJAMwIAgUCYXgFA25pbAUBYQECYUQFAmF6AmFBAmFCAmFDAmF4CQECYXkFBQJhegkApAMBBQJhQQkApAMBBQJhQgkApAMBBQJhQwUCYXgBAmFFAAQBcgkAoggBCQECYWYAAwkAAQIFAXICBlN0cmluZwQCYUYFAXIJANkEAQUCYUYDCQABAgUBcgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJhRwAEAXIJAKIIAQkBAmFnAAMJAAECBQFyAgZTdHJpbmcEAmFGBQFyCQDZBAEFAmFGAwkAAQIFAXICBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECYUgBAmFJBAJhSgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAFyCQECYUUAAwkAAQIFAXICCkJ5dGVWZWN0b3IEAmFLBQFyAwkAAAIIBQJhSQ9jYWxsZXJQdWJsaWNLZXkFAmFLBgUCYUoDCQABAgUBcgIEVW5pdAMJAAACCAUCYUkGY2FsbGVyBQR0aGlzBgUCYUoJAAIBAgtNYXRjaCBlcnJvcgACYUwAAQACYU0AAgACYU4AAwACYU8ABAACYVAABQACYVEABgECYVIBAmFTCQC5CQIJAMwIAgIKJXMlc19fbG9jawkAzAgCBQJhUwUDbmlsBQFhAQJhVAECYVMJALUJAgkBAWgCBQR0aGlzCQECYVIBBQJhUwUBYQECYVUIAmFWAmFXAmFYAmFZAmFaAmJhAmJiAmJjCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCBQJhVgkAzAgCBQJhVwkAzAgCBQJhWAkAzAgCBQJhWQkAzAgCBQJhWgkAzAgCBQJiYQkAzAgCBQJiYgkAzAgCBQJiYwUDbmlsBQFhAQJiZAcCYVYCYVcCYVgCYVkCYVoCYmECYmMJAQJhVQgFAmFWCQCkAwEFAmFXCQCkAwEFAmFYCQCkAwEFAmFZCQCkAwEFAmFaCQCkAwEFAmJhCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQCkAwEFAmJjAQJiZQACDyVzX19uZXh0VXNlck51bQECYmYBAmFTCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX191c2VyMm51bQkAzAgCBQJhUwUDbmlsBQFhAQJiZwEBVgkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fbnVtMnVzZXIJAMwIAgUBVgUDbmlsBQFhAQJiaAECYVYJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFWCQDMCAICBmFtb3VudAUDbmlsBQFhAQJiaQECYVYJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFWCQDMCAICBXN0YXJ0BQNuaWwFAWEBAmJqAQJhVgkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYVYJAMwIAgIIZHVyYXRpb24FA25pbAUBYQECYmsBAmFWCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhVgkAzAgCAgFrBQNuaWwFAWEBAmJsAQJhVgkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYVYJAMwIAgIBYgUDbmlsBQFhAQJibQICYVYCYm4JALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCBQJhVgkAzAgCAgFrCQDMCAIFAmJuBQNuaWwFAWEBAmJvAgJhVgJibgkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIFAmFWCQDMCAICAWIJAMwIAgUCYm4FA25pbAUBYQECYnAAAh4lcyVzX19zdGF0c19fYWN0aXZlVG90YWxMb2NrZWQBAmJxAAIlJXMlc19fc3RhdHNfX2xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwECYnIAAhclcyVzX19zdGF0c19fbG9ja3NDb3VudAECYnMAAh0lcyVzX19zdGF0c19fYWN0aXZlVXNlcnNDb3VudAECYnQBAmFWCQC5CQIJAMwIAgIgJXMlZF9fdXNlckJvb3N0RW1pc3Npb25MYXN0SW50VjIJAMwIAgUCYVYFA25pbAUBYQECYnUCAmFWAmJ2CQC5CQIJAMwIAgIgJXMlZF9fdXNlckJvb3N0RW1pc3Npb25MYXN0SW50VjIJAMwIAgUCYVYJAMwIAgUCYnYFA25pbAUBYQECYncBAmFWCQC5CQIJAMwIAgIRJXMlZF9fbWF4Qm9vc3RJbnQJAMwIAgUCYVYFA25pbAUBYQECYngAAhglcyVzX19tYXhCb29zdEludF9fdG90YWwBAmJ5AQJhVgkAuQkCCQDMCAICJCVzJWRfX3VzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbAkAzAgCBQJhVgUDbmlsBQFhAQJiegECYVYJALkJAgkAzAgCAhYlcyVkX191c2VyQm9vc3RDbGFpbWVkCQDMCAIFAmFWBQNuaWwFAWEBAmJBAAIWJXMlc19fZ3d4Q2FjaGVkX190b3RhbAECYkIAAhwlc19fZ3d4Q2FjaGVkVG90YWxDb3JyZWN0aXZlAAJiQwkBAVcAAAJhYgkBAVkBBQJiQwACYkQJAQJhYwEFAmFiAAJiRQkBAmFkAQUCYWIAAmJGCQECYWUBBQJhYgACYkcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkAuQkCCQDMCAICAiVzCQDMCAICFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QFA25pbAUBYQkBAWUBAi5scF9zdGFraW5nX3Bvb2xzIGNvbnRyYWN0IGFkZHJlc3MgaXMgdW5kZWZpbmVkCQEBZQECKWludmFsaWQgbHBfc3Rha2luZ19wb29scyBjb250cmFjdCBhZGRyZXNzAAJiSAkAuQkCCQDMCAICAiVzCQDMCAICFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QFA25pbAUBYQACYkkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFAmJDBQJiSAACYkoKAAJiSwkA/AcEBQJiRAIVZ2V0Qm9vc3RDb2VmZlJFQURPTkxZBQNuaWwFA25pbAMJAAECBQJiSwIDSW50BQJiSwkAAgEJAKwCAgkAAwEFAmJLAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBAmJMAQJiTQQCYk4JALkJAgkAzAgCAgIlcwkAzAgCAg5jdXJyZW50RXBvY2hVaQUDbmlsBQFhBAJiTwkBEUBleHRyTmF0aXZlKDEwNTApAgUCYkkFAmJOBAJiUAkAuQkCCQDMCAICBCVzJXMJAMwIAgIpdG90YWxDYWNoZWRHd3hDb3JyZWN0aW9uX19hY3RpdmF0aW9uRXBvY2gFA25pbAUBYQQCYlEJAJoIAgUEdGhpcwUCYlAEAmJSCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiQQAAAAQCYlMDCQEJaXNEZWZpbmVkAQUCYlEJAGcCBQJiTwkBBXZhbHVlAQUCYlEHBAJiVAMDBQJiUwUCYk0HCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiQgAAAAAACQCWAwEJAMwIAgAACQDMCAIJAGQCBQJiUgUCYlQFA25pbAECYlUIAmJWAmJXAmFXAmJYAmFZAmJZAmJaAmFJBAJjYQkAuQkCCQDMCAICESVzJXMlcyVzX19oaXN0b3J5CQDMCAIFAmJWCQDMCAIFAmJXCQDMCAIJANgEAQgFAmFJDXRyYW5zYWN0aW9uSWQFA25pbAUBYQQCY2IJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQJhVwkAzAgCCQCkAwEFAmJYCQDMCAIJAKQDAQUCYVkJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJaBQNuaWwFAWEJAQtTdHJpbmdFbnRyeQIFAmNhBQJjYgECY2MEAmNkAmNlAmNmAmNnBAJjaAkBAmJxAAQCY2kJAQJicgAEAmNqCQECYnMABAJjawkBAmJwAAQCY2wJAQFrAgUEdGhpcwUCY2gEAmNtCQEBawIFBHRoaXMFAmNpBAJjbgkBAWsCBQR0aGlzBQJjagQCY28JAQFrAgUEdGhpcwUCY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNoCQBkAgUCY2wFAmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjaQkAZAIFAmNtBQJjZgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY2oJAGQCBQJjbgUCY2cJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNrCQBkAgUCY28FAmNkBQNuaWwBAmNwAwJjcQJjcgJjcwQCY3QA6AcJAGkCCQBkAgkAaAIFAmNxBQJjcwUCY3IFAmN0AQJjdQgCYVMCYVYCYVcCYVgCYVkCYlkCYloCYm4EAmN2CQECYmgBBQJhVgQCY3cJAQJiaQEFAmFWBAJjeAkBAmJqAQUCYVYEAmN5CQECYmsBBQJhVgQCY3oJAQJibAEFAmFWBAJjQQkBAmJtAgUCYVYFAmJuBAJjQgkBAmJvAgUCYVYFAmJuBAJiYwkBAmNwAwUCYlkFAmJaBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAmN2BQJhVwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3cFAmFYCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjeAUCYVkJAMwIAgkBDEludGVnZXJFbnRyeQIFAmN5BQJiWQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3oFAmJaCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjQQUCYlkJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNCBQJiWgkAzAgCCQELU3RyaW5nRW50cnkCCQECYVIBBQJhUwkBAmJkBwUCYVYFAmFXBQJhWAUCYVkFAmJZBQJiWgUCYmMFA25pbAECY0MCAmFJAmNEAwkAZgIJAJADAQgFAmFJCHBheW1lbnRzAAEJAAIBAhtvbmx5IG9uZSBwYXltZW50IGlzIGFsbG93ZWQDCQAAAgkAkAMBCAUCYUkIcGF5bWVudHMAAAAABAJjRQkAkQMCCAUCYUkIcGF5bWVudHMAAAMJAQIhPQIJAQV2YWx1ZQEIBQJjRQdhc3NldElkBQJjRAkAAgECG2ludmFsaWQgYXNzZXQgaWQgaW4gcGF5bWVudAgFAmNFBmFtb3VudAECY0YCAmFTAmNHBAJjSAIFZW1wdHkEAmNJCQECYmYBBQJhUwQCYVYJAQt2YWx1ZU9yRWxzZQIJAKIIAQUCY0kFAmNIBAJiWQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYmsBBQJhVgAABAJiWgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYmwBBQJhVgAABAJjSgkBAmNwAwUCYlkFAmJaBQJjRwQCYmMDCQBmAgAABQJjSgAABQJjSgUCYmMBAmNLAQJhUwkBAmNGAgUCYVMFBmhlaWdodAECY0wABAJiTgkAuQkCCQDMCAICAiVzCQDMCAICDmN1cnJlbnRFcG9jaFVpBQNuaWwFAWEEAmNNBAJiTwkBBXZhbHVlAQkAmggCBQJiSQUCYk4EAmNOCQBlAgUCYk8AAQMJAGYCAAAFAmNOCQEBZwECDWludmFsaWQgZXBvY2gJAJQKAgUCYk8FAmNOBAJiTwgFAmNNAl8xBAJjTggFAmNNAl8yCgECY08BAmNQCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtzdGFydEhlaWdodAkAzAgCCQCkAwEFAmNQBQNuaWwFAWEEAmNRCQEFdmFsdWUBCQCaCAIFAmJJCQECY08BBQJiTwkAlAoCBQJjTgUCY1EBAmNSAQJjUwQCY1QABAQCY1UABQQCY1YKAAJiSwkA/AcEBQJiQwIYZ2V0UG9vbENvbmZpZ0J5THBBc3NldElkCQDMCAIFAmNTBQNuaWwFA25pbAMJAAECBQJiSwIJTGlzdFtBbnldBQJiSwkAAgEJAKwCAgkAAwEFAmJLAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0EAmNXCgACYksJAJEDAgUCY1YFAmNUAwkAAQIFAmJLAgZTdHJpbmcFAmJLCQACAQkArAICCQADAQUCYksCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCY1gKAAJiSwkAkQMCBQJjVgUCY1UDCQABAgUCYksCBlN0cmluZwUCYksJAAIBCQCsAgIJAAMBBQJiSwIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQCUCgIFAmNXBQJjWAECY1kEAmNXAmNYAWkCY1AJALkJAgkAzAgCAgolcyVzJXMlcyVkCQDMCAICBHZvdGUJAMwIAgUCY1cJAMwIAgUCY1gJAMwIAgkApQgBBQFpCQDMCAIJAKQDAQUCY1AFA25pbAUBYQECY1oCAmNTAmNQCQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICEnZvdGluZ1Jlc3VsdFN0YWtlZAkAzAgCBQJjUwkAzAgCCQCkAwEFAmNQBQNuaWwFAWEBAmRhAgJjUwJjUAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAhp2b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbAkAzAgCBQJjUwkAzAgCCQCkAwEFAmNQBQNuaWwFAWEBAmRiAgJjUwJjUAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAip2b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbExhc3RVcGRhdGVIZWlnaHQJAMwIAgUCY1MJAMwIAgkApAMBBQJjUAUDbmlsBQFhAQJkYwMCY1MBaQJjUAkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICHnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsTGFzdAkAzAgCBQJjUwkAzAgCCQClCAEFAWkJAMwIAgkApAMBBQJjUAUDbmlsBQFhAQJkZAMCY1MBaQJjUAkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICEnZvdGVTdGFrZWRJbnRlZ3JhbAkAzAgCBQJjUwkAzAgCCQClCAEFAWkJAMwIAgkApAMBBQJjUAUDbmlsBQFhAQJkZQMCY1MBaQJjUAkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICInZvdGVTdGFrZWRJbnRlZ3JhbExhc3RVcGRhdGVIZWlnaHQJAMwIAgUCY1MJAMwIAgkApQgBBQFpCQDMCAIJAKQDAQUCY1AFA25pbAUBYQECZGYDAmNTAWkCY1AJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAhZ2b3RlU3Rha2VkSW50ZWdyYWxMYXN0CQDMCAIFAmNTCQDMCAIJAKUIAQUBaQkAzAgCCQCkAwEFAmNQBQNuaWwFAWEBAmRnAgJkaAJjUwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgZzdGFrZWQJAMwIAgUCZGgJAMwIAgUCY1MFA25pbAUBYQECZGkCAmNTAmRoBAJhUwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZGgEAmRqCQECY0wABAJjTggFAmRqAl8xBAJjUQgFAmRqAl8yBAJkawkBAmNSAQUCY1MEAmNXCAUCZGsCXzEEAmNYCAUCZGsCXzIEAmRsCQECY1kEBQJjVwUCY1gFAmFTBQJjTgQCZG0JAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYkkFAmRsAAAFAmRtAQJkbgICY1MCZGgEAmRvCQELdmFsdWVPckVsc2UCCQCaCAIFAmJFCQECZGcCBQJkaAUCY1MAAAQCZG0JAQJkaQIFAmNTBQJkaAMJAAACBQJkbwAAAAAFAmRtAQJkcAECY1MEAmRxCQECY0wABAJjTggFAmRxAl8xBAJjUQgFAmRxAl8yBAJkcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQJiSQkBAmNaAgUCY1MFAmNOAAAEAmRzCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJjWgIFAmNTBQJjTgUCZHIFAmRzAQJkdAICY1MCZHUEAmR2CQECY0wABAJjTggFAmR2Al8xBAJjUQgFAmR2Al8yBAJkcwkBAmRwAQUCY1MEAmR3CQBkAgUCZHMFAmR1BAJkeAkBAmRhAgUCY1MFAmNOBAJkeQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJkeAAABAJkegkBAmRiAgUCY1MFAmNOBAJkQQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJkegUCY1EEAmRCCQBlAgUGaGVpZ2h0BQJkQQQCZEMJAGQCCQBoAgUCZEIFAmRzBQJkeQkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECY1oCBQJjUwUCY04FAmR3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkegUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkeAUCZEMFA25pbAUCZEMBAmREAwJjUwJkaAJkRQQCZEYJAQJjTAAEAmNOCAUCZEYCXzEEAmNRCAUCZEYCXzIEAmFTCQERQGV4dHJOYXRpdmUoMTA2MikBBQJkaAQCY1QABAQCY1UABQQCY1YKAAJiSwkA/AcEBQJiQwIYZ2V0UG9vbENvbmZpZ0J5THBBc3NldElkCQDMCAIFAmNTBQNuaWwFA25pbAMJAAECBQJiSwIJTGlzdFtBbnldBQJiSwkAAgEJAKwCAgkAAwEFAmJLAh4gY291bGRuJ3QgYmUgY2FzdCB0byBMaXN0W0FueV0EAmNXCgACYksJAJEDAgUCY1YFAmNUAwkAAQIFAmJLAgZTdHJpbmcFAmJLCQACAQkArAICCQADAQUCYksCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCY1gKAAJiSwkAkQMCBQJjVgUCY1UDCQABAgUCYksCBlN0cmluZwUCYksJAAIBCQCsAgIJAAMBBQJiSwIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAJkbQkBC3ZhbHVlT3JFbHNlAgkAmggCBQJiSQkBAmNZBAUCY1cFAmNYBQJhUwUCY04AAAQCZEcDCQAAAgUCZG0AAAUDbmlsBAJkdQMFAmRFBQJkbQkBAS0BBQJkbQQCZEgJAQJkdAIFAmNTBQJkdQQCZEkIBQJkSAJfMQQCZEMIBQJkSAJfMgQCZEoDBQJkRQAABQJkbQQCZEsJAQJkZAMFAmNTBQJhUwUCY04EAmRMCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmRLAAAEAmRNCQECZGUDBQJjUwUCYVMFAmNOBAJkTgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJkTQUCY1EEAmRPCQBlAgUGaGVpZ2h0BQJkTgQCZFAJAGQCCQBoAgUCZE8FAmRKBQJkTAQCZFEJAMwIAgkBDEludGVnZXJFbnRyeQIFAmRNBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFAmRLBQJkUAUDbmlsCQDOCAIFAmRJBQJkUQUCZEcBAmRSAgJjUwJkaAQCZFMJAQJjTAAEAmNOCAUCZFMCXzEEAmNRCAUCZFMCXzIEAmFTCQERQGV4dHJOYXRpdmUoMTA2MikBBQJkaAQCZEoJAQJkbgIFAmNTBQJkaAQCZHMJAQJkcAEFAmNTBAJkTAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECZGQDBQJjUwUCYVMFAmNOAAAEAmR5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJkYQIFAmNTBQJjTgAABAJkTgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECZGUDBQJjUwUCYVMFAmNOBQJjUQQCZEEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmRiAgUCY1MFAmNOBQJjUQQCZEsJAQJkZgMFAmNTBQJhUwUCY04EAmRUCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmRLAAAEAmR4CQECZGMDBQJjUwUCYVMFAmNOBAJkVQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJkeAAABAJkTwkAZQIFBmhlaWdodAUCZE4EAmRCCQBlAgUGaGVpZ2h0BQJkQQQCZFAJAGQCCQBoAgUCZE8FAmRKBQJkTAQCZEMJAGQCCQBoAgUCZEIFAmRzBQJkeQQCZFYJAGUCBQJkUAUCZFQEAmRXCQBlAgUCZEMFAmRVCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFAmRLBQJkUAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZHgFAmRDBQNuaWwFAmRWBQJkVwECZFgABAJkWQkBAW4CBQJiRAkBAmFoAAQCZFoJAJoIAgUCYkQJAQJhawAEAmVhCQCaCAIFBHRoaXMJAQJhbAAEAmViCQEBbgIFAmJECQECYW4ABAJjcwMJAGYCBQZoZWlnaHQFAmViBQJlYgUGaGVpZ2h0BAJlYwQBcgUCZFoDCQABAgUBcgIDSW50BAJlZAUBcgkAlgMBCQDMCAIJAGUCBQJjcwUCZWQJAMwIAgAABQNuaWwDCQABAgUBcgIEVW5pdAAACQACAQILTWF0Y2ggZXJyb3IEAmVlCQBpAgkAaAIFAmRZCQBlAgUCYkoAAQUCYkoEAmVmCQELdmFsdWVPckVsc2UCBQJlYQAABAJlZwkAZAIJAGgCBQJlZQUCZWMFAmVmCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbAAFAmVnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWsABQZoZWlnaHQFA25pbAUCZWcBAmVoAwJjUwJkaAJlaQQCZWoJAJ0IAgUEdGhpcwkBAmFSAQUCZGgDCQAAAgUCZWoFBHVuaXQJAJUKAwAABQNuaWwCFXVzZXJSZWNvcmQ6OmlzOjplbXB0eQQCZWsJALUJAgkBBXZhbHVlAQUCZWoFAWEEAmVsCQCRAwIFAmVrBQJhTAQCZW0CBWVtcHR5BAJlbgMJAQIhPQIFAmNTBQJlbQQCZW8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJiQwkBAU4BBQJjUwkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFAmNTCQERQGV4dHJOYXRpdmUoMTA1MCkCBQJiQwkBAVIBBQJlbwMFAmVpAAAJAAIBCQCsAgICKG5vdCByZWFkb25seSBtb2RlOiB1bnN1cHBvcnRlZCBscCBhc3NldCAFAmNTBAJlcAkBAmJ1AgUCZWwFAmNTBAJlcQkBAmJ0AQUCZWwEAmVyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmVwCQEBawIFBHRoaXMFAmVxBAJlZwgJAQJkWAACXzIEAmVzCQBlAgUCZWcFAmVyAwkAZgIAAAUCZXMJAAIBAhJ3cm9uZyBjYWxjdWxhdGlvbnMEAmV0CQECZFICBQJjUwUCZGgEAmV1CAUCZXQCXzEEAmV2CAUCZXQCXzIEAmV3CAUCZXQCXzMEAmV4CQBrAwUCZXMFAmVuBQFkBAJleQMJAAACBQJldwAAAAAJAGsDBQJleAUCZXYFAmV3BAJlegkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJlcAUCZWcFA25pbAUCZXUEAmVBCQC5CQIJAMwIAgkApAMBBQJlcgkAzAgCCQCkAwEFAmVzCQDMCAIJAKQDAQUCZW4JAMwIAgkApAMBBQJldgkAzAgCCQCkAwEFAmV3BQNuaWwCAToJAJUKAwUCZXkFAmV6BQJlQQECZUICAmFJAmFZBAJlQwkBAmF3AAQCZUQJAJEDAgUCZUMFAmFxBAJhegkA2QQBBQJlRAQCYUEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlQwUCYXIEAmFCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZUMFAmFzBAJhQwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVDBQJhdAMJAQIhPQIJAJADAQgFAmFJCHBheW1lbnRzAAEJAAIBAjRpbnZhbGlkIHBheW1lbnQgLSBleGFjdCBvbmUgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBAJjRQkAkQMCCAUCYUkIcGF5bWVudHMAAAQCZUUIBQJjRQZhbW91bnQDCQECIT0CBQJhegkBBXZhbHVlAQgFAmNFB2Fzc2V0SWQJAAIBCQCsAgIJAKwCAgIeaW52YWxpZCBhc3NldCBpcyBpbiBwYXltZW50IC0gBQJlRAIMIGlzIGV4cGVjdGVkBAJlRgkBAmJlAAQCZGgJAKUIAQgFAmFJBmNhbGxlcgQCZUcJAQlpc0RlZmluZWQBCQCiCAEJAQJiZgEFAmRoBAJlbAMFAmVHCQEFdmFsdWUBCQCiCAEJAQJiZgEFAmRoCQCkAwEJAQFuAgUEdGhpcwUCZUYEAmFWCQENcGFyc2VJbnRWYWx1ZQEFAmVsBAJiWAUGaGVpZ2h0BAJjdwkBAmJpAQUCZWwEAmN4CQECYmoBBQJlbAQCY3YJAQJiaAEFAmVsAwMJAGYCBQJhQQUCZUUJAQIhPQIIBQJhSQZjYWxsZXIFAmJHBwkAAgEJAKwCAgIiYW1vdW50IGlzIGxlc3MgdGhlbiBtaW5Mb2NrQW1vdW50PQkApAMBBQJhQQMJAGYCBQJhQgUCYVkJAAIBCQCsAgICLXBhc3NlZCBkdXJhdGlvbiBpcyBsZXNzIHRoZW4gbWluTG9ja0R1cmF0aW9uPQkApAMBBQJhQgMJAGYCBQJhWQUCYUMJAAIBCQCsAgICMHBhc3NlZCBkdXJhdGlvbiBpcyBncmVhdGVyIHRoZW4gbWF4TG9ja0R1cmF0aW9uPQkApAMBBQJhQwMDBQJlRwkAZwIJAGQCCQEBbgIFBHRoaXMFAmN3CQEBbgIFBHRoaXMFAmN4BQJiWAcJAAIBAjZ0aGVyZSBpcyBhbiBhY3RpdmUgbG9jayAtIGNvbnNpZGVyIHRvIHVzZSBpbmNyZWFzZUxvY2sDCQBmAgkBAWsCBQR0aGlzBQJjdgAACQACAQkArAICAjR0aGVyZSBhcmUgbG9ja2VkIFdYcyAtIGNvbnNpZGVyIHRvIHVzZSBpbmNyZWFzZUxvY2sgBQJjdgQCZUgJAGsDBQJhWQUBYwUCYUMEAmVJCQBrAwUCZUUFAmVIBQFjBAJlSgkBAXEBCQD8BwQFAmF4AhVjYWxjR3d4UGFyYW1zUkVBRE9OTFkJAMwIAgUCZUkJAMwIAgUCYlgJAMwIAgUCYVkFA25pbAUDbmlsBAJiWQkBAXQBCQCRAwIFAmVKAAAEAmJaCQEBdAEJAJEDAgUCZUoAAQQCYm4JAKQDAQkBAXQBCQCRAwIFAmVKAAIEAmJSCQECYkwBBwQCZXEJAQJidAEFAmVsBAJlZwgJAQJkWAACXzIEAmVLAwUCZUcFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZUYJAGQCBQJhVgABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZgEFAmRoBQJlbAkAzAgCCQELU3RyaW5nRW50cnkCCQECYmcBBQJlbAUCZGgFA25pbAkAlAoCCQDOCAIJAM0IAgkAzggCCQDOCAIFAmVLCQECY3UIBQJkaAUCZWwFAmVFBQJiWAUCYVkFAmJZBQJiWgUCYm4JAQJjYwQFAmVFBQJhWQABAwUCZUcAAAABCQECYlUIAgRsb2NrBQJkaAUCZUUFAmJYBQJhWQUCYlkFAmJaBQJhSQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZXEFAmVnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYkEACQBkAgUCYlIFAmVJBQNuaWwFAmVJEQJhSQELY29uc3RydWN0b3IGAmVMAmVNAmFBAmVOAmVPAmF4BAJlUAkBAmFIAQUCYUkDCQAAAgUCZVAFAmVQCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiZQAAAAkAzAgCCQELU3RyaW5nRW50cnkCCQECYXYACQECYUQFBQJlTQUCYUEFAmVOBQJlTwUCYXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAUEABQJlTAUDbmlsCQECY2MEAAAAAAAAAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUkBB2xvY2tSZWYDAmFZAmVRAmVSBAJlUwkBAmVCAgUCYUkFAmFZBAJlVAgFAmVTAl8xBAJlSQgFAmVTAl8yBAJlVQkApQgBCAUCYUkGY2FsbGVyBAJlVgMDCQAAAgUCZVECAAYJAAACBQJlUgEABQR1bml0CQD8BwQFAXcCCmNyZWF0ZVBhaXIJAMwIAgUBegkAzAgCBQJlUQkAzAgCBQJlVQkAzAgCBQJlUgUDbmlsBQNuaWwDCQAAAgUCZVYFAmVWBAJlVwkA/AcEBQJheAIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhSQZjYWxsZXIJAMwIAgUCZUkFA25pbAUDbmlsAwkAAAIFAmVXBQJlVwkAlAoCBQJlVAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhSQEEbG9jawECYVkEAmVYCQECZUICBQJhSQUCYVkEAmVUCAUCZVgCXzEEAmVJCAUCZVgCXzIEAmVXCQD8BwQFAmF4AhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIJAKUIAQgFAmFJBmNhbGxlcgkAzAgCBQJlSQUDbmlsBQNuaWwDCQAAAgUCZVcFAmVXCQCUCgIFAmVUBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFJAQxpbmNyZWFzZUxvY2sBAmVZBAJlQwkBAmF3AAQCZUQJAJEDAgUCZUMFAmFxBAJhegkA2QQBBQJlRAQCYUIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlQwUCYXMEAmFDCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZUMFAmF0BAJlRQkBAmNDAgUCYUkFAmF6BAJkaAkApQgBCAUCYUkGY2FsbGVyBAJlawkBAmFUAQUCZGgEAmVsCQCRAwIFAmVrBQJhTAQCZVoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlawUCYU0EAmJYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZWsFAmFOBAJmYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVrBQJhTwQCZmIJAGQCBQJiWAUCZmEEAmZjCQCWAwEJAMwIAgkAZQIFAmZiBQZoZWlnaHQJAMwIAgAABQNuaWwEAmZkCQBkAgUCZVoFAmVFBAJmZQkAZAIFAmZjBQJlWQMJAGYCAAAFAmVZCQACAQIaZHVyYXRpb24gaXMgbGVzcyB0aGVuIHplcm8DCQBmAgUCYUIFAmZlCQACAQkArAICAi1sb2NrRHVyYXRpb25OZXcgaXMgbGVzcyB0aGVuIG1pbkxvY2tEdXJhdGlvbj0JAKQDAQUCYUIDCQBmAgUCZmUFAmFDCQACAQkArAICAkRkZWx0YUR1cmF0aW9uICsgZXhpc3RlZExvY2tEdXJhdGlvbiBpcyBncmVhdGVyIHRoZW4gbWF4TG9ja0R1cmF0aW9uPQkApAMBBQJhQwQCZUgJAGsDBQJmZQUBYwUCYUMEAmVJCQBrAwUCZmQFAmVIBQFjBAJlVwkA/AcEBQJheAIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhSQZjYWxsZXIJAMwIAgUCZUkFA25pbAUDbmlsAwkAAAIFAmVXBQJlVwQCZmYFBmhlaWdodAQCZUoJAQFxAQkA/AcEBQJheAIVY2FsY0d3eFBhcmFtc1JFQURPTkxZCQDMCAIFAmVJCQDMCAIFAmZmCQDMCAIFAmZlBQNuaWwFA25pbAQCYlkJAQF0AQkAkQMCBQJlSgAABAJiWgkBAXQBCQCRAwIFAmVKAAEEAmJuCQCkAwEJAQF0AQkAkQMCBQJlSgACBAJmZwkBAmNLAQUCZGgEAmZoCQBlAgUCZUkFAmZnAwkAZgIAAAUCZmgJAAIBCQCsAgICGGd3eERpZmYgaXMgbGVzcyB0aGVuIDA6IAkApAMBBQJmaAQCYlIJAQJiTAEHBAJmaQkBAmJMAQYJAM4IAgkAzQgCCQDOCAIJAQJjdQgFAmRoBQJlbAUCZmQFAmZmBQJmZQUCYlkFAmJaBQJibgkBAmNjBAUCZUUFAmVZAAAAAAkBAmJVCAIEbG9jawUCZGgFAmVFBQJiWAUCZmUFAmJZBQJiWgUCYUkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiQQAJAGQCBQJiUgUCZmgFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhSQEMY2xhaW1XeEJvb3N0AgJjUwJkaAMJAQIhPQIFAmJFCAUCYUkGY2FsbGVyCQACAQIScGVybWlzc2lvbnMgZGVuaWVkBAJmagkBAmVoAwUCY1MFAmRoBwQCZmsIBQJmagJfMQQCZXoIBQJmagJfMgQCZUEIBQJmagJfMwkAlAoCBQJlegkAzAgCBQJmawUDbmlsAmFJARRjbGFpbVd4Qm9vc3RSRUFET05MWQICY1MCZGgEAmZsCQECZWgDBQJjUwUCZGgGBAJmawgFAmZsAl8xBAJleggFAmZsAl8yBAJlQQgFAmZsAl8zCQCUCgIFA25pbAkAzAgCBQJmawkAzAgCBQJlQQUDbmlsAmFJAQZ1bmxvY2sBAmFTBAJlawkBAmFUAQUCYVMEAmVsCQCRAwIFAmVrBQJhTAQCZVoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlawUCYU0EAmJYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZWsFAmFOBAJmYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVrBQJhTwQCZmIJAGQCBQJiWAUCZmEEAmVDCQECYXcABAJhegkA2QQBCQCRAwIFAmVDBQJhcQMJAGcCBQJmYgUGaGVpZ2h0CQACAQkArAICCQCsAgICBXdhaXQgCQCkAwEFAmZiAgogdG8gdW5sb2NrAwkAZwIAAAUCZVoJAAIBAhFub3RoaW5nIHRvIHVubG9jawQCYm4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYXgJAQJhbwAAAAkAzQgCCQDNCAIJAM4IAgkBAmN1CAUCYVMFAmVsAAAFAmJYBQJmYQAAAAAJAKQDAQUCYm4JAQJjYwQJAQEtAQUCZVoAAAAAAP///////////wEJAQJiVQgCBnVubG9jawUCYVMFAmVaBQJiWAUCZmEAAAAABQJhSQkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYVMFAmVaBQJhegJhSQETZ3d4VXNlckluZm9SRUFET05MWQECYVMEAmJjCQECY0sBBQJhUwkAlAoCBQNuaWwJAMwIAgUCYmMFA25pbAJhSQEXdXNlck1heER1cmF0aW9uUkVBRE9OTFkBAmRoBAJlQwkBAmF3AAQCYUMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlQwUCYXQEAmVqCQCdCAIFBHRoaXMJAQJhUgEFAmRoAwkAAAIFAmVqBQR1bml0CQCUCgIFA25pbAkAlAoCAgRsb2NrBQJhQwQCZWsJALUJAgkBBXZhbHVlAQUCZWoFAWEEAmJYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZWsFAmFOBAJmYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVrBQJhTwQCZmIJAGQCBQJiWAUCZmEEAmZjCQCWAwEJAMwIAgkAZQIFAmZiBQZoZWlnaHQJAMwIAgAABQNuaWwEAmZtCQBlAgUCYUMFAmZjCQCUCgIFA25pbAkAlAoCAgxpbmNyZWFzZUxvY2sFAmZtAmFJASBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQICYVMCY0cEAmJjCQECY0YCBQJhUwUCY0cJAJQKAgUDbmlsBQJiYwJhSQEZZ2V0VG90YWxDYWNoZWRHd3hSRUFET05MWQAJAJQKAgUDbmlsCQECYkwBBgJhSQEVb25Cb29zdEVtaXNzaW9uVXBkYXRlAAQCZVADCQAAAggFAmFJBmNhbGxlcgUCYkQGCQECYUgBBQJhSQMJAAACBQJlUAUCZVAJAQJkWAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUkBEm9uU3Rha2VkVm90ZVVwZGF0ZQMCY1MCZGgCZEUEAmVQAwkAAAIIBQJhSQZjYWxsZXIFAmJFBgkBAmFIAQUCYUkDCQAAAgUCZVAFAmVQBAJkRwkBAmREAwUCY1MFAmRoBQJkRQkAlAoCBQJkRwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhSQEdZ2V0Vm90aW5nUmVzdWx0U3Rha2VkUkVBRE9OTFkBAmNTCQCUCgIFA25pbAkBAmRwAQUCY1MCYUkBHGdldFVzZXJWb3RlRmluYWxpemVkUkVBRE9OTFkCAmNTAmRoCQCUCgIFA25pbAkBAmRpAgUCY1MFAmRoAmFJAQpzZXRNYW5hZ2VyAQJmbgQCZVAJAQJhSAEFAmFJAwkAAAIFAmVQBQJlUAQCZm8JANkEAQUCZm4DCQAAAgUCZm8FAmZvCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZwAFAmZuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUkBDmNvbmZpcm1NYW5hZ2VyAAQCZnAJAQJhRwAEAmZxAwkBCWlzRGVmaW5lZAEFAmZwBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmcQUCZnEEAmZyAwkAAAIIBQJhSQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmZwBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmcgUCZnIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAkA2AQBCQEFdmFsdWUBBQJmcAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWcABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZzAQJmdAAEAmZ1BAFyCQECYUUAAwkAAQIFAXICCkJ5dGVWZWN0b3IEAmFLBQFyBQJhSwMJAAECBQFyAgRVbml0CAUCZnMPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmZzCWJvZHlCeXRlcwkAkQMCCAUCZnMGcHJvb2ZzAAAFAmZ1Oyp1Cg==", "height": 2489721, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5GnyFfmuoMGkpQTSRNgwbgG9uXqHqADHXPcVzpHnUHLK Next: J7jJee35tVeur9nqrQCMHWfxhuFC6kWU51aZo4XYMNG6 Diff:
OldNewDifferences
144144 func aj () = "%s%s__emission__startBlock"
145145
146146
147-func ak () = "%s%s__emission__duration"
147+func ak () = "%s%s__boostingV2__startBlock"
148148
149149
150-func al () = "%s%s__emission__endBlock"
150+func al () = "%s%s__boostingV2__integral"
151151
152152
153-func am () = "%s__nextPeriod"
153+func am () = "%s%s__emission__duration"
154154
155155
156-func an () = "%s%s__gwxRewardEmissionPart__startHeight"
156+func an () = "%s%s__emission__endBlock"
157157
158158
159-let ao = 1
160-
161-let ap = 2
162-
163-let aq = 3
164-
165-let ar = 4
166-
167-let as = 5
168-
169-func at () = "%s__config"
159+func ao () = "%s__nextPeriod"
170160
171161
172-func au () = split(h(this, at()), a)
162+func ap () = "%s%s__gwxRewardEmissionPart__startHeight"
173163
174164
175-let av = addressFromStringValue(au()[as])
165+let aq = 1
176166
177-func aw (ax,ay,az,aA,av) = makeString(["%s%d%d%d", ax, ay, az, aA, av], a)
167+let ar = 2
168+
169+let as = 3
170+
171+let at = 4
172+
173+let au = 5
174+
175+func av () = "%s__config"
178176
179177
180-func aB (ax,ay,az,aA,av) = aw(ax, toString(ay), toString(az), toString(aA), av)
178+func aw () = split(h(this, av()), a)
181179
182180
183-func aC () = {
181+let ax = addressFromStringValue(aw()[au])
182+
183+func ay (az,aA,aB,aC,ax) = makeString(["%s%d%d%d", az, aA, aB, aC, ax], a)
184+
185+
186+func aD (az,aA,aB,aC,ax) = ay(az, toString(aA), toString(aB), toString(aC), ax)
187+
188+
189+func aE () = {
184190 let r = getString(af())
185191 if ($isInstanceOf(r, "String"))
186192 then {
187- let aD = r
188- fromBase58String(aD)
193+ let aF = r
194+ fromBase58String(aF)
189195 }
190196 else if ($isInstanceOf(r, "Unit"))
191197 then unit
193199 }
194200
195201
196-func aE () = {
202+func aG () = {
197203 let r = getString(ag())
198204 if ($isInstanceOf(r, "String"))
199205 then {
200- let aD = r
201- fromBase58String(aD)
206+ let aF = r
207+ fromBase58String(aF)
202208 }
203209 else if ($isInstanceOf(r, "Unit"))
204210 then unit
206212 }
207213
208214
209-func aF (aG) = {
210- let aH = throw("Permission denied")
211- let r = aC()
215+func aH (aI) = {
216+ let aJ = throw("Permission denied")
217+ let r = aE()
212218 if ($isInstanceOf(r, "ByteVector"))
213219 then {
214- let aI = r
215- if ((aG.callerPublicKey == aI))
220+ let aK = r
221+ if ((aI.callerPublicKey == aK))
216222 then true
217- else aH
223+ else aJ
218224 }
219225 else if ($isInstanceOf(r, "Unit"))
220- then if ((aG.caller == this))
226+ then if ((aI.caller == this))
221227 then true
222- else aH
228+ else aJ
223229 else throw("Match error")
224230 }
225231
226232
227-let aJ = 1
233+let aL = 1
228234
229-let aK = 2
235+let aM = 2
230236
231-let aL = 3
237+let aN = 3
232238
233-let aM = 4
239+let aO = 4
234240
235-let aN = 5
241+let aP = 5
236242
237-let aO = 6
243+let aQ = 6
238244
239-func aP (aQ) = makeString(["%s%s__lock", aQ], a)
245+func aR (aS) = makeString(["%s%s__lock", aS], a)
240246
241247
242-func aR (aQ) = split(h(this, aP(aQ)), a)
248+func aT (aS) = split(h(this, aR(aS)), a)
243249
244250
245-func aS (aT,aU,aV,aW,aX,aY,aZ,ba) = makeString(["%d%d%d%d%d%d%d%d", aT, aU, aV, aW, aX, aY, aZ, ba], a)
251+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)
246252
247253
248-func bb (aT,aU,aV,aW,aX,aY,ba) = aS(aT, toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(lastBlock.timestamp), toString(ba))
254+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))
249255
250256
251-func bc () = "%s__nextUserNum"
257+func be () = "%s__nextUserNum"
252258
253259
254-func bd (aQ) = makeString(["%s%s%s__mapping__user2num", aQ], a)
260+func bf (aS) = makeString(["%s%s%s__mapping__user2num", aS], a)
255261
256262
257-func be (V) = makeString(["%s%s%s__mapping__num2user", V], a)
263+func bg (V) = makeString(["%s%s%s__mapping__num2user", V], a)
258264
259265
260-func bf (aT) = makeString(["%s%d%s__paramByUserNum", aT, "amount"], a)
266+func bh (aV) = makeString(["%s%d%s__paramByUserNum", aV, "amount"], a)
261267
262268
263-func bg (aT) = makeString(["%s%d%s__paramByUserNum", aT, "start"], a)
269+func bi (aV) = makeString(["%s%d%s__paramByUserNum", aV, "start"], a)
264270
265271
266-func bh (aT) = makeString(["%s%d%s__paramByUserNum", aT, "duration"], a)
272+func bj (aV) = makeString(["%s%d%s__paramByUserNum", aV, "duration"], a)
267273
268274
269-func bi (aT) = makeString(["%s%d%s__paramByUserNum", aT, "k"], a)
275+func bk (aV) = makeString(["%s%d%s__paramByUserNum", aV, "k"], a)
270276
271277
272-func bj (aT) = makeString(["%s%d%s__paramByUserNum", aT, "b"], a)
278+func bl (aV) = makeString(["%s%d%s__paramByUserNum", aV, "b"], a)
273279
274280
275-func bk (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "k", bl], a)
281+func bm (aV,bn) = makeString(["%s%d%s%d__paramByPeriod", aV, "k", bn], a)
276282
277283
278-func bm (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "b", bl], a)
284+func bo (aV,bn) = makeString(["%s%d%s%d__paramByPeriod", aV, "b", bn], a)
279285
280286
281-func bn () = "%s%s__stats__activeTotalLocked"
287+func bp () = "%s%s__stats__activeTotalLocked"
282288
283289
284-func bo () = "%s%s__stats__locksDurationSumInBlocks"
290+func bq () = "%s%s__stats__locksDurationSumInBlocks"
285291
286292
287-func bp () = "%s%s__stats__locksCount"
293+func br () = "%s%s__stats__locksCount"
288294
289295
290-func bq () = "%s%s__stats__activeUsersCount"
296+func bs () = "%s%s__stats__activeUsersCount"
291297
292298
293-func br (aT) = makeString(["%s%d__userBoostEmissionLastInt", aT], a)
299+func bt (aV) = makeString(["%s%d__userBoostEmissionLastIntV2", aV], a)
294300
295301
296-func bs (aT,bt) = makeString(["%s%d__userBoostEmissionLastInt", aT, bt], a)
302+func bu (aV,bv) = makeString(["%s%d__userBoostEmissionLastIntV2", aV, bv], a)
297303
298304
299-func bu (aT) = makeString(["%s%d__maxBoostInt", aT], a)
305+func bw (aV) = makeString(["%s%d__maxBoostInt", aV], a)
300306
301307
302-func bv () = "%s%s__maxBoostInt__total"
308+func bx () = "%s%s__maxBoostInt__total"
303309
304310
305-func bw (aT) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aT], a)
311+func by (aV) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aV], a)
306312
307313
308-func bx (aT) = makeString(["%s%d__userBoostClaimed", aT], a)
314+func bz (aV) = makeString(["%s%d__userBoostClaimed", aV], a)
309315
310316
311-func by () = "%s%s__gwxCached__total"
317+func bA () = "%s%s__gwxCached__total"
312318
313319
314-func bz () = "%s__gwxCachedTotalCorrective"
320+func bB () = "%s__gwxCachedTotalCorrective"
315321
316322
317-let bA = W()
323+let bC = W()
318324
319-let ab = Y(bA)
325+let ab = Y(bC)
320326
321-let bB = ac(ab)
327+let bD = ac(ab)
322328
323-let bC = ad(ab)
329+let bE = ad(ab)
324330
325-let bD = ae(ab)
331+let bF = ae(ab)
326332
327-let bE = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), e("lp_staking_pools contract address is undefined"))), e("invalid lp_staking_pools contract address"))
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"))
328334
329-let bF = makeString(["%s", "votingEmissionContract"], a)
335+let bH = makeString(["%s", "votingEmissionContract"], a)
330336
331-let bG = addressFromStringValue(getStringValue(bA, bF))
337+let bI = addressFromStringValue(getStringValue(bC, bH))
332338
333-func bH (bI) = {
334- let bJ = makeString(["%s", "currentEpochUi"], a)
335- let bK = getIntegerValue(bG, bJ)
336- let bL = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
337- let bM = getInteger(this, bL)
338- let bN = valueOrElse(getInteger(this, by()), 0)
339- let bO = if (isDefined(bM))
340- then (bK >= value(bM))
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"))
344+ }
345+
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))
341354 else false
342- let bP = if (if (bO)
343- then bI
355+ let bT = if (if (bS)
356+ then bM
344357 else false)
345- then valueOrElse(getInteger(this, bz()), 0)
358+ then valueOrElse(getInteger(this, bB()), 0)
346359 else 0
347- max([0, (bN + bP)])
360+ max([0, (bR + bT)])
348361 }
349362
350363
351-func bQ (bR,bS,aU,bT,aW,bU,bV,aG) = {
352- let bW = makeString(["%s%s%s%s__history", bR, bS, toBase58String(aG.transactionId)], a)
353- let bX = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aU), toString(bT), toString(aW), toString(bU), toString(bV)], a)
354- StringEntry(bW, bX)
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)
355368 }
356369
357370
358-func bY (bZ,ca,cb,cc) = {
359- let cd = bo()
360- let ce = bp()
361- let cf = bq()
362- let cg = bn()
363- let ch = k(this, cd)
364- let ci = k(this, ce)
365- let cj = k(this, cf)
366- let ck = k(this, cg)
367-[IntegerEntry(cd, (ch + ca)), IntegerEntry(ce, (ci + cb)), IntegerEntry(cf, (cj + cc)), IntegerEntry(cg, (ck + bZ))]
371+func cc (cd,ce,cf,cg) = {
372+ let ch = bq()
373+ let ci = br()
374+ let cj = bs()
375+ let ck = bp()
376+ let cl = k(this, ch)
377+ let cm = k(this, ci)
378+ let cn = k(this, cj)
379+ let co = k(this, ck)
380+[IntegerEntry(ch, (cl + ce)), IntegerEntry(ci, (cm + cf)), IntegerEntry(cj, (cn + cg)), IntegerEntry(ck, (co + cd))]
368381 }
369382
370383
371-func cl (cm,cn,co) = {
372- let cp = 1000
373- (((cm * co) + cn) / cp)
384+func cp (cq,cr,cs) = {
385+ let ct = 1000
386+ (((cq * cs) + cr) / ct)
374387 }
375388
376389
377-func cq (aQ,aT,aU,aV,aW,bU,bV,bl) = {
378- let cr = bf(aT)
379- let cs = bg(aT)
380- let ct = bh(aT)
381- let cu = bi(aT)
382- let cv = bj(aT)
383- let cw = bk(aT, bl)
384- let cx = bm(aT, bl)
385- let ba = cl(bU, bV, height)
386-[IntegerEntry(cr, aU), IntegerEntry(cs, aV), IntegerEntry(ct, aW), IntegerEntry(cu, bU), IntegerEntry(cv, bV), IntegerEntry(cw, bU), IntegerEntry(cx, bV), StringEntry(aP(aQ), bb(aT, aU, aV, aW, bU, bV, ba))]
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))]
387400 }
388401
389402
390-func cy (aG,cz) = if ((size(aG.payments) > 1))
403+func cC (aI,cD) = if ((size(aI.payments) > 1))
391404 then throw("only one payment is allowed")
392- else if ((size(aG.payments) == 0))
405+ else if ((size(aI.payments) == 0))
393406 then 0
394407 else {
395- let cA = aG.payments[0]
396- if ((value(cA.assetId) != cz))
408+ let cE = aI.payments[0]
409+ if ((value(cE.assetId) != cD))
397410 then throw("invalid asset id in payment")
398- else cA.amount
411+ else cE.amount
399412 }
400413
401414
402-func cB (aQ,cC) = {
403- let cD = "empty"
404- let cE = bd(aQ)
405- let aT = valueOrElse(getString(cE), cD)
406- let bU = valueOrElse(getInteger(bi(aT)), 0)
407- let bV = valueOrElse(getInteger(bj(aT)), 0)
408- let cF = cl(bU, bV, cC)
409- let ba = if ((0 > cF))
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))
410423 then 0
411- else cF
412- ba
424+ else cJ
425+ bc
413426 }
414427
415428
416-func cG (aQ) = cB(aQ, height)
429+func cK (aS) = cF(aS, height)
417430
418431
419-func cH () = {
420- let bJ = makeString(["%s", "currentEpochUi"], a)
421- let cI = {
422- let bK = value(getInteger(bG, bJ))
423- let cJ = (bK - 1)
424- if ((0 > cJ))
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))
425438 then g("invalid epoch")
426- else $Tuple2(bK, cJ)
439+ else $Tuple2(bO, cN)
427440 }
428- let bK = cI._1
429- let cJ = cI._2
430- func cK (cL) = makeString(["%s%d", "startHeight", toString(cL)], a)
441+ let bO = cM._1
442+ let cN = cM._2
443+ func cO (cP) = makeString(["%s%d", "startHeight", toString(cP)], a)
431444
432- let cM = value(getInteger(bG, cK(bK)))
433- $Tuple2(cJ, cM)
445+ let cQ = value(getInteger(bI, cO(bO)))
446+ $Tuple2(cN, cQ)
434447 }
435448
436449
437-func cN (cO,cP,i,cL) = makeString(["%s%s%s%s%d", "vote", cO, cP, toString(i), toString(cL)], a)
438-
439-
440-func cQ (cR,cL) = makeString(["%s%s%d", "votingResultStaked", cR, toString(cL)], a)
441-
442-
443-func cS (cR,cL) = makeString(["%s%s%d", "votingResultStakedIntegral", cR, toString(cL)], a)
444-
445-
446-func cT (cR,cL) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", cR, toString(cL)], a)
447-
448-
449-func cU (cR,i,cL) = makeString(["%s%s%s%d", "voteStakedIntegral", cR, toString(i), toString(cL)], a)
450-
451-
452-func cV (cR,i,cL) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", cR, toString(i), toString(cL)], a)
453-
454-
455-func cW (cR) = {
456- let cX = cH()
457- let cJ = cX._1
458- let cM = cX._2
459- let cY = valueOrElse(getInteger(bG, cQ(cR, cJ)), 0)
460- let cZ = valueOrElse(getInteger(this, cQ(cR, cJ)), cY)
461- cZ
450+func cR (cS) = {
451+ let cT = 4
452+ let cU = 5
453+ let cV = {
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]"))
458+ }
459+ let cW = {
460+ let bK = cV[cT]
461+ if ($isInstanceOf(bK, "String"))
462+ then bK
463+ else throw(($getType(bK) + " couldn't be cast to String"))
464+ }
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)
462472 }
463473
464474
465-func da (cR,db) = {
466- let dc = cH()
467- let cJ = dc._1
468- let cM = dc._2
469- let cZ = cW(cR)
470- let dd = (cZ + db)
471- let de = cS(cR, cJ)
472- let df = valueOrElse(getInteger(this, de), 0)
473- let dg = cT(cR, cJ)
474- let dh = valueOrElse(getInteger(this, dg), cM)
475- let di = (height - dh)
476- let dj = ((di * cZ) + df)
477- $Tuple2([IntegerEntry(cQ(cR, cJ), dd), IntegerEntry(dg, height), IntegerEntry(de, dj)], dj)
475+func cY (cW,cX,i,cP) = makeString(["%s%s%s%s%d", "vote", cW, cX, toString(i), toString(cP)], a)
476+
477+
478+func cZ (cS,cP) = makeString(["%s%s%d", "votingResultStaked", cS, toString(cP)], a)
479+
480+
481+func da (cS,cP) = makeString(["%s%s%d", "votingResultStakedIntegral", cS, toString(cP)], a)
482+
483+
484+func db (cS,cP) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", cS, toString(cP)], a)
485+
486+
487+func dc (cS,i,cP) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", cS, toString(i), toString(cP)], a)
488+
489+
490+func dd (cS,i,cP) = makeString(["%s%s%s%d", "voteStakedIntegral", cS, toString(i), toString(cP)], a)
491+
492+
493+func de (cS,i,cP) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", cS, toString(i), toString(cP)], a)
494+
495+
496+func df (cS,i,cP) = makeString(["%s%s%s%d", "voteStakedIntegralLast", cS, toString(i), toString(cP)], a)
497+
498+
499+func dg (dh,cS) = makeString(["%s%s%s", "staked", dh, cS], a)
500+
501+
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
478513 }
479514
480515
481-func dk (cR,dl,dm) = {
482- let dn = cH()
483- let cJ = dn._1
484- let cM = dn._2
485- let aQ = addressFromStringValue(dl)
486- let do = 4
487- let dp = 5
488- let dq = {
489- let dr = invoke(bA, "getPoolConfigByLpAssetId", [cR], nil)
490- if ($isInstanceOf(dr, "List[Any]"))
491- then dr
492- else throw(($getType(dr) + " couldn't be cast to List[Any]"))
493- }
494- let cO = {
495- let dr = dq[do]
496- if ($isInstanceOf(dr, "String"))
497- then dr
498- else throw(($getType(dr) + " couldn't be cast to String"))
499- }
500- let cP = {
501- let dr = dq[dp]
502- if ($isInstanceOf(dr, "String"))
503- then dr
504- else throw(($getType(dr) + " couldn't be cast to String"))
505- }
506- let ds = valueOrElse(getInteger(bG, cN(cO, cP, aQ, cJ)), 0)
507- let dt = if ((ds == 0))
508- then nil
509- else {
510- let db = if (dm)
511- then ds
512- else -(ds)
513- let du = da(cR, db)
514- let dv = du._1
515- let dj = du._2
516- let dw = if (dm)
517- then 0
518- else ds
519- let dx = cU(cR, aQ, cJ)
520- let dy = valueOrElse(getInteger(this, dx), 0)
521- let dz = cV(cR, aQ, cJ)
522- let dA = valueOrElse(getInteger(this, dz), cM)
523- let dB = (height - dA)
524- let dC = ((dB * dw) + dy)
525- let dD = [IntegerEntry(dz, height), IntegerEntry(dx, dC)]
526- (dv ++ dD)
527- }
528- dt
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))
520+ then 0
521+ else dm
529522 }
530523
531524
532-func dE (cR,dl,dF) = {
533- let cD = "EMPTY"
534- let dG = valueOrElse(getString(this, aP(dl)), cD)
535- if ((dG == cD))
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
532+ }
533+
534+
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)
548+ }
549+
550+
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
558+ let cV = {
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]"))
563+ }
564+ let cW = {
565+ let bK = cV[cT]
566+ if ($isInstanceOf(bK, "String"))
567+ then bK
568+ else throw(($getType(bK) + " couldn't be cast to String"))
569+ }
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))
578+ then nil
579+ else {
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)
587+ then 0
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)
597+ }
598+ dG
599+ }
600+
601+
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)
624+ }
625+
626+
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
634+ else height
635+ let ec = {
636+ let r = dZ
637+ if ($isInstanceOf(r, "Int"))
638+ then {
639+ let ed = r
640+ max([(cs - ed), 0])
641+ }
642+ else if ($isInstanceOf(r, "Unit"))
643+ then 0
644+ else throw("Match error")
645+ }
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)
650+ }
651+
652+
653+func eh (cS,dh,ei) = {
654+ let ej = getString(this, aR(dh))
655+ if ((ej == unit))
536656 then $Tuple3(0, nil, "userRecord::is::empty")
537657 else {
538- let dH = split(dG, a)
539- let dI = dH[aJ]
540- let dJ = valueOrElse(getInteger(bD, an()), 0)
541- let dK = "empty"
542- let dL = if ((cR != dK))
658+ let ek = split(value(ej), a)
659+ let el = ek[aL]
660+ let em = "empty"
661+ let en = if ((cS != em))
543662 then {
544- let dM = valueOrErrorMessage(getString(bA, N(cR)), ("unsupported lp asset " + cR))
545- let dN = getIntegerValue(bA, R(dM))
546- let dO = valueOrElse(getInteger(bA, T(dM, 0)), dN)
547- $Tuple2(dO, dN)
663+ let eo = valueOrErrorMessage(getString(bC, N(cS)), ("unsupported lp asset " + cS))
664+ getIntegerValue(bC, R(eo))
548665 }
549- else if (dF)
550- then $Tuple2(0, 0)
551- else throw(("not readonly mode: unsupported lp asset " + cR))
552- let dP = dL._1
553- let dQ = dL._2
554- let dR = n(bB, ah())
555- let dS = n(bB, aj())
556- let dT = n(bB, al())
557- let co = if ((height > dT))
558- then dT
559- else height
560- let dU = max([(co - dS), 0])
561- let dV = bs(dI, cR)
562- let dW = br(dI)
563- let dX = valueOrElse(getInteger(this, dV), k(this, dW))
564- let dY = (((dR * dU) * 2) / 3)
565- let dZ = (dY - dX)
566- let ea = fraction(dZ, 3, (2 * dR))
567- let eb = (co - ea)
568- let ec = max([(dJ - eb), 0])
569- let ed = ((co - eb) - ec)
570- if (if (if ((0 > eb))
571- then true
572- else (0 > ed))
573- then true
574- else (o(((ec + ed) - ea)) >= 1))
575- then throw(((((((((((("invalid udh calc: udh=" + toString(ea)) + " uLastH=") + toString(eb)) + " udh0=") + toString(ec)) + " udh1=") + toString(ed)) + " lpAssetId=") + cR) + " userAddress=") + dl))
576- else if ((0 > dZ))
577- then throw("wrong calculations")
578- else {
579- let ee = bu(dI)
580- let ef = bv()
581- let eg = k(this, ee)
582- let eh = k(this, ef)
583- let ei = bH(true)
584- let ej = cG(dl)
585- let ek = bw(dI)
586- let el = k(this, ek)
587- let em = if ((ea == 0))
588- then 0
589- else fraction(dZ, ec, ea)
590- let en = if ((ea == 0))
591- then 0
592- else fraction(dZ, ed, ea)
593- let eo = fraction(em, dP, d)
594- let ep = fraction(en, dQ, d)
595- let eq = if ((ei == 0))
596- then 0
597- else fraction(eo, ej, ei)
598- let er = if ((ei == 0))
599- then 0
600- else fraction(ep, ej, ei)
601- let es = (eq + er)
602- let et = bx(dI)
603- let eu = k(this, et)
604- let ev = (es - eu)
605- let ew = [IntegerEntry(dV, dY)]
606- let ex = makeString([toString(dX), toString(dZ), toString(eu), toString(ev), toString(dP), toString(dQ), toString(co), toString(ea), toString(eb), toString(ec), toString(ed), toString(ej), toString(ei)], ":")
607- $Tuple3(es, ew, ex)
608- }
666+ else if (ei)
667+ then 0
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))
675+ then throw("wrong calculations")
676+ else {
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))
683+ then 0
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)
688+ }
609689 }
610690 }
611691
612692
613-func ey (aG,aW) = {
614- let ez = au()
615- let eA = ez[ao]
616- let ax = fromBase58String(eA)
617- let ay = parseIntValue(ez[ap])
618- let az = parseIntValue(ez[aq])
619- let aA = parseIntValue(ez[ar])
620- if ((size(aG.payments) != 1))
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])
700+ if ((size(aI.payments) != 1))
621701 then throw("invalid payment - exact one payment must be attached")
622702 else {
623- let cA = aG.payments[0]
624- let eB = cA.amount
625- if ((ax != value(cA.assetId)))
626- then throw((("invalid asset is in payment - " + eA) + " 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"))
627707 else {
628- let eC = bc()
629- let dl = toString(aG.caller)
630- let eD = isDefined(getString(bd(dl)))
631- let dI = if (eD)
632- then value(getString(bd(dl)))
633- else toString(n(this, eC))
634- let aT = parseIntValue(dI)
635- let bT = height
636- let cs = bg(dI)
637- let ct = bh(dI)
638- let cr = bf(dI)
639- if (if ((ay > eB))
640- then (aG.caller != bE)
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)
641721 else false)
642- then throw(("amount is less then minLockAmount=" + toString(ay)))
643- else if ((az > aW))
644- then throw(("passed duration is less then minLockDuration=" + toString(az)))
645- else if ((aW > aA))
646- then throw(("passed duration is greater then maxLockDuration=" + toString(aA)))
647- else if (if (eD)
648- then ((n(this, cs) + n(this, ct)) >= bT)
722+ then throw(("amount is less then minLockAmount=" + toString(aA)))
723+ else if ((aB > aY))
724+ then throw(("passed duration is less then minLockDuration=" + toString(aB)))
725+ else if ((aY > aC))
726+ then throw(("passed duration is greater then maxLockDuration=" + toString(aC)))
727+ else if (if (eG)
728+ then ((n(this, cw) + n(this, cx)) >= bX)
649729 else false)
650730 then throw("there is an active lock - consider to use increaseLock")
651- else if ((k(this, cr) > 0))
652- then throw(("there are locked WXs - consider to use increaseLock " + cr))
731+ else if ((k(this, cv) > 0))
732+ then throw(("there are locked WXs - consider to use increaseLock " + cv))
653733 else {
654- let eE = fraction(aW, c, aA)
655- let eF = fraction(eB, eE, c)
656- let eG = q(invoke(av, "calcGwxParamsREADONLY", [eF, bT, aW], nil))
657- let bU = t(eG[0])
658- let bV = t(eG[1])
659- let bl = toString(t(eG[2]))
660- let dR = n(bB, ah())
661- let dS = n(bB, aj())
662- let dT = n(bB, al())
663- let co = if ((height > dT))
664- then dT
665- else height
666- let dU = max([(co - dS), 0])
667- let dW = br(dI)
668- let dY = (((dR * dU) * 2) / 3)
669- let ee = bu(dI)
670- let ef = bv()
671- let eg = ((eF * aW) / 2)
672- let eh = k(this, ef)
673- let bN = bH(false)
674- let eH = if (eD)
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)
675744 then nil
676- else [IntegerEntry(eC, (aT + 1)), StringEntry(bd(dl), dI), StringEntry(be(dI), dl)]
677- $Tuple2(((((eH ++ cq(dl, dI, eB, bT, aW, bU, bV, bl)) ++ bY(eB, aW, 1, if (eD)
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)
678747 then 0
679- else 1)) :+ bQ("lock", dl, eB, bT, aW, bU, bV, aG)) ++ [IntegerEntry(dW, dY), IntegerEntry(by(), (bN + eF))]), eF)
748+ else 1)) :+ bU("lock", dh, eE, bX, aY, bY, bZ, aI)) ++ [IntegerEntry(eq, eg), IntegerEntry(bA(), (bR + eI))]), eI)
680749 }
681750 }
682751 }
683752 }
684753
685754
686-@Callable(aG)
687-func constructor (eI,eJ,ay,eK,eL,av) = {
688- let eM = aF(aG)
689- if ((eM == eM))
690- then ([IntegerEntry(bc(), 0), StringEntry(at(), aB(eJ, ay, eK, eL, av)), StringEntry(A(), eI)] ++ bY(0, 0, 0, 0))
755+@Callable(aI)
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))
691760 else throw("Strict value is not equal to itself.")
692761 }
693762
694763
695764
696-@Callable(aG)
697-func lockRef (aW,eN,eO) = {
698- let eP = ey(aG, aW)
699- let eQ = eP._1
700- let eF = eP._2
701- let eR = toString(aG.caller)
702- let eS = if (if ((eN == ""))
765+@Callable(aI)
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 == ""))
703772 then true
704- else (eO == base58''))
773+ else (eR == base58''))
705774 then unit
706- else invoke(w, "createPair", [z, eN, eR, eO], nil)
707- if ((eS == eS))
775+ else invoke(w, "createPair", [z, eQ, eU, eR], nil)
776+ if ((eV == eV))
708777 then {
709- let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
710- if ((eT == eT))
711- then $Tuple2(eQ, unit)
778+ let eW = invoke(ax, "updateReferralActivity", [toString(aI.caller), eI], nil)
779+ if ((eW == eW))
780+ then $Tuple2(eT, unit)
712781 else throw("Strict value is not equal to itself.")
713782 }
714783 else throw("Strict value is not equal to itself.")
716785
717786
718787
719-@Callable(aG)
720-func lock (aW) = {
721- let eU = ey(aG, aW)
722- let eQ = eU._1
723- let eF = eU._2
724- let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
725- if ((eT == eT))
726- then $Tuple2(eQ, unit)
788+@Callable(aI)
789+func lock (aY) = {
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)
727796 else throw("Strict value is not equal to itself.")
728797 }
729798
730799
731800
732-@Callable(aG)
733-func increaseLock (eV) = {
734- let ez = au()
735- let eA = ez[ao]
736- let ax = fromBase58String(eA)
737- let az = parseIntValue(ez[aq])
738- let aA = parseIntValue(ez[ar])
739- let eB = cy(aG, ax)
740- let dl = toString(aG.caller)
741- let dH = aR(dl)
742- let dI = dH[aJ]
743- let eW = parseIntValue(dH[aK])
744- let bT = parseIntValue(dH[aL])
745- let eX = parseIntValue(dH[aM])
746- let eY = (bT + eX)
747- let eZ = max([(eY - height), 0])
748- let fa = (eW + eB)
749- let fb = (eZ + eV)
750- if ((0 > eV))
801+@Callable(aI)
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))
751820 then throw("duration is less then zero")
752- else if ((az > fb))
753- then throw(("lockDurationNew is less then minLockDuration=" + toString(az)))
754- else if ((fb > aA))
755- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aA)))
821+ else if ((aB > fe))
822+ then throw(("lockDurationNew is less then minLockDuration=" + toString(aB)))
823+ else if ((fe > aC))
824+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aC)))
756825 else {
757- let eE = fraction(fb, c, aA)
758- let eF = fraction(fa, eE, c)
759- let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
760- if ((eT == eT))
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))
761830 then {
762- let fc = height
763- let eG = q(invoke(av, "calcGwxParamsREADONLY", [eF, fc, fb], nil))
764- let bU = t(eG[0])
765- let bV = t(eG[1])
766- let bl = toString(t(eG[2]))
767- let dR = n(bB, ah())
768- let dS = n(bB, aj())
769- let dT = n(bB, al())
770- let co = if ((height > dT))
771- then dT
772- else height
773- let dU = max([(co - dS), 0])
774- let dW = br(dI)
775- let dX = k(this, dW)
776- let dY = (((dR * dU) * 2) / 3)
777- let dZ = (dY - dX)
778- if ((0 > dZ))
779- then throw("wrong calculations")
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)))
780840 else {
781- let ee = bu(dI)
782- let ef = bv()
783- let eg = k(this, ee)
784- let eh = k(this, ef)
785- let fd = cG(dl)
786- let fe = (eF - fd)
787- if ((0 > fe))
788- then throw(("gwxDiff is less then 0: " + toString(fe)))
789- else {
790- let bN = bH(false)
791- let ei = bH(true)
792- let ek = bw(dI)
793- let el = k(this, ek)
794- let es = fraction(dZ, fd, ei)
795- let ff = ((eF * fb) / 2)
796- let fg = ((fd * eZ) / 2)
797- let fh = (ff - fg)
798- (((cq(dl, dI, fa, fc, fb, bU, bV, bl) ++ bY(eB, eV, 0, 0)) :+ bQ("lock", dl, eB, bT, fb, bU, bV, aG)) ++ [IntegerEntry(by(), (bN + fe))])
799- }
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))])
800844 }
801845 }
802846 else throw("Strict value is not equal to itself.")
805849
806850
807851
808-@Callable(aG)
809-func claimWxBoost (cR,dl) = if ((bC != aG.caller))
852+@Callable(aI)
853+func claimWxBoost (cS,dh) = if ((bE != aI.caller))
810854 then throw("permissions denied")
811855 else {
812- let fi = dE(cR, dl, false)
813- let ev = fi._1
814- let ew = fi._2
815- let ex = fi._3
816- $Tuple2(ew, [ev])
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])
817861 }
818862
819863
820864
821-@Callable(aG)
822-func claimWxBoostREADONLY (cR,dl) = {
823- let fj = dE(cR, dl, true)
824- let ev = fj._1
825- let ew = fj._2
826- let ex = fj._3
827- $Tuple2(nil, [ev, ex])
865+@Callable(aI)
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])
828872 }
829873
830874
831875
832-@Callable(aG)
833-func unlock (aQ) = {
834- let dH = aR(aQ)
835- let dI = dH[aJ]
836- let eW = parseIntValue(dH[aK])
837- let bT = parseIntValue(dH[aL])
838- let eX = parseIntValue(dH[aM])
839- let eY = (bT + eX)
840- let ez = au()
841- let ax = fromBase58String(ez[ao])
842- if ((eY >= height))
843- then throw((("wait " + toString(eY)) + " to unlock"))
844- else if ((0 >= eW))
876+@Callable(aI)
877+func unlock (aS) = {
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))
845889 then throw("nothing to unlock")
846890 else {
847- let bl = valueOrElse(getInteger(av, am()), 0)
848- (((cq(aQ, dI, 0, bT, eX, 0, 0, toString(bl)) ++ bY(-(eW), 0, 0, -1)) :+ bQ("unlock", aQ, eW, bT, eX, 0, 0, aG)) :+ ScriptTransfer(addressFromStringValue(aQ), eW, ax))
891+ let bn = valueOrElse(getInteger(ax, ao()), 0)
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))
849893 }
850894 }
851895
852896
853897
854-@Callable(aG)
855-func gwxUserInfoREADONLY (aQ) = {
856- let ba = cG(aQ)
857- $Tuple2(nil, [ba])
898+@Callable(aI)
899+func gwxUserInfoREADONLY (aS) = {
900+ let bc = cK(aS)
901+ $Tuple2(nil, [bc])
858902 }
859903
860904
861905
862-@Callable(aG)
863-func userMaxDurationREADONLY (dl) = {
864- let ez = au()
865- let aA = parseIntValue(ez[ar])
866- let fk = getString(this, aP(dl))
867- if ((fk == unit))
868- then $Tuple2(nil, $Tuple2("lock", aA))
906+@Callable(aI)
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))
869913 else {
870- let dH = split(value(fk), a)
871- let bT = parseIntValue(dH[aL])
872- let eX = parseIntValue(dH[aM])
873- let eY = (bT + eX)
874- let eZ = max([(eY - height), 0])
875- let fl = (aA - eZ)
876- $Tuple2(nil, $Tuple2("increaseLock", fl))
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))
877921 }
878922 }
879923
880924
881925
882-@Callable(aG)
883-func getUserGwxAmountAtHeightREADONLY (aQ,cC) = {
884- let ba = cB(aQ, cC)
885- $Tuple2(nil, ba)
926+@Callable(aI)
927+func getUserGwxAmountAtHeightREADONLY (aS,cG) = {
928+ let bc = cF(aS, cG)
929+ $Tuple2(nil, bc)
886930 }
887931
888932
889933
890-@Callable(aG)
891-func getTotalCachedGwxREADONLY () = $Tuple2(nil, bH(true))
934+@Callable(aI)
935+func getTotalCachedGwxREADONLY () = $Tuple2(nil, bL(true))
892936
893937
894938
895-@Callable(aG)
896-func onStakedVoteUpdate (cR,dl,dm) = {
897- let eM = if ((aG.caller == bC))
939+@Callable(aI)
940+func onBoostEmissionUpdate () = {
941+ let eP = if ((aI.caller == bD))
898942 then true
899- else aF(aG)
900- if ((eM == eM))
943+ else aH(aI)
944+ if ((eP == eP))
945+ then dX()
946+ else throw("Strict value is not equal to itself.")
947+ }
948+
949+
950+
951+@Callable(aI)
952+func onStakedVoteUpdate (cS,dh,dE) = {
953+ let eP = if ((aI.caller == bE))
954+ then true
955+ else aH(aI)
956+ if ((eP == eP))
901957 then {
902- let dt = dk(cR, dl, dm)
903- $Tuple2(dt, unit)
958+ let dG = dD(cS, dh, dE)
959+ $Tuple2(dG, unit)
904960 }
905961 else throw("Strict value is not equal to itself.")
906962 }
907963
908964
909965
910-@Callable(aG)
911-func getVotingResultStakedREADONLY (cR) = $Tuple2(nil, cW(cR))
966+@Callable(aI)
967+func getVotingResultStakedREADONLY (cS) = $Tuple2(nil, dp(cS))
912968
913969
914970
915-@Callable(aG)
916-func setManager (fm) = {
917- let eM = aF(aG)
918- if ((eM == eM))
971+@Callable(aI)
972+func getUserVoteFinalizedREADONLY (cS,dh) = $Tuple2(nil, di(cS, dh))
973+
974+
975+
976+@Callable(aI)
977+func setManager (fn) = {
978+ let eP = aH(aI)
979+ if ((eP == eP))
919980 then {
920- let fn = fromBase58String(fm)
921- if ((fn == fn))
922- then [StringEntry(ag(), fm)]
981+ let fo = fromBase58String(fn)
982+ if ((fo == fo))
983+ then [StringEntry(ag(), fn)]
923984 else throw("Strict value is not equal to itself.")
924985 }
925986 else throw("Strict value is not equal to itself.")
927988
928989
929990
930-@Callable(aG)
991+@Callable(aI)
931992 func confirmManager () = {
932- let fo = aE()
933- let fp = if (isDefined(fo))
993+ let fp = aG()
994+ let fq = if (isDefined(fp))
934995 then true
935996 else throw("No pending manager")
936- if ((fp == fp))
997+ if ((fq == fq))
937998 then {
938- let fq = if ((aG.callerPublicKey == value(fo)))
999+ let fr = if ((aI.callerPublicKey == value(fp)))
9391000 then true
9401001 else throw("You are not pending manager")
941- if ((fq == fq))
942- then [StringEntry(af(), toBase58String(value(fo))), DeleteEntry(ag())]
1002+ if ((fr == fr))
1003+ then [StringEntry(af(), toBase58String(value(fp))), DeleteEntry(ag())]
9431004 else throw("Strict value is not equal to itself.")
9441005 }
9451006 else throw("Strict value is not equal to itself.")
9461007 }
9471008
9481009
949-@Verifier(fr)
950-func fs () = {
951- let ft = {
952- let r = aC()
1010+@Verifier(fs)
1011+func ft () = {
1012+ let fu = {
1013+ let r = aE()
9531014 if ($isInstanceOf(r, "ByteVector"))
9541015 then {
955- let aI = r
956- aI
1016+ let aK = r
1017+ aK
9571018 }
9581019 else if ($isInstanceOf(r, "Unit"))
959- then fr.senderPublicKey
1020+ then fs.senderPublicKey
9601021 else throw("Match error")
9611022 }
962- sigVerify(fr.bodyBytes, fr.proofs[0], ft)
1023+ sigVerify(fs.bodyBytes, fs.proofs[0], fu)
9631024 }
9641025
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
147-func ak () = "%s%s__emission__duration"
147+func ak () = "%s%s__boostingV2__startBlock"
148148
149149
150-func al () = "%s%s__emission__endBlock"
150+func al () = "%s%s__boostingV2__integral"
151151
152152
153-func am () = "%s__nextPeriod"
153+func am () = "%s%s__emission__duration"
154154
155155
156-func an () = "%s%s__gwxRewardEmissionPart__startHeight"
156+func an () = "%s%s__emission__endBlock"
157157
158158
159-let ao = 1
160-
161-let ap = 2
162-
163-let aq = 3
164-
165-let ar = 4
166-
167-let as = 5
168-
169-func at () = "%s__config"
159+func ao () = "%s__nextPeriod"
170160
171161
172-func au () = split(h(this, at()), a)
162+func ap () = "%s%s__gwxRewardEmissionPart__startHeight"
173163
174164
175-let av = addressFromStringValue(au()[as])
165+let aq = 1
176166
177-func aw (ax,ay,az,aA,av) = makeString(["%s%d%d%d", ax, ay, az, aA, av], a)
167+let ar = 2
168+
169+let as = 3
170+
171+let at = 4
172+
173+let au = 5
174+
175+func av () = "%s__config"
178176
179177
180-func aB (ax,ay,az,aA,av) = aw(ax, toString(ay), toString(az), toString(aA), av)
178+func aw () = split(h(this, av()), a)
181179
182180
183-func aC () = {
181+let ax = addressFromStringValue(aw()[au])
182+
183+func ay (az,aA,aB,aC,ax) = makeString(["%s%d%d%d", az, aA, aB, aC, ax], a)
184+
185+
186+func aD (az,aA,aB,aC,ax) = ay(az, toString(aA), toString(aB), toString(aC), ax)
187+
188+
189+func aE () = {
184190 let r = getString(af())
185191 if ($isInstanceOf(r, "String"))
186192 then {
187- let aD = r
188- fromBase58String(aD)
193+ let aF = r
194+ fromBase58String(aF)
189195 }
190196 else if ($isInstanceOf(r, "Unit"))
191197 then unit
192198 else throw("Match error")
193199 }
194200
195201
196-func aE () = {
202+func aG () = {
197203 let r = getString(ag())
198204 if ($isInstanceOf(r, "String"))
199205 then {
200- let aD = r
201- fromBase58String(aD)
206+ let aF = r
207+ fromBase58String(aF)
202208 }
203209 else if ($isInstanceOf(r, "Unit"))
204210 then unit
205211 else throw("Match error")
206212 }
207213
208214
209-func aF (aG) = {
210- let aH = throw("Permission denied")
211- let r = aC()
215+func aH (aI) = {
216+ let aJ = throw("Permission denied")
217+ let r = aE()
212218 if ($isInstanceOf(r, "ByteVector"))
213219 then {
214- let aI = r
215- if ((aG.callerPublicKey == aI))
220+ let aK = r
221+ if ((aI.callerPublicKey == aK))
216222 then true
217- else aH
223+ else aJ
218224 }
219225 else if ($isInstanceOf(r, "Unit"))
220- then if ((aG.caller == this))
226+ then if ((aI.caller == this))
221227 then true
222- else aH
228+ else aJ
223229 else throw("Match error")
224230 }
225231
226232
227-let aJ = 1
233+let aL = 1
228234
229-let aK = 2
235+let aM = 2
230236
231-let aL = 3
237+let aN = 3
232238
233-let aM = 4
239+let aO = 4
234240
235-let aN = 5
241+let aP = 5
236242
237-let aO = 6
243+let aQ = 6
238244
239-func aP (aQ) = makeString(["%s%s__lock", aQ], a)
245+func aR (aS) = makeString(["%s%s__lock", aS], a)
240246
241247
242-func aR (aQ) = split(h(this, aP(aQ)), a)
248+func aT (aS) = split(h(this, aR(aS)), a)
243249
244250
245-func aS (aT,aU,aV,aW,aX,aY,aZ,ba) = makeString(["%d%d%d%d%d%d%d%d", aT, aU, aV, aW, aX, aY, aZ, ba], a)
251+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)
246252
247253
248-func bb (aT,aU,aV,aW,aX,aY,ba) = aS(aT, toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(lastBlock.timestamp), toString(ba))
254+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))
249255
250256
251-func bc () = "%s__nextUserNum"
257+func be () = "%s__nextUserNum"
252258
253259
254-func bd (aQ) = makeString(["%s%s%s__mapping__user2num", aQ], a)
260+func bf (aS) = makeString(["%s%s%s__mapping__user2num", aS], a)
255261
256262
257-func be (V) = makeString(["%s%s%s__mapping__num2user", V], a)
263+func bg (V) = makeString(["%s%s%s__mapping__num2user", V], a)
258264
259265
260-func bf (aT) = makeString(["%s%d%s__paramByUserNum", aT, "amount"], a)
266+func bh (aV) = makeString(["%s%d%s__paramByUserNum", aV, "amount"], a)
261267
262268
263-func bg (aT) = makeString(["%s%d%s__paramByUserNum", aT, "start"], a)
269+func bi (aV) = makeString(["%s%d%s__paramByUserNum", aV, "start"], a)
264270
265271
266-func bh (aT) = makeString(["%s%d%s__paramByUserNum", aT, "duration"], a)
272+func bj (aV) = makeString(["%s%d%s__paramByUserNum", aV, "duration"], a)
267273
268274
269-func bi (aT) = makeString(["%s%d%s__paramByUserNum", aT, "k"], a)
275+func bk (aV) = makeString(["%s%d%s__paramByUserNum", aV, "k"], a)
270276
271277
272-func bj (aT) = makeString(["%s%d%s__paramByUserNum", aT, "b"], a)
278+func bl (aV) = makeString(["%s%d%s__paramByUserNum", aV, "b"], a)
273279
274280
275-func bk (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "k", bl], a)
281+func bm (aV,bn) = makeString(["%s%d%s%d__paramByPeriod", aV, "k", bn], a)
276282
277283
278-func bm (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "b", bl], a)
284+func bo (aV,bn) = makeString(["%s%d%s%d__paramByPeriod", aV, "b", bn], a)
279285
280286
281-func bn () = "%s%s__stats__activeTotalLocked"
287+func bp () = "%s%s__stats__activeTotalLocked"
282288
283289
284-func bo () = "%s%s__stats__locksDurationSumInBlocks"
290+func bq () = "%s%s__stats__locksDurationSumInBlocks"
285291
286292
287-func bp () = "%s%s__stats__locksCount"
293+func br () = "%s%s__stats__locksCount"
288294
289295
290-func bq () = "%s%s__stats__activeUsersCount"
296+func bs () = "%s%s__stats__activeUsersCount"
291297
292298
293-func br (aT) = makeString(["%s%d__userBoostEmissionLastInt", aT], a)
299+func bt (aV) = makeString(["%s%d__userBoostEmissionLastIntV2", aV], a)
294300
295301
296-func bs (aT,bt) = makeString(["%s%d__userBoostEmissionLastInt", aT, bt], a)
302+func bu (aV,bv) = makeString(["%s%d__userBoostEmissionLastIntV2", aV, bv], a)
297303
298304
299-func bu (aT) = makeString(["%s%d__maxBoostInt", aT], a)
305+func bw (aV) = makeString(["%s%d__maxBoostInt", aV], a)
300306
301307
302-func bv () = "%s%s__maxBoostInt__total"
308+func bx () = "%s%s__maxBoostInt__total"
303309
304310
305-func bw (aT) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aT], a)
311+func by (aV) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aV], a)
306312
307313
308-func bx (aT) = makeString(["%s%d__userBoostClaimed", aT], a)
314+func bz (aV) = makeString(["%s%d__userBoostClaimed", aV], a)
309315
310316
311-func by () = "%s%s__gwxCached__total"
317+func bA () = "%s%s__gwxCached__total"
312318
313319
314-func bz () = "%s__gwxCachedTotalCorrective"
320+func bB () = "%s__gwxCachedTotalCorrective"
315321
316322
317-let bA = W()
323+let bC = W()
318324
319-let ab = Y(bA)
325+let ab = Y(bC)
320326
321-let bB = ac(ab)
327+let bD = ac(ab)
322328
323-let bC = ad(ab)
329+let bE = ad(ab)
324330
325-let bD = ae(ab)
331+let bF = ae(ab)
326332
327-let bE = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), e("lp_staking_pools contract address is undefined"))), e("invalid lp_staking_pools contract address"))
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"))
328334
329-let bF = makeString(["%s", "votingEmissionContract"], a)
335+let bH = makeString(["%s", "votingEmissionContract"], a)
330336
331-let bG = addressFromStringValue(getStringValue(bA, bF))
337+let bI = addressFromStringValue(getStringValue(bC, bH))
332338
333-func bH (bI) = {
334- let bJ = makeString(["%s", "currentEpochUi"], a)
335- let bK = getIntegerValue(bG, bJ)
336- let bL = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
337- let bM = getInteger(this, bL)
338- let bN = valueOrElse(getInteger(this, by()), 0)
339- let bO = if (isDefined(bM))
340- then (bK >= value(bM))
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"))
344+ }
345+
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))
341354 else false
342- let bP = if (if (bO)
343- then bI
355+ let bT = if (if (bS)
356+ then bM
344357 else false)
345- then valueOrElse(getInteger(this, bz()), 0)
358+ then valueOrElse(getInteger(this, bB()), 0)
346359 else 0
347- max([0, (bN + bP)])
360+ max([0, (bR + bT)])
348361 }
349362
350363
351-func bQ (bR,bS,aU,bT,aW,bU,bV,aG) = {
352- let bW = makeString(["%s%s%s%s__history", bR, bS, toBase58String(aG.transactionId)], a)
353- let bX = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aU), toString(bT), toString(aW), toString(bU), toString(bV)], a)
354- StringEntry(bW, bX)
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)
355368 }
356369
357370
358-func bY (bZ,ca,cb,cc) = {
359- let cd = bo()
360- let ce = bp()
361- let cf = bq()
362- let cg = bn()
363- let ch = k(this, cd)
364- let ci = k(this, ce)
365- let cj = k(this, cf)
366- let ck = k(this, cg)
367-[IntegerEntry(cd, (ch + ca)), IntegerEntry(ce, (ci + cb)), IntegerEntry(cf, (cj + cc)), IntegerEntry(cg, (ck + bZ))]
371+func cc (cd,ce,cf,cg) = {
372+ let ch = bq()
373+ let ci = br()
374+ let cj = bs()
375+ let ck = bp()
376+ let cl = k(this, ch)
377+ let cm = k(this, ci)
378+ let cn = k(this, cj)
379+ let co = k(this, ck)
380+[IntegerEntry(ch, (cl + ce)), IntegerEntry(ci, (cm + cf)), IntegerEntry(cj, (cn + cg)), IntegerEntry(ck, (co + cd))]
368381 }
369382
370383
371-func cl (cm,cn,co) = {
372- let cp = 1000
373- (((cm * co) + cn) / cp)
384+func cp (cq,cr,cs) = {
385+ let ct = 1000
386+ (((cq * cs) + cr) / ct)
374387 }
375388
376389
377-func cq (aQ,aT,aU,aV,aW,bU,bV,bl) = {
378- let cr = bf(aT)
379- let cs = bg(aT)
380- let ct = bh(aT)
381- let cu = bi(aT)
382- let cv = bj(aT)
383- let cw = bk(aT, bl)
384- let cx = bm(aT, bl)
385- let ba = cl(bU, bV, height)
386-[IntegerEntry(cr, aU), IntegerEntry(cs, aV), IntegerEntry(ct, aW), IntegerEntry(cu, bU), IntegerEntry(cv, bV), IntegerEntry(cw, bU), IntegerEntry(cx, bV), StringEntry(aP(aQ), bb(aT, aU, aV, aW, bU, bV, ba))]
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))]
387400 }
388401
389402
390-func cy (aG,cz) = if ((size(aG.payments) > 1))
403+func cC (aI,cD) = if ((size(aI.payments) > 1))
391404 then throw("only one payment is allowed")
392- else if ((size(aG.payments) == 0))
405+ else if ((size(aI.payments) == 0))
393406 then 0
394407 else {
395- let cA = aG.payments[0]
396- if ((value(cA.assetId) != cz))
408+ let cE = aI.payments[0]
409+ if ((value(cE.assetId) != cD))
397410 then throw("invalid asset id in payment")
398- else cA.amount
411+ else cE.amount
399412 }
400413
401414
402-func cB (aQ,cC) = {
403- let cD = "empty"
404- let cE = bd(aQ)
405- let aT = valueOrElse(getString(cE), cD)
406- let bU = valueOrElse(getInteger(bi(aT)), 0)
407- let bV = valueOrElse(getInteger(bj(aT)), 0)
408- let cF = cl(bU, bV, cC)
409- let ba = if ((0 > cF))
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))
410423 then 0
411- else cF
412- ba
424+ else cJ
425+ bc
413426 }
414427
415428
416-func cG (aQ) = cB(aQ, height)
429+func cK (aS) = cF(aS, height)
417430
418431
419-func cH () = {
420- let bJ = makeString(["%s", "currentEpochUi"], a)
421- let cI = {
422- let bK = value(getInteger(bG, bJ))
423- let cJ = (bK - 1)
424- if ((0 > cJ))
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))
425438 then g("invalid epoch")
426- else $Tuple2(bK, cJ)
439+ else $Tuple2(bO, cN)
427440 }
428- let bK = cI._1
429- let cJ = cI._2
430- func cK (cL) = makeString(["%s%d", "startHeight", toString(cL)], a)
441+ let bO = cM._1
442+ let cN = cM._2
443+ func cO (cP) = makeString(["%s%d", "startHeight", toString(cP)], a)
431444
432- let cM = value(getInteger(bG, cK(bK)))
433- $Tuple2(cJ, cM)
445+ let cQ = value(getInteger(bI, cO(bO)))
446+ $Tuple2(cN, cQ)
434447 }
435448
436449
437-func cN (cO,cP,i,cL) = makeString(["%s%s%s%s%d", "vote", cO, cP, toString(i), toString(cL)], a)
438-
439-
440-func cQ (cR,cL) = makeString(["%s%s%d", "votingResultStaked", cR, toString(cL)], a)
441-
442-
443-func cS (cR,cL) = makeString(["%s%s%d", "votingResultStakedIntegral", cR, toString(cL)], a)
444-
445-
446-func cT (cR,cL) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", cR, toString(cL)], a)
447-
448-
449-func cU (cR,i,cL) = makeString(["%s%s%s%d", "voteStakedIntegral", cR, toString(i), toString(cL)], a)
450-
451-
452-func cV (cR,i,cL) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", cR, toString(i), toString(cL)], a)
453-
454-
455-func cW (cR) = {
456- let cX = cH()
457- let cJ = cX._1
458- let cM = cX._2
459- let cY = valueOrElse(getInteger(bG, cQ(cR, cJ)), 0)
460- let cZ = valueOrElse(getInteger(this, cQ(cR, cJ)), cY)
461- cZ
450+func cR (cS) = {
451+ let cT = 4
452+ let cU = 5
453+ let cV = {
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]"))
458+ }
459+ let cW = {
460+ let bK = cV[cT]
461+ if ($isInstanceOf(bK, "String"))
462+ then bK
463+ else throw(($getType(bK) + " couldn't be cast to String"))
464+ }
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)
462472 }
463473
464474
465-func da (cR,db) = {
466- let dc = cH()
467- let cJ = dc._1
468- let cM = dc._2
469- let cZ = cW(cR)
470- let dd = (cZ + db)
471- let de = cS(cR, cJ)
472- let df = valueOrElse(getInteger(this, de), 0)
473- let dg = cT(cR, cJ)
474- let dh = valueOrElse(getInteger(this, dg), cM)
475- let di = (height - dh)
476- let dj = ((di * cZ) + df)
477- $Tuple2([IntegerEntry(cQ(cR, cJ), dd), IntegerEntry(dg, height), IntegerEntry(de, dj)], dj)
475+func cY (cW,cX,i,cP) = makeString(["%s%s%s%s%d", "vote", cW, cX, toString(i), toString(cP)], a)
476+
477+
478+func cZ (cS,cP) = makeString(["%s%s%d", "votingResultStaked", cS, toString(cP)], a)
479+
480+
481+func da (cS,cP) = makeString(["%s%s%d", "votingResultStakedIntegral", cS, toString(cP)], a)
482+
483+
484+func db (cS,cP) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", cS, toString(cP)], a)
485+
486+
487+func dc (cS,i,cP) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", cS, toString(i), toString(cP)], a)
488+
489+
490+func dd (cS,i,cP) = makeString(["%s%s%s%d", "voteStakedIntegral", cS, toString(i), toString(cP)], a)
491+
492+
493+func de (cS,i,cP) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", cS, toString(i), toString(cP)], a)
494+
495+
496+func df (cS,i,cP) = makeString(["%s%s%s%d", "voteStakedIntegralLast", cS, toString(i), toString(cP)], a)
497+
498+
499+func dg (dh,cS) = makeString(["%s%s%s", "staked", dh, cS], a)
500+
501+
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
478513 }
479514
480515
481-func dk (cR,dl,dm) = {
482- let dn = cH()
483- let cJ = dn._1
484- let cM = dn._2
485- let aQ = addressFromStringValue(dl)
486- let do = 4
487- let dp = 5
488- let dq = {
489- let dr = invoke(bA, "getPoolConfigByLpAssetId", [cR], nil)
490- if ($isInstanceOf(dr, "List[Any]"))
491- then dr
492- else throw(($getType(dr) + " couldn't be cast to List[Any]"))
493- }
494- let cO = {
495- let dr = dq[do]
496- if ($isInstanceOf(dr, "String"))
497- then dr
498- else throw(($getType(dr) + " couldn't be cast to String"))
499- }
500- let cP = {
501- let dr = dq[dp]
502- if ($isInstanceOf(dr, "String"))
503- then dr
504- else throw(($getType(dr) + " couldn't be cast to String"))
505- }
506- let ds = valueOrElse(getInteger(bG, cN(cO, cP, aQ, cJ)), 0)
507- let dt = if ((ds == 0))
508- then nil
509- else {
510- let db = if (dm)
511- then ds
512- else -(ds)
513- let du = da(cR, db)
514- let dv = du._1
515- let dj = du._2
516- let dw = if (dm)
517- then 0
518- else ds
519- let dx = cU(cR, aQ, cJ)
520- let dy = valueOrElse(getInteger(this, dx), 0)
521- let dz = cV(cR, aQ, cJ)
522- let dA = valueOrElse(getInteger(this, dz), cM)
523- let dB = (height - dA)
524- let dC = ((dB * dw) + dy)
525- let dD = [IntegerEntry(dz, height), IntegerEntry(dx, dC)]
526- (dv ++ dD)
527- }
528- dt
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))
520+ then 0
521+ else dm
529522 }
530523
531524
532-func dE (cR,dl,dF) = {
533- let cD = "EMPTY"
534- let dG = valueOrElse(getString(this, aP(dl)), cD)
535- if ((dG == cD))
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
532+ }
533+
534+
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)
548+ }
549+
550+
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
558+ let cV = {
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]"))
563+ }
564+ let cW = {
565+ let bK = cV[cT]
566+ if ($isInstanceOf(bK, "String"))
567+ then bK
568+ else throw(($getType(bK) + " couldn't be cast to String"))
569+ }
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))
578+ then nil
579+ else {
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)
587+ then 0
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)
597+ }
598+ dG
599+ }
600+
601+
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)
624+ }
625+
626+
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
634+ else height
635+ let ec = {
636+ let r = dZ
637+ if ($isInstanceOf(r, "Int"))
638+ then {
639+ let ed = r
640+ max([(cs - ed), 0])
641+ }
642+ else if ($isInstanceOf(r, "Unit"))
643+ then 0
644+ else throw("Match error")
645+ }
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)
650+ }
651+
652+
653+func eh (cS,dh,ei) = {
654+ let ej = getString(this, aR(dh))
655+ if ((ej == unit))
536656 then $Tuple3(0, nil, "userRecord::is::empty")
537657 else {
538- let dH = split(dG, a)
539- let dI = dH[aJ]
540- let dJ = valueOrElse(getInteger(bD, an()), 0)
541- let dK = "empty"
542- let dL = if ((cR != dK))
658+ let ek = split(value(ej), a)
659+ let el = ek[aL]
660+ let em = "empty"
661+ let en = if ((cS != em))
543662 then {
544- let dM = valueOrErrorMessage(getString(bA, N(cR)), ("unsupported lp asset " + cR))
545- let dN = getIntegerValue(bA, R(dM))
546- let dO = valueOrElse(getInteger(bA, T(dM, 0)), dN)
547- $Tuple2(dO, dN)
663+ let eo = valueOrErrorMessage(getString(bC, N(cS)), ("unsupported lp asset " + cS))
664+ getIntegerValue(bC, R(eo))
548665 }
549- else if (dF)
550- then $Tuple2(0, 0)
551- else throw(("not readonly mode: unsupported lp asset " + cR))
552- let dP = dL._1
553- let dQ = dL._2
554- let dR = n(bB, ah())
555- let dS = n(bB, aj())
556- let dT = n(bB, al())
557- let co = if ((height > dT))
558- then dT
559- else height
560- let dU = max([(co - dS), 0])
561- let dV = bs(dI, cR)
562- let dW = br(dI)
563- let dX = valueOrElse(getInteger(this, dV), k(this, dW))
564- let dY = (((dR * dU) * 2) / 3)
565- let dZ = (dY - dX)
566- let ea = fraction(dZ, 3, (2 * dR))
567- let eb = (co - ea)
568- let ec = max([(dJ - eb), 0])
569- let ed = ((co - eb) - ec)
570- if (if (if ((0 > eb))
571- then true
572- else (0 > ed))
573- then true
574- else (o(((ec + ed) - ea)) >= 1))
575- then throw(((((((((((("invalid udh calc: udh=" + toString(ea)) + " uLastH=") + toString(eb)) + " udh0=") + toString(ec)) + " udh1=") + toString(ed)) + " lpAssetId=") + cR) + " userAddress=") + dl))
576- else if ((0 > dZ))
577- then throw("wrong calculations")
578- else {
579- let ee = bu(dI)
580- let ef = bv()
581- let eg = k(this, ee)
582- let eh = k(this, ef)
583- let ei = bH(true)
584- let ej = cG(dl)
585- let ek = bw(dI)
586- let el = k(this, ek)
587- let em = if ((ea == 0))
588- then 0
589- else fraction(dZ, ec, ea)
590- let en = if ((ea == 0))
591- then 0
592- else fraction(dZ, ed, ea)
593- let eo = fraction(em, dP, d)
594- let ep = fraction(en, dQ, d)
595- let eq = if ((ei == 0))
596- then 0
597- else fraction(eo, ej, ei)
598- let er = if ((ei == 0))
599- then 0
600- else fraction(ep, ej, ei)
601- let es = (eq + er)
602- let et = bx(dI)
603- let eu = k(this, et)
604- let ev = (es - eu)
605- let ew = [IntegerEntry(dV, dY)]
606- let ex = makeString([toString(dX), toString(dZ), toString(eu), toString(ev), toString(dP), toString(dQ), toString(co), toString(ea), toString(eb), toString(ec), toString(ed), toString(ej), toString(ei)], ":")
607- $Tuple3(es, ew, ex)
608- }
666+ else if (ei)
667+ then 0
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))
675+ then throw("wrong calculations")
676+ else {
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))
683+ then 0
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)
688+ }
609689 }
610690 }
611691
612692
613-func ey (aG,aW) = {
614- let ez = au()
615- let eA = ez[ao]
616- let ax = fromBase58String(eA)
617- let ay = parseIntValue(ez[ap])
618- let az = parseIntValue(ez[aq])
619- let aA = parseIntValue(ez[ar])
620- if ((size(aG.payments) != 1))
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])
700+ if ((size(aI.payments) != 1))
621701 then throw("invalid payment - exact one payment must be attached")
622702 else {
623- let cA = aG.payments[0]
624- let eB = cA.amount
625- if ((ax != value(cA.assetId)))
626- then throw((("invalid asset is in payment - " + eA) + " 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"))
627707 else {
628- let eC = bc()
629- let dl = toString(aG.caller)
630- let eD = isDefined(getString(bd(dl)))
631- let dI = if (eD)
632- then value(getString(bd(dl)))
633- else toString(n(this, eC))
634- let aT = parseIntValue(dI)
635- let bT = height
636- let cs = bg(dI)
637- let ct = bh(dI)
638- let cr = bf(dI)
639- if (if ((ay > eB))
640- then (aG.caller != bE)
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)
641721 else false)
642- then throw(("amount is less then minLockAmount=" + toString(ay)))
643- else if ((az > aW))
644- then throw(("passed duration is less then minLockDuration=" + toString(az)))
645- else if ((aW > aA))
646- then throw(("passed duration is greater then maxLockDuration=" + toString(aA)))
647- else if (if (eD)
648- then ((n(this, cs) + n(this, ct)) >= bT)
722+ then throw(("amount is less then minLockAmount=" + toString(aA)))
723+ else if ((aB > aY))
724+ then throw(("passed duration is less then minLockDuration=" + toString(aB)))
725+ else if ((aY > aC))
726+ then throw(("passed duration is greater then maxLockDuration=" + toString(aC)))
727+ else if (if (eG)
728+ then ((n(this, cw) + n(this, cx)) >= bX)
649729 else false)
650730 then throw("there is an active lock - consider to use increaseLock")
651- else if ((k(this, cr) > 0))
652- then throw(("there are locked WXs - consider to use increaseLock " + cr))
731+ else if ((k(this, cv) > 0))
732+ then throw(("there are locked WXs - consider to use increaseLock " + cv))
653733 else {
654- let eE = fraction(aW, c, aA)
655- let eF = fraction(eB, eE, c)
656- let eG = q(invoke(av, "calcGwxParamsREADONLY", [eF, bT, aW], nil))
657- let bU = t(eG[0])
658- let bV = t(eG[1])
659- let bl = toString(t(eG[2]))
660- let dR = n(bB, ah())
661- let dS = n(bB, aj())
662- let dT = n(bB, al())
663- let co = if ((height > dT))
664- then dT
665- else height
666- let dU = max([(co - dS), 0])
667- let dW = br(dI)
668- let dY = (((dR * dU) * 2) / 3)
669- let ee = bu(dI)
670- let ef = bv()
671- let eg = ((eF * aW) / 2)
672- let eh = k(this, ef)
673- let bN = bH(false)
674- let eH = if (eD)
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)
675744 then nil
676- else [IntegerEntry(eC, (aT + 1)), StringEntry(bd(dl), dI), StringEntry(be(dI), dl)]
677- $Tuple2(((((eH ++ cq(dl, dI, eB, bT, aW, bU, bV, bl)) ++ bY(eB, aW, 1, if (eD)
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)
678747 then 0
679- else 1)) :+ bQ("lock", dl, eB, bT, aW, bU, bV, aG)) ++ [IntegerEntry(dW, dY), IntegerEntry(by(), (bN + eF))]), eF)
748+ else 1)) :+ bU("lock", dh, eE, bX, aY, bY, bZ, aI)) ++ [IntegerEntry(eq, eg), IntegerEntry(bA(), (bR + eI))]), eI)
680749 }
681750 }
682751 }
683752 }
684753
685754
686-@Callable(aG)
687-func constructor (eI,eJ,ay,eK,eL,av) = {
688- let eM = aF(aG)
689- if ((eM == eM))
690- then ([IntegerEntry(bc(), 0), StringEntry(at(), aB(eJ, ay, eK, eL, av)), StringEntry(A(), eI)] ++ bY(0, 0, 0, 0))
755+@Callable(aI)
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))
691760 else throw("Strict value is not equal to itself.")
692761 }
693762
694763
695764
696-@Callable(aG)
697-func lockRef (aW,eN,eO) = {
698- let eP = ey(aG, aW)
699- let eQ = eP._1
700- let eF = eP._2
701- let eR = toString(aG.caller)
702- let eS = if (if ((eN == ""))
765+@Callable(aI)
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 == ""))
703772 then true
704- else (eO == base58''))
773+ else (eR == base58''))
705774 then unit
706- else invoke(w, "createPair", [z, eN, eR, eO], nil)
707- if ((eS == eS))
775+ else invoke(w, "createPair", [z, eQ, eU, eR], nil)
776+ if ((eV == eV))
708777 then {
709- let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
710- if ((eT == eT))
711- then $Tuple2(eQ, unit)
778+ let eW = invoke(ax, "updateReferralActivity", [toString(aI.caller), eI], nil)
779+ if ((eW == eW))
780+ then $Tuple2(eT, unit)
712781 else throw("Strict value is not equal to itself.")
713782 }
714783 else throw("Strict value is not equal to itself.")
715784 }
716785
717786
718787
719-@Callable(aG)
720-func lock (aW) = {
721- let eU = ey(aG, aW)
722- let eQ = eU._1
723- let eF = eU._2
724- let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
725- if ((eT == eT))
726- then $Tuple2(eQ, unit)
788+@Callable(aI)
789+func lock (aY) = {
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)
727796 else throw("Strict value is not equal to itself.")
728797 }
729798
730799
731800
732-@Callable(aG)
733-func increaseLock (eV) = {
734- let ez = au()
735- let eA = ez[ao]
736- let ax = fromBase58String(eA)
737- let az = parseIntValue(ez[aq])
738- let aA = parseIntValue(ez[ar])
739- let eB = cy(aG, ax)
740- let dl = toString(aG.caller)
741- let dH = aR(dl)
742- let dI = dH[aJ]
743- let eW = parseIntValue(dH[aK])
744- let bT = parseIntValue(dH[aL])
745- let eX = parseIntValue(dH[aM])
746- let eY = (bT + eX)
747- let eZ = max([(eY - height), 0])
748- let fa = (eW + eB)
749- let fb = (eZ + eV)
750- if ((0 > eV))
801+@Callable(aI)
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))
751820 then throw("duration is less then zero")
752- else if ((az > fb))
753- then throw(("lockDurationNew is less then minLockDuration=" + toString(az)))
754- else if ((fb > aA))
755- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aA)))
821+ else if ((aB > fe))
822+ then throw(("lockDurationNew is less then minLockDuration=" + toString(aB)))
823+ else if ((fe > aC))
824+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aC)))
756825 else {
757- let eE = fraction(fb, c, aA)
758- let eF = fraction(fa, eE, c)
759- let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
760- if ((eT == eT))
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))
761830 then {
762- let fc = height
763- let eG = q(invoke(av, "calcGwxParamsREADONLY", [eF, fc, fb], nil))
764- let bU = t(eG[0])
765- let bV = t(eG[1])
766- let bl = toString(t(eG[2]))
767- let dR = n(bB, ah())
768- let dS = n(bB, aj())
769- let dT = n(bB, al())
770- let co = if ((height > dT))
771- then dT
772- else height
773- let dU = max([(co - dS), 0])
774- let dW = br(dI)
775- let dX = k(this, dW)
776- let dY = (((dR * dU) * 2) / 3)
777- let dZ = (dY - dX)
778- if ((0 > dZ))
779- then throw("wrong calculations")
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)))
780840 else {
781- let ee = bu(dI)
782- let ef = bv()
783- let eg = k(this, ee)
784- let eh = k(this, ef)
785- let fd = cG(dl)
786- let fe = (eF - fd)
787- if ((0 > fe))
788- then throw(("gwxDiff is less then 0: " + toString(fe)))
789- else {
790- let bN = bH(false)
791- let ei = bH(true)
792- let ek = bw(dI)
793- let el = k(this, ek)
794- let es = fraction(dZ, fd, ei)
795- let ff = ((eF * fb) / 2)
796- let fg = ((fd * eZ) / 2)
797- let fh = (ff - fg)
798- (((cq(dl, dI, fa, fc, fb, bU, bV, bl) ++ bY(eB, eV, 0, 0)) :+ bQ("lock", dl, eB, bT, fb, bU, bV, aG)) ++ [IntegerEntry(by(), (bN + fe))])
799- }
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))])
800844 }
801845 }
802846 else throw("Strict value is not equal to itself.")
803847 }
804848 }
805849
806850
807851
808-@Callable(aG)
809-func claimWxBoost (cR,dl) = if ((bC != aG.caller))
852+@Callable(aI)
853+func claimWxBoost (cS,dh) = if ((bE != aI.caller))
810854 then throw("permissions denied")
811855 else {
812- let fi = dE(cR, dl, false)
813- let ev = fi._1
814- let ew = fi._2
815- let ex = fi._3
816- $Tuple2(ew, [ev])
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])
817861 }
818862
819863
820864
821-@Callable(aG)
822-func claimWxBoostREADONLY (cR,dl) = {
823- let fj = dE(cR, dl, true)
824- let ev = fj._1
825- let ew = fj._2
826- let ex = fj._3
827- $Tuple2(nil, [ev, ex])
865+@Callable(aI)
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])
828872 }
829873
830874
831875
832-@Callable(aG)
833-func unlock (aQ) = {
834- let dH = aR(aQ)
835- let dI = dH[aJ]
836- let eW = parseIntValue(dH[aK])
837- let bT = parseIntValue(dH[aL])
838- let eX = parseIntValue(dH[aM])
839- let eY = (bT + eX)
840- let ez = au()
841- let ax = fromBase58String(ez[ao])
842- if ((eY >= height))
843- then throw((("wait " + toString(eY)) + " to unlock"))
844- else if ((0 >= eW))
876+@Callable(aI)
877+func unlock (aS) = {
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))
845889 then throw("nothing to unlock")
846890 else {
847- let bl = valueOrElse(getInteger(av, am()), 0)
848- (((cq(aQ, dI, 0, bT, eX, 0, 0, toString(bl)) ++ bY(-(eW), 0, 0, -1)) :+ bQ("unlock", aQ, eW, bT, eX, 0, 0, aG)) :+ ScriptTransfer(addressFromStringValue(aQ), eW, ax))
891+ let bn = valueOrElse(getInteger(ax, ao()), 0)
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))
849893 }
850894 }
851895
852896
853897
854-@Callable(aG)
855-func gwxUserInfoREADONLY (aQ) = {
856- let ba = cG(aQ)
857- $Tuple2(nil, [ba])
898+@Callable(aI)
899+func gwxUserInfoREADONLY (aS) = {
900+ let bc = cK(aS)
901+ $Tuple2(nil, [bc])
858902 }
859903
860904
861905
862-@Callable(aG)
863-func userMaxDurationREADONLY (dl) = {
864- let ez = au()
865- let aA = parseIntValue(ez[ar])
866- let fk = getString(this, aP(dl))
867- if ((fk == unit))
868- then $Tuple2(nil, $Tuple2("lock", aA))
906+@Callable(aI)
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))
869913 else {
870- let dH = split(value(fk), a)
871- let bT = parseIntValue(dH[aL])
872- let eX = parseIntValue(dH[aM])
873- let eY = (bT + eX)
874- let eZ = max([(eY - height), 0])
875- let fl = (aA - eZ)
876- $Tuple2(nil, $Tuple2("increaseLock", fl))
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))
877921 }
878922 }
879923
880924
881925
882-@Callable(aG)
883-func getUserGwxAmountAtHeightREADONLY (aQ,cC) = {
884- let ba = cB(aQ, cC)
885- $Tuple2(nil, ba)
926+@Callable(aI)
927+func getUserGwxAmountAtHeightREADONLY (aS,cG) = {
928+ let bc = cF(aS, cG)
929+ $Tuple2(nil, bc)
886930 }
887931
888932
889933
890-@Callable(aG)
891-func getTotalCachedGwxREADONLY () = $Tuple2(nil, bH(true))
934+@Callable(aI)
935+func getTotalCachedGwxREADONLY () = $Tuple2(nil, bL(true))
892936
893937
894938
895-@Callable(aG)
896-func onStakedVoteUpdate (cR,dl,dm) = {
897- let eM = if ((aG.caller == bC))
939+@Callable(aI)
940+func onBoostEmissionUpdate () = {
941+ let eP = if ((aI.caller == bD))
898942 then true
899- else aF(aG)
900- if ((eM == eM))
943+ else aH(aI)
944+ if ((eP == eP))
945+ then dX()
946+ else throw("Strict value is not equal to itself.")
947+ }
948+
949+
950+
951+@Callable(aI)
952+func onStakedVoteUpdate (cS,dh,dE) = {
953+ let eP = if ((aI.caller == bE))
954+ then true
955+ else aH(aI)
956+ if ((eP == eP))
901957 then {
902- let dt = dk(cR, dl, dm)
903- $Tuple2(dt, unit)
958+ let dG = dD(cS, dh, dE)
959+ $Tuple2(dG, unit)
904960 }
905961 else throw("Strict value is not equal to itself.")
906962 }
907963
908964
909965
910-@Callable(aG)
911-func getVotingResultStakedREADONLY (cR) = $Tuple2(nil, cW(cR))
966+@Callable(aI)
967+func getVotingResultStakedREADONLY (cS) = $Tuple2(nil, dp(cS))
912968
913969
914970
915-@Callable(aG)
916-func setManager (fm) = {
917- let eM = aF(aG)
918- if ((eM == eM))
971+@Callable(aI)
972+func getUserVoteFinalizedREADONLY (cS,dh) = $Tuple2(nil, di(cS, dh))
973+
974+
975+
976+@Callable(aI)
977+func setManager (fn) = {
978+ let eP = aH(aI)
979+ if ((eP == eP))
919980 then {
920- let fn = fromBase58String(fm)
921- if ((fn == fn))
922- then [StringEntry(ag(), fm)]
981+ let fo = fromBase58String(fn)
982+ if ((fo == fo))
983+ then [StringEntry(ag(), fn)]
923984 else throw("Strict value is not equal to itself.")
924985 }
925986 else throw("Strict value is not equal to itself.")
926987 }
927988
928989
929990
930-@Callable(aG)
991+@Callable(aI)
931992 func confirmManager () = {
932- let fo = aE()
933- let fp = if (isDefined(fo))
993+ let fp = aG()
994+ let fq = if (isDefined(fp))
934995 then true
935996 else throw("No pending manager")
936- if ((fp == fp))
997+ if ((fq == fq))
937998 then {
938- let fq = if ((aG.callerPublicKey == value(fo)))
999+ let fr = if ((aI.callerPublicKey == value(fp)))
9391000 then true
9401001 else throw("You are not pending manager")
941- if ((fq == fq))
942- then [StringEntry(af(), toBase58String(value(fo))), DeleteEntry(ag())]
1002+ if ((fr == fr))
1003+ then [StringEntry(af(), toBase58String(value(fp))), DeleteEntry(ag())]
9431004 else throw("Strict value is not equal to itself.")
9441005 }
9451006 else throw("Strict value is not equal to itself.")
9461007 }
9471008
9481009
949-@Verifier(fr)
950-func fs () = {
951- let ft = {
952- let r = aC()
1010+@Verifier(fs)
1011+func ft () = {
1012+ let fu = {
1013+ let r = aE()
9531014 if ($isInstanceOf(r, "ByteVector"))
9541015 then {
955- let aI = r
956- aI
1016+ let aK = r
1017+ aK
9571018 }
9581019 else if ($isInstanceOf(r, "Unit"))
959- then fr.senderPublicKey
1020+ then fs.senderPublicKey
9601021 else throw("Match error")
9611022 }
962- sigVerify(fr.bodyBytes, fr.proofs[0], ft)
1023+ sigVerify(fs.bodyBytes, fs.proofs[0], fu)
9631024 }
9641025

github/deemru/w8io/873ac7e 
275.29 ms