tx · 81u6qPoJ8XVSpirSgLxZA66xiRiv5Q74QcSGGZWej4YY

3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz:  -0.02300000 Waves

2023.03.22 13:34 [2501115] smart account 3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz > SELF 0.00000000 Waves

{ "type": 13, "id": "81u6qPoJ8XVSpirSgLxZA66xiRiv5Q74QcSGGZWej4YY", "fee": 2300000, "feeAssetId": null, "timestamp": 1679481260570, "version": 2, "chainId": 84, "sender": "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz", "senderPublicKey": "D28XoueZWsMfm8Y5pa6C5ZFuYoWgre2Wm8tzJANJgMnq", "proofs": [ "4saU6TEe4ujXnwucCtXyNzKePHJMdfWaLAYF3HuPkpAUAUSsQRQwtueSKa5VKeJUAwGX7k2DLkJyEv6redMrBTD9" ], "script": "base64:BgKrIAgCEgMKAQgSAwoBCBIDCgEIEgASABIECgIIARIGCgQCAQICEgMKAQgSAwoBCBIFCgMICAQSBgoEARgIGBIECgIYCBIECgIICBIECgIICBIDCgEIEgQKAggIIgZTQ0FMRTgiBU1VTFQzIgVNVUxUOCIHU0NBTEUxOCIGTVVMVDE4IgNTRVAiDlBPT0xXRUlHSFRNVUxUIgp6ZXJvQmlnSW50IglvbmVCaWdJbnQiB3dyYXBFcnIiA21zZyIIdGhyb3dFcnIiCWFzQW55TGlzdCIDdmFsIgckbWF0Y2gwIgp2YWxBbnlMeXN0IgVhc0ludCIGdmFsSW50Ighhc1N0cmluZyIGdmFsU3RyIgxhc0J5dGVWZWN0b3IiBnZhbEJpbiIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbCIMZ2V0SW50T3JaZXJvIg9nZXRJbnRPckRlZmF1bHQiCmRlZmF1bHRWYWwiDGdldEludE9yRmFpbCIZZ2V0QmlnSW50RnJvbVN0cmluZ09yWmVybyIcZ2V0QmlnSW50RnJvbVN0cmluZ09yRGVmYXVsdCIBcyIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiD3Jlc3VsdFNjYWxlTXVsdCIRa2V5RmFjdG9yeUFkZHJlc3MiGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QiGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcCIZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcCIUSWR4RmFjdG9yeUNmZ0lkb0RhcHAiFUlkeEZhY3RvcnlDZmdUZWFtRGFwcCIZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcCIVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwIhlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwIg1rZXlGYWN0b3J5Q2ZnIhNrZXlNYW5hZ2VyUHVibGljS2V5IhprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleSIWa2V5U3RhYmxlUG9vbEFkZG9uQWRkciIMa2V5QWRkb25BZGRyIhprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZyIKbHBBc3NldFN0ciIQa2V5RmFjdG9yeUxwTGlzdCIma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MiFGtleUZhY3RvcnlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiCnJlYWRMcExpc3QiB2ZhY3RvcnkiFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIhhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwiCmZhY3RvcnlDZmciGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbCIXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwiHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudCIha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50IhVrZXlFbWlzc2lvblN0YXJ0QmxvY2siG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcyITa2V5RW1pc3Npb25FbmRCbG9jayIPa2V5U3Rha2VkQnlVc2VyIg51c2VyQWRkcmVzc1N0ciIMbHBBc3NldElkU3RyIg5rZXlTdGFrZWRUb3RhbCIQa2V5Q2xhaW1lZEJ5VXNlciIZa2V5Q2xhaW1lZEJ5VXNlck1pblJld2FyZCIba2V5Q2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkIg9rZXlDbGFpbWVkVG90YWwiCnJlYWRTdGFrZWQiFWtleUxhc3RUb3RhbExwQmFsYW5jZSIJbHBBc3NldElkIhRrZXlMYXN0VXNlckxwQmFsYW5jZSILdXNlckFkZHJlc3MiGWtleVRvdGFsTHBCYWxhbmNlSW50ZWdyYWwiGGtleVVzZXJMcEJhbGFuY2VJbnRlZ3JhbCIma2V5VG90YWxMcEJhbGFuY2VJbnRlZ3JhbExhc3RVcGRIZWlnaHQiJWtleVVzZXJMcEJhbGFuY2VJbnRlZ3JhbExhc3RVcGRIZWlnaHQiEmtleVd4UGVyTHBJbnRlZ3JhbCIfa2V5V3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodCIQa2V5V3hUb0NsYWltVXNlciIja2V5V3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHQiCmtleVd4UGVyTHAiDWtleVd4UGVyTHBYMTgiGmtleVd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0IhlrZXlPcGVyYXRpb25IaXN0b3J5UmVjb3JkIgR0eXBlIgZ0eElkNTgiE2Zvcm1hdEhpc3RvcnlSZWNvcmQiBmFtb3VudCIVT3BlcmF0aW9uSGlzdG9yeUVudHJ5IgR0eElkIg5mYWN0b3J5QWRkcmVzcyIPZmFjdG9yeUNvbnRyYWN0IhBlbWlzc2lvbkNvbnRyYWN0IhBib29zdGluZ0NvbnRyYWN0Igpib29zdENvZWZmIgFAIhZscFN0YWtpbmdQb29sc0NvbnRyYWN0IgtrZXlOZXh0VXNlciIQZ2V0VXNlcnNMaXN0TmFtZSILa2V5TGlzdEhlYWQiCGxpc3ROYW1lIgtrZXlMaXN0U2l6ZSILa2V5TGlzdFByZXYiAmlkIgtrZXlMaXN0TmV4dCIMY29udGFpbnNOb2RlIgpoZWFkT3JVbml0IgpwcmV2T3JVbml0IgpuZXh0T3JVbml0IhFpbnNlcnROb2RlQWN0aW9ucyIIbGlzdFNpemUiCWNoZWNrTm9kZSIRZGVsZXRlTm9kZUFjdGlvbnMiG2NhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdCIMc3Rha2VkQnlVc2VyIiZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybyISd3hQZXJMcEludGVncmFsTmV3Ihp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdEtFWSIUcmVmcmVzaFBvb2xJTlRFR1JBTFMiDnBvb2xBZGRyZXNzU3RyIg1scERlbHRhQW1vdW50Ig5zdGFrZWRUb3RhbEtFWSILc3Rha2VkVG90YWwiEm5vblplcm9TdGFrZWRUb3RhbCIKcG9vbFdlaWdodCISZW1pc3Npb25TdGFydEJsb2NrIhR3eEVtaXNzaW9uUGVyQmxvY2tYMyIYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzIhJ3eFBlckxwSW50ZWdyYWxLRVkiH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHRLRVkiCnd4UGVyTHBLRVkiHHd4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHQiD3d4UGVyTHBJbnRlZ3JhbCIPd3hQZXJMcE9yWmVyb1gzIgJkaCIJd3hQZXJMcFgzIg5zdGFrZWRUb3RhbE5ldyIVbm9uWmVyb1N0YWtlZFRvdGFsTmV3Igx3eFBlckxwWDNOZXciH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHROZXciBWRlYnVnIhByZWZyZXNoSU5URUdSQUxTIg0kdDAxNDc2MjE0ODg0IhFwb29sSW50ZWdyYWxTVEFURSIJcG9vbERFQlVHIg9zdGFrZWRCeVVzZXJLRVkiEHd4VG9DbGFpbVVzZXJLRVkiI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0S0VZIg13eFRvQ2xhaW1Vc2VyIhd3eFBlckxwSW50ZWdyYWxVc2VyTGFzdCIGTVVMVDExIhB3eFRvQ2xhaW1Vc2VyTmV3Ihp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdE5ldyIjd3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHROZXciFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0IhVwZXJtaXNzaW9uRGVuaWVkRXJyb3IiCG11c3RUaGlzIgFpIgttdXN0TWFuYWdlciICcGsiDnVuc3Rha2VBY3Rpb25zIgtwb29sQWRkcmVzcyIXbHBBc3NldFJlY2lwaWVudEFkZHJlc3MiDWludGVncmFsU1RBVEUiC2xpc3RBY3Rpb25zIhFyZWZyZXNoU3Rha2VkVm90ZSIWY2xhaW1lZEJ5VXNlck1pblJld2FyZCIQYXZhaWxhYmxlVG9DbGFpbSIVdGhyb3dJZk5vdGhpbmdUb0NsYWltIgFyIhFmYWN0b3J5QWRkcmVzc1N0ciILY2hlY2tDYWxsZXIiFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QiBWNoZWtzIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iA3BtdCIJY2FsbGVyU3RyIg0kdDAyMTYwNjIxNzIzIglwb29sQWRkb24iBnJlc3VsdCIQY2xhaW1lZEJ5VXNlcktFWSIPY2xhaW1lZFRvdGFsS0VZIhljbGFpbWVkQnlVc2VyTWluUmV3YXJkS0VZIhtjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmRLRVkiDWNsYWltZWRCeVVzZXIiGGNsYWltZWRCeVVzZXJCb29zdFJld2FyZCIMY2xhaW1lZFRvdGFsIg0kdDAyNTEwOTI1MjIxIhJ3eEFtb3VudEJvb3N0VG90YWwiDW1pblJld2FyZFBhcnQiD2Jvb3N0UmV3YXJkUGFydCILdG90YWxSZXdhcmQiCXd4QXNzZXRJZCIJZW1pdEJvb3N0IhJjbGFpbWVkQnlVc2VyVmFsdWUiHmNsYWltZWRCeVVzZXJNaW5SZXdhcmRQbHVzUGFydCIrY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkUGx1c0Jvb3N0UmV3YXJkUGFydCIgY2xhaW1lZFRvdGFsUGx1c0F2YWlsYWJsZVRvQ2xhaW0iC2N1cnJlbnRJdGVyIgpscEFzc2V0SWRzIgZyZXNBY2MiBGluZm8iCXVuY2xhaW1lZCIHY2xhaW1lZCIRdXNlclZvdGVGaW5hbGl6ZWQiA3JlcyIDaW52IhJ3eEVtaXNzaW9uUGVyQmxvY2siDHBhc3NlZEJsb2NrcyIOcG9vbFd4RW1pc3Npb24iDHVzZXJXeFJld2FyZCINJHQwMjkyNjkyOTM4MSIOYm9vc3RJbnZSZXN1bHQiCmJvb3N0RGVidWciCnVzZXJPclVuaXQiByRtYXRjaDEiBGhlYWQiDm5leHRVc2VyT3JVbml0IghuZXh0VXNlciINJHQwMzIwMDIzMjExMiICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5ZAABYQAIAAFiAOgHAAFjAIDC1y8AAWQAEgABZQkAtgIBAICAkLu61q3wDQABZgICX18AAWcFAWMAAWgJALYCAQAAAAFpCQC2AgEAAQEBagEBawkAuQkCCQDMCAICDXN0YWtpbmcucmlkZToJAMwIAgkApQgBBQR0aGlzCQDMCAIFAWsFA25pbAIBIAEBbAEBawkAAgEJAQFqAQUBawEBbQEBbgQBbwUBbgMJAAECBQFvAglMaXN0W0FueV0EAXAFAW8FAXAJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BAXEBAW4EAW8FAW4DCQABAgUBbwIDSW50BAFyBQFvBQFyCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQFzAQFuBAFvBQFuAwkAAQIFAW8CBlN0cmluZwQBdAUBbwUBdAkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEBdQEBbgQBbwUBbgMJAAECBQFvAgpCeXRlVmVjdG9yBAF2BQFvBQF2CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQF3AgF4AXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQF4BQF5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQF5Ag8gaXMgbm90IGRlZmluZWQBAXoCAXgBeQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAXgFAXkJAKwCAgkArAICCQCsAgIJAKwCAgIKbWFuZGF0b3J5IAkApQgBBQF4AgEuBQF5Ag8gaXMgbm90IGRlZmluZWQBAUECAXgBeQkBC3ZhbHVlT3JFbHNlAgkAmggCBQF4BQF5AAABAUIDAXgBeQFDCQELdmFsdWVPckVsc2UCCQCaCAIFAXgFAXkFAUMBAUQCAXgBeQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAXgFAXkJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAXkCDyBpcyBub3QgZGVmaW5lZAEBRQIBeAF5CQEFdmFsdWUBCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUBeAUBeQIBMAEBRgMBeAF5AUMEAW8JAJ0IAgUBeAUBeQMJAAECBQFvAgZTdHJpbmcEAUcFAW8JAQV2YWx1ZQEJAKgDAQUBRwMJAAECBQFvAgRVbml0BQFDCQACAQILTWF0Y2ggZXJyb3IBAUgCAUkBSgkAvAIDCQC2AgEFAUkFAWUJALYCAQUBSgEBSwIBbgFMCQCgAwEJALwCAwUBbgkAtgIBBQFMBQFlAQFNAAIcJXMlc19fY29uZmlnX19mYWN0b3J5QWRkcmVzcwEBTgACGiVzX192b3RpbmdFbWlzc2lvbkNvbnRyYWN0AAFPAAEAAVAAAgABUQADAAFSAAQAAVMABQABVAAGAAFVAAcBAVYAAhElc19fZmFjdG9yeUNvbmZpZwEBVwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFYAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFZAAIXJXNfX3N0YWJsZVBvb2xBZGRvbkFkZHIBAVoAAg0lc19fYWRkb25BZGRyAQJhYQECYWIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYWIJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWYBAmFjAAIQJXNfX2xwVG9rZW5zTGlzdAECYWQBAmFiCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFiCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQFmAQJhZQECYWYJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUCYWYFA25pbAUBZgECYWcBAmFoCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUCYWgJAQJhYwACAAUBZgECYWkBAmFoCQC1CQIJAQF6AgUCYWgJAQFWAAUBZgECYWoBAmFrCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFrBQFQAQJhbAECYWsJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWsFAVMBAmFtAQJhawkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhawUBTwECYW4AAhslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBAmFvAAIeJXMlc19fcmF0ZVBlckJsb2NrTWF4X19jdXJyZW50AQJhcAACGiVzJXNfX2VtaXNzaW9uX19zdGFydEJsb2NrAQJhcQACGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgECYXIAAhglcyVzX19lbWlzc2lvbl9fZW5kQmxvY2sBAmFzAgJhdAJhdQkAuQkCCQDMCAICDiVzJXMlc19fc3Rha2VkCQDMCAIFAmF0CQDMCAIFAmF1BQNuaWwFAWYBAmF2AQJhdQkArAICAhclcyVzJXNfX3N0YWtlZF9fdG90YWxfXwUCYXUBAmF3AgJhdQJhdAkAuQkCCQDMCAICDyVzJXMlc19fY2xhaW1lZAkAzAgCBQJhdAkAzAgCBQJhdQUDbmlsBQFmAQJheAICYXUCYXQJALkJAgkAzAgCAhglcyVzJXNfX2NsYWltZWRNaW5SZXdhcmQJAMwIAgUCYXQJAMwIAgUCYXUFA25pbAUBZgECYXkCAmF1AmF0CQC5CQIJAMwIAgIaJXMlcyVzX19jbGFpbWVkQm9vc3RSZXdhcmQJAMwIAgUCYXQJAMwIAgUCYXUFA25pbAUBZgECYXoBAmF1CQC5CQIJAMwIAgIWJXMlcyVzX19jbGFpbWVkX190b3RhbAkAzAgCBQJhdQUDbmlsBQFmAQJhQQEBeQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQF5AAABAmFCAQJhQwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQwkAzAgCAgV0b3RhbAkAzAgCAgNiYWwFA25pbAUBZgECYUQCAmFDAmFFCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFDCQDMCAIFAmFFCQDMCAICA2JhbAUDbmlsBQFmAQJhRgECYUMJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYUMJAMwIAgIFdG90YWwJAMwIAgIGYmFsSU5UBQNuaWwFAWYBAmFHAgJhQwJhRQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQwkAzAgCBQJhRQkAzAgCAgZiYWxJTlQFA25pbAUBZgECYUgBAmFDCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFDCQDMCAICBXRvdGFsCQDMCAICB2xhc3RVcGQFA25pbAUBZgECYUkCAmFDAmFFCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFDCQDMCAIFAmFFCQDMCAICB2xhc3RVcGQFA25pbAUBZgECYUoBAmFDCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUMJAMwIAgIGY29tbW9uCQDMCAICBWxwSW50BQNuaWwFAWYBAmFLAQJhQwkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmFDCQDMCAICBmNvbW1vbgkAzAgCAgZscEludEgFA25pbAUBZgECYUwCAmFDAmFFCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUMJAMwIAgUCYUUJAMwIAgIFbHBJbnQFA25pbAUBZgECYU0CAmFDAmFFCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUMJAMwIAgUCYUUJAMwIAgIGbHBJbnRIBQNuaWwFAWYBAmFOAQJhQwkAuQkCCQDMCAICAiVzCQDMCAIFAmFDCQDMCAICB3d4UGVyTHAFA25pbAUBZgECYU8BAmFDCQC5CQIJAMwIAgICJXMJAMwIAgUCYUMJAMwIAgIKd3hQZXJMcFgxOAUDbmlsBQFmAQJhUAICYUMCYUUJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJhQwkAzAgCBQJhRQkAzAgCAgV1SW50TAUDbmlsBQFmAQJhUQMCYVICYUUCYVMJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQJhUgkAzAgCBQJhRQkAzAgCBQJhUwUDbmlsBQFmAQJhVAQCYUUCYUMCYVICYVUJALkJAgkAzAgCAgwlcyVzJXMlZCVkJWQJAMwIAgUCYUUJAMwIAgUCYUMJAMwIAgUCYVIJAMwIAgkApAMBBQZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFAmFVBQNuaWwFAWYBAmFWBQJhUgJhRQJhQwJhVQJhVwkBC1N0cmluZ0VudHJ5AgkBAmFRAwUCYVIFAmFFCQDYBAEFAmFXCQECYVQEBQJhRQUCYUMFAmFSBQJhVQACYVgJAQF3AgUEdGhpcwkBAU0AAAJhWQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYVgAAmFrCQECYWkBBQJhWQACYVoJAQJhbAEFAmFrAAJiYQkBAmFqAQUCYWsAAmJiCgACYmMJAPwHBAUCYVoCFWdldEJvb3N0Q29lZmZSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYmMCA0ludAUCYmMJAAIBCQCsAgIJAAMBBQJiYwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJiZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQC5CQIJAMwIAgICJXMJAMwIAgIWbHBTdGFraW5nUG9vbHNDb250cmFjdAUDbmlsBQFmCQEBagECLmxwX3N0YWtpbmdfcG9vbHMgY29udHJhY3QgYWRkcmVzcyBpcyB1bmRlZmluZWQJAQFqAQIpaW52YWxpZCBscF9zdGFraW5nX3Bvb2xzIGNvbnRyYWN0IGFkZHJlc3MBAmJlAQJhQwkAuQkCCQDMCAICBCVzJXMJAMwIAgUCYUMJAMwIAgIIbmV4dFVzZXIFA25pbAUBZgECYmYBAmFDCQC5CQIJAMwIAgIFdXNlcnMJAMwIAgUCYUMFA25pbAUBZgECYmcBAmJoCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmJoCQDMCAICBGhlYWQFA25pbAUBZgECYmkBAmJoCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmJoCQDMCAICBHNpemUFA25pbAUBZgECYmoCAmJoAmJrCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYmgJAMwIAgUCYmsJAMwIAgIEcHJldgUDbmlsBQFmAQJibAICYmgCYmsJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJiaAkAzAgCBQJiawkAzAgCAgRuZXh0BQNuaWwFAWYBAmJtAgJiaAJiawQCYm4JAJ0IAgUEdGhpcwkBAmJnAQUCYmgEAmJvCQCdCAIFBHRoaXMJAQJiagIFAmJoBQJiawQCYnAJAJ0IAgUEdGhpcwkBAmJsAgUCYmgFAmJrAwMJAAACBQJiawkBC3ZhbHVlT3JFbHNlAgUCYm4CAAYJAQIhPQIFAmJvBQR1bml0BgkBAiE9AgUCYnAFBHVuaXQBAmJxAgJiaAJiawQCYm4JAJ0IAgUEdGhpcwkBAmJnAQUCYmgEAmJyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiaQEFAmJoAAAEAmJzAwkBASEBCQECYm0CBQJiaAUCYmsGCQACAQILTm9kZSBleGlzdHMDCQAAAgUCYnMFAmJzCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJpAQUCYmgJAGQCBQJicgABBQNuaWwDCQECIT0CBQJibgUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQECYmwCBQJiaAUCYmsJAQV2YWx1ZQEFAmJuCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiagIFAmJoCQEFdmFsdWUBBQJibgUCYmsFA25pbAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZwEFAmJoBQJiawUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJidAICYmgCYmsEAmJuCQCdCAIFBHRoaXMJAQJiZwEFAmJoBAJicgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYmkBBQJiaAAABAJibwkAnQgCBQR0aGlzCQECYmoCBQJiaAUCYmsEAmJwCQCdCAIFBHRoaXMJAQJibAIFAmJoBQJiawkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYmkBBQJiaAkAZQIFAmJyAAEFA25pbAMDCQECIT0CBQJibwUEdW5pdAkBAiE9AgUCYnAFBHVuaXQHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJibAIFAmJoCQEFdmFsdWUBBQJibwkBBXZhbHVlAQUCYnAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJqAgUCYmgJAQV2YWx1ZQEFAmJwCQEFdmFsdWUBBQJibwkAzAgCCQELRGVsZXRlRW50cnkBCQECYmoCBQJiaAUCYmsJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJsAgUCYmgFAmJrBQNuaWwDCQECIT0CBQJicAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQECYmcBBQJiaAkBBXZhbHVlAQUCYnAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJsAgUCYmgFAmJrCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiagIFAmJoCQEFdmFsdWUBBQJicAUDbmlsAwkBAiE9AgUCYm8FBHVuaXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJqAgUCYmgFAmJrCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJibAIFAmJoCQEFdmFsdWUBBQJibwUDbmlsAwkAAAIFAmJrCQELdmFsdWVPckVsc2UCBQJibgIACQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiZwEFAmJoBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICAg5pbnZhbGlkIG5vZGU6IAUCYmgCAS4FAmJrAQJidQQCYnYCYncCYngCYnkDAwkAAAIFAmJ3BQFoCQC/AgIFAmJ2BQFoBwUBaAMJAAACBQJidgUBaAUCYngDAwkAvwICBQJidwUBaAkAvwICBQJidgUBaAcJAQV2YWx1ZQEJAKgDAQkBAXcCBQR0aGlzBQJieQkAAgECLWNhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdDogdW5leHBlY3RlZCBzdGF0ZQECYnoDAmF1AmJBAmJCBAJiQwkBAmF2AQUCYXUEAmJECQC2AgEJAQJhQQEFAmJDBAJiRQMJAAACBQJiRAUBaAUBaQUCYkQEAmJGCQERQGV4dHJOYXRpdmUoMTA1MCkCBQJhWQkBAmFlAQUCYkEEAmJHCQEBRAIFAmFaCQECYXAABAJiSAkAaAIJAQFEAgUCYVoJAQJhbgAFAWIEAmJJCQBrAwUCYkgFAmJGCQBoAgUBZwUCYmIEAmJKCQECYUoBBQJhdQQCYksJAQJhSwEFAmF1BAJiTAkBAmFOAQUCYXUEAmJNCQEBQgMFBHRoaXMFAmJLBQJiRwQCYk4JAQFFAgUEdGhpcwUCYkoEAmJPAAAEAmJQCQCWAwEJAMwIAgkAZQIFBmhlaWdodAUCYk0JAMwIAgAABQNuaWwEAmJRAwkBAiE9AgUCYk8AAAkAtgIBBQJiTwkAvAIDCQC2AgEFAmJJCQC2AgEFAWMFAmJFBAJiUgkAtwICBQJiRAkAtgIBBQJiQgQCYlMDCQAAAgUCYlIFAWgFAWkFAmJSBAJieAkAtwICBQJiTgkAuQICBQJiUQkAtgIBBQJiUAQCYlQJALoCAgkAtgIBBQJiSQUCYlMEAmJVBQZoZWlnaHQEAmJWCQC5CQIJAMwIAgkApgMBBQJieAkAzAgCCQCkAwEFAmJQCQDMCAIJAKYDAQUCYlEJAMwIAgkApgMBBQJiRAkAzAgCCQCkAwEFAmJJCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiRgUDbmlsAgI6OgkAlQoDBQJieAkAzAgCCQELU3RyaW5nRW50cnkCBQJiSgkApgMBBQJieAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYksFAmJVCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmJMCQCmAwEFAmJUBQNuaWwFAmJWAQJiVwQCYXUCYXQCYkECYkIEAmJYCQECYnoDBQJhdQUCYkEFAmJCBAJieAgFAmJYAl8xBAJiWQgFAmJYAl8yBAJiWggFAmJYAl8zBAJjYQkBAmFzAgUCYXQFAmF1BAJidgkBAmFBAQUCY2EEAmNiCQECYUwCBQJhdQUCYXQEAmNjCQECYU0CBQJhdQUCYXQEAmJ5CQECYVACBQJhdQUCYXQEAmNkCQEBRQIFBHRoaXMFAmNiBAJidwkBAUECBQR0aGlzBQJjYwQCY2UJAQJidQQJALYCAQUCYnYJALYCAQUCYncFAmJ4BQJieQQCY2YJAGgCBQFjBQFiBAJjZwkAmAMBCQDMCAIJALcCAgUCY2QJALwCAwkAuAICBQJieAUCY2UJALYCAQUCYnYJALYCAQUCY2YJAMwIAgUBaAUDbmlsBAJjaAUCYngEAmNpBQZoZWlnaHQEAmJWCQC5CQIJAMwIAgkApgMBBQJjZAkAzAgCCQCmAwEFAmNlCQDMCAIJAKQDAQUCYnYJAMwIAgUCYloJAMwIAgkApAMBBQZoZWlnaHQFA25pbAICOjoJAJUKAwUCY2cJAM4IAgUCYlkJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY2IJAKYDAQUCY2cJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNjBQJjaQkAzAgCCQELU3RyaW5nRW50cnkCBQJieQkApgMBBQJjaAUDbmlsBQJiVgECY2oABAFvCQCiCAEJAQFXAAMJAAECBQFvAgZTdHJpbmcEAUcFAW8JANkEAQUBRwMJAAECBQFvAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmNrAAQBbwkAoggBCQEBWAADCQABAgUBbwIGU3RyaW5nBAFHBQFvCQDZBAEFAUcDCQABAgUBbwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJjbAkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJjbQECY24DCQAAAggFAmNuBmNhbGxlcgUEdGhpcwYFAmNsAQJjbwECY24EAW8JAQJjagADCQABAgUBbwIKQnl0ZVZlY3RvcgQCY3AFAW8DCQAAAggFAmNuD2NhbGxlclB1YmxpY0tleQUCY3AGBQJjbAMJAAECBQFvAgRVbml0AwkAAAIIBQJjbgZjYWxsZXIFBHRoaXMGBQJjbAkAAgECC01hdGNoIGVycm9yAQJjcQYCY24CYUMCY3ICYUUCY3MCYVUEAmF0CQClCAEFAmFFBAJhdQkA2AQBBQJhQwQCYkEJAKUIAQUCY3IEAmNhCQECYXMCBQJhdAUCYXUEAmJDCQECYXYBBQJhdQQCYnYJAQJhQQEFAmNhBAJiRAkBAmFBAQUCYkMEAmN0CAkBAmJXBAUCYXUFAmF0BQJiQQkBAS0BBQJhVQJfMgQCYmgJAQJiZgEFAmF1BAJjdQMDCQECYm0CBQJiaAUCYXQJAAACBQJhVQUCYnYHCQECYnQCBQJiaAUCYXQFA25pbAQCY3YDCQAAAgUCYVUFAmJ2CQD8BwQFAmJhAhJvblN0YWtlZFZvdGVVcGRhdGUJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgcFA25pbAUDbmlsBQR1bml0AwkAAAIFAmN2BQJjdgQCY3cJAQFFAgUEdGhpcwkBAmF4AgUCYXUFAmF0BAJjZwgJAQJiVwQFAmF1BQJhdAUCYkEAAAJfMQQCY3gJALgCAgUCY2cFAmN3BAJjeQYEAmN6AwkAvwICBQJjeAUBaAkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgUCY3kFA25pbAUDbmlsBQR1bml0AwkAAAIFAmN6BQJjegMJAGYCBQJhVQUCYnYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDnBhc3NlZCBhbW91bnQ9CQCkAwEFAmFVAhsgaXMgZ3JlYXRlciB0aGFuIGF2YWlsYWJsZT0JAKQDAQUCYnYCDC4gbHBBc3NldElkPQUCYXUCEi4gc3Rha2VkQnlVc2VyS0VZPQUCY2EJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjYQkAZQIFAmJ2BQJhVQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYkMJAGUCBQJiRAUCYVUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3MFAmFVBQJhQwkAzAgCCQECYVYFAgd1bnN0YWtlBQJhdAUCYXUFAmFVCAUCY24NdHJhbnNhY3Rpb25JZAUDbmlsBQJjdAUCY3UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4QAmNuAQtjb25zdHJ1Y3RvcgECY0EEAmNCCQECY28BBQJjbgMJAAACBQJjQgUCY0IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU0ABQJjQQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuAQ1jb25zdHJ1Y3RvclYyAQJjQwQCY0QJAMwIAgkBAmNvAQUCY24JAMwIAgMJAQIhPQIJAKYIAQUCY0MFBHVuaXQGAihpbnZhbGlkIHZvdGluZyBlbWlzc2lvbiBjb250cmFjdCBhZGRyZXNzBQNuaWwDCQAAAgUCY0QFAmNECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFOAAUCY0MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbgEKc2V0TWFuYWdlcgECY0UEAmNCCQECY28BBQJjbgMJAAACBQJjQgUCY0IEAmNGCQDZBAEFAmNFAwkAAAIFAmNGBQJjRgkAzAgCCQELU3RyaW5nRW50cnkCCQEBWAAFAmNFBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BDmNvbmZpcm1NYW5hZ2VyAAQCY0cJAQJjawAEAmNIAwkBCWlzRGVmaW5lZAEFAmNHBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJjSAUCY0gEAmNJAwkAAAIIBQJjbg9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmNHBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJjSQUCY0kJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcACQDYBAEJAQV2YWx1ZQEFAmNHCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFYAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuAQVzdGFrZQADCQECIT0CCQCQAwEIBQJjbghwYXltZW50cwABCQACAQI0aW52YWxpZCBwYXltZW50IC0gZXhhY3Qgb25lIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQCY0oJAJEDAggFAmNuCHBheW1lbnRzAAAEAmFDCQEFdmFsdWUBCAUCY0oHYXNzZXRJZAQCYXUJANgEAQUCYUMEAmFVCAUCY0oGYW1vdW50BAJiQQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFZCQECYWEBBQJhdQkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFAmF1BAJjSwkApQgBCAUCY24GY2FsbGVyBAJhdAMJAAACBQJjSwUCYkEJAKUIAQgFAmNuDG9yaWdpbkNhbGxlcgUCY0sEAmNhCQECYXMCBQJhdAUCYXUEAmJDCQECYXYBBQJhdQQCYnYJAQJhQQEFAmNhBAJjdgMJAAACBQJidgAACQD8BwQFAmJhAhJvblN0YWtlZFZvdGVVcGRhdGUJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgYFA25pbAUDbmlsBQR1bml0AwkAAAIFAmN2BQJjdgQCYkQJAQJhQQEFAmJDBAJjTAkBAmJXBAUCYXUFAmF0BQJiQQUCYVUEAmNnCAUCY0wCXzEEAmN0CAUCY0wCXzIEAmJWCAUCY0wCXzMEAmJoCQECYmYBBQJhdQQCY3UDCQECYm0CBQJiaAUCYXQFA25pbAkBAmJxAgUCYmgFAmF0CQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY2EJAGQCBQJidgUCYVUJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJDCQBkAgUCYkQFAmFVCQDMCAIJAQJhVgUCBXN0YWtlBQJhdAUCYXUFAmFVCAUCY24NdHJhbnNhY3Rpb25JZAUDbmlsBQJjdAUCY3UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BB3Vuc3Rha2UCAmF1AmFVBAJhQwkA2QQBBQJhdQQCYkEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhWQkBAmFhAQUCYXUJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJhdQQCY3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmJBBAJjTQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQJjcgkBAVoABQJiQQQCY0sJAKUIAQgFAmNuBmNhbGxlcgQCYUUDAwkAAAIFAmNLBQJiQQYJAAACBQJjSwUCY00IBQJjbgxvcmlnaW5DYWxsZXIIBQJjbgZjYWxsZXIEAmNzCAUCY24GY2FsbGVyCQECY3EGBQJjbgUCYUMFAmNyBQJhRQUCY3MFAmFVAmNuAQ91bnN0YWtlSU5URVJOQUwEAmFDAmFVAmFFAmNzBAJhdQkA2AQBBQJhQwQCY3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhWQkBAmFhAQUCYXUJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJhdQQCY0IDCQAAAggFAmNuBmNhbGxlcgUCY3IGBQJjbAMJAAACBQJjQgUCY0IJAQJjcQYFAmNuBQJhQwUCY3IJAQdBZGRyZXNzAQUCYUUJAQdBZGRyZXNzAQUCY3MFAmFVCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuAQdjbGFpbVd4AQJhdQQCYXQJAKUIAQgFAmNuBmNhbGxlcgQCY3kGBAJjTgkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgUCY3kFA25pbAUDbmlsCQCUCgIFA25pbAUCY04CY24BEWNsYWltV3hEb05vdFRocm93AQJhdQQCYXQJAKUIAQgFAmNuBmNhbGxlcgQCY3kHBAJjTgkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgUCY3kFA25pbAUDbmlsCQCUCgIFA25pbAUCY04CY24BD2NsYWltV3hJTlRFUk5BTAMCYXUCYXQCY3kEAmNCCQECY20BBQJjbgMJAAACBQJjQgUCY0IEAmFFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUCYXQCJWNsYWltV3hJTlRFUk5BTDogaW52YWxpZCB1c2VyIGFkZHJlc3MEAmJBCQEBegIFAmFZCQECYWQBBQJhdQQCY08JAQJhdwIFAmF1BQJhdAQCY1AJAQJhegEFAmF1BAJjUQkBAmF4AgUCYXUFAmF0BAJjUgkBAmF5AgUCYXUFAmF0BAJjUwkBAUUCBQR0aGlzBQJjTwQCY3cJAQFFAgUEdGhpcwUCY1EEAmNUCQEBRQIFBHRoaXMFAmNSBAJjVQkBAUUCBQR0aGlzBQJjUAQCY1YJAQJiVwQFAmF1BQJhdAUCYkEAAAQCY2cIBQJjVgJfMQQCY3QIBQJjVgJfMgQCYlYIBQJjVgJfMwQCY3gJAJgDAQkAzAgCCQC4AgIFAmNnBQJjdwkAzAgCBQFoBQNuaWwDCQDAAgIFAWgFAmN4AwUCY3kJAAIBAhBub3RoaW5nIHRvIGNsYWltCQCUCgIFA25pbAAABAJjVwkAlgMBCQDMCAIJAQFxAQkAkQMCCQEBbQEJAPwHBAUCYmECDGNsYWltV3hCb29zdAkAzAgCBQJhdQkAzAgCBQJhdAUDbmlsBQNuaWwAAAkAzAgCAAAFA25pbAQCY1gFAmN4BAJjWQkAmQMBCQDMCAIJALkCAgUCY1gJALYCAQkAZQIFAmJiAAEJAMwIAgkAtgIBBQJjVwUDbmlsBAJjWgkAtwICBQJjWAUCY1kEAmRhCQEBdQEJAJEDAgkBAW0BCQD8BwQFAmFaAgRlbWl0CQDMCAIJAKADAQUCY1gFA25pbAUDbmlsAAAEAmRiCQEBbQEJAPwHBAUCYVoCBGVtaXQJAMwIAgkAoAMBBQJjWQUDbmlsBQNuaWwDCQAAAgUCZGIFAmRiBAJkYwkAtwICCQC3AgIFAmNTBQJjWAUCY1kEAmRkCQC3AgIFAmN3BQJjWAQCZGUJALcCAgUCY1QFAmNZBAJkZgkAtwICBQJjVQUCY3gJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQJjTwkApgMBBQJkYwkAzAgCCQELU3RyaW5nRW50cnkCBQJjUQkApgMBBQJkZAkAzAgCCQELU3RyaW5nRW50cnkCBQJjUgkApgMBBQJkZQkAzAgCCQELU3RyaW5nRW50cnkCBQJjUAkApgMBBQJkZgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRQkAoAMBBQJjWAUCZGEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUJAKADAQUCY1kFAmRhCQDMCAIJAQJhVgUCBWNsYWltBQJhdAUCYXUJAKADAQUCY3gIBQJjbg10cmFuc2FjdGlvbklkBQNuaWwJAKADAQUCY1oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BG2NsYWltV3hCdWxrSW50ZXJuYWxSRUFET05MWQQCZGcCZGgCYXQCZGkDCQAAAgUCZGcJAJADAQUCZGgJAJQKAgUDbmlsBQJkaQQCYUMJAJEDAgUCZGgFAmRnBAJkagkAtQkCCgACYmMJAPwHBAUEdGhpcwIPY2xhaW1XeFJFQURPTkxZCQDMCAIFAmFDCQDMCAIFAmF0BQNuaWwFA25pbAMJAAECBQJiYwIGU3RyaW5nBQJiYwkAAgEJAKwCAgkAAwEFAmJjAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcFAWYEAmRrCQCRAwIFAmRqAAMEAmRsCQCRAwIFAmRqAAQEAmRtCgACYmMJAPwHBAUCYmECHGdldFVzZXJWb3RlRmluYWxpemVkUkVBRE9OTFkJAMwIAgUCYUMJAMwIAgUCYXQFA25pbAUDbmlsAwkAAQIFAmJjAgNJbnQFAmJjCQACAQkArAICCQADAQUCYmMCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCZG4JAM0IAgUCZGkJALkJAgkAzAgCAgYlZCVkJWQJAMwIAgUCZGsJAMwIAgUCZGwJAMwIAgkApAMBBQJkbQUDbmlsBQFmBAJkbwoAAmJjCQD8BwQFBHRoaXMCG2NsYWltV3hCdWxrSW50ZXJuYWxSRUFET05MWQkAzAgCCQBkAgUCZGcAAQkAzAgCBQJkaAkAzAgCBQJhdAkAzAgCBQJkbgUDbmlsBQNuaWwDCQABAgUCYmMCCUxpc3RbQW55XQUCYmMJAAIBCQCsAgIJAAMBBQJiYwIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFAmRvBQJkbwkAlAoCBQNuaWwFAmRvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuARNjbGFpbVd4QnVsa1JFQURPTkxZAgJkaAJhdAQCZG4JAPwHBAUEdGhpcwIbY2xhaW1XeEJ1bGtJbnRlcm5hbFJFQURPTkxZCQDMCAIAAAkAzAgCBQJkaAkAzAgCBQJhdAkAzAgCBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAUCZG4CY24BD2NsYWltV3hSRUFET05MWQICYXUCYXQEAmNhCQECYXMCBQJhdAUCYXUEAmJDCQECYXYBBQJhdQQCY08JAQJhdwIFAmF1BQJhdAQCY1EJAQJheAIFAmF1BQJhdAQCYnYJAQJhQQEFAmNhBAJiRAkBAmFBAQUCYkMEAmNTCQEBRQIFBHRoaXMFAmNPBAJjdwkBAUUCBQR0aGlzBQJjUQQCYkEJAQF6AgUCYVkJAQJhZAEFAmF1BAJiRgkBEUBleHRyTmF0aXZlKDEwNTApAgUCYVkJAQJhZQEFAmJBBAJkcAkBAUQCBQJhWgkBAmFuAAQCYkcJAQFEAgUCYVoJAQJhcAAEAmRxAwkAZgIFAmJHBQZoZWlnaHQAAAkAZQIFBmhlaWdodAUCYkcEAmRyCQBrAwkAaAIFAmRwBQJkcQUCYkYFAWcEAmRzCQBrAwUCZHIFAmJ2BQJiRAQCZHQJAQJiVwQFAmF1BQJhdAUCYkEAAAQCY2cIBQJkdAJfMQQCY3QIBQJkdAJfMgQCYlYIBQJkdAJfMwQCY3gJAJgDAQkAzAgCCQC4AgIFAmNnBQJjdwkAzAgCBQFoBQNuaWwEAmR1CQEBbQEJAPwHBAUCYmECFGNsYWltV3hCb29zdFJFQURPTkxZCQDMCAIFAmF1CQDMCAIFAmF0BQNuaWwFA25pbAQCY1cJAJYDAQkAzAgCCQEBcQEJAJEDAgUCZHUAAAkAzAgCAAAFA25pbAQCZHYJAQFzAQkAkQMCBQJkdQABBAJjWAUCY3gEAmNZCQCZAwEJAMwIAgkAuQICBQJjWAkAtgIBCQBlAgUCYmIAAQkAzAgCCQC2AgEFAmNXBQNuaWwEAmNaCQC3AgIFAmNYBQJjWQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lcyVzJWQlZCVkJWQlcwkAzAgCBQJhdQkAzAgCBQJhdAkAzAgCCQCmAwEFAmNaCQDMCAIJAKYDAQUCY1MJAMwIAgkApgMBBQJjWAkAzAgCCQCmAwEFAmNZCQDMCAICBHNvb24FA25pbAUBZgJjbgEUc3Rha2VkQnlVc2VyUkVBRE9OTFkCAmF1AmF0BAJidgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXMCBQJhdAUCYXUAAAkAlAoCBQNuaWwFAmJ2AmNuARJ1c2Vyc0xpc3RUcmF2ZXJzYWwBAmFDBAJjQgMJAAACCQDYBAEICAUCY24GY2FsbGVyBWJ5dGVzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQFOAAIABgkBAmNvAQUCY24DCQAAAgUCY0IFAmNCBAJiaAkBAmJmAQUCYUMEAmR3CQCiCAEJAQJiZQEFAmFDBAJibgkAoggBCQECYmcBBQJiaAQBbwUCZHcDCQABAgUBbwIEVW5pdAQCZHgFAmJuAwkAAQIFAmR4AgRVbml0CQCUCgIFA25pbAcDCQABAgUCZHgCBlN0cmluZwQCZHkFAmR4CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJlAQUCYUMFAmR5BQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUBbwIGU3RyaW5nBAJhRQUBbwQCY3cJAQFFAgUEdGhpcwkBAmF4AgUCYUMFAmFFBAJjcgkBAXoCBQJhWQkBAmFkAQUCYUMEAmNnCAkBAmJXBAUCYUMFAmFFBQJjcgAAAl8xBAJjeAkAuAICBQJjZwUCY3cEAmN5BgQCY3oDCQC/AgIFAmN4BQFoCQD8BwQFBHRoaXMCD2NsYWltV3hJTlRFUk5BTAkAzAgCBQJhQwkAzAgCBQJhRQkAzAgCBQJjeQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCY3oFAmN6BAJkegkAoggBCQECYmwCBQJiaAUCYUUEAmR4BQJkegMJAAECBQJkeAIEVW5pdAkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiZQEFAmFDBQNuaWwHAwkAAQIFAmR4AgZTdHJpbmcEAmRBBQJkeAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZQEFAmFDBQJkQQUDbmlsBgkAAgECC01hdGNoIGVycm9yCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BDm9uTW9kaWZ5V2VpZ2h0AgJhdQJiQQMJAQIhPQIIBQJjbgZjYWxsZXIFAmFZCQACAQIScGVybWlzc2lvbnMgZGVuaWVkBAJkQgkBAmJ6AwUCYXUFAmJBAAAEAmJ4CAUCZEICXzEEAmJZCAUCZEICXzIEAmJaCAUCZEICXzMFAmJZAQJkQwECZEQABAJkRQQBbwkBAmNqAAMJAAECBQFvAgpCeXRlVmVjdG9yBAJjcAUBbwUCY3ADCQABAgUBbwIEVW5pdAgFAmRDD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJkQwlib2R5Qnl0ZXMJAJEDAggFAmRDBnByb29mcwAABQJkRQFUL/M=", "height": 2501115, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HKPBNP3EevoYn6Aq6yDXHvL7HRWV69AAN62HwtSX4wgD Next: 9Za78K3bfkzVWXaQKQrYtXcW7px1VidJ6D4uqWUues9t Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
6-let b = 100000000
6+let b = 1000
77
8-let c = 18
8+let c = 100000000
99
10-let d = toBigInt(1000000000000000000)
10+let d = 18
1111
12-let e = "__"
12+let e = toBigInt(1000000000000000000)
1313
14-let f = b
14+let f = "__"
1515
16-let g = toBigInt(0)
16+let g = c
1717
18-let h = toBigInt(1)
18+let h = toBigInt(0)
1919
20-func i (j) = makeString(["staking.ride:", toString(this), j], " ")
20+let i = toBigInt(1)
21+
22+func j (k) = makeString(["staking.ride:", toString(this), k], " ")
2123
2224
23-func k (j) = throw(i(j))
25+func l (k) = throw(j(k))
2426
2527
26-func l (m) = {
27- let n = m
28- if ($isInstanceOf(n, "List[Any]"))
28+func m (n) = {
29+ let o = n
30+ if ($isInstanceOf(o, "List[Any]"))
2931 then {
30- let o = n
31- o
32+ let p = o
33+ p
3234 }
3335 else throw("fail to cast into List[Any]")
3436 }
3537
3638
37-func p (m) = {
38- let n = m
39- if ($isInstanceOf(n, "Int"))
39+func q (n) = {
40+ let o = n
41+ if ($isInstanceOf(o, "Int"))
4042 then {
41- let q = n
42- q
43+ let r = o
44+ r
4345 }
4446 else throw("fail to cast into Int")
4547 }
4648
4749
48-func r (m) = {
49- let n = m
50- if ($isInstanceOf(n, "String"))
50+func s (n) = {
51+ let o = n
52+ if ($isInstanceOf(o, "String"))
5153 then {
52- let s = n
53- s
54+ let t = o
55+ t
5456 }
5557 else throw("fail to cast into Int")
5658 }
5759
5860
59-func t (m) = {
60- let n = m
61- if ($isInstanceOf(n, "ByteVector"))
61+func u (n) = {
62+ let o = n
63+ if ($isInstanceOf(o, "ByteVector"))
6264 then {
63- let u = n
64- u
65+ let v = o
66+ v
6567 }
6668 else throw("fail to cast into Int")
6769 }
6870
6971
70-func v (w,x) = valueOrErrorMessage(getString(w, x), (("mandatory this." + x) + " is not defined"))
72+func w (x,y) = valueOrErrorMessage(getString(x, y), (("mandatory this." + y) + " is not defined"))
7173
7274
73-func y (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
75+func z (x,y) = valueOrErrorMessage(getString(x, y), (((("mandatory " + toString(x)) + ".") + y) + " is not defined"))
7476
7577
76-func z (w,x) = valueOrElse(getInteger(w, x), 0)
78+func A (x,y) = valueOrElse(getInteger(x, y), 0)
7779
7880
79-func A (w,x,B) = valueOrElse(getInteger(w, x), B)
81+func B (x,y,C) = valueOrElse(getInteger(x, y), C)
8082
8183
82-func C (w,x) = valueOrErrorMessage(getInteger(w, x), (("mandatory this." + x) + " is not defined"))
84+func D (x,y) = valueOrErrorMessage(getInteger(x, y), (("mandatory this." + y) + " is not defined"))
8385
8486
85-func D (w,x) = value(parseBigInt(valueOrElse(getString(w, x), "0")))
87+func E (x,y) = value(parseBigInt(valueOrElse(getString(x, y), "0")))
8688
8789
88-func E (w,x,B) = {
89- let n = getString(w, x)
90- if ($isInstanceOf(n, "String"))
90+func F (x,y,C) = {
91+ let o = getString(x, y)
92+ if ($isInstanceOf(o, "String"))
9193 then {
92- let F = n
93- value(parseBigInt(F))
94+ let G = o
95+ value(parseBigInt(G))
9496 }
95- else if ($isInstanceOf(n, "Unit"))
96- then B
97+ else if ($isInstanceOf(o, "Unit"))
98+ then C
9799 else throw("Match error")
98100 }
99101
100102
101-func G (H,I) = fraction(toBigInt(H), d, toBigInt(I))
103+func H (I,J) = fraction(toBigInt(I), e, toBigInt(J))
102104
103105
104-func J (m,K) = toInt(fraction(m, toBigInt(K), d))
106+func K (n,L) = toInt(fraction(n, toBigInt(L), e))
105107
106108
107-func L () = "%s%s__config__factoryAddress"
109+func M () = "%s%s__config__factoryAddress"
108110
109111
110-func M () = "%s__votingEmissionContract"
112+func N () = "%s__votingEmissionContract"
111113
112114
113-let N = 1
115+let O = 1
114116
115-let O = 2
117+let P = 2
116118
117-let P = 3
119+let Q = 3
118120
119-let Q = 4
121+let R = 4
120122
121-let R = 5
123+let S = 5
122124
123-let S = 6
125+let T = 6
124126
125-let T = 7
127+let U = 7
126128
127-func U () = "%s__factoryConfig"
129+func V () = "%s__factoryConfig"
128130
129131
130-func V () = "%s__managerPublicKey"
132+func W () = "%s__managerPublicKey"
131133
132134
133-func W () = "%s__pendingManagerPublicKey"
135+func X () = "%s__pendingManagerPublicKey"
134136
135137
136-func X () = "%s__stablePoolAddonAddr"
138+func Y () = "%s__stablePoolAddonAddr"
137139
138140
139-func Y () = "%s__addonAddr"
141+func Z () = "%s__addonAddr"
140142
141143
142-func Z (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
144+func aa (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
143145
144146
145-func ab () = "%s__lpTokensList"
147+func ac () = "%s__lpTokensList"
146148
147149
148-func ac (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
150+func ad (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
149151
150152
151-func ad (ae) = makeString(["%s%s", "poolWeight", ae], e)
153+func ae (af) = makeString(["%s%s", "poolWeight", af], f)
152154
153155
154-func af (ag) = split(valueOrElse(getString(ag, ab()), ""), e)
156+func ag (ah) = split(valueOrElse(getString(ah, ac()), ""), f)
155157
156158
157-func ah (ag) = split(y(ag, U()), e)
159+func ai (ah) = split(z(ah, V()), f)
158160
159161
160-func ai (aj) = addressFromStringValue(aj[O])
162+func aj (ak) = addressFromStringValue(ak[P])
161163
162164
163-func ak (aj) = addressFromStringValue(aj[R])
165+func al (ak) = addressFromStringValue(ak[S])
164166
165167
166-func al (aj) = addressFromStringValue(aj[N])
168+func am (ak) = addressFromStringValue(ak[O])
167169
168170
169-func am () = "%s%s__ratePerBlock__current"
171+func an () = "%s%s__ratePerBlock__current"
170172
171173
172-func an () = "%s%s__ratePerBlockMax__current"
174+func ao () = "%s%s__ratePerBlockMax__current"
173175
174176
175-func ao () = "%s%s__emission__startBlock"
177+func ap () = "%s%s__emission__startBlock"
176178
177179
178-func ap () = "%s%s__emission__duration"
180+func aq () = "%s%s__emission__duration"
179181
180182
181-func aq () = "%s%s__emission__endBlock"
183+func ar () = "%s%s__emission__endBlock"
182184
183185
184-func ar (as,at) = makeString(["%s%s%s__staked", as, at], e)
186+func as (at,au) = makeString(["%s%s%s__staked", at, au], f)
185187
186188
187-func au (at) = ("%s%s%s__staked__total__" + at)
189+func av (au) = ("%s%s%s__staked__total__" + au)
188190
189191
190-func av (at,as) = makeString(["%s%s%s__claimed", as, at], e)
192+func aw (au,at) = makeString(["%s%s%s__claimed", at, au], f)
191193
192194
193-func aw (at,as) = makeString(["%s%s%s__claimedMinReward", as, at], e)
195+func ax (au,at) = makeString(["%s%s%s__claimedMinReward", at, au], f)
194196
195197
196-func ax (at,as) = makeString(["%s%s%s__claimedBoostReward", as, at], e)
198+func ay (au,at) = makeString(["%s%s%s__claimedBoostReward", at, au], f)
197199
198200
199-func ay (at) = makeString(["%s%s%s__claimed__total", at], e)
201+func az (au) = makeString(["%s%s%s__claimed__total", au], f)
200202
201203
202-func az (x) = valueOrElse(getInteger(this, x), 0)
204+func aA (y) = valueOrElse(getInteger(this, y), 0)
203205
204206
205-func aA (aB) = makeString(["%s%s%s", aB, "total", "bal"], e)
207+func aB (aC) = makeString(["%s%s%s", aC, "total", "bal"], f)
206208
207209
208-func aC (aB,aD) = makeString(["%s%s%s", aB, aD, "bal"], e)
210+func aD (aC,aE) = makeString(["%s%s%s", aC, aE, "bal"], f)
209211
210212
211-func aE (aB) = makeString(["%s%s%s", aB, "total", "balINT"], e)
213+func aF (aC) = makeString(["%s%s%s", aC, "total", "balINT"], f)
212214
213215
214-func aF (aB,aD) = makeString(["%s%s%s", aB, aD, "balINT"], e)
216+func aG (aC,aE) = makeString(["%s%s%s", aC, aE, "balINT"], f)
215217
216218
217-func aG (aB) = makeString(["%s%s%s", aB, "total", "lastUpd"], e)
219+func aH (aC) = makeString(["%s%s%s", aC, "total", "lastUpd"], f)
218220
219221
220-func aH (aB,aD) = makeString(["%s%s%s", aB, aD, "lastUpd"], e)
222+func aI (aC,aE) = makeString(["%s%s%s", aC, aE, "lastUpd"], f)
221223
222224
223-func aI (aB) = makeString(["%s%s%s%s", aB, "common", "lpInt"], e)
225+func aJ (aC) = makeString(["%s%s%s%s", aC, "common", "lpInt"], f)
224226
225227
226-func aJ (aB) = makeString(["%s%s%s%s", aB, "common", "lpIntH"], e)
228+func aK (aC) = makeString(["%s%s%s%s", aC, "common", "lpIntH"], f)
227229
228230
229-func aK (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpInt"], e)
231+func aL (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpInt"], f)
230232
231233
232-func aL (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpIntH"], e)
234+func aM (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpIntH"], f)
233235
234236
235-func aM (aB) = makeString(["%s", aB, "wxPerLp"], e)
237+func aN (aC) = makeString(["%s", aC, "wxPerLp"], f)
236238
237239
238-func aN (aB) = makeString(["%s", aB, "wxPerLpX18"], e)
240+func aO (aC) = makeString(["%s", aC, "wxPerLpX18"], f)
239241
240242
241-func aO (aB,aD) = makeString(["%s%s%s%s", aB, aD, "uIntL"], e)
243+func aP (aC,aE) = makeString(["%s%s%s%s", aC, aE, "uIntL"], f)
242244
243245
244-func aP (aQ,aD,aR) = makeString(["%s%s%s%s__history", aQ, aD, aR], e)
246+func aQ (aR,aE,aS) = makeString(["%s%s%s%s__history", aR, aE, aS], f)
245247
246248
247-func aS (aD,aB,aQ,aT) = makeString(["%s%s%s%d%d%d", aD, aB, aQ, toString(height), toString(lastBlock.timestamp), toString(aT)], e)
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)
248250
249251
250-func aU (aQ,aD,aB,aT,aV) = StringEntry(aP(aQ, aD, toBase58String(aV)), aS(aD, aB, aQ, aT))
252+func aV (aR,aE,aC,aU,aW) = StringEntry(aQ(aR, aE, toBase58String(aW)), aT(aE, aC, aR, aU))
251253
252254
253-let aW = v(this, L())
255+let aX = w(this, M())
254256
255-let aX = addressFromStringValue(aW)
257+let aY = addressFromStringValue(aX)
256258
257-let aj = ah(aX)
259+let ak = ai(aY)
258260
259-let aY = ak(aj)
261+let aZ = al(ak)
260262
261-let aZ = ai(aj)
263+let ba = aj(ak)
262264
263-let ba = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], e)), i("lp_staking_pools contract address is undefined"))), i("invalid lp_staking_pools contract address"))
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"))
270+ }
264271
265-func bb (aB) = makeString(["%s%s", aB, "nextUser"], e)
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)
266275
267276
268-func bc (aB) = makeString(["users", aB], e)
277+func bf (aC) = makeString(["users", aC], f)
269278
270279
271-func bd (be) = makeString(["%s%s%s", be, "head"], e)
280+func bg (bh) = makeString(["%s%s%s", bh, "head"], f)
272281
273282
274-func bf (be) = makeString(["%s%s%s", be, "size"], e)
283+func bi (bh) = makeString(["%s%s%s", bh, "size"], f)
275284
276285
277-func bg (be,bh) = makeString(["%s%s%s%s", be, bh, "prev"], e)
286+func bj (bh,bk) = makeString(["%s%s%s%s", bh, bk, "prev"], f)
278287
279288
280-func bi (be,bh) = makeString(["%s%s%s%s", be, bh, "next"], e)
289+func bl (bh,bk) = makeString(["%s%s%s%s", bh, bk, "next"], f)
281290
282291
283-func bj (be,bh) = {
284- let bk = getString(this, bd(be))
285- let bl = getString(this, bg(be, bh))
286- let bm = getString(this, bi(be, bh))
287- if (if ((bh == valueOrElse(bk, "")))
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, "")))
288297 then true
289- else (bl != unit))
298+ else (bo != unit))
290299 then true
291- else (bm != unit)
300+ else (bp != unit)
292301 }
293302
294303
295-func bn (be,bh) = {
296- let bk = getString(this, bd(be))
297- let bo = valueOrElse(getInteger(this, bf(be)), 0)
298- let bp = if (!(bj(be, bh)))
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)))
299308 then true
300309 else throw("Node exists")
301- if ((bp == bp))
302- then (([IntegerEntry(bf(be), (bo + 1))] ++ (if ((bk != unit))
303- then [StringEntry(bi(be, bh), value(bk)), StringEntry(bg(be, value(bk)), bh)]
304- else nil)) ++ [StringEntry(bd(be), bh)])
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)])
305314 else throw("Strict value is not equal to itself.")
306315 }
307316
308317
309-func bq (be,bh) = {
310- let bk = getString(this, bd(be))
311- let bo = valueOrElse(getInteger(this, bf(be)), 0)
312- let bl = getString(this, bg(be, bh))
313- let bm = getString(this, bi(be, bh))
314- ([IntegerEntry(bf(be), (bo - 1))] ++ (if (if ((bl != unit))
315- then (bm != 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)
316325 else false)
317- then [StringEntry(bi(be, value(bl)), value(bm)), StringEntry(bg(be, value(bm)), value(bl)), DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, bh))]
318- else if ((bm != unit))
319- then [StringEntry(bd(be), value(bm)), DeleteEntry(bi(be, bh)), DeleteEntry(bg(be, value(bm)))]
320- else if ((bl != unit))
321- then [DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, value(bl)))]
322- else if ((bh == valueOrElse(bk, "")))
323- then [DeleteEntry(bd(be))]
324- else throw(((("invalid node: " + be) + ".") + bh))))
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))))
325334 }
326335
327336
328-func br (bs,bt,bu,bv) = if (if ((bt == g))
329- then (bs > g)
337+func bu (bv,bw,bx,by) = if (if ((bw == h))
338+ then (bv > h)
330339 else false)
331- then g
332- else if ((bs == g))
333- then bu
334- else if (if ((bt > g))
335- then (bs > g)
340+ then h
341+ else if ((bv == h))
342+ then bx
343+ else if (if ((bw > h))
344+ then (bv > h)
336345 else false)
337- then value(parseBigInt(v(this, bv)))
346+ then value(parseBigInt(w(this, by)))
338347 else throw("calcWxPerLpIntegralUserLast: unexpected state")
339348
340349
341-func bw (at,bx,by) = {
342- let bz = au(at)
343- let bA = toBigInt(az(bz))
344- let bB = if ((bA == g))
345- then h
346- else bA
347- let bC = getIntegerValue(aX, ad(bx))
348- let bD = C(aY, ao())
349- let bE = 1000
350- let bF = (C(aY, am()) * bE)
351- let bG = fraction(bF, bC, (f * 3))
352- let bH = aI(at)
353- let bI = aJ(at)
354- let bJ = aM(at)
355- let bK = A(this, bI, bD)
356- let bL = D(this, bH)
357- let bM = 0
358- let bN = max([(height - bK), 0])
359- let bO = if ((bM != 0))
360- then toBigInt(bM)
361- else fraction(toBigInt(bG), toBigInt(b), bB)
362- let bP = (bA + toBigInt(by))
363- let bQ = if ((bP == g))
364- then h
365- else bP
366- let bu = (bL + (bO * toBigInt(bN)))
367- let bR = (toBigInt(bG) / bQ)
368- let bS = height
369- let bT = makeString([toString(bu), toString(bN), toString(bO), toString(bA), toString(bG), toString(bF), toString(bC)], "::")
370- $Tuple3(bu, [StringEntry(bH, toString(bu)), IntegerEntry(bI, bS), StringEntry(bJ, toString(bR))], bT)
350+func bz (au,bA,bB) = {
351+ let bC = av(au)
352+ let bD = toBigInt(aA(bC))
353+ let bE = if ((bD == h))
354+ then i
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))
372+ then i
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 bU (at,as,bx,by) = {
375- let bV = bw(at, bx, by)
376- let bu = bV._1
377- let bW = bV._2
378- let bX = bV._3
379- let bE = 1000
380- let bY = ar(as, at)
381- let bs = az(bY)
382- let bZ = aK(at, as)
383- let ca = aL(at, as)
384- let bv = aO(at, as)
385- let cb = D(this, bZ)
386- let bt = z(this, ca)
387- let cc = br(toBigInt(bs), toBigInt(bt), bu, bv)
388- let cd = (b * bE)
389- let ce = max([(cb + fraction((bu - cc), toBigInt(bs), toBigInt(cd))), g])
390- let cf = bu
391- let cg = height
392- let bT = makeString([toString(cb), toString(cc), toString(bs), bX, toString(height)], "::")
393- $Tuple3(ce, (bW ++ [StringEntry(bZ, toString(ce)), IntegerEntry(ca, cg), StringEntry(bv, toString(cf))]), bT)
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)
394401 }
395402
396403
397-func ch () = {
398- let n = getString(V())
399- if ($isInstanceOf(n, "String"))
404+func cj () = {
405+ let o = getString(W())
406+ if ($isInstanceOf(o, "String"))
400407 then {
401- let F = n
402- fromBase58String(F)
408+ let G = o
409+ fromBase58String(G)
403410 }
404- else if ($isInstanceOf(n, "Unit"))
411+ else if ($isInstanceOf(o, "Unit"))
405412 then unit
406413 else throw("Match error")
407414 }
408415
409416
410-func ci () = {
411- let n = getString(W())
412- if ($isInstanceOf(n, "String"))
417+func ck () = {
418+ let o = getString(X())
419+ if ($isInstanceOf(o, "String"))
413420 then {
414- let F = n
415- fromBase58String(F)
421+ let G = o
422+ fromBase58String(G)
416423 }
417- else if ($isInstanceOf(n, "Unit"))
424+ else if ($isInstanceOf(o, "Unit"))
418425 then unit
419426 else throw("Match error")
420427 }
421428
422429
423-let cj = throw("Permission denied")
430+let cl = throw("Permission denied")
424431
425-func ck (cl) = if ((cl.caller == this))
432+func cm (cn) = if ((cn.caller == this))
426433 then true
427- else cj
434+ else cl
428435
429436
430-func cm (cl) = {
431- let n = ch()
432- if ($isInstanceOf(n, "ByteVector"))
437+func co (cn) = {
438+ let o = cj()
439+ if ($isInstanceOf(o, "ByteVector"))
433440 then {
434- let cn = n
435- if ((cl.callerPublicKey == cn))
441+ let cp = o
442+ if ((cn.callerPublicKey == cp))
436443 then true
437- else cj
444+ else cl
438445 }
439- else if ($isInstanceOf(n, "Unit"))
440- then if ((cl.caller == this))
446+ else if ($isInstanceOf(o, "Unit"))
447+ then if ((cn.caller == this))
441448 then true
442- else cj
449+ else cl
443450 else throw("Match error")
444451 }
445452
446453
447-func co (cl,aB,cp,aD,aT) = {
448- let as = toString(aD)
449- let at = toBase58String(aB)
450- let bx = toString(cp)
451- let bY = ar(as, at)
452- let bz = au(at)
453- let bs = az(bY)
454- let cq = if ((bs == 0))
455- then invoke(aZ, "onStakedVoteUpdate", [at, as, true], nil)
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)
456471 else unit
457- if ((cq == cq))
472+ if ((cv == cv))
458473 then {
459- let bA = az(bz)
460- let cr = bU(at, as, bx, aT)
461- let ce = cr._1
462- let cs = cr._2
463- let bT = cr._3
464- let be = bc(at)
465- let ct = if (bj(be, as))
466- then nil
467- else bn(be, as)
468- (([IntegerEntry(bY, (bs + aT)), IntegerEntry(bz, (bA + aT)), aU("stake", as, at, aT, cl.transactionId)] ++ cs) ++ ct)
469- }
470- else throw("Strict value is not equal to itself.")
471- }
472-
473-
474-func cu (cl,aB,cp,aD,cv,aT) = {
475- let as = toString(aD)
476- let at = toBase58String(aB)
477- let bx = toString(cp)
478- let bY = ar(as, at)
479- let bz = au(at)
480- let bs = az(bY)
481- let bA = az(bz)
482- let cs = bU(at, as, bx, -(aT))._2
483- let be = bc(at)
484- let ct = if (if (bj(be, as))
485- then (aT == bs)
486- else false)
487- then bq(be, as)
488- else nil
489- let cq = if ((aT == bs))
490- then invoke(aZ, "onStakedVoteUpdate", [at, as, false], nil)
491- else unit
492- if ((cq == cq))
493- then {
494- let cw = D(this, aw(at, as))
495- let ce = bU(at, as, bx, 0)._1
496- let cx = (ce - cw)
474+ let cw = E(this, ax(au, at))
475+ let cg = bW(au, at, bA, 0)._1
476+ let cx = (cg - cw)
497477 let cy = true
498- let cz = if ((cx > g))
499- then invoke(this, "claimWxINTERNAL", [at, as, cy], nil)
478+ let cz = if ((cx > h))
479+ then invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
500480 else unit
501481 if ((cz == cz))
502- then if ((aT > bs))
503- then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
504- else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cv, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cs) ++ ct)
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)
505485 else throw("Strict value is not equal to itself.")
506486 }
507487 else throw("Strict value is not equal to itself.")
508488 }
509489
510490
511-@Callable(cl)
491+@Callable(cn)
512492 func constructor (cA) = {
513- let cB = cm(cl)
493+ let cB = co(cn)
514494 if ((cB == cB))
515- then [StringEntry(L(), cA)]
495+ then [StringEntry(M(), cA)]
516496 else throw("Strict value is not equal to itself.")
517497 }
518498
519499
520500
521-@Callable(cl)
501+@Callable(cn)
522502 func constructorV2 (cC) = {
523- let cD = [cm(cl), if ((addressFromString(cC) != unit))
503+ let cD = [co(cn), if ((addressFromString(cC) != unit))
524504 then true
525505 else "invalid voting emission contract address"]
526506 if ((cD == cD))
527- then [StringEntry(M(), cC)]
507+ then [StringEntry(N(), cC)]
528508 else throw("Strict value is not equal to itself.")
529509 }
530510
531511
532512
533-@Callable(cl)
513+@Callable(cn)
534514 func setManager (cE) = {
535- let cB = cm(cl)
515+ let cB = co(cn)
536516 if ((cB == cB))
537517 then {
538518 let cF = fromBase58String(cE)
539519 if ((cF == cF))
540- then [StringEntry(W(), cE)]
520+ then [StringEntry(X(), cE)]
541521 else throw("Strict value is not equal to itself.")
542522 }
543523 else throw("Strict value is not equal to itself.")
545525
546526
547527
548-@Callable(cl)
528+@Callable(cn)
549529 func confirmManager () = {
550- let cG = ci()
530+ let cG = ck()
551531 let cH = if (isDefined(cG))
552532 then true
553533 else throw("No pending manager")
554534 if ((cH == cH))
555535 then {
556- let cI = if ((cl.callerPublicKey == value(cG)))
536+ let cI = if ((cn.callerPublicKey == value(cG)))
557537 then true
558538 else throw("You are not pending manager")
559539 if ((cI == cI))
560- then [StringEntry(V(), toBase58String(value(cG))), DeleteEntry(W())]
540+ then [StringEntry(W(), toBase58String(value(cG))), DeleteEntry(X())]
561541 else throw("Strict value is not equal to itself.")
562542 }
563543 else throw("Strict value is not equal to itself.")
565545
566546
567547
568-@Callable(cl)
569-func stake () = if ((size(cl.payments) != 1))
548+@Callable(cn)
549+func stake () = if ((size(cn.payments) != 1))
570550 then throw("invalid payment - exact one payment must be attached")
571551 else {
572- let cJ = cl.payments[0]
573- let aB = value(cJ.assetId)
574- let at = toBase58String(aB)
575- let aT = cJ.amount
576- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
577- let cp = addressFromStringValue(bx)
578- let aD = if ((cl.caller == cp))
579- then cl.originCaller
580- else cl.caller
581- co(cl, aB, cp, aD, aT)
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)
566+ else unit
567+ if ((cv == cv))
568+ then {
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))
576+ then nil
577+ else bq(bh, at)
578+ (([IntegerEntry(ca, (bv + aU)), IntegerEntry(bC, (bD + aU)), aV("stake", at, au, aU, cn.transactionId)] ++ ct) ++ cu)
579+ }
580+ else throw("Strict value is not equal to itself.")
582581 }
583582
584583
585584
586-@Callable(cl)
587-func stakeFor (as) = if ((size(cl.payments) != 1))
588- then throw("invalid payment - exact one payment must be attached")
589- else {
590- let cJ = cl.payments[0]
591- let aB = value(cJ.assetId)
592- let at = toBase58String(aB)
593- let aT = cJ.amount
594- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
595- let cp = addressFromStringValue(bx)
596- let aD = valueOrErrorMessage(addressFromString(as), i("invalid user address"))
597- co(cl, aB, cp, aD, aT)
598- }
599-
600-
601-
602-@Callable(cl)
603-func unstake (at,aT) = {
604- let aB = fromBase58String(at)
605- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
606- let cp = addressFromStringValue(bx)
607- let cK = valueOrElse(getString(cp, Y()), bx)
608- let cL = toString(cl.caller)
609- let aD = if (if ((cL == bx))
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))
610593 then true
611- else (cL == cK))
612- then cl.originCaller
613- else cl.caller
614- let cv = cl.caller
615- cu(cl, aB, cp, aD, cv, aT)
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)
616599 }
617600
618601
619602
620-@Callable(cl)
621-func unstakeINTERNAL (aB,aT,aD,cv) = {
622- let at = toBase58String(aB)
623- let cp = addressFromStringValue(valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at)))
624- let cB = if ((cl.caller == cp))
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))
625608 then true
626- else cj
609+ else cl
627610 if ((cB == cB))
628- then cu(cl, aB, cp, Address(aD), Address(cv), aT)
611+ then cq(cn, aC, cr, Address(aE), Address(cs), aU)
629612 else throw("Strict value is not equal to itself.")
630613 }
631614
632615
633616
634-@Callable(cl)
635-func claimWx (at) = {
636- let as = toString(cl.caller)
617+@Callable(cn)
618+func claimWx (au) = {
619+ let at = toString(cn.caller)
637620 let cy = true
638- let cM = invoke(this, "claimWxINTERNAL", [at, as, cy], nil)
639- $Tuple2(nil, cM)
621+ let cN = invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
622+ $Tuple2(nil, cN)
640623 }
641624
642625
643626
644-@Callable(cl)
645-func claimWxDoNotThrow (at) = {
646- let as = toString(cl.caller)
627+@Callable(cn)
628+func claimWxDoNotThrow (au) = {
629+ let at = toString(cn.caller)
647630 let cy = false
648- let cM = invoke(this, "claimWxINTERNAL", [at, as, cy], nil)
649- $Tuple2(nil, cM)
631+ let cN = invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
632+ $Tuple2(nil, cN)
650633 }
651634
652635
653636
654-@Callable(cl)
655-func claimWxINTERNAL (at,as,cy) = {
656- let cB = ck(cl)
637+@Callable(cn)
638+func claimWxINTERNAL (au,at,cy) = {
639+ let cB = cm(cn)
657640 if ((cB == cB))
658641 then {
659- let aD = valueOrErrorMessage(addressFromString(as), "claimWxINTERNAL: invalid user address")
660- let bx = y(aX, ac(at))
661- let cN = av(at, as)
662- let cO = ay(at)
663- let cP = aw(at, as)
664- let cQ = ax(at, as)
665- let cR = D(this, cN)
666- let cw = D(this, cP)
667- let cS = D(this, cQ)
668- let cT = D(this, cO)
669- let cU = bU(at, as, bx, 0)
670- let ce = cU._1
671- let cs = cU._2
672- let bT = cU._3
673- let cx = max([(ce - cw), g])
674- if ((g >= cx))
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))
675658 then if (cy)
676659 then throw("nothing to claim")
677660 else $Tuple2(nil, 0)
678661 else {
679- let cV = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
680- let cW = cx
681- let cX = min([(cW * toBigInt(2)), toBigInt(cV)])
682- let cY = (cW + cX)
683- let cZ = t(l(invoke(aY, "emit", [toInt(cW)], nil))[0])
684- let da = l(invoke(aY, "emit", [toInt(cX)], nil))
685- if ((da == da))
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))
686669 then {
687- let db = ((cR + cW) + cX)
688- let dc = (cw + cW)
689- let dd = (cS + cX)
690- let de = (cT + cx)
691- $Tuple2([StringEntry(cN, toString(db)), StringEntry(cP, toString(dc)), StringEntry(cQ, toString(dd)), StringEntry(cO, toString(de)), ScriptTransfer(aD, toInt(cW), cZ), ScriptTransfer(aD, toInt(cX), cZ), aU("claim", as, at, toInt(cx), cl.transactionId)], toInt(cY))
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))
692675 }
693676 else throw("Strict value is not equal to itself.")
694677 }
698681
699682
700683
701-@Callable(cl)
702-func claimWxBulkInternalREADONLY (df,dg,as,dh) = if ((df == size(dg)))
703- then $Tuple2(nil, dh)
684+@Callable(cn)
685+func claimWxBulkInternalREADONLY (dg,dh,at,di) = if ((dg == size(dh)))
686+ then $Tuple2(nil, di)
704687 else {
705- let aB = dg[df]
706- let di = split({
707- let dj = invoke(this, "claimWxREADONLY", [aB, as], nil)
708- if ($isInstanceOf(dj, "String"))
709- then dj
710- else throw(($getType(dj) + " couldn't be cast to String"))
711- }, e)
712- let dk = di[3]
713- let dl = di[4]
714- let dm = (dh :+ makeString(["%d%d", dk, dl], e))
715- let dn = {
716- let dj = invoke(this, "claimWxBulkInternalREADONLY", [(df + 1), dg, as, dm], nil)
717- if ($isInstanceOf(dj, "List[Any]"))
718- then dj
719- else throw(($getType(dj) + " couldn't be cast to List[Any]"))
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"))
694+ }, f)
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"))
720702 }
721- if ((dn == dn))
722- then $Tuple2(nil, dn)
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]"))
709+ }
710+ if ((do == do))
711+ then $Tuple2(nil, do)
723712 else throw("Strict value is not equal to itself.")
724713 }
725714
726715
727716
728-@Callable(cl)
729-func claimWxBulkREADONLY (dg,as) = {
730- let dm = invoke(this, "claimWxBulkInternalREADONLY", [0, dg, as, nil], nil)
731- $Tuple2(nil, dm)
717+@Callable(cn)
718+func claimWxBulkREADONLY (dh,at) = {
719+ let dn = invoke(this, "claimWxBulkInternalREADONLY", [0, dh, at, nil], nil)
720+ $Tuple2(nil, dn)
732721 }
733722
734723
735724
736-@Callable(cl)
737-func claimWxREADONLY (at,as) = {
738- let bY = ar(as, at)
739- let bz = au(at)
740- let cN = av(at, as)
741- let cP = aw(at, as)
742- let bs = az(bY)
743- let bA = az(bz)
744- let cR = D(this, cN)
745- let cw = D(this, cP)
746- let bx = y(aX, ac(at))
747- let bC = getIntegerValue(aX, ad(bx))
748- let do = C(aY, am())
749- let bD = C(aY, ao())
750- let dp = if ((bD > 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))
751740 then 0
752- else (height - bD)
753- let dq = fraction((do * dp), bC, f)
754- let dr = fraction(dq, bs, bA)
755- let ds = bU(at, as, bx, 0)
756- let ce = ds._1
757- let cs = ds._2
758- let bT = ds._3
759- let cx = max([(ce - cw), g])
760- let dt = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
761- let cV = max([p(dt[0]), 0])
762- let du = r(dt[1])
763- let cW = cx
764- let cX = min([(cW * toBigInt(2)), toBigInt(cV)])
765- let cY = (cW + cX)
766- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cY), toString(cR), toString(cW), toString(cX), "soon"], e))
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))
767756 }
768757
769758
770759
771-@Callable(cl)
772-func stakedByUserREADONLY (at,as) = {
773- let bs = valueOrElse(getInteger(ar(as, at)), 0)
774- $Tuple2(nil, bs)
760+@Callable(cn)
761+func stakedByUserREADONLY (au,at) = {
762+ let bv = valueOrElse(getInteger(as(at, au)), 0)
763+ $Tuple2(nil, bv)
775764 }
776765
777766
778767
779-@Callable(cl)
780-func usersListTraversal (aB) = {
781- let cB = if ((toBase58String(cl.caller.bytes) == valueOrElse(getString(this, M()), "")))
768+@Callable(cn)
769+func usersListTraversal (aC) = {
770+ let cB = if ((toBase58String(cn.caller.bytes) == valueOrElse(getString(this, N()), "")))
782771 then true
783- else cm(cl)
772+ else co(cn)
784773 if ((cB == cB))
785774 then {
786- let be = bc(aB)
787- let dv = getString(bb(aB))
788- let bk = getString(bd(be))
789- let n = dv
790- if ($isInstanceOf(n, "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"))
791780 then {
792- let dw = bk
793- if ($isInstanceOf(dw, "Unit"))
781+ let dx = bn
782+ if ($isInstanceOf(dx, "Unit"))
794783 then $Tuple2(nil, false)
795- else if ($isInstanceOf(dw, "String"))
784+ else if ($isInstanceOf(dx, "String"))
796785 then {
797- let dx = dw
798- $Tuple2([StringEntry(bb(aB), dx)], true)
786+ let dy = dx
787+ $Tuple2([StringEntry(be(aC), dy)], true)
799788 }
800789 else throw("Match error")
801790 }
802- else if ($isInstanceOf(n, "String"))
791+ else if ($isInstanceOf(o, "String"))
803792 then {
804- let aD = n
805- let cw = D(this, aw(aB, aD))
806- let cp = y(aX, ac(aB))
807- let ce = bU(aB, aD, cp, 0)._1
808- let cx = (ce - cw)
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)
809798 let cy = true
810- let cz = if ((cx > g))
811- then invoke(this, "claimWxINTERNAL", [aB, aD, cy], nil)
799+ let cz = if ((cx > h))
800+ then invoke(this, "claimWxINTERNAL", [aC, aE, cy], nil)
812801 else unit
813802 if ((cz == cz))
814803 then {
815- let dy = getString(bi(be, aD))
816- let dw = dy
817- if ($isInstanceOf(dw, "Unit"))
818- then $Tuple2([DeleteEntry(bb(aB))], false)
819- else if ($isInstanceOf(dw, "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"))
820809 then {
821- let dz = dw
822- $Tuple2([StringEntry(bb(aB), dz)], true)
810+ let dA = dx
811+ $Tuple2([StringEntry(be(aC), dA)], true)
823812 }
824813 else throw("Match error")
825814 }
832821
833822
834823
835-@Callable(cl)
836-func onModifyWeight (at,bx) = if ((cl.caller != aX))
824+@Callable(cn)
825+func onModifyWeight (au,bA) = if ((cn.caller != aY))
837826 then throw("permissions denied")
838827 else {
839- let dA = bw(at, bx, 0)
840- let bu = dA._1
841- let bW = dA._2
842- let bX = dA._3
843- bW
828+ let dB = bz(au, bA, 0)
829+ let bx = dB._1
830+ let bY = dB._2
831+ let bZ = dB._3
832+ bY
844833 }
845834
846835
847-@Verifier(dB)
848-func dC () = {
849- let dD = {
850- let n = ch()
851- if ($isInstanceOf(n, "ByteVector"))
836+@Verifier(dC)
837+func dD () = {
838+ let dE = {
839+ let o = cj()
840+ if ($isInstanceOf(o, "ByteVector"))
852841 then {
853- let cn = n
854- cn
842+ let cp = o
843+ cp
855844 }
856- else if ($isInstanceOf(n, "Unit"))
857- then dB.senderPublicKey
845+ else if ($isInstanceOf(o, "Unit"))
846+ then dC.senderPublicKey
858847 else throw("Match error")
859848 }
860- sigVerify(dB.bodyBytes, dB.proofs[0], dD)
849+ sigVerify(dC.bodyBytes, dC.proofs[0], dE)
861850 }
862851
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
6-let b = 100000000
6+let b = 1000
77
8-let c = 18
8+let c = 100000000
99
10-let d = toBigInt(1000000000000000000)
10+let d = 18
1111
12-let e = "__"
12+let e = toBigInt(1000000000000000000)
1313
14-let f = b
14+let f = "__"
1515
16-let g = toBigInt(0)
16+let g = c
1717
18-let h = toBigInt(1)
18+let h = toBigInt(0)
1919
20-func i (j) = makeString(["staking.ride:", toString(this), j], " ")
20+let i = toBigInt(1)
21+
22+func j (k) = makeString(["staking.ride:", toString(this), k], " ")
2123
2224
23-func k (j) = throw(i(j))
25+func l (k) = throw(j(k))
2426
2527
26-func l (m) = {
27- let n = m
28- if ($isInstanceOf(n, "List[Any]"))
28+func m (n) = {
29+ let o = n
30+ if ($isInstanceOf(o, "List[Any]"))
2931 then {
30- let o = n
31- o
32+ let p = o
33+ p
3234 }
3335 else throw("fail to cast into List[Any]")
3436 }
3537
3638
37-func p (m) = {
38- let n = m
39- if ($isInstanceOf(n, "Int"))
39+func q (n) = {
40+ let o = n
41+ if ($isInstanceOf(o, "Int"))
4042 then {
41- let q = n
42- q
43+ let r = o
44+ r
4345 }
4446 else throw("fail to cast into Int")
4547 }
4648
4749
48-func r (m) = {
49- let n = m
50- if ($isInstanceOf(n, "String"))
50+func s (n) = {
51+ let o = n
52+ if ($isInstanceOf(o, "String"))
5153 then {
52- let s = n
53- s
54+ let t = o
55+ t
5456 }
5557 else throw("fail to cast into Int")
5658 }
5759
5860
59-func t (m) = {
60- let n = m
61- if ($isInstanceOf(n, "ByteVector"))
61+func u (n) = {
62+ let o = n
63+ if ($isInstanceOf(o, "ByteVector"))
6264 then {
63- let u = n
64- u
65+ let v = o
66+ v
6567 }
6668 else throw("fail to cast into Int")
6769 }
6870
6971
70-func v (w,x) = valueOrErrorMessage(getString(w, x), (("mandatory this." + x) + " is not defined"))
72+func w (x,y) = valueOrErrorMessage(getString(x, y), (("mandatory this." + y) + " is not defined"))
7173
7274
73-func y (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
75+func z (x,y) = valueOrErrorMessage(getString(x, y), (((("mandatory " + toString(x)) + ".") + y) + " is not defined"))
7476
7577
76-func z (w,x) = valueOrElse(getInteger(w, x), 0)
78+func A (x,y) = valueOrElse(getInteger(x, y), 0)
7779
7880
79-func A (w,x,B) = valueOrElse(getInteger(w, x), B)
81+func B (x,y,C) = valueOrElse(getInteger(x, y), C)
8082
8183
82-func C (w,x) = valueOrErrorMessage(getInteger(w, x), (("mandatory this." + x) + " is not defined"))
84+func D (x,y) = valueOrErrorMessage(getInteger(x, y), (("mandatory this." + y) + " is not defined"))
8385
8486
85-func D (w,x) = value(parseBigInt(valueOrElse(getString(w, x), "0")))
87+func E (x,y) = value(parseBigInt(valueOrElse(getString(x, y), "0")))
8688
8789
88-func E (w,x,B) = {
89- let n = getString(w, x)
90- if ($isInstanceOf(n, "String"))
90+func F (x,y,C) = {
91+ let o = getString(x, y)
92+ if ($isInstanceOf(o, "String"))
9193 then {
92- let F = n
93- value(parseBigInt(F))
94+ let G = o
95+ value(parseBigInt(G))
9496 }
95- else if ($isInstanceOf(n, "Unit"))
96- then B
97+ else if ($isInstanceOf(o, "Unit"))
98+ then C
9799 else throw("Match error")
98100 }
99101
100102
101-func G (H,I) = fraction(toBigInt(H), d, toBigInt(I))
103+func H (I,J) = fraction(toBigInt(I), e, toBigInt(J))
102104
103105
104-func J (m,K) = toInt(fraction(m, toBigInt(K), d))
106+func K (n,L) = toInt(fraction(n, toBigInt(L), e))
105107
106108
107-func L () = "%s%s__config__factoryAddress"
109+func M () = "%s%s__config__factoryAddress"
108110
109111
110-func M () = "%s__votingEmissionContract"
112+func N () = "%s__votingEmissionContract"
111113
112114
113-let N = 1
115+let O = 1
114116
115-let O = 2
117+let P = 2
116118
117-let P = 3
119+let Q = 3
118120
119-let Q = 4
121+let R = 4
120122
121-let R = 5
123+let S = 5
122124
123-let S = 6
125+let T = 6
124126
125-let T = 7
127+let U = 7
126128
127-func U () = "%s__factoryConfig"
129+func V () = "%s__factoryConfig"
128130
129131
130-func V () = "%s__managerPublicKey"
132+func W () = "%s__managerPublicKey"
131133
132134
133-func W () = "%s__pendingManagerPublicKey"
135+func X () = "%s__pendingManagerPublicKey"
134136
135137
136-func X () = "%s__stablePoolAddonAddr"
138+func Y () = "%s__stablePoolAddonAddr"
137139
138140
139-func Y () = "%s__addonAddr"
141+func Z () = "%s__addonAddr"
140142
141143
142-func Z (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
144+func aa (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
143145
144146
145-func ab () = "%s__lpTokensList"
147+func ac () = "%s__lpTokensList"
146148
147149
148-func ac (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
150+func ad (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
149151
150152
151-func ad (ae) = makeString(["%s%s", "poolWeight", ae], e)
153+func ae (af) = makeString(["%s%s", "poolWeight", af], f)
152154
153155
154-func af (ag) = split(valueOrElse(getString(ag, ab()), ""), e)
156+func ag (ah) = split(valueOrElse(getString(ah, ac()), ""), f)
155157
156158
157-func ah (ag) = split(y(ag, U()), e)
159+func ai (ah) = split(z(ah, V()), f)
158160
159161
160-func ai (aj) = addressFromStringValue(aj[O])
162+func aj (ak) = addressFromStringValue(ak[P])
161163
162164
163-func ak (aj) = addressFromStringValue(aj[R])
165+func al (ak) = addressFromStringValue(ak[S])
164166
165167
166-func al (aj) = addressFromStringValue(aj[N])
168+func am (ak) = addressFromStringValue(ak[O])
167169
168170
169-func am () = "%s%s__ratePerBlock__current"
171+func an () = "%s%s__ratePerBlock__current"
170172
171173
172-func an () = "%s%s__ratePerBlockMax__current"
174+func ao () = "%s%s__ratePerBlockMax__current"
173175
174176
175-func ao () = "%s%s__emission__startBlock"
177+func ap () = "%s%s__emission__startBlock"
176178
177179
178-func ap () = "%s%s__emission__duration"
180+func aq () = "%s%s__emission__duration"
179181
180182
181-func aq () = "%s%s__emission__endBlock"
183+func ar () = "%s%s__emission__endBlock"
182184
183185
184-func ar (as,at) = makeString(["%s%s%s__staked", as, at], e)
186+func as (at,au) = makeString(["%s%s%s__staked", at, au], f)
185187
186188
187-func au (at) = ("%s%s%s__staked__total__" + at)
189+func av (au) = ("%s%s%s__staked__total__" + au)
188190
189191
190-func av (at,as) = makeString(["%s%s%s__claimed", as, at], e)
192+func aw (au,at) = makeString(["%s%s%s__claimed", at, au], f)
191193
192194
193-func aw (at,as) = makeString(["%s%s%s__claimedMinReward", as, at], e)
195+func ax (au,at) = makeString(["%s%s%s__claimedMinReward", at, au], f)
194196
195197
196-func ax (at,as) = makeString(["%s%s%s__claimedBoostReward", as, at], e)
198+func ay (au,at) = makeString(["%s%s%s__claimedBoostReward", at, au], f)
197199
198200
199-func ay (at) = makeString(["%s%s%s__claimed__total", at], e)
201+func az (au) = makeString(["%s%s%s__claimed__total", au], f)
200202
201203
202-func az (x) = valueOrElse(getInteger(this, x), 0)
204+func aA (y) = valueOrElse(getInteger(this, y), 0)
203205
204206
205-func aA (aB) = makeString(["%s%s%s", aB, "total", "bal"], e)
207+func aB (aC) = makeString(["%s%s%s", aC, "total", "bal"], f)
206208
207209
208-func aC (aB,aD) = makeString(["%s%s%s", aB, aD, "bal"], e)
210+func aD (aC,aE) = makeString(["%s%s%s", aC, aE, "bal"], f)
209211
210212
211-func aE (aB) = makeString(["%s%s%s", aB, "total", "balINT"], e)
213+func aF (aC) = makeString(["%s%s%s", aC, "total", "balINT"], f)
212214
213215
214-func aF (aB,aD) = makeString(["%s%s%s", aB, aD, "balINT"], e)
216+func aG (aC,aE) = makeString(["%s%s%s", aC, aE, "balINT"], f)
215217
216218
217-func aG (aB) = makeString(["%s%s%s", aB, "total", "lastUpd"], e)
219+func aH (aC) = makeString(["%s%s%s", aC, "total", "lastUpd"], f)
218220
219221
220-func aH (aB,aD) = makeString(["%s%s%s", aB, aD, "lastUpd"], e)
222+func aI (aC,aE) = makeString(["%s%s%s", aC, aE, "lastUpd"], f)
221223
222224
223-func aI (aB) = makeString(["%s%s%s%s", aB, "common", "lpInt"], e)
225+func aJ (aC) = makeString(["%s%s%s%s", aC, "common", "lpInt"], f)
224226
225227
226-func aJ (aB) = makeString(["%s%s%s%s", aB, "common", "lpIntH"], e)
228+func aK (aC) = makeString(["%s%s%s%s", aC, "common", "lpIntH"], f)
227229
228230
229-func aK (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpInt"], e)
231+func aL (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpInt"], f)
230232
231233
232-func aL (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpIntH"], e)
234+func aM (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpIntH"], f)
233235
234236
235-func aM (aB) = makeString(["%s", aB, "wxPerLp"], e)
237+func aN (aC) = makeString(["%s", aC, "wxPerLp"], f)
236238
237239
238-func aN (aB) = makeString(["%s", aB, "wxPerLpX18"], e)
240+func aO (aC) = makeString(["%s", aC, "wxPerLpX18"], f)
239241
240242
241-func aO (aB,aD) = makeString(["%s%s%s%s", aB, aD, "uIntL"], e)
243+func aP (aC,aE) = makeString(["%s%s%s%s", aC, aE, "uIntL"], f)
242244
243245
244-func aP (aQ,aD,aR) = makeString(["%s%s%s%s__history", aQ, aD, aR], e)
246+func aQ (aR,aE,aS) = makeString(["%s%s%s%s__history", aR, aE, aS], f)
245247
246248
247-func aS (aD,aB,aQ,aT) = makeString(["%s%s%s%d%d%d", aD, aB, aQ, toString(height), toString(lastBlock.timestamp), toString(aT)], e)
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)
248250
249251
250-func aU (aQ,aD,aB,aT,aV) = StringEntry(aP(aQ, aD, toBase58String(aV)), aS(aD, aB, aQ, aT))
252+func aV (aR,aE,aC,aU,aW) = StringEntry(aQ(aR, aE, toBase58String(aW)), aT(aE, aC, aR, aU))
251253
252254
253-let aW = v(this, L())
255+let aX = w(this, M())
254256
255-let aX = addressFromStringValue(aW)
257+let aY = addressFromStringValue(aX)
256258
257-let aj = ah(aX)
259+let ak = ai(aY)
258260
259-let aY = ak(aj)
261+let aZ = al(ak)
260262
261-let aZ = ai(aj)
263+let ba = aj(ak)
262264
263-let ba = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], e)), i("lp_staking_pools contract address is undefined"))), i("invalid lp_staking_pools contract address"))
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"))
270+ }
264271
265-func bb (aB) = makeString(["%s%s", aB, "nextUser"], e)
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)
266275
267276
268-func bc (aB) = makeString(["users", aB], e)
277+func bf (aC) = makeString(["users", aC], f)
269278
270279
271-func bd (be) = makeString(["%s%s%s", be, "head"], e)
280+func bg (bh) = makeString(["%s%s%s", bh, "head"], f)
272281
273282
274-func bf (be) = makeString(["%s%s%s", be, "size"], e)
283+func bi (bh) = makeString(["%s%s%s", bh, "size"], f)
275284
276285
277-func bg (be,bh) = makeString(["%s%s%s%s", be, bh, "prev"], e)
286+func bj (bh,bk) = makeString(["%s%s%s%s", bh, bk, "prev"], f)
278287
279288
280-func bi (be,bh) = makeString(["%s%s%s%s", be, bh, "next"], e)
289+func bl (bh,bk) = makeString(["%s%s%s%s", bh, bk, "next"], f)
281290
282291
283-func bj (be,bh) = {
284- let bk = getString(this, bd(be))
285- let bl = getString(this, bg(be, bh))
286- let bm = getString(this, bi(be, bh))
287- if (if ((bh == valueOrElse(bk, "")))
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, "")))
288297 then true
289- else (bl != unit))
298+ else (bo != unit))
290299 then true
291- else (bm != unit)
300+ else (bp != unit)
292301 }
293302
294303
295-func bn (be,bh) = {
296- let bk = getString(this, bd(be))
297- let bo = valueOrElse(getInteger(this, bf(be)), 0)
298- let bp = if (!(bj(be, bh)))
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)))
299308 then true
300309 else throw("Node exists")
301- if ((bp == bp))
302- then (([IntegerEntry(bf(be), (bo + 1))] ++ (if ((bk != unit))
303- then [StringEntry(bi(be, bh), value(bk)), StringEntry(bg(be, value(bk)), bh)]
304- else nil)) ++ [StringEntry(bd(be), bh)])
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)])
305314 else throw("Strict value is not equal to itself.")
306315 }
307316
308317
309-func bq (be,bh) = {
310- let bk = getString(this, bd(be))
311- let bo = valueOrElse(getInteger(this, bf(be)), 0)
312- let bl = getString(this, bg(be, bh))
313- let bm = getString(this, bi(be, bh))
314- ([IntegerEntry(bf(be), (bo - 1))] ++ (if (if ((bl != unit))
315- then (bm != 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)
316325 else false)
317- then [StringEntry(bi(be, value(bl)), value(bm)), StringEntry(bg(be, value(bm)), value(bl)), DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, bh))]
318- else if ((bm != unit))
319- then [StringEntry(bd(be), value(bm)), DeleteEntry(bi(be, bh)), DeleteEntry(bg(be, value(bm)))]
320- else if ((bl != unit))
321- then [DeleteEntry(bg(be, bh)), DeleteEntry(bi(be, value(bl)))]
322- else if ((bh == valueOrElse(bk, "")))
323- then [DeleteEntry(bd(be))]
324- else throw(((("invalid node: " + be) + ".") + bh))))
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))))
325334 }
326335
327336
328-func br (bs,bt,bu,bv) = if (if ((bt == g))
329- then (bs > g)
337+func bu (bv,bw,bx,by) = if (if ((bw == h))
338+ then (bv > h)
330339 else false)
331- then g
332- else if ((bs == g))
333- then bu
334- else if (if ((bt > g))
335- then (bs > g)
340+ then h
341+ else if ((bv == h))
342+ then bx
343+ else if (if ((bw > h))
344+ then (bv > h)
336345 else false)
337- then value(parseBigInt(v(this, bv)))
346+ then value(parseBigInt(w(this, by)))
338347 else throw("calcWxPerLpIntegralUserLast: unexpected state")
339348
340349
341-func bw (at,bx,by) = {
342- let bz = au(at)
343- let bA = toBigInt(az(bz))
344- let bB = if ((bA == g))
345- then h
346- else bA
347- let bC = getIntegerValue(aX, ad(bx))
348- let bD = C(aY, ao())
349- let bE = 1000
350- let bF = (C(aY, am()) * bE)
351- let bG = fraction(bF, bC, (f * 3))
352- let bH = aI(at)
353- let bI = aJ(at)
354- let bJ = aM(at)
355- let bK = A(this, bI, bD)
356- let bL = D(this, bH)
357- let bM = 0
358- let bN = max([(height - bK), 0])
359- let bO = if ((bM != 0))
360- then toBigInt(bM)
361- else fraction(toBigInt(bG), toBigInt(b), bB)
362- let bP = (bA + toBigInt(by))
363- let bQ = if ((bP == g))
364- then h
365- else bP
366- let bu = (bL + (bO * toBigInt(bN)))
367- let bR = (toBigInt(bG) / bQ)
368- let bS = height
369- let bT = makeString([toString(bu), toString(bN), toString(bO), toString(bA), toString(bG), toString(bF), toString(bC)], "::")
370- $Tuple3(bu, [StringEntry(bH, toString(bu)), IntegerEntry(bI, bS), StringEntry(bJ, toString(bR))], bT)
350+func bz (au,bA,bB) = {
351+ let bC = av(au)
352+ let bD = toBigInt(aA(bC))
353+ let bE = if ((bD == h))
354+ then i
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))
372+ then i
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 bU (at,as,bx,by) = {
375- let bV = bw(at, bx, by)
376- let bu = bV._1
377- let bW = bV._2
378- let bX = bV._3
379- let bE = 1000
380- let bY = ar(as, at)
381- let bs = az(bY)
382- let bZ = aK(at, as)
383- let ca = aL(at, as)
384- let bv = aO(at, as)
385- let cb = D(this, bZ)
386- let bt = z(this, ca)
387- let cc = br(toBigInt(bs), toBigInt(bt), bu, bv)
388- let cd = (b * bE)
389- let ce = max([(cb + fraction((bu - cc), toBigInt(bs), toBigInt(cd))), g])
390- let cf = bu
391- let cg = height
392- let bT = makeString([toString(cb), toString(cc), toString(bs), bX, toString(height)], "::")
393- $Tuple3(ce, (bW ++ [StringEntry(bZ, toString(ce)), IntegerEntry(ca, cg), StringEntry(bv, toString(cf))]), bT)
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)
394401 }
395402
396403
397-func ch () = {
398- let n = getString(V())
399- if ($isInstanceOf(n, "String"))
404+func cj () = {
405+ let o = getString(W())
406+ if ($isInstanceOf(o, "String"))
400407 then {
401- let F = n
402- fromBase58String(F)
408+ let G = o
409+ fromBase58String(G)
403410 }
404- else if ($isInstanceOf(n, "Unit"))
411+ else if ($isInstanceOf(o, "Unit"))
405412 then unit
406413 else throw("Match error")
407414 }
408415
409416
410-func ci () = {
411- let n = getString(W())
412- if ($isInstanceOf(n, "String"))
417+func ck () = {
418+ let o = getString(X())
419+ if ($isInstanceOf(o, "String"))
413420 then {
414- let F = n
415- fromBase58String(F)
421+ let G = o
422+ fromBase58String(G)
416423 }
417- else if ($isInstanceOf(n, "Unit"))
424+ else if ($isInstanceOf(o, "Unit"))
418425 then unit
419426 else throw("Match error")
420427 }
421428
422429
423-let cj = throw("Permission denied")
430+let cl = throw("Permission denied")
424431
425-func ck (cl) = if ((cl.caller == this))
432+func cm (cn) = if ((cn.caller == this))
426433 then true
427- else cj
434+ else cl
428435
429436
430-func cm (cl) = {
431- let n = ch()
432- if ($isInstanceOf(n, "ByteVector"))
437+func co (cn) = {
438+ let o = cj()
439+ if ($isInstanceOf(o, "ByteVector"))
433440 then {
434- let cn = n
435- if ((cl.callerPublicKey == cn))
441+ let cp = o
442+ if ((cn.callerPublicKey == cp))
436443 then true
437- else cj
444+ else cl
438445 }
439- else if ($isInstanceOf(n, "Unit"))
440- then if ((cl.caller == this))
446+ else if ($isInstanceOf(o, "Unit"))
447+ then if ((cn.caller == this))
441448 then true
442- else cj
449+ else cl
443450 else throw("Match error")
444451 }
445452
446453
447-func co (cl,aB,cp,aD,aT) = {
448- let as = toString(aD)
449- let at = toBase58String(aB)
450- let bx = toString(cp)
451- let bY = ar(as, at)
452- let bz = au(at)
453- let bs = az(bY)
454- let cq = if ((bs == 0))
455- then invoke(aZ, "onStakedVoteUpdate", [at, as, true], nil)
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)
456471 else unit
457- if ((cq == cq))
472+ if ((cv == cv))
458473 then {
459- let bA = az(bz)
460- let cr = bU(at, as, bx, aT)
461- let ce = cr._1
462- let cs = cr._2
463- let bT = cr._3
464- let be = bc(at)
465- let ct = if (bj(be, as))
466- then nil
467- else bn(be, as)
468- (([IntegerEntry(bY, (bs + aT)), IntegerEntry(bz, (bA + aT)), aU("stake", as, at, aT, cl.transactionId)] ++ cs) ++ ct)
469- }
470- else throw("Strict value is not equal to itself.")
471- }
472-
473-
474-func cu (cl,aB,cp,aD,cv,aT) = {
475- let as = toString(aD)
476- let at = toBase58String(aB)
477- let bx = toString(cp)
478- let bY = ar(as, at)
479- let bz = au(at)
480- let bs = az(bY)
481- let bA = az(bz)
482- let cs = bU(at, as, bx, -(aT))._2
483- let be = bc(at)
484- let ct = if (if (bj(be, as))
485- then (aT == bs)
486- else false)
487- then bq(be, as)
488- else nil
489- let cq = if ((aT == bs))
490- then invoke(aZ, "onStakedVoteUpdate", [at, as, false], nil)
491- else unit
492- if ((cq == cq))
493- then {
494- let cw = D(this, aw(at, as))
495- let ce = bU(at, as, bx, 0)._1
496- let cx = (ce - cw)
474+ let cw = E(this, ax(au, at))
475+ let cg = bW(au, at, bA, 0)._1
476+ let cx = (cg - cw)
497477 let cy = true
498- let cz = if ((cx > g))
499- then invoke(this, "claimWxINTERNAL", [at, as, cy], nil)
478+ let cz = if ((cx > h))
479+ then invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
500480 else unit
501481 if ((cz == cz))
502- then if ((aT > bs))
503- then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
504- else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cv, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cs) ++ ct)
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)
505485 else throw("Strict value is not equal to itself.")
506486 }
507487 else throw("Strict value is not equal to itself.")
508488 }
509489
510490
511-@Callable(cl)
491+@Callable(cn)
512492 func constructor (cA) = {
513- let cB = cm(cl)
493+ let cB = co(cn)
514494 if ((cB == cB))
515- then [StringEntry(L(), cA)]
495+ then [StringEntry(M(), cA)]
516496 else throw("Strict value is not equal to itself.")
517497 }
518498
519499
520500
521-@Callable(cl)
501+@Callable(cn)
522502 func constructorV2 (cC) = {
523- let cD = [cm(cl), if ((addressFromString(cC) != unit))
503+ let cD = [co(cn), if ((addressFromString(cC) != unit))
524504 then true
525505 else "invalid voting emission contract address"]
526506 if ((cD == cD))
527- then [StringEntry(M(), cC)]
507+ then [StringEntry(N(), cC)]
528508 else throw("Strict value is not equal to itself.")
529509 }
530510
531511
532512
533-@Callable(cl)
513+@Callable(cn)
534514 func setManager (cE) = {
535- let cB = cm(cl)
515+ let cB = co(cn)
536516 if ((cB == cB))
537517 then {
538518 let cF = fromBase58String(cE)
539519 if ((cF == cF))
540- then [StringEntry(W(), cE)]
520+ then [StringEntry(X(), cE)]
541521 else throw("Strict value is not equal to itself.")
542522 }
543523 else throw("Strict value is not equal to itself.")
544524 }
545525
546526
547527
548-@Callable(cl)
528+@Callable(cn)
549529 func confirmManager () = {
550- let cG = ci()
530+ let cG = ck()
551531 let cH = if (isDefined(cG))
552532 then true
553533 else throw("No pending manager")
554534 if ((cH == cH))
555535 then {
556- let cI = if ((cl.callerPublicKey == value(cG)))
536+ let cI = if ((cn.callerPublicKey == value(cG)))
557537 then true
558538 else throw("You are not pending manager")
559539 if ((cI == cI))
560- then [StringEntry(V(), toBase58String(value(cG))), DeleteEntry(W())]
540+ then [StringEntry(W(), toBase58String(value(cG))), DeleteEntry(X())]
561541 else throw("Strict value is not equal to itself.")
562542 }
563543 else throw("Strict value is not equal to itself.")
564544 }
565545
566546
567547
568-@Callable(cl)
569-func stake () = if ((size(cl.payments) != 1))
548+@Callable(cn)
549+func stake () = if ((size(cn.payments) != 1))
570550 then throw("invalid payment - exact one payment must be attached")
571551 else {
572- let cJ = cl.payments[0]
573- let aB = value(cJ.assetId)
574- let at = toBase58String(aB)
575- let aT = cJ.amount
576- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
577- let cp = addressFromStringValue(bx)
578- let aD = if ((cl.caller == cp))
579- then cl.originCaller
580- else cl.caller
581- co(cl, aB, cp, aD, aT)
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)
566+ else unit
567+ if ((cv == cv))
568+ then {
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))
576+ then nil
577+ else bq(bh, at)
578+ (([IntegerEntry(ca, (bv + aU)), IntegerEntry(bC, (bD + aU)), aV("stake", at, au, aU, cn.transactionId)] ++ ct) ++ cu)
579+ }
580+ else throw("Strict value is not equal to itself.")
582581 }
583582
584583
585584
586-@Callable(cl)
587-func stakeFor (as) = if ((size(cl.payments) != 1))
588- then throw("invalid payment - exact one payment must be attached")
589- else {
590- let cJ = cl.payments[0]
591- let aB = value(cJ.assetId)
592- let at = toBase58String(aB)
593- let aT = cJ.amount
594- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
595- let cp = addressFromStringValue(bx)
596- let aD = valueOrErrorMessage(addressFromString(as), i("invalid user address"))
597- co(cl, aB, cp, aD, aT)
598- }
599-
600-
601-
602-@Callable(cl)
603-func unstake (at,aT) = {
604- let aB = fromBase58String(at)
605- let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
606- let cp = addressFromStringValue(bx)
607- let cK = valueOrElse(getString(cp, Y()), bx)
608- let cL = toString(cl.caller)
609- let aD = if (if ((cL == bx))
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))
610593 then true
611- else (cL == cK))
612- then cl.originCaller
613- else cl.caller
614- let cv = cl.caller
615- cu(cl, aB, cp, aD, cv, aT)
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)
616599 }
617600
618601
619602
620-@Callable(cl)
621-func unstakeINTERNAL (aB,aT,aD,cv) = {
622- let at = toBase58String(aB)
623- let cp = addressFromStringValue(valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at)))
624- let cB = if ((cl.caller == cp))
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))
625608 then true
626- else cj
609+ else cl
627610 if ((cB == cB))
628- then cu(cl, aB, cp, Address(aD), Address(cv), aT)
611+ then cq(cn, aC, cr, Address(aE), Address(cs), aU)
629612 else throw("Strict value is not equal to itself.")
630613 }
631614
632615
633616
634-@Callable(cl)
635-func claimWx (at) = {
636- let as = toString(cl.caller)
617+@Callable(cn)
618+func claimWx (au) = {
619+ let at = toString(cn.caller)
637620 let cy = true
638- let cM = invoke(this, "claimWxINTERNAL", [at, as, cy], nil)
639- $Tuple2(nil, cM)
621+ let cN = invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
622+ $Tuple2(nil, cN)
640623 }
641624
642625
643626
644-@Callable(cl)
645-func claimWxDoNotThrow (at) = {
646- let as = toString(cl.caller)
627+@Callable(cn)
628+func claimWxDoNotThrow (au) = {
629+ let at = toString(cn.caller)
647630 let cy = false
648- let cM = invoke(this, "claimWxINTERNAL", [at, as, cy], nil)
649- $Tuple2(nil, cM)
631+ let cN = invoke(this, "claimWxINTERNAL", [au, at, cy], nil)
632+ $Tuple2(nil, cN)
650633 }
651634
652635
653636
654-@Callable(cl)
655-func claimWxINTERNAL (at,as,cy) = {
656- let cB = ck(cl)
637+@Callable(cn)
638+func claimWxINTERNAL (au,at,cy) = {
639+ let cB = cm(cn)
657640 if ((cB == cB))
658641 then {
659- let aD = valueOrErrorMessage(addressFromString(as), "claimWxINTERNAL: invalid user address")
660- let bx = y(aX, ac(at))
661- let cN = av(at, as)
662- let cO = ay(at)
663- let cP = aw(at, as)
664- let cQ = ax(at, as)
665- let cR = D(this, cN)
666- let cw = D(this, cP)
667- let cS = D(this, cQ)
668- let cT = D(this, cO)
669- let cU = bU(at, as, bx, 0)
670- let ce = cU._1
671- let cs = cU._2
672- let bT = cU._3
673- let cx = max([(ce - cw), g])
674- if ((g >= cx))
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))
675658 then if (cy)
676659 then throw("nothing to claim")
677660 else $Tuple2(nil, 0)
678661 else {
679- let cV = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
680- let cW = cx
681- let cX = min([(cW * toBigInt(2)), toBigInt(cV)])
682- let cY = (cW + cX)
683- let cZ = t(l(invoke(aY, "emit", [toInt(cW)], nil))[0])
684- let da = l(invoke(aY, "emit", [toInt(cX)], nil))
685- if ((da == da))
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))
686669 then {
687- let db = ((cR + cW) + cX)
688- let dc = (cw + cW)
689- let dd = (cS + cX)
690- let de = (cT + cx)
691- $Tuple2([StringEntry(cN, toString(db)), StringEntry(cP, toString(dc)), StringEntry(cQ, toString(dd)), StringEntry(cO, toString(de)), ScriptTransfer(aD, toInt(cW), cZ), ScriptTransfer(aD, toInt(cX), cZ), aU("claim", as, at, toInt(cx), cl.transactionId)], toInt(cY))
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))
692675 }
693676 else throw("Strict value is not equal to itself.")
694677 }
695678 }
696679 else throw("Strict value is not equal to itself.")
697680 }
698681
699682
700683
701-@Callable(cl)
702-func claimWxBulkInternalREADONLY (df,dg,as,dh) = if ((df == size(dg)))
703- then $Tuple2(nil, dh)
684+@Callable(cn)
685+func claimWxBulkInternalREADONLY (dg,dh,at,di) = if ((dg == size(dh)))
686+ then $Tuple2(nil, di)
704687 else {
705- let aB = dg[df]
706- let di = split({
707- let dj = invoke(this, "claimWxREADONLY", [aB, as], nil)
708- if ($isInstanceOf(dj, "String"))
709- then dj
710- else throw(($getType(dj) + " couldn't be cast to String"))
711- }, e)
712- let dk = di[3]
713- let dl = di[4]
714- let dm = (dh :+ makeString(["%d%d", dk, dl], e))
715- let dn = {
716- let dj = invoke(this, "claimWxBulkInternalREADONLY", [(df + 1), dg, as, dm], nil)
717- if ($isInstanceOf(dj, "List[Any]"))
718- then dj
719- else throw(($getType(dj) + " couldn't be cast to List[Any]"))
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"))
694+ }, f)
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"))
720702 }
721- if ((dn == dn))
722- then $Tuple2(nil, dn)
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]"))
709+ }
710+ if ((do == do))
711+ then $Tuple2(nil, do)
723712 else throw("Strict value is not equal to itself.")
724713 }
725714
726715
727716
728-@Callable(cl)
729-func claimWxBulkREADONLY (dg,as) = {
730- let dm = invoke(this, "claimWxBulkInternalREADONLY", [0, dg, as, nil], nil)
731- $Tuple2(nil, dm)
717+@Callable(cn)
718+func claimWxBulkREADONLY (dh,at) = {
719+ let dn = invoke(this, "claimWxBulkInternalREADONLY", [0, dh, at, nil], nil)
720+ $Tuple2(nil, dn)
732721 }
733722
734723
735724
736-@Callable(cl)
737-func claimWxREADONLY (at,as) = {
738- let bY = ar(as, at)
739- let bz = au(at)
740- let cN = av(at, as)
741- let cP = aw(at, as)
742- let bs = az(bY)
743- let bA = az(bz)
744- let cR = D(this, cN)
745- let cw = D(this, cP)
746- let bx = y(aX, ac(at))
747- let bC = getIntegerValue(aX, ad(bx))
748- let do = C(aY, am())
749- let bD = C(aY, ao())
750- let dp = if ((bD > 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))
751740 then 0
752- else (height - bD)
753- let dq = fraction((do * dp), bC, f)
754- let dr = fraction(dq, bs, bA)
755- let ds = bU(at, as, bx, 0)
756- let ce = ds._1
757- let cs = ds._2
758- let bT = ds._3
759- let cx = max([(ce - cw), g])
760- let dt = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
761- let cV = max([p(dt[0]), 0])
762- let du = r(dt[1])
763- let cW = cx
764- let cX = min([(cW * toBigInt(2)), toBigInt(cV)])
765- let cY = (cW + cX)
766- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cY), toString(cR), toString(cW), toString(cX), "soon"], e))
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))
767756 }
768757
769758
770759
771-@Callable(cl)
772-func stakedByUserREADONLY (at,as) = {
773- let bs = valueOrElse(getInteger(ar(as, at)), 0)
774- $Tuple2(nil, bs)
760+@Callable(cn)
761+func stakedByUserREADONLY (au,at) = {
762+ let bv = valueOrElse(getInteger(as(at, au)), 0)
763+ $Tuple2(nil, bv)
775764 }
776765
777766
778767
779-@Callable(cl)
780-func usersListTraversal (aB) = {
781- let cB = if ((toBase58String(cl.caller.bytes) == valueOrElse(getString(this, M()), "")))
768+@Callable(cn)
769+func usersListTraversal (aC) = {
770+ let cB = if ((toBase58String(cn.caller.bytes) == valueOrElse(getString(this, N()), "")))
782771 then true
783- else cm(cl)
772+ else co(cn)
784773 if ((cB == cB))
785774 then {
786- let be = bc(aB)
787- let dv = getString(bb(aB))
788- let bk = getString(bd(be))
789- let n = dv
790- if ($isInstanceOf(n, "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"))
791780 then {
792- let dw = bk
793- if ($isInstanceOf(dw, "Unit"))
781+ let dx = bn
782+ if ($isInstanceOf(dx, "Unit"))
794783 then $Tuple2(nil, false)
795- else if ($isInstanceOf(dw, "String"))
784+ else if ($isInstanceOf(dx, "String"))
796785 then {
797- let dx = dw
798- $Tuple2([StringEntry(bb(aB), dx)], true)
786+ let dy = dx
787+ $Tuple2([StringEntry(be(aC), dy)], true)
799788 }
800789 else throw("Match error")
801790 }
802- else if ($isInstanceOf(n, "String"))
791+ else if ($isInstanceOf(o, "String"))
803792 then {
804- let aD = n
805- let cw = D(this, aw(aB, aD))
806- let cp = y(aX, ac(aB))
807- let ce = bU(aB, aD, cp, 0)._1
808- let cx = (ce - cw)
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)
809798 let cy = true
810- let cz = if ((cx > g))
811- then invoke(this, "claimWxINTERNAL", [aB, aD, cy], nil)
799+ let cz = if ((cx > h))
800+ then invoke(this, "claimWxINTERNAL", [aC, aE, cy], nil)
812801 else unit
813802 if ((cz == cz))
814803 then {
815- let dy = getString(bi(be, aD))
816- let dw = dy
817- if ($isInstanceOf(dw, "Unit"))
818- then $Tuple2([DeleteEntry(bb(aB))], false)
819- else if ($isInstanceOf(dw, "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"))
820809 then {
821- let dz = dw
822- $Tuple2([StringEntry(bb(aB), dz)], true)
810+ let dA = dx
811+ $Tuple2([StringEntry(be(aC), dA)], true)
823812 }
824813 else throw("Match error")
825814 }
826815 else throw("Strict value is not equal to itself.")
827816 }
828817 else throw("Match error")
829818 }
830819 else throw("Strict value is not equal to itself.")
831820 }
832821
833822
834823
835-@Callable(cl)
836-func onModifyWeight (at,bx) = if ((cl.caller != aX))
824+@Callable(cn)
825+func onModifyWeight (au,bA) = if ((cn.caller != aY))
837826 then throw("permissions denied")
838827 else {
839- let dA = bw(at, bx, 0)
840- let bu = dA._1
841- let bW = dA._2
842- let bX = dA._3
843- bW
828+ let dB = bz(au, bA, 0)
829+ let bx = dB._1
830+ let bY = dB._2
831+ let bZ = dB._3
832+ bY
844833 }
845834
846835
847-@Verifier(dB)
848-func dC () = {
849- let dD = {
850- let n = ch()
851- if ($isInstanceOf(n, "ByteVector"))
836+@Verifier(dC)
837+func dD () = {
838+ let dE = {
839+ let o = cj()
840+ if ($isInstanceOf(o, "ByteVector"))
852841 then {
853- let cn = n
854- cn
842+ let cp = o
843+ cp
855844 }
856- else if ($isInstanceOf(n, "Unit"))
857- then dB.senderPublicKey
845+ else if ($isInstanceOf(o, "Unit"))
846+ then dC.senderPublicKey
858847 else throw("Match error")
859848 }
860- sigVerify(dB.bodyBytes, dB.proofs[0], dD)
849+ sigVerify(dC.bodyBytes, dC.proofs[0], dE)
861850 }
862851

github/deemru/w8io/026f985 
340.57 ms