From d0c438ebdc1b46b3a2ade1675c8109ecbe62bd76 Mon Sep 17 00:00:00 2001 From: bitheaven Date: Sat, 4 Nov 2023 02:27:00 +0500 Subject: [PATCH] First push --- .gitea/workflows/build.yml | 41 ++ .gitignore | 118 +++ LICENSE | 692 ++++++++++++++++++ build.gradle | 122 +++ gradle.properties | 31 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 62076 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 245 +++++++ gradlew.bat | 92 +++ settings.gradle | 9 + .../createastrafabric/CreateAstraFabric.java | 36 + .../mixin/DivingHelmetItemMixin.java | 22 + .../mixin/EntityOxygenSystemMixin.java | 25 + .../mixin/MinecraftMixin.java | 20 + .../mixin/RemainingAirOverlayMixin.java | 24 + .../assets/createastrafabric/icon.png | Bin 0 -> 60303 bytes .../resources/createastrafabric.mixins.json | 17 + src/main/resources/fabric.mod.json | 31 + 18 files changed, 1531 insertions(+) create mode 100644 .gitea/workflows/build.yml create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 src/main/java/ru/bitheaven/createastrafabric/CreateAstraFabric.java create mode 100644 src/main/java/ru/bitheaven/createastrafabric/mixin/DivingHelmetItemMixin.java create mode 100644 src/main/java/ru/bitheaven/createastrafabric/mixin/EntityOxygenSystemMixin.java create mode 100644 src/main/java/ru/bitheaven/createastrafabric/mixin/MinecraftMixin.java create mode 100644 src/main/java/ru/bitheaven/createastrafabric/mixin/RemainingAirOverlayMixin.java create mode 100644 src/main/resources/assets/createastrafabric/icon.png create mode 100644 src/main/resources/createastrafabric.mixins.json create mode 100644 src/main/resources/fabric.mod.json diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..94975bb --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,41 @@ +name: build +on: + pull_request: {} + push: {} + workflow_dispatch: {} + +jobs: + build: + strategy: + matrix: + java: [ 17 ] + runs-on: ubuntu-latest + steps: + - name: checkout repository + uses: https://git.bitheaven.ru/actions/checkout@v2 + + - name: setup jdk ${{ matrix.java }} + uses: https://git.bitheaven.ru/actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + + - uses: https://git.bitheaven.ru/actions/cache@v2 + with: + path: | + ~/.gradle/caches + ~/.gradle/loom-cache + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/gradle-wrapper.properties') }} + restore-keys: ${{ runner.os }}-gradle + + - name: make gradle wrapper executable + run: chmod +x ./gradlew + + - name: build + run: ./gradlew build + + - name: capture build artifacts + uses: https://git.bitheaven.ru/actions/upload-artifact@v2 + with: + name: Artifacts + path: build/libs/ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c37caf --- /dev/null +++ b/.gitignore @@ -0,0 +1,118 @@ +# User-specific stuff +.idea/ + +*.iml +*.ipr +*.iws + +# IntelliJ +out/ +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Cache of project +.gradletasknamecache + +**/build/ + +# Common working directory +run/ + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..765fe3e --- /dev/null +++ b/LICENSE @@ -0,0 +1,692 @@ +Copyright (c) 2023 BitHeaven + +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 + + + + 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. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + 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: + + {project} Copyright (C) {year} {fullname} + 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/build.gradle b/build.gradle new file mode 100644 index 0000000..1ec03ad --- /dev/null +++ b/build.gradle @@ -0,0 +1,122 @@ +plugins { + id 'fabric-loom' version '1.2-SNAPSHOT' + id "io.github.p03w.machete" version "1.+" // automatic jar compressing on build + id 'maven-publish' +} + +sourceCompatibility = JavaVersion.VERSION_17 +targetCompatibility = JavaVersion.VERSION_17 + +archivesBaseName = project.archives_base_name +group = project.maven_group + +String buildNumber = 2 +version = "${mod_version}+${minecraft_version}" + (buildNumber != null ? "-${buildNumber}" : "") + +repositories { + // Add repositories to retrieve artifacts from in here. + // You should only use this when depending on other mods because + // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. + // See https://docs.gradle.org/current/userguide/declaring_repositories.html + // for more information about repositories. + maven { url = "https://maven.shedaniel.me/" } // Cloth Config, REI + maven { url = "https://dvs1.progwml6.com/files/maven/" } // JEI + maven { url = "https://maven.parchmentmc.org" } // Parchment mappings + maven { url = "https://maven.quiltmc.org/repository/release" } // Quilt Mappings + maven { url = "https://api.modrinth.com/maven" } // LazyDFU + maven { url = "https://maven.terraformersmc.com/releases/" } // Mod Menu + maven { url = "https://mvn.devos.one/snapshots/" } // Create, Porting Lib, Forge Tags, Milk Lib, Registrate + maven { url = "https://cursemaven.com" } // Forge Config API Port + maven { url = "https://maven.jamieswhiteshirt.com/libs-release" } // Reach Entity Attributes + maven { url = "https://jitpack.io/" } // Mixin Extras, Fabric ASM + maven { url = "https://maven.tterrag.com/" } // Flywheel + + maven { + url 'https://www.cursemaven.com' + content { + includeGroup "curse.maven" + } + } +} + +dependencies { + // To change the versions see the gradle.properties file + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings(loom.layered { + it.mappings("org.quiltmc:quilt-mappings:${minecraft_version}+build.${qm_version}:intermediary-v2") + it.parchment("org.parchmentmc.data:parchment-${minecraft_version}:${parchment_version}@zip") + it.officialMojangMappings { nameSyntheticMembers = false } + }) + modImplementation("net.fabricmc:fabric-loader:${fabric_loader_version}") + + // Fabric API. This is technically optional, but you probably want it anyway. + modImplementation("net.fabricmc.fabric-api:fabric-api:${fabric_api_version}") + + // Create - dependencies are added transitively + modImplementation("com.simibubi.create:create-fabric-${minecraft_version}:${create_version}") + + // Ad Astra + modImplementation("curse.maven:ad-astra-635042:4774341") + + // Development QOL + modLocalRuntime("maven.modrinth:lazydfu:${lazydfu_version}") + modLocalRuntime("com.terraformersmc:modmenu:${modmenu_version}") + + // Recipe Viewers - Create Fabric supports JEI, REI, and EMI. + // See root gradle.properties to choose which to use at runtime. + switch (recipe_viewer.toLowerCase(Locale.ROOT)) { + case "jei": modLocalRuntime("mezz.jei:jei-${minecraft_version}-fabric:${jei_version}"); break + case "rei": modLocalRuntime("me.shedaniel:RoughlyEnoughItems-fabric:${rei_version}"); break + case "emi": modLocalRuntime("dev.emi:emi:${emi_version}"); break + case "disabled": break + default: println("Unknown recipe viewer specified: ${recipe_viewer}. Must be JEI, REI, EMI, or disabled.") + } +} + +processResources { + // require dependencies to be the version compiled against or newer + Map properties = new HashMap<>() + properties.put("version", version) + properties.put("fabric_loader_version", fabric_loader_version) + properties.put("fabric_api_version", fabric_api_version) + properties.put("create_version", create_version) + properties.put("minecraft_version", minecraft_version) + + properties.forEach((k, v) -> inputs.property(k, v)) + + filesMatching("fabric.mod.json") { + expand properties + } +} + +tasks.withType(JavaCompile).configureEach { + it.options.encoding = "UTF-8" + it.options.release = Integer.parseInt(sourceCompatibility) +} + +java { + withSourcesJar() +} + +jar { + from("LICENSE") { + rename { "${it}_${project.archivesBaseName}"} + } +} + +// configure the maven publication +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + } + } + + // See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing. + repositories { + // Add repositories to publish to here. + // Notice: This block does NOT have the same function as the block in the top level. + // The repositories here will be used for publishing your artifact, not for + // retrieving dependencies. + } +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..f975d3a --- /dev/null +++ b/gradle.properties @@ -0,0 +1,31 @@ +# Done to increase the memory available to gradle. +org.gradle.jvmargs=-Xmx1G + +# Fabric Properties + # check these on https://modmuss50.me/fabric.html + minecraft_version=1.20.1 + yarn_mappings=1.20.1+build.10 + fabric_loader_version=0.14.24 + # check this on https://modmuss50.me/fabric.html + fabric_api_version=0.90.0+1.20.1 + +# Mappings + # https://lambdaurora.dev/tools/import_quilt.html + qm_version = 23 + # https://parchmentmc.org/docs/getting-started + parchment_version = 2023.06.26 + +# Mod Properties + mod_version = 1.0 + maven_group = ru.bitheaven + archives_base_name = createastrafabric + +# Dependencies + # https://modrinth.com/mod/create-fabric/versions + create_version = 0.5.1-d-build.1161+mc1.20.1 + # set to disabled to have none of them. + recipe_viewer = disabled + # Mod Menu - https://modrinth.com/mod/modmenu/versions + modmenu_version = 4.1.2 + # LazyDFU - https://modrinth.com/mod/lazydfu/versions + lazydfu_version = 0.1.3 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..c1962a79e29d3e0ab67b14947c167a862655af9b GIT binary patch literal 62076 zcmb5VV{~QRw)Y#`wrv{~+qP{x72B%VwzFc}c2cp;N~)5ZbDrJayPv(!dGEd-##*zr z)#n-$y^sH|_dchh3@8{H5D*j;5D<{i*8l5IFJ|DjL!e)upfGNX(kojugZ3I`oH1PvW`wFW_ske0j@lB9bX zO;2)`y+|!@X(fZ1<2n!Qx*)_^Ai@Cv-dF&(vnudG?0CsddG_&Wtae(n|K59ew)6St z#dj7_(Cfwzh$H$5M!$UDd8=4>IQsD3xV=lXUq($;(h*$0^yd+b{qq63f0r_de#!o_ zXDngc>zy`uor)4A^2M#U*DC~i+dc<)Tb1Tv&~Ev@oM)5iJ4Sn#8iRw16XXuV50BS7 zdBL5Mefch(&^{luE{*5qtCZk$oFr3RH=H!c3wGR=HJ(yKc_re_X9pD` zJ;uxPzUfVpgU>DSq?J;I@a+10l0ONXPcDkiYcihREt5~T5Gb}sT0+6Q;AWHl`S5dV>lv%-p9l#xNNy7ZCr%cyqHY%TZ8Q4 zbp&#ov1*$#grNG#1vgfFOLJCaNG@K|2!W&HSh@3@Y%T?3YI75bJp!VP*$*!< z;(ffNS_;@RJ`=c7yX04!u3JP*<8jeqLHVJu#WV&v6wA!OYJS4h<_}^QI&97-;=ojW zQ-1t)7wnxG*5I%U4)9$wlv5Fr;cIizft@&N+32O%B{R1POm$oap@&f| zh+5J{>U6ftv|vAeKGc|zC=kO(+l7_cLpV}-D#oUltScw})N>~JOZLU_0{Ka2e1evz z{^a*ZrLr+JUj;)K&u2CoCAXLC2=fVScI(m_p~0FmF>>&3DHziouln?;sxW`NB}cSX z8?IsJB)Z=aYRz!X=yJn$kyOWK%rCYf-YarNqKzmWu$ZvkP12b4qH zhS9Q>j<}(*frr?z<%9hl*i^#@*O2q(Z^CN)c2c z>1B~D;@YpG?G!Yk+*yn4vM4sO-_!&m6+`k|3zd;8DJnxsBYtI;W3We+FN@|tQ5EW= z!VU>jtim0Mw#iaT8t_<+qKIEB-WwE04lBd%Letbml9N!?SLrEG$nmn7&W(W`VB@5S zaY=sEw2}i@F_1P4OtEw?xj4@D6>_e=m=797#hg}f*l^`AB|Y0# z9=)o|%TZFCY$SzgSjS|8AI-%J4x}J)!IMxY3_KYze`_I=c1nmrk@E8c9?MVRu)7+Ue79|)rBX7tVB7U|w4*h(;Gi3D9le49B38`wuv zp7{4X^p+K4*$@gU(Tq3K1a#3SmYhvI42)GzG4f|u zwQFT1n_=n|jpi=70-yE9LA+d*T8u z`=VmmXJ_f6WmZveZPct$Cgu^~gFiyL>Lnpj*6ee>*0pz=t$IJ}+rE zsf@>jlcG%Wx;Cp5x)YSVvB1$yyY1l&o zvwX=D7k)Dn;ciX?Z)Pn8$flC8#m`nB&(8?RSdBvr?>T9?E$U3uIX7T?$v4dWCa46 z+&`ot8ZTEgp7G+c52oHJ8nw5}a^dwb_l%MOh(ebVj9>_koQP^$2B~eUfSbw9RY$_< z&DDWf2LW;b0ZDOaZ&2^i^g+5uTd;GwO(-bbo|P^;CNL-%?9mRmxEw~5&z=X^Rvbo^WJW=n_%*7974RY}JhFv46> zd}`2|qkd;89l}R;i~9T)V-Q%K)O=yfVKNM4Gbacc7AOd>#^&W&)Xx!Uy5!BHnp9kh z`a(7MO6+Ren#>R^D0K)1sE{Bv>}s6Rb9MT14u!(NpZOe-?4V=>qZ>}uS)!y~;jEUK z&!U7Fj&{WdgU#L0%bM}SYXRtM5z!6M+kgaMKt%3FkjWYh=#QUpt$XX1!*XkpSq-pl zhMe{muh#knk{9_V3%qdDcWDv}v)m4t9 zQhv{;} zc{}#V^N3H>9mFM8`i`0p+fN@GqX+kl|M94$BK3J-X`Hyj8r!#x6Vt(PXjn?N)qedP z=o1T^#?1^a{;bZ&x`U{f?}TMo8ToN zkHj5v|}r}wDEi7I@)Gj+S1aE-GdnLN+$hw!=DzglMaj#{qjXi_dwpr|HL(gcCXwGLEmi|{4&4#OZ4ChceA zKVd4K!D>_N=_X;{poT~4Q+!Le+ZV>=H7v1*l%w`|`Dx8{)McN@NDlQyln&N3@bFpV z_1w~O4EH3fF@IzJ9kDk@7@QctFq8FbkbaH7K$iX=bV~o#gfh?2JD6lZf(XP>~DACF)fGFt)X%-h1yY~MJU{nA5 ze2zxWMs{YdX3q5XU*9hOH0!_S24DOBA5usB+Ws$6{|AMe*joJ?RxfV}*7AKN9V*~J zK+OMcE@bTD>TG1*yc?*qGqjBN8mgg@h1cJLDv)0!WRPIkC` zZrWXrceVw;fB%3`6kq=a!pq|hFIsQ%ZSlo~)D z|64!aCnw-?>}AG|*iOl44KVf8@|joXi&|)1rB;EQWgm+iHfVbgllP$f!$Wf42%NO5b(j9Bw6L z;0dpUUK$5GX4QbMlTmLM_jJt!ur`_0~$b#BB7FL*%XFf<b__1o)Ao3rlobbN8-(T!1d-bR8D3S0@d zLI!*GMb5s~Q<&sjd}lBb8Nr0>PqE6_!3!2d(KAWFxa{hm`@u|a(%#i(#f8{BP2wbs zt+N_slWF4IF_O|{w`c~)Xvh&R{Au~CFmW#0+}MBd2~X}t9lz6*E7uAD`@EBDe$>7W zzPUkJx<`f$0VA$=>R57^(K^h86>09?>_@M(R4q($!Ck6GG@pnu-x*exAx1jOv|>KH zjNfG5pwm`E-=ydcb+3BJwuU;V&OS=6yM^4Jq{%AVqnTTLwV`AorIDD}T&jWr8pB&j28fVtk_y*JRP^t@l*($UZ z6(B^-PBNZ+z!p?+e8@$&jCv^EWLb$WO=}Scr$6SM*&~B95El~;W_0(Bvoha|uQ1T< zO$%_oLAwf1bW*rKWmlD+@CP&$ObiDy=nh1b2ejz%LO9937N{LDe7gle4i!{}I$;&Y zkexJ9Ybr+lrCmKWg&}p=`2&Gf10orS?4$VrzWidT=*6{KzOGMo?KI0>GL0{iFWc;C z+LPq%VH5g}6V@-tg2m{C!-$fapJ9y}c$U}aUmS{9#0CM*8pC|sfer!)nG7Ji>mfRh z+~6CxNb>6eWKMHBz-w2{mLLwdA7dA-qfTu^A2yG1+9s5k zcF=le_UPYG&q!t5Zd_*E_P3Cf5T6821bO`daa`;DODm8Ih8k89=RN;-asHIigj`n=ux>*f!OC5#;X5i;Q z+V!GUy0|&Y_*8k_QRUA8$lHP;GJ3UUD08P|ALknng|YY13)}!!HW@0z$q+kCH%xet zlWf@BXQ=b=4}QO5eNnN~CzWBbHGUivG=`&eWK}beuV*;?zt=P#pM*eTuy3 zP}c#}AXJ0OIaqXji78l;YrP4sQe#^pOqwZUiiN6^0RCd#D271XCbEKpk`HI0IsN^s zES7YtU#7=8gTn#lkrc~6)R9u&SX6*Jk4GFX7){E)WE?pT8a-%6P+zS6o&A#ml{$WX zABFz#i7`DDlo{34)oo?bOa4Z_lNH>n;f0nbt$JfAl~;4QY@}NH!X|A$KgMmEsd^&Y zt;pi=>AID7ROQfr;MsMtClr5b0)xo|fwhc=qk33wQ|}$@?{}qXcmECh>#kUQ-If0$ zseb{Wf4VFGLNc*Rax#P8ko*=`MwaR-DQ8L8V8r=2N{Gaips2_^cS|oC$+yScRo*uF zUO|5=?Q?{p$inDpx*t#Xyo6=s?bbN}y>NNVxj9NZCdtwRI70jxvm3!5R7yiWjREEd zDUjrsZhS|P&|Ng5r+f^kA6BNN#|Se}_GF>P6sy^e8kBrgMv3#vk%m}9PCwUWJg-AD zFnZ=}lbi*mN-AOm zCs)r=*YQAA!`e#1N>aHF=bb*z*hXH#Wl$z^o}x##ZrUc=kh%OHWhp=7;?8%Xj||@V?1c ziWoaC$^&04;A|T)!Zd9sUzE&$ODyJaBpvqsw19Uiuq{i#VK1!htkdRWBnb z`{rat=nHArT%^R>u#CjjCkw-7%g53|&7z-;X+ewb?OLWiV|#nuc8mp*LuGSi3IP<<*Wyo9GKV7l0Noa4Jr0g3p_$ z*R9{qn=?IXC#WU>48-k5V2Oc_>P;4_)J@bo1|pf=%Rcbgk=5m)CJZ`caHBTm3%!Z9 z_?7LHr_BXbKKr=JD!%?KhwdYSdu8XxPoA{n8^%_lh5cjRHuCY9Zlpz8g+$f@bw@0V z+6DRMT9c|>1^3D|$Vzc(C?M~iZurGH2pXPT%F!JSaAMdO%!5o0uc&iqHx?ImcX6fI zCApkzc~OOnfzAd_+-DcMp&AOQxE_EsMqKM{%dRMI5`5CT&%mQO?-@F6tE*xL?aEGZ z8^wH@wRl`Izx4sDmU>}Ym{ybUm@F83qqZPD6nFm?t?(7>h*?`fw)L3t*l%*iw0Qu#?$5eq!Qc zpQvqgSxrd83NsdO@lL6#{%lsYXWen~d3p4fGBb7&5xqNYJ)yn84!e1PmPo7ChVd%4 zHUsV0Mh?VpzZD=A6%)Qrd~i7 z96*RPbid;BN{Wh?adeD_p8YU``kOrGkNox3D9~!K?w>#kFz!4lzOWR}puS(DmfjJD z`x0z|qB33*^0mZdM&6$|+T>fq>M%yoy(BEjuh9L0>{P&XJ3enGpoQRx`v6$txXt#c z0#N?b5%srj(4xmPvJxrlF3H%OMB!jvfy z;wx8RzU~lb?h_}@V=bh6p8PSb-dG|-T#A?`c&H2`_!u+uenIZe`6f~A7r)`9m8atC zt(b|6Eg#!Q*DfRU=Ix`#B_dK)nnJ_+>Q<1d7W)eynaVn`FNuN~%B;uO2}vXr5^zi2 z!ifIF5@Zlo0^h~8+ixFBGqtweFc`C~JkSq}&*a3C}L?b5Mh-bW=e)({F_g4O3 zb@SFTK3VD9QuFgFnK4Ve_pXc3{S$=+Z;;4+;*{H}Rc;845rP?DLK6G5Y-xdUKkA6E3Dz&5f{F^FjJQ(NSpZ8q-_!L3LL@H* zxbDF{gd^U3uD;)a)sJwAVi}7@%pRM&?5IaUH%+m{E)DlA_$IA1=&jr{KrhD5q&lTC zAa3c)A(K!{#nOvenH6XrR-y>*4M#DpTTOGQEO5Jr6kni9pDW`rvY*fs|ItV;CVITh z=`rxcH2nEJpkQ^(;1c^hfb8vGN;{{oR=qNyKtR1;J>CByul*+=`NydWnSWJR#I2lN zTvgnR|MBx*XFsfdA&;tr^dYaqRZp*2NwkAZE6kV@1f{76e56eUmGrZ>MDId)oqSWw z7d&r3qfazg+W2?bT}F)4jD6sWaw`_fXZGY&wnGm$FRPFL$HzVTH^MYBHWGCOk-89y zA+n+Q6EVSSCpgC~%uHfvyg@ufE^#u?JH?<73A}jj5iILz4Qqk5$+^U(SX(-qv5agK znUkfpke(KDn~dU0>gdKqjTkVk`0`9^0n_wzXO7R!0Thd@S;U`y)VVP&mOd-2 z(hT(|$=>4FY;CBY9#_lB$;|Wd$aOMT5O_3}DYXEHn&Jrc3`2JiB`b6X@EUOD zVl0S{ijm65@n^19T3l%>*;F(?3r3s?zY{thc4%AD30CeL_4{8x6&cN}zN3fE+x<9; zt2j1RRVy5j22-8U8a6$pyT+<`f+x2l$fd_{qEp_bfxfzu>ORJsXaJn4>U6oNJ#|~p z`*ZC&NPXl&=vq2{Ne79AkQncuxvbOG+28*2wU$R=GOmns3W@HE%^r)Fu%Utj=r9t` zd;SVOnA(=MXgnOzI2@3SGKHz8HN~Vpx&!Ea+Df~`*n@8O=0!b4m?7cE^K*~@fqv9q zF*uk#1@6Re_<^9eElgJD!nTA@K9C732tV~;B`hzZ321Ph=^BH?zXddiu{Du5*IPg} zqDM=QxjT!Rp|#Bkp$(mL)aar)f(dOAXUiw81pX0DC|Y4;>Vz>>DMshoips^8Frdv} zlTD=cKa48M>dR<>(YlLPOW%rokJZNF2gp8fwc8b2sN+i6&-pHr?$rj|uFgktK@jg~ zIFS(%=r|QJ=$kvm_~@n=ai1lA{7Z}i+zj&yzY+!t$iGUy|9jH#&oTNJ;JW-3n>DF+ z3aCOzqn|$X-Olu_p7brzn`uk1F*N4@=b=m;S_C?#hy{&NE#3HkATrg?enaVGT^$qIjvgc61y!T$9<1B@?_ibtDZ{G zeXInVr5?OD_nS_O|CK3|RzzMmu+8!#Zb8Ik;rkIAR%6?$pN@d<0dKD2c@k2quB%s( zQL^<_EM6ow8F6^wJN1QcPOm|ehA+dP(!>IX=Euz5qqIq}Y3;ibQtJnkDmZ8c8=Cf3 zu`mJ!Q6wI7EblC5RvP*@)j?}W=WxwCvF3*5Up_`3*a~z$`wHwCy)2risye=1mSp%p zu+tD6NAK3o@)4VBsM!@);qgsjgB$kkCZhaimHg&+k69~drbvRTacWKH;YCK(!rC?8 zP#cK5JPHSw;V;{Yji=55X~S+)%(8fuz}O>*F3)hR;STU`z6T1aM#Wd+FP(M5*@T1P z^06O;I20Sk!bxW<-O;E081KRdHZrtsGJflFRRFS zdi5w9OVDGSL3 zNrC7GVsGN=b;YH9jp8Z2$^!K@h=r-xV(aEH@#JicPy;A0k1>g1g^XeR`YV2HfmqXY zYbRwaxHvf}OlCAwHoVI&QBLr5R|THf?nAevV-=~V8;gCsX>jndvNOcFA+DI+zbh~# zZ7`qNk&w+_+Yp!}j;OYxIfx_{f0-ONc?mHCiCUak=>j>~>YR4#w# zuKz~UhT!L~GfW^CPqG8Lg)&Rc6y^{%3H7iLa%^l}cw_8UuG;8nn9)kbPGXS}p3!L_ zd#9~5CrH8xtUd?{d2y^PJg+z(xIfRU;`}^=OlehGN2=?}9yH$4Rag}*+AWotyxfCJ zHx=r7ZH>j2kV?%7WTtp+-HMa0)_*DBBmC{sd$)np&GEJ__kEd`xB5a2A z*J+yx>4o#ZxwA{;NjhU*1KT~=ZK~GAA;KZHDyBNTaWQ1+;tOFFthnD)DrCn`DjBZ% zk$N5B4^$`n^jNSOr=t(zi8TN4fpaccsb`zOPD~iY=UEK$0Y70bG{idLx@IL)7^(pL z{??Bnu=lDeguDrd%qW1)H)H`9otsOL-f4bSu};o9OXybo6J!Lek`a4ff>*O)BDT_g z<6@SrI|C9klY(>_PfA^qai7A_)VNE4c^ZjFcE$Isp>`e5fLc)rg@8Q_d^Uk24$2bn z9#}6kZ2ZxS9sI(RqT7?El2@B+($>eBQrNi_k#CDJ8D9}8$mmm z4oSKO^F$i+NG)-HE$O6s1--6EzJa?C{x=QgK&c=)b(Q9OVoAXYEEH20G|q$}Hue%~ zO3B^bF=t7t48sN zWh_zA`w~|){-!^g?6Mqf6ieV zFx~aPUOJGR=4{KsW7I?<=J2|lY`NTU=lt=%JE9H1vBpkcn=uq(q~=?iBt_-r(PLBM zP-0dxljJO>4Wq-;stY)CLB4q`-r*T$!K2o}?E-w_i>3_aEbA^MB7P5piwt1dI-6o!qWCy0 ztYy!x9arGTS?kabkkyv*yxvsPQ7Vx)twkS6z2T@kZ|kb8yjm+^$|sEBmvACeqbz)RmxkkDQX-A*K!YFziuhwb|ym>C$}U|J)4y z$(z#)GH%uV6{ec%Zy~AhK|+GtG8u@c884Nq%w`O^wv2#A(&xH@c5M`Vjk*SR_tJnq z0trB#aY)!EKW_}{#L3lph5ow=@|D5LzJYUFD6 z7XnUeo_V0DVSIKMFD_T0AqAO|#VFDc7c?c-Q%#u00F%!_TW1@JVnsfvm@_9HKWflBOUD~)RL``-!P;(bCON_4eVdduMO>?IrQ__*zE@7(OX zUtfH@AX*53&xJW*Pu9zcqxGiM>xol0I~QL5B%Toog3Jlenc^WbVgeBvV8C8AX^Vj& z^I}H})B=VboO%q1;aU5ACMh{yK4J;xlMc`jCnZR^!~LDs_MP&8;dd@4LDWw~*>#OT zeZHwdQWS!tt5MJQI~cw|Ka^b4c|qyd_ly(+Ql2m&AAw^ zQeSXDOOH!!mAgzAp0z)DD>6Xo``b6QwzUV@w%h}Yo>)a|xRi$jGuHQhJVA%>)PUvK zBQ!l0hq<3VZ*RnrDODP)>&iS^wf64C;MGqDvx>|p;35%6(u+IHoNbK z;Gb;TneFo*`zUKS6kwF*&b!U8e5m4YAo03a_e^!5BP42+r)LFhEy?_7U1IR<; z^0v|DhCYMSj<-;MtY%R@Fg;9Kky^pz_t2nJfKWfh5Eu@_l{^ph%1z{jkg5jQrkvD< z#vdK!nku*RrH~TdN~`wDs;d>XY1PH?O<4^U4lmA|wUW{Crrv#r%N>7k#{Gc44Fr|t z@UZP}Y-TrAmnEZ39A*@6;ccsR>)$A)S>$-Cj!=x$rz7IvjHIPM(TB+JFf{ehuIvY$ zsDAwREg*%|=>Hw$`us~RP&3{QJg%}RjJKS^mC_!U;E5u>`X`jW$}P`Mf}?7G7FX#{ zE(9u1SO;3q@ZhDL9O({-RD+SqqPX)`0l5IQu4q)49TUTkxR(czeT}4`WV~pV*KY&i zAl3~X%D2cPVD^B43*~&f%+Op)wl<&|D{;=SZwImydWL6@_RJjxP2g)s=dH)u9Npki zs~z9A+3fj0l?yu4N0^4aC5x)Osnm0qrhz@?nwG_`h(71P znbIewljU%T*cC=~NJy|)#hT+lx#^5MuDDnkaMb*Efw9eThXo|*WOQzJ*#3dmRWm@! zfuSc@#kY{Um^gBc^_Xdxnl!n&y&}R4yAbK&RMc+P^Ti;YIUh|C+K1|=Z^{nZ}}rxH*v{xR!i%qO~o zTr`WDE@k$M9o0r4YUFFeQO7xCu_Zgy)==;fCJ94M_rLAv&~NhfvcLWCoaGg2ao~3e zBG?Ms9B+efMkp}7BhmISGWmJsKI@a8b}4lLI48oWKY|8?zuuNc$lt5Npr+p7a#sWu zh!@2nnLBVJK!$S~>r2-pN||^w|fY`CT{TFnJy`B|e5;=+_v4l8O-fkN&UQbA4NKTyntd zqK{xEKh}U{NHoQUf!M=2(&w+eef77VtYr;xs%^cPfKLObyOV_9q<(%76-J%vR>w9!us-0c-~Y?_EVS%v!* z15s2s3eTs$Osz$JayyH|5nPAIPEX=U;r&p;K14G<1)bvn@?bM5kC{am|C5%hyxv}a z(DeSKI5ZfZ1*%dl8frIX2?);R^^~LuDOpNpk-2R8U1w92HmG1m&|j&J{EK=|p$;f9 z7Rs5|jr4r8k5El&qcuM+YRlKny%t+1CgqEWO>3;BSRZi(LA3U%Jm{@{y+A+w(gzA< z7dBq6a1sEWa4cD0W7=Ld9z0H7RI^Z7vl(bfA;72j?SWCo`#5mVC$l1Q2--%V)-uN* z9ha*s-AdfbDZ8R8*fpwjzx=WvOtmSzGFjC#X)hD%Caeo^OWjS(3h|d9_*U)l%{Ab8 zfv$yoP{OuUl@$(-sEVNt{*=qi5P=lpxWVuz2?I7Dc%BRc+NGNw+323^ z5BXGfS71oP^%apUo(Y#xkxE)y?>BFzEBZ}UBbr~R4$%b7h3iZu3S(|A;&HqBR{nK& z$;GApNnz=kNO^FL&nYcfpB7Qg;hGJPsCW44CbkG1@l9pn0`~oKy5S777uH)l{irK!ru|X+;4&0D;VE*Ii|<3P zUx#xUqvZT5kVQxsF#~MwKnv7;1pR^0;PW@$@T7I?s`_rD1EGUdSA5Q(C<>5SzE!vw z;{L&kKFM-MO>hy#-8z`sdVx})^(Dc-dw;k-h*9O2_YZw}|9^y-|8RQ`BWJUJL(Cer zP5Z@fNc>pTXABbTRY-B5*MphpZv6#i802giwV&SkFCR zGMETyUm(KJbh+&$8X*RB#+{surjr;8^REEt`2&Dubw3$mx>|~B5IKZJ`s_6fw zKAZx9&PwBqW1Oz0r0A4GtnZd7XTKViX2%kPfv+^X3|_}RrQ2e3l=KG_VyY`H?I5&CS+lAX5HbA%TD9u6&s#v!G> zzW9n4J%d5ye7x0y`*{KZvqyXUfMEE^ZIffzI=Hh|3J}^yx7eL=s+TPH(Q2GT-sJ~3 zI463C{(ag7-hS1ETtU;_&+49ABt5!A7CwLwe z=SoA8mYZIQeU;9txI=zcQVbuO%q@E)JI+6Q!3lMc=Gbj(ASg-{V27u>z2e8n;Nc*pf}AqKz1D>p9G#QA+7mqqrEjGfw+85Uyh!=tTFTv3|O z+)-kFe_8FF_EkTw!YzwK^Hi^_dV5x-Ob*UWmD-})qKj9@aE8g240nUh=g|j28^?v7 zHRTBo{0KGaWBbyX2+lx$wgXW{3aUab6Bhm1G1{jTC7ota*JM6t+qy)c5<@ zpc&(jVdTJf(q3xB=JotgF$X>cxh7k*(T`-V~AR+`%e?YOeALQ2Qud( zz35YizXt(aW3qndR}fTw1p()Ol4t!D1pitGNL95{SX4ywzh0SF;=!wf=?Q?_h6!f* zh7<+GFi)q|XBsvXZ^qVCY$LUa{5?!CgwY?EG;*)0ceFe&=A;!~o`ae}Z+6me#^sv- z1F6=WNd6>M(~ z+092z>?Clrcp)lYNQl9jN-JF6n&Y0mp7|I0dpPx+4*RRK+VQI~>en0Dc;Zfl+x z_e_b7s`t1_A`RP3$H}y7F9_na%D7EM+**G_Z0l_nwE+&d_kc35n$Fxkd4r=ltRZhh zr9zER8>j(EdV&Jgh(+i}ltESBK62m0nGH6tCBr90!4)-`HeBmz54p~QP#dsu%nb~W z7sS|(Iydi>C@6ZM(Us!jyIiszMkd)^u<1D+R@~O>HqZIW&kearPWmT>63%_t2B{_G zX{&a(gOYJx!Hq=!T$RZ&<8LDnxsmx9+TBL0gTk$|vz9O5GkK_Yx+55^R=2g!K}NJ3 zW?C;XQCHZl7H`K5^BF!Q5X2^Mj93&0l_O3Ea3!Ave|ixx+~bS@Iv18v2ctpSt4zO{ zp#7pj!AtDmti$T`e9{s^jf(ku&E|83JIJO5Qo9weT6g?@vX!{7)cNwymo1+u(YQ94 zopuz-L@|5=h8A!(g-MXgLJC0MA|CgQF8qlonnu#j z;uCeq9ny9QSD|p)9sp3ebgY3rk#y0DA(SHdh$DUm^?GI<>%e1?&}w(b zdip1;P2Z=1wM+$q=TgLP$}svd!vk+BZ@h<^4R=GS2+sri7Z*2f`9 z5_?i)xj?m#pSVchk-SR!2&uNhzEi+#5t1Z$o0PoLGz*pT64%+|Wa+rd5Z}60(j?X= z{NLjtgRb|W?CUADqOS@(*MA-l|E342NxRaxLTDqsOyfWWe%N(jjBh}G zm7WPel6jXijaTiNita+z(5GCO0NM=Melxud57PP^d_U## zbA;9iVi<@wr0DGB8=T9Ab#2K_#zi=$igyK48@;V|W`fg~7;+!q8)aCOo{HA@vpSy-4`^!ze6-~8|QE||hC{ICKllG9fbg_Y7v z$jn{00!ob3!@~-Z%!rSZ0JO#@>|3k10mLK0JRKP-Cc8UYFu>z93=Ab-r^oL2 zl`-&VBh#=-?{l1TatC;VweM^=M7-DUE>m+xO7Xi6vTEsReyLs8KJ+2GZ&rxw$d4IT zPXy6pu^4#e;;ZTsgmG+ZPx>piodegkx2n0}SM77+Y*j^~ICvp#2wj^BuqRY*&cjmL zcKp78aZt>e{3YBb4!J_2|K~A`lN=u&5j!byw`1itV(+Q_?RvV7&Z5XS1HF)L2v6ji z&kOEPmv+k_lSXb{$)of~(BkO^py&7oOzpjdG>vI1kcm_oPFHy38%D4&A4h_CSo#lX z2#oqMCTEP7UvUR3mwkPxbl8AMW(e{ARi@HCYLPSHE^L<1I}OgZD{I#YH#GKnpRmW3 z2jkz~Sa(D)f?V?$gNi?6)Y;Sm{&?~2p=0&BUl_(@hYeX8YjaRO=IqO7neK0RsSNdYjD zaw$g2sG(>JR=8Iz1SK4`*kqd_3-?;_BIcaaMd^}<@MYbYisWZm2C2|Np_l|8r9yM|JkUngSo@?wci(7&O9a z%|V(4C1c9pps0xxzPbXH=}QTxc2rr7fXk$9`a6TbWKPCz&p=VsB8^W96W=BsB|7bc zf(QR8&Ktj*iz)wK&mW`#V%4XTM&jWNnDF56O+2bo<3|NyUhQ%#OZE8$Uv2a@J>D%t zMVMiHh?es!Ex19q&6eC&L=XDU_BA&uR^^w>fpz2_`U87q_?N2y;!Z!bjoeKrzfC)} z?m^PM=(z{%n9K`p|7Bz$LuC7!>tFOuN74MFELm}OD9?%jpT>38J;=1Y-VWtZAscaI z_8jUZ#GwWz{JqvGEUmL?G#l5E=*m>`cY?m*XOc*yOCNtpuIGD+Z|kn4Xww=BLrNYS zGO=wQh}Gtr|7DGXLF%|`G>J~l{k^*{;S-Zhq|&HO7rC_r;o`gTB7)uMZ|WWIn@e0( zX$MccUMv3ABg^$%_lNrgU{EVi8O^UyGHPNRt%R!1#MQJn41aD|_93NsBQhP80yP<9 zG4(&0u7AtJJXLPcqzjv`S~5;Q|5TVGccN=Uzm}K{v)?f7W!230C<``9(64}D2raRU zAW5bp%}VEo{4Rko`bD%Ehf=0voW?-4Mk#d3_pXTF!-TyIt6U+({6OXWVAa;s-`Ta5 zTqx&8msH3+DLrVmQOTBOAj=uoxKYT3DS1^zBXM?1W+7gI!aQNPYfUl{3;PzS9*F7g zWJN8x?KjBDx^V&6iCY8o_gslO16=kh(|Gp)kz8qlQ`dzxQv;)V&t+B}wwdi~uBs4? zu~G|}y!`3;8#vIMUdyC7YEx6bb^1o}G!Jky4cN?BV9ejBfN<&!4M)L&lRKiuMS#3} z_B}Nkv+zzxhy{dYCW$oGC&J(Ty&7%=5B$sD0bkuPmj7g>|962`(Q{ZZMDv%YMuT^KweiRDvYTEop3IgFv#)(w>1 zSzH>J`q!LK)c(AK>&Ib)A{g`Fdykxqd`Yq@yB}E{gnQV$K!}RsgMGWqC3DKE(=!{}ekB3+(1?g}xF>^icEJbc z5bdxAPkW90atZT+&*7qoLqL#p=>t-(-lsnl2XMpZcYeW|o|a322&)yO_8p(&Sw{|b zn(tY$xn5yS$DD)UYS%sP?c|z>1dp!QUD)l;aW#`%qMtQJjE!s2z`+bTSZmLK7SvCR z=@I4|U^sCwZLQSfd*ACw9B@`1c1|&i^W_OD(570SDLK`MD0wTiR8|$7+%{cF&){$G zU~|$^Ed?TIxyw{1$e|D$050n8AjJvvOWhLtLHbSB|HIfjMp+gu>DraHZJRrdO53(= z+o-f{+qNog+qSLB%KY;5>Av6X(>-qYk3IIEwZ5~6a+P9lMpC^ z8CJ0q>rEpjlsxCvJm=kms@tlN4+sv}He`xkr`S}bGih4t`+#VEIt{1veE z{ZLtb_pSbcfcYPf4=T1+|BtR!x5|X#x2TZEEkUB6kslKAE;x)*0x~ES0kl4Dex4e- zT2P~|lT^vUnMp{7e4OExfxak0EE$Hcw;D$ehTV4a6hqxru0$|Mo``>*a5=1Ym0u>BDJKO|=TEWJ5jZu!W}t$Kv{1!q`4Sn7 zrxRQOt>^6}Iz@%gA3&=5r;Lp=N@WKW;>O!eGIj#J;&>+3va^~GXRHCY2}*g#9ULab zitCJt-OV0*D_Q3Q`p1_+GbPxRtV_T`jyATjax<;zZ?;S+VD}a(aN7j?4<~>BkHK7bO8_Vqfdq1#W&p~2H z&w-gJB4?;Q&pG9%8P(oOGZ#`!m>qAeE)SeL*t8KL|1oe;#+uOK6w&PqSDhw^9-&Fa zuEzbi!!7|YhlWhqmiUm!muO(F8-F7|r#5lU8d0+=;<`{$mS=AnAo4Zb^{%p}*gZL! zeE!#-zg0FWsSnablw!9$<&K(#z!XOW z;*BVx2_+H#`1b@>RtY@=KqD)63brP+`Cm$L1@ArAddNS1oP8UE$p05R=bvZoYz+^6 z<)!v7pRvi!u_-V?!d}XWQR1~0q(H3{d^4JGa=W#^Z<@TvI6J*lk!A zZ*UIKj*hyO#5akL*Bx6iPKvR3_2-^2mw|Rh-3O_SGN3V9GRo52Q;JnW{iTGqb9W99 z7_+F(Op6>~3P-?Q8LTZ-lwB}xh*@J2Ni5HhUI3`ct|*W#pqb>8i*TXOLn~GlYECIj zhLaa_rBH|1jgi(S%~31Xm{NB!30*mcsF_wgOY2N0XjG_`kFB+uQuJbBm3bIM$qhUyE&$_u$gb zpK_r{99svp3N3p4yHHS=#csK@j9ql*>j0X=+cD2dj<^Wiu@i>c_v zK|ovi7}@4sVB#bzq$n3`EgI?~xDmkCW=2&^tD5RuaSNHf@Y!5C(Is$hd6cuyoK|;d zO}w2AqJPS`Zq+(mc*^%6qe>1d&(n&~()6-ZATASNPsJ|XnxelLkz8r1x@c2XS)R*H(_B=IN>JeQUR;T=i3<^~;$<+8W*eRKWGt7c#>N`@;#!`kZ!P!&{9J1>_g8Zj zXEXxmA=^{8A|3=Au+LfxIWra)4p<}1LYd_$1KI0r3o~s1N(x#QYgvL4#2{z8`=mXy zQD#iJ0itk1d@Iy*DtXw)Wz!H@G2St?QZFz zVPkM%H8Cd2EZS?teQN*Ecnu|PrC!a7F_XX}AzfZl3fXfhBtc2-)zaC2eKx*{XdM~QUo4IwcGgVdW69 z1UrSAqqMALf^2|(I}hgo38l|Ur=-SC*^Bo5ej`hb;C$@3%NFxx5{cxXUMnTyaX{>~ zjL~xm;*`d08bG_K3-E+TI>#oqIN2=An(C6aJ*MrKlxj?-;G zICL$hi>`F%{xd%V{$NhisHSL~R>f!F7AWR&7b~TgLu6!3s#~8|VKIX)KtqTH5aZ8j zY?wY)XH~1_a3&>#j7N}0az+HZ;is;Zw(Am{MX}YhDTe(t{ZZ;TG}2qWYO+hdX}vp9 z@uIRR8g#y~-^E`Qyem(31{H0&V?GLdq9LEOb2(ea#e-$_`5Q{T%E?W(6 z(XbX*Ck%TQM;9V2LL}*Tf`yzai{0@pYMwBu%(I@wTY!;kMrzcfq0w?X`+y@0ah510 zQX5SU(I!*Fag4U6a7Lw%LL;L*PQ}2v2WwYF(lHx_Uz2ceI$mnZ7*eZ?RFO8UvKI0H z9Pq-mB`mEqn6n_W9(s~Jt_D~j!Ln9HA)P;owD-l~9FYszs)oEKShF9Zzcmnb8kZ7% zQ`>}ki1kwUO3j~ zEmh140sOkA9v>j@#56ymn_RnSF`p@9cO1XkQy6_Kog?0ivZDb`QWOX@tjMd@^Qr(p z!sFN=A)QZm!sTh(#q%O{Ovl{IxkF!&+A)w2@50=?a-+VuZt6On1;d4YtUDW{YNDN_ zG@_jZi1IlW8cck{uHg^g=H58lPQ^HwnybWy@@8iw%G! zwB9qVGt_?~M*nFAKd|{cGg+8`+w{j_^;nD>IrPf-S%YjBslSEDxgKH{5p)3LNr!lD z4ii)^%d&cCXIU7UK?^ZQwmD(RCd=?OxmY(Ko#+#CsTLT;p#A%{;t5YpHFWgl+@)N1 zZ5VDyB;+TN+g@u~{UrWrv)&#u~k$S&GeW)G{M#&Di)LdYk?{($Cq zZGMKeYW)aMtjmKgvF0Tg>Mmkf9IB#2tYmH-s%D_9y3{tfFmX1BSMtbe<(yqAyWX60 zzkgSgKb3c{QPG2MalYp`7mIrYg|Y<4Jk?XvJK)?|Ecr+)oNf}XLPuTZK%W>;<|r+% zTNViRI|{sf1v7CsWHvFrkQ$F7+FbqPQ#Bj7XX=#M(a~9^80}~l-DueX#;b}Ajn3VE z{BWI}$q{XcQ3g{(p>IOzFcAMDG0xL)H%wA)<(gl3I-oVhK~u_m=hAr&oeo|4lZbf} z+pe)c34Am<=z@5!2;_lwya;l?xV5&kWe}*5uBvckm(d|7R>&(iJNa6Y05SvlZcWBlE{{%2- z`86)Y5?H!**?{QbzGG~|k2O%eA8q=gxx-3}&Csf6<9BsiXC)T;x4YmbBIkNf;0Nd5 z%whM^!K+9zH>on_<&>Ws?^v-EyNE)}4g$Fk?Z#748e+GFp)QrQQETx@u6(1fk2!(W zWiCF~MomG*y4@Zk;h#2H8S@&@xwBIs|82R*^K(i*0MTE%Rz4rgO&$R zo9Neb;}_ulaCcdn3i17MO3NxzyJ=l;LU*N9ztBJ30j=+?6>N4{9YXg$m=^9@Cl9VY zbo^{yS@gU=)EpQ#;UIQBpf&zfCA;00H-ee=1+TRw@(h%W=)7WYSb5a%$UqNS@oI@= zDrq|+Y9e&SmZrH^iA>Of8(9~Cf-G(P^5Xb%dDgMMIl8gk6zdyh`D3OGNVV4P9X|EvIhplXDld8d z^YWtYUz@tpg*38Xys2?zj$F8%ivA47cGSl;hjD23#*62w3+fwxNE7M7zVK?x_`dBSgPK zWY_~wF~OEZi9|~CSH8}Xi>#8G73!QLCAh58W+KMJJC81{60?&~BM_0t-u|VsPBxn* zW7viEKwBBTsn_A{g@1!wnJ8@&h&d>!qAe+j_$$Vk;OJq`hrjzEE8Wjtm)Z>h=*M25 zOgETOM9-8xuuZ&^@rLObtcz>%iWe%!uGV09nUZ*nxJAY%&KAYGY}U1WChFik7HIw% zZP$3Bx|TG_`~19XV7kfi2GaBEhKap&)Q<9`aPs#^!kMjtPb|+-fX66z3^E)iwyXK7 z8)_p<)O{|i&!qxtgBvWXx8*69WO$5zACl++1qa;)0zlXf`eKWl!0zV&I`8?sG)OD2Vy?reNN<{eK+_ za4M;Hh%&IszR%)&gpgRCP}yheQ+l#AS-GnY81M!kzhWxIR?PW`G3G?} z$d%J28uQIuK@QxzGMKU_;r8P0+oIjM+k)&lZ39i#(ntY)*B$fdJnQ3Hw3Lsi8z&V+ zZly2}(Uzpt2aOubRjttzqrvinBFH4jrN)f0hy)tj4__UTwN)#1fj3-&dC_Vh7}ri* zfJ=oqLMJ-_<#rwVyN}_a-rFBe2>U;;1(7UKH!$L??zTbbzP#bvyg7OQBGQklJ~DgP zd<1?RJ<}8lWwSL)`jM53iG+}y2`_yUvC!JkMpbZyb&50V3sR~u+lok zT0uFRS-yx@8q4fPRZ%KIpLp8R#;2%c&Ra4p(GWRT4)qLaPNxa&?8!LRVdOUZ)2vrh zBSx&kB%#Y4!+>~)<&c>D$O}!$o{<1AB$M7-^`h!eW;c(3J~ztoOgy6Ek8Pwu5Y`Xion zFl9fb!k2`3uHPAbd(D^IZmwR5d8D$495nN2`Ue&`W;M-nlb8T-OVKt|fHk zBpjX$a(IR6*-swdNk@#}G?k6F-~c{AE0EWoZ?H|ZpkBxqU<0NUtvubJtwJ1mHV%9v?GdDw; zAyXZiD}f0Zdt-cl9(P1la+vQ$Er0~v}gYJVwQazv zH#+Z%2CIfOf90fNMGos|{zf&N`c0@x0N`tkFv|_9af3~<0z@mnf*e;%r*Fbuwl-IW z{}B3=(mJ#iwLIPiUP`J3SoP~#)6v;aRXJ)A-pD2?_2_CZ#}SAZ<#v7&Vk6{*i(~|5 z9v^nC`T6o`CN*n%&9+bopj^r|E(|pul;|q6m7Tx+U|UMjWK8o-lBSgc3ZF=rP{|l9 zc&R$4+-UG6i}c==!;I#8aDIbAvgLuB66CQLRoTMu~jdw`fPlKy@AKYWS-xyZzPg&JRAa@m-H43*+ne!8B7)HkQY4 zIh}NL4Q79a-`x;I_^>s$Z4J4-Ngq=XNWQ>yAUCoe&SMAYowP>r_O}S=V+3=3&(O=h zNJDYNs*R3Y{WLmBHc?mFEeA4`0Y`_CN%?8qbDvG2m}kMAiqCv`_BK z_6a@n`$#w6Csr@e2YsMx8udNWtNt=kcqDZdWZ-lGA$?1PA*f4?X*)hjn{sSo8!bHz zb&lGdAgBx@iTNPK#T_wy`KvOIZvTWqSHb=gWUCKXAiB5ckQI`1KkPx{{%1R*F2)Oc z(9p@yG{fRSWE*M9cdbrO^)8vQ2U`H6M>V$gK*rz!&f%@3t*d-r3mSW>D;wYxOhUul zk~~&ip5B$mZ~-F1orsq<|1bc3Zpw6)Ws5;4)HilsN;1tx;N6)tuePw& z==OlmaN*ybM&-V`yt|;vDz(_+UZ0m&&9#{9O|?0I|4j1YCMW;fXm}YT$0%EZ5^YEI z4i9WV*JBmEU{qz5O{#bs`R1wU%W$qKx?bC|e-iS&d*Qm7S=l~bMT{~m3iZl+PIXq{ zn-c~|l)*|NWLM%ysfTV-oR0AJ3O>=uB-vpld{V|cWFhI~sx>ciV9sPkC*3i0Gg_9G!=4ar*-W?D9)?EFL1=;O+W8}WGdp8TT!Fgv z{HKD`W>t(`Cds_qliEzuE!r{ihwEv1l5o~iqlgjAyGBi)$%zNvl~fSlg@M=C{TE;V zQkH`zS8b&!ut(m)%4n2E6MB>p*4(oV>+PT51#I{OXs9j1vo>9I<4CL1kv1aurV*AFZ^w_qfVL*G2rG@D2 zrs87oV3#mf8^E5hd_b$IXfH6vHe&lm@7On~Nkcq~YtE!}ad~?5*?X*>y`o;6Q9lkk zmf%TYonZM`{vJg$`lt@MXsg%*&zZZ0uUSse8o=!=bfr&DV)9Y6$c!2$NHyYAQf*Rs zk{^?gl9E z5Im8wlAsvQ6C2?DyG@95gUXZ3?pPijug25g;#(esF_~3uCj3~94}b*L>N2GSk%Qst z=w|Z>UX$m!ZOd(xV*2xvWjN&c5BVEdVZ0wvmk)I+YxnyK%l~caR=7uNQ=+cnNTLZ@&M!I$Mj-r{!P=; z`C2)D=VmvK8@T5S9JZoRtN!S*D_oqOxyy!q6Zk|~4aT|*iRN)fL)c>-yycR>-is0X zKrko-iZw(f(!}dEa?hef5yl%p0-v-8#8CX8!W#n2KNyT--^3hq6r&`)5Y@>}e^4h- zlPiDT^zt}Ynk&x@F8R&=)k8j$=N{w9qUcIc&)Qo9u4Y(Ae@9tA`3oglxjj6c{^pN( zQH+Uds2=9WKjH#KBIwrQI%bbs`mP=7V>rs$KG4|}>dxl_k!}3ZSKeEen4Iswt96GGw`E6^5Ov)VyyY}@itlj&sao|>Sb5 zeY+#1EK(}iaYI~EaHQkh7Uh>DnzcfIKv8ygx1Dv`8N8a6m+AcTa-f;17RiEed>?RT zk=dAksmFYPMV1vIS(Qc6tUO+`1jRZ}tcDP? zt)=7B?yK2RcAd1+Y!$K5*ds=SD;EEqCMG6+OqPoj{&8Y5IqP(&@zq@=A7+X|JBRi4 zMv!czlMPz)gt-St2VZwDD=w_S>gRpc-g zUd*J3>bXeZ?Psjohe;z7k|d<*T21PA1i)AOi8iMRwTBSCd0ses{)Q`9o&p9rsKeLaiY zluBw{1r_IFKR76YCAfl&_S1*(yFW8HM^T()&p#6y%{(j7Qu56^ZJx1LnN`-RTwimdnuo*M8N1ISl+$C-%=HLG-s} zc99>IXRG#FEWqSV9@GFW$V8!{>=lSO%v@X*pz*7()xb>=yz{E$3VE;e)_Ok@A*~El zV$sYm=}uNlUxV~6e<6LtYli1!^X!Ii$L~j4e{sI$tq_A(OkGquC$+>Rw3NFObV2Z)3Rt~Jr{oYGnZaFZ^g5TDZlg;gaeIP} z!7;T{(9h7mv{s@piF{-35L=Ea%kOp;^j|b5ZC#xvD^^n#vPH=)lopYz1n?Kt;vZmJ z!FP>Gs7=W{sva+aO9S}jh0vBs+|(B6Jf7t4F^jO3su;M13I{2rd8PJjQe1JyBUJ5v zcT%>D?8^Kp-70bP8*rulxlm)SySQhG$Pz*bo@mb5bvpLAEp${?r^2!Wl*6d7+0Hs_ zGPaC~w0E!bf1qFLDM@}zso7i~(``)H)zRgcExT_2#!YOPtBVN5Hf5~Ll3f~rWZ(UsJtM?O*cA1_W0)&qz%{bDoA}{$S&-r;0iIkIjbY~ zaAqH45I&ALpP=9Vof4OapFB`+_PLDd-0hMqCQq08>6G+C;9R~}Ug_nm?hhdkK$xpI zgXl24{4jq(!gPr2bGtq+hyd3%Fg%nofK`psHMs}EFh@}sdWCd!5NMs)eZg`ZlS#O0 zru6b8#NClS(25tXqnl{|Ax@RvzEG!+esNW-VRxba(f`}hGoqci$U(g30i}2w9`&z= zb8XjQLGN!REzGx)mg~RSBaU{KCPvQx8)|TNf|Oi8KWgv{7^tu}pZq|BS&S<53fC2K4Fw6>M^s$R$}LD*sUxdy6Pf5YKDbVet;P!bw5Al-8I1Nr(`SAubX5^D9hk6$agWpF}T#Bdf{b9-F#2WVO*5N zp+5uGgADy7m!hAcFz{-sS0kM7O)qq*rC!>W@St~^OW@R1wr{ajyYZq5H!T?P0e+)a zaQ%IL@X_`hzp~vRH0yUblo`#g`LMC%9}P;TGt+I7qNcBSe&tLGL4zqZqB!Bfl%SUa z6-J_XLrnm*WA`34&mF+&e1sPCP9=deazrM=Pc4Bn(nV;X%HG^4%Afv4CI~&l!Sjzb z{rHZ3od0!Al{}oBO>F*mOFAJrz>gX-vs!7>+_G%BB(ljWh$252j1h;9p~xVA=9_`P z5KoFiz96_QsTK%B&>MSXEYh`|U5PjX1(+4b#1PufXRJ*uZ*KWdth1<0 zsAmgjT%bowLyNDv7bTUGy|g~N34I-?lqxOUtFpTLSV6?o?<7-UFy*`-BEUsrdANh} zBWkDt2SAcGHRiqz)x!iVoB~&t?$yn6b#T=SP6Ou8lW=B>=>@ik93LaBL56ub`>Uo!>0@O8?e)$t(sgy$I z6tk3nS@yFFBC#aFf?!d_3;%>wHR;A3f2SP?Na8~$r5C1N(>-ME@HOpv4B|Ty7%jAv zR}GJwsiJZ5@H+D$^Cwj#0XA_(m^COZl8y7Vv(k=iav1=%QgBOVzeAiw zaDzzdrxzj%sE^c9_uM5D;$A_7)Ln}BvBx^=)fO+${ou%B*u$(IzVr-gH3=zL6La;G zu0Kzy5CLyNGoKRtK=G0-w|tnwI)puPDOakRzG(}R9fl7#<|oQEX;E#yCWVg95 z;NzWbyF&wGg_k+_4x4=z1GUcn6JrdX4nOVGaAQ8#^Ga>aFvajQN{!+9rgO-dHP zIp@%&ebVg}IqnRWwZRTNxLds+gz2@~VU(HI=?Epw>?yiEdZ>MjajqlO>2KDxA>)cj z2|k%dhh%d8SijIo1~20*5YT1eZTDkN2rc^zWr!2`5}f<2f%M_$to*3?Ok>e9$X>AV z2jYmfAd)s|(h?|B(XYrIfl=Wa_lBvk9R1KaP{90-z{xKi+&8=dI$W0+qzX|ZovWGOotP+vvYR(o=jo?k1=oG?%;pSqxcU* zWVGVMw?z__XQ9mnP!hziHC`ChGD{k#SqEn*ph6l46PZVkm>JF^Q{p&0=MKy_6apts z`}%_y+Tl_dSP(;Ja&sih$>qBH;bG;4;75)jUoVqw^}ee=ciV;0#t09AOhB^Py7`NC z-m+ybq1>_OO+V*Z>dhk}QFKA8V?9Mc4WSpzj{6IWfFpF7l^au#r7&^BK2Ac7vCkCn{m0uuN93Ee&rXfl1NBY4NnO9lFUp zY++C1I;_{#OH#TeP2Dp?l4KOF8ub?m6zE@XOB5Aiu$E~QNBM@;r+A5mF2W1-c7>ex zHiB=WJ&|`6wDq*+xv8UNLVUy4uW1OT>ey~Xgj@MMpS@wQbHAh>ysYvdl-1YH@&+Q! z075(Qd4C!V`9Q9jI4 zSt{HJRvZec>vaL_brKhQQwbpQd4_Lmmr0@1GdUeU-QcC{{8o=@nwwf>+dIKFVzPriGNX4VjHCa zTbL9w{Y2V87c2ofX%`(48A+4~mYTiFFl!e{3K^C_k%{&QTsgOd0*95KmWN)P}m zTRr{`f7@=v#+z_&fKYkQT!mJn{*crj%ZJz#(+c?>cD&2Lo~FFAWy&UG*Op^pV`BR^I|g?T>4l5;b|5OQ@t*?_Slp`*~Y3`&RfKD^1uLezIW(cE-Dq2z%I zBi8bWsz0857`6e!ahet}1>`9cYyIa{pe53Kl?8|Qg2RGrx@AlvG3HAL-^9c^1GW;)vQt8IK+ zM>!IW*~682A~MDlyCukldMd;8P|JCZ&oNL(;HZgJ>ie1PlaInK7C@Jg{3kMKYui?e!b`(&?t6PTb5UPrW-6DVU%^@^E`*y-Fd(p|`+JH&MzfEq;kikdse ziFOiDWH(D< zyV7Rxt^D0_N{v?O53N$a2gu%1pxbeK;&ua`ZkgSic~$+zvt~|1Yb=UfKJW2F7wC^evlPf(*El+#}ZBy0d4kbVJsK- z05>;>?HZO(YBF&v5tNv_WcI@O@LKFl*VO?L(!BAd!KbkVzo;v@~3v`-816GG?P zY+H3ujC>5=Am3RIZDdT#0G5A6xe`vGCNq88ZC1aVXafJkUlcYmHE^+Z{*S->ol%-O znm9R0TYTr2w*N8Vs#s-5=^w*{Y}qp5GG)Yt1oLNsH7y~N@>Eghms|K*Sdt_u!&I}$ z+GSdFTpbz%KH+?B%Ncy;C`uW6oWI46(tk>r|5|-K6)?O0d_neghUUOa9BXHP*>vi; z={&jIGMn-92HvInCMJcyXwHTJ42FZp&Wxu+9Rx;1x(EcIQwPUQ@YEQQ`bbMy4q3hP zNFoq~Qd0=|xS-R}k1Im3;8s{BnS!iaHIMLx)aITl)+)?Yt#fov|Eh>}dv@o6R{tG>uHsy&jGmWN5+*wAik|78(b?jtysPHC#e+Bzz~V zS3eEXv7!Qn4uWi!FS3B?afdD*{fr9>B~&tc671fi--V}~E4un;Q|PzZRwk-azprM$4AesvUb5`S`(5x#5VJ~4%ET6&%GR$}muHV-5lTsCi_R|6KM(g2PCD@|yOpKluT zakH!1V7nKN)?6JmC-zJoA#ciFux8!)ajiY%K#RtEg$gm1#oKUKX_Ms^%hvKWi|B=~ zLbl-L)-=`bfhl`>m!^sRR{}cP`Oim-{7}oz4p@>Y(FF5FUEOfMwO!ft6YytF`iZRq zfFr{!&0Efqa{1k|bZ4KLox;&V@ZW$997;+Ld8Yle91he{BfjRhjFTFv&^YuBr^&Pe zswA|Bn$vtifycN8Lxr`D7!Kygd7CuQyWqf}Q_PM}cX~S1$-6xUD%-jrSi24sBTFNz(Fy{QL2AmNbaVggWOhP;UY4D>S zqKr!UggZ9Pl9Nh_H;qI`-WoH{ceXj?m8y==MGY`AOJ7l0Uu z)>M%?dtaz2rjn1SW3k+p`1vs&lwb%msw8R!5nLS;upDSxViY98IIbxnh{}mRfEp=9 zbrPl>HEJeN7J=KnB6?dwEA6YMs~chHNG?pJsEj#&iUubdf3JJwu=C(t?JpE6xMyhA3e}SRhunDC zn-~83*9=mADUsk^sCc%&&G1q5T^HR9$P#2DejaG`Ui*z1hI#h7dwpIXg)C{8s< z%^#@uQRAg-$z&fmnYc$Duw63_Zopx|n{Bv*9Xau{a)2%?H<6D>kYY7_)e>OFT<6TT z0A}MQLgXbC2uf`;67`mhlcUhtXd)Kbc$PMm=|V}h;*_%vCw4L6r>3Vi)lE5`8hkSg zNGmW-BAOO)(W((6*e_tW&I>Nt9B$xynx|sj^ux~?q?J@F$L4;rnm_xy8E*JYwO-02u9_@@W0_2@?B@1J{y~Q39N3NX^t7#`=34Wh)X~sU&uZWgS1Z09%_k|EjA4w_QqPdY`oIdv$dJZ;(!k)#U8L+|y~gCzn+6WmFt#d{OUuKHqh1-uX_p*Af8pFYkYvKPKBxyid4KHc}H` z*KcyY;=@wzXYR{`d{6RYPhapShXIV?0cg_?ahZ7do)Ot#mxgXYJYx}<%E1pX;zqHd zf!c(onm{~#!O$2`VIXezECAHVd|`vyP)Uyt^-075X@NZDBaQt<>trA3nY-Dayki4S zZ^j6CCmx1r46`4G9794j-WC0&R9(G7kskS>=y${j-2;(BuIZTLDmAyWTG~`0)Bxqk zd{NkDe9ug|ms@0A>JVmB-IDuse9h?z9nw!U6tr7t-Lri5H`?TjpV~8(gZWFq4Vru4 z!86bDB;3lpV%{rZ`3gtmcRH1hjj!loI9jN>6stN6A*ujt!~s!2Q+U1(EFQEQb(h4E z6VKuRouEH`G6+8Qv2C)K@^;ldIuMVXdDDu}-!7FS8~k^&+}e9EXgx~)4V4~o6P^52 z)a|`J-fOirL^oK}tqD@pqBZi_;7N43%{IQ{v&G9^Y^1?SesL`;Z(dt!nn9Oj5Odde%opv&t zxJ><~b#m+^KV&b?R#)fRi;eyqAJ_0(nL*61yPkJGt;gZxSHY#t>ATnEl-E%q$E16% zZdQfvhm5B((y4E3Hk6cBdwGdDy?i5CqBlCVHZr-rI$B#>Tbi4}Gcvyg_~2=6O9D-8 zY2|tKrNzbVR$h57R?Pe+gUU_il}ZaWu|Az#QO@};=|(L-RVf0AIW zq#pO+RfM7tdV`9lI6g;{qABNId`fG%U9Va^ravVT^)CklDcx)YJKeJdGpM{W1v8jg z@&N+mR?BPB=K1}kNwXk_pj44sd>&^;d!Z~P>O78emE@Qp@&8PyB^^4^2f7e)gekMv z2aZNvP@;%i{+_~>jK7*2wQc6nseT^n6St9KG#1~Y@$~zR_=AcO2hF5lCoH|M&c{vR zSp(GRVVl=T*m~dIA;HvYm8HOdCkW&&4M~UDd^H)`p__!4k+6b)yG0Zcek8OLw$C^K z3-BbLiG_%qX|ZYpXJ$(c@aa7b4-*IQkDF}=gZSV`*ljP|5mWuHSCcf$5qqhZTv&P?I$z^>}qP(q!Aku2yA5vu38d8x*q{6-1`%PrE_r0-9Qo?a#7Zbz#iGI7K<(@k^|i4QJ1H z4jx?{rZbgV!me2VT72@nBjucoT zUM9;Y%TCoDop?Q5fEQ35bCYk7!;gH*;t9t-QHLXGmUF;|vm365#X)6b2Njsyf1h9JW#x$;@x5Nx2$K$Z-O3txa%;OEbOn6xBzd4n4v)Va=sj5 z%rb#j7{_??Tjb8(Hac<^&s^V{yO-BL*uSUk2;X4xt%NC8SjO-3?;Lzld{gM5A=9AV z)DBu-Z8rRvXXwSVDH|dL-3FODWhfe1C_iF``F05e{dl(MmS|W%k-j)!7(ARkV?6r~ zF=o42y+VapxdZn;GnzZfGu<6oG-gQ7j7Zvgo7Am@jYxC2FpS@I;Jb%EyaJDBQC(q% zKlZ}TVu!>;i3t~OAgl@QYy1X|T~D{HOyaS*Bh}A}S#a9MYS{XV{R-|niEB*W%GPW! zP^NU(L<}>Uab<;)#H)rYbnqt|dOK(-DCnY==%d~y(1*{D{Eo1cqIV8*iMfx&J*%yh zx=+WHjt0q2m*pLx8=--UqfM6ZWjkev>W-*}_*$Y(bikH`#-Gn#!6_ zIA&kxn;XYI;eN9yvqztK-a113A%97in5CL5Z&#VsQ4=fyf&3MeKu70)(x^z_uw*RG zo2Pv&+81u*DjMO6>Mrr7vKE2CONqR6C0(*;@4FBM;jPIiuTuhQ-0&C)JIzo_k>TaS zN_hB;_G=JJJvGGpB?uGgSeKaix~AkNtYky4P7GDTW6{rW{}V9K)Cn^vBYKe*OmP!; zohJs=l-0sv5&phSCi&8JSrokrKP$LVa!LbtlN#T^cedgH@ijt5T-Acxd9{fQY z4qsg1O{|U5Rzh_j;9QD(g*j+*=xULyi-FY|-mUXl7-2O`TYQny<@jSQ%^ye*VW_N< z4mmvhrDYBJ;QSoPvwgi<`7g*Pwg5ANA8i%Kum;<=i|4lwEdN+`)U3f2%bcRZRK!P z70kd~`b0vX=j20UM5rBO#$V~+grM)WRhmzb15ya^Vba{SlSB4Kn}zf#EmEEhGruj| zBn0T2n9G2_GZXnyHcFkUlzdRZEZ0m&bP-MxNr zd;kl7=@l^9TVrg;Y6J(%!p#NV*Lo}xV^Nz0#B*~XRk0K2hgu5;7R9}O=t+R(r_U%j z$`CgPL|7CPH&1cK5vnBo<1$P{WFp8#YUP%W)rS*a_s8kKE@5zdiAh*cjmLiiKVoWD z!y$@Cc5=Wj^VDr$!04FI#%pu6(a9 zM_FAE+?2tp2<$Sqp5VtADB>yY*cRR+{OeZ5g2zW=`>(tA~*-T)X|ahF{xQmypWp%2X{385+=0S|Jyf`XA-c7wAx`#5n2b-s*R>m zP30qtS8aUXa1%8KT8p{=(yEvm2Gvux5z22;isLuY5kN{IIGwYE1Pj);?AS@ex~FEt zQ`Gc|)o-eOyCams!|F0_;YF$nxcMl^+z0sSs@ry01hpsy3p<|xOliR zr-dxK0`DlAydK!br?|Xi(>buASy4@C8)ccRCJ3w;v&tA1WOCaieifLl#(J% zODPi5fr~ASdz$Hln~PVE6xekE{Xb286t(UtYhDWo8JWN6sNyRVkIvC$unIl8QMe@^ z;1c<0RO5~Jv@@gtDGPDOdqnECOurq@l02NC#N98-suyq_)k(`G=O`dJU8I8LcP!4z z8fkgqViqFbR+3IkwLa)^>Z@O{qxTLU63~^lod{@${q;-l?S|4Tq0)As-Gz!D(*P)Vf6wm6B8GGWi7B)Q^~T?sseZeI+}LyBAG!LRZn_ktDlht1j2ok@ljteyuNUkG67 zipkCx-7k(FZQhYjZ%T9X7`tO99$Wj~K`9r0IkWhPul`Q_t1YnVK=YI1dMc_b!FEU4 zkv=PGf{5$P#w{|m92tfVnsnfd%%KW;1a*cLmga4bSYl^*49M4cs+Fe>P!n=$G6hL6 z>IM&0+c(Nvr0I!5CGx7WK*Z3V^w0+QcF=hU0B4=+;=tn*+XDxKa;NB-z4O~I zf}TSb^Z;L_Og>!D1`;w@zf@GCqCUNY%N?IPmEkTco^}bX~BWM_Hamu05>#B zBh%QfUeHPu`MsYVQQ3hOT;HmP_C|nOl zjluk7vaSICyQ01h`^c)DWp>cxPjGEc6D^~2L79hyK_J#<9H#8o`&XM4=aB`@< z<|1oR6Djf))P1l2C{qSwa4u-&LDG{FLz#ym_@I+vo}D}#%;vNN%& zW&9||THv_^B!1Fo+$3A6hEAed$I-{a^6FVvwMtT~e%*&RvY5mj<@(-{y^xn6ZCYqNK|#v^xbWpy15YL18z#Y&5YwOnd!A*@>k^7CaX0~4*6QB{Bgh$KJqesFc(lSQ{iQAKY%Ge}2CeuFJ{4YmgrP(gpcH zXJQjSH^cw`Z0tV^axT&RkOBP2A~#fvmMFrL&mwdDn<*l3;3A425_lzHL`+6sT9LeY zu@TH0u4tj199jQBzz*~Up5)7=4OP%Ok{rxQYNb!hphAoW-BFJn>O=%ov*$ir?dIx% z56Y`>?(1YQ8Fc(D7pq2`9swz@*RIoTAvMT%CPbt;$P%eG(P%*ZMjklLoXqTE*Jg^T zlEQbMi@_E|ll_>pTJ!(-x41R}4sY<5A2VVQ^#4eE{imHt#NEi+#p#EBC2C=9B4A|n zqe03T*czDqQ-VxZ+jPQG!}!M0SlFm^@wTW?otBZ+q~xkk29u1i7Q|kaJ(9{AiP1`p zbEe5&!>V;1wnQ1-Qpyn2B5!S(lh=38hl6IilCC6n4|yz~q94S9_5+Od*$c)%r|)f~ z;^-lf=6POs>Ur4i-F>-wm;3(v7Y_itzt)*M!b~&oK%;re(p^>zS#QZ+Rt$T#Y%q1{ zx+?@~+FjR1MkGr~N`OYBSsVr}lcBZ+ij!0SY{^w((2&U*M`AcfSV9apro+J{>F&tX zT~e zMvsv$Q)AQl_~);g8OOt4plYESr8}9?T!yO(Wb?b~1n0^xVG;gAP}d}#%^9wqN7~F5 z!jWIpqxZ28LyT|UFH!u?V>F6&Hd~H|<(3w*o{Ps>G|4=z`Ws9oX5~)V=uc?Wmg6y< zJKnB4Opz^9v>vAI)ZLf2$pJdm>ZwOzCX@Yw0;-fqB}Ow+u`wglzwznQAP(xbs`fA7 zylmol=ea)g}&;8;)q0h7>xCJA+01w+RY`x`RO% z9g1`ypy?w-lF8e5xJXS4(I^=k1zA46V)=lkCv?k-3hR9q?oZPzwJl$yOHWeMc9wFuE6;SObNsmC4L6;eWPuAcfHoxd59gD7^Xsb$lS_@xI|S-gb? z*;u@#_|4vo*IUEL2Fxci+@yQY6<&t=oNcWTVtfi1Ltveqijf``a!Do0s5e#BEhn5C zBXCHZJY-?lZAEx>nv3k1lE=AN10vz!hpeUY9gy4Xuy940j#Rq^yH`H0W2SgXtn=X1 zV6cY>fVbQhGwQIaEG!O#p)aE8&{gAS z^oVa-0M`bG`0DE;mV)ATVNrt;?j-o*?Tdl=M&+WrW12B{+5Um)qKHd_HIv@xPE+;& zPI|zXfrErYzDD2mOhtrZLAQ zP#f9e!vqBSyoKZ#{n6R1MAW$n8wH~)P3L~CSeBrk4T0dzIp&g9^(_5zY*7$@l%%nL zG$Z}u8pu^Mw}%{_KDBaDjp$NWes|DGAn~WKg{Msbp*uPiH9V|tJ_pLQROQY?T0Pmt zs4^NBZbn7B^L%o#q!-`*+cicZS9Ycu+m)rDb98CJ+m1u}e5ccKwbc0|q)ICBEnLN# zV)8P1s;r@hE3sG2wID0@`M9XIn~hm+W1(scCZr^Vs)w4PKIW_qasyjbOBC`ixG8K$ z9xu^v(xNy4HV{wu2z-B87XG#yWu~B6@|*X#BhR!_jeF*DG@n_RupAvc{DsC3VCHT# za6Z&9k#<*y?O0UoK3MLlSX6wRh`q&E>DOZTG=zRxj0pR0c3vskjPOqkh9;o>a1>!P zxD|LU0qw6S4~iN8EIM2^$k72(=a6-Tk?%1uSj@0;u$0f*LhC%|mC`m`w#%W)IK zN_UvJkmzdP84ZV7CP|@k>j^ zPa%;PDu1TLyNvLQdo!i1XA|49nN}DuTho6=z>Vfduv@}mpM({Jh289V%W@9opFELb z?R}D#CqVew1@W=XY-SoMNul(J)zX(BFP?#@9x<&R!D1X&d|-P;VS5Gmd?Nvu$eRNM zG;u~o*~9&A2k&w}IX}@x>LMHv`ith+t6`uQGZP8JyVimg>d}n$0dDw$Av{?qU=vRq zU@e2worL8vTFtK@%pdbaGdUK*BEe$XE=pYxE_q{(hUR_Gzkn=c#==}ZS^C6fKBIfG z@hc);p+atn`3yrTY^x+<y`F0>p02jUL8cgLa|&yknDj;g73m&Sm&@ju91?uG*w?^d%Yap&d2Bp3v7KlQmh z(N<38o-iRk9*UV?wFirV>|46JqxOZ_o8xv_eJ1dv} zw&zDHZOU%`U{9ckU8DS$lB6J!B`JuThCnwKphODv`3bd?_=~tjNHstM>xoA53-p#F zLCVB^E`@r_D>yHLr10Sm4NRX8FQ+&zw)wt)VsPmLK|vLwB-}}jwEIE!5fLE;(~|DA ztMr8D0w^FPKp{trPYHXI7-;UJf;2+DOpHt%*qRgdWawy1qdsj%#7|aRSfRmaT=a1> zJ8U>fcn-W$l-~R3oikH+W$kRR&a$L!*HdKD_g}2eu*3p)twz`D+NbtVCD|-IQdJlFnZ0%@=!g`nRA(f!)EnC0 zm+420FOSRm?OJ;~8D2w5HD2m8iH|diz%%gCWR|EjYI^n7vRN@vcBrsyQ;zha15{uh zJ^HJ`lo+k&C~bcjhccoiB77-5=SS%s7UC*H!clrU$4QY@aPf<9 z0JGDeI(6S%|K-f@U#%SP`{>6NKP~I#&rSHBTUUvHn#ul4*A@BcRR`#yL%yfZj*$_% zAa$P%`!8xJp+N-Zy|yRT$gj#4->h+eV)-R6l}+)9_3lq*A6)zZ)bnogF9`5o!)ub3 zxCx|7GPCqJlnRVPb&!227Ok@-5N2Y6^j#uF6ihXjTRfbf&ZOP zVc$!`$ns;pPW_=n|8Kw4*2&qx+WMb9!DQ7lC1f@DZyr|zeQcC|B6ma*0}X%BSmFJ6 zeDNWGf=Pmmw5b{1)OZ6^CMK$kw2z*fqN+oup2J8E^)mHj?>nWhBIN|hm#Km4eMyL= zXRqzro9k7(ulJi5J^<`KHJAh-(@W=5x>9+YMFcx$6A5dP-5i6u!k*o-zD z37IkyZqjlNh*%-)rAQrCjJo)u9Hf9Yb1f3-#a=nY&M%a{t0g7w6>{AybZ9IY46i4+%^u zwq}TCN@~S>i7_2T>GdvrCkf&=-OvQV9V3$RR_Gk7$t}63L}Y6d_4l{3b#f9vup-7s z3yKz5)54OVLzH~Ty=HwVC=c$Tl=cvi1L?R>*#ki4t6pgqdB$sx6O(IIvYO8Q>&kq;c3Y-T?b z*6XAc?orv>?V7#vxmD7geKjf%v~%yjbp%^`%e>dw96!JAm4ybAJLo0+4=TB% zShgMl)@@lgdotD?C1Ok^o&hFRYfMbmlbfk677k%%Qy-BG3V9txEjZmK+QY5nlL2D$Wq~04&rwN`-ujpp)wUm5YQc}&tK#zUR zW?HbbHFfSDsT{Xh&RoKiGp)7WPX4 zD^3(}^!TS|hm?YC16YV59v9ir>ypihBLmr?LAY87PIHgRv*SS>FqZwNJKgf6hy8?9 zaGTxa*_r`ZhE|U9S*pn5Mngb7&%!as3%^ifE@zDvX`GP+=oz@p)rAl2KL}ZO1!-us zY`+7ln`|c!2=?tVsO{C}=``aibcdc1N#;c^$BfJr84=5DCy+OT4AB1BUWkDw1R$=FneVh*ajD&(j2IcWH8stMShVcMe zAi6d7p)>hgPJbcb(=NMw$Bo;gQ}3=hCQsi{6{2s~=ZEOizY(j{zYY-W8RiNjycv00 z8(JpE{}=CHx0ib3(nZgo776X=wBUbfk$y2r*}aNG@A0_zOa4k3?1EeH7Z43{@IP>{^M+M`M)0w*@Go z>kg~UfgP1{vH+IU(0p(VRVlLNMHN1C&3cFnp*}4d1a*kwHJL)rjf`Fi5z)#RGTr7E zOhWfTtQyCo&8_N(zIYEugQI}_k|2X(=dMA43Nt*e93&otv`ha-i;ACB$tIK% zRDOtU^1CD5>7?&Vbh<+cz)(CBM}@a)qZ^ld?uYfp3OjiZOCP7u6~H# zMU;=U=1&DQ9Qp|7j4qpN5Dr7sH(p^&Sqy|{uH)lIv3wk?xoVuN`ILg}HUCLs1Bp2^ za8&M?ZQVWFX>Rg4_i$C$U`89i6O(RmWQ4&O=?B6@6`a8fI)Q6q0t{&o%)|n7jN)7V z{S;u+{UzXnUJN}bCE&4u5wBxaFv7De0huAjhy#o~6NH&1X{OA4Y>v0$F-G*gZqFym zhTZ7~nfaMdN8I&2ri;fk*`LhES$vkyq-dBuRF!BC)q%;lt0`Z(*=Sl>uvU`LAvbyt zL1|M@Jas<@1hK!prK}$@&fbf70o7>3&CovCKi815v$6T7R&1GOG~R4pEu2B z%bxG{n`u$7ps(}Tt(P608J@{+>X(?=-j8CkF!T79c`1@E%?vOL%TYrMe1ozi<##IsIC1YRojP!gD%|+7|z^-Vj$a85gbmtB#unyoy%gw9m1yB z|L^-wylT%}=pNpq!QYz9zoV7>zM2g2d9lm{Q zP|dx3=De3NSNGuMWRdO_ctQJUud?_96HbrHiSKmp;{MHZhX#*L+^I11#r;grJ8_21 zt6b*wmCaAw(>A`ftjlL@vi06Z7xF<&xNOrTHrDeMHk*$$+pGK0p+|}H=Kgl{=naBy zclyQsRTraO4!uo})OTSp_x`^0jj7>|H=FOGnAbKT_LuSUiSd3QuCMq>sEhB=V63Nm zZxrtB0)U@x2A#VHqo2ab=pn~tu>kJ;TVASb_&ePAgVcic@>^YM?^LYRLr^O12>~45 z-EE?-Z$xjxsN92EaBi)~D~1OzRVH`o!)kYv7IIx??(B)>R|xa&(wmlU2gdV0+N+3% z7r$w5(L<|?@46ITJZS5koAELgVV_&KHj(9KG??A);@gL`s1th*c#t5>U(*+nb0+H% zOhJG5tth59%*>S~JIi%<0VAi;k>}&(Ojg!fyH0(fza!1kA~a}Vt{|3z{`Pt@VuYyB zFUt(kR$<`X_J&UQ%;ui2zob1!H{PL8X>>wbpGn~@&h__AfBit)4`D^#->1+Qn^MH9 zYD?%)Pa)D-xQzVGm!g)N$^_z`9)(>)gyQ+(7N@k4GO?~43wcE-|77;CPwPXHQcfcJ^I&IOOah zzL|dhoR*#m5sw{b&L=@<-30s9F|{@V05;4Wf6Z_1gpZnJ*SVN}3O7)-=yYuj2)O0d zX=I9TzzTK%QG&ujvS!F*aJ8eqt4|#VE;``yKqCx7#8QC7AmVn+zW9km3L5TN=R>{5 zLcW`6NKkTz`c{`-w!X9zMG;JZP|skLGs7qBHaWj7Ew!VR=`>n30NX)7j~-RbDmQ6b zHr)zVcn^~e2xqFCBG4P$ZCcRDml-&1^5fqN=CHgBVu1yTg32_N>tZ;N%h*TwOf^1lE#w1$yF$kXaP|V$2XuZ+3wH4Ws6%U;^iP|c6`#etHogQ+E@+~PZ1zdGAty6qTmBM z>!)Wfgq~%lD)m>avXMm)ReN}s9!T_>ic6xA|m7$(&n(Z&j} zHC=}~I(^-*PS2pc7%>)6w}F1il&p*0jX1z)jSvG%S{I3d9w$A|5;TS)4w81yzq5f8 zZVfF~`74m1KXQg|`OS>;FCgZw!AL;2PV{&8%~rG!;`eD=g!luE0k40GjIgjD!JSDNf$eW zZtPMF)&EH_#?IwVLEx&Tosh9K8Ln4Pb$`j2=><6MAezsQvhP#YNnw&cL>12xf)dPz z1tk;{SH6HDcbV0x(+5=2n;A->&iYDa5Zr9$&j?2iAz-(l1;#Vc3-ULyqRV9d0*psG7QHE! z*J=*^sKK?iTO$g*+j~C?QzzIu`6Z{2N-ANrd5*?o%x& z&WMin)$Wq%G!?{EH(2}A?Wx@ zn8|q7xPad4Gu>l^&SBl|mhUxp;S+Cb125`h5aBz9pM34$7n-GHGx*=yqAphZKkds7 z$=5Jnt*6&8@y80jNXm|>2IR<$D5frk;c2f5zLS5xe*^W>kkZa5R1+Am34;mo{Gr=Z zD=z8fgTHwx%)7hzjOo9*Cogbru8GgDzrE;3y%TR+u`|zz%c0Tyd8;#EQXdr4Rgx(2LPRzVI2FwsbXwnF;DP^fg zdYOd|zU&AqgCJ;R+?oSgEgZM`ZX>7&$A-j2m|Tcz4ictXoQkz6Tr<2zhOudU16k<7 zLdk&FCL>=a^>0gV@m#9SnMd)R$5&1mh8p2McnUbk;1|C;`7pPkYjf|o>|a6`x`z1O zt>8~Q%zHX%C=D2!;_1eo3qfbB4QQK^{ON_f*7XhLk{6sr2(KIVmax}fUtF-zHZiUd zHPb9jidV`dE;lsw?1uQH!b%MvPE|lh9-8R_z4^PC8{XAf?S73(n*FvYPoMES+LfOx zcjm4ZZOmKY>M2e${QBVT+XnBQ(oC0fAYcXi7+=}_!hS9m>Y%G@zxn3z#Pb;bJ~-kI zAHNmWgQJp$e8L-uKQ|c4B;#0BTsfRB+}pl7xe=2_1U7pahx5S$TVbRnU0oi1?Wh|A zR7ebg9TK1GgKa4@ic#q_*<;c8?CkjX zMMyq`J()_&(j-FZY7q%z6CN^a0%V{UL)jmrvEg{doZd?qIjgJ^UPr(QUs`68;qkdI zzj_XBQ|#K2U!5?fmIEtXX6^rFY;h4=Vx<-C(d;W6Bi_Xsg{ZJPL*K;I?5U$=V-BNP zn9pKiMc=hZNe**GZBw1kVs#-8c2ZRjol}}^V@^}BqY7c0=!mA;v0`d|(d;R-iT|GK z>zt>Tt3oV09%Y;^RM6=p9C-ys_a``HB_D-pnyX(CeA(GiJqx7xxFE52Y`j~iMv;sP z%jPmx#8p%5`flAU(b!c9XBvV+fygn`BP-C#lyRa;9%>YyW6~A_g?@2J+oY0HAg{qO znT4%ViCgw&eE=W8yt-0{cw`tMieWOG3wyNX#3a^qPhE8TH1?QhwhR~}Ic zZ^q$TF8$p0b0=L8aw&qaTjuAYPmr-6x;U*k*vRnOaBwb_( z5+ls5b(E!(71*l)M&(7ZEgBCtB{6Kh#ArV4u0iNnK!ml!nK5=3;9e76yD9oU4xTAK zPGsGkjtFMMY3pRP5u07;#af?b0C7u) zD^=9X@DRasHaf#c>4rF5GAT!Ggj0!7!z?Q-1_X6ZP2g|+?nVutp|rp}eFlKc8}Q&_ z17$NpDQvQolMWZfj0W0|WKm`nd_KXYH_#wRRzs1aRBYqo#feM}a?joONn30Z4Z9PG zg1c!_<52-9D53Wq4z8pUzGkEFm1@Ws(kp4}CO7csZ-7+b)^)M)(xo}_IpTLl7}5BmbBCI{4>rw>4c_gBQHtRd5Z=SW&6Qp2qMOjr3W+ZRmP;S(U+h=^BHKohhRp6Zgf zwt&$zQXhMm@kh1@SB%dIE*kFDZym3Mky$NRljX?}&JGK`PIV1C;Pf!JV{hb4y;Ju- zlpfEPUd+mV5XQH<#BRFhZ}>b#IdF?a?x;rBg-v)@fZpA?+J{3WZjbl3E zv(a&1=pGYPxP@K!6Qg5Vx=-jwc=BA{xL3+QWb&9~DGS1EFkIC+>55{dvY4LV@s5$C zKJmCjigp7?m27*GN_GROz}y+y5%iIj=*JTYccaFjvD&VN%ewfSp=0P zspdFfDqj?gs!N64cEy5uR~wD>af!1PE*xo{^a^8BPIL2=U>B!m2AM0Jf<8qWLoHxi zxQfkbbwkRXgJgLW_j{ZkCxHLBU{@D6T5u90UNs5P769Zei|C$@nA5$L$4ZvxQl1i? z8vLHg17}e{zM$=&h%8Swbfz7yw~X^N|7Chp1bC(oV72l#R8&%Ne5>F=7wR(dB; zkDX!%&fxS19JBjP<6H7+!dO`nPLvB~xn{aDh#^iHKP|A5UQlCG%v%x9@q1w2fa#&% za^UwHu!~(qrv99G%9_e4OBbJ-CkB*1M_?t6UXZ#}4JFDzB|x(1Z}ckuiY}${zj`eVo})!rN8Je z%h2CVJG1$K$2deXx^h8trLs~Han^e>_-M6@0o4C7d548|#mKtm@DvdVAX5ZzA8=*! zKq5C+cM9u)qJ%YBJ1UAcG}6Ji4=$piaZ(K@>1BiD;$R9bR*QP`dH2T=)dgW#f7U)S zZ~i#VYLOnUZt^~Iu3x8QPJaHVUxtRyipQ+tbmWKl14iW1!f6JSDvT$xt8>~7-1ZlJ zU|)Ab*lhvz-JO!$a}RBH9u8$=R)*qeD@iS@(px~OVvML-qqO5&Ujnhw1>G~**Ld{W zE+7h|!{rDZ#;ipZx4^Tcr9vnO)0>WFPzpFu*MYST(`GFzCq*@Gqse6VwDH#x?-{rs z+=dqd$W0*AuAEhzM@GC&!oZa1*lRsx>>mP>DNYigdm^A~xzo}=uV$w#iadO+!&q_~ zT>AsHXOEGsNyfcJt2V$rhGxaIcTEvZr7CMVEu=>l30N~52^71U^<_uw6h@v@`BA2! z)ViU+wF#^$=5o44TpOj?#eyq*+A&c0ghrt8%}SiK)FgLk-;-^+ zXt|1}1vcKAAuR|?L*a8;04p%!M~U2~UC-OJK)DMtBQ#+ZttJgDFNA4zchA*T)cN(E zmpIMLU*c*NrCSV^qdLXD751DsO`#V#K1BVX4qI-B3Rg(zcvlg^mgY^V3Q*5RRQ4-8 z_kAlUisma2SNEx47euK5Y#eu_-gwRW0}M90hEI}eIJ9aU?t11^jSCn4>e~XLSF7Y3 z7JF)1ZbS_P<$<#y(*u@w!jF4FW_f~bxzi%cgP~B1K5N6GFYSAf=D_s5XomU0G9I%Y zPWc{&MItPR#^Le)?zsRkQMmHx^Cnn&;TrPzRVG`wyNH*U;|r3^2NY(z0lwikP}cWF z`p%R@?dy*7H~0&3ST>L9)b7#kwg+|n0#E&-FNf+Z_t7tpa711FogBPV`S3MW_FMGQ zJ@8Z}qXR4-l%p76mvcH`{Fu(^O;8H2@#LZUH#9p6!EX$AEYV$c`s zkPimL3kv>y=WQ+?KIAuim``%cAeBhA6g8}p_*FBH(#{vKi)CIz_D)DFXPql*ccC}O zRW;+Y6V@=&*d6QJUbRxPX+-_24tc-hYHEFaP-IAj*|-P5%xbWujQvu#TF>xigr_r! znuu7b(!PyYX=O#>;+0cGRx>Sy39(3y=TCf_BZ$<%m#inup$>o(3dA1Byfsip8S975-iVe7UklFm|$4&kaJ!n66_k-7-k}Z_?){LQe&wTeJ^CR{u6p+U#4_iSZZ1wjB-1gVGNQqnkk*-wFLj(eK8Ut{waU zb1jwb2I?Wg&98jSQWom8c?2>BWt*!3WQ?>fB$KguB9_sStno%x=JXPEFrT|hh~Po2 zSPzu3IL10O?9U(3{X8OLN-!l6DJVtgr$yYXeAPh~%(FECDe;$mIY7R4Miv1GEFk9x zpw`}E5M)qTr60D^;a#OCd0xP*w8y+my1^l8Qd*V`wLoj)GFFj;;esW2PMO=sbas{yX6asXIJ$|LW< zts$A+JaxoM({kv+2d@#bhl?#V#FZn_=8tTTvup?Vq!p!46W{be)EP=VlYE|UzAU}) zz})UzJVWi;9br0k&5>}sqwa_`TP*c}^$9+q)Dks#qEVg>p)71sqKF-YLP@UF{(>lp7;CHAWK;K0TZ_+?>EtZKprfU@;52a1IU8HNx-mnoZrb8| zP8FPb#T$0VE+G-l508;d{DSfC6#dbp(j|^i^I3z9?Qmkr+(dw^w??h}WTN{_ls-GuE~lF;1Urgbtq|Ud_r>wecb@?{{z? zX>X$&Ud+(I(5}5d^>&Z2m+qy=h#vR*lS084ATwUWZLg6PX1Ft+YI`0iI)ynij}{4X zrQE!Mr1m^-?kw<|VT0mG+5J{!;j;zJT`?_=P*09n+=e``CN|7rC$u~Ksg7LSMS(Q~ z51!n1htcK0q7*K-*u0?c8ZlvPXcNwXmFe0Or2}}R@?j@{ECCNZ6va1tZ>|ZOgGZ1j z9?mRkeSK%{X4O>J$@hyFsD)7s67Uldb>O93wQQiV%-FfbEY_@q>1VUstIJs|QgB`o1z**F#s z^joAYN~5{EQ_wZ~R6-nEV#HsQbNU59dT;G zovb$}pb=LdR^{W2Nh~8yWfq*vC_DvJxM=)2N`5x+N6Sl`3{Wl@$*BYol#0^idTuM` zJ=prt$REkxn6%dimg%99{(Dt6D67sTUR6l1F@9&Z9<)XgWK#x zVohUH6>_xRuw1^V**+BCZ@dZj97T*67OBO>6UUivH`<@ray~ym^E?bO=vKqFfK3Kv z`RKxs4raHacB<(XAeH`@0G*K2@ill_U@m=icT@F{k1PU3j4VBde`ThtW8%Z~A>)45ARjQCDXbH}_rS^IxHGp#utBEj3W3KSAU+$6I4s~9OWueETo!J-f~+DV8< z+VMtdcQ?M+?S}kl&uImYiIUJ-K0-te7W4sdWpS6Fqs-I!Tj{8Qp6lMn$Zm8uU)s{X z8|O}HN%8sEl4em&qv{VBq{}$@cCG{B z5~3DY$WRYSkO~z=sxRct5^G5bPZW;LF)(zY)HREgpRrkYV@H3^BTD6u+bJE~$cqr< zw@Gb3^|n*kHZ%Vnu6~B7pB4iM0C4kDuk8Q1R^<(x%>|sCOl%CTe^N)K?Tiepg?|#m z94!og0*38u|67h%*!)SJhUdvFimsktaqp#im9IpH-$fQc79gi259qPkEZ)XU?2uWW zRg?$8`vl;V%-Tk+rwpTGaxy)h%3AmF^78<#i+Q6~M4#>J4`NNEEzy~xZ&O*9q%}@7 zs9XBO#vSKSM<-OjPIDzO9JiAYFWrK14Am{uZT=S3zaCu~K%kZo&u*=k9L#xi6vyaG zQFD76MOE&=c1G;7Zivp<%%fRq+@3wgZg>k@AYQf|*Qyzy$tqc20m?F5nGbG@V#gW` z8RMb2oBxgiqa?)_G6&-;L#(HCoaJrs_ED{IUZ^$~)+e#0iZT!AJDb2V{Sen*70TO& zyI`*~#ZdLFhYP_#DTuoqQ0OS6j0o15r{}O&YoT5wCp|x_dD{#Y;Y}0P1ta?2VEh4* ztrRN5tL6UvoH@M9L z=%FKpf@iSp2P>C(*o<-Ng4qF#A?i!AxjXLG8%Gm`$rZxw;ZqSvv5@@sZ|N*~do5fb zKWR)T_>`kxaS|MHFh`-`fc`C%=i@EFk$O&)*_OVrgP4MWsZkE2RJB(WC>w}him zb3KV>1I&nHP9};o8Kw-K$wF8`(R?UMzNB22kSIn#dEe|V-CuMw8I7|#`qSB6dpYg$ zoaDHj%zV6*;`u`VVdsTBKv&g75Q`68rdQU6O>_wkMT9d!z@)q2E)R3(j$*C4jp$Fo z2pE>*ih{4Xzh}W+5!Qw)#M*^E(0X-6-!%wj@4*^)8F=N*0Y5Or+>d= zhMNs@R~>R9;KmyP@I@bpU3&w?)jj0rGrb@q)P>wLVbz1!TZY$#+H-mK6B^0{vdvt0 zaJ0~7p%I#1PpPm1DvBzh7*UsCl^I5^`@XzPzbg+v3T_WyKN?TJ9J=57v^IUO`aQN} z@>Y>WIj+gT@-sobU-tW%L5GP(qY?Eep&I;@osY}O*3i1Ar?Sv|EI6S-pK_!~*A$K| zs-hHESqd`vv;zIzgv2ho5-hsIL5Ke~siJ(v0`Qm7W_Rms2rB67=p&HGRhA-)$p-BS zvXSmgGIGgeJMBcsgp=L8U3Ep$VPBFhvJ!3M5{pocGBS~iZj0({9Jt9nbC{Z$LVb%= zGqzRBjlqkAU{#sOX56})^QjX;jQ26M`poAFIZ#H31td9sQlgBBrfIYgDC9+kO~}s{ zb1i*{#{5tPWhv4pecAZygXG>?5xKx7iPXd?nR;QaIfhlhqNBaLDy>9Yd1Sf3P!s4~ zhfHaFGsIFy&ZM=6^qc>>V>o!zk%5Lk5BtS7oU=YfjWUN;c zrh$6Cyr%KC@QNTzTZvb)QXQkV)01MEY+EzC%CJx)Q&6MM={paB}Dp=qCn^eJ}5LeXG9Gqynt0ir>DvSIZ=i?*_xR3=% zppf1w51ypF2KL6ug zCm}eCi>&>xT;Idzh^PmtDWrU(&eC2hAt(nmd#?;W)*&4lb2Z2Ykv*XLNDEm`_1n3C z`l!wZwiF9b?mN@z?s~>v%hT01C{E3md6M5_Xi3fKD6s26Tt~Z>8|~Ao9ds!cF_Y1| zRG>!=TD0k0`|T*)oX!SlSt8g4Uh@nc(QosCoen@i*ZCSyh|IliliuhEw$8?4ZL9N2 zMQ%%S=3Tj_QilhHW@cSr1UYTtDem{A-ZxyCa$K9A%(!`X_?ieJzXbfERST|JxqmbL zHe!hSqYk|!=!$8CJ5>q}Pj63@Q#PO{gpVb+0-qHFM`j5x_s#~dxvy5u62vywq8upP z_)N)3n9cn7YEf2D8L}x0#_B_~>HT8;;8JC5q+}1gEyd%XqYvY?deQzwD1Lx{ghI3; zv?f;&6CY$H&dDL$k#)hb)5lIqUZ~oU!z)hMI!B9THhw?9!}ykqpFJ|hB?JjV9uwqb z3_70pMV^C7I<3Cg&yMi8JJ3V2gYTOMV=IopfZ#1o>&+j-mB-V${Ok(f?I3{+vR~zE_RR$?9xI~^% z53~ z&bCl+6UeKkUWJ-%mnK{9K>?(3BM3C`@xi}v8)q#;YJhMr5dWvMtAL7X``!bHv~(%m zH8d#Q4N6G~lEW}aGn9ZZNT?v9bV$emf)dg#ASDV?(nu+wpu!_X;(vL<<1zBo-~X&N z>keyizVGaP&c65DbIyEwFn2%(L`P424ZI3nFBA%w{yJ?E} zlwSKF;jIhs(!TFOdMUW|(=qHjr#U-k>`>1u1_yL5Gyy;7@WTOt_)nfIp{D9kwR8f0 z;^Fq=iF(&yd|z30&+I`FBM-P6ouHQ@96TkIe@9=pDDL#_zgXos)-ri5lX-&2D~DsI z4R>xVM$c&aFLgFjwq{1I;jpODOx|n*#@e2+Wgdkm(E(Fad_)peD`1^CJ2TpglmgoC)F(Z)F7y2rzzDU^4wvO{bzw{mzSs4tF;*qabKkC?D!j!tbF z4D_6zbqFVI>n@2-Qmg1BiDdD}>E(72)aMv1Y9duOxwlG|E!L(QmQ#j5vmN@a7v{zIt3qQSP?96^$ITE=h~sLn|N|v8YqmA~-0HWgcPHZ@!3Dzm2X{Bozc{qm>J`Ehp}`FQ%Ecbw%+|H8f`pykvo-%&0a z?&ZtJF*{#AYs8Z|z(IFI8sBiZs)L!C9#1W@;hEInZZZdPz2ZnmhoSP9VHQt7mzZUZ zhM!!5IJbe4Z@zEoMjKaxH&Px8p}1<0YmtWwcG@ZPY@*oQSteU zRy+W=Rs>sJ##v^8EJJt0=5---o<@^?fOEp=N<~xXvcf?$gXD0zVHziRMMmC#Mp3o ze(eT!dvjmXp9_C%pV_>{H=nsqYO)n1J?Ihi zjy7f00`|S<;)I!ZyUO{~#+wXX)z(BWsN|$7n9s}H%ZzE8YQv#vRTHjq@D%tYyfe=3)|7jYxRT#E16nFk&1jFC6CH5d4kiJCVq+%r_$Rec7=G!GuZ-0*$5N2GqXB(dqWPS1Um4{xgi2k=;eO_LDy&GR=Q!)bjKY{f!0yoc0Rol&!E`2BkI$5y4U^*k0=GyL-m8XJL%8prM%;fwyX9M^ zs48n3Oh#a>FVWI7dsm~*l0$^J)lxnfTTw~1ceZ73yNvNurwd`;+^1XuucaFN85M8? z$fNl!D9g*O>6IE^POaoDq`86Sw0t4%jIi`&*EEZI?wwOiEvH8(qpfyDvAe`4pWf7k z3-pFgeT{qtj)B!1ZamZ5g3z6Nd40P(%^Kf@#!uzbIk~8w`9wbhWc~1E|sw6-FsOqrhb2DLDwlaq@)Y zAi$KoA=Vyn=Yxqxtf7wu*$47Ht>WZi{AdeN79#9ws~CtE;~gC$q7T>*5yKK3VT)Q=sllRR}lBIGd17+bOu| zeUeUrMgF=Gjk-{epAyUd_KNgwZK_Pz=H$+{4~E_ZRa3IJpU~IZ5U4Z3l%u3{Ls~`H z(iysmm+!HBJTC-$EpHM9yrXUM^_FZ(3sdmsyZ6=lU8bb3V(WK>P0$l~#QA&NMj@OA z*OQ>^-s_D-bda022~!G!bTh7@FR>t!1r`Js1;4$(^_*hH-_pUPf5C}K-v$%i#KBB! zU{~a7)R>ix z#LA|<6v#rwKkB1JBLWkWu#M0#8i1J0e4dFDP3jrlFfxhkDs%Q~)e6e7fR$U?e$<{x zfZb0?UMsB|E}Fk)@|^{)_^L7O%rp1GRNig@bUX(^6}6HoGi8IXoSKpI1A(GV)uA=7 zOXG&KjZYVjYn6}2YV0yfnKsnpDlF)h$Gv--|6$BsWFg|IWnp|#sk}zOAb6Bb?vb@t zs^7=4IdiKE_rUT@rG!D4Zy zcnas#XT77V&%igMXY(lQS|)lgO{pN9!P-94KeZH_+PK5jESYCSPMN)=D(JIAVeB%D zI_>_lvD;pylkZ#Ral0IzC6ei$J$4NnGw(pnVd`&aaNT5mfq-4)aPjj(v;`VvJ6Xxjm@3DX+Kju z@9-h++s7x>idTEL zd)ptYy?P2$S*_DI;eMR0ZdAuS)~fGEZEguO&+3AwW@Sw$&KvgJr6aGK*Ar;0wx`lr z7V&!+9C7`VcV^t+Wj~AweOGQL!)0)serr$8Fez7kC(VSVRdjqpQuq964RW^2euIre zh10&Tv)|dj*CoRozrW<4y_+5}3EGRok+G7ODl3-CF1r?JYDdw&NbcVT=7ljq_K+8bMeG3uRw@3=cof?j+v+WaKI`WqwByf#7aFK3 z0+R34xQ-6nxQ&9xJKl}`C9FlUe1-h^i?5fr5kjot#MA-$%k106t>*gM+yF3m2X#=1tt07`cK)37dA^A4d8%6R>@0U-UZ~wSvzMlK$tlm~aK`%e8|quXyH`aLM0#Dcu%sqEsKV%i zVn_*W-Qbnl)h?RP>)$rZ5JL!*H;Z{ zk7(FB`lo~h&zB|S6j-Na;y$QM*rn^tkO{>#DWZN@IwJps3*Nm&ox0{{;=J~hvPb-* zvAOEPImrdq()yl~`j`Q;R1Y%CdLKKw*;gtNaM~WDO95YXsTjKCOdRD2Is@aVRTYFD zpS=_EB!@Ub&c*JmNMF=F+)Bq)52|=83IEG;M5(Ol*97!W(S-5X-5w&7->`1Pw-0Ml zpA>jaofnyPQTCzoIG}OK9j^nn>F>jC#$iSnJY8y6ue4nxs@3HtfNx01XVK7NcX#Cu z34g-z=0!7ip&@wI>>6ynJYyFTEgH6DA?b>~V%2s_@NPDza5&6cno!S(|85*74}6_M z%s1c4`B{lqMu``(4~Jk#_`^=tu36TgXPv_}{lhhyi(rrSM_uoVVNuZOuxCXom9|wg zNf&BtzX=hVi*4dG&1J!^QW;O%fQ$jVH=W74B8WR)*tM1{(@cHRqiS_W6R^h8uxd@zV>KNI zR(-LNNkLqh>e=CmL|q9sRHm#15%q$o7_GQMp8FLX-HGnJ<+(;k{Q%+Sk+!^mM+2#1y9+gG2IDZGt%;Cfk{+ zT5}^x=!i2$tnH_se6eC zkn;kK>%ICpo=X&=cSsbxQ|AjJ;5Ff;AyIj>$YA8cw*?W^Nn}S|1jrbf@Bd zr82I8KlOh4#5C0sw3oVvuC0NFPKH4S0$~F$U4JM1Im$B%%oGm_5$Lnr{#Pv}eL1k& zMP(pG$MI^8&!nYffq#$zJ^3GF|cC%2d4V@qKV#fu6u2O

