tx · DNvSMRFDobjtEsCMh7HiyYVbXfbMeNsc8TdmnjMo3Fyq

3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz:  -0.02300000 Waves

2023.02.28 14:56 [2469523] smart account 3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz > SELF 0.00000000 Waves

{ "type": 13, "id": "DNvSMRFDobjtEsCMh7HiyYVbXfbMeNsc8TdmnjMo3Fyq", "fee": 2300000, "feeAssetId": null, "timestamp": 1677585438879, "version": 2, "chainId": 84, "sender": "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz", "senderPublicKey": "D28XoueZWsMfm8Y5pa6C5ZFuYoWgre2Wm8tzJANJgMnq", "proofs": [ "2qzDgFXKpc54vJ3fG4TQw9BYpk45uUeN3wN5rpTZVySHpVJ8EabryR6ZudW9W1GUyXarBthrZ7Mk8GAj2Rg9qBtv" ], "script": "base64:BgL5HwgCEgMKAQgSAwoBCBIDCgEIEgASABIECgIIARIGCgQCAQICEgMKAQgSAwoBCBIFCgMICAQSBgoEARgIGBIECgIYCBIECgIICBIECgIICBIDCgEIEgQKAggIIgZTQ0FMRTgiBU1VTFQ4IgdTQ0FMRTE4IgZNVUxUMTgiA1NFUCIOUE9PTFdFSUdIVE1VTFQiCnplcm9CaWdJbnQiCW9uZUJpZ0ludCIHd3JhcEVyciIDbXNnIgh0aHJvd0VyciIJYXNBbnlMaXN0IgN2YWwiByRtYXRjaDAiCnZhbEFueUx5c3QiBWFzSW50IgZ2YWxJbnQiCGFzU3RyaW5nIgZ2YWxTdHIiDGFzQnl0ZVZlY3RvciIGdmFsQmluIg9nZXRTdHJpbmdPckZhaWwiB2FkZHJlc3MiA2tleSIYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsIgxnZXRJbnRPclplcm8iD2dldEludE9yRGVmYXVsdCIKZGVmYXVsdFZhbCIMZ2V0SW50T3JGYWlsIhlnZXRCaWdJbnRGcm9tU3RyaW5nT3JaZXJvIhxnZXRCaWdJbnRGcm9tU3RyaW5nT3JEZWZhdWx0IgFzIgV0b1gxOCIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCIHZnJvbVgxOCIPcmVzdWx0U2NhbGVNdWx0IhFrZXlGYWN0b3J5QWRkcmVzcyIZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdCIYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwIhlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwIhRJZHhGYWN0b3J5Q2ZnSWRvRGFwcCIVSWR4RmFjdG9yeUNmZ1RlYW1EYXBwIhlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwIhVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAiGUlkeEZhY3RvcnlDZmdTbGlwcGFnZURhcHAiDWtleUZhY3RvcnlDZmciE2tleU1hbmFnZXJQdWJsaWNLZXkiGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhZrZXlTdGFibGVQb29sQWRkb25BZGRyIgxrZXlBZGRvbkFkZHIiGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nIgpscEFzc2V0U3RyIhBrZXlGYWN0b3J5THBMaXN0IiZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcyIUa2V5RmFjdG9yeVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIKcmVhZExwTGlzdCIHZmFjdG9yeSIUcmVhZEZhY3RvcnlDZmdPckZhaWwiGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbCIKZmFjdG9yeUNmZyIYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsIhdnZXRTdGFraW5nQWRkcmVzc09yRmFpbCIea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50IiFrZXlFbWlzc2lvblJhdGVQZXJCbG9ja01heEN1cnJlbnQiFWtleUVtaXNzaW9uU3RhcnRCbG9jayIba2V5RW1pc3Npb25EdXJhdGlvbkluQmxvY2tzIhNrZXlFbWlzc2lvbkVuZEJsb2NrIg9rZXlTdGFrZWRCeVVzZXIiDnVzZXJBZGRyZXNzU3RyIgxscEFzc2V0SWRTdHIiDmtleVN0YWtlZFRvdGFsIhBrZXlDbGFpbWVkQnlVc2VyIhlrZXlDbGFpbWVkQnlVc2VyTWluUmV3YXJkIhtrZXlDbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmQiD2tleUNsYWltZWRUb3RhbCIKcmVhZFN0YWtlZCIVa2V5TGFzdFRvdGFsTHBCYWxhbmNlIglscEFzc2V0SWQiFGtleUxhc3RVc2VyTHBCYWxhbmNlIgt1c2VyQWRkcmVzcyIZa2V5VG90YWxMcEJhbGFuY2VJbnRlZ3JhbCIYa2V5VXNlckxwQmFsYW5jZUludGVncmFsIiZrZXlUb3RhbExwQmFsYW5jZUludGVncmFsTGFzdFVwZEhlaWdodCIla2V5VXNlckxwQmFsYW5jZUludGVncmFsTGFzdFVwZEhlaWdodCISa2V5V3hQZXJMcEludGVncmFsIh9rZXlXeFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0IhBrZXlXeFRvQ2xhaW1Vc2VyIiNrZXlXeFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodCIKa2V5V3hQZXJMcCINa2V5V3hQZXJMcFgxOCIaa2V5V3hQZXJMcEludGVncmFsVXNlckxhc3QiGWtleU9wZXJhdGlvbkhpc3RvcnlSZWNvcmQiBHR5cGUiBnR4SWQ1OCITZm9ybWF0SGlzdG9yeVJlY29yZCIGYW1vdW50IhVPcGVyYXRpb25IaXN0b3J5RW50cnkiBHR4SWQiDmZhY3RvcnlBZGRyZXNzIg9mYWN0b3J5Q29udHJhY3QiEGVtaXNzaW9uQ29udHJhY3QiEGJvb3N0aW5nQ29udHJhY3QiFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QiC2tleU5leHRVc2VyIhBnZXRVc2Vyc0xpc3ROYW1lIgtrZXlMaXN0SGVhZCIIbGlzdE5hbWUiC2tleUxpc3RTaXplIgtrZXlMaXN0UHJldiICaWQiC2tleUxpc3ROZXh0Igxjb250YWluc05vZGUiCmhlYWRPclVuaXQiCnByZXZPclVuaXQiCm5leHRPclVuaXQiEWluc2VydE5vZGVBY3Rpb25zIghsaXN0U2l6ZSIJY2hlY2tOb2RlIhFkZWxldGVOb2RlQWN0aW9ucyIbY2FsY1d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0IgxzdGFrZWRCeVVzZXIiJnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0T3JaZXJvIhJ3eFBlckxwSW50ZWdyYWxOZXciGnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0S0VZIhRyZWZyZXNoUG9vbElOVEVHUkFMUyIOcG9vbEFkZHJlc3NTdHIiDWxwRGVsdGFBbW91bnQiDnN0YWtlZFRvdGFsS0VZIgtzdGFrZWRUb3RhbCISbm9uWmVyb1N0YWtlZFRvdGFsIgpwb29sV2VpZ2h0IhJlbWlzc2lvblN0YXJ0QmxvY2siBU1VTFQzIhR3eEVtaXNzaW9uUGVyQmxvY2tYMyIYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzIhJ3eFBlckxwSW50ZWdyYWxLRVkiH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHRLRVkiCnd4UGVyTHBLRVkiHHd4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHQiD3d4UGVyTHBJbnRlZ3JhbCIPd3hQZXJMcE9yWmVyb1gzIgJkaCIJd3hQZXJMcFgzIg5zdGFrZWRUb3RhbE5ldyIVbm9uWmVyb1N0YWtlZFRvdGFsTmV3Igx3eFBlckxwWDNOZXciH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHROZXciBWRlYnVnIhByZWZyZXNoSU5URUdSQUxTIg0kdDAxNDc1MDE0ODcyIhFwb29sSW50ZWdyYWxTVEFURSIJcG9vbERFQlVHIg9zdGFrZWRCeVVzZXJLRVkiEHd4VG9DbGFpbVVzZXJLRVkiI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0S0VZIg13eFRvQ2xhaW1Vc2VyIhd3eFBlckxwSW50ZWdyYWxVc2VyTGFzdCIGTVVMVDExIhB3eFRvQ2xhaW1Vc2VyTmV3Ihp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdE5ldyIjd3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHROZXciFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0IhVwZXJtaXNzaW9uRGVuaWVkRXJyb3IiCG11c3RUaGlzIgFpIgttdXN0TWFuYWdlciICcGsiDnVuc3Rha2VBY3Rpb25zIgtwb29sQWRkcmVzcyIXbHBBc3NldFJlY2lwaWVudEFkZHJlc3MiDWludGVncmFsU1RBVEUiC2xpc3RBY3Rpb25zIhZjbGFpbWVkQnlVc2VyTWluUmV3YXJkIhBhdmFpbGFibGVUb0NsYWltIhV0aHJvd0lmTm90aGluZ1RvQ2xhaW0iAXIiEWZhY3RvcnlBZGRyZXNzU3RyIgtjaGVja0NhbGxlciIWdm90aW5nRW1pc3Npb25Db250cmFjdCIFY2hla3MiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIDcG10IgljYWxsZXJTdHIiDSR0MDIxMjc2MjEzOTMiCXBvb2xBZGRvbiIGcmVzdWx0IhBjbGFpbWVkQnlVc2VyS0VZIg9jbGFpbWVkVG90YWxLRVkiGWNsYWltZWRCeVVzZXJNaW5SZXdhcmRLRVkiG2NsYWltZWRCeVVzZXJCb29zdFJld2FyZEtFWSINY2xhaW1lZEJ5VXNlciIYY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkIgxjbGFpbWVkVG90YWwiDSR0MDI0Nzc5MjQ4OTEiEnd4QW1vdW50Qm9vc3RUb3RhbCINbWluUmV3YXJkUGFydCIPYm9vc3RSZXdhcmRQYXJ0Igt0b3RhbFJld2FyZCIJd3hBc3NldElkIgllbWl0Qm9vc3QiEmNsYWltZWRCeVVzZXJWYWx1ZSIeY2xhaW1lZEJ5VXNlck1pblJld2FyZFBsdXNQYXJ0IitjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmRQbHVzQm9vc3RSZXdhcmRQYXJ0IiBjbGFpbWVkVG90YWxQbHVzQXZhaWxhYmxlVG9DbGFpbSILY3VycmVudEl0ZXIiCmxwQXNzZXRJZHMiBnJlc0FjYyIEaW5mbyIBQCIJdW5jbGFpbWVkIgdjbGFpbWVkIgNyZXMiA2ludiISd3hFbWlzc2lvblBlckJsb2NrIgxwYXNzZWRCbG9ja3MiDnBvb2xXeEVtaXNzaW9uIgx1c2VyV3hSZXdhcmQiDSR0MDI4NzAwMjg4MTIiDmJvb3N0SW52UmVzdWx0Igpib29zdERlYnVnIgp1c2VyT3JVbml0IgckbWF0Y2gxIgRoZWFkIg5uZXh0VXNlck9yVW5pdCIIbmV4dFVzZXIiDSR0MDMxNDE4MzE1MjgiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleWIAAWEACAABYgCAwtcvAAFjABIAAWQJALYCAQCAgJC7utat8A0AAWUCAl9fAAFmBQFiAAFnCQC2AgEAAAABaAkAtgIBAAEBAWkBAWoJALkJAgkAzAgCAg1zdGFraW5nLnJpZGU6CQDMCAIJAKUIAQUEdGhpcwkAzAgCBQFqBQNuaWwCASABAWsBAWoJAAIBCQEBaQEFAWoBAWwBAW0EAW4FAW0DCQABAgUBbgIJTGlzdFtBbnldBAFvBQFuBQFvCQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQFwAQFtBAFuBQFtAwkAAQIFAW4CA0ludAQBcQUBbgUBcQkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEBcgEBbQQBbgUBbQMJAAECBQFuAgZTdHJpbmcEAXMFAW4FAXMJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBAXQBAW0EAW4FAW0DCQABAgUBbgIKQnl0ZVZlY3RvcgQBdQUBbgUBdQkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEBdgIBdwF4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUBdwUBeAkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUBeAIPIGlzIG5vdCBkZWZpbmVkAQF5AgF3AXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQF3BQF4CQCsAgIJAKwCAgkArAICCQCsAgICCm1hbmRhdG9yeSAJAKUIAQUBdwIBLgUBeAIPIGlzIG5vdCBkZWZpbmVkAQF6AgF3AXgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBdwUBeAAAAQFBAwF3AXgBQgkBC3ZhbHVlT3JFbHNlAgkAmggCBQF3BQF4BQFCAQFDAgF3AXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQF3BQF4CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQF4Ag8gaXMgbm90IGRlZmluZWQBAUQCAXcBeAkBBXZhbHVlAQkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFAXcFAXgCATABAUUDAXcBeAFCBAFuCQCdCAIFAXcFAXgDCQABAgUBbgIGU3RyaW5nBAFGBQFuCQEFdmFsdWUBCQCoAwEFAUYDCQABAgUBbgIEVW5pdAUBQgkAAgECC01hdGNoIGVycm9yAQFHAgFIAUkJALwCAwkAtgIBBQFIBQFkCQC2AgEFAUkBAUoCAW0BSwkAoAMBCQC8AgMFAW0JALYCAQUBSwUBZAEBTAACHCVzJXNfX2NvbmZpZ19fZmFjdG9yeUFkZHJlc3MBAU0AAholc19fdm90aW5nRW1pc3Npb25Db250cmFjdAABTgABAAFPAAIAAVAAAwABUQAEAAFSAAUAAVMABgABVAAHAQFVAAIRJXNfX2ZhY3RvcnlDb25maWcBAVYAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVwACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBWAACFyVzX19zdGFibGVQb29sQWRkb25BZGRyAQFZAAINJXNfX2FkZG9uQWRkcgEBWgECYWEJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYWEJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWUBAmFiAAIQJXNfX2xwVG9rZW5zTGlzdAECYWMBAmFhCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFhCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQFlAQJhZAECYWUJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUCYWUFA25pbAUBZQECYWYBAmFnCQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUCYWcJAQJhYgACAAUBZQECYWgBAmFnCQC1CQIJAQF5AgUCYWcJAQFVAAUBZQECYWkBAmFqCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFqBQFPAQJhawECYWoJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWoFAVIBAmFsAQJhagkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhagUBTgECYW0AAhslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBAmFuAAIeJXMlc19fcmF0ZVBlckJsb2NrTWF4X19jdXJyZW50AQJhbwACGiVzJXNfX2VtaXNzaW9uX19zdGFydEJsb2NrAQJhcAACGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgECYXEAAhglcyVzX19lbWlzc2lvbl9fZW5kQmxvY2sBAmFyAgJhcwJhdAkAuQkCCQDMCAICDiVzJXMlc19fc3Rha2VkCQDMCAIFAmFzCQDMCAIFAmF0BQNuaWwFAWUBAmF1AQJhdAkArAICAhclcyVzJXNfX3N0YWtlZF9fdG90YWxfXwUCYXQBAmF2AgJhdAJhcwkAuQkCCQDMCAICDyVzJXMlc19fY2xhaW1lZAkAzAgCBQJhcwkAzAgCBQJhdAUDbmlsBQFlAQJhdwICYXQCYXMJALkJAgkAzAgCAhglcyVzJXNfX2NsYWltZWRNaW5SZXdhcmQJAMwIAgUCYXMJAMwIAgUCYXQFA25pbAUBZQECYXgCAmF0AmFzCQC5CQIJAMwIAgIaJXMlcyVzX19jbGFpbWVkQm9vc3RSZXdhcmQJAMwIAgUCYXMJAMwIAgUCYXQFA25pbAUBZQECYXkBAmF0CQC5CQIJAMwIAgIWJXMlcyVzX19jbGFpbWVkX190b3RhbAkAzAgCBQJhdAUDbmlsBQFlAQJhegEBeAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQF4AAABAmFBAQJhQgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQgkAzAgCAgV0b3RhbAkAzAgCAgNiYWwFA25pbAUBZQECYUMCAmFCAmFECQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFCCQDMCAIFAmFECQDMCAICA2JhbAUDbmlsBQFlAQJhRQECYUIJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYUIJAMwIAgIFdG90YWwJAMwIAgIGYmFsSU5UBQNuaWwFAWUBAmFGAgJhQgJhRAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQgkAzAgCBQJhRAkAzAgCAgZiYWxJTlQFA25pbAUBZQECYUcBAmFCCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFCCQDMCAICBXRvdGFsCQDMCAICB2xhc3RVcGQFA25pbAUBZQECYUgCAmFCAmFECQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFCCQDMCAIFAmFECQDMCAICB2xhc3RVcGQFA25pbAUBZQECYUkBAmFCCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUIJAMwIAgIGY29tbW9uCQDMCAICBWxwSW50BQNuaWwFAWUBAmFKAQJhQgkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmFCCQDMCAICBmNvbW1vbgkAzAgCAgZscEludEgFA25pbAUBZQECYUsCAmFCAmFECQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUIJAMwIAgUCYUQJAMwIAgIFbHBJbnQFA25pbAUBZQECYUwCAmFCAmFECQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUIJAMwIAgUCYUQJAMwIAgIGbHBJbnRIBQNuaWwFAWUBAmFNAQJhQgkAuQkCCQDMCAICAiVzCQDMCAIFAmFCCQDMCAICB3d4UGVyTHAFA25pbAUBZQECYU4BAmFCCQC5CQIJAMwIAgICJXMJAMwIAgUCYUIJAMwIAgIKd3hQZXJMcFgxOAUDbmlsBQFlAQJhTwICYUICYUQJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJhQgkAzAgCBQJhRAkAzAgCAgV1SW50TAUDbmlsBQFlAQJhUAMCYVECYUQCYVIJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQJhUQkAzAgCBQJhRAkAzAgCBQJhUgUDbmlsBQFlAQJhUwQCYUQCYUICYVECYVQJALkJAgkAzAgCAgwlcyVzJXMlZCVkJWQJAMwIAgUCYUQJAMwIAgUCYUIJAMwIAgUCYVEJAMwIAgkApAMBBQZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFAmFUBQNuaWwFAWUBAmFVBQJhUQJhRAJhQgJhVAJhVgkBC1N0cmluZ0VudHJ5AgkBAmFQAwUCYVEFAmFECQDYBAEFAmFWCQECYVMEBQJhRAUCYUIFAmFRBQJhVAACYVcJAQF2AgUEdGhpcwkBAUwAAAJhWAkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYVcAAmFqCQECYWgBBQJhWAACYVkJAQJhawEFAmFqAAJhWgkBAmFpAQUCYWoAAmJhCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJALkJAgkAzAgCAgIlcwkAzAgCAhZscFN0YWtpbmdQb29sc0NvbnRyYWN0BQNuaWwFAWUJAQFpAQIubHBfc3Rha2luZ19wb29scyBjb250cmFjdCBhZGRyZXNzIGlzIHVuZGVmaW5lZAkBAWkBAilpbnZhbGlkIGxwX3N0YWtpbmdfcG9vbHMgY29udHJhY3QgYWRkcmVzcwECYmIBAmFCCQC5CQIJAMwIAgIEJXMlcwkAzAgCBQJhQgkAzAgCAghuZXh0VXNlcgUDbmlsBQFlAQJiYwECYUIJALkJAgkAzAgCAgV1c2VycwkAzAgCBQJhQgUDbmlsBQFlAQJiZAECYmUJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYmUJAMwIAgIEaGVhZAUDbmlsBQFlAQJiZgECYmUJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYmUJAMwIAgIEc2l6ZQUDbmlsBQFlAQJiZwICYmUCYmgJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJiZQkAzAgCBQJiaAkAzAgCAgRwcmV2BQNuaWwFAWUBAmJpAgJiZQJiaAkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmJlCQDMCAIFAmJoCQDMCAICBG5leHQFA25pbAUBZQECYmoCAmJlAmJoBAJiawkAnQgCBQR0aGlzCQECYmQBBQJiZQQCYmwJAJ0IAgUEdGhpcwkBAmJnAgUCYmUFAmJoBAJibQkAnQgCBQR0aGlzCQECYmkCBQJiZQUCYmgDAwkAAAIFAmJoCQELdmFsdWVPckVsc2UCBQJiawIABgkBAiE9AgUCYmwFBHVuaXQGCQECIT0CBQJibQUEdW5pdAECYm4CAmJlAmJoBAJiawkAnQgCBQR0aGlzCQECYmQBBQJiZQQCYm8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJmAQUCYmUAAAQCYnADCQEBIQEJAQJiagIFAmJlBQJiaAYJAAIBAgtOb2RlIGV4aXN0cwMJAAACBQJicAUCYnAJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYmYBBQJiZQkAZAIFAmJvAAEFA25pbAMJAQIhPQIFAmJrBQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiaQIFAmJlBQJiaAkBBXZhbHVlAQUCYmsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJnAgUCYmUJAQV2YWx1ZQEFAmJrBQJiaAUDbmlsBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJkAQUCYmUFAmJoBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmJxAgJiZQJiaAQCYmsJAJ0IAgUEdGhpcwkBAmJkAQUCYmUEAmJvCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiZgEFAmJlAAAEAmJsCQCdCAIFBHRoaXMJAQJiZwIFAmJlBQJiaAQCYm0JAJ0IAgUEdGhpcwkBAmJpAgUCYmUFAmJoCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiZgEFAmJlCQBlAgUCYm8AAQUDbmlsAwMJAQIhPQIFAmJsBQR1bml0CQECIT0CBQJibQUEdW5pdAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJpAgUCYmUJAQV2YWx1ZQEFAmJsCQEFdmFsdWUBBQJibQkAzAgCCQELU3RyaW5nRW50cnkCCQECYmcCBQJiZQkBBXZhbHVlAQUCYm0JAQV2YWx1ZQEFAmJsCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiZwIFAmJlBQJiaAkAzAgCCQELRGVsZXRlRW50cnkBCQECYmkCBQJiZQUCYmgFA25pbAMJAQIhPQIFAmJtBQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZAEFAmJlCQEFdmFsdWUBBQJibQkAzAgCCQELRGVsZXRlRW50cnkBCQECYmkCBQJiZQUCYmgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJnAgUCYmUJAQV2YWx1ZQEFAmJtBQNuaWwDCQECIT0CBQJibAUEdW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQECYmcCBQJiZQUCYmgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJpAgUCYmUJAQV2YWx1ZQEFAmJsBQNuaWwDCQAAAgUCYmgJAQt2YWx1ZU9yRWxzZQIFAmJrAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJkAQUCYmUFA25pbAkAAgEJAKwCAgkArAICCQCsAgICDmludmFsaWQgbm9kZTogBQJiZQIBLgUCYmgBAmJyBAJicwJidAJidQJidgMDCQAAAgUCYnQFAWcJAL8CAgUCYnMFAWcHBQFnAwkAAAIFAmJzBQFnBQJidQMDCQC/AgIFAmJ0BQFnCQC/AgIFAmJzBQFnBwkBBXZhbHVlAQkAqAMBCQEBdgIFBHRoaXMFAmJ2CQACAQItY2FsY1d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0OiB1bmV4cGVjdGVkIHN0YXRlAQJidwMCYXQCYngCYnkEAmJ6CQECYXUBBQJhdAQCYkEJALYCAQkBAmF6AQUCYnoEAmJCAwkAAAIFAmJBBQFnBQFoBQJiQQQCYkMJARFAZXh0ck5hdGl2ZSgxMDUwKQIFAmFYCQECYWQBBQJieAQCYkQJAQFDAgUCYVkJAQJhbwAEAmJFAOgHBAJiRgkAaAIJAQFDAgUCYVkJAQJhbQAFAmJFBAJiRwkAawMFAmJGBQJiQwkAaAIFAWYAAwQCYkgJAQJhSQEFAmF0BAJiSQkBAmFKAQUCYXQEAmJKCQECYU0BBQJhdAQCYksJAQFBAwUEdGhpcwUCYkkFAmJEBAJiTAkBAUQCBQR0aGlzBQJiSAQCYk0AAAQCYk4JAJYDAQkAzAgCCQBlAgUGaGVpZ2h0BQJiSwkAzAgCAAAFA25pbAQCYk8DCQECIT0CBQJiTQAACQC2AgEFAmJNCQC8AgMJALYCAQUCYkcJALYCAQUBYgUCYkIEAmJQCQC3AgIFAmJBCQC2AgEFAmJ5BAJiUQMJAAACBQJiUAUBZwUBaAUCYlAEAmJ1CQC3AgIFAmJMCQC5AgIFAmJPCQC2AgEFAmJOBAJiUgkAugICCQC2AgEFAmJHBQJiUQQCYlMFBmhlaWdodAQCYlQJALkJAgkAzAgCCQCmAwEFAmJ1CQDMCAIJAKQDAQUCYk4JAMwIAgkApgMBBQJiTwkAzAgCCQCmAwEFAmJBCQDMCAIJAKQDAQUCYkcJAMwIAgkApAMBBQJiRgkAzAgCCQCkAwEFAmJDBQNuaWwCAjo6CQCVCgMFAmJ1CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmJICQCmAwEFAmJ1CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJiSQUCYlMJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYkoJAKYDAQUCYlIFA25pbAUCYlQBAmJVBAJhdAJhcwJieAJieQQCYlYJAQJidwMFAmF0BQJieAUCYnkEAmJ1CAUCYlYCXzEEAmJXCAUCYlYCXzIEAmJYCAUCYlYCXzMEAmJFAOgHBAJiWQkBAmFyAgUCYXMFAmF0BAJicwkBAmF6AQUCYlkEAmJaCQECYUsCBQJhdAUCYXMEAmNhCQECYUwCBQJhdAUCYXMEAmJ2CQECYU8CBQJhdAUCYXMEAmNiCQEBRAIFBHRoaXMFAmJaBAJidAkBAXoCBQR0aGlzBQJjYQQCY2MJAQJicgQJALYCAQUCYnMJALYCAQUCYnQFAmJ1BQJidgQCY2QJAGgCBQFiBQJiRQQCY2UJAJgDAQkAzAgCCQC3AgIFAmNiCQC8AgMJALgCAgUCYnUFAmNjCQC2AgEFAmJzCQC2AgEFAmNkCQDMCAIFAWcFA25pbAQCY2YFAmJ1BAJjZwUGaGVpZ2h0BAJiVAkAuQkCCQDMCAIJAKYDAQUCY2IJAMwIAgkApgMBBQJjYwkAzAgCCQCkAwEFAmJzCQDMCAIFAmJYCQDMCAIJAKQDAQUGaGVpZ2h0BQNuaWwCAjo6CQCVCgMFAmNlCQDOCAIFAmJXCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmJaCQCmAwEFAmNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjYQUCY2cJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYnYJAKYDAQUCY2YFA25pbAUCYlQBAmNoAAQBbgkAoggBCQEBVgADCQABAgUBbgIGU3RyaW5nBAFGBQFuCQDZBAEFAUYDCQABAgUBbgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJjaQAEAW4JAKIIAQkBAVcAAwkAAQIFAW4CBlN0cmluZwQBRgUBbgkA2QQBBQFGAwkAAQIFAW4CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACY2oJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECY2sBAmNsAwkAAAIIBQJjbAZjYWxsZXIFBHRoaXMGBQJjagECY20BAmNsBAFuCQECY2gAAwkAAQIFAW4CCkJ5dGVWZWN0b3IEAmNuBQFuAwkAAAIIBQJjbA9jYWxsZXJQdWJsaWNLZXkFAmNuBgUCY2oDCQABAgUBbgIEVW5pdAMJAAACCAUCY2wGY2FsbGVyBQR0aGlzBgUCY2oJAAIBAgtNYXRjaCBlcnJvcgECY28GAmNsAmFCAmNwAmFEAmNxAmFUBAJhcwkApQgBBQJhRAQCYXQJANgEAQUCYUIEAmJ4CQClCAEFAmNwBAJiWQkBAmFyAgUCYXMFAmF0BAJiegkBAmF1AQUCYXQEAmJzCQECYXoBBQJiWQQCYkEJAQJhegEFAmJ6BAJjcggJAQJiVQQFAmF0BQJhcwUCYngJAQEtAQUCYVQCXzIEAmJlCQECYmMBBQJhdAQCY3MDAwkBAmJqAgUCYmUFAmFzCQAAAgUCYVQFAmJzBwkBAmJxAgUCYmUFAmFzBQNuaWwEAmN0CQEBRAIFBHRoaXMJAQJhdwIFAmF0BQJhcwQCY2UICQECYlUEBQJhdAUCYXMFAmJ4AAACXzEEAmN1CQC4AgIFAmNlBQJjdAQCY3YGBAJjdwMJAL8CAgUCY3UFAWcJAPwHBAUEdGhpcwIPY2xhaW1XeElOVEVSTkFMCQDMCAIFAmF0CQDMCAIFAmFzCQDMCAIFAmN2BQNuaWwFA25pbAUEdW5pdAMJAAACBQJjdwUCY3cDCQBmAgUCYVQFAmJzCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg5wYXNzZWQgYW1vdW50PQkApAMBBQJhVAIbIGlzIGdyZWF0ZXIgdGhhbiBhdmFpbGFibGU9CQCkAwEFAmJzAgwuIGxwQXNzZXRJZD0FAmF0AhIuIHN0YWtlZEJ5VXNlcktFWT0FAmJZCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYlkJAGUCBQJicwUCYVQJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJ6CQBlAgUCYkEFAmFUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNxBQJhVAUCYUIJAMwIAgkBAmFVBQIHdW5zdGFrZQUCYXMFAmF0BQJhVAgFAmNsDXRyYW5zYWN0aW9uSWQFA25pbAUCY3IFAmNzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuEAJjbAELY29uc3RydWN0b3IBAmN4BAJjeQkBAmNtAQUCY2wDCQAAAgUCY3kFAmN5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFMAAUCY3gFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbAENY29uc3RydWN0b3JWMgECY3oEAmNBCQDMCAIJAQJjbQEFAmNsCQDMCAIDCQECIT0CCQCmCAEFAmN6BQR1bml0BgIoaW52YWxpZCB2b3RpbmcgZW1pc3Npb24gY29udHJhY3QgYWRkcmVzcwUDbmlsAwkAAAIFAmNBBQJjQQkAzAgCCQELU3RyaW5nRW50cnkCCQEBTQAFAmN6BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY2wBCnNldE1hbmFnZXIBAmNCBAJjeQkBAmNtAQUCY2wDCQAAAgUCY3kFAmN5BAJjQwkA2QQBBQJjQgMJAAACBQJjQwUCY0MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcABQJjQgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNsAQ5jb25maXJtTWFuYWdlcgAEAmNECQECY2kABAJjRQMJAQlpc0RlZmluZWQBBQJjRAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCY0UFAmNFBAJjRgMJAAACCAUCY2wPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJjRAYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCY0YFAmNGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFWAAkA2AQBCQEFdmFsdWUBBQJjRAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVwAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbAEFc3Rha2UAAwkBAiE9AgkAkAMBCAUCY2wIcGF5bWVudHMAAQkAAgECNGludmFsaWQgcGF5bWVudCAtIGV4YWN0IG9uZSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEAmNHCQCRAwIIBQJjbAhwYXltZW50cwAABAJhQgkBBXZhbHVlAQgFAmNHB2Fzc2V0SWQEAmF0CQDYBAEFAmFCBAJhVAgFAmNHBmFtb3VudAQCYngJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhWAkBAVoBBQJhdAkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFAmF0BAJjSAkApQgBCAUCY2wGY2FsbGVyBAJhcwMJAAACBQJjSAUCYngJAKUIAQgFAmNsDG9yaWdpbkNhbGxlcgUCY0gEAmJZCQECYXICBQJhcwUCYXQEAmJ6CQECYXUBBQJhdAQCYnMJAQJhegEFAmJZBAJiQQkBAmF6AQUCYnoEAmNJCQECYlUEBQJhdAUCYXMFAmJ4BQJhVAQCY2UIBQJjSQJfMQQCY3IIBQJjSQJfMgQCYlQIBQJjSQJfMwQCYmUJAQJiYwEFAmF0BAJjcwMJAQJiagIFAmJlBQJhcwUDbmlsCQECYm4CBQJiZQUCYXMJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJiWQkAZAIFAmJzBQJhVAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYnoJAGQCBQJiQQUCYVQJAMwIAgkBAmFVBQIFc3Rha2UFAmFzBQJhdAUCYVQIBQJjbA10cmFuc2FjdGlvbklkBQNuaWwFAmNyBQJjcwJjbAEHdW5zdGFrZQICYXQCYVQEAmFCCQDZBAEFAmF0BAJieAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFYCQEBWgEFAmF0CQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUCYXQEAmNwCQERQGV4dHJOYXRpdmUoMTA2MikBBQJieAQCY0oJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUCY3AJAQFZAAUCYngEAmNICQClCAEIBQJjbAZjYWxsZXIEAmFEAwMJAAACBQJjSAUCYngGCQAAAgUCY0gFAmNKCAUCY2wMb3JpZ2luQ2FsbGVyCAUCY2wGY2FsbGVyBAJjcQgFAmNsBmNhbGxlcgkBAmNvBgUCY2wFAmFCBQJjcAUCYUQFAmNxBQJhVAJjbAEPdW5zdGFrZUlOVEVSTkFMBAJhQgJhVAJhRAJjcQQCYXQJANgEAQUCYUIEAmNwCQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVgJAQFaAQUCYXQJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJhdAQCY3kDCQAAAggFAmNsBmNhbGxlcgUCY3AGBQJjagMJAAACBQJjeQUCY3kJAQJjbwYFAmNsBQJhQgUCY3AJAQdBZGRyZXNzAQUCYUQJAQdBZGRyZXNzAQUCY3EFAmFUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNsAQdjbGFpbVd4AQJhdAQCYXMJAKUIAQgFAmNsBmNhbGxlcgQCY3YGBAJjSwkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXQJAMwIAgUCYXMJAMwIAgUCY3YFA25pbAUDbmlsCQCUCgIFA25pbAUCY0sCY2wBEWNsYWltV3hEb05vdFRocm93AQJhdAQCYXMJAKUIAQgFAmNsBmNhbGxlcgQCY3YHBAJjSwkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXQJAMwIAgUCYXMJAMwIAgUCY3YFA25pbAUDbmlsCQCUCgIFA25pbAUCY0sCY2wBD2NsYWltV3hJTlRFUk5BTAMCYXQCYXMCY3YEAmN5CQECY2sBBQJjbAMJAAACBQJjeQUCY3kEAmFECQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUCYXMCJWNsYWltV3hJTlRFUk5BTDogaW52YWxpZCB1c2VyIGFkZHJlc3MEAmJ4CQEBeQIFAmFYCQECYWMBBQJhdAQCY0wJAQJhdgIFAmF0BQJhcwQCY00JAQJheQEFAmF0BAJjTgkBAmF3AgUCYXQFAmFzBAJjTwkBAmF4AgUCYXQFAmFzBAJjUAkBAUQCBQR0aGlzBQJjTAQCY3QJAQFEAgUEdGhpcwUCY04EAmNRCQEBRAIFBHRoaXMFAmNPBAJjUgkBAUQCBQR0aGlzBQJjTQQCY1MJAQJiVQQFAmF0BQJhcwUCYngAAAQCY2UIBQJjUwJfMQQCY3IIBQJjUwJfMgQCYlQIBQJjUwJfMwQCY3UJAJgDAQkAzAgCCQC4AgIFAmNlBQJjdAkAzAgCBQFnBQNuaWwDCQDAAgIFAWcFAmN1AwUCY3YJAAIBAhBub3RoaW5nIHRvIGNsYWltCQCUCgIFA25pbAAABAJjVAkAlgMBCQDMCAIJAQFwAQkAkQMCCQEBbAEJAPwHBAUCYVoCDGNsYWltV3hCb29zdAkAzAgCBQJhdAkAzAgCBQJhcwUDbmlsBQNuaWwAAAkAzAgCAAAFA25pbAQCY1UFAmN1BAJjVgkAmQMBCQDMCAIJALkCAgUCY1UJALYCAQACCQDMCAIJALYCAQUCY1QFA25pbAQCY1cJALcCAgUCY1UFAmNWBAJjWAkBAXQBCQCRAwIJAQFsAQkA/AcEBQJhWQIEZW1pdAkAzAgCCQCgAwEFAmNVBQNuaWwFA25pbAAABAJjWQkBAWwBCQD8BwQFAmFZAgRlbWl0CQDMCAIJAKADAQUCY1YFA25pbAUDbmlsAwkAAAIFAmNZBQJjWQQCY1oJALcCAgkAtwICBQJjUAUCY1UFAmNWBAJkYQkAtwICBQJjdAUCY1UEAmRiCQC3AgIFAmNRBQJjVgQCZGMJALcCAgUCY1IFAmN1CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY0wJAKYDAQUCY1oJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY04JAKYDAQUCZGEJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY08JAKYDAQUCZGIJAMwIAgkBC1N0cmluZ0VudHJ5AgUCY00JAKYDAQUCZGMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUQJAKADAQUCY1UFAmNYCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFECQCgAwEFAmNWBQJjWAkAzAgCCQECYVUFAgVjbGFpbQUCYXMFAmF0CQCgAwEFAmN1CAUCY2wNdHJhbnNhY3Rpb25JZAUDbmlsCQCgAwEFAmNXCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNsARtjbGFpbVd4QnVsa0ludGVybmFsUkVBRE9OTFkEAmRkAmRlAmFzAmRmAwkAAAIFAmRkCQCQAwEFAmRlCQCUCgIFA25pbAUCZGYEAmFCCQCRAwIFAmRlBQJkZAQCZGcJALUJAgoAAmRoCQD8BwQFBHRoaXMCD2NsYWltV3hSRUFET05MWQkAzAgCBQJhQgkAzAgCBQJhcwUDbmlsBQNuaWwDCQABAgUCZGgCBlN0cmluZwUCZGgJAAIBCQCsAgIJAAMBBQJkaAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBQFlBAJkaQkAkQMCBQJkZwADBAJkagkAkQMCBQJkZwAEBAJkawkAzQgCBQJkZgkAuQkCCQDMCAICBCVkJWQJAMwIAgUCZGkJAMwIAgUCZGoFA25pbAUBZQQCZGwKAAJkaAkA/AcEBQR0aGlzAhtjbGFpbVd4QnVsa0ludGVybmFsUkVBRE9OTFkJAMwIAgkAZAIFAmRkAAEJAMwIAgUCZGUJAMwIAgUCYXMJAMwIAgUCZGsFA25pbAUDbmlsAwkAAQIFAmRoAglMaXN0W0FueV0FAmRoCQACAQkArAICCQADAQUCZGgCHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQMJAAACBQJkbAUCZGwJAJQKAgUDbmlsBQJkbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbAETY2xhaW1XeEJ1bGtSRUFET05MWQICZGUCYXMEAmRrCQD8BwQFBHRoaXMCG2NsYWltV3hCdWxrSW50ZXJuYWxSRUFET05MWQkAzAgCAAAJAMwIAgUCZGUJAMwIAgUCYXMJAMwIAgUDbmlsBQNuaWwFA25pbAkAlAoCBQNuaWwFAmRrAmNsAQ9jbGFpbVd4UkVBRE9OTFkCAmF0AmFzBAJiWQkBAmFyAgUCYXMFAmF0BAJiegkBAmF1AQUCYXQEAmNMCQECYXYCBQJhdAUCYXMEAmNOCQECYXcCBQJhdAUCYXMEAmJzCQECYXoBBQJiWQQCYkEJAQJhegEFAmJ6BAJjUAkBAUQCBQR0aGlzBQJjTAQCY3QJAQFEAgUEdGhpcwUCY04EAmJ4CQEBeQIFAmFYCQECYWMBBQJhdAQCYkMJARFAZXh0ck5hdGl2ZSgxMDUwKQIFAmFYCQECYWQBBQJieAQCZG0JAQFDAgUCYVkJAQJhbQAEAmJECQEBQwIFAmFZCQECYW8ABAJkbgMJAGYCBQJiRAUGaGVpZ2h0AAAJAGUCBQZoZWlnaHQFAmJEBAJkbwkAawMJAGgCBQJkbQUCZG4FAmJDBQFmBAJkcAkAawMFAmRvBQJicwUCYkEEAmRxCQECYlUEBQJhdAUCYXMFAmJ4AAAEAmNlCAUCZHECXzEEAmNyCAUCZHECXzIEAmJUCAUCZHECXzMEAmN1CQCYAwEJAMwIAgkAuAICBQJjZQUCY3QJAMwIAgUBZwUDbmlsBAJkcgkBAWwBCQD8BwQFAmFaAhRjbGFpbVd4Qm9vc3RSRUFET05MWQkAzAgCBQJhdAkAzAgCBQJhcwUDbmlsBQNuaWwEAmNUCQCWAwEJAMwIAgkBAXABCQCRAwIFAmRyAAAJAMwIAgAABQNuaWwEAmRzCQEBcgEJAJEDAgUCZHIAAQQCY1UFAmN1BAJjVgkAmQMBCQDMCAIJALkCAgUCY1UJALYCAQACCQDMCAIJALYCAQUCY1QFA25pbAQCY1cJALcCAgUCY1UFAmNWCQCUCgIFA25pbAkAuQkCCQDMCAICDiVzJXMlZCVkJWQlZCVzCQDMCAIFAmF0CQDMCAIFAmFzCQDMCAIJAKYDAQUCY1cJAMwIAgkApgMBBQJjUAkAzAgCCQCmAwEFAmNVCQDMCAIJAKYDAQUCY1YJAMwIAgIEc29vbgUDbmlsBQFlAmNsARRzdGFrZWRCeVVzZXJSRUFET05MWQICYXQCYXMEAmJzCQELdmFsdWVPckVsc2UCCQCfCAEJAQJhcgIFAmFzBQJhdAAACQCUCgIFA25pbAUCYnMCY2wBEnVzZXJzTGlzdFRyYXZlcnNhbAECYUIEAmN5AwkAAAIJANgEAQgIBQJjbAZjYWxsZXIFYnl0ZXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBAU0AAgAGCQECY20BBQJjbAMJAAACBQJjeQUCY3kEAmJlCQECYmMBBQJhQgQCZHQJAKIIAQkBAmJiAQUCYUIEAmJrCQCiCAEJAQJiZAEFAmJlBAFuBQJkdAMJAAECBQFuAgRVbml0BAJkdQUCYmsDCQABAgUCZHUCBFVuaXQJAJQKAgUDbmlsBwMJAAECBQJkdQIGU3RyaW5nBAJkdgUCZHUJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYmIBBQJhQgUCZHYFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQFuAgZTdHJpbmcEAmFEBQFuBAJjdAkBAUQCBQR0aGlzCQECYXcCBQJhQgUCYUQEAmNwCQEBeQIFAmFYCQECYWMBBQJhQgQCY2UICQECYlUEBQJhQgUCYUQFAmNwAAACXzEEAmN1CQC4AgIFAmNlBQJjdAQCY3YGBAJjdwMJAL8CAgUCY3UFAWcJAPwHBAUEdGhpcwIPY2xhaW1XeElOVEVSTkFMCQDMCAIFAmFCCQDMCAIFAmFECQDMCAIFAmN2BQNuaWwFA25pbAUEdW5pdAMJAAACBQJjdwUCY3cEAmR3CQCiCAEJAQJiaQIFAmJlBQJhRAQCZHUFAmR3AwkAAQIFAmR1AgRVbml0CQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJiAQUCYUIFA25pbAcDCQABAgUCZHUCBlN0cmluZwQCZHgFAmR1CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJiAQUCYUIFAmR4BQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbAEOb25Nb2RpZnlXZWlnaHQCAmF0AmJ4AwkBAiE9AggFAmNsBmNhbGxlcgUCYVgJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQEAmR5CQECYncDBQJhdAUCYngAAAQCYnUIBQJkeQJfMQQCYlcIBQJkeQJfMgQCYlgIBQJkeQJfMwUCYlcBAmR6AQJkQQAEAmRCBAFuCQECY2gAAwkAAQIFAW4CCkJ5dGVWZWN0b3IEAmNuBQFuBQJjbgMJAAECBQFuAgRVbml0CAUCZHoPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmR6CWJvZHlCeXRlcwkAkQMCCAUCZHoGcHJvb2ZzAAAFAmRCMU9Meg==", "height": 2469523, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ALtC3XNS9GqZwkD4e9R528GegaScZPP52ExxmxjFf7Q2 Next: 9wdw25zHJFRAv4HbHsdQntcoacSpWEMTi5Ue4KoWDW6m Diff:
OldNewDifferences
1717
1818 let h = toBigInt(1)
1919
20-func i (j) = {
21- let k = j
22- if ($isInstanceOf(k, "List[Any]"))
20+func i (j) = makeString(["staking.ride:", toString(this), j], " ")
21+
22+
23+func k (j) = throw(i(j))
24+
25+
26+func l (m) = {
27+ let n = m
28+ if ($isInstanceOf(n, "List[Any]"))
2329 then {
24- let l = k
25- l
30+ let o = n
31+ o
2632 }
2733 else throw("fail to cast into List[Any]")
2834 }
2935
3036
31-func m (j) = {
32- let k = j
33- if ($isInstanceOf(k, "Int"))
37+func p (m) = {
38+ let n = m
39+ if ($isInstanceOf(n, "Int"))
3440 then {
35- let n = k
36- n
41+ let q = n
42+ q
3743 }
3844 else throw("fail to cast into Int")
3945 }
4046
4147
42-func o (j) = {
43- let k = j
44- if ($isInstanceOf(k, "String"))
48+func r (m) = {
49+ let n = m
50+ if ($isInstanceOf(n, "String"))
4551 then {
46- let p = k
47- p
52+ let s = n
53+ s
4854 }
4955 else throw("fail to cast into Int")
5056 }
5157
5258
53-func q (j) = {
54- let k = j
55- if ($isInstanceOf(k, "ByteVector"))
59+func t (m) = {
60+ let n = m
61+ if ($isInstanceOf(n, "ByteVector"))
5662 then {
57- let r = k
58- r
63+ let u = n
64+ u
5965 }
6066 else throw("fail to cast into Int")
6167 }
6268
6369
64-func s (t,u) = valueOrErrorMessage(getString(t, u), (("mandatory this." + u) + " is not defined"))
70+func v (w,x) = valueOrErrorMessage(getString(w, x), (("mandatory this." + x) + " is not defined"))
6571
6672
67-func v (t,u) = valueOrErrorMessage(getString(t, u), (((("mandatory " + toString(t)) + ".") + u) + " is not defined"))
73+func y (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
6874
6975
70-func w (t,u) = valueOrElse(getInteger(t, u), 0)
76+func z (w,x) = valueOrElse(getInteger(w, x), 0)
7177
7278
73-func x (t,u,y) = valueOrElse(getInteger(t, u), y)
79+func A (w,x,B) = valueOrElse(getInteger(w, x), B)
7480
7581
76-func z (t,u) = valueOrErrorMessage(getInteger(t, u), (("mandatory this." + u) + " is not defined"))
82+func C (w,x) = valueOrErrorMessage(getInteger(w, x), (("mandatory this." + x) + " is not defined"))
7783
7884
79-func A (t,u) = value(parseBigInt(valueOrElse(getString(t, u), "0")))
85+func D (w,x) = value(parseBigInt(valueOrElse(getString(w, x), "0")))
8086
8187
82-func B (t,u,y) = {
83- let k = getString(t, u)
84- if ($isInstanceOf(k, "String"))
88+func E (w,x,B) = {
89+ let n = getString(w, x)
90+ if ($isInstanceOf(n, "String"))
8591 then {
86- let C = k
87- value(parseBigInt(C))
92+ let F = n
93+ value(parseBigInt(F))
8894 }
89- else if ($isInstanceOf(k, "Unit"))
90- then y
95+ else if ($isInstanceOf(n, "Unit"))
96+ then B
9197 else throw("Match error")
9298 }
9399
94100
95-func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
101+func G (H,I) = fraction(toBigInt(H), d, toBigInt(I))
96102
97103
98-func G (j,H) = toInt(fraction(j, toBigInt(H), d))
104+func J (m,K) = toInt(fraction(m, toBigInt(K), d))
99105
100106
101-func I () = "%s%s__config__factoryAddress"
107+func L () = "%s%s__config__factoryAddress"
102108
103109
104-func J () = "%s__votingEmissionContract"
110+func M () = "%s__votingEmissionContract"
105111
106112
107-let K = 1
113+let N = 1
108114
109-let L = 2
115+let O = 2
110116
111-let M = 3
117+let P = 3
112118
113-let N = 4
119+let Q = 4
114120
115-let O = 5
121+let R = 5
116122
117-let P = 6
123+let S = 6
118124
119-let Q = 7
125+let T = 7
120126
121-func R () = "%s__factoryConfig"
127+func U () = "%s__factoryConfig"
122128
123129
124-func S () = "%s__managerPublicKey"
130+func V () = "%s__managerPublicKey"
125131
126132
127-func T () = "%s__pendingManagerPublicKey"
133+func W () = "%s__pendingManagerPublicKey"
128134
129135
130-func U () = "%s__stablePoolAddonAddr"
136+func X () = "%s__stablePoolAddonAddr"
131137
132138
133-func V () = "%s__addonAddr"
139+func Y () = "%s__addonAddr"
134140
135141
136-func W (X) = makeString(["%s%s%s", X, "mappings__lpAsset2PoolContract"], e)
142+func Z (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
137143
138144
139-func Y () = "%s__lpTokensList"
145+func ab () = "%s__lpTokensList"
140146
141147
142-func Z (X) = makeString(["%s%s%s", X, "mappings__lpAsset2PoolContract"], e)
148+func ac (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
143149
144150
145-func aa (ab) = makeString(["%s%s", "poolWeight", ab], e)
151+func ad (ae) = makeString(["%s%s", "poolWeight", ae], e)
146152
147153
148-func ac (ad) = split(valueOrElse(getString(ad, Y()), ""), e)
154+func af (ag) = split(valueOrElse(getString(ag, ab()), ""), e)
149155
150156
151-func ae (ad) = split(v(ad, R()), e)
157+func ah (ag) = split(y(ag, U()), e)
152158
153159
154-func af (ag) = addressFromStringValue(ag[L])
160+func ai (aj) = addressFromStringValue(aj[O])
155161
156162
157-func ah (ag) = addressFromStringValue(ag[O])
163+func ak (aj) = addressFromStringValue(aj[R])
158164
159165
160-func ai (ag) = addressFromStringValue(ag[K])
166+func al (aj) = addressFromStringValue(aj[N])
161167
162168
163-func aj () = "%s%s__ratePerBlock__current"
169+func am () = "%s%s__ratePerBlock__current"
164170
165171
166-func ak () = "%s%s__ratePerBlockMax__current"
172+func an () = "%s%s__ratePerBlockMax__current"
167173
168174
169-func al () = "%s%s__emission__startBlock"
175+func ao () = "%s%s__emission__startBlock"
170176
171177
172-func am () = "%s%s__emission__duration"
178+func ap () = "%s%s__emission__duration"
173179
174180
175-func an () = "%s%s__emission__endBlock"
181+func aq () = "%s%s__emission__endBlock"
176182
177183
178-func ao (ap,aq) = makeString(["%s%s%s__staked", ap, aq], e)
184+func ar (as,at) = makeString(["%s%s%s__staked", as, at], e)
179185
180186
181-func ar (aq) = ("%s%s%s__staked__total__" + aq)
187+func au (at) = ("%s%s%s__staked__total__" + at)
182188
183189
184-func as (aq,ap) = makeString(["%s%s%s__claimed", ap, aq], e)
190+func av (at,as) = makeString(["%s%s%s__claimed", as, at], e)
185191
186192
187-func at (aq,ap) = makeString(["%s%s%s__claimedMinReward", ap, aq], e)
193+func aw (at,as) = makeString(["%s%s%s__claimedMinReward", as, at], e)
188194
189195
190-func au (aq,ap) = makeString(["%s%s%s__claimedBoostReward", ap, aq], e)
196+func ax (at,as) = makeString(["%s%s%s__claimedBoostReward", as, at], e)
191197
192198
193-func av (aq) = makeString(["%s%s%s__claimed__total", aq], e)
199+func ay (at) = makeString(["%s%s%s__claimed__total", at], e)
194200
195201
196-func aw (u) = valueOrElse(getInteger(this, u), 0)
202+func az (x) = valueOrElse(getInteger(this, x), 0)
197203
198204
199-func ax (ay) = makeString(["%s%s%s", ay, "total", "bal"], e)
205+func aA (aB) = makeString(["%s%s%s", aB, "total", "bal"], e)
200206
201207
202-func az (ay,aA) = makeString(["%s%s%s", ay, aA, "bal"], e)
208+func aC (aB,aD) = makeString(["%s%s%s", aB, aD, "bal"], e)
203209
204210
205-func aB (ay) = makeString(["%s%s%s", ay, "total", "balINT"], e)
211+func aE (aB) = makeString(["%s%s%s", aB, "total", "balINT"], e)
206212
207213
208-func aC (ay,aA) = makeString(["%s%s%s", ay, aA, "balINT"], e)
214+func aF (aB,aD) = makeString(["%s%s%s", aB, aD, "balINT"], e)
209215
210216
211-func aD (ay) = makeString(["%s%s%s", ay, "total", "lastUpd"], e)
217+func aG (aB) = makeString(["%s%s%s", aB, "total", "lastUpd"], e)
212218
213219
214-func aE (ay,aA) = makeString(["%s%s%s", ay, aA, "lastUpd"], e)
220+func aH (aB,aD) = makeString(["%s%s%s", aB, aD, "lastUpd"], e)
215221
216222
217-func aF (ay) = makeString(["%s%s%s%s", ay, "common", "lpInt"], e)
223+func aI (aB) = makeString(["%s%s%s%s", aB, "common", "lpInt"], e)
218224
219225
220-func aG (ay) = makeString(["%s%s%s%s", ay, "common", "lpIntH"], e)
226+func aJ (aB) = makeString(["%s%s%s%s", aB, "common", "lpIntH"], e)
221227
222228
223-func aH (ay,aA) = makeString(["%s%s%s%s", ay, aA, "lpInt"], e)
229+func aK (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpInt"], e)
224230
225231
226-func aI (ay,aA) = makeString(["%s%s%s%s", ay, aA, "lpIntH"], e)
232+func aL (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpIntH"], e)
227233
228234
229-func aJ (ay) = makeString(["%s", ay, "wxPerLp"], e)
235+func aM (aB) = makeString(["%s", aB, "wxPerLp"], e)
230236
231237
232-func aK (ay) = makeString(["%s", ay, "wxPerLpX18"], e)
238+func aN (aB) = makeString(["%s", aB, "wxPerLpX18"], e)
233239
234240
235-func aL (ay,aA) = makeString(["%s%s%s%s", ay, aA, "uIntL"], e)
241+func aO (aB,aD) = makeString(["%s%s%s%s", aB, aD, "uIntL"], e)
236242
237243
238-func aM (aN,aA,aO) = makeString(["%s%s%s%s__history", aN, aA, aO], e)
244+func aP (aQ,aD,aR) = makeString(["%s%s%s%s__history", aQ, aD, aR], e)
239245
240246
241-func aP (aA,ay,aN,aQ) = makeString(["%s%s%s%d%d%d", aA, ay, aN, toString(height), toString(lastBlock.timestamp), toString(aQ)], e)
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)
242248
243249
244-func aR (aN,aA,ay,aQ,aS) = StringEntry(aM(aN, aA, toBase58String(aS)), aP(aA, ay, aN, aQ))
250+func aU (aQ,aD,aB,aT,aV) = StringEntry(aP(aQ, aD, toBase58String(aV)), aS(aD, aB, aQ, aT))
245251
246252
247-let aT = s(this, I())
253+let aW = v(this, L())
248254
249-let aU = addressFromStringValue(aT)
255+let aX = addressFromStringValue(aW)
250256
251-let ag = ae(aU)
257+let aj = ah(aX)
252258
253-let aV = ah(ag)
259+let aY = ak(aj)
254260
255-let aW = af(ag)
261+let aZ = ai(aj)
256262
257-func aX (ay) = makeString(["%s%s", ay, "nextUser"], e)
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"))
264+
265+func bb (aB) = makeString(["%s%s", aB, "nextUser"], e)
258266
259267
260-func aY (ay) = makeString(["users", ay], e)
268+func bc (aB) = makeString(["users", aB], e)
261269
262270
263-func aZ (ba) = makeString(["%s%s%s", ba, "head"], e)
271+func bd (be) = makeString(["%s%s%s", be, "head"], e)
264272
265273
266-func bb (ba) = makeString(["%s%s%s", ba, "size"], e)
274+func bf (be) = makeString(["%s%s%s", be, "size"], e)
267275
268276
269-func bc (ba,bd) = makeString(["%s%s%s%s", ba, bd, "prev"], e)
277+func bg (be,bh) = makeString(["%s%s%s%s", be, bh, "prev"], e)
270278
271279
272-func be (ba,bd) = makeString(["%s%s%s%s", ba, bd, "next"], e)
280+func bi (be,bh) = makeString(["%s%s%s%s", be, bh, "next"], e)
273281
274282
275-func bf (ba,bd) = {
276- let bg = getString(this, aZ(ba))
277- let bh = getString(this, bc(ba, bd))
278- let bi = getString(this, be(ba, bd))
279- if (if ((bd == valueOrElse(bg, "")))
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, "")))
280288 then true
281- else (bh != unit))
289+ else (bl != unit))
282290 then true
283- else (bi != unit)
291+ else (bm != unit)
284292 }
285293
286294
287-func bj (ba,bd) = {
288- let bg = getString(this, aZ(ba))
289- let bk = valueOrElse(getInteger(this, bb(ba)), 0)
290- let bl = if (!(bf(ba, bd)))
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)))
291299 then true
292300 else throw("Node exists")
293- if ((bl == bl))
294- then (([IntegerEntry(bb(ba), (bk + 1))] ++ (if ((bg != unit))
295- then [StringEntry(be(ba, bd), value(bg)), StringEntry(bc(ba, value(bg)), bd)]
296- else nil)) ++ [StringEntry(aZ(ba), bd)])
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)])
297305 else throw("Strict value is not equal to itself.")
298306 }
299307
300308
301-func bm (ba,bd) = {
302- let bg = getString(this, aZ(ba))
303- let bk = valueOrElse(getInteger(this, bb(ba)), 0)
304- let bh = getString(this, bc(ba, bd))
305- let bi = getString(this, be(ba, bd))
306- ([IntegerEntry(bb(ba), (bk - 1))] ++ (if (if ((bh != unit))
307- then (bi != unit)
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)
308316 else false)
309- then [StringEntry(be(ba, value(bh)), value(bi)), StringEntry(bc(ba, value(bi)), value(bh)), DeleteEntry(bc(ba, bd)), DeleteEntry(be(ba, bd))]
310- else if ((bi != unit))
311- then [StringEntry(aZ(ba), value(bi)), DeleteEntry(be(ba, bd)), DeleteEntry(bc(ba, value(bi)))]
312- else if ((bh != unit))
313- then [DeleteEntry(bc(ba, bd)), DeleteEntry(be(ba, value(bh)))]
314- else if ((bd == valueOrElse(bg, "")))
315- then [DeleteEntry(aZ(ba))]
316- else throw(((("invalid node: " + ba) + ".") + bd))))
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))))
317325 }
318326
319327
320-func bn (bo,bp,bq,br) = if (if ((bp == g))
321- then (bo > g)
328+func br (bs,bt,bu,bv) = if (if ((bt == g))
329+ then (bs > g)
322330 else false)
323331 then g
324- else if ((bo == g))
325- then bq
326- else if (if ((bp > g))
327- then (bo > g)
332+ else if ((bs == g))
333+ then bu
334+ else if (if ((bt > g))
335+ then (bs > g)
328336 else false)
329- then value(parseBigInt(s(this, br)))
337+ then value(parseBigInt(v(this, bv)))
330338 else throw("calcWxPerLpIntegralUserLast: unexpected state")
331339
332340
333-func bs (aq,bt,bu) = {
334- let bv = ar(aq)
335- let bw = toBigInt(aw(bv))
336- let bx = if ((bw == g))
341+func bw (at,bx,by) = {
342+ let bz = au(at)
343+ let bA = toBigInt(az(bz))
344+ let bB = if ((bA == g))
337345 then h
338- else bw
339- let by = getIntegerValue(aU, aa(bt))
340- let bz = z(aV, al())
341- let bA = 1000
342- let bB = (z(aV, aj()) * bA)
343- let bC = fraction(bB, by, (f * 3))
344- let bD = aF(aq)
345- let bE = aG(aq)
346- let bF = aJ(aq)
347- let bG = x(this, bE, bz)
348- let bH = A(this, bD)
349- let bI = 0
350- let bJ = max([(height - bG), 0])
351- let bK = if ((bI != 0))
352- then toBigInt(bI)
353- else fraction(toBigInt(bC), toBigInt(b), bx)
354- let bL = (bw + toBigInt(bu))
355- let bM = if ((bL == g))
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))
356364 then h
357- else bL
358- let bq = (bH + (bK * toBigInt(bJ)))
359- let bN = (toBigInt(bC) / bM)
360- let bO = height
361- let bP = makeString([toString(bq), toString(bJ), toString(bK), toString(bw), toString(bC), toString(bB), toString(by)], "::")
362- $Tuple3(bq, [StringEntry(bD, toString(bq)), IntegerEntry(bE, bO), StringEntry(bF, toString(bN))], bP)
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)
363371 }
364372
365373
366-func bQ (aq,ap,bt,bu) = {
367- let bR = bs(aq, bt, bu)
368- let bq = bR._1
369- let bS = bR._2
370- let bT = bR._3
371- let bA = 1000
372- let bU = ao(ap, aq)
373- let bo = aw(bU)
374- let bV = aH(aq, ap)
375- let bW = aI(aq, ap)
376- let br = aL(aq, ap)
377- let bX = A(this, bV)
378- let bp = w(this, bW)
379- let bY = bn(toBigInt(bo), toBigInt(bp), bq, br)
380- let bZ = (b * bA)
381- let ca = max([(bX + fraction((bq - bY), toBigInt(bo), toBigInt(bZ))), g])
382- let cb = bq
383- let cc = height
384- let bP = makeString([toString(bX), toString(bY), toString(bo), bT, toString(height)], "::")
385- $Tuple3(ca, (bS ++ [StringEntry(bV, toString(ca)), IntegerEntry(bW, cc), StringEntry(br, toString(cb))]), bP)
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)
386394 }
387395
388396
389-func cd () = {
390- let k = getString(S())
391- if ($isInstanceOf(k, "String"))
397+func ch () = {
398+ let n = getString(V())
399+ if ($isInstanceOf(n, "String"))
392400 then {
393- let C = k
394- fromBase58String(C)
401+ let F = n
402+ fromBase58String(F)
395403 }
396- else if ($isInstanceOf(k, "Unit"))
404+ else if ($isInstanceOf(n, "Unit"))
397405 then unit
398406 else throw("Match error")
399407 }
400408
401409
402-func ce () = {
403- let k = getString(T())
404- if ($isInstanceOf(k, "String"))
410+func ci () = {
411+ let n = getString(W())
412+ if ($isInstanceOf(n, "String"))
405413 then {
406- let C = k
407- fromBase58String(C)
414+ let F = n
415+ fromBase58String(F)
408416 }
409- else if ($isInstanceOf(k, "Unit"))
417+ else if ($isInstanceOf(n, "Unit"))
410418 then unit
411419 else throw("Match error")
412420 }
413421
414422
415-let cf = throw("Permission denied")
423+let cj = throw("Permission denied")
416424
417-func cg (ch) = if ((ch.caller == this))
425+func ck (cl) = if ((cl.caller == this))
418426 then true
419- else cf
427+ else cj
420428
421429
422-func ci (ch) = {
423- let k = cd()
424- if ($isInstanceOf(k, "ByteVector"))
430+func cm (cl) = {
431+ let n = ch()
432+ if ($isInstanceOf(n, "ByteVector"))
425433 then {
426- let cj = k
427- if ((ch.callerPublicKey == cj))
434+ let cn = n
435+ if ((cl.callerPublicKey == cn))
428436 then true
429- else cf
437+ else cj
430438 }
431- else if ($isInstanceOf(k, "Unit"))
432- then if ((ch.caller == this))
439+ else if ($isInstanceOf(n, "Unit"))
440+ then if ((cl.caller == this))
433441 then true
434- else cf
442+ else cj
435443 else throw("Match error")
436444 }
437445
438446
439-@Callable(ch)
440-func constructor (ck) = {
441- let cl = ci(ch)
442- if ((cl == cl))
443- then [StringEntry(I(), ck)]
447+func co (cl,aB,cp,aD,cq,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 bA = az(bz)
455+ let cr = bU(at, as, bx, -(aT))._2
456+ let be = bc(at)
457+ let cs = if (if (bj(be, as))
458+ then (aT == bs)
459+ else false)
460+ then bq(be, as)
461+ else nil
462+ let ct = D(this, aw(at, as))
463+ let ce = bU(at, as, bx, 0)._1
464+ let cu = (ce - ct)
465+ let cv = true
466+ let cw = if ((cu > g))
467+ then invoke(this, "claimWxINTERNAL", [at, as, cv], nil)
468+ else unit
469+ if ((cw == cw))
470+ then if ((aT > bs))
471+ then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
472+ else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cq, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cr) ++ cs)
473+ else throw("Strict value is not equal to itself.")
474+ }
475+
476+
477+@Callable(cl)
478+func constructor (cx) = {
479+ let cy = cm(cl)
480+ if ((cy == cy))
481+ then [StringEntry(L(), cx)]
444482 else throw("Strict value is not equal to itself.")
445483 }
446484
447485
448486
449-@Callable(ch)
450-func constructorV2 (cm) = {
451- let cn = [ci(ch), if ((addressFromString(cm) != unit))
487+@Callable(cl)
488+func constructorV2 (cz) = {
489+ let cA = [cm(cl), if ((addressFromString(cz) != unit))
452490 then true
453491 else "invalid voting emission contract address"]
454- if ((cn == cn))
455- then [StringEntry(J(), cm)]
492+ if ((cA == cA))
493+ then [StringEntry(M(), cz)]
456494 else throw("Strict value is not equal to itself.")
457495 }
458496
459497
460498
461-@Callable(ch)
462-func setManager (co) = {
463- let cl = ci(ch)
464- if ((cl == cl))
499+@Callable(cl)
500+func setManager (cB) = {
501+ let cy = cm(cl)
502+ if ((cy == cy))
465503 then {
466- let cp = fromBase58String(co)
467- if ((cp == cp))
468- then [StringEntry(T(), co)]
504+ let cC = fromBase58String(cB)
505+ if ((cC == cC))
506+ then [StringEntry(W(), cB)]
469507 else throw("Strict value is not equal to itself.")
470508 }
471509 else throw("Strict value is not equal to itself.")
473511
474512
475513
476-@Callable(ch)
514+@Callable(cl)
477515 func confirmManager () = {
478- let cq = ce()
479- let cr = if (isDefined(cq))
516+ let cD = ci()
517+ let cE = if (isDefined(cD))
480518 then true
481519 else throw("No pending manager")
482- if ((cr == cr))
520+ if ((cE == cE))
483521 then {
484- let cs = if ((ch.callerPublicKey == value(cq)))
522+ let cF = if ((cl.callerPublicKey == value(cD)))
485523 then true
486524 else throw("You are not pending manager")
487- if ((cs == cs))
488- then [StringEntry(S(), toBase58String(value(cq))), DeleteEntry(T())]
525+ if ((cF == cF))
526+ then [StringEntry(V(), toBase58String(value(cD))), DeleteEntry(W())]
489527 else throw("Strict value is not equal to itself.")
490528 }
491529 else throw("Strict value is not equal to itself.")
493531
494532
495533
496-@Callable(ch)
497-func stake () = if ((size(ch.payments) != 1))
534+@Callable(cl)
535+func stake () = if ((size(cl.payments) != 1))
498536 then throw("invalid payment - exact one payment must be attached")
499537 else {
500- let ct = ch.payments[0]
501- let ay = value(ct.assetId)
502- let aq = toBase58String(ay)
503- let aQ = ct.amount
504- let bt = valueOrErrorMessage(getString(aU, W(aq)), ("unsupported lp asset " + aq))
505- let cu = toString(ch.caller)
506- let ap = if ((cu == bt))
507- then toString(ch.originCaller)
508- else cu
509- let bU = ao(ap, aq)
510- let bv = ar(aq)
511- let bo = aw(bU)
512- let bw = aw(bv)
513- let cv = bQ(aq, ap, bt, aQ)
514- let ca = cv._1
515- let cw = cv._2
516- let bP = cv._3
517- let ba = aY(aq)
518- let cx = if (bf(ba, ap))
538+ let cG = cl.payments[0]
539+ let aB = value(cG.assetId)
540+ let at = toBase58String(aB)
541+ let aT = cG.amount
542+ let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
543+ let cH = toString(cl.caller)
544+ let as = if ((cH == bx))
545+ then toString(cl.originCaller)
546+ else cH
547+ let bY = ar(as, at)
548+ let bz = au(at)
549+ let bs = az(bY)
550+ let bA = az(bz)
551+ let cI = bU(at, as, bx, aT)
552+ let ce = cI._1
553+ let cr = cI._2
554+ let bT = cI._3
555+ let be = bc(at)
556+ let cs = if (bj(be, as))
519557 then nil
520- else bj(ba, ap)
521- (([IntegerEntry(bU, (bo + aQ)), IntegerEntry(bv, (bw + aQ)), aR("stake", ap, aq, aQ, ch.transactionId)] ++ cw) ++ cx)
558+ else bn(be, as)
559+ (([IntegerEntry(bY, (bs + aT)), IntegerEntry(bz, (bA + aT)), aU("stake", as, at, aT, cl.transactionId)] ++ cr) ++ cs)
522560 }
523561
524562
525563
526-@Callable(ch)
527-func unstake (aq,aQ) = {
528- let ay = fromBase58String(aq)
529- let bt = valueOrErrorMessage(getString(aU, W(aq)), ("unsupported lp asset " + aq))
530- let cy = valueOrElse(getString(addressFromStringValue(bt), V()), bt)
531- let cu = toString(ch.caller)
532- let ap = if (if ((cu == bt))
564+@Callable(cl)
565+func unstake (at,aT) = {
566+ let aB = fromBase58String(at)
567+ let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
568+ let cp = addressFromStringValue(bx)
569+ let cJ = valueOrElse(getString(cp, Y()), bx)
570+ let cH = toString(cl.caller)
571+ let aD = if (if ((cH == bx))
533572 then true
534- else (cu == cy))
535- then toString(ch.originCaller)
536- else cu
537- let bU = ao(ap, aq)
538- let bv = ar(aq)
539- let bo = aw(bU)
540- let bw = aw(bv)
541- let cw = bQ(aq, ap, bt, -(aQ))._2
542- let ba = aY(aq)
543- let cx = if (if (bf(ba, ap))
544- then (aQ == bo)
545- else false)
546- then bm(ba, ap)
547- else nil
548- let cz = A(this, at(aq, ap))
549- let cA = v(aU, Z(aq))
550- let ca = bQ(aq, ap, cA, 0)._1
551- let cB = (ca - cz)
552- let cC = if ((cB > g))
553- then invoke(this, "claimWxINTERNAL", [aq, ap], nil)
554- else unit
555- if ((cC == cC))
556- then if ((aQ > bo))
557- then throw(((((((("passed amount=" + toString(aQ)) + " is greater than available=") + toString(bo)) + ". lpAssetId=") + aq) + ". stakedByUserKEY=") + bU))
558- else (([IntegerEntry(bU, (bo - aQ)), IntegerEntry(bv, (bw - aQ)), ScriptTransfer(ch.caller, aQ, ay), aR("unstake", ap, aq, aQ, ch.transactionId)] ++ cw) ++ cx)
573+ else (cH == cJ))
574+ then cl.originCaller
575+ else cl.caller
576+ let cq = cl.caller
577+ co(cl, aB, cp, aD, cq, aT)
578+ }
579+
580+
581+
582+@Callable(cl)
583+func unstakeINTERNAL (aB,aT,aD,cq) = {
584+ let at = toBase58String(aB)
585+ let cp = addressFromStringValue(valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at)))
586+ let cy = if ((cl.caller == cp))
587+ then true
588+ else cj
589+ if ((cy == cy))
590+ then co(cl, aB, cp, Address(aD), Address(cq), aT)
559591 else throw("Strict value is not equal to itself.")
560592 }
561593
562594
563595
564-@Callable(ch)
565-func claimWx (aq) = {
566- let ap = toString(ch.caller)
567- let cD = invoke(this, "claimWxINTERNAL", [aq, ap], nil)
568- $Tuple2(nil, cD)
596+@Callable(cl)
597+func claimWx (at) = {
598+ let as = toString(cl.caller)
599+ let cv = true
600+ let cK = invoke(this, "claimWxINTERNAL", [at, as, cv], nil)
601+ $Tuple2(nil, cK)
569602 }
570603
571604
572605
573-@Callable(ch)
574-func claimWxINTERNAL (aq,ap) = {
575- let cl = cg(ch)
576- if ((cl == cl))
606+@Callable(cl)
607+func claimWxDoNotThrow (at) = {
608+ let as = toString(cl.caller)
609+ let cv = false
610+ let cK = invoke(this, "claimWxINTERNAL", [at, as, cv], nil)
611+ $Tuple2(nil, cK)
612+ }
613+
614+
615+
616+@Callable(cl)
617+func claimWxINTERNAL (at,as,cv) = {
618+ let cy = ck(cl)
619+ if ((cy == cy))
577620 then {
578- let aA = valueOrErrorMessage(addressFromString(ap), "claimWxINTERNAL: invalid user address")
579- let bt = v(aU, Z(aq))
580- let cE = as(aq, ap)
581- let cF = av(aq)
582- let cG = at(aq, ap)
583- let cH = au(aq, ap)
584- let cI = A(this, cE)
585- let cz = A(this, cG)
586- let cJ = A(this, cH)
587- let cK = A(this, cF)
588- let cL = bQ(aq, ap, bt, 0)
589- let ca = cL._1
590- let cw = cL._2
591- let bP = cL._3
592- let cB = max([(ca - cz), g])
593- if ((g >= cB))
594- then throw("nothing to claim")
621+ let aD = valueOrErrorMessage(addressFromString(as), "claimWxINTERNAL: invalid user address")
622+ let bx = y(aX, ac(at))
623+ let cL = av(at, as)
624+ let cM = ay(at)
625+ let cN = aw(at, as)
626+ let cO = ax(at, as)
627+ let cP = D(this, cL)
628+ let ct = D(this, cN)
629+ let cQ = D(this, cO)
630+ let cR = D(this, cM)
631+ let cS = bU(at, as, bx, 0)
632+ let ce = cS._1
633+ let cr = cS._2
634+ let bT = cS._3
635+ let cu = max([(ce - ct), g])
636+ if ((g >= cu))
637+ then if (cv)
638+ then throw("nothing to claim")
639+ else $Tuple2(nil, 0)
595640 else {
596- let cM = max([m(i(invoke(aW, "claimWxBoost", [aq, ap], nil))[0]), 0])
597- let cN = cB
598- let cO = min([(cN * toBigInt(2)), toBigInt(cM)])
599- let cP = q(i(invoke(aV, "emit", [toInt(cN)], nil))[0])
600- let cQ = i(invoke(aV, "emit", [toInt(cO)], nil))
601- if ((cQ == cQ))
641+ let cT = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
642+ let cU = cu
643+ let cV = min([(cU * toBigInt(2)), toBigInt(cT)])
644+ let cW = (cU + cV)
645+ let cX = t(l(invoke(aY, "emit", [toInt(cU)], nil))[0])
646+ let cY = l(invoke(aY, "emit", [toInt(cV)], nil))
647+ if ((cY == cY))
602648 then {
603- let cR = ((cI + cN) + cO)
604- let cS = (cz + cN)
605- let cT = (cJ + cO)
606- let cU = (cK + cB)
607-[StringEntry(cE, toString(cR)), StringEntry(cG, toString(cS)), StringEntry(cH, toString(cT)), StringEntry(cF, toString(cU)), ScriptTransfer(aA, toInt(cN), cP), ScriptTransfer(aA, toInt(cO), cP), aR("claim", ap, aq, toInt(cB), ch.transactionId)]
649+ let cZ = ((cP + cU) + cV)
650+ let da = (ct + cU)
651+ let db = (cQ + cV)
652+ let dc = (cR + cu)
653+ $Tuple2([StringEntry(cL, toString(cZ)), StringEntry(cN, toString(da)), StringEntry(cO, toString(db)), StringEntry(cM, toString(dc)), ScriptTransfer(aD, toInt(cU), cX), ScriptTransfer(aD, toInt(cV), cX), aU("claim", as, at, toInt(cu), cl.transactionId)], toInt(cW))
608654 }
609655 else throw("Strict value is not equal to itself.")
610656 }
614660
615661
616662
617-@Callable(ch)
618-func claimWxBulkInternalREADONLY (cV,cW,ap,cX) = if ((cV == size(cW)))
619- then $Tuple2(nil, cX)
663+@Callable(cl)
664+func claimWxBulkInternalREADONLY (dd,de,as,df) = if ((dd == size(de)))
665+ then $Tuple2(nil, df)
620666 else {
621- let ay = cW[cV]
622- let cY = split({
623- let cZ = invoke(this, "claimWxREADONLY", [ay, ap], nil)
624- if ($isInstanceOf(cZ, "String"))
625- then cZ
626- else throw(($getType(cZ) + " couldn't be cast to String"))
667+ let aB = de[dd]
668+ let dg = split({
669+ let dh = invoke(this, "claimWxREADONLY", [aB, as], nil)
670+ if ($isInstanceOf(dh, "String"))
671+ then dh
672+ else throw(($getType(dh) + " couldn't be cast to String"))
627673 }, e)
628- let da = cY[3]
629- let db = cY[4]
630- let dc = (cX :+ makeString(["%d%d", da, db], e))
631- let dd = {
632- let cZ = invoke(this, "claimWxBulkInternalREADONLY", [(cV + 1), cW, ap, dc], nil)
633- if ($isInstanceOf(cZ, "List[Any]"))
634- then cZ
635- else throw(($getType(cZ) + " couldn't be cast to List[Any]"))
674+ let di = dg[3]
675+ let dj = dg[4]
676+ let dk = (df :+ makeString(["%d%d", di, dj], e))
677+ let dl = {
678+ let dh = invoke(this, "claimWxBulkInternalREADONLY", [(dd + 1), de, as, dk], nil)
679+ if ($isInstanceOf(dh, "List[Any]"))
680+ then dh
681+ else throw(($getType(dh) + " couldn't be cast to List[Any]"))
636682 }
637- if ((dd == dd))
638- then $Tuple2(nil, dd)
683+ if ((dl == dl))
684+ then $Tuple2(nil, dl)
639685 else throw("Strict value is not equal to itself.")
640686 }
641687
642688
643689
644-@Callable(ch)
645-func claimWxBulkREADONLY (cW,ap) = {
646- let dc = invoke(this, "claimWxBulkInternalREADONLY", [0, cW, ap, nil], nil)
647- $Tuple2(nil, dc)
690+@Callable(cl)
691+func claimWxBulkREADONLY (de,as) = {
692+ let dk = invoke(this, "claimWxBulkInternalREADONLY", [0, de, as, nil], nil)
693+ $Tuple2(nil, dk)
648694 }
649695
650696
651697
652-@Callable(ch)
653-func claimWxREADONLY (aq,ap) = {
654- let bU = ao(ap, aq)
655- let bv = ar(aq)
656- let cE = as(aq, ap)
657- let cG = at(aq, ap)
658- let bo = aw(bU)
659- let bw = aw(bv)
660- let cI = A(this, cE)
661- let cz = A(this, cG)
662- let bt = v(aU, Z(aq))
663- let by = getIntegerValue(aU, aa(bt))
664- let de = z(aV, aj())
665- let bz = z(aV, al())
666- let df = if ((bz > height))
698+@Callable(cl)
699+func claimWxREADONLY (at,as) = {
700+ let bY = ar(as, at)
701+ let bz = au(at)
702+ let cL = av(at, as)
703+ let cN = aw(at, as)
704+ let bs = az(bY)
705+ let bA = az(bz)
706+ let cP = D(this, cL)
707+ let ct = D(this, cN)
708+ let bx = y(aX, ac(at))
709+ let bC = getIntegerValue(aX, ad(bx))
710+ let dm = C(aY, am())
711+ let bD = C(aY, ao())
712+ let dn = if ((bD > height))
667713 then 0
668- else (height - bz)
669- let dg = fraction((de * df), by, f)
670- let dh = fraction(dg, bo, bw)
671- let di = bQ(aq, ap, bt, 0)
672- let ca = di._1
673- let cw = di._2
674- let bP = di._3
675- let cB = max([(ca - cz), g])
676- let dj = i(invoke(aW, "claimWxBoostREADONLY", [aq, ap], nil))
677- let cM = max([m(dj[0]), 0])
678- let dk = o(dj[1])
679- let cN = cB
680- let cO = min([(cN * toBigInt(2)), toBigInt(cM)])
681- let dl = (cN + cO)
682- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", aq, ap, toString(dl), toString(cI), toString(cN), toString(cO), "soon"], e))
714+ else (height - bD)
715+ let do = fraction((dm * dn), bC, f)
716+ let dp = fraction(do, bs, bA)
717+ let dq = bU(at, as, bx, 0)
718+ let ce = dq._1
719+ let cr = dq._2
720+ let bT = dq._3
721+ let cu = max([(ce - ct), g])
722+ let dr = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
723+ let cT = max([p(dr[0]), 0])
724+ let ds = r(dr[1])
725+ let cU = cu
726+ let cV = min([(cU * toBigInt(2)), toBigInt(cT)])
727+ let cW = (cU + cV)
728+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cW), toString(cP), toString(cU), toString(cV), "soon"], e))
683729 }
684730
685731
686732
687-@Callable(ch)
688-func usersListTraversal (ay) = {
689- let cl = if ((toBase58String(ch.caller.bytes) == valueOrElse(getString(this, J()), "")))
733+@Callable(cl)
734+func stakedByUserREADONLY (at,as) = {
735+ let bs = valueOrElse(getInteger(ar(as, at)), 0)
736+ $Tuple2(nil, bs)
737+ }
738+
739+
740+
741+@Callable(cl)
742+func usersListTraversal (aB) = {
743+ let cy = if ((toBase58String(cl.caller.bytes) == valueOrElse(getString(this, M()), "")))
690744 then true
691- else ci(ch)
692- if ((cl == cl))
745+ else cm(cl)
746+ if ((cy == cy))
693747 then {
694- let ba = aY(ay)
695- let dm = getString(aX(ay))
696- let bg = getString(aZ(ba))
697- let k = dm
698- if ($isInstanceOf(k, "Unit"))
748+ let be = bc(aB)
749+ let dt = getString(bb(aB))
750+ let bk = getString(bd(be))
751+ let n = dt
752+ if ($isInstanceOf(n, "Unit"))
699753 then {
700- let dn = bg
701- if ($isInstanceOf(dn, "Unit"))
754+ let du = bk
755+ if ($isInstanceOf(du, "Unit"))
702756 then $Tuple2(nil, false)
703- else if ($isInstanceOf(dn, "String"))
757+ else if ($isInstanceOf(du, "String"))
704758 then {
705- let do = dn
706- $Tuple2([StringEntry(aX(ay), do)], true)
759+ let dv = du
760+ $Tuple2([StringEntry(bb(aB), dv)], true)
707761 }
708762 else throw("Match error")
709763 }
710- else if ($isInstanceOf(k, "String"))
764+ else if ($isInstanceOf(n, "String"))
711765 then {
712- let aA = k
713- let cz = A(this, at(ay, aA))
714- let cA = v(aU, Z(ay))
715- let ca = bQ(ay, aA, cA, 0)._1
716- let cB = (ca - cz)
717- let cC = if ((cB > g))
718- then invoke(this, "claimWxINTERNAL", [ay, aA], nil)
766+ let aD = n
767+ let ct = D(this, aw(aB, aD))
768+ let cp = y(aX, ac(aB))
769+ let ce = bU(aB, aD, cp, 0)._1
770+ let cu = (ce - ct)
771+ let cv = true
772+ let cw = if ((cu > g))
773+ then invoke(this, "claimWxINTERNAL", [aB, aD, cv], nil)
719774 else unit
720- if ((cC == cC))
775+ if ((cw == cw))
721776 then {
722- let dp = getString(be(ba, aA))
723- let dn = dp
724- if ($isInstanceOf(dn, "Unit"))
725- then $Tuple2([DeleteEntry(aX(ay))], false)
726- else if ($isInstanceOf(dn, "String"))
777+ let dw = getString(bi(be, aD))
778+ let du = dw
779+ if ($isInstanceOf(du, "Unit"))
780+ then $Tuple2([DeleteEntry(bb(aB))], false)
781+ else if ($isInstanceOf(du, "String"))
727782 then {
728- let dq = dn
729- $Tuple2([StringEntry(aX(ay), dq)], true)
783+ let dx = du
784+ $Tuple2([StringEntry(bb(aB), dx)], true)
730785 }
731786 else throw("Match error")
732787 }
739794
740795
741796
742-@Callable(ch)
743-func onModifyWeight (aq,bt) = if ((ch.caller != aU))
797+@Callable(cl)
798+func onModifyWeight (at,bx) = if ((cl.caller != aX))
744799 then throw("permissions denied")
745800 else {
746- let dr = bs(aq, bt, 0)
747- let bq = dr._1
748- let bS = dr._2
749- let bT = dr._3
750- bS
801+ let dy = bw(at, bx, 0)
802+ let bu = dy._1
803+ let bW = dy._2
804+ let bX = dy._3
805+ bW
751806 }
752807
753808
754-@Verifier(ds)
755-func dt () = {
756- let du = {
757- let k = cd()
758- if ($isInstanceOf(k, "ByteVector"))
809+@Verifier(dz)
810+func dA () = {
811+ let dB = {
812+ let n = ch()
813+ if ($isInstanceOf(n, "ByteVector"))
759814 then {
760- let cj = k
761- cj
815+ let cn = n
816+ cn
762817 }
763- else if ($isInstanceOf(k, "Unit"))
764- then ds.senderPublicKey
818+ else if ($isInstanceOf(n, "Unit"))
819+ then dz.senderPublicKey
765820 else throw("Match error")
766821 }
767- sigVerify(ds.bodyBytes, ds.proofs[0], du)
822+ sigVerify(dz.bodyBytes, dz.proofs[0], dB)
768823 }
769824
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = 18
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = "__"
1313
1414 let f = b
1515
1616 let g = toBigInt(0)
1717
1818 let h = toBigInt(1)
1919
20-func i (j) = {
21- let k = j
22- if ($isInstanceOf(k, "List[Any]"))
20+func i (j) = makeString(["staking.ride:", toString(this), j], " ")
21+
22+
23+func k (j) = throw(i(j))
24+
25+
26+func l (m) = {
27+ let n = m
28+ if ($isInstanceOf(n, "List[Any]"))
2329 then {
24- let l = k
25- l
30+ let o = n
31+ o
2632 }
2733 else throw("fail to cast into List[Any]")
2834 }
2935
3036
31-func m (j) = {
32- let k = j
33- if ($isInstanceOf(k, "Int"))
37+func p (m) = {
38+ let n = m
39+ if ($isInstanceOf(n, "Int"))
3440 then {
35- let n = k
36- n
41+ let q = n
42+ q
3743 }
3844 else throw("fail to cast into Int")
3945 }
4046
4147
42-func o (j) = {
43- let k = j
44- if ($isInstanceOf(k, "String"))
48+func r (m) = {
49+ let n = m
50+ if ($isInstanceOf(n, "String"))
4551 then {
46- let p = k
47- p
52+ let s = n
53+ s
4854 }
4955 else throw("fail to cast into Int")
5056 }
5157
5258
53-func q (j) = {
54- let k = j
55- if ($isInstanceOf(k, "ByteVector"))
59+func t (m) = {
60+ let n = m
61+ if ($isInstanceOf(n, "ByteVector"))
5662 then {
57- let r = k
58- r
63+ let u = n
64+ u
5965 }
6066 else throw("fail to cast into Int")
6167 }
6268
6369
64-func s (t,u) = valueOrErrorMessage(getString(t, u), (("mandatory this." + u) + " is not defined"))
70+func v (w,x) = valueOrErrorMessage(getString(w, x), (("mandatory this." + x) + " is not defined"))
6571
6672
67-func v (t,u) = valueOrErrorMessage(getString(t, u), (((("mandatory " + toString(t)) + ".") + u) + " is not defined"))
73+func y (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined"))
6874
6975
70-func w (t,u) = valueOrElse(getInteger(t, u), 0)
76+func z (w,x) = valueOrElse(getInteger(w, x), 0)
7177
7278
73-func x (t,u,y) = valueOrElse(getInteger(t, u), y)
79+func A (w,x,B) = valueOrElse(getInteger(w, x), B)
7480
7581
76-func z (t,u) = valueOrErrorMessage(getInteger(t, u), (("mandatory this." + u) + " is not defined"))
82+func C (w,x) = valueOrErrorMessage(getInteger(w, x), (("mandatory this." + x) + " is not defined"))
7783
7884
79-func A (t,u) = value(parseBigInt(valueOrElse(getString(t, u), "0")))
85+func D (w,x) = value(parseBigInt(valueOrElse(getString(w, x), "0")))
8086
8187
82-func B (t,u,y) = {
83- let k = getString(t, u)
84- if ($isInstanceOf(k, "String"))
88+func E (w,x,B) = {
89+ let n = getString(w, x)
90+ if ($isInstanceOf(n, "String"))
8591 then {
86- let C = k
87- value(parseBigInt(C))
92+ let F = n
93+ value(parseBigInt(F))
8894 }
89- else if ($isInstanceOf(k, "Unit"))
90- then y
95+ else if ($isInstanceOf(n, "Unit"))
96+ then B
9197 else throw("Match error")
9298 }
9399
94100
95-func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
101+func G (H,I) = fraction(toBigInt(H), d, toBigInt(I))
96102
97103
98-func G (j,H) = toInt(fraction(j, toBigInt(H), d))
104+func J (m,K) = toInt(fraction(m, toBigInt(K), d))
99105
100106
101-func I () = "%s%s__config__factoryAddress"
107+func L () = "%s%s__config__factoryAddress"
102108
103109
104-func J () = "%s__votingEmissionContract"
110+func M () = "%s__votingEmissionContract"
105111
106112
107-let K = 1
113+let N = 1
108114
109-let L = 2
115+let O = 2
110116
111-let M = 3
117+let P = 3
112118
113-let N = 4
119+let Q = 4
114120
115-let O = 5
121+let R = 5
116122
117-let P = 6
123+let S = 6
118124
119-let Q = 7
125+let T = 7
120126
121-func R () = "%s__factoryConfig"
127+func U () = "%s__factoryConfig"
122128
123129
124-func S () = "%s__managerPublicKey"
130+func V () = "%s__managerPublicKey"
125131
126132
127-func T () = "%s__pendingManagerPublicKey"
133+func W () = "%s__pendingManagerPublicKey"
128134
129135
130-func U () = "%s__stablePoolAddonAddr"
136+func X () = "%s__stablePoolAddonAddr"
131137
132138
133-func V () = "%s__addonAddr"
139+func Y () = "%s__addonAddr"
134140
135141
136-func W (X) = makeString(["%s%s%s", X, "mappings__lpAsset2PoolContract"], e)
142+func Z (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
137143
138144
139-func Y () = "%s__lpTokensList"
145+func ab () = "%s__lpTokensList"
140146
141147
142-func Z (X) = makeString(["%s%s%s", X, "mappings__lpAsset2PoolContract"], e)
148+func ac (aa) = makeString(["%s%s%s", aa, "mappings__lpAsset2PoolContract"], e)
143149
144150
145-func aa (ab) = makeString(["%s%s", "poolWeight", ab], e)
151+func ad (ae) = makeString(["%s%s", "poolWeight", ae], e)
146152
147153
148-func ac (ad) = split(valueOrElse(getString(ad, Y()), ""), e)
154+func af (ag) = split(valueOrElse(getString(ag, ab()), ""), e)
149155
150156
151-func ae (ad) = split(v(ad, R()), e)
157+func ah (ag) = split(y(ag, U()), e)
152158
153159
154-func af (ag) = addressFromStringValue(ag[L])
160+func ai (aj) = addressFromStringValue(aj[O])
155161
156162
157-func ah (ag) = addressFromStringValue(ag[O])
163+func ak (aj) = addressFromStringValue(aj[R])
158164
159165
160-func ai (ag) = addressFromStringValue(ag[K])
166+func al (aj) = addressFromStringValue(aj[N])
161167
162168
163-func aj () = "%s%s__ratePerBlock__current"
169+func am () = "%s%s__ratePerBlock__current"
164170
165171
166-func ak () = "%s%s__ratePerBlockMax__current"
172+func an () = "%s%s__ratePerBlockMax__current"
167173
168174
169-func al () = "%s%s__emission__startBlock"
175+func ao () = "%s%s__emission__startBlock"
170176
171177
172-func am () = "%s%s__emission__duration"
178+func ap () = "%s%s__emission__duration"
173179
174180
175-func an () = "%s%s__emission__endBlock"
181+func aq () = "%s%s__emission__endBlock"
176182
177183
178-func ao (ap,aq) = makeString(["%s%s%s__staked", ap, aq], e)
184+func ar (as,at) = makeString(["%s%s%s__staked", as, at], e)
179185
180186
181-func ar (aq) = ("%s%s%s__staked__total__" + aq)
187+func au (at) = ("%s%s%s__staked__total__" + at)
182188
183189
184-func as (aq,ap) = makeString(["%s%s%s__claimed", ap, aq], e)
190+func av (at,as) = makeString(["%s%s%s__claimed", as, at], e)
185191
186192
187-func at (aq,ap) = makeString(["%s%s%s__claimedMinReward", ap, aq], e)
193+func aw (at,as) = makeString(["%s%s%s__claimedMinReward", as, at], e)
188194
189195
190-func au (aq,ap) = makeString(["%s%s%s__claimedBoostReward", ap, aq], e)
196+func ax (at,as) = makeString(["%s%s%s__claimedBoostReward", as, at], e)
191197
192198
193-func av (aq) = makeString(["%s%s%s__claimed__total", aq], e)
199+func ay (at) = makeString(["%s%s%s__claimed__total", at], e)
194200
195201
196-func aw (u) = valueOrElse(getInteger(this, u), 0)
202+func az (x) = valueOrElse(getInteger(this, x), 0)
197203
198204
199-func ax (ay) = makeString(["%s%s%s", ay, "total", "bal"], e)
205+func aA (aB) = makeString(["%s%s%s", aB, "total", "bal"], e)
200206
201207
202-func az (ay,aA) = makeString(["%s%s%s", ay, aA, "bal"], e)
208+func aC (aB,aD) = makeString(["%s%s%s", aB, aD, "bal"], e)
203209
204210
205-func aB (ay) = makeString(["%s%s%s", ay, "total", "balINT"], e)
211+func aE (aB) = makeString(["%s%s%s", aB, "total", "balINT"], e)
206212
207213
208-func aC (ay,aA) = makeString(["%s%s%s", ay, aA, "balINT"], e)
214+func aF (aB,aD) = makeString(["%s%s%s", aB, aD, "balINT"], e)
209215
210216
211-func aD (ay) = makeString(["%s%s%s", ay, "total", "lastUpd"], e)
217+func aG (aB) = makeString(["%s%s%s", aB, "total", "lastUpd"], e)
212218
213219
214-func aE (ay,aA) = makeString(["%s%s%s", ay, aA, "lastUpd"], e)
220+func aH (aB,aD) = makeString(["%s%s%s", aB, aD, "lastUpd"], e)
215221
216222
217-func aF (ay) = makeString(["%s%s%s%s", ay, "common", "lpInt"], e)
223+func aI (aB) = makeString(["%s%s%s%s", aB, "common", "lpInt"], e)
218224
219225
220-func aG (ay) = makeString(["%s%s%s%s", ay, "common", "lpIntH"], e)
226+func aJ (aB) = makeString(["%s%s%s%s", aB, "common", "lpIntH"], e)
221227
222228
223-func aH (ay,aA) = makeString(["%s%s%s%s", ay, aA, "lpInt"], e)
229+func aK (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpInt"], e)
224230
225231
226-func aI (ay,aA) = makeString(["%s%s%s%s", ay, aA, "lpIntH"], e)
232+func aL (aB,aD) = makeString(["%s%s%s%s", aB, aD, "lpIntH"], e)
227233
228234
229-func aJ (ay) = makeString(["%s", ay, "wxPerLp"], e)
235+func aM (aB) = makeString(["%s", aB, "wxPerLp"], e)
230236
231237
232-func aK (ay) = makeString(["%s", ay, "wxPerLpX18"], e)
238+func aN (aB) = makeString(["%s", aB, "wxPerLpX18"], e)
233239
234240
235-func aL (ay,aA) = makeString(["%s%s%s%s", ay, aA, "uIntL"], e)
241+func aO (aB,aD) = makeString(["%s%s%s%s", aB, aD, "uIntL"], e)
236242
237243
238-func aM (aN,aA,aO) = makeString(["%s%s%s%s__history", aN, aA, aO], e)
244+func aP (aQ,aD,aR) = makeString(["%s%s%s%s__history", aQ, aD, aR], e)
239245
240246
241-func aP (aA,ay,aN,aQ) = makeString(["%s%s%s%d%d%d", aA, ay, aN, toString(height), toString(lastBlock.timestamp), toString(aQ)], e)
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)
242248
243249
244-func aR (aN,aA,ay,aQ,aS) = StringEntry(aM(aN, aA, toBase58String(aS)), aP(aA, ay, aN, aQ))
250+func aU (aQ,aD,aB,aT,aV) = StringEntry(aP(aQ, aD, toBase58String(aV)), aS(aD, aB, aQ, aT))
245251
246252
247-let aT = s(this, I())
253+let aW = v(this, L())
248254
249-let aU = addressFromStringValue(aT)
255+let aX = addressFromStringValue(aW)
250256
251-let ag = ae(aU)
257+let aj = ah(aX)
252258
253-let aV = ah(ag)
259+let aY = ak(aj)
254260
255-let aW = af(ag)
261+let aZ = ai(aj)
256262
257-func aX (ay) = makeString(["%s%s", ay, "nextUser"], e)
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"))
264+
265+func bb (aB) = makeString(["%s%s", aB, "nextUser"], e)
258266
259267
260-func aY (ay) = makeString(["users", ay], e)
268+func bc (aB) = makeString(["users", aB], e)
261269
262270
263-func aZ (ba) = makeString(["%s%s%s", ba, "head"], e)
271+func bd (be) = makeString(["%s%s%s", be, "head"], e)
264272
265273
266-func bb (ba) = makeString(["%s%s%s", ba, "size"], e)
274+func bf (be) = makeString(["%s%s%s", be, "size"], e)
267275
268276
269-func bc (ba,bd) = makeString(["%s%s%s%s", ba, bd, "prev"], e)
277+func bg (be,bh) = makeString(["%s%s%s%s", be, bh, "prev"], e)
270278
271279
272-func be (ba,bd) = makeString(["%s%s%s%s", ba, bd, "next"], e)
280+func bi (be,bh) = makeString(["%s%s%s%s", be, bh, "next"], e)
273281
274282
275-func bf (ba,bd) = {
276- let bg = getString(this, aZ(ba))
277- let bh = getString(this, bc(ba, bd))
278- let bi = getString(this, be(ba, bd))
279- if (if ((bd == valueOrElse(bg, "")))
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, "")))
280288 then true
281- else (bh != unit))
289+ else (bl != unit))
282290 then true
283- else (bi != unit)
291+ else (bm != unit)
284292 }
285293
286294
287-func bj (ba,bd) = {
288- let bg = getString(this, aZ(ba))
289- let bk = valueOrElse(getInteger(this, bb(ba)), 0)
290- let bl = if (!(bf(ba, bd)))
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)))
291299 then true
292300 else throw("Node exists")
293- if ((bl == bl))
294- then (([IntegerEntry(bb(ba), (bk + 1))] ++ (if ((bg != unit))
295- then [StringEntry(be(ba, bd), value(bg)), StringEntry(bc(ba, value(bg)), bd)]
296- else nil)) ++ [StringEntry(aZ(ba), bd)])
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)])
297305 else throw("Strict value is not equal to itself.")
298306 }
299307
300308
301-func bm (ba,bd) = {
302- let bg = getString(this, aZ(ba))
303- let bk = valueOrElse(getInteger(this, bb(ba)), 0)
304- let bh = getString(this, bc(ba, bd))
305- let bi = getString(this, be(ba, bd))
306- ([IntegerEntry(bb(ba), (bk - 1))] ++ (if (if ((bh != unit))
307- then (bi != unit)
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)
308316 else false)
309- then [StringEntry(be(ba, value(bh)), value(bi)), StringEntry(bc(ba, value(bi)), value(bh)), DeleteEntry(bc(ba, bd)), DeleteEntry(be(ba, bd))]
310- else if ((bi != unit))
311- then [StringEntry(aZ(ba), value(bi)), DeleteEntry(be(ba, bd)), DeleteEntry(bc(ba, value(bi)))]
312- else if ((bh != unit))
313- then [DeleteEntry(bc(ba, bd)), DeleteEntry(be(ba, value(bh)))]
314- else if ((bd == valueOrElse(bg, "")))
315- then [DeleteEntry(aZ(ba))]
316- else throw(((("invalid node: " + ba) + ".") + bd))))
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))))
317325 }
318326
319327
320-func bn (bo,bp,bq,br) = if (if ((bp == g))
321- then (bo > g)
328+func br (bs,bt,bu,bv) = if (if ((bt == g))
329+ then (bs > g)
322330 else false)
323331 then g
324- else if ((bo == g))
325- then bq
326- else if (if ((bp > g))
327- then (bo > g)
332+ else if ((bs == g))
333+ then bu
334+ else if (if ((bt > g))
335+ then (bs > g)
328336 else false)
329- then value(parseBigInt(s(this, br)))
337+ then value(parseBigInt(v(this, bv)))
330338 else throw("calcWxPerLpIntegralUserLast: unexpected state")
331339
332340
333-func bs (aq,bt,bu) = {
334- let bv = ar(aq)
335- let bw = toBigInt(aw(bv))
336- let bx = if ((bw == g))
341+func bw (at,bx,by) = {
342+ let bz = au(at)
343+ let bA = toBigInt(az(bz))
344+ let bB = if ((bA == g))
337345 then h
338- else bw
339- let by = getIntegerValue(aU, aa(bt))
340- let bz = z(aV, al())
341- let bA = 1000
342- let bB = (z(aV, aj()) * bA)
343- let bC = fraction(bB, by, (f * 3))
344- let bD = aF(aq)
345- let bE = aG(aq)
346- let bF = aJ(aq)
347- let bG = x(this, bE, bz)
348- let bH = A(this, bD)
349- let bI = 0
350- let bJ = max([(height - bG), 0])
351- let bK = if ((bI != 0))
352- then toBigInt(bI)
353- else fraction(toBigInt(bC), toBigInt(b), bx)
354- let bL = (bw + toBigInt(bu))
355- let bM = if ((bL == g))
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))
356364 then h
357- else bL
358- let bq = (bH + (bK * toBigInt(bJ)))
359- let bN = (toBigInt(bC) / bM)
360- let bO = height
361- let bP = makeString([toString(bq), toString(bJ), toString(bK), toString(bw), toString(bC), toString(bB), toString(by)], "::")
362- $Tuple3(bq, [StringEntry(bD, toString(bq)), IntegerEntry(bE, bO), StringEntry(bF, toString(bN))], bP)
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)
363371 }
364372
365373
366-func bQ (aq,ap,bt,bu) = {
367- let bR = bs(aq, bt, bu)
368- let bq = bR._1
369- let bS = bR._2
370- let bT = bR._3
371- let bA = 1000
372- let bU = ao(ap, aq)
373- let bo = aw(bU)
374- let bV = aH(aq, ap)
375- let bW = aI(aq, ap)
376- let br = aL(aq, ap)
377- let bX = A(this, bV)
378- let bp = w(this, bW)
379- let bY = bn(toBigInt(bo), toBigInt(bp), bq, br)
380- let bZ = (b * bA)
381- let ca = max([(bX + fraction((bq - bY), toBigInt(bo), toBigInt(bZ))), g])
382- let cb = bq
383- let cc = height
384- let bP = makeString([toString(bX), toString(bY), toString(bo), bT, toString(height)], "::")
385- $Tuple3(ca, (bS ++ [StringEntry(bV, toString(ca)), IntegerEntry(bW, cc), StringEntry(br, toString(cb))]), bP)
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)
386394 }
387395
388396
389-func cd () = {
390- let k = getString(S())
391- if ($isInstanceOf(k, "String"))
397+func ch () = {
398+ let n = getString(V())
399+ if ($isInstanceOf(n, "String"))
392400 then {
393- let C = k
394- fromBase58String(C)
401+ let F = n
402+ fromBase58String(F)
395403 }
396- else if ($isInstanceOf(k, "Unit"))
404+ else if ($isInstanceOf(n, "Unit"))
397405 then unit
398406 else throw("Match error")
399407 }
400408
401409
402-func ce () = {
403- let k = getString(T())
404- if ($isInstanceOf(k, "String"))
410+func ci () = {
411+ let n = getString(W())
412+ if ($isInstanceOf(n, "String"))
405413 then {
406- let C = k
407- fromBase58String(C)
414+ let F = n
415+ fromBase58String(F)
408416 }
409- else if ($isInstanceOf(k, "Unit"))
417+ else if ($isInstanceOf(n, "Unit"))
410418 then unit
411419 else throw("Match error")
412420 }
413421
414422
415-let cf = throw("Permission denied")
423+let cj = throw("Permission denied")
416424
417-func cg (ch) = if ((ch.caller == this))
425+func ck (cl) = if ((cl.caller == this))
418426 then true
419- else cf
427+ else cj
420428
421429
422-func ci (ch) = {
423- let k = cd()
424- if ($isInstanceOf(k, "ByteVector"))
430+func cm (cl) = {
431+ let n = ch()
432+ if ($isInstanceOf(n, "ByteVector"))
425433 then {
426- let cj = k
427- if ((ch.callerPublicKey == cj))
434+ let cn = n
435+ if ((cl.callerPublicKey == cn))
428436 then true
429- else cf
437+ else cj
430438 }
431- else if ($isInstanceOf(k, "Unit"))
432- then if ((ch.caller == this))
439+ else if ($isInstanceOf(n, "Unit"))
440+ then if ((cl.caller == this))
433441 then true
434- else cf
442+ else cj
435443 else throw("Match error")
436444 }
437445
438446
439-@Callable(ch)
440-func constructor (ck) = {
441- let cl = ci(ch)
442- if ((cl == cl))
443- then [StringEntry(I(), ck)]
447+func co (cl,aB,cp,aD,cq,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 bA = az(bz)
455+ let cr = bU(at, as, bx, -(aT))._2
456+ let be = bc(at)
457+ let cs = if (if (bj(be, as))
458+ then (aT == bs)
459+ else false)
460+ then bq(be, as)
461+ else nil
462+ let ct = D(this, aw(at, as))
463+ let ce = bU(at, as, bx, 0)._1
464+ let cu = (ce - ct)
465+ let cv = true
466+ let cw = if ((cu > g))
467+ then invoke(this, "claimWxINTERNAL", [at, as, cv], nil)
468+ else unit
469+ if ((cw == cw))
470+ then if ((aT > bs))
471+ then throw(((((((("passed amount=" + toString(aT)) + " is greater than available=") + toString(bs)) + ". lpAssetId=") + at) + ". stakedByUserKEY=") + bY))
472+ else (([IntegerEntry(bY, (bs - aT)), IntegerEntry(bz, (bA - aT)), ScriptTransfer(cq, aT, aB), aU("unstake", as, at, aT, cl.transactionId)] ++ cr) ++ cs)
473+ else throw("Strict value is not equal to itself.")
474+ }
475+
476+
477+@Callable(cl)
478+func constructor (cx) = {
479+ let cy = cm(cl)
480+ if ((cy == cy))
481+ then [StringEntry(L(), cx)]
444482 else throw("Strict value is not equal to itself.")
445483 }
446484
447485
448486
449-@Callable(ch)
450-func constructorV2 (cm) = {
451- let cn = [ci(ch), if ((addressFromString(cm) != unit))
487+@Callable(cl)
488+func constructorV2 (cz) = {
489+ let cA = [cm(cl), if ((addressFromString(cz) != unit))
452490 then true
453491 else "invalid voting emission contract address"]
454- if ((cn == cn))
455- then [StringEntry(J(), cm)]
492+ if ((cA == cA))
493+ then [StringEntry(M(), cz)]
456494 else throw("Strict value is not equal to itself.")
457495 }
458496
459497
460498
461-@Callable(ch)
462-func setManager (co) = {
463- let cl = ci(ch)
464- if ((cl == cl))
499+@Callable(cl)
500+func setManager (cB) = {
501+ let cy = cm(cl)
502+ if ((cy == cy))
465503 then {
466- let cp = fromBase58String(co)
467- if ((cp == cp))
468- then [StringEntry(T(), co)]
504+ let cC = fromBase58String(cB)
505+ if ((cC == cC))
506+ then [StringEntry(W(), cB)]
469507 else throw("Strict value is not equal to itself.")
470508 }
471509 else throw("Strict value is not equal to itself.")
472510 }
473511
474512
475513
476-@Callable(ch)
514+@Callable(cl)
477515 func confirmManager () = {
478- let cq = ce()
479- let cr = if (isDefined(cq))
516+ let cD = ci()
517+ let cE = if (isDefined(cD))
480518 then true
481519 else throw("No pending manager")
482- if ((cr == cr))
520+ if ((cE == cE))
483521 then {
484- let cs = if ((ch.callerPublicKey == value(cq)))
522+ let cF = if ((cl.callerPublicKey == value(cD)))
485523 then true
486524 else throw("You are not pending manager")
487- if ((cs == cs))
488- then [StringEntry(S(), toBase58String(value(cq))), DeleteEntry(T())]
525+ if ((cF == cF))
526+ then [StringEntry(V(), toBase58String(value(cD))), DeleteEntry(W())]
489527 else throw("Strict value is not equal to itself.")
490528 }
491529 else throw("Strict value is not equal to itself.")
492530 }
493531
494532
495533
496-@Callable(ch)
497-func stake () = if ((size(ch.payments) != 1))
534+@Callable(cl)
535+func stake () = if ((size(cl.payments) != 1))
498536 then throw("invalid payment - exact one payment must be attached")
499537 else {
500- let ct = ch.payments[0]
501- let ay = value(ct.assetId)
502- let aq = toBase58String(ay)
503- let aQ = ct.amount
504- let bt = valueOrErrorMessage(getString(aU, W(aq)), ("unsupported lp asset " + aq))
505- let cu = toString(ch.caller)
506- let ap = if ((cu == bt))
507- then toString(ch.originCaller)
508- else cu
509- let bU = ao(ap, aq)
510- let bv = ar(aq)
511- let bo = aw(bU)
512- let bw = aw(bv)
513- let cv = bQ(aq, ap, bt, aQ)
514- let ca = cv._1
515- let cw = cv._2
516- let bP = cv._3
517- let ba = aY(aq)
518- let cx = if (bf(ba, ap))
538+ let cG = cl.payments[0]
539+ let aB = value(cG.assetId)
540+ let at = toBase58String(aB)
541+ let aT = cG.amount
542+ let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
543+ let cH = toString(cl.caller)
544+ let as = if ((cH == bx))
545+ then toString(cl.originCaller)
546+ else cH
547+ let bY = ar(as, at)
548+ let bz = au(at)
549+ let bs = az(bY)
550+ let bA = az(bz)
551+ let cI = bU(at, as, bx, aT)
552+ let ce = cI._1
553+ let cr = cI._2
554+ let bT = cI._3
555+ let be = bc(at)
556+ let cs = if (bj(be, as))
519557 then nil
520- else bj(ba, ap)
521- (([IntegerEntry(bU, (bo + aQ)), IntegerEntry(bv, (bw + aQ)), aR("stake", ap, aq, aQ, ch.transactionId)] ++ cw) ++ cx)
558+ else bn(be, as)
559+ (([IntegerEntry(bY, (bs + aT)), IntegerEntry(bz, (bA + aT)), aU("stake", as, at, aT, cl.transactionId)] ++ cr) ++ cs)
522560 }
523561
524562
525563
526-@Callable(ch)
527-func unstake (aq,aQ) = {
528- let ay = fromBase58String(aq)
529- let bt = valueOrErrorMessage(getString(aU, W(aq)), ("unsupported lp asset " + aq))
530- let cy = valueOrElse(getString(addressFromStringValue(bt), V()), bt)
531- let cu = toString(ch.caller)
532- let ap = if (if ((cu == bt))
564+@Callable(cl)
565+func unstake (at,aT) = {
566+ let aB = fromBase58String(at)
567+ let bx = valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at))
568+ let cp = addressFromStringValue(bx)
569+ let cJ = valueOrElse(getString(cp, Y()), bx)
570+ let cH = toString(cl.caller)
571+ let aD = if (if ((cH == bx))
533572 then true
534- else (cu == cy))
535- then toString(ch.originCaller)
536- else cu
537- let bU = ao(ap, aq)
538- let bv = ar(aq)
539- let bo = aw(bU)
540- let bw = aw(bv)
541- let cw = bQ(aq, ap, bt, -(aQ))._2
542- let ba = aY(aq)
543- let cx = if (if (bf(ba, ap))
544- then (aQ == bo)
545- else false)
546- then bm(ba, ap)
547- else nil
548- let cz = A(this, at(aq, ap))
549- let cA = v(aU, Z(aq))
550- let ca = bQ(aq, ap, cA, 0)._1
551- let cB = (ca - cz)
552- let cC = if ((cB > g))
553- then invoke(this, "claimWxINTERNAL", [aq, ap], nil)
554- else unit
555- if ((cC == cC))
556- then if ((aQ > bo))
557- then throw(((((((("passed amount=" + toString(aQ)) + " is greater than available=") + toString(bo)) + ". lpAssetId=") + aq) + ". stakedByUserKEY=") + bU))
558- else (([IntegerEntry(bU, (bo - aQ)), IntegerEntry(bv, (bw - aQ)), ScriptTransfer(ch.caller, aQ, ay), aR("unstake", ap, aq, aQ, ch.transactionId)] ++ cw) ++ cx)
573+ else (cH == cJ))
574+ then cl.originCaller
575+ else cl.caller
576+ let cq = cl.caller
577+ co(cl, aB, cp, aD, cq, aT)
578+ }
579+
580+
581+
582+@Callable(cl)
583+func unstakeINTERNAL (aB,aT,aD,cq) = {
584+ let at = toBase58String(aB)
585+ let cp = addressFromStringValue(valueOrErrorMessage(getString(aX, Z(at)), ("unsupported lp asset " + at)))
586+ let cy = if ((cl.caller == cp))
587+ then true
588+ else cj
589+ if ((cy == cy))
590+ then co(cl, aB, cp, Address(aD), Address(cq), aT)
559591 else throw("Strict value is not equal to itself.")
560592 }
561593
562594
563595
564-@Callable(ch)
565-func claimWx (aq) = {
566- let ap = toString(ch.caller)
567- let cD = invoke(this, "claimWxINTERNAL", [aq, ap], nil)
568- $Tuple2(nil, cD)
596+@Callable(cl)
597+func claimWx (at) = {
598+ let as = toString(cl.caller)
599+ let cv = true
600+ let cK = invoke(this, "claimWxINTERNAL", [at, as, cv], nil)
601+ $Tuple2(nil, cK)
569602 }
570603
571604
572605
573-@Callable(ch)
574-func claimWxINTERNAL (aq,ap) = {
575- let cl = cg(ch)
576- if ((cl == cl))
606+@Callable(cl)
607+func claimWxDoNotThrow (at) = {
608+ let as = toString(cl.caller)
609+ let cv = false
610+ let cK = invoke(this, "claimWxINTERNAL", [at, as, cv], nil)
611+ $Tuple2(nil, cK)
612+ }
613+
614+
615+
616+@Callable(cl)
617+func claimWxINTERNAL (at,as,cv) = {
618+ let cy = ck(cl)
619+ if ((cy == cy))
577620 then {
578- let aA = valueOrErrorMessage(addressFromString(ap), "claimWxINTERNAL: invalid user address")
579- let bt = v(aU, Z(aq))
580- let cE = as(aq, ap)
581- let cF = av(aq)
582- let cG = at(aq, ap)
583- let cH = au(aq, ap)
584- let cI = A(this, cE)
585- let cz = A(this, cG)
586- let cJ = A(this, cH)
587- let cK = A(this, cF)
588- let cL = bQ(aq, ap, bt, 0)
589- let ca = cL._1
590- let cw = cL._2
591- let bP = cL._3
592- let cB = max([(ca - cz), g])
593- if ((g >= cB))
594- then throw("nothing to claim")
621+ let aD = valueOrErrorMessage(addressFromString(as), "claimWxINTERNAL: invalid user address")
622+ let bx = y(aX, ac(at))
623+ let cL = av(at, as)
624+ let cM = ay(at)
625+ let cN = aw(at, as)
626+ let cO = ax(at, as)
627+ let cP = D(this, cL)
628+ let ct = D(this, cN)
629+ let cQ = D(this, cO)
630+ let cR = D(this, cM)
631+ let cS = bU(at, as, bx, 0)
632+ let ce = cS._1
633+ let cr = cS._2
634+ let bT = cS._3
635+ let cu = max([(ce - ct), g])
636+ if ((g >= cu))
637+ then if (cv)
638+ then throw("nothing to claim")
639+ else $Tuple2(nil, 0)
595640 else {
596- let cM = max([m(i(invoke(aW, "claimWxBoost", [aq, ap], nil))[0]), 0])
597- let cN = cB
598- let cO = min([(cN * toBigInt(2)), toBigInt(cM)])
599- let cP = q(i(invoke(aV, "emit", [toInt(cN)], nil))[0])
600- let cQ = i(invoke(aV, "emit", [toInt(cO)], nil))
601- if ((cQ == cQ))
641+ let cT = max([p(l(invoke(aZ, "claimWxBoost", [at, as], nil))[0]), 0])
642+ let cU = cu
643+ let cV = min([(cU * toBigInt(2)), toBigInt(cT)])
644+ let cW = (cU + cV)
645+ let cX = t(l(invoke(aY, "emit", [toInt(cU)], nil))[0])
646+ let cY = l(invoke(aY, "emit", [toInt(cV)], nil))
647+ if ((cY == cY))
602648 then {
603- let cR = ((cI + cN) + cO)
604- let cS = (cz + cN)
605- let cT = (cJ + cO)
606- let cU = (cK + cB)
607-[StringEntry(cE, toString(cR)), StringEntry(cG, toString(cS)), StringEntry(cH, toString(cT)), StringEntry(cF, toString(cU)), ScriptTransfer(aA, toInt(cN), cP), ScriptTransfer(aA, toInt(cO), cP), aR("claim", ap, aq, toInt(cB), ch.transactionId)]
649+ let cZ = ((cP + cU) + cV)
650+ let da = (ct + cU)
651+ let db = (cQ + cV)
652+ let dc = (cR + cu)
653+ $Tuple2([StringEntry(cL, toString(cZ)), StringEntry(cN, toString(da)), StringEntry(cO, toString(db)), StringEntry(cM, toString(dc)), ScriptTransfer(aD, toInt(cU), cX), ScriptTransfer(aD, toInt(cV), cX), aU("claim", as, at, toInt(cu), cl.transactionId)], toInt(cW))
608654 }
609655 else throw("Strict value is not equal to itself.")
610656 }
611657 }
612658 else throw("Strict value is not equal to itself.")
613659 }
614660
615661
616662
617-@Callable(ch)
618-func claimWxBulkInternalREADONLY (cV,cW,ap,cX) = if ((cV == size(cW)))
619- then $Tuple2(nil, cX)
663+@Callable(cl)
664+func claimWxBulkInternalREADONLY (dd,de,as,df) = if ((dd == size(de)))
665+ then $Tuple2(nil, df)
620666 else {
621- let ay = cW[cV]
622- let cY = split({
623- let cZ = invoke(this, "claimWxREADONLY", [ay, ap], nil)
624- if ($isInstanceOf(cZ, "String"))
625- then cZ
626- else throw(($getType(cZ) + " couldn't be cast to String"))
667+ let aB = de[dd]
668+ let dg = split({
669+ let dh = invoke(this, "claimWxREADONLY", [aB, as], nil)
670+ if ($isInstanceOf(dh, "String"))
671+ then dh
672+ else throw(($getType(dh) + " couldn't be cast to String"))
627673 }, e)
628- let da = cY[3]
629- let db = cY[4]
630- let dc = (cX :+ makeString(["%d%d", da, db], e))
631- let dd = {
632- let cZ = invoke(this, "claimWxBulkInternalREADONLY", [(cV + 1), cW, ap, dc], nil)
633- if ($isInstanceOf(cZ, "List[Any]"))
634- then cZ
635- else throw(($getType(cZ) + " couldn't be cast to List[Any]"))
674+ let di = dg[3]
675+ let dj = dg[4]
676+ let dk = (df :+ makeString(["%d%d", di, dj], e))
677+ let dl = {
678+ let dh = invoke(this, "claimWxBulkInternalREADONLY", [(dd + 1), de, as, dk], nil)
679+ if ($isInstanceOf(dh, "List[Any]"))
680+ then dh
681+ else throw(($getType(dh) + " couldn't be cast to List[Any]"))
636682 }
637- if ((dd == dd))
638- then $Tuple2(nil, dd)
683+ if ((dl == dl))
684+ then $Tuple2(nil, dl)
639685 else throw("Strict value is not equal to itself.")
640686 }
641687
642688
643689
644-@Callable(ch)
645-func claimWxBulkREADONLY (cW,ap) = {
646- let dc = invoke(this, "claimWxBulkInternalREADONLY", [0, cW, ap, nil], nil)
647- $Tuple2(nil, dc)
690+@Callable(cl)
691+func claimWxBulkREADONLY (de,as) = {
692+ let dk = invoke(this, "claimWxBulkInternalREADONLY", [0, de, as, nil], nil)
693+ $Tuple2(nil, dk)
648694 }
649695
650696
651697
652-@Callable(ch)
653-func claimWxREADONLY (aq,ap) = {
654- let bU = ao(ap, aq)
655- let bv = ar(aq)
656- let cE = as(aq, ap)
657- let cG = at(aq, ap)
658- let bo = aw(bU)
659- let bw = aw(bv)
660- let cI = A(this, cE)
661- let cz = A(this, cG)
662- let bt = v(aU, Z(aq))
663- let by = getIntegerValue(aU, aa(bt))
664- let de = z(aV, aj())
665- let bz = z(aV, al())
666- let df = if ((bz > height))
698+@Callable(cl)
699+func claimWxREADONLY (at,as) = {
700+ let bY = ar(as, at)
701+ let bz = au(at)
702+ let cL = av(at, as)
703+ let cN = aw(at, as)
704+ let bs = az(bY)
705+ let bA = az(bz)
706+ let cP = D(this, cL)
707+ let ct = D(this, cN)
708+ let bx = y(aX, ac(at))
709+ let bC = getIntegerValue(aX, ad(bx))
710+ let dm = C(aY, am())
711+ let bD = C(aY, ao())
712+ let dn = if ((bD > height))
667713 then 0
668- else (height - bz)
669- let dg = fraction((de * df), by, f)
670- let dh = fraction(dg, bo, bw)
671- let di = bQ(aq, ap, bt, 0)
672- let ca = di._1
673- let cw = di._2
674- let bP = di._3
675- let cB = max([(ca - cz), g])
676- let dj = i(invoke(aW, "claimWxBoostREADONLY", [aq, ap], nil))
677- let cM = max([m(dj[0]), 0])
678- let dk = o(dj[1])
679- let cN = cB
680- let cO = min([(cN * toBigInt(2)), toBigInt(cM)])
681- let dl = (cN + cO)
682- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", aq, ap, toString(dl), toString(cI), toString(cN), toString(cO), "soon"], e))
714+ else (height - bD)
715+ let do = fraction((dm * dn), bC, f)
716+ let dp = fraction(do, bs, bA)
717+ let dq = bU(at, as, bx, 0)
718+ let ce = dq._1
719+ let cr = dq._2
720+ let bT = dq._3
721+ let cu = max([(ce - ct), g])
722+ let dr = l(invoke(aZ, "claimWxBoostREADONLY", [at, as], nil))
723+ let cT = max([p(dr[0]), 0])
724+ let ds = r(dr[1])
725+ let cU = cu
726+ let cV = min([(cU * toBigInt(2)), toBigInt(cT)])
727+ let cW = (cU + cV)
728+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", at, as, toString(cW), toString(cP), toString(cU), toString(cV), "soon"], e))
683729 }
684730
685731
686732
687-@Callable(ch)
688-func usersListTraversal (ay) = {
689- let cl = if ((toBase58String(ch.caller.bytes) == valueOrElse(getString(this, J()), "")))
733+@Callable(cl)
734+func stakedByUserREADONLY (at,as) = {
735+ let bs = valueOrElse(getInteger(ar(as, at)), 0)
736+ $Tuple2(nil, bs)
737+ }
738+
739+
740+
741+@Callable(cl)
742+func usersListTraversal (aB) = {
743+ let cy = if ((toBase58String(cl.caller.bytes) == valueOrElse(getString(this, M()), "")))
690744 then true
691- else ci(ch)
692- if ((cl == cl))
745+ else cm(cl)
746+ if ((cy == cy))
693747 then {
694- let ba = aY(ay)
695- let dm = getString(aX(ay))
696- let bg = getString(aZ(ba))
697- let k = dm
698- if ($isInstanceOf(k, "Unit"))
748+ let be = bc(aB)
749+ let dt = getString(bb(aB))
750+ let bk = getString(bd(be))
751+ let n = dt
752+ if ($isInstanceOf(n, "Unit"))
699753 then {
700- let dn = bg
701- if ($isInstanceOf(dn, "Unit"))
754+ let du = bk
755+ if ($isInstanceOf(du, "Unit"))
702756 then $Tuple2(nil, false)
703- else if ($isInstanceOf(dn, "String"))
757+ else if ($isInstanceOf(du, "String"))
704758 then {
705- let do = dn
706- $Tuple2([StringEntry(aX(ay), do)], true)
759+ let dv = du
760+ $Tuple2([StringEntry(bb(aB), dv)], true)
707761 }
708762 else throw("Match error")
709763 }
710- else if ($isInstanceOf(k, "String"))
764+ else if ($isInstanceOf(n, "String"))
711765 then {
712- let aA = k
713- let cz = A(this, at(ay, aA))
714- let cA = v(aU, Z(ay))
715- let ca = bQ(ay, aA, cA, 0)._1
716- let cB = (ca - cz)
717- let cC = if ((cB > g))
718- then invoke(this, "claimWxINTERNAL", [ay, aA], nil)
766+ let aD = n
767+ let ct = D(this, aw(aB, aD))
768+ let cp = y(aX, ac(aB))
769+ let ce = bU(aB, aD, cp, 0)._1
770+ let cu = (ce - ct)
771+ let cv = true
772+ let cw = if ((cu > g))
773+ then invoke(this, "claimWxINTERNAL", [aB, aD, cv], nil)
719774 else unit
720- if ((cC == cC))
775+ if ((cw == cw))
721776 then {
722- let dp = getString(be(ba, aA))
723- let dn = dp
724- if ($isInstanceOf(dn, "Unit"))
725- then $Tuple2([DeleteEntry(aX(ay))], false)
726- else if ($isInstanceOf(dn, "String"))
777+ let dw = getString(bi(be, aD))
778+ let du = dw
779+ if ($isInstanceOf(du, "Unit"))
780+ then $Tuple2([DeleteEntry(bb(aB))], false)
781+ else if ($isInstanceOf(du, "String"))
727782 then {
728- let dq = dn
729- $Tuple2([StringEntry(aX(ay), dq)], true)
783+ let dx = du
784+ $Tuple2([StringEntry(bb(aB), dx)], true)
730785 }
731786 else throw("Match error")
732787 }
733788 else throw("Strict value is not equal to itself.")
734789 }
735790 else throw("Match error")
736791 }
737792 else throw("Strict value is not equal to itself.")
738793 }
739794
740795
741796
742-@Callable(ch)
743-func onModifyWeight (aq,bt) = if ((ch.caller != aU))
797+@Callable(cl)
798+func onModifyWeight (at,bx) = if ((cl.caller != aX))
744799 then throw("permissions denied")
745800 else {
746- let dr = bs(aq, bt, 0)
747- let bq = dr._1
748- let bS = dr._2
749- let bT = dr._3
750- bS
801+ let dy = bw(at, bx, 0)
802+ let bu = dy._1
803+ let bW = dy._2
804+ let bX = dy._3
805+ bW
751806 }
752807
753808
754-@Verifier(ds)
755-func dt () = {
756- let du = {
757- let k = cd()
758- if ($isInstanceOf(k, "ByteVector"))
809+@Verifier(dz)
810+func dA () = {
811+ let dB = {
812+ let n = ch()
813+ if ($isInstanceOf(n, "ByteVector"))
759814 then {
760- let cj = k
761- cj
815+ let cn = n
816+ cn
762817 }
763- else if ($isInstanceOf(k, "Unit"))
764- then ds.senderPublicKey
818+ else if ($isInstanceOf(n, "Unit"))
819+ then dz.senderPublicKey
765820 else throw("Match error")
766821 }
767- sigVerify(ds.bodyBytes, ds.proofs[0], du)
822+ sigVerify(dz.bodyBytes, dz.proofs[0], dB)
768823 }
769824

github/deemru/w8io/026f985 
327.99 ms