tx · FisWfXcmP2HDisjzh8QUDSVtj5gya5bWqp5HuzvvbgSt

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02500000 Waves

2023.08.14 12:53 [2710082] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "FisWfXcmP2HDisjzh8QUDSVtj5gya5bWqp5HuzvvbgSt", "fee": 2500000, "feeAssetId": null, "timestamp": 1692006844043, "version": 2, "chainId": 84, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "3GqaFfiX53uWLFBJnetJJfmMPWdz3JZgkeGqDyuXNoYLvA8wGXgaBXiM1X95FabnsSkBiaCn7A4th7fQqMaf3Eq6" ], "script": "base64:BgLOLQgCEggKBggIAQEBCBIFCgMBCAISAwoBARIECgIICBIECgIICBIDCgEIEgMKAQgSAwoBCBIECgIIARIDCgEIEgASABIFCgMICAQSAwoBCBIDCgEIEgQKAggIEgQKAggIIgNTRVAiBlNDQUxFOCIFTVVMVDgiDlBPT0xXRUlHSFRNVUxUIhBjb250cmFjdEZpbGVuYW1lIgdTQ0FMRTE4IgZNVUxUMTgiCE1VTFQxOEJJIhVkdXJhdGlvbk1vbnRoc0FsbG93ZWQiC2Jsb2Nrc0luRGF5Ig1ibG9ja3NJbk1vbnRoIgd3cmFwRXJyIgNtc2ciCHRocm93RXJyIg9nZXRTdHJpbmdPckZhaWwiB2FkZHJlc3MiA2tleSIMZ2V0SW50T3JaZXJvIg9nZXRJbnRPckRlZmF1bHQiCmRlZmF1bHRWYWwiDGdldEludE9yRmFpbCIDYWJzIgN2YWwiDmVuc3VyZVBvc2l0aXZlIgF2IgFtIhtrZXlSZWZlcnJhbHNDb250cmFjdEFkZHJlc3MiHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbCIWa2V5UmVmZXJyYWxQcm9ncmFtTmFtZSIacmVmZXJyYWxQcm9ncmFtTmFtZURlZmF1bHQiE3JlZmVycmFsUHJvZ3JhbU5hbWUiEWtleUZhY3RvcnlBZGRyZXNzIhhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAiGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAiFElkeEZhY3RvcnlDZmdJZG9EYXBwIhVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAiGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAiFUlkeEZhY3RvcnlDZmdSZXN0RGFwcCIZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcCIUSWR4RmFjdG9yeUNmZ0Rhb0RhcHAiGklkeEZhY3RvcnlDZmdNYXJrZXRpbmdEYXBwIhpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcCIWSWR4RmFjdG9yeUNmZ0JpcmRzRGFwcCINa2V5RmFjdG9yeUNmZyIma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MiCmxwQXNzZXRTdHIiFGtleUZhY3RvcnlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiG2tleUZhY3RvcnlQb29sV2VpZ2h0SGlzdG9yeSILcG9vbEFkZHJlc3MiA251bSIYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsIhRyZWFkRmFjdG9yeUNmZ09yRmFpbCIHZmFjdG9yeSIYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsIgpmYWN0b3J5Q2ZnIhhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwiF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsIhlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsIhNrZXlNYW5hZ2VyUHVibGljS2V5IhZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzIh5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQiIWtleUVtaXNzaW9uUmF0ZVBlckJsb2NrTWF4Q3VycmVudCIVa2V5RW1pc3Npb25TdGFydEJsb2NrIh1rZXlCb29zdGluZ1YyTGFzdFVwZGF0ZUhlaWdodCIVa2V5Qm9vc3RpbmdWMkludGVncmFsIhtrZXlFbWlzc2lvbkR1cmF0aW9uSW5CbG9ja3MiE2tleUVtaXNzaW9uRW5kQmxvY2siDUlkeENmZ0Fzc2V0SWQiE0lkeENmZ01pbkxvY2tBbW91bnQiFUlkeENmZ01pbkxvY2tEdXJhdGlvbiIVSWR4Q2ZnTWF4TG9ja0R1cmF0aW9uIhJJZHhDZmdNYXRoQ29udHJhY3QiFElkeENmZ0Jsb2Nrc0luUGVyaW9kIglrZXlDb25maWciFXJlYWRDb25maWdBcnJheU9yRmFpbCIIY2ZnQXJyYXkiB2Fzc2V0SWQiDW1pbkxvY2tBbW91bnQiD21pbkxvY2tEdXJhdGlvbiIPbWF4TG9ja0R1cmF0aW9uIgxtYXRoQ29udHJhY3QiDmJsb2Nrc0luUGVyaW9kIg1mb3JtYXRDb25maWdTIgxmb3JtYXRDb25maWciHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMiByRtYXRjaDAiAXMiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiE21hbmFnZXJWYXVsdEFkZHJlc3MiC211c3RNYW5hZ2VyIgFpIgJwZCICcGsiDUlkeExvY2tBbW91bnQiDElkeExvY2tTdGFydCIPSWR4TG9ja0R1cmF0aW9uIhpJZHhMb2NrTGFzdFVwZGF0ZVRpbWVzdGFtcCIQSWR4TG9ja0d3eEFtb3VudCIQSWR4TG9ja1d4Q2xhaW1lZCITa2V5TG9ja1BhcmFtc1JlY29yZCILdXNlckFkZHJlc3MiBHR4SWQiAWIiGnJlYWRMb2NrUGFyYW1zUmVjb3JkT3JGYWlsIhVrZXlVc2VyR3d4QW1vdW50VG90YWwiFmZvcm1hdExvY2tQYXJhbXNSZWNvcmQiBmFtb3VudCIFc3RhcnQiCGR1cmF0aW9uIglnd3hBbW91bnQiCXd4Q2xhaW1lZCIOa2V5TmV4dFVzZXJOdW0iEmtleVVzZXIyTnVtTWFwcGluZyISa2V5TnVtMlVzZXJNYXBwaW5nIhdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudCIga2V5U3RhdHNMb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MiEmtleVN0YXRzTG9ja3NDb3VudCISa2V5U3RhdHNVc2Vyc0NvdW50IiBrZXlVc2VyQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTCIHdXNlck51bSIia2V5VXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTCIJbHBBc3NldElkIhdrZXlVc2VyTWF4Qm9vc3RJTlRFR1JBTCIYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMIiFrZXlVc2VyQm9vc3RBdmFsYWlibGVUb0NsYWltVG90YWwiE2tleVVzZXJCb29zdENsYWltZWQiC2tleUd3eFRvdGFsIgdrZXlWb3RlIg1hbW91bnRBc3NldElkIgxwcmljZUFzc2V0SWQiBWVwb2NoIhVrZXlTdGFydEhlaWdodEJ5RXBvY2giEWtleUN1cnJlbnRFcG9jaFVpIhVrZXlWb3RpbmdSZXN1bHRTdGFrZWQiDGxwQXNzZXRJZFN0ciIda2V5Vm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWwiJWtleVZvdGluZ1Jlc3VsdFN0YWtlZExhc3RVcGRhdGVIZWlnaHQiIWtleVZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsTGFzdCIVa2V5Vm90ZVN0YWtlZEludGVncmFsIh1rZXlWb3RlU3Rha2VkTGFzdFVwZGF0ZUhlaWdodCIZa2V5Vm90ZVN0YWtlZEludGVncmFsTGFzdCIPa2V5U3Rha2VkQnlVc2VyIg51c2VyQWRkcmVzc1N0ciIPZmFjdG9yeUNvbnRyYWN0IhBlbWlzc2lvbkNvbnRyYWN0Ig9zdGFraW5nQ29udHJhY3QiEWd3eFJld2FyZENvbnRyYWN0IhZscFN0YWtpbmdQb29sc0NvbnRyYWN0IhlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0IhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0Ih1rZXlWb3RpbmdFbWlzc2lvblJhdGVDb250cmFjdCIKYm9vc3RDb2VmZiIBQCIZdXNlck51bWJlckJ5QWRkcmVzc09yRmFpbCIRZ2V0R3d4QW1vdW50VG90YWwiEmdldExvY2tlZEd3eEFtb3VudCIMZnVuY3Rpb25OYW1lIhp2b3RpbmdFbWlzc2lvblJhdGVDb250cmFjdCIYbG9ja2VkVm90aW5nRW1pc3Npb25SYXRlIhRsb2NrZWRWb3RpbmdFbWlzc2lvbiIGbG9ja2VkIgxIaXN0b3J5RW50cnkiBHR5cGUiBHVzZXIiCWxvY2tTdGFydCIKaGlzdG9yeUtFWSILaGlzdG9yeURBVEEiClN0YXRzRW50cnkiDnRvdGFsTG9ja2VkSW5jIgtkdXJhdGlvbkluYyIMbG9ja0NvdW50SW5jIg11c2Vyc0NvdW50SW5jIhtsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3NLRVkiDWxvY2tzQ291bnRLRVkiDXVzZXJzQ291bnRLRVkiDnRvdGFsQW1vdW50S0VZIhhsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MiCmxvY2tzQ291bnQiCnVzZXJzQ291bnQiC3RvdGFsQW1vdW50Ig9Mb2NrUGFyYW1zRW50cnkiImV4dHJhY3RPcHRpb25hbFBheW1lbnRBbW91bnRPckZhaWwiD2V4cGVjdGVkQXNzZXRJZCIDcG10IhVnZXRVc2VyR3d4QW1vdW50VG90YWwiGmdldFZvdGluZ0VtaXNzaW9uRXBvY2hJbmZvIg0kdDAxNTA1MTE1MzQxIg5jdXJyZW50RXBvY2hVaSISbGFzdEZpbmFsaXplZEVwb2NoIhdjdXJyZW50RXBvY2hTdGFydEhlaWdodCIYZ2V0UG9vbEFzc2V0c0J5THBBc3NldElkIhBpZHhBbW91bnRBc3NldElkIg9pZHhQcmljZUFzc2V0SWQiB3Bvb2xDZmciFGdldFVzZXJWb3RlRmluYWxpemVkIg0kdDAxNjAzMjE2MTEyIg0kdDAxNjExNTE2MTkwIgt1c2VyVm90ZUtleSIIdXNlclZvdGUiEWdldFVzZXJWb3RlU3Rha2VkIgxzdGFrZWRCeVVzZXIiFWdldFZvdGluZ1Jlc3VsdFN0YWtlZCINJHQwMTY3MzQxNjgxNCIXdm90aW5nUmVzdWx0U3Rha2VkU3RhcnQiEnZvdGluZ1Jlc3VsdFN0YWtlZCIdZ2V0Vm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWwiDSR0MDE3MTc2MTcyNTYiHnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsUHJldiIidm90aW5nUmVzdWx0U3Rha2VkTGFzdFVwZGF0ZUhlaWdodCIcdm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxEaCIadm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWwiIXJlZnJlc2hWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbCIPc3Rha2VkVm90ZURlbHRhIg0kdDAxODA5MzE4MTczIhV2b3RpbmdSZXN1bHRTdGFrZWROZXciGWdldFVzZXJWb3RlU3Rha2VkSW50ZWdyYWwiDSR0MDE4Nzg0MTg4NjQiDnVzZXJWb3RlU3Rha2VkIhp1c2VyVm90ZVN0YWtlZEludGVncmFsUHJldiIedXNlclZvdGVTdGFrZWRMYXN0VXBkYXRlSGVpZ2h0Ihh1c2VyVm90ZVN0YWtlZEludGVncmFsRGgiFnVzZXJWb3RlU3Rha2VkSW50ZWdyYWwiGXJlZnJlc2hWb3RlU3Rha2VkSW50ZWdyYWwiBGVkZ2UiDSR0MDE5NjUyMTk3MzIiEXVzZXJWb3RlRmluYWxpemVkIgdhY3Rpb25zIhN2b3RpbmdSZXN1bHRBY3Rpb25zIgt2b3RlQWN0aW9ucyIbZ2V0U3Rha2VkVm90ZXNJbnRlZ3JhbHNEaWZmIg0kdDAyMDU4NjIwNjY2Ih11c2VyVm90ZVN0YWtlZEludGVncmFsTGFzdEtleSIadXNlclZvdGVTdGFrZWRJbnRlZ3JhbExhc3QiIXZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsTGFzdEtleSIedm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxMYXN0Ihp1c2VyVm90ZVN0YWtlZEludGVncmFsRGlmZiIedm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxEaWZmIhxyZWZyZXNoQm9vc3RFbWlzc2lvbkludGVncmFsIhJ3eEVtaXNzaW9uUGVyQmxvY2siIGJvb3N0aW5nVjJMYXN0VXBkYXRlSGVpZ2h0T3B0aW9uIhhib29zdGluZ1YySW5nZXJnYWxPcHRpb24iC2VtaXNzaW9uRW5kIgFoIgJkaCIQbGFzdFVwZGF0ZUhlaWdodCIVYm9vc3RFbWlzc2lvblBlckJsb2NrIhlib29zdEVtaXNzaW9uSW50ZWdyYWxQcmV2IhVib29zdEVtaXNzaW9uSW50ZWdyYWwiFGludGVybmFsQ2xhaW1XeEJvb3N0IghyZWFkT25seSIIRU1QVFlTVFIiCnBvb2xXZWlnaHQiDnBvb2xBZGRyZXNzU3RyIiJ1c2VyTHBCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZIiB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWSIddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwiGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwiDSR0MDI0MjA4MjQzNDciG3N0YWtlZFZvdGVzSW50ZWdyYWxzQWN0aW9ucyIUdXNlclZvdGVJbnRlZ3JhbERpZmYiFnRvdGFsVm90ZXNJbnRlZ3JhbERpZmYiHXBvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsIiF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXciCWRhdGFTdGF0ZSIFZGVidWciC2xvY2tBY3Rpb25zIg5kdXJhdGlvbk1vbnRocyIKYXNzZXRJZFN0ciIJcG10QW1vdW50Ig5uZXh0VXNlck51bUtFWSIOdXNlcklzRXhpc3RpbmciCnVzZXJOdW1TdHIiDmdXeEFtb3VudFN0YXJ0Ig5nd3hBbW91bnRUb3RhbCISdXNlckd3eEFtb3VudFRvdGFsIgxnd3hSZXdhcmRJbnYiA2FyciIRZ2V0V3hXaXRoZHJhd2FibGUiCnR4SWRPcHRpb24iD3VzZXJSZWNvcmRBcnJheSIKdXNlckFtb3VudCIMbG9ja0R1cmF0aW9uIgdsb2NrRW5kIgF0IghleHBvbmVudCIOd3hXaXRoZHJhd2FibGUiEWZhY3RvcnlBZGRyZXNzU3RyIg5sb2NrQXNzZXRJZFN0ciILbWluRHVyYXRpb24iC21heER1cmF0aW9uIgtjaGVja0NhbGxlciIPcmVmZXJyZXJBZGRyZXNzIglzaWduYXR1cmUiDSR0MDI5MTQ2MjkyMTEiEWxvY2tBY3Rpb25zUmVzdWx0Ig9yZWZlcnJhbEFkZHJlc3MiBnJlZkludiIRdXBkYXRlUmVmQWN0aXZpdHkiDSR0MDI5NjY5Mjk3MzQiDSR0MDMwMDQ0MzAxNDYiEnVzZXJCb29zdEF2YWlsYWJsZSINJHQwMzAyNzgzMDM3OSIHdHhJZFN0ciIJZ3d4QnVybmVkIgxnd3hSZW1haW5pbmciD2xvY2tlZEd3eEFtb3VudCIVdXNlckd3eEFtb3VudFRvdGFsTmV3Igx0YXJnZXRIZWlnaHQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleY4BAAFhAgJfXwABYgAIAAFjAIDC1y8AAWQFAWMAAWUCDWJvb3N0aW5nLnJpZGUAAWYAEgABZwCAgJC7utat8A0AAWgJALYCAQUBZwABaQkAzAgCAAEJAMwIAgADCQDMCAIABgkAzAgCAAwJAMwIAgAYCQDMCAIAMAUDbmlsAAFqAKALAAFrAJjWAgEBbAEBbQkAuQkCCQDMCAIFAWUJAMwIAgICOiAJAMwIAgUBbQUDbmlsAgABAW4BAW0JAAIBCQEBbAEFAW0BAW8CAXABcQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAXAFAXEJAQFsAQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUBcQIPIGlzIG5vdCBkZWZpbmVkAQFyAgFwAXEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBcAUBcQAAAQFzAwFwAXEBdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQFwBQFxBQF0AQF1AgFwAXEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQFwBQFxCQEBbAEJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAXECDyBpcyBub3QgZGVm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pAMBBQJhQwUCYUQBAmFIAAQCYUkJAKIIAQkBAmFpAAMJAAECBQJhSQIGU3RyaW5nBAJhSgUCYUkJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFKBQR0aGlzAQJhSwAEAmFMCQECYUgABAJhSQkAnQgCBQJhTAkBAmFoAAMJAAECBQJhSQIGU3RyaW5nBAJhSgUCYUkJANkEAQUCYUoDCQABAgUCYUkCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECYU0BAmFOBAJhTwkBAW4BAhFQZXJtaXNzaW9uIGRlbmllZAQCYUkJAQJhSwADCQABAgUCYUkCCkJ5dGVWZWN0b3IEAmFQBQJhSQMJAAACCAUCYU4PY2FsbGVyUHVibGljS2V5BQJhUAYFAmFPAwkAAQIFAmFJAgRVbml0AwkAAAIIBQJhTgZjYWxsZXIFBHRoaXMGBQJhTwkAAgECC01hdGNoIGVycm9yAAJhUQABAAJhUgACAAJhUwADAAJhVAAEAAJhVQAFAAJhVgAGAQJhVwICYVgCYVkJALkJAgkAzAgCAgwlcyVzJXNfX2xvY2sJAMwIAgkApQgBBQJhWAkAzAgCBAJhSQUCYVkDCQABAgUCYUkCCkJ5dGVWZWN0b3IEAmFaBQJhSQkA2AQBBQJhWgMJAAECBQJhSQIEVW5pdAIGbGVnYWN5CQACAQILTWF0Y2ggZXJyb3IFA25pbAUBYQECYmECAmFYAmFZCQC1CQIJAQFvAgUEdGhpcwkBAmFXAgUCYVgFAmFZBQFhAQJiYgECYVgJALkJAgkAzAgCAhQlcyVzX19nd3hBbW91bnRUb3RhbAkAzAgCCQClCAEFAmFYBQNuaWwFAWEBAmJjBQJiZAJiZQJiZgJiZwJiaAkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJkCQDMCAIJAKQDAQUCYmUJAMwIAgkApAMBBQJiZgkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUCYmcJAMwIAgkApAMBBQJiaAUDbmlsBQFhAQJiaQACDyVzX19uZXh0VXNlck51bQECYmoBAmFYCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX191c2VyMm51bQkAzAgCBQJhWAUDbmlsBQFhAQJiawEBWQkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fbnVtMnVzZXIJAMwIAgUBWQUDbmlsBQFhAQJibAACHiVzJXNfX3N0YXRzX19hY3RpdmVUb3RhbExvY2tlZAECYm0AAiUlcyVzX19zdGF0c19fbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzAQJibgACFyVzJXNfX3N0YXRzX19sb2Nrc0NvdW50AQJibwACHSVzJXNfX3N0YXRzX19hY3RpdmVVc2Vyc0NvdW50AQJicAECYnEJALkJAgkAzAgCAiAlcyVkX191c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRWMgkAzAgCCQCkAwEFAmJxBQNuaWwFAWEBAmJyAgJicQJicwkAuQkCCQDMCAICICVzJWRfX3VzZXJCb29zdEVtaXNzaW9uTGFzdEludFYyCQDMCAIJAKQDAQUCYnEJAMwIAgUCYnMFA25pbAUBYQECYnQBAmJxCQC5CQIJAMwIAgIRJXMlZF9fbWF4Qm9vc3RJbnQJAMwIAgkApAMBBQJicQUDbmlsBQFhAQJidQACGCVzJXNfX21heEJvb3N0SW50X190b3RhbAECYnYBAmJxCQC5CQIJAMwIAgIkJXMlZF9fdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsCQDMCAIJAKQDAQUCYnEFA25pbAUBYQECYncBAmJxCQC5CQIJAMwIAgIWJXMlZF9fdXNlckJvb3N0Q2xhaW1lZAkAzAgCCQCkAwEFAmJxBQNuaWwFAWEBAmJ4AAIQJXMlc19fZ3d4X190b3RhbAECYnkEAmJ6AmJBAXACYkIJALkJAgkAzAgCAgolcyVzJXMlcyVkCQDMCAICBHZvdGUJAMwIAgUCYnoJAMwIAgUCYkEJAMwIAgkApQgBBQFwCQDMCAIJAKQDAQUCYkIFA25pbAUBYQECYkMBAmJCCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtzdGFydEhlaWdodAkAzAgCCQCkAwEFAmJCBQNuaWwFAWEBAmJEAAkAuQkCCQDMCAICAiVzCQDMCAICDmN1cnJlbnRFcG9jaFVpBQNuaWwFAWEBAmJFAgJiRgJiQgkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAhJ2b3RpbmdSZXN1bHRTdGFrZWQJAMwIAgUCYkYJAMwIAgkApAMBBQJiQgUDbmlsBQFhAQJiRwICYkYCYkIJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIadm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWwJAMwIAgUCYkYJAMwIAgkApAMBBQJiQgUDbmlsBQFhAQJiSAICYkYCYkIJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIqdm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxMYXN0VXBkYXRlSGVpZ2h0CQDMCAIFAmJGCQDMCAIJAKQDAQUCYkIFA25pbAUBYQECYkkDAmJGAXACYkIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAh52b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbExhc3QJAMwIAgUCYkYJAMwIAgkApQgBBQFwCQDMCAIJAKQDAQUCYkIFA25pbAUBYQECYkoDAmJGAXACYkIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAhJ2b3RlU3Rha2VkSW50ZWdyYWwJAMwIAgUCYkYJAMwIAgkApQgBBQFwCQDMCAIJAKQDAQUCYkIFA25pbAUBYQECYksDAmJGAXACYkIJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAiJ2b3RlU3Rha2VkSW50ZWdyYWxMYXN0VXBkYXRlSGVpZ2h0CQDMCAIFAmJGCQDMCAIJAKUIAQUBcAkAzAgCCQCkAwEFAmJCBQNuaWwFAWEBAmJMAwJiRgFwAmJCCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIWdm90ZVN0YWtlZEludGVncmFsTGFzdAkAzAgCBQJiRgkAzAgCCQClCAEFAXAJAMwIAgkApAMBBQJiQgUDbmlsBQFhAQJiTQICYk4CYkYJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIGc3Rha2VkCQDMCAIFAmJOCQDMCAIFAmJGBQNuaWwFAWEAAmJPCQEBWgAAAmFkCQECYWEBBQJiTwACYlAJAQJhZQEFAmFkAAJiUQkBAmFmAQUCYWQAAmJSCQECYWcBBQJhZAACYlMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkAuQkCCQDMCAICAiVzCQDMCAICFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QFA25pbAUBYQkBAWwBAi5scF9zdGFraW5nX3Bvb2xzIGNvbnRyYWN0IGFkZHJlc3MgaXMgdW5kZWZpbmVkCQEBbAECKWludmFsaWQgbHBfc3Rha2luZ19wb29scyBjb250cmFjdCBhZGRyZXNzAAJiVAkAuQkCCQDMCAICAiVzCQDMCAICFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QFA25pbAUBYQACYlUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFAmJPBQJiVAACYlYJALkJAgkAzAgCAgIlcwkAzAgCAhp2b3RpbmdFbWlzc2lvblJhdGVDb250cmFjdAUDbmlsBQFhAAJiVwoAAmJYCQD8BwQFAmJQAhVnZXRCb29zdENvZWZmUkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmJYAgNJbnQFAmJYCQACAQkArAICCQADAQUCYlgCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYlkBAmFYBAJhSQkAnQgCBQR0aGlzCQECYmoBCQClCAEFAmFYAwkAAQIFAmFJAgZTdHJpbmcEAmFKBQJhSQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEFAmFKCQEBbAECE2ludmFsaWQgdXNlciBudW1iZXIDCQABAgUCYUkCBFVuaXQJAQFuAQIMaW52YWxpZCB1c2VyCQACAQILTWF0Y2ggZXJyb3IBAmJaAAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYngAAAABAmNhAQJhWAQCY2ICEmdldExvY2tlZEd3eEFtb3VudAQCY2MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgQCYUkJAJ0IAgUCYlUFAmJWAwkAAQIFAmFJAgRVbml0BQR1bml0AwkAAQIFAmFJAgZTdHJpbmcEAmFKBQJhSQkApggBBQJhSgkAAgECC01hdGNoIGVycm9yCQEBbAECJGludmFsaWQgdm90aW5nIGVtaXNzaW9uIHJhdGUgYWRkcmVzcwQCY2QKAAJiWAkA/AcEBQJiVQUCY2IJAMwIAgkApQgBBQJhWAUDbmlsBQNuaWwDCQABAgUCYlgCA0ludAUCYlgJAAIBCQCsAgIJAAMBBQJiWAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJjZQoAAmJYCQD8BwQFAmNjBQJjYgkAzAgCCQClCAEFAmFYBQNuaWwFA25pbAMJAAECBQJiWAIDSW50BQJiWAkAAgEJAKwCAgkAAwEFAmJYAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmNmCQCWAwEJAMwIAgUCY2QJAMwIAgUCY2UFA25pbAUCY2YBAmNnBwJjaAJjaQJiZAJjagJiZgJiZwJhTgQCY2sJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQJjaAkAzAgCBQJjaQkAzAgCCQDYBAEIBQJhTg10cmFuc2FjdGlvbklkBQNuaWwFAWEEAmNsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUCYmQJAMwIAgkApAMBBQJjagkAzAgCCQCkAwEFAmJmCQDMCAIJAKQDAQUCYmcFA25pbAUBYQkBC1N0cmluZ0VudHJ5AgUCY2sFAmNsAQJjbQQCY24CY28CY3ACY3EEAmNyCQECYm0ABAJjcwkBAmJuAAQCY3QJAQJibwAEAmN1CQECYmwABAJjdgkBAXICBQR0aGlzBQJjcgQCY3cJAQFyAgUEdGhpcwUCY3MEAmN4CQEBcgIFBHRoaXMFAmN0BAJjeQkBAXICBQR0aGlzBQJjdQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3IJAGQCBQJjdgUCY28JAMwIAgkBDEludGVnZXJFbnRyeQIFAmNzCQBkAgUCY3cFAmNwCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjdAkAZAIFAmN4BQJjcQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3UJAGQCBQJjeQUCY24FA25pbAECY3oHAmFYAmFZAmJkAmJlAmJmAmJnAmJoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhVwIFAmFYBQJhWQkBAmJjBQUCYmQFAmJlBQJiZgUCYmcFAmJoBQNuaWwBAmNBAgJhTgJjQgMJAGYCCQCQAwEIBQJhTghwYXltZW50cwABCQEBbgECG29ubHkgb25lIHBheW1lbnQgaXMgYWxsb3dlZAMJAAACCQCQAwEIBQJhTghwYXltZW50cwAAAAAE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eQIJAQJhbQAFBmhlaWdodAUDbmlsBQJkTwECZFADAmJGAmJOAmRRBAJhWAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmJOCQEBbAECFGludmFsaWQgdXNlciBhZGRyZXNzBAJicQkBAmJZAQUCYVgDCQAAAgUCYnEFAmJxBAJkUgIFZW1wdHkEAmRTAwkBAiE9AgUCYkYFAmRSBAJkVAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmJPCQEBUwEFAmJGCQEBbAEJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJiRgkBEUBleHRyTmF0aXZlKDEwNTApAgUCYk8JAQFVAQUCZFQDBQJkUQAACQEBbgEJAKwCAgIobm90IHJlYWRvbmx5IG1vZGU6IHVuc3VwcG9ydGVkIGxwIGFzc2V0IAUCYkYEAmRVCQECYnICBQJicQUCYkYEAmRWCQECYnABBQJicQQCZFcJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCZFUJAQFyAgUEdGhpcwUCZFYEAmRPCAkBAmRFAAJfMgQCZFgJAGUCBQJkTwUCZFcDCQBmAgAABQJkWAkBAW4BAhJ3cm9uZyBjYWxjdWxhdGlvbnMEAmRZCQECZHcCBQJiRgUCYk4EAmRaCAUCZFkCXzEEAmVhCAUCZFkCXzIEAmViCAUCZFkCXzMEAmVjCQBrAwUCZFgFAmRTBQFkBAJlZAMJAAACBQJlYgAAAAAJAGsDBQJlYwUCZWEFAmViBAJlZQkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkVQUCZE8FA25pbAUCZFoEAmVmCQC5CQIJAMwIAgkApAMBBQJkVwkAzAgCCQCkAwEFAmRYCQDMCAIJAKQDAQUCZFMJAMwIAgkApAMBBQJlYQkAzAgCCQCkAwEFAmViBQNuaWwCAToJAJUKAwUCZWQFAmVlBQJlZgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZWcCAmFOAmVoAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUBaQUCZWgJAQFuAQIQaW52YWxpZCBkdXJhdGlvbgQCYmYJAGgCBQJlaAUBawQCZWkJANgEAQUCYXoDCQECIT0CCQCQAwEIBQJhTghwYXltZW50cwABCQEBbgECNGludmFsaWQgcGF5bWVudCAtIGV4YWN0IG9uZSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEAmNDCQCRAwIIBQJhTghwYXltZW50cwAABAJlaggFAmNDBmFtb3VudAMJAQIhPQIFAmF6CQEFdmFsdWUBCAUCY0MHYXNzZXRJZAkBAW4BCQCsAgIJAKwCAgIeaW52YWxpZCBhc3NldCBpcyBpbiBwYXltZW50IC0gBQJlaQIMIGlzIGV4cGVjdGVkBAJlawkBAmJpAAQCYVgIBQJhTgZjYWxsZXIEAmJOCQClCAEFAmFYBAJlbAkBCWlzRGVmaW5lZAEJAKIIAQkBAmJqAQUCYk4EAmVtAwUCZWwJAQV2YWx1ZQEJAKIIAQkBAmJqAQUCYk4JAKQDAQkBAXUCBQR0aGlzBQJlawQCYnEJAQ1wYXJzZUludFZhbHVlAQUCZW0EAmNqBQZoZWlnaHQDAwkAZgIFAmFBBQJlagkBAiE9AgUCYVgFAmJTBwkBAW4BCQCsAgICImFtb3VudCBpcyBsZXNzIHRoZW4gbWluTG9ja0Ftb3VudD0JAKQDAQUCYUEDCQBmAgUCYUIFAmJmCQEBbgEJAKwCAgItcGFzc2VkIGR1cmF0aW9uIGlzIGxlc3MgdGhlbiBtaW5Mb2NrRHVyYXRpb249CQCkAwEFAmFCAwkAZgIFAmJmBQJhQwkBAW4BCQCsAgICMHBhc3NlZCBkdXJhdGlvbiBpcyBncmVhdGVyIHRoZW4gbWF4TG9ja0R1cmF0aW9uPQkApAMBBQJhQwQCZW4JAGsDBQJlagUCYmYFAmFDBAJlbwkBAmJaAAQCZFYJAQJicAEFAmJxBAJkTwgJAQJkRQACXzIEAmVwCQECY0QBBQJhWAQCZXEJAP0HBAUCYlICEXJlZnJlc2hVc2VyUmV3YXJkCQDMCAIIBQJhWAVieXRlcwUDbmlsBQNuaWwDCQAAAgUCZXEFAmVxBAJlcgMFAmVsBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFAmVrCQBkAgUCYnEAAQkAzAgCCQELU3RyaW5nRW50cnkCCQECYmoBBQJiTgUCZW0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJrAQUCZW0FAmJOBQNuaWwJAJQKAgkAzggCCQDNCAIJAM4IAgkAzggCBQJlcgkBAmN6BwUCYVgIBQJhTg10cmFuc2FjdGlvbklkBQJlagUCY2oFAmJmBQJlbgAACQECY20EBQJlagUCYmYAAQMFAmVsAAAAAQkBAmNnBwIEbG9jawUCYk4FAmVqBQJjagUCYmYFAmVuBQJhTgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZFYFAmRPCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYngACQBkAgUCZW8FAmVuCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYmIBBQJhWAkAZAIFAmVwBQJlbgUDbmlsBQJlbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZXMCAmFYAmV0BAJldQkBAmJhAgUCYVgFAmV0BAJldgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmV1BQJhUQQCY2oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJldQUCYVIEAmV3CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXUFAmFTBAJleAkAZAIFAmNqBQJldwQCYmgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJldQUCYVYEAmV5CQBpAgkAZQIFBmhlaWdodAUCY2oFAmFFBAJlegkAvAIDCQC2AgEFAmV5CQC5AgIJALYCAQkAaAIACAUCYUUFAWgJALYCAQUCZXcEAmVBAwkAZgIFBmhlaWdodAUCZXgFAmV2CQBlAgkAoAMBCQC8AgMJALYCAQUCZXYJALgCAgUBaAkAdgYJALYCAQAFAAEFAmV6BQFmBQFmBQRET1dOBQFoBQJiaAUCZUERAmFOAQtjb25zdHJ1Y3RvcgYCZUICZUMCYUECZUQCZUUCYUQEAmVGCQECYU0BBQJhTgMJAAACBQJlRgUCZUYJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJpAAAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhdwAJAQJhRwUFAmVDBQJhQQUCZUQFAmVFBQJhRAkAzAgCCQELU3RyaW5nRW50cnkCCQEBRgAFAmVCBQNuaWwJAQJjbQQAAAAAAAAAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhTgEHbG9ja1JlZgMCYmYCZUcCZUgEAmVJCQECZWcCBQJhTgUCYmYEAmVKCAUCZUkCXzEEAmVuCAUCZUkCXzIEAmVLCQClCAEIBQJhTgZjYWxsZXIEAmVMAwMJAAACBQJlRwIABgkAAAIFAmVIAQAFBHVuaXQJAPwHBAUBQgIKY3JlYXRlUGFpcgkAzAgCBQFFCQDMCAIFAmVHCQDMCAIFAmVLCQDMCAIFAmVIBQNuaWwFA25pbAMJAAACBQJlTAUCZUwEAmVNCQD8BwQFAmFEAhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIJAKUIAQgFAmFOBmNhbGxlcgkAzAgCBQJlbgUDbmlsBQNuaWwDCQAAAgUCZU0FAmVNCQCUCgIFAmVKBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFOAQRsb2NrAQJiZgQCZU4JAQJlZwIFAmFOBQJiZgQCZUoIBQJlTgJfMQQCZW4IBQJlTgJfMgQCZU0JAPwHBAUCYUQCFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkJAMwIAgkApQgBCAUCYU4GY2FsbGVyCQDMCAIFAmVuBQNuaWwFA25pbAMJAAACBQJlTQUCZU0JAJQKAgUCZUoFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU4BDGNsYWltV3hCb29zdAICYkYCYk4DCQECIT0CBQJiUQgFAmFOBmNhbGxlcgkBAW4BAhJwZXJtaXNzaW9ucyBkZW5pZWQEAmVPCQECZFADBQJiRgUCYk4HBAJlUAgFAmVPAl8xBAJlZQgFAmVPAl8yBAJlZggFAmVPAl8zCQCUCgIFAmVlCQDMCAIFAmVQBQNuaWwCYU4BFGNsYWltV3hCb29zdFJFQURPTkxZAgJiRgJiTgQCZVEJAQJkUAMFAmJGBQJiTgYEAmVQCAUCZVECXzEEAmVlCAUCZVECXzIEAmVmCAUCZVECXzMJAJQKAgUDbmlsCQDMCAIFAmVQCQDMCAIFAmVmBQNuaWwCYU4BBnVubG9jawECZVIEAmFYCAUCYU4GY2FsbGVyBAJiTgkApQgBBQJhWAQCYVkJANkEAQUCZVIEAmV1CQECYmECBQJhWAMJAAACBQJlUgIABQR1bml0BQJhWQQCZXYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJldQUCYVEEAmNqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXUFAmFSBAJldwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmV1BQJhUwQCYmgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJldQUCYVYEAmJnCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZXUFAmFVBAJleQkAaQIJAGUCBQZoZWlnaHQFAmNqBQJhRQQCZUEJAQJlcwIFAmFYAwkAAAIFAmVSAgAFBHVuaXQFAmFZBAJlbgkAawMFAmV2BQJldwUCYUMEAmVTCQCXAwEJAMwIAgkAawMJAGgCBQJleQUCYUUFAmVuBQJhQwkAzAgCBQJiZwUDbmlsBAJlVAkBAXgCCQBlAgUCYmcFAmVTAgxnd3hSZW1haW5pbmcEAmVVCQECY2EBBQJhWAMJAGcCAAAFAmV2CQEBbgECEW5vdGhpbmcgdG8gdW5sb2NrBAJlbwkBAmJaAAQCZXAJAQJjRAEFAmFYBAJlVgkBAXgCCQBlAgUCZXAFAmVTAhV1c2VyR3d4QW1vdW50VG90YWxOZXcDCQBmAgUCZVUFAmVWCQEBbgEJAKwCAgITbG9ja2VkIGd3eCBhbW91bnQ6IAkApAMBBQJlVQQCZXEJAP0HBAUCYlICEXJlZnJlc2hVc2VyUmV3YXJkCQDMCAIIBQJhWAVieXRlcwUDbmlsBQNuaWwDCQAAAgUCZXEFAmVxCQDOCAIJAM0IAgkAzQgCCQDOCAIJAQJjegcFAmFYBQJhWQUCZXYFAmNqBQJldwUCZVQJAGQCBQJiaAUCZUEJAQJjbQQJAQEtAQUCZUEAAAAAAAAJAQJjZwcCBnVubG9jawUCYk4FAmVBBQJjagUCZXcFAmVTBQJhTgkBDlNjcmlwdFRyYW5zZmVyAwUCYVgFAmVBBQJhegkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJ4AAkBAXgCCQBlAgUCZW8FAmVTAghnd3hUb3RhbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJiAQUCYVgFAmVWBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU4BE2d3eFVzZXJJbmZvUkVBRE9OTFkBAmJOBAJhWAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmJOCQEBbAECFGludmFsaWQgdXNlciBhZGRyZXNzBAJiZwkBAmNEAQUCYVgJAJQKAgUDbmlsCQDMCAIFAmJnBQNuaWwCYU4BF3VzZXJNYXhEdXJhdGlvblJFQURPTkxZAQJiTgkAlAoCBQNuaWwJAJQKAgIMaW5jcmVhc2VMb2NrBQJhQwJhTgEgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkCAmJOAmVXBAJhWAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmJOCQEBbAECFGludmFsaWQgdXNlciBhZGRyZXNzBAJiZwkBAmNEAQUCYVgJAJQKAgUDbmlsBQJiZwJhTgEQZ2V0VXNlckd3eEFtb3VudAECYk4EAmFYCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUCYk4JAQFsAQIUaW52YWxpZCB1c2VyIGFkZHJlc3MEAmJnCQECY0QBBQJhWAkAlAoCBQNuaWwFAmJnAmFOARNnZXRHd3hUb3RhbFJFQURPTkxZAAkAlAoCBQNuaWwJAQJiWgACYU4BFW9uQm9vc3RFbWlzc2lvblVwZGF0ZQAEAmVGAwkAAAIIBQJhTgZjYWxsZXIFAmJQBgkBAmFNAQUCYU4DCQAAAgUCZUYFAmVGCQECZEUACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFOARJvblN0YWtlZFZvdGVVcGRhdGUDAmJGAmJOAmRxBAJlRgMJAAACCAUCYU4GY2FsbGVyBQJiUQYJAQJhTQEFAmFOAwkAAAIFAmVGBQJlRgQCZHQJAQJkcAMFAmJGBQJiTgUCZHEJAJQKAgUCZHQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU4BHWdldFZvdGluZ1Jlc3VsdFN0YWtlZFJFQURPTkxZAQJiRgkAlAoCBQNuaWwJAQJjVQEFAmJGAmFOASVnZXRWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbFJFQURPTkxZAQJiRgkAlAoCBQNuaWwJAQJjWQEFAmJGAmFOARxnZXRVc2VyVm90ZUZpbmFsaXplZFJFQURPTkxZAgJiRgJiTgkAlAoCBQNuaWwJAQJjTgIFAmJGBQJiTgJhTgEhZ2V0VXNlclZvdGVTdGFrZWRJbnRlZ3JhbFJFQURPTkxZAgJiRgJiTgkAlAoCBQNuaWwJAQJkaQIFAmJGBQJiTgECZVgBAmVZAAQCZVoEAmFJCQECYUsAAwkAAQIFAmFJAgpCeXRlVmVjdG9yBAJhUAUCYUkFAmFQAwkAAQIFAmFJAgRVbml0CAUCZVgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmVYCWJvZHlCeXRlcwkAkQMCCAUCZVgGcHJvb2ZzAAAFAmVay5RQ+A==", "height": 2710082, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HNuyo542xzNyJZ8fWbNgw4Y9zsDqt61JkAmxSk7M3QJc Next: 319rJAAw9xqhiwHhkf2aoRxkpy2JsiWLU9sKv1ym55HG Diff:
OldNewDifferences
144144 func ap () = "%s%s__emission__endBlock"
145145
146146
147-func aq () = "%s__nextPeriod"
147+let aq = 1
148+
149+let ar = 2
150+
151+let as = 3
152+
153+let at = 4
154+
155+let au = 5
156+
157+let av = 6
158+
159+func aw () = "%s__config"
148160
149161
150-func ar () = "%s%s__gwxRewardEmissionPart__startHeight"
162+func ax () = split(o(this, aw()), a)
151163
152164
153-let as = 1
165+let ay = ax()
154166
155-let at = 2
167+let az = fromBase58String(ay[aq])
156168
157-let au = 3
169+let aA = valueOrErrorMessage(parseInt(ay[ar]), l("invalid min lock amount"))
158170
159-let av = 4
171+let aB = valueOrErrorMessage(parseInt(ay[as]), l("invalid min lock duration"))
160172
161-let aw = 5
173+let aC = valueOrErrorMessage(parseInt(ay[at]), l("invalid max lock duration"))
162174
163-let ax = 6
175+let aD = valueOrErrorMessage(addressFromString(ay[au]), l("invalid math contract address"))
164176
165-func ay () = "%s__config"
177+let aE = valueOrErrorMessage(parseInt(ay[av]), l("invalid blocks in period"))
178+
179+func aF (az,aA,aB,aC,aD) = makeString(["%s%d%d%d%s", az, aA, aB, aC, aD], a)
166180
167181
168-func az () = split(o(this, ay()), a)
182+func aG (az,aA,aB,aC,aD) = aF(az, toString(aA), toString(aB), toString(aC), aD)
169183
170184
171-let aA = az()
172-
173-let aB = fromBase58String(aA[as])
174-
175-let aC = valueOrErrorMessage(parseInt(aA[at]), l("invalid min lock amount"))
176-
177-let aD = valueOrErrorMessage(parseInt(aA[au]), l("invalid min lock duration"))
178-
179-let aE = valueOrErrorMessage(parseInt(aA[av]), l("invalid max lock duration"))
180-
181-let aF = valueOrErrorMessage(addressFromString(aA[aw]), l("invalid math contract address"))
182-
183-let aG = valueOrErrorMessage(parseInt(aA[ax]), l("invalid blocks in period"))
184-
185-func aH (aB,aC,aD,aE,aF) = makeString(["%s%d%d%d%s", aB, aC, aD, aE, aF], a)
186-
187-
188-func aI (aB,aC,aD,aE,aF) = aH(aB, toString(aC), toString(aD), toString(aE), aF)
189-
190-
191-func aJ () = {
192- let aK = getString(ai())
193- if ($isInstanceOf(aK, "String"))
185+func aH () = {
186+ let aI = getString(ai())
187+ if ($isInstanceOf(aI, "String"))
194188 then {
195- let aL = aK
196- addressFromStringValue(aL)
189+ let aJ = aI
190+ addressFromStringValue(aJ)
197191 }
198192 else this
199193 }
200194
201195
202-func aM () = {
203- let aN = aJ()
204- let aK = getString(aN, ah())
205- if ($isInstanceOf(aK, "String"))
196+func aK () = {
197+ let aL = aH()
198+ let aI = getString(aL, ah())
199+ if ($isInstanceOf(aI, "String"))
206200 then {
207- let aL = aK
208- fromBase58String(aL)
201+ let aJ = aI
202+ fromBase58String(aJ)
209203 }
210- else if ($isInstanceOf(aK, "Unit"))
204+ else if ($isInstanceOf(aI, "Unit"))
211205 then unit
212206 else throw("Match error")
213207 }
214208
215209
216-func aO (aP) = {
217- let aQ = n("Permission denied")
218- let aK = aM()
219- if ($isInstanceOf(aK, "ByteVector"))
210+func aM (aN) = {
211+ let aO = n("Permission denied")
212+ let aI = aK()
213+ if ($isInstanceOf(aI, "ByteVector"))
220214 then {
221- let aR = aK
222- if ((aP.callerPublicKey == aR))
215+ let aP = aI
216+ if ((aN.callerPublicKey == aP))
223217 then true
224- else aQ
218+ else aO
225219 }
226- else if ($isInstanceOf(aK, "Unit"))
227- then if ((aP.caller == this))
220+ else if ($isInstanceOf(aI, "Unit"))
221+ then if ((aN.caller == this))
228222 then true
229- else aQ
223+ else aO
230224 else throw("Match error")
231225 }
232226
233227
234-let aS = 1
228+let aQ = 1
235229
236-let aT = 2
230+let aR = 2
237231
238-let aU = 3
232+let aS = 3
239233
240-let aV = 4
234+let aT = 4
241235
242-let aW = 5
236+let aU = 5
243237
244-let aX = 6
238+let aV = 6
245239
246-func aY (aZ,ba) = makeString(["%s%s%s__lock", toString(aZ), {
247- let aK = ba
248- if ($isInstanceOf(aK, "ByteVector"))
240+func aW (aX,aY) = makeString(["%s%s%s__lock", toString(aX), {
241+ let aI = aY
242+ if ($isInstanceOf(aI, "ByteVector"))
249243 then {
250- let bb = aK
251- toBase58String(bb)
244+ let aZ = aI
245+ toBase58String(aZ)
252246 }
253- else if ($isInstanceOf(aK, "Unit"))
247+ else if ($isInstanceOf(aI, "Unit"))
254248 then "legacy"
255249 else throw("Match error")
256250 }], a)
257251
258252
259-func bc (aZ,ba) = split(o(this, aY(aZ, ba)), a)
253+func ba (aX,aY) = split(o(this, aW(aX, aY)), a)
260254
261255
262-func bd (aZ) = makeString(["%s%s__gwxAmountTotal", toString(aZ)], a)
256+func bb (aX) = makeString(["%s%s__gwxAmountTotal", toString(aX)], a)
263257
264258
265-func be (bf,bg,bh,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bf), toString(bg), toString(bh), toString(lastBlock.timestamp), toString(bi), toString(bj)], a)
259+func bc (bd,be,bf,bg,bh) = makeString(["%d%d%d%d%d%d", toString(bd), toString(be), toString(bf), toString(lastBlock.timestamp), toString(bg), toString(bh)], a)
266260
267261
268-func bk () = "%s__nextUserNum"
262+func bi () = "%s__nextUserNum"
269263
270264
271-func bl (aZ) = makeString(["%s%s%s__mapping__user2num", aZ], a)
265+func bj (aX) = makeString(["%s%s%s__mapping__user2num", aX], a)
272266
273267
274-func bm (Y) = makeString(["%s%s%s__mapping__num2user", Y], a)
268+func bk (Y) = makeString(["%s%s%s__mapping__num2user", Y], a)
275269
276270
277-func bn () = "%s%s__stats__activeTotalLocked"
271+func bl () = "%s%s__stats__activeTotalLocked"
278272
279273
280-func bo () = "%s%s__stats__locksDurationSumInBlocks"
274+func bm () = "%s%s__stats__locksDurationSumInBlocks"
281275
282276
283-func bp () = "%s%s__stats__locksCount"
277+func bn () = "%s%s__stats__locksCount"
284278
285279
286-func bq () = "%s%s__stats__activeUsersCount"
280+func bo () = "%s%s__stats__activeUsersCount"
287281
288282
289-func br (bs) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(bs)], a)
283+func bp (bq) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(bq)], a)
290284
291285
292-func bt (bs,bu) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(bs), bu], a)
286+func br (bq,bs) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(bq), bs], a)
293287
294288
295-func bv (bs) = makeString(["%s%d__maxBoostInt", toString(bs)], a)
289+func bt (bq) = makeString(["%s%d__maxBoostInt", toString(bq)], a)
296290
297291
298-func bw () = "%s%s__maxBoostInt__total"
292+func bu () = "%s%s__maxBoostInt__total"
299293
300294
301-func bx (bs) = makeString(["%s%d__userBoostAvaliableToClaimTotal", toString(bs)], a)
295+func bv (bq) = makeString(["%s%d__userBoostAvaliableToClaimTotal", toString(bq)], a)
302296
303297
304-func by (bs) = makeString(["%s%d__userBoostClaimed", toString(bs)], a)
298+func bw (bq) = makeString(["%s%d__userBoostClaimed", toString(bq)], a)
305299
306300
307-func bz () = "%s%s__gwx__total"
301+func bx () = "%s%s__gwx__total"
308302
309303
310-func bA (bB,bC,p,bD) = makeString(["%s%s%s%s%d", "vote", bB, bC, toString(p), toString(bD)], a)
304+func by (bz,bA,p,bB) = makeString(["%s%s%s%s%d", "vote", bz, bA, toString(p), toString(bB)], a)
311305
312306
313-func bE (bD) = makeString(["%s%d", "startHeight", toString(bD)], a)
307+func bC (bB) = makeString(["%s%d", "startHeight", toString(bB)], a)
314308
315309
316-func bF () = makeString(["%s", "currentEpochUi"], a)
310+func bD () = makeString(["%s", "currentEpochUi"], a)
317311
318312
319-func bG (bH,bD) = makeString(["%s%s%d", "votingResultStaked", bH, toString(bD)], a)
313+func bE (bF,bB) = makeString(["%s%s%d", "votingResultStaked", bF, toString(bB)], a)
320314
321315
322-func bI (bH,bD) = makeString(["%s%s%d", "votingResultStakedIntegral", bH, toString(bD)], a)
316+func bG (bF,bB) = makeString(["%s%s%d", "votingResultStakedIntegral", bF, toString(bB)], a)
323317
324318
325-func bJ (bH,bD) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", bH, toString(bD)], a)
319+func bH (bF,bB) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", bF, toString(bB)], a)
326320
327321
328-func bK (bH,p,bD) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", bH, toString(p), toString(bD)], a)
322+func bI (bF,p,bB) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", bF, toString(p), toString(bB)], a)
329323
330324
331-func bL (bH,p,bD) = makeString(["%s%s%s%d", "voteStakedIntegral", bH, toString(p), toString(bD)], a)
325+func bJ (bF,p,bB) = makeString(["%s%s%s%d", "voteStakedIntegral", bF, toString(p), toString(bB)], a)
332326
333327
334-func bM (bH,p,bD) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", bH, toString(p), toString(bD)], a)
328+func bK (bF,p,bB) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", bF, toString(p), toString(bB)], a)
335329
336330
337-func bN (bH,p,bD) = makeString(["%s%s%s%d", "voteStakedIntegralLast", bH, toString(p), toString(bD)], a)
331+func bL (bF,p,bB) = makeString(["%s%s%s%d", "voteStakedIntegralLast", bF, toString(p), toString(bB)], a)
338332
339333
340-func bO (bP,bH) = makeString(["%s%s%s", "staked", bP, bH], a)
334+func bM (bN,bF) = makeString(["%s%s%s", "staked", bN, bF], a)
341335
342336
343-let bQ = Z()
337+let bO = Z()
344338
345-let ad = aa(bQ)
339+let ad = aa(bO)
346340
347-let bR = ae(ad)
341+let bP = ae(ad)
348342
349-let bS = af(ad)
343+let bQ = af(ad)
350344
351-let bT = ag(ad)
345+let bR = ag(ad)
352346
353-let bU = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), l("lp_staking_pools contract address is undefined"))), l("invalid lp_staking_pools contract address"))
347+let bS = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), l("lp_staking_pools contract address is undefined"))), l("invalid lp_staking_pools contract address"))
354348
355-let bV = makeString(["%s", "votingEmissionContract"], a)
349+let bT = makeString(["%s", "votingEmissionContract"], a)
356350
357-let bW = addressFromStringValue(getStringValue(bQ, bV))
351+let bU = addressFromStringValue(getStringValue(bO, bT))
358352
359-let bX = makeString(["%s", "votingEmissionRateContract"], a)
353+let bV = makeString(["%s", "votingEmissionRateContract"], a)
360354
361-let bY = {
362- let bZ = invoke(bR, "getBoostCoeffREADONLY", nil, nil)
363- if ($isInstanceOf(bZ, "Int"))
364- then bZ
365- else throw(($getType(bZ) + " couldn't be cast to Int"))
355+let bW = {
356+ let bX = invoke(bP, "getBoostCoeffREADONLY", nil, nil)
357+ if ($isInstanceOf(bX, "Int"))
358+ then bX
359+ else throw(($getType(bX) + " couldn't be cast to Int"))
366360 }
367361
368-func ca (aZ) = {
369- let aK = getString(this, bl(toString(aZ)))
370- if ($isInstanceOf(aK, "String"))
362+func bY (aX) = {
363+ let aI = getString(this, bj(toString(aX)))
364+ if ($isInstanceOf(aI, "String"))
371365 then {
372- let aL = aK
373- valueOrErrorMessage(parseInt(aL), l("invalid user number"))
366+ let aJ = aI
367+ valueOrErrorMessage(parseInt(aJ), l("invalid user number"))
374368 }
375- else if ($isInstanceOf(aK, "Unit"))
369+ else if ($isInstanceOf(aI, "Unit"))
376370 then n("invalid user")
377371 else throw("Match error")
378372 }
379373
380374
381-func cb () = valueOrElse(getInteger(this, bz()), 0)
375+func bZ () = valueOrElse(getInteger(this, bx()), 0)
382376
383377
384-func cc (aZ) = {
385- let cd = "getLockedGwxAmount"
386- let ce = valueOrErrorMessage({
387- let aK = getString(bW, bX)
388- if ($isInstanceOf(aK, "Unit"))
378+func ca (aX) = {
379+ let cb = "getLockedGwxAmount"
380+ let cc = valueOrErrorMessage({
381+ let aI = getString(bU, bV)
382+ if ($isInstanceOf(aI, "Unit"))
389383 then unit
390- else if ($isInstanceOf(aK, "String"))
384+ else if ($isInstanceOf(aI, "String"))
391385 then {
392- let aL = aK
393- addressFromString(aL)
386+ let aJ = aI
387+ addressFromString(aJ)
394388 }
395389 else throw("Match error")
396390 }, l("invalid voting emission rate address"))
397- let cf = {
398- let bZ = invoke(bW, cd, [toString(aZ)], nil)
399- if ($isInstanceOf(bZ, "Int"))
400- then bZ
401- else throw(($getType(bZ) + " couldn't be cast to Int"))
391+ let cd = {
392+ let bX = invoke(bU, cb, [toString(aX)], nil)
393+ if ($isInstanceOf(bX, "Int"))
394+ then bX
395+ else throw(($getType(bX) + " couldn't be cast to Int"))
402396 }
403- let cg = {
404- let bZ = invoke(ce, cd, [toString(aZ)], nil)
405- if ($isInstanceOf(bZ, "Int"))
406- then bZ
407- else throw(($getType(bZ) + " couldn't be cast to Int"))
397+ let ce = {
398+ let bX = invoke(cc, cb, [toString(aX)], nil)
399+ if ($isInstanceOf(bX, "Int"))
400+ then bX
401+ else throw(($getType(bX) + " couldn't be cast to Int"))
408402 }
409- let ch = max([cf, cg])
410- ch
403+ let cf = max([cd, ce])
404+ cf
411405 }
412406
413407
414-func ci (cj,ck,bf,cl,bh,bi,aP) = {
415- let cm = makeString(["%s%s%s%s__history", cj, ck, toBase58String(aP.transactionId)], a)
416- let cn = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(bf), toString(cl), toString(bh), toString(bi)], a)
417- StringEntry(cm, cn)
408+func cg (ch,ci,bd,cj,bf,bg,aN) = {
409+ let ck = makeString(["%s%s%s%s__history", ch, ci, toBase58String(aN.transactionId)], a)
410+ let cl = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(bd), toString(cj), toString(bf), toString(bg)], a)
411+ StringEntry(ck, cl)
418412 }
419413
420414
421-func co (cp,cq,cr,cs) = {
415+func cm (cn,co,cp,cq) = {
416+ let cr = bm()
417+ let cs = bn()
422418 let ct = bo()
423- let cu = bp()
424- let cv = bq()
425- let cw = bn()
419+ let cu = bl()
420+ let cv = r(this, cr)
421+ let cw = r(this, cs)
426422 let cx = r(this, ct)
427423 let cy = r(this, cu)
428- let cz = r(this, cv)
429- let cA = r(this, cw)
430-[IntegerEntry(ct, (cx + cq)), IntegerEntry(cu, (cy + cr)), IntegerEntry(cv, (cz + cs)), IntegerEntry(cw, (cA + cp))]
424+[IntegerEntry(cr, (cv + co)), IntegerEntry(cs, (cw + cp)), IntegerEntry(ct, (cx + cq)), IntegerEntry(cu, (cy + cn))]
431425 }
432426
433427
434-func cB (aZ,ba,bf,bg,bh,bi,bj) = [StringEntry(aY(aZ, ba), be(bf, bg, bh, bi, bj))]
428+func cz (aX,aY,bd,be,bf,bg,bh) = [StringEntry(aW(aX, aY), bc(bd, be, bf, bg, bh))]
435429
436430
437-func cC (aP,cD) = if ((size(aP.payments) > 1))
431+func cA (aN,cB) = if ((size(aN.payments) > 1))
438432 then n("only one payment is allowed")
439- else if ((size(aP.payments) == 0))
433+ else if ((size(aN.payments) == 0))
440434 then 0
441435 else {
442- let cE = aP.payments[0]
443- if ((value(cE.assetId) != cD))
436+ let cC = aN.payments[0]
437+ if ((value(cC.assetId) != cB))
444438 then n("invalid asset id in payment")
445- else cE.amount
439+ else cC.amount
446440 }
447441
448442
449-func cF (aZ) = valueOrElse(getInteger(this, bd(aZ)), 0)
443+func cD (aX) = valueOrElse(getInteger(this, bb(aX)), 0)
450444
451445
452-func cG () = {
453- let cH = {
454- let cI = value(getInteger(bW, bF()))
455- let cJ = (cI - 1)
456- if ((0 > cJ))
446+func cE () = {
447+ let cF = {
448+ let cG = value(getInteger(bU, bD()))
449+ let cH = (cG - 1)
450+ if ((0 > cH))
457451 then n("invalid epoch")
458- else $Tuple2(cI, cJ)
452+ else $Tuple2(cG, cH)
459453 }
460- let cI = cH._1
461- let cJ = cH._2
462- let cK = value(getInteger(bW, bE(cI)))
463- $Tuple2(cJ, cK)
454+ let cG = cF._1
455+ let cH = cF._2
456+ let cI = value(getInteger(bU, bC(cG)))
457+ $Tuple2(cH, cI)
464458 }
465459
466460
467-func cL (bH) = {
468- let cM = 4
469- let cN = 5
470- let cO = {
471- let bZ = invoke(bQ, "getPoolConfigByLpAssetIdREADONLY", [bH], nil)
472- if ($isInstanceOf(bZ, "List[Any]"))
473- then bZ
474- else throw(($getType(bZ) + " couldn't be cast to List[Any]"))
461+func cJ (bF) = {
462+ let cK = 4
463+ let cL = 5
464+ let cM = {
465+ let bX = invoke(bO, "getPoolConfigByLpAssetIdREADONLY", [bF], nil)
466+ if ($isInstanceOf(bX, "List[Any]"))
467+ then bX
468+ else throw(($getType(bX) + " couldn't be cast to List[Any]"))
475469 }
476- let bB = {
477- let bZ = cO[cM]
478- if ($isInstanceOf(bZ, "String"))
479- then bZ
480- else throw(($getType(bZ) + " couldn't be cast to String"))
470+ let bz = {
471+ let bX = cM[cK]
472+ if ($isInstanceOf(bX, "String"))
473+ then bX
474+ else throw(($getType(bX) + " couldn't be cast to String"))
481475 }
482- let bC = {
483- let bZ = cO[cN]
484- if ($isInstanceOf(bZ, "String"))
485- then bZ
486- else throw(($getType(bZ) + " couldn't be cast to String"))
476+ let bA = {
477+ let bX = cM[cL]
478+ if ($isInstanceOf(bX, "String"))
479+ then bX
480+ else throw(($getType(bX) + " couldn't be cast to String"))
487481 }
488- $Tuple2(bB, bC)
482+ $Tuple2(bz, bA)
489483 }
490484
491485
492-func cP (bH,bP) = {
493- let aZ = addressFromStringValue(bP)
494- let cQ = cG()
495- let cJ = cQ._1
496- let cK = cQ._2
497- let cR = cL(bH)
498- let bB = cR._1
499- let bC = cR._2
500- let cS = bA(bB, bC, aZ, cJ)
501- let cT = valueOrElse(getInteger(bW, cS), 0)
502- cT
486+func cN (bF,bN) = {
487+ let aX = addressFromStringValue(bN)
488+ let cO = cE()
489+ let cH = cO._1
490+ let cI = cO._2
491+ let cP = cJ(bF)
492+ let bz = cP._1
493+ let bA = cP._2
494+ let cQ = by(bz, bA, aX, cH)
495+ let cR = valueOrElse(getInteger(bU, cQ), 0)
496+ cR
503497 }
504498
505499
506-func cU (bH,bP) = {
507- let cV = valueOrElse(getInteger(bS, bO(bP, bH)), 0)
508- let cT = cP(bH, bP)
509- if ((cV == 0))
500+func cS (bF,bN) = {
501+ let cT = valueOrElse(getInteger(bQ, bM(bN, bF)), 0)
502+ let cR = cN(bF, bN)
503+ if ((cT == 0))
510504 then 0
511- else cT
505+ else cR
512506 }
513507
514508
515-func cW (bH) = {
516- let cX = cG()
517- let cJ = cX._1
518- let cK = cX._2
519- let cY = valueOrElse(getInteger(bW, bG(bH, cJ)), 0)
520- let cZ = valueOrElse(getInteger(this, bG(bH, cJ)), cY)
521- cZ
509+func cU (bF) = {
510+ let cV = cE()
511+ let cH = cV._1
512+ let cI = cV._2
513+ let cW = valueOrElse(getInteger(bU, bE(bF, cH)), 0)
514+ let cX = valueOrElse(getInteger(this, bE(bF, cH)), cW)
515+ cX
522516 }
523517
524518
525-func da (bH) = {
526- let db = cG()
527- let cJ = db._1
528- let cK = db._2
529- let cZ = cW(bH)
530- let dc = valueOrElse(getInteger(this, bI(bH, cJ)), 0)
531- let dd = valueOrElse(getInteger(this, bJ(bH, cJ)), cK)
532- let de = (height - dd)
533- let df = ((de * cZ) + dc)
534- df
519+func cY (bF) = {
520+ let cZ = cE()
521+ let cH = cZ._1
522+ let cI = cZ._2
523+ let cX = cU(bF)
524+ let da = valueOrElse(getInteger(this, bG(bF, cH)), 0)
525+ let db = valueOrElse(getInteger(this, bH(bF, cH)), cI)
526+ let dc = (height - db)
527+ let dd = ((dc * cX) + da)
528+ dd
535529 }
536530
537531
538-func dg (bH,dh) = {
539- let di = cG()
540- let cJ = di._1
541- let cK = di._2
542- let cZ = cW(bH)
543- let dj = (cZ + dh)
544- let df = da(bH)
545-[IntegerEntry(bG(bH, cJ), dj), IntegerEntry(bJ(bH, cJ), height), IntegerEntry(bI(bH, cJ), df)]
532+func de (bF,df) = {
533+ let dg = cE()
534+ let cH = dg._1
535+ let cI = dg._2
536+ let cX = cU(bF)
537+ let dh = (cX + df)
538+ let dd = cY(bF)
539+[IntegerEntry(bE(bF, cH), dh), IntegerEntry(bH(bF, cH), height), IntegerEntry(bG(bF, cH), dd)]
546540 }
547541
548542
549-func dk (bH,bP) = {
550- let dl = cG()
551- let cJ = dl._1
552- let cK = dl._2
553- let aZ = addressFromStringValue(bP)
554- let dm = cU(bH, bP)
555- let dn = valueOrElse(getInteger(this, bL(bH, aZ, cJ)), 0)
556- let do = valueOrElse(getInteger(this, bM(bH, aZ, cJ)), cK)
557- let dp = (height - do)
558- let dq = ((dp * dm) + dn)
559- dq
543+func di (bF,bN) = {
544+ let dj = cE()
545+ let cH = dj._1
546+ let cI = dj._2
547+ let aX = addressFromStringValue(bN)
548+ let dk = cS(bF, bN)
549+ let dl = valueOrElse(getInteger(this, bJ(bF, aX, cH)), 0)
550+ let dm = valueOrElse(getInteger(this, bK(bF, aX, cH)), cI)
551+ let dn = (height - dm)
552+ let do = ((dn * dk) + dl)
553+ do
560554 }
561555
562556
563-func dr (bH,bP,ds) = {
564- let dt = cG()
565- let cJ = dt._1
566- let cK = dt._2
567- let aZ = addressFromStringValue(bP)
568- let du = cP(bH, bP)
569- let dv = if ((du == 0))
557+func dp (bF,bN,dq) = {
558+ let dr = cE()
559+ let cH = dr._1
560+ let cI = dr._2
561+ let aX = addressFromStringValue(bN)
562+ let ds = cN(bF, bN)
563+ let dt = if ((ds == 0))
570564 then nil
571565 else {
572- let dh = if (ds)
573- then du
574- else -(du)
575- let dw = dg(bH, dh)
576- let dq = dk(bH, bP)
577- let dx = [IntegerEntry(bM(bH, aZ, cJ), height), IntegerEntry(bL(bH, aZ, cJ), dq)]
578- (dw ++ dx)
566+ let df = if (dq)
567+ then ds
568+ else -(ds)
569+ let du = de(bF, df)
570+ let do = di(bF, bN)
571+ let dv = [IntegerEntry(bK(bF, aX, cH), height), IntegerEntry(bJ(bF, aX, cH), do)]
572+ (du ++ dv)
579573 }
580- dv
574+ dt
581575 }
582576
583577
584-func dy (bH,bP) = {
585- let dz = cG()
586- let cJ = dz._1
587- let cK = dz._2
588- let aZ = addressFromStringValue(bP)
589- let dA = bN(bH, aZ, cJ)
578+func dw (bF,bN) = {
579+ let dx = cE()
580+ let cH = dx._1
581+ let cI = dx._2
582+ let aX = addressFromStringValue(bN)
583+ let dy = bL(bF, aX, cH)
584+ let dz = valueOrElse(getInteger(this, dy), 0)
585+ let dA = bI(bF, aX, cH)
590586 let dB = valueOrElse(getInteger(this, dA), 0)
591- let dC = bK(bH, aZ, cJ)
592- let dD = valueOrElse(getInteger(this, dC), 0)
593- let dq = dk(bH, bP)
594- let df = da(bH)
595- let dE = (dq - dB)
596- let dF = (df - dD)
597- $Tuple3([IntegerEntry(dA, dq), IntegerEntry(dC, df)], dE, dF)
587+ let do = di(bF, bN)
588+ let dd = cY(bF)
589+ let dC = (do - dz)
590+ let dD = (dd - dB)
591+ $Tuple3([IntegerEntry(dy, do), IntegerEntry(dA, dd)], dC, dD)
598592 }
599593
600594
601-func dG () = {
602- let dH = u(bR, aj())
603- let dI = getInteger(this, am())
604- let dJ = getInteger(this, an())
605- let dK = u(bR, ap())
606- let dL = if ((height > dK))
607- then dK
595+func dE () = {
596+ let dF = u(bP, aj())
597+ let dG = getInteger(this, am())
598+ let dH = getInteger(this, an())
599+ let dI = u(bP, ap())
600+ let dJ = if ((height > dI))
601+ then dI
608602 else height
609- let dM = {
610- let aK = dI
611- if ($isInstanceOf(aK, "Int"))
603+ let dK = {
604+ let aI = dG
605+ if ($isInstanceOf(aI, "Int"))
612606 then {
613- let dN = aK
614- max([(dL - dN), 0])
607+ let dL = aI
608+ max([(dJ - dL), 0])
615609 }
616- else if ($isInstanceOf(aK, "Unit"))
610+ else if ($isInstanceOf(aI, "Unit"))
617611 then 0
618612 else throw("Match error")
619613 }
620- let dO = ((dH * (bY - 1)) / bY)
621- let dP = valueOrElse(dJ, 0)
622- let dQ = ((dO * dM) + dP)
623- $Tuple2([IntegerEntry(an(), dQ), IntegerEntry(am(), height)], dQ)
614+ let dM = ((dF * (bW - 1)) / bW)
615+ let dN = valueOrElse(dH, 0)
616+ let dO = ((dM * dK) + dN)
617+ $Tuple2([IntegerEntry(an(), dO), IntegerEntry(am(), height)], dO)
624618 }
625619
626620
627-func dR (bH,bP,dS) = {
628- let aZ = valueOrErrorMessage(addressFromString(bP), l("invalid user address"))
629- let bs = ca(aZ)
630- if ((bs == bs))
621+func dP (bF,bN,dQ) = {
622+ let aX = valueOrErrorMessage(addressFromString(bN), l("invalid user address"))
623+ let bq = bY(aX)
624+ if ((bq == bq))
631625 then {
632- let dT = "empty"
633- let dU = if ((bH != dT))
626+ let dR = "empty"
627+ let dS = if ((bF != dR))
634628 then {
635- let dV = valueOrErrorMessage(getString(bQ, S(bH)), l(("unsupported lp asset " + bH)))
636- getIntegerValue(bQ, U(dV))
629+ let dT = valueOrErrorMessage(getString(bO, S(bF)), l(("unsupported lp asset " + bF)))
630+ getIntegerValue(bO, U(dT))
637631 }
638- else if (dS)
632+ else if (dQ)
639633 then 0
640- else n(("not readonly mode: unsupported lp asset " + bH))
641- let dW = bt(bs, bH)
642- let dX = br(bs)
643- let dY = valueOrElse(getInteger(this, dW), r(this, dX))
644- let dQ = dG()._2
645- let dZ = (dQ - dY)
646- if ((0 > dZ))
634+ else n(("not readonly mode: unsupported lp asset " + bF))
635+ let dU = br(bq, bF)
636+ let dV = bp(bq)
637+ let dW = valueOrElse(getInteger(this, dU), r(this, dV))
638+ let dO = dE()._2
639+ let dX = (dO - dW)
640+ if ((0 > dX))
647641 then n("wrong calculations")
648642 else {
649- let ea = dy(bH, bP)
650- let eb = ea._1
651- let ec = ea._2
652- let ed = ea._3
653- let ee = fraction(dZ, dU, d)
654- let ef = if ((ed == 0))
643+ let dY = dw(bF, bN)
644+ let dZ = dY._1
645+ let ea = dY._2
646+ let eb = dY._3
647+ let ec = fraction(dX, dS, d)
648+ let ed = if ((eb == 0))
655649 then 0
656- else fraction(ee, ec, ed)
657- let eg = ([IntegerEntry(dW, dQ)] ++ eb)
658- let eh = makeString([toString(dY), toString(dZ), toString(dU), toString(ec), toString(ed)], ":")
659- $Tuple3(ef, eg, eh)
650+ else fraction(ec, ea, eb)
651+ let ee = ([IntegerEntry(dU, dO)] ++ dZ)
652+ let ef = makeString([toString(dW), toString(dX), toString(dS), toString(ea), toString(eb)], ":")
653+ $Tuple3(ed, ee, ef)
660654 }
661655 }
662656 else throw("Strict value is not equal to itself.")
663657 }
664658
665659
666-func ei (aP,ej) = if (!(containsElement(i, ej)))
660+func eg (aN,eh) = if (!(containsElement(i, eh)))
667661 then n("invalid duration")
668662 else {
669- let bh = (ej * k)
670- let ek = toBase58String(aB)
671- if ((size(aP.payments) != 1))
663+ let bf = (eh * k)
664+ let ei = toBase58String(az)
665+ if ((size(aN.payments) != 1))
672666 then n("invalid payment - exact one payment must be attached")
673667 else {
674- let cE = aP.payments[0]
675- let el = cE.amount
676- if ((aB != value(cE.assetId)))
677- then n((("invalid asset is in payment - " + ek) + " is expected"))
668+ let cC = aN.payments[0]
669+ let ej = cC.amount
670+ if ((az != value(cC.assetId)))
671+ then n((("invalid asset is in payment - " + ei) + " is expected"))
678672 else {
679- let em = bk()
680- let aZ = aP.caller
681- let bP = toString(aZ)
682- let en = isDefined(getString(bl(bP)))
683- let eo = if (en)
684- then value(getString(bl(bP)))
685- else toString(u(this, em))
686- let bs = parseIntValue(eo)
687- let cl = height
688- if (if ((aC > el))
689- then (aZ != bU)
673+ let ek = bi()
674+ let aX = aN.caller
675+ let bN = toString(aX)
676+ let el = isDefined(getString(bj(bN)))
677+ let em = if (el)
678+ then value(getString(bj(bN)))
679+ else toString(u(this, ek))
680+ let bq = parseIntValue(em)
681+ let cj = height
682+ if (if ((aA > ej))
683+ then (aX != bS)
690684 else false)
691- then n(("amount is less then minLockAmount=" + toString(aC)))
692- else if ((aD > bh))
693- then n(("passed duration is less then minLockDuration=" + toString(aD)))
694- else if ((bh > aE))
695- then n(("passed duration is greater then maxLockDuration=" + toString(aE)))
685+ then n(("amount is less then minLockAmount=" + toString(aA)))
686+ else if ((aB > bf))
687+ then n(("passed duration is less then minLockDuration=" + toString(aB)))
688+ else if ((bf > aC))
689+ then n(("passed duration is greater then maxLockDuration=" + toString(aC)))
696690 else {
697- let ep = fraction(el, bh, aE)
698- let eq = cb()
699- let dX = br(bs)
700- let dQ = dG()._2
701- let er = cF(aZ)
702- let es = reentrantInvoke(bT, "refreshUserReward", [aZ.bytes], nil)
703- if ((es == es))
691+ let en = fraction(ej, bf, aC)
692+ let eo = bZ()
693+ let dV = bp(bq)
694+ let dO = dE()._2
695+ let ep = cD(aX)
696+ let eq = reentrantInvoke(bR, "refreshUserReward", [aX.bytes], nil)
697+ if ((eq == eq))
704698 then {
705- let et = if (en)
699+ let er = if (el)
706700 then nil
707- else [IntegerEntry(em, (bs + 1)), StringEntry(bl(bP), eo), StringEntry(bm(eo), bP)]
708- $Tuple2(((((et ++ cB(aZ, aP.transactionId, el, cl, bh, ep, 0)) ++ co(el, bh, 1, if (en)
701+ else [IntegerEntry(ek, (bq + 1)), StringEntry(bj(bN), em), StringEntry(bk(em), bN)]
702+ $Tuple2(((((er ++ cz(aX, aN.transactionId, ej, cj, bf, en, 0)) ++ cm(ej, bf, 1, if (el)
709703 then 0
710- else 1)) :+ ci("lock", bP, el, cl, bh, ep, aP)) ++ [IntegerEntry(dX, dQ), IntegerEntry(bz(), (eq + ep)), IntegerEntry(bd(aZ), (er + ep))]), ep)
704+ else 1)) :+ cg("lock", bN, ej, cj, bf, en, aN)) ++ [IntegerEntry(dV, dO), IntegerEntry(bx(), (eo + en)), IntegerEntry(bb(aX), (ep + en))]), en)
711705 }
712706 else throw("Strict value is not equal to itself.")
713707 }
716710 }
717711
718712
719-func eu (aZ,ev) = {
720- let ew = bc(aZ, ev)
721- let ex = parseIntValue(ew[aS])
722- let cl = parseIntValue(ew[aT])
723- let ey = parseIntValue(ew[aU])
724- let ez = (cl + ey)
725- let bj = parseIntValue(ew[aX])
726- let eA = ((height - cl) / aG)
727- let eB = fraction(toBigInt(eA), (toBigInt((8 * aG)) * h), toBigInt(ey))
728- let eC = if ((height > ez))
729- then ex
730- else (toInt(fraction(toBigInt(ex), (h - pow(toBigInt(5), 1, eB, f, f, DOWN)), h)) - bj)
731- eC
713+func es (aX,et) = {
714+ let eu = ba(aX, et)
715+ let ev = parseIntValue(eu[aQ])
716+ let cj = parseIntValue(eu[aR])
717+ let ew = parseIntValue(eu[aS])
718+ let ex = (cj + ew)
719+ let bh = parseIntValue(eu[aV])
720+ let ey = ((height - cj) / aE)
721+ let ez = fraction(toBigInt(ey), (toBigInt((8 * aE)) * h), toBigInt(ew))
722+ let eA = if ((height > ex))
723+ then ev
724+ else (toInt(fraction(toBigInt(ev), (h - pow(toBigInt(5), 1, ez, f, f, DOWN)), h)) - bh)
725+ eA
732726 }
733727
734728
735-@Callable(aP)
736-func constructor (eD,eE,aC,eF,eG,aF) = {
737- let eH = aO(aP)
738- if ((eH == eH))
739- then ([IntegerEntry(bk(), 0), StringEntry(ay(), aI(eE, aC, eF, eG, aF)), StringEntry(F(), eD)] ++ co(0, 0, 0, 0))
729+@Callable(aN)
730+func constructor (eB,eC,aA,eD,eE,aD) = {
731+ let eF = aM(aN)
732+ if ((eF == eF))
733+ then ([IntegerEntry(bi(), 0), StringEntry(aw(), aG(eC, aA, eD, eE, aD)), StringEntry(F(), eB)] ++ cm(0, 0, 0, 0))
740734 else throw("Strict value is not equal to itself.")
741735 }
742736
743737
744738
745-@Callable(aP)
746-func lockRef (bh,eI,eJ) = {
747- let eK = ei(aP, bh)
748- let eL = eK._1
749- let ep = eK._2
750- let eM = toString(aP.caller)
751- let eN = if (if ((eI == ""))
739+@Callable(aN)
740+func lockRef (bf,eG,eH) = {
741+ let eI = eg(aN, bf)
742+ let eJ = eI._1
743+ let en = eI._2
744+ let eK = toString(aN.caller)
745+ let eL = if (if ((eG == ""))
752746 then true
753- else (eJ == base58''))
747+ else (eH == base58''))
754748 then unit
755- else invoke(B, "createPair", [E, eI, eM, eJ], nil)
756- if ((eN == eN))
749+ else invoke(B, "createPair", [E, eG, eK, eH], nil)
750+ if ((eL == eL))
757751 then {
758- let eO = invoke(aF, "updateReferralActivity", [toString(aP.caller), ep], nil)
759- if ((eO == eO))
760- then $Tuple2(eL, unit)
752+ let eM = invoke(aD, "updateReferralActivity", [toString(aN.caller), en], nil)
753+ if ((eM == eM))
754+ then $Tuple2(eJ, unit)
761755 else throw("Strict value is not equal to itself.")
762756 }
763757 else throw("Strict value is not equal to itself.")
765759
766760
767761
768-@Callable(aP)
769-func lock (bh) = {
770- let eP = ei(aP, bh)
771- let eL = eP._1
772- let ep = eP._2
773- let eO = invoke(aF, "updateReferralActivity", [toString(aP.caller), ep], nil)
774- if ((eO == eO))
775- then $Tuple2(eL, unit)
762+@Callable(aN)
763+func lock (bf) = {
764+ let eN = eg(aN, bf)
765+ let eJ = eN._1
766+ let en = eN._2
767+ let eM = invoke(aD, "updateReferralActivity", [toString(aN.caller), en], nil)
768+ if ((eM == eM))
769+ then $Tuple2(eJ, unit)
776770 else throw("Strict value is not equal to itself.")
777771 }
778772
779773
780774
781-@Callable(aP)
782-func claimWxBoost (bH,bP) = if ((bS != aP.caller))
775+@Callable(aN)
776+func claimWxBoost (bF,bN) = if ((bQ != aN.caller))
783777 then n("permissions denied")
784778 else {
785- let eQ = dR(bH, bP, false)
786- let eR = eQ._1
787- let eg = eQ._2
788- let eh = eQ._3
789- $Tuple2(eg, [eR])
779+ let eO = dP(bF, bN, false)
780+ let eP = eO._1
781+ let ee = eO._2
782+ let ef = eO._3
783+ $Tuple2(ee, [eP])
790784 }
791785
792786
793787
794-@Callable(aP)
795-func claimWxBoostREADONLY (bH,bP) = {
796- let eS = dR(bH, bP, true)
797- let eR = eS._1
798- let eg = eS._2
799- let eh = eS._3
800- $Tuple2(nil, [eR, eh])
788+@Callable(aN)
789+func claimWxBoostREADONLY (bF,bN) = {
790+ let eQ = dP(bF, bN, true)
791+ let eP = eQ._1
792+ let ee = eQ._2
793+ let ef = eQ._3
794+ $Tuple2(nil, [eP, ef])
801795 }
802796
803797
804798
805-@Callable(aP)
806-func unlock (eT) = {
807- let aZ = aP.caller
808- let bP = toString(aZ)
809- let ba = fromBase58String(eT)
810- let ew = bc(aZ, if ((eT == ""))
799+@Callable(aN)
800+func unlock (eR) = {
801+ let aX = aN.caller
802+ let bN = toString(aX)
803+ let aY = fromBase58String(eR)
804+ let eu = ba(aX, if ((eR == ""))
811805 then unit
812- else ba)
813- let ex = parseIntValue(ew[aS])
814- let cl = parseIntValue(ew[aT])
815- let ey = parseIntValue(ew[aU])
816- let bj = parseIntValue(ew[aX])
817- let bi = parseIntValue(ew[aW])
818- let eA = ((height - cl) / aG)
819- let eC = eu(aZ, if ((eT == ""))
806+ else aY)
807+ let ev = parseIntValue(eu[aQ])
808+ let cj = parseIntValue(eu[aR])
809+ let ew = parseIntValue(eu[aS])
810+ let bh = parseIntValue(eu[aV])
811+ let bg = parseIntValue(eu[aU])
812+ let ey = ((height - cj) / aE)
813+ let eA = es(aX, if ((eR == ""))
820814 then unit
821- else ba)
822- let ep = fraction(ex, ey, aE)
823- let eU = min([fraction((eA * aG), ep, aE), bi])
824- let eV = x((bi - eU), "gwxRemaining")
825- let eW = cc(aZ)
826- if ((0 >= ex))
815+ else aY)
816+ let en = fraction(ev, ew, aC)
817+ let eS = min([fraction((ey * aE), en, aC), bg])
818+ let eT = x((bg - eS), "gwxRemaining")
819+ let eU = ca(aX)
820+ if ((0 >= ev))
827821 then n("nothing to unlock")
828822 else {
829- let eq = cb()
830- let er = cF(aZ)
831- let eX = x((er - eU), "userGwxAmountTotalNew")
832- if ((eW > eX))
833- then n(("locked gwx amount: " + toString(eW)))
823+ let eo = bZ()
824+ let ep = cD(aX)
825+ let eV = x((ep - eS), "userGwxAmountTotalNew")
826+ if ((eU > eV))
827+ then n(("locked gwx amount: " + toString(eU)))
834828 else {
835- let es = reentrantInvoke(bT, "refreshUserReward", [aZ.bytes], nil)
836- if ((es == es))
837- then ((((cB(aZ, ba, ex, cl, ey, eV, (bj + eC)) ++ co(-(eC), 0, 0, 0)) :+ ci("unlock", bP, eC, cl, ey, eU, aP)) :+ ScriptTransfer(aZ, eC, aB)) ++ [IntegerEntry(bz(), x((eq - eU), "gwxTotal")), IntegerEntry(bd(aZ), eX)])
829+ let eq = reentrantInvoke(bR, "refreshUserReward", [aX.bytes], nil)
830+ if ((eq == eq))
831+ then ((((cz(aX, aY, ev, cj, ew, eT, (bh + eA)) ++ cm(-(eA), 0, 0, 0)) :+ cg("unlock", bN, eA, cj, ew, eS, aN)) :+ ScriptTransfer(aX, eA, az)) ++ [IntegerEntry(bx(), x((eo - eS), "gwxTotal")), IntegerEntry(bb(aX), eV)])
838832 else throw("Strict value is not equal to itself.")
839833 }
840834 }
842836
843837
844838
845-@Callable(aP)
846-func gwxUserInfoREADONLY (bP) = {
847- let aZ = valueOrErrorMessage(addressFromString(bP), l("invalid user address"))
848- let bi = cF(aZ)
849- $Tuple2(nil, [bi])
839+@Callable(aN)
840+func gwxUserInfoREADONLY (bN) = {
841+ let aX = valueOrErrorMessage(addressFromString(bN), l("invalid user address"))
842+ let bg = cD(aX)
843+ $Tuple2(nil, [bg])
850844 }
851845
852846
853847
854-@Callable(aP)
855-func userMaxDurationREADONLY (bP) = $Tuple2(nil, $Tuple2("increaseLock", aE))
848+@Callable(aN)
849+func userMaxDurationREADONLY (bN) = $Tuple2(nil, $Tuple2("increaseLock", aC))
856850
857851
858852
859-@Callable(aP)
860-func getUserGwxAmountAtHeightREADONLY (bP,eY) = {
861- let aZ = valueOrErrorMessage(addressFromString(bP), l("invalid user address"))
862- let bi = cF(aZ)
863- $Tuple2(nil, bi)
853+@Callable(aN)
854+func getUserGwxAmountAtHeightREADONLY (bN,eW) = {
855+ let aX = valueOrErrorMessage(addressFromString(bN), l("invalid user address"))
856+ let bg = cD(aX)
857+ $Tuple2(nil, bg)
864858 }
865859
866860
867861
868-@Callable(aP)
869-func getUserGwxAmount (bP) = {
870- let aZ = valueOrErrorMessage(addressFromString(bP), l("invalid user address"))
871- let bi = cF(aZ)
872- $Tuple2(nil, bi)
862+@Callable(aN)
863+func getUserGwxAmount (bN) = {
864+ let aX = valueOrErrorMessage(addressFromString(bN), l("invalid user address"))
865+ let bg = cD(aX)
866+ $Tuple2(nil, bg)
873867 }
874868
875869
876870
877-@Callable(aP)
878-func getGwxTotalREADONLY () = $Tuple2(nil, cb())
871+@Callable(aN)
872+func getGwxTotalREADONLY () = $Tuple2(nil, bZ())
879873
880874
881875
882-@Callable(aP)
876+@Callable(aN)
883877 func onBoostEmissionUpdate () = {
884- let eH = if ((aP.caller == bR))
878+ let eF = if ((aN.caller == bP))
885879 then true
886- else aO(aP)
887- if ((eH == eH))
888- then dG()
880+ else aM(aN)
881+ if ((eF == eF))
882+ then dE()
889883 else throw("Strict value is not equal to itself.")
890884 }
891885
892886
893887
894-@Callable(aP)
895-func onStakedVoteUpdate (bH,bP,ds) = {
896- let eH = if ((aP.caller == bS))
888+@Callable(aN)
889+func onStakedVoteUpdate (bF,bN,dq) = {
890+ let eF = if ((aN.caller == bQ))
897891 then true
898- else aO(aP)
899- if ((eH == eH))
892+ else aM(aN)
893+ if ((eF == eF))
900894 then {
901- let dv = dr(bH, bP, ds)
902- $Tuple2(dv, unit)
895+ let dt = dp(bF, bN, dq)
896+ $Tuple2(dt, unit)
903897 }
904898 else throw("Strict value is not equal to itself.")
905899 }
906900
907901
908902
909-@Callable(aP)
910-func getVotingResultStakedREADONLY (bH) = $Tuple2(nil, cW(bH))
903+@Callable(aN)
904+func getVotingResultStakedREADONLY (bF) = $Tuple2(nil, cU(bF))
911905
912906
913907
914-@Callable(aP)
915-func getVotingResultStakedIntegralREADONLY (bH) = $Tuple2(nil, da(bH))
908+@Callable(aN)
909+func getVotingResultStakedIntegralREADONLY (bF) = $Tuple2(nil, cY(bF))
916910
917911
918912
919-@Callable(aP)
920-func getUserVoteFinalizedREADONLY (bH,bP) = $Tuple2(nil, cP(bH, bP))
913+@Callable(aN)
914+func getUserVoteFinalizedREADONLY (bF,bN) = $Tuple2(nil, cN(bF, bN))
921915
922916
923917
924-@Callable(aP)
925-func getUserVoteStakedIntegralREADONLY (bH,bP) = $Tuple2(nil, dk(bH, bP))
918+@Callable(aN)
919+func getUserVoteStakedIntegralREADONLY (bF,bN) = $Tuple2(nil, di(bF, bN))
926920
927921
928-@Verifier(eZ)
929-func fa () = {
930- let fb = {
931- let aK = aM()
932- if ($isInstanceOf(aK, "ByteVector"))
922+@Verifier(eX)
923+func eY () = {
924+ let eZ = {
925+ let aI = aK()
926+ if ($isInstanceOf(aI, "ByteVector"))
933927 then {
934- let aR = aK
935- aR
928+ let aP = aI
929+ aP
936930 }
937- else if ($isInstanceOf(aK, "Unit"))
938- then eZ.senderPublicKey
931+ else if ($isInstanceOf(aI, "Unit"))
932+ then eX.senderPublicKey
939933 else throw("Match error")
940934 }
941- sigVerify(eZ.bodyBytes, eZ.proofs[0], fb)
935+ sigVerify(eX.bodyBytes, eX.proofs[0], eZ)
942936 }
943937
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 8
77
88 let c = 100000000
99
1010 let d = c
1111
1212 let e = "boosting.ride"
1313
1414 let f = 18
1515
1616 let g = 1000000000000000000
1717
1818 let h = toBigInt(g)
1919
2020 let i = [1, 3, 6, 12, 24, 48]
2121
2222 let j = 1440
2323
2424 let k = 43800
2525
2626 func l (m) = makeString([e, ": ", m], "")
2727
2828
2929 func n (m) = throw(l(m))
3030
3131
3232 func o (p,q) = valueOrErrorMessage(getString(p, q), l((("mandatory this." + q) + " is not defined")))
3333
3434
3535 func r (p,q) = valueOrElse(getInteger(p, q), 0)
3636
3737
3838 func s (p,q,t) = valueOrElse(getInteger(p, q), t)
3939
4040
4141 func u (p,q) = valueOrErrorMessage(getInteger(p, q), l((("mandatory this." + q) + " is not defined")))
4242
4343
4444 func v (w) = if ((0 > w))
4545 then -(w)
4646 else w
4747
4848
4949 func x (y,z) = if ((y >= 0))
5050 then y
5151 else n((valueOrElse(z, "value") + " should be positive"))
5252
5353
5454 func A () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5555
5656
5757 let B = addressFromStringValue(o(this, A()))
5858
5959 let C = makeString(["%s%s", "referral", "programName"], a)
6060
6161 let D = "wxlock"
6262
6363 let E = valueOrElse(getString(this, C), D)
6464
6565 func F () = "%s%s__config__factoryAddress"
6666
6767
6868 let G = 1
6969
7070 let H = 2
7171
7272 let I = 3
7373
7474 let J = 4
7575
7676 let K = 5
7777
7878 let L = 6
7979
8080 let M = 7
8181
8282 let N = 8
8383
8484 let O = 9
8585
8686 let P = 10
8787
8888 let Q = 11
8989
9090 func R () = "%s__factoryConfig"
9191
9292
9393 func S (T) = makeString(["%s%s%s", T, "mappings__lpAsset2PoolContract"], a)
9494
9595
9696 func U (V) = makeString(["%s%s", "poolWeight", V], a)
9797
9898
9999 func W (X,Y) = ((("%s%s__poolWeight__" + X) + "__") + toString(Y))
100100
101101
102102 func Z () = addressFromStringValue(o(this, F()))
103103
104104
105105 func aa (ab) = split(o(ab, R()), a)
106106
107107
108108 func ac (ad) = addressFromStringValue(ad[H])
109109
110110
111111 func ae (ad) = addressFromStringValue(ad[K])
112112
113113
114114 func af (ad) = addressFromStringValue(ad[G])
115115
116116
117117 func ag (ad) = addressFromStringValue(ad[P])
118118
119119
120120 func ah () = "%s__managerPublicKey"
121121
122122
123123 func ai () = "%s__managerVaultAddress"
124124
125125
126126 func aj () = "%s%s__ratePerBlock__current"
127127
128128
129129 func ak () = "%s%s__ratePerBlockMax__current"
130130
131131
132132 func al () = "%s%s__emission__startBlock"
133133
134134
135135 func am () = "%s%s__boostingV2__startBlock"
136136
137137
138138 func an () = "%s%s__boostingV2__integral"
139139
140140
141141 func ao () = "%s%s__emission__duration"
142142
143143
144144 func ap () = "%s%s__emission__endBlock"
145145
146146
147-func aq () = "%s__nextPeriod"
147+let aq = 1
148+
149+let ar = 2
150+
151+let as = 3
152+
153+let at = 4
154+
155+let au = 5
156+
157+let av = 6
158+
159+func aw () = "%s__config"
148160
149161
150-func ar () = "%s%s__gwxRewardEmissionPart__startHeight"
162+func ax () = split(o(this, aw()), a)
151163
152164
153-let as = 1
165+let ay = ax()
154166
155-let at = 2
167+let az = fromBase58String(ay[aq])
156168
157-let au = 3
169+let aA = valueOrErrorMessage(parseInt(ay[ar]), l("invalid min lock amount"))
158170
159-let av = 4
171+let aB = valueOrErrorMessage(parseInt(ay[as]), l("invalid min lock duration"))
160172
161-let aw = 5
173+let aC = valueOrErrorMessage(parseInt(ay[at]), l("invalid max lock duration"))
162174
163-let ax = 6
175+let aD = valueOrErrorMessage(addressFromString(ay[au]), l("invalid math contract address"))
164176
165-func ay () = "%s__config"
177+let aE = valueOrErrorMessage(parseInt(ay[av]), l("invalid blocks in period"))
178+
179+func aF (az,aA,aB,aC,aD) = makeString(["%s%d%d%d%s", az, aA, aB, aC, aD], a)
166180
167181
168-func az () = split(o(this, ay()), a)
182+func aG (az,aA,aB,aC,aD) = aF(az, toString(aA), toString(aB), toString(aC), aD)
169183
170184
171-let aA = az()
172-
173-let aB = fromBase58String(aA[as])
174-
175-let aC = valueOrErrorMessage(parseInt(aA[at]), l("invalid min lock amount"))
176-
177-let aD = valueOrErrorMessage(parseInt(aA[au]), l("invalid min lock duration"))
178-
179-let aE = valueOrErrorMessage(parseInt(aA[av]), l("invalid max lock duration"))
180-
181-let aF = valueOrErrorMessage(addressFromString(aA[aw]), l("invalid math contract address"))
182-
183-let aG = valueOrErrorMessage(parseInt(aA[ax]), l("invalid blocks in period"))
184-
185-func aH (aB,aC,aD,aE,aF) = makeString(["%s%d%d%d%s", aB, aC, aD, aE, aF], a)
186-
187-
188-func aI (aB,aC,aD,aE,aF) = aH(aB, toString(aC), toString(aD), toString(aE), aF)
189-
190-
191-func aJ () = {
192- let aK = getString(ai())
193- if ($isInstanceOf(aK, "String"))
185+func aH () = {
186+ let aI = getString(ai())
187+ if ($isInstanceOf(aI, "String"))
194188 then {
195- let aL = aK
196- addressFromStringValue(aL)
189+ let aJ = aI
190+ addressFromStringValue(aJ)
197191 }
198192 else this
199193 }
200194
201195
202-func aM () = {
203- let aN = aJ()
204- let aK = getString(aN, ah())
205- if ($isInstanceOf(aK, "String"))
196+func aK () = {
197+ let aL = aH()
198+ let aI = getString(aL, ah())
199+ if ($isInstanceOf(aI, "String"))
206200 then {
207- let aL = aK
208- fromBase58String(aL)
201+ let aJ = aI
202+ fromBase58String(aJ)
209203 }
210- else if ($isInstanceOf(aK, "Unit"))
204+ else if ($isInstanceOf(aI, "Unit"))
211205 then unit
212206 else throw("Match error")
213207 }
214208
215209
216-func aO (aP) = {
217- let aQ = n("Permission denied")
218- let aK = aM()
219- if ($isInstanceOf(aK, "ByteVector"))
210+func aM (aN) = {
211+ let aO = n("Permission denied")
212+ let aI = aK()
213+ if ($isInstanceOf(aI, "ByteVector"))
220214 then {
221- let aR = aK
222- if ((aP.callerPublicKey == aR))
215+ let aP = aI
216+ if ((aN.callerPublicKey == aP))
223217 then true
224- else aQ
218+ else aO
225219 }
226- else if ($isInstanceOf(aK, "Unit"))
227- then if ((aP.caller == this))
220+ else if ($isInstanceOf(aI, "Unit"))
221+ then if ((aN.caller == this))
228222 then true
229- else aQ
223+ else aO
230224 else throw("Match error")
231225 }
232226
233227
234-let aS = 1
228+let aQ = 1
235229
236-let aT = 2
230+let aR = 2
237231
238-let aU = 3
232+let aS = 3
239233
240-let aV = 4
234+let aT = 4
241235
242-let aW = 5
236+let aU = 5
243237
244-let aX = 6
238+let aV = 6
245239
246-func aY (aZ,ba) = makeString(["%s%s%s__lock", toString(aZ), {
247- let aK = ba
248- if ($isInstanceOf(aK, "ByteVector"))
240+func aW (aX,aY) = makeString(["%s%s%s__lock", toString(aX), {
241+ let aI = aY
242+ if ($isInstanceOf(aI, "ByteVector"))
249243 then {
250- let bb = aK
251- toBase58String(bb)
244+ let aZ = aI
245+ toBase58String(aZ)
252246 }
253- else if ($isInstanceOf(aK, "Unit"))
247+ else if ($isInstanceOf(aI, "Unit"))
254248 then "legacy"
255249 else throw("Match error")
256250 }], a)
257251
258252
259-func bc (aZ,ba) = split(o(this, aY(aZ, ba)), a)
253+func ba (aX,aY) = split(o(this, aW(aX, aY)), a)
260254
261255
262-func bd (aZ) = makeString(["%s%s__gwxAmountTotal", toString(aZ)], a)
256+func bb (aX) = makeString(["%s%s__gwxAmountTotal", toString(aX)], a)
263257
264258
265-func be (bf,bg,bh,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bf), toString(bg), toString(bh), toString(lastBlock.timestamp), toString(bi), toString(bj)], a)
259+func bc (bd,be,bf,bg,bh) = makeString(["%d%d%d%d%d%d", toString(bd), toString(be), toString(bf), toString(lastBlock.timestamp), toString(bg), toString(bh)], a)
266260
267261
268-func bk () = "%s__nextUserNum"
262+func bi () = "%s__nextUserNum"
269263
270264
271-func bl (aZ) = makeString(["%s%s%s__mapping__user2num", aZ], a)
265+func bj (aX) = makeString(["%s%s%s__mapping__user2num", aX], a)
272266
273267
274-func bm (Y) = makeString(["%s%s%s__mapping__num2user", Y], a)
268+func bk (Y) = makeString(["%s%s%s__mapping__num2user", Y], a)
275269
276270
277-func bn () = "%s%s__stats__activeTotalLocked"
271+func bl () = "%s%s__stats__activeTotalLocked"
278272
279273
280-func bo () = "%s%s__stats__locksDurationSumInBlocks"
274+func bm () = "%s%s__stats__locksDurationSumInBlocks"
281275
282276
283-func bp () = "%s%s__stats__locksCount"
277+func bn () = "%s%s__stats__locksCount"
284278
285279
286-func bq () = "%s%s__stats__activeUsersCount"
280+func bo () = "%s%s__stats__activeUsersCount"
287281
288282
289-func br (bs) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(bs)], a)
283+func bp (bq) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(bq)], a)
290284
291285
292-func bt (bs,bu) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(bs), bu], a)
286+func br (bq,bs) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(bq), bs], a)
293287
294288
295-func bv (bs) = makeString(["%s%d__maxBoostInt", toString(bs)], a)
289+func bt (bq) = makeString(["%s%d__maxBoostInt", toString(bq)], a)
296290
297291
298-func bw () = "%s%s__maxBoostInt__total"
292+func bu () = "%s%s__maxBoostInt__total"
299293
300294
301-func bx (bs) = makeString(["%s%d__userBoostAvaliableToClaimTotal", toString(bs)], a)
295+func bv (bq) = makeString(["%s%d__userBoostAvaliableToClaimTotal", toString(bq)], a)
302296
303297
304-func by (bs) = makeString(["%s%d__userBoostClaimed", toString(bs)], a)
298+func bw (bq) = makeString(["%s%d__userBoostClaimed", toString(bq)], a)
305299
306300
307-func bz () = "%s%s__gwx__total"
301+func bx () = "%s%s__gwx__total"
308302
309303
310-func bA (bB,bC,p,bD) = makeString(["%s%s%s%s%d", "vote", bB, bC, toString(p), toString(bD)], a)
304+func by (bz,bA,p,bB) = makeString(["%s%s%s%s%d", "vote", bz, bA, toString(p), toString(bB)], a)
311305
312306
313-func bE (bD) = makeString(["%s%d", "startHeight", toString(bD)], a)
307+func bC (bB) = makeString(["%s%d", "startHeight", toString(bB)], a)
314308
315309
316-func bF () = makeString(["%s", "currentEpochUi"], a)
310+func bD () = makeString(["%s", "currentEpochUi"], a)
317311
318312
319-func bG (bH,bD) = makeString(["%s%s%d", "votingResultStaked", bH, toString(bD)], a)
313+func bE (bF,bB) = makeString(["%s%s%d", "votingResultStaked", bF, toString(bB)], a)
320314
321315
322-func bI (bH,bD) = makeString(["%s%s%d", "votingResultStakedIntegral", bH, toString(bD)], a)
316+func bG (bF,bB) = makeString(["%s%s%d", "votingResultStakedIntegral", bF, toString(bB)], a)
323317
324318
325-func bJ (bH,bD) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", bH, toString(bD)], a)
319+func bH (bF,bB) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", bF, toString(bB)], a)
326320
327321
328-func bK (bH,p,bD) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", bH, toString(p), toString(bD)], a)
322+func bI (bF,p,bB) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", bF, toString(p), toString(bB)], a)
329323
330324
331-func bL (bH,p,bD) = makeString(["%s%s%s%d", "voteStakedIntegral", bH, toString(p), toString(bD)], a)
325+func bJ (bF,p,bB) = makeString(["%s%s%s%d", "voteStakedIntegral", bF, toString(p), toString(bB)], a)
332326
333327
334-func bM (bH,p,bD) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", bH, toString(p), toString(bD)], a)
328+func bK (bF,p,bB) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", bF, toString(p), toString(bB)], a)
335329
336330
337-func bN (bH,p,bD) = makeString(["%s%s%s%d", "voteStakedIntegralLast", bH, toString(p), toString(bD)], a)
331+func bL (bF,p,bB) = makeString(["%s%s%s%d", "voteStakedIntegralLast", bF, toString(p), toString(bB)], a)
338332
339333
340-func bO (bP,bH) = makeString(["%s%s%s", "staked", bP, bH], a)
334+func bM (bN,bF) = makeString(["%s%s%s", "staked", bN, bF], a)
341335
342336
343-let bQ = Z()
337+let bO = Z()
344338
345-let ad = aa(bQ)
339+let ad = aa(bO)
346340
347-let bR = ae(ad)
341+let bP = ae(ad)
348342
349-let bS = af(ad)
343+let bQ = af(ad)
350344
351-let bT = ag(ad)
345+let bR = ag(ad)
352346
353-let bU = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), l("lp_staking_pools contract address is undefined"))), l("invalid lp_staking_pools contract address"))
347+let bS = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), l("lp_staking_pools contract address is undefined"))), l("invalid lp_staking_pools contract address"))
354348
355-let bV = makeString(["%s", "votingEmissionContract"], a)
349+let bT = makeString(["%s", "votingEmissionContract"], a)
356350
357-let bW = addressFromStringValue(getStringValue(bQ, bV))
351+let bU = addressFromStringValue(getStringValue(bO, bT))
358352
359-let bX = makeString(["%s", "votingEmissionRateContract"], a)
353+let bV = makeString(["%s", "votingEmissionRateContract"], a)
360354
361-let bY = {
362- let bZ = invoke(bR, "getBoostCoeffREADONLY", nil, nil)
363- if ($isInstanceOf(bZ, "Int"))
364- then bZ
365- else throw(($getType(bZ) + " couldn't be cast to Int"))
355+let bW = {
356+ let bX = invoke(bP, "getBoostCoeffREADONLY", nil, nil)
357+ if ($isInstanceOf(bX, "Int"))
358+ then bX
359+ else throw(($getType(bX) + " couldn't be cast to Int"))
366360 }
367361
368-func ca (aZ) = {
369- let aK = getString(this, bl(toString(aZ)))
370- if ($isInstanceOf(aK, "String"))
362+func bY (aX) = {
363+ let aI = getString(this, bj(toString(aX)))
364+ if ($isInstanceOf(aI, "String"))
371365 then {
372- let aL = aK
373- valueOrErrorMessage(parseInt(aL), l("invalid user number"))
366+ let aJ = aI
367+ valueOrErrorMessage(parseInt(aJ), l("invalid user number"))
374368 }
375- else if ($isInstanceOf(aK, "Unit"))
369+ else if ($isInstanceOf(aI, "Unit"))
376370 then n("invalid user")
377371 else throw("Match error")
378372 }
379373
380374
381-func cb () = valueOrElse(getInteger(this, bz()), 0)
375+func bZ () = valueOrElse(getInteger(this, bx()), 0)
382376
383377
384-func cc (aZ) = {
385- let cd = "getLockedGwxAmount"
386- let ce = valueOrErrorMessage({
387- let aK = getString(bW, bX)
388- if ($isInstanceOf(aK, "Unit"))
378+func ca (aX) = {
379+ let cb = "getLockedGwxAmount"
380+ let cc = valueOrErrorMessage({
381+ let aI = getString(bU, bV)
382+ if ($isInstanceOf(aI, "Unit"))
389383 then unit
390- else if ($isInstanceOf(aK, "String"))
384+ else if ($isInstanceOf(aI, "String"))
391385 then {
392- let aL = aK
393- addressFromString(aL)
386+ let aJ = aI
387+ addressFromString(aJ)
394388 }
395389 else throw("Match error")
396390 }, l("invalid voting emission rate address"))
397- let cf = {
398- let bZ = invoke(bW, cd, [toString(aZ)], nil)
399- if ($isInstanceOf(bZ, "Int"))
400- then bZ
401- else throw(($getType(bZ) + " couldn't be cast to Int"))
391+ let cd = {
392+ let bX = invoke(bU, cb, [toString(aX)], nil)
393+ if ($isInstanceOf(bX, "Int"))
394+ then bX
395+ else throw(($getType(bX) + " couldn't be cast to Int"))
402396 }
403- let cg = {
404- let bZ = invoke(ce, cd, [toString(aZ)], nil)
405- if ($isInstanceOf(bZ, "Int"))
406- then bZ
407- else throw(($getType(bZ) + " couldn't be cast to Int"))
397+ let ce = {
398+ let bX = invoke(cc, cb, [toString(aX)], nil)
399+ if ($isInstanceOf(bX, "Int"))
400+ then bX
401+ else throw(($getType(bX) + " couldn't be cast to Int"))
408402 }
409- let ch = max([cf, cg])
410- ch
403+ let cf = max([cd, ce])
404+ cf
411405 }
412406
413407
414-func ci (cj,ck,bf,cl,bh,bi,aP) = {
415- let cm = makeString(["%s%s%s%s__history", cj, ck, toBase58String(aP.transactionId)], a)
416- let cn = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(bf), toString(cl), toString(bh), toString(bi)], a)
417- StringEntry(cm, cn)
408+func cg (ch,ci,bd,cj,bf,bg,aN) = {
409+ let ck = makeString(["%s%s%s%s__history", ch, ci, toBase58String(aN.transactionId)], a)
410+ let cl = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(bd), toString(cj), toString(bf), toString(bg)], a)
411+ StringEntry(ck, cl)
418412 }
419413
420414
421-func co (cp,cq,cr,cs) = {
415+func cm (cn,co,cp,cq) = {
416+ let cr = bm()
417+ let cs = bn()
422418 let ct = bo()
423- let cu = bp()
424- let cv = bq()
425- let cw = bn()
419+ let cu = bl()
420+ let cv = r(this, cr)
421+ let cw = r(this, cs)
426422 let cx = r(this, ct)
427423 let cy = r(this, cu)
428- let cz = r(this, cv)
429- let cA = r(this, cw)
430-[IntegerEntry(ct, (cx + cq)), IntegerEntry(cu, (cy + cr)), IntegerEntry(cv, (cz + cs)), IntegerEntry(cw, (cA + cp))]
424+[IntegerEntry(cr, (cv + co)), IntegerEntry(cs, (cw + cp)), IntegerEntry(ct, (cx + cq)), IntegerEntry(cu, (cy + cn))]
431425 }
432426
433427
434-func cB (aZ,ba,bf,bg,bh,bi,bj) = [StringEntry(aY(aZ, ba), be(bf, bg, bh, bi, bj))]
428+func cz (aX,aY,bd,be,bf,bg,bh) = [StringEntry(aW(aX, aY), bc(bd, be, bf, bg, bh))]
435429
436430
437-func cC (aP,cD) = if ((size(aP.payments) > 1))
431+func cA (aN,cB) = if ((size(aN.payments) > 1))
438432 then n("only one payment is allowed")
439- else if ((size(aP.payments) == 0))
433+ else if ((size(aN.payments) == 0))
440434 then 0
441435 else {
442- let cE = aP.payments[0]
443- if ((value(cE.assetId) != cD))
436+ let cC = aN.payments[0]
437+ if ((value(cC.assetId) != cB))
444438 then n("invalid asset id in payment")
445- else cE.amount
439+ else cC.amount
446440 }
447441
448442
449-func cF (aZ) = valueOrElse(getInteger(this, bd(aZ)), 0)
443+func cD (aX) = valueOrElse(getInteger(this, bb(aX)), 0)
450444
451445
452-func cG () = {
453- let cH = {
454- let cI = value(getInteger(bW, bF()))
455- let cJ = (cI - 1)
456- if ((0 > cJ))
446+func cE () = {
447+ let cF = {
448+ let cG = value(getInteger(bU, bD()))
449+ let cH = (cG - 1)
450+ if ((0 > cH))
457451 then n("invalid epoch")
458- else $Tuple2(cI, cJ)
452+ else $Tuple2(cG, cH)
459453 }
460- let cI = cH._1
461- let cJ = cH._2
462- let cK = value(getInteger(bW, bE(cI)))
463- $Tuple2(cJ, cK)
454+ let cG = cF._1
455+ let cH = cF._2
456+ let cI = value(getInteger(bU, bC(cG)))
457+ $Tuple2(cH, cI)
464458 }
465459
466460
467-func cL (bH) = {
468- let cM = 4
469- let cN = 5
470- let cO = {
471- let bZ = invoke(bQ, "getPoolConfigByLpAssetIdREADONLY", [bH], nil)
472- if ($isInstanceOf(bZ, "List[Any]"))
473- then bZ
474- else throw(($getType(bZ) + " couldn't be cast to List[Any]"))
461+func cJ (bF) = {
462+ let cK = 4
463+ let cL = 5
464+ let cM = {
465+ let bX = invoke(bO, "getPoolConfigByLpAssetIdREADONLY", [bF], nil)
466+ if ($isInstanceOf(bX, "List[Any]"))
467+ then bX
468+ else throw(($getType(bX) + " couldn't be cast to List[Any]"))
475469 }
476- let bB = {
477- let bZ = cO[cM]
478- if ($isInstanceOf(bZ, "String"))
479- then bZ
480- else throw(($getType(bZ) + " couldn't be cast to String"))
470+ let bz = {
471+ let bX = cM[cK]
472+ if ($isInstanceOf(bX, "String"))
473+ then bX
474+ else throw(($getType(bX) + " couldn't be cast to String"))
481475 }
482- let bC = {
483- let bZ = cO[cN]
484- if ($isInstanceOf(bZ, "String"))
485- then bZ
486- else throw(($getType(bZ) + " couldn't be cast to String"))
476+ let bA = {
477+ let bX = cM[cL]
478+ if ($isInstanceOf(bX, "String"))
479+ then bX
480+ else throw(($getType(bX) + " couldn't be cast to String"))
487481 }
488- $Tuple2(bB, bC)
482+ $Tuple2(bz, bA)
489483 }
490484
491485
492-func cP (bH,bP) = {
493- let aZ = addressFromStringValue(bP)
494- let cQ = cG()
495- let cJ = cQ._1
496- let cK = cQ._2
497- let cR = cL(bH)
498- let bB = cR._1
499- let bC = cR._2
500- let cS = bA(bB, bC, aZ, cJ)
501- let cT = valueOrElse(getInteger(bW, cS), 0)
502- cT
486+func cN (bF,bN) = {
487+ let aX = addressFromStringValue(bN)
488+ let cO = cE()
489+ let cH = cO._1
490+ let cI = cO._2
491+ let cP = cJ(bF)
492+ let bz = cP._1
493+ let bA = cP._2
494+ let cQ = by(bz, bA, aX, cH)
495+ let cR = valueOrElse(getInteger(bU, cQ), 0)
496+ cR
503497 }
504498
505499
506-func cU (bH,bP) = {
507- let cV = valueOrElse(getInteger(bS, bO(bP, bH)), 0)
508- let cT = cP(bH, bP)
509- if ((cV == 0))
500+func cS (bF,bN) = {
501+ let cT = valueOrElse(getInteger(bQ, bM(bN, bF)), 0)
502+ let cR = cN(bF, bN)
503+ if ((cT == 0))
510504 then 0
511- else cT
505+ else cR
512506 }
513507
514508
515-func cW (bH) = {
516- let cX = cG()
517- let cJ = cX._1
518- let cK = cX._2
519- let cY = valueOrElse(getInteger(bW, bG(bH, cJ)), 0)
520- let cZ = valueOrElse(getInteger(this, bG(bH, cJ)), cY)
521- cZ
509+func cU (bF) = {
510+ let cV = cE()
511+ let cH = cV._1
512+ let cI = cV._2
513+ let cW = valueOrElse(getInteger(bU, bE(bF, cH)), 0)
514+ let cX = valueOrElse(getInteger(this, bE(bF, cH)), cW)
515+ cX
522516 }
523517
524518
525-func da (bH) = {
526- let db = cG()
527- let cJ = db._1
528- let cK = db._2
529- let cZ = cW(bH)
530- let dc = valueOrElse(getInteger(this, bI(bH, cJ)), 0)
531- let dd = valueOrElse(getInteger(this, bJ(bH, cJ)), cK)
532- let de = (height - dd)
533- let df = ((de * cZ) + dc)
534- df
519+func cY (bF) = {
520+ let cZ = cE()
521+ let cH = cZ._1
522+ let cI = cZ._2
523+ let cX = cU(bF)
524+ let da = valueOrElse(getInteger(this, bG(bF, cH)), 0)
525+ let db = valueOrElse(getInteger(this, bH(bF, cH)), cI)
526+ let dc = (height - db)
527+ let dd = ((dc * cX) + da)
528+ dd
535529 }
536530
537531
538-func dg (bH,dh) = {
539- let di = cG()
540- let cJ = di._1
541- let cK = di._2
542- let cZ = cW(bH)
543- let dj = (cZ + dh)
544- let df = da(bH)
545-[IntegerEntry(bG(bH, cJ), dj), IntegerEntry(bJ(bH, cJ), height), IntegerEntry(bI(bH, cJ), df)]
532+func de (bF,df) = {
533+ let dg = cE()
534+ let cH = dg._1
535+ let cI = dg._2
536+ let cX = cU(bF)
537+ let dh = (cX + df)
538+ let dd = cY(bF)
539+[IntegerEntry(bE(bF, cH), dh), IntegerEntry(bH(bF, cH), height), IntegerEntry(bG(bF, cH), dd)]
546540 }
547541
548542
549-func dk (bH,bP) = {
550- let dl = cG()
551- let cJ = dl._1
552- let cK = dl._2
553- let aZ = addressFromStringValue(bP)
554- let dm = cU(bH, bP)
555- let dn = valueOrElse(getInteger(this, bL(bH, aZ, cJ)), 0)
556- let do = valueOrElse(getInteger(this, bM(bH, aZ, cJ)), cK)
557- let dp = (height - do)
558- let dq = ((dp * dm) + dn)
559- dq
543+func di (bF,bN) = {
544+ let dj = cE()
545+ let cH = dj._1
546+ let cI = dj._2
547+ let aX = addressFromStringValue(bN)
548+ let dk = cS(bF, bN)
549+ let dl = valueOrElse(getInteger(this, bJ(bF, aX, cH)), 0)
550+ let dm = valueOrElse(getInteger(this, bK(bF, aX, cH)), cI)
551+ let dn = (height - dm)
552+ let do = ((dn * dk) + dl)
553+ do
560554 }
561555
562556
563-func dr (bH,bP,ds) = {
564- let dt = cG()
565- let cJ = dt._1
566- let cK = dt._2
567- let aZ = addressFromStringValue(bP)
568- let du = cP(bH, bP)
569- let dv = if ((du == 0))
557+func dp (bF,bN,dq) = {
558+ let dr = cE()
559+ let cH = dr._1
560+ let cI = dr._2
561+ let aX = addressFromStringValue(bN)
562+ let ds = cN(bF, bN)
563+ let dt = if ((ds == 0))
570564 then nil
571565 else {
572- let dh = if (ds)
573- then du
574- else -(du)
575- let dw = dg(bH, dh)
576- let dq = dk(bH, bP)
577- let dx = [IntegerEntry(bM(bH, aZ, cJ), height), IntegerEntry(bL(bH, aZ, cJ), dq)]
578- (dw ++ dx)
566+ let df = if (dq)
567+ then ds
568+ else -(ds)
569+ let du = de(bF, df)
570+ let do = di(bF, bN)
571+ let dv = [IntegerEntry(bK(bF, aX, cH), height), IntegerEntry(bJ(bF, aX, cH), do)]
572+ (du ++ dv)
579573 }
580- dv
574+ dt
581575 }
582576
583577
584-func dy (bH,bP) = {
585- let dz = cG()
586- let cJ = dz._1
587- let cK = dz._2
588- let aZ = addressFromStringValue(bP)
589- let dA = bN(bH, aZ, cJ)
578+func dw (bF,bN) = {
579+ let dx = cE()
580+ let cH = dx._1
581+ let cI = dx._2
582+ let aX = addressFromStringValue(bN)
583+ let dy = bL(bF, aX, cH)
584+ let dz = valueOrElse(getInteger(this, dy), 0)
585+ let dA = bI(bF, aX, cH)
590586 let dB = valueOrElse(getInteger(this, dA), 0)
591- let dC = bK(bH, aZ, cJ)
592- let dD = valueOrElse(getInteger(this, dC), 0)
593- let dq = dk(bH, bP)
594- let df = da(bH)
595- let dE = (dq - dB)
596- let dF = (df - dD)
597- $Tuple3([IntegerEntry(dA, dq), IntegerEntry(dC, df)], dE, dF)
587+ let do = di(bF, bN)
588+ let dd = cY(bF)
589+ let dC = (do - dz)
590+ let dD = (dd - dB)
591+ $Tuple3([IntegerEntry(dy, do), IntegerEntry(dA, dd)], dC, dD)
598592 }
599593
600594
601-func dG () = {
602- let dH = u(bR, aj())
603- let dI = getInteger(this, am())
604- let dJ = getInteger(this, an())
605- let dK = u(bR, ap())
606- let dL = if ((height > dK))
607- then dK
595+func dE () = {
596+ let dF = u(bP, aj())
597+ let dG = getInteger(this, am())
598+ let dH = getInteger(this, an())
599+ let dI = u(bP, ap())
600+ let dJ = if ((height > dI))
601+ then dI
608602 else height
609- let dM = {
610- let aK = dI
611- if ($isInstanceOf(aK, "Int"))
603+ let dK = {
604+ let aI = dG
605+ if ($isInstanceOf(aI, "Int"))
612606 then {
613- let dN = aK
614- max([(dL - dN), 0])
607+ let dL = aI
608+ max([(dJ - dL), 0])
615609 }
616- else if ($isInstanceOf(aK, "Unit"))
610+ else if ($isInstanceOf(aI, "Unit"))
617611 then 0
618612 else throw("Match error")
619613 }
620- let dO = ((dH * (bY - 1)) / bY)
621- let dP = valueOrElse(dJ, 0)
622- let dQ = ((dO * dM) + dP)
623- $Tuple2([IntegerEntry(an(), dQ), IntegerEntry(am(), height)], dQ)
614+ let dM = ((dF * (bW - 1)) / bW)
615+ let dN = valueOrElse(dH, 0)
616+ let dO = ((dM * dK) + dN)
617+ $Tuple2([IntegerEntry(an(), dO), IntegerEntry(am(), height)], dO)
624618 }
625619
626620
627-func dR (bH,bP,dS) = {
628- let aZ = valueOrErrorMessage(addressFromString(bP), l("invalid user address"))
629- let bs = ca(aZ)
630- if ((bs == bs))
621+func dP (bF,bN,dQ) = {
622+ let aX = valueOrErrorMessage(addressFromString(bN), l("invalid user address"))
623+ let bq = bY(aX)
624+ if ((bq == bq))
631625 then {
632- let dT = "empty"
633- let dU = if ((bH != dT))
626+ let dR = "empty"
627+ let dS = if ((bF != dR))
634628 then {
635- let dV = valueOrErrorMessage(getString(bQ, S(bH)), l(("unsupported lp asset " + bH)))
636- getIntegerValue(bQ, U(dV))
629+ let dT = valueOrErrorMessage(getString(bO, S(bF)), l(("unsupported lp asset " + bF)))
630+ getIntegerValue(bO, U(dT))
637631 }
638- else if (dS)
632+ else if (dQ)
639633 then 0
640- else n(("not readonly mode: unsupported lp asset " + bH))
641- let dW = bt(bs, bH)
642- let dX = br(bs)
643- let dY = valueOrElse(getInteger(this, dW), r(this, dX))
644- let dQ = dG()._2
645- let dZ = (dQ - dY)
646- if ((0 > dZ))
634+ else n(("not readonly mode: unsupported lp asset " + bF))
635+ let dU = br(bq, bF)
636+ let dV = bp(bq)
637+ let dW = valueOrElse(getInteger(this, dU), r(this, dV))
638+ let dO = dE()._2
639+ let dX = (dO - dW)
640+ if ((0 > dX))
647641 then n("wrong calculations")
648642 else {
649- let ea = dy(bH, bP)
650- let eb = ea._1
651- let ec = ea._2
652- let ed = ea._3
653- let ee = fraction(dZ, dU, d)
654- let ef = if ((ed == 0))
643+ let dY = dw(bF, bN)
644+ let dZ = dY._1
645+ let ea = dY._2
646+ let eb = dY._3
647+ let ec = fraction(dX, dS, d)
648+ let ed = if ((eb == 0))
655649 then 0
656- else fraction(ee, ec, ed)
657- let eg = ([IntegerEntry(dW, dQ)] ++ eb)
658- let eh = makeString([toString(dY), toString(dZ), toString(dU), toString(ec), toString(ed)], ":")
659- $Tuple3(ef, eg, eh)
650+ else fraction(ec, ea, eb)
651+ let ee = ([IntegerEntry(dU, dO)] ++ dZ)
652+ let ef = makeString([toString(dW), toString(dX), toString(dS), toString(ea), toString(eb)], ":")
653+ $Tuple3(ed, ee, ef)
660654 }
661655 }
662656 else throw("Strict value is not equal to itself.")
663657 }
664658
665659
666-func ei (aP,ej) = if (!(containsElement(i, ej)))
660+func eg (aN,eh) = if (!(containsElement(i, eh)))
667661 then n("invalid duration")
668662 else {
669- let bh = (ej * k)
670- let ek = toBase58String(aB)
671- if ((size(aP.payments) != 1))
663+ let bf = (eh * k)
664+ let ei = toBase58String(az)
665+ if ((size(aN.payments) != 1))
672666 then n("invalid payment - exact one payment must be attached")
673667 else {
674- let cE = aP.payments[0]
675- let el = cE.amount
676- if ((aB != value(cE.assetId)))
677- then n((("invalid asset is in payment - " + ek) + " is expected"))
668+ let cC = aN.payments[0]
669+ let ej = cC.amount
670+ if ((az != value(cC.assetId)))
671+ then n((("invalid asset is in payment - " + ei) + " is expected"))
678672 else {
679- let em = bk()
680- let aZ = aP.caller
681- let bP = toString(aZ)
682- let en = isDefined(getString(bl(bP)))
683- let eo = if (en)
684- then value(getString(bl(bP)))
685- else toString(u(this, em))
686- let bs = parseIntValue(eo)
687- let cl = height
688- if (if ((aC > el))
689- then (aZ != bU)
673+ let ek = bi()
674+ let aX = aN.caller
675+ let bN = toString(aX)
676+ let el = isDefined(getString(bj(bN)))
677+ let em = if (el)
678+ then value(getString(bj(bN)))
679+ else toString(u(this, ek))
680+ let bq = parseIntValue(em)
681+ let cj = height
682+ if (if ((aA > ej))
683+ then (aX != bS)
690684 else false)
691- then n(("amount is less then minLockAmount=" + toString(aC)))
692- else if ((aD > bh))
693- then n(("passed duration is less then minLockDuration=" + toString(aD)))
694- else if ((bh > aE))
695- then n(("passed duration is greater then maxLockDuration=" + toString(aE)))
685+ then n(("amount is less then minLockAmount=" + toString(aA)))
686+ else if ((aB > bf))
687+ then n(("passed duration is less then minLockDuration=" + toString(aB)))
688+ else if ((bf > aC))
689+ then n(("passed duration is greater then maxLockDuration=" + toString(aC)))
696690 else {
697- let ep = fraction(el, bh, aE)
698- let eq = cb()
699- let dX = br(bs)
700- let dQ = dG()._2
701- let er = cF(aZ)
702- let es = reentrantInvoke(bT, "refreshUserReward", [aZ.bytes], nil)
703- if ((es == es))
691+ let en = fraction(ej, bf, aC)
692+ let eo = bZ()
693+ let dV = bp(bq)
694+ let dO = dE()._2
695+ let ep = cD(aX)
696+ let eq = reentrantInvoke(bR, "refreshUserReward", [aX.bytes], nil)
697+ if ((eq == eq))
704698 then {
705- let et = if (en)
699+ let er = if (el)
706700 then nil
707- else [IntegerEntry(em, (bs + 1)), StringEntry(bl(bP), eo), StringEntry(bm(eo), bP)]
708- $Tuple2(((((et ++ cB(aZ, aP.transactionId, el, cl, bh, ep, 0)) ++ co(el, bh, 1, if (en)
701+ else [IntegerEntry(ek, (bq + 1)), StringEntry(bj(bN), em), StringEntry(bk(em), bN)]
702+ $Tuple2(((((er ++ cz(aX, aN.transactionId, ej, cj, bf, en, 0)) ++ cm(ej, bf, 1, if (el)
709703 then 0
710- else 1)) :+ ci("lock", bP, el, cl, bh, ep, aP)) ++ [IntegerEntry(dX, dQ), IntegerEntry(bz(), (eq + ep)), IntegerEntry(bd(aZ), (er + ep))]), ep)
704+ else 1)) :+ cg("lock", bN, ej, cj, bf, en, aN)) ++ [IntegerEntry(dV, dO), IntegerEntry(bx(), (eo + en)), IntegerEntry(bb(aX), (ep + en))]), en)
711705 }
712706 else throw("Strict value is not equal to itself.")
713707 }
714708 }
715709 }
716710 }
717711
718712
719-func eu (aZ,ev) = {
720- let ew = bc(aZ, ev)
721- let ex = parseIntValue(ew[aS])
722- let cl = parseIntValue(ew[aT])
723- let ey = parseIntValue(ew[aU])
724- let ez = (cl + ey)
725- let bj = parseIntValue(ew[aX])
726- let eA = ((height - cl) / aG)
727- let eB = fraction(toBigInt(eA), (toBigInt((8 * aG)) * h), toBigInt(ey))
728- let eC = if ((height > ez))
729- then ex
730- else (toInt(fraction(toBigInt(ex), (h - pow(toBigInt(5), 1, eB, f, f, DOWN)), h)) - bj)
731- eC
713+func es (aX,et) = {
714+ let eu = ba(aX, et)
715+ let ev = parseIntValue(eu[aQ])
716+ let cj = parseIntValue(eu[aR])
717+ let ew = parseIntValue(eu[aS])
718+ let ex = (cj + ew)
719+ let bh = parseIntValue(eu[aV])
720+ let ey = ((height - cj) / aE)
721+ let ez = fraction(toBigInt(ey), (toBigInt((8 * aE)) * h), toBigInt(ew))
722+ let eA = if ((height > ex))
723+ then ev
724+ else (toInt(fraction(toBigInt(ev), (h - pow(toBigInt(5), 1, ez, f, f, DOWN)), h)) - bh)
725+ eA
732726 }
733727
734728
735-@Callable(aP)
736-func constructor (eD,eE,aC,eF,eG,aF) = {
737- let eH = aO(aP)
738- if ((eH == eH))
739- then ([IntegerEntry(bk(), 0), StringEntry(ay(), aI(eE, aC, eF, eG, aF)), StringEntry(F(), eD)] ++ co(0, 0, 0, 0))
729+@Callable(aN)
730+func constructor (eB,eC,aA,eD,eE,aD) = {
731+ let eF = aM(aN)
732+ if ((eF == eF))
733+ then ([IntegerEntry(bi(), 0), StringEntry(aw(), aG(eC, aA, eD, eE, aD)), StringEntry(F(), eB)] ++ cm(0, 0, 0, 0))
740734 else throw("Strict value is not equal to itself.")
741735 }
742736
743737
744738
745-@Callable(aP)
746-func lockRef (bh,eI,eJ) = {
747- let eK = ei(aP, bh)
748- let eL = eK._1
749- let ep = eK._2
750- let eM = toString(aP.caller)
751- let eN = if (if ((eI == ""))
739+@Callable(aN)
740+func lockRef (bf,eG,eH) = {
741+ let eI = eg(aN, bf)
742+ let eJ = eI._1
743+ let en = eI._2
744+ let eK = toString(aN.caller)
745+ let eL = if (if ((eG == ""))
752746 then true
753- else (eJ == base58''))
747+ else (eH == base58''))
754748 then unit
755- else invoke(B, "createPair", [E, eI, eM, eJ], nil)
756- if ((eN == eN))
749+ else invoke(B, "createPair", [E, eG, eK, eH], nil)
750+ if ((eL == eL))
757751 then {
758- let eO = invoke(aF, "updateReferralActivity", [toString(aP.caller), ep], nil)
759- if ((eO == eO))
760- then $Tuple2(eL, unit)
752+ let eM = invoke(aD, "updateReferralActivity", [toString(aN.caller), en], nil)
753+ if ((eM == eM))
754+ then $Tuple2(eJ, unit)
761755 else throw("Strict value is not equal to itself.")
762756 }
763757 else throw("Strict value is not equal to itself.")
764758 }
765759
766760
767761
768-@Callable(aP)
769-func lock (bh) = {
770- let eP = ei(aP, bh)
771- let eL = eP._1
772- let ep = eP._2
773- let eO = invoke(aF, "updateReferralActivity", [toString(aP.caller), ep], nil)
774- if ((eO == eO))
775- then $Tuple2(eL, unit)
762+@Callable(aN)
763+func lock (bf) = {
764+ let eN = eg(aN, bf)
765+ let eJ = eN._1
766+ let en = eN._2
767+ let eM = invoke(aD, "updateReferralActivity", [toString(aN.caller), en], nil)
768+ if ((eM == eM))
769+ then $Tuple2(eJ, unit)
776770 else throw("Strict value is not equal to itself.")
777771 }
778772
779773
780774
781-@Callable(aP)
782-func claimWxBoost (bH,bP) = if ((bS != aP.caller))
775+@Callable(aN)
776+func claimWxBoost (bF,bN) = if ((bQ != aN.caller))
783777 then n("permissions denied")
784778 else {
785- let eQ = dR(bH, bP, false)
786- let eR = eQ._1
787- let eg = eQ._2
788- let eh = eQ._3
789- $Tuple2(eg, [eR])
779+ let eO = dP(bF, bN, false)
780+ let eP = eO._1
781+ let ee = eO._2
782+ let ef = eO._3
783+ $Tuple2(ee, [eP])
790784 }
791785
792786
793787
794-@Callable(aP)
795-func claimWxBoostREADONLY (bH,bP) = {
796- let eS = dR(bH, bP, true)
797- let eR = eS._1
798- let eg = eS._2
799- let eh = eS._3
800- $Tuple2(nil, [eR, eh])
788+@Callable(aN)
789+func claimWxBoostREADONLY (bF,bN) = {
790+ let eQ = dP(bF, bN, true)
791+ let eP = eQ._1
792+ let ee = eQ._2
793+ let ef = eQ._3
794+ $Tuple2(nil, [eP, ef])
801795 }
802796
803797
804798
805-@Callable(aP)
806-func unlock (eT) = {
807- let aZ = aP.caller
808- let bP = toString(aZ)
809- let ba = fromBase58String(eT)
810- let ew = bc(aZ, if ((eT == ""))
799+@Callable(aN)
800+func unlock (eR) = {
801+ let aX = aN.caller
802+ let bN = toString(aX)
803+ let aY = fromBase58String(eR)
804+ let eu = ba(aX, if ((eR == ""))
811805 then unit
812- else ba)
813- let ex = parseIntValue(ew[aS])
814- let cl = parseIntValue(ew[aT])
815- let ey = parseIntValue(ew[aU])
816- let bj = parseIntValue(ew[aX])
817- let bi = parseIntValue(ew[aW])
818- let eA = ((height - cl) / aG)
819- let eC = eu(aZ, if ((eT == ""))
806+ else aY)
807+ let ev = parseIntValue(eu[aQ])
808+ let cj = parseIntValue(eu[aR])
809+ let ew = parseIntValue(eu[aS])
810+ let bh = parseIntValue(eu[aV])
811+ let bg = parseIntValue(eu[aU])
812+ let ey = ((height - cj) / aE)
813+ let eA = es(aX, if ((eR == ""))
820814 then unit
821- else ba)
822- let ep = fraction(ex, ey, aE)
823- let eU = min([fraction((eA * aG), ep, aE), bi])
824- let eV = x((bi - eU), "gwxRemaining")
825- let eW = cc(aZ)
826- if ((0 >= ex))
815+ else aY)
816+ let en = fraction(ev, ew, aC)
817+ let eS = min([fraction((ey * aE), en, aC), bg])
818+ let eT = x((bg - eS), "gwxRemaining")
819+ let eU = ca(aX)
820+ if ((0 >= ev))
827821 then n("nothing to unlock")
828822 else {
829- let eq = cb()
830- let er = cF(aZ)
831- let eX = x((er - eU), "userGwxAmountTotalNew")
832- if ((eW > eX))
833- then n(("locked gwx amount: " + toString(eW)))
823+ let eo = bZ()
824+ let ep = cD(aX)
825+ let eV = x((ep - eS), "userGwxAmountTotalNew")
826+ if ((eU > eV))
827+ then n(("locked gwx amount: " + toString(eU)))
834828 else {
835- let es = reentrantInvoke(bT, "refreshUserReward", [aZ.bytes], nil)
836- if ((es == es))
837- then ((((cB(aZ, ba, ex, cl, ey, eV, (bj + eC)) ++ co(-(eC), 0, 0, 0)) :+ ci("unlock", bP, eC, cl, ey, eU, aP)) :+ ScriptTransfer(aZ, eC, aB)) ++ [IntegerEntry(bz(), x((eq - eU), "gwxTotal")), IntegerEntry(bd(aZ), eX)])
829+ let eq = reentrantInvoke(bR, "refreshUserReward", [aX.bytes], nil)
830+ if ((eq == eq))
831+ then ((((cz(aX, aY, ev, cj, ew, eT, (bh + eA)) ++ cm(-(eA), 0, 0, 0)) :+ cg("unlock", bN, eA, cj, ew, eS, aN)) :+ ScriptTransfer(aX, eA, az)) ++ [IntegerEntry(bx(), x((eo - eS), "gwxTotal")), IntegerEntry(bb(aX), eV)])
838832 else throw("Strict value is not equal to itself.")
839833 }
840834 }
841835 }
842836
843837
844838
845-@Callable(aP)
846-func gwxUserInfoREADONLY (bP) = {
847- let aZ = valueOrErrorMessage(addressFromString(bP), l("invalid user address"))
848- let bi = cF(aZ)
849- $Tuple2(nil, [bi])
839+@Callable(aN)
840+func gwxUserInfoREADONLY (bN) = {
841+ let aX = valueOrErrorMessage(addressFromString(bN), l("invalid user address"))
842+ let bg = cD(aX)
843+ $Tuple2(nil, [bg])
850844 }
851845
852846
853847
854-@Callable(aP)
855-func userMaxDurationREADONLY (bP) = $Tuple2(nil, $Tuple2("increaseLock", aE))
848+@Callable(aN)
849+func userMaxDurationREADONLY (bN) = $Tuple2(nil, $Tuple2("increaseLock", aC))
856850
857851
858852
859-@Callable(aP)
860-func getUserGwxAmountAtHeightREADONLY (bP,eY) = {
861- let aZ = valueOrErrorMessage(addressFromString(bP), l("invalid user address"))
862- let bi = cF(aZ)
863- $Tuple2(nil, bi)
853+@Callable(aN)
854+func getUserGwxAmountAtHeightREADONLY (bN,eW) = {
855+ let aX = valueOrErrorMessage(addressFromString(bN), l("invalid user address"))
856+ let bg = cD(aX)
857+ $Tuple2(nil, bg)
864858 }
865859
866860
867861
868-@Callable(aP)
869-func getUserGwxAmount (bP) = {
870- let aZ = valueOrErrorMessage(addressFromString(bP), l("invalid user address"))
871- let bi = cF(aZ)
872- $Tuple2(nil, bi)
862+@Callable(aN)
863+func getUserGwxAmount (bN) = {
864+ let aX = valueOrErrorMessage(addressFromString(bN), l("invalid user address"))
865+ let bg = cD(aX)
866+ $Tuple2(nil, bg)
873867 }
874868
875869
876870
877-@Callable(aP)
878-func getGwxTotalREADONLY () = $Tuple2(nil, cb())
871+@Callable(aN)
872+func getGwxTotalREADONLY () = $Tuple2(nil, bZ())
879873
880874
881875
882-@Callable(aP)
876+@Callable(aN)
883877 func onBoostEmissionUpdate () = {
884- let eH = if ((aP.caller == bR))
878+ let eF = if ((aN.caller == bP))
885879 then true
886- else aO(aP)
887- if ((eH == eH))
888- then dG()
880+ else aM(aN)
881+ if ((eF == eF))
882+ then dE()
889883 else throw("Strict value is not equal to itself.")
890884 }
891885
892886
893887
894-@Callable(aP)
895-func onStakedVoteUpdate (bH,bP,ds) = {
896- let eH = if ((aP.caller == bS))
888+@Callable(aN)
889+func onStakedVoteUpdate (bF,bN,dq) = {
890+ let eF = if ((aN.caller == bQ))
897891 then true
898- else aO(aP)
899- if ((eH == eH))
892+ else aM(aN)
893+ if ((eF == eF))
900894 then {
901- let dv = dr(bH, bP, ds)
902- $Tuple2(dv, unit)
895+ let dt = dp(bF, bN, dq)
896+ $Tuple2(dt, unit)
903897 }
904898 else throw("Strict value is not equal to itself.")
905899 }
906900
907901
908902
909-@Callable(aP)
910-func getVotingResultStakedREADONLY (bH) = $Tuple2(nil, cW(bH))
903+@Callable(aN)
904+func getVotingResultStakedREADONLY (bF) = $Tuple2(nil, cU(bF))
911905
912906
913907
914-@Callable(aP)
915-func getVotingResultStakedIntegralREADONLY (bH) = $Tuple2(nil, da(bH))
908+@Callable(aN)
909+func getVotingResultStakedIntegralREADONLY (bF) = $Tuple2(nil, cY(bF))
916910
917911
918912
919-@Callable(aP)
920-func getUserVoteFinalizedREADONLY (bH,bP) = $Tuple2(nil, cP(bH, bP))
913+@Callable(aN)
914+func getUserVoteFinalizedREADONLY (bF,bN) = $Tuple2(nil, cN(bF, bN))
921915
922916
923917
924-@Callable(aP)
925-func getUserVoteStakedIntegralREADONLY (bH,bP) = $Tuple2(nil, dk(bH, bP))
918+@Callable(aN)
919+func getUserVoteStakedIntegralREADONLY (bF,bN) = $Tuple2(nil, di(bF, bN))
926920
927921
928-@Verifier(eZ)
929-func fa () = {
930- let fb = {
931- let aK = aM()
932- if ($isInstanceOf(aK, "ByteVector"))
922+@Verifier(eX)
923+func eY () = {
924+ let eZ = {
925+ let aI = aK()
926+ if ($isInstanceOf(aI, "ByteVector"))
933927 then {
934- let aR = aK
935- aR
928+ let aP = aI
929+ aP
936930 }
937- else if ($isInstanceOf(aK, "Unit"))
938- then eZ.senderPublicKey
931+ else if ($isInstanceOf(aI, "Unit"))
932+ then eX.senderPublicKey
939933 else throw("Match error")
940934 }
941- sigVerify(eZ.bodyBytes, eZ.proofs[0], fb)
935+ sigVerify(eX.bodyBytes, eX.proofs[0], eZ)
942936 }
943937

github/deemru/w8io/169f3d6 
341.30 ms