From 033e6b6eb17679a6f2b4ef0cf7d2de3ff3c29ea7 Mon Sep 17 00:00:00 2001 From: happex <110610727+okayhappex@users.noreply.github.com> Date: Wed, 13 Dec 2023 22:02:35 +0100 Subject: [PATCH] Initial commit --- .gitattributes | 2 + .gitignore | 155 +++++++++++ LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++ assets/banner.png | Bin 0 -> 50013 bytes assets/base.png | Bin 0 -> 99853 bytes assets/logo.png | Bin 0 -> 34911 bytes botinfos.py | 2 + embeds.py | 207 ++++++++++++++ images.py | 47 ++++ main.py | 383 ++++++++++++++++++++++++++ requirments.txt | Bin 0 -> 450 bytes utils.py | 283 +++++++++++++++++++ 12 files changed, 1753 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 assets/banner.png create mode 100644 assets/base.png create mode 100644 assets/logo.png create mode 100644 botinfos.py create mode 100644 embeds.py create mode 100644 images.py create mode 100644 main.py create mode 100644 requirments.txt create mode 100644 utils.py diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d859847 --- /dev/null +++ b/.gitignore @@ -0,0 +1,155 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintainted in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# VSCode settings +.vscode/ \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e62ec04 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ +GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/assets/banner.png b/assets/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..fb926dd5acdadf167b94bc50c8e2ec73ddfcf04b GIT binary patch literal 50013 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 literal 0 HcmV?d00001 diff --git a/assets/base.png b/assets/base.png new file mode 100644 index 0000000000000000000000000000000000000000..0bceff6b149170db4710b75d86b21c7d444942cc GIT binary patch literal 99853 zcmb@u2{@K-*FLI}DajO)WL7fIWF9hPPC}A-DDxCjGLv~Gl{twL63URwNkXN;n1m(? z5tV)3zwi6M|L=Rhz4vkK;XVAk_4K&i_jRpnt#h5{xt=&91FfA@tW+cywZu1j^%&?v8%89D(j`9=`H{iv0h)Lmq!7UKZh3 zqT=|^|0(!5ILVu69Qn_;;%|!lE`EMq@**PV&YcrJCn4;rETpz{rwdA`TzB<|F|Uw`+xl!FMl7m ze}0LBy@;cmBe5>NB4WZ~|Lrav?B)Gj{oEY??Z#Ez{Qm6~H&^0GZ5GS9S3HFE>s+$uURoe|rVX zLHvW4t&gvxX^@wrBEN~FucyC{z2kq4f&aXqx{sr+pQD44xTv^3Pfke!T-ouj>+n5?+87m^Z}5|@^e6O$B^k&}`Y{nyX@^N;`IM@&8a?Olk+QWF2yJOB4<|NHI#7u)>b zm+OB$>VIF>|DQJ6>%W{UVwe9pu*Cl2AF#g?|80Nqn!KvNpNprDl8ddEmt&v;@wWf< z(!V{{|Mwt7viNTi_^*2lwDtNQv4=Oy{}U&kKBk_YZc6I59s#xrBLDvK|J_agEA{-d zw#YsIC1yqbmAjO_kEL~xY`K)IqoHaVc=gMLpbXQQ+`q>*T2@S&O+A-s^lJmSIXG^{ zQgG7OcSywjlWni;4iAr!Vs*40? z=CiM+mo>P&WZ5W4w^GEkBsol zI!iH0$w+M;wbR2cl0AKW5p6cwpK{!#_kIaDtX4?Nl}dqIK2ofD@uHHS{HdX?A3EOy z74BNz#%-nOmZtPN7?qno|Ga|l;h{?1-gn=9r67w~mTI)3X|~>9ez3F~y910=cv)3Bd0O_aU_5Rq|7e}% zzIrV$wip{xifG$8sVr?C+W1*M{tv4g#9bE_a^fcsWa>INI~U)*OKW*Mz@W=dj<{fi zYR}A%lB$6dTf4pSxZi`DjVfNI^v(Dx^04EveqU6UO^U#3sukwc{tDntxsa^D;7gh1 z*j6LR65aUzT$~1dz4GR1H4fSWF+P$9ReYBd<&xTSC7e@obK|aFWjm1h#9`O!v4~13 zyK32ki(9sIdr!)Ks~ITko(_BWHQKD=TKbv*3pE#goK?WikFqpVUMzOifzJj!NZGpE zW|!J#eDGZrPg^z8?jZiB-~PAVZzmmv@v(JqAm!%f#=F`(I!G(c4&j>E z@`NMY_|nzYH9C1R{`c?SczdA{MMOk|i-*S%S+*M=Gl2VXP*uB8}QH%7F=#(q9zNPXrB`G@%8ndy>^a^pWpda_loPI8o{pa zZttnb+pQk>QKqM-BW|7}1pE6nk00NiC35f* zpkWXCKsSDV7n|&*2=ZNzXO{*?hK7c|_j_JsIQy!SE~FA`JoUQT-b?;kgWo*;5iPB$ z#lV!z%&3ip*8P21LPy`4D^WT>yV@4Eja*boiKg6?s@(K)LIQQ=sfSE5D&}0dQZ!I_q`0jqXelK-``jCq z_0dM(xvyWhcYEU`9S{=g{QYaG(5%AwLV{BME@ok?N4Vu=FInnnTM`nc`0XR7LlvoZ z?3n-a`O~MzgT-263JTP58e8!I@txuRpI;T;yXW_+J3tO6=I76VtFqo(_4W1VK7WoF zm{qs5WW|pfo0x=Oxx$K|;+l6*Kbh;DkT;5>Xn(_xpVDj>bTfwxFsYQ_|hqN@7|5~g>ftiF(IC(7j3+}XpvozV}^%^ zm;1g3EKww3K^d8u?R(RBdwP3wC2AsUS*)4@>Bh#!SlHR4hvzj8Fos(Rmo2(tyPrDM za^w$qvqi_mcuzjsvKFGGdpCr>T(zZEa7UeGVhnrmT+P`*H%?lLNo=f(yL;*9cq?Ho zM@L?1_qQ6#hgqoYCR#4cEi9C6B(&K)I)36*)Q=xOEUqR0`SVBC=L5xqhY#n^I@Rv^ zJW|y?RC;uJTvK;jPe9Ogq72dvWlZ~)QWMH%>*TXl%}l|~)_0vFZCOw(WUm>>ve7hH3FABd ztcUdKQQwZtvaq_1WI0$-;LsuOKPw}}1qG853!Iz$6f`)Q%+`ThHdYt9A3Y+$Sx2g* zCfg?MF&evYVd1=ay$3S<(yNo6g|~0-40yQDpo{@u*jRjFW0CoBND-+$Po6wRa;bJ5 z=5rf+u-nzuRp&U*+MkP8l|$J*TYm9<`t(UuRFnjX0gKr)<0B~}(>~>8(-yvctxKjQ zOz7l&4n@UN&&5`L{(PS(Gp=&(oJ@3d^z(P`cHmj--|0`JXJ&3s?p9~cIsC0*TRf8x z{nefyfeL{O&8y#)H++S+e?BXG8(efA5P1bs!fW} z5B$B@-6l$ntjS3qM@vD9y*kjVnsZuQiNw6dfl}J-wJ1Mn%)75gkaua=6=LnXlM0KA zw@K&iB;iQaPRYxQ-+jnz^4Z~qj*tC$+gn?=ZQJ&`HB=do$C2J!FzE8gn+*wdnj(o? zD{1m}{djoybYT^+_T-hbcXR~WP)v}`ZADqUKJ?JttFLcIOerhx&y(@|t47C0+~3!_ zk>?W=h9iwQETYuujN!#t_yMI2!S(g^xwEW^Wa#xIC%Lvf{x+a`XOurbA|xITGQ;4N_WJ@s_yODZaM;P^|niQ@F7rqU%OCE2;TQ6t0z`%FxTyFWMTO)l*@ ze$_~bn-SqDFE4L&;zSGszd=D=-R}1Gb_8BHs>Y4yvl#J#rF=A^u~Axis|*5|mJ zmWPf4egHBxiTHT-j`EN`%@R84)hAS6P*Wp5f5tSsFREB8*~DZM8NjbHGUU#kJ6+h< z>I)kIjJtRDud~P|sr&j$T>QI~KRn>X5`FHr5+xobPue}a(~fSL^{t!qmv{BML|T7~ zCu;4c+V0Uf!{qk%UR=w-!s>K=>mMP5d?o$Rn9M^bkXSiU=FBLQ08yIOKUK&Ee&@I# zBqFlwVyiM|oA-|oI)48Cg|)Q|_V)G%1Oy%guk^4PEH%{Vo zvxa`0nX&D^B1Idgu{NClH*y;}4N5n_gDr8OdJQjz_vgtJ7Zz@5{nhV@9iXgzlMo)h z^~I}KcHK$)C|9ozNIV0)ysC8JpS`7FlO<`k-bLh-JB`t|tnk#%&ivLPi<(V;*FR&0 z)jT~#h-YhKnD=b`BYow{6|av^_gp=Ejs}Izu9{_LW=3Im(!@fy*8U5Tr+>d^zIpSe ziYQBDr(KvqnL2QWpZqnB0c}whjbq0c46eyXVG+!4o4x)TKzw(T#+R<0X1iVWBd6M_ zmW^)_op!(U@_&VfPs;j!q)uX!3%`DyoxOsUD#~kl&iKQJ4>pVMJ9SbMwYcaMR$d&t zSyeTwGeX%@LLH?>Lh^7d>CPSD7b7F>pI6=kf*4v_=;Jrr+jIY2>sGcKxULB7M;qTM zd5kem!|U(wAk@aTHdSgG8nud-cGF#n;k`9j0pk7B%6}uC*yu>_CovV+eOwC|5@)u! zs%jTa%(l(7%PKL*K%?Q^!eJUv>S{WlMz+nLo|{ao667>&j|ikBDynjN@4kJSuC51h zuB1PYh|*HnxVZ^_Gjgc2Tx{LkXf?04+wSpTp3kMuGEjk?bZc0{=JYW8O{Z;0S!;h5 zLX-b&thUel{rI`l#OZUu!*U-kMa6w5PG6{-oPJyDyvsUhW;cNltgBXQMtJDsY>?~- z%<1VFV|lx)Zp1o|vG+U&tqP**?{b;))YtlnBM3VUuEJaVX^LOw=T+6!w~>*Pdrw?g zwHGObkmB}VSf(Q*BjaF-U%a*uq9vNC!G%WR z%h*F^L&X)ww{PDDI-Y;@^v}Ni`@7fHWD{@i5BiX5af05PO)IW;&Y_K&4tS0#YHM&a zJ3@oxrit|W^PU>PBS($|@+2CRO=mvqX96O%5zlq8Lex$AG(I03+>+%u{c(f9bAV<9 z!1%mk=jX>L*k?EMB(v7Qi$sDdy?#76o;l{{>T3JKDmNPqai(cvBL1Go#;~%o8l5_o zh@+%uV8BI7@mwOdZ|3nx%g;IsZdvoJs4 zqo+!1Ki_#4-?>9`v2{NX(b`h}WPztuLMCAz%>7dx4~e}1t*x&g2drH;tT zVxr!)Yf1Z8Z?8_%>iGGboE&tXYUl!w_ak!KC?3tvyMB37OMdv=x5#&2|Gt>Lj)dOy zg3m}hAsB@xF3&yy#9R;a~GbIz#+iqG01#vU1U$6)&q*HpUWR0ddaGh9oG!B z&W3i{iSZIAOtFN5SHj7H30=sfERA&)GgoTt6B+vn=8Y>FTsoH{Wmq*n{X+Sj8ap?U z$Ss3jgqI232vFtXtn%g_K%?;F_?|g!SGsml%G@A4TDAGp^G7}w{mkpRcWz;PXT?k1 zg(|a(Kac6yBE9ksO|WJ6ZBLpG%&&TRX8uo|ixRWmp}6aRhSCLqj!gUR?@V2d@T>{qb8fCQF-*V5Ctsh#EtDwNe`3nVvl@zW~SMr z{+$?rSJ|-KXM5_H_T}evJ5coyRy(Grr%6=$G>Qw24y2hGeq9Xw{-t)H2qA$0OADcH zSK&(!vt>bA!RFhD#$x{!mYzy@k62JhN=p|3m9Qtz9-~t#dHPYN_18{>Iw}9MT#`CU zMZnj$QQ4<2?m2es7*cJ{_3LDPHTRx|CtL^&WC>ks-+vd8h}_@Sg(Cw1Mt{dWvdKgs z)9-Y8-wbjOdQbIJr}nY#-MfA7Nv^AMzGSWIFRPHLe?<;R$DO>iC-c$ag(mg<{5Lr4 zCG3tL9;8GLmT8LXB37BP6Q0+=rFi!q!}035^6{h7+MmA`B6UD1njRj)NaSc_YieqM z*F>eInPetT2{V8C{Mj3YV0`J6g+<)x=%~d$X3_KxT&1b`s36m@>;qtpfQO16{Vd3K zh(k1xK^phW1*6++RCIKDD-%=Kd=#-bb8~Z(*IIurOe6yup=AL8W>X5usZS=6aK3c^ zzBCT`)3-TxfSyLy)=4THDg)VU-G!y4+l7RLmM1F>o-TMctToI(gu~P=jqd? zN|8P{AX=2h!H#@AzGBKhhPuxa5)yb!&xO#pER%LmPI4Grl?}tWlovz%ZVe*=L8Dgq zXm0L+;bj3HdPj<4G!?WoF+q9cq7q_ST3W^@PB1eEQf{eud0A#6gyH8&T~A zTgeg=SCb1RcB(xs=0uZ2L-XTPYglgk@UNxW`7kR%rll8@p+`lRT)SBGuXfxC?M~iL ztSncmwpw_^7vJ7TpnC3lPAIW&;bDq5wz5jt>(LMve44Id%!5ranDOh^ui;7Yv;x`O zoSIy8J1yo$dv$H9p1Zf&jesFM*^Ys-5 zoQIWQ26}~#KAo~*RpIPoo18xTPM$moQY5P6reavG`kQn^rMRQn!izsoXX>J*^+89C zYYxd~+Ohyf0Yp-YvlqGb_V-8iI)v+%5?`hQiFq;faijv7RPxto$Rf6&U*EH5Pk8VS zT0KLH!JH)XXg;^wm>$GGzX!DG?G_ z)&}w{M+-|IRoy-Gy>(7|<0xp-w!b)2hlYtFO3lV1tL7ERAzsZk9FgyBBnA{B@T{yF;FJ@RlMxtp z==0VFlP~hzd>i-TK)0GeCf_N?-H94QXMA4I$kGspCXM&#-1&*X>7BZy=|2?JzU>Hl zlwh4#YH~1Hkd>XiYks)Q`1oC>lABL`g~4ay?MJhTiAcP(5Lr;gaA{F|15jRj$TfD`D( z=YDg=+*n@rQ&^uXZuorX;oWl!*1x~UD1V@{?)d)mR>d9q$hDm@?cN>x_M9*_rUMTK zVlD<)>Z-i|<+5*nvTQ8-_iJ&`(*BlnwqUw_`!>+J%c$)I6rr`*(7(=rT<_=0@{gQ8 zz5jSIK))(uO=JmwE)u+7NogtgukUuO;b`GOn`HzH9y`GJBA;^)X-vPihThUER5<&!o-nSj7b`eJm_1i+LvW-gabgFboWCack>- z+`#0Yt9Uy)Qc=%w1=Vzk!I?Es!r*v7&32;7fF(Yjl`i46yoQKfl?fubSWZa;1>@Yr z1sQ{Hx=j0hyr@XG0-b?aVH%BzxR;#}-Rtle`7n0n^9VN}Kam@Dh%}`bxzipErU)Ax zG;Z4by8%8e3j3_b*A57WoQ);;4xq}$%gbxJMctA!wS9DX`JN3qL(S_w)MVC|6hi-o z5QGG%R!~xFV+$8!h)xIO4X$6bPY;~{r1FC-d-bo**c+qNAFnXu1pShmn=6{v-?Siq z&A`Yf(T#-^NWRU6HZwDmAl``BNKaR91zT+^oj1#KDCFCy+^q*&ourvdP2#riV4BoY zUZ(>+opkN+x%UJa#hI#YQ)f9ZLFYaxKpMN}?D9m}jT`T2lp@Vz6$SYp)(Oq4s7o{Z zTx+?>&gPJyF`p*5uyd=)>fW<|H;{n}KmzRBw-5SGMqs=K7f{ISd#(%@S1L}c77tRe zYJ?i^W-FOCk<{i;1{F(0K2i99DF~7uw9|7R@rX8+!$&nYzqoN*wyEkaBT0IW?hpCC z1+*ST{(y`#X*YH)X}|KbLw(yWfzYz~`nC>Yl9sJ4XO^JF;|lU!q+7k&57Z_Cq8x1~ zS{S^%`_Okpo86llM-*3reQ#O1w(vZX+G5-J;NUwqAN_9P;O!n9Q59rTFB>j=@PKuf z!gms=3*Q=N*?)gJ(OT3s@rYXW1^B$Y{-3#Lo0Y%5wxgtpQVTo3(9Ep-cQHBj`gKA! zzzG};c;}7|uS`JN&IwJbkZfCPGN3=z*UikH6COo5zmbUh%OG-l&i&6LEDX)TxibF}0qAb)0 zL`3pe#B@td1g#oq&yD#rUl01YXWZAV_RaUtr#G*hP}0qKTUuJ$fIg`@c6PvrcyX=K^NfA}S>^?#d;VbRPKU884LZ| z%E}7m>e%S0)oAeN+XoIDSo@MMb8_1z*ZU8>=|IcH=}9l-(gbZK^8h%az#N0aX%iHYy)B!676vRt0_-w0*3YFkZhrL)-HYT@7AU-Ge(-%PX>%*bRhECGXqw=lxNy%HP5Swix%l`W%0QH z1?lT`^%^g>ZsR(=8mLF;?I9oqeWsDi!72N|AEr=-kJ#(O;GV#@fFrOD{o{{}KP1)T zQLoOIKBy-e6z#OPBO>C!Cy?bppnyPgid9ur-JS8wQ$CIFx88P0)sESG~){K5`8gJ;&hsLg_R7ONaMZLajyA5JTP>XhneuWVv8g-x_ z!}4}fYOFNDp|E!JIf$E@nm)f1ObQYtoQ}=GFqUlogPnNp9P6x??9CDLd+SjdSyVf- z90%XM%QHHt_hc3A4(?Erb?1fs2lwW>1J;Mk9-e3eHo}H$uC8Jin2G3`P(HEo7R<(# zyu6@NhU$(3uFO{{d>XB2!vPrf|N8ZdV5_bjmCj4N(v7f(H1VC{n2pnz#RI?c0#dDe z;StbArlDQ2u&`*$?z(MusM750)mc_!FN!U38sVYqWucGJw6z}_I?6*2>~t%Z4~gV; zgE#lLrX>T_u5=0rb#2!b&j*rfp-eryb~uK}tP#7ECa>j#?$SMa)EgC%l0BQ1nv6Jf zP{Rnx3HkX}MFj|TLV#mKodbZXXU9T?tUjFRta0o!;T0G}2mkQg!bhFgU=eh5C>7Xu zow}rLqsdk`dwCKitW+^v#Hv9>g4W>+Pwego`3e^1sKfxjwA5sT@M?1-z!Oote4)(X z+T|U7C`1saZ0Jpg_VKPiQXg$92I*`BwUywqAmNsqqE!c7v%_qg-nY|k1p_sL*aF41 zt+6|-dFkT{I*u37@3wJLU*mFI1V@467xcpo)v~CF%L=IkaG*)Aa$vT2OBiSeD@t`; z(;`)BcDz$6Bax4>XqTHnra*ZcbMLz5IU5qESBh#JA*m`o^@ucx-Vl2riBTAQq7PKK z-f-!%!;p@gy`Rl76uZs!s?96MkJTRHG>)Sxm&-q!KB%$hbkTc)iVXU}bEo;IB|-Ok ze~Q%jl>COY+Z)Qx3oCIJYLh5)Nvs*sV}f63@V}bDK$VDyZ;(1tHBx-<9;1bY1&I@l ze)W05H{|V8cWnmzD|>}h1>2515!E?S`&yV@Z3+ZCr4D=I5r%9{sa!qp&s1V<3|j|D z$vKwPO8`Zl|2imY-o zboeF5WZ7B-DJ4#9Txp+*{Y*>uc})GuGy_;6ikcBeCnqA6OnK$hzk2&MfZ%OwYUmeQ zHaxDbzqApx87$Ha=le)c$A))JHnM3*_I0BG>(Da3z9t8P;|PuBYZ~|fq!F)P{DS}jB@le6z$qWiXcGK zt$p<929zw6GzE1Vn~$Q_P?v#bx8_iqojr4gkY0>VGob9FaRpAMlvm0hV9t)(%f{AW zpR5?24;B}A$Lrx3<=M5cToS%Fgcg@{o*h9V$=c7HG|52)V7UuiS?wFWv*qbweYqrQ z)tW>QD*u@`+|J)wOjj|A=h(uv`{DPKDBj7h0;WjOZ(4NY+S?@80VuDP=$9x)eWVxcAj z6?VmR=~oD0&+zv4R#USDo`LF4C)t(~J88p02GuR!RRmBbN5=E|q+{eRr8SQ6kR^R+ z8ChAiX+ef}Cg42qe&=3qi=HPuiI)l0^3aJp9iTx1H9XIrJtTbULB~50#1}{yB=Kh@ zyeW1>a}N~Um6^LmVs(jM`B(3($?%1Plr&k6)#$(o__gh%xp^#boV}ghRuF_NY-}Yo z&pql-KL2@x6xA9S&}qy(tCM_x$R%iVLtjdd6o;8rly;pxQ^yJdLwV!PzG zxpWf@0Ub&E4hJgUi|TsxNQF%&BRxF=m@~KmcBj`hjyvu&ek5d=w=?0Ro`sJ@sogjB z?xcSWuyyn08A0o&oV2WtrkDHEYKbzkVh5`e@+{Hqwrui#v1zj>!fAO0G=A*=vj_Y( zC>_FsrOksc{9*3XC*7NRJbX{p!gCnAp0!n03bMNrt%)cLJOnx;XYD!!{g}&NSEptz zK1$g75m<6A9ZI(>>w3=&STVgIAi8%R$b`%!~=0?^j7?NG2=6gRfu5 zLYoF5%=az$4opx^wH7Ihv^+m1Nt6x`UdzhL%4obfJb%}|n}&MlPFs-8AhAnLjQtx8 z%Gy^(PABJiwgefZ(NvtM>N@G!+{rE5bNx_u-~6a)#Y+N-{8(C=b+`(~KX7&I9Kv-x za&^7Bn_b=Ce`QuzAjFk2Y3$*-r86^#H*7BGm(=|HWMFtZFRv7(=j_SkSPpPX;bdYZ z=M?4q(rl7OZIJ5FL!Ir@p4cG#6of`UN&V~fYZhQt!i2ySj~(I2?kgPmEQaQKT?q@; z)YK&F{O&bVd~G6{z}YYrOY0-Boe(}3!Y@?g11m$OF0c6|O}-jA{sKb?j5>mMH?sM(Hh62CfjnVtE*+BG++UG>Lh_v z@$9-{JPxj%jm@Pe)yD;Pn^l^Jb+ezRMk^g2V8qFHz8bq6ra}UlE4caktM#(7GU#?g z33YmWN6%!%)3ObIT?WeR7wFf#@mZHc^)t+4_}xf%=$*M;MxtD3Co&G9G#8*Zd{^&j z_+b4Ydec|5b(V@{GY5I@Zj}6-1IGzY6mdB$wq_NOhExw9rYZf^pDqwyz*kzLHl z4zqdcT{n#mknSXnTYU=9qgEcc+@fh&2Wk)v9{N9UWU6Jul)4-|0>+#zwwpghHp6e+ z;DZz8Z_Vnjw`Z$%>zz`2vS>%?lc}3|H=+xx#%96&VV#X8W@>e#yjrnc6p}^PsdHo7 zVWWCDMuT*Y--FT@yw(q!i`0l!#HUYZRJ(TXz-EEKu!j;a8?xqQ)wG)?W)PgU^6#l# zNW5L@yA&hyJRTgJx0vk9y!kYf9K|deReql?h23td5=}QQipCZ+V#YJHVX$ow%ouiU zwdu)>57EJW+p9&vG4yrL^DBMs_3PI&%#TChC-^r)I0Z!lru}$_U|-RV8)WF1bk5AS zxtN|fQCw8Cl~6OK4)cCcSfu3a=k{p*^Ha{)6YfwP?a4RJ`TBv^Pu4o^{00Jk;KI(? zBiURWEYXEugL}3eU6&R&7Bw}>P$)<}7J($9I@emqIV~W^&92Cep_(PT3(H^%~ zGm~Dj@0k?fRk(Lg5_~6NX@h>Ddf|d1#5cgC7>NIb=yHPjASpeHy{dN7__+0hRN9gA zLoI)+~VlQ-Agw#kpiUnX1qHj_$}&Y^Ka}hgi!zuA{3nb3^7ga^<18g20gyK zV-dzauUm$!xY|CWN6OS5MTT>QJmNeT_H%k zN06SU8=it6KNaZrqc**DI=A$(zvtOAre!ZJT~qXx*L;yg(S8N~eB<+T`kOtnIz zj!b2biI#oGj~@@u{B>6_&ubv9Z)Q2=$O8!i*r}_ldoLV^xpr*U=zvCFNo@D_z8dIK zok%LMfU?n$OI=`$?}WMaA7@on$jl*~Y zS=PO3x{yIeHiw1FiStz&ULC<66prFlPifhzKb^6A@ptH`NN02Fty@&vw{H*6o=N@8 z@Nid%8BhEq$t5sOM)t;amio<;Jz)wK*VW?+Oa(xC_%JdtZCz`4m^!f#Gx9kKoVB$z z`;#Y6?q2+}F1N=X%`FTjoee{b$Y$xikp%R^()=BrEfU#Bum_8wxRc|fol|XY@X?e` zZHQQXeb#A@IAmmGY(L8EG5OMmrs*qPU0!o=; z9N3wdnYj-gicdSykqi^~glarXf(b>#)+yx9&LiBZJ-cV=Q#JM`9?@M({qbBw^)@Y4 zlDYpiSa`L09)s7psit<@Y}hB$WjndC1l7(TZ>mu=6t?yvJJ+S8NWl;XdNaKKARn)> zLo&y}?U!d@)g=&>JAWMO4LGa_rp`S|fV9I->`!ZP>0j~OgtP}JWr1^rFPE>)63`3|IB^+)`hn21QPL%aZTRAh@jH9kBB}GJxv2BZDUhYp1H!f9)(`c9KYSOQxTkrSs;`rT3De93l0ozVqs& zXCw8fKRngUC;qlkR<=_h`%-dk8D4p|6qT{>AR`t0pT;Yxw5s6~3uPK%5KRE3`<)`J ztF+wRg*3dH5B(s%H-gW z7$s5p+>d@v9{g8UEE6LmVTV+Ouv6tH%4&IA`rv9{U|>#wC6}(e%|~{vD#9}iWqEnB zDIe3FV$nAz{D=Af*2c~e4M=vx^mJQnu-_R!lRTR{}s>ElwH11C&jmPLD zfPi1@U@$CzA>xYam42sNmZVNk74-RrE0YsxnX@HE60dv0sw3D3vW6&`(BgcHw4n;- zD2FPwY>X`sWtA}Y!F{H7A(dhtK5tMp)u5RwE$akaH}>lIq{wNDo*;Crw7X4QuOcEG zEj}?Y=-*^Go?&#p2F5oeJfh#T-Vsu%z{^28`srmwdd)}8LsoZ6-g8_QD>~q8k#(yO zz91uW^BhLr>CaWINiYrs_xC97ic))irVjR6mosP7&=pE`8A^i#gK`!H?_)=haoX(1 ziqn7240Qu@c>iAWZu<2xujvN)qi(Wt9Oy@tLHZZVDQIBV7846wUk|oUkyKRF*U#(e zQhh)i9T-oaztUF=FtKHcre}j~3D^#j2Q)M(g0j!Z&IXe-Rhn(B2CKk=GpJUY{Yrv2 z_wb6=vhZ^m*`3V^%Z+*fHxklr5ibo?2+_;&@!L<9=;V@zX>h3`S1<{htDFYZ+Ye6B zwVSa>t^C$4HCNYin*_SIf0)XpfP-}O4rB3|@B3zav`bA`hd~b)fD8FgQ#+z1Goy|V*FgPLh)_hOh2MKN zKa?GG=nen*693?P$|gEGaU4{JMIRoHHknntyqC8twf?*UJ9=Ncu?PM-3tcK4Nc7kM zSbv}9$?SsHlUOA0#rK-GuA2&EBI(_0-k6;a{%%3*&bpt1^d?tc#sJUW?1%N$8(SAe zx2$!T85krLko$oLMh_}zewPG}vnB`O#^jEr0XJ#za^eRajjO4WG)BbU?(KDxh7pty zE(1y>^ZE}63p4p$W$U&Dgd9*@W&09vepGhMLq0j zW{5C;R{JhiN=m&oN)6OY$(I+rou%J>-WDqJn(wwf z9P@zZ6246!eb8@uDc-5oDVH){^(U3?v(zTmLrbcr2`}Y9PJc{~RE-qfGLW z)%!dVfBABtJ6p50Nakd^I(x4)Z~7$1i1V25NMRpxNk&P@Vq;Y z0Kh)sG@yqt+Qm~t7Ny2{^W`TwPFbjnI7s2!cMxMD7}J7fez5%xj>PxxqJVgsf)+KT zd!^m9pRmMTPJ~KekI4{1jP&%3|GR`A12HC|?IgiM4d@G>+m9OY5{2ZPx2eu=+@z05 z+=o}B-Knj!#m9A;Ey1=V#Sd>VWt#CZtDhS+#YHTJ_^%vuF>MbRUoz{ zllH)|1+uEEtBVL@Q`5-BMem&ck0l3WA=}{A6CH6L(O(jVEOdEr(;yzxUIp=|hYZjA zd0$kdZnyFAp@+}Esqu)OQm-Q4HQh*2Nw{ddKfV#qr6yE9ICkOhU0j<^UZOF;AtQDf zxgNDX!!&+8=qTZ0RRCkBs(d|3q7;xp6Qn>V$+)HuO#Lkx!mcvSXcjm&8{xZoJm zyUZH%W#0)ksJZSk`XRcwEHTGZXPJsgH9#`e?%o=~zw0BdL*D|cIVg`eS|y>IBv?mi zFm$6OD?aA;-S&JO$RDVcMx8Z(7$5|Un#TU_@HK-MFJBUaRNlHkB9ZSr9_}Pk4SIb5 zazdp8X4`_vkYvT5uO~9x{+Q6QftS)sX5UWo)g6bm-Nf*+&Nwq2!tO|`LKjwLMU6DHb z@hR;=rj9SWNHRGL^z?`+Cop+knDn4RdP_>8S(gA_1FzZe_5M53oi}vibidSHmio*i zbfEV&B;9_B9dF2l>0*CGJw2MM7Y%Nx`)WcpZ4tk5eZlHP=zatV+Bsr40DUivA_!6_ z1EvC<7!V`1NVcat>P0(~Vp87mw(cwfUQ9`eFuSi?9b%*+nnS{@Ob}Cfd50RvF>^3Q zM+syZL$gl}T`jLv&+FcN&*l}gQQrZ@@Qii1dNA_&7}*x+tHnb+_ipgY8Pu5P?Q)z? z`kf?RRa!(878c5etKX#0G~W}jtdx(TrqZL?CND|n19yL2;$E)BJR^pkY^3wRmIpq` zf)n@N{riNA8@t|#ktY}a`-qEAOSOLUCaT>maT<6xVI1G}1tpA_mIJqtnwkn@)zy1< zw5qWS@rT3~gPXCt4f8khFbbt1aizL+CrUmB5$HcCrL(TNq|m1$ol@Y~0rVgM?{ODC7btU~ z_1sM_;x(#we$gRiis)b&Ze>6OBveI^8+v+r1dybs9y~h+C2RX52b%7 zK^=ifJKp}+c?V?ej{6Qae7aTf9qs0jMryy4I+$D>Kxhb9qo7ml&X`XssIO;6Ewi$E zJZe|10I0UY;LD0U>Npu+xkD!y+FzbcjKrM?gfROe%jcFB88H zBZiBxJ-4B31Bg^L|70C_;SFg4C#tj{`cn0qqc%rafBs$?0KLyuIHG}tM~@l}S$xN> zg4mxYIqbJPv5$jkB;Lvh8X=XMap|c zBg(~tvHE$^h44Rxt`FzCJoL12vIeWfLQG<@UsyI)mAI`Tr}1$w=P)Lco{x>`Q&yVO z&ZN_FoZ4>}>IpXFrAS9YCeL1vmS0XFLQK*~6Cm)e5B`lE2ofEYy~W~VUIqJ_EzP7C5THV$K#+i_Ev)NHGb!iXFAxg*7?N`0_$ zA_4s~Dw6-lm5`w?U#7ZsZ>!VKRG3*1|ANBO#s?Vhb)3OyL3496MoO=(w4dVI9s~O_ zSb&W&bbqnvI&=%RN{nnEx8J;do5(h4YHZuLZUK`S`snYUjcN!im5?kkcf4%$Vr;Dc z^Hw!WgHJ2#4Z{1>!qX>L%~LV#{>!R z5)9S&{^8@tF8`pb`ar}@YwzQmoEdW7$lPiD8=RxZM|c3hBi|#odP`I-mi9$qPu+k@SF%T?6qwjF`t%h*0f5JYQflyFm*kZi}uCIi4Pucv?SGb zom5cN2xT49NnZn|ds4aKiBX3;^Ui}$0`S`uHaG9Xx`s2bISj#thF7Mbq`cV6Lx*%v z+*I2x9uS{5Z`}&VNDsUX`}o^MaZuYB3>CJ3K*HmVM|eo*En-^vm>0KL(IkhvYn;UQ z8Qpjg>i0dyF7NehGJd|DcCBIGF-crgiWLVD^xi!Kxh$_(;jkS26!GoRwk|5!2}v@c zJD7wlBhf33A9)|}kl@g!A#y?QGpop4mB6SL3QXsd%tPBxHS}6>en+e3YCLl_<&UqcU4rIucemZlUQn5=6 z+(IG08s5eMGT~+@mFr>!5Q=mjF&#@xQ^CdYBo(7(0dM`e%`C_$jup}Ce}|A}8LoBb zDCWt~R)gx*I$Xuen)m#5%Z0=6{fNoSUj_|}aa;npLf8c-FM26=QUv_~+{i>?gA!_@ zH;u_`!pkSh0^Ozj$r)k2eGHsHBgCU365z{m{sr zQ=ljb6yPNFO1A_$vlJ;p`X3`Bw$ai_C{q`ra2VmU0(*e7QY(E!0}T?P)zj>gCr$2- zKrfEg%4AbKY5Mt#7qB=TSylcIjR7(_U*;r7?)=>B($am_KMKI|P;Bv03sa82(0vA< zKVL3?bxlXZ9(@^%`h}B@+LpJO_|gx0T;M%>A5K{;3}&3ue(EuVYnBc3^2j1um_)20 zC@H*^5+EL91E&Y+h|0_d;9>CX+soP3!EwPEDT?*jz?1bJggpjg(rN~1s#De?~QDXzyt?T_0_aBYc>BUlIgHpp zfByWDL;@FiJkl27gy;ZacT@qqOyHO5Zm*?&nPU7}^ma&1XbF1;2H?0=F*Ho(uul*+ z&b@L42u2m|+{~Tn+kC!k)pvM%dgJW~DZeZt^i|dAd?Ou|Guc|0vD%dg8j@)CF-J`C zOeNhU9wz{%=0i@eV1T;w@SA+d#=8lKs*MHHTb0JGFsj+FcSe%cx=Z=NHtMkFLKMZd zgT8}GUuz5Cgs7{l^DfnZaR4J9oQ?2FMeRErz#$~0Z?rYcVW77#=7m+7rRCP7X&2Ex zZ?@ynyvJJhDrU_M@RG#?=9`pDx{}7gI1#;buaa>%G1W#n`5&XvH%hkmM@}}3N^#mh z`1AAKG|zQ35U_rQ(`F3DdN3SH)xPPx(?XrTKh!6M{?i+1i5Rka1n=w4jNU>SV5$-8 z^Fl;-)Bk&<^{@Yn7cY!nMo%ovI!dO)welo;Zsoayxb4eZ$Dv1~Cy3~qxsu*K5$8dYbv~yB&5MjM>x!5o!*%mker3l_lB_*Z#w^3bg_gZI-+tCG&!JPrqZQ3(hLFnKchAHzFPgJDpc`|x&s<#YO-aJXQy-7T&_jzxO| zH@qqsahB)=nL~$;-u-zOpGPp|H5tWhtr8lF5BX3BCON)q3{&AZ%ga^${iR^tHAugS zMgcP%E^clbr%sJs*$8hT&0h~blM`V`P7^-rF>Wh#IY`Ih@6hUfgLIN$u4TO5$?Q4JA3?;FaBfqOS7 zN*J@4aS!ZBj>xIsDzQZqC+pjT&%&b@H@+^vVWNU#$fI)b&RU74oh0nt=sW!^CI;aEYNTE5c~)vqghO&ii{cH# z&vP>;jCc@zA~6wKeCw9(-3`4A^OBdM?V^%BuswhpH562jt&tm{GxRUN2$$0<8>_BL&0rbA<<9MY!A{`22UCt@}n! zo!eK{&)dtmP2zG5GABBuq3S$6K4Jm!%y}!$vc_?`mEqe+fEdFe{|;-=_0^#5{*W0< zL5c3a+1l`MOR6*XeZ50(m4!jR5%+^Q-M;^{q;{6Vecv&wfDA6@M8jk6c`|jO_(mhW z{PXz$mO9#qO?=1-=Am+)Kn2G1fa!O00j3jNvKWED$`=mLyZkmxNP^xW$P{k_|J*7j zL-a>Z!13LGt=|0|S$rox{Nr*(Rm+v@Qn7|+=g%KTC%rp6=O~$W%>h=J6bQC~Ulv=7 z4}$AWy*_qMWK`BLclZ|}Bwo=jGomS z$9SM;52?5I)%MA#bX%vQuBQp{jxu~6Bf(YUL1oOrI+Co{;)Wv|qvFUphErW^d%C&` z{UYs8uD803Ps~ZLt{RSP``elync(3NR8u#waXx=__55|Ar_Y|D3)PS^2jz0JvNB|{ z-M-pfW7wc{Z;OwFIBIh?%Q=yPZDAzPOg%;$=%iSUfrWX5`o!VcAT;0MGQ)1(8!^Te zFM+I7@i8JGe=&L!qLlwSsjB0npZwzTupxZc6zKT8MOqGYCSdsLW|!ZSV>CKx8p9Rn zp_>-F_8vHRP-o8UFvkyTFppexH%d!wgMuus)*ol;e{$>u??sql>V+;pIcAL+AW*26 zh2Hi)n7^2T<4!myAxks_uL$6m%3=b`QIdt4nCk%I8;5H>f}AKkncvMNle3G}kQu^}cc9gSI_dv$eF(7M99r{m7LJxS%7 zDc?)7xJ)#h6)y>vucD%YtLngM5TV{DU%(rnokm*wM({El+H%12_am^b8|u*;jr%@v zvAAZyT<6QpF7tGi`El6!ZqtBJGQ=Zh!!)^d9j8hYRt+-HT~C{P zZp_Ka={tVf&fQ&~Q9z1Se<X@HA$?)*h)-V!O z^8K%+mKt!~5M)$jC?LMqqoW;HXJyAI_ZDi zC5!#Gr>xTX+h}71Dm2EH1PZH39>Ga3DkBp!HD&vBV8Gtr|2Ug*CXdb+0ka!<7Prk{ zPD5CHm0SJeOvQ!^4Ja&8f1I7gC%$y{#|ri#5$_t6g}f-uHb=?52XF$z?Dba4sSWp1*y|x;p5&%U(PeA6&Al{#_!-vq{jOIsXS;Zvszc z-oKAG(^S)VeXAs-lYJ{hc9K2& z|N5N!m}j2v@A>yS-}!nt=iK-GS>DTaUGMiNDCl)(=Wc}Rvhwmbp}~M6`LA(ie)HBv zs6slk7%OLc*E9F5d?I`wT>0A4u5)jG65}R;WuA|NY1u5<{1#; zwd<8}yMP(%%@SBn$HvCG3&@2-6WC^_t^Lzene#atE~=@uHScxeLkf=lZ1GgSEluqO z!hPv0iD$u)etdeG)LVU@>8d(ESrmEq z_UGA6@RCHWkK_t6lKt19gx3GGQf0ycj!yu4|9}bhldH@WO z7#Hga`2t=>31~F$of6$s4i3|cMW(;{UI;_G3}a(sRDX#=(Q?Xr5xz6$`>U1wHvJoc z%9ElcSgTK2))M`KO7^MNR#y17J$lQ$t9s4=6Y&oSAk1Kmk*ti&z3*W^W=S`Ywl*Dt zc7hpu7#v*G+slby1uf4=2_LpRXqh*rMznC0m;UY1bmIw;lHmBz1GNCjEiJhoM z6)-u(wJ)=>+<|tS_xWpJ0J__^5t4p#?yc!pTfFSeS!t;S;lz3&_a;IxgfX{a-xg!Z z00luCr6exML{@@xhQ}#HyPnIeiqBU(GfF?Xllm9t(j!uJ^XA{wzqxsxKNo%;7h2EH z`1O?*iJslzcs46FcE;zX_UzSYg`|}Lbtiv0Re1yMJOwB6g@Vic23FWk#I|D@ym__j>Tg`1dTmX_VYxKpPC?AOg_ z{(v`o_3Bjpz_{-18-9MwxDL$PqWkrLqb?;k_^_z{MeDj**H=_px?)iQD82!k(>@Vw zqU#gW(%g_cgDPFL2(t)K4lxei{^rAn)r3?yv3=1Z)H(u*yvbE2=EbFBZOu&j3QW%~ z+BujH8_v(-MZP8{=Wbx&rlHAudYhnG#3%6HSA!Fm!D_*REn0+ajY`(&ni$y;reA(0 zN_XTFix&B?0fKyOa&*tJq`zS|P~>{q)RbuvZW&zBgSDBPE;)NKk64;K488n%hGk1< zSN%beVzEH*%jG-JdKiF6Ai52LTY6w=r~maBzV5Ha#z-$m)^>FC$6eeES_>D8pDAVWPK zk9UZw^pkm`3s8wkj4mdVIaR=TQqYgYPO8^BzY=>eU6gU+X9MNSB1+)Nj zB{gNT)w6Aw&V|e7)L!91kzX-Du={VKzcqaNgdAr>0_uif`zk(tdW>HtHkin6ID-CP z-o?IaLz#*Iki3~l;zAFU9eUi`fqTSmj<4&hfa|zfcn|Mag|Ixrk;T{q6B5@VF+sjH#-|m_bOMaHO=zOqC^N7fN%YSB6+u5t!xr7#z82Z=3zF5j- z{u{N0D)J^&RE`0&xAM_(o;{@Kx?2SgN& zpO(Rg?X9wY$oST|Y#mN>giGyU0^cBB^32RU27is}p&iGMZ}If>B&01e)09T1nz9Fs z4~+*tylzgsI@;Ax_5%Z(#MOR#oAU`Y%meZRS@&c{+k!2yKOwoq>&1)xgc(B_?5o0? z%PdAZr9k?iJ^*q=Y|-b>pT8_Pd4~FDk=pgMC_f8Iu3v+Z1I32o!=g}#ChjBvP%U1| z!7wEiA`K(!{E+2>`V?J%5N37yDr1ObKMiCS{Qm1NFLQEMy--@|Q8fH9G*N{M4#{D) z7vnLyTk0+U1Y(5scsf!Ju=ng!5nq4*r8f&-cC|9z^Y@&m&<1`sG135lG*N_{TPWq; z7jypYVser{t!3QE?A3AgR;)Wj*{?zV;LohxMd+1CN=bc7)>+(wUxyk(lZP&Dp>Ed90`gERf$7yLYhQ@{-m9c*>x&Q0=?Yp%+S!>R$F}hoECY<%4QP`c`y%le6zFEw2cQfu$wSk&V(HCs z*Il7B2~Lrn{>&`&KevXqUMY~}^y4{p%ur;7jkfm5Nk>g|EmVVoc=2lL8@$bVS~=Ex zJbL(0=4g-~t;<)z`9>)~Bp_4@L%PiLH@TJ-Rj{%Y>B!zWbIN6A=yt?#2x_m+oVZno2gCvy;d zsuVIl^}E+ZYev26Y0kl-Lf6Igch3Cb-?5%KlxA@CaPP?Ex?g`$xOlN_;cvTGq_!hb zTlHE7gd_TR#vz`9E$hkZi?4#f`|=tg>T2A3L>GIZ_03iRE8tUN&iPt@o+y|*vi1&_ z@;UlDT;~JAe}djZS&&sLo{RcWz?+KQ;na_s1&k{`w_Sw}^!Qico*ov`{zyF1s<(RY z1wrR=umz~79Jk=~s|0JQr|Rz!K}xUO34Fh zGrDrc{7{V#`d*xRdTHCUDnlkFroExG?1x4r@8125y*tp3hDcV3a60RRpRTT)X#pBNI?vFG+&6%$a2i{aC zdiwNDdwYA#ci*+7q=p7n&%1Z)uWrOrLvO0l_u(&A-nx-D)w?e+YOh#qOiTqj8?5s@ zry;H6U)DiprJP2S@M#;$fC8W^W-dJRz}DIRRsYZHy^csi^iRvENiDLyoV%I+qwC`4 zj4$0TDH(SGFP02&jIT{w8BlL$xV#l{>Dhq#O>SRsQ%D=~xe}W)EuR_q*9S(~Rj}J= zW)@qRnSBeB=+7}XJzt5vgLfn6%6$CXL|?y?{QjEvwWl&NT3Rhy{wIoc4v}F>Zt&p# zbG&rzg{g*3|LYZ4EH)=0d^Se^AtO^$>tm`7_4N-!T;}Y6I*G|0+*l3uKvy7NhNEx->b~pdrV-v( zg?kIfBB*Tc(A6WEJi5#oZx}__)yQS6wgrFGxv^~(aaKn!iI1?<>|zM2?Lh%lS5>v+ zsz7i0&ZQ`;AgSH)M7(m?dR^r)~Z9-n;3vJ*Kf{-B3sBs{xH6*8_P;) z^yBHqBt4I^lG1;c;s5zz{j}X#CVosOqW@Hf3A6O@cS+CP58o+nZ%i@t-IF9Hm#Fgm zp+ABWDEP~dTrGgQD8Bw>$>4-B#3x2(W;WPn>fFkQm=a#RsDXwc6$M7vEq97^n716o zI=1g@yjS{1HR8KB!tn_Sb?AjBIPwz|8Hy(Ls5VPMD^9co!Y9Ob`{EOu+@7NN(+F){ zxuevEM`$9-CedA~SZ2XbLxYFxMY={N-TQ7j$FKg^ihD2KV{rBP9?IC6yE0at%FssY zObJ)!tEv;Q;Z@Cwje`?qT_cL0p8ZN+jpoPHhh5lL}yv-^dn3yFv%pry_> z=N~5#ranS__cI}f@ou**W-8;`=-;sDNw3s7u#3DrJP~MR1*&#$Kv~0UCb1Q_U-x!* z-_za*(5zJV@DyZLV^}1p0pc>Yr9RrTb}8{Jfs#>eO6y_->!D*1xc==iS{N7A`Ibb0 z(Xz&acimw)i-_Kzird`6HsG6KMeotNs^F_e0sig{Dp#60-eaW}DEZb-hyLBJA~E*F z{XL*{?bAFWRporG^wp~yXkj&*QGeD=``y7+28N8m3&R6QRi!LrK}x2qVeMy@J#f^t zB~PQpal{iXHopfjvkuv+BbHK2HL4koU<}-en#HTjlD>{iRyQ=nphR9CnRYf=s%D=B zm{zTdR^ck;k%H@a=Q?6p&7r#Kg*;FW?hJ_V3pDaP z=Q9coem98F@#ZbCeIVN5A{uiY_`LsKLjPod6ef*qB9u8BnV4YPp;eOjv#Q2?mwc%8 z<8%_Ev$C>=`PMA820mqsOB)#)s*ZoBE?ddIihnLg^@?z49m304bhzRSDBH`jIxaO; zu|!u6-Pyg4f0Ma-HR0z!3zC*nc2Y%QOkRN-E5iycVsr5vNH=`+R1tR!PtPWCNkC0p z=`uI6?FE?o%;BHu7n(U+vyXp$U{nm+I-Xw*$%2V z7;g`j&@8+!{cH?supVd|UTPg#bsF~O@T${D!_!G8g|p!mddtb#FbICGa~l>wA2A9n z#TXisae4U}=X_+LsV`qX0R)Mj0~$tGuLkI;CUF_7o~9xT_2}M<3S4EC$m+r%+R_3; z?o;}j33LY9m6RoozCS{Pn^i@}+q#*VoEwEt@RTUY@t>szVNtYw0d5f8%@P2z(wxhA zr1X+i;dICd`$TvPPo3W*{rDsDf)^lElpr~IZk9V%tGAMhwq8bK`Fe}YMWczIgr%h= zb3zdOn1D_HLlj~t4W+_Nn#og3GC)ev!91eMFqq%sl&BX=q82KG53dRz4w{<9kgvFP zYJ32sqpsarM#LnhxY!G$4D=A;B4WiCYN_J>df10zKI9P)LV@uQr9G32iGY`eZ^CqI z`7i9>*oz8~jyliJUI)J_hK7Dg`L)f>@s7d=#2^8ehf{_;KdIsQsi*f&J^gt2Ewuqu z{3!=o`t5x zJckZFMGX?i{qr0fS8;Ckj7>{ZLP?ccu6-)5T2omWhP*#DJ>3|!SD49sbrI@ee+0xC z6`<*t75bL+Lg-%k=FMNYIRu5cKg`*yFE0^b>TYxktBA%+C-EWORA&6^^HYZsE3PO& z+xih)FSjTweMPy(DvqtALf%CObPA}6P!e29Mbnpx;_TO~=99W`!T8FR^Qe9w;1ICx zeE?Oflc12$3;17VkF#(Un>KHbea8o*IXCAVEaXsIq#%JH5W?h1Fy zN-1od;Lgs@{&qO>*SFWeVP)dO@892*tV;1tZg>vl8(JK7$yB!c=dUxANm4}lHvJcf3_F2gJPHm@_3r8Feg43CTvgLBXC<4j7$I9xJP~Ir z#OfUv9)5br_EYes4G#kYD}MaQaC%kLZeeX>V;^-1!+@t8SffgYmCsB;O3D+C9g7N$ zQ3ia*r)L|}OoI%#f5RR_J#U;0$9W$kW8+lkS$lY@?8nc!f~AeEtg5+tpl5oakzI?p zLqT}nd9q_ec0^xaAN`HBwOI(LY;2T(9>Ui7M96SN3^b)XbTY-ua9p``sbKCm4SD%+ z&nXvYKe4^_TGHXNB%Z^E!{lPvVsd^#!lLM=ok71xw4kfc*E*m+}44t*bdhZh4cPTg2oQ6XOnud*}x7|AkrS zd4xFbhleUtcZiA1j>;FM2(P^Ze6jqS)l*md}Y zOim|r#kI}r+YQY86HR)1c`0GN{y&LY@-l`;{!a`!m=6O+P>PnT@?+b8QXCT+=yA4r zSuR!oYtvWJd#&$&bMgG;a@Ypj9UJWbw14{6n5Xc}{G!)OlzW5S&Rjkf_VxOfSN;$w=D5(qN(ldZo6%pM0vz?wW>j-XLsiNt$V9{Kerxr2B|XS(q5k zoC8}t8|+9{0yEP2*6~XOVeeg1kD%Yhv6vVqC# z3QsKLT|($dqn2(Kj07+OT{-&Ny+vx#-sCI4bjhq#RW;Hbm{#S~kM!GE#J4ZIu%fm$ z3Vv4_v6`HVOFo>eAEGVPyObQf+w`pkDFe(_EFyW%KPl&Drf73BJTmeuVwQ}ES5|&V z$PtJd!v9S==6%hBAGe>I>>}6%qRn15MqGRrw-^Kz08et=9{*>J2B1izmYm#PXU+V} zpUBPW*U8S#RFum+d^8l{Ygifj2g#)gY!ugKaIGtbpheT>vWq7J$lN{^exq zVQR5Gh>oT|5@d_ra4O1pB=nEOMvX^nvv)jFQj(J02qQm&SuJf;TTdT{CoIgo{5YWi z!7UQqI3UUL05-76YoH*7lV%e`03&ei>))XI6#WXQu}hDQE|i_w6%~V~mnV^9`ghsk zJSPNUMNJn%1Y=-t6xw5`x0=cOExpZ#1z{zyzt{q)2Pz+Ro6^{NhC9l#pwUkap`zC( zXH>JJ0eSQxJ+43`nt%y~Cq-;<63cW7F|9TF^dIvI2Oog!sbs=QOwP$EH>{#NEQh+1 zYtm+xyg_5Q!~B_H4=92700jXTX_>%deC78tX;Q*NqUIHgkxdNN46ELQ5tuJ3H8O|X zH6}S(-mCqc#pC1iC(GmnSp)jA4wt`L^$SvHCk{#{Za*6AJnwsI1aUJn-}1J zAC&02%gdNW$Hn<-Z-n4I|EpaH8o8m{a%<}om|c~cR_YG<@UfSs7qLn(Ej|h=f;_>} z`v6h;AntK&!NssA(@c$_FteZPd4_mTZg!OVBxiCVsvF@?sw*m<+6rwkbFb@z9m;29dq<;l<>|{ z6lYzovmOKO#lf<=?BHE?Nu`5Fj)ZUj)xFrOy&EmzBpya1F;L(R*vHxu?UH(JRyK6s zX{Y%2*P>}L3bD45PTXt8G7ndGmC7)FA45B5Zs`~QJ8{u@PT6bkoGF=v#VgWDeDvcU z0#ksS9^0<*Y*v(zkdV^#HKT1&JIZ1`LzIw?;=B#_vmXzx0!oc4==~N+c)ACY zyF2Vc*!IGcB5F!AJz$Z9gTRomY0UgCFVVsjV?K*WjCuZ#MAM68nV;Dy@%T9e!iM(t zn8EYFS?|F*8HMpn_;lGJcq`gg;jb5iSoVv#?Hym{jQBV-M_T8iTVp>PH|AK~HB3Fs zs{i|BWw8v%+I-J*#!vpajT^682S`>SFOI#Vt&%rbX00)qcOd3oIe;5|)6u(TB@beBcggzRus9-zj?xwp`1aGdk2#UKgsp5%x6iPHM>vc?P z*7V_k2Lb1qjEGZdPSfK(XoGXHO?L^}`_|#$2OdE|E-|1#xzIF6Ks~@Nt%O$UQ3TL| z(A8%}(IlK4phFFOBvV})0pX*N5Pvq)hNQDNXs8YaA^!ZTg-{bT+jVUvxv38ib`s>} zwQsJU_HmvW5=Cbc2N($-HXtBZ(99DMU)kC{`!;UcQ~{Xg1%M{8N|2e>z11;~0^9kK zIpIL4X#V0v1dFJ4s)SS~0GB}6Kq?Ti_r!ci)du4H3#hTj%(_w|V3aGohKZ>MhVq$k z%PtH_G|lfReS88t_qUSRUltofO9x4&TNrnqP3{PNjeS<{2XKIPsz$q8UJQmBK0^Ky z7kKt1o1fL|(@$lja$T_1*jrlE5?oS4yrNsGnKg)wpqx^5!x> zZDu4I4dMSRsn{2V76XmEkyVC(h+p+a`bQEFo|m`geQ7M+$g~c|v@I3IZb5@LtM9FZ z7ebtb7myZ|z8C`i1wJazo5TniWQ&-*(0!hu6QRyiF@m&xnFBZj3p9`?HbynXBRvb@ zi0oNo64PLooN$EAu#=XY_VGv=4mJQJyu6WM`?1p$*(tK5AXuTg^i4NL%dEtH3*R~GmkWrPBzy)GI?yMI^q>Tb zz3Xc8F|>(!U}XavJ27u!0N~MFFuxT+DPR@VS?c60ny;Ck&(A5 zs7Uxyg?9wb!(3vKUVnd z7evZ<5=6=tEZDJtmiGO6qwO-HZ_r7I+5BL^v$!w5rO&WyYi3YZi^ zSa#;9MB5PM!|v^F=KSyN8T(20)7UycI5MWYTZ~O?L!Ox&y~vV?$_c%VZo`v~V!o(n z<=E_5%2U?tM-61FOIF`fQDEfIVS*WmQs>@N#Zv>=0KIkqY+nI;isY}yD(lBX2;vAh z49E`=&!v)T21{y`i7!CNrRgxhYg+&EBmxK|I|QA@f;DNX#TkT8fucXv9es=BXKc9a zfbpeEClXamDl~tg&&>}5%neHTe9^A{sVJ-6nfN{c8S6JNS!*am`+JS$nXVC3A|41s z;4@`sztTUoXnyEuGzDcD?DdS&W?8lcH))oxbstukMyRMz^+$_{nctw&&{MAWLm6s{iFI|5<|8#zQzTc+ndi_DYC8=d8 z`GI58j%;TP_I}sV?@ApTFwoZ*YQ3i`a+ewTU}FKmI%h%;Lf4 z%TPvOVeI|w*Y`EssO4j>!Th52$8q7%3s9EVg}ThesB;_Sry-yImP@?@A74de(Z#4N830`@D}&3H8QW-H!0fM=x%G=kk;inEM_~N-YiUMB z!n1>|Dj)Wb8|c+*S$aE7wG<{kzSvJIRVbT#fBv{j!}m80$SVw*}Fpnyava{L+eKDdVT=dNir=zb{_-~AK+=cN_~Fc7j&*Eep!C;!lyr>%{)tfG!s>lLR{%N`LQr3W@fPH^*v|tab;g4t|BJH(kr}ve zR$Y-XC9Zu#Z!@UKxZtO&&#wnY0^UPx80T>66B?&$8 zN1q6Y*?{dh=r30S5Qh9uvg(0?noeC)Q(qvvioc#AFh9*3WV~>i7tAj1nGGlcpef|} zJ~`HA=OZUt&?yJy&g)hfqR|9l-jAt@fu01=`at>_yPv-dl52bYI~q@AJ`&3E7qsq( zMks=v3;gMjlss(QIPX*B=4ebY{C?Vd0Wbw-`tMhi3`aNUjT+uo((ZN)KEW8~*G#km z62VkJRAUnp5}bNO$O#k8iFrh`i9Q4`bx2Ox#7H8I<0@)uYdfzc`Pd4^BM4a)N$0!d;Mlkn%NfXPomkt4ngDw`e@vR5MgXA=X%PGavpADF}hth(=^ zBU%DlU5WXC+>An$NN~gsU3P#ZHE5+6NuagJtBYEI?9tSB2>_Bug-Uha(qyFlgzrOy z08sB5NVtJdneuS5KBysm0hh0YL>OG}ayqhhw{Ch8Xj>(Ef1VI&+5WGk5opxY6}#CS z9T4_w<*5U4H$UzU=a1!-yA=?A@z(3MJA>Ht4hJSVf_%fNHORHB4pb|`xFc)qH+_AO zGX@JMi9Sz!lTou44dPIE*Y~S+hFQrlC6<4Z{bh#-!x~Da(y#)~-bO?EQ!W-oM zvZv;Eqw4g9R(@W;P)`&N6iM3R21vvhWmal=j+q`Y`fu7Tz?C>;gYK7~#g08qHm$RC zq#T0r@uRcq|K{a0jk*oKF=C1TvN@D#isjog(TeVa{)UgR{|`$g_lshGA_y_~Cd`1S z95`9c(JLYt3K8`63lge+r=JWwxo#G95YI4jGAIWQ@t&dVo8KCKke_4F@bw~c^D%q` z+zNFi;KC58z=a{ft;BA`)(5;A2KLdHK`lSzV_rivpCrXap%DxPL6-1>0tN^g$UTJk z_$GWGm?ZTOhQ(GaTI{8JI0kDEQJ$x__k3R+9}kahXF~@4ep>Tm+MY#&kkZI7*RIvt zw&K{BR-7#*Br4V_cuL@8wE!)*HzBf@?3_4$KX%Ow9mzc{Ui$I2hbM1 zNBRwYsD4FhPGg2eIGPSUQQ?Y$Vh7kaFjLQk=TT;6;+Ko5wpP9h_zX!q04h-|6%d1f z+p%JD9feyS-=e~Vj1c#wEH2mW#Ic=8Rs^nVdiVh%r(W>R)r;2%KDojp@UMFbx~qA0 z$!%JfJiZ1b5&nw-g}MgqP@~Bn1Pxn_t_htyJoHg0sNvjfKJ$6SYQ!I^{sd|CNBV7zGVFz>v;yj* zRNJ98yGaRZG0vM}%*cKxI4Kc{fChu`8Q+7R@_+?Kp%UnWrX3KLINMryS~=KP7|P5w z6ts*r#KeysNE%8(@gVJ-KmSOy0OcLxoElMbT&LI~~qBz&Bz{SW$s;{qanR^6z3dR@b z*v2Ahl>V7YFJ@|J-#fzEOgrsXo5%9R{M1S}>;jjw9;bRx9J)t@ZLcf9Z31s7f4G-|2$Zy{1nGYtnF0fZJV z+vm{F3G$Jk?gSqmw}*)b(}10FyfFSSGGyR%^zFX)BG@tm;S;dK);NlBTIBGS&6}-I z911Da2Y6qk5?I2@+yTC9m{FkjacQ+%j_{QwRYO`pXm{*PxIekem&40S#IeR9g3`F5 zDZm#|IXwtN@sdW)se`4p>)i4XBW^2b=JE~!9eB#dBi`v4fZoADP*Q=&`ck`8ym0NB>(1(8$Y6r#=y@w+CB!A&#_4V5OU${*9fi_ zG{G9h@kdv1$QuGQBF%(^$8>`gVs1_6Nj;kSVuMFf$S4PXHi6O(gi|VNWAW+7fX;Bl za!7DOa&i^I7dE1!oWeExZ5xJbY2MhoUEWuK=@8ssU5}Cai}DE)B{$-0)H4wpuYdX~nn(dnDd8zU zwsOJ8nAsMP*h5>7JG+x)!YnRZ{n^jMb@$Fb<#R{BslU8;>*4{6%j(OQ{~dMW zR&0uVkEg_~MMr|An=*rsb*aA3U%X3LQ2s-8;M|C_>AOLz)w7b_la-EL*X^R0iek(V zn?Y(GgN=)_jPBQAACkk!!CAm9(0Q3WxJRYvD~I)GF)v z@rxQY3rSp=E43d*VY3sph%waDSOK;=;@f`%TqI!Gd6!!&@41zL#!vzM{fk_b)2p|j zfbb~{i7Zhdtvb!>EsB|y)9xvSY_$VAjOywLqCtaN^&?cn4=X5_=U?u#g+)0*vj)=# z*0Ez^x?{{bT;??pSfe0N zGeH@(IAE$-y`Oze1+@hRLd$8)k61^P4Y@A>hba+Di^*W2S_qfCmI+1;a2AqV)273# z+VdRHUVaSfQez#RFdarL`3+1g&VmA3-GlU&9$Y8XgD5#o6PeE;g%&6anEnQXUIXEN zha5HJpThfv_}8yrPq14o&9WpetYldCsspq)A}J?=zez`UmpT*x?MSGLJFy*H3wv1-^j0QK$bO2#b*Z7{e9_O& zi3N?GJw7YS6zKt@PhDRPu7P7wK*#}I71u{lzXL*XIQP;occWM zf#x+99L(ce++G3b4bqLqf967AoRwgf2)bbI1L)NN$_UW0RT0z^Y78}^vAPMQ&WDIN zv2T$ZmJL(JU=bt$XdodDfhN!hbpFj)Rvb1oG&KFqB2(QSn{*6%5F+Z`eTY7w1uYM9 z&*-6zT_fb<=&l5&wlwP*s3?HlSwQ`UKK?|F-CO|V2zVN(S3ctGgT3iZvm#pP&`Dev zIj)vS=+~{Ke`o8-QcXNM1PC?28W0&q;iw#GEJg6zQHJ82k5eie8)M;3a&dM&G^FWJ z@Fo314YdkZ;_b2yBJCllCG;$PAZZBF0?{0lbU+#jc!5(0W$=hV?A)}ulx?WBAtqsB ze%_~PpqA*zNuB`}bp#e0R`MsabV`he8TvY8>%WTtl)#>y{6DqcTOoy3me0-k)q4b~ zFOpCiU#PiA{byQ+u9(yR>dHL$bi6g%ADJPF$c>8cv5{g4R__hPa9NOPB7}<5iOuF# z&v=3wh&EeiXH5uid|^3aANIy0RE(_ZX{%4-Led?pKW<%uj2o<{#o@r}Ov^67=`uwM z*FC+wIB}*-aq6ha`AYaRokSIj$7p4B@Sx1_dxa`wGN2$m+EHDBz_$8*=R4Q}e?8`6 z3^1YIp@mK0jLPc6%7X0WfLHra2HIIm99I5gtYK4c@{v@{P?y;;<=*7Q)dmL9v=1@} zJA{uX%k?H}H>GI|9CW$fSG%9M2pBH*I*7NR5UvJK6?|#pZ=m$swjG!&z|6z}l_Knm zv=X{uKsqV=o~V!@Xa_p2a7?ujm3Q2lIjCc2k1_vc2(3yZ(FKolk1sYQY^HUu!jQ

