tx · 8NwPqcnvrXqTuuaw29z42w48kYQ597SUMVeTaS2utiTf

3NBsEdgQXYpy59EHGqgwfE7jSAqFUzo7Ccp:  -0.05000000 Waves

2021.09.13 13:40 [1701168] smart account 3NBsEdgQXYpy59EHGqgwfE7jSAqFUzo7Ccp > SELF 0.00000000 Waves

{ "type": 13, "id": "8NwPqcnvrXqTuuaw29z42w48kYQ597SUMVeTaS2utiTf", "fee": 5000000, "feeAssetId": null, "timestamp": 1631529642028, "version": 2, "chainId": 84, "sender": "3NBsEdgQXYpy59EHGqgwfE7jSAqFUzo7Ccp", "senderPublicKey": "FwAzvdwqFM7zuHfsEbjdj845GeiE4UKnLGPLbqhS4U38", "proofs": [ "2Mwj53pypbbXhbevNbMtWnnsM4eaSGVY8NutqtR2eQysqbZCcCfK6QypGSKNYmLjdLXNnsV4PNyjahkQ39QVDmSt" ], "script": "base64:AAIFAAAAAAAAACkIAhIECgIBBBIAEgQKAggIEgASBQoDAQEIEgUKAwEBCBIFCgMIAQgSAAAAADgAAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAB0FkZHJlc3MAAAABAQAAABoBVGKj2upWaZ+pQUgYRThtGvhV6u4YNF7hRQAAAAAKbFBkZWNpbWFscwAAAAAAAAAACAAAAAAGc2NhbGU4AAAAAAAF9eEAAAAAAAdzY2FsZTE4CQABNgAAAAEADeC2s6dkAAAAAAAAA1NFUAIAAAACX18AAAAAClBvb2xBY3RpdmUAAAAAAAAAAAEAAAAAD1Bvb2xQdXREaXNhYmxlZAAAAAAAAAAAAgAAAAATUG9vbE1hdGNoZXJEaXNhYmxlZAAAAAAAAAAAAwAAAAAMUG9vbFNodXRkb3duAAAAAAAAAAAEAAAAAA5pZHhQb29sQWRkcmVzcwAAAAAAAAAAAQAAAAANaWR4UG9vbFN0YXR1cwAAAAAAAAAAAgAAAAAQaWR4UG9vbExQQXNzZXRJZAAAAAAAAAAAAwAAAAAQaWR4QW1vdW50QXNzZXRJZAAAAAAAAAAABAAAAAAPaWR4UHJpY2VBc3NldElkAAAAAAAAAAAFAAAAABZpZHhBbW91bnRBc3NldERlY2ltYWxzAAAAAAAAAAAGAAAAABVpZHhQcmljZUFzc2V0RGVjaW1hbHMAAAAAAAAAAAcAAAAAGGlkeEFtb3VudEFzc2V0SW50ZXJuYWxJZAAAAAAAAAAACAAAAAAXaWR4UHJpY2VBc3NldEludGVybmFsSWQAAAAAAAAAAAkAAAAAEmlkeExQQXNzZXREZWNpbWFscwAAAAAAAAAACgAAAAATaWR4TWF0Y2hlclB1YmxpY0tleQAAAAAAAAAACwAAAAAVaWR4UG9vbEFtb3VudEFzc2V0QW10AAAAAAAAAAABAAAAABRpZHhQb29sUHJpY2VBc3NldEFtdAAAAAAAAAAAAgAAAAARaWR4UG9vbExQQXNzZXRBbXQAAAAAAAAAAAMAAAAAGWlkeEZhY3RvcnlTdGFraW5nQ29udHJhY3QAAAAAAAAAAAEAAAAAGGlkeEZhY3RvcnlCb29zdGluZ0NvbmZpZwAAAAAAAAAAAgEAAAAMa2V5UHJpY2VMYXN0AAAAAAIAAAARJXMlc19fcHJpY2VfX2xhc3QBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIAAAABaAAAAAl0aW1lc3RhbXAJAAS5AAAAAgkABEwAAAACAgAAABglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAARMAAAAAgkAAaQAAAABBQAAAAFoCQAETAAAAAIJAAGkAAAAAQUAAAAJdGltZXN0YW1wBQAAAANuaWwFAAAAA1NFUAEAAAAQa2V5UG9vbExpcXVpZGl0eQAAAAIAAAATaW50ZXJuYWxBbW91bnRBc3NldAAAABJpbnRlcm5hbFByaWNlQXNzZXQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIJWQlZCVzX18FAAAAE2ludGVybmFsQW1vdW50QXNzZXQCAAAAAl9fBQAAABJpbnRlcm5hbFByaWNlQXNzZXQCAAAACF9fbG9ja2VkAQAAABZrZXlQb29sTGlxdWlkaXR5QnlVc2VyAAAAAwAAABNpbnRlcm5hbEFtb3VudEFzc2V0AAAAEmludGVybmFsUHJpY2VBc3NldAAAAAt1c2VyQWRkcmVzcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAKJWQlZCVzJXNfXwUAAAATaW50ZXJuYWxBbW91bnRBc3NldAIAAAACX18FAAAAEmludGVybmFsUHJpY2VBc3NldAIAAAACX18FAAAAC3VzZXJBZGRyZXNzAgAAAAhfX2xvY2tlZAEAAAASa2V5UHV0QWN0aW9uQnlVc2VyAAAAAgAAAAt1c2VyQWRkcmVzcwAAAAR0eElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAslcyVzJXNfX1BfXwUAAAALdXNlckFkZHJlc3MCAAAAAl9fBQAAAAR0eElkAQAAABJrZXlHZXRBY3Rpb25CeVVzZXIAAAACAAAAC3VzZXJBZGRyZXNzAAAABHR4SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACyVzJXMlc19fR19fBQAAAAt1c2VyQWRkcmVzcwIAAAACX18FAAAABHR4SWQBAAAADmtleUFtb3VudEFzc2V0AAAAAAIAAAAPJXNfX2Ftb3VudEFzc2V0AQAAAA1rZXlQcmljZUFzc2V0AAAAAAIAAAAOJXNfX3ByaWNlQXNzZXQBAAAAEGtleUZhY3RvcnlDb25maWcAAAAAAgAAABElc19fZmFjdG9yeUNvbmZpZwEAAAApa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMAAAABAAAAE3Bvb2xDb250cmFjdEFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAAAglcyVzJXNfXwUAAAATcG9vbENvbnRyYWN0QWRkcmVzcwIAAAAgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAAAADWtleVBvb2xDb25maWcAAAACAAAAE2Ftb3VudEFzc2V0SW50ZXJuYWwAAAAScHJpY2VBc3NldEludGVybmFsCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACCVkJWQlc19fBQAAABNhbW91bnRBc3NldEludGVybmFsAgAAAAJfXwUAAAAScHJpY2VBc3NldEludGVybmFsAgAAAAhfX2NvbmZpZwEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEAAAAMYmFzZUFzc2V0U3RyCQABLAAAAAICAAAAKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAAAADGJhc2VBc3NldFN0cgEAAAATa2V5QWxsUG9vbHNTaHV0ZG93bgAAAAACAAAADCVzX19zaHV0ZG93bgEAAAANa2V5UG9vbFdlaWdodAAAAAEAAAAPY29udHJhY3RBZGRyZXNzCQABLAAAAAICAAAAEiVzJXNfX3Bvb2xXZWlnaHRfXwUAAAAPY29udHJhY3RBZGRyZXNzAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABNrZXlBbGxQb29sc1NodXRkb3duAAAAAAcBAAAADWdldFBvb2xDb25maWcAAAAABAAAAA9wb29sQW1vdW50QXNzZXQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzCQEAAAAOa2V5QW1vdW50QXNzZXQAAAAAAgAAACBObyBjb25maWcgZm9yIGFtb3VudCBhc3NldCBmb3VuZAQAAAAOcG9vbFByaWNlQXNzZXQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzCQEAAAANa2V5UHJpY2VBc3NldAAAAAACAAAAH05vIGNvbmZpZyBmb3IgcHJpY2UgYXNzZXQgZm91bmQEAAAAFnBvb2xQcmljZUFzc2V0SW50ZXJuYWwJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQUAAAAOcG9vbFByaWNlQXNzZXQCAAAAKE5vIGNvbmZpZyBmb3IgaW50ZXJuYWwgcHJpY2UgYXNzZXQgZm91bmQEAAAAF3Bvb2xBbW91bnRBc3NldEludGVybmFsCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEFAAAAD3Bvb2xBbW91bnRBc3NldAIAAAApTm8gY29uZmlnIGZvciBpbnRlcm5hbCBhbW91bnQgYXNzZXQgZm91bmQJAAS1AAAAAgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAADWtleVBvb2xDb25maWcAAAACCQABpAAAAAEFAAAAF3Bvb2xBbW91bnRBc3NldEludGVybmFsCQABpAAAAAEFAAAAFnBvb2xQcmljZUFzc2V0SW50ZXJuYWwCAAAAKE5vIGZhY3RvcnkgY29uZmlnIGZvdW5kIGZvciBwb29sIGFzc2V0cy4FAAAAA1NFUAEAAAAQZ2V0RmFjdG9yeUNvbmZpZwAAAAAJAAS1AAAAAgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAEGtleUZhY3RvcnlDb25maWcAAAAAAgAAABhObyBmYWN0b3J5IGNvbmZpZyBmb3VuZC4FAAAAA1NFUAEAAAAQZ2V0UG9vbExpcXVpZGl0eQAAAAIAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkBAAAABljdXJyZW50UG9vbExpcXVpZGl0eVZhbHVlCQAEHQAAAAIFAAAABHRoaXMJAQAAABBrZXlQb29sTGlxdWlkaXR5AAAAAgUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAMJAQAAAAlpc0RlZmluZWQAAAABBQAAABljdXJyZW50UG9vbExpcXVpZGl0eVZhbHVlCQAEtQAAAAIJAQAAAAV2YWx1ZQAAAAEFAAAAGWN1cnJlbnRQb29sTGlxdWlkaXR5VmFsdWUFAAAAA1NFUAkABEwAAAACAgAAAAAJAARMAAAAAgIAAAABMAkABEwAAAACAgAAAAEwCQAETAAAAAICAAAAATAFAAAAA25pbAEAAAAWZ2V0UG9vbExpcXVpZGl0eUJ5VXNlcgAAAAMAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkAAAAC3VzZXJBZGRyZXNzBAAAABljdXJyZW50UG9vbExpcXVpZGl0eVZhbHVlCQAEHQAAAAIFAAAABHRoaXMJAQAAABZrZXlQb29sTGlxdWlkaXR5QnlVc2VyAAAAAwUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAUAAAALdXNlckFkZHJlc3MDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAZY3VycmVudFBvb2xMaXF1aWRpdHlWYWx1ZQkABLUAAAACCQEAAAAFdmFsdWUAAAABBQAAABljdXJyZW50UG9vbExpcXVpZGl0eVZhbHVlBQAAAANTRVAJAARMAAAAAgIAAAAACQAETAAAAAICAAAAATAJAARMAAAAAgIAAAABMAkABEwAAAACAgAAAAEwCQAETAAAAAICAAAAATAFAAAAA25pbAEAAAARZGF0YVBvb2xMaXF1aWRpdHkAAAADAAAAEWFtb3VudEFzc2V0TG9ja2VkAAAAEHByaWNlQXNzZXRMb2NrZWQAAAANbHBUb2tlbkxvY2tlZAkABLkAAAACCQAETAAAAAICAAAABiVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAAEWFtb3VudEFzc2V0TG9ja2VkCQAETAAAAAIJAAGkAAAAAQUAAAAQcHJpY2VBc3NldExvY2tlZAkABEwAAAACCQABpAAAAAEFAAAADWxwVG9rZW5Mb2NrZWQFAAAAA25pbAUAAAADU0VQAQAAABdkYXRhUG9vbExpcXVpZGl0eUJ5VXNlcgAAAAQAAAARYW1vdW50QXNzZXRMb2NrZWQAAAAQcHJpY2VBc3NldExvY2tlZAAAAA1scFRva2VuTG9ja2VkAAAAC3VzZXJBZGRyZXNzCQAEuQAAAAIJAARMAAAAAgIAAAAGJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAARYW1vdW50QXNzZXRMb2NrZWQJAARMAAAAAgkAAaQAAAABBQAAABBwcmljZUFzc2V0TG9ja2VkCQAETAAAAAIJAAGkAAAAAQUAAAANbHBUb2tlbkxvY2tlZAUAAAADbmlsBQAAAANTRVABAAAAEWRhdGFQdXRBY3Rpb25JbmZvAAAACAAAABBpbkFtb3VudEFzc2V0QW10AAAAD2luUHJpY2VBc3NldEFtdAAAAAhvdXRMcEFtdAAAAAVwcmljZQAAAB1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlcgAAABVzbGlwcGFnZVRvbGVyYW5jZVJlYWwAAAAIdHhIZWlnaHQAAAALdHhUaW1lc3RhbXAJAAS5AAAAAgkABEwAAAACAgAAAA4lZCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAAEGluQW1vdW50QXNzZXRBbXQJAARMAAAAAgkAAaQAAAABBQAAAA9pblByaWNlQXNzZXRBbXQJAARMAAAAAgkAAaQAAAABBQAAAAhvdXRMcEFtdAkABEwAAAACCQABpAAAAAEFAAAABXByaWNlCQAETAAAAAIJAAGkAAAAAQUAAAAdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIJAARMAAAAAgkAAaQAAAABBQAAABVzbGlwcGFnZVRvbGVyYW5jZVJlYWwJAARMAAAAAgkAAaQAAAABBQAAAAh0eEhlaWdodAkABEwAAAACCQABpAAAAAEFAAAAC3R4VGltZXN0YW1wBQAAAANuaWwFAAAAA1NFUAEAAAARZGF0YUdldEFjdGlvbkluZm8AAAAGAAAAEW91dEFtb3VudEFzc2V0QW10AAAAEG91dFByaWNlQXNzZXRBbXQAAAAHaW5McEFtdAAAAAVwcmljZQAAAAh0eEhlaWdodAAAAAt0eFRpbWVzdGFtcAkABLkAAAACCQAETAAAAAICAAAADCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAAEW91dEFtb3VudEFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAQb3V0UHJpY2VBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAAB2luTHBBbXQJAARMAAAAAgkAAaQAAAABBQAAAAVwcmljZQkABEwAAAACCQABpAAAAAEFAAAACHR4SGVpZ2h0CQAETAAAAAIJAAGkAAAAAQUAAAALdHhUaW1lc3RhbXAFAAAAA25pbAUAAAADU0VQAQAAABRwcml2YXRlQ2FzdFRvU2NhbGVPZgAAAAMAAAAGYW1vdW50AAAAC3Jlc3VsdFNjYWxlAAAADGN1cnJlbnRTY2FsZQkAAGsAAAADBQAAAAZhbW91bnQFAAAAC3Jlc3VsdFNjYWxlBQAAAAxjdXJyZW50U2NhbGUBAAAADmNhbGN1bGF0ZVByaWNlAAAAAgAAABNwcmljZUFzc2V0TG9ja2VkQW10AAAAFWFtb3VudEFzc2V0bExvY2tlZEFtdAkAAGsAAAADBQAAABNwcmljZUFzc2V0TG9ja2VkQW10BQAAAAZzY2FsZTgFAAAAFWFtb3VudEFzc2V0bExvY2tlZEFtdAEAAAAVcHJpdmF0ZUNhbGN1bGF0ZVByaWNlAAAABAAAABJhbW91dEFzc2V0RGVjaW1hbHMAAAAScHJpY2VBc3NldERlY2ltYWxzAAAADmFtb3VudEFzc2V0QW10AAAADXByaWNlQXNzZXRBbXQEAAAAFGFtb3VudEFzc2V0QW10Q2FzdGVkCQEAAAAUcHJpdmF0ZUNhc3RUb1NjYWxlT2YAAAADBQAAAA5hbW91bnRBc3NldEFtdAUAAAAGc2NhbGU4BQAAABJhbW91dEFzc2V0RGVjaW1hbHMEAAAAE3ByaWNlQXNzZXRBbXRDYXN0ZWQJAQAAABRwcml2YXRlQ2FzdFRvU2NhbGVPZgAAAAMFAAAADXByaWNlQXNzZXRBbXQFAAAABnNjYWxlOAUAAAAScHJpY2VBc3NldERlY2ltYWxzCQEAAAAOY2FsY3VsYXRlUHJpY2UAAAACBQAAABNwcmljZUFzc2V0QW10Q2FzdGVkBQAAABRhbW91bnRBc3NldEFtdENhc3RlZAEAAAAYcHJpdmF0ZUdldEFjY291bnRCYWxhbmNlAAAAAQAAAAdhc3NldElkAwkAAAAAAAACBQAAAAdhc3NldElkAgAAAAVXQVZFUwgJAAPvAAAAAQUAAAAEdGhpcwAAAAlhdmFpbGFibGUJAAPwAAAAAgUAAAAEdGhpcwkAAlkAAAABBQAAAAdhc3NldElkAQAAAA9jYWxjdWxhdGVQcmljZXMAAAADAAAADmFtb3VudEFzc2V0QW10AAAADXByaWNlQXNzZXRBbXQAAAAIbHBBbW91bnQEAAAAEnBvb2xDb25maWdEYXRhTGlzdAkBAAAADWdldFBvb2xDb25maWcAAAAABAAAABJhbW91dEFzc2V0RGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAFmlkeEFtb3VudEFzc2V0RGVjaW1hbHMEAAAAEnByaWNlQXNzZXREZWNpbWFscwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAVaWR4UHJpY2VBc3NldERlY2ltYWxzBAAAAAlwb29sUHJpY2UJAQAAABVwcml2YXRlQ2FsY3VsYXRlUHJpY2UAAAAEBQAAABJhbW91dEFzc2V0RGVjaW1hbHMFAAAAEnByaWNlQXNzZXREZWNpbWFscwUAAAAOYW1vdW50QXNzZXRBbXQFAAAADXByaWNlQXNzZXRBbXQEAAAAGGFtb3VudEFzc2V0UG9vbExvY2tlZEFtdAkBAAAAFHByaXZhdGVDYXN0VG9TY2FsZU9mAAAAAwUAAAAOYW1vdW50QXNzZXRBbXQFAAAABnNjYWxlOAUAAAASYW1vdXRBc3NldERlY2ltYWxzBAAAABdwcmljZUFzc2V0UG9vbExvY2tlZEFtdAkBAAAAFHByaXZhdGVDYXN0VG9TY2FsZU9mAAAAAwUAAAANcHJpY2VBc3NldEFtdAUAAAAGc2NhbGU4BQAAABJwcmljZUFzc2V0RGVjaW1hbHMEAAAAFGxwUHJpY2VJbkFtb3VudEFzc2V0CQEAAAAOY2FsY3VsYXRlUHJpY2UAAAACBQAAABhhbW91bnRBc3NldFBvb2xMb2NrZWRBbXQFAAAACGxwQW1vdW50BAAAABNscFByaWNlSW5QcmljZUFzc2V0CQEAAAAOY2FsY3VsYXRlUHJpY2UAAAACBQAAABdwcmljZUFzc2V0UG9vbExvY2tlZEFtdAUAAAAIbHBBbW91bnQJAARMAAAAAgUAAAAJcG9vbFByaWNlCQAETAAAAAIFAAAAFGxwUHJpY2VJbkFtb3VudEFzc2V0CQAETAAAAAIFAAAAE2xwUHJpY2VJblByaWNlQXNzZXQFAAAAA25pbAEAAAAbcHJpdmF0ZUVzdGltYXRlR2V0T3BlcmF0aW9uAAAAAwAAABBwYXltZW50THBBc3NldElkAAAAD3BheW1lbnRMcEFtb3VudAAAAAt1c2VyQWRkcmVzcwQAAAAOcG9vbENvbmZpZ0xpc3QJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAJbHBBc3NldElkCQABkQAAAAIFAAAADnBvb2xDb25maWdMaXN0BQAAABBpZHhQb29sTFBBc3NldElkBAAAAA1hbW91bnRBc3NldElkCQABkQAAAAIFAAAADnBvb2xDb25maWdMaXN0BQAAABBpZHhBbW91bnRBc3NldElkBAAAAAxwcmljZUFzc2V0SWQJAAGRAAAAAgUAAAAOcG9vbENvbmZpZ0xpc3QFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkCQABkQAAAAIFAAAADnBvb2xDb25maWdMaXN0BQAAABhpZHhBbW91bnRBc3NldEludGVybmFsSWQEAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCQABkQAAAAIFAAAADnBvb2xDb25maWdMaXN0BQAAABdpZHhQcmljZUFzc2V0SW50ZXJuYWxJZAQAAAASYW1vdXRBc3NldERlY2ltYWxzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAOcG9vbENvbmZpZ0xpc3QFAAAAFmlkeEFtb3VudEFzc2V0RGVjaW1hbHMEAAAAEnByaWNlQXNzZXREZWNpbWFscwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADnBvb2xDb25maWdMaXN0BQAAABVpZHhQcmljZUFzc2V0RGVjaW1hbHMEAAAACnBvb2xTdGF0dXMJAAGRAAAAAgUAAAAOcG9vbENvbmZpZ0xpc3QFAAAADWlkeFBvb2xTdGF0dXMEAAAAEXVzZXJMaXF1aWRpdHlMaXN0CQEAAAAWZ2V0UG9vbExpcXVpZGl0eUJ5VXNlcgAAAAMFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQFAAAAC3VzZXJBZGRyZXNzBAAAAA11c2VyTFBCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAARdXNlckxpcXVpZGl0eUxpc3QFAAAAEWlkeFBvb2xMUEFzc2V0QW10BAAAABZ1c2VyQW1vdW50QXNzZXRCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAARdXNlckxpcXVpZGl0eUxpc3QFAAAAFWlkeFBvb2xBbW91bnRBc3NldEFtdAQAAAAVdXNlclByaWNlQXNzZXRCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAARdXNlckxpcXVpZGl0eUxpc3QFAAAAFGlkeFBvb2xQcmljZUFzc2V0QW10BAAAABFwb29sTGlxdWlkaXR5TGlzdAkBAAAAEGdldFBvb2xMaXF1aWRpdHkAAAACBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkBAAAAA1wb29sTFBCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAARcG9vbExpcXVpZGl0eUxpc3QFAAAAEWlkeFBvb2xMUEFzc2V0QW10BAAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAARcG9vbExpcXVpZGl0eUxpc3QFAAAAFWlkeFBvb2xBbW91bnRBc3NldEFtdAQAAAAVcG9vbFByaWNlQXNzZXRCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAARcG9vbExpcXVpZGl0eUxpc3QFAAAAFGlkeFBvb2xQcmljZUFzc2V0QW10AwkBAAAAAiE9AAAAAgUAAAAJbHBBc3NldElkBQAAABBwYXltZW50THBBc3NldElkCQAAAgAAAAECAAAAFUludmFsaWQgYXNzZXQgcGFzc2VkLgQAAAAZYWNjb3VudEFtb3VudEFzc2V0QmFsYW5jZQkBAAAAGHByaXZhdGVHZXRBY2NvdW50QmFsYW5jZQAAAAEFAAAADWFtb3VudEFzc2V0SWQEAAAAGGFjY291bnRQcmljZUFzc2V0QmFsYW5jZQkBAAAAGHByaXZhdGVHZXRBY2NvdW50QmFsYW5jZQAAAAEFAAAADHByaWNlQXNzZXRJZAQAAAAYYW1vdW50QXNzZXRQb29sTG9ja2VkQW10CQEAAAAUcHJpdmF0ZUNhc3RUb1NjYWxlT2YAAAADBQAAABlhY2NvdW50QW1vdW50QXNzZXRCYWxhbmNlBQAAAAZzY2FsZTgFAAAAEmFtb3V0QXNzZXREZWNpbWFscwQAAAAXcHJpY2VBc3NldFBvb2xMb2NrZWRBbXQJAQAAABRwcml2YXRlQ2FzdFRvU2NhbGVPZgAAAAMFAAAAGGFjY291bnRQcmljZUFzc2V0QmFsYW5jZQUAAAAGc2NhbGU4BQAAABJwcmljZUFzc2V0RGVjaW1hbHMEAAAAEW91dEFtb3VudEFzc2V0QW10CQAAawAAAAMFAAAAGGFtb3VudEFzc2V0UG9vbExvY2tlZEFtdAUAAAAPcGF5bWVudExwQW1vdW50BQAAAA1wb29sTFBCYWxhbmNlBAAAABBvdXRQcmljZUFzc2V0QW10CQAAawAAAAMFAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10BQAAAA9wYXltZW50THBBbW91bnQFAAAADXBvb2xMUEJhbGFuY2UEAAAAFm91dEFtb3VudEFzc2V0QW10RmluYWwJAQAAABRwcml2YXRlQ2FzdFRvU2NhbGVPZgAAAAMFAAAAEW91dEFtb3VudEFzc2V0QW10BQAAABJhbW91dEFzc2V0RGVjaW1hbHMFAAAABnNjYWxlOAQAAAAVb3V0UHJpY2VBc3NldEFtdEZpbmFsCQEAAAAUcHJpdmF0ZUNhc3RUb1NjYWxlT2YAAAADBQAAABBvdXRQcmljZUFzc2V0QW10BQAAABJwcmljZUFzc2V0RGVjaW1hbHMFAAAABnNjYWxlOAQAAAAMY3VycmVudFByaWNlCQEAAAAOY2FsY3VsYXRlUHJpY2UAAAACBQAAABdwcmljZUFzc2V0UG9vbExvY2tlZEFtdAUAAAAYYW1vdW50QXNzZXRQb29sTG9ja2VkQW10CQAFIAAAAA4FAAAAFm91dEFtb3VudEFzc2V0QW10RmluYWwFAAAAFW91dFByaWNlQXNzZXRBbXRGaW5hbAUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAUAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQUAAAANYW1vdW50QXNzZXRJZAUAAAAVdXNlclByaWNlQXNzZXRCYWxhbmNlBQAAAAxwcmljZUFzc2V0SWQFAAAADXVzZXJMUEJhbGFuY2UFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQUAAAANcG9vbExQQmFsYW5jZQUAAAAMY3VycmVudFByaWNlBQAAAApwb29sU3RhdHVzAQAAABtwcml2YXRlRXN0aW1hdGVQdXRPcGVyYXRpb24AAAAHAAAAEXNsaXBwYWdlVG9sZXJhbmNlAAAAEGluQW1vdW50QXNzZXRBbXQAAAAPaW5BbW91bnRBc3NldElkAAAAD2luUHJpY2VBc3NldEFtdAAAAA5pblByaWNlQXNzZXRJZAAAAAt1c2VyQWRkcmVzcwAAAAppc0V2YWx1YXRlBAAAABJwb29sQ29uZmlnRGF0YUxpc3QJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAJbHBBc3NldElkCQACWQAAAAEJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABBpZHhQb29sTFBBc3NldElkBAAAAA1hbW91bnRBc3NldElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAQaWR4QW1vdW50QXNzZXRJZAQAAAAMcHJpY2VBc3NldElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAPaWR4UHJpY2VBc3NldElkBAAAABVhbW91bnRBc3NldEludGVybmFsSWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABhpZHhBbW91bnRBc3NldEludGVybmFsSWQEAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAXaWR4UHJpY2VBc3NldEludGVybmFsSWQEAAAAEmFtb3V0QXNzZXREZWNpbWFscwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAWaWR4QW1vdW50QXNzZXREZWNpbWFscwQAAAAScHJpY2VBc3NldERlY2ltYWxzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABVpZHhQcmljZUFzc2V0RGVjaW1hbHMEAAAACnBvb2xTdGF0dXMJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAAA1pZHhQb29sU3RhdHVzBAAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QJAQAAABBnZXRQb29sTGlxdWlkaXR5AAAAAgUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAQAAAAWcG9vbEFtb3VudEFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFXBvb2xMaXF1aWRpdHlEYXRhTGlzdAUAAAAVaWR4UG9vbEFtb3VudEFzc2V0QW10BAAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QFAAAAFGlkeFBvb2xQcmljZUFzc2V0QW10BAAAAA1wb29sTFBCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0BQAAABFpZHhQb29sTFBBc3NldEFtdAQAAAAVdXNlckxpcXVpZGl0eURhdGFMaXN0CQEAAAAWZ2V0UG9vbExpcXVpZGl0eUJ5VXNlcgAAAAMFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQFAAAAC3VzZXJBZGRyZXNzBAAAABZ1c2VyQW1vdW50QXNzZXRCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAVdXNlckxpcXVpZGl0eURhdGFMaXN0BQAAABVpZHhQb29sQW1vdW50QXNzZXRBbXQEAAAAFXVzZXJQcmljZUFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFXVzZXJMaXF1aWRpdHlEYXRhTGlzdAUAAAAUaWR4UG9vbFByaWNlQXNzZXRBbXQEAAAADXVzZXJMUEJhbGFuY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABV1c2VyTGlxdWlkaXR5RGF0YUxpc3QFAAAAEWlkeFBvb2xMUEFzc2V0QW10AwMJAQAAAAIhPQAAAAIFAAAADWFtb3VudEFzc2V0SWQFAAAAD2luQW1vdW50QXNzZXRJZAYJAQAAAAIhPQAAAAIFAAAADHByaWNlQXNzZXRJZAUAAAAOaW5QcmljZUFzc2V0SWQJAAACAAAAAQIAAAAlSW52YWxpZCBhbW91bnQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQAAAAZYWNjb3VudEFtb3VudEFzc2V0QmFsYW5jZQMFAAAACmlzRXZhbHVhdGUJAQAAABhwcml2YXRlR2V0QWNjb3VudEJhbGFuY2UAAAABBQAAAA1hbW91bnRBc3NldElkCQAAZQAAAAIJAQAAABhwcml2YXRlR2V0QWNjb3VudEJhbGFuY2UAAAABBQAAAA1hbW91bnRBc3NldElkBQAAABBpbkFtb3VudEFzc2V0QW10BAAAABhhY2NvdW50UHJpY2VBc3NldEJhbGFuY2UDBQAAAAppc0V2YWx1YXRlCQEAAAAYcHJpdmF0ZUdldEFjY291bnRCYWxhbmNlAAAAAQUAAAAMcHJpY2VBc3NldElkCQAAZQAAAAIJAQAAABhwcml2YXRlR2V0QWNjb3VudEJhbGFuY2UAAAABBQAAAAxwcmljZUFzc2V0SWQFAAAAD2luUHJpY2VBc3NldEFtdAQAAAAaaW5BbW91bnRBc3NldEFtdENhbGN1bGF0ZWQJAQAAABRwcml2YXRlQ2FzdFRvU2NhbGVPZgAAAAMFAAAAEGluQW1vdW50QXNzZXRBbXQFAAAABnNjYWxlOAUAAAASYW1vdXRBc3NldERlY2ltYWxzBAAAABlpblByaWNlQXNzZXRBbXRDYWxjdWxhdGVkCQEAAAAUcHJpdmF0ZUNhc3RUb1NjYWxlT2YAAAADBQAAAA9pblByaWNlQXNzZXRBbXQFAAAABnNjYWxlOAUAAAAScHJpY2VBc3NldERlY2ltYWxzBAAAAAl1c2VyUHJpY2UJAQAAAA5jYWxjdWxhdGVQcmljZQAAAAIFAAAAGWluUHJpY2VBc3NldEFtdENhbGN1bGF0ZWQFAAAAGmluQW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkBAAAABhhbW91bnRBc3NldFBvb2xMb2NrZWRBbXQJAQAAABRwcml2YXRlQ2FzdFRvU2NhbGVPZgAAAAMFAAAAGWFjY291bnRBbW91bnRBc3NldEJhbGFuY2UFAAAABnNjYWxlOAUAAAASYW1vdXRBc3NldERlY2ltYWxzBAAAABdwcmljZUFzc2V0UG9vbExvY2tlZEFtdAkBAAAAFHByaXZhdGVDYXN0VG9TY2FsZU9mAAAAAwUAAAAYYWNjb3VudFByaWNlQXNzZXRCYWxhbmNlBQAAAAZzY2FsZTgFAAAAEnByaWNlQXNzZXREZWNpbWFscwQAAAALY3VyZW50UHJpY2UDCQAAAAAAAAIFAAAADXBvb2xMUEJhbGFuY2UAAAAAAAAAAAAAAAAAAAAAAAAJAQAAAA5jYWxjdWxhdGVQcmljZQAAAAIFAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10BQAAABhhbW91bnRBc3NldFBvb2xMb2NrZWRBbXQEAAAACHNsaXBwYWdlAwkAAAAAAAACBQAAAAtjdXJlbnRQcmljZQAAAAAAAAAAAAAAAAAAAAAAAAMJAABmAAAAAgUAAAALY3VyZW50UHJpY2UFAAAACXVzZXJQcmljZQkAAGsAAAADCQAAZQAAAAIFAAAAC2N1cmVudFByaWNlBQAAAAl1c2VyUHJpY2UAAAAAAAAAAGQFAAAAC2N1cmVudFByaWNlCQAAawAAAAMJAABlAAAAAgUAAAAJdXNlclByaWNlBQAAAAtjdXJlbnRQcmljZQAAAAAAAAAAZAUAAAALY3VyZW50UHJpY2UDAwkBAAAAAiE9AAAAAgUAAAALY3VyZW50UHJpY2UAAAAAAAAAAAAJAABmAAAAAgkAAGgAAAACBQAAAAhzbGlwcGFnZQUAAAAGc2NhbGU4BQAAABFzbGlwcGFnZVRvbGVyYW5jZQcJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPUHJpY2Ugc2xpcHBhZ2UgCQABpAAAAAEJAABoAAAAAgUAAAAIc2xpcHBhZ2UFAAAABnNjYWxlOAIAAAAeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQABpAAAAAEFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBAAAAApmaW5hbFByaWNlCQEAAAAOY2FsY3VsYXRlUHJpY2UAAAACCQAAZAAAAAIFAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10BQAAABlpblByaWNlQXNzZXRBbXRDYWxjdWxhdGVkCQAAZAAAAAIFAAAAGGFtb3VudEFzc2V0UG9vbExvY2tlZEFtdAUAAAAaaW5BbW91bnRBc3NldEFtdENhbGN1bGF0ZWQEAAAAC291dExwQW1vdW50AwkAAAAAAAACBQAAAA1wb29sTFBCYWxhbmNlAAAAAAAAAAAABAAAAAVwYXJ0QQkAAGwAAAAGBQAAABppbkFtb3VudEFzc2V0QW10Q2FsY3VsYXRlZAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAAUAAAAERE9XTgQAAAAFcGFydEIJAABsAAAABgUAAAAZaW5QcmljZUFzc2V0QW10Q2FsY3VsYXRlZAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAAUAAAAERE9XTgkAAGgAAAACBQAAAAVwYXJ0QQUAAAAFcGFydEIEAAAAEmxwQW10QnlBbW91bnRBc3NldAkAAGsAAAADBQAAAA1wb29sTFBCYWxhbmNlBQAAABppbkFtb3VudEFzc2V0QW10Q2FsY3VsYXRlZAUAAAAYYW1vdW50QXNzZXRQb29sTG9ja2VkQW10BAAAABFscEFtdEJ5UHJpY2VBc3NldAkAAGsAAAADBQAAAA1wb29sTFBCYWxhbmNlBQAAABlpblByaWNlQXNzZXRBbXRDYWxjdWxhdGVkBQAAABdwcmljZUFzc2V0UG9vbExvY2tlZEFtdAMGCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAOcG9vbExQQmFsYW5jZT0JAAGkAAAAAQUAAAANcG9vbExQQmFsYW5jZQIAAAAcIGluQW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkPQkAAaQAAAABBQAAABppbkFtb3VudEFzc2V0QW10Q2FsY3VsYXRlZAIAAAAbIGluUHJpY2VBc3NldEFtdENhbGN1bGF0ZWQ9CQABpAAAAAEFAAAAGWluUHJpY2VBc3NldEFtdENhbGN1bGF0ZWQCAAAAHCBhbW91bnRBc3NldFBvb2xMb2NrZWRBbXQgPSAJAAGkAAAAAQUAAAAYYW1vdW50QXNzZXRQb29sTG9ja2VkQW10AgAAABkgcHJpY2VBc3NldFBvb2xMb2NrZWRBbXQ9CQABpAAAAAEFAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10AgAAABUgbHBBbXRCeUFtb3VudEFzc2V0ID0JAAGkAAAAAQUAAAASbHBBbXRCeUFtb3VudEFzc2V0AgAAABMgbHBBbXRCeVByaWNlQXNzZXQ9CQABpAAAAAEFAAAAEWxwQW10QnlQcmljZUFzc2V0AwkAAGYAAAACBQAAABFscEFtdEJ5UHJpY2VBc3NldAUAAAASbHBBbXRCeUFtb3VudEFzc2V0BQAAABJscEFtdEJ5QW1vdW50QXNzZXQFAAAAEWxwQW10QnlQcmljZUFzc2V0CQAFHwAAAA0FAAAAC291dExwQW1vdW50BQAAAApmaW5hbFByaWNlBQAAABZ1c2VyQW1vdW50QXNzZXRCYWxhbmNlBQAAABV1c2VyUHJpY2VBc3NldEJhbGFuY2UFAAAADXVzZXJMUEJhbGFuY2UFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQUAAAANcG9vbExQQmFsYW5jZQUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAUAAAAJbHBBc3NldElkBQAAAAhzbGlwcGFnZQUAAAAKcG9vbFN0YXR1cwEAAAAbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkAAAAAQAAAAVvcmRlcgQAAAAScG9vbENvbmZpZ0RhdGFMaXN0CQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAADWFtb3VudEFzc2V0SWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABBpZHhBbW91bnRBc3NldElkBAAAAAxwcmljZUFzc2V0SWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAAA9pZHhQcmljZUFzc2V0SWQEAAAACnBvb2xTdGF0dXMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAADWlkeFBvb2xTdGF0dXMEAAAAE21hdGNoZXJQdWJsaWNLZXlTdHIJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABNpZHhNYXRjaGVyUHVibGljS2V5BAAAABNhbW91bnRBc3NldERlY2ltYWxzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABZpZHhBbW91bnRBc3NldERlY2ltYWxzBAAAABJwcmljZUFzc2V0RGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAFWlkeFByaWNlQXNzZXREZWNpbWFscwQAAAAZYWNjb3VudEFtb3VudEFzc2V0QmFsYW5jZQkBAAAAGHByaXZhdGVHZXRBY2NvdW50QmFsYW5jZQAAAAEFAAAADWFtb3VudEFzc2V0SWQEAAAAGGFjY291bnRQcmljZUFzc2V0QmFsYW5jZQkBAAAAGHByaXZhdGVHZXRBY2NvdW50QmFsYW5jZQAAAAEFAAAADHByaWNlQXNzZXRJZAQAAAAMY3VycmVudFByaWNlAwkAAAAAAAACCAUAAAAFb3JkZXIAAAAJb3JkZXJUeXBlBQAAAANCdXkJAQAAABVwcml2YXRlQ2FsY3VsYXRlUHJpY2UAAAAEBQAAABNhbW91bnRBc3NldERlY2ltYWxzBQAAABJwcmljZUFzc2V0RGVjaW1hbHMJAABkAAAAAgUAAAAZYWNjb3VudEFtb3VudEFzc2V0QmFsYW5jZQgFAAAABW9yZGVyAAAABmFtb3VudAUAAAAYYWNjb3VudFByaWNlQXNzZXRCYWxhbmNlCQEAAAAVcHJpdmF0ZUNhbGN1bGF0ZVByaWNlAAAABAUAAAATYW1vdW50QXNzZXREZWNpbWFscwUAAAAScHJpY2VBc3NldERlY2ltYWxzCQAAZAAAAAIFAAAAGWFjY291bnRBbW91bnRBc3NldEJhbGFuY2UIBQAAAAVvcmRlcgAAAAZhbW91bnQFAAAAGGFjY291bnRQcmljZUFzc2V0QmFsYW5jZQQAAAARaXNQb29sU3RhdHVzVmFsaWQDAwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAATUG9vbE1hdGNoZXJEaXNhYmxlZAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAAMUG9vbFNodXRkb3duBwYEAAAAEmlzVmFsaWRNYXRjaGVyU2lnbgYEAAAAEG9yZGVyQW1vdW50QXNzZXQICAUAAAAFb3JkZXIAAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BAAAABNvcmRlckFtb3VudEFzc2V0U3RyAwkAAAAAAAACBQAAABBvcmRlckFtb3VudEFzc2V0BQAAAAR1bml0AgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAABBvcmRlckFtb3VudEFzc2V0BAAAAA9vcmRlclByaWNlQXNzZXQICAUAAAAFb3JkZXIAAAAJYXNzZXRQYWlyAAAACnByaWNlQXNzZXQEAAAAEm9yZGVyUHJpY2VBc3NldFN0cgMJAAAAAAAAAgUAAAAPb3JkZXJQcmljZUFzc2V0BQAAAAR1bml0AgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAA9vcmRlclByaWNlQXNzZXQEAAAAEGlzVmFsaWRBc3NldFBhaXIDAwkBAAAAAiE9AAAAAgUAAAATb3JkZXJBbW91bnRBc3NldFN0cgUAAAANYW1vdW50QXNzZXRJZAYJAQAAAAIhPQAAAAIFAAAAEm9yZGVyUHJpY2VBc3NldFN0cgUAAAAMcHJpY2VBc3NldElkBwYEAAAACm9yZGVyUHJpY2UIBQAAAAVvcmRlcgAAAAVwcmljZQQAAAANcHJpY2VEZWNpbWFscwkAAGsAAAADBQAAAAZzY2FsZTgFAAAAEnByaWNlQXNzZXREZWNpbWFscwUAAAATYW1vdW50QXNzZXREZWNpbWFscwQAAAAQY2FzdGVkT3JkZXJQcmljZQkBAAAAFHByaXZhdGVDYXN0VG9TY2FsZU9mAAAAAwUAAAAKb3JkZXJQcmljZQUAAAAGc2NhbGU4BQAAAA1wcmljZURlY2ltYWxzBAAAABFpc09yZGVyUHJpY2VWYWxpZAMJAAAAAAAAAggFAAAABW9yZGVyAAAACW9yZGVyVHlwZQUAAAADQnV5CQAAZwAAAAIFAAAADGN1cnJlbnRQcmljZQUAAAAQY2FzdGVkT3JkZXJQcmljZQkAAGcAAAACBQAAABBjYXN0ZWRPcmRlclByaWNlBQAAAAxjdXJyZW50UHJpY2UDAwMFAAAAEGlzVmFsaWRBc3NldFBhaXIFAAAAEmlzVmFsaWRNYXRjaGVyU2lnbgcFAAAAEWlzUG9vbFN0YXR1c1ZhbGlkBwUAAAARaXNPcmRlclByaWNlVmFsaWQHAAAACAAAAAFpAQAAAANwdXQAAAACAAAAEXNsaXBwYWdlVG9sZXJhbmNlAAAAD3Nob3VsZEF1dG9TdGFrZQQAAAARZmFjdG9yeUNvbmZpZ0xpc3QJAQAAABBnZXRGYWN0b3J5Q29uZmlnAAAAAAQAAAAPc3Rha2luZ0NvbnRyYWN0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkAAZEAAAACBQAAABFmYWN0b3J5Q29uZmlnTGlzdAUAAAAZaWR4RmFjdG9yeVN0YWtpbmdDb250cmFjdAIAAAAhRXJyb3IuIEluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MuBAAAAA5wbXRBbW91bnRBc3NldAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAQaW5BbW91bnRBc3NldEFtdAgFAAAADnBtdEFtb3VudEFzc2V0AAAABmFtb3VudAQAAAAPaW5BbW91bnRBc3NldElkAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAADnBtdEFtb3VudEFzc2V0AAAAB2Fzc2V0SWQJAAJZAAAAAQIAAAAFV0FWRVMJAQAAAAV2YWx1ZQAAAAEIBQAAAA5wbXRBbW91bnRBc3NldAAAAAdhc3NldElkBAAAAA1wbXRQcmljZUFzc2V0CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABBAAAAA9pblByaWNlQXNzZXRBbXQIBQAAAA1wbXRQcmljZUFzc2V0AAAABmFtb3VudAQAAAAOaW5QcmljZUFzc2V0SWQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAANcG10UHJpY2VBc3NldAAAAAdhc3NldElkCQACWQAAAAECAAAABVdBVkVTCQEAAAAFdmFsdWUAAAABCAUAAAANcG10UHJpY2VBc3NldAAAAAdhc3NldElkBAAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzCQEAAAAbcHJpdmF0ZUVzdGltYXRlUHV0T3BlcmF0aW9uAAAABwUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAAEGluQW1vdW50QXNzZXRBbXQJAAJYAAAAAQUAAAAPaW5BbW91bnRBc3NldElkBQAAAA9pblByaWNlQXNzZXRBbXQJAAJYAAAAAQUAAAAOaW5QcmljZUFzc2V0SWQJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBwQAAAALb3V0THBBbW91bnQIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAAl8xBAAAAAtjdXJlbnRQcmljZQgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzIEAAAAFnVzZXJBbW91bnRBc3NldEJhbGFuY2UIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAAl8zBAAAABV1c2VyUHJpY2VBc3NldEJhbGFuY2UIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAAl80BAAAAA11c2VyTFBCYWxhbmNlCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAAJfNQQAAAAWcG9vbEFtb3VudEFzc2V0QmFsYW5jZQgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzYEAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzcEAAAADXBvb2xMUEJhbGFuY2UIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAAl84BAAAABVhbW91bnRBc3NldEludGVybmFsSWQIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAAl85BAAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAADXzEwBAAAAAlscEFzc2V0SWQIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAA18xMQQAAAASc2xpcHBhZ2VDYWxjdWxhdGVkCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAANfMTIEAAAACnBvb2xTdGF0dXMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAADXzEzAwMDCQEAAAAQaXNHbG9iYWxTaHV0ZG93bgAAAAAGCQAAAAAAAAIFAAAACnBvb2xTdGF0dXMFAAAAD1Bvb2xQdXREaXNhYmxlZAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAAMUG9vbFNodXRkb3duCQAAAgAAAAEJAAEsAAAAAgIAAAAsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAAGkAAAAAQUAAAAKcG9vbFN0YXR1cwQAAAAUZW1pdExQQXNzZXRPbkZhY3RvcnkJAAP8AAAABAUAAAAPZmFjdG9yeUNvbnRyYWN0AgAAAARlbWl0CQAETAAAAAIFAAAAC291dExwQW1vdW50BQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAUZW1pdExQQXNzZXRPbkZhY3RvcnkFAAAAFGVtaXRMUEFzc2V0T25GYWN0b3J5AwkBAAAAAiE9AAAAAgUAAAAUZW1pdExQQXNzZXRPbkZhY3RvcnkCAAAAB3N1Y2Nlc3MJAAACAAAAAQIAAAA0TFAgYXNzZXQgcmVpc3N1ZSBmYWlsZWQgZHVyaW5nIGVtaXQgY2FsbCBvbiBmYWN0b3J5LgQAAAAHcmVzdWx0cwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAMa2V5UHJpY2VMYXN0AAAAAAkAASwAAAACAgAAAAQlc19fCQABpAAAAAEFAAAAC2N1cmVudFByaWNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9rZXlQcmljZUhpc3RvcnkAAAACBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQABLAAAAAICAAAABCVzX18JAAGkAAAAAQUAAAALY3VyZW50UHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleVB1dEFjdGlvbkJ5VXNlcgAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAQAAABFkYXRhUHV0QWN0aW9uSW5mbwAAAAgFAAAAEGluQW1vdW50QXNzZXRBbXQFAAAAD2luUHJpY2VBc3NldEFtdAUAAAALb3V0THBBbW91bnQFAAAAC2N1cmVudFByaWNlBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAASc2xpcHBhZ2VDYWxjdWxhdGVkBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABZrZXlQb29sTGlxdWlkaXR5QnlVc2VyAAAAAwUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAQAAABFkYXRhUG9vbExpcXVpZGl0eQAAAAMJAABkAAAAAgUAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQUAAAAQaW5BbW91bnRBc3NldEFtdAkAAGQAAAACBQAAABV1c2VyUHJpY2VBc3NldEJhbGFuY2UFAAAAD2luUHJpY2VBc3NldEFtdAkAAGQAAAACBQAAAA11c2VyTFBCYWxhbmNlBQAAAAtvdXRMcEFtb3VudAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5UG9vbExpcXVpZGl0eQAAAAIFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQJAQAAABFkYXRhUG9vbExpcXVpZGl0eQAAAAMJAABkAAAAAgUAAAAWcG9vbEFtb3VudEFzc2V0QmFsYW5jZQUAAAAQaW5BbW91bnRBc3NldEFtdAkAAGQAAAACBQAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UFAAAAD2luUHJpY2VBc3NldEFtdAkAAGQAAAACBQAAAA1wb29sTFBCYWxhbmNlBQAAAAtvdXRMcEFtb3VudAUAAAADbmlsAwUAAAAPc2hvdWxkQXV0b1N0YWtlBAAAAAVzdGFrZQkAA/wAAAAEBQAAAA9zdGFraW5nQ29udHJhY3QCAAAABXN0YWtlBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACWxwQXNzZXRJZAUAAAALb3V0THBBbW91bnQFAAAAA25pbAMJAAAAAAAAAgUAAAAFc3Rha2UFAAAABXN0YWtlBQAAAAdyZXN1bHRzCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkABE0AAAACBQAAAAdyZXN1bHRzCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAC291dExwQW1vdW50BQAAAAlscEFzc2V0SWQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAA2dldAAAAAAEAAAADnBtdEFtb3VudEFzc2V0CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAApwbXRBc3NldElkCQEAAAAFdmFsdWUAAAABCAUAAAAOcG10QW1vdW50QXNzZXQAAAAHYXNzZXRJZAQAAAAOcG10QXNzZXRBbW91bnQIBQAAAA5wbXRBbW91bnRBc3NldAAAAAZhbW91bnQEAAAAB3Jlc3VsdHMJAQAAABtwcml2YXRlRXN0aW1hdGVHZXRPcGVyYXRpb24AAAADCQACWAAAAAEFAAAACnBtdEFzc2V0SWQFAAAADnBtdEFzc2V0QW1vdW50CQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAARb3V0QW1vdW50QXNzZXRBbXQIBQAAAAdyZXN1bHRzAAAAAl8xBAAAABBvdXRQcmljZUFzc2V0QW10CAUAAAAHcmVzdWx0cwAAAAJfMgQAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkCAUAAAAHcmVzdWx0cwAAAAJfMwQAAAAUcHJpY2VBc3NldEludGVybmFsSWQIBQAAAAdyZXN1bHRzAAAAAl80BAAAABZ1c2VyQW1vdW50QXNzZXRCYWxhbmNlCAUAAAAHcmVzdWx0cwAAAAJfNQQAAAANYW1vdW50QXNzZXRJZAgFAAAAB3Jlc3VsdHMAAAACXzYEAAAAFXVzZXJQcmljZUFzc2V0QmFsYW5jZQgFAAAAB3Jlc3VsdHMAAAACXzcEAAAADHByaWNlQXNzZXRJZAgFAAAAB3Jlc3VsdHMAAAACXzgEAAAADXVzZXJMUEJhbGFuY2UIBQAAAAdyZXN1bHRzAAAAAl85BAAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlCAUAAAAHcmVzdWx0cwAAAANfMTAEAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQgFAAAAB3Jlc3VsdHMAAAADXzExBAAAAA1wb29sTFBCYWxhbmNlCAUAAAAHcmVzdWx0cwAAAANfMTIEAAAADGN1cnJlbnRQcmljZQgFAAAAB3Jlc3VsdHMAAAADXzEzBAAAAApwb29sU3RhdHVzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEIBQAAAAdyZXN1bHRzAAAAA18xNAMDCQEAAAAQaXNHbG9iYWxTaHV0ZG93bgAAAAAGCQAAAAAAAAIFAAAACnBvb2xTdGF0dXMFAAAADFBvb2xTaHV0ZG93bgkAAAIAAAABCQABLAAAAAICAAAALEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQABpAAAAAEFAAAACnBvb2xTdGF0dXMEAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5CQAD/AAAAAQFAAAAD2ZhY3RvcnlDb250cmFjdAIAAAAEYnVybgkABEwAAAACBQAAAA5wbXRBc3NldEFtb3VudAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAApwbXRBc3NldElkBQAAAA5wbXRBc3NldEFtb3VudAUAAAADbmlsAwkAAAAAAAACBQAAABRidXJuTFBBc3NldE9uRmFjdG9yeQUAAAAUYnVybkxQQXNzZXRPbkZhY3RvcnkDCQEAAAACIT0AAAACBQAAABRidXJuTFBBc3NldE9uRmFjdG9yeQIAAAAHc3VjY2VzcwkAAAIAAAABAgAAADFMUCBhc3NldCBidXJuIGZhaWxlZCBkdXJpbmcgZW1pdCBjYWxsIG9uIGZhY3RvcnkuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAARb3V0QW1vdW50QXNzZXRBbXQDCQAAAAAAAAIFAAAADWFtb3VudEFzc2V0SWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAADWFtb3VudEFzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABBvdXRQcmljZUFzc2V0QW10CQACWQAAAAEFAAAADHByaWNlQXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAWa2V5UG9vbExpcXVpZGl0eUJ5VXNlcgAAAAMFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQEAAAARZGF0YVBvb2xMaXF1aWRpdHkAAAADCQAAZQAAAAIFAAAAFnVzZXJBbW91bnRBc3NldEJhbGFuY2UFAAAAEW91dEFtb3VudEFzc2V0QW10CQAAZQAAAAIFAAAAFXVzZXJQcmljZUFzc2V0QmFsYW5jZQUAAAAQb3V0UHJpY2VBc3NldEFtdAkAAGUAAAACBQAAAA11c2VyTFBCYWxhbmNlBQAAAA5wbXRBc3NldEFtb3VudAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5UG9vbExpcXVpZGl0eQAAAAIFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQJAQAAABFkYXRhUG9vbExpcXVpZGl0eQAAAAMJAABlAAAAAgUAAAAWcG9vbEFtb3VudEFzc2V0QmFsYW5jZQUAAAARb3V0QW1vdW50QXNzZXRBbXQJAABlAAAAAgUAAAAVcG9vbFByaWNlQXNzZXRCYWxhbmNlBQAAABBvdXRQcmljZUFzc2V0QW10CQAAZQAAAAIFAAAADXBvb2xMUEJhbGFuY2UFAAAADnBtdEFzc2V0QW1vdW50CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlHZXRBY3Rpb25CeVVzZXIAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQEAAAARZGF0YUdldEFjdGlvbkluZm8AAAAGBQAAABFvdXRBbW91bnRBc3NldEFtdAUAAAAQb3V0UHJpY2VBc3NldEFtdAUAAAAOcG10QXNzZXRBbW91bnQFAAAADGN1cnJlbnRQcmljZQUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAMa2V5UHJpY2VMYXN0AAAAAAkAASwAAAACAgAAAAQlc19fCQABpAAAAAEFAAAADGN1cnJlbnRQcmljZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPa2V5UHJpY2VIaXN0b3J5AAAAAgUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkAASwAAAACAgAAAAQlc19fCQABpAAAAAEFAAAADGN1cnJlbnRQcmljZQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAhhY3RpdmF0ZQAAAAIAAAAOYW1vdW50QXNzZXRTdHIAAAANcHJpY2VBc3NldFN0cgMJAQAAAAIhPQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAEJQAAAAEFAAAAD2ZhY3RvcnlDb250cmFjdAkAAAIAAAABAgAAABJwZXJtaXNzaW9ucyBkZW5pZWQJAAUUAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAOa2V5QW1vdW50QXNzZXQAAAAABQAAAA5hbW91bnRBc3NldFN0cgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAANa2V5UHJpY2VBc3NldAAAAAAFAAAADXByaWNlQXNzZXRTdHIFAAAAA25pbAIAAAAHc3VjY2VzcwAAAAFpAQAAAA1zdGF0c1JFQURPTkxZAAAAAAQAAAAScG9vbENvbmZpZ0RhdGFMaXN0CQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAQaWR4UG9vbExQQXNzZXRJZAQAAAANYW1vdW50QXNzZXRJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAEGlkeEFtb3VudEFzc2V0SWQEAAAADHByaWNlQXNzZXRJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAYaWR4QW1vdW50QXNzZXRJbnRlcm5hbElkBAAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAF2lkeFByaWNlQXNzZXRJbnRlcm5hbElkBAAAABJhbW91dEFzc2V0RGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAFmlkeEFtb3VudEFzc2V0RGVjaW1hbHMEAAAAEnByaWNlQXNzZXREZWNpbWFscwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAVaWR4UHJpY2VBc3NldERlY2ltYWxzBAAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QJAQAAABBnZXRQb29sTGlxdWlkaXR5AAAAAgUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAQAAAANcG9vbExQQmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFXBvb2xMaXF1aWRpdHlEYXRhTGlzdAUAAAARaWR4UG9vbExQQXNzZXRBbXQEAAAAGWFjY291bnRBbW91bnRBc3NldEJhbGFuY2UJAQAAABhwcml2YXRlR2V0QWNjb3VudEJhbGFuY2UAAAABBQAAAA1hbW91bnRBc3NldElkBAAAABhhY2NvdW50UHJpY2VBc3NldEJhbGFuY2UJAQAAABhwcml2YXRlR2V0QWNjb3VudEJhbGFuY2UAAAABBQAAAAxwcmljZUFzc2V0SWQEAAAACnByaWNlc0xpc3QJAQAAAA9jYWxjdWxhdGVQcmljZXMAAAADBQAAABlhY2NvdW50QW1vdW50QXNzZXRCYWxhbmNlBQAAABhhY2NvdW50UHJpY2VBc3NldEJhbGFuY2UFAAAADXBvb2xMUEJhbGFuY2UEAAAADGN1cnJlbnRQcmljZQkAAZEAAAACBQAAAApwcmljZXNMaXN0AAAAAAAAAAAABAAAABRscFByaWNlSW5BbW91bnRBc3NldAkAAZEAAAACBQAAAApwcmljZXNMaXN0AAAAAAAAAAABBAAAABNscFByaWNlSW5QcmljZUFzc2V0CQABkQAAAAIFAAAACnByaWNlc0xpc3QAAAAAAAAAAAIEAAAACnBvb2xXZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAA1rZXlQb29sV2VpZ2h0AAAAAQkABCUAAAABBQAAAAR0aGlzAgAAABlQb29sIGRvZXNuJ3QgaGF2ZSB3ZWlnaHQuCQAFFAAAAAIFAAAAA25pbAkABLkAAAACCQAETAAAAAICAAAADiVkJWQlZCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAZYWNjb3VudEFtb3VudEFzc2V0QmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAAGGFjY291bnRQcmljZUFzc2V0QmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAADXBvb2xMUEJhbGFuY2UJAARMAAAAAgkAAaQAAAABBQAAAAxjdXJyZW50UHJpY2UJAARMAAAAAgkAAaQAAAABBQAAABRscFByaWNlSW5BbW91bnRBc3NldAkABEwAAAACCQABpAAAAAEFAAAAE2xwUHJpY2VJblByaWNlQXNzZXQJAARMAAAAAgkAAaQAAAABBQAAAApwb29sV2VpZ2h0BQAAAANuaWwFAAAAA1NFUAAAAAFpAQAAACBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQAAAAMAAAARc2xpcHBhZ2VUb2xlcmFuY2UAAAAQaW5BbW91bnRBc3NldEFtdAAAAAt1c2VyQWRkcmVzcwQAAAAScG9vbENvbmZpZ0RhdGFMaXN0CQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAQaWR4UG9vbExQQXNzZXRJZAQAAAANYW1vdW50QXNzZXRJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAEGlkeEFtb3VudEFzc2V0SWQEAAAADHByaWNlQXNzZXRJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAYaWR4QW1vdW50QXNzZXRJbnRlcm5hbElkBAAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAF2lkeFByaWNlQXNzZXRJbnRlcm5hbElkBAAAABJhbW91dEFzc2V0RGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAFmlkeEFtb3VudEFzc2V0RGVjaW1hbHMEAAAAEnByaWNlQXNzZXREZWNpbWFscwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAVaWR4UHJpY2VBc3NldERlY2ltYWxzBAAAAApwb29sU3RhdHVzCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAANaWR4UG9vbFN0YXR1cwQAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0CQEAAAAQZ2V0UG9vbExpcXVpZGl0eQAAAAIFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQEAAAADXBvb2xMUEJhbGFuY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QFAAAAEWlkeFBvb2xMUEFzc2V0QW10BAAAABlhY2NvdW50QW1vdW50QXNzZXRCYWxhbmNlCQEAAAAYcHJpdmF0ZUdldEFjY291bnRCYWxhbmNlAAAAAQUAAAANYW1vdW50QXNzZXRJZAQAAAAYYWNjb3VudFByaWNlQXNzZXRCYWxhbmNlCQEAAAAYcHJpdmF0ZUdldEFjY291bnRCYWxhbmNlAAAAAQUAAAAMcHJpY2VBc3NldElkBAAAAB9hY2NvdW50QW1vdW50QXNzZXRCYWxhbmNlQ2FzdGVkCQEAAAAUcHJpdmF0ZUNhc3RUb1NjYWxlT2YAAAADBQAAABlhY2NvdW50QW1vdW50QXNzZXRCYWxhbmNlBQAAAAZzY2FsZTgFAAAAEmFtb3V0QXNzZXREZWNpbWFscwQAAAAeYWNjb3VudFByaWNlQXNzZXRCYWxhbmNlQ2FzdGVkCQEAAAAUcHJpdmF0ZUNhc3RUb1NjYWxlT2YAAAADBQAAABhhY2NvdW50UHJpY2VBc3NldEJhbGFuY2UFAAAABnNjYWxlOAUAAAAScHJpY2VBc3NldERlY2ltYWxzBAAAAAtjdXJlbnRQcmljZQMJAAAAAAAAAgUAAAANcG9vbExQQmFsYW5jZQAAAAAAAAAAAAAAAAAAAAAAAAkBAAAADmNhbGN1bGF0ZVByaWNlAAAAAgUAAAAeYWNjb3VudFByaWNlQXNzZXRCYWxhbmNlQ2FzdGVkBQAAAB9hY2NvdW50QW1vdW50QXNzZXRCYWxhbmNlQ2FzdGVkBAAAABlpblByaWNlQXNzZXRBbXRDYWxjdWxhdGVkCQAAawAAAAMFAAAAEGluQW1vdW50QXNzZXRBbXQFAAAAC2N1cmVudFByaWNlBQAAAAZzY2FsZTgEAAAAD2luUHJpY2VBc3NldEFtdAkBAAAAFHByaXZhdGVDYXN0VG9TY2FsZU9mAAAAAwUAAAAZaW5QcmljZUFzc2V0QW10Q2FsY3VsYXRlZAUAAAAScHJpY2VBc3NldERlY2ltYWxzBQAAAAZzY2FsZTgEAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMJAQAAABtwcml2YXRlRXN0aW1hdGVQdXRPcGVyYXRpb24AAAAHBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAQaW5BbW91bnRBc3NldEFtdAUAAAANYW1vdW50QXNzZXRJZAUAAAAPaW5QcmljZUFzc2V0QW10BQAAAAxwcmljZUFzc2V0SWQFAAAAC3VzZXJBZGRyZXNzBgQAAAAPb3V0THBBbW91bnRDYWxjCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAAJfMQQAAAAPY3VyZW50UHJpY2VDYWxjCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAAJfMgQAAAAacG9vbEFtb3VudEFzc2V0QmFsYW5jZUNhbGMIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAAl82BAAAABlwb29sUHJpY2VBc3NldEJhbGFuY2VDQWxjCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAAJfNwQAAAARcG9vbExQQmFsYW5jZUNhbGMIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAAl84BAAAAA5wb29sU3RhdHVzQ2FsYwkBAAAADXBhcnNlSW50VmFsdWUAAAABCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAANfMTMJAAUUAAAAAgUAAAADbmlsCQAEuQAAAAIJAARMAAAAAgIAAAAMJWQlZCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAPb3V0THBBbW91bnRDYWxjCQAETAAAAAIJAAGkAAAAAQUAAAALY3VyZW50UHJpY2UJAARMAAAAAgkAAaQAAAABBQAAABpwb29sQW1vdW50QXNzZXRCYWxhbmNlQ2FsYwkABEwAAAACCQABpAAAAAEFAAAAGXBvb2xQcmljZUFzc2V0QmFsYW5jZUNBbGMJAARMAAAAAgkAAaQAAAABBQAAABFwb29sTFBCYWxhbmNlQ2FsYwkABEwAAAACCQABpAAAAAEFAAAADnBvb2xTdGF0dXNDYWxjBQAAAANuaWwFAAAAA1NFUAAAAAFpAQAAAB9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAAAAAwAAABFzbGlwcGFnZVRvbGVyYW5jZQAAAA9pblByaWNlQXNzZXRBbXQAAAALdXNlckFkZHJlc3MEAAAAEnBvb2xDb25maWdEYXRhTGlzdAkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAADWFtb3VudEFzc2V0SWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABBpZHhBbW91bnRBc3NldElkBAAAAAxwcmljZUFzc2V0SWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAAA9pZHhQcmljZUFzc2V0SWQEAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAGGlkeEFtb3VudEFzc2V0SW50ZXJuYWxJZAQAAAAUcHJpY2VBc3NldEludGVybmFsSWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABdpZHhQcmljZUFzc2V0SW50ZXJuYWxJZAQAAAASYW1vdXRBc3NldERlY2ltYWxzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABZpZHhBbW91bnRBc3NldERlY2ltYWxzBAAAABJwcmljZUFzc2V0RGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAFWlkeFByaWNlQXNzZXREZWNpbWFscwQAAAAKcG9vbFN0YXR1cwkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAADWlkeFBvb2xTdGF0dXMEAAAAFXBvb2xMaXF1aWRpdHlEYXRhTGlzdAkBAAAAEGdldFBvb2xMaXF1aWRpdHkAAAACBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkBAAAAA1wb29sTFBCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0BQAAABFpZHhQb29sTFBBc3NldEFtdAQAAAAZYWNjb3VudEFtb3VudEFzc2V0QmFsYW5jZQkBAAAAGHByaXZhdGVHZXRBY2NvdW50QmFsYW5jZQAAAAEFAAAADWFtb3VudEFzc2V0SWQEAAAAGGFjY291bnRQcmljZUFzc2V0QmFsYW5jZQkBAAAAGHByaXZhdGVHZXRBY2NvdW50QmFsYW5jZQAAAAEFAAAADHByaWNlQXNzZXRJZAQAAAAfYWNjb3VudEFtb3VudEFzc2V0QmFsYW5jZUNhc3RlZAkBAAAAFHByaXZhdGVDYXN0VG9TY2FsZU9mAAAAAwUAAAAZYWNjb3VudEFtb3VudEFzc2V0QmFsYW5jZQUAAAAGc2NhbGU4BQAAABJhbW91dEFzc2V0RGVjaW1hbHMEAAAAHmFjY291bnRQcmljZUFzc2V0QmFsYW5jZUNhc3RlZAkBAAAAFHByaXZhdGVDYXN0VG9TY2FsZU9mAAAAAwUAAAAYYWNjb3VudFByaWNlQXNzZXRCYWxhbmNlBQAAAAZzY2FsZTgFAAAAEnByaWNlQXNzZXREZWNpbWFscwQAAAAeaW5QcmljZUFzc2V0QW10Q2FsY3VsYXRlZFR1cGxlCQEAAAAUcHJpdmF0ZUNhc3RUb1NjYWxlT2YAAAADBQAAAA9pblByaWNlQXNzZXRBbXQFAAAABnNjYWxlOAUAAAAScHJpY2VBc3NldERlY2ltYWxzBAAAAAtjdXJlbnRQcmljZQMJAAAAAAAAAgUAAAANcG9vbExQQmFsYW5jZQAAAAAAAAAAAAAAAAAAAAAAAAkBAAAADmNhbGN1bGF0ZVByaWNlAAAAAgUAAAAeYWNjb3VudFByaWNlQXNzZXRCYWxhbmNlQ2FzdGVkBQAAAB9hY2NvdW50QW1vdW50QXNzZXRCYWxhbmNlQ2FzdGVkBAAAABppbkFtb3VudEFzc2V0QW10Q2FsY3VsYXRlZAkAAGsAAAADBQAAAB5pblByaWNlQXNzZXRBbXRDYWxjdWxhdGVkVHVwbGUFAAAABnNjYWxlOAUAAAALY3VyZW50UHJpY2UEAAAAEGluQW1vdW50QXNzZXRBbXQJAQAAABRwcml2YXRlQ2FzdFRvU2NhbGVPZgAAAAMFAAAAGmluQW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkBQAAABJhbW91dEFzc2V0RGVjaW1hbHMFAAAABnNjYWxlOAQAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwkBAAAAG3ByaXZhdGVFc3RpbWF0ZVB1dE9wZXJhdGlvbgAAAAcFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAABBpbkFtb3VudEFzc2V0QW10BQAAAA1hbW91bnRBc3NldElkBQAAAA9pblByaWNlQXNzZXRBbXQFAAAADHByaWNlQXNzZXRJZAUAAAALdXNlckFkZHJlc3MGBAAAAA9vdXRMcEFtb3VudENhbGMIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAAl8xBAAAAA9jdXJlbnRQcmljZUNhbGMIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAAl8yBAAAABpwb29sQW1vdW50QXNzZXRCYWxhbmNlQ2FsYwgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzYEAAAAGXBvb2xQcmljZUFzc2V0QmFsYW5jZUNBbGMIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAAl83BAAAABFwb29sTFBCYWxhbmNlQ2FsYwgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzgEAAAADnBvb2xTdGF0dXNDYWxjCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAA18xMwkABRQAAAACBQAAAANuaWwJAAS5AAAAAgkABEwAAAACAgAAAAwlZCVkJWQlZCVkJWQJAARMAAAAAgkAAaQAAAABBQAAAA9vdXRMcEFtb3VudENhbGMJAARMAAAAAgkAAaQAAAABBQAAAAtjdXJlbnRQcmljZQkABEwAAAACCQABpAAAAAEFAAAAGnBvb2xBbW91bnRBc3NldEJhbGFuY2VDYWxjCQAETAAAAAIJAAGkAAAAAQUAAAAZcG9vbFByaWNlQXNzZXRCYWxhbmNlQ0FsYwkABEwAAAACCQABpAAAAAEFAAAAEXBvb2xMUEJhbGFuY2VDYWxjCQAETAAAAAIJAAGkAAAAAQUAAAAOcG9vbFN0YXR1c0NhbGMFAAAAA25pbAUAAAADU0VQAAAAAWkBAAAAE2V2YWx1YXRlR2V0UkVBRE9OTFkAAAADAAAAEHBheW1lbnRMcEFzc2V0SWQAAAAPcGF5bWVudExwQW1vdW50AAAAC3VzZXJBZGRyZXNzBAAAAAdyZXN1bHRzCQEAAAAbcHJpdmF0ZUVzdGltYXRlR2V0T3BlcmF0aW9uAAAAAwUAAAAQcGF5bWVudExwQXNzZXRJZAUAAAAPcGF5bWVudExwQW1vdW50BQAAAAt1c2VyQWRkcmVzcwQAAAARb3V0QW1vdW50QXNzZXRBbXQIBQAAAAdyZXN1bHRzAAAAAl8xBAAAABBvdXRQcmljZUFzc2V0QW10CAUAAAAHcmVzdWx0cwAAAAJfMgQAAAAWcG9vbEFtb3VudEFzc2V0QmFsYW5jZQgFAAAAB3Jlc3VsdHMAAAADXzEwBAAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UIBQAAAAdyZXN1bHRzAAAAA18xMQQAAAANcG9vbExQQmFsYW5jZQgFAAAAB3Jlc3VsdHMAAAADXzEyBAAAAAxjdXJyZW50UHJpY2UIBQAAAAdyZXN1bHRzAAAAA18xMwQAAAAKcG9vbFN0YXR1cwkBAAAADXBhcnNlSW50VmFsdWUAAAABCAUAAAAHcmVzdWx0cwAAAANfMTQJAAUUAAAAAgUAAAADbmlsCQAEuQAAAAIJAARMAAAAAgIAAAAOJWQlZCVkJWQlZCVkJWQJAARMAAAAAgkAAaQAAAABBQAAABFvdXRBbW91bnRBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAAEG91dFByaWNlQXNzZXRBbXQJAARMAAAAAgkAAaQAAAABBQAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAVcG9vbFByaWNlQXNzZXRCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAANcG9vbExQQmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAADGN1cnJlbnRQcmljZQkABEwAAAACCQABpAAAAAEFAAAACnBvb2xTdGF0dXMFAAAAA25pbAUAAAADU0VQAAAAAWkBAAAADGhhc2hSRUFET05MWQAAAAAJAAUUAAAAAgUAAAADbmlsCQACWgAAAAEJAQAAAAV2YWx1ZQAAAAEJAAPxAAAAAQUAAAAEdGhpcwAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVPcmRlcgQAAAAFb3JkZXIFAAAAByRtYXRjaDAGCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleXJZzoU=", "height": 1701168, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: J29e25sQGrcvTscAjBx5suj1ekwfJPA5YfbowMP1FvFN Next: 2uEqncQKAFqMaJaTTFap8A2uTeBTRBZAGfGGGUzUzfkN Diff:
OldNewDifferences
139139 func aC (aD,aE,aF) = fraction(aD, aE, aF)
140140
141141
142-func aG (aH,aI) = {
143- let aJ = fraction(toBigInt(aH), d, toBigInt(aI))
144- toInt(fraction(aJ, toBigInt(c), d))
142+func aG (aH,aI) = fraction(aH, c, aI)
143+
144+
145+func aJ (aK,aL,aM,aN) = {
146+ let aO = aC(aM, c, aK)
147+ let aP = aC(aN, c, aL)
148+ aG(aP, aO)
145149 }
146150
147151
148-func aK (aH,aI) = fraction(aH, c, aI)
152+func aQ (aR) = if ((aR == "WAVES"))
153+ then wavesBalance(this).available
154+ else assetBalance(this, fromBase58String(aR))
149155
150156
151-func aL (aM,aN,aO,aP) = {
152- let aQ = aC(aO, c, aM)
153- let aR = aC(aP, c, aN)
154- aK(aR, aQ)
157+func aS (aM,aN,aT) = {
158+ let aU = Z()
159+ let aK = parseIntValue(aU[o])
160+ let aL = parseIntValue(aU[p])
161+ let aV = aJ(aK, aL, aM, aN)
162+ let aW = aC(aM, c, aK)
163+ let aX = aC(aN, c, aL)
164+ let aY = aG(aW, aT)
165+ let aZ = aG(aX, aT)
166+[aV, aY, aZ]
155167 }
156168
157169
158-func aS (aT) = if ((aT == "WAVES"))
159- then wavesBalance(this).available
160- else assetBalance(this, fromBase58String(aT))
161-
162-
163-func aU (aO,aP,aV) = {
164- let aW = Z()
165- let aM = parseIntValue(aW[o])
166- let aN = parseIntValue(aW[p])
167- let aX = aL(aM, aN, aO, aP)
168- let aY = aC(aO, c, aM)
169- let aZ = aC(aP, c, aN)
170- let ba = aK(aY, aV)
171- let bb = aK(aZ, aV)
172-[aX, ba, bb]
173- }
174-
175-
176-func bc (bd,be,H) = {
177- let bf = Z()
178- let bg = bf[l]
179- let bh = bf[m]
180- let bi = bf[n]
181- let ag = bf[q]
182- let ah = bf[r]
183- let aM = parseIntValue(bf[o])
184- let aN = parseIntValue(bf[p])
185- let bj = bf[k]
186- let bk = aj(ag, ah, H)
187- let bl = parseIntValue(bk[w])
188- let bm = parseIntValue(bk[u])
189- let bn = parseIntValue(bk[v])
190- let bo = af(ag, ah)
191- let bp = parseIntValue(bo[w])
192- let bq = parseIntValue(bo[u])
193- let br = parseIntValue(bo[v])
194- if ((bg != bd))
170+func ba (bb,bc,H) = {
171+ let bd = Z()
172+ let be = bd[l]
173+ let bf = bd[m]
174+ let bg = bd[n]
175+ let ag = bd[q]
176+ let ah = bd[r]
177+ let aK = parseIntValue(bd[o])
178+ let aL = parseIntValue(bd[p])
179+ let bh = bd[k]
180+ let bi = aj(ag, ah, H)
181+ let bj = parseIntValue(bi[w])
182+ let bk = parseIntValue(bi[u])
183+ let bl = parseIntValue(bi[v])
184+ let bm = af(ag, ah)
185+ let bn = parseIntValue(bm[w])
186+ let bo = parseIntValue(bm[u])
187+ let bp = parseIntValue(bm[v])
188+ if ((be != bb))
195189 then throw("Invalid asset passed.")
196190 else {
197- let bs = aS(bh)
198- let bt = aS(bi)
199- let aY = aC(bs, c, aM)
200- let aZ = aC(bt, c, aN)
201- let az = fraction(aY, be, bp)
202- let aA = fraction(aZ, be, bp)
203- let bu = aC(az, aM, c)
204- let bv = aC(aA, aN, c)
205- let bw = aK(aZ, aY)
206- $Tuple14(bu, bv, ag, ah, bm, bh, bn, bi, bl, bq, br, bp, bw, bj)
191+ let bq = aQ(bf)
192+ let br = aQ(bg)
193+ let aW = aC(bq, c, aK)
194+ let aX = aC(br, c, aL)
195+ let az = fraction(aW, bc, bn)
196+ let aA = fraction(aX, bc, bn)
197+ let bs = aC(az, aK, c)
198+ let bt = aC(aA, aL, c)
199+ let bu = aG(aX, aW)
200+ $Tuple14(bs, bt, ag, ah, bk, bf, bl, bg, bj, bo, bp, bn, bu, bh)
207201 }
208202 }
209203
210204
211-func bx (by,aq,bz,ar,bA,H) = {
212- let aW = Z()
213- let bg = fromBase58String(aW[l])
214- let bh = aW[m]
215- let bi = aW[n]
216- let ag = aW[q]
217- let ah = aW[r]
218- let aM = parseIntValue(aW[o])
219- let aN = parseIntValue(aW[p])
220- let bj = aW[k]
221- let bB = af(ag, ah)
222- let bq = parseIntValue(bB[u])
223- let br = parseIntValue(bB[v])
224- let bp = parseIntValue(bB[w])
225- let bC = aj(ag, ah, H)
226- let bm = parseIntValue(bC[u])
227- let bn = parseIntValue(bC[v])
228- let bl = parseIntValue(bC[w])
229- if (if ((bh != bz))
205+func bv (bw,aq,bx,ar,by,H,bz) = {
206+ let aU = Z()
207+ let be = fromBase58String(aU[l])
208+ let bf = aU[m]
209+ let bg = aU[n]
210+ let ag = aU[q]
211+ let ah = aU[r]
212+ let aK = parseIntValue(aU[o])
213+ let aL = parseIntValue(aU[p])
214+ let bh = aU[k]
215+ let bA = af(ag, ah)
216+ let bo = parseIntValue(bA[u])
217+ let bp = parseIntValue(bA[v])
218+ let bn = parseIntValue(bA[w])
219+ let bB = aj(ag, ah, H)
220+ let bk = parseIntValue(bB[u])
221+ let bl = parseIntValue(bB[v])
222+ let bj = parseIntValue(bB[w])
223+ if (if ((bf != bx))
230224 then true
231- else (bi != bA))
225+ else (bg != by))
232226 then throw("Invalid amount or price asset passed.")
233227 else {
234- let bs = aS(bh)
235- let bt = aS(bi)
236- let bD = aC(aq, c, aM)
237- let bE = aC(ar, c, aN)
238- let bF = aK(bE, bD)
239- let aY = aC(bs, c, aM)
240- let aZ = aC(bt, c, aN)
241- let bG = if ((bp == 0))
228+ let bq = if (bz)
229+ then aQ(bf)
230+ else (aQ(bf) - aq)
231+ let br = if (bz)
232+ then aQ(bg)
233+ else (aQ(bg) - ar)
234+ let bC = aC(aq, c, aK)
235+ let bD = aC(ar, c, aL)
236+ let bE = aG(bD, bC)
237+ let aW = aC(bq, c, aK)
238+ let aX = aC(br, c, aL)
239+ let bF = if ((bn == 0))
242240 then 0
243- else aK(aZ, aY)
244- let bH = if ((bG == 0))
241+ else aG(aX, aW)
242+ let bG = if ((bF == 0))
245243 then 0
246- else if ((bG > bF))
247- then fraction((bG - bF), 100, bG)
248- else fraction((bF - bG), 100, bG)
249- if (if ((bG != 0))
250- then ((bH * c) > by)
244+ else if ((bF > bE))
245+ then fraction((bF - bE), 100, bF)
246+ else fraction((bE - bF), 100, bF)
247+ if (if ((bF != 0))
248+ then ((bG * c) > bw)
251249 else false)
252- then throw(((("Price slippage " + toString((bH * c))) + " exceeded the passed limit of ") + toString(by)))
250+ then throw(((("Price slippage " + toString((bG * c))) + " exceeded the passed limit of ") + toString(bw)))
253251 else {
254- let bI = aK((aZ + bE), (aY + bD))
255- let bJ = if ((bp == 0))
252+ let bH = aG((aX + bD), (aW + bC))
253+ let bI = if ((bn == 0))
256254 then {
255+ let bJ = pow(bC, 0, 5, 1, 0, DOWN)
257256 let bK = pow(bD, 0, 5, 1, 0, DOWN)
258- let bL = pow(bE, 0, 5, 1, 0, DOWN)
259- (bK * bL)
257+ (bJ * bK)
260258 }
261259 else {
262- let bM = fraction(bp, bD, aY)
263- let bN = fraction(bp, bE, aZ)
264- if ((bN > bM))
265- then bM
266- else bN
260+ let bL = fraction(bn, bC, aW)
261+ let bM = fraction(bn, bD, aX)
262+ if (true)
263+ then throw(((((((((((((("poolLPBalance=" + toString(bn)) + " inAmountAssetAmtCalculated=") + toString(bC)) + " inPriceAssetAmtCalculated=") + toString(bD)) + " amountAssetPoolLockedAmt = ") + toString(aW)) + " priceAssetPoolLockedAmt=") + toString(aX)) + " lpAmtByAmountAsset =") + toString(bL)) + " lpAmtByPriceAsset=") + toString(bM)))
264+ else if ((bM > bL))
265+ then bL
266+ else bM
267267 }
268- $Tuple13(bJ, bI, bm, bn, bl, bq, br, bp, ag, ah, bg, bH, bj)
268+ $Tuple13(bI, bH, bk, bl, bj, bo, bp, bn, ag, ah, be, bG, bh)
269269 }
270270 }
271271 }
272272
273273
274-func bO (bP) = {
275- let aW = Z()
276- let bh = aW[m]
277- let bi = aW[n]
278- let bj = parseIntValue(aW[k])
279- let bQ = aW[t]
280- let bR = parseIntValue(aW[o])
281- let aN = parseIntValue(aW[p])
282- let bs = aS(bh)
283- let bt = aS(bi)
284- let bw = if ((bP.orderType == Buy))
285- then aL(bR, aN, (bs + bP.amount), bt)
286- else aL(bR, aN, (bs + bP.amount), bt)
287- let bS = if (if (if (Y())
274+func bN (bO) = {
275+ let aU = Z()
276+ let bf = aU[m]
277+ let bg = aU[n]
278+ let bh = parseIntValue(aU[k])
279+ let bP = aU[t]
280+ let bQ = parseIntValue(aU[o])
281+ let aL = parseIntValue(aU[p])
282+ let bq = aQ(bf)
283+ let br = aQ(bg)
284+ let bu = if ((bO.orderType == Buy))
285+ then aJ(bQ, aL, (bq + bO.amount), br)
286+ else aJ(bQ, aL, (bq + bO.amount), br)
287+ let bR = if (if (if (Y())
288288 then true
289- else (bj == h))
289+ else (bh == h))
290290 then true
291- else (bj == i))
291+ else (bh == i))
292292 then false
293293 else true
294- let bT = true
295- let bU = bP.assetPair.amountAsset
296- let bV = if ((bU == unit))
294+ let bS = true
295+ let bT = bO.assetPair.amountAsset
296+ let bU = if ((bT == unit))
297297 then "WAVES"
298- else toBase58String(value(bU))
299- let bW = bP.assetPair.priceAsset
300- let bX = if ((bW == unit))
298+ else toBase58String(value(bT))
299+ let bV = bO.assetPair.priceAsset
300+ let bW = if ((bV == unit))
301301 then "WAVES"
302- else toBase58String(value(bW))
303- let bY = if (if ((bV != bh))
302+ else toBase58String(value(bV))
303+ let bX = if (if ((bU != bf))
304304 then true
305- else (bX != bi))
305+ else (bW != bg))
306306 then false
307307 else true
308- let bZ = bP.price
309- let ca = fraction(c, aN, bR)
310- let cb = aC(bZ, c, ca)
311- let cc = if ((bP.orderType == Buy))
312- then (bw >= cb)
313- else (cb >= bw)
314-[if (if (if (bY)
315- then bT
316- else false)
308+ let bY = bO.price
309+ let bZ = fraction(c, aL, bQ)
310+ let ca = aC(bY, c, bZ)
311+ let cb = if ((bO.orderType == Buy))
312+ then (bu >= ca)
313+ else (ca >= bu)
314+ if (if (if (bX)
317315 then bS
318316 else false)
319- then cc
320- else false]
317+ then bR
318+ else false)
319+ then cb
320+ else false
321321 }
322322
323323
324-@Callable(cd)
325-func put (by,ce) = {
326- let cf = ae()
327- let cg = valueOrErrorMessage(addressFromString(cf[x]), "Error. Incorrect staking address.")
328- let ch = value(cd.payments[0])
329- let aq = ch.amount
330- let bz = if (!(isDefined(ch.assetId)))
324+@Callable(cc)
325+func put (bw,cd) = {
326+ let ce = ae()
327+ let cf = valueOrErrorMessage(addressFromString(ce[x]), "Error. Incorrect staking address.")
328+ let cg = value(cc.payments[0])
329+ let aq = cg.amount
330+ let bx = if (!(isDefined(cg.assetId)))
331+ then fromBase58String("WAVES")
332+ else value(cg.assetId)
333+ let ch = value(cc.payments[1])
334+ let ar = ch.amount
335+ let by = if (!(isDefined(ch.assetId)))
331336 then fromBase58String("WAVES")
332337 else value(ch.assetId)
333- let ci = value(cd.payments[1])
334- let ar = ci.amount
335- let bA = if (!(isDefined(ci.assetId)))
336- then fromBase58String("WAVES")
337- else value(ci.assetId)
338- let cj = bx(by, aq, toBase58String(bz), ar, toBase58String(bA), toString(cd.caller))
339- let bJ = cj._1
340- let bG = cj._2
341- let bm = cj._3
342- let bn = cj._4
343- let bl = cj._5
344- let bq = cj._6
345- let br = cj._7
346- let bp = cj._8
347- let ag = cj._9
348- let ah = cj._10
349- let bg = cj._11
350- let ck = cj._12
351- let bj = parseIntValue(cj._13)
338+ let ci = bv(bw, aq, toBase58String(bx), ar, toBase58String(by), toString(cc.caller), false)
339+ let bI = ci._1
340+ let bF = ci._2
341+ let bk = ci._3
342+ let bl = ci._4
343+ let bj = ci._5
344+ let bo = ci._6
345+ let bp = ci._7
346+ let bn = ci._8
347+ let ag = ci._9
348+ let ah = ci._10
349+ let be = ci._11
350+ let cj = ci._12
351+ let bh = parseIntValue(ci._13)
352352 if (if (if (Y())
353353 then true
354- else (bj == g))
354+ else (bh == g))
355355 then true
356- else (bj == i))
357- then throw(("Put operation is blocked by admin. Status = " + toString(bj)))
356+ else (bh == i))
357+ then throw(("Put operation is blocked by admin. Status = " + toString(bh)))
358358 else {
359- let cl = invoke(a, "emit", [bJ], nil)
360- if ((cl == cl))
361- then if ((cl != "success"))
359+ let ck = invoke(a, "emit", [bI], nil)
360+ if ((ck == ck))
361+ then if ((ck != "success"))
362362 then throw("LP asset reissue failed during emit call on factory.")
363363 else {
364- let cm = [StringEntry(z(), ("%s__" + toString(bG))), StringEntry(A(height, lastBlock.timestamp), ("%s__" + toString(bG))), StringEntry(I(toString(cd.caller), toBase58String(cd.transactionId)), ap(aq, ar, bJ, bG, by, ck, height, lastBlock.timestamp)), StringEntry(G(ag, ah, toString(cd.caller)), ak((bm + aq), (bn + ar), (bl + bJ))), StringEntry(D(ag, ah), ak((bq + aq), (br + ar), (bp + bJ)))]
365- if (ce)
364+ let cl = [StringEntry(z(), ("%s__" + toString(bF))), StringEntry(A(height, lastBlock.timestamp), ("%s__" + toString(bF))), StringEntry(I(toString(cc.caller), toBase58String(cc.transactionId)), ap(aq, ar, bI, bF, bw, cj, height, lastBlock.timestamp)), StringEntry(G(ag, ah, toString(cc.caller)), ak((bk + aq), (bl + ar), (bj + bI))), StringEntry(D(ag, ah), ak((bo + aq), (bp + ar), (bn + bI)))]
365+ if (cd)
366366 then {
367- let cn = invoke(cg, "stake", nil, [AttachedPayment(bg, bJ)])
368- if ((cn == cn))
369- then cm
367+ let cm = invoke(cf, "stake", nil, [AttachedPayment(be, bI)])
368+ if ((cm == cm))
369+ then cl
370370 else throw("Strict value is not equal to itself.")
371371 }
372- else (cm :+ ScriptTransfer(cd.caller, bJ, bg))
372+ else (cl :+ ScriptTransfer(cc.caller, bI, be))
373373 }
374374 else throw("Strict value is not equal to itself.")
375375 }
377377
378378
379379
380-@Callable(cd)
380+@Callable(cc)
381381 func get () = {
382- let ch = value(cd.payments[0])
383- let co = value(ch.assetId)
384- let cp = ch.amount
385- let cm = bc(toBase58String(co), cp, toString(cd.caller))
386- let az = cm._1
387- let aA = cm._2
388- let ag = cm._3
389- let ah = cm._4
390- let bm = cm._5
391- let bh = cm._6
392- let bn = cm._7
393- let bi = cm._8
394- let bl = cm._9
395- let bq = cm._10
396- let br = cm._11
397- let bp = cm._12
398- let bw = cm._13
399- let bj = parseIntValue(cm._14)
382+ let cg = value(cc.payments[0])
383+ let cn = value(cg.assetId)
384+ let co = cg.amount
385+ let cl = ba(toBase58String(cn), co, toString(cc.caller))
386+ let az = cl._1
387+ let aA = cl._2
388+ let ag = cl._3
389+ let ah = cl._4
390+ let bk = cl._5
391+ let bf = cl._6
392+ let bl = cl._7
393+ let bg = cl._8
394+ let bj = cl._9
395+ let bo = cl._10
396+ let bp = cl._11
397+ let bn = cl._12
398+ let bu = cl._13
399+ let bh = parseIntValue(cl._14)
400400 if (if (Y())
401401 then true
402- else (bj == i))
403- then throw(("Get operation is blocked by admin. Status = " + toString(bj)))
402+ else (bh == i))
403+ then throw(("Get operation is blocked by admin. Status = " + toString(bh)))
404404 else {
405- let cq = invoke(a, "burn", [cp], [AttachedPayment(co, cp)])
406- if ((cq == cq))
407- then if ((cq != "success"))
405+ let cp = invoke(a, "burn", [co], [AttachedPayment(cn, co)])
406+ if ((cp == cp))
407+ then if ((cp != "success"))
408408 then throw("LP asset burn failed during emit call on factory.")
409- else [ScriptTransfer(cd.caller, az, if ((bh == "WAVES"))
409+ else [ScriptTransfer(cc.caller, az, if ((bf == "WAVES"))
410410 then unit
411- else fromBase58String(bh)), ScriptTransfer(cd.caller, aA, fromBase58String(bi)), StringEntry(G(ag, ah, toString(cd.caller)), ak((bm - az), (bn - aA), (bl - cp))), StringEntry(D(ag, ah), ak((bq - az), (br - aA), (bp - cp))), StringEntry(K(toString(cd.caller), toBase58String(cd.transactionId)), ay(az, aA, cp, bw, height, lastBlock.timestamp)), StringEntry(z(), ("%s__" + toString(bw))), StringEntry(A(height, lastBlock.timestamp), ("%s__" + toString(bw)))]
411+ else fromBase58String(bf)), ScriptTransfer(cc.caller, aA, fromBase58String(bg)), StringEntry(G(ag, ah, toString(cc.caller)), ak((bk - az), (bl - aA), (bj - co))), StringEntry(D(ag, ah), ak((bo - az), (bp - aA), (bn - co))), StringEntry(K(toString(cc.caller), toBase58String(cc.transactionId)), ay(az, aA, co, bu, height, lastBlock.timestamp)), StringEntry(z(), ("%s__" + toString(bu))), StringEntry(A(height, lastBlock.timestamp), ("%s__" + toString(bu)))]
412412 else throw("Strict value is not equal to itself.")
413413 }
414414 }
415415
416416
417417
418-@Callable(cd)
419-func activate (cr,cs) = if ((toString(cd.caller) != toString(a)))
418+@Callable(cc)
419+func activate (cq,cr) = if ((toString(cc.caller) != toString(a)))
420420 then throw("permissions denied")
421- else $Tuple2([StringEntry(L(), cr), StringEntry(M(), cs)], "success")
421+ else $Tuple2([StringEntry(L(), cq), StringEntry(M(), cr)], "success")
422422
423423
424424
425-@Callable(cd)
425+@Callable(cc)
426426 func statsREADONLY () = {
427- let aW = Z()
428- let bg = fromBase58String(aW[l])
429- let bh = aW[m]
430- let bi = aW[n]
431- let ag = aW[q]
432- let ah = aW[r]
433- let aM = parseIntValue(aW[o])
434- let aN = parseIntValue(aW[p])
435- let bB = af(ag, ah)
436- let bp = parseIntValue(bB[w])
437- let bs = aS(bh)
438- let bt = aS(bi)
439- let ct = aU(bs, bt, bp)
440- let bw = ct[0]
441- let ba = ct[1]
442- let bb = ct[2]
443- let cu = valueOrErrorMessage(getInteger(a, W(toString(this))), "Pool doesn't have weight.")
444- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bs), toString(bt), toString(bp), toString(bw), toString(ba), toString(bb), toString(cu)], e))
427+ let aU = Z()
428+ let be = fromBase58String(aU[l])
429+ let bf = aU[m]
430+ let bg = aU[n]
431+ let ag = aU[q]
432+ let ah = aU[r]
433+ let aK = parseIntValue(aU[o])
434+ let aL = parseIntValue(aU[p])
435+ let bA = af(ag, ah)
436+ let bn = parseIntValue(bA[w])
437+ let bq = aQ(bf)
438+ let br = aQ(bg)
439+ let cs = aS(bq, br, bn)
440+ let bu = cs[0]
441+ let aY = cs[1]
442+ let aZ = cs[2]
443+ let ct = valueOrErrorMessage(getInteger(a, W(toString(this))), "Pool doesn't have weight.")
444+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bn), toString(bu), toString(aY), toString(aZ), toString(ct)], e))
445445 }
446446
447447
448448
449-@Callable(cd)
450-func evaluatePutByAmountAssetREADONLY (by,aq,H) = {
451- let aW = Z()
452- let bg = fromBase58String(aW[l])
453- let bh = aW[m]
454- let bi = aW[n]
455- let ag = aW[q]
456- let ah = aW[r]
457- let aM = parseIntValue(aW[o])
458- let aN = parseIntValue(aW[p])
459- let bj = aW[k]
460- let bB = af(ag, ah)
461- let bp = parseIntValue(bB[w])
462- let bs = aS(bh)
463- let bt = aS(bi)
464- let cv = aC(bs, c, aM)
465- let cw = aC(bt, c, aN)
466- let bG = if ((bp == 0))
449+@Callable(cc)
450+func evaluatePutByAmountAssetREADONLY (bw,aq,H) = {
451+ let aU = Z()
452+ let be = fromBase58String(aU[l])
453+ let bf = aU[m]
454+ let bg = aU[n]
455+ let ag = aU[q]
456+ let ah = aU[r]
457+ let aK = parseIntValue(aU[o])
458+ let aL = parseIntValue(aU[p])
459+ let bh = aU[k]
460+ let bA = af(ag, ah)
461+ let bn = parseIntValue(bA[w])
462+ let bq = aQ(bf)
463+ let br = aQ(bg)
464+ let cu = aC(bq, c, aK)
465+ let cv = aC(br, c, aL)
466+ let bF = if ((bn == 0))
467467 then 0
468- else aK(cw, cv)
469- let bE = fraction(aq, bG, c)
470- let ar = aC(bE, aN, c)
471- let cj = bx(by, aq, bh, ar, bi, H)
472- let cx = cj._1
473- let cy = cj._2
474- let cz = cj._6
475- let cA = cj._7
476- let cB = cj._8
477- let cC = parseIntValue(cj._13)
478- $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(cx), toString(bG), toString(cz), toString(cA), toString(cB), toString(cC)], e))
468+ else aG(cv, cu)
469+ let bD = fraction(aq, bF, c)
470+ let ar = aC(bD, aL, c)
471+ let ci = bv(bw, aq, bf, ar, bg, H, true)
472+ let cw = ci._1
473+ let cx = ci._2
474+ let cy = ci._6
475+ let cz = ci._7
476+ let cA = ci._8
477+ let cB = parseIntValue(ci._13)
478+ $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(cw), toString(bF), toString(cy), toString(cz), toString(cA), toString(cB)], e))
479479 }
480480
481481
482482
483-@Callable(cd)
484-func evaluatePutByPriceAssetREADONLY (by,ar,H) = {
485- let aW = Z()
486- let bg = fromBase58String(aW[l])
487- let bh = aW[m]
488- let bi = aW[n]
489- let ag = aW[q]
490- let ah = aW[r]
491- let aM = parseIntValue(aW[o])
492- let aN = parseIntValue(aW[p])
493- let bj = aW[k]
494- let bB = af(ag, ah)
495- let bp = parseIntValue(bB[w])
496- let bs = aS(bh)
497- let bt = aS(bi)
498- let cv = aC(bs, c, aM)
499- let cw = aC(bt, c, aN)
500- let cD = aC(ar, c, aN)
501- let bG = if ((bp == 0))
483+@Callable(cc)
484+func evaluatePutByPriceAssetREADONLY (bw,ar,H) = {
485+ let aU = Z()
486+ let be = fromBase58String(aU[l])
487+ let bf = aU[m]
488+ let bg = aU[n]
489+ let ag = aU[q]
490+ let ah = aU[r]
491+ let aK = parseIntValue(aU[o])
492+ let aL = parseIntValue(aU[p])
493+ let bh = aU[k]
494+ let bA = af(ag, ah)
495+ let bn = parseIntValue(bA[w])
496+ let bq = aQ(bf)
497+ let br = aQ(bg)
498+ let cu = aC(bq, c, aK)
499+ let cv = aC(br, c, aL)
500+ let cC = aC(ar, c, aL)
501+ let bF = if ((bn == 0))
502502 then 0
503- else aK(cw, cv)
504- let bD = fraction(cD, c, bG)
505- let aq = aC(bD, aM, c)
506- let cj = bx(by, aq, bh, ar, bi, H)
507- let cx = cj._1
508- let cy = cj._2
509- let cz = cj._6
510- let cA = cj._7
511- let cB = cj._8
512- let cC = parseIntValue(cj._13)
513- $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(cx), toString(bG), toString(cz), toString(cA), toString(cB), toString(cC)], e))
503+ else aG(cv, cu)
504+ let bC = fraction(cC, c, bF)
505+ let aq = aC(bC, aK, c)
506+ let ci = bv(bw, aq, bf, ar, bg, H, true)
507+ let cw = ci._1
508+ let cx = ci._2
509+ let cy = ci._6
510+ let cz = ci._7
511+ let cA = ci._8
512+ let cB = parseIntValue(ci._13)
513+ $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(cw), toString(bF), toString(cy), toString(cz), toString(cA), toString(cB)], e))
514514 }
515515
516516
517517
518-@Callable(cd)
519-func evaluateGetREADONLY (bd,be,H) = {
520- let cm = bc(bd, be, H)
521- let az = cm._1
522- let aA = cm._2
523- let bq = cm._10
524- let br = cm._11
525- let bp = cm._12
526- let bw = cm._13
527- let bj = parseIntValue(cm._14)
528- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(az), toString(aA), toString(bq), toString(br), toString(bp), toString(bw), toString(bj)], e))
518+@Callable(cc)
519+func evaluateGetREADONLY (bb,bc,H) = {
520+ let cl = ba(bb, bc, H)
521+ let az = cl._1
522+ let aA = cl._2
523+ let bo = cl._10
524+ let bp = cl._11
525+ let bn = cl._12
526+ let bu = cl._13
527+ let bh = parseIntValue(cl._14)
528+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(az), toString(aA), toString(bo), toString(bp), toString(bn), toString(bu), toString(bh)], e))
529529 }
530530
531531
532532
533-@Callable(cd)
533+@Callable(cc)
534534 func hashREADONLY () = $Tuple2(nil, toBase64String(value(scriptHash(this))))
535535
536536
537-@Verifier(cE)
538-func cF () = {
539- let cG = cE
540- if ($isInstanceOf(cG, "Order"))
537+@Verifier(cD)
538+func cE () = {
539+ let cF = cD
540+ if ($isInstanceOf(cF, "Order"))
541541 then {
542- let bP = cG
542+ let bO = cF
543543 true
544544 }
545- else sigVerify(cE.bodyBytes, cE.proofs[0], cE.senderPublicKey)
545+ else sigVerify(cD.bodyBytes, cD.proofs[0], cD.senderPublicKey)
546546 }
547547
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = Address(base58'3MxueHaGvWmdk5crtn9HwtkSAAZScTWoHaC')
55
66 let b = 8
77
88 let c = 100000000
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = "__"
1313
1414 let f = 1
1515
1616 let g = 2
1717
1818 let h = 3
1919
2020 let i = 4
2121
2222 let j = 1
2323
2424 let k = 2
2525
2626 let l = 3
2727
2828 let m = 4
2929
3030 let n = 5
3131
3232 let o = 6
3333
3434 let p = 7
3535
3636 let q = 8
3737
3838 let r = 9
3939
4040 let s = 10
4141
4242 let t = 11
4343
4444 let u = 1
4545
4646 let v = 2
4747
4848 let w = 3
4949
5050 let x = 1
5151
5252 let y = 2
5353
5454 func z () = "%s%s__price__last"
5555
5656
5757 func A (B,C) = makeString(["%s%s%d%d__price__history", toString(B), toString(C)], e)
5858
5959
6060 func D (E,F) = (((("%d%d%s__" + E) + "__") + F) + "__locked")
6161
6262
6363 func G (E,F,H) = (((((("%d%d%s%s__" + E) + "__") + F) + "__") + H) + "__locked")
6464
6565
6666 func I (H,J) = ((("%s%s%s__P__" + H) + "__") + J)
6767
6868
6969 func K (H,J) = ((("%s%s%s__G__" + H) + "__") + J)
7070
7171
7272 func L () = "%s__amountAsset"
7373
7474
7575 func M () = "%s__priceAsset"
7676
7777
7878 func N () = "%s__factoryConfig"
7979
8080
8181 func O (P) = (("%s%s%s__" + P) + "__mappings__poolContract2LpAsset")
8282
8383
8484 func Q (R,S) = (((("%d%d%s__" + R) + "__") + S) + "__config")
8585
8686
8787 func T (U) = ("%s%s%s__mappings__baseAsset2internalId__" + U)
8888
8989
9090 func V () = "%s__shutdown"
9191
9292
9393 func W (X) = ("%s%s__poolWeight__" + X)
9494
9595
9696 func Y () = valueOrElse(getBoolean(a, V()), false)
9797
9898
9999 func Z () = {
100100 let aa = valueOrErrorMessage(getString(this, L()), "No config for amount asset found")
101101 let ab = valueOrErrorMessage(getString(this, M()), "No config for price asset found")
102102 let ac = valueOrErrorMessage(getInteger(a, T(ab)), "No config for internal price asset found")
103103 let ad = valueOrErrorMessage(getInteger(a, T(aa)), "No config for internal amount asset found")
104104 split(valueOrErrorMessage(getString(a, Q(toString(ad), toString(ac))), "No factory config found for pool assets."), e)
105105 }
106106
107107
108108 func ae () = split(valueOrErrorMessage(getString(a, N()), "No factory config found."), e)
109109
110110
111111 func af (ag,ah) = {
112112 let ai = getString(this, D(ag, ah))
113113 if (isDefined(ai))
114114 then split(value(ai), e)
115115 else ["", "0", "0", "0"]
116116 }
117117
118118
119119 func aj (ag,ah,H) = {
120120 let ai = getString(this, G(ag, ah, H))
121121 if (isDefined(ai))
122122 then split(value(ai), e)
123123 else ["", "0", "0", "0", "0"]
124124 }
125125
126126
127127 func ak (al,am,an) = makeString(["%d%d%d", toString(al), toString(am), toString(an)], e)
128128
129129
130130 func ao (al,am,an,H) = makeString(["%d%d%d", toString(al), toString(am), toString(an)], e)
131131
132132
133133 func ap (aq,ar,as,at,au,av,aw,ax) = makeString(["%d%d%d%d%d%d%d", toString(aq), toString(ar), toString(as), toString(at), toString(au), toString(av), toString(aw), toString(ax)], e)
134134
135135
136136 func ay (az,aA,aB,at,aw,ax) = makeString(["%d%d%d%d%d%d", toString(az), toString(aA), toString(aB), toString(at), toString(aw), toString(ax)], e)
137137
138138
139139 func aC (aD,aE,aF) = fraction(aD, aE, aF)
140140
141141
142-func aG (aH,aI) = {
143- let aJ = fraction(toBigInt(aH), d, toBigInt(aI))
144- toInt(fraction(aJ, toBigInt(c), d))
142+func aG (aH,aI) = fraction(aH, c, aI)
143+
144+
145+func aJ (aK,aL,aM,aN) = {
146+ let aO = aC(aM, c, aK)
147+ let aP = aC(aN, c, aL)
148+ aG(aP, aO)
145149 }
146150
147151
148-func aK (aH,aI) = fraction(aH, c, aI)
152+func aQ (aR) = if ((aR == "WAVES"))
153+ then wavesBalance(this).available
154+ else assetBalance(this, fromBase58String(aR))
149155
150156
151-func aL (aM,aN,aO,aP) = {
152- let aQ = aC(aO, c, aM)
153- let aR = aC(aP, c, aN)
154- aK(aR, aQ)
157+func aS (aM,aN,aT) = {
158+ let aU = Z()
159+ let aK = parseIntValue(aU[o])
160+ let aL = parseIntValue(aU[p])
161+ let aV = aJ(aK, aL, aM, aN)
162+ let aW = aC(aM, c, aK)
163+ let aX = aC(aN, c, aL)
164+ let aY = aG(aW, aT)
165+ let aZ = aG(aX, aT)
166+[aV, aY, aZ]
155167 }
156168
157169
158-func aS (aT) = if ((aT == "WAVES"))
159- then wavesBalance(this).available
160- else assetBalance(this, fromBase58String(aT))
161-
162-
163-func aU (aO,aP,aV) = {
164- let aW = Z()
165- let aM = parseIntValue(aW[o])
166- let aN = parseIntValue(aW[p])
167- let aX = aL(aM, aN, aO, aP)
168- let aY = aC(aO, c, aM)
169- let aZ = aC(aP, c, aN)
170- let ba = aK(aY, aV)
171- let bb = aK(aZ, aV)
172-[aX, ba, bb]
173- }
174-
175-
176-func bc (bd,be,H) = {
177- let bf = Z()
178- let bg = bf[l]
179- let bh = bf[m]
180- let bi = bf[n]
181- let ag = bf[q]
182- let ah = bf[r]
183- let aM = parseIntValue(bf[o])
184- let aN = parseIntValue(bf[p])
185- let bj = bf[k]
186- let bk = aj(ag, ah, H)
187- let bl = parseIntValue(bk[w])
188- let bm = parseIntValue(bk[u])
189- let bn = parseIntValue(bk[v])
190- let bo = af(ag, ah)
191- let bp = parseIntValue(bo[w])
192- let bq = parseIntValue(bo[u])
193- let br = parseIntValue(bo[v])
194- if ((bg != bd))
170+func ba (bb,bc,H) = {
171+ let bd = Z()
172+ let be = bd[l]
173+ let bf = bd[m]
174+ let bg = bd[n]
175+ let ag = bd[q]
176+ let ah = bd[r]
177+ let aK = parseIntValue(bd[o])
178+ let aL = parseIntValue(bd[p])
179+ let bh = bd[k]
180+ let bi = aj(ag, ah, H)
181+ let bj = parseIntValue(bi[w])
182+ let bk = parseIntValue(bi[u])
183+ let bl = parseIntValue(bi[v])
184+ let bm = af(ag, ah)
185+ let bn = parseIntValue(bm[w])
186+ let bo = parseIntValue(bm[u])
187+ let bp = parseIntValue(bm[v])
188+ if ((be != bb))
195189 then throw("Invalid asset passed.")
196190 else {
197- let bs = aS(bh)
198- let bt = aS(bi)
199- let aY = aC(bs, c, aM)
200- let aZ = aC(bt, c, aN)
201- let az = fraction(aY, be, bp)
202- let aA = fraction(aZ, be, bp)
203- let bu = aC(az, aM, c)
204- let bv = aC(aA, aN, c)
205- let bw = aK(aZ, aY)
206- $Tuple14(bu, bv, ag, ah, bm, bh, bn, bi, bl, bq, br, bp, bw, bj)
191+ let bq = aQ(bf)
192+ let br = aQ(bg)
193+ let aW = aC(bq, c, aK)
194+ let aX = aC(br, c, aL)
195+ let az = fraction(aW, bc, bn)
196+ let aA = fraction(aX, bc, bn)
197+ let bs = aC(az, aK, c)
198+ let bt = aC(aA, aL, c)
199+ let bu = aG(aX, aW)
200+ $Tuple14(bs, bt, ag, ah, bk, bf, bl, bg, bj, bo, bp, bn, bu, bh)
207201 }
208202 }
209203
210204
211-func bx (by,aq,bz,ar,bA,H) = {
212- let aW = Z()
213- let bg = fromBase58String(aW[l])
214- let bh = aW[m]
215- let bi = aW[n]
216- let ag = aW[q]
217- let ah = aW[r]
218- let aM = parseIntValue(aW[o])
219- let aN = parseIntValue(aW[p])
220- let bj = aW[k]
221- let bB = af(ag, ah)
222- let bq = parseIntValue(bB[u])
223- let br = parseIntValue(bB[v])
224- let bp = parseIntValue(bB[w])
225- let bC = aj(ag, ah, H)
226- let bm = parseIntValue(bC[u])
227- let bn = parseIntValue(bC[v])
228- let bl = parseIntValue(bC[w])
229- if (if ((bh != bz))
205+func bv (bw,aq,bx,ar,by,H,bz) = {
206+ let aU = Z()
207+ let be = fromBase58String(aU[l])
208+ let bf = aU[m]
209+ let bg = aU[n]
210+ let ag = aU[q]
211+ let ah = aU[r]
212+ let aK = parseIntValue(aU[o])
213+ let aL = parseIntValue(aU[p])
214+ let bh = aU[k]
215+ let bA = af(ag, ah)
216+ let bo = parseIntValue(bA[u])
217+ let bp = parseIntValue(bA[v])
218+ let bn = parseIntValue(bA[w])
219+ let bB = aj(ag, ah, H)
220+ let bk = parseIntValue(bB[u])
221+ let bl = parseIntValue(bB[v])
222+ let bj = parseIntValue(bB[w])
223+ if (if ((bf != bx))
230224 then true
231- else (bi != bA))
225+ else (bg != by))
232226 then throw("Invalid amount or price asset passed.")
233227 else {
234- let bs = aS(bh)
235- let bt = aS(bi)
236- let bD = aC(aq, c, aM)
237- let bE = aC(ar, c, aN)
238- let bF = aK(bE, bD)
239- let aY = aC(bs, c, aM)
240- let aZ = aC(bt, c, aN)
241- let bG = if ((bp == 0))
228+ let bq = if (bz)
229+ then aQ(bf)
230+ else (aQ(bf) - aq)
231+ let br = if (bz)
232+ then aQ(bg)
233+ else (aQ(bg) - ar)
234+ let bC = aC(aq, c, aK)
235+ let bD = aC(ar, c, aL)
236+ let bE = aG(bD, bC)
237+ let aW = aC(bq, c, aK)
238+ let aX = aC(br, c, aL)
239+ let bF = if ((bn == 0))
242240 then 0
243- else aK(aZ, aY)
244- let bH = if ((bG == 0))
241+ else aG(aX, aW)
242+ let bG = if ((bF == 0))
245243 then 0
246- else if ((bG > bF))
247- then fraction((bG - bF), 100, bG)
248- else fraction((bF - bG), 100, bG)
249- if (if ((bG != 0))
250- then ((bH * c) > by)
244+ else if ((bF > bE))
245+ then fraction((bF - bE), 100, bF)
246+ else fraction((bE - bF), 100, bF)
247+ if (if ((bF != 0))
248+ then ((bG * c) > bw)
251249 else false)
252- then throw(((("Price slippage " + toString((bH * c))) + " exceeded the passed limit of ") + toString(by)))
250+ then throw(((("Price slippage " + toString((bG * c))) + " exceeded the passed limit of ") + toString(bw)))
253251 else {
254- let bI = aK((aZ + bE), (aY + bD))
255- let bJ = if ((bp == 0))
252+ let bH = aG((aX + bD), (aW + bC))
253+ let bI = if ((bn == 0))
256254 then {
255+ let bJ = pow(bC, 0, 5, 1, 0, DOWN)
257256 let bK = pow(bD, 0, 5, 1, 0, DOWN)
258- let bL = pow(bE, 0, 5, 1, 0, DOWN)
259- (bK * bL)
257+ (bJ * bK)
260258 }
261259 else {
262- let bM = fraction(bp, bD, aY)
263- let bN = fraction(bp, bE, aZ)
264- if ((bN > bM))
265- then bM
266- else bN
260+ let bL = fraction(bn, bC, aW)
261+ let bM = fraction(bn, bD, aX)
262+ if (true)
263+ then throw(((((((((((((("poolLPBalance=" + toString(bn)) + " inAmountAssetAmtCalculated=") + toString(bC)) + " inPriceAssetAmtCalculated=") + toString(bD)) + " amountAssetPoolLockedAmt = ") + toString(aW)) + " priceAssetPoolLockedAmt=") + toString(aX)) + " lpAmtByAmountAsset =") + toString(bL)) + " lpAmtByPriceAsset=") + toString(bM)))
264+ else if ((bM > bL))
265+ then bL
266+ else bM
267267 }
268- $Tuple13(bJ, bI, bm, bn, bl, bq, br, bp, ag, ah, bg, bH, bj)
268+ $Tuple13(bI, bH, bk, bl, bj, bo, bp, bn, ag, ah, be, bG, bh)
269269 }
270270 }
271271 }
272272
273273
274-func bO (bP) = {
275- let aW = Z()
276- let bh = aW[m]
277- let bi = aW[n]
278- let bj = parseIntValue(aW[k])
279- let bQ = aW[t]
280- let bR = parseIntValue(aW[o])
281- let aN = parseIntValue(aW[p])
282- let bs = aS(bh)
283- let bt = aS(bi)
284- let bw = if ((bP.orderType == Buy))
285- then aL(bR, aN, (bs + bP.amount), bt)
286- else aL(bR, aN, (bs + bP.amount), bt)
287- let bS = if (if (if (Y())
274+func bN (bO) = {
275+ let aU = Z()
276+ let bf = aU[m]
277+ let bg = aU[n]
278+ let bh = parseIntValue(aU[k])
279+ let bP = aU[t]
280+ let bQ = parseIntValue(aU[o])
281+ let aL = parseIntValue(aU[p])
282+ let bq = aQ(bf)
283+ let br = aQ(bg)
284+ let bu = if ((bO.orderType == Buy))
285+ then aJ(bQ, aL, (bq + bO.amount), br)
286+ else aJ(bQ, aL, (bq + bO.amount), br)
287+ let bR = if (if (if (Y())
288288 then true
289- else (bj == h))
289+ else (bh == h))
290290 then true
291- else (bj == i))
291+ else (bh == i))
292292 then false
293293 else true
294- let bT = true
295- let bU = bP.assetPair.amountAsset
296- let bV = if ((bU == unit))
294+ let bS = true
295+ let bT = bO.assetPair.amountAsset
296+ let bU = if ((bT == unit))
297297 then "WAVES"
298- else toBase58String(value(bU))
299- let bW = bP.assetPair.priceAsset
300- let bX = if ((bW == unit))
298+ else toBase58String(value(bT))
299+ let bV = bO.assetPair.priceAsset
300+ let bW = if ((bV == unit))
301301 then "WAVES"
302- else toBase58String(value(bW))
303- let bY = if (if ((bV != bh))
302+ else toBase58String(value(bV))
303+ let bX = if (if ((bU != bf))
304304 then true
305- else (bX != bi))
305+ else (bW != bg))
306306 then false
307307 else true
308- let bZ = bP.price
309- let ca = fraction(c, aN, bR)
310- let cb = aC(bZ, c, ca)
311- let cc = if ((bP.orderType == Buy))
312- then (bw >= cb)
313- else (cb >= bw)
314-[if (if (if (bY)
315- then bT
316- else false)
308+ let bY = bO.price
309+ let bZ = fraction(c, aL, bQ)
310+ let ca = aC(bY, c, bZ)
311+ let cb = if ((bO.orderType == Buy))
312+ then (bu >= ca)
313+ else (ca >= bu)
314+ if (if (if (bX)
317315 then bS
318316 else false)
319- then cc
320- else false]
317+ then bR
318+ else false)
319+ then cb
320+ else false
321321 }
322322
323323
324-@Callable(cd)
325-func put (by,ce) = {
326- let cf = ae()
327- let cg = valueOrErrorMessage(addressFromString(cf[x]), "Error. Incorrect staking address.")
328- let ch = value(cd.payments[0])
329- let aq = ch.amount
330- let bz = if (!(isDefined(ch.assetId)))
324+@Callable(cc)
325+func put (bw,cd) = {
326+ let ce = ae()
327+ let cf = valueOrErrorMessage(addressFromString(ce[x]), "Error. Incorrect staking address.")
328+ let cg = value(cc.payments[0])
329+ let aq = cg.amount
330+ let bx = if (!(isDefined(cg.assetId)))
331+ then fromBase58String("WAVES")
332+ else value(cg.assetId)
333+ let ch = value(cc.payments[1])
334+ let ar = ch.amount
335+ let by = if (!(isDefined(ch.assetId)))
331336 then fromBase58String("WAVES")
332337 else value(ch.assetId)
333- let ci = value(cd.payments[1])
334- let ar = ci.amount
335- let bA = if (!(isDefined(ci.assetId)))
336- then fromBase58String("WAVES")
337- else value(ci.assetId)
338- let cj = bx(by, aq, toBase58String(bz), ar, toBase58String(bA), toString(cd.caller))
339- let bJ = cj._1
340- let bG = cj._2
341- let bm = cj._3
342- let bn = cj._4
343- let bl = cj._5
344- let bq = cj._6
345- let br = cj._7
346- let bp = cj._8
347- let ag = cj._9
348- let ah = cj._10
349- let bg = cj._11
350- let ck = cj._12
351- let bj = parseIntValue(cj._13)
338+ let ci = bv(bw, aq, toBase58String(bx), ar, toBase58String(by), toString(cc.caller), false)
339+ let bI = ci._1
340+ let bF = ci._2
341+ let bk = ci._3
342+ let bl = ci._4
343+ let bj = ci._5
344+ let bo = ci._6
345+ let bp = ci._7
346+ let bn = ci._8
347+ let ag = ci._9
348+ let ah = ci._10
349+ let be = ci._11
350+ let cj = ci._12
351+ let bh = parseIntValue(ci._13)
352352 if (if (if (Y())
353353 then true
354- else (bj == g))
354+ else (bh == g))
355355 then true
356- else (bj == i))
357- then throw(("Put operation is blocked by admin. Status = " + toString(bj)))
356+ else (bh == i))
357+ then throw(("Put operation is blocked by admin. Status = " + toString(bh)))
358358 else {
359- let cl = invoke(a, "emit", [bJ], nil)
360- if ((cl == cl))
361- then if ((cl != "success"))
359+ let ck = invoke(a, "emit", [bI], nil)
360+ if ((ck == ck))
361+ then if ((ck != "success"))
362362 then throw("LP asset reissue failed during emit call on factory.")
363363 else {
364- let cm = [StringEntry(z(), ("%s__" + toString(bG))), StringEntry(A(height, lastBlock.timestamp), ("%s__" + toString(bG))), StringEntry(I(toString(cd.caller), toBase58String(cd.transactionId)), ap(aq, ar, bJ, bG, by, ck, height, lastBlock.timestamp)), StringEntry(G(ag, ah, toString(cd.caller)), ak((bm + aq), (bn + ar), (bl + bJ))), StringEntry(D(ag, ah), ak((bq + aq), (br + ar), (bp + bJ)))]
365- if (ce)
364+ let cl = [StringEntry(z(), ("%s__" + toString(bF))), StringEntry(A(height, lastBlock.timestamp), ("%s__" + toString(bF))), StringEntry(I(toString(cc.caller), toBase58String(cc.transactionId)), ap(aq, ar, bI, bF, bw, cj, height, lastBlock.timestamp)), StringEntry(G(ag, ah, toString(cc.caller)), ak((bk + aq), (bl + ar), (bj + bI))), StringEntry(D(ag, ah), ak((bo + aq), (bp + ar), (bn + bI)))]
365+ if (cd)
366366 then {
367- let cn = invoke(cg, "stake", nil, [AttachedPayment(bg, bJ)])
368- if ((cn == cn))
369- then cm
367+ let cm = invoke(cf, "stake", nil, [AttachedPayment(be, bI)])
368+ if ((cm == cm))
369+ then cl
370370 else throw("Strict value is not equal to itself.")
371371 }
372- else (cm :+ ScriptTransfer(cd.caller, bJ, bg))
372+ else (cl :+ ScriptTransfer(cc.caller, bI, be))
373373 }
374374 else throw("Strict value is not equal to itself.")
375375 }
376376 }
377377
378378
379379
380-@Callable(cd)
380+@Callable(cc)
381381 func get () = {
382- let ch = value(cd.payments[0])
383- let co = value(ch.assetId)
384- let cp = ch.amount
385- let cm = bc(toBase58String(co), cp, toString(cd.caller))
386- let az = cm._1
387- let aA = cm._2
388- let ag = cm._3
389- let ah = cm._4
390- let bm = cm._5
391- let bh = cm._6
392- let bn = cm._7
393- let bi = cm._8
394- let bl = cm._9
395- let bq = cm._10
396- let br = cm._11
397- let bp = cm._12
398- let bw = cm._13
399- let bj = parseIntValue(cm._14)
382+ let cg = value(cc.payments[0])
383+ let cn = value(cg.assetId)
384+ let co = cg.amount
385+ let cl = ba(toBase58String(cn), co, toString(cc.caller))
386+ let az = cl._1
387+ let aA = cl._2
388+ let ag = cl._3
389+ let ah = cl._4
390+ let bk = cl._5
391+ let bf = cl._6
392+ let bl = cl._7
393+ let bg = cl._8
394+ let bj = cl._9
395+ let bo = cl._10
396+ let bp = cl._11
397+ let bn = cl._12
398+ let bu = cl._13
399+ let bh = parseIntValue(cl._14)
400400 if (if (Y())
401401 then true
402- else (bj == i))
403- then throw(("Get operation is blocked by admin. Status = " + toString(bj)))
402+ else (bh == i))
403+ then throw(("Get operation is blocked by admin. Status = " + toString(bh)))
404404 else {
405- let cq = invoke(a, "burn", [cp], [AttachedPayment(co, cp)])
406- if ((cq == cq))
407- then if ((cq != "success"))
405+ let cp = invoke(a, "burn", [co], [AttachedPayment(cn, co)])
406+ if ((cp == cp))
407+ then if ((cp != "success"))
408408 then throw("LP asset burn failed during emit call on factory.")
409- else [ScriptTransfer(cd.caller, az, if ((bh == "WAVES"))
409+ else [ScriptTransfer(cc.caller, az, if ((bf == "WAVES"))
410410 then unit
411- else fromBase58String(bh)), ScriptTransfer(cd.caller, aA, fromBase58String(bi)), StringEntry(G(ag, ah, toString(cd.caller)), ak((bm - az), (bn - aA), (bl - cp))), StringEntry(D(ag, ah), ak((bq - az), (br - aA), (bp - cp))), StringEntry(K(toString(cd.caller), toBase58String(cd.transactionId)), ay(az, aA, cp, bw, height, lastBlock.timestamp)), StringEntry(z(), ("%s__" + toString(bw))), StringEntry(A(height, lastBlock.timestamp), ("%s__" + toString(bw)))]
411+ else fromBase58String(bf)), ScriptTransfer(cc.caller, aA, fromBase58String(bg)), StringEntry(G(ag, ah, toString(cc.caller)), ak((bk - az), (bl - aA), (bj - co))), StringEntry(D(ag, ah), ak((bo - az), (bp - aA), (bn - co))), StringEntry(K(toString(cc.caller), toBase58String(cc.transactionId)), ay(az, aA, co, bu, height, lastBlock.timestamp)), StringEntry(z(), ("%s__" + toString(bu))), StringEntry(A(height, lastBlock.timestamp), ("%s__" + toString(bu)))]
412412 else throw("Strict value is not equal to itself.")
413413 }
414414 }
415415
416416
417417
418-@Callable(cd)
419-func activate (cr,cs) = if ((toString(cd.caller) != toString(a)))
418+@Callable(cc)
419+func activate (cq,cr) = if ((toString(cc.caller) != toString(a)))
420420 then throw("permissions denied")
421- else $Tuple2([StringEntry(L(), cr), StringEntry(M(), cs)], "success")
421+ else $Tuple2([StringEntry(L(), cq), StringEntry(M(), cr)], "success")
422422
423423
424424
425-@Callable(cd)
425+@Callable(cc)
426426 func statsREADONLY () = {
427- let aW = Z()
428- let bg = fromBase58String(aW[l])
429- let bh = aW[m]
430- let bi = aW[n]
431- let ag = aW[q]
432- let ah = aW[r]
433- let aM = parseIntValue(aW[o])
434- let aN = parseIntValue(aW[p])
435- let bB = af(ag, ah)
436- let bp = parseIntValue(bB[w])
437- let bs = aS(bh)
438- let bt = aS(bi)
439- let ct = aU(bs, bt, bp)
440- let bw = ct[0]
441- let ba = ct[1]
442- let bb = ct[2]
443- let cu = valueOrErrorMessage(getInteger(a, W(toString(this))), "Pool doesn't have weight.")
444- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bs), toString(bt), toString(bp), toString(bw), toString(ba), toString(bb), toString(cu)], e))
427+ let aU = Z()
428+ let be = fromBase58String(aU[l])
429+ let bf = aU[m]
430+ let bg = aU[n]
431+ let ag = aU[q]
432+ let ah = aU[r]
433+ let aK = parseIntValue(aU[o])
434+ let aL = parseIntValue(aU[p])
435+ let bA = af(ag, ah)
436+ let bn = parseIntValue(bA[w])
437+ let bq = aQ(bf)
438+ let br = aQ(bg)
439+ let cs = aS(bq, br, bn)
440+ let bu = cs[0]
441+ let aY = cs[1]
442+ let aZ = cs[2]
443+ let ct = valueOrErrorMessage(getInteger(a, W(toString(this))), "Pool doesn't have weight.")
444+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bn), toString(bu), toString(aY), toString(aZ), toString(ct)], e))
445445 }
446446
447447
448448
449-@Callable(cd)
450-func evaluatePutByAmountAssetREADONLY (by,aq,H) = {
451- let aW = Z()
452- let bg = fromBase58String(aW[l])
453- let bh = aW[m]
454- let bi = aW[n]
455- let ag = aW[q]
456- let ah = aW[r]
457- let aM = parseIntValue(aW[o])
458- let aN = parseIntValue(aW[p])
459- let bj = aW[k]
460- let bB = af(ag, ah)
461- let bp = parseIntValue(bB[w])
462- let bs = aS(bh)
463- let bt = aS(bi)
464- let cv = aC(bs, c, aM)
465- let cw = aC(bt, c, aN)
466- let bG = if ((bp == 0))
449+@Callable(cc)
450+func evaluatePutByAmountAssetREADONLY (bw,aq,H) = {
451+ let aU = Z()
452+ let be = fromBase58String(aU[l])
453+ let bf = aU[m]
454+ let bg = aU[n]
455+ let ag = aU[q]
456+ let ah = aU[r]
457+ let aK = parseIntValue(aU[o])
458+ let aL = parseIntValue(aU[p])
459+ let bh = aU[k]
460+ let bA = af(ag, ah)
461+ let bn = parseIntValue(bA[w])
462+ let bq = aQ(bf)
463+ let br = aQ(bg)
464+ let cu = aC(bq, c, aK)
465+ let cv = aC(br, c, aL)
466+ let bF = if ((bn == 0))
467467 then 0
468- else aK(cw, cv)
469- let bE = fraction(aq, bG, c)
470- let ar = aC(bE, aN, c)
471- let cj = bx(by, aq, bh, ar, bi, H)
472- let cx = cj._1
473- let cy = cj._2
474- let cz = cj._6
475- let cA = cj._7
476- let cB = cj._8
477- let cC = parseIntValue(cj._13)
478- $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(cx), toString(bG), toString(cz), toString(cA), toString(cB), toString(cC)], e))
468+ else aG(cv, cu)
469+ let bD = fraction(aq, bF, c)
470+ let ar = aC(bD, aL, c)
471+ let ci = bv(bw, aq, bf, ar, bg, H, true)
472+ let cw = ci._1
473+ let cx = ci._2
474+ let cy = ci._6
475+ let cz = ci._7
476+ let cA = ci._8
477+ let cB = parseIntValue(ci._13)
478+ $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(cw), toString(bF), toString(cy), toString(cz), toString(cA), toString(cB)], e))
479479 }
480480
481481
482482
483-@Callable(cd)
484-func evaluatePutByPriceAssetREADONLY (by,ar,H) = {
485- let aW = Z()
486- let bg = fromBase58String(aW[l])
487- let bh = aW[m]
488- let bi = aW[n]
489- let ag = aW[q]
490- let ah = aW[r]
491- let aM = parseIntValue(aW[o])
492- let aN = parseIntValue(aW[p])
493- let bj = aW[k]
494- let bB = af(ag, ah)
495- let bp = parseIntValue(bB[w])
496- let bs = aS(bh)
497- let bt = aS(bi)
498- let cv = aC(bs, c, aM)
499- let cw = aC(bt, c, aN)
500- let cD = aC(ar, c, aN)
501- let bG = if ((bp == 0))
483+@Callable(cc)
484+func evaluatePutByPriceAssetREADONLY (bw,ar,H) = {
485+ let aU = Z()
486+ let be = fromBase58String(aU[l])
487+ let bf = aU[m]
488+ let bg = aU[n]
489+ let ag = aU[q]
490+ let ah = aU[r]
491+ let aK = parseIntValue(aU[o])
492+ let aL = parseIntValue(aU[p])
493+ let bh = aU[k]
494+ let bA = af(ag, ah)
495+ let bn = parseIntValue(bA[w])
496+ let bq = aQ(bf)
497+ let br = aQ(bg)
498+ let cu = aC(bq, c, aK)
499+ let cv = aC(br, c, aL)
500+ let cC = aC(ar, c, aL)
501+ let bF = if ((bn == 0))
502502 then 0
503- else aK(cw, cv)
504- let bD = fraction(cD, c, bG)
505- let aq = aC(bD, aM, c)
506- let cj = bx(by, aq, bh, ar, bi, H)
507- let cx = cj._1
508- let cy = cj._2
509- let cz = cj._6
510- let cA = cj._7
511- let cB = cj._8
512- let cC = parseIntValue(cj._13)
513- $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(cx), toString(bG), toString(cz), toString(cA), toString(cB), toString(cC)], e))
503+ else aG(cv, cu)
504+ let bC = fraction(cC, c, bF)
505+ let aq = aC(bC, aK, c)
506+ let ci = bv(bw, aq, bf, ar, bg, H, true)
507+ let cw = ci._1
508+ let cx = ci._2
509+ let cy = ci._6
510+ let cz = ci._7
511+ let cA = ci._8
512+ let cB = parseIntValue(ci._13)
513+ $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(cw), toString(bF), toString(cy), toString(cz), toString(cA), toString(cB)], e))
514514 }
515515
516516
517517
518-@Callable(cd)
519-func evaluateGetREADONLY (bd,be,H) = {
520- let cm = bc(bd, be, H)
521- let az = cm._1
522- let aA = cm._2
523- let bq = cm._10
524- let br = cm._11
525- let bp = cm._12
526- let bw = cm._13
527- let bj = parseIntValue(cm._14)
528- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(az), toString(aA), toString(bq), toString(br), toString(bp), toString(bw), toString(bj)], e))
518+@Callable(cc)
519+func evaluateGetREADONLY (bb,bc,H) = {
520+ let cl = ba(bb, bc, H)
521+ let az = cl._1
522+ let aA = cl._2
523+ let bo = cl._10
524+ let bp = cl._11
525+ let bn = cl._12
526+ let bu = cl._13
527+ let bh = parseIntValue(cl._14)
528+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(az), toString(aA), toString(bo), toString(bp), toString(bn), toString(bu), toString(bh)], e))
529529 }
530530
531531
532532
533-@Callable(cd)
533+@Callable(cc)
534534 func hashREADONLY () = $Tuple2(nil, toBase64String(value(scriptHash(this))))
535535
536536
537-@Verifier(cE)
538-func cF () = {
539- let cG = cE
540- if ($isInstanceOf(cG, "Order"))
537+@Verifier(cD)
538+func cE () = {
539+ let cF = cD
540+ if ($isInstanceOf(cF, "Order"))
541541 then {
542- let bP = cG
542+ let bO = cF
543543 true
544544 }
545- else sigVerify(cE.bodyBytes, cE.proofs[0], cE.senderPublicKey)
545+ else sigVerify(cD.bodyBytes, cD.proofs[0], cD.senderPublicKey)
546546 }
547547

github/deemru/w8io/169f3d6 
202.47 ms