tx · 2creARBiVEjbAjppNgoDYbFebJquHxJpYCYmRYgdmz6U

3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE:  -0.02200000 Waves

2022.09.12 17:24 [2226003] smart account 3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE > SELF 0.00000000 Waves

{ "type": 13, "id": "2creARBiVEjbAjppNgoDYbFebJquHxJpYCYmRYgdmz6U", "fee": 2200000, "feeAssetId": null, "timestamp": 1662992754377, "version": 1, "sender": "3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE", "senderPublicKey": "G349Uq3FTox7dRNLeAfAQeoACvwZ9iEnVSaHcEYn6j8J", "proofs": [ "2y1azdZTUwmZ5YpiRBxPM6ypvauwUxk8heQ9C9Nd8cLpFyhXwHjaTMEuQuTHUYBxNmMXsqj1kw1eFzrybs8xUMdF" ], "script": "base64:BgJJCAISBAoCCAESABIDCgEBEgASABIAEgMKAQgSAwoBCBIDCgEIEgUKAwEBARIFCgMBAQESABIDCgEIEgcKBQgICAgIEgMKAQgSAE4AA1NFUAICX18ABVNDQUxFAOgHAAVNVUxUOACAwtcvAAp6ZXJvQmlnSW50CQC2AgEAAAAUcHJvY2Vzc2luZ1N0YWdlVG90YWwAAAAVcHJvY2Vzc2luZ1N0YWdlU2hhcmVzAAEBDmdldE51bWJlckJ5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABD2dldE51bWJlck9yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUDa2V5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEOZ2V0U3RyaW5nQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQNrZXkCAAEPZ2V0U3RyaW5nT3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQNrZXkJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FA2tleQIPIGlzIG5vdCBkZWZpbmVkAQNhYnMBA3ZhbAMJAL8CAgUKemVyb0JpZ0ludAUDdmFsCQC+AgEFA3ZhbAUDdmFsAAtrZXlNYXhEZXB0aAIMJXNfX21heERlcHRoAA9tYXhEZXB0aERlZmF1bHQAHgAIbWF4RGVwdGgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwULa2V5TWF4RGVwdGgFD21heERlcHRoRGVmYXVsdAERa2V5RmFjdG9yeUFkZHJlc3MAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzABFmYWN0b3J5QWRkcmVzc1N0cgkBD2dldFN0cmluZ09yRmFpbAEJARFrZXlGYWN0b3J5QWRkcmVzcwAAD2ZhY3RvcnlDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQURZmFjdG9yeUFkZHJlc3NTdHIBEmtleUVtaXNzaW9uQWRkcmVzcwACHSVzJXNfX2NvbmZpZ19fZW1pc3Npb25BZGRyZXNzARNrZXlOdW1Ub1VzZXJNYXBwaW5nAQNudW0JALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIHbWFwcGluZwkAzAgCAghudW0ydXNlcgkAzAgCCQCkAwEFA251bQUDbmlsBQNTRVAAFmtleVJlZmVycmFsUHJvZ3JhbU5hbWUJALkJAgkAzAgCAgQlcyVzCQDMCAICCHJlZmVycmFsCQDMCAICC3Byb2dyYW1OYW1lBQNuaWwFA1NFUAAacmVmZXJyYWxQcm9ncmFtTmFtZURlZmF1bHQCBnd4bG9jawATcmVmZXJyYWxQcm9ncmFtTmFtZQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBRZrZXlSZWZlcnJhbFByb2dyYW1OYW1lBRpyZWZlcnJhbFByb2dyYW1OYW1lRGVmYXVsdAAXa2V5UmVmZXJyYWxNaW5HV3hBbW91bnQJALkJAgkAzAgCAgQlcyVzCQDMCAICCHJlZmVycmFsCQDMCAICDG1pbkdXeEFtb3VudAUDbmlsBQNTRVAAG3JlZmVycmFsTWluR1d4QW1vdW50RGVmYXVsdAkAaAIA9AMFBU1VTFQ4ABRyZWZlcnJhbE1pbkdXeEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRdrZXlSZWZlcnJhbE1pbkdXeEFtb3VudAUbcmVmZXJyYWxNaW5HV3hBbW91bnREZWZhdWx0ABlrZXlSZWZlcnJlclJld2FyZFBlcm1pbGxlCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghyZWZlcnJhbAkAzAgCAhZyZWZlcnJlclJld2FyZFBlcm1pbGxlBQNuaWwFA1NFUAAdcmVmZXJyZXJSZXdhcmRQZXJtaWxsZURlZmF1bHQAMgAWcmVmZXJyZXJSZXdhcmRQZXJtaWxsZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRlrZXlSZWZlcnJlclJld2FyZFBlcm1pbGxlBR1yZWZlcnJlclJld2FyZFBlcm1pbGxlRGVmYXVsdAAZa2V5UmVmZXJyYWxSZXdhcmRQZXJtaWxsZQkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgIWcmVmZXJyYWxSZXdhcmRQZXJtaWxsZQUDbmlsBQNTRVAAHXJlZmVycmFsUmV3YXJkUGVybWlsbGVEZWZhdWx0ADIAFnJlZmVycmFsUmV3YXJkUGVybWlsbGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUZa2V5UmVmZXJyYWxSZXdhcmRQZXJtaWxsZQUdcmVmZXJyYWxSZXdhcmRQZXJtaWxsZURlZmF1bHQBC2tleVJlZmVycmVyAQ9yZWZlcnJhbEFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIIcmVmZXJyZXIJAMwIAgUTcmVmZXJyYWxQcm9ncmFtTmFtZQkAzAgCBQ9yZWZlcnJhbEFkZHJlc3MFA25pbAUDU0VQARRrZXlVbmNsYWltZWRSZWZlcnJhbAILcHJvZ3JhbU5hbWUOY2xhaW1lckFkZHJlc3MJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCAhF1bmNsYWltZWRSZWZlcnJhbAkAzAgCBQtwcm9ncmFtTmFtZQkAzAgCBQ5jbGFpbWVyQWRkcmVzcwUDbmlsBQNTRVAAEmVtaXNzaW9uQWRkcmVzc1N0cgkBD2dldFN0cmluZ09yRmFpbAEJARJrZXlFbWlzc2lvbkFkZHJlc3MAABBlbWlzc2lvbkNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBBRJlbWlzc2lvbkFkZHJlc3NTdHIADUlkeENmZ0Fzc2V0SWQAAQAWSWR4Q2ZnUGFjZW1ha2VyQWRkcmVzcwACABZJZHhDZmdCb29zdGluZ0NvbnRyYWN0AAMADklkeENmZ01heERlcHRoAAQBCWtleUNvbmZpZwACCiVzX19jb25maWcBFXJlYWRDb25maWdBcnJheU9yRmFpbAAJALUJAgkBD2dldFN0cmluZ09yRmFpbAEJAQlrZXlDb25maWcABQNTRVABDGZvcm1hdENvbmZpZwQMd3hBc3NldElkU3RyGm1hdGNoZXJQYWNlbWFrZXJBZGRyZXNzU3RyGmJvb3N0aW5nQ29udHJhY3RBZGRyZXNzU3RyCG1heERlcHRoCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgUMd3hBc3NldElkU3RyCQDMCAIFGm1hdGNoZXJQYWNlbWFrZXJBZGRyZXNzU3RyCQDMCAIFGmJvb3N0aW5nQ29udHJhY3RBZGRyZXNzU3RyCQDMCAIJAKQDAQUIbWF4RGVwdGgFA25pbAUDU0VQARZib29zdGluZ0NvbnRyYWN0T3JGYWlsAAQIY2ZnQXJyYXkJARVyZWFkQ29uZmlnQXJyYXlPckZhaWwACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQhjZmdBcnJheQUWSWR4Q2ZnQm9vc3RpbmdDb250cmFjdAIoYm9vc3RpbmcgY29udHJhY3QgYWRkcmVzcyBpcyBub3QgZGVmaW5lZAEfa2V5R3d4UmV3YXJkRW1pc3Npb25TdGFydEhlaWdodAACKCVzJXNfX2d3eFJld2FyZEVtaXNzaW9uUGFydF9fc3RhcnRIZWlnaHQBDWtleVVzZXJzQ291bnQAAg8lc19fbmV4dFVzZXJOdW0BFmtleVJhdGVQZXJCbG9ja0N1cnJlbnQAAhslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBFGtleVBvb2xXZWlnaHRWaXJ0dWFsAAIgJXMlc19fcG9vbFdlaWdodF9fR1dYdmlydHVhbFBPT0wBFGtleU5leHRQcm9jZXNzZWRVc2VyAAIVJXNfX25leHRQcm9jZXNzZWRVc2VyAQ9rZXlMYXRlc3RQZXJpb2QAAhAlc19fbGF0ZXN0UGVyaW9kAQ1rZXlOZXh0UGVyaW9kAAIOJXNfX25leHRQZXJpb2QBEmtleVByb2Nlc3NpbmdTdGFnZQACEyVzX19wcm9jZXNzaW5nU3RhZ2UBFmtleU5leHRQcm9jZXNzZWRQZXJpb2QAAhclc19fbmV4dFByb2Nlc3NlZFBlcmlvZAEQa2V5VXNlclVuY2xhaW1lZAEJdXNlckluZGV4CQC5CQIJAMwIAgIEJXMlZAkAzAgCAg11c2VyVW5jbGFpbWVkCQDMCAIJAKQDAQUJdXNlckluZGV4BQNuaWwFA1NFUAEba2V5TmV4dFVubGFpbWVkUGVyaW9kT2ZVc2VyAQl1c2VySW5kZXgJALkJAgkAzAgCAhclcyVkX19uZXh0Q2xhaW1lZFBlcmlvZAkAzAgCCQCkAwEFCXVzZXJJbmRleAUDbmlsBQNTRVABHGtleUxhc3RQcm9jZXNzZWRQZXJpb2RPZlVzZXIBCXVzZXJJbmRleAkAuQkCCQDMCAICGSVzJWRfX2xhc3RQcm9jZXNzZWRQZXJpb2QJAMwIAgkApAMBBQl1c2VySW5kZXgFA25pbAUDU0VQARJrZXlIZWlnaHRGb3JQZXJpb2QBBnBlcmlvZAkAuQkCCQDMCAICGiVzJWRfX3N0YXJ0SGVpZ2h0Rm9yUGVyaW9kCQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEda2V5QXV4RW1pc3Npb25SZXdhcmRGb3JQZXJpb2QBBnBlcmlvZAkAuQkCCQDMCAICFyVzJWRfX2F1eEVtaXNzaW9uUmV3YXJkCQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEXa2V5VG90YWxBbW91bnRGb3JQZXJpb2QBBnBlcmlvZAkAuQkCCQDMCAICGiVzJWRfX3RvdGFsQW1vdW50Rm9yUGVyaW9kCQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAERa2V5TGFzdFBheW91dEluZm8AAhIlc19fbGFzdFBheW91dEluZm8BEFBlcmlvZFBheW91dEluZm8DBnBlcmlvZA1tYXRjaGVyUmV3YXJkDmVtaXNzaW9uUmV3YXJkCQC5CQIJAMwIAgIGJWQlZCVkCQDMCAIJAKQDAQUGcGVyaW9kCQDMCAIJAKQDAQUNbWF0Y2hlclJld2FyZAkAzAgCCQCkAwEFDmVtaXNzaW9uUmV3YXJkBQNuaWwFA1NFUAEUa2V5UGF5b3V0SGlzdG9yeUluZm8BBnBlcmlvZAkAuQkCCQDMCAICGCVzJXMlZF9fcGF5b3V0c19faGlzdG9yeQkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABF2tleVRvdGFsV2VpZ2h0Rm9yUGVyaW9kAQZwZXJpb2QJALkJAgkAzAgCAholcyVkX190b3RhbFdlaWdodEZvclBlcmlvZAkAzAgCCQCkAwEFBnBlcmlvZAUDbmlsBQNTRVABFmtleVVzZXJLVmFsdWVGb3JQZXJpb2QCBnBlcmlvZAl1c2VySW5kZXgJALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCCQCkAwEFCXVzZXJJbmRleAkAzAgCAgFrCQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEWa2V5VXNlckJWYWx1ZUZvclBlcmlvZAIGcGVyaW9kCXVzZXJJbmRleAkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIJAKQDAQUJdXNlckluZGV4CQDMCAICAWIJAMwIAgkApAMBBQZwZXJpb2QFA25pbAUDU0VQARZrZXlVc2VyV2VpZ2h0Rm9yUGVyaW9kAgZwZXJpb2QJdXNlckluZGV4CQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgkApAMBBQl1c2VySW5kZXgJAMwIAgIGd2VpZ2h0CQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEba2V5UmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzAAkAuQkCCQDMCAICBCVzJXMJAMwIAgIGY29uZmlnCQDMCAICGHJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwUDbmlsBQNTRVAAHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBD2dldFN0cmluZ09yRmFpbAEJARtrZXlSZWZlcnJhbHNDb250cmFjdEFkZHJlc3MAAQxIaXN0b3J5RW50cnkEBHR5cGUEdXNlcgZhbW91bnQBaQQKaGlzdG9yeUtFWQkAuQkCCQDMCAICESVzJXMlcyVzX19oaXN0b3J5CQDMCAIFBHR5cGUJAMwIAgUEdXNlcgkAzAgCCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFA25pbAUDU0VQBAtoaXN0b3J5REFUQQkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQZhbW91bnQFA25pbAUDU0VQCQELU3RyaW5nRW50cnkCBQpoaXN0b3J5S0VZBQtoaXN0b3J5REFUQQETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQttdXN0TWFuYWdlcgEBaQQCcGQJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBQJwZAMJAAECBQckbWF0Y2gwAgRVbml0AwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFAnBkCQACAQILTWF0Y2ggZXJyb3IBDmNhbGNVc2VyV2VpZ2h0BBdib29zdGluZ0NvbnRyYWN0QWRkcmVzcw9oZWlnaHRGb3JQZXJpb2QGcGVyaW9kCXVzZXJJbmRleAQFa0xhc3QJARxrZXlMYXN0UHJvY2Vzc2VkUGVyaW9kT2ZVc2VyAQUJdXNlckluZGV4BARrS2V5CQEWa2V5VXNlcktWYWx1ZUZvclBlcmlvZAIFBnBlcmlvZAUJdXNlckluZGV4BARrUmF3CQCaCAIFF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzBQRrS2V5BAtrVXNlcldlaWdodAkBFmtleVVzZXJXZWlnaHRGb3JQZXJpb2QCBQZwZXJpb2QFCXVzZXJJbmRleAMJAQlpc0RlZmluZWQBBQRrUmF3BAFrCQEFdmFsdWUBBQRrUmF3BAFiCQEFdmFsdWUBCQCaCAIFF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzCQEWa2V5VXNlckJWYWx1ZUZvclBlcmlvZAIFBnBlcmlvZAUJdXNlckluZGV4BAF3CQBkAgkAaAIFAWsFD2hlaWdodEZvclBlcmlvZAUBYgMJAGYCBQF3AAAJAJQKAgkAaQIFAXcFBVNDQUxFCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQVrTGFzdAUGcGVyaW9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtrVXNlcldlaWdodAUBdwUDbmlsCQCUCgIAAAUDbmlsBAFwCQCaCAIFBHRoaXMFBWtMYXN0AwMJAQlpc0RlZmluZWQBBQFwCQBnAgUGcGVyaW9kCQEFdmFsdWUBBQFwBwQCcHYJAQV2YWx1ZQEFAXAEAWsJAQV2YWx1ZQEJAJoIAgUXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MJARZrZXlVc2VyS1ZhbHVlRm9yUGVyaW9kAgUCcHYFCXVzZXJJbmRleAQBYgkBBXZhbHVlAQkAmggCBRdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwkBFmtleVVzZXJCVmFsdWVGb3JQZXJpb2QCBQJwdgUJdXNlckluZGV4BAF3CQBkAgkAaAIFAWsFD2hlaWdodEZvclBlcmlvZAUBYgMJAGYCBQF3AAAJAJQKAgkAaQIFAXcFBVNDQUxFCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQtrVXNlcldlaWdodAUBdwUDbmlsCQCUCgIAAAUDbmlsCQCUCgIAAAUDbmlsARZjYWxjVXNlcldlaWdodEZvckNsYWltBBdib29zdGluZ0NvbnRyYWN0QWRkcmVzcw9oZWlnaHRGb3JQZXJpb2QGcGVyaW9kCXVzZXJJbmRleAQLa1VzZXJXZWlnaHQJARZrZXlVc2VyV2VpZ2h0Rm9yUGVyaW9kAgUGcGVyaW9kBQl1c2VySW5kZXgEEHVzZXJXZWlnaHRPclVuaXQJAJ8IAQULa1VzZXJXZWlnaHQEByRtYXRjaDAFEHVzZXJXZWlnaHRPclVuaXQDCQABAgUHJG1hdGNoMAIEVW5pdAAAAwkAAQIFByRtYXRjaDACA0ludAQBdwUHJG1hdGNoMAkAaQIFAXcFBVNDQUxFCQACAQILTWF0Y2ggZXJyb3IBFWdldFVzZXJJbmRleEJ5QWRkcmVzcwIaYm9vc3RpbmdDb250cmFjdEFkZHJlc3NTdHILdXNlckFkZHJlc3MEA2tleQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgdtYXBwaW5nCQDMCAICCHVzZXIybnVtCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAkBDXBhcnNlSW50VmFsdWUBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBB0FkZHJlc3MBCQDZBAEFGmJvb3N0aW5nQ29udHJhY3RBZGRyZXNzU3RyBQNrZXkJAKwCAgkArAICCQCsAgICDVVzZXIgYWRkcmVzcyAFC3VzZXJBZGRyZXNzAi0gaXMgbm90IGZvdW5kIGluIGJvb3N0aW5nIGNvbnRyYWN0IGRhdGEsIGtleT0FA2tleQEKbmV4dFBlcmlvZAAJAQ5nZXROdW1iZXJCeUtleQEJAQ1rZXlOZXh0UGVyaW9kAAERY29tbW9uQ2xhaW1SZXdhcmQBC3VzZXJBZGRyZXNzBAhjZmdBcnJheQkBFXJlYWRDb25maWdBcnJheU9yRmFpbAAEB3VzZXJJZHgJARVnZXRVc2VySW5kZXhCeUFkZHJlc3MCCQCRAwIFCGNmZ0FycmF5BRZJZHhDZmdCb29zdGluZ0NvbnRyYWN0BQt1c2VyQWRkcmVzcwQTdXNlclVuY2xhaW1lZE9wdGlvbgkAnwgBCQEQa2V5VXNlclVuY2xhaW1lZAEFB3VzZXJJZHgEByRtYXRjaDAFE3VzZXJVbmNsYWltZWRPcHRpb24DCQABAgUHJG1hdGNoMAIEVW5pdAkAlAoCAAAFA25pbAMJAAECBQckbWF0Y2gwAgNJbnQEAXUFByRtYXRjaDAJAJQKAgUBdQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEGtleVVzZXJVbmNsYWltZWQBBQd1c2VySWR4AAAFA25pbAkAAgECC01hdGNoIGVycm9yEAFpARZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5Agt1c2VyQWRkcmVzcw5nV3hBbW91bnRTdGFydAQIcmVmZXJyZXIJAJ0IAgUecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsCQELa2V5UmVmZXJyZXIBBQt1c2VyQWRkcmVzcwQRYWN0aXZlUmVmZXJyYWxJbnYDCQAAAgUIcmVmZXJyZXIFBHVuaXQFBHVuaXQJAPwHBAUecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsAhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIFE3JlZmVycmFsUHJvZ3JhbU5hbWUJAMwIAgULdXNlckFkZHJlc3MJAMwIAgkAZwIFDmdXeEFtb3VudFN0YXJ0BRRyZWZlcnJhbE1pbkdXeEFtb3VudAUDbmlsBQNuaWwDCQAAAgURYWN0aXZlUmVmZXJyYWxJbnYFEWFjdGl2ZVJlZmVycmFsSW52CQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5maW5hbGl6ZUhlbHBlcgAED3Byb2Nlc3NpbmdTdGFnZQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5UHJvY2Vzc2luZ1N0YWdlAAUUcHJvY2Vzc2luZ1N0YWdlVG90YWwEDWN1cnJlbnRQZXJpb2QJAQ5nZXROdW1iZXJCeUtleQEJARZrZXlOZXh0UHJvY2Vzc2VkUGVyaW9kAAQLY3VycmVudFVzZXIJAQ5nZXROdW1iZXJCeUtleQEJARRrZXlOZXh0UHJvY2Vzc2VkVXNlcgAEDGxhdGVzdFBlcmlvZAkBDmdldE51bWJlckJ5S2V5AQkBD2tleUxhdGVzdFBlcmlvZAAECnVzZXJzQ291bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgkBFmJvb3N0aW5nQ29udHJhY3RPckZhaWwACQENa2V5VXNlcnNDb3VudAAAAAQOdG90YWxXZWlnaHRLZXkJARdrZXlUb3RhbFdlaWdodEZvclBlcmlvZAEFDWN1cnJlbnRQZXJpb2QEC3RvdGFsV2VpZ2h0CQEOZ2V0TnVtYmVyQnlLZXkBCQEXa2V5VG90YWxXZWlnaHRGb3JQZXJpb2QBBQ1jdXJyZW50UGVyaW9kBA9oZWlnaHRGb3JQZXJpb2QJAQ5nZXROdW1iZXJCeUtleQEJARJrZXlIZWlnaHRGb3JQZXJpb2QBBQ1jdXJyZW50UGVyaW9kAwkAZgIFDWN1cnJlbnRQZXJpb2QFDGxhdGVzdFBlcmlvZAkAlAoCBQNuaWwHAwkAAAIFD3Byb2Nlc3NpbmdTdGFnZQUUcHJvY2Vzc2luZ1N0YWdlVG90YWwEDSR0MDEyMDI1MTIxNDEJAQ5jYWxjVXNlcldlaWdodAQJARZib29zdGluZ0NvbnRyYWN0T3JGYWlsAAUPaGVpZ2h0Rm9yUGVyaW9kBQ1jdXJyZW50UGVyaW9kBQtjdXJyZW50VXNlcgQKdXNlcldlaWdodAgFDSR0MDEyMDI1MTIxNDECXzEEC3VzZXJBY3Rpb25zCAUNJHQwMTIwMjUxMjE0MQJfMgQOdG90YWxXZWlnaHROZXcJAGQCBQt0b3RhbFdlaWdodAUKdXNlcldlaWdodAQRcHJvY2Vzc2luZ0FjdGlvbnMDCQBmAgkAZQIFCnVzZXJzQ291bnQAAQULY3VycmVudFVzZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlOZXh0UHJvY2Vzc2VkVXNlcgAJAGQCBQtjdXJyZW50VXNlcgABBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlQcm9jZXNzaW5nU3RhZ2UABRVwcm9jZXNzaW5nU3RhZ2VTaGFyZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlOZXh0UHJvY2Vzc2VkVXNlcgAAAAUDbmlsCQCUCgIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ50b3RhbFdlaWdodEtleQUOdG90YWxXZWlnaHROZXcFA25pbAURcHJvY2Vzc2luZ0FjdGlvbnMFC3VzZXJBY3Rpb25zBgMJAAACBQ9wcm9jZXNzaW5nU3RhZ2UFFXByb2Nlc3NpbmdTdGFnZVNoYXJlcwQKdXNlcldlaWdodAkBFmNhbGNVc2VyV2VpZ2h0Rm9yQ2xhaW0ECQEWYm9vc3RpbmdDb250cmFjdE9yRmFpbAAFD2hlaWdodEZvclBlcmlvZAUNY3VycmVudFBlcmlvZAULY3VycmVudFVzZXIEGnVzZXJBbW91bnRNYXRjaGVyRm9yUGVyaW9kCQBrAwkBDmdldE51bWJlckJ5S2V5AQkBF2tleVRvdGFsQW1vdW50Rm9yUGVyaW9kAQUNY3VycmVudFBlcmlvZAUKdXNlcldlaWdodAULdG90YWxXZWlnaHQEG3VzZXJBbW91bnRFbWlzc2lvbkZvclBlcmlvZAkAawMJAQ5nZXROdW1iZXJCeUtleQEJAR1rZXlBdXhFbWlzc2lvblJld2FyZEZvclBlcmlvZAEFDWN1cnJlbnRQZXJpb2QFCnVzZXJXZWlnaHQFC3RvdGFsV2VpZ2h0BA91c2VyVG90YWxBbW91bnQJAGQCBRt1c2VyQW1vdW50RW1pc3Npb25Gb3JQZXJpb2QFGnVzZXJBbW91bnRNYXRjaGVyRm9yUGVyaW9kBBN1c2VyVW5jbGFpbWVkT3B0aW9uCQCfCAEJARBrZXlVc2VyVW5jbGFpbWVkAQULY3VycmVudFVzZXIEC3VzZXJBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA1MykCCQEWYm9vc3RpbmdDb250cmFjdE9yRmFpbAAJARNrZXlOdW1Ub1VzZXJNYXBwaW5nAQULY3VycmVudFVzZXIECHJlZmVycmVyCQCdCAIFHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbAkBC2tleVJlZmVycmVyAQULdXNlckFkZHJlc3MEEWFjdGl2ZVJlZmVycmFsSW52AwkAAAIFCHJlZmVycmVyBQR1bml0BQR1bml0CQD8BwQFHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbAIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCBRNyZWZlcnJhbFByb2dyYW1OYW1lCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIJAGcCBQp1c2VyV2VpZ2h0BRRyZWZlcnJhbE1pbkdXeEFtb3VudAUDbmlsBQNuaWwDCQAAAgURYWN0aXZlUmVmZXJyYWxJbnYFEWFjdGl2ZVJlZmVycmFsSW52BAtyZWZlcnJhbEludgMDCQAAAgUIcmVmZXJyZXIFBHVuaXQGCQBmAgUUcmVmZXJyYWxNaW5HV3hBbW91bnQFCnVzZXJXZWlnaHQFBHVuaXQEDnJlZmVycmVyUmV3YXJkCQBrAwUPdXNlclRvdGFsQW1vdW50BRZyZWZlcnJlclJld2FyZFBlcm1pbGxlBQVTQ0FMRQQOcmVmZXJyYWxSZXdhcmQJAGsDBQ91c2VyVG90YWxBbW91bnQFFnJlZmVycmFsUmV3YXJkUGVybWlsbGUFBVNDQUxFCQD8BwQFHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbAIMaW5jVW5jbGFpbWVkCQDMCAIFE3JlZmVycmFsUHJvZ3JhbU5hbWUJAMwIAgULdXNlckFkZHJlc3MJAMwIAgUOcmVmZXJyZXJSZXdhcmQJAMwIAgUOcmVmZXJyYWxSZXdhcmQFA25pbAUDbmlsAwkAAAIFC3JlZmVycmFsSW52BQtyZWZlcnJhbEludgQQdW5jbGFpbWVkQWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEGtleVVzZXJVbmNsYWltZWQBBQtjdXJyZW50VXNlcgkAZAIJAQt2YWx1ZU9yRWxzZQIFE3VzZXJVbmNsYWltZWRPcHRpb24AAAUPdXNlclRvdGFsQW1vdW50BQNuaWwEEXByb2Nlc3NpbmdBY3Rpb25zAwkAZgIJAGUCBQp1c2Vyc0NvdW50AAEFC2N1cnJlbnRVc2VyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5TmV4dFByb2Nlc3NlZFVzZXIACQBkAgULY3VycmVudFVzZXIAAQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5TmV4dFByb2Nlc3NlZFBlcmlvZAAJAGQCBQ1jdXJyZW50UGVyaW9kAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlOZXh0UHJvY2Vzc2VkVXNlcgAAAAkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5UHJvY2Vzc2luZ1N0YWdlAAUDbmlsCQCUCgIJAM4IAgUQdW5jbGFpbWVkQWN0aW9ucwURcHJvY2Vzc2luZ0FjdGlvbnMGCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIYaW52YWxpZCBwcm9jZXNzaW5nIHN0YWdlAWkBD2ZpbmFsaXplV3JhcHBlcgEHY291bnRlcgQGcmVzdWx0CgABQAkA/AcEBQR0aGlzAg5maW5hbGl6ZUhlbHBlcgUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwIOZmluYWxpemVIZWxwZXIFA25pbAUDbmlsAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuAwkAAAIFBnJlc3VsdAUGcmVzdWx0AwkBASEBBQZyZXN1bHQDCQAAAgUHY291bnRlcgUIbWF4RGVwdGgJAAIBAhJOb3RoaW5nIHRvIHByb2Nlc3MJAJQKAgUDbmlsBQR1bml0AwkAZgIFB2NvdW50ZXIAAAkAlAoCBQNuaWwJAPwHBAUEdGhpcwIPZmluYWxpemVXcmFwcGVyCQDMCAIJAGUCBQdjb3VudGVyAAEFA25pbAUDbmlsCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAR1wcm9jZXNzUGVuZGluZ1BlcmlvZHNBbmRVc2VycwAJAJQKAgUDbmlsCQD8BwQFBHRoaXMCD2ZpbmFsaXplV3JhcHBlcgkAzAgCBQhtYXhEZXB0aAUDbmlsBQNuaWwBaQEHZGVwb3NpdAAECGNmZ0FycmF5CQEVcmVhZENvbmZpZ0FycmF5T3JGYWlsAAMJAQIhPQIIBQFpBmNhbGxlcgkBB0FkZHJlc3MBCQDZBAEJAJEDAgUIY2ZnQXJyYXkFFklkeENmZ1BhY2VtYWtlckFkZHJlc3MJAAIBAhRXcm9uZyBjYWxsZXIgYWRkcmVzcwQHYXNzZXRJZAkBBXZhbHVlAQgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkAwkBAiE9AgUHYXNzZXRJZAkA2QQBCQCRAwIFCGNmZ0FycmF5BQ1JZHhDZmdBc3NldElkCQACAQITV3JvbmcgcGF5bWVudCBhc3NldAQGcGVyaW9kCQEKbmV4dFBlcmlvZAAEBmRlbHRhSAkAZQIFBmhlaWdodAkBD2dldE51bWJlck9yRmFpbAEJAR9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0AAQMZW1pc3Npb25SYXRlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUQZW1pc3Npb25Db250cmFjdAkBFmtleVJhdGVQZXJCbG9ja0N1cnJlbnQACQCsAgIJAKwCAgIcbWFuZGF0b3J5IGVtaXNzaW9uX2NvbnRyYWN0LgkBFmtleVJhdGVQZXJCbG9ja0N1cnJlbnQAAg8gaXMgbm90IGRlZmluZWQEBndlaWdodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFD2ZhY3RvcnlDb250cmFjdAkBFGtleVBvb2xXZWlnaHRWaXJ0dWFsAAkArAICCQCsAgICG21hbmRhdG9yeSBmYWN0b3J5X2NvbnRyYWN0LgkBFGtleVBvb2xXZWlnaHRWaXJ0dWFsAAIPIGlzIG5vdCBkZWZpbmVkBAlhdXhBbW91bnQJAGsDCQBoAgUGZGVsdGFIBQZ3ZWlnaHQFDGVtaXNzaW9uUmF0ZQUFTVVMVDgEAmVtCQD8BwQFEGVtaXNzaW9uQ29udHJhY3QCBGVtaXQJAMwIAgUJYXV4QW1vdW50BQNuaWwFA25pbAMJAAACBQJlbQUCZW0EC21hdGNoZXJQYXJ0CAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQKcGF5b3V0SW5mbwkBEFBlcmlvZFBheW91dEluZm8DBQZwZXJpb2QFC21hdGNoZXJQYXJ0BQlhdXhBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlMYXRlc3RQZXJpb2QABQZwZXJpb2QJAMwIAgkBDEludGVnZXJFbnRyeQIJARJrZXlIZWlnaHRGb3JQZXJpb2QBBQZwZXJpb2QFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHWtleUF1eEVtaXNzaW9uUmV3YXJkRm9yUGVyaW9kAQUGcGVyaW9kBQlhdXhBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAR9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0AAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEXa2V5VG90YWxBbW91bnRGb3JQZXJpb2QBBQZwZXJpb2QFC21hdGNoZXJQYXJ0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5TmV4dFBlcmlvZAAJAGQCBQZwZXJpb2QAAQkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFzdFBheW91dEluZm8ABQpwYXlvdXRJbmZvCQDMCAIJAQtTdHJpbmdFbnRyeQIJARRrZXlQYXlvdXRIaXN0b3J5SW5mbwEFBnBlcmlvZAUKcGF5b3V0SW5mbwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC2NsYWltUmV3YXJkAAQIY2ZnQXJyYXkJARVyZWFkQ29uZmlnQXJyYXlPckZhaWwABAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQNJHQwMTc0ODMxNzUzMwkBEWNvbW1vbkNsYWltUmV3YXJkAQUHYWRkcmVzcwQGYW1vdW50CAUNJHQwMTc0ODMxNzUzMwJfMQQHYWN0aW9ucwgFDSR0MDE3NDgzMTc1MzMCXzIEC2NoZWNrQW1vdW50AwkAZgIFBmFtb3VudAAABgkAAgECEE5vdGhpbmcgdG8gY2xhaW0DCQAAAgULY2hlY2tBbW91bnQFC2NoZWNrQW1vdW50BBJhbW91bnRGcm9tRW1pc3Npb24AAAQPY2xhaW1lZFJlZmVycmFsCgABQAkA/AcEBR5yZWZlcnJhbHNDb250cmFjdEFkZHJlc3NPckZhaWwCBWNsYWltCQDMCAIFE3JlZmVycmFsUHJvZ3JhbU5hbWUFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAPwHBAUecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsAgVjbGFpbQkAzAgCBRNyZWZlcnJhbFByb2dyYW1OYW1lBQNuaWwFA25pbAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAt0b3RhbEFtb3VudAkAZAIFBmFtb3VudAUPY2xhaW1lZFJlZmVycmFsCQCUCgIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC3RvdGFsQW1vdW50CQDZBAEJAJEDAgUIY2ZnQXJyYXkFDUlkeENmZ0Fzc2V0SWQJAMwIAgkBDEhpc3RvcnlFbnRyeQQCBWNsYWltBQdhZGRyZXNzBQZhbW91bnQFAWkFA25pbAUHYWN0aW9ucwkAzAgCBQt0b3RhbEFtb3VudAkAzAgCBRJhbW91bnRGcm9tRW1pc3Npb24FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARNjbGFpbVJld2FyZFJFQURPTkxZAQdhZGRyZXNzBA0kdDAxODEwNjE4MTU2CQERY29tbW9uQ2xhaW1SZXdhcmQBBQdhZGRyZXNzBAZhbW91bnQIBQ0kdDAxODEwNjE4MTU2Al8xBAdhY3Rpb25zCAUNJHQwMTgxMDYxODE1NgJfMgQRcmVmZXJyYWxVbmNsYWltZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsCQEUa2V5VW5jbGFpbWVkUmVmZXJyYWwCBRNyZWZlcnJhbFByb2dyYW1OYW1lBQdhZGRyZXNzAAAEC3RvdGFsQW1vdW50CQBkAgUGYW1vdW50BRFyZWZlcnJhbFVuY2xhaW1lZAkAlAoCBQNuaWwFC3RvdGFsQW1vdW50AWkBHWxhdGVzdEZpbmFsaXplZFBlcmlvZFJFQURPTkxZAQdhZGRyZXNzCQCUCgIFA25pbAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEPa2V5TGF0ZXN0UGVyaW9kAAD///////////8BAWkBIWxhdGVzdEZpbmFsaXplZFBlcmlvZEluZm9SRUFET05MWQEHYWRkcmVzcwkAlAoCBQNuaWwJAQ5nZXRTdHJpbmdCeUtleQEJARFrZXlMYXN0UGF5b3V0SW5mbwABaQEVY2FsY0d3eFBhcmFtc1JFQURPTkxZAw5nd3hBbW91bnRTdGFydA9sb2NrU3RhcnRIZWlnaHQSbG9ja0R1cmF0aW9uQmxvY2tzBA1sb2NrRW5kSGVpZ2h0CQBkAgUPbG9ja1N0YXJ0SGVpZ2h0BRJsb2NrRHVyYXRpb25CbG9ja3MEDHNjYWxlOFBhcmFtSwkBAS0BCQBrAwUOZ3d4QW1vdW50U3RhcnQFBVNDQUxFBRJsb2NrRHVyYXRpb25CbG9ja3MEDHNjYWxlOFBhcmFtQgkAaAIJAGsDBQ5nd3hBbW91bnRTdGFydAUFU0NBTEUFEmxvY2tEdXJhdGlvbkJsb2NrcwUNbG9ja0VuZEhlaWdodAkAlAoCBQNuaWwJAMwIAgUMc2NhbGU4UGFyYW1LCQDMCAIFDHNjYWxlOFBhcmFtQgkAzAgCCQEKbmV4dFBlcmlvZAAFA25pbAFpARpjYWxjR3d4QW1vdW50U3RhcnRSRUFET05MWQMMd3hMb2NrQW1vdW50DGxvY2tEdXJhdGlvbg9tYXhMb2NrRHVyYXRpb24EB2NvZWZmWDgJAGsDBQxsb2NrRHVyYXRpb24FBU1VTFQ4BQ9tYXhMb2NrRHVyYXRpb24EDmdXeEFtb3VudFN0YXJ0CQBrAwUMd3hMb2NrQW1vdW50BQdjb2VmZlg4BQVNVUxUOAkAlAoCBQNuaWwJAMwIAgUOZ1d4QW1vdW50U3RhcnQFA25pbAFpARVvbkVtaXNzaW9uRm9yR3d4U3RhcnQAAwkBAiE9AggFAWkGY2FsbGVyBQ9mYWN0b3J5Q29udHJhY3QJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAR9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0AAUGaGVpZ2h0BQNuaWwBaQEjbGF0ZXN0UGVyaW9kRW1pc3Npb25SZXdhcmRzUkVBRE9OTFkBB2FkZHJlc3MEBnBlcmlvZAkBCm5leHRQZXJpb2QACQCUCgIFA25pbAkAzAgCCQEOZ2V0TnVtYmVyQnlLZXkBCQEda2V5QXV4RW1pc3Npb25SZXdhcmRGb3JQZXJpb2QBBQZwZXJpb2QFA25pbAFpAQVjYWxjRAULeDFCaWdJbnRTdHILeDJCaWdJbnRTdHIMYW1wQmlnSW50U3RyE2FQcmVjaXNpb25CaWdJbnRTdHIYdGFyZ2V0UHJlY2lzaW9uQmlnSW50U3RyBAZuQ29pbnMJALYCAQACBAphUHJlY2lzaW9uCQCnAwEFE2FQcmVjaXNpb25CaWdJbnRTdHIED3RhcmdldFByZWNpc2lvbgkApwMBBRh0YXJnZXRQcmVjaXNpb25CaWdJbnRTdHIEAngxCQCnAwEFC3gxQmlnSW50U3RyBAJ4MgkApwMBBQt4MkJpZ0ludFN0cgQDYW1wCQC5AgIJAKcDAQUMYW1wQmlnSW50U3RyBQphUHJlY2lzaW9uBAFzCQC3AgIFAngxBQJ4MgMJAAACBQFzBQp6ZXJvQmlnSW50CQCUCgIFA25pbAkApgMBBQp6ZXJvQmlnSW50BANhbm4JALkCAgUDYW1wBQZuQ29pbnMEA2FycgkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcFA25pbAoBBGNhbGMCA2FjYwNjdXIEDSR0MDIwNzc5MjA5NjgFA2FjYwQBZAgFDSR0MDIwNzc5MjA5NjgCXzEEBWRQcmV2CAUNJHQwMjA3NzkyMDk2OAJfMgQCZHAJALoCAgkAuQICCQC5AgIFAWQFAWQFAWQJALkCAgkAuQICCQC5AgIFAngxBQJ4MgUGbkNvaW5zBQZuQ29pbnMEBWROZXh0CQC6AgIJALkCAgkAtwICCQC6AgIJALkCAgUDYW5uBQFzBQphUHJlY2lzaW9uCQC5AgIFAmRwBQZuQ29pbnMFAWQJALcCAgkAugICCQC5AgIJALgCAgUDYW5uBQphUHJlY2lzaW9uBQFkBQphUHJlY2lzaW9uCQC5AgIJALcCAgUGbkNvaW5zCQC2AgEAAQUCZHAJAJQKAgUFZE5leHQFAWQEDSR0MDIxMTgxMjEyMzEKAAIkbAUDYXJyCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQFzBQR1bml0CgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRjYWxjAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA3CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcEBWROZXh0CAUNJHQwMjExODEyMTIzMQJfMQQFZFByZXYIBQ0kdDAyMTE4MTIxMjMxAl8yBAVkRGlmZgkBA2FicwEJALgCAgUFZE5leHQJAQV2YWx1ZQEFBWRQcmV2AwkAwAICBQ90YXJnZXRQcmVjaXNpb24FBWREaWZmCQCUCgIFA25pbAkApgMBBQVkTmV4dAkAAgEJAKwCAgIdRCBjYWxjdWxhdGlvbiBlcnJvciwgZERpZmYgPSAJAKYDAQUFZERpZmYBaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFFWNoZWNrTWFuYWdlclB1YmxpY0tleQUVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAJwbQkBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQFaGFzUE0DCQEJaXNEZWZpbmVkAQUCcG0GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFBWhhc1BNBQVoYXNQTQQHY2hlY2tQTQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAnBtBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQdjaGVja1BNBQdjaGVja1BNCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlNYW5hZ2VyUHVibGljS2V5AAkA2AQBCQEFdmFsdWUBBQJwbQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXlH0ouQ", "chainId": 84, "height": 2226003, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5qBic48WjbNPwehhwqfTLYVsakhHMb9N549pfwFsLPBV Next: PhHQMyKgKXoaJUzJKmoUNsDZeEVEMgp3LHNFeLX32jD Diff:
OldNewDifferences
2525 func k (h) = valueOrErrorMessage(getString(this, h), (("mandatory this." + h) + " is not defined"))
2626
2727
28-func l (m) = if ((0 > m))
28+func l (m) = if ((d > m))
2929 then -(m)
3030 else m
3131
3232
33-func n (m) = if ((d > m))
34- then -(m)
35- else m
33+let n = "%s__maxDepth"
34+
35+let o = 30
36+
37+let p = valueOrElse(getInteger(this, n), o)
38+
39+func q () = "%s%s__config__factoryAddress"
3640
3741
38-let o = "%s__maxDepth"
42+let r = k(q())
3943
40-let p = 30
44+let s = addressFromStringValue(r)
4145
42-let q = valueOrElse(getInteger(this, o), p)
43-
44-func r () = "%s%s__config__factoryAddress"
46+func t () = "%s%s__config__emissionAddress"
4547
4648
47-let s = k(r())
48-
49-let t = addressFromStringValue(s)
50-
51-func u () = "%s%s__config__emissionAddress"
49+func u (v) = makeString(["%s%s%s", "mapping", "num2user", toString(v)], a)
5250
5351
54-func v (w) = makeString(["%s%s%s", "mapping", "num2user", toString(w)], a)
52+let w = makeString(["%s%s", "referral", "programName"], a)
53+
54+let x = "wxlock"
55+
56+let y = valueOrElse(getString(this, w), x)
57+
58+let z = makeString(["%s%s", "referral", "minGWxAmount"], a)
59+
60+let A = (500 * c)
61+
62+let B = valueOrElse(getInteger(this, z), A)
63+
64+let C = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
65+
66+let D = 50
67+
68+let E = valueOrElse(getInteger(this, C), D)
69+
70+let F = makeString(["%s%s", "referral", "referralRewardPermille"], a)
71+
72+let G = 50
73+
74+let H = valueOrElse(getInteger(this, F), G)
75+
76+func I (J) = makeString(["%s%s%s", "referrer", y, J], a)
5577
5678
57-let x = makeString(["%s%s", "referral", "programName"], a)
58-
59-let y = "wxlock"
60-
61-let z = valueOrElse(getString(this, x), y)
62-
63-let A = makeString(["%s%s", "referral", "minGWxAmount"], a)
64-
65-let B = (500 * c)
66-
67-let C = valueOrElse(getInteger(this, A), B)
68-
69-let D = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
70-
71-let E = 50
72-
73-let F = valueOrElse(getInteger(this, D), E)
74-
75-let G = makeString(["%s%s", "referral", "referralRewardPermille"], a)
76-
77-let H = 50
78-
79-let I = valueOrElse(getInteger(this, G), H)
80-
81-func J (K) = makeString(["%s%s%s", "referrer", z, K], a)
79+func K (L,M) = makeString(["%s%s%s%s", "unclaimedReferral", L, M], a)
8280
8381
84-func L (M,N) = makeString(["%s%s%s%s", "unclaimedReferral", M, N], a)
82+let N = k(t())
83+
84+let O = addressFromStringValue(N)
85+
86+let P = 1
87+
88+let Q = 2
89+
90+let R = 3
91+
92+let S = 4
93+
94+func T () = "%s__config"
8595
8696
87-let O = k(u())
88-
89-let P = addressFromStringValue(O)
90-
91-let Q = 1
92-
93-let R = 2
94-
95-let S = 3
96-
97-let T = 4
98-
99-func U () = "%s__config"
97+func U () = split(k(T()), a)
10098
10199
102-func V () = split(k(U()), a)
100+func V (W,X,Y,p) = makeString(["%s%s%s%d", W, X, Y, toString(p)], a)
103101
104102
105-func W (X,Y,Z,q) = makeString(["%s%s%s%d", X, Y, Z, toString(q)], a)
106-
107-
108-func aa () = {
109- let ab = V()
110- valueOrErrorMessage(addressFromString(ab[S]), "boosting contract address is not defined")
103+func Z () = {
104+ let aa = U()
105+ valueOrErrorMessage(addressFromString(aa[R]), "boosting contract address is not defined")
111106 }
112107
113108
114-func ac () = "%s%s__gwxRewardEmissionPart__startHeight"
109+func ab () = "%s%s__gwxRewardEmissionPart__startHeight"
115110
116111
117-func ad () = "%s__nextUserNum"
112+func ac () = "%s__nextUserNum"
118113
119114
120-func ae () = "%s%s__ratePerBlock__current"
115+func ad () = "%s%s__ratePerBlock__current"
121116
122117
123-func af () = "%s%s__poolWeight__GWXvirtualPOOL"
118+func ae () = "%s%s__poolWeight__GWXvirtualPOOL"
124119
125120
126-func ag () = "%s__nextProcessedUser"
121+func af () = "%s__nextProcessedUser"
127122
128123
129-func ah () = "%s__latestPeriod"
124+func ag () = "%s__latestPeriod"
130125
131126
132-func ai () = "%s__nextPeriod"
127+func ah () = "%s__nextPeriod"
133128
134129
135-func aj () = "%s__processingStage"
130+func ai () = "%s__processingStage"
136131
137132
138-func ak () = "%s__nextProcessedPeriod"
133+func aj () = "%s__nextProcessedPeriod"
139134
140135
141-func al (am) = makeString(["%s%d", "userUnclaimed", toString(am)], a)
136+func ak (al) = makeString(["%s%d", "userUnclaimed", toString(al)], a)
142137
143138
144-func an (am) = makeString(["%s%d__nextClaimedPeriod", toString(am)], a)
139+func am (al) = makeString(["%s%d__nextClaimedPeriod", toString(al)], a)
145140
146141
147-func ao (am) = makeString(["%s%d__lastProcessedPeriod", toString(am)], a)
142+func an (al) = makeString(["%s%d__lastProcessedPeriod", toString(al)], a)
148143
149144
150-func ap (aq) = makeString(["%s%d__startHeightForPeriod", toString(aq)], a)
145+func ao (ap) = makeString(["%s%d__startHeightForPeriod", toString(ap)], a)
151146
152147
153-func ar (aq) = makeString(["%s%d__auxEmissionReward", toString(aq)], a)
148+func aq (ap) = makeString(["%s%d__auxEmissionReward", toString(ap)], a)
154149
155150
156-func as (aq) = makeString(["%s%d__totalAmountForPeriod", toString(aq)], a)
151+func ar (ap) = makeString(["%s%d__totalAmountForPeriod", toString(ap)], a)
157152
158153
159-func at () = "%s__lastPayoutInfo"
154+func as () = "%s__lastPayoutInfo"
160155
161156
162-func au (aq,av,aw) = makeString(["%d%d%d", toString(aq), toString(av), toString(aw)], a)
157+func at (ap,au,av) = makeString(["%d%d%d", toString(ap), toString(au), toString(av)], a)
163158
164159
165-func ax (aq) = makeString(["%s%s%d__payouts__history", toString(aq)], a)
160+func aw (ap) = makeString(["%s%s%d__payouts__history", toString(ap)], a)
166161
167162
168-func ay (aq) = makeString(["%s%d__totalWeightForPeriod", toString(aq)], a)
163+func ax (ap) = makeString(["%s%d__totalWeightForPeriod", toString(ap)], a)
169164
170165
171-func az (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "k", toString(aq)], a)
166+func ay (ap,al) = makeString(["%s%d%s%d__paramByPeriod", toString(al), "k", toString(ap)], a)
172167
173168
174-func aA (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "b", toString(aq)], a)
169+func az (ap,al) = makeString(["%s%d%s%d__paramByPeriod", toString(al), "b", toString(ap)], a)
175170
176171
177-func aB (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "weight", toString(aq)], a)
172+func aA (ap,al) = makeString(["%s%d%s%d__paramByPeriod", toString(al), "weight", toString(ap)], a)
178173
179174
180-func aC () = makeString(["%s%s", "config", "referralsContractAddress"], a)
175+func aB () = makeString(["%s%s", "config", "referralsContractAddress"], a)
181176
182177
183-let aD = addressFromStringValue(k(aC()))
178+let aC = addressFromStringValue(k(aB()))
184179
185-func aE (aF,aG,aH,aI) = {
186- let aJ = makeString(["%s%s%s%s__history", aF, aG, toBase58String(aI.transactionId)], a)
187- let aK = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aH)], a)
188- StringEntry(aJ, aK)
180+func aD (aE,aF,aG,aH) = {
181+ let aI = makeString(["%s%s%s%s__history", aE, aF, toBase58String(aH.transactionId)], a)
182+ let aJ = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aG)], a)
183+ StringEntry(aI, aJ)
189184 }
190185
191186
192-func aL () = "%s__managerPublicKey"
187+func aK () = "%s__managerPublicKey"
193188
194189
195-func aM () = "%s__pendingManagerPublicKey"
190+func aL () = "%s__pendingManagerPublicKey"
196191
197192
198-func aN () = {
199- let aO = getString(aL())
200- if ($isInstanceOf(aO, "String"))
193+func aM () = {
194+ let aN = getString(aK())
195+ if ($isInstanceOf(aN, "String"))
201196 then {
202- let aP = aO
203- fromBase58String(aP)
197+ let aO = aN
198+ fromBase58String(aO)
204199 }
205- else if ($isInstanceOf(aO, "Unit"))
200+ else if ($isInstanceOf(aN, "Unit"))
206201 then unit
207202 else throw("Match error")
208203 }
209204
210205
211-func aQ () = {
212- let aO = getString(aM())
213- if ($isInstanceOf(aO, "String"))
206+func aP () = {
207+ let aN = getString(aL())
208+ if ($isInstanceOf(aN, "String"))
214209 then {
215- let aP = aO
216- fromBase58String(aP)
210+ let aO = aN
211+ fromBase58String(aO)
217212 }
218- else if ($isInstanceOf(aO, "Unit"))
213+ else if ($isInstanceOf(aN, "Unit"))
219214 then unit
220215 else throw("Match error")
221216 }
222217
223218
224-func aR (aI) = {
225- let aS = throw("Permission denied")
226- let aO = aN()
227- if ($isInstanceOf(aO, "ByteVector"))
219+func aQ (aH) = {
220+ let aR = throw("Permission denied")
221+ let aN = aM()
222+ if ($isInstanceOf(aN, "ByteVector"))
228223 then {
229- let aT = aO
230- if ((aI.callerPublicKey == aT))
224+ let aS = aN
225+ if ((aH.callerPublicKey == aS))
231226 then true
232- else aS
227+ else aR
233228 }
234- else if ($isInstanceOf(aO, "Unit"))
235- then if ((aI.caller == this))
229+ else if ($isInstanceOf(aN, "Unit"))
230+ then if ((aH.caller == this))
236231 then true
237- else aS
232+ else aR
238233 else throw("Match error")
239234 }
240235
241236
242-func aU (aV,aW,aq,am) = {
243- let aX = ao(am)
244- let aY = az(aq, am)
245- let aZ = getInteger(aV, aY)
246- let ba = aB(aq, am)
247- if (isDefined(aZ))
237+func aT (aU,aV,ap,al) = {
238+ let aW = an(al)
239+ let aX = ay(ap, al)
240+ let aY = getInteger(aU, aX)
241+ let aZ = aA(ap, al)
242+ if (isDefined(aY))
248243 then {
249- let bb = value(aZ)
250- let bc = value(getInteger(aV, aA(aq, am)))
251- let bd = ((bb * aW) + bc)
252- if ((bd > 0))
253- then $Tuple2((bd / b), [IntegerEntry(aX, aq), IntegerEntry(ba, bd)])
244+ let ba = value(aY)
245+ let bb = value(getInteger(aU, az(ap, al)))
246+ let bc = ((ba * aV) + bb)
247+ if ((bc > 0))
248+ then $Tuple2((bc / b), [IntegerEntry(aW, ap), IntegerEntry(aZ, bc)])
254249 else $Tuple2(0, nil)
255250 }
256251 else {
257- let be = getInteger(this, aX)
258- if (if (isDefined(be))
259- then (aq >= value(be))
252+ let bd = getInteger(this, aW)
253+ if (if (isDefined(bd))
254+ then (ap >= value(bd))
260255 else false)
261256 then {
262- let bf = value(be)
263- let bb = value(getInteger(aV, az(bf, am)))
264- let bc = value(getInteger(aV, aA(bf, am)))
265- let bd = ((bb * aW) + bc)
266- if ((bd > 0))
267- then $Tuple2((bd / b), [IntegerEntry(ba, bd)])
257+ let be = value(bd)
258+ let ba = value(getInteger(aU, ay(be, al)))
259+ let bb = value(getInteger(aU, az(be, al)))
260+ let bc = ((ba * aV) + bb)
261+ if ((bc > 0))
262+ then $Tuple2((bc / b), [IntegerEntry(aZ, bc)])
268263 else $Tuple2(0, nil)
269264 }
270265 else $Tuple2(0, nil)
272267 }
273268
274269
275-func bg (aV,aW,aq,am) = {
276- let ba = aB(aq, am)
277- let bh = getInteger(ba)
278- let aO = bh
279- if ($isInstanceOf(aO, "Unit"))
270+func bf (aU,aV,ap,al) = {
271+ let aZ = aA(ap, al)
272+ let bg = getInteger(aZ)
273+ let aN = bg
274+ if ($isInstanceOf(aN, "Unit"))
280275 then 0
281- else if ($isInstanceOf(aO, "Int"))
276+ else if ($isInstanceOf(aN, "Int"))
282277 then {
283- let bd = aO
284- (bd / b)
278+ let bc = aN
279+ (bc / b)
285280 }
286281 else throw("Match error")
287282 }
288283
289284
290-func bi (Z,bj) = {
291- let h = makeString(["%s%s%s", "mapping", "user2num", bj], a)
292- parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(Z)), h), ((("User address " + bj) + " is not found in boosting contract data, key=") + h)))
285+func bh (Y,bi) = {
286+ let h = makeString(["%s%s%s", "mapping", "user2num", bi], a)
287+ parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(Y)), h), ((("User address " + bi) + " is not found in boosting contract data, key=") + h)))
293288 }
294289
295290
296-func bk () = g(ai())
291+func bj () = g(ah())
297292
298293
299-func bl (bj) = {
300- let ab = V()
301- let bm = bi(ab[S], bj)
302- let bn = getInteger(al(bm))
303- let aO = bn
304- if ($isInstanceOf(aO, "Unit"))
294+func bk (bi) = {
295+ let aa = U()
296+ let bl = bh(aa[R], bi)
297+ let bm = getInteger(ak(bl))
298+ let aN = bm
299+ if ($isInstanceOf(aN, "Unit"))
305300 then $Tuple2(0, nil)
306- else if ($isInstanceOf(aO, "Int"))
301+ else if ($isInstanceOf(aN, "Int"))
307302 then {
308- let bo = aO
309- $Tuple2(bo, [IntegerEntry(al(bm), 0)])
303+ let bn = aN
304+ $Tuple2(bn, [IntegerEntry(ak(bl), 0)])
310305 }
311306 else throw("Match error")
312307 }
313308
314309
315-@Callable(aI)
316-func updateReferralActivity (bj,bp) = {
317- let bq = getString(aD, J(bj))
318- let br = if ((bq == unit))
310+@Callable(aH)
311+func updateReferralActivity (bi,bo) = {
312+ let bp = getString(aC, I(bi))
313+ let bq = if ((bp == unit))
319314 then unit
320- else invoke(aD, "updateReferralActivity", [z, bj, (bp >= C)], nil)
321- if ((br == br))
315+ else invoke(aC, "updateReferralActivity", [y, bi, (bo >= B)], nil)
316+ if ((bq == bq))
322317 then $Tuple2(nil, unit)
323318 else throw("Strict value is not equal to itself.")
324319 }
325320
326321
327322
328-@Callable(aI)
323+@Callable(aH)
329324 func finalizeHelper () = {
330- let bs = valueOrElse(getInteger(aj()), e)
331- let bt = g(ak())
325+ let br = valueOrElse(getInteger(ai()), e)
326+ let bs = g(aj())
327+ let bt = g(af())
332328 let bu = g(ag())
333- let bv = g(ah())
334- let bw = valueOrElse(getInteger(aa(), ad()), 0)
335- let bx = ay(bt)
336- let by = g(ay(bt))
337- let aW = g(ap(bt))
338- if ((bt > bv))
329+ let bv = valueOrElse(getInteger(Z(), ac()), 0)
330+ let bw = ax(bs)
331+ let bx = g(ax(bs))
332+ let aV = g(ao(bs))
333+ if ((bs > bu))
339334 then $Tuple2(nil, false)
340- else if ((bs == e))
335+ else if ((br == e))
341336 then {
342- let bz = aU(aa(), aW, bt, bu)
343- let bA = bz._1
344- let bB = bz._2
345- let bC = (by + bA)
346- let bD = if (((bw - 1) > bu))
347- then [IntegerEntry(ag(), (bu + 1))]
348- else [IntegerEntry(aj(), f), IntegerEntry(ag(), 0)]
349- $Tuple2((([IntegerEntry(bx, bC)] ++ bD) ++ bB), true)
337+ let by = aT(Z(), aV, bs, bt)
338+ let bz = by._1
339+ let bA = by._2
340+ let bB = (bx + bz)
341+ let bC = if (((bv - 1) > bt))
342+ then [IntegerEntry(af(), (bt + 1))]
343+ else [IntegerEntry(ai(), f), IntegerEntry(af(), 0)]
344+ $Tuple2((([IntegerEntry(bw, bB)] ++ bC) ++ bA), true)
350345 }
351- else if ((bs == f))
346+ else if ((br == f))
352347 then {
353- let bA = bg(aa(), aW, bt, bu)
354- let bE = fraction(g(as(bt)), bA, by)
355- let bF = fraction(g(ar(bt)), bA, by)
356- let bG = (bF + bE)
357- let bn = getInteger(al(bu))
358- let bj = getStringValue(aa(), v(bu))
359- let bq = getString(aD, J(bj))
360- let br = if ((bq == unit))
348+ let bz = bf(Z(), aV, bs, bt)
349+ let bD = fraction(g(ar(bs)), bz, bx)
350+ let bE = fraction(g(aq(bs)), bz, bx)
351+ let bF = (bE + bD)
352+ let bm = getInteger(ak(bt))
353+ let bi = getStringValue(Z(), u(bt))
354+ let bp = getString(aC, I(bi))
355+ let bq = if ((bp == unit))
361356 then unit
362- else invoke(aD, "updateReferralActivity", [z, bj, (bA >= C)], nil)
363- if ((br == br))
357+ else invoke(aC, "updateReferralActivity", [y, bi, (bz >= B)], nil)
358+ if ((bq == bq))
364359 then {
365- let bH = if (if ((bq == unit))
360+ let bG = if (if ((bp == unit))
366361 then true
367- else (C > bA))
362+ else (B > bz))
368363 then unit
369364 else {
370- let bI = fraction(bG, F, b)
371- let bJ = fraction(bG, I, b)
372- invoke(aD, "incUnclaimed", [z, bj, bI, bJ], nil)
365+ let bH = fraction(bF, E, b)
366+ let bI = fraction(bF, H, b)
367+ invoke(aC, "incUnclaimed", [y, bi, bH, bI], nil)
373368 }
374- if ((bH == bH))
369+ if ((bG == bG))
375370 then {
376- let bK = [IntegerEntry(al(bu), (valueOrElse(bn, 0) + bG))]
377- let bD = if (((bw - 1) > bu))
378- then [IntegerEntry(ag(), (bu + 1))]
379- else [IntegerEntry(ak(), (bt + 1)), IntegerEntry(ag(), 0), DeleteEntry(aj())]
380- $Tuple2((bK ++ bD), true)
371+ let bJ = [IntegerEntry(ak(bt), (valueOrElse(bm, 0) + bF))]
372+ let bC = if (((bv - 1) > bt))
373+ then [IntegerEntry(af(), (bt + 1))]
374+ else [IntegerEntry(aj(), (bs + 1)), IntegerEntry(af(), 0), DeleteEntry(ai())]
375+ $Tuple2((bJ ++ bC), true)
381376 }
382377 else throw("Strict value is not equal to itself.")
383378 }
388383
389384
390385
391-@Callable(aI)
392-func finalizeWrapper (bL) = {
393- let bM = {
394- let bN = invoke(this, "finalizeHelper", nil, nil)
395- if ($isInstanceOf(bN, "Boolean"))
396- then bN
386+@Callable(aH)
387+func finalizeWrapper (bK) = {
388+ let bL = {
389+ let bM = invoke(this, "finalizeHelper", nil, nil)
390+ if ($isInstanceOf(bM, "Boolean"))
391+ then bM
397392 else throw(($getType(invoke(this, "finalizeHelper", nil, nil)) + " couldn't be cast to Boolean"))
398393 }
399- if ((bM == bM))
400- then if (!(bM))
401- then if ((bL == q))
394+ if ((bL == bL))
395+ then if (!(bL))
396+ then if ((bK == p))
402397 then throw("Nothing to process")
403398 else $Tuple2(nil, unit)
404- else if ((bL > 0))
405- then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bL - 1)], nil))
399+ else if ((bK > 0))
400+ then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bK - 1)], nil))
406401 else $Tuple2(nil, unit)
407402 else throw("Strict value is not equal to itself.")
408403 }
409404
410405
411406
412-@Callable(aI)
413-func processPendingPeriodsAndUsers () = $Tuple2(nil, invoke(this, "finalizeWrapper", [q], nil))
407+@Callable(aH)
408+func processPendingPeriodsAndUsers () = $Tuple2(nil, invoke(this, "finalizeWrapper", [p], nil))
414409
415410
416411
417-@Callable(aI)
412+@Callable(aH)
418413 func deposit () = {
419- let ab = V()
420- if ((aI.caller != Address(fromBase58String(ab[R]))))
414+ let aa = U()
415+ if ((aH.caller != Address(fromBase58String(aa[Q]))))
421416 then throw("Wrong caller address")
422417 else {
423- let bO = value(value(aI.payments[0]).assetId)
424- if ((bO != fromBase58String(ab[Q])))
418+ let bN = value(value(aH.payments[0]).assetId)
419+ if ((bN != fromBase58String(aa[P])))
425420 then throw("Wrong payment asset")
426421 else {
427- let aq = bk()
428- let bP = (height - i(ac()))
429- let bQ = valueOrErrorMessage(getInteger(P, ae()), (("mandatory emission_contract." + ae()) + " is not defined"))
430- let bR = valueOrErrorMessage(getInteger(t, af()), (("mandatory factory_contract." + af()) + " is not defined"))
431- let bS = fraction((bP * bR), bQ, c)
432- let bT = invoke(P, "emit", [bS], nil)
433- if ((bT == bT))
422+ let ap = bj()
423+ let bO = (height - i(ab()))
424+ let bP = valueOrErrorMessage(getInteger(O, ad()), (("mandatory emission_contract." + ad()) + " is not defined"))
425+ let bQ = valueOrErrorMessage(getInteger(s, ae()), (("mandatory factory_contract." + ae()) + " is not defined"))
426+ let bR = fraction((bO * bQ), bP, c)
427+ let bS = invoke(O, "emit", [bR], nil)
428+ if ((bS == bS))
434429 then {
435- let bU = value(aI.payments[0]).amount
436- let bV = au(aq, bU, bS)
437-[IntegerEntry(ah(), aq), IntegerEntry(ap(aq), height), IntegerEntry(ar(aq), bS), IntegerEntry(ac(), height), IntegerEntry(as(aq), bU), IntegerEntry(ai(), (aq + 1)), StringEntry(at(), bV), StringEntry(ax(aq), bV)]
430+ let bT = value(aH.payments[0]).amount
431+ let bU = at(ap, bT, bR)
432+[IntegerEntry(ag(), ap), IntegerEntry(ao(ap), height), IntegerEntry(aq(ap), bR), IntegerEntry(ab(), height), IntegerEntry(ar(ap), bT), IntegerEntry(ah(), (ap + 1)), StringEntry(as(), bU), StringEntry(aw(ap), bU)]
438433 }
439434 else throw("Strict value is not equal to itself.")
440435 }
443438
444439
445440
446-@Callable(aI)
441+@Callable(aH)
447442 func claimReward () = {
448- let ab = V()
449- let bW = toString(aI.caller)
450- let bX = bl(bW)
451- let aH = bX._1
452- let bY = bX._2
453- let bZ = if ((aH > 0))
443+ let aa = U()
444+ let bV = toString(aH.caller)
445+ let bW = bk(bV)
446+ let aG = bW._1
447+ let bX = bW._2
448+ let bY = if ((aG > 0))
454449 then true
455450 else throw("Nothing to claim")
456- if ((bZ == bZ))
451+ if ((bY == bY))
457452 then {
458- let ca = 0
459- let cb = {
460- let bN = invoke(aD, "claim", [z], nil)
461- if ($isInstanceOf(bN, "Int"))
462- then bN
463- else throw(($getType(invoke(aD, "claim", [z], nil)) + " couldn't be cast to Int"))
453+ let bZ = 0
454+ let ca = {
455+ let bM = invoke(aC, "claim", [y], nil)
456+ if ($isInstanceOf(bM, "Int"))
457+ then bM
458+ else throw(($getType(invoke(aC, "claim", [y], nil)) + " couldn't be cast to Int"))
464459 }
465- let cc = (aH + cb)
466- $Tuple2(([ScriptTransfer(aI.caller, cc, fromBase58String(ab[Q])), aE("claim", bW, aH, aI)] ++ bY), [cc, ca])
460+ let cb = (aG + ca)
461+ $Tuple2(([ScriptTransfer(aH.caller, cb, fromBase58String(aa[P])), aD("claim", bV, aG, aH)] ++ bX), [cb, bZ])
467462 }
468463 else throw("Strict value is not equal to itself.")
469464 }
470465
471466
472467
473-@Callable(aI)
474-func claimRewardREADONLY (bW) = {
475- let cd = bl(bW)
476- let aH = cd._1
477- let bY = cd._2
478- let ce = valueOrElse(getInteger(aD, L(z, bW)), 0)
479- let cc = (aH + ce)
480- $Tuple2(nil, cc)
468+@Callable(aH)
469+func claimRewardREADONLY (bV) = {
470+ let cc = bk(bV)
471+ let aG = cc._1
472+ let bX = cc._2
473+ let cd = valueOrElse(getInteger(aC, K(y, bV)), 0)
474+ let cb = (aG + cd)
475+ $Tuple2(nil, cb)
481476 }
482477
483478
484479
485-@Callable(aI)
486-func latestFinalizedPeriodREADONLY (bW) = $Tuple2(nil, valueOrElse(getInteger(this, ah()), -1))
480+@Callable(aH)
481+func latestFinalizedPeriodREADONLY (bV) = $Tuple2(nil, valueOrElse(getInteger(this, ag()), -1))
487482
488483
489484
490-@Callable(aI)
491-func latestFinalizedPeriodInfoREADONLY (bW) = $Tuple2(nil, j(at()))
485+@Callable(aH)
486+func latestFinalizedPeriodInfoREADONLY (bV) = $Tuple2(nil, j(as()))
492487
493488
494489
495-@Callable(aI)
496-func calcGwxParamsREADONLY (cf,cg,ch) = {
497- let ci = (cg + ch)
498- let cj = -(fraction(cf, b, ch))
499- let ck = (fraction(cf, b, ch) * ci)
500- $Tuple2(nil, [cj, ck, bk()])
490+@Callable(aH)
491+func calcGwxParamsREADONLY (ce,cf,cg) = {
492+ let ch = (cf + cg)
493+ let ci = -(fraction(ce, b, cg))
494+ let cj = (fraction(ce, b, cg) * ch)
495+ $Tuple2(nil, [ci, cj, bj()])
501496 }
502497
503498
504499
505-@Callable(aI)
506-func calcGwxAmountStartREADONLY (cl,cm,cn) = {
507- let co = fraction(cm, c, cn)
508- let bp = fraction(cl, co, c)
509- $Tuple2(nil, [bp])
500+@Callable(aH)
501+func calcGwxAmountStartREADONLY (ck,cl,cm) = {
502+ let cn = fraction(cl, c, cm)
503+ let bo = fraction(ck, cn, c)
504+ $Tuple2(nil, [bo])
510505 }
511506
512507
513508
514-@Callable(aI)
515-func onEmissionForGwxStart () = if ((aI.caller != t))
509+@Callable(aH)
510+func onEmissionForGwxStart () = if ((aH.caller != s))
516511 then throw("permissions denied")
517- else [IntegerEntry(ac(), height)]
512+ else [IntegerEntry(ab(), height)]
518513
519514
520515
521-@Callable(aI)
522-func latestPeriodEmissionRewardsREADONLY (bW) = {
523- let aq = bk()
524- $Tuple2(nil, [g(ar(aq))])
516+@Callable(aH)
517+func latestPeriodEmissionRewardsREADONLY (bV) = {
518+ let ap = bj()
519+ $Tuple2(nil, [g(aq(ap))])
525520 }
526521
527522
528523
529-@Callable(aI)
530-func calcD (cp,cq,cr,cs,ct) = {
531- let cu = toBigInt(2)
524+@Callable(aH)
525+func calcD (co,cp,cq,cr,cs) = {
526+ let ct = toBigInt(2)
527+ let cu = parseBigIntValue(cr)
532528 let cv = parseBigIntValue(cs)
533- let cw = parseBigIntValue(ct)
529+ let cw = parseBigIntValue(co)
534530 let cx = parseBigIntValue(cp)
535- let cy = parseBigIntValue(cq)
536- let cz = (parseBigIntValue(cr) * cv)
537- let aP = (cx + cy)
538- if ((aP == d))
531+ let cy = (parseBigIntValue(cq) * cu)
532+ let aO = (cw + cx)
533+ if ((aO == d))
539534 then $Tuple2(nil, toString(d))
540535 else {
541- let cA = (cz * cu)
542- let cB = [1, 2, 3, 4, 5, 6, 7]
543- func cC (cD,cE) = {
544- let cF = cD
545- let cG = cF._1
546- let cH = cF._2
547- let cI = (((cG * cG) * cG) / (((cx * cy) * cu) * cu))
548- let cJ = (((((cA * aP) / cv) + (cI * cu)) * cG) / ((((cA - cv) * cG) / cv) + ((cu + toBigInt(1)) * cI)))
549- $Tuple2(cJ, cG)
536+ let cz = (cy * ct)
537+ let cA = [1, 2, 3, 4, 5, 6, 7]
538+ func cB (cC,cD) = {
539+ let cE = cC
540+ let cF = cE._1
541+ let cG = cE._2
542+ let cH = (((cF * cF) * cF) / (((cw * cx) * ct) * ct))
543+ let cI = (((((cz * aO) / cu) + (cH * ct)) * cF) / ((((cz - cu) * cF) / cu) + ((ct + toBigInt(1)) * cH)))
544+ $Tuple2(cI, cF)
550545 }
551546
552- let cK = {
553- let cL = cB
554- let cM = size(cL)
555- let cN = $Tuple2(aP, unit)
556- func cO (cP,cQ) = if ((cQ >= cM))
557- then cP
558- else cC(cP, cL[cQ])
547+ let cJ = {
548+ let cK = cA
549+ let cL = size(cK)
550+ let cM = $Tuple2(aO, unit)
551+ func cN (cO,cP) = if ((cP >= cL))
552+ then cO
553+ else cB(cO, cK[cP])
559554
560- func cR (cP,cQ) = if ((cQ >= cM))
561- then cP
555+ func cQ (cO,cP) = if ((cP >= cL))
556+ then cO
562557 else throw("List size exceeds 7")
563558
564- cR(cO(cO(cO(cO(cO(cO(cO(cN, 0), 1), 2), 3), 4), 5), 6), 7)
559+ cQ(cN(cN(cN(cN(cN(cN(cN(cM, 0), 1), 2), 3), 4), 5), 6), 7)
565560 }
566- let cJ = cK._1
567- let cH = cK._2
568- let cS = n((cJ - value(cH)))
569- if ((cw >= cS))
570- then $Tuple2(nil, toString(cJ))
571- else throw(("D calculation error, dDiff = " + toString(cS)))
561+ let cI = cJ._1
562+ let cG = cJ._2
563+ let cR = l((cI - value(cG)))
564+ if ((cv >= cR))
565+ then $Tuple2(nil, toString(cI))
566+ else throw(("D calculation error, dDiff = " + toString(cR)))
572567 }
573568 }
574569
575570
576571
577-@Callable(aI)
578-func calcPutXOnly (cT,cU,cV,cW,cX,cY,cZ,da) = {
579- let cu = toBigInt(2)
580- let cv = parseBigIntValue(cY)
581- let cw = parseBigIntValue(cZ)
582- let db = parseBigIntValue(cU)
583- let dc = parseBigIntValue(cV)
584- let cG = if ((cW == ""))
585- then parseBigIntValue({
586- let bN = invoke(this, "calcD", [cU, cV, cX, cY, da], nil)
587- if ($isInstanceOf(bN, "String"))
588- then bN
589- else throw(($getType(invoke(this, "calcD", [cU, cV, cX, cY, da], nil)) + " couldn't be cast to String"))
590- })
591- else parseBigIntValue(cW)
592- let cz = (parseBigIntValue(cX) * cv)
593- let dd = parseBigIntValue(cT)
594- let cA = (cz * cu)
595- let cB = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
596- func cC (cD,cE) = {
597- let de = cD
598- let df = de._1
599- let dg = de._2
600- let dh = ((db + dd) - df)
601- let di = (dc - ((df * dc) / db))
602- let cI = (((cG * cG) * cG) / (((dh * di) * cu) * cu))
603- let dj = (df + ((((((-(cG) * cA) / cv) + cG) + ((cA * (dh + di)) / cv)) - cI) / ((((-(cA) * (toBigInt(-1) - (dc / db))) / cv) + (cI / dh)) + ((dc * cI) / (db * di)))))
604- $Tuple2(dj, df)
605- }
606-
607- let dk = {
608- let cL = cB
609- let cM = size(cL)
610- let cN = $Tuple2(d, unit)
611- func cO (cP,cQ) = if ((cQ >= cM))
612- then cP
613- else cC(cP, cL[cQ])
614-
615- func cR (cP,cQ) = if ((cQ >= cM))
616- then cP
617- else throw("List size exceeds 10")
618-
619- cR(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
620- }
621- let dj = dk._1
622- let dg = dk._2
623- let dl = n((dj - value(dg)))
624- if ((cw >= dl))
625- then $Tuple2(nil, $Tuple2(toInt(dj), toInt(fraction(dj, dc, db))))
626- else throw(((((("X calculation error, xDiff = " + toString(dl)) + ", xNext = ") + toString(dj)) + ", xPrev = ") + toString(value(dg))))
627- }
628-
629-
630-
631-@Callable(aI)
632-func setManager (dm) = {
633- let dn = aR(aI)
634- if ((dn == dn))
572+@Callable(aH)
573+func setManager (cS) = {
574+ let cT = aQ(aH)
575+ if ((cT == cT))
635576 then {
636- let do = fromBase58String(dm)
637- if ((do == do))
638- then [StringEntry(aM(), dm)]
577+ let cU = fromBase58String(cS)
578+ if ((cU == cU))
579+ then [StringEntry(aL(), cS)]
639580 else throw("Strict value is not equal to itself.")
640581 }
641582 else throw("Strict value is not equal to itself.")
643584
644585
645586
646-@Callable(aI)
587+@Callable(aH)
647588 func confirmManager () = {
648- let dp = aQ()
649- let dq = if (isDefined(dp))
589+ let cV = aP()
590+ let cW = if (isDefined(cV))
650591 then true
651592 else throw("No pending manager")
652- if ((dq == dq))
593+ if ((cW == cW))
653594 then {
654- let dr = if ((aI.callerPublicKey == value(dp)))
595+ let cX = if ((aH.callerPublicKey == value(cV)))
655596 then true
656597 else throw("You are not pending manager")
657- if ((dr == dr))
658- then [StringEntry(aL(), toBase58String(value(dp))), DeleteEntry(aM())]
598+ if ((cX == cX))
599+ then [StringEntry(aK(), toBase58String(value(cV))), DeleteEntry(aL())]
659600 else throw("Strict value is not equal to itself.")
660601 }
661602 else throw("Strict value is not equal to itself.")
662603 }
663604
664605
665-@Verifier(ds)
666-func dt () = {
667- let du = {
668- let aO = aN()
669- if ($isInstanceOf(aO, "ByteVector"))
606+@Verifier(cY)
607+func cZ () = {
608+ let da = {
609+ let aN = aM()
610+ if ($isInstanceOf(aN, "ByteVector"))
670611 then {
671- let aT = aO
672- aT
612+ let aS = aN
613+ aS
673614 }
674- else if ($isInstanceOf(aO, "Unit"))
675- then ds.senderPublicKey
615+ else if ($isInstanceOf(aN, "Unit"))
616+ then cY.senderPublicKey
676617 else throw("Match error")
677618 }
678- sigVerify(ds.bodyBytes, ds.proofs[0], du)
619+ sigVerify(cY.bodyBytes, cY.proofs[0], da)
679620 }
680621
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000
77
88 let c = 100000000
99
1010 let d = toBigInt(0)
1111
1212 let e = 0
1313
1414 let f = 1
1515
1616 func g (h) = valueOrElse(getInteger(this, h), 0)
1717
1818
1919 func i (h) = valueOrErrorMessage(getInteger(this, h), (("mandatory this." + h) + " is not defined"))
2020
2121
2222 func j (h) = valueOrElse(getString(this, h), "")
2323
2424
2525 func k (h) = valueOrErrorMessage(getString(this, h), (("mandatory this." + h) + " is not defined"))
2626
2727
28-func l (m) = if ((0 > m))
28+func l (m) = if ((d > m))
2929 then -(m)
3030 else m
3131
3232
33-func n (m) = if ((d > m))
34- then -(m)
35- else m
33+let n = "%s__maxDepth"
34+
35+let o = 30
36+
37+let p = valueOrElse(getInteger(this, n), o)
38+
39+func q () = "%s%s__config__factoryAddress"
3640
3741
38-let o = "%s__maxDepth"
42+let r = k(q())
3943
40-let p = 30
44+let s = addressFromStringValue(r)
4145
42-let q = valueOrElse(getInteger(this, o), p)
43-
44-func r () = "%s%s__config__factoryAddress"
46+func t () = "%s%s__config__emissionAddress"
4547
4648
47-let s = k(r())
48-
49-let t = addressFromStringValue(s)
50-
51-func u () = "%s%s__config__emissionAddress"
49+func u (v) = makeString(["%s%s%s", "mapping", "num2user", toString(v)], a)
5250
5351
54-func v (w) = makeString(["%s%s%s", "mapping", "num2user", toString(w)], a)
52+let w = makeString(["%s%s", "referral", "programName"], a)
53+
54+let x = "wxlock"
55+
56+let y = valueOrElse(getString(this, w), x)
57+
58+let z = makeString(["%s%s", "referral", "minGWxAmount"], a)
59+
60+let A = (500 * c)
61+
62+let B = valueOrElse(getInteger(this, z), A)
63+
64+let C = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
65+
66+let D = 50
67+
68+let E = valueOrElse(getInteger(this, C), D)
69+
70+let F = makeString(["%s%s", "referral", "referralRewardPermille"], a)
71+
72+let G = 50
73+
74+let H = valueOrElse(getInteger(this, F), G)
75+
76+func I (J) = makeString(["%s%s%s", "referrer", y, J], a)
5577
5678
57-let x = makeString(["%s%s", "referral", "programName"], a)
58-
59-let y = "wxlock"
60-
61-let z = valueOrElse(getString(this, x), y)
62-
63-let A = makeString(["%s%s", "referral", "minGWxAmount"], a)
64-
65-let B = (500 * c)
66-
67-let C = valueOrElse(getInteger(this, A), B)
68-
69-let D = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
70-
71-let E = 50
72-
73-let F = valueOrElse(getInteger(this, D), E)
74-
75-let G = makeString(["%s%s", "referral", "referralRewardPermille"], a)
76-
77-let H = 50
78-
79-let I = valueOrElse(getInteger(this, G), H)
80-
81-func J (K) = makeString(["%s%s%s", "referrer", z, K], a)
79+func K (L,M) = makeString(["%s%s%s%s", "unclaimedReferral", L, M], a)
8280
8381
84-func L (M,N) = makeString(["%s%s%s%s", "unclaimedReferral", M, N], a)
82+let N = k(t())
83+
84+let O = addressFromStringValue(N)
85+
86+let P = 1
87+
88+let Q = 2
89+
90+let R = 3
91+
92+let S = 4
93+
94+func T () = "%s__config"
8595
8696
87-let O = k(u())
88-
89-let P = addressFromStringValue(O)
90-
91-let Q = 1
92-
93-let R = 2
94-
95-let S = 3
96-
97-let T = 4
98-
99-func U () = "%s__config"
97+func U () = split(k(T()), a)
10098
10199
102-func V () = split(k(U()), a)
100+func V (W,X,Y,p) = makeString(["%s%s%s%d", W, X, Y, toString(p)], a)
103101
104102
105-func W (X,Y,Z,q) = makeString(["%s%s%s%d", X, Y, Z, toString(q)], a)
106-
107-
108-func aa () = {
109- let ab = V()
110- valueOrErrorMessage(addressFromString(ab[S]), "boosting contract address is not defined")
103+func Z () = {
104+ let aa = U()
105+ valueOrErrorMessage(addressFromString(aa[R]), "boosting contract address is not defined")
111106 }
112107
113108
114-func ac () = "%s%s__gwxRewardEmissionPart__startHeight"
109+func ab () = "%s%s__gwxRewardEmissionPart__startHeight"
115110
116111
117-func ad () = "%s__nextUserNum"
112+func ac () = "%s__nextUserNum"
118113
119114
120-func ae () = "%s%s__ratePerBlock__current"
115+func ad () = "%s%s__ratePerBlock__current"
121116
122117
123-func af () = "%s%s__poolWeight__GWXvirtualPOOL"
118+func ae () = "%s%s__poolWeight__GWXvirtualPOOL"
124119
125120
126-func ag () = "%s__nextProcessedUser"
121+func af () = "%s__nextProcessedUser"
127122
128123
129-func ah () = "%s__latestPeriod"
124+func ag () = "%s__latestPeriod"
130125
131126
132-func ai () = "%s__nextPeriod"
127+func ah () = "%s__nextPeriod"
133128
134129
135-func aj () = "%s__processingStage"
130+func ai () = "%s__processingStage"
136131
137132
138-func ak () = "%s__nextProcessedPeriod"
133+func aj () = "%s__nextProcessedPeriod"
139134
140135
141-func al (am) = makeString(["%s%d", "userUnclaimed", toString(am)], a)
136+func ak (al) = makeString(["%s%d", "userUnclaimed", toString(al)], a)
142137
143138
144-func an (am) = makeString(["%s%d__nextClaimedPeriod", toString(am)], a)
139+func am (al) = makeString(["%s%d__nextClaimedPeriod", toString(al)], a)
145140
146141
147-func ao (am) = makeString(["%s%d__lastProcessedPeriod", toString(am)], a)
142+func an (al) = makeString(["%s%d__lastProcessedPeriod", toString(al)], a)
148143
149144
150-func ap (aq) = makeString(["%s%d__startHeightForPeriod", toString(aq)], a)
145+func ao (ap) = makeString(["%s%d__startHeightForPeriod", toString(ap)], a)
151146
152147
153-func ar (aq) = makeString(["%s%d__auxEmissionReward", toString(aq)], a)
148+func aq (ap) = makeString(["%s%d__auxEmissionReward", toString(ap)], a)
154149
155150
156-func as (aq) = makeString(["%s%d__totalAmountForPeriod", toString(aq)], a)
151+func ar (ap) = makeString(["%s%d__totalAmountForPeriod", toString(ap)], a)
157152
158153
159-func at () = "%s__lastPayoutInfo"
154+func as () = "%s__lastPayoutInfo"
160155
161156
162-func au (aq,av,aw) = makeString(["%d%d%d", toString(aq), toString(av), toString(aw)], a)
157+func at (ap,au,av) = makeString(["%d%d%d", toString(ap), toString(au), toString(av)], a)
163158
164159
165-func ax (aq) = makeString(["%s%s%d__payouts__history", toString(aq)], a)
160+func aw (ap) = makeString(["%s%s%d__payouts__history", toString(ap)], a)
166161
167162
168-func ay (aq) = makeString(["%s%d__totalWeightForPeriod", toString(aq)], a)
163+func ax (ap) = makeString(["%s%d__totalWeightForPeriod", toString(ap)], a)
169164
170165
171-func az (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "k", toString(aq)], a)
166+func ay (ap,al) = makeString(["%s%d%s%d__paramByPeriod", toString(al), "k", toString(ap)], a)
172167
173168
174-func aA (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "b", toString(aq)], a)
169+func az (ap,al) = makeString(["%s%d%s%d__paramByPeriod", toString(al), "b", toString(ap)], a)
175170
176171
177-func aB (aq,am) = makeString(["%s%d%s%d__paramByPeriod", toString(am), "weight", toString(aq)], a)
172+func aA (ap,al) = makeString(["%s%d%s%d__paramByPeriod", toString(al), "weight", toString(ap)], a)
178173
179174
180-func aC () = makeString(["%s%s", "config", "referralsContractAddress"], a)
175+func aB () = makeString(["%s%s", "config", "referralsContractAddress"], a)
181176
182177
183-let aD = addressFromStringValue(k(aC()))
178+let aC = addressFromStringValue(k(aB()))
184179
185-func aE (aF,aG,aH,aI) = {
186- let aJ = makeString(["%s%s%s%s__history", aF, aG, toBase58String(aI.transactionId)], a)
187- let aK = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aH)], a)
188- StringEntry(aJ, aK)
180+func aD (aE,aF,aG,aH) = {
181+ let aI = makeString(["%s%s%s%s__history", aE, aF, toBase58String(aH.transactionId)], a)
182+ let aJ = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aG)], a)
183+ StringEntry(aI, aJ)
189184 }
190185
191186
192-func aL () = "%s__managerPublicKey"
187+func aK () = "%s__managerPublicKey"
193188
194189
195-func aM () = "%s__pendingManagerPublicKey"
190+func aL () = "%s__pendingManagerPublicKey"
196191
197192
198-func aN () = {
199- let aO = getString(aL())
200- if ($isInstanceOf(aO, "String"))
193+func aM () = {
194+ let aN = getString(aK())
195+ if ($isInstanceOf(aN, "String"))
201196 then {
202- let aP = aO
203- fromBase58String(aP)
197+ let aO = aN
198+ fromBase58String(aO)
204199 }
205- else if ($isInstanceOf(aO, "Unit"))
200+ else if ($isInstanceOf(aN, "Unit"))
206201 then unit
207202 else throw("Match error")
208203 }
209204
210205
211-func aQ () = {
212- let aO = getString(aM())
213- if ($isInstanceOf(aO, "String"))
206+func aP () = {
207+ let aN = getString(aL())
208+ if ($isInstanceOf(aN, "String"))
214209 then {
215- let aP = aO
216- fromBase58String(aP)
210+ let aO = aN
211+ fromBase58String(aO)
217212 }
218- else if ($isInstanceOf(aO, "Unit"))
213+ else if ($isInstanceOf(aN, "Unit"))
219214 then unit
220215 else throw("Match error")
221216 }
222217
223218
224-func aR (aI) = {
225- let aS = throw("Permission denied")
226- let aO = aN()
227- if ($isInstanceOf(aO, "ByteVector"))
219+func aQ (aH) = {
220+ let aR = throw("Permission denied")
221+ let aN = aM()
222+ if ($isInstanceOf(aN, "ByteVector"))
228223 then {
229- let aT = aO
230- if ((aI.callerPublicKey == aT))
224+ let aS = aN
225+ if ((aH.callerPublicKey == aS))
231226 then true
232- else aS
227+ else aR
233228 }
234- else if ($isInstanceOf(aO, "Unit"))
235- then if ((aI.caller == this))
229+ else if ($isInstanceOf(aN, "Unit"))
230+ then if ((aH.caller == this))
236231 then true
237- else aS
232+ else aR
238233 else throw("Match error")
239234 }
240235
241236
242-func aU (aV,aW,aq,am) = {
243- let aX = ao(am)
244- let aY = az(aq, am)
245- let aZ = getInteger(aV, aY)
246- let ba = aB(aq, am)
247- if (isDefined(aZ))
237+func aT (aU,aV,ap,al) = {
238+ let aW = an(al)
239+ let aX = ay(ap, al)
240+ let aY = getInteger(aU, aX)
241+ let aZ = aA(ap, al)
242+ if (isDefined(aY))
248243 then {
249- let bb = value(aZ)
250- let bc = value(getInteger(aV, aA(aq, am)))
251- let bd = ((bb * aW) + bc)
252- if ((bd > 0))
253- then $Tuple2((bd / b), [IntegerEntry(aX, aq), IntegerEntry(ba, bd)])
244+ let ba = value(aY)
245+ let bb = value(getInteger(aU, az(ap, al)))
246+ let bc = ((ba * aV) + bb)
247+ if ((bc > 0))
248+ then $Tuple2((bc / b), [IntegerEntry(aW, ap), IntegerEntry(aZ, bc)])
254249 else $Tuple2(0, nil)
255250 }
256251 else {
257- let be = getInteger(this, aX)
258- if (if (isDefined(be))
259- then (aq >= value(be))
252+ let bd = getInteger(this, aW)
253+ if (if (isDefined(bd))
254+ then (ap >= value(bd))
260255 else false)
261256 then {
262- let bf = value(be)
263- let bb = value(getInteger(aV, az(bf, am)))
264- let bc = value(getInteger(aV, aA(bf, am)))
265- let bd = ((bb * aW) + bc)
266- if ((bd > 0))
267- then $Tuple2((bd / b), [IntegerEntry(ba, bd)])
257+ let be = value(bd)
258+ let ba = value(getInteger(aU, ay(be, al)))
259+ let bb = value(getInteger(aU, az(be, al)))
260+ let bc = ((ba * aV) + bb)
261+ if ((bc > 0))
262+ then $Tuple2((bc / b), [IntegerEntry(aZ, bc)])
268263 else $Tuple2(0, nil)
269264 }
270265 else $Tuple2(0, nil)
271266 }
272267 }
273268
274269
275-func bg (aV,aW,aq,am) = {
276- let ba = aB(aq, am)
277- let bh = getInteger(ba)
278- let aO = bh
279- if ($isInstanceOf(aO, "Unit"))
270+func bf (aU,aV,ap,al) = {
271+ let aZ = aA(ap, al)
272+ let bg = getInteger(aZ)
273+ let aN = bg
274+ if ($isInstanceOf(aN, "Unit"))
280275 then 0
281- else if ($isInstanceOf(aO, "Int"))
276+ else if ($isInstanceOf(aN, "Int"))
282277 then {
283- let bd = aO
284- (bd / b)
278+ let bc = aN
279+ (bc / b)
285280 }
286281 else throw("Match error")
287282 }
288283
289284
290-func bi (Z,bj) = {
291- let h = makeString(["%s%s%s", "mapping", "user2num", bj], a)
292- parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(Z)), h), ((("User address " + bj) + " is not found in boosting contract data, key=") + h)))
285+func bh (Y,bi) = {
286+ let h = makeString(["%s%s%s", "mapping", "user2num", bi], a)
287+ parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(Y)), h), ((("User address " + bi) + " is not found in boosting contract data, key=") + h)))
293288 }
294289
295290
296-func bk () = g(ai())
291+func bj () = g(ah())
297292
298293
299-func bl (bj) = {
300- let ab = V()
301- let bm = bi(ab[S], bj)
302- let bn = getInteger(al(bm))
303- let aO = bn
304- if ($isInstanceOf(aO, "Unit"))
294+func bk (bi) = {
295+ let aa = U()
296+ let bl = bh(aa[R], bi)
297+ let bm = getInteger(ak(bl))
298+ let aN = bm
299+ if ($isInstanceOf(aN, "Unit"))
305300 then $Tuple2(0, nil)
306- else if ($isInstanceOf(aO, "Int"))
301+ else if ($isInstanceOf(aN, "Int"))
307302 then {
308- let bo = aO
309- $Tuple2(bo, [IntegerEntry(al(bm), 0)])
303+ let bn = aN
304+ $Tuple2(bn, [IntegerEntry(ak(bl), 0)])
310305 }
311306 else throw("Match error")
312307 }
313308
314309
315-@Callable(aI)
316-func updateReferralActivity (bj,bp) = {
317- let bq = getString(aD, J(bj))
318- let br = if ((bq == unit))
310+@Callable(aH)
311+func updateReferralActivity (bi,bo) = {
312+ let bp = getString(aC, I(bi))
313+ let bq = if ((bp == unit))
319314 then unit
320- else invoke(aD, "updateReferralActivity", [z, bj, (bp >= C)], nil)
321- if ((br == br))
315+ else invoke(aC, "updateReferralActivity", [y, bi, (bo >= B)], nil)
316+ if ((bq == bq))
322317 then $Tuple2(nil, unit)
323318 else throw("Strict value is not equal to itself.")
324319 }
325320
326321
327322
328-@Callable(aI)
323+@Callable(aH)
329324 func finalizeHelper () = {
330- let bs = valueOrElse(getInteger(aj()), e)
331- let bt = g(ak())
325+ let br = valueOrElse(getInteger(ai()), e)
326+ let bs = g(aj())
327+ let bt = g(af())
332328 let bu = g(ag())
333- let bv = g(ah())
334- let bw = valueOrElse(getInteger(aa(), ad()), 0)
335- let bx = ay(bt)
336- let by = g(ay(bt))
337- let aW = g(ap(bt))
338- if ((bt > bv))
329+ let bv = valueOrElse(getInteger(Z(), ac()), 0)
330+ let bw = ax(bs)
331+ let bx = g(ax(bs))
332+ let aV = g(ao(bs))
333+ if ((bs > bu))
339334 then $Tuple2(nil, false)
340- else if ((bs == e))
335+ else if ((br == e))
341336 then {
342- let bz = aU(aa(), aW, bt, bu)
343- let bA = bz._1
344- let bB = bz._2
345- let bC = (by + bA)
346- let bD = if (((bw - 1) > bu))
347- then [IntegerEntry(ag(), (bu + 1))]
348- else [IntegerEntry(aj(), f), IntegerEntry(ag(), 0)]
349- $Tuple2((([IntegerEntry(bx, bC)] ++ bD) ++ bB), true)
337+ let by = aT(Z(), aV, bs, bt)
338+ let bz = by._1
339+ let bA = by._2
340+ let bB = (bx + bz)
341+ let bC = if (((bv - 1) > bt))
342+ then [IntegerEntry(af(), (bt + 1))]
343+ else [IntegerEntry(ai(), f), IntegerEntry(af(), 0)]
344+ $Tuple2((([IntegerEntry(bw, bB)] ++ bC) ++ bA), true)
350345 }
351- else if ((bs == f))
346+ else if ((br == f))
352347 then {
353- let bA = bg(aa(), aW, bt, bu)
354- let bE = fraction(g(as(bt)), bA, by)
355- let bF = fraction(g(ar(bt)), bA, by)
356- let bG = (bF + bE)
357- let bn = getInteger(al(bu))
358- let bj = getStringValue(aa(), v(bu))
359- let bq = getString(aD, J(bj))
360- let br = if ((bq == unit))
348+ let bz = bf(Z(), aV, bs, bt)
349+ let bD = fraction(g(ar(bs)), bz, bx)
350+ let bE = fraction(g(aq(bs)), bz, bx)
351+ let bF = (bE + bD)
352+ let bm = getInteger(ak(bt))
353+ let bi = getStringValue(Z(), u(bt))
354+ let bp = getString(aC, I(bi))
355+ let bq = if ((bp == unit))
361356 then unit
362- else invoke(aD, "updateReferralActivity", [z, bj, (bA >= C)], nil)
363- if ((br == br))
357+ else invoke(aC, "updateReferralActivity", [y, bi, (bz >= B)], nil)
358+ if ((bq == bq))
364359 then {
365- let bH = if (if ((bq == unit))
360+ let bG = if (if ((bp == unit))
366361 then true
367- else (C > bA))
362+ else (B > bz))
368363 then unit
369364 else {
370- let bI = fraction(bG, F, b)
371- let bJ = fraction(bG, I, b)
372- invoke(aD, "incUnclaimed", [z, bj, bI, bJ], nil)
365+ let bH = fraction(bF, E, b)
366+ let bI = fraction(bF, H, b)
367+ invoke(aC, "incUnclaimed", [y, bi, bH, bI], nil)
373368 }
374- if ((bH == bH))
369+ if ((bG == bG))
375370 then {
376- let bK = [IntegerEntry(al(bu), (valueOrElse(bn, 0) + bG))]
377- let bD = if (((bw - 1) > bu))
378- then [IntegerEntry(ag(), (bu + 1))]
379- else [IntegerEntry(ak(), (bt + 1)), IntegerEntry(ag(), 0), DeleteEntry(aj())]
380- $Tuple2((bK ++ bD), true)
371+ let bJ = [IntegerEntry(ak(bt), (valueOrElse(bm, 0) + bF))]
372+ let bC = if (((bv - 1) > bt))
373+ then [IntegerEntry(af(), (bt + 1))]
374+ else [IntegerEntry(aj(), (bs + 1)), IntegerEntry(af(), 0), DeleteEntry(ai())]
375+ $Tuple2((bJ ++ bC), true)
381376 }
382377 else throw("Strict value is not equal to itself.")
383378 }
384379 else throw("Strict value is not equal to itself.")
385380 }
386381 else throw("invalid processing stage")
387382 }
388383
389384
390385
391-@Callable(aI)
392-func finalizeWrapper (bL) = {
393- let bM = {
394- let bN = invoke(this, "finalizeHelper", nil, nil)
395- if ($isInstanceOf(bN, "Boolean"))
396- then bN
386+@Callable(aH)
387+func finalizeWrapper (bK) = {
388+ let bL = {
389+ let bM = invoke(this, "finalizeHelper", nil, nil)
390+ if ($isInstanceOf(bM, "Boolean"))
391+ then bM
397392 else throw(($getType(invoke(this, "finalizeHelper", nil, nil)) + " couldn't be cast to Boolean"))
398393 }
399- if ((bM == bM))
400- then if (!(bM))
401- then if ((bL == q))
394+ if ((bL == bL))
395+ then if (!(bL))
396+ then if ((bK == p))
402397 then throw("Nothing to process")
403398 else $Tuple2(nil, unit)
404- else if ((bL > 0))
405- then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bL - 1)], nil))
399+ else if ((bK > 0))
400+ then $Tuple2(nil, invoke(this, "finalizeWrapper", [(bK - 1)], nil))
406401 else $Tuple2(nil, unit)
407402 else throw("Strict value is not equal to itself.")
408403 }
409404
410405
411406
412-@Callable(aI)
413-func processPendingPeriodsAndUsers () = $Tuple2(nil, invoke(this, "finalizeWrapper", [q], nil))
407+@Callable(aH)
408+func processPendingPeriodsAndUsers () = $Tuple2(nil, invoke(this, "finalizeWrapper", [p], nil))
414409
415410
416411
417-@Callable(aI)
412+@Callable(aH)
418413 func deposit () = {
419- let ab = V()
420- if ((aI.caller != Address(fromBase58String(ab[R]))))
414+ let aa = U()
415+ if ((aH.caller != Address(fromBase58String(aa[Q]))))
421416 then throw("Wrong caller address")
422417 else {
423- let bO = value(value(aI.payments[0]).assetId)
424- if ((bO != fromBase58String(ab[Q])))
418+ let bN = value(value(aH.payments[0]).assetId)
419+ if ((bN != fromBase58String(aa[P])))
425420 then throw("Wrong payment asset")
426421 else {
427- let aq = bk()
428- let bP = (height - i(ac()))
429- let bQ = valueOrErrorMessage(getInteger(P, ae()), (("mandatory emission_contract." + ae()) + " is not defined"))
430- let bR = valueOrErrorMessage(getInteger(t, af()), (("mandatory factory_contract." + af()) + " is not defined"))
431- let bS = fraction((bP * bR), bQ, c)
432- let bT = invoke(P, "emit", [bS], nil)
433- if ((bT == bT))
422+ let ap = bj()
423+ let bO = (height - i(ab()))
424+ let bP = valueOrErrorMessage(getInteger(O, ad()), (("mandatory emission_contract." + ad()) + " is not defined"))
425+ let bQ = valueOrErrorMessage(getInteger(s, ae()), (("mandatory factory_contract." + ae()) + " is not defined"))
426+ let bR = fraction((bO * bQ), bP, c)
427+ let bS = invoke(O, "emit", [bR], nil)
428+ if ((bS == bS))
434429 then {
435- let bU = value(aI.payments[0]).amount
436- let bV = au(aq, bU, bS)
437-[IntegerEntry(ah(), aq), IntegerEntry(ap(aq), height), IntegerEntry(ar(aq), bS), IntegerEntry(ac(), height), IntegerEntry(as(aq), bU), IntegerEntry(ai(), (aq + 1)), StringEntry(at(), bV), StringEntry(ax(aq), bV)]
430+ let bT = value(aH.payments[0]).amount
431+ let bU = at(ap, bT, bR)
432+[IntegerEntry(ag(), ap), IntegerEntry(ao(ap), height), IntegerEntry(aq(ap), bR), IntegerEntry(ab(), height), IntegerEntry(ar(ap), bT), IntegerEntry(ah(), (ap + 1)), StringEntry(as(), bU), StringEntry(aw(ap), bU)]
438433 }
439434 else throw("Strict value is not equal to itself.")
440435 }
441436 }
442437 }
443438
444439
445440
446-@Callable(aI)
441+@Callable(aH)
447442 func claimReward () = {
448- let ab = V()
449- let bW = toString(aI.caller)
450- let bX = bl(bW)
451- let aH = bX._1
452- let bY = bX._2
453- let bZ = if ((aH > 0))
443+ let aa = U()
444+ let bV = toString(aH.caller)
445+ let bW = bk(bV)
446+ let aG = bW._1
447+ let bX = bW._2
448+ let bY = if ((aG > 0))
454449 then true
455450 else throw("Nothing to claim")
456- if ((bZ == bZ))
451+ if ((bY == bY))
457452 then {
458- let ca = 0
459- let cb = {
460- let bN = invoke(aD, "claim", [z], nil)
461- if ($isInstanceOf(bN, "Int"))
462- then bN
463- else throw(($getType(invoke(aD, "claim", [z], nil)) + " couldn't be cast to Int"))
453+ let bZ = 0
454+ let ca = {
455+ let bM = invoke(aC, "claim", [y], nil)
456+ if ($isInstanceOf(bM, "Int"))
457+ then bM
458+ else throw(($getType(invoke(aC, "claim", [y], nil)) + " couldn't be cast to Int"))
464459 }
465- let cc = (aH + cb)
466- $Tuple2(([ScriptTransfer(aI.caller, cc, fromBase58String(ab[Q])), aE("claim", bW, aH, aI)] ++ bY), [cc, ca])
460+ let cb = (aG + ca)
461+ $Tuple2(([ScriptTransfer(aH.caller, cb, fromBase58String(aa[P])), aD("claim", bV, aG, aH)] ++ bX), [cb, bZ])
467462 }
468463 else throw("Strict value is not equal to itself.")
469464 }
470465
471466
472467
473-@Callable(aI)
474-func claimRewardREADONLY (bW) = {
475- let cd = bl(bW)
476- let aH = cd._1
477- let bY = cd._2
478- let ce = valueOrElse(getInteger(aD, L(z, bW)), 0)
479- let cc = (aH + ce)
480- $Tuple2(nil, cc)
468+@Callable(aH)
469+func claimRewardREADONLY (bV) = {
470+ let cc = bk(bV)
471+ let aG = cc._1
472+ let bX = cc._2
473+ let cd = valueOrElse(getInteger(aC, K(y, bV)), 0)
474+ let cb = (aG + cd)
475+ $Tuple2(nil, cb)
481476 }
482477
483478
484479
485-@Callable(aI)
486-func latestFinalizedPeriodREADONLY (bW) = $Tuple2(nil, valueOrElse(getInteger(this, ah()), -1))
480+@Callable(aH)
481+func latestFinalizedPeriodREADONLY (bV) = $Tuple2(nil, valueOrElse(getInteger(this, ag()), -1))
487482
488483
489484
490-@Callable(aI)
491-func latestFinalizedPeriodInfoREADONLY (bW) = $Tuple2(nil, j(at()))
485+@Callable(aH)
486+func latestFinalizedPeriodInfoREADONLY (bV) = $Tuple2(nil, j(as()))
492487
493488
494489
495-@Callable(aI)
496-func calcGwxParamsREADONLY (cf,cg,ch) = {
497- let ci = (cg + ch)
498- let cj = -(fraction(cf, b, ch))
499- let ck = (fraction(cf, b, ch) * ci)
500- $Tuple2(nil, [cj, ck, bk()])
490+@Callable(aH)
491+func calcGwxParamsREADONLY (ce,cf,cg) = {
492+ let ch = (cf + cg)
493+ let ci = -(fraction(ce, b, cg))
494+ let cj = (fraction(ce, b, cg) * ch)
495+ $Tuple2(nil, [ci, cj, bj()])
501496 }
502497
503498
504499
505-@Callable(aI)
506-func calcGwxAmountStartREADONLY (cl,cm,cn) = {
507- let co = fraction(cm, c, cn)
508- let bp = fraction(cl, co, c)
509- $Tuple2(nil, [bp])
500+@Callable(aH)
501+func calcGwxAmountStartREADONLY (ck,cl,cm) = {
502+ let cn = fraction(cl, c, cm)
503+ let bo = fraction(ck, cn, c)
504+ $Tuple2(nil, [bo])
510505 }
511506
512507
513508
514-@Callable(aI)
515-func onEmissionForGwxStart () = if ((aI.caller != t))
509+@Callable(aH)
510+func onEmissionForGwxStart () = if ((aH.caller != s))
516511 then throw("permissions denied")
517- else [IntegerEntry(ac(), height)]
512+ else [IntegerEntry(ab(), height)]
518513
519514
520515
521-@Callable(aI)
522-func latestPeriodEmissionRewardsREADONLY (bW) = {
523- let aq = bk()
524- $Tuple2(nil, [g(ar(aq))])
516+@Callable(aH)
517+func latestPeriodEmissionRewardsREADONLY (bV) = {
518+ let ap = bj()
519+ $Tuple2(nil, [g(aq(ap))])
525520 }
526521
527522
528523
529-@Callable(aI)
530-func calcD (cp,cq,cr,cs,ct) = {
531- let cu = toBigInt(2)
524+@Callable(aH)
525+func calcD (co,cp,cq,cr,cs) = {
526+ let ct = toBigInt(2)
527+ let cu = parseBigIntValue(cr)
532528 let cv = parseBigIntValue(cs)
533- let cw = parseBigIntValue(ct)
529+ let cw = parseBigIntValue(co)
534530 let cx = parseBigIntValue(cp)
535- let cy = parseBigIntValue(cq)
536- let cz = (parseBigIntValue(cr) * cv)
537- let aP = (cx + cy)
538- if ((aP == d))
531+ let cy = (parseBigIntValue(cq) * cu)
532+ let aO = (cw + cx)
533+ if ((aO == d))
539534 then $Tuple2(nil, toString(d))
540535 else {
541- let cA = (cz * cu)
542- let cB = [1, 2, 3, 4, 5, 6, 7]
543- func cC (cD,cE) = {
544- let cF = cD
545- let cG = cF._1
546- let cH = cF._2
547- let cI = (((cG * cG) * cG) / (((cx * cy) * cu) * cu))
548- let cJ = (((((cA * aP) / cv) + (cI * cu)) * cG) / ((((cA - cv) * cG) / cv) + ((cu + toBigInt(1)) * cI)))
549- $Tuple2(cJ, cG)
536+ let cz = (cy * ct)
537+ let cA = [1, 2, 3, 4, 5, 6, 7]
538+ func cB (cC,cD) = {
539+ let cE = cC
540+ let cF = cE._1
541+ let cG = cE._2
542+ let cH = (((cF * cF) * cF) / (((cw * cx) * ct) * ct))
543+ let cI = (((((cz * aO) / cu) + (cH * ct)) * cF) / ((((cz - cu) * cF) / cu) + ((ct + toBigInt(1)) * cH)))
544+ $Tuple2(cI, cF)
550545 }
551546
552- let cK = {
553- let cL = cB
554- let cM = size(cL)
555- let cN = $Tuple2(aP, unit)
556- func cO (cP,cQ) = if ((cQ >= cM))
557- then cP
558- else cC(cP, cL[cQ])
547+ let cJ = {
548+ let cK = cA
549+ let cL = size(cK)
550+ let cM = $Tuple2(aO, unit)
551+ func cN (cO,cP) = if ((cP >= cL))
552+ then cO
553+ else cB(cO, cK[cP])
559554
560- func cR (cP,cQ) = if ((cQ >= cM))
561- then cP
555+ func cQ (cO,cP) = if ((cP >= cL))
556+ then cO
562557 else throw("List size exceeds 7")
563558
564- cR(cO(cO(cO(cO(cO(cO(cO(cN, 0), 1), 2), 3), 4), 5), 6), 7)
559+ cQ(cN(cN(cN(cN(cN(cN(cN(cM, 0), 1), 2), 3), 4), 5), 6), 7)
565560 }
566- let cJ = cK._1
567- let cH = cK._2
568- let cS = n((cJ - value(cH)))
569- if ((cw >= cS))
570- then $Tuple2(nil, toString(cJ))
571- else throw(("D calculation error, dDiff = " + toString(cS)))
561+ let cI = cJ._1
562+ let cG = cJ._2
563+ let cR = l((cI - value(cG)))
564+ if ((cv >= cR))
565+ then $Tuple2(nil, toString(cI))
566+ else throw(("D calculation error, dDiff = " + toString(cR)))
572567 }
573568 }
574569
575570
576571
577-@Callable(aI)
578-func calcPutXOnly (cT,cU,cV,cW,cX,cY,cZ,da) = {
579- let cu = toBigInt(2)
580- let cv = parseBigIntValue(cY)
581- let cw = parseBigIntValue(cZ)
582- let db = parseBigIntValue(cU)
583- let dc = parseBigIntValue(cV)
584- let cG = if ((cW == ""))
585- then parseBigIntValue({
586- let bN = invoke(this, "calcD", [cU, cV, cX, cY, da], nil)
587- if ($isInstanceOf(bN, "String"))
588- then bN
589- else throw(($getType(invoke(this, "calcD", [cU, cV, cX, cY, da], nil)) + " couldn't be cast to String"))
590- })
591- else parseBigIntValue(cW)
592- let cz = (parseBigIntValue(cX) * cv)
593- let dd = parseBigIntValue(cT)
594- let cA = (cz * cu)
595- let cB = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
596- func cC (cD,cE) = {
597- let de = cD
598- let df = de._1
599- let dg = de._2
600- let dh = ((db + dd) - df)
601- let di = (dc - ((df * dc) / db))
602- let cI = (((cG * cG) * cG) / (((dh * di) * cu) * cu))
603- let dj = (df + ((((((-(cG) * cA) / cv) + cG) + ((cA * (dh + di)) / cv)) - cI) / ((((-(cA) * (toBigInt(-1) - (dc / db))) / cv) + (cI / dh)) + ((dc * cI) / (db * di)))))
604- $Tuple2(dj, df)
605- }
606-
607- let dk = {
608- let cL = cB
609- let cM = size(cL)
610- let cN = $Tuple2(d, unit)
611- func cO (cP,cQ) = if ((cQ >= cM))
612- then cP
613- else cC(cP, cL[cQ])
614-
615- func cR (cP,cQ) = if ((cQ >= cM))
616- then cP
617- else throw("List size exceeds 10")
618-
619- cR(cO(cO(cO(cO(cO(cO(cO(cO(cO(cO(cN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
620- }
621- let dj = dk._1
622- let dg = dk._2
623- let dl = n((dj - value(dg)))
624- if ((cw >= dl))
625- then $Tuple2(nil, $Tuple2(toInt(dj), toInt(fraction(dj, dc, db))))
626- else throw(((((("X calculation error, xDiff = " + toString(dl)) + ", xNext = ") + toString(dj)) + ", xPrev = ") + toString(value(dg))))
627- }
628-
629-
630-
631-@Callable(aI)
632-func setManager (dm) = {
633- let dn = aR(aI)
634- if ((dn == dn))
572+@Callable(aH)
573+func setManager (cS) = {
574+ let cT = aQ(aH)
575+ if ((cT == cT))
635576 then {
636- let do = fromBase58String(dm)
637- if ((do == do))
638- then [StringEntry(aM(), dm)]
577+ let cU = fromBase58String(cS)
578+ if ((cU == cU))
579+ then [StringEntry(aL(), cS)]
639580 else throw("Strict value is not equal to itself.")
640581 }
641582 else throw("Strict value is not equal to itself.")
642583 }
643584
644585
645586
646-@Callable(aI)
587+@Callable(aH)
647588 func confirmManager () = {
648- let dp = aQ()
649- let dq = if (isDefined(dp))
589+ let cV = aP()
590+ let cW = if (isDefined(cV))
650591 then true
651592 else throw("No pending manager")
652- if ((dq == dq))
593+ if ((cW == cW))
653594 then {
654- let dr = if ((aI.callerPublicKey == value(dp)))
595+ let cX = if ((aH.callerPublicKey == value(cV)))
655596 then true
656597 else throw("You are not pending manager")
657- if ((dr == dr))
658- then [StringEntry(aL(), toBase58String(value(dp))), DeleteEntry(aM())]
598+ if ((cX == cX))
599+ then [StringEntry(aK(), toBase58String(value(cV))), DeleteEntry(aL())]
659600 else throw("Strict value is not equal to itself.")
660601 }
661602 else throw("Strict value is not equal to itself.")
662603 }
663604
664605
665-@Verifier(ds)
666-func dt () = {
667- let du = {
668- let aO = aN()
669- if ($isInstanceOf(aO, "ByteVector"))
606+@Verifier(cY)
607+func cZ () = {
608+ let da = {
609+ let aN = aM()
610+ if ($isInstanceOf(aN, "ByteVector"))
670611 then {
671- let aT = aO
672- aT
612+ let aS = aN
613+ aS
673614 }
674- else if ($isInstanceOf(aO, "Unit"))
675- then ds.senderPublicKey
615+ else if ($isInstanceOf(aN, "Unit"))
616+ then cY.senderPublicKey
676617 else throw("Match error")
677618 }
678- sigVerify(ds.bodyBytes, ds.proofs[0], du)
619+ sigVerify(cY.bodyBytes, cY.proofs[0], da)
679620 }
680621

github/deemru/w8io/169f3d6 
208.47 ms