k)oKu82Fu=RODzQrHPEC+Mz{hW(G7VuCl8g1ou-Ot!41bp_>OC1&@A_6e*hc)1X zMuDvzEZyB*fW1^+7dL0%ofr;-xT6B@0~|VazatI{60!X=po^uOr6UB$1POKmuI_&b zOL&O+w*!>`k+y%?Z|wm4$@_1|WC|pKM(F{k8TR$-4hs?i|GBc9)qa{vYq)~5qa(2N zsR?s}0Pp^ufVGEB8oE9VCFa0K$x0HSpem!tIyR69y0rnjg8cqjmWyz7*Kx3~X> z|BZX}Y;oVB1HX@l9_-y7dI*WgruY@?rC&64`}3W`ECA>O@Y#Q@JS<4WBF(QbwJqHM zt)fE#6jTSyZ^E8y0INaIf!omWjvS=@15`O%V2CKg+}z=M9##kLKRN0uJuK250bXVU zwzT&n@30^dzKnlL^us;wClg?CKWEtiEb#zhPVx{PxFQiwEPp^C53zN21EdZAz?3D& zC6fK|_!S5Mq&0z;xWGLEv}!zjfpRg_orp7|fXMx=uP!@X`yT@5(N_Hza}p5fBk&|)J7fZ`NQ9Nz@5xT? zi?iV$q+bG!2LZUpF)>Yl!u;DEHV3!i{ipcJm_8Gj@Dac%N3|SQVGqRhrJ;WOR|CtrwzPTW^&$A6!A$E)h7xohm>hA8p{PUZ~ z_&zeg@OL3PxPtzkfsNZAqXCZ8Is7yQ+plm~8;}|~DEkv&f@?q5hB*OGQYXuwVQOp0 z?QQ`6qyp|-$47wjuV74IE_x2I17$+grwMBE^25d<5!lYhnszuh|5Yk;RB+Uk*hk=m zu73=E^7ul{40{A^?Rg^fq0ZfZO@C1HupR*_d;J>lkFv6&x&}4N;t}1T@2}~AC^<3b zA}RxFPPZe5R{_6dIN9N-GT29Oa}RzA2ekKuEVZbuMOB?Xf**`N5&m}?)TjigdY(rF z?~+a=`0);TlDa1j)1G`AfW? zRl883QPq=w zbB|bHEx%_u*$t@Yl#Vc;y*?2W^|^NJ)DmioQFr~1&>MSBL_b(YIpGWdDm3bT=Mgm1 e+h0K+-~H6qzyuy}`;+tYAZFmzUSVSYum1yJqxCBQ literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..37aef8d --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +networkTimeout=10000 +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..aeb74cb --- /dev/null +++ b/gradlew @@ -0,0 +1,245 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..6689b85 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..f91a4fe --- /dev/null +++ b/settings.gradle @@ -0,0 +1,9 @@ +pluginManagement { + repositories { + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + gradlePluginPortal() + } +} diff --git a/src/main/java/ru/bitheaven/createastrafabric/CreateAstraFabric.java b/src/main/java/ru/bitheaven/createastrafabric/CreateAstraFabric.java new file mode 100644 index 0000000..03cff93 --- /dev/null +++ b/src/main/java/ru/bitheaven/createastrafabric/CreateAstraFabric.java @@ -0,0 +1,36 @@ +package ru.bitheaven.createastrafabric; + +import com.simibubi.create.Create; +import earth.terrarium.ad_astra.common.util.OxygenUtils; +import io.github.fabricators_of_create.porting_lib.util.EnvExecutor; +import net.fabricmc.api.ModInitializer; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.Level; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class CreateAstraFabric implements ModInitializer { + public static final String ID = "createastrafabric"; + public static final String NAME = "Create Astra Fabric"; + public static final Logger LOGGER = LoggerFactory.getLogger(NAME); + + @Override + public void onInitialize() { + LOGGER.info("Create addon mod [{}] is loading alongside Create [{}]!", NAME, Create.VERSION); + LOGGER.info(EnvExecutor.unsafeRunForDist( + () -> () -> "{} is accessing Porting Lib from the client!", + () -> () -> "{} is accessing Porting Lib from the server!" + ), NAME); + } + + public static boolean airQualityActivatesHelmet(LivingEntity entity) { + final Level level = entity.level(); + final boolean air = OxygenUtils.levelHasOxygen(level); + return !air || entity.isUnderWater(); + } + + public static ResourceLocation id(String path) { + return new ResourceLocation(ID, path); + } +} \ No newline at end of file diff --git a/src/main/java/ru/bitheaven/createastrafabric/mixin/DivingHelmetItemMixin.java b/src/main/java/ru/bitheaven/createastrafabric/mixin/DivingHelmetItemMixin.java new file mode 100644 index 0000000..fabe5c3 --- /dev/null +++ b/src/main/java/ru/bitheaven/createastrafabric/mixin/DivingHelmetItemMixin.java @@ -0,0 +1,22 @@ +package ru.bitheaven.createastrafabric.mixin; + +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.material.Fluid; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; +import ru.bitheaven.createastrafabric.CreateAstraFabric; +import com.simibubi.create.content.equipment.armor.DivingHelmetItem; + +@Mixin(DivingHelmetItem.class) +public abstract class DivingHelmetItemMixin { + /** + * Activate helmet "if in water or lava" -> "if in water or bad air or lava" + */ + @Redirect(at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;isEyeInFluid(Lnet/minecraft/tags/TagKey;)Z"), + method = "breatheUnderwater(Lnet/minecraft/world/entity/LivingEntity;)V") + private static boolean redirectBreatheUnderwater(LivingEntity entity, TagKey fluidTagKey) { + return entity.isEyeInFluid(fluidTagKey) || CreateAstraFabric.airQualityActivatesHelmet(entity); + } +} \ No newline at end of file diff --git a/src/main/java/ru/bitheaven/createastrafabric/mixin/EntityOxygenSystemMixin.java b/src/main/java/ru/bitheaven/createastrafabric/mixin/EntityOxygenSystemMixin.java new file mode 100644 index 0000000..dbadb90 --- /dev/null +++ b/src/main/java/ru/bitheaven/createastrafabric/mixin/EntityOxygenSystemMixin.java @@ -0,0 +1,25 @@ +package ru.bitheaven.createastrafabric.mixin; + +import com.simibubi.create.content.equipment.armor.BacktankUtil; +import com.simibubi.create.content.equipment.armor.DivingHelmetItem; +import earth.terrarium.ad_astra.common.entity.system.EntityOxygenSystem; +import earth.terrarium.ad_astra.common.util.ModUtils; +import net.minecraft.world.entity.LivingEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(EntityOxygenSystem.class) +public abstract class EntityOxygenSystemMixin { + /** + * Make air exists if Create Air + */ + @Redirect(at = @At(value = "INVOKE", target = "Learth/terrarium/ad_astra/common/util/ModUtils;armourIsOxygenated(Lnet/minecraft/world/entity/LivingEntity;)Z"), + method = "oxygenTick(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/server/level/ServerLevel;)V") + private static boolean redirectOxygenTick(LivingEntity entity) { + boolean createOxygen = true; + createOxygen &= !DivingHelmetItem.getWornItem(entity).isEmpty(); + createOxygen &= !BacktankUtil.getAllWithAir(entity).isEmpty(); + return ModUtils.armourIsOxygenated(entity) || createOxygen; + } +} diff --git a/src/main/java/ru/bitheaven/createastrafabric/mixin/MinecraftMixin.java b/src/main/java/ru/bitheaven/createastrafabric/mixin/MinecraftMixin.java new file mode 100644 index 0000000..29966e2 --- /dev/null +++ b/src/main/java/ru/bitheaven/createastrafabric/mixin/MinecraftMixin.java @@ -0,0 +1,20 @@ +package ru.bitheaven.createastrafabric.mixin; + +import ru.bitheaven.createastrafabric.CreateAstraFabric; + +import net.minecraft.client.Minecraft; + +import net.minecraft.client.main.GameConfig; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Minecraft.class) +public class MinecraftMixin { + @Inject(method = "", at = @At("TAIL")) + private void example$init(GameConfig gameConfig, CallbackInfo ci) { + CreateAstraFabric.LOGGER.info("Hello from {}", CreateAstraFabric.NAME); + } +} \ No newline at end of file diff --git a/src/main/java/ru/bitheaven/createastrafabric/mixin/RemainingAirOverlayMixin.java b/src/main/java/ru/bitheaven/createastrafabric/mixin/RemainingAirOverlayMixin.java new file mode 100644 index 0000000..60a1d7c --- /dev/null +++ b/src/main/java/ru/bitheaven/createastrafabric/mixin/RemainingAirOverlayMixin.java @@ -0,0 +1,24 @@ +package ru.bitheaven.createastrafabric.mixin; + + +import com.simibubi.create.content.equipment.armor.RemainingAirOverlay; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.material.Fluid; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; +import ru.bitheaven.createastrafabric.CreateAstraFabric; + +import net.minecraft.client.player.LocalPlayer; + +@Mixin(RemainingAirOverlay.class) +public class RemainingAirOverlayMixin { + /** + * Activate UI "if in water or lava" -> "if in water or bad air or lava" + */ + @Redirect(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;isEyeInFluid(Lnet/minecraft/tags/TagKey;)Z"), + method = "render(Lnet/minecraft/client/gui/GuiGraphics;II)V") + private static boolean redirectRender(LocalPlayer player, TagKey fluidTagKey) { + return player.isEyeInFluid(fluidTagKey) || CreateAstraFabric.airQualityActivatesHelmet(player); + } +} diff --git a/src/main/resources/assets/createastrafabric/icon.png b/src/main/resources/assets/createastrafabric/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..46529c7c94da12f2119709c4837a4d67cbf74c1f GIT binary patch literal 60303 zcmXtfWmH^E)9u0C9fAfzaQ7fV6FgXOcXzko4uRnA5ZocSyA#}9gF6iOJnvoK{Fzy^ zrcduK>#AKf;fnH7XvoCK005wU{UWXe0MOt^XaEr&e7kX7R zx?;8#)xdZCF^)nq^Z{zdD+-6;Ym(PblhNaL`RwA%dknt*@W_!*ld01glP-@`-7~9h z*5et^e0xIg2t$S~^qOPU?OLfDB)5ZUHows!7mQhMi3RxQsBU}X|GfT!t)17U!7H*W zA|A8j{u!8b*z`dEG#R+#5rgCIe*i@GWnzh`Av!~w^XHrd9rB0C=ior=%;w;TIz!9T z`2V&PPr~cNOBCloPE}E5|G;1@{r^^n7gp%*#5#@~+LsTe(+|YZj_<$<v+oxpp6Bmc%meU^1Ry-L}?#fl0 z0~j*egNtVOO2v(!AYeL3z6gh!NalEFIBGpz*5PcpzR}HD^X*#7)|oUX^L;O)Y4Foh zFRR9VRcD5}hL%-p?$Eg19si?=glz}s;hv7XS9i=M3bq0^JAcJs@wTTQXAya7)QNz+ zb3yjwsKNur^hC4)KFnQrAFI>NbVadslQvez(#d|4d&Vk!Re~P&#f5|~%jESbsmVtj zgn=R#AFAI9^0Y(4>Y{d;VUCl6wX^s}}^`9!ddrN6wyUfQdQ zw~g-X+ugLbsOC}$?Ydmn&l>I{J$i7cw>M!{_|ML;xF|MCwq)fQepq4S9$jEXtc%g|G$BsI z+4Ypd^)KbdiIY=PGJNod&d_A@gTCGDt*<&{#0%)L@(CLZ?~}+^opDaAhZvd50e$@7 z!N$T98PQdq0Er$Kn$I15Jy}<&jMAg9ulb&D?kZlUIa+VeE4KA+(-Ywa_z^zR>>elG z2ZnO0g-M-Ews1h%K9Mq&z+73*Tq9+Sa(tfSZ^`;sLS~D=w^LAKD%; zusYqXBx*1X2X9ie!3Ar9%Tt@pcZWB>UMjSzOa&2ARtJ!Q4`vNya(l!7jK8KQ zf(`aXzahz^{njy3UVdwLPJB(Tzcxsz167froMko9R?OJ?BrNmzr{Qn%xRbTD7Sv$8$3y_;$8fEuICuc91Oa`A%BjAe-Vy3zx*3j@td&7UqnCzmlyF91)_gfHpC2aBa8w}!l;G&sHBuS zi5&5*2ik2kFI_P#x3ESMczx&4kV4#YB_H-~DiVKE85;DmI7pbpO{B<5drbU-)u;S) z^yYK6kPZr0*90r4PCx)zd)L0z@#8vR+vmGc-DI zW4!lZYwP~P?4@pU964x-n0R4k&}(i(yJr50E@sCW6j&sT*F77`{EEO?c04J@ToTg4 zO2xaASvUMZBjS(`&Zu(cDc-Xb+|?AJ=jj zpY0=?SvQ+@THNAHjD!u)5XQ7tYQ#&&Egx-kTI_?V9Z$`Wx)$fgD1MCZ8f6{=6=^D-4i z!dv;Z!CZw^Rr4iS;Nl+D;*d;@jkUc&Tu7Dy z+L{>s(;%n0b=xFT9`Gv^RwYD2MFLhu64pI4m`j;esKUrD^rf#Xv|hpbH6;=cdaN9G zE|ix;Siu#uj3?2|WP*?*mF~@GVq1)HAi{+-_$y<4M`x{YeDrE_3&XCbv=nu_WZ&Ec%A`sOz7!2gv;m8iQpTbtXwEubS>F+z~wXIzf zo@o<4;V&rgaF}5T3pW&WEMInx{w{3jp<1HmB3-C?3krB8MfQ{e1Lqh9Le3wRzBGQM zvSVsqg5fa{da}iU`b-S-x@HpQ{y<$o++IOfxAG|&(69tH6awt5}KB*j9&zZ?mAa>12BUv5OFqYvP3}2^XBMjD$ z{SzB;vu$05kb(l*A34v~HkEgMC$phQ5)TpB-HEg~sKv~Lp?4)ua@Z{BNxNiK(V#)M zBBs`^Uk$k0e$f>ZST93A6;6G8ApPE&Rg{ThgsukQ0-|Bp#+^^6@k*ER-kGNgMM!t` zql*rT0}q@6wS&7^SB6joOilW7fv{Ft6UbmB>A*RTBq1q0S*!?*)boY>Vz0X!f!ws0 zoiM#^);i%Yw~QfpEt_498>Zk9X3ep$EbmsWwe&lXgX-9+hSvYNJe|de!dF0GIoe-X z@040*oR)K&5|tUcI4hK}apj>VGW(;^^-=%&+w1&f=fb+20QraKs}tJz)Wl4L+53u; z#D5M;*JYhcn<*hS&+O(_-_47AST#%%dCRrvx30L#39iGVB?B>if7>JQ z0d{dE*STYgzVqJ7t>tcdB6K*$`|;6;Ip@)SKbgU@Fm|!xv1Xhl^~0i%_yEH*$7zvZ z5d~bNyLQJ&#BH?F`a7D8sH4UCqE){Y)kcrU1*lHU3`t*_9V_ruf36A(vf|Cw*koS?y6G7_ z)1PUlJPtqp2=r(rSXNS%p_<7qlL?YuZqXjP)WuUcldX$%Cp1MTrk7Z?|B1GjyUGlU z2nE{0U=!)|h69TLU7VXbRGgWv?WnhtSpJPoapvfeLP!=Rnx7|4aFzl01;?0og*w&N zQ)D^fv(wXA%odWISFRkSthLg~I~#<43PM-F6tzBE8<{9nogrRs$xzrR2{Cgmo?ag> zdLsHj!i%o1%(6wAZjHEmfhDR61G-3?=Mnu0UU{UxuRfdznR^S<;}6x_`M0YUcak&h z2^03B{JoN>11WRk zls!M0Z>I;OFXy#wj&S5K>&ZrQ@)ckZ?Q63IA336aibE~7^+c2{Xl>OV>`S?Wk-%Hr zWAnGmJjU!qFkjQ^%aH-Apxm)Z-Z`S@BLxUTQVmHnc8GV;W8Z%g83ze zF}kMJE`U&N}=jg$d!R2;>6%u00G?$jt;T{)Bj-hm1{iHoX#xq}x1 zb2~z(N5N0Foy#$Q9Dlmfn{naICMK`!#%{PKzCwYXZ)ON562muF`eLBb@KCA!X-SyB z(CE1XRkC=Zy)zWdnZyQbEs>gZlhR4xOoBHH+f(&Gg}x?$k!L+FuvgZADrm7aw7ypr zD>uZI*)CBU=TwM(($Y+r0U!(^`+-oYZq?s#Qo*;Nn*x{%Qk|dhTQAuUlD-ol&wz0} zp)C**Y-ez}4Urt(fnqt&$sA2Tg5`Bq`h3C$7s21^`}*Gjo<5LXT#pl+juigHc6{#H|OMkt9|_7XD?fH=6XRH4wL?+ zfnIk?B>nl$ikg$V;zZ$W%zLkwhyP!GrVQn1>F469`UbNsO=Y_l%H$A;N{IeoH>&*2 zxLrsLD1Zblcl2iOXuR`9<6!FjiBLJs5AKaL*Bj@5#voYBEx5l|A1yvo1YvqD?z!;88eAJs9{SShi5KpW?WkY@=qnkVmCNLhF=tEEyHxKo$m0;Dl z9AI6#wi(&yl6g3Q)?NQ9kh~yEi`dv;!phrm;ll?CA!W7Ewlv61*EF;@Nr3!~_NgJ9 zR`09MW8r-(Shy9&?M^6&K)Ks09490*)Meemj8+0&hRST-F~C_^{~2c)k0lFp0$C z0BWrMV$DNwfGyDW1XNP*ZuSXF?bb3{%d`?N6V9i0f$Ni%%4$C_3yuWs7*!l`EB5{) z0ttPgNxc)4{}vMIBvbh(%`5cF^w9WcPfY{MqJJ%%k3meDINJ#n-GF`KtTs!l1=ye4@ip`D*=>DgD zjd!c)=x#daUGYj!J}~f-4L8aH$_swmI{$=c!2=k;iQu2{m#?<^mOco6%XvOXOF{wz zV~*F*%QN?X_#;R0tjhmW+!-e;(d;e3-4MC&#^1XQ@boocAWJ&sO?e!Y8)fukQd}3F z75=>yJddhG#4p$Izr_kegFB$HV_i+Z`bW~Zd}@6E7z{?yw=hepNLU7-R{!4Mkv2W) zYj$DgU`!x8dX`Gbe%F7f+rY3P?-QucE_bn8Imff%)^IJLf};Ve4plAEif%@>SU+|} zndTQ~k-C|>MucjTn|Ll-1MP2s-vnZ5K0_9OjcCo7Veigvr0sM&z+YH6GWq!iE(TiB zO~^XTTlNGwoeoL0b{ceoGX+vOPb$u^vlb5pKg?}|6)D0I_v%C=ya&^0-+cin<8la%Fw^zKh?Z{ zEdwvBH^K($D?$cfKet_KX-Sb%SC*lp2+D6UtLI-YJFq)b8Pl*xGgeEpN&(D{Ex4ssy&vo$<%n^OA%* zYVR(B9D?t?H?qQ+G>OmSp@zdd`!o0x8-;(ef?p`Tb-}ZFIN#8>mdW%ra2iVC@c;As z_#;M_yKn*w6&@A}@ED&GgCui>i6)^I>}uB@`xr{~(#Zw=z#ZT5dnVer>}`J_t_l6X z`EudrfGP*N-XJR~hh8W@-pkE2FSfx?yWmgW&`qyQH5teejx_3&9~)Q%w5lcp?hu179# zA*&jY;abmd%`$3PpfDZwDm+P3bHdtg#DUt&YU*+ENUbZV4>`z`*tWlgUvVSf$a+8l zSAA3ifJHZL$k>eZXuIj)U+2vQg%36N&5w9&y{xEAeydq|j%`b(TlRaN&y#-7vJuA; zwk>&^DE{rFyT47iW@7mgyr}5uyZwZcy0(<9FU$ywErjc;D z;Tl8PS1Wsz(vPvQahP)E?nq$_vVAh}$F1F?Fa$Kl@=*0yp2SrY?n%ap_h1+ltk7Pgr>*ifv^?6N&uK zIuwV3ncRT$%iUvNMYdn;fx~s)j4CT!SDk>;cioQlr@Zl=RPK|X-w=JT?4bj91}Y!x zp#6uXW{eT61DUGP8+y3skmUvMf3mJ^e|~$;=3x^EX+(?0Uv;Qhn@ef$O?%lKy)@DD z@|*su45J(`@ILg1q*Qo%@=fvByBDZU0zY=&3$qk&O6m|jzn&(v2GK7uV^3Zle8?w< zP{tA8iBc#NWHe)ktF`!6JyXZ)Q}7JB9d{%T81!JIWl^NReZ~bW^2nL)uZj}m)8Jng zaFDI-z+UGra+ zW&@OJ4^jMmKyqZS-#b;~(i!^YsT7vqb4i6)*}eSzvo44Xy~*UZ!A7hitkTeC6=l4x zb=H1~SG%pJEs5!SWu4B|CQ5jA+neUW0f?$Qj~Rfp@m$A(b@r^M5DxHmZH+znXK8a1 z7vAFc^)0RUi9UlnjjcN4i6R3p6AV?#J?GGFh*VRdew`y&8>C_@Z2m~+SrL9tklJn) zz9(C#l0yQY$^>MsrZzjwIv!PxukJkz$@N1{0FAa&_2L z!@QNdcc8w6WEO!;37PLYR^>dn=Nce6e0_%5STL4u!0x6%&|7l!2X{KA3Oh zcV6zZuCf267}reu8@6!O%0QF@ubj{h(gwRjl%-IO33=aK2#fOgkKB{lbJw(|RJRgk zQe6!O30V~Lyj3E;+K+`tp`$PRXb`WM;W;pV4Ren!<}PGk*oZL!Y^^fSElVMq7R6nP zcPF$74=-oTLEiiCjx}qi2zf|KJ&>Fg@?vm{EJkJWxC9Tt}_J@C)`>2z}%se?aTiAmQB|bjvx#Ei_o)D zzm`|}!39|)^LPnW;8f_>%~5-wk<@t*NR@`gVAB+C$k@z2CR>;`=0)P%i;C8 z%#feXz(Q@iSE!%WckJ88!(VkR^k53SC;N_Gsb#5wOIqq^wyW-sLvKK%XC`{Q^ zl`XwLwmHcPPz)f*lTW4}wb2#~SQHx*QnJBXTv6ldF`cQTysN&Bi_*u69sQm@OKvC^ zSbwEZMg4Z0natN=DJ=rC=L2D@QV`c3>O6+O2ZIF7 zL)9S8!!g3D{Zh1FV+9kA56i!=!an1k=@x?%bxd|B{vbsRF*0DKms{MR1-HiFa(&E-;7KI$y0hrc*T-gkn`h#xW#TAd5`o)EIW zdLREg$$T^Lu0I_erSV@o8`(Rt?6=9&_lEqIyto*plkInOdtgCJwWUK* z1cfDhdv)M|_XFH(xDsXqg%k9?YzTpmnrhV)@m%D*69qqm1~hRzM2Gj&-~Y*RC$t$` z*iJ*w&I?OqofK`X6&hp)eExK3-=tt!>4gR;2cCu}r3$mVB73@V3>|$YPbED2g^xDV zN-#tXl<`ID?+*J?%QsN@{>B^r*RKBbcTg^TbZoM*5!IWStea|Q0eYS(QBCNN;N^Xj z&cBzUt?t^7RmlD@w7aqM$&m|bSRkX?`>!`LZwbeUDxOeSaB&j#$@q7+t8`@A`Wk9S zcZzbCCjZ@&fA*pEXVdbNs0{@Sw=Voj9%}A7`!w`V?F`W?RW-e)Y_2^iF!tk`&l@jS zHDh){u4Re;5>uVxc;EoazAV{<>@+NfENb`4)U|(uV*y2DhSH%o z#k23kbz1Zv@H#;t4Gd@+CMS@wrJp~<%ut^wZq5Tgs(5}!!LNnm7Myct%w+4`Y!1l`HP)`3F?28A`#TdaY%K$sZLM;CX#gcf!Gi3ciSYM+ zE_Lqge6Nx7L*6M&rUy*wDcq4|)>7NT8ZlbdulE_m$-U1&lMSM1TEEB+GXM z>A|#0&JT`-3$4A?!?f7f4P{82=PWAanqrM;_>SAx9$){I;^wb^t z+ItUUZC+pgFwSx5b^d2ParX7M(;uv z7R>U7FL?jUSn_E<1a3ULJ4|G~jvo>E|6zwHNMb+$kg*tE>CR3iWf#17((s;HL&ctK zEz%jYQ2NH!<}$j8w{A1F@#@x)YNbq+HZ48Z_N61_|JiYJGP< z|A=b+7Ke)Gnscb{M8xJ$j*Y;glQzVFnj$DFhJ(8>|CZ3}Nz0i%oP+oxt|p>1{LQ)lMx^!^8+yjP&aKto1Lnq3gWS)L>-h4zZ3BQj}J-Iiw+clqYH#ydj6{0 z_K%t?3Q!>J-6)S%!t(c5LCMMVxcBP*Z<8RP{s8f^vmjpiSa{JIKkbOY65KVs{ynM+Etf7JsOo__+66hY0i?2jqa4)S+pheQ*xb;rT}QEubqTW*DaD~F}_nYJM(GV zLNmn2&3*L$+*M%m$bP~rUW{Sc^P)D6)QCY*b@qum|BpE9&AiArfSU!!7ZGIH>|DSe zXi<$O=Z#`WIkxr2WD%rPS~lZf=?3b|UugEfQlQ&s!4{MBk1kLt;!AeX^;X0}h2<(R zgmOxl`Gr)q;pd<2V+>e&zbpM=RGrM7MwYI@t3l~*;s>wAP27rG?H#`Bb@=$u*=`qk zA`=3iR+#Y-XgmwoQP!ig<>sFNSt54!^e3Lg%B=NzH_s{ZPom(CP%ooA6zV!Za*{(a z!~jkJrYrr)oDa6YJQUJ|M9|76ZBh1RTLpyyxLO?cMT=HV+bV`;)-mclK)FZrJ%F$z zMG+I5<2&X7CCm+P%ZDMTVmrjktrk9vc=+t@4^f}V`L!H}zyCXyggrUNL|n$g{6G=U z>3_YEb1=vn!iV*a?d?@MRH1ShpB3AC|5FwZ@^knrr?6MG)?zDe#;e79tN95?m5tosZiOr$V zs81IVJ&G0ffLTqWzfcSgK)j^&?xvo84CR_OQA|46Cnz>R`So7V7BZu>t->JU?9cIF z5yB=*B~kqx7B#9yv_fHijXdhI@wj)>zwwabmYn;8+20aM1QF{)-jgsfDHyZ@c zxIEb-Zo*9q_+9@4F!F`q>{p7%HWN2))vCXU2P{+*a;y+C1>dz5)PfNrzChfNT9VTa zOGO_L4DD}@yj`rhrCB?Cv&eyjN$5MS1I4>qn%AK%x@f0OdEjuhSUY_;Y6r-Lz@@_d zhU@B17-3PHmzIBT6s2&&Yu}UOBn4+|+Li4wGU%bTR`y1 ztETzoz4yCBthxj0hamy<3^lc2I7-D1%P$0+ut>77-;aa*3~OwsY=Xy852b2BXx^`5 z;=)DpW2g@x0t%^(2QOSwGBv<>*f~RAp*0GulY0%rpzV(wFZG~sb)lxF%Y>Bl46Hlf zUTJY<2Nn;7Nsf0ZW@yuX{xg?67U!t9FhW2a;GGvCq_J9{(pE-A8SKUpM$-4(PY!R= zEsJ68D|v+T50vRvo%eTtbC@+Me!>uwlmG0DYqED+@B9t~p-X;~AVzxdvV4U8dvrK* zBFhN*c!UPGB`O`>yc|35?b+~Ht4Yu3O`ta*10fMw-#sPh6-wL6II3QD$}>vtH9Iov zD}~R~kEumfk>>%Dv^&vy)4n$kW4n&p?;AJd0qUS^K1TMeQMD{ z05Ii-@l3W$y}y@IXasK*DFL&MS&^6+s&zNQ%B#KWnDLCGzc2$$NV=*lzGxy_xIlu% z-gF!V(H||714^Q_fh@@6hmHfJsMk9?^Wtts5&eEm@w8)1`kME~*#HI_N9*n6Zc~(D zhMVZj_{PtJy&_BwPzy@rvCPsnIK`U#DgZS?>}2^)HrY+X*vngGkpS2%rHFiz{dDza0@)|2{=a9R~zT_)D}(-&Odjpb0C0(P74PnO|F57zI!u97jJ`q z`){DT&bP^NVU1#cTU!~C%uh&N;PxubBeuK|f+d?%wfk#Wxn8Wj9IQb$auaKCs+RM< zP|6ke=-99ja@aVA;zxituUBh2Y*_wUp?nCZeJJX_i?{?9IF$A@?Gk?dm3=5|seXDC zqjSoupCo|;8!At)u1ZUUZ}c@)-^Y%^=S{5Z02Rd%zX%@~9~@4jF;NH2Ax0N3U-`p7 z=Mm+`Cpj>0X8RePOtGpMZ2v{Pi{162>x4SGDF)4iCS&Foz1Y= z`%?-h(v>UJCwwD@r~+wDd8B2R7q(-o5KGnl~WJ>(;rW@l2Be&*63LoBMtXec9!-( zlNdEl%y}${VwfjfpsfBt^~EZEMi}biTW>&HumzmR$=0p}SK&7Dd!tjqN{Unik~h;{ zwN4};l<(Hf1iw#1GkoY+74iEc)>VQ2!FGy8ve^sHA8RxvIsmq0hw$4ZD_ox3drtWBP4M{p+Bq8KDRo^@WcuRqvGoY z53WYBh?T<_Wx?k%&RAHT>wg}HjHME+N&!lp{+0)@?uRL(SyA>HM2X<|Z;|||xczOk ziXn?>;0`f3_QOcWVSA{(Vcg<$5-TOtew!7yMbkK z=Q7={pqU&_fSe2#-F?m&NpRw%e$k1pZOtVT>Sf`@$-dk0{m*Zxj%tW~FZbr*@55p0 zUNpOvp%t33f99aMNI19`a8Ar?8O+y2QrAyDw-OY&ZOF?aRORFPIHZRiKb&B+qItc> z`%_r2Z$jJva(2ccix2|9=lxaM48?}IagcnTQe*(WC&88Qm7gS3pGLfot|y4fB03bwEg>5>FNyJx|P;}8y|P{pah zWB({@E!?`Z3RaTQfN$0~6%@Z8gJV~FP4A-EiDsw0#RrN^2G($@|4cX@%vZ4ZIG@ay zq1l)lxkKex^sq!}KcBx-bjXY4dQD~NuzY`GG&w8(-s}>ehg<^t+o* z%yPh8;Jnrak$Wz;U@pS({^97v@jw_agF#v+KTJLxQ{T7y6lX`}4yvG{u(_EzxMMTX z{9{^B@B$#KeeqmNqofpN-ej>g5qGqPh5)u~+3;qk9aRP-Mx)c=%ztAGBL|Ye5NQG# zhu{5_%{EQLaeU}KL*>pgnh)*&mNQl7*P{O@+6z;0|F$35J5dbu$-ilSf|c(LQVcO1 zf5952mCcp<7$7(5n;poLKtqnJ1&jYp1WWh_W}c$98t$dDsr9jFhDAH#y7a##w87s3 zA0_l&bQcr42R`hWLRpSVJXd9X@!rYj5$H6Mg@yUA`qokl%jJOxHbe@(vfv(6K_8R> zsi%dR5f;>Xm=L@Z%u1wO#+;lX?EWzo`+rqneqrkX(DB!BC^^id0MSiUHdX!|YkGHf2*g5ptJtLN`%GWm5F~t9^ihw1^{fA^IId7&EAOE@?feI6pWM zucoV=Le==s4b!rtdUrS3q}qQ6By<4#Hee%d9PzJe4)xgkZFd{w6v*YLI*)fmmT+K& zH|b*SE3ecjjafz@PZ@}93v^Avb%xgcDSdT&9yw-pU44NTQIHcQ`UI33Cmz+H^k0u# zSX}21*MWX}RKSOpo)J!i=PadzQN&F5^oEx9mDf#zh zt1{p7-7N&E3SEDBeW0`_jxw)Hx9f>vLse)tpxtM&gY6IZIIB|7qMEXXS`-fecmgm# zur9cG7snONU)M5j_Y)Sn04;7jpb_B8P1GZXLs+&Kmo{k|CL;(V@#>2hwt8Fz^r5xO=UqUjtkPTalMvPLF}ze(*t-Pa6|f8 zGmbAjI_0t2<7{Z+sIeqoa79ykL}T~yjDXhwoOn~nq?lL@^z}J)#?PZAw1XlAr3hU@ zUGuL-$_Wm2K-o#b@v|>a!(OBtzKKs$BPEbs)M z;c_Hfa%hHy_x02PGdUstF3A27-k-9}xYs{?vqCACmgv$#271E3ER}U>yt79^3Sxz( zcy>cDw%&`w-f!BcYb-WEQ+dy^ZsKX(V#X6zWeXTxpJ@b*tAk_G!qt^cpo1_}fWAe;ZrwM=@g>VToTjk|s zWBcjR25TG8VTp4yL0S~N%ZR>c`MsAE*>Ic~0lM)c0Nog4_bC!B$3-v)y7vx2FU}GL z3KV8~Nw>xy)bJngiw4y~Vnr09ez?KQ#p-;K{NVELL~UB#WQDBYV3F$ybYpkt~j0G58Dn<&9<0*%qh@gJe;!9kNh7j_iWcGxP11Sf=YG9lO#}=%TG&?dY z7DlC^SlQ){MWMQ@2gA>v*{2qVg_Xx#i2QMwK59C!(O0$NjoP(9o$w^*l^P@ODe+`H zowhbyI-=&YYvpq$%*xw+jW#}CGWu6jA!J$8ZX&0$Z8__sIH;f$u44{Pv9MzO1+#?^ z>C0o5RjJzApC1^`drC{5>?AA7>FB%55SC^;HB9SJH-GDd&oJ2a%xKwmKQS>V>LrP$ zoc|Cb(pEez4RR1LPi6y0A`K^McQOYzah6GeL^0V*L(ko4d(&*$5&#&}D2%i}G&+TL+F5fvlg z>E{{Bdg3Cd$oW<|MV|{#(OjzVE|mecasYXM+GEph%Mh;NMX%ss7Gz0r49yT1+C4?M zLjAj}{oG9n$L{)?efcXz;bCwgxC=O1)oshQKkdGUeOU)UEOM*rHla7C==QSkxZ(|B zZBGxgTblFO!}?V()YQ6h7z1RayNaTq2!BjxCnpW#Ofigh^)?^XiRNP>8CfDC|J>Z( zxrj8f*H~{x&>zx-Pw}HB2jVs(Hb3kW0MIH0r+@8>#}e@Hdld5r+=RT#P}8AU zqw}!a97P6PNTO2>w7yxDK8%tpR6Ztqc|YS{@uTQMU$g|VFyC-Z?13}f!-OQLs8Y^{ z#jc;d9(_M{LRd!@D!Su0IRg%b1Rv595xNy4CibiQjaAU{r78!)l%T_v6{&9XXJ+6! zAMQG3ssh)KP>2;atG3GJEo*!V8&tOAWl!=&F>ACsuQf31wt9rG&&om7Br?% z0ZM8S#AE!lz7|e$1FJVlN-?QiH?BbECXsVnsCu6L>wE+92r=iY2pZlld0N+ww3(MM z3tPkt_)gXcLx($sBWJ@=!Bzu0Eh$>} zAK@RI>+cB{2unId|2X7U)#QxH-!TZ6FmdcBl^UmQUeL`y&}t2-yp8Gmc}~%WJ7tGv z3Hf3os-~u_k=z`8^CyMptt$A}S8yDPPNr*sEYSlS5%j1~IM|Pw5drcJa2B%mSP#Q- zM>Q~n;+>m63MAxW+c`fPRe{9UP(}`kS>An;oX55|H!SC|ws|KEdF^B~S8B83vr9H?xztIUUx#_3LGr z)rnxPM|J2U}A4V7gIKwdYAxke*zQjvjgJW{4 zLm@)aH5yR*l}Y&nc)%Xz4+bVDZ}_hJgX`C8W`N3fhZ$m!{x%{11+^EP?f{1rz)=s( zc#gmztU{$5bB6lkNQ%RKKXJ#|R}o_e9ysX}S6M1p_3{f3j*kul4vwGvXZj5IAJrrL zQ8VQ{aI}#kzE&MM2oetdqCri!hWNQDJD^sjk-10~xe=hI|1nuNHCB>Z$U)Ax9kD6L z7e?Yh@xRl({ZO1)H-6y70{&s~9d9@HTl>Iz6Dc^zvKXRCA(zF<<(h%fTjrKdj05z| z5f=S2`51q=rfwF5Re>9^8?;iGTVPHM)pxny;#Tz@&DhSuPu`jvTG6s4H(*8+2l%Uo z3i2Y1pMI2i!)^P7%Eng2kcHxt1Z>8nkhLnF3FQ&00dt9wXnxmq;={te%X|lF<=4kB z6!yF8kKP;B^$iS)8XIpsTbn{p!bM}zNESP|z$ct6P zlGWP6pNw8iB045y4?ir4FF;AIXIZ zkaC)BMEy~?=?P1mnB)cAN0XGo%lbodVj7jhbxJ&?ID6%rg1tYfF*U4nES#q+|3`F7 z!}Rn!p|NX$bC33FsYAh4hg{Om8SDO>nFY-vUdsjeBErY4rd6Tp#GhTFqe3E(emzAk zGdd)P-iWauiNyP_<8H&LFm*uq^F~>~lC0Q>Z&uPP73@!4Pv)2}~vH-eIrb5UJyZP+gN9vY7-gPw+&sH0AW53J1wMXYya^-&pq;700#3GtOP`t#Aj4>C zOpe&|hp~IPvP2Sz(HMVcS~a;XvDS{LOB@r54P&cBCNqSX_EmdfUvVO!?-M{v#K1P_ z!ctYBAORQn2qLA=^_|X0A;nQvx8BU+UqAn|2`My804vTV2s+V%4SPW}`iSVv8DQ!o zcTsKz7^hm-Yec2e3M>^pYQB_dR1OvHtW1UtVI;A7C^Y8vLDgV3seQpk9u0Vp=1)$V(6$mMq4@@+@XqWb}W$ zBW^}jB;F-%vdw(0KPvC6HWPmqwMk_=P+I~cw{qKG#WfR5qy3F3p0y70usImqtS`ei zh!am?zGQUUeZN#tC>2BXU0{B{zZQ_A@T7;59_&*sBdPy4{59-z^RKV7JJNA%6NwZe z`>Rvd-7kca*@uA=TyLGNY$>8;;LSRA3X?Kh&Q>R4q|6UL$oUJlPB<$mRAOS5u#>ba zueUlKBPF8tOQue$5GYeSmnS3w71M;HRZ@btJUHpI9V5x6|2^U!;v{y4(=@$B| z(det!XLdGwHCF-u)H|1tA-KRh{{i|-mbh`SkY7lJ>*A#o8&E|s`zlCJoJ>VAR#tZFv1IcJ{t*xHaR1&awt0X} zXe%hXC&0VLiTF==vG7h3Ci^_V$PFEv1~o<=2nEE8pD$We*S~8AE2g)Ez`XyP1<>E; z&8b+AI}q4^cjx*MoTOv}4H>3qf64c(+;=Oy9GV z4OhZMprhAm=XmSZdAQ=2Tb22@#P+BCV9zXnt5{|^kisKA_<^JD#zq_p z{JWd_H@jCve-vNy3CnfPU4nT=-m*Ggt{f_(DYUPVcon_?fXUIU*LqqOsM`YdujsG2 z`nMpHJ>`cr_brreaG-$2kNK_ zZ0DYm`nzG(vtvooc5oz?5xbd{3pW>WwwZ(=LhD%Cm&mF(ckxVae}CnCfpufux^IMA z_CF^Uzt;i;Ka&^vZL%oW#8%$Fz-m_hrNyyF$eKJ4y{xYwv0Bz%O0E8Ud;F29Lav}s zB%t>8OyHsrnnwzOtq`veCb_2#Z>z)Oxl*pV{X; zo-pdrCfahv5`y)%jIobg_oI_T$_CA#B|Z;tHDwORKB%=*vkdavmlU6*h4ld~p6+qV zl)kvd_+9Tm=rIGuO@1nvsh)i2+hcY8IkGZDvjvop@?P_6X) zF|r!ftlK%GVOoCWBC1jYao+nqBaVxKkV3Siw>=8l6o$x=vJXU}ZC&Kteul&NL3bZ$ zc=_>f;My=hI)d_=)7L{~PW1r(m5x{~m>L#L)g$x`m;9Oz1L)#8E<#7dNvj4m=ARyK zv{7}+*y2&lF9ybNJ=3dEX;LC&24uv7S@i>lq=+-9cFNq|_qyg7`^9Ig@8Xl2zvI6>jE-k*k|Q>n45C2JK#T@BzgCiOf9PdAn^@Q?n%S&AV;KTlbb zkJ`o{amiq-^9CKV9aE+s1VV#BKmJquwH*vih$dGy!C#t8q1P#Wx_VGEh~IuG{WuKw zpu0`+jwSH$vTtV&qb?Rm7k;%iq+yN<%%_o~-p|Emz0+Y|BMl+lcb7nIHv)=L2>T@+ zW8}vS8Y~gDq&D~H0EKj{Ofyy(O~E-YHjgnPwi&}WZyn_rF+yR~4+`ew;`vq=s$vG? zrc0)jmw!=wCp^soc=|@2cR8FUdgWc=XK%SRT!XOzGj)fA5T(vyjEcp+1|!(=g*gK) zMWXkCeY3&-ZiCW?w(1$lsLKf6Vk{pbk=C=ujJC7TKc^NGTrSODG;{wW%0gw#aUGNtI5re~% z+_Z`e?ZX(8@w^{_q|`>tVcBB|Nb?lBeTCc{VdVveyv0AIH)X}mANy@(4Khlx1w#DF zIip6hKYGFq0mr)%i6qyeX2$J-01b#LM=WX4V(HpGjli8l|u zCc(T}^Kk{m)|+SuTXmzgW1kTpcs)F?b+Dcb1ricAP$~vrCe*qO0<^>VGrvnWTUD^< z!;}xcFa0bzz=tNnQtM}5r*`9ZS&ONYOyCle;%=s@&aV*=j=RQP@B+}m>y z0JZ#$|Ea_)fNn-LlLAa&8+ItydQ!Oz}KHkqUsJ82GONCAC~$ zA^!V_R~Q%6U*KkaM{X14`{H@wC2am{k+V#XDw53vg@X~mW67ikoticw>OY~)ZM-N| zb{%1HF@xloeM?y(p3e%3{Brib+(KSa+NZ54lefJvrG~m$Yqz~flhKsF$O_L*r>RpI zDpXX7$t2s%;jl#R@4xq^h^m)1u#h@tdpG==5p)(TPE^D-JP7R>p@6mt9}%Hq-=UaD z!yb&sD|EW4M|j}_R8h74b$bbM!q7bHAGiQYaXVw4S2=}L$H7aNkt)V|J1!Vb$RXNM zGsO|;Z^%6+J%WqGnQH5k=U$>)0V+QUu>dkT$P|jSH{%JN4W|m<3t^r_HPWK@dFk53^^a9r0s{&JG3C8IJ`&T($;jAHQGSu6h{k7<^e_8o_A;rZbjL~x)AH{>^{AToaAN@` zuy{wPCiJiL^2&P53MGO%0qRO6Zy2k|w%4&IK+6sCK~Nl~#9a z8o1xwzX=0@=SHTTKj*a`A%os8dKLkzyh~*%#%e94A7uKNqCN4B-o7=qbN@7XxV|j@ z#U-(eog|lj|4vjf%MfSmN5ranq6SA};ATBX6rFTxRLh)+3AJYlH)$j=jTl4UnK`~Tl$st@hj^Og8as+0Bmk~mE2h|{19;ss}GnCMjmQnwgEBijaw?o0t<|F33zRiYBi8E^$!KyM+$N(esy}`!`zPOiocAL6 z1cUnn`#7ZG`N}aa4F``ZN(d8}sckj9Tycbq0mWGl>a5rF+@N*c#<#?aDHw;W%jm34 z(wS4N)tBTyEj?4jJ#W&UI}=R9e^+-;2ebP{46Lrx`z!_y5-X*@mByGecI(f&(Jpw= z;;l5;pkE!z*#uYD&lwmFd!oO9bhBC?XXw#@8D`t)I-fgqANVC-7ZVa61X zdTlajYNG7#KUipCz1`V!=PdEw4xk1UfEBI-g6rFDjTNx~1iI!&q?IS>0q$yy)hCjG z8F#<;wm7k$^^B9vwUIW^DTK9+E6h|r!f^^bGkq+Ed!6U49~SsqB^LN5^EpLI9cz_j zrcg(`0e`z)UcIGXJVXyJE+gFV;leTC=JcI5N^Th0q8*FjC%hld!=K}Q)3u-(FmGWr ziAcc_Ib=~hwy0#Y0dJ!H%!O=3NX=%0m%Yfs zyKbzs!VcpP-=Z4v3LwQg7b)=*tToU09Rw4n-L|@bLUGvr=%~fZC}kF&UpYy z^#5)rjQ~bULx1&v-S?X|o&@O0h{(N|{<@7l-TJIR=v8d_Z^E%5kfnu#`wOr!G5NF8 zgwik-sVaY)Dcy|m778#*Sl_;GT9Sw=QGK)kr$%k2ACiZb5sS772|rnIJRSE=5SWJeQozP zoF)^ccvpBZyQ&@bCvd6Q}cw|7kbLDjrY7MHpb5n z6`UA}F1wZk>Ee19Y!z++^u#*2fARVwbR*46IMu1kVF~2Z=wT>Kf-(}n;07k)9;JEY z01?By%U#4@clu9$dJ47Uo5}XAKbS9r?Zb3SpY!> zi;j-1)ERE#e%kK8jy{`VuSg3HNva@6;QM(4P3kB=f^%+Tf~AbK!(5%|l}o`Smv=`) z&IH$^+?;AQSpUB5L(W>XcGL^Vd_(~`)YqF<754c##`a|cahFs55&gqVGi)fk-#fj#FUu##4JMmUS|05Gqdku%0qoAk^S}tx0J@7pFmLvN%lD$s+A)uRB=_hzGLW7VBB7HyVkVK4CJD{`XtU9Qw80cYhTm(! zO$mht^@~1XIMGt`FBRO5{3s?;-((whpsUnXe_Y+hVaYsp#9fuu@i>T+*vzQ9NE~ zr9EzTRcel!=$0>ps{?I+L{j7Bl?@+`_fz2u6E*LM~JuL9sD=J)^6Q7glUIh{_RsXvNIy4p1v*-ch~O0y}wH5n<0P3An?_gm`+j>s)j+OA3C!OoGM2nXR&v*y=~Ejxy(@C)xF@Wp~+_uAcQ(-)|uU zOa1ts<XxPh&}X*w2k;c-rbGX`5R`du;3>gsRGgu)WbAzI%uQ zWl?M=)5ln=!_;`i zB}M$QUn=Y8alulHW%Y8xoc&k*0S2l%tstcpLWF$vVOf?|N~>D|#Tp308vjMW;Lmi0 zyaPnF4`SCuHt>PVbd?(+tZ57KN!;H4tB#`T*W84G^F}EXD!K5*XC$Ye;CBHL{Zgg9 z3QzNTqr|v6uUz^XpM>>D!F?~t6Mg)SO(P3tTuoby#J=75GZyWY^oAIUr!V8O%~Tjb z_41(ZD}n2N_OvniS0d1-sZ!UYH=15w&<`cV?#woRmPW7e>o}WJ1PWjaC2!%cU<3Z| zjW5>L?~;|W4Z>t|rwk}0xT7A*XGjOzROK(1GX}%uGshRnrp(@te{^IXGw`T=C!qJx z|493G!c(ByHrOaB;v+%xU*@^rzA|(F91@4kns&XY!TbwtsoAS+8 zs+MEVYP;Wi#r(O|=gfoIa%7PbKx5c@uouv`TwxReUl>(+ zO#JX7Y3p7h!D;kj4wEkTkSMY@X0=JJQl1RSZ&ZJ#x=oneoqXDg9ZZY+pr6X>CUtEq3Dm4E3g4z;n+vtO}{|8sMAwEy4@$uxxe*?KIpvHrzO*h|p1;j2~X~d zJhch#nrOItyMg~GF&C_IRy@;y4Fc0x_2cN<(m$Bk_A28oEZy~0{YB&*yJ2FfX?nPg zfD1^Cd2F)u*uaS&ufqxi0Jbz%Y=K*OXeDO@mjW6omCzmLgO7O^K+}#NggD2$3)7qB zMM|G4#-*Jtrj_!CfIKfyhUJD5@-vNn^AD!zlnj9ZQp8dRv{| z$!Kzg|3f?=J@uCCM2jonipqy4T^em?3mV((v#BzuVRJ%eFnWly9i8DuC(tG1x8p(9 zUBh`?c1ns*#S@SGbuuUe2eke>$7@SR-gx3Czo?^1lhM=(9JF9`=9SAR;@FPpR0_Sk zxcbK)xq%Jm&~ML{vjh_^-?XRl;Xywqms!pp2BHZ+jZ?Sn4M!&gu-(B%hy#F248bLR zR_NDb0yV*4x(pL3#@?sTu0A45hxAqm9>7ie&?Y5o0mR484bf!I{Udfst$xDu zuF;%dT{?3ua-onO3X!&G48{b0#(2QHWdPV27!iH9G_V+#dI1w3i;`%^?g_078l41gV7g<@l*IeB&ed@``KB|-Y>Ux4QM&|P}QT)#o4~k)`z$O z&&PnOvt=eUc0i1lmR9c5bh*uJT1OhJyU!cDAbwcaqp6>7noUO?E|SQTY1_~q--jgq zP6Hvo3@%&enI&{qYN-&a^6jOxaWISvvBGR6VO#bs887sodCgCetoF zuhZb#nKAIZTMVPMuW)ON_;7?Ubdq#`Ukq&Q%`zw5Q?I}?)6|0lfJ1pn)Z&N|M4S|U z+I&fsKMXwXIV)9QbmNYWQHv9Jxepn)1L2WwqDt-M3Rt3cF1(2-d66YNS%?AOp+@1d zNmi%*%ozfA&HlrB(XMWipZI;(7MVzP>PbHB!rT3W?^B6*3jE}9jtGfIx)J*0 z(-t14rlcD}IntV!j&sGnsyoSr?-*s*;!%@kW)|#2Ob&9O;RPD~5pQ7mrFSy&UTz^X zv7-~~hw3bQJ(=HBlwV8-X6n-iqs!*4^M|YTA;~iW{y2k3kYGOC&4{_{9~0m&zm@x) zXzUiQb=O?lI@NcqdQY4RsWLMPwb3CG+LjATY6pCZR9-m|c7?B_ys zu|_Z0GlalHl?1<-Yu_gQ@lRw>Olho7&K&>bCW9J8Fl1t zk5v(f=p2F(crK_0!cnDXI?u}p_%J1UNceJpkyfrF3IrUgwmbwjXYQf2&=NGb-n8~0i!Q>!F^mK;!8>s&$N}h_O!~iZ zapCBF+&j-!TOt%d1pOA7_KzX7b zQdRJ02^F5%FMOU#sWj{u_`S05n~q^A7I1*5?+*%06n$VMz0&o7HxYG%ndQXpFME8V z8hUDmo}GDHJLTo77hWgx z_d*Gq+y;z+w{=SHcSuaUo!=yWi^$;Zs4}ElYm?aO0fvH{Jb@v%um|(aYI|nIoVTC5 z054(hfYMM`=^k<~xA<$MTw&;*k<${!2TSTv&7`h^*wrjv61#)v2cdFym~vIxzXqTT zJ;|r-*X4{_8u@yb`72-3hPh#!*RGNCO)U7HQet#Es`}K?vuQLpgA~$ceZsYEFU*a^ z4>hzd%5lD|-225Qm|hNMvp#O$ed=y?j`e1|Mu_umI=hM$b^0|`D(IfdPPOVNsJ%dz08u@N0M86(On>&DV4X7@Ld7qvT2OCYqz?t~;|g z8tK-QJeUk_O1CVwHhY0#A+iwzK3(f$y(7noN)vz2Lsrx2qBs_bSs)(W15;l!ed^uf zH=a7Aa~=sKQ$3$wbUJuJVIrBi?h6FkUo4y+$X<~+}tXI^v*vDmQMS3~c@uAU(m_EnuS>X4eqE~HQw>M98a zpPvT!(|%}mdw4&z|5y2Qyyp_4957%~Ur&S7jgL>q-K%U)kN}NVt`Z!W#oH}jd~s&n zIgnUkPAo3r@3RltHSjObC+>$tePmDQe=XLjlUTP}xBS_pqX@t!Y#XT(e;6d zAbGEI*Z(D$SIei2dD0T5+aNBiQU0cFmhq_>5p2^^PR}TUT z4vTJ(qpq}Vk!25q?;&UM|-z{zKrMM?8GsM z;)g7mWGt;C9Bh9%d%=(exmjG;JjG9jt60vOi)*b5bj5j(`)z?v?@Lmke1eGQe66>s zhT7(PxLE7N5Bvk1f=fcuc-Wzh2Tn{$|68Q;ES9kW6Uu;(|BaAaYEO*@rniaN>YPiG z^2OHKvPEt-i}IwuOkFXc)`SKM{(?RLth;4G6lxl5J#-;`<*r zFm9|b@H>&r4z=kZ4Gdga^*stdRUe`%UsFQp#o3*g{?b?-3k0e$7OqxZY5YF`i^wmi z$mmtEHf4_mQd>Ee}a4dgG<>{a;Ye5wRXf^A!zWMfG(3Y245 zC9}Vso=~%0UlioJ+^&-S@dYUC%+Po^5zPGnsOMc0*fSI6^Vm0nT$1EtkR&#qz2 zCKL}&tfz%hBPf81rZj{r0XMOV>Ken2B!8bUaWwj!p3~j1lbFW=cdl$9yb(W6<<>6; zj-`|RgCg$>-##yc@^_S_&L4CW&LX(wGspg;oGD-!K{6wOH1za@0p>epvN3-%2bzV^ zh1{+eG{*1!0*LyyQ4i(>0pc^e5t}`}jd`gl3k65utu#TqGIpd|aTFbLS1@wHnc3Wbn+7ivAVmafnI6 z1c6Nt{pDOgj^U|7QN>6r;hij=gRecT1O0bkYLG!cN&*1p#!+$kd_WlP9X7Y|U*zU~ zMMLfDsF$t%3F;|aq=?hXUkyCEdnW9_7U@E2`E(V z9DI;6fA?CBrH&-3fdP92O3#8!nQL}SJRL)bWKUPz!sTcarx~&n>aiA7sWBzj!l za3EJn;BTex!#W|Fr)0Q^?R1Ra2kcwq$pXFVklg)Dnwn=ykIvOF1k(L?|l z_|zs!EYqW4Adfs}x&w@i7!Zyj@$V?QbylDoUg{wKG+^5I!Q9)5yZ_1@Q&4%x7r+K> zip0S-zfYVR#nr$>lmZlRdUFU;H)y-D-Z-Y#k70x^-@DMKFTa>4Sgj8_##140^~mbQ z%Xk3kL+hn@dT?sX#$}^|b_#jQq_EgK01REuhj2O|4u?^}6eWKkDn=98{aol@+dY86 zPplsuSas4VWDQ2Z6lxmfHEs@F2m_`L9j+^{YzoUp$Z)#Vz zpp2XRZc$)9u~kZz8@CVbLC;^-qssAeBnDx55i$$K=8d8bqERbI33C}CYkSZs)R2l0 zYggjGLjGPc6`J|C? zDq5_VA`qR>(-hkmeufepz1cl$dcC?E2*?4Y)Z;=qce_jE^`KTEI5b|w;Bpqd^>tPx zkDvU7pt8+{@a&}qp6s9&bATq`Bg#k|O2L#VaC9kKgQRSbED)T{KpCn@y=MAcF}1Y| ztuWqUWUe}JW$=s^x54$`%9>zAP9|z%n5r%Bl#QaM8nG7*{tyP=ym$9wb3&k*l|E`t zgNcQ$k%G<39kGg;6@mCp`W`%w`$CkR&UVOW^?#Ojd8AGLB^^(NxDD=KNdRzxI}iRk z%n=l;&Cv|c6#z{S?jYlM?G?+@8ie(xwa_iNgiUc_4N85~H^}(A1cqSw!R}fYgNFfk zLNsmVdNITplP88c7tl9c0>t+UOyh_|n8v@vp|+RPe;>B%@LLA3Xq(^PuHad51mCT! z?&^CJ2Z*^QO>UF&%ex;kt@m+v)tqqCodm*)UA4WT8?3U_p9O4RhwhCs9Oghp0sp%z z@JwbCLd+_%w>>DK9JCsOF27$EBMJ(X-f6@e!TYlmcaOe8kEyJHIhBmbh5Px`kbU54 zS>;G{An2QrpBqH}Z>!6BNDt?jI~?fgl`Pv0Th-@bgHkVxPA{wEX0p|}r-MV;{1WY~ zxWgswzGcJ`zoRWiBUgGd7yR;%-bWF`yxcU{=4`^)NdG~o8vGI4lDzlt$5Op`vo901 zrs5LsS2u*eLm53_VE#jUKdyc?Eu(B=8(&dt94#?{%OQeAiHi!nIJW8!hkt;ujT@Ny z)qa&*-{b0jA^;Cmd;%pY4U~nfY#vBj&VP5BZ%P~pZ6LARN zXm?ClHsMNv>7^TBKPl0YGqp;{@MAJpbiQG!ygz{M^IZ$U2V@c(wKnX=0! z;YpA7FbdI@RU=zh(6D2x_cKuj9)0%c7Y3yy#$=gd4u+^0ikQLPF^)6!8oTZD>rpwY znA4+Z6Xp0T)i?k0;~P=SIF7?yM+A@QkJP~rfd zjWzvvpsA0FbCiN)Eg7%yQW5(De4EFEd*uPLqJ&s)P;72}R|Jyy8*^W312l zk&&^o4{z`FR1>v=yjJ{TAdysDRyw?K!Hw4-ZW1&C)YN57eW_H_ZO3ezYMFdqMQ)MM z92u$)RISGBU@ByoF(-?;7EGak$!*p00M2|3C3;t-V&XUmn=Ko*O%bEUB3M)ffCt3m+DVVrt%{tid zaTU5*%07n={mVW+lZ4-GaS3y&@J@A>ZI6uFT{PZoWa_WK4Q=a95BaVCaGWQOVZ7(>Xzqx+uf)wQ`WLcHmL^1L{S;P0QHx0?SL-CxUI;z483!Ad0g^^W`Gfc{p%eer~;Ww%V~ov0f>m9Xu+= zM8DKie;rXPq#aCeJMJQ+R!LDJN?;P*+A>*(92&~TpNMy>h~o^q?$A5FoY_0SoH=rC z<;|LyIwmpenEI|3Ec+s5((ADW5mdF@ebVx3~-B}3Avq2 zeu~L`#x+uUaNoY%$HGv2+9FOlT+gaD`@+y2i|tG}Z4d#1<0J%A<(nU{wNyWPP5AH+ zLoYScLs1QJs|aL2ZOGlT2x3_8aVCmYXl_{~Kzk+_!jMgjq<3)2kd#o|6rV`jATq9NE3(XSoMR-^K7+4~1w~bEK{RcZdjL0Yk#{7eI3% z!mUEALqi&e7Uz=`Rdpf#mjP^997)N<5Ya)X3&n!F9C7OC%^$D&q~Jt0@z-f!DaGG* z8J4Po75SGF|Ev3HHRpkbQW+Cv?5UhP^&DPQI1M#-5}Re{oSQgQYD)#`KF$v?=)=4n z$QXTVSs{ruue@*RCu#8G-@=7 zAGR;y>MQ?|^W1#Kh@f)eXNC{XDP7#-M}wXOjTE6+u_&s49p2G17I4|7VcDicWBvgY z5zu$Ihz2o#@&;4XFo^M;@EeR)W5)pLOP~w%!W+7{3<<6dC|S4G3ePzVE#pNSkT4_T z@8gOe&A)Z(OXHZDeKhBDzT>j*@=lDlPtAQ!UpD$ld=f4X5V*)3&fa*xwJCeq0#J?J z&2!^w?7`%y2+E>sDt6#icO|;6IXeurjb6gHd8cJj9`B7WU zPHZWW&FWq9yl8-UUCd%tUFy60^M5`HF|E~~dmN+vcJP42#DAEur82upg%&jrZo@(t zn()1D%*%nIZbd`tf#(L$_>M01_OI)U51y-Je}wlzwc5YU|bV8Y(Ya#?!$ zbklcoKKR>FDO<3gctdb>%J=@E`=Wj_JAGT~VKyxRTRF`a8*rZG+?`z~(tHQXm>?>- z^eN0T-@%&2LJX=c{rP+u()S=_yo$GGm#I`5O3@32@cOpSQia~65+bx9rixuBNo99P z5ODT2x@mszAPUoauDIcqF#F8WOi3~MJPieFc{bu|tHC?&U8DGb>$@**Hp5^~=-!u5 zi0E~F+53Ou@>V?&^TiISwX(%|+_YaGdO`W2L$&VK{?N7ZwtD?Qow0fA!_bHI=R2f& zPkWI{`)-Zh7XR%dELPf}{oKn|{V{(uqvUIbAc{OogbT+dT)3SR4{v)U7=nJvvjc@s zg6NB`(@9!bUVoAZ5@=QR>O+wW@iW8^}10vL5XxV{Lmb)~}2C{SIYm>=XY07h1c%Riwz z-XWu9L!|F=_U)W^(TF3|YdbL(67==JW@|yCs@ni1z0ua8jiwoq{>~)-E-~3x{5{NKu-HGDDP-z z*H>q8>bdcA{y`dgMAS>Boc2#Ytot0$*y|y8vu_=`{9O6Hg$3Y!R{Lq}q8*)6vnT!9 zvwHFO#Ou=^M^%jpohn}+N-QK&RUAQ-fa5#(W?P{qdPDm~Oa`1TVpoE&{+F&*;hRs0 zGKu5ox`ij2>De972Z)eE)*z1t(R$*@Mq14NoPxIK*rd7k63*cNMkXW5G<6;mq_`*8 zL);D>tNha7O`SsgDUQ}m+xI0Ct!g`t$W7}~jH`?<@gaZpw_Y!DL{)#g)_R?t;^eY~ z5M6~*q<-|k1MuUrX-hm9(7U`m#0RM^;7d*jI@(ujPK;4MV!-~SXgQMVXUshCd}zdnV9 zXe2s#6M!TK5Txp)DMnXOu#n9q`OQPAg?woW0I*^X*WG{Iz=vD4%{F1z1gVe~Jvea= zNk@~uZSD&-uNX7-_PpuqA-{qVJa&x8j`S;*>?nL&S()OFUmLb=XV)7v{0R3vsvsBj z)?~ZG1e-?Ex!u1{SOeQy8pmo3;qf61OKyH;o+`CQ6KU%h4R^mYyYs)lBi$6p zF(OaK<}8Nt|GK(~%f^jXEjf?Azs6PP)ImIS)1`5Jh`~fipN4)FxIb@{kW2AZM-ve* zLWD@2s^!I%*ISV9P!?aGfHc!kamT3bIh;7>ge?cr3awJT)grysl2uD~qMuMmqd|h>bDo4i}~2}#uO@Htsk#*WCG>o9X-4IdOG|vw=5vrroJb5L(`OaVjF)>@Jk*j zUW!8!3J)#Gva#b%W(Q_x5i_DF-3ScXwjDDMooCk-E8svxx6DjqS3bO!ju%J%VmQ;T z_Anl-f=d%MgWCg)oXPRy20ARkeraZfa!u{BJ&Tmtqu$4FX*8POm-D`^-Yo!!?J|j{ z%fB#1=k>d1#Dwx9+xw>Vk}HIs?J)3j5d(su?H4N7GyixRw<`WToEa{~t|~Q;Npnlz z^xc)zp_D-ukkww?mmqO3(=dn^jee0eq-c<1#A-*<0rIM7xxmMFa7XhH!vFMYL zD3Z~Y&6?cdMb`e4E%cqg{Y!6)JE3qO*;FC&H{g$aItX#w%*&$vCiY*+3pyms;HAZX z*-;J2{~L!Q2Y@h)iyO8lZ*d}mBIM@1MHhULMRk74ihF_Jb(~J_lg2DR}L-kT5fwbm0$I7B(c1%QutmBbs_pXIwkWq9(MJ~w5If5cFyQ; zIM!e3v44Mo|J23KHPkRn6<~PIiO?b)^)r%iTI~OXXs(5XTBnP%Gp>hvkE1>`jwpPw zjZaQ?LP>Bbjr^ZKc*kAUMej~c6=cg$qA1-CM5mJLfPW>K1eXm|m{n(ffTE zud8rSg9j!(UaXkk?GS##z`NGG=N?YK8r>c|8IjYR^lYy;tvQJ zagl5(ek!WN=Tog2l5I6Ree}x=5J3&(Z04v@um++rmrh@?md%J6eXI;Ta zGpnU`#N@>hjJKFzveyk>Ia!bpIffJz<Fgzi)=V~fgXKK0|n$ji^nZ%t)0UCtjjjckiVwv<3!Kqy;LMK@dy4C!GF zmW(K>ImPB#(NLge_1sr(zOAYDTi@%6%ApHsleqgM>Fca6f;WO9rbrxY-11kjV!DKw zSUm1bBaV}H;BN4*7XxY4L6TEf;z;sqNb24+*zmQ6X0)vQ{;8*AP-T9JkrpsGgykw3%q&qH^)LJjtN`qtMB7-XUwfX;yLQs`z+#GYJljwFglft%JE*U zLGeNDU+IL^!1PbTNoTAzy>0Rm?CCDtWNQj9RmAQA79oq5f4Js5wh#k~_!T*H#A|RO za!1%&XYyF>ux|n(1c~x$P}ONp6^w)!xcF`3r0M9Me|-@$WF%Y#QS{P-JQo;dppA{8 zJb$b^MgFyx(NoFLdT!@7vWhOP<}6d!S!yjIsX`mzHT8(<2G<*FdQ$2SGk*_f!Y+Ub z=>6BMi4g^Ohkg*v;!tU#3)0$frv0h=x2$8kr2KU;_e`0brY1XkTTawB!jVs!<5R5g zcM3jtAyV=otdH%vcm=Z_8gY@p6_c}ADD7ll#T9z!Q&yG}BqaL9qcF4XZqBds! z5Ib>Q(K;xlbKY(2EjiLIbMofSbp&2Z)5&ilXmU@ z&vBz@*0O+pmS&qjil~DX{x=JA>v`)Ngo@n~@JV-@I=Xm!>;?|sukk;y0#3go0dNrZ zm;s)?bd?{W*Xhvh6hYVZ7=wO~zW9zyC7IXw_w#>kus*DbOZ4WY_e_9`X_QGxh+mQD z_U_yMQEtdbdP2-@sHEE3GP45e1RK>1+6j#+J&C4rSy6w$V~uQ8cmxjl7W($U;BGXR$`2Vi*KZZ^?1`14oblB(iqEy@*DB!!X^5Z&E=l z2i4lQ-b-hbVE~gKH=k{%22e)?`u`OFmx0+P7c+&j0*Q^DU7A~C$6kkZJT3OKCo$7s z^c3~(rih^#SAXft7i%>$-CkO@?nMjsLsw14fP?a>hxhF_9i-)}#`s;WsTBF8)3-S6io`su=S*ba zFBmddl^QJ;+{CPLfJfvBq|JrxQ}%hU*81!9>jvB`jveg9GpP+f#HbTf&n)JO_F=n) zD)Rg4xoX@<(fOJY3zSX;H;}V}<$Jv7Zd#oi&U28e|6dEhkHq(R!-^7x=$FJ#6UV3r zU9_gw`=5`&6pCZhc%q0swBIL3z&Hq2P^@TvAI46TGd&E?b+@QB`f36vp-NNY*>pyl zhRGGbhzZ9QOIeukIBktVW`S7C9IaFe&Fe{~HYz?wdL&9fjVTEd8pik1R9#UZv4Fk7 zcT&`|2;ma`9$Lc?pyayGqYm}`R`<@bFUUZ10e=%BqFs!Uoj+djyY_{px`=8?xh4T# z^7c-#KnCSEBB^qSR-QiK zLdGig-*(obHjymma3&ceG9>yO)-OEd&}(6`&ATJ`(lF3lZ4Y^HxNd%BC0k4|y*TlI zer1WX6=|pu!x(rL0+kpV5PgP1R{`(3>5qsLoRU9f{$^&oI4CA?U$~ZbiJ9Kn^AxbVVBHb3@45JABf*Jpx0p-(=R2_+BsvzT@H9 z!S-NzWD)b|=ytSCY!A_`cDd@>)JGa`k-rHru#@)3i2^{RCde6F3#2RUeJJj{TUAg+=G?*nYM1|xryXbBZAAR5@ zp`{7kW>qrrMZ-Q3E;L4_3b(#*gmH+C3d+zE56BMu#s@g4yPbClMD$QL@M@R!OkIEV zkE{BlZ_m$zzV)o^um6F%y7zabW^v zk#pz6Df(kq$|TnR|Z!``j=0dFIP}JNuly*Lv6czH6^%HzlP`4Pum^ zOe;MDEE5`UuqF2Y$qsoFMn7i|_|)5P22bF#((NKqTJIl=*9^FJ3a&tVF@Wb*Ln_PU z3T4P0&zh4VJw^JN-_LomPasCj3OWA;9bk?w_ZN4^!iX08g~!Y312Tk<-ijF#x{bf` zIAsK5!sB;0o%%xJKy(zLrU+6j5uQh|5+tPcf85^cLw$nOfuiu z3ND(PMs5D&#{QNXJMc02)PGHC5QT*-{WS9}_*L%jLqgh~QOw?>%Gv)UvZunMYd_zK zq$7zuILDDFQ7n&+gP$lWgc@cK^})Zf^Da!Yw``?l_26^6W_QgWyG<0hu!moWDG)dNxD(FL$8Yr*uET^WTR zs=^e?Oa1;i+tGbFXl5Seda_P6@GW3zVdDY+hUhPY@DdWRmErHu$}Hw;$JF}5sLS@8 z(3i{ETGL~n@#SqwtmJ@>F&WJbTx>fi1c-Gq#BQ$zL=45ltNhiz<0E#iYFuuSF>gOL zHCW%8ALCT*ClAw_o&9*rMxwFvafl=w$n(bOL8!c{OH?Bpu5&kir9>b-pA^Phf6oh@ z1LhAz%_Xj{z}6%mq(+$3kl&b0XYpP_zEF@Q)qx+8v{4A=}fa8EeEl99dsR#k239ypyX$LEAX*5&)q$dV-AzI z(&KNVy{O~r5Z9e6TiSa4<0}!5rh!MF^uG&s_By)c9dUf%`Q9ZR? zZ8vWx%n&XFH8C-#1sM7*CqfkOrR2SdP1MhtP(D6iyXv^dA_31o)WX&`WLhCwJ?%W58$9u7e2=({I6UClgA$a*(xgblk{zaJy5h z!!nuzsuWK;oJ)qahV|IcGF>8WlAyD|>OZRzPcYq2LiFlM#VnD8ozUw4Tz z5jZ?KPz!mRa}k(V2IIOncX>9pio%a_A`U)$sxe|T>{9F%h~Cx31Kkifpc4@^GI=@g zy@)G>ckr8=m3gpgTXayEn2LVM{CUAz$cCWTtvwJjElLu2sTFI-^0K*IC9Xd0hu&Kc zSmz;xx*A9F<8-@zQk2J4=jJ?&7b*S?-`TCI*8Lbep7ueu+PmRQ4)W4Ln=^YOhzjke z{W1Qd0fzqK)qVde^l)7`rG_sf+G*Oj!D#f)0$S3ypZ76d{8v(q0~ln{3PF8~@cnJu zgpOMC-*!CgA2k6xHY-2Y1Cz$VIG?B?|9bwL7m^eL`d5s4K2whpavo=v1X2J--0ECj zPz7+7*ONr81e84mu~$V&+=n1ki%Dl%sZK2WY1jw7@0wf^ zXu41Ru0>1u;q~vZGudeRn;Zlk1@?3)k4%+x1;P6AU$;P%Rh*7!%-6568wLaijFaI& zw50|0N*yhzHuaKyd=j8QA|y12P=CFOE!`R}O|HPE(j!1%UI*+wH$xNeRXBTpXiWjX z1IEN*>nBJDekj>{5I|xUk%C5y*0T@8r4Qon6^+)I0({#z2Da+@wX8*(#4Ida`5T03 zj#xM!5}2NBzxB7cc}_U_Yxe}RAFA^>iZdo86we{X;o-B7ttq|m-ao4pQnA^dY)m}8-SAH8=(mQB_zm+hxb@mXHUh7y{;y1rw_t%Qs z3VJt_9N{HKY>3n}wZzYfhVP3eDn|3xLwH}`Glh#iZVkE`Dl!jH1KwcY8L#o)FtnMZ zPUwUc(4Y#_^l_DbK2>!iS-d&;w|c-ox@d0Ef$rDD-0=@#ES)|Kl45`N@d3&Bdc07O zHRe>MCGG7vYt}uxO?M|g&W?-QJ9Y>L*xHr68_f%lFIxT^)|l^jo%e=a0~ED8G+DDp z^2_+bPfkov-@&1X=%9);;Uan|8lu~8RcF%?w_W5n789kb$8{Yov24R^=j7i_(qwB# z2L4LgiLNMSogXMzP_r8w)5R7x%MCZVfE=O8tR^Wx?Cth0t=8LFg*ptEiRG`0o#_9y z21~UX-BL;UHixfzkA(wDr4L=7C^fJB*6k`YiT|IIOW;2zS89I0aWReLqW|A9UqIri z0-vF5x_qKmUfOc8lYdB6JBk+fN+21I3TU2M{M@|{np;w}!IOi2JK`>0FZKV4_Z`Xw z2z4H*izW6Jv+7&TSN`eWs)pU?|DazTj}~nX9i1VMJK8S^vB-h90IusOd+x#ZWI~Ja zo^oZA_uy&6L*BP856$@aJr6|c{;1g{(?7~qNe;3y&OS{%y!N$XdXz@>tgiCglfkBG z$HVqC=OaMoKw7upvKbtboWezpA(X+@M%Y_*OrKZ8{`Kfs4@38=we$C_=)(t*aCmpq zC*x{e&B}Cyuvpa3`xyG-qq%8VUJD5yK~0O1eEYT^dC2_eI{9??h|kh;e#;Y+tOy<%iw+P;AzvC6)`j_pLXhW+5Fm_~?`D%*b; zXA^=0GO^4gi^OJdO9R0&MclgDlM>MmI=C*b>Ojaw(W2K*0wJsiCCpm)jPY}KC~1go z+h%3UNPCP$k(OMgUf0qHn~0gT0I3q!I|X+BNO`XMg19P9bgR#sUG=HRbqm@s_+$es z!$06JK{>Pne zw3V8*r7@ESn67SCZL2tIcnt+g(%<2+yXY*v(>`4bn@`6c7;Ey=(xQH_Lh=Yg!n!7c z8MEk{5-F!E8467IJW`+NzCcbmcvW^dLrh;rP!i3YklP4zWCPu(^RR5OiToEGvba95xLlT zlyM)!7Nuo9>s}6eEHcLgnC!AYo72}%l|_7h4riUjikPxXDhap|wSJm6#*L$UTo{`Vdb9Wn--5>$rjc4@4Lfwlu3MFXkkoN6yKk~DyT`R&Lg0| zKRAs@+Gx~XYe`54Sn%u~JH04t{=K!aW3x9Cuw>fC=MW`Sw6)S4iN35LoKPR?il?g?xlnd zlCThf8qa(#k(P@pAbG8`#Y-12Jol#Bk={+P41+YZyA7Qj=_Epde{>u(7ar%Lg*kMn z%3PaGfIs`!4Z^xIXtGUY@r-C!jnaqr4qC{@@_x)>73D!M8VJF8l>9*06FBw#YN~Cn zUG$m?TH+w`!lRmDiF^OR&0QUp=^=CAWob#2As6JM%1L1Qx{WITiVh(5edLFhT*e zDwFXHS`5qO*P&uz9HFpDi|b2py^%eZHuZ8Mh+t|mr56^?cQEW2#oYQ+?nS-^j~B3< z%~;h%SU>J(z5CT)!Ao`MVgn-+cX7*~AJD?|ojlPgVed@fDR^+Ri-F4Yim1xqrr&PW z2KBuDwb^n-_XMHFnwWeze0#R(Du}HIN*Sq?d2=#8n1*IVY&;VUI7E1X^PjH7N(?Pr zUg1=^EGn1Oul+mhRO7@tpk%QyB>HJUFZZ1!kx4W)+;7Hr@PG zT6hv23Ae$HZsBRJo+DZF!vHy!2SqsU?i(2Yea;8BeQ9b$((qgfk~}*c?qSDYm)^Ik zLI*_j{SiI|C|(toleYS|M8iT;XwRabv@QwZ^$I1cc%COvt=SEWftCK@0W`07xWV63G@nloOW3s(6UGFiPvF zPpS3cdt8nv@z_Z)_M{5t8m+IHG?(Do{EBxHT)=IGbTS*`K+GLZ7Q=+>lIu^S`;}tA zjgh?B#7za4wV)PNo64qTDGp^;HFY}d^vlb*uf`AQ&NM?amXuamS{@0hmOs{{plNux zB?p^ID`YC3?)`^e83X7qcGS{!L;y*}wnz+Bepnz{@ z7*!>hUq90-jPhC~s(6UpYTpmDaEZ_Ax#{??47 zM4_UBTC3^@3w+V;Bd4Mbu07n22pbwv$C`P{xW(;7CwF&A3{^NMo^iyVZBkd zZW#HB72yUpBJO{Z92Ynbv6cVfga0^2x+1&VPMO12JF0UlcyE}(os zgQ7#JJ=#}q1dLCnpzxAu<^3Cz$eV{QU ze}3Z_<61%AXS%z#RuaP(L_*@mxH%OH4~*C|V4v^@N$Z=c%7JMcnyGa!P%M zdX_F$%g@lUM*1L__w^4q!XbmT3m8E`Z7Y_y^peN@Ct0|hGTT(xi{U z^G<3=4}ype$o<>-;=O?jT~?b{Wl=`-_P(p+L=*QwlK=3hFpU0F3j<1mp72dS1i|7S zgY+ET!39C6{zb?lHqT0Juv=@tv++pa9F1p@L9GPm9mDdf8}tok`a5JI7C(_eUJK+s zZpo#0D&Y$Tjm-OT@rr`9Rg=g;9>a-J8-c1Vtrnp;Pg^{%7T>EAAB@D`>Ul2_F0o(h z-_*D)#`bH&8AO-9W66eES^j!Y-n^rF-)W29w;+V%Yw07z_}j~)e|SeQ15*O|<#;;Z zll>bL{VNF+s=6koFAbPkZ2IkFCF__Xar?e5KKVd>wf(wLv&QjLuw=_2)$inGwdV@^ zgjY>(sEQ0Je@?8p@9lY|hQa`#!m;Wq)*Fh8H}*N41ZB_h+``38vO%nXU07Mj3vAF!4|b2I38Q`oS*q4)-mpqNco=OHj$i+$zmG4@nO0YeI z7h!`!;p{8&S?2R^cWyjAtQ$X{eKTke|`pt5ArjCQR@AESFz_Y6~g)t z2{KXy$geTM9ioSqT9caL@9^=Iv8Dq<@aQK+cYOrh9kyXRMKvWX0@BWu)3)IrtgTFs z_--u>Ls^A2d8jnGxr-WdVwTDp`*vy$+nx>ADZj$L8aXs~70|5KrN{ld z>X56(3jHl>YV1>a(m@^4&6s5AIl}3$wiT56HAW_ijW5GXz97^w;dJ3%eAa% z0@azZzo{>_E-#DgcK&M=9aPt`p85v~xQuV*G;5?pia1U8&x-9|;fN$F*)b=CIa4;> zGwbLofFQrNCedDC<*38FRTrvDgixm|o@ul0mjJgrY-}I>maWk_GVcH@D>qNE-OS~c z83c<3R_dP%s3q39ccpu1b5}2f%nfde4*jms+i5C-zHoPB&9eJ?ODH1*q5KoUKlqG- z@Mt(zI|78NWFI!#1&-|yepnU1iix^}=Hq}R{6)pZZGF;*ThU4$8`BRE1PsDe=G{vN zF6r@DWnULwuI($opB02d1ZZb2zb(4TaC#}AsDRI!Fz)9_5no;y2D_VC%IkgOK#JH1CKhdaFI-}{R@%Y@1v$=wn&?UDh)(tJ2FZ@Z>@{$`rvvhe`) zBwS&=Lhsl7;UkLf?ff6WX4?W|NDU*oI%_@`mjIa295|{e5mG*M+RarPms^71xi2*0 zY*u*H#ttRGOxHU*>{EE;K8$KM;lpJcf~Il7d+G z)Fk;KW9B>!Mmv2@=T&0XfAng9XzZtipi zx>Z}h-UYwW2y4cXhM*_(4_0J1i9GAm$Q~_N;WUrF^Q9z$Ky!eqrml|K;2v!j>3??_ z68IrzAfQJ+Q|~Y#PqN7xQe)JJrVrhR0>BHV?OU**21A===jA^zjSo@290b$2311v9 zwltvjTu~=Q`a+q(O-zUOEY`?jz5?x-lkvO``N9?LqA6YFCV5{c#Dy*3;zxJk7$A_c z=@%(WM=ay5E+2Y?x|{XF1Y^dJpX%A+n^0KWT0D4=PTMEE2wPSTK3QbheUh14$?_BQ15?`lf7@me zcaqWT2Bk=J-AaXj!#eU zW*Sva0o|~#100o<3wr_Uvni_b$I8E7Orw|@Dx zS~izM*(pw(O!ZV)3{xf@P?Z4<3EyCfgSv^y;bb57X`xYMoAkb8xmT_{ZsVwF4G#w4 z{5M{ocy&fQ4}+iQtvAGQrZtm>|HT4A3$uyXTnQ-XlW@pdSF$kWA{-LG&P3#PxH}Rb z^c{WzQh(<>_P=$4@JGVun+OeEnLF!Zvv+f|+WfG5O6CNAHb%zIHqrz3FE}bFGZ}X11uv<@Po`jep4m#!KrsNgqg0FE>OC<6s-|3f8Fttuh|PUM4AS@ zp4q#ms16<_X4safmk)f*GQcNY3pdff%l4Jlx736gAy{E`dQhit;6*5eA6g)ciO(JZ zLK7`tM9ucp=Y3&0Wpi8xMjv|4r@hoxTEc&cX&XG*D&WB5D7K)Mo)XaEdidvWXWPVE zG+_tF5Q0E2q4$y;tEXm70k^=Npw^f4r!S;HnV^lM$z0gF3ZLs{|4QeU%faVvSsCn0-sFnVAI{H${gDrVs{rf)!1{{`K8W% zpB=H~A65219PX)~UqT1(B^Y6(=EHYf>$f!D3OtMAh+ zVmQ!{J*{LH#fs|YbDZH*ykwAf-2z@_gIv{5Z(ihr%>3Y9@GROVyu^VcQ+1JX%}F>| z7ABG$Lmtme`ka|kgM~gx4lKf&2m+5JgMDC+h$9dI)})rgBAe?p!p1eI!o@#t)B(Nt zzRumtXL;R^Z9g~DhI3w1nhmPN6O1eC<$0G~~R2?We=b zlGRR-la6Ku^IX$f@u!xAaZuumTnvT?8sZufcTVaMGcxgy1jjo;>omTC)R6pKLU%_* z9TIyLs88TV26N&@V~A8e6K$r`#1q&uvdG(6w7g#*tK;ro=a|fv*-|93uz5rOtBd5v zh6*fv-uuS*_7k%*2#zZxSfEj|j2T7j!>z~Q)`iRC7AVvIGGOEcyEtm3{mLm`McwK7k?=Mg?m)5O*M=!p)%OZP?gAyzrG4~Kd*2$S~ zL#Q*|OtF)%&sa>GqBRBCkoL?~t1_{Kt^%=NY2mo+O%IL3E|}dFzc~f0JvaZyg}2MC zsCdbeNvFt~9nLJ^7TL7i6_pA^m&j<(NT>iuy*G>E{ikczkiuH1^M4%WD2cpobjc9B zIQ8*mrz;rF$nmiBS2r)(Nw|k2Hhnc~RYc{NJJWm&JYbp===#xmtMU zy*G^=4cCRj5*lX@-46TQtQ!raSvtcXyO~6Cs45rpQ!_GloeXebV`GyL#USg{`D!wf zGUx;|TZbdMZhC^NsSg3b5~f;ADxiMmW$rVKML?|x<&6c3K^J4~0cOWxkBf=Oy6w&C zhx=Y8+~Xmr-CS=;ukIPX^|Q-&twAVn-*adRZ%8RG;Q>@;0W)(uGxW`s`G^oTcaEGr zwYWi1c-GStxZZ?%)NPjXX;RgLR?HWc`8b+U`S}(UBz6X;5>35dEYxu+uk5;3p5xakroSK8qKT&p+QnsUS5IGDu7@9c_``7|ZVnhua8|oy&%Lvv?QlwX1X1#g9l-H*SFjKp##cM*J9n zNUJj>+`tthg%>gP57^@E=u0eFKl92oxb>)OFMe)J{2-G2a5TgRsc20i9vzf|4|o>E zD$kmWDfVs1*bsd+RkU@biSG!Sau~5`)w?w@=gChm)T>+@JIpmO%!%QMkL@R;rXOMv z<_kYSGPC~VFv!5fiUK_VGHT=c@MsxjJefJ2tdd{sn9Fd8EQ~e@d+$OtOX8&!39Ge? zo8{aI-@R15&GL1xhMmt7><#-Bn=dx^>+^`)=PzdG@g5QVjg5rS4jCVi9k33}`>nl~ zB4YCnokMiH8;y$hnehy>BHmkIx-*dlw1c0V{4>Lk>!O4st#Biy_V@7+?39I(=Rr8F?jgJ-_C$yUYXcS zyDPM2PH%_I@kqB_#=)xh-#{hk+E21>G*9{Yl;vR1lNT8nV~k`cjdS6-heuve2ZGN$ z8k>68z(yZ8+g4ECOR?_#6SXQ&9Qb=k*T7lC06qM5Cg5%a)9ZYRj9mV`QBbC4Z-$B^8qo>YL5TTc`vjD*7C-@zmrdGln%L+Rh_rxeBUw0>u z1jKoz;ZU%Fa$YE^%1Luels1W${5yu}oU}`THlH-7LI?cKeaM4r#!*20Xnn`Lz?tqi zDEHjy#jLwLIOMnQH|J&mG2@na+Q(M+LU4z%qyscTus5i};{tp)lOH=M3j+Vkp9(-1 z?2OtIOBwpW&USz=E2}>JiBrYQ>3-QPRetV~4Znygy!OK~*{mzN#1b$jC!>ybD90c4 z#Jt$0JyO#M+w_&UerkgggZMz#W#LL)Yd}EX?@~T8_uPUSJ8fW@J^kW=_gglZw``v$ zF>AQ#a!LeTLg)m`;t8gvWnA#!5Yss=BhzL6<`7A7f@pljgCSfIO5d$4pH(bjyQJ!8 zraiS=(<5~k)r{f;L0!9|xt56DwFwwViw5%|UAq$VVkiI%AXJw>iGDvsRNO}2gUu5v zOozf}nfdJ(d58<%o@=Kzv%vRO?t9h89s~N=?jHNHvN`>UiKRI=U`Yjy35{O@ioKPv zrLQiDbskfsKYzH?7EBSRgPpBLxvPf#%b9Y}2CqP~Ou}#?;5P*CBUN()i5c3Bpof`0 znVB@%f>{hYC9wD#qMPuP0;f2{34H`#gB{S?FZcyrQx zq&jORjeFmYSD(%;#NdDoz+v9}6Xtf;FKwl-%H=txzUm!?BS-3rea^t{$il&b4uF%l zMf>a|BE$sC+xLBKyaBHt+-rOxRB*K@Uqrt!cmM^JUf?DRWrKTzgo&wUtS!wd-{3w#aAVW@oQb~XjXBddG z!c9{qXmaU7yfMg_VV9TL;W@Xu{{&p)ylOAUGHbQ2y4xh~H-FQT{J3zc-tSgJsqP@9 zwRW~$L~@KJ*Cv(s_>g$b3=2&6Yx2nR&UDuC6$o~?2afm;EZ+z%f;SJ%*4S8nc)Q9#Cx6PSoI7)O7!tAMW;m>I#2m_Obp<&f>!j6oYSv6 zBcg-kR!kP|Nc&@3AUQ>F{7E(9yZwC_-TpUOz!4AqxPsajL`}& zj{f5yEj5CdufA;$3G8jr$bUh5e}8bv9m*D-g{l2pmzg2)Y3M?kOuQnH9W`54WMm#` z2Yp3D0K6TQZpaG~hRf!E#RKJ>JKkb)?tbC>$m3@}=H}Wc45OFqEnHnG>HAqo;~Ivs zcHhvhyW4175F`H6Pxf}k^Wf526uo`Zc@}p1;E} z(vGJS&abdQa5Rm^Q20_L*x$4-2xD2h&ZDcJ9Us$H)heF>!8s!6)_baxnNf+IKNRHA z25m?SG+}DPdvnJq3{{6=ZRvwP!z*U_-sxeU787udk)l>%HI77n9z?a-SNu-F+T z2(!(pacS+v{J^x-E`siKOYJQnIi_c*9?x3+cTg&?-(h01_*)eheRNG7yjpoN8(|q* zIv#tyA$*GhS~0-whHCySs5P1y_S3>jiutK;qgavX9I{+|B-RHiJz2>7l~ArKpGU*G z9aBbjSO#A@!Q$~j)D4<8CkQanXFT`$G#ALAejmn)7X@)$X~WPWPg7=pib(B6B7u!l z5qYiiN)s^Pa?rbwq%K#>!D_xCh==QtF4ii6)gfIu1zJ--$HN_H?WfCKUO#xW(|eBQ zXIw#XV(~2Vp@f@fUnc==_m=DE;miuO6Z4?&+uOjq^w8=+jR?E*dSE%6fB`ekPG%ot zDY}#wv#3kpG?D+k^adofvaD(W6W#2LH)B1G0=M--H# zOj=eu^x^UWQN&a2@koyUb&^^Aa<>x6*f{F`b`P|KDGZKjGK=f(na<>4ePDNF% ze!8fRu{EsWPEcHac4qet_H80{)9X&2t8Z z{r;b`48V-Sl9Nlv4@=j&W%CcMs=E>Niq#pIMo7;wv@J7+f>TijYPg5r-=K|x7S$`H z1Z=;D`L{=BXVaXBrzi`=tBFR0d84K0XFPgJ9NzLbslYVLXF*%b8~Ici%Y@hAlYrZh z{s)DNE^sJVnjZjB86X~1q5*j0+Z{j-0PwF4E&WRjnwbyD4^OQI zL;e=f39=>LPh5{3gwYH&?On4A_)!RY`OnqvC;3J0LY+x<*8lKa=fqDsVsS4zvu$FL zi1Rk|pN5XX!dP4N(O04mL#mfgb5O|XX&dc4UPdJ_o&O5sCLLsBQ(5pr1I6TpD5?zD7{gVvudt4z)aw^FrLI-GTo}xe>29Mm)oO{J z;QKzJ1<`E^{pRVA*YWw-u|Cv+*u>Zf8{+v_oXfynoV)dT4Hrh!KgrZ{7PZ!2qe3WEs{Ib4G8L>2G0DH7o#Nl~1_%)`$)j2V-gxYz>) zE#{$-FO`RuSO4A6bvo>Ud^jEph%G>M<`33M_(Vk}KY{W-a!!CSxtzi$Rcz{L zyFm!@>(}_+UIlJ$?ojJzk=@{V*af!{8>xfFlL>WLnDIr3X>(1(bP!11R;Xi%1buq; z6jKkTC}$(QX0R5gy)u}ROX+@=d{ggQy)TO4dqaXMZ>AdkbxPm5de|6N(mFXPC(fgB zp(5RE(Z_?t3k5=7k{{C7*^FIHc!;G0O|p!9L8V}Fs4{x^L7EC>($32EraF4{ezT_H zDJEDDzHKwb4R3HNZgK&kDOmokSM8v4}q=$OvUfqy+Jj&zL_6AFV-Mc9PAm zQo9U?JLYKWVntd?yU?ZC)0a3jY>!kPMZJPy^!u5kec}UdafXUX_4M_h`t4JKU9{pK z?T0D)H*pDmyiH{zY9c(iT(YIM@N*!Eu4=YEri`xo{t|us@Si!T0u7-SgidZ;E<#SN zTr^77wajx+EWke&=$_$sWu;u1wfqX z3=Fa&v}e>*Ip6db=dk;KL7}(gR&r2FS^QKX=gS@%1XtqwvDqK^LjpKPQT)}jAy-(q znU8J_L#vqOr7xu*qPOwK1sC7TH8mu0<8FALFE-$KmooGGRjKiYc{V2g?sZC~TkOpI zJ>wUN4X!L>*a*5DD(C{s3DAb^zuz%PcJevXcI@FB6=JD*Qmz0Kx}QMlSVCCUiuiW?yFP@4ecc0ZrtnrvfCU5@KGAXBO4d&^OW=5#&)P-;SCD%(>Zufb9mg!-$gPWxX zH-bL4NWGNcac{m|eZ2G#N+4neQW%vj-!9l?fr=S)p3l(nL-+q&2Ma-j?>%XXtw`po zI{wSkY9*<3j9mi*k~Z}bFeTPCBi2|a>zn_CsD!dPr)1ZoNO)HC%3BQY9Mo~%B3iq& zz5QN;H>Z)wm;H{;tn!!!+~E_)W;3YsC6DzYvtHlJw#etrH-@3ENU*rL*g(@MA1pXx zQWLNVyoiLF?7MUEj1YHCI;ZRZsTDZ>z>TX$T0#*?DMNv4ZQgGLb?sKU=?s{->>5LG zQ>S6_ssfFR%`ZD}_R!0rFBcd;wF!$s1o{cVY*5?K5Svil8L!EasAdQBJSd`Oq>%xy zKIdc${}WbRtdLdmz4FfO(F9>;AKE_>fQff4GF@I?hHNHZw3<~N?`j@=-|T**lPAfG z`{Nzgj%H4mT#R4a$~fc=K^>YzIu>X_8=WR)=OQf-!jp0bv)MRtRKupLo+RO*i+}<9-s$a(H%x~e7PO36Ze<6=%j%L-%gVDAP(P#edWx`Ymdmz z-py#WB>&YVlbC$eKT0_R5B&)3?!*u1LXHDW%0&`rpT$#Ogb0QF z$iYymLwvysONfwzs#eCoFQzNgZ+{X;o>`hYPepKAy9Hj^4Ut0bQ;JNPE43YZpo5+v z2r!eWM8_QAse}xu3xC2HM=aqg)86hS7m(KAAXfxsCvv=qKT%cbv`>a3ZJ#{~YWKX& zgoc-n`v%;0^0}aDOaFUN08kxes^@miux8C_fI%IWqh&a!lUu;T$L6HcDYOr9)FDrfPmYFYk!Hg%fQ-_EoZYIML&;?C}2 zC;MWPsoAyCM=blU*AVv`W#6MAm-|KH#IqECicQl$#gZ615RkH)J9}vH>B_@ZZz}5v zr2O&YiHubM7%2Lq$&JMv2@Nf<1aA%lhG$8pST%zha4wrs$Gn%}sqkX*JBbVQa##a* zhQq$Q8>2m#i?nDp(?y3AAQ_u1s-&_79H9FEs^yqQ9Nvh+pW6xvV8(=#;(ip}JhU07 zYaZ0~duXvT=e#frp8SKW=lJ`t!+(^-DSzyI0dg+_Umyp|Omg73$*iWt7 zNtmGQ=3f8!3}SO2zN4Vg@URI>_p3oKV$xkva>$>$S(SvFg0}3*YM5!rSy%{f)}#yD zyCRN#)G&mX*Q94+-NIG4#pF^wQst!@;`082=5uSS;bH7qeKaV~Z zX%h)QR~exqOxLHhB=?a#5$=&^i^;@f{*O9@hfv0^hhW;snMr3chN-vlzVnknGeJ3u zYt&vBnbf-UGzn0*U^m?1i)6TwK&ljA%H_{~Nyvh_g%8)S=dgS(KJMX#nbG!TX8ToL z%Qvclk&I<%G?L#E!FV~H;n;LP)bJPgnAJJb4Z3#w>8)#XCt$y;`5-)x@msu!(i#76 zHNal|{ZGzIf9$m%GK`x&E5Xs`tq#GcKay{`0%&a*0tNd!p4r|H)ZQ=YD4$2mK80Qn zEXrLk^Il7Bt~fFO8T43Y84qgcg6r3ZZxO4PD5*zs713%rd&X!7aBeji1}vn8*| z^^RcYF+TOI=%0IJ7NGF**&Pb{k0qERLsu9kA!y+;#1KcN>saMGM zsr8Y3$e2%;v*xXuwUy=Xx>NjUw-~Q);sR0MCl2+icFlvXsnOomR`ko`>(|sVPCiG~ zifp{dMAOj!OPM{!ALO#AqwlqnQSkD^)|Kmj%ECjJC{d#)KQhw2wzQu{QYkVLA3u5LGO~JinViBaIK&}1^sOs`AQewsDHJ>sAdCQX^vtDXt#Q!$;rIEW{ zSvz1iaw`c)oB<6>&&qoKPf*= zOR-RyH|xma)Mje*K3-%)9m!Y*#-%s*TDykwiDP6CVJ3UhDthzJ!&NbROwJ(%W^r?U zdrn%`k3ke2`)#ox0xGb-np1vTzV>5V0GW6Et?4rjLzGY;kz^7W-em#B;5OVHV$6zw>iuT4Yyw^qa?Gsd1l8zg>6}%T9RQhunJQ;1r+T3(y_SqR_4?p|;r*I=%mvBzu~;BlCRF zWNvEK4Avq&8+Vv1$@fpTo?QIGpVaWDwZVtV0?AB|8uhCjK80LoonV^vrb5H7Bv{rp zP%looegt8FB$vA^@R>TR_Kew@3iO8cS1f!_!{PU&oJ|7i0Dp#oC&?pP}{7grVktO8N$U`QdW)j`v=&vt(-gNvE8cer{zqf?(05Cru&!U!*sg$yye zGnyYeBfitE5}0gzKPKOQ2>zC!$ojwpxWIF4lApPW@h-+SPyVbj5Db6M=&IqyFX5Ea z-D;vH89!SC`Hk`B3!KnO7)Ds3fb^HcG89;Gowm{GCP|2)uC7%ua6DIL_qYG*UHnq& z)c^x09aQl@u_1x#VqDTM{&f22x#b#dWo)RDgR_?L@>+WQr5I>j z+e-7n@8PS_G3 z>Mf0k0;yKhr_XQeDoXifLT>A#J5jUu<#3Uwdx`zopU?saPUfy?;W%PJ?VC!uPd}nX z&7A5I2mru7vm8}rK( zx;S_G?1AOCT}Lmkq46fKi}e`e*pa7@yPAh)VySam@t~$40}OlCxZwMgxFVbK)P-ue zW9*my%{5U=#s8R(VW{2|3jQlcLcj9o@cw%8iS=H=gYL-x7O*x%U%iAt?b>JD2k~YP zh%r*0E)ZfqFTWQ++F5`wHY50If=PVC{2;A9j3l(EHt3tqn`pvPLD2-k)$a~m znCu<1+NkVzk(l3DA(bgt5H3#&itq7X?ik>*3-7RY?eXF?+j?}JefGepUOosB9Jt}T^kMfa0`4G>dHJG*~r0xVGHj0NA9!U^R zVnDz#RLJ*>Hy1d4|BB4|vWAVX5B}^)1`*sxO%a6V?g(L8jJ84Vqe6~;x;80!opYOU zEW_9?<6>6vd(Av;pTsc%YLpkAjQI6bmWDz4BbChVvc`!V4C*Z0&MRBChU|N~G4U1Y z;bijig?Vp@I;Ew*5H2=ZY>;eK8_p)T6Ep>EgY& zC$Jn`EIQqVn1&vl@UdL6nSRW!4q<@rhI3sa&n};nrVBwY@3wVBOo?*ZomG0W^PZ8Oc06 zCZ&s4GGR;nYix)IDM%t_-O=<{sV|t2U-uHuwz0X#%@vMz3X&Oz`AFr3a832JOui@0 z$fA)x_=J^V(X&W34aqE{&aZn^iP&u@+cxBGFHRnX6VfF2FN{pi~X>gA~G zXRDPYtiSYK=o2+q=PgxGeSSOCd&`6wv`(^j|B{A<7N(PI)N3Y=*267>;TbQqIC(5Q zIzrZNqv}j#3|+bC`66Xx<5^i0Niqv#PnJg``3dm*3ht^qzdeUhM`QHFf{`tsylIA; zDyszSxH%I0Xa4cQ^?d!x_?^aB_RN(O&5gr2rdOWpvfCni0k zw-RMCb zWVreP^l9wDtj~MFf9ArGp5d4-Zh4l5vGh1$(GzTVptYLuUyDMd#!bD z#Qa3y|CDsq0Z~3r|BmiX=|(_WMUHNzK|wkd1WD`?QYi^RMM_fOIJz6@?&jzt z@80M8d!PSzXLe?G_OlbuYGlk%YlrQNSyd8oF?LV1Cl%=5?XgYjr379?{-uO3;56V} z$jjpYnlxY1#{WpN0{e*x=6J{vOKBPQ2Pt(L|5UH^C^o^G&4PVUQ$s_)Na;#< z(o-;iL8838G8`a$Abb)X<_ISkv;vR*V}2dVtp)XLn9KB*^1OP=aK!RtVo!qG*!+aT^~TdGk~&t^)q{j(P<9kSeg8&|TJbaK}*n@(drI_~G4n zE8ATy=IFiaYKS8i4rsj#L%mfi($J7K?BQ|6U2a^5YH}cq=}4v|nZsG#qjGFxVO&MB zN`-%B&3-m!Mysq$UORCUIg5|IKp172_b!8&#Gj)T?gw)`dIzn}HS(*+?ZJ}24Wdzg zhkV{!FTB4TaF=@30Ej0R{=xHogtNps_HE1#&-3Ft)%AZkurqSWvdCKkvcX;x;5Cv; z80qQ_FGh}zwM~?ZbBQ0UX$+PoZCz|D7vq@Z1Ie+c$;|v-CC_OCv?VocR$o7?$ga{e z*Dh7}z15Kt3oeGOX-4W7dc?VNjUks|Jl#ANNp)E_tKUHRvG#&5CBauKDQis2&A;zU zdRS@XR=t0d%ktO+jH$FN7!#5ZDei%}Q;UyozooW?$b}cpfs8Y8EN&9Ft0n>vl#|5J z4s50eC{CMDW`>*y8)XXW9(LYDFh~gg?}$b8fv|mFw^}&|WV7p`bg}G$FyUBL9pz=get&LCA?RUVn&gEfn z4(=Xj_*6@LOa%e>7!b|xmUFX8K{SdT0GE~@57XuykrC^ir0f1aUpg2J!10tVp<@jb z!c6C%N0Tz852R z+hdA15CZ26Xga3N8dtI)QM)o)9tg$tB=E zmika&*=2pHayvRgnnM-w6%x0McR!{Ja!DJvm9>!P<-i3a~Y zZ|e~I^PhkgsvO-f)-6FDs_Z+@&xbTcNv4m+M>ci1 zQsf?-rw2U9&II$lrRbNz0*P*1dy_^d5^yb8S?;bjauw^$mv#a6JW+MS&LcP3Pu zwZjN>X~J?>4@xOp9{<+=MaJEf0+sF#H=p z`u6c-EvUMvf8I!#TXgtf6(A37e7IaQh>aDOjaAkDm{4!t(U~0Zp`x-!iYHCzkqRAfN&_Gd*wS zJ#*4?-QT6_dDxBTZ;>>BIdE9rW%D^Bq0D~gDyyR$wpGbZ>;B3P?9XGr)t{&1*!X=s z>7ZDT0fXxFo&U!{C8_V?GylAO3|rt6Xj`hh{pom-$Hiau@4B~CgR1Au|D_#7f{jCc zrH7k^0)!}VK*&&~_Vb9?zd^7eyi3u{1HvSYx}0&q79vz)f?`?h*%XS>@grVoT;LQi z%!}sI!;r)Qn!)d}qG5_Ja-gZwgdow$yJ!-y_ljv>jCyM&x@ax@tpuu1IoGtWCRt>@ z+c{+p5=6Kq9-xG8EfKU%dOyu3--h|kRwY2ngh3YHI(aslZ8&i`bxzLy-FEn-UyY`~CP#N$f(LpabFWAV@O z&ReqO3=-a%D}RTx^y79udlPT`XGibm5#STe5=<{WLc>f=%>rA0EQkN3tq%@5T_L|2 z$EHXp2tgO>cXFYN&{mB<(1$4{%E)t`O#B%LUyrc6J)3WfL4ABI|N3?PP$z#3d9!vq zeM@-&%P&|M2dkf?D3+-8W%tfIN%4Pl%YB=}?98X;KdND}IPGy1>*^fcS%weNE#IXP zPaPyO`Lb!gw%Wp&&|Sr%RD&RQNFlQ{OS!vnRz46k>BhJPc-9><`~uN)bqonTt@#)< z+x=7or5$M1;_Ba*osx z0+6+UrpsaY+k)9!`!fK09AwStDu2J~N2S89s0NkKy$G%U3*;cA{XYg)uvPKnhG61J z&2yF@KaWBPTZ2>42PNMY(E;pLR?pn2aAp0-lk?jQ4|VSI+fo$WN?^ITQPb)}fvhRV zgC?P!A)uA`WrL8jU|3A>uHqRLfco6SQeqm&f2aOVYfD8%D?&l?r{)ZZi)*|sqni{k zN)UPv!&3uY689+(D2P96v5|qH9RK}+)jw#Ky&GYr50bqT(PcC~is@i$0E#a-I$Qj* z`e2xbW|W)a5-ph2#j)OxxpF z6f`)VuN3GS&<#dQi4r}RWR8N^=4%*=G;&R2F$f)@JQG#=^9!cn+sH^MNr-3 zXUW-ukj;IX4fGFv{M%A5cSAr0q+?Uq60Ur%uv;}NoJAJhV&vV~s6e2r4oolW^%vdQ z+BTYX&5)hdLKz}jLaQ4cE3TCgB_O&k_P3f>;rRRnHZx<@PEohmkii6$>}V|u*Td@Z7{+DpU`HtAjH!_6log`r zqGo2qr$K}e1PWR?97Fi8&i9KT_M6Wc<-cNqSAumlM784F%p2VTRF+OD$YdT6fWutY z-0f+eGJWW^PXu_k%e);G`vH@y11qC3mq#*QXBfQ{h?-?;aQH%=(mnH`m3*{*2RZ3`{t4sZwvy=* zIVZG72M!s{H@FyLDmQcm-jJa8iFU92*FvQb4~o%guw|0AszoJRJrpB8`W@sIu%6`8 z;jnVTJtr;4p#xNg_NP`|YNP3}Ef-ksE^eaGBXdvq@%61hpl=0JQjcAWB)iK`7{a#e zaP_^~bIa_1f=F13eG0F)m7Dm&c4A{br;+nO*j`*R_x9CU{DMk-1zC3(uoc7V-A?ht zEL2yqi5&vA=cM`Zhrc|FPO|!ZI_zWm=x6NOioAI+AyycvW{~I*d*aJEM4k+zOaz4N z#TJR}o^`YS9!yHV*E6W!Fb= za0N>b-o@WrBQ_GjkDm=+VsU=?oEAEStHAn%^5_6u?`!UJC-OPdk%+Ejrn9e-HjvIN!cpcTpbXsC~CzM>eRhMGFK< z4QbG`5xYk*2dtnbz1whIb*Co}h=j6+UR_@or&EG5RN5ZqeI@?Jr74(!{ zvkHBAgWRatBN=fa4mmU&z}B6U7IhFa26VDhRQD#J-1%pY-B-HfjQR-vpR9K<>>nT! zcwzW-8=~8neZ5qAmt1{?!^ItU?6>JAwz9dn>M$jI?pot*jsLL^z&@|MO;vS@ zowIZ7#PRODH7V5b{cYH3!}6yCuXG7m0$1Ci$l>9bZ#aHEoZJEgps7cvYtj1$_k(Pp zI{F`w^ubG&!?*Go)YZ6QVp~o}m0zRzV*Bb6iC6L+^u(RtwW^)jb;MKpqa$7Q>-&jOxa7KkDOO^N&o^%ng5MDm(i z{EEBEEzpWJB~-h5_S)yWbKD^|L}QQ+0G%>wjsg|+>A$3_??sm(ZkM)IL&O#Y9GwsC z39rsy$n(xOz}*n(I-0?y-+V8(HkGv4mZ&ChL7-Eem8{Lm4^W^UamxQ*@}dvTE=)7|0` z7XeuN|Bvdt#tCx$#AecQC_iQ}!RSK+MFh;7BPHs{kMv%GgvB3EpG6hEy2^K;B$^NQ zVxWo1rxP+*6*U$ot0i0O56Vl#D>VX+$j$U!*M;gq{MZgHJCjxf85Gmt)PnkO31ema z0W$9{8Y{=8_3q|iwF~@Dg!m0IT$%(N(@F}2CbRpKs^$Cyl;Lm}-V!lAeBf#iWZz0a}3N zj*FvcP5md0soyyvxLKULE7s4?0%X`Twx*y&U{yfy`|oT#U^7Y2;KE{BD?|6Ih$ZQs z>U7tkDuZO5la zxei9dsHK5NDmaDYsTGPgUvAb0WBYStB(mR$SDjhV+N5=OL}%!|ayw2`AYine?ckBA zY$r!#EYna;F<1ukomay|F5R~1INSBX4Qes{HHg8lJB=~hR`#NU$5Y{=rjSR84{!9q z?A(n*2+OvfE&snQw+sf1z@c)3h7a5=Z)9+u>Vp|@@HJ~n9CSTh)^gSlxddL6UhA~J z1QEpQ2%EIdnKfsMg(GhYmnb>}1KX{dwx2Agm`AFB1wfJZn6YE(YQ846&HFDw+9}~I zF^?Uk^I$kXKonHL;xW&!HeBSmd(Pl(-WR5R{=Uc6d8U*o=W@jY9NI8Nuj7WBorKu_ z^*@~`l>DWhL^^1d;{u99v2x;sf(Dh+u?M&Ov7By zA?1Oi3a&N5fz$%z!=BVg?uOr34@5ICBdQG7#>;1Z0`QI$RM*8Y-__wPxOw97{kPKx z>jzAMpG>S;ddxZ?nl-DK#ZLz6&aVyPMx>LI1<2NOx@yAidtRkxKe*}pLImPS9w;Pe zaIT{Fe>ObhcwilCba@N!|F`^}$_rqfk~WN^lOg5T-lxx1UruqBOhDgSCOa>cX!AK1 zB*Ok1{q7$DA!=z$IU)~pWLu2;{u#wmV^A*22pG&r3u0mxHeUWJrfAX)!5^*n?{2XZ z5O9il8_rG(QsRu)q^lHK{*+bxY<=dWvirDuY1D1{(W!hdz;+>)b&71)YTi=jcF5~B zL@pjkZ`#(@w<<1oWu=8l0XHnES4>W`doIe7yXz!$lKi~PB*4yXXY4i|KX)yMhfWV% zIW}By?69q66tb$1qkdPz$g8aQCDHDc^bGq22vC@mRjZ)&B$i0=mh^gc2c##^tBsu)Y*WA&!4L8WbO52fJU zZO#ud)6m<15mNaO{#c`%`QB&73M4iO*Uni(e}1nT&>@BH8L$&`#`X1zJ4DOThySB) z=v45LG(Nc3r}e}Ay%64kd^znPVo5g3H~qB=Zdf7Uv(uZI{ePyk5W+d4WxE81C9M`Y z760Qqo*NwR;9u$9$fRQuiF3}fQ@xpVGYFg`O#TkBuXMf!+K$h6?fIVZ2`;<$4c}O1 zJBd~zf!e{*H28mlqu6H1b zo`88Zhi6J3>`u`AI;g{B-%st=PNp~bzA=*I7WVUp>)j3v7ckm(7@&OnbSC2BzZ{UA z!;o*tGqf_#T=-wZg%AD?9Kk<8QUrEd{1sxBS)wm2S37|$dRDA#*WQ~ET428ruub$d zRo|`i@!@fPu2A44gu5Kkw}H0-+}L` zbcq4q(rMX|!t>i|L-o=<2EHMWe4jzPWMRJmcg??jvt-hH3vmDA$Thu0qE7Ikj>c-v zra`+vN1FlZ=3`{u@lOziEqR`LtIG$OObL@!mQCdxsX}ANZS(7CD-o~bVI{P@0En!c z;X}^v$Cg7Z50`nR&LNXaF8M#qm0txf-~6Y2l1CM0t=ba{nZEF~A45UHbR-f7g8HGg zUg@Z_=ISK!?ZMKR<`Fd2A-b<{vt&IeLPBT10h;IXeksS=gFDIF9d*1f@H&>hMXvRbxM%mC9 zlPq0hK|96sO5E1+AYHT6h++xA1YO~8@K{!v9%ctVPS%_Y)Vg0fH=mw{yKXFl}9fJhOCVkev|TB!w>C?Qw-?XX_mYu!#C=*4k6{KF3UT)}IV3 zmnT$L2z#2S^8J(F+T_pkntRfoF+S#EqgxfH{5>NiC@JZ62D6CmD#_EgIxm^)V@JN% zUx(_T$r;t9p)(VF;&S}*WLT-3l{SpOm4P}=@EoD_V7<{SHp~|r)G8X@ z?n&Ad_p-*9^!OWCsQ?PH9%rC;%{}VgIVbS@8*1qs^X|~!I5=o=v5^$G&JvyeR|{Z^ zc?wwdv@j-FZ_sdpuVo1mYK>9zv3Eg>FCjJ>Kl)8N$PX5bPwDQ)1 z^m~c-l0E_BOUwGO*%X=unW0Z%B7a<)NL|wFO8C#0eU~5jefFgjZ{Xa2!HsR?E}or2 zhn)K?YtB3X8A#hZsM6E>wW<&seZ*cy&7SQ1zBu8okLc9XoU*DCY1`Q5-moxJ-}Kwz zdiv;vTn~htG3X_zU?G2f?(HiZX~5{M5X} z`jQ*BgNkcUyMcJmbTAjL-eEOUDS6BXXlpbdivpX$j?m$2!r?5}#uva+9|ahPNm+0s z=8*JL3~{=9B11WAmK_jc#(ty2OD+Hsix%Uh$rH_ekj3MYct$uZtL_DA3}8$&a^f!^^(g+5%g%o3 z-h`v|fXmLbJmO?lyr?$^1qRg)y&Vasx+wL1bcu=crLz?QW{MNrdS?0^E-GgB*TO>; z?L9i?lHZ`D?h%#PUHuZTcjYtBO5>QY)_}Lo8vpEx**TfYho*P5>HCP=85v|`b2Wt= zCq{sGdSf}tf?A#QOfD~rXFFEk^Kp&WYk(K`A|-WaJ{NJ7@X z7w0&PL<6-sX7R&|_mQ7Evi!F>?o@hcwaaJC@FSehy7>`zYK^N@r@lL;YNWR&*cy?O< znOa2zDHK^&IIpBy79MAc&F4%CeQBzw5q3^P_}4_-v)X>cUPJ%n65YiR_Q$EvJM_y* zuY-{vW)MQ|k+{=1-uKNqAr|-hO@(LmcYG>r+l_2JPh5umK;Lf&l5AIT>+$jMOp0To zOwsTjxG^7`>u4h2=g*Or-#Dh=9T{u5O&qS8$Do1(_~aQaMmurt z4f|dV-82d&<3|AKc%aI6A&>q(R=s=OgyU4T@yB+fCxRpzuKwDz)j zr|%v8m6v*w6i?@IrqqNM8>5se05BFbfC&MS^=fF+*&TIHEx3M((RCc5Wj=c!^ge}R zBPT{B`t|KIj>vD7+^L7C{!peYo}u_UTtnjm1c_wr7e}Y3V+%UEj3kd?oa|h$+K=ri z89TT)5>u0z*;XMZ=8>1e0|IhC5qHSKMU?!-uFYceSyC@mldqfSkWMbiwuap9Y_^vF z6Qq#Nn0s9X!GBY}-@k1v%!+H91pb_Fqw)tz`H(Z3Pg6sek`f79>_gk;$PUU_eutm- zPYvIOoTpL3|C@fP#t6($+K&I?J_WjP*JjxJ3a6U_~q z5I9%CE7>3FsCYJiEV^n5E#`}7$mQgC94=g_2^<9D1I`KC^@tjzAxySzbOjK=69JI@ zsAxA_3N)JvayiW=V>5qt}}xu!=ozG6FS8+15eg>2mh(Z75> z@$|fR8-A3rU`o!RGi=Y|zMY2^kMm5P%%AZrnP{8?I028vZqU2P0F!qhxf@>OH#P#% z!Y9qEOcDZQOB=UOGb@5sIDT-L|mq@zKh}fe^+Dt%B?;v?4)=@|gWrRm5dr z*GGB&7{2bXe(Az%jWl%UO;ihJ6JVSTU|fTxOpk3yD+TeHS)}-Qm`ad@TJ#a#1ddiI z(s>{NxsP6cs)eTy;?@u2zhv>_io@cjOe$(w&gg8BJxSxA#g{ioHDcoHcRqJ3x7fMm zLke*RjOjkE>gt>5et^i6P0r=q?w-PiLP@kguV`@CTb2DCn?GA#!rjFR@QT3 zlJc!h6ub+^j3(a8na!?*cul;RtAZV?;)Y4}w}~GbKJ;kkGU@m(qgp(P#eG_vQ=MQ) zy0vs_dI3Q_il1+TkaOJc;At|)iqY{u`!4_GGkY0JGAG$KFtH$|0pl;Gg#PI217A&t zraZtbk~H(N6qqY&Bqd*@6(PU##1Bju7TE__g-Pj)4(csBPEFSDjpUURh6YYp^lke& zaBg_+7`@=^pHlLEVF1FU<#LK>>(Wy1V)4pcz{j65Ih%dT(A25wVf#C8JOH8Qz*a@+ zQdQL*O%#_D{lPFNbBZt~YrP4Z;rcBGAZDh0vjk(ZjOe_(8|>#L{=n=`qp~R~QNiky z4?V!EOnu;Y`rV=)41j1G&!ZV26YnP_y%{Q8g4Hoc>sjlj|BW!!2ea#!G=AlIf?Hd` zjo&%B`*ZwCDv$kaScNmbD=gYbV!>}pX6|2G?xVRa^tBy~(CdaZR^TN_O*O#|)Vw3WLt=XB%mA3e<_-Bw< zn@BmZ7VTsIotd@QT@0fOu9r`8YZGg{9*nT@JBQp<;dev*w>dk70Ww;GWm8*@(S9)X zD%aql+5`3ccSar;*`$WMZ5U@Up~3KnKlR$hmNA} z6D7I!DJ*Z7Y2-^sbxu?X)kxEH_~-gLtQX2LXt# z*#j5*ze@6VhAE-r4Ofu0;5FMk-R$HQ>h7Y>c*0l@ucB4G3DW3vvH>ULpE>D3lQ+IF z{~fRRi??mbQ?j9c333R&jTfV&@kxrO`}EQd39P#@Z09%elQBio8z*3zAdPp{w&D#-Ph?y z38=tMEd>6 z`I+!*iZz_jMY`cWtv6>f!ZyE*DS5ACZRqSTIf)oeahRdy#-_A7Ca zZb#Tm%`pAZ!SCQd+)+Jgp>n~%Bh~)HNE>ZJexYDRHLmZ@(IF(2qL)SC~(1_xrrh`ym6d3`ZPGtakwen`;eHiX)nA9 zEFt1b2BG+H6FNJ(NT8jaA(F6FlF@6z{#S7otG0TEQzhA=eOa`yq;vGEl3k;+H&wr$ n5(V+d&kOwsLU$8zV4s9)>zhb%eB)>Y0pD{~9hGt=>xlmY_3aZX literal 0 HcmV?d00001 diff --git a/src/main/resources/createastrafabric.mixins.json b/src/main/resources/createastrafabric.mixins.json new file mode 100644 index 0000000..8292e41 --- /dev/null +++ b/src/main/resources/createastrafabric.mixins.json @@ -0,0 +1,17 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "ru.bitheaven.createastrafabric.mixin", + "compatibilityLevel": "JAVA_17", + "mixins": [ + "DivingHelmetItemMixin", + "EntityOxygenSystemMixin" + ], + "client": [ + "MinecraftMixin", + "RemainingAirOverlayMixin" + ], + "injectors": { + "defaultRequire": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..ea09d10 --- /dev/null +++ b/src/main/resources/fabric.mod.json @@ -0,0 +1,31 @@ +{ + "schemaVersion": 1, + "id": "createastrafabric", + "version": "${version}", + "name": "Create Astra Fabric", + "description": "Addon for compatibility Create and Ad Astra", + "authors": [ + "BitHeaven" + ], + "contact": { + "website": "https://bitheaven.ru", + "repo": "https://git.bitheaven.ru/bitheaven/create-astra-fabric" + }, + "license": "GPL-3.0", + "icon": "assets/createastrafabric/icon.png", + "environment": "*", + "entrypoints": { + "main": [ + "ru.bitheaven.createastrafabric.CreateAstraFabric" + ] + }, + "mixins": [ + "createastrafabric.mixins.json" + ], + "depends": { + "fabricloader": ">=${fabric_loader_version}", + "fabric": "*", + "minecraft": "${minecraft_version}", + "create": "${create_version}" + } +}