tH@Z4ybc#WF6v~XpD3IV%`k=qBHC*hf||A$(L(%yDj{n#(g|+B{l#l!D?M(5 zZVGA;)g$txHpY6aR}o?&aUYQSsfal2a+^8#>?197>2$_@g@-!n2!asyzV(hUZDKb* zHS3&@b!@D^q8E~0fM@RVZ;W~x?yWFxjn~T8bQH!qM*u(L?BeIk{Jy;05d1j*t-AK1 zD-b5|9?F&Wk*umlZtNldBv&&5_R?72-2~q5-MjM^Ql=d1D$y*(ICf4pbQ>!*-~XOv zJUkw@?roJ!6v9T5bT(#RznU6;#oSy5B??tYve=oENQn|+yI2e$5{O=Oax3z*gi{|y zyhdO|G7G}O@nBXj5Mvqvq}>TeBl0FMJ>px^4M{0?e4#pW5)@d6fhbkRYWV*BCE>YH za49ASd_zA9p8ALDYI>fSM zOT+6|GF=6!qNSx(J~Q2zrcqhWbn6uFh{^d|KU)qyJA_mKv^A()-;xK8jY`VOL~K<1 zeh&}Mvghn^Lr+#BK15&nc-Rf_M~DsF+tuP+sN1f#ck(LIfs-pbG-hY`&u%627+GyF z-b$IQeXI*2u(tgYH!lyd=u*bY<#f?R>pKwr$Mfw4L&RNHQomk{$Ol3gI5p5-o40ON z+FJ_PEGD6$!d`{MIzJjF!_-oulImV1zl&wZt1^;O7kl{Kq8PkGHTt!swTFd zntr2vR&)wGFW?oc65ggXUWj55KEoJQ@!(nr+a>g^1c%@4f}i!1qW1fD7dS4Ta{c*4 zBKo)PC}jqPEryzcqRzK%nk*oPlpP!#mRx4UG9&=vDWCQaL|0ENPy*AWrz@ieNHye2 z5}Ig|Nl*?PB~;4Lq5TMg4+Sj={v|Pyq$?y7A*c;@hY&2u_JE zLXee~ltVp_D?W|^x*#%}g6+Rk2z7SQ`zYfD4~@iv|0D%-a>XTi-*Nh_iih{$K}-ZrsE9=83p+tpuw_#8iiz;G zEmVloy6u>mxr%=zwh&-Ll}SfUgvF?SNi!uQ2rg#rF-FJ{$G%^7au4`s*d|CB5XR!a z$l0+OASd`^VQuuY&`74Tfm{7var=Gkjkx1sTR{|CVXFn)D7?gejgkB)GaH)E0D2(9 zjsb*Whe=C8Z47XV@fK<$m3^?dxeEt5L3{$rhTtk-i~&zzw9!+VosmZg-V0xPTTc~e zLzd%Y5_~%$2JLb+Aq|aAPWEMZk{`qVOeK7zLxuM@r9n%I-LbHrX7;i0 z@*}oKe*y)TmP|`gpRZ%~L|l%0GU%c1skAkt5Qj&~v0U_L7b74HxC(5XWGm{=dgdw1 zM2`kx59bcrqvPGrf4chSQw4-iOuY2XG1pMV!^aXD9Ly)OSW*~=O1sE^Jq|jA#tB0q z+;Qy~%7gGMctImcTr=k``h^M>A2Tusf3cO{{E3_@b!}Gna3PAvUu5*t!i2O{v{HZF z*X)8HNbV=hub$crV=y-n}}_;>NFUmW%&#XLBr@%wEOS%hh9>8^vEJ zM6mLoIp49FGgX##HM5wn`c6epd&9lwGna(@wwHfLXW^mkx;M74t{Ph0JoftAhyD*U zYqqT6+CH0mx93CDV4dmGeN(!u!cP)hj=W~n%kt#N9N08_6>2nOxGAu(eOu3hz6R7< zXoIi;o{6h0_HyhN%#ViOfl!(;)*C8IttG8r1Hk|we$$jTV%1-tc;3;ec)}?&eqWvS zO(&!SkQL!`MntTMmZLA>b+!gNoQ_p@fm19TN4P*RIqMI7M4yVc7pC=P0lc|q_y~nF zUL~B!sygg6Uur-rj}slCtr3XI`T~3ii9(?bY$a|CAkkL&&nHA~pBA}Y_3NyoWxz*T z>eJBI|GW$zI3IOvndsZvsRT@rR3U<-i5n*&6ttB4_wOHDZsSYJRy{qJ@QHz|Clz-H zK?U~2k(voqVjS) zP;k0UHo@|WSXxAubF$=2PxC#_x)$JuH>Z&m64V&m2VZsw)g)kHj1UIjZYv zlb5m1GX7{Tq-@4!O{>}?`)}x}V*7i&Iee(j8iDEtK?8kNf0HJ!_ecIhr$uLH;ddLn zi))aC*a~WP=`y2G2qviGnyQ@MozKuyp=$ARXXkVt!1NnkCQ?-j0>NJIC()1-^(d&A z3%hppe7cqk40*7$sQ&WEzAXHn$zSFzsxnj(cdn(a5%)7N!ZF=9*gqoM43yk`xHv(b z8wE8>C$3iikEfy@^6@QaueTLy5!>c}6gMI(B9_`-v;u5P3XVG@;gt_3y%YkCDXaPF zCxj=z{y~Ct6l2|I6Po${8eQ1uA|auhS~}efHhC0!jy{q3N$-f#BhTTL6yUppeHDS> zfJ!#h(K+Qqpk1OjCZUIAk~@likh5tB*pEiD83Hx6N6(R+7FW+#B8wZtS!aX`@rl?I zVteXp-eeRBnJ{)}W{+?)0Qm*G*gmD_9}$G=hCB^<`0yi2A#MbS3w0?!rye2wcuKm8mpp$^XyGvy#TdOLV`0 zzJWW8c|lPS8>L7O7U{QUfeR&wAI@Z)29jx`=tByW1_Pb|jcS_}=wz+e# z(m3?he(NytbiX|Hx-e5+jfK`|p5xD2JbL@4Wo8P0NUGt3_M!#jvrw+} zU9r7B%ghYHD@x#d5$k4|f4PAkS`e3_YLM{8WUzs1-?xjSL?%DJWX1hd3`&WpB~joN zEaIX`FTLvOLUAlfwTbQ?(l5eahB!|dq6HF{wHe(SyPhat>;*=Nd<5>dH#F;rcp9Z76GKnLh#4g@41?yY*NsBkIzZNOc0x$jP<30DD4yx|0wPcOs+ zoQa+i21*W8{JY4!|{Zg>Dk`61XnA7#6Mk z(I6ZlO25rT>CuJ-_fdV{QR)}##fhl#Q(p4HK(3(H1jNk&gKu-rSq7 zCuUn`H?O3tzX-mLp@6U(;Q>TnAOwlRySBELor#Hl3G?JfOMwVYrCrEdj|%7ZZSx;7 zU{@isN4kj=pZL(c1e|#&iOG}LO!?wgeO{rkN)!4fNp3QK_DALh2YR!|~37 z1;qjQFQLQGR8k&=`9jMnq006e{#J6{Q>t~J5<(>LSivNnM^RAIgNML>!Kn;R1AimO zypE!Q4`;A+i|==8DC9gBdx1b_+H$m;G(~@D|JqtZ3}iw8j*fo@5hqNEBuqb{NDxyv zw&d^mLfO%X&C6Iqx(rdfg6?Avy6m8~gEk&-f&vo;%~r6;f`!!FPBpd6MFC%O@Y_be z;*+$Wioxg1;VigrQYY1z|MJvj*nU)0M;QXsfbrENC|@2L{6tDnG6ZvvvupTK699PQ z2_&H$wp@CD8a_gVjzS0@RPF=@%0893*JVdwRsvk2?;`t}g`qjviY~HMI2-^~it?!~ zX{K~g2?htm2q)NVZZeNtW#oI%QG`3-;xJ=qd~~_TmleN#i!!y$Ce4kHAglxw-X|(D zCHvCoa^b5zx-k4)N>x<{siE{p>;4H*Rt*Y&uQ$y>U5Yb;UBEmO`bxbH@^KGvzxY9r zl_Z8KI6Z)UAs)I^L1uxw>iLW<*Lq()RnGMu*I2MOM(<(cP6qfl<9gZ$04vI75MiX~m92L|Ef7gh zajT|HhZ@m{G3gX}!m}?-(>VPr(PtqKTu zw!d>rd*dn!MLwZ1w2I;{t}Jv?Iq^Dfax2T&*Q|KN;(!nkAtE=5?_1gw-)DqIs&wz- zSEdKIQ<64-I8EEgNF3X|e%wh5k7X^X@Ir-4$!RV_f%9zdjP!*Iumnq*yxPxnlDH@o zlWY^CP>JS~yL<<0+q>*S0Q&%K?tR$nb}K<{KSw~>eF5k6=6u;fIIHkbV}yH_ePf~` zb#Bh9Z!f%_$xbzVziQU=H(G<$Vf1+f1k_SRkPjn=YwP368zdLyv%ngoN0=WWTQpK~&VnFPA-a=d>nrwqn4+c7%9Lvw$1I7qjLRibMICb;E|yG@oi&XVJHkn1sT1X8(1fF z5IgTnWeJ6%5ephJ=&2%9gdiL6+IqoaNMbSnplbUbKYukMsF7v0*Y?99Py|SjOLUX) zTrkPt97#WjvwdWM!QPWK!iH=GS@izHp$|YfLkYafe^YV01&KlKtA?p?2Uw%~_@(7f zU|qVq|9*e?M4h$uKx1m_v5M#kt?H4A{|>FG7#jh$S@ch$Sd-4vO)aEEHTL>CsMaK> z#|NqiYDEefs=!GQg0}XUY7u@15A_UvZ%`=U`2A!qI$#hU6Az;Udy2L()$lItigQ0t zPPfd*joq1vvF`3N$1ALv24QSwv&+2G)Fd|*E+JyV zi$`39ui6zsKd63zwR`Lw9o2yf7osww_uDtGGe^Zpm6;-f>D{Ek3Vs)_6@BrOAd`2I z4k>&}z1C4GusiE1d?3%&Ppt4pNTco_%SSz*QR8FjXS*yBfg()-j`K2DJQ7`fwgfst zz|)()9LNCL*WVAk=k4vSoGU}z3$V%i$DC0L)T?s##e8?y_wKIj4P(xE*E+;&Htgu` zYNYPDf_B~8c{TRavCVyAl*v1Fi6P(JyddBG`2AEqJuvWm4daDC2++fQyC8}>`0*vX z@2A@+=t9Vb;FoABU>lY!_5!a#$Y|&a(GIFiu9G1HE7xG+N2W#K5j3R;CFmr^dk<~o zhKLr!>`a$P-36Qx@-C-g1O29E4%P^^qT%)w)SF`;jt`Os97qmfM14SRIkwb6 z=zwk@Pe8W=8S6${^5`jDHu^^k)lj>K9|gh`QQ`Vz1s@vwF1= zN@4_D=4N~rig;zJT-#9_C}7^|Dm?e>E^{rcDUBv5eA85je%}D8?F!x9s|`B#yzD z_&0_vV?hE1)DE9JQIltKbRRVTM2G;jG=zP~EZvJZ=X;O}_QF9RoRA1*ke0lwh&a%C z_-jcME1#i}Q6*{Y?}V0vM8F1!3CzP<$KAEo8ZftjMk5!%x?DsJ@#>jj0H~D)P#z6F zvF_XFY$(BC^`Ha;5`t9!W~e2LXnY^Hh7o;OT!X4pZnOj3QJjXziwKTzP7bmLM4c@b zk#3|l$38~}=X+db)IbOAoiJ^2<8~p+ydQs{8x4W`Q3VP1P0UY`6>VaS&Qjj1Ku&Gc zHC&y0nRg&$fzUi7_Y@R-uB_#x2o6>N<>=sV;k!+n;JZODD_^{L@w+sIJi11b=mH@a zxDmF=ylsxm=(Ku{RJse&R=RD0+6(h$tuZz_dIeh1iQQC3G1rI%YW?$tixXP`uM7<> zetWcDkms-4iwt$FcWg2CVgINgR<)lmIL#0OR2%Us>GHG6hQ4a1ic`z_b+Wq~n~Xlo zr)zvW85BFF^QcxPjQ7s=9a7qyznyojytLT4;OKb6t+E{t?y(*HQgXwGx5Mu z*d~8AxMeV{t`$6uys>d#Y~B7c5(@$HfY^=R8bnH73#SC5yeY|g?1< ztTRxbcp7$8_fJ{+q?%v&JieI)@#SXEUYOK8n{S_D2sHujJrU3y;5qQwY+`Wefa2>C zw3HDR;Xd>>z7;x7UC*`2%=~;&@dXe)gqDXoxd%EEg6%ou$eupcdVUb=0$IeHvP|IwpguAE(ix`S*UTf#+Au z=t(&SC=x-D^UWJ8s&P~!>;*HF33JxJ}0EXyWFvd#j)7UOfpvZs?h+Z3* z%(ZhM_)rPz$p|kx4_TXI50XGs_KhS&KXaNGoS8Gs! z8oydAWn*x!+8ap=GzbL}(CMi+wN6uBLn9b+Z`y~w^lxp=LrF{VT67(0y}70r!Uq*^ zd-@+1eXG|+9mWFGzZCaxL9o=;7AAy<0E~h=DnOUVsri@dqqm^)-LjrR2b8v9O*yDb zPq-=M%wfR@eb7A&rxlBuF1!^J#|whP;W4d?7qD1D-Nje2{s4NPXDA1JYq{3&)Ce9A zz4TZE9OnESoW70(?+6XXfg@@bv-fG&-5hQ3(%;oN0)0hk=b!|LR@vc(m!%zExj36H zg^1zN@tZke8H5mMf`by3sFz!CR4LlJ>=d4xI(n`RYd25xG5Pb8ZJP{m*7!(hr ze~BRLg**H9!7q^~n`JklcbJi^;=kV^LRT5-&2`u<3uj0wW!pWf+N&YmoLrO7z7vnwK!Eh!T|6({=!# zCY(2`w*+TxEpR!I@whf9e}I|1$B*xe;V&`-`Kfp0ELWgpFU%Jc=$S0-gQg^ez+O+EVb}w7P+}893u%(~0M^GC z!c~w=ZuWg_aXaa|p&mcnJ=uBf7~v$)8-`PQ=u@u4^#;kOlFzELY=^>xihzQuA-dJG z#58}n_rG3T9V2c=<|)YNA)2oZ5podMa0dlG+NU+I2BkoN!gEsf2-8RAi*$HOa30%7 z>N0$g{EofeHYWpV0ek%OD+n8(Ne5SA$+MLV*z^&8)#Cs^@ttwWcohtbuFOY74hh7gz?Fr{yf<4YG!CiB--d{A%T%X#H#5sYmJME zan8BgA?NBCvMp^p_6pF!o>0fixu3SKzD=At0`M0px198m&XM~8W5^bR3TU)`zsu_U z;|mth8PMy($K}6GIwByNotwzt6FRtdvVRr*^&V1&X4`fq6yl!W89G>fuB3|zb^K>` zP5~}>j>bz5vesp)bI-zdr4>Wof%Et(aJ;s-N)1}oj6M^YEn&qjLH$iY`G)TRF_gF- zwqMH}MJsi(2C>yIqEIn$r#UEa=-}XHG_X@K%Q0D5jjVOBise}M$A1v;ODH}zwo*B7 z*e_}F=a}edl?tW_`&`mSuvGtk1^@=;&*snof&V1BIQHj84d1_icb~tw>CTx^!~g;1 zW1tJl*ia3zRu+UG&ew|2)2n6Py=bppnfcUXWf% zP=JgZl<9r>oo)=j&l{FYpG8R!<{N^5c=#Sf8_4qE8bFU3BJnsZWm$9xI63if$X0=Z zA?zXD3E;fYB=JPyrSBo3ztO*~-m%uiTs`yJS(nK&Ez%Q{s?#SVBm}oaLFREFFB*NV zrbhr)69%20=Kw<_VcTwB0!5QD0^$=<$c^f03DxIGlwN+$<#|Kv53E2d*hoS?el`OJ z2^d9SP4FAQ{71n^^b(8?#lvW`=^#R* zhG8c3Vshc{=;H~LngqB|{Y`HISx$xk8Iey)Mn*J|FpO48K;@FImCPj}XEDtclVMs$ zj@u#?;t(`k9J8fhzJkwcmSZ#$e7Fc9Kti-Ps4kEO8$dd6hX8{OkRq0FKRX!FonIHlhLP7=56h#X>QbewZoGnZA85M>c4G)ShOvH#-3B15!fv{b1 z5GOCAmI&1ueJFtk>_qRSSk{3$k-V`NS9?%&Ly%5j61)Neu}IJH3Jlx?OMY zY~Twngzz!MXxVg*GssiDXIMA^eW{cGs)j@u>GJT-~f{7?=;?gQBz zxLo8sc#qBEuWvONyyIgv%ODl(P)MMNJ4B@Ard_}CE)F<`6?-A@jkGUhTMHD}2QTf7 z@I+0}`!#O`sAsvJI1(YdaXz(dKJTxN_ZCNa#SIvkV&A(+( zE5VWqbAmoSYI-AH^g;*q2f5B}O#@0;9dLtK9X=&rV=qGs0ktQ)7$}V%EBhJ)Tp!x2 z+8!zvEYQDRwuuGF1ndP!?(s*P!9gK1R*`Q%huGm-w#R%u&hJ2P3+6#oXp(ROe{DCU zU)#03-~R~FUSi*HKm(!b57!PB9Igg>2qAoh8_sRPbb+D+jFQ?mi^l>g|4+L`KI5bO z*va%Rz8F~44OJnm0xynoubtk-;Q-4OivePD1eMceIS~1@4gGMRfXXEn9Tl$3(kNxI ziJGx+7-*PLI7O0<(o0CtgbI2A7&r_hX|SiGqf=zzGC$p-i2iAiM`+|Zs!lpKJJWci z@MrXWYi|yw%tXBv>>CdKLGS<->ANH@2d33kJV+GLVvw}K3<(KgE}k7raH)Ztqfj@c zoQZ-D=p(K#7S63hgQ4 zFLY2#A~aL)<}N?+7xteAZ1(;3D~1E})>9oLPx@n8DzAHe5JoZXS%|%O3ych&t2TiV zGk*>%BH5K zi>isqyx@(LqY$iBUxhsoivl1RZfs;yDUO_!pjlUVj9fmn4|N-BO+T6&@^4iBWo2hn?(^E+xuQypVXgt2DwhCHu!qbUeLzVXdSW$TlVm;t>Yg$qQa zDKb^z-G3Rxi{YaYhV(U>uuj%5xL2v4pGBo7(=0O^rUni~Q`MU;SACKS{cvTj(hBo|m+EIOiT zE0$q5;3Xu@wiXCU4qCt>9XN{OI9ON*7LTG*fV=K>T3qXsi^1-b%3+Xq5-K%G=w64G zIS!8zp5ahk35c%|oCF02YusliPTTSOpP>H985xTKr%tS8aO6RR62Y(_)ybXi~0{FBS~#zP#D2?pWS)Ca-Gdh#B139(;{uymDrAu zDI&a+1tS4Z>*R|gPMvxrwB&G92m)T9vKW)((~TY1dhUy|?hV@V2BK79r^eMiXqo}3 z6#kK%1F}0bRHh_JMP$nqSyCa9<^MXrU*?|sd7k6qnsheqqkOT$sdsvk zh>z&@e|+8gGgTolAq|nQ3ip~Afu;fPAzB}m$n0P^lu_1k`7|TqD$iDAHZ|fIs$(nM7T^}SUqW8( z7pXfMH*20}O3V$~EYTxGMR@zS>mqzW<#VYIy_xGwV4)~-ob_N!#v*0tq)P-XT4Y~c zV)>jQO5TE;{>|S6fUSUsv1{fSXIf$>tDX!G$<#Sdk;<|DyFI1ltGw&~N2VhfjZ(=6 zMN5J7dD?g?$0$3d@s^kQ;Q3kg{WnaVJ#B8u%wXMJO9vc1uNaj!P36Ib*|TTc4Yivx zRWV=wK#?tE0xY$S+39C#yz#H1*Ve~fKmA@SE#S(GJl|Xp zQIBnM_COYf_VT`1i-@H`wZ5v-qhS5#m707z#aWWBcHoNOz~v*v7b2NCIXM6uDYJrj zL<_~MaL6Bzg{Cb|vd1CEr=8;^wlqI}Zn~ToG&zwOid+K27=HKebqZ}rFqdr4`*99T zR4}vSO5y%TJC&bis8IkTd9ZH6ln4VVx~3DXpGtlEXN_^;(^*JyHH3B%U-9xPVazcS zn+8BkySRUDO$xce!eRzd0aazu2o%&f(Yc^tBMQ}9NN)}+NgYAv?$f6e73Hy z5M@Ib0~1QEPXZw2+%6Sd8FcwVFxlitK$Osszyk^mWF%7HD`Xarkw%^)uLQK41rM8? z)*p7w!eeuU>bB^J^ZY`Q813dHoyJ9A&xx=a+g(D6PPG%kfML)pxxUh7b>`{QRsvCn z+2$2G>TEV$c4Y&LKFl}e#`etzi?-1w-=#|emTv4Wb@1bY114(_;GvU>S#GuKUcA=T z6~QD))L2e^s54VIFrD(mil83SS7Nq4FhQyjo{{qG&fs31>gFyAd=;pbYV7Pq8QvzQ z`k?gXH+o-r{X72^A6vF^5l&6Cf^gckhY5cKgIj2Aakir&IH92v!q9uqnW7;~NnL$i zbG$NlqgA^koC7$u%cy+>Z(NL%;GGGTcA%(ffHh)lhaN-=EUB!l&j7UuuQo(QPEm@U&g)g^wfL*|^kXlNbmQuRT>+u?jNkIAR;+j#7@x5 zSR1Y@1%1F81EbIP+0#ExNmC##pIKIRO#J!2X%WgSg3{EZXU~QYVpbyB z>x|&**HxRbK6Xw?1XfR+;+G2VLo-h)t8E=;|x$;}s6)-nxDJwrx9vbFsa0W1B~= zC|$kc)VM`*L@|mq7KI_A{Y>Gz>iy^)Z*<5fK*O3bkn!H_I8gFitI{vF*m~~pe|{_WihA#Id8{5KSK!U%qh4s~dS4-jhgPGZ2ZdgNT7GN-}Hi@aeqJr`6%T|S;=n(wG z;(+f-)Nln7hxP>D+ypTYqPh-BBk+4F_FGQ#p{|65s~0SzF52JE7o4-c3ZZH`m2MqM zQgxJ8k!M*A6P`_*_?SllYwW^=tn8@Gp(Q=g{I zc$ub?uI}TcF7HTc@Tqg>P}8aQeq1!`meJQYpC|qHrSb9CuVHbY_m0NEM-)`TX+$i= zb6I-CTzD?ZAR}%`WFI&0{4C};+ANSqfaGJbi zYm!#Kb45a$Z&~XC#zc^&sE&D^@;{kcgugCZu;})Pxj-xXj@=tO8b-g@AZ$Y=;^AAr- zv{KWlx|w7gGw|CT?e@b7i94}K!;Vo5C~k7ognd*}lgEi|D58;1PUrYkJ{1WSa?2eD zE&Fv9d~?lp2hV~NJbn6W#yl9;c!?)r*TtsWraz-#3N{qa(h({|{2+&V zs;F~|T7u7(s$vucv-3WQtu7K-5i`S6yrCkhoOPtQ*HQ3@j0%gUuUrb}H-o>vRM+Rd z0A}>9Y&-tgoDE1(Z-qKq3X&y9`AxlGsM#s%LV2yNiTy{_r|P(kZcLb4*BKItXfTfS3nd;^vR6N*yS zKLM;#=Y5(b6)|C9FS-soE9iq1C2KrwWAUg;N}o>FVeqk04TTh3c-_wPnEey#X}gsw zBgoyP`kG3ukbAd7= zp(7o8yp|~_SGau^3iHEtr2r<=7$<#^>~H=sFX?W&6sBQq+r`Fi#K@7NXABgakO9Ov zgxzS$JPaHlnG!W@9RP!z;L;m4S_^1i8$cuGi_Hp%11y3-fQVT{3hGk8;Y~-an+Xh| z7BeY8?Gl9&EOE#ZRf$x2h1g~W0=*tT0s0!S!{DU^0AKSSmq*{g{jyt-ji2A_F131e zv9<&EEfy8Mz=F-Gl?e2rkle2;pxO=fdlTwHewU!Cfp`$}I_7xh#ooPJuaP8;G$U@d zk9(own?gK;a$c?ep&dPB+n^!+dPHINW@7Yfgm5{4v{@jvYmuz%ltDMBBG>U@DbExW6&D3xllT!4p2>3 zsZmEwSF+ze=T+>I^WwCLR{KjKn&6vPKaWTWYO}1z_ii@HvU|nA<`S5$kKi_LN3#kwI=oi?nOyPKC74GRr<4S19 zkdzALTH1kB!Bjp%(se<90uwqqeO$vS1?nndv=xXaQiVs}QhbQ@&t2ZGtvW}Pfdb%! z(J*|XV`4;*&oYqrKm*8V+J^qBP?!?P2Yi|o*ok8XdLveb{q^y1Unw{=bFq?!N1^yQ zM!xCxLj|3PM$~;ZH12$Q%Zqf*-8M^f3W=#y0ve;2XGc&YjssvUrkkw!CWSC;y-r|+ z02gQ&QegPd#L&1U$D&37hz7{CL|~hj20d2o)bwkpXcCGv14k~`Te>+iqZ@5J(4(rG zYrqpx9t~dse0Gxt5lRUpfGE&C@8VZR5JD63Vlphm~4n9Bx#ig*J{s-hM{0Td@m?3|9QLayRRi#T6>Ze} zM(G?MQS}wDLoP%34=#%x_1SE=v=R0^kf)`v1Ut@f)QR6j5;Vc~tpruiWDxcQfE2;7 ztki0Xw$mWEGzfad8UmL9muVGF`m$t*JfuhkO*P4OziIK$NJ@QcMN42vd1XI*oik#b zKuNAy{ASU+zYeVU<4Clf|FB`fx|h4lPCfc$SI6##$6DL9vX@&FdCA4dw0xm??8=B?1xM#tH1spQN9WW0`GiP*Ux3>p&XmEPY=(AA*kyX^*Cg01*g;fN(*)RtTN!dcFWuOZ_TE z3o%7P)P^TcthGNZEuxgQ%2pQ$yJNFe3_>z|BTsN-1#d_KDl4YZK+96}9Wk$)e@Y`4 z=OklOsL@j6AWg??(O7XcDU=?Tn0pa&f=0rYv#zax9nH~ld3Rv2(_N|G+L`_E;ylU5 z&`oN|Y9_S=2+#jfQSgc^A8>IcJE`im@urXQuqR^XipZXHWOEF|b3koy#7G<_;~JLE zbz|L_gkifa_$*cd-p^^mu8o|-wyXOiiSakSlJI7+3nJ?8aCI4bL*V*}xi@dC)l?oZxuCMbY?^mX8szPP3Es&r;@+xW`j3WW#l(FM4&9tEertLSu zWoAW4s%j^W;euC|MoW|3t{2#4j$Lv_y<*_o>#2u+g#7VLXY_05%337pdA_U9;(Za< zcvtIO*;x7ROLblCEbSdz{=TJocA;`@ecI8MmEJPd?d*}%zOV96o;mZ9SS}c|dW%Ft zG7S*vJrRE|z8E1!LDJ-A84HANG|C2o#ir*&3!|DMG19BoQjU#($}|^(&S**7{jgme zxg3oivB(C)#2_@5QALm1q+p*A$q~mVl1jOM_D~ihK2E5J?pj@LO1cVV=rKhjUPz3?k5OOt+74{B@FN0%qMsAtg zde_dYUYjPJwKe*T@!7^u%05MTDXV+ZQq9RJKUJ3--$av}N}|>++2fav+umUVylfn+ zf9ri+wM*l+SZ(RSxZA{esZji{cQ;3SyLp_{6YcC6Ioadl(xCA%4x!7-Y+p-j$ab?L ztnFZUN@!I)+X9?k2~iR^0wM(#&vWL=+<+W;wYD)le7vahLMozMg|-VmmNp|5Ad;Qe zv|Y#`q+V4d_HMLCxf~LB^x@ zgocK~BUy1S{4Ov>T1UwdHa6DQZ@-NOeZ5Qf{QKHC=~CF*yb*-_;}&lDYtCZ{*n8LYkNIv-}sgx0Ep=H9VR7@t@1TCU{4_ueZ?jA26AS`l9*0!@ep}L zmyYIDWDu$UD%491+@&dtTnLGdhtpO_iX%-zJPn6G>?jjZw2UgrqxO6 z85|Z0&P1~!Ujku506`596cMN9PN|2q+8L9~E<1c!4zbe}!RYssY|iNK?%bh%a~S+=Ps;((RD>bL4mr^FJgU0?*aA$7!g8 zG5QFcFFzkAY1r{Dl?OA0h$14-vGod$O6+TSjpoq9RZDL9r zi)FLJj?9^mpO-hT&#}~u?}nlXM3uzJR%(t`Wn_OFI*bT;A-~0(7!H#Pv5_3i3EE4k zlWWch>LPJ$t4XUH6u~xiAO3oK(Z%PhKUbA6sGUdzKYV9o>?AY;&E|tz#!!)pGx@qf5L* zZ70&5LIqJhO(!6_I38kamNoeYQ4ZaoLJg|=FA+w*P7BL^dvk-so)fCBAWxx*Wg*+*Kt;OL_UN{ zb{$e#*0)5CBx>rJUOlC@%WiOl>p|(m=w5B<1^-`>bjzr_En0mP*LS2DV0wS>!Jai& zdv477`+e4=Uw>5n;b9(iE7Q-}vmv}P^QxbsV)EICjd#bM4U3O(op-(Gn+WV@phMK# zPm9+QrA_&^*ycrWHJKA_nNxL?ldhKH2_s(?T`v4FKE=!oR6^V|sAR>r$OwseMkYm=Q~6Vli0e*~2&uIh>*23!7k|K36j z^ro&eG6b1rY}DSV7rx0m{Q`Y=i2UjHlcas?UY#PM!bm^^*Mw$XXM{X6P*88CLhH#c z$6{d?^nm(dpKyp{0w~dN7S*Q>!c`rez4gQQ*H+`n02~P7vyRwKZekB{I$Qm;smfqv zGHT{jN_>zWz6x?PQI#mqL*fr@8WTSMXrSwN?#&MDFQzo5G-G3ta&1}X|Lg17I&Eiz zW;dJfvGrn(6h)c8d%}m9w<4#FpbAtvFRLN`;qiLbbF(yk0f&LEO zIL+$J4q~E|(t%3e8}s7aIDG`du;pXO8&AXtetX%U{K8DppdiR5TF_wbDm!yC4 zdSUQV$J(#&KTN*B>7fyMZer74md^j@7bOAEOqxLnV<^yXaw|0^L|gAXRH8;9ur7ij zM@AsfYmR8Bh)B5Le%l6)`*Yewzv%(h0s`iam1^W?s+yWX1nwK{?H4UBRJz3^JAee@ zCG+BG5+oyx@P~@Pjf#2_aI+VzngryAh=k}vs(eJeQ@{!)+cWqcm9**>w7rTr*y681 zGiUNw+;lai7E#PuT-Y&Rlx9-j4vePiI~r_5%63(zgSmfCR4!TKS7$)Xz1+m)C3H$b zN6_ojyLXxpv;%h#PYxkX0Jl!|L($o>;lqUZ{(d?G{Ja*< z(7x|PhX-SmCdhXP-{MOrP$ao&{o`xBZ2-bhQwCNYr@r)6$%iI=*>)b2?B7jKp7>@y znd!)mp4fCjVMW>1*4(h-6gBH{eQaz8|Dm@4h>FUhf`Z^R*1C$gon(mU`13BmvC@*C@P|~Esl!Oblc;S3fN{S!Hb`F*Anbe= zY2k5kWk@M**9Dbe7`@}E-U?ra`w;+lF@m+iwMcVh$B{N-Hwt-n>auSla$G0Vw1XKb zCN)yZ+u}S^>hzt?j?54ttmvB3*$xj4<>XM}WORzaTMEp1R%Yg%_nXP-N5@tHn>D!= zRZv;W==Ia7w(it(D{}Ws-QkVO9sENeqp~+CTK1+o_ViiVw%GO+lOhW9TMrl`w|m@; zw@ZIJ=C9s;n4P|%%B8N=t@gB$wg0to*Gi8&Q(6Ud_wO#daQ~dSm;3eWKGN{?^Fg7% z3=j3lc@kj0y-RMj(mKmK%eO85Uimymti-~?hh=O!oGOru+?-I+LL!xD+@Ast7l6cW( z7q|uy;LzvD*%Ftw{#x4lzbfzQr!P=f`T@u`HsB7BeGJ&?lq)K=ZKcGto#ii_4$i?k zg|D!QF+M1ne(L+olnhBwVMXOT$(|b{UNS2?a)}gmwo2IHX_8CIbcu;*>qVl(pw7?zqw8qk2e@ii_#I-*G1ZI_Jt|XeuD_QS^KP1E&0l0>W=3;z$*ngC zSokWjn?N~W&V11H5I82H1(5DPQb&W5dSykZ)wt#O!XeXlNyAR-ATBI=6j(oz`{UU2 zJ_4k#%t(_(3caGDMpKiAbpLY5Oo&=kySSyh@&7v|e)dalp4ojfC##1B08#>RF>w_6 zfcQK8!#gMv!ySEDlFR85`!zf+&OOOZJz~F&x-XGl=j9>#ut?>l0e8 zB(Pvlj?H=Kx5j6-3OOnTVX{^R%WM(@BZT_tpf6!N}%f<_QI z9GQdLfY#Cg$#11`4}oFnb66CQSbNB`g&J1l`iLUvyLbL#e1QaTbLsV{p@(NqqtE=O z%8r^p<){w|x)%*yG?pfIkcQ9a&5hYH#>Q+H0}6qq(N^ldV7a7uk|1Z**VkW}F>S)@ zH|xjs;UbOW6|_>bw@BIGJLlUNJVWVqo0x;lo8^05q5&rg#fl4~vW%5H5Dd;X(~}OV16b zVMI93TXGbvN#-aiV#fN=cDNt6Z(o{oc|gFc!;3;PSbJ7i3gCd<@|#|S&2YwxNkB@x zdP@5QOXGd@fkUyN8(@Hopq3=BCV!T+wW3}9De4e2OFla+B)~pa7tc3^~3o zdMIF^37pwaM9nlvFJJym;7ifZ{(SWsBYKPI@my14~F!kq*{`9EKV8)KXj2&)Ta>L*~ynt&H_XPO^D->T`hD9c(jp2L*p(K1?6Bp45GNs)B-N zf%9f-oMTz@l&}cX>{k2GXrmy`=3oiwiHXz~2Q6kB*W9&-^gt2;lrO$rl9*nps(RBc zO=>XKA8I9FanR}nm;Fcd7a^O4JkGbc*3w`2e&?yJG#-?BKD2q)t;)FAEIZ&d`G0>a zHX`O)8F)%PFph@9j+HnK5wui&8+(DIg4XgBKXpXA5MdKiZEi&i_tdVe%?F0(V;i5`60G{c&@TAH86be z7Yrvg{k5oh5Ge4LLyK~brxs0UFcqnL^p*`vp5{~~v{%N@*Ci=LMKP_J z-20*4QF2{f zG^#InEEPSpAz&#U4CU zYH58|?4RfY$gomN)KNbhmyzrs6>-!2LoxMC(hZ$4dYYY_abn4@TIOg5g!`WIpTm8w>}H%GaBAd2u*joQT7t3RWoaj~*?#QAGZ1?%IKbMKtuAj`lefz3Y zHn~fb1H@y(gHV5XB4u6m*$UTLG?DY<;NXztx|69F`W;tNNTYzdC27Qf2s-@fcPD$O5(q=m$sA+W zm7O(V|t6Q2?Dmd;7G}YhO|W9QG?%a{8!0bdukPVW}lE?yRlL{^&DMa`EqfZj|^6APX$cybBuJN= zEp>!`b}Rbo;%pK!y^p>jDtGg*;;J3dO_!*+062STtuEAbM8_VeI!sd4PSjb*_9#5l zgeXSsr}0U2+WM+L6#sR*%V`E3R+u0tq_lc;Q`Rk^9w+Ve(!|5NBA4lhjk^t!3FKQ& zWm}5g1CIU`(YYCz`xcjnCT zlOilROh1)wdQe#aE@9N-sQY!zY&dl)7O2UHKDu82kPnN~KGn00mZuaFy=o2vNKmh)+A#O`f%%uKH zT)?i}xJyVG-MGPnk=yXK9v6x59iN^7+{}gwj?T&Ep8vl2*)wL+?x%ViKe=q?E}n_Z z8jw24)84&%HE+nZX~m{zF$9ELe+lIyQKMM7?ftJb^Xk0DH^Y=aE#v7t!CN{+mGvA+ zFpFI$(5K3SlJus$r`9<)xRn*bb9{iPTueJs8V%fyq)s#`Q1Yu;)tt5}O|rRqZ8m-$ z0EEHi#Yc;_kx+1O=m4^?AcEjl{2>%Za8P0>GcSsWl~!^Z4uwkU%aX=x^oY@g6^$&~ zJ?(X-O4k2#K%~X4i=^{p6KU&bTRE-=lEogO=1pQR8Y{%yi-1p4pXDTq(VaoBs`lyB zPods`=XFp_s%T}zb$DUgM}Ly+s+|ks343wm_|6EMpf}bG5Tj_v(!pWokdRE2V38IA zvs&HD_eMOCk7%ai3W3!?t~NSOWwOKG`>p#*`HNe(S{vmrmj>`OjKEwV1#P;F(D&^8 zxmNm`2WDP$HZjKOQy0gzA+zT)CiyF{^}IFGnD<^obdmfqN!NqM8rdjsf$WW6Gz|%O zWhLm-)u=}c!W6B>ugV=U#quY1?b=n|SK4XVx}Ge66TFDgtKJhLya2;u-zZ>{EMxu} zZHMAG1lX%uuuKpZsO;J6*ov4SaFVbmAZqK}StJF5?0YgfLo%9%SWiVDJxE)@YmiS6 zf{ALGiX<_=9UUFW2C*GxRbSD-wh=5cX8Bk*t(UyDd($=~x1!S{fY=>-@Fs{);E|yY zM-?qSzOj1rwsSS1D@SydU5|u`Q2)=*Usco`&dyegbh){FL|u-80>L_wbKU`_73;k2 z2sVZnB<5|JHIyu?&{-orp-rI{yXb}GEfQ0VLYF_yoBSUA(6U&w2jc_+3W23k_QM4* zF_R88_Y?<`qX%S^3U>F2WZ!4m5oqWQ3J5PQ2Eihf+9F1G^-iK@I7YZ$;qi8ils=c! z2IKto>c03wf#(Mj4pfU4sOSrdStLFyvg3r*C|!R;8he~hLU~#q!WxLKst{}wRnx;W z!RmKP{QjW1Eu+-grlTS?0-f5&3#vSn>vgFg(SZybf#II5GC&U`UEL?=_#iRi>dFQf zJWWyTE>b<_Oov67Bui72^8;;$cj0CEroah`h|L@aSZ64;z4qOuiRQhe(Dwr_N*+We zCZUBkH`iLxxo`W=70;f?AawFL^n79ZoiBtRY`dSS>xcybdaO*+U7V5K65iFauQK~Rl=^+sO| z+Z!|;+@f2#aUMl)m7iCg>{-t5TZwNK3ln<~iIQM;o`T1hmN z4}R0o`wc?Ht$b8YB^~r%#cbU%n%bxh6i3?%qOL0_V2ZN0`3!B)z=0cATUfLuw0u4; zg$tQ$8z;I(c-C6WRle!-;nw)4mK#r|zE<@MHcGKPQSj%2s-HLz#T6AvWo6c{3cqX> zdY9;%gkQbc9)Ofe_n*gJD*U2>Ae7>*i%*|C=|GP4v~KE!uJE@z#OHxd{}p9L(o_g# zG7H}vEdur7kyIEO71n|0rS>}2&`{>s$fGeaF?}mrPxn!AMeApI3`Hih0LD-FKOcFuw(+ggso8-EQ>IJ*t5SWoKC){!>3>G~ zzbmX$Vsf(_qvFcdaiVkT#M2HJjjGA!)P2D^p5u zMTH%ldSNGkZ2%iG$A&s#L^eO2425VF6G6|c>DgiL^R%>Gb{YVU#CqYgKFE*ZP3u~8 z$cA+Hw3M;u=VN1Y#w^)tVKj5VQPr!TU9^-GHJuo;k<3M(yjNqFr3`(p?bihmqi(;h zH@W2EfIS31032G&Fi4(czVuqXxpq^N^ab;@|MljBYRi5PD(FV5zW`m*QTV6wQEh2R z-mxoaMQypm`Ni4P^}itJn#C3Q&OszgSFK&!M&|j;mwTWi$f5nm+8&*)^0}d6N1n-_ zbLD5$Bi85qbh7{D#Xp<<$jW%SUDeN}WawR(wZ-M-;oKu@az@j+GmSx+odBfI5YF?~ zWl&;iE0DEzM58jg+qY}FS6x&t0O!F4#;B`%0=``B;Lu&BYv+CTgpa5Qz;)ojB?$fA z%@=MU%5Y}#_8!oH`2%~XQT6%lb#w<1CT($YdWUMucPb|4toA?q{eLgV-QYfoM`yPo z7}z{rc8-t1tHZxfA5dIU;xOGt*P`3i_5vEDv8A{xWZ<&lB|o{x$Cs?>+U6&sh-)Ds zksLRgNrn@&dUf)TiOC-07qYsSVb0t2<4R6$Y<;cGQ;!{of8IM)1NlJn5_)uoJ8XWL z(G8HBS8d0XuU{PuC%i4HETBoF0eC=gY`v3$dYEip(KyC0m|HEZa)pCr*zxrkKjkj} zKDpK>TtD|1cXt=dsYSGD9`vdzW{}n&JZR;`3N2Q*G;2{lM=X&}^ z_v`Dm)*8(;HyGs>n<}CmkQhhq3m**~lQ@*q1V|UEuXMS0UenNNf zYJ47kWo%YsWM-Ca4FUg$K-wTOc@-Fx{`9y2&_$U*G% z%{zDYuT?v+CiKqb*8Q6e{Mn5;Xx6;wP6wPM;BerKX>%`kH!z%`?HA$#)@Lg^{uB}0 z7#gNLoSj&pilcs>n;W+`vBg20wazhyJJ*SuAb)!0HNt0*N10dpET7@h>jq9+^k+%W0|O|=ZM(jqkB}O|=AAbfHf51~ zWjNDW?*Y|UjxOxbY@5>7Essn%np(tH(7H|6(XfCJC9~5Z>UU~#cd0*rc8NV=@#gLf znrH;xy=Lph&mt5qY4hhQ@w4Jz&<6f0fypQ98ra zwC~O*rxk_9YUtg&ou+i{cW{8osGgk?cdF>!+4^Nb?zW=7fRf%JQj~BauIe{Vn!DP? zfz9jMcQxw@3h^+(@NAzwAhb>$@@%y;wFr1p>v8(i)J{F1&v~JAQmb7uuG-4u^gRLt zXJ1Y4)wge38CFXe1n`#{jwSM(w+L6emMuQ^ddy$zwUlOQDeb$mfr7GXr`DrRbllzV zUTHOSS<u9hbZy&Wh=(2+u@lse(W$vA_B0BGT}XO(;w;-1OxvwB=L)A zbd^m0bp~_66oDg0Zdujxq?=u>J*FMESbw^metJLIR`u>WYeIXmT3G%uIyzm>hkd@5 zTIAs`K*5h-oPVY#aN+7z%akAMZW)ajHOe-n`PTNYPcm{oy6F6i{al&nd+ykGcR!}l zw3gu`0j>Nb!x|ETb8Gx`D+QRFM2zST?MW;cUlFvS&z#FIdUV>?{Ao`9a+YWsw$V?| zudHQ9pp^qkZpgutr%$V8Wbpw{$%Y)xAC}4cXmKSANFyi;HA;@1!OVoHd^b=MSDf z{k>K(KF@oV>VD?(ZgF(9`SQHw4PMQ(lk-AKe68BgdOj>Tt4%`Ct;1fP^4%AWHdAz$ zEct~LJW4x>3fyP*QopnFiS1kOoEU@fX>W}AnSVkF-*t(-(ZcUT^J1aluhBQm?d`ka zTzLZ&){8%W+?D+PKH(FGX+$zFq}COQ-xt=lTE)ye_)c0LX3@HNt^Chg<_IS9GVhb&a$I9|NFfzT-$k0uW}@3pxju@g=CzA5 zvDLpgRelC6b_UfbPIi%}*}f;cyfL%s8fQk(D?Zb6m?A&n?${RFP#k(adjlSJ3gYlT zS}mGBM1FVjd*)BIcK`Z^-zroGd-drvRkhdj(B;!FEZo^o_W3wDUN`~^8ustnASdC4 zsTU<0?-i!8*dQ%1(f`VHbd?%mk$MccDMd(GGMv;3^zQC;Uwa0 z<1yuScz6M5s_&@b{Z18mPvUCX`<}_}EgwBO0wYGrOJnngPPEPB;`6%jf^jG7#~nmG zsdAfbqyn1H59vUB0oZ_D)m>aJBj$*_vFcIfguZrh(L=SA-;3!)RX`NHE&1LBmw(mJ?OB**UWEv5q(S7H&b9Tc zj;sFfAOyAG)tRPGn^vq`ITJreu{21@d-?!g=2VsLp=1xZ!nJA}R;sW`KsU(lOC(V1 zuh-q@vC3Mbb~0>B+{gXWY9L04em|(H8Ye&Fr-g5}~a9cCteG-(eOB5>c3WuXc1*PNg;t zCUe5A0)Nb0`A>f6zpvn5k=R6Y?eu{-W{$hp$w5~Fhfy=x=65QoaLN#Qho_VG9Q5z! zm+D)MHX!PR_sX3>Dxn`bQ{8v(l?^h(mXtAypug<1;;7!9y9|a|X7bL~8b zs7^-5gW`6~k5b*S?1$qPn>$?YCriHO_@Kc<_x-sn{&fB>r#aoSrOsx!uDXvmTmz!|Wo zNwB@+j}YiqcNutrF=!=&IV}JKL8Ngj@@5laf)9iyJEIzZy7o5F1r7JItZExG~sKl$<)k8Ng3ILCpPp@_?ot{uq-}!d}wJzrG z$_Ohv+1)bUNyN&Q&O;G+GRzq^rE7k*OW#EbHzTx9B)27qF0MPXrLj}u@+E#t;vmz za)-EoRV^w)Z5O3E_GO>rbrn17eBG_dHr_k+C(qUWy2@&-yU@GY>A0v7d@#jSR^7MlNcvCWST@8Fd})Od|U2{i0?ZI=RtwjycSXTYLWX(mY2b9A~@;W8zhA!VTBKd>OP(0V^D;Ergo$_Yv9Wv84 zAC|WSEBgpHS(G`KyK5RCQ+g0({a2I-PFmsYnp zsQD4A#WX)Yc}mwdcT8@Km+L&Gt5Q}Km`>uSnQm_2zuEx8?kBsuwt@md@uyE8T3u|3 zONSD>5m+fs+9FGUb6~o^)lwuIX%*bKdtiuvT%3})9(I4$toBGPc;kjeMRfVfm7e`% zKUjO?cdNdAv;BA6bu&S1E5yBeGlS(jtxgYGuD24<(gf6fklN%surBRr>Fz-~;9_KC zPux8jPOo0QR4un%3+!-St@PsM%WVO*W!0rMFL9a|;|wXI^y90~;nT+VZlLXjwSV9o zSJ~H<1j{qE$hfi&z#CDVm`3c$uGizWsgf9pi5O^4oRo zIa_wmo(HypKL`IZEpSD|3+2^Dr$5ZPrQuXxn5i9q=X2!Mmn29kjWON)Z zH$aYau3sOU_LVlMGV`8l#-69o0$eJ>W}??XAl!8IhRD+;ipZ%zOIb)Mp~t_e3zAJ+ zkPLvD`KhFz^x}<9N$rxrA8_eAHocJTXQmc7k}Riq62c8OHncdB9ZkctZ6Gj+VQm6r zaJEE>|Jl-0&I@>Nh9jy26s75&fcZI{^1(~ai$s+!=v*Jyyk(#|#b9f|Fm@xQ%+8%T zc1i8_*<@QqW^?9&4he<`ck3h-#5_BHI5J#(ok&KiVxHJEvH!Xv+6F*>Ma6ydfjQFF z&DYxc<39+|7y@Yo7s%GVMlRWEAw~8CD^OwW63SRn$3IKRI7cfM* zj7=0^kKYAWW7sjVK&UE0RUAt5+1lFLd6wj_WxmB~<_>ZKoeB5@jFm*w0gfA}1XM{z z)_)5PtfWCz-rFrh#bpx>js(p{t_;~kg}$zH6dKu z@3h{KG+qOqGsQhi^S3C*6U#=ty_&YZILA5fm`%2V(&!$Cc!T9(CeqJNaXOPw5PgHU z#6qH{MKeN7vm#yZbG7$uu%V1ac!X9LaBE zawZgczMR;YRqk{LoeFwebywoL#O;WyCH>Oebg^&`(Cn**QeaKZg;;Ug&GR(Di79##sw@W z*^?X0k6;nH*_Y`VEAMDfn!k#=c)Naj7VMh4q(#&xxN266l*)0w<8~`KFEDew;pq#J{!~H zkWj3lH#Paj^^32p1e`i}>DfzDReddn^ z!Xw0a|?PbuC&*)j2mUfz_j zC4I34WX!RnW{ByKqQxEi<&lEVB{9#B4m!a5c|6NjI@Us2vX~mhpDIGOfNm;1$x@z( zhG;s#GzvBS11j5o6*I)Z6G)%xBT?(~tgO>2VyZOpWPFIXTbVgODS;k~2YT#Q2G zfi>OgwwRq!@L{amL&({8{(ZB0w>wBI0^n)aAgx zc7yY`IocJ-4sz^i?7Z!%{FPQahTzWG`B$sy)mF{0@j+$d_Jug0ltM2EE!K~wi2Ivxu<$F7S&>up? zo?|uVa#%srAZTxJJK{bb3AujVdig?H(Hk5b!Zzi`Bad1TTM`L9HwKRN)`oMbbbJ&( z$xhMEQ~0l4yz+5TV~dLY^R_KWwbYo>xdsyIRoIB2O*d{y{n!zw^@6wyCQwfR=Q-c^ zf3-aH(4Qj74Kde9;l@uLck2q?+o+XyuR;3(OeXCn3vqesK`yu%b(0fPOMg=#qFkMn zwv-l>giHdf7E)TZ2?=g4Dt=?{A}h6ay{r31xtvN-jCA(s0!`kfe8rolvdJ8Dtix0_j(DA?!03gu* z@g~)&@p)75E5z^#CHa!*dN4%zH2>fZsk)&@?5Mm?xH5>qD9uW)Rq`O#21qoOAWrijY zG8uvr-*!$Kum~VC(1_^+kZ9Uc_()DD(MX`9gsbdbLSf)G*%4Xg5o~=y?JcEw6;6Qa z(ML+$&TRjwr2DacvhrNNBDbR5 zCgvdk(YjIkq*99{0|cUJyt`Xs%fNx?)iyQLyS4$SLd?pLurrs(j2kDft|103*=CJK zp5>5Py+4};W&5okC1afU6uo!zr2=QdD&#{P5EOfmNk!YZ6yY`9VSrfxqy(Mjw%M&W zFU9Bzmc4;a;PKVHV9voDkTCY1jB`GtB@IvQG9XX=nQQ?9a(th|cI{@u7H1#Q3%ruS zxI_M&Woh6f=h$sa4mM(tE4VGXi6xDPr4eVDX7>Dx#Oow01tZtEP!`s{?lHFG2$5DDNPP0f3~my=;uz zyI=gC3oQ?R-)`e_$%EUOu{E{=hpwhcmiMI#!{dObomlCjCzxdnj4O=}8*#`uK?<5{ zzb2z+qN@Jp&k`2U3V<#i0sf`kur?FHz*^wPyd9hcVK>TL_| z>fytO(wM$b1DxZsu5Cn2&y3rs8w$2R;zH;vaekDRIvU61pwFui@#ABqDOl8?R~;gM ze0+OkQj(udc7apSE3u1^i_c69v}G30!kC=Sk&{!I3TK@+;)uzxW9nyuBA?|E_VROI zKQVr`z$w1SEMBP2h_C}hj)E6TgSpMIeb35mNX2c^Hsfd8fAc$h-t1XsjerpfW2>nd zQ}6{Onq+Hz%$5J94abKr6e>49lfnTJQ)D7`gANl8SeCqB4=^6EUlH{aZ4x8HI4(GG zb9FBPEkhBA@D!JZjOx$RCZX{GM8U1H^_4f)3}P5s?<#%HJeYDl&ne>>!QMz??!wny z0*%f1`{`m5`|4gqg@|>7u>Y-o3Imql4qN~uU-)DaaL%`HO}-DL^9PQ(D&@VFx$5Ki932{H4c~$cI-3z zw|;GZzA!bg$KHc;Y8UFx@LwF%Zdd;Bsk$;l0~Zvn|R?-R7YRk?(`>8;&K$$4Yas|F6+4Yi_pSv~2wNF4A@x{qy3jN)x*nJ=(`(>-aEYT%b_?CA<%Rsf<_CK6GZ=)` z^Qr9lD;u^JoppZNP4{a00k+Hia;KswwP_=IBm(B&M7d2yw9WxzO*x~m^Gl^Oh%m%= zWp-wlKVmK^{pPPGr~3Cf%uv+KyXy=W$@8hxeyQ531$1TfNk5%`BfP z_LHiWCWsh;`!qRKKrQGykc<7fxhrLKXUu3TXu@k4MY`?AQ&pNvM4Nqf>B`9TOIAC# z_1%Hp-*=}w_N6-s)oxsTeqdnWX9P5QI_EepI~O#z6Ic>LUrKy3tLp285<**hAQaBd z6GR*^_B;{@_Tcd8;JuGhOFTAwnH}b)Q^FMl-TgvC=xNb{ z1OLF~FtOjuH|;nC14L$(_Kw9tzxgdQ^hhkKTwVG)7!8xSBNdBj7YnCcnORhc9>lM7 zt5VDjJ8m&eLb_y)lBQy3=D5p0?fLoMJ>6%X6a9z0!hp<7w1Sz53P*o`DusgG^L;6I^#?mVY~AyLHi`ZlGwE zsro*k`ucuLB2j7R#*9(Gpo>BS1*~ggQ{)S7lc#K3S(zlk!|7ir+N|zNli}V!@VLnA zvt#w|yEd*}I#;{rBdwpC%b-Ww{-?Vc_@Aa{u#4aNE}iw$sipTnI6y^j#kX)tMYz@J zD+%jvCD^jDI|ntFjkjz!ibyy*Z&0^R?P#gX8kDlW2*^WFP_p%MYPht~&fmKAix`|j zcf9qz%<5{AchQX&v$|;#y}8>ylI9rYc@&Sm+bg?vC4p(XIo__hcd(-2cEs*9$S=v&w` z;%)7%H^)qSH{We=@8tQSV2-54#h4fcFcFmcciN|BGZ>Q{J1xVJCbug9{%P#)`vs~p z=2p|>XB0=Xurj?4AA$B?_{P%j;qj5iH<8i(b){0v=eFf@O=4Ys1$c1s%Me49EMSDBMoQ`b}6{Zk$>Kz@0X$%3guCI*dkl&6l~k)gU`*_+q*$K3EK`9H*a1sPTnSdHI~_%=jHT2hm`dYe<)2>V@YcP1?0Q zk;McXyS2BBXu;6thH^3^H94$POpX_8FfF6{OwsEQGjG}f{-7jp8&&NyLOM^)E7!!o?Y_vA2MY0=%fb^ z9{AVH@o6)q>yi0a?csZ!nYg(fm`?scX4S1XAc2;yn%L4k=`k|q@wLPP85#Pbr&12r zX2(C9prL)|=a2P!W(wLgRvQWQq0Avd1 z4+~x1$$tpQ4%(5vDW3lR1DHIC7#>XznVnGwis2R5Q56L{Ja68-e#hoa@lmN%`_(UX z9}eliHfZjQwyJ#;X^egdO{UkZr9+z}FHDv)!mV+n+zvJLcnDEP4zkD{* zwd>a(;7>MHuV`8J!*$E$yq1puu5^AwAKG<^1-irt^ruAM^;59@*n|Ej)0L$SDSFhg z7Kd6ubm8R#6~xt{86L6d?W4kd0(+uQx-W4Tqk>AmBa0zx6j%Fdl!b)_ouAp47k__S zq`i+BKbh7M#?f6{-cyXWLl?@32j&fGZFHQz;e`!-X#3-fURMYu~a7)JJST0LvtS zw!pTYzfS48(8Qz@pp~#NwMs{@S(G8WXnmGZ+EH(hAIH0}9x{(CMqxMD^SU(F@BAX6;RCLiJGf#%=1WnOg32F*sNbn-_U)OY?dS zNDTW$U|!SK%S+%S>rZ>4VM%*#)Wp34*ZXvAYCZ{IFJXw#rbU$!XjN8)K(Wu4YCUDpdrI+nmxjcQGKwK+%5B4@3Nza_G4_|2MGbVA* zmPu#%b7Cz*$J0s7?OF9q?%wxW1l2#-v!Sp@YeJV3mk3xkE&kIA6L}Zyn(FHJXOsz~{)=}&h|$sIg36Qj z^YryEuro;=CVKyH)#mN6<=%RMm&WFmY((vkkGAvG|78$;3VUP@1F=zGDpyoZ&&1hk- zo{DbsD$S=~zI?fM)I-J9Kl1mR_CG9xgu`#M%J7zzg!f9`qx*zr-?Chg@O$Ql(-D8~ zH@#p|$at^gilM{zY;G;HJ0ag^pwp-m!$~^m5A*N64u>5uGoV9z9M;uT^y2w2v2(q2 zdp_Ae_sWe3Br)l^@( zPWS&S?akwIUc2`H%WPA|BxFhmAxT0q>`ak43QgD4d;Zy6#x6lI8P+0vjQR7xtL z5<*c_q9jVSlSqE=GuLI`_w)Nc-+#XM%X2^bZtJ=}!+EarSjRfnu@)~}Sb$~BGy*ga z?0}coYYYVS`*e^<00IL~y9JuX7d$T266A#cj|PGEajJhE7F&LwPodYjYXbi!eS3V7 z*SJr#lyyzM(L{nZMY3oEUKZ!pQ6eOdqWn+Ap8Larb|)(@+lt$2r#xnTa{x5&SK1%o zv|t$TBemCNmbQG|&<{VLG(SOU`Xz`7V@24PiB#qn+W${|&(9_LGw*4~hhP^Zyb-I16z(ufI*8wq&l+s0&M%%%8s#8Dp39u8tcwZhYWji1hW`xn|5R-59cFlBQpJ zsmHiev+aOwv?lPQ9Z7|EpI>G;OqWJ1|AY|fpNh;wAkpf!zJY3EdT0;Yzw^O^*_>;- zi>{ijSu@x=Dd_cU3p}ElA)Mng5*bPGz+=;HU#Wl-D{XVlsl%$zxI{(K-+ z&Ijo^uac&?VF23tJ{@kMpndrCDgQmJfOhm^hwIe~dVmb@hMgcxWXqqH8U(5enTfBr`H;WHIS>1;);UW8Z_3*0|~Y>LnK-yU(q77#*! z>d=JH|AF2)Oveo96g z1j%WdKegZUmM?eEL)-c2=~JJq)}`g;cNm1bcVZt2iK2-w_k)x^$OcqHSYor&catLK zRozZg{do`u=93|($QeYNJ4>`Qv2**GF6GR=-~csce%enM~Y1|#fqwLyEY zDNWtsrb!N(PeSj^k{SNdEPuG*SvMDT*~wIVI*c|XD3HE6l*b1 zO|l(nIWGU1?v=8y+kDr?k-4d~d3SJ$?Mbs*&Smpv%I#VqlW;6f?>1}BoE~crTZ-0^ zTS0~=E`z&R{l@AZu>WL85{=q7IoH?qqf9J>U^K@+8oLsz#wH;<%bcMX z64{75MaIjX?ccw@WIOtIkz!yXt|+(O;msX6b2-bwfGSgVCJ*;?? zme!fz;5OSMtoNv=k=ubDBnJ)}SX)~!cKLUy9-dGyGO-^fMn(c_P(;?`FeLYxORSuy z0F=DExz<5h$MKf?cl1louN)t^Uj-F-dgjv&FYO%M9TVD1QCi>}+j+Z+c0sAr<@p-d48V-@*RX-ME{r3B6}u=)C=r7Cv!fGUQ3{_I3RA zQ3i3(JL5khH~?XW2ZEX0q50mx)<#A=F=0nr2=#Jr;~cH-rdmGiE8>0Id0Gwh_}_T9 zUSY;zu71;{XVTZDZ<~I&vvP3oYf9_4ZNqPR-~-GWSLo6u5p=@(rq1O?r8a%s1@})| zdKbII0tDr5U6=pJs-Yic{ql2aZMbKLr~bbZCX@9$iv*z{I`^Rm$n|#CaasD)hsd^$CNG^YUhmJ>@dhQKAbMi)&y$Gh9kL=U)#EJxCeyTRj7%Vn$laI@??iMh+TGu1W{b z$O#iFLe4T8`}m0y%?#Rly@$-lv$TF|xy#s>lzV*xMthJmkzH%*+(S%beb;XLmir;^#u55gU@*5P z1Q@GNUAnXfz5m^6WLWI=R2Fkd^`qy{XINX8*l(=-`gIdL^x8CA=}Xxga;LVmz4Vql zR%(yZk-q-F-d{|VeTvZ>c^M;manp`D+xEJm3#rC)%FUwIhs+5vkCI}Tc{D7;;vjtreo%Q*gb=>^y^WsdazFW#Ccl4vb2U6KQ)4j zra)Mt<72Q6k{&2Fm>;4&;t(rw>wm&NH_Xgv@t}a0^YmgD$k*wzUX+IftUZWR=-a4q z_pMza9q7=fc2KkDh>OplK~$+35UD2$7GL%)ILghMG7U?>RX!3%Omp^xm=v*(6k z*NxThKmd>LtbvAyd}Qp3NH#9~cRz(TM%N<`uhP6nZ^OwyKi9d7zJ!sZ_uA)@NU)t+ zO|-WkiW$v6>0u0bJV_;O;9nSQ8DDcaHLzS>&2$@pX!djxi70&HS$0E~ncSm;lpcGc zhh$dPDq0Ut*R`TmTikESOlLI(3%*xh#kLdn+F>7_&ms)(ar0M$2@!T1Ss{| zukZeS`a4mOTJH_CG~w}Vv}(PSjmLDhZcM>zNg?V^MeXA2k)3j*$87$rP7{Ed{3QFe zYX>T~8tIJYg{1!N*ea+tAvL4vHNJLk-MW9krQpPf zE#F)y4*e!-8Kv_D1uZ%|Ah;)9jK+0xKiFTqyZCs$(}5&>;~3X+ zsrOIXNX2?+t>R}h&<&X2jjHm=gc zI{wUqjEo4VA?veY(b3wX0L0O}u<*VCsizwSeQ{wDe!qx$HCC9+@HzVb_h*5xh)I-{ zJWAO)=V!t$UI{s&*lv%_+O@U%_7ZllWsP4D;p2k!d&WODZ@PH+gn-P{mye z=d(&99o#gO{&`X|Zrr$~iUXF%jFwQ`U-2yTn!2Z#SG&w7qsNSyp`qmL^?mCEzU7d0 zQ{fXA(!;@j0D`KT^!&`|kC8u4yuB)WYvCo;pFTN0uercRWM8sCf4;s2L+e6*Ez|!s zLaq6C@y5QLGBxVCIvZ16T^%=!eJK`n`E7asS)#c`2M@>O= zgF~=_P&Bo);N00mhv|N^&o%Zgx*FM!BjKtH0BnwSg3V~$Iye6uD5 z55(#*Nf&;d*`7u{Xb~)rDaKEehCKMBK2*38$~Ur^_&rWqajTVXaUW{y+!>R$C-Z{* zGTDRtYdpF{JQuiV|ekz^1l$GCzd~bW!EjT?IBdT!5^>fro=X*E~PwH+w z43#9YzA{ZsL8be_SEWu;%GNtJnI}tW0UnW|h9iZI0Ua=RN~$XxzE!YDnjQ7;0l=E8 z_C}Y2+y<7PaLLB?Af2;+DOLnKE{Q=JvsSJwIyFJoi+f{8$cus;+H@%}oCyo_qWC8v z;V&&MEu?2x$zzg+l4^(6crs|n?Si}3SuiKs?)hX*Kg=2Dt1IrfbZ$JS7X*;&*F4!H z9~QA@S3gBh&b^aGymwmZgv=0J2r$9Sfn!&F`0#4V-s@oB5$IK)1Pq|s%gUkAhi_Ev z^r*EAK-{o*SQGwi@>$Vn2Y|^JomF#R42ZsY^Araq5(76p^!DkiSY|G@aiou!1$lPv zUT%VAbn=w3^pf=RmTYLAdKGFpnRzBU?q4+K`mZ^hVb!fyub`_}eQ3Wrjh{oA%PhZu zfPtrGA4z-5m4Mx-9#C4d>^J_`=X`n65%1U2Aj^E=J<%Q})Th=?bu=6xWqDK{N-k$*d9N;5cSgu>=jaF4imUua@ zb@fio9=9}cvdupLaB>rRSqWbxT1%EJDSuchy^^~xS3m8@Olxmeb!G91wPUkp+2s!K zF_@>W_&jFAkQMc>yKV&b)A$OE^TW%!Q*G_jaitH*<8@CA|TeD0N9`(<~y z=#sV$vTI>ca1YIF+Ehz^0osNM<%M`M^gWSrc-8=t6e}29vWzoY_gAvF*i67XmTz&f z72p<%-L)ZIwxYt;C5g@%k*|;@@p>f0KxhG;+FUgvqEfeRqSgL%t*YOwrsq?p zmA!v|zdMcc$n@UDIq3Ep=smqd>%1rBS7e_w`mM()4`2+0?_}*0DJ9iBH=Lzdf&k`0 zik|RqoE;? z?yvT;h}dhc#1v3IgrGG$YNciK)KrWhLw~{S#(ROFbuU|*FQOBiEm_hZnI*gtY7t~$ zpm)pyI27Q`xwlG_8p*gr30O+-=?w{| z|B|i=_xRA57uIAO?I+Z0@PD7IHx)ueUFI0bTqa{L?`BjP#Ykki#kD5|QnJ@O_(DsW z%frH(M%e|Q0`*lA-@Q}2F#A-n^B}kw?^T+m%6Mv`DSzkJV&SxD)6(AKmI~z)_QBdm zOILT+uwzbMo+&EGWN=(qcsUqwdCw}!a;Yj^>BE*?hm;F7vs_G<&YuS7PZqi9miujP zW{|x?x0kCIkP=Yy;B%IbOX2O^k@g|gb-MUZ-VuBAZ!^pO9LqV;AC;}6Owbn&F`jpW zN+tS1r?|u0mfvXjiA64YxX)JY^dO?D?%6M338tQX^-YxdiW84}jTkvHiEQGATcySG zOvFK0ICbv5e(WhLbMwTyKYu^lfh?`_)x;Wstayq$wvXPlc^ zGMlqw?6liLmR*R7%IaJwH&;yoveGeLAL~eRUJb)2Fe$s0jeklyd+vXtt)F=U_w>K! z2Gw`mE}g)1pWu30$-_upkr+a3IJ0mm{6I;8!N7TU=ze!)W?3#n{fnUY7f!0?6r^MhXN=i)xn<;LDuiC+N1^&$3 zva9PL)e40NeO2Aa`FgRxGP+ZgVuIH=636jNSCcB;&sW7%vBigzAs`fMnEnWw+HuZ%E$zH@P+*~5{wEsyd}l7@9?jqbm| z@2g%zZFQYH)W>G4j_PMZdX(3G8(&lFnObC78=hUwWST*Z>GY{XE4JM)S$e^};lqDI z_YVgvhsmPtu)lwWz5ikt0%F9ufb@avdd7vU2g}YA=T2-rLY7G8i!vx7pYV1*EbM_% zq3pAU$k;+#$AzMGwsy?s1WTuWUE35cn%HMj>oYDP(f>?Z8gX@2i;deCgw)K~5O*c( z>%`Pwc+H0zgLEyTX<@Jn=6*e&F78N3~X($-h9U&s;Yf=EYq&dD1RQcxuLzw z`UcapYhrh+7gle&ee&e^*!+qyo8xy3r@emJ(*kNBB50A0VK*Sy4e#k>$r0*p!?R~v zTJ{%|P`}=Ft$FM%QVA>IM+hLQ(7PzC6Jz}R{clIA&&v8MF79NPA&Wk7Dj!Fg>6?CT zt?axkUih$pnv)I^SEPPEo?VBpXQBc8{d6+2U6Ux-kmui>pjZZt;*Nd6UkI1BgF@(w zW*G4h<}a}+){|SazA2<}GTG(ciByLr7N3fw;5CRdq0-OuXMDeVavt9YsuCRpH%N!P ziWK5Bl;q|wSdjGPi;m#5t~=tq*@Q1<1eY>rE;;I_Jg3Y@xw$hb4C}noG9+E!Q=}vQ zBDaY$XChJQ``4N$&z>#+VK?RHovoTZ_;`=U`T27+{nS@G91q%O+nPlRy8GxstJOi#GwIb*t+?QQUgvRwNH%39~&cT@jksx*Wg;vn;rn zy6~-a%0yAv2>aO*OgbnRh%WQ!T!*B{kW2pk;Pq42;jD1r(4m#NE|Vk|7w-4+@+$KQ zkfEQZ4Ys>*4T?RdBO$wa^*Mtx-$=e)k_L!|M^F6h)}u%4ny+aIYo$+bZ(QfKxdq2f zoK`08Y{8=@853nBEkjB=5)X5rxAB$L-s9vggG`uN^7qAyXMyQ>{c+me#Q`+2^`Cy3 zCg8q84*uVq=nd$PK=KrGlLvvdq$ZhHtmz& zXN24?B#*wsS3DrU`I0`N``tK2S%+Lg}<5{GDI`w83yy^U{PWxDrRx9pq20Z>Fkt>Pvz`PY*VaYwhmH z7D9=Fmd>KEWhR%MI7TUcToX00yN4cfgJiwjzfgCPm#trsz*MB2MQ{ZoaMQOo;MDBS z2d6^xvK|puFO9Y{Pubrkd&p=hp1CpQ_z#;BO2dKw1`i%g znpsnp9c7;zz4Pig=?&}eUuU$dC?{g&humw2D4qy|Fb{LI+xO!(RtrfoB`zH=Mu3&K zKGcn3MH~*t2-J>bSdB33oTW8GwNv_u(cxz1k0?nDIC7)GM4GGIJ-J9jZsn>~e~7{M z^jDafDE=AXpgC&P6v8kIhE|sAwob@*giH)3xn1p5#wF_Fdna6Z?jCAQ0*61zWxMB^ zT)A7#)5U_ZM0pcev8AGD2-Rcx*-K>$_%I6?rL`#0-JyT|Ta=ylOpqBF3f6+*BJR;{ zMtu>|fUGGtoXK@+WJvwIr(bXDIo4~JrHPJL63j5=VQYQ~9$h`n0s?UKfCbXm=ogjO za+->F0q!>PJO!ec1d-#PYu8iXVTe*1Q3)5ckCTc>TU7opuklSJ0n2!+x0wnQjW%Gg-{|b zQp4~FX@XYwly%B1IYE_@MWMhd(rJ+jaBG$uJ;Lw^EQD$&Kc8e-TrYR*p#qcIxmcwt?3J}xfL-X(q3G|&UrH*21s ziRa4Vju9iX7XDg%h1xodxp+>Qj_O0teT9{7d8u)WjErt9Fn}Om*$*&;^A;~g_VhNS|8VIyIsKlv(xM`!Y*=|rS(xj0D-Z_!lVZ=K(!=ZS zIP(WC66s%7NtwS(CUJDw^ou0DYe;p+uZvevx=U*(gF&Y==O3_{Iw;j8>hYLUDY0|&v3P!^Wj-MYBpFMWl`Ccmqndb8sFMrf&$3Wy&ZCuBm8kY0m?fU*3 z8XCTTEnYu{u^ac2FMM5ga(==#qX5q%_f|27x!mQVX};~t-ocqa#yu^0{kLA%X*D-= zf-_V6E@pZx7~Jt@Ne5-zJ`o|O6QFqa~W>N5_H$g zSD)rWiQI?ytzmPDvV8V;Y< zueCe3dy#1ars4-0xquwIJ-1tiAu5-f?{bgU{LdWAQdrF`@pkuQJp!cz&cB&S-xmi_y z0!52jQI&xtK>23Py+LV$W63lpZf*S*|E8H%drv{=)D@p7@30z*nr~#+izjPo0uyn= zY4W*8YSkr~!~H4({!jNTeH`|=IQ70SUgH>I93cd65tLO~TxdvkiJS;BwbR{HCT$!- zITK^zrCvcbzVURpaz%pGU#2hugRc=+h_+2+X8^|?^~zD!r#E_VM)E6}k?PS7FYm)Q zNFZW#87#z}d9Z%fMg&`LX@C%vxFlrRjl&4;_fH0i^o&%$)tetpztC57ZB_AJ0A$s}-`n4C(zp~H`~{l$&f)$u#e$%mbeeV` zvVL_Fvu+`cTet1tTTyotNhTS zMv;Fxu}^`+iJ*JTaq+`oN_}e059|;UGw@ehZD*(MS5{X0t!+#OQK!Gt+KKVMH#}Pr zO+;k1P?^{DoY!Sj*^dD*b$V2)72O9~3(xw*o#u&VBBhSlRP)~C!22H?TwK6bc^@Mq zBM%2lSNiOW*(EF*+E`;lzt%sHZeniD0qLP%*`=?`;!d2^v;9?RzES#b31am4Usazs zLI09RdH*z&shsmFGRxHlwj+CLJTQFHiw?`SOV}DmpcJo~nkiLaHXk})OK0b!FfCvX z!YV8JGAs?%)$mOV2wVe>h*Hj&G507+=Jwf9-zFM#O6>JXck-4VZf}Z>9u}~mCiOCRQIr} zpe9Ibl3^PcExH3x&WYPNviJ9Q)7tjhBQ>~HshZtIOK0o%vK7@gE4B!ELY>sS7x8}(Lvj4HCicyyjhT|1o2>t^w1XpUwGXO$x!cp8}m+eR7 zS{=G}i|3x+TfcY=7%DqcW+tkfLnB5#wTsqhtL_T$Qk?FFh6iKU0#iihA==q6rk&1R z2iagw&oezA8+(FwJOCtd1S0?L-PTlvQC*6i6Z!muyumNvAGot4UZKUo-aVGDZRihl z{->sfIQnu6h!j4C%3&rdG<0*6f_OaPU(b+f+O`x^OF>gFZGLeG6$>Zrf*Qr|FqR3O z)L!@n@DWR~yu5tpXbuiuWmBB<=R4N_cpaMhD?RJcV!^_On~5W;-E!ut!LJHP)^Ds8 zVOmk$c)Pih>XCb{Pp|}nGr6;~Mce(eejS^ZYsc+e32UhPrC^s`e*CG0gHzgX{nU&q z?9-it)JcPB5L}Owb8MM&x-oVT)KLI=W#I{1Gi-*ijf^fW0tkdH-YR|A>)WcWW`&9* z2$8`m5L3wVoBn()^AWH&Wb8Ke0xd(*Y=PD5a8MxkYGU>%aEjn@Ne;**W|36DUt*_w z`i9jmY<^EOXwpLI&cS;!1Yi6YP_<;jkBz*ZnZD|0qoaK%_7UA3xHha{MvSB?%Ya;q zLxo(6bRn;ZocjUB9aL`mBEwZ`DF}qx+7&g42ysP)lT3en_LwO$oLbhVyRy(Df*0xe zF;_xSSdD*-7cErC5OCzBD-DFn(%{lys4IH)mTUR)!dY@FDwt_v@Dnkytsd69>q#T4 z=@Reknc^_fU;3Cdk9ASkBtpS6mLK)T_T%7|Z=WBLCT5nLV;7KU@ZOQh4L^Rmssj7A zWc(;*&OSAEcWTjDLeO;8`Io0(3<{E=qRol!u|3(0<|0ewM9Ga_r@V*4mZsmTdx!hG z7mo~BH_dig8j_D2)epuI>-!7D7BC@z0}}q7Sc9uhwV(mt-uEdxEaSWL#>QoTEu>zI zjQcIMHnB|*1CykI&dU>iY%Pzge(>YVolA>C1EG4*Bv;Ygw^OwAm?$E9&W(mUdW)Hm zSOaLvKitfeWrz;lvXv7nIT^eu**QY}NI=S56grS+Atu6p^5Tye7mw^ROR+dV-D>7A za@Fe9d+AP^IP4f59mg=c+`US(Zh5g(oU3x}_@(Y*=0g4Z#R;$B1BeVr&e=O;F&j6I zA>T!J_1oRigJ{9uR==H&A&1zH+GN5g3u?asO(neKtVfR$=}`;+eT{5AUs5|BNHqvg ziT32PmZXYF8Xzikfj0gk)UJPPF#ELbJ${K&ofWkwgwIs_5~LNJ|L@ zv$C8|^ykr}uKNk(G7PF@OJX#sJ@Uf`$f-&pb{lD)JB{@@*nQ?)KyssBET&b!IxEN! zoA2GC!3$O)_|m08Lxwc#<2{|(2$NL2&#)axXI;(bC26q0kl?;5xFXAAhOO(N%sKku z)y)&odxF3TvU#o3&a3EpKP}{e2h5eoIyP>+@$GmHtB}GRb}hgi)9R$g4V8ZCFzP!& zvaoTo$H^3cen}*DWM-o3*sXW()UukxX>T<$>O1x1gSS2S(2QyrTShKP6mS80xRS*F z`A&{UX?O&c5V^t2mIf4lsLO=M4v^JS?#31l)BO6iEc^)bLgaQehBm5&%Bk#OP+R4u zn-sIi3(IOcwcEo(pBTT7rqk(!54hf*&qqWJ@6eiznQEFjY{^`;WMG{rbgy-PCVS`? z$ZRNwZ~-KWKu-D)n-F-hN~YG=n7PrBz+1%LA@*6zTY*zNjic?lF+vP-!L|8xo0H zqaJF8le4c{=LtQT+i{OSKc9bwMy18KbE{m`71WxA zKPfy)k_LU9w8aIg@pmVpixjgdkbxjwNLmF|%!mtR_Ny6JSd;3tG9H=94s2(_Qz|6s+U3GOemZnr2jT5$xZ*=Cy z!735HufS2~{`%Xp?<*Pca=>TCIo)DZ*f7P8Eey)6)f-$ZZRz>_`qt12l zbbX|kpTw?UF{K%mYMA$GF?vWhtBSk}C(w}b5b(8>cSg?YmH7r0K^Rk!Sf zzGBp<{tW}ON}Vl;KMyzDO!x7jKUVa>9l0lwFxSG`df>vRy~dAD(s-Dg>xmpt!oxvS zwIj7?kdtM9q&|QnmF6Fv?IqMRQ|RHmuE#kC)ooYZWB`wtsZnwFZ2UdQbaK_VpUfmX#Ow^q=( z({a1#yugp-10+hrveTMVCxhK z`&3c1ibia#F6Ngtai$REl)!lIE_YcE$;0gIJ)&`4{gZTNB ziF9<;qY=NFp)!L$78tgf2&gX@nqH8QH?xT&$7|=Y48a_u+)hZmqfPYHmEh^DQ>;C_+l5iV+ zwIvW0EjNFD+S_McS-NEChRQl-J*ubwW#eyO{6W^2c7H=s<4lCc4xh;bj(`^?s&>L! zee$qlyYefhQH+2GpKD~)V#>URgy9I@*I~FN%o5nXlq(ObihfcC&Ros7pCAp!S2X>) zqtod~K;&)dZ278%h1x-qLD4(!H*3GqIZKl}oV}s}S{JV;BKvo1uVOU(f|0H~kze1k z_qO_oQfuf7F((My#{l<97i2Npwb_DQ{gmWh10=;z84M;2#|_@Ulb$g;d_bb4a)lu7 z&M?THSbX%{n()KJkoK>}*-0-@tip>sYqN{RN!^>o9>t@gh0@?Jci%|H`2G7kk9ZTqPc5 zXdWy8)dhC!>oRvHX6GA47Z+yHbOAv{PrP_fcr{x@xV=<60F*(mQV6F+Hx$O-rOuP* zDG*F0=Szoq%KvKV$u(c&2#!_qi1;VzM|K`fQb6s=XXhfG(ANv-`VDEqqYq!M;8oU^ z{tQ@i9w{q;!B~w>0CywhuH_D0E`w9=T#k=z3qh>)bXCM4EWCf(Xsgc9JXpn5@X0ad zx7e1V;?L1VMB~`cF58`5Hicd=b0xemmWS82)g3RzPBA^)t#(lWf)bDyWirtg1PRb8 zfoW76bcU_?1q!j9T#Zfs!P2}H(iT`$E{|0iay3GyslJiX^_S(tKfIB~=Xd31+-~(o z=yW`Hi?Bd;v~=9+0_-Obf4U_1XU z>TZC^)iG1-5D$^VW5>P5zY4Bgbw(#o?=}7{u~xM_IZ&E0zD%4Y-)Qy&`^KTio05>H z?-Y2L;QP}joyjc5>VeD^nxk9!hs{4zk#vb}C^)1APDyXqH`%U(@dJZC-YRsFKH|vq zCj~sk9TO+oO;hP8xJb9M&}-CN3!KN!Gc_F=bWv14?*NWwwTff<7#U)JMOD+dA!(?Y zv64V0iKTh+^meaQe5DUL!CPt;MSYCKA`Ins{_;>BT|UNZ~&9+>{aff!f_Kt!?)*iF8B5S^5Xuc7CmrX36w zq)Q@D!~~>!qH~+SZ=ui74~6_|SFW6yt5$$-Z9gcbNBQ}ONKoO@bd=li=s~aS(??3{ zbd)WwOw|i$C0RhzJ3b>>rS+N*j!9QW`NW`>jq`c%1~SKOPdD1FM1c%VLt{I_h^&=B za)3FD7_Sc`Wn>HzgM+9DX%VIoy3sU*Yp0DCQU-npnM-_#lT;!dIPSp3MA6g16K-a_ z#_sPmHpfyPb;XD7>L`X<(0Ge`1!uEkfuwPSmpDHyA!UU%5uP4DLv-@(+dFj@feVD6 zJ?f6$NbfU`x%``gjKFNO{?qU9qS$dzpWrb;$Z&CV>z&bBL;OJBO@t?Fd?Y8z+=5Og z>T-;{iy5}{GqR}HbWBgv^iv2gso50aR5Ck{CfOAz(|*3!M?I%&>2NNfnWaT2SzAKK zAy)}aN5aTxC%y;kl_ZU@rOHp^`X^ixuPFq^zY^7{)qf z`oSp(U4%Q3nnI^*&IhNSyS}MrFe`ph`0_0;Crx;nCvnIt;JK5A{r9P3sw9RO z2scCSN6h=6Lwa|h8eR=ZKcwlFh;a}+uoP!d&p?fgu9@uFZ=8Ui^PN_%b8aoY9`7ze zqjX;6=2qe{*a_K|f-8qn3tEhgjPR1#lhilf*)*Ya(18592d==V_Ioc5_gr9#e7Pa@ zf^?tiyY^VHi>7$t4-y~Wu&rS-OthVq40Lpz+)!^SL*X9|{@YGp`Tt9_6xy5(4`1F@V0hlTh9mSbn^@gwqbzY{d9Q!Wf$4(_-9- zjMwz7>7XGIqy?QmL z-cUXmQzj%Ll%ORN%=`>bXiv(nA=41!VzspXfc!h7l^llrQ`_k}v6PuaN){#SZ{XwI z=31_4@qGhqu`oAF=`dm(6G3fS=l*AgIr0yoTE`&OqIGzXjqs>ZogwZpAQL)qvD}XT zmn8Ffuf<7*FW^mt1H&2S5agXd!zvb&7XhVh&n(P^)T2Y|GdHuIUN50M5#mh=qNJ7y z_zcfoym&F!5A1Se$UubJG0JR+_w7%N2_)amr-dp-Ih~xXkaKnf#l9u{Wi%ZiGYKy(QS?|KHaW)fB9M#XBA~dbm=zd@XDV1nJO&EP zj4|%qc7xI4#YJRbbeM`aLIaOLg^m;)$}FP4-T#=$>A3EYcilO z=?jNtsq>2`d7Oy*18-@_A%Wm`_kH`lhsO@ALBWVCbge1#L$PCrd_aO|2CB&7`$5=+QuKo2sRweM3#8B+heys4cu zv^gIeISL#Q0+)Eb!@JjGyMs$fzJppaXenr((&#n9e}t-1SC%M8GO?6D=prXgo0i&j zgTt>+`I6oe{3y&T1R_LHX1;oLYtckRKUhYqxkhwa{vL8}-MN-~Qi~=nUfh**s4ee_ z(KRb;-aoZ?G+zn|RfaUQ7bNq?mrEg;pSSw-U#K@!RzjwOghB= z`Nz~?gA>uyy_d|d2{LqgG(B{ax9zaU1{sFugKzdR8gkVpOXu%1y{3<7a-@5wR=W&+6sQ+^c|Wjhkzv|Y8s^u&)jlP#=V?_`eKGwoSXt=SNfq@s0g)yqu+ zDxU-oNU@@z_M5PooMdDK0%Hd13^8ztHT;Q$`uSi-+8oH#UTo#{Bto82FvXb+UqxTK?7^3=x>7+6i-`iHwO%EkdCsOdbJap+&Td+YJf9 z7H3iiHovoJW2SL$@ODaM!cvP3bhE2{|DPWoC~r{zS9{LHZQCY5NonZn%JrF`mBJ;L zI=`lI^Y*ob@Aj8!TT1o@?xpgDlLtnQWFT-I!haQ%#nbT*dcMC8kVsq;A}7xbneWZP zSq*=+$D~fw>pBt*9&UK)udn4}a29AT)Y3dR`&98!2ty$=dE;F`AE<1%L%soL$lZl; z;QqjzMYaeMZ=qN8ua-t8GNluWIy7GipAiulpu*pKV|3b~b@N7}E37E*_!l8JYBUbT zAGOeN;$hXYD5hf}kU)UKIR*g7;AO5_bJJ`_Yh*T+dBbfPVB3Zs$=9@p-dei$rXae7 z@$XbFP<00J>kd^qmT723+ntUd|A@5f5go}08uN`CyV2kB;(}Tm0L8Ll$Lw={jSv24 zykH;rM2CJe0yG`2_+6^)2a{4g$)QGwo_DvKZaX6*#_B}aWDQvAU9^c+$4FufOwr?9 z-BRqRGk4y+CgjLVmu_}lGF=)BdYlfu#m8-hFepN=0~nQ59XS}*u#H?CfYitoaI?a& z4(LQJf;b!#w$#b?c+hVQh^N7|@ZjiIw;)=qDbt4j#xo+1wSaAOjSZE4$CXLX+bBc9 zHx48mGsfoIVH) zXjqorxp@D~mYU3$XV>C)fK5PT_7A7vIAh7Hg9Xd2;0cRAAmc1sR1S0<~cZ`xA7VoxNbkR|raT^r} zJL>?WAv65Qa}l1faG8I2pPC$Xv--fLCLm!}JI@H>^T0 zWc>yQ#{ME>pr9&9ILPm5blnnoP~q=?yjm7_jP0Bp!GE|nkk+>(p<%-BJOy|XKBLjc zMm{{-_IqsnbbiedV-U)nKmz_Hxh!FV@1PQV^w=?{>9TF`a$a=PJ?ta&G7S2ikae&5 zq+1K-jNdS=sZ8S&V`LH0OtwA-E3}nG^DE^Mw`7>7tk-}1_+CJR&tu_itf`5~tm%ij z;z={i&UPHj-OWvDf1tvMU|R|*c9m4w5FgU?*?u2b(i;Gg5lG5du)fU~AmGw3Ku0&IY zA=kpqtobB0i&Yy5haTp}xqxt#z542kLo60%bFx4XFU`dpo`Sqb+S|eWP-8+@kGdNg zWql{C2$*?1U~T(qC-dV0ZIkMkDHWI84mnn@emuxVaoq79L)F#Is0lzhU-?KkIH(|E zsNqs|a27Z8Z02jQ60XhR*-PKttwLH`TvCDwltcpFrFPRlN`EcqB`qrpjavMiTOJfWygwoi&l+^I$Ha!Z*!6Gs*K7rt3rZj) zB;>C5+x|ypfcN_O7&H+DJSKg3pNkp5CZS|=sq{H3nsGm?wu*>O+z=L4!mg3S{qV+y zfA3Cu@9CMlQM2>7(=!7)a{Hu|DDZ>=nOj4M6uGorRRbStb zbM`{&a629=2yxGTUf_U8WwfCIQKGBljr+@qXmd;s73HD`;YY4v~FETQOFtK z6C56%`smy=NOUj019OXg;afi160}=L1jQ~=0kGA)yju->SmV5BllFCW))T&UgL!SS zy{^t>#Lv~wzcJrBEPd0x%(CEHz&Q#CS*7YOYI7A*7KL`2g7W>GsztMBcLug@dUCe) zjMT*j*_m1yqbhywN43hU|LU{J{k-$GwIP4B-6=ViW~5p9^2@P5=BEvBw`Zkc!;rTn z;ZMSP|9mM7kog#X^SsM8zh7HS`hqUi-O&0v^3j$H3u83x70$bjpE)AP=)7|7rWD(l zb)S~MGKo8VjkyC4iblQEaT{KtzC1HGYI#`K|A<8Y5ujdOc#udB66nPD*fIDQLA!Hy zhi7k|IYEra?6mJpT%0m`$`-9;!Y1c)qgr^8iUE75jEf2nJ6)d&+khiGf@~mp5u%FP zLd3QoTSY^2!UQG?^xlTyKLr<|rPZxW?kuuLTX|{x4*Yf~^p;5TL>C6{B!!y)<;$11 z13x(uk;o=~bV2YpFqQLwQV9>dZ{|3dchN;I{3{?7fh(1tbJrG$DjL!{11rN7 z(l1z&Z`Z|Rr1gUW0U+w@b!TN=+488=Ign(Jr~?Clt;Q6s?i7Mj$cmn+pRn{F00BmA zUKmUON3r-YV}>mRvH0Zjt!1)vGv4gPDrZ<1zgc${<$3n%NdFrlwxmYt#|x zGt<^wx&tCrZU0WP92Q8SFoT5(6h5rXxicd{oEUGtM|B49z>U#tz=4&g`gK3}nnp=H zd6Sq1XaCNCk_sbDXqfr~zESi~CYR{dj)c0*IQ6fkFDm##|7UAhPBV?xCd?pe$x0M&iDMM&L`ZV>;MF!B|6aB$r?1k{Vy=;>ewE4*@8N^v__i_LYhC3M`V)7t+ zynv{q^W8fGVtKz%pNKjjEqK`Qbc*4sR^+Ub)^p@rgz?zTM+~Z z(H@Aab==kAY$skW@*dHCs=fA=-8ica@ghmNw~B@l9OfjF6<;48`-DvOTv(Vx#Wm1AizGl^P;kXRz)*2N)$r9j^#Z(2T{ax3@m%=07j9Y4#&XlEAheKPD zWGDVC#jUPMCX7Io6Sf84NJb;H=psQygfOB}amEaS>f1sY7IU z->wjcjb z2kcDB?Jvowkl!PU3j}+IC=&Vv(uSLrOS;^qBc}lB#HmyX?8 zXdH}VCSNXMG@ zB5mc@pjd?CBBk|-)y3K;bb(L!rabNrETKYc!at-5r}+Ruu% zv|w0D$iB&KVaNn|{2*MGebpvk$ZRRAvoCyY{EPVBaHxf>yuYOOKYl!?;h*rMB-NDe zfgf`}%;g`*@~?*4bZ4&YjO3Of2j^sOP#-#!u5OX5vGC87#azWqhFMk}`$eW%MQO+- zy=ZKX+ja~*mG(Bo-pFWX@k>cnWw(0kE__bWiQMg@;G}nUIj(b+5tq??bPa9Qp~3|GfxuKhn2MFMfWh duI`8Aif+bn6;B&G#VthJApQ`&;@DIweXzz&L!N9k+R% z$c}P4E-*0YJ%6t^-Ew40~l;!4}tM;2ATt<#AQ4&wa&dEVaB*-7kl^l~!N9;x+GuD)w3QTrW)5IB6LSYs z3pNk1<12p{7$Fbf>n+#cXwxV=Vo(owqoZL5D;MJ;9}?EVtwtw>f&h+G4WuvccFge^zW>s zEL_Z-Z5$ys4)zp(S(}(TxI%>K>Hpd5zeF-O`{y){uFiJ zO-ge!AjAe@XYn6`i`zl|gJNg%R}-L}iM^FDy$7qgg{6tB9fV%wgN=uU9R(`|rx5#J zvFvRAW!yg~|IUj2|6;;_bo&?m{$Hvt4uLq^nEq3Jdlxp7e^6Zi+Klbho$My&e+|I# zZwC0UQ9yBXmwyrbuO{jiPX9r9HNoEoM-yik3k^?43t@US3l|4hXETd`_4|J_lytT* zfmoP}aB*;PvvP8%WHlADm=NUm5Xm@o@3-2yg;8`2=|Q|7ZSxH2xn$G#p&b ztpBPd!u3z?|3mwq?*BJ#{&#czZ&m-@tp7hb+VNl3(qAwCW0C&#?`y-Wf4Tq7zppf) zxGTik!CA!G#L>~hL+Ed}|4sT2wf?^c;cJ5Uw+Q^FY#t_#|3~b-b_V_p807sS(m;`C#jW8F!ir>(H}!X74XiR;h- z$(Armaptg9_A%b^6R_nIZ)UAC^dcZ)N%yqg?EzP*HIhoN4D|`&2Ok95FY|9SN<*OI z5W-1V!TS%zC$Uu-G@u%aRB^ComTg*~Ws{Boq%Qs!L%4EknNSxfE?9bK)^j)H({{bu zTdo4pgCz^kTkb0w5Shm*qz*gk)I!y*NNwCWKFK*@xYU+#BA$k^U?P)J7akDxGnr=C z#T!Ey)+-LMj}Vl%(s9I9M*ZzQQvo+{oM?2_Bd#s>u}aZd{7@h{1Ug&Ww%J^7V8??% zLOSLNs$nk&DKQ4krPOa4B9_DoULj7_(3fX2X1){(b;o<*?cb4b1?j~_Zosib@D?cN z9b4l!9@W2Pri+P&WZ&qz8gE?=`Lp?yPRSR2G@>S;1Jw{OWCt#Kng-=mpLmIiOc|zO z0QT#`TDpe}wBp(Vz61`{vGwxG(0jseleSn%e4RNtrU`%3FRuRf?OY<{L(T#jJbmwS zedR1jF<`|LQE^8xLIJ1BO<66R5p{VLmv)|)_B%qJB%xplEAleP8b)+$l3DUlt{yRe zG$n*!dBFxExc6;*qVjkHkbmz#nR7frb$pdzH}C9|6=g1{gB^W9U*2sHl=1w;jix)D zb3L>-S?oPo=SI0=6A5mlNQ1x9wa&A-R`_Iy^?{Ue8H7y`Zk)~el&fS`aYBPb{>(+S zG|Qk=x6_C-x%58T#xO*dx5%=OelIQzXCl%~l5(Nm2pPH4YJa8Iziw>z!;dDa0_y7n z&M5Xl?d#6VQqBpNvY2<-0@v}u@MnqMb?g<|KFz&(7zs&h)$CQbQ1xS-4x!44P%i)t z75o$pa>(wo%H&$u)H}ZPo9h?veQFd<_DqG2pKQ3O!glnaIJhl_`%`X-{i+(_DSvB+ zM4Tj=!6B3`L;t2M7ttSGsVn!p$sftFVPwUH$x6QP_Ps`qR<#<3Hf6E(0vV?*egZCp z!Q+N9HVF89XF^C-`zG|60*6$^ie{E9TEuY)ihM&Yr+f&JJ}=2nzxgN@1qiB&Q>$;yub8s{V`f} zD&b~2S|(jSO>%_$4(BFW+925ye34?9- zM~2*!`_z2+J4c*v_0de-7!!bM3d{#PIU3~oeJYalFsa`=^fNwYVKDMn6>8QUG2 z(a>7HQ5{;Ho`*ih$O#C>9Dn>8PGlhz*Ms#{>U8q1-R1txlSXagG`iIcwrVI#_H>D8 z&HEGHQVnmn3GsQXus+p5eDlagL)U(~C0$_Gk6bHab-ensbP-di`j`!UFON(E6e>BC z?`tzQAf5;Wb&0u@|7H-R>&LobIH|5-Ey!yoo3##2c&IDM!%}R%;W?C|6MZU?szd3# zlnKI_yr-z=-X|r`biaa%IxuS=+gn}>Lu8hSTBo<={n|d|MFv`_H58&}pzcd#lm6cR zqbQilyWamF+YuKh4g8fRH}^`<#1Rh&q{mcsA`*Nha@HLxOT8lw55bIrqR?=Wyl|PUSUfdm@7t zP59cO9iml(B)N<$V}lN`|DbKU^VCmW{GA=tF3#W6n~JNK_v(z@7Z$iZCvkRWjlS5; zOUGedyM_)(1ly2axx(-dS{an4jAhzf2rZXh1<2Q}@=MDeUI+MQ+;Br+xI^FSP{>uKeKEFyoPl- zkUxm5({iM&z39ApW11)Q7Pvih{KPt&r{gm^X*YX2k+ZNhl1uYuq7~wn)`#OQcxB>! zb9PJxa#~ZE&$hONj2;G$(or9NIDUEfw!%corCsOG)JQQl>&G5Q8!EKMFP!Zq#lv?-EZT@^Pv1#LtW5}7Kb=u99 zTneifiakQ(CWqaS15^uO2PJD)?f@W~+Ol4e@cllf%O<#V{J`?9OcPs6TTAa)y;I~Q z(z!ROX-A|GuO(G?zF2n<$ua?Hgs?Js9B#lm)v*5$fz&Y;Qm)a=I^|Md;5iLrFAd5i zRbH$x^4-H%jG1P!=O0NYWT=`*Oe73MF-LO4H%q{#z3qPO$iBJpp?0;Qda$hAN$Ap? z2kG0TkjXo4Iv}Ekrs(^rr*5tUV1h9oD?ca-V^4_9_Tfe6C}+$+&IDZt44aOG6rsL# zwW?m^u3t-<+E5PB)qZLq0gD6J#6hGB2*M7{(-V)bjMmC9<5lIeh~cCWGw5i=E^^0l z05`c>UK3Xi*Ze^Ic!MI{I&GFkvIB+Yk4Ex{PRa;Zh_{n{k4zJn{93_<>V1nMWc@b4 zr?VsN}>$1Up6hdJHCm%xg@rWo7ofIaBYk0wWT@DEY@f%0GO`^}EN-lUT%!va6_)>{(F8W^Aiq z{;AIUwH^YW4m%lJ_8z`?c&BMx=V>yEwQP8PE@z<@Nl%}Pkqu-Bz1B@Ffpr>bJweO{ zg4E;@uB5`OnOA2?oLiN_3H6=|9LZ4`b-V@8BIRFS+~h@Q2s18B2$jm{k^2_qkLs#E zjgK_UIDLN}$=;W%msQ>qP~`zzO=zQir$MydrP%of69Lum7K$t3d4R3I?JdGtkP21& z4BGQwT^w->N)`)R-BEqr!3*xQ+quUmssvFAi`luAVDY&+WSOBNhK@_dFKr+w}_ zJ7!p}MBYoghhooc!*spUe`xdcv9y6V?f`)KAuVC%!VrRY{gwae&Ax>lNguIo+X*vaFzZ@p^paf%j7Iszr3Q=zJ>I zqJ#SY&N9}+xn=IjVLWb5n}q#&9;h9X>pJAzO8!(7tZZd`?&^5ChcPjYF~hQ%}hesJfxw65qSbKb&$t55m{-W z;Ed816+sig-#K0P@o!VUO4E_|^3GJybK_IuqFUZmc^ICi`V3^Jq+9!G@4mf?=p56C zz4MfBQ4r?4U5g>< z!EG5s1JA=oY?Rz0p|=MrJ3FmFE#=7D;yHUyN;f3!DO;(s;a>|?6U~k7TK$K8Wcg_A zHP4MJvP_fqo^*aQaa&!q{pa;%RhjijEa};F_0d&p(Z~L$=st~;x&b6ESWuY{MxBh+ zf#N=is&=wSOd8ABQp*K0^!*CxKe?~m#hp;gxr%GESAsVZJP+j-3nNvI_-Qf60E`yN zTO_3N-mlWR0v0eP zMZ80qd-aFE!QDfz5sRxf%s7@AXvyW!dOI0;Q~QU31l{Nog;6*-i#PuZCaCL(P0AW@+{0j7K5sF<+Ven z7O|Ocq|^FJ7ZaVOYkB3aQRMO!0C!!_iLF)yD!`DgEV1CKG_RoHZEpl!Q2$By zvC#K*Usig!xAF;(SdTLNbQS5xDR4jk4y<3jG*(Miuw5K$Hv*+UYfRD27*YxTpj!b?7R*0Yri!PYlqdV4;_@NRN$w%~v_rjfueps=RtK=v6~xzpPzcbFWP*Q5i0V zNk4|>Nv7OS>SGlM50(yK3`-#^r^5y6JmJRS=bFRGRJXGbe$35j&WsvE-$dxPO1_(8 z*6U;(drMAF@M&2&j$6TiT6Qp-O<^1?WiYOGSpI`NwoVvmWvSvGN(R>1Iv_}L9s+4l z2^M6Kl=l1j=jMGWXpPt<(n9A8d~r(bc{iYx;7wS7E?WfOC`_`qD}aZSftL(SZ*V%2 zJ1AR1EcKQC`6DWG5K(iGFxhPWvPBRwpy{WHsEg6{Ng1vr>U&;uYgmm!_^0L9B8wk< z{||)8sU)rGJD_hn8|wqbh5Vb{YnVzcO5L3*_yGs8P&n2IZr}^?Arhx+zTImr0Zu}s zBV+24mNEqTYr#s{>5Kbx{y&c3nXiBo6#ZHos^KpM7CdxN!+q0yvKFT$^>*&Q#I9@6 znP75AZ}b$4K1>h-d+SF{7@Kd-Sn*QrYcG|IOR9&OF1pht95i+VLY5Mz4oE{Y`|DRr z`6LgqQFDV7BZ49~%A_;Vao-Cuq~bMDW@>2`@jk=PPm);m%{qJo)e}t{i}0%)($6&E zFeH6XfbIcK6VTW#tV#DoXjJT9Z7^{C3~ejJ?c<(SQJ0k$@#@IuTBINnq~M9Nas}uk zCFb-|ns0v^J9Lg6B9-6&5I>w_=R0hGG&*yL#JKcfd9nt}>Ux@+Ry%}K&o}-&WcY%C zNFj$OyQ$4kSZ;MM=~olpnFTZ4w-hjP?uoAZInA0+HcOw^b=-E^>?%Ek{B6CctwO19 zLVFC)xYd5Lv51))nJcGwJ?m^HO^zXR-+cTo;O8l@ZkgI5ZK_g-IRBnQ@U(fY|CCMu zJV~GeRZf_QZCrVelNt}G0o#(6G+dvK9MYwH0Y|THMm&6B=v2TTuXFXf_eHqc7Oz{@ z+-*=vk)QIJKo0@MIc}IcnjRWYKbb6Mk%Rjk69_tuo3jHaI+qN6LbH|8<*7ohZQmpV zvFv1zyIW#JpWc0k703$QE1$Ra@&82M8iOuS0iJf>$9z3Qzq;-a=g&^}Bp%G8Ny?hC zH^jFFHZvYYS604%n74QC&?j*wwk8VsW`VaSuqKCJzWU)nU?~AeO*(S7aPxuvyRz^( z_mxLd@!oHSr71;8t677%Q1GCL@%^3Jhi*=Of!|l^#>sxFS$p4pXQ(*ezYI6GDs8D6 zFlQM046M^isgd;LWW1n}!VgYf-P8Wv4+uH1tv;z{`t}=jo=*Qsdo4H@tQgnekbkpy z>utkp3yT|}T({#6$S@YG;V9syq`W8L7yYLGfpVU(KA`(6q;M)t`3dfc+^VzY;2W$D z%$HH3?bm!+eTdKJ^1+2g%b52me{MR)2WHmow}fVfqYJ~}9)U;Wio4SLev0b~f?IfV z_T^;K@;c>8-#EL7#NpY`F4kJ4Y%zRYRSt>59XrYf62|EqH;Go;uQi=P_A5p;oqG3> zLj(a^o3NufyVw++~V3t*<|aZJWZcciZZMb z?N4=oUyt95eePMjo1zxobR#x7g| zj#}@$S4(uJ%mj`w4z1)!mMO550}_KZ6_`gw9PP{?x?q5DJ!BI%6T=3mGtfLIn6_HP zInOIikNov#Xlx_TFo#?dyrmM=?W{m_L84 z37P;URNqSXFC!eGgqF{uL(TH`>kef>gV8ro0{2I+YfGu+dWp3PwQbIkj{|kb4wBDR zsDK6AePg$;XU4k>G8Sq;f`0hkC0;4nPpFKp97}ONb5l8yC_6&mZyf8Ifng%rt+4W> zXEu?Hd1a$j7PT(^wt!H*Q?>USMVb14LP|k5;`04ojhwG&A!;(*m^d%U2Db6+y%4*) z(sE`sK}or4kruhPfXU(UsYFu%amj0Gv;-FEFc@RlSU1-bH+{Tw;k0qf@gQjC4{fD6 zVDLg+Y@N{*Y^&HYFr92B=qap6-z$vlwsTu^!;cJ?n)12mH>{bUHMv}a-cGCNRyY6* z#V!?IE91Zu^{!am1Hp*wSVwZx<=OFs+JT9QaI*K{20b1!vWP&K!8cWh`FT2_xNnnT zh>&}ew=I;ZoG<^p5vp_{0XwJ}aYG!z(L>&k>9^6iBa9ZBuGt-7-@qdm=G2E9d(WOT zmpv}!raa#SfNJU^E*&j?iZ=_F_qF zb>qXnGR$}b)mz|o8t6ay5-p%FiCBmF4c}g1E zfTd7pP*5RM_i;f?BNQgL93cEqATVZ>?5mBSD^sn6Jaq(zwx7>d zq%6)(7I{e^KAB>px7>GVee<4slJ!Ax)~1s*NoV5~j2-eHp%wsB=aMGM(6HE~%b@0M zna!!t(;^&YMq z&W_NJ4)C3b_GXG=&8BJNf7OM>OwQK&tglFe&U&vpr*1el%QI`RR4jH3H8K0KB5CqT zvVxU?o6HU*(Y0sc+0?ydtjVp!JEh*-_zTQ0G35M}+cD)}1zME47&%~eLoX9DRVrAO z$}^V+dkMK$4Y|iWBVyX7UUJ&!>w-Ppo=L_%OSf|cib6yX92{dP>XS4>10zs>SyiWg zl{mLqGbg)QIkyRU$W!ekXJPkHu30|JV9Z1Bz}isnQvVzYk6xSXY_5^H)Utj{lN8KS({HI{%g`Nrk%ii-1OX{69#mhPkfhNYriUu zWLY;Ne-8in^aWLBRO&Qym%Q8G*IlT+gBl@dUtIbUFVgB~RZBhG7l&3}2wgnbIAJ9d z9JKs1g(u@KU)egeP4~4H+ziwf;uf;a(=ClOOS&LY*@U(dRkU0gUsiaIeqPl8rH>w;E~XK(6lQDxda;8|g!? zPJGcFh46mtoVJ-NkmjQol39gvmZ~hS${j==B3-qQ9eP74A^3>KUxrtmm#i0WCNA3G zcwFVp^m+}fc%bY!6V)AJ4geD0!JOBccIeo?5NH|Y{Pnr%;q+PcoTAKC21l$Gu?#@A zc}+#%he&S``YWPp4?Lj47kaCZVs_E#9X+|8ZZy?3*s(ptDg8+?95|5=r~IpjC8dXW zAR(PJnhez~tz~SQ4om8jD5L)dy20f;++$8ad=xfnS>U_=1`RyQZGKrqZ!(J?i8GHlk8|?ZcbQ&Zj(t3n zNn|~5EB6+f-L)DuZx7VtXzvrg%Z%AZ z!R)f(5UH+aCC3(_9j-Cg>p#?A^&UMw9y?a_^E;lMR(IFBg^b^vdCH`gSKQwI_-Jtb zFP^lQOP~luM@xFItdS$V8_Y$ETm4O;{o*7XEMa9lP8g(?TO{3%93zzm|9_^ zEgl=p3#pui?415P#LyrDAp^U^Nl*`rP;o%rBE3Q@BE8YPS?Qk=zgw!s5 zTW?XC(2r#jnxMTiC5#mlZ#~^c2gLP%x2G4fUwZ$+qdsrSK_P^yQFod^5{XO5kk4Jz z-Aq-BrbO=xz0`CUucX!m5tU>YUC{d2@*mbe`+>+WCo(vbrNp@gF*l9EqoahTVW5aA ztUqryxgoLT4>jV_UqWfvyQk$=?Gq`b!Z6?XhY#Y-*lc|+D$3LL^f=`z{LHc7ATBMP zCAV?D%(7HUYgOs_`KzNmQ5U)6p-4NB=_s^0#%;B)=VcC{s@Ep*#0^O?9t%=D`C9mW z->vIC6`cPdSRTkUtM_Yd{$e}&1;>^UFaKKuu_V$AZyt%8G|3wmLhaA-q~aN~q376hp|#3^0a}Q= zuH>aiHTF9D2CYSzl8u6>Yrm5jqFLt6buF(;^mDx+7s1vv=_G46@_kW3TTEl?;r4vP z6fUcy_-MsqN%oZdq$K*Xne%>6Tk+hN;a~O_KSzx-zduk9UENkefqVT%%` zhr~c|R3ucVXr2kB46nGp>*NjVrh$^9}H4-%~kS zL%2T%tn2$H5r=22u-|6o93@jW3)HI5uA*8v<_d-xO5oF0&csL#=r)&5zc1*z%$h>6TL^f|0NS-@gB?ym-G_dQle7 z*<8U@2*a{A%IqOp#M1iy6T~kbE*_lE4U6X!0 zKEWf=$5=fjH~-N?Bb{OxfpE3OL*p=^NUu@21h~3A`H?I)vMbJu`bZ*yKKNa_-RBRB z8k-RBj$(W46^5W-Y2gp%49l^_8h?){q0Th z`3hl!R-_;VgHZ#mTbB|&{AhChFqF;@T8$`^+WgH{YwXPrZ0w`0LYKZ;c%-J;*w$Ap8iiphL93W& zx{of(ju&Py%uIp zCrTC}z_%I|BR7u<*Q#rJ&phx-=6PKWgbcY^}PTWZN9VccPr^R`z?Hi z7ap*C#MmP(fVDzH)m3|Yk@HW~2#lkwWEV>00bbRS5pC<1a!mJuB9ghQf|ahN=O5rf zReLUV7lXxn8~5t$jn6H;)2J4hJE{RA4ac!BN+tHsZlB-#Zw@y25|WAT7djp752u1O}&(54;YI$A1t5Q>+R z+lu!%Sv#o*iqTg#WlJA?48q$wGJK`P0kA zWYgjyXFTvBuX3jaBxmO2-L4lJ8ghIbx4pS@xopo-nLP!DTr>%sLV}9K*=VGYur+Q< zCoxxO-76agrhYGwtEB`3pkpCe8ws`eLEx!%TZeB@icf$g^DHdhR$En_N}^L4UY{SDnVaQU%eTk7bif& zCd`M*hDnI&oH$zfiHc3r5+j%=df}^uHY$_yNH}w51yVnP8TE9ib~n z=|@!j5RP>69!C?*JD>i^%irSZYfIsoNf=N#Z}1S{w_+FXOc_OUbiv+eU-`?CY2k{y zy*Gg@(EG^4W2HpA%NBnn>@F-qWYuJtd1hpy{vkmIBl`F}O_)+Y04tm#Q-Ly5;SG%Q zFmR&!LI~#P>oh)C#~m>{x<$iU9A*)h+~S5@SYZ&zEz*XC=yyqS^K@&83UQs^+4-iY^)#e^ z3mdJ4K0bPLz(=-vJ{BVL8m3-Gc;g6-9z8{iJZZnmOh+d`D>I|IV^lt&tWgQkbfsVW z*_gW}r%BE0>a41+d>np$?0BLXd)g)ru$F3m)|aJ7+A>&}q|;yYT?dxGpKGUa=6VFg z9)+ApDyYX&4t^a98-n`snM1fe@`ot8B=6HA!&W_ONpM&ztvNOZTL-C`*h`i(*`*w@ zY{E?ryywlH{2p<+Pzrg*FulneZ+67QW>Y}?=0UVa8jZ_BRG6{&-?>x#cN2<06L8RU zPrK2i9orgSoG#Jinon;O_Z85{ovcmWU`d#q2A4-o9;u%GnU;%M_WV(+!oTrY4D_J76Y|`0k7Zf5nh7o;<(XC4HUM= zzSio4_Lqo&3d0{i8JxcsZVqLAMq(}hegU91rQoT>wem40wKQmfi*CCOEk;FSUX+GE z)13M}R5-XGF0XFmtZboeV>oDCu26fEOT4N*-;TT~0B7{{2_7s*$z67h)wTrYOYvag z|8v>zc=gO$&s4@9T>V44udd(?frBL70M|{OYKoi!Nx9Xiy0>SL!rb6k_)gb zk+KF?-`u+i6+^)gKFaRSH%)dj9Lb!R{+u~sUNLjMu=PMA2 zRV}sZD1RYB^3pHIZV;4n4;u5&*fYH&#Gda~~$! z*^Q6({1B2qhe$UXQkai#uAdnnm1|bNJST;Pg<3Zc_JByzk@Z&YSyTQu2Y8^db%9ZjnUpy-|>_#5LT$y z)ME5}L(PBnpe05`qY)BPy(JjEHBdO;eE*84!~;zp&Zo3%sD!9$4A0LGO@4K+;K(|M z<##B_kS)1R0*ZuKbZ#N@YjC)$qrx>e7;cZ3KFO|kI$;+3;~mtjoFh#hj4foVgWFuC zbi97Qijtisu_1Qa(5rMe4Fy~rbl1E~clI2=7sg<{A5U!1o!4rI1&Q|3H#pwHFtuZcG>DuM1$z|z&pNjlijperuJgwE)xA&2R#>7 zK-y>*o&STxy&XN{F+Xdg>pTK!U)!h<}kbN8`(mS5imd^NG)mJ z4V(BH5wxh8W7MnSew(OAXpTx>Eg=J3T=q?vWT?aa$SPr=a8Sec+CV1Ojr@2+Q~Xt+ zGZ^P}H=VxXXU!&##6X!7q7fj=3X3#&jb{3Z*%i|Bo_IDEv5-~%;ApHBt&Ru@%i&gg z!c1YN7HLn97T3#xf#R90PZ=mnx`!r+SK3T$GBhaPqzP0B4TMCb%V;CuZFh~IJzZkb zGQ~?+!_CnZQounCE>MGWOZ^BR_{S<*>sr{JPKzG;y^**zfT>y8Q&Oc1s_20&t_JiQLRgN`wC#XGC$idDu$2qdU= zmln>n*>5j`)R$9gtACkkabJ=w)};|nJYZz@!8aQ88(?X>4Sy0k?<6HNI8)ZBD#P|EqzCNR~eLGW{?xjY%zh+A4=7=di^lJO8hn&DwaR=ev~FAIn!*(=#X$i3!fzO3FAj#`T9L+G?mj;_AFtORPk>`Y%&IIITJCb2+9cHqF=TpqXUMqjSaw7&-^K^iFq$!+`) zY{x^=GqX?nAk$=o%HORo{mtTwR zWZG(9_kKKMa*=|Q8%+eb*B8&Uze;Ga8$M6grUIh*BXyVs9eb@Rq-lo8ZZXoye)?oJ zyKgr)cN_fP)Ay#Ucsz0qYjrIV!;ZCvbNCbgG1>11_3_-jTPyy~}%AxIHgL{qjq>+SO2yckNE5 zXPQ;9eaDm#!}rwuF8Wlmoq#2hOr4k^kCsr9YC6!I zH{iGqr;y!R7C`o`(5R*b*5P4h=g(k9bPkt3E`wHBNRXSLR6mVxYexRJ&%{DcPIwjs zhRmo$$KwX(q@{;Q25#X4rHh^Wx2e36i2{3-mC`H`@TC!LwA&K(%=ufHx}%= z9jhZ{Uv}}Eo3*l>;Wv4FpV#G+Ptk z=Je}jNpJVXDuh(sDr;9;@36F8P~&g%tuIm8=g&L3bRD|#x#jBJng-xoSUDjDzMt?+ z^_YvF(lAdyKi{ag=kxG5u%G+(PUF}~JLF22!_P(&{g^&eLGF; zLW(TP5Q_`}9@qyb{Sy;%)()%4ZNtxhjl0~G(8-+9fPGqWr(>KS@ zla~0Xv68n({TDqa9pVK&BIFsViJi0V?O(|LoNR&g)R!EWd6He8KUWB|KYeCyc=}wb zKV9!j{*=EI*K}~kM-^*U83#kn{8rDe@%_uirqSk|QAcEFSIn0E<9%)D`MTc=lCR5r z{JtR1&-ynoa~)gy>8=+-JgY(jiQ=^=NLY4ozZZ0oFn$8{XuS;;{sR0mQkclFfE_<4 zTDG<$6)dH5KEso{LCb{8pkMET(Xbx1C$9T_7Jly_He1as<12N4H1g)AnzQPCyY&<0 z`IlO{)6=5<^sW6;P|+*6;mbl|^F6z>&RXsp)gofp%48P_lzl#%COA%7P44T5(gQD^ zqMy(o8r+;Ni9!OHU(9JysU!2%Vvb8Gw<*acEJ#Y!Lls*JB^%kuL=yuFwL*$gj7#5B zn`Up7;A+2Yb@VNgx1vwdh$drXuo>S*XS$8cz#lhT2{t@!fb4%P+U}V>?b&1Q3SUMs zSKW-W@9qlTJL8izUs9SF;w=GnoleoLoGx)&5YLClSE7Z}Zfz$Ox+la4UoLz5&xhha z3v=%_nvBjW=-1P0XJgp+8I0_Usr7+tRtnyG8nCS+W0a%TG-zM;6x)?`Nas+|o2uk_ z5`Axt6?!9Ss*88RjAyz8ufSoo#YAIuVHIfhdLFlXS!&Nq+kE_z_un*X$YFPSWV z(9UN>eb!>nd|>m2;W+#CMf>h*2Ph4rWDot{wbbgzG(yBBY}mRKfVdW*H&jBFR9LW zi;Ka;j3UYO{+PR-a^4 zLB6(7D(@9EV=B;N4%5V@&W6k!yNNmJK<01BdIKIB0{AW`-l*=GD=j}3AikD$yVDi$ zxSO@w&#H%=A3`Rwa zFkn=k&vi&v+~D$!#RKIH;?9>Hzcx?ktS4DBzvE{jZzw7)wRZ-18}^KyMYVZ-v~cSV^ht?? ztUhNXYkvP#z3dxw!!6WALd1HsvCcy*#d@if1zEi(avRj|jMs(4yg+KLt z)O?{&1YKpR9>=8^dA7?Yth~`C&#BETLTP@FftndL9@o)`ll2cc+~dd6C)OGAqVmNE zlj$O zSbLQW7i4qGj&f~sqZGc#CIy`{D!%W}@+FOKe-Pxq`l-9fVEbL94ax=0(i5g@-u= zk*`V%VVM7M!tMC(VtRjZ5a?Z|c1F@Pv5hWLkFR&?1()P=uS@rGRcmR|@^hr^GQ8d6 zUN3rhvAer?B=B;Nvo@trfM|ji(mE3rI*d!=`GkX4k$tAF?J}UW{n&q8}e{V*WAOYr=cCrIMJUs17cx#8l)JH+@F{ns)= zoesY!U;O}HP*b6yY_o0Moe2dTAM>&_Ltpy%u-`h9k4qdty-s5? z&nipz$m&*BN3dRDAmpN)pl?~b&izxphAiFF)++JHOe>%1V7edt`-ZxMD$wA>H#Uvu zwfrKeZ=akre2*0cD2r1QUlfN0T;d{aW(J^sjSE`+)4`o-A@rwhuYrB60B==b)nH>B!6`7J-^-V*m{yiX3 zHyWAqypTF=tgP^!HRD}$JYLsUjzs^-yG^uDLGcS2TWyar$+Bq5saEy+o#gfptX?U5nZLYiLV|s3;zU77VbQ)c{j+?(1+`XRT zc3OkN+-7}=?|GF#-NQcqLy_#iEiRFWHS!xAr3G9U1KL~9g*vkAGCN}jaJ~(EedI@{txTX?NL zRlE-vgy}5y2Nz30#!mdTfz;n{X3jn)$Kq^Ykxjw*xE zfRlY={g{-cITrp)@IJDA=j@Rbd>!o0c97(ot5%i_y%1CN;3$q(ZpNWJSe^aTmqOOX zW9Xe8bORV||NJdR2kGn8EKcpqa`qW4{uu>zRT1N6vMxQ^rj`bg4Cu>AZ=YPxir-ji z*+`nRkk@UU>X%PEZ^WJ|g*lmXQM^Ggt~%dz8!0WQEPmZ_NjPCV9&b314-4-fQ`4Q} zmZ1N*zdIMNPN4z>N*26wOZ7A4Q&S8}Xu0W2w_1wb<6tM3eF%Qrb^{gN$culWB$?0N zBZf`}0Vl@1K2110{oQX1t$%+?jVBQhXaEXP7)$7ZFGpw?LtojCC2T7&cl^q1%?Y17^}cye zft1nZj#qoX(p(Gf`LsqK)fJ-tB$%eID3E?uMiuTtuRz2=kGTArwlAn-*oTTlPlN`( zp7<6OpAq7_Q@CF?9KY%m^QG=??KwAv*NE2t8N$-GoowhacJkN%b)EFjWN7Qv$WGf) z@uBkbq!~$|@=^~TS)?LgQ1b)Tm7F@tPlyy0ZLzzmjrTp}#C6nJ!#~F9IJ0Jjo6~B- zrJhS`8y_S3okUyh-rIaA&l1g+L|xinL}cY$Nn!J-Sob@TFYuptPj4Bo zbg29U?fONn-yUVPAIujrNNC zs=B?fO&X4FW7Dx&fRCB}lR+h9h%W^{=*A-FuSXIzXkVFkFiDhaPUNou@{zBfwBcz3 zl(aBVlQT6OLv)~6(<}qeyyTFBC(Ya3P}~NC&jrR*X*&4ifx-qrZP-4c0k8hD-Em;< ztj1n;mbFf!w+bIU8u-%1lKw~7y9+JTSiCIn;4?}5UpMKvV=(~FhY|dZUf7pt6uV>- zX3AduR#%0=5j>D!Qy;8DTTJ-ZJXQ31aBEFUR$(OEU;~REJvLrSo

