tx · GZ1YEFBLNaR9ZxAVnGKBtn6mgMyfRyEhKnJD6W8pAN6U

3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h:  -0.02700000 Waves

2024.10.22 09:34 [3337678] smart account 3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h > SELF 0.00000000 Waves

{ "type": 13, "id": "GZ1YEFBLNaR9ZxAVnGKBtn6mgMyfRyEhKnJD6W8pAN6U", "fee": 2700000, "feeAssetId": null, "timestamp": 1729578955886, "version": 1, "sender": "3NCWFHDzdPHZC6636ZkMLNDup9mjpbTLs7h", "senderPublicKey": "3z8Q6Zu3KppVmn6fJJvrLc1Wo3krVHSvfaNcerm82md2", "proofs": [ "5scutUHzJSYNQusZuNDQqhNNt1FzMwxN4Cu1FHpxibztZGzRH3ipDo9hdeQqU7uzkGvhSBJPQmHeZbryhRj2K2Z6" ], "script": "base64:BgJQCAISAwoBARIAEgMKAQQSAwoBBBIDCgEIEgQKAggIEgMKAQgSBAoCCAgSAwoBCBIECgIIARIECgIIARIDCgEBEgASAwoBCBIDCgEBEgMKAQhPAAxjb250cmFjdEZpbGUCEWwybXBfbGVhc2luZy5yaWRlAANTRVACAl9fABJCTE9DS1NfSU5fSU5URVJWQUwA6AcABnNjYWxlOACAwtcvAAdzY2FsZTE2CQBoAgUGc2NhbGU4BQZzY2FsZTgBCHRocm93RXJyAQNtc2cJAAIBCQCsAgIJAKwCAgUMY29udHJhY3RGaWxlAgI6IAUDbXNnAAxrZXlMMkFzc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAgdhc3NldElkBQNuaWwFA1NFUAAMa2V5Rm9yY2VTdG9wCQC5CQIJAMwIAgICJXMJAMwIAgIJZm9yY2VTdG9wBQNuaWwFA1NFUAAPa2V5Rm9yY2VPdXRTdG9wCQC5CQIJAMwIAgICJXMJAMwIAgIMZm9yY2VPdXRTdG9wBQNuaWwFA1NFUAAPa2V5VW5pdHNBc3NldElkCQC5CQIJAMwIAgICJXMJAMwIAgIMdW5pdHNBc3NldElkBQNuaWwFA1NFUAAXa2V5VW5pdHNQZXJCbG9ja1NjYWxlMTYJALkJAgkAzAgCAgIlcwkAzAgCAhR1bml0c1BlckJsb2NrU2NhbGUxNgUDbmlsBQNTRVAAEWtleVBlcmlvZE9mZnNldElkCQC5CQIJAMwIAgICJXMJAMwIAgIIb2Zmc2V0SWQFA25pbAUDU0VQABVrZXlQZXJpb2RPZmZzZXRIZWlnaHQJALkJAgkAzAgCAgIlcwkAzAgCAgxvZmZzZXRIZWlnaHQFA25pbAUDU0VQAA9rZXlQZXJpb2RMZW5ndGgJALkJAgkAzAgCAgIlcwkAzAgCAgxwZXJpb2RMZW5ndGgFA25pbAUDU0VQABhrZXlVbml0c0NsYWltU3RhcnRIZWlnaHQJALkJAgkAzAgCAgIlcwkAzAgCAhV1bml0c0NsYWltU3RhcnRIZWlnaHQFA25pbAUDU0VQABVrZXlVbml0c0NsYWltSW50ZXJ2YWwJALkJAgkAzAgCAgIlcwkAzAgCAhJ1bml0c0NsYWltSW50ZXJ2YWwFA25pbAUDU0VQAA5wZXJpb2RPZmZzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBRFrZXlQZXJpb2RPZmZzZXRJZAAAAAxwZXJpb2RMZW5ndGgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUPa2V5UGVyaW9kTGVuZ3RoAJBOABJwZXJpb2RPZmZzZXRIZWlnaHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUVa2V5UGVyaW9kT2Zmc2V0SGVpZ2h0AP///////////wEAD2N1cnJlbnRQZXJpb2RJZAMDCQBmAgUGaGVpZ2h0BRJwZXJpb2RPZmZzZXRIZWlnaHQJAQIhPQIFEnBlcmlvZE9mZnNldEhlaWdodAD///////////8BBwkAZAIJAGkCCQBlAgUGaGVpZ2h0BRJwZXJpb2RPZmZzZXRIZWlnaHQFDHBlcmlvZExlbmd0aAUOcGVyaW9kT2Zmc2V0SWQJAJYDAQkAzAgCAAAJAMwIAgkAZQIFDnBlcmlvZE9mZnNldElkAAEFA25pbAATY3VycmVudFBlcmlvZEhlaWdodAMDCQAAAgUScGVyaW9kT2Zmc2V0SGVpZ2h0AP///////////wEGAwkAAAIFD2N1cnJlbnRQZXJpb2RJZAAACQBmAgUScGVyaW9kT2Zmc2V0SGVpZ2h0BQZoZWlnaHQHAAAJAGQCBRJwZXJpb2RPZmZzZXRIZWlnaHQJAGgCCQBlAgUPY3VycmVudFBlcmlvZElkBQ5wZXJpb2RPZmZzZXRJZAUMcGVyaW9kTGVuZ3RoABBuZXh0UGVyaW9kSGVpZ2h0AwMJAAACBRJwZXJpb2RPZmZzZXRIZWlnaHQA////////////AQYDCQAAAgUPY3VycmVudFBlcmlvZElkAAAJAGYCBRJwZXJpb2RPZmZzZXRIZWlnaHQFBmhlaWdodAcAAAkAZAIFE2N1cnJlbnRQZXJpb2RIZWlnaHQFDHBlcmlvZExlbmd0aAAVdW5pdHNDbGFpbVN0YXJ0SGVpZ2h0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFGGtleVVuaXRzQ2xhaW1TdGFydEhlaWdodAUGaGVpZ2h0ABJ1bml0c0NsYWltSW50ZXJ2YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUVa2V5VW5pdHNDbGFpbUludGVydmFsAAABEmtleUxlYXNpbmdOb2RlRGF0YQELbm9kZUFkZHJlc3MJALkJAgkAzAgCAgIlcwkAzAgCBQtub2RlQWRkcmVzcwUDbmlsBQNTRVABFmtleVVzZXJMZWFzaW5nTm9kZURhdGECC3VzZXJBZGRyZXNzC25vZGVBZGRyZXNzCQC5CQIJAMwIAgIEJXMlcwkAzAgCBQtub2RlQWRkcmVzcwkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABDmtleVVzZXJUb0NsYWltAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIHdG9DbGFpbQkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABEmtleVVzZXJUb3RhbExvY2tlZAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICD3VzZXJUb3RhbExvY2tlZAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABFGtleVVuaXRzQ2xhaW1lZEJsb2NrAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIRdW5pdHNDbGFpbWVkQmxvY2sJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARBrZXlVbmxvY2tlZFVuaXRzAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgINdW5sb2NrZWRVbml0cwkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABFGtleVRvdGFsVW5pdHNDbGFpbWVkAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIRdG90YWxVbml0c0NsYWltZWQJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQAQtrZXlMMlRvQnVybgELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICCGwyVG9CdXJuCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA1NFUAEQa2V5TDJCdXJuZWRUb3RhbAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICDWwyQnVybmVkVG90YWwJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARZrZXlOb2RlTGVhc2luZ0J5SGVpZ2h0AQtub2RlQWRkcmVzcwQBaAMJAAACBRJwZXJpb2RPZmZzZXRIZWlnaHQA////////////AQAABQZoZWlnaHQJALkJAgkAzAgCAgQlcyVkCQDMCAIFC25vZGVBZGRyZXNzCQDMCAIJAKQDAQUBaAUDbmlsBQNTRVABFmtleVVzZXJMZWFzaW5nQnlIZWlnaHQCC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzBAFoAwkAAAIFEnBlcmlvZE9mZnNldEhlaWdodAD///////////8BAAAFBmhlaWdodAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCBQtub2RlQWRkcmVzcwkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCCQCkAwEFAWgFA25pbAUDU0VQARJhc3NldFN0cmluZ1RvQnl0ZXMBDWFzc2V0SWRTdHJpbmcDCQAAAgUNYXNzZXRJZFN0cmluZwIFV0FWRVMFBHVuaXQJANkEAQUNYXNzZXRJZFN0cmluZwESYXNzZXRCeXRlc1RvU3RyaW5nAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWEFByRtYXRjaDAJANgEAQUBYQIFV0FWRVMAD2wyQXNzZXRJZFN0cmluZwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQxrZXlMMkFzc2V0SWQCBVdBVkVTABJ1bml0c0Fzc2V0SWRTdHJpbmcJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUPa2V5VW5pdHNBc3NldElkAgVXQVZFUwAObDJBc3NldElkQnl0ZXMJARJhc3NldFN0cmluZ1RvQnl0ZXMBBQ9sMkFzc2V0SWRTdHJpbmcAEXVuaXRzQXNzZXRJZEJ5dGVzCQESYXNzZXRTdHJpbmdUb0J5dGVzAQUSdW5pdHNBc3NldElkU3RyaW5nAAtpc0ZvcmNlU3RvcAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQxrZXlGb3JjZVN0b3AHAA5pc0ZvcmNlT3V0U3RvcAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ9rZXlGb3JjZU91dFN0b3AHAQ5pc1ZhbGlkQWRkcmVzcwEHYWRkcmVzcwQHJG1hdGNoMAkApggBBQdhZGRyZXNzAwkAAQIFByRtYXRjaDACB0FkZHJlc3MEAWEFByRtYXRjaDAGBwAPQURNSU5fTElTVF9TSVpFAAUABlFVT1JVTQADABFUWElEX0JZVEVTX0xFTkdUSAAgARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBHR4SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIJYWxsb3dUeElkCQDMCAIFBHR4SWQFA25pbAUDU0VQARBrZXlGdWxsQWRtaW5Wb3RlAgZwcmVmaXgMYWRtaW5BZGRyZXNzCQC5CQIJAMwIAgUGcHJlZml4CQDMCAIFDGFkbWluQWRkcmVzcwUDbmlsBQNTRVABE2tleUFkbWluQWRkcmVzc0xpc3QACQC5CQIJAMwIAgICJXMJAMwIAgIQYWRtaW5BZGRyZXNzTGlzdAUDbmlsBQNTRVABDmtleUFsbG93ZWRUeElkAAkAuQkCCQDMCAICAiVzCQDMCAICBHR4SWQFA25pbAUDU0VQAQxnZXRBZG1pblZvdGUCBnByZWZpeAVhZG1pbgQHdm90ZUtleQkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEFB3ZvdGVLZXkAAAENZ2V0QWRtaW5zTGlzdAAEByRtYXRjaDAJAJ0IAgUEdGhpcwkBE2tleUFkbWluQWRkcmVzc0xpc3QAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAtQkCBQFzBQNTRVAFA25pbAENaXNJbkFkbWluTGlzdAEHYWRkcmVzcwkBD2NvbnRhaW5zRWxlbWVudAIJAQ1nZXRBZG1pbnNMaXN0AAUHYWRkcmVzcwESZ2VuVm90ZXNLZXlzSGVscGVyAgFhDGFkbWluQWRkcmVzcwQLJHQwNTE4NTUyMDkFAWEEBnJlc3VsdAgFCyR0MDUxODU1MjA5Al8xBAZwcmVmaXgIBQskdDA1MTg1NTIwOQJfMgkAlAoCCQDNCAIFBnJlc3VsdAkBEGtleUZ1bGxBZG1pblZvdGUCBQZwcmVmaXgFDGFkbWluQWRkcmVzcwUGcHJlZml4AQxnZW5Wb3Rlc0tleXMBCWtleVByZWZpeAQJYWRtaW5MaXN0CQETa2V5QWRtaW5BZGRyZXNzTGlzdAAECyR0MDUzNTY1NDQwCgACJGwJAQ1nZXRBZG1pbnNMaXN0AAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQlrZXlQcmVmaXgKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEmdlblZvdGVzS2V5c0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUEBnJlc3VsdAgFCyR0MDUzNTY1NDQwAl8xBAZwcmVmaXgIBQskdDA1MzU2NTQ0MAJfMgUGcmVzdWx0ARBjb3VudFZvdGVzSGVscGVyAgZyZXN1bHQHdm90ZUtleQkAZAIFBnJlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQd2b3RlS2V5AAABCmNvdW50Vm90ZXMBBnByZWZpeAQFdm90ZXMJAQxnZW5Wb3Rlc0tleXMBBQZwcmVmaXgKAAIkbAUFdm90ZXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEGNvdW50Vm90ZXNIZWxwZXICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFARBjbGVhclZvdGVzSGVscGVyAgZyZXN1bHQDa2V5CQDNCAIFBnJlc3VsdAkBC0RlbGV0ZUVudHJ5AQUDa2V5ARNnZXRDbGVhclZvdGVFbnRyaWVzAQZwcmVmaXgEBXZvdGVzCQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4CgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjbGVhclZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQEMdm90ZUlOVEVSTkFMBBNjYWxsZXJBZGRyZXNzU3RyaW5nCWtleVByZWZpeAhtaW5Wb3Rlcwp2b3RlUmVzdWx0BAd2b3RlS2V5CQEQa2V5RnVsbEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQQYWRtaW5DdXJyZW50Vm90ZQkBDGdldEFkbWluVm90ZQIFCWtleVByZWZpeAUTY2FsbGVyQWRkcmVzc1N0cmluZwQDZXJyAwkBASEBCQENaXNJbkFkbWluTGlzdAEFE2NhbGxlckFkZHJlc3NTdHJpbmcJAQh0aHJvd0VycgEJAKwCAgkArAICAglBZGRyZXNzOiAFE2NhbGxlckFkZHJlc3NTdHJpbmcCEiBub3QgaW4gQWRtaW4gbGlzdAMJAAACBRBhZG1pbkN1cnJlbnRWb3RlAAEJAQh0aHJvd0VycgEJAKwCAgUHdm90ZUtleQISIHlvdSBhbHJlYWR5IHZvdGVkBQR1bml0AwkAAAIFA2VycgUDZXJyBAV2b3RlcwkBCmNvdW50Vm90ZXMBBQlrZXlQcmVmaXgDCQBnAgkAZAIFBXZvdGVzAAEFCG1pblZvdGVzBBBjbGVhclZvdGVFbnRyaWVzCQETZ2V0Q2xlYXJWb3RlRW50cmllcwEFCWtleVByZWZpeAkAzggCBRBjbGVhclZvdGVFbnRyaWVzBQp2b3RlUmVzdWx0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd2b3RlS2V5AAEFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgETZ2V0TGVhc2luZ05vZGVFbnRyeQMLbm9kZUFkZHJlc3MNY3VycmVudExlYXNlZApuZXh0TGVhc2VkBAt2YWx1ZVN0cmluZwkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQUTY3VycmVudFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFDWN1cnJlbnRMZWFzZWQJAMwIAgkApAMBBRBuZXh0UGVyaW9kSGVpZ2h0CQDMCAIJAKQDAQUKbmV4dExlYXNlZAUDbmlsBQNTRVAJAQtTdHJpbmdFbnRyeQIJARJrZXlMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwULdmFsdWVTdHJpbmcBEmdldExlYXNpbmdOb2RlRGF0YQELbm9kZUFkZHJlc3MEGGxlYXNpbmdOb2RlRGF0YVN0cmluZ1JhdwkAnQgCBQR0aGlzCQESa2V5TGVhc2luZ05vZGVEYXRhAQULbm9kZUFkZHJlc3MEByRtYXRjaDAFGGxlYXNpbmdOb2RlRGF0YVN0cmluZ1JhdwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAmRzBQckbWF0Y2gwBAhkYXRhTGlzdAkAtQkCBQJkcwUDU0VQBBFub2RlQ3VycmVudFBlcmlvZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAEEEW5vZGVDdXJyZW50TGVhc2VkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAgQObm9kZU5leHRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAADBA5ub2RlTmV4dExlYXNlZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAQDAwkAZgIFDm5vZGVOZXh0UGVyaW9kBQZoZWlnaHQGCQAAAgUScGVyaW9kT2Zmc2V0SGVpZ2h0AP///////////wEJAJQKAgURbm9kZUN1cnJlbnRMZWFzZWQFDm5vZGVOZXh0TGVhc2VkCQCUCgIFDm5vZGVOZXh0TGVhc2VkBQ5ub2RlTmV4dExlYXNlZAkAlAoCAAAAAAETZ2V0VXNlckxlYXNpbmdFbnRyeQQLbm9kZUFkZHJlc3MLdXNlckFkZHJlc3MRdXNlckN1cnJlbnRMZWFzZWQOdXNlck5leHRMZWFzZWQEC3ZhbHVlU3RyaW5nCQC5CQIJAMwIAgIIJWQlZCVkJWQJAMwIAgkApAMBBRNjdXJyZW50UGVyaW9kSGVpZ2h0CQDMCAIJAKQDAQURdXNlckN1cnJlbnRMZWFzZWQJAMwIAgkApAMBBRBuZXh0UGVyaW9kSGVpZ2h0CQDMCAIJAKQDAQUOdXNlck5leHRMZWFzZWQFA25pbAUDU0VQCQELU3RyaW5nRW50cnkCCQEWa2V5VXNlckxlYXNpbmdOb2RlRGF0YQIFC3VzZXJBZGRyZXNzBQtub2RlQWRkcmVzcwULdmFsdWVTdHJpbmcBEmdldFVzZXJMZWFzaW5nRGF0YQILbm9kZUFkZHJlc3MLdXNlckFkZHJlc3MEGGxlYXNpbmdVc2VyRGF0YVN0cmluZ1JhdwkAnQgCBQR0aGlzCQEWa2V5VXNlckxlYXNpbmdOb2RlRGF0YQIFC3VzZXJBZGRyZXNzBQtub2RlQWRkcmVzcwQHJG1hdGNoMAUYbGVhc2luZ1VzZXJEYXRhU3RyaW5nUmF3AwkAAQIFByRtYXRjaDACBlN0cmluZwQCZHMFByRtYXRjaDAECGRhdGFMaXN0CQC1CQIFAmRzBQNTRVAEEXVzZXJDdXJyZW50UGVyaW9kCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAQQRdXNlckN1cnJlbnRMZWFzZWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAACBA51c2VyTmV4dFBlcmlvZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAMEDnVzZXJOZXh0TGVhc2VkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QABAMDCQBmAgUOdXNlck5leHRQZXJpb2QFBmhlaWdodAYJAAACBRJwZXJpb2RPZmZzZXRIZWlnaHQA////////////AQkAlAoCBRF1c2VyQ3VycmVudExlYXNlZAUOdXNlck5leHRMZWFzZWQJAJQKAgUOdXNlck5leHRMZWFzZWQFDnVzZXJOZXh0TGVhc2VkCQCUCgIAAAAAARNnZXRVc2VyVG9DbGFpbUVudHJ5Awt1c2VyQWRkcmVzcwd0b0NsYWltCHRvVW5sb2NrBAt2YWx1ZVN0cmluZwkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQUTY3VycmVudFBlcmlvZEhlaWdodAkAzAgCCQCkAwEFB3RvQ2xhaW0JAMwIAgkApAMBBRBuZXh0UGVyaW9kSGVpZ2h0CQDMCAIJAKQDAQUIdG9VbmxvY2sFA25pbAUDU0VQCQELU3RyaW5nRW50cnkCCQEOa2V5VXNlclRvQ2xhaW0BBQt1c2VyQWRkcmVzcwULdmFsdWVTdHJpbmcBFWdldFVzZXJUb0NsYWltQmFsYW5jZQELdXNlckFkZHJlc3MEGHVzZXJUb0NsYWltRGF0YVN0cmluZ1JhdwkAnQgCBQR0aGlzCQEOa2V5VXNlclRvQ2xhaW0BBQt1c2VyQWRkcmVzcwQHJG1hdGNoMAUYdXNlclRvQ2xhaW1EYXRhU3RyaW5nUmF3AwkAAQIFByRtYXRjaDACBlN0cmluZwQCZHMFByRtYXRjaDAECGRhdGFMaXN0CQC1CQIFAmRzBQNTRVAEDWN1cnJlbnRQZXJpb2QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQhkYXRhTGlzdAABBAd0b0NsYWltCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QAAgQKbmV4dFBlcmlvZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCGRhdGFMaXN0AAMECHRvVW5sb2NrCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUIZGF0YUxpc3QABAMDCQBmAgUKbmV4dFBlcmlvZAUGaGVpZ2h0BgkAAAIFD2N1cnJlbnRQZXJpb2RJZAAACQCUCgIFB3RvQ2xhaW0FCHRvVW5sb2NrCQCUCgIJAGQCBQd0b0NsYWltBQh0b1VubG9jawAACQCUCgIAAAAAARdnZXRVc2VyVG90YWxMb2NrZWRFbnRyeQILdXNlckFkZHJlc3MPdXNlclRvdGFsTG9ja2VkCQEMSW50ZWdlckVudHJ5AgkBEmtleVVzZXJUb3RhbExvY2tlZAEFC3VzZXJBZGRyZXNzBQ91c2VyVG90YWxMb2NrZWQBEmdldFVzZXJUb3RhbExvY2tlZAELdXNlckFkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBEmtleVVzZXJUb3RhbExvY2tlZAEFC3VzZXJBZGRyZXNzAAABFWNhbGN1bGF0ZVVuaXRzVG9DbGFpbQELdXNlckFkZHJlc3MED2NsYWltZWRCbG9ja0tleQkBFGtleVVuaXRzQ2xhaW1lZEJsb2NrAQULdXNlckFkZHJlc3MEDGNsYWltZWRCbG9jawkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ9jbGFpbWVkQmxvY2tLZXkFFXVuaXRzQ2xhaW1TdGFydEhlaWdodAQUdW5pdHNQZXJCbG9ja1NjYWxlMTYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUXa2V5VW5pdHNQZXJCbG9ja1NjYWxlMTYAAAQMY3VycmVudEJsb2NrCQCXAwEJAMwIAgkAZAIFFXVuaXRzQ2xhaW1TdGFydEhlaWdodAUSdW5pdHNDbGFpbUludGVydmFsCQDMCAIFBmhlaWdodAUDbmlsBAxibG9ja3NQYXNzZWQJAGUCBQxjdXJyZW50QmxvY2sFDGNsYWltZWRCbG9jawQMYW1vdW50U3Rha2VkCQESZ2V0VXNlclRvdGFsTG9ja2VkAQULdXNlckFkZHJlc3MECGwyVG9CdXJuCQBrAwUMYW1vdW50U3Rha2VkBQxibG9ja3NQYXNzZWQFEnVuaXRzQ2xhaW1JbnRlcnZhbAQPdW5pdHNUb0NsYWltTm93CQBrAwUMYW1vdW50U3Rha2VkCQBoAgUUdW5pdHNQZXJCbG9ja1NjYWxlMTYFDGJsb2Nrc1Bhc3NlZAUHc2NhbGUxNgkAlgoEBQ91bml0c1RvQ2xhaW1Ob3cFCGwyVG9CdXJuBQxjdXJyZW50QmxvY2sJAJUKAwUMYmxvY2tzUGFzc2VkBRV1bml0c0NsYWltU3RhcnRIZWlnaHQFEnVuaXRzQ2xhaW1JbnRlcnZhbAEUZ2V0VW5sb2NrVW5pdHNBY3Rpb24BC3VzZXJBZGRyZXNzBA5rVW5sb2NrZWRVbml0cwkBEGtleVVubG9ja2VkVW5pdHMBBQt1c2VyQWRkcmVzcwQNdW5sb2NrZWRVbml0cwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ5rVW5sb2NrZWRVbml0cwAABAlrTDJUb0J1cm4JAQtrZXlMMlRvQnVybgEFC3VzZXJBZGRyZXNzBAhsMlRvQnVybgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQlrTDJUb0J1cm4AAAQNJHQwMTE0NDAxMTUzMQkBFWNhbGN1bGF0ZVVuaXRzVG9DbGFpbQEFC3VzZXJBZGRyZXNzBA91bml0c1RvQ2xhaW1Ob3cIBQ0kdDAxMTQ0MDExNTMxAl8xBAtsMlRvQnVybk5vdwgFDSR0MDExNDQwMTE1MzECXzIEDGN1cnJlbnRCbG9jawgFDSR0MDExNDQwMTE1MzECXzMEBF90bXAIBQ0kdDAxMTQ0MDExNTMxAl80AwkAZwIAAAUPdW5pdHNUb0NsYWltTm93BQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlVbml0c0NsYWltZWRCbG9jawEFC3VzZXJBZGRyZXNzBQxjdXJyZW50QmxvY2sJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtMMlRvQnVybgkAZAIFCGwyVG9CdXJuBQtsMlRvQnVybk5vdwkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa1VubG9ja2VkVW5pdHMJAGQCBQ11bmxvY2tlZFVuaXRzBQ91bml0c1RvQ2xhaW1Ob3cFA25pbAERZ2V0VW5zdGFrZUFjdGlvbnMDC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzDXVuc3Rha2VBbW91bnQEDSR0MDExOTI2MTE5OTkJARJnZXRMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwQRbm9kZUN1cnJlbnRMZWFzZWQIBQ0kdDAxMTkyNjExOTk5Al8xBA5ub2RlTmV4dExlYXNlZAgFDSR0MDExOTI2MTE5OTkCXzIEDSR0MDEyMDA0MTIwOTAJARJnZXRVc2VyTGVhc2luZ0RhdGECBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MEEXVzZXJDdXJyZW50TGVhc2VkCAUNJHQwMTIwMDQxMjA5MAJfMQQOdXNlck5leHRMZWFzZWQIBQ0kdDAxMjAwNDEyMDkwAl8yBAZjaGVja3MJAMwIAgMJAQEhAQULaXNGb3JjZVN0b3AGCQEIdGhyb3dFcnIBAh1jb250cmFjdCBpcyB0ZW1wb3Jhcnkgc3RvcHBlZAkAzAgCAwkBASEBBQ5pc0ZvcmNlT3V0U3RvcAYJAQh0aHJvd0VycgECHXVuc3Rha2UgaXMgdGVtcG9yYXJ5IGRpc2FibGVkCQDMCAIDCQBmAgUNdW5zdGFrZUFtb3VudAAABgkBCHRocm93RXJyAQIndW5zdGFrZSBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIDCQBnAgUOdXNlck5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQGCQEIdGhyb3dFcnIBAjl1bnN0YWtlIGFtb3VudCBzaG91bGQgYmUgbGVzcyBvciBlcXVhbCB1c2VyIHN0YWtlZCBhbW91bnQJAMwIAgMJAGcCBQ5ub2RlTmV4dExlYXNlZAUNdW5zdGFrZUFtb3VudAYJAQh0aHJvd0VycgECOXVuc3Rha2UgYW1vdW50IHNob3VsZCBiZSBsZXNzIG9yIGVxdWFsIG5vZGUgc3Rha2VkIGFtb3VudAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULbm9kZUFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIabm9kZSBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULbm9kZUFkZHJlc3MFA25pbAIBIAkAzAgCAwkBDmlzVmFsaWRBZGRyZXNzAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIadXNlciBhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBBBuZXdOb2RlTmV4dExlYXNlCQBlAgUObm9kZU5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQEEW5ld1VzZXJOZXh0TGVhc2VkCQBlAgUOdXNlck5leHRMZWFzZWQFDXVuc3Rha2VBbW91bnQEDSR0MDEyOTc0MTMwMzQJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFDSR0MDEyOTc0MTMwMzQCXzEECHRvVW5sb2NrCAUNJHQwMTI5NzQxMzAzNAJfMgQLbmV3VG9VbmxvY2sJAGQCBQh0b1VubG9jawUNdW5zdGFrZUFtb3VudAQPdXNlclRvdGFsTG9ja2VkCQESZ2V0VXNlclRvdGFsTG9ja2VkAQULdXNlckFkZHJlc3MEEm5ld1VzZXJUb3RhbExvY2tlZAkAZQIFD3VzZXJUb3RhbExvY2tlZAUNdW5zdGFrZUFtb3VudAQUdW5pdHNVbmxvY2tlZEFjdGlvbnMJARRnZXRVbmxvY2tVbml0c0FjdGlvbgEFC3VzZXJBZGRyZXNzCQDOCAIJAMwIAgkBE2dldExlYXNpbmdOb2RlRW50cnkDBQtub2RlQWRkcmVzcwURbm9kZUN1cnJlbnRMZWFzZWQFEG5ld05vZGVOZXh0TGVhc2UJAMwIAgkBE2dldFVzZXJMZWFzaW5nRW50cnkEBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFEXVzZXJDdXJyZW50TGVhc2VkBRFuZXdVc2VyTmV4dExlYXNlZAkAzAgCCQETZ2V0VXNlclRvQ2xhaW1FbnRyeQMFC3VzZXJBZGRyZXNzBQd0b0NsYWltBQtuZXdUb1VubG9jawkAzAgCCQEXZ2V0VXNlclRvdGFsTG9ja2VkRW50cnkCBQt1c2VyQWRkcmVzcwUSbmV3VXNlclRvdGFsTG9ja2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5Tm9kZUxlYXNpbmdCeUhlaWdodAEFC25vZGVBZGRyZXNzBRBuZXdOb2RlTmV4dExlYXNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5VXNlckxlYXNpbmdCeUhlaWdodAIFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwURbmV3VXNlck5leHRMZWFzZWQFA25pbAUUdW5pdHNVbmxvY2tlZEFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BF2dldENsYWltVW5sb2NrZWRBY3Rpb25zAgt1c2VyQWRkcmVzcwtjbGFpbUFtb3VudAQNJHQwMTM4NTMxMzkxMwkBFWdldFVzZXJUb0NsYWltQmFsYW5jZQEFC3VzZXJBZGRyZXNzBAd0b0NsYWltCAUNJHQwMTM4NTMxMzkxMwJfMQQIdG9VbmxvY2sIBQ0kdDAxMzg1MzEzOTEzAl8yBAZjaGVja3MJAMwIAgMJAQEhAQULaXNGb3JjZVN0b3AGCQEIdGhyb3dFcnIBAh1jb250cmFjdCBpcyB0ZW1wb3Jhcnkgc3RvcHBlZAkAzAgCAwkBASEBBQ5pc0ZvcmNlT3V0U3RvcAYJAQh0aHJvd0VycgECG2NsYWltIGlzIHRlbXBvcmFyeSBkaXNhYmxlZAkAzAgCAwkAZgIFC2NsYWltQW1vdW50AAAGCQEIdGhyb3dFcnIBAiVjbGFpbSBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIDCQBnAgUHdG9DbGFpbQULY2xhaW1BbW91bnQGCQEIdGhyb3dFcnIBAjRjbGFpbSBhbW91bnQgc2hvdWxkIGJlIGxlc3Mgb3IgZXF1YWwgdW5sb2NrZWQgYW1vdW50CQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQt1c2VyQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhp1c2VyIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsAgEgBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MECm5ld1RvQ2xhaW0JAGUCBQd0b0NsYWltBQtjbGFpbUFtb3VudAkAzAgCCQETZ2V0VXNlclRvQ2xhaW1FbnRyeQMFC3VzZXJBZGRyZXNzBQpuZXdUb0NsYWltBQh0b1VubG9jawkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQt1c2VyQWRkcmVzcwULY2xhaW1BbW91bnQFDmwyQXNzZXRJZEJ5dGVzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEmdldFN0YWtlRm9yQWN0aW9ucwILdXNlckFkZHJlc3MBaQQNJHQwMTQ2NzkxNDczOQkBFWdldFVzZXJUb0NsYWltQmFsYW5jZQEFC3VzZXJBZGRyZXNzBAd0b0NsYWltCAUNJHQwMTQ2NzkxNDczOQJfMQQIdG9VbmxvY2sIBQ0kdDAxNDY3OTE0NzM5Al8yBAZjaGVja3MJAMwIAgMJAQEhAQULaXNGb3JjZVN0b3AGCQEIdGhyb3dFcnIBAh1jb250cmFjdCBpcyB0ZW1wb3Jhcnkgc3RvcHBlZAkAzAgCAwkAZwIAAQkAkAMBCAUBaQhwYXltZW50cwYJAQh0aHJvd0VycgECEW1heGltdW0gMSBwYXltZW50CQDMCAIDAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAYJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFDmwyQXNzZXRJZEJ5dGVzBgkBCHRocm93RXJyAQkAuQkCCQDMCAICGnBheW1lbnQgYXNzZXRJZCBzaG91bGQgYmU6CQDMCAIFD2wyQXNzZXRJZFN0cmluZwUDbmlsAgEgCQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQt1c2VyQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhp1c2VyIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsAgEgBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MECm5ld1RvQ2xhaW0JAGQCBQd0b0NsYWltCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAzAgCCQETZ2V0VXNlclRvQ2xhaW1FbnRyeQMFC3VzZXJBZGRyZXNzBQpuZXdUb0NsYWltBQh0b1VubG9jawUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ9nZXRTdGFrZUFjdGlvbnMEC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzEXVzZXJMZWFzaW5nQW1vdW50AWkEDSR0MDE1NDcxMTU1MzEJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFDSR0MDE1NDcxMTU1MzECXzEECHRvVW5sb2NrCAUNJHQwMTU0NzExNTUzMQJfMgQNcGF5bWVudEFtb3VudAMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAAAAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQECWF2YWlsYWJsZQkAZAIJAGQCBQh0b1VubG9jawUHdG9DbGFpbQUNcGF5bWVudEFtb3VudAQGY2hlY2tzCQDMCAIDCQEBIQEFC2lzRm9yY2VTdG9wBgkBCHRocm93RXJyAQIdY29udHJhY3QgaXMgdGVtcG9yYXJ5IHN0b3BwZWQJAMwIAgMJAGcCAAEJAJADAQgFAWkIcGF5bWVudHMGCQEIdGhyb3dFcnIBAhFtYXhpbXVtIDEgcGF5bWVudAkAzAgCAwMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAGCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQ5sMkFzc2V0SWRCeXRlcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhpwYXltZW50IGFzc2V0SWQgc2hvdWxkIGJlOgkAzAgCBQ9sMkFzc2V0SWRTdHJpbmcFA25pbAIBIAkAzAgCAwkAZgIFEXVzZXJMZWFzaW5nQW1vdW50AAAGCQEIdGhyb3dFcnIBAh9hbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAwCQDMCAIDCQBnAgUJYXZhaWxhYmxlBRF1c2VyTGVhc2luZ0Ftb3VudAYJAQh0aHJvd0VycgECO2Ftb3VudCBzaG91bGQgYmUgbGVzcyBvciBlcXVhbCAocGF5bWVudCArIGF2YWlsYWJsZSkgYW1vdW50CQDMCAIDCQBnAgURdXNlckxlYXNpbmdBbW91bnQFDXBheW1lbnRBbW91bnQGCQACAQIwYW1vdW50IHNob3VsZCBiZSBncmVhdGVyIG9yIGVxdWFsIHBheW1lbnQgYW1vdW50CQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQtub2RlQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhpub2RlIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQtub2RlQWRkcmVzcwUDbmlsAgEgCQDMCAIDCQEOaXNWYWxpZEFkZHJlc3MBBQt1c2VyQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhp1c2VyIGFkZHJlc3MgaXMgbm90IHZhbGlkOgkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsAgEgBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDSR0MDE2NjA2MTY2NzkJARJnZXRMZWFzaW5nTm9kZURhdGEBBQtub2RlQWRkcmVzcwQRbm9kZUN1cnJlbnRMZWFzZWQIBQ0kdDAxNjYwNjE2Njc5Al8xBA5ub2RlTmV4dExlYXNlZAgFDSR0MDE2NjA2MTY2NzkCXzIEEG5ld05vZGVOZXh0TGVhc2UJAGQCBQ5ub2RlTmV4dExlYXNlZAURdXNlckxlYXNpbmdBbW91bnQEDSR0MDE2NzQ3MTY4MzMJARJnZXRVc2VyTGVhc2luZ0RhdGECBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MEEXVzZXJDdXJyZW50TGVhc2VkCAUNJHQwMTY3NDcxNjgzMwJfMQQOdXNlck5leHRMZWFzZWQIBQ0kdDAxNjc0NzE2ODMzAl8yBBFuZXdVc2VyTmV4dExlYXNlZAkAZAIFDnVzZXJOZXh0TGVhc2VkBRF1c2VyTGVhc2luZ0Ftb3VudAQSZnJvbVVubG9ja2VkQW1vdW50CQBlAgURdXNlckxlYXNpbmdBbW91bnQFDXBheW1lbnRBbW91bnQEC25ld1RvVW5sb2NrCQCWAwEJAMwIAgAACQDMCAIJAGUCBQh0b1VubG9jawUSZnJvbVVubG9ja2VkQW1vdW50BQNuaWwECm5ld1RvQ2xhaW0JAJcDAQkAzAgCBQd0b0NsYWltCQDMCAIJAGQCBQd0b0NsYWltCQBlAgUIdG9VbmxvY2sFEmZyb21VbmxvY2tlZEFtb3VudAUDbmlsBA91c2VyVG90YWxMb2NrZWQJARJnZXRVc2VyVG90YWxMb2NrZWQBBQt1c2VyQWRkcmVzcwQSbmV3VXNlclRvdGFsTG9ja2VkCQBkAgUPdXNlclRvdGFsTG9ja2VkBRF1c2VyTGVhc2luZ0Ftb3VudAQUdW5pdHNVbmxvY2tlZEFjdGlvbnMJARRnZXRVbmxvY2tVbml0c0FjdGlvbgEFC3VzZXJBZGRyZXNzCQDOCAIJAMwIAgkBE2dldExlYXNpbmdOb2RlRW50cnkDBQtub2RlQWRkcmVzcwURbm9kZUN1cnJlbnRMZWFzZWQFEG5ld05vZGVOZXh0TGVhc2UJAMwIAgkBE2dldFVzZXJMZWFzaW5nRW50cnkEBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFEXVzZXJDdXJyZW50TGVhc2VkBRFuZXdVc2VyTmV4dExlYXNlZAkAzAgCCQETZ2V0VXNlclRvQ2xhaW1FbnRyeQMFC3VzZXJBZGRyZXNzBQpuZXdUb0NsYWltBQtuZXdUb1VubG9jawkAzAgCCQEXZ2V0VXNlclRvdGFsTG9ja2VkRW50cnkCBQt1c2VyQWRkcmVzcwUSbmV3VXNlclRvdGFsTG9ja2VkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5Tm9kZUxlYXNpbmdCeUhlaWdodAEFC25vZGVBZGRyZXNzBRBuZXdOb2RlTmV4dExlYXNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5VXNlckxlYXNpbmdCeUhlaWdodAIFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwURbmV3VXNlck5leHRMZWFzZWQFA25pbAUUdW5pdHNVbmxvY2tlZEFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BGmdldFN0YWtlRnJvbVBheW1lbnRBY3Rpb25zAwtub2RlQWRkcmVzcwt1c2VyQWRkcmVzcwFpBAZjaGVja3MJAMwIAgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAEGCQEIdGhyb3dFcnIBAiBwYXltZW50IHNpemUgc2hvdWxkIGJlIGV4YWN0bHkgMQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQEPZ2V0U3Rha2VBY3Rpb25zBAULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUBaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEcZ2V0U2V0TmV3UGVyaW9kTGVuZ3RoQWN0aW9ucwEPbmV3UGVyaW9kTGVuZ3RoBAVjaGVjawkAzAgCAwkAZgIFD25ld1BlcmlvZExlbmd0aAAABgkBCHRocm93RXJyAQImcGVyaW9kIGxlbmd0aCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDAFA25pbAMJAAACBQVjaGVjawUFY2hlY2sDCQAAAgUScGVyaW9kT2Zmc2V0SGVpZ2h0AP///////////wEJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tleVBlcmlvZExlbmd0aAUPbmV3UGVyaW9kTGVuZ3RoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrZXlQZXJpb2RPZmZzZXRIZWlnaHQFBmhlaWdodAUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrZXlQZXJpb2RPZmZzZXRJZAkAZAIFD2N1cnJlbnRQZXJpb2RJZAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrZXlQZXJpb2RPZmZzZXRIZWlnaHQFEG5leHRQZXJpb2RIZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tleVBlcmlvZExlbmd0aAUPbmV3UGVyaW9kTGVuZ3RoBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEWdldFVuaXRzQ2xhaW1EYXRhAQt1c2VyQWRkcmVzcwQNJHQwMTg3MTgxODgwOQkBFWNhbGN1bGF0ZVVuaXRzVG9DbGFpbQEFC3VzZXJBZGRyZXNzBA91bmxvY2tlZFVuaXROb3cIBQ0kdDAxODcxODE4ODA5Al8xBAtsMlRvQnVybk5vdwgFDSR0MDE4NzE4MTg4MDkCXzIEDGN1cnJlbnRCbG9jawgFDSR0MDE4NzE4MTg4MDkCXzMEBF90bXAIBQ0kdDAxODcxODE4ODA5Al80BBF1bmxvY2tlZFVuaXRzUHJldgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEQa2V5VW5sb2NrZWRVbml0cwEFC3VzZXJBZGRyZXNzAAAEC3VuaXRzVG9TZW5kCQBkAgUPdW5sb2NrZWRVbml0Tm93BRF1bmxvY2tlZFVuaXRzUHJldgQMbDJUb0J1cm5QcmV2CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQtrZXlMMlRvQnVybgEFC3VzZXJBZGRyZXNzAAAECGwyVG9CdXJuCQBkAgUMbDJUb0J1cm5QcmV2BQtsMlRvQnVybk5vdwQRdG90YWxVbml0c0NsYWltZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBFGtleVRvdGFsVW5pdHNDbGFpbWVkAQULdXNlckFkZHJlc3MAAAQNdG90YWxMMkJ1cm5lZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEQa2V5TDJCdXJuZWRUb3RhbAEFC3VzZXJBZGRyZXNzAAAJAJcKBQULdW5pdHNUb1NlbmQFEXRvdGFsVW5pdHNDbGFpbWVkBQhsMlRvQnVybgUNdG90YWxMMkJ1cm5lZAUMY3VycmVudEJsb2NrARRnZXRDbGFpbVVuaXRzQWN0aW9ucwELdXNlckFkZHJlc3MEDSR0MDE5NDAxMTk1MDkJARFnZXRVbml0c0NsYWltRGF0YQEFC3VzZXJBZGRyZXNzBAt1bml0c1RvU2VuZAgFDSR0MDE5NDAxMTk1MDkCXzEEEXRvdGFsVW5pdHNDbGFpbWVkCAUNJHQwMTk0MDExOTUwOQJfMgQIbDJUb0J1cm4IBQ0kdDAxOTQwMTE5NTA5Al8zBA10b3RhbEwyQnVybmVkCAUNJHQwMTk0MDExOTUwOQJfNAQMY2xhaW1lZEJsb2NrCAUNJHQwMTk0MDExOTUwOQJfNQQFY2hlY2sJAMwIAgMJAGYCBQt1bml0c1RvU2VuZAAABgkBCHRocm93RXJyAQIQbm90aGluZyB0byBjbGFpbQUDbmlsAwkAAAIFBWNoZWNrBQVjaGVjawQKYnVybkFjdGlvbgQHJG1hdGNoMAUObDJBc3NldElkQnl0ZXMDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCaWQFByRtYXRjaDAJAMwIAgkBBEJ1cm4CBQJpZAUIbDJUb0J1cm4FA25pbAUDbmlsCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlVbml0c0NsYWltZWRCbG9jawEFC3VzZXJBZGRyZXNzBQxjbGFpbWVkQmxvY2sJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlUb3RhbFVuaXRzQ2xhaW1lZAEFC3VzZXJBZGRyZXNzCQBkAgURdG90YWxVbml0c0NsYWltZWQFC3VuaXRzVG9TZW5kCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEQa2V5TDJCdXJuZWRUb3RhbAEFC3VzZXJBZGRyZXNzCQBkAgUNdG90YWxMMkJ1cm5lZAUIbDJUb0J1cm4JAMwIAgkBDEludGVnZXJFbnRyeQIJARBrZXlVbmxvY2tlZFVuaXRzAQULdXNlckFkZHJlc3MAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBC2tleUwyVG9CdXJuAQULdXNlckFkZHJlc3MAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQt1c2VyQWRkcmVzcwULdW5pdHNUb1NlbmQFEXVuaXRzQXNzZXRJZEJ5dGVzBQNuaWwFCmJ1cm5BY3Rpb24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4QAWkBEnNldE5ld1BlcmlvZExlbmd0aAEPbmV3UGVyaW9kTGVuZ3RoBAZjaGVja3MJAMwIAgMJAQ1pc0luQWRtaW5MaXN0AQkApQgBCAUBaQZjYWxsZXIGCQEIdGhyb3dFcnIBAhpjYWxsZXIgaXMgbm90IGluIGFkbWluTGlzdAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQEcZ2V0U2V0TmV3UGVyaW9kTGVuZ3RoQWN0aW9ucwEFD25ld1BlcmlvZExlbmd0aAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpjbGFpbVVuaXRzAAQLdXNlckFkZHJlc3MJAKUIAQgFAWkGY2FsbGVyCQEUZ2V0Q2xhaW1Vbml0c0FjdGlvbnMBBQt1c2VyQWRkcmVzcwFpARBzZXRGb3JjZVN0b3BGbGFnAQRzdG9wBAVjaGVjawkAzAgCAwkBDWlzSW5BZG1pbkxpc3QBCQClCAEIBQFpBmNhbGxlcgYJAQh0aHJvd0VycgECGmNhbGxlciBpcyBub3QgaW4gYWRtaW5MaXN0BQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQDMCAIJAQxCb29sZWFuRW50cnkCBQxrZXlGb3JjZVN0b3AFBHN0b3AFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARNzZXRGb3JjZU91dFN0b3BGbGFnAQRzdG9wBAVjaGVjawkAzAgCAwkBDWlzSW5BZG1pbkxpc3QBCQClCAEIBQFpBmNhbGxlcgYJAQh0aHJvd0VycgECGmNhbGxlciBpcyBub3QgaW4gYWRtaW5MaXN0BQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQDMCAIJAQxCb29sZWFuRW50cnkCBQ9rZXlGb3JjZU91dFN0b3AFBHN0b3AFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARNnZXROb2RlRGF0YVJFQURPTkxZAQtub2RlQWRkcmVzcwQNJHQwMjEyNDEyMTMwNQkBEmdldExlYXNpbmdOb2RlRGF0YQEFC25vZGVBZGRyZXNzBAxjdXJyZW50TGVhc2UIBQ0kdDAyMTI0MTIxMzA1Al8xBApuZXh0TGVhc2VkCAUNJHQwMjEyNDEyMTMwNQJfMgkAlAoCBQNuaWwJAJcKBQUTY3VycmVudFBlcmlvZEhlaWdodAUMY3VycmVudExlYXNlBRBuZXh0UGVyaW9kSGVpZ2h0BQpuZXh0TGVhc2VkBQZoZWlnaHQBaQEaZ2V0VXNlckxlYXNpbmdEYXRhUkVBRE9OTFkCC25vZGVBZGRyZXNzC3VzZXJBZGRyZXNzBA0kdDAyMTY3NTIxNzUyCQESZ2V0VXNlckxlYXNpbmdEYXRhAgULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBAxjdXJyZW50TGVhc2UIBQ0kdDAyMTY3NTIxNzUyAl8xBApuZXh0TGVhc2VkCAUNJHQwMjE2NzUyMTc1MgJfMgkAlAoCBQNuaWwJAJcKBQUTY3VycmVudFBlcmlvZEhlaWdodAUMY3VycmVudExlYXNlBRBuZXh0UGVyaW9kSGVpZ2h0BQpuZXh0TGVhc2VkBQZoZWlnaHQBaQETZ2V0VXNlckRhdGFSRUFET05MWQELdXNlckFkZHJlc3MEDSR0MDIyMzU2MjI0MTYJARVnZXRVc2VyVG9DbGFpbUJhbGFuY2UBBQt1c2VyQWRkcmVzcwQHdG9DbGFpbQgFDSR0MDIyMzU2MjI0MTYCXzEECHRvVW5sb2NrCAUNJHQwMjIzNTYyMjQxNgJfMgQPdXNlclRvdGFsTG9ja2VkCQESZ2V0VXNlclRvdGFsTG9ja2VkAQULdXNlckFkZHJlc3MEDSR0MDIyNDc5MjI1ODcJARFnZXRVbml0c0NsYWltRGF0YQEFC3VzZXJBZGRyZXNzBAt1bml0c1RvU2VuZAgFDSR0MDIyNDc5MjI1ODcCXzEEEXRvdGFsVW5pdHNDbGFpbWVkCAUNJHQwMjI0NzkyMjU4NwJfMgQIbDJUb0J1cm4IBQ0kdDAyMjQ3OTIyNTg3Al8zBA10b3RhbEwyQnVybmVkCAUNJHQwMjI0NzkyMjU4NwJfNAQMY2xhaW1lZEJsb2NrCAUNJHQwMjI0NzkyMjU4NwJfNQQUdW5pdHNQZXJCbG9ja1NjYWxlMTYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUXa2V5VW5pdHNQZXJCbG9ja1NjYWxlMTYAAAQPcmVtYWluaW5nYmxvY2tzCQCWAwEJAMwIAgAACQDMCAIJAGUCCQBkAgUVdW5pdHNDbGFpbVN0YXJ0SGVpZ2h0BRJ1bml0c0NsYWltSW50ZXJ2YWwFBmhlaWdodAUDbmlsCQCUCgIFA25pbAkAnwoNBRNjdXJyZW50UGVyaW9kSGVpZ2h0BQd0b0NsYWltBRBuZXh0UGVyaW9kSGVpZ2h0BQh0b1VubG9jawUPdXNlclRvdGFsTG9ja2VkBQZoZWlnaHQFC3VuaXRzVG9TZW5kBRF0b3RhbFVuaXRzQ2xhaW1lZAUIbDJUb0J1cm4FDXRvdGFsTDJCdXJuZWQFDGNsYWltZWRCbG9jawUUdW5pdHNQZXJCbG9ja1NjYWxlMTYFD3JlbWFpbmluZ2Jsb2NrcwFpAQ5sZWFzZUJ5QWRkcmVzcwILbm9kZUFkZHJlc3MLdXNlckFkZHJlc3MJARpnZXRTdGFrZUZyb21QYXltZW50QWN0aW9ucwMFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwUBaQFpAQVsZWFzZQELbm9kZUFkZHJlc3MEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgkBGmdldFN0YWtlRnJvbVBheW1lbnRBY3Rpb25zAwULbm9kZUFkZHJlc3MFC3VzZXJBZGRyZXNzBQFpAWkBD2xlYXNlRnJvbUxvY2tlZAILbm9kZUFkZHJlc3MGYW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJAQ9nZXRTdGFrZUFjdGlvbnMEBQtub2RlQWRkcmVzcwULdXNlckFkZHJlc3MFBmFtb3VudAUBaQFpAQtjYW5jZWxMZWFzZQILbm9kZUFkZHJlc3MGYW1vdW50BAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIJARFnZXRVbnN0YWtlQWN0aW9ucwMFC25vZGVBZGRyZXNzBQt1c2VyQWRkcmVzcwUGYW1vdW50AWkBBWNsYWltAQZhbW91bnQEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgkBF2dldENsYWltVW5sb2NrZWRBY3Rpb25zAgULdXNlckFkZHJlc3MFBmFtb3VudAFpAQhjbGFpbUFsbAAEC3VzZXJBZGRyZXNzCQClCAEIBQFpBmNhbGxlcgQNJHQwMjQwMTcyNDA3NwkBFWdldFVzZXJUb0NsYWltQmFsYW5jZQEFC3VzZXJBZGRyZXNzBAd0b0NsYWltCAUNJHQwMjQwMTcyNDA3NwJfMQQIdG9VbmxvY2sIBQ0kdDAyNDAxNzI0MDc3Al8yBAZjaGVja3MJAMwIAgMJAGYCBQd0b0NsYWltAAAGCQEIdGhyb3dFcnIBAhBub3RoaW5nIHRvIGNsYWltBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MJARdnZXRDbGFpbVVubG9ja2VkQWN0aW9ucwIFC3VzZXJBZGRyZXNzBQd0b0NsYWltCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHN0YWtlRm9yAQt1c2VyQWRkcmVzcwkBEmdldFN0YWtlRm9yQWN0aW9ucwIFC3VzZXJBZGRyZXNzBQFpAWkBEXN0YXJ0VW5pdHNWZXN0aW5nARV1bml0c0NsYWltTmV3SW50ZXJ2YWwEB3RvdGFsTDIAgICo7IWv0bEBBAp0b3RhbFVuaXRzCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQUdW5pdHNQZXJCbG9ja1NjYWxlMTYJAGkCCQBrAwUKdG90YWxVbml0cwUHc2NhbGUxNgUHdG90YWxMMgUVdW5pdHNDbGFpbU5ld0ludGVydmFsBAVjaGVjawkAzAgCAwkBDWlzSW5BZG1pbkxpc3QBCQClCAEIBQFpBmNhbGxlcgYJAQh0aHJvd0VycgECGmNhbGxlciBpcyBub3QgaW4gYWRtaW5MaXN0CQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQITc2hvdWxkIGJlIDEgcGF5bWVudAkAzAgCAwkAZgIFFHVuaXRzUGVyQmxvY2tTY2FsZTE2AAAGCQEIdGhyb3dFcnIBAih1bml0cyBwZXIgYmxvY2sgc2hvdWxkIGJlIGdyZWF0ZWQgdGhhbiAwBQNuaWwDCQAAAgUFY2hlY2sFBWNoZWNrCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRdrZXlVbml0c1BlckJsb2NrU2NhbGUxNgUUdW5pdHNQZXJCbG9ja1NjYWxlMTYJAMwIAgkBDEludGVnZXJFbnRyeQIFGGtleVVuaXRzQ2xhaW1TdGFydEhlaWdodAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRVrZXlVbml0c0NsYWltSW50ZXJ2YWwFFXVuaXRzQ2xhaW1OZXdJbnRlcnZhbAkAzAgCCQELU3RyaW5nRW50cnkCBQ9rZXlVbml0c0Fzc2V0SWQJARJhc3NldEJ5dGVzVG9TdHJpbmcBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQt2b3RlRm9yVHhJZAEEdHhJZAQTY2FsbGVyQWRkcmVzc1N0cmluZwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAlrZXlQcmVmaXgJARhrZXlBbGxvd2VkVHhJZFZvdGVQcmVmaXgBBQR0eElkBAZyZXN1bHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUFsbG93ZWRUeElkAAUEdHhJZAUDbmlsBBFhbGxvd2VkVHhJZE9wdGlvbgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQABANlcnIJAMwIAgMJAAACCQDIAQEJANkEAQUEdHhJZAURVFhJRF9CWVRFU19MRU5HVEgGCQEIdGhyb3dFcnIBCQCsAgIFBHR4SWQCEiBpcyBub3QgdmFsaWQgdHhJZAkAzAgCAwMJAAACBRFhbGxvd2VkVHhJZE9wdGlvbgUEdW5pdAYJAQIhPQIJAQV2YWx1ZQEFEWFsbG93ZWRUeElkT3B0aW9uBQR0eElkBgkBCHRocm93RXJyAQkArAICBQR0eElkAhMgaXMgYWxyZWFkeSBhbGxvd2VkBQNuaWwDCQAAAgUDZXJyBQNlcnIJAQx2b3RlSU5URVJOQUwEBRNjYWxsZXJBZGRyZXNzU3RyaW5nBQlrZXlQcmVmaXgFBlFVT1JVTQUGcmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQIYnlBZG1pbnMJAAACCAUCdHgCaWQJANkEAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEOa2V5QWxsb3dlZFR4SWQAAgAEB2J5T3duZXIDCQBnAgkAkAMBCQENZ2V0QWRtaW5zTGlzdAAFBlFVT1JVTQcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkDBQhieUFkbWlucwYFB2J5T3duZXLE94QH", "chainId": 84, "height": 3337678, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4sXod3A78sxQ8rhLLPDDQdPe2ds52rschzzU4MYvMENW Next: DyDaUSJJcu6bZSchTPg2usMRpdhEdJPJrWUmtz7uskoY Diff:
OldNewDifferences
373373 let bA = (bz - bx)
374374 let bB = bu(C)
375375 let bC = fraction(bB, bA, y)
376- let bD = fraction(bC, by, e)
376+ let bD = fraction(bB, (by * bA), e)
377377 $Tuple4(bD, bC, bz, $Tuple3(bA, x, y))
378378 }
379379
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 let c = 1000
99
1010 let d = 100000000
1111
1212 let e = (d * d)
1313
1414 func f (g) = throw(((a + ": ") + g))
1515
1616
1717 let h = makeString(["%s", "assetId"], b)
1818
1919 let i = makeString(["%s", "forceStop"], b)
2020
2121 let j = makeString(["%s", "forceOutStop"], b)
2222
2323 let k = makeString(["%s", "unitsAssetId"], b)
2424
2525 let l = makeString(["%s", "unitsPerBlockScale16"], b)
2626
2727 let m = makeString(["%s", "offsetId"], b)
2828
2929 let n = makeString(["%s", "offsetHeight"], b)
3030
3131 let o = makeString(["%s", "periodLength"], b)
3232
3333 let p = makeString(["%s", "unitsClaimStartHeight"], b)
3434
3535 let q = makeString(["%s", "unitsClaimInterval"], b)
3636
3737 let r = valueOrElse(getInteger(this, m), 0)
3838
3939 let s = valueOrElse(getInteger(this, o), 10000)
4040
4141 let t = valueOrElse(getInteger(this, n), -1)
4242
4343 let u = if (if ((height > t))
4444 then (t != -1)
4545 else false)
4646 then (((height - t) / s) + r)
4747 else max([0, (r - 1)])
4848
4949 let v = if (if ((t == -1))
5050 then true
5151 else if ((u == 0))
5252 then (t > height)
5353 else false)
5454 then 0
5555 else (t + ((u - r) * s))
5656
5757 let w = if (if ((t == -1))
5858 then true
5959 else if ((u == 0))
6060 then (t > height)
6161 else false)
6262 then 0
6363 else (v + s)
6464
6565 let x = valueOrElse(getInteger(this, p), height)
6666
6767 let y = valueOrElse(getInteger(this, q), 0)
6868
6969 func z (A) = makeString(["%s", A], b)
7070
7171
7272 func B (C,A) = makeString(["%s%s", A, C], b)
7373
7474
7575 func D (C) = makeString(["%s%s", "toClaim", C], b)
7676
7777
7878 func E (C) = makeString(["%s%s", "userTotalLocked", C], b)
7979
8080
8181 func F (C) = makeString(["%s%s", "unitsClaimedBlock", C], b)
8282
8383
8484 func G (C) = makeString(["%s%s", "unlockedUnits", C], b)
8585
8686
8787 func H (C) = makeString(["%s%s", "totalUnitsClaimed", C], b)
8888
8989
9090 func I (C) = makeString(["%s%s", "l2ToBurn", C], b)
9191
9292
9393 func J (C) = makeString(["%s%s", "l2BurnedTotal", C], b)
9494
9595
9696 func K (A) = {
9797 let L = if ((t == -1))
9898 then 0
9999 else height
100100 makeString(["%s%d", A, toString(L)], b)
101101 }
102102
103103
104104 func M (A,C) = {
105105 let L = if ((t == -1))
106106 then 0
107107 else height
108108 makeString(["%s%s%d", A, C, toString(L)], b)
109109 }
110110
111111
112112 func N (O) = if ((O == "WAVES"))
113113 then unit
114114 else fromBase58String(O)
115115
116116
117117 func P (Q) = {
118118 let R = Q
119119 if ($isInstanceOf(R, "ByteVector"))
120120 then {
121121 let S = R
122122 toBase58String(S)
123123 }
124124 else "WAVES"
125125 }
126126
127127
128128 let T = valueOrElse(getString(this, h), "WAVES")
129129
130130 let U = valueOrElse(getString(this, k), "WAVES")
131131
132132 let V = N(T)
133133
134134 let W = N(U)
135135
136136 let X = valueOrElse(getBoolean(this, i), false)
137137
138138 let Y = valueOrElse(getBoolean(this, j), false)
139139
140140 func Z (aa) = {
141141 let R = addressFromString(aa)
142142 if ($isInstanceOf(R, "Address"))
143143 then {
144144 let S = R
145145 true
146146 }
147147 else false
148148 }
149149
150150
151151 let ab = 5
152152
153153 let ac = 3
154154
155155 let ad = 32
156156
157157 func ae (af) = makeString(["%s%s%s", "allowTxId", af], b)
158158
159159
160160 func ag (ah,ai) = makeString([ah, ai], b)
161161
162162
163163 func aj () = makeString(["%s", "adminAddressList"], b)
164164
165165
166166 func ak () = makeString(["%s", "txId"], b)
167167
168168
169169 func al (ah,am) = {
170170 let an = ag(ah, am)
171171 valueOrElse(getInteger(an), 0)
172172 }
173173
174174
175175 func ao () = {
176176 let R = getString(this, aj())
177177 if ($isInstanceOf(R, "String"))
178178 then {
179179 let ap = R
180180 split(ap, b)
181181 }
182182 else nil
183183 }
184184
185185
186186 func aq (aa) = containsElement(ao(), aa)
187187
188188
189189 func ar (S,ai) = {
190190 let as = S
191191 let at = as._1
192192 let ah = as._2
193193 $Tuple2((at :+ ag(ah, ai)), ah)
194194 }
195195
196196
197197 func au (av) = {
198198 let aw = aj()
199199 let ax = {
200200 let ay = ao()
201201 let az = size(ay)
202202 let aA = $Tuple2(nil, av)
203203 func aB (aC,aD) = if ((aD >= az))
204204 then aC
205205 else ar(aC, ay[aD])
206206
207207 func aE (aC,aD) = if ((aD >= az))
208208 then aC
209209 else throw("List size exceeds 5")
210210
211211 aE(aB(aB(aB(aB(aB(aA, 0), 1), 2), 3), 4), 5)
212212 }
213213 let at = ax._1
214214 let ah = ax._2
215215 at
216216 }
217217
218218
219219 func aF (at,an) = (at + valueOrElse(getInteger(an), 0))
220220
221221
222222 func aG (ah) = {
223223 let aH = au(ah)
224224 let ay = aH
225225 let az = size(ay)
226226 let aA = 0
227227 func aB (aC,aD) = if ((aD >= az))
228228 then aC
229229 else aF(aC, ay[aD])
230230
231231 func aE (aC,aD) = if ((aD >= az))
232232 then aC
233233 else throw("List size exceeds 5")
234234
235235 aE(aB(aB(aB(aB(aB(aA, 0), 1), 2), 3), 4), 5)
236236 }
237237
238238
239239 func aI (at,aJ) = (at :+ DeleteEntry(aJ))
240240
241241
242242 func aK (ah) = {
243243 let aH = au(ah)
244244 let ay = aH
245245 let az = size(ay)
246246 let aA = nil
247247 func aB (aC,aD) = if ((aD >= az))
248248 then aC
249249 else aI(aC, ay[aD])
250250
251251 func aE (aC,aD) = if ((aD >= az))
252252 then aC
253253 else throw("List size exceeds 5")
254254
255255 aE(aB(aB(aB(aB(aB(aA, 0), 1), 2), 3), 4), 5)
256256 }
257257
258258
259259 func aL (aM,av,aN,aO) = {
260260 let an = ag(av, aM)
261261 let aP = al(av, aM)
262262 let aQ = if (!(aq(aM)))
263263 then f((("Address: " + aM) + " not in Admin list"))
264264 else if ((aP == 1))
265265 then f((an + " you already voted"))
266266 else unit
267267 if ((aQ == aQ))
268268 then {
269269 let aH = aG(av)
270270 if (((aH + 1) >= aN))
271271 then {
272272 let aR = aK(av)
273273 (aR ++ aO)
274274 }
275275 else [IntegerEntry(an, 1)]
276276 }
277277 else throw("Strict value is not equal to itself.")
278278 }
279279
280280
281281 func aS (A,aT,aU) = {
282282 let aV = makeString(["%d%d%d%d", toString(v), toString(aT), toString(w), toString(aU)], b)
283283 StringEntry(z(A), aV)
284284 }
285285
286286
287287 func aW (A) = {
288288 let aX = getString(this, z(A))
289289 let R = aX
290290 if ($isInstanceOf(R, "String"))
291291 then {
292292 let aY = R
293293 let aZ = split(aY, b)
294294 let ba = parseIntValue(aZ[1])
295295 let bb = parseIntValue(aZ[2])
296296 let bc = parseIntValue(aZ[3])
297297 let bd = parseIntValue(aZ[4])
298298 if (if ((bc > height))
299299 then true
300300 else (t == -1))
301301 then $Tuple2(bb, bd)
302302 else $Tuple2(bd, bd)
303303 }
304304 else $Tuple2(0, 0)
305305 }
306306
307307
308308 func be (A,C,bf,bg) = {
309309 let aV = makeString(["%d%d%d%d", toString(v), toString(bf), toString(w), toString(bg)], b)
310310 StringEntry(B(C, A), aV)
311311 }
312312
313313
314314 func bh (A,C) = {
315315 let bi = getString(this, B(C, A))
316316 let R = bi
317317 if ($isInstanceOf(R, "String"))
318318 then {
319319 let aY = R
320320 let aZ = split(aY, b)
321321 let bj = parseIntValue(aZ[1])
322322 let bf = parseIntValue(aZ[2])
323323 let bk = parseIntValue(aZ[3])
324324 let bg = parseIntValue(aZ[4])
325325 if (if ((bk > height))
326326 then true
327327 else (t == -1))
328328 then $Tuple2(bf, bg)
329329 else $Tuple2(bg, bg)
330330 }
331331 else $Tuple2(0, 0)
332332 }
333333
334334
335335 func bl (C,bm,bn) = {
336336 let aV = makeString(["%d%d%d%d", toString(v), toString(bm), toString(w), toString(bn)], b)
337337 StringEntry(D(C), aV)
338338 }
339339
340340
341341 func bo (C) = {
342342 let bp = getString(this, D(C))
343343 let R = bp
344344 if ($isInstanceOf(R, "String"))
345345 then {
346346 let aY = R
347347 let aZ = split(aY, b)
348348 let bq = parseIntValue(aZ[1])
349349 let bm = parseIntValue(aZ[2])
350350 let br = parseIntValue(aZ[3])
351351 let bn = parseIntValue(aZ[4])
352352 if (if ((br > height))
353353 then true
354354 else (u == 0))
355355 then $Tuple2(bm, bn)
356356 else $Tuple2((bm + bn), 0)
357357 }
358358 else $Tuple2(0, 0)
359359 }
360360
361361
362362 func bs (C,bt) = IntegerEntry(E(C), bt)
363363
364364
365365 func bu (C) = valueOrElse(getInteger(this, E(C)), 0)
366366
367367
368368 func bv (C) = {
369369 let bw = F(C)
370370 let bx = valueOrElse(getInteger(this, bw), x)
371371 let by = valueOrElse(getInteger(this, l), 0)
372372 let bz = min([(x + y), height])
373373 let bA = (bz - bx)
374374 let bB = bu(C)
375375 let bC = fraction(bB, bA, y)
376- let bD = fraction(bC, by, e)
376+ let bD = fraction(bB, (by * bA), e)
377377 $Tuple4(bD, bC, bz, $Tuple3(bA, x, y))
378378 }
379379
380380
381381 func bE (C) = {
382382 let bF = G(C)
383383 let bG = valueOrElse(getInteger(this, bF), 0)
384384 let bH = I(C)
385385 let bC = valueOrElse(getInteger(this, bH), 0)
386386 let bI = bv(C)
387387 let bD = bI._1
388388 let bJ = bI._2
389389 let bz = bI._3
390390 let bK = bI._4
391391 if ((0 >= bD))
392392 then nil
393393 else [IntegerEntry(F(C), bz), IntegerEntry(bH, (bC + bJ)), IntegerEntry(bF, (bG + bD))]
394394 }
395395
396396
397397 func bL (A,C,bM) = {
398398 let bN = aW(A)
399399 let bb = bN._1
400400 let bd = bN._2
401401 let bO = bh(A, C)
402402 let bf = bO._1
403403 let bg = bO._2
404404 let bP = [if (!(X))
405405 then true
406406 else f("contract is temporary stopped"), if (!(Y))
407407 then true
408408 else f("unstake is temporary disabled"), if ((bM > 0))
409409 then true
410410 else f("unstake amount should be greater than 0"), if ((bg >= bM))
411411 then true
412412 else f("unstake amount should be less or equal user staked amount"), if ((bd >= bM))
413413 then true
414414 else f("unstake amount should be less or equal node staked amount"), if (Z(A))
415415 then true
416416 else f(makeString(["node address is not valid:", A], " ")), if (Z(C))
417417 then true
418418 else f(makeString(["user address is not valid:", C], " "))]
419419 if ((bP == bP))
420420 then {
421421 let bQ = (bd - bM)
422422 let bR = (bg - bM)
423423 let bS = bo(C)
424424 let bm = bS._1
425425 let bn = bS._2
426426 let bT = (bn + bM)
427427 let bt = bu(C)
428428 let bU = (bt - bM)
429429 let bV = bE(C)
430430 ([aS(A, bb, bQ), be(A, C, bf, bR), bl(C, bm, bT), bs(C, bU), IntegerEntry(K(A), bQ), IntegerEntry(M(A, C), bR)] ++ bV)
431431 }
432432 else throw("Strict value is not equal to itself.")
433433 }
434434
435435
436436 func bW (C,bX) = {
437437 let bY = bo(C)
438438 let bm = bY._1
439439 let bn = bY._2
440440 let bP = [if (!(X))
441441 then true
442442 else f("contract is temporary stopped"), if (!(Y))
443443 then true
444444 else f("claim is temporary disabled"), if ((bX > 0))
445445 then true
446446 else f("claim amount should be greater than 0"), if ((bm >= bX))
447447 then true
448448 else f("claim amount should be less or equal unlocked amount"), if (Z(C))
449449 then true
450450 else f(makeString(["user address is not valid:", C], " "))]
451451 if ((bP == bP))
452452 then {
453453 let bZ = (bm - bX)
454454 [bl(C, bZ, bn), ScriptTransfer(addressFromStringValue(C), bX, V)]
455455 }
456456 else throw("Strict value is not equal to itself.")
457457 }
458458
459459
460460 func ca (C,cb) = {
461461 let cc = bo(C)
462462 let bm = cc._1
463463 let bn = cc._2
464464 let bP = [if (!(X))
465465 then true
466466 else f("contract is temporary stopped"), if ((1 >= size(cb.payments)))
467467 then true
468468 else f("maximum 1 payment"), if (if ((size(cb.payments) == 0))
469469 then true
470470 else (cb.payments[0].assetId == V))
471471 then true
472472 else f(makeString(["payment assetId should be:", T], " ")), if (Z(C))
473473 then true
474474 else f(makeString(["user address is not valid:", C], " "))]
475475 if ((bP == bP))
476476 then {
477477 let bZ = (bm + cb.payments[0].amount)
478478 [bl(C, bZ, bn)]
479479 }
480480 else throw("Strict value is not equal to itself.")
481481 }
482482
483483
484484 func cd (A,C,ce,cb) = {
485485 let cf = bo(C)
486486 let bm = cf._1
487487 let bn = cf._2
488488 let cg = if ((size(cb.payments) == 0))
489489 then 0
490490 else cb.payments[0].amount
491491 let ch = ((bn + bm) + cg)
492492 let bP = [if (!(X))
493493 then true
494494 else f("contract is temporary stopped"), if ((1 >= size(cb.payments)))
495495 then true
496496 else f("maximum 1 payment"), if (if ((size(cb.payments) == 0))
497497 then true
498498 else (cb.payments[0].assetId == V))
499499 then true
500500 else f(makeString(["payment assetId should be:", T], " ")), if ((ce > 0))
501501 then true
502502 else f("amount should be greater than 0"), if ((ch >= ce))
503503 then true
504504 else f("amount should be less or equal (payment + available) amount"), if ((ce >= cg))
505505 then true
506506 else throw("amount should be greater or equal payment amount"), if (Z(A))
507507 then true
508508 else f(makeString(["node address is not valid:", A], " ")), if (Z(C))
509509 then true
510510 else f(makeString(["user address is not valid:", C], " "))]
511511 if ((bP == bP))
512512 then {
513513 let ci = aW(A)
514514 let bb = ci._1
515515 let bd = ci._2
516516 let bQ = (bd + ce)
517517 let cj = bh(A, C)
518518 let bf = cj._1
519519 let bg = cj._2
520520 let bR = (bg + ce)
521521 let ck = (ce - cg)
522522 let bT = max([0, (bn - ck)])
523523 let bZ = min([bm, (bm + (bn - ck))])
524524 let bt = bu(C)
525525 let bU = (bt + ce)
526526 let bV = bE(C)
527527 ([aS(A, bb, bQ), be(A, C, bf, bR), bl(C, bZ, bT), bs(C, bU), IntegerEntry(K(A), bQ), IntegerEntry(M(A, C), bR)] ++ bV)
528528 }
529529 else throw("Strict value is not equal to itself.")
530530 }
531531
532532
533533 func cl (A,C,cb) = {
534534 let bP = [if ((size(cb.payments) == 1))
535535 then true
536536 else f("payment size should be exactly 1")]
537537 if ((bP == bP))
538538 then cd(A, C, cb.payments[0].amount, cb)
539539 else throw("Strict value is not equal to itself.")
540540 }
541541
542542
543543 func cm (cn) = {
544544 let co = [if ((cn > 0))
545545 then true
546546 else f("period length should be greater than 0")]
547547 if ((co == co))
548548 then if ((t == -1))
549549 then [IntegerEntry(o, cn), IntegerEntry(n, height)]
550550 else [IntegerEntry(m, (u + 1)), IntegerEntry(n, w), IntegerEntry(o, cn)]
551551 else throw("Strict value is not equal to itself.")
552552 }
553553
554554
555555 func cp (C) = {
556556 let cq = bv(C)
557557 let cr = cq._1
558558 let bJ = cq._2
559559 let bz = cq._3
560560 let bK = cq._4
561561 let cs = valueOrElse(getInteger(this, G(C)), 0)
562562 let ct = (cr + cs)
563563 let cu = valueOrElse(getInteger(this, I(C)), 0)
564564 let bC = (cu + bJ)
565565 let cv = valueOrElse(getInteger(this, H(C)), 0)
566566 let cw = valueOrElse(getInteger(this, J(C)), 0)
567567 $Tuple5(ct, cv, bC, cw, bz)
568568 }
569569
570570
571571 func cx (C) = {
572572 let cy = cp(C)
573573 let ct = cy._1
574574 let cv = cy._2
575575 let bC = cy._3
576576 let cw = cy._4
577577 let bx = cy._5
578578 let co = [if ((ct > 0))
579579 then true
580580 else f("nothing to claim")]
581581 if ((co == co))
582582 then {
583583 let cz = {
584584 let R = V
585585 if ($isInstanceOf(R, "ByteVector"))
586586 then {
587587 let cA = R
588588 [Burn(cA, bC)]
589589 }
590590 else nil
591591 }
592592 ([IntegerEntry(F(C), bx), IntegerEntry(H(C), (cv + ct)), IntegerEntry(J(C), (cw + bC)), IntegerEntry(G(C), 0), IntegerEntry(I(C), 0), ScriptTransfer(addressFromStringValue(C), ct, W)] ++ cz)
593593 }
594594 else throw("Strict value is not equal to itself.")
595595 }
596596
597597
598598 @Callable(cb)
599599 func setNewPeriodLength (cn) = {
600600 let bP = [if (aq(toString(cb.caller)))
601601 then true
602602 else f("caller is not in adminList")]
603603 if ((bP == bP))
604604 then cm(cn)
605605 else throw("Strict value is not equal to itself.")
606606 }
607607
608608
609609
610610 @Callable(cb)
611611 func claimUnits () = {
612612 let C = toString(cb.caller)
613613 cx(C)
614614 }
615615
616616
617617
618618 @Callable(cb)
619619 func setForceStopFlag (cB) = {
620620 let co = [if (aq(toString(cb.caller)))
621621 then true
622622 else f("caller is not in adminList")]
623623 if ((co == co))
624624 then [BooleanEntry(i, cB)]
625625 else throw("Strict value is not equal to itself.")
626626 }
627627
628628
629629
630630 @Callable(cb)
631631 func setForceOutStopFlag (cB) = {
632632 let co = [if (aq(toString(cb.caller)))
633633 then true
634634 else f("caller is not in adminList")]
635635 if ((co == co))
636636 then [BooleanEntry(j, cB)]
637637 else throw("Strict value is not equal to itself.")
638638 }
639639
640640
641641
642642 @Callable(cb)
643643 func getNodeDataREADONLY (A) = {
644644 let cC = aW(A)
645645 let cD = cC._1
646646 let aU = cC._2
647647 $Tuple2(nil, $Tuple5(v, cD, w, aU, height))
648648 }
649649
650650
651651
652652 @Callable(cb)
653653 func getUserLeasingDataREADONLY (A,C) = {
654654 let cE = bh(A, C)
655655 let cD = cE._1
656656 let aU = cE._2
657657 $Tuple2(nil, $Tuple5(v, cD, w, aU, height))
658658 }
659659
660660
661661
662662 @Callable(cb)
663663 func getUserDataREADONLY (C) = {
664664 let cF = bo(C)
665665 let bm = cF._1
666666 let bn = cF._2
667667 let bt = bu(C)
668668 let cG = cp(C)
669669 let ct = cG._1
670670 let cv = cG._2
671671 let bC = cG._3
672672 let cw = cG._4
673673 let bx = cG._5
674674 let by = valueOrElse(getInteger(this, l), 0)
675675 let cH = max([0, ((x + y) - height)])
676676 $Tuple2(nil, $Tuple13(v, bm, w, bn, bt, height, ct, cv, bC, cw, bx, by, cH))
677677 }
678678
679679
680680
681681 @Callable(cb)
682682 func leaseByAddress (A,C) = cl(A, C, cb)
683683
684684
685685
686686 @Callable(cb)
687687 func lease (A) = {
688688 let C = toString(cb.caller)
689689 cl(A, C, cb)
690690 }
691691
692692
693693
694694 @Callable(cb)
695695 func leaseFromLocked (A,cI) = {
696696 let C = toString(cb.caller)
697697 cd(A, C, cI, cb)
698698 }
699699
700700
701701
702702 @Callable(cb)
703703 func cancelLease (A,cI) = {
704704 let C = toString(cb.caller)
705705 bL(A, C, cI)
706706 }
707707
708708
709709
710710 @Callable(cb)
711711 func claim (cI) = {
712712 let C = toString(cb.caller)
713713 bW(C, cI)
714714 }
715715
716716
717717
718718 @Callable(cb)
719719 func claimAll () = {
720720 let C = toString(cb.caller)
721721 let cJ = bo(C)
722722 let bm = cJ._1
723723 let bn = cJ._2
724724 let bP = [if ((bm > 0))
725725 then true
726726 else f("nothing to claim")]
727727 if ((bP == bP))
728728 then bW(C, bm)
729729 else throw("Strict value is not equal to itself.")
730730 }
731731
732732
733733
734734 @Callable(cb)
735735 func stakeFor (C) = ca(C, cb)
736736
737737
738738
739739 @Callable(cb)
740740 func startUnitsVesting (cK) = {
741741 let cL = 100000000000000000
742742 let cM = cb.payments[0].amount
743743 let by = (fraction(cM, e, cL) / cK)
744744 let co = [if (aq(toString(cb.caller)))
745745 then true
746746 else f("caller is not in adminList"), if ((size(cb.payments) == 1))
747747 then true
748748 else f("should be 1 payment"), if ((by > 0))
749749 then true
750750 else f("units per block should be greated than 0")]
751751 if ((co == co))
752752 then [IntegerEntry(l, by), IntegerEntry(p, height), IntegerEntry(q, cK), StringEntry(k, P(cb.payments[0].assetId))]
753753 else throw("Strict value is not equal to itself.")
754754 }
755755
756756
757757
758758 @Callable(cb)
759759 func voteForTxId (af) = {
760760 let aM = toBase58String(cb.caller.bytes)
761761 let av = ae(af)
762762 let at = [StringEntry(ak(), af)]
763763 let cN = getString(this, ak())
764764 let aQ = [if ((size(fromBase58String(af)) == ad))
765765 then true
766766 else f((af + " is not valid txId")), if (if ((cN == unit))
767767 then true
768768 else (value(cN) != af))
769769 then true
770770 else f((af + " is already allowed"))]
771771 if ((aQ == aQ))
772772 then aL(aM, av, ac, at)
773773 else throw("Strict value is not equal to itself.")
774774 }
775775
776776
777777 @Verifier(cO)
778778 func cP () = {
779779 let cQ = (cO.id == fromBase58String(valueOrElse(getString(this, ak()), "")))
780780 let cR = if ((size(ao()) >= ac))
781781 then false
782782 else sigVerify(cO.bodyBytes, cO.proofs[0], cO.senderPublicKey)
783783 if (cQ)
784784 then true
785785 else cR
786786 }
787787

github/deemru/w8io/026f985 
73.82 ms