tx · 317zwLpeAhktTyej8CLJHf2vxw9PfSnmW7Wg3QAeACkk

3MptKi7f3jwXjzqhHpvLLzsSpEQdZiwAo5c:  -0.02200000 Waves

2023.05.04 11:35 [2562780] smart account 3MptKi7f3jwXjzqhHpvLLzsSpEQdZiwAo5c > SELF 0.00000000 Waves

{ "type": 13, "id": "317zwLpeAhktTyej8CLJHf2vxw9PfSnmW7Wg3QAeACkk", "fee": 2200000, "feeAssetId": null, "timestamp": 1683189321791, "version": 2, "chainId": 84, "sender": "3MptKi7f3jwXjzqhHpvLLzsSpEQdZiwAo5c", "senderPublicKey": "44kjsoExo76qSrM51NMhbG8FtdLkcPtyJxEDrwDyT8kz", "proofs": [ "ao5iJZuVeBxiGJuRYCxYf44Pac7erHPhMfDWTwqEeBFTfj3ktG5ndvEsKQvaiktznG2AJJ2CUjBybp9RYeSxtL2" ], "script": "base64:BgK1IggCEgkKBwEBAQEBCAESABIECgIICBIDCgEIEgQKAggIEgQKAggIIg9nZXRTdHJpbmdPckZhaWwiA2tleSIDU0VQIghCVUZTQ0FMRSIGc2NhbGU4Igh0aHJvd0VyciIDbXNnIghhc1N0cmluZyIDdmFsIgckbWF0Y2gwIgZ2YWxTdHIiHWNvbnZlcnRQcmljZUFzc2V0SW50b0lkb0Fzc2V0IhBwcmljZUFzc2V0QW1vdW50Ig5wcmljZUFzc2V0TVVMVCIFcHJpY2UiCXByaWNlTVVMVCIMaWRvQXNzZXRNVUxUIg9iUHJpY2VBc3NldE1VTFQiDWJJZG9Bc3NldE1VTFQiDmJQcmljZUFzc2V0QlVGIg9iQW1vdW50QXNzZXRCVUYiDklkeENmZ0lkb1N0YXJ0IhFJZHhDZmdJZG9EdXJhdGlvbiIQSWR4Q2ZnQ2xhaW1TdGFydCITSWR4Q2ZnQ2xhaW1EdXJhdGlvbiILSWR4Q2ZnUHJpY2UiD0lkeENmZ1ByaWNlTXVsdCIQSWR4Q2ZnSWRvQXNzZXRJZCISSWR4Q2ZnSWRvQXNzZXRNdWx0IhJJZHhDZmdQcmljZUFzc2V0SWQiFElkeENmZ1ByaWNlQXNzZXRNdWx0IhVJZHhDZmdNaW5JbnZlc3RBbW91bnQiDWZyb21hdENvbmZpZ1MiCGlkb1N0YXJ0IgtpZG9EdXJhdGlvbiIKY2xhaW1TdGFydCINY2xhaW1EdXJhdGlvbiIJcHJpY2VNdWx0IgxpZG9Bc3NldElkNTgiDGlkb0Fzc2V0TXVsdCIOcHJpY2VBc3NldElkNTgiDnByaWNlQXNzZXRNdWx0Ig9taW5JbnZlc3RBbW91bnQiE3RvdGFsSWRvQXNzZXRUb1NlbGwiDGZyb21hdENvbmZpZyIRSWR4SW52VG90YWxBbW91bnQiFUlkeEludlJlbWFpbmluZ0Ftb3VudCIdSWR4SW52Q2xhaW1lZFByaWNlQXNzZXRBbW91bnQiG0lkeEludkNsYWltZWRJZG9Bc3NldEFtb3VudCIXSWR4SW52TGFzdENsYWltZWRIZWlnaHQiD2Zvcm1hdEludmVzdG9yUyILdG90YWxBbW91bnQiD3JlbWFpbmluZ0Ftb3VudCIXY2xhaW1lZFByaWNlQXNzZXRBbW91bnQiFWNsYWltZWRJZG9Bc3NldEFtb3VudCIRbGFzdENsYWltZWRIZWlnaHQiDmZvcm1hdEludmVzdG9yIhNmb3JtYXRIaXN0b3J5UmVjb3JkIg5pZG9Bc3NldEFtb3VudCIJa2V5Q29uZmlnIgtrZXlJbnZlc3RvciILdXNlckFkZHJlc3MiCWtleVRvdGFscyIZa2V5T3BlcmF0aW9uSGlzdG9yeVJlY29yZCIEdHlwZSIGdHhJZDU4IhRrZXlVU0ROQ2xhaW1EaXNhYmxlZCIVa2V5VVNETkNsYWltRW5kSGVpZ2h0Ig9rZXlQZXJpb2RMZW5ndGgiEGtleUN1cnJlbnRQZXJpb2QiFGtleVBlcmlvZFN0YXJ0SGVpZ2h0IglwZXJpb2ROdW0iEmtleVBlcmlvZEVuZEhlaWdodCIfa2V5VXNkdFByaWNlQXNzZXRBbGxvd2FibGVSYXRpbyIXa2V5VG90YWxQZXJpb2RBbGxvd2FuY2UiB2Fzc2V0SWQiFmtleVVzZXJQZXJpb2RBbGxvd2FuY2UiHmtleVBlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbSIda2V5UGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0iG2tleVVzZHRQcmljZUFzc2V0U3RhYmxlUG9vbCIOa2V5VXNkdEFzc2V0SWQiFGtleVByaWNlQXNzZXRCYWxhbmNlIgdhZGRyZXNzIhprZXlJbnZlc3RvclJlbWFpbmluZ0Ftb3VudCIXa2V5VG90YWxSZW1haW5pbmdBbW91bnQiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiD3JlYWRDb25maWdBcnJheSIjcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0QnlDdXN0b21LZXkiCWN1c3RvbUtleSIYcmVhZFRvdGFsc0FycmF5T3JEZWZhdWx0IhpyZWFkSW52ZXN0b3JBcnJheU9yRGVmYXVsdCIXcmVhZEludmVzdG9yQXJyYXlPckZhaWwiF2dldE1hbmFnZXJBZGRyZXNzT3JGYWlsIhVJZHhEaWZmVG90YWxJbmNyZW1lbnQiJElkeERpZmZSZW1haW5pbmdQcmljZUFtb3VudEluY3JlbWVudCIiSWR4RGlmZkNsYWltZWRQcmljZUFtb3VudEluY3JlbWVudCIlSWR4RGlmZkNsYWltZWRJZG9Bc3NldEFtb3VudEluY3JlbWVudCILVG90YWxzRW50cnkiCW9yaWdBcnJheSINaW5jcmVtZW50RGlmZiIUbmV3TGFzdENsYWltZWRIZWlnaHQiEXByaWNlQXNzZXRCYWxhbmNlIg5uZXdUb3RhbEFtb3VudCISbmV3UmVtYWluaW5nQW1vdW50IghjZmdBcnJheSIScHJpY2VBc3NldERlY2ltYWxzIiNwcmljZUFzc2V0QmFsYW5jZVByaWNlQXNzZXREZWNpbWFscyIabmV3Q2xhaW1lZFByaWNlQXNzZXRBbW91bnQiGG5ld0NsYWltZWRJZG9Bc3NldEFtb3VudCIHZW50cmllcyIEZGlmZiIXbmV3TG9naWNSZW1haW5pbmdBbW91bnQiG0ludmVzdE9wZXJhdGlvbkhpc3RvcnlFbnRyeSIEdHhJZCIaQ2xhaW1PcGVyYXRpb25IaXN0b3J5RW50cnkiDWludGVybmFsQ2xhaW0iEGNsYWltZWRBc3NldElkNTgiCGNsYWltRW5kIgppZG9Bc3NldElkIgxwcmljZUFzc2V0SWQiDXVzZXJBZGRyZXNzNTgiD29yaWdJbnZlc3RBcnJheSIRaW52ZXN0VG90YWxBbW91bnQiGmludmVzdExhc3RDbGFpbWVkSGVpZ2h0VE1QIhdpbnZlc3RMYXN0Q2xhaW1lZEhlaWdodCIUbmV3Q2xhaW1QZXJpb2RIZWlnaHQiDmNsYWltaW5nQmxvY2tzIhhjbGFpbWluZ1ByaWNlQXNzZXRBbW91bnQiFmNsYWltaW5nSWRvQXNzZXRBbW91bnQiBmlzVVNETiITaXNVU0ROQ2xhaW1EaXNhYmxlZCIGY2hlY2tzIg9pbnRlcm5hbENsYWltVjIiCW91dEFtb3VudCIZdG90YWxVc2VyQXZhaWxhYmxlVG9DbGFpbSIedG90YWxQZXJpb2RQcmljZUFzc2V0QWxsb3dhbmNlIh11c2VyUGVyaW9kUHJpY2VBc3NldEFsbG93YW5jZSIMcGVyaW9kTGVuZ3RoIg1jdXJyZW50UGVyaW9kIht6ZXJvUGVyaW9kRW5kSGVpZ2hJc0RlZmluZWQiDSR0MDEzMDc3MTQ5NDciFWxhc3RQZXJpb2RTdGFydEhlaWdodCITbGFzdFBlcmlvZEVuZEhlaWdodCINJHQwMTMzMzcxNDA0MiIUdXBkYXRlZEN1cnJlbnRQZXJpb2QiC3BlcmlvZFN0YXJ0IhdibG9ja3NUb0xhc3RQZXJpb2RTdGFydCIJcGVyaW9kRW5kIhV6ZXJvUGVyaW9kU3RhcnRIZWlnaHQiE3plcm9QZXJpb2RFbmRIZWlnaHQiDSR0MDE0Mjk3MTQ2NzkiG3BlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbSIacGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0iGXBlcmlvZE1pbkF2YWlsYWJsZVRvQ2xhaW0iHHVzZHRQcmljZUFzc2V0QWxsb3dhYmxlUmF0aW8iG3B1dE9uZVRrblYyUHJpY2VBc3NldEFtb3VudCINJHQwMTU3MDIxNTk1NSIBQCIFYm9udXMiCWZlZUFtb3VudCIIbHBBbW91bnQiC3VzZHRBc3NldElkIg0kdDAxNjAxNzE2MjM1IhRnZXRPbmVUa25WMkZlZUFtb3VudCIKdXNkdEFtb3VudCIaY3VycmVudFVzZHRQcmljZUFzc2V0UmF0aW8iE2VuZFBlcmlvZEJsb2Nrc0xlZnQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiE21hbmFnZXJWYXVsdEFkZHJlc3MiAXMiC211c3RNYW5hZ2VyIgFpIgJwZCICcGsiBmlkb0VuZCIDcG10IgxpZG9Bc3NldEluZm8iDnByaWNlQXNzZXRJbmZvIg9vcmlnVG90YWxzQXJyYXkiCnRvdGFsc0RpZmYiDm1pbkl2ZXN0QW1vdW50IgpwbXRBc3NldElkIglwbXRBbW91bnQiEW9yaWdJbnZlc3RvckFycmF5IhNuZXdQcmljZVRvdGFsQW1vdW50IhZyZXF1aXJlZElkb0Fzc2V0QW1vdW50Ig9jYWxsZXJBZGRyZXNzNTgiEGNsYWltUmVzdWx0VHVwbGUiCm91dEFzc2V0SWQiGmNsYWltZWRQcmljZUFtb3VudEZyb21EaWZmIh1jbGFpbWVkSWRvQXNzZXRBbW91bnRGcm9tRGlmZiINJHQwMjIwNzQyMjUxOCIidXBkYXRlZFBlcmlvZFRvdGFsQXZhaWxhYmxlVG9DbGFpbSIhdXBkYXRlZFBlcmlvZFVzZXJBdmFpbGFibGVUb0NsYWltIg5ldmFsdWF0ZVJlc3VsdCIbYXZhaWxhYmxlUHJpY2VBbW91bnRUb0NsYWltIhBsYXN0Q2xhaW1FbnRyaWVzIhNpbnZlc3RvclRvdGFsQW1vdW50IhdpbnZlc3RvclJlbWFpbmluZ0Ftb3VudCIZaW52ZXN0b3JQcmljZUFzc2V0QmFsYW5jZSIXaW52ZXN0b3JJZG9Bc3NldEJhbGFuY2UiGWludmVzdG9yTGFzdENsYWltZWRIZWlnaHQiDm5ld0ludmVzdEFycmF5IgZ0b3RhbHMiEXRvdGFsc1RvdGFsQW1vdW50IhV0b3RhbHNSZW1haW5pbmdBbW91bnQiHXRvdGFsc0NsYWltZWRQcmljZUFzc2V0QW1vdW50Iht0b3RhbHNDbGFpbWVkSWRvQXNzZXRBbW91bnQiF3RvdGFsc0xhc3RDbGFpbWVkSGVpZ2h0IhhuZXdUb3RhbHNSZW1haW5pbmdBbW91bnQiDW5ld1RvdGFsQXJyYXkiF25ld1RvdGFsUmVtYWluaW5nQW1vdW50Ihh1cGRhdGVkUHJpY2VBc3NldEJhbGFuY2UiHHByaWNlQXNzZXRCYWxhbmNlSWRvRGVjaW1hbHMiFGNoZWNrVW5jbGFpbWVkQXNzZXRzIghpbnZlc3RvciIcaW52ZXN0b3JSZW1haW5pbmdBbW91bnRDaGVjayILbmV3SW52ZXN0b3IiCW5ld1RvdGFscyIVYXZhaWxhYmxlVG9DbGFpbUFycmF5IhlhdmFpbGFibGVJZG9BbW91bnRUb0NsYWltIi5hdmFpbGFibGVJZG9BbW91bnRUb0NsYWltV2l0aFByaWNlQXNzZXRCYWxhbmNlIg0kdDAzMzc2OTM0MTgxIhZjdXJyZW50UGVyaW9kRW5kSGVpZ2h0Ihp1c2VyVG90YWxQcmljZUFzc2V0Q2xhaW1lZCIMcmVzdWx0U3RyaW5nIgxwZXJpb2RMZW5naHQiE3VzZXJQZXJpb2RBbGxvd2FuY2UiFHRvdGFsUGVyaW9kQWxsb3dhbmNlIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXlDAQFhAQFiCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQUBYgkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUBYgIPIGlzIG5vdCBkZWZpbmVkAAFjAgJfXwABZAkAtgIBAICAkLu61q3wDQABZQCAwtcvAQFmAQFnCQACAQkAuQkCCQDMCAICCWlkby5yaWRlOgkAzAgCBQFnBQNuaWwCASABAWgBAWkEAWoFAWkDCQABAgUBagIGU3RyaW5nBAFrBQFqBQFrCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nAQFsBQFtAW4BbwFwAXEEAXIJALYCAQUBbgQBcwkAtgIBBQFxBAF0CQC8AgMJALYCAQUBbQUBZAUBcgQBdQkAvAIDBQF0CQC2AgEFAXAJALYCAQUBbwkAoAMBCQC8AgMFAXUJALYCAQUBcQUBZAABdgABAAF3AAIAAXgAAwABeQAEAAF6AAUAAUEABgABQgAHAAFDAAgAAUQACQABRQAKAAFGAAsBAUcMAUgBSQFKAUsBbwFMAU0BTgFPAVABUQFSCQC5CQIJAMwIAgIYJWQlZCVkJWQlZCVkJXMlZCVzJWQlZCVkCQDMCAIFAUgJAMwIAgUBSQkAzAgCBQFKCQDMCAIFAUsJAMwIAgUBbwkAzAgCBQFMCQDMCAIFAU0JAMwIAgUBTgkAzAgCBQFPCQDMCAIFAVAJAMwIAgUBUQkAzAgCBQFSBQNuaWwFAWMBAVMMAUgBSQFKAUsBbwFMAU0BTgFPAVABUQFSCQEBRwwJAKQDAQUBSAkApAMBBQFJCQCkAwEFAUoJAKQDAQUBSwkApAMBBQFvCQCkAwEFAUwFAU0JAKQDAQUBTgUBTwkApAMBBQFQCQCkAwEFAVEJAKQDAQUBUgABVAABAAFVAAIAAVYAAwABVwAEAAFYAAUBAVkFAVoCYWECYWICYWMCYWQJALkJAgkAzAgCAgolZCVkJWQlZCVkCQDMCAIFAVoJAMwIAgUCYWEJAMwIAgUCYWIJAMwIAgUCYWMJAMwIAgUCYWQFA25pbAUBYwECYWUFAVoCYWECYWICYWMCYWQJAQFZBQkApAMBBQFaCQCkAwEFAmFhCQCkAwEFAmFiCQCkAwEFAmFjCQCkAwEFAmFkAQJhZgIBbQJhZwkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQUGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQFtCQDMCAIJAKQDAQUCYWcFA25pbAUBYwECYWgAAgolc19fY29uZmlnAQJhaQECYWoJAKwCAgIEJXNfXwUCYWoBAmFrAAIKJXNfX3RvdGFscwECYWwDAmFtAmFqAmFuCQC5CQIJAMwIAgIRJXMlcyVzJXNfX2hpc3RvcnkJAMwIAgUCYW0JAMwIAgUCYWoJAMwIAgUCYW4FA25pbAUBYwECYW8AAhUlc19fdXNkbkNsYWltRGlzYWJsZWQBAmFwAAIWJXNfX3VzZG5DbGFpbUVuZEhlaWdodAECYXEACQC5CQIJAMwIAgICJXMJAMwIAgIMcGVyaW9kTGVuZ3RoBQNuaWwFAWMBAmFyAAkAuQkCCQDMCAICAiVzCQDMCAICDWN1cnJlbnRQZXJpb2QFA25pbAUBYwECYXMBAmF0CQC5CQIJAMwIAgIEJXMlcwkAzAgCAhFwZXJpb2RTdGFydEhlaWdodAkAzAgCCQCkAwEFAmF0BQNuaWwFAWMBAmF1AQJhdAkAuQkCCQDMCAICBCVzJXMJAMwIAgIPcGVyaW9kRW5kSGVpZ2h0CQDMCAIJAKQDAQUCYXQFA25pbAUBYwECYXYACQC5CQIJAMwIAgICJXMJAMwIAgIcdXNkdFByaWNlQXNzZXRBbGxvd2FibGVSYXRpbwUDbmlsBQFjAQJhdwECYXgJALkJAgkAzAgCAgQlcyVzCQDMCAICFHRvdGFsUGVyaW9kQWxsb3dhbmNlCQDMCAIFAmF4BQNuaWwFAWMBAmF5AQJheAkAuQkCCQDMCAICBCVzJXMJAMwIAgITdXNlclBlcmlvZEFsbG93YW5jZQkAzAgCBQJheAUDbmlsBQFjAQJhegICYXgCYXQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIbcGVyaW9kVG90YWxBdmFpbGFibGVUb0NsYWltCQDMCAIFAmF4CQDMCAIJAKQDAQUCYXQFA25pbAUBYwECYUEDAmF4AmF0AmFqCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgIacGVyaW9kVXNlckF2YWlsYWJsZVRvQ2xhaW0JAMwIAgUCYXgJAMwIAgkApAMBBQJhdAkAzAgCBQJhagUDbmlsBQFjAQJhQgAJALkJAgkAzAgCAgIlcwkAzAgCAhh1c2R0UHJpY2VBc3NldFN0YWJsZVBvb2wFA25pbAUBYwECYUMACQC5CQIJAMwIAgICJXMJAMwIAgILdXNkdEFzc2V0SWQFA25pbAUBYwECYUQBAmFFCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhFwcmljZUFzc2V0QmFsYW5jZQkAzAgCBQJhRQUDbmlsBQFjAQJhRgECYUUJALkJAgkAzAgCAgQlcyVzCQDMCAICF2ludmVzdG9yUmVtYWluaW5nQW1vdW50CQDMCAIFAmFFBQNuaWwFAWMBAmFHAAkAuQkCCQDMCAICAiVzCQDMCAICFHRvdGFsUmVtYWluaW5nQW1vdW50BQNuaWwFAWMBAmFIAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAmFJAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBAmFKAAkAtQkCCQEBYQEJAQJhaAAFAWMBAmFLAQJhTAkAtQkCCQELdmFsdWVPckVsc2UCCQCiCAEFAmFMCQEBWQUCATACATACATACATACATAFAWMBAmFNAAkBAmFLAQkBAmFrAAECYU4BAmFqCQECYUsBCQECYWkBBQJhagECYU8BAmFqCQC1CQIJAQFhAQkBAmFpAQUCYWoFAWMBAmFQAAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBAmFJAAACYVEAAAACYVIAAQACYVMAAgACYVQAAwECYVUFAWICYVYCYVcCYVgCYVkEAVoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVgUBVAQCYWEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVgUBVQQCYWIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVgUBVgQCYWMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVgUBVwQCYWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVgUBWAQCYVoJAGQCBQFaCQCRAwIFAmFXBQJhUQQCYmEJAGQCBQJhYQkAkQMCBQJhVwUCYVIEAmJiCQECYUoABAFPCQCRAwIFAmJiBQFEBAJiYwgJAQV2YWx1ZQEJAOwHAQkA2QQBBQFPCGRlY2ltYWxzBAJiZAkAawMFAmFZBQFlCQBsBgAKAAAFAmJjAAAAAAUERE9XTgQCYmUJAGUCCQBkAgUCYWIJAJEDAgUCYVcFAmFTBQJhWQQCYmYJAGQCCQBkAgUCYWMJAJEDAgUCYVcFAmFUBQJiZAQCYmcDCQBmAgAABQJiYQQCYmgJAGUCCQBlAgUCYVoFAmJlBQJiZgQCYmkDCQBmAgAABQJiaAAABQJiaAkBC1N0cmluZ0VudHJ5AgUBYgkBAmFlBQUCYVoFAmJpBQJiZQUCYmYFAmFYCQELU3RyaW5nRW50cnkCBQFiCQECYWUFBQJhWgUCYmEFAmJlBQJiZgUCYVgFAmJnAQJiagQCYWoBbQJhZwJiawkBC1N0cmluZ0VudHJ5AgkBAmFsAwIGaW52ZXN0BQJhagkA2AQBBQJiawkBAmFmAgUBbQUCYWcBAmJsBAJhagFtAmFnAmJrCQELU3RyaW5nRW50cnkCCQECYWwDAgVjbGFpbQUCYWoJANgEAQUCYmsJAQJhZgIFAW0FAmFnAQJibQMCYm4CYWoCYmsEAmJiCQECYUoABAFKCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmIFAXgEAUsJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYgUBeQQCYm8JAGQCBQFKBQFLBAFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmIFAXoEAUwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYgUBQQQBTQkAkQMCBQJiYgUBQgQCYnAJANkEAQUBTQQBTgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJiBQFDBAFPCQCRAwIFAmJiBQFEBAJicQkA2QQBBQFPBAFQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmIFAUUEAmJyCQClCAEFAmFqBAJicwkBAmFPAQUCYnIEAmJ0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnMFAVQEAmJ1CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYnMFAVgEAmJ2AwkAZwIFAUoFAmJ1BQFKBQJidQQCYncDCQBmAgUGaGVpZ2h0BQJibwUCYm8DCQBmAgUBSgUGaGVpZ2h0BQFKBQZoZWlnaHQEAmJ4CQBlAgUCYncFAmJ2BAJieQkAawMFAmJ0BQJieAUBSwQCYnoJAQFsBQUCYnkFAVAFAW8FAUwFAU4EAmJBCQAAAgUCYm4FAU8EAmJCCQELdmFsdWVPckVsc2UCCQCgCAEJAQJhbwAHBAJiQwkAzAgCAwkBASEBAwUCYkEFAmJCBwYJAAIBAhZVU0ROIGNsYWltIGlzIGRpc2FibGVkBQNuaWwDCQAAAgUCYkMFAmJDAwkAAAIFAmJuBQFPCQCYCgYJAMwIAgAACQDMCAIJAQEtAQUCYnkJAMwIAgUCYnkJAMwIAgAABQNuaWwFAmJ5BQJicQUCYnMFAmJ3CQDMCAIFAmJ5CQDMCAIFAmJ6BQNuaWwDCQAAAgUCYm4FAU0JAJgKBgkAzAgCAAAJAMwIAgkBAS0BBQJieQkAzAgCAAAJAMwIAgUCYnoFA25pbAUCYnoFAmJwBQJicwUCYncJAMwIAgUCYnkJAMwIAgUCYnoFA25pbAkAAgEJAKwCAgIVdW5zdXBwb3J0ZWQgYXNzZXRJZDogBQJibgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECYkQEAU8CYnICYkUCYkYEAmJHCQEFdmFsdWUBCQCfCAEJAQJhdwEFAU8EAmJICQEFdmFsdWUBCQCfCAEJAQJheQEFAU8EAmJJCQEFdmFsdWUBCQCfCAEJAQJhcQAEAmJKCQELdmFsdWVPckVsc2UCCQCfCAEJAQJhcgAAAAQCYksJAQlpc0RlZmluZWQBCQCfCAEJAQJhdQEAAAQCYkwDCQBmAgUCYkoAAAQCYk0JAQV2YWx1ZQEJAJ8IAQkBAmFzAQUCYkoEAmJOCQEFdmFsdWUBCQCfCAEJAQJhdQEFAmJKBAJiTwMJAGYCBQZoZWlnaHQFAmJOBAJiUAkAZAIFAmJKAAEEAmJRAwkAZgIFBmhlaWdodAkAZAIFAmJOBQJiSQQCYlIJAGoCCQBlAgUGaGVpZ2h0BQJiTgUCYkkDCQAAAgUCYlIAAAkAZAIJAGUCBQZoZWlnaHQFAmJJAAEJAGUCBQZoZWlnaHQFAmJSCQBkAgUCYk4AAQQCYlMJAGUCCQBkAgUCYlEFAmJJAAEJAJUKAwUCYlAFAmJRBQJiUwkAlQoDBQJiSgUCYk0FAmJOBAJiUAgFAmJPAl8xBAJiUQgFAmJPAl8yBAJiUwgFAmJPAl8zCQCVCgMFAmJQBQJiUQUCYlMDBQJiSwQCYlQJAQV2YWx1ZQEJAJ8IAQkBAmFzAQAABAJiVQkBBXZhbHVlAQkAnwgBCQECYXUBAAAEAmJWAwkAZgIFBmhlaWdodAUCYlUEAmJQCQBkAgUCYkoAAQQCYlEJAGQCBQJiVQABBAJiUwkAZQIJAGQCBQJiUQUCYkkAAQkAlQoDBQJiUAUCYlEFAmJTCQCVCgMFAmJKBQJiVAUCYlUEAmJQCAUCYlYCXzEEAmJRCAUCYlYCXzIEAmJTCAUCYlYCXzMJAJUKAwUCYlAFAmJRBQJiUwkAlQoDBQJiSgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXMBBQJiSgUGaGVpZ2h0CQELdmFsdWVPckVsc2UCCQCfCAEJAQJhdQEFAmJKCQBlAgkAZAIFBmhlaWdodAUCYkkAAQQCYlAIBQJiTAJfMQQCYlEIBQJiTAJfMgQCYlMIBQJiTAJfMwQCYlcJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmF6AgUBTwUCYlAFAmJHBAJiWAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYUEDBQFPBQJiUAUCYnIFAmJIBAJhWQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYUQBBQJicgAABAJiWQkAlwMBCQDMCAIJAGQCBQJiRQUCYVkJAMwIAgUCYlcJAMwIAgUCYlgFA25pbAQCYloJAQV2YWx1ZQEJAJ8IAQkBAmF2AAQCY2EFAWUEAmNiCgACY2MJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAoggBCQECYUIAAiFwdXRPbmVUa25WMldpdGhvdXRUYWtlRmVlUkVBRE9OTFkJAMwIAgUCY2EJAMwIAgUBTwUDbmlsBQNuaWwDCQABAgUCY2MCDyhJbnQsIEludCwgSW50KQUCY2MJAAIBCQCsAgIJAAMBBQJjYwIkIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50LCBJbnQpAwkAAAIFAmNiBQJjYgQCY2QIBQJjYgJfMwQCY2UIBQJjYgJfMgQCY2YIBQJjYgJfMQQCY2cJAQV2YWx1ZQEJAKIIAQkBAmFDAAQCY2gKAAJjYwkA/AcECQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBCQCiCAEJAQJhQgACE2dldE9uZVRrblYyUkVBRE9OTFkJAMwIAgUCY2cJAMwIAgUCY2YFA25pbAUDbmlsAwkAAQIFAmNjAgooSW50LCBJbnQpBQJjYwkAAgEJAKwCAgkAAwEFAmNjAh8gY291bGRuJ3QgYmUgY2FzdCB0byAoSW50LCBJbnQpAwkAAAIFAmNoBQJjaAQCY2kIBQJjaAJfMgQCY2oIBQJjaAJfMQQCY2sJAGsDBQJjYQUBZQUCY2oEAmNsCQBlAgUCYlMFBmhlaWdodAkAnAoKBQJiWQUCYlcFAmJYBQJiRgUCYloFAmNrBQJjbAUCYlAFAmJRBQJiUwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY20ABAJjbgkBAmFQAAQBagkAnQgCBQJjbgkBAmFIAAMJAAECBQFqAgZTdHJpbmcEAmNvBQFqCQDZBAEFAmNvAwkAAQIFAWoCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECY3ABAmNxBAJjcgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAFqCQECY20AAwkAAQIFAWoCCkJ5dGVWZWN0b3IEAmNzBQFqAwkAAAIIBQJjcQ9jYWxsZXJQdWJsaWNLZXkFAmNzBgUCY3IDCQABAgUBagIEVW5pdAMJAAACCAUCY3EGY2FsbGVyBQR0aGlzBgUCY3IJAAIBAgtNYXRjaCBlcnJvcgYCY3EBC2NvbnN0cnVjdG9yBwFIAUkBSgFLAW8BTwFRBAFMCQBoAgkAaAIAZADoBwDoBwQCY3QJAGQCBQFIBQFJAwkBCWlzRGVmaW5lZAEJAKIIAQkBAmFoAAkAAgECE2FscmVhZHkgaW5pdGlhbGl6ZWQDCQECIT0CAiMzUE1FSEx4MWo2emVyYXJaVFlmc0dxRGVlWnFRb01weHE1UwkApQgBCAUCY3EGY2FsbGVyCQACAQIObm90IGF1dGhvcml6ZWQDCQECIT0CCQCQAwEIBQJjcQhwYXltZW50cwABCQACAQIiZXhhY3RseSAxIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAMJAGcCBQJjdAUBSgkAAgECJmNsYWltU3RhcnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gaWRvRW5kBAJjdQkBBXZhbHVlAQkAkQMCCAUCY3EIcGF5bWVudHMAAAQCYnAJAQV2YWx1ZQEIBQJjdQdhc3NldElkBAJjdgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJwAhtmYWlsIHRvIGxvYWQgaWRvIGFzc2V0IGluZm8EAU0JANgEAQUCYnAEAU4JAGwGAAoAAAgFAmN2CGRlY2ltYWxzAAAAAAUERE9XTgQCYnEJANkEAQUBTwQCY3cJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJicQIdZmFpbCB0byBsb2FkIHByaWNlIGFzc2V0IGluZm8EAVAJAGwGAAoAAAgFAmN3CGRlY2ltYWxzAAAAAAUERE9XTgQCY3gJAQJhTQAEAmN5CQDMCAIAAAkAzAgCAAAJAMwIAgAACQDMCAIAAAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaAAJAQFTDAUBSAUBSQUBSgUBSwUBbwUBTAUBTQUBTgUBTwUBUAUBUQgFAmN1BmFtb3VudAkAzAgCCQECYVUFCQECYWsABQJjeAUCY3kFAUoAAAUDbmlsAmNxAQZpbnZlc3QABAJiYgkBAmFKAAQBSAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJiBQF2BAFJCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmIFAXcEAmN0CQBkAgUBSAUBSQQBSgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJiBQF4BAFLCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmIFAXkEAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYgUBegQBTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJiBQFBBAFNCQCRAwIFAmJiBQFCBAJicAkA2QQBBQFNBAFOCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmIFAUMEAU8JAJEDAgUCYmIFAUQEAmJxCQDZBAEFAU8EAVAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYgUBRQQCY3oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYgUBRgQCYWoJAKUIAQgFAmNxBmNhbGxlcgMJAGYCBQFIBQZoZWlnaHQJAAIBAhxpZG8gaGFzIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0AwkAZgIFBmhlaWdodAUCY3QJAAIBAhppZG8gaGFzIGJlZW4gYWxyZWFkeSBlbmRlZAMJAQIhPQIJAJADAQgFAmNxCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCY3UJAQV2YWx1ZQEJAJEDAggFAmNxCHBheW1lbnRzAAAEAmNBCQEFdmFsdWUBCAUCY3UHYXNzZXRJZAQCY0IIBQJjdQZhbW91bnQDCQECIT0CBQJjQQUCYnEJAAIBCQCsAgIJAKwCAgIaaW52YWxpZCBwYXltZW50IGFzc2V0IGlkOiAJANgEAQUCY0ECDCBpcyBleHBlY3RlZAQCY0MJAQJhTgEFAmFqBAJjeAkBAmFNAAQCY0QJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY3gFAVQFAmNCBAJjRQkAaAIFAmNEAGQDCQBmAgUCY0UJAPAHAgUEdGhpcwUCYnAJAAIBAjlJRE8gYXNzZXQgaGFzIGJlZW4gLSBzb2xkIGNvbnNpZGVyIHRvIHVzZSBzbWFsbGVyIHBheW1lbnQEAmN5CQDMCAIFAmNCCQDMCAIFAmNCCQDMCAIAAAkAzAgCAAAFA25pbAkAzAgCCQECYVUFCQECYWkBBQJhagUCY0MFAmN5BQFKAAAJAMwIAgkBAmFVBQkBAmFrAAUCY3gFAmN5BQFKAAAJAMwIAgkBAmJqBAUCYWoFAmNCAAAIBQJjcQ10cmFuc2FjdGlvbklkBQNuaWwCY3EBBWNsYWltAgJibgJicgQCY0YJAKUIAQgFAmNxBmNhbGxlcgMJAQIhPQIFAmJyBQJjRgkAAgECDm5vdCBhdXRob3JpemVkBAJiYgkBAmFKAAQBTwkAkQMCBQJiYgUBRAQCY0cJAQJibQMFAmJuCAUCY3EGY2FsbGVyCAUCY3ENdHJhbnNhY3Rpb25JZAQCY3kIBQJjRwJfMQQCYkUIBQJjRwJfMgQCY0gIBQJjRwJfMwQCYnMIBQJjRwJfNAQCYncIBQJjRwJfNQQCY0kJAJEDAgUCY3kFAmFTBAJjSgkAkQMCBQJjeQUCYVQEAmFZCQELdmFsdWVPckVsc2UCCQCfCAEJAQJhRAEFAmJyAAAEAmJjCAkBBXZhbHVlAQkA7AcBCQDZBAEFAU8IZGVjaW1hbHMEAmJnAwkAAAIFAmJuBQFPBAJjSwkBAmJEBAUBTwUCYnIFAmJFCQCRAwIFAmN5BQJhUwQCYlkIBQJjSwJfMQQCYlcIBQJjSwJfMgQCYlgIBQJjSwJfMwQCYkYIBQJjSwJfNAQCYloIBQJjSwJfNQQCY2sIBQJjSwJfNgQCY2wIBQJjSwJfNwQCYlAIBQJjSwJfOAQCYlEIBQJjSwJfOQQCYlMIBQJjSwNfMTAEAmJDCQDMCAIDCQBmAgUCYlgAAAYJAQFmAQI6dW5hdmFpbGFibGUgdG8gY2xhaW0gYmVjYXVzZSB1c2VyIHBlcmlvZCBhbGxvd2FuY2UgcmVhY2hlZAkAzAgCAwkAZgIFAmJXAAAGCQEBZgECO3VuYXZhaWxhYmxlIHRvIGNsYWltIGJlY2F1c2UgdG90YWwgcGVyaW9kIGFsbG93YW5jZSByZWFjaGVkCQDMCAIDCQBmAgUCYlkAAAYJAQFmAQIQbm90aGluZyB0byBjbGFpbQkAzAgCAwkAZgIFAmJaBQJjawYJAQFmAQJPdW5hdmFpbGFibGUgdG8gY2xhaW0gYmVjYXVzZSB1c2RuIHByaWNlIGxvd2VyIHRoYW4gdXNkdFByaWNlQXNzZXRBbGxvd2FibGVSYXRpbwUDbmlsAwkAAAIFAmJDBQJiQwQCY0wJAGUCBQJiVwUCYlkEAmNNCQBlAgUCYlgFAmJZBAJiZwMJAGYCBQJhWQUCYlkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmNxBmNhbGxlcgUCYlkFAmNICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYUQBBQJicgkAZQIFAmFZBQJiWQUDbmlsBAJjTgkAtQkCCQEBaAEJAPwHBAUEdGhpcwINY2xhaW1SRUFET05MWQkAzAgCBQFPCQDMCAIFAmJyBQNuaWwFA25pbAUBYwMJAAACBQJjTgUCY04EAmNPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY04AAwQCY1ADCQAAAgUCY08FAmJZBAJjUQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJzBQFUBAJjUgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJzBQFVBAJjUwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJzBQFWBAJjVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJzBQFXBAJjVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJzBQFYBAJjVgkAzAgCCQCkAwEFAmNRCQDMCAICATAJAMwIAgkApAMBBQJjUwkAzAgCCQCkAwEFAmNUCQDMCAIJAKQDAQUCY1UFA25pbAQCY1cJAQJhTQAEAmNYCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1cFAVQEAmNZCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1cFAVUEAmNaCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1cFAVYEAmRhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1cFAVcEAmRiCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1cFAVgEAmRjCQBlAgUCY1kFAmNSBAJkZAkAzAgCCQCkAwEFAmNYCQDMCAIJAKQDAQUCZGMJAMwIAgkApAMBBQJjWgkAzAgCCQCkAwEFAmRhCQDMCAIJAKQDAQUCZGIFA25pbAQCZGUJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEJAQJhRwAAAAUCY1IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFGAQUCYnIJAKQDAQUCY1IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFHAAkApAMBBQJkZQkAzAgCCQECYVUFCQECYWkBBQJicgUCY1YFAmN5BQJidwAACQDMCAIJAQJhVQUJAQJhawAFAmRkBQJjeQUCYncAAAUDbmlsCQDMCAIJAQJhVQUJAQJhaQEFAmJyBQJicwUCY3kFAmJ3AAAJAMwIAgkBAmFVBQkBAmFrAAkBAmFNAAUCY3kFAmJ3AAAFA25pbAQCZGYJAGUCCQBkAgUCYVkFAmJFBQJiWQkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjcQZjYWxsZXIFAmJZBQJjSAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFEAQUCYnIFAmRmBQNuaWwFAmNQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFyAAUCYlAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcwEFAmJQBQJiUQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmF1AQUCYlAFAmJTCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXoCBQFPBQJiUAUCY0wJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhQQMFAU8FAmJQBQJicgUCY00JAMwIAgkBAmJsBAUCYnIFAmJZBQJjSggFAmNxDXRyYW5zYWN0aW9uSWQFA25pbAUCYmcFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAmRnCQBrAwUCYVkFAWUJAGwGAAoAAAUCYmMAAAAABQRET1dOCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmNxBmNhbGxlcgkAZAIFAmJFBQJkZwUCY0gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhRAEFAmJyAAAJAMwIAgkBAmFVBQkBAmFpAQUCYnIFAmJzBQJjeQUCYncFAmFZCQDMCAIJAQJhVQUJAQJhawAJAQJhTQAFAmN5BQJidwUCYVkJAMwIAgkBAmJsBAUCYnIFAmNJCQBkAgUCY0oFAmRnCAUCY3ENdHJhbnNhY3Rpb25JZAUDbmlsBQR1bml0BQJiZwJjcQESY2xlYW5SZW1haW5nQW1vdW50AQJicgQBTwkAkQMCCQECYUoABQFEBAJjTgkAtQkCCQEBaAEJAPwHBAUEdGhpcwINY2xhaW1SRUFET05MWQkAzAgCBQFPCQDMCAIFAmJyBQNuaWwFA25pbAUBYwMJAAACBQJjTgUCY04EAmNPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY04AAgQCZGgDCQAAAgUCY08AAAYJAQFmAQIadXNlciBoYXZlIHVuY2xhaW1lZCBhc3NldHMDCQAAAgUCZGgFAmRoBAJkaQkAtQkCCQEFdmFsdWUBCQCiCAEJAQJhaQEFAmJyBQFjBAJjUQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQFUBAJjUgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQFVBAJjUwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQFWBAJjVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQFXBAJjVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQFYBAJkagMJAQIhPQIFAmNSAAAGCQEBZgECJGludmVzdG9yUmVtYWluaW5nQW1vdW50IGFscmVhZHkgemVybwMJAAACBQJkagUCZGoEAmRrCQC5CQIJAMwIAgIKJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNRCQDMCAICATAJAMwIAgkApAMBBQJjUwkAzAgCCQCkAwEFAmNUCQDMCAIJAKQDAQUCY1UFA25pbAUBYwQCY1cJALUJAgkBBXZhbHVlAQkAoggBCQECYWsABQFjBAJjWAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFUBAJjWQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFVBAJjWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFWBAJkYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFXBAJkYgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNXBQFYBAJkbAkAuQkCCQDMCAICCiVkJWQlZCVkJWQJAMwIAgkApAMBBQJjWAkAzAgCCQCkAwEJAGUCBQJjWQUCY1IJAMwIAgkApAMBBQJjWgkAzAgCCQCkAwEFAmRhCQDMCAIJAKQDAQUCZGIFA25pbAUBYwQCZGUJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEJAQJhRwAAAAUCY1IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFGAQUCYnIJAKQDAQUCY1IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFHAAkApAMBBQJkZQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWkBBQJicgUCZGsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFrAAUCZGwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjcQENY2xhaW1SRUFET05MWQICYm4CYnIEAmNHCQECYm0DBQJibgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYnIJANkEAQIABAJjeQgFAmNHAl8xBAJiRQgFAmNHAl8yBAJjSAgFAmNHAl8zBAJicwgFAmNHAl80BAJidwgFAmNHAl81BAJkbQgFAmNHAl82BAJjTwkAkQMCBQJkbQAABAJkbgkAkQMCBQJkbQABCQCUCgIFA25pbAkAuQkCCQDMCAICBiVzJWQlZAkAzAgCBQJicgkAzAgCCQCkAwEFAmNPCQDMCAIJAKQDAQUCZG4FA25pbAUBYwJjcQEPY2xhaW1WMlJFQURPTkxZAgJibgJicgQCY0cJAQJibQMFAmJuCQERQGV4dHJOYXRpdmUoMTA2MikBBQJicgkA2QQBAgAEAmN5CAUCY0cCXzEEAmJFCAUCY0cCXzIEAmNICAUCY0cCXzMEAmJzCAUCY0cCXzQEAmJ3CAUCY0cCXzUEAmRtCAUCY0cCXzYEAmNPCQCRAwIFAmRtAAAEAmRuCQCRAwIFAmRtAAEEAmJiCQECYUoABAFPCQCRAwIFAmJiBQFEBAJhWQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYUQBBQJicgAABAJkZwkAaAIFAmFZAGQEAmRvCQBkAgUCZG4FAmRnBAJkcAkBAmJEBAUBTwUCYnIFAmJFCQCRAwIFAmN5BQJhUwQCYlkIBQJkcAJfMQQCYlcIBQJkcAJfMgQCYlgIBQJkcAJfMwQCYkYIBQJkcAJfNAQCYloIBQJkcAJfNQQCY2sIBQJkcAJfNgQCY2wIBQJkcAJfNwQCYlAIBQJkcAJfOAQCYlEIBQJkcAJfOQQCYlMIBQJkcANfMTAEAmRxCQELdmFsdWVPckVsc2UCCQCfCAEJAQJhdQEFAmJQAAAEAmRyCQBlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIJAQJhTwEFAmJyBQFWBQJhWQQCZHMDCQBmAgUGaGVpZ2h0BQJkcQQCZHQJAQV2YWx1ZQEJAJ8IAQkBAmFxAAQCZHUJAQV2YWx1ZQEJAJ8IAQkBAmF5AQUBTwQCZHYJAQV2YWx1ZQEJAJ8IAQkBAmF3AQUBTwkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmRvCQDMCAIJAKQDAQUCZHUJAMwIAgkApAMBBQJkdgkAzAgCCQCkAwEFAmJaCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJkdAkAzAgCCQCkAwEFAmRyBQNuaWwFAWMJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJkbwkAzAgCCQCkAwEFAmJZCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWgkAzAgCCQCkAwEFAmNrCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJkcgUDbmlsBQFjCQCUCgIFA25pbAUCZHMBAmR3AQJkeAAEAmR5BAFqCQECY20AAwkAAQIFAWoCCkJ5dGVWZWN0b3IEAmNzBQFqBQJjcwMJAAECBQFqAgRVbml0CAUCZHcPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmR3CWJvZHlCeXRlcwkAkQMCCAUCZHcGcHJvb2ZzAAAFAmR5VOajIA==", "height": 2562780, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 4f29r3Rifad8HW7x6XTxQu9UJTY38KEgaB7s9HGyiYyY Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+func a (b) = valueOrErrorMessage(getString(b), (("mandatory this." + b) + " is not defined"))
5+
6+
7+let c = "__"
8+
9+let d = toBigInt(1000000000000000000)
10+
11+let e = 100000000
12+
13+func f (g) = throw(makeString(["ido.ride:", g], " "))
14+
15+
16+func h (i) = {
17+ let j = i
18+ if ($isInstanceOf(j, "String"))
19+ then {
20+ let k = j
21+ k
22+ }
23+ else throw("fail to cast into String")
24+ }
25+
26+
27+func l (m,n,o,p,q) = {
28+ let r = toBigInt(n)
29+ let s = toBigInt(q)
30+ let t = fraction(toBigInt(m), d, r)
31+ let u = fraction(t, toBigInt(p), toBigInt(o))
32+ toInt(fraction(u, toBigInt(q), d))
33+ }
34+
35+
36+let v = 1
37+
38+let w = 2
39+
40+let x = 3
41+
42+let y = 4
43+
44+let z = 5
45+
46+let A = 6
47+
48+let B = 7
49+
50+let C = 8
51+
52+let D = 9
53+
54+let E = 10
55+
56+let F = 11
57+
58+func G (H,I,J,K,o,L,M,N,O,P,Q,R) = makeString(["%d%d%d%d%d%d%s%d%s%d%d%d", H, I, J, K, o, L, M, N, O, P, Q, R], c)
59+
60+
61+func S (H,I,J,K,o,L,M,N,O,P,Q,R) = G(toString(H), toString(I), toString(J), toString(K), toString(o), toString(L), M, toString(N), O, toString(P), toString(Q), toString(R))
62+
63+
64+let T = 1
65+
66+let U = 2
67+
68+let V = 3
69+
70+let W = 4
71+
72+let X = 5
73+
74+func Y (Z,aa,ab,ac,ad) = makeString(["%d%d%d%d%d", Z, aa, ab, ac, ad], c)
75+
76+
77+func ae (Z,aa,ab,ac,ad) = Y(toString(Z), toString(aa), toString(ab), toString(ac), toString(ad))
78+
79+
80+func af (m,ag) = makeString(["%d%d%d%d", toString(height), toString(lastBlock.timestamp), toString(m), toString(ag)], c)
81+
82+
83+func ah () = "%s__config"
84+
85+
86+func ai (aj) = ("%s__" + aj)
87+
88+
89+func ak () = "%s__totals"
90+
91+
92+func al (am,aj,an) = makeString(["%s%s%s%s__history", am, aj, an], c)
93+
94+
95+func ao () = "%s__usdnClaimDisabled"
96+
97+
98+func ap () = "%s__usdnClaimEndHeight"
99+
100+
101+func aq () = makeString(["%s", "periodLength"], c)
102+
103+
104+func ar () = makeString(["%s", "currentPeriod"], c)
105+
106+
107+func as (at) = makeString(["%s%s", "periodStartHeight", toString(at)], c)
108+
109+
110+func au (at) = makeString(["%s%s", "periodEndHeight", toString(at)], c)
111+
112+
113+func av () = makeString(["%s", "usdtPriceAssetAllowableRatio"], c)
114+
115+
116+func aw (ax) = makeString(["%s%s", "totalPeriodAllowance", ax], c)
117+
118+
119+func ay (ax) = makeString(["%s%s", "userPeriodAllowance", ax], c)
120+
121+
122+func az (ax,at) = makeString(["%s%s%s", "periodTotalAvailableToClaim", ax, toString(at)], c)
123+
124+
125+func aA (ax,at,aj) = makeString(["%s%s%s%s", "periodUserAvailableToClaim", ax, toString(at), aj], c)
126+
127+
128+func aB () = makeString(["%s", "usdtPriceAssetStablePool"], c)
129+
130+
131+func aC () = makeString(["%s", "usdtAssetId"], c)
132+
133+
134+func aD (aE) = makeString(["%s%s", "priceAssetBalance", aE], c)
135+
136+
137+func aF (aE) = makeString(["%s%s", "investorRemainingAmount", aE], c)
138+
139+
140+func aG () = makeString(["%s", "totalRemainingAmount"], c)
141+
142+
143+func aH () = "%s__managerPublicKey"
144+
145+
146+func aI () = "%s__managerVaultAddress"
147+
148+
149+func aJ () = split(a(ah()), c)
150+
151+
152+func aK (aL) = split(valueOrElse(getString(aL), Y("0", "0", "0", "0", "0")), c)
153+
154+
155+func aM () = aK(ak())
156+
157+
158+func aN (aj) = aK(ai(aj))
159+
160+
161+func aO (aj) = split(a(ai(aj)), c)
162+
163+
164+func aP () = addressFromStringValue(getStringValue(aI()))
165+
166+
167+let aQ = 0
168+
169+let aR = 1
170+
171+let aS = 2
172+
173+let aT = 3
174+
175+func aU (b,aV,aW,aX,aY) = {
176+ let Z = parseIntValue(aV[T])
177+ let aa = parseIntValue(aV[U])
178+ let ab = parseIntValue(aV[V])
179+ let ac = parseIntValue(aV[W])
180+ let ad = parseIntValue(aV[X])
181+ let aZ = (Z + aW[aQ])
182+ let ba = (aa + aW[aR])
183+ let bb = aJ()
184+ let O = bb[D]
185+ let bc = value(assetInfo(fromBase58String(O))).decimals
186+ let bd = fraction(aY, e, pow(10, 0, bc, 0, 0, DOWN))
187+ let be = ((ab + aW[aS]) - aY)
188+ let bf = ((ac + aW[aT]) + bd)
189+ let bg = if ((0 > ba))
190+ then {
191+ let bh = ((aZ - be) - bf)
192+ let bi = if ((0 > bh))
193+ then 0
194+ else bh
195+ StringEntry(b, ae(aZ, bi, be, bf, aX))
196+ }
197+ else StringEntry(b, ae(aZ, ba, be, bf, aX))
198+ bg
199+ }
200+
201+
202+func bj (aj,m,ag,bk) = StringEntry(al("invest", aj, toBase58String(bk)), af(m, ag))
203+
204+
205+func bl (aj,m,ag,bk) = StringEntry(al("claim", aj, toBase58String(bk)), af(m, ag))
206+
207+
208+func bm (bn,aj,bk) = {
209+ let bb = aJ()
210+ let J = parseIntValue(bb[x])
211+ let K = parseIntValue(bb[y])
212+ let bo = (J + K)
213+ let o = parseIntValue(bb[z])
214+ let L = parseIntValue(bb[A])
215+ let M = bb[B]
216+ let bp = fromBase58String(M)
217+ let N = parseIntValue(bb[C])
218+ let O = bb[D]
219+ let bq = fromBase58String(O)
220+ let P = parseIntValue(bb[E])
221+ let br = toString(aj)
222+ let bs = aO(br)
223+ let bt = parseIntValue(bs[T])
224+ let bu = parseIntValue(bs[X])
225+ let bv = if ((J >= bu))
226+ then J
227+ else bu
228+ let bw = if ((height > bo))
229+ then bo
230+ else if ((J > height))
231+ then J
232+ else height
233+ let bx = (bw - bv)
234+ let by = fraction(bt, bx, K)
235+ let bz = l(by, P, o, L, N)
236+ let bA = (bn == O)
237+ let bB = valueOrElse(getBoolean(ao()), false)
238+ let bC = [if (!(if (bA)
239+ then bB
240+ else false))
241+ then true
242+ else throw("USDN claim is disabled")]
243+ if ((bC == bC))
244+ then if ((bn == O))
245+ then $Tuple6([0, -(by), by, 0], by, bq, bs, bw, [by, bz])
246+ else if ((bn == M))
247+ then $Tuple6([0, -(by), 0, bz], bz, bp, bs, bw, [by, bz])
248+ else throw(("unsupported assetId: " + bn))
249+ else throw("Strict value is not equal to itself.")
250+ }
251+
252+
253+func bD (O,br,bE,bF) = {
254+ let bG = value(getInteger(aw(O)))
255+ let bH = value(getInteger(ay(O)))
256+ let bI = value(getInteger(aq()))
257+ let bJ = valueOrElse(getInteger(ar()), 0)
258+ let bK = isDefined(getInteger(au(0)))
259+ let bL = if ((bJ > 0))
260+ then {
261+ let bM = value(getInteger(as(bJ)))
262+ let bN = value(getInteger(au(bJ)))
263+ let bO = if ((height > bN))
264+ then {
265+ let bP = (bJ + 1)
266+ let bQ = if ((height > (bN + bI)))
267+ then {
268+ let bR = ((height - bN) % bI)
269+ if ((bR == 0))
270+ then ((height - bI) + 1)
271+ else (height - bR)
272+ }
273+ else (bN + 1)
274+ let bS = ((bQ + bI) - 1)
275+ $Tuple3(bP, bQ, bS)
276+ }
277+ else $Tuple3(bJ, bM, bN)
278+ let bP = bO._1
279+ let bQ = bO._2
280+ let bS = bO._3
281+ $Tuple3(bP, bQ, bS)
282+ }
283+ else if (bK)
284+ then {
285+ let bT = value(getInteger(as(0)))
286+ let bU = value(getInteger(au(0)))
287+ let bV = if ((height > bU))
288+ then {
289+ let bP = (bJ + 1)
290+ let bQ = (bU + 1)
291+ let bS = ((bQ + bI) - 1)
292+ $Tuple3(bP, bQ, bS)
293+ }
294+ else $Tuple3(bJ, bT, bU)
295+ let bP = bV._1
296+ let bQ = bV._2
297+ let bS = bV._3
298+ $Tuple3(bP, bQ, bS)
299+ }
300+ else $Tuple3(bJ, valueOrElse(getInteger(as(bJ)), height), valueOrElse(getInteger(au(bJ)), ((height + bI) - 1)))
301+ let bP = bL._1
302+ let bQ = bL._2
303+ let bS = bL._3
304+ let bW = valueOrElse(getInteger(az(O, bP)), bG)
305+ let bX = valueOrElse(getInteger(aA(O, bP, br)), bH)
306+ let aY = valueOrElse(getInteger(aD(br)), 0)
307+ let bY = min([(bE + aY), bW, bX])
308+ let bZ = value(getInteger(av()))
309+ let ca = e
310+ let cb = {
311+ let cc = invoke(addressFromStringValue(value(getString(aB()))), "putOneTknV2WithoutTakeFeeREADONLY", [ca, O], nil)
312+ if ($isInstanceOf(cc, "(Int, Int, Int)"))
313+ then cc
314+ else throw(($getType(cc) + " couldn't be cast to (Int, Int, Int)"))
315+ }
316+ if ((cb == cb))
317+ then {
318+ let cd = cb._3
319+ let ce = cb._2
320+ let cf = cb._1
321+ let cg = value(getString(aC()))
322+ let ch = {
323+ let cc = invoke(addressFromStringValue(value(getString(aB()))), "getOneTknV2READONLY", [cg, cf], nil)
324+ if ($isInstanceOf(cc, "(Int, Int)"))
325+ then cc
326+ else throw(($getType(cc) + " couldn't be cast to (Int, Int)"))
327+ }
328+ if ((ch == ch))
329+ then {
330+ let ci = ch._2
331+ let cj = ch._1
332+ let ck = fraction(ca, e, cj)
333+ let cl = (bS - height)
334+ $Tuple10(bY, bW, bX, bF, bZ, ck, cl, bP, bQ, bS)
335+ }
336+ else throw("Strict value is not equal to itself.")
337+ }
338+ else throw("Strict value is not equal to itself.")
339+ }
340+
341+
342+func cm () = {
343+ let cn = aP()
344+ let j = getString(cn, aH())
345+ if ($isInstanceOf(j, "String"))
346+ then {
347+ let co = j
348+ fromBase58String(co)
349+ }
350+ else if ($isInstanceOf(j, "Unit"))
351+ then unit
352+ else throw("Match error")
353+ }
354+
355+
356+func cp (cq) = {
357+ let cr = throw("Permission denied")
358+ let j = cm()
359+ if ($isInstanceOf(j, "ByteVector"))
360+ then {
361+ let cs = j
362+ if ((cq.callerPublicKey == cs))
363+ then true
364+ else cr
365+ }
366+ else if ($isInstanceOf(j, "Unit"))
367+ then if ((cq.caller == this))
368+ then true
369+ else cr
370+ else throw("Match error")
371+ }
372+
373+
374+@Callable(cq)
375+func constructor (H,I,J,K,o,O,Q) = {
376+ let L = ((100 * 1000) * 1000)
377+ let ct = (H + I)
378+ if (isDefined(getString(ah())))
379+ then throw("already initialized")
380+ else if (("3PMEHLx1j6zerarZTYfsGqDeeZqQoMpxq5S" != toString(cq.caller)))
381+ then throw("not authorized")
382+ else if ((size(cq.payments) != 1))
383+ then throw("exactly 1 payment must be attached")
384+ else if ((ct >= J))
385+ then throw("claimStart must be greater than idoEnd")
386+ else {
387+ let cu = value(cq.payments[0])
388+ let bp = value(cu.assetId)
389+ let cv = valueOrErrorMessage(assetInfo(bp), "fail to load ido asset info")
390+ let M = toBase58String(bp)
391+ let N = pow(10, 0, cv.decimals, 0, 0, DOWN)
392+ let bq = fromBase58String(O)
393+ let cw = valueOrErrorMessage(assetInfo(bq), "fail to load price asset info")
394+ let P = pow(10, 0, cw.decimals, 0, 0, DOWN)
395+ let cx = aM()
396+ let cy = [0, 0, 0, 0]
397+[StringEntry(ah(), S(H, I, J, K, o, L, M, N, O, P, Q, cu.amount)), aU(ak(), cx, cy, J, 0)]
398+ }
399+ }
400+
401+
402+
403+@Callable(cq)
404+func invest () = {
405+ let bb = aJ()
406+ let H = parseIntValue(bb[v])
407+ let I = parseIntValue(bb[w])
408+ let ct = (H + I)
409+ let J = parseIntValue(bb[x])
410+ let K = parseIntValue(bb[y])
411+ let o = parseIntValue(bb[z])
412+ let L = parseIntValue(bb[A])
413+ let M = bb[B]
414+ let bp = fromBase58String(M)
415+ let N = parseIntValue(bb[C])
416+ let O = bb[D]
417+ let bq = fromBase58String(O)
418+ let P = parseIntValue(bb[E])
419+ let cz = parseIntValue(bb[F])
420+ let aj = toString(cq.caller)
421+ if ((H > height))
422+ then throw("ido has not been started yet")
423+ else if ((height > ct))
424+ then throw("ido has been already ended")
425+ else if ((size(cq.payments) != 1))
426+ then throw("exactly 1 payment is expected")
427+ else {
428+ let cu = value(cq.payments[0])
429+ let cA = value(cu.assetId)
430+ let cB = cu.amount
431+ if ((cA != bq))
432+ then throw((("invalid payment asset id: " + toBase58String(cA)) + " is expected"))
433+ else {
434+ let cC = aN(aj)
435+ let cx = aM()
436+ let cD = (parseIntValue(cx[T]) + cB)
437+ let cE = (cD * 100)
438+ if ((cE > assetBalance(this, bp)))
439+ then throw("IDO asset has been - sold consider to use smaller payment")
440+ else {
441+ let cy = [cB, cB, 0, 0]
442+[aU(ai(aj), cC, cy, J, 0), aU(ak(), cx, cy, J, 0), bj(aj, cB, 0, cq.transactionId)]
443+ }
444+ }
445+ }
446+ }
447+
448+
449+
450+@Callable(cq)
451+func claim (bn,br) = {
452+ let cF = toString(cq.caller)
453+ if ((br != cF))
454+ then throw("not authorized")
455+ else {
456+ let bb = aJ()
457+ let O = bb[D]
458+ let cG = bm(bn, cq.caller, cq.transactionId)
459+ let cy = cG._1
460+ let bE = cG._2
461+ let cH = cG._3
462+ let bs = cG._4
463+ let bw = cG._5
464+ let cI = cy[aS]
465+ let cJ = cy[aT]
466+ let aY = valueOrElse(getInteger(aD(br)), 0)
467+ let bc = value(assetInfo(fromBase58String(O))).decimals
468+ let bg = if ((bn == O))
469+ then {
470+ let cK = bD(O, br, bE, cy[aS])
471+ let bY = cK._1
472+ let bW = cK._2
473+ let bX = cK._3
474+ let bF = cK._4
475+ let bZ = cK._5
476+ let ck = cK._6
477+ let cl = cK._7
478+ let bP = cK._8
479+ let bQ = cK._9
480+ let bS = cK._10
481+ let bC = [if ((bX > 0))
482+ then true
483+ else f("unavailable to claim because user period allowance reached"), if ((bW > 0))
484+ then true
485+ else f("unavailable to claim because total period allowance reached"), if ((bY > 0))
486+ then true
487+ else f("nothing to claim"), if ((bZ > ck))
488+ then true
489+ else f("unavailable to claim because usdn price lower than usdtPriceAssetAllowableRatio")]
490+ if ((bC == bC))
491+ then {
492+ let cL = (bW - bY)
493+ let cM = (bX - bY)
494+ let bg = if ((aY > bY))
495+ then [ScriptTransfer(cq.caller, bY, cH), IntegerEntry(aD(br), (aY - bY))]
496+ else {
497+ let cN = split(h(invoke(this, "claimREADONLY", [O, br], nil)), c)
498+ if ((cN == cN))
499+ then {
500+ let cO = parseIntValue(cN[3])
501+ let cP = if ((cO == bY))
502+ then {
503+ let cQ = parseIntValue(bs[T])
504+ let cR = parseIntValue(bs[U])
505+ let cS = parseIntValue(bs[V])
506+ let cT = parseIntValue(bs[W])
507+ let cU = parseIntValue(bs[X])
508+ let cV = [toString(cQ), "0", toString(cS), toString(cT), toString(cU)]
509+ let cW = aM()
510+ let cX = parseIntValue(cW[T])
511+ let cY = parseIntValue(cW[U])
512+ let cZ = parseIntValue(cW[V])
513+ let da = parseIntValue(cW[W])
514+ let db = parseIntValue(cW[X])
515+ let dc = (cY - cR)
516+ let dd = [toString(cX), toString(dc), toString(cZ), toString(da), toString(db)]
517+ let de = (valueOrElse(getInteger(aG()), 0) + cR)
518+[StringEntry(aF(br), toString(cR)), StringEntry(aG(), toString(de)), aU(ai(br), cV, cy, bw, 0), aU(ak(), dd, cy, bw, 0)]
519+ }
520+ else [aU(ai(br), bs, cy, bw, 0), aU(ak(), aM(), cy, bw, 0)]
521+ let df = ((aY + bE) - bY)
522+ ([ScriptTransfer(cq.caller, bY, cH), IntegerEntry(aD(br), df)] ++ cP)
523+ }
524+ else throw("Strict value is not equal to itself.")
525+ }
526+ $Tuple2(([IntegerEntry(ar(), bP), IntegerEntry(as(bP), bQ), IntegerEntry(au(bP), bS), IntegerEntry(az(O, bP), cL), IntegerEntry(aA(O, bP, br), cM), bl(br, bY, cJ, cq.transactionId)] ++ bg), unit)
527+ }
528+ else throw("Strict value is not equal to itself.")
529+ }
530+ else {
531+ let dg = fraction(aY, e, pow(10, 0, bc, 0, 0, DOWN))
532+ $Tuple2([ScriptTransfer(cq.caller, (bE + dg), cH), IntegerEntry(aD(br), 0), aU(ai(br), bs, cy, bw, aY), aU(ak(), aM(), cy, bw, aY), bl(br, cI, (cJ + dg), cq.transactionId)], unit)
533+ }
534+ bg
535+ }
536+ }
537+
538+
539+
540+@Callable(cq)
541+func cleanRemaingAmount (br) = {
542+ let O = aJ()[D]
543+ let cN = split(h(invoke(this, "claimREADONLY", [O, br], nil)), c)
544+ if ((cN == cN))
545+ then {
546+ let cO = parseIntValue(cN[2])
547+ let dh = if ((cO == 0))
548+ then true
549+ else f("user have unclaimed assets")
550+ if ((dh == dh))
551+ then {
552+ let di = split(value(getString(ai(br))), c)
553+ let cQ = parseIntValue(di[T])
554+ let cR = parseIntValue(di[U])
555+ let cS = parseIntValue(di[V])
556+ let cT = parseIntValue(di[W])
557+ let cU = parseIntValue(di[X])
558+ let dj = if ((cR != 0))
559+ then true
560+ else f("investorRemainingAmount already zero")
561+ if ((dj == dj))
562+ then {
563+ let dk = makeString(["%d%d%d%d%d", toString(cQ), "0", toString(cS), toString(cT), toString(cU)], c)
564+ let cW = split(value(getString(ak())), c)
565+ let cX = parseIntValue(cW[T])
566+ let cY = parseIntValue(cW[U])
567+ let cZ = parseIntValue(cW[V])
568+ let da = parseIntValue(cW[W])
569+ let db = parseIntValue(cW[X])
570+ let dl = makeString(["%d%d%d%d%d", toString(cX), toString((cY - cR)), toString(cZ), toString(da), toString(db)], c)
571+ let de = (valueOrElse(getInteger(aG()), 0) + cR)
572+[StringEntry(aF(br), toString(cR)), StringEntry(aG(), toString(de)), StringEntry(ai(br), dk), StringEntry(ak(), dl)]
573+ }
574+ else throw("Strict value is not equal to itself.")
575+ }
576+ else throw("Strict value is not equal to itself.")
577+ }
578+ else throw("Strict value is not equal to itself.")
579+ }
580+
581+
582+
583+@Callable(cq)
584+func claimREADONLY (bn,br) = {
585+ let cG = bm(bn, addressFromStringValue(br), fromBase58String(""))
586+ let cy = cG._1
587+ let bE = cG._2
588+ let cH = cG._3
589+ let bs = cG._4
590+ let bw = cG._5
591+ let dm = cG._6
592+ let cO = dm[0]
593+ let dn = dm[1]
594+ $Tuple2(nil, makeString(["%s%d%d", br, toString(cO), toString(dn)], c))
595+ }
596+
597+
598+
599+@Callable(cq)
600+func claimV2READONLY (bn,br) = {
601+ let cG = bm(bn, addressFromStringValue(br), fromBase58String(""))
602+ let cy = cG._1
603+ let bE = cG._2
604+ let cH = cG._3
605+ let bs = cG._4
606+ let bw = cG._5
607+ let dm = cG._6
608+ let cO = dm[0]
609+ let dn = dm[1]
610+ let bb = aJ()
611+ let O = bb[D]
612+ let aY = valueOrElse(getInteger(aD(br)), 0)
613+ let dg = (aY * 100)
614+ let do = (dn + dg)
615+ let dp = bD(O, br, bE, cy[aS])
616+ let bY = dp._1
617+ let bW = dp._2
618+ let bX = dp._3
619+ let bF = dp._4
620+ let bZ = dp._5
621+ let ck = dp._6
622+ let cl = dp._7
623+ let bP = dp._8
624+ let bQ = dp._9
625+ let bS = dp._10
626+ let dq = valueOrElse(getInteger(au(bP)), 0)
627+ let dr = (parseIntValue(aO(br)[V]) - aY)
628+ let ds = if ((height > dq))
629+ then {
630+ let dt = value(getInteger(aq()))
631+ let du = value(getInteger(ay(O)))
632+ let dv = value(getInteger(aw(O)))
633+ makeString(["%d%d%d%d%d%d", toString(do), toString(du), toString(dv), toString(bZ), toString(ck), toString(dt), toString(dr)], c)
634+ }
635+ else makeString(["%d%d%d%d%d%d", toString(do), toString(bY), toString(bW), toString(bZ), toString(ck), toString(cl), toString(dr)], c)
636+ $Tuple2(nil, ds)
637+ }
638+
639+
640+@Verifier(dw)
641+func dx () = {
642+ let dy = {
643+ let j = cm()
644+ if ($isInstanceOf(j, "ByteVector"))
645+ then {
646+ let cs = j
647+ cs
648+ }
649+ else if ($isInstanceOf(j, "Unit"))
650+ then dw.senderPublicKey
651+ else throw("Match error")
652+ }
653+ sigVerify(dw.bodyBytes, dw.proofs[0], dy)
654+ }
655+

github/deemru/w8io/873ac7e 
74.40 ms