cWAmB>9gLzN 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 TQ$;xF00000NkvXXu0mjfSr None: + self.infos = infos + + # Errors + def notExisting(self) -> discord.Embed: + title = "Impossible de rejoindre l'équipe !" + description = f"L'équipe **__{self.infos[0]}__** n'existe pas encore. Vous pouvez la créer dès maintenant avec la commande ****" + color = discord.Colour.from_rgb(200, 0, 0) + + return discord.Embed(title = title, description = description, color = color) + + def notInvited(self) -> discord.Embed: + title = "Impossible de rejoindre l'équipe." + description = f"L'équipe **__{self.infos[0]}__** ne vous a pas invité. Demandez à son créateur de vous inviter." + color = discord.Colour.from_rgb(200, 0, 0) + + return discord.Embed(title = title, description = description, color = color) + + def alreadyExisting(self) -> discord.Embed: + title = "Impossible de créer l'équipe." + description = f"L'équipe **__{self.infos[0]}__** existe déjà. \n> :bulb: **Astuce:** Sur ordinateur, tu peux appuyer sur la flèche du haut pour modifier ta commande." + color = discord.Colour.from_rgb(200, 0, 0) + + return discord.Embed(title = title, description = description, color = color) + + def alreadyInTeam(self) -> discord.Embed: + title = "Impossible de créer ou rejoindre l'équipe." + description = f"Vous êtes déjà dans l'équipe **__{self.infos[0]}__**." + color = discord.Colour.from_rgb(200, 0, 0) + + return discord.Embed(title = title, description = description, color = color) + + def inAnotherTeam(self) -> discord.Embed: + title = "Impossible d'inviter le membre." + description = f"{self.infos[1]} déjà dans l'équipe **__({self.infos[0]})__**." + color = discord.Colour.from_rgb(200, 0, 0) + + return discord.Embed(title = title, description = description, color = color) + + def notInAnyTeam(self) -> discord.Embed: + title = "Impossible d'effectuer l'action." + description = "Vous n'avez pas d'équipe dans cette partie." + color = discord.Colour.from_rgb(200, 0, 0) + + return discord.Embed(title = title, description = description, color = color) + + def colorAlreadyTaken(self) -> discord.Embed: + title = "Impossible de créer l'équipe." + description = f"La couleur **__({self.infos[0]})__** est déjà prise. \n> :bulb: **Astuce:** Sur ordinateur, tu peux appuyer sur la flèche du haut pour modifier ta commande." + color = discord.Colour.from_rgb(200, 0, 0) + + return discord.Embed(title = title, description = description, color = color) + + def colorInvalid(self) -> discord.Embed: + title = "Impossible de créer l'équipe." + description = f"La couleur **__({self.infos[0]})__** n'est pas dans le format demandé: `(0~255, 0~255, 0~255)`. \n> :bulb: **Astuce:** Sur ordinateur, tu peux appuyer sur la flèche du haut pour modifier ta commande." + color = discord.Colour.from_rgb(200, 0, 0) + + return discord.Embed(title = title, description = description, color = color) + + # Success + def teamCreated(self) -> discord.Embed: + clr = utils.RGB(self.infos[1][0], self.infos[1][1], self.infos[1][2]) + title = "L'équipe est créée !" + description = f"L'équipe **__({self.infos[0]})__** vient d'être créée !\n:bulb: **__Inviter un membre:__ **" + color = discord.Colour.from_rgb(clr.red, clr.green, clr.blue) + + return discord.Embed(title = title, description = description, color = color) + + def teamJoined(self) -> discord.Embed: + clr = self.infos[1] + title = "Vous avez rejoint l'équipe !" + description = f"Tu viens de rejoindre l'équipe **__({self.infos[0]})__** !\n:bulb: **__Quitter l'équipe:__ **" + color = discord.Colour.from_rgb(clr.red, clr.green, clr.blue) + + return discord.Embed(title = title, description = description, color = color) + + def teamLeft(self) -> discord.Embed: + clr = self.infos[1] + title = "Vous avez quitté l'équipe !" + description = f"Tu viens de quitter l'équipe **__({self.infos[0]})__** !\n:bulb: **__Rejoindre une autre équipe:__ **" + color = discord.Colour.from_rgb(clr.red, clr.green, clr.blue) + + return discord.Embed(title = title, description = description, color = color) + + def teamDeleted(self) -> discord.Embed: + clr = self.infos[1] + title = "Vous avez supprimé l'équipe !" + description = f"Tu viens de supprimer l'équipe **__({self.infos[0]})__** !\n:bulb: **Astuce:** Tous les membres de cette équipe peuvent rejoindre une autre équipe." + color = discord.Colour.from_rgb(clr.red, clr.green, clr.blue) + + return discord.Embed(title = title, description = description, color = color) + + def memberInvited(self) -> discord.Embed: + clr = self.infos[2] + title = "Membre invité avec succès !" + description = f"{self.infos[1]} a rejoint l'équipe **__({self.infos[0]})__** !" + color = discord.Colour.from_rgb(clr.red, clr.green, clr.blue) + + return discord.Embed(title = title, description = description, color = color) + +class MatchmakingEvents: + def __init__(self, infos: tuple | list = ()) -> None: + self.infos = infos + + # Error + def noTeam(self) -> discord.Embed: + title = "Impossible d'effectuer l'action" + description = "Il n'y a actuellement aucune équipe sur le serveur.\n:bulb: **__Créer une équipe:__ **" + color = discord.Colour.from_rgb(200, 0, 0) + + return discord.Embed(title = title, description = description, color = color) + + def gameNotStarted(self) -> discord.Embed: + title = "Impossible d'effectuer l'action" + description = "La partie n'a pas encore commencé, ou a été mise en pause par un administrateur.\n:bulb: **__Commencer une partie:__ Vous avez uniquement besoin de la permission `manageEvents` pour créer une partie.**" + color = discord.Colour.from_rgb(200, 0, 0) + + return discord.Embed(title = title, description = description, color = color) + + def gameInTrainingMode(self) -> discord.Embed: + title = "Impossible d'effectuer l'action" + description = "La partie est en mode `Entraînement`, les fonctions de compétition comme le leaderboard ou les équipes sont desactivées." + color = discord.Colour.from_rgb(255, 110, 0) + + return discord.Embed(title = title, description = description, color = color) + + def invalidGameMode(self) -> discord.Embed: + title = "Impossible d'effectuer l'action" + description = "## Modes acceptés:\n_ _\n**Non classé:** 2\n**Compétition:** 1\n**En pause:** 0" + color = discord.Colour.from_rgb(200, 0, 0) + + return discord.Embed(title = title, description = description, color = color) + + def memberNotFound(self) -> discord.Embed: + title = "Impossible d'effectuer l'action" + description = f"Le membre **__{self.infos[0]}__** n'a pas pu être trouvé." + color = discord.Colour.from_rgb(200, 0, 0) + + return discord.Embed(title = title, description = description, color = color) + + # Success + def gameModeSet(self) -> discord.Embed: + title = f"Mode de jeu basculé en mode `{'Non classé' if self.infos[0] == 2 else 'Compétition' if self.infos[0] == 1 else 'Arrêt'}`." + description = "Le mode `Non classé` empêche la création d'équipe et désactive le leaderboard, tandis que le mode `Compétition` inclut toutes les fonctionnalités." + color = discord.Colour.from_rgb(80, 200, 60) + + return discord.Embed(title = title, description = description, color = color) + + def memberBlacklisted(self) -> discord.Embed: + title = f"{self.infos[0]} a bien été `{'ajouté' if self.infos[1] else 'retiré'}`." + description = "Le membre sera incapable d'interagir avec le bot durant les parties (compétitions et parties non classées)" + color = discord.Colour.from_rgb(80, 200, 60) + + return discord.Embed(title = title, description = description, color = color) + +class GameEvents: + def __init__(self, infos: tuple | list = ()) -> None: + self.infos = infos + + # Error + def invalidColor(self) -> discord.Embed: + title = "Impossible de placer le pixel" + description = "La couleur doit être sous le format RGB (sans les parenthèses).\n:bulb: **__Le format RGB:__ `(ROUGE, VERT, BLEU)` avec chaque nombre compris entre 0 et 255 inclus.**" + color = discord.Colour.from_rgb(200, 0, 0) + + return discord.Embed(title = title, description = description, color = color) + + def invalidPixel(self) -> discord.Embed: + title = "Impossible de placer le pixel" + description = "Le pixel n'est pas valide. Un deuxième embed apparaîtra si la couleur est invalide." + color = discord.Colour.from_rgb(200, 0, 0) + + return discord.Embed(title = title, description = description, color = color) + + # Success + def placedPixel(self) -> discord.Embed: + clr = self.infos[1] + title = "Le pixel a été placé !" + description = f"""**__Auteur__: `{self.infos[0]}`**\n**__Couleur__: `({clr.red}, {clr.green}, {clr.green})`**\n**__Emplacement__: `{chr(int(self.infos[2][0]) + 64)}-{self.infos[2][1]}`**""" + color = discord.Colour.from_rgb(clr.red, clr.green, clr.blue) + + images.final(self.infos[3]) + map_attc = discord.File(open(f"lastmap.png", "rb"), filename = "map.png") + + embed = discord.Embed(title = title, description = description, color = color) + embed.set_image(url = "attachment://map.png") + + return (embed, map_attc) + +class Embed: + def __init__(self, client: discord.Bot = None): + self.client = client + + def teams(self, infos: tuple | list = ()) -> TeamEvents: + return TeamEvents(tuple(infos)) + + def matchMaking(self, infos: tuple | list = ()) -> MatchmakingEvents: + return MatchmakingEvents(tuple(infos)) + + def game(self, infos: tuple | list = ()) -> GameEvents: + return GameEvents(tuple(infos)) \ No newline at end of file diff --git a/images.py b/images.py new file mode 100644 index 0000000..818d0f1 --- /dev/null +++ b/images.py @@ -0,0 +1,47 @@ +import os +import dotenv +import io +dotenv.load_dotenv() + +from deta import Deta +from PIL import Image, ImageDraw + +deta = Deta(os.getenv("DATAKEY")) +games = deta.Base("games") + +def placePixels(pixels: list | tuple = ()): + if type(pixels) == list: pixels = tuple(pixels) + + with open("assets/base.png", "rb") as file: + image_bytes = file.read() + image = Image.open(io.BytesIO(image_bytes)) + + blank = image + + draw = ImageDraw.Draw(image) + + width, height = image.size + slot = 40 + + for pixel in pixels: + clr = tuple([ int(_) for _ in pixel["color"] ]) + box = tuple([ int(_) for _ in pixel["place"] ]) + + if 1 <= box[0] <= 26 and 1 <= box[1] <= 26: + draw.rectangle((((box[0]) * slot, (box[1]) * slot), ((box[0]) * slot + slot, box[1] * slot + slot)), fill=clr) + + for x in range(0, width, slot): + draw.line([(x + 40, 40), (x + 40, height)], fill = "black", width = (int(x == 0) * 2) + 4) + + for y in range(0, height, slot): + draw.line([(40, y + 40), (width, y + 40)], fill = "black", width = (int(y == 0) * 2) + 4) + + image.save("lastmap.png") + +def final(serv: int): + current = games.get(str(serv))["pixels"] + + if current is None: + placePixels() + else: + placePixels(current) diff --git a/main.py b/main.py new file mode 100644 index 0000000..d2608e9 --- /dev/null +++ b/main.py @@ -0,0 +1,383 @@ +import dotenv +import os +import random + +from deta import Deta +import discord + +import botinfos +import embeds +import utils + +dotenv.load_dotenv() + +deta = Deta(os.getenv("DATAKEY")) + +bot = discord.Bot(description = botinfos.description) +team = bot.create_group(name = "team", description = "Commandes liées aux équipes") +pixel = bot.create_group(name = "map", description = "Commandes liées à la map") +matchmaking = bot.create_group(name = "game", description = "Commandes liées à la partie") + +embed = embeds.Embed(bot) + +baseTeam = utils.Team() + +global testMode +testMode = False + +@bot.event +async def on_ready(): + print("Ready !") + print("Connected as", bot.user) + +@matchmaking.command(name = "mode", description = "Changer le mode de jeu") +@discord.default_permissions(manage_events = True) +async def gamemode(ctx: discord.ApplicationContext, mode: int): + if 0 <= mode <= 2: + game = utils.Game(ctx.channel.id) + game.status = mode + game.save() + + await ctx.send_response(embed = embed.matchMaking(( mode, )).gameModeSet()) + else: + await ctx.send_response(embed = embed.matchMaking().invalidGameMode()) + +@matchmaking.command(name = "blacklist-set", description = "Gérer la blacklist") +@discord.default_permissions(manage_events = True) +async def manage_bl(ctx: discord.ApplicationContext, member: discord.Member, blacklisted: bool = True): + if member is None: + await ctx.send_response(embed = embed.matchMaking(( member.name, )).memberNotFound()) + else: + game = utils.Game(ctx.channel.id) + if blacklisted: + if member.id not in game.blacklist: game.blacklist.append(str(member.id)) + else: + if member.id in game.blacklist: game.blacklist.remove(str(member.id)) + + game.save() + await ctx.send_response(embed = embed.matchMaking(( member.name, blacklisted )).memberBlacklisted()) + +@matchmaking.command(name = "show-blacklist", description = "Montrer la blacklist") +@discord.default_permissions(manage_events = True) +async def show_bl(ctx: discord.ApplicationContext): + game: utils.Game = utils.Game(ctx.channel.id) + blacklist: list[str] = game.blacklist + + if len(blacklist) == 0: + description = """```\nIl n'y a pas de membre blacklisté actuellement.\n``` + """ + else: + description = f"""```\nIl y a {len(blacklist)} membre{'s' if len(blacklist) > 1 else ''} blacklisté{'s' if len(blacklist) > 1 else ''}:\n""" + + for id in blacklist: + member = await bot.fetch_user(int(id)) + name = member.name if type(member) == discord.User else "Inconnu" + + description += f"\n{id} ({name})" + + description += "\n```" + + bl_embed = discord.Embed(title = "Blacklist de la partie", description = description, color = discord.Colour.from_rgb(0, 100, 255)) + + await ctx.send_response(embed = bl_embed) + +@matchmaking.command(name = "leaderboard") +async def leaderboard(ctx: discord.ApplicationContext, maximum: int | None = 5): + game: utils.Game = utils.Game(ctx.channel.id) + + teams = game.teams + members: list[utils.User] = [] + + if game.status != 1: + if game.status == 0: + await ctx.send_response(embed = embed.matchMaking().gameNotStarted()) + else: + await ctx.send_response(embed = embed.matchMaking().gameInTrainingMode()) + return + + for team in teams: + members.extend(team.members) + + if maximum == 0 or maximum > len(members): maximum = len(members) + + title = f"Top {maximum} de la partie" + if len(members) == 0: + description = "Aucun pixel n'a été placé." + else: + members.sort(key = lambda member : -member.pixels) + description = ":warning: Le nombre de pixels inclut également les pixels volés ou placés plusieurs fois, et la fiabilité du classement peut donc être compromise.\n" + + slot = 0 + while slot < maximum: + member = await bot.fetch_user(int(members[slot].id)) + description += f"""\n**{':first_place:' if slot == 0 else ':second_place:' if slot == 1 else ':third_place:' if slot == 2 else ':medal:'} | <@{member.id}> - {members[slot].pixels} pixel{'s' if members[slot].pixels > 1 else ''}**""" + slot += 1 + + await ctx.send_response(embed = discord.Embed(title = title, description = description, color = discord.Colour.from_rgb(50, 100, 255))) + +@team.command(name = "create", description = "Créer une équipe") +async def create(ctx: discord.ApplicationContext, name: str, color: str) -> None: + color: list | tuple = color.split(",") + color = [int(clr) for clr in color] + color = tuple(color) + + game = utils.Game(ctx.channel.id) + teams = game.teams + + if str(ctx.author.id) in game.blacklist: return + + if game.status != 1: + if game.status == 0: + await ctx.send_response(embed = embed.matchMaking().gameNotStarted()) + else: + await ctx.send_response(embed = embed.matchMaking().gameInTrainingMode()) + return + + teamNames = [team.name for team in teams] + teamColors = [team.color for team in teams] + + user = utils.User(ctx.author.id, 0, True) + + for team in teams: + for member in team.members: + if member.id == user.id: + await ctx.send_response(embed = embed.teams(( team.name, )).alreadyInTeam()) + return + + if len(color) != 3 or not utils.RGB(color[0], color[1], color[2]).is_valid(): + await ctx.send_response(embed = embed.teams(( color, )).colorInvalid()) + elif name in teamNames or color in teamColors: + if color in teamColors: + await ctx.send_response(embed = embed.teams(( color, )).colorAlreadyTaken()) + else: + await ctx.send_response(embed = embed.teams(( team.name, )).alreadyExisting()) + else: + newTeam: utils.Team = utils.Team(name, [ user ], 0, color, [ str(user.id) ]) + + teams.append(newTeam) + game.teams = teams + game.save() + await ctx.send_response(embed = embed.teams(( name, color )).teamCreated()) + +@team.command(name = "leave", description = "Quitter ou supprimer une équipe") +async def leave(ctx: discord.ApplicationContext): + game = utils.Game(ctx.channel.id) + teams: list[utils.Team] = game.teams + + if str(ctx.author.id) in game.blacklist: return + + user: utils.User = utils.User(ctx.author.id) + + if game.status != 1: + if game.status == 0: + await ctx.send_response(embed = embed.matchMaking().gameNotStarted()) + else: + await ctx.send_response(embed = embed.matchMaking().gameInTrainingMode()) + return + + if len(teams) == 0: + await ctx.send_response(embed = embed.matchMaking().noTeam()) + return + + for team in teams: + broke = False + if team.pixels is None: team.pixels = 0 + + for member in team.members: + if member.id == user.id: + if member.is_admin(): + teams.remove(team) + await ctx.send_response(embed = embed.teams(( team.name, team.color )).teamDeleted()) + else: + team.members.remove(member) + await ctx.send_response(embed = embed.teams(( team.name, team.color )).teamLeft()) + + broke = True + break + if broke: break + else: + await ctx.send_response(embed.teams(( team.name, )).notInvited()) + return + + game.teams = teams + game.save() + +@team.command(name = "invite", description = "Inviter un joueur dans son équipe") +async def invite(ctx: discord.ApplicationContext, member: discord.Member): + game = utils.Game(ctx.channel.id) + teams: list[utils.Team] = game.teams + + if str(ctx.author.id) in game.blacklist: return + + if game.status != 1: + if game.status == 0: + await ctx.send_response(embed = embed.matchMaking().gameNotStarted()) + else: + await ctx.send_response(embed = embed.matchMaking().gameInTrainingMode()) + return + + if len(teams) == 0: + await ctx.send_response(embed = embed.matchMaking().noTeam()) + return + + user = utils.User(ctx.author.id, isAdmin = True) + + currentTeam: utils.Team | None = None + teamIndex: int | None = None + + broke = False + for team in teams: + for teamMember in team.members: + if teamMember.id == user.id and teamMember.is_admin(): + currentTeam = team + teamIndex = teams.index(team) + + broke = True + break + if broke: break + else: + await ctx.send_response(embed = embed.teams().notInAnyTeam()) + return + + currentTeam.invite(member.id) + + teams[teamIndex] = currentTeam + game.teams = teams + game.save() + + await ctx.send_response(embed = embed.teams(( team.name, member.name, team.color )).memberInvited()) + +@team.command(name = "join", description = "Rejoindre une équipe") +async def join(ctx: discord.ApplicationContext, name: str): + game = utils.Game(str(ctx.channel.id)) + teams: list[utils.Team] = game.teams + + if str(ctx.author.id) in game.blacklist: return + + if game.status != 1: + if game.status == 0: + await ctx.send_response(embed = embed.matchMaking().gameNotStarted()) + else: + await ctx.send_response(embed = embed.matchMaking().gameInTrainingMode()) + return + + if len(teams) == 0: + await ctx.send_response(embed = embed.matchMaking().noTeam()) + return + + user = utils.User(ctx.author.id) + currentTeam: utils.Team | None = None + teamIndex: int | None = None + + for team in teams: + if team.name == name: + currentTeam = team + teamIndex = teams.index(team) + break + + for member in team.members: + if member.id == user.id: + await ctx.send_response(embed = embed.teams(( team.name, )).alreadyInTeam()) + return + else: + await ctx.send_response(embed = embed.teams(( name, )).notExisting()) + return + + if type(currentTeam.invites) != list or str(user.id) not in currentTeam.invites: + await ctx.send_response(embed = embed.teams(( currentTeam.name, )).notInvited()) + return + + if currentTeam.members is None: + user.isAdmin = True + currentTeam.members = [] + + currentTeam.add_member(user) + currentTeam.invites.remove(str(user.id)) + + teams[teamIndex] = currentTeam + game.teams = teams + game.save() + + if currentTeam.pixels is None: currentTeam.pixels = [] + await ctx.send_response(embed = embed.teams(( currentTeam.name, currentTeam.color )).teamJoined()) + +@pixel.command(name = "place", description = "Placer un pixel") +async def place(ctx: discord.ApplicationContext, place: str, color: str | None = None): + game = utils.Game(ctx.channel.id) + teams: list[utils.Team] = game.teams + + if str(ctx.author.id) in game.blacklist: return + + if game.status != 1: + if game.status == 0: + await ctx.send_response(embed = embed.matchMaking().gameNotStarted()) + return + else: + chanMembers = ctx.channel.members + currentTeam = baseTeam + + for member in chanMembers: + currentTeam.add_member(utils.User(member.id)) + + if len(currentTeam.members) == 0: + currentTeam.members.append(utils.User(ctx.author.id)) + + currentTeam.invites = [] + + teams.clear() + game.save() + teams.append(currentTeam) + + if color is None: + color = "0, 0" + + place: list[str] = place.split("-") + color: list[str] = [ clr.replace(" ", "") for clr in color.split(",") ] + color: list[int] = [ int(clr) for clr in color if clr.isnumeric() ] + + for team in teams: + member_found = False + + for member in team.members: + if member.id == ctx.author.id: + member.add_pixel() + member_index = team.members.index(member) + team.members[member_index] = member + + currentTeam = team + team_index = teams.index(team) + + if len(color) != 3: color = team.color + + member_found = True + break + + if member_found: + break + else: + await ctx.send_response(embed = embed.teams().notInAnyTeam()) + return + + if type(color) != utils.RGB: + color: utils.RGB = utils.RGB(color[0], color[1], color[2]) + + if not color.is_valid(): + await ctx.send_response(embed = embed.game().invalidPixel()) + await ctx.send(embed = embed.game().invalidColor()) + return + + px = utils.Pixel(color, place) + if not px.is_valid(): + await ctx.send_response(embed = embed.game().invalidPixel()) + return + + currentTeam.add_pixel() + game.add_pixel(px) + game.teams[team_index] = currentTeam + game.save() + + message = embed.game(( ctx.author.name, px.color, px.position, ctx.channel.id )).placedPixel() + + if not testMode: await ctx.send_response(embed = message[0], file = message[1]) + +bot.run(os.getenv("TOKEN")) \ No newline at end of file diff --git a/requirments.txt b/requirments.txt new file mode 100644 index 0000000000000000000000000000000000000000..c0778c08ff078d30b5e7fd1cddbce6760f51fe27 GIT binary patch literal 450 zcmYL_-Acni5QWdR;G;xrEJZJT2VbEyQ5TYKX;P&=yzO^pVr5y#=KRiFezz*B`qa!h z=#}%N2R(B)y4Rf&pJ07x&ua+I3f#Qa!kKgi-KoK)XjG5qiEsO@;XMXF{hV~v6j-~s zm|=8BlWm|qtOn1@YmD5YAAFCYbGC1)I{wdaoaScj4S9!OL${}SAvHUhmA#x=)WvLn z)32k;$OHp?qlIRv+=RE)R=$A@oT~37-ILlqn;qCogVs}Y!EiSx=jM#h%v{NDU{qc` U-(R;`?3Z5W*v$X_UqD)20m^|w$p8QV literal 0 HcmV?d00001 diff --git a/utils.py b/utils.py new file mode 100644 index 0000000..b00b3a0 --- /dev/null +++ b/utils.py @@ -0,0 +1,283 @@ +import discord +import dotenv +import logging +import os + +from deta import Deta + +dotenv.load_dotenv() + +deta = Deta(os.getenv("DATAKEY")) +games = deta.Base("games") + +bot = discord.Bot() + +class RGB: + def __init__(self, red: int = 255, green: int = 180, blue: int = 75): + self.red = red + self.green = green + self.blue = blue + + def is_valid(self) -> bool: + color = (self.red, self.green, self.blue) + color_set = range(256) + + valid = True + for level in color: + if type(level) not in (float, int): + valid = False + break + + if not level in color_set: + valid = False + break + + return valid + +class Pixel: + def __init__(self, color: RGB = RGB(), position: tuple | list = ("M", "13")): + self.color = color + self.position = [ str(ord(position[0]) - 64), position[1] ] + + self.update_from_dict(self.to_dict()) + + def is_valid(self) -> bool: + if type(self.color) == RGB: + valid = self.color.is_valid() + else: + valid = RGB(self.color[0], self.color[1], self.color[2]).is_valid() + + + for position in self.position: + for digit in position: + if not digit.isdigit(): + valid = False + + break + else: + if not 1 <= int(position) <= 26: + valid = False + + return valid + + def to_dict(self) -> dict[str | int]: + color = [self.color.red, self.color.green, self.color.blue] + return {"place":self.position, "color": color} + + def update_from_dict(self, data: dict): + if "color" in data.keys(): self.color = RGB(data["color"][0], data["color"][1], data["color"][2]) + if "place" in data.keys(): self.position = data["place"] + + if not self.is_valid(): self = Pixel() + + +class User: + def __init__(self, id: int, pixels: int = 0, isAdmin: bool = False): + self.id = id + self.pixels = pixels + self.isAdmin = isAdmin + user = bot.get_user(id) + + self.username = user.name if type(user) in [discord.User, discord.Member] else "Unknown user" + + def add_pixel(self, count: int = 1) -> None: + self.pixels += count + + def change_status(self, switch: bool = None) -> None: + self.isAdmin = bool(1 - int(self.isAdmin)) if switch is None else switch + + def is_admin(self) -> bool: + return self.isAdmin + + def to_dict(self) -> dict[str | int]: + return {"id": str(self.id), "username": self.username, "isAdmin": self.isAdmin, "pixels": self.pixels} + + def update_from_dict(self, data: dict) -> None: + if "id" in data.keys(): self.id = int(data["id"]) + if "username" in data.keys(): self.username = data["username"] + if "pixels" in data.keys(): self.pixels = data["pixels"] + if "isAdmin" in data.keys(): self.isAdmin = data["isAdmin"] + +class Team: + def __init__(self, name: str = "New Team", members: list[User] = [], pixels: int = 0, color: RGB = RGB(), invites: list = []): + self.name = name + self.members = members + self.pixels = pixels + self.color = color + self.invites = invites + + self.update_from_dict(self.to_dict()) + + def add_member(self, member: User) -> None: + self.members.append(member) + + def add_pixel(self, count: int = 1) -> None: + self.pixels += count + + def invite(self, id: int) -> None: + self.invites.append(id) + + def set_color(self, color: RGB) -> None: + if color.is_valid(): + self.color = color + else: + logging.exception(f"RGB color {(color.red, color.green, color.blue)} is not valid.") + + def to_dict(self) -> dict[str | list]: + member_dicts = [] + for member in self.members: + if type(member) == dict: + member_dicts.append(member) + elif type(member) == User: + member_dicts.append(member.to_dict()) + + invites_str = [] + for id in self.invites: + if type(id) == str: + invites_str.append(id) + elif type(id) == int: + invites_str.append(str(id)) + + self.members = member_dicts + self.invites = invites_str + + if type(self.color) == dict: + self.color = [self.color["red"], self.color["green"], self.color["blue"]] + + if type(self.color) == RGB: + self.color = [self.color.red, self.color.green, self.color.blue] + + return {"name": self.name, "pixels": self.pixels, "color": self.color, "members": self.members, "invites": self.invites} + + def update_from_dict(self, data: dict) -> None: + if "name" in data.keys(): self.name = data["name"] + if "pixels" in data.keys(): self.pixels = data["pixels"] + if "members" in data.keys(): self.members = data["members"] + if "color" in data.keys(): self.color = data["color"] + if "invites" in data.keys(): self.invites = data["invites"] if data["invites"] is not None else [] + + + classified_members = [] + for user in self.members: + if type(user) == dict: + currentUser = User(user["id"]) + currentUser.update_from_dict(user) + + classified_members.append(currentUser) + elif not type(user) == User: + logging.error(f"User {user} is neither {type(User)} nor {type({})}.") + + int_invites = [] + for user in self.invites: + if type(user) == str: + int_invites.append(user) + + self.invites = int_invites + self.members = classified_members + + if type(self.color) != RGB: + self.color = RGB(self.color[0], self.color[1], self.color[2]) + +class Game: + def __init__(self, id: int): + self.id:int = id + self.pixels: list[Pixel] = [] + self.teams: list[Team] = [] + self.status = 0 + self.blacklist = [] + + # 0 = Paused + # 1 = Competition + # 2 = Training + + game = games.get(str(id)) + if game is None: + games.put(key = str(id), data = self.to_dict()) + else: + self.teams = game["teams"] + self.pixels = game["pixels"] + self.status = game["gameStatus"] + self.blacklist = game["blacklist"] + + self.update_from_dict(self.to_dict()) + + def add_team(self, team: Team) -> None: + self.teams.append(team.to_dict()) + self.update_from_dict(self.to_dict()) + + def remove_team(self, team: Team) -> None: + if team.to_dict() in self.teams: + self.teams.remove(team.to_dict()) + self.update_from_dict(self.to_dict()) + + def add_pixel(self, pixel: Pixel) -> None: + if pixel.is_valid(): self.pixels.append(pixel) + self.update_from_dict(self.to_dict()) + + def remove_pixel(self, pixel: Pixel) -> None: + if pixel.to_dict() in self.pixels: + self.pixels.remove(pixel.to_dict()) + self.update_from_dict(self.to_dict()) + + def to_dict(self) -> dict[str | list]: + team_dicts = [] + pixel_dicts = [] + + for team in self.teams: + if type(team) == dict: + team_dicts.append(team) + elif type(team) == Team: + team_dicts.append(team.to_dict()) + + for pixel in self.pixels: + if type(pixel) == dict: + pixel_dicts.append(pixel) + elif type(pixel) == Pixel: + pixel_dicts.append(pixel.to_dict()) + + str_bl = [] + for user in self.blacklist: + str_bl.append(str(user)) + + return {"id": str(self.id), "pixels": pixel_dicts, "teams": team_dicts, "gameStatus": self.status, "blacklist": str_bl} + + def update_from_dict(self, data: dict): + if "pixels" in data.keys(): self.pixels = data["pixels"] + if "teams" in data.keys(): self.teams = data["teams"] + if "gameStatus" in data.keys(): self.status = data["gameStatus"] + if "blacklist" in data.keys(): self.blacklist = data["blacklist"] + + classified_teams = [] + for team in self.teams: + if type(team) == dict: + currentTeam = Team() + currentTeam.update_from_dict(team) + + classified_teams.append(currentTeam) + elif not type(team) == Team: + logging.error(f"Team {team} is neither {type(Team)} nor {type({})}.") + break + + classified_pixels = [] + for pixel in self.pixels: + if type(pixel) == dict: + px = Pixel() + px.update_from_dict(pixel) + + classified_pixels.append(px) + elif not type(pixel) == Pixel: + logging.error(f"Pixel {pixel} is neither {type(Pixel)} nor {type({})}.") + break + + int_blacklist = [] + for id in self.blacklist: + if type(id) == str: + int_blacklist.append(int(id)) + + + self.teams = classified_teams + self.pixels = classified_pixels + self.blacklist = int_blacklist + + def save(self) -> None: + games.update(key = str(self.id), updates = self.to_dict()) \ No newline at end of file