tx · 2BxzSun9bdECvdFx65B5UjpGouhuFGnnfqE3JdhFLXd6

3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz:  -0.02300000 Waves

2023.03.10 12:12 [2483780] smart account 3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz > SELF 0.00000000 Waves

{ "type": 13, "id": "2BxzSun9bdECvdFx65B5UjpGouhuFGnnfqE3JdhFLXd6", "fee": 2300000, "feeAssetId": null, "timestamp": 1678439539535, "version": 2, "chainId": 84, "sender": "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz", "senderPublicKey": "D28XoueZWsMfm8Y5pa6C5ZFuYoWgre2Wm8tzJANJgMnq", "proofs": [ "bHnobnXRSzi5vdLLyiSacAuGVHZw8RvAM4bfQSfZ1THL8S3WJ5XfgcCc6wKTrQ4kSKFUMDXXriiM7bpL3kqxurj" ], "script": "base64:BgKrIAgCEgMKAQgSAwoBCBIDCgEIEgASABIECgIIARIGCgQCAQICEgMKAQgSAwoBCBIFCgMICAQSBgoEARgIGBIECgIYCBIECgIICBIECgIICBIDCgEIEgQKAggIIgZTQ0FMRTgiBU1VTFQzIgVNVUxUOCIHU0NBTEUxOCIGTVVMVDE4IgNTRVAiDlBPT0xXRUlHSFRNVUxUIgp6ZXJvQmlnSW50IglvbmVCaWdJbnQiB3dyYXBFcnIiA21zZyIIdGhyb3dFcnIiCWFzQW55TGlzdCIDdmFsIgckbWF0Y2gwIgp2YWxBbnlMeXN0IgVhc0ludCIGdmFsSW50Ighhc1N0cmluZyIGdmFsU3RyIgxhc0J5dGVWZWN0b3IiBnZhbEJpbiIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbCIMZ2V0SW50T3JaZXJvIg9nZXRJbnRPckRlZmF1bHQiCmRlZmF1bHRWYWwiDGdldEludE9yRmFpbCIZZ2V0QmlnSW50RnJvbVN0cmluZ09yWmVybyIcZ2V0QmlnSW50RnJvbVN0cmluZ09yRGVmYXVsdCIBcyIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiD3Jlc3VsdFNjYWxlTXVsdCIRa2V5RmFjdG9yeUFkZHJlc3MiGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QiGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcCIZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcCIUSWR4RmFjdG9yeUNmZ0lkb0RhcHAiFUlkeEZhY3RvcnlDZmdUZWFtRGFwcCIZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcCIVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwIhlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwIg1rZXlGYWN0b3J5Q2ZnIhNrZXlNYW5hZ2VyUHVibGljS2V5IhprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleSIWa2V5U3RhYmxlUG9vbEFkZG9uQWRkciIMa2V5QWRkb25BZGRyIhprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZyIKbHBBc3NldFN0ciIQa2V5RmFjdG9yeUxwTGlzdCIma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MiFGtleUZhY3RvcnlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiCnJlYWRMcExpc3QiB2ZhY3RvcnkiFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIhhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwiCmZhY3RvcnlDZmciGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbCIXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwiHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudCIha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50IhVrZXlFbWlzc2lvblN0YXJ0QmxvY2siG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcyITa2V5RW1pc3Npb25FbmRCbG9jayIPa2V5U3Rha2VkQnlVc2VyIg51c2VyQWRkcmVzc1N0ciIMbHBBc3NldElkU3RyIg5rZXlTdGFrZWRUb3RhbCIQa2V5Q2xhaW1lZEJ5VXNlciIZa2V5Q2xhaW1lZEJ5VXNlck1pblJld2FyZCIba2V5Q2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkIg9rZXlDbGFpbWVkVG90YWwiCnJlYWRTdGFrZWQiFWtleUxhc3RUb3RhbExwQmFsYW5jZSIJbHBBc3NldElkIhRrZXlMYXN0VXNlckxwQmFsYW5jZSILdXNlckFkZHJlc3MiGWtleVRvdGFsTHBCYWxhbmNlSW50ZWdyYWwiGGtleVVzZXJMcEJhbGFuY2VJbnRlZ3JhbCIma2V5VG90YWxMcEJhbGFuY2VJbnRlZ3JhbExhc3RVcGRIZWlnaHQiJWtleVVzZXJMcEJhbGFuY2VJbnRlZ3JhbExhc3RVcGRIZWlnaHQiEmtleVd4UGVyTHBJbnRlZ3JhbCIfa2V5V3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodCIQa2V5V3hUb0NsYWltVXNlciIja2V5V3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHQiCmtleVd4UGVyTHAiDWtleVd4UGVyTHBYMTgiGmtleVd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0IhlrZXlPcGVyYXRpb25IaXN0b3J5UmVjb3JkIgR0eXBlIgZ0eElkNTgiE2Zvcm1hdEhpc3RvcnlSZWNvcmQiBmFtb3VudCIVT3BlcmF0aW9uSGlzdG9yeUVudHJ5IgR0eElkIg5mYWN0b3J5QWRkcmVzcyIPZmFjdG9yeUNvbnRyYWN0IhBlbWlzc2lvbkNvbnRyYWN0IhBib29zdGluZ0NvbnRyYWN0Igpib29zdENvZWZmIgFAIhZscFN0YWtpbmdQb29sc0NvbnRyYWN0IgtrZXlOZXh0VXNlciIQZ2V0VXNlcnNMaXN0TmFtZSILa2V5TGlzdEhlYWQiCGxpc3ROYW1lIgtrZXlMaXN0U2l6ZSILa2V5TGlzdFByZXYiAmlkIgtrZXlMaXN0TmV4dCIMY29udGFpbnNOb2RlIgpoZWFkT3JVbml0IgpwcmV2T3JVbml0IgpuZXh0T3JVbml0IhFpbnNlcnROb2RlQWN0aW9ucyIIbGlzdFNpemUiCWNoZWNrTm9kZSIRZGVsZXRlTm9kZUFjdGlvbnMiG2NhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdCIMc3Rha2VkQnlVc2VyIiZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybyISd3hQZXJMcEludGVncmFsTmV3Ihp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdEtFWSIUcmVmcmVzaFBvb2xJTlRFR1JBTFMiDnBvb2xBZGRyZXNzU3RyIg1scERlbHRhQW1vdW50Ig5zdGFrZWRUb3RhbEtFWSILc3Rha2VkVG90YWwiEm5vblplcm9TdGFrZWRUb3RhbCIKcG9vbFdlaWdodCISZW1pc3Npb25TdGFydEJsb2NrIhR3eEVtaXNzaW9uUGVyQmxvY2tYMyIYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzIhJ3eFBlckxwSW50ZWdyYWxLRVkiH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHRLRVkiCnd4UGVyTHBLRVkiHHd4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHQiD3d4UGVyTHBJbnRlZ3JhbCIPd3hQZXJMcE9yWmVyb1gzIgJkaCIJd3hQZXJMcFgzIg5zdGFrZWRUb3RhbE5ldyIVbm9uWmVyb1N0YWtlZFRvdGFsTmV3Igx3eFBlckxwWDNOZXciH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHROZXciBWRlYnVnIhByZWZyZXNoSU5URUdSQUxTIg0kdDAxNDc2MjE0ODg0IhFwb29sSW50ZWdyYWxTVEFURSIJcG9vbERFQlVHIg9zdGFrZWRCeVVzZXJLRVkiEHd4VG9DbGFpbVVzZXJLRVkiI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0S0VZIg13eFRvQ2xhaW1Vc2VyIhd3eFBlckxwSW50ZWdyYWxVc2VyTGFzdCIGTVVMVDExIhB3eFRvQ2xhaW1Vc2VyTmV3Ihp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdE5ldyIjd3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHROZXciFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0IhVwZXJtaXNzaW9uRGVuaWVkRXJyb3IiCG11c3RUaGlzIgFpIgttdXN0TWFuYWdlciICcGsiDnVuc3Rha2VBY3Rpb25zIgtwb29sQWRkcmVzcyIXbHBBc3NldFJlY2lwaWVudEFkZHJlc3MiDWludGVncmFsU1RBVEUiC2xpc3RBY3Rpb25zIhFyZWZyZXNoU3Rha2VkVm90ZSIWY2xhaW1lZEJ5VXNlck1pblJld2FyZCIQYXZhaWxhYmxlVG9DbGFpbSIVdGhyb3dJZk5vdGhpbmdUb0NsYWltIgFyIhFmYWN0b3J5QWRkcmVzc1N0ciILY2hlY2tDYWxsZXIiFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QiBWNoZWtzIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iA3BtdCIJY2FsbGVyU3RyIg0kdDAyMTYwNjIxNzIzIglwb29sQWRkb24iBnJlc3VsdCIQY2xhaW1lZEJ5VXNlcktFWSIPY2xhaW1lZFRvdGFsS0VZIhljbGFpbWVkQnlVc2VyTWluUmV3YXJkS0VZIhtjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmRLRVkiDWNsYWltZWRCeVVzZXIiGGNsYWltZWRCeVVzZXJCb29zdFJld2FyZCIMY2xhaW1lZFRvdGFsIg0kdDAyNTEwOTI1MjIxIhJ3eEFtb3VudEJvb3N0VG90YWwiDW1pblJld2FyZFBhcnQiD2Jvb3N0UmV3YXJkUGFydCILdG90YWxSZXdhcmQiCXd4QXNzZXRJZCIJZW1pdEJvb3N0IhJjbGFpbWVkQnlVc2VyVmFsdWUiHmNsYWltZWRCeVVzZXJNaW5SZXdhcmRQbHVzUGFydCIrY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkUGx1c0Jvb3N0UmV3YXJkUGFydCIgY2xhaW1lZFRvdGFsUGx1c0F2YWlsYWJsZVRvQ2xhaW0iC2N1cnJlbnRJdGVyIgpscEFzc2V0SWRzIgZyZXNBY2MiBGluZm8iCXVuY2xhaW1lZCIHY2xhaW1lZCIRdXNlclZvdGVGaW5hbGl6ZWQiA3JlcyIDaW52IhJ3eEVtaXNzaW9uUGVyQmxvY2siDHBhc3NlZEJsb2NrcyIOcG9vbFd4RW1pc3Npb24iDHVzZXJXeFJld2FyZCINJHQwMjkyNjkyOTM4MSIOYm9vc3RJbnZSZXN1bHQiCmJvb3N0RGVidWciCnVzZXJPclVuaXQiByRtYXRjaDEiBGhlYWQiDm5leHRVc2VyT3JVbml0IghuZXh0VXNlciINJHQwMzIwMDIzMjExMiICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5ZAABYQAIAAFiAOgHAAFjAIDC1y8AAWQAEgABZQkAtgIBAICAkLu61q3wDQABZgICX18AAWcFAWMAAWgJALYCAQAAAAFpCQC2AgEAAQEBagEBawkAuQkCCQDMCAICDXN0YWtpbmcucmlkZToJAMwIAgkApQgBBQR0aGlzCQDMCAIFAWsFA25pbAIBIAEBbAEBawkAAgEJAQFqAQUBawEBbQEBbgQBbwUBbgMJAAECBQFvAglMaXN0W0FueV0EAXAFAW8FAXAJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BAXEBAW4EAW8FAW4DCQABAgUBbwIDSW50BAFyBQFvBQFyCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQFzAQFuBAFvBQFuAwkAAQIFAW8CBlN0cmluZwQBdAUBbwUBdAkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEBdQEBbgQBbwUBbgMJAAECBQFvAgpCeXRlVmVjdG9yBAF2BQFvBQF2CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQF3AgF4AXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQF4BQF5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQF5Ag8gaXMgbm90IGRlZmluZWQBAXoCAXgBeQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAXgFAXkJAKwCAgkArAICCQCsAgIJAKwCAgIKbWFuZGF0b3J5IAkApQgBBQF4AgEuBQF5Ag8gaXMgbm90IGRlZmluZWQBAUECAXgBeQkBC3ZhbHVlT3JFbHNlAgkAmggCBQF4BQF5AAABAUIDAXgBeQFDCQELdmFsdWVPckVsc2UCCQCaCAIFAXgFAXkFAUMBAUQCAXgBeQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAXgFAXkJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAXkCDyBpcyBub3QgZGVmaW5lZAEBRQIBeAF5CQEFdmFsdWUBCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUBeAUBeQIBMAEBRgMBeAF5AUMEAW8JAJ0IAgUBeAUBeQMJAAECBQFvAgZTdHJpbmcEAUcFAW8JAQV2YWx1ZQEJAKgDAQUBRwMJAAECBQFvAgRVbml0BQFDCQACAQILTWF0Y2ggZXJyb3IBAUgCAUkBSgkAvAIDCQC2AgEFAUkFAWUJALYCAQUBSgEBSwIBbgFMCQCgAwEJALwCAwUBbgkAtgIBBQFMBQFlAQFNAAIcJXMlc19fY29uZmlnX19mYWN0b3J5QWRkcmVzcwEBTgACGiVzX192b3RpbmdFbWlzc2lvbkNvbnRyYWN0AAFPAAEAAVAAAgABUQADAAFSAAQAAVMABQABVAAGAAFVAAcBAVYAAhElc19fZmFjdG9yeUNvbmZpZwEBVwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFYAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFZAAIXJXNfX3N0YWJsZVBvb2xBZGRvbkFkZHIBAVoAAg0lc19fYWRkb25BZGRyAQJhYQECYWIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYWIJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWYBAmFjAAIQJXNfX2xwVG9rZW5zTGlzdAECYWQBAmFiCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFiCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQFmAQJhZQECYWYJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUCYWYFA25pbAUBZgECYWcBAmFoCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUCYWgJAQJhYwACAAUBZgECYWkBAmFoCQC1CQIJAQF6AgUCYWgJAQFWAAUBZgECYWoBAmFrCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFrBQFQAQJhbAECYWsJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWsFAVMBAmFtAQJhawkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhawUBTwECYW4AAhslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBAmFvAAIeJXMlc19fcmF0ZVBlckJsb2NrTWF4X19jdXJyZW50AQJhcAACGiVzJXNfX2VtaXNzaW9uX19zdGFydEJsb2NrAQJhcQACGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgECYXIAAhglcyVzX19lbWlzc2lvbl9fZW5kQmxvY2sBAmFzAgJhdAJhdQkAuQkCCQDMCAICDiVzJXMlc19fc3Rha2VkCQDMCAIFAmF0CQDMCAIFAmF1BQNuaWwFAWYBAmF2AQJhdQkArAICAhclcyVzJXNfX3N0YWtlZF9fdG90YWxfXwUCYXUBAmF3AgJhdQJhdAkAuQkCCQDMCAICDyVzJXMlc19fY2xhaW1lZAkAzAgCBQJhdAkAzAgCBQJhdQUDbmlsBQFmAQJheAICYXUCYXQJALkJAgkAzAgCAhglcyVzJXNfX2NsYWltZWRNaW5SZXdhcmQJAMwIAgUCYXQJAMwIAgUCYXUFA25pbAUBZgECYXkCAmF1AmF0CQC5CQIJAMwIAgIaJXMlcyVzX19jbGFpbWVkQm9vc3RSZXdhcmQJAMwIAgUCYXQJAMwIAgUCYXUFA25pbAUBZgECYXoBAmF1CQC5CQIJAMwIAgIWJXMlcyVzX19jbGFpbWVkX190b3RhbAkAzAgCBQJhdQUDbmlsBQFmAQJhQQEBeQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQF5AAABAmFCAQJhQwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQwkAzAgCAgV0b3RhbAkAzAgCAgNiYWwFA25pbAUBZgECYUQCAmFDAmFFCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFDCQDMCAIFAmFFCQDMCAICA2JhbAUDbmlsBQFmAQJhRgECYUMJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYUMJAMwIAgIFdG90YWwJAMwIAgIGYmFsSU5UBQNuaWwFAWYBAmFHAgJhQwJhRQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQwkAzAgCBQJhRQkAzAgCAgZiYWxJTlQFA25pbAUBZgECYUgBAmFDCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFDCQDMCAICBXRvdGFsCQDMCAICB2xhc3RVcGQFA25pbAUBZgECYUkCAmFDAmFFCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFDCQDMCAIFAmFFCQDMCAICB2xhc3RVcGQFA25pbAUBZgECYUoBAmFDCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUMJAMwIAgIGY29tbW9uCQDMCAICBWxwSW50BQNuaWwFAWYBAmFLAQJhQwkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmFDCQDMCAICBmNvbW1vbgkAzAgCAgZscEludEgFA25pbAUBZgECYUwCAmFDAmFFCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUMJAMwIAgUCYUUJAMwIAgIFbHBJbnQFA25pbAUBZgECYU0CAmFDAmFFCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUMJAMwIAgUCYUUJAMwIAgIGbHBJbnRIBQNuaWwFAWYBAmFOAQJhQwkAuQkCCQDMCAICAiVzCQDMCAIFAmFDCQDMCAICB3d4UGVyTHAFA25pbAUBZgECYU8BAmFDCQC5CQIJAMwIAgICJXMJAMwIAgUCYUMJAMwIAgIKd3hQZXJMcFgxOAUDbmlsBQFmAQJhUAICYUMCYUUJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJhQwkAzAgCBQJhRQkAzAgCAgV1SW50TAUDbmlsBQFmAQJhUQMCYVICYUUCYVMJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQJhUgkAzAgCBQJhRQkAzAgCBQJhUwUDbmlsBQFmAQJhVAQCYUUCYUMCYVICYVUJALkJAgkAzAgCAgwlcyVzJXMlZCVkJWQJAMwIAgUCYUUJAMwIAgUCYUMJAMwIAgUCYVIJAMwIAgkApAMBBQZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFAmFVBQNuaWwFAWYBAmFWBQJhUgJhRQJhQwJhVQJhVwkBC1N0cmluZ0VudHJ5AgkBAmFRAwUCYVIFAmFFCQDYBAEFAmFXCQECYVQEBQJhRQUCYUMFAmFSBQJhVQACYVgJAQF3AgUEdGhpcwkBAU0AAAJhWQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYVgAAmFrCQECYWkBBQJhWQACYVoJAQJhbAEFAmFrAAJiYQkBAmFqAQUCYWsAAmJiCgACYmMJAPwHBAUCYVoCFWdldEJvb3N0Q29lZmZSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYmMCA0ludAUCYmMJAAIBCQCsAgIJAAMBBQJiYwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJiZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQC5CQIJAMwIAgICJXMJAMwIAgIWbHBTdGFraW5nUG9vbHNDb250cmFjdAUDbmlsBQFmCQEBagECLmxwX3N0YWtpbmdfcG9vbHMgY29udHJhY3QgYWRkcmVzcyBpcyB1bmRlZmluZWQJAQFqAQIpaW52YWxpZCBscF9zdGFraW5nX3Bvb2xzIGNvbnRyYWN0IGFkZHJlc3MBAmJlAQJhQwkAuQkCCQDMCAICBCVzJXMJAMwIAgUCYUMJAMwIAgIIbmV4dFVzZXIFA25pbAUBZgECYmYBAmFDCQC5CQIJAMwIAgIFdXNlcnMJAMwIAgUCYUMFA25pbAUBZgECYmcBAmJoCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmJoCQDMCAICBGhlYWQFA25pbAUBZgECYmkBAmJoCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmJoCQDMCAICBHNpemUFA25pbAUBZgECYmoCAmJoAmJrCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYmgJAMwIAgUCYmsJAMwIAgIEcHJldgUDbmlsBQFmAQJibAICYmgCYmsJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJiaAkAzAgCBQJiawkAzAgCAgRuZXh0BQNuaWwFAWYBAmJtAgJiaAJiawQCYm4JAJ0IAgUEdGhpcwkBAmJnAQUCYmgEAmJvCQCdCAIFBHRoaXMJAQJiagIFAmJoBQJiawQCYnAJAJ0IAgUEdGhpcwkBAmJsAgUCYmgFAmJrAwMJAAACBQJiawkBC3ZhbHVlT3JFbHNlAgUCYm4CAAYJAQIhPQIFAmJvBQR1bml0BgkBAiE9AgUCYnAFBHVuaXQBAmJxAgJiaAJiawQCYm4JAJ0IAgUEdGhpcwkBAmJnAQUCYmgEAmJyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiaQEFAmJoAAAEAmJzAwkBASEBCQECYm0CBQJiaAUCYmsGCQACAQILTm9kZSBleGlzdHMDCQAAAgUCYnMFAmJzCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJpAQUCYmgJAGQCBQJicgABBQNuaWwDCQECIT0CBQJibgUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQECYmwCBQJiaAUCYmsJAQV2YWx1ZQEFAmJuCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiagIFAmJoCQEFdmFsdWUBBQJibgUCYmsFA25pbAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZwEFAmJoBQJiawUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJidAICYmgCYmsEAmJuCQCdCAIFBHRoaXMJAQJiZwEFAmJoBAJicgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYmkBBQJiaAAABAJibwkAnQgCBQR0aGlzCQECYmoCBQJiaAUCYmsEAmJwCQCdCAIFBHRoaXMJAQJibAIFAmJoBQJiawkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYmkBBQJiaAkAZQIFAmJyAAEFA25pbAMDCQECIT0CBQJibwUEdW5pdAkBAiE9AgUCYnAFBHVuaXQHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJibAIFAmJoCQEFdmFsdWUBBQJibwkBBXZhbHVlAQUCYnAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJqAgUCYmgJAQV2YWx1ZQEFAmJwCQEFdmFsdWUBBQJibwkAzAgCCQELRGVsZXRlRW50cnkBCQECYmoCBQJiaAUCYmsJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJsAgUCYmgFAmJrBQNuaWwDCQECIT0CBQJicAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQECYmcBBQJiaAkBBXZhbHVlAQUCYnAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJsAgUCYmgFAmJrCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiagIFAmJoCQEFdmFsdWUBBQJicAUDbmlsAwkBAiE9AgUCYm8FBHVuaXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJqAgUCYmgFAmJrCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJibAIFAmJoCQEFdmFsdWUBBQJibwUDbmlsAwkAAAIFAmJrCQELdmFsdWVPckVsc2UCBQJibgIACQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiZwEFAmJoBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICAg5pbnZhbGlkIG5vZGU6IAUCYmgCAS4FAmJrAQJidQQCYnYCYncCYngCYnkDAwkAAAIFAmJ3BQFoCQC/AgIFAmJ2BQFoBwUBaAMJAAACBQJidgUBaAUCYngDAwkAvwICBQJidwUBaAkAvwICBQJidgUBaAcJAQV2YWx1ZQEJAKgDAQkBAXcCBQR0aGlzBQJieQkAAgECLWNhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdDogdW5leHBlY3RlZCBzdGF0ZQECYnoDAmF1AmJBAmJCBAJiQwkBAmF2AQUCYXUEAmJECQC2AgEJAQJhQQEFAmJDBAJiRQMJAAACBQJiRAUBaAUBaQUCYkQEAmJGCQERQGV4dHJOYXRpdmUoMTA1MCkCBQJhWQkBAmFlAQUCYkEEAmJHCQEBRAIFAmFaCQECYXAABAJiSAkAaAIJAQFEAgUCYVoJAQJhbgAFAWIEAmJJCQBrAwUCYkgFAmJGCQBoAgUBZwUCYmIEAmJKCQECYUoBBQJhdQQCYksJAQJhSwEFAmF1BAJiTAkBAmFOAQUCYXUEAmJNCQEBQgMFBHRoaXMFAmJLBQJiRwQCYk4JAQFFAgUEdGhpcwUCYkoEAmJPAAAEAmJQCQCWAwEJAMwIAgkAZQIFBmhlaWdodAUCYk0JAMwIAgAABQNuaWwEAmJRAwkBAiE9AgUCYk8AAAkAtgIBBQJiTwkAvAIDCQC2AgEFAmJJCQC2AgEFAWMFAmJFBAJiUgkAtwICBQJiRAkAtgIBBQJiQgQCYlMDCQAAAgUCYlIFAWgFAWkFAmJSBAJieAkAtwICBQJiTgkAuQICBQJiUQkAtgIBBQJiUAQCYlQJALoCAgkAtgIBBQJiSQUCYlMEAmJVBQZoZWlnaHQEAmJWCQC5CQIJAMwIAgkApgMBBQJieAkAzAgCCQCkAwEFAmJQCQDMCAIJAKYDAQUCYlEJAMwIAgkApgMBBQJiRAkAzAgCCQCkAwEFAmJJCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiRgUDbmlsAgI6OgkAlQoDBQJieAkAzAgCCQELU3RyaW5nRW50cnkCBQJiSgkApgMBBQJieAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYksFAmJVCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmJMCQCmAwEFAmJUBQNuaWwFAmJWAQJiVwQCYXUCYXQCYkECYkIEAmJYCQECYnoDBQJhdQUCYkEFAmJCBAJieAgFAmJYAl8xBAJiWQgFAmJYAl8yBAJiWggFAmJYAl8zBAJjYQkBAmFzAgUCYXQFAmF1BAJidgkBAmFBAQUCY2EEAmNiCQECYUwCBQJhdQUCYXQEAmNjCQECYU0CBQJhdQUCYXQEAmJ5CQECYVACBQJhdQUCYXQEAmNkCQEBRQIFBHRoaXMFAmNiBAJidwkBAUECBQR0aGlzBQJjYwQCY2UJAQJidQQJALYCAQUCYnYJALYCAQUCYncFAmJ4BQJieQQCY2YJAGgCBQFjBQFiBAJjZwkAmAMBCQDMCAIJALcCAgUCY2QJALwCAwkAuAICBQJieAUCY2UJALYCAQUCYnYJALYCAQUCY2YJAMwIAgUBaAUDbmlsBAJjaAUCYngEAmNpBQZoZWlnaHQEAmJWCQC5CQIJAMwIAgkApgMBBQJjZAkAzAgCCQCmAwEFAmNlCQDMCAIJAKQDAQUCYnYJAMwIAgUCYloJAMwIAgkApAMBBQZoZWlnaHQFA25pbAICOjoJAJUKAwUCY2cJAM4IAgUCYlkJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY2IJAKYDAQUCY2cJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNjBQJjaQkAzAgCCQELU3RyaW5nRW50cnkCBQJieQkApgMBBQJjaAUDbmlsBQJiVgECY2oABAFvCQCiCAEJAQFXAAMJAAECBQFvAgZTdHJpbmcEAUcFAW8JANkEAQUBRwMJAAECBQFvAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmNrAAQBbwkAoggBCQEBWAADCQABAgUBbwIGU3RyaW5nBAFHBQFvCQDZBAEFAUcDCQABAgUBbwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJjbAkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJjbQECY24DCQAAAggFAmNuBmNhbGxlcgUEdGhpcwYFAmNsAQJjbwECY24EAW8JAQJjagADCQABAgUBbwIKQnl0ZVZlY3RvcgQCY3AFAW8DCQAAAggFAmNuD2NhbGxlclB1YmxpY0tleQUCY3AGBQJjbAMJAAECBQFvAgRVbml0AwkAAAIIBQJjbgZjYWxsZXIFBHRoaXMGBQJjbAkAAgECC01hdGNoIGVycm9yAQJjcQYCY24CYUMCY3ICYUUCY3MCYVUEAmF0CQClCAEFAmFFBAJhdQkA2AQBBQJhQwQCYkEJAKUIAQUCY3IEAmNhCQECYXMCBQJhdAUCYXUEAmJDCQECYXYBBQJhdQQCYnYJAQJhQQEFAmNhBAJiRAkBAmFBAQUCYkMEAmN0CAkBAmJXBAUCYXUFAmF0BQJiQQkBAS0BBQJhVQJfMgQCYmgJAQJiZgEFAmF1BAJjdQMDCQECYm0CBQJiaAUCYXQJAAACBQJhVQUCYnYHCQECYnQCBQJiaAUCYXQFA25pbAQCY3YDCQAAAgUCYVUFAmJ2CQD8BwQFAmJhAhJvblN0YWtlZFZvdGVVcGRhdGUJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgcFA25pbAUDbmlsBQR1bml0AwkAAAIFAmN2BQJjdgQCY3cJAQFFAgUEdGhpcwkBAmF4AgUCYXUFAmF0BAJjZwgJAQJiVwQFAmF1BQJhdAUCYkEAAAJfMQQCY3gJALgCAgUCY2cFAmN3BAJjeQYEAmN6AwkAvwICBQJjeAUBaAkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgUCY3kFA25pbAUDbmlsBQR1bml0AwkAAAIFAmN6BQJjegMJAGYCBQJhVQUCYnYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDnBhc3NlZCBhbW91bnQ9CQCkAwEFAmFVAhsgaXMgZ3JlYXRlciB0aGFuIGF2YWlsYWJsZT0JAKQDAQUCYnYCDC4gbHBBc3NldElkPQUCYXUCEi4gc3Rha2VkQnlVc2VyS0VZPQUCY2EJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjYQkAZQIFAmJ2BQJhVQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYkMJAGUCBQJiRAUCYVUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3MFAmFVBQJhQwkAzAgCCQECYVYFAgd1bnN0YWtlBQJhdAUCYXUFAmFVCAUCY24NdHJhbnNhY3Rpb25JZAUDbmlsBQJjdAUCY3UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4QAmNuAQtjb25zdHJ1Y3RvcgECY0EEAmNCCQECY28BBQJjbgMJAAACBQJjQgUCY0IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU0ABQJjQQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuAQ1jb25zdHJ1Y3RvclYyAQJjQwQCY0QJAMwIAgkBAmNvAQUCY24JAMwIAgMJAQIhPQIJAKYIAQUCY0MFBHVuaXQGAihpbnZhbGlkIHZvdGluZyBlbWlzc2lvbiBjb250cmFjdCBhZGRyZXNzBQNuaWwDCQAAAgUCY0QFAmNECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFOAAUCY0MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbgEKc2V0TWFuYWdlcgECY0UEAmNCCQECY28BBQJjbgMJAAACBQJjQgUCY0IEAmNGCQDZBAEFAmNFAwkAAAIFAmNGBQJjRgkAzAgCCQELU3RyaW5nRW50cnkCCQEBWAAFAmNFBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BDmNvbmZpcm1NYW5hZ2VyAAQCY0cJAQJjawAEAmNIAwkBCWlzRGVmaW5lZAEFAmNHBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJjSAUCY0gEAmNJAwkAAAIIBQJjbg9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmNHBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJjSQUCY0kJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcACQDYBAEJAQV2YWx1ZQEFAmNHCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFYAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuAQVzdGFrZQADCQECIT0CCQCQAwEIBQJjbghwYXltZW50cwABCQACAQI0aW52YWxpZCBwYXltZW50IC0gZXhhY3Qgb25lIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQCY0oJAJEDAggFAmNuCHBheW1lbnRzAAAEAmFDCQEFdmFsdWUBCAUCY0oHYXNzZXRJZAQCYXUJANgEAQUCYUMEAmFVCAUCY0oGYW1vdW50BAJiQQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFZCQECYWEBBQJhdQkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFAmF1BAJjSwkApQgBCAUCY24GY2FsbGVyBAJhdAMJAAACBQJjSwUCYkEJAKUIAQgFAmNuDG9yaWdpbkNhbGxlcgUCY0sEAmNhCQECYXMCBQJhdAUCYXUEAmJDCQECYXYBBQJhdQQCYnYJAQJhQQEFAmNhBAJjdgMJAAACBQJidgAACQD8BwQFAmJhAhJvblN0YWtlZFZvdGVVcGRhdGUJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgYFA25pbAUDbmlsBQR1bml0AwkAAAIFAmN2BQJjdgQCYkQJAQJhQQEFAmJDBAJjTAkBAmJXBAUCYXUFAmF0BQJiQQUCYVUEAmNnCAUCY0wCXzEEAmN0CAUCY0wCXzIEAmJWCAUCY0wCXzMEAmJoCQECYmYBBQJhdQQCY3UDCQECYm0CBQJiaAUCYXQFA25pbAkBAmJxAgUCYmgFAmF0CQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY2EJAGQCBQJidgUCYVUJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJDCQBkAgUCYkQFAmFVCQDMCAIJAQJhVgUCBXN0YWtlBQJhdAUCYXUFAmFVCAUCY24NdHJhbnNhY3Rpb25JZAUDbmlsBQJjdAUCY3UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BB3Vuc3Rha2UCAmF1AmFVBAJhQwkA2QQBBQJhdQQCYkEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhWQkBAmFhAQUCYXUJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJhdQQCY3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmJBBAJjTQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQJjcgkBAVoABQJiQQQCY0sJAKUIAQgFAmNuBmNhbGxlcgQCYUUDAwkAAAIFAmNLBQJiQQYJAAACBQJjSwUCY00IBQJjbgxvcmlnaW5DYWxsZXIIBQJjbgZjYWxsZXIEAmNzCAUCY24GY2FsbGVyCQECY3EGBQJjbgUCYUMFAmNyBQJhRQUCY3MFAmFVAmNuAQ91bnN0YWtlSU5URVJOQUwEAmFDAmFVAmFFAmNzBAJhdQkA2AQBBQJhQwQCY3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhWQkBAmFhAQUCYXUJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJhdQQCY0IDCQAAAggFAmNuBmNhbGxlcgUCY3IGBQJjbAMJAAACBQJjQgUCY0IJAQJjcQYFAmNuBQJhQwUCY3IJAQdBZGRyZXNzAQUCYUUJAQdBZGRyZXNzAQUCY3MFAmFVCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuAQdjbGFpbVd4AQJhdQQCYXQJAKUIAQgFAmNuBmNhbGxlcgQCY3kGBAJjTgkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgUCY3kFA25pbAUDbmlsCQCUCgIFA25pbAUCY04CY24BEWNsYWltV3hEb05vdFRocm93AQJhdQQCYXQJAKUIAQgFAmNuBmNhbGxlcgQCY3kHBAJjTgkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgUCY3kFA25pbAUDbmlsCQCUCgIFA25pbAUCY04CY24BD2NsYWltV3hJTlRFUk5BTAMCYXUCYXQCY3kEAmNCCQECY20BBQJjbgMJAAACBQJjQgUCY0IEAmFFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUCYXQCJWNsYWltV3hJTlRFUk5BTDogaW52YWxpZCB1c2VyIGFkZHJlc3MEAmJBCQEBegIFAmFZCQECYWQBBQJhdQQCY08JAQJhdwIFAmF1BQJhdAQCY1AJAQJhegEFAmF1BAJjUQkBAmF4AgUCYXUFAmF0BAJjUgkBAmF5AgUCYXUFAmF0BAJjUwkBAUUCBQR0aGlzBQJjTwQCY3cJAQFFAgUEdGhpcwUCY1EEAmNUCQEBRQIFBHRoaXMFAmNSBAJjVQkBAUUCBQR0aGlzBQJjUAQCY1YJAQJiVwQFAmF1BQJhdAUCYkEAAAQCY2cIBQJjVgJfMQQCY3QIBQJjVgJfMgQCYlYIBQJjVgJfMwQCY3gJAJgDAQkAzAgCCQC4AgIFAmNnBQJjdwkAzAgCBQFoBQNuaWwDCQDAAgIFAWgFAmN4AwUCY3kJAAIBAhBub3RoaW5nIHRvIGNsYWltCQCUCgIFA25pbAAABAJjVwkAlgMBCQDMCAIJAQFxAQkAkQMCCQEBbQEJAPwHBAUCYmECDGNsYWltV3hCb29zdAkAzAgCBQJhdQkAzAgCBQJhdAUDbmlsBQNuaWwAAAkAzAgCAAAFA25pbAQCY1gFAmN4BAJjWQkAmQMBCQDMCAIJALkCAgUCY1gJALYCAQkAZQIFAmJiAAEJAMwIAgkAtgIBBQJjVwUDbmlsBAJjWgkAtwICBQJjWAUCY1kEAmRhCQEBdQEJAJEDAgkBAW0BCQD8BwQFAmFaAgRlbWl0CQDMCAIJAKADAQUCY1gFA25pbAUDbmlsAAAEAmRiCQEBbQEJAPwHBAUCYVoCBGVtaXQJAMwIAgkAoAMBBQJjWQUDbmlsBQNuaWwDCQAAAgUCZGIFAmRiBAJkYwkAtwICCQC3AgIFAmNTBQJjWAUCY1kEAmRkCQC3AgIFAmN3BQJjWAQCZGUJALcCAgUCY1QFAmNZBAJkZgkAtwICBQJjVQUCY3gJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQJjTwkApgMBBQJkYwkAzAgCCQELU3RyaW5nRW50cnkCBQJjUQkApgMBBQJkZAkAzAgCCQELU3RyaW5nRW50cnkCBQJjUgkApgMBBQJkZQkAzAgCCQELU3RyaW5nRW50cnkCBQJjUAkApgMBBQJkZgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRQkAoAMBBQJjWAUCZGEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUJAKADAQUCY1kFAmRhCQDMCAIJAQJhVgUCBWNsYWltBQJhdAUCYXUJAKADAQUCY3gIBQJjbg10cmFuc2FjdGlvbklkBQNuaWwJAKADAQUCY1oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BG2NsYWltV3hCdWxrSW50ZXJuYWxSRUFET05MWQQCZGcCZGgCYXQCZGkDCQAAAgUCZGcJAJADAQUCZGgJAJQKAgUDbmlsBQJkaQQCYUMJAJEDAgUCZGgFAmRnBAJkagkAtQkCCgACYmMJAPwHBAUEdGhpcwIPY2xhaW1XeFJFQURPTkxZCQDMCAIFAmFDCQDMCAIFAmF0BQNuaWwFA25pbAMJAAECBQJiYwIGU3RyaW5nBQJiYwkAAgEJAKwCAgkAAwEFAmJjAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcFAWYEAmRrCQCRAwIFAmRqAAMEAmRsCQCRAwIFAmRqAAQEAmRtCgACYmMJAPwHBAUCYmECHGdldFVzZXJWb3RlRmluYWxpemVkUkVBRE9OTFkJAMwIAgUCYUMJAMwIAgUCYXQFA25pbAUDbmlsAwkAAQIFAmJjAgNJbnQFAmJjCQACAQkArAICCQADAQUCYmMCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCZG4JAM0IAgUCZGkJALkJAgkAzAgCAgYlZCVkJWQJAMwIAgUCZGsJAMwIAgUCZGwJAMwIAgkApAMBBQJkbQUDbmlsBQFmBAJkbwoAAmJjCQD8BwQFBHRoaXMCG2NsYWltV3hCdWxrSW50ZXJuYWxSRUFET05MWQkAzAgCCQBkAgUCZGcAAQkAzAgCBQJkaAkAzAgCBQJhdAkAzAgCBQJkbgUDbmlsBQNuaWwDCQABAgUCYmMCCUxpc3RbQW55XQUCYmMJAAIBCQCsAgIJAAMBBQJiYwIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFAmRvBQJkbwkAlAoCBQNuaWwFAmRvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuARNjbGFpbVd4QnVsa1JFQURPTkxZAgJkaAJhdAQCZG4JAPwHBAUEdGhpcwIbY2xhaW1XeEJ1bGtJbnRlcm5hbFJFQURPTkxZCQDMCAIAAAkAzAgCBQJkaAkAzAgCBQJhdAkAzAgCBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAUCZG4CY24BD2NsYWltV3hSRUFET05MWQICYXUCYXQEAmNhCQECYXMCBQJhdAUCYXUEAmJDCQECYXYBBQJhdQQCY08JAQJhdwIFAmF1BQJhdAQCY1EJAQJheAIFAmF1BQJhdAQCYnYJAQJhQQEFAmNhBAJiRAkBAmFBAQUCYkMEAmNTCQEBRQIFBHRoaXMFAmNPBAJjdwkBAUUCBQR0aGlzBQJjUQQCYkEJAQF6AgUCYVkJAQJhZAEFAmF1BAJiRgkBEUBleHRyTmF0aXZlKDEwNTApAgUCYVkJAQJhZQEFAmJBBAJkcAkBAUQCBQJhWgkBAmFuAAQCYkcJAQFEAgUCYVoJAQJhcAAEAmRxAwkAZgIFAmJHBQZoZWlnaHQAAAkAZQIFBmhlaWdodAUCYkcEAmRyCQBrAwkAaAIFAmRwBQJkcQUCYkYFAWcEAmRzCQBrAwUCZHIFAmJ2BQJiRAQCZHQJAQJiVwQFAmF1BQJhdAUCYkEAAAQCY2cIBQJkdAJfMQQCY3QIBQJkdAJfMgQCYlYIBQJkdAJfMwQCY3gJAJgDAQkAzAgCCQC4AgIFAmNnBQJjdwkAzAgCBQFoBQNuaWwEAmR1CQEBbQEJAPwHBAUCYmECFGNsYWltV3hCb29zdFJFQURPTkxZCQDMCAIFAmF1CQDMCAIFAmF0BQNuaWwFA25pbAQCY1cJAJYDAQkAzAgCCQEBcQEJAJEDAgUCZHUAAAkAzAgCAAAFA25pbAQCZHYJAQFzAQkAkQMCBQJkdQABBAJjWAUCY3gEAmNZCQCZAwEJAMwIAgkAuQICBQJjWAkAtgIBCQBlAgUCYmIAAQkAzAgCCQC2AgEFAmNXBQNuaWwEAmNaCQC3AgIFAmNYBQJjWQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lcyVzJWQlZCVkJWQlcwkAzAgCBQJhdQkAzAgCBQJhdAkAzAgCCQCmAwEFAmNaCQDMCAIJAKYDAQUCY1MJAMwIAgkApgMBBQJjWAkAzAgCCQCmAwEFAmNZCQDMCAICBHNvb24FA25pbAUBZgJjbgEUc3Rha2VkQnlVc2VyUkVBRE9OTFkCAmF1AmF0BAJidgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXMCBQJhdAUCYXUAAAkAlAoCBQNuaWwFAmJ2AmNuARJ1c2Vyc0xpc3RUcmF2ZXJzYWwBAmFDBAJjQgMJAAACCQDYBAEICAUCY24GY2FsbGVyBWJ5dGVzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQFOAAIABgkBAmNvAQUCY24DCQAAAgUCY0IFAmNCBAJiaAkBAmJmAQUCYUMEAmR3CQCiCAEJAQJiZQEFAmFDBAJibgkAoggBCQECYmcBBQJiaAQBbwUCZHcDCQABAgUBbwIEVW5pdAQCZHgFAmJuAwkAAQIFAmR4AgRVbml0CQCUCgIFA25pbAcDCQABAgUCZHgCBlN0cmluZwQCZHkFAmR4CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJlAQUCYUMFAmR5BQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUBbwIGU3RyaW5nBAJhRQUBbwQCY3cJAQFFAgUEdGhpcwkBAmF4AgUCYUMFAmFFBAJjcgkBAXoCBQJhWQkBAmFkAQUCYUMEAmNnCAkBAmJXBAUCYUMFAmFFBQJjcgAAAl8xBAJjeAkAuAICBQJjZwUCY3cEAmN5BgQCY3oDCQC/AgIFAmN4BQFoCQD8BwQFBHRoaXMCD2NsYWltV3hJTlRFUk5BTAkAzAgCBQJhQwkAzAgCBQJhRQkAzAgCBQJjeQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCY3oFAmN6BAJkegkAoggBCQECYmwCBQJiaAUCYUUEAmR4BQJkegMJAAECBQJkeAIEVW5pdAkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiZQEFAmFDBQNuaWwHAwkAAQIFAmR4AgZTdHJpbmcEAmRBBQJkeAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZQEFAmFDBQJkQQUDbmlsBgkAAgECC01hdGNoIGVycm9yCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BDm9uTW9kaWZ5V2VpZ2h0AgJhdQJiQQMJAQIhPQIIBQJjbgZjYWxsZXIFAmFZCQACAQIScGVybWlzc2lvbnMgZGVuaWVkBAJkQgkBAmJ6AwUCYXUFAmJBAAAEAmJ4CAUCZEICXzEEAmJZCAUCZEICXzIEAmJaCAUCZEICXzMFAmJZAQJkQwECZEQABAJkRQQBbwkBAmNqAAMJAAECBQFvAgpCeXRlVmVjdG9yBAJjcAUBbwUCY3ADCQABAgUBbwIEVW5pdAgFAmRDD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJkQwlib2R5Qnl0ZXMJAJEDAggFAmRDBnByb29mcwAABQJkRQFUL/M=", "height": 2483780, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9wdw25zHJFRAv4HbHsdQntcoacSpWEMTi5Ue4KoWDW6m Next: BCgjAX1cXff2ep4f9E1YwtMHZaLerpCf831HCJy58phs Diff:
OldNewDifferences
1919
2020 let i = toBigInt(1)
2121
22-func j (k) = {
23- let l = k
24- if ($isInstanceOf(l, "List[Any]"))
22+func j (k) = makeString(["staking.ride:", toString(this), k], " ")
23+
24+
25+func l (k) = throw(j(k))
26+
27+
28+func m (n) = {
29+ let o = n
30+ if ($isInstanceOf(o, "List[Any]"))
2531 then {
26- let m = l
27- m
32+ let p = o
33+ p
2834 }
2935 else throw("fail to cast into List[Any]")
3036 }
3137
3238
33-func n (k) = {
34- let l = k
35- if ($isInstanceOf(l, "Int"))
39+func q (n) = {
40+ let o = n
41+ if ($isInstanceOf(o, "Int"))
3642 then {
37- let o = l
38- o
43+ let r = o
44+ r
3945 }
4046 else throw("fail to cast into Int")
4147 }
4248
4349
44-func p (k) = {
45- let l = k
46- if ($isInstanceOf(l, "String"))
50+func s (n) = {
51+ let o = n
52+ if ($isInstanceOf(o, "String"))
4753 then {
48- let q = l
49- q
54+ let t = o
55+ t
5056 }
5157 else throw("fail to cast into Int")
5258 }
5359
5460
55-func r (k) = {
56- let l = k
57- if ($isInstanceOf(l, "ByteVector"))
61+func u (n) = {
62+ let o = n
63+ if ($isInstanceOf(o, "ByteVector"))
5864 then {
59- let s = l
60- s
65+ let v = o
66+ v
6167 }
6268 else throw("fail to cast into Int")
6369 }
6470
6571
66-func t (u,v) = valueOrErrorMessage(getString(u, v), (("mandatory this." + v) + " is not defined"))
72+func w (x,y) = valueOrErrorMessage(getString(x, y), (("mandatory this." + y) + " is not defined"))
6773
6874
69-func w (u,v) = valueOrErrorMessage(getString(u, v), (((("mandatory " + toString(u)) + ".") + v) + " is not defined"))
75+func z (x,y) = valueOrErrorMessage(getString(x, y), (((("mandatory " + toString(x)) + ".") + y) + " is not defined"))
7076
7177
72-func x (u,v) = valueOrElse(getInteger(u, v), 0)
78+func A (x,y) = valueOrElse(getInteger(x, y), 0)
7379
7480
75-func y (u,v,z) = valueOrElse(getInteger(u, v), z)
81+func B (x,y,C) = valueOrElse(getInteger(x, y), C)
7682
7783
78-func A (u,v) = valueOrErrorMessage(getInteger(u, v), (("mandatory this." + v) + " is not defined"))
84+func D (x,y) = valueOrErrorMessage(getInteger(x, y), (("mandatory this." + y) + " is not defined"))
7985
8086
81-func B (u,v) = value(parseBigInt(valueOrElse(getString(u, v), "0")))
87+func E (x,y) = value(parseBigInt(valueOrElse(getString(x, y), "0")))
8288
8389
84-func C (u,v,z) = {
85- let l = getString(u, v)
86- if ($isInstanceOf(l, "String"))
90+func F (x,y,C) = {
91+ let o = getString(x, y)
92+ if ($isInstanceOf(o, "String"))
8793 then {
88- let D = l
89- value(parseBigInt(D))
94+ let G = o
95+ value(parseBigInt(G))
9096 }
91- else if ($isInstanceOf(l, "Unit"))
92- then z
97+ else if ($isInstanceOf(o, "Unit"))
98+ then C
9399 else throw("Match error")
94100 }
95101
96102
97-func E (F,G) = fraction(toBigInt(F), e, toBigInt(G))
103+func H (I,J) = fraction(toBigInt(I), e, toBigInt(J))
98104
99105
100-func H (k,I) = toInt(fraction(k, toBigInt(I), e))
106+func K (n,L) = toInt(fraction(n, toBigInt(L), e))
101107
102108
103-func J () = "%s%s__config__factoryAddress"
109+func M () = "%s%s__config__factoryAddress"
104110
105111
106-func K () = "%s__votingEmissionContract"
112+func N () = "%s__votingEmissionContract"
107113
108114
109-let L = 1
115+let O = 1
110116
111-let M = 2
117+let P = 2
112118
113-let N = 3
119+let Q = 3
114120
115-let O = 4
121+let R = 4
116122
117-let P = 5
123+let S = 5
118124
119-let Q = 6
125+let T = 6
120126
121-let R = 7
127+let U = 7
122128
123-func S () = "%s__factoryConfig"
129+func V () = "%s__factoryConfig"
124130
125131
126-func T () = "%s__managerPublicKey"
132+func W () = "%s__managerPublicKey"
127133
128134
129-func U () = "%s__pendingManagerPublicKey"
135+func X () = "%s__pendingManagerPublicKey"
130136
131137
132-func V () = "%s__stablePoolAddonAddr"
138+func Y () = "%s__stablePoolAddonAddr"
133139
134140
135-func W () = "%s__addonAddr"
141+func Z () = "%s__addonAddr"
136142
137143
138-func X (Y) = makeString(["%s%s%s", Y, "mappings__lpAsset2PoolContract"], f)
144+func aa (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
139145
140146
141-func Z () = "%s__lpTokensList"
147+func ac () = "%s__lpTokensList"
142148
143149
144-func aa (Y) = makeString(["%s%s%s", Y, "mappings__lpAsset2PoolContract"], f)
150+func ad (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
145151
146152
147-func ab (ac) = makeString(["%s%s", "poolWeight", ac], f)
153+func ae (af) = makeString(["%s%s", "poolWeight", af], f)
148154
149155
150-func ad (ae) = split(valueOrElse(getString(ae, Z()), ""), f)
156+func ag (ah) = split(valueOrElse(getString(ah, ac()), ""), f)
151157
152158
153-func af (ae) = split(w(ae, S()), f)
159+func ai (ah) = split(z(ah, V()), f)
154160
155161
156-func ag (ah) = addressFromStringValue(ah[M])
162+func aj (ak) = addressFromStringValue(ak[P])
157163
158164
159-func ai (ah) = addressFromStringValue(ah[P])
165+func al (ak) = addressFromStringValue(ak[S])
160166
161167
162-func aj (ah) = addressFromStringValue(ah[L])
168+func am (ak) = addressFromStringValue(ak[O])
163169
164170
165-func ak () = "%s%s__ratePerBlock__current"
171+func an () = "%s%s__ratePerBlock__current"
166172
167173
168-func al () = "%s%s__ratePerBlockMax__current"
174+func ao () = "%s%s__ratePerBlockMax__current"
169175
170176
171-func am () = "%s%s__emission__startBlock"
177+func ap () = "%s%s__emission__startBlock"
172178
173179
174-func an () = "%s%s__emission__duration"
180+func aq () = "%s%s__emission__duration"
175181
176182
177-func ao () = "%s%s__emission__endBlock"
183+func ar () = "%s%s__emission__endBlock"
178184
179185
180-func ap (aq,ar) = makeString(["%s%s%s__staked", aq, ar], f)
186+func as (at,au) = makeString(["%s%s%s__staked", at, au], f)
181187
182188
183-func as (ar) = ("%s%s%s__staked__total__" + ar)
189+func av (au) = ("%s%s%s__staked__total__" + au)
184190
185191
186-func at (ar,aq) = makeString(["%s%s%s__claimed", aq, ar], f)
192+func aw (au,at) = makeString(["%s%s%s__claimed", at, au], f)
187193
188194
189-func au (ar,aq) = makeString(["%s%s%s__claimedMinReward", aq, ar], f)
195+func ax (au,at) = makeString(["%s%s%s__claimedMinReward", at, au], f)
190196
191197
192-func av (ar,aq) = makeString(["%s%s%s__claimedBoostReward", aq, ar], f)
198+func ay (au,at) = makeString(["%s%s%s__claimedBoostReward", at, au], f)
193199
194200
195-func aw (ar) = makeString(["%s%s%s__claimed__total", ar], f)
201+func az (au) = makeString(["%s%s%s__claimed__total", au], f)
196202
197203
198-func ax (v) = valueOrElse(getInteger(this, v), 0)
204+func aA (y) = valueOrElse(getInteger(this, y), 0)
199205
200206
201-func ay (az) = makeString(["%s%s%s", az, "total", "bal"], f)
207+func aB (aC) = makeString(["%s%s%s", aC, "total", "bal"], f)
202208
203209
204-func aA (az,aB) = makeString(["%s%s%s", az, aB, "bal"], f)
210+func aD (aC,aE) = makeString(["%s%s%s", aC, aE, "bal"], f)
205211
206212
207-func aC (az) = makeString(["%s%s%s", az, "total", "balINT"], f)
213+func aF (aC) = makeString(["%s%s%s", aC, "total", "balINT"], f)
208214
209215
210-func aD (az,aB) = makeString(["%s%s%s", az, aB, "balINT"], f)
216+func aG (aC,aE) = makeString(["%s%s%s", aC, aE, "balINT"], f)
211217
212218
213-func aE (az) = makeString(["%s%s%s", az, "total", "lastUpd"], f)
219+func aH (aC) = makeString(["%s%s%s", aC, "total", "lastUpd"], f)
214220
215221
216-func aF (az,aB) = makeString(["%s%s%s", az, aB, "lastUpd"], f)
222+func aI (aC,aE) = makeString(["%s%s%s", aC, aE, "lastUpd"], f)
217223
218224
219-func aG (az) = makeString(["%s%s%s%s", az, "common", "lpInt"], f)
225+func aJ (aC) = makeString(["%s%s%s%s", aC, "common", "lpInt"], f)
220226
221227
222-func aH (az) = makeString(["%s%s%s%s", az, "common", "lpIntH"], f)
228+func aK (aC) = makeString(["%s%s%s%s", aC, "common", "lpIntH"], f)
223229
224230
225-func aI (az,aB) = makeString(["%s%s%s%s", az, aB, "lpInt"], f)
231+func aL (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpInt"], f)
226232
227233
228-func aJ (az,aB) = makeString(["%s%s%s%s", az, aB, "lpIntH"], f)
234+func aM (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpIntH"], f)
229235
230236
231-func aK (az) = makeString(["%s", az, "wxPerLp"], f)
237+func aN (aC) = makeString(["%s", aC, "wxPerLp"], f)
232238
233239
234-func aL (az) = makeString(["%s", az, "wxPerLpX18"], f)
240+func aO (aC) = makeString(["%s", aC, "wxPerLpX18"], f)
235241
236242
237-func aM (az,aB) = makeString(["%s%s%s%s", az, aB, "uIntL"], f)
243+func aP (aC,aE) = makeString(["%s%s%s%s", aC, aE, "uIntL"], f)
238244
239245
240-func aN (aO,aB,aP) = makeString(["%s%s%s%s__history", aO, aB, aP], f)
246+func aQ (aR,aE,aS) = makeString(["%s%s%s%s__history", aR, aE, aS], f)
241247
242248
243-func aQ (aB,az,aO,aR) = makeString(["%s%s%s%d%d%d", aB, az, aO, toString(height), toString(lastBlock.timestamp), toString(aR)], f)
249+func aT (aE,aC,aR,aU) = makeString(["%s%s%s%d%d%d", aE, aC, aR, toString(height), toString(lastBlock.timestamp), toString(aU)], f)
244250
245251
246-func aS (aO,aB,az,aR,aT) = StringEntry(aN(aO, aB, toBase58String(aT)), aQ(aB, az, aO, aR))
252+func aV (aR,aE,aC,aU,aW) = StringEntry(aQ(aR, aE, toBase58String(aW)), aT(aE, aC, aR, aU))
247253
248254
249-let aU = t(this, J())
255+let aX = w(this, M())
250256
251-let aV = addressFromStringValue(aU)
257+let aY = addressFromStringValue(aX)
252258
253-let ah = af(aV)
259+let ak = ai(aY)
254260
255-let aW = ai(ah)
261+let aZ = al(ak)
256262
257-let aX = ag(ah)
263+let ba = aj(ak)
258264
259-let aY = {
260- let aZ = invoke(aW, "getBoostCoeffREADONLY", nil, nil)
261- if ($isInstanceOf(aZ, "Int"))
262- then aZ
263- else throw(($getType(aZ) + " couldn't be cast to Int"))
265+let bb = {
266+ let bc = invoke(aZ, "getBoostCoeffREADONLY", nil, nil)
267+ if ($isInstanceOf(bc, "Int"))
268+ then bc
269+ else throw(($getType(bc) + " couldn't be cast to Int"))
264270 }
265271
266-func ba (az) = makeString(["%s%s", az, "nextUser"], f)
272+let bd = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], f)), j("lp_staking_pools contract address is undefined"))), j("invalid lp_staking_pools contract address"))
273+
274+func be (aC) = makeString(["%s%s", aC, "nextUser"], f)
267275
268276
269-func bb (az) = makeString(["users", az], f)
277+func bf (aC) = makeString(["users", aC], f)
270278
271279
272-func bc (bd) = makeString(["%s%s%s", bd, "head"], f)
280+func bg (bh) = makeString(["%s%s%s", bh, "head"], f)
273281
274282
275-func be (bd) = makeString(["%s%s%s", bd, "size"], f)
283+func bi (bh) = makeString(["%s%s%s", bh, "size"], f)
276284
277285
278-func bf (bd,bg) = makeString(["%s%s%s%s", bd, bg, "prev"], f)
286+func bj (bh,bk) = makeString(["%s%s%s%s", bh, bk, "prev"], f)
279287
280288
281-func bh (bd,bg) = makeString(["%s%s%s%s", bd, bg, "next"], f)
289+func bl (bh,bk) = makeString(["%s%s%s%s", bh, bk, "next"], f)
282290
283291
284-func bi (bd,bg) = {
285- let bj = getString(this, bc(bd))
286- let bk = getString(this, bf(bd, bg))
287- let bl = getString(this, bh(bd, bg))
288- if (if ((bg == valueOrElse(bj, "")))
292+func bm (bh,bk) = {
293+ let bn = getString(this, bg(bh))
294+ let bo = getString(this, bj(bh, bk))
295+ let bp = getString(this, bl(bh, bk))
296+ if (if ((bk == valueOrElse(bn, "")))
289297 then true
290- else (bk != unit))
298+ else (bo != unit))
291299 then true
292- else (bl != unit)
300+ else (bp != unit)
293301 }
294302
295303
296-func bm (bd,bg) = {
297- let bj = getString(this, bc(bd))
298- let bn = valueOrElse(getInteger(this, be(bd)), 0)
299- let bo = if (!(bi(bd, bg)))
304+func bq (bh,bk) = {
305+ let bn = getString(this, bg(bh))
306+ let br = valueOrElse(getInteger(this, bi(bh)), 0)
307+ let bs = if (!(bm(bh, bk)))
300308 then true
301309 else throw("Node exists")
302- if ((bo == bo))
303- then (([IntegerEntry(be(bd), (bn + 1))] ++ (if ((bj != unit))
304- then [StringEntry(bh(bd, bg), value(bj)), StringEntry(bf(bd, value(bj)), bg)]
305- else nil)) ++ [StringEntry(bc(bd), bg)])
310+ if ((bs == bs))
311+ then (([IntegerEntry(bi(bh), (br + 1))] ++ (if ((bn != unit))
312+ then [StringEntry(bl(bh, bk), value(bn)), StringEntry(bj(bh, value(bn)), bk)]
313+ else nil)) ++ [StringEntry(bg(bh), bk)])
306314 else throw("Strict value is not equal to itself.")
307315 }
308316
309317
310-func bp (bd,bg) = {
311- let bj = getString(this, bc(bd))
312- let bn = valueOrElse(getInteger(this, be(bd)), 0)
313- let bk = getString(this, bf(bd, bg))
314- let bl = getString(this, bh(bd, bg))
315- ([IntegerEntry(be(bd), (bn - 1))] ++ (if (if ((bk != unit))
316- then (bl != unit)
318+func bt (bh,bk) = {
319+ let bn = getString(this, bg(bh))
320+ let br = valueOrElse(getInteger(this, bi(bh)), 0)
321+ let bo = getString(this, bj(bh, bk))
322+ let bp = getString(this, bl(bh, bk))
323+ ([IntegerEntry(bi(bh), (br - 1))] ++ (if (if ((bo != unit))
324+ then (bp != unit)
317325 else false)
318- then [StringEntry(bh(bd, value(bk)), value(bl)), StringEntry(bf(bd, value(bl)), value(bk)), DeleteEntry(bf(bd, bg)), DeleteEntry(bh(bd, bg))]
319- else if ((bl != unit))
320- then [StringEntry(bc(bd), value(bl)), DeleteEntry(bh(bd, bg)), DeleteEntry(bf(bd, value(bl)))]
321- else if ((bk != unit))
322- then [DeleteEntry(bf(bd, bg)), DeleteEntry(bh(bd, value(bk)))]
323- else if ((bg == valueOrElse(bj, "")))
324- then [DeleteEntry(bc(bd))]
325- else throw(((("invalid node: " + bd) + ".") + bg))))
326+ then [StringEntry(bl(bh, value(bo)), value(bp)), StringEntry(bj(bh, value(bp)), value(bo)), DeleteEntry(bj(bh, bk)), DeleteEntry(bl(bh, bk))]
327+ else if ((bp != unit))
328+ then [StringEntry(bg(bh), value(bp)), DeleteEntry(bl(bh, bk)), DeleteEntry(bj(bh, value(bp)))]
329+ else if ((bo != unit))
330+ then [DeleteEntry(bj(bh, bk)), DeleteEntry(bl(bh, value(bo)))]
331+ else if ((bk == valueOrElse(bn, "")))
332+ then [DeleteEntry(bg(bh))]
333+ else throw(((("invalid node: " + bh) + ".") + bk))))
326334 }
327335
328336
329-func bq (br,bs,bt,bu) = if (if ((bs == h))
330- then (br > h)
337+func bu (bv,bw,bx,by) = if (if ((bw == h))
338+ then (bv > h)
331339 else false)
332340 then h
333- else if ((br == h))
334- then bt
335- else if (if ((bs > h))
336- then (br > h)
341+ else if ((bv == h))
342+ then bx
343+ else if (if ((bw > h))
344+ then (bv > h)
337345 else false)
338- then value(parseBigInt(t(this, bu)))
346+ then value(parseBigInt(w(this, by)))
339347 else throw("calcWxPerLpIntegralUserLast: unexpected state")
340348
341349
342-func bv (ar,bw,bx) = {
343- let by = as(ar)
344- let bz = toBigInt(ax(by))
345- let bA = if ((bz == h))
350+func bz (au,bA,bB) = {
351+ let bC = av(au)
352+ let bD = toBigInt(aA(bC))
353+ let bE = if ((bD == h))
346354 then i
347- else bz
348- let bB = getIntegerValue(aV, ab(bw))
349- let bC = A(aW, am())
350- let bD = (A(aW, ak()) * b)
351- let bE = fraction(bD, bB, (g * aY))
352- let bF = aG(ar)
353- let bG = aH(ar)
354- let bH = aK(ar)
355- let bI = y(this, bG, bC)
356- let bJ = B(this, bF)
357- let bK = 0
358- let bL = max([(height - bI), 0])
359- let bM = if ((bK != 0))
360- then toBigInt(bK)
361- else fraction(toBigInt(bE), toBigInt(c), bA)
362- let bN = (bz + toBigInt(bx))
363- let bO = if ((bN == h))
355+ else bD
356+ let bF = getIntegerValue(aY, ae(bA))
357+ let bG = D(aZ, ap())
358+ let bH = (D(aZ, an()) * b)
359+ let bI = fraction(bH, bF, (g * bb))
360+ let bJ = aJ(au)
361+ let bK = aK(au)
362+ let bL = aN(au)
363+ let bM = B(this, bK, bG)
364+ let bN = E(this, bJ)
365+ let bO = 0
366+ let bP = max([(height - bM), 0])
367+ let bQ = if ((bO != 0))
368+ then toBigInt(bO)
369+ else fraction(toBigInt(bI), toBigInt(c), bE)
370+ let bR = (bD + toBigInt(bB))
371+ let bS = if ((bR == h))
364372 then i
365- else bN
366- let bt = (bJ + (bM * toBigInt(bL)))
367- let bP = (toBigInt(bE) / bO)
368- let bQ = height
369- let bR = makeString([toString(bt), toString(bL), toString(bM), toString(bz), toString(bE), toString(bD), toString(bB)], "::")
370- $Tuple3(bt, [StringEntry(bF, toString(bt)), IntegerEntry(bG, bQ), StringEntry(bH, toString(bP))], bR)
373+ else bR
374+ let bx = (bN + (bQ * toBigInt(bP)))
375+ let bT = (toBigInt(bI) / bS)
376+ let bU = height
377+ let bV = makeString([toString(bx), toString(bP), toString(bQ), toString(bD), toString(bI), toString(bH), toString(bF)], "::")
378+ $Tuple3(bx, [StringEntry(bJ, toString(bx)), IntegerEntry(bK, bU), StringEntry(bL, toString(bT))], bV)
371379 }
372380
373381
374-func bS (ar,aq,bw,bx) = {
375- let bT = bv(ar, bw, bx)
376- let bt = bT._1
377- let bU = bT._2
378- let bV = bT._3
379- let bW = ap(aq, ar)
380- let br = ax(bW)
381- let bX = aI(ar, aq)
382- let bY = aJ(ar, aq)
383- let bu = aM(ar, aq)
384- let bZ = B(this, bX)
385- let bs = x(this, bY)
386- let ca = bq(toBigInt(br), toBigInt(bs), bt, bu)
387- let cb = (c * b)
388- let cc = max([(bZ + fraction((bt - ca), toBigInt(br), toBigInt(cb))), h])
389- let cd = bt
390- let ce = height
391- let bR = makeString([toString(bZ), toString(ca), toString(br), bV, toString(height)], "::")
392- $Tuple3(cc, (bU ++ [StringEntry(bX, toString(cc)), IntegerEntry(bY, ce), StringEntry(bu, toString(cd))]), bR)
382+func bW (au,at,bA,bB) = {
383+ let bX = bz(au, bA, bB)
384+ let bx = bX._1
385+ let bY = bX._2
386+ let bZ = bX._3
387+ let ca = as(at, au)
388+ let bv = aA(ca)
389+ let cb = aL(au, at)
390+ let cc = aM(au, at)
391+ let by = aP(au, at)
392+ let cd = E(this, cb)
393+ let bw = A(this, cc)
394+ let ce = bu(toBigInt(bv), toBigInt(bw), bx, by)
395+ let cf = (c * b)
396+ let cg = max([(cd + fraction((bx - ce), toBigInt(bv), toBigInt(cf))), h])
397+ let ch = bx
398+ let ci = height
399+ let bV = makeString([toString(cd), toString(ce), toString(bv), bZ, toString(height)], "::")
400+ $Tuple3(cg, (bY ++ [StringEntry(cb, toString(cg)), IntegerEntry(cc, ci), StringEntry(by, toString(ch))]), bV)
393401 }
394402
395403
396-func cf () = {
397- let l = getString(T())
398- if ($isInstanceOf(l, "String"))
404+func cj () = {
405+ let o = getString(W())
406+ if ($isInstanceOf(o, "String"))
399407 then {
400- let D = l
401- fromBase58String(D)
408+ let G = o
409+ fromBase58String(G)
402410 }
403- else if ($isInstanceOf(l, "Unit"))
411+ else if ($isInstanceOf(o, "Unit"))
404412 then unit
405413 else throw("Match error")
406414 }
407415
408416
409-func cg () = {
410- let l = getString(U())
411- if ($isInstanceOf(l, "String"))
417+func ck () = {
418+ let o = getString(X())
419+ if ($isInstanceOf(o, "String"))
412420 then {
413- let D = l
414- fromBase58String(D)
421+ let G = o
422+ fromBase58String(G)
415423 }
416- else if ($isInstanceOf(l, "Unit"))
424+ else if ($isInstanceOf(o, "Unit"))
417425 then unit
418426 else throw("Match error")
419427 }
420428
421429
422-let ch = throw("Permission denied")
430+let cl = throw("Permission denied")
423431
424-func ci (cj) = if ((cj.caller == this))
432+func cm (cn) = if ((cn.caller == this))
425433 then true
426- else ch
434+ else cl
427435
428436
429-func ck (cj) = {
430- let l = cf()
431- if ($isInstanceOf(l, "ByteVector"))
437+func co (cn) = {
438+ let o = cj()
439+ if ($isInstanceOf(o, "ByteVector"))
432440 then {
433- let cl = l
434- if ((cj.callerPublicKey == cl))
441+ let cp = o
442+ if ((cn.callerPublicKey == cp))
435443 then true
436- else ch
444+ else cl
437445 }
438- else if ($isInstanceOf(l, "Unit"))
439- then if ((cj.caller == this))
446+ else if ($isInstanceOf(o, "Unit"))
447+ then if ((cn.caller == this))
440448 then true
441- else ch
449+ else cl
442450 else throw("Match error")
443451 }
444452
445453
446-@Callable(cj)
447-func constructor (cm) = {
448- let cn = ck(cj)
449- if ((cn == cn))
450- then [StringEntry(J(), cm)]
454+func cq (cn,aC,cr,aE,cs,aU) = {
455+ let at = toString(aE)
456+ let au = toBase58String(aC)
457+ let bA = toString(cr)
458+ let ca = as(at, au)
459+ let bC = av(au)
460+ let bv = aA(ca)
461+ let bD = aA(bC)
462+ let ct = bW(au, at, bA, -(aU))._2
463+ let bh = bf(au)
464+ let cu = if (if (bm(bh, at))
465+ then (aU == bv)
466+ else false)
467+ then bt(bh, at)
468+ else nil
469+ let cv = if ((aU == bv))
470+ then invoke(ba, "onStakedVoteUpdate", [au, at, false], nil)
471+ else unit
472+ if ((cv == cv))
473+ then {
474+ let cw = E(this, ax(au, at))
475+ let cg = bW(au, at, bA, 0)._1
476+ let cx = (cg - cw)
477+ let cy = true
478+ let cz = if ((cx > h))
479+ then invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
480+ else unit
481+ if ((cz == cz))
482+ then if ((aU > bv))
483+ then throw(((((((("passed amount=" + toString(aU)) + " is greater than available=") + toString(bv)) + ". lpAssetId=") + au) + ". stakedByUserKEY=") + ca))
484+ else (([IntegerEntry(ca, (bv - aU)), IntegerEntry(bC, (bD - aU)), ScriptTransfer(cs, aU, aC), aV("unstake", at, au, aU, cn.transactionId)] ++ ct) ++ cu)
485+ else throw("Strict value is not equal to itself.")
486+ }
487+ else throw("Strict value is not equal to itself.")
488+ }
489+
490+
491+@Callable(cn)
492+func constructor (cA) = {
493+ let cB = co(cn)
494+ if ((cB == cB))
495+ then [StringEntry(M(), cA)]
451496 else throw("Strict value is not equal to itself.")
452497 }
453498
454499
455500
456-@Callable(cj)
457-func constructorV2 (co) = {
458- let cp = [ck(cj), if ((addressFromString(co) != unit))
501+@Callable(cn)
502+func constructorV2 (cC) = {
503+ let cD = [co(cn), if ((addressFromString(cC) != unit))
459504 then true
460505 else "invalid voting emission contract address"]
461- if ((cp == cp))
462- then [StringEntry(K(), co)]
506+ if ((cD == cD))
507+ then [StringEntry(N(), cC)]
463508 else throw("Strict value is not equal to itself.")
464509 }
465510
466511
467512
468-@Callable(cj)
469-func setManager (cq) = {
470- let cn = ck(cj)
471- if ((cn == cn))
513+@Callable(cn)
514+func setManager (cE) = {
515+ let cB = co(cn)
516+ if ((cB == cB))
472517 then {
473- let cr = fromBase58String(cq)
474- if ((cr == cr))
475- then [StringEntry(U(), cq)]
518+ let cF = fromBase58String(cE)
519+ if ((cF == cF))
520+ then [StringEntry(X(), cE)]
476521 else throw("Strict value is not equal to itself.")
477522 }
478523 else throw("Strict value is not equal to itself.")
480525
481526
482527
483-@Callable(cj)
528+@Callable(cn)
484529 func confirmManager () = {
485- let cs = cg()
486- let ct = if (isDefined(cs))
530+ let cG = ck()
531+ let cH = if (isDefined(cG))
487532 then true
488533 else throw("No pending manager")
489- if ((ct == ct))
534+ if ((cH == cH))
490535 then {
491- let cu = if ((cj.callerPublicKey == value(cs)))
536+ let cI = if ((cn.callerPublicKey == value(cG)))
492537 then true
493538 else throw("You are not pending manager")
494- if ((cu == cu))
495- then [StringEntry(T(), toBase58String(value(cs))), DeleteEntry(U())]
539+ if ((cI == cI))
540+ then [StringEntry(W(), toBase58String(value(cG))), DeleteEntry(X())]
496541 else throw("Strict value is not equal to itself.")
497542 }
498543 else throw("Strict value is not equal to itself.")
500545
501546
502547
503-@Callable(cj)
504-func stake () = if ((size(cj.payments) != 1))
548+@Callable(cn)
549+func stake () = if ((size(cn.payments) != 1))
505550 then throw("invalid payment - exact one payment must be attached")
506551 else {
507- let cv = cj.payments[0]
508- let az = value(cv.assetId)
509- let ar = toBase58String(az)
510- let aR = cv.amount
511- let bw = valueOrErrorMessage(getString(aV, X(ar)), ("unsupported lp asset " + ar))
512- let cw = toString(cj.caller)
513- let aq = if ((cw == bw))
514- then toString(cj.originCaller)
515- else cw
516- let bW = ap(aq, ar)
517- let by = as(ar)
518- let br = ax(bW)
519- let cx = if ((br == 0))
520- then invoke(aX, "onStakedVoteUpdate", [ar, aq, true], nil)
552+ let cJ = cn.payments[0]
553+ let aC = value(cJ.assetId)
554+ let au = toBase58String(aC)
555+ let aU = cJ.amount
556+ let bA = valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au))
557+ let cK = toString(cn.caller)
558+ let at = if ((cK == bA))
559+ then toString(cn.originCaller)
560+ else cK
561+ let ca = as(at, au)
562+ let bC = av(au)
563+ let bv = aA(ca)
564+ let cv = if ((bv == 0))
565+ then invoke(ba, "onStakedVoteUpdate", [au, at, true], nil)
521566 else unit
522- if ((cx == cx))
567+ if ((cv == cv))
523568 then {
524- let bz = ax(by)
525- let cy = bS(ar, aq, bw, aR)
526- let cc = cy._1
527- let cz = cy._2
528- let bR = cy._3
529- let bd = bb(ar)
530- let cA = if (bi(bd, aq))
569+ let bD = aA(bC)
570+ let cL = bW(au, at, bA, aU)
571+ let cg = cL._1
572+ let ct = cL._2
573+ let bV = cL._3
574+ let bh = bf(au)
575+ let cu = if (bm(bh, at))
531576 then nil
532- else bm(bd, aq)
533- (([IntegerEntry(bW, (br + aR)), IntegerEntry(by, (bz + aR)), aS("stake", aq, ar, aR, cj.transactionId)] ++ cz) ++ cA)
577+ else bq(bh, at)
578+ (([IntegerEntry(ca, (bv + aU)), IntegerEntry(bC, (bD + aU)), aV("stake", at, au, aU, cn.transactionId)] ++ ct) ++ cu)
534579 }
535580 else throw("Strict value is not equal to itself.")
536581 }
537582
538583
539584
540-@Callable(cj)
541-func unstake (ar,aR) = {
542- let az = fromBase58String(ar)
543- let bw = valueOrErrorMessage(getString(aV, X(ar)), ("unsupported lp asset " + ar))
544- let cB = valueOrElse(getString(addressFromStringValue(bw), W()), bw)
545- let cw = toString(cj.caller)
546- let aq = if (if ((cw == bw))
585+@Callable(cn)
586+func unstake (au,aU) = {
587+ let aC = fromBase58String(au)
588+ let bA = valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au))
589+ let cr = addressFromStringValue(bA)
590+ let cM = valueOrElse(getString(cr, Z()), bA)
591+ let cK = toString(cn.caller)
592+ let aE = if (if ((cK == bA))
547593 then true
548- else (cw == cB))
549- then toString(cj.originCaller)
550- else cw
551- let bW = ap(aq, ar)
552- let by = as(ar)
553- let br = ax(bW)
554- let bz = ax(by)
555- let cz = bS(ar, aq, bw, -(aR))._2
556- let bd = bb(ar)
557- let cA = if (if (bi(bd, aq))
558- then (aR == br)
559- else false)
560- then bp(bd, aq)
561- else nil
562- let cx = if ((aR == br))
563- then invoke(aX, "onStakedVoteUpdate", [ar, aq, false], nil)
564- else unit
565- if ((cx == cx))
566- then {
567- let cC = B(this, au(ar, aq))
568- let cD = w(aV, aa(ar))
569- let cc = bS(ar, aq, cD, 0)._1
570- let cE = (cc - cC)
571- let cF = if ((cE > h))
572- then invoke(this, "claimWxINTERNAL", [ar, aq], nil)
573- else unit
574- if ((cF == cF))
575- then if ((aR > br))
576- then throw(((((((("passed amount=" + toString(aR)) + " is greater than available=") + toString(br)) + ". lpAssetId=") + ar) + ". stakedByUserKEY=") + bW))
577- else (([IntegerEntry(bW, (br - aR)), IntegerEntry(by, (bz - aR)), ScriptTransfer(cj.caller, aR, az), aS("unstake", aq, ar, aR, cj.transactionId)] ++ cz) ++ cA)
578- else throw("Strict value is not equal to itself.")
579- }
594+ else (cK == cM))
595+ then cn.originCaller
596+ else cn.caller
597+ let cs = cn.caller
598+ cq(cn, aC, cr, aE, cs, aU)
599+ }
600+
601+
602+
603+@Callable(cn)
604+func unstakeINTERNAL (aC,aU,aE,cs) = {
605+ let au = toBase58String(aC)
606+ let cr = addressFromStringValue(valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au)))
607+ let cB = if ((cn.caller == cr))
608+ then true
609+ else cl
610+ if ((cB == cB))
611+ then cq(cn, aC, cr, Address(aE), Address(cs), aU)
580612 else throw("Strict value is not equal to itself.")
581613 }
582614
583615
584616
585-@Callable(cj)
586-func claimWx (ar) = {
587- let aq = toString(cj.caller)
588- let cG = invoke(this, "claimWxINTERNAL", [ar, aq], nil)
589- $Tuple2(nil, cG)
617+@Callable(cn)
618+func claimWx (au) = {
619+ let at = toString(cn.caller)
620+ let cy = true
621+ let cN = invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
622+ $Tuple2(nil, cN)
590623 }
591624
592625
593626
594-@Callable(cj)
595-func claimWxINTERNAL (ar,aq) = {
596- let cn = ci(cj)
597- if ((cn == cn))
627+@Callable(cn)
628+func claimWxDoNotThrow (au) = {
629+ let at = toString(cn.caller)
630+ let cy = false
631+ let cN = invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
632+ $Tuple2(nil, cN)
633+ }
634+
635+
636+
637+@Callable(cn)
638+func claimWxINTERNAL (au,at,cy) = {
639+ let cB = cm(cn)
640+ if ((cB == cB))
598641 then {
599- let aB = valueOrErrorMessage(addressFromString(aq), "claimWxINTERNAL: invalid user address")
600- let bw = w(aV, aa(ar))
601- let cH = at(ar, aq)
602- let cI = aw(ar)
603- let cJ = au(ar, aq)
604- let cK = av(ar, aq)
605- let cL = B(this, cH)
606- let cC = B(this, cJ)
607- let cM = B(this, cK)
608- let cN = B(this, cI)
609- let cO = bS(ar, aq, bw, 0)
610- let cc = cO._1
611- let cz = cO._2
612- let bR = cO._3
613- let cE = max([(cc - cC), h])
614- if ((h >= cE))
615- then throw("nothing to claim")
642+ let aE = valueOrErrorMessage(addressFromString(at), "claimWxINTERNAL: invalid user address")
643+ let bA = z(aY, ad(au))
644+ let cO = aw(au, at)
645+ let cP = az(au)
646+ let cQ = ax(au, at)
647+ let cR = ay(au, at)
648+ let cS = E(this, cO)
649+ let cw = E(this, cQ)
650+ let cT = E(this, cR)
651+ let cU = E(this, cP)
652+ let cV = bW(au, at, bA, 0)
653+ let cg = cV._1
654+ let ct = cV._2
655+ let bV = cV._3
656+ let cx = max([(cg - cw), h])
657+ if ((h >= cx))
658+ then if (cy)
659+ then throw("nothing to claim")
660+ else $Tuple2(nil, 0)
616661 else {
617- let cP = max([n(j(invoke(aX, "claimWxBoost", [ar, aq], nil))[0]), 0])
618- let cQ = cE
619- let cR = min([(cQ * toBigInt((aY - 1))), toBigInt(cP)])
620- let cS = r(j(invoke(aW, "emit", [toInt(cQ)], nil))[0])
621- let cT = j(invoke(aW, "emit", [toInt(cR)], nil))
622- if ((cT == cT))
662+ let cW = max([q(m(invoke(ba, "claimWxBoost", [au, at], nil))[0]), 0])
663+ let cX = cx
664+ let cY = min([(cX * toBigInt((bb - 1))), toBigInt(cW)])
665+ let cZ = (cX + cY)
666+ let da = u(m(invoke(aZ, "emit", [toInt(cX)], nil))[0])
667+ let db = m(invoke(aZ, "emit", [toInt(cY)], nil))
668+ if ((db == db))
623669 then {
624- let cU = ((cL + cQ) + cR)
625- let cV = (cC + cQ)
626- let cW = (cM + cR)
627- let cX = (cN + cE)
628-[StringEntry(cH, toString(cU)), StringEntry(cJ, toString(cV)), StringEntry(cK, toString(cW)), StringEntry(cI, toString(cX)), ScriptTransfer(aB, toInt(cQ), cS), ScriptTransfer(aB, toInt(cR), cS), aS("claim", aq, ar, toInt(cE), cj.transactionId)]
670+ let dc = ((cS + cX) + cY)
671+ let dd = (cw + cX)
672+ let de = (cT + cY)
673+ let df = (cU + cx)
674+ $Tuple2([StringEntry(cO, toString(dc)), StringEntry(cQ, toString(dd)), StringEntry(cR, toString(de)), StringEntry(cP, toString(df)), ScriptTransfer(aE, toInt(cX), da), ScriptTransfer(aE, toInt(cY), da), aV("claim", at, au, toInt(cx), cn.transactionId)], toInt(cZ))
629675 }
630676 else throw("Strict value is not equal to itself.")
631677 }
635681
636682
637683
638-@Callable(cj)
639-func claimWxBulkInternalREADONLY (cY,cZ,aq,da) = if ((cY == size(cZ)))
640- then $Tuple2(nil, da)
684+@Callable(cn)
685+func claimWxBulkInternalREADONLY (dg,dh,at,di) = if ((dg == size(dh)))
686+ then $Tuple2(nil, di)
641687 else {
642- let az = cZ[cY]
643- let db = split({
644- let aZ = invoke(this, "claimWxREADONLY", [az, aq], nil)
645- if ($isInstanceOf(aZ, "String"))
646- then aZ
647- else throw(($getType(aZ) + " couldn't be cast to String"))
688+ let aC = dh[dg]
689+ let dj = split({
690+ let bc = invoke(this, "claimWxREADONLY", [aC, at], nil)
691+ if ($isInstanceOf(bc, "String"))
692+ then bc
693+ else throw(($getType(bc) + " couldn't be cast to String"))
648694 }, f)
649- let dc = db[3]
650- let dd = db[4]
651- let de = {
652- let aZ = invoke(aX, "getUserVoteFinalizedREADONLY", [az, aq], nil)
653- if ($isInstanceOf(aZ, "Int"))
654- then aZ
655- else throw(($getType(aZ) + " couldn't be cast to Int"))
695+ let dk = dj[3]
696+ let dl = dj[4]
697+ let dm = {
698+ let bc = invoke(ba, "getUserVoteFinalizedREADONLY", [aC, at], nil)
699+ if ($isInstanceOf(bc, "Int"))
700+ then bc
701+ else throw(($getType(bc) + " couldn't be cast to Int"))
656702 }
657- let df = (da :+ makeString(["%d%d%d", dc, dd, toString(de)], f))
658- let dg = {
659- let aZ = invoke(this, "claimWxBulkInternalREADONLY", [(cY + 1), cZ, aq, df], nil)
660- if ($isInstanceOf(aZ, "List[Any]"))
661- then aZ
662- else throw(($getType(aZ) + " couldn't be cast to List[Any]"))
703+ let dn = (di :+ makeString(["%d%d%d", dk, dl, toString(dm)], f))
704+ let do = {
705+ let bc = invoke(this, "claimWxBulkInternalREADONLY", [(dg + 1), dh, at, dn], nil)
706+ if ($isInstanceOf(bc, "List[Any]"))
707+ then bc
708+ else throw(($getType(bc) + " couldn't be cast to List[Any]"))
663709 }
664- if ((dg == dg))
665- then $Tuple2(nil, dg)
710+ if ((do == do))
711+ then $Tuple2(nil, do)
666712 else throw("Strict value is not equal to itself.")
667713 }
668714
669715
670716
671-@Callable(cj)
672-func claimWxBulkREADONLY (cZ,aq) = {
673- let df = invoke(this, "claimWxBulkInternalREADONLY", [0, cZ, aq, nil], nil)
674- $Tuple2(nil, df)
717+@Callable(cn)
718+func claimWxBulkREADONLY (dh,at) = {
719+ let dn = invoke(this, "claimWxBulkInternalREADONLY", [0, dh, at, nil], nil)
720+ $Tuple2(nil, dn)
675721 }
676722
677723
678724
679-@Callable(cj)
680-func claimWxREADONLY (ar,aq) = {
681- let bW = ap(aq, ar)
682- let by = as(ar)
683- let cH = at(ar, aq)
684- let cJ = au(ar, aq)
685- let br = ax(bW)
686- let bz = ax(by)
687- let cL = B(this, cH)
688- let cC = B(this, cJ)
689- let bw = w(aV, aa(ar))
690- let bB = getIntegerValue(aV, ab(bw))
691- let dh = A(aW, ak())
692- let bC = A(aW, am())
693- let di = if ((bC > height))
725+@Callable(cn)
726+func claimWxREADONLY (au,at) = {
727+ let ca = as(at, au)
728+ let bC = av(au)
729+ let cO = aw(au, at)
730+ let cQ = ax(au, at)
731+ let bv = aA(ca)
732+ let bD = aA(bC)
733+ let cS = E(this, cO)
734+ let cw = E(this, cQ)
735+ let bA = z(aY, ad(au))
736+ let bF = getIntegerValue(aY, ae(bA))
737+ let dp = D(aZ, an())
738+ let bG = D(aZ, ap())
739+ let dq = if ((bG > height))
694740 then 0
695- else (height - bC)
696- let dj = fraction((dh * di), bB, g)
697- let dk = fraction(dj, br, bz)
698- let dl = bS(ar, aq, bw, 0)
699- let cc = dl._1
700- let cz = dl._2
701- let bR = dl._3
702- let cE = max([(cc - cC), h])
703- let dm = j(invoke(aX, "claimWxBoostREADONLY", [ar, aq], nil))
704- let cP = max([n(dm[0]), 0])
705- let dn = p(dm[1])
706- let cQ = cE
707- let cR = min([(cQ * toBigInt((aY - 1))), toBigInt(cP)])
708- let do = (cQ + cR)
709- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", ar, aq, toString(do), toString(cL), toString(cQ), toString(cR), "soon"], f))
741+ else (height - bG)
742+ let dr = fraction((dp * dq), bF, g)
743+ let ds = fraction(dr, bv, bD)
744+ let dt = bW(au, at, bA, 0)
745+ let cg = dt._1
746+ let ct = dt._2
747+ let bV = dt._3
748+ let cx = max([(cg - cw), h])
749+ let du = m(invoke(ba, "claimWxBoostREADONLY", [au, at], nil))
750+ let cW = max([q(du[0]), 0])
751+ let dv = s(du[1])
752+ let cX = cx
753+ let cY = min([(cX * toBigInt((bb - 1))), toBigInt(cW)])
754+ let cZ = (cX + cY)
755+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", au, at, toString(cZ), toString(cS), toString(cX), toString(cY), "soon"], f))
710756 }
711757
712758
713759
714-@Callable(cj)
715-func usersListTraversal (az) = {
716- let cn = if ((toBase58String(cj.caller.bytes) == valueOrElse(getString(this, K()), "")))
760+@Callable(cn)
761+func stakedByUserREADONLY (au,at) = {
762+ let bv = valueOrElse(getInteger(as(at, au)), 0)
763+ $Tuple2(nil, bv)
764+ }
765+
766+
767+
768+@Callable(cn)
769+func usersListTraversal (aC) = {
770+ let cB = if ((toBase58String(cn.caller.bytes) == valueOrElse(getString(this, N()), "")))
717771 then true
718- else ck(cj)
719- if ((cn == cn))
772+ else co(cn)
773+ if ((cB == cB))
720774 then {
721- let bd = bb(az)
722- let dp = getString(ba(az))
723- let bj = getString(bc(bd))
724- let l = dp
725- if ($isInstanceOf(l, "Unit"))
775+ let bh = bf(aC)
776+ let dw = getString(be(aC))
777+ let bn = getString(bg(bh))
778+ let o = dw
779+ if ($isInstanceOf(o, "Unit"))
726780 then {
727- let dq = bj
728- if ($isInstanceOf(dq, "Unit"))
781+ let dx = bn
782+ if ($isInstanceOf(dx, "Unit"))
729783 then $Tuple2(nil, false)
730- else if ($isInstanceOf(dq, "String"))
784+ else if ($isInstanceOf(dx, "String"))
731785 then {
732- let dr = dq
733- $Tuple2([StringEntry(ba(az), dr)], true)
786+ let dy = dx
787+ $Tuple2([StringEntry(be(aC), dy)], true)
734788 }
735789 else throw("Match error")
736790 }
737- else if ($isInstanceOf(l, "String"))
791+ else if ($isInstanceOf(o, "String"))
738792 then {
739- let aB = l
740- let cC = B(this, au(az, aB))
741- let cD = w(aV, aa(az))
742- let cc = bS(az, aB, cD, 0)._1
743- let cE = (cc - cC)
744- let cF = if ((cE > h))
745- then invoke(this, "claimWxINTERNAL", [az, aB], nil)
793+ let aE = o
794+ let cw = E(this, ax(aC, aE))
795+ let cr = z(aY, ad(aC))
796+ let cg = bW(aC, aE, cr, 0)._1
797+ let cx = (cg - cw)
798+ let cy = true
799+ let cz = if ((cx > h))
800+ then invoke(this, "claimWxINTERNAL", [aC, aE, cy], nil)
746801 else unit
747- if ((cF == cF))
802+ if ((cz == cz))
748803 then {
749- let ds = getString(bh(bd, aB))
750- let dq = ds
751- if ($isInstanceOf(dq, "Unit"))
752- then $Tuple2([DeleteEntry(ba(az))], false)
753- else if ($isInstanceOf(dq, "String"))
804+ let dz = getString(bl(bh, aE))
805+ let dx = dz
806+ if ($isInstanceOf(dx, "Unit"))
807+ then $Tuple2([DeleteEntry(be(aC))], false)
808+ else if ($isInstanceOf(dx, "String"))
754809 then {
755- let dt = dq
756- $Tuple2([StringEntry(ba(az), dt)], true)
810+ let dA = dx
811+ $Tuple2([StringEntry(be(aC), dA)], true)
757812 }
758813 else throw("Match error")
759814 }
766821
767822
768823
769-@Callable(cj)
770-func onModifyWeight (ar,bw) = if ((cj.caller != aV))
824+@Callable(cn)
825+func onModifyWeight (au,bA) = if ((cn.caller != aY))
771826 then throw("permissions denied")
772827 else {
773- let du = bv(ar, bw, 0)
774- let bt = du._1
775- let bU = du._2
776- let bV = du._3
777- bU
828+ let dB = bz(au, bA, 0)
829+ let bx = dB._1
830+ let bY = dB._2
831+ let bZ = dB._3
832+ bY
778833 }
779834
780835
781-@Verifier(dv)
782-func dw () = {
783- let dx = {
784- let l = cf()
785- if ($isInstanceOf(l, "ByteVector"))
836+@Verifier(dC)
837+func dD () = {
838+ let dE = {
839+ let o = cj()
840+ if ($isInstanceOf(o, "ByteVector"))
786841 then {
787- let cl = l
788- cl
842+ let cp = o
843+ cp
789844 }
790- else if ($isInstanceOf(l, "Unit"))
791- then dv.senderPublicKey
845+ else if ($isInstanceOf(o, "Unit"))
846+ then dC.senderPublicKey
792847 else throw("Match error")
793848 }
794- sigVerify(dv.bodyBytes, dv.proofs[0], dx)
849+ sigVerify(dC.bodyBytes, dC.proofs[0], dE)
795850 }
796851
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 1000
77
88 let c = 100000000
99
1010 let d = 18
1111
1212 let e = toBigInt(1000000000000000000)
1313
1414 let f = "__"
1515
1616 let g = c
1717
1818 let h = toBigInt(0)
1919
2020 let i = toBigInt(1)
2121
22-func j (k) = {
23- let l = k
24- if ($isInstanceOf(l, "List[Any]"))
22+func j (k) = makeString(["staking.ride:", toString(this), k], " ")
23+
24+
25+func l (k) = throw(j(k))
26+
27+
28+func m (n) = {
29+ let o = n
30+ if ($isInstanceOf(o, "List[Any]"))
2531 then {
26- let m = l
27- m
32+ let p = o
33+ p
2834 }
2935 else throw("fail to cast into List[Any]")
3036 }
3137
3238
33-func n (k) = {
34- let l = k
35- if ($isInstanceOf(l, "Int"))
39+func q (n) = {
40+ let o = n
41+ if ($isInstanceOf(o, "Int"))
3642 then {
37- let o = l
38- o
43+ let r = o
44+ r
3945 }
4046 else throw("fail to cast into Int")
4147 }
4248
4349
44-func p (k) = {
45- let l = k
46- if ($isInstanceOf(l, "String"))
50+func s (n) = {
51+ let o = n
52+ if ($isInstanceOf(o, "String"))
4753 then {
48- let q = l
49- q
54+ let t = o
55+ t
5056 }
5157 else throw("fail to cast into Int")
5258 }
5359
5460
55-func r (k) = {
56- let l = k
57- if ($isInstanceOf(l, "ByteVector"))
61+func u (n) = {
62+ let o = n
63+ if ($isInstanceOf(o, "ByteVector"))
5864 then {
59- let s = l
60- s
65+ let v = o
66+ v
6167 }
6268 else throw("fail to cast into Int")
6369 }
6470
6571
66-func t (u,v) = valueOrErrorMessage(getString(u, v), (("mandatory this." + v) + " is not defined"))
72+func w (x,y) = valueOrErrorMessage(getString(x, y), (("mandatory this." + y) + " is not defined"))
6773
6874
69-func w (u,v) = valueOrErrorMessage(getString(u, v), (((("mandatory " + toString(u)) + ".") + v) + " is not defined"))
75+func z (x,y) = valueOrErrorMessage(getString(x, y), (((("mandatory " + toString(x)) + ".") + y) + " is not defined"))
7076
7177
72-func x (u,v) = valueOrElse(getInteger(u, v), 0)
78+func A (x,y) = valueOrElse(getInteger(x, y), 0)
7379
7480
75-func y (u,v,z) = valueOrElse(getInteger(u, v), z)
81+func B (x,y,C) = valueOrElse(getInteger(x, y), C)
7682
7783
78-func A (u,v) = valueOrErrorMessage(getInteger(u, v), (("mandatory this." + v) + " is not defined"))
84+func D (x,y) = valueOrErrorMessage(getInteger(x, y), (("mandatory this." + y) + " is not defined"))
7985
8086
81-func B (u,v) = value(parseBigInt(valueOrElse(getString(u, v), "0")))
87+func E (x,y) = value(parseBigInt(valueOrElse(getString(x, y), "0")))
8288
8389
84-func C (u,v,z) = {
85- let l = getString(u, v)
86- if ($isInstanceOf(l, "String"))
90+func F (x,y,C) = {
91+ let o = getString(x, y)
92+ if ($isInstanceOf(o, "String"))
8793 then {
88- let D = l
89- value(parseBigInt(D))
94+ let G = o
95+ value(parseBigInt(G))
9096 }
91- else if ($isInstanceOf(l, "Unit"))
92- then z
97+ else if ($isInstanceOf(o, "Unit"))
98+ then C
9399 else throw("Match error")
94100 }
95101
96102
97-func E (F,G) = fraction(toBigInt(F), e, toBigInt(G))
103+func H (I,J) = fraction(toBigInt(I), e, toBigInt(J))
98104
99105
100-func H (k,I) = toInt(fraction(k, toBigInt(I), e))
106+func K (n,L) = toInt(fraction(n, toBigInt(L), e))
101107
102108
103-func J () = "%s%s__config__factoryAddress"
109+func M () = "%s%s__config__factoryAddress"
104110
105111
106-func K () = "%s__votingEmissionContract"
112+func N () = "%s__votingEmissionContract"
107113
108114
109-let L = 1
115+let O = 1
110116
111-let M = 2
117+let P = 2
112118
113-let N = 3
119+let Q = 3
114120
115-let O = 4
121+let R = 4
116122
117-let P = 5
123+let S = 5
118124
119-let Q = 6
125+let T = 6
120126
121-let R = 7
127+let U = 7
122128
123-func S () = "%s__factoryConfig"
129+func V () = "%s__factoryConfig"
124130
125131
126-func T () = "%s__managerPublicKey"
132+func W () = "%s__managerPublicKey"
127133
128134
129-func U () = "%s__pendingManagerPublicKey"
135+func X () = "%s__pendingManagerPublicKey"
130136
131137
132-func V () = "%s__stablePoolAddonAddr"
138+func Y () = "%s__stablePoolAddonAddr"
133139
134140
135-func W () = "%s__addonAddr"
141+func Z () = "%s__addonAddr"
136142
137143
138-func X (Y) = makeString(["%s%s%s", Y, "mappings__lpAsset2PoolContract"], f)
144+func aa (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
139145
140146
141-func Z () = "%s__lpTokensList"
147+func ac () = "%s__lpTokensList"
142148
143149
144-func aa (Y) = makeString(["%s%s%s", Y, "mappings__lpAsset2PoolContract"], f)
150+func ad (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
145151
146152
147-func ab (ac) = makeString(["%s%s", "poolWeight", ac], f)
153+func ae (af) = makeString(["%s%s", "poolWeight", af], f)
148154
149155
150-func ad (ae) = split(valueOrElse(getString(ae, Z()), ""), f)
156+func ag (ah) = split(valueOrElse(getString(ah, ac()), ""), f)
151157
152158
153-func af (ae) = split(w(ae, S()), f)
159+func ai (ah) = split(z(ah, V()), f)
154160
155161
156-func ag (ah) = addressFromStringValue(ah[M])
162+func aj (ak) = addressFromStringValue(ak[P])
157163
158164
159-func ai (ah) = addressFromStringValue(ah[P])
165+func al (ak) = addressFromStringValue(ak[S])
160166
161167
162-func aj (ah) = addressFromStringValue(ah[L])
168+func am (ak) = addressFromStringValue(ak[O])
163169
164170
165-func ak () = "%s%s__ratePerBlock__current"
171+func an () = "%s%s__ratePerBlock__current"
166172
167173
168-func al () = "%s%s__ratePerBlockMax__current"
174+func ao () = "%s%s__ratePerBlockMax__current"
169175
170176
171-func am () = "%s%s__emission__startBlock"
177+func ap () = "%s%s__emission__startBlock"
172178
173179
174-func an () = "%s%s__emission__duration"
180+func aq () = "%s%s__emission__duration"
175181
176182
177-func ao () = "%s%s__emission__endBlock"
183+func ar () = "%s%s__emission__endBlock"
178184
179185
180-func ap (aq,ar) = makeString(["%s%s%s__staked", aq, ar], f)
186+func as (at,au) = makeString(["%s%s%s__staked", at, au], f)
181187
182188
183-func as (ar) = ("%s%s%s__staked__total__" + ar)
189+func av (au) = ("%s%s%s__staked__total__" + au)
184190
185191
186-func at (ar,aq) = makeString(["%s%s%s__claimed", aq, ar], f)
192+func aw (au,at) = makeString(["%s%s%s__claimed", at, au], f)
187193
188194
189-func au (ar,aq) = makeString(["%s%s%s__claimedMinReward", aq, ar], f)
195+func ax (au,at) = makeString(["%s%s%s__claimedMinReward", at, au], f)
190196
191197
192-func av (ar,aq) = makeString(["%s%s%s__claimedBoostReward", aq, ar], f)
198+func ay (au,at) = makeString(["%s%s%s__claimedBoostReward", at, au], f)
193199
194200
195-func aw (ar) = makeString(["%s%s%s__claimed__total", ar], f)
201+func az (au) = makeString(["%s%s%s__claimed__total", au], f)
196202
197203
198-func ax (v) = valueOrElse(getInteger(this, v), 0)
204+func aA (y) = valueOrElse(getInteger(this, y), 0)
199205
200206
201-func ay (az) = makeString(["%s%s%s", az, "total", "bal"], f)
207+func aB (aC) = makeString(["%s%s%s", aC, "total", "bal"], f)
202208
203209
204-func aA (az,aB) = makeString(["%s%s%s", az, aB, "bal"], f)
210+func aD (aC,aE) = makeString(["%s%s%s", aC, aE, "bal"], f)
205211
206212
207-func aC (az) = makeString(["%s%s%s", az, "total", "balINT"], f)
213+func aF (aC) = makeString(["%s%s%s", aC, "total", "balINT"], f)
208214
209215
210-func aD (az,aB) = makeString(["%s%s%s", az, aB, "balINT"], f)
216+func aG (aC,aE) = makeString(["%s%s%s", aC, aE, "balINT"], f)
211217
212218
213-func aE (az) = makeString(["%s%s%s", az, "total", "lastUpd"], f)
219+func aH (aC) = makeString(["%s%s%s", aC, "total", "lastUpd"], f)
214220
215221
216-func aF (az,aB) = makeString(["%s%s%s", az, aB, "lastUpd"], f)
222+func aI (aC,aE) = makeString(["%s%s%s", aC, aE, "lastUpd"], f)
217223
218224
219-func aG (az) = makeString(["%s%s%s%s", az, "common", "lpInt"], f)
225+func aJ (aC) = makeString(["%s%s%s%s", aC, "common", "lpInt"], f)
220226
221227
222-func aH (az) = makeString(["%s%s%s%s", az, "common", "lpIntH"], f)
228+func aK (aC) = makeString(["%s%s%s%s", aC, "common", "lpIntH"], f)
223229
224230
225-func aI (az,aB) = makeString(["%s%s%s%s", az, aB, "lpInt"], f)
231+func aL (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpInt"], f)
226232
227233
228-func aJ (az,aB) = makeString(["%s%s%s%s", az, aB, "lpIntH"], f)
234+func aM (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpIntH"], f)
229235
230236
231-func aK (az) = makeString(["%s", az, "wxPerLp"], f)
237+func aN (aC) = makeString(["%s", aC, "wxPerLp"], f)
232238
233239
234-func aL (az) = makeString(["%s", az, "wxPerLpX18"], f)
240+func aO (aC) = makeString(["%s", aC, "wxPerLpX18"], f)
235241
236242
237-func aM (az,aB) = makeString(["%s%s%s%s", az, aB, "uIntL"], f)
243+func aP (aC,aE) = makeString(["%s%s%s%s", aC, aE, "uIntL"], f)
238244
239245
240-func aN (aO,aB,aP) = makeString(["%s%s%s%s__history", aO, aB, aP], f)
246+func aQ (aR,aE,aS) = makeString(["%s%s%s%s__history", aR, aE, aS], f)
241247
242248
243-func aQ (aB,az,aO,aR) = makeString(["%s%s%s%d%d%d", aB, az, aO, toString(height), toString(lastBlock.timestamp), toString(aR)], f)
249+func aT (aE,aC,aR,aU) = makeString(["%s%s%s%d%d%d", aE, aC, aR, toString(height), toString(lastBlock.timestamp), toString(aU)], f)
244250
245251
246-func aS (aO,aB,az,aR,aT) = StringEntry(aN(aO, aB, toBase58String(aT)), aQ(aB, az, aO, aR))
252+func aV (aR,aE,aC,aU,aW) = StringEntry(aQ(aR, aE, toBase58String(aW)), aT(aE, aC, aR, aU))
247253
248254
249-let aU = t(this, J())
255+let aX = w(this, M())
250256
251-let aV = addressFromStringValue(aU)
257+let aY = addressFromStringValue(aX)
252258
253-let ah = af(aV)
259+let ak = ai(aY)
254260
255-let aW = ai(ah)
261+let aZ = al(ak)
256262
257-let aX = ag(ah)
263+let ba = aj(ak)
258264
259-let aY = {
260- let aZ = invoke(aW, "getBoostCoeffREADONLY", nil, nil)
261- if ($isInstanceOf(aZ, "Int"))
262- then aZ
263- else throw(($getType(aZ) + " couldn't be cast to Int"))
265+let bb = {
266+ let bc = invoke(aZ, "getBoostCoeffREADONLY", nil, nil)
267+ if ($isInstanceOf(bc, "Int"))
268+ then bc
269+ else throw(($getType(bc) + " couldn't be cast to Int"))
264270 }
265271
266-func ba (az) = makeString(["%s%s", az, "nextUser"], f)
272+let bd = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], f)), j("lp_staking_pools contract address is undefined"))), j("invalid lp_staking_pools contract address"))
273+
274+func be (aC) = makeString(["%s%s", aC, "nextUser"], f)
267275
268276
269-func bb (az) = makeString(["users", az], f)
277+func bf (aC) = makeString(["users", aC], f)
270278
271279
272-func bc (bd) = makeString(["%s%s%s", bd, "head"], f)
280+func bg (bh) = makeString(["%s%s%s", bh, "head"], f)
273281
274282
275-func be (bd) = makeString(["%s%s%s", bd, "size"], f)
283+func bi (bh) = makeString(["%s%s%s", bh, "size"], f)
276284
277285
278-func bf (bd,bg) = makeString(["%s%s%s%s", bd, bg, "prev"], f)
286+func bj (bh,bk) = makeString(["%s%s%s%s", bh, bk, "prev"], f)
279287
280288
281-func bh (bd,bg) = makeString(["%s%s%s%s", bd, bg, "next"], f)
289+func bl (bh,bk) = makeString(["%s%s%s%s", bh, bk, "next"], f)
282290
283291
284-func bi (bd,bg) = {
285- let bj = getString(this, bc(bd))
286- let bk = getString(this, bf(bd, bg))
287- let bl = getString(this, bh(bd, bg))
288- if (if ((bg == valueOrElse(bj, "")))
292+func bm (bh,bk) = {
293+ let bn = getString(this, bg(bh))
294+ let bo = getString(this, bj(bh, bk))
295+ let bp = getString(this, bl(bh, bk))
296+ if (if ((bk == valueOrElse(bn, "")))
289297 then true
290- else (bk != unit))
298+ else (bo != unit))
291299 then true
292- else (bl != unit)
300+ else (bp != unit)
293301 }
294302
295303
296-func bm (bd,bg) = {
297- let bj = getString(this, bc(bd))
298- let bn = valueOrElse(getInteger(this, be(bd)), 0)
299- let bo = if (!(bi(bd, bg)))
304+func bq (bh,bk) = {
305+ let bn = getString(this, bg(bh))
306+ let br = valueOrElse(getInteger(this, bi(bh)), 0)
307+ let bs = if (!(bm(bh, bk)))
300308 then true
301309 else throw("Node exists")
302- if ((bo == bo))
303- then (([IntegerEntry(be(bd), (bn + 1))] ++ (if ((bj != unit))
304- then [StringEntry(bh(bd, bg), value(bj)), StringEntry(bf(bd, value(bj)), bg)]
305- else nil)) ++ [StringEntry(bc(bd), bg)])
310+ if ((bs == bs))
311+ then (([IntegerEntry(bi(bh), (br + 1))] ++ (if ((bn != unit))
312+ then [StringEntry(bl(bh, bk), value(bn)), StringEntry(bj(bh, value(bn)), bk)]
313+ else nil)) ++ [StringEntry(bg(bh), bk)])
306314 else throw("Strict value is not equal to itself.")
307315 }
308316
309317
310-func bp (bd,bg) = {
311- let bj = getString(this, bc(bd))
312- let bn = valueOrElse(getInteger(this, be(bd)), 0)
313- let bk = getString(this, bf(bd, bg))
314- let bl = getString(this, bh(bd, bg))
315- ([IntegerEntry(be(bd), (bn - 1))] ++ (if (if ((bk != unit))
316- then (bl != unit)
318+func bt (bh,bk) = {
319+ let bn = getString(this, bg(bh))
320+ let br = valueOrElse(getInteger(this, bi(bh)), 0)
321+ let bo = getString(this, bj(bh, bk))
322+ let bp = getString(this, bl(bh, bk))
323+ ([IntegerEntry(bi(bh), (br - 1))] ++ (if (if ((bo != unit))
324+ then (bp != unit)
317325 else false)
318- then [StringEntry(bh(bd, value(bk)), value(bl)), StringEntry(bf(bd, value(bl)), value(bk)), DeleteEntry(bf(bd, bg)), DeleteEntry(bh(bd, bg))]
319- else if ((bl != unit))
320- then [StringEntry(bc(bd), value(bl)), DeleteEntry(bh(bd, bg)), DeleteEntry(bf(bd, value(bl)))]
321- else if ((bk != unit))
322- then [DeleteEntry(bf(bd, bg)), DeleteEntry(bh(bd, value(bk)))]
323- else if ((bg == valueOrElse(bj, "")))
324- then [DeleteEntry(bc(bd))]
325- else throw(((("invalid node: " + bd) + ".") + bg))))
326+ then [StringEntry(bl(bh, value(bo)), value(bp)), StringEntry(bj(bh, value(bp)), value(bo)), DeleteEntry(bj(bh, bk)), DeleteEntry(bl(bh, bk))]
327+ else if ((bp != unit))
328+ then [StringEntry(bg(bh), value(bp)), DeleteEntry(bl(bh, bk)), DeleteEntry(bj(bh, value(bp)))]
329+ else if ((bo != unit))
330+ then [DeleteEntry(bj(bh, bk)), DeleteEntry(bl(bh, value(bo)))]
331+ else if ((bk == valueOrElse(bn, "")))
332+ then [DeleteEntry(bg(bh))]
333+ else throw(((("invalid node: " + bh) + ".") + bk))))
326334 }
327335
328336
329-func bq (br,bs,bt,bu) = if (if ((bs == h))
330- then (br > h)
337+func bu (bv,bw,bx,by) = if (if ((bw == h))
338+ then (bv > h)
331339 else false)
332340 then h
333- else if ((br == h))
334- then bt
335- else if (if ((bs > h))
336- then (br > h)
341+ else if ((bv == h))
342+ then bx
343+ else if (if ((bw > h))
344+ then (bv > h)
337345 else false)
338- then value(parseBigInt(t(this, bu)))
346+ then value(parseBigInt(w(this, by)))
339347 else throw("calcWxPerLpIntegralUserLast: unexpected state")
340348
341349
342-func bv (ar,bw,bx) = {
343- let by = as(ar)
344- let bz = toBigInt(ax(by))
345- let bA = if ((bz == h))
350+func bz (au,bA,bB) = {
351+ let bC = av(au)
352+ let bD = toBigInt(aA(bC))
353+ let bE = if ((bD == h))
346354 then i
347- else bz
348- let bB = getIntegerValue(aV, ab(bw))
349- let bC = A(aW, am())
350- let bD = (A(aW, ak()) * b)
351- let bE = fraction(bD, bB, (g * aY))
352- let bF = aG(ar)
353- let bG = aH(ar)
354- let bH = aK(ar)
355- let bI = y(this, bG, bC)
356- let bJ = B(this, bF)
357- let bK = 0
358- let bL = max([(height - bI), 0])
359- let bM = if ((bK != 0))
360- then toBigInt(bK)
361- else fraction(toBigInt(bE), toBigInt(c), bA)
362- let bN = (bz + toBigInt(bx))
363- let bO = if ((bN == h))
355+ else bD
356+ let bF = getIntegerValue(aY, ae(bA))
357+ let bG = D(aZ, ap())
358+ let bH = (D(aZ, an()) * b)
359+ let bI = fraction(bH, bF, (g * bb))
360+ let bJ = aJ(au)
361+ let bK = aK(au)
362+ let bL = aN(au)
363+ let bM = B(this, bK, bG)
364+ let bN = E(this, bJ)
365+ let bO = 0
366+ let bP = max([(height - bM), 0])
367+ let bQ = if ((bO != 0))
368+ then toBigInt(bO)
369+ else fraction(toBigInt(bI), toBigInt(c), bE)
370+ let bR = (bD + toBigInt(bB))
371+ let bS = if ((bR == h))
364372 then i
365- else bN
366- let bt = (bJ + (bM * toBigInt(bL)))
367- let bP = (toBigInt(bE) / bO)
368- let bQ = height
369- let bR = makeString([toString(bt), toString(bL), toString(bM), toString(bz), toString(bE), toString(bD), toString(bB)], "::")
370- $Tuple3(bt, [StringEntry(bF, toString(bt)), IntegerEntry(bG, bQ), StringEntry(bH, toString(bP))], bR)
373+ else bR
374+ let bx = (bN + (bQ * toBigInt(bP)))
375+ let bT = (toBigInt(bI) / bS)
376+ let bU = height
377+ let bV = makeString([toString(bx), toString(bP), toString(bQ), toString(bD), toString(bI), toString(bH), toString(bF)], "::")
378+ $Tuple3(bx, [StringEntry(bJ, toString(bx)), IntegerEntry(bK, bU), StringEntry(bL, toString(bT))], bV)
371379 }
372380
373381
374-func bS (ar,aq,bw,bx) = {
375- let bT = bv(ar, bw, bx)
376- let bt = bT._1
377- let bU = bT._2
378- let bV = bT._3
379- let bW = ap(aq, ar)
380- let br = ax(bW)
381- let bX = aI(ar, aq)
382- let bY = aJ(ar, aq)
383- let bu = aM(ar, aq)
384- let bZ = B(this, bX)
385- let bs = x(this, bY)
386- let ca = bq(toBigInt(br), toBigInt(bs), bt, bu)
387- let cb = (c * b)
388- let cc = max([(bZ + fraction((bt - ca), toBigInt(br), toBigInt(cb))), h])
389- let cd = bt
390- let ce = height
391- let bR = makeString([toString(bZ), toString(ca), toString(br), bV, toString(height)], "::")
392- $Tuple3(cc, (bU ++ [StringEntry(bX, toString(cc)), IntegerEntry(bY, ce), StringEntry(bu, toString(cd))]), bR)
382+func bW (au,at,bA,bB) = {
383+ let bX = bz(au, bA, bB)
384+ let bx = bX._1
385+ let bY = bX._2
386+ let bZ = bX._3
387+ let ca = as(at, au)
388+ let bv = aA(ca)
389+ let cb = aL(au, at)
390+ let cc = aM(au, at)
391+ let by = aP(au, at)
392+ let cd = E(this, cb)
393+ let bw = A(this, cc)
394+ let ce = bu(toBigInt(bv), toBigInt(bw), bx, by)
395+ let cf = (c * b)
396+ let cg = max([(cd + fraction((bx - ce), toBigInt(bv), toBigInt(cf))), h])
397+ let ch = bx
398+ let ci = height
399+ let bV = makeString([toString(cd), toString(ce), toString(bv), bZ, toString(height)], "::")
400+ $Tuple3(cg, (bY ++ [StringEntry(cb, toString(cg)), IntegerEntry(cc, ci), StringEntry(by, toString(ch))]), bV)
393401 }
394402
395403
396-func cf () = {
397- let l = getString(T())
398- if ($isInstanceOf(l, "String"))
404+func cj () = {
405+ let o = getString(W())
406+ if ($isInstanceOf(o, "String"))
399407 then {
400- let D = l
401- fromBase58String(D)
408+ let G = o
409+ fromBase58String(G)
402410 }
403- else if ($isInstanceOf(l, "Unit"))
411+ else if ($isInstanceOf(o, "Unit"))
404412 then unit
405413 else throw("Match error")
406414 }
407415
408416
409-func cg () = {
410- let l = getString(U())
411- if ($isInstanceOf(l, "String"))
417+func ck () = {
418+ let o = getString(X())
419+ if ($isInstanceOf(o, "String"))
412420 then {
413- let D = l
414- fromBase58String(D)
421+ let G = o
422+ fromBase58String(G)
415423 }
416- else if ($isInstanceOf(l, "Unit"))
424+ else if ($isInstanceOf(o, "Unit"))
417425 then unit
418426 else throw("Match error")
419427 }
420428
421429
422-let ch = throw("Permission denied")
430+let cl = throw("Permission denied")
423431
424-func ci (cj) = if ((cj.caller == this))
432+func cm (cn) = if ((cn.caller == this))
425433 then true
426- else ch
434+ else cl
427435
428436
429-func ck (cj) = {
430- let l = cf()
431- if ($isInstanceOf(l, "ByteVector"))
437+func co (cn) = {
438+ let o = cj()
439+ if ($isInstanceOf(o, "ByteVector"))
432440 then {
433- let cl = l
434- if ((cj.callerPublicKey == cl))
441+ let cp = o
442+ if ((cn.callerPublicKey == cp))
435443 then true
436- else ch
444+ else cl
437445 }
438- else if ($isInstanceOf(l, "Unit"))
439- then if ((cj.caller == this))
446+ else if ($isInstanceOf(o, "Unit"))
447+ then if ((cn.caller == this))
440448 then true
441- else ch
449+ else cl
442450 else throw("Match error")
443451 }
444452
445453
446-@Callable(cj)
447-func constructor (cm) = {
448- let cn = ck(cj)
449- if ((cn == cn))
450- then [StringEntry(J(), cm)]
454+func cq (cn,aC,cr,aE,cs,aU) = {
455+ let at = toString(aE)
456+ let au = toBase58String(aC)
457+ let bA = toString(cr)
458+ let ca = as(at, au)
459+ let bC = av(au)
460+ let bv = aA(ca)
461+ let bD = aA(bC)
462+ let ct = bW(au, at, bA, -(aU))._2
463+ let bh = bf(au)
464+ let cu = if (if (bm(bh, at))
465+ then (aU == bv)
466+ else false)
467+ then bt(bh, at)
468+ else nil
469+ let cv = if ((aU == bv))
470+ then invoke(ba, "onStakedVoteUpdate", [au, at, false], nil)
471+ else unit
472+ if ((cv == cv))
473+ then {
474+ let cw = E(this, ax(au, at))
475+ let cg = bW(au, at, bA, 0)._1
476+ let cx = (cg - cw)
477+ let cy = true
478+ let cz = if ((cx > h))
479+ then invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
480+ else unit
481+ if ((cz == cz))
482+ then if ((aU > bv))
483+ then throw(((((((("passed amount=" + toString(aU)) + " is greater than available=") + toString(bv)) + ". lpAssetId=") + au) + ". stakedByUserKEY=") + ca))
484+ else (([IntegerEntry(ca, (bv - aU)), IntegerEntry(bC, (bD - aU)), ScriptTransfer(cs, aU, aC), aV("unstake", at, au, aU, cn.transactionId)] ++ ct) ++ cu)
485+ else throw("Strict value is not equal to itself.")
486+ }
487+ else throw("Strict value is not equal to itself.")
488+ }
489+
490+
491+@Callable(cn)
492+func constructor (cA) = {
493+ let cB = co(cn)
494+ if ((cB == cB))
495+ then [StringEntry(M(), cA)]
451496 else throw("Strict value is not equal to itself.")
452497 }
453498
454499
455500
456-@Callable(cj)
457-func constructorV2 (co) = {
458- let cp = [ck(cj), if ((addressFromString(co) != unit))
501+@Callable(cn)
502+func constructorV2 (cC) = {
503+ let cD = [co(cn), if ((addressFromString(cC) != unit))
459504 then true
460505 else "invalid voting emission contract address"]
461- if ((cp == cp))
462- then [StringEntry(K(), co)]
506+ if ((cD == cD))
507+ then [StringEntry(N(), cC)]
463508 else throw("Strict value is not equal to itself.")
464509 }
465510
466511
467512
468-@Callable(cj)
469-func setManager (cq) = {
470- let cn = ck(cj)
471- if ((cn == cn))
513+@Callable(cn)
514+func setManager (cE) = {
515+ let cB = co(cn)
516+ if ((cB == cB))
472517 then {
473- let cr = fromBase58String(cq)
474- if ((cr == cr))
475- then [StringEntry(U(), cq)]
518+ let cF = fromBase58String(cE)
519+ if ((cF == cF))
520+ then [StringEntry(X(), cE)]
476521 else throw("Strict value is not equal to itself.")
477522 }
478523 else throw("Strict value is not equal to itself.")
479524 }
480525
481526
482527
483-@Callable(cj)
528+@Callable(cn)
484529 func confirmManager () = {
485- let cs = cg()
486- let ct = if (isDefined(cs))
530+ let cG = ck()
531+ let cH = if (isDefined(cG))
487532 then true
488533 else throw("No pending manager")
489- if ((ct == ct))
534+ if ((cH == cH))
490535 then {
491- let cu = if ((cj.callerPublicKey == value(cs)))
536+ let cI = if ((cn.callerPublicKey == value(cG)))
492537 then true
493538 else throw("You are not pending manager")
494- if ((cu == cu))
495- then [StringEntry(T(), toBase58String(value(cs))), DeleteEntry(U())]
539+ if ((cI == cI))
540+ then [StringEntry(W(), toBase58String(value(cG))), DeleteEntry(X())]
496541 else throw("Strict value is not equal to itself.")
497542 }
498543 else throw("Strict value is not equal to itself.")
499544 }
500545
501546
502547
503-@Callable(cj)
504-func stake () = if ((size(cj.payments) != 1))
548+@Callable(cn)
549+func stake () = if ((size(cn.payments) != 1))
505550 then throw("invalid payment - exact one payment must be attached")
506551 else {
507- let cv = cj.payments[0]
508- let az = value(cv.assetId)
509- let ar = toBase58String(az)
510- let aR = cv.amount
511- let bw = valueOrErrorMessage(getString(aV, X(ar)), ("unsupported lp asset " + ar))
512- let cw = toString(cj.caller)
513- let aq = if ((cw == bw))
514- then toString(cj.originCaller)
515- else cw
516- let bW = ap(aq, ar)
517- let by = as(ar)
518- let br = ax(bW)
519- let cx = if ((br == 0))
520- then invoke(aX, "onStakedVoteUpdate", [ar, aq, true], nil)
552+ let cJ = cn.payments[0]
553+ let aC = value(cJ.assetId)
554+ let au = toBase58String(aC)
555+ let aU = cJ.amount
556+ let bA = valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au))
557+ let cK = toString(cn.caller)
558+ let at = if ((cK == bA))
559+ then toString(cn.originCaller)
560+ else cK
561+ let ca = as(at, au)
562+ let bC = av(au)
563+ let bv = aA(ca)
564+ let cv = if ((bv == 0))
565+ then invoke(ba, "onStakedVoteUpdate", [au, at, true], nil)
521566 else unit
522- if ((cx == cx))
567+ if ((cv == cv))
523568 then {
524- let bz = ax(by)
525- let cy = bS(ar, aq, bw, aR)
526- let cc = cy._1
527- let cz = cy._2
528- let bR = cy._3
529- let bd = bb(ar)
530- let cA = if (bi(bd, aq))
569+ let bD = aA(bC)
570+ let cL = bW(au, at, bA, aU)
571+ let cg = cL._1
572+ let ct = cL._2
573+ let bV = cL._3
574+ let bh = bf(au)
575+ let cu = if (bm(bh, at))
531576 then nil
532- else bm(bd, aq)
533- (([IntegerEntry(bW, (br + aR)), IntegerEntry(by, (bz + aR)), aS("stake", aq, ar, aR, cj.transactionId)] ++ cz) ++ cA)
577+ else bq(bh, at)
578+ (([IntegerEntry(ca, (bv + aU)), IntegerEntry(bC, (bD + aU)), aV("stake", at, au, aU, cn.transactionId)] ++ ct) ++ cu)
534579 }
535580 else throw("Strict value is not equal to itself.")
536581 }
537582
538583
539584
540-@Callable(cj)
541-func unstake (ar,aR) = {
542- let az = fromBase58String(ar)
543- let bw = valueOrErrorMessage(getString(aV, X(ar)), ("unsupported lp asset " + ar))
544- let cB = valueOrElse(getString(addressFromStringValue(bw), W()), bw)
545- let cw = toString(cj.caller)
546- let aq = if (if ((cw == bw))
585+@Callable(cn)
586+func unstake (au,aU) = {
587+ let aC = fromBase58String(au)
588+ let bA = valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au))
589+ let cr = addressFromStringValue(bA)
590+ let cM = valueOrElse(getString(cr, Z()), bA)
591+ let cK = toString(cn.caller)
592+ let aE = if (if ((cK == bA))
547593 then true
548- else (cw == cB))
549- then toString(cj.originCaller)
550- else cw
551- let bW = ap(aq, ar)
552- let by = as(ar)
553- let br = ax(bW)
554- let bz = ax(by)
555- let cz = bS(ar, aq, bw, -(aR))._2
556- let bd = bb(ar)
557- let cA = if (if (bi(bd, aq))
558- then (aR == br)
559- else false)
560- then bp(bd, aq)
561- else nil
562- let cx = if ((aR == br))
563- then invoke(aX, "onStakedVoteUpdate", [ar, aq, false], nil)
564- else unit
565- if ((cx == cx))
566- then {
567- let cC = B(this, au(ar, aq))
568- let cD = w(aV, aa(ar))
569- let cc = bS(ar, aq, cD, 0)._1
570- let cE = (cc - cC)
571- let cF = if ((cE > h))
572- then invoke(this, "claimWxINTERNAL", [ar, aq], nil)
573- else unit
574- if ((cF == cF))
575- then if ((aR > br))
576- then throw(((((((("passed amount=" + toString(aR)) + " is greater than available=") + toString(br)) + ". lpAssetId=") + ar) + ". stakedByUserKEY=") + bW))
577- else (([IntegerEntry(bW, (br - aR)), IntegerEntry(by, (bz - aR)), ScriptTransfer(cj.caller, aR, az), aS("unstake", aq, ar, aR, cj.transactionId)] ++ cz) ++ cA)
578- else throw("Strict value is not equal to itself.")
579- }
594+ else (cK == cM))
595+ then cn.originCaller
596+ else cn.caller
597+ let cs = cn.caller
598+ cq(cn, aC, cr, aE, cs, aU)
599+ }
600+
601+
602+
603+@Callable(cn)
604+func unstakeINTERNAL (aC,aU,aE,cs) = {
605+ let au = toBase58String(aC)
606+ let cr = addressFromStringValue(valueOrErrorMessage(getString(aY, aa(au)), ("unsupported lp asset " + au)))
607+ let cB = if ((cn.caller == cr))
608+ then true
609+ else cl
610+ if ((cB == cB))
611+ then cq(cn, aC, cr, Address(aE), Address(cs), aU)
580612 else throw("Strict value is not equal to itself.")
581613 }
582614
583615
584616
585-@Callable(cj)
586-func claimWx (ar) = {
587- let aq = toString(cj.caller)
588- let cG = invoke(this, "claimWxINTERNAL", [ar, aq], nil)
589- $Tuple2(nil, cG)
617+@Callable(cn)
618+func claimWx (au) = {
619+ let at = toString(cn.caller)
620+ let cy = true
621+ let cN = invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
622+ $Tuple2(nil, cN)
590623 }
591624
592625
593626
594-@Callable(cj)
595-func claimWxINTERNAL (ar,aq) = {
596- let cn = ci(cj)
597- if ((cn == cn))
627+@Callable(cn)
628+func claimWxDoNotThrow (au) = {
629+ let at = toString(cn.caller)
630+ let cy = false
631+ let cN = invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
632+ $Tuple2(nil, cN)
633+ }
634+
635+
636+
637+@Callable(cn)
638+func claimWxINTERNAL (au,at,cy) = {
639+ let cB = cm(cn)
640+ if ((cB == cB))
598641 then {
599- let aB = valueOrErrorMessage(addressFromString(aq), "claimWxINTERNAL: invalid user address")
600- let bw = w(aV, aa(ar))
601- let cH = at(ar, aq)
602- let cI = aw(ar)
603- let cJ = au(ar, aq)
604- let cK = av(ar, aq)
605- let cL = B(this, cH)
606- let cC = B(this, cJ)
607- let cM = B(this, cK)
608- let cN = B(this, cI)
609- let cO = bS(ar, aq, bw, 0)
610- let cc = cO._1
611- let cz = cO._2
612- let bR = cO._3
613- let cE = max([(cc - cC), h])
614- if ((h >= cE))
615- then throw("nothing to claim")
642+ let aE = valueOrErrorMessage(addressFromString(at), "claimWxINTERNAL: invalid user address")
643+ let bA = z(aY, ad(au))
644+ let cO = aw(au, at)
645+ let cP = az(au)
646+ let cQ = ax(au, at)
647+ let cR = ay(au, at)
648+ let cS = E(this, cO)
649+ let cw = E(this, cQ)
650+ let cT = E(this, cR)
651+ let cU = E(this, cP)
652+ let cV = bW(au, at, bA, 0)
653+ let cg = cV._1
654+ let ct = cV._2
655+ let bV = cV._3
656+ let cx = max([(cg - cw), h])
657+ if ((h >= cx))
658+ then if (cy)
659+ then throw("nothing to claim")
660+ else $Tuple2(nil, 0)
616661 else {
617- let cP = max([n(j(invoke(aX, "claimWxBoost", [ar, aq], nil))[0]), 0])
618- let cQ = cE
619- let cR = min([(cQ * toBigInt((aY - 1))), toBigInt(cP)])
620- let cS = r(j(invoke(aW, "emit", [toInt(cQ)], nil))[0])
621- let cT = j(invoke(aW, "emit", [toInt(cR)], nil))
622- if ((cT == cT))
662+ let cW = max([q(m(invoke(ba, "claimWxBoost", [au, at], nil))[0]), 0])
663+ let cX = cx
664+ let cY = min([(cX * toBigInt((bb - 1))), toBigInt(cW)])
665+ let cZ = (cX + cY)
666+ let da = u(m(invoke(aZ, "emit", [toInt(cX)], nil))[0])
667+ let db = m(invoke(aZ, "emit", [toInt(cY)], nil))
668+ if ((db == db))
623669 then {
624- let cU = ((cL + cQ) + cR)
625- let cV = (cC + cQ)
626- let cW = (cM + cR)
627- let cX = (cN + cE)
628-[StringEntry(cH, toString(cU)), StringEntry(cJ, toString(cV)), StringEntry(cK, toString(cW)), StringEntry(cI, toString(cX)), ScriptTransfer(aB, toInt(cQ), cS), ScriptTransfer(aB, toInt(cR), cS), aS("claim", aq, ar, toInt(cE), cj.transactionId)]
670+ let dc = ((cS + cX) + cY)
671+ let dd = (cw + cX)
672+ let de = (cT + cY)
673+ let df = (cU + cx)
674+ $Tuple2([StringEntry(cO, toString(dc)), StringEntry(cQ, toString(dd)), StringEntry(cR, toString(de)), StringEntry(cP, toString(df)), ScriptTransfer(aE, toInt(cX), da), ScriptTransfer(aE, toInt(cY), da), aV("claim", at, au, toInt(cx), cn.transactionId)], toInt(cZ))
629675 }
630676 else throw("Strict value is not equal to itself.")
631677 }
632678 }
633679 else throw("Strict value is not equal to itself.")
634680 }
635681
636682
637683
638-@Callable(cj)
639-func claimWxBulkInternalREADONLY (cY,cZ,aq,da) = if ((cY == size(cZ)))
640- then $Tuple2(nil, da)
684+@Callable(cn)
685+func claimWxBulkInternalREADONLY (dg,dh,at,di) = if ((dg == size(dh)))
686+ then $Tuple2(nil, di)
641687 else {
642- let az = cZ[cY]
643- let db = split({
644- let aZ = invoke(this, "claimWxREADONLY", [az, aq], nil)
645- if ($isInstanceOf(aZ, "String"))
646- then aZ
647- else throw(($getType(aZ) + " couldn't be cast to String"))
688+ let aC = dh[dg]
689+ let dj = split({
690+ let bc = invoke(this, "claimWxREADONLY", [aC, at], nil)
691+ if ($isInstanceOf(bc, "String"))
692+ then bc
693+ else throw(($getType(bc) + " couldn't be cast to String"))
648694 }, f)
649- let dc = db[3]
650- let dd = db[4]
651- let de = {
652- let aZ = invoke(aX, "getUserVoteFinalizedREADONLY", [az, aq], nil)
653- if ($isInstanceOf(aZ, "Int"))
654- then aZ
655- else throw(($getType(aZ) + " couldn't be cast to Int"))
695+ let dk = dj[3]
696+ let dl = dj[4]
697+ let dm = {
698+ let bc = invoke(ba, "getUserVoteFinalizedREADONLY", [aC, at], nil)
699+ if ($isInstanceOf(bc, "Int"))
700+ then bc
701+ else throw(($getType(bc) + " couldn't be cast to Int"))
656702 }
657- let df = (da :+ makeString(["%d%d%d", dc, dd, toString(de)], f))
658- let dg = {
659- let aZ = invoke(this, "claimWxBulkInternalREADONLY", [(cY + 1), cZ, aq, df], nil)
660- if ($isInstanceOf(aZ, "List[Any]"))
661- then aZ
662- else throw(($getType(aZ) + " couldn't be cast to List[Any]"))
703+ let dn = (di :+ makeString(["%d%d%d", dk, dl, toString(dm)], f))
704+ let do = {
705+ let bc = invoke(this, "claimWxBulkInternalREADONLY", [(dg + 1), dh, at, dn], nil)
706+ if ($isInstanceOf(bc, "List[Any]"))
707+ then bc
708+ else throw(($getType(bc) + " couldn't be cast to List[Any]"))
663709 }
664- if ((dg == dg))
665- then $Tuple2(nil, dg)
710+ if ((do == do))
711+ then $Tuple2(nil, do)
666712 else throw("Strict value is not equal to itself.")
667713 }
668714
669715
670716
671-@Callable(cj)
672-func claimWxBulkREADONLY (cZ,aq) = {
673- let df = invoke(this, "claimWxBulkInternalREADONLY", [0, cZ, aq, nil], nil)
674- $Tuple2(nil, df)
717+@Callable(cn)
718+func claimWxBulkREADONLY (dh,at) = {
719+ let dn = invoke(this, "claimWxBulkInternalREADONLY", [0, dh, at, nil], nil)
720+ $Tuple2(nil, dn)
675721 }
676722
677723
678724
679-@Callable(cj)
680-func claimWxREADONLY (ar,aq) = {
681- let bW = ap(aq, ar)
682- let by = as(ar)
683- let cH = at(ar, aq)
684- let cJ = au(ar, aq)
685- let br = ax(bW)
686- let bz = ax(by)
687- let cL = B(this, cH)
688- let cC = B(this, cJ)
689- let bw = w(aV, aa(ar))
690- let bB = getIntegerValue(aV, ab(bw))
691- let dh = A(aW, ak())
692- let bC = A(aW, am())
693- let di = if ((bC > height))
725+@Callable(cn)
726+func claimWxREADONLY (au,at) = {
727+ let ca = as(at, au)
728+ let bC = av(au)
729+ let cO = aw(au, at)
730+ let cQ = ax(au, at)
731+ let bv = aA(ca)
732+ let bD = aA(bC)
733+ let cS = E(this, cO)
734+ let cw = E(this, cQ)
735+ let bA = z(aY, ad(au))
736+ let bF = getIntegerValue(aY, ae(bA))
737+ let dp = D(aZ, an())
738+ let bG = D(aZ, ap())
739+ let dq = if ((bG > height))
694740 then 0
695- else (height - bC)
696- let dj = fraction((dh * di), bB, g)
697- let dk = fraction(dj, br, bz)
698- let dl = bS(ar, aq, bw, 0)
699- let cc = dl._1
700- let cz = dl._2
701- let bR = dl._3
702- let cE = max([(cc - cC), h])
703- let dm = j(invoke(aX, "claimWxBoostREADONLY", [ar, aq], nil))
704- let cP = max([n(dm[0]), 0])
705- let dn = p(dm[1])
706- let cQ = cE
707- let cR = min([(cQ * toBigInt((aY - 1))), toBigInt(cP)])
708- let do = (cQ + cR)
709- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", ar, aq, toString(do), toString(cL), toString(cQ), toString(cR), "soon"], f))
741+ else (height - bG)
742+ let dr = fraction((dp * dq), bF, g)
743+ let ds = fraction(dr, bv, bD)
744+ let dt = bW(au, at, bA, 0)
745+ let cg = dt._1
746+ let ct = dt._2
747+ let bV = dt._3
748+ let cx = max([(cg - cw), h])
749+ let du = m(invoke(ba, "claimWxBoostREADONLY", [au, at], nil))
750+ let cW = max([q(du[0]), 0])
751+ let dv = s(du[1])
752+ let cX = cx
753+ let cY = min([(cX * toBigInt((bb - 1))), toBigInt(cW)])
754+ let cZ = (cX + cY)
755+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", au, at, toString(cZ), toString(cS), toString(cX), toString(cY), "soon"], f))
710756 }
711757
712758
713759
714-@Callable(cj)
715-func usersListTraversal (az) = {
716- let cn = if ((toBase58String(cj.caller.bytes) == valueOrElse(getString(this, K()), "")))
760+@Callable(cn)
761+func stakedByUserREADONLY (au,at) = {
762+ let bv = valueOrElse(getInteger(as(at, au)), 0)
763+ $Tuple2(nil, bv)
764+ }
765+
766+
767+
768+@Callable(cn)
769+func usersListTraversal (aC) = {
770+ let cB = if ((toBase58String(cn.caller.bytes) == valueOrElse(getString(this, N()), "")))
717771 then true
718- else ck(cj)
719- if ((cn == cn))
772+ else co(cn)
773+ if ((cB == cB))
720774 then {
721- let bd = bb(az)
722- let dp = getString(ba(az))
723- let bj = getString(bc(bd))
724- let l = dp
725- if ($isInstanceOf(l, "Unit"))
775+ let bh = bf(aC)
776+ let dw = getString(be(aC))
777+ let bn = getString(bg(bh))
778+ let o = dw
779+ if ($isInstanceOf(o, "Unit"))
726780 then {
727- let dq = bj
728- if ($isInstanceOf(dq, "Unit"))
781+ let dx = bn
782+ if ($isInstanceOf(dx, "Unit"))
729783 then $Tuple2(nil, false)
730- else if ($isInstanceOf(dq, "String"))
784+ else if ($isInstanceOf(dx, "String"))
731785 then {
732- let dr = dq
733- $Tuple2([StringEntry(ba(az), dr)], true)
786+ let dy = dx
787+ $Tuple2([StringEntry(be(aC), dy)], true)
734788 }
735789 else throw("Match error")
736790 }
737- else if ($isInstanceOf(l, "String"))
791+ else if ($isInstanceOf(o, "String"))
738792 then {
739- let aB = l
740- let cC = B(this, au(az, aB))
741- let cD = w(aV, aa(az))
742- let cc = bS(az, aB, cD, 0)._1
743- let cE = (cc - cC)
744- let cF = if ((cE > h))
745- then invoke(this, "claimWxINTERNAL", [az, aB], nil)
793+ let aE = o
794+ let cw = E(this, ax(aC, aE))
795+ let cr = z(aY, ad(aC))
796+ let cg = bW(aC, aE, cr, 0)._1
797+ let cx = (cg - cw)
798+ let cy = true
799+ let cz = if ((cx > h))
800+ then invoke(this, "claimWxINTERNAL", [aC, aE, cy], nil)
746801 else unit
747- if ((cF == cF))
802+ if ((cz == cz))
748803 then {
749- let ds = getString(bh(bd, aB))
750- let dq = ds
751- if ($isInstanceOf(dq, "Unit"))
752- then $Tuple2([DeleteEntry(ba(az))], false)
753- else if ($isInstanceOf(dq, "String"))
804+ let dz = getString(bl(bh, aE))
805+ let dx = dz
806+ if ($isInstanceOf(dx, "Unit"))
807+ then $Tuple2([DeleteEntry(be(aC))], false)
808+ else if ($isInstanceOf(dx, "String"))
754809 then {
755- let dt = dq
756- $Tuple2([StringEntry(ba(az), dt)], true)
810+ let dA = dx
811+ $Tuple2([StringEntry(be(aC), dA)], true)
757812 }
758813 else throw("Match error")
759814 }
760815 else throw("Strict value is not equal to itself.")
761816 }
762817 else throw("Match error")
763818 }
764819 else throw("Strict value is not equal to itself.")
765820 }
766821
767822
768823
769-@Callable(cj)
770-func onModifyWeight (ar,bw) = if ((cj.caller != aV))
824+@Callable(cn)
825+func onModifyWeight (au,bA) = if ((cn.caller != aY))
771826 then throw("permissions denied")
772827 else {
773- let du = bv(ar, bw, 0)
774- let bt = du._1
775- let bU = du._2
776- let bV = du._3
777- bU
828+ let dB = bz(au, bA, 0)
829+ let bx = dB._1
830+ let bY = dB._2
831+ let bZ = dB._3
832+ bY
778833 }
779834
780835
781-@Verifier(dv)
782-func dw () = {
783- let dx = {
784- let l = cf()
785- if ($isInstanceOf(l, "ByteVector"))
836+@Verifier(dC)
837+func dD () = {
838+ let dE = {
839+ let o = cj()
840+ if ($isInstanceOf(o, "ByteVector"))
786841 then {
787- let cl = l
788- cl
842+ let cp = o
843+ cp
789844 }
790- else if ($isInstanceOf(l, "Unit"))
791- then dv.senderPublicKey
845+ else if ($isInstanceOf(o, "Unit"))
846+ then dC.senderPublicKey
792847 else throw("Match error")
793848 }
794- sigVerify(dv.bodyBytes, dv.proofs[0], dx)
849+ sigVerify(dC.bodyBytes, dC.proofs[0], dE)
795850 }
796851

github/deemru/w8io/fabc49c 
340.60 ms