tx · 2asjbz1NJ2YEKZH81Bq1JK4C4SjXYzgGe58sH4XJmsuo

3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW:  -0.02900000 Waves

2022.10.13 13:16 [3335893] smart account 3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW > SELF 0.00000000 Waves

{ "type": 13, "id": "2asjbz1NJ2YEKZH81Bq1JK4C4SjXYzgGe58sH4XJmsuo", "fee": 2900000, "feeAssetId": null, "timestamp": 1665653097817, "version": 1, "sender": "3P8MoPnsaurofk1VyhsdAFkeQ6ijpJYXCpW", "senderPublicKey": "6tusy8LfPEh2eoAsxHwZZn6cw8DBMGTHAce3gqLXwQxC", "proofs": [ "EHt9xSzkPrSAdMLmXkx3z371RG4KpzKNf8GgKHrBywNYTU9F2Ay94Fe59jQfBB8Jbxjm54X8Va4YSaJxMifaFVF" ], "script": "base64:BgJcCAISAwoBCBIDCgEIEgQKAggIEgkKBwEREREYCBgSBwoFERERGAgSBwoFAQEBCAgSABIDCgEIEgQKAggBEgQKAggBEgQKAggBEgMKAQgSBgoECAEIARIDCgEIEgBbAAZTQ0FMRTgACAAFTVVMVDgAgMLXLwAHU0NBTEUxOAASAAZNVUxUMTgJALYCAQCAgJC7utat8A0AA1NFUAICX18ADlBPT0xXRUlHSFRNVUxUBQVNVUxUOAAKemVyb0JpZ0ludAkAtgIBAAAADmlkeFBvb2xBZGRyZXNzAAEADWlkeFBvb2xTdGF0dXMAAgAQaWR4UG9vbExQQXNzZXRJZAADAA1pZHhBbXRBc3NldElkAAQAD2lkeFByaWNlQXNzZXRJZAAFAA5pZHhBbXRBc3NldERjbQAGABBpZHhQcmljZUFzc2V0RGNtAAcADmlkeElBbXRBc3NldElkAAgAEGlkeElQcmljZUFzc2V0SWQACQANaWR4TFBBc3NldERjbQAKAQ9nZXRTdHJpbmdPckZhaWwBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEFA2tleQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJAKwCAgkArAICCQCsAgIJAKwCAgIKbWFuZGF0b3J5IAkApQgBBQdhZGRyZXNzAgEuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEMZ2V0SW50T3JaZXJvAgdhZGRyZXNzA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQdhZGRyZXNzBQNrZXkAAAEMZ2V0SW50T3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFB2FkZHJlc3MFA2tleQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBCWFzQW55TGlzdAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAp2YWxBbnlMeXN0BQckbWF0Y2gwBQp2YWxBbnlMeXN0CQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQVhc0ludAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIDSW50BAZ2YWxJbnQFByRtYXRjaDAFBnZhbEludAkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEIYXNTdHJpbmcBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACBlN0cmluZwQGdmFsU3RyBQckbWF0Y2gwBQZ2YWxTdHIJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBEWtleUZhY3RvcnlBZGRyZXNzAAIcJXMlc19fY29uZmlnX19mYWN0b3J5QWRkcmVzcwETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQAYSWR4RmFjdG9yeUNmZ1N0YWtpbmdEYXBwAAEAGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAAAgAUSWR4RmFjdG9yeUNmZ0lkb0RhcHAAAwAVSWR4RmFjdG9yeUNmZ1RlYW1EYXBwAAQAGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAABQAVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwAAYAGUlkeEZhY3RvcnlDZmdTbGlwcGFnZURhcHAABwAaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHAACAENa2V5RmFjdG9yeUNmZwACESVzX19mYWN0b3J5Q29uZmlnARprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZwEKbHBBc3NldFN0cgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQpscEFzc2V0U3RyCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQNTRVABEGtleUZhY3RvcnlMcExpc3QAAhAlc19fbHBUb2tlbnNMaXN0ASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEKbHBBc3NldFN0cgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQpscEFzc2V0U3RyCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQNTRVABFGtleUZhY3RvcnlQb29sV2VpZ2h0AQ9jb250cmFjdEFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUPY29udHJhY3RBZGRyZXNzBQNuaWwFA1NFUAEYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsAAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBD2dldFN0cmluZ09yRmFpbAEJARFrZXlGYWN0b3J5QWRkcmVzcwABCnJlYWRMcExpc3QACQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgkBGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbAAJARBrZXlGYWN0b3J5THBMaXN0AAIABQNTRVABFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsAQdmYWN0b3J5CQC1CQIJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQdmYWN0b3J5CQENa2V5RmFjdG9yeUNmZwAFA1NFUAEYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAQRmQ2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBGZDZmcFGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHABGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbAEEZkNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQRmQ2ZnBRlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEEZkNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQRmQ2ZnBRhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHABGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwBBGZDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUEZkNmZwUaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHABC2tleUJvb3N0Q2ZnAAIKJXNfX2NvbmZpZwEfa2V5Qm9vc3RpbmdMb2NrUGFyYW1Ub3RhbEFtb3VudAACHiVzJXNfX3N0YXRzX19hY3RpdmVUb3RhbExvY2tlZAEoa2V5Qm9vc3RpbmdTdGF0c0xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwACJSVzJXNfX3N0YXRzX19sb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MBGmtleUJvb3N0aW5nU3RhdHNMb2Nrc0NvdW50AAIXJXMlc19fc3RhdHNfX2xvY2tzQ291bnQBGmtleUJvb3N0aW5nU3RhdHNVc2Vyc0NvdW50AAIdJXMlc19fc3RhdHNfX2FjdGl2ZVVzZXJzQ291bnQBEmtleVVzZXIyTnVtTWFwcGluZwELdXNlckFkZHJlc3MJALkJAgkAzAgCAhklcyVzJXNfX21hcHBpbmdfX3VzZXIybnVtCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAESa2V5TnVtMlVzZXJNYXBwaW5nAQNudW0JALkJAgkAzAgCAhklcyVzJXNfX21hcHBpbmdfX251bTJ1c2VyCQDMCAIFA251bQUDbmlsBQNTRVABFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFB3VzZXJOdW0JAMwIAgIGYW1vdW50BQNuaWwFA1NFUAEWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawEHdXNlck51bQkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUHdXNlck51bQkAzAgCAgVzdGFydAUDbmlsBQNTRVABFGtleUxvY2tQYXJhbUR1cmF0aW9uAQd1c2VyTnVtCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQd1c2VyTnVtCQDMCAICCGR1cmF0aW9uBQNuaWwFA1NFUAENa2V5TG9ja1BhcmFtSwEHdXNlck51bQkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUHdXNlck51bQkAzAgCAgFrBQNuaWwFA1NFUAENa2V5TG9ja1BhcmFtQgEHdXNlck51bQkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUHdXNlck51bQkAzAgCAgFiBQNuaWwFA1NFUAEVa2V5TG9ja1BhcmFtQnlQZXJpb2RLAgd1c2VyTnVtBnBlcmlvZAkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIFB3VzZXJOdW0JAMwIAgIBawkAzAgCBQZwZXJpb2QFA25pbAUDU0VQARVrZXlMb2NrUGFyYW1CeVBlcmlvZEICB3VzZXJOdW0GcGVyaW9kCQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgUHdXNlck51bQkAzAgCAgFiCQDMCAIFBnBlcmlvZAUDbmlsBQNTRVABIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMAQd1c2VyTnVtCQC5CQIJAMwIAgIeJXMlZF9fdXNlckJvb3N0RW1pc3Npb25MYXN0SW50CQDMCAIFB3VzZXJOdW0FA25pbAUDU0VQARdrZXlVc2VyTWF4Qm9vc3RJTlRFR1JBTAEHdXNlck51bQkAuQkCCQDMCAICESVzJWRfX21heEJvb3N0SW50CQDMCAIFB3VzZXJOdW0FA25pbAUDU0VQARhrZXlUb3RhbE1heEJvb3N0SU5URUdSQUwAAhglcyVzX19tYXhCb29zdEludF9fdG90YWwBIWtleVVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbAEHdXNlck51bQkAuQkCCQDMCAICJCVzJWRfX3VzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbAkAzAgCBQd1c2VyTnVtBQNuaWwFA1NFUAETa2V5VXNlckJvb3N0Q2xhaW1lZAEHdXNlck51bQkAuQkCCQDMCAICFiVzJWRfX3VzZXJCb29zdENsYWltZWQJAMwIAgUHdXNlck51bQUDbmlsBQNTRVABEWtleVRvdGFsQ2FjaGVkR3d4AAIWJXMlc19fZ3d4Q2FjaGVkX190b3RhbAEPa2V5U3Rha2VkQnlVc2VyAg51c2VyQWRkcmVzc1N0cgxscEFzc2V0SWRTdHIJALkJAgkAzAgCAg4lcyVzJXNfX3N0YWtlZAkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCBQxscEFzc2V0SWRTdHIFA25pbAUDU0VQAQ5rZXlTdGFrZWRUb3RhbAEMbHBBc3NldElkU3RyCQCsAgICFyVzJXMlc19fc3Rha2VkX190b3RhbF9fBQxscEFzc2V0SWRTdHIBEGtleUNsYWltZWRCeVVzZXICDGxwQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cgkAuQkCCQDMCAICDyVzJXMlc19fY2xhaW1lZAkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCBQxscEFzc2V0SWRTdHIFA25pbAUDU0VQARlrZXlDbGFpbWVkQnlVc2VyTWluUmV3YXJkAgxscEFzc2V0SWRTdHIOdXNlckFkZHJlc3NTdHIJALkJAgkAzAgCAhglcyVzJXNfX2NsYWltZWRNaW5SZXdhcmQJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgUMbHBBc3NldElkU3RyBQNuaWwFA1NFUAEba2V5Q2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkAgxscEFzc2V0SWRTdHIOdXNlckFkZHJlc3NTdHIJALkJAgkAzAgCAholcyVzJXNfX2NsYWltZWRCb29zdFJld2FyZAkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCBQxscEFzc2V0SWRTdHIFA25pbAUDU0VQAQpyZWFkU3Rha2VkAgtzdGFraW5nRGFwcANrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgULc3Rha2luZ0RhcHAFA2tleQAAAR5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQAAhslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBIWtleUVtaXNzaW9uUmF0ZVBlckJsb2NrTWF4Q3VycmVudAACHiVzJXNfX3JhdGVQZXJCbG9ja01heF9fY3VycmVudAEVa2V5RW1pc3Npb25TdGFydEJsb2NrAAIaJXMlc19fZW1pc3Npb25fX3N0YXJ0QmxvY2sBG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcwACGCVzJXNfX2VtaXNzaW9uX19kdXJhdGlvbgETa2V5RW1pc3Npb25FbmRCbG9jawACGCVzJXNfX2VtaXNzaW9uX19lbmRCbG9jawEMa2V5QWRkb25BZGRyAAINJXNfX2FkZG9uQWRkcgEKZ2V0UG9vbEZlZQELcG9vbEFkZHJlc3MECmZlZURlZmF1bHQJAGsDAAUFBU1VTFQ4AJBOBAZrZXlGZWUCByVzX19mZWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgULcG9vbEFkZHJlc3MFBmtleUZlZQUKZmVlRGVmYXVsdAALZmFjdG9yeURhcHAJARhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwAAApmYWN0b3J5Q2ZnCQEUcmVhZEZhY3RvcnlDZmdPckZhaWwBBQtmYWN0b3J5RGFwcAAMZW1pc3Npb25EYXBwCQEYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwALc3Rha2luZ0RhcHAJARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcADWd3eFJld2FyZERhcHAJARlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwAMYm9vc3RpbmdEYXBwCQEYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwEZaW50ZXJuYWxDdXJyZW50UmV3YXJkUmF0ZQEJbHBBc3NldElkBA5wb29sQWRkcmVzc1N0cgkBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIFC2ZhY3RvcnlEYXBwCQEma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBBQlscEFzc2V0SWQEDnBvb2xXZWlnaHRNdWx0BQVNVUxUOAQKcG9vbFdlaWdodAkBEUBleHRyTmF0aXZlKDEwNTApAgULZmFjdG9yeURhcHAJARRrZXlGYWN0b3J5UG9vbFdlaWdodAEFDnBvb2xBZGRyZXNzU3RyBBJ3eEVtaXNzaW9uUGVyQmxvY2sJAQxnZXRJbnRPckZhaWwCBQxlbWlzc2lvbkRhcHAJAR5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQABBV3eEVtaXNzaW9uUGVyQmxvY2tNYXgJAQxnZXRJbnRPckZhaWwCBQxlbWlzc2lvbkRhcHAJASFrZXlFbWlzc2lvblJhdGVQZXJCbG9ja01heEN1cnJlbnQABA1ib29zdE1heENvZWZmAAMEFnBvb2xXeEVtaXNzaW9uUGVyQmxvY2sJAGkCCQBrAwUSd3hFbWlzc2lvblBlckJsb2NrBQpwb29sV2VpZ2h0BQ5wb29sV2VpZ2h0TXVsdAUNYm9vc3RNYXhDb2VmZgQZcG9vbFd4RW1pc3Npb25QZXJCbG9ja01heAkAawMFFXd4RW1pc3Npb25QZXJCbG9ja01heAUKcG9vbFdlaWdodAUOcG9vbFdlaWdodE11bHQECW1heEZhY3RvcgkAaAIFDWJvb3N0TWF4Q29lZmYFBU1VTFQ4BA10b3RhbExwU3Rha2VkCQEMZ2V0SW50T3JaZXJvAgULc3Rha2luZ0RhcHAJAQ5rZXlTdGFrZWRUb3RhbAEFCWxwQXNzZXRJZAkAzAgCBRZwb29sV3hFbWlzc2lvblBlckJsb2NrCQDMCAIFCW1heEZhY3RvcgkAzAgCBQ10b3RhbExwU3Rha2VkBQNuaWwBGmNhbGNHd3hBbW91bnRTdGFydFJFQURPTkxZAwpsb2NrQW1vdW50DGxvY2tEdXJhdGlvbg9tYXhMb2NrRHVyYXRpb24EB2NvZWZmWDgJAGsDBQxsb2NrRHVyYXRpb24FBU1VTFQ4BQ9tYXhMb2NrRHVyYXRpb24EDmdXeEFtb3VudFN0YXJ0CQBrAwUKbG9ja0Ftb3VudAUHY29lZmZYOAUFTVVMVDgJAMwIAgUOZ1d4QW1vdW50U3RhcnQFA25pbAEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQttdXN0TWFuYWdlcgEBaQQCcGQJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBQJwZAMJAAECBQckbWF0Y2gwAgRVbml0AwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFAnBkCQACAQILTWF0Y2ggZXJyb3IPAWkBC2NvbnN0cnVjdG9yAQ5mYWN0b3J5QWRkcmVzcwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlGYWN0b3J5QWRkcmVzcwAFDmZhY3RvcnlBZGRyZXNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZY3VycmVudFJld2FyZFJhdGVSRUFET05MWQEJbHBBc3NldElkBApyZXdhcmREYXRhCQEZaW50ZXJuYWxDdXJyZW50UmV3YXJkUmF0ZQEFCWxwQXNzZXRJZAQSd3hFbWlzc2lvblBlckJsb2NrCQCRAwIFCnJld2FyZERhdGEAAAQJbWF4RmFjdG9yCQCRAwIFCnJld2FyZERhdGEAAQQNdG90YWxMcFN0YWtlZAkAkQMCBQpyZXdhcmREYXRhAAIJAJQKAgUDbmlsCQC5CQIJAMwIAgIGJWQlZCVkCQDMCAIJAKQDAQUSd3hFbWlzc2lvblBlckJsb2NrCQDMCAIJAKQDAQUJbWF4RmFjdG9yCQDMCAIJAKQDAQUNdG90YWxMcFN0YWtlZAUDbmlsBQNTRVABaQEdY3VycmVudFVzZXJSZXdhcmRSYXRlUkVBRE9OTFkCCWxwQXNzZXRJZAt1c2VyQWRkcmVzcwQKcmV3YXJkRGF0YQkBGWludGVybmFsQ3VycmVudFJld2FyZFJhdGUBBQlscEFzc2V0SWQEEnd4RW1pc3Npb25QZXJCbG9jawkAkQMCBQpyZXdhcmREYXRhAAAECW1heEZhY3RvcgkAkQMCBQpyZXdhcmREYXRhAAEEDXRvdGFsTHBTdGFrZWQJAJEDAgUKcmV3YXJkRGF0YQACBA5scFN0YWtlZEJ5VXNlcgkBDGdldEludE9yWmVybwIFC3N0YWtpbmdEYXBwCQEPa2V5U3Rha2VkQnlVc2VyAgULdXNlckFkZHJlc3MFCWxwQXNzZXRJZAQNdXNlckNsYWltSW5mbwkAtQkCCQEIYXNTdHJpbmcBCQD8BwQFC3N0YWtpbmdEYXBwAg9jbGFpbVd4UkVBRE9OTFkJAMwIAgUJbHBBc3NldElkCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA25pbAUDU0VQBA1taW5SZXdhcmRQYXJ0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQ11c2VyQ2xhaW1JbmZvAAUCHGNvdWxkbid0IHBhcnNlIG1pblJld2FyZFBhcnQED2Jvb3N0UmV3YXJkUGFydAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUNdXNlckNsYWltSW5mbwAGAh5jb3VsZG4ndCBwYXJzZSBib29zdFJld2FyZFBhcnQEBWRlYnVnCQCRAwIFDXVzZXJDbGFpbUluZm8ABwQNYm9vc3RpbmdQb3dlcgMJAAACBQ9ib29zdFJld2FyZFBhcnQAAAkAaAIAAQUFTVVMVDgJAGsDCQBkAgUNbWluUmV3YXJkUGFydAUPYm9vc3RSZXdhcmRQYXJ0BQVNVUxUOAUNbWluUmV3YXJkUGFydAkAlAoCBQNuaWwJALkJAgkAzAgCAgwlZCVkJWQlZCVkJXMJAMwIAgkApAMBBRJ3eEVtaXNzaW9uUGVyQmxvY2sJAMwIAgkApAMBBQltYXhGYWN0b3IJAMwIAgkApAMBBQ10b3RhbExwU3Rha2VkCQDMCAIJAKQDAQUObHBTdGFrZWRCeVVzZXIJAMwIAgkApAMBBQ1ib29zdGluZ1Bvd2VyCQDMCAIFBWRlYnVnBQNuaWwFA1NFUAFpAR1jYWxjQm9vc3RCdWxrSW50ZXJuYWxSRUFET05MWQcLY3VycmVudEl0ZXIRZGVsdGFXeEFtb3VudEJ1bGsbZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3NCdWxrEWRlbHRhTHBBbW91bnRCdWxrEGxwQXNzZXRJZE9wdEJ1bGsOdXNlckFkZHJlc3NPcHQGcmVzQWNjAwkAAAIFC2N1cnJlbnRJdGVyCQCQAwEFEWRlbHRhV3hBbW91bnRCdWxrCQCUCgIFA25pbAUGcmVzQWNjBA1kZWx0YVd4QW1vdW50CQCRAwIFEWRlbHRhV3hBbW91bnRCdWxrBQtjdXJyZW50SXRlcgQXZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3MJAJEDAgUbZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3NCdWxrBQtjdXJyZW50SXRlcgQNZGVsdGFMcEFtb3VudAkAkQMCBRFkZWx0YUxwQW1vdW50QnVsawULY3VycmVudEl0ZXIEDGxwQXNzZXRJZE9wdAkAkQMCBRBscEFzc2V0SWRPcHRCdWxrBQtjdXJyZW50SXRlcgQEaW5mbwoAAUAJAPwHBAUEdGhpcwIRY2FsY0Jvb3N0UkVBRE9OTFkJAMwIAgUNZGVsdGFXeEFtb3VudAkAzAgCBRdkZWx0YUxvY2tQZXJpb2RJbkJsb2NrcwkAzAgCBQ1kZWx0YUxwQW1vdW50CQDMCAIFDGxwQXNzZXRJZE9wdAkAzAgCBQ51c2VyQWRkcmVzc09wdAUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBANyZXMJAM0IAgUGcmVzQWNjBQRpbmZvBANpbnYKAAFACQD8BwQFBHRoaXMCHWNhbGNCb29zdEJ1bGtJbnRlcm5hbFJFQURPTkxZCQDMCAIJAGQCBQtjdXJyZW50SXRlcgABCQDMCAIFEWRlbHRhV3hBbW91bnRCdWxrCQDMCAIFG2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzQnVsawkAzAgCBRFkZWx0YUxwQW1vdW50QnVsawkAzAgCBRBscEFzc2V0SWRPcHRCdWxrCQDMCAIFDnVzZXJBZGRyZXNzT3B0CQDMCAIFA3JlcwUDbmlsBQNuaWwDCQABAgUBQAIJTGlzdFtBbnldBQFACQACAQkArAICCQADAQUBQAIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFA2ludgUDaW52CQCUCgIFA25pbAUDaW52CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFWNhbGNCb29zdEJ1bGtSRUFET05MWQUNZGVsdGFXeEFtb3VudBdkZWx0YUxvY2tQZXJpb2RJbkJsb2Nrcw1kZWx0YUxwQW1vdW50DGxwQXNzZXRJZE9wdA51c2VyQWRkcmVzc09wdAQDcmVzCQD8BwQFBHRoaXMCHWNhbGNCb29zdEJ1bGtJbnRlcm5hbFJFQURPTkxZCQDMCAIAAAkAzAgCBQ1kZWx0YVd4QW1vdW50CQDMCAIFF2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzCQDMCAIFDWRlbHRhTHBBbW91bnQJAMwIAgUMbHBBc3NldElkT3B0CQDMCAIFDnVzZXJBZGRyZXNzT3B0CQDMCAIFA25pbAUDbmlsBQNuaWwJAJQKAgUDbmlsBQNyZXMBaQERY2FsY0Jvb3N0UkVBRE9OTFkFDWRlbHRhV3hBbW91bnQXZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3MNZGVsdGFMcEFtb3VudAxscEFzc2V0SWRPcHQOdXNlckFkZHJlc3NPcHQECG1hdGhEYXBwBQ1nd3hSZXdhcmREYXBwBAhFTVBUWVNUUgIFZW1wdHkEF21heExvY2tEdXJhdGlvbkluQmxvY2tzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQEYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAgUMYm9vc3RpbmdEYXBwCQELa2V5Qm9vc3RDZmcABQNTRVAABAQMbHBBc3NldElkU3RyAwkAAAIFDGxwQXNzZXRJZE9wdAIABQhFTVBUWVNUUgUMbHBBc3NldElkT3B0BA51c2VyQWRkcmVzc1N0cgMJAAACBQ51c2VyQWRkcmVzc09wdAIABQhFTVBUWVNUUgUOdXNlckFkZHJlc3NPcHQECnVzZXJOdW1TdHIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUMYm9vc3RpbmdEYXBwCQESa2V5VXNlcjJOdW1NYXBwaW5nAQUOdXNlckFkZHJlc3NPcHQFCEVNUFRZU1RSBAp1c2VyQW1vdW50CQELdmFsdWVPckVsc2UCCQCaCAIFDGJvb3N0aW5nRGFwcAkBFmtleUxvY2tQYXJhbVVzZXJBbW91bnQBBQp1c2VyTnVtU3RyAAAECWxvY2tTdGFydAkBC3ZhbHVlT3JFbHNlAgkAmggCBQxib29zdGluZ0RhcHAJARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQUKdXNlck51bVN0cgUGaGVpZ2h0BAxsb2NrRHVyYXRpb24JAQt2YWx1ZU9yRWxzZQIJAJoIAgUMYm9vc3RpbmdEYXBwCQEUa2V5TG9ja1BhcmFtRHVyYXRpb24BBQp1c2VyTnVtU3RyAAAEB2xvY2tFbmQJAGQCBQlsb2NrU3RhcnQFDGxvY2tEdXJhdGlvbgQRcmVtYWluaW5nRHVyYXRpb24JAJYDAQkAzAgCCQBlAgUHbG9ja0VuZAUGaGVpZ2h0CQDMCAIAAAUDbmlsBA11c2VyQW1vdW50TmV3CQBkAgUKdXNlckFtb3VudAUNZGVsdGFXeEFtb3VudAQPbG9ja0R1cmF0aW9uTmV3CQCXAwEJAMwIAgkAZAIFEXJlbWFpbmluZ0R1cmF0aW9uBRdkZWx0YUxvY2tQZXJpb2RJbkJsb2NrcwkAzAgCBRdtYXhMb2NrRHVyYXRpb25JbkJsb2NrcwUDbmlsBBF1c2VyQ3VycmdXeEFtb3VudAkBBWFzSW50AQkAkQMCCQEJYXNBbnlMaXN0AQkA/AcEBQxib29zdGluZ0RhcHACE2d3eFVzZXJJbmZvUkVBRE9OTFkJAMwIAgUOdXNlckFkZHJlc3NTdHIFA25pbAUDbmlsAAAEEWdXeEFtb3VudFN0YXJ0TmV3CQCRAwIJARpjYWxjR3d4QW1vdW50U3RhcnRSRUFET05MWQMFDXVzZXJBbW91bnROZXcFD2xvY2tEdXJhdGlvbk5ldwUXbWF4TG9ja0R1cmF0aW9uSW5CbG9ja3MAAAQTZ1d4UGFyYW1zUmVzdWx0TGlzdAkBCWFzQW55TGlzdAEJAPwHBAUIbWF0aERhcHACFWNhbGNHd3hQYXJhbXNSRUFET05MWQkAzAgCBRFnV3hBbW91bnRTdGFydE5ldwkAzAgCBQZoZWlnaHQJAMwIAgUPbG9ja0R1cmF0aW9uTmV3BQNuaWwFA25pbAQNZ1d4QW1vdW50RGlmZgkAZQIFEWdXeEFtb3VudFN0YXJ0TmV3BRF1c2VyQ3VycmdXeEFtb3VudAQBawkBBWFzSW50AQkAkQMCBRNnV3hQYXJhbXNSZXN1bHRMaXN0AAAEAWIJAQVhc0ludAEJAJEDAgUTZ1d4UGFyYW1zUmVzdWx0TGlzdAABBAZwZXJpb2QJAKQDAQkBBWFzSW50AQkAkQMCBRNnV3hQYXJhbXNSZXN1bHRMaXN0AAIEGHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbEtFWQkBGGtleVRvdGFsTWF4Qm9vc3RJTlRFR1JBTAAEEXRvdGFsQ2FjaGVkR3d4S0VZCQERa2V5VG90YWxDYWNoZWRHd3gABBJ1c2VyTWF4Qm9vc3RJbnROZXcJAGkCCQBoAgURZ1d4QW1vdW50U3RhcnROZXcFD2xvY2tEdXJhdGlvbk5ldwACBBB0b3RhbE1heEJvb3N0SW50CQEMZ2V0SW50T3JaZXJvAgUMYm9vc3RpbmdEYXBwBRh0b3RhbE1heEJvb3N0SW50ZWdyYWxLRVkEDnRvdGFsQ2FjaGVkR3d4CQELdmFsdWVPckVsc2UCCQCaCAIFDGJvb3N0aW5nRGFwcAURdG90YWxDYWNoZWRHd3hLRVkAAAQFTVVMVDMA6AcEFHd4RW1pc3Npb25QZXJCbG9ja1gzCQBoAgkBDGdldEludE9yRmFpbAIFDGVtaXNzaW9uRGFwcAkBHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAAFBU1VTFQzBA9zdGFrZWRCeVVzZXJLRVkJAQ9rZXlTdGFrZWRCeVVzZXICBQ51c2VyQWRkcmVzc1N0cgUMbHBBc3NldElkU3RyBA5zdGFrZWRUb3RhbEtFWQkBDmtleVN0YWtlZFRvdGFsAQUMbHBBc3NldElkU3RyBAxzdGFrZWRCeVVzZXIJAQpyZWFkU3Rha2VkAgULc3Rha2luZ0RhcHAFD3N0YWtlZEJ5VXNlcktFWQQLc3Rha2VkVG90YWwJAQpyZWFkU3Rha2VkAgULc3Rha2luZ0RhcHAFDnN0YWtlZFRvdGFsS0VZBA9zdGFrZWRCeVVzZXJOZXcJAGQCBQxzdGFrZWRCeVVzZXIFDWRlbHRhTHBBbW91bnQEDnN0YWtlZFRvdGFsTmV3CQBkAgULc3Rha2VkVG90YWwFDWRlbHRhTHBBbW91bnQECnBvb2xXZWlnaHQDCQECIT0CBQxscEFzc2V0SWRTdHIFCEVNUFRZU1RSBA5wb29sQWRkcmVzc1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFC2ZhY3RvcnlEYXBwCQEaa2V5RmFjdG9yeUxwMkFzc2V0c01hcHBpbmcBBQxscEFzc2V0SWRTdHIJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQxscEFzc2V0SWRTdHIJARFAZXh0ck5hdGl2ZSgxMDUwKQIFC2ZhY3RvcnlEYXBwCQEUa2V5RmFjdG9yeVBvb2xXZWlnaHQBBQ5wb29sQWRkcmVzc1N0cgAABBhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMJAGsDBRR3eEVtaXNzaW9uUGVyQmxvY2tYMwUKcG9vbFdlaWdodAkAaAIFDlBPT0xXRUlHSFRNVUxUAAMECXd4UGVyTHBYMwMJAQIhPQIFDnN0YWtlZFRvdGFsTmV3AAAJAGsDBRhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMFBU1VTFQ4BQ5zdGFrZWRUb3RhbE5ldwAABBB1c2VyV3hQZXJCbG9ja1gzCQBrAwUJd3hQZXJMcFgzBQ9zdGFrZWRCeVVzZXJOZXcFBU1VTFQ4BBdib29zdEVtaXNzaW9uUGVyQmxvY2tYMwkAaAIFGHBvb2xXeEVtaXNzaW9uUGVyQmxvY2tYMwACBBZ0bXBVc2VyQm9vc3RQZXJCbG9ja1gzCQBrAwURZ1d4QW1vdW50U3RhcnROZXcFF2Jvb3N0RW1pc3Npb25QZXJCbG9ja1gzCQBkAgUOdG90YWxDYWNoZWRHd3gFDWdXeEFtb3VudERpZmYEE3VzZXJCb29zdFBlckJsb2NrWDMJAJcDAQkAzAgCBRZ0bXBVc2VyQm9vc3RQZXJCbG9ja1gzCQDMCAIJAGgCBRB1c2VyV3hQZXJCbG9ja1gzAAIFA25pbAQKYm9vc3RDb2VmZgMJAAACBRB1c2VyV3hQZXJCbG9ja1gzAAAJAGgCAAEFBU1VTFQ4CQBrAwkAZAIFE3VzZXJCb29zdFBlckJsb2NrWDMFEHVzZXJXeFBlckJsb2NrWDMFBU1VTFQ4BRB1c2VyV3hQZXJCbG9ja1gzCQCUCgIFA25pbAkAuQkCCQDMCAICBiVkJWQlcwkAzAgCCQCkAwEFEWdXeEFtb3VudFN0YXJ0TmV3CQDMCAIJAKQDAQUKYm9vc3RDb2VmZgkAzAgCAgFkBQNuaWwFA1NFUAFpARd3eEVtaXNzaW9uU3RhdHNSRUFET05MWQAEB09ORU1VTFQJAKQDAQUFTVVMVDgEA09ORQIBMQQSd3hFbWlzc2lvblBlckJsb2NrCQEMZ2V0SW50T3JGYWlsAgUMZW1pc3Npb25EYXBwCQEea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAQSZW1pc3Npb25TdGFydEJsb2NrCQEMZ2V0SW50T3JGYWlsAgUMZW1pc3Npb25EYXBwCQEVa2V5RW1pc3Npb25TdGFydEJsb2NrAAQMcGFzc2VkQmxvY2tzAwkAZgIFEmVtaXNzaW9uU3RhcnRCbG9jawUGaGVpZ2h0AAAJAGUCBQZoZWlnaHQFEmVtaXNzaW9uU3RhcnRCbG9jawQOdGVhbUVtRHVyYXRpb24JAGgCAKALAO0CBAl0ZWFtRW1NYXgJAGgCAMCI7F8FBU1VTFQ4BAZ0ZWFtRW0DCQBmAgUMcGFzc2VkQmxvY2tzBQ50ZWFtRW1EdXJhdGlvbgUJdGVhbUVtTWF4CQBrAwUJdGVhbUVtTWF4BQxwYXNzZWRCbG9ja3MFDnRlYW1FbUR1cmF0aW9uBA90b3RhbFd4UmVsZWFzZWQJAGQCCQBoAgUSd3hFbWlzc2lvblBlckJsb2NrBQxwYXNzZWRCbG9ja3MFBnRlYW1FbQQNdG90YWxXeExvY2tlZAkBDGdldEludE9yWmVybwIFDGJvb3N0aW5nRGFwcAkBH2tleUJvb3N0aW5nTG9ja1BhcmFtVG90YWxBbW91bnQABBhsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MJAQxnZXRJbnRPclplcm8CBQxib29zdGluZ0RhcHAJAShrZXlCb29zdGluZ1N0YXRzTG9ja3NEdXJhdGlvblN1bUluQmxvY2tzAAQKbG9ja3NDb3VudAkBDGdldEludE9yWmVybwIFDGJvb3N0aW5nRGFwcAkBGmtleUJvb3N0aW5nU3RhdHNMb2Nrc0NvdW50AAkAlAoCBQNuaWwJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFD3RvdGFsV3hSZWxlYXNlZAkAzAgCCQCkAwEFDXRvdGFsV3hMb2NrZWQJAMwIAgkApAMBBRhsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MJAMwIAgkApAMBBQpsb2Nrc0NvdW50BQNuaWwFA1NFUAFpARFwb29sU3RhdHNSRUFET05MWQEHbHBBc3NldAQLcG9vbEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQtmYWN0b3J5RGFwcAkBJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUHbHBBc3NldAQDY2ZnCQEJYXNBbnlMaXN0AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQUDbmlsBQNuaWwECWxwQXNzZXRJZAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUQaWR4UG9vbExQQXNzZXRJZAQKYW10QXNzZXRJZAkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQEDHByaWNlQXNzZXRJZAkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQLaUFtdEFzc2V0SWQJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ5pZHhJQW10QXNzZXRJZAQNaVByaWNlQXNzZXRJZAkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFEGlkeElQcmljZUFzc2V0SWQEC2FtdEFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ5pZHhBbXRBc3NldERjbQQNcHJpY2VBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUQaWR4UHJpY2VBc3NldERjbQQNcG9vbExQQmFsYW5jZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQlscEFzc2V0SWQJAKwCAgkArAICAgZBc3NldCAJANgEAQUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQSYWNjQW10QXNzZXRCYWxhbmNlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFCmFtdEFzc2V0SWQFA25pbAUDbmlsBBRhY2NQcmljZUFzc2V0QmFsYW5jZQkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQxwcmljZUFzc2V0SWQFA25pbAUDbmlsBApwcmljZXNMaXN0AwkAAAIFDXBvb2xMUEJhbGFuY2UAAAkAzAgCCQCmAwEFCnplcm9CaWdJbnQJAMwIAgkApgMBBQp6ZXJvQmlnSW50CQDMCAIJAKYDAQUKemVyb0JpZ0ludAUDbmlsCQEJYXNBbnlMaXN0AQkA/AcEBQtwb29sQWRkcmVzcwIZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQkAzAgCBRJhY2NBbXRBc3NldEJhbGFuY2UJAMwIAgUUYWNjUHJpY2VBc3NldEJhbGFuY2UJAMwIAgUNcG9vbExQQmFsYW5jZQUDbmlsBQNuaWwECGN1clByaWNlAAAED2xwQW10QXNzZXRTaGFyZQkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIWZnJvbVgxOFdyYXBwZXJSRUFET05MWQkAzAgCCQCRAwIFCnByaWNlc0xpc3QAAQkAzAgCBQVNVUxUOAUDbmlsBQNuaWwEEWxwUHJpY2VBc3NldFNoYXJlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhZmcm9tWDE4V3JhcHBlclJFQURPTkxZCQDMCAIJAJEDAgUKcHJpY2VzTGlzdAACCQDMCAIFBU1VTFQ4BQNuaWwFA25pbAQKcG9vbFdlaWdodAkBEUBleHRyTmF0aXZlKDEwNTApAgULZmFjdG9yeURhcHAJARRrZXlGYWN0b3J5UG9vbFdlaWdodAEJAKUIAQULcG9vbEFkZHJlc3MEA2ZlZQkBCmdldFBvb2xGZWUBBQtwb29sQWRkcmVzcwkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUSYWNjQW10QXNzZXRCYWxhbmNlCQDMCAIJAKQDAQUUYWNjUHJpY2VBc3NldEJhbGFuY2UJAMwIAgkApAMBBQ1wb29sTFBCYWxhbmNlCQDMCAIJAKQDAQUIY3VyUHJpY2UJAMwIAgkApAMBBQ9scEFtdEFzc2V0U2hhcmUJAMwIAgkApAMBBRFscFByaWNlQXNzZXRTaGFyZQkAzAgCCQCkAwEFCnBvb2xXZWlnaHQJAMwIAgkApAMBBQNmZWUFA25pbAUDU0VQAWkBJHBvb2xFdmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQIHbHBBc3NldAxpbkFtQXNzZXRBbXQEC3Bvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQEYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAgULZmFjdG9yeURhcHAJASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFB2xwQXNzZXQEA2NmZwkBCWFzQW55TGlzdAEJAPwHBAULcG9vbEFkZHJlc3MCHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkFA25pbAUDbmlsBAlscEFzc2V0SWQJANkEAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQEDGFtQXNzZXRJZFN0cgkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQECWFtQXNzZXRJZAkA2QQBBQxhbUFzc2V0SWRTdHIEDHByQXNzZXRJZFN0cgkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQJcHJBc3NldElkCQDZBAEFDHByQXNzZXRJZFN0cgQLYW10QXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDmlkeEFtdEFzc2V0RGNtBA1wcmljZUFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBRBpZHhQcmljZUFzc2V0RGNtBApwb29sU3RhdHVzCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUNaWR4UG9vbFN0YXR1cwQNcG9vbExQQmFsYW5jZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQlscEFzc2V0SWQJAKwCAgkArAICAgZBc3NldCAJANgEAQUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQSYWNjQW10QXNzZXRCYWxhbmNlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFDGFtQXNzZXRJZFN0cgUDbmlsBQNuaWwEFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFDHByQXNzZXRJZFN0cgUDbmlsBQNuaWwEDmFtdEFzc2V0QW10WDE4CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCFHRvWDE4V3JhcHBlclJFQURPTkxZCQDMCAIFEmFjY0FtdEFzc2V0QmFsYW5jZQkAzAgCBQthbXRBc3NldERjbQUDbmlsBQNuaWwEEHByaWNlQXNzZXRBbXRYMTgJAKcDAQkBCGFzU3RyaW5nAQkA/AcEBQtwb29sQWRkcmVzcwIUdG9YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgUUYWNjUHJpY2VBc3NldEJhbGFuY2UJAMwIAgUNcHJpY2VBc3NldERjbQUDbmlsBQNuaWwEC2N1clByaWNlWDE4AwkAAAIFDXBvb2xMUEJhbGFuY2UAAAUKemVyb0JpZ0ludAkApwMBCQEIYXNTdHJpbmcBCQD8BwQFC3Bvb2xBZGRyZXNzAh5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkJAMwIAgkApgMBBRBwcmljZUFzc2V0QW10WDE4CQDMCAIJAKYDAQUOYW10QXNzZXRBbXRYMTgFA25pbAUDbmlsBAhjdXJQcmljZQkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIWZnJvbVgxOFdyYXBwZXJSRUFET05MWQkAzAgCCQCmAwEFC2N1clByaWNlWDE4CQDMCAIFBU1VTFQ4BQNuaWwFA25pbAQPaW5BbUFzc2V0QW10WDE4CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCFHRvWDE4V3JhcHBlclJFQURPTkxZCQDMCAIFDGluQW1Bc3NldEFtdAkAzAgCBQthbXRBc3NldERjbQUDbmlsBQNuaWwED2luUHJBc3NldEFtdFgxOAkAvAIDBQ9pbkFtQXNzZXRBbXRYMTgFC2N1clByaWNlWDE4BQZNVUxUMTgEDGluUHJBc3NldEFtdAkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIWZnJvbVgxOFdyYXBwZXJSRUFET05MWQkAzAgCCQCmAwEFD2luUHJBc3NldEFtdFgxOAkAzAgCBQ1wcmljZUFzc2V0RGNtBQNuaWwFA25pbAQDcmVzCQD8BwQFC3Bvb2xBZGRyZXNzAiNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkAzAgCAgAJAMwIAgCgwh4JAMwIAgUMaW5BbUFzc2V0QW10CQDMCAIFCWFtQXNzZXRJZAkAzAgCBQxpblByQXNzZXRBbXQJAMwIAgUJcHJBc3NldElkCQDMCAICAAkAzAgCBgkAzAgCBwUDbmlsBQNuaWwEDSR0MDIyMDc1MjI0MjgEByRtYXRjaDAFA3JlcwMDAwkAAQIIBQckbWF0Y2gwAl8xAgNJbnQDCQABAggFByRtYXRjaDACXzMCA0ludAMJAAECCAUHJG1hdGNoMAJfNAIDSW50AwkAAQIIBQckbWF0Y2gwAl81AgNJbnQJAAECCAUHJG1hdGNoMAJfNgIDSW50BwcHBwkAAAIJAMYKAQUHJG1hdGNoMAANBwQJY2FsY0xwQW10CAUHJG1hdGNoMAJfMQQMY3VyUHJpY2VDYWxjCAUHJG1hdGNoMAJfMwQJYW1CYWxhbmNlCAUHJG1hdGNoMAJfNAQJcHJCYWxhbmNlCAUHJG1hdGNoMAJfNQQKbHBFbWlzc2lvbggFByRtYXRjaDACXzYJAJcKBQUJY2FsY0xwQW10BQxjdXJQcmljZUNhbGMFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQpscEVtaXNzaW9uCQACAQITQ291bGRuJ3QgY2FzdCB0eXBlcwQJY2FsY0xwQW10CAUNJHQwMjIwNzUyMjQyOAJfMQQMY3VyUHJpY2VDYWxjCAUNJHQwMjIwNzUyMjQyOAJfMgQJYW1CYWxhbmNlCAUNJHQwMjIwNzUyMjQyOAJfMwQJcHJCYWxhbmNlCAUNJHQwMjIwNzUyMjQyOAJfNAQKbHBFbWlzc2lvbggFDSR0MDIyMDc1MjI0MjgCXzUJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFCWNhbGNMcEFtdAkAzAgCCQCkAwEFCGN1clByaWNlCQDMCAIJAKQDAQUJYW1CYWxhbmNlCQDMCAIJAKQDAQUJcHJCYWxhbmNlCQDMCAIJAKQDAQUKbHBFbWlzc2lvbgkAzAgCBQpwb29sU3RhdHVzCQDMCAIJAKQDAQUMaW5BbUFzc2V0QW10CQDMCAIJAKQDAQUMaW5QckFzc2V0QW10BQNuaWwFA1NFUAFpASNwb29sRXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQIHbHBBc3NldAxpblByQXNzZXRBbXQEC3Bvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQEYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAgULZmFjdG9yeURhcHAJASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFB2xwQXNzZXQEA2NmZwkBCWFzQW55TGlzdAEJAPwHBAULcG9vbEFkZHJlc3MCHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkFA25pbAUDbmlsBAlscEFzc2V0SWQJANkEAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQEDGFtQXNzZXRJZFN0cgkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQECWFtQXNzZXRJZAkA2QQBBQxhbUFzc2V0SWRTdHIEDHByQXNzZXRJZFN0cgkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQJcHJBc3NldElkCQDZBAEFDHByQXNzZXRJZFN0cgQLYW10QXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDmlkeEFtdEFzc2V0RGNtBA1wcmljZUFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBRBpZHhQcmljZUFzc2V0RGNtBApwb29sU3RhdHVzCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUNaWR4UG9vbFN0YXR1cwQNcG9vbExQQmFsYW5jZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQlscEFzc2V0SWQJAKwCAgkArAICAgZBc3NldCAJANgEAQUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQMYW1CYWxhbmNlUmF3CQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFDGFtQXNzZXRJZFN0cgUDbmlsBQNuaWwEDHByQmFsYW5jZVJhdwkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQxwckFzc2V0SWRTdHIFA25pbAUDbmlsBA9hbUJhbGFuY2VSYXdYMTgJAKcDAQkBCGFzU3RyaW5nAQkA/AcEBQtwb29sQWRkcmVzcwIUdG9YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgUMYW1CYWxhbmNlUmF3CQDMCAIFC2FtdEFzc2V0RGNtBQNuaWwFA25pbAQPcHJCYWxhbmNlUmF3WDE4CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCFHRvWDE4V3JhcHBlclJFQURPTkxZCQDMCAIFDHByQmFsYW5jZVJhdwkAzAgCBQ1wcmljZUFzc2V0RGNtBQNuaWwFA25pbAQLY3VyUHJpY2VYMTgDCQAAAgUNcG9vbExQQmFsYW5jZQAABQp6ZXJvQmlnSW50CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQkAzAgCCQCmAwEFD3ByQmFsYW5jZVJhd1gxOAkAzAgCCQCmAwEFD2FtQmFsYW5jZVJhd1gxOAUDbmlsBQNuaWwECGN1clByaWNlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhZmcm9tWDE4V3JhcHBlclJFQURPTkxZCQDMCAIJAKYDAQULY3VyUHJpY2VYMTgJAMwIAgUFTVVMVDgFA25pbAUDbmlsBA9pblByQXNzZXRBbXRYMTgJAKcDAQkBCGFzU3RyaW5nAQkA/AcEBQtwb29sQWRkcmVzcwIUdG9YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgUMaW5QckFzc2V0QW10CQDMCAIFDXByaWNlQXNzZXREY20FA25pbAUDbmlsBA9pbkFtQXNzZXRBbXRYMTgJALwCAwUPaW5QckFzc2V0QW10WDE4BQZNVUxUMTgFC2N1clByaWNlWDE4BAxpbkFtQXNzZXRBbXQJAQVhc0ludAEJAPwHBAULcG9vbEFkZHJlc3MCFmZyb21YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgkApgMBBQ9pbkFtQXNzZXRBbXRYMTgJAMwIAgULYW10QXNzZXREY20FA25pbAUDbmlsBANyZXMJAPwHBAULcG9vbEFkZHJlc3MCI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQDMCAICAAkAzAgCAKDCHgkAzAgCBQxpbkFtQXNzZXRBbXQJAMwIAgUJYW1Bc3NldElkCQDMCAIFDGluUHJBc3NldEFtdAkAzAgCBQlwckFzc2V0SWQJAMwIAgIACQDMCAIGCQDMCAIHBQNuaWwFA25pbAQNJHQwMjUwMDEyNTM1NAQHJG1hdGNoMAUDcmVzAwMDCQABAggFByRtYXRjaDACXzECA0ludAMJAAECCAUHJG1hdGNoMAJfMwIDSW50AwkAAQIIBQckbWF0Y2gwAl80AgNJbnQDCQABAggFByRtYXRjaDACXzUCA0ludAkAAQIIBQckbWF0Y2gwAl82AgNJbnQHBwcHCQAAAgkAxgoBBQckbWF0Y2gwAA0HBAljYWxjTHBBbXQIBQckbWF0Y2gwAl8xBAxjdXJQcmljZUNhbGMIBQckbWF0Y2gwAl8zBAlhbUJhbGFuY2UIBQckbWF0Y2gwAl80BAlwckJhbGFuY2UIBQckbWF0Y2gwAl81BApscEVtaXNzaW9uCAUHJG1hdGNoMAJfNgkAlwoFBQljYWxjTHBBbXQFDGN1clByaWNlQ2FsYwUJYW1CYWxhbmNlBQlwckJhbGFuY2UFCmxwRW1pc3Npb24JAAIBAhNDb3VsZG4ndCBjYXN0IHR5cGVzBAljYWxjTHBBbXQIBQ0kdDAyNTAwMTI1MzU0Al8xBAxjdXJQcmljZUNhbGMIBQ0kdDAyNTAwMTI1MzU0Al8yBAlhbUJhbGFuY2UIBQ0kdDAyNTAwMTI1MzU0Al8zBAlwckJhbGFuY2UIBQ0kdDAyNTAwMTI1MzU0Al80BApscEVtaXNzaW9uCAUNJHQwMjUwMDEyNTM1NAJfNQkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUJY2FsY0xwQW10CQDMCAIJAKQDAQUIY3VyUHJpY2UJAMwIAgkApAMBBQlhbUJhbGFuY2UJAMwIAgkApAMBBQlwckJhbGFuY2UJAMwIAgkApAMBBQpscEVtaXNzaW9uCQDMCAIFCnBvb2xTdGF0dXMJAMwIAgkApAMBBQxpbkFtQXNzZXRBbXQJAMwIAgkApAMBBQxpblByQXNzZXRBbXQFA25pbAUDU0VQAWkBF3Bvb2xFdmFsdWF0ZUdldFJFQURPTkxZAhBwYXltZW50THBBc3NldElkDHBheW1lbnRMcEFtdAQLcG9vbEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQtmYWN0b3J5RGFwcAkBJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUQcGF5bWVudExwQXNzZXRJZAQDcmVzCQD8BwQFC3Bvb2xBZGRyZXNzAiNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkAzAgCAgAJAMwIAgUQcGF5bWVudExwQXNzZXRJZAkAzAgCBQxwYXltZW50THBBbXQJAMwIAgkApQgBBQtwb29sQWRkcmVzcwUDbmlsBQNuaWwEDSR0MDI2MDQ5MjY0NjYEByRtYXRjaDAFA3JlcwMDAwkAAQIIBQckbWF0Y2gwAl8xAgNJbnQDCQABAggFByRtYXRjaDACXzICA0ludAMJAAECCAUHJG1hdGNoMAJfNQIDSW50AwkAAQIIBQckbWF0Y2gwAl82AgNJbnQDCQABAggFByRtYXRjaDACXzcCA0ludAMJAAECCAUHJG1hdGNoMAJfOAIGU3RyaW5nCQABAggFByRtYXRjaDACXzkCBlN0cmluZwcHBwcHBwkAAAIJAMYKAQUHJG1hdGNoMAAKBwQIb3V0QW1BbXQIBQckbWF0Y2gwAl8xBAhvdXRQckFtdAgFByRtYXRjaDACXzIECWFtQmFsYW5jZQgFByRtYXRjaDACXzUECXByQmFsYW5jZQgFByRtYXRjaDACXzYECmxwRW1pc3Npb24IBQckbWF0Y2gwAl83BAhjdXJQcmljZQgFByRtYXRjaDACXzgECnBvb2xTdGF0dXMIBQckbWF0Y2gwAl85CQCZCgcFCG91dEFtQW10BQhvdXRQckFtdAUJYW1CYWxhbmNlBQlwckJhbGFuY2UFCmxwRW1pc3Npb24FCGN1clByaWNlBQpwb29sU3RhdHVzCQACAQITQ291bGRuJ3QgY2FzdCB0eXBlcwQIb3V0QW1BbXQIBQ0kdDAyNjA0OTI2NDY2Al8xBAhvdXRQckFtdAgFDSR0MDI2MDQ5MjY0NjYCXzIECWFtQmFsYW5jZQgFDSR0MDI2MDQ5MjY0NjYCXzMECXByQmFsYW5jZQgFDSR0MDI2MDQ5MjY0NjYCXzQECmxwRW1pc3Npb24IBQ0kdDAyNjA0OTI2NDY2Al81BAhjdXJQcmljZQgFDSR0MDI2MDQ5MjY0NjYCXzYECnBvb2xTdGF0dXMIBQ0kdDAyNjA0OTI2NDY2Al83CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUIb3V0QW1BbXQJAMwIAgkApAMBBQhvdXRQckFtdAkAzAgCCQCkAwEFCWFtQmFsYW5jZQkAzAgCCQCkAwEFCXByQmFsYW5jZQkAzAgCCQCkAwEFCmxwRW1pc3Npb24JAMwIAgUIY3VyUHJpY2UJAMwIAgUKcG9vbFN0YXR1cwUDbmlsBQNTRVABaQETZ3d4VXNlckluZm9SRUFET05MWQELdXNlckFkZHJlc3MED2d3eFVzZXJJbmZvTElTVAkBCWFzQW55TGlzdAEJAPwHBAUMYm9vc3RpbmdEYXBwAhNnd3hVc2VySW5mb1JFQURPTkxZCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA25pbAQJZ3d4QW1vdW50CQEFYXNJbnQBCQCRAwIFD2d3eFVzZXJJbmZvTElTVAAACQCUCgIFA25pbAkAuQkCCQDMCAICAiVkCQDMCAIJAKQDAQUJZ3d4QW1vdW50BQNuaWwFA1NFUAFpARV1bnN0YWtlQW5kR2V0T25lVGtuVjIEC3Bvb2xBZGRyZXNzDXVuc3Rha2VBbW91bnQKb3V0QXNzZXRJZAxtaW5PdXRBbW91bnQEA2ludgkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBBQtwb29sQWRkcmVzcwIVdW5zdGFrZUFuZEdldE9uZVRrblYyCQDMCAIFDXVuc3Rha2VBbW91bnQJAMwIAgUKb3V0QXNzZXRJZAkAzAgCBQxtaW5PdXRBbW91bnQFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52CQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpzZXRNYW5hZ2VyARdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBVjaGVja01hbmFnZXJQdWJsaWNLZXkJANkEAQUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAgUVY2hlY2tNYW5hZ2VyUHVibGljS2V5BRVjaGVja01hbmFnZXJQdWJsaWNLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb25maXJtTWFuYWdlcgAEAnBtCQEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAVoYXNQTQMJAQlpc0RlZmluZWQBBQJwbQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUFaGFzUE0FBWhhc1BNBAdjaGVja1BNAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCcG0GCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFB2NoZWNrUE0FB2NoZWNrUE0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleU1hbmFnZXJQdWJsaWNLZXkACQDYBAEJAQV2YWx1ZQEFAnBtCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleWXqJkU=", "chainId": 87, "height": 3335893, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7nE84hYqFmFHoxQf3r69GPhTtfeLKBeNkcCx9jjWdy2i Next: 3yBbKiKDUpNAtZACL4HVHF6SMqsrmv2iy6o8cKLsKwsg Diff:
OldNewDifferences
237237 func aS () = "%s__addonAddr"
238238
239239
240-let aT = X()
241-
242-let aU = Z(aT)
243-
244-let aV = ad(aU)
245-
246-let aM = ae(aU)
247-
248-let aW = af(aU)
249-
250-let aX = ab(aU)
251-
252-func aY (aZ) = {
253- let ba = t(aT, U(aZ))
254- let bb = b
255- let bc = getIntegerValue(aT, V(ba))
256- let bd = w(aV, aN())
257- let be = w(aV, aO())
258- let bf = 3
259- let bg = (fraction(bd, bc, bb) / bf)
260- let bh = fraction(be, bc, bb)
261- let bi = (bf * b)
262- let bj = v(aM, aH(aZ))
263-[bg, bi, bj]
240+func aT (aU) = {
241+ let aV = fraction(5, b, 10000)
242+ let aW = "%s__fee"
243+ valueOrElse(getInteger(aU, aW), aV)
264244 }
265245
266246
267-func bk (bl,bm,bn) = {
268- let bo = fraction(bm, b, bn)
269- let bp = fraction(bl, bo, b)
270-[bp]
247+let aX = X()
248+
249+let aY = Z(aX)
250+
251+let aZ = ad(aY)
252+
253+let aM = ae(aY)
254+
255+let ba = af(aY)
256+
257+let bb = ab(aY)
258+
259+func bc (bd) = {
260+ let be = t(aX, U(bd))
261+ let bf = b
262+ let bg = getIntegerValue(aX, V(be))
263+ let bh = w(aZ, aN())
264+ let bi = w(aZ, aO())
265+ let bj = 3
266+ let bk = (fraction(bh, bg, bf) / bj)
267+ let bl = fraction(bi, bg, bf)
268+ let bm = (bj * b)
269+ let bn = v(aM, aH(bd))
270+[bk, bm, bn]
271271 }
272272
273273
274-func bq () = {
274+func bo (bp,bq,br) = {
275+ let bs = fraction(bq, b, br)
276+ let bt = fraction(bp, bs, b)
277+[bt]
278+ }
279+
280+
281+func bu () = {
275282 let z = getString(G())
276283 if ($isInstanceOf(z, "String"))
277284 then {
278- let br = z
279- fromBase58String(br)
285+ let bv = z
286+ fromBase58String(bv)
280287 }
281288 else if ($isInstanceOf(z, "Unit"))
282289 then unit
284291 }
285292
286293
287-func bs () = {
294+func bw () = {
288295 let z = getString(H())
289296 if ($isInstanceOf(z, "String"))
290297 then {
291- let br = z
292- fromBase58String(br)
298+ let bv = z
299+ fromBase58String(bv)
293300 }
294301 else if ($isInstanceOf(z, "Unit"))
295302 then unit
297304 }
298305
299306
300-func bt (bu) = {
301- let bv = throw("Permission denied")
302- let z = bq()
307+func bx (by) = {
308+ let bz = throw("Permission denied")
309+ let z = bu()
303310 if ($isInstanceOf(z, "ByteVector"))
304311 then {
305- let bw = z
306- if ((bu.callerPublicKey == bw))
312+ let bA = z
313+ if ((by.callerPublicKey == bA))
307314 then true
308- else bv
315+ else bz
309316 }
310317 else if ($isInstanceOf(z, "Unit"))
311- then if ((bu.caller == this))
318+ then if ((by.caller == this))
312319 then true
313- else bv
320+ else bz
314321 else throw("Match error")
315322 }
316323
317324
318-@Callable(bu)
319-func constructor (bx) = {
320- let by = bt(bu)
321- if ((by == by))
322- then [StringEntry(F(), bx)]
325+@Callable(by)
326+func constructor (bB) = {
327+ let bC = bx(by)
328+ if ((bC == bC))
329+ then [StringEntry(F(), bB)]
323330 else throw("Strict value is not equal to itself.")
324331 }
325332
326333
327334
328-@Callable(bu)
329-func currentRewardRateREADONLY (aZ) = {
330- let bz = aY(aZ)
331- let bd = bz[0]
332- let bi = bz[1]
333- let bj = bz[2]
334- $Tuple2(nil, makeString(["%d%d%d", toString(bd), toString(bi), toString(bj)], e))
335+@Callable(by)
336+func currentRewardRateREADONLY (bd) = {
337+ let bD = bc(bd)
338+ let bh = bD[0]
339+ let bm = bD[1]
340+ let bn = bD[2]
341+ $Tuple2(nil, makeString(["%d%d%d", toString(bh), toString(bm), toString(bn)], e))
335342 }
336343
337344
338345
339-@Callable(bu)
340-func currentUserRewardRateREADONLY (aZ,am) = {
341- let bz = aY(aZ)
342- let bd = bz[0]
343- let bi = bz[1]
344- let bj = bz[2]
345- let bA = v(aM, aE(am, aZ))
346- let bB = split(D(invoke(aM, "claimWxREADONLY", [aZ, am], nil)), e)
347- let bC = valueOrErrorMessage(parseInt(bB[5]), "couldn't parse minRewardPart")
348- let bD = valueOrErrorMessage(parseInt(bB[6]), "couldn't parse boostRewardPart")
349- let bE = bB[7]
350- let bF = if ((bD == 0))
346+@Callable(by)
347+func currentUserRewardRateREADONLY (bd,am) = {
348+ let bD = bc(bd)
349+ let bh = bD[0]
350+ let bm = bD[1]
351+ let bn = bD[2]
352+ let bE = v(aM, aE(am, bd))
353+ let bF = split(D(invoke(aM, "claimWxREADONLY", [bd, am], nil)), e)
354+ let bG = valueOrErrorMessage(parseInt(bF[5]), "couldn't parse minRewardPart")
355+ let bH = valueOrErrorMessage(parseInt(bF[6]), "couldn't parse boostRewardPart")
356+ let bI = bF[7]
357+ let bJ = if ((bH == 0))
351358 then (1 * b)
352- else fraction((bC + bD), b, bC)
353- $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bd), toString(bi), toString(bj), toString(bA), toString(bF), bE], e))
359+ else fraction((bG + bH), b, bG)
360+ $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bh), toString(bm), toString(bn), toString(bE), toString(bJ), bI], e))
354361 }
355362
356363
357364
358-@Callable(bu)
359-func calcBoostBulkInternalREADONLY (bG,bH,bI,bJ,bK,bL,bM) = if ((bG == size(bH)))
360- then $Tuple2(nil, bM)
365+@Callable(by)
366+func calcBoostBulkInternalREADONLY (bK,bL,bM,bN,bO,bP,bQ) = if ((bK == size(bL)))
367+ then $Tuple2(nil, bQ)
361368 else {
362- let bN = bH[bG]
363- let bO = bI[bG]
364- let bP = bJ[bG]
365- let bQ = bK[bG]
366- let bR = {
367- let bS = invoke(this, "calcBoostREADONLY", [bN, bO, bP, bQ, bL], nil)
368- if ($isInstanceOf(bS, "String"))
369- then bS
370- else throw(($getType(invoke(this, "calcBoostREADONLY", [bN, bO, bP, bQ, bL], nil)) + " couldn't be cast to String"))
369+ let bR = bL[bK]
370+ let bS = bM[bK]
371+ let bT = bN[bK]
372+ let bU = bO[bK]
373+ let bV = {
374+ let bW = invoke(this, "calcBoostREADONLY", [bR, bS, bT, bU, bP], nil)
375+ if ($isInstanceOf(bW, "String"))
376+ then bW
377+ else throw(($getType(bW) + " couldn't be cast to String"))
371378 }
372- let bT = (bM :+ bR)
373- let bU = {
374- let bS = invoke(this, "calcBoostBulkInternalREADONLY", [(bG + 1), bH, bI, bJ, bK, bL, bT], nil)
375- if ($isInstanceOf(bS, "List[Any]"))
376- then bS
377- else throw(($getType(invoke(this, "calcBoostBulkInternalREADONLY", [(bG + 1), bH, bI, bJ, bK, bL, bT], nil)) + " couldn't be cast to List[Any]"))
379+ let bX = (bQ :+ bV)
380+ let bY = {
381+ let bW = invoke(this, "calcBoostBulkInternalREADONLY", [(bK + 1), bL, bM, bN, bO, bP, bX], nil)
382+ if ($isInstanceOf(bW, "List[Any]"))
383+ then bW
384+ else throw(($getType(bW) + " couldn't be cast to List[Any]"))
378385 }
379- if ((bU == bU))
380- then $Tuple2(nil, bU)
386+ if ((bY == bY))
387+ then $Tuple2(nil, bY)
381388 else throw("Strict value is not equal to itself.")
382389 }
383390
384391
385392
386-@Callable(bu)
387-func calcBoostBulkREADONLY (bN,bO,bP,bQ,bL) = {
388- let bT = invoke(this, "calcBoostBulkInternalREADONLY", [0, bN, bO, bP, bQ, bL, nil], nil)
389- $Tuple2(nil, bT)
393+@Callable(by)
394+func calcBoostBulkREADONLY (bR,bS,bT,bU,bP) = {
395+ let bX = invoke(this, "calcBoostBulkInternalREADONLY", [0, bR, bS, bT, bU, bP, nil], nil)
396+ $Tuple2(nil, bX)
390397 }
391398
392399
393400
394-@Callable(bu)
395-func calcBoostREADONLY (bN,bO,bP,bQ,bL) = {
396- let bV = aW
397- let bW = "empty"
398- let bX = parseIntValue(split(t(aX, ag()), e)[4])
399- let aG = if ((bQ == ""))
400- then bW
401- else bQ
402- let aF = if ((bL == ""))
403- then bW
404- else bL
405- let bY = valueOrElse(getString(aX, al(bL)), bW)
406- let bZ = valueOrElse(getInteger(aX, ap(bY)), 0)
407- let ca = valueOrElse(getInteger(aX, ar(bY)), height)
408- let bm = valueOrElse(getInteger(aX, as(bY)), 0)
409- let cb = (ca + bm)
410- let cc = max([(cb - height), 0])
411- let cd = (bZ + bN)
412- let ce = min([(cc + bO), bX])
413- let cf = B(x(invoke(aX, "gwxUserInfoREADONLY", [aF], nil))[0])
414- let cg = bk(cd, ce, bX)[0]
415- let ch = x(invoke(bV, "calcGwxParamsREADONLY", [cg, height, ce], nil))
416- let ci = (cg - cf)
417- let cj = B(ch[0])
418- let ck = B(ch[1])
419- let aw = toString(B(ch[2]))
420- let cl = aA()
421- let cm = aD()
422- let cn = ((cg * ce) / 2)
423- let co = v(aX, cl)
424- let cp = valueOrElse(getInteger(aX, cm), 0)
425- let cq = 1000
426- let cr = (w(aV, aN()) * cq)
427- let cs = aE(aF, aG)
428- let ct = aH(aG)
429- let cu = aL(aM, cs)
430- let cv = aL(aM, ct)
431- let cw = (cu + bP)
432- let cx = (cv + bP)
433- let bc = if ((aG != bW))
401+@Callable(by)
402+func calcBoostREADONLY (bR,bS,bT,bU,bP) = {
403+ let bZ = ba
404+ let ca = "empty"
405+ let cb = parseIntValue(split(t(bb, ag()), e)[4])
406+ let aG = if ((bU == ""))
407+ then ca
408+ else bU
409+ let aF = if ((bP == ""))
410+ then ca
411+ else bP
412+ let cc = valueOrElse(getString(bb, al(bP)), ca)
413+ let cd = valueOrElse(getInteger(bb, ap(cc)), 0)
414+ let ce = valueOrElse(getInteger(bb, ar(cc)), height)
415+ let bq = valueOrElse(getInteger(bb, as(cc)), 0)
416+ let cf = (ce + bq)
417+ let cg = max([(cf - height), 0])
418+ let ch = (cd + bR)
419+ let ci = min([(cg + bS), cb])
420+ let cj = B(x(invoke(bb, "gwxUserInfoREADONLY", [aF], nil))[0])
421+ let ck = bo(ch, ci, cb)[0]
422+ let cl = x(invoke(bZ, "calcGwxParamsREADONLY", [ck, height, ci], nil))
423+ let cm = (ck - cj)
424+ let cn = B(cl[0])
425+ let co = B(cl[1])
426+ let aw = toString(B(cl[2]))
427+ let cp = aA()
428+ let cq = aD()
429+ let cr = ((ck * ci) / 2)
430+ let cs = v(bb, cp)
431+ let ct = valueOrElse(getInteger(bb, cq), 0)
432+ let cu = 1000
433+ let cv = (w(aZ, aN()) * cu)
434+ let cw = aE(aF, aG)
435+ let cx = aH(aG)
436+ let cy = aL(aM, cw)
437+ let cz = aL(aM, cx)
438+ let cA = (cy + bT)
439+ let cB = (cz + bT)
440+ let bg = if ((aG != ca))
434441 then {
435- let ba = valueOrErrorMessage(getString(aT, R(aG)), ("unsupported lp asset " + aG))
436- getIntegerValue(aT, V(ba))
442+ let be = valueOrErrorMessage(getString(aX, R(aG)), ("unsupported lp asset " + aG))
443+ getIntegerValue(aX, V(be))
437444 }
438445 else 0
439- let cy = fraction(cr, bc, (f * 3))
440- let cz = if ((cx != 0))
441- then fraction(cy, b, cx)
446+ let cC = fraction(cv, bg, (f * 3))
447+ let cD = if ((cB != 0))
448+ then fraction(cC, b, cB)
442449 else 0
443- let cA = fraction(cz, cw, b)
444- let cB = (cy * 2)
445- let cC = fraction(cg, cB, (cp + ci))
446- let cD = min([cC, (cA * 2)])
447- let cE = if ((cA == 0))
450+ let cE = fraction(cD, cA, b)
451+ let cF = (cC * 2)
452+ let cG = fraction(ck, cF, (ct + cm))
453+ let cH = min([cG, (cE * 2)])
454+ let cI = if ((cE == 0))
448455 then (1 * b)
449- else fraction((cD + cA), b, cA)
450- $Tuple2(nil, makeString(["%d%d%s", toString(cg), toString(cE), "d"], e))
456+ else fraction((cH + cE), b, cE)
457+ $Tuple2(nil, makeString(["%d%d%s", toString(ck), toString(cI), "d"], e))
451458 }
452459
453460
454461
455-@Callable(bu)
462+@Callable(by)
456463 func wxEmissionStatsREADONLY () = {
457- let cF = toString(b)
458- let cG = "1"
459- let bd = w(aV, aN())
460- let cH = w(aV, aP())
461- let cI = if ((cH > height))
464+ let cJ = toString(b)
465+ let cK = "1"
466+ let bh = w(aZ, aN())
467+ let cL = w(aZ, aP())
468+ let cM = if ((cL > height))
462469 then 0
463- else (height - cH)
464- let cJ = (1440 * 365)
465- let cK = (201000000 * b)
466- let cL = if ((cI > cJ))
467- then cK
468- else fraction(cK, cI, cJ)
469- let cM = ((bd * cI) + cL)
470- let cN = v(aX, ah())
471- let cO = v(aX, ai())
472- let cP = v(aX, aj())
473- $Tuple2(nil, makeString(["%d%d%d%d", toString(cM), toString(cN), toString(cO), toString(cP)], e))
470+ else (height - cL)
471+ let cN = (1440 * 365)
472+ let cO = (201000000 * b)
473+ let cP = if ((cM > cN))
474+ then cO
475+ else fraction(cO, cM, cN)
476+ let cQ = ((bh * cM) + cP)
477+ let cR = v(bb, ah())
478+ let cS = v(bb, ai())
479+ let cT = v(bb, aj())
480+ $Tuple2(nil, makeString(["%d%d%d%d", toString(cQ), toString(cR), toString(cS), toString(cT)], e))
474481 }
475482
476483
477484
478-@Callable(bu)
479-func poolStatsREADONLY (cQ) = {
480- let cR = addressFromStringValue(t(aT, U(cQ)))
481- let cS = x(invoke(cR, "getPoolConfigWrapperREADONLY", nil, nil))
482- let aZ = fromBase58String(D(cS[j]))
483- let cT = D(cS[k])
484- let cU = D(cS[l])
485- let cV = D(cS[o])
486- let cW = D(cS[p])
487- let cX = parseIntValue(D(cS[m]))
488- let cY = parseIntValue(D(cS[n]))
489- let cZ = valueOrErrorMessage(assetInfo(aZ), (("Asset " + toBase58String(aZ)) + " doesn't exist")).quantity
490- let da = B(invoke(cR, "getAccBalanceWrapperREADONLY", [cT], nil))
491- let db = B(invoke(cR, "getAccBalanceWrapperREADONLY", [cU], nil))
492- let dc = if ((cZ == 0))
485+@Callable(by)
486+func poolStatsREADONLY (cU) = {
487+ let aU = addressFromStringValue(t(aX, U(cU)))
488+ let cV = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
489+ let bd = fromBase58String(D(cV[j]))
490+ let cW = D(cV[k])
491+ let cX = D(cV[l])
492+ let cY = D(cV[o])
493+ let cZ = D(cV[p])
494+ let da = parseIntValue(D(cV[m]))
495+ let db = parseIntValue(D(cV[n]))
496+ let dc = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
497+ let dd = B(invoke(aU, "getAccBalanceWrapperREADONLY", [cW], nil))
498+ let de = B(invoke(aU, "getAccBalanceWrapperREADONLY", [cX], nil))
499+ let df = if ((dc == 0))
493500 then [toString(g), toString(g), toString(g)]
494- else x(invoke(cR, "calcPricesWrapperREADONLY", [da, db, cZ], nil))
495- let dd = 0
496- let de = B(invoke(cR, "fromX18WrapperREADONLY", [dc[1], b], nil))
497- let df = B(invoke(cR, "fromX18WrapperREADONLY", [dc[2], b], nil))
498- let bc = getIntegerValue(aT, V(toString(cR)))
499- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(cZ), toString(dd), toString(de), toString(df), toString(bc)], e))
501+ else x(invoke(aU, "calcPricesWrapperREADONLY", [dd, de, dc], nil))
502+ let dg = 0
503+ let dh = B(invoke(aU, "fromX18WrapperREADONLY", [df[1], b], nil))
504+ let di = B(invoke(aU, "fromX18WrapperREADONLY", [df[2], b], nil))
505+ let bg = getIntegerValue(aX, V(toString(aU)))
506+ let dj = aT(aU)
507+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dd), toString(de), toString(dc), toString(dg), toString(dh), toString(di), toString(bg), toString(dj)], e))
500508 }
501509
502510
503511
504-@Callable(bu)
505-func poolEvaluatePutByAmountAssetREADONLY (cQ,dg) = {
506- let cR = addressFromStringValue(t(aT, U(cQ)))
507- let cS = x(invoke(cR, "getPoolConfigWrapperREADONLY", nil, nil))
508- let aZ = fromBase58String(D(cS[j]))
509- let dh = D(cS[k])
510- let di = fromBase58String(dh)
511- let dj = D(cS[l])
512- let dk = fromBase58String(dj)
513- let cX = parseIntValue(D(cS[m]))
514- let cY = parseIntValue(D(cS[n]))
515- let dl = D(cS[i])
516- let cZ = valueOrErrorMessage(assetInfo(aZ), (("Asset " + toBase58String(aZ)) + " doesn't exist")).quantity
517- let da = B(invoke(cR, "getAccBalanceWrapperREADONLY", [dh], nil))
518- let db = B(invoke(cR, "getAccBalanceWrapperREADONLY", [dj], nil))
519- let dm = parseBigIntValue(D(invoke(cR, "toX18WrapperREADONLY", [da, cX], nil)))
520- let dn = parseBigIntValue(D(invoke(cR, "toX18WrapperREADONLY", [db, cY], nil)))
521- let do = if ((cZ == 0))
512+@Callable(by)
513+func poolEvaluatePutByAmountAssetREADONLY (cU,dk) = {
514+ let aU = addressFromStringValue(t(aX, U(cU)))
515+ let cV = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
516+ let bd = fromBase58String(D(cV[j]))
517+ let dl = D(cV[k])
518+ let dm = fromBase58String(dl)
519+ let dn = D(cV[l])
520+ let do = fromBase58String(dn)
521+ let da = parseIntValue(D(cV[m]))
522+ let db = parseIntValue(D(cV[n]))
523+ let dp = D(cV[i])
524+ let dc = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
525+ let dd = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dl], nil))
526+ let de = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dn], nil))
527+ let dq = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dd, da], nil)))
528+ let dr = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [de, db], nil)))
529+ let ds = if ((dc == 0))
522530 then g
523- else parseBigIntValue(D(invoke(cR, "calcPriceBigIntWrapperREADONLY", [toString(dn), toString(dm)], nil)))
524- let dd = B(invoke(cR, "fromX18WrapperREADONLY", [toString(do), b], nil))
525- let dp = parseBigIntValue(D(invoke(cR, "toX18WrapperREADONLY", [dg, cX], nil)))
526- let dq = fraction(dp, do, d)
527- let dr = B(invoke(cR, "fromX18WrapperREADONLY", [toString(dq), cY], nil))
528- let bT = invoke(cR, "estimatePutOperationWrapperREADONLY", ["", 500000, dg, di, dr, dk, "", true, false], nil)
529- let ds = {
530- let z = bT
531+ else parseBigIntValue(D(invoke(aU, "calcPriceBigIntWrapperREADONLY", [toString(dr), toString(dq)], nil)))
532+ let dg = B(invoke(aU, "fromX18WrapperREADONLY", [toString(ds), b], nil))
533+ let dt = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dk, da], nil)))
534+ let du = fraction(dt, ds, d)
535+ let dv = B(invoke(aU, "fromX18WrapperREADONLY", [toString(du), db], nil))
536+ let bX = invoke(aU, "estimatePutOperationWrapperREADONLY", ["", 500000, dk, dm, dv, do, "", true, false], nil)
537+ let dw = {
538+ let z = bX
531539 if (if (if ($isInstanceOf(z._1, "Int"))
532540 then if ($isInstanceOf(z._3, "Int"))
533541 then if ($isInstanceOf(z._4, "Int"))
540548 then (size(z) == 13)
541549 else false)
542550 then {
543- let dt = z._1
544- let du = z._3
545- let dv = z._4
546- let dw = z._5
547- let dx = z._6
548- $Tuple5(dt, du, dv, dw, dx)
551+ let dx = z._1
552+ let dy = z._3
553+ let dz = z._4
554+ let dA = z._5
555+ let dB = z._6
556+ $Tuple5(dx, dy, dz, dA, dB)
549557 }
550558 else throw("Couldn't cast types")
551559 }
552- let dt = ds._1
553- let du = ds._2
554- let dv = ds._3
555- let dw = ds._4
556- let dx = ds._5
557- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dt), toString(dd), toString(dv), toString(dw), toString(dx), dl, toString(dg), toString(dr)], e))
560+ let dx = dw._1
561+ let dy = dw._2
562+ let dz = dw._3
563+ let dA = dw._4
564+ let dB = dw._5
565+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dx), toString(dg), toString(dz), toString(dA), toString(dB), dp, toString(dk), toString(dv)], e))
558566 }
559567
560568
561569
562-@Callable(bu)
563-func poolEvaluatePutByPriceAssetREADONLY (cQ,dr) = {
564- let cR = addressFromStringValue(t(aT, U(cQ)))
565- let cS = x(invoke(cR, "getPoolConfigWrapperREADONLY", nil, nil))
566- let aZ = fromBase58String(D(cS[j]))
567- let dh = D(cS[k])
568- let di = fromBase58String(dh)
569- let dj = D(cS[l])
570- let dk = fromBase58String(dj)
571- let cX = parseIntValue(D(cS[m]))
572- let cY = parseIntValue(D(cS[n]))
573- let dl = D(cS[i])
574- let cZ = valueOrErrorMessage(assetInfo(aZ), (("Asset " + toBase58String(aZ)) + " doesn't exist")).quantity
575- let dy = B(invoke(cR, "getAccBalanceWrapperREADONLY", [dh], nil))
576- let dz = B(invoke(cR, "getAccBalanceWrapperREADONLY", [dj], nil))
577- let dA = parseBigIntValue(D(invoke(cR, "toX18WrapperREADONLY", [dy, cX], nil)))
578- let dB = parseBigIntValue(D(invoke(cR, "toX18WrapperREADONLY", [dz, cY], nil)))
579- let do = if ((cZ == 0))
570+@Callable(by)
571+func poolEvaluatePutByPriceAssetREADONLY (cU,dv) = {
572+ let aU = addressFromStringValue(t(aX, U(cU)))
573+ let cV = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
574+ let bd = fromBase58String(D(cV[j]))
575+ let dl = D(cV[k])
576+ let dm = fromBase58String(dl)
577+ let dn = D(cV[l])
578+ let do = fromBase58String(dn)
579+ let da = parseIntValue(D(cV[m]))
580+ let db = parseIntValue(D(cV[n]))
581+ let dp = D(cV[i])
582+ let dc = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
583+ let dC = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dl], nil))
584+ let dD = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dn], nil))
585+ let dE = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dC, da], nil)))
586+ let dF = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dD, db], nil)))
587+ let ds = if ((dc == 0))
580588 then g
581- else parseBigIntValue(D(invoke(cR, "calcPriceBigIntWrapperREADONLY", [toString(dB), toString(dA)], nil)))
582- let dd = B(invoke(cR, "fromX18WrapperREADONLY", [toString(do), b], nil))
583- let dq = parseBigIntValue(D(invoke(cR, "toX18WrapperREADONLY", [dr, cY], nil)))
584- let dp = fraction(dq, d, do)
585- let dg = B(invoke(cR, "fromX18WrapperREADONLY", [toString(dp), cX], nil))
586- let bT = invoke(cR, "estimatePutOperationWrapperREADONLY", ["", 500000, dg, di, dr, dk, "", true, false], nil)
587- let dC = {
588- let z = bT
589+ else parseBigIntValue(D(invoke(aU, "calcPriceBigIntWrapperREADONLY", [toString(dF), toString(dE)], nil)))
590+ let dg = B(invoke(aU, "fromX18WrapperREADONLY", [toString(ds), b], nil))
591+ let du = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dv, db], nil)))
592+ let dt = fraction(du, d, ds)
593+ let dk = B(invoke(aU, "fromX18WrapperREADONLY", [toString(dt), da], nil))
594+ let bX = invoke(aU, "estimatePutOperationWrapperREADONLY", ["", 500000, dk, dm, dv, do, "", true, false], nil)
595+ let dG = {
596+ let z = bX
589597 if (if (if ($isInstanceOf(z._1, "Int"))
590598 then if ($isInstanceOf(z._3, "Int"))
591599 then if ($isInstanceOf(z._4, "Int"))
598606 then (size(z) == 13)
599607 else false)
600608 then {
601- let dt = z._1
602- let du = z._3
603- let dv = z._4
604- let dw = z._5
605- let dx = z._6
606- $Tuple5(dt, du, dv, dw, dx)
609+ let dx = z._1
610+ let dy = z._3
611+ let dz = z._4
612+ let dA = z._5
613+ let dB = z._6
614+ $Tuple5(dx, dy, dz, dA, dB)
607615 }
608616 else throw("Couldn't cast types")
609617 }
610- let dt = dC._1
611- let du = dC._2
612- let dv = dC._3
613- let dw = dC._4
614- let dx = dC._5
615- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dt), toString(dd), toString(dv), toString(dw), toString(dx), dl, toString(dg), toString(dr)], e))
618+ let dx = dG._1
619+ let dy = dG._2
620+ let dz = dG._3
621+ let dA = dG._4
622+ let dB = dG._5
623+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dx), toString(dg), toString(dz), toString(dA), toString(dB), dp, toString(dk), toString(dv)], e))
616624 }
617625
618626
619627
620-@Callable(bu)
621-func poolEvaluateGetREADONLY (dD,dE) = {
622- let cR = addressFromStringValue(t(aT, U(dD)))
623- let bT = invoke(cR, "estimateGetOperationWrapperREADONLY", ["", dD, dE, toString(cR)], nil)
624- let dF = {
625- let z = bT
628+@Callable(by)
629+func poolEvaluateGetREADONLY (dH,dI) = {
630+ let aU = addressFromStringValue(t(aX, U(dH)))
631+ let bX = invoke(aU, "estimateGetOperationWrapperREADONLY", ["", dH, dI, toString(aU)], nil)
632+ let dJ = {
633+ let z = bX
626634 if (if (if ($isInstanceOf(z._1, "Int"))
627635 then if ($isInstanceOf(z._2, "Int"))
628636 then if ($isInstanceOf(z._5, "Int"))
639647 then (size(z) == 10)
640648 else false)
641649 then {
642- let dG = z._1
643- let dH = z._2
644- let dv = z._5
645- let dw = z._6
646- let dx = z._7
647- let dd = z._8
648- let dl = z._9
649- $Tuple7(dG, dH, dv, dw, dx, dd, dl)
650+ let dK = z._1
651+ let dL = z._2
652+ let dz = z._5
653+ let dA = z._6
654+ let dB = z._7
655+ let dg = z._8
656+ let dp = z._9
657+ $Tuple7(dK, dL, dz, dA, dB, dg, dp)
650658 }
651659 else throw("Couldn't cast types")
652660 }
653- let dG = dF._1
654- let dH = dF._2
655- let dv = dF._3
656- let dw = dF._4
657- let dx = dF._5
658- let dd = dF._6
659- let dl = dF._7
660- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dG), toString(dH), toString(dv), toString(dw), toString(dx), dd, dl], e))
661+ let dK = dJ._1
662+ let dL = dJ._2
663+ let dz = dJ._3
664+ let dA = dJ._4
665+ let dB = dJ._5
666+ let dg = dJ._6
667+ let dp = dJ._7
668+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dK), toString(dL), toString(dz), toString(dA), toString(dB), dg, dp], e))
661669 }
662670
663671
664672
665-@Callable(bu)
673+@Callable(by)
666674 func gwxUserInfoREADONLY (am) = {
667- let dI = x(invoke(aX, "gwxUserInfoREADONLY", [am], nil))
668- let dJ = B(dI[0])
669- $Tuple2(nil, makeString(["%d", toString(dJ)], e))
675+ let dM = x(invoke(bb, "gwxUserInfoREADONLY", [am], nil))
676+ let dN = B(dM[0])
677+ $Tuple2(nil, makeString(["%d", toString(dN)], e))
670678 }
671679
672680
673681
674-@Callable(bu)
675-func unstakeAndGetOneTkn (cR,dK,dL,dM,dN,dO,dP) = {
676- let bU = invoke(addressFromStringValue(value(getString(addressFromStringValue(cR), aS()))), "unstakeAndGetOneTkn", [dK, dL, dM, dN, dO, dP], nil)
677- if ((bU == bU))
682+@Callable(by)
683+func unstakeAndGetOneTknV2 (aU,dO,dP,dQ) = {
684+ let bY = invoke(addressFromStringValue(aU), "unstakeAndGetOneTknV2", [dO, dP, dQ], nil)
685+ if ((bY == bY))
678686 then $Tuple2(nil, unit)
679687 else throw("Strict value is not equal to itself.")
680688 }
681689
682690
683691
684-@Callable(bu)
685-func setManager (dQ) = {
686- let by = bt(bu)
687- if ((by == by))
692+@Callable(by)
693+func setManager (dR) = {
694+ let bC = bx(by)
695+ if ((bC == bC))
688696 then {
689- let dR = fromBase58String(dQ)
690- if ((dR == dR))
691- then [StringEntry(H(), dQ)]
697+ let dS = fromBase58String(dR)
698+ if ((dS == dS))
699+ then [StringEntry(H(), dR)]
692700 else throw("Strict value is not equal to itself.")
693701 }
694702 else throw("Strict value is not equal to itself.")
696704
697705
698706
699-@Callable(bu)
707+@Callable(by)
700708 func confirmManager () = {
701- let dS = bs()
702- let dT = if (isDefined(dS))
709+ let dT = bw()
710+ let dU = if (isDefined(dT))
703711 then true
704712 else throw("No pending manager")
705- if ((dT == dT))
713+ if ((dU == dU))
706714 then {
707- let dU = if ((bu.callerPublicKey == value(dS)))
715+ let dV = if ((by.callerPublicKey == value(dT)))
708716 then true
709717 else throw("You are not pending manager")
710- if ((dU == dU))
711- then [StringEntry(G(), toBase58String(value(dS))), DeleteEntry(H())]
718+ if ((dV == dV))
719+ then [StringEntry(G(), toBase58String(value(dT))), DeleteEntry(H())]
712720 else throw("Strict value is not equal to itself.")
713721 }
714722 else throw("Strict value is not equal to itself.")
715723 }
716724
717725
718-@Verifier(dV)
719-func dW () = {
720- let dX = {
721- let z = bq()
726+@Verifier(dW)
727+func dX () = {
728+ let dY = {
729+ let z = bu()
722730 if ($isInstanceOf(z, "ByteVector"))
723731 then {
724- let bw = z
725- bw
732+ let bA = z
733+ bA
726734 }
727735 else if ($isInstanceOf(z, "Unit"))
728- then dV.senderPublicKey
736+ then dW.senderPublicKey
729737 else throw("Match error")
730738 }
731- sigVerify(dV.bodyBytes, dV.proofs[0], dX)
739+ sigVerify(dW.bodyBytes, dW.proofs[0], dY)
732740 }
733741
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 = 1
1919
2020 let i = 2
2121
2222 let j = 3
2323
2424 let k = 4
2525
2626 let l = 5
2727
2828 let m = 6
2929
3030 let n = 7
3131
3232 let o = 8
3333
3434 let p = 9
3535
3636 let q = 10
3737
3838 func r (s) = valueOrErrorMessage(getString(s), (("mandatory this." + s) + " is not defined"))
3939
4040
4141 func t (u,s) = valueOrErrorMessage(getString(u, s), (((("mandatory " + toString(u)) + ".") + s) + " is not defined"))
4242
4343
4444 func v (u,s) = valueOrElse(getInteger(u, s), 0)
4545
4646
4747 func w (u,s) = valueOrErrorMessage(getInteger(u, s), (("mandatory this." + s) + " is not defined"))
4848
4949
5050 func x (y) = {
5151 let z = y
5252 if ($isInstanceOf(z, "List[Any]"))
5353 then {
5454 let A = z
5555 A
5656 }
5757 else throw("fail to cast into List[Any]")
5858 }
5959
6060
6161 func B (y) = {
6262 let z = y
6363 if ($isInstanceOf(z, "Int"))
6464 then {
6565 let C = z
6666 C
6767 }
6868 else throw("fail to cast into Int")
6969 }
7070
7171
7272 func D (y) = {
7373 let z = y
7474 if ($isInstanceOf(z, "String"))
7575 then {
7676 let E = z
7777 E
7878 }
7979 else throw("fail to cast into String")
8080 }
8181
8282
8383 func F () = "%s%s__config__factoryAddress"
8484
8585
8686 func G () = "%s__managerPublicKey"
8787
8888
8989 func H () = "%s__pendingManagerPublicKey"
9090
9191
9292 let I = 1
9393
9494 let J = 2
9595
9696 let K = 3
9797
9898 let L = 4
9999
100100 let M = 5
101101
102102 let N = 6
103103
104104 let O = 7
105105
106106 let P = 8
107107
108108 func Q () = "%s__factoryConfig"
109109
110110
111111 func R (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], e)
112112
113113
114114 func T () = "%s__lpTokensList"
115115
116116
117117 func U (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], e)
118118
119119
120120 func V (W) = makeString(["%s%s", "poolWeight", W], e)
121121
122122
123123 func X () = addressFromStringValue(r(F()))
124124
125125
126126 func Y () = split(valueOrElse(getString(X(), T()), ""), e)
127127
128128
129129 func Z (aa) = split(t(aa, Q()), e)
130130
131131
132132 func ab (ac) = addressFromStringValue(ac[J])
133133
134134
135135 func ad (ac) = addressFromStringValue(ac[M])
136136
137137
138138 func ae (ac) = addressFromStringValue(ac[I])
139139
140140
141141 func af (ac) = addressFromStringValue(ac[P])
142142
143143
144144 func ag () = "%s__config"
145145
146146
147147 func ah () = "%s%s__stats__activeTotalLocked"
148148
149149
150150 func ai () = "%s%s__stats__locksDurationSumInBlocks"
151151
152152
153153 func aj () = "%s%s__stats__locksCount"
154154
155155
156156 func ak () = "%s%s__stats__activeUsersCount"
157157
158158
159159 func al (am) = makeString(["%s%s%s__mapping__user2num", am], e)
160160
161161
162162 func an (ao) = makeString(["%s%s%s__mapping__num2user", ao], e)
163163
164164
165165 func ap (aq) = makeString(["%s%d%s__paramByUserNum", aq, "amount"], e)
166166
167167
168168 func ar (aq) = makeString(["%s%d%s__paramByUserNum", aq, "start"], e)
169169
170170
171171 func as (aq) = makeString(["%s%d%s__paramByUserNum", aq, "duration"], e)
172172
173173
174174 func at (aq) = makeString(["%s%d%s__paramByUserNum", aq, "k"], e)
175175
176176
177177 func au (aq) = makeString(["%s%d%s__paramByUserNum", aq, "b"], e)
178178
179179
180180 func av (aq,aw) = makeString(["%s%d%s%d__paramByPeriod", aq, "k", aw], e)
181181
182182
183183 func ax (aq,aw) = makeString(["%s%d%s%d__paramByPeriod", aq, "b", aw], e)
184184
185185
186186 func ay (aq) = makeString(["%s%d__userBoostEmissionLastInt", aq], e)
187187
188188
189189 func az (aq) = makeString(["%s%d__maxBoostInt", aq], e)
190190
191191
192192 func aA () = "%s%s__maxBoostInt__total"
193193
194194
195195 func aB (aq) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aq], e)
196196
197197
198198 func aC (aq) = makeString(["%s%d__userBoostClaimed", aq], e)
199199
200200
201201 func aD () = "%s%s__gwxCached__total"
202202
203203
204204 func aE (aF,aG) = makeString(["%s%s%s__staked", aF, aG], e)
205205
206206
207207 func aH (aG) = ("%s%s%s__staked__total__" + aG)
208208
209209
210210 func aI (aG,aF) = makeString(["%s%s%s__claimed", aF, aG], e)
211211
212212
213213 func aJ (aG,aF) = makeString(["%s%s%s__claimedMinReward", aF, aG], e)
214214
215215
216216 func aK (aG,aF) = makeString(["%s%s%s__claimedBoostReward", aF, aG], e)
217217
218218
219219 func aL (aM,s) = valueOrElse(getInteger(aM, s), 0)
220220
221221
222222 func aN () = "%s%s__ratePerBlock__current"
223223
224224
225225 func aO () = "%s%s__ratePerBlockMax__current"
226226
227227
228228 func aP () = "%s%s__emission__startBlock"
229229
230230
231231 func aQ () = "%s%s__emission__duration"
232232
233233
234234 func aR () = "%s%s__emission__endBlock"
235235
236236
237237 func aS () = "%s__addonAddr"
238238
239239
240-let aT = X()
241-
242-let aU = Z(aT)
243-
244-let aV = ad(aU)
245-
246-let aM = ae(aU)
247-
248-let aW = af(aU)
249-
250-let aX = ab(aU)
251-
252-func aY (aZ) = {
253- let ba = t(aT, U(aZ))
254- let bb = b
255- let bc = getIntegerValue(aT, V(ba))
256- let bd = w(aV, aN())
257- let be = w(aV, aO())
258- let bf = 3
259- let bg = (fraction(bd, bc, bb) / bf)
260- let bh = fraction(be, bc, bb)
261- let bi = (bf * b)
262- let bj = v(aM, aH(aZ))
263-[bg, bi, bj]
240+func aT (aU) = {
241+ let aV = fraction(5, b, 10000)
242+ let aW = "%s__fee"
243+ valueOrElse(getInteger(aU, aW), aV)
264244 }
265245
266246
267-func bk (bl,bm,bn) = {
268- let bo = fraction(bm, b, bn)
269- let bp = fraction(bl, bo, b)
270-[bp]
247+let aX = X()
248+
249+let aY = Z(aX)
250+
251+let aZ = ad(aY)
252+
253+let aM = ae(aY)
254+
255+let ba = af(aY)
256+
257+let bb = ab(aY)
258+
259+func bc (bd) = {
260+ let be = t(aX, U(bd))
261+ let bf = b
262+ let bg = getIntegerValue(aX, V(be))
263+ let bh = w(aZ, aN())
264+ let bi = w(aZ, aO())
265+ let bj = 3
266+ let bk = (fraction(bh, bg, bf) / bj)
267+ let bl = fraction(bi, bg, bf)
268+ let bm = (bj * b)
269+ let bn = v(aM, aH(bd))
270+[bk, bm, bn]
271271 }
272272
273273
274-func bq () = {
274+func bo (bp,bq,br) = {
275+ let bs = fraction(bq, b, br)
276+ let bt = fraction(bp, bs, b)
277+[bt]
278+ }
279+
280+
281+func bu () = {
275282 let z = getString(G())
276283 if ($isInstanceOf(z, "String"))
277284 then {
278- let br = z
279- fromBase58String(br)
285+ let bv = z
286+ fromBase58String(bv)
280287 }
281288 else if ($isInstanceOf(z, "Unit"))
282289 then unit
283290 else throw("Match error")
284291 }
285292
286293
287-func bs () = {
294+func bw () = {
288295 let z = getString(H())
289296 if ($isInstanceOf(z, "String"))
290297 then {
291- let br = z
292- fromBase58String(br)
298+ let bv = z
299+ fromBase58String(bv)
293300 }
294301 else if ($isInstanceOf(z, "Unit"))
295302 then unit
296303 else throw("Match error")
297304 }
298305
299306
300-func bt (bu) = {
301- let bv = throw("Permission denied")
302- let z = bq()
307+func bx (by) = {
308+ let bz = throw("Permission denied")
309+ let z = bu()
303310 if ($isInstanceOf(z, "ByteVector"))
304311 then {
305- let bw = z
306- if ((bu.callerPublicKey == bw))
312+ let bA = z
313+ if ((by.callerPublicKey == bA))
307314 then true
308- else bv
315+ else bz
309316 }
310317 else if ($isInstanceOf(z, "Unit"))
311- then if ((bu.caller == this))
318+ then if ((by.caller == this))
312319 then true
313- else bv
320+ else bz
314321 else throw("Match error")
315322 }
316323
317324
318-@Callable(bu)
319-func constructor (bx) = {
320- let by = bt(bu)
321- if ((by == by))
322- then [StringEntry(F(), bx)]
325+@Callable(by)
326+func constructor (bB) = {
327+ let bC = bx(by)
328+ if ((bC == bC))
329+ then [StringEntry(F(), bB)]
323330 else throw("Strict value is not equal to itself.")
324331 }
325332
326333
327334
328-@Callable(bu)
329-func currentRewardRateREADONLY (aZ) = {
330- let bz = aY(aZ)
331- let bd = bz[0]
332- let bi = bz[1]
333- let bj = bz[2]
334- $Tuple2(nil, makeString(["%d%d%d", toString(bd), toString(bi), toString(bj)], e))
335+@Callable(by)
336+func currentRewardRateREADONLY (bd) = {
337+ let bD = bc(bd)
338+ let bh = bD[0]
339+ let bm = bD[1]
340+ let bn = bD[2]
341+ $Tuple2(nil, makeString(["%d%d%d", toString(bh), toString(bm), toString(bn)], e))
335342 }
336343
337344
338345
339-@Callable(bu)
340-func currentUserRewardRateREADONLY (aZ,am) = {
341- let bz = aY(aZ)
342- let bd = bz[0]
343- let bi = bz[1]
344- let bj = bz[2]
345- let bA = v(aM, aE(am, aZ))
346- let bB = split(D(invoke(aM, "claimWxREADONLY", [aZ, am], nil)), e)
347- let bC = valueOrErrorMessage(parseInt(bB[5]), "couldn't parse minRewardPart")
348- let bD = valueOrErrorMessage(parseInt(bB[6]), "couldn't parse boostRewardPart")
349- let bE = bB[7]
350- let bF = if ((bD == 0))
346+@Callable(by)
347+func currentUserRewardRateREADONLY (bd,am) = {
348+ let bD = bc(bd)
349+ let bh = bD[0]
350+ let bm = bD[1]
351+ let bn = bD[2]
352+ let bE = v(aM, aE(am, bd))
353+ let bF = split(D(invoke(aM, "claimWxREADONLY", [bd, am], nil)), e)
354+ let bG = valueOrErrorMessage(parseInt(bF[5]), "couldn't parse minRewardPart")
355+ let bH = valueOrErrorMessage(parseInt(bF[6]), "couldn't parse boostRewardPart")
356+ let bI = bF[7]
357+ let bJ = if ((bH == 0))
351358 then (1 * b)
352- else fraction((bC + bD), b, bC)
353- $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bd), toString(bi), toString(bj), toString(bA), toString(bF), bE], e))
359+ else fraction((bG + bH), b, bG)
360+ $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bh), toString(bm), toString(bn), toString(bE), toString(bJ), bI], e))
354361 }
355362
356363
357364
358-@Callable(bu)
359-func calcBoostBulkInternalREADONLY (bG,bH,bI,bJ,bK,bL,bM) = if ((bG == size(bH)))
360- then $Tuple2(nil, bM)
365+@Callable(by)
366+func calcBoostBulkInternalREADONLY (bK,bL,bM,bN,bO,bP,bQ) = if ((bK == size(bL)))
367+ then $Tuple2(nil, bQ)
361368 else {
362- let bN = bH[bG]
363- let bO = bI[bG]
364- let bP = bJ[bG]
365- let bQ = bK[bG]
366- let bR = {
367- let bS = invoke(this, "calcBoostREADONLY", [bN, bO, bP, bQ, bL], nil)
368- if ($isInstanceOf(bS, "String"))
369- then bS
370- else throw(($getType(invoke(this, "calcBoostREADONLY", [bN, bO, bP, bQ, bL], nil)) + " couldn't be cast to String"))
369+ let bR = bL[bK]
370+ let bS = bM[bK]
371+ let bT = bN[bK]
372+ let bU = bO[bK]
373+ let bV = {
374+ let bW = invoke(this, "calcBoostREADONLY", [bR, bS, bT, bU, bP], nil)
375+ if ($isInstanceOf(bW, "String"))
376+ then bW
377+ else throw(($getType(bW) + " couldn't be cast to String"))
371378 }
372- let bT = (bM :+ bR)
373- let bU = {
374- let bS = invoke(this, "calcBoostBulkInternalREADONLY", [(bG + 1), bH, bI, bJ, bK, bL, bT], nil)
375- if ($isInstanceOf(bS, "List[Any]"))
376- then bS
377- else throw(($getType(invoke(this, "calcBoostBulkInternalREADONLY", [(bG + 1), bH, bI, bJ, bK, bL, bT], nil)) + " couldn't be cast to List[Any]"))
379+ let bX = (bQ :+ bV)
380+ let bY = {
381+ let bW = invoke(this, "calcBoostBulkInternalREADONLY", [(bK + 1), bL, bM, bN, bO, bP, bX], nil)
382+ if ($isInstanceOf(bW, "List[Any]"))
383+ then bW
384+ else throw(($getType(bW) + " couldn't be cast to List[Any]"))
378385 }
379- if ((bU == bU))
380- then $Tuple2(nil, bU)
386+ if ((bY == bY))
387+ then $Tuple2(nil, bY)
381388 else throw("Strict value is not equal to itself.")
382389 }
383390
384391
385392
386-@Callable(bu)
387-func calcBoostBulkREADONLY (bN,bO,bP,bQ,bL) = {
388- let bT = invoke(this, "calcBoostBulkInternalREADONLY", [0, bN, bO, bP, bQ, bL, nil], nil)
389- $Tuple2(nil, bT)
393+@Callable(by)
394+func calcBoostBulkREADONLY (bR,bS,bT,bU,bP) = {
395+ let bX = invoke(this, "calcBoostBulkInternalREADONLY", [0, bR, bS, bT, bU, bP, nil], nil)
396+ $Tuple2(nil, bX)
390397 }
391398
392399
393400
394-@Callable(bu)
395-func calcBoostREADONLY (bN,bO,bP,bQ,bL) = {
396- let bV = aW
397- let bW = "empty"
398- let bX = parseIntValue(split(t(aX, ag()), e)[4])
399- let aG = if ((bQ == ""))
400- then bW
401- else bQ
402- let aF = if ((bL == ""))
403- then bW
404- else bL
405- let bY = valueOrElse(getString(aX, al(bL)), bW)
406- let bZ = valueOrElse(getInteger(aX, ap(bY)), 0)
407- let ca = valueOrElse(getInteger(aX, ar(bY)), height)
408- let bm = valueOrElse(getInteger(aX, as(bY)), 0)
409- let cb = (ca + bm)
410- let cc = max([(cb - height), 0])
411- let cd = (bZ + bN)
412- let ce = min([(cc + bO), bX])
413- let cf = B(x(invoke(aX, "gwxUserInfoREADONLY", [aF], nil))[0])
414- let cg = bk(cd, ce, bX)[0]
415- let ch = x(invoke(bV, "calcGwxParamsREADONLY", [cg, height, ce], nil))
416- let ci = (cg - cf)
417- let cj = B(ch[0])
418- let ck = B(ch[1])
419- let aw = toString(B(ch[2]))
420- let cl = aA()
421- let cm = aD()
422- let cn = ((cg * ce) / 2)
423- let co = v(aX, cl)
424- let cp = valueOrElse(getInteger(aX, cm), 0)
425- let cq = 1000
426- let cr = (w(aV, aN()) * cq)
427- let cs = aE(aF, aG)
428- let ct = aH(aG)
429- let cu = aL(aM, cs)
430- let cv = aL(aM, ct)
431- let cw = (cu + bP)
432- let cx = (cv + bP)
433- let bc = if ((aG != bW))
401+@Callable(by)
402+func calcBoostREADONLY (bR,bS,bT,bU,bP) = {
403+ let bZ = ba
404+ let ca = "empty"
405+ let cb = parseIntValue(split(t(bb, ag()), e)[4])
406+ let aG = if ((bU == ""))
407+ then ca
408+ else bU
409+ let aF = if ((bP == ""))
410+ then ca
411+ else bP
412+ let cc = valueOrElse(getString(bb, al(bP)), ca)
413+ let cd = valueOrElse(getInteger(bb, ap(cc)), 0)
414+ let ce = valueOrElse(getInteger(bb, ar(cc)), height)
415+ let bq = valueOrElse(getInteger(bb, as(cc)), 0)
416+ let cf = (ce + bq)
417+ let cg = max([(cf - height), 0])
418+ let ch = (cd + bR)
419+ let ci = min([(cg + bS), cb])
420+ let cj = B(x(invoke(bb, "gwxUserInfoREADONLY", [aF], nil))[0])
421+ let ck = bo(ch, ci, cb)[0]
422+ let cl = x(invoke(bZ, "calcGwxParamsREADONLY", [ck, height, ci], nil))
423+ let cm = (ck - cj)
424+ let cn = B(cl[0])
425+ let co = B(cl[1])
426+ let aw = toString(B(cl[2]))
427+ let cp = aA()
428+ let cq = aD()
429+ let cr = ((ck * ci) / 2)
430+ let cs = v(bb, cp)
431+ let ct = valueOrElse(getInteger(bb, cq), 0)
432+ let cu = 1000
433+ let cv = (w(aZ, aN()) * cu)
434+ let cw = aE(aF, aG)
435+ let cx = aH(aG)
436+ let cy = aL(aM, cw)
437+ let cz = aL(aM, cx)
438+ let cA = (cy + bT)
439+ let cB = (cz + bT)
440+ let bg = if ((aG != ca))
434441 then {
435- let ba = valueOrErrorMessage(getString(aT, R(aG)), ("unsupported lp asset " + aG))
436- getIntegerValue(aT, V(ba))
442+ let be = valueOrErrorMessage(getString(aX, R(aG)), ("unsupported lp asset " + aG))
443+ getIntegerValue(aX, V(be))
437444 }
438445 else 0
439- let cy = fraction(cr, bc, (f * 3))
440- let cz = if ((cx != 0))
441- then fraction(cy, b, cx)
446+ let cC = fraction(cv, bg, (f * 3))
447+ let cD = if ((cB != 0))
448+ then fraction(cC, b, cB)
442449 else 0
443- let cA = fraction(cz, cw, b)
444- let cB = (cy * 2)
445- let cC = fraction(cg, cB, (cp + ci))
446- let cD = min([cC, (cA * 2)])
447- let cE = if ((cA == 0))
450+ let cE = fraction(cD, cA, b)
451+ let cF = (cC * 2)
452+ let cG = fraction(ck, cF, (ct + cm))
453+ let cH = min([cG, (cE * 2)])
454+ let cI = if ((cE == 0))
448455 then (1 * b)
449- else fraction((cD + cA), b, cA)
450- $Tuple2(nil, makeString(["%d%d%s", toString(cg), toString(cE), "d"], e))
456+ else fraction((cH + cE), b, cE)
457+ $Tuple2(nil, makeString(["%d%d%s", toString(ck), toString(cI), "d"], e))
451458 }
452459
453460
454461
455-@Callable(bu)
462+@Callable(by)
456463 func wxEmissionStatsREADONLY () = {
457- let cF = toString(b)
458- let cG = "1"
459- let bd = w(aV, aN())
460- let cH = w(aV, aP())
461- let cI = if ((cH > height))
464+ let cJ = toString(b)
465+ let cK = "1"
466+ let bh = w(aZ, aN())
467+ let cL = w(aZ, aP())
468+ let cM = if ((cL > height))
462469 then 0
463- else (height - cH)
464- let cJ = (1440 * 365)
465- let cK = (201000000 * b)
466- let cL = if ((cI > cJ))
467- then cK
468- else fraction(cK, cI, cJ)
469- let cM = ((bd * cI) + cL)
470- let cN = v(aX, ah())
471- let cO = v(aX, ai())
472- let cP = v(aX, aj())
473- $Tuple2(nil, makeString(["%d%d%d%d", toString(cM), toString(cN), toString(cO), toString(cP)], e))
470+ else (height - cL)
471+ let cN = (1440 * 365)
472+ let cO = (201000000 * b)
473+ let cP = if ((cM > cN))
474+ then cO
475+ else fraction(cO, cM, cN)
476+ let cQ = ((bh * cM) + cP)
477+ let cR = v(bb, ah())
478+ let cS = v(bb, ai())
479+ let cT = v(bb, aj())
480+ $Tuple2(nil, makeString(["%d%d%d%d", toString(cQ), toString(cR), toString(cS), toString(cT)], e))
474481 }
475482
476483
477484
478-@Callable(bu)
479-func poolStatsREADONLY (cQ) = {
480- let cR = addressFromStringValue(t(aT, U(cQ)))
481- let cS = x(invoke(cR, "getPoolConfigWrapperREADONLY", nil, nil))
482- let aZ = fromBase58String(D(cS[j]))
483- let cT = D(cS[k])
484- let cU = D(cS[l])
485- let cV = D(cS[o])
486- let cW = D(cS[p])
487- let cX = parseIntValue(D(cS[m]))
488- let cY = parseIntValue(D(cS[n]))
489- let cZ = valueOrErrorMessage(assetInfo(aZ), (("Asset " + toBase58String(aZ)) + " doesn't exist")).quantity
490- let da = B(invoke(cR, "getAccBalanceWrapperREADONLY", [cT], nil))
491- let db = B(invoke(cR, "getAccBalanceWrapperREADONLY", [cU], nil))
492- let dc = if ((cZ == 0))
485+@Callable(by)
486+func poolStatsREADONLY (cU) = {
487+ let aU = addressFromStringValue(t(aX, U(cU)))
488+ let cV = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
489+ let bd = fromBase58String(D(cV[j]))
490+ let cW = D(cV[k])
491+ let cX = D(cV[l])
492+ let cY = D(cV[o])
493+ let cZ = D(cV[p])
494+ let da = parseIntValue(D(cV[m]))
495+ let db = parseIntValue(D(cV[n]))
496+ let dc = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
497+ let dd = B(invoke(aU, "getAccBalanceWrapperREADONLY", [cW], nil))
498+ let de = B(invoke(aU, "getAccBalanceWrapperREADONLY", [cX], nil))
499+ let df = if ((dc == 0))
493500 then [toString(g), toString(g), toString(g)]
494- else x(invoke(cR, "calcPricesWrapperREADONLY", [da, db, cZ], nil))
495- let dd = 0
496- let de = B(invoke(cR, "fromX18WrapperREADONLY", [dc[1], b], nil))
497- let df = B(invoke(cR, "fromX18WrapperREADONLY", [dc[2], b], nil))
498- let bc = getIntegerValue(aT, V(toString(cR)))
499- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(cZ), toString(dd), toString(de), toString(df), toString(bc)], e))
501+ else x(invoke(aU, "calcPricesWrapperREADONLY", [dd, de, dc], nil))
502+ let dg = 0
503+ let dh = B(invoke(aU, "fromX18WrapperREADONLY", [df[1], b], nil))
504+ let di = B(invoke(aU, "fromX18WrapperREADONLY", [df[2], b], nil))
505+ let bg = getIntegerValue(aX, V(toString(aU)))
506+ let dj = aT(aU)
507+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dd), toString(de), toString(dc), toString(dg), toString(dh), toString(di), toString(bg), toString(dj)], e))
500508 }
501509
502510
503511
504-@Callable(bu)
505-func poolEvaluatePutByAmountAssetREADONLY (cQ,dg) = {
506- let cR = addressFromStringValue(t(aT, U(cQ)))
507- let cS = x(invoke(cR, "getPoolConfigWrapperREADONLY", nil, nil))
508- let aZ = fromBase58String(D(cS[j]))
509- let dh = D(cS[k])
510- let di = fromBase58String(dh)
511- let dj = D(cS[l])
512- let dk = fromBase58String(dj)
513- let cX = parseIntValue(D(cS[m]))
514- let cY = parseIntValue(D(cS[n]))
515- let dl = D(cS[i])
516- let cZ = valueOrErrorMessage(assetInfo(aZ), (("Asset " + toBase58String(aZ)) + " doesn't exist")).quantity
517- let da = B(invoke(cR, "getAccBalanceWrapperREADONLY", [dh], nil))
518- let db = B(invoke(cR, "getAccBalanceWrapperREADONLY", [dj], nil))
519- let dm = parseBigIntValue(D(invoke(cR, "toX18WrapperREADONLY", [da, cX], nil)))
520- let dn = parseBigIntValue(D(invoke(cR, "toX18WrapperREADONLY", [db, cY], nil)))
521- let do = if ((cZ == 0))
512+@Callable(by)
513+func poolEvaluatePutByAmountAssetREADONLY (cU,dk) = {
514+ let aU = addressFromStringValue(t(aX, U(cU)))
515+ let cV = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
516+ let bd = fromBase58String(D(cV[j]))
517+ let dl = D(cV[k])
518+ let dm = fromBase58String(dl)
519+ let dn = D(cV[l])
520+ let do = fromBase58String(dn)
521+ let da = parseIntValue(D(cV[m]))
522+ let db = parseIntValue(D(cV[n]))
523+ let dp = D(cV[i])
524+ let dc = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
525+ let dd = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dl], nil))
526+ let de = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dn], nil))
527+ let dq = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dd, da], nil)))
528+ let dr = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [de, db], nil)))
529+ let ds = if ((dc == 0))
522530 then g
523- else parseBigIntValue(D(invoke(cR, "calcPriceBigIntWrapperREADONLY", [toString(dn), toString(dm)], nil)))
524- let dd = B(invoke(cR, "fromX18WrapperREADONLY", [toString(do), b], nil))
525- let dp = parseBigIntValue(D(invoke(cR, "toX18WrapperREADONLY", [dg, cX], nil)))
526- let dq = fraction(dp, do, d)
527- let dr = B(invoke(cR, "fromX18WrapperREADONLY", [toString(dq), cY], nil))
528- let bT = invoke(cR, "estimatePutOperationWrapperREADONLY", ["", 500000, dg, di, dr, dk, "", true, false], nil)
529- let ds = {
530- let z = bT
531+ else parseBigIntValue(D(invoke(aU, "calcPriceBigIntWrapperREADONLY", [toString(dr), toString(dq)], nil)))
532+ let dg = B(invoke(aU, "fromX18WrapperREADONLY", [toString(ds), b], nil))
533+ let dt = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dk, da], nil)))
534+ let du = fraction(dt, ds, d)
535+ let dv = B(invoke(aU, "fromX18WrapperREADONLY", [toString(du), db], nil))
536+ let bX = invoke(aU, "estimatePutOperationWrapperREADONLY", ["", 500000, dk, dm, dv, do, "", true, false], nil)
537+ let dw = {
538+ let z = bX
531539 if (if (if ($isInstanceOf(z._1, "Int"))
532540 then if ($isInstanceOf(z._3, "Int"))
533541 then if ($isInstanceOf(z._4, "Int"))
534542 then if ($isInstanceOf(z._5, "Int"))
535543 then $isInstanceOf(z._6, "Int")
536544 else false
537545 else false
538546 else false
539547 else false)
540548 then (size(z) == 13)
541549 else false)
542550 then {
543- let dt = z._1
544- let du = z._3
545- let dv = z._4
546- let dw = z._5
547- let dx = z._6
548- $Tuple5(dt, du, dv, dw, dx)
551+ let dx = z._1
552+ let dy = z._3
553+ let dz = z._4
554+ let dA = z._5
555+ let dB = z._6
556+ $Tuple5(dx, dy, dz, dA, dB)
549557 }
550558 else throw("Couldn't cast types")
551559 }
552- let dt = ds._1
553- let du = ds._2
554- let dv = ds._3
555- let dw = ds._4
556- let dx = ds._5
557- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dt), toString(dd), toString(dv), toString(dw), toString(dx), dl, toString(dg), toString(dr)], e))
560+ let dx = dw._1
561+ let dy = dw._2
562+ let dz = dw._3
563+ let dA = dw._4
564+ let dB = dw._5
565+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dx), toString(dg), toString(dz), toString(dA), toString(dB), dp, toString(dk), toString(dv)], e))
558566 }
559567
560568
561569
562-@Callable(bu)
563-func poolEvaluatePutByPriceAssetREADONLY (cQ,dr) = {
564- let cR = addressFromStringValue(t(aT, U(cQ)))
565- let cS = x(invoke(cR, "getPoolConfigWrapperREADONLY", nil, nil))
566- let aZ = fromBase58String(D(cS[j]))
567- let dh = D(cS[k])
568- let di = fromBase58String(dh)
569- let dj = D(cS[l])
570- let dk = fromBase58String(dj)
571- let cX = parseIntValue(D(cS[m]))
572- let cY = parseIntValue(D(cS[n]))
573- let dl = D(cS[i])
574- let cZ = valueOrErrorMessage(assetInfo(aZ), (("Asset " + toBase58String(aZ)) + " doesn't exist")).quantity
575- let dy = B(invoke(cR, "getAccBalanceWrapperREADONLY", [dh], nil))
576- let dz = B(invoke(cR, "getAccBalanceWrapperREADONLY", [dj], nil))
577- let dA = parseBigIntValue(D(invoke(cR, "toX18WrapperREADONLY", [dy, cX], nil)))
578- let dB = parseBigIntValue(D(invoke(cR, "toX18WrapperREADONLY", [dz, cY], nil)))
579- let do = if ((cZ == 0))
570+@Callable(by)
571+func poolEvaluatePutByPriceAssetREADONLY (cU,dv) = {
572+ let aU = addressFromStringValue(t(aX, U(cU)))
573+ let cV = x(invoke(aU, "getPoolConfigWrapperREADONLY", nil, nil))
574+ let bd = fromBase58String(D(cV[j]))
575+ let dl = D(cV[k])
576+ let dm = fromBase58String(dl)
577+ let dn = D(cV[l])
578+ let do = fromBase58String(dn)
579+ let da = parseIntValue(D(cV[m]))
580+ let db = parseIntValue(D(cV[n]))
581+ let dp = D(cV[i])
582+ let dc = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
583+ let dC = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dl], nil))
584+ let dD = B(invoke(aU, "getAccBalanceWrapperREADONLY", [dn], nil))
585+ let dE = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dC, da], nil)))
586+ let dF = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dD, db], nil)))
587+ let ds = if ((dc == 0))
580588 then g
581- else parseBigIntValue(D(invoke(cR, "calcPriceBigIntWrapperREADONLY", [toString(dB), toString(dA)], nil)))
582- let dd = B(invoke(cR, "fromX18WrapperREADONLY", [toString(do), b], nil))
583- let dq = parseBigIntValue(D(invoke(cR, "toX18WrapperREADONLY", [dr, cY], nil)))
584- let dp = fraction(dq, d, do)
585- let dg = B(invoke(cR, "fromX18WrapperREADONLY", [toString(dp), cX], nil))
586- let bT = invoke(cR, "estimatePutOperationWrapperREADONLY", ["", 500000, dg, di, dr, dk, "", true, false], nil)
587- let dC = {
588- let z = bT
589+ else parseBigIntValue(D(invoke(aU, "calcPriceBigIntWrapperREADONLY", [toString(dF), toString(dE)], nil)))
590+ let dg = B(invoke(aU, "fromX18WrapperREADONLY", [toString(ds), b], nil))
591+ let du = parseBigIntValue(D(invoke(aU, "toX18WrapperREADONLY", [dv, db], nil)))
592+ let dt = fraction(du, d, ds)
593+ let dk = B(invoke(aU, "fromX18WrapperREADONLY", [toString(dt), da], nil))
594+ let bX = invoke(aU, "estimatePutOperationWrapperREADONLY", ["", 500000, dk, dm, dv, do, "", true, false], nil)
595+ let dG = {
596+ let z = bX
589597 if (if (if ($isInstanceOf(z._1, "Int"))
590598 then if ($isInstanceOf(z._3, "Int"))
591599 then if ($isInstanceOf(z._4, "Int"))
592600 then if ($isInstanceOf(z._5, "Int"))
593601 then $isInstanceOf(z._6, "Int")
594602 else false
595603 else false
596604 else false
597605 else false)
598606 then (size(z) == 13)
599607 else false)
600608 then {
601- let dt = z._1
602- let du = z._3
603- let dv = z._4
604- let dw = z._5
605- let dx = z._6
606- $Tuple5(dt, du, dv, dw, dx)
609+ let dx = z._1
610+ let dy = z._3
611+ let dz = z._4
612+ let dA = z._5
613+ let dB = z._6
614+ $Tuple5(dx, dy, dz, dA, dB)
607615 }
608616 else throw("Couldn't cast types")
609617 }
610- let dt = dC._1
611- let du = dC._2
612- let dv = dC._3
613- let dw = dC._4
614- let dx = dC._5
615- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dt), toString(dd), toString(dv), toString(dw), toString(dx), dl, toString(dg), toString(dr)], e))
618+ let dx = dG._1
619+ let dy = dG._2
620+ let dz = dG._3
621+ let dA = dG._4
622+ let dB = dG._5
623+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dx), toString(dg), toString(dz), toString(dA), toString(dB), dp, toString(dk), toString(dv)], e))
616624 }
617625
618626
619627
620-@Callable(bu)
621-func poolEvaluateGetREADONLY (dD,dE) = {
622- let cR = addressFromStringValue(t(aT, U(dD)))
623- let bT = invoke(cR, "estimateGetOperationWrapperREADONLY", ["", dD, dE, toString(cR)], nil)
624- let dF = {
625- let z = bT
628+@Callable(by)
629+func poolEvaluateGetREADONLY (dH,dI) = {
630+ let aU = addressFromStringValue(t(aX, U(dH)))
631+ let bX = invoke(aU, "estimateGetOperationWrapperREADONLY", ["", dH, dI, toString(aU)], nil)
632+ let dJ = {
633+ let z = bX
626634 if (if (if ($isInstanceOf(z._1, "Int"))
627635 then if ($isInstanceOf(z._2, "Int"))
628636 then if ($isInstanceOf(z._5, "Int"))
629637 then if ($isInstanceOf(z._6, "Int"))
630638 then if ($isInstanceOf(z._7, "Int"))
631639 then if ($isInstanceOf(z._8, "String"))
632640 then $isInstanceOf(z._9, "String")
633641 else false
634642 else false
635643 else false
636644 else false
637645 else false
638646 else false)
639647 then (size(z) == 10)
640648 else false)
641649 then {
642- let dG = z._1
643- let dH = z._2
644- let dv = z._5
645- let dw = z._6
646- let dx = z._7
647- let dd = z._8
648- let dl = z._9
649- $Tuple7(dG, dH, dv, dw, dx, dd, dl)
650+ let dK = z._1
651+ let dL = z._2
652+ let dz = z._5
653+ let dA = z._6
654+ let dB = z._7
655+ let dg = z._8
656+ let dp = z._9
657+ $Tuple7(dK, dL, dz, dA, dB, dg, dp)
650658 }
651659 else throw("Couldn't cast types")
652660 }
653- let dG = dF._1
654- let dH = dF._2
655- let dv = dF._3
656- let dw = dF._4
657- let dx = dF._5
658- let dd = dF._6
659- let dl = dF._7
660- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dG), toString(dH), toString(dv), toString(dw), toString(dx), dd, dl], e))
661+ let dK = dJ._1
662+ let dL = dJ._2
663+ let dz = dJ._3
664+ let dA = dJ._4
665+ let dB = dJ._5
666+ let dg = dJ._6
667+ let dp = dJ._7
668+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dK), toString(dL), toString(dz), toString(dA), toString(dB), dg, dp], e))
661669 }
662670
663671
664672
665-@Callable(bu)
673+@Callable(by)
666674 func gwxUserInfoREADONLY (am) = {
667- let dI = x(invoke(aX, "gwxUserInfoREADONLY", [am], nil))
668- let dJ = B(dI[0])
669- $Tuple2(nil, makeString(["%d", toString(dJ)], e))
675+ let dM = x(invoke(bb, "gwxUserInfoREADONLY", [am], nil))
676+ let dN = B(dM[0])
677+ $Tuple2(nil, makeString(["%d", toString(dN)], e))
670678 }
671679
672680
673681
674-@Callable(bu)
675-func unstakeAndGetOneTkn (cR,dK,dL,dM,dN,dO,dP) = {
676- let bU = invoke(addressFromStringValue(value(getString(addressFromStringValue(cR), aS()))), "unstakeAndGetOneTkn", [dK, dL, dM, dN, dO, dP], nil)
677- if ((bU == bU))
682+@Callable(by)
683+func unstakeAndGetOneTknV2 (aU,dO,dP,dQ) = {
684+ let bY = invoke(addressFromStringValue(aU), "unstakeAndGetOneTknV2", [dO, dP, dQ], nil)
685+ if ((bY == bY))
678686 then $Tuple2(nil, unit)
679687 else throw("Strict value is not equal to itself.")
680688 }
681689
682690
683691
684-@Callable(bu)
685-func setManager (dQ) = {
686- let by = bt(bu)
687- if ((by == by))
692+@Callable(by)
693+func setManager (dR) = {
694+ let bC = bx(by)
695+ if ((bC == bC))
688696 then {
689- let dR = fromBase58String(dQ)
690- if ((dR == dR))
691- then [StringEntry(H(), dQ)]
697+ let dS = fromBase58String(dR)
698+ if ((dS == dS))
699+ then [StringEntry(H(), dR)]
692700 else throw("Strict value is not equal to itself.")
693701 }
694702 else throw("Strict value is not equal to itself.")
695703 }
696704
697705
698706
699-@Callable(bu)
707+@Callable(by)
700708 func confirmManager () = {
701- let dS = bs()
702- let dT = if (isDefined(dS))
709+ let dT = bw()
710+ let dU = if (isDefined(dT))
703711 then true
704712 else throw("No pending manager")
705- if ((dT == dT))
713+ if ((dU == dU))
706714 then {
707- let dU = if ((bu.callerPublicKey == value(dS)))
715+ let dV = if ((by.callerPublicKey == value(dT)))
708716 then true
709717 else throw("You are not pending manager")
710- if ((dU == dU))
711- then [StringEntry(G(), toBase58String(value(dS))), DeleteEntry(H())]
718+ if ((dV == dV))
719+ then [StringEntry(G(), toBase58String(value(dT))), DeleteEntry(H())]
712720 else throw("Strict value is not equal to itself.")
713721 }
714722 else throw("Strict value is not equal to itself.")
715723 }
716724
717725
718-@Verifier(dV)
719-func dW () = {
720- let dX = {
721- let z = bq()
726+@Verifier(dW)
727+func dX () = {
728+ let dY = {
729+ let z = bu()
722730 if ($isInstanceOf(z, "ByteVector"))
723731 then {
724- let bw = z
725- bw
732+ let bA = z
733+ bA
726734 }
727735 else if ($isInstanceOf(z, "Unit"))
728- then dV.senderPublicKey
736+ then dW.senderPublicKey
729737 else throw("Match error")
730738 }
731- sigVerify(dV.bodyBytes, dV.proofs[0], dX)
739+ sigVerify(dW.bodyBytes, dW.proofs[0], dY)
732740 }
733741

github/deemru/w8io/3ef1775 
198.14 ms