tx · 4FG8tqN6QasBdHEH4Fac2CZDVHPaPL6rL9UUAPGMJCCK

3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h:  -0.01200000 Waves

2024.02.13 15:50 [2974489] smart account 3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h > SELF 0.00000000 Waves

{ "type": 13, "id": "4FG8tqN6QasBdHEH4Fac2CZDVHPaPL6rL9UUAPGMJCCK", "fee": 1200000, "feeAssetId": null, "timestamp": 1707828632810, "version": 2, "chainId": 84, "sender": "3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h", "senderPublicKey": "3z8Q6Zu3KppVmn6fJJvrLc1Wo3krVHSvfaNcerm82md2", "proofs": [ "5GT1Mn8K2PabESb8xnNtSDDUs4hLyMNFmGT8KdEgipTGPbVZQEaZ7RzRXG8C9THveXYXeojXifr5APf2TUfKZGSf" ], "script": "base64:BgIvCAISAwoBARIDCgEIEgMKAQgSBAoCCAgSAwoBCBIECgIIARIECgIIARIDCgEBEgAjAAxjb250cmFjdEZpbGUCEWwybXBfbGVhc2luZy5yaWRlAANTRVACAl9fAQh0aHJvd0VycgEDbXNnCQACAQkArAICCQCsAgIFDGNvbnRyYWN0RmlsZQICOiAFA21zZwAKa2V5QXNzZXRJZAkAuQkCCQDMCAICAiVzCQDMCAICB2Fzc2V0SWQFA25pbAUDU0VQAAxrZXlBZG1pbkxpc3QJALkJAgkAzAgCAgIlcwkAzAgCAglhZG1pbkxpc3QFA25pbAUDU0VQABFrZXlQZXJpb2RPZmZzZXRJZAkAuQkCCQDMCAICAiVzCQDMCAICCG9mZnNldElkBQNuaWwFA1NFUAAVa2V5UGVyaW9kT2Zmc2V0SGVpZ2h0CQC5CQIJAMwIAgICJXMJAMwIAgIMb2Zmc2V0SGVpZ2h0BQNuaWwFA1NFUAAPa2V5UGVyaW9kTGVuZ3RoCQC5CQIJAMwIAgICJXMJAMwIAgIMcGVyaW9kTGVuZ3RoBQNuaWwFA1NFUAAOcGVyaW9kT2Zmc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwURa2V5UGVyaW9kT2Zmc2V0SWQAAAAMcGVyaW9kTGVuZ3RoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFD2tleVBlcmlvZExlbmd0aACQTgAScGVyaW9kT2Zmc2V0SGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFFWtleVBlcmlvZE9mZnNldEhlaWdodAD///////////8BAA9jdXJyZW50UGVyaW9kSWQDAwkAZgIFBmhlaWdodAUScGVyaW9kT2Zmc2V0SGVpZ2h0CQECIT0CBRJwZXJpb2RPZmZzZXRIZWlnaHQA////////////AQcJAGQCCQBpAgkAZQIFBmhlaWdodAUScGVyaW9kT2Zmc2V0SGVpZ2h0BQxwZXJpb2RMZW5ndGgFDnBlcmlvZE9mZnNldElkCQCWAwEJAMwIAgAACQDMCAIJAGUCBQ5wZXJpb2RPZmZzZXRJZAABBQNuaWwAE2N1cnJlbnRQZXJpb2RIZWlnaHQJAGQCBRJwZXJpb2RPZmZzZXRIZWlnaHQJAGgCCQBlAgUPY3VycmVudFBlcmlvZElkBQ5wZXJpb2RPZmZzZXRJZAUMcGVyaW9kTGVuZ3RoABBuZXh0UGVyaW9kSGVpZ2h0CQBkAgUTY3VycmVudFBlcmlvZEhlaWdodAUMcGVyaW9kTGVuZ3RoARJrZXlMZWFzaW5nTm9kZURhdGEBC25vZGVBZGRyZXNzCQC5CQIJAMwIAgICJXMJAMwIAgULbm9kZUFkZHJlc3MFA25pbAUDU0VQAQ5rZXlVc2VyVG9DbGFpbQELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICB3RvQ2xhaW0JAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARZrZXlVc2VyTGVhc2luZ05vZGVEYXRhAgt1c2VyQWRkcmVzcwtub2RlQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgULbm9kZUFkZHJlc3MJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARZrZXlOb2RlTGVhc2luZ0J5SGVpZ2h0AQtub2RlQWRkcmVzcwkAuQkCCQDMCAICBCVzJWQJAMwIAgULbm9kZUFkZHJlc3MJAMwIAgkApAMBBQZoZWlnaHQFA25pbAUDU0VQARZrZXlVc2VyTGVhc2luZ0J5SGVpZ2h0Agtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlZAkAzAgCBQtub2RlQWRkcmVzcwkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCCQCkAwEFBmhlaWdodAUDbmlsBQNTRVAADWFzc2V0SWRTdHJpbmcJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUKa2V5QXNzZXRJZAIFV0FWRVMADGFzc2V0SWRCeXRlcwMJAAACBQ1hc3NldElkU3RyaW5nAgVXQVZFUwUEdW5pdAkA2QQBBQ1hc3NldElkU3RyaW5nAAxhZG1pbkxpc3RSYXcJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQxrZXlBZG1pbkxpc3QCAAUDU0VQAQdpc0FkbWluAQdhZGRyZXNzCQEPY29udGFpbnNFbGVtZW50AgUMYWRtaW5MaXN0UmF3BQdhZGRyZXNzAQ5pc1ZhbGlkQWRkcmVzcwEHYWRkcmVzcwQHJG1hdGNoMAkApggBBQdhZGRyZXNzAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAGBwETZ2V0TGVhc2luZ05vZGVFbnRyeQMLbm9kZUFkZHJlc3MNY3VycmVudExlYXNlZApuZXh0TGVhc2VkBAt2YWx1ZVN0cmluZwkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQUTY3VycmVudFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFDWN1cnJlbnRMZWFzZWQJAMwIAgkApAMBBRBuZXh0UGVyaW9kSGVpZ2h0CQDMCAIJAKQDAQUKbmV4dExlYXNlZAUDbmlsBQNTRVAJAQtTdHJpbmdFbnRyeQIJARJrZXlMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwULdmFsdWVTdHJpbmcBEmdldExlYXNpbmdOb2RlRGF0YQELbm9kZUFkZHJlc3MEGGxlYXNpbmdOb2RlRGF0YVN0cmluZ1JhdwkAnQgCBQR0aGlzCQESa2V5TGVhc2luZ05vZGVEYXRhAQULbm9kZUFkZHJlc3MEByRtYXRjaDAFGGxlYXNpbmdOb2RlRGF0YVN0cmluZ1JhdwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAmRzBQckbWF0Y2gwBAhkYXRhTGlzdAkAtQkCBQJkcwUDU0VQBBFub2RlQ3VycmVudFBlcmlvZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAEEEW5vZGVDdXJyZW50TGVhc2VkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAgQObm9kZU5leHRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAADBA5ub2RlTmV4dExlYXNlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAQDCQBmAgUObm9kZU5leHRQZXJpb2QFBmhlaWdodAkAlAoCBRFub2RlQ3VycmVudExlYXNlZAUObm9kZU5leHRMZWFzZWQJAJQKAgUObm9kZU5leHRMZWFzZWQFDm5vZGVOZXh0TGVhc2VkCQCUCgIAAAAAARNnZXRVc2VyTGVhc2luZ0VudHJ5BAtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcxF1c2VyQ3VycmVudExlYXNlZA51c2VyTmV4dExlYXNlZAQLdmFsdWVTdHJpbmcJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFE2N1cnJlbnRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBRF1c2VyQ3VycmVudExlYXNlZAkAzAgCCQCkAwEFEG5leHRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBQ51c2VyTmV4dExlYXNlZAUDbmlsBQNTRVAJAQtTdHJpbmdFbnRyeQIJARZrZXlVc2VyTGVhc2luZ05vZGVEYXRhAgULdXNlckFkZHJlc3MFC25vZGVBZGRyZXNzBQt2YWx1ZVN0cmluZwESZ2V0VXNlckxlYXNpbmdEYXRhAgtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcwQYbGVhc2luZ1VzZXJEYXRhU3RyaW5nUmF3CQCdCAIFBHRoaXMJARZrZXlVc2VyTGVhc2luZ05vZGVEYXRhAgULdXNlckFkZHJlc3MFC25vZGVBZGRyZXNzBAckbWF0Y2gwBRhsZWFzaW5nVXNlckRhdGFTdHJpbmdSYXcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAJkcwUHJG1hdGNoMAQIZGF0YUxpc3QJALUJAgUCZHMFA1NFUAQRdXNlckN1cnJlbnRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAABBBF1c2VyQ3VycmVudExlYXNlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAIEDnVzZXJOZXh0UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAwQOdXNlck5leHRMZWFzZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAAEAwkAZgIFDnVzZXJOZXh0UGVyaW9kBQZoZWlnaHQJAJQKAgURdXNlckN1cnJlbnRMZWFzZWQFDnVzZXJOZXh0TGVhc2VkCQCUCgIFDnVzZXJOZXh0TGVhc2VkBQ51c2VyTmV4dExlYXNlZAkAlAoCAAAAAAETZ2V0VXNlclRvQ2xhaW1FbnRyeQMLdXNlckFkZHJlc3MHdG9DbGFpbQh0b1VubG9jawQLdmFsdWVTdHJpbmcJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFE2N1cnJlbnRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBQd0b0NsYWltCQDMCAIJAKQDAQUQbmV4dFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFCHRvVW5sb2NrBQNuaWwFA1NFUAkBC1N0cmluZ0VudHJ5AgkBDmtleVVzZXJUb0NsYWltAQULdXNlckFkZHJlc3MFC3ZhbHVlU3RyaW5nARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBC3VzZXJBZGRyZXNzBBh1c2VyVG9DbGFpbURhdGFTdHJpbmdSYXcJAJ0IAgUEdGhpcwkBDmtleVVzZXJUb0NsYWltAQULdXNlckFkZHJlc3MEByRtYXRjaDAFGHVzZXJUb0NsYWltRGF0YVN0cmluZ1JhdwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAmRzBQckbWF0Y2gwBAhkYXRhTGlzdAkAtQkCBQJkcwUDU0VQBA1jdXJyZW50UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAQQHdG9DbGFpbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAIECm5leHRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAADBAh0b1VubG9jawkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAQDCQBmAgUKbmV4dFBlcmlvZAUGaGVpZ2h0CQCUCgIFB3RvQ2xhaW0FCHRvVW5sb2NrCQCUCgIJAGQCBQd0b0NsYWltBQh0b1VubG9jawAACQCUCgIAAAAAAQ9nZXRTdGFrZUFjdGlvbnMDC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzAWkEBmNoZWNrcwkAzAgCAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQh0aHJvd0VycgECIHBheW1lbnQgc2l6ZSBzaG91bGQgYmUgZXhhY3RseSAxCQDMCAIDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQxhc3NldElkQnl0ZXMGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIacGF5bWVudCBhc3NldElkIHNob3VsZCBiZToJAMwIAgUNYXNzZXRJZFN0cmluZwUDbmlsAgEgCQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQtub2RlQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhpub2RlIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQtub2RlQWRkcmVzcwUDbmlsAgEgCQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQt1c2VyQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhp1c2VyIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsAgEgBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEEXVzZXJMZWFzaW5nQW1vdW50CAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQLJHQwNTk4ODYwNjEJARJnZXRMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwQRbm9kZUN1cnJlbnRMZWFzZWQIBQskdDA1OTg4NjA2MQJfMQQObm9kZU5leHRMZWFzZWQIBQskdDA1OTg4NjA2MQJfMgQQbmV3Tm9kZU5leHRMZWFzZQkAZAIFDm5vZGVOZXh0TGVhc2VkBRF1c2VyTGVhc2luZ0Ftb3VudAQLJHQwNjEyOTYyMTUJARJnZXRVc2VyTGVhc2luZ0RhdGECBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MEEXVzZXJDdXJyZW50TGVhc2VkCAULJHQwNjEyOTYyMTUCXzEEDnVzZXJOZXh0TGVhc2VkCAULJHQwNjEyOTYyMTUCXzIEEW5ld1VzZXJOZXh0TGVhc2VkCQBkAgUOdXNlck5leHRMZWFzZWQFEXVzZXJMZWFzaW5nQW1vdW50CQDMCAIJARNnZXRMZWFzaW5nTm9kZUVudHJ5AwULbm9kZUFkZHJlc3MFEW5vZGVDdXJyZW50TGVhc2VkBRBuZXdOb2RlTmV4dExlYXNlCQDMCAIJARNnZXRVc2VyTGVhc2luZ0VudHJ5BAULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBRF1c2VyQ3VycmVudExlYXNlZAURbmV3VXNlck5leHRMZWFzZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlOb2RlTGVhc2luZ0J5SGVpZ2h0AQULbm9kZUFkZHJlc3MFEG5ld05vZGVOZXh0TGVhc2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlVc2VyTGVhc2luZ0J5SGVpZ2h0AgULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBRFuZXdVc2VyTmV4dExlYXNlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARFnZXRVbnN0YWtlQWN0aW9ucwMLbm9kZUFkZHJlc3MLdXNlckFkZHJlc3MNdW5zdGFrZUFtb3VudAQLJHQwNjcyNzY4MDAJARJnZXRMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwQRbm9kZUN1cnJlbnRMZWFzZWQIBQskdDA2NzI3NjgwMAJfMQQObm9kZU5leHRMZWFzZWQIBQskdDA2NzI3NjgwMAJfMgQLJHQwNjgwNTY4OTEJARJnZXRVc2VyTGVhc2luZ0RhdGECBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MEEXVzZXJDdXJyZW50TGVhc2VkCAULJHQwNjgwNTY4OTECXzEEDnVzZXJOZXh0TGVhc2VkCAULJHQwNjgwNTY4OTECXzIEBmNoZWNrcwkAzAgCAwkAZgIFDXVuc3Rha2VBbW91bnQAAAYJAQh0aHJvd0VycgECJ3Vuc3Rha2UgYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMAkAzAgCAwkAZwIFDnVzZXJOZXh0TGVhc2VkBQ11bnN0YWtlQW1vdW50BgkBCHRocm93RXJyAQI5dW5zdGFrZSBhbW91bnQgc2hvdWxkIGJlIGxlc3Mgb3IgZXF1YWwgdXNlciBzdGFrZWQgYW1vdW50CQDMCAIDCQBnAgUObm9kZU5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQGCQEIdGhyb3dFcnIBAjl1bnN0YWtlIGFtb3VudCBzaG91bGQgYmUgbGVzcyBvciBlcXVhbCBub2RlIHN0YWtlZCBhbW91bnQJAMwIAgMJAQ5pc1ZhbGlkQWRkcmVzcwEFC25vZGVBZGRyZXNzBgkBCHRocm93RXJyAQkAuQkCCQDMCAICGm5vZGUgYWRkcmVzcyBpcyBub3QgdmFsaWQ6CQDMCAIFC25vZGVBZGRyZXNzBQNuaWwCASAJAMwIAgMJAQ5pc1ZhbGlkQWRkcmVzcwEFC3VzZXJBZGRyZXNzBgkBCHRocm93RXJyAQkAuQkCCQDMCAICGnVzZXIgYWRkcmVzcyBpcyBub3QgdmFsaWQ6CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwCASAFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQQbmV3Tm9kZU5leHRMZWFzZQkAZQIFDm5vZGVOZXh0TGVhc2VkBQ11bnN0YWtlQW1vdW50BBFuZXdVc2VyTmV4dExlYXNlZAkAZQIFDnVzZXJOZXh0TGVhc2VkBQ11bnN0YWtlQW1vdW50BAskdDA3NTg0NzY4OQkBFWdldFVzZXJUb0NsYWltQmFsYW5jZQEFC3VzZXJBZGRyZXNzBAd0b0NsYWltCAULJHQwNzU4NDc2ODkCXzEECHRvVW5sb2NrCAULJHQwNzU4NDc2ODkCXzIEC25ld1RvVW5sb2NrCQBkAgUIdG9VbmxvY2sFDXVuc3Rha2VBbW91bnQJAMwIAgkBE2dldExlYXNpbmdOb2RlRW50cnkDBQtub2RlQWRkcmVzcwURbm9kZUN1cnJlbnRMZWFzZWQFEG5ld05vZGVOZXh0TGVhc2UJAMwIAgkBE2dldFVzZXJMZWFzaW5nRW50cnkEBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFEXVzZXJDdXJyZW50TGVhc2VkBRFuZXdVc2VyTmV4dExlYXNlZAkAzAgCCQETZ2V0VXNlclRvQ2xhaW1FbnRyeQMFC3VzZXJBZGRyZXNzBQd0b0NsYWltBQtuZXdUb1VubG9jawkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleU5vZGVMZWFzaW5nQnlIZWlnaHQBBQtub2RlQWRkcmVzcwUQbmV3Tm9kZU5leHRMZWFzZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVVzZXJMZWFzaW5nQnlIZWlnaHQCBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFEW5ld1VzZXJOZXh0TGVhc2VkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BF2dldENsYWltVW5sb2NrZWRBY3Rpb25zAgt1c2VyQWRkcmVzcwtjbGFpbUFtb3VudAQLJHQwODIzMjgyOTIJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFCyR0MDgyMzI4MjkyAl8xBAh0b1VubG9jawgFCyR0MDgyMzI4MjkyAl8yBAZjaGVja3MJAMwIAgMJAGYCBQtjbGFpbUFtb3VudAAABgkBCHRocm93RXJyAQIlY2xhaW0gYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMAkAzAgCAwkAZwIFB3RvQ2xhaW0FC2NsYWltQW1vdW50BgkBCHRocm93RXJyAQI0Y2xhaW0gYW1vdW50IHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIHVubG9ja2VkIGFtb3VudAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIadXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBApuZXdUb0NsYWltCQBlAgUHdG9DbGFpbQULY2xhaW1BbW91bnQJAMwIAgkBE2dldFVzZXJUb0NsYWltRW50cnkDBQt1c2VyQWRkcmVzcwUKbmV3VG9DbGFpbQUIdG9VbmxvY2sJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQULdXNlckFkZHJlc3MFC2NsYWltQW1vdW50BQxhc3NldElkQnl0ZXMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEbZ2V0U3Rha2VGcm9tVW5sb2NrZWRBY3Rpb25zAwtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcxF1c2VyTGVhc2luZ0Ftb3VudAQLJHQwODkzMjg5OTIJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFCyR0MDg5MzI4OTkyAl8xBAh0b1VubG9jawgFCyR0MDg5MzI4OTkyAl8yBAlhdmFpbGFibGUJAGQCBQh0b1VubG9jawUHdG9DbGFpbQQGY2hlY2tzCQDMCAIDCQBmAgURdXNlckxlYXNpbmdBbW91bnQAAAYJAQh0aHJvd0VycgECH2Ftb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAJAMwIAgMJAGcCBQlhdmFpbGFibGUFEXVzZXJMZWFzaW5nQW1vdW50BgkBCHRocm93RXJyAQIrYW1vdW50IHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIHRvIGF2YWlsYWJsZQkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULbm9kZUFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIabm9kZSBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULbm9kZUFkZHJlc3MFA25pbAIBIAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIadXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAskdDA5NDY5OTU0MgkBEmdldExlYXNpbmdOb2RlRGF0YQEFC25vZGVBZGRyZXNzBBFub2RlQ3VycmVudExlYXNlZAgFCyR0MDk0Njk5NTQyAl8xBA5ub2RlTmV4dExlYXNlZAgFCyR0MDk0Njk5NTQyAl8yBBBuZXdOb2RlTmV4dExlYXNlCQBkAgUObm9kZU5leHRMZWFzZWQFEXVzZXJMZWFzaW5nQW1vdW50BAskdDA5NjEwOTY5NgkBEmdldFVzZXJMZWFzaW5nRGF0YQIFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwQRdXNlckN1cnJlbnRMZWFzZWQIBQskdDA5NjEwOTY5NgJfMQQOdXNlck5leHRMZWFzZWQIBQskdDA5NjEwOTY5NgJfMgQRbmV3VXNlck5leHRMZWFzZWQJAGQCBQ51c2VyTmV4dExlYXNlZAURdXNlckxlYXNpbmdBbW91bnQEC25ld1RvVW5sb2NrCQCWAwEJAMwIAgAACQDMCAIJAGUCBQh0b1VubG9jawURdXNlckxlYXNpbmdBbW91bnQFA25pbAQKbmV3VG9DbGFpbQkAlwMBCQDMCAIFB3RvQ2xhaW0JAMwIAgkAZAIFB3RvQ2xhaW0JAGUCBQh0b1VubG9jawURdXNlckxlYXNpbmdBbW91bnQFA25pbAkAzAgCCQETZ2V0TGVhc2luZ05vZGVFbnRyeQMFC25vZGVBZGRyZXNzBRFub2RlQ3VycmVudExlYXNlZAUQbmV3Tm9kZU5leHRMZWFzZQkAzAgCCQETZ2V0VXNlckxlYXNpbmdFbnRyeQQFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwURdXNlckN1cnJlbnRMZWFzZWQFEW5ld1VzZXJOZXh0TGVhc2VkCQDMCAIJARNnZXRVc2VyVG9DbGFpbUVudHJ5AwULdXNlckFkZHJlc3MFCm5ld1RvQ2xhaW0FC25ld1RvVW5sb2NrCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5Tm9kZUxlYXNpbmdCeUhlaWdodAEFC25vZGVBZGRyZXNzBRBuZXdOb2RlTmV4dExlYXNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5VXNlckxlYXNpbmdCeUhlaWdodAIFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwURbmV3VXNlck5leHRMZWFzZWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEcZ2V0U2V0TmV3UGVyaW9kTGVuZ3RoQWN0aW9ucwEPbmV3UGVyaW9kTGVuZ3RoBAVjaGVjawkAzAgCAwkAZgIFD25ld1BlcmlvZExlbmd0aAAABgkBCHRocm93RXJyAQImcGVyaW9kIGxlbmd0aCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAFA25pbAMJAAACBQVjaGVjawUFY2hlY2sDCQAAAgUScGVyaW9kT2Zmc2V0SGVpZ2h0AP///////////wEJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tleVBlcmlvZExlbmd0aAUPbmV3UGVyaW9kTGVuZ3RoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrZXlQZXJpb2RPZmZzZXRIZWlnaHQFBmhlaWdodAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrZXlQZXJpb2RPZmZzZXRJZAkAZAIFD2N1cnJlbnRQZXJpb2RJZAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrZXlQZXJpb2RPZmZzZXRIZWlnaHQFEG5leHRQZXJpb2RIZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tleVBlcmlvZExlbmd0aAUPbmV3UGVyaW9kTGVuZ3RoBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAWkBEnNldE5ld1BlcmlvZExlbmd0aAEPbmV3UGVyaW9kTGVuZ3RoBAZjaGVja3MJAMwIAgMJAQdpc0FkbWluAQkApQgBCAUBaQZjYWxsZXIGCQEIdGhyb3dFcnIBAhxpLmNhbGxlciBpcyBub3QgaW4gYWRtaW5MaXN0BQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MJARxnZXRTZXROZXdQZXJpb2RMZW5ndGhBY3Rpb25zAQUPbmV3UGVyaW9kTGVuZ3RoCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE2dldE5vZGVEYXRhUkVBRE9OTFkBC25vZGVBZGRyZXNzBA0kdDAxMTM4MDExNDQ0CQESZ2V0TGVhc2luZ05vZGVEYXRhAQULbm9kZUFkZHJlc3MEDGN1cnJlbnRMZWFzZQgFDSR0MDExMzgwMTE0NDQCXzEECm5leHRMZWFzZWQIBQ0kdDAxMTM4MDExNDQ0Al8yCQCUCgIFA25pbAkAlwoFBRNjdXJyZW50UGVyaW9kSGVpZ2h0BQxjdXJyZW50TGVhc2UFEG5leHRQZXJpb2RIZWlnaHQFCm5leHRMZWFzZWQFBmhlaWdodAFpARNnZXRVc2VyRGF0YVJFQURPTkxZAQt1c2VyQWRkcmVzcwQNJHQwMTE3OTMxMTg1MwkBFWdldFVzZXJUb0NsYWltQmFsYW5jZQEFC3VzZXJBZGRyZXNzBAd0b0NsYWltCAUNJHQwMTE3OTMxMTg1MwJfMQQIdG9VbmxvY2sIBQ0kdDAxMTc5MzExODUzAl8yCQCUCgIFA25pbAkAlwoFBRNjdXJyZW50UGVyaW9kSGVpZ2h0BQd0b0NsYWltBRBuZXh0UGVyaW9kSGVpZ2h0BQh0b1VubG9jawUGaGVpZ2h0AWkBDmxlYXNlQnlBZGRyZXNzAgtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcwkBD2dldFN0YWtlQWN0aW9ucwMFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwUBaQFpAQVsZWFzZQELbm9kZUFkZHJlc3MEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgkBD2dldFN0YWtlQWN0aW9ucwMFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwUBaQFpARFsZWFzZUZyb21VbmxvY2tlZAILbm9kZUFkZHJlc3MGYW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJARtnZXRTdGFrZUZyb21VbmxvY2tlZEFjdGlvbnMDBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFBmFtb3VudAFpAQtjYW5jZWxMZWFzZQILbm9kZUFkZHJlc3MGYW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJARFnZXRVbnN0YWtlQWN0aW9ucwMFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwUGYW1vdW50AWkBBWNsYWltAQZhbW91bnQEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgkBF2dldENsYWltVW5sb2NrZWRBY3Rpb25zAgULdXNlckFkZHJlc3MFBmFtb3VudAFpAQhjbGFpbUFsbAAEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQNJHQwMTI3ODExMjg0MQkBFWdldFVzZXJUb0NsYWltQmFsYW5jZQEFC3VzZXJBZGRyZXNzBAd0b0NsYWltCAUNJHQwMTI3ODExMjg0MQJfMQQIdG9VbmxvY2sIBQ0kdDAxMjc4MTEyODQxAl8yBAZjaGVja3MJAMwIAgMJAGYCBQd0b0NsYWltAAAGCQEIdGhyb3dFcnIBAhBub3RoaW5nIHRvIGNsYWltBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MJARdnZXRDbGFpbVVubG9ja2VkQWN0aW9ucwIFC3VzZXJBZGRyZXNzBQd0b0NsYWltCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuADxJ7/w=", "height": 2974489, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ovpcsZnbKjoEq79eq2Ycohf1Zj8USiv3BW2zLRdw1PQ Next: FracjSDzeGMWzndkyggfFQAiABE3YrdrNMmXpr579s6f Diff:
OldNewDifferences
1010
1111 let e = makeString(["%s", "assetId"], b)
1212
13-let f = makeString(["%s", "offsetId"], b)
13+let f = makeString(["%s", "adminList"], b)
1414
15-let g = makeString(["%s", "offsetHeight"], b)
15+let g = makeString(["%s", "offsetId"], b)
1616
17-let h = makeString(["%s", "periodLength"], b)
17+let h = makeString(["%s", "offsetHeight"], b)
1818
19-let i = valueOrElse(getInteger(this, f), 0)
19+let i = makeString(["%s", "periodLength"], b)
2020
21-let j = valueOrElse(getInteger(this, h), 10000)
21+let j = valueOrElse(getInteger(this, g), 0)
2222
23-let k = valueOrElse(getInteger(this, g), -1)
23+let k = valueOrElse(getInteger(this, i), 10000)
2424
25-let l = if (if ((height > k))
26- then (k != -1)
25+let l = valueOrElse(getInteger(this, h), -1)
26+
27+let m = if (if ((height > l))
28+ then (l != -1)
2729 else false)
28- then (((height - k) / j) + i)
29- else max([0, (i - 1)])
30+ then (((height - l) / k) + j)
31+ else max([0, (j - 1)])
3032
31-let m = (k + ((l - i) * j))
33+let n = (l + ((m - j) * k))
3234
33-let n = (m + j)
35+let o = (n + k)
3436
35-func o (p) = makeString(["%s", p], b)
37+func p (q) = makeString(["%s", q], b)
3638
3739
38-func q (r) = makeString(["%s%s", "toClaim", r], b)
40+func r (s) = makeString(["%s%s", "toClaim", s], b)
3941
4042
41-func s (r,p) = makeString(["%s%s", p, r], b)
43+func t (s,q) = makeString(["%s%s", q, s], b)
4244
4345
44-func t (p) = makeString(["%s%d", p, toString(height)], b)
46+func u (q) = makeString(["%s%d", q, toString(height)], b)
4547
4648
47-func u (p,r) = makeString(["%s%s%d", p, r, toString(height)], b)
49+func v (q,s) = makeString(["%s%s%d", q, s, toString(height)], b)
4850
4951
50-let v = valueOrElse(getString(this, e), "WAVES")
52+let w = valueOrElse(getString(this, e), "WAVES")
5153
52-let w = if ((v == "WAVES"))
54+let x = if ((w == "WAVES"))
5355 then unit
54- else fromBase58String(v)
56+ else fromBase58String(w)
5557
56-func x (y) = {
57- let z = addressFromString(y)
58- if ($isInstanceOf(z, "Address"))
58+let y = split(valueOrElse(getString(this, f), ""), b)
59+
60+func z (A) = containsElement(y, A)
61+
62+
63+func B (A) = {
64+ let C = addressFromString(A)
65+ if ($isInstanceOf(C, "Address"))
5966 then {
60- let A = z
67+ let D = C
6168 true
6269 }
6370 else false
6471 }
6572
6673
67-func B (p,C,D) = {
68- let E = makeString(["%d%d%d%d", toString(m), toString(C), toString(n), toString(D)], b)
69- StringEntry(o(p), E)
74+func E (q,F,G) = {
75+ let H = makeString(["%d%d%d%d", toString(n), toString(F), toString(o), toString(G)], b)
76+ StringEntry(p(q), H)
7077 }
7178
7279
73-func F (p) = {
74- let G = getString(this, o(p))
75- let z = G
76- if ($isInstanceOf(z, "String"))
80+func I (q) = {
81+ let J = getString(this, p(q))
82+ let C = J
83+ if ($isInstanceOf(C, "String"))
7784 then {
78- let H = z
79- let I = split(H, b)
80- let J = parseIntValue(I[1])
81- let K = parseIntValue(I[2])
82- let L = parseIntValue(I[3])
83- let M = parseIntValue(I[4])
84- if ((L > height))
85- then $Tuple2(K, M)
86- else $Tuple2(M, M)
87- }
88- else $Tuple2(0, 0)
89- }
90-
91-
92-func N (p,r,O,P) = {
93- let E = makeString(["%d%d%d%d", toString(m), toString(O), toString(n), toString(P)], b)
94- StringEntry(s(r, p), E)
95- }
96-
97-
98-func Q (p,r) = {
99- let R = getString(this, s(r, p))
100- let z = R
101- if ($isInstanceOf(z, "String"))
102- then {
103- let H = z
104- let I = split(H, b)
105- let S = parseIntValue(I[1])
106- let O = parseIntValue(I[2])
107- let T = parseIntValue(I[3])
108- let P = parseIntValue(I[4])
109- if ((T > height))
110- then $Tuple2(O, P)
85+ let K = C
86+ let L = split(K, b)
87+ let M = parseIntValue(L[1])
88+ let N = parseIntValue(L[2])
89+ let O = parseIntValue(L[3])
90+ let P = parseIntValue(L[4])
91+ if ((O > height))
92+ then $Tuple2(N, P)
11193 else $Tuple2(P, P)
11294 }
11395 else $Tuple2(0, 0)
11496 }
11597
11698
117-func U (r,V,W) = {
118- let E = makeString(["%d%d%d%d", toString(m), toString(V), toString(n), toString(W)], b)
119- StringEntry(q(r), E)
99+func Q (q,s,R,S) = {
100+ let H = makeString(["%d%d%d%d", toString(n), toString(R), toString(o), toString(S)], b)
101+ StringEntry(t(s, q), H)
120102 }
121103
122104
123-func X (r) = {
124- let Y = getString(this, q(r))
125- let z = Y
126- if ($isInstanceOf(z, "String"))
105+func T (q,s) = {
106+ let U = getString(this, t(s, q))
107+ let C = U
108+ if ($isInstanceOf(C, "String"))
127109 then {
128- let H = z
129- let I = split(H, b)
130- let Z = parseIntValue(I[1])
131- let V = parseIntValue(I[2])
132- let aa = parseIntValue(I[3])
133- let W = parseIntValue(I[4])
134- if ((aa > height))
135- then $Tuple2(V, W)
136- else $Tuple2((V + W), 0)
110+ let K = C
111+ let L = split(K, b)
112+ let V = parseIntValue(L[1])
113+ let R = parseIntValue(L[2])
114+ let W = parseIntValue(L[3])
115+ let S = parseIntValue(L[4])
116+ if ((W > height))
117+ then $Tuple2(R, S)
118+ else $Tuple2(S, S)
137119 }
138120 else $Tuple2(0, 0)
139121 }
140122
141123
142-func ab (p,r,ac) = {
143- let ad = [if ((size(ac.payments) == 1))
124+func X (s,Y,Z) = {
125+ let H = makeString(["%d%d%d%d", toString(n), toString(Y), toString(o), toString(Z)], b)
126+ StringEntry(r(s), H)
127+ }
128+
129+
130+func aa (s) = {
131+ let ab = getString(this, r(s))
132+ let C = ab
133+ if ($isInstanceOf(C, "String"))
134+ then {
135+ let K = C
136+ let L = split(K, b)
137+ let ac = parseIntValue(L[1])
138+ let Y = parseIntValue(L[2])
139+ let ad = parseIntValue(L[3])
140+ let Z = parseIntValue(L[4])
141+ if ((ad > height))
142+ then $Tuple2(Y, Z)
143+ else $Tuple2((Y + Z), 0)
144+ }
145+ else $Tuple2(0, 0)
146+ }
147+
148+
149+func ae (q,s,af) = {
150+ let ag = [if ((size(af.payments) == 1))
144151 then true
145- else c("payment size should be exactly 1"), if ((ac.payments[0].assetId == w))
152+ else c("payment size should be exactly 1"), if ((af.payments[0].assetId == x))
146153 then true
147- else c(makeString(["payment assetId should be:", v], " ")), if (x(p))
154+ else c(makeString(["payment assetId should be:", w], " ")), if (B(q))
148155 then true
149- else c(makeString(["node address is not valid:", p], " ")), if (x(r))
156+ else c(makeString(["node address is not valid:", q], " ")), if (B(s))
150157 then true
151- else c(makeString(["user address is not valid:", r], " "))]
152- if ((ad == ad))
158+ else c(makeString(["user address is not valid:", s], " "))]
159+ if ((ag == ag))
153160 then {
154- let ae = ac.payments[0].amount
155- let af = F(p)
156- let K = af._1
157- let M = af._2
158- let ag = (M + ae)
159- let ah = Q(p, r)
160- let O = ah._1
161- let P = ah._2
162- let ai = (P + ae)
163-[B(p, K, ag), N(p, r, O, ai), IntegerEntry(t(p), ag), IntegerEntry(u(p, r), ai)]
161+ let ah = af.payments[0].amount
162+ let ai = I(q)
163+ let N = ai._1
164+ let P = ai._2
165+ let aj = (P + ah)
166+ let ak = T(q, s)
167+ let R = ak._1
168+ let S = ak._2
169+ let al = (S + ah)
170+[E(q, N, aj), Q(q, s, R, al), IntegerEntry(u(q), aj), IntegerEntry(v(q, s), al)]
164171 }
165172 else throw("Strict value is not equal to itself.")
166173 }
167174
168175
169-func aj (p,r,ak) = {
170- let al = F(p)
171- let K = al._1
172- let M = al._2
173- let am = Q(p, r)
174- let O = am._1
175- let P = am._2
176- let ad = [if ((ak > 0))
176+func am (q,s,an) = {
177+ let ao = I(q)
178+ let N = ao._1
179+ let P = ao._2
180+ let ap = T(q, s)
181+ let R = ap._1
182+ let S = ap._2
183+ let ag = [if ((an > 0))
177184 then true
178- else c("unstake amount should be greater than 0"), if ((P >= ak))
185+ else c("unstake amount should be greater than 0"), if ((S >= an))
179186 then true
180- else c("unstake amount should be less or equal user staked amount"), if ((M >= ak))
187+ else c("unstake amount should be less or equal user staked amount"), if ((P >= an))
181188 then true
182- else c("unstake amount should be less or equal node staked amount"), if (x(p))
189+ else c("unstake amount should be less or equal node staked amount"), if (B(q))
183190 then true
184- else c(makeString(["node address is not valid:", p], " ")), if (x(r))
191+ else c(makeString(["node address is not valid:", q], " ")), if (B(s))
185192 then true
186- else c(makeString(["user address is not valid:", r], " "))]
187- if ((ad == ad))
193+ else c(makeString(["user address is not valid:", s], " "))]
194+ if ((ag == ag))
188195 then {
189- let ag = (M - ak)
190- let ai = (P - ak)
191- let an = X(r)
192- let V = an._1
193- let W = an._2
194- let ao = (W + ak)
195-[B(p, K, ag), N(p, r, O, ai), U(r, V, ao), IntegerEntry(t(p), ag), IntegerEntry(u(p, r), ai)]
196+ let aj = (P - an)
197+ let al = (S - an)
198+ let aq = aa(s)
199+ let Y = aq._1
200+ let Z = aq._2
201+ let ar = (Z + an)
202+[E(q, N, aj), Q(q, s, R, al), X(s, Y, ar), IntegerEntry(u(q), aj), IntegerEntry(v(q, s), al)]
196203 }
197204 else throw("Strict value is not equal to itself.")
198205 }
199206
200207
201-func ap (r,aq) = {
202- let ar = X(r)
203- let V = ar._1
204- let W = ar._2
205- let ad = [if ((aq > 0))
208+func as (s,at) = {
209+ let au = aa(s)
210+ let Y = au._1
211+ let Z = au._2
212+ let ag = [if ((at > 0))
206213 then true
207- else c("claim amount should be greater than 0"), if ((V >= aq))
214+ else c("claim amount should be greater than 0"), if ((Y >= at))
208215 then true
209- else c("claim amount should be less or equal unlocked amount"), if (x(r))
216+ else c("claim amount should be less or equal unlocked amount"), if (B(s))
210217 then true
211- else c(makeString(["user address is not valid:", r], " "))]
212- if ((ad == ad))
218+ else c(makeString(["user address is not valid:", s], " "))]
219+ if ((ag == ag))
213220 then {
214- let as = (V - aq)
215-[U(r, as, W), ScriptTransfer(addressFromStringValue(r), aq, w)]
221+ let av = (Y - at)
222+[X(s, av, Z), ScriptTransfer(addressFromStringValue(s), at, x)]
216223 }
217224 else throw("Strict value is not equal to itself.")
218225 }
219226
220227
221-func at (p,r,ae) = {
222- let au = X(r)
223- let V = au._1
224- let W = au._2
225- let av = (W + V)
226- let ad = [if ((ae > 0))
228+func aw (q,s,ah) = {
229+ let ax = aa(s)
230+ let Y = ax._1
231+ let Z = ax._2
232+ let ay = (Z + Y)
233+ let ag = [if ((ah > 0))
227234 then true
228- else c("amount should be greater than 0"), if ((av >= ae))
235+ else c("amount should be greater than 0"), if ((ay >= ah))
229236 then true
230- else c("amount should be less or equal to available"), if (x(p))
237+ else c("amount should be less or equal to available"), if (B(q))
231238 then true
232- else c(makeString(["node address is not valid:", p], " ")), if (x(r))
239+ else c(makeString(["node address is not valid:", q], " ")), if (B(s))
233240 then true
234- else c(makeString(["user address is not valid:", r], " "))]
235- if ((ad == ad))
241+ else c(makeString(["user address is not valid:", s], " "))]
242+ if ((ag == ag))
236243 then {
237- let aw = F(p)
238- let K = aw._1
239- let M = aw._2
240- let ag = (M + ae)
241- let ax = Q(p, r)
242- let O = ax._1
243- let P = ax._2
244- let ai = (P + ae)
245- let ao = max([0, (W - ae)])
246- let as = min([V, (V + (W - ae))])
247-[B(p, K, ag), N(p, r, O, ai), U(r, as, ao), IntegerEntry(t(p), ag), IntegerEntry(u(p, r), ai)]
244+ let az = I(q)
245+ let N = az._1
246+ let P = az._2
247+ let aj = (P + ah)
248+ let aA = T(q, s)
249+ let R = aA._1
250+ let S = aA._2
251+ let al = (S + ah)
252+ let ar = max([0, (Z - ah)])
253+ let av = min([Y, (Y + (Z - ah))])
254+[E(q, N, aj), Q(q, s, R, al), X(s, av, ar), IntegerEntry(u(q), aj), IntegerEntry(v(q, s), al)]
248255 }
249256 else throw("Strict value is not equal to itself.")
250257 }
251258
252259
253-func ay (az) = {
254- let aA = [if ((az > 0))
260+func aB (aC) = {
261+ let aD = [if ((aC > 0))
255262 then true
256263 else c("period length should be greater than 0")]
257- if ((aA == aA))
258- then if ((k == -1))
259- then [IntegerEntry(h, az), IntegerEntry(g, height)]
260- else [IntegerEntry(f, (l + 1)), IntegerEntry(g, n), IntegerEntry(h, az)]
264+ if ((aD == aD))
265+ then if ((l == -1))
266+ then [IntegerEntry(i, aC), IntegerEntry(h, height)]
267+ else [IntegerEntry(g, (m + 1)), IntegerEntry(h, o), IntegerEntry(i, aC)]
261268 else throw("Strict value is not equal to itself.")
262269 }
263270
264271
265-@Callable(ac)
266-func setNewPeriodLength (az) = ay(az)
267-
268-
269-
270-@Callable(ac)
271-func getNodeDataREADONLY (p) = {
272- let aB = F(p)
273- let aC = aB._1
274- let D = aB._2
275- $Tuple2(nil, $Tuple5(m, aC, n, D, height))
272+@Callable(af)
273+func setNewPeriodLength (aC) = {
274+ let ag = [if (z(toString(af.caller)))
275+ then true
276+ else c("i.caller is not in adminList")]
277+ if ((ag == ag))
278+ then aB(aC)
279+ else throw("Strict value is not equal to itself.")
276280 }
277281
278282
279283
280-@Callable(ac)
281-func getUserDataREADONLY (r) = {
282- let aD = X(r)
283- let V = aD._1
284- let W = aD._2
285- $Tuple2(nil, $Tuple5(m, V, n, W, height))
284+@Callable(af)
285+func getNodeDataREADONLY (q) = {
286+ let aE = I(q)
287+ let aF = aE._1
288+ let G = aE._2
289+ $Tuple2(nil, $Tuple5(n, aF, o, G, height))
286290 }
287291
288292
289293
290-@Callable(ac)
291-func stakeFor (p,r) = ab(p, r, ac)
292-
293-
294-
295-@Callable(ac)
296-func stake (p) = {
297- let r = toString(ac.caller)
298- ab(p, r, ac)
294+@Callable(af)
295+func getUserDataREADONLY (s) = {
296+ let aG = aa(s)
297+ let Y = aG._1
298+ let Z = aG._2
299+ $Tuple2(nil, $Tuple5(n, Y, o, Z, height))
299300 }
300301
301302
302303
303-@Callable(ac)
304-func stakeFromUnlocked (p,aE) = {
305- let r = toString(ac.caller)
306- at(p, r, aE)
304+@Callable(af)
305+func leaseByAddress (q,s) = ae(q, s, af)
306+
307+
308+
309+@Callable(af)
310+func lease (q) = {
311+ let s = toString(af.caller)
312+ ae(q, s, af)
307313 }
308314
309315
310316
311-@Callable(ac)
312-func unstake (p,aE) = {
313- let r = toString(ac.caller)
314- aj(p, r, aE)
317+@Callable(af)
318+func leaseFromUnlocked (q,aH) = {
319+ let s = toString(af.caller)
320+ aw(q, s, aH)
315321 }
316322
317323
318324
319-@Callable(ac)
320-func claim (aE) = {
321- let r = toString(ac.caller)
322- ap(r, aE)
325+@Callable(af)
326+func cancelLease (q,aH) = {
327+ let s = toString(af.caller)
328+ am(q, s, aH)
323329 }
324330
325331
326332
327-@Callable(ac)
333+@Callable(af)
334+func claim (aH) = {
335+ let s = toString(af.caller)
336+ as(s, aH)
337+ }
338+
339+
340+
341+@Callable(af)
328342 func claimAll () = {
329- let r = toString(ac.caller)
330- let aF = X(r)
331- let V = aF._1
332- let W = aF._2
333- let ad = [if ((V > 0))
343+ let s = toString(af.caller)
344+ let aI = aa(s)
345+ let Y = aI._1
346+ let Z = aI._2
347+ let ag = [if ((Y > 0))
334348 then true
335349 else c("nothing to claim")]
336- if ((ad == ad))
337- then ap(r, V)
350+ if ((ag == ag))
351+ then as(s, Y)
338352 else throw("Strict value is not equal to itself.")
339353 }
340354
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "l2mp_leasing.ride"
55
66 let b = "__"
77
88 func c (d) = throw(((a + ": ") + d))
99
1010
1111 let e = makeString(["%s", "assetId"], b)
1212
13-let f = makeString(["%s", "offsetId"], b)
13+let f = makeString(["%s", "adminList"], b)
1414
15-let g = makeString(["%s", "offsetHeight"], b)
15+let g = makeString(["%s", "offsetId"], b)
1616
17-let h = makeString(["%s", "periodLength"], b)
17+let h = makeString(["%s", "offsetHeight"], b)
1818
19-let i = valueOrElse(getInteger(this, f), 0)
19+let i = makeString(["%s", "periodLength"], b)
2020
21-let j = valueOrElse(getInteger(this, h), 10000)
21+let j = valueOrElse(getInteger(this, g), 0)
2222
23-let k = valueOrElse(getInteger(this, g), -1)
23+let k = valueOrElse(getInteger(this, i), 10000)
2424
25-let l = if (if ((height > k))
26- then (k != -1)
25+let l = valueOrElse(getInteger(this, h), -1)
26+
27+let m = if (if ((height > l))
28+ then (l != -1)
2729 else false)
28- then (((height - k) / j) + i)
29- else max([0, (i - 1)])
30+ then (((height - l) / k) + j)
31+ else max([0, (j - 1)])
3032
31-let m = (k + ((l - i) * j))
33+let n = (l + ((m - j) * k))
3234
33-let n = (m + j)
35+let o = (n + k)
3436
35-func o (p) = makeString(["%s", p], b)
37+func p (q) = makeString(["%s", q], b)
3638
3739
38-func q (r) = makeString(["%s%s", "toClaim", r], b)
40+func r (s) = makeString(["%s%s", "toClaim", s], b)
3941
4042
41-func s (r,p) = makeString(["%s%s", p, r], b)
43+func t (s,q) = makeString(["%s%s", q, s], b)
4244
4345
44-func t (p) = makeString(["%s%d", p, toString(height)], b)
46+func u (q) = makeString(["%s%d", q, toString(height)], b)
4547
4648
47-func u (p,r) = makeString(["%s%s%d", p, r, toString(height)], b)
49+func v (q,s) = makeString(["%s%s%d", q, s, toString(height)], b)
4850
4951
50-let v = valueOrElse(getString(this, e), "WAVES")
52+let w = valueOrElse(getString(this, e), "WAVES")
5153
52-let w = if ((v == "WAVES"))
54+let x = if ((w == "WAVES"))
5355 then unit
54- else fromBase58String(v)
56+ else fromBase58String(w)
5557
56-func x (y) = {
57- let z = addressFromString(y)
58- if ($isInstanceOf(z, "Address"))
58+let y = split(valueOrElse(getString(this, f), ""), b)
59+
60+func z (A) = containsElement(y, A)
61+
62+
63+func B (A) = {
64+ let C = addressFromString(A)
65+ if ($isInstanceOf(C, "Address"))
5966 then {
60- let A = z
67+ let D = C
6168 true
6269 }
6370 else false
6471 }
6572
6673
67-func B (p,C,D) = {
68- let E = makeString(["%d%d%d%d", toString(m), toString(C), toString(n), toString(D)], b)
69- StringEntry(o(p), E)
74+func E (q,F,G) = {
75+ let H = makeString(["%d%d%d%d", toString(n), toString(F), toString(o), toString(G)], b)
76+ StringEntry(p(q), H)
7077 }
7178
7279
73-func F (p) = {
74- let G = getString(this, o(p))
75- let z = G
76- if ($isInstanceOf(z, "String"))
80+func I (q) = {
81+ let J = getString(this, p(q))
82+ let C = J
83+ if ($isInstanceOf(C, "String"))
7784 then {
78- let H = z
79- let I = split(H, b)
80- let J = parseIntValue(I[1])
81- let K = parseIntValue(I[2])
82- let L = parseIntValue(I[3])
83- let M = parseIntValue(I[4])
84- if ((L > height))
85- then $Tuple2(K, M)
86- else $Tuple2(M, M)
87- }
88- else $Tuple2(0, 0)
89- }
90-
91-
92-func N (p,r,O,P) = {
93- let E = makeString(["%d%d%d%d", toString(m), toString(O), toString(n), toString(P)], b)
94- StringEntry(s(r, p), E)
95- }
96-
97-
98-func Q (p,r) = {
99- let R = getString(this, s(r, p))
100- let z = R
101- if ($isInstanceOf(z, "String"))
102- then {
103- let H = z
104- let I = split(H, b)
105- let S = parseIntValue(I[1])
106- let O = parseIntValue(I[2])
107- let T = parseIntValue(I[3])
108- let P = parseIntValue(I[4])
109- if ((T > height))
110- then $Tuple2(O, P)
85+ let K = C
86+ let L = split(K, b)
87+ let M = parseIntValue(L[1])
88+ let N = parseIntValue(L[2])
89+ let O = parseIntValue(L[3])
90+ let P = parseIntValue(L[4])
91+ if ((O > height))
92+ then $Tuple2(N, P)
11193 else $Tuple2(P, P)
11294 }
11395 else $Tuple2(0, 0)
11496 }
11597
11698
117-func U (r,V,W) = {
118- let E = makeString(["%d%d%d%d", toString(m), toString(V), toString(n), toString(W)], b)
119- StringEntry(q(r), E)
99+func Q (q,s,R,S) = {
100+ let H = makeString(["%d%d%d%d", toString(n), toString(R), toString(o), toString(S)], b)
101+ StringEntry(t(s, q), H)
120102 }
121103
122104
123-func X (r) = {
124- let Y = getString(this, q(r))
125- let z = Y
126- if ($isInstanceOf(z, "String"))
105+func T (q,s) = {
106+ let U = getString(this, t(s, q))
107+ let C = U
108+ if ($isInstanceOf(C, "String"))
127109 then {
128- let H = z
129- let I = split(H, b)
130- let Z = parseIntValue(I[1])
131- let V = parseIntValue(I[2])
132- let aa = parseIntValue(I[3])
133- let W = parseIntValue(I[4])
134- if ((aa > height))
135- then $Tuple2(V, W)
136- else $Tuple2((V + W), 0)
110+ let K = C
111+ let L = split(K, b)
112+ let V = parseIntValue(L[1])
113+ let R = parseIntValue(L[2])
114+ let W = parseIntValue(L[3])
115+ let S = parseIntValue(L[4])
116+ if ((W > height))
117+ then $Tuple2(R, S)
118+ else $Tuple2(S, S)
137119 }
138120 else $Tuple2(0, 0)
139121 }
140122
141123
142-func ab (p,r,ac) = {
143- let ad = [if ((size(ac.payments) == 1))
124+func X (s,Y,Z) = {
125+ let H = makeString(["%d%d%d%d", toString(n), toString(Y), toString(o), toString(Z)], b)
126+ StringEntry(r(s), H)
127+ }
128+
129+
130+func aa (s) = {
131+ let ab = getString(this, r(s))
132+ let C = ab
133+ if ($isInstanceOf(C, "String"))
134+ then {
135+ let K = C
136+ let L = split(K, b)
137+ let ac = parseIntValue(L[1])
138+ let Y = parseIntValue(L[2])
139+ let ad = parseIntValue(L[3])
140+ let Z = parseIntValue(L[4])
141+ if ((ad > height))
142+ then $Tuple2(Y, Z)
143+ else $Tuple2((Y + Z), 0)
144+ }
145+ else $Tuple2(0, 0)
146+ }
147+
148+
149+func ae (q,s,af) = {
150+ let ag = [if ((size(af.payments) == 1))
144151 then true
145- else c("payment size should be exactly 1"), if ((ac.payments[0].assetId == w))
152+ else c("payment size should be exactly 1"), if ((af.payments[0].assetId == x))
146153 then true
147- else c(makeString(["payment assetId should be:", v], " ")), if (x(p))
154+ else c(makeString(["payment assetId should be:", w], " ")), if (B(q))
148155 then true
149- else c(makeString(["node address is not valid:", p], " ")), if (x(r))
156+ else c(makeString(["node address is not valid:", q], " ")), if (B(s))
150157 then true
151- else c(makeString(["user address is not valid:", r], " "))]
152- if ((ad == ad))
158+ else c(makeString(["user address is not valid:", s], " "))]
159+ if ((ag == ag))
153160 then {
154- let ae = ac.payments[0].amount
155- let af = F(p)
156- let K = af._1
157- let M = af._2
158- let ag = (M + ae)
159- let ah = Q(p, r)
160- let O = ah._1
161- let P = ah._2
162- let ai = (P + ae)
163-[B(p, K, ag), N(p, r, O, ai), IntegerEntry(t(p), ag), IntegerEntry(u(p, r), ai)]
161+ let ah = af.payments[0].amount
162+ let ai = I(q)
163+ let N = ai._1
164+ let P = ai._2
165+ let aj = (P + ah)
166+ let ak = T(q, s)
167+ let R = ak._1
168+ let S = ak._2
169+ let al = (S + ah)
170+[E(q, N, aj), Q(q, s, R, al), IntegerEntry(u(q), aj), IntegerEntry(v(q, s), al)]
164171 }
165172 else throw("Strict value is not equal to itself.")
166173 }
167174
168175
169-func aj (p,r,ak) = {
170- let al = F(p)
171- let K = al._1
172- let M = al._2
173- let am = Q(p, r)
174- let O = am._1
175- let P = am._2
176- let ad = [if ((ak > 0))
176+func am (q,s,an) = {
177+ let ao = I(q)
178+ let N = ao._1
179+ let P = ao._2
180+ let ap = T(q, s)
181+ let R = ap._1
182+ let S = ap._2
183+ let ag = [if ((an > 0))
177184 then true
178- else c("unstake amount should be greater than 0"), if ((P >= ak))
185+ else c("unstake amount should be greater than 0"), if ((S >= an))
179186 then true
180- else c("unstake amount should be less or equal user staked amount"), if ((M >= ak))
187+ else c("unstake amount should be less or equal user staked amount"), if ((P >= an))
181188 then true
182- else c("unstake amount should be less or equal node staked amount"), if (x(p))
189+ else c("unstake amount should be less or equal node staked amount"), if (B(q))
183190 then true
184- else c(makeString(["node address is not valid:", p], " ")), if (x(r))
191+ else c(makeString(["node address is not valid:", q], " ")), if (B(s))
185192 then true
186- else c(makeString(["user address is not valid:", r], " "))]
187- if ((ad == ad))
193+ else c(makeString(["user address is not valid:", s], " "))]
194+ if ((ag == ag))
188195 then {
189- let ag = (M - ak)
190- let ai = (P - ak)
191- let an = X(r)
192- let V = an._1
193- let W = an._2
194- let ao = (W + ak)
195-[B(p, K, ag), N(p, r, O, ai), U(r, V, ao), IntegerEntry(t(p), ag), IntegerEntry(u(p, r), ai)]
196+ let aj = (P - an)
197+ let al = (S - an)
198+ let aq = aa(s)
199+ let Y = aq._1
200+ let Z = aq._2
201+ let ar = (Z + an)
202+[E(q, N, aj), Q(q, s, R, al), X(s, Y, ar), IntegerEntry(u(q), aj), IntegerEntry(v(q, s), al)]
196203 }
197204 else throw("Strict value is not equal to itself.")
198205 }
199206
200207
201-func ap (r,aq) = {
202- let ar = X(r)
203- let V = ar._1
204- let W = ar._2
205- let ad = [if ((aq > 0))
208+func as (s,at) = {
209+ let au = aa(s)
210+ let Y = au._1
211+ let Z = au._2
212+ let ag = [if ((at > 0))
206213 then true
207- else c("claim amount should be greater than 0"), if ((V >= aq))
214+ else c("claim amount should be greater than 0"), if ((Y >= at))
208215 then true
209- else c("claim amount should be less or equal unlocked amount"), if (x(r))
216+ else c("claim amount should be less or equal unlocked amount"), if (B(s))
210217 then true
211- else c(makeString(["user address is not valid:", r], " "))]
212- if ((ad == ad))
218+ else c(makeString(["user address is not valid:", s], " "))]
219+ if ((ag == ag))
213220 then {
214- let as = (V - aq)
215-[U(r, as, W), ScriptTransfer(addressFromStringValue(r), aq, w)]
221+ let av = (Y - at)
222+[X(s, av, Z), ScriptTransfer(addressFromStringValue(s), at, x)]
216223 }
217224 else throw("Strict value is not equal to itself.")
218225 }
219226
220227
221-func at (p,r,ae) = {
222- let au = X(r)
223- let V = au._1
224- let W = au._2
225- let av = (W + V)
226- let ad = [if ((ae > 0))
228+func aw (q,s,ah) = {
229+ let ax = aa(s)
230+ let Y = ax._1
231+ let Z = ax._2
232+ let ay = (Z + Y)
233+ let ag = [if ((ah > 0))
227234 then true
228- else c("amount should be greater than 0"), if ((av >= ae))
235+ else c("amount should be greater than 0"), if ((ay >= ah))
229236 then true
230- else c("amount should be less or equal to available"), if (x(p))
237+ else c("amount should be less or equal to available"), if (B(q))
231238 then true
232- else c(makeString(["node address is not valid:", p], " ")), if (x(r))
239+ else c(makeString(["node address is not valid:", q], " ")), if (B(s))
233240 then true
234- else c(makeString(["user address is not valid:", r], " "))]
235- if ((ad == ad))
241+ else c(makeString(["user address is not valid:", s], " "))]
242+ if ((ag == ag))
236243 then {
237- let aw = F(p)
238- let K = aw._1
239- let M = aw._2
240- let ag = (M + ae)
241- let ax = Q(p, r)
242- let O = ax._1
243- let P = ax._2
244- let ai = (P + ae)
245- let ao = max([0, (W - ae)])
246- let as = min([V, (V + (W - ae))])
247-[B(p, K, ag), N(p, r, O, ai), U(r, as, ao), IntegerEntry(t(p), ag), IntegerEntry(u(p, r), ai)]
244+ let az = I(q)
245+ let N = az._1
246+ let P = az._2
247+ let aj = (P + ah)
248+ let aA = T(q, s)
249+ let R = aA._1
250+ let S = aA._2
251+ let al = (S + ah)
252+ let ar = max([0, (Z - ah)])
253+ let av = min([Y, (Y + (Z - ah))])
254+[E(q, N, aj), Q(q, s, R, al), X(s, av, ar), IntegerEntry(u(q), aj), IntegerEntry(v(q, s), al)]
248255 }
249256 else throw("Strict value is not equal to itself.")
250257 }
251258
252259
253-func ay (az) = {
254- let aA = [if ((az > 0))
260+func aB (aC) = {
261+ let aD = [if ((aC > 0))
255262 then true
256263 else c("period length should be greater than 0")]
257- if ((aA == aA))
258- then if ((k == -1))
259- then [IntegerEntry(h, az), IntegerEntry(g, height)]
260- else [IntegerEntry(f, (l + 1)), IntegerEntry(g, n), IntegerEntry(h, az)]
264+ if ((aD == aD))
265+ then if ((l == -1))
266+ then [IntegerEntry(i, aC), IntegerEntry(h, height)]
267+ else [IntegerEntry(g, (m + 1)), IntegerEntry(h, o), IntegerEntry(i, aC)]
261268 else throw("Strict value is not equal to itself.")
262269 }
263270
264271
265-@Callable(ac)
266-func setNewPeriodLength (az) = ay(az)
267-
268-
269-
270-@Callable(ac)
271-func getNodeDataREADONLY (p) = {
272- let aB = F(p)
273- let aC = aB._1
274- let D = aB._2
275- $Tuple2(nil, $Tuple5(m, aC, n, D, height))
272+@Callable(af)
273+func setNewPeriodLength (aC) = {
274+ let ag = [if (z(toString(af.caller)))
275+ then true
276+ else c("i.caller is not in adminList")]
277+ if ((ag == ag))
278+ then aB(aC)
279+ else throw("Strict value is not equal to itself.")
276280 }
277281
278282
279283
280-@Callable(ac)
281-func getUserDataREADONLY (r) = {
282- let aD = X(r)
283- let V = aD._1
284- let W = aD._2
285- $Tuple2(nil, $Tuple5(m, V, n, W, height))
284+@Callable(af)
285+func getNodeDataREADONLY (q) = {
286+ let aE = I(q)
287+ let aF = aE._1
288+ let G = aE._2
289+ $Tuple2(nil, $Tuple5(n, aF, o, G, height))
286290 }
287291
288292
289293
290-@Callable(ac)
291-func stakeFor (p,r) = ab(p, r, ac)
292-
293-
294-
295-@Callable(ac)
296-func stake (p) = {
297- let r = toString(ac.caller)
298- ab(p, r, ac)
294+@Callable(af)
295+func getUserDataREADONLY (s) = {
296+ let aG = aa(s)
297+ let Y = aG._1
298+ let Z = aG._2
299+ $Tuple2(nil, $Tuple5(n, Y, o, Z, height))
299300 }
300301
301302
302303
303-@Callable(ac)
304-func stakeFromUnlocked (p,aE) = {
305- let r = toString(ac.caller)
306- at(p, r, aE)
304+@Callable(af)
305+func leaseByAddress (q,s) = ae(q, s, af)
306+
307+
308+
309+@Callable(af)
310+func lease (q) = {
311+ let s = toString(af.caller)
312+ ae(q, s, af)
307313 }
308314
309315
310316
311-@Callable(ac)
312-func unstake (p,aE) = {
313- let r = toString(ac.caller)
314- aj(p, r, aE)
317+@Callable(af)
318+func leaseFromUnlocked (q,aH) = {
319+ let s = toString(af.caller)
320+ aw(q, s, aH)
315321 }
316322
317323
318324
319-@Callable(ac)
320-func claim (aE) = {
321- let r = toString(ac.caller)
322- ap(r, aE)
325+@Callable(af)
326+func cancelLease (q,aH) = {
327+ let s = toString(af.caller)
328+ am(q, s, aH)
323329 }
324330
325331
326332
327-@Callable(ac)
333+@Callable(af)
334+func claim (aH) = {
335+ let s = toString(af.caller)
336+ as(s, aH)
337+ }
338+
339+
340+
341+@Callable(af)
328342 func claimAll () = {
329- let r = toString(ac.caller)
330- let aF = X(r)
331- let V = aF._1
332- let W = aF._2
333- let ad = [if ((V > 0))
343+ let s = toString(af.caller)
344+ let aI = aa(s)
345+ let Y = aI._1
346+ let Z = aI._2
347+ let ag = [if ((Y > 0))
334348 then true
335349 else c("nothing to claim")]
336- if ((ad == ad))
337- then ap(r, V)
350+ if ((ag == ag))
351+ then as(s, Y)
338352 else throw("Strict value is not equal to itself.")
339353 }
340354
341355

github/deemru/w8io/169f3d6 
96.04 ms