tx · 3paaK7hWixdLRkKk2eiTRBE8vf6JMZ8AudVeszJV51mx

3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh:  -0.01800000 Waves

2024.11.22 16:58 [3382763] smart account 3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh > SELF 0.00000000 Waves

{ "type": 13, "id": "3paaK7hWixdLRkKk2eiTRBE8vf6JMZ8AudVeszJV51mx", "fee": 1800000, "feeAssetId": null, "timestamp": 1732283941093, "version": 2, "chainId": 84, "sender": "3NBPx1Fciu3JQNEGZ21jSnTdutLNGGBUSXh", "senderPublicKey": "3QtfC1XbLZXdeawMDeSERy9vvjUmj1XYd2GFmrvx7pWQ", "proofs": [ "3gnHWjb2zehZxgKLiWLGuwdvqYRVHZw5mRSaxT4Uq9ZLFzgS1GHmoK3EXaH5iu2mWgDbLKCcpGTqSatauvGStNTF" ], "script": "base64:BgI9CAISABIECgIICBIDCgEEEgMKAQESABIAEgMKAQESABIECgIIARIAEgMKAQgSAwoBCBIECgIIARIECgIIAUIAA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDcAgK3iBAAFTVVMVDgAgMLXLwAKREFZX01JTExJUwCAuJkpABVVU0RUMkFDUkVTX01VTFRJUExJRVIACgATT05FX1BFUkNFTlRfRElWSVNPUgBkAAVjaGFpbgkAyQECCQDKAQIIBQR0aGlzBWJ5dGVzAAEAAQALdXNkdEFzc2V0SWQEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDABIITaerIIAz9O0bvKju6Lk7zJgt0LXfoHlqjUI/moD/+5AwkAAAIBAVQFByRtYXRjaDABIFWx2J9yh4Lv5eNbjawFq2XemkOhLxa7BfMat4el8cUYCQACAQINVW5rbm93biBjaGFpbgAWZGVmYXVsdFJlc3QyQWRkcmVzc1N0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BGd1l0YThiaUV6MzF6cGVGZTVESks4d0U1dHJTcFFWRjgDCQAAAgEBVAUHJG1hdGNoMAIjM043VXVZYXI2MjY0UDU4RkJoVldLUFFBaDRZdWEyaGduZ3YJAAIBAg1Vbmtub3duIGNoYWluAA5hcmJpdHJhZ2VEZWxheQQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAUKREFZX01JTExJUwMJAAACAQFUBQckbWF0Y2gwAODUAwkAAgECDVVua25vd24gY2hhaW4AFW9sZFN0YWtpbmdDb250cmFjdFN0cgQHJG1hdGNoMAUFY2hhaW4DCQAAAgEBVwUHJG1hdGNoMAIjM1BMbmNYdFMxVTgzRDZjUWJGRDNIOHJCSFBMZ3p4U0ZLWjEDCQAAAgEBVAUHJG1hdGNoMAIjM05EQ3lCRzVxODVKdWFSaWlnVWVFdGFpbnlqQ1FUM1hwWm0JAAIBAg1Vbmtub3duIGNoYWluAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAAQSWR4Q2ZnQWNyZXMyRGFwcAABAA1JZHhDZmdXbGdEYXBwAAIAFElkeENmZ0ludmVzdEZ1bmREYXBwAAUBCmtleVJlc3RDZmcAAg4lc19fcmVzdENvbmZpZwEPa2V5UmVzdDJBZGRyZXNzAAINJXNfX3Jlc3QyQWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCCHJlc3QyQ2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUIcmVzdDJDZmcFA2lkeAkArAICAipSZXN0IGNmZyBkb2Vzbid0IGNvbnRhaW4gYWRkcmVzcyBhdCBpbmRleCAJAKQDAQUDaWR4AA1yZXN0MkNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ9rZXlSZXN0MkFkZHJlc3MABRZkZWZhdWx0UmVzdDJBZGRyZXNzU3RyAAhyZXN0MkNmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUNcmVzdDJDb250cmFjdAAOYWNyZXMyQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQhyZXN0MkNmZwUQSWR4Q2ZnQWNyZXMyRGFwcAALd2xnQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQhyZXN0MkNmZwUNSWR4Q2ZnV2xnRGFwcAASaW52ZXN0RnVuZENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUIcmVzdDJDZmcFFElkeENmZ0ludmVzdEZ1bmREYXBwABNvbGRBY3Jlc0NvbnRyYWN0S2V5AhBvbGRBY3Jlc0NvbnRyYWN0AQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAEVa2V5TGFzdFdlZWtUeElkQnlVc2VyAQRhZGRyCQCsAgICE2xhc3RXZWVrVHhJZEJ5VXNlcl8FBGFkZHIBFGtleUN1cldlZWtUeElkQnlVc2VyAQRhZGRyCQCsAgICEmN1cldlZWtUeElkQnlVc2VyXwUEYWRkcgAUYWNyZXNJc3N1ZWRBbW91bnRLZXkCEWFjcmVzSXNzdWVkQW1vdW50AA9hY3Jlc0Fzc2V0SWRLZXkCDGFjcmVzQXNzZXRJZAAMYWNyZXNBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJwIAgUOYWNyZXMyQ29udHJhY3QFD2FjcmVzQXNzZXRJZEtleQIXQUNSRVMgaXMgbm90IGlzc3VlZCB5ZXQBGGtleUFjcmVzU3Rha2VkVGltZUJ5VXNlcgEEYWRkcgkArAICAhZhY3Jlc1N0YWtlZFRpbWVCeVVzZXJfBQRhZGRyARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBCW93bmVyQWRkcgkArAICAhNzdGFrZWRMYW5kc0J5T3duZXJfBQlvd25lckFkZHIBFGtleVN0YWtlZER1Y2tCeU93bmVyAQlvd25lckFkZHIJAKwCAgISc3Rha2VkRHVja0J5T3duZXJfBQlvd25lckFkZHIBBWFzSW50AQF2BAckbWF0Y2gwBQF2AwkAAQIFByRtYXRjaDACA0ludAQBbgUHJG1hdGNoMAUBbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEMYXNUdXBsZTVJbnRzAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAhkoSW50LCBJbnQsIEludCwgSW50LCBJbnQpBAF0BQckbWF0Y2gwBQF0CQACAQIrZmFpbCB0byBjYXN0IGludG8gKEludCwgSW50LCBJbnQsIEludCwgSW50KQEMYXNUdXBsZTRJbnRzAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAhQoSW50LCBJbnQsIEludCwgSW50KQQBdAUHJG1hdGNoMAUBdAkAAgECJmZhaWwgdG8gY2FzdCBpbnRvIChJbnQsIEludCwgSW50LCBJbnQpAQxhc1R1cGxlM0ludHMBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACDyhJbnQsIEludCwgSW50KQQBdAUHJG1hdGNoMAUBdAkAAgECIWZhaWwgdG8gY2FzdCBpbnRvIChJbnQsIEludCwgSW50KQEMYXNUdXBsZTJJbnRzAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgooSW50LCBJbnQpBAF0BQckbWF0Y2gwBQF0CQACAQIcZmFpbCB0byBjYXN0IGludG8gKEludCwgSW50KQEKZml4ZWRQb2ludAIDdmFsCGRlY2ltYWxzBAZ0ZW5Qb3cJAGwGAAoAAAUIZGVjaW1hbHMAAAAABQRET1dOBAdsb3dQYXJ0CQCkAwEJAGoCBQN2YWwFBnRlblBvdwQGemVyb2VzCQCwAgIJAKQDAQUGdGVuUG93CQBkAgABCQCxAgEFB2xvd1BhcnQJAKwCAgkArAICCQCsAgIJAKQDAQkAaQIFA3ZhbAUGdGVuUG93AgEuBQZ6ZXJvZXMFB2xvd1BhcnQAA004XwCAwtcvAAtXRUVLX0JMT0NLUwDgTgAPd2xnSXNzdWVkQW10S2V5AhB3bGdfaXNzdWVkQW1vdW50AA56Yklzc3VlZEFtdEtleQISemJpbGxfaXNzdWVkQW1vdW50ARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEEYWRkcgkArAICAhhhY3Jlc1N0YWtlZEFtb3VudEJ5VXNlcl8FBGFkZHIBFWtleUZhcm1pbmdQb3dlckJ5VXNlcgEEYWRkcgkArAICAhNmYXJtaW5nUG93ZXJCeVVzZXJfBQRhZGRyABJhY3Jlc1N0YWtkVG90YWxLZXkCFmFjcmVzU3Rha2VkQW1vdW50VG90YWwAFHRvdGFsRmFybWluZ1Bvd2VyS2V5AhF0b3RhbEZhcm1pbmdQb3dlcgAVSWR4RHR4M1BlcmNDb252ZXJzaW9uAAAACmxldmVsQWNyZXMJAMwIAgAACQDMCAIACgkAzAgCABQJAMwIAgAoCQDMCAIAUAkAzAgCAJYBCQDMCAIA+gEJAMwIAgCQAwkAzAgCALwFCQDMCAIA6AcFA25pbAEPZ2V0TGV2ZWxCeUFjcmVzAQVhY3JlcwQDYWNyCQBpAgkAZAIFBWFjcmVzAP/B1y8FA004XwoBB2NoZWNrZXICA2FjYwRpdGVtAwkAZwIFBGl0ZW0FA2FjcgUDYWNjCQBkAgUDYWNjAAEKAAIkbAUKbGV2ZWxBY3JlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHY2hlY2tlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgEWZ2V0RmFybWluZ1Bvd2VyQnlBY3JlcwEFYWNyZXMJAGgCCQBoAgUFYWNyZXMAFAkAZAIJAQ9nZXRMZXZlbEJ5QWNyZXMBBQVhY3JlcwAEABFrZXlOZnRUb3RhbElzc3VlZAIObmZ0VG90YWxJc3N1ZWQBFWtleU5mdE51bWJlckJ5QXNzZXRJZAEHYXNzZXRJZAkArAICAhNuZnROdW1iZXJCeUFzc2V0SWRfBQdhc3NldElkARlrZXlMYXN0V2xnVHJhZGVUaW1lQnlVc2VyAQRhZGRyCQCsAgICEGxhc3RBcmJUaW1lVXNlcl8FBGFkZHIAFGtleUxhc3RBY3Jlc1NlbGxUaW1lAhFsYXN0QWNyZXNTZWxsVGltZQAQa2V5TGFzdExpbWl0TGVmdAINbGFzdExpbWl0TGVmdAAIZHR4QXJyYXkEByRtYXRjaDAFBWNoYWluAwkAAAIBAVcFByRtYXRjaDAFA25pbAMJAAACAQFUBQckbWF0Y2gwCQDMCAICLEN5MWIxY3U2RTVWeDY3TW8yd3ZXaTJwdkp6VDI4ZXhzYjgxbWFveVlQbXZ1CQDMCAICLDZHRXlQVTVIMmdpWmFoaktuVWZaNGRqU01hY0VoU1dzd1ZwMjNYcjhCN3d5BQNuaWwJAAIBAg1Vbmtub3duIGNoYWluAA9uZnREZXNjcmlwdGlvbnMJAMwIAgJ3eyJuYW1lIjogIkdvbGQgc2hvdmVsIiwgImRlc2NyaXB0aW9uIjogIlJld2FyZCBmb3IgZWFybHkgYmlyZHMiLCAicmFyZSI6ICJQcm9tbyIsICJib251cyI6IDMsICJib251c1R5cGUiOiAiRmFybVBvd2VyIn0JAMwIAgJxeyJuYW1lIjogIlBpY2theGUiLCAiZGVzY3JpcHRpb24iOiAiSW5jcmVhc2VzIEZhcm1Qb3dlciIsICJyYXJlIjogIkNvbW1vbiIsICJib251cyI6IDEsICJib251c1R5cGUiOiAiRmFybVBvd2VyIn0FA25pbAAIbmZ0TmFtZXMJAMwIAgIJU0hPVkVMLVAzCQDMCAICClBJQ0tBWEUtQzEFA25pbAEGcHJvbG9nAQFpAwMJAQIhPQIIBQFpDG9yaWdpbkNhbGxlcgUNcmVzdDJDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAR3ZWVrCQBpAgUGaGVpZ2h0BQtXRUVLX0JMT0NLUwQSbGFzdFdlZWtUeElkQnlVc2VyCQCiCAEJARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBQRhZGRyBAR0eElkCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQEA3d0eAkArAICCQCsAgIJAKQDAQUEd2VlawIBXwUEdHhJZAMJAQlpc0RlZmluZWQBBRJsYXN0V2Vla1R4SWRCeVVzZXIECmxhc3RXZWVrVHgJALUJAgkBBXZhbHVlAQUSbGFzdFdlZWtUeElkQnlVc2VyAgFfAwkAAAIJAJEDAgUKbGFzdFdlZWtUeAAACQCkAwEFBHdlZWsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleUxhc3RXZWVrVHhJZEJ5VXNlcgEFBGFkZHIFA3d0eAkAzAgCCQELU3RyaW5nRW50cnkCCQEUa2V5Q3VyV2Vla1R4SWRCeVVzZXIBBQRhZGRyBQN3dHgFA25pbAMJAAACCQCRAwIFCmxhc3RXZWVrVHgAAAkApAMBCQBlAgUEd2VlawABCQDMCAIJAQtTdHJpbmdFbnRyeQIJARRrZXlDdXJXZWVrVHhJZEJ5VXNlcgEFBGFkZHIFA3d0eAUDbmlsBBFjdXJXZWVrVHhJZEJ5VXNlcgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBFWtleUxhc3RXZWVrVHhJZEJ5VXNlcgEFBGFkZHIECWN1cldlZWtUeAkAtQkCBRFjdXJXZWVrVHhJZEJ5VXNlcgIBXwMJAAACCQCRAwIFCWN1cldlZWtUeAAACQCkAwEFBHdlZWsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleUN1cldlZWtUeElkQnlVc2VyAQUEYWRkcgUDd3R4BQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFWtleUxhc3RXZWVrVHhJZEJ5VXNlcgEFBGFkZHIFEWN1cldlZWtUeElkQnlVc2VyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARRrZXlDdXJXZWVrVHhJZEJ5VXNlcgEFBGFkZHIFA3d0eAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYXN0V2Vla1R4SWRCeVVzZXIBBQRhZGRyBQN3dHgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleUN1cldlZWtUeElkQnlVc2VyAQUEYWRkcgUDd3R4BQNuaWwBEGlzc3VlTkZUaW50ZXJuYWwCCG5mdEluZGV4BGFkZHIDCQBnAgUIbmZ0SW5kZXgJAJADAQUIZHR4QXJyYXkJAAIBAhZuZnRJbmRleCBvdXQgb2YgYm91bmRzBAluZnRTZXJpYWwJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFEWtleU5mdFRvdGFsSXNzdWVkAP///////////wEAAQQFaXNzdWUJAMIIBQkAkQMCBQhuZnROYW1lcwUIbmZ0SW5kZXgJALoJAgkAzAgCCQCRAwIFCGR0eEFycmF5BQhuZnRJbmRleAkAzAgCCQCkAwEFCW5mdFNlcmlhbAkAzAgCCQCRAwIFD25mdERlc2NyaXB0aW9ucwUIbmZ0SW5kZXgFA25pbAUDU0VQAAEAAAcECm5mdEFzc2V0SWQJALgIAQUFaXNzdWUJAJQKAgkAzAgCBQVpc3N1ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgURa2V5TmZ0VG90YWxJc3N1ZWQFCW5mdFNlcmlhbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFWtleU5mdE51bWJlckJ5QXNzZXRJZAEJANgEAQUKbmZ0QXNzZXRJZAUJbmZ0U2VyaWFsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBGFkZHIAAQUKbmZ0QXNzZXRJZAUDbmlsBQpuZnRBc3NldElkARlzdGFrZVVuc3Rha2VBY3Jlc0ludGVybmFsAgNhbXQHYWRkcmVzcwQJd2xnUmVzdWx0CQD8BwQFC3dsZ0NvbnRyYWN0AhJvblN0YWtlVW5zdGFrZUxhbmQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUJd2xnUmVzdWx0BQl3bGdSZXN1bHQEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEB3RpbWVLZXkJARhrZXlBY3Jlc1N0YWtlZFRpbWVCeVVzZXIBBQdhZGRyZXNzBAlhbW91bnRLZXkJARdrZXlBY3Jlc1N0YWtlZEFtdEJ5VXNlcgEFB2FkZHJlc3MEDm9sZEFjcmVzQW1vdW50CQELdmFsdWVPckVsc2UCCQCfCAEFCWFtb3VudEtleQAAAwMJAGYCAAAFA2FtdAkAZgIAAAkAZAIFDm9sZEFjcmVzQW1vdW50BQNhbXQHCQACAQkArAICCQCsAgIJAKwCAgIOWW91IGhhdmUgb25seSAJAQpmaXhlZFBvaW50AgUOb2xkQWNyZXNBbW91bnQACAIgIEFDUkVTIHN0YWtlZCwgdHJpZWQgdG8gdW5zdGFrZSAJAQpmaXhlZFBvaW50AgkBAS0BBQNhbXQACAQObmV3QWNyZXNBbW91bnQJAGQCBQ5vbGRBY3Jlc0Ftb3VudAUDYW10BAhvbGRUb3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRJhY3Jlc1N0YWtkVG90YWxLZXkAAAQJdXNlckZwS2V5CQEVa2V5RmFybWluZ1Bvd2VyQnlVc2VyAQUHYWRkcmVzcwQFb2xkRnAJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJdXNlckZwS2V5AAAEBW5ld0ZwCQEWZ2V0RmFybWluZ1Bvd2VyQnlBY3JlcwEFDm5ld0FjcmVzQW1vdW50BApvbGRUb3RhbEZwCQELdmFsdWVPckVsc2UCCQCfCAEFFHRvdGFsRmFybWluZ1Bvd2VyS2V5AAAJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIFCWFtb3VudEtleQUObmV3QWNyZXNBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFEmFjcmVzU3Rha2RUb3RhbEtleQkAZAIFCG9sZFRvdGFsBQNhbXQJAMwIAgkBDEludGVnZXJFbnRyeQIFCXVzZXJGcEtleQUFbmV3RnAJAMwIAgkBDEludGVnZXJFbnRyeQIFFHRvdGFsRmFybWluZ1Bvd2VyS2V5CQBkAgkAZQIFCm9sZFRvdGFsRnAFBW9sZEZwBQVuZXdGcAUDbmlsBQl3bGdSZXN1bHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BC2dldFdsZ1ByaWNlARV1c2R0QmFsYW5jZUNvcnJlY3Rpb24EDGlzc3VlZEFtb3VudAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFC3dsZ0NvbnRyYWN0BQ93bGdJc3N1ZWRBbXRLZXkCGFdMR09MRCBpcyBub3QgaXNzdWVkIHlldAQGd2xnVXNkCQDwBwIFC3dsZ0NvbnRyYWN0BQt1c2R0QXNzZXRJZAQJYWNyZXMyVXNkCQBlAgkA8AcCBQ5hY3JlczJDb250cmFjdAULdXNkdEFzc2V0SWQFFXVzZHRCYWxhbmNlQ29ycmVjdGlvbgQPaW52ZXN0RnVuZFRvdGFsCQBkAgkA8AcCBRJpbnZlc3RGdW5kQ29udHJhY3QFC3VzZHRBc3NldElkCQELdmFsdWVPckVsc2UCCQCaCAIFEmludmVzdEZ1bmRDb250cmFjdAUOemJJc3N1ZWRBbXRLZXkAAAQNdG90YWxGdW5kc1VzZAkAZAIJAGQCBQlhY3JlczJVc2QFBndsZ1VzZAUPaW52ZXN0RnVuZFRvdGFsCQBrAwUNdG90YWxGdW5kc1VzZAUFTVVMVDgFDGlzc3VlZEFtb3VudAERZ2V0U3dhcExpbWl0QWNyZXMABAZ3bGdVc2QJAPAHAgULd2xnQ29udHJhY3QFC3VzZHRBc3NldElkBAlhY3JlczJVc2QJAPAHAgUEdGhpcwULdXNkdEFzc2V0SWQED2ludmVzdEZ1bmRUb3RhbAkAZAIJAPAHAgUSaW52ZXN0RnVuZENvbnRyYWN0BQt1c2R0QXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBRJpbnZlc3RGdW5kQ29udHJhY3QFDnpiSXNzdWVkQW10S2V5AAAEDGRlZmF1bHRMaW1pdAkAaQIJAGQCCQBkAgUJYWNyZXMyVXNkBQZ3bGdVc2QFD2ludmVzdEZ1bmRUb3RhbAUTT05FX1BFUkNFTlRfRElWSVNPUgQNbGFzdExpbWl0TGVmdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRBrZXlMYXN0TGltaXRMZWZ0BQxkZWZhdWx0TGltaXQECGxhc3RUaW1lCQELdmFsdWVPckVsc2UCCQCfCAEFFGtleUxhc3RBY3Jlc1NlbGxUaW1lAAAEA25vdwgFCWxhc3RCbG9jawl0aW1lc3RhbXAEDGN1cnJlbnRMaW1pdAkAZAIFDWxhc3RMaW1pdExlZnQJAGsDBQxkZWZhdWx0TGltaXQJAGUCBQNub3cFCGxhc3RUaW1lBQpEQVlfTUlMTElTBA1saW1pdExlZnRVc2R0CQCXAwEJAMwIAgUMY3VycmVudExpbWl0CQDMCAIFDGRlZmF1bHRMaW1pdAUDbmlsCQCUCgIJAQxJbnRlZ2VyRW50cnkCBRRrZXlMYXN0QWNyZXNTZWxsVGltZQUDbm93BQ1saW1pdExlZnRVc2R0DgFpAQpzYXZlTGFzdFR4AAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgULd2xnQ29udHJhY3QFA25pbAgFAWkGY2FsbGVyCQACAQINQWNjZXNzIGRlbmllZAkAlAoCCQEGcHJvbG9nAQUBaQAqAWkBDWNvbnN0cnVjdG9yVjECCXJlc3QyQWRkcg5vbGRBY3JDb250cmFjdAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECEVBlcm1pc3Npb24gZGVuaWVkBA5vbGRBY3JDb250QWRkcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUOb2xkQWNyQ29udHJhY3QJAMwIAgkBDEludGVnZXJFbnRyeQIFFGFjcmVzSXNzdWVkQW1vdW50S2V5CQERQGV4dHJOYXRpdmUoMTA1MCkCBQ5vbGRBY3JDb250QWRkcgUUYWNyZXNJc3N1ZWRBbW91bnRLZXkJAMwIAgkBC0JpbmFyeUVudHJ5AgUPYWNyZXNBc3NldElkS2V5CQERQGV4dHJOYXRpdmUoMTA1MikCBQ5vbGRBY3JDb250QWRkcgUPYWNyZXNBc3NldElkS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlSZXN0MkFkZHJlc3MABQlyZXN0MkFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgUTb2xkQWNyZXNDb250cmFjdEtleQUOb2xkQWNyQ29udHJhY3QFA25pbAFpAQpzZXRCbG9ja2VkAQlpc0Jsb2NrZWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCmtleUJsb2NrZWQABQlpc0Jsb2NrZWQFA25pbAFpAQx1bnN0YWtlQWNyZXMBBmFtb3VudAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQBnAgAABQZhbW91bnQJAAIBAhlBbW91bnQgc2hvdWxkIGJlIHBvc2l0aXZlBAdhZGRyZXNzCQClCAEIBQFpBmNhbGxlcgMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBA5hcmJSZWxlYXNlVGltZQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJoIAgULd2xnQ29udHJhY3QJARlrZXlMYXN0V2xnVHJhZGVUaW1lQnlVc2VyAQUHYWRkcmVzcwAABQ5hcmJpdHJhZ2VEZWxheQMJAGYCBQ5hcmJSZWxlYXNlVGltZQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAAIBCQCsAgICLVlvdSB0cmFkZWQgc29tZSBXTEdPTEQsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQ5hcmJSZWxlYXNlVGltZQQLJHQwNzQzMzc1MTAJARlzdGFrZVVuc3Rha2VBY3Jlc0ludGVybmFsAgkBAS0BBQZhbW91bnQFB2FkZHJlc3MEB2FjdGlvbnMIBQskdDA3NDMzNzUxMAJfMQQQd2xnQ2xhaW1lZEFtb3VudAgFCyR0MDc0MzM3NTEwAl8yCQCUCgIJAM4IAgkAzQgCBQdhY3Rpb25zCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAUMYWNyZXNBc3NldElkBQ1wcm9sb2dBY3Rpb25zBRB3bGdDbGFpbWVkQW1vdW50AWkBCnN0YWtlQWNyZXMABA1wcm9sb2dBY3Rpb25zCQEGcHJvbG9nAQUBaQQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQDYW10CAUDcG10BmFtb3VudAMDCQEBIQEJAQlpc0RlZmluZWQBCAUDcG10B2Fzc2V0SWQGCQECIT0CCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQFDGFjcmVzQXNzZXRJZAkAAgECFEFDUkVTIHBheW1lbnRzIG9ubHkhBAskdDA3OTYxODAzNAkBGXN0YWtlVW5zdGFrZUFjcmVzSW50ZXJuYWwCBQNhbXQFB2FkZHJlc3MEB2FjdGlvbnMIBQskdDA3OTYxODAzNAJfMQQQd2xnQ2xhaW1lZEFtb3VudAgFCyR0MDc5NjE4MDM0Al8yCQCUCgIJAM4IAgUHYWN0aW9ucwUNcHJvbG9nQWN0aW9ucwUQd2xnQ2xhaW1lZEFtb3VudAFpAQhidXlBY3JlcwAEDXByb2xvZ0FjdGlvbnMJAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAECnVzZHRBbW91bnQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhNVU0RUIHBheW1lbnRzIG9ubHkhAwkAZgIFBU1VTFQ2BQp1c2R0QW1vdW50CQACAQkArAICCQCsAgICFk1pbiBwYXltZW50IHNob3VsZCBiZSAJAQpmaXhlZFBvaW50AgUFTVVMVDYABgIFIFVTRFQEC2FjcmVzQW1vdW50CQBoAgUKdXNkdEFtb3VudAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSBAl3bGdBbW91bnQJAGsDBQp1c2R0QW1vdW50BQVNVUxUOAkBC2dldFdsZ1ByaWNlAQUKdXNkdEFtb3VudAQPb2xkQWNyZXNBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBBRNvbGRBY3Jlc0NvbnRyYWN0S2V5BANyZXEJAPwHBAUPb2xkQWNyZXNBZGRyZXNzAhRyZXF1ZXN0QWNyZXNDYWxsYmFjawkAzAgCBQthY3Jlc0Ftb3VudAUDbmlsBQNuaWwDCQAAAgUDcmVxBQNyZXEECXdsZ1JlbWFpbgkBBWFzSW50AQkA/AcEBQt3bGdDb250cmFjdAIKYnVybldsZ29sZAkAzAgCBQl3bGdBbW91bnQFA25pbAUDbmlsCQCUCgIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC2FjcmVzQW1vdW50BQxhY3Jlc0Fzc2V0SWQFA25pbAUNcHJvbG9nQWN0aW9ucwUJd2xnUmVtYWluCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGJ1eUFjcmVzUkVBRE9OTFkBCnVzZHRBbW91bnQEC2FjcmVzQW1vdW50CQBoAgUKdXNkdEFtb3VudAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSBAl3bGdUb0J1cm4JAGsDBQp1c2R0QW1vdW50BQVNVUxUOAkBC2dldFdsZ1ByaWNlAQUKdXNkdEFtb3VudAkAlAoCBQNuaWwJAMwIAgULYWNyZXNBbW91bnQJAMwIAgUFTVVMVDYJAMwIAgULYWNyZXNBbW91bnQJAMwIAgUJd2xnVG9CdXJuBQNuaWwBaQEJc2VsbEFjcmVzAAQNcHJvbG9nQWN0aW9ucwkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAiJleGFjdGx5IDEgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBANwbXQJAJEDAggFAWkIcGF5bWVudHMAAAQLYWNyZXNBbW91bnQIBQNwbXQGYW1vdW50AwMJAQEhAQkBCWlzRGVmaW5lZAEIBQNwbXQHYXNzZXRJZAYJAQIhPQIJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAUMYWNyZXNBc3NldElkCQACAQIUQUNSRVMgcGF5bWVudHMgb25seSEDCQBmAgUFTVVMVDcFC2FjcmVzQW1vdW50CQACAQkArAICCQCsAgICFk1pbiBwYXltZW50IHNob3VsZCBiZSAJAQpmaXhlZFBvaW50AgUFTVVMVDcACAIGIEFDUkVTBARhZGRyCQClCAEIBQFpBmNhbGxlcgQLJHQwOTg5MTk5MzkJARFnZXRTd2FwTGltaXRBY3JlcwAEC2xpbWl0QWN0aW9uCAULJHQwOTg5MTk5MzkCXzEEB21heFVzZHQIBQskdDA5ODkxOTkzOQJfMgQIbWF4QWNyZXMJAGgCBQdtYXhVc2R0BRVVU0RUMkFDUkVTX01VTFRJUExJRVIDCQBmAgULYWNyZXNBbW91bnQFCG1heEFjcmVzCQACAQkArAICCQCsAgICEVlvdSBjYW4gc2VsbCBtYXggCQEKZml4ZWRQb2ludAIFCG1heEFjcmVzAAgCBiBBQ1JFUwQKdXNkdEFtb3VudAkAaQIJAGkCBQthY3Jlc0Ftb3VudAUVVVNEVDJBQ1JFU19NVUxUSVBMSUVSAAIJAJQKAgkAzggCCQDMCAIFC2xpbWl0QWN0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlMYXN0TGltaXRMZWZ0CQBlAgUHbWF4VXNkdAUKdXNkdEFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCnVzZHRBbW91bnQFC3VzZHRBc3NldElkBQNuaWwFDXByb2xvZ0FjdGlvbnMFCnVzZHRBbW91bnQBaQERc2VsbEFjcmVzUkVBRE9OTFkCB2FkZHJlc3MLYWNyZXNBbW91bnQEDSR0MDEwNDM1MTA0ODMJARFnZXRTd2FwTGltaXRBY3JlcwAEC2xpbWl0QWN0aW9uCAUNJHQwMTA0MzUxMDQ4MwJfMQQHbWF4VXNkdAgFDSR0MDEwNDM1MTA0ODMCXzIECnVzZHRBbW91bnQJAGkCCQBpAgULYWNyZXNBbW91bnQFFVVTRFQyQUNSRVNfTVVMVElQTElFUgACCQCUCgIFA25pbAkAzAgCBQp1c2R0QW1vdW50CQDMCAIFBU1VTFQ3CQDMCAIJAGgCBQdtYXhVc2R0BRVVU0RUMkFDUkVTX01VTFRJUExJRVIJAMwIAgAABQNuaWwBaQEQY29udmVydE9sZFN0YWtlcwADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhRUZW1wb3JhcmlseSBkaXNhYmxlZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQPb2xkQWNyZXNBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBBRNvbGRBY3Jlc0NvbnRyYWN0S2V5BAZhbW91bnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUPb2xkQWNyZXNBZGRyZXNzCQEXa2V5QWNyZXNTdGFrZWRBbXRCeVVzZXIBBQdhZGRyZXNzAAAECWdvdEFjcmVzMAMJAGYCBQZhbW91bnQAAAkBDGFzVHVwbGUySW50cwEJAPwHBAUPb2xkQWNyZXNBZGRyZXNzAhR1bnN0YWtlQWNyZXNDYWxsYmFjawkAzAgCBQZhbW91bnQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwJAJQKAgAAAAAEEW9sZFN0YWtpbmdBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBRVvbGRTdGFraW5nQ29udHJhY3RTdHIECGxhbmRzU3RyCQCdCAIFEW9sZFN0YWtpbmdBZGRyZXNzCQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQLbGFuZHNSZXN1bHQDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIEBWxhbmRzCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfCgEHb25lTGFuZAIDYWNjC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQBcgkBDGFzVHVwbGU1SW50cwEJAPwHBAURb2xkU3Rha2luZ0FkZHJlc3MCE3Vuc3Rha2VMYW5kQ2FsbGJhY2sJAMwIAgULbGFuZEFzc2V0SWQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwJAJYKBAkAZAIIBQNhY2MCXzEIBQFyAl8xCQBkAggFA2FjYwJfMggFAXICXzIJAGQCCAUDYWNjAl8zCAUBcgJfMwkAZAIIBQNhY2MCXzQIBQFyAl80BAJycgoAAiRsBQVsYW5kcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJYKBAAAAAAAAAAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQdvbmVMYW5kAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhVMaXN0IHNpemUgZXhjZWVkcyAxMDAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZAQIZmluYWxpemUJAPwHBAURb2xkU3Rha2luZ0FkZHJlc3MCHHVuc3Rha2VMYW5kc0ZpbmFsaXplQ2FsbGJhY2sJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwDCQAAAgUIZmluYWxpemUFCGZpbmFsaXplBANyZXEJAPwHBAUPb2xkQWNyZXNBZGRyZXNzAhRyZXF1ZXN0QWNyZXNDYWxsYmFjawkAzAgCCQBkAgkAZAIJAGQCCAUCcnICXzEIBQJycgJfMggFAnJyAl8zCAUCcnICXzQFA25pbAUDbmlsAwkAAAIFA3JlcQUDcmVxBA0kdDAxMjM1NTEyNDM1CQEQaXNzdWVORlRpbnRlcm5hbAIFFUlkeER0eDNQZXJjQ29udmVyc2lvbggFAWkGY2FsbGVyBApuZnRBY3Rpb25zCAUNJHQwMTIzNTUxMjQzNQJfMQQKbmZ0QXNzZXRJZAgFDSR0MDEyMzU1MTI0MzUCXzIJAJcKBQgFAnJyAl8xCAUCcnICXzIIBQJycgJfMwgFAnJyAl80BQpuZnRBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCXCgUAAAAAAAAAAAUDbmlsBAtkdWNrQXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAnQgCBRFvbGRTdGFraW5nQWRkcmVzcwkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwIABApkdWNrUmVzdWx0AwkBAiE9AgULZHVja0Fzc2V0SWQCAAkBDGFzVHVwbGUzSW50cwEJAPwHBAURb2xkU3Rha2luZ0FkZHJlc3MCE3Vuc3Rha2VEdWNrQ2FsbGJhY2sJAMwIAgULZHVja0Fzc2V0SWQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwJAJUKAwAAAAAAAAQBeAkBGXN0YWtlVW5zdGFrZUFjcmVzSW50ZXJuYWwCCQBkAgkAZAIJAGQCCQBkAgkAZAIJAGQCCQBkAggFCWdvdEFjcmVzMAJfMQgFC2xhbmRzUmVzdWx0Al8xCAULbGFuZHNSZXN1bHQCXzIIBQtsYW5kc1Jlc3VsdAJfMwgFC2xhbmRzUmVzdWx0Al80CAUKZHVja1Jlc3VsdAJfMQgFCmR1Y2tSZXN1bHQCXzIIBQpkdWNrUmVzdWx0Al8zBQdhZGRyZXNzCQCUCgIJAM4IAggFC2xhbmRzUmVzdWx0Al81CAUBeAJfMQgFAXgCXzIBaQEUdW5zdGFrZUxhbmRzUkVBRE9OTFkBB2FkZHJlc3MEEW9sZFN0YWtpbmdBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBRVvbGRTdGFraW5nQ29udHJhY3RTdHIECGxhbmRzU3RyCQCdCAIFEW9sZFN0YWtpbmdBZGRyZXNzCQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUHYWRkcmVzcwQLbGFuZHNSZXN1bHQDCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIEBWxhbmRzCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfCgEHb25lTGFuZAIDYWNjC2xhbmRBc3NldElkAwkAAAIFC2xhbmRBc3NldElkAgAJAAIBAhdsYW5kQXNzZXRJZCBpcyByZXF1aXJlZAQBcgkBDGFzVHVwbGU0SW50cwEJAPwHBAURb2xkU3Rha2luZ0FkZHJlc3MCE3Vuc3Rha2VMYW5kUkVBRE9OTFkJAMwIAgULbGFuZEFzc2V0SWQJAMwIAgUHYWRkcmVzcwUDbmlsBQNuaWwJAJYKBAkAZAIIBQNhY2MCXzEIBQFyAl8xCQBkAggFA2FjYwJfMggFAXICXzIJAGQCCAUDYWNjAl8zCAUBcgJfMwkAZAIIBQNhY2MCXzQIBQFyAl80CgACJGwFBWxhbmRzCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlgoEAAAAAAAAAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB29uZUxhbmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkCQCWCgQAAAAAAAAAAAkAlAoCBQNuaWwFC2xhbmRzUmVzdWx0AWkBEnN0YWtlQWNyZXNDYWxsYmFjawEEYWRkcgMJAQIhPQIIBQFpBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUVb2xkU3Rha2luZ0NvbnRyYWN0U3RyCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJARlzdGFrZVVuc3Rha2VBY3Jlc0ludGVybmFsAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFBGFkZHIBaQEac2ltdWxhdGVTdGFrZUFjcmVzUkVBRE9OTFkCB2FkZHJlc3MLYWRkZWRBbW91bnQECWFtb3VudEtleQkBF2tleUFjcmVzU3Rha2VkQW10QnlVc2VyAQUHYWRkcmVzcwQObmV3QWNyZXNBbW91bnQJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEFCWFtb3VudEtleQAABQthZGRlZEFtb3VudAQIb2xkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUSYWNyZXNTdGFrZFRvdGFsS2V5AAAECXVzZXJGcEtleQkBFWtleUZhcm1pbmdQb3dlckJ5VXNlcgEFB2FkZHJlc3MEBW9sZEZwCQELdmFsdWVPckVsc2UCCQCfCAEFCXVzZXJGcEtleQAABAVuZXdGcAkBFmdldEZhcm1pbmdQb3dlckJ5QWNyZXMBBQ5uZXdBY3Jlc0Ftb3VudAQKb2xkVG90YWxGcAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRR0b3RhbEZhcm1pbmdQb3dlcktleQAABApuZXdUb3RhbEZwCQBkAgkAZQIFCm9sZFRvdGFsRnAFBW9sZEZwBQVuZXdGcAkAlAoCBQNuaWwJAMwIAgUFb2xkRnAJAMwIAgUFbmV3RnAJAMwIAgUKb2xkVG90YWxGcAkAzAgCBQpuZXdUb3RhbEZwBQNuaWwBaQEIaXNzdWVORlQCCmZvckFkZHJlc3MIbmZ0SW5kZXgDCQECIT0CCAUBaQZjYWxsZXIFC3dsZ0NvbnRyYWN0CQACAQIRUGVybWlzc2lvbiBkZW5pZWQJARBpc3N1ZU5GVGludGVybmFsAgUIbmZ0SW5kZXgJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCmZvckFkZHJlc3MAMeAvIw==", "height": 3382763, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: b9pot6JkR7Qxo98BvwKAy32KiVhCG3eC6i34CPByJuF Next: Hr2KEJ7XcawRiWrsfsnDxKjocAURw7wixBjzGyXyfAsH Diff:
OldNewDifferences
8989 func F () = "contractsBlocked"
9090
9191
92-func G (H) = ("lastTxIdByUser_" + H)
92+func G (H) = ("lastWeekTxIdByUser_" + H)
9393
9494
95-let I = "acresIssuedAmount"
96-
97-let J = "acresAssetId"
98-
99-let K = valueOrErrorMessage(getBinary(B, J), "ACRES is not issued yet")
100-
101-func L (H) = ("acresStakedTimeByUser_" + H)
95+func I (H) = ("curWeekTxIdByUser_" + H)
10296
10397
104-func M (N) = ("stakedLandsByOwner_" + N)
98+let J = "acresIssuedAmount"
99+
100+let K = "acresAssetId"
101+
102+let L = valueOrErrorMessage(getBinary(B, K), "ACRES is not issued yet")
103+
104+func M (H) = ("acresStakedTimeByUser_" + H)
105105
106106
107-func O (N) = ("stakedDuckByOwner_" + N)
107+func N (O) = ("stakedLandsByOwner_" + O)
108108
109109
110-func P (Q) = {
111- let j = Q
110+func P (O) = ("stakedDuckByOwner_" + O)
111+
112+
113+func Q (R) = {
114+ let j = R
112115 if ($isInstanceOf(j, "Int"))
113116 then {
114- let R = j
115- R
117+ let S = j
118+ S
116119 }
117120 else throw("fail to cast into Int")
118121 }
119122
120123
121-func S (T) = {
122- let j = T
124+func T (U) = {
125+ let j = U
123126 if ($isInstanceOf(j, "(Int, Int, Int, Int, Int)"))
124127 then {
125- let U = j
126- U
128+ let V = j
129+ V
127130 }
128131 else throw("fail to cast into (Int, Int, Int, Int, Int)")
129132 }
130133
131134
132-func V (T) = {
133- let j = T
135+func W (U) = {
136+ let j = U
134137 if ($isInstanceOf(j, "(Int, Int, Int, Int)"))
135138 then {
136- let U = j
137- U
139+ let V = j
140+ V
138141 }
139142 else throw("fail to cast into (Int, Int, Int, Int)")
140143 }
141144
142145
143-func W (T) = {
144- let j = T
146+func X (U) = {
147+ let j = U
145148 if ($isInstanceOf(j, "(Int, Int, Int)"))
146149 then {
147- let U = j
148- U
150+ let V = j
151+ V
149152 }
150153 else throw("fail to cast into (Int, Int, Int)")
151154 }
152155
153156
154-func X (T) = {
155- let j = T
157+func Y (U) = {
158+ let j = U
156159 if ($isInstanceOf(j, "(Int, Int)"))
157160 then {
158- let U = j
159- U
161+ let V = j
162+ V
160163 }
161164 else throw("fail to cast into (Int, Int)")
162165 }
163166
164167
165-func Y (T,Z) = {
166- let aa = pow(10, 0, Z, 0, 0, DOWN)
167- let ab = toString((T % aa))
168- let ac = drop(toString(aa), (1 + size(ab)))
169- (((toString((T / aa)) + ".") + ac) + ab)
168+func Z (U,aa) = {
169+ let ab = pow(10, 0, aa, 0, 0, DOWN)
170+ let ac = toString((U % ab))
171+ let ad = drop(toString(ab), (1 + size(ac)))
172+ (((toString((U / ab)) + ".") + ad) + ac)
170173 }
171174
172175
173-let ad = 100000000
176+let ae = 100000000
174177
175-let ae = "wlg_issuedAmount"
178+let af = 10080
176179
177-let af = "zbill_issuedAmount"
180+let ag = "wlg_issuedAmount"
178181
179-func ag (H) = ("acresStakedAmountByUser_" + H)
182+let ah = "zbill_issuedAmount"
183+
184+func ai (H) = ("acresStakedAmountByUser_" + H)
180185
181186
182-func ah (H) = ("farmingPowerByUser_" + H)
187+func aj (H) = ("farmingPowerByUser_" + H)
183188
184189
185-let ai = "acresStakedAmountTotal"
190+let ak = "acresStakedAmountTotal"
186191
187-let aj = "totalFarmingPower"
192+let al = "totalFarmingPower"
188193
189-let ak = 0
194+let am = 0
190195
191-let al = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
196+let an = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
192197
193-func am (an) = {
194- let ao = ((an + 99999999) / ad)
195- func ap (aq,ar) = if ((ar >= ao))
196- then aq
197- else (aq + 1)
198+func ao (ap) = {
199+ let aq = ((ap + 99999999) / ae)
200+ func ar (as,at) = if ((at >= aq))
201+ then as
202+ else (as + 1)
198203
199- let as = al
200- let at = size(as)
201- let au = 0
202- func av (aw,ax) = if ((ax >= at))
203- then aw
204- else ap(aw, as[ax])
204+ let au = an
205+ let av = size(au)
206+ let aw = 0
207+ func ax (ay,az) = if ((az >= av))
208+ then ay
209+ else ar(ay, au[az])
205210
206- func ay (aw,ax) = if ((ax >= at))
207- then aw
211+ func aA (ay,az) = if ((az >= av))
212+ then ay
208213 else throw("List size exceeds 10")
209214
210- ay(av(av(av(av(av(av(av(av(av(av(au, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
215+ aA(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(aw, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
211216 }
212217
213218
214-func az (an) = ((an * 20) * (am(an) + 4))
219+func aB (ap) = ((ap * 20) * (ao(ap) + 4))
215220
216221
217-func aA (H) = ("lastArbTimeUser_" + H)
222+let aC = "nftTotalIssued"
223+
224+func aD (aE) = ("nftNumberByAssetId_" + aE)
218225
219226
220-let aB = "lastAcresSellTime"
227+func aF (H) = ("lastArbTimeUser_" + H)
221228
222-let aC = "lastLimitLeft"
223229
224-let aD = {
230+let aG = "lastAcresSellTime"
231+
232+let aH = "lastLimitLeft"
233+
234+let aI = {
225235 let j = h
226236 if ((base58'2W' == j))
227237 then nil
228238 else if ((base58'2T' == j))
229- then nil
239+ then ["Cy1b1cu6E5Vx67Mo2wvWi2pvJzT28exsb81maoyYPmvu", "6GEyPU5H2giZahjKnUfZ4djSMacEhSWswVp23Xr8B7wy"]
230240 else throw("Unknown chain")
231241 }
232242
233-let aE = ["FarmingPower +3% NFT for WavesLands loyal players", "FarmingPower +1% NFT"]
243+let aJ = ["{\"name\": \"Gold shovel\", \"description\": \"Reward for early birds\", \"rare\": \"Promo\", \"bonus\": 3, \"bonusType\": \"FarmPower\"}", "{\"name\": \"Pickaxe\", \"description\": \"Increases FarmPower\", \"rare\": \"Common\", \"bonus\": 1, \"bonusType\": \"FarmPower\"}"]
234244
235-let aF = ["FPOWER+3%", "FPOWER1"]
245+let aK = ["SHOVEL-P3", "PICKAXE-C1"]
236246
237-func aG (aH) = if (if ((aH.originCaller != A))
247+func aL (aM) = if (if ((aM.originCaller != A))
238248 then valueOrElse(getBoolean(F()), false)
239249 else false)
240250 then throw("Contracts are under maintenance")
241- else [StringEntry(G(toString(aH.originCaller)), toBase58String(aH.transactionId))]
242-
243-
244-func aI (aJ) = if ((aJ >= size(aD)))
245- then throw("nftIndex out of bounds")
246251 else {
247- let aK = Issue(aF[aJ], ((aD[aJ] + a) + aE[aJ]), 1, 0, false)
248- $Tuple2(aK, calculateAssetId(aK))
252+ let H = toString(aM.originCaller)
253+ let aN = (height / af)
254+ let aO = getString(G(H))
255+ let aP = toBase58String(aM.transactionId)
256+ let aQ = ((toString(aN) + "_") + aP)
257+ if (isDefined(aO))
258+ then {
259+ let aR = split(value(aO), "_")
260+ if ((aR[0] == toString(aN)))
261+ then [StringEntry(G(H), aQ), StringEntry(I(H), aQ)]
262+ else if ((aR[0] == toString((aN - 1))))
263+ then [StringEntry(I(H), aQ)]
264+ else {
265+ let aS = getStringValue(G(H))
266+ let aT = split(aS, "_")
267+ if ((aT[0] == toString(aN)))
268+ then [StringEntry(I(H), aQ)]
269+ else [StringEntry(G(H), aS), StringEntry(I(H), aQ)]
270+ }
271+ }
272+ else [StringEntry(G(H), aQ), StringEntry(I(H), aQ)]
249273 }
250274
251275
252-func aL (aM,o) = {
253- let aN = invoke(C, "onStakeUnstakeLand", [o], nil)
254- if ((aN == aN))
276+func aU (aV,H) = if ((aV >= size(aI)))
277+ then throw("nftIndex out of bounds")
278+ else {
279+ let aW = (valueOrElse(getInteger(aC), -1) + 1)
280+ let aX = Issue(aK[aV], makeString_2C([aI[aV], toString(aW), aJ[aV]], a), 1, 0, false)
281+ let aY = calculateAssetId(aX)
282+ $Tuple2([aX, IntegerEntry(aC, aW), IntegerEntry(aD(toBase58String(aY)), aW), ScriptTransfer(H, 1, aY)], aY)
283+ }
284+
285+
286+func aZ (ba,o) = {
287+ let bb = invoke(C, "onStakeUnstakeLand", [o], nil)
288+ if ((bb == bb))
255289 then {
256- let aO = lastBlock.timestamp
257- let aP = L(o)
258- let aQ = ag(o)
259- let aR = valueOrElse(getInteger(aQ), 0)
260- if (if ((0 > aM))
261- then (0 > (aR + aM))
290+ let bc = lastBlock.timestamp
291+ let bd = M(o)
292+ let be = ai(o)
293+ let bf = valueOrElse(getInteger(be), 0)
294+ if (if ((0 > ba))
295+ then (0 > (bf + ba))
262296 else false)
263- then throw(((("You have only " + Y(aR, 8)) + " ACRES staked, tried to unstake ") + Y(-(aM), 8)))
297+ then throw(((("You have only " + Z(bf, 8)) + " ACRES staked, tried to unstake ") + Z(-(ba), 8)))
264298 else {
265- let aS = (aR + aM)
266- let aT = valueOrElse(getInteger(ai), 0)
267- let aU = ah(o)
268- let aV = valueOrElse(getInteger(aU), 0)
269- let aW = az(aS)
270- let aX = valueOrElse(getInteger(aj), 0)
271- $Tuple2([IntegerEntry(aP, lastBlock.timestamp), IntegerEntry(aQ, aS), IntegerEntry(ai, (aT + aM)), IntegerEntry(aU, aW), IntegerEntry(aj, ((aX - aV) + aW))], aN)
299+ let bg = (bf + ba)
300+ let bh = valueOrElse(getInteger(ak), 0)
301+ let bi = aj(o)
302+ let bj = valueOrElse(getInteger(bi), 0)
303+ let bk = aB(bg)
304+ let bl = valueOrElse(getInteger(al), 0)
305+ $Tuple2([IntegerEntry(bd, lastBlock.timestamp), IntegerEntry(be, bg), IntegerEntry(ak, (bh + ba)), IntegerEntry(bi, bk), IntegerEntry(al, ((bl - bj) + bk))], bb)
272306 }
273307 }
274308 else throw("Strict value is not equal to itself.")
275309 }
276310
277311
278-func aY (aZ) = {
279- let ba = valueOrErrorMessage(getInteger(C, ae), "WLGOLD is not issued yet")
280- let bb = assetBalance(C, i)
281- let bc = (assetBalance(B, i) - aZ)
282- let bd = (assetBalance(D, i) + valueOrElse(getInteger(D, af), 0))
283- let be = ((bc + bb) + bd)
284- fraction(be, d, ba)
312+func bm (bn) = {
313+ let bo = valueOrErrorMessage(getInteger(C, ag), "WLGOLD is not issued yet")
314+ let bp = assetBalance(C, i)
315+ let bq = (assetBalance(B, i) - bn)
316+ let br = (assetBalance(D, i) + valueOrElse(getInteger(D, ah), 0))
317+ let bs = ((bq + bp) + br)
318+ fraction(bs, d, bo)
285319 }
286320
287321
288-func bf () = {
289- let bb = assetBalance(C, i)
290- let bc = assetBalance(this, i)
291- let bd = (assetBalance(D, i) + valueOrElse(getInteger(D, af), 0))
292- let bg = (((bc + bb) + bd) / g)
293- let bh = valueOrElse(getInteger(aC), bg)
294- let bi = valueOrElse(getInteger(aB), 0)
295- let aO = lastBlock.timestamp
296- let bj = (bh + fraction(bg, (aO - bi), e))
297- let bk = min([bj, bg])
298- $Tuple2(IntegerEntry(aB, aO), bk)
322+func bt () = {
323+ let bp = assetBalance(C, i)
324+ let bq = assetBalance(this, i)
325+ let br = (assetBalance(D, i) + valueOrElse(getInteger(D, ah), 0))
326+ let bu = (((bq + bp) + br) / g)
327+ let bv = valueOrElse(getInteger(aH), bu)
328+ let bw = valueOrElse(getInteger(aG), 0)
329+ let bc = lastBlock.timestamp
330+ let bx = (bv + fraction(bu, (bc - bw), e))
331+ let by = min([bx, bu])
332+ $Tuple2(IntegerEntry(aG, bc), by)
299333 }
300334
301335
302-@Callable(aH)
303-func saveLastTx () = if (!(containsElement([C], aH.caller)))
336+@Callable(aM)
337+func saveLastTx () = if (!(containsElement([C], aM.caller)))
304338 then throw("Access denied")
305- else $Tuple2(aG(aH), 42)
339+ else $Tuple2(aL(aM), 42)
306340
307341
308342
309-@Callable(aH)
310-func constructorV1 (bl,bm) = if ((aH.caller != this))
343+@Callable(aM)
344+func constructorV1 (bz,bA) = if ((aM.caller != this))
311345 then throw("Permission denied")
312346 else {
313- let bn = addressFromStringValue(bm)
314-[IntegerEntry(I, getIntegerValue(bn, I)), BinaryEntry(J, getBinaryValue(bn, J)), StringEntry(u(), bl), StringEntry(E, bm)]
347+ let bB = addressFromStringValue(bA)
348+[IntegerEntry(J, getIntegerValue(bB, J)), BinaryEntry(K, getBinaryValue(bB, K)), StringEntry(u(), bz), StringEntry(E, bA)]
315349 }
316350
317351
318352
319-@Callable(aH)
320-func setBlocked (bo) = if ((aH.caller != this))
353+@Callable(aM)
354+func setBlocked (bC) = if ((aM.caller != this))
321355 then throw("permission denied")
322- else [BooleanEntry(F(), bo)]
356+ else [BooleanEntry(F(), bC)]
323357
324358
325359
326-@Callable(aH)
327-func unstakeAcres (bp) = {
328- let bq = aG(aH)
329- if ((0 >= bp))
360+@Callable(aM)
361+func unstakeAcres (bD) = {
362+ let bE = aL(aM)
363+ if ((0 >= bD))
330364 then throw("Amount should be positive")
331365 else {
332- let o = toString(aH.caller)
333- if ((size(aH.payments) != 0))
366+ let o = toString(aM.caller)
367+ if ((size(aM.payments) != 0))
334368 then throw("No payments required")
335369 else {
336- let br = (valueOrElse(getInteger(C, aA(o)), 0) + l)
337- if ((br > lastBlock.timestamp))
338- then throw(("You traded some WLGOLD, cannot unstake until " + toString(br)))
370+ let bF = (valueOrElse(getInteger(C, aF(o)), 0) + l)
371+ if ((bF > lastBlock.timestamp))
372+ then throw(("You traded some WLGOLD, cannot unstake until " + toString(bF)))
339373 else {
340- let bs = aL(-(bp), o)
341- let bt = bs._1
342- let bu = bs._2
343- $Tuple2(((bt :+ ScriptTransfer(aH.caller, bp, K)) ++ bq), bu)
374+ let bG = aZ(-(bD), o)
375+ let bH = bG._1
376+ let bI = bG._2
377+ $Tuple2(((bH :+ ScriptTransfer(aM.caller, bD, L)) ++ bE), bI)
344378 }
345379 }
346380 }
348382
349383
350384
351-@Callable(aH)
385+@Callable(aM)
352386 func stakeAcres () = {
353- let bq = aG(aH)
354- let o = toString(aH.caller)
355- if ((size(aH.payments) != 1))
387+ let bE = aL(aM)
388+ let o = toString(aM.caller)
389+ if ((size(aM.payments) != 1))
356390 then throw("exactly 1 payment must be attached")
357391 else {
358- let bv = aH.payments[0]
359- let aM = bv.amount
360- if (if (!(isDefined(bv.assetId)))
392+ let bJ = aM.payments[0]
393+ let ba = bJ.amount
394+ if (if (!(isDefined(bJ.assetId)))
361395 then true
362- else (value(bv.assetId) != K))
396+ else (value(bJ.assetId) != L))
363397 then throw("ACRES payments only!")
364398 else {
365- let bw = aL(aM, o)
366- let bt = bw._1
367- let bu = bw._2
368- $Tuple2((bt ++ bq), bu)
399+ let bK = aZ(ba, o)
400+ let bH = bK._1
401+ let bI = bK._2
402+ $Tuple2((bH ++ bE), bI)
369403 }
370404 }
371405 }
372406
373407
374408
375-@Callable(aH)
409+@Callable(aM)
376410 func buyAcres () = {
377- let bq = aG(aH)
378- if ((size(aH.payments) != 1))
411+ let bE = aL(aM)
412+ if ((size(aM.payments) != 1))
379413 then throw("exactly 1 payment must be attached")
380414 else {
381- let bv = aH.payments[0]
382- let bx = bv.amount
383- if (if (!(isDefined(bv.assetId)))
415+ let bJ = aM.payments[0]
416+ let bL = bJ.amount
417+ if (if (!(isDefined(bJ.assetId)))
384418 then true
385- else (value(bv.assetId) != i))
419+ else (value(bJ.assetId) != i))
386420 then throw("USDT payments only!")
387- else if ((b > bx))
388- then throw((("Min payment should be " + Y(b, 6)) + " USDT"))
421+ else if ((b > bL))
422+ then throw((("Min payment should be " + Z(b, 6)) + " USDT"))
389423 else {
390- let by = (bx * f)
391- let bz = fraction(bx, d, aY(bx))
392- let bA = addressFromStringValue(getStringValue(E))
393- let bB = invoke(bA, "requestAcresCallback", [by], nil)
394- if ((bB == bB))
424+ let bM = (bL * f)
425+ let bN = fraction(bL, d, bm(bL))
426+ let bO = addressFromStringValue(getStringValue(E))
427+ let bP = invoke(bO, "requestAcresCallback", [bM], nil)
428+ if ((bP == bP))
395429 then {
396- let bC = P(invoke(C, "burnWlgold", [bz], nil))
397- $Tuple2(([ScriptTransfer(aH.caller, by, K)] ++ bq), bC)
430+ let bQ = Q(invoke(C, "burnWlgold", [bN], nil))
431+ $Tuple2(([ScriptTransfer(aM.caller, bM, L)] ++ bE), bQ)
398432 }
399433 else throw("Strict value is not equal to itself.")
400434 }
403437
404438
405439
406-@Callable(aH)
407-func buyAcresREADONLY (bx) = {
408- let by = (bx * f)
409- let bD = fraction(bx, d, aY(bx))
410- $Tuple2(nil, [by, b, by, bD])
440+@Callable(aM)
441+func buyAcresREADONLY (bL) = {
442+ let bM = (bL * f)
443+ let bR = fraction(bL, d, bm(bL))
444+ $Tuple2(nil, [bM, b, bM, bR])
411445 }
412446
413447
414448
415-@Callable(aH)
449+@Callable(aM)
416450 func sellAcres () = {
417- let bq = aG(aH)
418- if ((size(aH.payments) != 1))
451+ let bE = aL(aM)
452+ if ((size(aM.payments) != 1))
419453 then throw("exactly 1 payment must be attached")
420454 else {
421- let bv = aH.payments[0]
422- let by = bv.amount
423- if (if (!(isDefined(bv.assetId)))
455+ let bJ = aM.payments[0]
456+ let bM = bJ.amount
457+ if (if (!(isDefined(bJ.assetId)))
424458 then true
425- else (value(bv.assetId) != K))
459+ else (value(bJ.assetId) != L))
426460 then throw("ACRES payments only!")
427- else if ((c > by))
428- then throw((("Min payment should be " + Y(c, 8)) + " ACRES"))
461+ else if ((c > bM))
462+ then throw((("Min payment should be " + Z(c, 8)) + " ACRES"))
429463 else {
430- let H = toString(aH.caller)
431- let bE = bf()
432- let bF = bE._1
433- let bG = bE._2
434- let bH = (bG * f)
435- if ((by > bH))
436- then throw((("You can sell max " + Y(bH, 8)) + " ACRES"))
464+ let H = toString(aM.caller)
465+ let bS = bt()
466+ let bT = bS._1
467+ let bU = bS._2
468+ let bV = (bU * f)
469+ if ((bM > bV))
470+ then throw((("You can sell max " + Z(bV, 8)) + " ACRES"))
437471 else {
438- let bx = ((by / f) / 2)
439- $Tuple2(([bF, IntegerEntry(aC, (bG - bx)), ScriptTransfer(aH.caller, bx, i)] ++ bq), bx)
472+ let bL = ((bM / f) / 2)
473+ $Tuple2(([bT, IntegerEntry(aH, (bU - bL)), ScriptTransfer(aM.caller, bL, i)] ++ bE), bL)
440474 }
441475 }
442476 }
444478
445479
446480
447-@Callable(aH)
448-func sellAcresREADONLY (o,by) = {
449- let bI = bf()
450- let bF = bI._1
451- let bG = bI._2
452- let bx = ((by / f) / 2)
453- $Tuple2(nil, [bx, c, (bG * f), 0])
481+@Callable(aM)
482+func sellAcresREADONLY (o,bM) = {
483+ let bW = bt()
484+ let bT = bW._1
485+ let bU = bW._2
486+ let bL = ((bM / f) / 2)
487+ $Tuple2(nil, [bL, c, (bU * f), 0])
454488 }
455489
456490
457491
458-@Callable(aH)
459-func convertOldStakes () = if ((aH.caller != this))
492+@Callable(aM)
493+func convertOldStakes () = if ((aM.caller != this))
460494 then throw("Temporarily disabled")
461495 else {
462- let o = toString(aH.caller)
463- if ((size(aH.payments) != 0))
496+ let o = toString(aM.caller)
497+ if ((size(aM.payments) != 0))
464498 then throw("No payments required")
465499 else {
466- let bA = addressFromStringValue(getStringValue(E))
467- let bp = valueOrElse(getInteger(bA, ag(o)), 0)
468- let bJ = if ((bp > 0))
469- then X(invoke(bA, "unstakeAcresCallback", [bp, o], nil))
500+ let bO = addressFromStringValue(getStringValue(E))
501+ let bD = valueOrElse(getInteger(bO, ai(o)), 0)
502+ let bX = if ((bD > 0))
503+ then Y(invoke(bO, "unstakeAcresCallback", [bD, o], nil))
470504 else $Tuple2(0, 0)
471- let bK = addressFromStringValue(m)
472- let bL = getString(bK, M(o))
473- let bM = if (isDefined(bL))
505+ let bY = addressFromStringValue(m)
506+ let bZ = getString(bY, N(o))
507+ let ca = if (isDefined(bZ))
474508 then {
475- let bN = split_51C(value(bL), "_")
476- func bO (aq,bP) = if ((bP == ""))
509+ let cb = split_51C(value(bZ), "_")
510+ func cc (as,cd) = if ((cd == ""))
477511 then throw("landAssetId is required")
478512 else {
479- let bQ = S(invoke(bK, "unstakeLandCallback", [bP, o], nil))
480- $Tuple4((aq._1 + bQ._1), (aq._2 + bQ._2), (aq._3 + bQ._3), (aq._4 + bQ._4))
513+ let ce = T(invoke(bY, "unstakeLandCallback", [cd, o], nil))
514+ $Tuple4((as._1 + ce._1), (as._2 + ce._2), (as._3 + ce._3), (as._4 + ce._4))
481515 }
482516
483- let bR = {
484- let as = bN
485- let at = size(as)
486- let au = $Tuple4(0, 0, 0, 0)
487- func av (aw,ax) = if ((ax >= at))
488- then aw
489- else bO(aw, as[ax])
517+ let cf = {
518+ let au = cb
519+ let av = size(au)
520+ let aw = $Tuple4(0, 0, 0, 0)
521+ func ax (ay,az) = if ((az >= av))
522+ then ay
523+ else cc(ay, au[az])
490524
491- func ay (aw,ax) = if ((ax >= at))
492- then aw
525+ func aA (ay,az) = if ((az >= av))
526+ then ay
493527 else throw("List size exceeds 100")
494528
495- ay(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(au, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
529+ aA(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(aw, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
496530 }
497- let bS = invoke(bK, "unstakeLandsFinalizeCallback", [o], nil)
498- if ((bS == bS))
531+ let cg = invoke(bY, "unstakeLandsFinalizeCallback", [o], nil)
532+ if ((cg == cg))
499533 then {
500- let bB = invoke(bA, "requestAcresCallback", [(((bR._1 + bR._2) + bR._3) + bR._4)], nil)
501- if ((bB == bB))
534+ let bP = invoke(bO, "requestAcresCallback", [(((cf._1 + cf._2) + cf._3) + cf._4)], nil)
535+ if ((bP == bP))
502536 then {
503- let bT = aI(ak)
504- let aK = bT._1
505- let bU = bT._2
506- $Tuple5(bR._1, bR._2, bR._3, bR._4, [aK, ScriptTransfer(aH.caller, 1, bU)])
537+ let ch = aU(am, aM.caller)
538+ let ci = ch._1
539+ let aY = ch._2
540+ $Tuple5(cf._1, cf._2, cf._3, cf._4, ci)
507541 }
508542 else throw("Strict value is not equal to itself.")
509543 }
510544 else throw("Strict value is not equal to itself.")
511545 }
512546 else $Tuple5(0, 0, 0, 0, nil)
513- let bV = valueOrElse(getString(bK, O(o)), "")
514- let bW = if ((bV != ""))
515- then W(invoke(bK, "unstakeDuckCallback", [bV, o], nil))
547+ let cj = valueOrElse(getString(bY, P(o)), "")
548+ let ck = if ((cj != ""))
549+ then X(invoke(bY, "unstakeDuckCallback", [cj, o], nil))
516550 else $Tuple3(0, 0, 0)
517- let bX = aL((((((((bJ._1 + bM._1) + bM._2) + bM._3) + bM._4) + bW._1) + bW._2) + bW._3), o)
518- $Tuple2((bM._5 ++ bX._1), bX._2)
551+ let cl = aZ((((((((bX._1 + ca._1) + ca._2) + ca._3) + ca._4) + ck._1) + ck._2) + ck._3), o)
552+ $Tuple2((ca._5 ++ cl._1), cl._2)
519553 }
520554 }
521555
522556
523557
524-@Callable(aH)
558+@Callable(aM)
525559 func unstakeLandsREADONLY (o) = {
526- let bK = addressFromStringValue(m)
527- let bL = getString(bK, M(o))
528- let bM = if (isDefined(bL))
560+ let bY = addressFromStringValue(m)
561+ let bZ = getString(bY, N(o))
562+ let ca = if (isDefined(bZ))
529563 then {
530- let bN = split_51C(value(bL), "_")
531- func bO (aq,bP) = if ((bP == ""))
564+ let cb = split_51C(value(bZ), "_")
565+ func cc (as,cd) = if ((cd == ""))
532566 then throw("landAssetId is required")
533567 else {
534- let bQ = V(invoke(bK, "unstakeLandREADONLY", [bP, o], nil))
535- $Tuple4((aq._1 + bQ._1), (aq._2 + bQ._2), (aq._3 + bQ._3), (aq._4 + bQ._4))
568+ let ce = W(invoke(bY, "unstakeLandREADONLY", [cd, o], nil))
569+ $Tuple4((as._1 + ce._1), (as._2 + ce._2), (as._3 + ce._3), (as._4 + ce._4))
536570 }
537571
538- let as = bN
539- let at = size(as)
540- let au = $Tuple4(0, 0, 0, 0)
541- func av (aw,ax) = if ((ax >= at))
542- then aw
543- else bO(aw, as[ax])
572+ let au = cb
573+ let av = size(au)
574+ let aw = $Tuple4(0, 0, 0, 0)
575+ func ax (ay,az) = if ((az >= av))
576+ then ay
577+ else cc(ay, au[az])
544578
545- func ay (aw,ax) = if ((ax >= at))
546- then aw
579+ func aA (ay,az) = if ((az >= av))
580+ then ay
547581 else throw("List size exceeds 100")
548582
549- ay(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(au, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
583+ aA(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(aw, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
550584 }
551585 else $Tuple4(0, 0, 0, 0)
552- $Tuple2(nil, bM)
586+ $Tuple2(nil, ca)
553587 }
554588
555589
556590
557-@Callable(aH)
558-func stakeAcresCallback (H) = if ((aH.caller != addressFromStringValue(m)))
591+@Callable(aM)
592+func stakeAcresCallback (H) = if ((aM.caller != addressFromStringValue(m)))
559593 then throw("Permission denied")
560- else aL(aH.payments[0].amount, H)
594+ else aZ(aM.payments[0].amount, H)
561595
562596
563597
564-@Callable(aH)
565-func simulateStakeAcresREADONLY (o,bY) = {
566- let aQ = ag(o)
567- let aS = (valueOrElse(getInteger(aQ), 0) + bY)
568- let aT = valueOrElse(getInteger(ai), 0)
569- let aU = ah(o)
570- let aV = valueOrElse(getInteger(aU), 0)
571- let aW = az(aS)
572- let aX = valueOrElse(getInteger(aj), 0)
573- let bZ = ((aX - aV) + aW)
574- $Tuple2(nil, [aV, aW, aX, bZ])
598+@Callable(aM)
599+func simulateStakeAcresREADONLY (o,cm) = {
600+ let be = ai(o)
601+ let bg = (valueOrElse(getInteger(be), 0) + cm)
602+ let bh = valueOrElse(getInteger(ak), 0)
603+ let bi = aj(o)
604+ let bj = valueOrElse(getInteger(bi), 0)
605+ let bk = aB(bg)
606+ let bl = valueOrElse(getInteger(al), 0)
607+ let cn = ((bl - bj) + bk)
608+ $Tuple2(nil, [bj, bk, bl, cn])
575609 }
576610
577611
578612
579-@Callable(aH)
580-func issueNFT (ca,aJ) = if ((aH.caller != C))
613+@Callable(aM)
614+func issueNFT (co,aV) = if ((aM.caller != C))
581615 then throw("Permission denied")
582- else {
583- let cb = aI(aJ)
584- let aK = cb._1
585- let bU = cb._2
586- $Tuple2([aK, ScriptTransfer(addressFromStringValue(ca), 1, bU)], bU)
587- }
616+ else aU(aV, addressFromStringValue(co))
588617
589618
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000000
77
88 let c = 10000000
99
1010 let d = 100000000
1111
1212 let e = 86400000
1313
1414 let f = 10
1515
1616 let g = 100
1717
1818 let h = take(drop(this.bytes, 1), 1)
1919
2020 let i = {
2121 let j = h
2222 if ((base58'2W' == j))
2323 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
2424 else if ((base58'2T' == j))
2525 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
2626 else throw("Unknown chain")
2727 }
2828
2929 let k = {
3030 let j = h
3131 if ((base58'2W' == j))
3232 then "3PFwYta8biEz31zpeFe5DJK8wE5trSpQVF8"
3333 else if ((base58'2T' == j))
3434 then "3N7UuYar6264P58FBhVWKPQAh4Yua2hgngv"
3535 else throw("Unknown chain")
3636 }
3737
3838 let l = {
3939 let j = h
4040 if ((base58'2W' == j))
4141 then e
4242 else if ((base58'2T' == j))
4343 then 60000
4444 else throw("Unknown chain")
4545 }
4646
4747 let m = {
4848 let j = h
4949 if ((base58'2W' == j))
5050 then "3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1"
5151 else if ((base58'2T' == j))
5252 then "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm"
5353 else throw("Unknown chain")
5454 }
5555
5656 func n (o,p) = valueOrErrorMessage(getString(o, p), makeString(["mandatory ", toString(o), ".", p, " is not defined"], ""))
5757
5858
5959 let q = 1
6060
6161 let r = 2
6262
6363 let s = 5
6464
6565 func t () = "%s__restConfig"
6666
6767
6868 func u () = "%s__rest2Addr"
6969
7070
7171 func v (w) = split_4C(n(w, t()), a)
7272
7373
7474 func x (y,z) = valueOrErrorMessage(addressFromString(y[z]), ("Rest cfg doesn't contain address at index " + toString(z)))
7575
7676
7777 let A = addressFromStringValue(valueOrElse(getString(this, u()), k))
7878
7979 let y = v(A)
8080
8181 let B = x(y, q)
8282
8383 let C = x(y, r)
8484
8585 let D = x(y, s)
8686
8787 let E = "oldAcresContract"
8888
8989 func F () = "contractsBlocked"
9090
9191
92-func G (H) = ("lastTxIdByUser_" + H)
92+func G (H) = ("lastWeekTxIdByUser_" + H)
9393
9494
95-let I = "acresIssuedAmount"
96-
97-let J = "acresAssetId"
98-
99-let K = valueOrErrorMessage(getBinary(B, J), "ACRES is not issued yet")
100-
101-func L (H) = ("acresStakedTimeByUser_" + H)
95+func I (H) = ("curWeekTxIdByUser_" + H)
10296
10397
104-func M (N) = ("stakedLandsByOwner_" + N)
98+let J = "acresIssuedAmount"
99+
100+let K = "acresAssetId"
101+
102+let L = valueOrErrorMessage(getBinary(B, K), "ACRES is not issued yet")
103+
104+func M (H) = ("acresStakedTimeByUser_" + H)
105105
106106
107-func O (N) = ("stakedDuckByOwner_" + N)
107+func N (O) = ("stakedLandsByOwner_" + O)
108108
109109
110-func P (Q) = {
111- let j = Q
110+func P (O) = ("stakedDuckByOwner_" + O)
111+
112+
113+func Q (R) = {
114+ let j = R
112115 if ($isInstanceOf(j, "Int"))
113116 then {
114- let R = j
115- R
117+ let S = j
118+ S
116119 }
117120 else throw("fail to cast into Int")
118121 }
119122
120123
121-func S (T) = {
122- let j = T
124+func T (U) = {
125+ let j = U
123126 if ($isInstanceOf(j, "(Int, Int, Int, Int, Int)"))
124127 then {
125- let U = j
126- U
128+ let V = j
129+ V
127130 }
128131 else throw("fail to cast into (Int, Int, Int, Int, Int)")
129132 }
130133
131134
132-func V (T) = {
133- let j = T
135+func W (U) = {
136+ let j = U
134137 if ($isInstanceOf(j, "(Int, Int, Int, Int)"))
135138 then {
136- let U = j
137- U
139+ let V = j
140+ V
138141 }
139142 else throw("fail to cast into (Int, Int, Int, Int)")
140143 }
141144
142145
143-func W (T) = {
144- let j = T
146+func X (U) = {
147+ let j = U
145148 if ($isInstanceOf(j, "(Int, Int, Int)"))
146149 then {
147- let U = j
148- U
150+ let V = j
151+ V
149152 }
150153 else throw("fail to cast into (Int, Int, Int)")
151154 }
152155
153156
154-func X (T) = {
155- let j = T
157+func Y (U) = {
158+ let j = U
156159 if ($isInstanceOf(j, "(Int, Int)"))
157160 then {
158- let U = j
159- U
161+ let V = j
162+ V
160163 }
161164 else throw("fail to cast into (Int, Int)")
162165 }
163166
164167
165-func Y (T,Z) = {
166- let aa = pow(10, 0, Z, 0, 0, DOWN)
167- let ab = toString((T % aa))
168- let ac = drop(toString(aa), (1 + size(ab)))
169- (((toString((T / aa)) + ".") + ac) + ab)
168+func Z (U,aa) = {
169+ let ab = pow(10, 0, aa, 0, 0, DOWN)
170+ let ac = toString((U % ab))
171+ let ad = drop(toString(ab), (1 + size(ac)))
172+ (((toString((U / ab)) + ".") + ad) + ac)
170173 }
171174
172175
173-let ad = 100000000
176+let ae = 100000000
174177
175-let ae = "wlg_issuedAmount"
178+let af = 10080
176179
177-let af = "zbill_issuedAmount"
180+let ag = "wlg_issuedAmount"
178181
179-func ag (H) = ("acresStakedAmountByUser_" + H)
182+let ah = "zbill_issuedAmount"
183+
184+func ai (H) = ("acresStakedAmountByUser_" + H)
180185
181186
182-func ah (H) = ("farmingPowerByUser_" + H)
187+func aj (H) = ("farmingPowerByUser_" + H)
183188
184189
185-let ai = "acresStakedAmountTotal"
190+let ak = "acresStakedAmountTotal"
186191
187-let aj = "totalFarmingPower"
192+let al = "totalFarmingPower"
188193
189-let ak = 0
194+let am = 0
190195
191-let al = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
196+let an = [0, 10, 20, 40, 80, 150, 250, 400, 700, 1000]
192197
193-func am (an) = {
194- let ao = ((an + 99999999) / ad)
195- func ap (aq,ar) = if ((ar >= ao))
196- then aq
197- else (aq + 1)
198+func ao (ap) = {
199+ let aq = ((ap + 99999999) / ae)
200+ func ar (as,at) = if ((at >= aq))
201+ then as
202+ else (as + 1)
198203
199- let as = al
200- let at = size(as)
201- let au = 0
202- func av (aw,ax) = if ((ax >= at))
203- then aw
204- else ap(aw, as[ax])
204+ let au = an
205+ let av = size(au)
206+ let aw = 0
207+ func ax (ay,az) = if ((az >= av))
208+ then ay
209+ else ar(ay, au[az])
205210
206- func ay (aw,ax) = if ((ax >= at))
207- then aw
211+ func aA (ay,az) = if ((az >= av))
212+ then ay
208213 else throw("List size exceeds 10")
209214
210- ay(av(av(av(av(av(av(av(av(av(av(au, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
215+ aA(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(aw, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
211216 }
212217
213218
214-func az (an) = ((an * 20) * (am(an) + 4))
219+func aB (ap) = ((ap * 20) * (ao(ap) + 4))
215220
216221
217-func aA (H) = ("lastArbTimeUser_" + H)
222+let aC = "nftTotalIssued"
223+
224+func aD (aE) = ("nftNumberByAssetId_" + aE)
218225
219226
220-let aB = "lastAcresSellTime"
227+func aF (H) = ("lastArbTimeUser_" + H)
221228
222-let aC = "lastLimitLeft"
223229
224-let aD = {
230+let aG = "lastAcresSellTime"
231+
232+let aH = "lastLimitLeft"
233+
234+let aI = {
225235 let j = h
226236 if ((base58'2W' == j))
227237 then nil
228238 else if ((base58'2T' == j))
229- then nil
239+ then ["Cy1b1cu6E5Vx67Mo2wvWi2pvJzT28exsb81maoyYPmvu", "6GEyPU5H2giZahjKnUfZ4djSMacEhSWswVp23Xr8B7wy"]
230240 else throw("Unknown chain")
231241 }
232242
233-let aE = ["FarmingPower +3% NFT for WavesLands loyal players", "FarmingPower +1% NFT"]
243+let aJ = ["{\"name\": \"Gold shovel\", \"description\": \"Reward for early birds\", \"rare\": \"Promo\", \"bonus\": 3, \"bonusType\": \"FarmPower\"}", "{\"name\": \"Pickaxe\", \"description\": \"Increases FarmPower\", \"rare\": \"Common\", \"bonus\": 1, \"bonusType\": \"FarmPower\"}"]
234244
235-let aF = ["FPOWER+3%", "FPOWER1"]
245+let aK = ["SHOVEL-P3", "PICKAXE-C1"]
236246
237-func aG (aH) = if (if ((aH.originCaller != A))
247+func aL (aM) = if (if ((aM.originCaller != A))
238248 then valueOrElse(getBoolean(F()), false)
239249 else false)
240250 then throw("Contracts are under maintenance")
241- else [StringEntry(G(toString(aH.originCaller)), toBase58String(aH.transactionId))]
242-
243-
244-func aI (aJ) = if ((aJ >= size(aD)))
245- then throw("nftIndex out of bounds")
246251 else {
247- let aK = Issue(aF[aJ], ((aD[aJ] + a) + aE[aJ]), 1, 0, false)
248- $Tuple2(aK, calculateAssetId(aK))
252+ let H = toString(aM.originCaller)
253+ let aN = (height / af)
254+ let aO = getString(G(H))
255+ let aP = toBase58String(aM.transactionId)
256+ let aQ = ((toString(aN) + "_") + aP)
257+ if (isDefined(aO))
258+ then {
259+ let aR = split(value(aO), "_")
260+ if ((aR[0] == toString(aN)))
261+ then [StringEntry(G(H), aQ), StringEntry(I(H), aQ)]
262+ else if ((aR[0] == toString((aN - 1))))
263+ then [StringEntry(I(H), aQ)]
264+ else {
265+ let aS = getStringValue(G(H))
266+ let aT = split(aS, "_")
267+ if ((aT[0] == toString(aN)))
268+ then [StringEntry(I(H), aQ)]
269+ else [StringEntry(G(H), aS), StringEntry(I(H), aQ)]
270+ }
271+ }
272+ else [StringEntry(G(H), aQ), StringEntry(I(H), aQ)]
249273 }
250274
251275
252-func aL (aM,o) = {
253- let aN = invoke(C, "onStakeUnstakeLand", [o], nil)
254- if ((aN == aN))
276+func aU (aV,H) = if ((aV >= size(aI)))
277+ then throw("nftIndex out of bounds")
278+ else {
279+ let aW = (valueOrElse(getInteger(aC), -1) + 1)
280+ let aX = Issue(aK[aV], makeString_2C([aI[aV], toString(aW), aJ[aV]], a), 1, 0, false)
281+ let aY = calculateAssetId(aX)
282+ $Tuple2([aX, IntegerEntry(aC, aW), IntegerEntry(aD(toBase58String(aY)), aW), ScriptTransfer(H, 1, aY)], aY)
283+ }
284+
285+
286+func aZ (ba,o) = {
287+ let bb = invoke(C, "onStakeUnstakeLand", [o], nil)
288+ if ((bb == bb))
255289 then {
256- let aO = lastBlock.timestamp
257- let aP = L(o)
258- let aQ = ag(o)
259- let aR = valueOrElse(getInteger(aQ), 0)
260- if (if ((0 > aM))
261- then (0 > (aR + aM))
290+ let bc = lastBlock.timestamp
291+ let bd = M(o)
292+ let be = ai(o)
293+ let bf = valueOrElse(getInteger(be), 0)
294+ if (if ((0 > ba))
295+ then (0 > (bf + ba))
262296 else false)
263- then throw(((("You have only " + Y(aR, 8)) + " ACRES staked, tried to unstake ") + Y(-(aM), 8)))
297+ then throw(((("You have only " + Z(bf, 8)) + " ACRES staked, tried to unstake ") + Z(-(ba), 8)))
264298 else {
265- let aS = (aR + aM)
266- let aT = valueOrElse(getInteger(ai), 0)
267- let aU = ah(o)
268- let aV = valueOrElse(getInteger(aU), 0)
269- let aW = az(aS)
270- let aX = valueOrElse(getInteger(aj), 0)
271- $Tuple2([IntegerEntry(aP, lastBlock.timestamp), IntegerEntry(aQ, aS), IntegerEntry(ai, (aT + aM)), IntegerEntry(aU, aW), IntegerEntry(aj, ((aX - aV) + aW))], aN)
299+ let bg = (bf + ba)
300+ let bh = valueOrElse(getInteger(ak), 0)
301+ let bi = aj(o)
302+ let bj = valueOrElse(getInteger(bi), 0)
303+ let bk = aB(bg)
304+ let bl = valueOrElse(getInteger(al), 0)
305+ $Tuple2([IntegerEntry(bd, lastBlock.timestamp), IntegerEntry(be, bg), IntegerEntry(ak, (bh + ba)), IntegerEntry(bi, bk), IntegerEntry(al, ((bl - bj) + bk))], bb)
272306 }
273307 }
274308 else throw("Strict value is not equal to itself.")
275309 }
276310
277311
278-func aY (aZ) = {
279- let ba = valueOrErrorMessage(getInteger(C, ae), "WLGOLD is not issued yet")
280- let bb = assetBalance(C, i)
281- let bc = (assetBalance(B, i) - aZ)
282- let bd = (assetBalance(D, i) + valueOrElse(getInteger(D, af), 0))
283- let be = ((bc + bb) + bd)
284- fraction(be, d, ba)
312+func bm (bn) = {
313+ let bo = valueOrErrorMessage(getInteger(C, ag), "WLGOLD is not issued yet")
314+ let bp = assetBalance(C, i)
315+ let bq = (assetBalance(B, i) - bn)
316+ let br = (assetBalance(D, i) + valueOrElse(getInteger(D, ah), 0))
317+ let bs = ((bq + bp) + br)
318+ fraction(bs, d, bo)
285319 }
286320
287321
288-func bf () = {
289- let bb = assetBalance(C, i)
290- let bc = assetBalance(this, i)
291- let bd = (assetBalance(D, i) + valueOrElse(getInteger(D, af), 0))
292- let bg = (((bc + bb) + bd) / g)
293- let bh = valueOrElse(getInteger(aC), bg)
294- let bi = valueOrElse(getInteger(aB), 0)
295- let aO = lastBlock.timestamp
296- let bj = (bh + fraction(bg, (aO - bi), e))
297- let bk = min([bj, bg])
298- $Tuple2(IntegerEntry(aB, aO), bk)
322+func bt () = {
323+ let bp = assetBalance(C, i)
324+ let bq = assetBalance(this, i)
325+ let br = (assetBalance(D, i) + valueOrElse(getInteger(D, ah), 0))
326+ let bu = (((bq + bp) + br) / g)
327+ let bv = valueOrElse(getInteger(aH), bu)
328+ let bw = valueOrElse(getInteger(aG), 0)
329+ let bc = lastBlock.timestamp
330+ let bx = (bv + fraction(bu, (bc - bw), e))
331+ let by = min([bx, bu])
332+ $Tuple2(IntegerEntry(aG, bc), by)
299333 }
300334
301335
302-@Callable(aH)
303-func saveLastTx () = if (!(containsElement([C], aH.caller)))
336+@Callable(aM)
337+func saveLastTx () = if (!(containsElement([C], aM.caller)))
304338 then throw("Access denied")
305- else $Tuple2(aG(aH), 42)
339+ else $Tuple2(aL(aM), 42)
306340
307341
308342
309-@Callable(aH)
310-func constructorV1 (bl,bm) = if ((aH.caller != this))
343+@Callable(aM)
344+func constructorV1 (bz,bA) = if ((aM.caller != this))
311345 then throw("Permission denied")
312346 else {
313- let bn = addressFromStringValue(bm)
314-[IntegerEntry(I, getIntegerValue(bn, I)), BinaryEntry(J, getBinaryValue(bn, J)), StringEntry(u(), bl), StringEntry(E, bm)]
347+ let bB = addressFromStringValue(bA)
348+[IntegerEntry(J, getIntegerValue(bB, J)), BinaryEntry(K, getBinaryValue(bB, K)), StringEntry(u(), bz), StringEntry(E, bA)]
315349 }
316350
317351
318352
319-@Callable(aH)
320-func setBlocked (bo) = if ((aH.caller != this))
353+@Callable(aM)
354+func setBlocked (bC) = if ((aM.caller != this))
321355 then throw("permission denied")
322- else [BooleanEntry(F(), bo)]
356+ else [BooleanEntry(F(), bC)]
323357
324358
325359
326-@Callable(aH)
327-func unstakeAcres (bp) = {
328- let bq = aG(aH)
329- if ((0 >= bp))
360+@Callable(aM)
361+func unstakeAcres (bD) = {
362+ let bE = aL(aM)
363+ if ((0 >= bD))
330364 then throw("Amount should be positive")
331365 else {
332- let o = toString(aH.caller)
333- if ((size(aH.payments) != 0))
366+ let o = toString(aM.caller)
367+ if ((size(aM.payments) != 0))
334368 then throw("No payments required")
335369 else {
336- let br = (valueOrElse(getInteger(C, aA(o)), 0) + l)
337- if ((br > lastBlock.timestamp))
338- then throw(("You traded some WLGOLD, cannot unstake until " + toString(br)))
370+ let bF = (valueOrElse(getInteger(C, aF(o)), 0) + l)
371+ if ((bF > lastBlock.timestamp))
372+ then throw(("You traded some WLGOLD, cannot unstake until " + toString(bF)))
339373 else {
340- let bs = aL(-(bp), o)
341- let bt = bs._1
342- let bu = bs._2
343- $Tuple2(((bt :+ ScriptTransfer(aH.caller, bp, K)) ++ bq), bu)
374+ let bG = aZ(-(bD), o)
375+ let bH = bG._1
376+ let bI = bG._2
377+ $Tuple2(((bH :+ ScriptTransfer(aM.caller, bD, L)) ++ bE), bI)
344378 }
345379 }
346380 }
347381 }
348382
349383
350384
351-@Callable(aH)
385+@Callable(aM)
352386 func stakeAcres () = {
353- let bq = aG(aH)
354- let o = toString(aH.caller)
355- if ((size(aH.payments) != 1))
387+ let bE = aL(aM)
388+ let o = toString(aM.caller)
389+ if ((size(aM.payments) != 1))
356390 then throw("exactly 1 payment must be attached")
357391 else {
358- let bv = aH.payments[0]
359- let aM = bv.amount
360- if (if (!(isDefined(bv.assetId)))
392+ let bJ = aM.payments[0]
393+ let ba = bJ.amount
394+ if (if (!(isDefined(bJ.assetId)))
361395 then true
362- else (value(bv.assetId) != K))
396+ else (value(bJ.assetId) != L))
363397 then throw("ACRES payments only!")
364398 else {
365- let bw = aL(aM, o)
366- let bt = bw._1
367- let bu = bw._2
368- $Tuple2((bt ++ bq), bu)
399+ let bK = aZ(ba, o)
400+ let bH = bK._1
401+ let bI = bK._2
402+ $Tuple2((bH ++ bE), bI)
369403 }
370404 }
371405 }
372406
373407
374408
375-@Callable(aH)
409+@Callable(aM)
376410 func buyAcres () = {
377- let bq = aG(aH)
378- if ((size(aH.payments) != 1))
411+ let bE = aL(aM)
412+ if ((size(aM.payments) != 1))
379413 then throw("exactly 1 payment must be attached")
380414 else {
381- let bv = aH.payments[0]
382- let bx = bv.amount
383- if (if (!(isDefined(bv.assetId)))
415+ let bJ = aM.payments[0]
416+ let bL = bJ.amount
417+ if (if (!(isDefined(bJ.assetId)))
384418 then true
385- else (value(bv.assetId) != i))
419+ else (value(bJ.assetId) != i))
386420 then throw("USDT payments only!")
387- else if ((b > bx))
388- then throw((("Min payment should be " + Y(b, 6)) + " USDT"))
421+ else if ((b > bL))
422+ then throw((("Min payment should be " + Z(b, 6)) + " USDT"))
389423 else {
390- let by = (bx * f)
391- let bz = fraction(bx, d, aY(bx))
392- let bA = addressFromStringValue(getStringValue(E))
393- let bB = invoke(bA, "requestAcresCallback", [by], nil)
394- if ((bB == bB))
424+ let bM = (bL * f)
425+ let bN = fraction(bL, d, bm(bL))
426+ let bO = addressFromStringValue(getStringValue(E))
427+ let bP = invoke(bO, "requestAcresCallback", [bM], nil)
428+ if ((bP == bP))
395429 then {
396- let bC = P(invoke(C, "burnWlgold", [bz], nil))
397- $Tuple2(([ScriptTransfer(aH.caller, by, K)] ++ bq), bC)
430+ let bQ = Q(invoke(C, "burnWlgold", [bN], nil))
431+ $Tuple2(([ScriptTransfer(aM.caller, bM, L)] ++ bE), bQ)
398432 }
399433 else throw("Strict value is not equal to itself.")
400434 }
401435 }
402436 }
403437
404438
405439
406-@Callable(aH)
407-func buyAcresREADONLY (bx) = {
408- let by = (bx * f)
409- let bD = fraction(bx, d, aY(bx))
410- $Tuple2(nil, [by, b, by, bD])
440+@Callable(aM)
441+func buyAcresREADONLY (bL) = {
442+ let bM = (bL * f)
443+ let bR = fraction(bL, d, bm(bL))
444+ $Tuple2(nil, [bM, b, bM, bR])
411445 }
412446
413447
414448
415-@Callable(aH)
449+@Callable(aM)
416450 func sellAcres () = {
417- let bq = aG(aH)
418- if ((size(aH.payments) != 1))
451+ let bE = aL(aM)
452+ if ((size(aM.payments) != 1))
419453 then throw("exactly 1 payment must be attached")
420454 else {
421- let bv = aH.payments[0]
422- let by = bv.amount
423- if (if (!(isDefined(bv.assetId)))
455+ let bJ = aM.payments[0]
456+ let bM = bJ.amount
457+ if (if (!(isDefined(bJ.assetId)))
424458 then true
425- else (value(bv.assetId) != K))
459+ else (value(bJ.assetId) != L))
426460 then throw("ACRES payments only!")
427- else if ((c > by))
428- then throw((("Min payment should be " + Y(c, 8)) + " ACRES"))
461+ else if ((c > bM))
462+ then throw((("Min payment should be " + Z(c, 8)) + " ACRES"))
429463 else {
430- let H = toString(aH.caller)
431- let bE = bf()
432- let bF = bE._1
433- let bG = bE._2
434- let bH = (bG * f)
435- if ((by > bH))
436- then throw((("You can sell max " + Y(bH, 8)) + " ACRES"))
464+ let H = toString(aM.caller)
465+ let bS = bt()
466+ let bT = bS._1
467+ let bU = bS._2
468+ let bV = (bU * f)
469+ if ((bM > bV))
470+ then throw((("You can sell max " + Z(bV, 8)) + " ACRES"))
437471 else {
438- let bx = ((by / f) / 2)
439- $Tuple2(([bF, IntegerEntry(aC, (bG - bx)), ScriptTransfer(aH.caller, bx, i)] ++ bq), bx)
472+ let bL = ((bM / f) / 2)
473+ $Tuple2(([bT, IntegerEntry(aH, (bU - bL)), ScriptTransfer(aM.caller, bL, i)] ++ bE), bL)
440474 }
441475 }
442476 }
443477 }
444478
445479
446480
447-@Callable(aH)
448-func sellAcresREADONLY (o,by) = {
449- let bI = bf()
450- let bF = bI._1
451- let bG = bI._2
452- let bx = ((by / f) / 2)
453- $Tuple2(nil, [bx, c, (bG * f), 0])
481+@Callable(aM)
482+func sellAcresREADONLY (o,bM) = {
483+ let bW = bt()
484+ let bT = bW._1
485+ let bU = bW._2
486+ let bL = ((bM / f) / 2)
487+ $Tuple2(nil, [bL, c, (bU * f), 0])
454488 }
455489
456490
457491
458-@Callable(aH)
459-func convertOldStakes () = if ((aH.caller != this))
492+@Callable(aM)
493+func convertOldStakes () = if ((aM.caller != this))
460494 then throw("Temporarily disabled")
461495 else {
462- let o = toString(aH.caller)
463- if ((size(aH.payments) != 0))
496+ let o = toString(aM.caller)
497+ if ((size(aM.payments) != 0))
464498 then throw("No payments required")
465499 else {
466- let bA = addressFromStringValue(getStringValue(E))
467- let bp = valueOrElse(getInteger(bA, ag(o)), 0)
468- let bJ = if ((bp > 0))
469- then X(invoke(bA, "unstakeAcresCallback", [bp, o], nil))
500+ let bO = addressFromStringValue(getStringValue(E))
501+ let bD = valueOrElse(getInteger(bO, ai(o)), 0)
502+ let bX = if ((bD > 0))
503+ then Y(invoke(bO, "unstakeAcresCallback", [bD, o], nil))
470504 else $Tuple2(0, 0)
471- let bK = addressFromStringValue(m)
472- let bL = getString(bK, M(o))
473- let bM = if (isDefined(bL))
505+ let bY = addressFromStringValue(m)
506+ let bZ = getString(bY, N(o))
507+ let ca = if (isDefined(bZ))
474508 then {
475- let bN = split_51C(value(bL), "_")
476- func bO (aq,bP) = if ((bP == ""))
509+ let cb = split_51C(value(bZ), "_")
510+ func cc (as,cd) = if ((cd == ""))
477511 then throw("landAssetId is required")
478512 else {
479- let bQ = S(invoke(bK, "unstakeLandCallback", [bP, o], nil))
480- $Tuple4((aq._1 + bQ._1), (aq._2 + bQ._2), (aq._3 + bQ._3), (aq._4 + bQ._4))
513+ let ce = T(invoke(bY, "unstakeLandCallback", [cd, o], nil))
514+ $Tuple4((as._1 + ce._1), (as._2 + ce._2), (as._3 + ce._3), (as._4 + ce._4))
481515 }
482516
483- let bR = {
484- let as = bN
485- let at = size(as)
486- let au = $Tuple4(0, 0, 0, 0)
487- func av (aw,ax) = if ((ax >= at))
488- then aw
489- else bO(aw, as[ax])
517+ let cf = {
518+ let au = cb
519+ let av = size(au)
520+ let aw = $Tuple4(0, 0, 0, 0)
521+ func ax (ay,az) = if ((az >= av))
522+ then ay
523+ else cc(ay, au[az])
490524
491- func ay (aw,ax) = if ((ax >= at))
492- then aw
525+ func aA (ay,az) = if ((az >= av))
526+ then ay
493527 else throw("List size exceeds 100")
494528
495- ay(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(au, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
529+ aA(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(aw, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
496530 }
497- let bS = invoke(bK, "unstakeLandsFinalizeCallback", [o], nil)
498- if ((bS == bS))
531+ let cg = invoke(bY, "unstakeLandsFinalizeCallback", [o], nil)
532+ if ((cg == cg))
499533 then {
500- let bB = invoke(bA, "requestAcresCallback", [(((bR._1 + bR._2) + bR._3) + bR._4)], nil)
501- if ((bB == bB))
534+ let bP = invoke(bO, "requestAcresCallback", [(((cf._1 + cf._2) + cf._3) + cf._4)], nil)
535+ if ((bP == bP))
502536 then {
503- let bT = aI(ak)
504- let aK = bT._1
505- let bU = bT._2
506- $Tuple5(bR._1, bR._2, bR._3, bR._4, [aK, ScriptTransfer(aH.caller, 1, bU)])
537+ let ch = aU(am, aM.caller)
538+ let ci = ch._1
539+ let aY = ch._2
540+ $Tuple5(cf._1, cf._2, cf._3, cf._4, ci)
507541 }
508542 else throw("Strict value is not equal to itself.")
509543 }
510544 else throw("Strict value is not equal to itself.")
511545 }
512546 else $Tuple5(0, 0, 0, 0, nil)
513- let bV = valueOrElse(getString(bK, O(o)), "")
514- let bW = if ((bV != ""))
515- then W(invoke(bK, "unstakeDuckCallback", [bV, o], nil))
547+ let cj = valueOrElse(getString(bY, P(o)), "")
548+ let ck = if ((cj != ""))
549+ then X(invoke(bY, "unstakeDuckCallback", [cj, o], nil))
516550 else $Tuple3(0, 0, 0)
517- let bX = aL((((((((bJ._1 + bM._1) + bM._2) + bM._3) + bM._4) + bW._1) + bW._2) + bW._3), o)
518- $Tuple2((bM._5 ++ bX._1), bX._2)
551+ let cl = aZ((((((((bX._1 + ca._1) + ca._2) + ca._3) + ca._4) + ck._1) + ck._2) + ck._3), o)
552+ $Tuple2((ca._5 ++ cl._1), cl._2)
519553 }
520554 }
521555
522556
523557
524-@Callable(aH)
558+@Callable(aM)
525559 func unstakeLandsREADONLY (o) = {
526- let bK = addressFromStringValue(m)
527- let bL = getString(bK, M(o))
528- let bM = if (isDefined(bL))
560+ let bY = addressFromStringValue(m)
561+ let bZ = getString(bY, N(o))
562+ let ca = if (isDefined(bZ))
529563 then {
530- let bN = split_51C(value(bL), "_")
531- func bO (aq,bP) = if ((bP == ""))
564+ let cb = split_51C(value(bZ), "_")
565+ func cc (as,cd) = if ((cd == ""))
532566 then throw("landAssetId is required")
533567 else {
534- let bQ = V(invoke(bK, "unstakeLandREADONLY", [bP, o], nil))
535- $Tuple4((aq._1 + bQ._1), (aq._2 + bQ._2), (aq._3 + bQ._3), (aq._4 + bQ._4))
568+ let ce = W(invoke(bY, "unstakeLandREADONLY", [cd, o], nil))
569+ $Tuple4((as._1 + ce._1), (as._2 + ce._2), (as._3 + ce._3), (as._4 + ce._4))
536570 }
537571
538- let as = bN
539- let at = size(as)
540- let au = $Tuple4(0, 0, 0, 0)
541- func av (aw,ax) = if ((ax >= at))
542- then aw
543- else bO(aw, as[ax])
572+ let au = cb
573+ let av = size(au)
574+ let aw = $Tuple4(0, 0, 0, 0)
575+ func ax (ay,az) = if ((az >= av))
576+ then ay
577+ else cc(ay, au[az])
544578
545- func ay (aw,ax) = if ((ax >= at))
546- then aw
579+ func aA (ay,az) = if ((az >= av))
580+ then ay
547581 else throw("List size exceeds 100")
548582
549- ay(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(av(au, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
583+ aA(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(ax(aw, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
550584 }
551585 else $Tuple4(0, 0, 0, 0)
552- $Tuple2(nil, bM)
586+ $Tuple2(nil, ca)
553587 }
554588
555589
556590
557-@Callable(aH)
558-func stakeAcresCallback (H) = if ((aH.caller != addressFromStringValue(m)))
591+@Callable(aM)
592+func stakeAcresCallback (H) = if ((aM.caller != addressFromStringValue(m)))
559593 then throw("Permission denied")
560- else aL(aH.payments[0].amount, H)
594+ else aZ(aM.payments[0].amount, H)
561595
562596
563597
564-@Callable(aH)
565-func simulateStakeAcresREADONLY (o,bY) = {
566- let aQ = ag(o)
567- let aS = (valueOrElse(getInteger(aQ), 0) + bY)
568- let aT = valueOrElse(getInteger(ai), 0)
569- let aU = ah(o)
570- let aV = valueOrElse(getInteger(aU), 0)
571- let aW = az(aS)
572- let aX = valueOrElse(getInteger(aj), 0)
573- let bZ = ((aX - aV) + aW)
574- $Tuple2(nil, [aV, aW, aX, bZ])
598+@Callable(aM)
599+func simulateStakeAcresREADONLY (o,cm) = {
600+ let be = ai(o)
601+ let bg = (valueOrElse(getInteger(be), 0) + cm)
602+ let bh = valueOrElse(getInteger(ak), 0)
603+ let bi = aj(o)
604+ let bj = valueOrElse(getInteger(bi), 0)
605+ let bk = aB(bg)
606+ let bl = valueOrElse(getInteger(al), 0)
607+ let cn = ((bl - bj) + bk)
608+ $Tuple2(nil, [bj, bk, bl, cn])
575609 }
576610
577611
578612
579-@Callable(aH)
580-func issueNFT (ca,aJ) = if ((aH.caller != C))
613+@Callable(aM)
614+func issueNFT (co,aV) = if ((aM.caller != C))
581615 then throw("Permission denied")
582- else {
583- let cb = aI(aJ)
584- let aK = cb._1
585- let bU = cb._2
586- $Tuple2([aK, ScriptTransfer(addressFromStringValue(ca), 1, bU)], bU)
587- }
616+ else aU(aV, addressFromStringValue(co))
588617
589618

github/deemru/w8io/026f985 
349.32 ms