tx · 24A1mSKMLAyoGHWK9aRJsRp8HChXJF9GBtsXyxM61QGr

3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h:  -0.02300000 Waves

2024.10.15 15:53 [3327965] smart account 3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h > SELF 0.00000000 Waves

{ "type": 13, "id": "24A1mSKMLAyoGHWK9aRJsRp8HChXJF9GBtsXyxM61QGr", "fee": 2300000, "feeAssetId": null, "timestamp": 1728996855836, "version": 1, "sender": "3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h", "senderPublicKey": "3z8Q6Zu3KppVmn6fJJvrLc1Wo3krVHSvfaNcerm82md2", "proofs": [ "4So7VLaPsWT84LyL3UkWJfTwm5xhypEX4uR4DnJB91a2MP7TQYYqQv5DRZCv6jBPHnQTvZs5uhdmWJ5CiokN9QNV" ], "script": "base64:BgJLCAISAwoBARIAEgMKAQQSAwoBBBIDCgEIEgQKAggIEgMKAQgSBAoCCAgSAwoBCBIECgIIARIECgIIARIDCgEBEgASAwoBCBIDCgEIPwAMY29udHJhY3RGaWxlAhFsMm1wX2xlYXNpbmcucmlkZQADU0VQAgJfXwASQkxPQ0tTX0lOX0lOVEVSVkFMAOgHAAZzY2FsZTgAgMLXLwEIdGhyb3dFcnIBA21zZwkAAgEJAKwCAgkArAICBQxjb250cmFjdEZpbGUCAjogBQNtc2cACmtleUFzc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAgdhc3NldElkBQNuaWwFA1NFUAAMa2V5Rm9yY2VTdG9wCQC5CQIJAMwIAgICJXMJAMwIAgIJZm9yY2VTdG9wBQNuaWwFA1NFUAAPa2V5Rm9yY2VPdXRTdG9wCQC5CQIJAMwIAgICJXMJAMwIAgIMZm9yY2VPdXRTdG9wBQNuaWwFA1NFUAARa2V5UGVyaW9kT2Zmc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAghvZmZzZXRJZAUDbmlsBQNTRVAAFWtleVBlcmlvZE9mZnNldEhlaWdodAkAuQkCCQDMCAICAiVzCQDMCAICDG9mZnNldEhlaWdodAUDbmlsBQNTRVAAD2tleVBlcmlvZExlbmd0aAkAuQkCCQDMCAICAiVzCQDMCAICDHBlcmlvZExlbmd0aAUDbmlsBQNTRVAADnBlcmlvZE9mZnNldElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFEWtleVBlcmlvZE9mZnNldElkAAAADHBlcmlvZExlbmd0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ9rZXlQZXJpb2RMZW5ndGgAkE4AEnBlcmlvZE9mZnNldEhlaWdodAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRVrZXlQZXJpb2RPZmZzZXRIZWlnaHQA////////////AQAPY3VycmVudFBlcmlvZElkAwMJAGYCBQZoZWlnaHQFEnBlcmlvZE9mZnNldEhlaWdodAkBAiE9AgUScGVyaW9kT2Zmc2V0SGVpZ2h0AP///////////wEHCQBkAgkAaQIJAGUCBQZoZWlnaHQFEnBlcmlvZE9mZnNldEhlaWdodAUMcGVyaW9kTGVuZ3RoBQ5wZXJpb2RPZmZzZXRJZAkAlgMBCQDMCAIAAAkAzAgCCQBlAgUOcGVyaW9kT2Zmc2V0SWQAAQUDbmlsABNjdXJyZW50UGVyaW9kSGVpZ2h0AwMJAAACBRJwZXJpb2RPZmZzZXRIZWlnaHQA////////////AQYDCQAAAgUPY3VycmVudFBlcmlvZElkAAAJAGYCBRJwZXJpb2RPZmZzZXRIZWlnaHQFBmhlaWdodAcAAAkAZAIFEnBlcmlvZE9mZnNldEhlaWdodAkAaAIJAGUCBQ9jdXJyZW50UGVyaW9kSWQFDnBlcmlvZE9mZnNldElkBQxwZXJpb2RMZW5ndGgAEG5leHRQZXJpb2RIZWlnaHQDAwkAAAIFEnBlcmlvZE9mZnNldEhlaWdodAD///////////8BBgMJAAACBQ9jdXJyZW50UGVyaW9kSWQAAAkAZgIFEnBlcmlvZE9mZnNldEhlaWdodAUGaGVpZ2h0BwAACQBkAgUTY3VycmVudFBlcmlvZEhlaWdodAUMcGVyaW9kTGVuZ3RoARJrZXlMZWFzaW5nTm9kZURhdGEBC25vZGVBZGRyZXNzCQC5CQIJAMwIAgICJXMJAMwIAgULbm9kZUFkZHJlc3MFA25pbAUDU0VQARZrZXlVc2VyTGVhc2luZ05vZGVEYXRhAgt1c2VyQWRkcmVzcwtub2RlQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgULbm9kZUFkZHJlc3MJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQAQ5rZXlVc2VyVG9DbGFpbQELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICB3RvQ2xhaW0JAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARJrZXlVc2VyVG90YWxMb2NrZWQBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg91c2VyVG90YWxMb2NrZWQJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQAQ9rZXlDbGFpbWVkQmxvY2sBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCAgxjbGFpbWVkQmxvY2sFA25pbAUDU0VQARRrZXlUb3RhbFVuaXRzQ2xhaW1lZAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAICEXRvdGFsVW5pdHNDbGFpbWVkBQNuaWwFA1NFUAEWa2V5Tm9kZUxlYXNpbmdCeUhlaWdodAELbm9kZUFkZHJlc3MEAWgDCQAAAgUScGVyaW9kT2Zmc2V0SGVpZ2h0AP///////////wEAAAUGaGVpZ2h0CQC5CQIJAMwIAgIEJXMlZAkAzAgCBQtub2RlQWRkcmVzcwkAzAgCCQCkAwEFAWgFA25pbAUDU0VQARZrZXlVc2VyTGVhc2luZ0J5SGVpZ2h0Agtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcwQBaAMJAAACBRJwZXJpb2RPZmZzZXRIZWlnaHQA////////////AQAABQZoZWlnaHQJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgULbm9kZUFkZHJlc3MJAMwIAgULdXNlckFkZHJlc3MJAMwIAgkApAMBBQFoBQNuaWwFA1NFUAANYXNzZXRJZFN0cmluZwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQprZXlBc3NldElkAgVXQVZFUwAMYXNzZXRJZEJ5dGVzAwkAAAIFDWFzc2V0SWRTdHJpbmcCBVdBVkVTBQR1bml0CQDZBAEFDWFzc2V0SWRTdHJpbmcAC2lzRm9yY2VTdG9wCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDGtleUZvcmNlU3RvcAcADmlzRm9yY2VPdXRTdG9wCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFD2tleUZvcmNlT3V0U3RvcAcBDmlzVmFsaWRBZGRyZXNzAQdhZGRyZXNzBAckbWF0Y2gwCQCmCAEFB2FkZHJlc3MDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAYHAA9BRE1JTl9MSVNUX1NJWkUABQAGUVVPUlVNAAMAEVRYSURfQllURVNfTEVOR1RIACABGGtleUFsbG93ZWRUeElkVm90ZVByZWZpeAEEdHhJZAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAglhbGxvd1R4SWQJAMwIAgUEdHhJZAUDbmlsBQNTRVABEGtleUZ1bGxBZG1pblZvdGUCBnByZWZpeAxhZG1pbkFkZHJlc3MJALkJAgkAzAgCBQZwcmVmaXgJAMwIAgUMYWRtaW5BZGRyZXNzBQNuaWwFA1NFUAETa2V5QWRtaW5BZGRyZXNzTGlzdAAJALkJAgkAzAgCAgIlcwkAzAgCAhBhZG1pbkFkZHJlc3NMaXN0BQNuaWwFA1NFUAEOa2V5QWxsb3dlZFR4SWQACQC5CQIJAMwIAgICJXMJAMwIAgIEdHhJZAUDbmlsBQNTRVABDGdldEFkbWluVm90ZQIGcHJlZml4BWFkbWluBAd2b3RlS2V5CQEQa2V5RnVsbEFkbWluVm90ZQIFBnByZWZpeAUFYWRtaW4JAQt2YWx1ZU9yRWxzZQIJAJ8IAQUHdm90ZUtleQAAAQ1nZXRBZG1pbnNMaXN0AAQHJG1hdGNoMAkAnQgCBQR0aGlzCQETa2V5QWRtaW5BZGRyZXNzTGlzdAADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQC1CQIFAXMFA1NFUAUDbmlsAQ1pc0luQWRtaW5MaXN0AQdhZGRyZXNzCQEPY29udGFpbnNFbGVtZW50AgkBDWdldEFkbWluc0xpc3QABQdhZGRyZXNzARJnZW5Wb3Rlc0tleXNIZWxwZXICAWEMYWRtaW5BZGRyZXNzBAskdDAzOTY4Mzk5MgUBYQQGcmVzdWx0CAULJHQwMzk2ODM5OTICXzEEBnByZWZpeAgFCyR0MDM5NjgzOTkyAl8yCQCUCgIJAM0IAgUGcmVzdWx0CQEQa2V5RnVsbEFkbWluVm90ZQIFBnByZWZpeAUMYWRtaW5BZGRyZXNzBQZwcmVmaXgBDGdlblZvdGVzS2V5cwEJa2V5UHJlZml4BAlhZG1pbkxpc3QJARNrZXlBZG1pbkFkZHJlc3NMaXN0AAQLJHQwNDEzOTQyMjMKAAIkbAkBDWdldEFkbWluc0xpc3QACgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwFCWtleVByZWZpeAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQESZ2VuVm90ZXNLZXlzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQQGcmVzdWx0CAULJHQwNDEzOTQyMjMCXzEEBnByZWZpeAgFCyR0MDQxMzk0MjIzAl8yBQZyZXN1bHQBEGNvdW50Vm90ZXNIZWxwZXICBnJlc3VsdAd2b3RlS2V5CQBkAgUGcmVzdWx0CQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAEKY291bnRWb3RlcwEGcHJlZml4BAV2b3RlcwkBDGdlblZvdGVzS2V5cwEFBnByZWZpeAoAAiRsBQV2b3RlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEQY291bnRWb3Rlc0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUBEGNsZWFyVm90ZXNIZWxwZXICBnJlc3VsdANrZXkJAM0IAgUGcmVzdWx0CQELRGVsZXRlRW50cnkBBQNrZXkBE2dldENsZWFyVm90ZUVudHJpZXMBBnByZWZpeAQFdm90ZXMJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNsZWFyVm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAQx2b3RlSU5URVJOQUwEE2NhbGxlckFkZHJlc3NTdHJpbmcJa2V5UHJlZml4CG1pblZvdGVzCnZvdGVSZXN1bHQEB3ZvdGVLZXkJARBrZXlGdWxsQWRtaW5Wb3RlAgUJa2V5UHJlZml4BRNjYWxsZXJBZGRyZXNzU3RyaW5nBBBhZG1pbkN1cnJlbnRWb3RlCQEMZ2V0QWRtaW5Wb3RlAgUJa2V5UHJlZml4BRNjYWxsZXJBZGRyZXNzU3RyaW5nBANlcnIDCQEBIQEJAQ1pc0luQWRtaW5MaXN0AQUTY2FsbGVyQWRkcmVzc1N0cmluZwkBCHRocm93RXJyAQkArAICCQCsAgICCUFkZHJlc3M6IAUTY2FsbGVyQWRkcmVzc1N0cmluZwISIG5vdCBpbiBBZG1pbiBsaXN0AwkAAAIFEGFkbWluQ3VycmVudFZvdGUAAQkBCHRocm93RXJyAQkArAICBQd2b3RlS2V5AhIgeW91IGFscmVhZHkgdm90ZWQFBHVuaXQDCQAAAgUDZXJyBQNlcnIEBXZvdGVzCQEKY291bnRWb3RlcwEFCWtleVByZWZpeAMJAGcCCQBkAgUFdm90ZXMAAQUIbWluVm90ZXMEEGNsZWFyVm90ZUVudHJpZXMJARNnZXRDbGVhclZvdGVFbnRyaWVzAQUJa2V5UHJlZml4CQDOCAIFEGNsZWFyVm90ZUVudHJpZXMFCnZvdGVSZXN1bHQJAMwIAgkBDEludGVnZXJFbnRyeQIFB3ZvdGVLZXkAAQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARNnZXRMZWFzaW5nTm9kZUVudHJ5Awtub2RlQWRkcmVzcw1jdXJyZW50TGVhc2VkCm5leHRMZWFzZWQEC3ZhbHVlU3RyaW5nCQC5CQIJAMwIAgIIJWQlZCVkJWQJAMwIAgkApAMBBRNjdXJyZW50UGVyaW9kSGVpZ2h0CQDMCAIJAKQDAQUNY3VycmVudExlYXNlZAkAzAgCCQCkAwEFEG5leHRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBQpuZXh0TGVhc2VkBQNuaWwFA1NFUAkBC1N0cmluZ0VudHJ5AgkBEmtleUxlYXNpbmdOb2RlRGF0YQEFC25vZGVBZGRyZXNzBQt2YWx1ZVN0cmluZwESZ2V0TGVhc2luZ05vZGVEYXRhAQtub2RlQWRkcmVzcwQYbGVhc2luZ05vZGVEYXRhU3RyaW5nUmF3CQCdCAIFBHRoaXMJARJrZXlMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwQHJG1hdGNoMAUYbGVhc2luZ05vZGVEYXRhU3RyaW5nUmF3AwkAAQIFByRtYXRjaDACBlN0cmluZwQCZHMFByRtYXRjaDAECGRhdGFMaXN0CQC1CQIFAmRzBQNTRVAEEW5vZGVDdXJyZW50UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAQQRbm9kZUN1cnJlbnRMZWFzZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAACBA5ub2RlTmV4dFBlcmlvZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAMEDm5vZGVOZXh0TGVhc2VkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QABAMDCQBmAgUObm9kZU5leHRQZXJpb2QFBmhlaWdodAYJAAACBRJwZXJpb2RPZmZzZXRIZWlnaHQA////////////AQkAlAoCBRFub2RlQ3VycmVudExlYXNlZAUObm9kZU5leHRMZWFzZWQJAJQKAgUObm9kZU5leHRMZWFzZWQFDm5vZGVOZXh0TGVhc2VkCQCUCgIAAAAAARNnZXRVc2VyTGVhc2luZ0VudHJ5BAtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcxF1c2VyQ3VycmVudExlYXNlZA51c2VyTmV4dExlYXNlZAQLdmFsdWVTdHJpbmcJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFE2N1cnJlbnRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBRF1c2VyQ3VycmVudExlYXNlZAkAzAgCCQCkAwEFEG5leHRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBQ51c2VyTmV4dExlYXNlZAUDbmlsBQNTRVAJAQtTdHJpbmdFbnRyeQIJARZrZXlVc2VyTGVhc2luZ05vZGVEYXRhAgULdXNlckFkZHJlc3MFC25vZGVBZGRyZXNzBQt2YWx1ZVN0cmluZwESZ2V0VXNlckxlYXNpbmdEYXRhAgtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcwQYbGVhc2luZ1VzZXJEYXRhU3RyaW5nUmF3CQCdCAIFBHRoaXMJARZrZXlVc2VyTGVhc2luZ05vZGVEYXRhAgULdXNlckFkZHJlc3MFC25vZGVBZGRyZXNzBAckbWF0Y2gwBRhsZWFzaW5nVXNlckRhdGFTdHJpbmdSYXcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAJkcwUHJG1hdGNoMAQIZGF0YUxpc3QJALUJAgUCZHMFA1NFUAQRdXNlckN1cnJlbnRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAABBBF1c2VyQ3VycmVudExlYXNlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAIEDnVzZXJOZXh0UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAwQOdXNlck5leHRMZWFzZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAAEAwMJAGYCBQ51c2VyTmV4dFBlcmlvZAUGaGVpZ2h0BgkAAAIFEnBlcmlvZE9mZnNldEhlaWdodAD///////////8BCQCUCgIFEXVzZXJDdXJyZW50TGVhc2VkBQ51c2VyTmV4dExlYXNlZAkAlAoCBQ51c2VyTmV4dExlYXNlZAUOdXNlck5leHRMZWFzZWQJAJQKAgAAAAABE2dldFVzZXJUb0NsYWltRW50cnkDC3VzZXJBZGRyZXNzB3RvQ2xhaW0IdG9VbmxvY2sEC3ZhbHVlU3RyaW5nCQC5CQIJAMwIAgIIJWQlZCVkJWQJAMwIAgkApAMBBRNjdXJyZW50UGVyaW9kSGVpZ2h0CQDMCAIJAKQDAQUHdG9DbGFpbQkAzAgCCQCkAwEFEG5leHRQZXJpb2RIZWlnaHQJAMwIAgkApAMBBQh0b1VubG9jawUDbmlsBQNTRVAJAQtTdHJpbmdFbnRyeQIJAQ5rZXlVc2VyVG9DbGFpbQEFC3VzZXJBZGRyZXNzBQt2YWx1ZVN0cmluZwEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQt1c2VyQWRkcmVzcwQYdXNlclRvQ2xhaW1EYXRhU3RyaW5nUmF3CQCdCAIFBHRoaXMJAQ5rZXlVc2VyVG9DbGFpbQEFC3VzZXJBZGRyZXNzBAckbWF0Y2gwBRh1c2VyVG9DbGFpbURhdGFTdHJpbmdSYXcDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAJkcwUHJG1hdGNoMAQIZGF0YUxpc3QJALUJAgUCZHMFA1NFUAQNY3VycmVudFBlcmlvZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAEEB3RvQ2xhaW0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAACBApuZXh0UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAwQIdG9VbmxvY2sJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAAEAwMJAGYCBQpuZXh0UGVyaW9kBQZoZWlnaHQGCQAAAgUPY3VycmVudFBlcmlvZElkAAAJAJQKAgUHdG9DbGFpbQUIdG9VbmxvY2sJAJQKAgkAZAIFB3RvQ2xhaW0FCHRvVW5sb2NrAAAJAJQKAgAAAAABF2dldFVzZXJUb3RhbExvY2tlZEVudHJ5Agt1c2VyQWRkcmVzcw91c2VyVG90YWxMb2NrZWQJAQxJbnRlZ2VyRW50cnkCCQESa2V5VXNlclRvdGFsTG9ja2VkAQULdXNlckFkZHJlc3MFD3VzZXJUb3RhbExvY2tlZAESZ2V0VXNlclRvdGFsTG9ja2VkAQt1c2VyQWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQESa2V5VXNlclRvdGFsTG9ja2VkAQULdXNlckFkZHJlc3MAAAERZ2V0VW5zdGFrZUFjdGlvbnMDC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzDXVuc3Rha2VBbW91bnQECyR0MDkyNjM5MzM2CQESZ2V0TGVhc2luZ05vZGVEYXRhAQULbm9kZUFkZHJlc3MEEW5vZGVDdXJyZW50TGVhc2VkCAULJHQwOTI2MzkzMzYCXzEEDm5vZGVOZXh0TGVhc2VkCAULJHQwOTI2MzkzMzYCXzIECyR0MDkzNDE5NDI3CQESZ2V0VXNlckxlYXNpbmdEYXRhAgULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBBF1c2VyQ3VycmVudExlYXNlZAgFCyR0MDkzNDE5NDI3Al8xBA51c2VyTmV4dExlYXNlZAgFCyR0MDkzNDE5NDI3Al8yBAZjaGVja3MJAMwIAgMJAQEhAQULaXNGb3JjZVN0b3AGCQEIdGhyb3dFcnIBAh1jb250cmFjdCBpcyB0ZW1wb3Jhcnkgc3RvcHBlZAkAzAgCAwkBASEBBQ5pc0ZvcmNlT3V0U3RvcAYJAQh0aHJvd0VycgECHXVuc3Rha2UgaXMgdGVtcG9yYXJ5IGRpc2FibGVkCQDMCAIDCQBmAgUNdW5zdGFrZUFtb3VudAAABgkBCHRocm93RXJyAQIndW5zdGFrZSBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIDCQBnAgUOdXNlck5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQGCQEIdGhyb3dFcnIBAjl1bnN0YWtlIGFtb3VudCBzaG91bGQgYmUgbGVzcyBvciBlcXVhbCB1c2VyIHN0YWtlZCBhbW91bnQJAMwIAgMJAGcCBQ5ub2RlTmV4dExlYXNlZAUNdW5zdGFrZUFtb3VudAYJAQh0aHJvd0VycgECOXVuc3Rha2UgYW1vdW50IHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIG5vZGUgc3Rha2VkIGFtb3VudAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULbm9kZUFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIabm9kZSBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULbm9kZUFkZHJlc3MFA25pbAIBIAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIadXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBBBuZXdOb2RlTmV4dExlYXNlCQBlAgUObm9kZU5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQEEW5ld1VzZXJOZXh0TGVhc2VkCQBlAgUOdXNlck5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQEDSR0MDEwMzExMTAzNzEJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFDSR0MDEwMzExMTAzNzECXzEECHRvVW5sb2NrCAUNJHQwMTAzMTExMDM3MQJfMgQLbmV3VG9VbmxvY2sJAGQCBQh0b1VubG9jawUNdW5zdGFrZUFtb3VudAQPdXNlclRvdGFsTG9ja2VkCQESZ2V0VXNlclRvdGFsTG9ja2VkAQULdXNlckFkZHJlc3MEEm5ld1VzZXJUb3RhbExvY2tlZAkAZQIFD3VzZXJUb3RhbExvY2tlZAUNdW5zdGFrZUFtb3VudAkAzAgCCQETZ2V0TGVhc2luZ05vZGVFbnRyeQMFC25vZGVBZGRyZXNzBRFub2RlQ3VycmVudExlYXNlZAUQbmV3Tm9kZU5leHRMZWFzZQkAzAgCCQETZ2V0VXNlckxlYXNpbmdFbnRyeQQFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwURdXNlckN1cnJlbnRMZWFzZWQFEW5ld1VzZXJOZXh0TGVhc2VkCQDMCAIJARNnZXRVc2VyVG9DbGFpbUVudHJ5AwULdXNlckFkZHJlc3MFB3RvQ2xhaW0FC25ld1RvVW5sb2NrCQDMCAIJARdnZXRVc2VyVG90YWxMb2NrZWRFbnRyeQIFC3VzZXJBZGRyZXNzBRJuZXdVc2VyVG90YWxMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlOb2RlTGVhc2luZ0J5SGVpZ2h0AQULbm9kZUFkZHJlc3MFEG5ld05vZGVOZXh0TGVhc2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlVc2VyTGVhc2luZ0J5SGVpZ2h0AgULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBRFuZXdVc2VyTmV4dExlYXNlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARdnZXRDbGFpbVVubG9ja2VkQWN0aW9ucwILdXNlckFkZHJlc3MLY2xhaW1BbW91bnQEDSR0MDExMTAwMTExNjAJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFDSR0MDExMTAwMTExNjACXzEECHRvVW5sb2NrCAUNJHQwMTExMDAxMTE2MAJfMgQGY2hlY2tzCQDMCAIDCQEBIQEFC2lzRm9yY2VTdG9wBgkBCHRocm93RXJyAQIdY29udHJhY3QgaXMgdGVtcG9yYXJ5IHN0b3BwZWQJAMwIAgMJAQEhAQUOaXNGb3JjZU91dFN0b3AGCQEIdGhyb3dFcnIBAhtjbGFpbSBpcyB0ZW1wb3JhcnkgZGlzYWJsZWQJAMwIAgMJAGYCBQtjbGFpbUFtb3VudAAABgkBCHRocm93RXJyAQIlY2xhaW0gYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMAkAzAgCAwkAZwIFB3RvQ2xhaW0FC2NsYWltQW1vdW50BgkBCHRocm93RXJyAQI0Y2xhaW0gYW1vdW50IHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIHVubG9ja2VkIGFtb3VudAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIadXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBApuZXdUb0NsYWltCQBlAgUHdG9DbGFpbQULY2xhaW1BbW91bnQJAMwIAgkBE2dldFVzZXJUb0NsYWltRW50cnkDBQt1c2VyQWRkcmVzcwUKbmV3VG9DbGFpbQUIdG9VbmxvY2sJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQULdXNlckFkZHJlc3MFC2NsYWltQW1vdW50BQxhc3NldElkQnl0ZXMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgESZ2V0U3Rha2VGb3JBY3Rpb25zAgt1c2VyQWRkcmVzcwFpBA0kdDAxMTkyNDExOTg0CQEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQULdXNlckFkZHJlc3MEB3RvQ2xhaW0IBQ0kdDAxMTkyNDExOTg0Al8xBAh0b1VubG9jawgFDSR0MDExOTI0MTE5ODQCXzIEBmNoZWNrcwkAzAgCAwkBASEBBQtpc0ZvcmNlU3RvcAYJAQh0aHJvd0VycgECHWNvbnRyYWN0IGlzIHRlbXBvcmFyeSBzdG9wcGVkCQDMCAIDCQBnAgABCQCQAwEIBQFpCHBheW1lbnRzBgkBCHRocm93RXJyAQIRbWF4aW11bSAxIHBheW1lbnQJAMwIAgMDCQAAAgkAkAMBCAUBaQhwYXltZW50cwAABgkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUMYXNzZXRJZEJ5dGVzBgkBCHRocm93RXJyAQkAuQkCCQDMCAICGnBheW1lbnQgYXNzZXRJZCBzaG91bGQgYmU6CQDMCAIFDWFzc2V0SWRTdHJpbmcFA25pbAIBIAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIadXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBApuZXdUb0NsYWltCQBkAgUHdG9DbGFpbQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkBE2dldFVzZXJUb0NsYWltRW50cnkDBQt1c2VyQWRkcmVzcwUKbmV3VG9DbGFpbQUIdG9VbmxvY2sFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEOY2FsY3VsYXRlQ2xhaW0BC3VzZXJBZGRyZXNzBA9jbGFpbWVkQmxvY2tLZXkJAQ9rZXlDbGFpbWVkQmxvY2sBBQt1c2VyQWRkcmVzcwQMY2xhaW1lZEJsb2NrCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFD2NsYWltZWRCbG9ja0tleQUGaGVpZ2h0BAxibG9ja3NQYXNzZWQJAGUCBQZoZWlnaHQFDGNsYWltZWRCbG9jawQMYW1vdW50U3Rha2VkCQESZ2V0VXNlclRvdGFsTG9ja2VkAQULdXNlckFkZHJlc3MECnRvQ2xhaW1Ob3cJAGkCCQBoAgUMYmxvY2tzUGFzc2VkCQBoAgUMYW1vdW50U3Rha2VkBQZzY2FsZTgFEkJMT0NLU19JTl9JTlRFUlZBTAUKdG9DbGFpbU5vdwEHc2V0VXNlcgILdXNlckFkZHJlc3MMY2xhaW1lZEJsb2NrBA9jbGFpbWVkQmxvY2tLZXkJAQ9rZXlDbGFpbWVkQmxvY2sBBQt1c2VyQWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgUPY2xhaW1lZEJsb2NrS2V5BQxjbGFpbWVkQmxvY2sFA25pbAEPZ2V0U3Rha2VBY3Rpb25zBAtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcxF1c2VyTGVhc2luZ0Ftb3VudAFpBA0kdDAxMzI4MzEzMzQzCQEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQULdXNlckFkZHJlc3MEB3RvQ2xhaW0IBQ0kdDAxMzI4MzEzMzQzAl8xBAh0b1VubG9jawgFDSR0MDEzMjgzMTMzNDMCXzIEDXBheW1lbnRBbW91bnQDCQAAAgkAkAMBCAUBaQhwYXltZW50cwAAAAAICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAlhdmFpbGFibGUJAGQCCQBkAgUIdG9VbmxvY2sFB3RvQ2xhaW0FDXBheW1lbnRBbW91bnQEBmNoZWNrcwkAzAgCAwkBASEBBQtpc0ZvcmNlU3RvcAYJAQh0aHJvd0VycgECHWNvbnRyYWN0IGlzIHRlbXBvcmFyeSBzdG9wcGVkCQDMCAIDCQBnAgABCQCQAwEIBQFpCHBheW1lbnRzBgkBCHRocm93RXJyAQIRbWF4aW11bSAxIHBheW1lbnQJAMwIAgMDCQAAAgkAkAMBCAUBaQhwYXltZW50cwAABgkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUMYXNzZXRJZEJ5dGVzBgkBCHRocm93RXJyAQkAuQkCCQDMCAICGnBheW1lbnQgYXNzZXRJZCBzaG91bGQgYmU6CQDMCAIFDWFzc2V0SWRTdHJpbmcFA25pbAIBIAkAzAgCAwkAZgIFEXVzZXJMZWFzaW5nQW1vdW50AAAGCQEIdGhyb3dFcnIBAh9hbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIDCQBnAgUJYXZhaWxhYmxlBRF1c2VyTGVhc2luZ0Ftb3VudAYJAQh0aHJvd0VycgECO2Ftb3VudCBzaG91bGQgYmUgbGVzcyBvciBlcXVhbCAocGF5bWVudCArIGF2YWlsYWJsZSkgYW1vdW50CQDMCAIDCQBnAgURdXNlckxlYXNpbmdBbW91bnQFDXBheW1lbnRBbW91bnQGCQACAQIwYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIG9yIGVxdWFsIHBheW1lbnQgYW1vdW50CQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQtub2RlQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhpub2RlIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQtub2RlQWRkcmVzcwUDbmlsAgEgCQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQt1c2VyQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhp1c2VyIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsAgEgBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDSR0MDE0NDE0MTQ0ODcJARJnZXRMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwQRbm9kZUN1cnJlbnRMZWFzZWQIBQ0kdDAxNDQxNDE0NDg3Al8xBA5ub2RlTmV4dExlYXNlZAgFDSR0MDE0NDE0MTQ0ODcCXzIEEG5ld05vZGVOZXh0TGVhc2UJAGQCBQ5ub2RlTmV4dExlYXNlZAURdXNlckxlYXNpbmdBbW91bnQEDSR0MDE0NTU1MTQ2NDEJARJnZXRVc2VyTGVhc2luZ0RhdGECBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MEEXVzZXJDdXJyZW50TGVhc2VkCAUNJHQwMTQ1NTUxNDY0MQJfMQQOdXNlck5leHRMZWFzZWQIBQ0kdDAxNDU1NTE0NjQxAl8yBBFuZXdVc2VyTmV4dExlYXNlZAkAZAIFDnVzZXJOZXh0TGVhc2VkBRF1c2VyTGVhc2luZ0Ftb3VudAQSZnJvbVVubG9ja2VkQW1vdW50CQBlAgURdXNlckxlYXNpbmdBbW91bnQFDXBheW1lbnRBbW91bnQEC25ld1RvVW5sb2NrCQCWAwEJAMwIAgAACQDMCAIJAGUCBQh0b1VubG9jawUSZnJvbVVubG9ja2VkQW1vdW50BQNuaWwECm5ld1RvQ2xhaW0JAJcDAQkAzAgCBQd0b0NsYWltCQDMCAIJAGQCBQd0b0NsYWltCQBlAgUIdG9VbmxvY2sFEmZyb21VbmxvY2tlZEFtb3VudAUDbmlsBA91c2VyVG90YWxMb2NrZWQJARJnZXRVc2VyVG90YWxMb2NrZWQBBQt1c2VyQWRkcmVzcwQSbmV3VXNlclRvdGFsTG9ja2VkCQBkAgUPdXNlclRvdGFsTG9ja2VkBRF1c2VyTGVhc2luZ0Ftb3VudAkAzAgCCQETZ2V0TGVhc2luZ05vZGVFbnRyeQMFC25vZGVBZGRyZXNzBRFub2RlQ3VycmVudExlYXNlZAUQbmV3Tm9kZU5leHRMZWFzZQkAzAgCCQETZ2V0VXNlckxlYXNpbmdFbnRyeQQFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwURdXNlckN1cnJlbnRMZWFzZWQFEW5ld1VzZXJOZXh0TGVhc2VkCQDMCAIJARNnZXRVc2VyVG9DbGFpbUVudHJ5AwULdXNlckFkZHJlc3MFCm5ld1RvQ2xhaW0FC25ld1RvVW5sb2NrCQDMCAIJARdnZXRVc2VyVG90YWxMb2NrZWRFbnRyeQIFC3VzZXJBZGRyZXNzBRJuZXdVc2VyVG90YWxMb2NrZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlOb2RlTGVhc2luZ0J5SGVpZ2h0AQULbm9kZUFkZHJlc3MFEG5ld05vZGVOZXh0TGVhc2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlVc2VyTGVhc2luZ0J5SGVpZ2h0AgULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBRFuZXdVc2VyTmV4dExlYXNlZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARpnZXRTdGFrZUZyb21QYXltZW50QWN0aW9ucwMLbm9kZUFkZHJlc3MLdXNlckFkZHJlc3MBaQQGY2hlY2tzCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIgcGF5bWVudCBzaXplIHNob3VsZCBiZSBleGFjdGx5IDEFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkBD2dldFN0YWtlQWN0aW9ucwQFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFAWkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BHGdldFNldE5ld1BlcmlvZExlbmd0aEFjdGlvbnMBD25ld1BlcmlvZExlbmd0aAQFY2hlY2sJAMwIAgMJAGYCBQ9uZXdQZXJpb2RMZW5ndGgAAAYJAQh0aHJvd0VycgECJnBlcmlvZCBsZW5ndGggc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrAwkAAAIFEnBlcmlvZE9mZnNldEhlaWdodAD///////////8BCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rZXlQZXJpb2RMZW5ndGgFD25ld1BlcmlvZExlbmd0aAkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa2V5UGVyaW9kT2Zmc2V0SGVpZ2h0BQZoZWlnaHQFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgURa2V5UGVyaW9kT2Zmc2V0SWQJAGQCBQ9jdXJyZW50UGVyaW9kSWQAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa2V5UGVyaW9kT2Zmc2V0SGVpZ2h0BRBuZXh0UGVyaW9kSGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9rZXlQZXJpb2RMZW5ndGgFD25ld1BlcmlvZExlbmd0aAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuDwFpARJzZXROZXdQZXJpb2RMZW5ndGgBD25ld1BlcmlvZExlbmd0aAQGY2hlY2tzCQDMCAIDCQENaXNJbkFkbWluTGlzdAEJAKUIAQgFAWkGY2FsbGVyBgkBCHRocm93RXJyAQIaY2FsbGVyIGlzIG5vdCBpbiBhZG1pbkxpc3QFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkBHGdldFNldE5ld1BlcmlvZExlbmd0aEFjdGlvbnMBBQ9uZXdQZXJpb2RMZW5ndGgJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJY2xhaW1Vbml0AAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyBAp0b0NsYWltTm93CQEOY2FsY3VsYXRlQ2xhaW0BBQt1c2VyQWRkcmVzcwQQdG90YWxVbml0Q2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEUa2V5VG90YWxVbml0c0NsYWltZWQBBQt1c2VyQWRkcmVzcwAABA10b3RhbEwyU3Rha2VkCQESZ2V0VXNlclRvdGFsTG9ja2VkAQULdXNlckFkZHJlc3MEBWNoZWNrCQDMCAIDCQBnAgUNdG90YWxMMlN0YWtlZAkAZAIFEHRvdGFsVW5pdENsYWltZWQFCnRvQ2xhaW1Ob3cGCQEIdGhyb3dFcnIBAhxDYW4ndCBjbGFpbSBtb3JlIHRoYW4gc3Rha2VkBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrBA9jbGFpbWVkQmxvY2tLZXkJAQ9rZXlDbGFpbWVkQmxvY2sBBQt1c2VyQWRkcmVzcwQHYWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgUPY2xhaW1lZEJsb2NrS2V5BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlUb3RhbFVuaXRzQ2xhaW1lZAEFC3VzZXJBZGRyZXNzCQBkAgUQdG90YWxVbml0Q2xhaW1lZAUKdG9DbGFpbU5vdwUDbmlsBA10cmFuc2ZlclVuaXRzCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCnRvQ2xhaW1Ob3cFBHVuaXQJAM4IAgUHYWN0aW9ucwkAzAgCBQ10cmFuc2ZlclVuaXRzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQc2V0Rm9yY2VTdG9wRmxhZwEEc3RvcAQFY2hlY2sJAMwIAgMJAQ1pc0luQWRtaW5MaXN0AQkApQgBCAUBaQZjYWxsZXIGCQEIdGhyb3dFcnIBAhpjYWxsZXIgaXMgbm90IGluIGFkbWluTGlzdAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkAzAgCCQEMQm9vbGVhbkVudHJ5AgUMa2V5Rm9yY2VTdG9wBQRzdG9wBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETc2V0Rm9yY2VPdXRTdG9wRmxhZwEEc3RvcAQFY2hlY2sJAMwIAgMJAQ1pc0luQWRtaW5MaXN0AQkApQgBCAUBaQZjYWxsZXIGCQEIdGhyb3dFcnIBAhpjYWxsZXIgaXMgbm90IGluIGFkbWluTGlzdAUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawkAzAgCCQEMQm9vbGVhbkVudHJ5AgUPa2V5Rm9yY2VPdXRTdG9wBQRzdG9wBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETZ2V0Tm9kZURhdGFSRUFET05MWQELbm9kZUFkZHJlc3MEDSR0MDE4MDM4MTgxMDIJARJnZXRMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwQMY3VycmVudExlYXNlCAUNJHQwMTgwMzgxODEwMgJfMQQKbmV4dExlYXNlZAgFDSR0MDE4MDM4MTgxMDICXzIJAJQKAgUDbmlsCQCXCgUFE2N1cnJlbnRQZXJpb2RIZWlnaHQFDGN1cnJlbnRMZWFzZQUQbmV4dFBlcmlvZEhlaWdodAUKbmV4dExlYXNlZAUGaGVpZ2h0AWkBGmdldFVzZXJMZWFzaW5nRGF0YVJFQURPTkxZAgtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcwQNJHQwMTg0NzIxODU0OQkBEmdldFVzZXJMZWFzaW5nRGF0YQIFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwQMY3VycmVudExlYXNlCAUNJHQwMTg0NzIxODU0OQJfMQQKbmV4dExlYXNlZAgFDSR0MDE4NDcyMTg1NDkCXzIJAJQKAgUDbmlsCQCXCgUFE2N1cnJlbnRQZXJpb2RIZWlnaHQFDGN1cnJlbnRMZWFzZQUQbmV4dFBlcmlvZEhlaWdodAUKbmV4dExlYXNlZAUGaGVpZ2h0AWkBE2dldFVzZXJEYXRhUkVBRE9OTFkBC3VzZXJBZGRyZXNzBA0kdDAxODkxMjE4OTcyCQEVZ2V0VXNlclRvQ2xhaW1CYWxhbmNlAQULdXNlckFkZHJlc3MEB3RvQ2xhaW0IBQ0kdDAxODkxMjE4OTcyAl8xBAh0b1VubG9jawgFDSR0MDE4OTEyMTg5NzICXzIED3VzZXJUb3RhbExvY2tlZAkBEmdldFVzZXJUb3RhbExvY2tlZAEFC3VzZXJBZGRyZXNzCQCUCgIFA25pbAkAmAoGBRNjdXJyZW50UGVyaW9kSGVpZ2h0BQd0b0NsYWltBRBuZXh0UGVyaW9kSGVpZ2h0BQh0b1VubG9jawUPdXNlclRvdGFsTG9ja2VkBQZoZWlnaHQBaQEObGVhc2VCeUFkZHJlc3MCC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzCQEaZ2V0U3Rha2VGcm9tUGF5bWVudEFjdGlvbnMDBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFAWkBaQEFbGVhc2UBC25vZGVBZGRyZXNzBAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJARpnZXRTdGFrZUZyb21QYXltZW50QWN0aW9ucwMFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwUBaQFpAQ9sZWFzZUZyb21Mb2NrZWQCC25vZGVBZGRyZXNzBmFtb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyCQEPZ2V0U3Rha2VBY3Rpb25zBAULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBQZhbW91bnQFAWkBaQELY2FuY2VsTGVhc2UCC25vZGVBZGRyZXNzBmFtb3VudAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyCQERZ2V0VW5zdGFrZUFjdGlvbnMDBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFBmFtb3VudAFpAQVjbGFpbQEGYW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJARdnZXRDbGFpbVVubG9ja2VkQWN0aW9ucwIFC3VzZXJBZGRyZXNzBQZhbW91bnQBaQEIY2xhaW1BbGwABAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEDSR0MDE5OTg2MjAwNDYJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFDSR0MDE5OTg2MjAwNDYCXzEECHRvVW5sb2NrCAUNJHQwMTk5ODYyMDA0NgJfMgQGY2hlY2tzCQDMCAIDCQBmAgUHdG9DbGFpbQAABgkBCHRocm93RXJyAQIQbm90aGluZyB0byBjbGFpbQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQEXZ2V0Q2xhaW1VbmxvY2tlZEFjdGlvbnMCBQt1c2VyQWRkcmVzcwUHdG9DbGFpbQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhzdGFrZUZvcgELdXNlckFkZHJlc3MJARJnZXRTdGFrZUZvckFjdGlvbnMCBQt1c2VyQWRkcmVzcwUBaQFpAQt2b3RlRm9yVHhJZAEEdHhJZAQTY2FsbGVyQWRkcmVzc1N0cmluZwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAlrZXlQcmVmaXgJARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBQR0eElkBAZyZXN1bHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUFsbG93ZWRUeElkAAUEdHhJZAUDbmlsBBFhbGxvd2VkVHhJZE9wdGlvbgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQABANlcnIJAMwIAgMJAAACCQDIAQEJANkEAQUEdHhJZAURVFhJRF9CWVRFU19MRU5HVEgGCQEIdGhyb3dFcnIBCQCsAgIFBHR4SWQCEiBpcyBub3QgdmFsaWQgdHhJZAkAzAgCAwMJAAACBRFhbGxvd2VkVHhJZE9wdGlvbgUEdW5pdAYJAQIhPQIJAQV2YWx1ZQEFEWFsbG93ZWRUeElkT3B0aW9uBQR0eElkBgkBCHRocm93RXJyAQkArAICBQR0eElkAhMgaXMgYWxyZWFkeSBhbGxvd2VkBQNuaWwDCQAAAgUDZXJyBQNlcnIJAQx2b3RlSU5URVJOQUwEBRNjYWxsZXJBZGRyZXNzU3RyaW5nBQlrZXlQcmVmaXgFBlFVT1JVTQUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQIYnlBZG1pbnMJAAACCAUCdHgCaWQJANkEAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQAAgAEB2J5T3duZXIDCQBnAgkAkAMBCQENZ2V0QWRtaW5zTGlzdAAFBlFVT1JVTQcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkDBQhieUFkbWlucwYFB2J5T3duZXK7VPFg", "chainId": 84, "height": 3327965, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FoDgahN94S9LP76DLx2JtwEovakdu2j9T8RJbqA5BtK7 Next: A3kQoQSnGrcqFFfi8DFpr1ZLxcfqckRYfmdsacgFEWWH Diff:
OldNewDifferences
55
66 let b = "__"
77
8-func c (d) = throw(((a + ": ") + d))
8+let c = 1000
9+
10+let d = 100000000
11+
12+func e (f) = throw(((a + ": ") + f))
913
1014
11-let e = makeString(["%s", "assetId"], b)
15+let g = makeString(["%s", "assetId"], b)
1216
13-let f = makeString(["%s", "forceStop"], b)
17+let h = makeString(["%s", "forceStop"], b)
1418
15-let g = makeString(["%s", "forceOutStop"], b)
19+let i = makeString(["%s", "forceOutStop"], b)
1620
17-let h = makeString(["%s", "offsetId"], b)
21+let j = makeString(["%s", "offsetId"], b)
1822
19-let i = makeString(["%s", "offsetHeight"], b)
23+let k = makeString(["%s", "offsetHeight"], b)
2024
21-let j = makeString(["%s", "periodLength"], b)
25+let l = makeString(["%s", "periodLength"], b)
2226
23-let k = valueOrElse(getInteger(this, h), 0)
27+let m = valueOrElse(getInteger(this, j), 0)
2428
25-let l = valueOrElse(getInteger(this, j), 10000)
29+let n = valueOrElse(getInteger(this, l), 10000)
2630
27-let m = valueOrElse(getInteger(this, i), -1)
31+let o = valueOrElse(getInteger(this, k), -1)
2832
29-let n = if (if ((height > m))
30- then (m != -1)
33+let p = if (if ((height > o))
34+ then (o != -1)
3135 else false)
32- then (((height - m) / l) + k)
33- else max([0, (k - 1)])
36+ then (((height - o) / n) + m)
37+ else max([0, (m - 1)])
3438
35-let o = if (if ((m == -1))
39+let q = if (if ((o == -1))
3640 then true
37- else if ((n == 0))
38- then (m > height)
41+ else if ((p == 0))
42+ then (o > height)
3943 else false)
4044 then 0
41- else (m + ((n - k) * l))
45+ else (o + ((p - m) * n))
4246
43-let p = if (if ((m == -1))
47+let r = if (if ((o == -1))
4448 then true
45- else if ((n == 0))
46- then (m > height)
49+ else if ((p == 0))
50+ then (o > height)
4751 else false)
4852 then 0
49- else (o + l)
53+ else (q + n)
5054
51-func q (r) = makeString(["%s", r], b)
55+func s (t) = makeString(["%s", t], b)
5256
5357
54-func s (t,r) = makeString(["%s%s", r, t], b)
58+func u (v,t) = makeString(["%s%s", t, v], b)
5559
5660
57-func u (t) = makeString(["%s%s", "toClaim", t], b)
61+func w (v) = makeString(["%s%s", "toClaim", v], b)
5862
5963
60-func v (t) = makeString(["%s%s", "userTotalLocked", t], b)
64+func x (v) = makeString(["%s%s", "userTotalLocked", v], b)
6165
6266
63-func w (r) = {
64- let x = if ((m == -1))
67+func y (v) = makeString(["%s%s", v, "claimedBlock"], b)
68+
69+
70+func z (v) = makeString(["%s%s", v, "totalUnitsClaimed"], b)
71+
72+
73+func A (t) = {
74+ let B = if ((o == -1))
6575 then 0
6676 else height
67- makeString(["%s%d", r, toString(x)], b)
77+ makeString(["%s%d", t, toString(B)], b)
6878 }
6979
7080
71-func y (r,t) = {
72- let x = if ((m == -1))
81+func C (t,v) = {
82+ let B = if ((o == -1))
7383 then 0
7484 else height
75- makeString(["%s%s%d", r, t, toString(x)], b)
85+ makeString(["%s%s%d", t, v, toString(B)], b)
7686 }
7787
7888
79-let z = valueOrElse(getString(this, e), "WAVES")
89+let D = valueOrElse(getString(this, g), "WAVES")
8090
81-let A = if ((z == "WAVES"))
91+let E = if ((D == "WAVES"))
8292 then unit
83- else fromBase58String(z)
93+ else fromBase58String(D)
8494
85-let B = valueOrElse(getBoolean(this, f), false)
95+let F = valueOrElse(getBoolean(this, h), false)
8696
87-let C = valueOrElse(getBoolean(this, g), false)
97+let G = valueOrElse(getBoolean(this, i), false)
8898
89-func D (E) = {
90- let F = addressFromString(E)
91- if ($isInstanceOf(F, "Address"))
99+func H (I) = {
100+ let J = addressFromString(I)
101+ if ($isInstanceOf(J, "Address"))
92102 then {
93- let G = F
103+ let K = J
94104 true
95105 }
96106 else false
97107 }
98108
99109
100-let H = 5
110+let L = 5
101111
102-let I = 3
112+let M = 3
103113
104-let J = 32
114+let N = 32
105115
106-func K (L) = makeString(["%s%s%s", "allowTxId", L], b)
116+func O (P) = makeString(["%s%s%s", "allowTxId", P], b)
107117
108118
109-func M (N,O) = makeString([N, O], b)
119+func Q (R,S) = makeString([R, S], b)
110120
111121
112-func P () = makeString(["%s", "adminAddressList"], b)
122+func T () = makeString(["%s", "adminAddressList"], b)
113123
114124
115-func Q () = makeString(["%s", "txId"], b)
125+func U () = makeString(["%s", "txId"], b)
116126
117127
118-func R (N,S) = {
119- let T = M(N, S)
120- valueOrElse(getInteger(T), 0)
128+func V (R,W) = {
129+ let X = Q(R, W)
130+ valueOrElse(getInteger(X), 0)
121131 }
122132
123133
124-func U () = {
125- let F = getString(this, P())
126- if ($isInstanceOf(F, "String"))
134+func Y () = {
135+ let J = getString(this, T())
136+ if ($isInstanceOf(J, "String"))
127137 then {
128- let V = F
129- split(V, b)
138+ let Z = J
139+ split(Z, b)
130140 }
131141 else nil
132142 }
133143
134144
135-func W (E) = containsElement(U(), E)
145+func aa (I) = containsElement(Y(), I)
136146
137147
138-func X (G,O) = {
139- let Y = G
140- let Z = Y._1
141- let N = Y._2
142- $Tuple2((Z :+ M(N, O)), N)
148+func ab (K,S) = {
149+ let ac = K
150+ let ad = ac._1
151+ let R = ac._2
152+ $Tuple2((ad :+ Q(R, S)), R)
143153 }
144154
145155
146-func aa (ab) = {
147- let ac = P()
148- let ad = {
149- let ae = U()
150- let af = size(ae)
151- let ag = $Tuple2(nil, ab)
152- func ah (ai,aj) = if ((aj >= af))
153- then ai
154- else X(ai, ae[aj])
156+func ae (af) = {
157+ let ag = T()
158+ let ah = {
159+ let ai = Y()
160+ let aj = size(ai)
161+ let ak = $Tuple2(nil, af)
162+ func al (am,an) = if ((an >= aj))
163+ then am
164+ else ab(am, ai[an])
155165
156- func ak (ai,aj) = if ((aj >= af))
157- then ai
166+ func ao (am,an) = if ((an >= aj))
167+ then am
158168 else throw("List size exceeds 5")
159169
160- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
170+ ao(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5)
161171 }
162- let Z = ad._1
163- let N = ad._2
164- Z
172+ let ad = ah._1
173+ let R = ah._2
174+ ad
165175 }
166176
167177
168-func al (Z,T) = (Z + valueOrElse(getInteger(T), 0))
178+func ap (ad,X) = (ad + valueOrElse(getInteger(X), 0))
169179
170180
171-func am (N) = {
172- let an = aa(N)
173- let ae = an
174- let af = size(ae)
175- let ag = 0
176- func ah (ai,aj) = if ((aj >= af))
177- then ai
178- else al(ai, ae[aj])
181+func aq (R) = {
182+ let ar = ae(R)
183+ let ai = ar
184+ let aj = size(ai)
185+ let ak = 0
186+ func al (am,an) = if ((an >= aj))
187+ then am
188+ else ap(am, ai[an])
179189
180- func ak (ai,aj) = if ((aj >= af))
181- then ai
190+ func ao (am,an) = if ((an >= aj))
191+ then am
182192 else throw("List size exceeds 5")
183193
184- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
194+ ao(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5)
185195 }
186196
187197
188-func ao (Z,ap) = (Z :+ DeleteEntry(ap))
198+func as (ad,at) = (ad :+ DeleteEntry(at))
189199
190200
191-func aq (N) = {
192- let an = aa(N)
193- let ae = an
194- let af = size(ae)
195- let ag = nil
196- func ah (ai,aj) = if ((aj >= af))
197- then ai
198- else ao(ai, ae[aj])
201+func au (R) = {
202+ let ar = ae(R)
203+ let ai = ar
204+ let aj = size(ai)
205+ let ak = nil
206+ func al (am,an) = if ((an >= aj))
207+ then am
208+ else as(am, ai[an])
199209
200- func ak (ai,aj) = if ((aj >= af))
201- then ai
210+ func ao (am,an) = if ((an >= aj))
211+ then am
202212 else throw("List size exceeds 5")
203213
204- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
214+ ao(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5)
205215 }
206216
207217
208-func ar (as,ab,at,au) = {
209- let T = M(ab, as)
210- let av = R(ab, as)
211- let aw = if (!(W(as)))
212- then c((("Address: " + as) + " not in Admin list"))
213- else if ((av == 1))
214- then c((T + " you already voted"))
218+func av (aw,af,ax,ay) = {
219+ let X = Q(af, aw)
220+ let az = V(af, aw)
221+ let aA = if (!(aa(aw)))
222+ then e((("Address: " + aw) + " not in Admin list"))
223+ else if ((az == 1))
224+ then e((X + " you already voted"))
215225 else unit
216- if ((aw == aw))
226+ if ((aA == aA))
217227 then {
218- let an = am(ab)
219- if (((an + 1) >= at))
228+ let ar = aq(af)
229+ if (((ar + 1) >= ax))
220230 then {
221- let ax = aq(ab)
222- (ax ++ au)
231+ let aB = au(af)
232+ (aB ++ ay)
223233 }
224- else [IntegerEntry(T, 1)]
234+ else [IntegerEntry(X, 1)]
225235 }
226236 else throw("Strict value is not equal to itself.")
227237 }
228238
229239
230-func ay (r,az,aA) = {
231- let aB = makeString(["%d%d%d%d", toString(o), toString(az), toString(p), toString(aA)], b)
232- StringEntry(q(r), aB)
240+func aC (t,aD,aE) = {
241+ let aF = makeString(["%d%d%d%d", toString(q), toString(aD), toString(r), toString(aE)], b)
242+ StringEntry(s(t), aF)
233243 }
234244
235245
236-func aC (r) = {
237- let aD = getString(this, q(r))
238- let F = aD
239- if ($isInstanceOf(F, "String"))
246+func aG (t) = {
247+ let aH = getString(this, s(t))
248+ let J = aH
249+ if ($isInstanceOf(J, "String"))
240250 then {
241- let aE = F
242- let aF = split(aE, b)
243- let aG = parseIntValue(aF[1])
244- let aH = parseIntValue(aF[2])
245- let aI = parseIntValue(aF[3])
246- let aJ = parseIntValue(aF[4])
247- if (if ((aI > height))
251+ let aI = J
252+ let aJ = split(aI, b)
253+ let aK = parseIntValue(aJ[1])
254+ let aL = parseIntValue(aJ[2])
255+ let aM = parseIntValue(aJ[3])
256+ let aN = parseIntValue(aJ[4])
257+ if (if ((aM > height))
248258 then true
249- else (m == -1))
250- then $Tuple2(aH, aJ)
251- else $Tuple2(aJ, aJ)
259+ else (o == -1))
260+ then $Tuple2(aL, aN)
261+ else $Tuple2(aN, aN)
252262 }
253263 else $Tuple2(0, 0)
254264 }
255265
256266
257-func aK (r,t,aL,aM) = {
258- let aB = makeString(["%d%d%d%d", toString(o), toString(aL), toString(p), toString(aM)], b)
259- StringEntry(s(t, r), aB)
267+func aO (t,v,aP,aQ) = {
268+ let aF = makeString(["%d%d%d%d", toString(q), toString(aP), toString(r), toString(aQ)], b)
269+ StringEntry(u(v, t), aF)
260270 }
261271
262272
263-func aN (r,t) = {
264- let aO = getString(this, s(t, r))
265- let F = aO
266- if ($isInstanceOf(F, "String"))
273+func aR (t,v) = {
274+ let aS = getString(this, u(v, t))
275+ let J = aS
276+ if ($isInstanceOf(J, "String"))
267277 then {
268- let aE = F
269- let aF = split(aE, b)
270- let aP = parseIntValue(aF[1])
271- let aL = parseIntValue(aF[2])
272- let aQ = parseIntValue(aF[3])
273- let aM = parseIntValue(aF[4])
274- if (if ((aQ > height))
278+ let aI = J
279+ let aJ = split(aI, b)
280+ let aT = parseIntValue(aJ[1])
281+ let aP = parseIntValue(aJ[2])
282+ let aU = parseIntValue(aJ[3])
283+ let aQ = parseIntValue(aJ[4])
284+ if (if ((aU > height))
275285 then true
276- else (m == -1))
277- then $Tuple2(aL, aM)
278- else $Tuple2(aM, aM)
286+ else (o == -1))
287+ then $Tuple2(aP, aQ)
288+ else $Tuple2(aQ, aQ)
279289 }
280290 else $Tuple2(0, 0)
281291 }
282292
283293
284-func aR (t,aS,aT) = {
285- let aB = makeString(["%d%d%d%d", toString(o), toString(aS), toString(p), toString(aT)], b)
286- StringEntry(u(t), aB)
294+func aV (v,aW,aX) = {
295+ let aF = makeString(["%d%d%d%d", toString(q), toString(aW), toString(r), toString(aX)], b)
296+ StringEntry(w(v), aF)
287297 }
288298
289299
290-func aU (t) = {
291- let aV = getString(this, u(t))
292- let F = aV
293- if ($isInstanceOf(F, "String"))
300+func aY (v) = {
301+ let aZ = getString(this, w(v))
302+ let J = aZ
303+ if ($isInstanceOf(J, "String"))
294304 then {
295- let aE = F
296- let aF = split(aE, b)
297- let aW = parseIntValue(aF[1])
298- let aS = parseIntValue(aF[2])
299- let aX = parseIntValue(aF[3])
300- let aT = parseIntValue(aF[4])
301- if (if ((aX > height))
305+ let aI = J
306+ let aJ = split(aI, b)
307+ let ba = parseIntValue(aJ[1])
308+ let aW = parseIntValue(aJ[2])
309+ let bb = parseIntValue(aJ[3])
310+ let aX = parseIntValue(aJ[4])
311+ if (if ((bb > height))
302312 then true
303- else (n == 0))
304- then $Tuple2(aS, aT)
305- else $Tuple2((aS + aT), 0)
313+ else (p == 0))
314+ then $Tuple2(aW, aX)
315+ else $Tuple2((aW + aX), 0)
306316 }
307317 else $Tuple2(0, 0)
308318 }
309319
310320
311-func aY (t,aZ) = IntegerEntry(v(t), aZ)
321+func bc (v,bd) = IntegerEntry(x(v), bd)
312322
313323
314-func ba (t) = valueOrElse(getInteger(this, v(t)), 0)
324+func be (v) = valueOrElse(getInteger(this, x(v)), 0)
315325
316326
317-func bb (r,t,bc) = {
318- let bd = aC(r)
319- let aH = bd._1
320- let aJ = bd._2
321- let be = aN(r, t)
322- let aL = be._1
323- let aM = be._2
324- let bf = [if (!(B))
327+func bf (t,v,bg) = {
328+ let bh = aG(t)
329+ let aL = bh._1
330+ let aN = bh._2
331+ let bi = aR(t, v)
332+ let aP = bi._1
333+ let aQ = bi._2
334+ let bj = [if (!(F))
325335 then true
326- else c("contract is temporary stopped"), if (!(C))
336+ else e("contract is temporary stopped"), if (!(G))
327337 then true
328- else c("unstake is temporary disabled"), if ((bc > 0))
338+ else e("unstake is temporary disabled"), if ((bg > 0))
329339 then true
330- else c("unstake amount should be greater than 0"), if ((aM >= bc))
340+ else e("unstake amount should be greater than 0"), if ((aQ >= bg))
331341 then true
332- else c("unstake amount should be less or equal user staked amount"), if ((aJ >= bc))
342+ else e("unstake amount should be less or equal user staked amount"), if ((aN >= bg))
333343 then true
334- else c("unstake amount should be less or equal node staked amount"), if (D(r))
344+ else e("unstake amount should be less or equal node staked amount"), if (H(t))
335345 then true
336- else c(makeString(["node address is not valid:", r], " ")), if (D(t))
346+ else e(makeString(["node address is not valid:", t], " ")), if (H(v))
337347 then true
338- else c(makeString(["user address is not valid:", t], " "))]
339- if ((bf == bf))
348+ else e(makeString(["user address is not valid:", v], " "))]
349+ if ((bj == bj))
340350 then {
341- let bg = (aJ - bc)
342- let bh = (aM - bc)
343- let bi = aU(t)
344- let aS = bi._1
345- let aT = bi._2
346- let bj = (aT + bc)
347- let aZ = ba(t)
348- let bk = (aZ - bc)
349-[ay(r, aH, bg), aK(r, t, aL, bh), aR(t, aS, bj), aY(t, bk), IntegerEntry(w(r), bg), IntegerEntry(y(r, t), bh)]
351+ let bk = (aN - bg)
352+ let bl = (aQ - bg)
353+ let bm = aY(v)
354+ let aW = bm._1
355+ let aX = bm._2
356+ let bn = (aX + bg)
357+ let bd = be(v)
358+ let bo = (bd - bg)
359+[aC(t, aL, bk), aO(t, v, aP, bl), aV(v, aW, bn), bc(v, bo), IntegerEntry(A(t), bk), IntegerEntry(C(t, v), bl)]
350360 }
351361 else throw("Strict value is not equal to itself.")
352362 }
353363
354364
355-func bl (t,bm) = {
356- let bn = aU(t)
357- let aS = bn._1
358- let aT = bn._2
359- let bf = [if (!(B))
365+func bp (v,bq) = {
366+ let br = aY(v)
367+ let aW = br._1
368+ let aX = br._2
369+ let bj = [if (!(F))
360370 then true
361- else c("contract is temporary stopped"), if (!(C))
371+ else e("contract is temporary stopped"), if (!(G))
362372 then true
363- else c("claim is temporary disabled"), if ((bm > 0))
373+ else e("claim is temporary disabled"), if ((bq > 0))
364374 then true
365- else c("claim amount should be greater than 0"), if ((aS >= bm))
375+ else e("claim amount should be greater than 0"), if ((aW >= bq))
366376 then true
367- else c("claim amount should be less or equal unlocked amount"), if (D(t))
377+ else e("claim amount should be less or equal unlocked amount"), if (H(v))
368378 then true
369- else c(makeString(["user address is not valid:", t], " "))]
370- if ((bf == bf))
379+ else e(makeString(["user address is not valid:", v], " "))]
380+ if ((bj == bj))
371381 then {
372- let bo = (aS - bm)
373-[aR(t, bo, aT), ScriptTransfer(addressFromStringValue(t), bm, A)]
382+ let bs = (aW - bq)
383+[aV(v, bs, aX), ScriptTransfer(addressFromStringValue(v), bq, E)]
374384 }
375385 else throw("Strict value is not equal to itself.")
376386 }
377387
378388
379-func bp (t,bq) = {
380- let br = aU(t)
381- let aS = br._1
382- let aT = br._2
383- let bf = [if (!(B))
389+func bt (v,bu) = {
390+ let bv = aY(v)
391+ let aW = bv._1
392+ let aX = bv._2
393+ let bj = [if (!(F))
384394 then true
385- else c("contract is temporary stopped"), if ((1 >= size(bq.payments)))
395+ else e("contract is temporary stopped"), if ((1 >= size(bu.payments)))
386396 then true
387- else c("maximum 1 payment"), if (if ((size(bq.payments) == 0))
397+ else e("maximum 1 payment"), if (if ((size(bu.payments) == 0))
388398 then true
389- else (bq.payments[0].assetId == A))
399+ else (bu.payments[0].assetId == E))
390400 then true
391- else c(makeString(["payment assetId should be:", z], " ")), if (D(t))
401+ else e(makeString(["payment assetId should be:", D], " ")), if (H(v))
392402 then true
393- else c(makeString(["user address is not valid:", t], " "))]
394- if ((bf == bf))
403+ else e(makeString(["user address is not valid:", v], " "))]
404+ if ((bj == bj))
395405 then {
396- let bo = (aS + bq.payments[0].amount)
397-[aR(t, bo, aT)]
406+ let bs = (aW + bu.payments[0].amount)
407+[aV(v, bs, aX)]
398408 }
399409 else throw("Strict value is not equal to itself.")
400410 }
401411
402412
403-func bs (r,t,bt,bq) = {
404- let bu = aU(t)
405- let aS = bu._1
406- let aT = bu._2
407- let bv = if ((size(bq.payments) == 0))
413+func bw (v) = {
414+ let bx = y(v)
415+ let by = valueOrElse(getInteger(this, bx), height)
416+ let bz = (height - by)
417+ let bA = be(v)
418+ let bB = ((bz * (bA * d)) / c)
419+ bB
420+ }
421+
422+
423+func bC (v,by) = {
424+ let bx = y(v)
425+[IntegerEntry(bx, by)]
426+ }
427+
428+
429+func bD (t,v,bE,bu) = {
430+ let bF = aY(v)
431+ let aW = bF._1
432+ let aX = bF._2
433+ let bG = if ((size(bu.payments) == 0))
408434 then 0
409- else bq.payments[0].amount
410- let bw = ((aT + aS) + bv)
411- let bf = [if (!(B))
435+ else bu.payments[0].amount
436+ let bH = ((aX + aW) + bG)
437+ let bj = [if (!(F))
412438 then true
413- else c("contract is temporary stopped"), if ((1 >= size(bq.payments)))
439+ else e("contract is temporary stopped"), if ((1 >= size(bu.payments)))
414440 then true
415- else c("maximum 1 payment"), if (if ((size(bq.payments) == 0))
441+ else e("maximum 1 payment"), if (if ((size(bu.payments) == 0))
416442 then true
417- else (bq.payments[0].assetId == A))
443+ else (bu.payments[0].assetId == E))
418444 then true
419- else c(makeString(["payment assetId should be:", z], " ")), if ((bt > 0))
445+ else e(makeString(["payment assetId should be:", D], " ")), if ((bE > 0))
420446 then true
421- else c("amount should be greater than 0"), if ((bw >= bt))
447+ else e("amount should be greater than 0"), if ((bH >= bE))
422448 then true
423- else c("amount should be less or equal (payment + available) amount"), if ((bt >= bv))
449+ else e("amount should be less or equal (payment + available) amount"), if ((bE >= bG))
424450 then true
425- else throw("amount should be greater or equal payment amount"), if (D(r))
451+ else throw("amount should be greater or equal payment amount"), if (H(t))
426452 then true
427- else c(makeString(["node address is not valid:", r], " ")), if (D(t))
453+ else e(makeString(["node address is not valid:", t], " ")), if (H(v))
428454 then true
429- else c(makeString(["user address is not valid:", t], " "))]
430- if ((bf == bf))
455+ else e(makeString(["user address is not valid:", v], " "))]
456+ if ((bj == bj))
431457 then {
432- let bx = aC(r)
433- let aH = bx._1
434- let aJ = bx._2
435- let bg = (aJ + bt)
436- let by = aN(r, t)
437- let aL = by._1
438- let aM = by._2
439- let bh = (aM + bt)
440- let bz = (bt - bv)
441- let bj = max([0, (aT - bz)])
442- let bo = min([aS, (aS + (aT - bz))])
443- let aZ = ba(t)
444- let bk = (aZ + bt)
445-[ay(r, aH, bg), aK(r, t, aL, bh), aR(t, bo, bj), aY(t, bk), IntegerEntry(w(r), bg), IntegerEntry(y(r, t), bh)]
458+ let bI = aG(t)
459+ let aL = bI._1
460+ let aN = bI._2
461+ let bk = (aN + bE)
462+ let bJ = aR(t, v)
463+ let aP = bJ._1
464+ let aQ = bJ._2
465+ let bl = (aQ + bE)
466+ let bK = (bE - bG)
467+ let bn = max([0, (aX - bK)])
468+ let bs = min([aW, (aW + (aX - bK))])
469+ let bd = be(v)
470+ let bo = (bd + bE)
471+[aC(t, aL, bk), aO(t, v, aP, bl), aV(v, bs, bn), bc(v, bo), IntegerEntry(A(t), bk), IntegerEntry(C(t, v), bl)]
446472 }
447473 else throw("Strict value is not equal to itself.")
448474 }
449475
450476
451-func bA (r,t,bq) = {
452- let bf = [if ((size(bq.payments) == 1))
477+func bL (t,v,bu) = {
478+ let bj = [if ((size(bu.payments) == 1))
453479 then true
454- else c("payment size should be exactly 1")]
455- if ((bf == bf))
456- then bs(r, t, bq.payments[0].amount, bq)
480+ else e("payment size should be exactly 1")]
481+ if ((bj == bj))
482+ then bD(t, v, bu.payments[0].amount, bu)
457483 else throw("Strict value is not equal to itself.")
458484 }
459485
460486
461-func bB (bC) = {
462- let bD = [if ((bC > 0))
487+func bM (bN) = {
488+ let bO = [if ((bN > 0))
463489 then true
464- else c("period length should be greater than 0")]
465- if ((bD == bD))
466- then if ((m == -1))
467- then [IntegerEntry(j, bC), IntegerEntry(i, height)]
468- else [IntegerEntry(h, (n + 1)), IntegerEntry(i, p), IntegerEntry(j, bC)]
490+ else e("period length should be greater than 0")]
491+ if ((bO == bO))
492+ then if ((o == -1))
493+ then [IntegerEntry(l, bN), IntegerEntry(k, height)]
494+ else [IntegerEntry(j, (p + 1)), IntegerEntry(k, r), IntegerEntry(l, bN)]
469495 else throw("Strict value is not equal to itself.")
470496 }
471497
472498
473-@Callable(bq)
474-func setNewPeriodLength (bC) = {
475- let bf = [if (W(toString(bq.caller)))
499+@Callable(bu)
500+func setNewPeriodLength (bN) = {
501+ let bj = [if (aa(toString(bu.caller)))
476502 then true
477- else c("caller is not in adminList")]
478- if ((bf == bf))
479- then bB(bC)
503+ else e("caller is not in adminList")]
504+ if ((bj == bj))
505+ then bM(bN)
480506 else throw("Strict value is not equal to itself.")
481507 }
482508
483509
484510
485-@Callable(bq)
486-func setForceStopFlag (bE) = {
487- let bD = [if (W(toString(bq.caller)))
511+@Callable(bu)
512+func claimUnit () = {
513+ let v = toString(bu.caller)
514+ let bB = bw(v)
515+ let bP = valueOrElse(getInteger(this, z(v)), 0)
516+ let bQ = be(v)
517+ let bO = [if ((bQ >= (bP + bB)))
488518 then true
489- else c("caller is not in adminList")]
490- if ((bD == bD))
491- then [BooleanEntry(f, bE)]
519+ else e("Can't claim more than staked")]
520+ if ((bO == bO))
521+ then {
522+ let bx = y(v)
523+ let bR = [IntegerEntry(bx, height), IntegerEntry(z(v), (bP + bB))]
524+ let bS = ScriptTransfer(bu.caller, bB, unit)
525+ (bR ++ [bS])
526+ }
492527 else throw("Strict value is not equal to itself.")
493528 }
494529
495530
496531
497-@Callable(bq)
498-func setForceOutStopFlag (bE) = {
499- let bD = [if (W(toString(bq.caller)))
532+@Callable(bu)
533+func setForceStopFlag (bT) = {
534+ let bO = [if (aa(toString(bu.caller)))
500535 then true
501- else c("caller is not in adminList")]
502- if ((bD == bD))
503- then [BooleanEntry(g, bE)]
536+ else e("caller is not in adminList")]
537+ if ((bO == bO))
538+ then [BooleanEntry(h, bT)]
504539 else throw("Strict value is not equal to itself.")
505540 }
506541
507542
508543
509-@Callable(bq)
510-func getNodeDataREADONLY (r) = {
511- let bF = aC(r)
512- let bG = bF._1
513- let aA = bF._2
514- $Tuple2(nil, $Tuple5(o, bG, p, aA, height))
515- }
516-
517-
518-
519-@Callable(bq)
520-func getUserLeasingDataREADONLY (r,t) = {
521- let bH = aN(r, t)
522- let bG = bH._1
523- let aA = bH._2
524- $Tuple2(nil, $Tuple5(o, bG, p, aA, height))
525- }
526-
527-
528-
529-@Callable(bq)
530-func getUserDataREADONLY (t) = {
531- let bI = aU(t)
532- let aS = bI._1
533- let aT = bI._2
534- let aZ = ba(t)
535- $Tuple2(nil, $Tuple6(o, aS, p, aT, aZ, height))
536- }
537-
538-
539-
540-@Callable(bq)
541-func leaseByAddress (r,t) = bA(r, t, bq)
542-
543-
544-
545-@Callable(bq)
546-func lease (r) = {
547- let t = toString(bq.caller)
548- bA(r, t, bq)
549- }
550-
551-
552-
553-@Callable(bq)
554-func leaseFromLocked (r,bJ) = {
555- let t = toString(bq.caller)
556- bs(r, t, bJ, bq)
557- }
558-
559-
560-
561-@Callable(bq)
562-func cancelLease (r,bJ) = {
563- let t = toString(bq.caller)
564- bb(r, t, bJ)
565- }
566-
567-
568-
569-@Callable(bq)
570-func claim (bJ) = {
571- let t = toString(bq.caller)
572- bl(t, bJ)
573- }
574-
575-
576-
577-@Callable(bq)
578-func claimAll () = {
579- let t = toString(bq.caller)
580- let bK = aU(t)
581- let aS = bK._1
582- let aT = bK._2
583- let bf = [if ((aS > 0))
544+@Callable(bu)
545+func setForceOutStopFlag (bT) = {
546+ let bO = [if (aa(toString(bu.caller)))
584547 then true
585- else c("nothing to claim")]
586- if ((bf == bf))
587- then bl(t, aS)
548+ else e("caller is not in adminList")]
549+ if ((bO == bO))
550+ then [BooleanEntry(i, bT)]
588551 else throw("Strict value is not equal to itself.")
589552 }
590553
591554
592555
593-@Callable(bq)
594-func stakeFor (t) = bp(t, bq)
556+@Callable(bu)
557+func getNodeDataREADONLY (t) = {
558+ let bU = aG(t)
559+ let bV = bU._1
560+ let aE = bU._2
561+ $Tuple2(nil, $Tuple5(q, bV, r, aE, height))
562+ }
595563
596564
597565
598-@Callable(bq)
599-func voteForTxId (L) = {
600- let as = toBase58String(bq.caller.bytes)
601- let ab = K(L)
602- let Z = [StringEntry(Q(), L)]
603- let bL = getString(this, Q())
604- let aw = [if ((size(fromBase58String(L)) == J))
566+@Callable(bu)
567+func getUserLeasingDataREADONLY (t,v) = {
568+ let bW = aR(t, v)
569+ let bV = bW._1
570+ let aE = bW._2
571+ $Tuple2(nil, $Tuple5(q, bV, r, aE, height))
572+ }
573+
574+
575+
576+@Callable(bu)
577+func getUserDataREADONLY (v) = {
578+ let bX = aY(v)
579+ let aW = bX._1
580+ let aX = bX._2
581+ let bd = be(v)
582+ $Tuple2(nil, $Tuple6(q, aW, r, aX, bd, height))
583+ }
584+
585+
586+
587+@Callable(bu)
588+func leaseByAddress (t,v) = bL(t, v, bu)
589+
590+
591+
592+@Callable(bu)
593+func lease (t) = {
594+ let v = toString(bu.caller)
595+ bL(t, v, bu)
596+ }
597+
598+
599+
600+@Callable(bu)
601+func leaseFromLocked (t,bY) = {
602+ let v = toString(bu.caller)
603+ bD(t, v, bY, bu)
604+ }
605+
606+
607+
608+@Callable(bu)
609+func cancelLease (t,bY) = {
610+ let v = toString(bu.caller)
611+ bf(t, v, bY)
612+ }
613+
614+
615+
616+@Callable(bu)
617+func claim (bY) = {
618+ let v = toString(bu.caller)
619+ bp(v, bY)
620+ }
621+
622+
623+
624+@Callable(bu)
625+func claimAll () = {
626+ let v = toString(bu.caller)
627+ let bZ = aY(v)
628+ let aW = bZ._1
629+ let aX = bZ._2
630+ let bj = [if ((aW > 0))
605631 then true
606- else c((L + " is not valid txId")), if (if ((bL == unit))
607- then true
608- else (value(bL) != L))
609- then true
610- else c((L + " is already allowed"))]
611- if ((aw == aw))
612- then ar(as, ab, I, Z)
632+ else e("nothing to claim")]
633+ if ((bj == bj))
634+ then bp(v, aW)
613635 else throw("Strict value is not equal to itself.")
614636 }
615637
616638
617-@Verifier(bM)
618-func bN () = {
619- let bO = (bM.id == fromBase58String(valueOrElse(getString(this, Q()), "")))
620- let bP = if ((size(U()) >= I))
639+
640+@Callable(bu)
641+func stakeFor (v) = bt(v, bu)
642+
643+
644+
645+@Callable(bu)
646+func voteForTxId (P) = {
647+ let aw = toBase58String(bu.caller.bytes)
648+ let af = O(P)
649+ let ad = [StringEntry(U(), P)]
650+ let ca = getString(this, U())
651+ let aA = [if ((size(fromBase58String(P)) == N))
652+ then true
653+ else e((P + " is not valid txId")), if (if ((ca == unit))
654+ then true
655+ else (value(ca) != P))
656+ then true
657+ else e((P + " is already allowed"))]
658+ if ((aA == aA))
659+ then av(aw, af, M, ad)
660+ else throw("Strict value is not equal to itself.")
661+ }
662+
663+
664+@Verifier(cb)
665+func cc () = {
666+ let cd = (cb.id == fromBase58String(valueOrElse(getString(this, U()), "")))
667+ let ce = if ((size(Y()) >= M))
621668 then false
622- else sigVerify(bM.bodyBytes, bM.proofs[0], bM.senderPublicKey)
623- if (bO)
669+ else sigVerify(cb.bodyBytes, cb.proofs[0], cb.senderPublicKey)
670+ if (cd)
624671 then true
625- else bP
672+ else ce
626673 }
627674
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
8-func c (d) = throw(((a + ": ") + d))
8+let c = 1000
9+
10+let d = 100000000
11+
12+func e (f) = throw(((a + ": ") + f))
913
1014
11-let e = makeString(["%s", "assetId"], b)
15+let g = makeString(["%s", "assetId"], b)
1216
13-let f = makeString(["%s", "forceStop"], b)
17+let h = makeString(["%s", "forceStop"], b)
1418
15-let g = makeString(["%s", "forceOutStop"], b)
19+let i = makeString(["%s", "forceOutStop"], b)
1620
17-let h = makeString(["%s", "offsetId"], b)
21+let j = makeString(["%s", "offsetId"], b)
1822
19-let i = makeString(["%s", "offsetHeight"], b)
23+let k = makeString(["%s", "offsetHeight"], b)
2024
21-let j = makeString(["%s", "periodLength"], b)
25+let l = makeString(["%s", "periodLength"], b)
2226
23-let k = valueOrElse(getInteger(this, h), 0)
27+let m = valueOrElse(getInteger(this, j), 0)
2428
25-let l = valueOrElse(getInteger(this, j), 10000)
29+let n = valueOrElse(getInteger(this, l), 10000)
2630
27-let m = valueOrElse(getInteger(this, i), -1)
31+let o = valueOrElse(getInteger(this, k), -1)
2832
29-let n = if (if ((height > m))
30- then (m != -1)
33+let p = if (if ((height > o))
34+ then (o != -1)
3135 else false)
32- then (((height - m) / l) + k)
33- else max([0, (k - 1)])
36+ then (((height - o) / n) + m)
37+ else max([0, (m - 1)])
3438
35-let o = if (if ((m == -1))
39+let q = if (if ((o == -1))
3640 then true
37- else if ((n == 0))
38- then (m > height)
41+ else if ((p == 0))
42+ then (o > height)
3943 else false)
4044 then 0
41- else (m + ((n - k) * l))
45+ else (o + ((p - m) * n))
4246
43-let p = if (if ((m == -1))
47+let r = if (if ((o == -1))
4448 then true
45- else if ((n == 0))
46- then (m > height)
49+ else if ((p == 0))
50+ then (o > height)
4751 else false)
4852 then 0
49- else (o + l)
53+ else (q + n)
5054
51-func q (r) = makeString(["%s", r], b)
55+func s (t) = makeString(["%s", t], b)
5256
5357
54-func s (t,r) = makeString(["%s%s", r, t], b)
58+func u (v,t) = makeString(["%s%s", t, v], b)
5559
5660
57-func u (t) = makeString(["%s%s", "toClaim", t], b)
61+func w (v) = makeString(["%s%s", "toClaim", v], b)
5862
5963
60-func v (t) = makeString(["%s%s", "userTotalLocked", t], b)
64+func x (v) = makeString(["%s%s", "userTotalLocked", v], b)
6165
6266
63-func w (r) = {
64- let x = if ((m == -1))
67+func y (v) = makeString(["%s%s", v, "claimedBlock"], b)
68+
69+
70+func z (v) = makeString(["%s%s", v, "totalUnitsClaimed"], b)
71+
72+
73+func A (t) = {
74+ let B = if ((o == -1))
6575 then 0
6676 else height
67- makeString(["%s%d", r, toString(x)], b)
77+ makeString(["%s%d", t, toString(B)], b)
6878 }
6979
7080
71-func y (r,t) = {
72- let x = if ((m == -1))
81+func C (t,v) = {
82+ let B = if ((o == -1))
7383 then 0
7484 else height
75- makeString(["%s%s%d", r, t, toString(x)], b)
85+ makeString(["%s%s%d", t, v, toString(B)], b)
7686 }
7787
7888
79-let z = valueOrElse(getString(this, e), "WAVES")
89+let D = valueOrElse(getString(this, g), "WAVES")
8090
81-let A = if ((z == "WAVES"))
91+let E = if ((D == "WAVES"))
8292 then unit
83- else fromBase58String(z)
93+ else fromBase58String(D)
8494
85-let B = valueOrElse(getBoolean(this, f), false)
95+let F = valueOrElse(getBoolean(this, h), false)
8696
87-let C = valueOrElse(getBoolean(this, g), false)
97+let G = valueOrElse(getBoolean(this, i), false)
8898
89-func D (E) = {
90- let F = addressFromString(E)
91- if ($isInstanceOf(F, "Address"))
99+func H (I) = {
100+ let J = addressFromString(I)
101+ if ($isInstanceOf(J, "Address"))
92102 then {
93- let G = F
103+ let K = J
94104 true
95105 }
96106 else false
97107 }
98108
99109
100-let H = 5
110+let L = 5
101111
102-let I = 3
112+let M = 3
103113
104-let J = 32
114+let N = 32
105115
106-func K (L) = makeString(["%s%s%s", "allowTxId", L], b)
116+func O (P) = makeString(["%s%s%s", "allowTxId", P], b)
107117
108118
109-func M (N,O) = makeString([N, O], b)
119+func Q (R,S) = makeString([R, S], b)
110120
111121
112-func P () = makeString(["%s", "adminAddressList"], b)
122+func T () = makeString(["%s", "adminAddressList"], b)
113123
114124
115-func Q () = makeString(["%s", "txId"], b)
125+func U () = makeString(["%s", "txId"], b)
116126
117127
118-func R (N,S) = {
119- let T = M(N, S)
120- valueOrElse(getInteger(T), 0)
128+func V (R,W) = {
129+ let X = Q(R, W)
130+ valueOrElse(getInteger(X), 0)
121131 }
122132
123133
124-func U () = {
125- let F = getString(this, P())
126- if ($isInstanceOf(F, "String"))
134+func Y () = {
135+ let J = getString(this, T())
136+ if ($isInstanceOf(J, "String"))
127137 then {
128- let V = F
129- split(V, b)
138+ let Z = J
139+ split(Z, b)
130140 }
131141 else nil
132142 }
133143
134144
135-func W (E) = containsElement(U(), E)
145+func aa (I) = containsElement(Y(), I)
136146
137147
138-func X (G,O) = {
139- let Y = G
140- let Z = Y._1
141- let N = Y._2
142- $Tuple2((Z :+ M(N, O)), N)
148+func ab (K,S) = {
149+ let ac = K
150+ let ad = ac._1
151+ let R = ac._2
152+ $Tuple2((ad :+ Q(R, S)), R)
143153 }
144154
145155
146-func aa (ab) = {
147- let ac = P()
148- let ad = {
149- let ae = U()
150- let af = size(ae)
151- let ag = $Tuple2(nil, ab)
152- func ah (ai,aj) = if ((aj >= af))
153- then ai
154- else X(ai, ae[aj])
156+func ae (af) = {
157+ let ag = T()
158+ let ah = {
159+ let ai = Y()
160+ let aj = size(ai)
161+ let ak = $Tuple2(nil, af)
162+ func al (am,an) = if ((an >= aj))
163+ then am
164+ else ab(am, ai[an])
155165
156- func ak (ai,aj) = if ((aj >= af))
157- then ai
166+ func ao (am,an) = if ((an >= aj))
167+ then am
158168 else throw("List size exceeds 5")
159169
160- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
170+ ao(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5)
161171 }
162- let Z = ad._1
163- let N = ad._2
164- Z
172+ let ad = ah._1
173+ let R = ah._2
174+ ad
165175 }
166176
167177
168-func al (Z,T) = (Z + valueOrElse(getInteger(T), 0))
178+func ap (ad,X) = (ad + valueOrElse(getInteger(X), 0))
169179
170180
171-func am (N) = {
172- let an = aa(N)
173- let ae = an
174- let af = size(ae)
175- let ag = 0
176- func ah (ai,aj) = if ((aj >= af))
177- then ai
178- else al(ai, ae[aj])
181+func aq (R) = {
182+ let ar = ae(R)
183+ let ai = ar
184+ let aj = size(ai)
185+ let ak = 0
186+ func al (am,an) = if ((an >= aj))
187+ then am
188+ else ap(am, ai[an])
179189
180- func ak (ai,aj) = if ((aj >= af))
181- then ai
190+ func ao (am,an) = if ((an >= aj))
191+ then am
182192 else throw("List size exceeds 5")
183193
184- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
194+ ao(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5)
185195 }
186196
187197
188-func ao (Z,ap) = (Z :+ DeleteEntry(ap))
198+func as (ad,at) = (ad :+ DeleteEntry(at))
189199
190200
191-func aq (N) = {
192- let an = aa(N)
193- let ae = an
194- let af = size(ae)
195- let ag = nil
196- func ah (ai,aj) = if ((aj >= af))
197- then ai
198- else ao(ai, ae[aj])
201+func au (R) = {
202+ let ar = ae(R)
203+ let ai = ar
204+ let aj = size(ai)
205+ let ak = nil
206+ func al (am,an) = if ((an >= aj))
207+ then am
208+ else as(am, ai[an])
199209
200- func ak (ai,aj) = if ((aj >= af))
201- then ai
210+ func ao (am,an) = if ((an >= aj))
211+ then am
202212 else throw("List size exceeds 5")
203213
204- ak(ah(ah(ah(ah(ah(ag, 0), 1), 2), 3), 4), 5)
214+ ao(al(al(al(al(al(ak, 0), 1), 2), 3), 4), 5)
205215 }
206216
207217
208-func ar (as,ab,at,au) = {
209- let T = M(ab, as)
210- let av = R(ab, as)
211- let aw = if (!(W(as)))
212- then c((("Address: " + as) + " not in Admin list"))
213- else if ((av == 1))
214- then c((T + " you already voted"))
218+func av (aw,af,ax,ay) = {
219+ let X = Q(af, aw)
220+ let az = V(af, aw)
221+ let aA = if (!(aa(aw)))
222+ then e((("Address: " + aw) + " not in Admin list"))
223+ else if ((az == 1))
224+ then e((X + " you already voted"))
215225 else unit
216- if ((aw == aw))
226+ if ((aA == aA))
217227 then {
218- let an = am(ab)
219- if (((an + 1) >= at))
228+ let ar = aq(af)
229+ if (((ar + 1) >= ax))
220230 then {
221- let ax = aq(ab)
222- (ax ++ au)
231+ let aB = au(af)
232+ (aB ++ ay)
223233 }
224- else [IntegerEntry(T, 1)]
234+ else [IntegerEntry(X, 1)]
225235 }
226236 else throw("Strict value is not equal to itself.")
227237 }
228238
229239
230-func ay (r,az,aA) = {
231- let aB = makeString(["%d%d%d%d", toString(o), toString(az), toString(p), toString(aA)], b)
232- StringEntry(q(r), aB)
240+func aC (t,aD,aE) = {
241+ let aF = makeString(["%d%d%d%d", toString(q), toString(aD), toString(r), toString(aE)], b)
242+ StringEntry(s(t), aF)
233243 }
234244
235245
236-func aC (r) = {
237- let aD = getString(this, q(r))
238- let F = aD
239- if ($isInstanceOf(F, "String"))
246+func aG (t) = {
247+ let aH = getString(this, s(t))
248+ let J = aH
249+ if ($isInstanceOf(J, "String"))
240250 then {
241- let aE = F
242- let aF = split(aE, b)
243- let aG = parseIntValue(aF[1])
244- let aH = parseIntValue(aF[2])
245- let aI = parseIntValue(aF[3])
246- let aJ = parseIntValue(aF[4])
247- if (if ((aI > height))
251+ let aI = J
252+ let aJ = split(aI, b)
253+ let aK = parseIntValue(aJ[1])
254+ let aL = parseIntValue(aJ[2])
255+ let aM = parseIntValue(aJ[3])
256+ let aN = parseIntValue(aJ[4])
257+ if (if ((aM > height))
248258 then true
249- else (m == -1))
250- then $Tuple2(aH, aJ)
251- else $Tuple2(aJ, aJ)
259+ else (o == -1))
260+ then $Tuple2(aL, aN)
261+ else $Tuple2(aN, aN)
252262 }
253263 else $Tuple2(0, 0)
254264 }
255265
256266
257-func aK (r,t,aL,aM) = {
258- let aB = makeString(["%d%d%d%d", toString(o), toString(aL), toString(p), toString(aM)], b)
259- StringEntry(s(t, r), aB)
267+func aO (t,v,aP,aQ) = {
268+ let aF = makeString(["%d%d%d%d", toString(q), toString(aP), toString(r), toString(aQ)], b)
269+ StringEntry(u(v, t), aF)
260270 }
261271
262272
263-func aN (r,t) = {
264- let aO = getString(this, s(t, r))
265- let F = aO
266- if ($isInstanceOf(F, "String"))
273+func aR (t,v) = {
274+ let aS = getString(this, u(v, t))
275+ let J = aS
276+ if ($isInstanceOf(J, "String"))
267277 then {
268- let aE = F
269- let aF = split(aE, b)
270- let aP = parseIntValue(aF[1])
271- let aL = parseIntValue(aF[2])
272- let aQ = parseIntValue(aF[3])
273- let aM = parseIntValue(aF[4])
274- if (if ((aQ > height))
278+ let aI = J
279+ let aJ = split(aI, b)
280+ let aT = parseIntValue(aJ[1])
281+ let aP = parseIntValue(aJ[2])
282+ let aU = parseIntValue(aJ[3])
283+ let aQ = parseIntValue(aJ[4])
284+ if (if ((aU > height))
275285 then true
276- else (m == -1))
277- then $Tuple2(aL, aM)
278- else $Tuple2(aM, aM)
286+ else (o == -1))
287+ then $Tuple2(aP, aQ)
288+ else $Tuple2(aQ, aQ)
279289 }
280290 else $Tuple2(0, 0)
281291 }
282292
283293
284-func aR (t,aS,aT) = {
285- let aB = makeString(["%d%d%d%d", toString(o), toString(aS), toString(p), toString(aT)], b)
286- StringEntry(u(t), aB)
294+func aV (v,aW,aX) = {
295+ let aF = makeString(["%d%d%d%d", toString(q), toString(aW), toString(r), toString(aX)], b)
296+ StringEntry(w(v), aF)
287297 }
288298
289299
290-func aU (t) = {
291- let aV = getString(this, u(t))
292- let F = aV
293- if ($isInstanceOf(F, "String"))
300+func aY (v) = {
301+ let aZ = getString(this, w(v))
302+ let J = aZ
303+ if ($isInstanceOf(J, "String"))
294304 then {
295- let aE = F
296- let aF = split(aE, b)
297- let aW = parseIntValue(aF[1])
298- let aS = parseIntValue(aF[2])
299- let aX = parseIntValue(aF[3])
300- let aT = parseIntValue(aF[4])
301- if (if ((aX > height))
305+ let aI = J
306+ let aJ = split(aI, b)
307+ let ba = parseIntValue(aJ[1])
308+ let aW = parseIntValue(aJ[2])
309+ let bb = parseIntValue(aJ[3])
310+ let aX = parseIntValue(aJ[4])
311+ if (if ((bb > height))
302312 then true
303- else (n == 0))
304- then $Tuple2(aS, aT)
305- else $Tuple2((aS + aT), 0)
313+ else (p == 0))
314+ then $Tuple2(aW, aX)
315+ else $Tuple2((aW + aX), 0)
306316 }
307317 else $Tuple2(0, 0)
308318 }
309319
310320
311-func aY (t,aZ) = IntegerEntry(v(t), aZ)
321+func bc (v,bd) = IntegerEntry(x(v), bd)
312322
313323
314-func ba (t) = valueOrElse(getInteger(this, v(t)), 0)
324+func be (v) = valueOrElse(getInteger(this, x(v)), 0)
315325
316326
317-func bb (r,t,bc) = {
318- let bd = aC(r)
319- let aH = bd._1
320- let aJ = bd._2
321- let be = aN(r, t)
322- let aL = be._1
323- let aM = be._2
324- let bf = [if (!(B))
327+func bf (t,v,bg) = {
328+ let bh = aG(t)
329+ let aL = bh._1
330+ let aN = bh._2
331+ let bi = aR(t, v)
332+ let aP = bi._1
333+ let aQ = bi._2
334+ let bj = [if (!(F))
325335 then true
326- else c("contract is temporary stopped"), if (!(C))
336+ else e("contract is temporary stopped"), if (!(G))
327337 then true
328- else c("unstake is temporary disabled"), if ((bc > 0))
338+ else e("unstake is temporary disabled"), if ((bg > 0))
329339 then true
330- else c("unstake amount should be greater than 0"), if ((aM >= bc))
340+ else e("unstake amount should be greater than 0"), if ((aQ >= bg))
331341 then true
332- else c("unstake amount should be less or equal user staked amount"), if ((aJ >= bc))
342+ else e("unstake amount should be less or equal user staked amount"), if ((aN >= bg))
333343 then true
334- else c("unstake amount should be less or equal node staked amount"), if (D(r))
344+ else e("unstake amount should be less or equal node staked amount"), if (H(t))
335345 then true
336- else c(makeString(["node address is not valid:", r], " ")), if (D(t))
346+ else e(makeString(["node address is not valid:", t], " ")), if (H(v))
337347 then true
338- else c(makeString(["user address is not valid:", t], " "))]
339- if ((bf == bf))
348+ else e(makeString(["user address is not valid:", v], " "))]
349+ if ((bj == bj))
340350 then {
341- let bg = (aJ - bc)
342- let bh = (aM - bc)
343- let bi = aU(t)
344- let aS = bi._1
345- let aT = bi._2
346- let bj = (aT + bc)
347- let aZ = ba(t)
348- let bk = (aZ - bc)
349-[ay(r, aH, bg), aK(r, t, aL, bh), aR(t, aS, bj), aY(t, bk), IntegerEntry(w(r), bg), IntegerEntry(y(r, t), bh)]
351+ let bk = (aN - bg)
352+ let bl = (aQ - bg)
353+ let bm = aY(v)
354+ let aW = bm._1
355+ let aX = bm._2
356+ let bn = (aX + bg)
357+ let bd = be(v)
358+ let bo = (bd - bg)
359+[aC(t, aL, bk), aO(t, v, aP, bl), aV(v, aW, bn), bc(v, bo), IntegerEntry(A(t), bk), IntegerEntry(C(t, v), bl)]
350360 }
351361 else throw("Strict value is not equal to itself.")
352362 }
353363
354364
355-func bl (t,bm) = {
356- let bn = aU(t)
357- let aS = bn._1
358- let aT = bn._2
359- let bf = [if (!(B))
365+func bp (v,bq) = {
366+ let br = aY(v)
367+ let aW = br._1
368+ let aX = br._2
369+ let bj = [if (!(F))
360370 then true
361- else c("contract is temporary stopped"), if (!(C))
371+ else e("contract is temporary stopped"), if (!(G))
362372 then true
363- else c("claim is temporary disabled"), if ((bm > 0))
373+ else e("claim is temporary disabled"), if ((bq > 0))
364374 then true
365- else c("claim amount should be greater than 0"), if ((aS >= bm))
375+ else e("claim amount should be greater than 0"), if ((aW >= bq))
366376 then true
367- else c("claim amount should be less or equal unlocked amount"), if (D(t))
377+ else e("claim amount should be less or equal unlocked amount"), if (H(v))
368378 then true
369- else c(makeString(["user address is not valid:", t], " "))]
370- if ((bf == bf))
379+ else e(makeString(["user address is not valid:", v], " "))]
380+ if ((bj == bj))
371381 then {
372- let bo = (aS - bm)
373-[aR(t, bo, aT), ScriptTransfer(addressFromStringValue(t), bm, A)]
382+ let bs = (aW - bq)
383+[aV(v, bs, aX), ScriptTransfer(addressFromStringValue(v), bq, E)]
374384 }
375385 else throw("Strict value is not equal to itself.")
376386 }
377387
378388
379-func bp (t,bq) = {
380- let br = aU(t)
381- let aS = br._1
382- let aT = br._2
383- let bf = [if (!(B))
389+func bt (v,bu) = {
390+ let bv = aY(v)
391+ let aW = bv._1
392+ let aX = bv._2
393+ let bj = [if (!(F))
384394 then true
385- else c("contract is temporary stopped"), if ((1 >= size(bq.payments)))
395+ else e("contract is temporary stopped"), if ((1 >= size(bu.payments)))
386396 then true
387- else c("maximum 1 payment"), if (if ((size(bq.payments) == 0))
397+ else e("maximum 1 payment"), if (if ((size(bu.payments) == 0))
388398 then true
389- else (bq.payments[0].assetId == A))
399+ else (bu.payments[0].assetId == E))
390400 then true
391- else c(makeString(["payment assetId should be:", z], " ")), if (D(t))
401+ else e(makeString(["payment assetId should be:", D], " ")), if (H(v))
392402 then true
393- else c(makeString(["user address is not valid:", t], " "))]
394- if ((bf == bf))
403+ else e(makeString(["user address is not valid:", v], " "))]
404+ if ((bj == bj))
395405 then {
396- let bo = (aS + bq.payments[0].amount)
397-[aR(t, bo, aT)]
406+ let bs = (aW + bu.payments[0].amount)
407+[aV(v, bs, aX)]
398408 }
399409 else throw("Strict value is not equal to itself.")
400410 }
401411
402412
403-func bs (r,t,bt,bq) = {
404- let bu = aU(t)
405- let aS = bu._1
406- let aT = bu._2
407- let bv = if ((size(bq.payments) == 0))
413+func bw (v) = {
414+ let bx = y(v)
415+ let by = valueOrElse(getInteger(this, bx), height)
416+ let bz = (height - by)
417+ let bA = be(v)
418+ let bB = ((bz * (bA * d)) / c)
419+ bB
420+ }
421+
422+
423+func bC (v,by) = {
424+ let bx = y(v)
425+[IntegerEntry(bx, by)]
426+ }
427+
428+
429+func bD (t,v,bE,bu) = {
430+ let bF = aY(v)
431+ let aW = bF._1
432+ let aX = bF._2
433+ let bG = if ((size(bu.payments) == 0))
408434 then 0
409- else bq.payments[0].amount
410- let bw = ((aT + aS) + bv)
411- let bf = [if (!(B))
435+ else bu.payments[0].amount
436+ let bH = ((aX + aW) + bG)
437+ let bj = [if (!(F))
412438 then true
413- else c("contract is temporary stopped"), if ((1 >= size(bq.payments)))
439+ else e("contract is temporary stopped"), if ((1 >= size(bu.payments)))
414440 then true
415- else c("maximum 1 payment"), if (if ((size(bq.payments) == 0))
441+ else e("maximum 1 payment"), if (if ((size(bu.payments) == 0))
416442 then true
417- else (bq.payments[0].assetId == A))
443+ else (bu.payments[0].assetId == E))
418444 then true
419- else c(makeString(["payment assetId should be:", z], " ")), if ((bt > 0))
445+ else e(makeString(["payment assetId should be:", D], " ")), if ((bE > 0))
420446 then true
421- else c("amount should be greater than 0"), if ((bw >= bt))
447+ else e("amount should be greater than 0"), if ((bH >= bE))
422448 then true
423- else c("amount should be less or equal (payment + available) amount"), if ((bt >= bv))
449+ else e("amount should be less or equal (payment + available) amount"), if ((bE >= bG))
424450 then true
425- else throw("amount should be greater or equal payment amount"), if (D(r))
451+ else throw("amount should be greater or equal payment amount"), if (H(t))
426452 then true
427- else c(makeString(["node address is not valid:", r], " ")), if (D(t))
453+ else e(makeString(["node address is not valid:", t], " ")), if (H(v))
428454 then true
429- else c(makeString(["user address is not valid:", t], " "))]
430- if ((bf == bf))
455+ else e(makeString(["user address is not valid:", v], " "))]
456+ if ((bj == bj))
431457 then {
432- let bx = aC(r)
433- let aH = bx._1
434- let aJ = bx._2
435- let bg = (aJ + bt)
436- let by = aN(r, t)
437- let aL = by._1
438- let aM = by._2
439- let bh = (aM + bt)
440- let bz = (bt - bv)
441- let bj = max([0, (aT - bz)])
442- let bo = min([aS, (aS + (aT - bz))])
443- let aZ = ba(t)
444- let bk = (aZ + bt)
445-[ay(r, aH, bg), aK(r, t, aL, bh), aR(t, bo, bj), aY(t, bk), IntegerEntry(w(r), bg), IntegerEntry(y(r, t), bh)]
458+ let bI = aG(t)
459+ let aL = bI._1
460+ let aN = bI._2
461+ let bk = (aN + bE)
462+ let bJ = aR(t, v)
463+ let aP = bJ._1
464+ let aQ = bJ._2
465+ let bl = (aQ + bE)
466+ let bK = (bE - bG)
467+ let bn = max([0, (aX - bK)])
468+ let bs = min([aW, (aW + (aX - bK))])
469+ let bd = be(v)
470+ let bo = (bd + bE)
471+[aC(t, aL, bk), aO(t, v, aP, bl), aV(v, bs, bn), bc(v, bo), IntegerEntry(A(t), bk), IntegerEntry(C(t, v), bl)]
446472 }
447473 else throw("Strict value is not equal to itself.")
448474 }
449475
450476
451-func bA (r,t,bq) = {
452- let bf = [if ((size(bq.payments) == 1))
477+func bL (t,v,bu) = {
478+ let bj = [if ((size(bu.payments) == 1))
453479 then true
454- else c("payment size should be exactly 1")]
455- if ((bf == bf))
456- then bs(r, t, bq.payments[0].amount, bq)
480+ else e("payment size should be exactly 1")]
481+ if ((bj == bj))
482+ then bD(t, v, bu.payments[0].amount, bu)
457483 else throw("Strict value is not equal to itself.")
458484 }
459485
460486
461-func bB (bC) = {
462- let bD = [if ((bC > 0))
487+func bM (bN) = {
488+ let bO = [if ((bN > 0))
463489 then true
464- else c("period length should be greater than 0")]
465- if ((bD == bD))
466- then if ((m == -1))
467- then [IntegerEntry(j, bC), IntegerEntry(i, height)]
468- else [IntegerEntry(h, (n + 1)), IntegerEntry(i, p), IntegerEntry(j, bC)]
490+ else e("period length should be greater than 0")]
491+ if ((bO == bO))
492+ then if ((o == -1))
493+ then [IntegerEntry(l, bN), IntegerEntry(k, height)]
494+ else [IntegerEntry(j, (p + 1)), IntegerEntry(k, r), IntegerEntry(l, bN)]
469495 else throw("Strict value is not equal to itself.")
470496 }
471497
472498
473-@Callable(bq)
474-func setNewPeriodLength (bC) = {
475- let bf = [if (W(toString(bq.caller)))
499+@Callable(bu)
500+func setNewPeriodLength (bN) = {
501+ let bj = [if (aa(toString(bu.caller)))
476502 then true
477- else c("caller is not in adminList")]
478- if ((bf == bf))
479- then bB(bC)
503+ else e("caller is not in adminList")]
504+ if ((bj == bj))
505+ then bM(bN)
480506 else throw("Strict value is not equal to itself.")
481507 }
482508
483509
484510
485-@Callable(bq)
486-func setForceStopFlag (bE) = {
487- let bD = [if (W(toString(bq.caller)))
511+@Callable(bu)
512+func claimUnit () = {
513+ let v = toString(bu.caller)
514+ let bB = bw(v)
515+ let bP = valueOrElse(getInteger(this, z(v)), 0)
516+ let bQ = be(v)
517+ let bO = [if ((bQ >= (bP + bB)))
488518 then true
489- else c("caller is not in adminList")]
490- if ((bD == bD))
491- then [BooleanEntry(f, bE)]
519+ else e("Can't claim more than staked")]
520+ if ((bO == bO))
521+ then {
522+ let bx = y(v)
523+ let bR = [IntegerEntry(bx, height), IntegerEntry(z(v), (bP + bB))]
524+ let bS = ScriptTransfer(bu.caller, bB, unit)
525+ (bR ++ [bS])
526+ }
492527 else throw("Strict value is not equal to itself.")
493528 }
494529
495530
496531
497-@Callable(bq)
498-func setForceOutStopFlag (bE) = {
499- let bD = [if (W(toString(bq.caller)))
532+@Callable(bu)
533+func setForceStopFlag (bT) = {
534+ let bO = [if (aa(toString(bu.caller)))
500535 then true
501- else c("caller is not in adminList")]
502- if ((bD == bD))
503- then [BooleanEntry(g, bE)]
536+ else e("caller is not in adminList")]
537+ if ((bO == bO))
538+ then [BooleanEntry(h, bT)]
504539 else throw("Strict value is not equal to itself.")
505540 }
506541
507542
508543
509-@Callable(bq)
510-func getNodeDataREADONLY (r) = {
511- let bF = aC(r)
512- let bG = bF._1
513- let aA = bF._2
514- $Tuple2(nil, $Tuple5(o, bG, p, aA, height))
515- }
516-
517-
518-
519-@Callable(bq)
520-func getUserLeasingDataREADONLY (r,t) = {
521- let bH = aN(r, t)
522- let bG = bH._1
523- let aA = bH._2
524- $Tuple2(nil, $Tuple5(o, bG, p, aA, height))
525- }
526-
527-
528-
529-@Callable(bq)
530-func getUserDataREADONLY (t) = {
531- let bI = aU(t)
532- let aS = bI._1
533- let aT = bI._2
534- let aZ = ba(t)
535- $Tuple2(nil, $Tuple6(o, aS, p, aT, aZ, height))
536- }
537-
538-
539-
540-@Callable(bq)
541-func leaseByAddress (r,t) = bA(r, t, bq)
542-
543-
544-
545-@Callable(bq)
546-func lease (r) = {
547- let t = toString(bq.caller)
548- bA(r, t, bq)
549- }
550-
551-
552-
553-@Callable(bq)
554-func leaseFromLocked (r,bJ) = {
555- let t = toString(bq.caller)
556- bs(r, t, bJ, bq)
557- }
558-
559-
560-
561-@Callable(bq)
562-func cancelLease (r,bJ) = {
563- let t = toString(bq.caller)
564- bb(r, t, bJ)
565- }
566-
567-
568-
569-@Callable(bq)
570-func claim (bJ) = {
571- let t = toString(bq.caller)
572- bl(t, bJ)
573- }
574-
575-
576-
577-@Callable(bq)
578-func claimAll () = {
579- let t = toString(bq.caller)
580- let bK = aU(t)
581- let aS = bK._1
582- let aT = bK._2
583- let bf = [if ((aS > 0))
544+@Callable(bu)
545+func setForceOutStopFlag (bT) = {
546+ let bO = [if (aa(toString(bu.caller)))
584547 then true
585- else c("nothing to claim")]
586- if ((bf == bf))
587- then bl(t, aS)
548+ else e("caller is not in adminList")]
549+ if ((bO == bO))
550+ then [BooleanEntry(i, bT)]
588551 else throw("Strict value is not equal to itself.")
589552 }
590553
591554
592555
593-@Callable(bq)
594-func stakeFor (t) = bp(t, bq)
556+@Callable(bu)
557+func getNodeDataREADONLY (t) = {
558+ let bU = aG(t)
559+ let bV = bU._1
560+ let aE = bU._2
561+ $Tuple2(nil, $Tuple5(q, bV, r, aE, height))
562+ }
595563
596564
597565
598-@Callable(bq)
599-func voteForTxId (L) = {
600- let as = toBase58String(bq.caller.bytes)
601- let ab = K(L)
602- let Z = [StringEntry(Q(), L)]
603- let bL = getString(this, Q())
604- let aw = [if ((size(fromBase58String(L)) == J))
566+@Callable(bu)
567+func getUserLeasingDataREADONLY (t,v) = {
568+ let bW = aR(t, v)
569+ let bV = bW._1
570+ let aE = bW._2
571+ $Tuple2(nil, $Tuple5(q, bV, r, aE, height))
572+ }
573+
574+
575+
576+@Callable(bu)
577+func getUserDataREADONLY (v) = {
578+ let bX = aY(v)
579+ let aW = bX._1
580+ let aX = bX._2
581+ let bd = be(v)
582+ $Tuple2(nil, $Tuple6(q, aW, r, aX, bd, height))
583+ }
584+
585+
586+
587+@Callable(bu)
588+func leaseByAddress (t,v) = bL(t, v, bu)
589+
590+
591+
592+@Callable(bu)
593+func lease (t) = {
594+ let v = toString(bu.caller)
595+ bL(t, v, bu)
596+ }
597+
598+
599+
600+@Callable(bu)
601+func leaseFromLocked (t,bY) = {
602+ let v = toString(bu.caller)
603+ bD(t, v, bY, bu)
604+ }
605+
606+
607+
608+@Callable(bu)
609+func cancelLease (t,bY) = {
610+ let v = toString(bu.caller)
611+ bf(t, v, bY)
612+ }
613+
614+
615+
616+@Callable(bu)
617+func claim (bY) = {
618+ let v = toString(bu.caller)
619+ bp(v, bY)
620+ }
621+
622+
623+
624+@Callable(bu)
625+func claimAll () = {
626+ let v = toString(bu.caller)
627+ let bZ = aY(v)
628+ let aW = bZ._1
629+ let aX = bZ._2
630+ let bj = [if ((aW > 0))
605631 then true
606- else c((L + " is not valid txId")), if (if ((bL == unit))
607- then true
608- else (value(bL) != L))
609- then true
610- else c((L + " is already allowed"))]
611- if ((aw == aw))
612- then ar(as, ab, I, Z)
632+ else e("nothing to claim")]
633+ if ((bj == bj))
634+ then bp(v, aW)
613635 else throw("Strict value is not equal to itself.")
614636 }
615637
616638
617-@Verifier(bM)
618-func bN () = {
619- let bO = (bM.id == fromBase58String(valueOrElse(getString(this, Q()), "")))
620- let bP = if ((size(U()) >= I))
639+
640+@Callable(bu)
641+func stakeFor (v) = bt(v, bu)
642+
643+
644+
645+@Callable(bu)
646+func voteForTxId (P) = {
647+ let aw = toBase58String(bu.caller.bytes)
648+ let af = O(P)
649+ let ad = [StringEntry(U(), P)]
650+ let ca = getString(this, U())
651+ let aA = [if ((size(fromBase58String(P)) == N))
652+ then true
653+ else e((P + " is not valid txId")), if (if ((ca == unit))
654+ then true
655+ else (value(ca) != P))
656+ then true
657+ else e((P + " is already allowed"))]
658+ if ((aA == aA))
659+ then av(aw, af, M, ad)
660+ else throw("Strict value is not equal to itself.")
661+ }
662+
663+
664+@Verifier(cb)
665+func cc () = {
666+ let cd = (cb.id == fromBase58String(valueOrElse(getString(this, U()), "")))
667+ let ce = if ((size(Y()) >= M))
621668 then false
622- else sigVerify(bM.bodyBytes, bM.proofs[0], bM.senderPublicKey)
623- if (bO)
669+ else sigVerify(cb.bodyBytes, cb.proofs[0], cb.senderPublicKey)
670+ if (cd)
624671 then true
625- else bP
672+ else ce
626673 }
627674

github/deemru/w8io/169f3d6 
237.23 ms