@ronami/hypescript
v1.1.0
Published
A simplified implementation of TypeScript's type system written in TypeScript's own type system
Downloads
7
Readme
🐬 HypeScript
A simplified implementation of TypeScript's type system written in TypeScript's own type system
Introduction
This is a simplified implementation of TypeScript's type system that's written in TypeScript's type annotations. This means that it uses types only — with no runtime code whatsoever.
You pass TypeScript code as a string to the TypeCheck
generic and get possible type errors back (See the live demo):
import type { TypeCheck } from '@ronami/hypescript';
type Errors = TypeCheck<`
function square(n: number) {
return n * n;
}
square("2");
`>;
// Errors is now equal to the following type:
type Expected = [
"7: Argument of type 'string' is not assignable to parameter of type 'number'."
];
Or you can try a more complex example (**[See the live demo](https://www.typescriptlang.org/play?#code/PQKhCgAIUyH1aKclq2wSuUYB9L7pHFIAUcAlMvrjgQXJpvC44o02-Gwj6wjWzR6AcgQAdGvXxjI4yMBbjFjXCrgzVoiflV0pBjdMr1uwcW3nkjhQ1UH6bGi3AA09AHSNFLjbg7mHP62Rl5wPnrCaN7SJHE0dKj+3sFxJME4dAAqABYAlgDOkIWQAIaQBXkAtgAOADZ5AGZ5AKYAJsW1dS1VLQB2AC6lA3kA9n2Qo42QWQCeNS0AygDGAE55NQMiRQPzLRWzBQM9kAM5w9uQAO7rA8d9dHkTcwsr65uXuwtlfX2jQyNxgUPDN8kVeqU+jtzgNirCAK4FFo7PZFcZ1WaQQAoBNc8mc6H9IKt4YNqvtlqM2vsrjCCqMWgA3FqrDyZYQATVG8MgNVKBSKLyWaw2sIpVLKRXKR3WfQA5qdRqccvsAAaCgDCyuWAGsVZBZf1mXllj8OgbYTVRvy8gAjbp0L77ZmrUarIo20o61nQbJgnkugBWLWWsIaTMlsJydxqBQAXMBgLK8Tl4TaPBSqsAXX1SlU8sAABJ7N4itkwTnc5aQ4pQoZ1OqQFU5VHCzZ6p6QWZc1aTK4TGqB4Owq7JxuzUqrPp612Nvo1KoquikQUlzaQAAsHgA7JMe3VhszikVVi0AI7wvIntpUEdnMcTialNodZsLAqtgYq70QYTLjaxyAclGJke2Aw8zn2R0ygaPlkUgG0WjqUYrgVCoWkgvZIGdV0ig7Lt4R7J4anhAYKDLYBwHABNIALMDQJAxsAFFVhdN09QGRUkWpGFLhucZ5VvHIlRKIiSPAKDmNYooAF4Zj2TVg21AAeRdwEaEkQzGCZGlGUZSF6flSgNADpSeWUqAAbygYppn05ECiMloPCeZY6nhKkClIAAiZV61GLyKEs6zYBPAYCImAyHINABuayAF9KJClowsnSBIscjxujlM5YoS8AKVrSYbQDSBZKs2B1L6ZYAJ00ZXHAOLYvyoFYRPAp4TqAYAL6eEqgQntZNGYqPEq5ZvN8pDrldOo2gCpqVQAPia0AfxgaT1o2zatu2nbdr2-aDsOss0iIdVXX2BobVWCdMTFfYEL8q5jsOl7Xre97dpwCiqMUApVmWYAnipAAPDwBgKcAWmBy1VlhKCNS1ZSAEk5xIrDgfuNoilMuUFtK6zqKyUZtX6PIAC99lEgZrKJkm+nJlolJR4iBjxqHMdwvpGkPWn+gAGUKamkAAfhmYn+cF9GOcgSTXSUyFZncBWFuCxBReopHpgVrCWJw9wdNWKphiVHpVaQAAxV0jYGJSAG1eb6AWjgAXRVlAAIdp3YXZ-oscgABBFjSlmJSHflvpZgWt3kHVxRNYqeFlmWez1LqdxeTdSnBkVas+SF1AAAUJyRUPxcdwW2Yx33Oe5nsADlKRaL2zbVyAG6pL2permXddWcPFZ+SOW5FhQ461iOdak-WreNiCqmH5BLcN4Y7fbpvBddhfYAAtfO59vo-cD66Q4AIVgtf+6jrfIFjyB4-apOU469xHQAWmWRHTUgA3rcnnDr9gEva2SkFI6iUrvCu0c0DdUZMyBeMCQItwQXApAyDVjLV+v9YAABVEYdQCjACPsHXBeR8FgwhlDGGcNMJZFKKQ0OXcD5FCISHZWeNZKkFIB4bhXUZhUGknjBkow8jXkYX7Ug1kcgAQVvVWA3CPBtV4U8WukAABK4B+GCOEW0ayot1Hb0gH0WB6DKKUNdNQ74BdEQ5AYfvQ+QdWERwWu4Ri7DIC23kVkFxzsmpmNhqcTC2CoT5EaDbLIYjmEOMvi4txttGLuE8T40x0NzEBO+GdKqK8sgAEYIkByicrdwWQABMeSWGX1idZTx2TZGQE8cU+qSTIYpP8fDOhdQT4hxpmUgpTjaknzyT1PqzJan+x6cfS+pV3HO3qm4gZdjmG2xEFlWUZwRDOxvjMSAHt2mdNDu00OzjIAn3cFYgoNj-buAAAxRwwRULBJD8HAFlm6chzSqFpP2C8pSABZeyjk8k41lO4AWRi669X6oMiFzJ2HWXwIsWYgxSjA2+X8wyBoQVPBaOC4Zqxo74CLm6MyqL-kYsgKC7F0K8VwrkgsEl6KWiYrBVSpaySPlQQRUilFvdfmkqdFXJhFQBgymBeSrFOLIULMMSyqZ5VPkAREJyoY3LWIiFirAdKxlIBoqii0dVkAGjMtxQBClErmS5V8S0ix+xCWVDlPS3VgLhVmSZZS3FULcVuLlY6BVtriW9zVdZTVLQAI6scvqw1br+omvFVSi1bLUnwz2A6gFUqgWurNT2KVQz+peusj6yAIhBQvMDRqvloa+URtjcasVRr+rxp+vcgGjyCFAOGG8vx1rIBtpttZF5RQpXlO+em6VnrnHWVUciDq3sBX2ImUC2JMzwBuP7Xk22ztdFqKnZ1ayAF+22yuRsqV3zlGHjDWS09PZTUss3T2-Z9D+1HLOTYyd7VOruBVAAEgste3FcUALfvPS0OKi1o5oLuX9ZteCCEAHlipDhbR2q1nzIBwaDCGP5qwDShxqTMYpbiYN5jCbhkmXZpglLxgAMjwxBrBDsGarGAMzEiwJwbvMTZhAA0i0WYVxXR+2kjSkQBUjgiCE90LYQmmhidgDIUK4UZOiB6vWRTMhhXwhaKpwtjRSj4M00J0agI+iBvY60zCViqphWGFpfGsnC2uC0yIUgjmKCOaWUJ52jmLKObio5jwjnoqOdjI56SjmQCOYANSOdfo54AJnO0oczTJQtVyRCiGyWlmQxTMuFoAMw5ZEOuArABWArAA2ArW4CsAA4CsAE54vIY5bMPqox8G2dEKURzNpHPLEc20Rz+m7MiEaI52UjmciObyI5gMjntSObqI5qojnjNCdGI5mojnTyOdWI5gojnJPDfhI5hkjmriOeBo52YjmyaOf9o5k+jn1SOYACKOcYo582jmADijmCyOaRo5gAUo5zjjm+aOZ+Y5uujmYOOYLo5gAio51RjnFiOayI57BjmABqjmADqjmAAajn2SOYAFqOdS0JjLQnstCfy0JorQnStCYq0JqrQnatCYa0JuAjnP0meopB4A9GKaMZ+cMHIbyOWJ2WLQu0+wyrWSuQBbJ+rskAWKfq4pAFcv6tywBdc+r1wAWK-q4rAEyv6rKwBLc+qtwAWq-q6rAE6v6rq2rq5GvVeQGyer6y-u1fa8D7rv3+vA+G798bwPpu-fm8D5bv31vA+279-bwPju-fO8D67v37vA+e8gMU731kS9a4D7AYpmvi8h6r2H4pEeq9R+KTHqvcfikJ6r0n4pKeq9p+KRnqvWfik56r3n4pBeq9F9y6X2As+9eV8gLlmvuW6-L7D7lpvy+o+5bb8vuPuWu-L6T7lvvy+0+5aH8vrPuWx-L7z7lqfy+i-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-YI4x3NkRAFZp3Y3G3O28kgltQ-g+wl39WSQd3kJVsob02h2K3jF933HjE12z25251g4w2VFGJuhS7wZBRC3hW8hRWh1X3+h33KWB2m372iggktIn3DwwPxhBQChP3aWWgoO+glJEOYPYqZ3gO8k0MhwIOexYTRg8aRhkQ4ORWPmWgsOQwGSXQCPWhYOgPN2pVzYNIjMcPGLdyqgCh3BHDJ0Uo+hiPv3SPGPLMtIGS2OOOt0eO0PDFjEL7jFarBD4PBPNJxhmrCVcweXpZylbYR1gWRhQWFhXZiaeO8kdPmWFhaav3RXFOjNVP2ORPrp2OFXBVHCLPSO2gbO1rRYXOGY3PROoTI2VRSBv0vOKYfP7OCg4pNFIAgv4P+bkpwoFoRSDFL6UF7TkuTFxJMJguWgrOtJ3OVPfPtaJktPxGLKQXBQDOJ0ta2qprZJkzab3O107S9ELrBj3OD0j0SjbZHD3rOPw2RGmui2QPSvdOr33q-PvqpCFOmPcvRPp6UAbS7O1PRaUB7D6KYj3r-0ouLIsuNmC33CpVnP4O2hFg8hZR-KCIu2iBPOjuTuzvhgLvxu4hRY2vll+hVlJsOvpZskAEY5GxouSPvPbvzuTxEu4gAJ7CsvjvTvgfgMP0fukvpOSA0EF5IbUvEfEBkeEer7KIOU0W2hsEkRCV+hciA3BUTO9OWgwjy3BUUPc3maLi3L7TSe-YcvoO6eI5qSh4GeriDEBW5PQn4Pf2eh-2ChmeihyeP2OsduX3hfBhRfKWt6NjIeZe32vr5CjuVeRfHv3K8eCeWgiebLNe5fJepVGeJuAv-v+PvOjfwYIv11zjUBwfLfRW2gbfwv7ekEpPEEoa0v+fJuAeKZEPmrae3xSaQ4JfKXia4b5nC15SUWQ+4IpV10o6WuDEE+Ch2vjOmWKfN0dv0-2vHO-ZDuA-gPI3IexfSizIW5ruS+g-r4Fv0-lvkB8-XvsoPu8lvuSBRZVuLqYjy+9hQfoE-uLI1vnfXPDL6AHeUBUfMeMeveUu1CMv5OS-yOvjGKqPmRCP1Pu5NPtPs-yvrqGaxGRUpk6uUW8PqPE-OuBuj-u5I6vWLJfMY2VQLItu1vIARToGN-YYaPM+k-uueMvXFROYwG7mMs+ZXZNq3DG7lNq+w-DbgBm24xdbW+3EosXyt4hcL+m-WYAvBr7oD2gmA2GJiBgFXd-eeA1fnN3QALcCBW-JvmgGoG-9W+73dZB33h6twe+cNPvkd2oGzBGoU-MHsP1H6ICS+bnb-rsEaiNgfuqPH3uj3djz9VgnvNLjG0UFY9zU6hTBADFtSPF-YRwJDEYzbiNwPywLWGBSg9QZ0ZYB8EwdTU9SgNYARwCcAMHFoAQjBDgrFPql9iODzBbQClIMy7SVs6g2bJSKMwrYGD6SQDchiyjzTJMFgCqPwdm08Z9McmAzfJvwV8G9RVmAQ2Zrg3KYSMCGibEIZSTCHTNKGkAJRtEMLQ4p0hcrDptZAybdMdGvTPRjw2SHUsUMQbUhhkNKZzNEWwbHIUMGjL5DamhQxJii1KEsMRAbQh2nEM6Y+NBu2TXJqUB8EoYsKHQwblE1yGZsBhSkIYY00iEtNFUhRKYTUM0azCGh-TJoXwRaFQQWEjEaGG1EqDKc+0f7OXmH1srnxG4FSXoTYw2FUgPy2wz1Ekz2HXDbh9kLSJ40Qiy9wYe6J4eDDmFJCLhqDb4KvxuHgNrQDw7qqIJo4vDV+3Az8qNScTXUghgqNeL8JppFCARNDJEcCNRHGZ9UA4fDpvxo5f96RP-ZELCPOEFMUM2I0QV0lgDQCSiZ8JEBfDGqdCsh-It4VSHJqVN1hwQn4aENJHDDdhFI+DCGG4GeNSMAEd6tMMyZ+NThiQ9kSkJQzYMRWiuF7MGH3DXQjMIzM0buSMzb952USI0d+xNHWiLRcsPEQPDYS1JOMQMNYX0KlTEi5RuKcIf8JGGuMyhIgR0UoW6CmjXINo0ERwxdEekoQ3DRMbaP1TaggYGooGGyKCbNCER+wSMc6NjGuj8a3xDoFKgFHYp3hwolqniDySVihRfSOSn6LyGyiCh8onYTYL2GFjoxqY10J4xEQAQkYbQfVE8DxBDj6YAwHMXk3hF8N9grPF+qmOE5glyxYowUdWKbHdUCujNKJA2I3GRxrq7rNoEQLXFViJRNYwkX7ADHtigxZI0MVELGELiYx5opMQOLaBDiRxYDUTtA1E76oMSx4gCEeNmDTiFheYucd2mm7jBkRdw5cWWPrHijGYysegHW1qQNdCuZNPceePxH9JKQJ4t1ghMlHWN+hbYwYR2JDGKiUmC46CSCPGBviPxtI78axzC5-jcJgE3CSBMWFQRhx-7JoK0FLFtxcwQ3Kxguz+BMtxg8E9cVhMjjISOoacZsV8JlEtASRt4hUV2JobcTSQzQZkJ4xzC9Ad4gk-VI6BEn-AkxAEYyWJL6AcSwJeg6idSJ04Qjmqtk+4RMArEESLx0ookZsL+EKN7xewpyVpHslvswRVI5yXuhClaQrJs4vQeqF0x1B-JaIyADFPrDoQJJZ4xCZuPySyg0hzw9CafDcnYT5JxEpSYGLMGqTmmNDJKXFPCm0T9UVYZKSw0qnoR9UE4LKarzMlYZspMI3UfMM4mYQ-kuKeKUh2sir9UpjYyOKhO5GjT9x11YuizHaDf0ehhU-0V5LIk+SKJ4Y-qf1EGmeMho6GXhKv1pHcimRBHYCdZAzBzT3xiU0YLUBIjtBIpHIriY0ECn-sAWyITUoG3ynjTrIGSJEOeH-ZTSpJBIjyVeJWkqTOx5UlJprGemDBPGxwI4B7Dem1SgQZ4DTIMAAg-SUZ-7KybAGoi6Z9y-lFhv7F6nfBuO4UaGWv0DitT-prkySelOkn4AUJS01scVJvGlTwZJQsMWMNJmThyZnjFqZ1PalUzBg90g0VcOtBnc32g05qnzG0rvTBUmEumYf1O5RgAZis2pDBjxrDAZw2Qpmd8JZmkSwZ5EtSSk20GVAJZ-7baRGllkmpZZ+qdYLKCjAARVEysqcdZGZFazEGqGTWRxBMSwAEhPU6ySE2ORPAboUsimrLNVmETnZDsuWX7AVmESNZoVH2b6IUmeSSJWw1ac418k0MT4Ic1YLMEtnWRugoSG2aEjtkuynZLs-VO7J9kARE5JYkWZcMwgnwkIOocmc1SAkvD45no3WYpOUlsyjZEM8MS3NGBtyAQEIzxv+NmBsTjxjc-MbShaDmSkxzVJeUZkjnuSWxes-uSMjvHrSxhgoVefGM5mHzxgZk34CZKMxzzwJCVPYCfKQ6Xiig14g2QPNzR7yFUN8hYHfPiGNDcxUUoOUm0-nnyLJgQ4GY-NBkvyYUb88oVSgPlALXxV8vQbEKqGwLRJy8h+foPTneTIFxs8MUgtDa3y4FRmb+WcN-kPTm5HrAhagstHoKn5Gcw2a-JwVjCJhkIFBRfKPl+yf5M4shd8BWYmlKFbC5TkjGrJFTt5EtIoVApEC8LTOi8whewuKCXSkYCCoOQu1mCsLgFNC8BTvIoYSKVFai+Bd1LhHcL9g8cjRZgszl4olm9ACoZKQCHKVTmNKZhSGyxafl7FdmZYVUJcWWkaUQIlEc5M8XBkaUlI3xcJzsVeK7MXI5kbsFxEc99mNKHsUpKXHKd3RVzegPEufE2i3RMS0JQErsxPjElSHZJYPBSX4AqJ1UgpVkoqUDxXF9ADSSMC0l9xCl1S-AHgucVNKZYZS9udkprJ2ZKpUsxpWEvoCbTmQfSypZz2KV3wnp48t9tEqqUDL8A3MvoJ0piVtLTZ0PSWWUpmVjLYldmXOTmHzkjKPRoy7ZfQBHljyDw0yrpQcz0WWjLlNKD+TIqoXCc2lACh5QIvvlzK24sk7NtcqeUfLHFPy5Tm0qkUU875-i7pfQF0X8L1Flpa+poMYxwrXiliYuB8SpCaS+JALMuHvB3ETJdaBU46pCDsqrz5p3Q0hrTU9iCw-+y1dpiUxrAqI64gk2pOM1qbKVHCtS3icyHPrRxRYMUvoISsIXEqcWPPVuOSqOBc1Pu3cYFTSpQAiBgsktWAEys-KOEzoSEcuAg1R6o9nuyKgFUhxtJ7IRVDFfDIXyKCaD6KFApAI4TXhyrEA29TFYLCtWwBHCLyFHjgJ7isQXSxcf1KxBmVSDW4mg75C8h9UGITVF1M1agDZX1LQ1aAelb0HtWoBLVrA2ALQvDV8Txa7gZNRyqNrUo0gtA1APqskHwImJSIF5KaqLQJsFgIYdoOFSukqrz6sg4NXDUjV3xUVdS9FT92jWCsSAjMkgEmubXsrVgqaptTxPqW1r0AOa+VQcn1U+rJO9a6dKGvTX8So1DK6+F2vQA9qh1KazNWmt7XDrM1U6q1Qt0nUtwsydbP3poO1XH0JYRwF4bioPGWL9VlKgctSulIGszIKZBVSyo2It1C2M6zqKGvPXXx7loK2hQOq-WxrgNm62tFGhhQo991E621UcHVUxt71h6Yzk+vWYLxvWSLOPmgHfUxLHCI6pAN+uRWmqF4-6ogP8qhXLzwNCDdOpArA2bCQNu6mDaRrg10wvYiGqGshvFWCobmANcJtKrrbYbc1NTRVZ+qY3T9I2P6tfvN0o2Wjr4LSklueuo1QaxFoG+TQxog0EbkAOag9fBtZhHqkNemh9d3HOb8bkAtbKlEJvm4iaP1KiLTbACI2ZwSNOG2TbBNXUwLXNynZTZmlo0WL6N6cxjWquY04bWNl6-TRJs41GaUNQLNDf0BlKrsikNmvDWJrVWOakQzm3NZ5qGlEBIVgCx5V5o000bINmaKOP5v1nN1NN4m1ADptC3lwENBmyLWxopXRaqVMNMzeao2LxJSNSWgePhqq2EbJNxGkNaRqy2NrJVo2+JBgvK2BaVNpW9TQFsq1Ba0ANW+hIeoi1z8T1OPczMip+kDA0l+SjFU1qvW5SL15Sg8eCwpDnsyel2iSiyzgk0y0p4CTRWIu0VeigY4tUwYSTCJRbuNfsSVeE1lJCbcNvWzreeGlqcrN0fqjZbpqO2swjVhaloBlo610rG4ktG1bDrR2dbe4stVuC8ndVEp7UPKd0RqoR3+re4M-JtXknnV5sNi7arZbQqwUWLYBmg-bcWKTHit-m9fPTWBqXVEAVg9I2NcOLK2xrvRFgzddfGEwtRfWA22QcoLn5+re4JawaejHLUBUq1jEMHfghHU-jM43yJeh6sJ1eqF4BZETFsEgBUg2dtotKIiFhAIQaweIPAW0A8BeQrVw4pZAkPWRLI7BxgzNesga2IAqWUETQTLL20TgnRvYy3W5v1XXrpSPc2APzqu1+wE9t2sziuMjkM7zFc23ke9szWfbgGXRVcdLGp0WqGVRSqbaIuDGvyE6XsYzYKn+3obpV5pdmj1qAGHgNd7pLXf1sgBpaWgUsmHWFqjj470tw2tABatR0Lx0dYWq1Y6ux3raR4eOqVH6kN2ZLDlXPVAJqt108oA1BalnWHqjEJLI94wDnQusoHc621vO4gMntjVljr9U22-aLq8Hi6SAr3Q7KOs94K7WISuspSrqHCVqUy7e8HV3p11FqeUC8JfbKD11EACyEmNLBbpfFW6qgNu+CFnAd0u9ndgutoO7pJKe7Um9g8Wn7uW3+7F+Qe5FazvgNaRj9h2sLTHvWZx6BJvQPBsnuM43bJWaeh7RfAz30K6NF5OsewfeGcGIFfm6yA-o+1WCM6whn0TrLcTtq8kEhaYMnsh3IrIDN1A3RAdANoAVQPK0SUSHaAuj7orc7UK-HfD0iOgG5Y0XIREDfp21vmDwIeQXgiHM1-uhza1yG0NqW4ZBuMQlJQDPUiAHhksY2pv0-cUYeIW-bQtYFu6RAHu52F7qGA+6EG6yW-QJV4Onixpga9fbWIGBYGhgOB9wb7rtJpAPxWRrrNEZEC5H4j+Rt-UQBzU81UAD+q1WEaIAOGaN18YI7HKKDdynEP3UWK0aKM5Gxd5Rn7oUciPYGSjZRlTQQeq1HrJa+qyWiuqQCr9MM2GK-SUPcTlAOw7a52ABFxZxRYqge7bZnD8PLyCasOmg3FroNMGgWLBllt9th216-YvGmld1yBiMqW9tKw8E0dm3LpN0D+qSqboKwwHBtmcanf3rq2swx6GmeHVJtDVj6qQ0+jYjMYn1Y7WITh3Hb3CH2eqV9nPH1RvpANert9Q-H43mT+MurNBu2w45aJmNSEbt7gS1ZAA+Mlad9yKkPeSeE6UnljtJ+kzelkH3ruaeSB49KXzb3MvyzOpQ+ofQDgHVyQSShL-o6BtRmQTIDoGo0LTfpzGNhw8nSZz1LbJjda0U0bqIASmxTRACMXvsVzm78lwVK9VWCAXIGsItQXYOFR+6cncU18KdUoNkkX1ZJp65FUMtWBhzE1jcdPc9sr3cH5Vem042drm03GwtdxooPXri0iAq1wO1vT2Bez-Av11eilbyZi1taG9yAEvTGub3SMlKyWlRPOq0096kdyAH036dXXj6iA1O8-QWc7WyTQjmwssxBvbNanltsagVmVo-JrxejJR73S4PKNbr11Gars9ptg2kI9V3O4vBxvl26nXQJa+dT-orVO7ZyaZqrR7B+15I4z2W8zUsmmOvHXC10HUMlHLOKHdd0O2rexshOuHZ1LcR1WUvjUoBnzwS6DmfrfOdaylTqmXbjt-NonF9qh75MTpFOb68TgF1iBTsGlca9z6DNZnFol2eZY1SZt4z2HVBIQ7UsoE+GeZJgjnPjhBiblCevjVmNlbaus8QEGmvniA-RVs+nNYHUXG4g5mI3gbyOJHEpWFsyLhc9D4WN6JANI2OpmAHJYLem10zqYgtyxr4BpvU8QALKeY1zaul3T9yYtUgWLuBuI+MYqNz7tNMbD-cuZDUiBld0p9c1Wp4vnmCLDJpLp6a21IrM4qy82YMBrMyzQkgZsxVwaEOhmTjJ2m9ZGdpK3GWt0sfc81UB0vGizzKks23s10FAIdFxKHR+Z1W3nIEQ+xHSPrzMbFo5UYGi8jsPCZWBgCJ78yojyt-mA9kbYq0BZKIyXMTwp4i0ub7jlXoLnvFy20evj4BqdhS2hfhtlkDq2ErV7VD0C2kbLClylTq5+u6sQbertVpzWlbQAOW+g6yhKwEfJSyzb9eV7K+gFCsUWAt41orWteYvDHsjQ52I5Zcs2bwqjsavK3mqIvIBgDvexXTNdQBFplQBqWWa-HOAHwKgIifYJIVzjiz5r1M7-YgavV27ygZh8Pd9Z7DlA6RJ0soI-H5AOmiAABzvQg2dVQ19LqwL-QlcUt-6XE0V7XdKnrBenM4vS8i-6fFB8GJRAhrRRELCvUGfLsegqVGdBMxnIAwV6yE5iB0nmNiBvWK5slJOxTBplMzqbkXZpJWENktHm0-vM2uZN6wF+yw4lNUwn14RwZM73S9iq38TqJt1XLewugXKlJO9G0pE1to2Hzv66+CTcWtbWO1xACBCratuv00gA5g68UdYuaXoqNRkgFxvUtRVTr+a86-XzFvhbtTG2909ZcJu2WbUO2gW2UqFuq8qDoJ8Mx8JhITgJYCDPPbUkwtWgzIWFPBnXHQhtBi6RsBaaQ35bS1rbt-e0RMg6MHj9aS6JmzXsCsSqELYcTO9hawpYmrzSIFhKaoFprameYZpPgN3RumqVQlhiyK3ezuFFfM2Np3eqcltamd4+dwu6nL9iM8iyu5qVMFflIpl6evqqO-WEFsdTVelBljatrEtWr57Kmq1RPblDt2F40dHSzuYCu-aBQ0pNC31tS2AncTBlhtVWTSwmWlLvmyTnLtusW2YJ4wWOyLxPvWaMd+uk8Kqqvstwb7soO+ygAfsB6ibSIMBzRL6CQO5e0DtW5LHpu0G8VTE1OypvTvfSuLt9gCjrM1rR8Tt1dwfbJANrn8lD0OsSylYy1K3akk+0E7w6ROugvjFxBfZVZAtE79bX9u63ifJ2Gbn78F+hqaQcwd2R4-Ng+zHaPsi8-1gdnNZfZ80LxkHqD1AL2bAPWJYuadKbQuaDX72qpCVvB+DD-VfnC4KdhB-o7QCGPxGC8Oi6Y-OTmPp0NJxuAue6g2Wl+kdzOLstDmk3lroSNeG5fK2M6s9hD47dirJphwFVkzYMxYuKFwXN7zdgHXKVEDrQCsUWUQDFlEDhZRAcWWm7EwmZItMnKsLlaTpvNn3Ydg+nW6lbcOFXcrLs9aw6oysuyCr6Voqy7JKvOGR4DV7WWI4J1qGvVYFqa9-fqsjPZHEl4fZ0-QARP9lUTogM1d6eoA9rsJn7l7YnYiMEj9t+kqwJ2f7Wojrtk67ilOdpB9nLQdS2Mfdt+3R1F1gZ3ptRuLnJLGNh60gCMvf6AHON7rc-e9t5GiDBNuoH71ATagazsTim2rOON02UnIcXy8UM0FkXFrtJydVw7Ss8PrIfD9W4S8EfyDGnoj6WFVYaWSPVHdVo28s7n6wupZOLsSy4fst-WFr4DpDiy9ad4u1nOV+uJRYFdJPpyT50lzjtFgUvu4VL71VI7J2NWoaTLjZTy4H1sukQGzgucq9R0iv7z01-l9atp1CuDXKiQZ8K9Gfd7N0UrwVDK7md73fn9LhV4y8RjMvtXfd0B9HexeuvOH7Tys305R0HOunPYU18a7b2z7SrIjiq5S-EezOaXdrhZw69dCSclXnr2Ezq7VcdPZ1Kr0E3sbstFqOH3l1F6doqSWL4rXLyg5SZBN3m+Xj54V+taJd2rVYM+5E2M61uTOo30zvW6voNt0vjbTrxSC69Td92w70LiO73SJhJrrSZcKRmcfxHclJ3dMadweffspbPjjT7zaSPxu+9R3pbnBwQ+j3EOZ3525F30BtKJ29a1hHR58JEX0lid-l-oOO82FcbsnG9kovyfWYiB+iO9zo3FdNs2xHFAQui-s0S10wbSE9F99LDffxmBWX7tfTiYze-r-3Hi3s0B7HftIwP8jt6jxjUamlBNKjvm7+-ARfKPFpzYD-e7Q+DEcnibGBQKb65Cnd7cH01dYuNABCTmlpUjye-I9y1wPJmnVjR+AGXMar+HvV7OvcXwtduQpkj6h9IRZlNBpSxa7i59f-P0Ld+sVya6cdmuw3LbhjyGqzfq3XVibij9x7J6xakOgpjTHh+08NrqdezFCSh4digfDPGHkolvaPO90RqkVq9LusaeaCfFXL+9JOUnVAPHP0Zxu3XryfvvvM7H9zyDrs1efO7ZHZUWEkvfFauTqXEJyQczjkDj3WKjTjrQZtHukjIwXTKIZNpBjKuDDwtxEpOmbKvyi6WpHnfaDL3i7DtUu3pjJVGe-t4X+M75ii83uPP5KK+D++E9m2UAQSvzwLQneoH-BmmxJ0gErcVwcdT9lF9LGT5DeFnpqgstPeBdO6XdGR-jvjYa8F3rpRd03kKvXtOegrXXpDtvbw9reEve0pGMcCqD+fTt7GtNZOP28Qb6KknSj2Mzftc27Ng3uN9I5-uzq-7M99AwN6UHo9brq-R7z0Fe92q9vxXr7xdRzdhOkQcPp7-HZy8788vJDgr8j+m9p2xDhJeh7eRO1VesBNX899Mna8XeTNJn5qvmetvLu6Vgk3m+d+jNZnnPV3mUrKsE93e+9uyNF3OcNXVuRvqAMz2lLhNqfYHo+8VzpYjfa2pnutiR125JM9uGXKz+70OHh9VACHRAYN2gGp106oXAT9Oe2oHVW+vPt+8xrs5QCtHPvzRkgETUbPrwUbVR9-XVcxtcuIfKZJ3yj8nOw-Ev+vw38gHm-i2F4pv0vbZ9oU2+itCf2bTmpj8xrzf5e+kkn5830GPfyf13R96D+IO0Abvxdb0H4u6XrHvzjbyIC2-QwZTkPwP8T9m2YPdfIYMP3834n7vC36Lr0TxnXkZSwBiLwiY35K+AMaa5Xin5V8S84jhrpDrP6bVJ-5673zN0L518UfPrlHgnuD1l-m6XuW4I-qW0gD5r32gaC8Kn4QMbU9dr4mzebeVvn+3jzGzz-o1pfEtTmW4ArRbwjp38R-1PM9Av037ccbqMxxP806M-2n9uRS-0AFr-S5lv9+zDnwg1H-Z2z6NH9co1f9CNSWjN5u9Fv188cHHHyIdu-fL0SdnBUf27gwhNh2JsPXLl3scRbLyyn1WWY61TV2bTzBAZ2nbuxDUlbPT3rcVbZT01tJXSN2ldo3aq13shfLfW197SEi1msHEGsyjVG4YlyIBaFYgIg0jna52WQ8jPdVPsAvVl3W1gncO1CcmnBK3bku-XLxxVCA5h2TtrzeT29dVfeD2k1lPOt3hNf-JtyEcW3ZXzbcBAjt3V9bvYH3lcDPHX1NVBpduVpMnbKIyOQh3NL10CMvJEDyVD9JdwHsCAgnyICbtZg3pFWDeu2a0X7Okyw9BGAHUMxQRap2i9VbBcU58RXMVVQ0czJC0Dcc-Y83CtRNFRAXF7-XNBx0YKIzWKQMgtmzQAObfdQB9DwPR1S9-zWl0zgFxPLgDsZzUXwx1l8IS16DnTZbRSs2AhtQ4CkfLgIYonArNXSMrXP2BtdY3NADg8fA1YKH5NBU5W1B25VgUj8wTVgUf4OLZQJGNKqUc1YFMAmYMU95gw11TclgjWzECJudYONVBA6lw18u+UnVEDHXIgH0kGDcQh4xJCBQz+DDbBNULUMTE-TSBNDSEG0MrwPQ3ggDDIwxu1TDE0wsMrDQSTVMOLC2EglXHKlGhC0jfoPQBbrX12IBog8gy8MToBsxOhkAOnWhCkAOYwZCM-SknqD4AorU5Cy-LvWzV8QxAFttRXNkJU8RQ2hSKCINYIOuDSjZ-3dtSQt-wZDjfYgFZCSABY2ZAljakxWNbYNYwmANjLY2mIP+eUJcDHeOQQLU5dE2yr8Q1AsmcwIfXbx5Dc-Kyx+d1vQy1XNtvKtQlCF7KFxb85PPzyMC8fEwISCzA2gJX8MgyDwPNYAEbEJCrNNzz68YvQ8A9DCLC1xHgeTDINM1czSoKZCcNboJ7B7Q+zSTDfuWT0JDBpcP139RgxH24D8MDA3HM4QuNQv0iAFULjVNhXMIg1mwyc2n5Y1BMMzRvnC0KiCiwspXLdkvWz07C+g8IJHc9AwsKE4oJfsI788A5J2MDUnUwNqRhxfv3plzfcakJCSAwVDIC0g0VVX9YzPn3ZtnMfINjDVbKYMaDvPZFSGDZuUWxacB9CWxcdy-BzVmCFbdgOeDlbZYIcDxglYMLZPgmEOX0fgrwJECZHQEKdCWgQ4OOCjfPfyIALg6+GHCyvIgHuCA9CXxtgeHZT0pNvw2AV-DNg34PSNDbXtx7CbApax9DcA8IzaAOLIUPIijXeQKbCNwyUKudpQl51Ot5QoS2DDm4L31l0ZBNHm95xAn3ytCObW0PTJaItVW9DCQ4YNYj8A+cLGDD3RJwP8SfUr3ENyfTqC7kCJKmxe0IhOr2shDvJ5jzAKQFVWa9qwJ2jLt6fELzaCDwiMNcxjw4szjDcOB8KY1GnFMIUdVmU0ki9BfITy7sXwhtV7sdHadV4jf7EQG8wBIshyJDPUYLwTtB7eL2LU+I1zECjZIxMMXt2gbSONA2scSVO9i2ZoIZ8wvdf3fdN-YQLcjsuUSNE4Bw28Ozd3vKbwHVvvPSzpcwDb4KUhwfN0N29haEoxUDGIu5zOsK-HiMGCCosLnLc5zWKOz9vvESMnC+gdzj3c4gySKLc6DTcL9gyAxSLaN8kKu0+k-LWSE0FgTOczbpkI5nzfCBHOXzoC-XUN2RNyXfgOtcao21yAi5YXt1usrwsLnLCGKAdT5oJvQJ3BNKedN0iiG1EQFdC6-UyxTIW6Fv3AiplF6Wy8JI-0IXDAwi7XpFkghYFYNCvZ3wodF-JcL6AFxC415Y6nCfyUjGHRaI0jE1fO0SjdIlKORjg2VrxdoUWP0MFRVvTZEai4nAoOU90zAYOdC-I2v1V1K1Xby01brV6LB8a-f+0+jAHIn3xtfvJuyyjuvN9WzCUvMdHi9KQv6POUXpB6PTk+ojd1t8bwzQNadP-PmMyinI59UCwLPBHQlinvAGNLDFYu8Jbgr9ff3-9GAx3wRjCQo2LQdT-FAA-9-zeKOO4egJKL0ipUW2LyjtYiERLCRXBehNjD-P-0RjqTF6mtjkACEPDd+7DKL9gpVRAAVVHCGBnBp2SamK71vPEGmzov6VKMu43Ygw3JlPY8SLts0AU2LDVzYoaMti9nIOJQAQ4skNZj7rPyMCxAozd1k5t3LVXw4ZZJkEnJAYucOBipIiM2uokYgciuNU9WaOUjaZCpFrt6vbGMdjcYlyXxiS7QyLa9iYsaO7gyYuDzmDZ1Xuy0Cw4kyMciTSdWJg8LwzOCJhYWWBAC9kvZYwFoBWLMi0jx45KMnjpYV2Lg9945uMQgeo8YMbobtdDw3iYmCgWjjubZOMgYBqVW0vM4rH+JXpP6NijyRMAu+KbjD4p+Kn1U6fxypN6RHyMtDq4zmMZidvILxUF0uSILAjM4-6MGBRogt3Gie-Cmlz04Yi8n9jwYklV-pUYuaPKQmHbuKSDLjFIOuMpkTQSziZwykxRhyEszngSFgXV1Wca3OwMotXgkl2fZe4baMPAFDQ6JV923NXxjccIs6L7gLorWJwTJYwYEcd5fVAGLiUAfOLNiuE6215ozHaWMp56jRuEnRzwS8GRAcYq+Ke0qQIJzkEW-e+KgSZwtuJoT8faSMP4qucaLoSwYxPXF4+4wVjcRWE3BIGBoE-hylo2vHhMp4NokRMPAaLYRL2iewF5HESewSRMtcjojYJOitgvKN2DEEpEEcSW49RN2jNEgOLoFDEoejXgc1NeDMSLwNqCsSVVGxOejtA+xIbigTSZVUS1+EmIfZO4pOwEo9E-SORYdwzIz3DMgj6luZn1aTF68rI1W01gaY9aiM0efS7wFjwwxAE6DCzIhhPDlPM8Og0yQnYOacOkTuL09xfR4IESMwqiJDcg3X-w09m3dqPn10kr4I8C5EwCO8CAQ3wJNCVotpJ1i8E5xO7UzkmByKT6zRoB0T0AThItiSkm23ojDrJZBajqqbSxuTQItmN-VAXLGzdCUyLZL2COoumPZibQ+qLTVAU7cy9CWk4fR442Ew+k50c41xIDD3E8FgYCSE+SK+1l-Bu1MilkkKw1jj3KmMO4dIq+OKCJA5AAWV25OP02FFAorTqTxgNTT1ibo3Yxej83AfWiTTkgNyGceYS5J4DNPfML4DpE9wNkShA792eTgI15Mr9+EyXytjiU4JMbUHfQUMFSaUxPwhSXbGUJQCX-YLWE1YdSF2HtDLYyy5icbP3HR8EdPlJNSXEs91IcQUouIYSp4qhMGSWbMMJCt5MScE5sag2zUPBigwNKU5FlYNNcohVdKO58MgtJxE0Y4oBNgYsTJ5Oe5c0uOMGoSiV2PmdUrY1PaSio-WJKiRYxoP2CCPH7h9T2kjOXrALfabUW08-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-EsJL7Jd4sizKghZRv8aS-Er+L6Snjn7QmgzZDoKYORgoYpaSgtkV4irfEqXYLiIQt8ThuaRRdUBCzyP5LhC3bPcA5i5EoWVH0H1Vn5pBbiIwTBiPwuGSV8qTJOy3pM4rgKHJdjIsLXimsSQAii2bOJLfTaHR1K3it8laL9XBJJmA3pOkt0KsgN6UZLnSt6RZLTCkEr1LplQ4NeKXSo4EpKbSj4qU97SzUrfYnSlAB0LKg8MotlASlEwuJvSiwogjKBA5FsLULV0thK0AdktRBOS3FPJlbWXktytJSvgr+ChSobl4L04kgVjLBgQfxKJmCztmhDmuXegZCnZEsqrLyQ1YqBC5BWNQ8RuEZEs8QPSwEoSRuEGsoGB+0WFONDVS5UqkKkys5VXyFudMpELB6Cx0fQ-eAYtJLhizWmZKgXe9MBkA8uSXj10CxlgPBUgqZHlLdygXNQLtUkotrgpZC8oSt1Cg8CpLPsowoStIyyrPsKDC77MGlPS0OJgpbSk5KrNOWZBTJZc2QaVtYrVL8uOAoKjwrV5jQjEoXlTVVtm0o+2SVjeL1yxYiui1OfLjC5Hc1I2upsK9jheFiuNohFKKeV2EoKZ0tTk6QZDE8swLMINXJ9zAS69WTRyC2n1Ycy8vCpoLRSIirE53OWitL0JytlzU4WbekN0KKi4VyqKW4Ua1i8itXKMac75YMteVgFWIvy0+gPZmWzzSviuzimJNTitU+Ki+1E5BKps1QAYWO+SJhyWO+UgqF4SSuQA-yiuO0quotTl0rniheEMrqosLhMqKspAFy0fKwULrCgA3x2vg3C+vjYrZLIgBVAbOZKEPAx7awzSxqgeoGNA8QDEEAg+QH4ELRV2T5FsNb9U9KV9-y0OKgLvge4ucr2OAhzQlC3bxPXChoiqvGjSKl1HIqD+VCWMrZgOitwKGK-uIXkMC6RXq9BJPBlXQfLcKtlylopypqrrw8dXoR3Oa6j5pDK9xDN8mq4aUS86CxbnY5vK9wFf5tQmsBz9NjEQviVyWdCvWidjZiqkhl0TCtrgHiuTUTU+quhz0riK9GOfzSHTuXurrywn3skMC+gtpoSqsauuipqtdCiyIJb6v0r-qgStaqL9MAsaRb0UqpIKxcsmnqq-iRqr2BNMoTxorQakEPar6CzCJYrBqulHYr8RF1TnLLCltJ+4rin7jVCsMRmC6LbqgoG8rBLZSvEzdC84vLLb9aMvQADS+cohEHK4OyEzxSoCqIAUK9tmA4OLMmuwxoQt0rSA5UBkM2r1jQSR2r7JPatzZmQxAAXFyWWasZr2yliPQBN87NX1Q0gBKH5DWBWUuHKVM5MuCTli4gDSMlSvTIkLpyjbRh9mkvQMlwBgD+GwdqRagNwq1OCvl34SuSsoq5YAagM9qokSsu7jkiyhy4qPa6nj9hF4y4jSi-WYYA-hyWdzkFB2uMVVSpNHY3j2AC+MBLO9Y2J2pyAXa5yTdqFYlavl5eE6YwOR-ayPkaKlM5WKGqawlUHsdJgaYCggx7HbgXgK6hYHa4j1aexKBtDPkDNkcwU0w4geQNjhirQIJuswgW6mLk8rw6jusPQxVLuoTM7DeourrCNM6uZAyizSOurquP4msglK+fJpIGZYPMK8Vw66kJNt6iphEL3qrAqFShuEDLUpFiKWVaMny44BfL8XDYlaMIKmALDLJxaCutsMivEF-L4yxSriLr47uHPU1Kt5U0r18tksJYLKsCoWA8iEBsLKDuH81QSBS5LPdT6OdqtFKhMx2vjrwKzBvQqP6spWQbBVGOu5rAKw1OIB+atCqILVQpavVC2aBkOIb9CmCuhCJak6ClrdQmWqcFx5eWoQbFamvMIa6GtkKRgCgB-R+QSIffSUgH9I0O00dauID1q4gDWsK9AGk6oEtr4D2EobbAvmoPhUKjtiwL6GvaWWroQlhq5cxauIA4a0gLhu2reGg8H4amGkUL0KZTQxtEbxGoGEkahgRXBkagYORtXroQpRoEsOLY-2Yaf6uCoFCyCiKpOg1QCerH4GYBMgAaSGvbgSrgM-4AlB+6-fVQhm6uJqTpkRFxspY8QxWpvqSQ1gWYizQziJtq5abRtDUaGgxpEb5jBhvJrG1CxpQAz6iOmJM-gqxuIAbGvUN2qsQ+goSbxypJqFMz4hRqIBAmzsq6aiAHpp4a+m8wwGbFa2VlDZ4G-ujCb3ygtgFDqGNNOUaxm9AAmb0A6PzWauXTmvPT7ariQfqonbfPllFo6lIPAr65hNkgrmpPQOEPFaX01iea39VE8sWclkgq3itUqXzM2NIRsVXm2j3M8iSj5ptgs2ZBVzZfmykv+bybKj3rBbFG8qQqdPWSXQq4W3woBbA2JFgCE3m8FuqbEPfBQQbYWjQvhahuYvVp1S9Ea02EkipTKxM13Leulg5DEQsjYIWpSHskaKGWqWQMmBIz+bONaprbrF2epsQAWmxAHtha6lSC0M0m9tg6BdJfYDircQxeqfLNLBaFhTz47FsFRiI6kQoEWa+0rcrZMn0pelXCXCWuKoy24uKLRqpNKllni45FNb+WtYoRbpYMb1wCc0yJRo4lCxYnP8t+SjndbkQZ+phzMSvJCxc-Pb7NX5ji3Dm5EI2q6RukAqSWlNKtPc0pDbcA8NvX5IlAeFmlbpMiIdag23KSllHVaETE56Pc0uuFC2o20LaA2jVqdbu4fOrc1hXRqX8qoiNOvBhJaWSokTkirwMacBi2tuU4G21OqFkW25ctK5VW8lvrE85TV0ttKg5q2ja8raNvrkPZVttpaV3bPwUrN0EEvHapZadrUQXZANvcB52n2XQTHWobjmtOXEiKnaVrb7NnaW4TaxQA22zz3kroGrtsWIT2i2Q2Ut22dqHb8bbdl3YT3PYDXrVgbVr8VzAtTnwrppQ8VwlQOwGWDq7m+io+qUWL6qTS8uX6qT5-qjyv1aWqiovBrwAAbj4qSKvfjwKWgJGo30UatqoHJx5dBrmy3QVipxrHk2r3xrFiUEuJrTW0msaaljBwqpqaal0zprQyhmqNbBgJmp+49WqX0uK+O8cvjLdMihpDK7S9AGVrc2VWtE7yylRuXKDaxEtcKja84rNqJOk0OtrbalUt06UuG2qKr9gddr2UJ20NtgBmrE+uvIXZKzrfTjge5s6r92gHOxhPHCztpTP08Q1fyVCxay3agynokFb7S5qydKurUJDdKQusTpOqn2u8o2UP25qz86WiqTt5rlPPKw-L7SvKzFauOJZ3UaCq0WCc7msv2DNICsOUlgFu266QzhCgKcMnb0AFLq-r0AILtq7i-F2TFb0KVTubpZZOUqy6cIISzyqCqgxDy6pKEpxkAynGQAqcZAOLBK7n224ByBegXTmkC9nF2VS7kAervuZr4dLqzLnC1ruasOumOUfRY1HrqnLvC6H24ijO80tmkw9OkAJKonGrq6FsGinhxJZZOsrI6CO25vs7YOrAoGru-SVtLy-6WGLpSl-WSBgwQIfcBqByWa7rBbluiEzyRb41Fuk6KNTqqQAxWn5EKBrYD+A1cXkSgwh7RCsHtEKB1TTvzCtGxLoQ8KFbhMpq1y0dwGLA4ZMBm7jQGs2x7uqu7vDlQkR7p49nuuzorLyOogo+7CEr7v1trqFvLvqc6-BoQaXlBugW6eStOPVY46nIHJYRe6J1D1mGeHXASYezNw80Se9jrx6Ce6krjVVe-yqPLvy0pOCrEbYcrCqaOsIqgNcgC6Fet3rQKi+tG6jKrD0zganpNAa5GzCBtbdb63HrvgFdgjg0sGcAs07nY9JIB9u3rpD6J6ALsZCdeyWjFaQm1AFCqXNU3unTEALyAt6iQF2TetIQG3vFAfrR8Cm6neyYG9lXepAzt1JCZuqyq-ejxkD66uxw2usyQr1Ip6OXV9qq7LO-eq+kOqGzpb7oO17vRr3uvG3c7SA8fy86LSnzpWtrS-zsJ61+cLuC6xrULthLwulkqi7vO8bx3a5e+LrGZw+4V2x6Z2prvW60uzrrdBWS0WGb7l8iIv+ZoisvVSL5CceS5begEo0QMvG7oGYEXYsuzFL1+6rrF6Vu132379e4gBj6SAOYq26jaiZ08LLgyVuhCEQ60z7roeVCEVbegaewQgqwbdLhAjwMoG3IWoSEAGAcq6EKRsYravuUa3nGvr0z6+-utPbqRXSqQBMe1a3f7zPJtK-62Gv-s272uwAb37YOW-WwHg+g7onFa4F9qctpw0lMT6LOh7oa75umOUW6kANbu-6ESzJBtgABqeG3aduwEqEs2B3AZWKQHM5ugLn2hvp4GErAh0x76erArp76KnqonRaB9ntPLOerGs+6E+71T56++rcIH6pkPBul7c2CgbkGowUhtTSY6osmqbN+1wayJ1ehQYo9X+tvpEGhB4IajBo+4ALQA4+zLSsHr4GJq96cmxmGx6EuFJsMQ0myAbu5B6xUGyahBPATa6me5JswHtnZQbPT8whzX-ae2g8wbbbOv2ubboa+aIwkMYl7tMGOq62xvrQ6ud2i7FrPttH6EurXqVVYpdCCn6VEBtrC6NiBtvn612i5oSsCgcpGoCZSwYaWANC5SvJydG5T3brG24yjqGMurYYHaCgTmuBLFiSod0qG20QcylhbVxt8rthnfsQA5iiYaNrqA3boXhimlQbtqt3PQO7bKA3d2+TEpRYeZ6yeffiIKNhl4SDrmhhzutsuejuIpYrB77rfTNLDodkhThspk2LCQljkTrhCvEp44P2K8xnqnnRgTWQMgjYcio3uAkcjZHByocLq6BUTkuHEADYatUXh7TWUqT0DYk7zlPG+pJ12W1bvbLY1ZruIozHZEsia5YVkfZG0AufnZamaodo17leqhrEHuR54ZuHuqSIfQBoh+PqnSlrFUDyb1zLbnRGO6-EY+44oMoDqH3AG0DRhZQNJu-QiRvUfWQ4oIocv0mirTrJDTmpEZu6NOYVtLK8WcfsQbVFYQtJ6AhgxGdHRRaWAT59iyDnpg2eN8AX7VgSocQ5PYgMf8r0+SWjpGq6ugeDiO2hCnE7Cq6UbWG-KqPpuGgkc5CaA1hmvON7VR5Qw0NcgEoEoQ-fHurSa6pfcEVwQQSSknqS+EBD+HkmtKtSa10wPIyaUoZEFtG0ABkfyrdjCoa+HqRGMZ+G4xrdjDHf2hBprF0+EEcBHS63erqGA6iZFBG2e8Edub4R0hOLGpIajrVHYRtxHnGTtWTtnHeeqYdrhjhn4aQA6C08eRBykBvmnHUOdwHz4RaRMZXGRWsVpVHRW+0czHORlABzHkx-yt-77KksZiG1RuIYrGeWLGxrHRQWKX30QQBuFhBYpVAdrA8QVGXBg7enIZ244xlIcNHyQeCYbGl69AEHHSh4cfJ7phrl1mGokBAvfDIOxWU76WhuDoHiTtIOqoriC-cc7cGWygukMISuaKjqD5O3N-VG6fwbRL9iSidwD1SmZF6G1+z0Z-Lhm6gd+y5CiQc-K4Ku4oknqRaiYmQi69MpbhhaimvV7lJl+olsyk1coUnjEpB1a7kStRq67P-d4fOauBqQLLbHhCEXqHaEpoY3G3uogv9J+kqZG8cWJ27r7yA4N0YhGLB7nphHeeniaDpC2xrljJqmlhFB60fXdrELBiN3hZsmHC8cX7cAtKcPRK27juk6FCnB0W7CpuyRuGSp5yQOGyRkCuWbyWT+oV6iyzz2JaOyw-uhbhSyspdUcyt8DzKxUJqfh1MR8KHQbxndsr0HIBassm7j4N3iWs5vES0LalOoRtYbdezWqMjoQnybTjNkb5XxZxOAaZFbToKyaNqbJzwtKbBjLsu06Km-Tp8KraziMQr7J9Qdrhk2nVsWq9pGobTaYbDvozsyurNv6SwRrydT1B+qWVTbV+sBvD7HCF1upFhhw8FBnnJMYZURIZrSEmGLiTNoCooe5-tUdJpKVHEqMwwKpNKvimQPTk6WzSyeSSdAYvunnJMgdQxEvOqcUnV1LGeQBYZ34oVGfx+luvg6ZgkozH8qy2s4GspnVu4E92imaMmoksfq17Kg7gUpnFpt1pOlf62Xx6DuRA6fgqyhvmzRm9yxmDvbh2giwZbmdGWfMmIkPqy+bFNXNml80jZpSpQNphBoNn6Ou6YGsuZ0mevH0AFmbOGkAe2eIpNZhadv0b62-TmKWZ5EpFm4KwSx31nZrl3+HD4EKZf65JkgEAmSAb2ZdmfuD2b5mErL2f9mcHPHvyqqm0OeIBw5n-oTnSplSYN6bEFTqkGlIT2aNrI545oUGQB2IYZD4hhVsSHfWiWfMm8Jq020Mt0pEA6B0q6sCBgoYbKuIm0gUiYdGuavucqbDujBP-aSZigx+GRpQwYZ7eRPvxuq3qn6baGQ6ncY4nsag8d57aaceZKJV+Fjm9aaORpyApV+cxk6R3qCgW3n-W2op4xmi6WCVZLZofoDmRGMkevnRZkafdHkw6ppHnxgPZl9GxJutW5FUzZECQmbhQWHpq9elMaiGwJtACv8iAcNoA00x3Rt7Y6m5+bhTEK9eckiWON3mxHEygoCY9lgGRp4xFe7Zq8HPRtBZ9HRJ2yaho+RZlrBDpgBKb2AAC8ttcn0F4VXimHEQUFoWiF3hNth3qaSc-nSF+XR-n6QTBf+AAFo4FNVuFhYpGTeZvaRVaCLLMmQWePI5kwh4UF5qanL4b42nmSiFlvuUACtluqbNF6+Yz5OF5KalHuBX+YEWhmwBZDVRFsTh65yZyRdVmKUGRcS88kO8auyfqNRYoWyMAGqTSWFvRe0XPRu8YAKOFnjC4WSFw6bRs+Fv+cEXgYcxYbVLF9wGsWAZ5IocWnpqVGDHHCRvkynVgN+b6BxxvgeQ4nx1EDiXABIdrdmUpvrscXB0YOYArPRnMclG-R8QPCXTFoRYGARFkJasWilhJaUy6+xYiyWcllzNgBjxwt3XGp5vCUsZXOy+rnmtxgi0oddxnCE4ncawnwrtnmgjqmQ87ECDPLZIAZZW8BucUaHpLF3Om6WH53gb6Xm+fJbfB2uSWggXUx7ObsWsUSWjJinwwWdfK29cyejbJZ+Sbjm2Z1VP6tyajkoFpRZvqfYKsR0afJjhpieYo6k2w5YStelslNTL6ERvhF0oAxG35meRmBeVGwFkuKBWEFx0cHnzp1nNUEPhr1vAC-WmgJemGRK-nGjvWxxFX0GW76e76iCxZZhqqVzGKXnLBlea7cNIwJIxFyVheO2XqmzedzZvvQxbqXjpMlYz5hkylYoFKWg4pSL9baNsW6E2r5YGKpZD+eWHHlpT3KmtIYqdQbzGsqe1XE5z5cOHa4E+ZJXxU+gSI5YKqOZznup6-tEKlm75pWajbOud9qNu-OesmfZlE2un64s-IBgr84AEcHBQHnKGZAe5kGB7yWelk-kn51nz2BiiJ7pG4HmheXyJUXFjmoXP5eyOjWw+ZNeYXo1wtmDXVgUNdzYU1xeVTrj4QUBPhJOV2M17E151sS80RrldmG01hYBjXu4fldNnv44lbLXI2XNeB7jVmudFXLkUlZZFqa8tZRmmeW+SnHwOfWY2J0+f2AbWwI8dfDHGYNJdOXkQDtZHhEOAoC7XCWPJYnW3wftfT5V1sUZoWpeoPmnWikbNcCHG1+dZnHF1qdeXWh1uKf-zj16ce3WF16mrPXU1wYkcHYSaoAd0mQaEaLWF5MtazrPB6Oq7YCWXOu-WiMPID-XS199cXk8FkDcZ4aoMuyMVBepwYEb5VMdbBWiC0tcjWyVLDaTXJ1lRELWZ1h9bnXcpTNZLXz1keH9WC1rNc-li1x9mo25+CtYTXMOGtaI3pZ4ldI2ql8jY3mON1tZUQzV+9Zo2penteE3+14TYPXeeEdcrWnF1Ec42bIsLn7X+pycB42PRvjelhnFmOOMrVbBZWk2YG3OoXFi6yTd02tptTcHoeOAzeQ29MC9cXkr1ljmnXZ1ptZp5l1kMZ7B91wtkQ5HBk9bvW91u9es2F5HzefXT1wDbD7L1lJbc2l1ndZXXGnbzal79q2+RfGAtrMi-X1gKDZg2ktsLeA2u2XYiFUbNpED95HB4zeA72OKtahG4a0VB9rpq4yrw7vaxccI6PEnjnK2AR1nu3LwoFzaWW4136bxzlN2KaG8aK-rdbhaNhBoWV+1-TeHXbNyv0G2eKo-Nk20NhOuMrk67mlORROf2GW3KKiXtoKpe4zaoE1t0IIOQBKo5DG3LNjrazI+eUd0cGe1+8m426tsiuq2Jpdtbu2Gqh7fDk2+PPRYS619batG67T7du3Ztgda34T4Ykbb5H+kohlk2+SNkwCCtsDcB2aOTraKAo61jZG3HGpAD3nEvA+dmAj5iTeBpuN5OrfGW4dHb2lMd7HbrWTkOHfvH8dpGoQ3cttDZ7WqBL7afQydkFBJGcgc7ZQ3R3TdZqBrt9EX+3C3SrefrpFZ1ak3nt+Gte2BB97cX8-ty-lmGQdpgV+3lor7aG3C09tbl2CRvJAh33uKHe2aYd1rjJ3ld8JJlo+uoHsJYw1lACJ2hwEnZ4xe1wdck2vtqnab4LdkMCt2Q4KTdx2Zd9bbnqRaC+e7g17VDBN3udolZl2XvCTaZ321lnbb52d24ku2pey