From 328b65bfc919ef3234f82786e6a51d5dd808da45 Mon Sep 17 00:00:00 2001 From: Arondight Date: Fri, 7 Aug 2015 00:30:19 +0800 Subject: [PATCH] =?UTF-8?q?v1.02=20=E9=A1=B9=E7=9B=AE=E9=87=8D=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 14 + Changes | 11 + LICENSE | 674 ++++++++++++++++++++++++++++++++++++ README.md | 19 + bin/slacklib32.sh | 71 ++++ install.sh | 59 ++++ lib/check_environment.sh | 66 ++++ lib/get_arch.sh | 41 +++ lib/install_multilib.sh | 75 ++++ lib/main_window.sh | 157 +++++++++ screenshots/screenshot1.png | Bin 0 -> 14050 bytes 11 files changed, 1187 insertions(+) create mode 100644 .gitignore create mode 100644 Changes create mode 100644 LICENSE create mode 100644 README.md create mode 100755 bin/slacklib32.sh create mode 100755 install.sh create mode 100644 lib/check_environment.sh create mode 100644 lib/get_arch.sh create mode 100644 lib/install_multilib.sh create mode 100644 lib/main_window.sh create mode 100644 screenshots/screenshot1.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1246d75 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +# temp files +MYMETA.json +MYMETA.yml +pm_to_blib + +# backup files +*~ +*.bak +*.swp +Makefile.old + +# directory +blib/ + diff --git a/Changes b/Changes new file mode 100644 index 0000000..3f937da --- /dev/null +++ b/Changes @@ -0,0 +1,11 @@ +v1.02 2015-08-07 + * 更改了一处执行流程。 + +v1.01 2015-05-03 + * 现在脚本被当作指令安装了。 + +v1.00 2014-10-10 + * 修正了一处不继承环境变量时$USER 变量无效引起的错误。 + * 修正了一处不正确的浮点数比较带来的错误。 + * 更改了一处执行流程。 + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..9baa0f4 --- /dev/null +++ b/README.md @@ -0,0 +1,19 @@ +#关于 +项目用于在Slackware64 上安装32 位运行库。 + +程序会自动检测Slackware 版本,您也可以手动指定版本。然而程序无法分辨Current 版本,请手动选择Current。 + +如果BUG 请提交[Issues][id_Issues]。 + +[id_Issues]: https://github.com/Arondight/slacklib32/issues "点此提交问题" + +#安装 +``` +git clone https://github.com/Arondight/slacklib32.git /tmp/slacklib32 +cd /tmp/slacklib32 && sudo ./install.sh +sudo slacklib32 +``` + +#截图 +![截图1](screenshots/screenshot1.png?raw=true) + diff --git a/bin/slacklib32.sh b/bin/slacklib32.sh new file mode 100755 index 0000000..1bc8ede --- /dev/null +++ b/bin/slacklib32.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash +# ===================================================== # +# 如有BUG 请提交Issues # +# https://github.com/Arondight/slacklib32/issues # +# # +# Copyright (C) 2014-2015 秦凡东 # +# ===================================================== # + +source /usr/local/lib/check_environment.sh +source /usr/local/lib/main_window.sh +source /usr/local/lib/get_arch.sh +source /usr/local/lib/install_multilib.sh + +version='' +target='' +arch='' +use_dialog='' +work_directory='' +cache_directory='' + +# MAIN () { + # 决定是否使用dialog + if type dialog >/dev/null 2>&1; then + use_dialog=true + else + use_dialog=false + fi + + # 设定工作目录 + work_directory=$HOME/.slacklib32 + if [[ ! -d $work_directory ]]; then + mkdir -p "$work_directory" + fi + + # 检查环境是否满足 + check_environment $use_dialog + if [[ 0 == $? ]]; then + exit 1 + fi + + while true; do + # 得到Multilib 的版本号 + version_file=$work_directory/version + main_window $use_dialog $work_directory + version=$(cat "$version_file") + + # 得到架构 + arch_file=$work_directory/arch + get_arch $use_dialog $work_directory + arch=$(cat "$arch_file") + + # 构造缓存目录 + cache_directory=/tmp/slacklib32/$version + if [[ ! -e $cache_directory ]]; then + mkdir -p $cache_directory + fi + + # 安装Multilib + install_multilib $use_dialog $cache_directory $version + + if [[ 0 == $? ]]; then + break; + fi + done + + # 结尾的清理工作 + rm -rf "$work_directory" + + exit 0 +# } + diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..7350db2 --- /dev/null +++ b/install.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +# ===================================================== # +# 如有BUG 请提交Issues # +# https://github.com/Arondight/slacklib32/issues # +# # +# Copyright (C) 2014-2015 秦凡东 # +# ===================================================== # + +cwd=$(dirname $(readlink -f $0)) +exec_target='/usr/local/bin/slacklib32' +exec_file="$cwd/bin/slacklib32.sh" +lib_target='/usr/local/lib' +lib_dir="$cwd/lib" +lib_files=('check_environment.sh' 'get_arch.sh' 'install_multilib.sh' 'main_window.sh') +answer='' + +if [[ 0 -ne $UID ]]; then + echo "请使用root 权限运行$0。" + exit 1 +fi + +if [[ ! -e $exec_file ]]; then + echo "未发现文件${exec_file},请尝试重新下载项目。" + exit 1 +fi + +if [[ -e $exec_target ]]; then + read -p '发现系统内已经存在一份slacklib32,要覆盖它吗?(Y/n)' answer + if [[ 'Y' != $answer ]]; then + echo '确认询问未通过,slacklib32 未安装。' + exit 1 + fi +fi + +cp -f "$exec_file" "$exec_target" + +i=0 +while [[ $i < ${#lib_files[@]} ]]; do + lib_files[$i]=$lib_dir/${lib_files[$i]} + + if [[ ! -e ${lib_files[$i]} ]]; then + echo "某些脚本缺失,请尝试重新下载项目。" + exit 1 + fi + + let ++i +done + +# now answer is yes +for lib_file in ${lib_files[@]}; do + cp -f "$lib_file" "$lib_target" +done + +if [[ 0 -eq $? ]]; then + echo "已经安装到$exec_target。" +else + exit $? +fi + diff --git a/lib/check_environment.sh b/lib/check_environment.sh new file mode 100644 index 0000000..e4fd8d1 --- /dev/null +++ b/lib/check_environment.sh @@ -0,0 +1,66 @@ +# ===================================================== # +# 如有BUG 请提交Issues # +# https://github.com/Arondight/slacklib32/issues # +# # +# Copyright (C) 2014-2015 秦凡东 # +# ===================================================== # + +# ========================= +# check_environment +# 检查脚本依赖环境是否满足 +# 结果直接用return 语句返回 +# ========================= +function check_environment { + local use_dialog + local title='slacklib32' + + use_dialog=$1 + shift + + # 无root 权限则退出 + if [[ 0 -ne $UID ]]; then + msgbox='请使用root 权限运行脚本。' + + if [[ true == $use_dialog ]]; then + dialog --title "$title" --msgbox "$msgbox" 5 50 + else + echo "$msgbox" + fi + + return 0 + fi + + # 不是Slackware Linux 则退出 + if [[ ! -r /etc/slackware-version ]]; then + msgbox=$( + cat </dev/null 2>&1; then + msgbox='lftp 指令未发现,请先安装lftp。' + + if [[ true == $use_dialog ]]; then + dialog --title "$title" --msgbox "$msgbox" 5 50 + else + echo "$msgbox" + fi + + return 0 + fi + + return 1 +} + diff --git a/lib/get_arch.sh b/lib/get_arch.sh new file mode 100644 index 0000000..6146e6a --- /dev/null +++ b/lib/get_arch.sh @@ -0,0 +1,41 @@ +# ===================================================== # +# 如有BUG 请提交Issues # +# https://github.com/Arondight/slacklib32/issues # +# # +# Copyright (C) 2014-2015 秦凡东 # +# ===================================================== # + +# ========================= +# get_arch +# 获得机器的架构 +# 结果存入$arch_file +# ========================= +function get_arch () { + local arch + local use_dialog + local work_directory + local arch_file + local title='slacklib32' + + use_dialog=$1 + shift + work_directory=$1 + arch_file=$work_directory/arch + shift + arch=$(uname -m) + + if ! echo $arch | grep -P '64' >/dev/null 2>&1; then + msgbox='当前系统不是64 位系统。' + + if [[ true == $use_dialog ]]; then + dialog --title "$title" --msgbox "$msgbox" 10 50 + else + echo "$msgbox" + fi + + exit 1 + else + echo "$arch" > "$arch_file" + fi +} + diff --git a/lib/install_multilib.sh b/lib/install_multilib.sh new file mode 100644 index 0000000..4ae7f59 --- /dev/null +++ b/lib/install_multilib.sh @@ -0,0 +1,75 @@ +# ===================================================== # +# 如有BUG 请提交Issues # +# https://github.com/Arondight/slacklib32/issues # +# # +# Copyright (C) 2014-2015 秦凡东 # +# ===================================================== # + +# ========================= +# install_multilib +# 下载并安装Multilib +# 结果以return 语句返回 +# ========================= +function install_multilib () { + local use_dialog + local version + local cache_directory + local delete + local title='slacklib32' + + use_dialog=$1 + shift + cache_directory=$1 + shift + version=$1 + shift + + # 下载Multilib 安装包 + lftp -c "open http://slackware.com/~alien/multilib/; mirror -c -e $version $cache_directory;" + if [[ 0 != $? ]]; then + msgbox=$( + cat <$result_file + result=$(cat $result_file) + else + echo $menu + echo 1 "$switch_1" + echo 2 "$switch_2" + echo 3 "$switch_3" + echo 4 "$switch_4" + echo 5 "$switch_5" + while true; do + read -p "请选择:" result + if [[ 1 -le $result && 5 -ge $result ]]; then + break + fi + done + fi + + case $result in + 1) + my_version=$my_version + break + ;; + 2) + my_version='current' + break + ;; + 3) + back_to_main_window=false + while true; do + inputbox='输入要指定的版本号' + if [[ true == $use_dialog ]]; then + dialog --title "$title" --inputbox "$inputbox" 10 50 \ + 2>$result_file + if [[ 1 == $? ]]; then + back_to_main_window=true + break + fi + my_version=$(cat $result_file) + else + read -p "$inputbox:" my_version + fi + + if [[ -z $my_version ]]; then + continue + fi + + if [[ ! $my_version =~ ^[0-9]+\.[0-9]+$ ]]; then + msgbox="\"$my_version\" 似乎不是一个合法的版本号。" + if [[ true == $use_dialog ]]; then + dialog --title "$title" --msgbox "$msgbox" 10 50 + else + echo "$msgbox" + fi + continue + fi + + if [[ true == $(awk --assign=my_version=$my_version \ + --assign=min_version=13.0 \ + 'BEGIN { print (my_version < min_version) \ + ? "true" : "false" }') ]]; then + msgbox='不支持Slackware 13.0 以下的版本。' + if [[ true == $use_dialog ]]; then + dialog --title "$title" --msgbox "$msgbox" 10 50 + else + echo "$msgbox" + fi + else + break + fi + done + + if [[ true == $back_to_main_window ]]; then + # 重新设定$my_version + my_version=$( + sed -n 's/slackware \([0-9]\+\.[0-9]\+\)$/\1/ip' \ + /etc/slackware-version + ) + continue + fi + + break + ;; + 4) + msgbox=$( + cat <。 +EOM + ) + if [[ true == $use_dialog ]]; then + dialog --title "$title" --msgbox "$msgbox" 20 50 + else + echo "$msgbox" + fi + ;; + 5) + exit 0 + ;; + *) + exit 0 + ;; + esac + done + + echo "$my_version" > "$version_file" +} + diff --git a/screenshots/screenshot1.png b/screenshots/screenshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..22f2befaf7125150549b5f0776c2a638b63dc310 GIT binary patch literal 14050 zcmd732T+qyw=Nv8QIsN0kt)3_Qluk@5PC^Kx=Jqrq=a5X5CQ2u^bUc5w9o_;6_ieB zLMWnA5}K4yLc1^D_n&jWbI$zt+?oIWGnXOBOtRm+d+)XOTF-jclW2Wi^&1q-6d(}j z23X^*Wgg?F))0L%7uaY#nL;mCBU#7j74%n(l*jtMB@*eE8<_UNR8mWkH zT_#%%lPy2=QP~=7d+|4bps|ZpRSzf)84M~iU~b9J(Wva>wa~|dp|6W*!dxacSxyi{$=hAaG_*S+ErgsBZOQ* zUzqs=%3beMregX=5wPKbM7|q4+N^7}8Js&y5^R!GsNOYW5{kX252svU0)3D4xZFsW zaf4_kz1d~lnkNXxIH<|o-})U6+~)W%6pt_y0r%3}}#sLYo#DVrj9IYTH?_X!wUm3tDjcPoFkpAml(KMC%Z^FK33%(@%xxr0D& z`)CtA(o4>7?={sdgrWk_)(HcCfRx-bay) zl4|;{n9yxxz2V6YHhmt8(J~Qct?IVS3i#Q7y7w{T7@WL6EI9GHxKsb757KI3TyM)A z#{))mHATJY2>cL^E=|Tm2>lg56e14@H3PgMcR|UlXGZq@M#qtd7+VpDYrp~>8=KVVUe zr|Sx=dF__-dQ>KxRb3;qA|2j-oABU=&+~vep~lL38OD*h(}Kcl)$LQ)p~F+5opQG% z%VbwEnXSFwcXw=q&F8^sB+XJ#+x0q2q)-LKMBha0PI1x}Tdh0X4&O4LP5557RptKV z>*j`)!Y>2 zKJM`rnLJh^jI;L$8>xLnox2TBV6y|Yl0zB}ITR!UT7|)KNTapJqm@faCS`I3O2G;h zx`fI~K~lFXt}X`>nMM`Fz4bS*l1sFdl=OFb2aJX#@`qU88$6iY6a&ki{^lAVG%5uL zhm2oXr1G@OD85`Xh4J0OTsjYKh*n6_zjmvsK^Ce$oL#_PRo`?lA3Ra2l@ZW8#dw}u ze*^pYrm&dF=m&p60RaPlwT)1=)C@kEeJ{tX5;FBD_K+3}(HL9DZ2MZBiJB!v%lm#E z@mo!5y$3UQ!81#GqY5r>@C_TS2CT5AiHx$&+&-VrBa+1aPq7d-kF5}4{_l3vvJcBO z1kzD=)mLZmT4Vl{)X_hdf7ElRhR$PT+H=+uc`W8J)4oF-Uo0Zx2bEM6JHM z_d?n4K$rnwd3=FZddY=zwO*2PHd1>Nf4s_ns-ILilso3LS{Q|%Ieg_OXx?R2Ri=a8 zeI-*HzbXsOqHC#*piv@PNyti)$Zd zyMy)7`fu1Am)jU%Gh~6*9k?B`ZCTRdzHM&V-np)laoO4`b%KH2NGV^BDD)%R8~Vt! zq31>;_~`l6H`(L$FYk&kX(5344DDiTc~sn%>S(bEw`_HNH-A!>@WxwotYvm%2Wy;L z+)(d4#PFwnU3TR)s#H?*rLr!~4{{;~sY`d9sajj!^LTyc@HYS^ zxK%>Q$XabgJgF#@tR?gyb_Fj&1{-UKMY`Qu?qCO@>-E&yM>jc%BCY67NA9Pj$`7^r zw)|GqDJdsX`1I24Od;_jyr;tjwS-Wcj6S>RdY+@#qEKu)Bg4`vVyU>vR$W>lc;to7 z#(A!6>ERmWIS}jE1;>0Q%cF3KId?6awoLFwUbfRcJGz3@Elut#;zuwoJ*H(RAgLfm zY^vC9H)wyZ_wD1U6kNr07qM6#eC2NyF$a!cO8N3?z1>$!LTp092$F8zz&^$rUE)Bo zYikOB{X2_@doJ5K#i)bb((;M%;KoW>BZi3U`g7vmaTmeKZ19(}mLae;!}QCz{fWfI+C->V7u0JtRCp-Rb|Pq6+yR~L zJZxL>S`efL}Sim#eaj11@2JI$hsum z3BHy}pH|%6t%9=ZFe@!B-3jOb{_9+VH0eS~vfC7X31L=7XNUPG^F_LZKt(Ut>kRW1 zm!(3bU)&WCR2Px5)0|6ji#(rAhOg1Z?$d^jo{2^%x+t1}9CyjoN52gxSaLX5&-v|* zF_V(u<^xOXY)XxE!9jAPj;kG1)HOP%+GfNcka9OoJfgpK*K0oB-eIl!?!!xlF4v0t zG@S^}PM=6C9rT>=;|k5w^=ic9g;KAfN)ha2c~N)c^lT@yv%@hQ*Dze77F&WFyThg~ zp_2dT(18i}z|k#Bc4oM~aDOfE-TNz`m#PnAj2#`uXEpVLhp819b>tfC!L?nYS6*Y@ z-NwuZW*;*NC*}ni_6?=m553zYXkcbrG3{FjkoUm-q-N93*~`ffhFx1knz4`|GmMGq z#)reAMvubOo1d+x{|?u+E=tHBN;So4VAbhbNI)->=qc-M1li;S9hNEz1-olQc;eV# zWqHfP(g)M%J$%)2XRN5RSyy?Upu*1EKb~M?1->P(DU0d3iI26K{;hk1(ipycjjgVQ z6JUueF+wG;shs^-L?&j3r645NgCipphkF#KJchy;h#eqMBeS4-T(ranW<;uR1A#$% zso%ndlq)OGxQOA36G|F}k~@i-ntIX+z`cj$?3oA9rCld#ecuwT{2m4D>O2tH|HkEm z)zU!)cN#&{yf>N*!O=%YXsq+=@2xAE>a0+?JgmDkcH;*pVaq)}=WR)6XAz8#M{Vc0 zbR|DS@pL?*(x7Yl{`P&FLvp1d zr~9)*8|iF*A7?vHJO%jph>D0YUAt0=XJMudjXqW6fz5NgbD>@1DDyF*tD}ORk>c1> z-B(SvGYlXaI_;_^#+7l+lFE#~Si<&E30M3*hQbVMDHp#dapDPAoNGez((F3r%4_TE z@%ckB3<>3MW>KpR?@d>vv4B9?P57rPWthEDb)79f4CJZTm!cb$i=f8@a*)}L#fnx0 zQR#>XFBm#5p8ie@;$3BdXEwU!R?GhbW^YvE#%gsQrzAZB!J4k8b1u$ZCT<^8{l7^n%@$;tkCJ>*!S z(aPcT)k=43r)hDg(*Q4uu;iPSS{XA^sw?!!t&_*W$A~SjWevW3Vc5K|h?TIVXEaXk z%gTe5yM2A)oFW*`gE+#(Q@N0?BZ`hUNWsd2k2&{t3SQ&g8&F;$L!&vo;mLE(BD0AIvSkKf^oY@KrjID@z%ruP*6GIvsi9I*$hoEPC0+ zbaEW2&OqRJGC?6no^+a`T^2K;p<^qFoS54V8tz>pC<}o&7J*#2 z8SEZHvOlM*qH+A)^EufD&gBKk@8ebrOktE}3ZJyQ0`x;! zMYqr+NFb=dvaaOh)?j2K=Z*E(DonW|{QPfgP#S!}u8rsRIpbo8+;Uhp4God4O%K_j z6<=bgaQer;E5wYKS zc9#bQ#l&j6f*WPK4UFW86%fnZRRa)cCTs80YoFCQU-cl@#qP+NmX|g{31l}oStKVI zOf-J?@&(WXhqy%B@X@13xyQVEdBXkmHy?0Fyp{aV<-RHgB}0+Fdj(YR`P;DG9+~WA z!T&iVswCUkC5cij^(wXQ9{j z7XJ<_|Bm@(g`*!frHa7=8v^S`Akd)6)29^^RVG!9jg5B4ynOpQ_mjLYScU>lfOh~3 zaH-;FBu9%uBaF21iQ`m50vNArVwhkq6K-!791cTrO~b@WKqr?uUr}7V%8r9dc;TJ3);~!rz`4&PZ25LT@!_^X<Z zw|7H?wPcTMahWy)8>#f)S5oFftq~8(;q5?Ri&wJ3PiPVUe$J#;O}_oPvRt#Z)o^79 zGl|;9@fi^Jl7{5RE`N0IOtK2PzXMO_IoJTwX?@a$7sTxj>*&7>_BB;Rb{O4B|R;7{y43mAq~Rh9PjecO1N?!7mPi6FPv9H=j8 zUXUv6s|*c&AksW#W$27-eExcmxQ0PUF2C&R+T4HOpqZ7$%Rd|3JdN|k-DO|^cb&pE z;5I!PV`X5`jJ>~~F__Z0gq5kTbSn7~$Y(3RPY|ae8FgmyFA($14`UH2HI{?p;{}iG z173c<+KA3$^B-T8(W(?<^@q5ge_@UKaYsncq5!wCmDz-0e@(5q32WDzjFd>Brx~sGBX?|M?W0b zn6`TlN|qt-2e)OZP-GwkgO5>rGcFjOjLeTa<3?qDyF2~%*)^6rPtDK+5p7e}8R^2& zZt~|R<$FJDmI-X|OmAE%uX4v;a$`sbIg@3Z2DKu8TDm3>302fhv&fxq-_{9CV6Gws z%)(^t+5<5dZA53!0F#dEqoq-I?{tEn@a5VH3W#P@Vm|D|9L2!-+HIpNms8UbK3avy zzK^dkF^Hx=Ocop{3#agRwxl18^uThyh>we@DK^N5{TWlJ{pzRBd!&O}Opm>LS$V(7 zZ%4Flm1Y#N>-jX1TO^zQ_8!wQ^!J~8nd24jf2Jjtb>D?wBra zcUamew(vfQaxj^?GRrht!aeT@Kn+H~p?J=?>-OWB$`c9rri78*!Mux#I{&-Nub12H zvXJAw>{~}4G{)3davc~MLJutGj;pG4J~Atq$*yvEEj*9P64YPlv>zCK$2XhI6L^*D z`(@FDUWiu?+AR&f5i@J-)iP)A{5R7^o4{|2;okM>7s0go)U8n~A3u4hV%X5#*=y)l zLw;-PgH1?HwFHzQL7iE4T%Ij%973n!YTmXc>U0cmh+nBFcAny&MmO5UHlClA-TZA~ z{%1S$@1NbQtz>ep-@RJpId@P0zLxNH+t}Ai&umgz$rGCM&Cj}dvf-}dSiiB_Ls!!| zlA3(?^sv}_&ZjOLSzkRfb^9h+rjv4p4d*B8b7z&cg>yGjtCr0+fe+9W`Sb7eegIj~C7-=M=d?w+xT7%*1-&1&MryzRrY(@%gn{6{r#ad#LMvA#|*}3bBQQ1x?jA6s;vmGs? zxm!x}+DWi^*GX{#j*HdvE&20dCHG1EtWO4RYagpqy1G_ds&qD5eP_nkx}m2RJt&!4 z+hs)@%P)yy6aRhm^OD!z%>D*1N5@Xg?S)^zzURpBhULN$w;THHdgOiG#>!iD6{lIs^7Gt?Cu`QF4tdjF$n76CgN0cs2co5%nqSvyl_lg7ZZ7YXQle6SHV`G4j$0=@q^>{C#kbTOnsu0&z5keVHvm8W2#()0JqLqvtv z{1z)pzT}*2X1iNB+C^xQ+wFyp@Da{MWS@@8``PZp}xVzlJ48 z%r4SlHJg;SiNbznpPWxJw-2^X6_=JaGu!UFE_eKk((6^-=G-7aKemp{6g&!a%SM=; zGnm255lRadPeRs=cXz>j6IR=jf7-VO7#zFK=hywNQKg2Qc{#1>@A_%}P&xum43oc> z)&nNh?E9Y~&pbT`)TUL^MN-&8epooz%t$z`|LE!6J?P4=nsA%G3y=pA&Z&C|p_v>F z!-^PKb5^3Ug>c7VQEP>nUFq#z|CKDD0H%P(Bb(V1IEM?e-{ZnA)9k&ghdvS|u2 ztSY|oh7|LUl8<5T_)@|5!&c=LeT)iQb<`{GKu>_4TX$ioE?hav!DhR_~7_qj3&+NCR5nRw__s zT1@Phqzvqh{QShLoSK?Rp=X@F_wiEMud&t!a%TpH(GF=K^(&onv%dV2m*4~JMsQP> zncV)<2dLYg`_s$Fh9SJ(Ka9^THE_8=`D4V;^Unhl?h0%;>vM6NZNHLU_6*UMk0(JZ zxtKA%Y_V`!8WYGxe8*0vo&?2N)T#Jt=htksw$^R^Ni`av+SzEvTZ^z?l>28Jx>-qlf`Dg`ce z#5T&zZc3OLm)jtj8NDO_VatgO1s*-^FPqu-#G1O zwo~*HaN9_ahjD4Losx9=(p_lc)9Bs%u6R86I&*q}T9syNkl3~YRQUE1Vw zCv*_>E5;+D#C94z6ny4?v6|*tuLQXF8e@69uv7QtU8t#3nbjFV3|E>lAkj~9?eUZ@ z9GxZDeq`U^MHQJeA`uJAMne1u+;Z5=E4eKV&=7o@UxShRVQ=6GX*Wd6wx$~1BKJ~%vUrT1P|*el zeW7KpcgyV&HZN0j9Nd?vJP=73+suiY7bV6tQ3VBPj+;* z{DAlq2@e>uS>*;ekCL+tXIe%Zm3)xo0tt%Fn?i!(!3!R*O+msFx|~Nr_Je}}M0n*{ zp~*dA+yEptst^pf5xLCYk7aRu;|Yx`E)+*gVx{g~X?cF#)v-vV_*#^e|5wO#(P&rK z-kLRl`JVOAQoP2Zv*6aDbFNH?o|*Tbs>u;b)@EH+Gp!BqQ7_=EOssi^Fmf_5TtG+A zRCDc-qC>ol&L_V7OnC0_B^smjRQ9FN;+dqYqKCKJ;5z?L2K~zNJRI(@(=WDW(qO;w z@?5Aqzb3SY_$QWH$(4$a`l?PEfN3EKWxA+bt1Ou@mK(;#_G}pg5FO)m@1rG5$Z?hz zkI2(!@b?{o*-hHOOyM8Z*_`67JX;6CR{`RNghynMg~6AID=XTWFtLA$UT~-K5B*8v zRWc2PvD}j{(aWon;I{LS2R$U028M_=?b=raAi>VA@+rJos(3BU0jh<1=PAX(%;#ml zRMN#VtO5sFoS3d7?z8(^j4`1?326XFXWuqlukCk7$x3$p-mVuk%~ZbAHLJ3oHS~l3 z>F!GQl~EvHGAc+*EN@`%EbtvW^{6x&!M5+(*Jqg8eoU?e^zbPEk~54%d>+J z(LjXp{<)Ixf?1#L6A&~k-|;+M`Nl;^@ES^*n;#PSeVt}BB3c6*g?4d%>jIt-G8^3= zWqy9+g5l=Gu^b+)v~7O6=7Sr^n#syVrObzzuP7bl7~f#8;Tg3eLkr-sGU{zztrI1G zX~v#%IO4$CHkJemYFM3Pmq6OR3snLqZk=#?KwKYDg&KNE9>C_>wUSBQe1l})eQh-R zP{lr|Q0yi#9Bu!O02`aFlw2_l&u(X=P{!N^uKWO>acXxzz&3&%I`@*7butUmxSnu( zK;qs)zw+fYbSyXCIm>yPASVA4q$~v7%E|KJ=WAKN(YseHMNxOe9|NFCaBWs*^s}?V z5J$?Yk4#+-X)OIn1sjPYX*X^1r0SGamG06KGdiHDCSd)(kBI1Gu=E@~R`*4#{zLfz z2?zBBeX?lCm6)=Qr!Tg810%N{2q@fBd%ZTDHW4Hd4p_}=Ad202pxzGQk1Iuf`!uBwb;HQ2R z;V8tUip>?tCDQtgq`zFTS^``tSq*hX4cvzU$vbCjTVZ`ql{O z4~6^QnGa^(5JMaeElHEvE)6 zh=R{|o@h4R-w3a1YC$8=h;RhJ`@D;xusqot3s^^1L6VYa7lvLiI5W2yGjo!GUR zB^fkw7nobAM7|!{PT(h8sH5I6x33@i50A|F;me5A{;{|idA>oSoc#zu8ExLn+N?+U z=i{wg`9|gVv@t#RToRf$pn^dl5(p6HKbQ_%dAyQ3*hG!vodI(~GBcREsJJYpzC^zV zR(Tb0&7h9Dp|v`I@u&N7;fK|T^f}3 zna)424#T33)Y)0FLn@zm41IcUCz8p4M(nxg{NuxtMJ@L}eTklV_$(|0KW!8$w`n*pJwQYh0$5ZZIjSp}|1c>z@BwQ-I&FD(<7}GY zI`S9|GgI>OSi5l-e z=tM0`qsFqlh{7|K4H}%4m1(@BbRdaro+WHF+v9=zHY9+&=>9Raq35Q)sn>rNpmAG1 z{AbTHnhg-o)%AY5b-@c)sM!xB8dq!V@q<9DACuJCDx>N6kPgFn(QFhKy~ba$VkN(R zJx(A6jgagCl&y@6Oy9R}8hiRQZ~m8>H48sPv&Ml|y&(cJDYyVPm z@9!iScIPPQ znh*93zXmMnMYP8_z1Ro+m0of1l`B`GZ&L!ICd$eGBC!KEFTa&k0fkWsDJhL|tN{(E}h4Y&mYeVI=MmhdPFc=z8L2>%C!i-{MSLUed|_+x4kP}t#rZG`-*G?G)G zd-OlLCE&c0Hg6hVs1>P?7ILdS#7|UZczSxKCM6~PvvF@7#L2(}^ki5y0l^H=Uvi}V zkMhNTTY{>gr8z3}{H$+iDE(jjlD0Vxp553eapmaXs0Ud z<^Fys!1rouYC^0G47?of{X#o-mXNEb+g0l2E8@q>^@^fMLCOuODC=72SQ$^iEmkW` z1Q!i(KG0uv( zU8%qMxn)OZ9C!IiSeX{dST+6rlCNBsiG#)N7k^ws(HZAFuk8E@v92IjSTNTw zAgyg48eW9md>0lUePw!8U%0A37lhn`H;%nn+$aow`6feu#HnvLhqIy;M&cM+!BY6y zOE)31N{m}gj_?LuUMPSrBcs+J5FTle%CdFS%I3U5suUK`hsa@oKI2G8gkF`Tn(CMx z0VP8^vV9NrMoK_o4izifH-?bp!+)mc`?ge%n0-=Vmii-%F4b1L`n`Uq%bSPR^G=cbOku976EI+UM%2hokK2<;mzr_<#(D%TZ2D0M;9)LN6p z_kTEV&Wgwq#yi`Hc+QIl;(#_dAcKF#Eh!IWJoB@`qEq{!g|VW{mA`)Z$ZmZ|GV5ql8CGbvTAOkZ zx-~H0G3SuafE!U=nEJaojZh43(N*fm*OjkpolANqDiaow1{Iez2?8)EsrW*xn znZ~Nw_h2)fvbd6Y&sO2VoTDaQ?acD&hEP|-dokt9+QX*le|Dij6=)66cXO5Qo&I_U zvk#tz636Cc_eKUab>>7LY}i+uH5nO|1r-_TohG=N&$xF94CksAGhtB0eyX3UGKo&-LQy4&j_i-WG%(1 z@GDsFHI%B)_E-P5pW(rKC%boiwmMt@T}k_kNjz4Hqg)e`uiaq&xDlD<>vfX zoR2oIZ;ryFUgAp2UPuI9NS>CpyZCZA21PJOkT@*4i)VSP@ta>zS!N|{=D zLZLL6YwR*qc!J(AHZ^S$7so8^nj$MSplWJO@b#yak(4Hmt0Tb@KKM$&D?e%KpvK=n z4^GX(jb0dCPw}WJCN`xYAQ2&`lgYsv+}H?5k&^>$VW3apJpnZ^Nn+04p`g~g5m`n= zKDnQ7eEf$FH|#N%&^O}D6VhMJfo zkvrd3c3nP&H<{J{(Tcm>&{d`*r@9cbHhPIV2*oN#)Qp)UX2XlsshxKIWJ)kpQqYI^ zCwjz1mSyVHvid+=XGmzg(o+|tj6d|;Wa4(SE&~$pHccx1_*bUmG(;Ojtn;v@uV0n( zyWzdn^nQj!?rC_8q0yxsKje6m3sP6sDO~sAqPJxLP6akUo4?=y(vjvd4t<)kOHI>c z!4V%qtW=q6^GUPquRj5_pq~nO`jP3dYYf-T>S0~Ts!KCXLYC&u01Y=dY3|OjS`>R# z6RG)E2o&~5^&#o6p2;$uCH!b{)a+)M%331ON94!C!8=nCyv?q1{P|)PNWo?)*F$3& z8K>lv=wNbCV#HIgh%akzq1XcME>wQVUX^)%r{{q;_>x6EX~=i9UHe>pI0?Wy=O*73 z;1{AvOiR9dAlgMG`=VNL3k@YYw3(K&efByBFx8VKvbRwPt~Iz>x_Ev4pO@`+Q0NBL z6F?fJ{BafyGY#o-Z8qP;I}?TnCqDh|T|*V!RiOoOD;q`>b0x?d((&m+hI#XzQaM(} zq|#4UR^n6hMCEQlKGxe#T`n%@=aHiUx_1oTt=#>|P}54A_=hU)q30bjfqVBjg-Dp5 zT^WfV$mB#lOts-Jw9g(Ui>w$>Oi`Q}E) zlvVPuiLamtP2#Lu!*gg_czP*NOAKd-O>GBmiI_M!y|_jV0@C#5FR$&g#G1{uLWp3l zDC&%*gMNnVeaM>hsv?#21u>yp5)PX1R$KG*^>K)ZS*JzT*RRYbP&+{#P?)hAV9M`H zm|rmzaWZ@QtPi~_+8`!XQ81xe7n3DB2chC>?Mb3Mx8{jVpU6OF42xuM`7*RL!K2+kX|-n8KR&&ZVr^L3UkX%$ zxeHxgZtaU#=YR|=xP3I>75)f%?X_749JS9bJ6;W?K|2zG1g%->)3pt`~P7-;u&2JBUw=cvQB zeXB)+8C^e1u?F9n@w>IT6(dZP-c9Wy4M16T^;&*~ljaSGv zWykSmyX^88x+OvY;pe;CW}VL-6-AMOz`e;ka`WMD;{9YO8pR6L#tStKR^h8cG!+V4 zNp=FwEl-=@-74&m^TEWh%1Jc5*Ut{zOO$7OP|7Gvya6h@Z>RZ=S#yZh83TzAGqyA3 zrI`@!OSg54s%mu)bgQYEd;h3%VgiXD2g7TvmhY3&f&hIIEsfYBiGbk=}fB#s9=INK5UYaE#Ph>2kA`^w|4J!^*Y(``|uk8 zWQT`S4g;mh|Ifc^x~N!S<{?GbfP&2IcG`cBk^k@hiB;73wWPJncVbo5FMhNJ0;}mh Ku2Fdw{yzZi&+#q* literal 0 HcmV?d00001