tx · AsabePkJnfKi5sgTSiQWTc6vpHT77UFK5TEFkJT7tF5R

3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm:  -0.05400000 Waves

2023.05.13 15:09 [2576151] smart account 3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm > SELF 0.00000000 Waves

{ "type": 13, "id": "AsabePkJnfKi5sgTSiQWTc6vpHT77UFK5TEFkJT7tF5R", "fee": 5400000, "feeAssetId": null, "timestamp": 1683979784683, "version": 2, "chainId": 84, "sender": "3NDCyBG5q85JuaRiigUeEtainyjCQT3XpZm", "senderPublicKey": "EVooykMNV691Venwp1dHUTBd7KWequzUcda57Wd3LQEX", "proofs": [ "B4zQKLoXqv7RWXRSr2h1cWMywCTqN83prftrU3Etd5a8tHgHjXesAxLDT1i1MXeovc9g9Ak8fnpHiXrC2Z9iceN" ], "script": "base64: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bWVyaWNhcwkAzAgCAgdPY2VhbmlhCQDMCAICBkFmcmljYQUDbmlsAApBUlRQUkVTQUxFAgdQUkVTQUxFAA9QUkVTQUxFTlVNTEFORFMA9AMBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQxnZXRJbnRPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAARSWR4Q2ZnU3Rha2luZ0RhcHAAAQARSWR4Q2ZnRWNvbm9teURhcHAAAgAUSWR4Q2ZnR292ZXJuYW5jZURhcHAAAwEKa2V5UmVzdENmZwACDiVzX19yZXN0Q29uZmlnAQ5rZXlSZXN0QWRkcmVzcwACDCVzX19yZXN0QWRkcgERcmVhZFJlc3RDZmdPckZhaWwBBHJlc3QJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFBHJlc3QJAQprZXlSZXN0Q2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCB3Jlc3RDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQdyZXN0Q2ZnBQNpZHgJAKwCAgIqUmVzdCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAMcmVzdENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQ5rZXlSZXN0QWRkcmVzcwAFFWRlZmF1bHRSZXN0QWRkcmVzc1N0cgAHcmVzdENmZwkBEXJlYWRSZXN0Q2ZnT3JGYWlsAQUMcmVzdENvbnRyYWN0AA9lY29ub215Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRFJZHhDZmdFY29ub215RGFwcAALZ292Q29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQdyZXN0Q2ZnBRRJZHhDZmdHb3Zlcm5hbmNlRGFwcAERa2V5TGFzdFR4SWRCeVVzZXIBBGFkZHIJAKwCAgIPbGFzdFR4SWRCeVVzZXJfBQRhZGRyARJrZXlOZXh0RnJlZUxhbmROdW0AAgtuZXh0TGFuZE51bQEQa2V5TGFuZFRvQXNzZXRJZAEHbGFuZE51bQkArAICAgxsYW5kVG9Bc3NldF8FB2xhbmROdW0BCmtleU5mdE5hbWUCB2xhbmROdW0IbGFuZFNpemUJAKwCAgkArAICBQpMQU5EUFJFRklYBQdsYW5kTnVtBQhsYW5kU2l6ZQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQdhc3NldElkCQCsAgICCW5mdE93bmVyXwUHYXNzZXRJZAEaa2V5TGFuZEFzc2V0SWRUb0N1c3RvbU5hbWUBB2Fzc2V0SWQJAKwCAgIYbGFuZEN1c3RvbU5hbWVCeUFzc2V0SWRfBQdhc3NldElkARprZXlEdWNrQXNzZXRJZFRvQ3VzdG9tTmFtZQEHYXNzZXRJZAkArAICAhhkdWNrQ3VzdG9tTmFtZUJ5QXNzZXRJZF8FB2Fzc2V0SWQBFmtleUFkZHJlc3NUb0N1c3RvbU5hbWUBBGFkZHIJAKwCAgIYYWNjb3VudEN1c3RvbU5hbWVCeUFkZHJfBQRhZGRyARprZXlMYW5kQ3VzdG9tTmFtZVRvQXNzZXRJZAEEbmFtZQkArAICAhFsYW5kQnlDdXN0b21OYW1lXwUEbmFtZQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBG5hbWUJAKwCAgIRZHVja0J5Q3VzdG9tTmFtZV8FBG5hbWUBFmtleUN1c3RvbU5hbWVUb0FkZHJlc3MBBG5hbWUJAKwCAgIUYWNjb3VudEJ5Q3VzdG9tTmFtZV8FBG5hbWUBD2tleUFkZHJlc3NSZWZCeQEEYWRkcgkArAICAglhY2NSZWZCeV8FBGFkZHIBE2tleUFkZHJlc3NSZWZlcnJhbHMBBGFkZHIJAKwCAgINYWNjUmVmZXJyYWxzXwUEYWRkcgEQa2V5RHVja0lkVG9Pd25lcgEHYXNzZXRJZAkArAICAgpkdWNrT3duZXJfBQdhc3NldElkARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQdhc3NldElkCQCsAgICC3N0YWtlZFRpbWVfBQdhc3NldElkARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQdhc3NldElkCQCsAgICC2luZnJhTGV2ZWxfBQdhc3NldElkAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICB2Fzc2V0SWQJb3duZXJBZGRyCQCsAgIJAKwCAgkArAICAhxpbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXJfBQdhc3NldElkAgFfBQlvd25lckFkZHIBH2tleVByZXNhbGVBcnRBY3RpdmF0ZWRCeUFzc2V0SWQBB2Fzc2V0SWQJAKwCAgIUcHJlc2FsZUFydEFjdGl2YXRlZF8FB2Fzc2V0SWQBJ2tleVByZXNhbGVBcnRBY3RpdmF0ZWRCeUFzc2V0SWRBbmRPd25lcgIHYXNzZXRJZAlvd25lckFkZHIJAKwCAgkArAICCQCsAgICJXByZXNhbGVBcnRBY3RpdmF0ZWRCeUFzc2V0SWRBbmRPd25lcl8FB2Fzc2V0SWQCAV8FCW93bmVyQWRkcgEga2V5TGFuZEFydFN0YXR1c0J5VHlwZUFuZEFzc2V0SWQCBHR5cGUHYXNzZXRJZAkAuQkCCQDMCAICDWxhbmRBcnRTdGF0dXMJAMwIAgUEdHlwZQkAzAgCBQdhc3NldElkBQNuaWwCAV8BJWtleUxhbmRBcnRTdGF0dXNCeVR5cGVBc3NldElkQW5kT3duZXIDBHR5cGUHYXNzZXRJZAlvd25lckFkZHIJALkJAgkAzAgCAiJsYW5kQXJ0U3RhdHVzQnlUeXBlQXNzZXRJZEFuZE93bmVyCQDMCAIFBHR5cGUJAMwIAgUHYXNzZXRJZAkAzAgCBQlvd25lckFkZHIFA25pbAIBXwEUa2V5U3Rha2VkRHVja0J5T3duZXIBCW93bmVyQWRkcgkArAICAhJzdGFrZWREdWNrQnlPd25lcl8FCW93bmVyQWRkcgEia2V5U3Rha2VkVGltZUJ5VHlwZUFzc2V0SWRBbmRPd25lcgMHbmZ0VHlwZQdhc3NldElkCW93bmVyQWRkcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICIHN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXJfBQduZnRUeXBlAgFfBQdhc3NldElkAgFfBQlvd25lckFkZHIBEWtleUxhbmROdW1Ub093bmVyAQdsYW5kTnVtCQCsAgICCmxhbmRPd25lcl8FB2xhbmROdW0BEWtleUJhY2twYWNrQnlEdWNrAQtkdWNrQXNzZXRJZAkArAICAgliYWNrUGFja18FC2R1Y2tBc3NldElkARJrZXlXYXJlaG91c2VCeUxhbmQBC2xhbmRBc3NldElkCQCsAgICCndhcmVIb3VzZV8FC2xhbmRBc3NldElkAQ9rZXlEdWNrTG9jYXRpb24BC2R1Y2tBc3NldElkCQCsAgICDWR1Y2tMb2NhdGlvbl8FC2R1Y2tBc3NldElkAQ1rZXlEdWNrSGVhbHRoAQtkdWNrQXNzZXRJZAkArAICAgtkdWNrSGVhbHRoXwULZHVja0Fzc2V0SWQBEWtleVJlc1Byb3BvcnRpb25zAAITcmVzVHlwZXNQcm9wb3J0aW9ucwEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQlvd25lckFkZHIJAKwCAgITc3Rha2VkTGFuZHNCeU93bmVyXwUJb3duZXJBZGRyAQprZXlCbG9ja2VkAAIQY29udHJhY3RzQmxvY2tlZAEVa2V5VXNlckd3bFJlbGVhc2VUaW1lAQh1c2VyQWRkcgkArAICAholcyVzX191c2VyR3dsUmVsZWFzZVRpbWVfXwUIdXNlckFkZHIACnJlY0xhbmROdW0AAAALcmVjTGFuZFNpemUAAQALcmVjVGVycmFpbnMAAgAMcmVjQ29udGluZW50AAMAD2xvY0lkeENvbnRpbmVudAAAAApsb2NJZHhUeXBlAAEACGxvY0lkeElkAAIACmJwSWR4TGV2ZWwAAAAIYnBJZHhSZXMAAQAIYnBJZHhNYXQAAgAJYnBJZHhQcm9kAAMACHdoSWR4Vm9sAAAACHdoSWR4UmVzAAEACHdoSWR4TWF0AAIACXdoSWR4UHJvZAADAA53aElkeExvY2tlZFZvbAAEAAtjbGFpbU1vZGVXaAAAAA1jbGFpbU1vZGVEdWNrAAEAE2NsYWltTW9kZVdoVGhlbkR1Y2sAAgEIYXNTdHJpbmcBAXYEByRtYXRjaDAFAXYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIYZmFpbCB0byBjYXN0IGludG8gU3RyaW5nARNkaXN0cmlidXRlQnlXZWlnaHRzAgV0b3RhbAd3ZWlnaHRzBANzdW0JAGQCCQBkAgkAZAIJAGQCCQBkAgkAkQMCBQd3ZWlnaHRzAAAJAJEDAgUHd2VpZ2h0cwABCQCRAwIFB3dlaWdodHMAAgkAkQMCBQd3ZWlnaHRzAAMJAJEDAgUHd2VpZ2h0cwAECQCRAwIFB3dlaWdodHMABQMJAGcCAAAFA3N1bQkAAgECEFplcm8gd2VpZ2h0cyBzdW0EBW5vcm02CQBrAwUFdG90YWwFBU1VTFQ2BQNzdW0KAQpub3JtYWxpemVyAgNhY2MEZWxlbQkAzQgCBQNhY2MJAGsDBQRlbGVtBQVub3JtNgUFTVVMVDYKAAIkbAUHd2VpZ2h0cwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKbm9ybWFsaXplcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgESZ2V0TmVlZGVkTWF0ZXJpYWxzAQV0b3RhbAQFcHJvcHMJALUJAgkBBXZhbHVlAQkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgFfAwkBAiE9AgkAkAMBBQVwcm9wcwUGTlVNUkVTCQACAQIWV3JvbmcgcHJvcG9ydGlvbnMgZGF0YQQBcgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAQkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAgkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMAAwkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABAkAzAgCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUFcHJvcHMABQUDbmlsCQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFBXRvdGFsBQFyARFzdWJ0cmFjdE1hdGVyaWFscwMMc2hvdWxkVXNlTWF0A2hhcwl0b3RhbE5lZWQEBG5lZWQJARJnZXROZWVkZWRNYXRlcmlhbHMBBQl0b3RhbE5lZWQKAQpzdWJ0cmFjdG9yAgNhY2MDaWR4BAZyZXN1bHQJAGUCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDaGFzBQNpZHgJAJEDAgUEbmVlZAUDaWR4AwkAZgIAAAUGcmVzdWx0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICGE5vdCBlbm91Z2ggbWF0ZXJpYWwgaWR4PQkApAMBBQNpZHgCCywgeW91IGhhdmUgCQCRAwIFA2hhcwUDaWR4AgssIGJ1dCBuZWVkIAkApAMBCQCRAwIFBG5lZWQFA2lkeAkAzQgCBQNhY2MJAKQDAQUGcmVzdWx0AwUMc2hvdWxkVXNlTWF0CgACJGwJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUFA25pbAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKc3VidHJhY3RvcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgUDaGFzARl1cGRhdGVQcm9wb3J0aW9uc0ludGVybmFsBAhwcm9wTGlzdA10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgMJAQIhPQIJAJADAQUIcHJvcExpc3QFBk5VTVJFUwkAAgECFldyb25nIHByb3BvcnRpb25zIGRhdGEKAQd1cGRhdGVyAgNhY2MBaQQGcmVzdWx0CQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCHByb3BMaXN0BQFpCQBoAgkAaAIFBHNpZ24JAJEDAgUNdGVycmFpbkNvdW50cwUBaQUNbGFuZFNpemVJbmRleAMJAGYCAAAFBnJlc3VsdAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIWUGFuaWMhIFBpZWNlcyBvZiB0eXBlPQkApAMBBQFpAgcsIHNpZ249CQCkAwEFBHNpZ24CFCwgIHRlcnJhaW5Db3VudHNbaV09CQCkAwEJAJEDAgUNdGVycmFpbkNvdW50cwUBaQIQLCBsYW5kU2l6ZUluZGV4PQkApAMBBQ1sYW5kU2l6ZUluZGV4CQDNCAIFA2FjYwkApAMBBQZyZXN1bHQEAXIKAAIkbAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQd1cGRhdGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA2CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGCQC5CQIFAXICAV8BEXVwZGF0ZVByb3BvcnRpb25zAw10ZXJyYWluQ291bnRzDWxhbmRTaXplSW5kZXgEc2lnbgQIcHJvcExpc3QJALUJAgkBC3ZhbHVlT3JFbHNlAgkAoggBCQERa2V5UmVzUHJvcG9ydGlvbnMAAgswXzBfMF8wXzBfMAIBXwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwEBQhwcm9wTGlzdAUNdGVycmFpbkNvdW50cwUNbGFuZFNpemVJbmRleAUEc2lnbgENY291bnRUZXJyYWlucwEIdGVycmFpbnMJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBQQABCQDMCAIJAGUCCQCQAwEJALUJAgUIdGVycmFpbnMCAUIAAQkAzAgCCQBlAgkAkAMBCQC1CQIFCHRlcnJhaW5zAgFDAAEJAMwIAgkAZQIJAJADAQkAtQkCBQh0ZXJyYWlucwIBRAABCQDMCAIJAGUCCQCQAwEJALUJAgUI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aFJlcw5jdXJyZW50UGFja1JlcwpyZXNUb0NsYWltC3doU3BhY2VMZWZ0BA5yZXNMaXN0VG9DbGFpbQgFCnJlc1RvQ2xhaW0CXzEEDHJlc0FtVG9DbGFpbQgFCnJlc1RvQ2xhaW0CXzIDCQAAAgUMcmVzQW1Ub0NsYWltAAAJAJQKAgkAuQkCBQxjdXJyZW50V2hSZXMCAV8JALkJAgUOY3VycmVudFBhY2tSZXMCAV8DCQBnAgULd2hTcGFjZUxlZnQFDHJlc0FtVG9DbGFpbQoBCGFkZExpc3RzAgNhY2MBaQkAzQgCBQNhY2MJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQxjdXJyZW50V2hSZXMFAWkJAJEDAgUOcmVzTGlzdFRvQ2xhaW0FAWkEAXIKAAIkbAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQUDbmlsCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQhhZGRMaXN0cwIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNgkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgkAlAoCCQC5CQIFAXICAV8JALkJAgUOY3VycmVudFBhY2tSZXMCAV8KAQxhZGRQYXJ0TGlzdHMCA2FjYwFpBAZ3aFBhcnQJAGsDCQCRAwIFDnJlc0xpc3RUb0NsYWltBQFpBQt3aFNwYWNlTGVmdAUMcmVzQW1Ub0NsYWltCQCUCgIJAM0IAggFA2FjYwJfMQkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDGN1cnJlbnRXaFJlcwUBaQUGd2hQYXJ0CQDNCAIIBQNhY2MCXzIJAKQDAQkAZQIJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUOY3VycmVudFBhY2tSZXMFAWkJAJEDAgUOcmVzTGlzdFRvQ2xhaW0FAWkFBndoUGFydAQBcgoAAiRs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MF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIBCW1vdmVTdHVmZgMKY2FyZ29QYXJ0cwljdXJyZW50V2gLY3VycmVudFBhY2sDCQECIT0CCQCQAwEFCmNhcmdvUGFydHMAAwkAAgECNGNhcmdvTGlzdFN0ciBzaG91bGQgY29udGFpbiBleGFjdGx5IDIgJzonIHNlcGFyYXRvcnMECHJlc1BhcnRzCQC1CQIJAJEDAgUKY2FyZ29QYXJ0cwAAAgFfBAhtYXRQYXJ0cwkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAQIBXwQJcHJvZFBhcnRzAwkAAAIJAJEDAgUKY2FyZ29QYXJ0cwACAgAFA25pbAkAtQkCCQCRAwIFCmNhcmdvUGFydHMAAgIBXwMJAQIhPQIJAJADAQUIcmVzUGFydHMFBk5VTVJFUwkAAgECIEFsbCA2IHJlc291cmNlcyBzaG91bGQgYmUgcGFzc2VkAwkBAiE9AgkAkAMBBQhtYXRQYXJ0cwUGTlVNUkVTCQACAQIgQWxsIDYgbWF0ZXJpYWxzIHNob3VsZCBiZSBwYXNzZWQEDGN1cnJXaFJlc1ZvbAkBGWdldFdhcmVob3VzZUN1cnJSZXNWb2x1bWUBBQljdXJyZW50V2gEDGN1cnJXaE1hdFZvbAkBGWdldFdhcmVob3VzZUN1cnJNYXRWb2x1bWUBBQljdXJyZW50V2gEDmN1cnJXaEdvb2RzVm9sCQEbZ2V0V2FyZWhvdXNlQ3Vyckdvb2RzVm9sdW1lAQUJY3VycmVudFdoBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyZW50V2gFDndoSWR4TG9ja2VkVm9sBAt3aFNwYWNlTGVmdAkAZQIJAGUCCQBlAgkAZQIJARJnZXRXYXJlaG91c2VWb2x1bWUBCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhWb2wFDGN1cnJXaFJlc1ZvbAUMY3VycldoTWF0Vm9sBQ5jdXJyV2hHb29kc1ZvbAUPY3VycldoTG9ja2VkVm9sBAljdXJyV2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBAljdXJyV2hNYXQJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4TWF0AgFfBApjdXJyV2hQcm9kAwkAAAIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAAUDbmlsCQC1CQIJAJEDAgUJY3VycmVudFdoBQl3aElkeFByb2QCAV8EDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBA5jdXJyZW50UGFja01hdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQPY3VycmVudFBhY2tQcm9kAwkAAAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAIABQNuaWwJALUJAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kAgFfCgEDbXZSAgNhY2MEaXRlbQQBaQgFA2FjYwJfMQQCYW0JAQ1wYXJzZUludFZhbHVlAQUEaXRlbQQDd2hyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUJY3VycldoUmVzBQFpBANicHIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5jdXJyZW50UGFja1JlcwUBaQMJAAACBQJhbQAACQCWCgQJAGQCBQFpAAEJAM0IAggFA2FjYwJfMgkAkQMCBQljdXJyV2hSZXMFAWkJAM0IAggFA2FjYwJfMwkAkQMCBQ5jdXJyZW50UGFja1JlcwUBaQgFA2FjYwJfNAMJAGYCBQJhbQAAAwkAZgIFAmFtBQNicHIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgICEEF0dGVtcHQgdG8gdGFrZSAFBGl0ZW0CGSBmcm9tIGJhY2twYWNrLCBidXQgb25seSAJAKQDAQUD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CQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEAmlkCQDYBAEFB2Fzc2V0SWQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleU5leHRGcmVlTGFuZE51bQAJAGQCBQdmcmVlTnVtAAEJAMwIAgUFaXNzdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUCaWQFCHVzZXJBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0FCHVzZXJBZGRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFAmlkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQJpZAUIdXNlckFkZHIAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZjYWxsZXIAAQUHYXNzZXRJZAUDbmlsCQCUCgIFAmlkBQljb250aW5lbnQBEGV4cGVkaXRpb25Db21tb24FDHNob3VsZFVzZU1hdAZjYWxsZXIEdHhJZAdtZXNzYWdlA3NpZwMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAQFcGFydHMJALUJAgkAsAkBBQdtZXNzYWdlAgE7BAJocAkAtQkCCQCRAwIJALUJAgkAkQMCBQVwYXJ0cwAAAgF8AAACAV8EBWN1ckhQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCaHAAAAQFbmV3SFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAABBApsb2NBbmRUaW1lCQC1CQIJAJEDAgUFcGFydHMAAQIBOgQOdGFyZ2V0TG9jYXRpb24JALUJAgkAkQMCBQpsb2NBbmRUaW1lAAACAV8DCQECIT0CCQCRAwIFDnRhcmdldExvY2F0aW9uAAECAUUJAAIBAitleHBlZGl0aW9uIHRhcmdldCBsb2NhdGlvbiB0eXBlIHNob3VsZCBiZSBFBAR0aW1lCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKbG9jQW5kVGltZQABAwMJAGYCBQR0aW1lCQBkAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFEUZJVkVNSU5VVEVTTUlMTElTBgkAZgIJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMFBHRpbWUJAAIBAhJzaWduYXR1cmUgb3V0ZGF0ZWQECHVzZXJBZGRyCQClCAEFBmNhbGxlcgQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQh1c2VyQWRkcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAxvbGRGcm9tU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoAGQDCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aABkAi8gZnJvbSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBvbmUgZnJvbSBmbGlnaHQgbG9nPQkApAMBBQVjdXJIUAMJAGcCAAAFBWN1ckhQCQACAQIeWW91IGNhbid0IGZseSB3aXRoIHplcm8gaGVhbHRoAwkAZwIAAAUFbmV3SFAJAJQKAgkAzQgCAwkBASEBBQxzaG91bGRVc2VNYXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUGY2FsbGVyBQdFWFBVU0RUBQt1c2R0QXNzZXRJZAUDbmlsBQNuaWwJAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgAAAIABAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDBQxzaG91bGRVc2VNYXQFBW1MaXN0BQxFWFBNQVRFUklBTFMCAV8EAWUJARJleHBlZGl0aW9uSW50ZXJuYWwCBQZjYWxsZXIFBHR4SWQEAmlkCAgFAWUCXzICXzEJAJQKAgkAzQgCCQDNCAIJAM0IAggFAWUCXzEJAQtTdHJpbmdFbnRyeQIJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAkAuQkCCQDMCAIICAUBZQJfMgJfMgkAzAgCAgFMCQDMCAIFAmlkBQNuaWwCAV8JAQxJbnRlZ2VyRW50cnkCBQlrZXlIZWFsdGgFBW5ld0hQCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhSZXMJAMwIAgUGbmV3TWF0CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCWJwSWR4UHJvZAUDbmlsAgE6BQJpZAEMYXBwbHlCb251c2VzAgtsYW5kQXNzZXRJZAZwaWVjZXMECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQDCQELdmFsdWVPckVsc2UCCQCgCAEJAR9rZXlQcmVzYWxlQXJ0QWN0aXZhdGVkQnlBc3NldElkAQULbGFuZEFzc2V0SWQHBQZwaWVjZXMAAAQEYWRkNgkAaQIFCmluZnJhTGV2ZWwABgQEYWRkNwkAaQIFCmluZnJhTGV2ZWwABwkAZAIJAGQCBQ9EQUlMWVJFU0JZUElFQ0UJAGsDBQ9EQUlMWVJFU0JZUElFQ0UJAGQCCQBkAgUKaW5mcmFMZXZlbAUEYWRkNgkAaAIAAgUEYWRkNwAFCQBrAwUPREFJTFlSRVNCWVBJRUNFBQlhcnRQaWVjZXMJAGgCBQZwaWVjZXMABQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBGFkZHIJY2xhaW1Nb2RlDWxhbmRBc3NldElkSW4EDSR0MDI0NDI5MjQ5NjgDCQAAAgUJY2xhaW1Nb2RlBQtjbGFpbU1vZGVXaAkAlAoCBQ1sYW5kQXNzZXRJZEluCQELdmFsdWVPckVsc2UCCQCiCAEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFBGFkZHICAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMCQCUCgIJAJEDAgUDbG9jBQhsb2NJZHhJZAULZHVja0Fzc2V0SWQEC2xhbmRBc3NldElkCAUNJHQwMjQ0MjkyNDk2OAJfMQQGZHVja0lkCAUNJHQwMjQ0MjkyNDk2OAJfMgQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQtsYW5kQXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUHdGltZUtleQkArAICCQCsAgICBUxhbmQgCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAFkCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwkAlgoEBQZkdWNrSWQFC2xhbmRBc3NldElkBQFkBQlzYXZlZFRpbWUBEGNsYWltUmVzSW50ZXJuYWwEBGFkZHIGYW1vdW50CWNsYWltTW9kZQ1sYW5kQXNzZXRJZEluAwkAZgIAAAUGYW1vdW50CQACAQIPTmVnYXRpdmUgYW1vdW50BAFjCQEUY2hlY2tDbGFpbUNvbmRpdGlvbnMDBQRhZGRyBQljbGFpbU1vZGUFDWxhbmRBc3NldElkSW4ECGxhbmRTaXplCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNdGVycmFpbkNvdW50cwkBDWNvdW50VGVycmFpbnMBCQCRAwIIBQFjAl8zBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAIBQFjAl80AwkAZgIAAAUJZGVsdGFUaW1lCQACAQkArAICCQCsAgIJAKwCAgImU2F2ZWQgdGltZXN0YW1wIGlzIGluIGZ1dHVyZSwgc2F2ZWQgPSAJAKQDAQgFAWMCXzQCDCwgY3VycmVudCA9IAkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQxhcHBseUJvbnVzZXMCCAUBYwJfMgUGcGllY2VzBAhhdmFpbFJlcwkAawMFCWRlbHRhVGltZQkAaAIFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UFBnBpZWNlcwUJREFZTUlMTElTAwkAZgIFBmFtb3VudAUIYXZhaWxSZXMJAAIBCQCsAgIJAKwCAgkArAICAiJOb3QgZW5vdWdoIHJlc291cmNlcywgYXZhaWxhYmxlID0gCQCkAwEFCGF2YWlsUmVzAg4sIHJlcXVlc3RlZCA9IAkApAMBBQZhbW91bnQEDG5ld0RlbHRhVGltZQkAawMJAGUCBQhhdmFpbFJlcwUGYW1vdW50BQlEQVlNSUxMSVMJAGgCBRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBQZwaWVjZXMEDG5ld1RpbWVzdGFtcAkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQxuZXdEZWx0YVRpbWUECWxhbmRJbmRleAkAaQIFBnBpZWNlcwUFU1NJWkUECnJlc1RvQ2xhaW0JAQl2aXJ0Q2xhaW0EBQ10ZXJyYWluQ291bnRzCQBlAgUJZGVsdGFUaW1lBQxuZXdEZWx0YVRpbWUFCWxhbmRJbmRleAUWZGFpbHlQcm9kdWN0aW9uQnlQaWVjZQQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBCAUBYwJfMgQKaW5mcmFMZXZlbAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEIBQFjAl8yAAAECWN1cnJlbnRXaAkBDGdldFdhcmVob3VzZQMFBXdoS2V5BQlsYW5kSW5kZXgFCmluZnJhTGV2ZWwEDGN1cnJXaFJlc1ZvbAkBGWdldFdhcmVob3VzZUN1cnJSZXNWb2x1bWUBBQljdXJyZW50V2gEDGN1cnJXaE1hdFZvbAkBGWdldFdhcmVob3VzZUN1cnJNYXRWb2x1bWUBBQljdXJyZW50V2gEDmN1cnJXaEdvb2RzVm9sCQEbZ2V0V2FyZWhvdXNlQ3Vyckdvb2RzVm9sdW1lAQUJY3VycmVudFdoBA9jdXJyV2hMb2NrZWRWb2wJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQljdXJyZW50V2gFDndoSWR4TG9ja2VkVm9sBAt3aFNwYWNlTGVmdAkAZQIJAGUCCQBlAgkAZQIJARJnZXRXYXJlaG91c2VWb2x1bWUBCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhWb2wFDGN1cnJXaFJlc1ZvbAUMY3VycldoTWF0Vm9sBQ5jdXJyV2hHb29kc1ZvbAUPY3VycldoTG9ja2VkVm9sAwMJAAACBQljbGFpbU1vZGUFC2NsYWltTW9kZVdoCQBmAgUGYW1vdW50BQt3aFNwYWNlTGVmdAcJAAIBCQCsAgIJAKwCAgIFT25seSAJAKQDAQULd2hTcGFjZUxlZnQCGCBzcGFjZSBsZWZ0IGluIHdhcmVob3VzZQQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEIBQFjAl8xBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEDmN1cnJlbnRQYWNrUmVzCQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAgFfBAxjdXJyZW50V2hSZXMJALUJAgkAkQMCBQljdXJyZW50V2gFCHdoSWR4UmVzAgFfBA0kdDAyNzYxNjI4MTE5AwkAAAIFCWNsYWltTW9kZQULY2xhaW1Nb2RlV2gJAJQKAgkBBmFkZFJlcwUFDGN1cnJlbnRXaFJlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzAwkAAAIFCWNsYWltTW9kZQUNY2xhaW1Nb2RlRHVjawkAlAoCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhSZXMJAQZhZGRSZXMFBQ5jdXJyZW50UGFja1JlcwUNdGVycmFpbkNvdW50cwkAZQIFCWRlbHRhVGltZQUMbmV3RGVsdGFUaW1lBQlsYW5kSW5kZXgFFmRhaWx5UHJvZHVjdGlvbkJ5UGllY2UJAQ1kaXN0cmlidXRlUmVzBAUMY3VycmVudFdoUmVzBQ5jdXJyZW50UGFja1JlcwUKcmVzVG9DbGFpbQULd2hTcGFjZUxlZnQEBXdoUmVzCAUNJHQwMjc2MTYyODExOQJfMQQFYnBSZXMIBQ0kdDAyNzYxNjI4MTE5Al8yCQCXCgUJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQgFAWMCXzIFDG5ld1RpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYCAUBYwJfMgUEYWRkcgUMbmV3VGltZXN0YW1wBQNuaWwFBWJwS2V5CQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgUFYnBSZXMJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwFBXdoS2V5CQDMCAIJAJEDAgUJY3VycmVudFdoBQh3aElkeFZvbAkAzAgCBQV3aFJlcwkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhNYXQJAMwIAgkAkQMCBQljdXJyZW50V2gFCXdoSWR4UHJvZAkAzAgCCQCRAwIFCWN1cnJlbnRXaAUOd2hJZHhMb2NrZWRWb2wFA25pbAEIY2xhaW1BbGwEBGFkZHILbGFuZEFzc2V0SWQGcGllY2VzCWNsYWltTW9kZQQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAQJc2F2ZWRUaW1lCQEFdmFsdWUBCQCfCAEFB3RpbWVLZXkECGF2YWlsUmVzCQBoAgkAawMJAGUCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUJc2F2ZWRUaW1lCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwUJREFZTUlMTElTBQZwaWVjZXMJARBjbGFpbVJlc0ludGVybmFsBAUEYWRkcgUIYXZhaWxSZXMFCWNsYWltTW9kZQULbGFuZEFzc2V0SWQBDXVwSW5mcmFDb21tb24EDHNob3VsZFVzZU1hdAZjYWxsZXINcGF5bWVudEFtb3VudAtsYW5kQXNzZXRJZAQEYWRkcgkApQgBBQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFE2NsYWltTW9kZVdoVGhlbkR1Y2sFC2xhbmRBc3NldElkBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQIaW5mcmFLZXkJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQgFAWMCXzIECGN1ckxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEFCGluZnJhS2V5AAADCQBnAgUIY3VyTGV2ZWwAAwkAAgECJkN1cnJlbnRseSBtYXggaW5mcmFzdHJ1Y3R1cmUgbGV2ZWwgPSAzBAhuZXdMZXZlbAkAZAIFCGN1ckxldmVsAAEEBGNvc3QJAGsDBRVJbmZyYVVwZ3JhZGVDb3N0U1VzZHQJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQMDCQEBIQEFDHNob3VsZFVzZU1hdAkBAiE9AgUNcGF5bWVudEFtb3VudAUEY29zdAcJAAIBCQCsAgICG1BheW1lbnQgYXR0YWNoZWQgc2hvdWxkIGJlIAkApAMBBQRjb3N0BAVicEtleQkBEWtleUJhY2twYWNrQnlEdWNrAQgFAWMCXzEEC2N1cnJlbnRQYWNrCQELZ2V0QmFja3BhY2sBBQVicEtleQQFbUxpc3QJALUJAgkAkQMCBQtjdXJyZW50UGFjawUIYnBJZHhNYXQCAV8EBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDBQxzaG91bGRVc2VNYXQFBW1MaXN0CQBrAwURSW5mcmFVcGdyYWRlQ29zdFMJAGgCBQZwaWVjZXMFCG5ld0xldmVsBQVTU0laRQIBXwQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIIBQFjAl8yBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sEBndoRGF0YQgFC2NsYWltUmVzdWx0Al81BApuZXdWb2xEYXRhCQC5CQIJAMwIAgkAkQMCCQC1CQIJAJEDAgUGd2hEYXRhBQh3aElkeFZvbAIBXwAACQDMCAIJAKQDAQUIbmV3TGV2ZWwFA25pbAIBXwkAlAoCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFCGluZnJhS2V5BQhuZXdMZXZlbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHmtleUluZnJhTGV2ZWxCeUFzc2V0SWRBbmRPd25lcgIIBQFjAl8yBQRhZGRyBQhuZXdMZXZlbAkAzAgCCQELU3RyaW5nRW50cnkCBQVicEtleQkAuQkCCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCmJwSWR4TGV2ZWwJAMwIAgkAkQMCCAULY2xhaW1SZXN1bHQCXzMFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkAzAgCCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAgkAzAgCBQpuZXdWb2xEYXRhCQDMCAIJAJEDAgUGd2hEYXRhBQh3aElkeFJlcwkAzAgCCQCRAwIFBndoRGF0YQUId2hJZHhNYXQJAMwIAgkAkQMCBQZ3aERhdGEFCXdoSWR4UHJvZAkAzAgCCQCRAwIFBndoRGF0YQUOd2hJZHhMb2NrZWRWb2wFA25pbAIBOgUDbmlsCAULY2xhaW1SZXN1bHQCXzEFCG5ld0xldmVsARJhY3RpdmF0ZVByZXNhbGVBcnQCBGFkZHINbGFuZEFzc2V0SWRJbgQBYwkBFGNoZWNrQ2xhaW1Db25kaXRpb25zAwUEYWRkcgUTY2xhaW1Nb2RlV2hUaGVuRHVjawUNbGFuZEFzc2V0SWRJbgQLbGFuZEFzc2V0SWQIBQFjAl8yBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQNYWN0aXZhdGlvbktleQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQDCQBmAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ1hY3RpdmF0aW9uS2V5AwkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEfa2V5UHJlc2FsZUFydEFjdGl2YXRlZEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBwUGcGllY2VzAAAAAAkAAgECJVByZXNhbGUgYXJ0aWZhY3QgaXMgYWxyZWFkeSBhY3RpdmF0ZWQDCQBmAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIIBQFjAl8zBQpyZWNMYW5kTnVtBQ9QUkVTQUxFTlVNTEFORFMJAAIBCQCsAgIJAKwCAgkArAICBQpMQU5EUFJFRklYAgEgBQtsYW5kQXNzZXRJZAIlIGlzIG5vdCBlbGlnaWJsZSBmb3IgcHJlc2FsZSBhcnRpZmFjdAQLY2xhaW1SZXN1bHQJAQhjbGFpbUFsbAQFBGFkZHIFC2xhbmRBc3NldElkBQZwaWVjZXMFE2NsYWltTW9kZVdoVGhlbkR1Y2sJAM0IAgkAzQgCCQDNCAIJAM0IAggFC2NsYWltUmVzdWx0Al8xCQEMSW50ZWdlckVudHJ5AgUNYWN0aXZhdGlvbktleQUGcGllY2VzCQEMSW50ZWdlckVudHJ5AgkBJWtleUxhbmRBcnRTdGF0dXNCeVR5cGVBc3NldElkQW5kT3duZXIDBQpBUlRQUkVTQUxFBQtsYW5kQXNzZXRJZAUEYWRkcgUGcGllY2VzCQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzIJALkJAggFC2NsYWltUmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAULY2xhaW1SZXN1bHQCXzQJALkJAggFC2NsYWltUmVzdWx0Al81AgE6AQ1tZXJnZUludGVybmFsBwtuZXdMYW5kU2l6ZQhuZXdMZXZlbAdmb3JtdWxhBGFkZHIMbGFuZEFzc2V0SWRzBHR4SWQHbmVlZE1hdAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkCgEKY2hlY2tNZXJnZQIDYWNjC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBAlzYXZlZFRpbWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQd0aW1lS2V5CQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDiBpcyBub3Qgc3Rha2VkBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQBZAkAtQkCCAUFYXNzZXQLZGVzY3JpcHRpb24CAV8ECWNvbnRpbmVudAkAkQMCBQFkBQxyZWNDb250aW5lbnQDAwkBAiE9AggFA2FjYwJfMwIACQECIT0CCAUDYWNjAl8zBQljb250aW5lbnQHCQACAQIuTGFuZHMgc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGNvbnRpbmVudCB0byBtZXJnZQQIbGFuZFNpemUJAJEDAgUBZAULcmVjTGFuZFNpemUEB3NpemVzSW4IBQNhY2MCXzEEAWkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQdzaXplc0luBQhsYW5kU2l6ZQInWW91IGhhdmVuJ3QgcGFzc2VkIGFsbCB0aGUgbGFuZHMgbmVlZGVkBAhzaXplc091dAkArAICCQCvAgIFB3NpemVzSW4FAWkJALACAgUHc2l6ZXNJbgkAZAIFAWkAAQQGcGllY2VzCQEPbnVtUGllY2VzQnlTaXplAQUIbGFuZFNpemUEBGFydHMJAGQCCAUDYWNjAl8yCQELdmFsdWVPckVsc2UCCQCfCAEJASBrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQW5kQXNzZXRJZAIFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkAwkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEfa2V5UHJlc2FsZUFydEFjdGl2YXRlZEJ5QXNzZXRJZAEFC2xhbmRBc3NldElkBwUGcGllY2VzAAAECmluZnJhTGV2ZWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUluZnJhTGV2ZWxCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAAABAhyZXFMZXZlbAQHJG1hdGNoMAUIbGFuZFNpemUDCQAAAgIBUwUHJG1hdGNoMAADAwkAAAICAU0FByRtYXRjaDAABAMJAAACAgFMBQckbWF0Y2gwAAUDCQAAAgICWEwFByRtYXRjaDAABgkAAgECGk9ubHkgUywgTSwgTCwgWEwgY2FuIG1lcmdlAwkBAiE9AgUKaW5mcmFMZXZlbAUIcmVxTGV2ZWwJAAIBAiJBbGwgbGFuZHMgc2hvdWxkIGJlIG1heGVkIHRvIG1lcmdlBAdsYW5kTnVtCQCRAwIFAWQFCnJlY0xhbmROdW0EDXRlcnJhaW5Db3VudHMJAQ1jb3VudFRlcnJhaW5zAQkAkQMCBQFkBQtyZWNUZXJyYWlucwQJZGVsdGFUaW1lCQBlAggFCWxhc3RCbG9jawl0aW1lc3RhbXAFCXNhdmVkVGltZQMJAGYCAAAFCWRlbHRhVGltZQkAAgEJAKwCAgkArAICCQCsAgICJlNhdmVkIHRpbWVzdGFtcCBpcyBpbiBmdXR1cmUsIHNhdmVkID0gCQCkAwEFCXNhdmVkVGltZQIMLCBjdXJyZW50ID0gCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBBZkYWlseVByb2R1Y3Rpb25CeVBpZWNlCQEMYXBwbHlCb251c2VzAgULbGFuZEFzc2V0SWQFBnBpZWNlcwQJbGFuZEluZGV4CQBpAgUGcGllY2VzBQVTU0laRQQFYnBSZXMJAQZhZGRSZXMFCQC1CQIIBQNhY2MCXzQCAV8FDXRlcnJhaW5Db3VudHMFCWRlbHRhVGltZQUJbGFuZEluZGV4BRZkYWlseVByb2R1Y3Rpb25CeVBpZWNlBAVwcm9wcwkBGXVwZGF0ZVByb3BvcnRpb25zSW50ZXJuYWwECQC1CQIIBQNhY2MCXzYCAV8FDXRlcnJhaW5Db3VudHMFCWxhbmRJbmRleAD///////////8BBAVsYW5kcwgFA2FjYwJfNwQDaWR4CQDPCAIFBWxhbmRzBQtsYW5kQXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEFA2lkeAkAAgEJAKwCAgIgWW91ciBzdGFrZWQgbGFuZHMgZG9uJ3QgY29udGFpbiAFC2xhbmRBc3NldElkBAljdXN0b21LZXkJARprZXlMYW5kQXNzZXRJZFRvQ3VzdG9tTmFtZQEFC2xhbmRBc3NldElkBApjdXN0b21OYW1lCQELdmFsdWVPckVsc2UCCQCiCAEFCWN1c3RvbUtleQIACQCZCgcFCHNpemVzT3V0BQRhcnRzBQljb250aW5lbnQFBWJwUmVzCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAggFA2FjYwJfNQkBC0RlbGV0ZUVudHJ5AQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpMQU5EUFJFRklYBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBEGtleUxhbmRUb0Fzc2V0SWQBBQdsYW5kTnVtCQELRGVsZXRlRW50cnkBCQEKa2V5TmZ0TmFtZQIFB2xhbmROdW0FCGxhbmRTaXplCQELRGVsZXRlRW50cnkBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQtsYW5kQXNzZXRJZAUEYWRkcgkBC0RlbGV0ZUVudHJ5AQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQJAQtEZWxldGVFbnRyeQEJASVrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQFBGFkZHIJAQtEZWxldGVFbnRyeQEJARFrZXlMYW5kTnVtVG9Pd25lcgEFB2xhbmROdW0JAQtEZWxldGVFbnRyeQEJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAkBC0RlbGV0ZUVudHJ5AQUJY3VzdG9tS2V5CQELRGVsZXRlRW50cnkBCQEaa2V5TGFuZEN1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lCQEEQnVybgIJANkEAQULbGFuZEFzc2V0SWQAAQUFcHJvcHMJANEIAgUFbGFuZHMJAQV2YWx1ZQEFA2lkeAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEB3Byb3BTdHIJAQt2YWx1ZU9yRWxzZQIJAKIIAQkBEWtleVJlc1Byb3BvcnRpb25zAAILMF8wXzBfMF8wXzAECGxhbmRzS2V5CQEVa2V5U3Rha2VkTGFuZHNCeU93bmVyAQUEYWRkcgQIbGFuZHNTdHIJAKIIAQUIbGFuZHNLZXkEB2xhbmRzSW4DCQEJaXNEZWZpbmVkAQUIbGFuZHNTdHIJAL0JAgkBBXZhbHVlAQUIbGFuZHNTdHICAV8FA25pbAQBcgoAAiRsBQxsYW5kQXNzZXRJZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCZCgcFB2Zvcm11bGEAAAIACQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeFJlcwUDbmlsBQdwcm9wU3RyBQdsYW5kc0luCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQpjaGVja01lcmdlAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA1CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQQJY29udGluZW50CAUBcgJfMwQMY29udGluZW50SWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAM8IAgUKY29udGluZW50cwUJY29udGluZW50CQCsAgICE1Vua25vd24gY29udGluZW50OiAFCWNvbnRpbmVudAQIdGVycmFpbnMJAQtnZW5UZXJyYWlucwIJAQNhYnMBCQCeAwEFBHR4SWQFDGNvbnRpbmVudElkeAQHZnJlZU51bQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQESa2V5TmV4dEZyZWVMYW5kTnVtAAkAZAIFD1BSRVNBTEVOVU1MQU5EUwABBApuZXdMYW5kTnVtCQCkAwEFB2ZyZWVOdW0EBWlzc3VlCQDCCAUJAQprZXlOZnROYW1lAgUKbmV3TGFuZE51bQULbmV3TGFuZFNpemUJALkJAgkAzAgCBQpuZXdMYW5kTnVtCQDMCAIFC25ld0xhbmRTaXplCQDMCAIFCHRlcnJhaW5zCQDMCAIFCWNvbnRpbmVudAUDbmlsAgFfAAEAAAcEB2Fzc2V0SWQJALgIAQUFaXNzdWUEDm5ld0xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEBm5ld01hdAkAuQkCCQERc3VidHJhY3RNYXRlcmlhbHMDCQBmAgUHbmVlZE1hdAAACQC1CQIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4TWF0AgFfBQduZWVkTWF0AgFfCQCUCgIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCQDNCAIJAM0IAgkAzQgCCAUBcgJfNQMJAGYCCQCQAwEIBQFyAl83AAAJAQtTdHJpbmdFbnRyeQIFCGxhbmRzS2V5CQC7CQIIBQFyAl83AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkBDEludGVnZXJFbnRyeQIJARJrZXlOZXh0RnJlZUxhbmROdW0ACQBkAgUHZnJlZU51bQABBQVpc3N1ZQkBC1N0cmluZ0VudHJ5AgkBEGtleUxhbmRUb0Fzc2V0SWQBBQpuZXdMYW5kTnVtBQ5uZXdMYW5kQXNzZXRJZAkBC1N0cmluZ0VudHJ5AgkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFDm5ld0xhbmRBc3NldElkBQRhZGRyCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQpuZXdMYW5kTnVtBQRhZGRyCQEMSW50ZWdlckVudHJ5AgkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQUObmV3TGFuZEFzc2V0SWQIBQFyAl8yCQEMSW50ZWdlckVudHJ5AgkBJWtleUxhbmRBcnRTdGF0dXNCeVR5cGVBc3NldElkQW5kT3duZXIDBQpBUlRQUkVTQUxFBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcggFAXICXzIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5SW5mcmFMZXZlbEJ5QXNzZXRJZAEFDm5ld0xhbmRBc3NldElkBQhuZXdMZXZlbAkBDEludGVnZXJFbnRyeQIJAR5rZXlJbmZyYUxldmVsQnlBc3NldElkQW5kT3duZXICBQ5uZXdMYW5kQXNzZXRJZAUEYWRkcgUIbmV3TGV2ZWwJAQtTdHJpbmdFbnRyeQIFBWJwS2V5CQC5CQIJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUKYnBJZHhMZXZlbAkAzAgCCAUBcgJfNAkAzAgCBQZuZXdNYXQJAMwIAgkAkQMCBQtjdXJyZW50UGFjawUJYnBJZHhQcm9kBQNuaWwCAToJAQtTdHJpbmdFbnRyeQIJARFrZXlSZXNQcm9wb3J0aW9ucwAIBQFyAl82CQELU3RyaW5nRW50cnkCCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQJALkJAgkAzAgCBQljb250aW5lbnQJAMwIAgIBTAkAzAgCBQ5uZXdMYW5kQXNzZXRJZAUDbmlsAgFfCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRhZGRyAAEFB2Fzc2V0SWQFDm5ld0xhbmRBc3NldElkAQNzMm0DBGFkZHIMbGFuZEFzc2V0SWRzBHR4SWQJAQ1tZXJnZUludGVybmFsBwIBTQADAgRTU1NTBQRhZGRyBQxsYW5kQXNzZXRJZHMFBHR4SWQAAAEDbTJsBQRhZGRyDGxhbmRBc3NldElkcwR0eElkDHNob3VsZFVzZU1hdA1wYXltZW50QW1vdW50BARjb3N0CQBoAgUVSW5mcmFVcGdyYWRlQ29zdFNVc2R0AAQDAwkBASEBBQxzaG91bGRVc2VNYXQJAQIhPQIFDXBheW1lbnRBbW91bnQFBGNvc3QHCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUEY29zdAkBDW1lcmdlSW50ZXJuYWwHAgFMAAQCA1NNTQUEYWRkcgUMbGFuZEFzc2V0SWRzBQR0eElkCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMABAEEbDJ4bAUEYWRkcgxsYW5kQXNzZXRJZHMEdHhJZAxzaG91bGRVc2VNYXQNcGF5bWVudEFtb3VudAQEY29zdAkAaAIFFUluZnJhVXBncmFkZUNvc3RTVXNkdAAvAwMJAQEhAQUMc2hvdWxkVXNlTWF0CQECIT0CBQ1wYXltZW50QW1vdW50BQRjb3N0BwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFBGNvc3QJAQ1tZXJnZUludGVybmFsBwICWEwABQIFU1NTTUwFBGFkZHIFDGxhbmRBc3NldElkcwUEdHhJZAkAaAIFEUluZnJhVXBncmFkZUNvc3RTAC8BBnhsMnh4bAUEYWRkcgxsYW5kQXNzZXRJZHMEdHhJZAxzaG91bGRVc2VNYXQNcGF5bWVudEFtb3VudAQEY29zdAkAaAIFFUluZnJhVXBncmFkZUNvc3RTVXNkdAA2AwMJAQEhAQUMc2hvdWxkVXNlTWF0CQECIT0CBQ1wYXltZW50QW1vdW50BQRjb3N0BwkAAgEJAKwCAgIbUGF5bWVudCBhdHRhY2hlZCBzaG91bGQgYmUgCQCkAwEFBGNvc3QJAQ1tZXJnZUludGVybmFsBwIDWFhMAAYCA0xYTAUEYWRkcgUMbGFuZEFzc2V0SWRzBQR0eElkCQBoAgURSW5mcmFVcGdyYWRlQ29zdFMANgELbWVyZ2VDb21tb24FDHNob3VsZFVzZU1hdARhZGRyDXBheW1lbnRBbW91bnQMbGFuZEFzc2V0SWRzBHR4SWQEC21lcmdlUmVzdWx0BAckbWF0Y2gwCQCQAwEFDGxhbmRBc3NldElkcwMJAAACAAQFByRtYXRjaDAJAQNzMm0DBQRhZGRyBQxsYW5kQXNzZXRJZHMFBHR4SWQDCQAAAgADBQckbWF0Y2gwCQEDbTJsBQUEYWRkcgUMbGFuZEFzc2V0SWRzBQR0eElkBQxzaG91bGRVc2VNYXQFDXBheW1lbnRBbW91bnQDCQAAAgAFBQckbWF0Y2gwCQEEbDJ4bAUFBGFkZHIFDGxhbmRBc3NldElkcwUEdHhJZAUMc2hvdWxkVXNlTWF0BQ1wYXltZW50QW1vdW50AwkAAAIAAgUHJG1hdGNoMAkBBnhsMnh4bAUFBGFkZHIFDGxhbmRBc3NldElkcwUEdHhJZAUMc2hvdWxkVXNlTWF0BQ1wYXltZW50QW1vdW50CQACAQINVW5rbm93biBtZXJnZQULbWVyZ2VSZXN1bHQBBnByb2xvZwEBaQMDCQECIT0CCAUBaQxvcmlnaW5DYWxsZXIFDHJlc3RDb250cmFjdAkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEKa2V5QmxvY2tlZAAHBwkAAgECH0NvbnRyYWN0cyBhcmUgdW5kZXIgbWFpbnRlbmFuY2UJAQtTdHJpbmdFbnRyeQIJARFrZXlMYXN0VHhJZEJ5VXNlcgEJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQcAWkBDWNvbnN0cnVjdG9yVjEBCHJlc3RBZGRyAwkBAiE9AggFAWkGY2FsbGVyBQR0aGlzCQACAQIRUGVybWlzc2lvbiBkZW5pZWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVJlc3RBZGRyZXNzAAUIcmVzdEFkZHIFA25pbAFpAQpzZXRCbG9ja2VkAQlpc0Jsb2NrZWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFwZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCmtleUJsb2NrZWQABQlpc0Jsb2NrZWQFA25pbAFpAQlzdGFrZUxhbmQABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkxBTkRQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMJAQIhPQIIBQVhc3NldAZpc3N1ZXIFBHRoaXMJAAIBAhdVbmtub3duIGlzc3VlciBvZiB0b2tlbgMJAQEhAQkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUFCkxBTkRQUkVGSVgJAAIBCQCsAgIJAKwCAgIJT25seSBORlQgBQpMQU5EUFJFRklYAhQgdG9rZW5zIGFyZSBhY2NlcHRlZAQLbGFuZE51bVNpemUJALACAggFBWFzc2V0BG5hbWUABAQHbGFuZE51bQMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgNYWEwJALMCAgULbGFuZE51bVNpemUAAwMJAQhjb250YWlucwIFC2xhbmROdW1TaXplAgJYTAkAswICBQtsYW5kTnVtU2l6ZQACCQCzAgIFC2xhbmROdW1TaXplAAEDCQEBIQEJAQlpc0RlZmluZWQBCQC2CQEFB2xhbmROdW0JAAIBCQCsAgICHkNhbm5vdCBwYXJzZSBsYW5kIG51bWJlciBmcm9tIAgFBWFzc2V0BG5hbWUEC2xhbmRBc3NldElkCQDYBAEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQULbGFuZEFzc2V0SWQDCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAhIgaXMgYWxyZWFkeSBzdGFrZWQEAWQJALUJAggFBWFzc2V0C2Rlc2NyaXB0aW9uAgFfBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAgUBZAULcmVjVGVycmFpbnMEBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUEBXByb3BzCQERdXBkYXRlUHJvcG9ydGlvbnMDBQ10ZXJyYWluQ291bnRzCQBpAgUGcGllY2VzBQVTU0laRQABBAlhcnRQaWVjZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQDCQELdmFsdWVPckVsc2UCCQCgCAEJAR9rZXlQcmVzYWxlQXJ0QWN0aXZhdGVkQnlBc3NldElkAQULbGFuZEFzc2V0SWQHBQZwaWVjZXMAAAQIbGFuZHNTdHIJAKIIAQkBFWtleVN0YWtlZExhbmRzQnlPd25lcgEFB2FkZHJlc3MEBWxhbmRzAwkBCWlzRGVmaW5lZAEFCGxhbmRzU3RyCQC9CQIJAQV2YWx1ZQEFCGxhbmRzU3RyAgFfBQNuaWwDCQEPY29udGFpbnNFbGVtZW50AgUFbGFuZHMFC2xhbmRBc3NldElkCQACAQkArAICAiJZb3VyIHN0YWtlZCBsYW5kcyBhbHJlYWR5IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUHdGltZUtleQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQdhZGRyZXNzCQC7CQIJAM0IAgUFbGFuZHMFC2xhbmRBc3NldElkAgFfCQDMCAIJAQtTdHJpbmdFbnRyeQIJARVrZXlMYW5kQXNzZXRJZFRvT3duZXIBBQtsYW5kQXNzZXRJZAUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5TGFuZE51bVRvT3duZXIBBQdsYW5kTnVtBQdhZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEla2V5TGFuZEFydFN0YXR1c0J5VHlwZUFzc2V0SWRBbmRPd25lcgMFCkFSVFBSRVNBTEUFC2xhbmRBc3NldElkBQdhZGRyZXNzBQlhcnRQaWVjZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwBaQELdW5zdGFrZUxhbmQBDWxhbmRBc3NldElkSW4EDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQEYWRkcgkApQgBCAUBaQZjYWxsZXIEAWMJARRjaGVja0NsYWltQ29uZGl0aW9ucwMFBGFkZHIFDWNsYWltTW9kZUR1Y2sFDWxhbmRBc3NldElkSW4EC2xhbmRBc3NldElkCAUBYwJfMgQIbGFuZHNLZXkJARVrZXlTdGFrZWRMYW5kc0J5T3duZXIBBQRhZGRyBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEJAJEDAggFAWMCXzMFC3JlY1RlcnJhaW5zBAZwaWVjZXMJAQ9udW1QaWVjZXNCeVNpemUBCQCRAwIIBQFjAl8zBQtyZWNMYW5kU2l6ZQQFcHJvcHMJARF1cGRhdGVQcm9wb3J0aW9ucwMFDXRlcnJhaW5Db3VudHMJAGkCBQZwaWVjZXMFBVNTSVpFAP///////////wEEC2NsYWltUmVzdWx0CQEIY2xhaW1BbGwEBQRhZGRyBQtsYW5kQXNzZXRJZAUGcGllY2VzBQ1jbGFpbU1vZGVEdWNrBAVsYW5kcwkAvQkCCQELdmFsdWVPckVsc2UCCQCiCAEFCGxhbmRzS2V5AgACAV8EA2lkeAkAzwgCBQVsYW5kcwULbGFuZEFzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBBQNpZHgJAAIBCQCsAgICIFlvdXIgc3Rha2VkIGxhbmRzIGRvbid0IGNvbnRhaW4gBQtsYW5kQXNzZXRJZAQBdAgJAQV2YWx1ZQEJAO0HAQUGaGVpZ2h0CXRpbWVzdGFtcAQLcmVsZWFzZVRpbWUJAQt2YWx1ZU9yRWxzZQIJAJoIAgULZ292Q29udHJhY3QJARVrZXlVc2VyR3dsUmVsZWFzZVRpbWUBBQRhZGRyAAADCQBnAgULcmVsZWFzZVRpbWUFAXQJAAIBCQCsAgICOVlvdXIgZ1dMIGFyZSB0YWtpbmcgcGFydCBpbiB2b3RpbmcsIGNhbm5vdCB1bnN0YWtlIHVudGlsIAkApAMBBQtyZWxlYXNlVGltZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQtsYW5kQXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJASJrZXlTdGFrZWRUaW1lQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKTEFORFBSRUZJWAULbGFuZEFzc2V0SWQFBGFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleVJlc1Byb3BvcnRpb25zAAUFcHJvcHMJAMwIAgkBC1N0cmluZ0VudHJ5AggFC2NsYWltUmVzdWx0Al8yCQC5CQIIBQtjbGFpbVJlc3VsdAJfMwIBOgkAzAgCAwkAZgIJAJADAQUFbGFuZHMAAQkBC1N0cmluZ0VudHJ5AgUIbGFuZHNLZXkJALsJAgkA0QgCBQVsYW5kcwkBBXZhbHVlAQUDaWR4AgFfCQELRGVsZXRlRW50cnkBBQhsYW5kc0tleQkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAFpAQlzdGFrZUR1Y2sABAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIcRXhhY3RseSBvbmUgcGF5bWVudCByZXF1aXJlZAQDcG10CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEB2Fzc2V0SWQJAQV2YWx1ZQEIBQNwbXQHYXNzZXRJZAQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIDCQECIT0CCAUDcG10BmFtb3VudAABCQACAQkArAICCQCsAgICBE5GVCAFCkRVQ0tQUkVGSVgCJCB0b2tlbiBzaG91bGQgYmUgYXR0YWNoZWQgYXMgcGF5bWVudAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAMDCQECIT0CCAUFYXNzZXQGaXNzdWVyBQ1pbmN1YmF0b3JBZGRyCQECIT0CCAUFYXNzZXQGaXNzdWVyBQticmVlZGVyQWRkcgcJAAIBCQCsAgIJAKwCAgISVW5rbm93biBpc3N1ZXIgb2YgBQpEVUNLUFJFRklYAgYgdG9rZW4DCQEBIQEJAQhjb250YWlucwIIBQVhc3NldARuYW1lBQpEVUNLUFJFRklYCQACAQkArAICCQCsAgICCU9ubHkgTkZUIAUKRFVDS1BSRUZJWAIUIHRva2VucyBhcmUgYWNjZXB0ZWQECmFzc2V0SWRTdHIJANgEAQUHYXNzZXRJZAQHdGltZUtleQkBFmtleVN0YWtlZFRpbWVCeUFzc2V0SWQBBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEJAJ8IAQUHdGltZUtleQkAAgEJAKwCAgkArAICAgRORlQgCAUFYXNzZXQEbmFtZQISIGlzIGFscmVhZHkgc3Rha2VkAwkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgIdWW91IGFscmVhZHkgc3Rha2VkIG9uZSBkdWNrOiAIBQVhc3NldARuYW1lBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQphc3NldElkU3RyBAhsb2NhdGlvbgkAoggBBQZsb2NLZXkEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQphc3NldElkU3RyBAhiYWNrcGFjawkAoggBBQVicEtleQkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd0aW1lS2V5CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYCQDYBAEFB2Fzc2V0SWQFB2FkZHJlc3MIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlEdWNrSWRUb093bmVyAQUKYXNzZXRJZFN0cgUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQdhZGRyZXNzBQphc3NldElkU3RyBQNuaWwDCQEJaXNEZWZpbmVkAQUIbG9jYXRpb24FA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQUPREVGQVVMVExPQ0FUSU9OBQNuaWwDCQEJaXNEZWZpbmVkAQUIYmFja3BhY2sFA25pbAkAzQgCCQDNCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkCGjA6MF8wXzBfMF8wXzA6MF8wXzBfMF8wXzA6BQNuaWwJAQxJbnRlZ2VyRW50cnkCCQENa2V5RHVja0hlYWx0aAEFCmFzc2V0SWRTdHIAZAUMcHJvbG9nQWN0aW9uAWkBC3Vuc3Rha2VEdWNrAQphc3NldElkU3RyBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQHYWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEB3RpbWVLZXkJARZrZXlTdGFrZWRUaW1lQnlBc3NldElkAQkA2AQBBQdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAMJAQEhAQkBCWlzRGVmaW5lZAEJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQUHYWRkcmVzcwkAAgEJAKwCAgkArAICAglUaGUgZHVjayAIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5RHVja0lkVG9Pd25lcgEJANgEAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUHYWRkcmVzcwkAAgECF1N0YWtlZCBORlQgaXMgbm90IHlvdXJzBAlrZXlIZWFsdGgJAQ1rZXlEdWNrSGVhbHRoAQUKYXNzZXRJZFN0cgQGaGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aABkAwkBAiE9AgUGaGVhbHRoAGQJAAIBAiZQbGVhc2UgaGVhbCB5b3VyIGR1Y2sgYmVmb3JlIHVuc3Rha2luZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBBQd0aW1lS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEFCWtleUhlYWx0aAkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5RHVja0xvY2F0aW9uAQUKYXNzZXRJZFN0cgkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5RHVja0lkVG9Pd25lcgEFCmFzc2V0SWRTdHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBImtleVN0YWtlZFRpbWVCeVR5cGVBc3NldElkQW5kT3duZXIDBQpEVUNLUFJFRklYBQphc3NldElkU3RyBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlTdGFrZWREdWNrQnlPd25lcgEFB2FkZHJlc3MJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwBaQEIY2xhaW1SZXMCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAUNY2xhaW1Nb2RlRHVjawUObGFuZEFzc2V0SWRTdHIJAJQKAgkAzQgCCQDNCAIJAM0IAggFBnJlc3VsdAJfMQkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfMgkAuQkCCAUGcmVzdWx0Al8zAgE6CQELU3RyaW5nRW50cnkCCAUGcmVzdWx0Al80CQC5CQIIBQZyZXN1bHQCXzUCAToFDHByb2xvZ0FjdGlvbgkAkQMCCAUGcmVzdWx0Al8zBQhicElkeFJlcwFpAQxjbGFpbVJlc1RvV0gCBmFtb3VudA5sYW5kQXNzZXRJZFN0cgQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQGcmVzdWx0CQEQY2xhaW1SZXNJbnRlcm5hbAQFBGFkZHIFBmFtb3VudAULY2xhaW1Nb2RlV2gFDmxhbmRBc3NldElkU3RyCQCUCgIJAM0IAgkAzQgCCQDNCAIIBQZyZXN1bHQCXzEJAQtTdHJpbmdFbnRyeQIIBQZyZXN1bHQCXzIJALkJAggFBnJlc3VsdAJfMwIBOgkBC1N0cmluZ0VudHJ5AggFBnJlc3VsdAJfNAkAuQkCCAUGcmVzdWx0Al81AgE6BQxwcm9sb2dBY3Rpb24JAJEDAggFBnJlc3VsdAJfNQUId2hJZHhSZXMBaQEGZmxpZ2h0AgdtZXNzYWdlA3NpZwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQEhAQkAxBMDBQdtZXNzYWdlBQNzaWcFA3B1YgkAAgECGHNpZ25hdHVyZSBkb2VzIG5vdCBtYXRjaAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAVwYXJ0cwkAtQkCCQCwCQEFB21lc3NhZ2UCATsEAmhwCQC1CQIJAJEDAgkAtQkCCQCRAwIFBXBhcnRzAAACAXwAAAIBXwQFY3VySFAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJocAAABAVuZXdIUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmhwAAEEDW5ld0xvY0FuZFRpbWUJALUJAgkAkQMCBQVwYXJ0cwABAgE6BAtuZXdMb2NhdGlvbgkAkQMCBQ1uZXdMb2NBbmRUaW1lAAAEBHRpbWUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ1uZXdMb2NBbmRUaW1lAAEDAwkAZgIFBHRpbWUJAGQCCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAURRklWRU1JTlVURVNNSUxMSVMGCQBmAgkAZQIIBQlsYXN0QmxvY2sJdGltZXN0YW1wBRFGSVZFTUlOVVRFU01JTExJUwUEdGltZQkAAgECEnNpZ25hdHVyZSBvdXRkYXRlZAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBCQClCAEIBQFpBmNhbGxlcgIcWW91IGRvbid0IGhhdmUgYSBkdWNrIHN0YWtlZAQJa2V5SGVhbHRoCQENa2V5RHVja0hlYWx0aAEFC2R1Y2tBc3NldElkBAxvbGRGcm9tU3RhdGUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUJa2V5SGVhbHRoAGQDCQECIT0CBQxvbGRGcm9tU3RhdGUFBWN1ckhQCQACAQkArAICCQCsAgIJAKwCAgIKb2xkSGVhbHRoPQkApAMBCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aABkAi8gZnJvbSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBvbmUgZnJvbSBmbGlnaHQgbG9nPQkApAMBBQVjdXJIUAMJAGcCAAAFBWN1ckhQCQACAQIeWW91IGNhbid0IGZseSB3aXRoIHplcm8gaGVhbHRoBAZsb2NLZXkJAQ9rZXlEdWNrTG9jYXRpb24BBQtkdWNrQXNzZXRJZAQLY3VyTG9jYXRpb24JAQt2YWx1ZU9yRWxzZQIJAKIIAQUGbG9jS2V5BQ9ERUZBVUxUTE9DQVRJT04DCQAAAgULbmV3TG9jYXRpb24FC2N1ckxvY2F0aW9uCQACAQIiWW91IGNhbid0IGZseSB0byB0aGUgc2FtZSBsb2NhdGlvbgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBmxvY0tleQMJAGYCBQVuZXdIUAAABQtuZXdMb2NhdGlvbgULY3VyTG9jYXRpb24JAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAUFbmV3SFAJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwFBHVuaXQBaQEJc2V0SGVhbHRoAgZoZWFsdGgLZHVja0Fzc2V0SWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDAwkAZgIAAAUGaGVhbHRoBgkAZgIFBmhlYWx0aABkCQACAQIaSFAgc2hvdWxkIGJlIHdpdGhpbiAwLi4xMDAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlEdWNrSGVhbHRoAQULZHVja0Fzc2V0SWQFBmhlYWx0aAkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAFpAQRoZWFsAgdtYXRUeXBlBmFtb3VudAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMDCQBmAgAABQdtYXRUeXBlBgkAZwIFB21hdFR5cGUFBk5VTVJFUwkAAgEJAKwCAgISVW5rbm93biBtYXRlcmlhbDogCQCkAwEFB21hdFR5cGUDCQBnAgAABQZhbW91bnQJAAIBCQCsAgICG0Ftb3VudCBzaG91bGQgYmUgcG9zaXRpdmUhIAkApAMBBQZhbW91bnQEC2R1Y2tBc3NldElkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFGtleVN0YWtlZER1Y2tCeU93bmVyAQkApQgBCAUBaQZjYWxsZXICHFlvdSBkb24ndCBoYXZlIGEgZHVjayBzdGFrZWQECWtleUhlYWx0aAkBDWtleUR1Y2tIZWFsdGgBBQtkdWNrQXNzZXRJZAQJb2xkSGVhbHRoCQELdmFsdWVPckVsc2UCCQCfCAEFCWtleUhlYWx0aABkAwkAZwIFCW9sZEhlYWx0aABkCQACAQIaSFAgc2hvdWxkIGJlIDwgMTAwIHRvIGhlYWwEBWJwS2V5CQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAQLY3VycmVudFBhY2sJAQtnZXRCYWNrcGFjawEFBWJwS2V5BAVtTGlzdAkAtQkCCQCRAwIFC2N1cnJlbnRQYWNrBQhicElkeE1hdAIBXwQNY3VycmVudEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFBW1MaXN0BQdtYXRUeXBlBAtkZWx0YUhlYWx0aAkAlwMBCQDMCAIJAGkCBQZhbW91bnQFCEhFQUxDT1NUCQDMCAIJAGUCAGQFCW9sZEhlYWx0aAUDbmlsBAtzcGVuZEFtb3VudAkAaAIFC2RlbHRhSGVhbHRoBQhIRUFMQ09TVAMJAGYCBQtzcGVuZEFtb3VudAUNY3VycmVudEFtb3VudAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglZb3UgbmVlZCAJAKQDAQULc3BlbmRBbW91bnQCBCBvZiAJAJEDAgUIbWF0VHlwZXMFB21hdFR5cGUCJCB0byBoZWFsLCBidXQgeW91IGJhY2twYWNrIGNvbnRhaW5zIAkApAMBBQ1jdXJyZW50QW1vdW50BAZuZXdNYXQJAQxzdWJPbmVJbkxpc3QDBQVtTGlzdAUHbWF0VHlwZQULc3BlbmRBbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFCWtleUhlYWx0aAkAZAIFCW9sZEhlYWx0aAULZGVsdGFIZWFsdGgJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIJAJEDAgULY3VycmVudFBhY2sFCGJwSWR4UmVzCQDMCAIFBm5ld01hdAkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQlicElkeFByb2QFA25pbAIBOgkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAFpAQ51cGRhdGVCYWNrcGFjawILZHVja0Fzc2V0SWQHbmV3UGFjawQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIIBQFpBmNhbGxlcgUPZWNvbm9teUNvbnRyYWN0CQACAQIRcGVybWlzc2lvbiBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5QmFja3BhY2tCeUR1Y2sBBQtkdWNrQXNzZXRJZAUHbmV3UGFjawkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAUHbmV3UGFjawFpAQhidXlTTGFuZAAEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQdFWFBVU0RUCQACAQkArAICAhtQYXltZW50IGF0dGFjaGVkIHNob3VsZCBiZSAJAKQDAQUHRVhQVVNEVAQGcmVzdWx0CQESZXhwZWRpdGlvbkludGVybmFsAggFAWkGY2FsbGVyCAUBaQ10cmFuc2FjdGlvbklkCQCUCgIJAM0IAgkAzQgCCAUGcmVzdWx0Al8xCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAUMcHJvbG9nQWN0aW9uCAgFBnJlc3VsdAJfMgJfMQFpAQpleHBlZGl0aW9uAgdtZXNzYWdlA3NpZwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJARBleHBlZGl0aW9uQ29tbW9uBQYIBQFpBmNhbGxlcggFAWkNdHJhbnNhY3Rpb25JZAUHbWVzc2FnZQUDc2lnCQCUCgIJAM0IAggFBnJlc3VsdAJfMQUMcHJvbG9nQWN0aW9uCAUGcmVzdWx0Al8yAWkBDHVwZ3JhZGVJbmZyYQELbGFuZEFzc2V0SWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0CQENdXBJbmZyYUNvbW1vbgQGCAUBaQZjYWxsZXIAAAULbGFuZEFzc2V0SWQJAJQKAgkAzQgCCAUGcmVzdWx0Al8xBQxwcm9sb2dBY3Rpb24IBQZyZXN1bHQCXzIBaQEQdXBncmFkZUluZnJhVXNkdAELbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhBAZyZXN1bHQJAQ11cEluZnJhQ29tbW9uBAcIBQFpBmNhbGxlcggFA3BtdAZhbW91bnQFC2xhbmRBc3NldElkCQCUCgIJAM0IAgkAzQgCCAUGcmVzdWx0Al8xCQEOU2NyaXB0VHJhbnNmZXIDBQ9lY29ub215Q29udHJhY3QIBQNwbXQGYW1vdW50BQt1c2R0QXNzZXRJZAUMcHJvbG9nQWN0aW9uCAUGcmVzdWx0Al8yAWkBEGFjdGl2YXRlQXJ0aWZhY3QCB2FydE5hbWULbGFuZEFzc2V0SWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQGcmVzdWx0BAckbWF0Y2gwBQdhcnROYW1lAwkAAAICB1BSRVNBTEUFByRtYXRjaDAJARJhY3RpdmF0ZVByZXNhbGVBcnQCCQClCAEIBQFpBmNhbGxlcgULbGFuZEFzc2V0SWQJAAIBAhBVbmtub3duIGFydGlmYWN0CQDNCAIFBnJlc3VsdAUMcHJvbG9nQWN0aW9uAWkBCm1lcmdlTGFuZHMBDGxhbmRBc3NldElkcwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECFE5vIHBheW1lbnRzIHJlcXVpcmVkBAZyZXN1bHQJAQttZXJnZUNvbW1vbgUGCQClCAEIBQFpBmNhbGxlcgAABQxsYW5kQXNzZXRJZHMIBQFpDXRyYW5zYWN0aW9uSWQJAJQKAgkAzQgCCAUGcmVzdWx0Al8xBQxwcm9sb2dBY3Rpb24IBQZyZXN1bHQCXzIBaQEObWVyZ2VMYW5kc1VzZHQBDGxhbmRBc3NldElkcwQMcHJvbG9nQWN0aW9uCQEGcHJvbG9nAQUBaQMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECHEV4YWN0bHkgb25lIHBheW1lbnQgcmVxdWlyZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAAwkBAiE9AggFA3BtdAdhc3NldElkBQt1c2R0QXNzZXRJZAkAAgECGkFsbG93ZWQgVVNEVCBwYXltZW50IG9ubHkhBAZyZXN1bHQJAQttZXJnZUNvbW1vbgUHCQClCAEIBQFpBmNhbGxlcggFA3BtdAZhbW91bnQFDGxhbmRBc3NldElkcwgFAWkNdHJhbnNhY3Rpb25JZAkAlAoCCQDNCAIJAM0IAggFBnJlc3VsdAJfMQkBDlNjcmlwdFRyYW5zZmVyAwUPZWNvbm9teUNvbnRyYWN0CAUDcG10BmFtb3VudAULdXNkdEFzc2V0SWQFDHByb2xvZ0FjdGlvbggFBnJlc3VsdAJfMgFpAQ1jYXJnb0V4Y2hhbmdlAgxjYXJnb0xpc3RTdHILbGFuZEFzc2V0SWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhRObyBwYXltZW50cyByZXF1aXJlZAQKY2FyZ29QYXJ0cwkAvAkCBQxjYXJnb0xpc3RTdHICAToEBGFkZHIJAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFC2xhbmRBc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5CQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpMQU5EUFJFRklYAg0gaXMgbm90IHlvdXJzBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAQLZHVja0Fzc2V0SWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyAhxZb3UgZG9uJ3QgaGF2ZSBhIGR1Y2sgc3Rha2VkBAtjdXJMb2NhdGlvbgkBC3ZhbHVlT3JFbHNlAgkAoggBCQEPa2V5RHVja0xvY2F0aW9uAQULZHVja0Fzc2V0SWQFD0RFRkFVTFRMT0NBVElPTgQDbG9jCQC1CQIJAQV2YWx1ZQEFC2N1ckxvY2F0aW9uAgFfAwkBAiE9AgkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCAUwJAAIBCQCsAgIJAKwCAgIWRHVjayBsb2NhdGlvbiB0eXBlIGlzIAkAkQMCBQNsb2MFCmxvY0lkeFR5cGUCESwgYnV0IHNob3VsZCBiZSBMAwkBAiE9AgkAkQMCBQNsb2MFCGxvY0lkeElkBQtsYW5kQXNzZXRJZAkAAgEJAKwCAgIbRHVjayBzaG91bGQgYmUgb24gdGhlIGxhbmQgBQtsYW5kQXNzZXRJZAQFd2hLZXkJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAQJY3VycmVudFdoCQEMZ2V0V2FyZWhvdXNlAwUFd2hLZXkFCWxhbmRJbmRleAUKaW5mcmFMZXZlbAQFYnBLZXkJARFrZXlCYWNrcGFja0J5RHVjawEFC2R1Y2tBc3NldElkBAtjdXJyZW50UGFjawkBC2dldEJhY2twYWNrAQUFYnBLZXkEBnJlc3VsdAkBCW1vdmVTdHVmZgMFCmNhcmdvUGFydHMFCWN1cnJlbnRXaAULY3VycmVudFBhY2sJAMwIAgkBC1N0cmluZ0VudHJ5AgUFYnBLZXkJALkJAgkAzAgCCQCRAwIFC2N1cnJlbnRQYWNrBQpicElkeExldmVsCQDMCAIIBQZyZXN1bHQCXzQJAMwIAggFBnJlc3VsdAJfNQkAzAgCCAUGcmVzdWx0Al82BQNuaWwCAToJAMwIAgkBC1N0cmluZ0VudHJ5AgUFd2hLZXkJALkJAgkAzAgCCQCRAwIFCWN1cnJlbnRXaAUId2hJZHhWb2wJAMwIAggFBnJlc3VsdAJfMQkAzAgCCAUGcmVzdWx0Al8yCQDMCAIIBQZyZXN1bHQCXzMJAMwIAgkAkQMCBQljdXJyZW50V2gFDndoSWR4TG9ja2VkVm9sBQNuaWwCAToJAMwIAgUMcHJvbG9nQWN0aW9uBQNuaWwBaQENc2F2ZVdhcmVob3VzZQIFd2hTdHILbGFuZEFzc2V0SWQEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCAUBaQZjYWxsZXIFD2Vjb25vbXlDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEBXdoS2V5CQESa2V5V2FyZWhvdXNlQnlMYW5kAQULbGFuZEFzc2V0SWQDCQECIT0CCQCQAwEJALwJAgUFd2hTdHICAToABQkAAgECMHdhcmVob3VzZSBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gNCAnOicgc2VwYXJhdG9ycwkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFBXdoS2V5BQV3aFN0cgkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAUFd2hTdHIBaQEWcmVwbGFjZUJvb2xlYW5BcnRpZmFjdAELbGFuZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFDHJlc3RDb250cmFjdAkAAgECDUFjY2VzcyBkZW5pZWQEB2Jvb2xLZXkJAR9rZXlQcmVzYWxlQXJ0QWN0aXZhdGVkQnlBc3NldElkAQULbGFuZEFzc2V0SWQEBmludEtleQkBIGtleUxhbmRBcnRTdGF0dXNCeVR5cGVBbmRBc3NldElkAgUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQEB2Jvb2xBcnQJAKAIAQUHYm9vbEtleQMJAQlpc0RlZmluZWQBBQdib29sQXJ0BAFkCQC1CQIICQEFdmFsdWUBCQDsBwEJANkEAQULbGFuZEFzc2V0SWQLZGVzY3JpcHRpb24CAV8EBnBpZWNlcwkBD251bVBpZWNlc0J5U2l6ZQEJAJEDAgUBZAULcmVjTGFuZFNpemUECWFydFBpZWNlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBQZpbnRLZXkFBnBpZWNlcwQFb3duZXIJAKIIAQkBFWtleUxhbmRBc3NldElkVG9Pd25lcgEFC2xhbmRBc3NldElkBAxvd25lclJlY29yZHMDCQEJaXNEZWZpbmVkAQUFb3duZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJASVrZXlMYW5kQXJ0U3RhdHVzQnlUeXBlQXNzZXRJZEFuZE93bmVyAwUKQVJUUFJFU0FMRQULbGFuZEFzc2V0SWQJAQV2YWx1ZQEFBW93bmVyBQlhcnRQaWVjZXMJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBJ2tleVByZXNhbGVBcnRBY3RpdmF0ZWRCeUFzc2V0SWRBbmRPd25lcgIFC2xhbmRBc3NldElkCQEFdmFsdWUBBQVvd25lcgUDbmlsBQNuaWwDCQEFdmFsdWUBBQdib29sQXJ0CQCUCgIJAM0IAgkAzQgCBQxvd25lclJlY29yZHMJAQxJbnRlZ2VyRW50cnkCBQZpbnRLZXkFCWFydFBpZWNlcwkBC0RlbGV0ZUVudHJ5AQUHYm9vbEtleQACCQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUHYm9vbEtleQUDbmlsAAEJAJQKAgUDbmlsAAABaQENc2V0Q3VzdG9tTmFtZQMHYXNzZXRJZApjdXN0b21OYW1lBHR5cGUEDHByb2xvZ0FjdGlvbgkBBnByb2xvZwEFAWkDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAhxFeGFjdGx5IG9uZSBwYXltZW50IHJlcXVpcmVkBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQNwbXQHYXNzZXRJZAULdXNkdEFzc2V0SWQJAAIBAhpBbGxvd2VkIFVTRFQgcGF5bWVudCBvbmx5IQMJAQIhPQIIBQNwbXQGYW1vdW50BQxSRU5BTUlOR0NPU1QJAAIBCQCsAgICElBheW1lbnQgc2hvdWxkIGJlIAkApAMBBQxSRU5BTUlOR0NPU1QDCQEIY29udGFpbnMCBQpjdXN0b21OYW1lAgJfXwkAAgEJAKwCAgIeTmFtZSBzaG91bGQgbm90IGNvbnRhaW4gJ19fJzogBQpjdXN0b21OYW1lBARhZGRyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgQHYWN0aW9ucwQHJG1hdGNoMAUEdHlwZQMJAAACAgdBQ0NPVU5UBQckbWF0Y2gwBApyZXZlcnNlS2V5CQEWa2V5Q3VzdG9tTmFtZVRvQWRkcmVzcwEFCmN1c3RvbU5hbWUEB29sZE5hbWUJAKIIAQUKcmV2ZXJzZUtleQMJAQlpc0RlZmluZWQBBQdvbGROYW1lCQACAQkArAICAhlOYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDogBQpjdXN0b21OYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlBZGRyZXNzVG9DdXN0b21OYW1lAQUEYWRkcgUKY3VzdG9tTmFtZQkAzAgCCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQRhZGRyBQNuaWwDCQAAAgIETEFORAUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEFB3RpbWVLZXkJAAIBCQCsAgIIBQVhc3NldARuYW1lAg4gaXMgbm90IHN0YWtlZAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEVa2V5TGFuZEFzc2V0SWRUb093bmVyAQUHYXNzZXRJZAkArAICCQCsAgICBE5GVCAIBQVhc3NldARuYW1lAgwgaXMgb3JwaGFuZWQDCQECIT0CBQVvd25lcgUEYWRkcgkAAgEJAKwCAgUKTEFORFBSRUZJWAINIGlzIG5vdCB5b3VycwQKcmV2ZXJzZUtleQkBGmtleUxhbmRDdXN0b21OYW1lVG9Bc3NldElkAQUKY3VzdG9tTmFtZQQHb2xkTmFtZQkAoggBBQpyZXZlcnNlS2V5AwkBCWlzRGVmaW5lZAEFB29sZE5hbWUJAAIBCQCsAgICGU5hbWUgYWxyZWFkeSByZWdpc3RlcmVkOiAFCmN1c3RvbU5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGmtleUxhbmRBc3NldElkVG9DdXN0b21OYW1lAQUHYXNzZXRJZAUKY3VzdG9tTmFtZQkAzAgCCQELU3RyaW5nRW50cnkCBQpyZXZlcnNlS2V5BQdhc3NldElkBQNuaWwDCQAAAgIERFVDSwUHJG1hdGNoMAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQdhc3NldElkBAd0aW1lS2V5CQEWa2V5U3Rha2VkVGltZUJ5QXNzZXRJZAEFB2Fzc2V0SWQDAwkBASEBCQEJaXNEZWZpbmVkAQkAnwgBBQd0aW1lS2V5BgkBASEBCQEJaXNEZWZpbmVkAQkAoggBCQEUa2V5U3Rha2VkRHVja0J5T3duZXIBBQRhZGRyCQACAQkArAICCAUFYXNzZXQEbmFtZQIOIGlzIG5vdCBzdGFrZWQEBW93bmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleUR1Y2tJZFRvT3duZXIBBQdhc3NldElkCQCsAgIJAKwCAgIETkZUIAgFBWFzc2V0BG5hbWUCDCBpcyBvcnBoYW5lZAMJAQIhPQIFBW93bmVyBQRhZGRyCQACAQkArAICBQpEVUNLUFJFRklYAg0gaXMgbm90IHlvdXJzBApyZXZlcnNlS2V5CQEaa2V5RHVja0N1c3RvbU5hbWVUb0Fzc2V0SWQBBQpjdXN0b21OYW1lBAdvbGROYW1lCQCiCAEFCnJldmVyc2VLZXkDCQEJaXNEZWZpbmVkAQUHb2xkTmFtZQkAAgEJAKwCAgIZTmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ6IAUKY3VzdG9tTmFtZQkAzAgCCQELU3RyaW5nRW50cnkCCQEaa2V5RHVja0Fzc2V0SWRUb0N1c3RvbU5hbWUBBQdhc3NldElkBQpjdXN0b21OYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIFCnJldmVyc2VLZXkFB2Fzc2V0SWQFA25pbAkAAgECE1Vua25vd24gZW50aXR5IHR5cGUJAJQKAgkAzQgCCQDNCAIFB2FjdGlvbnMJAQ5TY3JpcHRUcmFuc2ZlcgMFD2Vjb25vbXlDb250cmFjdAgFA3BtdAZhbW91bnQFC3VzZHRBc3NldElkBQxwcm9sb2dBY3Rpb24AAAFpAQxzZXRSZWZlcnJhbHMCCW9sZFBsYXllcgluZXdQbGF5ZXIDCQECIT0CCAUBaQ9jYWxsZXJQdWJsaWNLZXkFA3B1YgkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAxwcm9sb2dBY3Rpb24JAQZwcm9sb2cBBQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIUTm8gcGF5bWVudHMgcmVxdWlyZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCmCAEFCW9sZFBsYXllcgkAAgEJAKwCAgIRSW52YWxpZCBhZGRyZXNzOiAFCW9sZFBsYXllcgMJAQEhAQkBCWlzRGVmaW5lZAEJAKYIAQUJbmV3UGxheWVyCQACAQkArAICAhFJbnZhbGlkIGFkZHJlc3M6IAUJbmV3UGxheWVyBAhyZWZCeUtleQkBD2tleUFkZHJlc3NSZWZCeQEFCW5ld1BsYXllcgQFcmVmQnkJAKIIAQUIcmVmQnlLZXkDAwkBCWlzRGVmaW5lZAEFBXJlZkJ5CQEJaXNEZWZpbmVkAQkApggBCQEFdmFsdWUBBQVyZWZCeQcJAAIBCQCsAgIJAKwCAgUJbmV3UGxheWVyAhQgYWxyZWFkeSBoYXMgcmVmQnk6IAkBBXZhbHVlAQUFcmVmQnkEB3JlZnNLZXkJARNrZXlBZGRyZXNzUmVmZXJyYWxzAQUJb2xkUGxheWVyBARyZWZzCQCiCAEFB3JlZnNLZXkECXJlZnNBcnJheQkAvAkCCQEFdmFsdWUBBQRyZWZzAgFfAwMJAQlpc0RlZmluZWQBBQRyZWZzCQEPY29udGFpbnNFbGVtZW50AgUJcmVmc0FycmF5BQluZXdQbGF5ZXIHCQACAQkArAICCQCsAgIJAKwCAgUJb2xkUGxheWVyAhIgYWxyZWFkeSBjb250YWlucyAFCW5ld1BsYXllcgIRIHdpdGhpbiByZWZlcnJhbHMEB25ld1JlZnMJALoJAgkAzQgCBQlyZWZzQXJyYXkFCW5ld1BsYXllcgIBXwkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFCHJlZkJ5S2V5BQlvbGRQbGF5ZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUHcmVmc0tleQUHbmV3UmVmcwkAzAgCBQxwcm9sb2dBY3Rpb24FA25pbAAAAWkBHHNwbGl0QnlHbG9iYWxXZWlnaHRzUkVBRE9OTFkBBmFtb3VudAkAlAoCBQNuaWwJARJnZXROZWVkZWRNYXRlcmlhbHMBBQZhbW91bnQBaQEkc3BsaXRCeUdsb2JhbEFuZExvY2FsV2VpZ2h0c1JFQURPTkxZAwltYXRBbW91bnQJcmVzQW1vdW50CHRlcnJhaW5zBA10ZXJyYWluQ291bnRzCQENY291bnRUZXJyYWlucwEFCHRlcnJhaW5zCQCUCgIFA25pbAkAlAoCCQESZ2V0TmVlZGVkTWF0ZXJpYWxzAQUJbWF0QW1vdW50CQETZGlzdHJpYnV0ZUJ5V2VpZ2h0cwIFCXJlc0Ftb3VudAUNdGVycmFpbkNvdW50cwFpARNnZXRCYWNrcGFja1JFQURPTkxZAQtkdWNrQXNzZXRJZAkAlAoCBQNuaWwJALkJAgkBC2dldEJhY2twYWNrAQkBEWtleUJhY2twYWNrQnlEdWNrAQULZHVja0Fzc2V0SWQCAToBaQEUZ2V0V2FyZWhvdXNlUkVBRE9OTFkBC2xhbmRBc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFC2xhbmRBc3NldElkBAlsYW5kSW5kZXgJAGkCCQEPbnVtUGllY2VzQnlTaXplAQkAkQMCCQC1CQIIBQVhc3NldAtkZXNjcmlwdGlvbgIBXwULcmVjTGFuZFNpemUFBVNTSVpFBAppbmZyYUxldmVsCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlJbmZyYUxldmVsQnlBc3NldElkAQULbGFuZEFzc2V0SWQAAAkAlAoCBQNuaWwJALoJAgkBDGdldFdhcmVob3VzZQMJARJrZXlXYXJlaG91c2VCeUxhbmQBBQtsYW5kQXNzZXRJZAUJbGFuZEluZGV4BQppbmZyYUxldmVsAgE6AD1+oTY=", "height": 2576151, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EEiAuCrw1SWfGCj8zRHjsE82c7qpTdwx8mjuXdsdStbv Next: 5UBaXJb32pQdA5iMLVy7TkPTQ4TuJX7uUgK9WMxqgbgf Diff:
OldNewDifferences
16651665
16661666
16671667 @Callable(bX)
1668-func setCustomName (an,fa,aF) = if ((bX.caller != this))
1669- then throw("Permission denied")
1670- else {
1671- let fq = fn(bX)
1672- if ((size(bX.payments) != 1))
1673- then throw("Exactly one payment required")
1674- else {
1675- let fr = value(bX.payments[0])
1676- if ((fr.assetId != b))
1677- then throw("Allowed USDT payment only!")
1678- else if ((fr.amount != w))
1679- then throw(("Payment should be " + toString(w)))
1680- else if (contains(fa, "__"))
1681- then throw(("Name should not contain '__': " + fa))
1682- else {
1683- let ag = toString(bX.originCaller)
1684- let fP = {
1685- let c = aF
1686- if (("ACCOUNT" == c))
1668+func setCustomName (an,fa,aF) = {
1669+ let fq = fn(bX)
1670+ if ((size(bX.payments) != 1))
1671+ then throw("Exactly one payment required")
1672+ else {
1673+ let fr = value(bX.payments[0])
1674+ if ((fr.assetId != b))
1675+ then throw("Allowed USDT payment only!")
1676+ else if ((fr.amount != w))
1677+ then throw(("Payment should be " + toString(w)))
1678+ else if (contains(fa, "__"))
1679+ then throw(("Name should not contain '__': " + fa))
1680+ else {
1681+ let ag = toString(bX.originCaller)
1682+ let fP = {
1683+ let c = aF
1684+ if (("ACCOUNT" == c))
1685+ then {
1686+ let fQ = au(fa)
1687+ let fR = getString(fQ)
1688+ if (isDefined(fR))
1689+ then throw(("Name already registered: " + fa))
1690+ else [StringEntry(aq(ag), fa), StringEntry(fQ, ag)]
1691+ }
1692+ else if (("LAND" == c))
16871693 then {
1688- let fQ = au(fa)
1689- let fR = getString(fQ)
1690- if (isDefined(fR))
1691- then throw(("Name already registered: " + fa))
1692- else [StringEntry(aq(ag), fa), StringEntry(fQ, ag)]
1694+ let eo = value(assetInfo(fromBase58String(an)))
1695+ let ep = ay(an)
1696+ if (!(isDefined(getInteger(ep))))
1697+ then throw((eo.name + " is not staked"))
1698+ else {
1699+ let er = valueOrErrorMessage(getString(am(an)), (("NFT " + eo.name) + " is orphaned"))
1700+ if ((er != ag))
1701+ then throw((i + " is not yours"))
1702+ else {
1703+ let fQ = ar(fa)
1704+ let fR = getString(fQ)
1705+ if (isDefined(fR))
1706+ then throw(("Name already registered: " + fa))
1707+ else [StringEntry(ao(an), fa), StringEntry(fQ, an)]
1708+ }
1709+ }
16931710 }
1694- else if (("LAND" == c))
1711+ else if (("DUCK" == c))
16951712 then {
16961713 let eo = value(assetInfo(fromBase58String(an)))
16971714 let ep = ay(an)
1698- if (!(isDefined(getInteger(ep))))
1715+ if (if (!(isDefined(getInteger(ep))))
1716+ then true
1717+ else !(isDefined(getString(aH(ag)))))
16991718 then throw((eo.name + " is not staked"))
17001719 else {
1701- let er = valueOrErrorMessage(getString(am(an)), (("NFT " + eo.name) + " is orphaned"))
1720+ let er = valueOrErrorMessage(getString(ax(an)), (("NFT " + eo.name) + " is orphaned"))
17021721 if ((er != ag))
1703- then throw((i + " is not yours"))
1722+ then throw((j + " is not yours"))
17041723 else {
1705- let fQ = ar(fa)
1724+ let fQ = at(fa)
17061725 let fR = getString(fQ)
17071726 if (isDefined(fR))
17081727 then throw(("Name already registered: " + fa))
1709- else [StringEntry(ao(an), fa), StringEntry(fQ, an)]
1728+ else [StringEntry(ap(an), fa), StringEntry(fQ, an)]
17101729 }
17111730 }
17121731 }
1713- else if (("DUCK" == c))
1714- then {
1715- let eo = value(assetInfo(fromBase58String(an)))
1716- let ep = ay(an)
1717- if (if (!(isDefined(getInteger(ep))))
1718- then true
1719- else !(isDefined(getString(aH(ag)))))
1720- then throw((eo.name + " is not staked"))
1721- else {
1722- let er = valueOrErrorMessage(getString(ax(an)), (("NFT " + eo.name) + " is orphaned"))
1723- if ((er != ag))
1724- then throw((j + " is not yours"))
1725- else {
1726- let fQ = at(fa)
1727- let fR = getString(fQ)
1728- if (isDefined(fR))
1729- then throw(("Name already registered: " + fa))
1730- else [StringEntry(ap(an), fa), StringEntry(fQ, an)]
1731- }
1732- }
1733- }
1734- else throw("Unknown entity type")
1735- }
1736- $Tuple2(((fP :+ ScriptTransfer(ad, fr.amount, b)) :+ fq), 0)
1732+ else throw("Unknown entity type")
17371733 }
1738- }
1739- }
1734+ $Tuple2(((fP :+ ScriptTransfer(ad, fr.amount, b)) :+ fq), 0)
1735+ }
1736+ }
1737+ }
17401738
17411739
17421740
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = take(drop(this.bytes, 1), 1)
55
66 let b = {
77 let c = a
88 if ((base58'2W' == c))
99 then base58'9wc3LXNA4TEBsXyKtoLE9mrbDD7WMHXvXrCjZvabLAsi'
1010 else if ((base58'2T' == c))
1111 then base58'6mWwf9mZBjVgkC54idpyaZLQfAosD914wT8fGf2iiY63'
1212 else throw("Unknown chain")
1313 }
1414
1515 let d = {
1616 let c = a
1717 if ((base58'2W' == c))
1818 then addressFromStringValue("3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv")
1919 else if ((base58'2T' == c))
2020 then this
2121 else throw("Unknown chain")
2222 }
2323
2424 let e = {
2525 let c = a
2626 if ((base58'2W' == c))
2727 then addressFromStringValue("3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb")
2828 else if ((base58'2T' == c))
2929 then this
3030 else throw("Unknown chain")
3131 }
3232
3333 let f = {
3434 let c = a
3535 if ((base58'2W' == c))
3636 then "3PQCuvFbvh4LkPUnrnU1z3jnbA1p9m3WNhv"
3737 else if ((base58'2T' == c))
3838 then "3MumkGGztCKAXpWDqxkddofqXSUbqQkvSJy"
3939 else throw("Unknown chain")
4040 }
4141
4242 let g = base58'6LfPuKJjLgekmncBhMg2LZyMTNVzZBccXR28ySXm9uXD'
4343
4444 let h = 10000
4545
4646 let i = "LAND"
4747
4848 let j = "DUCK"
4949
5050 let k = "Africa_F_Africa"
5151
5252 let l = 6
5353
5454 let m = 25
5555
5656 let n = 100
5757
5858 let o = 225
5959
6060 let p = 400
6161
6262 let q = 625
6363
6464 let r = 3456000
6565
6666 let s = 86400000
6767
6868 let t = 300000
6969
7070 let u = 39637
7171
7272 let v = 10000000000
7373
7474 let w = 5000000
7575
7676 let x = {
7777 let c = a
7878 if ((base58'2W' == c))
7979 then 10000000000
8080 else if ((base58'2T' == c))
8181 then 100000000
8282 else throw("Unknown chain")
8383 }
8484
8585 let y = {
8686 let c = a
8787 if ((base58'2W' == c))
8888 then 10000000
8989 else if ((base58'2T' == c))
9090 then 10000000
9191 else throw("Unknown chain")
9292 }
9393
9494 let z = {
9595 let c = a
9696 if ((base58'2W' == c))
9797 then 252289527462
9898 else if ((base58'2T' == c))
9999 then 2522895274
100100 else throw("Unknown chain")
101101 }
102102
103103 let A = {
104104 let c = a
105105 if ((base58'2W' == c))
106106 then 250000000
107107 else if ((base58'2T' == c))
108108 then 250000000
109109 else throw("Unknown chain")
110110 }
111111
112112 let B = "__"
113113
114114 let C = 1000000
115115
116116 let D = toBigInt(5)
117117
118118 let E = toBigInt(20)
119119
120120 let F = toBigInt((20 * 20))
121121
122122 let G = toBigInt(((20 * 20) * 20))
123123
124124 let H = toBigInt((((20 * 20) * 20) * 20))
125125
126126 let I = toBigInt(((((20 * 20) * 20) * 20) * 20))
127127
128128 let J = ["Fuel", "Metal", "Plank", "Glass", "Plastic", "Protein"]
129129
130130 let K = ["Asia", "Europe", "Americas", "Oceania", "Africa"]
131131
132132 let L = "PRESALE"
133133
134134 let M = 500
135135
136136 func N (O,P) = valueOrErrorMessage(getString(O, P), makeString(["mandatory ", toString(O), ".", P, " is not defined"], ""))
137137
138138
139139 func Q (P,R) = valueOrElse(getInteger(this, P), R)
140140
141141
142142 let S = 1
143143
144144 let T = 2
145145
146146 let U = 3
147147
148148 func V () = "%s__restConfig"
149149
150150
151151 func W () = "%s__restAddr"
152152
153153
154154 func X (Y) = split_4C(N(Y, V()), B)
155155
156156
157157 func Z (aa,ab) = valueOrErrorMessage(addressFromString(aa[ab]), ("Rest cfg doesn't contain address at index " + toString(ab)))
158158
159159
160160 let ac = addressFromStringValue(valueOrElse(getString(this, W()), f))
161161
162162 let aa = X(ac)
163163
164164 let ad = Z(aa, T)
165165
166166 let ae = Z(aa, U)
167167
168168 func af (ag) = ("lastTxIdByUser_" + ag)
169169
170170
171171 func ah () = "nextLandNum"
172172
173173
174174 func ai (aj) = ("landToAsset_" + aj)
175175
176176
177177 func ak (aj,al) = ((i + aj) + al)
178178
179179
180180 func am (an) = ("nftOwner_" + an)
181181
182182
183183 func ao (an) = ("landCustomNameByAssetId_" + an)
184184
185185
186186 func ap (an) = ("duckCustomNameByAssetId_" + an)
187187
188188
189189 func aq (ag) = ("accountCustomNameByAddr_" + ag)
190190
191191
192192 func ar (as) = ("landByCustomName_" + as)
193193
194194
195195 func at (as) = ("duckByCustomName_" + as)
196196
197197
198198 func au (as) = ("accountByCustomName_" + as)
199199
200200
201201 func av (ag) = ("accRefBy_" + ag)
202202
203203
204204 func aw (ag) = ("accReferrals_" + ag)
205205
206206
207207 func ax (an) = ("duckOwner_" + an)
208208
209209
210210 func ay (an) = ("stakedTime_" + an)
211211
212212
213213 func az (an) = ("infraLevel_" + an)
214214
215215
216216 func aA (an,aB) = ((("infraLevelByAssetIdAndOwner_" + an) + "_") + aB)
217217
218218
219219 func aC (an) = ("presaleArtActivated_" + an)
220220
221221
222222 func aD (an,aB) = ((("presaleArtActivatedByAssetIdAndOwner_" + an) + "_") + aB)
223223
224224
225225 func aE (aF,an) = makeString(["landArtStatus", aF, an], "_")
226226
227227
228228 func aG (aF,an,aB) = makeString(["landArtStatusByTypeAssetIdAndOwner", aF, an, aB], "_")
229229
230230
231231 func aH (aB) = ("stakedDuckByOwner_" + aB)
232232
233233
234234 func aI (aJ,an,aB) = ((((("stakedTimeByTypeAssetIdAndOwner_" + aJ) + "_") + an) + "_") + aB)
235235
236236
237237 func aK (aj) = ("landOwner_" + aj)
238238
239239
240240 func aL (aM) = ("backPack_" + aM)
241241
242242
243243 func aN (aO) = ("wareHouse_" + aO)
244244
245245
246246 func aP (aM) = ("duckLocation_" + aM)
247247
248248
249249 func aQ (aM) = ("duckHealth_" + aM)
250250
251251
252252 func aR () = "resTypesProportions"
253253
254254
255255 func aS (aB) = ("stakedLandsByOwner_" + aB)
256256
257257
258258 func aT () = "contractsBlocked"
259259
260260
261261 func aU (aV) = ("%s%s__userGwlReleaseTime__" + aV)
262262
263263
264264 let aW = 0
265265
266266 let aX = 1
267267
268268 let aY = 2
269269
270270 let aZ = 3
271271
272272 let ba = 0
273273
274274 let bb = 1
275275
276276 let bc = 2
277277
278278 let bd = 0
279279
280280 let be = 1
281281
282282 let bf = 2
283283
284284 let bg = 3
285285
286286 let bh = 0
287287
288288 let bi = 1
289289
290290 let bj = 2
291291
292292 let bk = 3
293293
294294 let bl = 4
295295
296296 let bm = 0
297297
298298 let bn = 1
299299
300300 let bo = 2
301301
302302 func bp (bq) = {
303303 let c = bq
304304 if ($isInstanceOf(c, "String"))
305305 then {
306306 let br = c
307307 br
308308 }
309309 else throw("fail to cast into String")
310310 }
311311
312312
313313 func bs (bt,bu) = {
314314 let bv = (((((bu[0] + bu[1]) + bu[2]) + bu[3]) + bu[4]) + bu[5])
315315 if ((0 >= bv))
316316 then throw("Zero weights sum")
317317 else {
318318 let bw = fraction(bt, C, bv)
319319 func bx (by,bz) = (by :+ fraction(bz, bw, C))
320320
321321 let bA = bu
322322 let bB = size(bA)
323323 let bC = nil
324324 func bD (bE,bF) = if ((bF >= bB))
325325 then bE
326326 else bx(bE, bA[bF])
327327
328328 func bG (bE,bF) = if ((bF >= bB))
329329 then bE
330330 else throw("List size exceeds 6")
331331
332332 bG(bD(bD(bD(bD(bD(bD(bC, 0), 1), 2), 3), 4), 5), 6)
333333 }
334334 }
335335
336336
337337 func bH (bt) = {
338338 let bI = split(value(getString(aR())), "_")
339339 if ((size(bI) != l))
340340 then throw("Wrong proportions data")
341341 else {
342342 let bJ = [parseIntValue(bI[0]), parseIntValue(bI[1]), parseIntValue(bI[2]), parseIntValue(bI[3]), parseIntValue(bI[4]), parseIntValue(bI[5])]
343343 bs(bt, bJ)
344344 }
345345 }
346346
347347
348348 func bK (bL,bM,bN) = {
349349 let bO = bH(bN)
350350 func bP (by,ab) = {
351351 let bQ = (parseIntValue(bM[ab]) - bO[ab])
352352 if ((0 > bQ))
353353 then throw(((((("Not enough material idx=" + toString(ab)) + ", you have ") + bM[ab]) + ", but need ") + toString(bO[ab])))
354354 else (by :+ toString(bQ))
355355 }
356356
357357 if (bL)
358358 then {
359359 let bA = [0, 1, 2, 3, 4, 5]
360360 let bB = size(bA)
361361 let bC = nil
362362 func bD (bE,bF) = if ((bF >= bB))
363363 then bE
364364 else bP(bE, bA[bF])
365365
366366 func bG (bE,bF) = if ((bF >= bB))
367367 then bE
368368 else throw("List size exceeds 6")
369369
370370 bG(bD(bD(bD(bD(bD(bD(bC, 0), 1), 2), 3), 4), 5), 6)
371371 }
372372 else bM
373373 }
374374
375375
376376 func bR (bS,bT,bU,bV) = if ((size(bS) != l))
377377 then throw("Wrong proportions data")
378378 else {
379379 func bW (by,bX) = {
380380 let bQ = (parseIntValue(bS[bX]) + ((bV * bT[bX]) * bU))
381381 if ((0 > bQ))
382382 then throw(((((((("Panic! Pieces of type=" + toString(bX)) + ", sign=") + toString(bV)) + ", terrainCounts[i]=") + toString(bT[bX])) + ", landSizeIndex=") + toString(bU)))
383383 else (by :+ toString(bQ))
384384 }
385385
386386 let bJ = {
387387 let bA = [0, 1, 2, 3, 4, 5]
388388 let bB = size(bA)
389389 let bC = nil
390390 func bD (bE,bF) = if ((bF >= bB))
391391 then bE
392392 else bW(bE, bA[bF])
393393
394394 func bG (bE,bF) = if ((bF >= bB))
395395 then bE
396396 else throw("List size exceeds 6")
397397
398398 bG(bD(bD(bD(bD(bD(bD(bC, 0), 1), 2), 3), 4), 5), 6)
399399 }
400400 makeString(bJ, "_")
401401 }
402402
403403
404404 func bY (bT,bU,bV) = {
405405 let bS = split(valueOrElse(getString(aR()), "0_0_0_0_0_0"), "_")
406406 bR(bS, bT, bU, bV)
407407 }
408408
409409
410410 func bZ (ca) = [(size(split(ca, "A")) - 1), (size(split(ca, "B")) - 1), (size(split(ca, "C")) - 1), (size(split(ca, "D")) - 1), (size(split(ca, "E")) - 1), (size(split(ca, "F")) - 1)]
411411
412412
413413 func cb (al) = {
414414 let c = al
415415 if (("S" == c))
416416 then m
417417 else if (("M" == c))
418418 then n
419419 else if (("L" == c))
420420 then o
421421 else if (("XL" == c))
422422 then p
423423 else if (("XXL" == c))
424424 then q
425425 else throw("Unknown land size")
426426 }
427427
428428
429429 func cc (cd,ab,ce) = {
430430 func cf (by,bX) = (by :+ (if ((bX == ab))
431431 then toString((parseIntValue(cd[bX]) - ce))
432432 else cd[bX]))
433433
434434 let bJ = {
435435 let bA = [0, 1, 2, 3, 4, 5]
436436 let bB = size(bA)
437437 let bC = nil
438438 func bD (bE,bF) = if ((bF >= bB))
439439 then bE
440440 else cf(bE, bA[bF])
441441
442442 func bG (bE,bF) = if ((bF >= bB))
443443 then bE
444444 else throw("List size exceeds 6")
445445
446446 bG(bD(bD(bD(bD(bD(bD(bC, 0), 1), 2), 3), 4), 5), 6)
447447 }
448448 makeString(bJ, "_")
449449 }
450450
451451
452452 func cg (ch,bT,ci,bU,cj) = {
453453 func ck (by,bX) = {
454454 let cl = ((fraction(ci, cj, s) * bT[bX]) * bU)
455455 (by :+ toString((parseIntValue(ch[bX]) + cl)))
456456 }
457457
458458 let bJ = {
459459 let bA = [0, 1, 2, 3, 4, 5]
460460 let bB = size(bA)
461461 let bC = nil
462462 func bD (bE,bF) = if ((bF >= bB))
463463 then bE
464464 else ck(bE, bA[bF])
465465
466466 func bG (bE,bF) = if ((bF >= bB))
467467 then bE
468468 else throw("List size exceeds 6")
469469
470470 bG(bD(bD(bD(bD(bD(bD(bC, 0), 1), 2), 3), 4), 5), 6)
471471 }
472472 makeString(bJ, "_")
473473 }
474474
475475
476476 func cm (bT,ci,bU,cj) = {
477477 func ck (by,bX) = {
478478 let cl = ((fraction(ci, cj, s) * bT[bX]) * bU)
479479 $Tuple2((by._1 :+ cl), (by._2 + cl))
480480 }
481481
482482 let bA = [0, 1, 2, 3, 4, 5]
483483 let bB = size(bA)
484484 let bC = $Tuple2(nil, 0)
485485 func bD (bE,bF) = if ((bF >= bB))
486486 then bE
487487 else ck(bE, bA[bF])
488488
489489 func bG (bE,bF) = if ((bF >= bB))
490490 then bE
491491 else throw("List size exceeds 6")
492492
493493 bG(bD(bD(bD(bD(bD(bD(bC, 0), 1), 2), 3), 4), 5), 6)
494494 }
495495
496496
497497 func cn (co,cp,cq,cr) = {
498498 let cs = cq._1
499499 let ct = cq._2
500500 if ((ct == 0))
501501 then $Tuple2(makeString(co, "_"), makeString(cp, "_"))
502502 else if ((cr >= ct))
503503 then {
504504 func cu (by,bX) = (by :+ toString((parseIntValue(co[bX]) + cs[bX])))
505505
506506 let bJ = {
507507 let bA = [0, 1, 2, 3, 4, 5]
508508 let bB = size(bA)
509509 let bC = nil
510510 func bD (bE,bF) = if ((bF >= bB))
511511 then bE
512512 else cu(bE, bA[bF])
513513
514514 func bG (bE,bF) = if ((bF >= bB))
515515 then bE
516516 else throw("List size exceeds 6")
517517
518518 bG(bD(bD(bD(bD(bD(bD(bC, 0), 1), 2), 3), 4), 5), 6)
519519 }
520520 $Tuple2(makeString(bJ, "_"), makeString(cp, "_"))
521521 }
522522 else {
523523 func cv (by,bX) = {
524524 let cw = fraction(cs[bX], cr, ct)
525525 $Tuple2((by._1 :+ toString((parseIntValue(co[bX]) + cw))), (by._2 :+ toString(((parseIntValue(cp[bX]) + cs[bX]) - cw))))
526526 }
527527
528528 let bJ = {
529529 let bA = [0, 1, 2, 3, 4, 5]
530530 let bB = size(bA)
531531 let bC = $Tuple2(nil, nil)
532532 func bD (bE,bF) = if ((bF >= bB))
533533 then bE
534534 else cv(bE, bA[bF])
535535
536536 func bG (bE,bF) = if ((bF >= bB))
537537 then bE
538538 else throw("List size exceeds 6")
539539
540540 bG(bD(bD(bD(bD(bD(bD(bC, 0), 1), 2), 3), 4), 5), 6)
541541 }
542542 $Tuple2(makeString(bJ._1, "_"), makeString(bJ._2, "_"))
543543 }
544544 }
545545
546546
547547 func cx (cy) = if ((cy >= toBigInt(0)))
548548 then cy
549549 else -(cy)
550550
551551
552552 let cz = [[1, 4, 9, 10, 15], [5, 8, 13, 14, 15], [6, 9, 14, 15, 16], [4, 7, 8, 13, 18], [1, 6, 7, 15, 19]]
553553
554554 func cA (cB,cC) = {
555555 let cD = toInt((cB % E))
556556 let cE = if ((cC[0] > cD))
557557 then "A"
558558 else if ((cC[1] > cD))
559559 then "B"
560560 else if ((cC[2] > cD))
561561 then "C"
562562 else if ((cC[3] > cD))
563563 then "D"
564564 else if ((cC[4] > cD))
565565 then "E"
566566 else "F"
567567 cE
568568 }
569569
570570
571571 func cF (cG,cH) = {
572572 let cI = cz[cH]
573573 func cJ (by,bz) = $Tuple2((((((by._1 + cA(by._2, cI)) + cA((by._2 / E), cI)) + cA((by._2 / F), cI)) + cA((by._2 / G), cI)) + cA((by._2 / H), cI)), (by._2 / I))
574574
575575 let cK = {
576576 let bA = [1, 2, 3, 4, 5]
577577 let bB = size(bA)
578578 let bC = $Tuple2("", (cG / D))
579579 func bD (bE,bF) = if ((bF >= bB))
580580 then bE
581581 else cJ(bE, bA[bF])
582582
583583 func bG (bE,bF) = if ((bF >= bB))
584584 then bE
585585 else throw("List size exceeds 5")
586586
587587 bG(bD(bD(bD(bD(bD(bC, 0), 1), 2), 3), 4), 5)
588588 }
589589 cK._1
590590 }
591591
592592
593593 func cL (cM) = {
594594 let cN = split(valueOrElse(getString(cM), "0:0_0_0_0_0_0:0_0_0_0_0_0:"), ":")
595595 [toString(valueOrElse(parseInt(cN[bd]), 0)), if ((size(split(cN[be], "_")) == l))
596596 then cN[be]
597597 else "0_0_0_0_0_0", if ((size(split(cN[bf], "_")) == l))
598598 then cN[bf]
599599 else "0_0_0_0_0_0", cN[bg]]
600600 }
601601
602602
603603 func cO (cP) = {
604604 let cQ = split(cP, "_")
605605 ((v * (parseIntValue(cQ[1]) + 1)) * parseIntValue(cQ[0]))
606606 }
607607
608608
609609 func cR (cS,cT,cU) = {
610610 let cP = ((toString(cT) + "_") + toString(cU))
611611 let cN = split(valueOrElse(getString(cS), (cP + ":0_0_0_0_0_0:0_0_0_0_0_0::0")), ":")
612612 [cN[bh], if ((size(split(cN[bi], "_")) == l))
613613 then cN[bi]
614614 else "0_0_0_0_0_0", if ((size(split(cN[bj], "_")) == l))
615615 then cN[bj]
616616 else "0_0_0_0_0_0", cN[bk], if ((5 > size(cN)))
617617 then "0"
618618 else cN[bl]]
619619 }
620620
621621
622622 func cV (cW) = {
623623 func bv (by,cX) = (by + parseIntValue(cX))
624624
625625 let bA = split(cW[bi], "_")
626626 let bB = size(bA)
627627 let bC = 0
628628 func bD (bE,bF) = if ((bF >= bB))
629629 then bE
630630 else bv(bE, bA[bF])
631631
632632 func bG (bE,bF) = if ((bF >= bB))
633633 then bE
634634 else throw("List size exceeds 6")
635635
636636 bG(bD(bD(bD(bD(bD(bD(bC, 0), 1), 2), 3), 4), 5), 6)
637637 }
638638
639639
640640 func cY (cW) = {
641641 func bv (by,cX) = (by + parseIntValue(cX))
642642
643643 let bA = split(cW[bj], "_")
644644 let bB = size(bA)
645645 let bC = 0
646646 func bD (bE,bF) = if ((bF >= bB))
647647 then bE
648648 else bv(bE, bA[bF])
649649
650650 func bG (bE,bF) = if ((bF >= bB))
651651 then bE
652652 else throw("List size exceeds 6")
653653
654654 bG(bD(bD(bD(bD(bD(bD(bC, 0), 1), 2), 3), 4), 5), 6)
655655 }
656656
657657
658658 func cZ (cW) = {
659659 let da = cW[bk]
660660 if ((da == ""))
661661 then 0
662662 else {
663663 func bv (by,cX) = (by + parseIntValue(cX))
664664
665665 let bA = split_4C(da, "_")
666666 let bB = size(bA)
667667 let bC = 0
668668 func bD (bE,bF) = if ((bF >= bB))
669669 then bE
670670 else bv(bE, bA[bF])
671671
672672 func bG (bE,bF) = if ((bF >= bB))
673673 then bE
674674 else throw("List size exceeds 50")
675675
676676 bG(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bD(bC, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
677677 }
678678 }
679679
680680
681681 func db (dc,cW,dd) = if ((size(dc) != 3))
682682 then throw("cargoListStr should contain exactly 2 ':' separators")
683683 else {
684684 let de = split(dc[0], "_")
685685 let df = split(dc[1], "_")
686686 let dg = if ((dc[2] == ""))
687687 then nil
688688 else split(dc[2], "_")
689689 if ((size(de) != l))
690690 then throw("All 6 resources should be passed")
691691 else if ((size(df) != l))
692692 then throw("All 6 materials should be passed")
693693 else {
694694 let dh = cV(cW)
695695 let di = cY(cW)
696696 let dj = cZ(cW)
697697 let dk = parseIntValue(cW[bl])
698698 let cr = ((((cO(cW[bh]) - dh) - di) - dj) - dk)
699699 let dl = split(cW[bi], "_")
700700 let dm = split(cW[bj], "_")
701701 let dn = if ((cW[bk] == ""))
702702 then nil
703703 else split(cW[bk], "_")
704704 let cp = split(dd[be], "_")
705705 let do = split(dd[bf], "_")
706706 let dp = if ((dd[bg] == ""))
707707 then nil
708708 else split(dd[bg], "_")
709709 func dq (by,cX) = {
710710 let bX = by._1
711711 let dr = parseIntValue(cX)
712712 let ds = parseIntValue(dl[bX])
713713 let dt = parseIntValue(cp[bX])
714714 if ((dr == 0))
715715 then $Tuple4((bX + 1), (by._2 :+ dl[bX]), (by._3 :+ cp[bX]), by._4)
716716 else if ((dr > 0))
717717 then if ((dr > dt))
718718 then throw((((("Attempt to take " + cX) + " from backpack, but only ") + toString(dt)) + " available"))
719719 else $Tuple4((bX + 1), (by._2 :+ toString((ds + dr))), (by._3 :+ toString((dt - dr))), (by._4 + dr))
720720 else if ((-(dr) > ds))
721721 then throw((((("Attempt to take " + toString(-(dr))) + " from warehouse, but only ") + toString(ds)) + " available"))
722722 else $Tuple4((bX + 1), (by._2 :+ toString((ds + dr))), (by._3 :+ toString((dt - dr))), (by._4 + dr))
723723 }
724724
725725 let bJ = {
726726 let bA = de
727727 let bB = size(bA)
728728 let bC = $Tuple4(0, nil, nil, 0)
729729 func bD (bE,bF) = if ((bF >= bB))
730730 then bE
731731 else dq(bE, bA[bF])
732732
733733 func bG (bE,bF) = if ((bF >= bB))
734734 then bE
735735 else throw("List size exceeds 6")
736736
737737 bG(bD(bD(bD(bD(bD(bD(bC, 0), 1), 2), 3), 4), 5), 6)
738738 }
739739 func du (by,cX) = {
740740 let bX = by._1
741741 let dr = parseIntValue(cX)
742742 let dv = parseIntValue(dm[bX])
743743 let dw = parseIntValue(do[bX])
744744 if ((dr == 0))
745745 then $Tuple4((bX + 1), (by._2 :+ dm[bX]), (by._3 :+ do[bX]), by._4)
746746 else if ((dr > 0))
747747 then if ((dr > dw))
748748 then throw((((("Attempt to take " + cX) + " from backpack, but only ") + toString(dw)) + " available"))
749749 else $Tuple4((bX + 1), (by._2 :+ toString((dv + dr))), (by._3 :+ toString((dw - dr))), (by._4 + dr))
750750 else if ((-(dr) > dv))
751751 then throw((((("Attempt to take " + toString(-(dr))) + " from warehouse, but only ") + toString(dv)) + " available"))
752752 else $Tuple4((bX + 1), (by._2 :+ toString((dv + dr))), (by._3 :+ toString((dw - dr))), (by._4 + dr))
753753 }
754754
755755 let dx = {
756756 let bA = df
757757 let bB = size(bA)
758758 let bC = $Tuple4(0, nil, nil, bJ._4)
759759 func dy (bE,bF) = if ((bF >= bB))
760760 then bE
761761 else du(bE, bA[bF])
762762
763763 func dz (bE,bF) = if ((bF >= bB))
764764 then bE
765765 else throw("List size exceeds 6")
766766
767767 dz(dy(dy(dy(dy(dy(dy(bC, 0), 1), 2), 3), 4), 5), 6)
768768 }
769769 func dA (by,cX) = {
770770 let bX = by._1
771771 let dr = parseIntValue(cX)
772772 let dB = parseIntValue(dn[bX])
773773 let dC = parseIntValue(dp[bX])
774774 if ((dr == 0))
775775 then $Tuple4((bX + 1), (by._2 :+ dn[bX]), (by._3 :+ dp[bX]), by._4)
776776 else if ((dr > 0))
777777 then if ((dr > dC))
778778 then throw((((("Attempt to take " + cX) + " from backpack, but only ") + toString(dC)) + " available"))
779779 else $Tuple4((bX + 1), (by._2 :+ toString((dB + dr))), (by._3 :+ toString((dC - dr))), (by._4 + dr))
780780 else if ((-(dr) > dB))
781781 then throw((((("Attempt to take " + toString(-(dr))) + " from warehouse, but only ") + toString(dB)) + " available"))
782782 else $Tuple4((bX + 1), (by._2 :+ toString((dB + dr))), (by._3 :+ toString((dC - dr))), (by._4 + dr))
783783 }
784784
785785 let cN = {
786786 let bA = dg
787787 let bB = size(bA)
788788 let bC = $Tuple4(0, nil, nil, dx._4)
789789 func dD (bE,bF) = if ((bF >= bB))
790790 then bE
791791 else dA(bE, bA[bF])
792792
793793 func dE (bE,bF) = if ((bF >= bB))
794794 then bE
795795 else throw("List size exceeds 50")
796796
797797 dE(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(dD(bC, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50)
798798 }
799799 let dF = cN._4
800800 if ((dF > cr))
801801 then throw((((("Attempt to put total " + toString(dF)) + " stuff, but only ") + toString(cr)) + " warehouse space left"))
802802 else $Tuple6(makeString(bJ._2, "_"), makeString(dx._2, "_"), makeString(cN._2, "_"), makeString(bJ._3, "_"), makeString(dx._3, "_"), makeString(cN._3, "_"))
803803 }
804804 }
805805
806806
807807 func dG (dH,dI) = {
808808 let aV = toString(dH)
809809 let dJ = cx(toBigInt(dI))
810810 let dK = valueOrElse(getInteger(ah()), (M + 1))
811811 let aj = toString(dK)
812812 let cH = toInt((dJ % D))
813813 let ca = cF(dJ, cH)
814814 let dL = K[cH]
815815 let dM = Issue(ak(aj, "S"), makeString([aj, "S", ca, dL], "_"), 1, 0, false)
816816 let an = calculateAssetId(dM)
817817 let dN = toBase58String(an)
818818 $Tuple2([IntegerEntry(ah(), (dK + 1)), dM, StringEntry(ai(aj), dN), StringEntry(am(dN), aV), StringEntry(aK(aj), aV), IntegerEntry(az(dN), 0), IntegerEntry(aA(dN, aV), 0), ScriptTransfer(dH, 1, an)], $Tuple2(dN, dL))
819819 }
820820
821821
822822 func dO (bL,dH,dI,dP,dQ) = if (!(sigVerify_8Kb(dP, dQ, g)))
823823 then throw("signature does not match")
824824 else {
825825 let cQ = split(toUtf8String(dP), ";")
826826 let dR = split(split(cQ[0], "|")[0], "_")
827827 let dS = parseIntValue(dR[0])
828828 let dT = parseIntValue(dR[1])
829829 let dU = split(cQ[1], ":")
830830 let dV = split(dU[0], "_")
831831 if ((dV[1] != "E"))
832832 then throw("expedition target location type should be E")
833833 else {
834834 let dW = parseIntValue(dU[1])
835835 if (if ((dW > (lastBlock.timestamp + t)))
836836 then true
837837 else ((lastBlock.timestamp - t) > dW))
838838 then throw("signature outdated")
839839 else {
840840 let aV = toString(dH)
841841 let aM = valueOrErrorMessage(getString(aH(aV)), "You don't have a duck staked")
842842 let dX = aQ(aM)
843843 let dY = valueOrElse(getInteger(dX), 100)
844844 if ((dY != dS))
845845 then throw(((("oldHealth=" + toString(valueOrElse(getInteger(dX), 100))) + " from state does not match one from flight log=") + toString(dS)))
846846 else if ((0 >= dS))
847847 then throw("You can't fly with zero health")
848848 else if ((0 >= dT))
849849 then $Tuple2(((if (!(bL))
850850 then [ScriptTransfer(dH, A, b)]
851851 else nil) :+ IntegerEntry(dX, 0)), "")
852852 else {
853853 let cM = aL(aM)
854854 let dd = cL(cM)
855855 let dZ = split(dd[bf], "_")
856856 let ea = makeString(bK(bL, dZ, z), "_")
857857 let eb = dG(dH, dI)
858858 let dN = eb._2._1
859859 $Tuple2((((eb._1 :+ StringEntry(aP(aM), makeString([eb._2._2, "L", dN], "_"))) :+ IntegerEntry(dX, dT)) :+ StringEntry(cM, makeString([dd[bd], dd[be], ea, dd[bg]], ":"))), dN)
860860 }
861861 }
862862 }
863863 }
864864
865865
866866 func ec (aO,ed) = {
867867 let cU = valueOrElse(getInteger(az(aO)), 0)
868868 let ee = valueOrElse(getInteger(aE(L, aO)), if (valueOrElse(getBoolean(aC(aO)), false))
869869 then ed
870870 else 0)
871871 let ef = (cU / 6)
872872 let eg = (cU / 7)
873873 ((r + fraction(r, ((cU + ef) + (2 * eg)), 5)) + fraction(r, ee, (ed * 5)))
874874 }
875875
876876
877877 func eh (ag,ei,ej) = {
878878 let ek = if ((ei == bm))
879879 then $Tuple2(ej, valueOrElse(getString(aH(ag)), ""))
880880 else {
881881 let aM = valueOrErrorMessage(getString(aH(ag)), "You don't have a duck staked")
882882 let el = valueOrElse(getString(aP(aM)), k)
883883 let em = split(value(el), "_")
884884 if ((em[bb] != "L"))
885885 then throw((("Duck location type is " + em[bb]) + ", but should be L"))
886886 else $Tuple2(em[bc], aM)
887887 }
888888 let aO = ek._1
889889 let en = ek._2
890890 let eo = value(assetInfo(fromBase58String(aO)))
891891 let ep = ay(aO)
892892 let eq = valueOrErrorMessage(getInteger(ep), (("Land " + eo.name) + " is not staked"))
893893 let er = valueOrErrorMessage(getString(am(aO)), (("NFT " + eo.name) + " is orphaned"))
894894 if ((er != ag))
895895 then throw((i + " is not yours"))
896896 else {
897897 let es = split(eo.description, "_")
898898 $Tuple4(en, aO, es, eq)
899899 }
900900 }
901901
902902
903903 func et (ag,ce,ei,ej) = if ((0 > ce))
904904 then throw("Negative amount")
905905 else {
906906 let eu = eh(ag, ei, ej)
907907 let al = eu._3[aX]
908908 let bT = bZ(eu._3[aY])
909909 let ci = (lastBlock.timestamp - eu._4)
910910 if ((0 > ci))
911911 then throw(((("Saved timestamp is in future, saved = " + toString(eu._4)) + ", current = ") + toString(lastBlock.timestamp)))
912912 else {
913913 let ed = cb(al)
914914 let ev = ec(eu._2, ed)
915915 let ew = fraction(ci, (ev * ed), s)
916916 if ((ce > ew))
917917 then throw(((("Not enough resources, available = " + toString(ew)) + ", requested = ") + toString(ce)))
918918 else {
919919 let ex = fraction((ew - ce), s, (ev * ed))
920920 let ey = (lastBlock.timestamp - ex)
921921 let cT = (ed / m)
922922 let cq = cm(bT, (ci - ex), cT, ev)
923923 let cS = aN(eu._2)
924924 let cU = valueOrElse(getInteger(az(eu._2)), 0)
925925 let cW = cR(cS, cT, cU)
926926 let dh = cV(cW)
927927 let di = cY(cW)
928928 let dj = cZ(cW)
929929 let dk = parseIntValue(cW[bl])
930930 let cr = ((((cO(cW[bh]) - dh) - di) - dj) - dk)
931931 if (if ((ei == bm))
932932 then (ce > cr)
933933 else false)
934934 then throw((("Only " + toString(cr)) + " space left in warehouse"))
935935 else {
936936 let cM = aL(eu._1)
937937 let dd = cL(cM)
938938 let cp = split(dd[be], "_")
939939 let co = split(cW[bi], "_")
940940 let ez = if ((ei == bm))
941941 then $Tuple2(cg(co, bT, (ci - ex), cT, ev), dd[be])
942942 else if ((ei == bn))
943943 then $Tuple2(cW[bi], cg(cp, bT, (ci - ex), cT, ev))
944944 else cn(co, cp, cq, cr)
945945 let eA = ez._1
946946 let eB = ez._2
947947 $Tuple5([IntegerEntry(ay(eu._2), ey), IntegerEntry(aI(i, eu._2, ag), ey)], cM, [dd[bd], eB, dd[bf], dd[bg]], cS, [cW[bh], eA, cW[bj], cW[bk], cW[bl]])
948948 }
949949 }
950950 }
951951 }
952952
953953
954954 func eC (ag,aO,ed,ei) = {
955955 let ep = ay(aO)
956956 let eq = value(getInteger(ep))
957957 let ew = (fraction((lastBlock.timestamp - eq), ec(aO, ed), s) * ed)
958958 et(ag, ew, ei, aO)
959959 }
960960
961961
962962 func eD (bL,dH,eE,aO) = {
963963 let ag = toString(dH)
964964 let eu = eh(ag, bo, aO)
965965 let ed = cb(eu._3[aX])
966966 let eF = az(eu._2)
967967 let eG = valueOrElse(getInteger(eF), 0)
968968 if ((eG >= 3))
969969 then throw("Currently max infrastructure level = 3")
970970 else {
971971 let eH = (eG + 1)
972972 let eI = fraction(y, (ed * eH), m)
973973 if (if (!(bL))
974974 then (eE != eI)
975975 else false)
976976 then throw(("Payment attached should be " + toString(eI)))
977977 else {
978978 let cM = aL(eu._1)
979979 let dd = cL(cM)
980980 let dZ = split(dd[bf], "_")
981981 let ea = makeString(bK(bL, dZ, fraction(x, (ed * eH), m)), "_")
982982 let eJ = eC(ag, eu._2, ed, bo)
983983 let eK = eJ._5
984984 let eL = makeString([split(eK[bh], "_")[0], toString(eH)], "_")
985985 $Tuple2(([IntegerEntry(eF, eH), IntegerEntry(aA(eu._2, ag), eH), StringEntry(cM, makeString([dd[bd], eJ._3[be], ea, dd[bg]], ":")), StringEntry(eJ._4, makeString([eL, eK[bi], eK[bj], eK[bk], eK[bl]], ":"))] ++ eJ._1), eH)
986986 }
987987 }
988988 }
989989
990990
991991 func eM (ag,ej) = {
992992 let eu = eh(ag, bo, ej)
993993 let aO = eu._2
994994 let ed = cb(eu._3[aX])
995995 let eN = aE(L, aO)
996996 if ((valueOrElse(getInteger(eN), if (valueOrElse(getBoolean(aC(aO)), false))
997997 then ed
998998 else 0) > 0))
999999 then throw("Presale artifact is already activated")
10001000 else if ((parseIntValue(eu._3[aW]) > M))
10011001 then throw((((i + " ") + aO) + " is not eligible for presale artifact"))
10021002 else {
10031003 let eJ = eC(ag, aO, ed, bo)
10041004 ((((eJ._1 :+ IntegerEntry(eN, ed)) :+ IntegerEntry(aG(L, aO, ag), ed)) :+ StringEntry(eJ._2, makeString(eJ._3, ":"))) :+ StringEntry(eJ._4, makeString(eJ._5, ":")))
10051005 }
10061006 }
10071007
10081008
10091009 func eO (eP,eH,eQ,ag,eR,dI,eS) = {
10101010 let aM = valueOrErrorMessage(getString(aH(ag)), "You don't have a duck staked")
10111011 func eT (by,aO) = {
10121012 let eo = value(assetInfo(fromBase58String(aO)))
10131013 let ep = ay(aO)
10141014 let eq = valueOrErrorMessage(getInteger(ep), (("NFT " + eo.name) + " is not staked"))
10151015 let er = valueOrErrorMessage(getString(am(aO)), (("NFT " + eo.name) + " is orphaned"))
10161016 if ((er != ag))
10171017 then throw((i + " is not yours"))
10181018 else {
10191019 let es = split(eo.description, "_")
10201020 let dL = es[aZ]
10211021 if (if ((by._3 != ""))
10221022 then (by._3 != dL)
10231023 else false)
10241024 then throw("Lands should be on the same continent to merge")
10251025 else {
10261026 let al = es[aX]
10271027 let eU = by._1
10281028 let bX = valueOrErrorMessage(indexOf(eU, al), "You haven't passed all the lands needed")
10291029 let eV = (take(eU, bX) + drop(eU, (bX + 1)))
10301030 let ed = cb(al)
10311031 let eW = (by._2 + valueOrElse(getInteger(aE(L, aO)), if (valueOrElse(getBoolean(aC(aO)), false))
10321032 then ed
10331033 else 0))
10341034 let cU = valueOrElse(getInteger(az(aO)), 0)
10351035 let eX = {
10361036 let c = al
10371037 if (("S" == c))
10381038 then 3
10391039 else if (("M" == c))
10401040 then 4
10411041 else if (("L" == c))
10421042 then 5
10431043 else if (("XL" == c))
10441044 then 6
10451045 else throw("Only S, M, L, XL can merge")
10461046 }
10471047 if ((cU != eX))
10481048 then throw("All lands should be maxed to merge")
10491049 else {
10501050 let aj = es[aW]
10511051 let bT = bZ(es[aY])
10521052 let ci = (lastBlock.timestamp - eq)
10531053 if ((0 > ci))
10541054 then throw(((("Saved timestamp is in future, saved = " + toString(eq)) + ", current = ") + toString(lastBlock.timestamp)))
10551055 else {
10561056 let ev = ec(aO, ed)
10571057 let cT = (ed / m)
10581058 let eB = cg(split(by._4, "_"), bT, ci, cT, ev)
10591059 let bI = bR(split(by._6, "_"), bT, cT, -1)
10601060 let eY = by._7
10611061 let ab = indexOf(eY, aO)
10621062 if (!(isDefined(ab)))
10631063 then throw(("Your staked lands don't contain " + aO))
10641064 else {
10651065 let eZ = ao(aO)
10661066 let fa = valueOrElse(getString(eZ), "")
10671067 $Tuple7(eV, eW, dL, eB, ((((((((((((((by._5 :+ DeleteEntry(ay(aO))) :+ DeleteEntry(aI(i, aO, ag))) :+ DeleteEntry(ai(aj))) :+ DeleteEntry(ak(aj, al))) :+ DeleteEntry(am(aO))) :+ DeleteEntry(az(aO))) :+ DeleteEntry(aA(aO, ag))) :+ DeleteEntry(aE(L, aO))) :+ DeleteEntry(aG(L, aO, ag))) :+ DeleteEntry(aK(aj))) :+ DeleteEntry(aN(aO))) :+ DeleteEntry(eZ)) :+ DeleteEntry(ar(fa))) :+ Burn(fromBase58String(aO), 1)), bI, removeByIndex(eY, value(ab)))
10681068 }
10691069 }
10701070 }
10711071 }
10721072 }
10731073 }
10741074
10751075 let cM = aL(aM)
10761076 let dd = cL(cM)
10771077 let fb = valueOrElse(getString(aR()), "0_0_0_0_0_0")
10781078 let fc = aS(ag)
10791079 let fd = getString(fc)
10801080 let fe = if (isDefined(fd))
10811081 then split_51C(value(fd), "_")
10821082 else nil
10831083 let bJ = {
10841084 let bA = eR
10851085 let bB = size(bA)
10861086 let bC = $Tuple7(eQ, 0, "", dd[be], nil, fb, fe)
10871087 func bD (bE,bF) = if ((bF >= bB))
10881088 then bE
10891089 else eT(bE, bA[bF])
10901090
10911091 func bG (bE,bF) = if ((bF >= bB))
10921092 then bE
10931093 else throw("List size exceeds 5")
10941094
10951095 bG(bD(bD(bD(bD(bD(bC, 0), 1), 2), 3), 4), 5)
10961096 }
10971097 let dL = bJ._3
10981098 let cH = valueOrErrorMessage(indexOf(K, dL), ("Unknown continent: " + dL))
10991099 let ca = cF(cx(toBigInt(dI)), cH)
11001100 let dK = valueOrElse(getInteger(ah()), (M + 1))
11011101 let ff = toString(dK)
11021102 let dM = Issue(ak(ff, eP), makeString([ff, eP, ca, dL], "_"), 1, 0, false)
11031103 let an = calculateAssetId(dM)
11041104 let fg = toBase58String(an)
11051105 let ea = makeString(bK((eS > 0), split(dd[bf], "_"), eS), "_")
11061106 $Tuple2(((((((((((((((bJ._5 :+ (if ((size(bJ._7) > 0))
11071107 then StringEntry(fc, makeString_11C(bJ._7, "_"))
11081108 else DeleteEntry(fc))) :+ IntegerEntry(ah(), (dK + 1))) :+ dM) :+ StringEntry(ai(ff), fg)) :+ StringEntry(am(fg), ag)) :+ StringEntry(aK(ff), ag)) :+ IntegerEntry(aE(L, fg), bJ._2)) :+ IntegerEntry(aG(L, fg, ag), bJ._2)) :+ IntegerEntry(az(fg), eH)) :+ IntegerEntry(aA(fg, ag), eH)) :+ StringEntry(cM, makeString([dd[bd], bJ._4, ea, dd[bg]], ":"))) :+ StringEntry(aR(), bJ._6)) :+ StringEntry(aP(aM), makeString([dL, "L", fg], "_"))) :+ ScriptTransfer(addressFromStringValue(ag), 1, an)), fg)
11091109 }
11101110
11111111
11121112 func fh (ag,eR,dI) = eO("M", 3, "SSSS", ag, eR, dI, 0)
11131113
11141114
11151115 func fi (ag,eR,dI,bL,eE) = {
11161116 let eI = (y * 4)
11171117 if (if (!(bL))
11181118 then (eE != eI)
11191119 else false)
11201120 then throw(("Payment attached should be " + toString(eI)))
11211121 else eO("L", 4, "SMM", ag, eR, dI, (x * 4))
11221122 }
11231123
11241124
11251125 func fj (ag,eR,dI,bL,eE) = {
11261126 let eI = (y * 47)
11271127 if (if (!(bL))
11281128 then (eE != eI)
11291129 else false)
11301130 then throw(("Payment attached should be " + toString(eI)))
11311131 else eO("XL", 5, "SSSML", ag, eR, dI, (x * 47))
11321132 }
11331133
11341134
11351135 func fk (ag,eR,dI,bL,eE) = {
11361136 let eI = (y * 54)
11371137 if (if (!(bL))
11381138 then (eE != eI)
11391139 else false)
11401140 then throw(("Payment attached should be " + toString(eI)))
11411141 else eO("XXL", 6, "LXL", ag, eR, dI, (x * 54))
11421142 }
11431143
11441144
11451145 func fl (bL,ag,eE,eR,dI) = {
11461146 let fm = {
11471147 let c = size(eR)
11481148 if ((4 == c))
11491149 then fh(ag, eR, dI)
11501150 else if ((3 == c))
11511151 then fi(ag, eR, dI, bL, eE)
11521152 else if ((5 == c))
11531153 then fj(ag, eR, dI, bL, eE)
11541154 else if ((2 == c))
11551155 then fk(ag, eR, dI, bL, eE)
11561156 else throw("Unknown merge")
11571157 }
11581158 fm
11591159 }
11601160
11611161
11621162 func fn (bX) = if (if ((bX.originCaller != ac))
11631163 then valueOrElse(getBoolean(aT()), false)
11641164 else false)
11651165 then throw("Contracts are under maintenance")
11661166 else StringEntry(af(toString(bX.originCaller)), toBase58String(bX.transactionId))
11671167
11681168
11691169 @Callable(bX)
11701170 func constructorV1 (fo) = if ((bX.caller != this))
11711171 then throw("Permission denied")
11721172 else [StringEntry(W(), fo)]
11731173
11741174
11751175
11761176 @Callable(bX)
11771177 func setBlocked (fp) = if ((bX.caller != this))
11781178 then throw("permission denied")
11791179 else [BooleanEntry(aT(), fp)]
11801180
11811181
11821182
11831183 @Callable(bX)
11841184 func stakeLand () = {
11851185 let fq = fn(bX)
11861186 if ((size(bX.payments) != 1))
11871187 then throw("Exactly one payment required")
11881188 else {
11891189 let fr = value(bX.payments[0])
11901190 let an = value(fr.assetId)
11911191 let O = toString(bX.caller)
11921192 if ((fr.amount != 1))
11931193 then throw((("NFT " + i) + " token should be attached as payment"))
11941194 else {
11951195 let eo = value(assetInfo(an))
11961196 if ((eo.issuer != this))
11971197 then throw("Unknown issuer of token")
11981198 else if (!(contains(eo.name, i)))
11991199 then throw((("Only NFT " + i) + " tokens are accepted"))
12001200 else {
12011201 let fs = drop(eo.name, 4)
12021202 let aj = if (contains(fs, "XXL"))
12031203 then dropRight(fs, 3)
12041204 else if (contains(fs, "XL"))
12051205 then dropRight(fs, 2)
12061206 else dropRight(fs, 1)
12071207 if (!(isDefined(parseInt(aj))))
12081208 then throw(("Cannot parse land number from " + eo.name))
12091209 else {
12101210 let aO = toBase58String(an)
12111211 let ep = ay(aO)
12121212 if (isDefined(getInteger(ep)))
12131213 then throw((("NFT " + eo.name) + " is already staked"))
12141214 else {
12151215 let es = split(eo.description, "_")
12161216 let bT = bZ(es[aY])
12171217 let ed = cb(es[aX])
12181218 let bI = bY(bT, (ed / m), 1)
12191219 let ee = valueOrElse(getInteger(aE(L, aO)), if (valueOrElse(getBoolean(aC(aO)), false))
12201220 then ed
12211221 else 0)
12221222 let fd = getString(aS(O))
12231223 let eY = if (isDefined(fd))
12241224 then split_51C(value(fd), "_")
12251225 else nil
12261226 if (containsElement(eY, aO))
12271227 then throw(("Your staked lands already contain " + aO))
12281228 else [IntegerEntry(ep, lastBlock.timestamp), IntegerEntry(aI(i, aO, O), lastBlock.timestamp), StringEntry(aS(O), makeString_11C((eY :+ aO), "_")), StringEntry(am(aO), O), StringEntry(aK(aj), O), IntegerEntry(aG(L, aO, O), ee), StringEntry(aR(), bI), fq]
12291229 }
12301230 }
12311231 }
12321232 }
12331233 }
12341234 }
12351235
12361236
12371237
12381238 @Callable(bX)
12391239 func unstakeLand (ej) = {
12401240 let fq = fn(bX)
12411241 if ((size(bX.payments) != 0))
12421242 then throw("No payments required")
12431243 else {
12441244 let ag = toString(bX.caller)
12451245 let eu = eh(ag, bn, ej)
12461246 let aO = eu._2
12471247 let fc = aS(ag)
12481248 let bT = bZ(eu._3[aY])
12491249 let ed = cb(eu._3[aX])
12501250 let bI = bY(bT, (ed / m), -1)
12511251 let eJ = eC(ag, aO, ed, bn)
12521252 let eY = split_51C(valueOrElse(getString(fc), ""), "_")
12531253 let ab = indexOf(eY, aO)
12541254 if (!(isDefined(ab)))
12551255 then throw(("Your staked lands don't contain " + aO))
12561256 else {
12571257 let cK = value(blockInfoByHeight(height)).timestamp
12581258 let ft = valueOrElse(getInteger(ae, aU(ag)), 0)
12591259 if ((ft >= cK))
12601260 then throw(("Your gWL are taking part in voting, cannot unstake until " + toString(ft)))
12611261 else [ScriptTransfer(bX.caller, 1, fromBase58String(aO)), DeleteEntry(ay(aO)), DeleteEntry(aI(i, aO, ag)), StringEntry(aR(), bI), StringEntry(eJ._2, makeString(eJ._3, ":")), if ((size(eY) > 1))
12621262 then StringEntry(fc, makeString_11C(removeByIndex(eY, value(ab)), "_"))
12631263 else DeleteEntry(fc), fq]
12641264 }
12651265 }
12661266 }
12671267
12681268
12691269
12701270 @Callable(bX)
12711271 func stakeDuck () = {
12721272 let fq = fn(bX)
12731273 if ((size(bX.payments) != 1))
12741274 then throw("Exactly one payment required")
12751275 else {
12761276 let fr = value(bX.payments[0])
12771277 let an = value(fr.assetId)
12781278 let O = toString(bX.caller)
12791279 if ((fr.amount != 1))
12801280 then throw((("NFT " + j) + " token should be attached as payment"))
12811281 else {
12821282 let eo = value(assetInfo(an))
12831283 if (if ((eo.issuer != d))
12841284 then (eo.issuer != e)
12851285 else false)
12861286 then throw((("Unknown issuer of " + j) + " token"))
12871287 else if (!(contains(eo.name, j)))
12881288 then throw((("Only NFT " + j) + " tokens are accepted"))
12891289 else {
12901290 let fu = toBase58String(an)
12911291 let ep = ay(fu)
12921292 if (isDefined(getInteger(ep)))
12931293 then throw((("NFT " + eo.name) + " is already staked"))
12941294 else if (isDefined(getString(aH(O))))
12951295 then throw(("You already staked one duck: " + eo.name))
12961296 else {
12971297 let fv = aP(fu)
12981298 let fw = getString(fv)
12991299 let cM = aL(fu)
13001300 let fx = getString(cM)
13011301 ([IntegerEntry(ep, lastBlock.timestamp), IntegerEntry(aI(j, toBase58String(an), O), lastBlock.timestamp), StringEntry(ax(fu), O), StringEntry(aH(O), fu)] ++ (if (isDefined(fw))
13021302 then nil
13031303 else ([StringEntry(fv, k)] ++ (if (isDefined(fx))
13041304 then nil
13051305 else (([StringEntry(cM, "0:0_0_0_0_0_0:0_0_0_0_0_0:")] :+ IntegerEntry(aQ(fu), 100)) :+ fq)))))
13061306 }
13071307 }
13081308 }
13091309 }
13101310 }
13111311
13121312
13131313
13141314 @Callable(bX)
13151315 func unstakeDuck (fu) = {
13161316 let fq = fn(bX)
13171317 if ((size(bX.payments) != 0))
13181318 then throw("No payments required")
13191319 else {
13201320 let an = fromBase58String(fu)
13211321 let O = toString(bX.caller)
13221322 let eo = value(assetInfo(an))
13231323 let ep = ay(toBase58String(an))
13241324 if (!(isDefined(getInteger(ep))))
13251325 then throw((("NFT " + eo.name) + " is not staked"))
13261326 else if (!(isDefined(getString(aH(O)))))
13271327 then throw((("The duck " + eo.name) + " is not staked"))
13281328 else {
13291329 let er = valueOrErrorMessage(getString(ax(toBase58String(an))), (("NFT " + eo.name) + " is orphaned"))
13301330 if ((er != O))
13311331 then throw("Staked NFT is not yours")
13321332 else {
13331333 let dX = aQ(fu)
13341334 let fy = valueOrElse(getInteger(dX), 100)
13351335 if ((fy != 100))
13361336 then throw("Please heal your duck before unstaking")
13371337 else [ScriptTransfer(bX.caller, 1, an), DeleteEntry(ep), DeleteEntry(dX), DeleteEntry(aP(fu)), DeleteEntry(ax(fu)), DeleteEntry(aI(j, fu, O)), DeleteEntry(aH(O)), fq]
13381338 }
13391339 }
13401340 }
13411341 }
13421342
13431343
13441344
13451345 @Callable(bX)
13461346 func claimRes (ce,fz) = {
13471347 let fq = fn(bX)
13481348 if ((size(bX.payments) != 0))
13491349 then throw("No payments required")
13501350 else {
13511351 let ag = toString(bX.originCaller)
13521352 let bQ = et(ag, ce, bn, fz)
13531353 $Tuple2((((bQ._1 :+ StringEntry(bQ._2, makeString(bQ._3, ":"))) :+ StringEntry(bQ._4, makeString(bQ._5, ":"))) :+ fq), bQ._3[be])
13541354 }
13551355 }
13561356
13571357
13581358
13591359 @Callable(bX)
13601360 func claimResToWH (ce,fz) = {
13611361 let fq = fn(bX)
13621362 if ((size(bX.payments) != 0))
13631363 then throw("No payments required")
13641364 else {
13651365 let ag = toString(bX.originCaller)
13661366 let bQ = et(ag, ce, bm, fz)
13671367 $Tuple2((((bQ._1 :+ StringEntry(bQ._2, makeString(bQ._3, ":"))) :+ StringEntry(bQ._4, makeString(bQ._5, ":"))) :+ fq), bQ._5[bi])
13681368 }
13691369 }
13701370
13711371
13721372
13731373 @Callable(bX)
13741374 func flight (dP,dQ) = {
13751375 let fq = fn(bX)
13761376 if (!(sigVerify_8Kb(dP, dQ, g)))
13771377 then throw("signature does not match")
13781378 else if ((size(bX.payments) != 0))
13791379 then throw("No payments required")
13801380 else {
13811381 let cQ = split(toUtf8String(dP), ";")
13821382 let dR = split(split(cQ[0], "|")[0], "_")
13831383 let dS = parseIntValue(dR[0])
13841384 let dT = parseIntValue(dR[1])
13851385 let fA = split(cQ[1], ":")
13861386 let fB = fA[0]
13871387 let dW = parseIntValue(fA[1])
13881388 if (if ((dW > (lastBlock.timestamp + t)))
13891389 then true
13901390 else ((lastBlock.timestamp - t) > dW))
13911391 then throw("signature outdated")
13921392 else {
13931393 let aM = valueOrErrorMessage(getString(aH(toString(bX.caller))), "You don't have a duck staked")
13941394 let dX = aQ(aM)
13951395 let dY = valueOrElse(getInteger(dX), 100)
13961396 if ((dY != dS))
13971397 then throw(((("oldHealth=" + toString(valueOrElse(getInteger(dX), 100))) + " from state does not match one from flight log=") + toString(dS)))
13981398 else if ((0 >= dS))
13991399 then throw("You can't fly with zero health")
14001400 else {
14011401 let fv = aP(aM)
14021402 let el = valueOrElse(getString(fv), k)
14031403 if ((fB == el))
14041404 then throw("You can't fly to the same location")
14051405 else $Tuple2([StringEntry(fv, if ((dT > 0))
14061406 then fB
14071407 else el), IntegerEntry(dX, dT), fq], unit)
14081408 }
14091409 }
14101410 }
14111411 }
14121412
14131413
14141414
14151415 @Callable(bX)
14161416 func setHealth (fy,aM) = {
14171417 let fq = fn(bX)
14181418 if (if ((0 > fy))
14191419 then true
14201420 else (fy > 100))
14211421 then throw("HP should be within 0..100")
14221422 else [IntegerEntry(aQ(aM), fy), fq]
14231423 }
14241424
14251425
14261426
14271427 @Callable(bX)
14281428 func heal (fC,ce) = {
14291429 let fq = fn(bX)
14301430 if (if ((0 > fC))
14311431 then true
14321432 else (fC >= l))
14331433 then throw(("Unknown material: " + toString(fC)))
14341434 else if ((0 >= ce))
14351435 then throw(("Amount should be positive! " + toString(ce)))
14361436 else {
14371437 let aM = valueOrErrorMessage(getString(aH(toString(bX.caller))), "You don't have a duck staked")
14381438 let dX = aQ(aM)
14391439 let fD = valueOrElse(getInteger(dX), 100)
14401440 if ((fD >= 100))
14411441 then throw("HP should be < 100 to heal")
14421442 else {
14431443 let cM = aL(aM)
14441444 let dd = cL(cM)
14451445 let dZ = split(dd[bf], "_")
14461446 let fE = parseIntValue(dZ[fC])
14471447 let fF = min([(ce / h), (100 - fD)])
14481448 let fG = (fF * h)
14491449 if ((fG > fE))
14501450 then throw(((((("You need " + toString(fG)) + " of ") + J[fC]) + " to heal, but you backpack contains ") + toString(fE)))
14511451 else {
14521452 let ea = cc(dZ, fC, fG)
14531453 [IntegerEntry(dX, (fD + fF)), StringEntry(cM, makeString([dd[bd], dd[be], ea, dd[bg]], ":")), fq]
14541454 }
14551455 }
14561456 }
14571457 }
14581458
14591459
14601460
14611461 @Callable(bX)
14621462 func updateBackpack (aM,fH) = {
14631463 let fq = fn(bX)
14641464 if ((bX.caller != ad))
14651465 then throw("permission denied")
14661466 else $Tuple2([StringEntry(aL(aM), fH), fq], fH)
14671467 }
14681468
14691469
14701470
14711471 @Callable(bX)
14721472 func buySLand () = {
14731473 let fq = fn(bX)
14741474 if ((size(bX.payments) != 1))
14751475 then throw("Exactly one payment required")
14761476 else {
14771477 let fr = value(bX.payments[0])
14781478 if ((fr.assetId != b))
14791479 then throw("Allowed USDT payment only!")
14801480 else if ((fr.amount != A))
14811481 then throw(("Payment attached should be " + toString(A)))
14821482 else {
14831483 let bQ = dG(bX.caller, bX.transactionId)
14841484 $Tuple2(((bQ._1 :+ ScriptTransfer(ad, fr.amount, b)) :+ fq), bQ._2._1)
14851485 }
14861486 }
14871487 }
14881488
14891489
14901490
14911491 @Callable(bX)
14921492 func expedition (dP,dQ) = {
14931493 let fq = fn(bX)
14941494 if ((size(bX.payments) != 0))
14951495 then throw("No payments required")
14961496 else {
14971497 let bQ = dO(true, bX.caller, bX.transactionId, dP, dQ)
14981498 $Tuple2((bQ._1 :+ fq), bQ._2)
14991499 }
15001500 }
15011501
15021502
15031503
15041504 @Callable(bX)
15051505 func upgradeInfra (aO) = {
15061506 let fq = fn(bX)
15071507 if ((size(bX.payments) != 0))
15081508 then throw("No payments required")
15091509 else {
15101510 let bQ = eD(true, bX.caller, 0, aO)
15111511 $Tuple2((bQ._1 :+ fq), bQ._2)
15121512 }
15131513 }
15141514
15151515
15161516
15171517 @Callable(bX)
15181518 func upgradeInfraUsdt (aO) = if ((bX.caller != this))
15191519 then throw("Permission denied")
15201520 else {
15211521 let fq = fn(bX)
15221522 if ((size(bX.payments) != 1))
15231523 then throw("Exactly one payment required")
15241524 else {
15251525 let fr = value(bX.payments[0])
15261526 if ((fr.assetId != b))
15271527 then throw("Allowed USDT payment only!")
15281528 else {
15291529 let bQ = eD(false, bX.caller, fr.amount, aO)
15301530 $Tuple2(((bQ._1 :+ ScriptTransfer(ad, fr.amount, b)) :+ fq), bQ._2)
15311531 }
15321532 }
15331533 }
15341534
15351535
15361536
15371537 @Callable(bX)
15381538 func activateArtifact (fI,aO) = {
15391539 let fq = fn(bX)
15401540 if ((size(bX.payments) != 0))
15411541 then throw("No payments required")
15421542 else {
15431543 let bQ = {
15441544 let c = fI
15451545 if (("PRESALE" == c))
15461546 then eM(toString(bX.caller), aO)
15471547 else throw("Unknown artifact")
15481548 }
15491549 (bQ :+ fq)
15501550 }
15511551 }
15521552
15531553
15541554
15551555 @Callable(bX)
15561556 func mergeLands (eR) = {
15571557 let fq = fn(bX)
15581558 if ((size(bX.payments) != 0))
15591559 then throw("No payments required")
15601560 else {
15611561 let bQ = fl(true, toString(bX.caller), 0, eR, bX.transactionId)
15621562 $Tuple2((bQ._1 :+ fq), bQ._2)
15631563 }
15641564 }
15651565
15661566
15671567
15681568 @Callable(bX)
15691569 func mergeLandsUsdt (eR) = {
15701570 let fq = fn(bX)
15711571 if ((size(bX.payments) != 1))
15721572 then throw("Exactly one payment required")
15731573 else {
15741574 let fr = value(bX.payments[0])
15751575 if ((fr.assetId != b))
15761576 then throw("Allowed USDT payment only!")
15771577 else {
15781578 let bQ = fl(false, toString(bX.caller), fr.amount, eR, bX.transactionId)
15791579 $Tuple2(((bQ._1 :+ ScriptTransfer(ad, fr.amount, b)) :+ fq), bQ._2)
15801580 }
15811581 }
15821582 }
15831583
15841584
15851585
15861586 @Callable(bX)
15871587 func cargoExchange (fJ,aO) = {
15881588 let fq = fn(bX)
15891589 if ((size(bX.payments) != 0))
15901590 then throw("No payments required")
15911591 else {
15921592 let dc = split_4C(fJ, ":")
15931593 let ag = toString(bX.originCaller)
15941594 let eo = value(assetInfo(fromBase58String(aO)))
15951595 let ep = ay(aO)
15961596 if (!(isDefined(getInteger(ep))))
15971597 then throw((eo.name + " is not staked"))
15981598 else {
15991599 let er = valueOrErrorMessage(getString(am(aO)), (("NFT " + eo.name) + " is orphaned"))
16001600 if ((er != ag))
16011601 then throw((i + " is not yours"))
16021602 else {
16031603 let cT = (cb(split(eo.description, "_")[aX]) / m)
16041604 let cU = valueOrElse(getInteger(az(aO)), 0)
16051605 let aM = valueOrErrorMessage(getString(aH(ag)), "You don't have a duck staked")
16061606 let el = valueOrElse(getString(aP(aM)), k)
16071607 let em = split(value(el), "_")
16081608 if ((em[bb] != "L"))
16091609 then throw((("Duck location type is " + em[bb]) + ", but should be L"))
16101610 else if ((em[bc] != aO))
16111611 then throw(("Duck should be on the land " + aO))
16121612 else {
16131613 let cS = aN(aO)
16141614 let cW = cR(cS, cT, cU)
16151615 let cM = aL(aM)
16161616 let dd = cL(cM)
16171617 let bQ = db(dc, cW, dd)
16181618 [StringEntry(cM, makeString([dd[bd], bQ._4, bQ._5, bQ._6], ":")), StringEntry(cS, makeString([cW[bh], bQ._1, bQ._2, bQ._3, cW[bl]], ":")), fq]
16191619 }
16201620 }
16211621 }
16221622 }
16231623 }
16241624
16251625
16261626
16271627 @Callable(bX)
16281628 func saveWarehouse (fK,aO) = {
16291629 let fq = fn(bX)
16301630 if ((bX.caller != ad))
16311631 then throw("Access denied")
16321632 else {
16331633 let cS = aN(aO)
16341634 if ((size(split_4C(fK, ":")) != 5))
16351635 then throw("warehouse string should contain 4 ':' separators")
16361636 else $Tuple2([StringEntry(cS, fK), fq], fK)
16371637 }
16381638 }
16391639
16401640
16411641
16421642 @Callable(bX)
16431643 func replaceBooleanArtifact (aO) = if ((bX.caller != ac))
16441644 then throw("Access denied")
16451645 else {
16461646 let fL = aC(aO)
16471647 let fM = aE(L, aO)
16481648 let fN = getBoolean(fL)
16491649 if (isDefined(fN))
16501650 then {
16511651 let es = split(value(assetInfo(fromBase58String(aO))).description, "_")
16521652 let ed = cb(es[aX])
16531653 let ee = valueOrElse(getInteger(fM), ed)
16541654 let er = getString(am(aO))
16551655 let fO = if (isDefined(er))
16561656 then [IntegerEntry(aG(L, aO, value(er)), ee), DeleteEntry(aD(aO, value(er)))]
16571657 else nil
16581658 if (value(fN))
16591659 then $Tuple2(((fO :+ IntegerEntry(fM, ee)) :+ DeleteEntry(fL)), 2)
16601660 else $Tuple2([DeleteEntry(fL)], 1)
16611661 }
16621662 else $Tuple2(nil, 0)
16631663 }
16641664
16651665
16661666
16671667 @Callable(bX)
1668-func setCustomName (an,fa,aF) = if ((bX.caller != this))
1669- then throw("Permission denied")
1670- else {
1671- let fq = fn(bX)
1672- if ((size(bX.payments) != 1))
1673- then throw("Exactly one payment required")
1674- else {
1675- let fr = value(bX.payments[0])
1676- if ((fr.assetId != b))
1677- then throw("Allowed USDT payment only!")
1678- else if ((fr.amount != w))
1679- then throw(("Payment should be " + toString(w)))
1680- else if (contains(fa, "__"))
1681- then throw(("Name should not contain '__': " + fa))
1682- else {
1683- let ag = toString(bX.originCaller)
1684- let fP = {
1685- let c = aF
1686- if (("ACCOUNT" == c))
1668+func setCustomName (an,fa,aF) = {
1669+ let fq = fn(bX)
1670+ if ((size(bX.payments) != 1))
1671+ then throw("Exactly one payment required")
1672+ else {
1673+ let fr = value(bX.payments[0])
1674+ if ((fr.assetId != b))
1675+ then throw("Allowed USDT payment only!")
1676+ else if ((fr.amount != w))
1677+ then throw(("Payment should be " + toString(w)))
1678+ else if (contains(fa, "__"))
1679+ then throw(("Name should not contain '__': " + fa))
1680+ else {
1681+ let ag = toString(bX.originCaller)
1682+ let fP = {
1683+ let c = aF
1684+ if (("ACCOUNT" == c))
1685+ then {
1686+ let fQ = au(fa)
1687+ let fR = getString(fQ)
1688+ if (isDefined(fR))
1689+ then throw(("Name already registered: " + fa))
1690+ else [StringEntry(aq(ag), fa), StringEntry(fQ, ag)]
1691+ }
1692+ else if (("LAND" == c))
16871693 then {
1688- let fQ = au(fa)
1689- let fR = getString(fQ)
1690- if (isDefined(fR))
1691- then throw(("Name already registered: " + fa))
1692- else [StringEntry(aq(ag), fa), StringEntry(fQ, ag)]
1694+ let eo = value(assetInfo(fromBase58String(an)))
1695+ let ep = ay(an)
1696+ if (!(isDefined(getInteger(ep))))
1697+ then throw((eo.name + " is not staked"))
1698+ else {
1699+ let er = valueOrErrorMessage(getString(am(an)), (("NFT " + eo.name) + " is orphaned"))
1700+ if ((er != ag))
1701+ then throw((i + " is not yours"))
1702+ else {
1703+ let fQ = ar(fa)
1704+ let fR = getString(fQ)
1705+ if (isDefined(fR))
1706+ then throw(("Name already registered: " + fa))
1707+ else [StringEntry(ao(an), fa), StringEntry(fQ, an)]
1708+ }
1709+ }
16931710 }
1694- else if (("LAND" == c))
1711+ else if (("DUCK" == c))
16951712 then {
16961713 let eo = value(assetInfo(fromBase58String(an)))
16971714 let ep = ay(an)
1698- if (!(isDefined(getInteger(ep))))
1715+ if (if (!(isDefined(getInteger(ep))))
1716+ then true
1717+ else !(isDefined(getString(aH(ag)))))
16991718 then throw((eo.name + " is not staked"))
17001719 else {
1701- let er = valueOrErrorMessage(getString(am(an)), (("NFT " + eo.name) + " is orphaned"))
1720+ let er = valueOrErrorMessage(getString(ax(an)), (("NFT " + eo.name) + " is orphaned"))
17021721 if ((er != ag))
1703- then throw((i + " is not yours"))
1722+ then throw((j + " is not yours"))
17041723 else {
1705- let fQ = ar(fa)
1724+ let fQ = at(fa)
17061725 let fR = getString(fQ)
17071726 if (isDefined(fR))
17081727 then throw(("Name already registered: " + fa))
1709- else [StringEntry(ao(an), fa), StringEntry(fQ, an)]
1728+ else [StringEntry(ap(an), fa), StringEntry(fQ, an)]
17101729 }
17111730 }
17121731 }
1713- else if (("DUCK" == c))
1714- then {
1715- let eo = value(assetInfo(fromBase58String(an)))
1716- let ep = ay(an)
1717- if (if (!(isDefined(getInteger(ep))))
1718- then true
1719- else !(isDefined(getString(aH(ag)))))
1720- then throw((eo.name + " is not staked"))
1721- else {
1722- let er = valueOrErrorMessage(getString(ax(an)), (("NFT " + eo.name) + " is orphaned"))
1723- if ((er != ag))
1724- then throw((j + " is not yours"))
1725- else {
1726- let fQ = at(fa)
1727- let fR = getString(fQ)
1728- if (isDefined(fR))
1729- then throw(("Name already registered: " + fa))
1730- else [StringEntry(ap(an), fa), StringEntry(fQ, an)]
1731- }
1732- }
1733- }
1734- else throw("Unknown entity type")
1735- }
1736- $Tuple2(((fP :+ ScriptTransfer(ad, fr.amount, b)) :+ fq), 0)
1732+ else throw("Unknown entity type")
17371733 }
1738- }
1739- }
1734+ $Tuple2(((fP :+ ScriptTransfer(ad, fr.amount, b)) :+ fq), 0)
1735+ }
1736+ }
1737+ }
17401738
17411739
17421740
17431741 @Callable(bX)
17441742 func setReferrals (fS,fT) = if ((bX.callerPublicKey != g))
17451743 then throw("Permission denied")
17461744 else {
17471745 let fq = fn(bX)
17481746 if ((size(bX.payments) != 0))
17491747 then throw("No payments required")
17501748 else if (!(isDefined(addressFromString(fS))))
17511749 then throw(("Invalid address: " + fS))
17521750 else if (!(isDefined(addressFromString(fT))))
17531751 then throw(("Invalid address: " + fT))
17541752 else {
17551753 let fU = av(fT)
17561754 let fV = getString(fU)
17571755 if (if (isDefined(fV))
17581756 then isDefined(addressFromString(value(fV)))
17591757 else false)
17601758 then throw(((fT + " already has refBy: ") + value(fV)))
17611759 else {
17621760 let fW = aw(fS)
17631761 let fX = getString(fW)
17641762 let fY = split_4C(value(fX), "_")
17651763 if (if (isDefined(fX))
17661764 then containsElement(fY, fT)
17671765 else false)
17681766 then throw((((fS + " already contains ") + fT) + " within referrals"))
17691767 else {
17701768 let fZ = makeString_2C((fY :+ fT), "_")
17711769 $Tuple2([StringEntry(fU, fS), StringEntry(fW, fZ), fq], 0)
17721770 }
17731771 }
17741772 }
17751773 }
17761774
17771775
17781776
17791777 @Callable(bX)
17801778 func splitByGlobalWeightsREADONLY (ce) = $Tuple2(nil, bH(ce))
17811779
17821780
17831781
17841782 @Callable(bX)
17851783 func splitByGlobalAndLocalWeightsREADONLY (ga,gb,ca) = {
17861784 let bT = bZ(ca)
17871785 $Tuple2(nil, $Tuple2(bH(ga), bs(gb, bT)))
17881786 }
17891787
17901788
17911789
17921790 @Callable(bX)
17931791 func getBackpackREADONLY (aM) = $Tuple2(nil, makeString(cL(aL(aM)), ":"))
17941792
17951793
17961794
17971795 @Callable(bX)
17981796 func getWarehouseREADONLY (aO) = {
17991797 let eo = value(assetInfo(fromBase58String(aO)))
18001798 let cT = (cb(split(eo.description, "_")[aX]) / m)
18011799 let cU = valueOrElse(getInteger(az(aO)), 0)
18021800 $Tuple2(nil, makeString_2C(cR(aN(aO), cT, cU), ":"))
18031801 }
18041802
18051803

github/deemru/w8io/3ef1775 
408.23 ms