pax_global_header00006660000000000000000000000064122057402510014510gustar00rootroot0000000000000052 comment=b7db830586357944d0b4ed02019a82fb523fff35 imvirt-0.9.6/000077500000000000000000000000001220574025100130365ustar00rootroot00000000000000imvirt-0.9.6/.travis.yml000066400000000000000000000006541220574025100151540ustar00rootroot00000000000000language: c env: - debug="" - debug="-d" before_install: - sudo apt-get update -qq - sudo apt-get install -qq libmodule-find-perl libfile-slurp-perl libfile-which-perl libmime-lite-perl install: - ./configure --prefix=$(pwd)/build - make && make install script: - perl -Iperl/lib imvirt $debug - sudo perl -Iperl/lib imvirt $debug - test "$debug" = "-d" && sudo perl -Iperl/lib imvirt-report -s /dev/stdout || true imvirt-0.9.6/AUTHORS000066400000000000000000000000531220574025100141040ustar00rootroot00000000000000imvirt ====== Thomas Liske imvirt-0.9.6/COPYING000066400000000000000000000431221220574025100140730ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) 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 this service 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 make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. 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. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the 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 a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE 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. 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 convey 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 2 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision 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, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This 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 Library General Public License instead of this License. imvirt-0.9.6/ChangeLog000066400000000000000000000137661220574025100146250ustar00rootroot00000000000000imvirt (0.9.6) unstable; urgency=low * Do not die if /proc/cpuinfo is unavailable (Debian Bug #693278 by Dmitry Smirnov ). * Split ImVirt Portable into core and bundle (w/ PAR stuff) build. * Add Parallels detection support. * Handle undefined %cpuinfo entries gracefully. (Debian Bug #69791 by Axel Beckert ). * Handle missing procfs entries used for jiffies calculation gracefully (OpenVZ). * Count CPU flag points only once. * Improve OpenVZ detection. -- Thomas Liske Fri, 23 Aug 2013 21:34:15 +0200 imvirt (0.9.5) unstable; urgency=low * Add imvirt-report manpage from Debian, thanks to Patrick Matthäi . * Move source from SourceForge SVN to github, cleanup svn:keywords usage. * Update perl/Makefile.PL (require File::Which). * KVM: Don't count dmesg line twice (reported by Torsten Lüttgert ). * LXC: Remove inapplicable /proc from procfs_read() parameter (reported by Torsten Lüttgert ). * LXC: Use starttime jiffies from /proc/1/stat to detect LXC (suggested by Torsten Lüttgert ). * LXC: Fix false positive (regex typo). * Provide ImVirt Portable download. * Revised Microsoft Virtual PC / Hyper-V detection. -- Thomas Liske Fri, 14 Sep 2012 23:30:36 +0200 imvirt (0.9.4) unstable; urgency=low * Fix some FTBFS due gcc 4.7 (reported by Patrick Matthäi ). * Fix pod2man error (ImVirt.pm) (reported by Patrick Matthäi ). * Fix wrong use statement in LXC.pm (reported by Miroslav Suchý ). * Fix /proc/modules interpretation (reported by Miroslav Suchý ). * Use mktemp instead of tempfile (debianutils) in imvirt-report (reported by Miroslav Suchý ). -- Thomas Liske Thu, 17 May 2012 20:32:04 +0200 imvirt (0.9.3) unstable; urgency=low * Add ARAnyM detection support. * Add LXC detection support. * Reduce perl warnings. * Use File::Which if available (no shell used to execute binaries). * Take only used virtio kernel modules into account. * Improve imvirt.spec.in (thanks to Miroslav Suchý ). * Don't call lspci unless /proc/bus/pci is available. * Add imvirt-report binary. -- Thomas Liske Mon, 14 May 2012 19:16:57 +0200 imvirt (0.9.2) unstable; urgency=low * Improve overall detection. * Improve debug output. * Add INSTALLDIRS=vendor to be conform to the Debian perl policy. (Debian Bug #578798 by Niko Tyni ) * Update to automake 1.11.1. -- Thomas Liske Sat, 04 Feb 2012 17:52:45 +0100 imvirt (0.9.1) unstable; urgency=low * Output possible result lines on help output. * Don't die in Utils/pcidevs.pm if lspci is not available. (Closes Debian Bug#612735 by Stefan Bühler) * Parse new kernel paravirtualization lines (KVM, VMware). * Improve KVM w/ virtio detection. * Improve KVM/QUEMU detection. (Contributed by Mike Gerber ) * Add basic lguest detection support. * Improve debugging of legacy imvirt script. -- Thomas Liske Thu, 02 Jun 2011 21:50:55 +0200 imvirt (0.9.0) unstable; urgency=low * Rewrite imvirt as a perl module framework. * Detection changed from "first best match" to a weighted characteristics aproach. * Add legacy replacement script 'imvirt' as a replacement for the old monolitic script. -- Thomas Liske Mon, 29 Mar 2010 19:55:14 +0200 imvirt (0.3.3) unstable; urgency=low * Make modern GCC versions stop warning about breaking strict-aliasing checking. * Add imvirt.spec.in. -- Thomas Liske Sat, 13 Feb 2010 00:26:54 +0100 imvirt (0.3.2) unstable; urgency=low * Handle SIGILL on amd64 for Xen PV detection gracefully. reported by Patrick Matthäi * Fix false positive CPUID results interpreted as HVM virtualization on P4. (Closes Debian Bug#566656 by Stephan Sürken) * Add CPUID debug code (-c). * Add missing stdlib.h to detect.c (compile warning). -- Thomas Liske Mon, 01 Feb 2010 14:56:15 +0100 imvirt (0.3.1) unstable; urgency=low * Add missing manpage (svn was somewhat confused). * Fix build system. -- Thomas Liske Sat, 12 Sep 2009 21:09:22 +0200 imvirt (0.3) unstable; urgency=low * Add manpage from Debian, thanks to Patrick Matthäi * Add OpenVZ/Virtuozzo detection taken from virt-what 1.1 (Evgeniy Sokolov) * Add UML detection * Add binary helper to detect - Virtual PC/Server - VMware - Xen HVM using cpuid calls. * Improvements/fixes: - fix dmesg call - scan /proc/ide/hd*/model for well known signatures -- Thomas Liske Sat Sep 5 12:36:18 CEST 2009 imvirt (0.2.1) unstable; urgency=low * Fix Xen detection on new kernels (i.e. Debian Lenny). -- Thomas Liske Thu, 12 Mar 2009 10:19:00 +0100 imvirt (0.2) unstable; urgency=low * Move to SF project apt-dater. * Add copyright stuff and ChangeLog. -- Thomas Liske Wed, 26 Nov 2008 13:19:24 +0100 imvirt (0.1-r10) unstable; urgency=low * Use /bin/dmesg (/var/log/dmesg not always accessible). * Improve rules to detect VMware server 2.0. -- Thomas Liske Tue, 25 Nov 2008 13:10:50 +0100 imvirt (0.1-r9) unstable; urgency=low * Minor bugfix release. -- Thomas Liske Thu, 20 Nov 2008 07:52:53 +0100 imvirt (0.1-r5) unstable; urgency=low * Fixed regex syntax error. -- Thomas Liske Tue, 18 Nov 2008 08:04:50 +0100 imvirt (0.1-r3) unstable; urgency=low * Improve QEMU detection. * Add VirtualBox detection. -- Thomas Liske Mon, 17 Nov 2008 16:55:40 +0100 imvirt (0.1-r2) unstable; urgency=low * Initial Release. -- Thomas Liske Mon, 17 Nov 2008 13:43:06 +0100 imvirt-0.9.6/INSTALL000066400000000000000000000224321220574025100140720ustar00rootroot00000000000000Installation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc. This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Basic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. (Caching is disabled by default to prevent problems with accidental use of stale cache files.) If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You only need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not support the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Here is a another example: /bin/bash ./configure CONFIG_SHELL=/bin/bash Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent configuration-related scripts to be executed by `/bin/bash'. `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of the options to `configure', and exit. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. imvirt-0.9.6/Makefile.am000066400000000000000000000007001220574025100150670ustar00rootroot00000000000000SUBDIRS = helper man perl dist AUTOMAKE_OPTIONS = 1.9 dist-bzip2 BUILT_SOURCES = perl bin_SCRIPTS = imvirt sbin_SCRIPTS = imvirt-report install-exec-local: [ ! -f perl/Makefile ] || ( cd perl && $(MAKE) install ) clean-local: [ ! -f perl/Makefile ] || ( cd perl && $(MAKE) realclean ) perl: perl/Makefile cd perl && $(MAKE) perl/Makefile: perl/Makefile.PL cd perl && perl Makefile.PL PREFIX=$(prefix) INSTALLDIRS=vendor .PHONY: perl imvirt-0.9.6/Makefile.in000066400000000000000000000663001220574025100151100ustar00rootroot00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/imvirt.spec.in \ $(top_srcdir)/configure $(top_srcdir)/perl/lib/ImVirt.pm.in \ AUTHORS COPYING ChangeLog INSTALL NEWS depcomp install-sh \ missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/helper/config.h CONFIG_CLEAN_FILES = imvirt.spec perl/lib/ImVirt.pm CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" SCRIPTS = $(bin_SCRIPTS) $(sbin_SCRIPTS) SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MYDIR = @MYDIR@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = helper man perl dist AUTOMAKE_OPTIONS = BUILT_SOURCES = perl bin_SCRIPTS = imvirt sbin_SCRIPTS = imvirt-report all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): imvirt.spec: $(top_builddir)/config.status $(srcdir)/imvirt.spec.in cd $(top_builddir) && $(SHELL) ./config.status $@ perl/lib/ImVirt.pm: $(top_builddir)/config.status $(top_srcdir)/perl/lib/ImVirt.pm.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) install-sbinSCRIPTS: $(sbin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(sbin_SCRIPTS)'; test -n "$(sbindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(sbindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(sbindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(sbindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \ } \ ; done uninstall-sbinSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(sbin_SCRIPTS)'; test -n "$(sbindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(sbindir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod u+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(SCRIPTS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-recursive clean-am: clean-generic clean-local mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binSCRIPTS install-exec-local \ install-sbinSCRIPTS install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binSCRIPTS uninstall-sbinSCRIPTS .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ ctags-recursive install install-am install-strip \ tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-local ctags ctags-recursive dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \ dist-zip distcheck distclean distclean-generic distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-am install-binSCRIPTS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-exec-local install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-sbinSCRIPTS install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-binSCRIPTS uninstall-sbinSCRIPTS 1.9 dist-bzip2 install-exec-local: [ ! -f perl/Makefile ] || ( cd perl && $(MAKE) install ) clean-local: [ ! -f perl/Makefile ] || ( cd perl && $(MAKE) realclean ) perl: perl/Makefile cd perl && $(MAKE) perl/Makefile: perl/Makefile.PL cd perl && perl Makefile.PL PREFIX=$(prefix) INSTALLDIRS=vendor .PHONY: perl # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: imvirt-0.9.6/NEWS000066400000000000000000000012741220574025100135410ustar00rootroot00000000000000Changes in 0.9.5 ================ The detection of Microsoft Windows OS based hypervisors has been revised. Please be aware of the changed output format. Changes in 0.9.0 ================ The previous imvirt script has been ported into a perl package framework. package tree: ImVirt.pm - generic interface to use the imvirt framework ImVirt::Utils::... - common helper modules used by ImVirt::VMD::* packages ImVirt::VMD::... - Virtual Machine Detection packages New VMD packages can ne added by putting them into perl's search path. ImVirt.pm uses Module::Find to load any ImVirt::VMD::* package. The new imvirt script can be used as a dropin replacement for the old legacy imvirt script. imvirt-0.9.6/PORTABLE.md000066400000000000000000000006631220574025100145750ustar00rootroot00000000000000ImVirt Portable =============== `ImVirt Portable` is a portable version of `ImVirt` using the `PAR Packager` (`pp`). It is a self contained perl script but lags the binary helper stuff. This might result in a more inaccurate detection. There is a `core` and a `bundle` build of `ImVirt Portable`. The latter contains all the `PAR Packager` glue and has no additional dependency. Download: https://github.com/DE-IBH/imvirt/releases/ imvirt-0.9.6/README000066400000000000000000000032461220574025100137230ustar00rootroot00000000000000imvirt - I'm virtualized? ========================= This script tries to detect if it is run under a (para)virtualization. This is done by looking for wellknown boot messages, device names, installed tools etc. Detected virtualizations: - ARAnyM - KVM - lguest - LXC - Microsoft Virtual PC / Hyper-V - OpenVZ/Virtuozzo - Parallels Workstation - QEMU - UML - VMware GSX, ESX, Workstation - VirtualBox - Xen (para and non-para virtualized) - any HVM providing CPUID 0x40000000 detection imvirt is comparable with virt-what [1]. imvirt was written to run as non-root - virt-what requires to be run as root but had some more details on Xen (Dom0/DomU/HVM) in the past. There is a portable version available: [ImVirt Portable](imvirt/tree/master/PORTABLE.md) Some random links taken as suggestions: 1. http://et.redhat.com/~rjones/virt-what/ 2. http://www.dmo.ca/blog/detecting-virtualization-on-linux/ 3. http://my.opera.com/jaelanicu/blog/2008/04/02/a-better-red-pill-scooby-for-vmware 4. http://my.opera.com/jaelanicu/blog/show.dml/4257341 5. http://www.codegurus.be/codegurus/Programming/virtualpc&vmware_en.htm 6. http://flierlu.blogspot.com/2008/04/virtualization-detection.html 7. http://www.microsoft.com/downloads/details.aspx?FamilyId=91E2E518-C62C-4FF2-8E50-3A37EA4100F5&displaylang=en 8. http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458 9. http://invisiblethings.org/papers/redpill.html 10. http://www.offensivecomputing.net/files/active/0/vm.pdf 11. http://www.s21sec.com/descargas/vmware-eng.pdf 12. http://www.trapkit.de/research/vmm/scoopyng/index.html -- Thomas Liske Thu, 31 Aug 2012 22:36:09 +0200 imvirt-0.9.6/README.md000077700000000000000000000000001220574025100151702READMEustar00rootroot00000000000000imvirt-0.9.6/aclocal.m4000066400000000000000000001041731220574025100147040ustar00rootroot00000000000000# generated automatically by aclocal 1.11.6 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, # Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.6], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.6])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, # 2010, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 12 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, # Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software # Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR imvirt-0.9.6/configure000077500000000000000000005244231220574025100147570ustar00rootroot00000000000000#! /bin/sh # From configure.in Revision. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for imvirt 0.9.6. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and liske@ibh.de about $0: your system, including any error possibly output before $0: this message. Then install a modern shell, or manually $0: run the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='imvirt' PACKAGE_TARNAME='imvirt' PACKAGE_VERSION='0.9.6' PACKAGE_STRING='imvirt 0.9.6' PACKAGE_BUGREPORT='liske@ibh.de' PACKAGE_URL='' ac_unique_file="helper/detect.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS MYDIR X86ARCH_FALSE X86ARCH_TRUE EGREP GREP CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dependency_tracking ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures imvirt 0.9.6 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/imvirt] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of imvirt 0.9.6:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF imvirt configure 0.9.6 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## --------------------------- ## ## Report this to liske@ibh.de ## ## --------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_find_uintX_t LINENO BITS VAR # ------------------------------------ # Finds an unsigned integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_uintX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 $as_echo_n "checking for uint$2_t... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : case $ac_type in #( uint$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if eval test \"x\$"$3"\" = x"no"; then : else break fi done fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_uintX_t # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by imvirt $as_me 0.9.6, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.11' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='imvirt' VERSION='0.9.6' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' ac_config_headers="$ac_config_headers helper/config.h" # Checks for programs. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Checks for libraries. # Checks for header files. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } if ${ac_cv_header_sys_wait_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif int main () { int s; wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_sys_wait_h=yes else ac_cv_header_sys_wait_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 $as_echo "$ac_cv_header_sys_wait_h" >&6; } if test $ac_cv_header_sys_wait_h = yes; then $as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in stdint.h stdlib.h string.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" if test "x$ac_cv_type_pid_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define pid_t int _ACEOF fi ac_fn_c_find_uintX_t "$LINENO" "16" "ac_cv_c_uint16_t" case $ac_cv_c_uint16_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define uint16_t $ac_cv_c_uint16_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t" case $ac_cv_c_uint32_t in #( no|yes) ;; #( *) $as_echo "#define _UINT32_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint32_t $ac_cv_c_uint32_t _ACEOF ;; esac # Checks for library functions. for ac_header in vfork.h do : ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default" if test "x$ac_cv_header_vfork_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VFORK_H 1 _ACEOF fi done for ac_func in fork vfork do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if test "x$ac_cv_func_fork" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 $as_echo_n "checking for working fork... " >&6; } if ${ac_cv_func_fork_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_fork_works=cross else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* By Ruediger Kuhlmann. */ return fork () < 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_fork_works=yes else ac_cv_func_fork_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 $as_echo "$ac_cv_func_fork_works" >&6; } else ac_cv_func_fork_works=$ac_cv_func_fork fi if test "x$ac_cv_func_fork_works" = xcross; then case $host in *-*-amigaos* | *-*-msdosdjgpp*) # Override, as these systems have only a dummy fork() stub ac_cv_func_fork_works=no ;; *) ac_cv_func_fork_works=yes ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 $as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} fi ac_cv_func_vfork_works=$ac_cv_func_vfork if test "x$ac_cv_func_vfork" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 $as_echo_n "checking for working vfork... " >&6; } if ${ac_cv_func_vfork_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_vfork_works=cross else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Thanks to Paul Eggert for this test. */ $ac_includes_default #include #ifdef HAVE_VFORK_H # include #endif /* On some sparc systems, changes by the child to local and incoming argument registers are propagated back to the parent. The compiler is told about this with #include , but some compilers (e.g. gcc -O) don't grok . Test for this by using a static variable whose address is put into a register that is clobbered by the vfork. */ static void #ifdef __cplusplus sparc_address_test (int arg) # else sparc_address_test (arg) int arg; #endif { static pid_t child; if (!child) { child = vfork (); if (child < 0) { perror ("vfork"); _exit(2); } if (!child) { arg = getpid(); write(-1, "", 0); _exit (arg); } } } int main () { pid_t parent = getpid (); pid_t child; sparc_address_test (0); child = vfork (); if (child == 0) { /* Here is another test for sparc vfork register problems. This test uses lots of local variables, at least as many local variables as main has allocated so far including compiler temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should reuse the register of parent for one of the local variables, since it will think that parent can't possibly be used any more in this routine. Assigning to the local variable will thus munge parent in the parent process. */ pid_t p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); /* Convince the compiler that p..p7 are live; otherwise, it might use the same hardware register for all 8 local variables. */ if (p != p1 || p != p2 || p != p3 || p != p4 || p != p5 || p != p6 || p != p7) _exit(1); /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent from child file descriptors. If the child closes a descriptor before it execs or exits, this munges the parent's descriptor as well. Test for this by closing stdout in the child. */ _exit(close(fileno(stdout)) != 0); } else { int status; struct stat st; while (wait(&status) != child) ; return ( /* Was there some problem with vforking? */ child < 0 /* Did the child fail? (This shouldn't happen.) */ || status /* Did the vfork/compiler bug occur? */ || parent != getpid() /* Did the file descriptor bug occur? */ || fstat(fileno(stdout), &st) != 0 ); } } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_vfork_works=yes else ac_cv_func_vfork_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 $as_echo "$ac_cv_func_vfork_works" >&6; } fi; if test "x$ac_cv_func_fork_works" = xcross; then ac_cv_func_vfork_works=$ac_cv_func_vfork { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 $as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} fi if test "x$ac_cv_func_vfork_works" = xyes; then $as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h else $as_echo "#define vfork fork" >>confdefs.h fi if test "x$ac_cv_func_fork_works" = xyes; then $as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if ${ac_cv_type_signal+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_signal=int else ac_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF # Check architecture { $as_echo "$as_me:${as_lineno-$LINENO}: checking x86 platform" >&5 $as_echo_n "checking x86 platform... " >&6; } case `uname -m` in x86_64) x86arch=true ;; i686) x86arch=true ;; *) x86arch=false ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $x86arch" >&5 $as_echo "$x86arch" >&6; } if test x$x86arch = xtrue ; then X86ARCH_TRUE= X86ARCH_FALSE='#' else X86ARCH_TRUE='#' X86ARCH_FALSE= fi MYDIR=$libexecdir ac_config_files="$ac_config_files Makefile dist/Makefile helper/Makefile man/Makefile imvirt.spec perl/lib/ImVirt.pm" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${X86ARCH_TRUE}" && test -z "${X86ARCH_FALSE}"; then as_fn_error $? "conditional \"X86ARCH\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by imvirt $as_me 0.9.6, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ imvirt config.status 0.9.6 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "helper/config.h") CONFIG_HEADERS="$CONFIG_HEADERS helper/config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "dist/Makefile") CONFIG_FILES="$CONFIG_FILES dist/Makefile" ;; "helper/Makefile") CONFIG_FILES="$CONFIG_FILES helper/Makefile" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "imvirt.spec") CONFIG_FILES="$CONFIG_FILES imvirt.spec" ;; "perl/lib/ImVirt.pm") CONFIG_FILES="$CONFIG_FILES perl/lib/ImVirt.pm" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi imvirt-0.9.6/configure.in000066400000000000000000000020111220574025100153410ustar00rootroot00000000000000# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_REVISION($Revision$) AC_PREREQ(2.61) AC_INIT(imvirt, 0.9.6, liske@ibh.de) AM_INIT_AUTOMAKE AC_CONFIG_SRCDIR([helper/detect.c]) AC_CONFIG_HEADER([helper/config.h]) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_CHECK_HEADERS([stdint.h stdlib.h string.h unistd.h]) # Checks for typedefs, structures, and compiler characteristics. AC_TYPE_PID_T AC_TYPE_UINT16_T AC_TYPE_UINT32_T # Checks for library functions. AC_FUNC_FORK AC_TYPE_SIGNAL # Check architecture AC_MSG_CHECKING(x86 platform) case `uname -m` in x86_64) x86arch=true ;; i686) x86arch=true ;; *) x86arch=false ;; esac AC_MSG_RESULT($x86arch) AM_CONDITIONAL([X86ARCH], [test x$x86arch = xtrue ]) MYDIR=$libexecdir AC_SUBST(MYDIR) AC_CONFIG_FILES([ Makefile dist/Makefile helper/Makefile man/Makefile imvirt.spec perl/lib/ImVirt.pm ]) AC_OUTPUT imvirt-0.9.6/depcomp000077500000000000000000000371001220574025100144140ustar00rootroot00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2005-07-09.11 # Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. # 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 2, 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, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` tmpdepfile="$stripped.u" if test "$libtool" = yes; then "$@" -Wc,-M else "$@" -M fi stat=$? if test -f "$tmpdepfile"; then : else stripped=`echo "$stripped" | sed 's,^.*/,,'` tmpdepfile="$stripped.u" fi if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi if test -f "$tmpdepfile"; then outname="$stripped.o" # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mecanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: imvirt-0.9.6/dist/000077500000000000000000000000001220574025100140015ustar00rootroot00000000000000imvirt-0.9.6/dist/Makefile.am000066400000000000000000000004441220574025100160370ustar00rootroot00000000000000imvirtp: imvirtp-core imvirtp-bundle imvirtp-core: ../imvirt ../perl/lib/ImVirt.pm ../perl/lib/ImVirt/*/*.pm pp -x -P -o imvirtp-core -I ../perl/lib ../imvirt imvirtp-bundle: ../imvirt ../perl/lib/ImVirt.pm ../perl/lib/ImVirt/*/*.pm pp -x -B -P -o imvirtp-bundle -I ../perl/lib ../imvirt imvirt-0.9.6/dist/Makefile.in000066400000000000000000000227151220574025100160550ustar00rootroot00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = dist DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/helper/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MYDIR = @MYDIR@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu dist/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu dist/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am imvirtp: imvirtp-core imvirtp-bundle imvirtp-core: ../imvirt ../perl/lib/ImVirt.pm ../perl/lib/ImVirt/*/*.pm pp -x -P -o imvirtp-core -I ../perl/lib ../imvirt imvirtp-bundle: ../imvirt ../perl/lib/ImVirt.pm ../perl/lib/ImVirt/*/*.pm pp -x -B -P -o imvirtp-bundle -I ../perl/lib ../imvirt # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: imvirt-0.9.6/dist/imvirtp-bundle000077500000000000000000116134041220574025100167020ustar00rootroot00000000000000#!/usr/bin/perl #line 2 "/usr/bin/par-archive" eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if 0; # not running under some shell eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if 0; # not running under some shell package __par_pl; # --- This script must not use any modules at compile time --- # use strict; #line 161 my ($par_temp, $progname, @tmpfile); END { if ($ENV{PAR_CLEAN}) { require File::Temp; require File::Basename; require File::Spec; my $topdir = File::Basename::dirname($par_temp); outs(qq{Removing files in "$par_temp"}); File::Find::finddepth(sub { ( -d ) ? rmdir : unlink }, $par_temp); rmdir $par_temp; # Don't remove topdir because this causes a race with other apps # that are trying to start. if (-d $par_temp && $^O ne 'MSWin32') { # Something went wrong unlinking the temporary directory. This # typically happens on platforms that disallow unlinking shared # libraries and executables that are in use. Unlink with a background # shell command so the files are no longer in use by this process. # Don't do anything on Windows because our parent process will # take care of cleaning things up. my $tmp = new File::Temp( TEMPLATE => 'tmpXXXXX', DIR => File::Basename::dirname($topdir), SUFFIX => '.cmd', UNLINK => 0, ); print $tmp "#!/bin/sh x=1; while [ \$x -lt 10 ]; do rm -rf '$par_temp' if [ \! -d '$par_temp' ]; then break fi sleep 1 x=`expr \$x + 1` done rm '" . $tmp->filename . "' "; chmod 0700,$tmp->filename; my $cmd = $tmp->filename . ' >/dev/null 2>&1 &'; close $tmp; system($cmd); outs(qq(Spawned background process to perform cleanup: ) . $tmp->filename); } } } BEGIN { Internals::PAR::BOOT() if defined &Internals::PAR::BOOT; eval { _par_init_env(); if (exists $ENV{PAR_ARGV_0} and $ENV{PAR_ARGV_0} ) { @ARGV = map $ENV{"PAR_ARGV_$_"}, (1 .. $ENV{PAR_ARGC} - 1); $0 = $ENV{PAR_ARGV_0}; } else { for (keys %ENV) { delete $ENV{$_} if /^PAR_ARGV_/; } } my $quiet = !$ENV{PAR_DEBUG}; # fix $progname if invoked from PATH my %Config = ( path_sep => ($^O =~ /^MSWin/ ? ';' : ':'), _exe => ($^O =~ /^(?:MSWin|OS2|cygwin)/ ? '.exe' : ''), _delim => ($^O =~ /^MSWin|OS2/ ? '\\' : '/'), ); _set_progname(); _set_par_temp(); # Magic string checking and extracting bundled modules {{{ my ($start_pos, $data_pos); { local $SIG{__WARN__} = sub {}; # Check file type, get start of data section {{{ open _FH, '<', $progname or last; binmode(_FH); my $buf; seek _FH, -8, 2; read _FH, $buf, 8; last unless $buf eq "\nPAR.pm\n"; seek _FH, -12, 2; read _FH, $buf, 4; seek _FH, -12 - unpack("N", $buf), 2; read _FH, $buf, 4; $data_pos = (tell _FH) - 4; # }}} # Extracting each file into memory {{{ my %require_list; while ($buf eq "FILE") { read _FH, $buf, 4; read _FH, $buf, unpack("N", $buf); my $fullname = $buf; outs(qq(Unpacking file "$fullname"...)); my $crc = ( $fullname =~ s|^([a-f\d]{8})/|| ) ? $1 : undef; my ($basename, $ext) = ($buf =~ m|(?:.*/)?(.*)(\..*)|); read _FH, $buf, 4; read _FH, $buf, unpack("N", $buf); if (defined($ext) and $ext !~ /\.(?:pm|pl|ix|al)$/i) { my ($out, $filename) = _tempfile($ext, $crc); if ($out) { binmode($out); print $out $buf; close $out; chmod 0755, $filename; } $PAR::Heavy::FullCache{$fullname} = $filename; $PAR::Heavy::FullCache{$filename} = $fullname; } elsif ( $fullname =~ m|^/?shlib/| and defined $ENV{PAR_TEMP} ) { # should be moved to _tempfile() my $filename = "$ENV{PAR_TEMP}/$basename$ext"; outs("SHLIB: $filename\n"); open my $out, '>', $filename or die $!; binmode($out); print $out $buf; close $out; } else { $require_list{$fullname} = $PAR::Heavy::ModuleCache{$fullname} = { buf => $buf, crc => $crc, name => $fullname, }; } read _FH, $buf, 4; } # }}} local @INC = (sub { my ($self, $module) = @_; return if ref $module or !$module; my $filename = delete $require_list{$module} || do { my $key; foreach (keys %require_list) { next unless /\Q$module\E$/; $key = $_; last; } delete $require_list{$key} if defined($key); } or return; $INC{$module} = "/loader/$filename/$module"; if ($ENV{PAR_CLEAN} and defined(&IO::File::new)) { my $fh = IO::File->new_tmpfile or die $!; binmode($fh); print $fh $filename->{buf}; seek($fh, 0, 0); return $fh; } else { my ($out, $name) = _tempfile('.pm', $filename->{crc}); if ($out) { binmode($out); print $out $filename->{buf}; close $out; } open my $fh, '<', $name or die $!; binmode($fh); return $fh; } die "Bootstrapping failed: cannot find $module!\n"; }, @INC); # Now load all bundled files {{{ # initialize shared object processing require XSLoader; require PAR::Heavy; require Carp::Heavy; require Exporter::Heavy; PAR::Heavy::_init_dynaloader(); # now let's try getting helper modules from within require IO::File; # load rest of the group in while (my $filename = (sort keys %require_list)[0]) { #local $INC{'Cwd.pm'} = __FILE__ if $^O ne 'MSWin32'; unless ($INC{$filename} or $filename =~ /BSDPAN/) { # require modules, do other executable files if ($filename =~ /\.pmc?$/i) { require $filename; } else { # Skip ActiveState's sitecustomize.pl file: do $filename unless $filename =~ /sitecustomize\.pl$/; } } delete $require_list{$filename}; } # }}} last unless $buf eq "PK\003\004"; $start_pos = (tell _FH) - 4; } # }}} # Argument processing {{{ my @par_args; my ($out, $bundle, $logfh, $cache_name); delete $ENV{PAR_APP_REUSE}; # sanitize (REUSE may be a security problem) $quiet = 0 unless $ENV{PAR_DEBUG}; # Don't swallow arguments for compiled executables without --par-options if (!$start_pos or ($ARGV[0] eq '--par-options' && shift)) { my %dist_cmd = qw( p blib_to_par i install_par u uninstall_par s sign_par v verify_par ); # if the app is invoked as "appname --par-options --reuse PROGRAM @PROG_ARGV", # use the app to run the given perl code instead of anything from the # app itself (but still set up the normal app environment and @INC) if (@ARGV and $ARGV[0] eq '--reuse') { shift @ARGV; $ENV{PAR_APP_REUSE} = shift @ARGV; } else { # normal parl behaviour my @add_to_inc; while (@ARGV) { $ARGV[0] =~ /^-([AIMOBLbqpiusTv])(.*)/ or last; if ($1 eq 'I') { push @add_to_inc, $2; } elsif ($1 eq 'M') { eval "use $2"; } elsif ($1 eq 'A') { unshift @par_args, $2; } elsif ($1 eq 'O') { $out = $2; } elsif ($1 eq 'b') { $bundle = 'site'; } elsif ($1 eq 'B') { $bundle = 'all'; } elsif ($1 eq 'q') { $quiet = 1; } elsif ($1 eq 'L') { open $logfh, ">>", $2 or die "XXX: Cannot open log: $!"; } elsif ($1 eq 'T') { $cache_name = $2; } shift(@ARGV); if (my $cmd = $dist_cmd{$1}) { delete $ENV{'PAR_TEMP'}; init_inc(); require PAR::Dist; &{"PAR::Dist::$cmd"}() unless @ARGV; &{"PAR::Dist::$cmd"}($_) for @ARGV; exit; } } unshift @INC, @add_to_inc; } } # XXX -- add --par-debug support! # }}} # Output mode (-O) handling {{{ if ($out) { { #local $INC{'Cwd.pm'} = __FILE__ if $^O ne 'MSWin32'; require IO::File; require Archive::Zip; } my $par = shift(@ARGV); my $zip; if (defined $par) { open my $fh, '<', $par or die "Cannot find '$par': $!"; binmode($fh); bless($fh, 'IO::File'); $zip = Archive::Zip->new; ( $zip->readFromFileHandle($fh, $par) == Archive::Zip::AZ_OK() ) or die "Read '$par' error: $!"; } my %env = do { if ($zip and my $meta = $zip->contents('META.yml')) { $meta =~ s/.*^par:$//ms; $meta =~ s/^\S.*//ms; $meta =~ /^ ([^:]+): (.+)$/mg; } }; # Open input and output files {{{ local $/ = \4; if (defined $par) { open PAR, '<', $par or die "$!: $par"; binmode(PAR); die "$par is not a PAR file" unless eq "PK\003\004"; } CreatePath($out) ; my $fh = IO::File->new( $out, IO::File::O_CREAT() | IO::File::O_WRONLY() | IO::File::O_TRUNC(), 0777, ) or die $!; binmode($fh); $/ = (defined $data_pos) ? \$data_pos : undef; seek _FH, 0, 0; my $loader = scalar <_FH>; if (!$ENV{PAR_VERBATIM} and $loader =~ /^(?:#!|\@rem)/) { require PAR::Filter::PodStrip; PAR::Filter::PodStrip->new->apply(\$loader, $0) } foreach my $key (sort keys %env) { my $val = $env{$key} or next; $val = eval $val if $val =~ /^['"]/; my $magic = "__ENV_PAR_" . uc($key) . "__"; my $set = "PAR_" . uc($key) . "=$val"; $loader =~ s{$magic( +)}{ $magic . $set . (' ' x (length($1) - length($set))) }eg; } $fh->print($loader); $/ = undef; # }}} # Write bundled modules {{{ if ($bundle) { require PAR::Heavy; PAR::Heavy::_init_dynaloader(); init_inc(); require_modules(); my @inc = sort { length($b) <=> length($a) } grep { !/BSDPAN/ } grep { ($bundle ne 'site') or ($_ ne $Config::Config{archlibexp} and $_ ne $Config::Config{privlibexp}); } @INC; # File exists test added to fix RT #41790: # Funny, non-existing entry in _<....auto/Compress/Raw/Zlib/autosplit.ix. # This is a band-aid fix with no deeper grasp of the issue. # Somebody please go through the pain of understanding what's happening, # I failed. -- Steffen my %files; /^_<(.+)$/ and -e $1 and $files{$1}++ for keys %::; $files{$_}++ for values %INC; my $lib_ext = $Config::Config{lib_ext}; my %written; foreach (sort keys %files) { my ($name, $file); foreach my $dir (@inc) { if ($name = $PAR::Heavy::FullCache{$_}) { $file = $_; last; } elsif (/^(\Q$dir\E\/(.*[^Cc]))\Z/i) { ($file, $name) = ($1, $2); last; } elsif (m!^/loader/[^/]+/(.*[^Cc])\Z!) { if (my $ref = $PAR::Heavy::ModuleCache{$1}) { ($file, $name) = ($ref, $1); last; } elsif (-f "$dir/$1") { ($file, $name) = ("$dir/$1", $1); last; } } } next unless defined $name and not $written{$name}++; next if !ref($file) and $file =~ /\.\Q$lib_ext\E$/; outs( join "", qq(Packing "), ref $file ? $file->{name} : $file, qq("...) ); my $content; if (ref($file)) { $content = $file->{buf}; } else { open FILE, '<', $file or die "Can't open $file: $!"; binmode(FILE); $content = ; close FILE; PAR::Filter::PodStrip->new->apply(\$content, $file) if !$ENV{PAR_VERBATIM} and $name =~ /\.(?:pm|ix|al)$/i; PAR::Filter::PatchContent->new->apply(\$content, $file, $name); } outs(qq(Written as "$name")); $fh->print("FILE"); $fh->print(pack('N', length($name) + 9)); $fh->print(sprintf( "%08x/%s", Archive::Zip::computeCRC32($content), $name )); $fh->print(pack('N', length($content))); $fh->print($content); } } # }}} # Now write out the PAR and magic strings {{{ $zip->writeToFileHandle($fh) if $zip; $cache_name = substr $cache_name, 0, 40; if (!$cache_name and my $mtime = (stat($out))[9]) { my $ctx = eval { require Digest::SHA; Digest::SHA->new(1) } || eval { require Digest::SHA1; Digest::SHA1->new } || eval { require Digest::MD5; Digest::MD5->new }; # Workaround for bug in Digest::SHA 5.38 and 5.39 my $sha_version = eval { $Digest::SHA::VERSION } || 0; if ($sha_version eq '5.38' or $sha_version eq '5.39') { $ctx->addfile($out, "b") if ($ctx); } else { if ($ctx and open(my $fh, "<$out")) { binmode($fh); $ctx->addfile($fh); close($fh); } } $cache_name = $ctx ? $ctx->hexdigest : $mtime; } $cache_name .= "\0" x (41 - length $cache_name); $cache_name .= "CACHE"; $fh->print($cache_name); $fh->print(pack('N', $fh->tell - length($loader))); $fh->print("\nPAR.pm\n"); $fh->close; chmod 0755, $out; # }}} exit; } # }}} # Prepare $progname into PAR file cache {{{ { last unless defined $start_pos; _fix_progname(); # Now load the PAR file and put it into PAR::LibCache {{{ require PAR; PAR::Heavy::_init_dynaloader(); { #local $INC{'Cwd.pm'} = __FILE__ if $^O ne 'MSWin32'; require File::Find; require Archive::Zip; } my $zip = Archive::Zip->new; my $fh = IO::File->new; $fh->fdopen(fileno(_FH), 'r') or die "$!: $@"; $zip->readFromFileHandle($fh, $progname) == Archive::Zip::AZ_OK() or die "$!: $@"; push @PAR::LibCache, $zip; $PAR::LibCache{$progname} = $zip; $quiet = !$ENV{PAR_DEBUG}; outs(qq(\$ENV{PAR_TEMP} = "$ENV{PAR_TEMP}")); if (defined $ENV{PAR_TEMP}) { # should be set at this point! foreach my $member ( $zip->members ) { next if $member->isDirectory; my $member_name = $member->fileName; next unless $member_name =~ m{ ^ /?shlib/ (?:$Config::Config{version}/)? (?:$Config::Config{archname}/)? ([^/]+) $ }x; my $extract_name = $1; my $dest_name = File::Spec->catfile($ENV{PAR_TEMP}, $extract_name); if (-f $dest_name && -s _ == $member->uncompressedSize()) { outs(qq(Skipping "$member_name" since it already exists at "$dest_name")); } else { outs(qq(Extracting "$member_name" to "$dest_name")); $member->extractToFileNamed($dest_name); chmod(0555, $dest_name) if $^O eq "hpux"; } } } # }}} } # }}} # If there's no main.pl to run, show usage {{{ unless ($PAR::LibCache{$progname}) { die << "." unless @ARGV; Usage: $0 [ -Alib.par ] [ -Idir ] [ -Mmodule ] [ src.par ] [ program.pl ] $0 [ -B|-b ] [-Ooutfile] src.par . $ENV{PAR_PROGNAME} = $progname = $0 = shift(@ARGV); } # }}} sub CreatePath { my ($name) = @_; require File::Basename; my ($basename, $path, $ext) = File::Basename::fileparse($name, ('\..*')); require File::Path; File::Path::mkpath($path) unless(-e $path); # mkpath dies with error } sub require_modules { #local $INC{'Cwd.pm'} = __FILE__ if $^O ne 'MSWin32'; require lib; require DynaLoader; require integer; require strict; require warnings; require vars; require Carp; require Carp::Heavy; require Errno; require Exporter::Heavy; require Exporter; require Fcntl; require File::Temp; require File::Spec; require XSLoader; require Config; require IO::Handle; require IO::File; require Compress::Zlib; require Archive::Zip; require PAR; require PAR::Heavy; require PAR::Dist; require PAR::Filter::PodStrip; require PAR::Filter::PatchContent; require attributes; eval { require Cwd }; eval { require Win32 }; eval { require Scalar::Util }; eval { require Archive::Unzip::Burst }; eval { require Tie::Hash::NamedCapture }; eval { require PerlIO; require PerlIO::scalar }; } # The C version of this code appears in myldr/mktmpdir.c # This code also lives in PAR::SetupTemp as set_par_temp_env! sub _set_par_temp { if (defined $ENV{PAR_TEMP} and $ENV{PAR_TEMP} =~ /(.+)/) { $par_temp = $1; return; } foreach my $path ( (map $ENV{$_}, qw( PAR_TMPDIR TMPDIR TEMPDIR TEMP TMP )), qw( C:\\TEMP /tmp . ) ) { next unless defined $path and -d $path and -w $path; my $username; my $pwuid; # does not work everywhere: eval {($pwuid) = getpwuid($>) if defined $>;}; if ( defined(&Win32::LoginName) ) { $username = &Win32::LoginName; } elsif (defined $pwuid) { $username = $pwuid; } else { $username = $ENV{USERNAME} || $ENV{USER} || 'SYSTEM'; } $username =~ s/\W/_/g; my $stmpdir = "$path$Config{_delim}par-$username"; mkdir $stmpdir, 0755; if (!$ENV{PAR_CLEAN} and my $mtime = (stat($progname))[9]) { open (my $fh, "<". $progname); seek $fh, -18, 2; sysread $fh, my $buf, 6; if ($buf eq "\0CACHE") { seek $fh, -58, 2; sysread $fh, $buf, 41; $buf =~ s/\0//g; $stmpdir .= "$Config{_delim}cache-" . $buf; } else { my $ctx = eval { require Digest::SHA; Digest::SHA->new(1) } || eval { require Digest::SHA1; Digest::SHA1->new } || eval { require Digest::MD5; Digest::MD5->new }; # Workaround for bug in Digest::SHA 5.38 and 5.39 my $sha_version = eval { $Digest::SHA::VERSION } || 0; if ($sha_version eq '5.38' or $sha_version eq '5.39') { $ctx->addfile($progname, "b") if ($ctx); } else { if ($ctx and open(my $fh, "<$progname")) { binmode($fh); $ctx->addfile($fh); close($fh); } } $stmpdir .= "$Config{_delim}cache-" . ( $ctx ? $ctx->hexdigest : $mtime ); } close($fh); } else { $ENV{PAR_CLEAN} = 1; $stmpdir .= "$Config{_delim}temp-$$"; } $ENV{PAR_TEMP} = $stmpdir; mkdir $stmpdir, 0755; last; } $par_temp = $1 if $ENV{PAR_TEMP} and $ENV{PAR_TEMP} =~ /(.+)/; } sub _tempfile { my ($ext, $crc) = @_; my ($fh, $filename); $filename = "$par_temp/$crc$ext"; if ($ENV{PAR_CLEAN}) { unlink $filename if -e $filename; push @tmpfile, $filename; } else { return (undef, $filename) if (-r $filename); } open $fh, '>', $filename or die $!; binmode($fh); return($fh, $filename); } # same code lives in PAR::SetupProgname::set_progname sub _set_progname { if (defined $ENV{PAR_PROGNAME} and $ENV{PAR_PROGNAME} =~ /(.+)/) { $progname = $1; } $progname ||= $0; if ($ENV{PAR_TEMP} and index($progname, $ENV{PAR_TEMP}) >= 0) { $progname = substr($progname, rindex($progname, $Config{_delim}) + 1); } if (!$ENV{PAR_PROGNAME} or index($progname, $Config{_delim}) >= 0) { if (open my $fh, '<', $progname) { return if -s $fh; } if (-s "$progname$Config{_exe}") { $progname .= $Config{_exe}; return; } } foreach my $dir (split /\Q$Config{path_sep}\E/, $ENV{PATH}) { next if exists $ENV{PAR_TEMP} and $dir eq $ENV{PAR_TEMP}; $dir =~ s/\Q$Config{_delim}\E$//; (($progname = "$dir$Config{_delim}$progname$Config{_exe}"), last) if -s "$dir$Config{_delim}$progname$Config{_exe}"; (($progname = "$dir$Config{_delim}$progname"), last) if -s "$dir$Config{_delim}$progname"; } } sub _fix_progname { $0 = $progname ||= $ENV{PAR_PROGNAME}; if (index($progname, $Config{_delim}) < 0) { $progname = ".$Config{_delim}$progname"; } # XXX - hack to make PWD work my $pwd = (defined &Cwd::getcwd) ? Cwd::getcwd() : ((defined &Win32::GetCwd) ? Win32::GetCwd() : `pwd`); chomp($pwd); $progname =~ s/^(?=\.\.?\Q$Config{_delim}\E)/$pwd$Config{_delim}/; $ENV{PAR_PROGNAME} = $progname; } sub _par_init_env { if ( $ENV{PAR_INITIALIZED}++ == 1 ) { return; } else { $ENV{PAR_INITIALIZED} = 2; } for (qw( SPAWNED TEMP CLEAN DEBUG CACHE PROGNAME ARGC ARGV_0 ) ) { delete $ENV{'PAR_'.$_}; } for (qw/ TMPDIR TEMP CLEAN DEBUG /) { $ENV{'PAR_'.$_} = $ENV{'PAR_GLOBAL_'.$_} if exists $ENV{'PAR_GLOBAL_'.$_}; } my $par_clean = "__ENV_PAR_CLEAN__ "; if ($ENV{PAR_TEMP}) { delete $ENV{PAR_CLEAN}; } elsif (!exists $ENV{PAR_GLOBAL_CLEAN}) { my $value = substr($par_clean, 12 + length("CLEAN")); $ENV{PAR_CLEAN} = $1 if $value =~ /^PAR_CLEAN=(\S+)/; } } sub outs { return if $quiet; if ($logfh) { print $logfh "@_\n"; } else { print "@_\n"; } } sub init_inc { require Config; push @INC, grep defined, map $Config::Config{$_}, qw( archlibexp privlibexp sitearchexp sitelibexp vendorarchexp vendorlibexp ); } ######################################################################## # The main package for script execution package main; require PAR; unshift @INC, \&PAR::find_par; PAR->import(@par_args); die qq(par.pl: Can't open perl script "$progname": No such file or directory\n) unless -e $progname; do $progname; CORE::exit($1) if ($@ =~/^_TK_EXIT_\((\d+)\)/); die $@ if $@; }; $::__ERROR = $@ if $@; } CORE::exit($1) if ($::__ERROR =~/^_TK_EXIT_\((\d+)\)/); die $::__ERROR if $::__ERROR; 1; #line 1014 __END__ FILE21ccf883/Compress/Raw/Zlib.pm:#line 1 "/usr/lib/perl/5.14/Compress/Raw/Zlib.pm" package Compress::Raw::Zlib; require 5.004 ; require Exporter; use AutoLoader; use Carp ; #use Parse::Parameters; use strict ; use warnings ; use bytes ; our ($VERSION, $XS_VERSION, @ISA, @EXPORT, $AUTOLOAD); $VERSION = '2.033'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @ISA = qw(Exporter); # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. @EXPORT = qw( adler32 crc32 ZLIB_VERSION ZLIB_VERNUM DEF_WBITS OS_CODE MAX_MEM_LEVEL MAX_WBITS Z_ASCII Z_BEST_COMPRESSION Z_BEST_SPEED Z_BINARY Z_BLOCK Z_BUF_ERROR Z_DATA_ERROR Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY Z_DEFLATED Z_ERRNO Z_FILTERED Z_FIXED Z_FINISH Z_FULL_FLUSH Z_HUFFMAN_ONLY Z_MEM_ERROR Z_NEED_DICT Z_NO_COMPRESSION Z_NO_FLUSH Z_NULL Z_OK Z_PARTIAL_FLUSH Z_RLE Z_STREAM_END Z_STREAM_ERROR Z_SYNC_FLUSH Z_TREES Z_UNKNOWN Z_VERSION_ERROR WANT_GZIP WANT_GZIP_OR_ZLIB ); use constant WANT_GZIP => 16; use constant WANT_GZIP_OR_ZLIB => 32; sub AUTOLOAD { my($constname); ($constname = $AUTOLOAD) =~ s/.*:://; my ($error, $val) = constant($constname); Carp::croak $error if $error; no strict 'refs'; *{$AUTOLOAD} = sub { $val }; goto &{$AUTOLOAD}; } use constant FLAG_APPEND => 1 ; use constant FLAG_CRC => 2 ; use constant FLAG_ADLER => 4 ; use constant FLAG_CONSUME_INPUT => 8 ; use constant FLAG_LIMIT_OUTPUT => 16 ; eval { require XSLoader; XSLoader::load('Compress::Raw::Zlib', $XS_VERSION); 1; } or do { require DynaLoader; local @ISA = qw(DynaLoader); bootstrap Compress::Raw::Zlib $XS_VERSION ; }; use constant Parse_any => 0x01; use constant Parse_unsigned => 0x02; use constant Parse_signed => 0x04; use constant Parse_boolean => 0x08; use constant Parse_string => 0x10; use constant Parse_custom => 0x12; use constant Parse_store_ref => 0x100 ; use constant OFF_PARSED => 0 ; use constant OFF_TYPE => 1 ; use constant OFF_DEFAULT => 2 ; use constant OFF_FIXED => 3 ; use constant OFF_FIRST_ONLY => 4 ; use constant OFF_STICKY => 5 ; sub ParseParameters { my $level = shift || 0 ; my $sub = (caller($level + 1))[3] ; #local $Carp::CarpLevel = 1 ; my $p = new Compress::Raw::Zlib::Parameters() ; $p->parse(@_) or croak "$sub: $p->{Error}" ; return $p; } sub Compress::Raw::Zlib::Parameters::new { my $class = shift ; my $obj = { Error => '', Got => {}, } ; #return bless $obj, ref($class) || $class || __PACKAGE__ ; return bless $obj, 'Compress::Raw::Zlib::Parameters' ; } sub Compress::Raw::Zlib::Parameters::setError { my $self = shift ; my $error = shift ; my $retval = @_ ? shift : undef ; $self->{Error} = $error ; return $retval; } #sub getError #{ # my $self = shift ; # return $self->{Error} ; #} sub Compress::Raw::Zlib::Parameters::parse { my $self = shift ; my $default = shift ; my $got = $self->{Got} ; my $firstTime = keys %{ $got } == 0 ; my (@Bad) ; my @entered = () ; # Allow the options to be passed as a hash reference or # as the complete hash. if (@_ == 0) { @entered = () ; } elsif (@_ == 1) { my $href = $_[0] ; return $self->setError("Expected even number of parameters, got 1") if ! defined $href or ! ref $href or ref $href ne "HASH" ; foreach my $key (keys %$href) { push @entered, $key ; push @entered, \$href->{$key} ; } } else { my $count = @_; return $self->setError("Expected even number of parameters, got $count") if $count % 2 != 0 ; for my $i (0.. $count / 2 - 1) { push @entered, $_[2* $i] ; push @entered, \$_[2* $i+1] ; } } while (my ($key, $v) = each %$default) { croak "need 4 params [@$v]" if @$v != 4 ; my ($first_only, $sticky, $type, $value) = @$v ; my $x ; $self->_checkType($key, \$value, $type, 0, \$x) or return undef ; $key = lc $key; if ($firstTime || ! $sticky) { $got->{$key} = [0, $type, $value, $x, $first_only, $sticky] ; } $got->{$key}[OFF_PARSED] = 0 ; } for my $i (0.. @entered / 2 - 1) { my $key = $entered[2* $i] ; my $value = $entered[2* $i+1] ; #print "Key [$key] Value [$value]" ; #print defined $$value ? "[$$value]\n" : "[undef]\n"; $key =~ s/^-// ; my $canonkey = lc $key; if ($got->{$canonkey} && ($firstTime || ! $got->{$canonkey}[OFF_FIRST_ONLY] )) { my $type = $got->{$canonkey}[OFF_TYPE] ; my $s ; $self->_checkType($key, $value, $type, 1, \$s) or return undef ; #$value = $$value unless $type & Parse_store_ref ; $value = $$value ; $got->{$canonkey} = [1, $type, $value, $s] ; } else { push (@Bad, $key) } } if (@Bad) { my ($bad) = join(", ", @Bad) ; return $self->setError("unknown key value(s) @Bad") ; } return 1; } sub Compress::Raw::Zlib::Parameters::_checkType { my $self = shift ; my $key = shift ; my $value = shift ; my $type = shift ; my $validate = shift ; my $output = shift; #local $Carp::CarpLevel = $level ; #print "PARSE $type $key $value $validate $sub\n" ; if ( $type & Parse_store_ref) { #$value = $$value # if ref ${ $value } ; $$output = $value ; return 1; } $value = $$value ; if ($type & Parse_any) { $$output = $value ; return 1; } elsif ($type & Parse_unsigned) { return $self->setError("Parameter '$key' must be an unsigned int, got 'undef'") if $validate && ! defined $value ; return $self->setError("Parameter '$key' must be an unsigned int, got '$value'") if $validate && $value !~ /^\d+$/; $$output = defined $value ? $value : 0 ; return 1; } elsif ($type & Parse_signed) { return $self->setError("Parameter '$key' must be a signed int, got 'undef'") if $validate && ! defined $value ; return $self->setError("Parameter '$key' must be a signed int, got '$value'") if $validate && $value !~ /^-?\d+$/; $$output = defined $value ? $value : 0 ; return 1 ; } elsif ($type & Parse_boolean) { return $self->setError("Parameter '$key' must be an int, got '$value'") if $validate && defined $value && $value !~ /^\d*$/; $$output = defined $value ? $value != 0 : 0 ; return 1; } elsif ($type & Parse_string) { $$output = defined $value ? $value : "" ; return 1; } $$output = $value ; return 1; } sub Compress::Raw::Zlib::Parameters::parsed { my $self = shift ; my $name = shift ; return $self->{Got}{lc $name}[OFF_PARSED] ; } sub Compress::Raw::Zlib::Parameters::value { my $self = shift ; my $name = shift ; if (@_) { $self->{Got}{lc $name}[OFF_PARSED] = 1; $self->{Got}{lc $name}[OFF_DEFAULT] = $_[0] ; $self->{Got}{lc $name}[OFF_FIXED] = $_[0] ; } return $self->{Got}{lc $name}[OFF_FIXED] ; } sub Compress::Raw::Zlib::Deflate::new { my $pkg = shift ; my ($got) = ParseParameters(0, { 'AppendOutput' => [1, 1, Parse_boolean, 0], 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()], 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()], 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()], 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()], 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()], 'Dictionary' => [1, 1, Parse_any, ""], }, @_) ; croak "Compress::Raw::Zlib::Deflate::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; $flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; my $windowBits = $got->value('WindowBits'); $windowBits += MAX_WBITS() if ($windowBits & MAX_WBITS()) == 0 ; _deflateInit($flags, $got->value('Level'), $got->value('Method'), $windowBits, $got->value('MemLevel'), $got->value('Strategy'), $got->value('Bufsize'), $got->value('Dictionary')) ; } sub Compress::Raw::Zlib::Inflate::new { my $pkg = shift ; my ($got) = ParseParameters(0, { 'AppendOutput' => [1, 1, Parse_boolean, 0], 'LimitOutput' => [1, 1, Parse_boolean, 0], 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'ConsumeInput' => [1, 1, Parse_boolean, 1], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()], 'Dictionary' => [1, 1, Parse_any, ""], }, @_) ; croak "Compress::Raw::Zlib::Inflate::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; $flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; $flags |= FLAG_CONSUME_INPUT if $got->value('ConsumeInput') ; $flags |= FLAG_LIMIT_OUTPUT if $got->value('LimitOutput') ; my $windowBits = $got->value('WindowBits'); $windowBits += MAX_WBITS() if ($windowBits & MAX_WBITS()) == 0 ; _inflateInit($flags, $windowBits, $got->value('Bufsize'), $got->value('Dictionary')) ; } sub Compress::Raw::Zlib::InflateScan::new { my $pkg = shift ; my ($got) = ParseParameters(0, { 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'WindowBits' => [1, 1, Parse_signed, -MAX_WBITS()], 'Dictionary' => [1, 1, Parse_any, ""], }, @_) ; croak "Compress::Raw::Zlib::InflateScan::new: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; #$flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; #$flags |= FLAG_CONSUME_INPUT if $got->value('ConsumeInput') ; _inflateScanInit($flags, $got->value('WindowBits'), $got->value('Bufsize'), '') ; } sub Compress::Raw::Zlib::inflateScanStream::createDeflateStream { my $pkg = shift ; my ($got) = ParseParameters(0, { 'AppendOutput' => [1, 1, Parse_boolean, 0], 'CRC32' => [1, 1, Parse_boolean, 0], 'ADLER32' => [1, 1, Parse_boolean, 0], 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()], 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()], 'WindowBits' => [1, 1, Parse_signed, - MAX_WBITS()], 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()], 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()], }, @_) ; croak "Compress::Raw::Zlib::InflateScan::createDeflateStream: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $flags = 0 ; $flags |= FLAG_APPEND if $got->value('AppendOutput') ; $flags |= FLAG_CRC if $got->value('CRC32') ; $flags |= FLAG_ADLER if $got->value('ADLER32') ; $pkg->_createDeflateStream($flags, $got->value('Level'), $got->value('Method'), $got->value('WindowBits'), $got->value('MemLevel'), $got->value('Strategy'), $got->value('Bufsize'), ) ; } sub Compress::Raw::Zlib::inflateScanStream::inflate { my $self = shift ; my $buffer = $_[1]; my $eof = $_[2]; my $status = $self->scan(@_); if ($status == Z_OK() && $_[2]) { my $byte = ' '; $status = $self->scan(\$byte, $_[1]) ; } return $status ; } sub Compress::Raw::Zlib::deflateStream::deflateParams { my $self = shift ; my ($got) = ParseParameters(0, { 'Level' => [1, 1, Parse_signed, undef], 'Strategy' => [1, 1, Parse_unsigned, undef], 'Bufsize' => [1, 1, Parse_unsigned, undef], }, @_) ; croak "Compress::Raw::Zlib::deflateParams needs Level and/or Strategy" unless $got->parsed('Level') + $got->parsed('Strategy') + $got->parsed('Bufsize'); croak "Compress::Raw::Zlib::Inflate::deflateParams: Bufsize must be >= 1, you specified " . $got->value('Bufsize') if $got->parsed('Bufsize') && $got->value('Bufsize') <= 1; my $flags = 0; $flags |= 1 if $got->parsed('Level') ; $flags |= 2 if $got->parsed('Strategy') ; $flags |= 4 if $got->parsed('Bufsize') ; $self->_deflateParams($flags, $got->value('Level'), $got->value('Strategy'), $got->value('Bufsize')); } # Autoload methods go after __END__, and are processed by the autosplit program. 1; __END__ #line 1430 FILE53835034/Config.pm #line 1 "/usr/lib/perl/5.14/Config.pm" # This file was created by configpm when Perl was built. Any changes # made to this file will be lost the next time perl is built. # for a description of the variables, please have a look at the # Glossary file, as written in the Porting folder, or use the url: # http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/Glossary package Config; use strict; use warnings; use vars '%Config'; # Skip @Config::EXPORT because it only contains %Config, which we special # case below as it's not a function. @Config::EXPORT won't change in the # lifetime of Perl 5. my %Export_Cache = (myconfig => 1, config_sh => 1, config_vars => 1, config_re => 1, compile_date => 1, local_patches => 1, bincompat_options => 1, non_bincompat_options => 1, header_files => 1); @Config::EXPORT = qw(%Config); @Config::EXPORT_OK = keys %Export_Cache; # Need to stub all the functions to make code such as print Config::config_sh # keep working sub bincompat_options; sub compile_date; sub config_re; sub config_sh; sub config_vars; sub header_files; sub local_patches; sub myconfig; sub non_bincompat_options; # Define our own import method to avoid pulling in the full Exporter: sub import { shift; @_ = @Config::EXPORT unless @_; my @funcs = grep $_ ne '%Config', @_; my $export_Config = @funcs < @_ ? 1 : 0; no strict 'refs'; my $callpkg = caller(0); foreach my $func (@funcs) { die qq{"$func" is not exported by the Config module\n} unless $Export_Cache{$func}; *{$callpkg.'::'.$func} = \&{$func}; } *{"$callpkg\::Config"} = \%Config if $export_Config; return; } die "Perl lib version (5.14.2) doesn't match executable '$0' version ($])" unless $^V; $^V eq 5.14.2 or die "Perl lib version (5.14.2) doesn't match executable '$0' version (" . sprintf("v%vd",$^V) . ")"; sub FETCH { my($self, $key) = @_; # check for cached value (which may be undef so we use exists not defined) return exists $self->{$key} ? $self->{$key} : $self->fetch_string($key); } sub TIEHASH { bless $_[1], $_[0]; } sub DESTROY { } sub AUTOLOAD { require 'Config_heavy.pl'; goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/; die "&Config::AUTOLOAD failed on $Config::AUTOLOAD"; } # tie returns the object, so the value returned to require will be true. tie %Config, 'Config', { archlibexp => '/usr/lib/perl/5.14', archname => 'x86_64-linux-gnu-thread-multi', cc => 'cc', d_readlink => 'define', d_symlink => 'define', dlext => 'so', dlsrc => 'dl_dlopen.xs', dont_use_nlink => undef, exe_ext => '', inc_version_list => '', intsize => '4', ldlibpthname => 'LD_LIBRARY_PATH', libpth => '/usr/local/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /usr/lib', osname => 'linux', osvers => '3.2.0-4-amd64', path_sep => ':', privlibexp => '/usr/share/perl/5.14', scriptdir => '/usr/bin', sitearchexp => '/usr/local/lib/perl/5.14.2', sitelibexp => '/usr/local/share/perl/5.14.2', so => 'so', useithreads => 'define', usevendorprefix => 'define', version => '5.14.2', }; FILEc33fbebe/Config_git.pl###################################################################### # WARNING: 'lib/Config_git.pl' is generated by make_patchnum.pl # DO NOT EDIT DIRECTLY - edit make_patchnum.pl instead ###################################################################### $Config::Git_Data=<<'ENDOFGIT'; git_commit_id='' git_describe='' git_branch='' git_uncommitted_changes='' git_commit_id_title='' ENDOFGIT FILE93da8b45/Config_heavy.pl# This file was created by configpm when Perl was built. Any changes # made to this file will be lost the next time perl is built. package Config; use strict; use warnings; use vars '%Config'; sub bincompat_options { return split ' ', (Internals::V())[0]; } sub non_bincompat_options { return split ' ', (Internals::V())[1]; } sub compile_date { return (Internals::V())[2] } sub local_patches { my (undef, undef, undef, @patches) = Internals::V(); return @patches; } sub _V { my ($bincompat, $non_bincompat, $date, @patches) = Internals::V(); my $opts = join ' ', sort split ' ', "$bincompat $non_bincompat"; # wrap at 76 columns. $opts =~ s/(?=.{53})(.{1,53}) /$1\n /mg; print Config::myconfig(); if ($^O eq 'VMS') { print "\nCharacteristics of this PERLSHR image: \n"; } else { print "\nCharacteristics of this binary (from libperl): \n"; } print " Compile-time options: $opts\n"; if (@patches) { print " Locally applied patches:\n"; print "\t$_\n" foreach @patches; } print " Built under $^O\n"; print " $date\n" if defined $date; my @env = map { "$_=\"$ENV{$_}\"" } sort grep {/^PERL/} keys %ENV; push @env, "CYGWIN=\"$ENV{CYGWIN}\"" if $^O eq 'cygwin' and $ENV{CYGWIN}; if (@env) { print " \%ENV:\n"; print " $_\n" foreach @env; } print " \@INC:\n"; print " $_\n" foreach @INC; } sub header_files { return qw(EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h embed.h embedvar.h form.h gv.h handy.h hv.h intrpvar.h iperlsys.h keywords.h mg.h nostdio.h op.h opcode.h pad.h parser.h patchlevel.h perl.h perlio.h perliol.h perlsdio.h perlsfio.h perlvars.h perly.h pp.h pp_proto.h proto.h regcomp.h regexp.h regnodes.h scope.h sv.h thread.h time64.h unixish.h utf8.h util.h); } ## ## This file was produced by running the Configure script. It holds all the ## definitions figured out by Configure. Should you modify one of these values, ## do not forget to propagate your changes by running "Configure -der". You may ## instead choose to run each of the .SH files by yourself, or "Configure -S". ## # ## Package name : perl5 ## Source directory : . ## Configuration time: Wed Apr 10 16:58:16 UTC 2013 ## Configured by : Debian Project ## Target system : linux madeleine 3.2.0-4-amd64 #1 smp debian 3.2.39-2 x86_64 gnulinux # #: Configure command line arguments. # #: Variables propagated from previous config.sh file. our $summary = <<'!END!'; Summary of my $package (revision $revision $version_patchlevel_string) configuration: $git_commit_id_title $git_commit_id$git_ancestor_line Platform: osname=$osname, osvers=$osvers, archname=$archname uname='$myuname' config_args='$config_args' hint=$hint, useposix=$useposix, d_sigaction=$d_sigaction useithreads=$useithreads, usemultiplicity=$usemultiplicity useperlio=$useperlio, d_sfio=$d_sfio, uselargefiles=$uselargefiles, usesocks=$usesocks use64bitint=$use64bitint, use64bitall=$use64bitall, uselongdouble=$uselongdouble usemymalloc=$usemymalloc, bincompat5005=undef Compiler: cc='$cc', ccflags ='$ccflags', optimize='$optimize', cppflags='$cppflags' ccversion='$ccversion', gccversion='$gccversion', gccosandvers='$gccosandvers' intsize=$intsize, longsize=$longsize, ptrsize=$ptrsize, doublesize=$doublesize, byteorder=$byteorder d_longlong=$d_longlong, longlongsize=$longlongsize, d_longdbl=$d_longdbl, longdblsize=$longdblsize ivtype='$ivtype', ivsize=$ivsize, nvtype='$nvtype', nvsize=$nvsize, Off_t='$lseektype', lseeksize=$lseeksize alignbytes=$alignbytes, prototype=$prototype Linker and Libraries: ld='$ld', ldflags ='$ldflags' libpth=$libpth libs=$libs perllibs=$perllibs libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl gnulibc_version='$gnulibc_version' Dynamic Linking: dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags' cccdlflags='$cccdlflags', lddlflags='$lddlflags' !END! my $summary_expanded; sub myconfig { return $summary_expanded if $summary_expanded; ($summary_expanded = $summary) =~ s{\$(\w+)} { my $c; if ($1 eq 'git_ancestor_line') { if ($Config::Config{git_ancestor}) { $c= "\n Ancestor: $Config::Config{git_ancestor}"; } else { $c= ""; } } else { $c = $Config::Config{$1}; } defined($c) ? $c : 'undef' }ge; $summary_expanded; } local *_ = \my $a; $_ = <<'!END!'; Author='' CONFIG='true' Date='$Date' Header='' Id='$Id' Locker='' Log='$Log' PATCHLEVEL='14' PERL_API_REVISION='5' PERL_API_SUBVERSION='0' PERL_API_VERSION='14' PERL_CONFIG_SH='true' PERL_PATCHLEVEL='' PERL_REVISION='5' PERL_SUBVERSION='2' PERL_VERSION='14' RCSfile='$RCSfile' Revision='$Revision' SUBVERSION='2' Source='' State='' _a='.a' _exe='' _o='.o' afs='false' afsroot='/afs' alignbytes='8' ansi2knr='' aphostname='/bin/hostname' api_revision='5' api_subversion='0' api_version='14' api_versionstring='5.14.0' ar='ar' archlib='/usr/lib/perl/5.14' archlibexp='/usr/lib/perl/5.14' archname64='' archname='x86_64-linux-gnu-thread-multi' archobjs='' asctime_r_proto='REENTRANT_PROTO_B_SB' awk='awk' baserev='5.0' bash='' bin='/usr/bin' bin_ELF='define' binexp='/usr/bin' bison='bison' byacc='byacc' byteorder='12345678' c='' castflags='0' cat='cat' cc='cc' cccdlflags='-fPIC' ccdlflags='-Wl,-E' ccflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='gcc' ccsymbols='' ccversion='' cf_by='Debian Project' cf_email='perl@packages.debian.org' cf_time='Wed Apr 10 16:58:16 UTC 2013' charbits='8' charsize='1' chgrp='' chmod='chmod' chown='' clocktype='clock_t' comm='comm' compress='' config_arg0='Configure' config_arg10='-Darchlib=/usr/lib/perl/5.14' config_arg11='-Dvendorprefix=/usr' config_arg12='-Dvendorlib=/usr/share/perl5' config_arg13='-Dvendorarch=/usr/lib/perl5' config_arg14='-Dsiteprefix=/usr/local' config_arg15='-Dsitelib=/usr/local/share/perl/5.14.2' config_arg16='-Dsitearch=/usr/local/lib/perl/5.14.2' config_arg17='-Dman1dir=/usr/share/man/man1' config_arg18='-Dman3dir=/usr/share/man/man3' config_arg19='-Dsiteman1dir=/usr/local/man/man1' config_arg1='-Dusethreads' config_arg20='-Dsiteman3dir=/usr/local/man/man3' config_arg21='-Duse64bitint' config_arg22='-Dman1ext=1' config_arg23='-Dman3ext=3perl' config_arg24='-Dpager=/usr/bin/sensible-pager' config_arg25='-Uafs' config_arg26='-Ud_csh' config_arg27='-Ud_ualarm' config_arg28='-Uusesfio' config_arg29='-Uusenm' config_arg2='-Duselargefiles' config_arg30='-Ui_libutil' config_arg31='-DDEBUGGING=-g' config_arg32='-Doptimize=-O2' config_arg33='-Duseshrplib' config_arg34='-Dlibperl=libperl.so.5.14.2' config_arg35='-des' config_arg3='-Dccflags=-DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security' config_arg4='-Dldflags= -Wl,-z,relro' config_arg5='-Dlddlflags=-shared -Wl,-z,relro' config_arg6='-Dcccdlflags=-fPIC' config_arg7='-Darchname=x86_64-linux-gnu' config_arg8='-Dprefix=/usr' config_arg9='-Dprivlib=/usr/share/perl/5.14' config_argc='35' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.14 -Darchlib=/usr/lib/perl/5.14 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.14.2 -Dsitearch=/usr/local/lib/perl/5.14.2 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.14.2 -des' contains='grep' cp='cp' cpio='' cpp='cpp' cpp_stuff='42' cppccsymbols='' cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include' cpplast='-' cppminus='-' cpprun='cc -E' cppstdin='cc -E' cppsymbols='_FILE_OFFSET_BITS=64 _GNU_SOURCE=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 _LP64=1 _POSIX_C_SOURCE=200809L _POSIX_SOURCE=1 _REENTRANT=1 _XOPEN_SOURCE=700 _XOPEN_SOURCE_EXTENDED=1 __ATOMIC_ACQUIRE=2 __ATOMIC_ACQ_REL=4 __ATOMIC_CONSUME=1 __ATOMIC_RELAXED=0 __ATOMIC_RELEASE=3 __ATOMIC_SEQ_CST=5 __BIGGEST_ALIGNMENT__=16 __BYTE_ORDER__=1234 __CHAR16_TYPE__=short\ unsigned\ int __CHAR32_TYPE__=unsigned\ int __CHAR_BIT__=8 __DBL_DECIMAL_DIG__=17 __DBL_DENORM_MIN__=((double)4.94065645841246544177e-324L) __DBL_DIG__=15 __DBL_EPSILON__=((double)2.22044604925031308085e-16L) __DBL_HAS_DENORM__=1 __DBL_HAS_INFINITY__=1 __DBL_HAS_QUIET_NAN__=1 __DBL_MANT_DIG__=53 __DBL_MAX_10_EXP__=308 __DBL_MAX_EXP__=1024 __DBL_MAX__=((double)1.79769313486231570815e+308L) __DBL_MIN_10_EXP__=(-307) __DBL_MIN_EXP__=(-1021) __DBL_MIN__=((double)2.22507385850720138309e-308L) __DEC128_EPSILON__=1E-33DL __DEC128_MANT_DIG__=34 __DEC128_MAX_EXP__=6145 __DEC128_MAX__=9.999999999999999999999999999999999E6144DL __DEC128_MIN_EXP__=(-6142) __DEC128_MIN__=1E-6143DL __DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL __DEC32_EPSILON__=1E-6DF __DEC32_MANT_DIG__=7 __DEC32_MAX_EXP__=97 __DEC32_MAX__=9.999999E96DF __DEC32_MIN_EXP__=(-94) __DEC32_MIN__=1E-95DF __DEC32_SUBNORMAL_MIN__=0.000001E-95DF __DEC64_EPSILON__=1E-15DD __DEC64_MANT_DIG__=16 __DEC64_MAX_EXP__=385 __DEC64_MAX__=9.999999999999999E384DD __DEC64_MIN_EXP__=(-382) __DEC64_MIN__=1E-383DD __DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD __DECIMAL_BID_FORMAT__=1 __DECIMAL_DIG__=21 __DEC_EVAL_METHOD__=2 __ELF__=1 __FINITE_MATH_ONLY__=0 __FLOAT_WORD_ORDER__=1234 __FLT_DECIMAL_DIG__=9 __FLT_DENORM_MIN__=1.40129846432481707092e-45F __FLT_DIG__=6 __FLT_EPSILON__=1.19209289550781250000e-7F __FLT_EVAL_METHOD__=0 __FLT_HAS_DENORM__=1 __FLT_HAS_INFINITY__=1 __FLT_HAS_QUIET_NAN__=1 __FLT_MANT_DIG__=24 __FLT_MAX_10_EXP__=38 __FLT_MAX_EXP__=128 __FLT_MAX__=3.40282346638528859812e+38F __FLT_MIN_10_EXP__=(-37) __FLT_MIN_EXP__=(-125) __FLT_MIN__=1.17549435082228750797e-38F __FLT_RADIX__=2 __GCC_ATOMIC_BOOL_LOCK_FREE=2 __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2 __GCC_ATOMIC_CHAR_LOCK_FREE=2 __GCC_ATOMIC_INT_LOCK_FREE=2 __GCC_ATOMIC_LLONG_LOCK_FREE=2 __GCC_ATOMIC_LONG_LOCK_FREE=2 __GCC_ATOMIC_POINTER_LOCK_FREE=2 __GCC_ATOMIC_SHORT_LOCK_FREE=2 __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1 __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2 __GCC_HAVE_DWARF2_CFI_ASM=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1 __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1 __GLIBC_MINOR__=13 __GLIBC__=2 __GNUC_GNU_INLINE__=1 __GNUC_MINOR__=7 __GNUC_PATCHLEVEL__=2 __GNUC__=4 __GNU_LIBRARY__=6 __GXX_ABI_VERSION=1002 __INT16_C(c)=c __INT16_MAX__=32767 __INT16_TYPE__=short\ int __INT32_C(c)=c __INT32_MAX__=2147483647 __INT32_TYPE__=int __INT64_C(c)=cL __INT64_MAX__=9223372036854775807L __INT64_TYPE__=long\ int __INT8_C(c)=c __INT8_MAX__=127 __INT8_TYPE__=signed\ char __INTMAX_C(c)=cL __INTMAX_MAX__=9223372036854775807L __INTMAX_TYPE__=long\ int __INTPTR_MAX__=9223372036854775807L __INTPTR_TYPE__=long\ int __INT_FAST16_MAX__=9223372036854775807L __INT_FAST16_TYPE__=long\ int __INT_FAST32_MAX__=9223372036854775807L __INT_FAST32_TYPE__=long\ int __INT_FAST64_MAX__=9223372036854775807L __INT_FAST64_TYPE__=long\ int __INT_FAST8_MAX__=127 __INT_FAST8_TYPE__=signed\ char __INT_LEAST16_MAX__=32767 __INT_LEAST16_TYPE__=short\ int __INT_LEAST32_MAX__=2147483647 __INT_LEAST32_TYPE__=int __INT_LEAST64_MAX__=9223372036854775807L __INT_LEAST64_TYPE__=long\ int __INT_LEAST8_MAX__=127 __INT_LEAST8_TYPE__=signed\ char __INT_MAX__=2147483647 __LDBL_DENORM_MIN__=3.64519953188247460253e-4951L __LDBL_DIG__=18 __LDBL_EPSILON__=1.08420217248550443401e-19L __LDBL_HAS_DENORM__=1 __LDBL_HAS_INFINITY__=1 __LDBL_HAS_QUIET_NAN__=1 __LDBL_MANT_DIG__=64 __LDBL_MAX_10_EXP__=4932 __LDBL_MAX_EXP__=16384 __LDBL_MAX__=1.18973149535723176502e+4932L __LDBL_MIN_10_EXP__=(-4931) __LDBL_MIN_EXP__=(-16381) __LDBL_MIN__=3.36210314311209350626e-4932L __LONG_LONG_MAX__=9223372036854775807LL __LONG_MAX__=9223372036854775807L __LP64__=1 __MMX__=1 __ORDER_BIG_ENDIAN__=4321 __ORDER_LITTLE_ENDIAN__=1234 __ORDER_PDP_ENDIAN__=3412 __PRAGMA_REDEFINE_EXTNAME=1 __PTRDIFF_MAX__=9223372036854775807L __PTRDIFF_TYPE__=long\ int __REGISTER_PREFIX__= __SCHAR_MAX__=127 __SHRT_MAX__=32767 __SIG_ATOMIC_MAX__=2147483647 __SIG_ATOMIC_MIN__=(-2147483647\ -\ 1) __SIG_ATOMIC_TYPE__=int __SIZEOF_DOUBLE__=8 __SIZEOF_FLOAT__=4 __SIZEOF_INT128__=16 __SIZEOF_INT__=4 __SIZEOF_LONG_DOUBLE__=16 __SIZEOF_LONG_LONG__=8 __SIZEOF_LONG__=8 __SIZEOF_POINTER__=8 __SIZEOF_PTRDIFF_T__=8 __SIZEOF_SHORT__=2 __SIZEOF_SIZE_T__=8 __SIZEOF_WCHAR_T__=4 __SIZEOF_WINT_T__=4 __SIZE_MAX__=18446744073709551615UL __SIZE_TYPE__=long\ unsigned\ int __SSE2_MATH__=1 __SSE2__=1 __SSE_MATH__=1 __SSE__=1 __STDC_HOSTED__=1 __STDC__=1 __UINT16_C(c)=c __UINT16_MAX__=65535 __UINT16_TYPE__=short\ unsigned\ int __UINT32_C(c)=cU __UINT32_MAX__=4294967295U __UINT32_TYPE__=unsigned\ int __UINT64_C(c)=cUL __UINT64_MAX__=18446744073709551615UL __UINT64_TYPE__=long\ unsigned\ int __UINT8_C(c)=c __UINT8_MAX__=255 __UINT8_TYPE__=unsigned\ char __UINTMAX_C(c)=cUL __UINTMAX_MAX__=18446744073709551615UL __UINTMAX_TYPE__=long\ unsigned\ int __UINTPTR_MAX__=18446744073709551615UL __UINTPTR_TYPE__=long\ unsigned\ int __UINT_FAST16_MAX__=18446744073709551615UL __UINT_FAST16_TYPE__=long\ unsigned\ int __UINT_FAST32_MAX__=18446744073709551615UL __UINT_FAST32_TYPE__=long\ unsigned\ int __UINT_FAST64_MAX__=18446744073709551615UL __UINT_FAST64_TYPE__=long\ unsigned\ int __UINT_FAST8_MAX__=255 __UINT_FAST8_TYPE__=unsigned\ char __UINT_LEAST16_MAX__=65535 __UINT_LEAST16_TYPE__=short\ unsigned\ int __UINT_LEAST32_MAX__=4294967295U __UINT_LEAST32_TYPE__=unsigned\ int __UINT_LEAST64_MAX__=18446744073709551615UL __UINT_LEAST64_TYPE__=long\ unsigned\ int __UINT_LEAST8_MAX__=255 __UINT_LEAST8_TYPE__=unsigned\ char __USER_LABEL_PREFIX__= __USE_BSD=1 __USE_FILE_OFFSET64=1 __USE_GNU=1 __USE_LARGEFILE64=1 __USE_LARGEFILE=1 __USE_MISC=1 __USE_POSIX199309=1 __USE_POSIX199506=1 __USE_POSIX2=1 __USE_POSIX=1 __USE_REENTRANT=1 __USE_SVID=1 __USE_UNIX98=1 __USE_XOPEN=1 __USE_XOPEN_EXTENDED=1 __VERSION__="4.7.2" __WCHAR_MAX__=2147483647 __WCHAR_MIN__=(-2147483647\ -\ 1) __WCHAR_TYPE__=int __WINT_MAX__=4294967295U __WINT_MIN__=0U __WINT_TYPE__=unsigned\ int __amd64=1 __amd64__=1 __gnu_linux__=1 __k8=1 __k8__=1 __linux=1 __linux__=1 __unix=1 __unix__=1 __x86_64=1 __x86_64__=1 linux=1 unix=1' crypt_r_proto='REENTRANT_PROTO_B_CCS' cryptlib='' csh='csh' ctermid_r_proto='0' ctime_r_proto='REENTRANT_PROTO_B_SB' d_Gconvert='gcvt((x),(n),(b))' d_PRIEUldbl='define' d_PRIFUldbl='define' d_PRIGUldbl='define' d_PRIXU64='define' d_PRId64='define' d_PRIeldbl='define' d_PRIfldbl='define' d_PRIgldbl='define' d_PRIi64='define' d_PRIo64='define' d_PRIu64='define' d_PRIx64='define' d_SCNfldbl='define' d__fwalk='undef' d_access='define' d_accessx='undef' d_aintl='undef' d_alarm='define' d_archlib='define' d_asctime64='undef' d_asctime_r='define' d_atolf='undef' d_atoll='define' d_attribute_deprecated='define' d_attribute_format='define' d_attribute_malloc='define' d_attribute_nonnull='define' d_attribute_noreturn='define' d_attribute_pure='define' d_attribute_unused='define' d_attribute_warn_unused_result='define' d_bcmp='define' d_bcopy='define' d_bsd='undef' d_bsdgetpgrp='undef' d_bsdsetpgrp='undef' d_builtin_choose_expr='define' d_builtin_expect='define' d_bzero='define' d_c99_variadic_macros='define' d_casti32='undef' d_castneg='define' d_charvspr='undef' d_chown='define' d_chroot='define' d_chsize='undef' d_class='undef' d_clearenv='define' d_closedir='define' d_cmsghdr_s='define' d_const='define' d_copysignl='define' d_cplusplus='undef' d_crypt='define' d_crypt_r='define' d_csh='undef' d_ctermid='define' d_ctermid_r='undef' d_ctime64='undef' d_ctime_r='define' d_cuserid='define' d_dbl_dig='define' d_dbminitproto='define' d_difftime64='undef' d_difftime='define' d_dir_dd_fd='undef' d_dirfd='define' d_dirnamlen='undef' d_dlerror='define' d_dlopen='define' d_dlsymun='undef' d_dosuid='undef' d_drand48_r='define' d_drand48proto='define' d_dup2='define' d_eaccess='define' d_endgrent='define' d_endgrent_r='undef' d_endhent='define' d_endhostent_r='undef' d_endnent='define' d_endnetent_r='undef' d_endpent='define' d_endprotoent_r='undef' d_endpwent='define' d_endpwent_r='undef' d_endsent='define' d_endservent_r='undef' d_eofnblk='define' d_eunice='undef' d_faststdio='define' d_fchdir='define' d_fchmod='define' d_fchown='define' d_fcntl='define' d_fcntl_can_lock='define' d_fd_macros='define' d_fd_set='define' d_fds_bits='define' d_fgetpos='define' d_finite='define' d_finitel='define' d_flexfnam='define' d_flock='define' d_flockproto='define' d_fork='define' d_fp_class='undef' d_fpathconf='define' d_fpclass='undef' d_fpclassify='undef' d_fpclassl='undef' d_fpos64_t='undef' d_frexpl='define' d_fs_data_s='undef' d_fseeko='define' d_fsetpos='define' d_fstatfs='define' d_fstatvfs='define' d_fsync='define' d_ftello='define' d_ftime='undef' d_futimes='define' d_gdbm_ndbm_h_uses_prototypes='undef' d_gdbmndbm_h_uses_prototypes='undef' d_getaddrinfo='define' d_getcwd='define' d_getespwnam='undef' d_getfsstat='undef' d_getgrent='define' d_getgrent_r='define' d_getgrgid_r='define' d_getgrnam_r='define' d_getgrps='define' d_gethbyaddr='define' d_gethbyname='define' d_gethent='define' d_gethname='define' d_gethostbyaddr_r='define' d_gethostbyname_r='define' d_gethostent_r='define' d_gethostprotos='define' d_getitimer='define' d_getlogin='define' d_getlogin_r='define' d_getmnt='undef' d_getmntent='define' d_getnameinfo='define' d_getnbyaddr='define' d_getnbyname='define' d_getnent='define' d_getnetbyaddr_r='define' d_getnetbyname_r='define' d_getnetent_r='define' d_getnetprotos='define' d_getpagsz='define' d_getpbyname='define' d_getpbynumber='define' d_getpent='define' d_getpgid='define' d_getpgrp2='undef' d_getpgrp='define' d_getppid='define' d_getprior='define' d_getprotobyname_r='define' d_getprotobynumber_r='define' d_getprotoent_r='define' d_getprotoprotos='define' d_getprpwnam='undef' d_getpwent='define' d_getpwent_r='define' d_getpwnam_r='define' d_getpwuid_r='define' d_getsbyname='define' d_getsbyport='define' d_getsent='define' d_getservbyname_r='define' d_getservbyport_r='define' d_getservent_r='define' d_getservprotos='define' d_getspnam='define' d_getspnam_r='define' d_gettimeod='define' d_gmtime64='undef' d_gmtime_r='define' d_gnulibc='define' d_grpasswd='define' d_hasmntopt='define' d_htonl='define' d_ilogbl='define' d_inc_version_list='undef' d_index='undef' d_inetaton='define' d_inetntop='define' d_inetpton='define' d_int64_t='define' d_isascii='define' d_isfinite='undef' d_isinf='define' d_isnan='define' d_isnanl='define' d_killpg='define' d_lchown='define' d_ldbl_dig='define' d_libm_lib_version='define' d_link='define' d_localtime64='undef' d_localtime_r='define' d_localtime_r_needs_tzset='define' d_locconv='define' d_lockf='define' d_longdbl='define' d_longlong='define' d_lseekproto='define' d_lstat='define' d_madvise='define' d_malloc_good_size='undef' d_malloc_size='undef' d_mblen='define' d_mbstowcs='define' d_mbtowc='define' d_memchr='define' d_memcmp='define' d_memcpy='define' d_memmove='define' d_memset='define' d_mkdir='define' d_mkdtemp='define' d_mkfifo='define' d_mkstemp='define' d_mkstemps='define' d_mktime64='undef' d_mktime='define' d_mmap='define' d_modfl='define' d_modfl_pow32_bug='undef' d_modflproto='define' d_mprotect='define' d_msg='define' d_msg_ctrunc='define' d_msg_dontroute='define' d_msg_oob='define' d_msg_peek='define' d_msg_proxy='define' d_msgctl='define' d_msgget='define' d_msghdr_s='define' d_msgrcv='define' d_msgsnd='define' d_msync='define' d_munmap='define' d_mymalloc='undef' d_ndbm='define' d_ndbm_h_uses_prototypes='undef' d_nice='define' d_nl_langinfo='define' d_nv_preserves_uv='undef' d_nv_zero_is_allbits_zero='define' d_off64_t='define' d_old_pthread_create_joinable='undef' d_oldpthreads='undef' d_oldsock='undef' d_open3='define' d_pathconf='define' d_pause='define' d_perl_otherlibdirs='undef' d_phostname='undef' d_pipe='define' d_poll='define' d_portable='define' d_prctl='define' d_prctl_set_name='define' d_printf_format_null='undef' d_procselfexe='define' d_pseudofork='undef' d_pthread_atfork='define' d_pthread_attr_setscope='define' d_pthread_yield='define' d_pwage='undef' d_pwchange='undef' d_pwclass='undef' d_pwcomment='undef' d_pwexpire='undef' d_pwgecos='define' d_pwpasswd='define' d_pwquota='undef' d_qgcvt='define' d_quad='define' d_random_r='define' d_readdir64_r='define' d_readdir='define' d_readdir_r='define' d_readlink='define' d_readv='define' d_recvmsg='define' d_rename='define' d_rewinddir='define' d_rmdir='define' d_safebcpy='undef' d_safemcpy='undef' d_sanemcmp='define' d_sbrkproto='define' d_scalbnl='define' d_sched_yield='define' d_scm_rights='define' d_seekdir='define' d_select='define' d_sem='define' d_semctl='define' d_semctl_semid_ds='define' d_semctl_semun='define' d_semget='define' d_semop='define' d_sendmsg='define' d_setegid='define' d_seteuid='define' d_setgrent='define' d_setgrent_r='undef' d_setgrps='define' d_sethent='define' d_sethostent_r='undef' d_setitimer='define' d_setlinebuf='define' d_setlocale='define' d_setlocale_r='undef' d_setnent='define' d_setnetent_r='undef' d_setpent='define' d_setpgid='define' d_setpgrp2='undef' d_setpgrp='define' d_setprior='define' d_setproctitle='undef' d_setprotoent_r='undef' d_setpwent='define' d_setpwent_r='undef' d_setregid='define' d_setresgid='define' d_setresuid='define' d_setreuid='define' d_setrgid='undef' d_setruid='undef' d_setsent='define' d_setservent_r='undef' d_setsid='define' d_setvbuf='define' d_sfio='undef' d_shm='define' d_shmat='define' d_shmatprototype='define' d_shmctl='define' d_shmdt='define' d_shmget='define' d_sigaction='define' d_signbit='define' d_sigprocmask='define' d_sigsetjmp='define' d_sin6_scope_id='define' d_sitearch='define' d_snprintf='define' d_sockaddr_sa_len='undef' d_sockatmark='define' d_sockatmarkproto='define' d_socket='define' d_socklen_t='define' d_sockpair='define' d_socks5_init='undef' d_sprintf_returns_strlen='define' d_sqrtl='define' d_srand48_r='define' d_srandom_r='define' d_sresgproto='define' d_sresuproto='define' d_statblks='define' d_statfs_f_flags='define' d_statfs_s='define' d_static_inline='define' d_statvfs='define' d_stdio_cnt_lval='undef' d_stdio_ptr_lval='define' d_stdio_ptr_lval_nochange_cnt='undef' d_stdio_ptr_lval_sets_cnt='define' d_stdio_stream_array='undef' d_stdiobase='define' d_stdstdio='define' d_strchr='define' d_strcoll='define' d_strctcpy='define' d_strerrm='strerror(e)' d_strerror='define' d_strerror_r='define' d_strftime='define' d_strlcat='undef' d_strlcpy='undef' d_strtod='define' d_strtol='define' d_strtold='define' d_strtoll='define' d_strtoq='define' d_strtoul='define' d_strtoull='define' d_strtouq='define' d_strxfrm='define' d_suidsafe='undef' d_symlink='define' d_syscall='define' d_syscallproto='define' d_sysconf='define' d_sysernlst='' d_syserrlst='define' d_system='define' d_tcgetpgrp='define' d_tcsetpgrp='define' d_telldir='define' d_telldirproto='define' d_time='define' d_timegm='define' d_times='define' d_tm_tm_gmtoff='define' d_tm_tm_zone='define' d_tmpnam_r='define' d_truncate='define' d_ttyname_r='define' d_tzname='define' d_u32align='define' d_ualarm='undef' d_umask='define' d_uname='define' d_union_semun='undef' d_unordered='undef' d_unsetenv='define' d_usleep='define' d_usleepproto='define' d_ustat='define' d_vendorarch='define' d_vendorbin='define' d_vendorlib='define' d_vendorscript='define' d_vfork='undef' d_void_closedir='undef' d_voidsig='define' d_voidtty='' d_volatile='define' d_vprintf='define' d_vsnprintf='define' d_wait4='define' d_waitpid='define' d_wcstombs='define' d_wctomb='define' d_writev='define' d_xenix='undef' date='date' db_hashtype='u_int32_t' db_prefixtype='size_t' db_version_major='5' db_version_minor='1' db_version_patch='29' defvoidused='15' direntrytype='struct dirent' dlext='so' dlsrc='dl_dlopen.xs' doublesize='8' drand01='drand48()' drand48_r_proto='REENTRANT_PROTO_I_ST' dtrace='' dynamic_ext='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Text/Soundex Tie/Hash/NamedCapture Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared' eagain='EAGAIN' ebcdic='undef' echo='echo' egrep='egrep' emacs='' endgrent_r_proto='0' endhostent_r_proto='0' endnetent_r_proto='0' endprotoent_r_proto='0' endpwent_r_proto='0' endservent_r_proto='0' eunicefix=':' exe_ext='' expr='expr' extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Text/Soundex Tie/Hash/NamedCapture Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Extract Archive/Tar Attribute/Handlers AutoLoader B/Debug B/Deparse B/Lint CGI CPAN CPAN/Meta CPAN/Meta/YAML CPANPLUS CPANPLUS/Dist/Build Devel/SelfStubber Digest Dumpvalue Env Errno ExtUtils/CBuilder ExtUtils/Command ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/ParseXS File/CheckTree File/Fetch File/Path File/Temp FileCache Filter/Simple Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Zlib IPC/Cmd IPC/Open2 IPC/Open3 JSON/PP Locale/Codes Locale/Maketext Locale/Maketext/Simple Log/Message Log/Message/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/Build Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata Module/Pluggable NEXT Net/Ping Object/Accessor Package/Constants Params/Check Parse/CPAN/Meta Perl/OSType PerlIO/via/QuotedPrint Pod/Escapes Pod/Html Pod/LaTeX Pod/Parser Pod/Perldoc Pod/Simple Safe SelfLoader Shell Term/ANSIColor Term/Cap Term/UI Test Test/Harness Test/Simple Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Memoize Tie/RefHash Time/Local Version/Requirements XSLoader autodie autouse base bignum constant encoding/warnings if lib libnet parent podlators' extern_C='extern' extras='' fflushNULL='define' fflushall='undef' find='' firstmakefile='makefile' flex='' fpossize='16' fpostype='fpos_t' freetype='void' from=':' full_ar='/usr/bin/ar' full_csh='csh' full_sed='/bin/sed' gccansipedantic='' gccosandvers='' gccversion='4.7.2' getgrent_r_proto='REENTRANT_PROTO_I_SBWR' getgrgid_r_proto='REENTRANT_PROTO_I_TSBWR' getgrnam_r_proto='REENTRANT_PROTO_I_CSBWR' gethostbyaddr_r_proto='REENTRANT_PROTO_I_TsISBWRE' gethostbyname_r_proto='REENTRANT_PROTO_I_CSBWRE' gethostent_r_proto='REENTRANT_PROTO_I_SBWRE' getlogin_r_proto='REENTRANT_PROTO_I_BW' getnetbyaddr_r_proto='REENTRANT_PROTO_I_uISBWRE' getnetbyname_r_proto='REENTRANT_PROTO_I_CSBWRE' getnetent_r_proto='REENTRANT_PROTO_I_SBWRE' getprotobyname_r_proto='REENTRANT_PROTO_I_CSBWR' getprotobynumber_r_proto='REENTRANT_PROTO_I_ISBWR' getprotoent_r_proto='REENTRANT_PROTO_I_SBWR' getpwent_r_proto='REENTRANT_PROTO_I_SBWR' getpwnam_r_proto='REENTRANT_PROTO_I_CSBWR' getpwuid_r_proto='REENTRANT_PROTO_I_TSBWR' getservbyname_r_proto='REENTRANT_PROTO_I_CCSBWR' getservbyport_r_proto='REENTRANT_PROTO_I_ICSBWR' getservent_r_proto='REENTRANT_PROTO_I_SBWR' getspnam_r_proto='REENTRANT_PROTO_I_CSBWR' gidformat='"u"' gidsign='1' gidsize='4' gidtype='gid_t' glibpth='/usr/shlib /lib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/ucblib /usr/local/lib ' gmake='gmake' gmtime_r_proto='REENTRANT_PROTO_S_TS' gnulibc_version='2.13' grep='grep' groupcat='cat /etc/group' groupstype='gid_t' gzip='gzip' h_fcntl='false' h_sysfile='true' hint='recommended' hostcat='cat /etc/hosts' html1dir=' ' html1direxp='' html3dir=' ' html3direxp='' i16size='2' i16type='short' i32size='4' i32type='int' i64size='8' i64type='long' i8size='1' i8type='signed char' i_arpainet='define' i_assert='define' i_bsdioctl='' i_crypt='define' i_db='define' i_dbm='define' i_dirent='define' i_dld='undef' i_dlfcn='define' i_fcntl='undef' i_float='define' i_fp='undef' i_fp_class='undef' i_gdbm='define' i_gdbm_ndbm='define' i_gdbmndbm='undef' i_grp='define' i_ieeefp='undef' i_inttypes='define' i_langinfo='define' i_libutil='undef' i_limits='define' i_locale='define' i_machcthr='undef' i_malloc='define' i_mallocmalloc='undef' i_math='define' i_memory='undef' i_mntent='define' i_ndbm='undef' i_netdb='define' i_neterrno='undef' i_netinettcp='define' i_niin='define' i_poll='define' i_prot='undef' i_pthread='define' i_pwd='define' i_rpcsvcdbm='undef' i_sfio='undef' i_sgtty='undef' i_shadow='define' i_socks='undef' i_stdarg='define' i_stddef='define' i_stdlib='define' i_string='define' i_sunmath='undef' i_sysaccess='undef' i_sysdir='define' i_sysfile='define' i_sysfilio='undef' i_sysin='undef' i_sysioctl='define' i_syslog='define' i_sysmman='define' i_sysmode='undef' i_sysmount='define' i_sysndir='undef' i_sysparam='define' i_syspoll='define' i_sysresrc='define' i_syssecrt='undef' i_sysselct='define' i_syssockio='undef' i_sysstat='define' i_sysstatfs='define' i_sysstatvfs='define' i_systime='define' i_systimek='undef' i_systimes='define' i_systypes='define' i_sysuio='define' i_sysun='define' i_sysutsname='define' i_sysvfs='define' i_syswait='define' i_termio='undef' i_termios='define' i_time='define' i_unistd='define' i_ustat='define' i_utime='define' i_values='define' i_varargs='undef' i_varhdr='stdarg.h' i_vfork='undef' ignore_versioned_solibs='y' inc_version_list='' inc_version_list_init='0' incpath='' inews='' initialinstalllocation='/usr/bin' installarchlib='/usr/lib/perl/5.14' installbin='/usr/bin' installhtml1dir='' installhtml3dir='' installman1dir='/usr/share/man/man1' installman3dir='/usr/share/man/man3' installprefix='/usr' installprefixexp='/usr' installprivlib='/usr/share/perl/5.14' installscript='/usr/bin' installsitearch='/usr/local/lib/perl/5.14.2' installsitebin='/usr/local/bin' installsitehtml1dir='' installsitehtml3dir='' installsitelib='/usr/local/share/perl/5.14.2' installsiteman1dir='/usr/local/man/man1' installsiteman3dir='/usr/local/man/man3' installsitescript='/usr/local/bin' installstyle='lib/perl5' installusrbinperl='undef' installvendorarch='/usr/lib/perl5' installvendorbin='/usr/bin' installvendorhtml1dir='' installvendorhtml3dir='' installvendorlib='/usr/share/perl5' installvendorman1dir='/usr/share/man/man1' installvendorman3dir='/usr/share/man/man3' installvendorscript='/usr/bin' intsize='4' issymlink='test -h' ivdformat='"ld"' ivsize='8' ivtype='long' known_extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/Glob Filter/Util/Call GDBM_File Hash/Util Hash/Util/FieldHash I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Text/Soundex Tie/Hash/NamedCapture Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap attributes mro re threads threads/shared ' ksh='' ld='cc' lddlflags='-shared -L/usr/local/lib -fstack-protector' ldflags=' -fstack-protector -L/usr/local/lib' ldflags_uselargefiles='' ldlibpthname='LD_LIBRARY_PATH' less='less' lib_ext='.a' libc='' libdb_needs_pthread='N' libperl='libperl.so.5.14.2' libpth='/usr/local/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /usr/lib' libs='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libsdirs=' /usr/lib/x86_64-linux-gnu' libsfiles=' libgdbm.so libgdbm_compat.so libdb.so libdl.so libm.so libpthread.so libc.so libcrypt.so' libsfound=' /usr/lib/x86_64-linux-gnu/libgdbm.so /usr/lib/x86_64-linux-gnu/libgdbm_compat.so /usr/lib/x86_64-linux-gnu/libdb.so /usr/lib/x86_64-linux-gnu/libdl.so /usr/lib/x86_64-linux-gnu/libm.so /usr/lib/x86_64-linux-gnu/libpthread.so /usr/lib/x86_64-linux-gnu/libc.so /usr/lib/x86_64-linux-gnu/libcrypt.so' libspath=' /usr/local/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /usr/lib' libswanted='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' libswanted_uselargefiles='' line='' lint='' lkflags='' ln='ln' lns='/bin/ln -s' localtime_r_proto='REENTRANT_PROTO_S_TS' locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include' loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib' longdblsize='16' longlongsize='8' longsize='8' lp='' lpr='' ls='ls' lseeksize='8' lseektype='off_t' mad='undef' madlyh='' madlyobj='' madlysrc='' mail='' mailx='' make='make' make_set_make='#' mallocobj='' mallocsrc='' malloctype='void *' man1dir='/usr/share/man/man1' man1direxp='/usr/share/man/man1' man1ext='1p' man3dir='/usr/share/man/man3' man3direxp='/usr/share/man/man3' man3ext='3pm' mips_type='' mistrustnm='' mkdir='mkdir' mmaptype='void *' modetype='mode_t' more='more' multiarch='undef' mv='' myarchname='x86_64-linux' mydomain='' myhostname='localhost' myuname='linux madeleine 3.2.0-4-amd64 #1 smp debian 3.2.39-2 x86_64 gnulinux ' n='-n' need_va_copy='define' netdb_hlen_type='size_t' netdb_host_type='char *' netdb_name_type='const char *' netdb_net_type='in_addr_t' nm='nm' nm_opt='' nm_so_opt='--dynamic' nonxs_ext='Archive/Extract Archive/Tar Attribute/Handlers AutoLoader B/Debug B/Deparse B/Lint CGI CPAN CPAN/Meta CPAN/Meta/YAML CPANPLUS CPANPLUS/Dist/Build Devel/SelfStubber Digest Dumpvalue Env Errno ExtUtils/CBuilder ExtUtils/Command ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/ParseXS File/CheckTree File/Fetch File/Path File/Temp FileCache Filter/Simple Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Zlib IPC/Cmd IPC/Open2 IPC/Open3 JSON/PP Locale/Codes Locale/Maketext Locale/Maketext/Simple Log/Message Log/Message/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/Build Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata Module/Pluggable NEXT Net/Ping Object/Accessor Package/Constants Params/Check Parse/CPAN/Meta Perl/OSType PerlIO/via/QuotedPrint Pod/Escapes Pod/Html Pod/LaTeX Pod/Parser Pod/Perldoc Pod/Simple Safe SelfLoader Shell Term/ANSIColor Term/Cap Term/UI Test Test/Harness Test/Simple Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Memoize Tie/RefHash Time/Local Version/Requirements XSLoader autodie autouse base bignum constant encoding/warnings if lib libnet parent podlators' nroff='nroff' nvEUformat='"E"' nvFUformat='"F"' nvGUformat='"G"' nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0' nv_preserves_uv_bits='53' nveformat='"e"' nvfformat='"f"' nvgformat='"g"' nvsize='8' nvtype='double' o_nonblock='O_NONBLOCK' obj_ext='.o' old_pthread_create_joinable='' optimize='-O2 -g' orderlib='false' osname='linux' osvers='3.2.0-4-amd64' otherlibdirs=' ' package='perl5' pager='/usr/bin/sensible-pager' passcat='cat /etc/passwd' patchlevel='14' path_sep=':' perl5='/usr/bin/perl' perl='perl' perl_patchlevel='' perl_static_inline='static __inline__' perladmin='root@localhost' perllibs='-ldl -lm -lpthread -lc -lcrypt' perlpath='/usr/bin/perl' pg='pg' phostname='hostname' pidtype='pid_t' plibpth='/lib/x86_64-linux-gnu/4.7 /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu/4.7 /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /usr/lib' pmake='' pr='' prefix='/usr' prefixexp='/usr' privlib='/usr/share/perl/5.14' privlibexp='/usr/share/perl/5.14' procselfexe='"/proc/self/exe"' prototype='define' ptrsize='8' quadkind='2' quadtype='long' randbits='48' randfunc='drand48' random_r_proto='REENTRANT_PROTO_I_St' randseedtype='long' ranlib=':' rd_nodata='-1' readdir64_r_proto='REENTRANT_PROTO_I_TSR' readdir_r_proto='REENTRANT_PROTO_I_TSR' revision='5' rm='rm' rm_try='/bin/rm -f try try a.out .out try.[cho] try..o core core.try* try.core*' rmail='' run='' runnm='false' sGMTIME_max='67768036191676799' sGMTIME_min='-62167219200' sLOCALTIME_max='67768036191676799' sLOCALTIME_min='-62167219200' sPRIEUldbl='"LE"' sPRIFUldbl='"LF"' sPRIGUldbl='"LG"' sPRIXU64='"lX"' sPRId64='"ld"' sPRIeldbl='"Le"' sPRIfldbl='"Lf"' sPRIgldbl='"Lg"' sPRIi64='"li"' sPRIo64='"lo"' sPRIu64='"lu"' sPRIx64='"lx"' sSCNfldbl='"Lf"' sched_yield='sched_yield()' scriptdir='/usr/bin' scriptdirexp='/usr/bin' sed='sed' seedfunc='srand48' selectminbits='64' selecttype='fd_set *' sendmail='' setgrent_r_proto='0' sethostent_r_proto='0' setlocale_r_proto='0' setnetent_r_proto='0' setprotoent_r_proto='0' setpwent_r_proto='0' setservent_r_proto='0' sh='/bin/sh' shar='' sharpbang='#!' shmattype='void *' shortsize='2' shrpenv='' shsharp='true' sig_count='65' sig_name='ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS NUM32 NUM33 RTMIN NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM59 NUM60 NUM61 NUM62 NUM63 RTMAX IOT CLD POLL UNUSED ' sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "SYS", "NUM32", "NUM33", "RTMIN", "NUM35", "NUM36", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "NUM48", "NUM49", "NUM50", "NUM51", "NUM52", "NUM53", "NUM54", "NUM55", "NUM56", "NUM57", "NUM58", "NUM59", "NUM60", "NUM61", "NUM62", "NUM63", "RTMAX", "IOT", "CLD", "POLL", "UNUSED", 0' sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 6 17 29 31 ' sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 17, 29, 31, 0' sig_size='69' signal_t='void' sitearch='/usr/local/lib/perl/5.14.2' sitearchexp='/usr/local/lib/perl/5.14.2' sitebin='/usr/local/bin' sitebinexp='/usr/local/bin' sitehtml1dir='' sitehtml1direxp='' sitehtml3dir='' sitehtml3direxp='' sitelib='/usr/local/share/perl/5.14.2' sitelib_stem='' sitelibexp='/usr/local/share/perl/5.14.2' siteman1dir='/usr/local/man/man1' siteman1direxp='/usr/local/man/man1' siteman3dir='/usr/local/man/man3' siteman3direxp='/usr/local/man/man3' siteprefix='/usr/local' siteprefixexp='/usr/local' sitescript='/usr/local/bin' sitescriptexp='/usr/local/bin' sizesize='8' sizetype='size_t' sleep='' smail='' so='so' sockethdr='' socketlib='' socksizetype='socklen_t' sort='sort' spackage='Perl5' spitshell='cat' srand48_r_proto='REENTRANT_PROTO_I_LS' srandom_r_proto='REENTRANT_PROTO_I_TS' src='.' ssizetype='ssize_t' startperl='#!/usr/bin/perl' startsh='#!/bin/sh' static_ext=' ' stdchar='char' stdio_base='((fp)->_IO_read_base)' stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)' stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)' stdio_filbuf='' stdio_ptr='((fp)->_IO_read_ptr)' stdio_stream_array='' strerror_r_proto='REENTRANT_PROTO_B_IBW' strings='/usr/include/string.h' submit='' subversion='2' sysman='/usr/share/man/man1' tail='' tar='' targetarch='' tbl='' tee='' test='test' timeincl='/usr/include/x86_64-linux-gnu/sys/time.h /usr/include/time.h ' timetype='time_t' tmpnam_r_proto='REENTRANT_PROTO_B_B' to=':' touch='touch' tr='tr' trnl='\n' troff='' ttyname_r_proto='REENTRANT_PROTO_I_IBW' u16size='2' u16type='unsigned short' u32size='4' u32type='unsigned int' u64size='8' u64type='unsigned long' u8size='1' u8type='unsigned char' uidformat='"u"' uidsign='1' uidsize='4' uidtype='uid_t' uname='uname' uniq='uniq' uquadtype='unsigned long' use5005threads='undef' use64bitall='define' use64bitint='define' usecrosscompile='undef' usedevel='undef' usedl='define' usedtrace='undef' usefaststdio='undef' useithreads='define' uselargefiles='define' uselongdouble='undef' usemallocwrap='define' usemorebits='undef' usemultiplicity='define' usemymalloc='n' usenm='false' useopcode='true' useperlio='define' useposix='true' usereentrant='undef' userelocatableinc='undef' usesfio='false' useshrplib='true' usesitecustomize='undef' usesocks='undef' usethreads='define' usevendorprefix='define' usevfork='false' usrinc='/usr/include' uuname='' uvXUformat='"lX"' uvoformat='"lo"' uvsize='8' uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' vaproto='define' vendorarch='/usr/lib/perl5' vendorarchexp='/usr/lib/perl5' vendorbin='/usr/bin' vendorbinexp='/usr/bin' vendorhtml1dir=' ' vendorhtml1direxp='' vendorhtml3dir=' ' vendorhtml3direxp='' vendorlib='/usr/share/perl5' vendorlib_stem='' vendorlibexp='/usr/share/perl5' vendorman1dir='/usr/share/man/man1' vendorman1direxp='/usr/share/man/man1' vendorman3dir='/usr/share/man/man3' vendorman3direxp='/usr/share/man/man3' vendorprefix='/usr' vendorprefixexp='/usr' vendorscript='/usr/bin' vendorscriptexp='/usr/bin' version='5.14.2' version_patchlevel_string='version 14 subversion 2' versiononly='undef' vi='' voidflags='15' xlibpth='/usr/lib/386 /lib/386' yacc='yacc' yaccflags='' zcat='' zip='zip' !END! my $i = 0; foreach my $c (8,7,6,5,4,3,2) { $i |= ord($c); $i <<= 8 } $i |= ord(1); our $byteorder = join('', unpack('aaaaaaaa', pack('L!', $i))); s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m; my $config_sh_len = length $_; our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL'; ccflags_nolargefiles='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include ' ldflags_nolargefiles=' -fstack-protector -L/usr/local/lib' libs_nolargefiles='-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt' libswanted_nolargefiles='gdbm gdbm_compat db dl m pthread c crypt gdbm_compat' EOVIRTUAL eval { # do not have hairy conniptions if this isnt available require 'Config_git.pl'; $Config_SH_expanded .= $Config::Git_Data; 1; } or warn "Warning: failed to load Config_git.pl, something strange about this perl...\n"; # Search for it in the big string sub fetch_string { my($self, $key) = @_; return undef unless $Config_SH_expanded =~ /\n$key=\'(.*?)\'\n/s; # So we can say "if $Config{'foo'}". $self->{$key} = $1 eq 'undef' ? undef : $1; } my $prevpos = 0; sub FIRSTKEY { $prevpos = 0; substr($Config_SH_expanded, 1, index($Config_SH_expanded, '=') - 1 ); } sub NEXTKEY { my $pos = index($Config_SH_expanded, qq('\n), $prevpos) + 2; my $len = index($Config_SH_expanded, "=", $pos) - $pos; $prevpos = $pos; $len > 0 ? substr($Config_SH_expanded, $pos, $len) : undef; } sub EXISTS { return 1 if exists($_[0]->{$_[1]}); return(index($Config_SH_expanded, "\n$_[1]='") != -1 ); } sub STORE { die "\%Config::Config is read-only\n" } *DELETE = *CLEAR = \*STORE; # Typeglob aliasing uses less space sub config_sh { substr $Config_SH_expanded, 1, $config_sh_len; } sub config_re { my $re = shift; return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/, $Config_SH_expanded; } sub config_vars { # implements -V:cfgvar option (see perlrun -V:) foreach (@_) { # find optional leading, trailing colons; and query-spec my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft, # map colon-flags to print decorations my $prfx = $notag ? '': "$qry="; # tag-prefix for print my $lnend = $lncont ? ' ' : ";\n"; # line ending for print # all config-vars are by definition \w only, any \W means regex if ($qry =~ /\W/) { my @matches = config_re($qry); print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag; print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag; } else { my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry} : 'UNKNOWN'; $v = 'undef' unless defined $v; print "${prfx}'${v}'$lnend"; } } } # Called by the real AUTOLOAD sub launcher { undef &AUTOLOAD; goto \&$Config::AUTOLOAD; } 1; FILEf53b2f60/Cwd.pmC,#line 1 "/usr/lib/perl/5.14/Cwd.pm" package Cwd; use strict; use Exporter; use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); $VERSION = '3.36'; my $xs_version = $VERSION; $VERSION = eval $VERSION; @ISA = qw/ Exporter /; @EXPORT = qw(cwd getcwd fastcwd fastgetcwd); push @EXPORT, qw(getdcwd) if $^O eq 'MSWin32'; @EXPORT_OK = qw(chdir abs_path fast_abs_path realpath fast_realpath); # sys_cwd may keep the builtin command # All the functionality of this module may provided by builtins, # there is no sense to process the rest of the file. # The best choice may be to have this in BEGIN, but how to return from BEGIN? if ($^O eq 'os2') { local $^W = 0; *cwd = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd; *getcwd = \&cwd; *fastgetcwd = \&cwd; *fastcwd = \&cwd; *fast_abs_path = \&sys_abspath if defined &sys_abspath; *abs_path = \&fast_abs_path; *realpath = \&fast_abs_path; *fast_realpath = \&fast_abs_path; return 1; } # Need to look up the feature settings on VMS. The preferred way is to use the # VMS::Feature module, but that may not be available to dual life modules. my $use_vms_feature; BEGIN { if ($^O eq 'VMS') { if (eval { local $SIG{__DIE__}; require VMS::Feature; }) { $use_vms_feature = 1; } } } # Need to look up the UNIX report mode. This may become a dynamic mode # in the future. sub _vms_unix_rpt { my $unix_rpt; if ($use_vms_feature) { $unix_rpt = VMS::Feature::current("filename_unix_report"); } else { my $env_unix_rpt = $ENV{'DECC$FILENAME_UNIX_REPORT'} || ''; $unix_rpt = $env_unix_rpt =~ /^[ET1]/i; } return $unix_rpt; } # Need to look up the EFS character set mode. This may become a dynamic # mode in the future. sub _vms_efs { my $efs; if ($use_vms_feature) { $efs = VMS::Feature::current("efs_charset"); } else { my $env_efs = $ENV{'DECC$EFS_CHARSET'} || ''; $efs = $env_efs =~ /^[ET1]/i; } return $efs; } # If loading the XS stuff doesn't work, we can fall back to pure perl eval { if ( $] >= 5.006 ) { require XSLoader; XSLoader::load( __PACKAGE__, $xs_version); } else { require DynaLoader; push @ISA, 'DynaLoader'; __PACKAGE__->bootstrap( $xs_version ); } }; # Must be after the DynaLoader stuff: $VERSION = eval $VERSION; # Big nasty table of function aliases my %METHOD_MAP = ( VMS => { cwd => '_vms_cwd', getcwd => '_vms_cwd', fastcwd => '_vms_cwd', fastgetcwd => '_vms_cwd', abs_path => '_vms_abs_path', fast_abs_path => '_vms_abs_path', }, MSWin32 => { # We assume that &_NT_cwd is defined as an XSUB or in the core. cwd => '_NT_cwd', getcwd => '_NT_cwd', fastcwd => '_NT_cwd', fastgetcwd => '_NT_cwd', abs_path => 'fast_abs_path', realpath => 'fast_abs_path', }, dos => { cwd => '_dos_cwd', getcwd => '_dos_cwd', fastgetcwd => '_dos_cwd', fastcwd => '_dos_cwd', abs_path => 'fast_abs_path', }, # QNX4. QNX6 has a $os of 'nto'. qnx => { cwd => '_qnx_cwd', getcwd => '_qnx_cwd', fastgetcwd => '_qnx_cwd', fastcwd => '_qnx_cwd', abs_path => '_qnx_abs_path', fast_abs_path => '_qnx_abs_path', }, cygwin => { getcwd => 'cwd', fastgetcwd => 'cwd', fastcwd => 'cwd', abs_path => 'fast_abs_path', realpath => 'fast_abs_path', }, epoc => { cwd => '_epoc_cwd', getcwd => '_epoc_cwd', fastgetcwd => '_epoc_cwd', fastcwd => '_epoc_cwd', abs_path => 'fast_abs_path', }, MacOS => { getcwd => 'cwd', fastgetcwd => 'cwd', fastcwd => 'cwd', abs_path => 'fast_abs_path', }, ); $METHOD_MAP{NT} = $METHOD_MAP{MSWin32}; # Find the pwd command in the expected locations. We assume these # are safe. This prevents _backtick_pwd() consulting $ENV{PATH} # so everything works under taint mode. my $pwd_cmd; foreach my $try ('/bin/pwd', '/usr/bin/pwd', '/QOpenSys/bin/pwd', # OS/400 PASE. ) { if( -x $try ) { $pwd_cmd = $try; last; } } my $found_pwd_cmd = defined($pwd_cmd); unless ($pwd_cmd) { # Isn't this wrong? _backtick_pwd() will fail if somenone has # pwd in their path but it is not /bin/pwd or /usr/bin/pwd? # See [perl #16774]. --jhi $pwd_cmd = 'pwd'; } # Lazy-load Carp sub _carp { require Carp; Carp::carp(@_) } sub _croak { require Carp; Carp::croak(@_) } # The 'natural and safe form' for UNIX (pwd may be setuid root) sub _backtick_pwd { # Localize %ENV entries in a way that won't create new hash keys my @localize = grep exists $ENV{$_}, qw(PATH IFS CDPATH ENV BASH_ENV); local @ENV{@localize}; my $cwd = `$pwd_cmd`; # Belt-and-suspenders in case someone said "undef $/". local $/ = "\n"; # `pwd` may fail e.g. if the disk is full chomp($cwd) if defined $cwd; $cwd; } # Since some ports may predefine cwd internally (e.g., NT) # we take care not to override an existing definition for cwd(). unless ($METHOD_MAP{$^O}{cwd} or defined &cwd) { # The pwd command is not available in some chroot(2)'ed environments my $sep = $Config::Config{path_sep} || ':'; my $os = $^O; # Protect $^O from tainting # Try again to find a pwd, this time searching the whole PATH. if (defined $ENV{PATH} and $os ne 'MSWin32') { # no pwd on Windows my @candidates = split($sep, $ENV{PATH}); while (!$found_pwd_cmd and @candidates) { my $candidate = shift @candidates; $found_pwd_cmd = 1 if -x "$candidate/pwd"; } } # MacOS has some special magic to make `pwd` work. if( $os eq 'MacOS' || $found_pwd_cmd ) { *cwd = \&_backtick_pwd; } else { *cwd = \&getcwd; } } if ($^O eq 'cygwin') { # We need to make sure cwd() is called with no args, because it's # got an arg-less prototype and will die if args are present. local $^W = 0; my $orig_cwd = \&cwd; *cwd = sub { &$orig_cwd() } } # set a reasonable (and very safe) default for fastgetcwd, in case it # isn't redefined later (20001212 rspier) *fastgetcwd = \&cwd; # A non-XS version of getcwd() - also used to bootstrap the perl build # process, when miniperl is running and no XS loading happens. sub _perl_getcwd { abs_path('.'); } # By John Bazik # # Usage: $cwd = &fastcwd; # # This is a faster version of getcwd. It's also more dangerous because # you might chdir out of a directory that you can't chdir back into. sub fastcwd_ { my($odev, $oino, $cdev, $cino, $tdev, $tino); my(@path, $path); local(*DIR); my($orig_cdev, $orig_cino) = stat('.'); ($cdev, $cino) = ($orig_cdev, $orig_cino); for (;;) { my $direntry; ($odev, $oino) = ($cdev, $cino); CORE::chdir('..') || return undef; ($cdev, $cino) = stat('.'); last if $odev == $cdev && $oino == $cino; opendir(DIR, '.') || return undef; for (;;) { $direntry = readdir(DIR); last unless defined $direntry; next if $direntry eq '.'; next if $direntry eq '..'; ($tdev, $tino) = lstat($direntry); last unless $tdev != $odev || $tino != $oino; } closedir(DIR); return undef unless defined $direntry; # should never happen unshift(@path, $direntry); } $path = '/' . join('/', @path); if ($^O eq 'apollo') { $path = "/".$path; } # At this point $path may be tainted (if tainting) and chdir would fail. # Untaint it then check that we landed where we started. $path =~ /^(.*)\z/s # untaint && CORE::chdir($1) or return undef; ($cdev, $cino) = stat('.'); die "Unstable directory path, current directory changed unexpectedly" if $cdev != $orig_cdev || $cino != $orig_cino; $path; } if (not defined &fastcwd) { *fastcwd = \&fastcwd_ } # Keeps track of current working directory in PWD environment var # Usage: # use Cwd 'chdir'; # chdir $newdir; my $chdir_init = 0; sub chdir_init { if ($ENV{'PWD'} and $^O ne 'os2' and $^O ne 'dos' and $^O ne 'MSWin32') { my($dd,$di) = stat('.'); my($pd,$pi) = stat($ENV{'PWD'}); if (!defined $dd or !defined $pd or $di != $pi or $dd != $pd) { $ENV{'PWD'} = cwd(); } } else { my $wd = cwd(); $wd = Win32::GetFullPathName($wd) if $^O eq 'MSWin32'; $ENV{'PWD'} = $wd; } # Strip an automounter prefix (where /tmp_mnt/foo/bar == /foo/bar) if ($^O ne 'MSWin32' and $ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|s) { my($pd,$pi) = stat($2); my($dd,$di) = stat($1); if (defined $pd and defined $dd and $di == $pi and $dd == $pd) { $ENV{'PWD'}="$2$3"; } } $chdir_init = 1; } sub chdir { my $newdir = @_ ? shift : ''; # allow for no arg (chdir to HOME dir) $newdir =~ s|///*|/|g unless $^O eq 'MSWin32'; chdir_init() unless $chdir_init; my $newpwd; if ($^O eq 'MSWin32') { # get the full path name *before* the chdir() $newpwd = Win32::GetFullPathName($newdir); } return 0 unless CORE::chdir $newdir; if ($^O eq 'VMS') { return $ENV{'PWD'} = $ENV{'DEFAULT'} } elsif ($^O eq 'MacOS') { return $ENV{'PWD'} = cwd(); } elsif ($^O eq 'MSWin32') { $ENV{'PWD'} = $newpwd; return 1; } if (ref $newdir eq 'GLOB') { # in case a file/dir handle is passed in $ENV{'PWD'} = cwd(); } elsif ($newdir =~ m#^/#s) { $ENV{'PWD'} = $newdir; } else { my @curdir = split(m#/#,$ENV{'PWD'}); @curdir = ('') unless @curdir; my $component; foreach $component (split(m#/#, $newdir)) { next if $component eq '.'; pop(@curdir),next if $component eq '..'; push(@curdir,$component); } $ENV{'PWD'} = join('/',@curdir) || '/'; } 1; } sub _perl_abs_path { my $start = @_ ? shift : '.'; my($dotdots, $cwd, @pst, @cst, $dir, @tst); unless (@cst = stat( $start )) { _carp("stat($start): $!"); return ''; } unless (-d _) { # Make sure we can be invoked on plain files, not just directories. # NOTE that this routine assumes that '/' is the only directory separator. my ($dir, $file) = $start =~ m{^(.*)/(.+)$} or return cwd() . '/' . $start; # Can't use "-l _" here, because the previous stat was a stat(), not an lstat(). if (-l $start) { my $link_target = readlink($start); die "Can't resolve link $start: $!" unless defined $link_target; require File::Spec; $link_target = $dir . '/' . $link_target unless File::Spec->file_name_is_absolute($link_target); return abs_path($link_target); } return $dir ? abs_path($dir) . "/$file" : "/$file"; } $cwd = ''; $dotdots = $start; do { $dotdots .= '/..'; @pst = @cst; local *PARENT; unless (opendir(PARENT, $dotdots)) { # probably a permissions issue. Try the native command. return File::Spec->rel2abs( $start, _backtick_pwd() ); } unless (@cst = stat($dotdots)) { _carp("stat($dotdots): $!"); closedir(PARENT); return ''; } if ($pst[0] == $cst[0] && $pst[1] == $cst[1]) { $dir = undef; } else { do { unless (defined ($dir = readdir(PARENT))) { _carp("readdir($dotdots): $!"); closedir(PARENT); return ''; } $tst[0] = $pst[0]+1 unless (@tst = lstat("$dotdots/$dir")) } while ($dir eq '.' || $dir eq '..' || $tst[0] != $pst[0] || $tst[1] != $pst[1]); } $cwd = (defined $dir ? "$dir" : "" ) . "/$cwd" ; closedir(PARENT); } while (defined $dir); chop($cwd) unless $cwd eq '/'; # drop the trailing / $cwd; } my $Curdir; sub fast_abs_path { local $ENV{PWD} = $ENV{PWD} || ''; # Guard against clobberage my $cwd = getcwd(); require File::Spec; my $path = @_ ? shift : ($Curdir ||= File::Spec->curdir); # Detaint else we'll explode in taint mode. This is safe because # we're not doing anything dangerous with it. ($path) = $path =~ /(.*)/; ($cwd) = $cwd =~ /(.*)/; unless (-e $path) { _croak("$path: No such file or directory"); } unless (-d _) { # Make sure we can be invoked on plain files, not just directories. my ($vol, $dir, $file) = File::Spec->splitpath($path); return File::Spec->catfile($cwd, $path) unless length $dir; if (-l $path) { my $link_target = readlink($path); die "Can't resolve link $path: $!" unless defined $link_target; $link_target = File::Spec->catpath($vol, $dir, $link_target) unless File::Spec->file_name_is_absolute($link_target); return fast_abs_path($link_target); } return $dir eq File::Spec->rootdir ? File::Spec->catpath($vol, $dir, $file) : fast_abs_path(File::Spec->catpath($vol, $dir, '')) . '/' . $file; } if (!CORE::chdir($path)) { _croak("Cannot chdir to $path: $!"); } my $realpath = getcwd(); if (! ((-d $cwd) && (CORE::chdir($cwd)))) { _croak("Cannot chdir back to $cwd: $!"); } $realpath; } # added function alias to follow principle of least surprise # based on previous aliasing. --tchrist 27-Jan-00 *fast_realpath = \&fast_abs_path; # --- PORTING SECTION --- # VMS: $ENV{'DEFAULT'} points to default directory at all times # 06-Mar-1996 Charles Bailey bailey@newman.upenn.edu # Note: Use of Cwd::chdir() causes the logical name PWD to be defined # in the process logical name table as the default device and directory # seen by Perl. This may not be the same as the default device # and directory seen by DCL after Perl exits, since the effects # the CRTL chdir() function persist only until Perl exits. sub _vms_cwd { return $ENV{'DEFAULT'}; } sub _vms_abs_path { return $ENV{'DEFAULT'} unless @_; my $path = shift; my $efs = _vms_efs; my $unix_rpt = _vms_unix_rpt; if (defined &VMS::Filespec::vmsrealpath) { my $path_unix = 0; my $path_vms = 0; $path_unix = 1 if ($path =~ m#(?<=\^)/#); $path_unix = 1 if ($path =~ /^\.\.?$/); $path_vms = 1 if ($path =~ m#[\[<\]]#); $path_vms = 1 if ($path =~ /^--?$/); my $unix_mode = $path_unix; if ($efs) { # In case of a tie, the Unix report mode decides. if ($path_vms == $path_unix) { $unix_mode = $unix_rpt; } else { $unix_mode = 0 if $path_vms; } } if ($unix_mode) { # Unix format return VMS::Filespec::unixrealpath($path); } # VMS format my $new_path = VMS::Filespec::vmsrealpath($path); # Perl expects directories to be in directory format $new_path = VMS::Filespec::pathify($new_path) if -d $path; return $new_path; } # Fallback to older algorithm if correct ones are not # available. if (-l $path) { my $link_target = readlink($path); die "Can't resolve link $path: $!" unless defined $link_target; return _vms_abs_path($link_target); } # may need to turn foo.dir into [.foo] my $pathified = VMS::Filespec::pathify($path); $path = $pathified if defined $pathified; return VMS::Filespec::rmsexpand($path); } sub _os2_cwd { $ENV{'PWD'} = `cmd /c cd`; chomp $ENV{'PWD'}; $ENV{'PWD'} =~ s:\\:/:g ; return $ENV{'PWD'}; } sub _win32_cwd_simple { $ENV{'PWD'} = `cd`; chomp $ENV{'PWD'}; $ENV{'PWD'} =~ s:\\:/:g ; return $ENV{'PWD'}; } sub _win32_cwd { if (eval 'defined &DynaLoader::boot_DynaLoader') { $ENV{'PWD'} = Win32::GetCwd(); } else { # miniperl chomp($ENV{'PWD'} = `cd`); } $ENV{'PWD'} =~ s:\\:/:g ; return $ENV{'PWD'}; } *_NT_cwd = defined &Win32::GetCwd ? \&_win32_cwd : \&_win32_cwd_simple; sub _dos_cwd { if (!defined &Dos::GetCwd) { $ENV{'PWD'} = `command /c cd`; chomp $ENV{'PWD'}; $ENV{'PWD'} =~ s:\\:/:g ; } else { $ENV{'PWD'} = Dos::GetCwd(); } return $ENV{'PWD'}; } sub _qnx_cwd { local $ENV{PATH} = ''; local $ENV{CDPATH} = ''; local $ENV{ENV} = ''; $ENV{'PWD'} = `/usr/bin/fullpath -t`; chomp $ENV{'PWD'}; return $ENV{'PWD'}; } sub _qnx_abs_path { local $ENV{PATH} = ''; local $ENV{CDPATH} = ''; local $ENV{ENV} = ''; my $path = @_ ? shift : '.'; local *REALPATH; defined( open(REALPATH, '-|') || exec '/usr/bin/fullpath', '-t', $path ) or die "Can't open /usr/bin/fullpath: $!"; my $realpath = ; close REALPATH; chomp $realpath; return $realpath; } sub _epoc_cwd { $ENV{'PWD'} = EPOC::getcwd(); return $ENV{'PWD'}; } # Now that all the base-level functions are set up, alias the # user-level functions to the right places if (exists $METHOD_MAP{$^O}) { my $map = $METHOD_MAP{$^O}; foreach my $name (keys %$map) { local $^W = 0; # assignments trigger 'subroutine redefined' warning no strict 'refs'; *{$name} = \&{$map->{$name}}; } } # In case the XS version doesn't load. *abs_path = \&_perl_abs_path unless defined &abs_path; *getcwd = \&_perl_getcwd unless defined &getcwd; # added function alias for those of us more # used to the libc function. --tchrist 27-Jan-00 *realpath = \&abs_path; 1; FILE5ef3fd1b/Digest/SHA.pm6#line 1 "/usr/lib/perl/5.14/Digest/SHA.pm" package Digest::SHA; require 5.003000; use strict; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); use Fcntl; use integer; $VERSION = '5.61'; require Exporter; require DynaLoader; @ISA = qw(Exporter DynaLoader); @EXPORT_OK = qw( hmac_sha1 hmac_sha1_base64 hmac_sha1_hex hmac_sha224 hmac_sha224_base64 hmac_sha224_hex hmac_sha256 hmac_sha256_base64 hmac_sha256_hex hmac_sha384 hmac_sha384_base64 hmac_sha384_hex hmac_sha512 hmac_sha512_base64 hmac_sha512_hex hmac_sha512224 hmac_sha512224_base64 hmac_sha512224_hex hmac_sha512256 hmac_sha512256_base64 hmac_sha512256_hex sha1 sha1_base64 sha1_hex sha224 sha224_base64 sha224_hex sha256 sha256_base64 sha256_hex sha384 sha384_base64 sha384_hex sha512 sha512_base64 sha512_hex sha512224 sha512224_base64 sha512224_hex sha512256 sha512256_base64 sha512256_hex); # If possible, inherit from Digest::base (which depends on MIME::Base64) *addfile = \&Addfile; eval { require MIME::Base64; require Digest::base; push(@ISA, 'Digest::base'); }; if ($@) { *hexdigest = \&Hexdigest; *b64digest = \&B64digest; } # The following routines aren't time-critical, so they can be left in Perl sub new { my($class, $alg) = @_; $alg =~ s/\D+//g if defined $alg; if (ref($class)) { # instance method unless (defined($alg) && ($alg != $class->algorithm)) { sharewind($$class); return($class); } shaclose($$class) if $$class; return unless $$class = shaopen($alg); return($class); } $alg = 1 unless defined $alg; my $state = shaopen($alg) || return; my $self = \$state; bless($self, $class); return($self); } sub DESTROY { my $self = shift; shaclose($$self) if $$self; } sub clone { my $self = shift; my $state = shadup($$self) || return; my $copy = \$state; bless($copy, ref($self)); return($copy); } *reset = \&new; sub add_bits { my($self, $data, $nbits) = @_; unless (defined $nbits) { $nbits = length($data); $data = pack("B*", $data); } shawrite($data, $nbits, $$self); return($self); } sub _bail { my $msg = shift; require Carp; Carp::croak("$msg: $!"); } sub _addfile { # this is "addfile" from Digest::base 1.00 my ($self, $handle) = @_; my $n; my $buf = ""; while (($n = read($handle, $buf, 4096))) { $self->add($buf); } _bail("Read failed") unless defined $n; $self; } sub Addfile { my ($self, $file, $mode) = @_; return(_addfile($self, $file)) unless ref(\$file) eq 'SCALAR'; $mode = defined($mode) ? $mode : ""; my ($binary, $portable) = map { $_ eq $mode } ("b", "p"); ## Always interpret "-" to mean STDIN; otherwise use ## sysopen to handle full range of POSIX file names local *FH; $file eq '-' and open(FH, '< -') or sysopen(FH, $file, O_RDONLY) or _bail('Open failed'); binmode(FH) if $binary || $portable; unless ($portable && -T $file) { $self->_addfile(*FH); close(FH); return($self); } my ($n1, $n2); my ($buf1, $buf2) = ("", ""); while (($n1 = read(FH, $buf1, 4096))) { while (substr($buf1, -1) eq "\015") { $n2 = read(FH, $buf2, 4096); _bail("Read failed") unless defined $n2; last unless $n2; $buf1 .= $buf2; } $buf1 =~ s/\015?\015\012/\012/g; # DOS/Windows $buf1 =~ s/\015/\012/g; # early MacOS $self->add($buf1); } _bail("Read failed") unless defined $n1; close(FH); $self; } sub dump { my $self = shift; my $file = shift; $file = "" unless defined $file; shadump($file, $$self) || return; return($self); } sub load { my $class = shift; my $file = shift; $file = "" unless defined $file; if (ref($class)) { # instance method shaclose($$class) if $$class; return unless $$class = shaload($file); return($class); } my $state = shaload($file) || return; my $self = \$state; bless($self, $class); return($self); } Digest::SHA->bootstrap($VERSION); 1; __END__ #line 705 FILE0c77a581/DynaLoader.pm)#line 1 "/usr/lib/perl/5.14/DynaLoader.pm" # Generated from DynaLoader_pm.PL package DynaLoader; # And Gandalf said: 'Many folk like to know beforehand what is to # be set on the table; but those who have laboured to prepare the # feast like to keep their secret; for wonder makes the words of # praise louder.' # (Quote from Tolkien suggested by Anno Siegel.) # # See pod text at end of file for documentation. # See also ext/DynaLoader/README in source tree for other information. # # Tim.Bunce@ig.co.uk, August 1994 BEGIN { $VERSION = '1.13'; } use Config; # enable debug/trace messages from DynaLoader perl code $dl_debug = $ENV{PERL_DL_DEBUG} || 0 unless defined $dl_debug; # # Flags to alter dl_load_file behaviour. Assigned bits: # 0x01 make symbols available for linking later dl_load_file's. # (only known to work on Solaris 2 using dlopen(RTLD_GLOBAL)) # (ignored under VMS; effect is built-in to image linking) # # This is called as a class method $module->dl_load_flags. The # definition here will be inherited and result on "default" loading # behaviour unless a sub-class of DynaLoader defines its own version. # sub dl_load_flags { 0x00 } ($dl_dlext, $dl_so, $dlsrc) = @Config::Config{qw(dlext so dlsrc)}; $do_expand = 0; @dl_require_symbols = (); # names of symbols we need @dl_resolve_using = (); # names of files to link with @dl_library_path = (); # path to look for files #XSLoader.pm may have added elements before we were required #@dl_shared_objects = (); # shared objects for symbols we have #@dl_librefs = (); # things we have loaded #@dl_modules = (); # Modules we have loaded # This is a fix to support DLD's unfortunate desire to relink -lc @dl_resolve_using = dl_findfile('-lc') if $dlsrc eq "dl_dld.xs"; # Initialise @dl_library_path with the 'standard' library path # for this platform as determined by Configure. push(@dl_library_path, split(' ', $Config::Config{libpth})); my $ldlibpthname = $Config::Config{ldlibpthname}; my $ldlibpthname_defined = defined $Config::Config{ldlibpthname}; my $pthsep = $Config::Config{path_sep}; # Add to @dl_library_path any extra directories we can gather from environment # during runtime. if ($ldlibpthname_defined && exists $ENV{$ldlibpthname}) { push(@dl_library_path, split(/$pthsep/, $ENV{$ldlibpthname})); } # E.g. HP-UX supports both its native SHLIB_PATH *and* LD_LIBRARY_PATH. if ($ldlibpthname_defined && $ldlibpthname ne 'LD_LIBRARY_PATH' && exists $ENV{LD_LIBRARY_PATH}) { push(@dl_library_path, split(/$pthsep/, $ENV{LD_LIBRARY_PATH})); } # No prizes for guessing why we don't say 'bootstrap DynaLoader;' here. # NOTE: All dl_*.xs (including dl_none.xs) define a dl_error() XSUB boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) && !defined(&dl_error); if ($dl_debug) { print STDERR "DynaLoader.pm loaded (@INC, @dl_library_path)\n"; print STDERR "DynaLoader not linked into this perl\n" unless defined(&boot_DynaLoader); } 1; # End of main code sub croak { require Carp; Carp::croak(@_) } sub bootstrap_inherit { my $module = $_[0]; local *isa = *{"$module\::ISA"}; local @isa = (@isa, 'DynaLoader'); # Cannot goto due to delocalization. Will report errors on a wrong line? bootstrap(@_); } sub bootstrap { # use local vars to enable $module.bs script to edit values local(@args) = @_; local($module) = $args[0]; local(@dirs, $file); unless ($module) { require Carp; Carp::confess("Usage: DynaLoader::bootstrap(module)"); } # A common error on platforms which don't support dynamic loading. # Since it's fatal and potentially confusing we give a detailed message. croak("Can't load module $module, dynamic loading not available in this perl.\n". " (You may need to build a new perl executable which either supports\n". " dynamic loading or has the $module module statically linked into it.)\n") unless defined(&dl_load_file); my @modparts = split(/::/,$module); my $modfname = $modparts[-1]; # Some systems have restrictions on files names for DLL's etc. # mod2fname returns appropriate file base name (typically truncated) # It may also edit @modparts if required. $modfname = &mod2fname(\@modparts) if defined &mod2fname; my $modpname = join('/',@modparts); print STDERR "DynaLoader::bootstrap for $module ", "(auto/$modpname/$modfname.$dl_dlext)\n" if $dl_debug; foreach (@INC) { my $dir = "$_/auto/$modpname"; next unless -d $dir; # skip over uninteresting directories # check for common cases to avoid autoload of dl_findfile my $try = "$dir/$modfname.$dl_dlext"; last if $file = ($do_expand) ? dl_expandspec($try) : ((-f $try) && $try); # no luck here, save dir for possible later dl_findfile search push @dirs, $dir; } # last resort, let dl_findfile have a go in all known locations $file = dl_findfile(map("-L$_",@dirs,@INC), $modfname) unless $file; croak("Can't locate loadable object for module $module in \@INC (\@INC contains: @INC)") unless $file; # wording similar to error from 'require' my $bootname = "boot_$module"; $bootname =~ s/\W/_/g; @dl_require_symbols = ($bootname); # Execute optional '.bootstrap' perl script for this module. # The .bs file can be used to configure @dl_resolve_using etc to # match the needs of the individual module on this architecture. my $bs = $file; $bs =~ s/(\.\w+)?(;\d*)?$/\.bs/; # look for .bs 'beside' the library if (-s $bs) { # only read file if it's not empty print STDERR "BS: $bs ($^O, $dlsrc)\n" if $dl_debug; eval { do $bs; }; warn "$bs: $@\n" if $@; } my $boot_symbol_ref; # Many dynamic extension loading problems will appear to come from # this section of code: XYZ failed at line 123 of DynaLoader.pm. # Often these errors are actually occurring in the initialisation # C code of the extension XS file. Perl reports the error as being # in this perl code simply because this was the last perl code # it executed. my $libref = dl_load_file($file, $module->dl_load_flags) or croak("Can't load '$file' for module $module: ".dl_error()); push(@dl_librefs,$libref); # record loaded object my @unresolved = dl_undef_symbols(); if (@unresolved) { require Carp; Carp::carp("Undefined symbols present after loading $file: @unresolved\n"); } $boot_symbol_ref = dl_find_symbol($libref, $bootname) or croak("Can't find '$bootname' symbol in $file\n"); push(@dl_modules, $module); # record loaded module boot: my $xs = dl_install_xsub("${module}::bootstrap", $boot_symbol_ref, $file); # See comment block above push(@dl_shared_objects, $file); # record files loaded &$xs(@args); } sub dl_findfile { # Read ext/DynaLoader/DynaLoader.doc for detailed information. # This function does not automatically consider the architecture # or the perl library auto directories. my (@args) = @_; my (@dirs, $dir); # which directories to search my (@found); # full paths to real files we have found #my $dl_ext= 'so'; # $Config::Config{'dlext'} suffix for perl extensions #my $dl_so = 'so'; # $Config::Config{'so'} suffix for shared libraries print STDERR "dl_findfile(@args)\n" if $dl_debug; # accumulate directories but process files as they appear arg: foreach(@args) { # Special fast case: full filepath requires no search if (m:/: && -f $_) { push(@found,$_); last arg unless wantarray; next; } # Deal with directories first: # Using a -L prefix is the preferred option (faster and more robust) if (m:^-L:) { s/^-L//; push(@dirs, $_); next; } # Otherwise we try to try to spot directories by a heuristic # (this is a more complicated issue than it first appears) if (m:/: && -d $_) { push(@dirs, $_); next; } # Only files should get this far... my(@names, $name); # what filenames to look for if (m:-l: ) { # convert -lname to appropriate library name s/-l//; push(@names,"lib$_.$dl_so"); push(@names,"lib$_.a"); } else { # Umm, a bare name. Try various alternatives: # these should be ordered with the most likely first push(@names,"$_.$dl_dlext") unless m/\.$dl_dlext$/o; push(@names,"$_.$dl_so") unless m/\.$dl_so$/o; push(@names,"lib$_.$dl_so") unless m:/:; push(@names,"$_.a") if !m/\.a$/ and $dlsrc eq "dl_dld.xs"; push(@names, $_); } my $dirsep = '/'; foreach $dir (@dirs, @dl_library_path) { next unless -d $dir; foreach $name (@names) { my($file) = "$dir$dirsep$name"; print STDERR " checking in $dir for $name\n" if $dl_debug; $file = ($do_expand) ? dl_expandspec($file) : (-f $file && $file); #$file = _check_file($file); if ($file) { push(@found, $file); next arg; # no need to look any further } } } } if ($dl_debug) { foreach(@dirs) { print STDERR " dl_findfile ignored non-existent directory: $_\n" unless -d $_; } print STDERR "dl_findfile found: @found\n"; } return $found[0] unless wantarray; @found; } sub dl_expandspec { my($spec) = @_; # Optional function invoked if DynaLoader.pm sets $do_expand. # Most systems do not require or use this function. # Some systems may implement it in the dl_*.xs file in which case # this Perl version should be excluded at build time. # This function is designed to deal with systems which treat some # 'filenames' in a special way. For example VMS 'Logical Names' # (something like unix environment variables - but different). # This function should recognise such names and expand them into # full file paths. # Must return undef if $spec is invalid or file does not exist. my $file = $spec; # default output to input return undef unless -f $file; print STDERR "dl_expandspec($spec) => $file\n" if $dl_debug; $file; } sub dl_find_symbol_anywhere { my $sym = shift; my $libref; foreach $libref (@dl_librefs) { my $symref = dl_find_symbol($libref,$sym); return $symref if $symref; } return undef; } __END__ FILE037b8ac0/Errno.pm9#line 1 "/usr/lib/perl/5.14/Errno.pm" # -*- buffer-read-only: t -*- # # This file is auto-generated. ***ANY*** changes here will be lost # package Errno; require Exporter; use strict; our $VERSION = "1.13"; $VERSION = eval $VERSION; our @ISA = 'Exporter'; my %err; BEGIN { %err = ( EPERM => 1, ENOENT => 2, ESRCH => 3, EINTR => 4, EIO => 5, ENXIO => 6, E2BIG => 7, ENOEXEC => 8, EBADF => 9, ECHILD => 10, EWOULDBLOCK => 11, EAGAIN => 11, ENOMEM => 12, EACCES => 13, EFAULT => 14, ENOTBLK => 15, EBUSY => 16, EEXIST => 17, EXDEV => 18, ENODEV => 19, ENOTDIR => 20, EISDIR => 21, EINVAL => 22, ENFILE => 23, EMFILE => 24, ENOTTY => 25, ETXTBSY => 26, EFBIG => 27, ENOSPC => 28, ESPIPE => 29, EROFS => 30, EMLINK => 31, EPIPE => 32, EDOM => 33, ERANGE => 34, EDEADLOCK => 35, EDEADLK => 35, ENAMETOOLONG => 36, ENOLCK => 37, ENOSYS => 38, ENOTEMPTY => 39, ELOOP => 40, ENOMSG => 42, EIDRM => 43, ECHRNG => 44, EL2NSYNC => 45, EL3HLT => 46, EL3RST => 47, ELNRNG => 48, EUNATCH => 49, ENOCSI => 50, EL2HLT => 51, EBADE => 52, EBADR => 53, EXFULL => 54, ENOANO => 55, EBADRQC => 56, EBADSLT => 57, EBFONT => 59, ENOSTR => 60, ENODATA => 61, ETIME => 62, ENOSR => 63, ENONET => 64, ENOPKG => 65, EREMOTE => 66, ENOLINK => 67, EADV => 68, ESRMNT => 69, ECOMM => 70, EPROTO => 71, EMULTIHOP => 72, EDOTDOT => 73, EBADMSG => 74, EOVERFLOW => 75, ENOTUNIQ => 76, EBADFD => 77, EREMCHG => 78, ELIBACC => 79, ELIBBAD => 80, ELIBSCN => 81, ELIBMAX => 82, ELIBEXEC => 83, EILSEQ => 84, ERESTART => 85, ESTRPIPE => 86, EUSERS => 87, ENOTSOCK => 88, EDESTADDRREQ => 89, EMSGSIZE => 90, EPROTOTYPE => 91, ENOPROTOOPT => 92, EPROTONOSUPPORT => 93, ESOCKTNOSUPPORT => 94, ENOTSUP => 95, EOPNOTSUPP => 95, EPFNOSUPPORT => 96, EAFNOSUPPORT => 97, EADDRINUSE => 98, EADDRNOTAVAIL => 99, ENETDOWN => 100, ENETUNREACH => 101, ENETRESET => 102, ECONNABORTED => 103, ECONNRESET => 104, ENOBUFS => 105, EISCONN => 106, ENOTCONN => 107, ESHUTDOWN => 108, ETOOMANYREFS => 109, ETIMEDOUT => 110, ECONNREFUSED => 111, EHOSTDOWN => 112, EHOSTUNREACH => 113, EALREADY => 114, EINPROGRESS => 115, ESTALE => 116, EUCLEAN => 117, ENOTNAM => 118, ENAVAIL => 119, EISNAM => 120, EREMOTEIO => 121, EDQUOT => 122, ENOMEDIUM => 123, EMEDIUMTYPE => 124, ECANCELED => 125, ENOKEY => 126, EKEYEXPIRED => 127, EKEYREVOKED => 128, EKEYREJECTED => 129, EOWNERDEAD => 130, ENOTRECOVERABLE => 131, ERFKILL => 132, EHWPOISON => 133, ); # Generate proxy constant subroutines for all the values. # Well, almost all the values. Unfortunately we can't assume that at this # point that our symbol table is empty, as code such as if the parser has # seen code such as C, it will have created the # typeglob. # Doing this before defining @EXPORT_OK etc means that even if a platform is # crazy enough to define EXPORT_OK as an error constant, everything will # still work, because the parser will upgrade the PCS to a real typeglob. # We rely on the subroutine definitions below to update the internal caches. # Don't use %each, as we don't want a copy of the value. foreach my $name (keys %err) { if ($Errno::{$name}) { # We expect this to be reached fairly rarely, so take an approach # which uses the least compile time effort in the common case: eval "sub $name() { $err{$name} }; 1" or die $@; } else { $Errno::{$name} = \$err{$name}; } } } our @EXPORT_OK = keys %err; our %EXPORT_TAGS = ( POSIX => [qw( E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF EBUSY ECHILD ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG EHOSTDOWN EHOSTUNREACH EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODEV ENOENT ENOEXEC ENOLCK ENOMEM ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN ENOTDIR ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM EPFNOSUPPORT EPIPE EPROTONOSUPPORT EPROTOTYPE ERANGE EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH ESTALE ETIMEDOUT ETOOMANYREFS ETXTBSY EUSERS EWOULDBLOCK EXDEV )] ); sub TIEHASH { bless \%err } sub FETCH { my (undef, $errname) = @_; return "" unless exists $err{$errname}; my $errno = $err{$errname}; return $errno == $! ? $errno : 0; } sub STORE { require Carp; Carp::confess("ERRNO hash is read only!"); } *CLEAR = *DELETE = \*STORE; # Typeglob aliasing uses less space sub NEXTKEY { each %err; } sub FIRSTKEY { my $s = scalar keys %err; # initialize iterator each %err; } sub EXISTS { my (undef, $errname) = @_; exists $err{$errname}; } tie %!, __PACKAGE__; # Returns an object, objects are true. __END__ # ex: set ro: FILE2b1a9457/Fcntl.pm#line 1 "/usr/lib/perl/5.14/Fcntl.pm" package Fcntl; use strict; our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); require Exporter; require XSLoader; @ISA = qw(Exporter); $VERSION = '1.11'; XSLoader::load(); # Named groups of exports %EXPORT_TAGS = ( 'flock' => [qw(LOCK_SH LOCK_EX LOCK_NB LOCK_UN)], 'Fcompat' => [qw(FAPPEND FASYNC FCREAT FDEFER FDSYNC FEXCL FLARGEFILE FNDELAY FNONBLOCK FRSYNC FSYNC FTRUNC)], 'seek' => [qw(SEEK_SET SEEK_CUR SEEK_END)], 'mode' => [qw(S_ISUID S_ISGID S_ISVTX S_ISTXT _S_IFMT S_IFREG S_IFDIR S_IFLNK S_IFSOCK S_IFBLK S_IFCHR S_IFIFO S_IFWHT S_ENFMT S_IRUSR S_IWUSR S_IXUSR S_IRWXU S_IRGRP S_IWGRP S_IXGRP S_IRWXG S_IROTH S_IWOTH S_IXOTH S_IRWXO S_IREAD S_IWRITE S_IEXEC S_ISREG S_ISDIR S_ISLNK S_ISSOCK S_ISBLK S_ISCHR S_ISFIFO S_ISWHT S_ISENFMT S_IFMT S_IMODE )], ); # Items to export into callers namespace by default # (move infrequently used names to @EXPORT_OK below) @EXPORT = qw( FD_CLOEXEC F_ALLOCSP F_ALLOCSP64 F_COMPAT F_DUP2FD F_DUPFD F_EXLCK F_FREESP F_FREESP64 F_FSYNC F_FSYNC64 F_GETFD F_GETFL F_GETLK F_GETLK64 F_GETOWN F_NODNY F_POSIX F_RDACC F_RDDNY F_RDLCK F_RWACC F_RWDNY F_SETFD F_SETFL F_SETLK F_SETLK64 F_SETLKW F_SETLKW64 F_SETOWN F_SHARE F_SHLCK F_UNLCK F_UNSHARE F_WRACC F_WRDNY F_WRLCK O_ACCMODE O_ALIAS O_APPEND O_ASYNC O_BINARY O_CREAT O_DEFER O_DIRECT O_DIRECTORY O_DSYNC O_EXCL O_EXLOCK O_LARGEFILE O_NDELAY O_NOCTTY O_NOFOLLOW O_NOINHERIT O_NONBLOCK O_RANDOM O_RAW O_RDONLY O_RDWR O_RSRC O_RSYNC O_SEQUENTIAL O_SHLOCK O_SYNC O_TEMPORARY O_TEXT O_TRUNC O_WRONLY ); # Other items we are prepared to export if requested @EXPORT_OK = (qw( DN_ACCESS DN_ATTRIB DN_CREATE DN_DELETE DN_MODIFY DN_MULTISHOT DN_RENAME F_GETLEASE F_GETSIG F_NOTIFY F_SETLEASE F_SETSIG LOCK_MAND LOCK_READ LOCK_RW LOCK_WRITE O_IGNORE_CTTY O_NOATIME O_NOLINK O_NOTRANS ), map {@{$_}} values %EXPORT_TAGS); 1; FILE6f095d2b/File/Glob.pm #line 1 "/usr/lib/perl/5.14/File/Glob.pm" package File::Glob; use strict; our($VERSION, @ISA, @EXPORT_OK, @EXPORT_FAIL, %EXPORT_TAGS, $DEFAULT_FLAGS); require XSLoader; use feature 'switch'; @ISA = qw(Exporter); # NOTE: The glob() export is only here for compatibility with 5.6.0. # csh_glob() should not be used directly, unless you know what you're doing. %EXPORT_TAGS = ( 'glob' => [ qw( GLOB_ABEND GLOB_ALPHASORT GLOB_ALTDIRFUNC GLOB_BRACE GLOB_CSH GLOB_ERR GLOB_ERROR GLOB_LIMIT GLOB_MARK GLOB_NOCASE GLOB_NOCHECK GLOB_NOMAGIC GLOB_NOSORT GLOB_NOSPACE GLOB_QUOTE GLOB_TILDE glob bsd_glob ) ], ); @EXPORT_OK = (@{$EXPORT_TAGS{'glob'}}, 'csh_glob'); $VERSION = '1.13'; sub import { require Exporter; local $Exporter::ExportLevel = $Exporter::ExportLevel + 1; Exporter::import(grep { my $passthrough; given ($_) { $DEFAULT_FLAGS &= ~GLOB_NOCASE() when ':case'; $DEFAULT_FLAGS |= GLOB_NOCASE() when ':nocase'; when (':globally') { no warnings 'redefine'; *CORE::GLOBAL::glob = \&File::Glob::csh_glob; } $passthrough = 1; } $passthrough; } @_); } XSLoader::load(); $DEFAULT_FLAGS = GLOB_CSH(); if ($^O =~ /^(?:MSWin32|VMS|os2|dos|riscos)$/) { $DEFAULT_FLAGS |= GLOB_NOCASE(); } # File::Glob::glob() is deprecated because its prototype is different from # CORE::glob() (use bsd_glob() instead) sub glob { splice @_, 1; # don't pass PL_glob_index as flags! goto &bsd_glob; } ## borrowed heavily from gsar's File::DosGlob my %iter; my %entries; sub csh_glob { my $pat = shift; my $cxix = shift; my @pat; # glob without args defaults to $_ $pat = $_ unless defined $pat; # extract patterns $pat =~ s/^\s+//; # Protect against empty elements in $pat =~ s/\s+$//; # things like < *.c> and <*.c >. # These alone shouldn't trigger ParseWords. if ($pat =~ /\s/) { # XXX this is needed for compatibility with the csh # implementation in Perl. Need to support a flag # to disable this behavior. require Text::ParseWords; @pat = Text::ParseWords::parse_line('\s+',0,$pat); } # assume global context if not provided one $cxix = '_G_' unless defined $cxix; $iter{$cxix} = 0 unless exists $iter{$cxix}; # if we're just beginning, do it all first if ($iter{$cxix} == 0) { if (@pat) { $entries{$cxix} = [ map { doglob($_, $DEFAULT_FLAGS) } @pat ]; } else { $entries{$cxix} = [ doglob($pat, $DEFAULT_FLAGS) ]; } } # chuck it all out, quick or slow if (wantarray) { delete $iter{$cxix}; return @{delete $entries{$cxix}}; } else { if ($iter{$cxix} = scalar @{$entries{$cxix}}) { return shift @{$entries{$cxix}}; } else { # return undef for EOL delete $iter{$cxix}; delete $entries{$cxix}; return undef; } } } 1; __END__ FILE7fcdf589/File/Spec.pm}#line 1 "/usr/lib/perl/5.14/File/Spec.pm" package File::Spec; use strict; use vars qw(@ISA $VERSION); $VERSION = '3.33'; $VERSION = eval $VERSION; my %module = (MacOS => 'Mac', MSWin32 => 'Win32', os2 => 'OS2', VMS => 'VMS', epoc => 'Epoc', NetWare => 'Win32', # Yes, File::Spec::Win32 works on NetWare. symbian => 'Win32', # Yes, File::Spec::Win32 works on symbian. dos => 'OS2', # Yes, File::Spec::OS2 works on DJGPP. cygwin => 'Cygwin'); my $module = $module{$^O} || 'Unix'; require "File/Spec/$module.pm"; @ISA = ("File::Spec::$module"); 1; __END__ FILEb353540f/File/Spec/Unix.pm#line 1 "/usr/lib/perl/5.14/File/Spec/Unix.pm" package File::Spec::Unix; use strict; use vars qw($VERSION); $VERSION = '3.33'; $VERSION = eval $VERSION; sub canonpath { my ($self,$path) = @_; return unless defined $path; # Handle POSIX-style node names beginning with double slash (qnx, nto) # (POSIX says: "a pathname that begins with two successive slashes # may be interpreted in an implementation-defined manner, although # more than two leading slashes shall be treated as a single slash.") my $node = ''; my $double_slashes_special = $^O eq 'qnx' || $^O eq 'nto'; if ( $double_slashes_special && ( $path =~ s{^(//[^/]+)/?\z}{}s || $path =~ s{^(//[^/]+)/}{/}s ) ) { $node = $1; } # This used to be # $path =~ s|/+|/|g unless ($^O eq 'cygwin'); # but that made tests 29, 30, 35, 46, and 213 (as of #13272) to fail # (Mainly because trailing "" directories didn't get stripped). # Why would cygwin avoid collapsing multiple slashes into one? --jhi $path =~ s|/{2,}|/|g; # xx////xx -> xx/xx $path =~ s{(?:/\.)+(?:/|\z)}{/}g; # xx/././xx -> xx/xx $path =~ s|^(?:\./)+||s unless $path eq "./"; # ./xx -> xx $path =~ s|^/(?:\.\./)+|/|; # /../../xx -> xx $path =~ s|^/\.\.$|/|; # /.. -> / $path =~ s|/\z|| unless $path eq "/"; # xx/ -> xx return "$node$path"; } sub catdir { my $self = shift; $self->canonpath(join('/', @_, '')); # '' because need a trailing '/' } sub catfile { my $self = shift; my $file = $self->canonpath(pop @_); return $file unless @_; my $dir = $self->catdir(@_); $dir .= "/" unless substr($dir,-1) eq "/"; return $dir.$file; } sub curdir { '.' } sub devnull { '/dev/null' } sub rootdir { '/' } my $tmpdir; sub _tmpdir { return $tmpdir if defined $tmpdir; my $self = shift; my @dirlist = @_; { no strict 'refs'; if (${"\cTAINT"}) { # Check for taint mode on perl >= 5.8.0 require Scalar::Util; @dirlist = grep { ! Scalar::Util::tainted($_) } @dirlist; } } foreach (@dirlist) { next unless defined && -d && -w _; $tmpdir = $_; last; } $tmpdir = $self->curdir unless defined $tmpdir; $tmpdir = defined $tmpdir && $self->canonpath($tmpdir); return $tmpdir; } sub tmpdir { return $tmpdir if defined $tmpdir; $tmpdir = $_[0]->_tmpdir( $ENV{TMPDIR}, "/tmp" ); } sub updir { '..' } sub no_upwards { my $self = shift; return grep(!/^\.{1,2}\z/s, @_); } sub case_tolerant { 0 } sub file_name_is_absolute { my ($self,$file) = @_; return scalar($file =~ m:^/:s); } sub path { return () unless exists $ENV{PATH}; my @path = split(':', $ENV{PATH}); foreach (@path) { $_ = '.' if $_ eq '' } return @path; } sub join { my $self = shift; return $self->catfile(@_); } sub splitpath { my ($self,$path, $nofile) = @_; my ($volume,$directory,$file) = ('','',''); if ( $nofile ) { $directory = $path; } else { $path =~ m|^ ( (?: .* / (?: \.\.?\z )? )? ) ([^/]*) |xs; $directory = $1; $file = $2; } return ($volume,$directory,$file); } sub splitdir { return split m|/|, $_[1], -1; # Preserve trailing fields } sub catpath { my ($self,$volume,$directory,$file) = @_; if ( $directory ne '' && $file ne '' && substr( $directory, -1 ) ne '/' && substr( $file, 0, 1 ) ne '/' ) { $directory .= "/$file" ; } else { $directory .= $file ; } return $directory ; } sub abs2rel { my($self,$path,$base) = @_; $base = $self->_cwd() unless defined $base and length $base; ($path, $base) = map $self->canonpath($_), $path, $base; if (grep $self->file_name_is_absolute($_), $path, $base) { ($path, $base) = map $self->rel2abs($_), $path, $base; } else { # save a couple of cwd()s if both paths are relative ($path, $base) = map $self->catdir('/', $_), $path, $base; } my ($path_volume) = $self->splitpath($path, 1); my ($base_volume) = $self->splitpath($base, 1); # Can't relativize across volumes return $path unless $path_volume eq $base_volume; my $path_directories = ($self->splitpath($path, 1))[1]; my $base_directories = ($self->splitpath($base, 1))[1]; # For UNC paths, the user might give a volume like //foo/bar that # strictly speaking has no directory portion. Treat it as if it # had the root directory for that volume. if (!length($base_directories) and $self->file_name_is_absolute($base)) { $base_directories = $self->rootdir; } # Now, remove all leading components that are the same my @pathchunks = $self->splitdir( $path_directories ); my @basechunks = $self->splitdir( $base_directories ); if ($base_directories eq $self->rootdir) { shift @pathchunks; return $self->canonpath( $self->catpath('', $self->catdir( @pathchunks ), '') ); } while (@pathchunks && @basechunks && $self->_same($pathchunks[0], $basechunks[0])) { shift @pathchunks ; shift @basechunks ; } return $self->curdir unless @pathchunks || @basechunks; # $base now contains the directories the resulting relative path # must ascend out of before it can descend to $path_directory. my $result_dirs = $self->catdir( ($self->updir) x @basechunks, @pathchunks ); return $self->canonpath( $self->catpath('', $result_dirs, '') ); } sub _same { $_[1] eq $_[2]; } sub rel2abs { my ($self,$path,$base ) = @_; # Clean up $path if ( ! $self->file_name_is_absolute( $path ) ) { # Figure out the effective $base and clean it up. if ( !defined( $base ) || $base eq '' ) { $base = $self->_cwd(); } elsif ( ! $self->file_name_is_absolute( $base ) ) { $base = $self->rel2abs( $base ) ; } else { $base = $self->canonpath( $base ) ; } # Glom them together $path = $self->catdir( $base, $path ) ; } return $self->canonpath( $path ) ; } # Internal routine to File::Spec, no point in making this public since # it is the standard Cwd interface. Most of the platform-specific # File::Spec subclasses use this. sub _cwd { require Cwd; Cwd::getcwd(); } # Internal method to reduce xx\..\yy -> yy sub _collapse { my($fs, $path) = @_; my $updir = $fs->updir; my $curdir = $fs->curdir; my($vol, $dirs, $file) = $fs->splitpath($path); my @dirs = $fs->splitdir($dirs); pop @dirs if @dirs && $dirs[-1] eq ''; my @collapsed; foreach my $dir (@dirs) { if( $dir eq $updir and # if we have an updir @collapsed and # and something to collapse length $collapsed[-1] and # and its not the rootdir $collapsed[-1] ne $updir and # nor another updir $collapsed[-1] ne $curdir # nor the curdir ) { # then pop @collapsed; # collapse } else { # else push @collapsed, $dir; # just hang onto it } } return $fs->catpath($vol, $fs->catdir(@collapsed), $file ); } 1; FILE51ffad0c/IO.pm#line 1 "/usr/lib/perl/5.14/IO.pm" # package IO; use XSLoader (); use Carp; use strict; use warnings; our $VERSION = "1.25_04"; XSLoader::load 'IO', $VERSION; sub import { shift; warnings::warnif('deprecated', qq{Parameterless "use IO" deprecated}) if @_ == 0 ; my @l = @_ ? @_ : qw(Handle Seekable File Pipe Socket Dir); eval join("", map { "require IO::" . (/(\w+)/)[0] . ";\n" } @l) or croak $@; } 1; __END__ FILE50e3181c/IO/File.pm#line 1 "/usr/lib/perl/5.14/IO/File.pm" # package IO::File; use 5.006_001; use strict; our($VERSION, @EXPORT, @EXPORT_OK, @ISA); use Carp; use Symbol; use SelectSaver; use IO::Seekable; use File::Spec; require Exporter; @ISA = qw(IO::Handle IO::Seekable Exporter); $VERSION = "1.15"; @EXPORT = @IO::Seekable::EXPORT; eval { # Make all Fcntl O_XXX constants available for importing require Fcntl; my @O = grep /^O_/, @Fcntl::EXPORT; Fcntl->import(@O); # first we import what we want to export push(@EXPORT, @O); }; ################################################ ## Constructor ## sub new { my $type = shift; my $class = ref($type) || $type || "IO::File"; @_ >= 0 && @_ <= 3 or croak "usage: $class->new([FILENAME [,MODE [,PERMS]]])"; my $fh = $class->SUPER::new(); if (@_) { $fh->open(@_) or return undef; } $fh; } ################################################ ## Open ## sub open { @_ >= 2 && @_ <= 4 or croak 'usage: $fh->open(FILENAME [,MODE [,PERMS]])'; my ($fh, $file) = @_; if (@_ > 2) { my ($mode, $perms) = @_[2, 3]; if ($mode =~ /^\d+$/) { defined $perms or $perms = 0666; return sysopen($fh, $file, $mode, $perms); } elsif ($mode =~ /:/) { return open($fh, $mode, $file) if @_ == 3; croak 'usage: $fh->open(FILENAME, IOLAYERS)'; } else { return open($fh, IO::Handle::_open_mode_string($mode), $file); } } open($fh, $file); } ################################################ ## Binmode ## sub binmode { ( @_ == 1 or @_ == 2 ) or croak 'usage $fh->binmode([LAYER])'; my($fh, $layer) = @_; return binmode $$fh unless $layer; return binmode $$fh, $layer; } 1; FILEb317ecf9/IO/Handle.pm#line 1 "/usr/lib/perl/5.14/IO/Handle.pm" package IO::Handle; use 5.006_001; use strict; our($VERSION, @EXPORT_OK, @ISA); use Carp; use Symbol; use SelectSaver; use IO (); # Load the XS module require Exporter; @ISA = qw(Exporter); $VERSION = "1.31"; $VERSION = eval $VERSION; @EXPORT_OK = qw( autoflush output_field_separator output_record_separator input_record_separator input_line_number format_page_number format_lines_per_page format_lines_left format_name format_top_name format_line_break_characters format_formfeed format_write print printf say getline getlines printflush flush SEEK_SET SEEK_CUR SEEK_END _IOFBF _IOLBF _IONBF ); ################################################ ## Constructors, destructors. ## sub new { my $class = ref($_[0]) || $_[0] || "IO::Handle"; if (@_ != 1) { # Since perl will automatically require IO::File if needed, but # also initialises IO::File's @ISA as part of the core we must # ensure IO::File is loaded if IO::Handle is. This avoids effect- # ively "half-loading" IO::File. if ($] > 5.013 && $class eq 'IO::File' && !$INC{"IO/File.pm"}) { require IO::File; shift; return IO::File::->new(@_); } croak "usage: $class->new()"; } my $io = gensym; bless $io, $class; } sub new_from_fd { my $class = ref($_[0]) || $_[0] || "IO::Handle"; @_ == 3 or croak "usage: $class->new_from_fd(FD, MODE)"; my $io = gensym; shift; IO::Handle::fdopen($io, @_) or return undef; bless $io, $class; } # # There is no need for DESTROY to do anything, because when the # last reference to an IO object is gone, Perl automatically # closes its associated files (if any). However, to avoid any # attempts to autoload DESTROY, we here define it to do nothing. # sub DESTROY {} ################################################ ## Open and close. ## sub _open_mode_string { my ($mode) = @_; $mode =~ /^\+?(<|>>?)$/ or $mode =~ s/^r(\+?)$/$1/ or $mode =~ s/^a(\+?)$/$1>>/ or croak "IO::Handle: bad open mode: $mode"; $mode; } sub fdopen { @_ == 3 or croak 'usage: $io->fdopen(FD, MODE)'; my ($io, $fd, $mode) = @_; local(*GLOB); if (ref($fd) && "".$fd =~ /GLOB\(/o) { # It's a glob reference; Alias it as we cannot get name of anon GLOBs my $n = qualify(*GLOB); *GLOB = *{*$fd}; $fd = $n; } elsif ($fd =~ m#^\d+$#) { # It's an FD number; prefix with "=". $fd = "=$fd"; } open($io, _open_mode_string($mode) . '&' . $fd) ? $io : undef; } sub close { @_ == 1 or croak 'usage: $io->close()'; my($io) = @_; close($io); } ################################################ ## Normal I/O functions. ## # flock # select sub opened { @_ == 1 or croak 'usage: $io->opened()'; defined fileno($_[0]); } sub fileno { @_ == 1 or croak 'usage: $io->fileno()'; fileno($_[0]); } sub getc { @_ == 1 or croak 'usage: $io->getc()'; getc($_[0]); } sub eof { @_ == 1 or croak 'usage: $io->eof()'; eof($_[0]); } sub print { @_ or croak 'usage: $io->print(ARGS)'; my $this = shift; print $this @_; } sub printf { @_ >= 2 or croak 'usage: $io->printf(FMT,[ARGS])'; my $this = shift; printf $this @_; } sub say { @_ or croak 'usage: $io->say(ARGS)'; my $this = shift; local $\ = "\n"; print $this @_; } sub getline { @_ == 1 or croak 'usage: $io->getline()'; my $this = shift; return scalar <$this>; } *gets = \&getline; # deprecated sub getlines { @_ == 1 or croak 'usage: $io->getlines()'; wantarray or croak 'Can\'t call $io->getlines in a scalar context, use $io->getline'; my $this = shift; return <$this>; } sub truncate { @_ == 2 or croak 'usage: $io->truncate(LEN)'; truncate($_[0], $_[1]); } sub read { @_ == 3 || @_ == 4 or croak 'usage: $io->read(BUF, LEN [, OFFSET])'; read($_[0], $_[1], $_[2], $_[3] || 0); } sub sysread { @_ == 3 || @_ == 4 or croak 'usage: $io->sysread(BUF, LEN [, OFFSET])'; sysread($_[0], $_[1], $_[2], $_[3] || 0); } sub write { @_ >= 2 && @_ <= 4 or croak 'usage: $io->write(BUF [, LEN [, OFFSET]])'; local($\) = ""; $_[2] = length($_[1]) unless defined $_[2]; print { $_[0] } substr($_[1], $_[3] || 0, $_[2]); } sub syswrite { @_ >= 2 && @_ <= 4 or croak 'usage: $io->syswrite(BUF [, LEN [, OFFSET]])'; if (defined($_[2])) { syswrite($_[0], $_[1], $_[2], $_[3] || 0); } else { syswrite($_[0], $_[1]); } } sub stat { @_ == 1 or croak 'usage: $io->stat()'; stat($_[0]); } ################################################ ## State modification functions. ## sub autoflush { my $old = new SelectSaver qualify($_[0], caller); my $prev = $|; $| = @_ > 1 ? $_[1] : 1; $prev; } sub output_field_separator { carp "output_field_separator is not supported on a per-handle basis" if ref($_[0]); my $prev = $,; $, = $_[1] if @_ > 1; $prev; } sub output_record_separator { carp "output_record_separator is not supported on a per-handle basis" if ref($_[0]); my $prev = $\; $\ = $_[1] if @_ > 1; $prev; } sub input_record_separator { carp "input_record_separator is not supported on a per-handle basis" if ref($_[0]); my $prev = $/; $/ = $_[1] if @_ > 1; $prev; } sub input_line_number { local $.; () = tell qualify($_[0], caller) if ref($_[0]); my $prev = $.; $. = $_[1] if @_ > 1; $prev; } sub format_page_number { my $old; $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); my $prev = $%; $% = $_[1] if @_ > 1; $prev; } sub format_lines_per_page { my $old; $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); my $prev = $=; $= = $_[1] if @_ > 1; $prev; } sub format_lines_left { my $old; $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); my $prev = $-; $- = $_[1] if @_ > 1; $prev; } sub format_name { my $old; $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); my $prev = $~; $~ = qualify($_[1], caller) if @_ > 1; $prev; } sub format_top_name { my $old; $old = new SelectSaver qualify($_[0], caller) if ref($_[0]); my $prev = $^; $^ = qualify($_[1], caller) if @_ > 1; $prev; } sub format_line_break_characters { carp "format_line_break_characters is not supported on a per-handle basis" if ref($_[0]); my $prev = $:; $: = $_[1] if @_ > 1; $prev; } sub format_formfeed { carp "format_formfeed is not supported on a per-handle basis" if ref($_[0]); my $prev = $^L; $^L = $_[1] if @_ > 1; $prev; } sub formline { my $io = shift; my $picture = shift; local($^A) = $^A; local($\) = ""; formline($picture, @_); print $io $^A; } sub format_write { @_ < 3 || croak 'usage: $io->write( [FORMAT_NAME] )'; if (@_ == 2) { my ($io, $fmt) = @_; my $oldfmt = $io->format_name(qualify($fmt,caller)); CORE::write($io); $io->format_name($oldfmt); } else { CORE::write($_[0]); } } sub fcntl { @_ == 3 || croak 'usage: $io->fcntl( OP, VALUE );'; my ($io, $op) = @_; return fcntl($io, $op, $_[2]); } sub ioctl { @_ == 3 || croak 'usage: $io->ioctl( OP, VALUE );'; my ($io, $op) = @_; return ioctl($io, $op, $_[2]); } # this sub is for compatibility with older releases of IO that used # a sub called constant to determine if a constant existed -- GMB # # The SEEK_* and _IO?BF constants were the only constants at that time # any new code should just chech defined(&CONSTANT_NAME) sub constant { no strict 'refs'; my $name = shift; (($name =~ /^(SEEK_(SET|CUR|END)|_IO[FLN]BF)$/) && defined &{$name}) ? &{$name}() : undef; } # so that flush.pl can be deprecated sub printflush { my $io = shift; my $old; $old = new SelectSaver qualify($io, caller) if ref($io); local $| = 1; if(ref($io)) { print $io @_; } else { print @_; } } 1; FILE7e34446d/IO/Seekable.pm#line 1 "/usr/lib/perl/5.14/IO/Seekable.pm" # package IO::Seekable; use 5.006_001; use Carp; use strict; our($VERSION, @EXPORT, @ISA); use IO::Handle (); # XXX we can't get these from IO::Handle or we'll get prototype # mismatch warnings on C :-( use Fcntl qw(SEEK_SET SEEK_CUR SEEK_END); require Exporter; @EXPORT = qw(SEEK_SET SEEK_CUR SEEK_END); @ISA = qw(Exporter); $VERSION = "1.10"; $VERSION = eval $VERSION; sub seek { @_ == 3 or croak 'usage: $io->seek(POS, WHENCE)'; seek($_[0], $_[1], $_[2]); } sub sysseek { @_ == 3 or croak 'usage: $io->sysseek(POS, WHENCE)'; sysseek($_[0], $_[1], $_[2]); } sub tell { @_ == 1 or croak 'usage: $io->tell()'; tell($_[0]); } 1; FILE827561d6/List/Util.pmT#line 1 "/usr/lib/perl/5.14/List/Util.pm" # List::Util.pm # # Copyright (c) 1997-2009 Graham Barr . All rights reserved. # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. # # This module is normally only loaded if the XS module is not available package List::Util; use strict; use vars qw(@ISA @EXPORT_OK $VERSION $XS_VERSION $TESTING_PERL_ONLY); require Exporter; @ISA = qw(Exporter); @EXPORT_OK = qw(first min max minstr maxstr reduce sum shuffle); $VERSION = "1.23"; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; eval { # PERL_DL_NONLAZY must be false, or any errors in loading will just # cause the perl code to be tested local $ENV{PERL_DL_NONLAZY} = 0 if $ENV{PERL_DL_NONLAZY}; eval { require XSLoader; XSLoader::load('List::Util', $XS_VERSION); 1; } or do { require DynaLoader; local @ISA = qw(DynaLoader); bootstrap List::Util $XS_VERSION; }; } unless $TESTING_PERL_ONLY; if (!defined &sum) { require List::Util::PP; List::Util::PP->import; } 1; __END__ FILE82d64c88/MIME/Base64.pm#line 1 "/usr/lib/perl/5.14/MIME/Base64.pm" package MIME::Base64; use strict; use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION); require Exporter; @ISA = qw(Exporter); @EXPORT = qw(encode_base64 decode_base64); @EXPORT_OK = qw(encode_base64url decode_base64url encoded_base64_length decoded_base64_length); $VERSION = '3.13'; require XSLoader; XSLoader::load('MIME::Base64', $VERSION); *encode = \&encode_base64; *decode = \&decode_base64; sub encode_base64url { my $e = encode_base64(shift, ""); $e =~ s/=+\z//; $e =~ tr[+/][-_]; return $e; } sub decode_base64url { my $s = shift; $s =~ tr[-_][+/]; $s .= '=' while length($s) % 4; return decode_base64($s); } 1; __END__ #line 189 FILEe04372d0/PerlIO/scalar.pm#line 1 "/usr/lib/perl/5.14/PerlIO/scalar.pm" package PerlIO::scalar; our $VERSION = '0.11_01'; require XSLoader; XSLoader::load(); 1; __END__ #line 42 FILEb358f7ce/Scalar/Util.pm#line 1 "/usr/lib/perl/5.14/Scalar/Util.pm" # Scalar::Util.pm # # Copyright (c) 1997-2007 Graham Barr . All rights reserved. # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. package Scalar::Util; use strict; use vars qw(@ISA @EXPORT_OK $VERSION @EXPORT_FAIL); require Exporter; require List::Util; # List::Util loads the XS @ISA = qw(Exporter); @EXPORT_OK = qw(blessed dualvar reftype weaken isweak tainted readonly openhandle refaddr isvstring looks_like_number set_prototype); $VERSION = "1.23"; $VERSION = eval $VERSION; unless (defined &dualvar) { # Load Pure Perl version if XS not loaded require Scalar::Util::PP; Scalar::Util::PP->import; push @EXPORT_FAIL, qw(weaken isweak dualvar isvstring set_prototype); } sub export_fail { if (grep { /dualvar/ } @EXPORT_FAIL) { # no XS loaded my $pat = join("|", @EXPORT_FAIL); if (my ($err) = grep { /^($pat)$/ } @_ ) { require Carp; Carp::croak("$err is only available with the XS version of Scalar::Util"); } } if (grep { /^(weaken|isweak)$/ } @_ ) { require Carp; Carp::croak("Weak references are not implemented in the version of perl"); } if (grep { /^(isvstring)$/ } @_ ) { require Carp; Carp::croak("Vstrings are not implemented in the version of perl"); } @_; } sub openhandle ($) { my $fh = shift; my $rt = reftype($fh) || ''; return defined(fileno($fh)) ? $fh : undef if $rt eq 'IO'; if (reftype(\$fh) eq 'GLOB') { # handle openhandle(*DATA) $fh = \(my $tmp=$fh); } elsif ($rt ne 'GLOB') { return undef; } (tied(*$fh) or defined(fileno($fh))) ? $fh : undef; } 1; __END__ FILE!f0c778a4/Tie/Hash/NamedCapture.pm#line 1 "/usr/lib/perl/5.14/Tie/Hash/NamedCapture.pm" use strict; package Tie::Hash::NamedCapture; our $VERSION = "0.08"; require XSLoader; XSLoader::load(); # This returns true, which makes require happy. __END__ #line 50 FILE5f358da5/attributes.pm #line 1 "/usr/lib/perl/5.14/attributes.pm" package attributes; our $VERSION = 0.14; @EXPORT_OK = qw(get reftype); @EXPORT = (); %EXPORT_TAGS = (ALL => [@EXPORT, @EXPORT_OK]); use strict; sub croak { require Carp; goto &Carp::croak; } sub carp { require Carp; goto &Carp::carp; } my %deprecated; $deprecated{CODE} = qr/\A-?(locked)\z/; $deprecated{ARRAY} = $deprecated{HASH} = $deprecated{SCALAR} = qr/\A-?(unique)\z/; sub _modify_attrs_and_deprecate { my $svtype = shift; # Now that we've removed handling of locked from the XS code, we need to # remove it here, else it ends up in @badattrs. (If we do the deprecation in # XS, we can't control the warning based on *our* caller's lexical settings, # and the warned line is in this package) grep { $deprecated{$svtype} && /$deprecated{$svtype}/ ? do { require warnings; warnings::warnif('deprecated', "Attribute \"$1\" is deprecated"); 0; } : 1 } _modify_attrs(@_); } sub import { @_ > 2 && ref $_[2] or do { require Exporter; goto &Exporter::import; }; my (undef,$home_stash,$svref,@attrs) = @_; my $svtype = uc reftype($svref); my $pkgmeth; $pkgmeth = UNIVERSAL::can($home_stash, "MODIFY_${svtype}_ATTRIBUTES") if defined $home_stash && $home_stash ne ''; my @badattrs; if ($pkgmeth) { my @pkgattrs = _modify_attrs_and_deprecate($svtype, $svref, @attrs); @badattrs = $pkgmeth->($home_stash, $svref, @pkgattrs); if (!@badattrs && @pkgattrs) { require warnings; return unless warnings::enabled('reserved'); @pkgattrs = grep { m/\A[[:lower:]]+(?:\z|\()/ } @pkgattrs; if (@pkgattrs) { for my $attr (@pkgattrs) { $attr =~ s/\(.+\z//s; } my $s = ((@pkgattrs == 1) ? '' : 's'); carp "$svtype package attribute$s " . "may clash with future reserved word$s: " . join(' : ' , @pkgattrs); } } } else { @badattrs = _modify_attrs_and_deprecate($svtype, $svref, @attrs); } if (@badattrs) { croak "Invalid $svtype attribute" . (( @badattrs == 1 ) ? '' : 's') . ": " . join(' : ', @badattrs); } } sub get ($) { @_ == 1 && ref $_[0] or croak 'Usage: '.__PACKAGE__.'::get $ref'; my $svref = shift; my $svtype = uc reftype($svref); my $stash = _guess_stash($svref); $stash = caller unless defined $stash; my $pkgmeth; $pkgmeth = UNIVERSAL::can($stash, "FETCH_${svtype}_ATTRIBUTES") if defined $stash && $stash ne ''; return $pkgmeth ? (_fetch_attrs($svref), $pkgmeth->($stash, $svref)) : (_fetch_attrs($svref)) ; } sub require_version { goto &UNIVERSAL::VERSION } require XSLoader; XSLoader::load(); 1; __END__ #The POD goes here FILE'9bea3a41/auto/Compress/Raw/Zlib/Zlib.so9ELF>`8@(3@8@** ++!+!PX ++!+!$$Ptd44QtdRtd++!+!  GNUyLv w 4}%L X "J @ @(*ATF@ PB+'$6 LOPRSTVX\^abcfhjklmnostwz|}*9!;ep J8şvt1Dƥȇau擤sez"KRWLn+ 0[) 2e-K _B{(7jJ,=qzoazln)hF;qX<Ɵ9|)X$+O1&qBE -[XhC#k(o;UL9e_A=*LABï1 3:[ $ / *f    2} q &   M  m  $= _  J V X_CkT  m e  '  a  >  1 8 ~ w  6 R" pJ~ ] ~W Ul `d 0Wh = @ H p[ ?)4 z  p  PWY 0FD p  {  ` Pj px^ |Y   a PH7 d~      W pl `1  {  4u `9q   @ _H f  Y  0 W P dK  W02!~ 0h82! R    c   t D02! B8 ;?  `v r L  n  `9  @ wQ) N PY 3 A__gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClassesXS_Compress__Raw__Zlib__inflateScanStream_adler32PL_thr_keypthread_getspecificPerl_sv_newmortalPerl_sv_derived_fromPerl_sv_setuvPerl_mg_setPerl_sv_2iv_flagsPerl_croakPerl_croak_xs_usageXS_Compress__Raw__Zlib__inflateScanStream_crc32XS_Compress__Raw__Zlib__inflateScanStream_getLastBufferOffsetXS_Compress__Raw__Zlib__inflateScanStream_getLastBlockOffsetXS_Compress__Raw__Zlib__inflateScanStream_uncompressedBytesXS_Compress__Raw__Zlib__inflateScanStream_compressedBytesXS_Compress__Raw__Zlib__inflateScanStream_inflateCountXS_Compress__Raw__Zlib__inflateScanStream_getEndOffsetXS_Compress__Raw__Zlib__inflateStream_get_BufsizeXS_Compress__Raw__Zlib__inflateStream_total_outXS_Compress__Raw__Zlib__inflateStream_adler32XS_Compress__Raw__Zlib__inflateStream_total_inXS_Compress__Raw__Zlib__inflateStream_dict_adlerXS_Compress__Raw__Zlib__inflateStream_crc32XS_Compress__Raw__Zlib__inflateStream_statusXS_Compress__Raw__Zlib__inflateStream_uncompressedBytesXS_Compress__Raw__Zlib__inflateStream_compressedBytesXS_Compress__Raw__Zlib__inflateStream_inflateCountXS_Compress__Raw__Zlib__deflateStream_total_outXS_Compress__Raw__Zlib__deflateStream_total_inXS_Compress__Raw__Zlib__deflateStream_uncompressedBytesXS_Compress__Raw__Zlib__deflateStream_compressedBytesXS_Compress__Raw__Zlib__deflateStream_adler32XS_Compress__Raw__Zlib__deflateStream_dict_adlerXS_Compress__Raw__Zlib__deflateStream_crc32XS_Compress__Raw__Zlib__deflateStream_statusPerl_sv_setivXS_Compress__Raw__Zlib__deflateStream_get_BufsizeXS_Compress__Raw__Zlib__deflateStream_get_StrategyXS_Compress__Raw__Zlib__deflateStream_get_LevelXS_Compress__Raw__Zlib_ZLIB_VERNUMXS_Compress__Raw__Zlib__inflateStream_msgPerl_sv_setpvXS_Compress__Raw__Zlib__deflateStream_msgXS_Compress__Raw__Zlib_zlib_versionzlibVersionPerl_safesysmallocXS_Compress__Raw__Zlib__inflateScanStream_resetLastBlockBytePerl_sv_2pvbyteXS_Compress__Raw__Zlib__inflateStream_set_AppendPerl_sv_2mortalPerl_sv_2bool_flagsPerl_croak_nocontextPerl_newSVpvPerl_mg_getXS_Compress__Raw__Zlib_crc32Perl_sv_2uv_flagsPerl_sv_utf8_downgradeXS_Compress__Raw__Zlib_adler32XS_Compress__Raw__Zlib__inflateScanStream_DESTROYinflateEndPerl_safesysfreePerl_sv_freePerl_sv_free2XS_Compress__Raw__Zlib__inflateStream_DESTROYPerl_sv_backoffPerl_sv_upgradeXS_Compress__Raw__Zlib__deflateStream_deflateTuneXS_Compress__Raw__Zlib__deflateStream_DESTROYdeflateEndXS_Compress__Raw__Zlib_adler32_combineadler32_combine64XS_Compress__Raw__Zlib_crc32_combinecrc32_combine64__errno_locationstrerrorXS_Compress__Raw__Zlib__inflateScanStream_statusPerl_sv_setnvXS_Compress__Raw__Zlib__inflateStream_inflateSyncmemmoveXS_Compress__Raw__Zlib__inflateStream_inflatePerl_sv_pvbyten_forcePerl_sv_growinflateSetDictionaryPerl_sv_utf8_upgrade_flags_growXS_Compress__Raw__Zlib__deflateStream__deflateParamsXS_Compress__Raw__Zlib__deflateStream_flushXS_Compress__Raw__Zlib__deflateStream_deflateXS_Compress__Raw__Zlib__inflateScanStream__createDeflateStreamdeflateInit2_Perl_sv_setref_pvPerl_dowantarrayPerl_newSVivPerl_stack_growdeflateSetDictionarydeflatePrimeXS_Compress__Raw__Zlib__deflateInitXS_Compress__Raw__Zlib__inflateScanStream_inflateResetXS_Compress__Raw__Zlib__inflateStream_inflateResetXS_Compress__Raw__Zlib__deflateStream_deflateResetXS_Compress__Raw__Zlib__inflateInitinflateInit2_Perl_newSVsvXS_Compress__Raw__Zlib_constantPerl_newSVpvf_nocontextPerl_sv_2pv_flagsmemcmpPerl_sv_setpvn__printf_chkputcharputsXS_Compress__Raw__Zlib__inflateScanStream_DispStreamXS_Compress__Raw__Zlib__inflateStream_DispStreamXS_Compress__Raw__Zlib__deflateStream_DispStreamXS_Compress__Raw__Zlib__inflateScanStream_scanmemcpyboot_Compress__Raw__ZlibPerl_xs_apiversion_bootcheckPerl_xs_version_bootcheckPerl_newXSPerl_get_svPerl_call_listlibz.so.1libc.so.6_edata__bss_start_endZLIB_1.2.0.8ZLIB_1.2.3.3ZLIB_1.2.2.3GLIBC_2.3.4GLIBC_2.2.5z@833ti ui +!09+!8(2!(2!-!l-!k-!-!L-!.!\.! .!.!t .!h(.!|0.!b8.!f@.!VH.!nP.!wX.!z`.!{h.!p.!Ux.!c.!^.!s.!.!d.!e.!m.!R.!".!u.!_.!~.!.!M.!o.!.!/!O/!N/!/! /!(/!`0/!X8/!W@/!aH/!pP/!YX/!`/!]h/!gp/!Zx/![/!=/!/!q/!i/!S/!/!r/!D/!P/!j/!Q/!y/!J0!0!0!0! 0!(0!00!80! @0! H0! P0! X0!`0!h0!p0!x0!0!0!0!0!0!0!0!0!0!0!0!0!0! 0!!0!#0!$1!%1!&1!'1!( 1!)(1!*01!+81!,@1!-H1!.P1!/X1!0`1!1h1!2p1!3x1!41!51!61!71!81!91!:1!;1!<1!>1!?1!@1!A1!B1!C1!E1!F2!G2!H2!I2!J 2!KHoH5 % @% h% h% h% h% h% h% h% hp% h`% h P% h @% h 0% h % h %z h%r h%j h%b h%Z h%R h%J h%B h%: h%2 hp%* h`%" hP% h@% h0% h % h% h% h% h % h!% h"% h#% h$% h%% h&% h'p% h(`% h)P% h*@% h+0% h, % h-%z h.%r h/%j h0%b h1%Z h2%R h3%J h4%B h5%: h6%2 h7p%* h8`%" h9P% h:@% h;0% h< % h=% h>% h?% h@% hA% hB% hC% hDHHM HtHÐH H= UH)HHw]Hd Ht]@Hy H=r UH)HHHH?HHHu]H Ht]@=9 u'H= UHt H= -h] fffff.H= tH? HtUH= H]WRAVAUIATUSH ;;L0}HPp;Lc"HHPpgH@;Al$JI)LH@H@;@# +HsIċ;HcL4H@H@ );H@;L,H/HL;H@;HH@@ H@HH@HH@ ;Lh;H@HlzLLH;LH H/H5H1HLHffffff.AVAUIATUSH ;g;L0]HPp;Lc"HHPpGH@;Al$JI)LH H@;@#  HSIċ;HcL4H@H@ );H@;L,HHL;H@;HH@@ H@HH@HH@ ;Lhj;H@HlZLLHAD$@t;=LH2;Le';HLpLu[]A\A]A^@;L`H@H@M$H@;HLhHL>;LH H?H5H1HLHoffffff.AVAUIATUSH ;G;L0=HPp;Lc"HHPp'H@;Al$JI)LHH@;@# H3Iċ;HcL4H@H@ 1;H@;L,HHLt;H@;HH@@ hH@HH@HH@ ;LG;H@Hl7LLHAD$@t;LH;Le;HLpLu[]A\A]A^f;L`H@H@M$H@;HLhHL6;LH HGH5hH1YHiLHGAVAUIATUSH ;';L0HPp;Lc"HHPpH@;Al$JI)LHH@;@#  HIċ;HcL4H@H@ A;H@;L,HHLT;eH@;HH@@ HH@HH@HH@ L1ҋ;I);H@HlLLHAD$@t;LH;Le;HLpLu[]A\A]A^f;L`H@H@M$H@;HLhpHL&;TLH ]HWH58H1n)H9LHAVAUIATUSHf ;;L0HPp;Lc"HHPpH@;Al$JI)LHH@;@# HIċ;HcL4~H@H@ 1;eH@;L,VHHL$;5H@;HH@@ H@HH@HH@ ;L;H@HlLLHAD$@t;LH;Le;HLpLu[]A\A]A^f;L`H@H@M$cH@;HLhPHL6;4L}H =HwH5H1N HLHAVAUIATUSHF ;;L0HPp;Lc"HHPpH@;Al$JI)LHH@;@# {HIċ;HcL4^H@H@ 1;EH@;L,6HHL;H@;HH@@ H@HH@HH@ ;L;H@HlLLHAD$@t;LH;Le;HLpLu[]A\A]A^fk;L``H@H@M$CH@;HLh0HL`6;L]H HH5H1.HLHAVAUIATUSH& ;;L0HPp;Lc"HHPpH@;Al$JI)LHpH@;@# [HIċ;HcL4>H@H@ 1;%H@;L,H_HL;H@;HH@@ H@HH@HH@ ;L;H@HlLLHiAD$@t;LH;Let;HjLpLu[]A\A]A^fK;L`@H@H@M$#H@;HLhHL@6;L=H HH5شH1HٴLHAVAUIATUSH ;;L0HPp;Lc"HHPpwH@;Al$JI)LHPH@;@# ;HIċ;HcL4H@H@ 1;H@;L,H?HL;H@;HH@@ H@HH@HH@ ;L;H@HlLLHIAD$@t;jLH_;LeT;HJLpLu[]A\A]A^f+;L` H@H@M$H@;HLhHL 6;LH ݲHǺH5H1HLHAVAUIATUSH ;w;L0mHPp;Lc"HHPpWH@;Al$JI)LH0H@;@# HcIċ;HcL4H@H@ 1;H@;L,HHL;H@;HH@@ H@HH@HH@ ;Lw;H@HlgLLH)AD$@t;JLH?;Le4;H*LpLu[]A\A]A^f ;L`H@H@M$H@;HLhHL6;LH HH5H1HLHwAVAUIATUSH ;W;L0MHPp;Lc"HHPp7H@;Al$JI)LHH@;@# HCIċ;HcL4H@H@ );H@;L,HHL;H@;HH@@ xH@HH@HH@ ;Lh@Z;H@HlJLLH AD$@t;-LH";Le;H LpLu[]A\A]A^@;L`H@H@M$H@;HLhHL>;LնH HH5H1qHLH_ffffff.AVAUIATUSH ;7;L0-HPp;Lc"HHPpH@;Al$JI)LHH@;@# H#Iċ;HcL4H@H@ );H@;L,HϵHLd;uH@;HH@@ XH@HH@HH@ ;Lh:;H@Hl*LLHAD$@t; LH;Le;HLpLu[]A\A]A^@;L`H@H@M$H@;HLhHL>;|LH H/H5`H1QHaLH?ffffff.AVAUIATUSH ;;L0 HPp;Lc"HHPpH@;Al$JI)LHH@;@# HIċ;HcL4H@H@ );H@;L,vHHLD;UH@;HH@@ 8H@HH@HH@ ;Lh(;H@Hl LLHAD$@t;LH;Le;HLpLu[]A\A]A^@;L`H@H@M$H@;HLhxHL>;\LH eH?H5@H1v1HALHffffff.AVAUIATUSHf ;;L0HPp;Lc"HHPpH@;Al$JI)LHH@;@# HIċ;HcL4~H@H@ 1;eH@;L,VHHL$;5H@;HH@@ H@HH@HH@ ;L;H@HlLLHAD$@t;LH;Le;HLpLu[]A\A]A^f;L`H@H@M$cH@;HLhPHL6;4LmH =HGH5H1N HLHAVAUIATUSHF ;;L0HPp;Lc"HHPpH@;Al$JI)LHH@;@# {HIċ;HcL4^H@H@ );EH@;L,6HoHL;H@;HH@@ H@HH@HH@ ;Lh;H@HlLLHAD$@t;LH;Le;HLpLu[]A\A]A^@s;L`hH@H@M$KH@;HLh8HLh>;LUH %H_H5H16HLHffffff.AVAUIATUSH& ;;L0HPp;Lc"HHPpH@;Al$JI)LHpH@;@# [HIċ;HcL4>H@H@ 1;%H@;L,HOHL;H@;HH@@ H@HH@HH@ ;Lc;H@HlLLHiAD$@t;LH;Let;HjLpLu[]A\A]A^fK;L`@H@H@M$#H@;HLhHL@6;L-H HgH5أH1H٣LHAVAUIATUSH ;;L0HPp;Lc"HHPpwH@;Al$JI)LHPH@;@# ;HIċ;HcL4H@H@ 1;H@;L,H/HL;H@;HH@@ H@HH@HH@ ;L;H@HlLLHIAD$@t;jLH_;LeT;HJLpLu[]A\A]A^f+;L` H@H@M$H@;HLhHL 6;L H ݡHwH5H1HLHAVAUIATUSH ;w;L0mHPp;Lc"HHPpWH@;Al$JI)LH0H@;@# HcIċ;HcL4H@H@ 1;H@;L,HHL;H@;HH@@ H@HH@HH@ ;Lw;H@HlgLLH)AD$@t;JLH?;Le4;H*LpLu[]A\A]A^f ;L`H@H@M$H@;HLhHL6;LH HH5H1HLHwAVAUIATUSH ;W;L0MHPp;Lc"HHPp7H@;Al$JI)LHH@;@# HCIċ;HcL4H@H@ 1;H@;L,HHL;H@;HH@@ xH@HH@HH@ ;LW;H@HlGLLH AD$@t;*LH;Le;H LpLu[]A\A]A^f;L`H@H@M$H@;HLhHL6;LͥH HH5xH1iHyLHWAVAUIATUSH ;7;L0-HPp;Lc"HHPpH@;Al$JI)LHH@;@# H#Iċ;HcL4H@H@ );H@;L,HHLd;uH@;HH@@ XH@HH@HH@ ;Lh@:;H@Hl*LLHAD$@t; LH;Le;HLpLu[]A\A]A^@;L`H@H@M$H@;HLhHL>;|LեH HH5`H1QHaLH?ffffff.AVAUIATUSH ;;L0 HPp;Lc"HHPpH@;Al$JI)LHH@;@# HIċ;HcL4H@H@ );H@;L,vHϤHLD;UH@;HH@@ 8H@HH@HH@ ;Lh(;H@Hl LLHAD$@t;LH;Le;HLpLu[]A\A]A^@;L`H@H@M$H@;HLhxHL>;\LH eHH5@H1v1HALHffffff.AVAUIATUSHf ;;L0HPp;Lc"HHPpH@;Al$JI)LHH@;@# HIċ;HcL4~H@H@ 1;eH@;L,VHHL$;5H@;HH@@ H@HH@HH@ ;L;H@HlLLHAD$@t;LH;Le;HLpLu[]A\A]A^f;L`H@H@M$cH@;HLhPHL6;4LH =HH5H1N HLHAVAUIATUSHF ;;L0HPp;Lc"HHPpH@;Al$JI)LHH@;@# {HIċ;HcL4^H@H@ 1;EH@;L,6HHL;H@;HH@@ H@HH@HH@ ;L;H@HlLLHAD$@t;LH;Le;HLpLu[]A\A]A^fk;L``H@H@M$CH@;HLh0HL`6;LmH HH5H1.HLHAVAUIATUSH& ;;L0HPp;Lc"HHPpH@;Al$JI)LHpH@;@# [HIċ;HcL4>H@H@ );%H@;L,HoHL;H@;HH@@ H@HH@HH@ ;Lh;H@HlLLHlAD$@t;LH;Lew;HmLpLu[]A\A]A^@S;L`HH@H@M$+H@;HLhHLH>;LUH H?H5H1HLHffffff.AVAUIATUSH ;;L0HPp;Lc"HHPpwH@;Al$JI)LHPH@;@# ;HIċ;HcL4H@H@ 1;H@;L,HOHL;H@;HH@@ H@HH@HH@ ;L;H@HlLLHIAD$@t;jLH_;LeT;HJLpLu[]A\A]A^f+;L` H@H@M$H@;HLhHL 6;L-H ݐHGH5H1HLHAVAUIATUSH ;w;L0mHPp;Lc"HHPpWH@;Al$JI)LH0H@;@# HcIċ;HcL4H@H@ );H@;L,H/HL;H@;HH@@ H@HH@HH@ ;Lhz;H@HljLLH,AD$@t;MLHB;Le7;H-LpLu[]A\A]A^@;L`H@H@M$H@;HLhHL>;LH ŎH_H5H1HLHffffff.AVAUIATUSHƿ ;W;L0MHPp;Lc"HHPp7H@;Al$JI)LHH@;@# HCIċ;HcL4H@H@ 1;H@;L,HHL;H@;HH@@ xH@HH@HH@ ;LcW;H@HlGLLHYAD$@t;*LH;Le;H LpLu[]A\A]A^f;L`H@H@M$H@;HLhHL6;LH HgH5xH1iHyLHWAVAUIATUSH ;7;L0-HPp;Lc"HHPpH@;Al$JI)LHH@;@# H#Iċ;HcL4H@H@ 1;H@;L,HHLd;uH@;HH@@ XH@HH@HH@ ;L7;H@Hl'LLHAD$@t; LH;Le;HLpLu[]A\A]A^f;L`H@H@M$H@;HLhHL6;tL͔H }HwH5XH1IHYLH7AVAUIATUSH ;;L0 HPp;Lc"HHPpH@;Al$JI)LHH@;@# HIċ;HcL4H@H@ 1;H@;L,vHϓHLD;UH@;HH@@ 8H@HH@HH@ ;Lc;H@HlLLHAD$@t;LH;Le;HLpLu[]A\A]A^f;L`H@H@M$H@;HLhpHL蠿6;TLH ]HH58H1n)H9LHAVAUIATUSHf ;;L0HPp;Lc"HHPp׿H@;Al$JI)LH谿H@;@# 蛿HIċ;HcL4~H@H@ 1;eH@;L,VHHL$;5H@;HH@@ H@HH@HH@ ;Lc;H@HlLLHAD$@t;ʾLH;Le贾;H誾LpLu[]A\A]A^f苾;L`耾H@H@M$cH@;HLhPHL耽6;4LH =HH5H1N HLHH\$Hl$Ld$Ll$Lt$H(H4 I;½;L(踽HPp;Hc*HHPp袽H@;DeHI)IEH@;@# jHHŋ;McU;H@NlEpHHE@t;(HH;Im;HH@JHEH$Hl$Ld$Ll$Lt$ H(Ӽ;HhȼH@H@HlW豼HLH蟽ffffff.AVAUIATUSH ;w;L0mHPp;Lc"HHPpWH@;Al$JI)LH0H@;@# HcIċ;HcL4H@H@ );H@;L,ֻHHL褻;赻H@;HH@@ 蘻H@HH@HH@ LhH;zLHL蜻;eAD$@H@Hlt;MLHB;Le7;H-LpLu[]A\A]A^@;L`H@H@M$H@;HLhغHL>;輺LH łHWH5H1ֻ葺HLHffffff.AVAUIATUSHƳ ;W;L0MHPp;Lc"HHPp7H@;Al$JI)LHH@;@# HCIċ;HcL4޹H@H@ );ŹH@;L,趹HHL脹;蕹H@;HH@@ xH@HH@HH@ LhH;ZLHL|;EAD$@H@Hlt;-LH";Le;H LpLu[]A\A]A^@;L`H@H@M$˸H@;HLh踸HL>;蜸LH H_H5H1趹qHLH_ffffff.H\$Hl$Ld$Ll$Lt$H(H I;";L(HPp;Hc*HHPpH@;DeHI)IE߷H@;@# ʷHH芺;IMc護LHHϷ;蘷E@H@Nlt;肷HHw;Iml;HbH@JHEH$Hl$Ld$Ll$Lt$ H(f+;Hh H@H@HlO HLHH bHHǺ uC@uM@u_1Ht Ht fHtHHHx@tfH@tfDHfAVAUIATUSH ;7;L0-HPp;Lc"HHPpH@;Al$JI)LHH@HcH@ ;ԵH@;L$ŵHHL蓵n;褵H@;HH@@ 臵H@;HL`tHL褴Iŋ;LeVH@Jx ;=H@J@ „uG; ;IH@HDI$[]A\A]A^H@HH@HLh fD;ٴH@;J@ % =tp軴H@;N$謴1HLHoAك0U@;qH@JH@@ +fDKH@JH@랋;6LH ?|H!H5|H1P H|LHfAVAUIATUSHF ;׳;L0ͳHPp;Lc"HHPp跳H@;Al$JI)LH萳HcH@E1LeJ<tH;tH@;J@ [H@JHHH@HA;L$$H@H@  ; H@;L4H5HLʲ;۲H@;HH@@ 農H@;HLp諲HL۱H‹AAE;zLh;MEcHXIE;RH@;H,CHHX;1;H'L`Le[]A\A]A^fD H@HH@HHP AAE`[@ӱH@;J@ uS辱H@;J@ tn話H@fWAJHf.@(VAM{HpkH@JHHx AfHu;E1;H@;N$,HLlA@; H@JH@80맋;L$H xHH5xH1HxLH讱fffff.H\$Hl$HLd$HH- I}xS t;IԪ;H@HlĪLLH膫AD$@t;觪LH蜬;Le葪;H自LxL}H[]A\A]A^A_Ë;iHT$LH蹪I;IHP@8t\AE y+H@JH@@  H@;N4HL|H@;٩LH虩uH=1W販HqLH蠪H\$Hl$Ld$Ll$ILt$H(H ;r;L0hHPp;Lc"HHPpRH@;Al$JI)LHG+H@Hc;H@ BH@;HH@@ H@;HL`ߨHLII|$M$MtAEAEI$HtȪL;y;IoH@HDI$H$Hl$Ld$Ll$Lt$ H(D;H@HH@HL` W;LH>of;LHΪOHoLHҨͧH oH}H5 pH1fffff.H\$Hl$Ld$Ll$ILt$H(H ;r;L0hHPp;Lc"HHPpRH@;Al$JI)LHG+H@Hc;H@ BH@;HH@@ H@;HL`ߦHLII|$M$MtAEAEI$HtȨL;y;IoH@HDI$H$Hl$Ld$Ll$Lt$ H(D;H@HH@HL` W;LH>of;LHΨOHmLHҦͥH mH'|H5 nH1fffff.H\$Hl$HLl$Ld$ILt$H(H-ޞ }nS At;H[S /ƒEAă LTEuUC t}HH踥C %_DC HHl$H$Ld$Ll$Lt$ H(f.HH@}舤HH警S HC@ AD}PHHPA}0}LP!HI9ulS fD}HH%S ƒHC@ AH=5yL1[H=TyL1JH=;zL19fAWAVAUIATUSHH ;q;L0gHPp;Lc"HHPpQH@;Al$JI)LHV*HcH@;LeJ@  H@;N$HL+D$;LeܢH@;J@ `âH@JH@ D$ ;Le覢H@;J@ 荢H@JHDp ;LesH@;J@ ZH@JHDx ;DH@;@# T/;L`$H@H@M$ċ;L, H@H@ ;H@;H4H4$ݡH4$H2tH誡;軡H@;HH@@ k螡H@HH@HH@ T$ t$HxDEġ;Aj;H@HlZIcLHlAD$@t;=LH2;Le';HLhLmH[]A\A]A^A_fDH@JH@ D$@۠H#IàH@;N$贠HLAQ@蓠H@;N$脠HL负A@cH@;N$THL脟D$ 3H@;HHpH4$H4$HK{;LXrH hHvH5gH1ԟHvLH fH\$Hl$Ld$Ll$ILt$H(H ;蒟;L0舟HPp;Lc"HHPprH@;Al$JI)LH'KH@Hc;H@ "/H@;HH@@ H@;HL`HL/II|$ҠM$MtAEtuAE~L;诞;I襞H@HDI$H$Hl$Ld$Ll$Lt$ H(sH@HH@HL` o;QLHv@;9LHk$H4fLH H fH'uH5MfH1.fffff.AWAVAUIATUSHH0 ;;L0距HPp;Lc"HHPp衝H@;Al$JI)LHzH@Hc;L,H@ CVH@;L$GHLǜHD$;Le'H@;J@ kH@JHLp ;LeH@;J@ ۜH@JHLx ;ŜH@;@# 谜;L`襜H@H@M$H|$LL;I;H@HloLLH1AD$@t;RLHG;Le<;H2LhLmH[]A\A]A^A_H@HHH@ HD$f.H3IBӛH@;N$ěHLDI@裛H@;N$蔛HLI}wHcLHeDAWAVAUIATUSHH ;A;L07HPp;Lc"HHPp!H@;Al$JI)LHH@Hc;L,H@ C֚H@;L$ǚHLGHD$;Le觚H@;J@ k莚H@JHLp ;LetH@;J@ [H@JHLx ;EH@;@# 0;L`%H@H@M$H|$LLy;I;H@HlLLH豚AD$@t;ҙLHǛ;Le輙;H貙LhLmH[]A\A]A^A_蓙H@HHH@ HD$f.kH賜IBSH@;N$DHLĘI@#H@;N$HL蔘I}HtaLHDHA S8ϘtH^y)HHH[Ð+[8飛AVAUIATUSH ;臘;L0}HPp;Lc"HHPpgH@;Al$JI)LH@H@HcL,H@ X;H@;L$ HVfHLۗ(;H@;HH@@ ϗH@;HL`輗HL;D螗;Lp蓗MHؚI;~;H@L4oA*HLL5Bb踖Et DkIƋ;AH@;L$2LHLT;H@;HH ";HLhLm[]A\A]A^@H@HH@HH@ ;ĖL eH ^HnH5^H1ޗ虖H^LH臗AWAVAUIATUSHHЏ ;a;L0WHPp;Lc"HHPpAH@;Al$JI)LH5;H@HcL<LtH@H@ ;H@;L$וHfHL襕;趕H@;HH@@ 處H@;HL`膕HL趔IH5^LIċ@ % =sID$IEI$I}H@IE0AE8AE EAAAE I$HJt)AD$ Mm% =pI|$HL0I$IT$H@AD$@#;謔;L`衔MHI$;苔;H@L$|A*HLL%O_œEt DxIċ;NH@;L,?LHLa;*H@;HH ";H LxL}H[]A\A]A^A_H@HH@HLh `;ɓ1LHy;詓HP@8t\AD$ ?f;艓LH~f;HL$d1HL跓HL$Hof.;9LHuH=j1跔;LIcH [HjH5ZH1*Hs[LHӓAWAVAUIATUSHXH ;豒;L 角HPp;Hc*HHPp葒H@;D}HI)LHAă4 e;H@McL|$NlML|$H@;Jl8HL$H@HT$HHHT$0@  ; HT$H@;L4H1bHLƑ{ ;בHL$H@;HH@@ 赑HT$H@AHH@HLx  H5NZLMAHD$(N@ g H% )=h;>Ht$(HT$HH蜓HL$(IGH5YHHH@AG i@ HD$?Au HEH@AG8HUHBH|ALjDl$8tHPDH)I9tT$8H9E % =;耐1HHӐEIŋD$8Mo0HUBD$$AG8f1D$$D$8ILJDt$8MomLÏAtƒAG8uHE;H@ITHT$螏HT$HH螐E Dt$$% =HEDDd$$Eg8HMIG07IH6IGxIHHF % =HvL^GA8At Aw sALJD$8AG8HT$(Dd$8A)Dt$$MMHAW H@IH)LIE %_DE IHE|$?HPHEHUH@E@]At_HELhE D+l$8% =;DD$"1HHuDD$IJ4 DDD$IGADD$t\HELhE D+l$8% =K;DD$迍1HHDD$IJ4 DDD$IGDD$Au;DD$yHl$0;HhiH豐HE;VHT$H@;H,BDD$HHH-XA*膌DD$Et D4Hŋ; HL$H@;L$HHL;HT$H@;HЁH "ƌ;H輌H@HD$0HEHX[]A\A]A^A_Ë;虌1HH;L$Ht$pHt$1HL$H=DAƒ „ERACHL$(A ;HP@8HT$(B % )=HT$(HH@HD$HHB軋HL$H@;HLp裋HLӊAI;Ld$H@IJ<;`H@;J@ GH@JHHH@HH;}HL$(AG HŅHjt0A Mg% =HyHLDD$/DD$HT$(HHHRH@A@$;DD$蝊Ht$(H萌DD$fDAG8D$$1;aHP@8E D$?I;9HP@81;!HHH=b蝋D;DD$HHADD$~@;DD$載1ɺHHʊE@DD$FfHEwHEHEiH@;J@ uTH@;J@ ;;Mt *LHH,HEH@eAA ;Ht$(H謈HL$(A r;DD$軈Ht$(H1 DD$H蚈H@;N$苈HLˇALJE1;\LXH ePH?`H5@PH1v1HPLHH=`1豉AAyH=`1苉ff.AWAVAUIATUSHH0 ;;L0跇HPp;Lc"HHPp衇H@;Al$JI)LHzHcH@;LeJ@ ZH@;N$KHL{Aċ;Lm-H@;J@ H@JHDx ;LmH@;J@ fH@JH@ D$;LmĆH@;J@ 諆H@JHH@ HD$;L,舆H@H@ ;oH@;L4`HXHL.V;?H@;HH@@ "H@HH@HLp AtEAt D$AAt HD$IIAAI~AF AF8IF0]A1Eu EF8E;A苅;Lp者MHňI;k;H@L4\A*HLL5/P襄Et DXIƋ;.H@;L$LHLA; H@;HH ";HLhLmH[]A\A]A^A_˄H@JHD` 諄H@;N,蜄HLHD$f{H@;N,lHL蜃D$KH@;N,<HLlA@H@;HLpHL8I;LBVH KH,]H5KH1较H\LH謄fff.AWAVIAUATUSH8H| ;聃;L(wHPp;Hc*HHPpaH@;DeHI)LHAŃ5;H@McJl"H@JHT$(J@ X;H@;N4HFUHL軂(;̂H@;JH@@ 诂H@AJD$ H@HLx H5cKHAG M@ H?EEu HEH@HELpE % Dt$$=;$1HHwELIG0HULrD+t$$AEw8Dt"AAW8IG0AƇAW8D$$҉D$IGHD$tt$ H|$AAG8u_EuZHEL;HPHT$胁HT$HH胂E Dt$% =#HET$EEo8MHIG0ADt$ED+T$$)IE;DD$Hl$(;HhH=HE;;H@J,ӀDD$HHH-KA*DD$Et DHŋ;蛀H@;N,茀HHL讀;wH@;JH "a;HWH@HD$(HEH8[]A\A]A^A_;11HH脀H@;JLpHL0AID$ Q;Ml$H@;J@ H@JH@ D$ Dt$ALJD+T$$)IE E1%_DE E+w8HELpE@@;DD$EHH:DD$HE;HP@8;HH~H=X}D~H@;N,~HL}D$ !;~LPH FHXH5FH1y~HT$H|$D$pH$uALE1"w;tH@ L)H;Il$tHx;ItHGLLHs;ID$tH@;@"vtH@@"<;WtH(H8[]A\A]A^A_D;tH@JH@ D$$@tH@;N< tHLsHD$(fsH@;Nd;Lh3dMHxgIE;d;H@L,dA*HLL-.WcEt D Iŋ;cH@;L$cLHLc;cH@;HH "c;HcLpLu[]A\A]A^cH@HH@HLh I}cAAALAu;6cL5H ?+H?H5+H1Pd cH+LHcfAWIAVAUATUSH(H@\ ;b;H(bHPp;Lc*HHPpbIH@EeR(JT$HH)HHW;McH wbH@;J@ ^bH@;N,ObHLaD$;Ml$/bH@;J@ bH@JHDh ;M|$aH@;J@ aH@JHH@ HD$;aH@NtɪHI]DH@H*pDHHD$dAsIHPHt)EEg;XaLH=bIT$t$DL|$L5a1;aHbd;IaLLLH`;I`HP H)H;LuLm`H@;@"`H@@"<;`L(H([]A\A]A^A_{`H@JH@ D$)@[`H@;N% )=I$H@HD$ID$IGI$IOH $LpILJDEw 5@)AAGpt@AAAG A+H<$AG8AIIG0wHAA~IG@ADA&A3AG8A)HIIIALJALJ f+HH@AHH@HLx p;HA_;LeGH@J<E;GH@;J@ GH@JHHH@HH;GAAG8II)HIGAAG8II)$GIGAAAIG(IIW(ALJAw II$H@H)IAƇI$HEHpIEIt HIEEAG I$AŅLjt)AD$ Mw% =1I|$LLHI$IT$AH@AD$@.;'FLd$;L`FH_II$;F;H@L$EA*HLL%>EEt DIċ;EH@;L,ELHLE;EH@;HH "E;HEL|$LxL}H([]A\A]A^A_;YEHT$LHG@;9EHP@8AD$ fDEH@;J@ uDH@;J@ DBEMD%ALCEAADֿ9)9rfD)9vօtuD>MfDLD7H 0@2HJLL9IGH9uAD2uALJz;CLHEfE1IW(EII$HRIH)IDIW(EAw II$H@H)IAHAG f.;YCLHCH=:!1D;)C1HL|CHCH@;N$CHL@BMEuIuLCEf)9rfD)9v3,EI}LDEu_;oBLH x H* H5S H1CDBHLH2CfAVAUATUSH; ;B;H(BHPp;Lc*HHPpAH@;EeJH)AH@Icԋ;L,HL4AHHLC;AH ADH@;AH< H hH5hH*C;cAH; H DH5HC;?AH; H H5HB;AHt: H H5HB;@H: H H5HB;@H; H H5^HvB;@H9 H H5bHRB;@H: H lH5fH.B;g@H-: H HH5jHHBH;@(6@H H5hHHAH;@( @H9 H H5HA;?H9 H H5;HA;?H9 H H5HgA;?H8 H H5HCA;|?H]8 H ] H5HA;X?H18 H 9 H5H@;4?H8 H  H5H@;?H9 H H5CH@;>H]9 H H5H@;>H8 H H5Hk@;>H7 H H5GHG@;>H7 H a H5H#@;\>H7 H = H5H?;8>Hy8 H  H5CH?;>H57 H H5H?;=H7 H H5H?;=H7 H H5?Ho?;=H7 H H5kHK?;=H7 H e H5gH'?;`=H8 H A H5H?;<=H7 H  H5WH>;=H7 H H5H>;;;;;d;@ next_out 0x%p avail_in %lu avail_out %lu total_in %ld total_out %ld adler %ld bufsize %ld dictionary 0x%p dict_adler 0x%ld zip_mode %d crc32 0x%x adler32 0x%x flags 0x%x APPEND %s CRC32 %s ADLER32 %s CONSUME %s LIMIT %s window 0x%p s, message=NULLs, buf, out=NULL, eof=FALSEinflateScanv5.14.02.033Zlib.cCompress::Raw::Zlib::constantCompress::Raw::Zlib::adler32Compress::Raw::Zlib::crc32Compress::Raw::Zlib::inflateScanStreamCompress::Raw::Zlib::inflateScanStream::adler32Compress::Raw::Zlib::inflateScanStream::crc32Compress::Raw::Zlib::inflateScanStream::getLastBufferOffsetCompress::Raw::Zlib::inflateScanStream::getLastBlockOffsetCompress::Raw::Zlib::inflateScanStream::uncompressedBytesCompress::Raw::Zlib::inflateScanStream::compressedBytesCompress::Raw::Zlib::inflateScanStream::inflateCountCompress::Raw::Zlib::inflateScanStream::getEndOffsetCompress::Raw::Zlib::inflateStreamCompress::Raw::Zlib::inflateStream::get_BufsizeCompress::Raw::Zlib::inflateStream::total_outCompress::Raw::Zlib::inflateStream::adler32Compress::Raw::Zlib::inflateStream::total_inCompress::Raw::Zlib::inflateStream::dict_adlerCompress::Raw::Zlib::inflateStream::crc32Compress::Raw::Zlib::inflateStream::statusCompress::Raw::Zlib::inflateStream::uncompressedBytesCompress::Raw::Zlib::inflateStream::compressedBytesCompress::Raw::Zlib::inflateStream::inflateCountCompress::Raw::Zlib::deflateStreamCompress::Raw::Zlib::deflateStream::total_outCompress::Raw::Zlib::deflateStream::total_inCompress::Raw::Zlib::deflateStream::uncompressedBytesCompress::Raw::Zlib::deflateStream::compressedBytesCompress::Raw::Zlib::deflateStream::adler32Compress::Raw::Zlib::deflateStream::dict_adlerCompress::Raw::Zlib::deflateStream::crc32Compress::Raw::Zlib::deflateStream::statusCompress::Raw::Zlib::deflateStream::get_BufsizeCompress::Raw::Zlib::deflateStream::get_StrategyCompress::Raw::Zlib::deflateStream::get_LevelCompress::Raw::Zlib::inflateStream::msgCompress::Raw::Zlib::deflateStream::msgCompress::Raw::Zlib::inflateScanStream::resetLastBlockByteCompress::Raw::Zlib::inflateStream::set_Append%s: buffer parameter is not a SCALAR reference%s: buffer parameter is a reference to a referenceWide character in Compress::Raw::Zlib::crc32Wide character in Compress::Raw::Zlib::adler32Compress::Raw::Zlib::inflateScanStream::DESTROYCompress::Raw::Zlib::inflateStream::DESTROY%s: buffer parameter is read-onlys, good_length, max_lazy, nice_length, max_chainCompress::Raw::Zlib::deflateStream::deflateTuneCompress::Raw::Zlib::deflateStream::DESTROYCompress::Raw::Zlib::inflateScanStream::statusCompress::Raw::Zlib::inflateStream::inflateSyncWide character in Compress::Raw::Zlib::Inflate::inflateSyncCompress::Raw::Zlib::inflateStream::inflateCompress::Raw::Zlib::Inflate::inflate input parameter cannot be read-only when ConsumeInput is specifiedWide character in Compress::Raw::Zlib::Inflate::inflate input parameterWide character in Compress::Raw::Zlib::Inflate::inflate output parameters, flags, level, strategy, bufsizeCompress::Raw::Zlib::deflateStream::_deflateParamsCompress::Raw::Zlib::deflateStream::flushWide character in Compress::Raw::Zlib::Deflate::flush input parameterCompress::Raw::Zlib::deflateStream::deflateWide character in Compress::Raw::Zlib::Deflate::deflate input parameterWide character in Compress::Raw::Zlib::Deflate::deflate output parameterinf_s, flags, level, method, windowBits, memLevel, strategy, bufsizeCompress::Raw::Zlib::inflateScanStream::_createDeflateStreamflags, level, method, windowBits, memLevel, strategy, bufsize, dictionaryWide character in Compress::Raw::Zlib::Deflate::new dicrionary parameterCompress::Raw::Zlib::inflateScanStream::inflateResetCompress::Raw::Zlib::inflateStream::inflateResetCompress::Raw::Zlib::deflateStream::deflateResetflags, windowBits, bufsize, dictionaryYour vendor has not defined Zlib macro %s, usedUnexpected return type %d while processing Zlib macro %s, usedCompress::Raw::Zlib::inflateScanStream::DispStreamCompress::Raw::Zlib::inflateStream::DispStreamCompress::Raw::Zlib::deflateStream::DispStreamCompress::Raw::Zlib::inflateScanStream::scanWide character in Compress::Raw::Zlib::InflateScan::scan input parameterCompress::Raw::Zlib::zlib_versionCompress::Raw::Zlib::ZLIB_VERNUMCompress::Raw::Zlib::crc32_combineCompress::Raw::Zlib::adler32_combineCompress::Raw::Zlib::_deflateInitCompress::Raw::Zlib::_inflateScanInitCompress::Raw::Zlib::_inflateInitCompress::Raw::Zlib needs zlib version 1.x Compress::Raw::Zlib::gzip_os_code p p@`ra9~~~~~~~~~~~Wneed dictionarystream endfile errorstream errordata errorinsufficient memorybuffer errorincompatible version;4E P"x$&(8+x0-P/p183x5798P@pB8DxFHJ8Mx0OPQpS8UxWY[8 ^x 0` a c e` 0g g 0j m( nP q t v x@ zh `~ @ 0 @ P0@ p@`@pи0Pp ``zRx $`FJ w?;*3$"<D BBE A(A0a (A BBBE <!BBE A(A0a (A BBBE <#BBE A(A0d (A BBBJ <%)BBE A(A0t (A BBBJ <D'BBE A(A0d (A BBBJ <p)BBE A(A0d (A BBBJ <P+BBE A(A0d (A BBBJ <0-BBE A(A0d (A BBBJ <D/BBE A(A0d (A BBBJ <0BBE A(A0a (A BBBE <2BBE A(A0a (A BBBE <4BBE A(A0a (A BBBE <D6BBE A(A0d (A BBBJ <p8BBE A(A0a (A BBBE <P:BBE A(A0d (A BBBJ <0<BBE A(A0d (A BBBJ <D>BBE A(A0d (A BBBJ <?BBE A(A0d (A BBBJ <ABBE A(A0a (A BBBE <CBBE A(A0a (A BBBE <DEBBE A(A0d (A BBBJ <pGBBE A(A0d (A BBBJ <PIBBE A(A0a (A BBBE <0KBBE A(A0d (A BBBJ <DMBBE A(A0a (A BBBE <NBBE A(A0d (A BBBJ <PBBE A(A0d (A BBBJ <RBBE A(A0d (A BBBJ <DTBBE A(A0d (A BBBJ $pVQ]0 H <WBBE A(A0a (A BBBE <YBBE A(A0a (A BBBE $,h[Y]0 J T\D[ A <t ]WBBE A(A0= (A BBBA <@_BBBE A(A0 (A BBBG $Pb>JL  A f J L hcBBB E(A0A8DP 8A0A(B BBBA Ll eBBB E(A0A8DP 8A0A(B BBBA $ hTL0: F $ `jTL0: F $ 8lJML0 K L4 nBBB E(A0A8DPn 8A0A(B BBBG $ qTL0$ D L Xs{BBB E(A0A8DP 8A0A(B BBBD L u{BBB E(A0A8DP 8A0A(B BBBD L w=Hf B F<l wBBE A(A0 (A BBBE L yBBB E(A0A8DPq 8A0A(B BBBD L } BBB E(A0A8D 8A0A(B BBBA LL 4BBB E(A0A8DP 8A0A(B BBBD L 9BBE B(A0A8DpI 8A0A(B BBBD L BBB E(A0A8Dp 8A0A(B BBBG ,< HyAIG M AAH Ll BBE B(A0A8Dp 8A0A(B BBBF L hBBE B(A0A8Dp{ 8A0A(B BBBJ < ȣWBBE A(A0 (A BBBD <LWBBE A(A0 (A BBBD <WBBE A(A0 (A BBBD L(BEB B(A0A8D`M 8A0A(B BBBH ,YTQP D $L9ADF kAA4t`BFK  ABO YAB<(dBBE A(A0S (A BBBK <XdBBE A(A0S (A BBBK <,dBBE A(A0S (A BBBK LlBBB E(A0A8D`= 8A0A(B BBBH < BBB A(A0 (A BBBA 098z 3 +!+!o@0  /!xp-&x o&oof%o+!4&464F4V4f4v44444444455&565F5V5f5v55555555566&666F6V6f6v66666666677&767F7V7f7v77777777788&868F8V8(2!Zlib.soDpC.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.jcr.dynamic.got.got.plt.data.bss.gnu_debuglink $"Lo@@( 00P 08of%f%Eo&&pT&&x^p-p-x h33c44`n`8`8t z 4+!++!++!++!+-!-/!/@(2!(202!0202 <2FILE,fca3c066/auto/Compress/Raw/Zlib/autosplit.ix#line 1 "/usr/lib/perl/5.14/auto/Compress/Raw/Zlib/autosplit.ix" # Index created by AutoSplit for ../../lib/Compress/Raw/Zlib.pm # (file acts as timestamp) 1; FILE19bf70d1/auto/Cwd/Cwd.so8ELF>p@1@8@ -- -   -- - $$Ptd44QtdRtd-- - HHGNUKZBq?xT %)  $'#&" %!(  `H "%BE|*qXn{+X  kY tM9a 8 R"')0 <0  700  u p P @v __gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClassesXS_Cwd_abs_pathPL_thr_keypthread_getspecific__errno_locationPerl_my_strlcpyPerl_my_strlcat__lxstat64strchr__memcpy_chk__memmove_chkstrrchrPerl_sv_setpvnPerl_sv_magicPerl_sv_newmortalPerl_sv_setsv_flagsPerl_mg_setPerl_sv_2pv_flagsreadlinkPerl_croak_xs_usage__stack_chk_failXS_Cwd_getcwdPerl_getcwd_svXS_Cwd_fastcwdboot_CwdPerl_xs_apiversion_bootcheckPerl_xs_version_bootcheckPerl_newXSPerl_call_listlibc.so.6_edata__bss_start_endGLIBC_2.3.4GLIBC_2.4GLIBC_2.2.5ti Aii Mui W- @- 0 0 / / %/ "/  / '/ / / / 0 0 0 0  0 (0 00  80  @0  H0  P0 X0 `0 h0 p0 x0 0 0 0 0 0 0 0 0 0 HH5" %" @%" h%" h% " h%" h%! h%! h%! h%! hp%! h`%! h P%! h @%! h 0%! h %! h %! h%! h%! h%! h%! h%! h%z! h%r! h%j! h%b! hp%Z! h`HHM HtHÐH@! H=2! UH)HHw]H Ht]@H ! H=! UH)HHHH?HHHu]H Ht]@= u'H= UHt H= -h] fffff.H= tH HtUH=j H]WRAWAVAUATUHSH@H- dH%(H$@1:{L H  8jHPpHcHHPpH :DsIH@HI)LHH Mc:H@Lt$ JH 8H@H @# :sHhHk 8H@H@HDHD$HH- tC Hkk}/HD$T$,fL$LHMA$I! tH$H€DID$HLDҺIM)#IHHHH$D$(HT$jL$H$ LH=ITHT$0LD$H%=fDH/HL,+fHILEMI)IH$ LHHBƄ4 L)HMtHUIuHUB$/t%ID$H=BƄ$/ƄI$ E<.$ -<.$ I H$/BƄ$L`L+d$H@@IL$vKD&8/uDLH!%tDHSHDH HL):Ht$HHLHT$B %_DB HM 8=H2 :Ht$E1E1t1HjkHHD$fHD$$H 87H HË:&Ht$H@HH 8HT$ H@H\HD$@@Hs HD$Hk:HC=t(HO 8Ht$E1E1t1HH' :H(H$@dH3%(GH@[]A\A]A^A_@Mc1Lt$ AfH :2Ht$H>Ƅ$}L$Ƅ$/H$HuAHH1DHa 81HHHDl$(A|$(5H$0H$R#LcBƄ40$0/Iv(H$/BƄ$ML`L+d$@MtSEH0/t#HcBƄ40/Ƅ,0H$0HH=xH$0HDl$(H6Ƅ$AsHD$8@M7T$,IH5LlHD$(H 89HmHHfH\$Ld$Hl$Ll$H(H ;;HPp;D"HHPp;AH@;@# ;HhH@H@Hl;McHH;E@H@Nduz;Il$Ml$i=t;YE1E1t1HHa;:L(H\$Hl$Ld$Ll$ H(fDHKH^;HHofH\$Hl$Ld$Ll$ILt$H(HQ ;;L HPp;Hc*HHPpH@;DuHI)IEoH@;@# ZHHŋ;McEHHj;3E@H@Nd;Il$Ml$=t;E1E1t1HH;L(H$Hl$Ld$Ll$Lt$ H(;HhH@H@HlOfD;HHFa|HLHf.AVAUATUSH ;J;H(@HPp;Lc"HHPp*H@;El$JH)H@IcՋ;L$HL4H7HL;H !ADH};HO H H5H9;H H H5H;nH H H5H;JHt,;9;L+;h8!LH; ;HhLHpHE;;HL`Le[]A\A]A^ÐHH.pathsv=Nullsvv5.14.03.36Cwd.cCwd::fastcwdCwd::getcwdCwd::abs_path;0,Lt\zRx $FJ w?;*3$"LDPBBB B(A0D8G5 8A0A(B BBBE $7X0 G $vTL0 A <BBB A(A0}(A BBB@ P- - o0Px c / Xh H   o oo o- &6FVfv&6FVf0 Cwd.so6E.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.jcr.dynamic.got.got.plt.data.bss.gnu_debuglink $"@o00H( xx0PPc8o REo  @TH H ^h h X h c npp tPP z2YYJ4$- -- -- -- -/ /H/ /0 00 00 0FILEbb19933c/auto/Digest/SHA/SHA.soELF>P@X@8@TT pp p   $$Ptd444llQtdRtdpp p GNUBR?nƙR"eCS"A-'H/0&,P3*B@QI7J:;) <! 81E%F?C+ O6 2N>.M5L9#DR$ K(4G=%-@ Ȍe DP$@2i$-.014689:;=>@ABCGHJKMNPRa|\͋|5#MAiHWvՑJhAowȲJq '2H vD3ApJ&=a'߈;0*#4/,qX֬J|`ّmȷoRzۑCEN.Ɲul˹C++a *  |tu =2aQU Dn7a ;8 )R"{# @u 0ne b~ x   \1 u! } } B vd lw n `uxK v j 9  p    x\  `zH u`  h  0 jk s 0l|n`    `p 0 @{  `s__gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClassesmemcpy__stack_chk_fail__memcpy_chk__ctype_b_locPL_thr_keypthread_getspecificPerl_PerlIO_eofPerlIO_getcstrcmpstrtoulXS_Digest__SHA_sharewindPerl_sv_derived_fromPerl_sv_2iv_flagsPerl_croakPerl_croak_xs_usagePerl_safesyscallocXS_Digest__SHA_shaopenPerl_sv_newmortalPerl_sv_setref_pvXS_Digest__SHA_addPerl_sv_2pv_flagsXS_Digest__SHA_shawritePerl_sv_setuvPerl_mg_setPerl_sv_2uv_flagsshafinishshadigestshahex__sprintf_chkshabase64strcatshadsizeXS_Digest__SHA_digestPerl_newSVpvPerl_sv_2mortalshaalgXS_Digest__SHA_hashsizePerl_newSVivPerl_safesysmallocXS_Digest__SHA_shadupPerl_PerlIO_stdoutPerlIO_printfPerl_PerlIO_closePerlIO_openXS_Digest__SHA_shadumpPerl_sv_setivPerl_safesysfreeXS_Digest__SHA_sha1XS_Digest__SHA_shaclosePerl_PerlIO_stdinXS_Digest__SHA_shaloadhmacopenhmacwritehmacfinishhmacdigesthmachexhmacbase64hmaccloseXS_Digest__SHA_hmac_sha1boot_Digest__SHAPerl_xs_apiversion_bootcheckPerl_xs_version_bootcheckPerl_newXS_flagsPerl_call_listlibc.so.6_edata__bss_start_endGLIBC_2.3GLIBC_2.3.4GLIBC_2.2.5GLIBC_2.4dii ti ui ii p  x   X B` h 8p 1x  P N 5 D  I ; 9 "ȿ Fп &ؿ ) A    4 ( 0 H8 .@ H KP 0X :`  h  p >x  ?  3 C @          R     M ( 0 8 /@ H 6P  X !` #h $p %x J 7 - ' ( < O ) * + ,HH5J %L @%J h%B h%: h%2 h%* h%" h% h% hp% h`% h P% h @% h 0% h % h %ڤ h%Ҥ h%ʤ h%¤ h% h% h% h% h% h% hp% h`% hP%z h@%r h0%j h %b h%Z h%R h%J h %B h!%: h"%2 h#%* h$%" h%% h&% h'p% h(`% h)P% h*@% h+0% h, % h-%ڣ h.%ң h/%ʣ h0%£ h1% h2% h3% h4% h5% h6% h7p% h8`% h9PHHE HtHÐH H= UH)HHw]H̠ Ht]@H H= UH)HHHH?HHHu]H Ht]@=y u'H= UHt H= h]P fffff.H=X tH HtUH=B H]WRAWLF@AVAUATUSHL$DV V VH ЉHL9uD\$G DGDT$DOwByZG\$ADol$CyZDd$Dt$D|$G3G#GEyZDl$3GGD1#G3GЉ‰D1!D1DAADE(yZAA1A!A1EAAEF&yZ1!1DEADF1yZ1D!A1DAADF:yZD1!1DAADF(yZD1Dl$!D1DAADG(yZAA1Dl$A!A1EAAEF.yZ1Dl$!1DEADF)yZ1Dl$D!A1DAADF*yZD1Dl$!1DAADF(yZD1Dl$!D1DAADG(yZAA1Dl$A!A1EAAEF.yZ1Dl$!A11D3\$A1DED3\$AD3T$DF)yZ1D3T$D!AA1DAAADFyZD1!1DAADFyZD1!D1DAADEA1D3L$E1ACyZAA1A!A1A؉DEA1D3D$E1AFyZ1!1ADD13t$AD1ƍ1n11D͋L$AAD13L$D1D n1D1AA֋T$ED13T$D1DnD11DEAAċD$3D$3D$1DnD1D1ADEADD|$D3|$E1A1AG=nD|$AADl$EA1E1Dl$AED|$D3|$E1A1AB=nD|$EAl$DD11l$DD|$D3|$E1A1AG>nD|$AADt$AE1E1Dt$AED|$D3|$E1D|$D|$D1|$D$D|$GnAADt$AE1E1Dt$AEEA1E1D3|$ED3|$A1DL$A1DL$AGDD1A!D1ˉD1AAD1AE ͉D!E!A ͉AD1AA D1Dt$DDl$ËD$AAA1ŋD$A1ŋD$Dl$ D1Dt$AA D1ADA݉D$Em1D1A!D1AÉD1AAD1AAA !E!A ʼnAD1AA D1Dt$DDl$DEDT$AAAE1DT$AE1DT$Dl$AE1Dt$EA E1AEEDT$G'AA1AE!A1EEAE1EAE1AEA AA!A!AE AAE1AA E1Dt$EDl$EEDL$AAAE1DL$AE1DL$Dl$Dl$AE1Dt$A E1EEEDL$B YEA1AE!A1DEAE1EAE1EDA EA!A!AE EAE1EA E1Dt$EDl$A|$AAA1|$A1|$Dl$Dl$D1Dt$A D1EDA|$ȍ; DD1A!D1D1AAAD1EE DD!A!A DD1EA D1Dt$DDl$ ˋL$ AAA1͋L$ A1͋L$Dl$Dl$D1Dt$A D1ADA݉L$E GՉD1!D1AˉAAD1AAD1AAE ͉D!E!A ͉D1AA D1Dt$DDl$$DAËD$$AAA1ŋD$$A1ŋD$Dl$ Dl$D1Dt$A D1ADD$EQc1ED!1ADAAD1EAD1AAA !E!EA ĉD1AA D1Dt$DEDEAAAE1EAE1Dd$Dl$$Dl$AE1Dt$A E1AEF%g))DDd$1ED!AA1ADD1EAD1AAA ̉!A!EA D1AA D1DADAAAE1AAE1Dl$EDd$DD$AAE1Dl$A E1AEEAE1Dd$F# 'E!DE1EEAA1DA1؉E AA!!DD AAE1AA E1A؉EAAD1AAD1Dd$ދ\$t$AD1Dd$A D1ED,DAD1C+8!.!AD1AD1AAD1EA D!A!A DD1EA D1DEDAA1DA1ۋ\$DD\$T$AA1ۋ\$ A1ۉAӉD1D\$Gm,M!AD1AAӉD1AAD1AAE ‰D!A!A ҉1ډ 1DDT$DAËD$AD1DT$AD1EADD|$AD1EA D1Alj1G9 8SED!A1ADD1EAD1AAA !E!DA 1؉ 1؋\$DDL$DDT$AAE1DT$AE1DL$DT$EDL$AA1ً\$ A1ىEFTs eDDL$1ADt$!A1AD1AAD1AAA щ!A!EA 1߉ 1DDL$DDT$AAE1DT$AE1DL$EAEEAE1EA E1EDt$F jvDL$D1ED!AD1ADD1EAD1AAA !A!DA ɉ1ى 1DDL$DDT$ЉAAE1DT$AE1DL$DT$AEDL$AE1DT$A E1AEADt$DL$G .EA1A!A1EAAE1AAE1AEA AA!A!E AAA1ى A1EDT$EDD\$ԉAAE1D\$AE1DT$D\$AEDT$AE1D\$A E1EDT$F,rAE1DA!E1EAAA1ډA1DE EA!!D EAA1D A1l$DDDT$DD\$AAE1D\$AE1DT$G*DT$AA1l$ A1EG迢ADT$A1AA!AA1EAAE1AAE1AEE AE!A!E AAA1 A1Dߋl$EDT$ED\$AAE1D\$AE1DT$D\$EDT$AA1l$ A1DEFKfDT$1A!A1AD1AAD1EAA D!E!A D1DD 1l$DDT$DD\$AAE AA!E1D\$AE1DT$G:DT$AA1l$ A1EADT$FpK‰1A!1A҉D1AAD1AA҉D!A ԉAED1AA D1D\$AԋT$EDT$AAD1DT$AD1T$DT$AҋT$D1D\$A D1EDDQlljȉT$1DD!1AD1D1DA D!D! DAD1EA D1D\$‹D$DAڋ\$AD1D\$AD1D$D\$AËD$1؋\$ 1؉DED D$ȍD1AD!1DD1EAD1Alj!D!AA ÉD1AA D1D\$ËD$|$A1|$1D$̋|$NjD$D1D\$A D1߉D$D$DD1DD!D1AD1D1ȉA ׉!D! lj1ȉ 1ȋL$NjD$DAt$1ȋL$1D$L$D$1t$ 1DD$A5DD1DL$D!D1D1D A1!։ʼn! Ɖ1ȉ 1ȋL$ƋD$DDd$1ȋL$1D$L$D$D1DL$A D1AȉD$EpjDD1!D1A‰A1ȉ1ȉA !! D1AA D1DL$DDADA1D1D$T$‹D$D1DL$A D1D҉D$ED1AD!D1ADA1D1ЉA !! ‰D1AA D1DD$‹D$DAAEˉD1DD$AD1DD$AŋD$Dl$AD1DD$A D1AD1G.l7D!A1ADD1EAD1AAA ˉ!A!A É1؉ 1DEDADADD1EAD1D\$A|$Dd$AD1D\$A D1ADD1F%LwH'D!D1AD1D1߉A Ӊ!! 1 1l$DDAt$A1t$1DDl$1D A1DDD1E*4D!D1AD1D1މA É!! D1AA D1Eދ\$DAʋL$A1ˋL$1D\$\$AD1EAA D1EDAD1E 9D!D1ADD1EAD1AAA !A!A ΉD1AA D1ADDt$DAыT$AA1֋T$A1։Dt$Dt$AD1AA D1ADEAT$EJNDD1AD!D1ADD1EAD1AAA !A!A ։D1AA D1ADDt$DAD$AA1ƋD$A1ƉDt$Dt$AD1AA D1ADAD$EOʜ[DD1ED!AD1ADD1EAD1AAA ˉ!A!DA ÉD1AA D1D|$DD\$DDt$AAE1D\$AAE1D\$Dt$Dt$AE1D|$A E1AEAGo.hED\$E1AA!AE1EAAE1AAE1AEA AA!A!DE AAE1AA E1ED\$EDt$AAE1Dt$AE1D\$Dt$AED\$AE1Dt$A E1EG|AAAG9tAE1A!E1EAAE1AAE1EEA EA!A!E EAE1EA E1ED\$EDDl$EAAAE1Dl$AE1D\$Dl$AED\$AE1Dl$A E1EAG ocxAAA1A!A1EAAE1AAE1EEE EE!A!E EAE1EA E1EDD\$EDl$EAAAE1Dl$AE1D\$EADEAE1EA E1DAD/xȄA1!1AD1AAD1EAE DD!E!A DD1EA D1Dt$DD\$DAŋD$AD1D\$AD1D$EADA D1D1AÉ1DnjDD!1AD1D1AD ƉD!D! ƉAED1AA D1AƋD$ADD\$AD1D\$AD1D$D\$AÉ D1A1A,D1D)D!D1AD1D1ȉA !D! AED1AA D1D$DD\$AAD1D\$AD1D$AAAƉ A1DA1D1ED!BlPD1DD1D1Љ !!A ‰AD1AA D1Dd$‹D$ڋ\$1؋\$1؉EDt$ 1DA1DDD1ADD!D11DD1؉ ˉ!!A ÉD1AA D1Dd$ËD$l$1ŋD$1A,xqDADA 1DD1D1E!D1EAAAD1AAD1AAÉA!A1‰ A1‰ ! DD$LT$DABt$\$T$L$|$DD$DL$AAZARAJEZ Az$EB(EJ,H0[]A\A]A^A_AWLAVAUATUSHPHL$VH8H0H VH VH(H VH H VHH VHH VHHH HHL9uHD$8L$8LHpHpHHLMIH=I-L1L1IHHI?HHL1H1HHPHL9uHGLwE1L-LHD$HG L\$HD$HG(H\$HD$HG0Ld$HD$HG8HT$HD$HG@Hl$HD$HGHLT$HD$ILILHIHHHHND H2OD H.H1HIHH1LLMH I1H!I!M1ILH!MIH HI$HL1IIL1MHK4ILIfH\$Hl$IHD$L\$MHt$HT$LT$LGH_(Ho@HGL_ Hw0HW8LWHHP[]A\A]A^A_?HHO=HfDHֈP@0@p@pHH9ufL(fHH ׉ֈP@8@p@xH1H@p@xP@xHL9ufff.AUIATIUHSHHH9r&LHSH)IH9vHtHUH{PLHHHL[]A\A]H\$Hl$HLd$Ll$HLt$H(IAHAH9sK1Hu4J|PLGHH$Hl$Ld$Ll$Lt$ H(ÐHUHHfAJ|PLA)EALMHHsPHL)ISǃHLLAWIAVIAUATUSHHdH%(H$81HHt$ D$,tIIIAD|$,AAĉAD)A"LPALPA6D H;\$ AtPHT$ HFH9\$ A\A;yLL$ I)A|$,H\$0D|$,H\$0MAu1AtD@ HH=uILIFHLL$HHL$L\$HL$LL$AIL\$I)AxD$,- H H I֋T$,T$,DT$,At;Dl$,A61AIDAtD@ HL9uE҉LCLHBD0H$8dH3%(HD$ u7HH[]A\A]A^A_IsPLL\$ASL\$Aǃb誼f.FH\$Hl$H(H$D$D$vH\$Hl$ H(HcHHH*$H OHt$|$ƒ? ЉHCH? HCCD+H\$Hl$ H(fUHSHHLH H:tHADH uHu8:t#ADP uHHuH9H tH[]HH1AWAVAAUATUHSHHL%:_ dH%(H$81L$/H4$HL$DD$DL$@A<$HH謼H\$0DL9t*HH< tA<$ȺHHmtD|$0A#tEtPHHHD$0HD8EoIDQ uHt$(H|$0H4$H 1҅Ll$Dd$L,$Ll$6f.Au"T$1H H$HH$fDAEH|$(Ht$( HIA~A~AuD$ D$!1fDH|$ H1苻HIHIT$ DPuImIm1҉H$8dH3%(u_HH[]A\A]A^A_ËT$1H.HT$HHT$!T$1H HT$HHT$f.H==<===[=tfJ@(@N1@Ht H@t fHtHǂǂ( HBH_ HBH_ HBH_ HB H_ HB(H_ HB0H_ HB8H_ HB@H_ HBH@@1@H2@HHǂǂ(HBH] HBH] HB] B f.G@,@B1@H@Hǂǂ(HBH[] HBHX] HBHU] HB HR] HB(D@@1@HZ@@'H`ǂǂ( HBH\ HBH\ HBH\ HB H\ HB(Dk@P@f1@H@Hǂǂ(0HBH[\ HBHX\ HBHU\ HB HR\ HB(HO\ HB0HL\ HB8HI\ HB@HF\ HBHf@@1@HJ@0H@ǂǂ(@HBH[ HBH[ HBH[ HB H[ HB(H[ HB0H[ HB8H[ HB@H[ HBHfA@&@ 1@H@wHpǂǂ(HBH;[ HBH8[ HBH5[ HB H2[ HB(H/[ HB0H,[ HB8H)[ HB@H&[ HBHffHfHafHBfH'fHfHH'1fHffHfHfHbfHGfHHz@fHHz@UHWfHLH裪;Lm(;HLpLuH[]A\A]A^A_H@HH@HD$uDۨHsIèH@;N$质HL$I_@蓨H@;JL`耨HLH;aLZ+H ,H+H5c+H1+6Ht+LH@AV<AUAATAxU|SDHAHD8LDfDD苇ƃT7PD9艇v6A9/ LPD9艃wLsPD9s1AǃAD L;PD9u܉AvZˆ‹ˆJT#PHLBL#PBJJHT+PL+PBJJHC[]A\A]A^LsPHLSǃD1ff.SHH[fffff.UHSH(ƅ,HcHHw@~<1DH],H )1H腨CH;(|HH,[]AUIATUSHdH%(HD$1>A(VUUUAƅ؉)‰ЍR)VIIŭ~+@HHhHL HىHHDHLHT$dH3%(Lu)H[]A\A]DVwIŭ蘤(fH\$Hl$Ld$Ll$Lt$L|$H8H_H I;];L SHPp;Hc*HHPp=H@IDu;HDj(I)LH5H@IcL$HH@HhE HEHh HEHAE1Iŋ;賣;Lp訣LLH蚤;IM荣LHHI;p;HfL`LeH\$Hl$Ld$Ll$ Lt$(L|$0H8;1HHqHH&EH;EHI*Lc8fˢE1I&ۢHA&LH詣fffff.H\$Hl$Ld$Ll$Lt$L|$H8HF I;};L(sHPp;Hc*HHPp]H@IDu;HDb(I)LH0H@IcH,HH@LhAE IEHx E$D$;;LhڡIcHI;I¡LHGIE;謡;I袡HhI,$H\$Hl$Ld$Ll$ Lt$(L|$0H8;Aw;YHL虠H?HNH5H1[fHLH4@ATUSHHt ?jH+8 8,HdHHL$ H5LA AH|$ 諓HH1ҁ|$ HHH5[AAHƒPuTHt1L%7 A<$藓HϓH9tA<$聓HH薓HtH艕1HH[]A\DHKPH5AHA{HH5A AHLD$ =9=~&HH5A AHKHH5A AHHH5cA AHHH5:A AHjL%6 A<$H>H9A<$HHu@1%H5HHJff.H\$Hl$Ld$Ll$ILt$H(Ha5 ;b;L0XHPp;Lc"HHPpBH@;Al$JI)LHH@Hc;L$H@ H@;L,H1LVH^;IĐ;Lp蹐MHNI;褐H@;H,蕐HLHH;y;HoL`LeH$Hl$Ld$Ll$Lt$ H(f.;H@HHxW%H'LHAUIATAUSHHHO蜏HHC舏HHCD9#bHHpB4HLHkH;臐H;Lc(訑HHLH;rHSt 1Dt \9wH赎HSt1t j9wH}@Hﺀu`@uj@uv1Ht Ht fHtHH[]A\A]HkDLHHE@tfH@tHxH{RH1H{=H{4H1ڏqDHR闍H\$Hl$HLd$HHH{Lc(LHHcHJH{H{Hl$H$Ld$H閎fDH鷏HGH駍HSHtMH^H߾@@ue1@Hu=@uuHʎ1[fDfHtH@tfDHfH{@dfH\ffffff.AWAVAUATIUSH(H-P0 }P}L(EHPp}HcHHPp.H@}D{HI)I$IA]Dp(F$;H@Mc}J@ H@}JHH@HD$ʋH@JHpHIc֋ H5k E1HH莆H;@(L H H5O E1HHZH;@(ɄL H H56 E1HH&H;@(蕄Lh H H5 E1HHH;@( aL4 H nH5 E1HH辅H;@(-L H :H5 E1HH芅H;@(L H H5 E1HHVH;@(ŃL H H5 E1HH"H;@(葃Ld H H5 E1HHH;@(]L0 H jH5y E1HH躄H;@()H-' L H /H5Y E1HHH;@(L H H5C E1HHKH;@(躂L H H5& E1HHH;@(膂LY H H5 E1HHH;@(RL% H _H5 E1HH诃H;@(L H +H5E1HH{H;@( L H H5] E1HHGH;@(趁L H H5I E1HHH;@(肁LU H H5?E1HH߂H;@(NL! H [H5(E1HH諂H;@(LH 'H5E1HHwH;@( LH H5HE1HCH;@(貀LH H5E1HHH;@(~LQH H51 E1HHہH;@(JLH WH5E1HH见H;@(LH #H5wE1HHsH;@( LH H5E1HH?H;@(LH H5E1HH H;@( zLMH H5E1HH׀H;@(FLH SH5yE1HH裀H;@(LH H5E1HHoH;@( ~H-7# LH H5nE1HH4H;@(~LH H5QHE1HH;@(o~H" L:H uH50E1H;A~H-j" LH GH5E1HHH;@(~LLH H5E1HHcH;@(}LH H5E1HH/H;@(}Ht,;};L};h8u}LH~;a};HhV}LHpHE;B};H8}L`Le[]A\A]A^ÐHHSHAPtrDigest::SHA::sharewind%s: %s is not of type %salgself, ...bitstr, bitcnt, sDigest::SHA::shawriteselfDigest::SHA::shadup:walg:%d H%s%02x block blockcnt:%u :%02xfile, sDigest::SHA::shadumpDigest::SHA::shacloseblockcntlenhhlenhllenlhlenllfilev5.14.05.61SHA.cDigest::SHA::shaloadDigest::SHA::shaopen$$$Digest::SHA::sha512_hexDigest::SHA::sha512_base64Digest::SHA::sha224Digest::SHA::sha256_hexDigest::SHA::sha384_hexDigest::SHA::sha512Digest::SHA::sha512224Digest::SHA::sha1_hexDigest::SHA::sha256Digest::SHA::sha384_base64Digest::SHA::sha1_base64Digest::SHA::sha224_hexDigest::SHA::sha512224_hexDigest::SHA::sha512256_base64Digest::SHA::sha384Digest::SHA::sha224_base64Digest::SHA::sha256_base64Digest::SHA::sha1Digest::SHA::sha512256Digest::SHA::sha512224_base64Digest::SHA::sha512256_hexDigest::SHA::hmac_sha1_base64Digest::SHA::hmac_sha1Digest::SHA::hmac_sha1_hexDigest::SHA::hmac_sha224Digest::SHA::hmac_sha384_hexDigest::SHA::hmac_sha256_hexDigest::SHA::hmac_sha512224Digest::SHA::hmac_sha512Digest::SHA::hmac_sha512256Digest::SHA::hmac_sha256Digest::SHA::hmac_sha224_hexDigest::SHA::hmac_sha384Digest::SHA::hmac_sha512_hexDigest::SHA::algorithmDigest::SHA::hashsize$;@Digest::SHA::addDigest::SHA::digestDigest::SHA::HexdigestDigest::SHA::B64digestlenhh:%lu lenhl:%lu lenlh:%lu lenll:%lu Digest::SHA::hmac_sha512224_base64Digest::SHA::hmac_sha512_base64Digest::SHA::hmac_sha512224_hexDigest::SHA::hmac_sha512256_hexDigest::SHA::hmac_sha256_base64Digest::SHA::hmac_sha384_base64Digest::SHA::hmac_sha224_base64Digest::SHA::hmac_sha512256_base64"(ט/Be#D7q/;Mۉ۵8H[V9YO?m^BؾopE[N1$} Uo{t]r;ހ5%ܛ&itJi%O8GՌƝew̡ $u+Yo,-ntJAܩ\SڈvfRQ>2-m1?!'Y= % GoQcpn g))/F '&&\8!.*Zm,M߳ 8ScTs ew< jvG.;5,rdL迢0BKfpK0TQlReU$* qW5ѻ2pjҸSAQl7LwH'Hᵼ4cZų 9ˊAJNscwOʜ[o.h]t`/CocxrxȄ9dnj(c#齂lPyƲ+SrxqƜa&>'!Ǹ}xnO}orgȢ}c ?G5 q}#w($@{2 ˾L*~e)Y:o_XGJDlABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/;h,lrwlD ̲L, \l\\D|dl,,D , $Ld, D\L L<L\ $ < T l zRx $pFJ w?;*3$"DDhuJBFB B(A0A80A(O BBLLpI'BBB B(A0A8Dh0'8A0A(B BBBLpMBIB B(A0A8G*8A0A(B BBB,p4DxBED D(G0X(D ABB$|`JY0[ B LfBEE B(A0A8G 8A0A(B BBBA $8Q0g H ,ADG a AAA LL0fBBE B(A0D8G 8A0A(B BBBA P$8TL0 A |N L F $wTL0" F $heL<BBB B(D0A8DP] 8A0A(B BBBH L0BBB E(A0A8DP 8A0A(B BBBH <BLH G(F0 (A BBBB AP$<xADD eHA<dBEA A(D@ (A ABBD $b@2 D 8$0b@ H $$AR E I G <LPBBE A(A0Y (A BBBE LBBB B(A0D8JP 8A0A(B BBBA LBBB E(A0A8DP 8A0A(B BBBH $,PK E Q G jLTBBB B(D0A8D` 8A0A(B BBBG <BBE A(A0e (A BBBI 4BAA D0  DABD $0}TL0% K <D BJD H(D0d (D ABBA X PjJL O   DU G L$H BBB B(D0A8D`6 8A0A(B BBBG <t9 BBB A(A0) (A BBB d  \p x oPx    p  ooo*o &6FVfv&6FVfv&6FVfv&6F #EgܺvT2؞|6p09Y1 XhdOg jgrn<:ORQhك[؞]|6*)bp0ZY9Y/1 g&3gXhJd . ۤOHGɼg j;ʄg+rn<6_:OтRQl>+hkAكy!~[MT7=܉fs2ϟ/X՝gM{i+mBsow6j?֑,+!1"dLȣ_UQSok#@Yw8>(9S%^,+,Ł-SHA.so`.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.jcr.dynamic.got.got.plt.data.bss.gnu_debuglink $"`oPP\( 0x x 8o**EoPT  ^p hcnPP t\\ z 44lp px x  X X   ` `` lFILE9255ebaa/auto/Fcntl/Fcntl.soHELF>@@A@8@00 11 1  == = $$Ptd...DDQtdRtd11 1 GNUyZQ0Y3ff0F"_%, $#*!(' "+ &% )  # @[#&+BE>|f.<.6bxJqX `i ? 9MZaa 0pv8 R"u@ ' "@   # 0!D@  ` (__gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClassesPerl_get_hvPerl_hv_common_key_lenPerl_newSV_typePerl_sv_upgradePerl_sv_2uv_flagsPerl_stack_growXS_Fcntl_S_IFMTPerl_sv_setuvPerl_mg_setPerl_sv_newmortalXS_Fcntl_S_IMODEXS_Fcntl_AUTOLOADPerl_croak_xs_usagePerl_newSVpvn_flagsPerl_hv_commonPerl_newSVpvf_nocontextPerl_sv_2mortalPerl_croak_svboot_FcntlPerl_xs_apiversion_bootcheckPerl_xs_version_bootcheckPerl_newXSPL_thr_keypthread_getspecificPerl_newSVivPerl_newCONSTSUBPerl_sv_setpvnPerl_mro_method_changed_inPerl_call_listPerl_sv_freePerl_sv_free2Perl_croaklibc.so.6_edata__bss_start_endGLIBC_2.2.5ui 1 1  2 B*82 L*P2 V*h2 `*2 j*2 t*2 ~*2 *2 *2 *3 *(3 *@3 *X3 *p3 *3 *3 *3 *3 *3 *4 *4 +04 +H4 +`4 +x4 '+4 2+4 :+4 D+4 M+4 X+5 a+ 5 j+85 r+P5 z+h5 +5 +5 +5 +5 +5 +5 +6 +(6 +@6 +X6 +p6 +6 +6 +6 ,6 ,6 ,7 !,7 ,,07 7,H7 @,`7 G,x7 O,7 V,7 ],7 e,7 n,7 v,8 ~, 8 ,88 ,P8 ,h8 ,8 ,8 ,8 ,8 ,8 ,8 ,9 ,(9 ,@9 ,X9 ,p9 ,9 ,9 -9 -9 -9  -: (-: 0-0: 8-H: @-`: H-x: P-: X-: a-: j-: s- ; )0; {-@; -P; -`; -p; -; -; -; -; -; -; -; -; -< -< - < -0< -@< .P< .`< .p< .< &.< ..< 8.< @.< H.< P.< X.< a.= o.= {. = .0= .@= .P= .`= .p= .= .= .= .= .@ @ ? ? $?  ? &?  ? (? ? ?  @ @ @ @  @ (@ 0@  8@  @@  H@ P@ X@ `@ h@ p@ x@ @ @ @ @ @ @ @ @ @ @  @ !@ "HH5z$ %|$ @%z$ h%r$ h%j$ h%b$ h%Z$ h%R$ h%J$ h%B$ hp%:$ h`%2$ h P%*$ h @%"$ h 0%$ h %$ h % $ h%$ h%# h%# h%# h%# h%# h%# h%# h%# hp%# h`%# hP%# h@%# h0HHu" HtHÐH# H=z# UH)HHw]H" Ht]@HQ# H=J# UH)HHHH?HHHu]H" Ht]@=# u'H=! UHt H=" h]" fffff.H= tH! HtUH= H]WRUH5H HSH(H E1$A0HH/HHtgH@ tH@H([] H#H3~ vHFHJ H([]DHHD$H3HD$@1fff.H\$Hl$HLd$Ll$Lt$H(HGpHWH/HHGpHH6HcHLcn(H)HHHcHH)~HcL$AD$ LutHI$Hx HpHXL9HEHML3Hl$H$Ld$Ll$Lt$ H(ÐHߺLHǁDHC L@H)HtHHHHYffff.H\$Ll$HHl$Ld$Lt$H(HGpL'D0HHGpHGMIcHI)IIcHI)HG@# HPHGH,Et"HCAMcJ4F tfHHP HH>E@t HHIl$IHl$L#Ll$H$Ld$Lt$ H(@H~HHH\$Ll$HHl$Ld$Lt$H(HGpL'D0HHGpHGMIcHI)IIcHI)HG@# HPHGEH,HCAMcN,AE tVIEHP HH-E@t HHIl$IHl$L#Ll$H$Ld$Lt$ H(LHHDEHcHC L@L)HZLLHDI?fff.H\$Hl$HLd$H8HWpHHc HHWpHWHH)HtHIfHN HvHP 1LPHH?1E1E1HHD$HD$$HaHAL$$IT$0Ht'H=p1HH&HH;H=1jHDAWHAVAUIATUSHHHGpHoL'Lc0HHGpA^HcHD$0HL$0HHD$8HtJDLH ALH)H-% H|H H H5L/H H kH5|LHs H NH5nLHN 8gH5_HHI3 H LpHAN H}tuHuH@R@8@\?\?  L L L  MM M $$Ptd999QtdRtd L L L GNUVBb*aprCE-524)!+3.7#@;096(',? &/ 8$% B<C"*>A:1 =D :`@-:<ABE|qXO -O 3O 6P P P P  P (P 0P  8P  @P  HP  PP  XP `P hP pP xP P P P P P P P P P P  P !P "P #P $P %P &Q 'Q (Q )Q * Q +(Q ,0Q .8Q /@Q 0HQ 1PQ ?XQ 2`Q 4hQ DpQ 5xQ 6Q 7Q 8Q 9HOH58 %8 @%8 h%8 h%z8 h%r8 h%j8 h%b8 h%Z8 h%R8 hp%J8 h`%B8 h P%:8 h @%28 h 0%*8 h %"8 h %8 h%8 h% 8 h%8 h%7 h%7 h%7 h%7 h%7 h%7 hp%7 h`%7 hP%7 h@%7 h0%7 h %7 h%7 h%7 h%7 h %7 h!%z7 h"%r7 h#%j7 h$%b7 h%%Z7 h&%R7 h'p%J7 h(`%B7 h)P%:7 h*@%27 h+0%*7 h, %"7 h-%7 h.%7 h/% 7 h0%7 h1%6 h2HH 5 HtHÐH6 H=6 UH)HHw]H4 Ht]@H6 H=6 UH)HHHH?HHHu]H4 Ht]@=m6 u'H=4 UHt H=J6 h]D6 fffff.H=0 tHO4 HtUH=0 H]WRAWAVAUATUSHHH9H|$IAIIHT$ MA]MfIUf?f[f*Lt$EfAčH$KHH$F$ÍwH$&HH$A9xfA~Lt$taIIL;l$ GHD$f8@Hl$ IH9]DHLL@A$Ifu1HH[]A\A]A^A_ÐEfLt$fEtAM1f!D$4AALt$8HD$0H\$(1ۉD$AAHrfDAwH$L$L$HH$ɋ|$H$HL$(HH$9EEHf]HSkf-tEtfA9EŁwL$sL$Hɋ,|$v ;l$0VL$0"KHT$(H;,>9HT$(H kōwL$HL$9ENHSk'D$0fA9rfD;cHSkEF@D;\$4DLt$8IfA9IUAMf.HH[]A\A]A^A_@A{ff.AWAVIAUATUSHHFH~HT$HTHcH,H=H*Xf.H4IHCHMHyL{LfDHfEuHD$IM)IL L1HI3I9ENED HEuKHcM,ωCHIC @uMt9H1[]A\A]A^A_HD$H1HNH9r$fDH[]A\A]A^A_@LH[]A\A]A^A_@HHH*X@HtHCH[]A\A]A^A_fHx}H*Xf.wzH<wH{IC|HcȍxI4ωHfDHHuHL|EHHH*XtH5#. H=|1eDH6H?DHSLAL- u9MDDX ADt A9uqHMHtrAPtMDG AuAE 1AH EEADt )u [O[fDAf.E AP1AL- A1E A@HdH%(H$1@HH=tTDGEDu@u1HHH$dH3%(u%HfDHf@HdH%(H$1@HH=tTDGEDu@u1HHaH$dH3%(u%HfDHfd@AWAVAAUATUHSHHhH$H$H|$0Ht$8LL$HD$@H$HT$(dH%(H$X1H9HD$Hv5H$XdH3%(DgHh[]A\A]A^A_ffEM"IHD$0HL$01fuH=TAH҈TPuHT$(H|$PB @e*IMzHT$(L=BB @T$$#LAHtux.H9PLuL@ffUtDL9v{AIfAIfuL9vaL$$HT$LH-uqfELAHuHT$(E1LB @uADfA<$.TH9iIfAAHT$(LB @tR YfDHD$HLL$@IVLD$Ht$8HH|$0HD$HD$(H$AHD$(Lx(R0IH5H|$PaHD$(HHHtJ1Ht$0DHH=t%F҈TPuA7H|$Pхu HT$(B t AE1offffff.AUIATIUH͹SHAf1f/MMu"LIfABAf/t-ft(fHIL9sٸHĸ[]A\A]fDuCAMMf/uIL9rIfA/Af/jID$MH9rIH$L $HMLLHD$H$HD$ qH$H$Ht$ fA$LH H8H16H$@ t fA|$/tD$8%=@t[=t$H$H$L@HH$Ht$ HLH@uD$8%=@uID$H9fA$/fAD$fAVAUIATUSHH @n HD$f~Lt$ DLLMc%f[tjf*tH5?HLH HH5 L@(!H 8H5HHI2 tvH LpHAN H;tkHsHL;KE1$ALHILHH@H уtztLLLHHpH;uLHI$Ht At$8LID$HL$ I$pL|$(HM|$M<$H8[]A\A]A^A_fHPB zHƺHHD$jHD$H5LHHH%sHOMECpattern, ...File::Glob::DEFAULT_FLAGSv5.14.01.13Glob.cFile::Glob::GLOB_ERROR$;$File::Glob::doglobFile::Glob::AUTOLOADGlob.xsFile::Glob::bsd_globFile::Glob::GLOB_ABENDGLOB_ALPHASORTGLOB_ALTDIRFUNCGLOB_BRACEGLOB_ERRGLOB_LIMITGLOB_MARKGLOB_NOCASEGLOB_NOCHECKGLOB_NOMAGICGLOB_NOSORTGLOB_NOSPACEGLOB_QUOTEGLOB_TILDEGLOB_CSH%-p is not a valid File::Glob macro at %s line %d Couldn't add key '%s' to %%File::Glob::;h8XHp HHhxh(8h(zRx $@FJ w?;*3$"dDBBB B(A0A8D6 8A0A(B BBBB $ 8F0A(B BBBE kBBE B(A0A8GP 8C0A(B BBBA l 8F0A(B BBBE L 8F0A(B BBBE n 8F0A(B BBBC \ $tD L A G hG b G G b G LHBBH B(A0D8J!o 8A0A(B BBBJ <,BED I(GX (A ABBG \lBBE A(A0JЀ$ 0A(A BBBG  0A(A BBBC DXBDD D0s  AABK _  AABA LBBE B(A0A8G@ 8C0A(B BBBA $d%I@ E  A ,^BDA SAB$ JV0 I AL`hBBB E(A0D8Db 8A0A(B BBBH LdBBB B(D0A8Dp" 8A0A(B BBBC p08 8 8@ 9 99 @)9 39 ?9 L9 Y9 e9 r9 }9 9. H 8 L (L o h  O  ooooM v&6FVfv&6FVfv&6FVfvQ Glob.so.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.jcr.data.rel.ro.dynamic.got.got.plt.data.bss.gnu_debuglink $"(oP( hhx0 8oEo@T^ hHHc``@ntt88 z 8 899:: L L(L (L0L 0L@L @L M MO OXO OQ Q Q QQ QFILEe9530171/auto/IO/IO.soIELF>`@PB@8@55 h=h= h=  == = $$Ptd828282QtdRtdh=h= h= GNUf!KbXB+w%DA&%?-'#)0,3/41+C.*5   =96B@>72(!" :<8$;0H )$ $Dz0134689:;?@AB}͹0wqX|󶚿y }CE6˞cY~?*SaVQ2?w>qU j  *_VX z/1=Za w8 0R"u ` /j 0  p"XA .`A ? ) {XA  `,M #E `( P ad p*U * @&D  "__gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClassesXS_IO__Socket_sockatmarkPerl_sv_2ioPerl_PerlIO_filenoPerl_sv_newmortalPerl_sv_setivPerl_sv_setpvnPerl_croak_xs_usageXS_IO__Handle_syncfsync__errno_locationXS_IO__Handle_setbufPerl_croak_nocontextXS_IO__Handle_flushPerl_PerlIO_flushXS_IO__Handle_untaintPerl_mg_setXS_IO__Handle_clearerrPerl_PerlIO_clearerrXS_IO__Handle_errorPerl_PerlIO_errorXS_IO__Handle_ungetcPerlIO_ungetcPerl_sv_2iv_flagsXS_IO__Handle_blockingfcntlPerl_newSVivPerl_sv_2mortalXS_IO__Poll__pollPerl_newSVPerl_sv_freePerl_sv_free2XS_IO__File_new_tmpfilePerlIO_tmpfilePerl_newGVgenPerl_hv_common_key_lenPerl_do_opennPerl_newRVPerl_gv_stashpvPerl_sv_blessPerl_sv_2pv_flagsXS_IO__Seekable_setposPerlIO_setposXS_IO__Seekable_getposPerlIO_getposXS_IO__Handle_setvbufPerl_croakboot_IOPerl_xs_apiversion_bootcheckPerl_xs_version_bootcheckPerl_newXSPerl_newXS_flagsPerl_gv_stashpvnPerl_newCONSTSUBPerl_call_listlibc.so.6_edata__bss_start_endGLIBC_2.2.5ui 3h= 0p= PA PA P? X? :`? Bh? ;p? Cx? 4? <? ? A? 0? =? ?? 8? 7? >? &? 2? +? .@ @ @ @  @ (@ 0@  8@  @@  H@  P@  X@ `@ h@ p@ x@ @ @ @ @ @ @ @ @ @ @ @ @ @  @ !@ "@ #A $A %A 'A ( A )(A *0A ,8A -@A .HA /HH5:* %<* @%:* h%2* h%** h%"* h%* h%* h% * h%* hp%) h`%) h P%) h @%) h 0%) h %) h %) h%) h%) h%) h%) h%) h%) h%) h%) h%) hp%z) h`%r) hP%j) h@%b) h0%Z) h %R) h%J) h%B) h%:) h %2) h!%*) h"%") h#%) h$%) h%% ) h&%) h'p%( h(`%( h)PHH' HtHÐH( H=( UH)HHw]H& Ht]@H( H=( UH)HHHH?HHHu]H& Ht]@=a( u'H=& UHt H=B( -h]8( fffff.H=@$ tH& HtUH=*$ H]WRH\$Hl$HLd$Ll$Lt$H(HOpHHcHHOpHOjHH)HHcH4L,HpH#,LsAHmMAItEtHt$HHHuHyH[fDH\$Ld$HHl$Ll$Lt$H(HOpHHcHHOpHODbHH)HMcJ4N,LpHC@# HPHCH,Mt[LH1HCHHNd:E@t HHYIl$LkHl$Ld$Lt$ L+H$Ll$H(H@HHxHAlfff.H\$Ld$HHl$Ll$Lt$H(HOpHHcHHOpHODbHH)HMcJ4N,LpHC@# HPHCH,MtcLHpHcHCHHNdE@t HH8Il$LkHl$Ld$Lt$ L+H$Ll$H(H@HHpHD@H\$Hl$HLd$Ll$Lt$L|$H8HOpHHcHHOpHOjHH)HHcH4L,LpHCHtF HDx HSB# HRHCL$MtmDLbHcHCLHHlAD$@t LHLeLkHl$Ld$Lt$(L|$0L+H\$Ll$ H8f.kH@HIfHA/H ffffff.H\$Hl$HLt$Ld$Ll$L|$H8HOpHHcHHOpHOjHH)HAƃzHcH4L,TAL`6HCHtF 3H@ E1AMLH@1҉Ǿ1p EAAu/AAD9t LHDǾ1xzHkAHHHL\HELkL+H\$Hl$Ld$Ll$ Lt$(L|$0H8fDAAzf DHCH@HLkL+u,AHH f.AWAVAUIATUSH8HGpHHcHHGpHGDrHH)HMcJ4JHT$F H@ D$,LHcHHD$ HHL`IIT$MLt$\$(IMHT$H;H@ AIEJt8F t@H@ fAFfAFIII9tXIEJ48F uLLfD$,#H T$,Ht$ L_xQD$(HT$Lt$LHHHH52 H1HHHHHHHwHHHHHUHHHHp1H6HHHHQHHHHH/HHHHH HHt s8HHCHpJLkL+H[]A\A]A^A_ÐHHsock0 but truehandlehandle, ...IO::Handle::setbufhandle, chandle, blk=-1timeout, ...IO::Filepackname = "IO::File"+>&handle, posIO::Handle::setvbufv5.14.01.25_04IO.cIO::Seekable::getposIO::Seekable::setposIO::File::new_tmpfileIO::Poll::_poll$;$IO::Handle::blockingIO::Handle::ungetcIO::Handle::errorIO::Handle::clearerrIO::Handle::untaintIO::Handle::flushIO::Handle::syncIO::Socket::sockatmarkIO::PollPOLLINPOLLPRIPOLLOUTPOLLRDNORMPOLLWRNORMPOLLRDBANDPOLLWRBANDPOLLERRPOLLHUPPOLLNVALIO::Handle_IOFBF_IOLBF_IONBFSEEK_SETSEEK_CURSEEK_END%s not implemented on this architectureUsage: IO::Handle::setvbuf(handle, buf, type, size);x((X Px8XH(H8(zRx $FJ w?;*3$"$DPJV0 F $l(,JV0 J ,0{AAG N AAA $JV0 A $xJQ@ H $pJV0 A $<hJV0 H $d`aJ[@ K ,J[@< G LhEBBB E(A0A8Dp 8A0A(B BBBI $ hJVP* F $4`JV0 B $\XJV0 F  UDLhBGB B(A0A8GP8A0A(B BBB0  /h= p= o X ? ?  oooo= &6FVfv&6FVfv&6FVPA IO.so .shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.jcr.dynamic.got.got.plt.data.bss.gnu_debuglink $"o( XX`0 ?8oEo T^ hcn`` t// z2//828222h= h=p= p=x= x== =P? P?? ?hPA PAXA XAXA dAFILE0b5a58f1/auto/List/Util/Util.soihELF>@b@8@TOTO P]P] P] `h h]h] h] $$PtdJJJQtdRtdP]P] P] GNU:r8-c _qCR)60K42$3+(8O>NAQC"-7.'MPF1#B %:LI 5!9 < GD&E*,@?/J= ;H ;D&K;<?ACIJLNQ^\.@qX|Z`A(U"o*^!pcBE2 xw.n肿;:^sB `& ,z<A Mz9,#Q/N [ xZ2 HL";j xG^ p! %A3 ` Cfma ya b p( $] e # J 'Q p,A, 8 @fa o pw `" $1: 1e >  ?v P+__gmon_start___fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClassesXS_Scalar__Util_isweakPerl_croak_xs_usageXS_Scalar__Util_set_prototypePerl_sv_setpvnPerl_croak_nocontextXS_Scalar__Util_looks_like_numberPerl_looks_like_numberPerl_sv_setivPerl_mg_setPerl_mg_getPerl_sv_newmortalPerl_amagic_callXS_Scalar__Util_readonlyXS_Scalar__Util_isvstringPerl_mg_findXS_Scalar__Util_taintedPerl_sv_taintedXS_Scalar__Util_weakenPerl_sv_rvweakenXS_Scalar__Util_refaddrPerl_sv_setuvXS_Scalar__Util_reftypePerl_sv_reftypePerl_sv_setpvXS_Scalar__Util_blessedXS_Scalar__Util_dualvarPerl_sv_upgradePerl_sv_2pv_flagsPerl_sv_magicPerl_sv_2nv_flagsPerl_sv_2iv_flagsPerl_sv_2uv_flagsXS_List__Util_shuffledrand48_rPerl_seedsrand48_rXS_List__Util_minPerl_sv_2bool_flagsXS_List__Util_firstPerl_sv_2cvPerl_push_scopePerl_save_intPerl_save_vptrPerl_pad_pushPerl_save_pushptrPerl_save_sptrPerl_pop_scopePerl_sv_free2Perl_cxincPerl_new_stackinfoPerl_sv_freePerl_PerlIO_stderrPerlIO_printfPerl_my_exitXS_List__Util_reducePerl_gv_fetchpvPerl_sv_setsv_flagsXS_List__Util_minstrPerl_sv_cmp_flagsXS_List__Util_sumPerl_sv_setnvboot_List__UtilPerl_xs_apiversion_bootcheckPerl_xs_version_bootcheckPerl_newXS_flagsPerl_gv_stashpvnPerl_hv_common_key_lenPerl_gv_initPerl_call_listPerl_gv_add_by_typelibc.so.6_edata__bss_start_endGLIBC_2.2.5\ui ~P] X] `a a 8_  @_ <H_ =P_ CX_ D`_ Qh_ Kp_ Ex_ L_ _ N_ M_ F_ G_ H_ )_ B_ I_ 3_ O_ 7_ P` ` ` `  ` (` 0` 8`  @`  H`  P`  X` `` h` p` x` ` ` ` ` ` ` ` ` ` ` ` ` `  ` !` "` #a $a %a &a ' a ((a *0a +8a ,@a -Ha .Pa /Xa 0`a 1ha 2pa 4xa 5a 6a 7a 8a 9a :HgH5zE %|E @%zE h%rE h%jE h%bE h%ZE h%RE h%JE h%BE hp%:E h`%2E h P%*E h @%"E h 0%E h %E h % E h%E h%D h%D h%D h%D h%D h%D h%D h%D hp%D h`%D hP%D h@%D h0%D h %D h%D h%D h%zD h %rD h!%jD h"%bD h#%ZD h$%RD h%%JD h&%BD h'p%:D h(`%2D h)P%*D h*@%"D h+0%D h, %D h-% D h.%D h/%C h0%C h1%C h2%C h3%C h4HHA HtHÐHC H=C UH)HHw]H$A Ht]@HC H=C UH)HHHH?HHHu]HtA Ht]@=IC u'H=gA UHt H=*C h] C fffff.H=> tH@ HtUH=> H]WRHOpHHcHHOpHODBHH)Hu9IcLXHHHP HpIEHHwH7HN(PUSHHHWpHHc HHWpHWyH H)Hu~HcH H,HDA tVHqV u<@ t"HHHJHP/HkH+H[]Ð滉V HkH+H[]H=)1.H=)1 H'HH\$Ld$HHl$Ll$Lt$H(HOpHHcHHOpHODbHH)H HGMcN4N,@# HPHGH,AE tIUBucLH0HSHHNdHcE@t HHIl$LsHl$Ld$Ll$L3H$Lt$ H( tLHv@HZH@A LHsHtIKfDAE 5H(&[ff.H\$Ld$HHl$Ll$Lt$H(HWpHHc HHWpHWDaH H)HHGMcN,N4@# tiHHHGH,NdAV HH߁E@t HHBIl$LkHl$Ld$Lt$ L+H$Ll$H(f[HSHH3%ffDH\$Hl$HLd$HHOpHHcHHOpHOjHH)HuYHcHL$)I4$F u)HXI$HkLd$H+H$Hl$H@VHtHpH$fff.H\$Ld$HHl$Ll$Lt$H(HOpHHcHHOpHODbHH)HHGMcN,N4@# HPHGH,1AF uUHCHHNdE@t HHIl$LkHl$Ld$Lt$ L+H$Ll$H(LH1҄@HzHt#USHHHOpHHcHHOpHOjHH)HuHcH4bHCHDHH[]H#CH\$Hl$HLd$Ll$Lt$H(HOpHHcHHOpHOjHH)HHGHcL,L$@# HPHGL4AT$ umHCu4H@HLkL+H$Hl$Ld$Ll$Lt$ H(DIT$LHHl;AF@uHHH[]A\A]A^A_f.L@ I(LFƃ<0McDAWAVAUIATUSH8HGpH/HcHHGpHGDrHH)HMcHDb(FN@1@8@** -- -   -- - $$Ptd@(@(@(LLQtdRtd-- - ``GNU`qܙ'uյQ%) (" $! #% & ' B@H  !%`&,BEu|~N+cqXv9_.&3\ x lG^ -a 8 R"9( p+0  @%0 q $  0  x %u 4 \K "__gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClassesXS_MIME__QuotedPrint_decode_qpPerl_sv_2pvbytePerl_newSVPerl_sv_2mortalPL_charclassstrtolPerl_croak_xs_usageXS_MIME__Base64_decode_base64Perl_sv_2pv_flags__stack_chk_failXS_MIME__QuotedPrint_encode_qpPerl_sv_utf8_downgradePerl_sv_setpvPerl_sv_catpvn_flagsPerl_sv_catpvf_nocontextPerl_sv_growPerl_sv_utf8_upgrade_flags_growPerl_sv_2bool_flagsXS_MIME__Base64_encode_base64XS_MIME__Base64_decoded_base64_lengthPerl_sv_setivPerl_mg_setPerl_sv_newmortalXS_MIME__Base64_encoded_base64_lengthboot_MIME__Base64Perl_xs_apiversion_bootcheckPerl_xs_version_bootcheckPerl_newXS_flagsPerl_call_listlibc.so.6_edata__bss_start_endGLIBC_2.2.5GLIBC_2.4ui ii - - 0 0 / / /  / / &/ / "/ '/ (/ / / 0 0 0 0  0 (0 00  80  @0  H0  P0 X0 `0 h0 p0 x0 0 0 0 0 0 0 HH5Z! %\! @%Z! h%R! h%J! h%B! h%:! h%2! h%*! h%"! hp%! h`%! h P% ! h @%! h 0% h % h % h% h% h% h% h% h% h% hHH HtHÐH H= UH)HHw]HL Ht]@Ha H=Z UH)HHHH?HHHu]HT Ht]@=! u'H=? UHt H= -h] fffff.H= tH HtUH= H]WRAWAVIAUATUSH(HWpHHc HHWpHWDIH H)HIcH HHD$A % =ZHT$HHt$HHL,3HDLMH DL9IL`1HHDHI9vs< t< t< < Ht5H9fv.HLDHDHH9uHH)I<=A$IH1I9wHLHt%H9v DHA$IH9uH)L$2A$M+gLIL`IFLID$HT$HtHt*F HHtH@HD$DHT$ B >HHJH@HL$(HD$XL|$(HpLI:H7HLHELt$(LE1MMIƐM9L@< tP^}<=uHL9uC< u@HL9tC< t< tIM)t0H|$PALLHLLL$hLL$ML9$ +H|$PIHIIL{uM9v{ m@H> AHLHT$HL$PAHLAH5 H1LL$LL$HEHHHPH@HH)HHD$XLH+t$(1HH9HHLLL$LM9LL$vfDL9t ; I9@L{ILHL$PHtt$DI<HT$AHLL{E1"fDKL)I9CLt$0Lt$H\$8HDHLAHLI)H AHLIvHL$PALHLKXIKwE1MLt$0H\$8L9HEHxt H|$PD$@tHt$ 1ɺLID$HT$LH,ID$H4HD$HID$I$Hh[]A\A]A^A_HEHQH@H9HuHH)HT:=DHEHhHNA HH@HD$PHH@HD$M&Hh HLA%HL$PHT$AHL Ht$ HT$XL^HD$(HD$XuBHfWf.B(zD$D]L$DALH1Hx L$D0H'HF80HT$PLHD$L.yHO DAWAVAUATIUSHHHGpL?HcHHGpHGDBHI)IEMcN4JHT$(1AN L L$$AF *II^LHLL$8ALt!ID$JTH2F <LHD$0IIHVUUUUUUUHH?HH)H HHL$8GLLL$LT$8H DHIHD$81L HBLL$LT$IWMMBjL$ f.H{L ΃?A43@2 HHcA3BCH?A HcA49B@rHHD$ H|$ aLH|$0I9LHf.0H@1HH9uHD$ L)HHHH0A?A43B@2 tHB=B=HKfHB=?456789:;<=  !"#$%&'()*+,-./0123;LPh0(`xpHzRx $pFJ w?;*3$"LD(4BBE B(A0A8D` 8A0A(B BBBC D%BBE A(A0DP 0A(A BBBF L+BBB B(D0A8Dp 8A0A(B BBBA L, BBB B(D0A8D 8A0A(B BBBD L|\BBB E(A0A8DP 8A0A(B BBBD ,J[P0 K $pYQP x %- - o0h  / h  h o ooz o- &6FVfv0 Base64.soO|.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.jcr.dynamic.got.got.plt.data.bss.gnu_debuglink $"@o00\( 0hh8oz z REo 0T h^h h  hxxcpnt%% z%%` @(@(L(($- -- -- -- -/ /`/ /0 00 000FILE%02c64d29/auto/PerlIO/scalar/scalar.so9ELF>@2@8@L(L( -- - 8@ -- - $$Ptd$$$QtdRtd-- - 88GNU6O7P;6o ic+Z%C#< -%)8+/'>. !&9($A0@;B *?=267 3:4 ",51*B(F*  0  *,/1345789;<?@B++v>9))v:;qXDOf|CE:ijNj /ϧn 9+v$vs:z=p `*v qN ;L3/qG 'T)pa x8 R" $_ z 0Y   K*2  1 62  #2   @|      P  @ #u  p G\ P25 __gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClassesPerlIOScalar_filenoPerlIOScalar_tellPerlIOScalar_fillPerlIOScalar_flushPerlIOScalar_dupPerlIOBase_dupPerlIOScalar_argPerl_newRV_noincPerlIO_sv_dupPerl_newSVsvPerlIOScalar_openPerlIO_pushPerlIO_arg_fetchPerlIO_allocatePerlIOScalar_bufsizPerl_mg_getPerlIOScalar_set_ptrcntPerl_sv_2pv_flagsPerlIOScalar_get_cntPerlIOScalar_get_basePerlIOScalar_get_ptrPerlIOScalar_writePerl_sv_force_normal_flagsmemmovePerl_sv_growPerl_mg_setPerlIOScalar_readmemcpy__errno_locationPerlIOScalar_seekmemsetPerl_ckwarnPerl_warnerPerlIOScalar_closePerlIOBase_closePerlIOScalar_poppedPerl_sv_freePerl_sv_free2PerlIOScalar_pushedPerl_newSVpvnPerlIOBase_pushedPerl_sv_upgradePerl_get_svPL_no_modifyboot_PerlIO__scalarPerl_xs_apiversion_bootcheckPerl_xs_version_bootcheckPerlIO_scalarPerlIO_define_layerPerl_call_listPerlIOBase_binmodePerlIOBase_eofPerlIOBase_errorPerlIOBase_clearerrPerlIOBase_setlinebuflibc.so.6_edata__bss_start_endGLIBC_2.2.5ui ;- - `1 1 (1 $/ / 1/ / / #/ &/ (@1 8H1 @P1 -X1  `1 ,h1 ?p1 9x1 B1 /1 +1 :1 <1 51 ;1 )1 1 1 1 31 A1 =1 61 70 0 0 0  0 (0 00  80  @0  H0  P0 X0 `0 h0 p0 x0 0 0 0 30 0 0 0 0 0  0 !0 "0 $0 %0 '0 (HH5 % @% h% h%  h% h% h% h% h% hp% h`% h P% h @% h 0% h % h % h% h% h% h% h% h%z h%r h%j h%b hp%Z h`%R hP%J h@%B h0%: h %2 h%* hHH HtHÐH H= UH)HHw]H Ht]@H H= UH)HHHH?HHHu]H Ht]@= u'H=o UHt H= =h]p fffff.H=0 tH HtUH= H]WRHHH@(H1ffff.SHHtH HHI(HJ([fSHHHp u u3HtFH[fHH[cHH[Hl$Ld$ILl$Lt$H8D$XIMHl$P~ZHD$`LA@ t@Ht[LLHLHt%HJ Hl$Ld$ Ll$(Lt$0H8f1@HH ILLD$LD$HfSH1CtHs F u HH@[ÐHs HH@fffff.Hl$Ld$HH\$H(HIHs F u6tBHH@H)HC(H\$Hl$Ld$ H(@kHs F uЃ wuHT$LHD$ff.H\$Hl$H(H1Ct;Hs HF u>tJHHHHS(H1H)H9HBH\$Hl$ H(DHs F uЃ wuHT$HHL$H\$Hl$HHCtYHs HF ut$HFH\$Hl$H+Hs F uHH\$Hl$1HRf1H\$Hl$Hffffff.SH1Ct oHC([fLl$H\$1Hl$Ld$ILt$L|$H8H.EH] IIIC 1HLHIE@ t~HHHI H9PHCH<HU(LLBHHU(H;PvHPC €D@S uoLH\$Hl$Ld$Ll$ Lt$(L|$0H8fHM(HI H;PvH;PvHLNHM(I lH.HLHLHHJI 0DHH\$Hl$Ld$Ll$H8HCtlHs IIF ttHHvHhHl$HK(1)ͅ~"HcIcLL9HGHH]Hk(HH\$Hl$ Ld$(Ll$0H8DC} 1HT$Hl$H1ffff.H\$Ll$HHl$Ld$H8H.IHu F HL`ulH](HI9r2H~N D1H\$Hl$ Ld$(Ll$0H8DHH;XwgH~H1L)LHu DH](fL$Hu L$HL`^H](H](bfLTHLHu HHxCLHu -LtHuL1-HfDSHwHb[ff.SHHs HtFtFt"HC 1[fDKffH\$Hl$HLd$Ll$ILt$H(HIHMI$tA <H51HHC P ^1LLMHHs IŋF <teum1HHC HH@I$Hs @ uUHC(F@ufLH$Hl$Ld$Ll$Lt$ H(fHF@ tI$@u t1HhHs HH@HC(F@tH[fHQB HFP @HC P *1ҹ HH:HC P fDHHHvHVHW@N@ KMBA}r7HtH HH1@1@8@,, -- -  -- - $$PtdXXXDDQtdRtd-- - HHGNUQ+E1lo %(  %$& !#'  " CH #&BEzB|Է qXr&  h 3 euKya  8 R"!0 A 0  4 0 . PV   &__gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClassesPerl_gv_fetchpvn_flagsPerl_newSV_typePerl_newSVuvPerl_sv_blessPerl_sv_unmagicPerl_sv_magicPerl_sv_freePerl_sv_free2XS_Tie__Hash__NamedCapture_flagsPerl_stack_growPerl_sv_newmortalPerl_sv_setuvXS_Tie__Hash__NamedCapture_FIRSTKEYPerl_croak_xs_usagePerl_sv_2mortalPerl_sv_2uv_flagsXS_Tie__Hash__NamedCapture_FETCHPerl_croak_no_modifyXS_Tie__Hash__NamedCapture_TIEHASHPerl_sv_2pv_flagsmemcmpPerl_newSVrvPerl_sv_2bool_flagsboot_Tie__Hash__NamedCapturePerl_xs_apiversion_bootcheckPerl_xs_version_bootcheckPerl_newXSPerl_call_listlibc.so.6_edata__bss_start_endGLIBC_2.2.5ui - P- 0 0 / / /  / '/ !/ "/ / / 0 0 0 0  0 (0 00  80  @0  H0  P0 X0 `0 h0 p0 x0 0 0 0 0 0 0 0 0 HH5! %! @%! h%! h%! h%! h%! h%! h%! h%! hp%! h`%! h P%! h @%! h 0%! h %! h %! h%! h%z! h%r! h%j! h%b! h%Z! h%R! h%J! h%B! hpHH% HtHÐH(! H=! UH)HHw]H Ht]@H H= UH)HHHH?HHHu]H Ht]@= u'H= UHt H= -h] fffff.H=p tHo HtUH=Z H]WRH\$Hl$A Ld$Ll$ILt$H8@t$ Ht$ IֺHH@HL` FLHH(LHHK HCOPLH_E1E1PHLHCt/Ct5H\$Hl$Ld$ Ll$(Lt$0H8HHHHUSHHHGpH/HcHHGpHGHHH)HHHHH)HG H)HHHjHHHEHHHsHHEHH{H+H[]ÐH\$Ll$HLt$Hl$Ld$L|$HHHWpL'HcHMHWpHWDhHI)HIH(HHtHx8H0 H,} t1t#AuAA%HHAAA@McJ4HHH:G HwF HH McD 1IM)AL#HEH@ LHHu HCJTHHAH+HH@LetHHHHUL#H\$Hl$ Ld$(Ll$0Lt$8L|$@HH@H@HHsH3DHDD$vDD$EHfffff.H\$Ld$HHl$Ll$Lt$L|$H8HGpL7HcHMHGpHGJHI)HIj(HHtHz8H0 L,A} t\A9sfDH@HcHHCHHH\$Hl$Ld$Ll$ Lt$(L|$0H8ÉA9LcJB tHrF H@ IcDHA I)AL3IUHR LJ@~{HCJLJTLHAсHL#t&Ht@~FL#=HIl$H@tHID$IL#t11HC1sDH-fDHPHsHtHHHEHHf.AWAVAUATUSHH(HGpHWH/D HHGpIcAL,HL)HMcJ4N4F HvHt$M}AL9w1fDHHPHT$IHH@t3IL9I7F uHT$"HHT$HuH5HuIwHF HHH@HAIL9yH߾HT$HHHLHH"HCHJ,HCJ4zLsL3H([]A\A]A^A_@u3tzHfWf.@(f`fDADHHx tA>fD1\HD$hfHtHF80뤺HH\fff.AWIHAVAUATUSHHHLwHD$HGpLcHHGpAhLcK4L$N,IL$Ht$H 5HKAH)H.H H H5HH- H H5$HHHH H5(HH@( HH H5%HH@(HH H5"HH@( hHH oH5HH@(EHH LH5HH@("H- HH "H5HH@( HH H5HH@(HH H H5H@(I-HH@8HHh(H+H+HHHt s8HOHCHpJLkL+H[]A\A]A^A_ÐHH$lastkey$key$key, $valuepackage, ...allv5.14.00.08NamedCapture.cTie::Hash::NamedCapture::TIEHASHTie::Hash::NamedCapture::SCALARTie::Hash::NamedCapture::DELETETie::Hash::NamedCapture::CLEARTie::Hash::NamedCapture::FETCHTie::Hash::NamedCapture::EXISTSTie::Hash::NamedCapture::STORETie::Hash::NamedCapture::NEXTKEYTie::Hash::NamedCapture::FIRSTKEYTie::Hash::NamedCapture::flags;D`((0zRx $0FJ w?;*3$"$DZL@ H $lpAAG AA,J[PF E $x&J[@ A L4BBB B(A0A8G`p 8A0A(B BBBE L<pVBQB B(A0A8GP+8A0A(B BBBP - - o0@  / @    o` oo o- &6FVfv&6FVfv0 NamedCapture.so.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.jcr.dynamic.got.got.plt.data.bss.gnu_debuglink $"<o00L( 0@@8o PEo` ` T ^ @ h c n( t z2XXD- -- -- -- -/ /H/ /0 00 000FILE&fa65a26c/auto/attributes/attributes.so(XELF> @!@8@\\      $$Ptd<<QtdRtd  HHGNUExn li, g"!      P P  BE*|tè\yqXac1 @ sl ,a 8 R"    u U P5 P A   pp__gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClassesXS_attributes_reftypePerl_sv_reftypePerl_sv_setpvPerl_mg_setPerl_sv_newmortalPerl_mg_getPerl_croak_xs_usageXS_attributes__guess_stashPerl_sv_setpvnXS_attributes__fetch_attrsPerl_newSVpvn_flagsPerl_stack_growXS_attributes__modify_attrsmemcmpPerl_sv_2pv_flagsPerl_croakboot_attributesPerl_xs_apiversion_bootcheckPerl_xs_version_bootcheckPerl_newXSPerl_newXS_flagsPerl_call_listlibc.so.6_edata__bss_start_endGLIBC_2.2.5ui $                    ( 0  8  @  H  P X ` h p x   H7H5* %, @%* h%" h% h% h%  h% h% h% hp% h`% h P% h @% h 0% h % h % h% h% h% hHH HtHÐH H=z UH)HHw]Hl Ht]@HQ H=J UH)HHHH?HHHu]Hd Ht]@= u'H=O UHt H= -h] fffff.H= tH HtUH= H]WRH\$Ld$HLl$Lt$IHl$H(HOpHHcHHOpHODrHH)HWIIB# HRHGH,AHCMcILL H(AT$ It$1HBHHHDE@t HHLsHl$Ld$Ll$L3H$Lt$ H(HPLHAT$ lID$@ cHLHff.AUATUSHHHOpHHcHHOpHODbHH)HWIIB# HRHGH,A8HCMcILHH(B <HBP u?ʃ # tvfDE@t HHLcL#H[]A\A]DHH@teHH@HRHDHHtM@HхHcIH1@HHB8Ht x HB Hm@u11HHSHt$&Ht$HfHJA HH@H HtHcIbHHV1@HPHHR8Ht5HHx(HHH@(6HH@(H#HHz(uҐ{ff.H\$Hl$HLd$Ll$H(HWpH/HcHHHWpHWxHH)HHHcHH)̓HcHB <HBx t"H+Ld$H\$Hl$Ll$ H(fDHD`\At5HC H)HLmH5HHELAtHC H)H~RLeH5iHHEL_fHJA 2HHPHHHHHHHH<DAWAVAUATUHSH8HWpHHc HHWpHWyH H)HAHcHH|$H;O ALgHL$uHDHEH8[]A\A]A^A_@L|E1IDHD$dII~H@HD$(?-D$u Hl$(HA|$ H5uK|$2LH L;|$t?M7IMt3AF uHT$(H"LHL3AHL;|$uHD$McJT(HEHHEH8[]A\A]A^A_fD|$(uGADHH)HH H H5#HUH L'H H5E1H^Hw LH H5 E1H7H8 LH H5E1HHHt s8HHCHpHLsHl$ Ld$(Ll$0L|$@L3H\$Lt$8HHHH$referencelvaluemethod@attributessharedv5.14.00.14attributes.cattributes::_modify_attrs$attributes::_fetch_attrsattributes::_guess_stashattributes::reftypeA variable may not be unshared;<X8hxzRx $0FJ w?;*3$"$DUJML0 H <l5BBA A(G@ (A ABBF $JQ0 G dPABBB B(A0D8Dpx 8A0A(B BBBE  8A0A(B BBBG $<8pYQPE    oH 0     oooxo   & 6 F V f v attributes.so]{N.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.jcr.dynamic.got.got.plt.data.bss.gnu_debuglink $"oL( 00HH08oxxDEo T ^  h c 0n t z2<d     H     FILE55b87960/lib.pm #line 1 "/usr/lib/perl/5.14/lib.pm" package lib; # THIS FILE IS AUTOMATICALLY GENERATED FROM lib_pm.PL. # ANY CHANGES TO THIS FILE WILL BE OVERWRITTEN BY THE NEXT PERL BUILD. use Config; use strict; my $archname = $Config{archname}; my $version = $Config{version}; my @inc_version_list = reverse split / /, $Config{inc_version_list}; our @ORIG_INC = @INC; # take a handy copy of 'original' value our $VERSION = '0.63'; sub import { shift; my %names; foreach (reverse @_) { my $path = $_; # we'll be modifying it, so break the alias if ($path eq '') { require Carp; Carp::carp("Empty compile time value given to use lib"); } if ($path !~ /\.par$/i && -e $path && ! -d _) { require Carp; Carp::carp("Parameter to use lib must be directory, not file"); } unshift(@INC, $path); # Add any previous version directories we found at configure time foreach my $incver (@inc_version_list) { my $dir = "$path/$incver"; unshift(@INC, $dir) if -d $dir; } # Put a corresponding archlib directory in front of $path if it # looks like $path has an archlib directory below it. my($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir) = _get_dirs($path); unshift(@INC, $arch_dir) if -d $arch_auto_dir; unshift(@INC, $version_dir) if -d $version_dir; unshift(@INC, $version_arch_dir) if -d $version_arch_dir; } # remove trailing duplicates @INC = grep { ++$names{$_} == 1 } @INC; return; } sub unimport { shift; my %names; foreach my $path (@_) { my($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir) = _get_dirs($path); ++$names{$path}; ++$names{$arch_dir} if -d $arch_auto_dir; ++$names{$version_dir} if -d $version_dir; ++$names{$version_arch_dir} if -d $version_arch_dir; } # Remove ALL instances of each named directory. @INC = grep { !exists $names{$_} } @INC; return; } sub _get_dirs { my($dir) = @_; my($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir); $arch_auto_dir = "$dir/$archname/auto"; $arch_dir = "$dir/$archname"; $version_dir = "$dir/$version"; $version_arch_dir = "$dir/$version/$archname"; return($arch_auto_dir, $arch_dir, $version_dir, $version_arch_dir); } 1; __END__ FILE1d366cbd/AutoLoader.pm\#line 1 "/usr/share/perl/5.14/AutoLoader.pm" package AutoLoader; use strict; use 5.006_001; our($VERSION, $AUTOLOAD); my $is_dosish; my $is_epoc; my $is_vms; my $is_macos; BEGIN { $is_dosish = $^O eq 'cygwin' || $^O eq 'dos' || $^O eq 'os2' || $^O eq 'MSWin32' || $^O eq 'NetWare'; $is_epoc = $^O eq 'epoc'; $is_vms = $^O eq 'VMS'; $is_macos = $^O eq 'MacOS'; $VERSION = '5.71'; } AUTOLOAD { my $sub = $AUTOLOAD; my $filename = AutoLoader::find_filename( $sub ); my $save = $@; local $!; # Do not munge the value. eval { local $SIG{__DIE__}; require $filename }; if ($@) { if (substr($sub,-9) eq '::DESTROY') { no strict 'refs'; *$sub = sub {}; $@ = undef; } elsif ($@ =~ /^Can't locate/) { # The load might just have failed because the filename was too # long for some old SVR3 systems which treat long names as errors. # If we can successfully truncate a long name then it's worth a go. # There is a slight risk that we could pick up the wrong file here # but autosplit should have warned about that when splitting. if ($filename =~ s/(\w{12,})\.al$/substr($1,0,11).".al"/e){ eval { local $SIG{__DIE__}; require $filename }; } } if ($@){ $@ =~ s/ at .*\n//; my $error = $@; require Carp; Carp::croak($error); } } $@ = $save; goto &$sub; } sub find_filename { my $sub = shift; my $filename; # Braces used to preserve $1 et al. { # Try to find the autoloaded file from the package-qualified # name of the sub. e.g., if the sub needed is # Getopt::Long::GetOptions(), then $INC{Getopt/Long.pm} is # something like '/usr/lib/perl5/Getopt/Long.pm', and the # autoload file is '/usr/lib/perl5/auto/Getopt/Long/GetOptions.al'. # # However, if @INC is a relative path, this might not work. If, # for example, @INC = ('lib'), then $INC{Getopt/Long.pm} is # 'lib/Getopt/Long.pm', and we want to require # 'auto/Getopt/Long/GetOptions.al' (without the leading 'lib'). # In this case, we simple prepend the 'auto/' and let the # C take care of the searching for us. my ($pkg,$func) = ($sub =~ /(.*)::([^:]+)$/); $pkg =~ s#::#/#g; if (defined($filename = $INC{"$pkg.pm"})) { if ($is_macos) { $pkg =~ tr#/#:#; $filename = undef unless $filename =~ s#^(.*)$pkg\.pm\z#$1auto:$pkg:$func.al#s; } else { $filename = undef unless $filename =~ s#^(.*)$pkg\.pm\z#$1auto/$pkg/$func.al#s; } # if the file exists, then make sure that it is a # a fully anchored path (i.e either '/usr/lib/auto/foo/bar.al', # or './lib/auto/foo/bar.al'. This avoids C searching # (and failing) to find the 'lib/auto/foo/bar.al' because it # looked for 'lib/lib/auto/foo/bar.al', given @INC = ('lib'). if (defined $filename and -r $filename) { unless ($filename =~ m|^/|s) { if ($is_dosish) { unless ($filename =~ m{^([a-z]:)?[\\/]}is) { if ($^O ne 'NetWare') { $filename = "./$filename"; } else { $filename = "$filename"; } } } elsif ($is_epoc) { unless ($filename =~ m{^([a-z?]:)?[\\/]}is) { $filename = "./$filename"; } } elsif ($is_vms) { # XXX todo by VMSmiths $filename = "./$filename"; } elsif (!$is_macos) { $filename = "./$filename"; } } } else { $filename = undef; } } unless (defined $filename) { # let C do the searching $filename = "auto/$sub.al"; $filename =~ s#::#/#g; } } return $filename; } sub import { my $pkg = shift; my $callpkg = caller; # # Export symbols, but not by accident of inheritance. # if ($pkg eq 'AutoLoader') { if ( @_ and $_[0] =~ /^&?AUTOLOAD$/ ) { no strict 'refs'; *{ $callpkg . '::AUTOLOAD' } = \&AUTOLOAD; } } # # Try to find the autosplit index file. Eg., if the call package # is POSIX, then $INC{POSIX.pm} is something like # '/usr/local/lib/perl5/POSIX.pm', and the autosplit index file is in # '/usr/local/lib/perl5/auto/POSIX/autosplit.ix', so we require that. # # However, if @INC is a relative path, this might not work. If, # for example, @INC = ('lib'), then # $INC{POSIX.pm} is 'lib/POSIX.pm', and we want to require # 'auto/POSIX/autosplit.ix' (without the leading 'lib'). # (my $calldir = $callpkg) =~ s#::#/#g; my $path = $INC{$calldir . '.pm'}; if (defined($path)) { # Try absolute path name, but only eval it if the # transformation from module path to autosplit.ix path # succeeded! my $replaced_okay; if ($is_macos) { (my $malldir = $calldir) =~ tr#/#:#; $replaced_okay = ($path =~ s#^(.*)$malldir\.pm\z#$1auto:$malldir:autosplit.ix#s); } else { $replaced_okay = ($path =~ s#^(.*)$calldir\.pm\z#$1auto/$calldir/autosplit.ix#); } eval { require $path; } if $replaced_okay; # If that failed, try relative path with normal @INC searching. if (!$replaced_okay or $@) { $path ="auto/$calldir/autosplit.ix"; eval { require $path; }; } if ($@) { my $error = $@; require Carp; Carp::carp($error); } } } sub unimport { my $callpkg = caller; no strict 'refs'; for my $exported (qw( AUTOLOAD )) { my $symname = $callpkg . '::' . $exported; undef *{ $symname } if \&{ $symname } == \&{ $exported }; *{ $symname } = \&{ $symname }; } } 1; __END__ FILE2030bb71/Carp.pm'#line 1 "/usr/share/perl/5.14/Carp.pm" package Carp; use strict; use warnings; our $VERSION = '1.20'; our $MaxEvalLen = 0; our $Verbose = 0; our $CarpLevel = 0; our $MaxArgLen = 64; # How much of each argument to print. 0 = all. our $MaxArgNums = 8; # How many arguments to print. 0 = all. require Exporter; our @ISA = ('Exporter'); our @EXPORT = qw(confess croak carp); our @EXPORT_OK = qw(cluck verbose longmess shortmess); our @EXPORT_FAIL = qw(verbose); # hook to enable verbose mode # The members of %Internal are packages that are internal to perl. # Carp will not report errors from within these packages if it # can. The members of %CarpInternal are internal to Perl's warning # system. Carp will not report errors from within these packages # either, and will not report calls *to* these packages for carp and # croak. They replace $CarpLevel, which is deprecated. The # $Max(EvalLen|(Arg(Len|Nums)) variables are used to specify how the eval # text and function arguments should be formatted when printed. our %CarpInternal; our %Internal; # disable these by default, so they can live w/o require Carp $CarpInternal{Carp}++; $CarpInternal{warnings}++; $Internal{Exporter}++; $Internal{'Exporter::Heavy'}++; # if the caller specifies verbose usage ("perl -MCarp=verbose script.pl") # then the following method will be called by the Exporter which knows # to do this thanks to @EXPORT_FAIL, above. $_[1] will contain the word # 'verbose'. sub export_fail { shift; $Verbose = shift if $_[0] eq 'verbose'; @_ } sub _cgc { no strict 'refs'; return \&{"CORE::GLOBAL::caller"} if defined &{"CORE::GLOBAL::caller"}; return; } sub longmess { # Icky backwards compatibility wrapper. :-( # # The story is that the original implementation hard-coded the # number of call levels to go back, so calls to longmess were off # by one. Other code began calling longmess and expecting this # behaviour, so the replacement has to emulate that behaviour. my $cgc = _cgc(); my $call_pack = $cgc ? $cgc->() : caller(); if ( $Internal{$call_pack} or $CarpInternal{$call_pack} ) { return longmess_heavy(@_); } else { local $CarpLevel = $CarpLevel + 1; return longmess_heavy(@_); } } our @CARP_NOT; sub shortmess { my $cgc = _cgc(); # Icky backwards compatibility wrapper. :-( local @CARP_NOT = $cgc ? $cgc->() : caller(); shortmess_heavy(@_); } sub croak { die shortmess @_ } sub confess { die longmess @_ } sub carp { warn shortmess @_ } sub cluck { warn longmess @_ } sub caller_info { my $i = shift(@_) + 1; my %call_info; my $cgc = _cgc(); { package DB; @DB::args = \$i; # A sentinel, which no-one else has the address of @call_info{ qw(pack file line sub has_args wantarray evaltext is_require) } = $cgc ? $cgc->($i) : caller($i); } unless ( defined $call_info{pack} ) { return (); } my $sub_name = Carp::get_subname( \%call_info ); if ( $call_info{has_args} ) { my @args; if ( @DB::args == 1 && ref $DB::args[0] eq ref \$i && $DB::args[0] == \$i ) { @DB::args = (); # Don't let anyone see the address of $i local $@; my $where = eval { my $func = $cgc or return ''; my $gv = B::svref_2object($func)->GV; my $package = $gv->STASH->NAME; my $subname = $gv->NAME; return unless defined $package && defined $subname; # returning CORE::GLOBAL::caller isn't useful for tracing the cause: return if $package eq 'CORE::GLOBAL' && $subname eq 'caller'; " in &${package}::$subname"; } // ''; @args = "** Incomplete caller override detected$where; \@DB::args were not set **"; } else { @args = map { Carp::format_arg($_) } @DB::args; } if ( $MaxArgNums and @args > $MaxArgNums ) { # More than we want to show? $#args = $MaxArgNums; push @args, '...'; } # Push the args onto the subroutine $sub_name .= '(' . join( ', ', @args ) . ')'; } $call_info{sub_name} = $sub_name; return wantarray() ? %call_info : \%call_info; } # Transform an argument to a function into a string. sub format_arg { my $arg = shift; if ( ref($arg) ) { $arg = defined($overload::VERSION) ? overload::StrVal($arg) : "$arg"; } if ( defined($arg) ) { $arg =~ s/'/\\'/g; $arg = str_len_trim( $arg, $MaxArgLen ); # Quote it? $arg = "'$arg'" unless $arg =~ /^-?[0-9.]+\z/; } # 0-9, not \d, as \d will try to else { # load Unicode tables $arg = 'undef'; } # The following handling of "control chars" is direct from # the original code - it is broken on Unicode though. # Suggestions? utf8::is_utf8($arg) or $arg =~ s/([[:cntrl:]]|[[:^ascii:]])/sprintf("\\x{%x}",ord($1))/eg; return $arg; } # Takes an inheritance cache and a package and returns # an anon hash of known inheritances and anon array of # inheritances which consequences have not been figured # for. sub get_status { my $cache = shift; my $pkg = shift; $cache->{$pkg} ||= [ { $pkg => $pkg }, [ trusts_directly($pkg) ] ]; return @{ $cache->{$pkg} }; } # Takes the info from caller() and figures out the name of # the sub/require/eval sub get_subname { my $info = shift; if ( defined( $info->{evaltext} ) ) { my $eval = $info->{evaltext}; if ( $info->{is_require} ) { return "require $eval"; } else { $eval =~ s/([\\\'])/\\$1/g; return "eval '" . str_len_trim( $eval, $MaxEvalLen ) . "'"; } } return ( $info->{sub} eq '(eval)' ) ? 'eval {...}' : $info->{sub}; } # Figures out what call (from the point of view of the caller) # the long error backtrace should start at. sub long_error_loc { my $i; my $lvl = $CarpLevel; { ++$i; my $cgc = _cgc(); my $pkg = $cgc ? $cgc->($i) : caller($i); unless ( defined($pkg) ) { # This *shouldn't* happen. if (%Internal) { local %Internal; $i = long_error_loc(); last; } else { # OK, now I am irritated. return 2; } } redo if $CarpInternal{$pkg}; redo unless 0 > --$lvl; redo if $Internal{$pkg}; } return $i - 1; } sub longmess_heavy { return @_ if ref( $_[0] ); # don't break references as exceptions my $i = long_error_loc(); return ret_backtrace( $i, @_ ); } # Returns a full stack backtrace starting from where it is # told. sub ret_backtrace { my ( $i, @error ) = @_; my $mess; my $err = join '', @error; $i++; my $tid_msg = ''; if ( defined &threads::tid ) { my $tid = threads->tid; $tid_msg = " thread $tid" if $tid; } my %i = caller_info($i); $mess = "$err at $i{file} line $i{line}$tid_msg\n"; while ( my %i = caller_info( ++$i ) ) { $mess .= "\t$i{sub_name} called at $i{file} line $i{line}$tid_msg\n"; } return $mess; } sub ret_summary { my ( $i, @error ) = @_; my $err = join '', @error; $i++; my $tid_msg = ''; if ( defined &threads::tid ) { my $tid = threads->tid; $tid_msg = " thread $tid" if $tid; } my %i = caller_info($i); return "$err at $i{file} line $i{line}$tid_msg\n"; } sub short_error_loc { # You have to create your (hash)ref out here, rather than defaulting it # inside trusts *on a lexical*, as you want it to persist across calls. # (You can default it on $_[2], but that gets messy) my $cache = {}; my $i = 1; my $lvl = $CarpLevel; { my $cgc = _cgc(); my $called = $cgc ? $cgc->($i) : caller($i); $i++; my $caller = $cgc ? $cgc->($i) : caller($i); return 0 unless defined($caller); # What happened? redo if $Internal{$caller}; redo if $CarpInternal{$caller}; redo if $CarpInternal{$called}; redo if trusts( $called, $caller, $cache ); redo if trusts( $caller, $called, $cache ); redo unless 0 > --$lvl; } return $i - 1; } sub shortmess_heavy { return longmess_heavy(@_) if $Verbose; return @_ if ref( $_[0] ); # don't break references as exceptions my $i = short_error_loc(); if ($i) { ret_summary( $i, @_ ); } else { longmess_heavy(@_); } } # If a string is too long, trims it with ... sub str_len_trim { my $str = shift; my $max = shift || 0; if ( 2 < $max and $max < length($str) ) { substr( $str, $max - 3 ) = '...'; } return $str; } # Takes two packages and an optional cache. Says whether the # first inherits from the second. # # Recursive versions of this have to work to avoid certain # possible endless loops, and when following long chains of # inheritance are less efficient. sub trusts { my $child = shift; my $parent = shift; my $cache = shift; my ( $known, $partial ) = get_status( $cache, $child ); # Figure out consequences until we have an answer while ( @$partial and not exists $known->{$parent} ) { my $anc = shift @$partial; next if exists $known->{$anc}; $known->{$anc}++; my ( $anc_knows, $anc_partial ) = get_status( $cache, $anc ); my @found = keys %$anc_knows; @$known{@found} = (); push @$partial, @$anc_partial; } return exists $known->{$parent}; } # Takes a package and gives a list of those trusted directly sub trusts_directly { my $class = shift; no strict 'refs'; no warnings 'once'; return @{"$class\::CARP_NOT"} ? @{"$class\::CARP_NOT"} : @{"$class\::ISA"}; } 1; __END__ FILE90004ccc/Carp/Heavy.pmN#line 1 "/usr/share/perl/5.14/Carp/Heavy.pm" package Carp; # On one line so MakeMaker will see it. use Carp; our $VERSION = $Carp::VERSION; 1; # Most of the machinery of Carp used to be there. # It has been moved in Carp.pm now, but this placeholder remains for # the benefit of modules that like to preload Carp::Heavy directly. FILE7a62b3b9/Compress/Zlib.pm8#line 1 "/usr/share/perl/5.14/Compress/Zlib.pm" package Compress::Zlib; require 5.004 ; require Exporter; use Carp ; use IO::Handle ; use Scalar::Util qw(dualvar); use IO::Compress::Base::Common 2.033 ; use Compress::Raw::Zlib 2.033 ; use IO::Compress::Gzip 2.033 ; use IO::Uncompress::Gunzip 2.033 ; use strict ; use warnings ; use bytes ; our ($VERSION, $XS_VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); $VERSION = '2.033'; $XS_VERSION = $VERSION; $VERSION = eval $VERSION; @ISA = qw(Exporter); # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. @EXPORT = qw( deflateInit inflateInit compress uncompress gzopen $gzerrno ); push @EXPORT, @Compress::Raw::Zlib::EXPORT ; @EXPORT_OK = qw(memGunzip memGzip zlib_version); %EXPORT_TAGS = ( ALL => \@EXPORT ); BEGIN { *zlib_version = \&Compress::Raw::Zlib::zlib_version; } use constant FLAG_APPEND => 1 ; use constant FLAG_CRC => 2 ; use constant FLAG_ADLER => 4 ; use constant FLAG_CONSUME_INPUT => 8 ; our (@my_z_errmsg); @my_z_errmsg = ( "need dictionary", # Z_NEED_DICT 2 "stream end", # Z_STREAM_END 1 "", # Z_OK 0 "file error", # Z_ERRNO (-1) "stream error", # Z_STREAM_ERROR (-2) "data error", # Z_DATA_ERROR (-3) "insufficient memory", # Z_MEM_ERROR (-4) "buffer error", # Z_BUF_ERROR (-5) "incompatible version",# Z_VERSION_ERROR(-6) ); sub _set_gzerr { my $value = shift ; if ($value == 0) { $Compress::Zlib::gzerrno = 0 ; } elsif ($value == Z_ERRNO() || $value > 2) { $Compress::Zlib::gzerrno = $! ; } else { $Compress::Zlib::gzerrno = dualvar($value+0, $my_z_errmsg[2 - $value]); } return $value ; } sub _set_gzerr_undef { _set_gzerr(@_); return undef; } sub _save_gzerr { my $gz = shift ; my $test_eof = shift ; my $value = $gz->errorNo() || 0 ; if ($test_eof) { #my $gz = $self->[0] ; # gzread uses Z_STREAM_END to denote a successful end $value = Z_STREAM_END() if $gz->eof() && $value == 0 ; } _set_gzerr($value) ; } sub gzopen($$) { my ($file, $mode) = @_ ; my $gz ; my %defOpts = (Level => Z_DEFAULT_COMPRESSION(), Strategy => Z_DEFAULT_STRATEGY(), ); my $writing ; $writing = ! ($mode =~ /r/i) ; $writing = ($mode =~ /[wa]/i) ; $defOpts{Level} = $1 if $mode =~ /(\d)/; $defOpts{Strategy} = Z_FILTERED() if $mode =~ /f/i; $defOpts{Strategy} = Z_HUFFMAN_ONLY() if $mode =~ /h/i; $defOpts{Append} = 1 if $mode =~ /a/i; my $infDef = $writing ? 'deflate' : 'inflate'; my @params = () ; croak "gzopen: file parameter is not a filehandle or filename" unless isaFilehandle $file || isaFilename $file || (ref $file && ref $file eq 'SCALAR'); return undef unless $mode =~ /[rwa]/i ; _set_gzerr(0) ; if ($writing) { $gz = new IO::Compress::Gzip($file, Minimal => 1, AutoClose => 1, %defOpts) or $Compress::Zlib::gzerrno = $IO::Compress::Gzip::GzipError; } else { $gz = new IO::Uncompress::Gunzip($file, Transparent => 1, Append => 0, AutoClose => 1, MultiStream => 1, Strict => 0) or $Compress::Zlib::gzerrno = $IO::Uncompress::Gunzip::GunzipError; } return undef if ! defined $gz ; bless [$gz, $infDef], 'Compress::Zlib::gzFile'; } sub Compress::Zlib::gzFile::gzread { my $self = shift ; return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'inflate'; my $len = defined $_[1] ? $_[1] : 4096 ; if ($self->gzeof() || $len == 0) { # Zap the output buffer to match ver 1 behaviour. $_[0] = "" ; return 0 ; } my $gz = $self->[0] ; my $status = $gz->read($_[0], $len) ; _save_gzerr($gz, 1); return $status ; } sub Compress::Zlib::gzFile::gzreadline { my $self = shift ; my $gz = $self->[0] ; { # Maintain backward compatibility with 1.x behaviour # It didn't support $/, so this can't either. local $/ = "\n" ; $_[0] = $gz->getline() ; } _save_gzerr($gz, 1); return defined $_[0] ? length $_[0] : 0 ; } sub Compress::Zlib::gzFile::gzwrite { my $self = shift ; my $gz = $self->[0] ; return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'deflate'; $] >= 5.008 and (utf8::downgrade($_[0], 1) or croak "Wide character in gzwrite"); my $status = $gz->write($_[0]) ; _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gztell { my $self = shift ; my $gz = $self->[0] ; my $status = $gz->tell() ; _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzseek { my $self = shift ; my $offset = shift ; my $whence = shift ; my $gz = $self->[0] ; my $status ; eval { $status = $gz->seek($offset, $whence) ; }; if ($@) { my $error = $@; $error =~ s/^.*: /gzseek: /; $error =~ s/ at .* line \d+\s*$//; croak $error; } _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzflush { my $self = shift ; my $f = shift ; my $gz = $self->[0] ; my $status = $gz->flush($f) ; my $err = _save_gzerr($gz); return $status ? 0 : $err; } sub Compress::Zlib::gzFile::gzclose { my $self = shift ; my $gz = $self->[0] ; my $status = $gz->close() ; my $err = _save_gzerr($gz); return $status ? 0 : $err; } sub Compress::Zlib::gzFile::gzeof { my $self = shift ; my $gz = $self->[0] ; return 0 if $self->[1] ne 'inflate'; my $status = $gz->eof() ; _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzsetparams { my $self = shift ; croak "Usage: Compress::Zlib::gzFile::gzsetparams(file, level, strategy)" unless @_ eq 2 ; my $gz = $self->[0] ; my $level = shift ; my $strategy = shift; return _set_gzerr(Z_STREAM_ERROR()) if $self->[1] ne 'deflate'; my $status = *$gz->{Compress}->deflateParams(-Level => $level, -Strategy => $strategy); _save_gzerr($gz); return $status ; } sub Compress::Zlib::gzFile::gzerror { my $self = shift ; my $gz = $self->[0] ; return $Compress::Zlib::gzerrno ; } sub compress($;$) { my ($x, $output, $err, $in) =('', '', '', '') ; if (ref $_[0] ) { $in = $_[0] ; croak "not a scalar reference" unless ref $in eq 'SCALAR' ; } else { $in = \$_[0] ; } $] >= 5.008 and (utf8::downgrade($$in, 1) or croak "Wide character in compress"); my $level = (@_ == 2 ? $_[1] : Z_DEFAULT_COMPRESSION() ); $x = new Compress::Raw::Zlib::Deflate -AppendOutput => 1, -Level => $level or return undef ; $err = $x->deflate($in, $output) ; return undef unless $err == Z_OK() ; $err = $x->flush($output) ; return undef unless $err == Z_OK() ; return $output ; } sub uncompress($) { my ($x, $output, $err, $in) =('', '', '', '') ; if (ref $_[0] ) { $in = $_[0] ; croak "not a scalar reference" unless ref $in eq 'SCALAR' ; } else { $in = \$_[0] ; } $] >= 5.008 and (utf8::downgrade($$in, 1) or croak "Wide character in uncompress"); $x = new Compress::Raw::Zlib::Inflate -ConsumeInput => 0 or return undef ; $err = $x->inflate($in, $output) ; return undef unless $err == Z_STREAM_END() ; return $output ; } sub deflateInit(@) { my ($got) = ParseParameters(0, { 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'Level' => [1, 1, Parse_signed, Z_DEFAULT_COMPRESSION()], 'Method' => [1, 1, Parse_unsigned, Z_DEFLATED()], 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()], 'MemLevel' => [1, 1, Parse_unsigned, MAX_MEM_LEVEL()], 'Strategy' => [1, 1, Parse_unsigned, Z_DEFAULT_STRATEGY()], 'Dictionary' => [1, 1, Parse_any, ""], }, @_ ) ; croak "Compress::Zlib::deflateInit: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $obj ; my $status = 0 ; ($obj, $status) = Compress::Raw::Zlib::_deflateInit(0, $got->value('Level'), $got->value('Method'), $got->value('WindowBits'), $got->value('MemLevel'), $got->value('Strategy'), $got->value('Bufsize'), $got->value('Dictionary')) ; my $x = ($status == Z_OK() ? bless $obj, "Zlib::OldDeflate" : undef) ; return wantarray ? ($x, $status) : $x ; } sub inflateInit(@) { my ($got) = ParseParameters(0, { 'Bufsize' => [1, 1, Parse_unsigned, 4096], 'WindowBits' => [1, 1, Parse_signed, MAX_WBITS()], 'Dictionary' => [1, 1, Parse_any, ""], }, @_) ; croak "Compress::Zlib::inflateInit: Bufsize must be >= 1, you specified " . $got->value('Bufsize') unless $got->value('Bufsize') >= 1; my $status = 0 ; my $obj ; ($obj, $status) = Compress::Raw::Zlib::_inflateInit(FLAG_CONSUME_INPUT, $got->value('WindowBits'), $got->value('Bufsize'), $got->value('Dictionary')) ; my $x = ($status == Z_OK() ? bless $obj, "Zlib::OldInflate" : undef) ; wantarray ? ($x, $status) : $x ; } package Zlib::OldDeflate ; our (@ISA); @ISA = qw(Compress::Raw::Zlib::deflateStream); sub deflate { my $self = shift ; my $output ; my $status = $self->SUPER::deflate($_[0], $output) ; wantarray ? ($output, $status) : $output ; } sub flush { my $self = shift ; my $output ; my $flag = shift || Compress::Zlib::Z_FINISH(); my $status = $self->SUPER::flush($output, $flag) ; wantarray ? ($output, $status) : $output ; } package Zlib::OldInflate ; our (@ISA); @ISA = qw(Compress::Raw::Zlib::inflateStream); sub inflate { my $self = shift ; my $output ; my $status = $self->SUPER::inflate($_[0], $output) ; wantarray ? ($output, $status) : $output ; } package Compress::Zlib ; use IO::Compress::Gzip::Constants 2.033 ; sub memGzip($) { my $out; # if the deflation buffer isn't a reference, make it one my $string = (ref $_[0] ? $_[0] : \$_[0]) ; $] >= 5.008 and (utf8::downgrade($$string, 1) or croak "Wide character in memGzip"); _set_gzerr(0); if ( ! IO::Compress::Gzip::gzip($string, \$out, Minimal => 1) ) { $Compress::Zlib::gzerrno = $IO::Compress::Gzip::GzipError; return undef ; } return $out; } sub _removeGzipHeader($) { my $string = shift ; return Z_DATA_ERROR() if length($$string) < GZIP_MIN_HEADER_SIZE ; my ($magic1, $magic2, $method, $flags, $time, $xflags, $oscode) = unpack ('CCCCVCC', $$string); return Z_DATA_ERROR() unless $magic1 == GZIP_ID1 and $magic2 == GZIP_ID2 and $method == Z_DEFLATED() and !($flags & GZIP_FLG_RESERVED) ; substr($$string, 0, GZIP_MIN_HEADER_SIZE) = '' ; # skip extra field if ($flags & GZIP_FLG_FEXTRA) { return Z_DATA_ERROR() if length($$string) < GZIP_FEXTRA_HEADER_SIZE ; my ($extra_len) = unpack ('v', $$string); $extra_len += GZIP_FEXTRA_HEADER_SIZE; return Z_DATA_ERROR() if length($$string) < $extra_len ; substr($$string, 0, $extra_len) = ''; } # skip orig name if ($flags & GZIP_FLG_FNAME) { my $name_end = index ($$string, GZIP_NULL_BYTE); return Z_DATA_ERROR() if $name_end == -1 ; substr($$string, 0, $name_end + 1) = ''; } # skip comment if ($flags & GZIP_FLG_FCOMMENT) { my $comment_end = index ($$string, GZIP_NULL_BYTE); return Z_DATA_ERROR() if $comment_end == -1 ; substr($$string, 0, $comment_end + 1) = ''; } # skip header crc if ($flags & GZIP_FLG_FHCRC) { return Z_DATA_ERROR() if length ($$string) < GZIP_FHCRC_SIZE ; substr($$string, 0, GZIP_FHCRC_SIZE) = ''; } return Z_OK(); } sub _ret_gun_error { $Compress::Zlib::gzerrno = $IO::Uncompress::Gunzip::GunzipError; return undef; } sub memGunzip($) { # if the buffer isn't a reference, make it one my $string = (ref $_[0] ? $_[0] : \$_[0]); $] >= 5.008 and (utf8::downgrade($$string, 1) or croak "Wide character in memGunzip"); _set_gzerr(0); my $status = _removeGzipHeader($string) ; $status == Z_OK() or return _set_gzerr_undef($status); my $bufsize = length $$string > 4096 ? length $$string : 4096 ; my $x = new Compress::Raw::Zlib::Inflate({-WindowBits => - MAX_WBITS(), -Bufsize => $bufsize}) or return _ret_gun_error(); my $output = "" ; $status = $x->inflate($string, $output); if ( $status == Z_OK() ) { _set_gzerr(Z_DATA_ERROR()); return undef; } return _ret_gun_error() if ($status != Z_STREAM_END()); if (length $$string >= 8) { my ($crc, $len) = unpack ("VV", substr($$string, 0, 8)); substr($$string, 0, 8) = ''; return _set_gzerr_undef(Z_DATA_ERROR()) unless $len == length($output) and $crc == crc32($output); } else { $$string = ''; } return $output; } # Autoload methods go after __END__, and are processed by the autosplit program. 1; __END__ #line 1484 FILEc2caccfd/Digest/base.pm#line 1 "/usr/share/perl/5.14/Digest/base.pm" package Digest::base; use strict; use vars qw($VERSION); $VERSION = "1.16"; # subclass is supposed to implement at least these sub new; sub clone; sub add; sub digest; sub reset { my $self = shift; $self->new(@_); # ugly } sub addfile { my ($self, $handle) = @_; my $n; my $buf = ""; while (($n = read($handle, $buf, 4*1024))) { $self->add($buf); } unless (defined $n) { require Carp; Carp::croak("Read failed: $!"); } $self; } sub add_bits { my $self = shift; my $bits; my $nbits; if (@_ == 1) { my $arg = shift; $bits = pack("B*", $arg); $nbits = length($arg); } else { ($bits, $nbits) = @_; } if (($nbits % 8) != 0) { require Carp; Carp::croak("Number of bits must be multiple of 8 for this algorithm"); } return $self->add(substr($bits, 0, $nbits/8)); } sub hexdigest { my $self = shift; return unpack("H*", $self->digest(@_)); } sub b64digest { my $self = shift; require MIME::Base64; my $b64 = MIME::Base64::encode($self->digest(@_), ""); $b64 =~ s/=+$//; return $b64; } 1; __END__ #line 101FILEd6e7fc74/Exporter.pm y#line 1 "/usr/share/perl/5.14/Exporter.pm" package Exporter; require 5.006; # Be lean. #use strict; #no strict 'refs'; our $Debug = 0; our $ExportLevel = 0; our $Verbose ||= 0; our $VERSION = '5.64_03'; our (%Cache); sub as_heavy { require Exporter::Heavy; # Unfortunately, this does not work if the caller is aliased as *name = \&foo # Thus the need to create a lot of identical subroutines my $c = (caller(1))[3]; $c =~ s/.*:://; \&{"Exporter::Heavy::heavy_$c"}; } sub export { goto &{as_heavy()}; } sub import { my $pkg = shift; my $callpkg = caller($ExportLevel); if ($pkg eq "Exporter" and @_ and $_[0] eq "import") { *{$callpkg."::import"} = \&import; return; } # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-( my $exports = \@{"$pkg\::EXPORT"}; # But, avoid creating things if they don't exist, which saves a couple of # hundred bytes per package processed. my $fail = ${$pkg . '::'}{EXPORT_FAIL} && \@{"$pkg\::EXPORT_FAIL"}; return export $pkg, $callpkg, @_ if $Verbose or $Debug or $fail && @$fail > 1; my $export_cache = ($Cache{$pkg} ||= {}); my $args = @_ or @_ = @$exports; local $_; if ($args and not %$export_cache) { s/^&//, $export_cache->{$_} = 1 foreach (@$exports, @{"$pkg\::EXPORT_OK"}); } my $heavy; # Try very hard not to use {} and hence have to enter scope on the foreach # We bomb out of the loop with last as soon as heavy is set. if ($args or $fail) { ($heavy = (/\W/ or $args and not exists $export_cache->{$_} or $fail and @$fail and $_ eq $fail->[0])) and last foreach (@_); } else { ($heavy = /\W/) and last foreach (@_); } return export $pkg, $callpkg, ($args ? @_ : ()) if $heavy; local $SIG{__WARN__} = sub {require Carp; &Carp::carp} if not $SIG{__WARN__}; # shortcut for the common case of no type character *{"$callpkg\::$_"} = \&{"$pkg\::$_"} foreach @_; } # Default methods sub export_fail { my $self = shift; @_; } # Unfortunately, caller(1)[3] "does not work" if the caller is aliased as # *name = \&foo. Thus the need to create a lot of identical subroutines # Otherwise we could have aliased them to export(). sub export_to_level { goto &{as_heavy()}; } sub export_tags { goto &{as_heavy()}; } sub export_ok_tags { goto &{as_heavy()}; } sub require_version { goto &{as_heavy()}; } 1; __END__ FILEa0faf844/Exporter/Heavy.pm#line 1 "/usr/share/perl/5.14/Exporter/Heavy.pm" package Exporter::Heavy; use strict; no strict 'refs'; # On one line so MakeMaker will see it. require Exporter; our $VERSION = $Exporter::VERSION; # # We go to a lot of trouble not to 'require Carp' at file scope, # because Carp requires Exporter, and something has to give. # sub _rebuild_cache { my ($pkg, $exports, $cache) = @_; s/^&// foreach @$exports; @{$cache}{@$exports} = (1) x @$exports; my $ok = \@{"${pkg}::EXPORT_OK"}; if (@$ok) { s/^&// foreach @$ok; @{$cache}{@$ok} = (1) x @$ok; } } sub heavy_export { # First make import warnings look like they're coming from the "use". local $SIG{__WARN__} = sub { my $text = shift; if ($text =~ s/ at \S*Exporter\S*.pm line \d+.*\n//) { require Carp; local $Carp::CarpLevel = 1; # ignore package calling us too. Carp::carp($text); } else { warn $text; } }; local $SIG{__DIE__} = sub { require Carp; local $Carp::CarpLevel = 1; # ignore package calling us too. Carp::croak("$_[0]Illegal null symbol in \@${1}::EXPORT") if $_[0] =~ /^Unable to create sub named "(.*?)::"/; }; my($pkg, $callpkg, @imports) = @_; my($type, $sym, $cache_is_current, $oops); my($exports, $export_cache) = (\@{"${pkg}::EXPORT"}, $Exporter::Cache{$pkg} ||= {}); if (@imports) { if (!%$export_cache) { _rebuild_cache ($pkg, $exports, $export_cache); $cache_is_current = 1; } if (grep m{^[/!:]}, @imports) { my $tagsref = \%{"${pkg}::EXPORT_TAGS"}; my $tagdata; my %imports; my($remove, $spec, @names, @allexports); # negated first item implies starting with default set: unshift @imports, ':DEFAULT' if $imports[0] =~ m/^!/; foreach $spec (@imports){ $remove = $spec =~ s/^!//; if ($spec =~ s/^://){ if ($spec eq 'DEFAULT'){ @names = @$exports; } elsif ($tagdata = $tagsref->{$spec}) { @names = @$tagdata; } else { warn qq["$spec" is not defined in %${pkg}::EXPORT_TAGS]; ++$oops; next; } } elsif ($spec =~ m:^/(.*)/$:){ my $patn = $1; @allexports = keys %$export_cache unless @allexports; # only do keys once @names = grep(/$patn/, @allexports); # not anchored by default } else { @names = ($spec); # is a normal symbol name } warn "Import ".($remove ? "del":"add").": @names " if $Exporter::Verbose; if ($remove) { foreach $sym (@names) { delete $imports{$sym} } } else { @imports{@names} = (1) x @names; } } @imports = keys %imports; } my @carp; foreach $sym (@imports) { if (!$export_cache->{$sym}) { if ($sym =~ m/^\d/) { $pkg->VERSION($sym); # inherit from UNIVERSAL # If the version number was the only thing specified # then we should act as if nothing was specified: if (@imports == 1) { @imports = @$exports; last; } # We need a way to emulate 'use Foo ()' but still # allow an easy version check: "use Foo 1.23, ''"; if (@imports == 2 and !$imports[1]) { @imports = (); last; } } elsif ($sym !~ s/^&// || !$export_cache->{$sym}) { # Last chance - see if they've updated EXPORT_OK since we # cached it. unless ($cache_is_current) { %$export_cache = (); _rebuild_cache ($pkg, $exports, $export_cache); $cache_is_current = 1; } if (!$export_cache->{$sym}) { # accumulate the non-exports push @carp, qq["$sym" is not exported by the $pkg module\n]; $oops++; } } } } if ($oops) { require Carp; Carp::croak("@{carp}Can't continue after import errors"); } } else { @imports = @$exports; } my($fail, $fail_cache) = (\@{"${pkg}::EXPORT_FAIL"}, $Exporter::FailCache{$pkg} ||= {}); if (@$fail) { if (!%$fail_cache) { # Build cache of symbols. Optimise the lookup by adding # barewords twice... both with and without a leading &. # (Technique could be applied to $export_cache at cost of memory) my @expanded = map { /^\w/ ? ($_, '&'.$_) : $_ } @$fail; warn "${pkg}::EXPORT_FAIL cached: @expanded" if $Exporter::Verbose; @{$fail_cache}{@expanded} = (1) x @expanded; } my @failed; foreach $sym (@imports) { push(@failed, $sym) if $fail_cache->{$sym} } if (@failed) { @failed = $pkg->export_fail(@failed); foreach $sym (@failed) { require Carp; Carp::carp(qq["$sym" is not implemented by the $pkg module ], "on this architecture"); } if (@failed) { require Carp; Carp::croak("Can't continue after import errors"); } } } warn "Importing into $callpkg from $pkg: ", join(", ",sort @imports) if $Exporter::Verbose; foreach $sym (@imports) { # shortcut for the common case of no type character (*{"${callpkg}::$sym"} = \&{"${pkg}::$sym"}, next) unless $sym =~ s/^(\W)//; $type = $1; no warnings 'once'; *{"${callpkg}::$sym"} = $type eq '&' ? \&{"${pkg}::$sym"} : $type eq '$' ? \${"${pkg}::$sym"} : $type eq '@' ? \@{"${pkg}::$sym"} : $type eq '%' ? \%{"${pkg}::$sym"} : $type eq '*' ? *{"${pkg}::$sym"} : do { require Carp; Carp::croak("Can't export symbol: $type$sym") }; } } sub heavy_export_to_level { my $pkg = shift; my $level = shift; (undef) = shift; # XXX redundant arg my $callpkg = caller($level); $pkg->export($callpkg, @_); } # Utility functions sub _push_tags { my($pkg, $var, $syms) = @_; my @nontag = (); my $export_tags = \%{"${pkg}::EXPORT_TAGS"}; push(@{"${pkg}::$var"}, map { $export_tags->{$_} ? @{$export_tags->{$_}} : scalar(push(@nontag,$_),$_) } (@$syms) ? @$syms : keys %$export_tags); if (@nontag and $^W) { # This may change to a die one day require Carp; Carp::carp(join(", ", @nontag)." are not tags of $pkg"); } } sub heavy_require_version { my($self, $wanted) = @_; my $pkg = ref $self || $self; return ${pkg}->VERSION($wanted); } sub heavy_export_tags { _push_tags((caller)[0], "EXPORT", \@_); } sub heavy_export_ok_tags { _push_tags((caller)[0], "EXPORT_OK", \@_); } 1; FILE57828794/File/Basename.pm#line 1 "/usr/share/perl/5.14/File/Basename.pm" #line 36 package File::Basename; # File::Basename is used during the Perl build, when the re extension may # not be available, but we only actually need it if running under tainting. BEGIN { if (${^TAINT}) { require re; re->import('taint'); } } use strict; use 5.006; use warnings; our(@ISA, @EXPORT, $VERSION, $Fileparse_fstype, $Fileparse_igncase); require Exporter; @ISA = qw(Exporter); @EXPORT = qw(fileparse fileparse_set_fstype basename dirname); $VERSION = "2.82"; fileparse_set_fstype($^O); #line 102 sub fileparse { my($fullname,@suffices) = @_; unless (defined $fullname) { require Carp; Carp::croak("fileparse(): need a valid pathname"); } my $orig_type = ''; my($type,$igncase) = ($Fileparse_fstype, $Fileparse_igncase); my($taint) = substr($fullname,0,0); # Is $fullname tainted? if ($type eq "VMS" and $fullname =~ m{/} ) { # We're doing Unix emulation $orig_type = $type; $type = 'Unix'; } my($dirpath, $basename); if (grep { $type eq $_ } qw(MSDOS DOS MSWin32 Epoc)) { ($dirpath,$basename) = ($fullname =~ /^((?:.*[:\\\/])?)(.*)/s); $dirpath .= '.\\' unless $dirpath =~ /[\\\/]\z/; } elsif ($type eq "OS2") { ($dirpath,$basename) = ($fullname =~ m#^((?:.*[:\\/])?)(.*)#s); $dirpath = './' unless $dirpath; # Can't be 0 $dirpath .= '/' unless $dirpath =~ m#[\\/]\z#; } elsif ($type eq "MacOS") { ($dirpath,$basename) = ($fullname =~ /^(.*:)?(.*)/s); $dirpath = ':' unless $dirpath; } elsif ($type eq "AmigaOS") { ($dirpath,$basename) = ($fullname =~ /(.*[:\/])?(.*)/s); $dirpath = './' unless $dirpath; } elsif ($type eq 'VMS' ) { ($dirpath,$basename) = ($fullname =~ /^(.*[:>\]])?(.*)/s); $dirpath ||= ''; # should always be defined } else { # Default to Unix semantics. ($dirpath,$basename) = ($fullname =~ m{^(.*/)?(.*)}s); if ($orig_type eq 'VMS' and $fullname =~ m{^(/[^/]+/000000(/|$))(.*)}) { # dev:[000000] is top of VMS tree, similar to Unix '/' # so strip it off and treat the rest as "normal" my $devspec = $1; my $remainder = $3; ($dirpath,$basename) = ($remainder =~ m{^(.*/)?(.*)}s); $dirpath ||= ''; # should always be defined $dirpath = $devspec.$dirpath; } $dirpath = './' unless $dirpath; } my $tail = ''; my $suffix = ''; if (@suffices) { foreach $suffix (@suffices) { my $pat = ($igncase ? '(?i)' : '') . "($suffix)\$"; if ($basename =~ s/$pat//s) { $taint .= substr($suffix,0,0); $tail = $1 . $tail; } } } # Ensure taint is propagated from the path to its pieces. $tail .= $taint; wantarray ? ($basename .= $taint, $dirpath .= $taint, $tail) : ($basename .= $taint); } #line 212 sub basename { my($path) = shift; # From BSD basename(1) # The basename utility deletes any prefix ending with the last slash `/' # character present in string (after first stripping trailing slashes) _strip_trailing_sep($path); my($basename, $dirname, $suffix) = fileparse( $path, map("\Q$_\E",@_) ); # From BSD basename(1) # The suffix is not stripped if it is identical to the remaining # characters in string. if( length $suffix and !length $basename ) { $basename = $suffix; } # Ensure that basename '/' == '/' if( !length $basename ) { $basename = $dirname; } return $basename; } #line 281 sub dirname { my $path = shift; my($type) = $Fileparse_fstype; if( $type eq 'VMS' and $path =~ m{/} ) { # Parse as Unix local($File::Basename::Fileparse_fstype) = ''; return dirname($path); } my($basename, $dirname) = fileparse($path); if ($type eq 'VMS') { $dirname ||= $ENV{DEFAULT}; } elsif ($type eq 'MacOS') { if( !length($basename) && $dirname !~ /^[^:]+:\z/) { _strip_trailing_sep($dirname); ($basename,$dirname) = fileparse $dirname; } $dirname .= ":" unless $dirname =~ /:\z/; } elsif (grep { $type eq $_ } qw(MSDOS DOS MSWin32 OS2)) { _strip_trailing_sep($dirname); unless( length($basename) ) { ($basename,$dirname) = fileparse $dirname; _strip_trailing_sep($dirname); } } elsif ($type eq 'AmigaOS') { if ( $dirname =~ /:\z/) { return $dirname } chop $dirname; $dirname =~ s{[^:/]+\z}{} unless length($basename); } else { _strip_trailing_sep($dirname); unless( length($basename) ) { ($basename,$dirname) = fileparse $dirname; _strip_trailing_sep($dirname); } } $dirname; } # Strip the trailing path separator. sub _strip_trailing_sep { my $type = $Fileparse_fstype; if ($type eq 'MacOS') { $_[0] =~ s/([^:]):\z/$1/s; } elsif (grep { $type eq $_ } qw(MSDOS DOS MSWin32 OS2)) { $_[0] =~ s/([^:])[\\\/]*\z/$1/; } else { $_[0] =~ s{(.)/*\z}{$1}s; } } #line 369 BEGIN { my @Ignore_Case = qw(MacOS VMS AmigaOS OS2 RISCOS MSWin32 MSDOS DOS Epoc); my @Types = (@Ignore_Case, qw(Unix)); sub fileparse_set_fstype { my $old = $Fileparse_fstype; if (@_) { my $new_type = shift; $Fileparse_fstype = 'Unix'; # default foreach my $type (@Types) { $Fileparse_fstype = $type if $new_type =~ /^$type/i; } $Fileparse_igncase = (grep $Fileparse_fstype eq $_, @Ignore_Case) ? 1 : 0; } return $old; } } 1; #line 403FILE067a38ed/File/Copy.pm/#line 1 "/usr/share/perl/5.14/File/Copy.pm" # File/Copy.pm. Written in 1994 by Aaron Sherman . This # source code has been placed in the public domain by the author. # Please be kind and preserve the documentation. # # Additions copyright 1996 by Charles Bailey. Permission is granted # to distribute the revised code under the same terms as Perl itself. package File::Copy; use 5.006; use strict; use warnings; use File::Spec; use Config; # During perl build, we need File::Copy but Scalar::Util might not be built yet # And then we need these games to avoid loading overload, as that will # confuse miniperl during the bootstrap of perl. my $Scalar_Util_loaded = eval q{ require Scalar::Util; require overload; 1 }; our(@ISA, @EXPORT, @EXPORT_OK, $VERSION, $Too_Big, $Syscopy_is_copy); sub copy; sub syscopy; sub cp; sub mv; $VERSION = '2.21'; require Exporter; @ISA = qw(Exporter); @EXPORT = qw(copy move); @EXPORT_OK = qw(cp mv); $Too_Big = 1024 * 1024 * 2; sub croak { require Carp; goto &Carp::croak; } sub carp { require Carp; goto &Carp::carp; } # Look up the feature settings on VMS using VMS::Feature when available. my $use_vms_feature = 0; BEGIN { if ($^O eq 'VMS') { if (eval { local $SIG{__DIE__}; require VMS::Feature; }) { $use_vms_feature = 1; } } } # Need to look up the UNIX report mode. This may become a dynamic mode # in the future. sub _vms_unix_rpt { my $unix_rpt; if ($use_vms_feature) { $unix_rpt = VMS::Feature::current("filename_unix_report"); } else { my $env_unix_rpt = $ENV{'DECC$FILENAME_UNIX_REPORT'} || ''; $unix_rpt = $env_unix_rpt =~ /^[ET1]/i; } return $unix_rpt; } # Need to look up the EFS character set mode. This may become a dynamic # mode in the future. sub _vms_efs { my $efs; if ($use_vms_feature) { $efs = VMS::Feature::current("efs_charset"); } else { my $env_efs = $ENV{'DECC$EFS_CHARSET'} || ''; $efs = $env_efs =~ /^[ET1]/i; } return $efs; } sub _catname { my($from, $to) = @_; if (not defined &basename) { require File::Basename; import File::Basename 'basename'; } return File::Spec->catfile($to, basename($from)); } # _eq($from, $to) tells whether $from and $to are identical sub _eq { my ($from, $to) = map { $Scalar_Util_loaded && Scalar::Util::blessed($_) && overload::Method($_, q{""}) ? "$_" : $_ } (@_); return '' if ( (ref $from) xor (ref $to) ); return $from == $to if ref $from; return $from eq $to; } sub copy { croak("Usage: copy(FROM, TO [, BUFFERSIZE]) ") unless(@_ == 2 || @_ == 3); my $from = shift; my $to = shift; my $size; if (@_) { $size = shift(@_) + 0; croak("Bad buffer size for copy: $size\n") unless ($size > 0); } my $from_a_handle = (ref($from) ? (ref($from) eq 'GLOB' || UNIVERSAL::isa($from, 'GLOB') || UNIVERSAL::isa($from, 'IO::Handle')) : (ref(\$from) eq 'GLOB')); my $to_a_handle = (ref($to) ? (ref($to) eq 'GLOB' || UNIVERSAL::isa($to, 'GLOB') || UNIVERSAL::isa($to, 'IO::Handle')) : (ref(\$to) eq 'GLOB')); if (_eq($from, $to)) { # works for references, too carp("'$from' and '$to' are identical (not copied)"); # The "copy" was a success as the source and destination contain # the same data. return 1; } if ((($Config{d_symlink} && $Config{d_readlink}) || $Config{d_link}) && !($^O eq 'MSWin32' || $^O eq 'os2')) { my @fs = stat($from); if (@fs) { my @ts = stat($to); if (@ts && $fs[0] == $ts[0] && $fs[1] == $ts[1] && !-p $from) { carp("'$from' and '$to' are identical (not copied)"); return 0; } } } if (!$from_a_handle && !$to_a_handle && -d $to && ! -d $from) { $to = _catname($from, $to); } if (defined &syscopy && !$Syscopy_is_copy && !$to_a_handle && !($from_a_handle && $^O eq 'os2' ) # OS/2 cannot handle handles && !($from_a_handle && $^O eq 'mpeix') # and neither can MPE/iX. && !($from_a_handle && $^O eq 'MSWin32') && !($from_a_handle && $^O eq 'NetWare') ) { my $copy_to = $to; if ($^O eq 'VMS' && -e $from) { if (! -d $to && ! -d $from) { my $vms_efs = _vms_efs(); my $unix_rpt = _vms_unix_rpt(); my $unix_mode = 0; my $from_unix = 0; $from_unix = 1 if ($from =~ /^\.\.?$/); my $from_vms = 0; $from_vms = 1 if ($from =~ m#[\[<\]]#); # Need to know if we are in Unix mode. if ($from_vms == $from_unix) { $unix_mode = $unix_rpt; } else { $unix_mode = $from_unix; } # VMS has sticky defaults on extensions, which means that # if there is a null extension on the destination file, it # will inherit the extension of the source file # So add a '.' for a null extension. # In unix_rpt mode, the trailing dot should not be added. if ($vms_efs) { $copy_to = $to; } else { $copy_to = VMS::Filespec::vmsify($to); } my ($vol, $dirs, $file) = File::Spec->splitpath($copy_to); $file = $file . '.' unless (($file =~ /(?catpath($vol, $dirs, $file); # Get rid of the old versions to be like UNIX 1 while unlink $copy_to; } } return syscopy($from, $copy_to) || 0; } my $closefrom = 0; my $closeto = 0; my ($status, $r, $buf); local($\) = ''; my $from_h; if ($from_a_handle) { $from_h = $from; } else { open $from_h, "<", $from or goto fail_open1; binmode $from_h or die "($!,$^E)"; $closefrom = 1; } # Seems most logical to do this here, in case future changes would want to # make this croak for some reason. unless (defined $size) { $size = tied(*$from_h) ? 0 : -s $from_h || 0; $size = 1024 if ($size < 512); $size = $Too_Big if ($size > $Too_Big); } my $to_h; if ($to_a_handle) { $to_h = $to; } else { $to_h = \do { local *FH }; # XXX is this line obsolete? open $to_h, ">", $to or goto fail_open2; binmode $to_h or die "($!,$^E)"; $closeto = 1; } $! = 0; for (;;) { my ($r, $w, $t); defined($r = sysread($from_h, $buf, $size)) or goto fail_inner; last unless $r; for ($w = 0; $w < $r; $w += $t) { $t = syswrite($to_h, $buf, $r - $w, $w) or goto fail_inner; } } close($to_h) || goto fail_open2 if $closeto; close($from_h) || goto fail_open1 if $closefrom; # Use this idiom to avoid uninitialized value warning. return 1; # All of these contortions try to preserve error messages... fail_inner: if ($closeto) { $status = $!; $! = 0; close $to_h; $! = $status unless $!; } fail_open2: if ($closefrom) { $status = $!; $! = 0; close $from_h; $! = $status unless $!; } fail_open1: return 0; } sub cp { my($from,$to) = @_; my(@fromstat) = stat $from; my(@tostat) = stat $to; my $perm; return 0 unless copy(@_) and @fromstat; if (@tostat) { $perm = $tostat[2]; } else { $perm = $fromstat[2] & ~(umask || 0); @tostat = stat $to; } # Might be more robust to look for S_I* in Fcntl, but we're # trying to avoid dependence on any XS-containing modules, # since File::Copy is used during the Perl build. $perm &= 07777; if ($perm & 06000) { croak("Unable to check setuid/setgid permissions for $to: $!") unless @tostat; if ($perm & 04000 and # setuid $fromstat[4] != $tostat[4]) { # owner must match $perm &= ~06000; } if ($perm & 02000 && $> != 0) { # if not root, setgid my $ok = $fromstat[5] == $tostat[5]; # group must match if ($ok) { # and we must be in group $ok = grep { $_ == $fromstat[5] } split /\s+/, $) } $perm &= ~06000 unless $ok; } } return 0 unless @tostat; return 1 if $perm == ($tostat[2] & 07777); return eval { chmod $perm, $to; } ? 1 : 0; } sub _move { croak("Usage: move(FROM, TO) ") unless @_ == 3; my($from,$to,$fallback) = @_; my($fromsz,$tosz1,$tomt1,$tosz2,$tomt2,$sts,$ossts); if (-d $to && ! -d $from) { $to = _catname($from, $to); } ($tosz1,$tomt1) = (stat($to))[7,9]; $fromsz = -s $from; if ($^O eq 'os2' and defined $tosz1 and defined $fromsz) { # will not rename with overwrite unlink $to; } my $rename_to = $to; if (-$^O eq 'VMS' && -e $from) { if (! -d $to && ! -d $from) { my $vms_efs = _vms_efs(); my $unix_rpt = _vms_unix_rpt(); my $unix_mode = 0; my $from_unix = 0; $from_unix = 1 if ($from =~ /^\.\.?$/); my $from_vms = 0; $from_vms = 1 if ($from =~ m#[\[<\]]#); # Need to know if we are in Unix mode. if ($from_vms == $from_unix) { $unix_mode = $unix_rpt; } else { $unix_mode = $from_unix; } # VMS has sticky defaults on extensions, which means that # if there is a null extension on the destination file, it # will inherit the extension of the source file # So add a '.' for a null extension. # In unix_rpt mode, the trailing dot should not be added. if ($vms_efs) { $rename_to = $to; } else { $rename_to = VMS::Filespec::vmsify($to); } my ($vol, $dirs, $file) = File::Spec->splitpath($rename_to); $file = $file . '.' unless (($file =~ /(?catpath($vol, $dirs, $file); # Get rid of the old versions to be like UNIX 1 while unlink $rename_to; } } return 1 if rename $from, $rename_to; # Did rename return an error even though it succeeded, because $to # is on a remote NFS file system, and NFS lost the server's ack? return 1 if defined($fromsz) && !-e $from && # $from disappeared (($tosz2,$tomt2) = (stat($to))[7,9]) && # $to's there ((!defined $tosz1) || # not before or ($tosz1 != $tosz2 or $tomt1 != $tomt2)) && # was changed $tosz2 == $fromsz; # it's all there ($tosz1,$tomt1) = (stat($to))[7,9]; # just in case rename did something { local $@; eval { local $SIG{__DIE__}; $fallback->($from,$to) or die; my($atime, $mtime) = (stat($from))[8,9]; utime($atime, $mtime, $to); unlink($from) or die; }; return 1 unless $@; } ($sts,$ossts) = ($! + 0, $^E + 0); ($tosz2,$tomt2) = ((stat($to))[7,9],0,0) if defined $tomt1; unlink($to) if !defined($tomt1) or $tomt1 != $tomt2 or $tosz1 != $tosz2; ($!,$^E) = ($sts,$ossts); return 0; } sub move { _move(@_,\©); } sub mv { _move(@_,\&cp); } # &syscopy is an XSUB under OS/2 unless (defined &syscopy) { if ($^O eq 'VMS') { *syscopy = \&rmscopy; } elsif ($^O eq 'mpeix') { *syscopy = sub { return 0 unless @_ == 2; # Use the MPE cp program in order to # preserve MPE file attributes. return system('/bin/cp', '-f', $_[0], $_[1]) == 0; }; } elsif ($^O eq 'MSWin32' && defined &DynaLoader::boot_DynaLoader) { # Win32::CopyFile() fill only work if we can load Win32.xs *syscopy = sub { return 0 unless @_ == 2; return Win32::CopyFile(@_, 1); }; } else { $Syscopy_is_copy = 1; *syscopy = \© } } 1; __END__ #line 596 FILEfed3b8b3/File/Find.pmT#line 1 "/usr/share/perl/5.14/File/Find.pm" package File::Find; use 5.006; use strict; use warnings; use warnings::register; our $VERSION = '1.19'; require Exporter; require Cwd; # # Modified to ensure sub-directory traversal order is not inverted by stack # push and pops. That is remains in the same order as in the directory file, # or user pre-processing (EG:sorted). # #line 344 our @ISA = qw(Exporter); our @EXPORT = qw(find finddepth); use strict; my $Is_VMS; my $Is_Win32; require File::Basename; require File::Spec; # Should ideally be my() not our() but local() currently # refuses to operate on lexicals our %SLnkSeen; our ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow, $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat, $pre_process, $post_process, $dangling_symlinks); sub contract_name { my ($cdir,$fn) = @_; return substr($cdir,0,rindex($cdir,'/')) if $fn eq $File::Find::current_dir; $cdir = substr($cdir,0,rindex($cdir,'/')+1); $fn =~ s|^\./||; my $abs_name= $cdir . $fn; if (substr($fn,0,3) eq '../') { 1 while $abs_name =~ s!/[^/]*/\.\./+!/!; } return $abs_name; } sub PathCombine($$) { my ($Base,$Name) = @_; my $AbsName; if (substr($Name,0,1) eq '/') { $AbsName= $Name; } else { $AbsName= contract_name($Base,$Name); } # (simple) check for recursion my $newlen= length($AbsName); if ($newlen <= length($Base)) { if (($newlen == length($Base) || substr($Base,$newlen,1) eq '/') && $AbsName eq substr($Base,0,$newlen)) { return undef; } } return $AbsName; } sub Follow_SymLink($) { my ($AbsName) = @_; my ($NewName,$DEV, $INO); ($DEV, $INO)= lstat $AbsName; while (-l _) { if ($SLnkSeen{$DEV, $INO}++) { if ($follow_skip < 2) { die "$AbsName is encountered a second time"; } else { return undef; } } $NewName= PathCombine($AbsName, readlink($AbsName)); unless(defined $NewName) { if ($follow_skip < 2) { die "$AbsName is a recursive symbolic link"; } else { return undef; } } else { $AbsName= $NewName; } ($DEV, $INO) = lstat($AbsName); return undef unless defined $DEV; # dangling symbolic link } if ($full_check && defined $DEV && $SLnkSeen{$DEV, $INO}++) { if ( ($follow_skip < 1) || ((-d _) && ($follow_skip < 2)) ) { die "$AbsName encountered a second time"; } else { return undef; } } return $AbsName; } our($dir, $name, $fullname, $prune); sub _find_dir_symlnk($$$); sub _find_dir($$$); # check whether or not a scalar variable is tainted # (code straight from the Camel, 3rd ed., page 561) sub is_tainted_pp { my $arg = shift; my $nada = substr($arg, 0, 0); # zero-length local $@; eval { eval "# $nada" }; return length($@) != 0; } sub _find_opt { my $wanted = shift; die "invalid top directory" unless defined $_[0]; # This function must local()ize everything because callbacks may # call find() or finddepth() local %SLnkSeen; local ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow, $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat, $pre_process, $post_process, $dangling_symlinks); local($dir, $name, $fullname, $prune); local *_ = \my $a; my $cwd = $wanted->{bydepth} ? Cwd::fastcwd() : Cwd::getcwd(); if ($Is_VMS) { # VMS returns this by default in VMS format which just doesn't # work for the rest of this module. $cwd = VMS::Filespec::unixpath($cwd); # Apparently this is not expected to have a trailing space. # To attempt to make VMS/UNIX conversions mostly reversable, # a trailing slash is needed. The run-time functions ignore the # resulting double slash, but it causes the perl tests to fail. $cwd =~ s#/\z##; # This comes up in upper case now, but should be lower. # In the future this could be exact case, no need to change. } my $cwd_untainted = $cwd; my $check_t_cwd = 1; $wanted_callback = $wanted->{wanted}; $bydepth = $wanted->{bydepth}; $pre_process = $wanted->{preprocess}; $post_process = $wanted->{postprocess}; $no_chdir = $wanted->{no_chdir}; $full_check = $Is_Win32 ? 0 : $wanted->{follow}; $follow = $Is_Win32 ? 0 : $full_check || $wanted->{follow_fast}; $follow_skip = $wanted->{follow_skip}; $untaint = $wanted->{untaint}; $untaint_pat = $wanted->{untaint_pattern}; $untaint_skip = $wanted->{untaint_skip}; $dangling_symlinks = $wanted->{dangling_symlinks}; # for compatibility reasons (find.pl, find2perl) local our ($topdir, $topdev, $topino, $topmode, $topnlink); # a symbolic link to a directory doesn't increase the link count $avoid_nlink = $follow || $File::Find::dont_use_nlink; my ($abs_dir, $Is_Dir); Proc_Top_Item: foreach my $TOP (@_) { my $top_item = $TOP; ($topdev,$topino,$topmode,$topnlink) = $follow ? stat $top_item : lstat $top_item; if ($Is_Win32) { $top_item =~ s|[/\\]\z|| unless $top_item =~ m{^(?:\w:)?[/\\]$}; } else { $top_item =~ s|/\z|| unless $top_item eq '/'; } $Is_Dir= 0; if ($follow) { if (substr($top_item,0,1) eq '/') { $abs_dir = $top_item; } elsif ($top_item eq $File::Find::current_dir) { $abs_dir = $cwd; } else { # care about any ../ $top_item =~ s/\.dir\z//i if $Is_VMS; $abs_dir = contract_name("$cwd/",$top_item); } $abs_dir= Follow_SymLink($abs_dir); unless (defined $abs_dir) { if ($dangling_symlinks) { if (ref $dangling_symlinks eq 'CODE') { $dangling_symlinks->($top_item, $cwd); } else { warnings::warnif "$top_item is a dangling symbolic link\n"; } } next Proc_Top_Item; } if (-d _) { $top_item =~ s/\.dir\z//i if $Is_VMS; _find_dir_symlnk($wanted, $abs_dir, $top_item); $Is_Dir= 1; } } else { # no follow $topdir = $top_item; unless (defined $topnlink) { warnings::warnif "Can't stat $top_item: $!\n"; next Proc_Top_Item; } if (-d _) { $top_item =~ s/\.dir\z//i if $Is_VMS; _find_dir($wanted, $top_item, $topnlink); $Is_Dir= 1; } else { $abs_dir= $top_item; } } unless ($Is_Dir) { unless (($_,$dir) = File::Basename::fileparse($abs_dir)) { ($dir,$_) = ('./', $top_item); } $abs_dir = $dir; if (( $untaint ) && (is_tainted($dir) )) { ( $abs_dir ) = $dir =~ m|$untaint_pat|; unless (defined $abs_dir) { if ($untaint_skip == 0) { die "directory $dir is still tainted"; } else { next Proc_Top_Item; } } } unless ($no_chdir || chdir $abs_dir) { warnings::warnif "Couldn't chdir $abs_dir: $!\n"; next Proc_Top_Item; } $name = $abs_dir . $_; # $File::Find::name $_ = $name if $no_chdir; { $wanted_callback->() }; # protect against wild "next" } unless ( $no_chdir ) { if ( ($check_t_cwd) && (($untaint) && (is_tainted($cwd) )) ) { ( $cwd_untainted ) = $cwd =~ m|$untaint_pat|; unless (defined $cwd_untainted) { die "insecure cwd in find(depth)"; } $check_t_cwd = 0; } unless (chdir $cwd_untainted) { die "Can't cd to $cwd: $!\n"; } } } } # API: # $wanted # $p_dir : "parent directory" # $nlink : what came back from the stat # preconditions: # chdir (if not no_chdir) to dir sub _find_dir($$$) { my ($wanted, $p_dir, $nlink) = @_; my ($CdLvl,$Level) = (0,0); my @Stack; my @filenames; my ($subcount,$sub_nlink); my $SE= []; my $dir_name= $p_dir; my $dir_pref; my $dir_rel = $File::Find::current_dir; my $tainted = 0; my $no_nlink; if ($Is_Win32) { $dir_pref = ($p_dir =~ m{^(?:\w:[/\\]?|[/\\])$} ? $p_dir : "$p_dir/" ); } elsif ($Is_VMS) { # VMS is returning trailing .dir on directories # and trailing . on files and symbolic links # in UNIX syntax. # $p_dir =~ s/\.(dir)?$//i unless $p_dir eq '.'; $dir_pref = ($p_dir =~ m/[\]>]+$/ ? $p_dir : "$p_dir/" ); } else { $dir_pref= ( $p_dir eq '/' ? '/' : "$p_dir/" ); } local ($dir, $name, $prune, *DIR); unless ( $no_chdir || ($p_dir eq $File::Find::current_dir)) { my $udir = $p_dir; if (( $untaint ) && (is_tainted($p_dir) )) { ( $udir ) = $p_dir =~ m|$untaint_pat|; unless (defined $udir) { if ($untaint_skip == 0) { die "directory $p_dir is still tainted"; } else { return; } } } unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) { warnings::warnif "Can't cd to $udir: $!\n"; return; } } # push the starting directory push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth; while (defined $SE) { unless ($bydepth) { $dir= $p_dir; # $File::Find::dir $name= $dir_name; # $File::Find::name $_= ($no_chdir ? $dir_name : $dir_rel ); # $_ # prune may happen here $prune= 0; { $wanted_callback->() }; # protect against wild "next" next if $prune; } # change to that directory unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { my $udir= $dir_rel; if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_rel) )) ) { ( $udir ) = $dir_rel =~ m|$untaint_pat|; unless (defined $udir) { if ($untaint_skip == 0) { die "directory (" . ($p_dir ne '/' ? $p_dir : '') . "/) $dir_rel is still tainted"; } else { # $untaint_skip == 1 next; } } } unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) { warnings::warnif "Can't cd to (" . ($p_dir ne '/' ? $p_dir : '') . "/) $udir: $!\n"; next; } $CdLvl++; } $dir= $dir_name; # $File::Find::dir # Get the list of files in the current directory. unless (opendir DIR, ($no_chdir ? $dir_name : $File::Find::current_dir)) { warnings::warnif "Can't opendir($dir_name): $!\n"; next; } @filenames = readdir DIR; closedir(DIR); @filenames = $pre_process->(@filenames) if $pre_process; push @Stack,[$CdLvl,$dir_name,"",-2] if $post_process; # default: use whatever was specified # (if $nlink >= 2, and $avoid_nlink == 0, this will switch back) $no_nlink = $avoid_nlink; # if dir has wrong nlink count, force switch to slower stat method $no_nlink = 1 if ($nlink < 2); if ($nlink == 2 && !$no_nlink) { # This dir has no subdirectories. for my $FN (@filenames) { if ($Is_VMS) { # Big hammer here - Compensate for VMS trailing . and .dir # No win situation until this is changed, but this # will handle the majority of the cases with breaking the fewest $FN =~ s/\.dir\z//i; $FN =~ s#\.$## if ($FN ne '.'); } next if $FN =~ $File::Find::skip_pattern; $name = $dir_pref . $FN; # $File::Find::name $_ = ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } else { # This dir has subdirectories. $subcount = $nlink - 2; # HACK: insert directories at this position. so as to preserve # the user pre-processed ordering of files. # EG: directory traversal is in user sorted order, not at random. my $stack_top = @Stack; for my $FN (@filenames) { next if $FN =~ $File::Find::skip_pattern; if ($subcount > 0 || $no_nlink) { # Seen all the subdirs? # check for directoriness. # stat is faster for a file in the current directory $sub_nlink = (lstat ($no_chdir ? $dir_pref . $FN : $FN))[3]; if (-d _) { --$subcount; $FN =~ s/\.dir\z//i if $Is_VMS; # HACK: replace push to preserve dir traversal order #push @Stack,[$CdLvl,$dir_name,$FN,$sub_nlink]; splice @Stack, $stack_top, 0, [$CdLvl,$dir_name,$FN,$sub_nlink]; } else { $name = $dir_pref . $FN; # $File::Find::name $_= ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } else { $name = $dir_pref . $FN; # $File::Find::name $_= ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } } } continue { while ( defined ($SE = pop @Stack) ) { ($Level, $p_dir, $dir_rel, $nlink) = @$SE; if ($CdLvl > $Level && !$no_chdir) { my $tmp; if ($Is_VMS) { $tmp = '[' . ('-' x ($CdLvl-$Level)) . ']'; } else { $tmp = join('/',('..') x ($CdLvl-$Level)); } die "Can't cd to $tmp from $dir_name" unless chdir ($tmp); $CdLvl = $Level; } if ($Is_Win32) { $dir_name = ($p_dir =~ m{^(?:\w:[/\\]?|[/\\])$} ? "$p_dir$dir_rel" : "$p_dir/$dir_rel"); $dir_pref = "$dir_name/"; } elsif ($^O eq 'VMS') { if ($p_dir =~ m/[\]>]+$/) { $dir_name = $p_dir; $dir_name =~ s/([\]>]+)$/.$dir_rel$1/; $dir_pref = $dir_name; } else { $dir_name = "$p_dir/$dir_rel"; $dir_pref = "$dir_name/"; } } else { $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel"); $dir_pref = "$dir_name/"; } if ( $nlink == -2 ) { $name = $dir = $p_dir; # $File::Find::name / dir $_ = $File::Find::current_dir; $post_process->(); # End-of-directory processing } elsif ( $nlink < 0 ) { # must be finddepth, report dirname now $name = $dir_name; if ( substr($name,-2) eq '/.' ) { substr($name, length($name) == 2 ? -1 : -2) = ''; } $dir = $p_dir; $_ = ($no_chdir ? $dir_name : $dir_rel ); if ( substr($_,-2) eq '/.' ) { substr($_, length($_) == 2 ? -1 : -2) = ''; } { $wanted_callback->() }; # protect against wild "next" } else { push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth; last; } } } } # API: # $wanted # $dir_loc : absolute location of a dir # $p_dir : "parent directory" # preconditions: # chdir (if not no_chdir) to dir sub _find_dir_symlnk($$$) { my ($wanted, $dir_loc, $p_dir) = @_; # $dir_loc is the absolute directory my @Stack; my @filenames; my $new_loc; my $updir_loc = $dir_loc; # untainted parent directory my $SE = []; my $dir_name = $p_dir; my $dir_pref; my $loc_pref; my $dir_rel = $File::Find::current_dir; my $byd_flag; # flag for pending stack entry if $bydepth my $tainted = 0; my $ok = 1; $dir_pref = ( $p_dir eq '/' ? '/' : "$p_dir/" ); $loc_pref = ( $dir_loc eq '/' ? '/' : "$dir_loc/" ); local ($dir, $name, $fullname, $prune, *DIR); unless ($no_chdir) { # untaint the topdir if (( $untaint ) && (is_tainted($dir_loc) )) { ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; # parent dir, now untainted # once untainted, $updir_loc is pushed on the stack (as parent directory); # hence, we don't need to untaint the parent directory every time we chdir # to it later unless (defined $updir_loc) { if ($untaint_skip == 0) { die "directory $dir_loc is still tainted"; } else { return; } } } $ok = chdir($updir_loc) unless ($p_dir eq $File::Find::current_dir); unless ($ok) { warnings::warnif "Can't cd to $updir_loc: $!\n"; return; } } push @Stack,[$dir_loc,$updir_loc,$p_dir,$dir_rel,-1] if $bydepth; while (defined $SE) { unless ($bydepth) { # change (back) to parent directory (always untainted) unless ($no_chdir) { unless (chdir $updir_loc) { warnings::warnif "Can't cd to $updir_loc: $!\n"; next; } } $dir= $p_dir; # $File::Find::dir $name= $dir_name; # $File::Find::name $_= ($no_chdir ? $dir_name : $dir_rel ); # $_ $fullname= $dir_loc; # $File::Find::fullname # prune may happen here $prune= 0; lstat($_); # make sure file tests with '_' work { $wanted_callback->() }; # protect against wild "next" next if $prune; } # change to that directory unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { $updir_loc = $dir_loc; if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_loc) )) ) { # untaint $dir_loc, what will be pushed on the stack as (untainted) parent dir ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; unless (defined $updir_loc) { if ($untaint_skip == 0) { die "directory $dir_loc is still tainted"; } else { next; } } } unless (chdir $updir_loc) { warnings::warnif "Can't cd to $updir_loc: $!\n"; next; } } $dir = $dir_name; # $File::Find::dir # Get the list of files in the current directory. unless (opendir DIR, ($no_chdir ? $dir_loc : $File::Find::current_dir)) { warnings::warnif "Can't opendir($dir_loc): $!\n"; next; } @filenames = readdir DIR; closedir(DIR); for my $FN (@filenames) { if ($Is_VMS) { # Big hammer here - Compensate for VMS trailing . and .dir # No win situation until this is changed, but this # will handle the majority of the cases with breaking the fewest. $FN =~ s/\.dir\z//i; $FN =~ s#\.$## if ($FN ne '.'); } next if $FN =~ $File::Find::skip_pattern; # follow symbolic links / do an lstat $new_loc = Follow_SymLink($loc_pref.$FN); # ignore if invalid symlink unless (defined $new_loc) { if (!defined -l _ && $dangling_symlinks) { if (ref $dangling_symlinks eq 'CODE') { $dangling_symlinks->($FN, $dir_pref); } else { warnings::warnif "$dir_pref$FN is a dangling symbolic link\n"; } } $fullname = undef; $name = $dir_pref . $FN; $_ = ($no_chdir ? $name : $FN); { $wanted_callback->() }; next; } if (-d _) { if ($Is_VMS) { $FN =~ s/\.dir\z//i; $FN =~ s#\.$## if ($FN ne '.'); $new_loc =~ s/\.dir\z//i; $new_loc =~ s#\.$## if ($new_loc ne '.'); } push @Stack,[$new_loc,$updir_loc,$dir_name,$FN,1]; } else { $fullname = $new_loc; # $File::Find::fullname $name = $dir_pref . $FN; # $File::Find::name $_ = ($no_chdir ? $name : $FN); # $_ { $wanted_callback->() }; # protect against wild "next" } } } continue { while (defined($SE = pop @Stack)) { ($dir_loc, $updir_loc, $p_dir, $dir_rel, $byd_flag) = @$SE; $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel"); $dir_pref = "$dir_name/"; $loc_pref = "$dir_loc/"; if ( $byd_flag < 0 ) { # must be finddepth, report dirname now unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) { unless (chdir $updir_loc) { # $updir_loc (parent dir) is always untainted warnings::warnif "Can't cd to $updir_loc: $!\n"; next; } } $fullname = $dir_loc; # $File::Find::fullname $name = $dir_name; # $File::Find::name if ( substr($name,-2) eq '/.' ) { substr($name, length($name) == 2 ? -1 : -2) = ''; # $File::Find::name } $dir = $p_dir; # $File::Find::dir $_ = ($no_chdir ? $dir_name : $dir_rel); # $_ if ( substr($_,-2) eq '/.' ) { substr($_, length($_) == 2 ? -1 : -2) = ''; } lstat($_); # make sure file tests with '_' work { $wanted_callback->() }; # protect against wild "next" } else { push @Stack,[$dir_loc, $updir_loc, $p_dir, $dir_rel,-1] if $bydepth; last; } } } } sub wrap_wanted { my $wanted = shift; if ( ref($wanted) eq 'HASH' ) { unless( exists $wanted->{wanted} and ref( $wanted->{wanted} ) eq 'CODE' ) { die 'no &wanted subroutine given'; } if ( $wanted->{follow} || $wanted->{follow_fast}) { $wanted->{follow_skip} = 1 unless defined $wanted->{follow_skip}; } if ( $wanted->{untaint} ) { $wanted->{untaint_pattern} = $File::Find::untaint_pattern unless defined $wanted->{untaint_pattern}; $wanted->{untaint_skip} = 0 unless defined $wanted->{untaint_skip}; } return $wanted; } elsif( ref( $wanted ) eq 'CODE' ) { return { wanted => $wanted }; } else { die 'no &wanted subroutine given'; } } sub find { my $wanted = shift; _find_opt(wrap_wanted($wanted), @_); } sub finddepth { my $wanted = wrap_wanted(shift); $wanted->{bydepth} = 1; _find_opt($wanted, @_); } # default $File::Find::skip_pattern = qr/^\.{1,2}\z/; $File::Find::untaint_pattern = qr|^([-+@\w./]+)$|; # These are hard-coded for now, but may move to hint files. if ($^O eq 'VMS') { $Is_VMS = 1; $File::Find::dont_use_nlink = 1; } elsif ($^O eq 'MSWin32') { $Is_Win32 = 1; } # this _should_ work properly on all platforms # where File::Find can be expected to work $File::Find::current_dir = File::Spec->curdir || '.'; $File::Find::dont_use_nlink = 1 if $^O eq 'os2' || $^O eq 'dos' || $^O eq 'amigaos' || $Is_Win32 || $^O eq 'interix' || $^O eq 'cygwin' || $^O eq 'epoc' || $^O eq 'qnx' || $^O eq 'nto'; # Set dont_use_nlink in your hint file if your system's stat doesn't # report the number of links in a directory as an indication # of the number of files. # See, e.g. hints/machten.sh for MachTen 2.2. unless ($File::Find::dont_use_nlink) { require Config; $File::Find::dont_use_nlink = 1 if ($Config::Config{'dont_use_nlink'}); } # We need a function that checks if a scalar is tainted. Either use the # Scalar::Util module's tainted() function or our (slower) pure Perl # fallback is_tainted_pp() { local $@; eval { require Scalar::Util }; *is_tainted = $@ ? \&is_tainted_pp : \&Scalar::Util::tainted; } 1; FILE07d43f51/File/GlobMapper.pm#line 1 "/usr/share/perl/5.14/File/GlobMapper.pm" package File::GlobMapper; use strict; use warnings; use Carp; our ($CSH_GLOB); BEGIN { if ($] < 5.006) { require File::BSDGlob; import File::BSDGlob qw(:glob) ; $CSH_GLOB = File::BSDGlob::GLOB_CSH() ; *globber = \&File::BSDGlob::csh_glob; } else { require File::Glob; import File::Glob qw(:glob) ; $CSH_GLOB = File::Glob::GLOB_CSH() ; #*globber = \&File::Glob::bsd_glob; *globber = \&File::Glob::csh_glob; } } our ($Error); our ($VERSION, @EXPORT_OK); $VERSION = '1.000'; @EXPORT_OK = qw( globmap ); our ($noPreBS, $metachars, $matchMetaRE, %mapping, %wildCount); $noPreBS = '(? '([^/]*)', '?' => '([^/])', '.' => '\.', '[' => '([', '(' => '(', ')' => ')', ); %wildCount = map { $_ => 1 } qw/ * ? . { ( [ /; sub globmap ($$;) { my $inputGlob = shift ; my $outputGlob = shift ; my $obj = new File::GlobMapper($inputGlob, $outputGlob, @_) or croak "globmap: $Error" ; return $obj->getFileMap(); } sub new { my $class = shift ; my $inputGlob = shift ; my $outputGlob = shift ; # TODO -- flags needs to default to whatever File::Glob does my $flags = shift || $CSH_GLOB ; #my $flags = shift ; $inputGlob =~ s/^\s*\<\s*//; $inputGlob =~ s/\s*\>\s*$//; $outputGlob =~ s/^\s*\<\s*//; $outputGlob =~ s/\s*\>\s*$//; my %object = ( InputGlob => $inputGlob, OutputGlob => $outputGlob, GlobFlags => $flags, Braces => 0, WildCount => 0, Pairs => [], Sigil => '#', ); my $self = bless \%object, ref($class) || $class ; $self->_parseInputGlob() or return undef ; $self->_parseOutputGlob() or return undef ; my @inputFiles = globber($self->{InputGlob}, $flags) ; if (GLOB_ERROR) { $Error = $!; return undef ; } #if (whatever) { my $missing = grep { ! -e $_ } @inputFiles ; if ($missing) { $Error = "$missing input files do not exist"; return undef ; } } $self->{InputFiles} = \@inputFiles ; $self->_getFiles() or return undef ; return $self; } sub _retError { my $string = shift ; $Error = "$string in input fileglob" ; return undef ; } sub _unmatched { my $delimeter = shift ; _retError("Unmatched $delimeter"); return undef ; } sub _parseBit { my $self = shift ; my $string = shift ; my $out = ''; my $depth = 0 ; while ($string =~ s/(.*?)$noPreBS(,|$matchMetaRE)//) { $out .= quotemeta($1) ; $out .= $mapping{$2} if defined $mapping{$2}; ++ $self->{WildCount} if $wildCount{$2} ; if ($2 eq ',') { return _unmatched "(" if $depth ; $out .= '|'; } elsif ($2 eq '(') { ++ $depth ; } elsif ($2 eq ')') { return _unmatched ")" if ! $depth ; -- $depth ; } elsif ($2 eq '[') { # TODO -- quotemeta & check no '/' # TODO -- check for \] & other \ within the [] $string =~ s#(.*?\])## or return _unmatched "[" ; $out .= "$1)" ; } elsif ($2 eq ']') { return _unmatched "]" ; } elsif ($2 eq '{' || $2 eq '}') { return _retError "Nested {} not allowed" ; } } $out .= quotemeta $string; return _unmatched "(" if $depth ; return $out ; } sub _parseInputGlob { my $self = shift ; my $string = $self->{InputGlob} ; my $inGlob = ''; # Multiple concatenated *'s don't make sense #$string =~ s#\*\*+#*# ; # TODO -- Allow space to delimit patterns? #my @strings = split /\s+/, $string ; #for my $str (@strings) my $out = ''; my $depth = 0 ; while ($string =~ s/(.*?)$noPreBS($matchMetaRE)//) { $out .= quotemeta($1) ; $out .= $mapping{$2} if defined $mapping{$2}; ++ $self->{WildCount} if $wildCount{$2} ; if ($2 eq '(') { ++ $depth ; } elsif ($2 eq ')') { return _unmatched ")" if ! $depth ; -- $depth ; } elsif ($2 eq '[') { # TODO -- quotemeta & check no '/' or '(' or ')' # TODO -- check for \] & other \ within the [] $string =~ s#(.*?\])## or return _unmatched "["; $out .= "$1)" ; } elsif ($2 eq ']') { return _unmatched "]" ; } elsif ($2 eq '}') { return _unmatched "}" ; } elsif ($2 eq '{') { # TODO -- check no '/' within the {} # TODO -- check for \} & other \ within the {} my $tmp ; unless ( $string =~ s/(.*?)$noPreBS\}//) { return _unmatched "{"; } #$string =~ s#(.*?)\}##; #my $alt = join '|', # map { quotemeta $_ } # split "$noPreBS,", $1 ; my $alt = $self->_parseBit($1); defined $alt or return 0 ; $out .= "($alt)" ; ++ $self->{Braces} ; } } return _unmatched "(" if $depth ; $out .= quotemeta $string ; $self->{InputGlob} =~ s/$noPreBS[\(\)]//g; $self->{InputPattern} = $out ; #print "# INPUT '$self->{InputGlob}' => '$out'\n"; return 1 ; } sub _parseOutputGlob { my $self = shift ; my $string = $self->{OutputGlob} ; my $maxwild = $self->{WildCount}; if ($self->{GlobFlags} & GLOB_TILDE) #if (1) { $string =~ s{ ^ ~ # find a leading tilde ( # save this in $1 [^/] # a non-slash character * # repeated 0 or more times (0 means me) ) }{ $1 ? (getpwnam($1))[7] : ( $ENV{HOME} || $ENV{LOGDIR} ) }ex; } # max #1 must be == to max no of '*' in input while ( $string =~ m/#(\d)/g ) { croak "Max wild is #$maxwild, you tried #$1" if $1 > $maxwild ; } my $noPreBS = '(?{OutputGlob}' => '$string'\n"; $self->{OutputPattern} = $string ; return 1 ; } sub _getFiles { my $self = shift ; my %outInMapping = (); my %inFiles = () ; foreach my $inFile (@{ $self->{InputFiles} }) { next if $inFiles{$inFile} ++ ; my $outFile = $inFile ; if ( $inFile =~ m/$self->{InputPattern}/ ) { no warnings 'uninitialized'; eval "\$outFile = $self->{OutputPattern};" ; if (defined $outInMapping{$outFile}) { $Error = "multiple input files map to one output file"; return undef ; } $outInMapping{$outFile} = $inFile; push @{ $self->{Pairs} }, [$inFile, $outFile]; } } return 1 ; } sub getFileMap { my $self = shift ; return $self->{Pairs} ; } sub getHash { my $self = shift ; return { map { $_->[0] => $_->[1] } @{ $self->{Pairs} } } ; } 1; __END__ #line 680FILE3c4e1a38/File/Path.pm;#line 1 "/usr/share/perl/5.14/File/Path.pm" package File::Path; use 5.005_04; use strict; use Cwd 'getcwd'; use File::Basename (); use File::Spec (); BEGIN { if ($] < 5.006) { # can't say 'opendir my $dh, $dirname' # need to initialise $dh eval "use Symbol"; } } use Exporter (); use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); $VERSION = '2.08_01'; @ISA = qw(Exporter); @EXPORT = qw(mkpath rmtree); @EXPORT_OK = qw(make_path remove_tree); my $Is_VMS = $^O eq 'VMS'; my $Is_MacOS = $^O eq 'MacOS'; # These OSes complain if you want to remove a file that you have no # write permission to: my $Force_Writeable = grep {$^O eq $_} qw(amigaos dos epoc MSWin32 MacOS os2); # Unix-like systems need to stat each directory in order to detect # race condition. MS-Windows is immune to this particular attack. my $Need_Stat_Check = !($^O eq 'MSWin32'); sub _carp { require Carp; goto &Carp::carp; } sub _croak { require Carp; goto &Carp::croak; } sub _error { my $arg = shift; my $message = shift; my $object = shift; if ($arg->{error}) { $object = '' unless defined $object; $message .= ": $!" if $!; push @{${$arg->{error}}}, {$object => $message}; } else { _carp(defined($object) ? "$message for $object: $!" : "$message: $!"); } } sub make_path { push @_, {} unless @_ and UNIVERSAL::isa($_[-1],'HASH'); goto &mkpath; } sub mkpath { my $old_style = !(@_ and UNIVERSAL::isa($_[-1],'HASH')); my $arg; my $paths; if ($old_style) { my ($verbose, $mode); ($paths, $verbose, $mode) = @_; $paths = [$paths] unless UNIVERSAL::isa($paths,'ARRAY'); $arg->{verbose} = $verbose; $arg->{mode} = defined $mode ? $mode : 0777; } else { $arg = pop @_; $arg->{mode} = delete $arg->{mask} if exists $arg->{mask}; $arg->{mode} = 0777 unless exists $arg->{mode}; ${$arg->{error}} = [] if exists $arg->{error}; $arg->{owner} = delete $arg->{user} if exists $arg->{user}; $arg->{owner} = delete $arg->{uid} if exists $arg->{uid}; if (exists $arg->{owner} and $arg->{owner} =~ /\D/) { my $uid = (getpwnam $arg->{owner})[2]; if (defined $uid) { $arg->{owner} = $uid; } else { _error($arg, "unable to map $arg->{owner} to a uid, ownership not changed"); delete $arg->{owner}; } } if (exists $arg->{group} and $arg->{group} =~ /\D/) { my $gid = (getgrnam $arg->{group})[2]; if (defined $gid) { $arg->{group} = $gid; } else { _error($arg, "unable to map $arg->{group} to a gid, group ownership not changed"); delete $arg->{group}; } } if (exists $arg->{owner} and not exists $arg->{group}) { $arg->{group} = -1; # chown will leave group unchanged } if (exists $arg->{group} and not exists $arg->{owner}) { $arg->{owner} = -1; # chown will leave owner unchanged } $paths = [@_]; } return _mkpath($arg, $paths); } sub _mkpath { my $arg = shift; my $paths = shift; my(@created,$path); foreach $path (@$paths) { next unless defined($path) and length($path); $path .= '/' if $^O eq 'os2' and $path =~ /^\w:\z/s; # feature of CRT # Logic wants Unix paths, so go with the flow. if ($Is_VMS) { next if $path eq '/'; $path = VMS::Filespec::unixify($path); } next if -d $path; my $parent = File::Basename::dirname($path); unless (-d $parent or $path eq $parent) { push(@created,_mkpath($arg, [$parent])); } print "mkdir $path\n" if $arg->{verbose}; if (mkdir($path,$arg->{mode})) { push(@created, $path); if (exists $arg->{owner}) { # NB: $arg->{group} guaranteed to be set during initialisation if (!chown $arg->{owner}, $arg->{group}, $path) { _error($arg, "Cannot change ownership of $path to $arg->{owner}:$arg->{group}"); } } } else { my $save_bang = $!; my ($e, $e1) = ($save_bang, $^E); $e .= "; $e1" if $e ne $e1; # allow for another process to have created it meanwhile if (!-d $path) { $! = $save_bang; if ($arg->{error}) { push @{${$arg->{error}}}, {$path => $e}; } else { _croak("mkdir $path: $e"); } } } } return @created; } sub remove_tree { push @_, {} unless @_ and UNIVERSAL::isa($_[-1],'HASH'); goto &rmtree; } sub _is_subdir { my($dir, $test) = @_; my($dv, $dd) = File::Spec->splitpath($dir, 1); my($tv, $td) = File::Spec->splitpath($test, 1); # not on same volume return 0 if $dv ne $tv; my @d = File::Spec->splitdir($dd); my @t = File::Spec->splitdir($td); # @t can't be a subdir if it's shorter than @d return 0 if @t < @d; return join('/', @d) eq join('/', splice @t, 0, +@d); } sub rmtree { my $old_style = !(@_ and UNIVERSAL::isa($_[-1],'HASH')); my $arg; my $paths; if ($old_style) { my ($verbose, $safe); ($paths, $verbose, $safe) = @_; $arg->{verbose} = $verbose; $arg->{safe} = defined $safe ? $safe : 0; if (defined($paths) and length($paths)) { $paths = [$paths] unless UNIVERSAL::isa($paths,'ARRAY'); } else { _carp ("No root path(s) specified\n"); return 0; } } else { $arg = pop @_; ${$arg->{error}} = [] if exists $arg->{error}; ${$arg->{result}} = [] if exists $arg->{result}; $paths = [@_]; } $arg->{prefix} = ''; $arg->{depth} = 0; my @clean_path; $arg->{cwd} = getcwd() or do { _error($arg, "cannot fetch initial working directory"); return 0; }; for ($arg->{cwd}) { /\A(.*)\Z/; $_ = $1 } # untaint for my $p (@$paths) { # need to fixup case and map \ to / on Windows my $ortho_root = $^O eq 'MSWin32' ? _slash_lc($p) : $p; my $ortho_cwd = $^O eq 'MSWin32' ? _slash_lc($arg->{cwd}) : $arg->{cwd}; my $ortho_root_length = length($ortho_root); $ortho_root_length-- if $^O eq 'VMS'; # don't compare '.' with ']' if ($ortho_root_length && _is_subdir($ortho_root, $ortho_cwd)) { local $! = 0; _error($arg, "cannot remove path when cwd is $arg->{cwd}", $p); next; } if ($Is_MacOS) { $p = ":$p" unless $p =~ /:/; $p .= ":" unless $p =~ /:\z/; } elsif ($^O eq 'MSWin32') { $p =~ s{[/\\]\z}{}; } else { $p =~ s{/\z}{}; } push @clean_path, $p; } @{$arg}{qw(device inode perm)} = (lstat $arg->{cwd})[0,1] or do { _error($arg, "cannot stat initial working directory", $arg->{cwd}); return 0; }; return _rmtree($arg, \@clean_path); } sub _rmtree { my $arg = shift; my $paths = shift; my $count = 0; my $curdir = File::Spec->curdir(); my $updir = File::Spec->updir(); my (@files, $root); ROOT_DIR: foreach $root (@$paths) { # since we chdir into each directory, it may not be obvious # to figure out where we are if we generate a message about # a file name. We therefore construct a semi-canonical # filename, anchored from the directory being unlinked (as # opposed to being truly canonical, anchored from the root (/). my $canon = $arg->{prefix} ? File::Spec->catfile($arg->{prefix}, $root) : $root ; my ($ldev, $lino, $perm) = (lstat $root)[0,1,2] or next ROOT_DIR; if ( -d _ ) { $root = VMS::Filespec::vmspath(VMS::Filespec::pathify($root)) if $Is_VMS; if (!chdir($root)) { # see if we can escalate privileges to get in # (e.g. funny protection mask such as -w- instead of rwx) $perm &= 07777; my $nperm = $perm | 0700; if (!($arg->{safe} or $nperm == $perm or chmod($nperm, $root))) { _error($arg, "cannot make child directory read-write-exec", $canon); next ROOT_DIR; } elsif (!chdir($root)) { _error($arg, "cannot chdir to child", $canon); next ROOT_DIR; } } my ($cur_dev, $cur_inode, $perm) = (stat $curdir)[0,1,2] or do { _error($arg, "cannot stat current working directory", $canon); next ROOT_DIR; }; if ($Need_Stat_Check) { ($ldev eq $cur_dev and $lino eq $cur_inode) or _croak("directory $canon changed before chdir, expected dev=$ldev ino=$lino, actual dev=$cur_dev ino=$cur_inode, aborting."); } $perm &= 07777; # don't forget setuid, setgid, sticky bits my $nperm = $perm | 0700; # notabene: 0700 is for making readable in the first place, # it's also intended to change it to writable in case we have # to recurse in which case we are better than rm -rf for # subtrees with strange permissions if (!($arg->{safe} or $nperm == $perm or chmod($nperm, $curdir))) { _error($arg, "cannot make directory read+writeable", $canon); $nperm = $perm; } my $d; $d = gensym() if $] < 5.006; if (!opendir $d, $curdir) { _error($arg, "cannot opendir", $canon); @files = (); } else { no strict 'refs'; if (!defined ${"\cTAINT"} or ${"\cTAINT"}) { # Blindly untaint dir names if taint mode is # active, or any perl < 5.006 @files = map { /\A(.*)\z/s; $1 } readdir $d; } else { @files = readdir $d; } closedir $d; } if ($Is_VMS) { # Deleting large numbers of files from VMS Files-11 # filesystems is faster if done in reverse ASCIIbetical order. # include '.' to '.;' from blead patch #31775 @files = map {$_ eq '.' ? '.;' : $_} reverse @files; } @files = grep {$_ ne $updir and $_ ne $curdir} @files; if (@files) { # remove the contained files before the directory itself my $narg = {%$arg}; @{$narg}{qw(device inode cwd prefix depth)} = ($cur_dev, $cur_inode, $updir, $canon, $arg->{depth}+1); $count += _rmtree($narg, \@files); } # restore directory permissions of required now (in case the rmdir # below fails), while we are still in the directory and may do so # without a race via '.' if ($nperm != $perm and not chmod($perm, $curdir)) { _error($arg, "cannot reset chmod", $canon); } # don't leave the client code in an unexpected directory chdir($arg->{cwd}) or _croak("cannot chdir to $arg->{cwd} from $canon: $!, aborting."); # ensure that a chdir upwards didn't take us somewhere other # than we expected (see CVE-2002-0435) ($cur_dev, $cur_inode) = (stat $curdir)[0,1] or _croak("cannot stat prior working directory $arg->{cwd}: $!, aborting."); if ($Need_Stat_Check) { ($arg->{device} eq $cur_dev and $arg->{inode} eq $cur_inode) or _croak("previous directory $arg->{cwd} changed before entering $canon, expected dev=$ldev ino=$lino, actual dev=$cur_dev ino=$cur_inode, aborting."); } if ($arg->{depth} or !$arg->{keep_root}) { if ($arg->{safe} && ($Is_VMS ? !&VMS::Filespec::candelete($root) : !-w $root)) { print "skipped $root\n" if $arg->{verbose}; next ROOT_DIR; } if ($Force_Writeable and !chmod $perm | 0700, $root) { _error($arg, "cannot make directory writeable", $canon); } print "rmdir $root\n" if $arg->{verbose}; if (rmdir $root) { push @{${$arg->{result}}}, $root if $arg->{result}; ++$count; } else { _error($arg, "cannot remove directory", $canon); if ($Force_Writeable && !chmod($perm, ($Is_VMS ? VMS::Filespec::fileify($root) : $root)) ) { _error($arg, sprintf("cannot restore permissions to 0%o",$perm), $canon); } } } } else { # not a directory $root = VMS::Filespec::vmsify("./$root") if $Is_VMS && !File::Spec->file_name_is_absolute($root) && ($root !~ m/(?]+/); # not already in VMS syntax if ($arg->{safe} && ($Is_VMS ? !&VMS::Filespec::candelete($root) : !(-l $root || -w $root))) { print "skipped $root\n" if $arg->{verbose}; next ROOT_DIR; } my $nperm = $perm & 07777 | 0600; if ($Force_Writeable and $nperm != $perm and not chmod $nperm, $root) { _error($arg, "cannot make file writeable", $canon); } print "unlink $canon\n" if $arg->{verbose}; # delete all versions under VMS for (;;) { if (unlink $root) { push @{${$arg->{result}}}, $root if $arg->{result}; } else { _error($arg, "cannot unlink file", $canon); $Force_Writeable and chmod($perm, $root) or _error($arg, sprintf("cannot restore permissions to 0%o",$perm), $canon); last; } ++$count; last unless $Is_VMS && lstat $root; } } } return $count; } sub _slash_lc { # fix up slashes and case on MSWin32 so that we can determine that # c:\path\to\dir is underneath C:/Path/To my $path = shift; $path =~ tr{\\}{/}; return lc($path); } 1; __END__ #line 982 FILE84a91b21/File/Temp.pm9#line 1 "/usr/share/perl/5.14/File/Temp.pm" package File::Temp; #line 138 # 5.6.0 gives us S_IWOTH, S_IWGRP, our and auto-vivifying filehandls # People would like a version on 5.004 so give them what they want :-) use 5.004; use strict; use Carp; use File::Spec 0.8; use File::Path qw/ rmtree /; use Fcntl 1.03; use IO::Seekable; # For SEEK_* use Errno; require VMS::Stdio if $^O eq 'VMS'; # pre-emptively load Carp::Heavy. If we don't when we run out of file # handles and attempt to call croak() we get an error message telling # us that Carp::Heavy won't load rather than an error telling us we # have run out of file handles. We either preload croak() or we # switch the calls to croak from _gettemp() to use die. eval { require Carp::Heavy; }; # Need the Symbol package if we are running older perl require Symbol if $] < 5.006; ### For the OO interface use base qw/ IO::Handle IO::Seekable /; use overload '""' => "STRINGIFY", fallback => 1; # use 'our' on v5.6.0 use vars qw($VERSION @EXPORT_OK %EXPORT_TAGS $DEBUG $KEEP_ALL); $DEBUG = 0; $KEEP_ALL = 0; # We are exporting functions use base qw/Exporter/; # Export list - to allow fine tuning of export table @EXPORT_OK = qw{ tempfile tempdir tmpnam tmpfile mktemp mkstemp mkstemps mkdtemp unlink0 cleanup SEEK_SET SEEK_CUR SEEK_END }; # Groups of functions for export %EXPORT_TAGS = ( 'POSIX' => [qw/ tmpnam tmpfile /], 'mktemp' => [qw/ mktemp mkstemp mkstemps mkdtemp/], 'seekable' => [qw/ SEEK_SET SEEK_CUR SEEK_END /], ); # add contents of these tags to @EXPORT Exporter::export_tags('POSIX','mktemp','seekable'); # Version number $VERSION = '0.22'; # This is a list of characters that can be used in random filenames my @CHARS = (qw/ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 _ /); # Maximum number of tries to make a temp file before failing use constant MAX_TRIES => 1000; # Minimum number of X characters that should be in a template use constant MINX => 4; # Default template when no template supplied use constant TEMPXXX => 'X' x 10; # Constants for the security level use constant STANDARD => 0; use constant MEDIUM => 1; use constant HIGH => 2; # OPENFLAGS. If we defined the flag to use with Sysopen here this gives # us an optimisation when many temporary files are requested my $OPENFLAGS = O_CREAT | O_EXCL | O_RDWR; my $LOCKFLAG; unless ($^O eq 'MacOS') { for my $oflag (qw/ NOFOLLOW BINARY LARGEFILE NOINHERIT /) { my ($bit, $func) = (0, "Fcntl::O_" . $oflag); no strict 'refs'; $OPENFLAGS |= $bit if eval { # Make sure that redefined die handlers do not cause problems # e.g. CGI::Carp local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; $bit = &$func(); 1; }; } # Special case O_EXLOCK $LOCKFLAG = eval { local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; &Fcntl::O_EXLOCK(); }; } # On some systems the O_TEMPORARY flag can be used to tell the OS # to automatically remove the file when it is closed. This is fine # in most cases but not if tempfile is called with UNLINK=>0 and # the filename is requested -- in the case where the filename is to # be passed to another routine. This happens on windows. We overcome # this by using a second open flags variable my $OPENTEMPFLAGS = $OPENFLAGS; unless ($^O eq 'MacOS') { for my $oflag (qw/ TEMPORARY /) { my ($bit, $func) = (0, "Fcntl::O_" . $oflag); local($@); no strict 'refs'; $OPENTEMPFLAGS |= $bit if eval { # Make sure that redefined die handlers do not cause problems # e.g. CGI::Carp local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; $bit = &$func(); 1; }; } } # Private hash tracking which files have been created by each process id via the OO interface my %FILES_CREATED_BY_OBJECT; # INTERNAL ROUTINES - not to be used outside of package # Generic routine for getting a temporary filename # modelled on OpenBSD _gettemp() in mktemp.c # The template must contain X's that are to be replaced # with the random values # Arguments: # TEMPLATE - string containing the XXXXX's that is converted # to a random filename and opened if required # Optionally, a hash can also be supplied containing specific options # "open" => if true open the temp file, else just return the name # default is 0 # "mkdir"=> if true, we are creating a temp directory rather than tempfile # default is 0 # "suffixlen" => number of characters at end of PATH to be ignored. # default is 0. # "unlink_on_close" => indicates that, if possible, the OS should remove # the file as soon as it is closed. Usually indicates # use of the O_TEMPORARY flag to sysopen. # Usually irrelevant on unix # "use_exlock" => Indicates that O_EXLOCK should be used. Default is true. # Optionally a reference to a scalar can be passed into the function # On error this will be used to store the reason for the error # "ErrStr" => \$errstr # "open" and "mkdir" can not both be true # "unlink_on_close" is not used when "mkdir" is true. # The default options are equivalent to mktemp(). # Returns: # filehandle - open file handle (if called with doopen=1, else undef) # temp name - name of the temp file or directory # For example: # ($fh, $name) = _gettemp($template, "open" => 1); # for the current version, failures are associated with # stored in an error string and returned to give the reason whilst debugging # This routine is not called by any external function sub _gettemp { croak 'Usage: ($fh, $name) = _gettemp($template, OPTIONS);' unless scalar(@_) >= 1; # the internal error string - expect it to be overridden # Need this in case the caller decides not to supply us a value # need an anonymous scalar my $tempErrStr; # Default options my %options = ( "open" => 0, "mkdir" => 0, "suffixlen" => 0, "unlink_on_close" => 0, "use_exlock" => 1, "ErrStr" => \$tempErrStr, ); # Read the template my $template = shift; if (ref($template)) { # Use a warning here since we have not yet merged ErrStr carp "File::Temp::_gettemp: template must not be a reference"; return (); } # Check that the number of entries on stack are even if (scalar(@_) % 2 != 0) { # Use a warning here since we have not yet merged ErrStr carp "File::Temp::_gettemp: Must have even number of options"; return (); } # Read the options and merge with defaults %options = (%options, @_) if @_; # Make sure the error string is set to undef ${$options{ErrStr}} = undef; # Can not open the file and make a directory in a single call if ($options{"open"} && $options{"mkdir"}) { ${$options{ErrStr}} = "doopen and domkdir can not both be true\n"; return (); } # Find the start of the end of the Xs (position of last X) # Substr starts from 0 my $start = length($template) - 1 - $options{"suffixlen"}; # Check that we have at least MINX x X (e.g. 'XXXX") at the end of the string # (taking suffixlen into account). Any fewer is insecure. # Do it using substr - no reason to use a pattern match since # we know where we are looking and what we are looking for if (substr($template, $start - MINX + 1, MINX) ne 'X' x MINX) { ${$options{ErrStr}} = "The template must end with at least ". MINX . " 'X' characters\n"; return (); } # Replace all the X at the end of the substring with a # random character or just all the XX at the end of a full string. # Do it as an if, since the suffix adjusts which section to replace # and suffixlen=0 returns nothing if used in the substr directly # and generate a full path from the template my $path = _replace_XX($template, $options{"suffixlen"}); # Split the path into constituent parts - eventually we need to check # whether the directory exists # We need to know whether we are making a temp directory # or a tempfile my ($volume, $directories, $file); my $parent; # parent directory if ($options{"mkdir"}) { # There is no filename at the end ($volume, $directories, $file) = File::Spec->splitpath( $path, 1); # The parent is then $directories without the last directory # Split the directory and put it back together again my @dirs = File::Spec->splitdir($directories); # If @dirs only has one entry (i.e. the directory template) that means # we are in the current directory if ($#dirs == 0) { $parent = File::Spec->curdir; } else { if ($^O eq 'VMS') { # need volume to avoid relative dir spec $parent = File::Spec->catdir($volume, @dirs[0..$#dirs-1]); $parent = 'sys$disk:[]' if $parent eq ''; } else { # Put it back together without the last one $parent = File::Spec->catdir(@dirs[0..$#dirs-1]); # ...and attach the volume (no filename) $parent = File::Spec->catpath($volume, $parent, ''); } } } else { # Get rid of the last filename (use File::Basename for this?) ($volume, $directories, $file) = File::Spec->splitpath( $path ); # Join up without the file part $parent = File::Spec->catpath($volume,$directories,''); # If $parent is empty replace with curdir $parent = File::Spec->curdir unless $directories ne ''; } # Check that the parent directories exist # Do this even for the case where we are simply returning a name # not a file -- no point returning a name that includes a directory # that does not exist or is not writable unless (-e $parent) { ${$options{ErrStr}} = "Parent directory ($parent) does not exist"; return (); } unless (-d $parent) { ${$options{ErrStr}} = "Parent directory ($parent) is not a directory"; return (); } # Check the stickiness of the directory and chown giveaway if required # If the directory is world writable the sticky bit # must be set if (File::Temp->safe_level == MEDIUM) { my $safeerr; unless (_is_safe($parent,\$safeerr)) { ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)"; return (); } } elsif (File::Temp->safe_level == HIGH) { my $safeerr; unless (_is_verysafe($parent, \$safeerr)) { ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)"; return (); } } # Now try MAX_TRIES time to open the file for (my $i = 0; $i < MAX_TRIES; $i++) { # Try to open the file if requested if ($options{"open"}) { my $fh; # If we are running before perl5.6.0 we can not auto-vivify if ($] < 5.006) { $fh = &Symbol::gensym; } # Try to make sure this will be marked close-on-exec # XXX: Win32 doesn't respect this, nor the proper fcntl, # but may have O_NOINHERIT. This may or may not be in Fcntl. local $^F = 2; # Attempt to open the file my $open_success = undef; if ( $^O eq 'VMS' and $options{"unlink_on_close"} && !$KEEP_ALL) { # make it auto delete on close by setting FAB$V_DLT bit $fh = VMS::Stdio::vmssysopen($path, $OPENFLAGS, 0600, 'fop=dlt'); $open_success = $fh; } else { my $flags = ( ($options{"unlink_on_close"} && !$KEEP_ALL) ? $OPENTEMPFLAGS : $OPENFLAGS ); $flags |= $LOCKFLAG if (defined $LOCKFLAG && $options{use_exlock}); $open_success = sysopen($fh, $path, $flags, 0600); } if ( $open_success ) { # in case of odd umask force rw chmod(0600, $path); # Opened successfully - return file handle and name return ($fh, $path); } else { # Error opening file - abort with error # if the reason was anything but EEXIST unless ($!{EEXIST}) { ${$options{ErrStr}} = "Could not create temp file $path: $!"; return (); } # Loop round for another try } } elsif ($options{"mkdir"}) { # Open the temp directory if (mkdir( $path, 0700)) { # in case of odd umask chmod(0700, $path); return undef, $path; } else { # Abort with error if the reason for failure was anything # except EEXIST unless ($!{EEXIST}) { ${$options{ErrStr}} = "Could not create directory $path: $!"; return (); } # Loop round for another try } } else { # Return true if the file can not be found # Directory has been checked previously return (undef, $path) unless -e $path; # Try again until MAX_TRIES } # Did not successfully open the tempfile/dir # so try again with a different set of random letters # No point in trying to increment unless we have only # 1 X say and the randomness could come up with the same # file MAX_TRIES in a row. # Store current attempt - in principal this implies that the # 3rd time around the open attempt that the first temp file # name could be generated again. Probably should store each # attempt and make sure that none are repeated my $original = $path; my $counter = 0; # Stop infinite loop my $MAX_GUESS = 50; do { # Generate new name from original template $path = _replace_XX($template, $options{"suffixlen"}); $counter++; } until ($path ne $original || $counter > $MAX_GUESS); # Check for out of control looping if ($counter > $MAX_GUESS) { ${$options{ErrStr}} = "Tried to get a new temp name different to the previous value $MAX_GUESS times.\nSomething wrong with template?? ($template)"; return (); } } # If we get here, we have run out of tries ${ $options{ErrStr} } = "Have exceeded the maximum number of attempts (" . MAX_TRIES . ") to open temp file/dir"; return (); } # Internal routine to replace the XXXX... with random characters # This has to be done by _gettemp() every time it fails to # open a temp file/dir # Arguments: $template (the template with XXX), # $ignore (number of characters at end to ignore) # Returns: modified template sub _replace_XX { croak 'Usage: _replace_XX($template, $ignore)' unless scalar(@_) == 2; my ($path, $ignore) = @_; # Do it as an if, since the suffix adjusts which section to replace # and suffixlen=0 returns nothing if used in the substr directly # Alternatively, could simply set $ignore to length($path)-1 # Don't want to always use substr when not required though. my $end = ( $] >= 5.006 ? "\\z" : "\\Z" ); if ($ignore) { substr($path, 0, - $ignore) =~ s/X(?=X*$end)/$CHARS[ int( rand( @CHARS ) ) ]/ge; } else { $path =~ s/X(?=X*$end)/$CHARS[ int( rand( @CHARS ) ) ]/ge; } return $path; } # Internal routine to force a temp file to be writable after # it is created so that we can unlink it. Windows seems to occassionally # force a file to be readonly when written to certain temp locations sub _force_writable { my $file = shift; chmod 0600, $file; } # internal routine to check to see if the directory is safe # First checks to see if the directory is not owned by the # current user or root. Then checks to see if anyone else # can write to the directory and if so, checks to see if # it has the sticky bit set # Will not work on systems that do not support sticky bit #Args: directory path to check # Optionally: reference to scalar to contain error message # Returns true if the path is safe and false otherwise. # Returns undef if can not even run stat() on the path # This routine based on version written by Tom Christiansen # Presumably, by the time we actually attempt to create the # file or directory in this directory, it may not be safe # anymore... Have to run _is_safe directly after the open. sub _is_safe { my $path = shift; my $err_ref = shift; # Stat path my @info = stat($path); unless (scalar(@info)) { $$err_ref = "stat(path) returned no values"; return 0; } ; return 1 if $^O eq 'VMS'; # owner delete control at file level # Check to see whether owner is neither superuser (or a system uid) nor me # Use the effective uid from the $> variable # UID is in [4] if ($info[4] > File::Temp->top_system_uid() && $info[4] != $>) { Carp::cluck(sprintf "uid=$info[4] topuid=%s euid=$> path='$path'", File::Temp->top_system_uid()); $$err_ref = "Directory owned neither by root nor the current user" if ref($err_ref); return 0; } # check whether group or other can write file # use 066 to detect either reading or writing # use 022 to check writability # Do it with S_IWOTH and S_IWGRP for portability (maybe) # mode is in info[2] if (($info[2] & &Fcntl::S_IWGRP) || # Is group writable? ($info[2] & &Fcntl::S_IWOTH) ) { # Is world writable? # Must be a directory unless (-d $path) { $$err_ref = "Path ($path) is not a directory" if ref($err_ref); return 0; } # Must have sticky bit set unless (-k $path) { $$err_ref = "Sticky bit not set on $path when dir is group|world writable" if ref($err_ref); return 0; } } return 1; } # Internal routine to check whether a directory is safe # for temp files. Safer than _is_safe since it checks for # the possibility of chown giveaway and if that is a possibility # checks each directory in the path to see if it is safe (with _is_safe) # If _PC_CHOWN_RESTRICTED is not set, does the full test of each # directory anyway. # Takes optional second arg as scalar ref to error reason sub _is_verysafe { # Need POSIX - but only want to bother if really necessary due to overhead require POSIX; my $path = shift; print "_is_verysafe testing $path\n" if $DEBUG; return 1 if $^O eq 'VMS'; # owner delete control at file level my $err_ref = shift; # Should Get the value of _PC_CHOWN_RESTRICTED if it is defined # and If it is not there do the extensive test local($@); my $chown_restricted; $chown_restricted = &POSIX::_PC_CHOWN_RESTRICTED() if eval { &POSIX::_PC_CHOWN_RESTRICTED(); 1}; # If chown_resticted is set to some value we should test it if (defined $chown_restricted) { # Return if the current directory is safe return _is_safe($path,$err_ref) if POSIX::sysconf( $chown_restricted ); } # To reach this point either, the _PC_CHOWN_RESTRICTED symbol # was not avialable or the symbol was there but chown giveaway # is allowed. Either way, we now have to test the entire tree for # safety. # Convert path to an absolute directory if required unless (File::Spec->file_name_is_absolute($path)) { $path = File::Spec->rel2abs($path); } # Split directory into components - assume no file my ($volume, $directories, undef) = File::Spec->splitpath( $path, 1); # Slightly less efficient than having a function in File::Spec # to chop off the end of a directory or even a function that # can handle ../ in a directory tree # Sometimes splitdir() returns a blank at the end # so we will probably check the bottom directory twice in some cases my @dirs = File::Spec->splitdir($directories); # Concatenate one less directory each time around foreach my $pos (0.. $#dirs) { # Get a directory name my $dir = File::Spec->catpath($volume, File::Spec->catdir(@dirs[0.. $#dirs - $pos]), '' ); print "TESTING DIR $dir\n" if $DEBUG; # Check the directory return 0 unless _is_safe($dir,$err_ref); } return 1; } # internal routine to determine whether unlink works on this # platform for files that are currently open. # Returns true if we can, false otherwise. # Currently WinNT, OS/2 and VMS can not unlink an opened file # On VMS this is because the O_EXCL flag is used to open the # temporary file. Currently I do not know enough about the issues # on VMS to decide whether O_EXCL is a requirement. sub _can_unlink_opened_file { if ($^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'VMS' || $^O eq 'dos' || $^O eq 'MacOS') { return 0; } else { return 1; } } # internal routine to decide which security levels are allowed # see safe_level() for more information on this # Controls whether the supplied security level is allowed # $cando = _can_do_level( $level ) sub _can_do_level { # Get security level my $level = shift; # Always have to be able to do STANDARD return 1 if $level == STANDARD; # Currently, the systems that can do HIGH or MEDIUM are identical if ( $^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'cygwin' || $^O eq 'dos' || $^O eq 'MacOS' || $^O eq 'mpeix') { return 0; } else { return 1; } } # This routine sets up a deferred unlinking of a specified # filename and filehandle. It is used in the following cases: # - Called by unlink0 if an opened file can not be unlinked # - Called by tempfile() if files are to be removed on shutdown # - Called by tempdir() if directories are to be removed on shutdown # Arguments: # _deferred_unlink( $fh, $fname, $isdir ); # # - filehandle (so that it can be expclicitly closed if open # - filename (the thing we want to remove) # - isdir (flag to indicate that we are being given a directory) # [and hence no filehandle] # Status is not referred to since all the magic is done with an END block { # Will set up two lexical variables to contain all the files to be # removed. One array for files, another for directories They will # only exist in this block. # This means we only have to set up a single END block to remove # all files. # in order to prevent child processes inadvertently deleting the parent # temp files we use a hash to store the temp files and directories # created by a particular process id. # %files_to_unlink contains values that are references to an array of # array references containing the filehandle and filename associated with # the temp file. my (%files_to_unlink, %dirs_to_unlink); # Set up an end block to use these arrays END { local($., $@, $!, $^E, $?); cleanup(); } # Cleanup function. Always triggered on END but can be invoked # manually. sub cleanup { if (!$KEEP_ALL) { # Files my @files = (exists $files_to_unlink{$$} ? @{ $files_to_unlink{$$} } : () ); foreach my $file (@files) { # close the filehandle without checking its state # in order to make real sure that this is closed # if its already closed then I dont care about the answer # probably a better way to do this close($file->[0]); # file handle is [0] if (-f $file->[1]) { # file name is [1] _force_writable( $file->[1] ); # for windows unlink $file->[1] or warn "Error removing ".$file->[1]; } } # Dirs my @dirs = (exists $dirs_to_unlink{$$} ? @{ $dirs_to_unlink{$$} } : () ); foreach my $dir (@dirs) { if (-d $dir) { # Some versions of rmtree will abort if you attempt to remove # the directory you are sitting in. We protect that and turn it # into a warning. We do this because this occurs during # cleanup and so can not be caught by the user. eval { rmtree($dir, $DEBUG, 0); }; warn $@ if ($@ && $^W); } } # clear the arrays @{ $files_to_unlink{$$} } = () if exists $files_to_unlink{$$}; @{ $dirs_to_unlink{$$} } = () if exists $dirs_to_unlink{$$}; } } # This is the sub called to register a file for deferred unlinking # This could simply store the input parameters and defer everything # until the END block. For now we do a bit of checking at this # point in order to make sure that (1) we have a file/dir to delete # and (2) we have been called with the correct arguments. sub _deferred_unlink { croak 'Usage: _deferred_unlink($fh, $fname, $isdir)' unless scalar(@_) == 3; my ($fh, $fname, $isdir) = @_; warn "Setting up deferred removal of $fname\n" if $DEBUG; # If we have a directory, check that it is a directory if ($isdir) { if (-d $fname) { # Directory exists so store it # first on VMS turn []foo into [.foo] for rmtree $fname = VMS::Filespec::vmspath($fname) if $^O eq 'VMS'; $dirs_to_unlink{$$} = [] unless exists $dirs_to_unlink{$$}; push (@{ $dirs_to_unlink{$$} }, $fname); } else { carp "Request to remove directory $fname could not be completed since it does not exist!\n" if $^W; } } else { if (-f $fname) { # file exists so store handle and name for later removal $files_to_unlink{$$} = [] unless exists $files_to_unlink{$$}; push(@{ $files_to_unlink{$$} }, [$fh, $fname]); } else { carp "Request to remove file $fname could not be completed since it is not there!\n" if $^W; } } } } #line 1008 sub new { my $proto = shift; my $class = ref($proto) || $proto; # read arguments and convert keys to upper case my %args = @_; %args = map { uc($_), $args{$_} } keys %args; # see if they are unlinking (defaulting to yes) my $unlink = (exists $args{UNLINK} ? $args{UNLINK} : 1 ); delete $args{UNLINK}; # template (store it in an array so that it will # disappear from the arg list of tempfile) my @template = ( exists $args{TEMPLATE} ? $args{TEMPLATE} : () ); delete $args{TEMPLATE}; # Protect OPEN delete $args{OPEN}; # Open the file and retain file handle and file name my ($fh, $path) = tempfile( @template, %args ); print "Tmp: $fh - $path\n" if $DEBUG; # Store the filename in the scalar slot ${*$fh} = $path; # Cache the filename by pid so that the destructor can decide whether to remove it $FILES_CREATED_BY_OBJECT{$$}{$path} = 1; # Store unlink information in hash slot (plus other constructor info) %{*$fh} = %args; # create the object bless $fh, $class; # final method-based configuration $fh->unlink_on_destroy( $unlink ); return $fh; } #line 1066 sub newdir { my $self = shift; # need to handle args as in tempdir because we have to force CLEANUP # default without passing CLEANUP to tempdir my $template = (scalar(@_) % 2 == 1 ? shift(@_) : undef ); my %options = @_; my $cleanup = (exists $options{CLEANUP} ? $options{CLEANUP} : 1 ); delete $options{CLEANUP}; my $tempdir; if (defined $template) { $tempdir = tempdir( $template, %options ); } else { $tempdir = tempdir( %options ); } return bless { DIRNAME => $tempdir, CLEANUP => $cleanup, LAUNCHPID => $$, }, "File::Temp::Dir"; } #line 1101 sub filename { my $self = shift; return ${*$self}; } sub STRINGIFY { my $self = shift; return $self->filename; } #line 1131 sub unlink_on_destroy { my $self = shift; if (@_) { ${*$self}{UNLINK} = shift; } return ${*$self}{UNLINK}; } #line 1160 sub DESTROY { local($., $@, $!, $^E, $?); my $self = shift; # Make sure we always remove the file from the global hash # on destruction. This prevents the hash from growing uncontrollably # and post-destruction there is no reason to know about the file. my $file = $self->filename; my $was_created_by_proc; if (exists $FILES_CREATED_BY_OBJECT{$$}{$file}) { $was_created_by_proc = 1; delete $FILES_CREATED_BY_OBJECT{$$}{$file}; } if (${*$self}{UNLINK} && !$KEEP_ALL) { print "# ---------> Unlinking $self\n" if $DEBUG; # only delete if this process created it return unless $was_created_by_proc; # The unlink1 may fail if the file has been closed # by the caller. This leaves us with the decision # of whether to refuse to remove the file or simply # do an unlink without test. Seems to be silly # to do this when we are trying to be careful # about security _force_writable( $file ); # for windows unlink1( $self, $file ) or unlink($file); } } #line 1294 sub tempfile { # Can not check for argument count since we can have any # number of args # Default options my %options = ( "DIR" => undef, # Directory prefix "SUFFIX" => '', # Template suffix "UNLINK" => 0, # Do not unlink file on exit "OPEN" => 1, # Open file "TMPDIR" => 0, # Place tempfile in tempdir if template specified "EXLOCK" => 1, # Open file with O_EXLOCK ); # Check to see whether we have an odd or even number of arguments my $template = (scalar(@_) % 2 == 1 ? shift(@_) : undef); # Read the options and merge with defaults %options = (%options, @_) if @_; # First decision is whether or not to open the file if (! $options{"OPEN"}) { warn "tempfile(): temporary filename requested but not opened.\nPossibly unsafe, consider using tempfile() with OPEN set to true\n" if $^W; } if ($options{"DIR"} and $^O eq 'VMS') { # on VMS turn []foo into [.foo] for concatenation $options{"DIR"} = VMS::Filespec::vmspath($options{"DIR"}); } # Construct the template # Have a choice of trying to work around the mkstemp/mktemp/tmpnam etc # functions or simply constructing a template and using _gettemp() # explicitly. Go for the latter # First generate a template if not defined and prefix the directory # If no template must prefix the temp directory if (defined $template) { # End up with current directory if neither DIR not TMPDIR are set if ($options{"DIR"}) { $template = File::Spec->catfile($options{"DIR"}, $template); } elsif ($options{TMPDIR}) { $template = File::Spec->catfile(File::Spec->tmpdir, $template ); } } else { if ($options{"DIR"}) { $template = File::Spec->catfile($options{"DIR"}, TEMPXXX); } else { $template = File::Spec->catfile(File::Spec->tmpdir, TEMPXXX); } } # Now add a suffix $template .= $options{"SUFFIX"}; # Determine whether we should tell _gettemp to unlink the file # On unix this is irrelevant and can be worked out after the file is # opened (simply by unlinking the open filehandle). On Windows or VMS # we have to indicate temporary-ness when we open the file. In general # we only want a true temporary file if we are returning just the # filehandle - if the user wants the filename they probably do not # want the file to disappear as soon as they close it (which may be # important if they want a child process to use the file) # For this reason, tie unlink_on_close to the return context regardless # of OS. my $unlink_on_close = ( wantarray ? 0 : 1); # Create the file my ($fh, $path, $errstr); croak "Error in tempfile() using $template: $errstr" unless (($fh, $path) = _gettemp($template, "open" => $options{'OPEN'}, "mkdir"=> 0 , "unlink_on_close" => $unlink_on_close, "suffixlen" => length($options{'SUFFIX'}), "ErrStr" => \$errstr, "use_exlock" => $options{EXLOCK}, ) ); # Set up an exit handler that can do whatever is right for the # system. This removes files at exit when requested explicitly or when # system is asked to unlink_on_close but is unable to do so because # of OS limitations. # The latter should be achieved by using a tied filehandle. # Do not check return status since this is all done with END blocks. _deferred_unlink($fh, $path, 0) if $options{"UNLINK"}; # Return if (wantarray()) { if ($options{'OPEN'}) { return ($fh, $path); } else { return (undef, $path); } } else { # Unlink the file. It is up to unlink0 to decide what to do with # this (whether to unlink now or to defer until later) unlink0($fh, $path) or croak "Error unlinking file $path using unlink0"; # Return just the filehandle. return $fh; } } #line 1483 # ' sub tempdir { # Can not check for argument count since we can have any # number of args # Default options my %options = ( "CLEANUP" => 0, # Remove directory on exit "DIR" => '', # Root directory "TMPDIR" => 0, # Use tempdir with template ); # Check to see whether we have an odd or even number of arguments my $template = (scalar(@_) % 2 == 1 ? shift(@_) : undef ); # Read the options and merge with defaults %options = (%options, @_) if @_; # Modify or generate the template # Deal with the DIR and TMPDIR options if (defined $template) { # Need to strip directory path if using DIR or TMPDIR if ($options{'TMPDIR'} || $options{'DIR'}) { # Strip parent directory from the filename # # There is no filename at the end $template = VMS::Filespec::vmspath($template) if $^O eq 'VMS'; my ($volume, $directories, undef) = File::Spec->splitpath( $template, 1); # Last directory is then our template $template = (File::Spec->splitdir($directories))[-1]; # Prepend the supplied directory or temp dir if ($options{"DIR"}) { $template = File::Spec->catdir($options{"DIR"}, $template); } elsif ($options{TMPDIR}) { # Prepend tmpdir $template = File::Spec->catdir(File::Spec->tmpdir, $template); } } } else { if ($options{"DIR"}) { $template = File::Spec->catdir($options{"DIR"}, TEMPXXX); } else { $template = File::Spec->catdir(File::Spec->tmpdir, TEMPXXX); } } # Create the directory my $tempdir; my $suffixlen = 0; if ($^O eq 'VMS') { # dir names can end in delimiters $template =~ m/([\.\]:>]+)$/; $suffixlen = length($1); } if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) { # dir name has a trailing ':' ++$suffixlen; } my $errstr; croak "Error in tempdir() using $template: $errstr" unless ((undef, $tempdir) = _gettemp($template, "open" => 0, "mkdir"=> 1 , "suffixlen" => $suffixlen, "ErrStr" => \$errstr, ) ); # Install exit handler; must be dynamic to get lexical if ( $options{'CLEANUP'} && -d $tempdir) { _deferred_unlink(undef, $tempdir, 1); } # Return the dir name return $tempdir; } #line 1605 sub mkstemp { croak "Usage: mkstemp(template)" if scalar(@_) != 1; my $template = shift; my ($fh, $path, $errstr); croak "Error in mkstemp using $template: $errstr" unless (($fh, $path) = _gettemp($template, "open" => 1, "mkdir"=> 0 , "suffixlen" => 0, "ErrStr" => \$errstr, ) ); if (wantarray()) { return ($fh, $path); } else { return $fh; } } #line 1648 sub mkstemps { croak "Usage: mkstemps(template, suffix)" if scalar(@_) != 2; my $template = shift; my $suffix = shift; $template .= $suffix; my ($fh, $path, $errstr); croak "Error in mkstemps using $template: $errstr" unless (($fh, $path) = _gettemp($template, "open" => 1, "mkdir"=> 0 , "suffixlen" => length($suffix), "ErrStr" => \$errstr, ) ); if (wantarray()) { return ($fh, $path); } else { return $fh; } } #line 1691 #' # for emacs sub mkdtemp { croak "Usage: mkdtemp(template)" if scalar(@_) != 1; my $template = shift; my $suffixlen = 0; if ($^O eq 'VMS') { # dir names can end in delimiters $template =~ m/([\.\]:>]+)$/; $suffixlen = length($1); } if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) { # dir name has a trailing ':' ++$suffixlen; } my ($junk, $tmpdir, $errstr); croak "Error creating temp directory from template $template\: $errstr" unless (($junk, $tmpdir) = _gettemp($template, "open" => 0, "mkdir"=> 1 , "suffixlen" => $suffixlen, "ErrStr" => \$errstr, ) ); return $tmpdir; } #line 1734 sub mktemp { croak "Usage: mktemp(template)" if scalar(@_) != 1; my $template = shift; my ($tmpname, $junk, $errstr); croak "Error getting name to temp file from template $template: $errstr" unless (($junk, $tmpname) = _gettemp($template, "open" => 0, "mkdir"=> 0 , "suffixlen" => 0, "ErrStr" => \$errstr, ) ); return $tmpname; } #line 1796 sub tmpnam { # Retrieve the temporary directory name my $tmpdir = File::Spec->tmpdir; croak "Error temporary directory is not writable" if $tmpdir eq ''; # Use a ten character template and append to tmpdir my $template = File::Spec->catfile($tmpdir, TEMPXXX); if (wantarray() ) { return mkstemp($template); } else { return mktemp($template); } } #line 1832 sub tmpfile { # Simply call tmpnam() in a list context my ($fh, $file) = tmpnam(); # Make sure file is removed when filehandle is closed # This will fail on NFS unlink0($fh, $file) or return undef; return $fh; } #line 1877 sub tempnam { croak 'Usage tempnam($dir, $prefix)' unless scalar(@_) == 2; my ($dir, $prefix) = @_; # Add a string to the prefix $prefix .= 'XXXXXXXX'; # Concatenate the directory to the file my $template = File::Spec->catfile($dir, $prefix); return mktemp($template); } #line 1949 sub unlink0 { croak 'Usage: unlink0(filehandle, filename)' unless scalar(@_) == 2; # Read args my ($fh, $path) = @_; cmpstat($fh, $path) or return 0; # attempt remove the file (does not work on some platforms) if (_can_unlink_opened_file()) { # return early (Without unlink) if we have been instructed to retain files. return 1 if $KEEP_ALL; # XXX: do *not* call this on a directory; possible race # resulting in recursive removal croak "unlink0: $path has become a directory!" if -d $path; unlink($path) or return 0; # Stat the filehandle my @fh = stat $fh; print "Link count = $fh[3] \n" if $DEBUG; # Make sure that the link count is zero # - Cygwin provides deferred unlinking, however, # on Win9x the link count remains 1 # On NFS the link count may still be 1 but we cant know that # we are on NFS return ( $fh[3] == 0 or $^O eq 'cygwin' ? 1 : 0); } else { _deferred_unlink($fh, $path, 0); return 1; } } #line 2014 sub cmpstat { croak 'Usage: cmpstat(filehandle, filename)' unless scalar(@_) == 2; # Read args my ($fh, $path) = @_; warn "Comparing stat\n" if $DEBUG; # Stat the filehandle - which may be closed if someone has manually # closed the file. Can not turn off warnings without using $^W # unless we upgrade to 5.006 minimum requirement my @fh; { local ($^W) = 0; @fh = stat $fh; } return unless @fh; if ($fh[3] > 1 && $^W) { carp "unlink0: fstat found too many links; SB=@fh" if $^W; } # Stat the path my @path = stat $path; unless (@path) { carp "unlink0: $path is gone already" if $^W; return; } # this is no longer a file, but may be a directory, or worse unless (-f $path) { confess "panic: $path is no longer a file: SB=@fh"; } # Do comparison of each member of the array # On WinNT dev and rdev seem to be different # depending on whether it is a file or a handle. # Cannot simply compare all members of the stat return # Select the ones we can use my @okstat = (0..$#fh); # Use all by default if ($^O eq 'MSWin32') { @okstat = (1,2,3,4,5,7,8,9,10); } elsif ($^O eq 'os2') { @okstat = (0, 2..$#fh); } elsif ($^O eq 'VMS') { # device and file ID are sufficient @okstat = (0, 1); } elsif ($^O eq 'dos') { @okstat = (0,2..7,11..$#fh); } elsif ($^O eq 'mpeix') { @okstat = (0..4,8..10); } # Now compare each entry explicitly by number for (@okstat) { print "Comparing: $_ : $fh[$_] and $path[$_]\n" if $DEBUG; # Use eq rather than == since rdev, blksize, and blocks (6, 11, # and 12) will be '' on platforms that do not support them. This # is fine since we are only comparing integers. unless ($fh[$_] eq $path[$_]) { warn "Did not match $_ element of stat\n" if $DEBUG; return 0; } } return 1; } #line 2107 sub unlink1 { croak 'Usage: unlink1(filehandle, filename)' unless scalar(@_) == 2; # Read args my ($fh, $path) = @_; cmpstat($fh, $path) or return 0; # Close the file close( $fh ) or return 0; # Make sure the file is writable (for windows) _force_writable( $path ); # return early (without unlink) if we have been instructed to retain files. return 1 if $KEEP_ALL; # remove the file return unlink($path); } #line 2222 { # protect from using the variable itself my $LEVEL = STANDARD; sub safe_level { my $self = shift; if (@_) { my $level = shift; if (($level != STANDARD) && ($level != MEDIUM) && ($level != HIGH)) { carp "safe_level: Specified level ($level) not STANDARD, MEDIUM or HIGH - ignoring\n" if $^W; } else { # Dont allow this on perl 5.005 or earlier if ($] < 5.006 && $level != STANDARD) { # Cant do MEDIUM or HIGH checks croak "Currently requires perl 5.006 or newer to do the safe checks"; } # Check that we are allowed to change level # Silently ignore if we can not. $LEVEL = $level if _can_do_level($level); } } return $LEVEL; } } #line 2267 { my $TopSystemUID = 10; $TopSystemUID = 197108 if $^O eq 'interix'; # "Administrator" sub top_system_uid { my $self = shift; if (@_) { my $newuid = shift; croak "top_system_uid: UIDs should be numeric" unless $newuid =~ /^\d+$/s; $TopSystemUID = $newuid; } return $TopSystemUID; } } #line 2402 package File::Temp::Dir; use File::Path qw/ rmtree /; use strict; use overload '""' => "STRINGIFY", fallback => 1; # private class specifically to support tempdir objects # created by File::Temp->newdir # ostensibly the same method interface as File::Temp but without # inheriting all the IO::Seekable methods and other cruft # Read-only - returns the name of the temp directory sub dirname { my $self = shift; return $self->{DIRNAME}; } sub STRINGIFY { my $self = shift; return $self->dirname; } sub unlink_on_destroy { my $self = shift; if (@_) { $self->{CLEANUP} = shift; } return $self->{CLEANUP}; } sub DESTROY { my $self = shift; local($., $@, $!, $^E, $?); if ($self->unlink_on_destroy && $$ == $self->{LAUNCHPID} && !$File::Temp::KEEP_ALL) { if (-d $self->{DIRNAME}) { # Some versions of rmtree will abort if you attempt to remove # the directory you are sitting in. We protect that and turn it # into a warning. We do this because this occurs during object # destruction and so can not be caught by the user. eval { rmtree($self->{DIRNAME}, $File::Temp::DEBUG, 0); }; warn $@ if ($@ && $^W); } } } 1; FILE9b0085a4/FileHandle.pmf#line 1 "/usr/share/perl/5.14/FileHandle.pm" package FileHandle; use 5.006; use strict; our($VERSION, @ISA, @EXPORT, @EXPORT_OK); $VERSION = "2.02"; require IO::File; @ISA = qw(IO::File); @EXPORT = qw(_IOFBF _IOLBF _IONBF); @EXPORT_OK = qw( pipe autoflush output_field_separator output_record_separator input_record_separator input_line_number format_page_number format_lines_per_page format_lines_left format_name format_top_name format_line_break_characters format_formfeed print printf getline getlines ); # # Everything we're willing to export, we must first import. # import IO::Handle grep { !defined(&$_) } @EXPORT, @EXPORT_OK; # # Some people call "FileHandle::function", so all the functions # that were in the old FileHandle class must be imported, too. # { no strict 'refs'; my %import = ( 'IO::Handle' => [qw(DESTROY new_from_fd fdopen close fileno getc ungetc gets eof flush error clearerr setbuf setvbuf _open_mode_string)], 'IO::Seekable' => [qw(seek tell getpos setpos)], 'IO::File' => [qw(new new_tmpfile open)] ); for my $pkg (keys %import) { for my $func (@{$import{$pkg}}) { my $c = *{"${pkg}::$func"}{CODE} or die "${pkg}::$func missing"; *$func = $c; } } } # # Specialized importer for Fcntl magic. # sub import { my $pkg = shift; my $callpkg = caller; require Exporter; Exporter::export($pkg, $callpkg, @_); # # If the Fcntl extension is available, # export its constants. # eval { require Fcntl; Exporter::export('Fcntl', $callpkg); }; } ################################################ # This is the only exported function we define; # the rest come from other classes. # sub pipe { my $r = new IO::Handle; my $w = new IO::Handle; CORE::pipe($r, $w) or return undef; ($r, $w); } # Rebless standard file handles bless *STDIN{IO}, "FileHandle" if ref *STDIN{IO} eq "IO::Handle"; bless *STDOUT{IO}, "FileHandle" if ref *STDOUT{IO} eq "IO::Handle"; bless *STDERR{IO}, "FileHandle" if ref *STDERR{IO} eq "IO::Handle"; 1; __END__ FILE'76fc8660/IO/Compress/Adapter/Deflate.pm ;#line 1 "/usr/share/perl/5.14/IO/Compress/Adapter/Deflate.pm" package IO::Compress::Adapter::Deflate ; use strict; use warnings; use bytes; use IO::Compress::Base::Common 2.033 qw(:Status); use Compress::Raw::Zlib 2.033 qw(Z_OK Z_FINISH MAX_WBITS) ; our ($VERSION); $VERSION = '2.033'; sub mkCompObject { my $crc32 = shift ; my $adler32 = shift ; my $level = shift ; my $strategy = shift ; my ($def, $status) = new Compress::Raw::Zlib::Deflate -AppendOutput => 1, -CRC32 => $crc32, -ADLER32 => $adler32, -Level => $level, -Strategy => $strategy, -WindowBits => - MAX_WBITS; return (undef, "Cannot create Deflate object: $status", $status) if $status != Z_OK; return bless {'Def' => $def, 'Error' => '', } ; } sub compr { my $self = shift ; my $def = $self->{Def}; my $status = $def->deflate($_[0], $_[1]) ; $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } return STATUS_OK; } sub flush { my $self = shift ; my $def = $self->{Def}; my $opt = $_[1] || Z_FINISH; my $status = $def->flush($_[0], $opt); $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } return STATUS_OK; } sub close { my $self = shift ; my $def = $self->{Def}; $def->flush($_[0], Z_FINISH) if defined $def ; } sub reset { my $self = shift ; my $def = $self->{Def}; my $status = $def->deflateReset() ; $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "Deflate Error: $status"; return STATUS_ERROR; } return STATUS_OK; } sub deflateParams { my $self = shift ; my $def = $self->{Def}; my $status = $def->deflateParams(@_); $self->{ErrorNo} = $status; if ($status != Z_OK) { $self->{Error} = "deflateParams Error: $status"; return STATUS_ERROR; } return STATUS_OK; } #sub total_out #{ # my $self = shift ; # $self->{Def}->total_out(); #} # #sub total_in #{ # my $self = shift ; # $self->{Def}->total_in(); #} sub compressedBytes { my $self = shift ; $self->{Def}->compressedBytes(); } sub uncompressedBytes { my $self = shift ; $self->{Def}->uncompressedBytes(); } sub crc32 { my $self = shift ; $self->{Def}->crc32(); } sub adler32 { my $self = shift ; $self->{Def}->adler32(); } 1; __END__ FILEf4bfb419/IO/Compress/Base.pmQC#line 1 "/usr/share/perl/5.14/IO/Compress/Base.pm" package IO::Compress::Base ; require 5.004 ; use strict ; use warnings; use IO::Compress::Base::Common 2.033 ; use IO::File ; use Scalar::Util qw(blessed readonly); #use File::Glob; #require Exporter ; use Carp ; use Symbol; use bytes; our (@ISA, $VERSION); @ISA = qw(Exporter IO::File); $VERSION = '2.033'; #Can't locate object method "SWASHNEW" via package "utf8" (perhaps you forgot to load "utf8"?) at .../ext/Compress-Zlib/Gzip/blib/lib/Compress/Zlib/Common.pm line 16. sub saveStatus { my $self = shift ; ${ *$self->{ErrorNo} } = shift() + 0 ; ${ *$self->{Error} } = '' ; return ${ *$self->{ErrorNo} } ; } sub saveErrorString { my $self = shift ; my $retval = shift ; ${ *$self->{Error} } = shift ; ${ *$self->{ErrorNo} } = shift() + 0 if @_ ; return $retval; } sub croakError { my $self = shift ; $self->saveErrorString(0, $_[0]); croak $_[0]; } sub closeError { my $self = shift ; my $retval = shift ; my $errno = *$self->{ErrorNo}; my $error = ${ *$self->{Error} }; $self->close(); *$self->{ErrorNo} = $errno ; ${ *$self->{Error} } = $error ; return $retval; } sub error { my $self = shift ; return ${ *$self->{Error} } ; } sub errorNo { my $self = shift ; return ${ *$self->{ErrorNo} } ; } sub writeAt { my $self = shift ; my $offset = shift; my $data = shift; if (defined *$self->{FH}) { my $here = tell(*$self->{FH}); return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) if $here < 0 ; seek(*$self->{FH}, $offset, SEEK_SET) or return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ; defined *$self->{FH}->write($data, length $data) or return $self->saveErrorString(undef, $!, $!) ; seek(*$self->{FH}, $here, SEEK_SET) or return $self->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ; } else { substr(${ *$self->{Buffer} }, $offset, length($data)) = $data ; } return 1; } sub output { my $self = shift ; my $data = shift ; my $last = shift ; return 1 if length $data == 0 && ! $last ; if ( *$self->{FilterEnvelope} ) { *_ = \$data; &{ *$self->{FilterEnvelope} }(); } if (length $data) { if ( defined *$self->{FH} ) { defined *$self->{FH}->write( $data, length $data ) or return $self->saveErrorString(0, $!, $!); } else { ${ *$self->{Buffer} } .= $data ; } } return 1; } sub getOneShotParams { return ( 'MultiStream' => [1, 1, Parse_boolean, 1], ); } sub checkParams { my $self = shift ; my $class = shift ; my $got = shift || IO::Compress::Base::Parameters::new(); $got->parse( { # Generic Parameters 'AutoClose' => [1, 1, Parse_boolean, 0], #'Encode' => [1, 1, Parse_any, undef], 'Strict' => [0, 1, Parse_boolean, 1], 'Append' => [1, 1, Parse_boolean, 0], 'BinModeIn' => [1, 1, Parse_boolean, 0], 'FilterEnvelope' => [1, 1, Parse_any, undef], $self->getExtraParams(), *$self->{OneShot} ? $self->getOneShotParams() : (), }, @_) or $self->croakError("${class}: $got->{Error}") ; return $got ; } sub _create { my $obj = shift; my $got = shift; *$obj->{Closed} = 1 ; my $class = ref $obj; $obj->croakError("$class: Missing Output parameter") if ! @_ && ! $got ; my $outValue = shift ; my $oneShot = 1 ; if (! $got) { $oneShot = 0 ; $got = $obj->checkParams($class, undef, @_) or return undef ; } my $lax = ! $got->value('Strict') ; my $outType = whatIsOutput($outValue); $obj->ckOutputParam($class, $outValue) or return undef ; if ($outType eq 'buffer') { *$obj->{Buffer} = $outValue; } else { my $buff = "" ; *$obj->{Buffer} = \$buff ; } # Merge implies Append my $merge = $got->value('Merge') ; my $appendOutput = $got->value('Append') || $merge ; *$obj->{Append} = $appendOutput; *$obj->{FilterEnvelope} = $got->value('FilterEnvelope') ; if ($merge) { # Switch off Merge mode if output file/buffer is empty/doesn't exist if (($outType eq 'buffer' && length $$outValue == 0 ) || ($outType ne 'buffer' && (! -e $outValue || (-w _ && -z _))) ) { $merge = 0 } } # If output is a file, check that it is writable #no warnings; #if ($outType eq 'filename' && -e $outValue && ! -w _) # { return $obj->saveErrorString(undef, "Output file '$outValue' is not writable" ) } if ($got->parsed('Encode')) { my $want_encoding = $got->value('Encode'); *$obj->{Encoding} = getEncoding($obj, $class, $want_encoding); } $obj->ckParams($got) or $obj->croakError("${class}: " . $obj->error()); $obj->saveStatus(STATUS_OK) ; my $status ; if (! $merge) { *$obj->{Compress} = $obj->mkComp($got) or return undef; *$obj->{UnCompSize} = new U64 ; *$obj->{CompSize} = new U64 ; if ( $outType eq 'buffer') { ${ *$obj->{Buffer} } = '' unless $appendOutput ; } else { if ($outType eq 'handle') { *$obj->{FH} = $outValue ; setBinModeOutput(*$obj->{FH}) ; $outValue->flush() ; *$obj->{Handle} = 1 ; if ($appendOutput) { seek(*$obj->{FH}, 0, SEEK_END) or return $obj->saveErrorString(undef, "Cannot seek to end of output filehandle: $!", $!) ; } } elsif ($outType eq 'filename') { no warnings; my $mode = '>' ; $mode = '>>' if $appendOutput; *$obj->{FH} = new IO::File "$mode $outValue" or return $obj->saveErrorString(undef, "cannot open file '$outValue': $!", $!) ; *$obj->{StdIO} = ($outValue eq '-'); setBinModeOutput(*$obj->{FH}) ; } } *$obj->{Header} = $obj->mkHeader($got) ; $obj->output( *$obj->{Header} ) or return undef; } else { *$obj->{Compress} = $obj->createMerge($outValue, $outType) or return undef; } *$obj->{Closed} = 0 ; *$obj->{AutoClose} = $got->value('AutoClose') ; *$obj->{Output} = $outValue; *$obj->{ClassName} = $class; *$obj->{Got} = $got; *$obj->{OneShot} = 0 ; return $obj ; } sub ckOutputParam { my $self = shift ; my $from = shift ; my $outType = whatIsOutput($_[0]); $self->croakError("$from: output parameter not a filename, filehandle or scalar ref") if ! $outType ; #$self->croakError("$from: output filename is undef or null string") #if $outType eq 'filename' && (! defined $_[0] || $_[0] eq '') ; $self->croakError("$from: output buffer is read-only") if $outType eq 'buffer' && readonly(${ $_[0] }); return 1; } sub _def { my $obj = shift ; my $class= (caller)[0] ; my $name = (caller(1))[3] ; $obj->croakError("$name: expected at least 1 parameters\n") unless @_ >= 1 ; my $input = shift ; my $haveOut = @_ ; my $output = shift ; my $x = new IO::Compress::Base::Validator($class, *$obj->{Error}, $name, $input, $output) or return undef ; push @_, $output if $haveOut && $x->{Hash}; *$obj->{OneShot} = 1 ; my $got = $obj->checkParams($name, undef, @_) or return undef ; $x->{Got} = $got ; # if ($x->{Hash}) # { # while (my($k, $v) = each %$input) # { # $v = \$input->{$k} # unless defined $v ; # # $obj->_singleTarget($x, 1, $k, $v, @_) # or return undef ; # } # # return keys %$input ; # } if ($x->{GlobMap}) { $x->{oneInput} = 1 ; foreach my $pair (@{ $x->{Pairs} }) { my ($from, $to) = @$pair ; $obj->_singleTarget($x, 1, $from, $to, @_) or return undef ; } return scalar @{ $x->{Pairs} } ; } if (! $x->{oneOutput} ) { my $inFile = ($x->{inType} eq 'filenames' || $x->{inType} eq 'filename'); $x->{inType} = $inFile ? 'filename' : 'buffer'; foreach my $in ($x->{oneInput} ? $input : @$input) { my $out ; $x->{oneInput} = 1 ; $obj->_singleTarget($x, $inFile, $in, \$out, @_) or return undef ; push @$output, \$out ; #if ($x->{outType} eq 'array') # { push @$output, \$out } #else # { $output->{$in} = \$out } } return 1 ; } # finally the 1 to 1 and n to 1 return $obj->_singleTarget($x, 1, $input, $output, @_); croak "should not be here" ; } sub _singleTarget { my $obj = shift ; my $x = shift ; my $inputIsFilename = shift; my $input = shift; if ($x->{oneInput}) { $obj->getFileInfo($x->{Got}, $input) if isaFilename($input) and $inputIsFilename ; my $z = $obj->_create($x->{Got}, @_) or return undef ; defined $z->_wr2($input, $inputIsFilename) or return $z->closeError(undef) ; return $z->close() ; } else { my $afterFirst = 0 ; my $inputIsFilename = ($x->{inType} ne 'array'); my $keep = $x->{Got}->clone(); #for my $element ( ($x->{inType} eq 'hash') ? keys %$input : @$input) for my $element ( @$input) { my $isFilename = isaFilename($element); if ( $afterFirst ++ ) { defined addInterStream($obj, $element, $isFilename) or return $obj->closeError(undef) ; } else { $obj->getFileInfo($x->{Got}, $element) if $isFilename; $obj->_create($x->{Got}, @_) or return undef ; } defined $obj->_wr2($element, $isFilename) or return $obj->closeError(undef) ; *$obj->{Got} = $keep->clone(); } return $obj->close() ; } } sub _wr2 { my $self = shift ; my $source = shift ; my $inputIsFilename = shift; my $input = $source ; if (! $inputIsFilename) { $input = \$source if ! ref $source; } if ( ref $input && ref $input eq 'SCALAR' ) { return $self->syswrite($input, @_) ; } if ( ! ref $input || isaFilehandle($input)) { my $isFilehandle = isaFilehandle($input) ; my $fh = $input ; if ( ! $isFilehandle ) { $fh = new IO::File "<$input" or return $self->saveErrorString(undef, "cannot open file '$input': $!", $!) ; } binmode $fh if *$self->{Got}->valueOrDefault('BinModeIn') ; my $status ; my $buff ; my $count = 0 ; while ($status = read($fh, $buff, 16 * 1024)) { $count += length $buff; defined $self->syswrite($buff, @_) or return undef ; } return $self->saveErrorString(undef, $!, $!) if ! defined $status ; if ( (!$isFilehandle || *$self->{AutoClose}) && $input ne '-') { $fh->close() or return undef ; } return $count ; } croak "Should not be here"; return undef; } sub addInterStream { my $self = shift ; my $input = shift ; my $inputIsFilename = shift ; if (*$self->{Got}->value('MultiStream')) { $self->getFileInfo(*$self->{Got}, $input) #if isaFilename($input) and $inputIsFilename ; if isaFilename($input) ; # TODO -- newStream needs to allow gzip/zip header to be modified return $self->newStream(); } elsif (*$self->{Got}->value('AutoFlush')) { #return $self->flush(Z_FULL_FLUSH); } return 1 ; } sub getFileInfo { } sub TIEHANDLE { return $_[0] if ref($_[0]); die "OOPS\n" ; } sub UNTIE { my $self = shift ; } sub DESTROY { my $self = shift ; local ($., $@, $!, $^E, $?); $self->close() ; # TODO - memory leak with 5.8.0 - this isn't called until # global destruction # %{ *$self } = () ; undef $self ; } sub filterUncompressed { } sub syswrite { my $self = shift ; my $buffer ; if (ref $_[0] ) { $self->croakError( *$self->{ClassName} . "::write: not a scalar reference" ) unless ref $_[0] eq 'SCALAR' ; $buffer = $_[0] ; } else { $buffer = \$_[0] ; } $] >= 5.008 and ( utf8::downgrade($$buffer, 1) or croak "Wide character in " . *$self->{ClassName} . "::write:"); if (@_ > 1) { my $slen = defined $$buffer ? length($$buffer) : 0; my $len = $slen; my $offset = 0; $len = $_[1] if $_[1] < $len; if (@_ > 2) { $offset = $_[2] || 0; $self->croakError(*$self->{ClassName} . "::write: offset outside string") if $offset > $slen; if ($offset < 0) { $offset += $slen; $self->croakError( *$self->{ClassName} . "::write: offset outside string") if $offset < 0; } my $rem = $slen - $offset; $len = $rem if $rem < $len; } $buffer = \substr($$buffer, $offset, $len) ; } return 0 if ! defined $$buffer || length $$buffer == 0 ; if (*$self->{Encoding}) { $$buffer = *$self->{Encoding}->encode($$buffer); } $self->filterUncompressed($buffer); my $buffer_length = defined $$buffer ? length($$buffer) : 0 ; *$self->{UnCompSize}->add($buffer_length) ; my $outBuffer=''; my $status = *$self->{Compress}->compr($buffer, $outBuffer) ; return $self->saveErrorString(undef, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; *$self->{CompSize}->add(length $outBuffer) ; $self->output($outBuffer) or return undef; return $buffer_length; } sub print { my $self = shift; #if (ref $self) { # $self = *$self{GLOB} ; #} if (defined $\) { if (defined $,) { defined $self->syswrite(join($,, @_) . $\); } else { defined $self->syswrite(join("", @_) . $\); } } else { if (defined $,) { defined $self->syswrite(join($,, @_)); } else { defined $self->syswrite(join("", @_)); } } } sub printf { my $self = shift; my $fmt = shift; defined $self->syswrite(sprintf($fmt, @_)); } sub flush { my $self = shift ; my $outBuffer=''; my $status = *$self->{Compress}->flush($outBuffer, @_) ; return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; if ( defined *$self->{FH} ) { *$self->{FH}->clearerr(); } *$self->{CompSize}->add(length $outBuffer) ; $self->output($outBuffer) or return 0; if ( defined *$self->{FH} ) { defined *$self->{FH}->flush() or return $self->saveErrorString(0, $!, $!); } return 1; } sub newStream { my $self = shift ; $self->_writeTrailer() or return 0 ; my $got = $self->checkParams('newStream', *$self->{Got}, @_) or return 0 ; $self->ckParams($got) or $self->croakError("newStream: $self->{Error}"); *$self->{Compress} = $self->mkComp($got) or return 0; *$self->{Header} = $self->mkHeader($got) ; $self->output(*$self->{Header} ) or return 0; *$self->{UnCompSize}->reset(); *$self->{CompSize}->reset(); return 1 ; } sub reset { my $self = shift ; return *$self->{Compress}->reset() ; } sub _writeTrailer { my $self = shift ; my $trailer = ''; my $status = *$self->{Compress}->close($trailer) ; return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; *$self->{CompSize}->add(length $trailer) ; $trailer .= $self->mkTrailer(); defined $trailer or return 0; return $self->output($trailer); } sub _writeFinalTrailer { my $self = shift ; return $self->output($self->mkFinalTrailer()); } sub close { my $self = shift ; return 1 if *$self->{Closed} || ! *$self->{Compress} ; *$self->{Closed} = 1 ; untie *$self if $] >= 5.008 ; $self->_writeTrailer() or return 0 ; $self->_writeFinalTrailer() or return 0 ; $self->output( "", 1 ) or return 0; if (defined *$self->{FH}) { #if (! *$self->{Handle} || *$self->{AutoClose}) { if ((! *$self->{Handle} || *$self->{AutoClose}) && ! *$self->{StdIO}) { $! = 0 ; *$self->{FH}->close() or return $self->saveErrorString(0, $!, $!); } delete *$self->{FH} ; # This delete can set $! in older Perls, so reset the errno $! = 0 ; } return 1; } #sub total_in #sub total_out #sub msg # #sub crc #{ # my $self = shift ; # return *$self->{Compress}->crc32() ; #} # #sub msg #{ # my $self = shift ; # return *$self->{Compress}->msg() ; #} # #sub dict_adler #{ # my $self = shift ; # return *$self->{Compress}->dict_adler() ; #} # #sub get_Level #{ # my $self = shift ; # return *$self->{Compress}->get_Level() ; #} # #sub get_Strategy #{ # my $self = shift ; # return *$self->{Compress}->get_Strategy() ; #} sub tell { my $self = shift ; return *$self->{UnCompSize}->get32bit() ; } sub eof { my $self = shift ; return *$self->{Closed} ; } sub seek { my $self = shift ; my $position = shift; my $whence = shift ; my $here = $self->tell() ; my $target = 0 ; #use IO::Handle qw(SEEK_SET SEEK_CUR SEEK_END); use IO::Handle ; if ($whence == IO::Handle::SEEK_SET) { $target = $position ; } elsif ($whence == IO::Handle::SEEK_CUR || $whence == IO::Handle::SEEK_END) { $target = $here + $position ; } else { $self->croakError(*$self->{ClassName} . "::seek: unknown value, $whence, for whence parameter"); } # short circuit if seeking to current offset return 1 if $target == $here ; # Outlaw any attempt to seek backwards $self->croakError(*$self->{ClassName} . "::seek: cannot seek backwards") if $target < $here ; # Walk the file to the new offset my $offset = $target - $here ; my $buffer ; defined $self->syswrite("\x00" x $offset) or return 0; return 1 ; } sub binmode { 1; # my $self = shift ; # return defined *$self->{FH} # ? binmode *$self->{FH} # : 1 ; } sub fileno { my $self = shift ; return defined *$self->{FH} ? *$self->{FH}->fileno() : undef ; } sub opened { my $self = shift ; return ! *$self->{Closed} ; } sub autoflush { my $self = shift ; return defined *$self->{FH} ? *$self->{FH}->autoflush(@_) : undef ; } sub input_line_number { return undef ; } sub _notAvailable { my $name = shift ; return sub { croak "$name Not Available: File opened only for output" ; } ; } *read = _notAvailable('read'); *READ = _notAvailable('read'); *readline = _notAvailable('readline'); *READLINE = _notAvailable('readline'); *getc = _notAvailable('getc'); *GETC = _notAvailable('getc'); *FILENO = \&fileno; *PRINT = \&print; *PRINTF = \&printf; *WRITE = \&syswrite; *write = \&syswrite; *SEEK = \&seek; *TELL = \&tell; *EOF = \&eof; *CLOSE = \&close; *BINMODE = \&binmode; #*sysread = \&_notAvailable; #*syswrite = \&_write; 1; __END__ #line 982 FILE#a885ddef/IO/Compress/Base/Common.pmT#line 1 "/usr/share/perl/5.14/IO/Compress/Base/Common.pm" package IO::Compress::Base::Common; use strict ; use warnings; use bytes; use Carp; use Scalar::Util qw(blessed readonly); use File::GlobMapper; require Exporter; our ($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $HAS_ENCODE); @ISA = qw(Exporter); $VERSION = '2.033'; @EXPORT = qw( isaFilehandle isaFilename whatIsInput whatIsOutput isaFileGlobString cleanFileGlobString oneTarget setBinModeInput setBinModeOutput ckInOutParams createSelfTiedObject getEncoding WANT_CODE WANT_EXT WANT_UNDEF WANT_HASH STATUS_OK STATUS_ENDSTREAM STATUS_EOF STATUS_ERROR ); %EXPORT_TAGS = ( Status => [qw( STATUS_OK STATUS_ENDSTREAM STATUS_EOF STATUS_ERROR )]); use constant STATUS_OK => 0; use constant STATUS_ENDSTREAM => 1; use constant STATUS_EOF => 2; use constant STATUS_ERROR => -1; sub hasEncode() { if (! defined $HAS_ENCODE) { eval { require Encode; Encode->import(); }; $HAS_ENCODE = $@ ? 0 : 1 ; } return $HAS_ENCODE; } sub getEncoding($$$) { my $obj = shift; my $class = shift ; my $want_encoding = shift ; $obj->croakError("$class: Encode module needed to use -Encode") if ! hasEncode(); my $encoding = Encode::find_encoding($want_encoding); $obj->croakError("$class: Encoding '$want_encoding' is not available") if ! $encoding; return $encoding; } our ($needBinmode); $needBinmode = ($^O eq 'MSWin32' || ($] >= 5.006 && eval ' ${^UNICODE} || ${^UTF8LOCALE} ')) ? 1 : 1 ; sub setBinModeInput($) { my $handle = shift ; binmode $handle if $needBinmode; } sub setBinModeOutput($) { my $handle = shift ; binmode $handle if $needBinmode; } sub isaFilehandle($) { use utf8; # Pragma needed to keep Perl 5.6.0 happy return (defined $_[0] and (UNIVERSAL::isa($_[0],'GLOB') or UNIVERSAL::isa($_[0],'IO::Handle') or UNIVERSAL::isa(\$_[0],'GLOB')) ) } sub isaFilename($) { return (defined $_[0] and ! ref $_[0] and UNIVERSAL::isa(\$_[0], 'SCALAR')); } sub isaFileGlobString { return defined $_[0] && $_[0] =~ /^<.*>$/; } sub cleanFileGlobString { my $string = shift ; $string =~ s/^\s*<\s*(.*)\s*>\s*$/$1/; return $string; } use constant WANT_CODE => 1 ; use constant WANT_EXT => 2 ; use constant WANT_UNDEF => 4 ; #use constant WANT_HASH => 8 ; use constant WANT_HASH => 0 ; sub whatIsInput($;$) { my $got = whatIs(@_); if (defined $got && $got eq 'filename' && defined $_[0] && $_[0] eq '-') { #use IO::File; $got = 'handle'; $_[0] = *STDIN; #$_[0] = new IO::File("<-"); } return $got; } sub whatIsOutput($;$) { my $got = whatIs(@_); if (defined $got && $got eq 'filename' && defined $_[0] && $_[0] eq '-') { $got = 'handle'; $_[0] = *STDOUT; #$_[0] = new IO::File(">-"); } return $got; } sub whatIs ($;$) { return 'handle' if isaFilehandle($_[0]); my $wantCode = defined $_[1] && $_[1] & WANT_CODE ; my $extended = defined $_[1] && $_[1] & WANT_EXT ; my $undef = defined $_[1] && $_[1] & WANT_UNDEF ; my $hash = defined $_[1] && $_[1] & WANT_HASH ; return 'undef' if ! defined $_[0] && $undef ; if (ref $_[0]) { return '' if blessed($_[0]); # is an object #return '' if UNIVERSAL::isa($_[0], 'UNIVERSAL'); # is an object return 'buffer' if UNIVERSAL::isa($_[0], 'SCALAR'); return 'array' if UNIVERSAL::isa($_[0], 'ARRAY') && $extended ; return 'hash' if UNIVERSAL::isa($_[0], 'HASH') && $hash ; return 'code' if UNIVERSAL::isa($_[0], 'CODE') && $wantCode ; return ''; } return 'fileglob' if $extended && isaFileGlobString($_[0]); return 'filename'; } sub oneTarget { return $_[0] =~ /^(code|handle|buffer|filename)$/; } sub IO::Compress::Base::Validator::new { my $class = shift ; my $Class = shift ; my $error_ref = shift ; my $reportClass = shift ; my %data = (Class => $Class, Error => $error_ref, reportClass => $reportClass, ) ; my $obj = bless \%data, $class ; local $Carp::CarpLevel = 1; my $inType = $data{inType} = whatIsInput($_[0], WANT_EXT|WANT_HASH); my $outType = $data{outType} = whatIsOutput($_[1], WANT_EXT|WANT_HASH); my $oneInput = $data{oneInput} = oneTarget($inType); my $oneOutput = $data{oneOutput} = oneTarget($outType); if (! $inType) { $obj->croakError("$reportClass: illegal input parameter") ; #return undef ; } # if ($inType eq 'hash') # { # $obj->{Hash} = 1 ; # $obj->{oneInput} = 1 ; # return $obj->validateHash($_[0]); # } if (! $outType) { $obj->croakError("$reportClass: illegal output parameter") ; #return undef ; } if ($inType ne 'fileglob' && $outType eq 'fileglob') { $obj->croakError("Need input fileglob for outout fileglob"); } # if ($inType ne 'fileglob' && $outType eq 'hash' && $inType ne 'filename' ) # { # $obj->croakError("input must ne filename or fileglob when output is a hash"); # } if ($inType eq 'fileglob' && $outType eq 'fileglob') { $data{GlobMap} = 1 ; $data{inType} = $data{outType} = 'filename'; my $mapper = new File::GlobMapper($_[0], $_[1]); if ( ! $mapper ) { return $obj->saveErrorString($File::GlobMapper::Error) ; } $data{Pairs} = $mapper->getFileMap(); return $obj; } $obj->croakError("$reportClass: input and output $inType are identical") if $inType eq $outType && $_[0] eq $_[1] && $_[0] ne '-' ; if ($inType eq 'fileglob') # && $outType ne 'fileglob' { my $glob = cleanFileGlobString($_[0]); my @inputs = glob($glob); if (@inputs == 0) { # TODO -- legal or die? die "globmap matched zero file -- legal or die???" ; } elsif (@inputs == 1) { $obj->validateInputFilenames($inputs[0]) or return undef; $_[0] = $inputs[0] ; $data{inType} = 'filename' ; $data{oneInput} = 1; } else { $obj->validateInputFilenames(@inputs) or return undef; $_[0] = [ @inputs ] ; $data{inType} = 'filenames' ; } } elsif ($inType eq 'filename') { $obj->validateInputFilenames($_[0]) or return undef; } elsif ($inType eq 'array') { $data{inType} = 'filenames' ; $obj->validateInputArray($_[0]) or return undef ; } return $obj->saveErrorString("$reportClass: output buffer is read-only") if $outType eq 'buffer' && readonly(${ $_[1] }); if ($outType eq 'filename' ) { $obj->croakError("$reportClass: output filename is undef or null string") if ! defined $_[1] || $_[1] eq '' ; if (-e $_[1]) { if (-d _ ) { return $obj->saveErrorString("output file '$_[1]' is a directory"); } } } return $obj ; } sub IO::Compress::Base::Validator::saveErrorString { my $self = shift ; ${ $self->{Error} } = shift ; return undef; } sub IO::Compress::Base::Validator::croakError { my $self = shift ; $self->saveErrorString($_[0]); croak $_[0]; } sub IO::Compress::Base::Validator::validateInputFilenames { my $self = shift ; foreach my $filename (@_) { $self->croakError("$self->{reportClass}: input filename is undef or null string") if ! defined $filename || $filename eq '' ; next if $filename eq '-'; if (! -e $filename ) { return $self->saveErrorString("input file '$filename' does not exist"); } if (-d _ ) { return $self->saveErrorString("input file '$filename' is a directory"); } if (! -r _ ) { return $self->saveErrorString("cannot open file '$filename': $!"); } } return 1 ; } sub IO::Compress::Base::Validator::validateInputArray { my $self = shift ; if ( @{ $_[0] } == 0 ) { return $self->saveErrorString("empty array reference") ; } foreach my $element ( @{ $_[0] } ) { my $inType = whatIsInput($element); if (! $inType) { $self->croakError("unknown input parameter") ; } elsif($inType eq 'filename') { $self->validateInputFilenames($element) or return undef ; } else { $self->croakError("not a filename") ; } } return 1 ; } #sub IO::Compress::Base::Validator::validateHash #{ # my $self = shift ; # my $href = shift ; # # while (my($k, $v) = each %$href) # { # my $ktype = whatIsInput($k); # my $vtype = whatIsOutput($v, WANT_EXT|WANT_UNDEF) ; # # if ($ktype ne 'filename') # { # return $self->saveErrorString("hash key not filename") ; # } # # my %valid = map { $_ => 1 } qw(filename buffer array undef handle) ; # if (! $valid{$vtype}) # { # return $self->saveErrorString("hash value not ok") ; # } # } # # return $self ; #} sub createSelfTiedObject { my $class = shift || (caller)[0] ; my $error_ref = shift ; my $obj = bless Symbol::gensym(), ref($class) || $class; tie *$obj, $obj if $] >= 5.005; *$obj->{Closed} = 1 ; $$error_ref = ''; *$obj->{Error} = $error_ref ; my $errno = 0 ; *$obj->{ErrorNo} = \$errno ; return $obj; } #package Parse::Parameters ; # # #require Exporter; #our ($VERSION, @ISA, @EXPORT); #$VERSION = '2.000_08'; #@ISA = qw(Exporter); $EXPORT_TAGS{Parse} = [qw( ParseParameters Parse_any Parse_unsigned Parse_signed Parse_boolean Parse_custom Parse_string Parse_multiple Parse_writable_scalar ) ]; push @EXPORT, @{ $EXPORT_TAGS{Parse} } ; use constant Parse_any => 0x01; use constant Parse_unsigned => 0x02; use constant Parse_signed => 0x04; use constant Parse_boolean => 0x08; use constant Parse_string => 0x10; use constant Parse_custom => 0x12; #use constant Parse_store_ref => 0x100 ; use constant Parse_multiple => 0x100 ; use constant Parse_writable => 0x200 ; use constant Parse_writable_scalar => 0x400 | Parse_writable ; use constant OFF_PARSED => 0 ; use constant OFF_TYPE => 1 ; use constant OFF_DEFAULT => 2 ; use constant OFF_FIXED => 3 ; use constant OFF_FIRST_ONLY => 4 ; use constant OFF_STICKY => 5 ; sub ParseParameters { my $level = shift || 0 ; my $sub = (caller($level + 1))[3] ; local $Carp::CarpLevel = 1 ; return $_[1] if @_ == 2 && defined $_[1] && UNIVERSAL::isa($_[1], "IO::Compress::Base::Parameters"); my $p = new IO::Compress::Base::Parameters() ; $p->parse(@_) or croak "$sub: $p->{Error}" ; return $p; } #package IO::Compress::Base::Parameters; use strict; use warnings; use Carp; sub IO::Compress::Base::Parameters::new { my $class = shift ; my $obj = { Error => '', Got => {}, } ; #return bless $obj, ref($class) || $class || __PACKAGE__ ; return bless $obj, 'IO::Compress::Base::Parameters' ; } sub IO::Compress::Base::Parameters::setError { my $self = shift ; my $error = shift ; my $retval = @_ ? shift : undef ; $self->{Error} = $error ; return $retval; } #sub getError #{ # my $self = shift ; # return $self->{Error} ; #} sub IO::Compress::Base::Parameters::parse { my $self = shift ; my $default = shift ; my $got = $self->{Got} ; my $firstTime = keys %{ $got } == 0 ; my $other; my (@Bad) ; my @entered = () ; # Allow the options to be passed as a hash reference or # as the complete hash. if (@_ == 0) { @entered = () ; } elsif (@_ == 1) { my $href = $_[0] ; return $self->setError("Expected even number of parameters, got 1") if ! defined $href or ! ref $href or ref $href ne "HASH" ; foreach my $key (keys %$href) { push @entered, $key ; push @entered, \$href->{$key} ; } } else { my $count = @_; return $self->setError("Expected even number of parameters, got $count") if $count % 2 != 0 ; for my $i (0.. $count / 2 - 1) { if ($_[2 * $i] eq '__xxx__') { $other = $_[2 * $i + 1] ; } else { push @entered, $_[2 * $i] ; push @entered, \$_[2 * $i + 1] ; } } } while (my ($key, $v) = each %$default) { croak "need 4 params [@$v]" if @$v != 4 ; my ($first_only, $sticky, $type, $value) = @$v ; my $x ; $self->_checkType($key, \$value, $type, 0, \$x) or return undef ; $key = lc $key; if ($firstTime || ! $sticky) { $x = [] if $type & Parse_multiple; $got->{$key} = [0, $type, $value, $x, $first_only, $sticky] ; } $got->{$key}[OFF_PARSED] = 0 ; } my %parsed = (); if ($other) { for my $key (keys %$default) { my $canonkey = lc $key; if ($other->parsed($canonkey)) { my $value = $other->value($canonkey); #print "SET '$canonkey' to $value [$$value]\n"; ++ $parsed{$canonkey}; $got->{$canonkey}[OFF_PARSED] = 1; $got->{$canonkey}[OFF_DEFAULT] = $value; $got->{$canonkey}[OFF_FIXED] = $value; } } } for my $i (0.. @entered / 2 - 1) { my $key = $entered[2* $i] ; my $value = $entered[2* $i+1] ; #print "Key [$key] Value [$value]" ; #print defined $$value ? "[$$value]\n" : "[undef]\n"; $key =~ s/^-// ; my $canonkey = lc $key; if ($got->{$canonkey} && ($firstTime || ! $got->{$canonkey}[OFF_FIRST_ONLY] )) { my $type = $got->{$canonkey}[OFF_TYPE] ; my $parsed = $parsed{$canonkey}; ++ $parsed{$canonkey}; return $self->setError("Muliple instances of '$key' found") if $parsed && ($type & Parse_multiple) == 0 ; my $s ; $self->_checkType($key, $value, $type, 1, \$s) or return undef ; $value = $$value ; if ($type & Parse_multiple) { $got->{$canonkey}[OFF_PARSED] = 1; push @{ $got->{$canonkey}[OFF_FIXED] }, $s ; } else { $got->{$canonkey} = [1, $type, $value, $s] ; } } else { push (@Bad, $key) } } if (@Bad) { my ($bad) = join(", ", @Bad) ; return $self->setError("unknown key value(s) $bad") ; } return 1; } sub IO::Compress::Base::Parameters::_checkType { my $self = shift ; my $key = shift ; my $value = shift ; my $type = shift ; my $validate = shift ; my $output = shift; #local $Carp::CarpLevel = $level ; #print "PARSE $type $key $value $validate $sub\n" ; if ($type & Parse_writable_scalar) { return $self->setError("Parameter '$key' not writable") if $validate && readonly $$value ; if (ref $$value) { return $self->setError("Parameter '$key' not a scalar reference") if $validate && ref $$value ne 'SCALAR' ; $$output = $$value ; } else { return $self->setError("Parameter '$key' not a scalar") if $validate && ref $value ne 'SCALAR' ; $$output = $value ; } return 1; } # if ($type & Parse_store_ref) # { # #$value = $$value # # if ref ${ $value } ; # # $$output = $value ; # return 1; # } $value = $$value ; if ($type & Parse_any) { $$output = $value ; return 1; } elsif ($type & Parse_unsigned) { return $self->setError("Parameter '$key' must be an unsigned int, got 'undef'") if $validate && ! defined $value ; return $self->setError("Parameter '$key' must be an unsigned int, got '$value'") if $validate && $value !~ /^\d+$/; $$output = defined $value ? $value : 0 ; return 1; } elsif ($type & Parse_signed) { return $self->setError("Parameter '$key' must be a signed int, got 'undef'") if $validate && ! defined $value ; return $self->setError("Parameter '$key' must be a signed int, got '$value'") if $validate && $value !~ /^-?\d+$/; $$output = defined $value ? $value : 0 ; return 1 ; } elsif ($type & Parse_boolean) { return $self->setError("Parameter '$key' must be an int, got '$value'") if $validate && defined $value && $value !~ /^\d*$/; $$output = defined $value ? $value != 0 : 0 ; return 1; } elsif ($type & Parse_string) { $$output = defined $value ? $value : "" ; return 1; } $$output = $value ; return 1; } sub IO::Compress::Base::Parameters::parsed { my $self = shift ; my $name = shift ; return $self->{Got}{lc $name}[OFF_PARSED] ; } sub IO::Compress::Base::Parameters::value { my $self = shift ; my $name = shift ; if (@_) { $self->{Got}{lc $name}[OFF_PARSED] = 1; $self->{Got}{lc $name}[OFF_DEFAULT] = $_[0] ; $self->{Got}{lc $name}[OFF_FIXED] = $_[0] ; } return $self->{Got}{lc $name}[OFF_FIXED] ; } sub IO::Compress::Base::Parameters::valueOrDefault { my $self = shift ; my $name = shift ; my $default = shift ; my $value = $self->{Got}{lc $name}[OFF_DEFAULT] ; return $value if defined $value ; return $default ; } sub IO::Compress::Base::Parameters::wantValue { my $self = shift ; my $name = shift ; return defined $self->{Got}{lc $name}[OFF_DEFAULT] ; } sub IO::Compress::Base::Parameters::clone { my $self = shift ; my $obj = { }; my %got ; while (my ($k, $v) = each %{ $self->{Got} }) { $got{$k} = [ @$v ]; } $obj->{Error} = $self->{Error}; $obj->{Got} = \%got ; return bless $obj, 'IO::Compress::Base::Parameters' ; } package U64; use constant MAX32 => 0xFFFFFFFF ; use constant HI_1 => MAX32 + 1 ; use constant LOW => 0 ; use constant HIGH => 1; sub new { my $class = shift ; my $high = 0 ; my $low = 0 ; if (@_ == 2) { $high = shift ; $low = shift ; } elsif (@_ == 1) { $low = shift ; } bless [$low, $high], $class; } sub newUnpack_V64 { my $string = shift; my ($low, $hi) = unpack "V V", $string ; bless [ $low, $hi ], "U64"; } sub newUnpack_V32 { my $string = shift; my $low = unpack "V", $string ; bless [ $low, 0 ], "U64"; } sub reset { my $self = shift; $self->[HIGH] = $self->[LOW] = 0; } sub clone { my $self = shift; bless [ @$self ], ref $self ; } sub getHigh { my $self = shift; return $self->[HIGH]; } sub getLow { my $self = shift; return $self->[LOW]; } sub get32bit { my $self = shift; return $self->[LOW]; } sub get64bit { my $self = shift; # Not using << here because the result will still be # a 32-bit value on systems where int size is 32-bits return $self->[HIGH] * HI_1 + $self->[LOW]; } sub add { my $self = shift; my $value = shift; if (ref $value eq 'U64') { $self->[HIGH] += $value->[HIGH] ; $value = $value->[LOW]; } my $available = MAX32 - $self->[LOW] ; if ($value > $available) { ++ $self->[HIGH] ; $self->[LOW] = $value - $available - 1; } else { $self->[LOW] += $value ; } } sub equal { my $self = shift; my $other = shift; return $self->[LOW] == $other->[LOW] && $self->[HIGH] == $other->[HIGH] ; } sub is64bit { my $self = shift; return $self->[HIGH] > 0 ; } sub getPacked_V64 { my $self = shift; return pack "V V", @$self ; } sub getPacked_V32 { my $self = shift; return pack "V", $self->[LOW] ; } sub pack_V64 { my $low = shift; return pack "V V", $low, 0; } package IO::Compress::Base::Common; 1; FILEad34a023/IO/Compress/Gzip.pm#line 1 "/usr/share/perl/5.14/IO/Compress/Gzip.pm" package IO::Compress::Gzip ; require 5.004 ; use strict ; use warnings; use bytes; use IO::Compress::RawDeflate 2.033 ; use Compress::Raw::Zlib 2.033 ; use IO::Compress::Base::Common 2.033 qw(:Status :Parse createSelfTiedObject); use IO::Compress::Gzip::Constants 2.033 ; use IO::Compress::Zlib::Extra 2.033 ; BEGIN { if (defined &utf8::downgrade ) { *noUTF8 = \&utf8::downgrade } else { *noUTF8 = sub {} } } require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $GzipError); $VERSION = '2.033'; $GzipError = '' ; @ISA = qw(Exporter IO::Compress::RawDeflate); @EXPORT_OK = qw( $GzipError gzip ) ; %EXPORT_TAGS = %IO::Compress::RawDeflate::DEFLATE_CONSTANTS ; push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); sub new { my $class = shift ; my $obj = createSelfTiedObject($class, \$GzipError); $obj->_create(undef, @_); } sub gzip { my $obj = createSelfTiedObject(undef, \$GzipError); return $obj->_def(@_); } #sub newHeader #{ # my $self = shift ; # #return GZIP_MINIMUM_HEADER ; # return $self->mkHeader(*$self->{Got}); #} sub getExtraParams { my $self = shift ; return ( # zlib behaviour $self->getZlibParams(), # Gzip header fields 'Minimal' => [0, 1, Parse_boolean, 0], 'Comment' => [0, 1, Parse_any, undef], 'Name' => [0, 1, Parse_any, undef], 'Time' => [0, 1, Parse_any, undef], 'TextFlag' => [0, 1, Parse_boolean, 0], 'HeaderCRC' => [0, 1, Parse_boolean, 0], 'OS_Code' => [0, 1, Parse_unsigned, $Compress::Raw::Zlib::gzip_os_code], 'ExtraField'=> [0, 1, Parse_any, undef], 'ExtraFlags'=> [0, 1, Parse_any, undef], ); } sub ckParams { my $self = shift ; my $got = shift ; # gzip always needs crc32 $got->value('CRC32' => 1); return 1 if $got->value('Merge') ; my $strict = $got->value('Strict') ; { if (! $got->parsed('Time') ) { # Modification time defaults to now. $got->value('Time' => time) ; } # Check that the Name & Comment don't have embedded NULLs # Also check that they only contain ISO 8859-1 chars. if ($got->parsed('Name') && defined $got->value('Name')) { my $name = $got->value('Name'); return $self->saveErrorString(undef, "Null Character found in Name", Z_DATA_ERROR) if $strict && $name =~ /\x00/ ; return $self->saveErrorString(undef, "Non ISO 8859-1 Character found in Name", Z_DATA_ERROR) if $strict && $name =~ /$GZIP_FNAME_INVALID_CHAR_RE/o ; } if ($got->parsed('Comment') && defined $got->value('Comment')) { my $comment = $got->value('Comment'); return $self->saveErrorString(undef, "Null Character found in Comment", Z_DATA_ERROR) if $strict && $comment =~ /\x00/ ; return $self->saveErrorString(undef, "Non ISO 8859-1 Character found in Comment", Z_DATA_ERROR) if $strict && $comment =~ /$GZIP_FCOMMENT_INVALID_CHAR_RE/o; } if ($got->parsed('OS_Code') ) { my $value = $got->value('OS_Code'); return $self->saveErrorString(undef, "OS_Code must be between 0 and 255, got '$value'") if $value < 0 || $value > 255 ; } # gzip only supports Deflate at present $got->value('Method' => Z_DEFLATED) ; if ( ! $got->parsed('ExtraFlags')) { $got->value('ExtraFlags' => 2) if $got->value('Level') == Z_BEST_COMPRESSION ; $got->value('ExtraFlags' => 4) if $got->value('Level') == Z_BEST_SPEED ; } my $data = $got->value('ExtraField') ; if (defined $data) { my $bad = IO::Compress::Zlib::Extra::parseExtraField($data, $strict, 1) ; return $self->saveErrorString(undef, "Error with ExtraField Parameter: $bad", Z_DATA_ERROR) if $bad ; $got->value('ExtraField', $data) ; } } return 1; } sub mkTrailer { my $self = shift ; return pack("V V", *$self->{Compress}->crc32(), *$self->{UnCompSize}->get32bit()); } sub getInverseClass { return ('IO::Uncompress::Gunzip', \$IO::Uncompress::Gunzip::GunzipError); } sub getFileInfo { my $self = shift ; my $params = shift; my $filename = shift ; my $defaultTime = (stat($filename))[9] ; $params->value('Name' => $filename) if ! $params->parsed('Name') ; $params->value('Time' => $defaultTime) if ! $params->parsed('Time') ; } sub mkHeader { my $self = shift ; my $param = shift ; # stort-circuit if a minimal header is requested. return GZIP_MINIMUM_HEADER if $param->value('Minimal') ; # METHOD my $method = $param->valueOrDefault('Method', GZIP_CM_DEFLATED) ; # FLAGS my $flags = GZIP_FLG_DEFAULT ; $flags |= GZIP_FLG_FTEXT if $param->value('TextFlag') ; $flags |= GZIP_FLG_FHCRC if $param->value('HeaderCRC') ; $flags |= GZIP_FLG_FEXTRA if $param->wantValue('ExtraField') ; $flags |= GZIP_FLG_FNAME if $param->wantValue('Name') ; $flags |= GZIP_FLG_FCOMMENT if $param->wantValue('Comment') ; # MTIME my $time = $param->valueOrDefault('Time', GZIP_MTIME_DEFAULT) ; # EXTRA FLAGS my $extra_flags = $param->valueOrDefault('ExtraFlags', GZIP_XFL_DEFAULT); # OS CODE my $os_code = $param->valueOrDefault('OS_Code', GZIP_OS_DEFAULT) ; my $out = pack("C4 V C C", GZIP_ID1, # ID1 GZIP_ID2, # ID2 $method, # Compression Method $flags, # Flags $time, # Modification Time $extra_flags, # Extra Flags $os_code, # Operating System Code ) ; # EXTRA if ($flags & GZIP_FLG_FEXTRA) { my $extra = $param->value('ExtraField') ; $out .= pack("v", length $extra) . $extra ; } # NAME if ($flags & GZIP_FLG_FNAME) { my $name .= $param->value('Name') ; $name =~ s/\x00.*$//; $out .= $name ; # Terminate the filename with NULL unless it already is $out .= GZIP_NULL_BYTE if !length $name or substr($name, 1, -1) ne GZIP_NULL_BYTE ; } # COMMENT if ($flags & GZIP_FLG_FCOMMENT) { my $comment .= $param->value('Comment') ; $comment =~ s/\x00.*$//; $out .= $comment ; # Terminate the comment with NULL unless it already is $out .= GZIP_NULL_BYTE if ! length $comment or substr($comment, 1, -1) ne GZIP_NULL_BYTE; } # HEADER CRC $out .= pack("v", crc32($out) & 0x00FF ) if $param->value('HeaderCRC') ; noUTF8($out); return $out ; } sub mkFinalTrailer { return ''; } 1; __END__ #line 1243 FILE&a7d91066/IO/Compress/Gzip/Constants.pm|#line 1 "/usr/share/perl/5.14/IO/Compress/Gzip/Constants.pm" package IO::Compress::Gzip::Constants; use strict ; use warnings; use bytes; require Exporter; our ($VERSION, @ISA, @EXPORT, %GZIP_OS_Names); our ($GZIP_FNAME_INVALID_CHAR_RE, $GZIP_FCOMMENT_INVALID_CHAR_RE); $VERSION = '2.033'; @ISA = qw(Exporter); @EXPORT= qw( GZIP_ID_SIZE GZIP_ID1 GZIP_ID2 GZIP_FLG_DEFAULT GZIP_FLG_FTEXT GZIP_FLG_FHCRC GZIP_FLG_FEXTRA GZIP_FLG_FNAME GZIP_FLG_FCOMMENT GZIP_FLG_RESERVED GZIP_CM_DEFLATED GZIP_MIN_HEADER_SIZE GZIP_TRAILER_SIZE GZIP_MTIME_DEFAULT GZIP_XFL_DEFAULT GZIP_FEXTRA_HEADER_SIZE GZIP_FEXTRA_MAX_SIZE GZIP_FEXTRA_SUBFIELD_HEADER_SIZE GZIP_FEXTRA_SUBFIELD_ID_SIZE GZIP_FEXTRA_SUBFIELD_LEN_SIZE GZIP_FEXTRA_SUBFIELD_MAX_SIZE $GZIP_FNAME_INVALID_CHAR_RE $GZIP_FCOMMENT_INVALID_CHAR_RE GZIP_FHCRC_SIZE GZIP_ISIZE_MAX GZIP_ISIZE_MOD_VALUE GZIP_NULL_BYTE GZIP_OS_DEFAULT %GZIP_OS_Names GZIP_MINIMUM_HEADER ); # Constant names derived from RFC 1952 use constant GZIP_ID_SIZE => 2 ; use constant GZIP_ID1 => 0x1F; use constant GZIP_ID2 => 0x8B; use constant GZIP_MIN_HEADER_SIZE => 10 ;# minimum gzip header size use constant GZIP_TRAILER_SIZE => 8 ; use constant GZIP_FLG_DEFAULT => 0x00 ; use constant GZIP_FLG_FTEXT => 0x01 ; use constant GZIP_FLG_FHCRC => 0x02 ; # called CONTINUATION in gzip use constant GZIP_FLG_FEXTRA => 0x04 ; use constant GZIP_FLG_FNAME => 0x08 ; use constant GZIP_FLG_FCOMMENT => 0x10 ; #use constant GZIP_FLG_ENCRYPTED => 0x20 ; # documented in gzip sources use constant GZIP_FLG_RESERVED => (0x20 | 0x40 | 0x80) ; use constant GZIP_XFL_DEFAULT => 0x00 ; use constant GZIP_MTIME_DEFAULT => 0x00 ; use constant GZIP_FEXTRA_HEADER_SIZE => 2 ; use constant GZIP_FEXTRA_MAX_SIZE => 0xFFFF ; use constant GZIP_FEXTRA_SUBFIELD_ID_SIZE => 2 ; use constant GZIP_FEXTRA_SUBFIELD_LEN_SIZE => 2 ; use constant GZIP_FEXTRA_SUBFIELD_HEADER_SIZE => GZIP_FEXTRA_SUBFIELD_ID_SIZE + GZIP_FEXTRA_SUBFIELD_LEN_SIZE; use constant GZIP_FEXTRA_SUBFIELD_MAX_SIZE => GZIP_FEXTRA_MAX_SIZE - GZIP_FEXTRA_SUBFIELD_HEADER_SIZE ; if (ord('A') == 193) { # EBCDIC $GZIP_FNAME_INVALID_CHAR_RE = '[\x00-\x3f\xff]'; $GZIP_FCOMMENT_INVALID_CHAR_RE = '[\x00-\x0a\x11-\x14\x16-\x3f\xff]'; } else { $GZIP_FNAME_INVALID_CHAR_RE = '[\x00-\x1F\x7F-\x9F]'; $GZIP_FCOMMENT_INVALID_CHAR_RE = '[\x00-\x09\x11-\x1F\x7F-\x9F]'; } use constant GZIP_FHCRC_SIZE => 2 ; # aka CONTINUATION in gzip use constant GZIP_CM_DEFLATED => 8 ; use constant GZIP_NULL_BYTE => "\x00"; use constant GZIP_ISIZE_MAX => 0xFFFFFFFF ; use constant GZIP_ISIZE_MOD_VALUE => GZIP_ISIZE_MAX + 1 ; # OS Names sourced from http://www.gzip.org/format.txt use constant GZIP_OS_DEFAULT=> 0xFF ; %GZIP_OS_Names = ( 0 => 'MS-DOS', 1 => 'Amiga', 2 => 'VMS', 3 => 'Unix', 4 => 'VM/CMS', 5 => 'Atari TOS', 6 => 'HPFS (OS/2, NT)', 7 => 'Macintosh', 8 => 'Z-System', 9 => 'CP/M', 10 => 'TOPS-20', 11 => 'NTFS (NT)', 12 => 'SMS QDOS', 13 => 'Acorn RISCOS', 14 => 'VFAT file system (Win95, NT)', 15 => 'MVS', 16 => 'BeOS', 17 => 'Tandem/NSK', 18 => 'THEOS', GZIP_OS_DEFAULT() => 'Unknown', ) ; use constant GZIP_MINIMUM_HEADER => pack("C4 V C C", GZIP_ID1, GZIP_ID2, GZIP_CM_DEFLATED, GZIP_FLG_DEFAULT, GZIP_MTIME_DEFAULT, GZIP_XFL_DEFAULT, GZIP_OS_DEFAULT) ; 1; FILE"0c755159/IO/Compress/RawDeflate.pmr#line 1 "/usr/share/perl/5.14/IO/Compress/RawDeflate.pm" package IO::Compress::RawDeflate ; # create RFC1951 # use strict ; use warnings; use bytes; use IO::Compress::Base 2.033 ; use IO::Compress::Base::Common 2.033 qw(:Status createSelfTiedObject); use IO::Compress::Adapter::Deflate 2.033 ; require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %DEFLATE_CONSTANTS, %EXPORT_TAGS, $RawDeflateError); $VERSION = '2.033'; $RawDeflateError = ''; @ISA = qw(Exporter IO::Compress::Base); @EXPORT_OK = qw( $RawDeflateError rawdeflate ) ; %EXPORT_TAGS = ( flush => [qw{ Z_NO_FLUSH Z_PARTIAL_FLUSH Z_SYNC_FLUSH Z_FULL_FLUSH Z_FINISH Z_BLOCK }], level => [qw{ Z_NO_COMPRESSION Z_BEST_SPEED Z_BEST_COMPRESSION Z_DEFAULT_COMPRESSION }], strategy => [qw{ Z_FILTERED Z_HUFFMAN_ONLY Z_RLE Z_FIXED Z_DEFAULT_STRATEGY }], ); { my %seen; foreach (keys %EXPORT_TAGS ) { push @{$EXPORT_TAGS{constants}}, grep { !$seen{$_}++ } @{ $EXPORT_TAGS{$_} } } $EXPORT_TAGS{all} = $EXPORT_TAGS{constants} ; } %DEFLATE_CONSTANTS = %EXPORT_TAGS; push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); sub new { my $class = shift ; my $obj = createSelfTiedObject($class, \$RawDeflateError); return $obj->_create(undef, @_); } sub rawdeflate { my $obj = createSelfTiedObject(undef, \$RawDeflateError); return $obj->_def(@_); } sub ckParams { my $self = shift ; my $got = shift; return 1 ; } sub mkComp { my $self = shift ; my $got = shift ; my ($obj, $errstr, $errno) = IO::Compress::Adapter::Deflate::mkCompObject( $got->value('CRC32'), $got->value('Adler32'), $got->value('Level'), $got->value('Strategy') ); return $self->saveErrorString(undef, $errstr, $errno) if ! defined $obj; return $obj; } sub mkHeader { my $self = shift ; return ''; } sub mkTrailer { my $self = shift ; return ''; } sub mkFinalTrailer { return ''; } #sub newHeader #{ # my $self = shift ; # return ''; #} sub getExtraParams { my $self = shift ; return $self->getZlibParams(); } sub getZlibParams { my $self = shift ; use IO::Compress::Base::Common 2.033 qw(:Parse); use Compress::Raw::Zlib 2.033 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY); return ( # zlib behaviour #'Method' => [0, 1, Parse_unsigned, Z_DEFLATED], 'Level' => [0, 1, Parse_signed, Z_DEFAULT_COMPRESSION], 'Strategy' => [0, 1, Parse_signed, Z_DEFAULT_STRATEGY], 'CRC32' => [0, 1, Parse_boolean, 0], 'ADLER32' => [0, 1, Parse_boolean, 0], 'Merge' => [1, 1, Parse_boolean, 0], ); } sub getInverseClass { return ('IO::Uncompress::RawInflate', \$IO::Uncompress::RawInflate::RawInflateError); } sub getFileInfo { my $self = shift ; my $params = shift; my $file = shift ; } use IO::Seekable qw(SEEK_SET); sub createMerge { my $self = shift ; my $outValue = shift ; my $outType = shift ; my ($invClass, $error_ref) = $self->getInverseClass(); eval "require $invClass" or die "aaaahhhh" ; my $inf = $invClass->new( $outValue, Transparent => 0, #Strict => 1, AutoClose => 0, Scan => 1) or return $self->saveErrorString(undef, "Cannot create InflateScan object: $$error_ref" ) ; my $end_offset = 0; $inf->scan() or return $self->saveErrorString(undef, "Error Scanning: $$error_ref", $inf->errorNo) ; $inf->zap($end_offset) or return $self->saveErrorString(undef, "Error Zapping: $$error_ref", $inf->errorNo) ; my $def = *$self->{Compress} = $inf->createDeflate(); *$self->{Header} = *$inf->{Info}{Header}; *$self->{UnCompSize} = *$inf->{UnCompSize}->clone(); *$self->{CompSize} = *$inf->{CompSize}->clone(); # TODO -- fix this #*$self->{CompSize} = new U64(0, *$self->{UnCompSize_32bit}); if ( $outType eq 'buffer') { substr( ${ *$self->{Buffer} }, $end_offset) = '' } elsif ($outType eq 'handle' || $outType eq 'filename') { *$self->{FH} = *$inf->{FH} ; delete *$inf->{FH}; *$self->{FH}->flush() ; *$self->{Handle} = 1 if $outType eq 'handle'; #seek(*$self->{FH}, $end_offset, SEEK_SET) *$self->{FH}->seek($end_offset, SEEK_SET) or return $self->saveErrorString(undef, $!, $!) ; } return $def ; } #### zlib specific methods sub deflateParams { my $self = shift ; my $level = shift ; my $strategy = shift ; my $status = *$self->{Compress}->deflateParams(Level => $level, Strategy => $strategy) ; return $self->saveErrorString(0, *$self->{Compress}{Error}, *$self->{Compress}{ErrorNo}) if $status == STATUS_ERROR; return 1; } 1; __END__ #line 1018 FILE"11c27802/IO/Compress/Zlib/Extra.pm#line 1 "/usr/share/perl/5.14/IO/Compress/Zlib/Extra.pm" package IO::Compress::Zlib::Extra; require 5.004 ; use strict ; use warnings; use bytes; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS); $VERSION = '2.033'; use IO::Compress::Gzip::Constants 2.033 ; sub ExtraFieldError { return $_[0]; return "Error with ExtraField Parameter: $_[0]" ; } sub validateExtraFieldPair { my $pair = shift ; my $strict = shift; my $gzipMode = shift ; return ExtraFieldError("Not an array ref") unless ref $pair && ref $pair eq 'ARRAY'; return ExtraFieldError("SubField must have two parts") unless @$pair == 2 ; return ExtraFieldError("SubField ID is a reference") if ref $pair->[0] ; return ExtraFieldError("SubField Data is a reference") if ref $pair->[1] ; # ID is exactly two chars return ExtraFieldError("SubField ID not two chars long") unless length $pair->[0] == GZIP_FEXTRA_SUBFIELD_ID_SIZE ; # Check that the 2nd byte of the ID isn't 0 return ExtraFieldError("SubField ID 2nd byte is 0x00") if $strict && $gzipMode && substr($pair->[0], 1, 1) eq "\x00" ; return ExtraFieldError("SubField Data too long") if length $pair->[1] > GZIP_FEXTRA_SUBFIELD_MAX_SIZE ; return undef ; } sub parseRawExtra { my $data = shift ; my $extraRef = shift; my $strict = shift; my $gzipMode = shift ; #my $lax = shift ; #return undef # if $lax ; my $XLEN = length $data ; return ExtraFieldError("Too Large") if $XLEN > GZIP_FEXTRA_MAX_SIZE; my $offset = 0 ; while ($offset < $XLEN) { return ExtraFieldError("Truncated in FEXTRA Body Section") if $offset + GZIP_FEXTRA_SUBFIELD_HEADER_SIZE > $XLEN ; my $id = substr($data, $offset, GZIP_FEXTRA_SUBFIELD_ID_SIZE); $offset += GZIP_FEXTRA_SUBFIELD_ID_SIZE; my $subLen = unpack("v", substr($data, $offset, GZIP_FEXTRA_SUBFIELD_LEN_SIZE)); $offset += GZIP_FEXTRA_SUBFIELD_LEN_SIZE ; return ExtraFieldError("Truncated in FEXTRA Body Section") if $offset + $subLen > $XLEN ; my $bad = validateExtraFieldPair( [$id, substr($data, $offset, $subLen)], $strict, $gzipMode ); return $bad if $bad ; push @$extraRef, [$id => substr($data, $offset, $subLen)] if defined $extraRef;; $offset += $subLen ; } return undef ; } sub mkSubField { my $id = shift ; my $data = shift ; return $id . pack("v", length $data) . $data ; } sub parseExtraField { my $dataRef = $_[0]; my $strict = $_[1]; my $gzipMode = $_[2]; #my $lax = @_ == 2 ? $_[1] : 1; # ExtraField can be any of # # -ExtraField => $data # # -ExtraField => [$id1, $data1, # $id2, $data2] # ... # ] # # -ExtraField => [ [$id1 => $data1], # [$id2 => $data2], # ... # ] # # -ExtraField => { $id1 => $data1, # $id2 => $data2, # ... # } if ( ! ref $dataRef ) { return undef if ! $strict; return parseRawExtra($dataRef, undef, 1, $gzipMode); } #my $data = $$dataRef; my $data = $dataRef; my $out = '' ; if (ref $data eq 'ARRAY') { if (ref $data->[0]) { foreach my $pair (@$data) { return ExtraFieldError("Not list of lists") unless ref $pair eq 'ARRAY' ; my $bad = validateExtraFieldPair($pair, $strict, $gzipMode) ; return $bad if $bad ; $out .= mkSubField(@$pair); } } else { return ExtraFieldError("Not even number of elements") unless @$data % 2 == 0; for (my $ix = 0; $ix <= length(@$data) -1 ; $ix += 2) { my $bad = validateExtraFieldPair([$data->[$ix], $data->[$ix+1]], $strict, $gzipMode) ; return $bad if $bad ; $out .= mkSubField($data->[$ix], $data->[$ix+1]); } } } elsif (ref $data eq 'HASH') { while (my ($id, $info) = each %$data) { my $bad = validateExtraFieldPair([$id, $info], $strict, $gzipMode); return $bad if $bad ; $out .= mkSubField($id, $info); } } else { return ExtraFieldError("Not a scalar, array ref or hash ref") ; } return ExtraFieldError("Too Large") if length $out > GZIP_FEXTRA_MAX_SIZE; $_[0] = $out ; return undef; } 1; __END__ FILE)2e176626/IO/Uncompress/Adapter/Inflate.pm #line 1 "/usr/share/perl/5.14/IO/Uncompress/Adapter/Inflate.pm" package IO::Uncompress::Adapter::Inflate; use strict; use warnings; use bytes; use IO::Compress::Base::Common 2.033 qw(:Status); use Compress::Raw::Zlib 2.033 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS); our ($VERSION); $VERSION = '2.033'; sub mkUncompObject { my $crc32 = shift || 1; my $adler32 = shift || 1; my $scan = shift || 0; my $inflate ; my $status ; if ($scan) { ($inflate, $status) = new Compress::Raw::Zlib::InflateScan #LimitOutput => 1, CRC32 => $crc32, ADLER32 => $adler32, WindowBits => - MAX_WBITS ; } else { ($inflate, $status) = new Compress::Raw::Zlib::Inflate AppendOutput => 1, LimitOutput => 1, CRC32 => $crc32, ADLER32 => $adler32, WindowBits => - MAX_WBITS ; } return (undef, "Could not create Inflation object: $status", $status) if $status != Z_OK ; return bless {'Inf' => $inflate, 'CompSize' => 0, 'UnCompSize' => 0, 'Error' => '', 'ConsumesInput' => 1, } ; } sub uncompr { my $self = shift ; my $from = shift ; my $to = shift ; my $eof = shift ; my $inf = $self->{Inf}; my $status = $inf->inflate($from, $to, $eof); $self->{ErrorNo} = $status; if ($status != Z_OK && $status != Z_STREAM_END && $status != Z_BUF_ERROR) { $self->{Error} = "Inflation Error: $status"; return STATUS_ERROR; } return STATUS_OK if $status == Z_BUF_ERROR ; # ??? return STATUS_OK if $status == Z_OK ; return STATUS_ENDSTREAM if $status == Z_STREAM_END ; return STATUS_ERROR ; } sub reset { my $self = shift ; $self->{Inf}->inflateReset(); return STATUS_OK ; } #sub count #{ # my $self = shift ; # $self->{Inf}->inflateCount(); #} sub crc32 { my $self = shift ; $self->{Inf}->crc32(); } sub compressedBytes { my $self = shift ; $self->{Inf}->compressedBytes(); } sub uncompressedBytes { my $self = shift ; $self->{Inf}->uncompressedBytes(); } sub adler32 { my $self = shift ; $self->{Inf}->adler32(); } sub sync { my $self = shift ; ( $self->{Inf}->inflateSync(@_) == Z_OK) ? STATUS_OK : STATUS_ERROR ; } sub getLastBlockOffset { my $self = shift ; $self->{Inf}->getLastBlockOffset(); } sub getEndOffset { my $self = shift ; $self->{Inf}->getEndOffset(); } sub resetLastBlockByte { my $self = shift ; $self->{Inf}->resetLastBlockByte(@_); } sub createDeflateStream { my $self = shift ; my $deflate = $self->{Inf}->createDeflateStream(@_); return bless {'Def' => $deflate, 'CompSize' => 0, 'UnCompSize' => 0, 'Error' => '', }, 'IO::Compress::Adapter::Deflate'; } 1; __END__ FILE0e4c6a74/IO/Uncompress/Base.pm(#line 1 "/usr/share/perl/5.14/IO/Uncompress/Base.pm" package IO::Uncompress::Base ; use strict ; use warnings; use bytes; our (@ISA, $VERSION, @EXPORT_OK, %EXPORT_TAGS); @ISA = qw(Exporter IO::File); $VERSION = '2.033'; use constant G_EOF => 0 ; use constant G_ERR => -1 ; use IO::Compress::Base::Common 2.033 ; #use Parse::Parameters ; use IO::File ; use Symbol; use Scalar::Util qw(readonly); use List::Util qw(min); use Carp ; %EXPORT_TAGS = ( ); push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; #Exporter::export_ok_tags('all') ; sub smartRead { my $self = $_[0]; my $out = $_[1]; my $size = $_[2]; #$$out = "" ; $$out = "" ; my $offset = 0 ; my $status = 1; if (defined *$self->{InputLength}) { return 0 if *$self->{InputLengthRemaining} <= 0 ; $size = min($size, *$self->{InputLengthRemaining}); } if ( length *$self->{Prime} ) { #$$out = substr(*$self->{Prime}, 0, $size, '') ; $$out = substr(*$self->{Prime}, 0, $size) ; substr(*$self->{Prime}, 0, $size) = '' ; if (length $$out == $size) { *$self->{InputLengthRemaining} -= length $$out if defined *$self->{InputLength}; return length $$out ; } $offset = length $$out ; } my $get_size = $size - $offset ; if (defined *$self->{FH}) { if ($offset) { # Not using this # # *$self->{FH}->read($$out, $get_size, $offset); # # because the filehandle may not support the offset parameter # An example is Net::FTP my $tmp = ''; $status = *$self->{FH}->read($tmp, $get_size) ; substr($$out, $offset) = $tmp if defined $status && $status > 0 ; } else { $status = *$self->{FH}->read($$out, $get_size) } } elsif (defined *$self->{InputEvent}) { my $got = 1 ; while (length $$out < $size) { last if ($got = *$self->{InputEvent}->($$out, $get_size)) <= 0; } if (length $$out > $size ) { #*$self->{Prime} = substr($$out, $size, length($$out), ''); *$self->{Prime} = substr($$out, $size, length($$out)); substr($$out, $size, length($$out)) = ''; } *$self->{EventEof} = 1 if $got <= 0 ; } else { no warnings 'uninitialized'; my $buf = *$self->{Buffer} ; $$buf = '' unless defined $$buf ; #$$out = '' unless defined $$out ; substr($$out, $offset) = substr($$buf, *$self->{BufferOffset}, $get_size); if (*$self->{ConsumeInput}) { substr($$buf, 0, $get_size) = '' } else { *$self->{BufferOffset} += length($$out) - $offset } } *$self->{InputLengthRemaining} -= length($$out) #- $offset if defined *$self->{InputLength}; if (! defined $status) { $self->saveStatus($!) ; return STATUS_ERROR; } $self->saveStatus(length $$out < 0 ? STATUS_ERROR : STATUS_OK) ; return length $$out; } sub pushBack { my $self = shift ; return if ! defined $_[0] || length $_[0] == 0 ; if (defined *$self->{FH} || defined *$self->{InputEvent} ) { *$self->{Prime} = $_[0] . *$self->{Prime} ; *$self->{InputLengthRemaining} += length($_[0]); } else { my $len = length $_[0]; if($len > *$self->{BufferOffset}) { *$self->{Prime} = substr($_[0], 0, $len - *$self->{BufferOffset}) . *$self->{Prime} ; *$self->{InputLengthRemaining} = *$self->{InputLength}; *$self->{BufferOffset} = 0 } else { *$self->{InputLengthRemaining} += length($_[0]); *$self->{BufferOffset} -= length($_[0]) ; } } } sub smartSeek { my $self = shift ; my $offset = shift ; my $truncate = shift; #print "smartSeek to $offset\n"; # TODO -- need to take prime into account if (defined *$self->{FH}) { *$self->{FH}->seek($offset, SEEK_SET) } else { *$self->{BufferOffset} = $offset ; substr(${ *$self->{Buffer} }, *$self->{BufferOffset}) = '' if $truncate; return 1; } } sub smartWrite { my $self = shift ; my $out_data = shift ; if (defined *$self->{FH}) { # flush needed for 5.8.0 defined *$self->{FH}->write($out_data, length $out_data) && defined *$self->{FH}->flush() ; } else { my $buf = *$self->{Buffer} ; substr($$buf, *$self->{BufferOffset}, length $out_data) = $out_data ; *$self->{BufferOffset} += length($out_data) ; return 1; } } sub smartReadExact { return $_[0]->smartRead($_[1], $_[2]) == $_[2]; } sub smartEof { my ($self) = $_[0]; local $.; return 0 if length *$self->{Prime} || *$self->{PushMode}; if (defined *$self->{FH}) { # Could use # # *$self->{FH}->eof() # # here, but this can cause trouble if # the filehandle is itself a tied handle, but it uses sysread. # Then we get into mixing buffered & non-buffered IO, which will cause trouble my $info = $self->getErrInfo(); my $buffer = ''; my $status = $self->smartRead(\$buffer, 1); $self->pushBack($buffer) if length $buffer; $self->setErrInfo($info); return $status == 0 ; } elsif (defined *$self->{InputEvent}) { *$self->{EventEof} } else { *$self->{BufferOffset} >= length(${ *$self->{Buffer} }) } } sub clearError { my $self = shift ; *$self->{ErrorNo} = 0 ; ${ *$self->{Error} } = '' ; } sub getErrInfo { my $self = shift ; return [ *$self->{ErrorNo}, ${ *$self->{Error} } ] ; } sub setErrInfo { my $self = shift ; my $ref = shift; *$self->{ErrorNo} = $ref->[0] ; ${ *$self->{Error} } = $ref->[1] ; } sub saveStatus { my $self = shift ; my $errno = shift() + 0 ; #return $errno unless $errno || ! defined *$self->{ErrorNo}; #return $errno unless $errno ; *$self->{ErrorNo} = $errno; ${ *$self->{Error} } = '' ; return *$self->{ErrorNo} ; } sub saveErrorString { my $self = shift ; my $retval = shift ; #return $retval if ${ *$self->{Error} }; ${ *$self->{Error} } = shift ; *$self->{ErrorNo} = shift() + 0 if @_ ; #warn "saveErrorString: " . ${ *$self->{Error} } . " " . *$self->{Error} . "\n" ; return $retval; } sub croakError { my $self = shift ; $self->saveErrorString(0, $_[0]); croak $_[0]; } sub closeError { my $self = shift ; my $retval = shift ; my $errno = *$self->{ErrorNo}; my $error = ${ *$self->{Error} }; $self->close(); *$self->{ErrorNo} = $errno ; ${ *$self->{Error} } = $error ; return $retval; } sub error { my $self = shift ; return ${ *$self->{Error} } ; } sub errorNo { my $self = shift ; return *$self->{ErrorNo}; } sub HeaderError { my ($self) = shift; return $self->saveErrorString(undef, "Header Error: $_[0]", STATUS_ERROR); } sub TrailerError { my ($self) = shift; return $self->saveErrorString(G_ERR, "Trailer Error: $_[0]", STATUS_ERROR); } sub TruncatedHeader { my ($self) = shift; return $self->HeaderError("Truncated in $_[0] Section"); } sub TruncatedTrailer { my ($self) = shift; return $self->TrailerError("Truncated in $_[0] Section"); } sub postCheckParams { return 1; } sub checkParams { my $self = shift ; my $class = shift ; my $got = shift || IO::Compress::Base::Parameters::new(); my $Valid = { 'BlockSize' => [1, 1, Parse_unsigned, 16 * 1024], 'AutoClose' => [1, 1, Parse_boolean, 0], 'Strict' => [1, 1, Parse_boolean, 0], 'Append' => [1, 1, Parse_boolean, 0], 'Prime' => [1, 1, Parse_any, undef], 'MultiStream' => [1, 1, Parse_boolean, 0], 'Transparent' => [1, 1, Parse_any, 1], 'Scan' => [1, 1, Parse_boolean, 0], 'InputLength' => [1, 1, Parse_unsigned, undef], 'BinModeOut' => [1, 1, Parse_boolean, 0], #'Encode' => [1, 1, Parse_any, undef], #'ConsumeInput' => [1, 1, Parse_boolean, 0], $self->getExtraParams(), #'Todo - Revert to ordinary file on end Z_STREAM_END'=> 0, # ContinueAfterEof } ; $Valid->{TrailingData} = [1, 1, Parse_writable_scalar, undef] if *$self->{OneShot} ; $got->parse($Valid, @_ ) or $self->croakError("${class}: $got->{Error}") ; $self->postCheckParams($got) or $self->croakError("${class}: " . $self->error()) ; return $got; } sub _create { my $obj = shift; my $got = shift; my $append_mode = shift ; my $class = ref $obj; $obj->croakError("$class: Missing Input parameter") if ! @_ && ! $got ; my $inValue = shift ; *$obj->{OneShot} = 0 ; if (! $got) { $got = $obj->checkParams($class, undef, @_) or return undef ; } my $inType = whatIsInput($inValue, 1); $obj->ckInputParam($class, $inValue, 1) or return undef ; *$obj->{InNew} = 1; $obj->ckParams($got) or $obj->croakError("${class}: " . *$obj->{Error}); if ($inType eq 'buffer' || $inType eq 'code') { *$obj->{Buffer} = $inValue ; *$obj->{InputEvent} = $inValue if $inType eq 'code' ; } else { if ($inType eq 'handle') { *$obj->{FH} = $inValue ; *$obj->{Handle} = 1 ; # Need to rewind for Scan *$obj->{FH}->seek(0, SEEK_SET) if $got->value('Scan'); } else { no warnings ; my $mode = '<'; $mode = '+<' if $got->value('Scan'); *$obj->{StdIO} = ($inValue eq '-'); *$obj->{FH} = new IO::File "$mode $inValue" or return $obj->saveErrorString(undef, "cannot open file '$inValue': $!", $!) ; } *$obj->{LineNo} = $. = 0; setBinModeInput(*$obj->{FH}) ; my $buff = "" ; *$obj->{Buffer} = \$buff ; } if ($got->parsed('Encode')) { my $want_encoding = $got->value('Encode'); *$obj->{Encoding} = getEncoding($obj, $class, $want_encoding); } *$obj->{InputLength} = $got->parsed('InputLength') ? $got->value('InputLength') : undef ; *$obj->{InputLengthRemaining} = $got->value('InputLength'); *$obj->{BufferOffset} = 0 ; *$obj->{AutoClose} = $got->value('AutoClose'); *$obj->{Strict} = $got->value('Strict'); *$obj->{BlockSize} = $got->value('BlockSize'); *$obj->{Append} = $got->value('Append'); *$obj->{AppendOutput} = $append_mode || $got->value('Append'); *$obj->{ConsumeInput} = $got->value('ConsumeInput'); *$obj->{Transparent} = $got->value('Transparent'); *$obj->{MultiStream} = $got->value('MultiStream'); # TODO - move these two into RawDeflate *$obj->{Scan} = $got->value('Scan'); *$obj->{ParseExtra} = $got->value('ParseExtra') || $got->value('Strict') ; *$obj->{Type} = ''; *$obj->{Prime} = $got->value('Prime') || '' ; *$obj->{Pending} = ''; *$obj->{Plain} = 0; *$obj->{PlainBytesRead} = 0; *$obj->{InflatedBytesRead} = 0; *$obj->{UnCompSize} = new U64; *$obj->{CompSize} = new U64; *$obj->{TotalInflatedBytesRead} = 0; *$obj->{NewStream} = 0 ; *$obj->{EventEof} = 0 ; *$obj->{ClassName} = $class ; *$obj->{Params} = $got ; if (*$obj->{ConsumeInput}) { *$obj->{InNew} = 0; *$obj->{Closed} = 0; return $obj } my $status = $obj->mkUncomp($got); return undef unless defined $status; if ( ! $status) { return undef unless *$obj->{Transparent}; $obj->clearError(); *$obj->{Type} = 'plain'; *$obj->{Plain} = 1; #$status = $obj->mkIdentityUncomp($class, $got); $obj->pushBack(*$obj->{HeaderPending}) ; } push @{ *$obj->{InfoList} }, *$obj->{Info} ; $obj->saveStatus(STATUS_OK) ; *$obj->{InNew} = 0; *$obj->{Closed} = 0; return $obj; } sub ckInputParam { my $self = shift ; my $from = shift ; my $inType = whatIsInput($_[0], $_[1]); $self->croakError("$from: input parameter not a filename, filehandle, array ref or scalar ref") if ! $inType ; # if ($inType eq 'filename' ) # { # return $self->saveErrorString(1, "$from: input filename is undef or null string", STATUS_ERROR) # if ! defined $_[0] || $_[0] eq '' ; # # if ($_[0] ne '-' && ! -e $_[0] ) # { # return $self->saveErrorString(1, # "input file '$_[0]' does not exist", STATUS_ERROR); # } # } return 1; } sub _inf { my $obj = shift ; my $class = (caller)[0] ; my $name = (caller(1))[3] ; $obj->croakError("$name: expected at least 1 parameters\n") unless @_ >= 1 ; my $input = shift ; my $haveOut = @_ ; my $output = shift ; my $x = new IO::Compress::Base::Validator($class, *$obj->{Error}, $name, $input, $output) or return undef ; push @_, $output if $haveOut && $x->{Hash}; *$obj->{OneShot} = 1 ; my $got = $obj->checkParams($name, undef, @_) or return undef ; if ($got->parsed('TrailingData')) { *$obj->{TrailingData} = $got->value('TrailingData'); } *$obj->{MultiStream} = $got->value('MultiStream'); $got->value('MultiStream', 0); $x->{Got} = $got ; # if ($x->{Hash}) # { # while (my($k, $v) = each %$input) # { # $v = \$input->{$k} # unless defined $v ; # # $obj->_singleTarget($x, $k, $v, @_) # or return undef ; # } # # return keys %$input ; # } if ($x->{GlobMap}) { $x->{oneInput} = 1 ; foreach my $pair (@{ $x->{Pairs} }) { my ($from, $to) = @$pair ; $obj->_singleTarget($x, $from, $to, @_) or return undef ; } return scalar @{ $x->{Pairs} } ; } if (! $x->{oneOutput} ) { my $inFile = ($x->{inType} eq 'filenames' || $x->{inType} eq 'filename'); $x->{inType} = $inFile ? 'filename' : 'buffer'; foreach my $in ($x->{oneInput} ? $input : @$input) { my $out ; $x->{oneInput} = 1 ; $obj->_singleTarget($x, $in, $output, @_) or return undef ; } return 1 ; } # finally the 1 to 1 and n to 1 return $obj->_singleTarget($x, $input, $output, @_); croak "should not be here" ; } sub retErr { my $x = shift ; my $string = shift ; ${ $x->{Error} } = $string ; return undef ; } sub _singleTarget { my $self = shift ; my $x = shift ; my $input = shift; my $output = shift; my $buff = ''; $x->{buff} = \$buff ; my $fh ; if ($x->{outType} eq 'filename') { my $mode = '>' ; $mode = '>>' if $x->{Got}->value('Append') ; $x->{fh} = new IO::File "$mode $output" or return retErr($x, "cannot open file '$output': $!") ; binmode $x->{fh} if $x->{Got}->valueOrDefault('BinModeOut'); } elsif ($x->{outType} eq 'handle') { $x->{fh} = $output; binmode $x->{fh} if $x->{Got}->valueOrDefault('BinModeOut'); if ($x->{Got}->value('Append')) { seek($x->{fh}, 0, SEEK_END) or return retErr($x, "Cannot seek to end of output filehandle: $!") ; } } elsif ($x->{outType} eq 'buffer' ) { $$output = '' unless $x->{Got}->value('Append'); $x->{buff} = $output ; } if ($x->{oneInput}) { defined $self->_rd2($x, $input, $output) or return undef; } else { for my $element ( ($x->{inType} eq 'hash') ? keys %$input : @$input) { defined $self->_rd2($x, $element, $output) or return undef ; } } if ( ($x->{outType} eq 'filename' && $output ne '-') || ($x->{outType} eq 'handle' && $x->{Got}->value('AutoClose'))) { $x->{fh}->close() or return retErr($x, $!); delete $x->{fh}; } return 1 ; } sub _rd2 { my $self = shift ; my $x = shift ; my $input = shift; my $output = shift; my $z = createSelfTiedObject($x->{Class}, *$self->{Error}); $z->_create($x->{Got}, 1, $input, @_) or return undef ; my $status ; my $fh = $x->{fh}; while (1) { while (($status = $z->read($x->{buff})) > 0) { if ($fh) { print $fh ${ $x->{buff} } or return $z->saveErrorString(undef, "Error writing to output file: $!", $!); ${ $x->{buff} } = '' ; } } if (! $x->{oneOutput} ) { my $ot = $x->{outType} ; if ($ot eq 'array') { push @$output, $x->{buff} } elsif ($ot eq 'hash') { $output->{$input} = $x->{buff} } my $buff = ''; $x->{buff} = \$buff; } last if $status < 0 || $z->smartEof(); #last if $status < 0 ; last unless *$self->{MultiStream}; $status = $z->nextStream(); last unless $status == 1 ; } return $z->closeError(undef) if $status < 0 ; ${ *$self->{TrailingData} } = $z->trailingData() if defined *$self->{TrailingData} ; $z->close() or return undef ; return 1 ; } sub TIEHANDLE { return $_[0] if ref($_[0]); die "OOPS\n" ; } sub UNTIE { my $self = shift ; } sub getHeaderInfo { my $self = shift ; wantarray ? @{ *$self->{InfoList} } : *$self->{Info}; } sub readBlock { my $self = shift ; my $buff = shift ; my $size = shift ; if (defined *$self->{CompressedInputLength}) { if (*$self->{CompressedInputLengthRemaining} == 0) { delete *$self->{CompressedInputLength}; *$self->{CompressedInputLengthDone} = 1; return STATUS_OK ; } $size = min($size, *$self->{CompressedInputLengthRemaining} ); *$self->{CompressedInputLengthRemaining} -= $size ; } my $status = $self->smartRead($buff, $size) ; return $self->saveErrorString(STATUS_ERROR, "Error Reading Data: $!") if $status == STATUS_ERROR ; if ($status == 0 ) { *$self->{Closed} = 1 ; *$self->{EndStream} = 1 ; return $self->saveErrorString(STATUS_ERROR, "unexpected end of file", STATUS_ERROR); } return STATUS_OK; } sub postBlockChk { return STATUS_OK; } sub _raw_read { # return codes # >0 - ok, number of bytes read # =0 - ok, eof # <0 - not ok my $self = shift ; return G_EOF if *$self->{Closed} ; #return G_EOF if !length *$self->{Pending} && *$self->{EndStream} ; return G_EOF if *$self->{EndStream} ; my $buffer = shift ; my $scan_mode = shift ; if (*$self->{Plain}) { my $tmp_buff ; my $len = $self->smartRead(\$tmp_buff, *$self->{BlockSize}) ; return $self->saveErrorString(G_ERR, "Error reading data: $!", $!) if $len == STATUS_ERROR ; if ($len == 0 ) { *$self->{EndStream} = 1 ; } else { *$self->{PlainBytesRead} += $len ; $$buffer .= $tmp_buff; } return $len ; } if (*$self->{NewStream}) { $self->gotoNextStream() > 0 or return G_ERR; # For the headers that actually uncompressed data, put the # uncompressed data into the output buffer. $$buffer .= *$self->{Pending} ; my $len = length *$self->{Pending} ; *$self->{Pending} = ''; return $len; } my $temp_buf = ''; my $outSize = 0; my $status = $self->readBlock(\$temp_buf, *$self->{BlockSize}, $outSize) ; return G_ERR if $status == STATUS_ERROR ; my $buf_len = 0; if ($status == STATUS_OK) { my $beforeC_len = length $temp_buf; my $before_len = defined $$buffer ? length $$buffer : 0 ; $status = *$self->{Uncomp}->uncompr(\$temp_buf, $buffer, defined *$self->{CompressedInputLengthDone} || $self->smartEof(), $outSize); # Remember the input buffer if it wasn't consumed completely $self->pushBack($temp_buf) if *$self->{Uncomp}{ConsumesInput}; return $self->saveErrorString(G_ERR, *$self->{Uncomp}{Error}, *$self->{Uncomp}{ErrorNo}) if $self->saveStatus($status) == STATUS_ERROR; $self->postBlockChk($buffer, $before_len) == STATUS_OK or return G_ERR; $buf_len = defined $$buffer ? length($$buffer) - $before_len : 0; *$self->{CompSize}->add($beforeC_len - length $temp_buf) ; *$self->{InflatedBytesRead} += $buf_len ; *$self->{TotalInflatedBytesRead} += $buf_len ; *$self->{UnCompSize}->add($buf_len) ; $self->filterUncompressed($buffer); if (*$self->{Encoding}) { $$buffer = *$self->{Encoding}->decode($$buffer); } } if ($status == STATUS_ENDSTREAM) { *$self->{EndStream} = 1 ; #$self->pushBack($temp_buf) ; #$temp_buf = ''; my $trailer; my $trailer_size = *$self->{Info}{TrailerLength} ; my $got = 0; if (*$self->{Info}{TrailerLength}) { $got = $self->smartRead(\$trailer, $trailer_size) ; } if ($got == $trailer_size) { $self->chkTrailer($trailer) == STATUS_OK or return G_ERR; } else { return $self->TrailerError("trailer truncated. Expected " . "$trailer_size bytes, got $got") if *$self->{Strict}; $self->pushBack($trailer) ; } # TODO - if want to file file pointer, do it here if (! $self->smartEof()) { *$self->{NewStream} = 1 ; if (*$self->{MultiStream}) { *$self->{EndStream} = 0 ; return $buf_len ; } } } # return the number of uncompressed bytes read return $buf_len ; } sub reset { my $self = shift ; return *$self->{Uncomp}->reset(); } sub filterUncompressed { } #sub isEndStream #{ # my $self = shift ; # return *$self->{NewStream} || # *$self->{EndStream} ; #} sub nextStream { my $self = shift ; my $status = $self->gotoNextStream(); $status == 1 or return $status ; *$self->{TotalInflatedBytesRead} = 0 ; *$self->{LineNo} = $. = 0; return 1; } sub gotoNextStream { my $self = shift ; if (! *$self->{NewStream}) { my $status = 1; my $buffer ; # TODO - make this more efficient if know the offset for the end of # the stream and seekable $status = $self->read($buffer) while $status > 0 ; return $status if $status < 0; } *$self->{NewStream} = 0 ; *$self->{EndStream} = 0 ; $self->reset(); *$self->{UnCompSize}->reset(); *$self->{CompSize}->reset(); my $magic = $self->ckMagic(); #*$self->{EndStream} = 0 ; if ( ! defined $magic) { if (! *$self->{Transparent} || $self->eof()) { *$self->{EndStream} = 1 ; return 0; } $self->clearError(); *$self->{Type} = 'plain'; *$self->{Plain} = 1; $self->pushBack(*$self->{HeaderPending}) ; } else { *$self->{Info} = $self->readHeader($magic); if ( ! defined *$self->{Info} ) { *$self->{EndStream} = 1 ; return -1; } } push @{ *$self->{InfoList} }, *$self->{Info} ; return 1; } sub streamCount { my $self = shift ; return 1 if ! defined *$self->{InfoList}; return scalar @{ *$self->{InfoList} } ; } sub read { # return codes # >0 - ok, number of bytes read # =0 - ok, eof # <0 - not ok my $self = shift ; return G_EOF if *$self->{Closed} ; my $buffer ; if (ref $_[0] ) { $self->croakError(*$self->{ClassName} . "::read: buffer parameter is read-only") if readonly(${ $_[0] }); $self->croakError(*$self->{ClassName} . "::read: not a scalar reference $_[0]" ) unless ref $_[0] eq 'SCALAR' ; $buffer = $_[0] ; } else { $self->croakError(*$self->{ClassName} . "::read: buffer parameter is read-only") if readonly($_[0]); $buffer = \$_[0] ; } my $length = $_[1] ; my $offset = $_[2] || 0; if (! *$self->{AppendOutput}) { if (! $offset) { $$buffer = '' ; } else { if ($offset > length($$buffer)) { $$buffer .= "\x00" x ($offset - length($$buffer)); } else { substr($$buffer, $offset) = ''; } } } return G_EOF if !length *$self->{Pending} && *$self->{EndStream} ; # the core read will return 0 if asked for 0 bytes return 0 if defined $length && $length == 0 ; $length = $length || 0; $self->croakError(*$self->{ClassName} . "::read: length parameter is negative") if $length < 0 ; # Short-circuit if this is a simple read, with no length # or offset specified. unless ( $length || $offset) { if (length *$self->{Pending}) { $$buffer .= *$self->{Pending} ; my $len = length *$self->{Pending}; *$self->{Pending} = '' ; return $len ; } else { my $len = 0; $len = $self->_raw_read($buffer) while ! *$self->{EndStream} && $len == 0 ; return $len ; } } # Need to jump through more hoops - either length or offset # or both are specified. my $out_buffer = *$self->{Pending} ; *$self->{Pending} = ''; while (! *$self->{EndStream} && length($out_buffer) < $length) { my $buf_len = $self->_raw_read(\$out_buffer); return $buf_len if $buf_len < 0 ; } $length = length $out_buffer if length($out_buffer) < $length ; return 0 if $length == 0 ; $$buffer = '' if ! defined $$buffer; $offset = length $$buffer if *$self->{AppendOutput} ; *$self->{Pending} = $out_buffer; $out_buffer = \*$self->{Pending} ; #substr($$buffer, $offset) = substr($$out_buffer, 0, $length, '') ; substr($$buffer, $offset) = substr($$out_buffer, 0, $length) ; substr($$out_buffer, 0, $length) = '' ; return $length ; } sub _getline { my $self = shift ; my $status = 0 ; # Slurp Mode if ( ! defined $/ ) { my $data ; 1 while ($status = $self->read($data)) > 0 ; return $status < 0 ? \undef : \$data ; } # Record Mode if ( ref $/ eq 'SCALAR' && ${$/} =~ /^\d+$/ && ${$/} > 0) { my $reclen = ${$/} ; my $data ; $status = $self->read($data, $reclen) ; return $status < 0 ? \undef : \$data ; } # Paragraph Mode if ( ! length $/ ) { my $paragraph ; while (($status = $self->read($paragraph)) > 0 ) { if ($paragraph =~ s/^(.*?\n\n+)//s) { *$self->{Pending} = $paragraph ; my $par = $1 ; return \$par ; } } return $status < 0 ? \undef : \$paragraph; } # $/ isn't empty, or a reference, so it's Line Mode. { my $line ; my $offset; my $p = \*$self->{Pending} ; if (length(*$self->{Pending}) && ($offset = index(*$self->{Pending}, $/)) >=0) { my $l = substr(*$self->{Pending}, 0, $offset + length $/ ); substr(*$self->{Pending}, 0, $offset + length $/) = ''; return \$l; } while (($status = $self->read($line)) > 0 ) { my $offset = index($line, $/); if ($offset >= 0) { my $l = substr($line, 0, $offset + length $/ ); substr($line, 0, $offset + length $/) = ''; $$p = $line; return \$l; } } return $status < 0 ? \undef : \$line; } } sub getline { my $self = shift; my $current_append = *$self->{AppendOutput} ; *$self->{AppendOutput} = 1; my $lineref = $self->_getline(); $. = ++ *$self->{LineNo} if defined $$lineref ; *$self->{AppendOutput} = $current_append; return $$lineref ; } sub getlines { my $self = shift; $self->croakError(*$self->{ClassName} . "::getlines: called in scalar context\n") unless wantarray; my($line, @lines); push(@lines, $line) while defined($line = $self->getline); return @lines; } sub READLINE { goto &getlines if wantarray; goto &getline; } sub getc { my $self = shift; my $buf; return $buf if $self->read($buf, 1); return undef; } sub ungetc { my $self = shift; *$self->{Pending} = "" unless defined *$self->{Pending} ; *$self->{Pending} = $_[0] . *$self->{Pending} ; } sub trailingData { my $self = shift ; if (defined *$self->{FH} || defined *$self->{InputEvent} ) { return *$self->{Prime} ; } else { my $buf = *$self->{Buffer} ; my $offset = *$self->{BufferOffset} ; return substr($$buf, $offset) ; } } sub eof { my $self = shift ; return (*$self->{Closed} || (!length *$self->{Pending} && ( $self->smartEof() || *$self->{EndStream}))) ; } sub tell { my $self = shift ; my $in ; if (*$self->{Plain}) { $in = *$self->{PlainBytesRead} ; } else { $in = *$self->{TotalInflatedBytesRead} ; } my $pending = length *$self->{Pending} ; return 0 if $pending > $in ; return $in - $pending ; } sub close { # todo - what to do if close is called before the end of the gzip file # do we remember any trailing data? my $self = shift ; return 1 if *$self->{Closed} ; untie *$self if $] >= 5.008 ; my $status = 1 ; if (defined *$self->{FH}) { if ((! *$self->{Handle} || *$self->{AutoClose}) && ! *$self->{StdIO}) { #if ( *$self->{AutoClose}) { local $.; $! = 0 ; $status = *$self->{FH}->close(); return $self->saveErrorString(0, $!, $!) if !*$self->{InNew} && $self->saveStatus($!) != 0 ; } delete *$self->{FH} ; $! = 0 ; } *$self->{Closed} = 1 ; return 1; } sub DESTROY { my $self = shift ; local ($., $@, $!, $^E, $?); $self->close() ; } sub seek { my $self = shift ; my $position = shift; my $whence = shift ; my $here = $self->tell() ; my $target = 0 ; if ($whence == SEEK_SET) { $target = $position ; } elsif ($whence == SEEK_CUR) { $target = $here + $position ; } elsif ($whence == SEEK_END) { $target = $position ; $self->croakError(*$self->{ClassName} . "::seek: SEEK_END not allowed") ; } else { $self->croakError(*$self->{ClassName} ."::seek: unknown value, $whence, for whence parameter"); } # short circuit if seeking to current offset if ($target == $here) { # On ordinary filehandles, seeking to the current # position also clears the EOF condition, so we # emulate this behavior locally while simultaneously # cascading it to the underlying filehandle if (*$self->{Plain}) { *$self->{EndStream} = 0; seek(*$self->{FH},0,1) if *$self->{FH}; } return 1; } # Outlaw any attempt to seek backwards $self->croakError( *$self->{ClassName} ."::seek: cannot seek backwards") if $target < $here ; # Walk the file to the new offset my $offset = $target - $here ; my $got; while (($got = $self->read(my $buffer, min($offset, *$self->{BlockSize})) ) > 0) { $offset -= $got; last if $offset == 0 ; } $here = $self->tell() ; return $offset == 0 ? 1 : 0 ; } sub fileno { my $self = shift ; return defined *$self->{FH} ? fileno *$self->{FH} : undef ; } sub binmode { 1; # my $self = shift ; # return defined *$self->{FH} # ? binmode *$self->{FH} # : 1 ; } sub opened { my $self = shift ; return ! *$self->{Closed} ; } sub autoflush { my $self = shift ; return defined *$self->{FH} ? *$self->{FH}->autoflush(@_) : undef ; } sub input_line_number { my $self = shift ; my $last = *$self->{LineNo}; $. = *$self->{LineNo} = $_[1] if @_ ; return $last; } *BINMODE = \&binmode; *SEEK = \&seek; *READ = \&read; *sysread = \&read; *TELL = \&tell; *EOF = \&eof; *FILENO = \&fileno; *CLOSE = \&close; sub _notAvailable { my $name = shift ; #return sub { croak "$name Not Available" ; } ; return sub { croak "$name Not Available: File opened only for intput" ; } ; } *print = _notAvailable('print'); *PRINT = _notAvailable('print'); *printf = _notAvailable('printf'); *PRINTF = _notAvailable('printf'); *write = _notAvailable('write'); *WRITE = _notAvailable('write'); #*sysread = \&read; #*syswrite = \&_notAvailable; package IO::Uncompress::Base ; 1 ; __END__ #line 1484 FILE 228db72f/IO/Uncompress/Gunzip.pm##line 1 "/usr/share/perl/5.14/IO/Uncompress/Gunzip.pm" package IO::Uncompress::Gunzip ; require 5.004 ; # for RFC1952 use strict ; use warnings; use bytes; use IO::Uncompress::RawInflate 2.033 ; use Compress::Raw::Zlib 2.033 qw( crc32 ) ; use IO::Compress::Base::Common 2.033 qw(:Status createSelfTiedObject); use IO::Compress::Gzip::Constants 2.033 ; use IO::Compress::Zlib::Extra 2.033 ; require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $GunzipError); @ISA = qw( Exporter IO::Uncompress::RawInflate ); @EXPORT_OK = qw( $GunzipError gunzip ); %EXPORT_TAGS = %IO::Uncompress::RawInflate::DEFLATE_CONSTANTS ; push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); $GunzipError = ''; $VERSION = '2.033'; sub new { my $class = shift ; $GunzipError = ''; my $obj = createSelfTiedObject($class, \$GunzipError); $obj->_create(undef, 0, @_); } sub gunzip { my $obj = createSelfTiedObject(undef, \$GunzipError); return $obj->_inf(@_) ; } sub getExtraParams { use IO::Compress::Base::Common 2.033 qw(:Parse); return ( 'ParseExtra' => [1, 1, Parse_boolean, 0] ) ; } sub ckParams { my $self = shift ; my $got = shift ; # gunzip always needs crc32 $got->value('CRC32' => 1); return 1; } sub ckMagic { my $self = shift; my $magic ; $self->smartReadExact(\$magic, GZIP_ID_SIZE); *$self->{HeaderPending} = $magic ; return $self->HeaderError("Minimum header size is " . GZIP_MIN_HEADER_SIZE . " bytes") if length $magic != GZIP_ID_SIZE ; return $self->HeaderError("Bad Magic") if ! isGzipMagic($magic) ; *$self->{Type} = 'rfc1952'; return $magic ; } sub readHeader { my $self = shift; my $magic = shift; return $self->_readGzipHeader($magic); } sub chkTrailer { my $self = shift; my $trailer = shift; # Check CRC & ISIZE my ($CRC32, $ISIZE) = unpack("V V", $trailer) ; *$self->{Info}{CRC32} = $CRC32; *$self->{Info}{ISIZE} = $ISIZE; if (*$self->{Strict}) { return $self->TrailerError("CRC mismatch") if $CRC32 != *$self->{Uncomp}->crc32() ; my $exp_isize = *$self->{UnCompSize}->get32bit(); return $self->TrailerError("ISIZE mismatch. Got $ISIZE" . ", expected $exp_isize") if $ISIZE != $exp_isize ; } return STATUS_OK; } sub isGzipMagic { my $buffer = shift ; return 0 if length $buffer < GZIP_ID_SIZE ; my ($id1, $id2) = unpack("C C", $buffer) ; return $id1 == GZIP_ID1 && $id2 == GZIP_ID2 ; } sub _readFullGzipHeader($) { my ($self) = @_ ; my $magic = '' ; $self->smartReadExact(\$magic, GZIP_ID_SIZE); *$self->{HeaderPending} = $magic ; return $self->HeaderError("Minimum header size is " . GZIP_MIN_HEADER_SIZE . " bytes") if length $magic != GZIP_ID_SIZE ; return $self->HeaderError("Bad Magic") if ! isGzipMagic($magic) ; my $status = $self->_readGzipHeader($magic); delete *$self->{Transparent} if ! defined $status ; return $status ; } sub _readGzipHeader($) { my ($self, $magic) = @_ ; my ($HeaderCRC) ; my ($buffer) = '' ; $self->smartReadExact(\$buffer, GZIP_MIN_HEADER_SIZE - GZIP_ID_SIZE) or return $self->HeaderError("Minimum header size is " . GZIP_MIN_HEADER_SIZE . " bytes") ; my $keep = $magic . $buffer ; *$self->{HeaderPending} = $keep ; # now split out the various parts my ($cm, $flag, $mtime, $xfl, $os) = unpack("C C V C C", $buffer) ; $cm == GZIP_CM_DEFLATED or return $self->HeaderError("Not Deflate (CM is $cm)") ; # check for use of reserved bits return $self->HeaderError("Use of Reserved Bits in FLG field.") if $flag & GZIP_FLG_RESERVED ; my $EXTRA ; my @EXTRA = () ; if ($flag & GZIP_FLG_FEXTRA) { $EXTRA = "" ; $self->smartReadExact(\$buffer, GZIP_FEXTRA_HEADER_SIZE) or return $self->TruncatedHeader("FEXTRA Length") ; my ($XLEN) = unpack("v", $buffer) ; $self->smartReadExact(\$EXTRA, $XLEN) or return $self->TruncatedHeader("FEXTRA Body"); $keep .= $buffer . $EXTRA ; if ($XLEN && *$self->{'ParseExtra'}) { my $bad = IO::Compress::Zlib::Extra::parseRawExtra($EXTRA, \@EXTRA, 1, 1); return $self->HeaderError($bad) if defined $bad; } } my $origname ; if ($flag & GZIP_FLG_FNAME) { $origname = "" ; while (1) { $self->smartReadExact(\$buffer, 1) or return $self->TruncatedHeader("FNAME"); last if $buffer eq GZIP_NULL_BYTE ; $origname .= $buffer } $keep .= $origname . GZIP_NULL_BYTE ; return $self->HeaderError("Non ISO 8859-1 Character found in Name") if *$self->{Strict} && $origname =~ /$GZIP_FNAME_INVALID_CHAR_RE/o ; } my $comment ; if ($flag & GZIP_FLG_FCOMMENT) { $comment = ""; while (1) { $self->smartReadExact(\$buffer, 1) or return $self->TruncatedHeader("FCOMMENT"); last if $buffer eq GZIP_NULL_BYTE ; $comment .= $buffer } $keep .= $comment . GZIP_NULL_BYTE ; return $self->HeaderError("Non ISO 8859-1 Character found in Comment") if *$self->{Strict} && $comment =~ /$GZIP_FCOMMENT_INVALID_CHAR_RE/o ; } if ($flag & GZIP_FLG_FHCRC) { $self->smartReadExact(\$buffer, GZIP_FHCRC_SIZE) or return $self->TruncatedHeader("FHCRC"); $HeaderCRC = unpack("v", $buffer) ; my $crc16 = crc32($keep) & 0xFF ; return $self->HeaderError("CRC16 mismatch.") if *$self->{Strict} && $crc16 != $HeaderCRC; $keep .= $buffer ; } # Assume compression method is deflated for xfl tests #if ($xfl) { #} *$self->{Type} = 'rfc1952'; return { 'Type' => 'rfc1952', 'FingerprintLength' => 2, 'HeaderLength' => length $keep, 'TrailerLength' => GZIP_TRAILER_SIZE, 'Header' => $keep, 'isMinimalHeader' => $keep eq GZIP_MINIMUM_HEADER ? 1 : 0, 'MethodID' => $cm, 'MethodName' => $cm == GZIP_CM_DEFLATED ? "Deflated" : "Unknown" , 'TextFlag' => $flag & GZIP_FLG_FTEXT ? 1 : 0, 'HeaderCRCFlag' => $flag & GZIP_FLG_FHCRC ? 1 : 0, 'NameFlag' => $flag & GZIP_FLG_FNAME ? 1 : 0, 'CommentFlag' => $flag & GZIP_FLG_FCOMMENT ? 1 : 0, 'ExtraFlag' => $flag & GZIP_FLG_FEXTRA ? 1 : 0, 'Name' => $origname, 'Comment' => $comment, 'Time' => $mtime, 'OsID' => $os, 'OsName' => defined $GZIP_OS_Names{$os} ? $GZIP_OS_Names{$os} : "Unknown", 'HeaderCRC' => $HeaderCRC, 'Flags' => $flag, 'ExtraFlags' => $xfl, 'ExtraFieldRaw' => $EXTRA, 'ExtraField' => [ @EXTRA ], #'CompSize'=> $compsize, #'CRC32'=> $CRC32, #'OrigSize'=> $ISIZE, } } 1; __END__ #line 1112 FILE$80efed35/IO/Uncompress/RawInflate.pm"#line 1 "/usr/share/perl/5.14/IO/Uncompress/RawInflate.pm" package IO::Uncompress::RawInflate ; # for RFC1951 use strict ; use warnings; use bytes; use Compress::Raw::Zlib 2.033 ; use IO::Compress::Base::Common 2.033 qw(:Status createSelfTiedObject); use IO::Uncompress::Base 2.033 ; use IO::Uncompress::Adapter::Inflate 2.033 ; require Exporter ; our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $RawInflateError); $VERSION = '2.033'; $RawInflateError = ''; @ISA = qw( Exporter IO::Uncompress::Base ); @EXPORT_OK = qw( $RawInflateError rawinflate ) ; %DEFLATE_CONSTANTS = (); %EXPORT_TAGS = %IO::Uncompress::Base::EXPORT_TAGS ; push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ; Exporter::export_ok_tags('all'); #{ # # Execute at runtime # my %bad; # for my $module (qw(Compress::Raw::Zlib IO::Compress::Base::Common IO::Uncompress::Base IO::Uncompress::Adapter::Inflate)) # { # my $ver = ${ $module . "::VERSION"} ; # # $bad{$module} = $ver # if $ver ne $VERSION; # } # # if (keys %bad) # { # my $string = join "\n", map { "$_ $bad{$_}" } keys %bad; # die caller(0)[0] . "needs version $VERSION mismatch\n$string\n"; # } #} sub new { my $class = shift ; my $obj = createSelfTiedObject($class, \$RawInflateError); $obj->_create(undef, 0, @_); } sub rawinflate { my $obj = createSelfTiedObject(undef, \$RawInflateError); return $obj->_inf(@_); } sub getExtraParams { return (); } sub ckParams { my $self = shift ; my $got = shift ; return 1; } sub mkUncomp { my $self = shift ; my $got = shift ; my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::Inflate::mkUncompObject( $got->value('CRC32'), $got->value('ADLER32'), $got->value('Scan'), ); return $self->saveErrorString(undef, $errstr, $errno) if ! defined $obj; *$self->{Uncomp} = $obj; my $magic = $self->ckMagic() or return 0; *$self->{Info} = $self->readHeader($magic) or return undef ; return 1; } sub ckMagic { my $self = shift; return $self->_isRaw() ; } sub readHeader { my $self = shift; my $magic = shift ; return { 'Type' => 'rfc1951', 'FingerprintLength' => 0, 'HeaderLength' => 0, 'TrailerLength' => 0, 'Header' => '' }; } sub chkTrailer { return STATUS_OK ; } sub _isRaw { my $self = shift ; my $got = $self->_isRawx(@_); if ($got) { *$self->{Pending} = *$self->{HeaderPending} ; } else { $self->pushBack(*$self->{HeaderPending}); *$self->{Uncomp}->reset(); } *$self->{HeaderPending} = ''; return $got ; } sub _isRawx { my $self = shift ; my $magic = shift ; $magic = '' unless defined $magic ; my $buffer = ''; $self->smartRead(\$buffer, *$self->{BlockSize}) >= 0 or return $self->saveErrorString(undef, "No data to read"); my $temp_buf = $magic . $buffer ; *$self->{HeaderPending} = $temp_buf ; $buffer = ''; my $status = *$self->{Uncomp}->uncompr(\$temp_buf, \$buffer, $self->smartEof()) ; return $self->saveErrorString(undef, *$self->{Uncomp}{Error}, STATUS_ERROR) if $status == STATUS_ERROR; $self->pushBack($temp_buf) ; return $self->saveErrorString(undef, "unexpected end of file", STATUS_ERROR) if $self->smartEof() && $status != STATUS_ENDSTREAM; #my $buf_len = *$self->{Uncomp}->uncompressedBytes(); my $buf_len = length $buffer; if ($status == STATUS_ENDSTREAM) { if (*$self->{MultiStream} && (length $temp_buf || ! $self->smartEof())){ *$self->{NewStream} = 1 ; *$self->{EndStream} = 0 ; } else { *$self->{EndStream} = 1 ; } } *$self->{HeaderPending} = $buffer ; *$self->{InflatedBytesRead} = $buf_len ; *$self->{TotalInflatedBytesRead} += $buf_len ; *$self->{Type} = 'rfc1951'; $self->saveStatus(STATUS_OK); return { 'Type' => 'rfc1951', 'HeaderLength' => 0, 'TrailerLength' => 0, 'Header' => '' }; } sub inflateSync { my $self = shift ; # inflateSync is a no-op in Plain mode return 1 if *$self->{Plain} ; return 0 if *$self->{Closed} ; #return G_EOF if !length *$self->{Pending} && *$self->{EndStream} ; return 0 if ! length *$self->{Pending} && *$self->{EndStream} ; # Disable CRC check *$self->{Strict} = 0 ; my $status ; while (1) { my $temp_buf ; if (length *$self->{Pending} ) { $temp_buf = *$self->{Pending} ; *$self->{Pending} = ''; } else { $status = $self->smartRead(\$temp_buf, *$self->{BlockSize}) ; return $self->saveErrorString(0, "Error Reading Data") if $status < 0 ; if ($status == 0 ) { *$self->{EndStream} = 1 ; return $self->saveErrorString(0, "unexpected end of file", STATUS_ERROR); } } $status = *$self->{Uncomp}->sync($temp_buf) ; if ($status == STATUS_OK) { *$self->{Pending} .= $temp_buf ; return 1 ; } last unless $status == STATUS_ERROR ; } return 0; } #sub performScan #{ # my $self = shift ; # # my $status ; # my $end_offset = 0; # # $status = $self->scan() # #or return $self->saveErrorString(undef, "Error Scanning: $$error_ref", $self->errorNo) ; # or return $self->saveErrorString(G_ERR, "Error Scanning: $status") # # $status = $self->zap($end_offset) # or return $self->saveErrorString(G_ERR, "Error Zapping: $status"); # #or return $self->saveErrorString(undef, "Error Zapping: $$error_ref", $self->errorNo) ; # # #(*$obj->{Deflate}, $status) = $inf->createDeflate(); # ## *$obj->{Header} = *$inf->{Info}{Header}; ## *$obj->{UnCompSize_32bit} = ## *$obj->{BytesWritten} = *$inf->{UnCompSize_32bit} ; ## *$obj->{CompSize_32bit} = *$inf->{CompSize_32bit} ; # # ## if ( $outType eq 'buffer') ## { substr( ${ *$self->{Buffer} }, $end_offset) = '' } ## elsif ($outType eq 'handle' || $outType eq 'filename') { ## *$self->{FH} = *$inf->{FH} ; ## delete *$inf->{FH}; ## *$obj->{FH}->flush() ; ## *$obj->{Handle} = 1 if $outType eq 'handle'; ## ## #seek(*$obj->{FH}, $end_offset, SEEK_SET) ## *$obj->{FH}->seek($end_offset, SEEK_SET) ## or return $obj->saveErrorString(undef, $!, $!) ; ## } # #} sub scan { my $self = shift ; return 1 if *$self->{Closed} ; return 1 if !length *$self->{Pending} && *$self->{EndStream} ; my $buffer = '' ; my $len = 0; $len = $self->_raw_read(\$buffer, 1) while ! *$self->{EndStream} && $len >= 0 ; #return $len if $len < 0 ? $len : 0 ; return $len < 0 ? 0 : 1 ; } sub zap { my $self = shift ; my $headerLength = *$self->{Info}{HeaderLength}; my $block_offset = $headerLength + *$self->{Uncomp}->getLastBlockOffset(); $_[0] = $headerLength + *$self->{Uncomp}->getEndOffset(); #printf "# End $_[0], headerlen $headerLength \n";; #printf "# block_offset $block_offset %x\n", $block_offset; my $byte ; ( $self->smartSeek($block_offset) && $self->smartRead(\$byte, 1) ) or return $self->saveErrorString(0, $!, $!); #printf "#byte is %x\n", unpack('C*',$byte); *$self->{Uncomp}->resetLastBlockByte($byte); #printf "#to byte is %x\n", unpack('C*',$byte); ( $self->smartSeek($block_offset) && $self->smartWrite($byte) ) or return $self->saveErrorString(0, $!, $!); #$self->smartSeek($end_offset, 1); return 1 ; } sub createDeflate { my $self = shift ; my ($def, $status) = *$self->{Uncomp}->createDeflateStream( -AppendOutput => 1, -WindowBits => - MAX_WBITS, -CRC32 => *$self->{Params}->value('CRC32'), -ADLER32 => *$self->{Params}->value('ADLER32'), ); return wantarray ? ($status, $def) : $def ; } 1; __END__ #line 1111 FILEa1c45002/PerlIO.pm#line 1 "/usr/share/perl/5.14/PerlIO.pm" package PerlIO; our $VERSION = '1.07'; # Map layer name to package that defines it our %alias; sub import { my $class = shift; while (@_) { my $layer = shift; if (exists $alias{$layer}) { $layer = $alias{$layer} } else { $layer = "${class}::$layer"; } eval "require $layer"; warn $@ if $@; } } sub F_UTF8 () { 0x8000 } 1; __END__ #line 333 FILE4ad2e17a/SelectSaver.pm#line 1 "/usr/share/perl/5.14/SelectSaver.pm" package SelectSaver; our $VERSION = '1.02'; require 5.000; use Carp; use Symbol; sub new { @_ >= 1 && @_ <= 2 or croak 'usage: SelectSaver->new( [FILEHANDLE] )'; my $fh = select; my $self = bless \$fh, $_[0]; select qualify($_[1], caller) if @_ > 1; $self; } sub DESTROY { my $self = $_[0]; select $$self; } 1; FILE8c91758b/Symbol.pm\#line 1 "/usr/share/perl/5.14/Symbol.pm" package Symbol; BEGIN { require 5.005; } require Exporter; @ISA = qw(Exporter); @EXPORT = qw(gensym ungensym qualify qualify_to_ref); @EXPORT_OK = qw(delete_package geniosym); $VERSION = '1.07'; my $genpkg = "Symbol::"; my $genseq = 0; my %global = map {$_ => 1} qw(ARGV ARGVOUT ENV INC SIG STDERR STDIN STDOUT); # # Note that we never _copy_ the glob; we just make a ref to it. # If we did copy it, then SVf_FAKE would be set on the copy, and # glob-specific behaviors (e.g. C<*$ref = \&func>) wouldn't work. # sub gensym () { my $name = "GEN" . $genseq++; my $ref = \*{$genpkg . $name}; delete $$genpkg{$name}; $ref; } sub geniosym () { my $sym = gensym(); # force the IO slot to be filled select(select $sym); *$sym{IO}; } sub ungensym ($) {} sub qualify ($;$) { my ($name) = @_; if (!ref($name) && index($name, '::') == -1 && index($name, "'") == -1) { my $pkg; # Global names: special character, "^xyz", or other. if ($name =~ /^(([^a-z])|(\^[a-z_]+))\z/i || $global{$name}) { # RGS 2001-11-05 : translate leading ^X to control-char $name =~ s/^\^([a-z_])/'qq(\c'.$1.')'/eei; $pkg = "main"; } else { $pkg = (@_ > 1) ? $_[1] : caller; } $name = $pkg . "::" . $name; } $name; } sub qualify_to_ref ($;$) { return \*{ qualify $_[0], @_ > 1 ? $_[1] : caller }; } # # of Safe.pm lineage # sub delete_package ($) { my $pkg = shift; # expand to full symbol table name if needed unless ($pkg =~ /^main::.*::$/) { $pkg = "main$pkg" if $pkg =~ /^::/; $pkg = "main::$pkg" unless $pkg =~ /^main::/; $pkg .= '::' unless $pkg =~ /::$/; } my($stem, $leaf) = $pkg =~ m/(.*::)(\w+::)$/; my $stem_symtab = *{$stem}{HASH}; return unless defined $stem_symtab and exists $stem_symtab->{$leaf}; # free all the symbols in the package my $leaf_symtab = *{$stem_symtab->{$leaf}}{HASH}; foreach my $name (keys %$leaf_symtab) { undef *{$pkg . $name}; } # delete the symbol table %$leaf_symtab = (); delete $stem_symtab->{$leaf}; } 1; FILEaeb07e11/Time/Local.pmv#line 1 "/usr/share/perl/5.14/Time/Local.pm" package Time::Local; require Exporter; use Carp; use Config; use strict; use vars qw( $VERSION @ISA @EXPORT @EXPORT_OK ); $VERSION = '1.2000'; @ISA = qw( Exporter ); @EXPORT = qw( timegm timelocal ); @EXPORT_OK = qw( timegm_nocheck timelocal_nocheck ); my @MonthDays = ( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ); # Determine breakpoint for rolling century my $ThisYear = ( localtime() )[5]; my $Breakpoint = ( $ThisYear + 50 ) % 100; my $NextCentury = $ThisYear - $ThisYear % 100; $NextCentury += 100 if $Breakpoint < 50; my $Century = $NextCentury - 100; my $SecOff = 0; my ( %Options, %Cheat ); use constant SECS_PER_MINUTE => 60; use constant SECS_PER_HOUR => 3600; use constant SECS_PER_DAY => 86400; my $MaxDay; if ($] < 5.012000) { my $MaxInt; if ( $^O eq 'MacOS' ) { # time_t is unsigned... $MaxInt = ( 1 << ( 8 * $Config{ivsize} ) ) - 1; } else { $MaxInt = ( ( 1 << ( 8 * $Config{ivsize} - 2 ) ) - 1 ) * 2 + 1; } $MaxDay = int( ( $MaxInt - ( SECS_PER_DAY / 2 ) ) / SECS_PER_DAY ) - 1; } else { # recent localtime()'s limit is the year 2**31 $MaxDay = 365 * (2**31); } # Determine the EPOC day for this machine my $Epoc = 0; if ( $^O eq 'vos' ) { # work around posix-977 -- VOS doesn't handle dates in the range # 1970-1980. $Epoc = _daygm( 0, 0, 0, 1, 0, 70, 4, 0 ); } elsif ( $^O eq 'MacOS' ) { $MaxDay *=2 if $^O eq 'MacOS'; # time_t unsigned ... quick hack? # MacOS time() is seconds since 1 Jan 1904, localtime # so we need to calculate an offset to apply later $Epoc = 693901; $SecOff = timelocal( localtime(0)) - timelocal( gmtime(0) ) ; $Epoc += _daygm( gmtime(0) ); } else { $Epoc = _daygm( gmtime(0) ); } %Cheat = (); # clear the cache as epoc has changed sub _daygm { # This is written in such a byzantine way in order to avoid # lexical variables and sub calls, for speed return $_[3] + ( $Cheat{ pack( 'ss', @_[ 4, 5 ] ) } ||= do { my $month = ( $_[4] + 10 ) % 12; my $year = $_[5] + 1900 - int($month / 10); ( ( 365 * $year ) + int( $year / 4 ) - int( $year / 100 ) + int( $year / 400 ) + int( ( ( $month * 306 ) + 5 ) / 10 ) ) - $Epoc; } ); } sub _timegm { my $sec = $SecOff + $_[0] + ( SECS_PER_MINUTE * $_[1] ) + ( SECS_PER_HOUR * $_[2] ); return $sec + ( SECS_PER_DAY * &_daygm ); } sub timegm { my ( $sec, $min, $hour, $mday, $month, $year ) = @_; if ( $year >= 1000 ) { $year -= 1900; } elsif ( $year < 100 and $year >= 0 ) { $year += ( $year > $Breakpoint ) ? $Century : $NextCentury; } unless ( $Options{no_range_check} ) { croak "Month '$month' out of range 0..11" if $month > 11 or $month < 0; my $md = $MonthDays[$month]; ++$md if $month == 1 && _is_leap_year( $year + 1900 ); croak "Day '$mday' out of range 1..$md" if $mday > $md or $mday < 1; croak "Hour '$hour' out of range 0..23" if $hour > 23 or $hour < 0; croak "Minute '$min' out of range 0..59" if $min > 59 or $min < 0; croak "Second '$sec' out of range 0..59" if $sec > 59 or $sec < 0; } my $days = _daygm( undef, undef, undef, $mday, $month, $year ); unless ($Options{no_range_check} or abs($days) < $MaxDay) { my $msg = ''; $msg .= "Day too big - $days > $MaxDay\n" if $days > $MaxDay; $year += 1900; $msg .= "Cannot handle date ($sec, $min, $hour, $mday, $month, $year)"; croak $msg; } return $sec + $SecOff + ( SECS_PER_MINUTE * $min ) + ( SECS_PER_HOUR * $hour ) + ( SECS_PER_DAY * $days ); } sub _is_leap_year { return 0 if $_[0] % 4; return 1 if $_[0] % 100; return 0 if $_[0] % 400; return 1; } sub timegm_nocheck { local $Options{no_range_check} = 1; return &timegm; } sub timelocal { my $ref_t = &timegm; my $loc_for_ref_t = _timegm( localtime($ref_t) ); my $zone_off = $loc_for_ref_t - $ref_t or return $loc_for_ref_t; # Adjust for timezone my $loc_t = $ref_t - $zone_off; # Are we close to a DST change or are we done my $dst_off = $ref_t - _timegm( localtime($loc_t) ); # If this evaluates to true, it means that the value in $loc_t is # the _second_ hour after a DST change where the local time moves # backward. if ( ! $dst_off && ( ( $ref_t - SECS_PER_HOUR ) - _timegm( localtime( $loc_t - SECS_PER_HOUR ) ) < 0 ) ) { return $loc_t - SECS_PER_HOUR; } # Adjust for DST change $loc_t += $dst_off; return $loc_t if $dst_off > 0; # If the original date was a non-extent gap in a forward DST jump, # we should now have the wrong answer - undo the DST adjustment my ( $s, $m, $h ) = localtime($loc_t); $loc_t -= $dst_off if $s != $_[0] || $m != $_[1] || $h != $_[2]; return $loc_t; } sub timelocal_nocheck { local $Options{no_range_check} = 1; return &timelocal; } 1; __END__ #line 385 FILEca4ba019/UNIVERSAL.pm#line 1 "/usr/share/perl/5.14/UNIVERSAL.pm" package UNIVERSAL; our $VERSION = '1.08'; # UNIVERSAL should not contain any extra subs/methods beyond those # that it exists to define. The use of Exporter below is a historical # accident that can't be fixed without breaking code. Note that we # *don't* set @ISA here, as we don't want all classes/objects inheriting from # Exporter. It's bad enough that all classes have a import() method # whenever UNIVERSAL.pm is loaded. require Exporter; @EXPORT_OK = qw(isa can VERSION); # Make sure that even though the import method is called, it doesn't do # anything unless called on UNIVERSAL. sub import { return unless $_[0] eq __PACKAGE__; return unless @_ > 1; require warnings; warnings::warnif( 'deprecated', 'UNIVERSAL->import is deprecated and will be removed in a future perl', ); goto &Exporter::import; } 1; __END__ #line 215 FILE5c529309/XSLoader.pm #line 1 "/usr/share/perl/5.14/XSLoader.pm" # Generated from XSLoader.pm.PL (resolved %Config::Config value) package XSLoader; $VERSION = "0.13"; #use strict; # enable debug/trace messages from DynaLoader perl code # $dl_debug = $ENV{PERL_DL_DEBUG} || 0 unless defined $dl_debug; package DynaLoader; # No prizes for guessing why we don't say 'bootstrap DynaLoader;' here. # NOTE: All dl_*.xs (including dl_none.xs) define a dl_error() XSUB boot_DynaLoader('DynaLoader') if defined(&boot_DynaLoader) && !defined(&dl_error); package XSLoader; sub load { package DynaLoader; my ($module, $modlibname) = caller(); if (@_) { $module = $_[0]; } else { $_[0] = $module; } # work with static linking too my $boots = "$module\::bootstrap"; goto &$boots if defined &$boots; goto \&XSLoader::bootstrap_inherit; my @modparts = split(/::/,$module); my $modfname = $modparts[-1]; my $modpname = join('/',@modparts); my $c = @modparts; $modlibname =~ s,[\\/][^\\/]+$,, while $c--; # Q&D basename my $file = "$modlibname/auto/$modpname/$modfname.so"; # print STDERR "XSLoader::load for $module ($file)\n" if $dl_debug; my $bs = $file; $bs =~ s/(\.\w+)?(;\d*)?$/\.bs/; # look for .bs 'beside' the library if (-s $bs) { # only read file if it's not empty # print STDERR "BS: $bs ($^O, $dlsrc)\n" if $dl_debug; eval { do $bs; }; warn "$bs: $@\n" if $@; } goto \&XSLoader::bootstrap_inherit if not -f $file or -s $bs; my $bootname = "boot_$module"; $bootname =~ s/\W/_/g; @DynaLoader::dl_require_symbols = ($bootname); my $boot_symbol_ref; # Many dynamic extension loading problems will appear to come from # this section of code: XYZ failed at line 123 of DynaLoader.pm. # Often these errors are actually occurring in the initialisation # C code of the extension XS file. Perl reports the error as being # in this perl code simply because this was the last perl code # it executed. my $libref = dl_load_file($file, 0) or do { require Carp; Carp::croak("Can't load '$file' for module $module: " . dl_error()); }; push(@DynaLoader::dl_librefs,$libref); # record loaded object my @unresolved = dl_undef_symbols(); if (@unresolved) { require Carp; Carp::carp("Undefined symbols present after loading $file: @unresolved\n"); } $boot_symbol_ref = dl_find_symbol($libref, $bootname) or do { require Carp; Carp::croak("Can't find '$bootname' symbol in $file\n"); }; push(@DynaLoader::dl_modules, $module); # record loaded module boot: my $xs = dl_install_xsub($boots, $boot_symbol_ref, $file); # See comment block above push(@DynaLoader::dl_shared_objects, $file); # record files loaded return &$xs(@_); } sub bootstrap_inherit { require DynaLoader; goto \&DynaLoader::bootstrap_inherit; } 1; __END__ FILEb655ed5d/base.pm;#line 1 "/usr/share/perl/5.14/base.pm" package base; use strict 'vars'; use vars qw($VERSION); $VERSION = '2.16'; $VERSION = eval $VERSION; # constant.pm is slow sub SUCCESS () { 1 } sub PUBLIC () { 2**0 } sub PRIVATE () { 2**1 } sub INHERITED () { 2**2 } sub PROTECTED () { 2**3 } my $Fattr = \%fields::attr; sub has_fields { my($base) = shift; my $fglob = ${"$base\::"}{FIELDS}; return( ($fglob && 'GLOB' eq ref($fglob) && *$fglob{HASH}) ? 1 : 0 ); } sub has_version { my($base) = shift; my $vglob = ${$base.'::'}{VERSION}; return( ($vglob && *$vglob{SCALAR}) ? 1 : 0 ); } sub has_attr { my($proto) = shift; my($class) = ref $proto || $proto; return exists $Fattr->{$class}; } sub get_attr { $Fattr->{$_[0]} = [1] unless $Fattr->{$_[0]}; return $Fattr->{$_[0]}; } if ($] < 5.009) { *get_fields = sub { # Shut up a possible typo warning. () = \%{$_[0].'::FIELDS'}; my $f = \%{$_[0].'::FIELDS'}; # should be centralized in fields? perhaps # fields::mk_FIELDS_be_OK. Peh. As long as %{ $package . '::FIELDS' } # is used here anyway, it doesn't matter. bless $f, 'pseudohash' if (ref($f) ne 'pseudohash'); return $f; } } else { *get_fields = sub { # Shut up a possible typo warning. () = \%{$_[0].'::FIELDS'}; return \%{$_[0].'::FIELDS'}; } } sub import { my $class = shift; return SUCCESS unless @_; # List of base classes from which we will inherit %FIELDS. my $fields_base; my $inheritor = caller(0); my @isa_classes; my @bases; foreach my $base (@_) { if ( $inheritor eq $base ) { warn "Class '$inheritor' tried to inherit from itself\n"; } next if grep $_->isa($base), ($inheritor, @bases); if (has_version($base)) { ${$base.'::VERSION'} = '-1, set by base.pm' unless defined ${$base.'::VERSION'}; } else { my $sigdie; { local $SIG{__DIE__}; eval "require $base"; # Only ignore "Can't locate" errors from our eval require. # Other fatal errors (syntax etc) must be reported. die if $@ && $@ !~ /^Can't locate .*? at \(eval /; unless (%{"$base\::"}) { require Carp; local $" = " "; Carp::croak(<[0] = @$battr; if( keys %$dfields ) { warn <<"END"; $derived is inheriting from $base but already has its own fields! This will cause problems. Be sure you use base BEFORE declaring fields. END } # Iterate through the base's fields adding all the non-private # ones to the derived class. Hang on to the original attribute # (Public, Private, etc...) and add Inherited. # This is all too complicated to do efficiently with add_fields(). while (my($k,$v) = each %$bfields) { my $fno; if ($fno = $dfields->{$k} and $fno != $v) { require Carp; Carp::croak ("Inherited fields can't override existing fields"); } if( $battr->[$v] & PRIVATE ) { $dattr->[$v] = PRIVATE | INHERITED; } else { $dattr->[$v] = INHERITED | $battr->[$v]; $dfields->{$k} = $v; } } foreach my $idx (1..$#{$battr}) { next if defined $dattr->[$idx]; $dattr->[$idx] = $battr->[$idx] & INHERITED; } } 1; __END__ FILEfb3c754b/bytes.pm#line 1 "/usr/share/perl/5.14/bytes.pm" package bytes; our $VERSION = '1.04'; $bytes::hint_bits = 0x00000008; sub import { $^H |= $bytes::hint_bits; } sub unimport { $^H &= ~$bytes::hint_bits; } sub AUTOLOAD { require "bytes_heavy.pl"; goto &$AUTOLOAD if defined &$AUTOLOAD; require Carp; Carp::croak("Undefined subroutine $AUTOLOAD called"); } sub length (_); sub chr (_); sub ord (_); sub substr ($$;$$); sub index ($$;$); sub rindex ($$;$); 1; __END__ FILE97736f7c/constant.pm#line 1 "/usr/share/perl/5.14/constant.pm" package constant; use 5.005; use strict; use warnings::register; use vars qw($VERSION %declared); $VERSION = '1.21'; #======================================================================= # Some names are evil choices. my %keywords = map +($_, 1), qw{ BEGIN INIT CHECK END DESTROY AUTOLOAD }; $keywords{UNITCHECK}++ if $] > 5.009; my %forced_into_main = map +($_, 1), qw{ STDIN STDOUT STDERR ARGV ARGVOUT ENV INC SIG }; my %forbidden = (%keywords, %forced_into_main); my $str_end = $] >= 5.006 ? "\\z" : "\\Z"; my $normal_constant_name = qr/^_?[^\W_0-9]\w*$str_end/; my $tolerable = qr/^[A-Za-z_]\w*$str_end/; my $boolean = qr/^[01]?$str_end/; BEGIN { # We'd like to do use constant _CAN_PCS => $] > 5.009002 # but that's a bit tricky before we load the constant module :-) # By doing this, we save 1 run time check for *every* call to import. no strict 'refs'; my $const = $] > 5.009002; *_CAN_PCS = sub () {$const}; } #======================================================================= # import() - import symbols into user's namespace # # What we actually do is define a function in the caller's namespace # which returns the value. The function we create will normally # be inlined as a constant, thereby avoiding further sub calling # overhead. #======================================================================= sub import { my $class = shift; return unless @_; # Ignore 'use constant;' my $constants; my $multiple = ref $_[0]; my $pkg = caller; my $flush_mro; my $symtab; if (_CAN_PCS) { no strict 'refs'; $symtab = \%{$pkg . '::'}; }; if ( $multiple ) { if (ref $_[0] ne 'HASH') { require Carp; Carp::croak("Invalid reference type '".ref(shift)."' not 'HASH'"); } $constants = shift; } else { unless (defined $_[0]) { require Carp; Carp::croak("Can't use undef as constant name"); } $constants->{+shift} = undef; } foreach my $name ( keys %$constants ) { # Normal constant name if ($name =~ $normal_constant_name and !$forbidden{$name}) { # Everything is okay # Name forced into main, but we're not in main. Fatal. } elsif ($forced_into_main{$name} and $pkg ne 'main') { require Carp; Carp::croak("Constant name '$name' is forced into main::"); # Starts with double underscore. Fatal. } elsif ($name =~ /^__/) { require Carp; Carp::croak("Constant name '$name' begins with '__'"); # Maybe the name is tolerable } elsif ($name =~ $tolerable) { # Then we'll warn only if you've asked for warnings if (warnings::enabled()) { if ($keywords{$name}) { warnings::warn("Constant name '$name' is a Perl keyword"); } elsif ($forced_into_main{$name}) { warnings::warn("Constant name '$name' is " . "forced into package main::"); } } # Looks like a boolean # use constant FRED == fred; } elsif ($name =~ $boolean) { require Carp; if (@_) { Carp::croak("Constant name '$name' is invalid"); } else { Carp::croak("Constant name looks like boolean value"); } } else { # Must have bad characters require Carp; Carp::croak("Constant name '$name' has invalid characters"); } { no strict 'refs'; my $full_name = "${pkg}::$name"; $declared{$full_name}++; if ($multiple || @_ == 1) { my $scalar = $multiple ? $constants->{$name} : $_[0]; # Work around perl bug #xxxxx: Sub names (actually glob # names in general) ignore the UTF8 flag. So we have to # turn it off to get the "right" symbol table entry. utf8::is_utf8 $name and utf8::encode $name; # The constant serves to optimise this entire block out on # 5.8 and earlier. if (_CAN_PCS && $symtab && !exists $symtab->{$name}) { # No typeglob yet, so we can use a reference as space- # efficient proxy for a constant subroutine # The check in Perl_ck_rvconst knows that inlinable # constants from cv_const_sv are read only. So we have to: Internals::SvREADONLY($scalar, 1); $symtab->{$name} = \$scalar; ++$flush_mro; } else { *$full_name = sub () { $scalar }; } } elsif (@_) { my @list = @_; *$full_name = sub () { @list }; } else { *$full_name = sub () { }; } } } # Flush the cache exactly once if we make any direct symbol table changes. mro::method_changed_in($pkg) if _CAN_PCS && $flush_mro; } 1; __END__ FILE30c1ccc2/feature.pm J#line 1 "/usr/share/perl/5.14/feature.pm" package feature; our $VERSION = '1.20'; # (feature name) => (internal name, used in %^H) my %feature = ( switch => 'feature_switch', say => "feature_say", state => "feature_state", unicode_strings => "feature_unicode", ); # This gets set (for now) in $^H as well as in %^H, # for runtime speed of the uc/lc/ucfirst/lcfirst functions. # See HINT_UNI_8_BIT in perl.h. our $hint_uni8bit = 0x00000800; # NB. the latest bundle must be loaded by the -E switch (see toke.c) my %feature_bundle = ( "5.10" => [qw(switch say state)], "5.11" => [qw(switch say state unicode_strings)], "5.12" => [qw(switch say state unicode_strings)], "5.13" => [qw(switch say state unicode_strings)], "5.14" => [qw(switch say state unicode_strings)], ); # special case $feature_bundle{"5.9.5"} = $feature_bundle{"5.10"}; # TODO: # - think about versioned features (use feature switch => 2) sub import { my $class = shift; if (@_ == 0) { croak("No features specified"); } while (@_) { my $name = shift(@_); if (substr($name, 0, 1) eq ":") { my $v = substr($name, 1); if (!exists $feature_bundle{$v}) { $v =~ s/^([0-9]+)\.([0-9]+).[0-9]+$/$1.$2/; if (!exists $feature_bundle{$v}) { unknown_feature_bundle(substr($name, 1)); } } unshift @_, @{$feature_bundle{$v}}; next; } if (!exists $feature{$name}) { unknown_feature($name); } $^H{$feature{$name}} = 1; $^H |= $hint_uni8bit if $name eq 'unicode_strings'; } } sub unimport { my $class = shift; # A bare C should disable *all* features if (!@_) { delete @^H{ values(%feature) }; $^H &= ~ $hint_uni8bit; return; } while (@_) { my $name = shift; if (substr($name, 0, 1) eq ":") { my $v = substr($name, 1); if (!exists $feature_bundle{$v}) { $v =~ s/^([0-9]+)\.([0-9]+).[0-9]+$/$1.$2/; if (!exists $feature_bundle{$v}) { unknown_feature_bundle(substr($name, 1)); } } unshift @_, @{$feature_bundle{$v}}; next; } if (!exists($feature{$name})) { unknown_feature($name); } else { delete $^H{$feature{$name}}; $^H &= ~ $hint_uni8bit if $name eq 'unicode_strings'; } } } sub unknown_feature { my $feature = shift; croak(sprintf('Feature "%s" is not supported by Perl %vd', $feature, $^V)); } sub unknown_feature_bundle { my $feature = shift; croak(sprintf('Feature bundle "%s" is not supported by Perl %vd', $feature, $^V)); } sub croak { require Carp; Carp::croak(@_); } 1; FILEa68a58f2/integer.pm#line 1 "/usr/share/perl/5.14/integer.pm" package integer; our $VERSION = '1.00'; $integer::hint_bits = 0x1; sub import { $^H |= $integer::hint_bits; } sub unimport { $^H &= ~$integer::hint_bits; } 1; FILE58cd29b7/overload.pm/#line 1 "/usr/share/perl/5.14/overload.pm" package overload; our $VERSION = '1.13'; sub nil {} sub OVERLOAD { $package = shift; my %arg = @_; my ($sub, $fb); $ {$package . "::OVERLOAD"}{dummy}++; # Register with magic by touching. $fb = ${$package . "::()"}; # preserve old fallback value RT#68196 *{$package . "::()"} = \&nil; # Make it findable via fetchmethod. for (keys %arg) { if ($_ eq 'fallback') { $fb = $arg{$_}; } else { $sub = $arg{$_}; if (not ref $sub and $sub !~ /::/) { $ {$package . "::(" . $_} = $sub; $sub = \&nil; } #print STDERR "Setting `$ {'package'}::\cO$_' to \\&`$sub'.\n"; *{$package . "::(" . $_} = \&{ $sub }; } } ${$package . "::()"} = $fb; # Make it findable too (fallback only). } sub import { $package = (caller())[0]; # *{$package . "::OVERLOAD"} = \&OVERLOAD; shift; $package->overload::OVERLOAD(@_); } sub unimport { $package = (caller())[0]; ${$package . "::OVERLOAD"}{dummy}++; # Upgrade the table shift; for (@_) { if ($_ eq 'fallback') { undef $ {$package . "::()"}; } else { delete $ {$package . "::"}{"(" . $_}; } } } sub Overloaded { my $package = shift; $package = ref $package if ref $package; $package->can('()'); } sub ov_method { my $globref = shift; return undef unless $globref; my $sub = \&{*$globref}; require Scalar::Util; return $sub if Scalar::Util::refaddr($sub) != Scalar::Util::refaddr(\&nil); return shift->can($ {*$globref}); } sub OverloadedStringify { my $package = shift; $package = ref $package if ref $package; #$package->can('(""') ov_method mycan($package, '(""'), $package or ov_method mycan($package, '(0+'), $package or ov_method mycan($package, '(bool'), $package or ov_method mycan($package, '(nomethod'), $package; } sub Method { my $package = shift; if(ref $package) { local $@; local $!; require Scalar::Util; $package = Scalar::Util::blessed($package); return undef if !defined $package; } #my $meth = $package->can('(' . shift); ov_method mycan($package, '(' . shift), $package; #return $meth if $meth ne \&nil; #return $ {*{$meth}}; } sub AddrRef { my $package = ref $_[0]; return "$_[0]" unless $package; local $@; local $!; require Scalar::Util; my $class = Scalar::Util::blessed($_[0]); my $class_prefix = defined($class) ? "$class=" : ""; my $type = Scalar::Util::reftype($_[0]); my $addr = Scalar::Util::refaddr($_[0]); return sprintf("%s%s(0x%x)", $class_prefix, $type, $addr); } *StrVal = *AddrRef; sub mycan { # Real can would leave stubs. my ($package, $meth) = @_; local $@; local $!; require mro; my $mro = mro::get_linear_isa($package); foreach my $p (@$mro) { my $fqmeth = $p . q{::} . $meth; return \*{$fqmeth} if defined &{$fqmeth}; } return undef; } %constants = ( 'integer' => 0x1000, # HINT_NEW_INTEGER 'float' => 0x2000, # HINT_NEW_FLOAT 'binary' => 0x4000, # HINT_NEW_BINARY 'q' => 0x8000, # HINT_NEW_STRING 'qr' => 0x10000, # HINT_NEW_RE ); %ops = ( with_assign => "+ - * / % ** << >> x .", assign => "+= -= *= /= %= **= <<= >>= x= .=", num_comparison => "< <= > >= == !=", '3way_comparison'=> "<=> cmp", str_comparison => "lt le gt ge eq ne", binary => '& &= | |= ^ ^=', unary => "neg ! ~", mutators => '++ --', func => "atan2 cos sin exp abs log sqrt int", conversion => 'bool "" 0+ qr', iterators => '<>', filetest => "-X", dereferencing => '${} @{} %{} &{} *{}', matching => '~~', special => 'nomethod fallback ='); use warnings::register; sub constant { # Arguments: what, sub while (@_) { if (@_ == 1) { warnings::warnif ("Odd number of arguments for overload::constant"); last; } elsif (!exists $constants {$_ [0]}) { warnings::warnif ("`$_[0]' is not an overloadable type"); } elsif (!ref $_ [1] || "$_[1]" !~ /(^|=)CODE\(0x[0-9a-f]+\)$/) { # Can't use C above as code references can be # blessed, and C would return the package the ref is blessed into. if (warnings::enabled) { $_ [1] = "undef" unless defined $_ [1]; warnings::warn ("`$_[1]' is not a code reference"); } } else { $^H{$_[0]} = $_[1]; $^H |= $constants{$_[0]}; } shift, shift; } } sub remove_constant { # Arguments: what, sub while (@_) { delete $^H{$_[0]}; $^H &= ~ $constants{$_[0]}; shift, shift; } } 1; __END__ FILEb3a7425d/strict.pm#line 1 "/usr/share/perl/5.14/strict.pm" package strict; $strict::VERSION = "1.04"; # Verify that we're called correctly so that strictures will work. unless ( __FILE__ =~ /(^|[\/\\])\Q${\__PACKAGE__}\E\.pmc?$/ ) { # Can't use Carp, since Carp uses us! my (undef, $f, $l) = caller; die("Incorrect use of pragma '${\__PACKAGE__}' at $f line $l.\n"); } my %bitmask = ( refs => 0x00000002, subs => 0x00000200, vars => 0x00000400 ); sub bits { my $bits = 0; my @wrong; foreach my $s (@_) { push @wrong, $s unless exists $bitmask{$s}; $bits |= $bitmask{$s} || 0; } if (@wrong) { require Carp; Carp::croak("Unknown 'strict' tag(s) '@wrong'"); } $bits; } my $default_bits = bits(qw(refs subs vars)); sub import { shift; $^H |= @_ ? bits(@_) : $default_bits; } sub unimport { shift; $^H &= ~ (@_ ? bits(@_) : $default_bits); } 1; __END__ FILE3738f93b/utf8.pm#line 1 "/usr/share/perl/5.14/utf8.pm" package utf8; $utf8::hint_bits = 0x00800000; our $VERSION = '1.09'; sub import { $^H |= $utf8::hint_bits; $enc{caller()} = $_[1] if $_[1]; } sub unimport { $^H &= ~$utf8::hint_bits; } sub AUTOLOAD { require "utf8_heavy.pl"; goto &$AUTOLOAD if defined &$AUTOLOAD; require Carp; Carp::croak("Undefined subroutine $AUTOLOAD called"); } 1; __END__ FILEcdf3441b/vars.pm#line 1 "/usr/share/perl/5.14/vars.pm" package vars; use 5.006; our $VERSION = '1.02'; use warnings::register; use strict qw(vars subs); sub import { my $callpack = caller; my (undef, @imports) = @_; my ($sym, $ch); foreach (@imports) { if (($ch, $sym) = /^([\$\@\%\*\&])(.+)/) { if ($sym =~ /\W/) { # time for a more-detailed check-up if ($sym =~ /^\w+[[{].*[]}]$/) { require Carp; Carp::croak("Can't declare individual elements of hash or array"); } elsif (warnings::enabled() and length($sym) == 1 and $sym !~ tr/a-zA-Z//) { warnings::warn("No need to declare built-in vars"); } elsif (($^H &= strict::bits('vars'))) { require Carp; Carp::croak("'$_' is not a valid variable name under strict vars"); } } $sym = "${callpack}::$sym" unless $sym =~ /::/; *$sym = ( $ch eq "\$" ? \$$sym : $ch eq "\@" ? \@$sym : $ch eq "\%" ? \%$sym : $ch eq "\*" ? \*$sym : $ch eq "\&" ? \&$sym : do { require Carp; Carp::croak("'$_' is not a valid variable name"); }); } else { require Carp; Carp::croak("'$_' is not a valid variable name"); } } }; 1; __END__ FILE2312a55e/warnings.pm:#line 1 "/usr/share/perl/5.14/warnings.pm" # -*- buffer-read-only: t -*- # !!!!!!! DO NOT EDIT THIS FILE !!!!!!! # This file is built by regen/warnings.pl. # Any changes made here will be lost! package warnings; our $VERSION = '1.12'; # Verify that we're called correctly so that warnings will work. # see also strict.pm. unless ( __FILE__ =~ /(^|[\/\\])\Q${\__PACKAGE__}\E\.pmc?$/ ) { my (undef, $f, $l) = caller; die("Incorrect use of pragma '${\__PACKAGE__}' at $f line $l.\n"); } our %Offsets = ( # Warnings Categories added in Perl 5.008 'all' => 0, 'closure' => 2, 'deprecated' => 4, 'exiting' => 6, 'glob' => 8, 'io' => 10, 'closed' => 12, 'exec' => 14, 'layer' => 16, 'newline' => 18, 'pipe' => 20, 'unopened' => 22, 'misc' => 24, 'numeric' => 26, 'once' => 28, 'overflow' => 30, 'pack' => 32, 'portable' => 34, 'recursion' => 36, 'redefine' => 38, 'regexp' => 40, 'severe' => 42, 'debugging' => 44, 'inplace' => 46, 'internal' => 48, 'malloc' => 50, 'signal' => 52, 'substr' => 54, 'syntax' => 56, 'ambiguous' => 58, 'bareword' => 60, 'digit' => 62, 'parenthesis' => 64, 'precedence' => 66, 'printf' => 68, 'prototype' => 70, 'qw' => 72, 'reserved' => 74, 'semicolon' => 76, 'taint' => 78, 'threads' => 80, 'uninitialized' => 82, 'unpack' => 84, 'untie' => 86, 'utf8' => 88, 'void' => 90, # Warnings Categories added in Perl 5.011 'imprecision' => 92, 'illegalproto' => 94, # Warnings Categories added in Perl 5.013 'non_unicode' => 96, 'nonchar' => 98, 'surrogate' => 100, ); our %Bits = ( 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x15", # [0..50] 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [29] 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [30] 'closed' => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6] 'closure' => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1] 'debugging' => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [22] 'deprecated' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2] 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00", # [31] 'exec' => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7] 'exiting' => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3] 'glob' => "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4] 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [47] 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [46] 'inplace' => "\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [23] 'internal' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00", # [24] 'io' => "\x00\x54\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..11] 'layer' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8] 'malloc' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00", # [25] 'misc' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12] 'newline' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9] 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [48] 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [49] 'numeric' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13] 'once' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14] 'overflow' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15] 'pack' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", # [16] 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [32] 'pipe' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10] 'portable' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [17] 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [33] 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [34] 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [35] 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [36] 'recursion' => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [18] 'redefine' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [19] 'regexp' => "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [20] 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [37] 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [38] 'severe' => "\x00\x00\x00\x00\x00\x54\x05\x00\x00\x00\x00\x00\x00", # [21..25] 'signal' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [26] 'substr' => "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [27] 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [50] 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\x55\x55\x15\x00\x40\x00", # [28..38,47] 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [39] 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00", # [40] 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [41] 'unopened' => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11] 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [42] 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [43] 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x15", # [44,48..50] 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [45] ); our %DeadBits = ( 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\x2a", # [0..50] 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [29] 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [30] 'closed' => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6] 'closure' => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1] 'debugging' => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [22] 'deprecated' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2] 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00", # [31] 'exec' => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7] 'exiting' => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3] 'glob' => "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4] 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [47] 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [46] 'inplace' => "\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [23] 'internal' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00", # [24] 'io' => "\x00\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [5..11] 'layer' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8] 'malloc' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00", # [25] 'misc' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12] 'newline' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9] 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [48] 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [49] 'numeric' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13] 'once' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14] 'overflow' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15] 'pack' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00", # [16] 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [32] 'pipe' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10] 'portable' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [17] 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [33] 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [34] 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [35] 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [36] 'recursion' => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [18] 'redefine' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [19] 'regexp' => "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [20] 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [37] 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [38] 'severe' => "\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00", # [21..25] 'signal' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [26] 'substr' => "\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [27] 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [50] 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\xaa\xaa\x2a\x00\x80\x00", # [28..38,47] 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [39] 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00", # [40] 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [41] 'unopened' => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11] 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [42] 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [43] 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x2a", # [44,48..50] 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [45] ); $NONE = "\0\0\0\0\0\0\0\0\0\0\0\0\0"; $LAST_BIT = 102 ; $BYTES = 13 ; $All = "" ; vec($All, $Offsets{'all'}, 2) = 3 ; sub Croaker { require Carp; # this initializes %CarpInternal local $Carp::CarpInternal{'warnings'}; delete $Carp::CarpInternal{'warnings'}; Carp::croak(@_); } sub _bits { my $mask = shift ; my $catmask ; my $fatal = 0 ; my $no_fatal = 0 ; foreach my $word ( @_ ) { if ($word eq 'FATAL') { $fatal = 1; $no_fatal = 0; } elsif ($word eq 'NONFATAL') { $fatal = 0; $no_fatal = 1; } elsif ($catmask = $Bits{$word}) { $mask |= $catmask ; $mask |= $DeadBits{$word} if $fatal ; $mask &= ~($DeadBits{$word}|$All) if $no_fatal ; } else { Croaker("Unknown warnings category '$word'")} } return $mask ; } sub bits { # called from B::Deparse.pm push @_, 'all' unless @_ ; return _bits(undef, @_) ; } sub import { shift; my $mask = ${^WARNING_BITS} ; if (vec($mask, $Offsets{'all'}, 1)) { $mask |= $Bits{'all'} ; $mask |= $DeadBits{'all'} if vec($mask, $Offsets{'all'}+1, 1); } # Empty @_ is equivalent to @_ = 'all' ; ${^WARNING_BITS} = @_ ? _bits($mask, @_) : $mask | $Bits{all} ; } sub unimport { shift; my $catmask ; my $mask = ${^WARNING_BITS} ; if (vec($mask, $Offsets{'all'}, 1)) { $mask |= $Bits{'all'} ; $mask |= $DeadBits{'all'} if vec($mask, $Offsets{'all'}+1, 1); } push @_, 'all' unless @_; foreach my $word ( @_ ) { if ($word eq 'FATAL') { next; } elsif ($catmask = $Bits{$word}) { $mask &= ~($catmask | $DeadBits{$word} | $All); } else { Croaker("Unknown warnings category '$word'")} } ${^WARNING_BITS} = $mask ; } my %builtin_type; @builtin_type{qw(SCALAR ARRAY HASH CODE REF GLOB LVALUE Regexp)} = (); sub MESSAGE () { 4 }; sub FATAL () { 2 }; sub NORMAL () { 1 }; sub __chk { my $category ; my $offset ; my $isobj = 0 ; my $wanted = shift; my $has_message = $wanted & MESSAGE; unless (@_ == 1 || @_ == ($has_message ? 2 : 0)) { my $sub = (caller 1)[3]; my $syntax = $has_message ? "[category,] 'message'" : '[category]'; Croaker("Usage: $sub($syntax)"); } my $message = pop if $has_message; if (@_) { # check the category supplied. $category = shift ; if (my $type = ref $category) { Croaker("not an object") if exists $builtin_type{$type}; $category = $type; $isobj = 1 ; } $offset = $Offsets{$category}; Croaker("Unknown warnings category '$category'") unless defined $offset; } else { $category = (caller(1))[0] ; $offset = $Offsets{$category}; Croaker("package '$category' not registered for warnings") unless defined $offset ; } my $i; if ($isobj) { my $pkg; $i = 2; while (do { { package DB; $pkg = (caller($i++))[0] } } ) { last unless @DB::args && $DB::args[0] =~ /^$category=/ ; } $i -= 2 ; } else { $i = _error_loc(); # see where Carp will allocate the error } # Defaulting this to 0 reduces complexity in code paths below. my $callers_bitmask = (caller($i))[9] || 0 ; my @results; foreach my $type (FATAL, NORMAL) { next unless $wanted & $type; push @results, (vec($callers_bitmask, $offset + $type - 1, 1) || vec($callers_bitmask, $Offsets{'all'} + $type - 1, 1)); } # &enabled and &fatal_enabled return $results[0] unless $has_message; # &warnif, and the category is neither enabled as warning nor as fatal return if $wanted == (NORMAL | FATAL | MESSAGE) && !($results[0] || $results[1]); require Carp; Carp::croak($message) if $results[0]; # will always get here for &warn. will only get here for &warnif if the # category is enabled Carp::carp($message); } sub _mkMask { my ($bit) = @_; my $mask = ""; vec($mask, $bit, 1) = 1; return $mask; } sub register_categories { my @names = @_; for my $name (@names) { if (! defined $Bits{$name}) { $Bits{$name} = _mkMask($LAST_BIT); vec($Bits{'all'}, $LAST_BIT, 1) = 1; $Offsets{$name} = $LAST_BIT ++; foreach my $k (keys %Bits) { vec($Bits{$k}, $LAST_BIT, 1) = 0; } $DeadBits{$name} = _mkMask($LAST_BIT); vec($DeadBits{'all'}, $LAST_BIT++, 1) = 1; } } } sub _error_loc { require Carp; goto &Carp::short_error_loc; # don't introduce another stack frame } sub enabled { return __chk(NORMAL, @_); } sub fatal_enabled { return __chk(FATAL, @_); } sub warn { return __chk(FATAL | MESSAGE, @_); } sub warnif { return __chk(NORMAL | FATAL | MESSAGE, @_); } # These are not part of any public interface, so we can delete them to save # space. delete $warnings::{$_} foreach qw(NORMAL FATAL MESSAGE); 1; # ex: set ro: FILE6e162436/warnings/register.pm#line 1 "/usr/share/perl/5.14/warnings/register.pm" package warnings::register; our $VERSION = '1.02'; require warnings; # left here as cruft in case other users were using this undocumented routine # -- rjbs, 2010-09-08 sub mkMask { my ($bit) = @_; my $mask = ""; vec($mask, $bit, 1) = 1; return $mask; } sub import { shift; my @categories = @_; my $package = (caller(0))[0]; warnings::register_categories($package); warnings::register_categories($package . "::$_") for @categories; } 1; FILE0a893305/Archive/Zip.pmC#line 1 "/usr/share/perl5/Archive/Zip.pm" package Archive::Zip; use strict; BEGIN { require 5.003_96; } use UNIVERSAL (); use Carp (); use Cwd (); use IO::File (); use IO::Seekable (); use Compress::Raw::Zlib (); use File::Spec (); use File::Temp (); use FileHandle (); use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.30'; require Exporter; @ISA = qw( Exporter ); } use vars qw( $ChunkSize $ErrorHandler ); BEGIN { # This is the size we'll try to read, write, and (de)compress. # You could set it to something different if you had lots of memory # and needed more speed. $ChunkSize ||= 32768; $ErrorHandler = \&Carp::carp; } # BEGIN block is necessary here so that other modules can use the constants. use vars qw( @EXPORT_OK %EXPORT_TAGS ); BEGIN { @EXPORT_OK = ('computeCRC32'); %EXPORT_TAGS = ( CONSTANTS => [ qw( FA_MSDOS FA_UNIX GPBF_ENCRYPTED_MASK GPBF_DEFLATING_COMPRESSION_MASK GPBF_HAS_DATA_DESCRIPTOR_MASK COMPRESSION_STORED COMPRESSION_DEFLATED COMPRESSION_LEVEL_NONE COMPRESSION_LEVEL_DEFAULT COMPRESSION_LEVEL_FASTEST COMPRESSION_LEVEL_BEST_COMPRESSION IFA_TEXT_FILE_MASK IFA_TEXT_FILE IFA_BINARY_FILE ) ], MISC_CONSTANTS => [ qw( FA_AMIGA FA_VAX_VMS FA_VM_CMS FA_ATARI_ST FA_OS2_HPFS FA_MACINTOSH FA_Z_SYSTEM FA_CPM FA_TOPS20 FA_WINDOWS_NTFS FA_QDOS FA_ACORN FA_VFAT FA_MVS FA_BEOS FA_TANDEM FA_THEOS GPBF_IMPLODING_8K_SLIDING_DICTIONARY_MASK GPBF_IMPLODING_3_SHANNON_FANO_TREES_MASK GPBF_IS_COMPRESSED_PATCHED_DATA_MASK COMPRESSION_SHRUNK DEFLATING_COMPRESSION_NORMAL DEFLATING_COMPRESSION_MAXIMUM DEFLATING_COMPRESSION_FAST DEFLATING_COMPRESSION_SUPER_FAST COMPRESSION_REDUCED_1 COMPRESSION_REDUCED_2 COMPRESSION_REDUCED_3 COMPRESSION_REDUCED_4 COMPRESSION_IMPLODED COMPRESSION_TOKENIZED COMPRESSION_DEFLATED_ENHANCED COMPRESSION_PKWARE_DATA_COMPRESSION_LIBRARY_IMPLODED ) ], ERROR_CODES => [ qw( AZ_OK AZ_STREAM_END AZ_ERROR AZ_FORMAT_ERROR AZ_IO_ERROR ) ], # For Internal Use Only PKZIP_CONSTANTS => [ qw( SIGNATURE_FORMAT SIGNATURE_LENGTH LOCAL_FILE_HEADER_SIGNATURE LOCAL_FILE_HEADER_FORMAT LOCAL_FILE_HEADER_LENGTH CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE DATA_DESCRIPTOR_FORMAT DATA_DESCRIPTOR_LENGTH DATA_DESCRIPTOR_SIGNATURE DATA_DESCRIPTOR_FORMAT_NO_SIG DATA_DESCRIPTOR_LENGTH_NO_SIG CENTRAL_DIRECTORY_FILE_HEADER_FORMAT CENTRAL_DIRECTORY_FILE_HEADER_LENGTH END_OF_CENTRAL_DIRECTORY_SIGNATURE END_OF_CENTRAL_DIRECTORY_SIGNATURE_STRING END_OF_CENTRAL_DIRECTORY_FORMAT END_OF_CENTRAL_DIRECTORY_LENGTH ) ], # For Internal Use Only UTILITY_METHODS => [ qw( _error _printError _ioError _formatError _subclassResponsibility _binmode _isSeekable _newFileHandle _readSignature _asZipDirName ) ], ); # Add all the constant names and error code names to @EXPORT_OK Exporter::export_ok_tags( qw( CONSTANTS ERROR_CODES PKZIP_CONSTANTS UTILITY_METHODS MISC_CONSTANTS ) ); } # Error codes use constant AZ_OK => 0; use constant AZ_STREAM_END => 1; use constant AZ_ERROR => 2; use constant AZ_FORMAT_ERROR => 3; use constant AZ_IO_ERROR => 4; # File types # Values of Archive::Zip::Member->fileAttributeFormat() use constant FA_MSDOS => 0; use constant FA_AMIGA => 1; use constant FA_VAX_VMS => 2; use constant FA_UNIX => 3; use constant FA_VM_CMS => 4; use constant FA_ATARI_ST => 5; use constant FA_OS2_HPFS => 6; use constant FA_MACINTOSH => 7; use constant FA_Z_SYSTEM => 8; use constant FA_CPM => 9; use constant FA_TOPS20 => 10; use constant FA_WINDOWS_NTFS => 11; use constant FA_QDOS => 12; use constant FA_ACORN => 13; use constant FA_VFAT => 14; use constant FA_MVS => 15; use constant FA_BEOS => 16; use constant FA_TANDEM => 17; use constant FA_THEOS => 18; # general-purpose bit flag masks # Found in Archive::Zip::Member->bitFlag() use constant GPBF_ENCRYPTED_MASK => 1 << 0; use constant GPBF_DEFLATING_COMPRESSION_MASK => 3 << 1; use constant GPBF_HAS_DATA_DESCRIPTOR_MASK => 1 << 3; # deflating compression types, if compressionMethod == COMPRESSION_DEFLATED # ( Archive::Zip::Member->bitFlag() & GPBF_DEFLATING_COMPRESSION_MASK ) use constant DEFLATING_COMPRESSION_NORMAL => 0 << 1; use constant DEFLATING_COMPRESSION_MAXIMUM => 1 << 1; use constant DEFLATING_COMPRESSION_FAST => 2 << 1; use constant DEFLATING_COMPRESSION_SUPER_FAST => 3 << 1; # compression method # these two are the only ones supported in this module use constant COMPRESSION_STORED => 0; # file is stored (no compression) use constant COMPRESSION_DEFLATED => 8; # file is Deflated use constant COMPRESSION_LEVEL_NONE => 0; use constant COMPRESSION_LEVEL_DEFAULT => -1; use constant COMPRESSION_LEVEL_FASTEST => 1; use constant COMPRESSION_LEVEL_BEST_COMPRESSION => 9; # internal file attribute bits # Found in Archive::Zip::Member::internalFileAttributes() use constant IFA_TEXT_FILE_MASK => 1; use constant IFA_TEXT_FILE => 1; use constant IFA_BINARY_FILE => 0; # PKZIP file format miscellaneous constants (for internal use only) use constant SIGNATURE_FORMAT => "V"; use constant SIGNATURE_LENGTH => 4; # these lengths are without the signature. use constant LOCAL_FILE_HEADER_SIGNATURE => 0x04034b50; use constant LOCAL_FILE_HEADER_FORMAT => "v3 V4 v2"; use constant LOCAL_FILE_HEADER_LENGTH => 26; # PKZIP docs don't mention the signature, but Info-Zip writes it. use constant DATA_DESCRIPTOR_SIGNATURE => 0x08074b50; use constant DATA_DESCRIPTOR_FORMAT => "V3"; use constant DATA_DESCRIPTOR_LENGTH => 12; # but the signature is apparently optional. use constant DATA_DESCRIPTOR_FORMAT_NO_SIG => "V2"; use constant DATA_DESCRIPTOR_LENGTH_NO_SIG => 8; use constant CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE => 0x02014b50; use constant CENTRAL_DIRECTORY_FILE_HEADER_FORMAT => "C2 v3 V4 v5 V2"; use constant CENTRAL_DIRECTORY_FILE_HEADER_LENGTH => 42; use constant END_OF_CENTRAL_DIRECTORY_SIGNATURE => 0x06054b50; use constant END_OF_CENTRAL_DIRECTORY_SIGNATURE_STRING => pack( "V", END_OF_CENTRAL_DIRECTORY_SIGNATURE ); use constant END_OF_CENTRAL_DIRECTORY_FORMAT => "v4 V2 v"; use constant END_OF_CENTRAL_DIRECTORY_LENGTH => 18; use constant GPBF_IMPLODING_8K_SLIDING_DICTIONARY_MASK => 1 << 1; use constant GPBF_IMPLODING_3_SHANNON_FANO_TREES_MASK => 1 << 2; use constant GPBF_IS_COMPRESSED_PATCHED_DATA_MASK => 1 << 5; # the rest of these are not supported in this module use constant COMPRESSION_SHRUNK => 1; # file is Shrunk use constant COMPRESSION_REDUCED_1 => 2; # file is Reduced CF=1 use constant COMPRESSION_REDUCED_2 => 3; # file is Reduced CF=2 use constant COMPRESSION_REDUCED_3 => 4; # file is Reduced CF=3 use constant COMPRESSION_REDUCED_4 => 5; # file is Reduced CF=4 use constant COMPRESSION_IMPLODED => 6; # file is Imploded use constant COMPRESSION_TOKENIZED => 7; # reserved for Tokenizing compr. use constant COMPRESSION_DEFLATED_ENHANCED => 9; # reserved for enh. Deflating use constant COMPRESSION_PKWARE_DATA_COMPRESSION_LIBRARY_IMPLODED => 10; # Load the various required classes require Archive::Zip::Archive; require Archive::Zip::Member; require Archive::Zip::FileMember; require Archive::Zip::DirectoryMember; require Archive::Zip::ZipFileMember; require Archive::Zip::NewFileMember; require Archive::Zip::StringMember; use constant ZIPARCHIVECLASS => 'Archive::Zip::Archive'; use constant ZIPMEMBERCLASS => 'Archive::Zip::Member'; # Convenience functions sub _ISA ($$) { # Can't rely on Scalar::Util, so use the next best way local $@; !! eval { ref $_[0] and $_[0]->isa($_[1]) }; } sub _CAN ($$) { local $@; !! eval { ref $_[0] and $_[0]->can($_[1]) }; } ##################################################################### # Methods sub new { my $class = shift; return $class->ZIPARCHIVECLASS->new(@_); } sub computeCRC32 { my ( $data, $crc ); if ( ref( $_[0] ) eq 'HASH' ) { $data = $_[0]->{string}; $crc = $_[0]->{checksum}; } else { $data = shift; $data = shift if ref($data); $crc = shift; } return Compress::Raw::Zlib::crc32( $data, $crc ); } # Report or change chunk size used for reading and writing. # Also sets Zlib's default buffer size (eventually). sub setChunkSize { shift if ref( $_[0] ) eq 'Archive::Zip::Archive'; my $chunkSize = ( ref( $_[0] ) eq 'HASH' ) ? shift->{chunkSize} : shift; my $oldChunkSize = $Archive::Zip::ChunkSize; $Archive::Zip::ChunkSize = $chunkSize if ($chunkSize); return $oldChunkSize; } sub chunkSize { return $Archive::Zip::ChunkSize; } sub setErrorHandler { my $errorHandler = ( ref( $_[0] ) eq 'HASH' ) ? shift->{subroutine} : shift; $errorHandler = \&Carp::carp unless defined($errorHandler); my $oldErrorHandler = $Archive::Zip::ErrorHandler; $Archive::Zip::ErrorHandler = $errorHandler; return $oldErrorHandler; } ###################################################################### # Private utility functions (not methods). sub _printError { my $string = join ( ' ', @_, "\n" ); my $oldCarpLevel = $Carp::CarpLevel; $Carp::CarpLevel += 2; &{$ErrorHandler} ($string); $Carp::CarpLevel = $oldCarpLevel; } # This is called on format errors. sub _formatError { shift if ref( $_[0] ); _printError( 'format error:', @_ ); return AZ_FORMAT_ERROR; } # This is called on IO errors. sub _ioError { shift if ref( $_[0] ); _printError( 'IO error:', @_, ':', $! ); return AZ_IO_ERROR; } # This is called on generic errors. sub _error { shift if ref( $_[0] ); _printError( 'error:', @_ ); return AZ_ERROR; } # Called when a subclass should have implemented # something but didn't sub _subclassResponsibility { Carp::croak("subclass Responsibility\n"); } # Try to set the given file handle or object into binary mode. sub _binmode { my $fh = shift; return _CAN( $fh, 'binmode' ) ? $fh->binmode() : binmode($fh); } # Attempt to guess whether file handle is seekable. # Because of problems with Windows, this only returns true when # the file handle is a real file. sub _isSeekable { my $fh = shift; return 0 unless ref $fh; if ( _ISA($fh, 'IO::Scalar') ) { # IO::Scalar objects are brokenly-seekable return 0; } if ( _ISA($fh, 'IO::String') ) { return 1; } if ( _ISA($fh, 'IO::Seekable') ) { # Unfortunately, some things like FileHandle objects # return true for Seekable, but AREN'T!!!!! if ( _ISA($fh, 'FileHandle') ) { return 0; } else { return 1; } } if ( _CAN($fh, 'stat') ) { return -f $fh; } return ( _CAN($fh, 'seek') and _CAN($fh, 'tell') ) ? 1 : 0; } # Print to the filehandle, while making sure the pesky Perl special global # variables don't interfere. sub _print { my ($self, $fh, @data) = @_; local $\; return $fh->print(@data); } # Return an opened IO::Handle # my ( $status, fh ) = _newFileHandle( 'fileName', 'w' ); # Can take a filename, file handle, or ref to GLOB # Or, if given something that is a ref but not an IO::Handle, # passes back the same thing. sub _newFileHandle { my $fd = shift; my $status = 1; my $handle; if ( ref($fd) ) { if ( _ISA($fd, 'IO::Scalar') or _ISA($fd, 'IO::String') ) { $handle = $fd; } elsif ( _ISA($fd, 'IO::Handle') or ref($fd) eq 'GLOB' ) { $handle = IO::File->new; $status = $handle->fdopen( $fd, @_ ); } else { $handle = $fd; } } else { $handle = IO::File->new; $status = $handle->open( $fd, @_ ); } return ( $status, $handle ); } # Returns next signature from given file handle, leaves # file handle positioned afterwards. # In list context, returns ($status, $signature) # ( $status, $signature) = _readSignature( $fh, $fileName ); sub _readSignature { my $fh = shift; my $fileName = shift; my $expectedSignature = shift; # optional my $signatureData; my $bytesRead = $fh->read( $signatureData, SIGNATURE_LENGTH ); if ( $bytesRead != SIGNATURE_LENGTH ) { return _ioError("reading header signature"); } my $signature = unpack( SIGNATURE_FORMAT, $signatureData ); my $status = AZ_OK; # compare with expected signature, if any, or any known signature. if ( ( defined($expectedSignature) && $signature != $expectedSignature ) || ( !defined($expectedSignature) && $signature != CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE && $signature != LOCAL_FILE_HEADER_SIGNATURE && $signature != END_OF_CENTRAL_DIRECTORY_SIGNATURE && $signature != DATA_DESCRIPTOR_SIGNATURE ) ) { my $errmsg = sprintf( "bad signature: 0x%08x", $signature ); if ( _isSeekable($fh) ) { $errmsg .= sprintf( " at offset %d", $fh->tell() - SIGNATURE_LENGTH ); } $status = _formatError("$errmsg in file $fileName"); } return ( $status, $signature ); } # Utility method to make and open a temp file. # Will create $temp_dir if it doesn't exist. # Returns file handle and name: # # my ($fh, $name) = Archive::Zip::tempFile(); # my ($fh, $name) = Archive::Zip::tempFile('mytempdir'); # sub tempFile { my $dir = ( ref( $_[0] ) eq 'HASH' ) ? shift->{tempDir} : shift; my ( $fh, $filename ) = File::Temp::tempfile( SUFFIX => '.zip', UNLINK => 0, # we will delete it! $dir ? ( DIR => $dir ) : () ); return ( undef, undef ) unless $fh; my ( $status, $newfh ) = _newFileHandle( $fh, 'w+' ); return ( $newfh, $filename ); } # Return the normalized directory name as used in a zip file (path # separators become slashes, etc.). # Will translate internal slashes in path components (i.e. on Macs) to # underscores. Discards volume names. # When $forceDir is set, returns paths with trailing slashes (or arrays # with trailing blank members). # # If third argument is a reference, returns volume information there. # # input output # . ('.') '.' # ./a ('a') a # ./a/b ('a','b') a/b # ./a/b/ ('a','b') a/b # a/b/ ('a','b') a/b # /a/b/ ('','a','b') /a/b # c:\a\b\c.doc ('','a','b','c.doc') /a/b/c.doc # on Windoze # "i/o maps:whatever" ('i_o maps', 'whatever') "i_o maps/whatever" # on Macs sub _asZipDirName { my $name = shift; my $forceDir = shift; my $volReturn = shift; my ( $volume, $directories, $file ) = File::Spec->splitpath( File::Spec->canonpath($name), $forceDir ); $$volReturn = $volume if ( ref($volReturn) ); my @dirs = map { $_ =~ s{/}{_}g; $_ } File::Spec->splitdir($directories); if ( @dirs > 0 ) { pop (@dirs) unless $dirs[-1] } # remove empty component push ( @dirs, defined($file) ? $file : '' ); #return wantarray ? @dirs : join ( '/', @dirs ); return join ( '/', @dirs ); } # Return an absolute local name for a zip name. # Assume a directory if zip name has trailing slash. # Takes an optional volume name in FS format (like 'a:'). # sub _asLocalName { my $name = shift; # zip format my $volume = shift; $volume = '' unless defined($volume); # local FS format my @paths = split ( /\//, $name ); my $filename = pop (@paths); $filename = '' unless defined($filename); my $localDirs = @paths ? File::Spec->catdir(@paths) : ''; my $localName = File::Spec->catpath( $volume, $localDirs, $filename ); unless ( $volume ) { $localName = File::Spec->rel2abs( $localName, Cwd::getcwd() ); } return $localName; } 1; __END__ #line 2060 FILE5555a32a/Archive/Zip/Archive.pms#line 1 "/usr/share/perl5/Archive/Zip/Archive.pm" package Archive::Zip::Archive; # Represents a generic ZIP archive use strict; use File::Path; use File::Find (); use File::Spec (); use File::Copy (); use File::Basename; use Cwd; use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.30'; @ISA = qw( Archive::Zip ); } use Archive::Zip qw( :CONSTANTS :ERROR_CODES :PKZIP_CONSTANTS :UTILITY_METHODS ); # Note that this returns undef on read errors, else new zip object. sub new { my $class = shift; my $self = bless( { 'diskNumber' => 0, 'diskNumberWithStartOfCentralDirectory' => 0, 'numberOfCentralDirectoriesOnThisDisk' => 0, # shld be # of members 'numberOfCentralDirectories' => 0, # shld be # of members 'centralDirectorySize' => 0, # must re-compute on write 'centralDirectoryOffsetWRTStartingDiskNumber' => 0, # must re-compute 'writeEOCDOffset' => 0, 'writeCentralDirectoryOffset' => 0, 'zipfileComment' => '', 'eocdOffset' => 0, 'fileName' => '' }, $class ); $self->{'members'} = []; my $fileName = ( ref( $_[0] ) eq 'HASH' ) ? shift->{filename} : shift; if ($fileName) { my $status = $self->read($fileName); return $status == AZ_OK ? $self : undef; } return $self; } sub storeSymbolicLink { my $self = shift; $self->{'storeSymbolicLink'} = shift; } sub members { @{ shift->{'members'} }; } sub numberOfMembers { scalar( shift->members() ); } sub memberNames { my $self = shift; return map { $_->fileName() } $self->members(); } # return ref to member with given name or undef sub memberNamed { my $self = shift; my $fileName = ( ref( $_[0] ) eq 'HASH' ) ? shift->{zipName} : shift; foreach my $member ( $self->members() ) { return $member if $member->fileName() eq $fileName; } return undef; } sub membersMatching { my $self = shift; my $pattern = ( ref( $_[0] ) eq 'HASH' ) ? shift->{regex} : shift; return grep { $_->fileName() =~ /$pattern/ } $self->members(); } sub diskNumber { shift->{'diskNumber'}; } sub diskNumberWithStartOfCentralDirectory { shift->{'diskNumberWithStartOfCentralDirectory'}; } sub numberOfCentralDirectoriesOnThisDisk { shift->{'numberOfCentralDirectoriesOnThisDisk'}; } sub numberOfCentralDirectories { shift->{'numberOfCentralDirectories'}; } sub centralDirectorySize { shift->{'centralDirectorySize'}; } sub centralDirectoryOffsetWRTStartingDiskNumber { shift->{'centralDirectoryOffsetWRTStartingDiskNumber'}; } sub zipfileComment { my $self = shift; my $comment = $self->{'zipfileComment'}; if (@_) { my $new_comment = ( ref( $_[0] ) eq 'HASH' ) ? shift->{comment} : shift; $self->{'zipfileComment'} = pack( 'C0a*', $new_comment ); # avoid unicode } return $comment; } sub eocdOffset { shift->{'eocdOffset'}; } # Return the name of the file last read. sub fileName { shift->{'fileName'}; } sub removeMember { my $self = shift; my $member = ( ref( $_[0] ) eq 'HASH' ) ? shift->{memberOrZipName} : shift; $member = $self->memberNamed($member) unless ref($member); return undef unless $member; my @newMembers = grep { $_ != $member } $self->members(); $self->{'members'} = \@newMembers; return $member; } sub replaceMember { my $self = shift; my ( $oldMember, $newMember ); if ( ref( $_[0] ) eq 'HASH' ) { $oldMember = $_[0]->{memberOrZipName}; $newMember = $_[0]->{newMember}; } else { ( $oldMember, $newMember ) = @_; } $oldMember = $self->memberNamed($oldMember) unless ref($oldMember); return undef unless $oldMember; return undef unless $newMember; my @newMembers = map { ( $_ == $oldMember ) ? $newMember : $_ } $self->members(); $self->{'members'} = \@newMembers; return $oldMember; } sub extractMember { my $self = shift; my ( $member, $name ); if ( ref( $_[0] ) eq 'HASH' ) { $member = $_[0]->{memberOrZipName}; $name = $_[0]->{name}; } else { ( $member, $name ) = @_; } $member = $self->memberNamed($member) unless ref($member); return _error('member not found') unless $member; my $originalSize = $member->compressedSize(); my ( $volumeName, $dirName, $fileName ); if ( defined($name) ) { ( $volumeName, $dirName, $fileName ) = File::Spec->splitpath($name); $dirName = File::Spec->catpath( $volumeName, $dirName, '' ); } else { $name = $member->fileName(); ( $dirName = $name ) =~ s{[^/]*$}{}; $dirName = Archive::Zip::_asLocalName($dirName); $name = Archive::Zip::_asLocalName($name); } if ( $dirName && !-d $dirName ) { mkpath($dirName); return _ioError("can't create dir $dirName") if ( !-d $dirName ); } my $rc = $member->extractToFileNamed( $name, @_ ); # TODO refactor this fix into extractToFileNamed() $member->{'compressedSize'} = $originalSize; return $rc; } sub extractMemberWithoutPaths { my $self = shift; my ( $member, $name ); if ( ref( $_[0] ) eq 'HASH' ) { $member = $_[0]->{memberOrZipName}; $name = $_[0]->{name}; } else { ( $member, $name ) = @_; } $member = $self->memberNamed($member) unless ref($member); return _error('member not found') unless $member; my $originalSize = $member->compressedSize(); return AZ_OK if $member->isDirectory(); unless ($name) { $name = $member->fileName(); $name =~ s{.*/}{}; # strip off directories, if any $name = Archive::Zip::_asLocalName($name); } my $rc = $member->extractToFileNamed( $name, @_ ); $member->{'compressedSize'} = $originalSize; return $rc; } sub addMember { my $self = shift; my $newMember = ( ref( $_[0] ) eq 'HASH' ) ? shift->{member} : shift; push( @{ $self->{'members'} }, $newMember ) if $newMember; return $newMember; } sub addFile { my $self = shift; my ( $fileName, $newName, $compressionLevel ); if ( ref( $_[0] ) eq 'HASH' ) { $fileName = $_[0]->{filename}; $newName = $_[0]->{zipName}; $compressionLevel = $_[0]->{compressionLevel}; } else { ( $fileName, $newName, $compressionLevel ) = @_; } my $newMember = $self->ZIPMEMBERCLASS->newFromFile( $fileName, $newName ); $newMember->desiredCompressionLevel($compressionLevel); if ( $self->{'storeSymbolicLink'} && -l $fileName ) { my $newMember = $self->ZIPMEMBERCLASS->newFromString(readlink $fileName, $newName); # For symbolic links, External File Attribute is set to 0xA1FF0000 by Info-ZIP $newMember->{'externalFileAttributes'} = 0xA1FF0000; $self->addMember($newMember); } else { $self->addMember($newMember); } return $newMember; } sub addString { my $self = shift; my ( $stringOrStringRef, $name, $compressionLevel ); if ( ref( $_[0] ) eq 'HASH' ) { $stringOrStringRef = $_[0]->{string}; $name = $_[0]->{zipName}; $compressionLevel = $_[0]->{compressionLevel}; } else { ( $stringOrStringRef, $name, $compressionLevel ) = @_;; } my $newMember = $self->ZIPMEMBERCLASS->newFromString( $stringOrStringRef, $name ); $newMember->desiredCompressionLevel($compressionLevel); return $self->addMember($newMember); } sub addDirectory { my $self = shift; my ( $name, $newName ); if ( ref( $_[0] ) eq 'HASH' ) { $name = $_[0]->{directoryName}; $newName = $_[0]->{zipName}; } else { ( $name, $newName ) = @_; } my $newMember = $self->ZIPMEMBERCLASS->newDirectoryNamed( $name, $newName ); if ( $self->{'storeSymbolicLink'} && -l $name ) { my $link = readlink $name; ( $newName =~ s{/$}{} ) if $newName; # Strip trailing / my $newMember = $self->ZIPMEMBERCLASS->newFromString($link, $newName); # For symbolic links, External File Attribute is set to 0xA1FF0000 by Info-ZIP $newMember->{'externalFileAttributes'} = 0xA1FF0000; $self->addMember($newMember); } else { $self->addMember($newMember); } return $newMember; } # add either a file or a directory. sub addFileOrDirectory { my $self = shift; my ( $name, $newName, $compressionLevel ); if ( ref( $_[0] ) eq 'HASH' ) { $name = $_[0]->{name}; $newName = $_[0]->{zipName}; $compressionLevel = $_[0]->{compressionLevel}; } else { ( $name, $newName, $compressionLevel ) = @_; } $name =~ s{/$}{}; if ( $newName ) { $newName =~ s{/$}{}; } else { $newName = $name; } if ( -f $name ) { return $self->addFile( $name, $newName, $compressionLevel ); } elsif ( -d $name ) { return $self->addDirectory( $name, $newName ); } else { return _error("$name is neither a file nor a directory"); } } sub contents { my $self = shift; my ( $member, $newContents ); if ( ref( $_[0] ) eq 'HASH' ) { $member = $_[0]->{memberOrZipName}; $newContents = $_[0]->{contents}; } else { ( $member, $newContents ) = @_; } return _error('No member name given') unless $member; $member = $self->memberNamed($member) unless ref($member); return undef unless $member; return $member->contents($newContents); } sub writeToFileNamed { my $self = shift; my $fileName = ( ref( $_[0] ) eq 'HASH' ) ? shift->{filename} : shift; # local FS format foreach my $member ( $self->members() ) { if ( $member->_usesFileNamed($fileName) ) { return _error( "$fileName is needed by member " . $member->fileName() . "; consider using overwrite() or overwriteAs() instead." ); } } my ( $status, $fh ) = _newFileHandle( $fileName, 'w' ); return _ioError("Can't open $fileName for write") unless $status; my $retval = $self->writeToFileHandle( $fh, 1 ); $fh->close(); $fh = undef; return $retval; } # It is possible to write data to the FH before calling this, # perhaps to make a self-extracting archive. sub writeToFileHandle { my $self = shift; my ( $fh, $fhIsSeekable ); if ( ref( $_[0] ) eq 'HASH' ) { $fh = $_[0]->{fileHandle}; $fhIsSeekable = exists( $_[0]->{seek} ) ? $_[0]->{seek} : _isSeekable($fh); } else { $fh = shift; $fhIsSeekable = @_ ? shift : _isSeekable($fh); } return _error('No filehandle given') unless $fh; return _ioError('filehandle not open') unless $fh->opened(); _binmode($fh); # Find out where the current position is. my $offset = $fhIsSeekable ? $fh->tell() : 0; $offset = 0 if $offset < 0; foreach my $member ( $self->members() ) { my $retval = $member->_writeToFileHandle( $fh, $fhIsSeekable, $offset ); $member->endRead(); return $retval if $retval != AZ_OK; $offset += $member->_localHeaderSize() + $member->_writeOffset(); $offset += $member->hasDataDescriptor() ? DATA_DESCRIPTOR_LENGTH + SIGNATURE_LENGTH : 0; # changed this so it reflects the last successful position $self->{'writeCentralDirectoryOffset'} = $offset; } return $self->writeCentralDirectory($fh); } # Write zip back to the original file, # as safely as possible. # Returns AZ_OK if successful. sub overwrite { my $self = shift; return $self->overwriteAs( $self->{'fileName'} ); } # Write zip to the specified file, # as safely as possible. # Returns AZ_OK if successful. sub overwriteAs { my $self = shift; my $zipName = ( ref( $_[0] ) eq 'HASH' ) ? $_[0]->{filename} : shift; return _error("no filename in overwriteAs()") unless defined($zipName); my ( $fh, $tempName ) = Archive::Zip::tempFile(); return _error( "Can't open temp file", $! ) unless $fh; ( my $backupName = $zipName ) =~ s{(\.[^.]*)?$}{.zbk}; my $status = $self->writeToFileHandle($fh); $fh->close(); $fh = undef; if ( $status != AZ_OK ) { unlink($tempName); _printError("Can't write to $tempName"); return $status; } my $err; # rename the zip if ( -f $zipName && !rename( $zipName, $backupName ) ) { $err = $!; unlink($tempName); return _error( "Can't rename $zipName as $backupName", $err ); } # move the temp to the original name (possibly copying) unless ( File::Copy::move( $tempName, $zipName ) ) { $err = $!; rename( $backupName, $zipName ); unlink($tempName); return _error( "Can't move $tempName to $zipName", $err ); } # unlink the backup if ( -f $backupName && !unlink($backupName) ) { $err = $!; return _error( "Can't unlink $backupName", $err ); } return AZ_OK; } # Used only during writing sub _writeCentralDirectoryOffset { shift->{'writeCentralDirectoryOffset'}; } sub _writeEOCDOffset { shift->{'writeEOCDOffset'}; } # Expects to have _writeEOCDOffset() set sub _writeEndOfCentralDirectory { my ( $self, $fh ) = @_; $self->_print($fh, END_OF_CENTRAL_DIRECTORY_SIGNATURE_STRING) or return _ioError('writing EOCD Signature'); my $zipfileCommentLength = length( $self->zipfileComment() ); my $header = pack( END_OF_CENTRAL_DIRECTORY_FORMAT, 0, # {'diskNumber'}, 0, # {'diskNumberWithStartOfCentralDirectory'}, $self->numberOfMembers(), # {'numberOfCentralDirectoriesOnThisDisk'}, $self->numberOfMembers(), # {'numberOfCentralDirectories'}, $self->_writeEOCDOffset() - $self->_writeCentralDirectoryOffset(), $self->_writeCentralDirectoryOffset(), $zipfileCommentLength ); $self->_print($fh, $header) or return _ioError('writing EOCD header'); if ($zipfileCommentLength) { $self->_print($fh, $self->zipfileComment() ) or return _ioError('writing zipfile comment'); } return AZ_OK; } # $offset can be specified to truncate a zip file. sub writeCentralDirectory { my $self = shift; my ( $fh, $offset ); if ( ref( $_[0] ) eq 'HASH' ) { $fh = $_[0]->{fileHandle}; $offset = $_[0]->{offset}; } else { ( $fh, $offset ) = @_; } if ( defined($offset) ) { $self->{'writeCentralDirectoryOffset'} = $offset; $fh->seek( $offset, IO::Seekable::SEEK_SET ) or return _ioError('seeking to write central directory'); } else { $offset = $self->_writeCentralDirectoryOffset(); } foreach my $member ( $self->members() ) { my $status = $member->_writeCentralDirectoryFileHeader($fh); return $status if $status != AZ_OK; $offset += $member->_centralDirectoryHeaderSize(); $self->{'writeEOCDOffset'} = $offset; } return $self->_writeEndOfCentralDirectory($fh); } sub read { my $self = shift; my $fileName = ( ref( $_[0] ) eq 'HASH' ) ? shift->{filename} : shift; return _error('No filename given') unless $fileName; my ( $status, $fh ) = _newFileHandle( $fileName, 'r' ); return _ioError("opening $fileName for read") unless $status; $status = $self->readFromFileHandle( $fh, $fileName ); return $status if $status != AZ_OK; $fh->close(); $self->{'fileName'} = $fileName; return AZ_OK; } sub readFromFileHandle { my $self = shift; my ( $fh, $fileName ); if ( ref( $_[0] ) eq 'HASH' ) { $fh = $_[0]->{fileHandle}; $fileName = $_[0]->{filename}; } else { ( $fh, $fileName ) = @_; } $fileName = $fh unless defined($fileName); return _error('No filehandle given') unless $fh; return _ioError('filehandle not open') unless $fh->opened(); _binmode($fh); $self->{'fileName'} = "$fh"; # TODO: how to support non-seekable zips? return _error('file not seekable') unless _isSeekable($fh); $fh->seek( 0, 0 ); # rewind the file my $status = $self->_findEndOfCentralDirectory($fh); return $status if $status != AZ_OK; my $eocdPosition = $fh->tell(); $status = $self->_readEndOfCentralDirectory($fh); return $status if $status != AZ_OK; $fh->seek( $eocdPosition - $self->centralDirectorySize(), IO::Seekable::SEEK_SET ) or return _ioError("Can't seek $fileName"); # Try to detect garbage at beginning of archives # This should be 0 $self->{'eocdOffset'} = $eocdPosition - $self->centralDirectorySize() # here - $self->centralDirectoryOffsetWRTStartingDiskNumber(); for ( ; ; ) { my $newMember = $self->ZIPMEMBERCLASS->_newFromZipFile( $fh, $fileName, $self->eocdOffset() ); my $signature; ( $status, $signature ) = _readSignature( $fh, $fileName ); return $status if $status != AZ_OK; last if $signature == END_OF_CENTRAL_DIRECTORY_SIGNATURE; $status = $newMember->_readCentralDirectoryFileHeader(); return $status if $status != AZ_OK; $status = $newMember->endRead(); return $status if $status != AZ_OK; $newMember->_becomeDirectoryIfNecessary(); push( @{ $self->{'members'} }, $newMember ); } return AZ_OK; } # Read EOCD, starting from position before signature. # Return AZ_OK on success. sub _readEndOfCentralDirectory { my $self = shift; my $fh = shift; # Skip past signature $fh->seek( SIGNATURE_LENGTH, IO::Seekable::SEEK_CUR ) or return _ioError("Can't seek past EOCD signature"); my $header = ''; my $bytesRead = $fh->read( $header, END_OF_CENTRAL_DIRECTORY_LENGTH ); if ( $bytesRead != END_OF_CENTRAL_DIRECTORY_LENGTH ) { return _ioError("reading end of central directory"); } my $zipfileCommentLength; ( $self->{'diskNumber'}, $self->{'diskNumberWithStartOfCentralDirectory'}, $self->{'numberOfCentralDirectoriesOnThisDisk'}, $self->{'numberOfCentralDirectories'}, $self->{'centralDirectorySize'}, $self->{'centralDirectoryOffsetWRTStartingDiskNumber'}, $zipfileCommentLength ) = unpack( END_OF_CENTRAL_DIRECTORY_FORMAT, $header ); if ($zipfileCommentLength) { my $zipfileComment = ''; $bytesRead = $fh->read( $zipfileComment, $zipfileCommentLength ); if ( $bytesRead != $zipfileCommentLength ) { return _ioError("reading zipfile comment"); } $self->{'zipfileComment'} = $zipfileComment; } return AZ_OK; } # Seek in my file to the end, then read backwards until we find the # signature of the central directory record. Leave the file positioned right # before the signature. Returns AZ_OK if success. sub _findEndOfCentralDirectory { my $self = shift; my $fh = shift; my $data = ''; $fh->seek( 0, IO::Seekable::SEEK_END ) or return _ioError("seeking to end"); my $fileLength = $fh->tell(); if ( $fileLength < END_OF_CENTRAL_DIRECTORY_LENGTH + 4 ) { return _formatError("file is too short"); } my $seekOffset = 0; my $pos = -1; for ( ; ; ) { $seekOffset += 512; $seekOffset = $fileLength if ( $seekOffset > $fileLength ); $fh->seek( -$seekOffset, IO::Seekable::SEEK_END ) or return _ioError("seek failed"); my $bytesRead = $fh->read( $data, $seekOffset ); if ( $bytesRead != $seekOffset ) { return _ioError("read failed"); } $pos = rindex( $data, END_OF_CENTRAL_DIRECTORY_SIGNATURE_STRING ); last if ( $pos >= 0 or $seekOffset == $fileLength or $seekOffset >= $Archive::Zip::ChunkSize ); } if ( $pos >= 0 ) { $fh->seek( $pos - $seekOffset, IO::Seekable::SEEK_CUR ) or return _ioError("seeking to EOCD"); return AZ_OK; } else { return _formatError("can't find EOCD signature"); } } # Used to avoid taint problems when chdir'ing. # Not intended to increase security in any way; just intended to shut up the -T # complaints. If your Cwd module is giving you unreliable returns from cwd() # you have bigger problems than this. sub _untaintDir { my $dir = shift; $dir =~ m/\A(.+)\z/s; return $1; } sub addTree { my $self = shift; my ( $root, $dest, $pred, $compressionLevel ); if ( ref( $_[0] ) eq 'HASH' ) { $root = $_[0]->{root}; $dest = $_[0]->{zipName}; $pred = $_[0]->{select}; $compressionLevel = $_[0]->{compressionLevel}; } else { ( $root, $dest, $pred, $compressionLevel ) = @_; } return _error("root arg missing in call to addTree()") unless defined($root); $dest = '' unless defined($dest); $pred = sub { -r } unless defined($pred); my @files; my $startDir = _untaintDir( cwd() ); return _error( 'undef returned by _untaintDir on cwd ', cwd() ) unless $startDir; # This avoids chdir'ing in Find, in a way compatible with older # versions of File::Find. my $wanted = sub { local $main::_ = $File::Find::name; my $dir = _untaintDir($File::Find::dir); chdir($startDir); push( @files, $File::Find::name ) if (&$pred); chdir($dir); }; File::Find::find( $wanted, $root ); my $rootZipName = _asZipDirName( $root, 1 ); # with trailing slash my $pattern = $rootZipName eq './' ? '^' : "^\Q$rootZipName\E"; $dest = _asZipDirName( $dest, 1 ); # with trailing slash foreach my $fileName (@files) { my $isDir = -d $fileName; # normalize, remove leading ./ my $archiveName = _asZipDirName( $fileName, $isDir ); if ( $archiveName eq $rootZipName ) { $archiveName = $dest } else { $archiveName =~ s{$pattern}{$dest} } next if $archiveName =~ m{^\.?/?$}; # skip current dir my $member = $isDir ? $self->addDirectory( $fileName, $archiveName ) : $self->addFile( $fileName, $archiveName ); $member->desiredCompressionLevel($compressionLevel); return _error("add $fileName failed in addTree()") if !$member; } return AZ_OK; } sub addTreeMatching { my $self = shift; my ( $root, $dest, $pattern, $pred, $compressionLevel ); if ( ref( $_[0] ) eq 'HASH' ) { $root = $_[0]->{root}; $dest = $_[0]->{zipName}; $pattern = $_[0]->{pattern}; $pred = $_[0]->{select}; $compressionLevel = $_[0]->{compressionLevel}; } else { ( $root, $dest, $pattern, $pred, $compressionLevel ) = @_; } return _error("root arg missing in call to addTreeMatching()") unless defined($root); $dest = '' unless defined($dest); return _error("pattern missing in call to addTreeMatching()") unless defined($pattern); my $matcher = $pred ? sub { m{$pattern} && &$pred } : sub { m{$pattern} && -r }; return $self->addTree( $root, $dest, $matcher, $compressionLevel ); } # $zip->extractTree( $root, $dest [, $volume] ); # # $root and $dest are Unix-style. # $volume is in local FS format. # sub extractTree { my $self = shift; my ( $root, $dest, $volume ); if ( ref( $_[0] ) eq 'HASH' ) { $root = $_[0]->{root}; $dest = $_[0]->{zipName}; $volume = $_[0]->{volume}; } else { ( $root, $dest, $volume ) = @_; } $root = '' unless defined($root); $dest = './' unless defined($dest); my $pattern = "^\Q$root"; my @members = $self->membersMatching($pattern); foreach my $member (@members) { my $fileName = $member->fileName(); # in Unix format $fileName =~ s{$pattern}{$dest}; # in Unix format # convert to platform format: $fileName = Archive::Zip::_asLocalName( $fileName, $volume ); my $status = $member->extractToFileNamed($fileName); return $status if $status != AZ_OK; } return AZ_OK; } # $zip->updateMember( $memberOrName, $fileName ); # Returns (possibly updated) member, if any; undef on errors. sub updateMember { my $self = shift; my ( $oldMember, $fileName ); if ( ref( $_[0] ) eq 'HASH' ) { $oldMember = $_[0]->{memberOrZipName}; $fileName = $_[0]->{name}; } else { ( $oldMember, $fileName ) = @_; } if ( !defined($fileName) ) { _error("updateMember(): missing fileName argument"); return undef; } my @newStat = stat($fileName); if ( !@newStat ) { _ioError("Can't stat $fileName"); return undef; } my $isDir = -d _; my $memberName; if ( ref($oldMember) ) { $memberName = $oldMember->fileName(); } else { $oldMember = $self->memberNamed( $memberName = $oldMember ) || $self->memberNamed( $memberName = _asZipDirName( $oldMember, $isDir ) ); } unless ( defined($oldMember) && $oldMember->lastModTime() == $newStat[9] && $oldMember->isDirectory() == $isDir && ( $isDir || ( $oldMember->uncompressedSize() == $newStat[7] ) ) ) { # create the new member my $newMember = $isDir ? $self->ZIPMEMBERCLASS->newDirectoryNamed( $fileName, $memberName ) : $self->ZIPMEMBERCLASS->newFromFile( $fileName, $memberName ); unless ( defined($newMember) ) { _error("creation of member $fileName failed in updateMember()"); return undef; } # replace old member or append new one if ( defined($oldMember) ) { $self->replaceMember( $oldMember, $newMember ); } else { $self->addMember($newMember); } return $newMember; } return $oldMember; } # $zip->updateTree( $root, [ $dest, [ $pred [, $mirror]]] ); # # This takes the same arguments as addTree, but first checks to see # whether the file or directory already exists in the zip file. # # If the fourth argument $mirror is true, then delete all my members # if corresponding files weren't found. sub updateTree { my $self = shift; my ( $root, $dest, $pred, $mirror, $compressionLevel ); if ( ref( $_[0] ) eq 'HASH' ) { $root = $_[0]->{root}; $dest = $_[0]->{zipName}; $pred = $_[0]->{select}; $mirror = $_[0]->{mirror}; $compressionLevel = $_[0]->{compressionLevel}; } else { ( $root, $dest, $pred, $mirror, $compressionLevel ) = @_; } return _error("root arg missing in call to updateTree()") unless defined($root); $dest = '' unless defined($dest); $pred = sub { -r } unless defined($pred); $dest = _asZipDirName( $dest, 1 ); my $rootZipName = _asZipDirName( $root, 1 ); # with trailing slash my $pattern = $rootZipName eq './' ? '^' : "^\Q$rootZipName\E"; my @files; my $startDir = _untaintDir( cwd() ); return _error( 'undef returned by _untaintDir on cwd ', cwd() ) unless $startDir; # This avoids chdir'ing in Find, in a way compatible with older # versions of File::Find. my $wanted = sub { local $main::_ = $File::Find::name; my $dir = _untaintDir($File::Find::dir); chdir($startDir); push( @files, $File::Find::name ) if (&$pred); chdir($dir); }; File::Find::find( $wanted, $root ); # Now @files has all the files that I could potentially be adding to # the zip. Only add the ones that are necessary. # For each file (updated or not), add its member name to @done. my %done; foreach my $fileName (@files) { my @newStat = stat($fileName); my $isDir = -d _; # normalize, remove leading ./ my $memberName = _asZipDirName( $fileName, $isDir ); if ( $memberName eq $rootZipName ) { $memberName = $dest } else { $memberName =~ s{$pattern}{$dest} } next if $memberName =~ m{^\.?/?$}; # skip current dir $done{$memberName} = 1; my $changedMember = $self->updateMember( $memberName, $fileName ); $changedMember->desiredCompressionLevel($compressionLevel); return _error("updateTree failed to update $fileName") unless ref($changedMember); } # @done now has the archive names corresponding to all the found files. # If we're mirroring, delete all those members that aren't in @done. if ($mirror) { foreach my $member ( $self->members() ) { $self->removeMember($member) unless $done{ $member->fileName() }; } } return AZ_OK; } 1; FILE'078c7557/Archive/Zip/DirectoryMember.pm #line 1 "/usr/share/perl5/Archive/Zip/DirectoryMember.pm" package Archive::Zip::DirectoryMember; use strict; use File::Path; use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.30'; @ISA = qw( Archive::Zip::Member ); } use Archive::Zip qw( :ERROR_CODES :UTILITY_METHODS ); sub _newNamed { my $class = shift; my $fileName = shift; # FS name my $newName = shift; # Zip name $newName = _asZipDirName($fileName) unless $newName; my $self = $class->new(@_); $self->{'externalFileName'} = $fileName; $self->fileName($newName); if ( -e $fileName ) { # -e does NOT do a full stat, so we need to do one now if ( -d _ ) { my @stat = stat(_); $self->unixFileAttributes( $stat[2] ); my $mod_t = $stat[9]; if ( $^O eq 'MSWin32' and !$mod_t ) { $mod_t = time(); } $self->setLastModFileDateTimeFromUnix($mod_t); } else { # hmm.. trying to add a non-directory? _error( $fileName, ' exists but is not a directory' ); return undef; } } else { $self->unixFileAttributes( $self->DEFAULT_DIRECTORY_PERMISSIONS ); $self->setLastModFileDateTimeFromUnix( time() ); } return $self; } sub externalFileName { shift->{'externalFileName'}; } sub isDirectory { return 1; } sub extractToFileNamed { my $self = shift; my $name = shift; # local FS name my $attribs = $self->unixFileAttributes() & 07777; mkpath( $name, 0, $attribs ); # croaks on error utime( $self->lastModTime(), $self->lastModTime(), $name ); return AZ_OK; } sub fileName { my $self = shift; my $newName = shift; $newName =~ s{/?$}{/} if defined($newName); return $self->SUPER::fileName($newName); } # So people don't get too confused. This way it looks like the problem # is in their code... sub contents { return wantarray ? ( undef, AZ_OK ) : undef; } 1; FILE"4f1c027b/Archive/Zip/FileMember.pm}#line 1 "/usr/share/perl5/Archive/Zip/FileMember.pm" package Archive::Zip::FileMember; use strict; use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.30'; @ISA = qw ( Archive::Zip::Member ); } use Archive::Zip qw( :UTILITY_METHODS ); sub externalFileName { shift->{'externalFileName'}; } # Return true if I depend on the named file sub _usesFileNamed { my $self = shift; my $fileName = shift; my $xfn = $self->externalFileName(); return undef if ref($xfn); return $xfn eq $fileName; } sub fh { my $self = shift; $self->_openFile() if !defined( $self->{'fh'} ) || !$self->{'fh'}->opened(); return $self->{'fh'}; } # opens my file handle from my file name sub _openFile { my $self = shift; my ( $status, $fh ) = _newFileHandle( $self->externalFileName(), 'r' ); if ( !$status ) { _ioError( "Can't open", $self->externalFileName() ); return undef; } $self->{'fh'} = $fh; _binmode($fh); return $fh; } # Make sure I close my file handle sub endRead { my $self = shift; undef $self->{'fh'}; # _closeFile(); return $self->SUPER::endRead(@_); } sub _become { my $self = shift; my $newClass = shift; return $self if ref($self) eq $newClass; delete( $self->{'externalFileName'} ); delete( $self->{'fh'} ); return $self->SUPER::_become($newClass); } 1; FILE7519660c/Archive/Zip/Member.pm`#line 1 "/usr/share/perl5/Archive/Zip/Member.pm" package Archive::Zip::Member; # A generic membet of an archive use strict; use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.30'; @ISA = qw( Archive::Zip ); } use Archive::Zip qw( :CONSTANTS :MISC_CONSTANTS :ERROR_CODES :PKZIP_CONSTANTS :UTILITY_METHODS ); use Time::Local (); use Compress::Raw::Zlib qw( Z_OK Z_STREAM_END MAX_WBITS ); use File::Path; use File::Basename; use constant ZIPFILEMEMBERCLASS => 'Archive::Zip::ZipFileMember'; use constant NEWFILEMEMBERCLASS => 'Archive::Zip::NewFileMember'; use constant STRINGMEMBERCLASS => 'Archive::Zip::StringMember'; use constant DIRECTORYMEMBERCLASS => 'Archive::Zip::DirectoryMember'; # Unix perms for default creation of files/dirs. use constant DEFAULT_DIRECTORY_PERMISSIONS => 040755; use constant DEFAULT_FILE_PERMISSIONS => 0100666; use constant DIRECTORY_ATTRIB => 040000; use constant FILE_ATTRIB => 0100000; # Returns self if successful, else undef # Assumes that fh is positioned at beginning of central directory file header. # Leaves fh positioned immediately after file header or EOCD signature. sub _newFromZipFile { my $class = shift; my $self = $class->ZIPFILEMEMBERCLASS->_newFromZipFile(@_); return $self; } sub newFromString { my $class = shift; my ( $stringOrStringRef, $fileName ); if ( ref( $_[0] ) eq 'HASH' ) { $stringOrStringRef = $_[0]->{string}; $fileName = $_[0]->{zipName}; } else { ( $stringOrStringRef, $fileName ) = @_; } my $self = $class->STRINGMEMBERCLASS->_newFromString( $stringOrStringRef, $fileName ); return $self; } sub newFromFile { my $class = shift; my ( $fileName, $zipName ); if ( ref( $_[0] ) eq 'HASH' ) { $fileName = $_[0]->{fileName}; $zipName = $_[0]->{zipName}; } else { ( $fileName, $zipName ) = @_; } my $self = $class->NEWFILEMEMBERCLASS->_newFromFileNamed( $fileName, $zipName ); return $self; } sub newDirectoryNamed { my $class = shift; my ( $directoryName, $newName ); if ( ref( $_[0] ) eq 'HASH' ) { $directoryName = $_[0]->{directoryName}; $newName = $_[0]->{zipName}; } else { ( $directoryName, $newName ) = @_; } my $self = $class->DIRECTORYMEMBERCLASS->_newNamed( $directoryName, $newName ); return $self; } sub new { my $class = shift; my $self = { 'lastModFileDateTime' => 0, 'fileAttributeFormat' => FA_UNIX, 'versionMadeBy' => 20, 'versionNeededToExtract' => 20, 'bitFlag' => 0, 'compressionMethod' => COMPRESSION_STORED, 'desiredCompressionMethod' => COMPRESSION_STORED, 'desiredCompressionLevel' => COMPRESSION_LEVEL_NONE, 'internalFileAttributes' => 0, 'externalFileAttributes' => 0, # set later 'fileName' => '', 'cdExtraField' => '', 'localExtraField' => '', 'fileComment' => '', 'crc32' => 0, 'compressedSize' => 0, 'uncompressedSize' => 0, 'isSymbolicLink' => 0, @_ }; bless( $self, $class ); $self->unixFileAttributes( $self->DEFAULT_FILE_PERMISSIONS ); return $self; } sub _becomeDirectoryIfNecessary { my $self = shift; $self->_become(DIRECTORYMEMBERCLASS) if $self->isDirectory(); return $self; } # Morph into given class (do whatever cleanup I need to do) sub _become { return bless( $_[0], $_[1] ); } sub versionMadeBy { shift->{'versionMadeBy'}; } sub fileAttributeFormat { my $self = shift; if (@_) { $self->{fileAttributeFormat} = ( ref( $_[0] ) eq 'HASH' ) ? $_[0]->{format} : $_[0]; } else { return $self->{fileAttributeFormat}; } } sub versionNeededToExtract { shift->{'versionNeededToExtract'}; } sub bitFlag { my $self = shift; # Set General Purpose Bit Flags according to the desiredCompressionLevel setting if ( $self->desiredCompressionLevel == 1 || $self->desiredCompressionLevel == 2 ) { $self->{'bitFlag'} = DEFLATING_COMPRESSION_FAST; } elsif ( $self->desiredCompressionLevel == 3 || $self->desiredCompressionLevel == 4 || $self->desiredCompressionLevel == 5 || $self->desiredCompressionLevel == 6 || $self->desiredCompressionLevel == 7 ) { $self->{'bitFlag'} = DEFLATING_COMPRESSION_NORMAL; } elsif ( $self->desiredCompressionLevel == 8 || $self->desiredCompressionLevel == 9 ) { $self->{'bitFlag'} = DEFLATING_COMPRESSION_MAXIMUM; } $self->{'bitFlag'}; } sub compressionMethod { shift->{'compressionMethod'}; } sub desiredCompressionMethod { my $self = shift; my $newDesiredCompressionMethod = ( ref( $_[0] ) eq 'HASH' ) ? shift->{compressionMethod} : shift; my $oldDesiredCompressionMethod = $self->{'desiredCompressionMethod'}; if ( defined($newDesiredCompressionMethod) ) { $self->{'desiredCompressionMethod'} = $newDesiredCompressionMethod; if ( $newDesiredCompressionMethod == COMPRESSION_STORED ) { $self->{'desiredCompressionLevel'} = 0; $self->{'bitFlag'} &= ~GPBF_HAS_DATA_DESCRIPTOR_MASK; } elsif ( $oldDesiredCompressionMethod == COMPRESSION_STORED ) { $self->{'desiredCompressionLevel'} = COMPRESSION_LEVEL_DEFAULT; } } return $oldDesiredCompressionMethod; } sub desiredCompressionLevel { my $self = shift; my $newDesiredCompressionLevel = ( ref( $_[0] ) eq 'HASH' ) ? shift->{compressionLevel} : shift; my $oldDesiredCompressionLevel = $self->{'desiredCompressionLevel'}; if ( defined($newDesiredCompressionLevel) ) { $self->{'desiredCompressionLevel'} = $newDesiredCompressionLevel; $self->{'desiredCompressionMethod'} = ( $newDesiredCompressionLevel ? COMPRESSION_DEFLATED : COMPRESSION_STORED ); } return $oldDesiredCompressionLevel; } sub fileName { my $self = shift; my $newName = shift; if ($newName) { $newName =~ s{[\\/]+}{/}g; # deal with dos/windoze problems $self->{'fileName'} = $newName; } return $self->{'fileName'}; } sub lastModFileDateTime { my $modTime = shift->{'lastModFileDateTime'}; $modTime =~ m/^(\d+)$/; # untaint return $1; } sub lastModTime { my $self = shift; return _dosToUnixTime( $self->lastModFileDateTime() ); } sub setLastModFileDateTimeFromUnix { my $self = shift; my $time_t = shift; $self->{'lastModFileDateTime'} = _unixToDosTime($time_t); } sub internalFileAttributes { shift->{'internalFileAttributes'}; } sub externalFileAttributes { shift->{'externalFileAttributes'}; } # Convert UNIX permissions into proper value for zip file # Usable as a function or a method sub _mapPermissionsFromUnix { my $self = shift; my $mode = shift; my $attribs = $mode << 16; # Microsoft Windows Explorer needs this bit set for directories if ( $mode & DIRECTORY_ATTRIB ) { $attribs |= 16; } return $attribs; # TODO: map more MS-DOS perms } # Convert ZIP permissions into Unix ones # # This was taken from Info-ZIP group's portable UnZip # zipfile-extraction program, version 5.50. # http://www.info-zip.org/pub/infozip/ # # See the mapattr() function in unix/unix.c # See the attribute format constants in unzpriv.h # # XXX Note that there's one situation that isn't implemented # yet that depends on the "extra field." sub _mapPermissionsToUnix { my $self = shift; my $format = $self->{'fileAttributeFormat'}; my $attribs = $self->{'externalFileAttributes'}; my $mode = 0; if ( $format == FA_AMIGA ) { $attribs = $attribs >> 17 & 7; # Amiga RWE bits $mode = $attribs << 6 | $attribs << 3 | $attribs; return $mode; } if ( $format == FA_THEOS ) { $attribs &= 0xF1FFFFFF; if ( ( $attribs & 0xF0000000 ) != 0x40000000 ) { $attribs &= 0x01FFFFFF; # not a dir, mask all ftype bits } else { $attribs &= 0x41FFFFFF; # leave directory bit as set } } if ( $format == FA_UNIX || $format == FA_VAX_VMS || $format == FA_ACORN || $format == FA_ATARI_ST || $format == FA_BEOS || $format == FA_QDOS || $format == FA_TANDEM ) { $mode = $attribs >> 16; return $mode if $mode != 0 or not $self->localExtraField; # warn("local extra field is: ", $self->localExtraField, "\n"); # XXX This condition is not implemented # I'm just including the comments from the info-zip section for now. # Some (non-Info-ZIP) implementations of Zip for Unix and # VMS (and probably others ??) leave 0 in the upper 16-bit # part of the external_file_attributes field. Instead, they # store file permission attributes in some extra field. # As a work-around, we search for the presence of one of # these extra fields and fall back to the MSDOS compatible # part of external_file_attributes if one of the known # e.f. types has been detected. # Later, we might implement extraction of the permission # bits from the VMS extra field. But for now, the work-around # should be sufficient to provide "readable" extracted files. # (For ASI Unix e.f., an experimental remap from the e.f. # mode value IS already provided!) } # PKWARE's PKZip for Unix marks entries as FA_MSDOS, but stores the # Unix attributes in the upper 16 bits of the external attributes # field, just like Info-ZIP's Zip for Unix. We try to use that # value, after a check for consistency with the MSDOS attribute # bits (see below). if ( $format == FA_MSDOS ) { $mode = $attribs >> 16; } # FA_MSDOS, FA_OS2_HPFS, FA_WINDOWS_NTFS, FA_MACINTOSH, FA_TOPS20 $attribs = !( $attribs & 1 ) << 1 | ( $attribs & 0x10 ) >> 4; # keep previous $mode setting when its "owner" # part appears to be consistent with DOS attribute flags! return $mode if ( $mode & 0700 ) == ( 0400 | $attribs << 6 ); $mode = 0444 | $attribs << 6 | $attribs << 3 | $attribs; return $mode; } sub unixFileAttributes { my $self = shift; my $oldPerms = $self->_mapPermissionsToUnix; my $perms; if ( @_ ) { $perms = ( ref( $_[0] ) eq 'HASH' ) ? $_[0]->{attributes} : $_[0]; if ( $self->isDirectory ) { $perms &= ~FILE_ATTRIB; $perms |= DIRECTORY_ATTRIB; } else { $perms &= ~DIRECTORY_ATTRIB; $perms |= FILE_ATTRIB; } $self->{externalFileAttributes} = $self->_mapPermissionsFromUnix($perms); } return $oldPerms; } sub localExtraField { my $self = shift; if (@_) { $self->{localExtraField} = ( ref( $_[0] ) eq 'HASH' ) ? $_[0]->{field} : $_[0]; } else { return $self->{localExtraField}; } } sub cdExtraField { my $self = shift; if (@_) { $self->{cdExtraField} = ( ref( $_[0] ) eq 'HASH' ) ? $_[0]->{field} : $_[0]; } else { return $self->{cdExtraField}; } } sub extraFields { my $self = shift; return $self->localExtraField() . $self->cdExtraField(); } sub fileComment { my $self = shift; if (@_) { $self->{fileComment} = ( ref( $_[0] ) eq 'HASH' ) ? pack( 'C0a*', $_[0]->{comment} ) : pack( 'C0a*', $_[0] ); } else { return $self->{fileComment}; } } sub hasDataDescriptor { my $self = shift; if (@_) { my $shouldHave = shift; if ($shouldHave) { $self->{'bitFlag'} |= GPBF_HAS_DATA_DESCRIPTOR_MASK; } else { $self->{'bitFlag'} &= ~GPBF_HAS_DATA_DESCRIPTOR_MASK; } } return $self->{'bitFlag'} & GPBF_HAS_DATA_DESCRIPTOR_MASK; } sub crc32 { shift->{'crc32'}; } sub crc32String { sprintf( "%08x", shift->{'crc32'} ); } sub compressedSize { shift->{'compressedSize'}; } sub uncompressedSize { shift->{'uncompressedSize'}; } sub isEncrypted { shift->bitFlag() & GPBF_ENCRYPTED_MASK; } sub isTextFile { my $self = shift; my $bit = $self->internalFileAttributes() & IFA_TEXT_FILE_MASK; if (@_) { my $flag = ( ref( $_[0] ) eq 'HASH' ) ? shift->{flag} : shift; $self->{'internalFileAttributes'} &= ~IFA_TEXT_FILE_MASK; $self->{'internalFileAttributes'} |= ( $flag ? IFA_TEXT_FILE: IFA_BINARY_FILE ); } return $bit == IFA_TEXT_FILE; } sub isBinaryFile { my $self = shift; my $bit = $self->internalFileAttributes() & IFA_TEXT_FILE_MASK; if (@_) { my $flag = shift; $self->{'internalFileAttributes'} &= ~IFA_TEXT_FILE_MASK; $self->{'internalFileAttributes'} |= ( $flag ? IFA_BINARY_FILE: IFA_TEXT_FILE ); } return $bit == IFA_BINARY_FILE; } sub extractToFileNamed { my $self = shift; # local FS name my $name = ( ref( $_[0] ) eq 'HASH' ) ? $_[0]->{name} : $_[0]; $self->{'isSymbolicLink'} = 0; # Check if the file / directory is a symbolic link or not if ( $self->{'externalFileAttributes'} == 0xA1FF0000 ) { $self->{'isSymbolicLink'} = 1; $self->{'newName'} = $name; my ( $status, $fh ) = _newFileHandle( $name, 'r' ); my $retval = $self->extractToFileHandle($fh); $fh->close(); } else { #return _writeSymbolicLink($self, $name) if $self->isSymbolicLink(); return _error("encryption unsupported") if $self->isEncrypted(); mkpath( dirname($name) ); # croaks on error my ( $status, $fh ) = _newFileHandle( $name, 'w' ); return _ioError("Can't open file $name for write") unless $status; my $retval = $self->extractToFileHandle($fh); $fh->close(); chmod ($self->unixFileAttributes(), $name) or return _error("Can't chmod() ${name}: $!"); utime( $self->lastModTime(), $self->lastModTime(), $name ); return $retval; } } sub _writeSymbolicLink { my $self = shift; my $name = shift; my $chunkSize = $Archive::Zip::ChunkSize; #my ( $outRef, undef ) = $self->readChunk($chunkSize); my $fh; my $retval = $self->extractToFileHandle($fh); my ( $outRef, undef ) = $self->readChunk(100); } sub isSymbolicLink { my $self = shift; if ( $self->{'externalFileAttributes'} == 0xA1FF0000 ) { $self->{'isSymbolicLink'} = 1; } else { return 0; } 1; } sub isDirectory { return 0; } sub externalFileName { return undef; } # The following are used when copying data sub _writeOffset { shift->{'writeOffset'}; } sub _readOffset { shift->{'readOffset'}; } sub writeLocalHeaderRelativeOffset { shift->{'writeLocalHeaderRelativeOffset'}; } sub wasWritten { shift->{'wasWritten'} } sub _dataEnded { shift->{'dataEnded'}; } sub _readDataRemaining { shift->{'readDataRemaining'}; } sub _inflater { shift->{'inflater'}; } sub _deflater { shift->{'deflater'}; } # Return the total size of my local header sub _localHeaderSize { my $self = shift; return SIGNATURE_LENGTH + LOCAL_FILE_HEADER_LENGTH + length( $self->fileName() ) + length( $self->localExtraField() ); } # Return the total size of my CD header sub _centralDirectoryHeaderSize { my $self = shift; return SIGNATURE_LENGTH + CENTRAL_DIRECTORY_FILE_HEADER_LENGTH + length( $self->fileName() ) + length( $self->cdExtraField() ) + length( $self->fileComment() ); } # DOS date/time format # 0-4 (5) Second divided by 2 # 5-10 (6) Minute (0-59) # 11-15 (5) Hour (0-23 on a 24-hour clock) # 16-20 (5) Day of the month (1-31) # 21-24 (4) Month (1 = January, 2 = February, etc.) # 25-31 (7) Year offset from 1980 (add 1980 to get actual year) # Convert DOS date/time format to unix time_t format # NOT AN OBJECT METHOD! sub _dosToUnixTime { my $dt = shift; return time() unless defined($dt); my $year = ( ( $dt >> 25 ) & 0x7f ) + 80; my $mon = ( ( $dt >> 21 ) & 0x0f ) - 1; my $mday = ( ( $dt >> 16 ) & 0x1f ); my $hour = ( ( $dt >> 11 ) & 0x1f ); my $min = ( ( $dt >> 5 ) & 0x3f ); my $sec = ( ( $dt << 1 ) & 0x3e ); # catch errors my $time_t = eval { Time::Local::timelocal( $sec, $min, $hour, $mday, $mon, $year ); }; return time() if ($@); return $time_t; } # Note, this isn't exactly UTC 1980, it's 1980 + 12 hours and 1 # minute so that nothing timezoney can muck us up. my $safe_epoch = 315576060; # convert a unix time to DOS date/time # NOT AN OBJECT METHOD! sub _unixToDosTime { my $time_t = shift; unless ($time_t) { _error("Tried to add member with zero or undef value for time"); $time_t = $safe_epoch; } if ( $time_t < $safe_epoch ) { _ioError("Unsupported date before 1980 encountered, moving to 1980"); $time_t = $safe_epoch; } my ( $sec, $min, $hour, $mday, $mon, $year ) = localtime($time_t); my $dt = 0; $dt += ( $sec >> 1 ); $dt += ( $min << 5 ); $dt += ( $hour << 11 ); $dt += ( $mday << 16 ); $dt += ( ( $mon + 1 ) << 21 ); $dt += ( ( $year - 80 ) << 25 ); return $dt; } # Write my local header to a file handle. # Stores the offset to the start of the header in my # writeLocalHeaderRelativeOffset member. # Returns AZ_OK on success. sub _writeLocalFileHeader { my $self = shift; my $fh = shift; my $signatureData = pack( SIGNATURE_FORMAT, LOCAL_FILE_HEADER_SIGNATURE ); $self->_print($fh, $signatureData) or return _ioError("writing local header signature"); my $header = pack( LOCAL_FILE_HEADER_FORMAT, $self->versionNeededToExtract(), $self->bitFlag(), $self->desiredCompressionMethod(), $self->lastModFileDateTime(), $self->crc32(), $self->compressedSize(), # may need to be re-written later $self->uncompressedSize(), length( $self->fileName() ), length( $self->localExtraField() ) ); $self->_print($fh, $header) or return _ioError("writing local header"); # Check for a valid filename or a filename equal to a literal `0' if ( $self->fileName() || $self->fileName eq '0' ) { $self->_print($fh, $self->fileName() ) or return _ioError("writing local header filename"); } if ( $self->localExtraField() ) { $self->_print($fh, $self->localExtraField() ) or return _ioError("writing local extra field"); } return AZ_OK; } sub _writeCentralDirectoryFileHeader { my $self = shift; my $fh = shift; my $sigData = pack( SIGNATURE_FORMAT, CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE ); $self->_print($fh, $sigData) or return _ioError("writing central directory header signature"); my $fileNameLength = length( $self->fileName() ); my $extraFieldLength = length( $self->cdExtraField() ); my $fileCommentLength = length( $self->fileComment() ); my $header = pack( CENTRAL_DIRECTORY_FILE_HEADER_FORMAT, $self->versionMadeBy(), $self->fileAttributeFormat(), $self->versionNeededToExtract(), $self->bitFlag(), $self->desiredCompressionMethod(), $self->lastModFileDateTime(), $self->crc32(), # these three fields should have been updated $self->_writeOffset(), # by writing the data stream out $self->uncompressedSize(), # $fileNameLength, $extraFieldLength, $fileCommentLength, 0, # {'diskNumberStart'}, $self->internalFileAttributes(), $self->externalFileAttributes(), $self->writeLocalHeaderRelativeOffset() ); $self->_print($fh, $header) or return _ioError("writing central directory header"); if ($fileNameLength) { $self->_print($fh, $self->fileName() ) or return _ioError("writing central directory header signature"); } if ($extraFieldLength) { $self->_print($fh, $self->cdExtraField() ) or return _ioError("writing central directory extra field"); } if ($fileCommentLength) { $self->_print($fh, $self->fileComment() ) or return _ioError("writing central directory file comment"); } return AZ_OK; } # This writes a data descriptor to the given file handle. # Assumes that crc32, writeOffset, and uncompressedSize are # set correctly (they should be after a write). # Further, the local file header should have the # GPBF_HAS_DATA_DESCRIPTOR_MASK bit set. sub _writeDataDescriptor { my $self = shift; my $fh = shift; my $header = pack( SIGNATURE_FORMAT . DATA_DESCRIPTOR_FORMAT, DATA_DESCRIPTOR_SIGNATURE, $self->crc32(), $self->_writeOffset(), # compressed size $self->uncompressedSize() ); $self->_print($fh, $header) or return _ioError("writing data descriptor"); return AZ_OK; } # Re-writes the local file header with new crc32 and compressedSize fields. # To be called after writing the data stream. # Assumes that filename and extraField sizes didn't change since last written. sub _refreshLocalFileHeader { my $self = shift; my $fh = shift; my $here = $fh->tell(); $fh->seek( $self->writeLocalHeaderRelativeOffset() + SIGNATURE_LENGTH, IO::Seekable::SEEK_SET ) or return _ioError("seeking to rewrite local header"); my $header = pack( LOCAL_FILE_HEADER_FORMAT, $self->versionNeededToExtract(), $self->bitFlag(), $self->desiredCompressionMethod(), $self->lastModFileDateTime(), $self->crc32(), $self->_writeOffset(), # compressed size $self->uncompressedSize(), length( $self->fileName() ), length( $self->localExtraField() ) ); $self->_print($fh, $header) or return _ioError("re-writing local header"); $fh->seek( $here, IO::Seekable::SEEK_SET ) or return _ioError("seeking after rewrite of local header"); return AZ_OK; } sub readChunk { my $self = shift; my $chunkSize = ( ref( $_[0] ) eq 'HASH' ) ? $_[0]->{chunkSize} : $_[0]; if ( $self->readIsDone() ) { $self->endRead(); my $dummy = ''; return ( \$dummy, AZ_STREAM_END ); } $chunkSize = $Archive::Zip::ChunkSize if not defined($chunkSize); $chunkSize = $self->_readDataRemaining() if $chunkSize > $self->_readDataRemaining(); my $buffer = ''; my $outputRef; my ( $bytesRead, $status ) = $self->_readRawChunk( \$buffer, $chunkSize ); return ( \$buffer, $status ) unless $status == AZ_OK; $self->{'readDataRemaining'} -= $bytesRead; $self->{'readOffset'} += $bytesRead; if ( $self->compressionMethod() == COMPRESSION_STORED ) { $self->{'crc32'} = $self->computeCRC32( $buffer, $self->{'crc32'} ); } ( $outputRef, $status ) = &{ $self->{'chunkHandler'} }( $self, \$buffer ); $self->{'writeOffset'} += length($$outputRef); $self->endRead() if $self->readIsDone(); return ( $outputRef, $status ); } # Read the next raw chunk of my data. Subclasses MUST implement. # my ( $bytesRead, $status) = $self->_readRawChunk( \$buffer, $chunkSize ); sub _readRawChunk { my $self = shift; return $self->_subclassResponsibility(); } # A place holder to catch rewindData errors if someone ignores # the error code. sub _noChunk { my $self = shift; return ( \undef, _error("trying to copy chunk when init failed") ); } # Basically a no-op so that I can have a consistent interface. # ( $outputRef, $status) = $self->_copyChunk( \$buffer ); sub _copyChunk { my ( $self, $dataRef ) = @_; return ( $dataRef, AZ_OK ); } # ( $outputRef, $status) = $self->_deflateChunk( \$buffer ); sub _deflateChunk { my ( $self, $buffer ) = @_; my ( $status ) = $self->_deflater()->deflate( $buffer, my $out ); if ( $self->_readDataRemaining() == 0 ) { my $extraOutput; ( $status ) = $self->_deflater()->flush($extraOutput); $out .= $extraOutput; $self->endRead(); return ( \$out, AZ_STREAM_END ); } elsif ( $status == Z_OK ) { return ( \$out, AZ_OK ); } else { $self->endRead(); my $retval = _error( 'deflate error', $status ); my $dummy = ''; return ( \$dummy, $retval ); } } # ( $outputRef, $status) = $self->_inflateChunk( \$buffer ); sub _inflateChunk { my ( $self, $buffer ) = @_; my ( $status ) = $self->_inflater()->inflate( $buffer, my $out ); my $retval; $self->endRead() unless $status == Z_OK; if ( $status == Z_OK || $status == Z_STREAM_END ) { $retval = ( $status == Z_STREAM_END ) ? AZ_STREAM_END: AZ_OK; return ( \$out, $retval ); } else { $retval = _error( 'inflate error', $status ); my $dummy = ''; return ( \$dummy, $retval ); } } sub rewindData { my $self = shift; my $status; # set to trap init errors $self->{'chunkHandler'} = $self->can('_noChunk'); # Work around WinZip bug with 0-length DEFLATED files $self->desiredCompressionMethod(COMPRESSION_STORED) if $self->uncompressedSize() == 0; # assume that we're going to read the whole file, and compute the CRC anew. $self->{'crc32'} = 0 if ( $self->compressionMethod() == COMPRESSION_STORED ); # These are the only combinations of methods we deal with right now. if ( $self->compressionMethod() == COMPRESSION_STORED and $self->desiredCompressionMethod() == COMPRESSION_DEFLATED ) { ( $self->{'deflater'}, $status ) = Compress::Raw::Zlib::Deflate->new( '-Level' => $self->desiredCompressionLevel(), '-WindowBits' => -MAX_WBITS(), # necessary magic '-Bufsize' => $Archive::Zip::ChunkSize, @_ ); # pass additional options return _error( 'deflateInit error:', $status ) unless $status == Z_OK; $self->{'chunkHandler'} = $self->can('_deflateChunk'); } elsif ( $self->compressionMethod() == COMPRESSION_DEFLATED and $self->desiredCompressionMethod() == COMPRESSION_STORED ) { ( $self->{'inflater'}, $status ) = Compress::Raw::Zlib::Inflate->new( '-WindowBits' => -MAX_WBITS(), # necessary magic '-Bufsize' => $Archive::Zip::ChunkSize, @_ ); # pass additional options return _error( 'inflateInit error:', $status ) unless $status == Z_OK; $self->{'chunkHandler'} = $self->can('_inflateChunk'); } elsif ( $self->compressionMethod() == $self->desiredCompressionMethod() ) { $self->{'chunkHandler'} = $self->can('_copyChunk'); } else { return _error( sprintf( "Unsupported compression combination: read %d, write %d", $self->compressionMethod(), $self->desiredCompressionMethod() ) ); } $self->{'readDataRemaining'} = ( $self->compressionMethod() == COMPRESSION_STORED ) ? $self->uncompressedSize() : $self->compressedSize(); $self->{'dataEnded'} = 0; $self->{'readOffset'} = 0; return AZ_OK; } sub endRead { my $self = shift; delete $self->{'inflater'}; delete $self->{'deflater'}; $self->{'dataEnded'} = 1; $self->{'readDataRemaining'} = 0; return AZ_OK; } sub readIsDone { my $self = shift; return ( $self->_dataEnded() or !$self->_readDataRemaining() ); } sub contents { my $self = shift; my $newContents = shift; if ( defined($newContents) ) { # change our type and call the subclass contents method. $self->_become(STRINGMEMBERCLASS); return $self->contents( pack( 'C0a*', $newContents ) ) ; # in case of Unicode } else { my $oldCompression = $self->desiredCompressionMethod(COMPRESSION_STORED); my $status = $self->rewindData(@_); if ( $status != AZ_OK ) { $self->endRead(); return $status; } my $retval = ''; while ( $status == AZ_OK ) { my $ref; ( $ref, $status ) = $self->readChunk( $self->_readDataRemaining() ); # did we get it in one chunk? if ( length($$ref) == $self->uncompressedSize() ) { $retval = $$ref; } else { $retval .= $$ref } } $self->desiredCompressionMethod($oldCompression); $self->endRead(); $status = AZ_OK if $status == AZ_STREAM_END; $retval = undef unless $status == AZ_OK; return wantarray ? ( $retval, $status ) : $retval; } } sub extractToFileHandle { my $self = shift; return _error("encryption unsupported") if $self->isEncrypted(); my $fh = ( ref( $_[0] ) eq 'HASH' ) ? shift->{fileHandle} : shift; _binmode($fh); my $oldCompression = $self->desiredCompressionMethod(COMPRESSION_STORED); my $status = $self->rewindData(@_); $status = $self->_writeData($fh) if $status == AZ_OK; $self->desiredCompressionMethod($oldCompression); $self->endRead(); return $status; } # write local header and data stream to file handle sub _writeToFileHandle { my $self = shift; my $fh = shift; my $fhIsSeekable = shift; my $offset = shift; return _error("no member name given for $self") if $self->fileName() eq ''; $self->{'writeLocalHeaderRelativeOffset'} = $offset; $self->{'wasWritten'} = 0; # Determine if I need to write a data descriptor # I need to do this if I can't refresh the header # and I don't know compressed size or crc32 fields. my $headerFieldsUnknown = ( ( $self->uncompressedSize() > 0 or $self->compressedSize > 0 ) and ($self->compressionMethod() == COMPRESSION_STORED or $self->desiredCompressionMethod() == COMPRESSION_DEFLATED ) ); my $shouldWriteDataDescriptor = ( $headerFieldsUnknown and not $fhIsSeekable ); $self->hasDataDescriptor(1) if ($shouldWriteDataDescriptor); $self->{'writeOffset'} = 0; my $status = $self->rewindData(); ( $status = $self->_writeLocalFileHeader($fh) ) if $status == AZ_OK; ( $status = $self->_writeData($fh) ) if $status == AZ_OK; if ( $status == AZ_OK ) { $self->{'wasWritten'} = 1; if ( $self->hasDataDescriptor() ) { $status = $self->_writeDataDescriptor($fh); } elsif ($headerFieldsUnknown) { $status = $self->_refreshLocalFileHeader($fh); } } return $status; } # Copy my (possibly compressed) data to given file handle. # Returns C on success sub _writeData { my $self = shift; my $writeFh = shift; # If symbolic link, just create one if the operating system is Linux, Unix, BSD or VMS # TODO: Add checks for other operating systems if ( $self->{'isSymbolicLink'} == 1 && $^O eq 'linux' ) { my $chunkSize = $Archive::Zip::ChunkSize; my ( $outRef, $status ) = $self->readChunk($chunkSize); symlink $$outRef, $self->{'newName'}; } else { return AZ_OK if ( $self->uncompressedSize() == 0 ); my $status; my $chunkSize = $Archive::Zip::ChunkSize; while ( $self->_readDataRemaining() > 0 ) { my $outRef; ( $outRef, $status ) = $self->readChunk($chunkSize); return $status if ( $status != AZ_OK and $status != AZ_STREAM_END ); if ( length($$outRef) > 0 ) { $self->_print($writeFh, $$outRef) or return _ioError("write error during copy"); } last if $status == AZ_STREAM_END; } $self->{'compressedSize'} = $self->_writeOffset(); } return AZ_OK; } # Return true if I depend on the named file sub _usesFileNamed { return 0; } 1; FILE%abd53b50/Archive/Zip/NewFileMember.pm#line 1 "/usr/share/perl5/Archive/Zip/NewFileMember.pm" package Archive::Zip::NewFileMember; use strict; use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.30'; @ISA = qw ( Archive::Zip::FileMember ); } use Archive::Zip qw( :CONSTANTS :ERROR_CODES :UTILITY_METHODS ); # Given a file name, set up for eventual writing. sub _newFromFileNamed { my $class = shift; my $fileName = shift; # local FS format my $newName = shift; $newName = _asZipDirName($fileName) unless defined($newName); return undef unless ( stat($fileName) && -r _ && !-d _ ); my $self = $class->new(@_); $self->{'fileName'} = $newName; $self->{'externalFileName'} = $fileName; $self->{'compressionMethod'} = COMPRESSION_STORED; my @stat = stat(_); $self->{'compressedSize'} = $self->{'uncompressedSize'} = $stat[7]; $self->desiredCompressionMethod( ( $self->compressedSize() > 0 ) ? COMPRESSION_DEFLATED : COMPRESSION_STORED ); $self->unixFileAttributes( $stat[2] ); $self->setLastModFileDateTimeFromUnix( $stat[9] ); $self->isTextFile( -T _ ); return $self; } sub rewindData { my $self = shift; my $status = $self->SUPER::rewindData(@_); return $status unless $status == AZ_OK; return AZ_IO_ERROR unless $self->fh(); $self->fh()->clearerr(); $self->fh()->seek( 0, IO::Seekable::SEEK_SET ) or return _ioError( "rewinding", $self->externalFileName() ); return AZ_OK; } # Return bytes read. Note that first parameter is a ref to a buffer. # my $data; # my ( $bytesRead, $status) = $self->readRawChunk( \$data, $chunkSize ); sub _readRawChunk { my ( $self, $dataRef, $chunkSize ) = @_; return ( 0, AZ_OK ) unless $chunkSize; my $bytesRead = $self->fh()->read( $$dataRef, $chunkSize ) or return ( 0, _ioError("reading data") ); return ( $bytesRead, AZ_OK ); } # If I already exist, extraction is a no-op. sub extractToFileNamed { my $self = shift; my $name = shift; # local FS name if ( File::Spec->rel2abs($name) eq File::Spec->rel2abs( $self->externalFileName() ) and -r $name ) { return AZ_OK; } else { return $self->SUPER::extractToFileNamed( $name, @_ ); } } 1; FILE$536ea63b/Archive/Zip/StringMember.pm#line 1 "/usr/share/perl5/Archive/Zip/StringMember.pm" package Archive::Zip::StringMember; use strict; use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.30'; @ISA = qw( Archive::Zip::Member ); } use Archive::Zip qw( :CONSTANTS :ERROR_CODES ); # Create a new string member. Default is COMPRESSION_STORED. # Can take a ref to a string as well. sub _newFromString { my $class = shift; my $string = shift; my $name = shift; my $self = $class->new(@_); $self->contents($string); $self->fileName($name) if defined($name); # Set the file date to now $self->setLastModFileDateTimeFromUnix( time() ); $self->unixFileAttributes( $self->DEFAULT_FILE_PERMISSIONS ); return $self; } sub _become { my $self = shift; my $newClass = shift; return $self if ref($self) eq $newClass; delete( $self->{'contents'} ); return $self->SUPER::_become($newClass); } # Get or set my contents. Note that we do not call the superclass # version of this, because it calls us. sub contents { my $self = shift; my $string = shift; if ( defined($string) ) { $self->{'contents'} = pack( 'C0a*', ( ref($string) eq 'SCALAR' ) ? $$string : $string ); $self->{'uncompressedSize'} = $self->{'compressedSize'} = length( $self->{'contents'} ); $self->{'compressionMethod'} = COMPRESSION_STORED; } return $self->{'contents'}; } # Return bytes read. Note that first parameter is a ref to a buffer. # my $data; # my ( $bytesRead, $status) = $self->readRawChunk( \$data, $chunkSize ); sub _readRawChunk { my ( $self, $dataRef, $chunkSize ) = @_; $$dataRef = substr( $self->contents(), $self->_readOffset(), $chunkSize ); return ( length($$dataRef), AZ_OK ); } 1; FILE%da46ee73/Archive/Zip/ZipFileMember.pm5#line 1 "/usr/share/perl5/Archive/Zip/ZipFileMember.pm" package Archive::Zip::ZipFileMember; use strict; use vars qw( $VERSION @ISA ); BEGIN { $VERSION = '1.30'; @ISA = qw ( Archive::Zip::FileMember ); } use Archive::Zip qw( :CONSTANTS :ERROR_CODES :PKZIP_CONSTANTS :UTILITY_METHODS ); # Create a new Archive::Zip::ZipFileMember # given a filename and optional open file handle # sub _newFromZipFile { my $class = shift; my $fh = shift; my $externalFileName = shift; my $possibleEocdOffset = shift; # normally 0 my $self = $class->new( 'crc32' => 0, 'diskNumberStart' => 0, 'localHeaderRelativeOffset' => 0, 'dataOffset' => 0, # localHeaderRelativeOffset + header length @_ ); $self->{'externalFileName'} = $externalFileName; $self->{'fh'} = $fh; $self->{'possibleEocdOffset'} = $possibleEocdOffset; return $self; } sub isDirectory { my $self = shift; return ( substr( $self->fileName, -1, 1 ) eq '/' and $self->uncompressedSize == 0 ); } # Seek to the beginning of the local header, just past the signature. # Verify that the local header signature is in fact correct. # Update the localHeaderRelativeOffset if necessary by adding the possibleEocdOffset. # Returns status. sub _seekToLocalHeader { my $self = shift; my $where = shift; # optional my $previousWhere = shift; # optional $where = $self->localHeaderRelativeOffset() unless defined($where); # avoid loop on certain corrupt files (from Julian Field) return _formatError("corrupt zip file") if defined($previousWhere) && $where == $previousWhere; my $status; my $signature; $status = $self->fh()->seek( $where, IO::Seekable::SEEK_SET ); return _ioError("seeking to local header") unless $status; ( $status, $signature ) = _readSignature( $self->fh(), $self->externalFileName(), LOCAL_FILE_HEADER_SIGNATURE ); return $status if $status == AZ_IO_ERROR; # retry with EOCD offset if any was given. if ( $status == AZ_FORMAT_ERROR && $self->{'possibleEocdOffset'} ) { $status = $self->_seekToLocalHeader( $self->localHeaderRelativeOffset() + $self->{'possibleEocdOffset'}, $where ); if ( $status == AZ_OK ) { $self->{'localHeaderRelativeOffset'} += $self->{'possibleEocdOffset'}; $self->{'possibleEocdOffset'} = 0; } } return $status; } # Because I'm going to delete the file handle, read the local file # header if the file handle is seekable. If it isn't, I assume that # I've already read the local header. # Return ( $status, $self ) sub _become { my $self = shift; my $newClass = shift; return $self if ref($self) eq $newClass; my $status = AZ_OK; if ( _isSeekable( $self->fh() ) ) { my $here = $self->fh()->tell(); $status = $self->_seekToLocalHeader(); $status = $self->_readLocalFileHeader() if $status == AZ_OK; $self->fh()->seek( $here, IO::Seekable::SEEK_SET ); return $status unless $status == AZ_OK; } delete( $self->{'eocdCrc32'} ); delete( $self->{'diskNumberStart'} ); delete( $self->{'localHeaderRelativeOffset'} ); delete( $self->{'dataOffset'} ); return $self->SUPER::_become($newClass); } sub diskNumberStart { shift->{'diskNumberStart'}; } sub localHeaderRelativeOffset { shift->{'localHeaderRelativeOffset'}; } sub dataOffset { shift->{'dataOffset'}; } # Skip local file header, updating only extra field stuff. # Assumes that fh is positioned before signature. sub _skipLocalFileHeader { my $self = shift; my $header; my $bytesRead = $self->fh()->read( $header, LOCAL_FILE_HEADER_LENGTH ); if ( $bytesRead != LOCAL_FILE_HEADER_LENGTH ) { return _ioError("reading local file header"); } my $fileNameLength; my $extraFieldLength; my $bitFlag; ( undef, # $self->{'versionNeededToExtract'}, $bitFlag, undef, # $self->{'compressionMethod'}, undef, # $self->{'lastModFileDateTime'}, undef, # $crc32, undef, # $compressedSize, undef, # $uncompressedSize, $fileNameLength, $extraFieldLength ) = unpack( LOCAL_FILE_HEADER_FORMAT, $header ); if ($fileNameLength) { $self->fh()->seek( $fileNameLength, IO::Seekable::SEEK_CUR ) or return _ioError("skipping local file name"); } if ($extraFieldLength) { $bytesRead = $self->fh()->read( $self->{'localExtraField'}, $extraFieldLength ); if ( $bytesRead != $extraFieldLength ) { return _ioError("reading local extra field"); } } $self->{'dataOffset'} = $self->fh()->tell(); if ( $bitFlag & GPBF_HAS_DATA_DESCRIPTOR_MASK ) { # Read the crc32, compressedSize, and uncompressedSize from the # extended data descriptor, which directly follows the compressed data. # # Skip over the compressed file data (assumes that EOCD compressedSize # was correct) $self->fh()->seek( $self->{'compressedSize'}, IO::Seekable::SEEK_CUR ) or return _ioError("seeking to extended local header"); # these values should be set correctly from before. my $oldCrc32 = $self->{'eocdCrc32'}; my $oldCompressedSize = $self->{'compressedSize'}; my $oldUncompressedSize = $self->{'uncompressedSize'}; my $status = $self->_readDataDescriptor(); return $status unless $status == AZ_OK; return _formatError( "CRC or size mismatch while skipping data descriptor") if ( $oldCrc32 != $self->{'crc32'} || $oldUncompressedSize != $self->{'uncompressedSize'} ); } return AZ_OK; } # Read from a local file header into myself. Returns AZ_OK if successful. # Assumes that fh is positioned after signature. # Note that crc32, compressedSize, and uncompressedSize will be 0 if # GPBF_HAS_DATA_DESCRIPTOR_MASK is set in the bitFlag. sub _readLocalFileHeader { my $self = shift; my $header; my $bytesRead = $self->fh()->read( $header, LOCAL_FILE_HEADER_LENGTH ); if ( $bytesRead != LOCAL_FILE_HEADER_LENGTH ) { return _ioError("reading local file header"); } my $fileNameLength; my $crc32; my $compressedSize; my $uncompressedSize; my $extraFieldLength; ( $self->{'versionNeededToExtract'}, $self->{'bitFlag'}, $self->{'compressionMethod'}, $self->{'lastModFileDateTime'}, $crc32, $compressedSize, $uncompressedSize, $fileNameLength, $extraFieldLength ) = unpack( LOCAL_FILE_HEADER_FORMAT, $header ); if ($fileNameLength) { my $fileName; $bytesRead = $self->fh()->read( $fileName, $fileNameLength ); if ( $bytesRead != $fileNameLength ) { return _ioError("reading local file name"); } $self->fileName($fileName); } if ($extraFieldLength) { $bytesRead = $self->fh()->read( $self->{'localExtraField'}, $extraFieldLength ); if ( $bytesRead != $extraFieldLength ) { return _ioError("reading local extra field"); } } $self->{'dataOffset'} = $self->fh()->tell(); if ( $self->hasDataDescriptor() ) { # Read the crc32, compressedSize, and uncompressedSize from the # extended data descriptor. # Skip over the compressed file data (assumes that EOCD compressedSize # was correct) $self->fh()->seek( $self->{'compressedSize'}, IO::Seekable::SEEK_CUR ) or return _ioError("seeking to extended local header"); my $status = $self->_readDataDescriptor(); return $status unless $status == AZ_OK; } else { return _formatError( "CRC or size mismatch after reading data descriptor") if ( $self->{'crc32'} != $crc32 || $self->{'uncompressedSize'} != $uncompressedSize ); } return AZ_OK; } # This will read the data descriptor, which is after the end of compressed file # data in members that that have GPBF_HAS_DATA_DESCRIPTOR_MASK set in their # bitFlag. # The only reliable way to find these is to rely on the EOCD compressedSize. # Assumes that file is positioned immediately after the compressed data. # Returns status; sets crc32, compressedSize, and uncompressedSize. sub _readDataDescriptor { my $self = shift; my $signatureData; my $header; my $crc32; my $compressedSize; my $uncompressedSize; my $bytesRead = $self->fh()->read( $signatureData, SIGNATURE_LENGTH ); return _ioError("reading header signature") if $bytesRead != SIGNATURE_LENGTH; my $signature = unpack( SIGNATURE_FORMAT, $signatureData ); # unfortunately, the signature appears to be optional. if ( $signature == DATA_DESCRIPTOR_SIGNATURE && ( $signature != $self->{'crc32'} ) ) { $bytesRead = $self->fh()->read( $header, DATA_DESCRIPTOR_LENGTH ); return _ioError("reading data descriptor") if $bytesRead != DATA_DESCRIPTOR_LENGTH; ( $crc32, $compressedSize, $uncompressedSize ) = unpack( DATA_DESCRIPTOR_FORMAT, $header ); } else { $bytesRead = $self->fh()->read( $header, DATA_DESCRIPTOR_LENGTH_NO_SIG ); return _ioError("reading data descriptor") if $bytesRead != DATA_DESCRIPTOR_LENGTH_NO_SIG; $crc32 = $signature; ( $compressedSize, $uncompressedSize ) = unpack( DATA_DESCRIPTOR_FORMAT_NO_SIG, $header ); } $self->{'eocdCrc32'} = $self->{'crc32'} unless defined( $self->{'eocdCrc32'} ); $self->{'crc32'} = $crc32; $self->{'compressedSize'} = $compressedSize; $self->{'uncompressedSize'} = $uncompressedSize; return AZ_OK; } # Read a Central Directory header. Return AZ_OK on success. # Assumes that fh is positioned right after the signature. sub _readCentralDirectoryFileHeader { my $self = shift; my $fh = $self->fh(); my $header = ''; my $bytesRead = $fh->read( $header, CENTRAL_DIRECTORY_FILE_HEADER_LENGTH ); if ( $bytesRead != CENTRAL_DIRECTORY_FILE_HEADER_LENGTH ) { return _ioError("reading central dir header"); } my ( $fileNameLength, $extraFieldLength, $fileCommentLength ); ( $self->{'versionMadeBy'}, $self->{'fileAttributeFormat'}, $self->{'versionNeededToExtract'}, $self->{'bitFlag'}, $self->{'compressionMethod'}, $self->{'lastModFileDateTime'}, $self->{'crc32'}, $self->{'compressedSize'}, $self->{'uncompressedSize'}, $fileNameLength, $extraFieldLength, $fileCommentLength, $self->{'diskNumberStart'}, $self->{'internalFileAttributes'}, $self->{'externalFileAttributes'}, $self->{'localHeaderRelativeOffset'} ) = unpack( CENTRAL_DIRECTORY_FILE_HEADER_FORMAT, $header ); $self->{'eocdCrc32'} = $self->{'crc32'}; if ($fileNameLength) { $bytesRead = $fh->read( $self->{'fileName'}, $fileNameLength ); if ( $bytesRead != $fileNameLength ) { _ioError("reading central dir filename"); } } if ($extraFieldLength) { $bytesRead = $fh->read( $self->{'cdExtraField'}, $extraFieldLength ); if ( $bytesRead != $extraFieldLength ) { return _ioError("reading central dir extra field"); } } if ($fileCommentLength) { $bytesRead = $fh->read( $self->{'fileComment'}, $fileCommentLength ); if ( $bytesRead != $fileCommentLength ) { return _ioError("reading central dir file comment"); } } # NK 10/21/04: added to avoid problems with manipulated headers if ( $self->{'uncompressedSize'} != $self->{'compressedSize'} and $self->{'compressionMethod'} == COMPRESSION_STORED ) { $self->{'uncompressedSize'} = $self->{'compressedSize'}; } $self->desiredCompressionMethod( $self->compressionMethod() ); return AZ_OK; } sub rewindData { my $self = shift; my $status = $self->SUPER::rewindData(@_); return $status unless $status == AZ_OK; return AZ_IO_ERROR unless $self->fh(); $self->fh()->clearerr(); # Seek to local file header. # The only reason that I'm doing this this way is that the extraField # length seems to be different between the CD header and the LF header. $status = $self->_seekToLocalHeader(); return $status unless $status == AZ_OK; # skip local file header $status = $self->_skipLocalFileHeader(); return $status unless $status == AZ_OK; # Seek to beginning of file data $self->fh()->seek( $self->dataOffset(), IO::Seekable::SEEK_SET ) or return _ioError("seeking to beginning of file data"); return AZ_OK; } # Return bytes read. Note that first parameter is a ref to a buffer. # my $data; # my ( $bytesRead, $status) = $self->readRawChunk( \$data, $chunkSize ); sub _readRawChunk { my ( $self, $dataRef, $chunkSize ) = @_; return ( 0, AZ_OK ) unless $chunkSize; my $bytesRead = $self->fh()->read( $$dataRef, $chunkSize ) or return ( 0, _ioError("reading data") ); return ( $bytesRead, AZ_OK ); } 1; FILE043563a1/PAR.pmo#line 1 "/usr/share/perl5/PAR.pm" package PAR; $PAR::VERSION = '1.005'; use 5.006; use strict; use warnings; use Config '%Config'; use Carp qw/croak/; # If the 'prefork' module is available, we # register various run-time loaded modules with it. # That way, there is more shared memory in a forking # environment. BEGIN { if (eval 'require prefork') { prefork->import($_) for qw/ Archive::Zip File::Glob File::Spec File::Temp LWP::Simple PAR::Heavy /; # not including Archive::Unzip::Burst which only makes sense # in the context of a PAR::Packer'ed executable anyway. } } use PAR::SetupProgname; use PAR::SetupTemp; #line 311 use vars qw(@PAR_INC); # explicitly stated PAR library files (preferred) use vars qw(@PAR_INC_LAST); # explicitly stated PAR library files (fallback) use vars qw(%PAR_INC); # sets {$par}{$file} for require'd modules use vars qw(@LibCache %LibCache); # I really miss pseudohash. use vars qw($LastAccessedPAR $LastTempFile); use vars qw(@RepositoryObjects); # If we have PAR::Repository::Client support, we # put the ::Client objects in here. use vars qw(@PriorityRepositoryObjects); # repositories which are preferred over local stuff use vars qw(@UpgradeRepositoryObjects); # If we have PAR::Repository::Client's in upgrade mode # put the ::Client objects in here *as well*. use vars qw(%FileCache); # The Zip-file file-name-cache # Layout: # $FileCache{$ZipObj}{$FileName} = $Member use vars qw(%ArchivesExtracted); # Associates archive-zip-object => full extraction path my $ver = $Config{version}; my $arch = $Config{archname}; my $progname = $ENV{PAR_PROGNAME} || $0; my $is_insensitive_fs = ( -s $progname and (-s lc($progname) || -1) == (-s uc($progname) || -1) and (-s lc($progname) || -1) == -s $progname ); # lexical for import(), and _import_foo() functions to control unpar() my %unpar_options; # called on "use PAR" sub import { my $class = shift; PAR::SetupProgname::set_progname(); PAR::SetupTemp::set_par_temp_env(); $progname = $ENV{PAR_PROGNAME} ||= $0; $is_insensitive_fs = (-s $progname and (-s lc($progname) || -1) == (-s uc($progname) || -1)); my @args = @_; # Insert PAR hook in @INC. unshift @INC, \&find_par unless grep { $_ eq \&find_par } @INC; push @INC, \&find_par_last unless grep { $_ eq \&find_par_last } @INC; # process args to use PAR 'foo.par', { opts }, ...; foreach my $par (@args) { if (ref($par) eq 'HASH') { # we have been passed a hash reference _import_hash_ref($par); } elsif ($par =~ /[?*{}\[\]]/) { # implement globbing for PAR archives require File::Glob; foreach my $matched (File::Glob::glob($par)) { push @PAR_INC, unpar($matched, undef, undef, 1); } } else { # ordinary string argument => file push @PAR_INC, unpar($par, undef, undef, 1); } } return if $PAR::__import; local $PAR::__import = 1; require PAR::Heavy; PAR::Heavy::_init_dynaloader(); # The following code is executed for the case where the # running program is itself a PAR archive. # ==> run script/main.pl if (unpar($progname)) { # XXX - handle META.yml here! push @PAR_INC, unpar($progname, undef, undef, 1); _extract_inc($progname) unless $ENV{PAR_CLEAN}; if ($LibCache{$progname}) { # XXX bad: this us just a good guess require File::Spec; $ArchivesExtracted{$progname} = File::Spec->catdir($ENV{PAR_TEMP}, 'inc'); } my $zip = $LibCache{$progname}; my $member = _first_member( $zip, "script/main.pl", "main.pl", ); if ($progname and !$member) { require File::Spec; my @path = File::Spec->splitdir($progname); my $filename = pop @path; $member = _first_member( $zip, "script/".$filename, "script/".$filename.".pl", $filename, $filename.".pl", ) } # finally take $ARGV[0] as the hint for file to run if (defined $ARGV[0] and !$member) { $member = _first_member( $zip, "script/$ARGV[0]", "script/$ARGV[0].pl", $ARGV[0], "$ARGV[0].pl", ) or die qq(PAR.pm: Can't open perl script "$ARGV[0]": No such file or directory); shift @ARGV; } if (!$member) { die "Usage: $0 script_file_name.\n"; } _run_member($member); } } # import() helper for the "use PAR {...};" syntax. sub _import_hash_ref { my $opt = shift; # hash slice assignment -- pass all of the options into unpar local @unpar_options{keys(%$opt)} = values(%$opt); # check for incompatible options: if ( exists $opt->{repository} and exists $opt->{file} ) { croak("Invalid PAR loading options. Cannot have a 'repository' and 'file' option at the same time."); } elsif ( exists $opt->{file} and (exists $opt->{install} or exists $opt->{upgrade}) ) { my $e = exists($opt->{install}) ? 'install' : 'upgrade'; croak("Invalid PAR loading options. Cannot combine 'file' and '$e' options."); } elsif ( not exists $opt->{repository} and not exists $opt->{file} ) { croak("Invalid PAR loading options. Need at least one of 'file' or 'repository' options."); } # load from file if (exists $opt->{file}) { croak("Cannot load undefined PAR archive") if not defined $opt->{file}; # for files, we default to loading from PAR archive first my $fallback = $opt->{fallback}; $fallback = 0 if not defined $fallback; if (not $fallback) { # load from this PAR arch preferably push @PAR_INC, unpar($opt->{file}, undef, undef, 1); } else { # load from this PAR arch as fallback push @PAR_INC_LAST, unpar($opt->{file}, undef, undef, 1); } } else { # Deal with repositories elsewhere my $client = _import_repository($opt); return() if not $client; if (defined $opt->{run}) { # run was specified # run the specified script from the repository $client->run_script( $opt->{run} ); return 1; } return 1; } # run was specified # run the specified script from inside the PAR file. if (defined $opt->{run}) { my $script = $opt->{run}; require PAR::Heavy; PAR::Heavy::_init_dynaloader(); # XXX - handle META.yml here! _extract_inc($opt->{file}) unless $ENV{PAR_CLEAN}; my $zip = $LibCache{$opt->{file}}; my $member = _first_member( $zip, (($script !~ /^script\//) ? ("script/$script", "script/$script.pl") : ()), $script, "$script.pl", ); if (not defined $member) { croak("Cannot run script '$script' from PAR file '$opt->{file}'. Script couldn't be found in PAR file."); } _run_member_from_par($member); } return(); } # This sub is invoked by _import_hash_ref if a {repository} # option is found # Returns the repository client object on success. sub _import_repository { my $opt = shift; my $url = $opt->{repository}; eval "require PAR::Repository::Client; 1;"; if ($@ or not eval PAR::Repository::Client->VERSION >= 0.04) { croak "In order to use the 'use PAR { repository => 'url' };' syntax, you need to install the PAR::Repository::Client module (version 0.04 or later) from CPAN. This module does not seem to be installed as indicated by the following error message: $@"; } if ($opt->{upgrade} and not eval PAR::Repository::Client->VERSION >= 0.22) { croak "In order to use the 'upgrade' option, you need to install the PAR::Repository::Client module (version 0.22 or later) from CPAN"; } if ($opt->{dependencies} and not eval PAR::Repository::Client->VERSION >= 0.23) { croak "In order to use the 'dependencies' option, you need to install the PAR::Repository::Client module (version 0.23 or later) from CPAN"; } my $obj; # Support existing clients passed in as objects. if (ref($url) and UNIVERSAL::isa($obj, 'PAR::Repository::Client')) { $obj = $url; } else { $obj = PAR::Repository::Client->new( uri => $url, auto_install => $opt->{install}, auto_upgrade => $opt->{upgrade}, static_dependencies => $opt->{dependencies}, ); } if (exists($opt->{fallback}) and not $opt->{fallback}) { push @PriorityRepositoryObjects, $obj; # repository beats local stuff } else { push @RepositoryObjects, $obj; # local stuff beats repository } # these are tracked separately so we can check for upgrades early push @UpgradeRepositoryObjects, $obj if $opt->{upgrade}; return $obj; } # Given an Archive::Zip obj and a list of files/paths, # this function returns the Archive::Zip::Member for the # first of the files found in the ZIP. If none is found, # returns the empty list. sub _first_member { my $zip = shift; foreach my $name (@_) { my $member = _cached_member_named($zip, $name); return $member if $member; } return; } # Given an Archive::Zip object, this finds the first # Archive::Zip member whose file name matches the # regular expression sub _first_member_matching { my $zip = shift; my $regex = shift; my $cache = $FileCache{$zip}; $cache = $FileCache{$zip} = _make_file_cache($zip) if not $cache; foreach my $name (keys %$cache) { if ($name =~ $regex) { return $cache->{$name}; } } return(); } sub _run_member_from_par { my $member = shift; my $clear_stack = shift; my ($fh, $is_new, $filename) = _tempfile($member->crc32String . ".pl"); if ($is_new) { my $file = $member->fileName; print $fh "package main;\n"; print $fh "#line 1 \"$file\"\n"; $member->extractToFileHandle($fh); seek ($fh, 0, 0); } $ENV{PAR_0} = $filename; # for Pod::Usage { do $filename; CORE::exit($1) if ($@ =~/^_TK_EXIT_\((\d+)\)/); die $@ if $@; exit; } } sub _run_member { my $member = shift; my $clear_stack = shift; my ($fh, $is_new, $filename) = _tempfile($member->crc32String . ".pl"); if ($is_new) { my $file = $member->fileName; print $fh "package main; shift \@INC;\n"; if (defined &Internals::PAR::CLEARSTACK and $clear_stack) { print $fh "Internals::PAR::CLEARSTACK();\n"; } print $fh "#line 1 \"$file\"\n"; $member->extractToFileHandle($fh); seek ($fh, 0, 0); } unshift @INC, sub { $fh }; $ENV{PAR_0} = $filename; # for Pod::Usage { do 'main'; CORE::exit($1) if ($@ =~/^_TK_EXIT_\((\d+)\)/); die $@ if $@; exit; } } sub _run_external_file { my $filename = shift; my $clear_stack = shift; require 5.008; open my $ffh, '<', $filename or die "Can't open perl script \"$filename\": $!"; my $clearstack = ''; if (defined &Internals::PAR::CLEARSTACK and $clear_stack) { $clear_stack = "Internals::PAR::CLEARSTACK();\n"; } my $string = "package main; shift \@INC;\n$clearstack#line 1 \"$filename\"\n" . do { local $/ = undef; <$ffh> }; close $ffh; open my $fh, '<', \$string or die "Can't open file handle to string: $!"; unshift @INC, sub { $fh }; $ENV{PAR_0} = $filename; # for Pod::Usage { do 'main'; CORE::exit($1) if ($@ =~/^_TK_EXIT_\((\d+)\)/); die $@ if $@; exit; } } # extract the contents of a .par (or .exe) or any # Archive::Zip handle to the PAR_TEMP/inc directory. # returns that directory. sub _extract_inc { my $file_or_azip_handle = shift; my $force_extract = shift; my $inc = "$PAR::SetupTemp::PARTemp/inc"; my $dlext = defined($Config{dlext}) ? $Config::Config{dlext} : ''; my $inc_exists = -d $inc; my $is_handle = ref($file_or_azip_handle) && $file_or_azip_handle->isa('Archive::Zip::Archive'); require File::Spec; if (!$inc_exists or $force_extract) { for (1 .. 10) { mkdir("$inc.lock", 0755) and last; sleep 1 } undef $@; if (!$is_handle) { # First try to unzip the *fast* way. eval { require Archive::Unzip::Burst; Archive::Unzip::Burst::unzip($file_or_azip_handle, $inc) and die "Could not unzip '$file_or_azip_handle' into '$inc'. Error: $!"; die; }; # This means the fast module is there, but didn't work. if ($@ =~ /^Could not unzip/) { die $@; } } # either failed to load Archive::Unzip::Burst or got an A::Zip handle # fallback to slow way. if ($is_handle || $@) { my $zip; if (!$is_handle) { open my $fh, '<', $file_or_azip_handle or die "Cannot find '$file_or_azip_handle': $!"; binmode($fh); bless($fh, 'IO::File'); $zip = Archive::Zip->new; ( $zip->readFromFileHandle($fh, $file_or_azip_handle) == Archive::Zip::AZ_OK() ) or die "Read '$file_or_azip_handle' error: $!"; } else { $zip = $file_or_azip_handle; } mkdir($inc) if not -d $inc; for ( $zip->memberNames() ) { s{^/}{}; # Skip DLLs (these will be handled by the dynaloader hook) # except for those placed in File::ShareDir directories. next if (m{\.\Q$dlext\E[^/]*$} && !m{^lib/auto/share/(dist|module)/}); my $outfile = File::Spec->catfile($inc, $_); next if -e $outfile and not -w _; $zip->extractMember($_, "$inc/" . $_); } } rmdir("$inc.lock"); $ArchivesExtracted{$is_handle ? $file_or_azip_handle->fileName() : $file_or_azip_handle} = $inc; } # add the freshly extracted directories to @INC, # but make sure there's no duplicates my %inc_exists = map { ($_, 1) } @INC; unshift @INC, grep !exists($inc_exists{$_}), grep -d, map File::Spec->catdir($inc, @$_), [ 'lib' ], [ 'arch' ], [ $arch ], [ $ver ], [ $ver, $arch ], []; return $inc; } # This is the hook placed in @INC for loading PAR's # before any other stuff in @INC sub find_par { my @args = @_; # if there are repositories in upgrade mode, check them # first. If so, this is expensive, of course! if (@UpgradeRepositoryObjects) { my $module = $args[1]; $module =~ s/\.pm$//; $module =~ s/\//::/g; foreach my $client (@UpgradeRepositoryObjects) { my $local_file = $client->upgrade_module($module); # break the require if upgrade_module has been required already # to avoid infinite recursion if (exists $INC{$args[1]}) { # Oh dear. Check for the possible return values of the INC sub hooks in # perldoc -f require before trying to understand this. # Then, realize that if you pass undef for the file handle, perl (5.8.9) # does NOT use the subroutine. Thus the hacky GLOB ref. my $line = 1; no warnings; return (\*I_AM_NOT_HERE, sub {$line ? ($_="1;",$line=0,return(1)) : ($_="",return(0))}); } # Note: This is likely not necessary as the module has been installed # into the system by upgrade_module if it was available at all. # If it was already loaded, this will not be reached (see return right above). # If it could not be loaded from the system and neither found in the repository, # we simply want to have the normal error message, too! # #if ($local_file) { # # XXX load with fallback - is that right? # return _find_par_internals([$PAR_INC_LAST[-1]], @args); #} } } my $rv = _find_par_internals(\@PAR_INC, @args); return $rv if defined $rv or not @PriorityRepositoryObjects; # the repositories that are prefered over locally installed modules my $module = $args[1]; $module =~ s/\.pm$//; $module =~ s/\//::/g; foreach my $client (@PriorityRepositoryObjects) { my $local_file = $client->get_module($module, 0); # 1 == fallback if ($local_file) { # Not loaded as fallback (cf. PRIORITY) thus look at PAR_INC # instead of PAR_INC_LAST return _find_par_internals([$PAR_INC[-1]], @args); } } return(); } # This is the hook placed in @INC for loading PAR's # AFTER any other stuff in @INC # It also deals with loading from repositories as a # fallback-fallback ;) sub find_par_last { my @args = @_; # Try the local PAR files first my $rv = _find_par_internals(\@PAR_INC_LAST, @args); return $rv if defined $rv; # No repositories => return return $rv if not @RepositoryObjects; my $module = $args[1]; $module =~ s/\.pm$//; $module =~ s/\//::/g; foreach my $client (@RepositoryObjects) { my $local_file = $client->get_module($module, 1); # 1 == fallback if ($local_file) { # Loaded as fallback thus look at PAR_INC_LAST return _find_par_internals([$PAR_INC_LAST[-1]], @args); } } return $rv; } # This routine implements loading modules from PARs # both for loading PARs preferably or as fallback. # To distinguish the cases, the first parameter should # be a reference to the corresponding @PAR_INC* array. sub _find_par_internals { my ($INC_ARY, $self, $file, $member_only) = @_; my $scheme; foreach (@$INC_ARY ? @$INC_ARY : @INC) { my $path = $_; if ($] < 5.008001) { # reassemble from "perl -Ischeme://path" autosplitting $path = "$scheme:$path" if !@$INC_ARY and $path and $path =~ m!//! and $scheme and $scheme =~ /^\w+$/; $scheme = $path; } my $rv = unpar($path, $file, $member_only, 1) or next; $PAR_INC{$path}{$file} = 1; $INC{$file} = $LastTempFile if (lc($file) =~ /^(?!tk).*\.pm$/); return $rv; } return; } sub reload_libs { my @par_files = @_; @par_files = sort keys %LibCache unless @par_files; foreach my $par (@par_files) { my $inc_ref = $PAR_INC{$par} or next; delete $LibCache{$par}; delete $FileCache{$par}; foreach my $file (sort keys %$inc_ref) { delete $INC{$file}; require $file; } } } #sub find_zip_member { # my $file = pop; # # foreach my $zip (@LibCache) { # my $member = _first_member($zip, $file) or next; # return $member; # } # # return; #} sub read_file { my $file = pop; foreach my $zip (@LibCache) { my $member = _first_member($zip, $file) or next; return scalar $member->contents; } return; } sub par_handle { my $par = pop; return $LibCache{$par}; } my %escapes; sub unpar { my ($par, $file, $member_only, $allow_other_ext) = @_; return if not defined $par; my $zip = $LibCache{$par}; my @rv = $par; # a guard against (currently unimplemented) recursion return if $PAR::__unpar; local $PAR::__unpar = 1; unless ($zip) { # URL use case ==> download if ($par =~ m!^\w+://!) { require File::Spec; require LWP::Simple; # reflector support $par .= "pm=$file" if $par =~ /[?&;]/; # prepare cache directory $ENV{PAR_CACHE} ||= '_par'; mkdir $ENV{PAR_CACHE}, 0777; if (!-d $ENV{PAR_CACHE}) { $ENV{PAR_CACHE} = File::Spec->catdir(File::Spec->tmpdir, 'par'); mkdir $ENV{PAR_CACHE}, 0777; return unless -d $ENV{PAR_CACHE}; } # Munge URL into local file name # FIXME: This might result in unbelievably long file names! # I have run into the file/path length limitations of linux # with similar code in PAR::Repository::Client. # I suspect this is even worse on Win32. # -- Steffen my $file = $par; if (!%escapes) { $escapes{chr($_)} = sprintf("%%%02X", $_) for 0..255; } { use bytes; $file =~ s/([^\w\.])/$escapes{$1}/g; } $file = File::Spec->catfile( $ENV{PAR_CACHE}, $file); LWP::Simple::mirror( $par, $file ); return unless -e $file and -f _; $par = $file; } # Got the .par as a string. (reference to scalar, of course) elsif (ref($par) eq 'SCALAR') { my ($fh) = _tempfile(); print $fh $$par; $par = $fh; } # If the par is not a valid .par file name and we're being strict # about this, then also check whether "$par.par" exists elsif (!(($allow_other_ext or $par =~ /\.par\z/i) and -f $par)) { $par .= ".par"; return unless -f $par; } require Archive::Zip; $zip = Archive::Zip->new; my @file; if (!ref $par) { @file = $par; open my $fh, '<', $par; binmode($fh); $par = $fh; bless($par, 'IO::File'); } Archive::Zip::setErrorHandler(sub {}); my $rv = $zip->readFromFileHandle($par, @file); Archive::Zip::setErrorHandler(undef); return unless $rv == Archive::Zip::AZ_OK(); push @LibCache, $zip; $LibCache{$_[0]} = $zip; $FileCache{$_[0]} = _make_file_cache($zip); # only recursive case -- appears to be unused and unimplemented foreach my $member ( _cached_members_matching($zip, "^par/(?:$Config{version}/)?(?:$Config{archname}/)?" ) ) { next if $member->isDirectory; my $content = $member->contents(); next unless $content =~ /^PK\003\004/; push @rv, unpar(\$content, undef, undef, 1); } # extract all shlib dlls from the .par to $ENV{PAR_TEMP} # Intended to fix problem with Alien::wxWidgets/Wx... # NOTE auto/foo/foo.so|dll will get handled by the dynaloader # hook, so no need to pull it out here. # Allow this to be disabled so caller can do their own caching # via import({no_shlib_unpack => 1, file => foo.par}) if(not $unpar_options{no_shlib_unpack} and defined $ENV{PAR_TEMP}) { my @members = _cached_members_matching( $zip, qr#^shlib/$Config{archname}/.*\.\Q$Config{dlext}\E(?:\.|$)# ); foreach my $member (@members) { next if $member->isDirectory; my $member_name = $member->fileName; next unless $member_name =~ m{ \/([^/]+)$ }x or $member_name =~ m{ ^([^/]+)$ }; my $extract_name = $1; my $dest_name = File::Spec->catfile($ENV{PAR_TEMP}, $extract_name); # but don't extract it if we've already got one $member->extractToFileNamed($dest_name) unless(-e $dest_name); } } # Now push this path into usual library search paths my $separator = $Config{path_sep}; my $tempdir = $ENV{PAR_TEMP}; foreach my $key (qw( LD_LIBRARY_PATH LIB_PATH LIBRARY_PATH PATH DYLD_LIBRARY_PATH )) { if (defined $ENV{$key} and $ENV{$key} ne '') { # Check whether it's already in the path. If so, don't # append the PAR temp dir in order not to overflow the # maximum length for ENV vars. $ENV{$key} .= $separator . $tempdir unless grep { $_ eq $tempdir } split $separator, $ENV{$key}; } else { $ENV{$key} = $tempdir; } } } $LastAccessedPAR = $zip; return @rv unless defined $file; my $member = _first_member($zip, "lib/$file", "arch/$file", "$arch/$file", "$ver/$file", "$ver/$arch/$file", $file, ) or return; return $member if $member_only; my ($fh, $is_new); ($fh, $is_new, $LastTempFile) = _tempfile($member->crc32String . ".pm"); die "Bad Things Happened..." unless $fh; if ($is_new) { $member->extractToFileHandle($fh); seek ($fh, 0, 0); } return $fh; } sub _tempfile { my ($fh, $filename); if ($ENV{PAR_CLEAN} or !@_) { require File::Temp; if (defined &File::Temp::tempfile) { # under Win32, the file is created with O_TEMPORARY, # and will be deleted by the C runtime; having File::Temp # delete it has the only effect of giving ugly warnings ($fh, $filename) = File::Temp::tempfile( DIR => $PAR::SetupTemp::PARTemp, UNLINK => ($^O ne 'MSWin32' and $^O !~ /hpux/), ) or die "Cannot create temporary file: $!"; binmode($fh); return ($fh, 1, $filename); } } require File::Spec; # untainting tempfile path local $_ = File::Spec->catfile( $PAR::SetupTemp::PARTemp, $_[0] ); /^(.+)$/ and $filename = $1; if (-r $filename) { open $fh, '<', $filename or die $!; binmode($fh); return ($fh, 0, $filename); } open $fh, '+>', $filename or die $!; binmode($fh); return ($fh, 1, $filename); } # Given an Archive::Zip object, this generates a hash of # file_name_in_zip => file object # and returns a reference to that. # If we broke the encapsulation of A::Zip::Member and # accessed $member->{fileName} directly, that would be # *significantly* faster. sub _make_file_cache { my $zip = shift; if (not ref($zip)) { croak("_make_file_cache needs an Archive::Zip object as argument."); } my $cache = {}; foreach my $member ($zip->members) { $cache->{$member->fileName()} = $member; } return $cache; } # given an Archive::Zip object, this finds the cached hash # of Archive::Zip member names => members, # and returns all member objects whose file names match # a regexp # Without file caching, it just uses $zip->membersMatching sub _cached_members_matching { my $zip = shift; my $regex = shift; my $cache = $FileCache{$zip}; $cache = $FileCache{$zip} = _make_file_cache($zip) if not $cache; return map {$cache->{$_}} grep { $_ =~ $regex } keys %$cache; } # access named zip file member through cache. Fall # back to using Archive::Zip (slow) sub _cached_member_named { my $zip = shift; my $name = shift; my $cache = $FileCache{$zip}; $cache = $FileCache{$zip} = _make_file_cache($zip) if not $cache; return $cache->{$name}; } # Attempt to clean up the temporary directory if # --> We're running in clean mode # --> It's defined # --> It's an existing directory # --> It's empty END { if (exists $ENV{PAR_CLEAN} and $ENV{PAR_CLEAN} and exists $ENV{PAR_TEMP} and defined $ENV{PAR_TEMP} and -d $ENV{PAR_TEMP} ) { local($!); # paranoid: ignore potential errors without clobbering a global variable! rmdir($ENV{PAR_TEMP}); } } 1; __END__ #line 1249 FILEb8efc53a/PAR/Dist.pmyi#line 1 "/usr/share/perl5/PAR/Dist.pm" package PAR::Dist; use 5.006; use strict; require Exporter; use vars qw/$VERSION @ISA @EXPORT @EXPORT_OK $DEBUG/; $VERSION = '0.48'; # Change version in POD, too! @ISA = 'Exporter'; @EXPORT = qw/ blib_to_par install_par uninstall_par sign_par verify_par merge_par remove_man get_meta generate_blib_stub /; @EXPORT_OK = qw/ parse_dist_name contains_binaries /; $DEBUG = 0; use Carp qw/carp croak/; use File::Spec; #line 142 sub blib_to_par { @_ = (path => @_) if @_ == 1; my %args = @_; require Config; # don't use 'my $foo ... if ...' it creates a static variable! my $quiet = $args{quiet} || 0; my $dist; my $path = $args{path}; $dist = File::Spec->rel2abs($args{dist}) if $args{dist}; my $name = $args{name}; my $version = $args{version}; my $suffix = $args{suffix} || "$Config::Config{archname}-$Config::Config{version}.par"; my $cwd; if (defined $path) { require Cwd; $cwd = Cwd::cwd(); chdir $path; } _build_blib() unless -d "blib"; my @files; open MANIFEST, ">", File::Spec->catfile("blib", "MANIFEST") or die $!; open META, ">", File::Spec->catfile("blib", "META.yml") or die $!; require File::Find; File::Find::find( sub { next unless $File::Find::name; (-r && !-d) and push ( @files, substr($File::Find::name, 5) ); } , 'blib' ); print MANIFEST join( "\n", ' ', (sort @files), q( # ) ); close MANIFEST; # if MYMETA.yml exists, that takes precedence over META.yml my $meta_file_name = "META.yml"; my $mymeta_file_name = "MYMETA.yml"; $meta_file_name = -s $mymeta_file_name ? $mymeta_file_name : $meta_file_name; if (open(OLD_META, $meta_file_name)) { while () { if (/^distribution_type:/) { print META "distribution_type: par\n"; } else { print META $_; } if (/^name:\s+(.*)/) { $name ||= $1; $name =~ s/::/-/g; } elsif (/^version:\s+.*Module::Build::Version/) { while () { /^\s+original:\s+(.*)/ or next; $version ||= $1; last; } } elsif (/^version:\s+(.*)/) { $version ||= $1; } } close OLD_META; close META; } if ((!$name or !$version) and open(MAKEFILE, "Makefile")) { while () { if (/^DISTNAME\s+=\s+(.*)$/) { $name ||= $1; } elsif (/^VERSION\s+=\s+(.*)$/) { $version ||= $1; } } } if (not defined($name) or not defined($version)) { # could not determine name or version. Error. my $what; if (not defined $name) { $what = 'name'; $what .= ' and version' if not defined $version; } elsif (not defined $version) { $what = 'version'; } carp("I was unable to determine the $what of the PAR distribution. Please create a Makefile or META.yml file from which we can infer the information or just specify the missing information as an option to blib_to_par."); return(); } $name =~ s/\s+$//; $version =~ s/\s+$//; my $file = "$name-$version-$suffix"; unlink $file if -f $file; print META << "YAML" if fileno(META); name: $name version: $version build_requires: {} conflicts: {} dist_name: $file distribution_type: par dynamic_config: 0 generated_by: 'PAR::Dist version $PAR::Dist::VERSION' license: unknown YAML close META; mkdir('blib', 0777); chdir('blib'); require Cwd; my $zipoutfile = File::Spec->catfile(File::Spec->updir, $file); _zip(dist => $zipoutfile); chdir(File::Spec->updir); unlink File::Spec->catfile("blib", "MANIFEST"); unlink File::Spec->catfile("blib", "META.yml"); $dist ||= File::Spec->catfile($cwd, $file) if $cwd; if ($dist and $file ne $dist) { if ( File::Copy::copy($file, $dist) ) { unlink $file; } else { die "Cannot copy $file: $!"; } $file = $dist; } my $pathname = File::Spec->rel2abs($file); if ($^O eq 'MSWin32') { $pathname =~ s!\\!/!g; $pathname =~ s!:!|!g; }; print << "." if !$quiet; Successfully created binary distribution '$file'. Its contents are accessible in compliant browsers as: jar:file://$pathname!/MANIFEST . chdir $cwd if $cwd; return $file; } sub _build_blib { if (-e 'Build') { _system_wrapper($^X, "Build"); } elsif (-e 'Makefile') { _system_wrapper($Config::Config{make}); } elsif (-e 'Build.PL') { _system_wrapper($^X, "Build.PL"); _system_wrapper($^X, "Build"); } elsif (-e 'Makefile.PL') { _system_wrapper($^X, "Makefile.PL"); _system_wrapper($Config::Config{make}); } } #line 401 sub install_par { my %args = &_args; _install_or_uninstall(%args, action => 'install'); } #line 422 sub uninstall_par { my %args = &_args; _install_or_uninstall(%args, action => 'uninstall'); } sub _install_or_uninstall { my %args = &_args; my $name = $args{name}; my $action = $args{action}; my %ENV_copy = %ENV; $ENV{PERL_INSTALL_ROOT} = $args{prefix} if defined $args{prefix}; require Cwd; my $old_dir = Cwd::cwd(); my ($dist, $tmpdir) = _unzip_to_tmpdir( dist => $args{dist}, subdir => 'blib' ); if ( open (META, File::Spec->catfile('blib', 'META.yml')) ) { while () { next unless /^name:\s+(.*)/; $name = $1; $name =~ s/\s+$//; last; } close META; } return if not defined $name or $name eq ''; if (-d 'script') { require ExtUtils::MY; foreach my $file (glob("script/*")) { next unless -T $file; ExtUtils::MY->fixin($file); chmod(0555, $file); } } $name =~ s{::|-}{/}g; require ExtUtils::Install; if ($action eq 'install') { my $target = _installation_target( File::Spec->curdir, $name, \%args ); my $custom_targets = $args{custom_targets} || {}; $target->{$_} = $custom_targets->{$_} foreach keys %{$custom_targets}; my $uninstall_shadows = $args{uninstall_shadows}; my $verbose = $args{verbose}; ExtUtils::Install::install($target, $verbose, 0, $uninstall_shadows); } elsif ($action eq 'uninstall') { require Config; my $verbose = $args{verbose}; ExtUtils::Install::uninstall( $args{packlist_read}||"$Config::Config{installsitearch}/auto/$name/.packlist", $verbose ); } %ENV = %ENV_copy; chdir($old_dir); File::Path::rmtree([$tmpdir]); return 1; } # Returns the default installation target as used by # ExtUtils::Install::install(). First parameter should be the base # directory containing the blib/ we're installing from. # Second parameter should be the name of the distribution for the packlist # paths. Third parameter may be a hash reference with user defined keys for # the target hash. In fact, any contents that do not start with 'inst_' are # skipped. sub _installation_target { require Config; my $dir = shift; my $name = shift; my $user = shift || {}; # accepted sources (and user overrides) my %sources = ( inst_lib => File::Spec->catdir($dir,"blib","lib"), inst_archlib => File::Spec->catdir($dir,"blib","arch"), inst_bin => File::Spec->catdir($dir,'blib','bin'), inst_script => File::Spec->catdir($dir,'blib','script'), inst_man1dir => File::Spec->catdir($dir,'blib','man1'), inst_man3dir => File::Spec->catdir($dir,'blib','man3'), packlist_read => 'read', packlist_write => 'write', ); my $par_has_archlib = _directory_not_empty( $sources{inst_archlib} ); # default targets my $target = { read => $Config::Config{sitearchexp}."/auto/$name/.packlist", write => $Config::Config{installsitearch}."/auto/$name/.packlist", $sources{inst_lib} => ($par_has_archlib ? $Config::Config{installsitearch} : $Config::Config{installsitelib}), $sources{inst_archlib} => $Config::Config{installsitearch}, $sources{inst_bin} => $Config::Config{installbin} , $sources{inst_script} => $Config::Config{installscript}, $sources{inst_man1dir} => $Config::Config{installman1dir}, $sources{inst_man3dir} => $Config::Config{installman3dir}, }; # Included for future support for ${flavour}perl external lib installation # if ($Config::Config{flavour_perl}) { # my $ext = File::Spec->catdir($dir, 'blib', 'ext'); # # from => to # $sources{inst_external_lib} = File::Spec->catdir($ext, 'lib'); # $sources{inst_external_bin} = File::Spec->catdir($ext, 'bin'); # $sources{inst_external_include} = File::Spec->catdir($ext, 'include'); # $sources{inst_external_src} = File::Spec->catdir($ext, 'src'); # $target->{ $sources{inst_external_lib} } = $Config::Config{flavour_install_lib}; # $target->{ $sources{inst_external_bin} } = $Config::Config{flavour_install_bin}; # $target->{ $sources{inst_external_include} } = $Config::Config{flavour_install_include}; # $target->{ $sources{inst_external_src} } = $Config::Config{flavour_install_src}; # } # insert user overrides foreach my $key (keys %$user) { my $value = $user->{$key}; if (not defined $value and $key ne 'packlist_read' and $key ne 'packlist_write') { # undef means "remove" delete $target->{ $sources{$key} }; } elsif (exists $sources{$key}) { # overwrite stuff, don't let the user create new entries $target->{ $sources{$key} } = $value; } } # apply the automatic inst_lib => inst_archlib conversion again # if the user asks for it and there is an archlib in the .par if ($user->{auto_inst_lib_conversion} and $par_has_archlib) { $target->{inst_lib} = $target->{inst_archlib}; } return $target; } sub _directory_not_empty { require File::Find; my($dir) = @_; my $files = 0; File::Find::find(sub { return if $_ eq ".exists"; if (-f) { $File::Find::prune++; $files = 1; } }, $dir); return $files; } #line 589 sub sign_par { my %args = &_args; _verify_or_sign(%args, action => 'sign'); } #line 604 sub verify_par { my %args = &_args; $! = _verify_or_sign(%args, action => 'verify'); return ( $! == Module::Signature::SIGNATURE_OK() ); } #line 633 sub merge_par { my $base_par = shift; my @additional_pars = @_; require Cwd; require File::Copy; require File::Path; require File::Find; # parameter checking if (not defined $base_par) { croak "First argument to merge_par() must be the .par archive to modify."; } if (not -f $base_par or not -r _ or not -w _) { croak "'$base_par' is not a file or you do not have enough permissions to read and modify it."; } foreach (@additional_pars) { if (not -f $_ or not -r _) { croak "'$_' is not a file or you do not have enough permissions to read it."; } } # The unzipping will change directories. Remember old dir. my $old_cwd = Cwd::cwd(); # Unzip the base par to a temp. dir. (undef, my $base_dir) = _unzip_to_tmpdir( dist => $base_par, subdir => 'blib' ); my $blibdir = File::Spec->catdir($base_dir, 'blib'); # move the META.yml to the (main) temp. dir. my $main_meta_file = File::Spec->catfile($base_dir, 'META.yml'); File::Copy::move( File::Spec->catfile($blibdir, 'META.yml'), $main_meta_file ); # delete (incorrect) MANIFEST unlink File::Spec->catfile($blibdir, 'MANIFEST'); # extract additional pars and merge foreach my $par (@additional_pars) { # restore original directory because the par path # might have been relative! chdir($old_cwd); (undef, my $add_dir) = _unzip_to_tmpdir( dist => $par ); # merge the meta (at least the provides info) into the main meta.yml my $meta_file = File::Spec->catfile($add_dir, 'META.yml'); if (-f $meta_file) { _merge_meta($main_meta_file, $meta_file); } my @files; my @dirs; # I hate File::Find # And I hate writing portable code, too. File::Find::find( {wanted =>sub { my $file = $File::Find::name; push @files, $file if -f $file; push @dirs, $file if -d _; }}, $add_dir ); my ($vol, $subdir, undef) = File::Spec->splitpath( $add_dir, 1); my @dir = File::Spec->splitdir( $subdir ); # merge directory structure foreach my $dir (@dirs) { my ($v, $d, undef) = File::Spec->splitpath( $dir, 1 ); my @d = File::Spec->splitdir( $d ); shift @d foreach @dir; # remove tmp dir from path my $target = File::Spec->catdir( $blibdir, @d ); mkdir($target); } # merge files foreach my $file (@files) { my ($v, $d, $f) = File::Spec->splitpath( $file ); my @d = File::Spec->splitdir( $d ); shift @d foreach @dir; # remove tmp dir from path my $target = File::Spec->catfile( File::Spec->catdir( $blibdir, @d ), $f ); File::Copy::copy($file, $target) or die "Could not copy '$file' to '$target': $!"; } chdir($old_cwd); File::Path::rmtree([$add_dir]); } # delete (copied) MANIFEST and META.yml unlink File::Spec->catfile($blibdir, 'MANIFEST'); unlink File::Spec->catfile($blibdir, 'META.yml'); chdir($base_dir); my $resulting_par_file = Cwd::abs_path(blib_to_par(quiet => 1)); chdir($old_cwd); File::Copy::move($resulting_par_file, $base_par); File::Path::rmtree([$base_dir]); } sub _merge_meta { my $meta_orig_file = shift; my $meta_extra_file = shift; return() if not defined $meta_orig_file or not -f $meta_orig_file; return 1 if not defined $meta_extra_file or not -f $meta_extra_file; my $yaml_functions = _get_yaml_functions(); die "Cannot merge META.yml files without a YAML reader/writer" if !exists $yaml_functions->{LoadFile} or !exists $yaml_functions->{DumpFile}; my $orig_meta = $yaml_functions->{LoadFile}->($meta_orig_file); my $extra_meta = $yaml_functions->{LoadFile}->($meta_extra_file); # I seem to remember there was this incompatibility between the different # YAML implementations with regards to "document" handling: my $orig_tree = (ref($orig_meta) eq 'ARRAY' ? $orig_meta->[0] : $orig_meta); my $extra_tree = (ref($extra_meta) eq 'ARRAY' ? $extra_meta->[0] : $extra_meta); _merge_provides($orig_tree, $extra_tree); _merge_requires($orig_tree, $extra_tree); $yaml_functions->{DumpFile}->($meta_orig_file, $orig_meta); return 1; } # merge the two-level provides sections of META.yml sub _merge_provides { my $orig_hash = shift; my $extra_hash = shift; return() if not exists $extra_hash->{provides}; $orig_hash->{provides} ||= {}; my $orig_provides = $orig_hash->{provides}; my $extra_provides = $extra_hash->{provides}; # two level clone is enough wrt META spec 1.4 # overwrite the original provides since we're also overwriting the files. foreach my $module (keys %$extra_provides) { my $extra_mod_hash = $extra_provides->{$module}; my %mod_hash; $mod_hash{$_} = $extra_mod_hash->{$_} for keys %$extra_mod_hash; $orig_provides->{$module} = \%mod_hash; } } # merge the single-level requires-like sections of META.yml sub _merge_requires { my $orig_hash = shift; my $extra_hash = shift; foreach my $type (qw(requires build_requires configure_requires recommends)) { next if not exists $extra_hash->{$type}; $orig_hash->{$type} ||= {}; # one level clone is enough wrt META spec 1.4 foreach my $module (keys %{ $extra_hash->{$type} }) { # FIXME there should be a version comparison here, BUT how are we going to do that without a guaranteed version.pm? $orig_hash->{$type}{$module} = $extra_hash->{$type}{$module}; # assign version and module name } } } #line 822 sub remove_man { my %args = &_args; my $par = $args{dist}; require Cwd; require File::Copy; require File::Path; require File::Find; # parameter checking if (not defined $par) { croak "First argument to remove_man() must be the .par archive to modify."; } if (not -f $par or not -r _ or not -w _) { croak "'$par' is not a file or you do not have enough permissions to read and modify it."; } # The unzipping will change directories. Remember old dir. my $old_cwd = Cwd::cwd(); # Unzip the base par to a temp. dir. (undef, my $base_dir) = _unzip_to_tmpdir( dist => $par, subdir => 'blib' ); my $blibdir = File::Spec->catdir($base_dir, 'blib'); # move the META.yml to the (main) temp. dir. File::Copy::move( File::Spec->catfile($blibdir, 'META.yml'), File::Spec->catfile($base_dir, 'META.yml') ); # delete (incorrect) MANIFEST unlink File::Spec->catfile($blibdir, 'MANIFEST'); opendir DIRECTORY, 'blib' or die $!; my @dirs = grep { /^blib\/(?:man\d*|html)$/ } grep { -d $_ } map { File::Spec->catfile('blib', $_) } readdir DIRECTORY; close DIRECTORY; File::Path::rmtree(\@dirs); chdir($base_dir); my $resulting_par_file = Cwd::abs_path(blib_to_par()); chdir($old_cwd); File::Copy::move($resulting_par_file, $par); File::Path::rmtree([$base_dir]); } #line 888 sub get_meta { my %args = &_args; my $dist = $args{dist}; return undef if not defined $dist or not -r $dist; require Cwd; require File::Path; # The unzipping will change directories. Remember old dir. my $old_cwd = Cwd::cwd(); # Unzip the base par to a temp. dir. (undef, my $base_dir) = _unzip_to_tmpdir( dist => $dist, subdir => 'blib' ); my $blibdir = File::Spec->catdir($base_dir, 'blib'); my $meta = File::Spec->catfile($blibdir, 'META.yml'); if (not -r $meta) { return undef; } open FH, '<', $meta or die "Could not open file '$meta' for reading: $!"; local $/ = undef; my $meta_text = ; close FH; chdir($old_cwd); File::Path::rmtree([$base_dir]); return $meta_text; } sub _unzip { my %args = &_args; my $dist = $args{dist}; my $path = $args{path} || File::Spec->curdir; return unless -f $dist; # Try fast unzipping first if (eval { require Archive::Unzip::Burst; 1 }) { my $return = !Archive::Unzip::Burst::unzip($dist, $path); return if $return; # true return value == error (a la system call) } # Then slow unzipping if (eval { require Archive::Zip; 1 }) { my $zip = Archive::Zip->new; local %SIG; $SIG{__WARN__} = sub { print STDERR $_[0] unless $_[0] =~ /\bstat\b/ }; return unless $zip->read($dist) == Archive::Zip::AZ_OK() and $zip->extractTree('', "$path/") == Archive::Zip::AZ_OK(); } # Then fall back to the system else { undef $!; if (_system_wrapper(unzip => $dist, '-d', $path)) { die "Failed to unzip '$dist' to path '$path': Could neither load " . "Archive::Zip nor (successfully) run the system 'unzip' (unzip said: $!)"; } } return 1; } sub _zip { my %args = &_args; my $dist = $args{dist}; if (eval { require Archive::Zip; 1 }) { my $zip = Archive::Zip->new; $zip->addTree( File::Spec->curdir, '' ); $zip->writeToFileNamed( $dist ) == Archive::Zip::AZ_OK() or die $!; } else { undef $!; if (_system_wrapper(qw(zip -r), $dist, File::Spec->curdir)) { die "Failed to zip '" .File::Spec->curdir(). "' to '$dist': Could neither load " . "Archive::Zip nor (successfully) run the system 'zip' (zip said: $!)"; } } return 1; } # This sub munges the arguments to most of the PAR::Dist functions # into a hash. On the way, it downloads PAR archives as necessary, etc. sub _args { # default to the first .par in the CWD if (not @_) { @_ = (glob('*.par'))[0]; } # single argument => it's a distribution file name or URL @_ = (dist => @_) if @_ == 1; my %args = @_; $args{name} ||= $args{dist}; # If we are installing from an URL, we want to munge the # distribution name so that it is in form "Module-Name" if (defined $args{name}) { $args{name} =~ s/^\w+:\/\///; my @elems = parse_dist_name($args{name}); # @elems is name, version, arch, perlversion if (defined $elems[0]) { $args{name} = $elems[0]; } else { $args{name} =~ s/^.*\/([^\/]+)$/$1/; $args{name} =~ s/^([0-9A-Za-z_-]+)-\d+\..+$/$1/; } } # append suffix if there is none if ($args{dist} and not $args{dist} =~ /\.[a-zA-Z_][^.]*$/) { require Config; my $suffix = $args{suffix}; $suffix ||= "$Config::Config{archname}-$Config::Config{version}.par"; $args{dist} .= "-$suffix"; } # download if it's an URL if ($args{dist} and $args{dist} =~ m!^\w+://!) { $args{dist} = _fetch(dist => $args{dist}) } return %args; } # Download PAR archive, but only if necessary (mirror!) my %escapes; sub _fetch { my %args = @_; if ($args{dist} =~ s/^file:\/\///) { return $args{dist} if -e $args{dist}; return; } require LWP::Simple; $ENV{PAR_TEMP} ||= File::Spec->catdir(File::Spec->tmpdir, 'par'); mkdir $ENV{PAR_TEMP}, 0777; %escapes = map { chr($_) => sprintf("%%%02X", $_) } 0..255 unless %escapes; $args{dist} =~ s{^cpan://((([a-zA-Z])[a-zA-Z])[-_a-zA-Z]+)/} {http://www.cpan.org/modules/by-authors/id/\U$3/$2/$1\E/}; my $file = $args{dist}; $file =~ s/([^\w\.])/$escapes{$1}/g; $file = File::Spec->catfile( $ENV{PAR_TEMP}, $file); my $rc = LWP::Simple::mirror( $args{dist}, $file ); if (!LWP::Simple::is_success($rc) and $rc != 304) { die "Error $rc: ", LWP::Simple::status_message($rc), " ($args{dist})\n"; } return $file if -e $file; return; } sub _verify_or_sign { my %args = &_args; require File::Path; require Module::Signature; die "Module::Signature version 0.25 required" unless Module::Signature->VERSION >= 0.25; require Cwd; my $cwd = Cwd::cwd(); my $action = $args{action}; my ($dist, $tmpdir) = _unzip_to_tmpdir($args{dist}); $action ||= (-e 'SIGNATURE' ? 'verify' : 'sign'); if ($action eq 'sign') { open FH, '>SIGNATURE' unless -e 'SIGNATURE'; open FH, 'MANIFEST' or die $!; local $/; my $out = ; if ($out !~ /^SIGNATURE(?:\s|$)/m) { $out =~ s/^(?!\s)/SIGNATURE\n/m; open FH, '>MANIFEST' or die $!; print FH $out; } close FH; $args{overwrite} = 1 unless exists $args{overwrite}; $args{skip} = 0 unless exists $args{skip}; } my $rv = Module::Signature->can($action)->(%args); _zip(dist => $dist) if $action eq 'sign'; File::Path::rmtree([$tmpdir]); chdir($cwd); return $rv; } sub _unzip_to_tmpdir { my %args = &_args; require File::Temp; my $dist = File::Spec->rel2abs($args{dist}); my $tmpdirname = File::Spec->catdir(File::Spec->tmpdir, "parXXXXX"); my $tmpdir = File::Temp::mkdtemp($tmpdirname) or die "Could not create temporary directory from template '$tmpdirname': $!"; my $path = $tmpdir; $path = File::Spec->catdir($tmpdir, $args{subdir}) if defined $args{subdir}; _unzip(dist => $dist, path => $path); chdir $tmpdir; return ($dist, $tmpdir); } #line 1136 sub parse_dist_name { my $file = shift; return(undef, undef, undef, undef) if not defined $file; (undef, undef, $file) = File::Spec->splitpath($file); my $version = qr/v?(?:\d+(?:_\d+)?|\d*(?:\.\d+(?:_\d+)?)+)/; $file =~ s/\.(?:par|tar\.gz|tar)$//i; my @elem = split /-/, $file; my (@dn, $dv, @arch, $pv); while (@elem) { my $e = shift @elem; if ( $e =~ /^$version$/o and not(# if not next token also a version # (assumes an arch string doesnt start with a version...) @elem and $elem[0] =~ /^$version$/o ) ) { $dv = $e; last; } push @dn, $e; } my $dn; $dn = join('-', @dn) if @dn; if (not @elem) { return( $dn, $dv, undef, undef); } while (@elem) { my $e = shift @elem; if ($e =~ /^$version|any_version$/) { $pv = $e; last; } push @arch, $e; } my $arch; $arch = join('-', @arch) if @arch; return($dn, $dv, $arch, $pv); } #line 1212 sub generate_blib_stub { my %args = &_args; my $dist = $args{dist}; require Config; my $name = $args{name}; my $version = $args{version}; my $suffix = $args{suffix}; my ($parse_name, $parse_version, $archname, $perlversion) = parse_dist_name($dist); $name ||= $parse_name; $version ||= $parse_version; $suffix = "$archname-$perlversion" if (not defined $suffix or $suffix eq '') and $archname and $perlversion; $suffix ||= "$Config::Config{archname}-$Config::Config{version}"; if ( grep { not defined $_ } ($name, $version, $suffix) ) { warn "Could not determine distribution meta information from distribution name '$dist'"; return(); } $suffix =~ s/\.par$//; if (not -f 'META.yml') { open META, '>', 'META.yml' or die "Could not open META.yml file for writing: $!"; print META << "YAML" if fileno(META); name: $name version: $version build_requires: {} conflicts: {} dist_name: $name-$version-$suffix.par distribution_type: par dynamic_config: 0 generated_by: 'PAR::Dist version $PAR::Dist::VERSION' license: unknown YAML close META; } mkdir('blib'); mkdir(File::Spec->catdir('blib', 'lib')); mkdir(File::Spec->catdir('blib', 'script')); return 1; } #line 1280 sub contains_binaries { require File::Find; my %args = &_args; my $dist = $args{dist}; return undef if not defined $dist or not -r $dist; require Cwd; require File::Path; # The unzipping will change directories. Remember old dir. my $old_cwd = Cwd::cwd(); # Unzip the base par to a temp. dir. (undef, my $base_dir) = _unzip_to_tmpdir( dist => $dist, subdir => 'blib' ); my $blibdir = File::Spec->catdir($base_dir, 'blib'); my $archdir = File::Spec->catdir($blibdir, 'arch'); my $found = 0; File::Find::find( sub { $found++ if -f $_ and not /^\.exists$/; }, $archdir ); chdir($old_cwd); File::Path::rmtree([$base_dir]); return $found ? 1 : 0; } sub _system_wrapper { if ($DEBUG) { Carp::cluck("Running system call '@_' from:"); } return system(@_); } # stolen from Module::Install::Can # very much internal and subject to change or removal sub _MI_can_run { require ExtUtils::MakeMaker; my ($cmd) = @_; my $_cmd = $cmd; return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd)); for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') { my $abs = File::Spec->catfile($dir, $cmd); return $abs if (-x $abs or $abs = MM->maybe_command($abs)); } return; } # Tries to load any YAML reader writer I know of # returns nothing on failure or hash reference containing # a subset of Load, Dump, LoadFile, DumpFile # entries with sub references on success. sub _get_yaml_functions { # reasoning for the ranking here: # - XS is the de-facto standard nowadays. # - YAML.pm is slow and aging # - syck is fast and reasonably complete # - Tiny is only a very small subset # - Parse... is only a reader and only deals with the same subset as ::Tiny my @modules = qw(YAML::XS YAML YAML::Tiny YAML::Syck Parse::CPAN::Meta); my %yaml_functions; foreach my $module (@modules) { eval "require $module;"; if (!$@) { warn "PAR::Dist testers/debug info: Using '$module' as YAML implementation" if $DEBUG; foreach my $sub (qw(Load Dump LoadFile DumpFile)) { no strict 'refs'; my $subref = *{"${module}::$sub"}{CODE}; if (defined $subref and ref($subref) eq 'CODE') { $yaml_functions{$sub} = $subref; } } $yaml_functions{yaml_provider} = $module; last; } } # end foreach module candidates if (not keys %yaml_functions) { warn "Cannot find a working YAML reader/writer implementation. Tried to load all of '@modules'"; } return(\%yaml_functions); } sub _check_tools { my $tools = _get_yaml_functions(); if ($DEBUG) { foreach (qw/Load Dump LoadFile DumpFile/) { warn "No YAML support for $_ found.\n" if not defined $tools->{$_}; } } $tools->{zip} = undef; # A::Zip 1.28 was a broken release... if (eval {require Archive::Zip; 1;} and $Archive::Zip::VERSION ne '1.28') { warn "Using Archive::Zip as ZIP tool.\n" if $DEBUG; $tools->{zip} = 'Archive::Zip'; } elsif (_MI_can_run("zip") and _MI_can_run("unzip")) { warn "Using zip/unzip as ZIP tool.\n" if $DEBUG; $tools->{zip} = 'zip'; } else { warn "Found neither Archive::Zip (version != 1.28) nor ZIP/UNZIP as valid ZIP tools.\n" if $DEBUG; $tools->{zip} = undef; } return $tools; } 1; #line 1429 FILEa9ae78ee/PAR/Filter.pml#line 1 "/usr/share/perl5/PAR/Filter.pm" package PAR::Filter; use 5.006; use strict; use warnings; our $VERSION = '0.03'; #line 64 sub new { my $class = shift; require "PAR/Filter/$_.pm" foreach @_; bless(\@_, $class); } sub apply { my ($self, $ref, $name) = @_; my $filename = $name || '-e'; if (!ref $ref) { $name ||= $filename = $ref; local $/; open my $fh, $ref or die $!; binmode($fh); my $content = <$fh>; $ref = \$content; return $ref unless length($content); } "PAR::Filter::$_"->new->apply( $ref, $filename, $name ) foreach @$self; return $ref; } 1; #line 106 FILE#5552145b/PAR/Filter/PatchContent.pm#line 1 "/usr/share/perl5/PAR/Filter/PatchContent.pm" package PAR::Filter::PatchContent; use 5.006; use strict; use warnings; use base 'PAR::Filter'; #line 22 sub PATCH_CONTENT () { +{ map { ref($_) ? $_ : lc($_) } 'AutoLoader.pm' => [ '$is_dosish = ' => '$is_dosish = $^O eq \'cygwin\' || ', ], 'Pod/Usage.pm' => [ ' = $0' => ' = $ENV{PAR_0} || $0', ], # Some versions of Spreadsheet::ParseExcel have a weird non-POD construct =cmmt # that is used to comment out a block of code. perl treats it as POD and strips it. # Since it's not POD, POD parsers ignore it. # PAR::Filter::PodStrip only strips valid POD. Hence we remove it here. 'Spreadsheet/ParseExcel.pm' => [ qr/^=cmmt\s+.*?^=cut\s*/sm => '', ], 'SQL/Parser.pm' => [ 'my @dialects;' => 'require PAR; my @dialects = (); foreach my $member ( $PAR::LastAccessedPAR->members ) { next unless $member->fileName =~ m!\bSQL/Dialects/([^/]+)\.pm$!; push @dialects, $1; } ', ], 'Tk.pm' => [ 'foreach $dir (@INC)' => 'require PAR; if (my $member = PAR::unpar($0, $file, 1)) { $file =~ s![/\\\\]!_!g; return PAR::Heavy::_dl_extract($member,$file,$file); } if (my $member = PAR::unpar($0, my $name = $_[1], 1)) { $name =~ s![/\\\\]!_!g; return PAR::Heavy::_dl_extract($member,$name,$name); } foreach $dir (@INC)', ], 'Tk/Widget.pm' => [ 'if (defined($name=$INC{"$pkg.pm"}))' => 'if (defined($name=$INC{"$pkg.pm"}) and !ref($name) and $name !~ m!^/loader/!)', ], 'Win32/API/Type.pm' => [ 'INIT ' => '', ], 'Win32/SystemInfo.pm' => [ '$dll .= "cpuspd.dll";' => 'require PAR; $dll = "lib/Win32/cpuspd.dll"; if (my $member = PAR::unpar($0, $dll, 1)) { $dll = PAR::Heavy::_dl_extract($member,"cpuspd.dll","cpuspd.dll"); $dll =~ s!\\\\!/!g; } else { die $! }', ], 'XSLoader.pm' => [ 'goto retry unless $module and defined &dl_load_file;' => 'goto retry;', # XSLoader <= 0.10 'goto \&XSLoader::bootstrap_inherit unless $module and defined &dl_load_file;' => 'goto \&XSLoader::bootstrap_inherit;', # XSLoader >= 0.14 ], 'diagnostics.pm' => [ 'CONFIG: ' => 'CONFIG: if (0) ', 'if (eof(POD_DIAG)) ' => 'if (0 and eof(POD_DIAG)) ', 'close POD_DIAG' => '# close POD_DIAG', 'while () ' => 'require PAR; use Config; my @files = ( "lib/pod/perldiag.pod", "lib/Pod/perldiag.pod", "lib/pod/perldiag-$Config{version}.pod", "lib/Pod/perldiag-$Config{version}.pod", "lib/pods/perldiag.pod", "lib/pods/perldiag-$Config{version}.pod", ); my $contents; foreach my $file (@files) { $contents = PAR::read_file($file); last if defined $contents; } for(map "$_\\n\\n", split/(?:\\r?\\n){2,}/, $contents) ', ], 'utf8_heavy.pl' => [ '$list ||= eval { $caller->$type(); }' => '$list = eval { $caller->$type(); }', '|| croak("Can\'t find $encoding character property definition via $caller->$type or $file.pl")' => '|| croak("Can\'t find $encoding character property definition via $caller->$type or $file.pl") unless $list;' ], } }; sub apply { my ($class, $ref, $filename, $name) = @_; { use bytes; $$ref =~ s/^\xEF\xBB\xBF//; } # remove utf8 BOM my @rule = @{PATCH_CONTENT->{lc($name)}||[]} or return $$ref; while (my ($from, $to) = splice(@rule, 0, 2)) { if (ref($from) eq 'Regexp') { $$ref =~ s/$from/$to/g; } else { $$ref =~ s/\Q$from\E/$to/g; } } return $$ref; } 1; #line 157 FILE53581051/PAR/Filter/PodStrip.pm#line 1 "/usr/share/perl5/PAR/Filter/PodStrip.pm" package PAR::Filter::PodStrip; use 5.006; use strict; use warnings; use base 'PAR::Filter'; #line 22 sub apply { my ($class, $ref, $filename, $name) = @_; no warnings 'uninitialized'; my $data = ''; $data = $1 if $$ref =~ s/((?:^__DATA__\r?\n).*)//ms; my $line = 1; if ($$ref =~ /^=(?:head\d|pod|begin|item|over|for|back|end|cut)\b/) { $$ref = "\n$$ref"; $line--; } $$ref =~ s{( (.*?\n) (?:=(?:head\d|pod|begin|item|over|for|back|end)\b .*?\n) (?:=cut[\t ]*[\r\n]*?|\Z) (\r?\n)? )}{ my ($pre, $post) = ($2, $3); "$pre#line " . ( $line += ( () = ( $1 =~ /\n/g ) ) ) . $post; }gsex; $$ref =~ s{^=encoding\s+\S+\s*$}{\n}mg; $$ref = '#line 1 "' . ($filename) . "\"\n" . $$ref if length $filename; $$ref =~ s/^#line 1 (.*\n)(#!.*\n)/$2#line 2 $1/g; $$ref .= $data; } 1; #line 85 FILE1d07138f/PAR/Heavy.pm #line 1 "/usr/share/perl5/PAR/Heavy.pm" package PAR::Heavy; $PAR::Heavy::VERSION = '0.12'; #line 17 ######################################################################## # Dynamic inclusion of XS modules my ($bootstrap, $dl_findfile); # Caches for code references my ($cache_key); # The current file to find my $is_insensitive_fs = ( -s $0 and (-s lc($0) || -1) == (-s uc($0) || -1) and (-s lc($0) || -1) == -s $0 ); # Adds pre-hooks to Dynaloader's key methods sub _init_dynaloader { return if $bootstrap; return unless eval { require DynaLoader; DynaLoader::dl_findfile(); 1 }; $bootstrap = \&DynaLoader::bootstrap; $dl_findfile = \&DynaLoader::dl_findfile; local $^W; *{'DynaLoader::dl_expandspec'} = sub { return }; *{'DynaLoader::bootstrap'} = \&_bootstrap; *{'DynaLoader::dl_findfile'} = \&_dl_findfile; } # Return the cached location of .dll inside PAR first, if possible. sub _dl_findfile { return $FullCache{$cache_key} if exists $FullCache{$cache_key}; if ($is_insensitive_fs) { # We have a case-insensitive filesystem... my ($key) = grep { lc($_) eq lc($cache_key) } keys %FullCache; return $FullCache{$key} if defined $key; } return $dl_findfile->(@_); } # Find and extract .dll from PAR files for a given dynamic module. sub _bootstrap { my (@args) = @_; my ($module) = $args[0] or return; my @modparts = split(/::/, $module); my $modfname = $modparts[-1]; $modfname = &DynaLoader::mod2fname(\@modparts) if defined &DynaLoader::mod2fname; if (($^O eq 'NetWare') && (length($modfname) > 8)) { $modfname = substr($modfname, 0, 8); } my $modpname = join((($^O eq 'MacOS') ? ':' : '/'), @modparts); my $file = $cache_key = "auto/$modpname/$modfname.$DynaLoader::dl_dlext"; if ($FullCache{$file}) { # TODO: understand local $DynaLoader::do_expand = 1; return $bootstrap->(@args); } my $member; # First, try to find things in the peferentially loaded PARs: $member = PAR::_find_par_internals([@PAR::PAR_INC], undef, $file, 1) if defined &PAR::_find_par_internals; # If that failed to find the dll, let DynaLoader (try or) throw an error unless ($member) { my $filename = eval { $bootstrap->(@args) }; return $filename if not $@ and defined $filename; # Now try the fallback pars $member = PAR::_find_par_internals([@PAR::PAR_INC_LAST], undef, $file, 1) if defined &PAR::_find_par_internals; # If that fails, let dynaloader have another go JUST to throw an error # While this may seem wasteful, nothing really matters once we fail to # load shared libraries! unless ($member) { return $bootstrap->(@args); } } $FullCache{$file} = _dl_extract($member, $file); # Now extract all associated shared objs in the same auto/ dir # XXX: shouldn't this also set $FullCache{...} for those files? my $first = $member->fileName; my $path_pattern = $first; $path_pattern =~ s{[^/]*$}{}; if ($PAR::LastAccessedPAR) { foreach my $member ( $PAR::LastAccessedPAR->members ) { next if $member->isDirectory; my $name = $member->fileName; next if $name eq $first; next unless $name =~ m{^/?\Q$path_pattern\E\/[^/]*\.\Q$DynaLoader::dl_dlext\E[^/]*$}; $name =~ s{.*/}{}; _dl_extract($member, $file, $name); } } local $DynaLoader::do_expand = 1; return $bootstrap->(@args); } sub _dl_extract { my ($member, $file, $name) = @_; require File::Spec; require File::Temp; my ($fh, $filename); # fix borked tempdir from earlier versions if ($ENV{PAR_TEMP} and -e $ENV{PAR_TEMP} and !-d $ENV{PAR_TEMP}) { unlink($ENV{PAR_TEMP}); mkdir($ENV{PAR_TEMP}, 0755); } if ($ENV{PAR_CLEAN} and !$name) { ($fh, $filename) = File::Temp::tempfile( DIR => ($ENV{PAR_TEMP} || File::Spec->tmpdir), SUFFIX => ".$DynaLoader::dl_dlext", UNLINK => ($^O ne 'MSWin32' and $^O !~ /hpux/), ); ($filename) = $filename =~ /^([\x20-\xff]+)$/; } else { $filename = File::Spec->catfile( ($ENV{PAR_TEMP} || File::Spec->tmpdir), ($name || ($member->crc32String . ".$DynaLoader::dl_dlext")) ); ($filename) = $filename =~ /^([\x20-\xff]+)$/; open $fh, '>', $filename or die $! unless -r $filename and -e _ and -s _ == $member->uncompressedSize; } if ($fh) { binmode($fh); $member->extractToFileHandle($fh); close $fh; chmod 0755, $filename; } return $filename; } 1; #line 197 FILEad0c6a94/PAR/SetupProgname.pm#line 1 "/usr/share/perl5/PAR/SetupProgname.pm" package PAR::SetupProgname; $PAR::SetupProgname::VERSION = '1.002'; use 5.006; use strict; use warnings; use Config (); #line 26 # for PAR internal use only! our $Progname = $ENV{PAR_PROGNAME} || $0; # same code lives in PAR::Packer's par.pl! sub set_progname { require File::Spec; if (defined $ENV{PAR_PROGNAME} and $ENV{PAR_PROGNAME} =~ /(.+)/) { $Progname = $1; } $Progname = $0 if not defined $Progname; if (( () = File::Spec->splitdir($Progname) ) > 1 or !$ENV{PAR_PROGNAME}) { if (open my $fh, $Progname) { return if -s $fh; } if (-s "$Progname$Config::Config{_exe}") { $Progname .= $Config::Config{_exe}; return; } } foreach my $dir (split /\Q$Config::Config{path_sep}\E/, $ENV{PATH}) { next if exists $ENV{PAR_TEMP} and $dir eq $ENV{PAR_TEMP}; my $name = File::Spec->catfile($dir, "$Progname$Config::Config{_exe}"); if (-s $name) { $Progname = $name; last } $name = File::Spec->catfile($dir, "$Progname"); if (-s $name) { $Progname = $name; last } } } 1; __END__ #line 94 FILEcb613bc9/PAR/SetupTemp.pm #line 1 "/usr/share/perl5/PAR/SetupTemp.pm" package PAR::SetupTemp; $PAR::SetupTemp::VERSION = '1.002'; use 5.006; use strict; use warnings; use Fcntl ':mode'; use PAR::SetupProgname; #line 31 # for PAR internal use only! our $PARTemp; # The C version of this code appears in myldr/mktmpdir.c # This code also lives in PAR::Packer's par.pl as _set_par_temp! sub set_par_temp_env { PAR::SetupProgname::set_progname() unless defined $PAR::SetupProgname::Progname; if (defined $ENV{PAR_TEMP} and $ENV{PAR_TEMP} =~ /(.+)/) { $PARTemp = $1; return; } my $stmpdir = _get_par_user_tempdir(); die "unable to create cache directory" unless $stmpdir; require File::Spec; if (!$ENV{PAR_CLEAN} and my $mtime = (stat($PAR::SetupProgname::Progname))[9]) { my $ctx = _get_digester(); # Workaround for bug in Digest::SHA 5.38 and 5.39 my $sha_version = eval { $Digest::SHA::VERSION } || 0; if ($sha_version eq '5.38' or $sha_version eq '5.39') { $ctx->addfile($PAR::SetupProgname::Progname, "b") if ($ctx); } else { if ($ctx and open(my $fh, "<$PAR::SetupProgname::Progname")) { binmode($fh); $ctx->addfile($fh); close($fh); } } $stmpdir = File::Spec->catdir( $stmpdir, "cache-" . ( $ctx ? $ctx->hexdigest : $mtime ) ); } else { $ENV{PAR_CLEAN} = 1; $stmpdir = File::Spec->catdir($stmpdir, "temp-$$"); } $ENV{PAR_TEMP} = $stmpdir; mkdir $stmpdir, 0700; $PARTemp = $1 if defined $ENV{PAR_TEMP} and $ENV{PAR_TEMP} =~ /(.+)/; } # Find any digester # Used in PAR::Repository::Client! sub _get_digester { my $ctx = eval { require Digest::SHA; Digest::SHA->new(1) } || eval { require Digest::SHA1; Digest::SHA1->new } || eval { require Digest::MD5; Digest::MD5->new }; return $ctx; } # find the per-user temporary directory (eg /tmp/par-$USER) # Used in PAR::Repository::Client! sub _get_par_user_tempdir { my $username = _find_username(); my $temp_path; foreach my $path ( (map $ENV{$_}, qw( PAR_TMPDIR TMPDIR TEMPDIR TEMP TMP )), qw( C:\\TEMP /tmp . ) ) { next unless defined $path and -d $path and -w $path; $temp_path = File::Spec->catdir($path, "par-$username"); ($temp_path) = $temp_path =~ /^(.*)$/s; unless (mkdir($temp_path, 0700) || $!{EEXIST}) { warn "creation of private subdirectory $temp_path failed (errno=$!)"; return; } unless ($^O eq 'MSWin32') { my @st; unless (@st = lstat($temp_path)) { warn "stat of private subdirectory $temp_path failed (errno=$!)"; return; } if (!S_ISDIR($st[2]) || $st[4] != $< || ($st[2] & 0777) != 0700 ) { warn "private subdirectory $temp_path is unsafe (please remove it and retry your operation)"; return; } } last; } return $temp_path; } # tries hard to find out the name of the current user sub _find_username { my $username; my $pwuid; # does not work everywhere: eval {($pwuid) = getpwuid($>) if defined $>;}; if ( defined(&Win32::LoginName) ) { $username = &Win32::LoginName; } elsif (defined $pwuid) { $username = $pwuid; } else { $username = $ENV{USERNAME} || $ENV{USER} || 'SYSTEM'; } $username =~ s/\W/_/g; return $username; } 1; __END__ #line 183 PKhClib/PKhCscript/PKhCYwjMANIFESTsƒ_W/N6#dlj*a@IU !10 I _8DЃ@M&:M8*=WϙAN 'v8<0`El=ڧ-uÓ$.6$\ǩ/I!i-Mz%h*XUaI9;3ݫ!oK"ktR Zy䥵j7wm;qS{Pqӯd~-^tAO%tn}p>Bu) rPP[Sc;؍wao\Jz'yޑFfHLeۂse:?g:s,踍=._A+ߺMؾ ~PxWMea<}Apk׽Z^י`?L&ؙ43ەNV߸im["otof3S=$n*ńw|nEyLF]+rm'W'vڛ@.o; 횉w}] |@y:$3qp^ nGt?rQTґ%,NׅǞ  V_A?ܴtƢ ȳ|}ߑء~ζ;$hje-1!t=ļveu&S5_NT9D[-ǍvcZ9e2vD'ԩ.6Yi[7͚ G6]v 7d]FnO޻2ukhv[:miRtvU#_he(S-TۨUܗϔ8K5wxӗ*Iomȼw$Y䵚?Wl62۴bw$4qk;3|ILHMi3=߸sWtTzQ]fu[3qY'}=g;&idl,b@*ˊ4F]jv ϷK}4Hx/ <2*\Jd$IIilb咰!O5Ty*=죔ݏҝ$tO\槦(oey I$Tޣ %E&qXFRKc)4guݞVW::D'x|^il ^[ \f /"S 3I U)4CH 5Rtڐ]@(Ã^LwPƮ:(c*20SӔD*A@+~N4PCO"1攜*X5m&6-~ .9jrW~zb.u|Qb/9AypCt$Oja/0 [͠+0nyUQެydFZkƳ X} A<̼g3~m vmǼ|_}C76TF 6fnVj-SrlcTӤ8{Q-9>͢YMq9WšVå/9 {M|nk_rlcڧE^ba*uL?VIZ.1 ahϗ]\ۉ#ONbjCV0춳ȸvoK_rbYs]3Oύ8Y._AXsGZÈ_3N:W^ehOsϞ<)GhCW60ϭc 5h*6)a)*X Nzs1n^Q16x3(Ռ.pչ8e':6WviPi,,zk*Eʻ4%H4; 5e+iⰱUي]šU:z1;:˴Ip*סI 8Q8tLvOʱSY֍h*wv.<Cu*wtUFsUzuM?ޤ8WqX*k\_)MGpSoyj&*ժT6Q8KV{P=W!Γ0f2Տy O/:q>ћrU38% #Ќuͪ;0e\ϹV~{z  /ľ.FOͤfy}/ k UXmo=Es5ō<Lؑ*йO "!ҸF@Cz t $kM&o^rI]!gt%yPJR?J "B`a BW`BBBBBB`cA`oAAAAs}x qr:5|G`>R C s!Nm\ ֻfUndE[+nED B@0XY#bҶ∎ȩgYqȋ("VaC;"]ykHO^[a"8TV,+8#&ؑ_(aNwၪJe$IŪronEsR" V³f#h*.1@IAĐRq!@=d"kcℊbe0C@ @\@rێ؀ʔI@ɑb{g,%W`P)JEr11@  7)oq,rdP\fL}Ard/bxe %#QGSJJE-Hdb-pVF5Pu T;Dֱ |A9p XGg R' uPD1B\', FJ -0}FJl[]IT]1FSST*ƪ8b\#|TKwe`Ga\¼_r0LO)Ꮌ"_5Ev5~ s:Y`yH>D>$">AfҏڃyCUC"P' <(X7|91_-26u1QW(7X\>" =8[E4q#"(/bJHDb1'.$o8$l,;}'!t@C, ġq=F`=@j⤂<&pq.zÃ4D=Ԑ}>/bu# =#D>ŗ\Ⱥ2yyq}x43aRAD^3RI%-cZ@)ⷍ%$/krrBqL 1)mc I.Y~!uoa12M0@܅*NLQb nO'&n\1 wz py9fv9湃FCV@w} PCdR˛ -d2ddy41HCވ.@ C! `[Mm-G-G-G-Gx%l(ccc/#/# #/ ##/CK"/C@9+hWjW0 iF 3uMy~ 8Zwh7(GyMMQ*jRh kӯL#zpwzpz5s~ͤg}<bj%* `bHDqp[s%%+>$/74beōԂyB\PP{mRL v憆n憦|hsCˈ/ln8OmnY@~|ysC(csõBly75F`7Zq=5SE5F =׎+^ꌟp7tnјO]vY"]cYoEͰ Q"p*>Uir:T^IaK60e_=U $kM9A$PDbdI 5JVPLӌZ#0|sGb3#TVc/w $$FN|‘ҋ[Ԅ3+R( @(V_F=|VQ:* !T{$oğ(({`Z(H 1@$(Buh)\)B?Bm F֚n᳖'d@-!~+"}F˟!tuMx[dPA /#S¥G_HWŮ~/pC)Tm{_Jd'4G3J _Kq,@ 0Ƈ8kVjnLLo \n؞@W<@X0A@>:@(d=ӱ=~ETyzQ8MԱ/Ut4иn^{1_PKhC BjGlib/AutoLoader.pmXms9E33nqW7aIK$Wcĥe[H8-ilZ>QKn=zv*28xF WjyZdf*5mH~?:><Uy:/˓N-#x"a1+.,8jr[*}8/$wX㷗윛_܉\C,Z6g};eE9ﳃooZ"Q>PʁίD13,'"[r%"ӧ tT&,!DB& , 9ܰ4!؅p_<{}?Ǜ!(%|8b qyD "K>g']7H+X(>՘+~sA7^9FIMv{]bY`φG6RL,ln60LF0k04%i4) f0 INûAiH`g-%WJ*vΦ搰 K4O;3rXNd L2sɰ=@6.%uAJ$ W6!`|@CDU* ճY3avص%.9dͼ+*x:(di'*0^x҃a=7xd 9QE~1Ձ=_VX~ʋ3%٢z۰)4Pm=TSz.f (+5Wxp<40^<~uGKh;{tqԴG!m뜜Y<}:J/s%4-͍\8~c]WnUDx]3G@*(*Ju*}5>01ʴn!\C6\l|詫Sf e)Am+nk,P[\LA7@G皊,3tvw‚Z+JllM( 2M4hAVmX7Rnw`؂™JIR:riGng;Sl`=J:nOW:-UڎvԞ ]c?G*2R RV}qZii(4$RllW+lpo΀$qaۺh=tp#"IGξ"m[x[\qיu 5ZaY2 0]WR~L"x #xAw {b)1REYѱ}˻X jfXVi 1bc!ǞJOy-^E_=tм~b~^|T/"/n ЮAqkiUK? 9w_P*ys̑j1LQ@>LtC q$6Dib8ا#6A5tѧ5e=}裏MؓD?Gא.CcYq(dX?t<ޡ@HN*,z^WNOp0 > C|^yy{(ӿ w6f̈QzFSZ$]<0wN&(=fTkX\nR.][58ں  t6Z\_U+M hx}u8/rjzXUv<,#uMTm(\,uJuSzmꫜ/7%]i 6l!W\;K8v5a*X{߮%v5$/PF{F2S= A& q^@: ZP#F]$#S8ʌbMşͰ.XhHL8`L)}<06Rؾ<agbZ$d\X-J 0VzSh|jtF N?oS^a-?(EEke o ڶN L dAegi IgsWj|#M׏ ,=Eɉ C8v/ۛn{и~o)Ԉ{Vbڗ8ZZáwC2;T)iAհQ o4g[ۯ'Li>caVee7!'$(#%L @ãu  {5pB TD3Ś#:#=2tFe4b*Bf4M0(GuNt)2d?RI-U˕Xik1i7Qj$tc%pF5;ߵi}%L[:Nlt^eCIBB`lC i;OGM]mA~|gaο4|= hEf5lRR\sy^G%i cw<*!|x/Hq(w.H]4{m6qaC o_f[PZG[hig`eTHh/uIk$Bq;<𫐅$2/obp!ҽx)6a.Ryo9ӶEMdcA%@:K lcʌVJ }#g2.SyfO%ZLI_ Q$S&jr_&iYqJ}{QU+TSKȝGTgcؽ <k z[9z#zÓ5*u=!lZ|rz<߽g~eO(eRM}h*q_pЀ֎UEE yoH^P/PKhC8Ӓlib/B/Deparse.pmy[I8)BmIo0lv,ՅTZK*Jh|7Di0;8 fQ:΂0 t߳h4lWN,ɄH ?'WpOFEfqЅ ʲh2*$ xA{Ӱ1#gao{W#? J^odwo7Kxu+=|kk~yv. c9yEl}ݝһon0Λ[׻o_qv^mj4Zz< o//4xZP3SvV-_m8m۰j^5v2~ _hpn Rc[e^ES۶&# r[=.*V 6J{ X `0dCh!;CgsUX/GmB3L(uke898%'. 4!p0?[Z#o/鋺ii8 La &vj´aGi4+>Z5Ciov[zl~qʄEx;{`T|uа| sJ.nxU5-7 tU tFh6,@fyf$>~ :=azxZ2 |}_jl12DTm΀&r} `.1.luhLEW3! Nhe ^l1}ޫV'u2JccxMFYR5KfWH ).'R8%4]vUo>4Ofx֨!I8) [me+Oܧ竧@+BO(.ћ75[)5?hp$.MVٳ{܂K(rl(;h$fYa"Q{\x7sY<] ,…Pͩ>]1L~Av5>IFq߾(uށlON[x %ԄG'5ؓTl>Z#5N"t(Rk8rCN!~T>`&f6l:1rΒu6#-Ef5Osp,Q>&IPg2S9Ao:OX2?y.`*8Or.mED#<Dp?RcEvHg QD,tٳg5B+NO@6`C`eahTiÁj)>НiCf>kKk9FQhH9^fiR`T@n3x_!2u+"9)OEu#5D lHtDBqC)ML `* ǀus,>.^0Cy֓9iv_؏G&\z i1_sQ0td(t" g~rqВN`÷Ξ a4 ބ)pH9t/kd amVz;m"1A֨ -B~.ӑM"ۢd$0-$#F-XRZk{W,\[{5Of`Q"0s1ases24d\3*;Ao[3Š $DQ@M,Ԩ*CѠ‡r&V(99t$G4Di8ڼMFpaȲ_W-r ;2 5(?v/W`K%l8·7H6f-x6gIK=i nW\VuM#'8#Ƨod^g06Zs 6_߽mHk0\ ΢~(65AI s#m ': ~^ƫoاG 2+8g!n՟:}٭QYbxA1A+m_ +kb Iܙ-%@y:/:e i{3OǬ' o>-Ӈ2{{;|' ~H~R `d/$i$|vYR^)U)ٚnY\6ur;U%'^ A7*X@O'3I1\ƁfMjcF.9x0Tlf#6YhP-Y*qF d8  p2:aQKCC7EJx2O3!BԊu"iC`L8%iZ >FW"gWќ,\P1\iC`4ȔIǨh%U52)zw5.&=a&f0jԓ"reD7EHF"]ㇾgJrzK%־DDm&j*%My}n D0x ?@YY|ʺ]3{M"|:"e)T5^n)5kFe^xnN4ͨBTLycy̔bzJYQ 䗏$o[5,À LcF$y5%b9F?G}7l-30?Z1F/×%m/u 5LzftBϑ,ob op/II l2>tbq'8/:e@"lOj23=d:ٿ|*Y h4bL)T(JכlC"x"qUKI1?f w=Mm`C7FpF,0I*1xqBط6ۍv$u5?y$ɇԔp-j K<W /)EO/[ C~oq_H,YB"T/\LxQ1P8CR(X`֜*EP$ddΣ@. Z] 7Fhk S\t /IC}'S2~ӛ![!;:}{ vɈl۠^!ۖy(X[Nn, LI 9T;R)}XqjaL8e]jsN N;  W~v?|.HPW~t< bW~pzPuAwrd#xf)k;lc#xOQ7?FӓX}ϟF@QO-)oц~?8-4a;~_J1&*b;hX\,t 2!ˊ "8%"1q 퐸.& W\ Gy&HlpXꡉ+\ݿ,5#m@glFy t-AگoVTQ od@m ڬA8WZO_ov˰zM1kd7n52ۯz[ Dob|OX #88?zO[CJŭH[x# rY;S\j|5onnQqg3)ɒBUKՐbk2TەJJ|"\,5iӻlS UZOVM鹚7L)I@j kC0cx rQWK&HDN.XagvYNdQwEM_x`X7PLZAj55՚j7ΈmGZ}#-?qwH&X[!.OJ@wIή v@ Q2{|EI\awOmJA5ZQGY`t:T9_5&KU:tݭݿ>5:/u PTG7xK%:}}~c֣_jx_i Er|/;l6E:Gkkǧ^q=WqQ4 ~;VϏ Cm1uHϹ.@j TU?8s=>Sc0l8L?2sd bLP:ץ6=՚{-Y*m0F%?#-Śaڹ ·E(}x Y '6aA{`Q$B6v^k|Pkך MLATBS(qE[Ȣ&IҠ/$XW*񲩣-"*i1l{T,A[.O*ˇW"(z b (lbeM)ZPL]NoLFZϫ'J2p }Ϋnf[@*o|䅮b#<9N<]=%AZ]K==" ,46Pp!)^ˑhil\iv'ՓܖSJڵ4[ٮx>{Y aԜ-/todbFd8.6):cåY֔ZY dPKvAVoxӣ4Ɇ57b<=BՋ}~he[sάKhlGegyqWϼl!W+B~;$wMq'2xN~4J%]"FX=j S߬ri \gUc |B-\|YkWnloJ/Rr G8vzaD4*yC3t$YgnͲlҳvѺ9S5=R+U~cw!&Dcv7B|U:kmղ&S23FԒuE!.P#l60l2C [O_~h _ToƦ7p_t}5*O6_kͬfћ^AV$6#h-6A_|sLh7e^|n/P#.UF達vV6E,8kεcl$T #2Ɓ@cWظKtM`jd!! R/֒v_lH u.hz[>UKwםﲽ/7vܰ0%u Xzm AQ րAA{N@]FP`E/ " <$͸\"g :W .bJNaXnE RVG>8hiҠVGٸq@az̺̲9̉6ԦۅXda;q7H)E&Db#{,`9֠YNzR֜FGkXo?jt5K.9[޴JjԚ$DUT4oֆt)B2rH]!(K jT[G![-EtMOЩHPq,'yZ):mRg>`G :nv(O݋֠ۊmyFgpg-؜QLL)|4H!4N$IT'\uI©ej<:Ѿ@)Q&^8,d {-lZ XPaZR!Pׯ `p)J\S qϣILQFکgs8hNyh8˙&">`]Hu|/{MaQ݌@L56@X?TWj6&$c?}7IYivr8:$SKow2U1ngV˖RvЁ\W+N||Szp:'=4V8 x]?/zJ6QT~~#xA;ۇ^1Bs@Z)c-qޢoq 6) %3CMZfcd?'*[s-{ |Vb&SGq ! h9\=o-XPStM"5آ8Sȶ=ѯ,L%0P[j[@REz䚪}H &Q|L=ho;E>r1rݽj]&f;]5p<BLïS (uklSc5@&5:a WY6U ?[Zy|4suCB-Gʇ` XrzJt͏Fj+hhTo*LG.G/+W*2ST[| +Z9'ԔHUjz6U(%r"*&jP{'ŕ"v[CNCiqF GojuEjCr~sj?Dz\"ZP75ptWTM **+ᛶ/0@~M+ݽi-gR]Wd_*77%툻c)zGFdL#!9"Br3`3߷oۇzA-f:/L3i$WE3w(Ӱ#.K fj[ւCҪnwqoūu&N%m? &;+@Ã5&!Oy͉*SjgknH_R✊ L{v}xO mŅȨ~׎:7`Lt eywxiHb> Y} زG%5kƋH/?5m5 BE hnqq'cR,LuhE `)ܑnҀ?{aN"e>Svx[$Y)xeX Cַ0t9l*JB6=S* T!zwe#>}7yH^+4u$8!>!]SF0m51Ҡ&<<A]EOiz%;ENr@nͺA;+?bºl1R:M%ŝ=ja10WGgJV"wx{H ۢlY²}̙vl9;>]p`cEmm؉U6ۘ,'i' c.hjyN۟S-wZl=|vPѬܰ8kES37"0Rғ!yH7`|UG TGdXI H&|Gt AShy Z- -M3G钁Rly7,-.c7LX;̨:-Mvz#UĄ֩W+ i* 3tUBQ*`OƝDJ?!u /h2)EaAG>ŨҨl9j\uS^p17LzYVYf *Ȱ>!#zqB(R#G-&WQ7UV'g(bzxuq@Wq<3h3'nZCK6W_gq,DF-$K{B~|l"}qˍFJf1:9a[71]>=0[p 4m(F8"4rkSyUuѡ(2}(CiʦDNŕIe'Q?-Qx:R1e.#%9JF }FrGkQr]<~ *oЦP~߶w^V<XF^8 @q^2iv ѐYp5hU̝/8|e&rqόym#lS8h oWǙnr,kÞ]Ey5lpc zkFU?/_X[[X[*k!TRg$mzt/̇6vf ;! %:C d ATzT(AF#.Җ+: J( VYNVpqe,kQT(i0X'a`v䕷JSɒZ_VN7rC#[+6k'{I*YazMʺQQ8vegb zεxHxiuWo@X{'W֏i:!ʰ  :j$ M NR X" }6ơPV&\H5wÑ7GuID]WV*3E* `}0.J' π~;UM+w>Z_uf>ɬOd=)_Z8 ^9{wZwK3q̌O䮰^o>?l-0^a*ΛߚAɷ_P!hc#I>00\)Al-;^+J"ާ\mYzd`]c`Ώ2t32AE@*TBfx|Žm#^z1~%iOhcVm 6>tc2w$Loa杔f~%1$ܻªɁG>KI4WEVUv<2aՈn)ZRffٲm9\ouz/P 偁 J;[Ce1Y4kq$չ<<Ɠ,Jm$J: $fZ)ο}/Qî[}!&,M53R0^C.YO|āavTm-vh|bP9\ơFK- '=HSCVO<*EvoW).Xbג@/8tgx?YhX%"sy(3ڼY9Rr9jg1$LKiή]D-}.ZK$]/m6Vw4+)-\_guyӡu9ږ T1xQdܞ/}Hnə<|)-9i?}yr*o@)/iWy~}D7N x}ss|SA;|(/5B^[Mnrse!f):MĮ-DIN`V1 DP,U}6~]HEI؎7,)Iirv~y=ZN._ϧTj6OjM\a &Oj`iJ:%k56"_zEOD}AfŞzS7FOZu:*($Q>Og @ArSV庆0D?J~,cwRߡg `? WI p+YH! 9>3_䮱ْAc)6Ǥ /W^*ə ?cn$aЀ(ȟ6'RAr\" 3-WAƫ`!aVmHD]5zÿ"e.}AZE0-<`5X,]^GlsX84}ȵuQqɠQa6稤\稸]Ed\xY`VbW}Ӵi*v. "@h:SqE݃ۿS6`߁ j?" V a#Jžm) f>Q5 /ρJT Py+k_~1AUtC%,!/[bkE[>uQj{`"Gg@APWɃ$a[fVsd nr i6B *DKȭ 4MGݥldK,,q\S\ bG= N_5X% G%v%]80\__Y6E%ģX'|U' ,pf1qI=$ܞDBc7%Jⶣ}eR<*wlv#Է(!Goq8CJ.j g2E<)'Ln!U*O`[hLia"tPC`F eՉ$C]kВ3:\rO񜞝\m\WX =D'ZPim%f.-$fFa6yS>=M QvF.k?K Γw7Hav>3hѡb8K5]T64>'OûKRn"Cf^Xu33 SMIjNjjTIƚ(J2m㼰yf2Inui4=Ssun:^: J @tϓn׊W- yHdba%O}a7˹٣lv{PՒ8#@X=McRA |Qi@F<h85c]߳n2M:K@7Uf%ü! dFq?*{Np׸jLPϝu*1WdM%t./J) ʯ-> 6sL^^loinOY&tQhm)t1632{Z=X(,}ԹF9ίd.-d񃣛l*d)߃05yIOD{!z. c FQ4WDĜdð˧)=&]_W7QҬW>b>ToJEݺ1zivsiwJs  W`xY9Q071 0t+:Jgx2!Q;zy|]ḧ_A>1Zv-/%sNinr!UR8΃@HD 8!NQb*!l"D=X2GNk72ؽ!k[[ԽV=|C$7v?En u yr B64C{ s4rꁜ.}.lvwH @ٍu@^^/o_ooypFV v68PdFPAC`7uI+߇Q4 YI+'XIGֺzdjR~)Hˏȇ[OY8')6KS$5ME:wIgEp`M2w䡙o6nPOXҸRRԄ]h J-RO2 Fm9(|d~&ύn#h>"ڗ9f*oi%kY,Ӳ"??TWnqV3^\S6ŕ)9wmq XUux[uv\2r.k[R;)qOQ?cՒʗ#W[cJ1c-~h]9̅V{{Os^O7|$1܁yw5À; 9}Î0Co&O2(}4;C?-:r Gyܸ ?nDPo0nMw|v.|qV`,9f`rޟj*7se#k%ÖJ){sd'+L>\!"TuqD8 8`4F}~iPn48 ̢I'aڤc}=~448PyPm}Mǿ_渌tP=!Gm `{B>%mً(Nڌ,hpy#{wyYᜩcx+'CJ~.HHjK9y&v]ry'{AJk[d|,a=#U -u-?+Wydb/ek2"xb.Rw:~v[$ Gq$Aj.~T6=9!RijAdȈBt8t,(y*/S Ʌ(}`F22/ tW C4.+2=sL7-J8e u7PGQa|oܔh's leoΈz D'+- ڢ:g˪H'T oУd|VW hXOޑ;b݂Y@Rw"cZH+GÒQY0(: k TXbttJ >U>.bB`~1z4V錖I*Z PQbD l[2 ?NX]k%H3G$"'W.} w%%7/2B13ozO(W結. !߯,뵸^XӆյLG)R \\ d$8vwq@9֗I:f%g,AwxZØ^MKmqM9W.:!@>n[ZGw0 $/ƌ &G̹$ 5bM#%QB::[$=/^!0ctIzq z%^QDoBn`HW & ,,hWJ=@AR;Ia䆮<7%d6@qQI-:CwMST!ZHܫG"'^b2w:|tR=8.t>=(`\F(s7)vpdILw/>}x\@EN*{6EW>z+\1k=E1k>՚ARkreAIM$A5KOs숊Lu@ cD$L# B/7@@欻<(Wu\@_Usfk.mQ\~urk}Ԯ' 5 c^!8k5֮W+ˢ/cR9x6@QsbVlLyPm…ٛLo_gc<~SҘ g> V=t. 6FO1N3E>hH:VQ ïg&^2.Sl+uT Яv~g L9SSbJN8 1$GYO*΢N~1ȩbhW9VĔ +%Pl$gi)]}I (O8SͲPtÑc)ЃVȪ. e\i QG/paR D%U_׌>&+/_CGS8jU`%krPخ6TI;b`*Fnpk_I1FJ¶EȰw] >a4Qcjn"5a!LVV\\9Nua~UmGECME~@с`)xVɢE}^^;%.e8tkl^>KAs:D~'۴P݈# HNj0[)2y,ݏ}1siGkk nWoq ҭ)nBVkY}v$ȹn %ܬ丌|(KBQ 1dK1-qrUvJFVJ]6OgWFG3#7F chh1h&T3!g5d@lEJH\kƄɢg?eݔU`a p,@ ujIPfxYj^@7+HÉ$5,"npLocg cuѶYY߃̕3g ٕ@-T"pC_an ;b YTwrraJWpϊMaq,P ZဪObLM-.iצJdWL;;5c82q s=(~8Z醽~"p"> |eF u~Q49)n筒w,7lS`^Vw'OQ&BpAƿt@%1v׼1j1pJ ) Xǜ2p42j2_ca ;mnfdվ(^:FTSIHQEe&KHI2eO],Λ,@Rxxu z[eXP/jzIPJ|l${dhHz4@ K+EONZ8Bta]Em +JwC V5z9<慨t;Qb*Hj}zJm[E*`Zwzpwݭso'[4kgs>%xh֦9`l~gK;;jՉ)r'zj7튊 a8ȗsa?kkmת0j'uVKRU*&R?l+Uu\1WoQ]ohv޿}[CkK^ta:WOKM;S,Dj)T^PTN$rgH ]+ZزY1{%׏^tǍ_ƺv)T+ZKbORn>@~'+"V^F)0cD֫d>8wzE b#f;ll ^d\lַR>i9_+f/#RIsqO9IpPgi%1)ҦNE5Ҥ2OTfh\ih9@FKALU>#<T?A9JKt@iӨ8E 'xILY^sAojR6R"[Q9W#H BydQv8p7>bG ߸׆΁?+qJK9r߿kե#kz ^Tx{na2CH^`~i5}]-//57qb!\Rg%(Jyc̋D̗>4 .bTbeu٭?GxYy,qW{h(5"2K7|Vm-{``_?zFQO!J~2Szk\i68Jn6~GdlˣOLm&Y]&?Ec Þͱn-ɲK¯w%(5 ;횬$arf6(zϯ eۼbA`,QtnMiQxvz|dHRLP~e] %FE~ gO(D[B m-T؂]#8D_z^^s;2 4"!-6ZaɄ!s#`}UrӹV,F5 ``,"hePČH=vDo3Y'2&xXS/pKa|lH:ߎjy >|SS6N~Ji@rp~*TS@OQ}WS8x/aag.ԯ~WF,{ђ]*(\4\: D%(7U1؝a@M?&4Bfc((D Øi2 1[(9ܤ@ -Q[va8#E>2 g+7bƷY4kA$e997MB`g p2Y.+uȪ$~ &MG a1%PqB vK(V~VY-!n5Z[x//QdyR5sC(1f7;)zQۨ c`HJhJ `I7|8%hG_Џ1`,DtS 9$րYIS_uS 7v 4f0DJq6Dl|:M2|6IG'vm3l;^}lxղ6 agJ\ƅǿ8"O\[ſn_]>>, ZOP9, oQ ւJi%'Q7v%JSk],٭>&$4tKgŻōbenppe`Do^I&s2?5C!k KA~w!)SZ+6Qqn n*# n5X]B6FJ=7:%"3ܮAl+p@*-s`BX1#&G8e*)./G!r1SWL70MZ!B7-+;K:R@E:rBmX/'8);\}:0~.a6t"rr4}K_ "C}I_BGw営=`s:t@Gw)L8m"2\QV^N1mN(͝[o7]^IÇ>Q^N=؊D$33uLHfH98?jQA%'0!(X.˄eu  W(Ƞ+ICqIT,8sLRPeNEv#="e8wt@ 3ʖCcȎ9gW F)ިuP|-re2lZ vWm+e*(d")n2JA-WHe}s31⥠&ILdHEp/{|o)T=/J 3nw$N cHmpT^:c"Vbe wckz3"N[;V5z4(jN? MR0?j2[q'I WmkLзcLE =P{t*Әɳ/i4]Lc> xК')R*TqһA2L̐khPYd^/b86wr4| [Oy"nD먕(nOb:x˨1*4$7UĊ !ы-sXkk+am ߉-KZ9QH]1*=3)b5$*yN5m. brNR%y1 u~zA4ONP5BI)"$cUuNO4Y픤pd- DA$P|9 3`~~&8MN0d0\QYljif'F7Ǎ?Ǐ_5+0 Qvuy;vԟǏǟ+=#۸E=o$bJSn;Bd/4t^rʸVNrꅱ%;~ _C*A BݓydUڑB^'Y>ZA%>=؜n3Ngz'lHl^=Z+) ɉ\##?|$YU5j>jɡU=- (wa!j]*͛quE=1&N;ȎtN9[s4vFЂYKoC rs ΊD謎f9Eece]!>{>OA#ظ?ӁD;u[ϵf:(ExQ_;WŐAX+/-;4I Q PZ#듾b&J+JCc֦,Sfv=^Wlh1Z7G4J2Q59 <俾}P܅jwB,(߽w{[bz0꾧\d]<3,ob=?m;<@n[w{p7MMqTWBN[O_~ Wa1sjb,ɟn9u?0*z=[+(_IfYZp /,U7:DCqOjr)2>[@BKS>rD. Gك_# P9i**q%G:8bt4^ȩQڂT>Q.R[ިշmR]D?F[gyMXMe[4`dsErhapgIhD>j0JfDHQaŕPkOvyx*R9?ܐJhV|m!S=0jJäg`S2@d0'm-WDkS ܳ@ rpC{(ua.!"`ZR(1+KȢ%)T㔊9x_AI9G]|[l2tUD%y|2r&v/w޼}vmm d-)%KP4g3bbI?@* Wp#"[#q[G}SÁ!ӚWr;1G(>&w:c/T-F-JfZspL&e9:J}f3TQ!^SU9=҉Iz㔝Ezme- 4d`O_ "X# O[c'LBŕ!̳0 xs3Ǜ1himH9fo>7nG:'QSy4?zFR]vvP[d #ρG*f[-f=8lVEigߡ2sWջ(`aӊy7,N5lݫ¥:SZr}s,EǑ5itpxD4.5FٳiHڵv `Yut$E'4-^oup\ RP]>VIG=@aYu Lߺg]M}vvׇϟjÁ6߽&/pʸwqs"Ve׼+D{Ws=ɊDحy 2?'X|2h;]`DD |#BrĬA _)ipp^XMMR;Zr㋶n 97(H[Ox'֋_RU!n9/&ڮLMuԅ/T *|iR-UeV7U**VV UZoU[*|gpWZ{p**U Ux`C*|o~PToVwV TQvn|\h gg!f!Nݮ\c {i&'on_tR4Уfz^v/DNiJ':tNʗ_I2DrË.}30ۜ@<|Âr|J7[]d7:Qhcokt o2*mX/o߲K;-MBVՃ;N< va~UeO+J0Hؐjq"wn~yC8"&^$`6$Y&!F#WM֙%]qHd8US8= #L*.j7|cv`ߑURR lA.p3՟m{@\Φ0AӴڰu +{?J0QucbwDD=< !Հ׎kV_)z ԎEgC4E); 5(I>C~PN#䊁E/V8+$cYwL2lV~|Ǯ>$ި74ҨWF$6P/[5&6'ƲIɭO\cRSXV1C Nq1Bza8ͤF ;?b 18ɀb)?S%5}MQ@LOX"d\מV܀C:fP?K57'H\(к :cԽzAAԿڃ(KBw9>{`;M=$Zbi2/q#F0oL6wƣQrZ_mt Fpc0͜‚}sr)Ւ,βFazu 2`Srd_%h@ZG;4{7"ɛ\}'ۀHczjma.ut<ӊqcJ6Ye7 VM"&Ag#X]79O #%_n1_i7 Ӄi*E͋+rsve~txH05jcDJ{mE1{, >?̞ۏYo-pJgnu,YWS(ߢO wO?Ljk_A__sqأpTY&ľ(}رz19W >Xh|5%:4bzfAz%.Y zЅ^vezF)7>UlAEniGU?!;;bmhA1η~:}E.4pp/$Ĉ1;źViC1h5U<#Nign0 ݢ0sKT➝=$nOSMAրT*crOr/61r)Mqo*AHܧ%dWʺ5ȂW(krSd:pɾ׊79!_*N">cu75piJzHQg)=C~c&GݫU$e^P˴]`^LrdycC4:&CPC y6S FIcQֵqNFCԫ]^ZɀJő5QY\")M bfúyVtF$w]K -*%X/U=!C%OH6'5\GfhbU8 ^џ:l7&z^;V!7O4` bz]M_0.aY]wJ* G?UP3jZ 75_<ϓXwo͖G@:;Wȑn$= As$K*h,-Sc;3'QUUՔӹmq71qQhm%[iz%`2s5K*?7t74s\*J3V}sf! \ Vfo66>'oښ8ج|׭hy*Hx479jw XIc!-';J8_FG!ʄ$9 ? oݵ5D5 vtǽg MgF+/\ǍNz i~D12ծEٽuFu1vLYݽ}o[wݪ8}poGEG#֍Y>EAT@0#qU^5."p& xgV !b_ǛgO#̪ pN˜7pkk3 S9K4Z@\(jae p=eKJVN-3~>*x +\;lWƊZh4!OiEfD2ƐL&кPz: m\yuv: T~oI?As.--56/WvB[FgP_=o,i7{B ÓQ;/h_sD)u;W ो92k:ݯֆz{ SlɃY ZjY ~biԏÑstxicGrP|8{[quב@E p34"546x\ba[U]M@ڪIoI`ߠ{K+-syO ^ j ')W nwd&tg'>dtCG>ptCвd/5<$}dhpA9TzkgkԸ FzIX;% V#%KM=P.܋h9}@RVC M'c??'yPQ^tpUVLUu`$U11MTd1Jh5{E2 x}c)1cjK=u8l>f)N&wr5MHi7y >6 _*Q\,_,cw*oS]SQQVLoM/UMUYK5u]Yrzs{nֻ-ʅBa]77J.u؞f A!h}aoWCQUў˫[[񹄈&SljI@CIR;Q.w#\E:hD3CC}8 3/0y1 @f&|8)t׺|[i=ݦjPNP<ӵ+;;[l>Rb*WRu8[_v'd=Ðr\q{26:ڱ7eX(EP)CC9F d׹iUZokmC皴)h>#!=| mQ ;'/mIXh1Q5>F]jzZּsg;Pbjn};ٶ %~ TΘiIy^͇Nd^\=^1876& ;Jչ]u'El[6g#6`vvcaUMj8 '@TQ }l=VuWf iܔ]ȶá%Űt>(si |F*5FpO%)s}\mB o+Ǟ=qw FwAQrpռ8_?+"wR|,i#[3t=WAհDRLB\v=**ԑ5Pw` kPwB֤zwR)&\>zd j304MINii:e=γE<> }P9V<=+[yƟӧYh7_ᱶS=lWi,z9cp4 C)v'$zRbJ_*s]x c* N tU)*LlQxyl-m™ mhT?Ի[*eW sU^ڝyp n/z[f]'Ym1 FͪC(r4u' < pii-vF[wv 7sH% n1=%V ~jwk{;._gwNn߱pƝV]l8-n1O#96at ɴrrXTFy?\jgzZG:[{=vXϮU̠5E;v3NpM Gvf(n*=SJ+LHN`L7{o{T̺sn[ex'H\~^Ԉ=7mfek-BzwMQOG'r}?Lo.7|/C۔nڊƇgDJ޳0|vu~@f ]tQWE;6M ޔnAP>xn EM-QaQc6iZVl4:EYwuiаdTJ/ܱ|z5.ߊ{WQ".5hkvAHm?l4O.SDOsX%t.<6Y؞{4ݼq,fGSiC,FPmJI )UrZls6RQD%q0fir"EYw0*p^\s{t|D%+G01lUS?I&N711cGݦ_ `De EƑ%}Ae1 T8KνdU&Uw8pS4$"e<,t7dr?)QTeyR3;Pcաw[;GFzNdЛ%A4T8 3_37łˈ샥t*uWQ/Ǽk-?Gl):;f ! qb͐iTG< R&ryW:˅7!WKq7"hԫ71t+&#WazjY:] Ry? dg^+0ǘ!el,*E!PZ"gqzp+\l|:忂zßؙ }\3$D 掤bȗl=NRw.>ک+Kj]xkw[1FCz8Ar/[Li4IBX'dgy3 QOtA!ٜ%>$ 3K @o NiV( v/`!, U7 x MW"*\D@ŵ^y.6u?Qpz!?wׯyc_/3?8`*#kVMl RXQ(kkoī[2hU&ABEpĨ]9 (詬s:! 1Ĵd5OYx_RV3yY `CA.S3t|]o,7%e#: ^KT*%Zw8 +mىTmd c7q_~epMx:3`w>ÝåSq斾\<JS"+yUBP)~,܁<Cd2hYBy2 T\ޒvXή >]1Ai8DPqⱏ `]GĄ1*+RpAbt&)R;GE'@q[@3w"]XITIc%FN.-RhQE\T,q$Hн""=X@ai=0 A~BC 5O4P" ~@1UT%&`O_&})A5b#׉%2Um“vj(ewL͠Ju+ί>lc̥B\˅b?GLn%߿wgܯnhW eONx{U$iZ s}peޒ]׼[q̥eKba W ]ǷWhC &&/ ׃cArPKhCtt7' lib/Carp.pmZms_qC(v:)Rb'Ķ\M1ɋ@(Vf{ݻ (~cw{{{{8T,ʼnh}j:XM0E&E*̇X SIO__#=m1 L _5H2r,j CZr(~HbY ̄ b)\X*)Qw-b4Oo>PVITvz~y&H:f?]]ad0Muŏ0*qkX%|IScwgBcH:HT 3q'G3̒eH($T} -P:녂LL*aiĄXN3CQ}z mtm*`܀MJjDX L("sĎjCh*%Q r`Z HlMZUc2(͒ 4 (, IVD^8zAE~O/'Oa[T9l-1\Z` n7σNq(S06ZK(2o~Y #;ZUWKkDQmP|6Lf)2b56%)kVB3ړ'W;Gh$%u DB~Y"q9Y>H?镐Vt"$2N^*g92/X߷xj07g֖6 Lg\\w<وka ,WAUX bAfy,OҍPyےT\E!`Xu/CA""fI\{ t%t< hB$/Ƚz2aRҠr%+$(a&8"U0@kYֵp[L\܉>l(&X~gX y31 =;b`LCZcEtɎ9̓Y:1[lY:kܼ`<'ÇjvwZʠjeFMyx\nLCg =U! LjJ)P1{1pQBQDDųᕲ΅DG>*V¶o*f0@mV&9. q҃iaiJ'Hfj[CĖ0SjӁh{4 6c9lbZǨkJY#qD$lW~ք:+ȝ<=`04q% Qj3{@}J@x]M.#qR;ǠqBpCc`6b!(h*osۗIp͔lH vƛk>@)܂P6nH{o>ޑΑh>T(B\b0D5i(ƕrV@E]=:rF#아`eOFvS g,cRmNKYF6)kIR&bΏ /j$ :7WE[v=P#86^BlW:[KG=$*ץxzM,Wg1lrRnK0‰cc7mN8#ɀ.DPU`*wʧyi%K'қ iS&]`:F ^ ^OAd DZ.xgȎ;tHr`tV$0#hbiy൬{i'VuSW~tYF'MLJXq.sIޤ+b0ѫEh]T#,kbT4AR$kqY.Y 7w sc%Y狾YyY2#%4|`#P._qhpu ?Y^: f~k<tmuQNXkD謝7 cTyGCz8M/*B-fU5گ1ѐtFgH$H^Z}35/RIu5R''P(Za,\=ɭi$>Bt\n"˳yi#UM[IACq gW-t%Γyd\IdTZ''ɺ lLd#ls5m$vʲ;YL6C!D Z=O\npJnMb\M#[Nh|BmO'[څ5bΑ~T,~ A1'{UrMU̴Q.k)QCOY33a rhW%*ny{BƴS 2=Z2&DR%yax#}DG~ v6t4D\y枰dy##ݓ_Hl-E*%?&QgۥzK8r @OCz$.}Nv:aXn=߄PR dZrxe` yZbD6V@٥;p) ޸FCB\_3p1;T[Qmʈf;tRYqz )Ebטxm!s5,3G]_- m q46NWankKЪ5Xﴎ*>\X[Sf;0x߭q#~xFZXߴs,Z:FSen(/qP;uZ;P+)t)i(6)PCY[W7ٹh5Qd*7TQ-qDɢQ(f]\pf*C ӄlosj h ==kγdQ tvM7r:LQPo;(p?+F7F^9} z]3F7·|w:&[ظݛ>W0U~4֪ЍՉwnzpos(ge}gdt/0k9Ibxx[wOى=x&TGp<_e/|ޥ{OW]q@"a1POj2PI+ãf*25ځ;!0av߁d$Y]t$E1#):c .P}Q2]W .*e;8lB%cS_وS+0Ek0]啹IUi]euݧ ,0A*(3Z܎8D]D:&kx>mK|*DSyfqlky Ͽ"cNgISPGJNqAսa{D8=9K.NcErVv Ѷ\,0.NꪵV@YL޷4``[U5˳>:dPKhCol0)lib/Class/Struct.pmkoFs+d9$+[4RgG;M\VTd7EPܙkW2@J"x2#-'S,;µv7T#Nb4ha@S"{bar,ZQe]nB-"X ^9"f *kĔF3/(zܘ9Úaq3/ `\M.BHތpp+ ˁN:7δF5qG=+(I 1K`b. Zm$N)J$PG81)\|Qr$]rwE.a:)lUm2zjHx3zFs029s^x ڋ4n&0{)s;Se"f_zmw2 rHD*K.CuqKV],T~Lƙ6zoog!TR6 9=̷p.3] f~'ffYt;dz1vHCdzm螞J).`F{+ '|PN჊sUvUBFB8j\iSVjUۜ$Y3I\$$J tdJxQu u/,(t{#ae $^ٶf 6ej)m}]Z-)ߴ!E /}k5ޔ[AdVhȋ 9Tu@7 HZƂPY=l3EHw?+ҘJ9BaAiJ!`/^:N5rTW s , ΨUf?hTu+6sL&Rʤ-V' Eu)YuxE&ۦkmַz9|iov>2϶:)s|Мn+џ;hI2??\mSGͰ~U͛Ek g 48V[Tn/ _)5)S[FpCY4 *6Jp1ȦrWU O8oQqwey')SU6h ʞ`!}|: U5:&YlL ,FZgL&=ب2]~悭gã^^ćL$L45fV|2nVn@ŐDWQ TEs)x J1S ȣw d"ʠpM P@pl=_`I5tFbhsWh^.U/ 0M*6v빡a+\I&Am2 ^Vu {PKhC? w lib/Config.pmVmo6FvaIt͚l)V,A +N%L Ix~H{=Q8)C罨 6K=ISXD+ȬUS5\SɭŴe\'pVEIU"9-@o1aJ QLUHBLF3Q(ӂHF4E$ \9,ȕM=R2ڬqԬa"S9b0j%cRf<NfL'W"̊d4b:8;|QHE dFa{JKi{Idʝ.sg >Ydnt*֏eM$:xq8^pmd<^xv X(/ne}aSLn ΦR}{J^!T]SVa4kwyKmo>z.U"v âY<_C~čޏժU" .i6Zf-YsZf{%OҮnPۤ÷&#s<gYֳ펩bScM820}Y_|\}_'Wνw-;*A~ fYI底ajNQꎜiAp={?o !Svn/}RN8CE˖& ~ep6ģV0/jR,M7^{?ParͼCY,<5&2rNjN2b%"%]9 {]":ijtJ4S?:)GZbK6znn>g`f 5,Ot$qVA,}fWkҊI^&GWCRoBYQGqJx UI>ws&7%gcM'K$sTBֹ y~ RX_PKљB?lib/Config_git.pl @ {@ԽAZ ҂6؞,O%!"8NE^d1Ȏx$ z ~a"P%e+P)W ,GF_\Db1VMʴP!+\"p8z0޶z εmop[M/c PKᙊBEړ6lib/Config_heavy.pl}{w8@;ޕcYoYN-۲YXrIEQ![췪I)ٝ8vwDB]5/ffȬ6#{&f̙ya{\Ď ӛk46|e~l3~ Y9ʴ̹.){qh0 +g3or BV7N\z6q<_W{!/8XrX< ߼yxtor.Z Y@-SLA.VW-5 ikadv{S{vς3[59Ixp>HJ{҃;*|uA~R&}5{6T/ O'_ZG'_j`'m,*pHt7o޻em9313+D%1?y 30-'+d`9Ko'o3l7+VeK:)G*G, CݬLJ7(NRsal0s c_оIUZ((8© 7SBA B._;OXڻ~5t%/БO/OP bcT'{2U.t_n> 'Ȃfx%fzLRVX0ʣάW0U3?Llgd^ oFl}~>}'  <5@M f/'T>Ar90=`E4nvp 4ճLѹx0cL\eS+sc(km=[<wH($YF0KqN,jE?*#"q~YqrBY,F-q䶛=7*f 5fކMcOA|I.xq38+[4d0ystɧ̏#d08aScl|˦ٍЊv^[s !v 5iNЉO/A~FP_CR4 g'w{i hG'T{^h P{0p,M"D2bԤ:L,j7VwZoZ76{_zP)]*=M,T/\6F8TͲu4°Y^:mB^̣cq(z嚋!xi{̵D s4ٔt ǡ Pa=c ujTUxv#*H(* Xx8S#r":H>ӳB{׌PVA %<P7ւSHE +,7*ȳh@ux+/u̦FA#(`h;\`Gz2v#mˉ62:eUb%LdȞ̊0:A[*,vu~ƒbQ"YBsWgA-IGRUg;0YG ?8/.R0/^wd Q[ZCwTk9{7zRP0a8^ULxw2{ (H]`Z#( Pl^21QDuU3҉ O}=slfBW w '+o*KzS^)T`H/9Fr(c9f?A>q퇜f L/ yz^J6UH+H m i׶7HbvFH)I0IJ6RZ̀NDЉl%]ޓ4$K C-꤮jXJ.(VH j15# LfGsTaLSN W^b^ZuL_Z`]@-,!5Ҵ`j @B9ʄk؎4#) 6԰…r86A&,GT*DӋE m`U>:MpM JxsޜZ(M ֏ ݵ05ˋIckl1Ɩ< _<2z4 yʓx62ɩ&+3qo98p^ n3h~?l7ZũT2JK&09%RN*%-팇9i064Ce>lKo:QLY.ٮL=l\vL.ll¾o`5_9#oN웂i)ed5pf$,,LHTIKEA=CбDEt-ɢ㓲"F0K:yuU/Y?R.(08B bsFjt@HeJUS=,BU #xߍDT@)}RMxwjUG |=8]!/(T@X%֣۞(WUzQ1BߌE7Afx 6sн!1TU0|}/=ÅDX }O*uIT A^] e &uû[?/5OΚvluzj6kvQodLΨ%Qpqf]m[F iZ;a;Y0%^/Z ڰ;T[~ynZhԪB ̱ZT@%׵ӳdiiSk.IFT 0QSLմN:TLwYwJʍ RJM&e ۵fKǍ󳓳o ^SKH)Տ ZFئ]YI&е (}i{gXg# $Z id tun6e}Ǔн7jCTu8ѠqFr#Do>^^Þ8HY ɐ}>"ǏF"}#RV1tCJbOۧ kY\{jd.ךNm6~ժkǁњ702ὔ3"]+Ѐ\w>f4GUh`lGUxLΪY?kOg-%hϣP[YTc r]&Z=Q=aX]&>mɝ~aY' <9=AuTF$ΠRT@~|gE[ N@0ݙJ~W'|jS|lpr8L_( |ϋ%|#tq*؋mӂ0vLOJS7mwS0O3-U ܶn Xgg&M | Jw$I#s&uYH BN#2O#AdAW t^03ס%*S,uNT f g.]S\}F%s?D Lo`X:KTi"O (x|Fr9Ŝ?އ(/BFvJfb-ziځo=Dt[\J+.:qH`خW\g~e C@4eІ^VNGۖNsG3$cS+~FAcC, <]vCl:#ʴw`?VMsBsfOH'FhܤN;5Z-ZPq|/Tt͡frh/3 >@۝A3]wuv@(A99T 洚6pkCU#mNI<ˢ&م`kB UkO%̚da$ &Y70ߢ 2Vc)T%0(hC |̵YD,B&(s 8 },2oH/Ccif#gGJr!z0[g l¥>e`(oxm#Szy0R<>iLᴆN! 5%"ȁ+3#1h!Aâ (Į/< v} ,4@Ss!9̱(fQZ27,TdZLƧ!)msiA`nvL?Sd4= n;>Jq?˒0#^;aL&ѧ(B9(O9y b2ߕhECfՅ n܀gttsq%f_k"UlYgrmKϗYD?/#612[M@:7t} IYx%ԯ4GwS CUJ_C׶Wy$WqvF9C'|z?i5kAkd.M'jf̒FrB[rCפM'D:^8* %^K  +a\`#mEHBx`i7'/!ՔxC)րOGwۮ1Yf)Р/O(`>W.~wVu;^Kp囫[;hE H]k4ΰ2K6&|$InʅA[3ZT.yߋ*fAb&ݥ.-ѦDfCbcGnҷvL6JH+cN=*#{ ;vJ9饹1H;ޱ-=zr -C\Aq및JAգs qIۙB |,☖lsnuo!'IlkRMXtD'C naihj@e0QT6HU'7{@'nc_tGx量7l1: s+QC d=T!Ƒ?NvQ't>M>rkGfҽ~8J+lG:TFQ<`GŰ[ҝп֬ a"qk}2 }&d@Ў`$AMJ?! y2jJځqWF8IP[G>qO+=+^t.9H.p'0Em,c-,+M^؇'T <<ʹz!O9VHNz{vD7H#|G)9)[J[ߕ묆+~&Qz,u'wg{zjL?jGmbsԷLx!-ԄEJ\|y2(Q2Giԁe)IlMRry!$PA@cN#h ~~7"sOWkVͨB bq--~mqW <7SJ_LOQHBLtb{jX# sjm&ur<| F=i/p0gi7pNr;ӑ6xh: U`ah2U#e~8tߐ⦫胚WEC$37}i>s9S|ñm[K j[lI[^K,;F-'Vh\lA8Zhd/ 12e."Nh4U"K&q784&bFy-={kPiy5/̩2_ R(5h ;^hrބ򔍊i/ Td!\2~_{mK3Y.ҏ>.f/֩m ؂B "[hV6MllU:\IO#څc XY$[q?g UNE-[kU!ql< IҀ,(' ´0U)&[_zJmycxBV4li?V:|A"i~B|+CDA w% .[V[ /K /V9 &_Lʖn8"NeVPYnaA})A֫8IjRPhV(rnC/Jh$}Tb( (&;O(QdKzZ-X;G U=תx7_x;\]slkoWwyW_&@W_KB?Σ| . cfh"Rѽ uBmg 0wLz"ۙi-~:Ӊ8ޒC¹*f$''!R%z]4ew:~0L\CӑSeXL-"AL' >K>1#'R+3%o)9I&ɷN:Zq.=݆B]Ox-pܪ4*KIڬ$$8aw=|bXǰr&mcf| ]> @niIFNSJBi"<=+о:5.wE*~ LJ$%?Z[Z zr7٢v\|'F _#fG= #T؏RDhA"yvhi"t /A@%Uh7L$?sA̚)LAUF6 l5qCv;= E= K>,^ڃ04qoe-cA;Mk"r$e|E2xAPa0oi br>bc';! m[E>)pMM `k;soY9z}RR=v,Mj50N)Y⟑OxǸ=z~kҝ1^!&,;ДwX`a}lnU!. | 6_GQ|es~P[$M<8Gi1䪋33*Ih qWOxrc5u*eNq/3`̜.Q[~VԈcoHMlCpvm|'/W"]h5ONˇE+т#*tn"8|jʑ z+O㇫(H~OuQ qg>u |>{FS"˚J ]6y :h]{AS>jh҈,@⌁'~1?+N|0 ?0wS@THvܿ큵]}zTY}>=;Sqtu'@x ƺݱʅB@nF }Ow*0Ls p o̽p zdw#%|)=h5=3_iv(P<)(9$)aDкan]ip-8BmxAX X@I" _^ou˔$actb Y 9|b^.{cY8f{Y0`0XYa.ﱿ"8zQ=-g4`. x4q?w}dGg5^>6`[~;{*6ۤ_ۤMۤMۢ-ۢ-ۢ-ۢ-ۢ-ۦmۦms#j+p8]Ļ}lc-h |`{w0 >a mh|UPa#I֢PĭǟЅ-G;<QBZ? >9 -Oި$+>i THh`b eY:ƖHK:q*8fU:j!97єɹ)97%ܔ[sKrnI-ɹ%9$ܒ[sKrnKmɹ-9emt? 5u)pUEarkkSag``&Xja3V:ĩz՛b6zX5b`c:r0`Hac .Z0`Pc "B0~`ȁacL(G`%ő#YՏY5Y똵13`A (j@RՀd5]]@W:Ձtuk] 5t k]@&59&5 tMk] Z@е@еtmk]@nR9Z\.^7ߞIN; wE,$L}˯> կ| Af?-1wP(rD;d([",*˃mHö4 `tk98'} +JzWh?aIG=abrs;\ IdT'#A('T212ؽj$iT4HUGWz3AtUVfbҭ $q釰<5~OJ 4Map΅dЪ?݄9P$:`_HF\ol?pہ-7ܪ]AړC/1r |#?Ɯ|k>y袅ApD<;A+c^~腉>;"+[c%>!q7>d(x3'bDRQ̗by-$Ş=gp܄vZme,qX(tݼ1nt;EZx_uS %POA'ɜW}jVIUs^FUHu,'ՕJچS"8 %$MʽC҆T\uc^R;z;l"^o|sX*Ced?80D+I=:OA~p{3gMBsP,Xf #y`Sxdc~d6JcwPz'|U◯ҏ1Gw=].avʙ痱#XQt3We$z߷Sәr/[thIke_^fSy~چ'YWgE\3ޫe%Ѫs':Yn%}Ɖ g {_2|?׿o RHDKᘅ>h l'ѹ lNՓO>lDf9Ŝ45 όKԜ p15o9H.Pi9Z,z(. k 7¾P8r8lfp=bRg |stTbB83Q9f)s t($)9*R ߾N~F𘮇+$Ld-\;)aȘ?z+L"l}zfi\[ڦyn콂uyC]t8ГF0hWK#S5&Eڦ VV>=Rý7Kxe6[JPC.W9TL$PVzuxaX'r7r /kì85LgX.>w+t{Pq|wI‡:ߓoPKhCfC lib/Cwd.pm\w6Y+YԒ7=+8zisN*MAkTIʊf HIvte<quF}D L,O /$e~]i&~_zONoNޞÓD÷G'mP2Şh}QkP]lx),Lb4>#ΓaڞFu3=xr$&2?c?#p3_dS6 @ˈD8'B.ZO ,mZ"?ϳϧLzhҏ`KdWِWBʹȧR/(c$~qx9dGa~%1%E$M2iWS9iaKT`$_BPT%9kTUFy5Z@'pld:{^βhPgҚjfq\;=zy=>?:očKUTwM]}n-Lɀٰ`], |z8" y9dGB~X~?X`;k#3ROƌ7ڊvGrm|z~xp|qxd0|{Hu#~`-Obgz@ qkuQ/N(F@.7A3GEO6JCb )lEȑ38xuQd.Ө #=ݝGǘW`=5}b_t]*{t)x-ZEC>`o$Webu(?$bL'ƷkS- 'm4nulo !2NX44eV= # ͣ0hU|m9E.{I9$h'jVc"< ǹsx]Z<|N^3%-B ’1'a@R)Ӡյ5W"ТpXe< 'E)&#=b]J`f3fHqaBD읟Nm*"T V4&1vbм$KEPPXpU'T Zp24ы#|-.^۔̒-ͣ ?olڶ/̩ x@^݇"LuZTM>$wޟ K#OPinC;ТJU6Nbؔtd8l f2?/tNZV[;gW_4?‹q_c1 )ǐ"j311LEf4t4RW}(J :R?a XLJ,H8@ ԯ\'LuzOI,x.l8ȗu[7S|D~/k)^KtoIR.ߟ'Qp 6Cs}iobPf:1B#DQD%_W{-$_TR񱄔c:[ݒN\tu?j-)kJW᛻mbe\k xg$Y%y]vSc#LaQVQV[M"lhveSplcs|!aY2ڛ_ؒo(` US[D悿u.φ)&]s@ťz@:H@DKFIV~@E6ꫨeyI={q[o杙H>YǞDsaɇtRx1K@;~Ϥx^+O,(QĈQQ~F ?sZV -m}mexe9ۑ^eN?(/$y#J( eꆛ5K %6O枞s{MMXds]rU*-2Pp BVAזWԒeۜr|I@ ߑ̙dTݸA3If\Irc׽$[Ng*F]SS2\qGT!M uFǺ,tu|rvcBdo9T}?S-?Cu*+wdr>v5K2#sh5ݼQ:P:;w5U r~it"1l E"Wx.CJ?Ibw,$vW({ᖒ0)[kZoT*R%%.ziz+ICXSQO9#=eH G Ǵ#C u-rJo-(T{oM=qv"4`fkIu1?7'Ɩl.FʗMtSSo (RdZհmִpAUIe: 3{P1$[,$bo^JSJM\1O8e$ #S>r93mx8#N'蘋?tǝz [t8=<8+xVWY.30Hb-]Ai@շFđnm:y*#`SW'e,bNvW [yªxt/Z+GYZcj PfeĈe:\\XT[ʳ]0Rd/MK"G0OgD(HRbH{"z?-,r"߁L)W6$vڍ]I%<@Wć.~~*yp-xPg{>zLg6]E^.JWzECvSdD \JK*,Y?s/l)^ygM]89Xs!\AN,;{`^;qD-:~gU GJ %Y?]Y?-[zWByB.ܦ- U U}k5W鈏ͻ߮wU7]9.=E$5Ub=ӈLU0_d\7rhQs~A7A+h 4fZTTǎ؋z)kcFz7'~v(Y_2Oi]'2^N o,VFtDouy#QWF͵ge$?AB- Θ</!ߌeD݁9 @sd/eO$wARSiyN\icF/~j4{t[/^c相#*F_u̕!."D!E*vEy`mKɼ PKhC]p]~OMlib/Data/Dumper.pm<[{۶֯@(9$ݜ'];v9mu5/%A2kIʗoߙeNo믍%`0 s8JΛ;ofӉSFM4Y!)Cy,"U=mR7"EE؏Źf%c@&C!XJAE&",Dq.ѻ7ggPp,iJ;;jNZףo߉=>mo?u%ndp"_0L2%.A¼7jzO gmY 3y92)niV iݒ8 ;yn[bg iWaôL (E^k^%RjOaTa(lx?ˢkgO8ZxƯa"g%0Xxp6A?dR a^<<`)tz4YZ y u#  yE]z Y1vy)h'/͗`$Qf{J2tf%Ph'! ;A`xpɛxDem&G"agA[HX:EM񭘆(9T/ UY^ $%" hT6tlP)y鬘 EtR8s%a4 &k/yMJ{r5MѸtpFwp>`vx_?awxrrTY^ hgy)\d <Xq<'!8TDZ.u &a4hQA,&T!:MFX܊qgGϮn\_:N3TM,;ͦ#0g_f*:_t6r&[:"*\Kx$ 9M`2[5ޛ`H-Gj?~U;5.= fq!hMD?g}fM`81"phE6x\~v>n gh J#//hs!naM *jo>͑ ؆5wE,j G Yd1֠*9U2? ̦9N (M)'DiFFQ!'"h4.*8)F59oN>h6SEWN,ÿ[H=a>mXУ@>8Xr޿wf/9Y{"ʒ08)WZYgǓMW?Ʀ:keg@矼nI, `́Cb`b*^GPH;Ntekߵm%rtO <0Pqj`* N>].ʮj9PXP;vV4͕-Z14*?83Hҏ9䄷tT!@ '|2q,͓ ؝6'OXU-bbx]cQ?a/Sc%3kF*FdC,VM潰Ud<|cJ>T,h^-p$n ǹ qRfv QjX`LP,|MOlmLFxLŹ[DFgP_ p J=؆;L]5LilT_@9U ) Z?` k֩iƁlfIɻdAa`훱 AOu̓11#(܅ttsvI),k[@\4[&v2 X Վܥ J0-#Gv>CECNИp|T­eвr59WE跖߃U̚GSxyb%p>[p@N >xi,qџ+橊rԴ,:H &p[RҴ20[(eVYۨ ^oyu[sER+Fk5^/hM,z['߽'ѣSFGx&rHh)D޼y!lp+{z :b 'O0sy(P{}2*}$d=Aq}ɪD=$̿wNBe>'NH)UiP=y>[ Vyn.-:2· kdj8m7*LBWu+őBS0R>+G \?5Ɉ꽅UoVä남'm xvkU!#a8Bu *jACTT.QFLIE&8Thԃq)=e*lq |ՆJt ْu@{4 ݐ xs遉VY\TRLm%M%̃te~<UUݜUۗs mW>A苿qb>W=/PZn !^ :ΘIl(mavLO[WPuʤu J-]nHe ⡟:ĕx#r(bOm+(0=0NU g<+P1/\͙O{~ޛ,+G%eޙ"%h_8/j A@d$+C8tQ8Z5^r66gDA>_:*[kS ϶.v4mU P)|QӁ*nd(?g[kw7]iƲ:~APhqV.wy@]98rEr A'Dc 3t/Ri; G%WoC&Wdd]] QTv U ]dBd@0zw@OGavwC3bYܥWuƜ|;ǭR,VXGe ť5Ft2å ˝ۭzpmXp_&}4 :mKD?u`U&t9flu^ L ^^" 7} dKRw5"3POQ߷L¡-SzF/YT }8gRck`Icįg,J=ܰPgd'Vm~(+7@)Xt{|^aZYOZ>hh>NzgN0C1䄣 £G@Z? kX\9EkdJl_x'Իt6#o*UJEba\KgSuUw _T.QCTʝ+ȵG*(=ՕVw!]:d ͒]ZyCak=,QW_!%!Zׄ_9GRPz5Tz 袨!˷) :%WD9~ᅥ C|5\ZZ%!^ !s 0ḌK%U'Z% !e_EK%VY"|1NKW0kr剾2`N:;Mn릾i*tSaݔnL7eI&mk>|bN?:N!o+; x|bF"HQҀ7vp-g|?DU(b;IU(0%?`&0y^> Ⱦ䞻{ɗְ`ޝAg?B1\ɺOD_^GXݏGV'1>ŋosJߐ7ݻ3\5! Y1zAHU""6=:e P~_±ovY8XKA{я $ 6Dc>w(a489+,~c4]QYC09&a;1O뤛a-oN}dBt @XCDT+MZ;x^|~ T qP=ϯ<_t\ͫwusz=Do=>/PKhC)lib/DynaLoader.pmZms,+1@"_JɑxF~$Ns$*Q>w$fdL}v4ɔx-gL^hb/CNeŬK?ɗN.[9W;4;2 #x,2[NoE*Qjq镘.kj!KbS%*Dz9MձV%~jZS"S]`$BPi̔4@r<CX UZ"6BϘD^ǥ"Vo.U5dJT&L5+CښLDU:wJ)kpKA$31KR\:*+el6h GgE!w eIh0_/=N÷Ud>j^A3?u:o߽(:L~$l[2P/FŚ,@Fb Z&ϛ2*E58EG/YVLg Wg7pQ.¾zmlhMNይ}PRT< /-v P'?~? M +`v P [; veý>Fv>Hu)Gq͎ -oAW,cw<ɤvCmىCN6lyD1/VT݈݌NE'vQHѲ]v2\Cqe"V;BP:/l;CGr˜ԩcj$$ %PT7w`0e85DE|/Jd؈bnLъIaTl}L9pCʰFtG4qBGK5H u{D ǠL",xD*$ʨ#)wJy׍XbKnNm8z6p>Cϰs~IW76=^ENppɿ&}<Զ> ߌRNwxGQwK.ǣftθ׿{_%5Uh~adFp\eDXD[tLUe CЗWvb+#Rp\e@'/B|S(<$Kdӂ Ǡz.K4GGzwua`Xa`u窶#pLBTQZN6Hz4tiOm ~]W`^"D0wHJga!cu oV/F7`yD1\H`9V&"zdv $b6h*j ۫1 ]v`5m:;+YdH S\8iA@}E&QM򋲃8 BxeHYǍʑ:2lȑן(D2W7߶bދ>p<aN`K뛎~6ɜkignp=^3X(46q%D:"6SIB|w gxב([΍lH;xbV bw{XtnU1CC$BM}5'UB7ӨvJHc3TgOc+`3, YqBx-OvMmpC'`2Y>څ6B~e$`fm^mR GǵO/ }:Gv{vcu;n6i a R%V)JǖpwZS0lA>ҵ`u׬۾ӻ3ߟrКr:YҲ+ f)pDAǐDꪱ[E `зm b-꩷4ҶYI cV~[, E oD`t@V G4P33,wE 3pEMe[Ü%$Jy0P=D}$Yedvuw؃voF p6!uR&H=&<9u\ϓƄ O8im 3prK$_QȵOm>gdq750{,°H JdlNAI`x?2eK] v\ RY}ul||ES=S]Ӻ#[f%TE'jR s֚;T\54yZ+&U3&d=" f=,tbJ[g:<-4.elxQ:x't8JS}F{IS2dhgGRAl/vR\;}lfix)C֏ڽwրf f{Z([wz# =W"p珖Tseoqssolg'*l> y6xcgZȝoG55m;qqKx1smOk;q wцeg,x;h 2o KalY[EgA4cc)JTER~7020>ͯaN WwvY|"X|ϟ3N9K_VZf6G?@}kԐ24O:Qz ~]~懺h [zr(ZH~Gb;kAL2暻VH#۪{zgl;uwz6N /CJ<.Do,=A] @JЀ$# ='.>G#$zV}n 0Nf@<8P2 BMֽ /ɀ#RC k Wa8x6R2#7g޼d`ɔUŹ2Cלz П(}pP c\+?kPT awId _on%@ p 36ew_!fmn4 ضf+>EE!D3>V\?r1ؕݭDFvᎻ ,|n3 Jac=(OV30DYB(nݗjn(fBJ~gm3RzDLhSH[CB<ʢF"XOڍd=[r#ZٸTa{($png6(nV~J4SꂖDn4v. L6d[lH" ӲeKȓ6xXniLT/ѿ%֤V,BNheNA҈zjњ;jM\[YUYQXLI eWRB@ċJ ~"a)Q7eVZ=r+?aʄ\%Vkò,a|\;d-΢U'bSs!6[}e?I; Xzm/(Z~~ȼkq3ĭwyK({!c,AKqIk+Q ?OsO&*T*C|}Bp aOZj85qNmoۜ4bPᴸ,Jl$A+ߥXpVL-gb+!jQZ4j*DB/vj4 W7Jh@bS tsA) P'zMY˻<&*)v)She [H5?)-Rq2'_]Q(++Cŗ,(aNJ9Nd(&"P8x&[g PE1 &Z7q6JVO!YgUGDhݕ*Dʭ/_gJ*Cl\`7y&˜[bQ PԅEvWl.TuNگ)t MX2 <Ƙ?͕̕HP9lH.l_i2|Rh0|!rK|S:#WtWI #&?, |翾PKhCѿfz #lib/Encode/Alias.pmiw;&iȂS8$:#.^B2߽UK_^G"]uﭻ/p9P츖g#G> Sfِߗ;(B}|WCq>I ^CSހgH?Z+hΉUr~)K0wHa$=t.9k>Dߵ 5#,ң!9=9CL`4YH3D K 47+:|) X~W%Q[ 39&Es%U͗ͨЮjj. VR%yٝ'lHVXEƾ0I$"<#-n+|+rB-'䖚\\]BfpygF`㯔0 7n Bq3l]t=WX`]-AǛq030Æ6Z͝d'IT3TlR[^(J2' GcX}xّá#s*~+i:LOTopkS~H2YUI @u6P%G3扤`JkЊUJVTPЌs]$qs<檤fKg6haoA!HΪR%b+pثV*AcerWKJۘN@laSL@8>ډ0 8HB̛w}_V(zw0E0*;zg>e;g}uJw ;{zNPzUpED(ɶ=^qԐN_/ :Sf=1~SiunFl0+>+ycˎ@ Glv1RY-mbdː͏'7`@rkSm#+mX"-)IFa:ppqYSrܩ)cQ[ߖg#"Ym6P $ *5XC$̒z*cQ5qd6pp$’ȾSm䣛umDmUY` ɵuf-aCwGtx]m]|I E&; jC<+]U/IDdFIBY6S/˴% wa&J YKe}Tq\{>#&u&U.~V[l}.a 8dz^VУSn}[~3_ﶞGðKrq l\v\(b gK x=XC,X7[sIZqolPv&SMCLdəm+Umˊz9椔O*ٌ<YđW֍r.֟pśWGU$3iywWŴi>fMqQLs=://o2:jq6$Qq ZHiG!D;YfaҎ&I;L+ C+)i)]i G^\_;mluIDo^NU~;=>7...DP׫tWrfSZSsa^ 8G fҎ6d­Af5i{xICGGGDr?yeyaQ۞ؚ.$oCAPޘpi "Sҿb^WD5jIEkͽϙ.4ML(zdM0]&:㊰YEy꜆@=X q0onaݚ2[yNpⴅl?GPkJ9u_F:Pfˡ- oOjBR +uֲ Q5̷ſn' ,-нtč= _VTe[./zw' bdcV`?b@n3'W`{C@dqAA>+,knҁ񌖡Ҍ dC0e=R/uVn*ןd&qd<(zw]e^yUNFG,eَ[@5VNk%acљ_|O; ډ8ڄJA䴫 ?ԙG4_N$yjD0HAnO>]$[,#ɧ:ѣxu4@+f C]1wh(8|"Ds21o} ;T:HxS$ֹ=_!ohWh<H?0e6 NQy!9gؠg;н n;bF]"\ #}mbFg4[ۅPKhCOelib/Encode/Config.pmkSF-p&8% C[E3@}?up+]o ZmEVp}~KaFo]*kV쯱 b'L=4Lv7:EsĤ$dR;u17x_$U17x _xؔSI<ȉ_Ul2[W:9zOyᦡqM B1 Sw2UŸX"fWb P쪢p`sy[<߭\V.ϧ傉>.Ͼ2~n{S41 ;0$;h8ŖTvƇ tF+Ӡtx*Ծ&qp$4pgТ:FS^+gB{*xߧ:ȇen9+t^ӂ@ -+&r$LYWҌ.]M+㻈"p;'dXCQr/k͙gTE/(~Tl2w;^/ ) V̶M[QZ0^wkālX^&q"BœqX.FRl!xy8H*4kӵ rC{؇ǫGAݪ׏`Ծ{TWvxn~ʒ”l|x/%ljzǐ |ͅj;ȑ׭ "1afzdMpcQ4K_=Mq )w)pJaxCi] ʪā,P2.锎G׉@~{Wm/gwϞ]gae;ٰ,|-!8c1q\kHr+09dEcl| TW]?p%!BAl#H$P<¡Mwst&G\'[;3K*#0~oԶ$ j++څesQ>"Зp9cx>S,{MCK,Jz|qXe]J^\Q)FP$8ʠR%ס,(ĔD!a  )E/BW+o hC:oX/\M}e64r@fͽ3h14h)@ ܍K+r;_\6u9Ɠ(Wç=/PKhCb| lib/Encode/MIME/Name.pmsH;jf&.:4ZR M{7 Q i.캬"vm5I^877떲2E8t0Pe!ȶi?il$t>O\v.A_` ޤ䟗]oEI<:?pWb Ά ۤQ}y  Z.{-fW;ZY^EqچhZp6ar?>1:$%Hcɱ8DSZr,/}c9خv(ӐnU?8' 0᱅uⓀ)OBݶD~3fz`xW} /x<)鴗tgaKz]y륽>hP8QN?rh~G6G6G |V0 9F=ȉ-L,í֡9tʯUw~чMfo=OQY6PKhC[W& lib/Errno.pmX{sH{)&ع8.;eYHD~劒pDvz{@n.ӭ_}'RTEβ$ZVqz|*OO2;dx&ͥ(8lB Y&2 I=+8yLb!XyBU<?KvL1* uu.E^di1t;EZtK# MA^f W'0Q,8ydb`(>*'@xE)* zExQoRD\)✅=E5".8Ϟ)V{C, xm^Dt}s"jG]d!8G QwNHe զ`IjJV1]$w\ID5ܒU0j*l[/j+9#u<Զ:b|4[wEezhڑ﻾- а#{8"M{2Da X:F@/5[{@hOȨ I(VYWj=  ug^Zpˤ^P&4uxA%ѭԋP^DNJ:rCi9cEM : Ԛz׳]6@&=eߍ@:gf`If̿=jjY`K;P텺6>fC-,_;Tp# }2ej1ҟ1MB,]0f"IZ\,NFG8:鋍xb'XN~sJIAPo)h|Ur@z:S _]Y.31\dd7B&y&D >:Q" w|xTyI'od!TtzGzz3t \H_QE: ΔY"t+UQ@ {1vDኀ0!M3G0!-8{p9I#.A?CvD" R~l/ |+ +]6WڟJAYlM{W!nB ˑ^gx(޸QykMA=ֳ O fa<1ZfߒhEu_yiwZ-JcBv <: }[C&x+F~K]lqlg4޵h;-Fh_z;6ޚx'G톏omH@ތ(z䩳J _: XT;2&۳&8.a(D^PKhCj1d lib/Exporter.pmVmo6<%p]A²M-!͖MG2m EwG~IX>xy)R" U"::zx-Nh$A;>JALL9Gv߉Q)Dbϟwί_\]WEGv,gox!fk!#[Qp*z&5LPJ+!᪀Pf^\)&/ͤnJ[R*C (M*Yd])DGq<]&Y7 $h XjO`/,BHn[2*>m/pO}8h.a8)j 56UX7%LJzoK@pZ.y xPr=cISKJ2#2z圤Ru+5d<40TVB`m* 1Y.QSǖJBٌ2A?MszS'' Fr2Y<¦?=XJ]G@۲u3\͉]'zҭv Ieב@&|ˋFǣ} 'ur@ 6 GO5r6tXo7j Wj\X aeXh26SrLvb'r1zd.\*7\)ZNu &cWs1p ۱QhUߦq]FkOCLe9^AD#I'{)▔IY1 ySV\/~}u}ɬBhnѐ@~8gCQN:C )ѺA.XS>0k@)J")z(.k'Fvş܁31Ua`!L&zw3[G*Vb;a%ap va /{u 7U|.мxawt#Ya]9 \wya8t;L/ PKhC!^ ulib/Exporter/Heavy.pmXSHl0X"}+eu\㒪44H~WG`t=ssp.,p: lnwe!/dn&GK>} Ŗ~%ӂ7$mCW+T1IYmFɎ&vc6LvYM9KtsutVmSUy`Mq_pM5+'Ff$OŽ ъx*EM``=րc0 ̋)F#%C\, 3V&ej}?]}쫄4&-ȜkNi؊cԧv +—ֺA\6zUEmw(\K{7yFTܶd5ؕ5–o߾:Jq"z10>9[yBՒitO_uGߍQϯ}B9bEF[L%_]ۄyp"d " gB ԁ\CY.0L6k϶$j; JwK휡-'(r[N6ц˩ylZgUkRwb*Q$&+uH><&m:ZMW01֓P7-wqG!VUNVȪ&!_ttqO.9˙-caSK4$*pGg1jV$BI [dC1 I4nC\۸r : ˋ:Vm1]2ڧyz}5xlum6::\jRßwƏh}j(=7_ՈF<ι?~S_0K}Gy+\Egԓ-1>_ ¬Dqz1hjƌ䑶l\rSaiMY9We7``~(5ؑR 4+bjzbJ'Rzò>PdKlf\J!sknk.<;dXߓ]c] ߢg:ul{k)ot*ҥT|׫"N\C"2OBFPqȇ!Lo0DEI=^z9#N8Zf#Y#*" NuFaս9^#^=MBWx[aA0~aOs{i .>r)vc{NyEx<c8o$y_kJgJ>HzJSLŨYN{ֆ["̼zY/_n1lL[Rl.Ro,\Zgm=vHQs'b 2 rHxЍ~\=vJpes3X kHԓ~b( FݴA[ePa"tr>T+?Cj4ΫC'پ>҉^xfA)4aι~:bީ#{[kpIֽx0TL#:3y͜'3 #D IZzQt4FBr tZ##k|8l25:k?ݢQl@Gݓ#Y=CQPKhC2 lib/Fcntl.pme_8ɧڞ`U%N{jO5&t(*lhݫ~x`~lɔJ*:o7,(^,a>DRܓ\SgJ*C%/ ;p/Cc \7mRgff;HL:-xv:ݻ#ȉȧ/>.0p2c<z3?UzAPK12w{t[Λv٥tb"!)k4V&,e de4jRh4rH*5H)f.I7F"#_ńȚ1Ș$ӛɤ: qrS4`.NLBN ,2^x=Ja TQ Re>TY j4 T PQraX{amr^pkh4%kWS:~d<{:,厂υT]5|Sf\0b7"S86 CQ|C@V1i)9 ga㟽ֳOga"rӳ+u/ŒlVcJ,w:RHǥU < gP>S,#bJ9=?7o/`'(e@w)8  CڬG2gcx3$4@4<<_dv!u(us$i0(njE՝cE( q)r&B3ʙѨe:gߟe ӱJU|`Q8KfUdb*8NgX)5x<44Z%1" ݾ;hÙ=T'-$w Wƥ 2O(ÏWErIiؘz3C9G-2JJWc^ 'G0Jͬ2%MǼk9{d2p++C{IGg w\D||d=ʮUacX5OW=GH k> 1ҁCp8׆Od?ˤDNPUۃ ^QyjP13GٚLUJ[װqzO[vk+/veumKEqE8ORH@g{W8Z3 fas)$j\+Nz-j)5q!RxD X>ɭԶ٧D3#ƌ[Nbܘ*VAΖxBBj t퀏]T"܉midZX $y^C:eԦ,S$ ddQCߕ:9]0EU3/͒-?d%HxrH)WF[1enxch֜ O?/;zH] nc(jC_A>T$o_jgʋec*0 ;Lƈ\`=!$9ې@aq نْeb1 JDDcY簀.0#6T:OR 멾.|2;6X!Z=UY׫G\V,u/t2S܇R:j 眺*(=Tǡv@l"j$zxr>3񨓿QGF"/ ) ckP5{X"kT~PbVɬr#뭖"V4dg˜}tYFiJ(𨕹~mi~W[cOunnf_#kviuѐG߭_^>狲w6uA#NcL}e- Z8.|\Ioo/ajHu`4c|9W_qv7G42Fb3c}bYf\b.V+ l;T2w_Qa+*aVgկ0"j3ydKI֓}lh45zo_&KuP1R{ vԨwC3N)IAi+[wYj!6g ܶ9~k_U~la||OJQ賠e)K2ŻX74?"Jp|h'o%TP3ː٤*a5pyu{144&S>*aPrPKhCP)Tlib/File/Find.pm؋˜>0^N3|:I{sg/2/p^ma|wqü٤l2o߰)M 3Ύ.$ɫ-LkﱟE  q|s6\@ydȂ/<˃%قg,Y,i.YXJ7I_:ưb5L Z1XoҌ,/׈Wc$a3("P@};GD˸{1ؒb(5gOz> Ϭkn<ĞAG |zW#_,x⏮S,eL%Tv@Ss,c>b}. ]MdщS>}2z27QIF]P^%3Et@oE_gRAqvK5a1G9w8vps4HXMI16#>/VFBes s{LK= hiJ 1jT:_Yݺ9 PO9Hh[K ú [Iz;^.dFlIUvʌy5-K¾eZu4`k<3Is ؊5LG PD4S.IEDDSt"6qV`{,%Pr6Ys3{)Kn$*-uLΖ{:dz0vŔ1v15PP@o(6+$<  Tig.wJLx ֨b%wŮemb, }:hCZj`/ۮ88:5Odap F0ƛ' rH|UeOzDM`|XrЧ|&A؆nƶ 1q >ןdγd( u_ \?=n&6e}gOl_0A$-,Hl73BNS"v*<:Q;Prllɵ~eB?>/l\J k= k߮f_πe'$`3.*]Ʌ߰ /;x,sqom'kJ( `aHB!akb! ^I&|ԥCcbqhO gˏǛ8ڂr΍(;A^J,ȶ դ~/&Jj:/]knUN,J Z^IRED#bM .\kj\$WrE a}1sy$c(4+'Usg7\ʂs,#AhBHA ;mWF-?IaBV4C}T Ǎ'r9 GYCJrU)݉Wh5YM'YY3M$,՜&dxu]\`cB)yXGVBڅ7Ɯqp(B3eŒv!E4@NaXGTo&f罵 Lޠ7u_-~ ?A uc,b[\( wW3ecesh>{d (U&tdW]Q=)/i;j>j9u*hϤg oa*AB)p38Ŧv@TFv B $s<⮩aN%M!FNN>v/ݭh)XS>fQ࿵lo$ۀ}_TSc0{n&ktu֭ۧg:OD“@L6ܰyjhb-9qQkR݂V_ ?:S|QCs MFIqP% OJH$Z3vaMي]g܊&᯽Q޿~jΝ~j;% 2uTe@1VAxQ]nW_L#" ܼ 7Z^q) d&o8"^Wo4%nPC1 z_V8( =W} J0[e5~Ѓ1J(iծMPK1U3@`L5a*)F}# (b `*Md= DIX@bss:սGtM|'j4u-j@ )(_+3zbM3!V6K`Mv9WAfs,ŚdQ;ف<(CXYB!=H (ʖnF[M{V׀;l^%kO!,oyDzc7 8fyXl*iH_Z>AhYD"~KQ%T~B4ObŊoy^a28RމGhB^_5zeDJCkǡ [t"qWֿr%bQnU`YaG,LdW,Ot)H? |@:TW~[s6${KāTc w,9J֦V<:.; Svޮ +Mgl.ʵG%u9ri|݁L  2 z;A,bJu32,5 {B^m-~5PE@Y?-J|t(bS2j_N,9sQXL`d:zQ,'!-%} n>5ykuvpG?4t|hP>mTTHY UoG%sU [g0ڊԍ#<RyQ-Qſ|SOn À>58 .fψm (1LQ2L6ՐˆiΑwxH5-}K<Ҫh` 5$U%1+X"cUzĖOc+l N(' HӱqgYS)'ՄzH=Z+:BR qFH핱O>ݹKǵʸ,rGEhB6̍0^a\BMJw[p&P]PŒolhN:O/_8mOyެGo-<U/eUX=HAZ ճ-;[ڢZUI{vVJe9?v Y([R+߬_ G*_!m_jvuTXYaK^_W1;Pa oyV=4AwVm"`{)A7>7{BȖ3R5|+o2u}UjJ;l=$X6?h3YlL)fi׾rR&R~_mXaj6cF($@9z)p[}[46 ҙAUfTǗ? B]J~TyMBS7}%dSW/<̍GUzM\X/C*ݡ}Vuz~/:o9Zj7ƮGԚTza>M"NKjjSL9~?ߨx'vK҇gI{:o|m~XBo&5>n +”}FO xb.yç/N+VWA]o!`h| SRSmYm5.h~Z~]U|Ltx_oXq&0/_b QP7r辥8ՠb,>`>A&GoϠEzō]#z&a _$s@=ӫV9#p΃1!۠E]g _Zp1$ ⼕ɞr073Rƽ~i?7j"?4P  0J>ZUc6J۟=١践C%aI o\}"U ߫ۯw\@h1a.o-(2mħ pg<;Kwaz?8: Y;PTqWSRr6kwO|~i Ol$RPKhCCU_ lib/File/Glob.pmVrH}7&$}qc 6^pWf-4dF2l{f$qu~RO_O~$bNTD,tę8qqRI'JIݑ*>zvJ~n~X=6ڝ*=߮g*NZv^gBqw$ XCΒRWD](@tD?fT+cOݫGWcN#Z$48ӘP* d1HcWe N=ss=iR,pB2!H0Hy8Z\t,1o.bRģW5]:zK_L Vf:w~]˞;}otNڽӏM^57^oGuއMEvd[Y-- ˝nڝ`|_ *^ )p|_Zk}֎ŢJnzט{X;|mԽ RPaJ#Jf,Vy&s*MXt4;{#qc*97ƛcEώZ@0Qc6GI,׍z0EsצK10 !bn5׍ggyEVG XqBC%'p;)iŠ%7RO#p Sp c}aFk6B"ղO!1g+dF#͔JO6: SaG< %ghsb=c1LKap'vPjLbjd4ȿ;9_,팕=Xwb&Aڱ^3IW࠾Oh.b#f@'>JFlY°Y&c;ׂ0#ƲHF. /7qELiYPlK<-t}}mbjæc_] .MtAX:Y)P1ʡK<Tu:+YC YRbC^^[>ڲ}ySo ˪Oy0P8dw=m  "$ S0p|w0s_2_NhtwxIĜqsj0ـU ͌h(NV-(vyjcJ M8c_w>4~˶$߸+dUc`7EQ*V:e3) 1$ °8Ty1Z.߼tRҸm7;U~V O]:Sv6T~[fDzQS[% PKhC2]dDlib/File/Slurp.pm\sGll,Ȓ]S2n̪F}ytO$jG՟%b֙MY_D߯F]%,ܧߋȒlblۓ)n꽛E y|geX4޳_V-izurz+75":>^NyjzޯN]SKL#h\+ДU+]Óa'l|vẶbGl'ӓ/V5ү4,ͦ*zt0:CU<}1]a)KgK/<%o `O%N L[G _ X-!\ 53z>ʹ?HC̀D's&LJ_r^J)|;nR;.M_5 v67kk Л} swM ب(K6Y9A498&6h54n [jSw- ' #p=lm^4յǯd_<(Qv=޹wgYw`C޲ԟy/3ՠ@ ^"c`1œ(W clH Bl"6$*/UC^5v޸}1VltM'j c6kY-mn-CˉBJځ8C ~A:|QAG#Xu>]ǥ5%]eMA֗ @tCAp!jӀ'P˦bmueio=JLT %j |J- yK >v9bTµ2ePa h]fE$QEr-L2H̓B5[ӐI^G;0{RkAbpgǑ(h2Lԍ ÊhՇewlމrCSL:TVۥ.)gdݺЪI.oz{I'DfN~~\8&|(IV b*$dtv(V< }phUnϋB0< ťJ-VڌN $iD4D[L/q9ǔRO!>YN6DY`":K#XMGv Q XEbY\tTR;vj9!.B'3ܲ;5xxgb5`$PG'7O6b.#FrIYa $+uVRM] *8itP.[k߲$)L^.\cDg0xfy?ۼ XJ!G2Oq瑑0d.j疲mt!dL/&OY>?/ @K[Ftrj0X.9081ُTRrxavo$ы~kR>K=F0@y[ )YE_tgKM\+$9 VVxwg%QO! qV)#SKVW4Ew2̃ϥ=pE?z2@l9 1m@CU5aea^p9"mpyiO~8 Dk$:АI- athUx_%9PƆ+FPQؗCj~N,dt6vM!PB$45hLB̶m?x@IN1,R:u8ǽpQ%[0O+JA5{/v5<` B/)H ~])#E^e(7~C5?<{S?רTgz6@G|la*#o)( MðQ~EC3WTeHu̗*'/9\</̄\,,^lO c\FD1lڂhpH!U~LV k:T~i`24ó 6TB瞋"/Yk;ǪvpayW} PG+\څ0xeDLl'FXɠ= l@؄Un b?IJ>ƛ 4U8h'lk ޭp%#:RSٯ ri:EvPKhC6?3jlib/File/Spec.pm]k0_q(HE{ؘp`+ Sv ~XKcY_Wp4f 0- t܆6 %];R,ɆGTZ%^H~ l[ㆦ Qy=K{qTQFLV5)X/H͘S4`@óJ eGB—޿zEsлzCx0-{4K JL.uhK("*M0c ~ q"ۗ l\H8Mt d8_ҥiD@+9Nċ@9 KEJ*:"YEn-~d !NKQ(n;N!L!牘 8KFy LYVMgLV0甹%"Y$Ħ,DH,B !H1A++7h v ݻ @Ӄͦ~FE!:pQ`\9A. ~ݮخ\vg JV,:2C} MdlƑ#N.5}U*;CS YJWO{- Tv6\xƉa&QHSFt`"*"F q+a*J<c43["1mB%Ia^%e'e9f1!a Z.aܡv[}B7_]2>U:Bis$n}HcAg(1(J戀> ! i+(ZK3 :mM,qCAIC ũ zfT#uȺ׫25DXKQ-]γDjLDY4HTFUThpq/x ( |f*X{ߍCZaŗP/YVj_^y 0RZI~.Y._ HҪGi0 1Q;͏t!Ѯ/g" &1JY (xv 67l0 e yZ2-D f"Nw¶Gq7"ΚuErc-3\i'}kY{2n`+Y&{v<ߖӏgڋPw?mG5*7o|cy2RȔ__xۯTQ/ŨQAkxjP r,J؁N8:Y ]0 [kL)1aͻo~6.zпR}W)"K 6Mp-0NYL;&&*%e@b +a`$ .ՁSPrW e!Z-cұh2(ZtPTn< /]W<d iY8DC|gPz|5XwD>Hq<& hqmQ268D$(= i_Q̊l9ǩXkVmMUPu$.&Gck$RZ_ Ke"gJAix:q/f'gA0ɲ>,xTTۇc$gJ]3:l", :Gy`"pMQW¯ 'gO|tHYXPuM]9ysm}o:c|qn Ugzsq_>OaUrǖFmjnarܣmsKp<#bFڱrB7T"BaSDڅdO"YL#r4mcL4[w4Hv B1 :ɒ4'lvVf5Jh7jv\hיB79w0^xɓ`M.-@ף#Mot t@O'V i2V錏0O&YPS#frT,u'II"ߪ~m}I`d} 8M,};IȦoݶ~9u29FsxEi`JC6gt s\ձl>#:A*deǑ^.}FkLrPq:$- GI(af諨@׳:@6Jp PqAQBHryV:V;Z]Wd>t>ԋ9VAwʙTC 0 gv an2͇ ^# #=k=>v5p.E<92_l] HչG+Bΰw_fd5̜%3<Y}JqIWYR;!QgsaQ\Mܵ }i WɁ褭 Dn"k[əX,DCfn ,]&9TZ ˀs۱U4.gPKhC8 lib/File/Which.pmVms7 b9v1'&0IR,]}']N@ۻ^|*@ZˣGTDp8$<{[YH|vfry8GG?R"]wW,4/V"k;ydDF ߖ/ջtm_o\Cp 1y'K¾'FV I4Cg7p+.>Xe_oxNxTT'\O(5JL50 t́4*ha0MR3,rn$Zho \Mkj1H! [p^5tY l2o W!7fc1@q R|LDX.G݋3X|m\C&v8box 22(=OL%W"g;oSbɩ:$R7d! &Xل'?5f`c0$mLiJcF;c,~zQX)7VRQCԯ4E%[XZQaC(X0%.[&=tSڧKٔy.<=;F=َ߼v4! ON?lc~qKPDUl$<&)XO + I^VRz8e8}_Ni,zGt>XřeEҿ"kt$L4B&b K0XIV. F$ZBa<`0GB@fH6OTLUHۑ6zUQut:y~`k?񝣅nO۷OHc,ov/q1٣>92A[X?lޞAǧ 7a~U;#ݠ$Y*-գN;ZG+/֚SapmsZLdW:h3(~otݲe~@H@Sÿ$,Oc} [4B~$sDaF9[ .BkK RFRQz8{F9,EҾ9oZ*sHr(|Fx#> ЪLhW}&"];V`ga4X-~L (aIKH<z%[g!sAD JJD8Gu\}(:ۂQ)̞_e*1hϼyٲ* tIBG2?3kyC[~ZWQR}#Uu͙ǻZnGa#-* Xxx+z5CDԫ? l`|g49(>1Z5%') &YqiOSV&]>Leaҋ RYa*AiϾlw {̖c$=}_0+J^/7uR[H6% ׆\cI DQEN}a D::Wu"s-F|q3R̶Q\U)pزǒmsN;V+/^t=7۱7F|:|7GG}<{%l1'~p# }ųpzIjr wZ(3#O-Xĸ=N%3L:?ix"nA8rXzlt9v䏷suu> 3*|ΪTPt*S| 7G=G\ b"h?0D\9 w"Sszٵ^桤7Y^!P߬7`L/S骮M/yAӛi"8;XE O  L:+mG* \xM7'F/Oot93 i?.Q2.S=)\ olu|yj k t7(Rn{N+i0֒*}$CjO$ʞB3V#tו*W*pV̹͆myE;[7Ӽ-4hy뾙WV{M3ye̫ʼJ qee]Xsj"sk$[K=:=4C2 FOg\3]UXkȺW`8ĭqh:]e3Xד;;mޗ\!n7,EܟGͮm#Z+W?ܽ_uh;=/0p3Vf>/Y4Q1K"SHu)(=zk*ULT1h\kOZ_DY9{GT`1 snz@casX+X>z2G.p!e̳~ XHe&䀼Rskj?sTM)풌Dc?WD[#( Z,l"6\6G֪i92C7)SgLk~ uL&t:iOP9QlZHT^ mQ^:ŏAMy6_ JQ@/R"D1 A2WǀJIEMAٗY( F8?NF[I dS!E̊r wG0ya rIAԜUeP0:nCZUlx]FAL^WAe][ү&U(/st8ko]YjGꦮ 9?YW*&xl @Utw#Oh; wl[hd!'Ѹ)+uGBSl'Mhӗ0a,j(iyfM>$H:QdO UJB۴2ܵ/Ԝl$}ڦ )J-KG^uCYfh4PtR J"Z6HbeNJ\3] to>vH;{_Q5_0wKM01G6_PKhC`u.hlib/Getopt/Long.pm}mWHg`޵CHgeĖ ao$ssnIb뭫Kk(Ŗކy27%e{:Vt+jOqtY0P%q&AE4|.CUw쟊5b~%U @,^dzAM 24tY-- *߾F:L$$` c+ k+u50@&9Nb}YRþMagF!3"7F9R˪|7dPg.q̐t=^BSS/)NK6uzց8Ҍ b[6/zֹDRE]ݳ/9W_3+YvR&% 9$# V:' jަaD9&^SzaÿQ1ŽL%g$%X $ϗW`t:t* ApJZ!pIDE6H_bŠ$^F ۺ v XVG3@<ư}55h9$v%RomN$^#TGgj&d6Cl^V 8>ڎASeUv:Vʜ`X-[֒{pŃ U3 U&o.FF.bR\>&r#7P:o,NAZb` <^ JCse]yXgfO(C#f1Sgxd>1W湘KaeaVCw!MX.IYfUkJƂl{1 ΁4ot^)7_ VCs|akuT]"kCEq+/zd0 ~O{oxE:BnGxmf'Q{ksxh^5~iĦ(0*}&9mށlQCZkQ/Iq;&Hر_EcIx4"\&n&p "}5 YṺeq`6!jE@vB' B`KQT j7x1d*CTSr&-OpyH؜ѥH8a`o%_;=|{>#}zpDADe…eAp(3' dƬd2,عnԁ.Ba-EPQu@Jp#`h2钳(MЩ0JP(C6p-rѲzʉ t:?{=nU/OB;?XqGZǯ{x$nUޯ;߼.W>uӊ,q:0l60,A{#ը{0N7^܀Iip׍T{Ya Zsقr4~ۨ 6h㟅纔^yRutެ9fv9Inwgmu}Lop*SALw?H4 2Uf-IώhWW^`J2%*g*Nv7@?[m[&{# 9h Rs$Omr$n`FV@wU Vnt*uRAz.2O^ fSY} sc6H[M@)a6H#ʗ 2jk#PmV%S咳oWȵk,CBδ05AĤjjoE# fqw%vo=D]v5 ƀ[WS~lJIUPt<6XݻN"˒I(؎OKCR,_ =[*e{M2굓^GѵzآŞTp T6 kXVz P;}6*khGnJ+S~m3ncxJ)m9Hu1ٳԬqn[N]]tb]>Е-f$fz`|X<9/`<]5D"O<98oAߢa.};hxSO(PTW9E'<͠7t,]\!,/llx}=0|0OGH{:( un!9%4 Nvl d3nD65) hG?e4b5T/y,e5l`%? (GbWu\őu*/{6PRrCeX:UR\Z .0\&@'4@zfx̂6/^qٵ3O5n NknvaK0F)ڌ1*Z(7WOwE-,fr!)K6S܌z[6̬[8@b3ųad|DLd:阗Orojd;$ҙPhu= yIo 'kH2s"_JH@ 8_E@jsYWVKDV3+ rSh9J\X~lW|Jx|B:7R`3ġ&i#AL/v4`W*g?pOҜ`C ۴Fl4("S!hT`lD%HaXE8pK vqc%`U(pub>3kZ m׫}h+ vwg+/^ȝVűʂaLyWW V$ɊXJ0+xY$NP6ȵg:29-K2`բ6҅4Ś83DEj~U:ШŮ6*1b&* TcAc`9<[9#)K`>"V_]W'o-U;*]RH$⯫kU9*sG D۴}E˰PjE9y_c`q{{z׵띻 I_wW||XA:>űad5Zg÷ 'Pe znzR[om{?;.p0:F&^PzZy,{fQ?ڿg\[uxݡP?~<-`Yqެzs65I58W|EռWex6w :lh93u㟘7=T,+AJ 1XX(0=;B>In,_Oװp+irJg{M<=x '҃C%a0)HRȍt2*TDƆx#:UOˀ_&6akt!D:X;WZ>JOP*+8P|k 6xcJ[b}Vq(3;w|sKz m-Ukjj;: Ƞ7&Ar5qBu]N@5= s5k!RzoNp$-YGN˜D`d͗ &>M#ۗ@Sf ΗSu]`5zsG0=et2x_QwSh.Td)n7-ڂa*@+kȪn`Z ^W\/ɂ%Wqxᓞ (!=?ԹTX1*)ӧX&L<#RSe 1⳦NV L#ozZ8ثLJ6lvΛãC`A600 G81Hu, ,B)lTc2+:E<>@4gܜޣu u ^ -ESթ:*}~"l ׮^Wp;Sݟ/Us OT$FRTy > q59A y~CqKpVmm|*__~-+ž^\uoHӛ":>_91F({-Z[\ܯ*HTLcz*Q!{vxt^6d&łod)lL ,!zgrLمe6/޼hބ& ^ +_WS[N`(0x  ~}@#`Q.l|T\+dhO# w9Pk ꣔nW/QKT 00B.V??E[wJEiXQ/XEGYp-/p(ړSݚ5= ,e90)n}Ӧ>@±1D(o*ܤԻ"EnMGٕOaH\0DŽW5fcʤ@NJS`u: ޤLGDs6W=WJbCؒb֧ F *BR^qJS^`*)iAvm{Ru^A]sKct[檂W6‡/{uP*,ax?^LF)t/@RmU+x_ޣ&߯YtnU \$R2H#6|aY0wB|%OKt銣Mj^ NgpV: rYfC'DBzY]7 H1W%+;t8a&\L 67[c"v7|܋چ@{h[Ij/3979FT+oky[B&ؤ}F)tuNruO[:a5qV%MEX >W@0WiwGv&>[}AdNj(3Z2 0tv*D゙a^#ʆ:6˻R~\[/Nj}Rl[K+avC_{r!e$'b_x:fH$^G +Zq*U2 Ll6&&pB7JHI7?E9mV4!BTyaReK+ VXcװ`~.w"հb0JOB}uW<[U&-}?Q7Y#Z0D)+yK'$sTʚ-eL d*" 1h(,V@QH^ݗY^C+LQ<φlX /طS<(#˄մ0 jA#x? cF^ÚKr鶺}K/T=^^漈h\t*XP2dn, 2t ٹ;䣭HD""qSKd8w;:xӦʯz㊔ɮ0blhK!1e.C|Yҫ jVz>,rbd6'rr#4eg()njQ_7QwX*nbR5>YE*Ӌu{z4۞7IKuVPT7ԧFE>>\X%#S+n &,eG}ߓ 'Y##c:V87(e'Y92Ķ1Tj)4>?G\>ר~yñPr߇O~0+$X Z+tmr~[`j]wlaާn@)̽DyGzFJ}%Ɲ쯠ŹWpV\P%08$zyނu~i0QudwaN5K)!J+4]'~|Ơp O'ËdXqlٵ^W }0#iRרm Y:0(/JBc*XnqR]v,c}ܡe;d15pBe+DRnfsKb@)Jhm a@sMV'(7+D0B3͕%? [eM3k[U*^f^)VAKv 2^" YQ佮:C|5ۦ7n7a?+. *Oz!ɽ>Q>EЏ *=CV&osC([&B}DYyaT&5"i|[V&U9oq؈0cFɰUGȦYAh~ESduxkxUV -.S^Bpde|bȟw0䪩Jce):esgqz=3:&KRtה!p,v0VJZa.;,slЊgHVsC)$1<9sRk[`F--gs1c~Žjoػ&}cm*EW SAJ)1w}.-.v^GHcy雓%+#d({AXIԗ6~hroJfR ֱJ%_­ҏxErPdWhƷȕդ^5;+ 6 ¼k+T_F8/4g׭iC|j>">+OC[δG]MLT g )6RAf„w iH\oqݺw%L:r^:2Bꢾy t)raPlN\SN'=>}Xw1$ŗ`;;$:+bۺu^߰ä//gdVqebYW=E4l` e:&JVd:aYBD-do\_6."AUl%BG}ĘҰeXv%jvlW6$䵸rSH.cZU2 @Ww7xPDKC_T3Kiv'\D4H6&֣qQ H*rX7˽s [;W$N#ѡ+AY"(v~ WE5FˆgB5οVn0JF966;kBȕg_2_J(˄H+?PsC'ryfA؃)*p?[i7_yX)5ݾa7VS1ǔElэXmxa?aJ&Se'VƦy{AX_tw=ߑ3fOnvWi]E~G*tqpęlr WiX);N;jjĤQN25q_fue u/{ W3I}Wveu+F}ǧG`\ͨ qrF}Pphq#ǭ`m*0S -c qh}[oޢ!so8KkIq+V|Q;Ҡ; Uo m%ZםƎҮq~,(de82GrZ0|%2~ Ly<~0 nxU,l0,Wqˡ<0􉶜4:<9>8Aahf*AP>})} <ш%Kt}L:ȅJ"/Us2Ma?Pl'x56BƱl' =eH_MBUm ,)>Ą'^m(5Qs#bӠꮕ,Q&S/  9C~=_^*/^ǟ''e0x!8'JecU*ܦ崻FS(Mv*cMu:l>=mpzؕ~<9 Y)8ۅ؟r3O moݼKsy OD U;RQj8Z>0-w\U\N]vbll`c?PKhCv[ lib/IO/Dir.pmV{oH)`N@u4 4q/-.UZڡ(}c7Í0)>.Mրe5zΒ5t ?_,Ioz1ÿaf[ciFaN" $-8q)p:5#1Hy0R A $G|-IYSID!<@\Q"_pմx7dA7 4-~zgiKDu4c:_$ e\QS{lM:04ZJ a\TWi"%in'Cw$ו^jncEnU}DoIX:2ж(ċk~\bVl73FS;j_r'SJL2“ zdMaz}]ݟ/&i՟GB|o礴,1A,O}oޟe1Ov<͚l6'SIU`(ҏ* j:H\ 5A ]5R2Q<)?5VF=^yPC{xn a<)j V`0դ D::p@ n+?p 4H (Zxxtn!Z__d0T |]wT_b-ߡAtULV du#SdgNRO #^4Ln$"zGD;ظ+lxt?Aq)K6xW;!clRRXߐlK1㴏+{J/lj?9l MaW[7^t(d6R\VhG\#q>*Ӵ-ȯI""W2b!pJbyJI/p5!V pr7y-Vvb, tWk1dG{mM1֜H5[ohghɢKΥם]etrJ]~7v^.vy DڽR TbIE,Ws)B77~9ԩ&Z+?;)0G} Jin$O2ŜbMHpv'c WdtmAD@HύtݮgHF@Ta3bٟX6/n^w0p"@c7޼RڜCALky/=bXMTF8`t ժF6^s|' xj+Ώ%h䤸P 4'!vFB7޵9>Ӡ'p-F4o;=5*H.ׇF.I ;QrjS[hrrZҔC4WQf 5rhC+Nyq1o}&Y":P ׻iudWWB n Xb׃Bj -d=:I=JA]v:6>rm tOCH0ֱ73X{DFYAs$}L nix´4boWׁIWƽ 瀰‘ |VlZ ' B0$Eb.]$ Js.x1qšDf{ލͽMdVYss,ÒyFw똕jOg?i VNLRrlL?rsn&o"1-MK)%Cb+b YԾҭe-g k7 羼cyn< ~id؄QSx< TpsªC !^^/, //!^!ZXO+Y9*-[NOxUSjb86vS1?[?? |lZg:cu< ?04oVܫA9 bM?y.-ţWT['#)/Û}/Ɏ2Ik$Z[)]yia( Wew/{e +|hw;Z!GqX' Ep sm'/W,yVt=k6 \v!+;4#He tG<8}߂rc ''}BHoM,fRoJAzfip,o#8si| ̆Ō92cad!5P;;aRX7zIa;AF#YQ0F3nHN1=U onw~1D.ۂ^ϜF$ya#ʽ9yN*I;l~{9.ߢ=ڧrikcm놧q1T*_n%p־6o#v\HϋZ Dl!Ml FPKhC7 v lib/IO/Pipe.pmW[sF~~ʼn`6ӈ8!cHVƒ {{9os٥G)>hź40: VDa҆ׯ:^=!W|v<va u2,c]45 V a l[eA/@Qu3y^ g"3]Xy;G:cK{z}=st2|-odzaOhMwIc)/˖ }ҟ^t]c>3}wU䓗;wVAFib6<@.h\GKN~8C-݇J$bJ+${.~?O'K{VKa3٥)L07f%(\teǃچFzr7- LaWIA b$.RY$#T9sg)eU߮Ƽ|nJ\wCե' |w=TTXLXvQp>@jԯ#&$f}->_j".Pz7E4f9KߦZ>{1a۵fUB[eUJL격[6>vZ2[8ՖuNm)Gq@6[1s}ap,mlv^o)a)`Vy06^ڢVGIc[оթZw)v&]kU?NGGK#=I2?F#/lR>ԣӋ 7O+Ǒ:m(Gd'!ԣRUc c溆'PKhC/yulib/IO/Seekable.pmRn@}+&j&jM5%MĈmICVU",wI|m_vf\G)Z{1 %ᖮ8i61KQ@ׯ]7ʴj-" BhG2wڃ1g|tkdY/1 ]m} BL0Ľ @$\ry'QPn`OEx u5s=ǷD8̾Vu2 SnyY@Z![lP] =B28?˹kXNYFZ[֩y 0EPpZ&t"@ ڤZUV(Z/#!?KK2)Q ԚҕQխ+'PKhC~Z$lib/IO/Select.pmW_SH ?j2}8!qvx)7u8c+ CsLKZI+y"}zwsra[;pz6Cly/'ra͛{'1}8GG9H(n1YRdSAu"!&E >[A$'y!@H x/$drϤUbF@!Osq>[2Sl8[*G~ |$á)7|[t_}ő[pr̄ hMgRP1>h(_ (Qgp"OF_(Wcrr?DžZ>~|)ivz~q| iJ8z`qFgɄ|~D8q ߿+F2_rbD 99\1op)Iaa(p--(|KAl|wqX%r#~0 \dWl,\T6=Q$c9T[J2&[:I_>b)W]I=֩ P :D~bC9ht&}pè($~]br?:ņ=!PEWaSa+U D*-mPNL`b!*,"}Q㰭JbKt|u dd]FDG2a/g)&S? uo@g~!moՇV['#!H=[RԈ$+8/pye^+12N'p+pOrȃ^ϗ\J_9~(0z`i@>tvv׼z6t[nPM>`)J% zTu7$e .T&u*!~4d٪ؠi2N.=ՠJ 0P(j C-kKeא8ȄL ,fY ]#G3WnZ/k4c~|#ٺd72ϊ4V<+r3x5dHO҅>C-CK ,RA[JyYtoJ0 A[kϏtyҫU<Щn<xj 5oN?lMfkeM=]z^gu"ytBJX:E3 }?۪&̢Gio5T;/e]Uc,I3w59nU1*[#ZKf/a;2;ngȵ%DZ@~ڌ@[G98N< pFԟ{dkW^G/:<`BC= K9|挄B1Zʎ2& -BڲP[nW j7ڵ 5=BW/1dcx fU>lҟPVEYvɴ3a(=R}wפO` \-ˍfK]67fT.LBA`YPKhC:i "lib/IO/Socket.pmiwHm bWƀL8$cyNfk,$ҒLX}e uuz7CFdD=KjNi\8Y(y4q8JVI{C>p:crNt57YbWRݑ pq#q4HC2RP?4V6PLI84S~J%ֲ]c~suKͳTnzţU,dn1<+CA[WgڙLQ\WUϝayu0K?8?jw'+V\3̊>-(hMԒB'`W>;'ts\\{{|dʵ<˒;BW,Yf:$~ (_ȈaorNrBQ0}:Ok݋OwMZ`H)մx?Љ,ѠT I8eAs\] ;zY^o6uχ=֧W?hd^7cMpPIL*QLZC6a`Vrmc {UcAľd~{yzUJQq셵_).i$5ONR Qk׏$PH׿_ '0p ӑprQQn4g#Ø[JrQ/b~;c#…OPͦxH^|*bC CČqF0 _>ʺR1VFJ $0Ȕ=i,C'fc&+CG )5[UKTo\S]% QU&ZA0CIRNJI&|GWU@Խv.w ؄˄T F= z^ a]Ly9!H7^͆]RW Rh􎳺T[Kd p<3)Q!xn71[RV ,2Z~D>zD>";I2PWX|Ihw KtPݟo5=d dޘ Z4q{be!+끱͵¬UL[9g>a+mI$E/B*pB*0Tx~aƸ0hpbPV%R6$P+3Ǐ#ВSmN5Z0Y>AcxԳ`YooهvŨňBg˃B+w{w&3 # D̼<bFYh Uo.RMkQO'BG&nw:VEf c6xQ]}) a)T`J(XoOQ`>sXü̍9s uG,i&mpawP7Ԋ6o ^ (tYp6A[:_j.)ϤB+cH"U$hN i]/m\w0ksh_a)[p{-%;MǮW-p"Ww( U=%L RBFD$Yd`&?B 'љ\$8sݵqBRenZEcV mڴu3\u ޵} ٚ4eU"fǖe| Wc9F|3Եe텆lrB7=sW"¬б!-W-[/[ O?&aO] $W7(Uz%j.Z q֓V"qT 6 fc"%&PjC\EIxGk_JPKhCʊ<lib/IO/Socket/INET.pmY{sF>E~ ĕظ0Qb 䳧gF~m.T~{fG`-8]G]Ymp}O&Ӝeο23vHɾOgަwtv˺q̈'cRdB~]5Ft"R.ݧ  ,",YR tqhd؃`2Lz}Xs^_d :.$]u=\/"(Ի|ȹz},oR&)(@R@SVHg]Fg=oHN]UڬI1 BtD g8\o\>p_ W|#kA9y13Jà@O[ű_@DA'l$Ɛ#fɪ4oJUirs4$8YyIHHH%=KY4C ƥ;!2"v_6NR )v!HTƩd|YrwaIŇe8y5֍낰ZGG5ɷ7J𒾝޿) @r-4`#AV0X&bRūj3/[7NCVq#)8=aSvDpP Ŭ>Om(枆HN,b~U.,ŞwF|RG8Iz ˠRVy goYk~|:L b8Oܵ:w h6w#FֺmÍlKU$Nɢ-X~Lgbt\*VduHeH)TgB;]*\@=9< SbpS~-y cLT6!QAl|tbh5O.@)_ ,yί+k)_FݔϩJձLQdZUm]==^}FF] WE]=靉tAgC3J}St {VS =Ns99 V&nպ_4J~Df3'nd(gMNaC%NQVE+%skDqq َA¾蚮Pky~h߬1\i>%j!7> JYDܲSPvu-A=ZńP?" &V{µ:N a9v!qhKqhkJX՜6[c8GU_5UwhOB^ÌW|iY-74OrQsij*AבMy)cH6"_gfF$.mjI76 Wl_d~E _g #+l_d+^ũPKhC2{lib/IO/Socket/UNIX.pmSaO0L~ŭ B7MZU Z6MM.MDb*9IBcI:POg¿B|5I[F*l)~$wsxN$X i1ek"a$PpHT(o0hS(VIĥP"e]X|ƉJxkXOEKytDt"heB mYZVJv-K{0 >Ɠs-[^?b2#Bo-k2:jBxÒM~JS/qAe0ܖ-/]BORXEqHL8xM] ʚqz=:oiKEBR<čP`rs7LHlf1^2CJI<xqhL5 %+L,5^@ک1PѪJDV/ȚVEULgJ&)5e1Qϔ͐_SoۖKTvDB騺,K`/W빮ᶳn.77y;7Ϙ܁88ɨpĜ u8Ëtj"eKYoPKhC 8 lib/ImVirt.pmXrHm"Aꖹ:v"ֽ`6Gp1Pc]]%`C#mV?˳>K sOYP|ΡSt`i?)j[a'x9&; t.Y4gFWn="LU* |RvC:a ¯ SI!whrO9[1\2B{d^ F,Fa@`Vcx]>K .`M -CoKi tP&r#Xbp!Pmg!j!1( <_lԑ3f[xPW=}Z#$zDmBNmH Om2V>Vo@kL6jɆ(,6EhnHn{xu{Zθ? Zqjr`2GbD"|#K+ E<ˑmL 3a JܕE0ţKp'Flun}~ 踋>bwnolc\z<@VVΫ*UZU.>a \`>aClƣP=h$r0_'ZY)%j.w9ʥEèsպӅi3OP-j.Vϸ?b;x,cuzmepX+ŤSLG{r3}Ӛ܍MKZ;ͺ"P52rvcﲊn_jY5~P5#aR,cHΨ"4ñRJplf"d+Y1C;G*y: p  N.p:ZĜ~.stNEH2|FKT-;bD ͍cq8\,2W ( pYa6C08(=|//1'?kMlHC]x3 hZPh,t#l줋R?{ %bر=gg[Nn |+EynVE,8꧔, P4BH4i ECsNc*>ذE'xv"/^z3}~}[\%T/eed1n$U -lG}W TK tm9bdeN]z lʴ\ɺ%0_آ ctwȣO⒁|1:;PhNݼ+ FAA5R/!Lɋdu%*]1 3`y[-mv –~`({Yz]ƾ9QlкОa1FXRWGD G0Y*EFsz13cXPE?Y%fr_gazYDzaFZEjjkMZ$GZ9fgl(tΫh:WGaR>6R^(5v#-hc"3vS.jYKI&$S8&>iKbr9WD0#%!O]'\h1rxSEuv0eLn[W&[3$3AIA7ojj@|S~ 'qja6B׍!a:yR"CqGFx*t~`zY()_ ߽UZԅ2vXiZS,TU,PڿTC ^* 4iAL+*pLs'Ůp"n ]ힿqKEßK!x8ub T z&Gq&)aٞi}Z Ҡ-/wnKFڍƢ$yވCt>AFPKhC`wlib/ImVirt/Utils/blkdev.pmTQo6~~šiays,;f-[ώI`ahdDzEwl$me/6uy*x0Wq+, :XM~]N݁3;%li0wvR-,7 wWE?x,L Uu>B9.W3g -O *GA-c𷣼!Hx>P+VZ ͎) a/HY 3 pMEUAv XbQFtZ"2* Jbf*䴯`J790@*3c+M=fs_Whr䅬SArDžB1oDqNjrvMŖDM̞ 8xF9U|/L$I`z7"/o9/wɤu]Fz@դOdP-RS[R ~ Z;d醭izx4=)Ncc׽uA\<$6t !)ω|*T=X`p>Ά? L"r?]ѨQ685[Wk~M(44'iNXOᇆSA'khBeDpv1%ۙy7_ؙqKf;^̓pAءnVa7]=QƏ1662d9mp2Nb} 'N5'tQ!ӵ K GKs{J0m@ sz 3֘Շ`؆^:op3?OV}+_`p$~Nv `] zvFC"N,zPtҾ[d\bR">4J>\^Zo.|Y=~v M*7SGaPKhCR_{lib/ImVirt/Utils/cpuinfo.pmUmS8=cgy>\R84OiK9Ŗc e$crV 2ܗX>#e?b W&TkX$[^$4ޫCn#pqChu2r!<&.!ҟ3 >=5}n[ .xSG"qs v pG3*G<^]Pjm6fn /%$$Ԇڃ-# 3[eS@ga`B X|sPA"dye S}"C*!C]Ŭb<ehpO=I paPltxX"cv,1!OSrâV2I,j +w~1^]Õ3:uqh4bq1Ff$j ė1Gҝ_#`6x L/.)Lx6h̨.wYa+}~X_CH)٣#DpCb_I:^/Ztp6!̫yʨSPKmc+]8 ۏÛYFvnk-MKQ)4q{?ٙ8ؙ2_/>]F8X)\Ng|\6`O9趀ݰPmO7TPoXSi7||.ff3WmPE|siSM\M)!KUH^ho)J>]$g޳h>i=/4 [Ov"My eʰvM%)+{ջpF9D.̊qxRWRPEWRg1l3mPKhClib/ImVirt/Utils/dmesg.pmU[s6~^\6f5>6i,dli0–&dͦG i3ms8NXFGN Y(NRnu ZcA ;,T̅yJ$1DS*nxl+$:vBnQ)8~ˣb j JNgݶKC2Ik~&!|-H x yDx@АI%تP. !vEAniFIX%,%VkiHL RD1 2 P!k \(-^ub !6x߁C!̀<ǚb*,I`E4*hxp|pCFK7bi0 0h9k8ly00;Ѕ{?mja G#3+leHmkJԗ 1mP'hPH³u3IDָ=,&lõQlMaMp݄{F'i!E>I8MRCym~` *"`ongopj9ekY~9~{{I!%ׂa9HKו n@r?wia`D,SتN]ϙ09 նΊe.I:BYƷ!{%[/ZPU Z= sX u*>KZjI7PVY,:k9˩;Kmh,|>`d!B> Kj-\K: OI/pl[ Fx`+Q8 ԰߲G!+>ڎDf{ >M8W~-.]taWl{`LjVh jmj*2}-ۿo]蒠$\)q7AI@V:79w0ؓ;joMD!9E#u R;(L(uN)^&Kٖ ^s?L=eDiLk3|&=Rox4^~`;~|^yϣ΁qj&nMB$ۺ ?x QKeUjpJiÉgM>;.j%mУ[/̏V>4 Si_ .p^c}aaꭟoVۄG^lwogBiAOuA~y_m>Ki?l)-'󫆼 PKhC{~f$lib/ImVirt/Utils/dmidecode/kernel.pmmo6_ן<8a/jYItPJRv"=Rv Y l{#ǻy xЅz}3Å{T9vkP V4,akvҤR ̘+NEڎ_b250"FUyw:o wф|hj#l1RcvEw+25 %e@D!Y3}"˜k4c_*d̓bS`R* 7%樘r!x (®cXT 2QLQP.> }+Tp;dKlT1cW ؤ7 ym;1^*h l | zz'k*6 + M) %U8<`N om0` d ;:'V$eQrjOĐR#+AD : 2_Lڊɢ{ Ҵ`8/kۂ0-Kf,K yBR\jcM?nsӅ$j÷ws{^uUUl#wc (RWQ pWM璓ʃ/Tjp;vM;IxsMN۠l7W(  K, B[?%ϽhAD^ϱrlEg ^Hz8Jʞ+oyŘC{SbԈqQ.6x\Կä+J}p_$m;/tД*ߞۯ=T<6ܶCV:"ߠ?(ّ?_?_{tOgE+4h܂Ɖ5JmD8ShC8OHHd;"X>V/e wnu|S毩jQͦg9 K(4wrO?ի&,Jzzտ٪DRn PKhCNHp"lib/ImVirt/Utils/dmidecode/pipe.pmT]s6}dӇ4id l&v/-y%Br d9~4f e?̤nN5U3JX a3e)6Ҥ\:u+ l蘅1Jtez-r0Y$Tp‡|.|݈‚{"IZk8B:֯$i;_ (7lṗZm6m#Wle%o 3+&@ǥD%zJNd9HҒ34ScQk` D1. P3%lP*IX!jb"A#acF_rZ$eeq sL2kVOw xGxMf-n0bI3dAoHʿ' ɨ?.`^noV:/mv#WQ|qp E‚Z0|e3%)fx W4=l \l%Z5Q_ I`$>5J'i[ϭ6LeU*;vM]k[*QtzLpW*\wHSco&kƨTHnL٥?#|:{{s?w# 1fdS?>'0$X t6*CF*S*[+<ϡ#EfE8Vlv~nY o9Y{9˪IרJԙE K<3+lt?J]Uj4*ѿg]orkd?4xJW,K2C GYpԠ7og('[:)oON8|bߊ(.0YF D?xCpo; X_(B3gBc%OEIR$eE&Uֵ lY?OjcaXs8Q2 }$du;#`=!L+a_rZ.I DSZsbgEQ3ZFWQ}Y )#9BDx?A2QR6d# pF׳v!(^yƊGj'D>̈́]J>`y+'U9FzF; ̀#=gN+N=;VK7 ChT&H(@̮F^z7uЛ \wqg0]̦&F uL!U~/ !&[m(";NwРgku1IpG8=,ñQޚC[eAot#.0dE .T :N98]TU+j7TߜFƲ,nC^Or)A " #aEl]x ?U7XO'yaj()-gWIZT?dQNis@M Cs=G^ezjMPBW^:H9.OJVxmcpnI,QaYB<+<yT>|m-S7z\80SkaSDӒ1&>*4 6򾂴?m`]un٥  yZǮ/J#IoUBm$ ,S-#YI!F[9ű1'~q}_)ЄH\ldIڇG$ϜOfUą'$ p=w~yl-"R0q@Ei~ENɑGŒ.>GJefsZ5 CyT~&!|!H JAP=X|Jy(0$ \µ!Bcb" Dz 401+ϴEF4yAC: o 82x/`I3tKu°DL05Dbw`Wh,5ϰ)cS% n8 f:>9s=!F/]҂%Y̐+$Uk,P\CqKwru\=7cp`'h:xGub0KC2ഖߢȒ>eK̎c y0"Z7dBHJ0ſ:m#i!H>9u8RiۭVUY˷;vz, UzHY=Q}' ΉjA ȸP8+kTNd FSq=i7tۻw%x/ϾG,AhCՉ?2!sɢ,MHj'8LjaC܋_ӫ5EGٚ^,{Dx{\7<=[% y(:i;`j\ NQlp/p2v(T Y+@P BCvas,-s$xIbpH'DA3ࡾ\p /Iy$X@dXLK0IƓ. wݡwR"ց bzRSeX#;ސl ڙR0pft 6Llw׶ ;O )*b'ϡ2@Qcf/ `m#;|jWPxOV:RVGoEBHV0jɿ?ԷN7Mj^HS-J$,+dp74?wwZ_kP5>U~U_<xIS=R<}54) d(x QF) I8,=WI/'gJB5 Irbq;{KZB437-)oCrO!e=#3r0jKhta(~L LU:0/JKVVQ_p7iDQ/ } 446+|bpbbE!3][#JlEsC1}fKhqN6\oGρ@Sft?PKhCJrOlib/ImVirt/Utils/procfs.pmmo6_W Ȗb/f!J`RېvAWDY\$R%)ް#7OXy(USuTcR{*5Rd5k Bԫa˖ToiRH5%@Z(a/\m9oJ4Gvr*x3'c ]. J {Q PjL=p8:"oЅ+z$5ಐ>I82AҜ)-ٶsOHEΊ(tIASY+\/7pM9uXvXyc,9l; ɽ $2Fј*>BEC6e ́q /E5*`KUh+2GbI!\0ez7Ov,V7C4V& G,"ƄMb0,I`!u&a׫d6HF-}.쬰9[B}U%SsF}B*wR6$ap]8HFu!ȅ|t#5H0g҅Kq}'?o>lrө= fUpwYEӤje8~n6moN u%! }X{2c iGu<603P`IIx4Z:tfq7MzhpnnU2vnh T 8[g{^}u:/AI/Spc;+Ci"L+Ӈ'*GY:TtHy Neh?FD?>DۚPKhCP֑7lib/ImVirt/Utils/run.pmT]oH}^$ >ٶ8 Mjb{x e y3{L>Ԧ22+*:ʹɌ[{>V"PѹfWT#LU.JEwhZ!齌fo1;=UoȐKbYbV|L4J4QUDM,(U,%bcU2`H%Tb/ -2,M&pɻRcs"C&HU @{%qwIrflCivu` ۱oƐ%OՎkJ<,ÆPTYr0Or:_-͞7[>Sf/%]&+Ӣ0G.R|)x|:0qb2aKz,Vb;@H0 Ί[ڟy%bbO< Dq?A"2Ulm) e8hkcﳵom/N  ?0L0 O2t45m^㪜ss](]_qxf=Bے]W;4Sd3Cм[?MކGhkxGs= 0S +jИB*=!@RȊix~]1'|/Rj:Ox=&Ձn Գx<[7|?P+W ͑)$HF]c&TPɌ'`#H 4MV[x@iv%O6 `ׂlª_TB.i]9Lϛ tH Jf.CwOb4.5y*I.,ah̛ d&SE*y)Mxū&g s"a/& |"LV8:6A 6ڬ F+ ?9w0gO^M v@js@tAGa{甲a4}8*N׽u!M(gzi`s/J)U66C0N&x8 W/op6ss6s<wc!v%fq٨~i8Z*8g0Gr=º/u=sq(X-)z]S8%Q~ޡ¾oԜMKs&unϡR9g;Z$Q>n0n{hzѭa?ϋ<[iyq<PKhCalib/ImVirt/VMD/ARAnyM.pmTmsFl~N1yq4nbl!!Iޝ 4$8'v{v=MxЇWNzǥMumNjBesp)lX/S  tb26?'+_ŝ/Kc 7" QVQX8oo(<@NW7Gu>vw]UbM%Sxx+ȥXK#JDz$a/ XCB#p , BB*BK 21#h?׳%\c%0/V R΍Eª2!cbQ dȆ%lQ*#5b,Q, y "7-bcl,8&JXSL'  QK ws{uw?$oRnqO4e&Y@ 1rG7cu&wOyfWo]an3ZNlKw~,+uJ!juU/ !f[$[b % KD.3%oSLlؚG ݆6Z|mԷ NtCX yDDنBi:z~}˅MY5 h*j,F@3qxV_ 2I#\B*YGWG`AZxSd,o^Ez`Co=ݾbe@[g-ؠ} qUY&8{8 %FTfZ/1HY9+S@.kY*무Z5<74 # EOon{Ҟ'u!!J!FZ)Sz)Al5N34?ӋUnxJDVI<{Y  3DEw=dQQE}|,HnUlnp||uٖV[%?27 ?BY]מ%mßYvb/ 9!Ta+ȤHCJz$`/rY \#p , :BB"-S":B("wKf:~E̼Q>a,`$i. 'g-Ң46%6b_bV O-x$2)"Hr0[ᇻ/=g>wf <`$9ASezOX|8ڝGF`t?f|g|vݴ<4"|sh{ERUU#W8HmĎO(,VJFLoن ݂46Zכֿo otKxHXقkq:݋^{sZ~/sPQ{&)O74Rb~qC< Ň AB3&q^fHj5s87U|T6C_7Κod{ po^^6&8'{8 $:NrR{M{l74,la#.a TY*b*F5j'".>f o5u-2"lNx2saG:!C .K-c:m\i&1㔵yCBz}RZEJȟ%Hsǣ[D{p姚 #pp*/,ᣩ08#F=2|F:croMZ v|rG%ߺHw-kHWߪ54k3[2;ȖX's,™DըWe SzPKhC/Glib/ImVirt/VMD/KVM.pmWmo6C2`Gv}Sܼx/)mdlDyIw$ktEQ`'S^xޏXЂ e_i&4WaI̋_ө ٦%8'OM_.OWC< PZGd:[9ƍ%9*m0haL^H"IH /Z"H>SxI%4SL6Vmf 9*DP(b |f>.'p /A6_<;2!r^)'˞b<2:D!K uX<SX#Wyj{hxh,1CL[E0E$βnl4ϯ&cp.o3:ISbq12MȄ0&'98ǽpio|y28q;p0 WCjXx癉QX$K7^IE)>%yO+^ēAJҚL_xs6: FiM|K:"1/YP ?8u8RiѾ p,~mr%gO&QQ9+9U w;uk$#N=uP }m.i6VCUWp+WJbc֜]6Q,'ӄ"NdnUqcV+ rR`X⻩q#r5?{ĹiFK#Fė9,M j^ϳIS :MQ~.bCZ۫&vRzsy59-ycņ XH0zu6XX,qDZkhp4d0|یn@/Jyǰ~nޒWoj,s E !lDirH=E@MckMBfpW72޴| 1\m&{_3L3iӣn&x艜b9^Bd ;wFLc)f1 St@]7W\Jyi+kO zVƈjn_lKɢMRr AywiF ^C.o4ZShј|Zol;oZ۽l,C>yU2&Pe"k#KRNPKhCO3lib/ImVirt/VMD/LXC.pmT]oF}_qQYi:ln 0F}gc{1,m1HA۪}3{Ob"t<0̇{sk%o'P98ִ̽sq!-ZO< C&~Ol϶"(JE^8 Śwr#247M2?k!ARLB&Jx 2 y6.lyI%2WL&[-DyJDn<;LQx1Le*DF*(". sRiѽ5 I{) bx^ b"B=x>X#QNIRǰD%y;`=cKh2K-d1#iLxRZbt; c8C}< SabO]7Şm`E`skEV<*G*"oTfٚ j/JgJLV=,lQum5_8n f$g!cE nTtd\\v:睷lʪ{|7|E#iY4z*Em}k eJ;RQE`2?pu ?QKڲܴ,j?G0dHwBZ bb1{wE02_5B_MNW4vf d  OL5d{bsJj*){:_PKhC44 lib/ImVirt/VMD/Microsoft.pmVmo6CU2XvvS8;ߊhY-’/~䤩t[/6ɻ{+2b &s&38.RE%"8?)nB.d ӐǾs&~ol }k;< xDȭc;UAz4b gBҖ\]]s(:GDb&!|%p [A' (aR OĜa 3P!EE,/l83PG0 J .D"&]bR.Gd_12 P!q%b 0(4y<ՆUdWwu#p(S"XP$]fQ`6O{)KxpzFm2JX,N#E t額ޟ^O t/Oٹ;l<&T8/M0*E+_D 7PAv>XqgРOVS􃵿aKH`X6[c^'kl2 @-q.jKU.@l5l4a6qѫJqy|6fvy7z4d x"F㋓Yg oނuh.GQmS*5t枏:FiOQ*4֭LaZE&tWDbFh }DJj$+J2~GJ*屠+*MLl?ܳSϫi*\W0;8BA Bjico7XdSM1LT؅NV%H,>BgHďUj"Xvn8$BDu}, TIې̽t /z,#r@#0d4]\R9/Uڕڠwb+SWxYc-4L0 a(ᜭ-c! ֐7M3U֡ #\l[ӍU}ʑoKngIde~(z +oEs$ $'D[3*΋86ʷV~u n0?s-xqk|nᇇH0٪|N3#ti=i{1?5C3fHG)7U2>YXD>a\{%xQA1h4InDj|YL|v^;y+USAΟI°W_.s65e+EEQhޥ|zl=?؝7!62I~̪_TPiϠ* 2*U.Y%GDn+PKhCPflib/ImVirt/VMD/OpenVZ.pmTn6}bYeC7Y"- FTIʆͿw$ٛlHp9C]f\ qezwen.x,Y?cuIniRCK 90᧬on,RSŨa#!6xS5=nH)^p8tޟ5R\CNh(D21pGYB(6oK 0\<9@,"TԛnQbmƣ3 E)ưmIb}bIp)FQi| R(63y 3OݺvIh \,HSJ Ƥ:5e'/.7{GMf)yq&e s$5Oƽf^pO:`&K\X~73ׇ_-7]5VİFxI2Fx^MRG9B'v "QX&ŮVJU3Yv4=<!MuDJc `dR\KmԹ l.Nޠtu,LȌ5q\tІLi[wl8C=u(!(WaBÕ;ͽ 6r[߶o/m{^Ё)ݪoc ' ?0Y,JD6<ǐ9ս"\9G ؍gh@Faa]!w*Xsow9$\AB*L |\@C:[ *"H$8a9~6iPywdDB@ZT[1,SȾuP<$B7u X V+}m23u4 xS)BH1L d̲n0P>k 躋l<%Kc$)BggjuC]p.OC8}g0rAjxm1O<3B*C|yZ~h_B/ 9 t`}9ŏ9OQZ CgÍ6ߏƷ. ub>[`N OcETZV} 㡃^Uˋt>;Mv+khl.30.\F-T6 G;Bf; („' ,%IА,> < xH^x\# (yl4H0Q)6ZYuNj/ ~륽] EL3+.FVɴ?N{A:FcZsA(sgeVJ>EAϿ*Q呣@/q?ScFQ/ai#-r3rzݛp1Ďb!H?SQ~h2<>QA(9JMC _5&W)U0;֮)PKhCcL lib/ImVirt/VMD/QEMU.pmUmoF~F"^&jjZ k^/<34aB ޹ ՘ {zBq Z)li Su6*Bi 0yHcrCq=K|/*V0Ih6'fnܫsŖ7bJFc Ư ? A \ D|v JF!0A5Gl7Dt(@P1BJK f(ƛE2s}"c`Qi?D}Ńb<2E!ic 0,vtx @mF8& ys)&JrǒMR3Od0NO9t[,X')3djO s޹?M`<# :/MHUY@_Al"Rtx߮a Lb:XQ%d\`'_[7 5E [ӘO}$~¹JC@j7[0ʪrp~vFֳ٩TdYSV؅Ge!M?6v{۵JrD\1>|% Ȍ"H] {^@ 0bR ,SQ x!ENA% E&p3Y (f2eQPE&$.Cb^!'@1 آtc \+PZю R4PO-S/+h,7 PN QR;D($E4{ǻ.<'po=f-nb&eDM W{JP-W(:z>f9vapgu `Z^Q)#TK1j$}iIEjslKi^a RL ua1\5a'_? NK _Ӗ,&aʹhJC6@wta1)Z^6ףj1н U$ gJRQG`N?,?Y\K3U 7cջ(C"g+06,ߟكkoFK" uր3]bܡ ۨkg p =V}w$p m]=:Pɧiht0L`q/?h',#$dzc>gQЀoe_P_H1VǺ ,S3oߦnys\oafR2'+R5 ok})Ҁ|Whdu 6dp;!O;|m^0Iy"Mt,= Yҭ{mF|PR[Fqa"kIe/ ?^0D;^VP> : U!rkPKhCz lib/ImVirt/VMD/VMware.pmVr6}b'񌨩3}ԤS28"W"F @)j~{K,ɝv]9Kʋo9}4~Uz >WaEoPzMV7ӑEHľs=EYH7-" ׂ(F;?m4OT;o|2BbU<#V^k9bW yC.LA*B1\"smiFd H Ғ24IXbfAF+sM >A6,((eaȄ\- k&6 #JEk8-^E!/A&B7}[x^DC`DJ9EIY0C3^ u2wMbWc8匠)3'zC XŰsM1w(ƽ.Cpa^gra0 1Uď+$d+bC@"YL! kɨmxз ^ԪmdI#dsB* kh6F&#*m_Vv.H40mi;aB@$J(0'1}?6:m?zn&jj2NS H//-$Wrւ ?#*[z*٣\0p0K& ߨ#3ӍICO!l~;}'.8i씩&挬opO0inU=/eJTNqSROɪV&RF?<#K&1G{U:ɖYoKPKhC-ɓ?lib/ImVirt/VMD/VirtualBox.pmT]6}~J)WՇBwÐ._JQU$lJq`LCs=m25ZjP*ßjj*Bh<%L#?m ^xI%ضPL-. !N^ #(|Xۄ @cۊ,*ܳ sbYѺ Is^693f1|UAOZf|XcSO1QRG$E($FEbjB'ۛ,VX'd95iXq4OQSgԉg8k`Om\ ,XZgWSˁY.܇&0 oy╤/ !H1·'Yg;)K3`2L8 FF|Miٞ.D0f΅ .U YnӾ|ʵy jǤ#cNVgRQ0tЃPJP?3T^o^oC<|s)LQZ! fi ?ZM0ؖya FN} q[^P?c'x L_>Z4Xd44*5d*Mփů{Btƞ7K̚iL,g4ݏ۰Y̾ k4oHɹe&WЭ$LkVDsɑLy`B!/.:f/ -juNnU_‹Wxaī>І|h 9*R\>/>/*q9U!20XBuPKhCFMlib/ImVirt/VMD/VirtualPC.pmUmoF%X){i\80UE-M{g$V/V<<ӄe}xLG<}8*mpUwS9%p>à{_{VGH|D8+B\H^S_mLNe{6 OBUՠX5(,@I)V*nשIgr7O@#a  L*օB` ,r)Y/eAP1BJQ[ f(:aAMHyCXW@dY,,` WgC@Fq[09 &/纰IꥶS/BC`Y 4I*w,I`PHUbP6|rl}l׵'!eS)[X'I3'%Mƾtnt \an3Z.̗|,P >GeYkJ◄[6ȶ·;X 6Rfad\`'o ,Oi~HW0fE .T:uj}m>,6j?\]ˢkM jXFƲvϤܝ]-G|zP֖Te”߈ܼ1Q{Rm`\VMʑZe586 ]=#@A^ 1ofh gh-6!D,mӅ @3?EDNh̪Oz~jL9&˲`+idh2XM3;o[uHSo`?i_r\5x*ƉQ \zZj軙;% ;xLG\@4 #7 Wl?OD1P"'-/TY;'ڛ*l~FK:HZ**i>zf=(zBd`hPKhCiklib/ImVirt/VMD/Xen.pmVmsF b' bMCklӴtڤ{z1`;3|}nw}Eux L(sܽ0?bTWH7:V\: _'tj/υh 0yHfrsgSD`s_ATVj30e蜷3<X1*w_2z]M?k$3 s@˙@gjl/u"1.SDcMDˈ #(>K>nFp 'r077XH=@ZdV@PH \$(xdGmuI0QX<&|$/,`8[Cgؾ vo $Md)0ba0&τ 9@t/6Vgxs9@6]}e`0L,BrX s^I fيs{ x4O<%iL]8s6 Q[n-Dn?ỈTe0 x+\TKE6@^a4ɫbvyVEiYTbͭɚ X4#o/F!}/YTSڲFiY^TijRmr$LJI *nn]m!X3ZQEq#̕f^gP:"MSn݅f:+j+4[#A&f?Awy~$ߋy椐A~y($Id:bz&KRl9j)Mn/{Va1 f dZW^w8 cOK9!H|>WPIHIQ$&\i7FXB$<=Z"ZK:C( "DrXԛg @+2L`Q: f(%Q* BZi#^La!gkF%DE2$AuZB !'/,|¦]cŋ*DM$+ Xr8.QW+͗_p=X/}`FZ9YQ+ԌU/O c{c{R Zrk4;S(v 9]-fk_u!( c`S"BH:oO}X|r:~zG9h(4041cPrY,J)X,>B)n7c[k9I T["8/K-Cĉ?aT11a|iQ^o \h)6>RԸ2=|!v*0((^~O606 穓`J1٢`:Μֻz= ݝs0dMLcWmt xGVґz ڟP:F鹅krlx1hpa~Ou+!5&"J*1NjwU̟Kӽ\~/?7b*+G^r6ɽsu-Kp^ZPKhC)ܩSAlib/List/Util.pmmSo0~_qj{ k[*{LroN-l MQy.u)r6سVVXܻ}3:Y~bre7|?8?+O5X.j[ʮZЗ|V@RS.]SFk `JyN) bQZaəҔDg*5 pcԒe WJts3.TNRGO?R5/$2V_beBc36N d>LoGC8O}NgÛhNh8xhLc)4B\(MMQt;Wjl}B&r;ZD4H{jn]|rO0\V̿_@|O׃hH}<@VBʥP4jhb !%< ZQb)JEc1 bG"޿|%NO>J[wnk|Rղ o5MΫ[^Zۻ k%xQٸjI_*`!H4m"AƗSJ7=wnwgÉ_R3^s;RlP}R7j,6f[a706U[vi'vv;9[z+V z3Iwޝ!t$*nPKhCD![{lib/Module/Find.pmUmo0S6D`&ĆBH UYa ]%3:wvHꌌORʼoQ| (yвjN`y/<W,+^FtεI*,/J^#5Nj387A#8IR&dJ^gG*]?OgEKtZ} 79xۛs|["mN|8I1^_EbeX((N\2(wH:W9{!][adY;,KwPjFab& P;4 +_ampk9B:z=Bѱ_o{EC0Mѷ0b 3aҺG~D:eBHsPB_ėx0t_N H2YM*-(Pfq|UpMEaYYW"ieq$ ]\3¶F2⩂u&BQ.Qt0aێQ5xwW/(h(Ub^"%ӮvB|yPsuگ-/} uh?Д" ÎRm/kh9ä,HV%ego݉!eM3ƑW(α\Ukd&t7na'hZLLռP[ywD=VN@ޤ '1gD0I |֝=]?{&:'DpoK2ih/'Swj3|²P PKhC_`#' lib/POSIX.pmTms8~q \pOb2ŵ Elgţ<56Dsm$ۤxVϮڽ̳".hׇ}s|fƝHA*[Kc?Ȋw:O+/^P%= 0W`ˈv1:g,-F=t\ߺȫlQA7iD~8fU qR*f.dS7qŞ]..̋Z  w.@*07Bc97+&㼣›7 4qgG^sDу6o2΃mBĖsX1 =>qx:2L-Rs4?`flFwgxV#qw|Ww*ZeUj㚏Wf/6\ |eڃ,HX,@?:$<pu5AJB2IGٲ<=?3Gt..8$<WK+BenLmɇ:VdJ6a -Ղr’mu1(T+bBXQe=MՕ+ʶwwDdskdon~\\٘yEYc@~uYY}r}1X6yFHm &ۘ-e)!w\G^ 5,yKNI|gz ihl[\O^'I 4ܨL{' -^5*z/{Sq0bO9PKhCHvY0lib/Pod/Escapes.pmZWȲE86^@6! oInHԶ5hq0MRey1Ru}_wWWWKZ@՝ض:,joi5ڪ-rB;uXʍ:p:u;N,nwumz:V}f͵Bc+s DG[L5Ꙫܪ~p{7NwX>oRCG'ۻxoo/Ȳ]iS z4 OgMqܺÎr|Ucu4ysHճ` fg?_ZIVgzt)uTGL!4t+G fV/hFN#W7l+ -8 {5Fw[8USu _-D:I; `,[:u zw )k^K&+A$vu_\6՞Mگ Twēsy]fK,o!;i *NQkP`ip h0gCU]U1W'Ua\]pP^\wJmT%jF̞MRZBy~g#o}QOըӅ-V?sAںibfbW`9JKl) bSe/ ߎ%] dd 1:>=zRS)dF+#XHUw{ۃI{I+zۂy~oiP5%Tu;2F^% ̵yzMb ={ϣ0`:5+Rs˾ȳE%-̐kuK#giuV%I͋&%<ҫ1[ l7~Af҅@v4YuBp(0T3Va^x6w1i~@.L`/iUKxF]}i,*V44U]_jitN3ʪ5T6ӼCw[9 Ub^ทź18v1/F<ӂxL!֤6tّO9?Na^oE8NXo,0*x μ0SxQY'9.cDew33X-!I? \z4/9,숟Z~a|`<6U\Jo] 4.h?݀'/A·zETAd,gSt#nW,1},6%GC/M˽.pF&'%ɉ3XNkQYǏ)%:.,pe]7\g%We]~v^)ċ`ΦNJTn lVVkT&_v:W>m?$tCݾx%߾EGٛwO!98q|O0^yEz]/da%"! x~b[.^aS!7s yίۯvېs]T~|}&s&DZLSj1&M&ZEfPOo+ĻRsz﫦W FjkUJ6Hf۷kN.#58[' iR61h4}^YYd"y#-vG rMu%2b["#TdĶIuȈ;q"#+2)2➉ȈC@d EFܥȈMdčDFXdMDFTd=q/X#Ȉ{%2~qEF"#ȈW7BAʅ|нt1v/_Ļ.]HđLVav4n٫ngoV*21>?۫7YyR{O{(wk3z&WAd]UWt}ij7<Q kp. A|:̄> L&uNB9Q{秂Ɋ2.s4lTi]qTp-Ff=?W,DP_W[ 'lJYv^.sIWGyTQz \<5C.:V;P?jmUNOw__wm}_?,?O@[̍7{0/f2< 3&P5œI\羷4 ϰu!oVaP r^;򧡇rg%ب3.u݇y?=t?i>i?Vn}yܪ>_-KQ>ÀmzZGH )-"% RRA]dG ȿ ".n{) '{;6䊿!ʚّ:)4^p7 7{Xq8nB^ʙz3;ܺN=7[g̫DvG.]8[%Eitl/5rX܆mdՀ~~QgtN_v{jPJ 꼁jm#IܢyRPKhC h4lib/Pod/InputObjects.pmZsG_Ѷt\E*˹+v]<+Bߞ}>mDlw-%E8z5U9=l=_e Fb^L$,h L!Ɓ6A))f!2(1uf\OO pQجσRiuh7:V KA Orl>dM8<` 7Sr= ?A0f]R=nB(JJqJp2a$|鸨;#d,pľ,)n3 TZ."޸NXgYg*q((U5j zb?Bf]lcD>,bWIf{xyjZ:ahCq}pw {j1'5ϪnŹ۪Tx\M8녤uw f ϓ\ۤtC1Oacp3}>e:|kLR?h=sDp}J|& #A#B90wp9rb e2RC܁(@s*,֢ /L\Emj؋,TJbOdft(l| rBPhׁŇUʶޢQBy3(X@:/Pc.*?<'rd߄Mz1ѣ9:#z̟э>@wwgj;Kg{LQhD(]|)a= Ӷi[$׻M i5cM?3ty yDp]e˷:GtJfΠ-: e3kӤهen5ݬ-ܧ)Cݎ)J,kL,h;wR/VC 2hv3 bJ+J7ȳ4dMT,T1XppA\rCMj~TצbbJg-e ] F(E-ՈhPkZM>䉥ʥQm!H(%c5pZ_<b7xyK']F)&C~r(iV:IB_述/z8aWsGnƐFJ3vφR Sэq*c#<-0Z;UAF+Ϣws%wϑ;Kwj]~n6&x,M5Yk(%. g,6NGb:S1P6Kr?a@Y;{m]$IoBpAfG/ !%pAe!Ѝ"˂ @uH# }Vmt;MA՟6xc 7x-kuE[pk PF:ܙ#LǺB+ .|,iW㇐X9m\Dрvއ hZu4͋S' Jϡ)G.1єHIM)Oh^WMz9; LlI8Jѳ^Sy1dJ ?6u3o`%*7:k[c.,VZ5id ?(*ݣ*vgoK"3(Qc#=reogqTD$ٔ3# eII{=îD6D2YmJ`-q4]ꫛfZ2EYȟOhàoŲ.{]#磍>j1V k+704c-{?^yV[_yFmB:{;*z)=;@.X'f7<#tR_|A -PC1{7nkwޯkܙ܅ˊAY_ڜ3,@uN878C88/DG!!π7+4i觋~Ó\=2Wa&i`HQ2MʖÖA X0R^v?=5d͙ܡu J0MŬ /u=Xs֗COZ:d3aB> 0OzL^G !?(5{W]kY.}XcF^ 7l9:sh#Fo6R1ͩ0iWi~=Z\O5gKs83 \uI=ٽ2W[_P!'L>{vﴘj i8 F nN}B^ݣJݫ PKhC|m0clib/Pod/Parser.pm=kWGmYf$~ L0Is8:#&fo<ǺNLwuuuZ? #):6n T&ٴv[9`1jb(GG*R) M(N`Xхx{J A^Ch: /ƙ|yikkssSI0C?MdGm?Dr`85‰D<":00q(R( iy2D |5>GCaz0"4A*d#R914aۼ9qd;k "jALk6'`ћă`"j/I'TdA4+Óӣ7nz*}< <`﬙]}P:'2q)% ~<$œCӔ] DL ڷ}ηDEY8H$ SdƟ?$s7f W ^~4OxS>\-8xz gUz[@~dm- %@Co&?e '>a4D  i&D$(A!>GG[gvઇ/<ɂ;@Րc&I?i=%̨ أ1@:MpAy p y08L18Cv Pyy?5A'$qڎZ_=~LF@3Ct2Ek=S6//¨_F3!(=0J2=z"783:3xף52i,j$:+0PO=Y-׌A$Kk)PI{5Wz' }ʗs*3RIju{{^Bl iGqMe7ḷƉK2K1LDZ)G*|J4.=BZ"pqZ TfcxtLt&I'+06 c ?φgM$~]nc0t0z'Os6lI{>U BgE MtĿg`]81xVSBӃIn 0c&/F{BKd8u݌*JTo 8FC n*!bvp2Ldg:QKC$'50_GD:a mq50_ "ni~"3T#n&~ ɊUx,L\I[bp\02ig 3<Pd2u/g90\;mx>n]hp9{<:8*`Pf\qCq{IxpA(N܂?;>Iɀ>H6#`"D HEpd?7h92?⤮o oo7x-g&ʘ8;b|upg  {"ܢ [huhCcb:ZFJ'E^oz* w_Ð yQf,x[Kթ[>j̚O0.%o›ľˁË&CFǪEb:+:vJ4C9P@c* `T3FNR^4"^]CH3yT \1xHV kɈ.1/?}SYh(rOb4sy 2"mq.u z9 4$>Tcm` A$\HYcF^%d"828UF^{uTD % ^WAU49/#s`;T j`A\V>YnVMV\`M.:uyzuEcU]t]a?@yU^9@$pK쾧3Jzw\ʽ_*&fo6$ 3%Lђp|G+w~u [DA*"M ̞Ór]L{@g^Ӱt\FWUK(E/νGL PkҩV:b$?vFc W>5l :{9rS3- xk\x42&% >96K+Du9;)w43j;B3F3tژE1iJ9edú Z*6ŀ{aє- p1YZ@xtLBCފXҶJɶʂH{C5Nzǀ{0xFqo20߶35Ylgkj=̢($H3G@NlYY+Wj }]I'Ý6) VƯ??8\pd VK}8q4( 6B6H99mx4F5B-ɍTK6blꠜgu mHjybYb.ɳpaI֥ Sn20$,X-W ~٪]55->*\b/HEv4%IGwR'\]@].T*0q#"~MR˻z:G5c%KP 0ˬ U]7Dyr}xx-6Uj47'(8T]}sPFѸoи ~O^qzsFo*q- MX\ky%ՀlvԦЧ- 6"5l VæJ„6> uҶopzPdRp0k"Juݨzj>G{G sd6rK5pCEbGi[YsI}A@f.y@g{ 3H򋉄;'ݮJ hC_k.(Ԛ6G;wa<E'gc"V 3~aupq݄3}0M0ۡU*3K ,U dgQA3^¡mٸodBQ)&oQ#u5˳+3q7]RШKkyH_r%yL'yK~}TqYR3$BJ%r;{7)NlOmq?S"fl9 o,;Fߝi c͗Xh|Ðdn3ך"`w$ěOUvk x),4qYE .5:ל_M$}& PTڴ/wxvwzvrˢ(dzد3r# KWe'S6IjCڬ;Hany[eC\ ܂_ P*=Klu[)C1!s8N'6%}˫v4xci_j%,5-_8>I_G.g,#Y_aQ.jnPe}]57N%s@3V)B\ ӱ)Nm|wj,%JNzzרr虨k>O?td_w_t_՗_tmo2UQg= {$|ŠviG[+;tggqv:(۶`/#1d Y?Uq9PY@|918r{hoI΀z? ޢނ­)^-o줕2gji~Ӷn])RTE;g jO6'W'9K0ޗMVol>bIPǤ` SF,  , =->f]agʊ %_hȅ%o)]A .@xa~a I.boxwmmY ^ڈ]T3֋qPQP|H_ ;?NJٹ(oB(-p9|8Ƴq)qK%x ү# 2Y=ʞv5?/x9_=hpNCg|*״crG㆙ ;=_y95x>1 [ ESϟTԷH3Jک3\؝4=M{!MrwHYVx2$b>FQAu$sP~-e6RPy%TR"sǝVXݙnV owzR3\%uteʉd%;T)gt-:X "KEzPKhC^ <HQlib/Pod/PlainText.pm=TLg1 ƥwJ `7-ZSI܀HN*m}j)421<yain"am0PhRzvQ MbhQxTV'ce@9A^FkG&V >wkmR#R`p>Xi9 {9za<RY(d^(6m=$ј5K4y}<_Ӱm{pGt"Ӕ6rQ*^E 4Lp$ l֘'4@Q@<^^Su =Dq} `@*t} gKK/Uq\ϥGwMv pϥ?.^nҊmp˟$p'I}Y&NOj`=\\J.}i/v%KNy]!\ruR!.\p}\). ᒫMv p%W.ʇpj}>]rkOm+Q9 }ULl9Q!'?wD<w8_*Mv C"Nl%t&w.!|Xmi&9&e+MÔ8^g:v 9ަsw;`*'L!jl?]|b3pKDUm Yri}6_4&siZX\pW.Mϫʒ4Mv Klʥ1KӞd\zHqxe. =D>?\5ws;\>MZu#>3 N"- <6J$XzrPm ]Mmތ]1-TMrbGz,;up4>X֬팧ܵ+喻$,*xڒ<ҿY5&; 1ӒM({o^]jSu8 )]Y#z`MCЛIx3xji'p*5BjTT 2y%#)nИܯ( W$FND4m3,6Z'rXS z$WsZg:;BQ^wU{թ@Ա Rya {[{ˆ@DTCӤv_Wd’q)gW@Mm`kN`[%䪙_}P`d^ӌAԑٱ 瞖8ZORz&Y8#vʯ x=ܼᨯ/rEݗu\giHUm 88a~DQ2HnGVma]~?T DS y1,+FC`>UsaFUۄ:(Q?1w`NdFG >mVnn3XW:yXQSHOp\QNQ(ӨN9)Ʃ%J:~(G{&vz$ZzH9$@>?f]evwKq,vG^ ‘Be /*,Gq}a8Hd; -EsI8hcn*kUXYL>Y5lQl1[X@sKG/|0A-.BaO)PՐ9>h >?!ڕ0n(679Nj"q+3x{]-"R] ݠ rXR^eV:vðG[A X g ƚ!a6;-ub߲[;4~4yTB,0Fld"a!9^@1ebt`pl;O!0#bdT>GEpp> Z %FjP]^(`UeBW`V=+a; qGbt,',GP, Wxg /Jb yQ'wPEGZdZȿ`tyvs ؠSQUUԁ8$Xjm;?W)~%R 'z#]+Y&:DU] *z9]fHD,_$VjT\$8yAө6yU;_闯q;]u 2tBþJ~uBbߋW^ P{TW;TY]XPuQcʡU_jhF5=QB5Qlѷ:ŸUB S b lMtrN@N19P#p4Jg"~'[Ū՛WK]y6();V@}2dNք`bTElux4-_VZz UrzT"M&Yb[p.TLI`K|Qg:K<-UWS<v)A@R9,fH+L:޴&B[:+>Hni3VccqCk_EņK^It[Jb Cܗ:7u㓐h+l]o3;'O<9.65%eopwo.9>c8O)ަ#[\ȄCxEL&{dd׋bi_? 9G`"{T))L)m, 0(փvl 9.Σ8OXSHFz%tG RvLKn 8GB}%LZ`ЫJ.6 NcB:v{d^ z~!ΐs W;W1r^e,O <i66엙}bL6⤴X Us9-dE^(_#i]>Loj֪,GXOokmpY{tdh'3')Wfr XQ0@an*hzԈO/!o^lχ>X2.}WӔnD6b'PԀX]Bt}+Dvs˲)pE'S gT@!䵧qD.fXGᬋD~6Pw0Mjv6o_hm =(*9JMxU̝C lTIq V#[M+_:V'luҫaIn' von:Z/X*Tjǽ͇g-#uR~Br/\G2TMawRdѐ~ H(&/J!P"ɜd9.y"zw"3oR4..F4Z~9N<ӅlG>+B~ úQm`O+&tڬm?i1!TP'y1&n~Q@҄FXgOg>WnćeHy=wJWeMy0M 3U !.B{K:.[Pe#YǞ?g`T)맮P߅^j BYnuέ|6{ & =p03T/Z"Lvǝ(j'oq! *=ʹAF-ه}à{I&qRfL>hcX~-c^UDASnmz< he>e趪lE4OVS7\H?DIm(CƟҢ]n,S߁i՟$m?;c1cɕFS7HZC3J_I렑@}Pbcpa,O1=*ЏX޹϶%}s(1{ZmՁ2nAIB[t(ɸP[۴(*}ދȈص.ٰHBÝV %$ f'A?z̃]Kc6oIyƋixD"cw P# }0T*uJ;yǮϷs5YGP l* C4ސܩz&&Ǻ(f!>`#A0Ц"OoaE#%p3 k+_JԩtTԙYgQ-SO2 K3]j:QŇy4}󻺟ےOlK/ȭY~j.Rۂ̠ C}9Rj,-\pP9 5aeKޗ)4:Bs+,ų4 .]Qꗪ ]I3 == Wj.ST 4T}완(ENNմ`A\-/1@R֩hH53$oQ)U.~"G JC+15)`1!fY*zkLow߭)KKKZXgXu&4L[ kqҙnϥj#5i%4}|'CU,BSĞh>uَ"[BBɮTO{b2W@USА+Divom EbI=XY^ v dtIJVs jY_"t/_JZd!ࡄ<\9 bfw+/ZHV3pG \6}IC*&Mi.җr;sU9e^YҡB]%L,hTGz+Q ٠c4L1j`/+E>q ~ dzX`OCNI+iREZVSEs:{4˜Fa 4wo cVRbj;V&TKߛ}Q*O|﯋Is~`!7 PKhCʬ(E8lib/Pod/Simple.pm}}Ʋ|5 /iz1Է'mOOaTD%ugew+ 8Ͻs@ڗٙٙ<)o?MlZ."Ϲyvi.sO@vl'$ spۥ"_v_|x-vDimlG%hoEmQF+m$*Oaİ`reHb0qC(i~0@ ̧3ִZC(g |gwBmF u'`_y 9Xe0"V(>-k '&:3263vt5{y~ \T|CTco2jvnLȍz},r/v6< Mx@q4>@>KK?Oma]'ɵb;Pwl ʞq}? 'XJh&a52B&BMd㴎3C߶YE@2.r9.BJqfm.}}D- 6;va+A[-?U֭ץ 0UATǽȽ2lp4A$W& 7aU,K7e2%w)*4}RdZ!†F8Qv2(#JqZ]ִ y;}Q=\YGՏ۲+4HRQ)AoTzL#_HJKZrZ]j0퇁9ER+ pW )z zznɼ//5eX:Kӭ*˰,H v>XB'&a^*,|f V3 ".YV)+_`6|0.I wT+h{mQ^8Y&E~A:s-`M`L dAO(g ,°܄:0ihdbj(5ո0Ss/αFFG4[@8#0nRf4 '.DW $ G՛!i߂ʜJ6$&neWnKw{|LV?QCEk܏@8#L-~EDb[`T 4IK!>(JII#rsu<+,hoD׊^B1Jno(/x+)66AV66[8_Zƒ7Jے܆xO2Fm ]["zS ؍\8}/iGe)(΃TbA<(^_o-6b>3Ն )[P>j$喽a|֗ܺk'RE hl1S?q٘".w9t(4{V(QM5$;-j;- ߷XzْTTn| pU4*J2J,&/S)f{pI\2xm #GzܔKVYy' ;}s Y8i"1'HєCX"H!lyMOzWw xF ~y]??t:2=}.].6cFB7]2#LLHVjZ( +JR;%5=g39Hw-iq'c|QK0nk]KM$˃ >8udCvKOV RyΆq O&O~}`%0U+Н7_dZ7Tm@v@A d ݢ/e&S _=zT'=o oQi$aQ%n>^OL&Krѻߝ1ZOgRcwpTCH΀zckQ潠PO~e[DCYfxM3A.|UMjaɖhDBWދ:z Vc޾6}mFvEal! oekd}2 YFi`80ؕM&vlANOSA 9WJ O#_I vƼZZJtxᚵhѧFXnnd6r-GwOD @.b|}CRrSXL)g, L ֩ǸPA$Z2쫃c.޺B%[XI{wl02αƀ6SJȨk |׊,7 'tl0hhhH#D9$eچܫMy2kK ڼ D4 <F&eRXɪnVFȯpmriA ː>R'u:75mpkxJ[ZGtO >'ݟX!Gs{ievۍ{Tf! 290%(L>3BDAt+q5blqع !^D>4 BB[L&?LR଼"{$#&sdW29:Q[PՎA1F4%:G jyV .2Y YRx bKsGT J=Rf^Z?T%}_ᾬ(VE,QLBuCw3z%CGPZLS>B{J,ө 2A^u~ d/!}v!;%iI5Kl -ZSM9IJT.0oc{eqh9r|cS4G)hT RF"} CuxqGQ+d|Мz7̮a٢*IiGrf>iÇ tdk7b̒e(t_[>,08P8̑Pi$0h|m?ϛơhl|Ifu{\wlu0GuK[%rF_?v#j(^\Q,>x:Zͷ2dР*ܢ#ᤝDH\,LKVC-B}ɓD00k`8iH2MV8DN(f- ( ╞ڧUZF#mM!UaA4۹ lZ:,6TEfJk 9PCfpoe  CF V SN+)g 99,Y"% p9~A.rO=Dauqd>Cˎr^BR iQ%LF2]B'2(-0 XOɜ蘆OHNۈI{K5=&˥3~qxY$X9qm0[̾ N۔㢛o2wqi[؍勎J_R/J>*<(2Bfmd,MtY>30)a AEnP[#nNTz\ٳH)yU^f]r= G6ҽΎzܕϮ lA$Zf.Ht90,3o:B J@tŬZ }9hs#5\2kwbn(x\` ] JnS/~4y@ABVlI> ,FB)/CM(hjla~,!A([[ ]DIV|F> 4L r-dL8WjFhȬMH]3y%,iBX7JqEC/'apq2 ANVeE _$ "IKɆ9t'p1C'v?cI,}V"(D+XXBE:?2 &S^&%hȘwoiHHv ƥy#:feoB*8e( A笌|.}:S==7DCkJDp>I5:bFW/8< aZi5PCzSbM> hx#oOd$獔lrCT[LN[DjPnK~X_ 7S z cIaJK:{4\RWЦuz ,ܥGaS]ώ85uM[[e1x[1y6`ڟ$aM:zQj Nqڠγ=~[ݩ{ <=نA&45A6de:Z*b0':Y4 {-a|0kZ&S\Ȕߦ.偳Sj!;UO_+, s ^N 5qmc ^XBs.1Eyq0^݄޶tRfc!'͘O.ӟpgժVeO9AWeIa]>jŧj6`rX7 a$ kvB&DՌp!<$zQ1K(#X LgiSO3} }_w]BajO}(} hFx.2`Qٳ0HodK:p|4i1fh:wY8\6Mr;TWgDOfaK!]-m ӅR :a<¨w| (nr@0!*h#&CIt 8Hc)^% *a/ }WE2h Dˈ`n!ّڡh]AvF$5{< V2b ]F(bUx6s?.3@,_;E#ISK8āЫ} 3.5AS ddOYAR2j'U 4&?3=KWq Zx|i̜Dd*ڲm!uin@jJZd Ӑ]Yh &DX}'@[yTį)A)Zt¯ɶ`|wܨZ2׈4/,q\8d_t@6dj4Z%ۋ42;~JPq _weRRγc1V1z):++){W5 #* O9 ٕocЊ8~=?z%#~snbJq 近lS%`YF*f5o6L9[kΉrc歩p)6NyDvoGdEН66d-r5 # ŠaePKx]c|Qvn 6#<(隹4uKzZST)XV/Nj'0Q/ITaH \t$ p;1wk|e =U1׊}yqmWz`d0s7V-YjNvR8HqLa!EyfksUTǻ ̖p,{v_&$G6 {G/֪3=L)r^"Jto.Q- '~ *7!8J9L+!-5h+B"bS2Z|{Qb!$]2 %p  cQf fƆ}%c-dYl AK^Re/8Qcf`ކFd` ٱC)5¡ILvy!fy/z)rm23nmG #7Ji|JwcLOswEaeA `,*|J)HDA?T9hqrG©i"c~̗P I~.F0dq.=Dv"Q7.:_ڲ33%D]dK^ʘyVuidꀓآ{iVIүѹ`k0hGXj ;/|6 M(c% -Ǭ\iבq3>+(H M\LG/`ZgRPiidڔa Q3) E [?,Ǵ>Ɗ.s>**?llܿeIì/&ch!P @rZC0&P:x6m:)HmMP|0;Q9ŀ e.;KӇbAz_\I_^GpT GNvZ]C9߱bF0AQW@*hLD¸]I˻rЌ{Ex{ڣ4Jd\iiCOkX:Ɲ<$o_#m mDɖ;6OE S%y{iixh颉SX$k.yϭOW*Am0Bl%%)"du'Y>kyѢ.e ހ5tGN։݃wxmr;8Y lȪ>_M(UẼ5l+.̓*BDe5ݜnVW.I{B1_X o=,Ad񕡓yX"79Dp;i2 27XrR5'ٺmNUjJ ͻe{ak^@B2Nd?l9%*q[cM829 z]c]sT*iѨpq  ~O6q \ftuYu9ћu/[ pϖzobD 97<PKhCIj?>lib/Pod/Simple/BlackBox.pm}k{GwDH2ocM&/cmKjKJw [K]"3NU]SZ/E}4Z; &ӱ| ϟGZLw hrnW5٨VVE3/'"EzAtSХ*Y%̏}4l298S?슩'@2qiS4gɆҗb0 >IK|しU7 =≗k1áF4Дwah&b;L~T@kx#w#%P\DNxI4K6 }mݎ|P7*!lj=Kucy΍780iZx_ c/\xGS"00QTW{yb"/^JDLT[D N?ٲhF`t VQo7U8֨FQ\xKl?ĥNB =Az"aptD /?zxb.|H} ITO}" maJmD|9vF OAWZ MPYM-^ E4/?Ճ36JpxqYgG#IARm4;vOPށHmm[Q`(:o4]Vx = (p3qԢQ{1 )Nf1n%Љ iмF;GF 3tV T"jZ:)z =n'nGy BMW-`+Nj Q ?cu'HXDnKG`Pfd bY 6$@l7DGb#ž`.@iaTl*"lzK^=lNTG@xT[.AL`IM23NaKjQ}?#M' ^iVmZ;A c1ks?Ǥck!1Sܭȯw9 qͺg})ߗ|ЫyX۾J9y LP5>$.ܪhYn '沫xHo|L6ּ DZޗQuEU-E$ ي =ׇKM Kj õW 2' S.3wU2eݑl6haQވ:0PqET\w'poLf1vU' ^;aK'V 6e=:&!ߤG2w}F3Y$eOeU Xm"@;8(4~onY.7X63fw(_pu(eQ.j,XQ`eX2FZ4Nr-0A?kFAF?ovFkJᇃ_>>4}ۡ 8-Pz֗6<>ة(b֙A-";1c*JpՏx j^95?-~7awA8 ѺHB8|&O3t~nA+222ڂ7%=oa^W˲ J^΁y) Nq 7AxæynPqUr [@|g05pNJxn'Wu 98cv^`z) gDzAgW&%e޳$p4*Z,[s 쩥3_M ;d•ܛ&qMHBSbUpe-nE8 lfb1ej&՗dfBagyj=yA NJ5 F ܏?w}k#8XZ{'<~<M 8 \Hq{8N t{fdII_֭n[_Cu`pkW,5bg<:o^4¨MfBh]Y|޺&A>{F TKjÎcfwVfBbA{E HNID'PDzkb'޹oer_goóK0VC5,V]Κ7]*3"݀A3#"pDlj6jzri7YBp}&&K,]yI%Q?Fl:hzKkMS keN(%97Q ^,&u=4Zm|[$G#/B4̤,áAgkY Tؠ*P_y<Б:A8Uw1Xjg 1\xʹ}1 % }>#4@ vP*g܂)5H-UuD\ 0B%) Xj!̊{v^B6nIhzK@KR h)Oe&)+Z\}/޽ݯ,[9A@oTƻࡷh;6S(: tKOpDudRɵqT0,+JzE]:FKU.˖ i75/yN/]T=n{PZdދb{g)tk9 κ?w]L 'Φ*hᓙM՝Q@u!Ha]2.4jIV_ # iǮF^-+45bJ媂pu&i0d&?2GȠ*l>pZ&]=Y'LT75Δ c4FSslD41ii>*RET[cjD#ຼ;u@j[AF'd:`sU5Oi2,/C;F /~e#vy8S,+2f5%Hܺ5<.>i';]Qm3X"p8M,0#Â"wANMBA߿{~ s=Rϱ7 :j !Q'q6:5(bVN"cSUZ@@iRKСXN) ([| ~a_ nBF48D)(P  =P//#8U)3N٥)E$"%Fc1[)nuS IKml .n%M^KD'mO֋LYI'Y~)(gm#rVai:Ϋ'?Ž;w]iȻ!uJoj &0Bۃ'1 L8B]3:;Mځ2e&TD˔t\c(cdWЧWYqXq l0'[IKB2Cf-DWdK#XU]Ֆ g*ZΎ[뢫?.TZkd0 t04Wos5'v(hաnW4вHIƔ>GDߒ4F-v/u; A,,S𥉘Ы+nڃ  y`NWl<= ?C∅34,XTi$2pz9[$Ď8[HjgR]x3-~ȻzQ4b M>49bOzL@6837Eñށ /YHaB'јb)ɉ:wOwD_&ΩDr&+/$$ :o{8z]omK"_)H9ݕh65j 6&ez'lX1Wd7 %A#yx QlcNJO#P" OU<- NCoxȶς&QQN/vOH!g\Q@爐Ҋ08+BcX~Snێwk(;3j*+2?``;n4+|R#&tUR_&$7t%++**K{2od0 )e^5/ǒ.QSkց}%kXՎ*NhNJl*NRtζ?<;s$O~'Qr5;&| VHPggɢ'_d?` j!>gE e9=7AB)>ʫ9el 95L"Mڲ,X y&9`VXELa\z({+(J~+ MW# +g-n߯("1 `@OibVCjͲ`?i/iӤwl˲]|X³(-p IBMf2Y|8&CAb`]POS[ѥ;*e*u_H:A%#:RJ䴄Z/8/u4)x+ TDjtw%O")|{V:qrX|BUk5 \-y~]f%ъlWhJС((,C*H߬NP~7W}Ր4X[9O]1t6EA9}WڻE6ܕ*4iTrq1YMJ# %a=:VLS5u6KR/SH:AF,f3;FVNr{h#\w5<0Sc@x3l=$t^ClֱzPv%ú`Wuu]SMY-! oȃ7b%XWJ{NdBQ$5h_usa= r,v2e`>Xb&'G1Aֶ( C.*dQ+E.S-2m" U)=i&@2SP ~nX<3SXW u#U u㖱?2KW2)ZX|H\% ނ{ܱ !d!PN%PVE%lHV)KY׋7gҩ(#F^6O;s+=Gs4@ |n٪u7tQywo\fjRes4 Կva)(\\{P/N߀"NHYPVr@jP`_,f rL(BHfp[ge _X .E~:n(!\U)LyhN gS`R6HG8'ѕSyt׺<-dFN1a/}$o ΉZB5[߰ Al)0 R]N̒,ϫc`7 Y/ E *͖MX*8J xd-uDڴc/?4o/ V䈩 ]JTCJ䆦ZQ[ppu $},oc3 =?r% %5%Q{i#Gx$1\(1)'sMYbtxJf]J04ݝc(] \f$V3./z^]C2,q[9Bx29G QX$:Y=w9<@3'ǭdȍF~|:NжDz*hW53R9XD࣮9wX5G+T⊇\hfJP0 nL/"D{"C0ǾTz\R$"Ro@zq/n=ޢ;9"/ >l2 S"5 T BPFƁ?jF+hctp 8;U欦,7KXxƭoU,Zuߔ8k=u+ȿI/_]Ge:EURR} Ռz=Tրc"F%UV 27׬m|©h\SIW:qJL M|,~j<{!}]9eg[ r xSie8ٺ K*H 5g꾶UE`r#ރ+oP!AzoYC BA4V_vX9[S ;ҟZ`w; Ԭkץ&ZF;Ue{IvGȚ*덙4RgeJbaeuT1ZaKU [}[W+,v:`KT_V]+}nע^-wɚKdgXߪbZJWZX붩$~-{dLצ5_[U9L_U?8Nȭ2aey9;k_{x __k6 VV:Vw`jW{TU5:wHuZT֟Kj,[LѸ]\׽͸ckGt"stQ5[ׁ P_Sz!1{cnAbS-0-|/UJ1ݻ_=dw۪IleYJ̺ƈg]EAO3pi"QO:ʛ7-bQv?xc(.[R[EOsW^& /8HdP#vD=]p}3g҇VUnfS/=~l҇͵zQq):#qssI?7K\S¦E6)*\,ք7,8=)_IE(tpv.6ΩfU=׹Cgk11&!cbңKMº*~Fs A$Ǔ $/ݚkZ)ڗ"藌5A95Ne 9iy(9#PDCQu3rDwƎ0߯HX}TTL ` 'D!_zԣ|Qr T/~o%H #(8o=BjVoJր8&7vv4l0rϠFғ"v PQudrٽ}, W(_t3FdϮBoז 0HYW]ג'Gm2c?ͽRyBW 1ԣRF[:UrB,8Xt >: \\-a`[6D-Ez[ue5 o(uD/hvD,z_3p6U1anh"Z)EbAF< {$@3rJi186Zĩ(>4 /e4 ki"ܤHqiZpnbԭ-:rhL2JoIz ^<[}7*\3Mg.<Ձ52 +=& .ML5E{*MjoS_367zm~mE#J7ĆUA3i*eӱf#M& g%JVNcqUAaWV#[}D/ܩ][釥ezM y_BPTu9Ga/#yѫa"D@ n- 8(q&UX %2LYrhxnqf|E}5eJ]SBxpXd7o.∋O瀯qJɖȺ6cY vI=arB*G7(sOkQ; 4a8hXϚwӅD%^is|:vfCBتgKz$Sr,^2d j.v*pV-hQ`pO2gȺX,~M O26zM134{hGbEiws4~ f Ҥ,) 9_g V[i T#5<vc_6n66 0HCذlBY4\~j4柍'{ay}j3)Szlݮi\ɹ3Du_ x;jWVb-q%NϠzYJ|tjMFY\+)9JSpU@ujTm7!VZVڴ^o%*݋у2{-PANeGy^h1$WbE ea-Q$O:.AM4(< Gr:ÿ@GKbɮfNs?LT=\ etod7wjmopf(aUDdu .N|Y3 *C>Qd%Fwy!Zy[ƃrfՑ:pUm <|(,f k HT5Z!Ne?ˣ 峜0SwWc׏-ܷuOdvW(g6,iU =^3C`Ғ9oڠYcȬa2 \2U,H WLq%I-qeHO˨TFwSH6y!m( ӭάF}Qef/sω`*~ p߭$Ub9x9b!3b_IoP 8/iazLNkY澁׉?*ULѱ2iiC 233-q܂H cmS_±RXkh28P]>Ngr#qcSh~G1@uV~L/V/uH4qZU'z_@&S[gCu>ٽhBvX}M=mCNcP̧' Z݉bpl:ԛ<ªj5("9>-fUj;F\Ur,~}Ndi`hlS +lNM`aHLu2/.2l~ mlbY[|7x@c o2[1 Pz[Ro\9*!x⨒Z}{jFަ`}+Ʃ+Sfcqhpgi$]uR*{Q?b:;9o[ #WGL.'ح^}<}-nl6/ :Y7MVLX/Yy33RM52M߾%4z%'IbPV@sHx^%2۝Ba%]?8Oh߆'06mΡV$U8FU: S9'a71ACnXL,Ow׋ҏ TEQ\ImGO4JlzbTe]X΄-.|թ]a𤧸R4̋*f`0ODg@d im^\GBm^L9gmhxr~~.naq t%w=p7B/wfi^KG2eIGxSҕͲpAջw} Wvh_YYde=F}k(Ͼ?eIRQ'yTnm OYc pzՌ'ĖyQNub=֡?6:dP,d/,[{J4)jGt IZºYTߡ[L R XGr}8!OJM2]JEߚ`\1ZZ#c,f73YɜE ?~S%7n"wa1IF_Ϣ1E0;> Uv<@V:j?:Y7P?[|mX}JDVFR M4m+lK&f ezЌ}+נBxa_CO HaqA#!G(A:E&)bG'ʩ hF]r.$Xu6M3eんy7j}.\*W/eb,웲[oϥ/c9]7=]$̉CPl,Ns9A&22.HjhXOX{}oo Fpwv?mlnVs.‰+Em^7ps (wS&>9deK|0 'þ~D%SU6jBԆC ExZ*Iaj[tvFƒ!sW-z%R*X/~@iaTUU6۞Woap"VС|@ϟC_>==OO˗0Szzz: m<]=]> 僐D7Ҹ8 (LZI}x^y{UOjA??S ѝxπ$tF{I?Rң m2]ͧSx` 1@ ^ 9NlXNĀ](m#t.ե֨mNk!Y:TԹuV|"%? 2$'-*ߤTNA{?C 7Ax~7x؉NЫG$ Ȝg:JUc|.>}{׳ae:{{MQvI)-+~Ԙvݚ0ZiG *ctp p]A6?@V})VWiЖɳ/`e +r?~85;X~f) ӧom)a7 Ř3L kKÂ3,nĻǐlbGg]_~x^/?nZ͚E*jL{z1 A=oT_=0s?xKWNBIeoQh~](:01dýׯ1vcGԿ7wo}rD'. Ti!ghb'9 rO(tF h}Nf{sV㟏5V՞zr A :!eLXD^I!u8r¸8zz€2iGy\ܘ`cRbo;u)n.w63n"NN/S]-Ό"/;O&;vJid]94P|Z-pUnum/-(.`}oQqםo'w{(hs]goTTx9K~p2>L4Z;H~l(Qim,q@i<+Z*_ԴBAP ^cjGyiڂ$mG$K11^8/݃6ZQ:/\mL4VTT i{'EjRiEYf\:9{ p(EOZTdzi\#W+jTJlfTX&2ܙv([-ZʕU*؞ DrZ BSzܘ+qsp` w眙%gJD,5;Yq:P\p*1J IN1}fwMk rFBَ̲QŐiҘ09 B̊7>*Y^FjF+&,cʗ_Y`~iaΕv8ilIOf!Y(O0_U lk;ǟE'}Nżܠ h7y.\7CY{0ntCJqQ=Ȗ` ʾlsK) 7AW:/|'7A[},[S#×_ZK9P(g"a(.fX tT $xUU $js 8D.2 unRq[d[-bܟ\Ue)]H)»E؈<'y PKhC[I!Ealib/Pod/Text.pm<{6S[Idiڵ4qk\^wR"$Ho^xݤ{D`0^%Z֫4bghmSs~_=Mw:+ԫT*R5MEP:TONn݃O:fB}=pww>!}~C{2, K'0^w@ z|W/_/O>yu|]4ȖzN42d+Me!uvM4Z)ѳ-;L?lqO4 Cddb1,{9I@Xlt!U;{߶`O EZݴL&Ds.$2چqN.s HI8 8|5"hG EȘa]U]rOT'4$@=8?fa}P+I#OWf;[ kd*ZuAOm' |Yf=P3y?jGI vzB~P GiWP.7Y@i@T?Vz GF)RG]WN@4#"z `1hh 2B?6%\54CI PgPa8&ו~4mĩ٬\!nQWnkI;>hZǨ)>t6@&W?1 ,RP fS*J`,at:{[Ǹz 4*tQRM4<yc̀> i/z]7v<'lstN2"]hK'^7 C*ܞ1014]8 &hLTÏFej@g$/3cߤIJd€3]E 02dDJ` s]f x $dwVfLh{iDQ"ˁ d#]IU `;0ȁp]`$`'i>P΂!zBҟTiMW]b'8/S4G"XӂQ "x=̩7wpd)XEJgYd$``g44 Gv |#xn(׬,9{P=` jPp5$Da X?AC*d`qq]ER1x" 8T[nXF/ 7i돘?7pUsv nh9Hh5Q-A SP ֆ.0Z&"5m[Fڮ+~}yv8v: aHާ߄Ra%V7.{`Ǣ#v}{lޠWovNQți]YxUksj;dN;j`]Hȓ' L_yd9R|2K6tQV >ԛkc8XX]y5f̬O`ؤ&h07DrHSHT K t%u@ϋE0y_lKa`h)"g FR4>(r~KPWfJԼo:hiQCoT~.8T&sF h6^@8G qrLB(x S`TcDk UNH2@@9<] @a1~r/آ.9D igI:~?DJz̦Vr%ؚ1"{8D3/Of԰@5H& I;F$:[ .n#NyT uZ`.U@k$pX/!+(75ӠiRP<_Ux[:ےݪ~kf\$ԏ`[lQL[a S/yظ70)8r$0|{'SPoAJ`aZU5ې_q \$θ4}2-gC2)GsP#b.g=?Rezʖl­`Kl08/- h3.dB`I jx2|˓8yqQ^0MƑ)i>霿&w{; wp/ͫκfMȧ=8~h8=vܺ1'  Sn0TBn#FkͼQu7zа%߳R*3 Z3@XܤV}@bʨMvZ\ P <0K0 6Ģe2CY(*؊<w%.(6C ,fޣ͎dO|C{:]orGě `;P`i H*DH>A\"$;:yRLA˹NuR,gQ+@ʙ-&Q1pK QRi*_Ϟ3p"L I*V&+&XR,l1L{úzzGamZ o[؆>[3ь bݵ|>~6:~%YukceyB`h4k%~zQܲ̉9}&n?sϧXqel&h r$Ϥp \Rt~- vRL R2#O&%#%]s`B6+OeX`+}, 1 &@|³ G`[v]bIɮ]rA-EFH24c8#A{m*l`ҒU$46{UuB9y)Ł8`y`.tY22*ͺ+0rIYWiоVB٘/4Ѫ aQ5s 7)-ZRĠµSŝtS#DvI`X 0oD2668>nUå| DDJH62QbQ$(&^u嘔WDkjwqh45Q+f;G!.HIa+/‘F߂٤]i O7y6:dRkxTO} ? 9t- Q;ή:M֏h:)HRToϡH\M! BHfX\`X-*_\>j$8>p~PsC/MEh$ҏ"[ 5 4 Bg=SDZL&Us+{|A ǻs5,.Ot04%x8-tޯd>nPò2._k%"@K5Gg/$Z >38D?ZKtf<l"r=Hqy}U<< ݅|ƕ X)Y)'Ĥ\KY31ϸ3}m,KK) KcbA\)`c/Sujo@zF꽬EL ս͓g5SR` =cS^MC}@qd_Vbx\e4͕7L9g l۰ #`vTo%ϣ,/ؕ2dX}5r!MbT@ o>j7Pi*J٩ͣ֙|}'3lM礼9=I}sG&TߛQ^X1xR+yTjEuX-nCc-*fS_B.+IX8a4jZ)G#,+?H Fl7ٟw+嚗>& =ũvK+qzSa[M" U.c]yڬ,1r\SXL&T`w_TVd_t '3SkD95QOPS3 "N`.V1M#0,1z(aKY'YoW<ŗ{FaI5;mD7ԃJٓ"g\A1s<`Tcg8Pr}\[Pv˵>j;MN"\IPT!1#׭BSӹkGPlZ/&5Ci;{׳&I?U^\@c:qY4b3VKW9isjiQEc,[/QkEq[sg}\%VOJvE&4}@^ ߛ$7B ߖ`c8507VS&xUO;Ys$EtEb_wM/6VL (^ޣt|4֮&ɉ4t1 o2=Q0m۽LaeȪ6KV1:dѲzIܤx^:ȣ؜L-ݯ%y4AfLoњ\cp&LU2?VQloZ |tŘrЦ \s/ te7 e(u8{nMתrn>]F/F$PKhC H)lib/Pod/Usage.pmkWs+pb)`=I8 !6!mYR42;3H,ݦIb{}7ղ>ktZ?1' DQKEYKp^_ڥV%3 PLA.۵ IwT['U|ރtØ6yy;丠7GlQCq1XK^|8g;C!&%T$pQtDsY yA66?$tC7E}OMyŸ&W,3RVN`G6CLR=T_Q `N2Efн{Ͷ 3"Y -S'6uӃS $ID@脏ACӻ]db{s k<1W[a7*T8;G@C RV-꣥T7?بKsr۬! 6GEo`Nmeuh4K$y8\*(8]q1C^V̩D='r,iW"x̍fW~wLh[03Ȍw(Q [ @M1O\Ļea\kA]yG^"Р+nwDîV9Y$[J%{ؽ\b_f{nks&&miu:]]hɷ.q |&٘BgFn!!aFuAt9 e-kB1 U5ekm9P *6?SViPb܅ޱyblL-*_>PYWc*hÚAY ^;>?Ed*SsfJqhYh{ lÔ&#:>ArlaP mۋ U4rY{JWb_An A{8D042qD+U *ׂjn7`xO GD) ֪v]$?p~88:>|wm[X`U$,{@-[7== m2Tf;k}գfh:/Bk2BX/gE2L5 Wk?^;+=&8|(p&wLj"& X e'}C^.D|̑t40.0\e,h D:(3")VaJ;bt(hAhzb_#O r< X3'Hl-Zm#*ܓ|"\AërpXnʖ*b֋](l4x`.y1un8k vkbq3<Xӛg NĝHʔ j nLr;=ecdE8k`ܩhfAY=? Ng}mDذ,e,OPY"皭X%Ob@C9iH-n{YL-,'hDbl=ةHj?wS!/`URۆu2 G. 2UI[q\I3'uE},eB~>M384/ɘKKa(Jl:Y2<%Y'hxĢ<0 >DWB BbFKAø7L+)hIC dhDٍSݏ=~% ֎;z ["WHL/,p >: 76PW O0RǝΣc\=!l}9 g#[aQp8F,#- +DZqb;(i8EFZ?ky-9ҥ<~ؕ䙚_W.$qnٺnq.cre>hpL}Q|+@q&ju^ NjVe-^͆k؅=_P7 1:W9Zqb/mYIwIEPKhCh;lib/Scalar/Util/PP.pmUmSH_ы"*9DtY \w!yRI6UtAb U( <^r}]G4XIVSqE2_q6`y6TON~;:vhs2%_gd<$:-C3 Ap*(_RnL'\ 8 }"J)>)gEJ@bpGςO9SBJy$.z'sKNq2z)ʘ|R3P;\jDX5U( qlFG"+SP*AtImX!wg6 @ǪTK)4S [ Z9F{f X2GLxu.n- $91`Wmц-id{d1Ht 8y%le$(grPrȌ]&MKx?b缱ԔPq]0dQEl(SlU[mZC9 ͫf[նXjj7̱ ]>rSPmӾPBP#+H\ܔ"[oUISxa^t#/Δj{)T*[[yzY泾 kg%N{=}Fvkyr 3'`#EjN,F+;8;cm^^@}}Uй~O"DJeN?dJ;qIԛ[,`O@~|͑΋Dx!Z/Ҷ/r@"5]kUpW:6aɬ.FRdL(ϱɶuE|/lyh7Z;.ly!pƜ5owycX8Xҕx钮mV q:jKUGϨ?PKhCQqlib/SelectSaver.pmeQK@W 54-p)bLQlBiAj(pKyJDh{ڛvfB X*}Sj.^Ij8&^Wky8F^身L+E) nw=ʛST5~Oۇ2z[͗Q1eNN ?IN4L<鈎 U͈:~2A&z"oWW~3QYҋo'PKhC}7u2* lib/Socket.pmZ}[8;jʶI/m-]X ~08<-$ةr77N[v<FO3#(i 07`5 c,$YFcl$˴qbxӱ9q:/s&p^]!w Xn4lw7 ,SIo( c%8g+ &A#@h|̂=Md/s2bX7Due_az_$/f8ʉ暠ȝ %qxCIAg$e? Ԟz ܛ< < <L&ḥm.I.h\UVUh*\U$]RfZ4ps |=#Ѷۨ״m4}]2|:-]7}Q3`ߣ߮kG&:I~Q LRi3[жKèCG9ZN|ѯ}E6k+fqY:3N \Cg(q{wN̦;r\ˀ҇]ϴuҾxڞ@6G:].%X2JgT̾xhzC[gtױ}6oxFװ}S?9׎y]Iz}O;洧 +x qھg<"9tp~p|N:8f9}F@G[c26k f#MpL`8D9{ڱiS0\2O2iCu` gi^9;V]&'Þ -TE7a pha=?iC1k}{4w`i? ,̃Fa {S. ,y`6 @bh:<ԱP(7KںG=ZzFM He$E!tHx8'QlV )dW:6MqȒ<8k΁Ba4Ӫ0VT d^QZ˥a\]atV4xTѾvbfQ`"zm~mw+pe0iG{ZqiC4:5_cup ' ¶ l+qp9 'KLO-/S'}0P= gY]g6N+i,3>P}ǕSeQ<ʾpoYFzYOu32+n>2⤲e䄸#8YhҞΒLPt3cVGYLlgigaEɎ1Oc[c~[Ow4KZr9˧!gYE6<<#s 4o/af9>D&) y2=!!KsLmd^  6ݡI8 s2p3)B {%$7#:Ɇ_Ñbr9x ޖp0f z{RLh/ &W'/a$M4Mo,ST8ymr ~33pK09g +Y$/g|LIf5Q2-tlғF lKKbNǷ 1LzF1 gYBw8=@ ]_[Rgc٣ZjPYChX ɼ*Փǚ;?~~s_w[{J7ZY7×74~'bdl@;cߐC$HAv cOg| ŵvw'`=HŜm9 CR}P-E T YLTb#  h: N.fh9v&y2Nf@,aV}C!D \^'"sBn/_:ys@zRRF )*Z?d4iSp%.[B!wHqCHPupyRgY$qNpN,+Z&L/nY^Q$?TYVX\1^%UΒg{l*|zPLO-e;r?Oi +[A-Io@x&֚um8pf+=\p[VPK^yԡxJQt<Ĭ ukޮhD^Sgrr~\\|Rh?V.tVT&IV^ix]QYtM`NH;U`>kYR(jKxbyVV1iHex${7ֵbu]rǮNElD_ ʎcYW^c!<^PKhCx %lib/Storable.pmkWF+n rC.B6HݳVHx{gF9-ܹ[Q؇Uf(ill5N< Ǔl |duҝN\K7 2LJ 9К̳pT$C"|"@\dW"ITxa 0 _OBFxfॱ0 d4"ӍL)LoW/RIʕ4rZ޵;` ›mڃFxԆD`!9q#p[:?)(~u)sağbEi O5(sȉq!$G!ܸ$.=7Is#l")˫s7(V{u מ?;;&`DpGq0 Hע_{Ƥ-uK/wԀ!Nnԅ&LZXO^d1hT, }.nD$b*(1TyNl0te{zBrG>N{Pn.VQ  <WZ48F_Mb8ys/# c;f8#y`g-m^:x[lEbc:MkagYL =Y$݋ӟn[woz@ BB鋋p`Hrq]2~?Lܙ,DP 2FꂧsEQ ǠπY20o@Y" D.FEtjaPr=OLs'(@&i`&;C˜iuv^@YIz60STLS)C<̅*"T( gFɹT>x۵Kd>/E`(Q{Ȁ_?I:>$&LhmZ:y ˹b`ENҙS˃qË3)KI.OIV,ũ_DUQ (Jgxu y #L/ N%G~f9WlON0=9zʞ'2_"7K9.~,ozݿYck4υuԳDiFo7NofivE}e~}ZcIuf^cé?1t꫏VT2"E7u"@$ t% ݣD^:h~mtNF4O]G-ja:: *AuR!e˹LQtA{3AA!A Ffw6ͥPV.bQ[HI[\ϗSAiM_O+0At.6*{{\Di&rwǂXzaʕJ@ԔjMs,E):N^EaoY Ѥ6u/y>:,Ӎ$v-$.KZ&*]ԖCJpU0* ~ա}FX``R1e،f0NU>ml~Z巤Q*R|\芫 m)iiۦb %W#v*klVjgQ:oWjX+#yhF{+TkE{@CxLai>ӒruRB^y *ZRvp^% 0T{PCW"K09{&>=y Ub3Q&Eģ4x+1T#IK67a )ëy Wl^ep\t{IDV:v( -8O8HSp+%C閘q[H܅V2jʭ|<)jFYzi`Kń怏iB[*uĭ2Qi}I<+s(=Zۂ_3u(;FgmYp*dIP4R\bESS8 &J;Hrnwpkg)ahj|$ IC?:zE[ppjdL&||"t%35,}DȐ,C%rhDz&EQtc VA&׶nt6+|h,]4z6u^gc=߭?ի?kSspBd}nDirZǾ^N&{ڽTN~>RZ9Ϛx#˵BeUYOUQU%(vyYJڿX% ݫ#Ij5^0J5K*eYt U_üNuӁ "O,tZ`ȣ# YUcOǦ\D]xٱtgM{ r3?ʳ7'|R~'X/~(;S!LD70k[惽k;fQU^{uYnIq})uk|}Ft _ԪUe+O _qO0_ܨc\.97CN]L~!Ym5'*Ֆzv2"~C5Cj~% ?sPKhCޏ]G lib/Symbol.pmmTmoFŔ8N@]ҤWʡ4:)kc/} !oYr|><"p ",h (}̂O_&gA{W,p>珠2LXk@?\(uUJ&/.m|.dFHAWO: ^_: aʴÂxdK'"S_/3䣨?l;ogЩ2sj莾(ڕ W]m(Z*hQ&r=9"PhKKG׌rjb"@,JМ5wc274'oIˢR {nۍ%ؐ,##d~`U0%q&QC9L l֖Kc,mZ1tTstW+r.4/A)ʌrHu9}UJ6V'sYbS@m[u8`% ,@ڬ v-m.u֙;T) 2Z)R|]4y/6d1b*ň>{r򲘐_jֹmͲ!JsSHXSDNFYVQS (0t: X`ZRieb(%ZJ# g_ROk3go\ (AIu.sDնD{Pi!>v+v5iݔ,GO@˵׿&j'PKhC^g :lib/Term/Cap.pm[k{ں\~J1&%͵Mn$'4lc pcljٹ4뷟I\尲F̫ѥK2gڮ1og0/ #XH)J%rj&#Ʉ$+fX6h Pa GN2ٝ>'b[{:>nxzm7|vÜnf;BCm,v*H*0;GV!*thwcٞVAn4ݱg;r[ GU)|m6]Qz}v;b>#1llN jEFD!cXA=OcwxnN55.!mig9wujvp ʲU/륌ajq7s-3R@xddgwD&>f6E`dGbYxkb)^!*8 by#El&U+H5xl* +b"DQ G1`gj'W "U5A =x[Kvu>XM92ݦ=!g Cxu8m=~/auGrho6y{?[`4Mϟ@h+ a%s-ۉ 2$<00& #*;z EoAI`π$sV ' ]IJc@>䢆"֮`1[yЃ :bB)fp*qFi*Y1N$*0YR O*z j`PѵIa+BG2'XDhe Ao2q dRvc^Srߟ_5J"b7Kl|4Z$}gYjL/Yj26.a\%4^_K/\NDw*.BL`eyTrrCʕeH DE4W*pȅ)vbAqd }],vWN6BǽXj6(̃lB/l.Y5A{u9M鋪ק\1)].V~>K%ȁfAK;DCYqgI]:Xc5EJF?[+3+ [J Xczґӿ@MqH-'c.3d_Mnc@*iAL?VfXBSrͧ*%#b6LvUwrϿOZ;.Y.טj-{7GObU' @]qK "D9Y!NAOYy8=9sˡrsTv~A.) F~eMX?4.R,̩ɳP8Vƶ3ú]t//.,Nph{E@/b ~Wz!IkoհoAH&H  PXJZd^IO0z!6 pTӰuUP)$wj]b '*=E ,07=Kq+iK,KeG/ ه*P~$%(Rl%9N|8 Œ3Y.a: 3ADLM!yRP"ypNXq6 SȖ% 7k -ܬZb++ ,Vĕmĸq m{^KenXJћ3FM܃V&D<+)L#!iIe3R>nę\ ?cP@]XL6 P 'AFbvGk88>N]YXOjJ2:/k N#3\J2[eĴHFY6dv` pzrB{;@)GOy!dp%6`#b|8AJ__kɞW1|8)Y+'k\\Gle@RVI3j+6E SzOq H3HlE[DZϓ1t9or|]Y9+fn716 5z xĝʁ(y@F`[xa" -[7Mss _61KiqN }?^a1HsbsIm?!KrE'2Y牱ׯ-"@̡rbS! Ħ#CIg\¸Fʯ,XUE#ӂX!jz_֓JbQKUUqG2[x&x0ɬpwS,,8K^Y2sN,Cʁ bŎ ϩDoߥ4HY8ے~] h e ]fQNU>q0+џrdXzN '$#I冂2ƈ _ƌ']L)"% ´lY\~\Ғ|cRcKSbRbNQ'lu4n'/fB36iz/9K=ugsmm5ڸS@~Kk2̈+Jрp2 ==i`/>R(3ΥP Dջ^ѡPKhC8lib/Text/ParseWords.pmWmSF,ED筭]j2i&P m4}jIN14{o@L5v}voooI@Sr;GQoi>andCtI@z~Q09.~#-rp~9|`?k?*Û,9ɕW(q≠'96#΅].RNgB'2 ~R: `Z9 O޼0b-xwAQS MӜD㙘rdxKO K sN߰_sqm^K a+K3#OW}F&dBpn\(yP$0V%%y \l޴%_95^) Jxy΄  $C5S捭Tk2 Kqǯ,J0#ɘHRGy' 1#E&njœ<F8c;dB2өxp:EQH2L3n1 pƱ<8M?F,7{iJ9h37"mm}0e ;̈{|`._ꂫ\p.EzT$uoT0{KFH ۃFE߲a=M)Mhxtee9m7 kׄۍڏ9ؽ-+[3(C0u{3+sM$j ֺ\?t4Ek33#m,n-JTys0@nyC羏B/泌GF|q2n=srGMȑǦ1{U [WkQjHWY=ka}% Lm&AMq@]q<&~&ʅTQkzXx@kitdw@$³-'ZJwo)dQ[eQ}:[Њ+:%Q,7sWU[ q f:latWT n{7a+SڥF˾fWI| X 'Ot,cF^lYӡ # ! Ls.tխ\~<l;E@LA)omǩD9oմG<ɣO8N5,?@Wr1.bIrUZPKhC lib/UNIVERSAL.pmmS]o0}ϯ8j*FˤIhhCjUM)2xl]0{=2Wŷyݬ/HWbI8UQd p̦׽s .3E.GjJChנּ+fM>3aN%!|&9=W0ܛNe8R'%9'uXjrXscDՈPpC2FYK>|{7?;=| {P|>gݝYGtNZMƕ y 6RI ma(U#L`5y?9[i^eKRIJ{>̀ 7~O|+oC{ϞJ,QZeUH$[sӓN[إBV*lSlN%?u&{ւC }@ R)-7.6/l=_41 +ucV*7"(W%hw 4'5nrb@(3xݛȒFNr 0\  #;hQUH%P;ُ)r1lBSq<8*?9ٮS;wer bmɥJږC\hamαLc}@r4L OKvHDpǟd X %w^|s K4O2c[5el *M+K0Pq2BG:.ϭ慢aϐ-`ƚ@ڙF d VC̔ P'^|QPK㙊Bf`lib/auto/B/B.soy|TE7ޝkU\qO'6t&A&$&\I&wƕuTF=2FPp!"Q~ϩ:un}\o}ԩS˭[J1M/t ,.'>gxlJ2 6b~|k M&/Wwmfv"qtm!\ ǘa/%x|7飄c(MtMG'̡Kh!iFL|Sb5}y̯{'6 yMpRٵ΄p |B.&y"~Hy]Op9(\p-1pE'w\g59M&;\R܉p _/7JHFI7Sd|C䓌:&jrĘ9B̦{uǔ.t8ScbcƏlK1"ٔ%/65.>m~stяg,|k,:a1U$cx>c%y84H_7oLvZD6j8֠a J?m&>o8c[7.rP#/<\2=OuW\?rCS~3O{/λ/>gp)<ʍx%OtduΪq{:?flwu^lvO{}7vW/5ss>5^}xC~tE:ŝUp9]vSo<>xEK?>דn+wt]~h_7dz@՘8-) Ō_^'>>ptȑM k=vE}DǿEGFq~Ew>0e`tP׉}On? #>껢rQqPG>}}[}>F~GU}عXbomQp?#[OBj^7aK>!Gc?G>?{Cq}sn'a#\ۢ/WQ(wtZeßu{mQgȧWMq{oE#}G^>18 1Jܟ݄'49~˟ q粍G(k)>ķ҃^ m\9?*)"]96GgrE܏+ϡ|i<|z ry'o9.~:nbEԗOğHұ$nr%dG&դ Gx vozPW D)\IdS/vq\H|h +iHӃ,Q_vL6 *7DvXO=BUTR>'a%3Hz)!+7}H7HY}_Mvv{/\N"o/r>D nڐ1oC'b¯foó=$]E?pЇ/ Zg 16ry͚eWq6z!Gg.?ENidNڸ1Cfxʧ6 -1dnQ>F3S/{<&OiyUxkkޚԊ*o^ /)n( *ʯqj'xEZSa'/{*s{k*<5E= ڢy^Ϋ,sҽ *kE1^yJJ\*J*@xr4Gj7Ϟ#ҝ 櫬*jEW%v ct-\ټcgmn^OtIKFHU*R]82Ƞ>#@+=XOw_S &9 :wɪ"zB CS7 *AQ¹Ehc$W%af`Oήh@Fy$1|.Wxk /HE/U\3aQ'#0CKW32JuSR^ z!iqY OVۇ{܅~Uh,UUְĕԡU̯k^ܺHVWW撢 ^YuNYVԨf4F @KK¤Þ5zl\5VU˫u~). MP;ы|0"2o|=(0 ޅ&_4ZӺ`< Ucb%s /NQ [7TYSMMU5zE*j 묽 XQ>xbm LoIFskk S˙pӏFCx#} % Lr_J_NxHAg# DpM>GMAަ'B'ޮɄoWp7_x-6o"G#Ac?a |%]#|~@?bK)x%I ~=n^ިOL_&|IN~H!6>x?d?BpO%|$|Fw(x#!p~Zj159  MwBC+oWpPǛqt“|nO"LoT/S+ _s ߢ>;:)-[cx ~7 0 8>% 5  !!n5='(x xLTAk >9 >KxO$|_Hx] ?Wg+ )xI n2Fe ~- >Sv*R[)W“| GO&|\_̈́w(݄1M?OPՄ'*x;ᚂANx!MB&]Qp <FFM w+xe ~ Ls_ߢ^;C ~3x#~!“ |5>@ IE7pt|2ᚂ>GޠsoSJW(+x ~oRu| I !nCx'Q%|JE'ީ)Rpʺ >d_@x/&ܧwD&}O;% IOHx 7Y"xKL Jx'HWm~p;D L“$ OEI /p9~Ix$\>2 e(wJ o%|ߌ/p _)$]H px\X>/wV ]Opw-l_Km|Kxߴ'K` $|%|J0 #enp# .(%|6 `'%\}'HJ _#$]q"'Ix,% p$T ? S$\-1|Knq $, /gKx˿$$S Hx_(K$^(%zl_矸f  w(AWg&B̮v&ǠSeJ&d"3 85v1y/8%v52y7ʨnɟS`&oCL~e e8u٘8uY$8uWq:pQ3NagP>՟ɷ<՟ס<՟5(dg5((+QN`gr'3y*'39QLѬLIL> Y|ʧ(X|,ʧ3yʧ39Yǰ3 cY3XqLLކL~XY39'3I'3(?ʉLILʓY| 3:3Y| 3y.3JXELŬLNAV&_LeL> Y|WdV&՟ɃPNagr ʩLy=iL>՟{QNggn3X ?d1-m&`ZZC <К [3{=$5p'wp-X-N[ ܡ6icGVcm~7oLu㴦n8"4CB A5fo7wKof/kx O>Z } y;fẁ r?P Қif$h#ֆb[b[L^3Lh`6OQNpN5C6:#Y,޺DS[Ӷ(|=<˅1ZbLH 94xgnZkm&g`3>R5K˛~kg0n 76P =PCG /vYWWݸ;_X?pwc]:40K8zg?^,hG@J^ Z\ÌGf,iFdvGI:4/Ok-?FZ E7V6~z,k3k ٫,ͷ2? 3Mkj,w7וhM؅@ s)!/Vw-v& ]dZX=3K)4u?e})/4wߑGv 3sPϣB?xZfzzo;w l篶7 (nNIjA+•#TZX(Qk j[!SXǞ6ΠCwnUu* 4iݷA{f9?s}٢hrc ߪŭܬqȫoq 6L{$cq؄ՃUGo#mEML5we<{1HgﶧOO |{ 4ԁ Cg|ؐs*+Ljq; 0ˉz(@эzP@M\8%*}uU̺Sq*8N]yG+:'C# t*_+AV 9kzymi"^3j15h0d8[c#Z&"DX=0ŭmi5oXiW#er~៕|0[*LQ,?J^Kv Vɷh?>DHֱ##'t9$ a0`,f <)DZ >d7,Я`ǰd`>k!L5|wecWMX_w>} P 3C]rz^n/d.\4펳b?Jvm{]5ﺙOd0m)g&ߏo7Vm%.'Ǘ$w}v>{)3 wskM};z^fcRN.bh;;m.{xO .0}o?˪mGCcons2ݮe{#yꟃ$E cC?0"[[6?88%bNfE܀.\O:yCَDŽ1Mrqكls /n Mq+'`a r@r:Rl*=&Buq;oL|(+{aBq_wVudrԳ ^P_(t}CV}lS[:Db:oVw%3s4+P"[my^'ʲ@Zv^R_ B/A̙PPy҆5}um/(oqAvPK=<ɜaCA`OcoUlm0mwqluiaipt{]/Qe=ic%U^oWEFd 'ŝ0 l :LPUm85h9cZ- C#uJ㝛nfefv|r7.^l'TCǍ6-8w􎀌<%ZcO=v4DrCg g?lkBІZk?|1xr9|V~c3Oo|gW6H+8N!\YZVa[LJVyx6 㵖uvW`? ] G?̄%3?Ӛ~p Ѕ!I|*G&!6߿Gy@j=a\fa/`Z\jk}J}]mPdf6К%\egi=WfÁKkj7s0=D˜mV-.*Ϣ,[;C5~?[𻔞, w ֳm(+v SD6{N ME$?d Qkعrl[qr\kifK[ֲm% !Xci#VKz~il"8%8e獞ӓIJ¿k W` r[M,@ߛ_d)5­0ŀ쯇p ~iiPxrHd?<hc[f',%O"9f;bw,-Quc-ZN%J=mE% gY{Z:v[))dKOH]+0"/60JryɣӍG'|~-y@='] 7= y04GO_O+Xx[3p# +%],m]K~ +o U;A==smlqtYPq1Sҋ.X iSSF}W0S_M$Z ~wlA'˪S+b,-X.s$Wt:eYjEӡS-ͿXVu/`-cq {{aw]k5Uh>B6&Agq1L(l1~_SKROugcKz - 9etMػAs?fbx]7Y;h_0&9˘) >QEr.x،N鄇gq?X;lwAϧ]54{x>eXg?u;GzmKޥj:%Ҳ`=E>:H6B{߰;}OK#"-ubb櫼֑ K;^G~moWhԿ:{\`;0qf~Cϣz{ؕ:ց9Ǝ{|iujп;g658bwO p[qԐ %8y56/x~B7:qCp3شŇ'<_);Gѳ4 AeL/gNw[8 a?-z<;-z2w9/IjLJZ\7\QwE6=7 Y]$4M||1 vr"Y.{5 b;X :yA=Yٌ7OD>|ⴷM6B;XMj#x-Q 93cx -Xj80Lx~f W>+CikZVLsWJ -8?KtCpz. XzݼmC{T2>9ccoY?oAUK >@uAy귚y*Mc=C`F$B* !7C`#}0T[O+\ 7~/ÎEqg 3~/S7,G%mX1/-0ą;(EY.0xZpV|PfI[v_7~/vi4ȧ Gyt^G?E ƦNs9Q1]p>uhk3n \VX{'-`bC>f񖾨h<4|4lI?mڷ-s :ySW/?[X|{Mkw R~JbIFA{/Uy"k| a1KuBm5{\ߤ"eFo5T8Ze[[ ' 䫣Tnd@fa/3_7oO㟡o񸡘AwNGC6ڏ5/v cY9"wy\OpUI핰"\.px ]-6ߪfEOb/~%ޫdLkb\-ϧ'1ß~dХ_|˦琉}h1--qa`%OMgz{$fd l*v#s !gBT_ 'P>rOf4t r5\SRذf/To9IxKsq;?TWGjۇ/55XgO򂗭9-Πk,:ؚٓڜlqt,93pjfW`dwMTbfB7s0f32~^6lWp.33RDeiOO ^W]NL+/ruڛǸSց_؃C.;^l< XZmK#PѼLL 4?zd yk ~yՖŃ̈ tf(fx3n!aP(Q7qlDYJn7Ww6m2;BfL&nHÓuU:iiyeki-ƟƟK,-Ӹ;&:F_XiY;wnWMrĖw|xgΦC1V{M+^I4_V#~r_t 4xuB4 #kXdk *gW#,wVB޽r~#J9ud9ҟ +簏ggZrk? O<,Hֺ]އ-@WJ ;3mi$P6;g;,̙歖׎ k0m1̫U24r^ l>Y|۞>:FKn6SO`Cn}uzgП~S b?COO cAWJaMwԕ}9gGsr¯FQU%?hT˼עF!d稼^/^9=cs8 /od~c/L׀t3闋ϣ0HǢ&m3cϯ="< sM$Os^U'gʸrư /2OGmdrQ"c>g<~Nθ1*Sd㌫2^FF?θ"*0c4ͽ^+{ mNN\ ;g]'-ȁC7>>P<]-[$.f0XhMfw~6n{OzC@ݞ`عy?б64xRG`:}wR;~pٝn;,I:Σ牬Q}Va?=WHq˝,MzWۼ.Z[ҶL$0+`i8洋~)cZpa6='rV N:)lKdޘ'80ϡV1Z`=.ı`Њ^%~C`ѨG%xp{kst9?x*|BmЄ=.x}ӥS2*[Bހ)n7٪a-ނabSzxүA}'=+}yqrWl0C5l&=v|j''wUφ%221yO\w_GooLJ.χ}38> ?R>Agʮyu<ִlv>J|\KWt0xx-bЧ/;̶j-[ :N,[uxb溾(c_MuJvIjHYmϱ{O n.o=tv⸝`e&Tj:7s֬x=;~ :k/qOt+g8N'v.n7scf>'Kz+n:ԿneV:+5Ң ]8$R:7it|W9Wi?bM{}Z= }Λ2Ԋ6-~C.rS^_N%;4j;+Fhlv1S =p8xk!Z͜&tڈh^9ӤYh/s]AG<h>ӷm>I8'V JcvJ.j9lzŰ <8[Z﯋'xFo:}QkGS'P,6(=/}I B{Y} c;̸Ϩ?ξHWPn?y%_?hr}˿迿14ni}.E]s]ʼn {kY+ވxkk;cQJ5Œ.}Z6KbuI[{$64aN#7BI6$ڿ^"sY%<2"d/b'+Nzj9i:4M`qXu]8Vyy)Pg |`/0%zfwr ӐYlYg7\$Jp8N1Fy>Ꮳ #yZG~>E#(2G.)|LydL,fqGFIFcָgqEh/Om5Jjf =YΌQ:e9<׫34ô;FFb~UՌ97sNhC8Lgp>Eu 5NqF4GjM#:FqM\,SƘbL:e%)tNi2tS?ShNSL2%s9dpʾ ƙBo1LI\)fNY/S0[uir[S^eʥleب.rNkB.< (92[$b.uʹ.S߉ K )' ݩSgNTZlAtq1lѓ'H=)-'=)|&f^͙/`˶3ڄ;b91КEIww)_(7ktebLQi6r4<9N MG&S1JKw8 R,y&IJHqJkq:S g,)8eCO'j=&ѯsZh#g2ǜsB,r<x$N]<1Y 6LSne4)Wr 2mo u+(rJL9 zUF]Boe 2uYS)2ŊYNySdJR&%O1xNrʾ 4N8C.`-:NY+S4ptcTuo)s}2yG\jRrTghS|Rzڌ=w J&L)XtYrLel )8 - k){rQ]S7(C<)?TeNSv:Sޑ)9eL+N9S6 ut~  \t[`Tr)OpJLI\)9%W.CtJ1$wB]w J2!S.tIrLaK?S~(12euGr`Pl|2P#|)wpz2 :^Tq2e;ek(rCK.~rLad hc(c!xpJ .CL76[ƙF2;353\/0c()*6Qҕ1pCIO3ڄyI&h^R^Ҟ!,npktZNyZR2tÜrLa1q}P0~[usNIDOo%MqrI,t1Ut7^uʛb)D:e )SZ8딹-SsP6AS>)(6e /ə+y1:3;8Q?V5ONySnu>//-g^+ y-2Wf xڽ3co0>keef)3Q/0UF:凁2PQzSca*)r2딥.SH9Vs2%) J:!StN9Sd )&N+S⥢6d2~^r<6#qs8'#{xh#o7#xʫx/Vd;y<7E#c]♠>wy7dp"=5\v6μjNp|bo 2y)l1.Im0ٌ0ޖ%hxO!L0KБ {JߙIJYp08.i8RNKiA>gK#9ͬ m }ˡ#}hN6sVfEӪ8m9= ]28m!na4pZNK& ~bgsڕ:- it6N+tZ!9BY?usZ Z5s*N166~""R\)_1lƒTr<7İ:X '46T㫓UCt[!i4hpDi~@nW$|Y"mLM&`oR{(6v^'S.8Hu]xipl嵶jV-xh輨hmTf^]/rsa9W -T95M=?K c9J ĨT1ԘUE%6o6nl8W\awl|*T1֚\eUU|>|E%%5We=٦YLffUf՘fMLff՛fM<44Ӭ1YɦRQ,Sb؊[_V]?)M&NȔ2m^TY43[)WW!X\]UQ,]]U񦲨SS]ׅZQ OY7WɺzAQ [PT1z;n l⭥szkcMweEeE~,iQדpf*˫j=ŵ*V[SˊXoQ  `ɳݐcu4w&JBrn}*VW1+IYO)/KUv!_-$2Ҋyz>OZXty oL]V^ggJd*ȵ35Wϵ@_ƛenCm%b*,Z_Q.3Dn'yzeUj+/Jm^jܒy}HfIMX4[KyHV.,[TjSkl\rYyBraEDṅisfBJw3r{g2<: b 8 Bu|_ vd3YY=ǑIOs *(d4;OCAacfϴ BN7 $Q37]ͳj"Ô켼LOz,j:{rYP9E Xvj^)L̋f3+͡Ls3\@/PX˙ @ %s2 ey1;=]7n$ :U$zH3rEE 0vSn9•=CTWT<^HU^oIS!;[82n e@Y ĝ[+ܦdSá_uO H݉.DbvTIU%ٝ,|Iwˑ$h ޣлDeH}ESڌςr'"Ma,(>"7ya-@3b !Γb(<'33ʜB(<꒗af6TNs\(p H:әJv那0tp]g@fu䙲&ȍ ۙraeωlvCi3-ݰ!Pؔ:A2"/'%wgufdw$ raaeO^6N in`dAk!M*׉CqePrd:}ɞӠM"n=ϓM69A z~I{scxR "l#cYĞv(F̙9j89Dˤ9yّfʴLuK:,Р 9t<`:1 Ň ;ty2g @ Hc@s5Μ|g8S%Ր{{#BN7!r=ة35=\0Le)M$q" v\/u7\7Pb5Oa"I} O Jh{ D<wVm*Aar `>6Bxm895vBLp9 !S/p!Ll;1Bk?c!zaۍ o Udp8¶[iv0ж[!Іs0 BBhk |!_a|pxs|!LEp8~ i  L\Bs8 ='? Bx•& p6v<zp9Y;ƃ L|7=C~m%s7x/{(P05A~􅰭0 \Ag6AirLyԐmf ji5}XT+NƜ&ҧk)T |?)a/-Ov6[7}X֘ wAp-u -,`76x+ k3WQx fwf(asbћL)ìKcڇٚbn4,>̚2,>e0f3j}5K7^@[g^eЗz *ۡ/^@ŨgSl0[5\Kicǂhrz]c v[[wmo-T17nw75,k/^v{`߯Ǵ^ o+2KˬtBem1s_ v7إx fn֘a KN7nаERզE?G)g'6^^x` i/o j.Kv0vXnUo9oAR\M4Y]+  d{6z/^};y^~IX/qoо/ g{z1վezq՟eʸ9Mg&w*z+^!6bh\iyX/`yK[4/SӤJp#P!%bs`aQv]ث737o9UbbzÏП+4';䘯SzC~+qk4:`ʹܫ3@;RcnGG|?z,s KUăV5Nsq *35]a Wkدog3M~ ΨZWoA]{{qŲ~C|#uDO:zOd<n轾OVODts-oz' ;=5/ßfDO\FsQQ-%F>GK- Q ~I|X! P}Z(L4 Ϣp2PJ4 s(6RxIQ%|~) [Lazߣ*|[)\B HG LW}R#agBH7RPx`@MsrE.VdQ OyTʃy*nA'`.BE*Z, A ݯJ1$ ?|Ao2}#"X%Ê=EQOQ .³ ~I>‡)>4'QO }.Q0( }*|=W3KF݄q& H?=|(( #7}uL'yG=#6 K~%U7nUwd,o./}BE>RpZno) vQEF\cvc>#\ۍr ~%#\Ez }|}o$\ЧH~XsQS%O 󝢧>|l,W#FX~zo0cc^Q?WQJ>Ay@}RpQ nMEoE(|OOTpY7Rx'?pn ~ =@N#S+ZO%J܋:;;ʇW^z wpI̛?0/s ;N(V W4%d 0Hᕊ"~.D}:%a[r!*N @*ޟϨaCutf5Rlp1vQKbv6hA ݯF(|Ww* N4]H7QFD;]E$\_B&s8#ypJ" "A'(Ԙ?SB) _Q\GQ .puSL/Vp}j \kR/߮/ nV j(ܣ/})YG?|nQpa…m ;v?pu(ICOMFa'S8KɧB/IQq2̈́u]J!…} \_r}6S>ZrR2)N/˨h _Q®svT^T@@ŭ !<ߋ+U`HUF>S&SUթ+peE ީ ,TIΟU <)eJ@&>PF8&n $ 7w"[(~/*#j }1DqBAN@-E? YNe(#MG^Ϋ[w$'~d}A6J|jTK/z(?QxPNaS{)|UnC Ө| Ϡ ),z Sx/SM~HPESxPNaS{)|UnC T>gPxPXJa=))\E& ?K {(ESxPNaS>])k٘'5M-&VUUM[W^Q2$.KV.䡿{kjwdq5ފ"$ҝo`/-&q%E"Do)+H YxICI/G<ߡ3DY~WM4j*W]+?NPK㙊Bp8lib/auto/Cwd/Cwd.so[}tSǕ2K `b $ g62<9`YQ|495EKzڦ۳e9-9d P1wOlBDhwތw?tf"',2, r"MpMkvf3:VrẛMet,ρ^r4 dM?z ?~agL5 OcԜ}l# m:r^K޹>gV6県~i}a)ͳ>Ɠd3jBF~O9ϘRY` ow~C))Uq=?%/o\NѯE?2C)v22"#?>E;o)ڟ)@'/sR3xgArk3KDD5iAy%`FGDmu% s右~ |뷝m,!Fy"v:9/;Y]W-g%,-/sz~y]>Z7rӽ˅ |{]V\7@6otq*\E;rYM8{@]]Y~]Wvuds>wd;}`@% wZo-:U5*S[HPH Mu ֵL\wgm_vDqW\̎%5ZFr]5]gck"g}~p*34++]Z[Q_/#A&?rbITmls|N2⫮pedYPuv.--I<?--呩WZI Hr Tw?Hip/bؔ \ߘz$kO>5Ԧy8,P)H p1q&sC-)Y%x+Ӎ1 x[\_g o/F/pq/\'xOpIT^MY=6K\\\;),~P x-?i~DOc..9'\6p)xݨ&J 7#$4<wsn!x|_R$,/H6Y/)^ Rt" R4o=sU[~A~* IҙkHN)|AP#ϼB/'߼w` i#WꠉUyY*|Rҏ=WfmaPs0&o{v m;ƞbZdEʡ]F$s>hza6-EV(߿;"y8,Wv E7Hl)x 1y^\atJ)(̒ҹnGpPg>P%MP*s@/Ly"9=Kn}Cedpf^d%SDUY@F~;! D0"ޗci`uGjAEȂ%yJuD߰7~#|S9M-0}E4xm qv'POÝR6 3fHҨݪ;nr\ ln20َVnE~X>o>PE˭[ ݄GVi!d9& ή4ڙ׏y(_Sה/:%JYҹRQsOSsNܐ)?DpW%XEsI^˙Rt4ڨЉ dO[,N@ڇF\h1 gx;Yz7: 6b ʾ[01t #]_*oBjO'qgpDwx tO#B'"Zț+Ym'e]xV^V?amîA9@¹Ne"Ad]wiҶ3;1#f'lXkI= ʇ"U:<5l-Bse61FVHF`br>4ܱTC<8' ʅAQMi͡8kǤw[m-zy7+:F[]48ľt嚟%2ewy*@gsi:/ bNFG{fn"@s2k t9+@Ipl[ݎ#qnG%T_ V*Yi^CZY E|՗5BQ'Rq&r?~w*}hle}ܕ+[p04ؼ(y)=s=$tEo%8 S ?LЎ^PJmAU%yg:I5%{6;gǪ/y6NJ5c-X̼7z5{\uP~؛y s^puFsl :aRp%0hݺ[ۮLfpZߡo4GdI_OU ظ(h_ʟhm -:?kݠoܩg 6[sR9LWeSe>e2L*d*s\dTZ2YLC7;"U˕71C_Q3nZwUJo0b%Ͽv <9ҶٛXW }hl?EV=HR%ضxYcs} ͍2}N|$i+1b\~ <ПCr4ֆ)=nE7}XcN*>,kLYv#+_lK߈MbS EckMtiKǛXd!bd/nxZaB]o6_Ho&Zk ʝ(~k.ٟ!0 ZCTTO=CWо(L؏Ǥ=3 2ZFh-e2ZFh-e(|p??Ϲ3 ? Oa,zv(Y79gmgg6yg5&$dlo(odqs0 ų; ?-`t ;3ٌ.ct O0Zh1d8}O`t ;4ٌ.ct O0Z(??_F. @U@ˮ bujg~P"6Z~KbP\(Ȟ|236ٻ _OOټUJ9U]U fjuLoj/jV4n7 NlZE{? <pZK<4s~gcg4<r-LA Mp*ŭHG4hhFErtYGNiaTN2]i>RߪIV3# ZD=~[L[Iw.l|?-^M*N5|0I׳d9>/dXbL36~Lif!+.7PK㙊BjB?(88lib/auto/Data/Dumper/Dumper.so} xSEMB7Z$)˟6 .XJҾiZLs]wuy]ŕEP-""+ |眙LB>KQJ:$?ItL)g4﷜|dw>4W& op Vrx;Jk,\?+kʃ3\T?7.?Mp1 0R$&5 kĤ"?u3\ ]/y~$||GupJ?7-O Fe+C<\}8n \S W_ӞB W\eI&NW_+22.yNœK?sn I98Mp]5G^6<1bΔ8kqwCcJ3㎃ww6t158ǡ 8|Hġgq_u`1y6N'kkġ`-8/Cx9q/8qo)c88H{AC_3)vqhG[`_:ǡ-J8iyb?#9μL>cq F[8_tE Nߑ8t,vIMM~L[*U|)-C";fL/rUV]U3L((w(XPby ҇\?PVP]: K k ܕe #ȅU0YPA5|wE~MmaICD}|ueUir/tյ x׃aި+]XFD.-r-*\T=Bh n9C +Ժ@|8B|,\QċWT=jQEL SH<0s1z-CbƁF"+(*_8w/P^50VebhigQe>H\A0_]+fA(O9s 5*]UE axq "YVa譫*j\*((RUP]u~MuB∕ZWUu)H5*,qΌCIF@He ӫ+GI"hzAu5So*/&99򇧏 O5}D LQXpS[gSC$lUnT帚J v_Q2͞oobT_Pҍ1x'7gph4^E/_) :/i^j[} ^ ~N 7 Aq&_VPf/ժob,]ҲfmE T?X[&o~>[qMEg>S|/Z?RW QN&|_)G ~_# xV. ;F-]7 WO|y^|W|wxsҬOm|hb8ҚC8atAM@tha4 @M 6"j_t&AOYhS >0l-I2>0J~hw#_ފ0|*o"lWS ~pO?D'M'1P ~?p**@'x7R }OCD'8+AJ'x8?< c?7 l"|3`#ƒ_,8OYS >?GO!R ޏ0?NP/#A'gR ~?O"+jF}Rㅑ[MaoT]WQX(֯ԓj)@NVzDX-nkL\ ùmI{o·j \ϙ{;O iojyCqc@CR[2:=y޶c2((m9ٰM7zy$}%8X`Qnf6H^N4V؀2&oH0sP)Sٹmh Fv0׿/5;PN/g)6>}xȓ/)ŢgtVtxȷ}#_s*SNy無Ků*62(: mi[T6R0H=_GdA ̴%j߰is1Ƅ12/mEeSMG9s> x}}}}ѕ G2aS3lϵʞOceg'+7@j^&Nǀ 0/їj3;Wi \l {9#i;GpV^ne|hv(`7t܆\gZ1e6ϱTdha| 8u" L 0F^&iJ?]jm u朦b16`Jf81}{2vv센ڳ̓>OJ0Gx0\D>f1O  Pxb!'(Z FX̃Hn6p"R2hW[A@=jCBVV;ylsY 8m փ@ŰEO|}}^{6s*OC%DCk'?of}#a3@ H5G[(eQkX&$5@0#{In&q?B۶n b$"]^LD/B|W"X7 ( $e-4Bi0J{DA}?@^`Z_0$}`FqCr27T$ ߪ}*^ӜWLH+sQ^T&/Y{ w1;wRN7;)ZF1gO\2tȾVY̆sf\0} raN_'J\)?O%I=tѯKMO}MtEYN\t)Wyha dK i5d[Օ^lZ~j 콓V ixk8DZ;1ܪ92a,X& Ϣ Jg|^\r0Xi09mg]=E)-K]94 P7*fY2ېm_"э4ͨ=:˟M.x+7$97m7iOq+s0Z!L#CICQdEhF%"| b&vWe&{jk&b\EYy yCL@9zOͱ6Fe3c6m5q[E;1I7;$o0I7p4Pؗו,{_`달ê:4ry; Eƛ?^/i)8^)޵K{I~A~r v fv? _dVdÎ;d.hI w{fC_vvcWFEE*w":wv#eQ5?EvXwoyvkA7xzT++qP 3E-DwxNG`d:M/Fq3X}Zlnj~ ÊQC۩Q-L30ػF\g`Eowu@u&D}?NA[:`}ɀvxN&*:қAx| dҳ-w0HPomͰ~*q!i0 KEG"Q ;:8EO68l?lSЬ|B`[k ;HahP[0uLBTeQYiB~N2MT,$? fhpM@.nܮY XĬV\g!+qhr e&z5pA9zLX >'P-{P d(C@vaK9f\}ds#?3-u[~MsqkM/dG2sm%\z*r.`q梻m٘a`̱ I9YCҏzu̱" |c=a`B!\-찝#Wv(J`\T5&Z`}@@dy@)'a4%JQܵ38f8iVT:ACZcN/\  su23'CuWmq pn|3w{  6td\?{ꬒ/XlBI{4S8Ɲ`Z}rROwVxT&ZэZE9zmNnBM"?YK oTzIo -z}&Lԍ6 8h[ ߘ_u'!2zM~IDLmWy7b4rnW[׺2WYn2]c.{o6l,0%bn9#4Y@#Փ7 &$J;o$P# L^Hk8w&2!o0({16.[ȝqFV&/i'*_ :~g6b$x,O|I&m!{_k~I^Р`l7~n71*n/0xA aWhu|5r$^\*/C82i wkσ;tŭm)zWCoI'Mh.g'j#9X7:l#“%IiꋥFc/ <7cG0|߃yo"1g0ikOrȾʹY%8/rQxtz gT A9lcWtTh+86DPq w(h0giE{g6DI֑, ԽCӷaz;qQ?V>~pTtjne3yյ=Tp[yz2- H66uH"` {2MpF\"Ό诈~La(%֓нke5|S`¡8\Տ?㟄PTo,~ ]C!-zN;foM6ۈq!wRl3>-x9 pK:S&ˍkkA&.٢2s9<H\s<%!8țcaCf~hʚ .sd—`y \Vd;m%t(ebK<dZ^#*;?T# iͤaTZ>pJuBL' lF? m^0XG!n%bJdV)0AY}S=7'r@`J PPϽ(;/{(2w">L0-Y%%F+QhwЎVUvB&@w%0ق'.lXE:Id%2?.qjfy\wKů(-?QhOOR$:2˲uOmHOmHaa.|{WmlS/lO>SBӫ']̖0ep k!1~nHQav6)RŐ b>WP:mǬOLIϖ)PF^ԁ/%\syr.'\fu,}%Z>G+P; X<2)f J`.9Ir !ۗ>{np fdb2#C6L-(bgad*9LIzlhx ՟C (콒12¡BьDs" L%c $DњH!B#sRqU@MFv ISldtbMQĪODTEm&ڴvP‚k۞ {ik ,gel/$dmi1y5x2hEWFC& ӓ}g)ix2 7e,>n9\r cxӢw4Jdh u,FO`'tf#qc#Ǖ5a17QӘ BxW;!l4 6/#gkhЊ?`l '< s{F7-=3A)D"tmzq/.k{,qN\wOGd1F!WJņ PiÏ" >Yl>ya ځK85${PAR]KbJ[1c[w0x0r8ԝoeciI"2-j.Sp1_eT[bd_e|-ek];yx?[gC#Pb*iH6|L"#y8FƒR3W%/$e zYg1G<=c=Kzbɨ s삾 w=>D`r>EڪG Hs*`RLE/^̋ ITJ@qtN dַZ{%av6D'Ytx7*4핣Ӕw cCआWʋﰘ '~yGK U槚LDI3>lf|T\ țz*"-x8C;+}A[pXݬiހhkO>9@&j5,'17? ^!6TP8 _i[A/Z*21KO jEWkIv%8r%PRӲ} ikwH޽f$O`/|4$']EvWs7o s1‘ " =_fy.ht+IM0$CrCBԆ}5iZ"{Mn%10c4J6؋hXKEyEz+["# hh?`QRwF!r&9_&1t4 KQg!bٻ3WE}yo"򶵅-QVbs@ ٍN;ymw66g.ׅk4ƫa<7ٰwX]FΆ{s'"a|v#٬Fk2v/@{ ^YEs.c* e%eZnE}bN"r8:*fţ&(II `rc-'MTCIҔGồC?dV1)w91 !{${Wƙ #?.oVBFs {XѸO&P :}Gm 2&w|`;)n1SNvG^`U>sj^ʞU}GU«^eVԫT5V:9Rm^]5WjaU=UUTMeU먪9RuOhvMw,$D!Qc]"D-4rЏXCDZF?xO  HuGU^u}>NPFiP)L0Fe]Ihrߧz(-Td Eڶfw#ؑܲ'N20S%o %6AiwnBd+AAQaV>wl7 S o11 ;`%?{ ܍ɾ# MQ &iD*!.N{1l9 E]V"ʣDQz(46'*ҁmQ\PH<'M\P3|ě'oO tNOV w߻Eq (xl+:UmGa->&4i"ɸ}I]wfJd(a5sA )lgwG-دE3fJ'4}#Oo1=e9'b M}L#umxbf&/MLQc,dU:f}Cn@T;$`w &֕V@aK{,$LL^̜hϋf!;*w{&I#Fh <}aZWr 5/a$n=r:^}TX6Nl޺>k/rF4M$vE̢i٨>_ W>#c(X,[Ҿ0qZLH:6Ij)Rn?&'4˶cPHF1Fc>aW%ȰCO}-WIF/^ԋJ;iE1 kGkSD"Pc3>T@~Y38#ȈͭٳZ^mTC@+Og >óZC!a' - ;ZGhstP{Y[vZHahQNө6_OAPoX$Zǝq/A}Ѩ8II $Qa%tj[^x[lcdgmOIj$ BD'X%@n+ 6v(z4Ź׀/$}OR&OyUid*MR+c!c'LH|h8]="tt&&2C3хhOEA?X6з~v*:#)]vd=r@A1Ҏ18M*4 ҾWA@#jX^{ip,0D:Q}$F絰OQ{,c Z%@kP@/$pip) w¥/*_kz 諷&& _^b'8:zAHhЫe=Ġ/RS[ Uz$qR 綵*KKr/ȁk>HUc?ʟ12'w #Zp6pwsc,؈\|2Qrդ>',Vt.OWҭ}䯈/Rq nWR: ѽ p,KuSCtECte =lVT},ų]_;AṰ[m*RPiRubܙStuTXPmW:Hj$ KjAI JnjAWTŇZӥrRU.+jUJؗjJʚRUU* W* Jڂ*,/k rU|TrUҋp ҂2Wu50QWtH~jGgHϐgޚ1\$1 dip}]&MdM[ V|Ձhas"넻s45ե qʲBWIEYt@o.).f*j]UeHy0-U5rĠ宩*,N˛H?3?_O0QoҦ'i7:̷Oi>Tj])y:8O Aw-mkaDQp5T-v 7:y~C5:HV4AڀkϠ: MK Ph%fP>Z}hdnLl/atv%a({ebJd9st cjWj+"/"oǛɞ;ݛ*1 qY$sG(79)'9)rRUrS<'TdʞE(TI1+3HAL_K//Lώ&&;& 9q3^H2!={4K;~~*q=)S 0.R>?|~-=[{b?{hn< ??T[Hϗ.,ݷ1oL>oޣogrF}Jë/#*T~,#uB~EPZ3#zί*! qXV81O񴍧 <ӉFIc=͎)KH}ZOpŪht^_z{c]c!]b7Ƥ.B}]i ]^_zۏoL}n0LRK8_]@?1]Zb*Xb S=?]b_sytz]>Gco?:u~Ocꛫ1+?_^qX%R_k__S_:^?5%cNB}hՀ޾N罘yScOlOcK;qz}8ctN[bex>SPK㙊BWj;lib/auto/Encode/Encode.so} xSIBThVAe- N0 {,%MiClRH :s.׋3C88RQ-4oIvE?ϣ;kk^{9e[U*A4•RGSpa҅ a b_G` b^p)6D-ZFSxVQt*CT"r8v0\0E۰BUErk!^/_r9gb KT8l?A:}O5K O\v%"_!-pYܹ\9Frφ{=+Fip{ïF .n ] ypg S>}%ܩp{67qif~w1ܣN;O5Iw_)oOL^g=.2'} f .`Qܳs!ľ4r>,aq {!_ bf=)p}_NrsN`4+1dɊ_ 3 1u@PSh%nfya~}֤2SoWP3mTl?4'R@uR>߸ߨ؇Q T18o{UϘ%?^W6ՙEmcWS/\>Ngj~:TߓrȽ=dGwxeǾ_R;kʐM쏞~9f^63 Twwߜ?hww-ͻ;Wu?髟W}7Oٳ`ֿwZ6eª=U׼S\轹Iؑ^_{4=ύ#1A7?391OP[Q|w?Q66F_ڻi/FzƳbgW /GH~Qwx19 3~^M1/c[C` ҇`>9F?Fyo#_ fG#wKb~ѐ1!=FB;Gp0HWS(6ë)>9Q_2l 470g?TQwi4kkS+l&Yz{c w|/gӪW2}08(:w'|7\{?),,(vV9 ҊRPP P`)(WV;Uy9eev'BLt j f0̲j{? VYd/(v{QuAYi<ɵWت* o*..\hWpW+8lk)4rumAYZKH@*gaYtbK! ͞ah:ȵ,yPkWGCYS̳<̼kr yy{Raz(I7kkdϘl삙329 83˒}2r{8 *5;+}lh"TpPi5i FVV,RdQZ[P\V:WQXE𬴲&e-,+pڝ| *+X ,, P2{W0GmN V鐋XX BW0eEt(I! ,Trª+GTrqr QH{[EisrIEv"09"YTXUa*X!~ELו豕'ѦªBxNYQMEE(\TAPB9KhhGo/.@EQ>-tIΒʢH`,X*R s^X]JKmXT3v=(H=@Յդj& kQaK1Z[&"iqaiYMZH[1*#T#ɒ 0~:JkUե.Vb~ 7&%_Xm+-ՈRD"cՕ3 "XEMi2r{!.TW\TT,tAu5劄V̂)cS ԧ.95"9ug`Miy?AwHe~Iw <% poau |Kg2oP?t| Oq&_Z'r I^>9\p{"_>97q ppt(Si9sx'r8$t?MﱋEr8}9|>%p9z~.7qx?_9|~opl&?}~p@8|Z9? q`pwq. -p=9<ÇqÇsxT49i4nDZO'鳉>^ 9D~BA\"?ېG'> ~D"?HO'f/ E 4҃~ ~鋈 DH߁OH_L' ]P"?oDH' }=É"?!D'dH"?"=OH&zc"?A"N%Zt@%җ ݆8"?!=O/O菐O跑N'ڏtЛ@'HO$i 1' WF{ zo]`FSE C|z z'UA0KLEWW"DF<2/Ԋ-2ǿK#ֶD.,~]Cd߇'k pw=ڊ t!H ?[P(+E7ٷI9 wYPsp΀@>5[-qkU߇b.,KUs?̒Eo_t507̕ -V珦V7)c Fs5ZE.3JV 1 D:StAVH]YBV}[ĭWDLv D^nɱ}/{{umdzHgvy}$ -rPLXf[)2&nkԂ%tQ[ 3moz(yCw<~;]y=Z2rϗG#Jӕߢ9!؟.zEJy|/ʳx罎ӕgBI0U6?#, T_҄~:ixz<<aj,REXr&"Ӽii9ڌ#O[M;3UQDMD =c"ex eC;s/FHs-LDf>/OÏ%OO(O.xyyCByZ<{T(^J$KC$惈i!1t&4}8ܧWkPp#wudy uxytڧ2wo'VU1idk}=C>wVװczp/z]:E]VVB/JB2='4&Y=KVV]r}e7t )z![g9H tYkB'=k{;poBFBnl9xۋ5ha Xo.D8Y3]ɢQO E.D6bAL|Haη$>g-ahGq8˹Wp6 #xȺdcUR&dd;$zQLbi\۴s q=^V* U7@;ٛkVVx}­T݆uƢ:hQa:A`u$-Zzn4h,lm8,@?`>!u U/CH ك2y@{6VѦMDE[i_SS%ĵY"0t Sb8 P/u~u(2DZ@?5ITGfK%Yu z.~~{2ݙs'f։L!Rm=qm4X[A޺9Z(QiTN\#4aURPYwQkhueb/)3~Z<zjW'snFf>ޖJ΄'__8!ݲ;pR^id9rQ@ҋ1Dr?~clvi/5|. qxdO~a{M:;~%!݄t2t;XܟbgL=H'ŗ*~vZ[tmf[}5t7)$]š[19(AKÖnԭ?Xt#I<}ܮeu4Z] g)9f OAuH+uGxג?@klѢ p͂xPdbui!L:?gtu#}Gt8n\}Ok(xǤ=؎>c<~<˜C鲃4E(]ƚ/b({m5Z=o[qj8wm=*:R^t?k'515*I'4K X=zT &A`[&*+IW@Ω}t Omz=Jl,5B $kѓg=rI61C--ʅW!T$c5fD=ꡥ@]u丿nܩǗv>:TU?bXȻ]Eܢ}E _g# 'N{axvLȑ5[{2 w̮cjwf]P@@u *Kkx$_3&M#9x~[ez\ߠ(i;&=R\4XLF-u̷<8}lz{353`.p'o'Xj)3P0jJ< ծ58]cH~]C=]'CTFYq BGP)Rx&xUԛk`ZOtc%T2#zyfl]IwSe8V :`>p%K$k'~lȺ?1͗SN!g6,ʆ V=TGt7lխ0#m4LdtRARGtNԋuq8ҵX5OЮEQoꐅ{d>,T DL)Ci>jHBیBL}m hdcj|VoLM i%vHz/!3IcgEP`s0e>5m`qBh妆ߪ/z]iLYܚ5x/Y8Su8NltDHD˄YgA n9 M7~TCXt,s~PZyƤƏjc&ĂYHwuQ땅uxzboJ]fܼ,6ZaJ{[3|#/n;X( %ۡ*a[0م﹃s8Ļ̋ќjc%S %6kq(i a5mHY'J@jPH/խxDE=PSyF+6_`M*5a3x?gp#߰b7xd U\9t~yPt0>."l=t` 'JjRZ ˴X00` CzatG 5"jj݉?@ : xj0Y41w>%Fb5}t+yt>6> pE$/~}/aK{s}?D[h#sqm`P"е:Vپ; ft]#a$[Ϣ-;V]6`#= %԰8iHG%:{|>l\p%ηPO;|>b #3\~l稏[7qe(ƖL)oAOF;OiEMTք-bd3W[84X [.2D{5v'A=H&#\[@ a Dfy%6׀+PN΀l;zIh?!yS&1y؂6qF+`I9-5y]}9+d3hwuy/ڈFǦwF EG]);-E{;Ӄ{'KJ Jy}Tfv1"kOG(n6OFYl~]YWLHfT) Y~!y" >ާ3>(n Lu H&Xgхѳn+1=HІ8{!~"hjm>ogm9НN+$''-WswvqОNGΗDl}Ԛ1]Ɯlcl>Ίe,hp4 һbNԆ?C'y4: ]sI:Fw9?KO69$Ra-.";V)du&jJP浪`lFO}f`"Zg *: t}(#7Q>JFUկ*w+TbFsn#T_հsq׷W{vֻY)\L+fegݓ'G؉Ts.ظX5J tFrs;9q($D[~>@ַN Z?iEχh,Aݤal{8=H ҩzKS?#sἁ8{Ct!l53q-ngV6hP&Y,^iP}2#Tt dϘ&z;2hqHGH- WtF.$w;Jp`zmzpX.1C0t q [4tl; tه ks%-HdխBe=*%= :tN; *䱱"x`(4hZܤGdd "9lY&N8 -RQ3݀+E͏l"d@i/w6mCӜe寈u>ל1=_v6tffe)&hB'<``!qo}w2>y,@үǠݷ/'n;ΘXGqයIp<;kf0cfV}uUl Wo^v ⠶+HMhB-jd"bg!.߀z-c'[$$b}h|4[75892!郛$mґJ-du *`F#A$kEfH2xD[p?U]d?ַ(Tcڄ}WGd=<%r^[Z6 YDķѴMq?n0B&CeT> xҥ4~٘EqO Cϝϟws7cŽݲ&n4S9{Cߒw7Bߙ]'Ԣg.g9۴Na,0Zex-UB[ tNgtO3;gT޻]UB4׳x΂`x 9;p`vPe%lyv,vvpm)jtk%ȱg\a8"'>I,4kn#ԂBq:ġ]}uC@Us ~A6M'IO I1̇iG֬A+c3N!'hs{%*+tr]kLNAWإuOdu[MO ag5UunRԐ֊}:V4oٱ.iNɎYچJTN$%"dYQ2=kiٶlgjH =F8 m#0IPRɶ)1>]S*yetzN 4. 9FkGzEu~CfcA&8WEr}aM+vltL˄?nׯ۲Wf,m*kʚnkI e7a,^nJWcނYm~=fnӨz p⣦P-wnmL][UW#SX8eĹ B ?='I#ㄬ7R/\%YhA&y^aޢ#eUN`Y!?Y!zlj=lߠj@Rv_xs+$\!BhV<ÄW@bQfm,OP) RL| 5mv]N봸;nqԏ?!孨c^#%HDzZm?]Z`҇ }|ߛΔm eR6e 6lߒ}(-L&Q#le[Lٚ(H-m$e+l?"lwD^l!lٔF2UkM .H &YI7:YQ'($Q@:\ZɄFt&???/?9FM+PXXp+O`UXXh +pwx `ÁG <x,xOXx*t^l'bˁW6^ lx#f`K-A=̳M>~x]x`C #\c?'y__znzmo-V`-;~`ׇ}ɧ?_~7{[ G~Σ]ǎjf"~_gz!• ˡ{W7{%ꂰic(dxmA ÷% B B9Ӄ`6[|[!\ lw{ BG׆PBC l @ tlrA#Ң Bhx'mx7S&ۑ =E2o:5բΟ/?|j<|K~j'pES |=yO |koW|aAhw><]WυB[}\WI0[Y֨TKޞB5V0U|Cq1|h*aUv:遭VY;! ŻvB[&U8\>[ц } zz.4Lh6zz1ʷ;|[ȗM^ c͗($naz7LaRsvJX=G 7Ӭ1;oqm'1YzV"uUTb?XcܾP|3{&6 DYKH0<p-M^TkԴԿc}NR o$&jj{-.=+?B$=1:,̞̿믋Njui&hVz~8s&׃p>ׇԪU_џz_Dr:B, VpC 91vR'/2NJNQo\[O^_~bs$[R\ o߻$^R"ctAߊ,Op# YX^cQX8p g,\X$ 7Yx,>J5Yx p6 YX,Op# YX^WX8p g,\X$ 7Yx,,X8Y(mWc'OXuBJuIY@HtSVԤ,)-+SZ$DH)Z\Q*}:(gUBddeN!%0O)U7K %EU((*\LcȿoF!RRIYTW,,+?}]G[,UthT)h4\|yC&:r|.u.U_ r|yz6eJ@DzpgG'_Jg ?H/?r*D_\|y|C)J8Y<_OPO'"<>ˡ<#Y=/aٟC|9˦??):TF+ eG\oNTė/9ƆU_,|O},EiG?-aDN"<>vͧ/_2,\MwX3R'D>^+yPK㙊BUHlib/auto/Fcntl/Fcntl.so}p[ՕK n qX:H#ْdH *-$Zqv2(NRf蘖B!0Kq[Hٝƥ% %8D{νO'Vf{{$]kWizZ Kjkn%>jK+Ҧ&KMXo _fI&2INVK:ڒ,i(JfSLz e,3IpԹkRջMCRLqQRֹZӴJm[DiwwKo8'[N.O5 ^WS@^7zC|6H.,^k^7I?0}ɩq{Usg&47c6(u8`mS}Sæ΄Rq*|()pck1,0`0ViSmA`ȦMN@-uZĿ`yI.ӿH.O}5cn4FVI<7g3=3>D%ɼ&)w/gx#w3`!'fd}0sm'׉0&񃌿M|cL\5N<)Yxqkod|.g|9">ȸ)ˈ2^C<{E20xNw3?BO?3qJܼ2!kĭx !Yd< 1n"cx'dq 㻈1x9od;Ļ?M/?ω3~87ߞ$iV%^ymJ|7qO]*As1K<Ƹ*ex!Euƭ72bx?53 >fܑw-q1[x95^oc1݌Qq` '~gU|Əf|(Vsg2=q33>K*O7m_G3^@|"d\'>x⣌ky+q30KĭKşURşgTIşc*Bş7T<\kB/u7<?` ?s4Y~ |s _gn1pƇpg3 uLMcꎌ^BBbB+~+6W -ԯIg U eԯK YԿ /F}п<1~q~hV M9NWޗ*}ԗwqCT a[گ3#/ήӆ1:DW'X{POX_JGWkaFXV @G(YK:vT /瞾^:wU%s00R xO?YCvG>A@co`df/4q,{x1=r>E49G6f6Qb9 c 6zKC3:RjǺ& ?{^nE%= ʹW1>}7iNa=+Rs2ꊄq(ztmգ_f=L=ڏk}/j[%ȸ~(׎dK>9!P^+m̞7+ב֝<=e6 ^Ep }=5 \s'HY+7AsE.r]pG}_CvEĆ>F&PCX\}߳bKbxSshwVbEգ#Te!8Q qEۣDEq־r.9< gQps8=f]hůh9v-LCx =NzՎ::V:+-\Ge"`/c5<eB9Wd!*xy#FFs:s˲sx$g& Drµ޷t C2b~S8yxϙ; ,Xyr< R ɓnyN~"rhQ~8LX.8w ħⴜn\./vbqwEvp4׶ÍX KD0cI-6irI g+r1vS1y9$VsT/.xN"o?{Y=6wy#ol{Fwg&ʞ?xnHcjgؑt\zZRVwv ڞ ϏVe<ӻlΓ^ܟF= tT7VNXH 򗝄V]LO.yޥMj@eCxD@Ǿ1F–{);6 gY9[ j3GK!C˝bI2ZLPױ֨ڝ^reT}$ؕIKJJ>%gz,9dwumed:EJWӧ{w[y ֻKRq86lAz.^Y^ ~GKkBGTKɕʒ- >'T~]|Ԟo=K'JՉbç˦+RV{Qxe6(AبTuB$<e1P_tۼ YvL<⤝5%..w)P*eyJ**$*\jQ{ Nk(T{QP$*5}R^a I#&S %JLLS(13Qb  kBz*t!+}ouZ(}kdUE jjڑa5XC5dP\LOQ#XJs8™J,ഩNvG'9-bVJ'&TFTo9(ODxa\$,!dAXʦ1=>gH{H/!%V^-un:DRWZT{r0Ĩ0(Skß&[w@Et% ^k{DZdW$JiüH6\(+x1}X )FZW ii2d^<7Wmx|71ឬY?c ?p{RJ>>gveN7sjv?ġŞsԔ.gښwtK8VMz?Pe2J/7dMttS.)>1Q.!^5U)L{22g)xI)2nW֞L 9UcOb++'sWd#?ewaLb%@ҝܽ&K_Ô'NzMi_ɜn*f3M)K;jеNj.CŸqF_3n&fBR3|Wҍw4Ա΋Rԃy;菙?9*WθM'56WYe~*3EMtW㽆q WqPtb9WMcTX0ˌz?|{ng\ =[I>&kX;*cRq)Gr5fj.#qkBSMeCKKmW9\nOM|-gfΩm:7mbf!<^*ۡo-JQ8HsjheR<9(ܞfbemv^g䛌+yAj]>u|s)1θY4RTܺI2{-o|*dJ(5:U𧆍KUWX-rrzT0վ8uU:?`~7}nj=q1̟߳8c/1]OSs~odw/bLי^t#S{1}/g/;S`yV%1/}ߙqߗ6w2j/OQΫy:R@T\*.#UԞ0_z_ &~S Լ.ťd']uz:P.GH>EyHA 1S(!搼J$H֓$#$"vI$?OCbη=ۤCp`V4tlhj[T M|B_P%mvy~\{9TjkkwⷃךsF}{`kX>@{{`ʛk bЊ)h ?KPH8 nhhnj٢/x}Zwԑt0,P_JҒu?kNW댒:4U_CJZ1\T})1u%93n_#J0әthrRZhiVպ2Y%պ63&ߨM[ xBSKC,f&[XĿsBhU-Ә=;_Nz~t7~ya*'/ſG~V?ɲŏc#u_I&SܷbO7UWPl-Mν?ϐNS=3Xj_IV_=Ũ_?[x}uXKQ5X8M{1N?3PK㙊B&d#Ylib/auto/File/Glob/Glob.so|}xSUB`"0!iSP/҄VJ[!jKRcu{gruq(8S( Ǡe**-ygt'4y<>ZkQh8q5N߽<y 7?\L9Hc uhV}Dr9--U]$zLZZO^RLV}&@§_rT-w/Cs9m/]t\U{rWt%w5ӞkDf߿*o|ephp΁sJIΛw༃^cXF(53*_DNs\gJ\ap 4I9?%7RN+Φ}QGR<7ϘOeƶJm'l|Q&,/eKߝ~\0vCJA $c !cd/q4ч5i1ꆯ5 >+M= uIiӵFߧM=sV9#ip[zJ|57|էl~LcٔF4>y4Jndi/R|w ~-똥;(yz~DiQ.Z.4@r%1GA .ε~NoJgY[=ʲFOkMGI> \ ]\N5~=Nilhrs>7w6W58.ǿhz+wS*|MXKojLy<\ù޳ɷɹjVݾ&:gcT!z6_7cVwFA憍`dri qo@Mjj4 RMPn=oZؼѵ/<-H kε MkDU+ gcYӶ|T#ַ&"HilEWF3wMزzcŪd+knitz\kI1Ьk4PDtCx%׻ֻina[T ״ARXo"w{MSȴE]-\‰YuDbPs ԽQtO:sg (*u-Ԏkqx΄A Oٲ+W, qźZtƵZhƀU>W~T8szj] v߯ rk 9լB%xh!J6&Ɩƽf?@3|t}}6X.A.߈5gM?TZQܜ8*Q9B)H/ޕvMR\N8W/x^ xQ ŅCSp7S#N&*߱LpCNw1h^eg{|G2_f oc. nd >38.c;\fpgpܽCd70Tci nd3x2<f/bp{OU W1,g3x[0FgO+38`g2e:8=<5w~äh_2 zP"y ї y yꢭ_<m&1E&|)U<-"41E<3Ox-7 ;L'G \?O"?OK'1o! ?D¿8?x??mD?D?DUBH'V' DOG7 |? ;_? _@'|)S4?g!џӐN'dg ?B?oF~&[ EO+sEǕ= ]6~ "#d( D}d0u@>95PJ 5>7J3逰bAsT oH1JcX$o]q)Bpя! >%٠\jţqb"(&NQFy~0?Z*.-YVZWKBŔ߁e5k{pVMFJx푕Zo7[Vr9 ._I4N zb? im} {0'sMa.͸a4tP~ Fk >1ȑD]zwfEr,oVXX8;ySwy.Oj6%i6T74'D IEAU4\E:a ;1W_s5Ҋ-m&M$)S΁ jHx-\qz>d,H1 ux%) m5Bd vAG_*E0R&'r"`w o,mB4kzB,螢'Ģd"Z5mtÓߕK$eI|!h҄d䰕~w~h%2S@`L$D,ϡnƗ_ b3g..x4*u`娆d uF^ yP؋cql"$->ǧ]CT4/\V|€13[iE]RNQʈ!E҄VJV~OoE8)KP6{sz#~?E+z4:lhV?Hhq0+~,90&s8f{A.0XH`@&w,T`~FcY^&& 9܄3«Ae1!Oh?".4Xĸ;siʖwHU*F^eyۍ~`0SIrӗ8'-+UK]z|}h{I`伨?fVJ'+C-ovkK!3XZG{|ob@gG2,Z) a\:J>>hg*@"cj҂,B!Kc(d)Z)}NBb70 J3y$IPhD49x΂p=Ƃt>Uj7geP&48So^>w2CG^bJ@\ЬI> =#4Io߼BkU~IL[_DEgqH"~nj;c4c`%ܘ%@fr_غ5sH2*}|u]Z|OzN9pƸi*Y,nm' f|=oE%_m&W3k/|gI| vSH9t``sbICY\cIP5 :a BU_{ >&$v< Ptf7da@_f8LY{ A<̋}r>x k5?!, ZQ ҥ4U `0<*#[lZo@6гؖ6D[¡8c|(B/CJGK,wq5{ʇhq Ʋu@2Zqmf *S @԰؍~s~&zR\IdDze Ԡ$)7eF[g4Uuؤ^l_tIn}}tda8k|'p D Śg` ,4ḿ%D;`X*3KC *D3sB[ܥYrfܰ"a0{\ B 7D+zgn,OnG3k_'+0d/zPcPqJ\dGmg2AA맃Bŀ@*Y ܛc!T0]x #.,oz0dyN>ޟa·3\ qGv% we"D`@Zq*q.(w3$Q>Jc=阘m޶G`PG&#*W7CAѲx' ?i[ v'ȄKXoΘ5B;'`2ƓL$8m%A6dE 14A8:8-wstu.o7wH&YSǻ`y}ApC8$ϳF\ U^aÐٿh b# lPɄ1(R zNB$9#PPt)e~ gf P@a1!_ [*-~F=\^ ESxzu]N1iXq~M6dV35;`חXJ b}3=0aLtZ wgOS/󡩸$ cc8¦ - PPÇZ n6&4E~ }ߍdI(!]v^=k3p-w9F;~\Ÿ'P9Zs}ax 8g+>b+'r䆁kɔ%aAB< +od%#Ӓ7?A|tsH(ɓ6DF;*[9LW~sFA#sfDS,O|BX}&~UVSmLv È4aDc~ɲJG:3Ck=?1 "c^_;"NFQߧCDW9HXn/uܕ}.L=,Q1܊%eeApIb %:e9Rfe'Q*b!r+cF9#Wđ?1`ȓ#Nd'ǤKymK{ ȯ8E&xF%xEo\ C;Ҷ\넰߀t'M dZd3a`5 ?s$b6,~Ж;Nȧ>sa1 +K܋\nSMU;쫚QnF )RŔW)-:/~6DKY\qk/V}#O~BG ts$R}cL=ʚ]5N7rV[eYTZ., 0C;)7ܯi))>XByIMInjY# XJmKQ%XV,[^VKtƩR){f,GZ̲–leJKLeD\VM/+,[!ΟlDj5e\r.ј767z@Cm(U[k\dbIvь-wA{;tDU8mL^F{qi7*ǁnGz&?_yH_7MdЁq K<ہ, kݘ~#K3}O}6My9hЌϺ!C<{c[v }>v9VsdNcW(/@:XcwF*rvk05H?&߃֗vbE,5I4l,!3ӡɿj"Z[N5ǸMo)hW)-jyEl;c8Ri'CnCyKrGP #I(mZT18Ps8!q֚ 9ED* )u('Z>Bz:j=IQk/q=ì:Hcde|gal?,׮PEA<޻'- fjR]cA?C<Rdz-o945Ïga'xo>bO+uVWq~\?׏qP#.?|ްN$>EIx]FBw͔ R7~ S n7؜7 'NI_N} # q_TSq*}[ٗ9%~gC}Tڭj{께{RU =Opy4AGS߹骾j~Վ;껾2}_X}'WFޜr~JN)<#_pbPzPn9J_t)}SSA :;)Ki9Qꥴm>GK0Sz~J3cNJRZN}z)mtQ{(=L :pRz's)->JP(U1;?x+EZ66µ5\:vSz>%~$qBŒA @ P 7s }MS:Zq86)%Gܐ bP ɵ r4ҤR mo\7go z~DWJ 宙ءWJR$ Sj>}y軪O_5Z^]KWE`Δ{̴|k) ws^^~S7PVJk:)4XJyu}'/~R^wޫ_MwMPg3Z>RSܵ1-~j^VvxSPK㙊BqSIlib/auto/IO/IO.so\|TՕ3 FĘD1dB/0@L& $KIa0nK]n뇏K+t j[*ۅZ74PfϹ?2=f,~x9|?ι{}vc`e[IB / ۥD6YJ|>-$+|)p͡h(>`3|m,_紇©NbM$F>Rj9?zIR!ȗ"YKd-FICyat O,Y&'Rۢ檑ۊƼE)pm{* pNo{оɌN;{t̄;=w*Ά{pkeƑh/np;0: n {Fی{DWYpf8  _uww=Ip&kD ˗o!4,?G&('m16°V3.n̹ :E=xN{>?x{w=73_ܛ#W3o _ [w;ҏ*| Gw??Pѹk/?eqT\&腭ZeS1c|ܐNKԷ-85~4AӍ$י@d + 1'2%q/)9_$h1)>~ A9xn-AIgr$brNWמy;A'ȯM'7' -h_?M ,KX`1!& T>g<DzB䯏Wo"1I?V٭lsMib#&ƿc I{kb#^&ұUYobM|:Ubx +7(\x4L7zJ{Td1}ֻu-Nxg5^ijR_݂>TPA&N 61N/Z#Z#+I^"Wu[<xu)dUȴiȼK**+v`J 7{Ը @jҢyμ(lwo1n.D Ha<,^/s|}l^f/KiW*R{V)m>[7 xw ]xo9M ]5Oc~l ){A.1-$.~cp,9~ P>Le.e>BR[\\O h(RKU xop.~_KV|#OnpU>>Y%{ YELpO,.9>Cn/pq\.nM3f5#>0}ӭRtlLXOסhd)y*9Cct~"";?y 8#V¿<o!C<"~8#}א߃OWI'ȏ"Gȏ&9Ӊ ?1D?D¯G>Ox? cFv?F~џȏ'~!/B~"  DOG~џ𓐟L'XmDB~ џCJ';|џFW%*ɝ݊1C_r8dsL6 ?RO/<=/R&9O{zl葃ךIOIw0m IwsN@H. u| ╝696ȦL=7zg:PV ( R_plWTl`,9'r{$I"43AjrY9438mQh"O?F@@=xFpņsϣ%CeY~ҡ4U2ӚL9`3;B56#ج]rhh&Y+35/Дݐ-ЊZ*U9meɝiO^%AD]_-Nۿ8R[1 TgLm!j:{|EmWdC`chY`, de`':ha:5Dxڢ5KjHU0{C8c'=}hk߃VI_e_Kj۬]W隷:JzcQ}ge}5?CuWe?hh>'0 &?i my%mfpUiCe iu,rmH[Zs $\sr@PIj2j4a#ۊ6"z%ʇQF:ج>uXyeRws%x:g`jȺ(Q#0ժ4 xF0HjetoFkutSY\;G~Ihs;zS\֙:S}YT  RaQ6@4Wf}qs>>u tۀ@1R3~t4Ճv9#=e#Mik~|F0uxJ)ZP}9B6b5GZ?h=Gp:@_lCQ\S8AY|$^e9Brؠ$aJe_5v~9%ΨG1 ̧DZz%~me`3g(%Th-춧áŝu̎q<|wvm<ls J:?u< Xi=:wNES^hHq*BW0rΪ+ W"a_~Zޱ/I\$ -~Y%ov,ճftUc7ϰ9q ;=ߣk/J@h䧀۾¾ܾ4o@oN0_з-푧+5uOۜlxoa83<6}IŶGѫ{?{Os}'n<Y~a(jqR:2tǦQZ>:PIOu\JkZ{p~RRV|nC-TˀvD׈Ռ'u'Wd2M?]P+Ti!@꼀Pr#<{_)`;J6 n,K{Җh)@h!|$Tb5C0ĠRSc쾈A<[ QZ"P82FJ@H~{P+b+ $}pH=G:3 Hv.dxn X<[|%ıωh:bԳN#,֠0`RҮM{czk%|_2:ÿZAu*[YT(I{T2+WoI&;ױ4qM<؍M$Gf8@83f`Yp(4jzC@ؾ ~vH{ͤ;bR#N'FItZM/I̠oē,h;h1 M?$>Kf3HtMGx$P*ZRK41&ng4 A_d]4BY4D.:MEߠwhV8&H[Xb;M(AbkiQL~O&_}d7=fxDop}oJ/hI{YrCRTQ#UA"IIJJj$~xoQ4?D6VJ*U#aT"X\L*H܋&!U(aeQMlK{癸 !4뭚qGԵTs(Bw,Hx-,+MCbTbF *Fbjz6B:~<,GIљ$0a]$ҟvȅkubU`d5;;[*]ZP@d=<=TݰfݹR6+xVEk\$Nzp`v<h/;wfvw3g&d ?IRPh@ 2ٛzMSQdǀDcGڜѣNpQ v܋7X*[p.!Х* -/^|1y\Q>X^\d_RǒrBee.YnwKGd EΊJ0oY9}(Y^iJUOIXMV>`uuǭ4=2<]V`Y\;êc~*j~/6Y=Ha 1ev h3@3a^ 4'EHEX& /j6v㰃 4 @4vgE %Cp!.\;A4[JO\6lM;(+; S6$/Oٔ6m6_j?50]KN[8=s=ղhOl7-H MĞjSX@~\r_JEQ l:%o2=Z!)l4a<<6%AyIyo ͆X\7+j p.*7dC#IMO'Ar0ϐn=%m6Fl.g?p}OΦZ6fn6ZI%YМ{j~T =5 D@KԁL2iv$̈́Ug V^ rU}qG/:@Y4JZ~c{'g`~ + ̴9)zuyݼn^7k?ݗ,#\~oϼO~.~KgXş]zI}lbv*xj*;( 1?cߚmEiۘ|ܮ}`/3>{/~:bvhy S|F3Zh >/1CS3d S|F3Zh >/1CS3m S|F޿(]@GաRv.W rOk$չuRvͺFJ?Mah'= .dOE&ewɛp~/y&S=κ9.ߵϏz7TUX69k<ͫH_ŅD|!iW|9NqCy\:y,*Pyy~r$x~9Sؠeɻ+QoZ9}~~0^ (]u^Vlxհ_?PK㙊BXZ %hilib/auto/List/Util/Util.so}{|SUɃD-PmԈjyZy$iOJ ytL4&-qzuz#[;@ Ah]k}4Q~8|NwZk>;9{"N'hATߕ1( `p{0RKŗ`!^e(ZWV)^cgjXƯ}L4FvcxbiK۲OUs _ Vo1Kɹ.[B\px2aM7twDw"|ՙMpNs3'f)pfg>]> ùYy 7y@5YʵYp8}JZ8 jQp^l8]p:Yp^ -wڐ@sc3}ơ}8$u'™  g.2I$ؼzs0cLg%uݟ '4Qӂ_2Y'L׷ȏ>w+"lpwOx#wx~?Ws&,{ R=m:kLe}r|b Br)}=E蓖$hS%0B߿'-E;`|$Ku;R1E?K!))%sS/.N:>5E; S5qqI?HBqۅ?h@\N!^)'Rɞ1[RK)0&II-&<] 8Cxx514n?kffI~KoO+Y9zb9}`k)=%}^L7L|JYlJNoﻊҍ _`{?gxw:s6{:OEC b :P6Wh _{z?i ݂Vp;|MյiizROe^K~m`ڍ@0uouye:wϳV(5չM VY܍M FoAoPPаﮫ]s75j)`xm ֭F*y}54W7ybhlqWyV1hz}Cf ]4WWV5yf5)| ?YW3ʆ-W6c.1ܦ_{0f`b4zH"|l.3nq.i7}|U^jh4NO>`P 6uǪyX}p* Ocm_ a Y5>W(5 EaƵ :m:DH68!rh#`:+7nܾ*O李 .g|y*M(Jn$ xß%6e>93^ 8=yMû8E$Kg8\>÷sxwsqrx =ޟM+9p~cin|6sxa.rx 9V82c8| '9ߓ|/ߚl+8'p>8*?~-r~s~- n`_fY~=[8[9m~op>uqx>op~IR3ڀvv BdFE\w7m d q]Ҙ}^4p7+PJې~K"t m.@ 7z64p'#)ӈ>t?!=OCHH'{H$MRn>G&^vHaPA {eҤs<^jTVE~3HN%]$J/4cXozBRpjMȟ%edѠZV;<1ŏy \FlOC[U@x E2\^"FIFjQVa@'2KP9]-NIWrRQBRtJYz):%Y'gIͻИ/ej{٭55 H)x :FjEVh4iW|+);PR4`m ,;FHY?թ@a-H1GUڎ$/O8/OV#BޡPcV՞`z%WYUCt.9`=j夲ge=bSOPJk-boeYGnS é,3f`-,DfKvUn͐\:tN [`nE eCA])%().%`yrvm"6Z~UUHmNb68OmvVŏ/f8y0Wp#gEs ꨷idnTػK=;P+)f}pvp,j.lXvXp>jŵqV˹Ċ՚>_kgz4{*yEQˬ^Z8I$yK=\!$2z(x$)ę딍V}"D$Yp<_\Bpv2$ s8<|oILJ͇0 2IswJ-b@[h1gYէϢz\|~CC 1@P I Nc;uY:?c!݊{W(8Yۥ̄Ԛ~v'&y&뒜e]?q$NhL+s꜁H>Pak뒛MpahO迏22a;lZ}Xq!m?bHOe$Bމ_2;Җsxڍ3̞zj?u8{`χ`M=}=ڞb Q6`s-Rh4oeXwoh`]fJf_j_{}m`\XIۇ=K⫊#M\b-U; T3B3ΰZGKb:t2H 2D5˩Z' ėpbevO0s8Yʸ ʄbBh ר']3o4ǀwBՑ#%Qji886rxVZs$rQ,)PNf[)xIq/oqAb,]Rk=5\]Yļ_@y`G>?bm1UIDT[}9EQ/-Ν*9/ށbl#d\÷/ep6A]e S%>~AWl)M# ^pyψp/|* "B #Ju8{xd_o{sԙ`jqūpsk08y}SbnwN`%J&a %r u ?%/+wݻb٥<}A{yAPAIGvI@g)?QLc*bOF>i[2;V8.*9b{Ss!baz Rk]Y>k;v\녹v@Gn3ҩˌ>pJ'/[Ȕ_jЄpC|{^k:+?uKvBr"eds\S%Vud iep5&ݘYl|^z׉PqD|;0¸!:]&iJ k,qt 2K,($|-F+bO,P7kW ou*v}Yhb~s ?Zb$})Ra)58T1'/L]"89^l\\p8E Qu}  ?)'l&#VVʳVX Y+XY^)jY1i~! nr;Q.IP2|)'6H8X}_x;pAqilu闃q1\Tș'qޕp6f\sT^NbGhPV&gnœɥ~dyY"n+;֚@*6gw |vC{0vi Iaҿ(j-¯օŽr0CXDz}磕Ab^CUX KE}$aLĊG ߬b @^=p8MX[|n~g_/DD|B; w=#R(m5Q<齃~&A,.ڧޅL8 $wLL#͊0+CV|V{F[lƳ f}bN [ A%ȩjLE [ AE+Ս /3~W &AH5Y4$A. HLd' b 3 s!A~ CRc'͏HEXzt@v,IC/}YC2%F@REǫb$ yѡw܈Kt3(g11?%ƳC>šYNpLb70Hv $YdfM9t$ޘζHUlJ6Z샸]b:=91~!܌©?dI6QZfny/`A׮">p=x°04wDz1=҅9DY:LA@JH˛iZNèjkŕf_B#qhXEC\|@ߝ;6rr;ܱ厱`P;:r`ܱG;ƾ'i`pu bXM7x^')y<;:tZΞt} ý\ƍmc~ϫNnbn9&F k: ˳V1?%aM9$Gh0uis׻l߇|]'nP.gF/sU\WblP7.?otd^N; SA~оb60~?GT.F~h›vGh̩\O=xyт ̅!:EIRjzuL@,GbbS ӏ\!E\S9 Xq-YRƜ9m uE[ DފD;r_x9na\\G r#rL[ agH;XaLx< G5ʭ;e{KR-1)۟(O) =acRvʶlcls)hVD~E٪clc([e˦l)۲os[)[am/eNS\6#$ell(%ƶ5Q ePG1%VʶEQ)-͢l]XkFVJޡl?c}YV tGҩ>&Y죬{Vlaɠ[}-bn+,Vn6A%;iξ=Sȼp}bWA,_")?J#ӁQ?~~i钭ѯ・sާn0-|5HMolUZCB}\ >gVY]k6, 54j}5>S_m)[TvR#P)ʛ>3o0=oƍ>xyٳ={51(UBMš:ƵhZvA{2՞ɌG9x=Hxg]a_'&joLyar.s-uηgg[SsL }TXwa~b6E"Pkρl9p|(!U@yb>z+H5k&9ݰD1j[F!hBCHʶ/']g"-~==۸DеuW7a8?>@60ed֛ڄ3F5Z}|N_"Fk3ps8|Й<o0wYACqE=T0jq}Q8y$qyƴa!z} 42&!yWASWהipeX}`]!_:Wc1"I[Ypcj^^]oaCFn! |[''-39߇* ywBIpxg 6DoX'") OY 2,!cAFC`4{F~pxqMȌ|@9P ôX,yBB{ 3 #)4l%R8HH%7!U?j~X?0c 8Ӧ31Ԗ9(c;J5\?eSV F=OB)ǹP'R '\FTa\Ecqx\<.qUqU^bt01IaNɆGAi&V_ ZJ-k.$pkqV+ >w ^kq\+-BL~0Tŗ)GB}-i~?KVoBeEB2' E+_~( }v  odg0zSq|٪s-ϔė&TH|5f?~J%kY9&VBng}|d1o(74Yٝп~|7_+$}*ߝ0뿞P_gxkǛ k+ߚ~+ i|)@J1*jD6)$!EFvBI5#""6l&6`%LQc{޹KΜ9{n; b,~~ܠ GqD(Jr>+,QE1 W<ͻXG.+p.lbmd4DMLC= $=RL PtT 7u?-ɔ/]fU GSq 2+6>\Y -i7E}@p ?SPuΥ[ኂׇhC&QRus"l\uD$tݴ0EO!R qU}&ÕW\3䍊cN_;HV tMvza_6\pW\ tWKՅJHZ!5pH[ Mp]W w6"Up7?cpU o/3O:Vu\ؠ."$o ׫pe6R}p]De<gzt'ኁk OpW zI:Ip= {h t_w< ܇޵^k&a[$\RpuXQvKk}\pA5 G_M/ܧ\*yB ? t p?M|Eek\/v 7%DujẎ5L -\Lv7\wU%O }?ndI` ᚪRߛDDW5^ < =5kLiW^}\:.!'΅z*|6\8B_p]#>Qm3v#.b5F uЂ"]Y,?Q&_c֥*coZo7*U0@t3ܭTWJ cz V,y> 8lb_o ?ḽ0_usyΗ#UOΟNq9a9 *8v<T8/p :ƱNY{yl D7?i?oo狗\jɞiR'),K>ly-O]jíg}sڵglO9zqߛXڎCl[^)חmY~ېzf=5ݖ^.̓VZ{݂C~>O߻vcwӖĔb>N$XGwrVa+cYS͆'Ҏu/~p|+oy^7]p7[FյSUlfz)ow7?wʡg-Z;+CV?.e /zqls^n?mXkyueg t닁?7 }ſ}Sľ$d1/3%Y(幭k [WQ[s=V_:~k3q-%Zv;k\Bdoyr}u+׾y[r=߿v꼳*ߢ .9wv#Yu틶I3(,:h ޿izOpxN/xaw;~2; sx]?_;Gn[|7';';X7-}حwso|Η{;݇r|A>[O]>_yǫ}䧷xćG>/gxgG\주|uGʵQ->p?e=}3G{҇,Q |~u~#?81y|+}CFv'ovGq ?}-|G>_}|+L󑟩>M} }}k;CZ6Wo3}X>{Y3?zL1G_w>|k}}>*G~6} e~{F/xއ? 5.~9?_yu/>7un?xG{1}W}`(E>݇}Y ?gu1?{?ח/ܧ >G=~#W|>rؘ?P 9?M%=@y9xxoqƟx:QU:%ڔpYeEW7 1n-淚Dxmޏ g|(Iv8>?DOޣ;úq`3r9#'})G9cٿa#-6.()~L" Wӆ {=5x~IxŊיm Ѓ~d7&kGM~S?Pw/OS;5?C |tSٮU,u';7>糤%j[fo=mqhB4?"F>jv ("p}IJ_Ox#V 30z%=)V/&|Irz+Ӵ1o;W rg]YG卐ʻ얹њ?S yo$-nO0[o6͟ `hTO('_J&iH^5?lR}gCx>(OKvۻO?ʻ"SX(v.,Ԡhgcޯ. z7~jo ]~koq\?P2#63Z ?p^[6oɄ?d@6ݣO7LOChO= =mZL{t\售?!['ק;⏠rWTRag32 DɈK)+sR KsRpwI2 #*,dҋ*̲rlJRNYaF^=#WdXK03rfgs8gVJZ}vimyeY9.yTbBJjʤdPS2S3 %]aA̞UBl9 +p--ʳbR˨e۲rBɬ]{٢8(GS6f-){yA"9HEqljҬr[zBVR&Fb.,5&iP${uFF^Y,f/?T9ArZ\E%Ɩ%n%t {[],l2M laU,$[m9rD_[s mz%eYbr rKx g W[V$UVMvɬb.ʲf !E0Bf(./gfj֒BeMyB,h*E%"oC&cy(GwsW4;EzoSV`ꭜ9ty5FFnVA^P Mj ~*MQV^P҂R!CVONYYq 3D~-'g9\ҡ:NbϐSY +#| \% "9e%EL߫ķ(OˀW|瑖 Vn+@Vq(.ҞSZyLYک(6e[^-(3R-+FnpYV|d);$ dRp2`hqY9 , Hvrhex.:[;+$U]*)_`%ʊs\C(XL))QX TBgc)w906eY);i%%Θ6O>$Uz 2\>)pS4 Z5H 0њԽ L"[E}'^@]{QYIFQ=$&-| e63=R[ @yxWxTũQ›B9 /O!<_¿'J[_)G_'᭄7I?mIx[xOC%~~!~)%2WK`7IpJunK o%~᪄ ܦǟ ` '0 p ϔIWJx GZ /&Q/s?"t_DI—.$/^% _)oN[?$I?#M›7VCJτGHx+~R J8K~$"Jx(᪄iGj(ƒ%<0 OYI"$үo,Jx1n'|~D$| !J—RWNŸ$|o I MwnSOO O/Kp'$ o{%@*W$&Q%|2Aw M^@x$6%|1U~+%1I7owoI~$6SKx'Jx0%<N& !|'Jx&z` Oxߡ$|94 HxC~ G$[ƒ 7I %+SIޏ| ?* ~$<n%I턷Ix-{Hx%ƻ  QM~4 *=x|p~R&I ~p.~۶T B+\psb?솕#+"@!RD+|W X x߸_)\-o_'6$o x+|@!boܰ x_A+ x'A_y؍*A;.B&*醕0A?B_p7 x.NA?S<_RY+ _s_)|/k:F$ .~|v$jo p's.~=XQ1 xg.&A.]Zw Wo>FVO N &_ ^%6+ ~&;LZ?" M _,ApS,K$*Kې񛑿/!%+?F~+?E~0+?W!+?!5+ Vȇ3v䇰3~CY_0V~OG~8+?!?7"?_ȇ3~,ײ3~X?XY ׳3#}ȏcgͬ߆|+?7#?/!?O#oagdz3~ _|"+1V'3v'3~ɬ/C>ӑOeg4'3FXdV~ƏG>cQ+K! +?F>OVg3,V~ i?fgAsX9߇|+? m3~3Y3X4"V~ƯBː/aoc|)+?oG~&+? _2mӐ/ggW3>Y|%+?"?񣐟egcg%_Xm?6YjV~Feg/dg>3~Y y+?7#+?_BO#"_U/eg2doe|+?oG.V~A~+?ːӑ_i_degxW3~,3~X?Y3dgy?wVȯfg?3egQcgaggA`N_xbm; ig d6;su[Y7لUп!om 0;ckv4x" UOpJeD\wPaC1n)_ſ U3;rܤ( s].= 9s͓!d$#*7+fA'S ꧐o3]@0NLqz' =\F 2E7"Lg1ԭV5_yfG\=K;ڕ͎`u~+ degHcˣ: C,2jai8vSCCi#7A 8hs|;2oe.X7a6?تۺc61x[<\fj0$Rb]e r뢌DgafGqh86dsoNh!Z ~\*&EaqRlD#ǙF4%뺘g|h|/fu[:XR?7[l= 5x\h=j1 \goMdGPfYf7F;F;WS :[pcq@w)3S:0ZpcC6Twh  e84AݷqԖ͢xM;d!|X6WVzYCbq.ԕ?bdCm8c=Z ^+բ60׍ jdlK`uAd1կNgkL,~B}vS;`0?t\3[v<%&@&~/ lspsd^nP@nEgEוB>p9?_7PB 5s4}Z#/5jV2pb0),~dN16* wHz3(xku:kh3lyu7 j[e0V2rFT04y!a廉'\BVL؜ N꟝Hs" ˷]}#-Y.?vrbov>JXگ̅y}gWSGQiG^GȡQ)QJPXp|s]~z~r%IV?}Cg j.{/= k uQIggoU-o-N߰bdfqDuۺݷ!\˶*N',^AQ_Vy-?OƀУfàcu]V]W? t^OQ]`ou_kJ|س^~3#N'浭9l|#W{Jg:۷׆4{u?FB{)mbU/K~TWϒjOd/f"wLJ7#{yH'#ñ#>GվM>LrNx HcU+v!MҠEKrh4h~d4?<P{̗o? &|R =pqq}úQ=iXOgߥ/ k^-wol;g شJׂ3\(+)cSI0a˄` _ŷ G ?Xgo:v7=!fbog 'hí-ΚޘhhukVY *8qFyO}s8p G?]-h|}`6lj>hel8XzWyΰ<8xʳcq_!^אɆ߰(A7|k4dQiIHew3B4g-߈>7.s؟&'d#c^mBGi aPf)38r\fX5?Lլn@^+uB,Uw`PL1A` 4y"ט~y@vɑ Mh̤Po\rȳGT`T-e9,+uIcR1A992-rN FZC>O5H;n{[D:>>ܥXaQI] g~j Qyܯ.H IE%#, Q!`* L\¶!E׍n] s:aGC@)d~4N8O:dQNt"P߭c:ǵM!B}4c4nbYu!S P0MEqjHPctۋs찏E8.AXlWc̎lj!0=y["nJ0gh`: *;#FyKd"@rFnCmy.m`v!h%$ sP av쌮Cdf0[[ Q7atlky M/-߅o~z].2iVAy=.L&w\ʄ7NJz3 wXf9ZB ұLŌNzK}Lht$G>ςڈ~\âhqSԤ9[W\ytc؞9wf͹c6Tx|}aVU(ˠܹ`(1ďiMsi}oԍNn7j T}a)Gbƻ\)68l5?(n-jZY_Դo!|}8PAyrCB GD; L 4 }5pVrqph#5!`̉G4}߃R-0.^=D^&t0vق~4D9qs\o䠈;աMvxccKܢs\fT;ep˂]$ 2[61C9Zv6n}$~?+QxǷr|V. U2څ݂\N6]s2z ur/|Z5iʪM|Iuk_/S56[ _ǻn]Q;-XN{pPx '|#=;UR] :/]?~Z1D?\q#; ]=Fv5p=3Z&ᅲ7{~ctst36]؃h`>~N/^+ectQrwsP|@npc4f\1u!o5u'|<_"- )ca>9},{gpy {'|Lyox>c6xޕ?x~>93xݟۦx\#ۛ+Ͻޞw*Mj^2?4l?٨v;|d>УlԞu=M(>ו^3W.iHzϵ ~C lYϞݹZQbnyLl^~Q>2@zej><טI-uyzG'#yhChx:RWaGBqx '~d|M T\J.-+B-~|;\ 6,%7hq|yʣ:Өep* kohKp<! o>䏛я`xp0K;qeg<7=^ k*mZVDC fUmXCժVӢFvGuG]6om |;(\ Ґ}'柋Q4Mb3 ՃfމUbuΰ1C {`XX=bX>Xkj` ;{C;h#?0ǹv2VC;Z E\rHE)\9]bmG ﺲ=}nMt LP?~L$O~Ofx?p?A|ޠ9gTCpE穎7(K*WUsYI7mqzP(!]?F ̦ye{Xm(ByUb[vIJg{blJ7_Ty]W=Txoc=loԵW)-їIu{gcy^ᚿjqGmwp}=fU{}{;g h={1ٜm>.m>S{>r)>x۷ŗ}7K>Ne<)-{vX0x46-ouU:|۞C=\wG554j'?N|^g뿭~~fuI}ˣ~:gQg8IoyO~>}}W|4~G[ Ƌ_}<Nj{zbyF2wG%m?gn1w0./r7M:Sv/d+Klfn/cv O;P^]^=E2a!nhpz+?``P')0c\!ջMݽƳI%+jYN~݇h`i܈OHl~?t{:*൯ ^K]hmvv_hps6aO,~.;XCNKtt՝ohlm?d[WgkB6=s~P[1nwGhsaxsVe;O:ދMUxXFoUlb4D6׏7*oÛ՟X.?;ǎlag@ ųU[-I=Zz1W iOJ\@Vq+m,^{+Jc+l| aj%Pit|Q-.ut⠎=<8OhmѺ9[zuzWnk?`KI=coջIftfTg3FjFotQv~۴!6QD͢AK/',abs 3jSMԷ\mj|  ~W?ُ|Wp8 w߈ gy'^CY} l>#P0uDV<+a!Mm;pgqTbz8T@'xƝ =v̐W2Cjuwuv="co߹zdb/-jW,lUl~OAn6z·;|!v0 -f+;%h1'6Sy栗@?}eF75jE z{'e1wp FadD9O03ٷfos]t`}?aS̾?i}e-FkF˳| $c.{þ=q>أ} };yĒB;PY70;}daxɎ7Ϝ޾Q9ٷ/#}gf1hf?`mo/߇S~M \=E cϔ8aY*xs:Tf\ G{]MtUJ3U7QEj63#}^^G#x=UutXG'6Q/%lkؘzNǴNɦk9[ckԑfَ>K-[n.\>Mf76WGXugvq}?Vyy)_ݡtV@~'R__7(~.G11Cź}j"^H]l~۝IP5lDC5@3.jsUٱOn.Vnp9=U No~>!gC~:z!x<4K\cߛA`~&~>}Gt7LOxK>WFnƒ>M'!kcs;-%Ngt^1O]U[L .aulXM~֤ 5xμeޟEnrEW-z_L'tkNbcE1pGQz-ǯ2g~gZ ߝ rwrP'KA$NhBsY߈R?"ּƵn}97K1Zp4c S}Ki|௮J {?éiu(܅il'L,YadSMj6]%),VΞjWyv9UA5cb6j^u\.cw|Z֋-֭MacTV>XMݑԤzVScZ"7ܨ!7?5TM&6wk }pV`j 'CG霃`$:<=&,ǡ=>]rHi8=ZpcZ{_i;c{Dy{|pc[v9Nr*2g"~Wo[:9:e.Z⩢f]蜳t륐㖇 IxiߪE٥FVק4o>&"g[wp)3.Co\U{Kbm6d Y}}/ԼХ^J͇a:\aA)7A]R63b%xvO{\6_G3݋Ncqv;ncBO{sdglꅧ7bn2ϓ|=_%8/cnySu럚ӭ\J/qhYpӭn?6p={a8S>-kGĝLS8 W8堽CZ?'_ jjV1qhe ė,zjg-?>uS=15V=OA\5/Ġ[tt+*x[-_=g^[?!|-OjwrGQ6ꃐ||`Vm9x52%[ȫ6>;>Nr@ɾqw|' l .g eώN_/+ sӽH߃C/yǣ s(|9[uُGN\mTMr`[6Z>4`[FE-+خ܀,! Sg[y~ׁn,wwv$cY~e-{3Էg!tfϡN(oF:Vmi^u FR$jzZjZu4cRyYIH ɍMLiHye<Lٍ3i򤈪S Wc;p+;yxW.ʂ!x ۹"|_Ub ??f2@/O#yv-9K =𽼄oK1k' 381%ݙ&iӮ!&F/q-#gZ~[; =]9q4> q Ư Kk*=/HVb+3Ƕm:|&[ w‡󭼸m}*փps35?\A:Dž\V\rc11=C|Tܟv8wVlזzm)UI,]Eہco1mBsM \?NĎNi:p} {3')w63OmkS3+pkuN)|7 l$[io5gPS*K7;׎_)wf|܋=15y؋1{{s;=,nπrٞs=ASg}?m&/=Sл=_R/{[e2{,>S{nOk{ƍ¿=ߛپ={i=+:S{^7ݻ={a?tҌ=o-mߞ]}so=o.0vg$jϐ;h%^[oOC;r46ba8wf;r0yiéc`yܞS?*j?ϰ"|LsBw{^Z?=Y_؞~xͩz173O|my];:~I\yޏyby{>HߍW*Y|g |3޷o}b~i~FY '*OMϰtsJkqv8եz&CVߥ?ḼO.HWrߐW?1CCZStץߝ?שN-}R^Mڣ&FdҪ}M ?3=Wa_U_vQצ`gg!Bϕ*~5Uk%~Y]5UWex(Nw7y+{.7HePN忒i־ӱɼ_FF^pj4  }?ܡm4,e7aj$Оhh?|z|D=D= ~?_{ UǬYZ{e)cwUNwCI?IߓwQHWu}O g?7y;Y)S=t0СSI&pO0态gň5<ߑ1 3< mڟn柛ϕ)]~$Ygν˪zə >_M:瓤3YLՏcJwʙyRDOgdb;QW?c.#}dhı`~v<=_bx&>p[;θ'ꇳ-- ݓcdΏث3Y>뮂FIK#_$!$^]n=|>:d~+H=}-8=Jduۇ':ҝhw_n77'3+ g߯1xP)L3kr E 8TyNߟ ,/4㏑X`@b ~$>~ `kSrqueoǠ×{}wf/iGI1o=anb`uDOa; f zĎs kpC' .F\Ƅ+0̅ <ڹ\R5rl.)p9Fr$JS.\΄!\} 4pa%EYsq5 pa(/{\FEƅ/1:.J.|n.P.|$΅_r./龉<)M~ȅӹ".\HѮxQOн\hem$Å7qn.Ni̅>Å-}0 ɄKQ^ʅ}fra ;s\ʅ (f]Ņpa]&Åqa2ge,ɰe=åW Uؑ\&2PTa\*p~ v ɥR,RZR75yZ ZY!\clA.Ip> 7ps{\4 q0:.|1\8 0 *υU$΅\8 HS<5 I!^C^ąi$\υ_s80~5<\87sbFp\ $ Cxngr.ʅ?wsxk+˅Cr.\Ot.ʅkq¹$ 1a!N'&r~; sp(#..<-ԗ = gxȶ>gqa=r\xR.tp\ȅ)\>…Pȑ\x5p˅ݸp Ogž$…4pP¯f04.H?☰[( #\x>ʅH:4s1HVsaW۟fVs< r I8 g𐋹z^yQfp`*\x.&p$w 'p.4p'Å}ЏOqA?z1!A %a vJa]a$G|BfuUq,5?6&e(oU`6:ӤhBRqB2) Zzc|3ޕ,Mo 1dC)_wF: O+gk@(us[D ~y"ǺjO0.ލͨ'at &p\W9_TPS3~iAy3cnQy0iZWCU-ֈ@s9(ְѢtSؑ]!lbTgD;w'TF{@V/4%l"?PrTjaظ]Oԥ˿]^HP!oc9cWcwb֒FDEn ױNvď!kɞo~c2 T{^X4?ל6i噻J4f85מzi~I44zh57fKqvwk%͕5y4+H3k1z94SIs4dTm=nf<E4WrͽbqGڮG;? ۽w'ݥ+۱怨`ʫ'dtIFw͵':wG #Rc iTƸS: 54mAova}6jTTI͞Ul5*rvJ4 luL)qSdt@5jYtLl$KčKHLsSTjT"X9y%e0X y8ţwRRZb{,6hZI?[aα6Ceg۠(eH^YIy)VKD)asXnY5# nSJ3ҲkNvrY4H4 2\녥,BȑE{~GŒ*N~qx 3 Ėe8-

G,5fs'](V\Bq'_9HR*7&gy,nf .*}NJΈLW7ʈ0(}J%5#9qRBtb4.&#-0 41K"׋Kpɩ!26L;d74 6wጿ0_8tP{$\3B{-K=J929cl\eI "D%DF+Q)# 5pwc ]X%fXc"bRDG'%LJ iqbS&%%%&3.i(1c#cI)peD#IdŰ' "B,1ќI\LJ  Z& 3xoDP&H,˺91%5:qrDFqc ާ&X1qLitH,IJL|loKS1;$DǤ&&B]Cb 1PnΕh"!itLTFҡRZ& GFJSHB0T[a:ݥ$RKLBjKO4KK,DE)(JL$&A *ɉX$2*DcNIFK@Dj\<$B#@}C$c[꓁8=J&C3yk2OJ(qQ ⢒bScpIT2 $LBh;o㒔X?ADeDZ,H-H(12KM&Bt\2'%p&eЦ'A=re+ dP+huZ9/ڛ we3]n`| V GuW4|f 2C2bғ\ڴ(VOKWp,bWĹunG&%e}1؃s&:&6&o1cg&D kp:De 8\01@ew J9ro t& q: L| g%&8n4F5p{6@Qzӹӯt: t9Ng:MW9U@+v:ۧ^C6ÜNS'Ett]<\ t5Ng#РkN~Ίv4h4 h@ӯtFB@+y]  -@͐ā: H? }I>>ݟ wxS>Z>`_A7:v ~ ж ,s5Puhl u@H~@ @CCm^!~%oK!@τ| A{\v h% ,?J3٠4x.vVsp@VAy 57) ?@+B!_@: _@W@b;@Օ?ж ~AC@w : T\ @>@7= 9=q+(/ж5`O== !0@ʗ.7 '}<@*/ { h~?(MoB} |mڷxdrG~'!{](?@w!}ۇZߜdůw~.A}q 0/xƑ } 7A}ҭ`[z g&JAo^(EQo4C>OӒn`}d z[T/nVX-ŷ0[Pk#Ň%cE L kG1Jx^K2S$dsd.z x߯[p"{BX|'ƞ}|1^n/>VYق="_=mΞ~<%DBA#[/S$k{c5pQcsKT\aEDxT~SAoR{c]ڢv3ŴcsqdOIIЋaPEЛze^c결MtL`^fA?l B`{+^p4y];웿#0g)aD=MdcrΝS#2aNEj7' {3Fھ޻8Ծowf/K~b z4@t/#loχ=׊sBo9Nj 'A抭=%@h+՝j X 5Rfn>a0LnO^5q٢eW\#j?}`MXZyz=Gk =Ocu 8\.l?1AkA/}qzp^?t[D:zZӯuNgC\LY۽kK\ ͗^t>)a)iFoZ~>;Ku w8U-k_]˿z ;)؞R=ac+O@7|"*׻ONyb?g^t_|H&FzAwg|op||<0]~{Lu %c]|_b|{/F^u>_yߚ=?u:A|Q=t* \`~_/{?Q?Ћx}/q93c~#ϟ^%ԿD\,;^t:~g]"VѴw:2_B[ rz=􃐾0tFv"͋#ĹI߫Nٽ|;U4}???Ti=?ΏQI  Dx'^hkHh/ַޙ^DOJhrxhx~=7#Ӄyk#zK%}ͮI$:Xʏ?\'Q[תV )r0pcn_E4S*-FNR %)*Ѯ~F ϢϏ6]dsPI_;7f2x҉FIcx\OFI}{ z6nfYIX7f5R7S*%DWHvK!>>)BIv.$[s5~,ۉ~![L;ɞEDJ=1)Dў|Mw>]m1mopev:T'  -V7Eҏ :E]NlT.#%ܕQOpnJv:"AO! z":GV3hE46AWZ󉒾&Hp-_7T$0r<;ïX{,ʫ2ɞںiko)B)]-RjWµycp~=7JV/Kf;R=>p߿pk"W D=͇K6-Z;>_µD?hE۵d~/&Qo-}m*e6JZ{!k2apm>$QjY(II_ۆDv )~-ݯx4)] G~ݴ.IzQSC~_| єn%I nä“)]1f Ӊɒݴt3ۿ@ʿKpʱ8ɻ?ߓݟp-x4;!Zޑp-%\whC'h&\믵|JV#+y>?Z3 Q%|)ZzDzmD}q' ᭄7J)ߑFIR<'$\߮_]h'Ǯ X׸px$DUG}R?ꁳꑟ*"O}#wkȈTv<>ROrڿA`j*7Hi:Z?&Ɖ*VI9$~g}4 ^ 6&5?>kj{м%Z:H\#隆:2jJʟfOڳNzEa д]6>urNz҃q?k!T8$>J3?_;a.R?ݹ~DI4h\D]At эDwD[v$:h,4D+.$$)<':HDӈ kn$D'Js%Ot ёDc%ZAt!DHt'O~Ohٔ>сDG%F4hхDW]Ct#ѝD?%=VF?$K4h. F;~J{D;ϥ$:h,4D+.$$)<':HDӈ kn$D'J>сDG%F4hхDW]Ct#ѝD?%=VSDI4h\D]At эDwD[vv?$K4 ޏ:X+W\eogMS*.\W\~մ /\=6S{T>D&de9YHwv媂ߞS ,{rUN>8FQNF~v!2ʲft+aPbay**B>J?$~23[Δ6 I$,H,[1A\!B6dJDH8@Oid1,qB>WC ӡEfH'3d@{Fm+ۤnSf~M_ +=,T]ܕ34!0F0o=_6Q%mT]ԇZޔ7&1(e..?^VD?_jD|]=.$x4{xPKhCqq Klib/auto/POSIX/load_imports.alYF9WLٗ**ǺrHa@bEq{Oc=<+RFSq\ܥ"/Vi!USY+FG0vqVLS᫤lx 9ijx12]hyz/]5;1抯Wߚk(fR"^\] 7MZ^oBcp)}ҳPyq<js&"W|5US:cU5RmKVaN~=3<|;ftݔ-'"Rl+C#3f9>n9ь)Pm\&7 ҠoNa i}C(r雿.\[S- xsWršυi9`Z>f`аv]Oec rnHk!g-umׁCsLj2㸓p* sI`: m`a.Xxc鱈e`bh VJ[IW YYLx0P8mkD?S?LR5ga\)!v|&)a*4HF/Т 6>М[ Dޒ mcbִ|hsGxjDx7533VFi$; INq"thW*n[ Pg: k8N;A`=p::p"I-PM`<0!g'`Jquv* IP$|©5eQ9 Fd2 ꜭ:g+8;"(b"K469뎽޼ƢyCt/dus!lSΈ9SuݳrЅ3_3,ewCǠb3S'm?}9mdhIPϳC6?c\(b+ĂDJH@,TFD5o D$MḚZdW(yZ0gRaprjHȝڂ0݄SQH]w kX?L~8 eX8â~m0h :y)I[4ݵm 1HD,pj37)+D;-H mTnxMڪ0C#339NTį Y.ڋm|P|)k=Jnݛʓ^>yrC00؁af7pb)у#5!}gq0O'Nt; RZ3ˡPlʹ 6ڠ9R)B/S`zvۍ_oA(s~ ;/Ҝ-1 a N vJ5ܐO"|j0lI  2=6OB|)ۊLgf<zT2q֤IqfemA1Y!ny{ }9on6tEl۱j6ʦ)>! JP`GIևlCBFڎCUć(-C@_R"h*:pN9 FXt]}O ז˶>DM%=TBw 0;|8omy16;M7 co?R)F Ӌ%XYS@R4qĊX+ L(54gKL^ɛ7Լ}Mh>fj޿~ wy{,E?1)2TrFV4i䖫wc <(,YeOOu<<@-xky[] ŷ_Wq~L1Gel oؓ8e^xd~a śhwvXrD"2r"b#r%)}>rn}̌Myħ_\Eᬳi6qu}+@DDSJ%[ MV35ٗr=v"t9e3F?l"-J"^DVIqxEGUdu$Qq]dU=#γ\s- ý%슁k-WYE||sy9=(:4ylX 3Jc#D('\TP%B7c'@Sj^KRTUx ՟k4.6bt?PK㙊Bs2lib/auto/Socket/Socket.so}{|SUI[Jx5Q ZkA`*M{R6)ChSZ)mmZ(Rxs :sqf)f{QPP J~kvritk#r8`Pēܣ e崍 dz )װCϲEɡXؿX.K8z%)xriTQv=jI i("4R zw.V%9̠}$XwrZ$l(g%/+IAV[R^>hRwun|[Fenw*ŧ{ofx ]KP^߇Ax97;;ޑ:ܤpg;; /Fx2WS{uo(mta=SICJpxo$x;^s:YR o`WRxR]&f>1 %V`T@WBxMԝO=}ϟe=Ƨ7GNgXu_>m|:B {g,J1)?EHQohoM1^ ]b\G?68>>=E_)=SVi~槨?6fN;RߕBgoNQ]28W(?EkSRͣOџRsn z>E?MJ2x@.?R-q|9=66]z^8}YKVE-&ӱ+,IAȟI9ei<pMg4'ㅄgKx)y>pU%|F{%<@z > {%YOIO 7$Hϗ݄%=$|?]~%$\$|$$*$| n$㝄Hx76 _Cx?Cxu;7Iv%τk~p%&<['#*ل/wJx.Oz w' + ?%ፄۓ _Nx wKZ$R. VMlKw~@%|@nH5s$ 6  agZ­ $w/.5 Op2^Oxϓ W%. GZ @ >^_Y 7Kx) "K7Ƣ߃Cux7|>\t)ȭY:|7~oC;u:Kuޫ:JNg:*A_7q:O_wtx^~@N}JߨtU++l7pYgnuxD'|~\p: l>li+?Fz? }?@f6~Ft?_Fz"?_B6~Fl~Il~ H3qog<6~F!="= hgjxE لB52s5tDz8mV(|~G?\@zCr_ Pߺʏ` aoU0oVgБH5| %F;c(i`f>~ QjȄSjȇr6RsNǼ3AY<Բû b`l7b6 |K>E*By=##tm+: Ű() %uJ]qW5n9 gS'n';_f=6V 2Vn2`EVt8ô8Ê+`vAv3퍯b1(Fټj&l"ETrPOj$TpENaܠjejw"; (ԉin7huELoQQPRP(mFQ|T BǺ>%A֮|}^k'.5P\ٌ I'WFSϿ1ao>m &W%Y٠w``hB@@E0_>C1 Нfȶp =[ =i?F=н~L8B8i%ZH^mTW pf0E^rX^V{4<`idrʯ p i'$C,ԡ-Z!͹O46 Ǐ+g8w 8 '&{gFdEŋkBWuN7' (Gg߹q?}ߩ [٬حvvO.9e&Vm̪Xp"}lyʂ4ۈl+z& jt}˛PTvִ|:>3)9v3HނCGF$j 9`EnF$ɤd2ƴmFwpzp0ӮO{ 6O `RzaH-9ZD0bH>FmqCDH DY)p/HkA[S=(2+BԳ2-f0gc>C&e{xÀZ+ ִ{G{ivNT683] ˚e+´;}, ;MPj/^ˤ[8H^gL\_d}~,1h-YI6Ǹ *`y\J:C\+yI-,l of IC_L,c=zub.l?Eyb|Mno|ß%F>ST=lF'pg_hUgMOl&{3v XwkFКtU3e3nk`)aޑ6ꇴnz-lƅ씅 V gn؂ c tv }6~ڻ 'GIP!̚8?̎s ۰׺GlVcqe?-q&6wM_L6Ea(V ;A' NWΒ | f&LoL?xϯeִMSǴ7ӪQ A4R Ŏϐ3liz>C)ҺVu ?Wt(vOc1>藫9F%M v)@R@Rf@R v)aJ]ʽaa!v)mX1fGq{E WnUcS<(_p}N⌴jEܵ.- \ֻPT\h'gdM-Չ+ m7=1P 4Ǵr7< %<>14FPt_:bgpL>MgΰC) bsdI2S\M4jMWIih)Ce"MYtY{eּ}e=gAM+1BP<_iՀѴr4t ȑ#+"c$ߛZp azs+acgYnj Ud&J}b`UUs*jO*U_0U }6U{h:,CMO&zq:S4uVi쳰FЫ3 BA{6XQ%24⬊ 5ޯBםAknPC۵ZJdԇO~۾)3^=;@nh/^zo/#y(+myYJYz:ÖgayPxMbGz ѫiE,>*%b߄Q]KG݀LewOփibg l+cgtNf!_YUcYY]Y=У~5{5ؽ[J#Gm0ApnvA:|j .}s4^(HV7;[zdA}_K~NX[ttAḴ'ܗۢKQt!dvk>`,:%V_%_gXt&;ef[c&P?<>`2F|@YI'9ukF5=[Kܑ&W+JG1i 3\< dJ_A-yJl~,ps[ K2566؈,<+{W|:vY][(L? a$t b|Ud yڴ~n#}؜2.WlFȫxv*0[boboY "7?.B1muL|]8;Fm~ZFU6F//g|l?[zVU/:$}Ҡ'/3]O!#9LOt?όHܟ= } 3 GP-zf$5@ o/QڜVZv6Pיqum =SP+ f8阚ec잉>1rNG1mT ll9hu5 u}(oe˷4װ=LL{@FmɊXp_GĹ|;.AOcc {\Ri.yB>\z=[FWc9 fclc)Z1ur8P~|6 Rk;|i鰇4c+Ogq/U>x`Y؇"KŏkFv}l!_H3>y]V3WO7rl`z}[shdgγ߿ͅa͆jfIgCIpyQ+ N@oʘܮhà/02b[{j䶞k-pJ%=&r;БQ䦍D3O<7%ħx5<'\{%įrY:}O'>yb'>y*iD'O|g(O[թQEimo(ȯ[^M1wɜFW٬}Xap\;J[qilID-qp3 p>fy;4Vc^x̼ w-JAov2Ԉj,6mt) ]p?n2d)`eVty6V8Zp5m>M#^=C ݘXA9T taCXj/m3Š4fT.`7?7^b>{I ٔ"e >må55H0khg3i]!tk- e uԛ)uJwY/pԹ,{6$(LL>ξ#ƍQ٭ô!o B/7 ӽ,Dk[Zƺy,M-yr;9y-mst4C: ge [$K{`ۄ @o" [>KQ*.J)%\VtUQX]: +=Ίr/nnE嬔J{yCSisPB*@ UW?ɂo U%C`v](r 2]J܄Adce *+=T1.w(X͔i-@e$ʫBF st۫s8b{5%vg9؋]*F۝.ijW=v1m8 )^Q83 ܭt{+؜¨ZT,/taSQ9J+ɣeU%ޢr\GE%++gW;(`X^Q,)QYKT㉞B.RT0t.bqW˓us|Bn._7˷[X(r{vW=2G^VcϥH!UnP\ '=d`O!(a{aSP^ qYr$rW*,8hrLa"Gπ򢊹B gyq̮vBKě:pX'+ /L=7s^[3=N xMRpnWI #e!rTVcJ\,Qa:y Aaaj` bf1r"Ga3%0Q;yuѪ \,6y匀( fՃ:Ub8 G,汗 \hVA"/++WV]:+aq 9 9;w?n7&9ܜ?n7;7珛a 7^Uxֺ*ŀ9\> B3:/G<вCY̖aqzX+5nkfr|brD3&%a&u {qb lz3; ?b '~[Qބ0/ߊ~c7' DU!ǖAx7!4O@!PP'b |-x,6ۯp7G*Cpȡ^Uxfg,ƿ22geFn8 c>K3W gZ>4}20~$,K$ +g{VުL{V~R }K|@@ȍ+_cݡ2A?Fs>x ߑXlj=Y~&!8瞆]btzn[ý#~ X$>>g||z6dȿߟ?>vn2.k _6ǎ-|'t_[}m[G GuS*l3JmR="b\¿#|=+"A ?~~Cn?ޓ5v~L/_$\{…mџ㾖¿d8_[-"v 8~t_[YkԮKQ)KR~T(":xAoK))k =f{>b-ϣ"}7.A¿l7mnڲeq 1YL )v?bN⩒¿-| V¿p)1/HG¿-?R4. Km3—--tZhT'kz%k|/-Ƒ/DfK6_…/FݸP)\ŽMX_[]-$| _KRO.| ڢ[_[sMGIo$> Bq=&/PזR~Ѿm&Z%>_;OB_[_¿bK X+(+|m5)|WżJ_/Ҹ_m/¿\-ʋmѮB_[w[E-/*)-K-ŸlQ-~E}?KW$Zq.[+ ֢R_- b_cZO-~E[h@*_*hAHi!)}ԟs6KmwIR-< }8,Ԟ,҅fafQ,+3 ~Mc+[I,WvRK~%?ɏ_}_))|2?5NJ5X B2ǑA\~F 4;,*/OB_~g`B2.6`|тRWD\xȟdsDt )Ca=Y FF wPG)H֦~5d.ܶCo}oPזx ͷk!ڡ'ߒZGKÛ/ Xu틚+Wz ɡUʟ!]yaGE%.΂ /z_経0 (/em(/]ƿ/&")K>/O:!OXwD() F R%ENPC^JOݒӓ󛥰Y*oMꝓ+%_jrWV_Wz,LJ;k ?(#fZd2nMb7/ʯkHﱮL-Rm (/]r/L៤~s7EET^5*I28rb}\"9\^< ︯OQ^ֿwYMT(PK㙊B^HKlib/auto/Storable/Storable.so |S'BT5hQE44H HU.Rڦ,ZL;.Oq{DAl-"nnxCAPsfs}~tΝ̙3gΜ93s_sh4(b 0,39<4d:{zR8CEF]h0X_`O|.ցgꇲ|C/ԅx5Js}\E Yɠ |7@vԈOF^_T P*F c&KO~I <0]f}+1/{/ gXW~7*,&n_6ïo_OC ~s ?o0nʽ~)6~/~yK_g:wnZ~=WB⡝yX ~ņQ]4^N_s~="I>W/~ l4!ݕ/`p pdwMaxN_?K7qr;nEs{;p*3 ocx> A;%w|pLVe`c杷U-ókyjE3GɯkxOOmĎ;z3iϗz9_>'"ޭL{'{c"'"RoNc3 e%<ϋs" <1JOFߢ9Cd("ë(hZWe 5J{C͍/ G)(JӢG- }nBQ_-'a!2(t>F)yRgQD(R(nQkxF<WG^|.Ro(G(Q)E(آԛ( ϧQARzD(BQQuor.RNB|RωUQA1JSn G(|XQyCvBH'f+c2#Eɷ<]$ .ԕ,VsVOb7R$ӓoks<}c1,Fisvw1nf. nx)NȯqT ee.C~ |e59Y o* 7tY555ӱiųˋ+x減?o)@y P e^Y*(%v+t@@$~Tlyȯ(*.Q*..VOK j)s!"xKLWwZyb+* +ճ\j*efAu&? T_X:R8Wպ89`f5`;eO/ͫ(()]S]\P^^YQpJee9oA>`4$\BjʂEްU֔V*-)#˟^*,XPV U,Z]9SkN L{kzN/&d&? :Ҟ=ncoL׏t#B)A\9#ߖS[UT$.vԺ*jDҗ|][00@Z?U#lmꂢb] B5VSU K+AJv`be!ϘY\0MQL/Z#H z /Q\^9HԚ>CJT8RӹKuDǦv 5*':֝"V,PP% ~ U EB q"Qe)6DFuxF&*KR@TAUהT K |t M9+kqMqUP*9P^6Mek 0B XSjj `N׀ gdeO?z_JX+9nee]r &rnLWnU: 3i>9 {a:n :Yay0[p~x],grp|c0'x= W糰! >.n '7o [Y#<=7 LJ0x7,l Xc,L's99>)amyya|3aaZ8>sX{ d?O= o-cYXN^ά޺pzrppyx ߆m W D!Q6|o+|·Cm8 ·C(|;42=S-QQiQQQRxnx^(((YQuQ[J|0⾞W*U\ܗ%u% pdP/R>M/|o pqOq |"+6.3!Q ;% pQJ߆E~ O Y R.\T ,. pq6__#|) A|N% |o?~& &w \Y V- 5 G d. .i pO9K$D>_ z~_*o$\& <_7|/C ]\tJv@pɽ7AlJh0~! 7΄0NepWq#ƷQ:lj|aU2_qTqTu?f0*Op2MGU'Kc *N0aU``U蠅?cU`2qTmo84m~oY~~~n~?~?sR) SQ)~{P)^~߁^~O~߂ 㽩'1> j?ŇcBj?ůE~~_q+a=0~ gcRj?;aO1~bjj?ş@j?ş5~?k~ߏA~߅`j?j?ŧ`|(`zj?o0jqgR)>6j?ůpj?`~o ~~q~~? ~?y~ߏ P)^[㓨ۨS!1BmpBhbWIL `ԷU&[fnڅқ[c$iaqkh_1Ϙnֳ@^*>ߠoD?U?ȒK5-緡[:B6Wo@nGmCYm'B>$.Wn@+pH!W0Weo|mQ,sGS,-+@3(v:GDf7;@ߦ58GY:mpva/'K-oٻȀ&+}7Z^suj c  j2b;@~NNL)ԩle]HI_n8ET'Doc#fۿ̄g d36M̰`,b`0˘pl %abƦ0Jn_H}IoCmOyT♕"v+YV`@NY~Qb+5$G!/HT*u?|N/ҷ#hbtuϴ  U&MؽSb]=$8 4io1qOs Q}|&j1T*f/'zm} (JnGߔӣCf<._u5{)-ߑ'}Xh-7wd7шv&w52u}4QGp˒0])Ǻ̸t-i*=|;^Vdd,{#=avTaE'voF/fLq{jwkﵨʷ K 7v͝N`Zґidr֢ZmlM%)>v^J |-i%qNE)5 (|N-!#_tfHMYX`^l gZ)y&&Po %%L'L _> H5D^C]fa.=Aܮ'oMH-~(3Lu`BU1O F4=ic-*: 6)zRKK_8jJP*" L߈׵MQTJPl0 4osa^0b#üe$ma,b,g#bj/\nuLM#߈XmN;IE0Bp1Ӯr|N#ZiUYW6ߧ0Nq&әf8s09jV_0QJ4Q:9^xgd.\M#ga]@oʄ½LL` ^ Ǿ 1,^ႢyAXLVD`,,;7G/ љ R̈u%_X':f)0Mch?8{2VnM5? =xpi ;aX[$x%Ӽf45}DXU]EؐT!g+ \( 3ڔD)8x421 8W`[ ;V.1߿+՗vcXw TۤAg#BLk4D;]kG"6ƀs=lswvaYr [_2n|nb/#DGeH>*ӿo Bֽ5wn4BoNd,ؿd)ѵkk,q?(FFTZ?  c#v:}5)_?_=ݐNAxx% .YڨDp'͝Կ7c^ j mPo_'r E}?SHhe^~rYG xw 8pXkf +4ꋈ|eeS"V~/|)@AiV렬8 Z՚:5Ckiwiח92B}འLd*P);陌{ƚ~q[ɻASkW|ۗ\9CC $6vm)j.}o(18+eNp'3/|TBC'?Ll?Dr۶Nruf&|g&bJr7JfI*K'#H*uYg] ;4Ѡ|KXۂZ%{_"JvkNż_໌Ӛ01{'uFȪ:.\Љ@{a 7 T$8샇>POסW69pr¢R>;%oa9V[% I1{ d34%ۻYx yXb'Rح椅=:a;?DdOiwْk ` Ss=gKLpA^rg|ÁFw` &1( = c[X_`(#vPDͯ5BH/.k(2EH(HYy9 ˑFxkĬaW )^煐_' 3?)vc@u6>9m>[flWso1+C z2~O1[(,+ڎAA}(?'5s@2jcra~ IP~𵓢]Iy r}Imfϋ8ϣ{b;;)PѦZ^ܨ"S7-oCpQeGuڕɼH6ޭ'M41fIQ({_B%':wnߴno5]d26ĸlpN<$TywyflZBUWԕ45a95llnd+} l_^:)#F#ګOSM՟4/'[pu)ae!E7tO?7x(G0~xLAORˆ ۋcӎs/aPᅴKi'NDs'>K_'LOZMԓzR_qbgס֔ד8+r8O7|mK(/O(?E,^iөX&sD=1G&Țz"ؘW+3)?gp&Zٽ9|Byt[7jJ6͸.+hWPZٸ-^S$@+)Rrϴ#Sf7@eM>JPZBpx ]Y~okpt 2@g ^a߰fb64]șߨʙ2':;k2Iy|،:?O'd.ƫCv9"J p4v׏E wgP*?:,$Xɇ)ߖ,56/˵t\Uc@GSFoCmZ$yNH~_{"l@?roHD?dۋ|ؗY;)?{Kw$:|_lm͸{ Bc\hۣP.aI D9ѕڜ<6OKA} 񆄡?^3̈́o# VM@lJzc?`U홁:BkPס!Y{'GrTsn¥ŸMJFR0,v3c.# ai~WI_9AlPRfbG?$S3Mőt/{A`-v fꨊƆ^J 9h#ўyJ|r;{#?n8|M6්~DUW"!hQ};I?Ix 'L1dC;ӧS`Or=EUYu٭u 0ؕF%x"е}X  /bXQ}ǪJxUǃYz+OzEnoC!$Qݿ0g#usl2=qleNLJe>nMaww ?؎ TڈAOx=WkuuǨvίh:5vO8%8 mh(^Ck> }v[j^-ō3Hߩ1zлxC8.qNi$<1AgۤE[1]jcY~vJ?wqS}~woŸټ &Wg_Ceӻ ;]kJpI*( ׷f}U إZ=V܌r;s7@ Ưks4f4͞c@Z/s7SM$Gc>JYNbq~(O)bz4^ormo;?r^ OZ5i\\;\v?a p8v$¯*rAqi)sHK1]%LW\\-p~o^,wcɤ ^*gϊqەeQѲh=n,\ajl-tETe"sԣ۪Qv~p{r J4JOK? w[VtƠ teęDxNX:JGгTs B.x&IEIRpBKNF8_/giMxk)!4g$[l=5륙;B,e>ӵѵH׽-j@JE/k:;!_z+ii "c8x@鬿K}7ۆ=ntK*֙b* n\mӭ[E^ d:%_^?yόyw+"' @SC1c5Mu݄K@@ˢ59$rԛ$? OàMwv`@ռ;S׷k}L=~/:6* foQ;e_ *v dD]I6_vjoC*B41ԂTK~.uA7yWK?;y'!g@h:U,~}"﫭A_ѯV=N>эɜ~'UI{S_;/gWy~5{蠁? WcAr3۷rjjrO<#9o D!@Sv)/?5m5G5z$Fu /&Z| tv}Y!}͞r;Hc:_ V _"}Oju}[C}_Wm!rIwH P%#0܈ \WNg"}ۄt[`UȻU oF[ڑwFkpOvZgкFlEzy7Fh}.?}4Q^e|_;|äIHP6%` :+p,} ؋+@|%߿FɟJbtel 7xVSwpzY7o= #hC-fjsu/o30+=71f%vtU9XqdÛYo=4p@R.-ZfPo% ;оHdyy olmm7&@Op6+.DNrJ^u|kt/r*9>,KNA̹GC(?'P oڢ:% sF")jc6ɴm@c52{j &ν}Fg>by ڄyEZj`7 p$3hK.G;q1?g#;MoqG t75BO!+1$@\#O|]%old;god.&OSa 7 5 >gbG+ iospOGǬ6^0yJr ?#rd"c`&D=7+Vf L[a  \ofr 8PI~s[_=G69L7xpo%lt/6ŚIdo$(G@a$d $S=.!~ *37@N?6@f"F&`P_ dҒm,/Z% Zg~Β0Rg v։jgmuKJ^߮JΚrX OYA#Mt@8^=?_'A<׏@yb׳ʎ_b.;QQ."uד bwZvv]w뮂uW]]?/?w%r>Y|^=j]/Zq>AEg&]/^er7a??XiJ4wS$年th^ziuR]7]7ݢuSiꡒQԼv UZ~Yrp/YX~zSoi7U94d\A#Lfuc1$T5_P,G-ŵL܇Pɬڵ W \,esΆwdSyտ3ū͘27FC@?ق#=}W*ǣBJG67H=cb܏/!AT ͞#m X>m/@79ܸ'G/?{*"_j}N3&E7\(#oU@uyHb7m0tXw"zvzH)pz`s fם!T'I?I'_8c69ќ PT8 H^Bh~2j2Ϲ\J<7{F:5,G'8b0Ei>'^]ibGQ. VnE;,n,c$ f77$)a)""#l"x@ |X`nт e^8 I1 ] W6shtDq۰a Xb/Lwꈧ39|q#NP?;<;xc7I߂ϟ]dcZ23<7=Il?'U+poqI>/#r״rו5x8oZFy9b#^ ` X|8~?BYS@l8S}ɾU{N"}o7C~QO ۏ{+SOJX棱' {˴!"Y Yi*z2.X15ΘaոȗS.ZwϑGhe1KW7=V)N:zb̘m^`vZ r?dY}~\0c -+EFJ j$tڃI5)Jr`\9  V3 R427Mb;#_;\Z1԰E##"q";%/$ PBX'ȏP/Wu@[thjq66SkXd2^/bCۛ+",c);=O)s|NQܽ5~)Y҆ȿw{ŇB/0{zOkh(~U08jY N8^0|WY0W&vxE/EK>=].߄ ®_E  ?tnLkۀ$>oP,LmQбWEE5Sk$Pu~ ɂg=.{TqAx0r7(v$tTY(Ue_@^9|ye'N`^޳{h =G<9M:0c/bU[^zyDh)6"U?oB0@}S%753wT Tgr:RΙ_׆d>8ՉgLs:Gh>4dy븀)'dXp>;WZoDv֛̞\Z+0{mÖlC43?PFpl'/O?LV~ P>3=*_RR1! Mg4c}:hhZ?s|Af(wZ)yGܛA@HF] ;2cclJJk>!=x+)Y*rD1wX,k}^oWVp9/4Fa{%-oɐjz!::.YrF[\A>Z=yU$ǠhZ2`ula|z}G_NĚNp/dx}8xS _^6<2b@9%ǐ߆k:4E u/RuӚ6T (Mc+-g!@k1fĨd,a& -5Rg42HOz̈́t;ûռ Oy\'1{عTo2KˆXWmYBˆˆ2)Բ!ٕj+̞'L*θ39x&kbl`[brlx.k}r2Y3l!\  ^# ^wuL !I3InMߎYTՒ6V4* 'a^kbIA 礚\h ,4ٱ|^A~p1ɖހฐfi7:E[vvQϚhˢhHG$E#@_ 6 ?\؀T^\f7LH!y(#U F xkS,N[slX{ pfJ .w<ݻ@l@y'$)evEO "$LtQZwq߃k?@PmnGݹ>LM:h?QgokQ6zI.)e/ptle/jQ9aqꦂt(vc"ocI/3ŋIG+b‰ jz݂#9R!'ӻR`Qu~@ ? ^T#-Yy:f1?R7HTgI^T2SN" :(ȢUjn iHX'. T}_u/P?.#J/VAO94Mg_?5f&,#t*_ׁAS{՞96:_ٯh<1Tq(JFq&L8Zu lM0׈CǿiS2Gt_k+x7kS bMo){ 9;}4K5ux)w"בEzS[ڞ^D*6=gJVPoW$W\*eJFQ;/ J$s ?pw}9Ma߹‡@@V%?{=gHzNBTCNc S<n<%<Œ dYC_J`tj5Y}BP~'v_Vvu}Pne?7#]qs)I_DC̔Bgd/UNi0]8M6 ~:VzݯGĞ׫Nߝ,o{(D%*)Ks鎭O6BK+Fyv k=Am{/yI>Y3}ro`$qvX{Dpr=wqt|i360JZƀCMd 9;w' iuצsB͟9 |'KG7xr<iܟGSTrGS~>+ zfbQ 1N_cgo\vs&J/:%COW9֩N5;!%g] %SYݼ2UǽZ"J~n6{oC!TѯeM`OƱ#U)0=F|_I&.@ vN&V+}E8r"^WHWl{!'@?S,ZG0~^vM 䠀sp MeG~}=K&@.ڕ?!~Nfa\"9=[= pN`JQL MZ\]`-b͞M{ k;x4*я?b1cj4ϻ4!3 Cu.Rb_$pWÍDM8ZK[2$wVb/!/t1NG%_c41 C# qݭu\z7rܚlkU1GN~7{Υ=0N3Del3OT? >a{;o*c<][\ChI|@fZϞ76ڇOV D#Օ 8L6=y: Knp:';vxy9}xqikgە 0i=6r})]*y2 d-#+jnXɻ<[tx ,5<J;Cאi؀ qB~?̾:nBy[eF'x-^_^^%p&5x`'$ٳSf;4@=~jJT|~0:+?`5xP;k.vgzsgza|w^c1('ݷ?3t ~7N#,@/|Vb>Cn) QĻzvutVyWf Ey7ī;`1r8;nd\yuhwPy#픿vDMym<:>n$+2w/ -7|eMvk.!xy[[ݽC=,wŸ[rZ:oEvC(BnlE&_͙fϳ{;M@=}0;6Sr0w_LT=˝>X-D I¶ik#z4ÂbL/CW63cP"sNC o'#zӍdg=0% N!:_)紎)Z>i'g*,fZ(s8#\?O u@F>hU2cdT2O!C^4|4H|2s>&Tt1k%iж%zзxcl9BI8o݅ҏ[@^-wS^o'^kLSjykYdt-g)^(bWH*]Ƀa>]v2z00CNܫDvv^ ~QNЭ('&s_~/} :swdS<D;ֿfSF>ݲ5-ܓr.Gi_p.:bW_x)RUsODn<⮨nos.L[m~Q{$lVu~XhӉir&:=[f=qbMb y zq5 >B!^P@CŸlei+ЬޕxQ<-Qi+]«?.hR0xR#v"H.R J/OB=G3Nw 嶵_>J;N bٗ\2O#~U_#^./[1} k\ 3ΏJ ^u0~e^sRUyӹSqV h0XFgpT󈞊ΠR2K|ʹ/Y>9ʻ īf\6rHT6|9D-ߑl^z624U,E~ 8BU_&2^vfbb"[9#yX48|kњ},845fxd6S=DtA=7bܜ_^Q-hk0N!si"~ q沦/4=Ց1f[ [,Oq#&A)}I=נdOL!͠)Vg-T,}Sۄ i$퇥Vċ 1Q :…a8ٔKчg `|pHu 3CjmXtVtW(55х%cyyX0yaϭEƃ2/Fo4H-1 ,@.MPܕoaZ VJDY\AuvDkD} |6.{ю?nsMaPP{vlEƔ? ĉn- bM:ե/sh.%#32}Nb.߆mAmjjXX`]5Ҵf4{6YYP^NJGs0c" OWx3PϽ82౾H,w;O2wR{ٍ)'߇S lם)2k^ݓ:ӻOg~2Tߊb~ EHutdx.Xo"]M$,/e4U摎@!C,jcYr^)t\G|:Qk  (;ݢyD~GIbV">;uz^ƱwmQzΔ R@UzK/Rz#Q 8UPV2X^7 CG`@ssG`$l5(F|#&9#My;m";Egݜ uv:9WC <% Cn;2b(K#;Gkќa46Lh'N]q~] ~JdQE%<|bK 19\QԋyJnb>С,dj*3`25V\u½ đT܅,SAʪ/|IЕTVtP,v@>V拙mzC*Wg7(a חGr/ ي.yL2eo#[gO/Mg7W:Eo# ◽'Aa 8E,]ӧ-us!J_xX9h7vQ8=-G GU mX̞l!Hic͝]F1#rY9_y(( 2!;P"|]E>ϲoEO7]Bdײg@{LUgLUHi.\P +#_~MT~NkIa>jӧh隂/}:|3u8"㚗Y:ﱓPz U,a'vv]wrJb|D@n3m3S~4(q(9F1kk$a5wp]Kiyh[+dҒJKZ\lɯeJK[չE_:+(Y[o 6QWjTcZc+,_f$3dKкfy4ahDOw(6 >vDvL8aCJbYCc;2VgPfS)o 8hk@a]O)\T`U*8~ڕIw|=?TF6ٳ=^%.U,=Oˋ[qM5',&:bapIf($ӳ<ϵ{MMYiJV/dKZM΅ģqWyT ѧ#&'쎏{E>_F؁:l.tylر%ʎv= %cR>:4e|\pB=Z̖FcՉW|uBru.t{EJW󎾃'>'~NyI&>HmHITrzH/&=XM3OzWN u?pmt0(dž>ͱݿ%}/9&f &Q'̙&o>EX(-xi=, )o363'r.rM A{aMߪ,q ]GC$ͫteL+%%|T]gQuGjh4bEqyݿ+E&ETY঱)IӃ 9~ #'F~; ݳ$tu:?NNyb'G/; _OW)e*:9%"J{6-$)P`CNmɯ1?64Cr|toÐ?ά )m(/|1hdX kÑ|MhG| BwN(QV, 2~IlqO"*gVM0l_g΄?vsqA6sяs"}bL2處 /=2"Wxzb{'e7s~:0Rn)NwPy8;?< ˋACp&[; 3mk6ptB-Y5S |s6MޞlUC\}op+.to n19}gQ;f-M-70דT-,[7(Fx:[Hu,Q =~Š&u! GK&%z9{8q) J+%پ/ZSEr!ޣ!`!Wp,ߕIސF~Kmm=M>IOzs){' ʹg= t٧ kB ģmn?Zv " x7mgvSYs/;6r&_u7]YK{6qqza2d}1k An/EѰws%wvx;ab%2`z9rk6NFN Q{uGN7!zΤˍ ק}( 5l|*q@}n^yG" }2Ʌ:7p;Ȥ]Ijݝn w '_<7@I#)a=4c[C)됻|^Ki:8+?d&_noAs>=7uUz1<}M> >v!CncKGGKR;)c8 -Mő5Ab0/pM0{󙛢ǚx`b4>K%Yyvkѕ|^3BDZ~\ճT>d[P,"}>(]5BB!B8BkDgqY<}~DZ- ! bY5Y*x ]4zׅ ("t{6]͟UEW3c͈ p?nK7O.MxP|B+{L}=.ouI|ROܼonq/_RoBr2sי6= I Wwfbd+hcy!ۑomc?J&oC_b㟑(nma{=G yahsd\Mc ҷ֛OdY#8@- 8,-f4~O;/">10 T wVf{Z6?kRS>D҇ޠ+\190ᴉ<@Gܔ`s<9y2_p |?0{~"jǮ  2Ϥ* GbZ?73uzR|Me:'1lָ e8k"툧5.C}7NQdcu&!ìߟW*MVp0? ё9WĮ HEp]4oڐS rÙg}*p"kCNmFѩ>z &ON "~gNWmgDK}FSstH5~}NME·-rMѴؒS+FTg"=8*kaY\͏u;><`zx&e. ~{TX?75\H6Id}zmCf_\l;~y0޻W~5P d8>jH8"Ux빊k 7}ŏK߄JpgJOgbV~ҹ Uty G㨻klw L]%k#ߤg$ (ΑyߘnUCHo?#YwyŠױ8U.˥C^ݼYE󦋤z)\_=L7y*|ޜK1L?͛U4ofA'=4xv +fܳЎa$qrAqV> o^k9/DĔ شlvZFplS{'7gM[ RU;ϯ+B_[-tVyolzѽJCt>Φ+N4RmR. cPs~,lOLtF!zױ5 R`;BB4=ٽMvHJ|j)L}y]4ljDr'Y="ףL!)Fo_{0BхA+%AG2Q5;` en>L' AvgdMr2$3+BR^W{ *uyuNѐU)^]xx5es凯.;qs] Q.nH~BKa5' ga"~L|; ]7/ e)fa3] د֮]P)=e3TT<w}}yk P+lRyzWE=*wຳ%#%+؆3j?d&Ae0Wt,f>G ,e^bW) OjKćX;}PVH}-5vL-avW`}^hL' &i&|c@o$^#$ )]3{?`Z{cdYfrR6i\Ixj_D?oxmpI+Jg˼ɠy!7**U_?+Ë֗+ >ϷjWwyDGrCn(f^%;)9ۼvp0 w];I[E=Cی絸wݍ=W3t0ʿҷwt=!r@K*6gdg m~<3j= \ظYvqO@JzELD:{+(z0YOg!֩}趉!Mپ پJ] tb0gHUt%S2&]Yú:LkEӘ$,>5)q/?, tx`Z[6%=_U>b $n̳5ćCahYJhYs1Uښ:5*?]vӮN:zd|2SBf|O4/!A&9- 6< PM"O鼭Hwϟѝ<Jm6{EZGeun/$3}:x-.Wjqud,6s g^܀>ximL+vN6ɮE$o`}Ԇk2p_aY)x*>9̃O[_#Vԍ/~:0&-N8c{T(2c\oZwRG?i\5b&xG}i|NY^tA5vD_sU]-xz;͠^hS^A##};]|cM(~oř_~#SGtD@CnkP< Dޏm`[%;HgI`X0Jn_cSۤ1VcmTKSw ;/ XA$Kvp_"U?.# z,)gL!(E+on3rzY?.maZȌoT=&WX q: V]= پ`跪TwEU h~j06lBu1ęw98ACuc ]ߗ7\~ܽ.{Hw/^o+ng2RWG~Me Xk%5Z ngΞg'\}v(O|Xﵽ1xFEIvrַ9z^U'0ˬʗ<ZF·I7y%Maf.G\*[gь^yFݮZ%zG[+9Փf^$y|_,GylrGf]1#8Boe_ LCOe1l*IO;fʂ4}]lݚ&!`"p8^"`?t)Spoagt?ǞzsagÊƼ'4ҿgiO4ǁtN h0Dz7 L],]o+FIR%J1-0󓻁"uoƔϽv{R\˦LX|T ,| oT~=H*D;rQCX>0̹8`P>l LRh~eLe# $_Z1X i*vy/o6 o0@k`Xxmƹ,.,1M\:Na|+ k8 7=KW=سO]/#e+0.HJ6{/µ͞F}n)ƓIv/d7~c? ׈IOњ8a cg ;O }w75'&ɟ\Ps\LPv%> N\T{F&ɩ@FƑ9Ć4Һ 3mר{HzQ>ٛ认1ڲe57Ex1=LD{ʐyunV 6E7<w=@/Fr8ؠ[%hjm^ xoNg; ]@ Ty"w7_9y 6н/3(ꐬ >xBI!J# ˍ{u70UIA+M=ӑfЭBC{t ?07;:_?[}*޹5ʀ/ %;(xj{X{HokDgd 3{FMFgD0|i~"%[OEXJx [jE1l3?=\V%+({r1k U+./$u拲vB}<Du(sl}~.jsck{z#A Oʧo<ޡ'%>swomץz:?MO]7 O:Jٰ -ȩQL'ĎOAkGW'ު,囏kO<׋-ʰVgpS^+nQCi=*;oDpϿ5X~~wўoXϤg {UPq` T_{LolZO0:&*#6JbdJC,Gg Y;,R@|]1%w ddo1TTSYJ*D)3Lϰb; jgsS/ yw8XxV%C ]NwgySCNP+P0Jdfgx(5,YKvK%[ǒ~%"]nb֒=FɮH``ɮd:;<ȐХ#K,1>l:&-.m=H|JρD52W!%5mVY} 7WZ+k\OP0\xd)./WKj]ՀRYEevEH=ܐI 5E Kquueu3?Fpgv~UPX]PyeEYTCiAMPP]]0[KWR]\|H‚ i c*] m(,6TN0j)Tr"6 *TVCӫ \e^Y _Ym I(a1 ؽ*  T7Ʊ7 ಊ2W>`WV*2X·bD,0[;`Uu1 [քTy"01&?6j/y\@*udj_yo6 7JalBBx͵gB\< W0j)_ U U8-j* `\*k\ S!N)(mѧ,.#Si'5?`Z.Sx)\ yf)|Z‘2*% cjUQ3BӨWOҧ TSVY کкiųkPf jT`(ڌY UM"[I J$ӑ}`E+,KtK6!TޅR*(fGh* K 0>j @k(W?`M,`R, !vYn”+B.֡P.@oP(P,y #CdX_|!p ނpPh[BXϿpP.A.Z1^倮4Œr#Sz!· ̻5>kCTfBf@z7e:bxCh zwq LY 'B>u>o19څ~}t0Ph I` C'¼ߡ l p~ tB/]7=;$ w%ڀI#RF;L3 1$1;X%o~R;n^삘)SR(܌1_9ZB<ؒlI)ISfؒlp5Ts(tÓ`y1$;vdRiG$ Wa=_64Ӈ 2=Qbܱ$S oOR+#>Dtc:c1]YY?,ty01h?tkg .0憤܇LM;ac0',kI |?@(wy9Xmƅ1ba7 g-EWcj"!𤔅1I@qy wIcRc:%ed%ْR'Y pjUv:+J 6y1Dw=7_CRo* BH7&N;RtVqio?0Ii b1uB!X5]CmRgj ՃL|ר:P&[1#c8GvXݙa }d/s<ޜhtxt1w|DN3{)O3Ĩ}H7kj(;<s-ݯ gtw;)(M >0>b.1҈tW#C];)T'l [B d)v)|Cz˽P(kT[㘗w3,Z.6>*1&]7CU~Ra(tBGTy]r=vAM{~bbH7Pf5;Sz 4㚦v"b{6Aա'ޞ(f7+y+!bG2˳PQM`> :c+C;l:,:7$k45Z㪘g#wk's'௄J!~i_~7h7@ozGHŵ˗qJ :2kPH|:_]kn

n8/:Ow+1ÿB<x^U#n0rKxx G&pQÕ×x6,N qB~e>R¢},W+ϥ6(M ĦW4|3 +*(Bڄ }||N?Wo%T{L9BR_(&?a]_rXX?M:_ ˯gJ1,}8w uF]ˤO^}Xu]s#ESѴƈxB,WՌ6_ɟgfUa'y0Yo2W+VPNEVOs}y0. J=,o<rA/`t:XRFcDHօ1i$a0q6P̤T!gf=YckZ.+/bvmpOXt1З,siA/L=דRxSBY/^'Ͽz~_| O~zk^W7ze㴚CazʥOuLHү74C[uC2Zyvh2~$C;Ɵɠ2)kt^_ 39fe|b}.ehgs?C;~ah+&C;g7/p9x2{2;=|yi0204 2[Y+ ??`?j23 eW2s)ø,ЯCHo)f La)g m4~Jj|͒"W͡dbl=')~v.'OLeLYes>km&^ezfMùlJou1|T|-kRHo4sC Jt κ_യtz AXUyVjZ6t\ކ.kv`r`<6_~l 44$%hI}o("%y=d-4z<fNbhj*nr>p5quU TmܮN ASwR%qs5z A)protnNxax'A۞o@"=+ 7O@ @}-Ag(Q|00&Z w=-Dh U'`4553ݹJ AWӜfDRumTYV2RS;6<:F'W*̉\1W17 %5(jFdj*a xjACCY DRlsNdvi?v65_OHHUB4 ڿfJ9Җ4i;lʷ;8[~7{8|7O89(>OrrTW8ߟ_9|Scْ46pt7s8>-839brx Wqx!Wsx9^s9խVߝnp>_upK8\ _4(ktAA_g4~CEcgpM+CX7K$1%v~& c;cyL}VAՌ5>y\b ES_3ǔ+%51 ߋ<3bO ,vǑ7 ~¿b?@.b?'cq~¿xb?ῇb?\b?Ή~oFb?O$)' _db?{_bm!o! ~— sO[i~߃tb? ?O"O'tg  E~琟M') ?/#_H'~䋈9~¿\b?8Dy؏Aln2:K{ *E 1@Ƨ@rVںY w ~QQ-F jIXo]4 bxr(&"祑H 2,PǺYux|譩PM V{]l 4[?::lklmOVA77V/7bt-c1rS#46ve(W-т?cK4(5GH*1Z%6f Ykz֚PK[MmT^CqPR!-̂ڟQ.~cBkٞ}<_^b F+ᣣd(:VtHL0mI8G?C뗰_w䪑Xg>QS^79@TUbǶ#s7{Ǝ@͡F%mu@[U*S;p.xSq|?cۏ mہ( d8b^9zAq wjSB05~eP^eƺyZ+ !\k-RŚ׷ qπx!] 76pAsDFtgƱ_zR^*oqDzdB?|TZUT.NFd1e*MB0;MmwFLm H)^!^ %qשּׂTǥU1_Ε:\SkPux#?`"d<մd[^)v 2gUOE}[ ~]A37aJ20[KsbuF!RC )wH@;`;"o^IE~CC$Hhv[h:`*ٓa h+AZ8hEbɌ_tbl-o@[x;۩ʖ)S*"&c˱ NA;;ۘn)wX u$8*ѐ"xtV?Qt9LHUbB&%aY|>b\p9C +vZ{JFލ٣Ggl/˨.4-bxAy̏O$;  %%rx9 8W?üZ-HSI`HEtB#ZlIt οw, wYgqu Gnb%lZDyi(? "2KsȭJ14-ʳ[k-rAGq`ĮA>!v!4> .g\an=$ r:N SiV VϚ1Hc}Poҟ[j6yY=YD\IiQ~C;+jӘ:C Cjj'-zcq?f!Nљ4H9%0&r$}L8ud펜ƴG#cCW;|7rq]B*hX_lkb9\ZƘqAwCA^*:fd:qQPq-WyxiXEc} 8+ }% 'H1I?`oEq1|n~hSz"-GTlmM6tTB`7܋װpVi):lkxUjE5Թ d0|` ([/c~ =?U/q-埍a =#iD?PRZXmoǟ^wӠ^wȅ֭#w {lDri.켟 /lȑlQe 32]堨,u`b5w%t#~l`cĢjLn<rAh -0"<  (& AԮ<jVXvUdEش!%2Y%Ƀ9%l.^I#m?CZEJ+H@}޺F #(H[q4Aэy5Ǣ-H*.1rTR`N]x2ߑ5z7Hpz0{ci\vYoFG\^? ݏZa}YhW}GvB?g^Oa@f>Wi1020s{b~7SJwgbrhE˻`g >KJiS˩қnN:# +pZuAGgVv6nKWw1D t7ӛUc욋6F߬2}왏tA({Aۘ?Htu̓X>v:k)<9VtG. ^ui"uGdQlͅs1 CςS@'CERmJ0Kܔ`¼J1(c0Ů2YU'ʓ`M.Q} =q\C矴v='=^F}м?<[ jlj8x,qyqG]HXVh$j6xR1c#LB>>1{`$CwIbۤg} <2 hm|BPOާ``Ů;:p*+ғw̟YqX˦bbz*nR:"K})INQ{XLC~A~EžGN$^bUT숖mbamB٨XmlFr(+-V#՟Mϡs1z?B#'EU`HóӋ/}|d.qx_ofa7C3i =-M5~E"GOw(lhX|@=ZqKZ-M.Feƴ .~_$K}' 7YjC⹖FOu7]%JrC'AK`+-ks`& -u*x& xƯB/FT&e-ke Q[  E օV4ML;EiRX=IaQ'`iBB=J\7jDk&㢾&.W`h,L0½ѼĘ4iC= gεF#9Fh~A[f}^WfDeƼٌ۲ʍ?@DJ`} JA` ?G}`FЧSdžwkt6Bw6CVP f~jFW3Zh3}ѝa00MFX@gt:1Ռ16F_dt'{=0z,6a3:ч]jFmft/2=fF{U#mO"2xPJ l jB ]zvƔJZ¾IaPx](~kJBvz j?DS 6Y_Hr6OA b =ADAg&xO!ہLBikʠJOW VZI:>ʥWߕ~z_͉|ix,;տ'_PK㙊B/6mlib/auto/re/re.so`S8|eP+-ӖmLlTQ@PFPQ Igō{aB[6*S#l@w}Ms;s====h4 0 x*8C5Д0 R%i0$_*=eϴzV؛ߥ?ߥ?"MdEƈMICfC$#=6 }ڣ AO]J҈O糏H/\TK X~C^ C.^Ye|FMVo7n ~_;A-E.v9)$!޿>@A#^ b,/~Ooޔ˅_=-_2/~Og& [!`ï@?'}~~o>6!]3~T5Wz"w -t $_>~xW<> )7M*1TR\?"[9_gϓ<Ϗǩq'8-v yb;4>YEeb^:o~Ȩ=V}m}|W `sUw(pQ Jxt6Z=<g oA>$?>\cx2A>EЫ#_#z:/@';Ƅ׷}t}tD#3§='jD7G!+[|GNw|y΋ A>dzsrOP/FH75B7>~%B/@; ## a#z9EП5gM"!OE!FE>ab>P#;?"Y+ `F?N~G.Bv_/ByX8c aI8|PG9BF'>{o:Fз'E\q؄0.'Di8x~,B=0Bynn"8]qɏ5DwLwzAKk V+k1<} `ƉAwQP۰dufRuh%Y+G |^cW2"_|t1Ne~6t :r[t>~^lA*?/9GF3' ~jEtXbQZ_8ʰ4PA7K>31BL_'w#m ظ Lh20dԘc C9qcc&GNm# >v$cL4{NG6vؤI#'A|BJkȶ ɳJĘ\Cȉc<6>dd~?1cAr'o&M2i=o?~!{lCr'CvS"°Q#'=5iđ#y?ƞ3a섉QƎ2vB0˸rbO2'g9Ĕa;fe!y@8a! 4aßDM5Ҟ3뱘K)&;r$W,' O(GN7a}Xø܉Di`JE.a1\r2fcc26'8)wXPఱ3!w^GCr&jP@nBRfЈÃq*@}L hr8lHÐ&N"D4|3.wؑ0e<} acIriaJCr%ļCJɹ0P%PPCHORO?r)+Fj*ؑ{hOZÄ.a)GOFazbS?nccr̝<>2`]R *#+ SuP^nB!GrL\P O0V@׻ACl~#04D3zƆbL$)AqFJ 0!S&˕ Tgi$T0ʏD'ۇc!0<8A?&6bX!h퇤*Ils,[G\9:9d܄cF7\ʂ=?&Y]0aMjdxcHc7`b#GPzrhԟ`,dB1Ϯ=p1#zpp`TFB]vGN5N^Ie0FN4?=0&ra,-ZEj׸ Gwƌ˅}Ge⯲0JM0SB;lVu' hD/D4fPK1đBx"7>Jŝ( :>/&qy4a#_u4*TPIL}$1!ΰ1z9!*gH_@F@Wz݌! c i7iB CFf} jƆ`[fmHvo`[v EEF7hD+(r SI!|j=?a4GR̘HҫU1O( n@ 5p8 quNX_Sx 뎽!'\.WBS0-DŽxLJO +I!<%DCk\ o>(_}>:~QsC>5S!>'~ ' !(EU&O$๮a}롼+Hs|"gu8F|%x,%V $WJ pr{o(#ȕ͉o*S$&9]wU &%xW >HC%x-I\ >TO%x?̑$< ]"Ipyb >O#_$GP/$p\.1O#_>E_,Ho$|OJt I[$6 MA .3^ )I~fX .يK .JYHC% >ZA >U?$%|,IpyQ H,K! >L/%xϑ$ M%( ~P?&\޳tN?.H^|$x/% s%xM'IUJ$T ϗH9|'Kpy" >]/ >C/B $So. [ϒ%xJ#H%%p,Jp/H .9O/J$ FH%xE|ϖ $ *_%0r)\vq70C l 0))|8K^ /;0CX o0 .0Εcxc)u) (~)~ (~q ?ᆔ p#?p<1ܘO1܄OnJCnFp DpO LpW B{0@p{ Jp+ 7S9oS ͔ p ?k`v?0|eNS[R)|í(>֔ p?w`-[0܎Ob IN$?p2Ÿa=cob#/cc.?gbn?p 1JOLCNSP)R)QQc8OP) ])nn 7p0Ip wS8 =(.KJ [)>ប  ŰO΢Sx {Q)\(eTΦS; S3 S} SM Se Sy Sx&R)4Q)<R)8Sx8S! SS'S+PRcx(1)>a7{11M0!0501QON^L JI Fa N^ A I0ʗwWUy?Se|z|j+vLu\3%ꑵaG* gpEWUX-:yjܦjy}|~~b yw.$cZKs{O xdCx/)|>!@b#@@(Twzopw8E+oo5E#R[mA̸3󂁰L6wXْ8:#(Sw&7[%KR[)jAMX/]O5Nl꘶TwmWFHz lF> S8|tg2x:s]^ɅTޘ4m[`XwК-nWl#HL4W_Mǯ_4Q?j?Q( ?y(httF7eFW݁?#tHuBwj ~M0z͓:/FOzѳэw=*D?]vEqbuNvzzUS]::Dܦ$V8cTS'+1JA-E5nrWhN\\^kKɅkGo0TnhOPѽFN`bÒEW|8EB3>5!%S&~]a ieKF]34O>ꈵt[Uި8wCS ;Lʬ2| Խ*@mA/P>UNxq猫\;EaT RvUUwtO ~UlsmiWSWY8m-:[Z4.gVfNTn/$݀ S MEZ{It:V$Ust4_9TCkv^}_,oI 89e1jdՒdOuDD"W9nNG;WR^3mZ0vs 8ih(e21ßdh>` q,g?(f_l'zC|8YQX+?&31NJ8GѽDW,Jqw)/vNfYBgQ5dxo!c ?M>c0vxu2W;Aǎb(Nelc2VeC];N`[ GVFMUݳA)2/@C^,]qw5YVF~H(bM]8Ȧ<nf܏3T.)λ`Cq*Yq$\{i'2=j;4exm9m->jd6RF3z&7ꆸPF[G)H*(N<Ú֢DM1f2^h+ 3|fLf fTۗ%dO('*T\^۝uTol˲4&sdHi,(<+Na*7`bb@r+)Ǝ+ 23/c[Bbn3ܹ s¬G2ZTx-ڼ̅x+3'2COg!U[s4$8SZ%J:G#spPB+b$ڴ225fJ; D/!/%$ Z/ֲZ m [EQk /'hFǂKޜuOq[Ǫ8˗`=U `UTt 1}YJКۍtABQIki1ĉs(R&p`̠ߡ s*`>;re&^9d!QT LV~[TEᯯ ᇺg FвUjDuZ#juեEdFFh?+CÓ'2rm9 =zIaK! #~-w>GD:6<5|"+[8~|(E?72]z_e^迆)e?@^z>  ƾFh=.2Ҍ?0cr/a_cl,cץvS}~х~;=Fg2)3Y?:r3=ъ^pM{nz}ՍZy]|8N>yOX]}Lte~8jT]ЂF,Kۨ87_DZECqD (0aJ*B+$Wc0_*9|UHV):+^nVv:r O/@^HoQjAlaj6v%\odYc aɿa6,lvUdiŇA}xUWܦtfÞ\['b ?r^} dWC[ yQ9,M>&eE+S:S|>RAj[X_}07}ق~ÔҗeU9{2uL O 03b/7qbcG]:/?Dʬ0#z0z7nϽ[cg}I?h'e;#;C;2ز]nm>5i~FF|33] | 5_7\'~l%Z{*3N:tUZPݦrN2tnaHHYa~Du\^TWHN`?>`KmSVg\og_ZTvŢg69VS>(PK.߀2 IuWո G'J 05[ߎ"1oYz+<7hANAwUeB(tb Yw#KsAo646 *!AIQ\v_x)-ߋ߅Xd# W"0 Gb?P WDŽ}> 9 5?# =R\3p8k:lKίOhgVT ~wj\D9TQfT=6D }Rp#/o|$PR^ UH.vK'O+Z7b= Oī٬i`f\Hi;C4KaՀ%9 kYhD~`=Fj-uY:3VXot+ifNRg>aY=k/sMz5jZ5X7j+/__`nRM۾hI*UE0`Ĕx>ʘ%F_Q(#tQcm@w~.6+DVۃU^ݮJYp uazA7ghh>O{{@ `\y~2HoݨdtY~y I3 }P}F&\YGq֍rA1ɒoAWqn1&EDjF[k}?^cW/} g5 _P qY<5HN(]esYk]LイK\*Qւ^Reruꔪa (+3}2P|ob.:WZGM*,>gq=; C>j:{FwfzFz97O;.WI|P\_=E_-GCX7^-{4A wWEbX}^D#D7*c dĹ6킭,OZ-K*I z&!e)<6ݏBU,ZѺ9o]< >NV`bt\ 1:^jσ&v1 v1K Llv'zUO-h<7+米&`c*Q.[~2ݷj\s\Yo%ZaӶ-ۋsQl~ +yg,:=ᄅ:8 ]i< P_=W P+k8H_HT6 U6ߞ(:ަZ4kfLCA)YpO [?3Zz[K=j L xs@lڎҌ9F{K<@RXqE5m[jYϢja>!/v}G&ooK%L7*_q9[_?2]cT^#2]L Ow%Dtxhȧ ^c7f'A{. OTtDBm ߪ~h miCgrchlLm1"u!nb?vKg-k۱ Ʉc] ]=YS&[Sn"[X`෾@n䗊_pP`^=Ỷk ,/878ZyaM 0Tvt^gi-ڮhfqMUY{wNcڃ2C9GUm?Mf=mH~⺳ ub zX5!<٥eBhP?u`yWE)T+HjʥZ~ದh\h̾ϛ )W!88qsx `i]M7p@N*ُ{eW*Tnөܪa=^q~z32Ql͔BoPlt8,R%HXMMyD \4~"q\e|JxK7v߃@ŀ-p5TctV[yl 2f=%o]K뇯Y^W!~i}=Laei]{9֢Z&N7δ^+gV˭]nW\+=*ǥBBu!\,loc7;DoPϿ ڿ/ZJrf :Êj˝LHj,دO':u+1J0?`%IWgJն`%3ϯ?_ן:@HCOCO*: w*޷bԷ=kL/:eC^S)k<$M1I_טtQ^x{atզ\ndgܽԍ7j{6-TJi具/`vv*^oѓ,M;p_<%waS-Q8(  Ux2+Hfw2b:dMz 8#ib1C0lKŅDO ˂9'c΋_;/ۚi idbA?dprE M?0~R՘|CnI&+Nptm"O..Oux0()/|+ܑkSވ*㞻a6 [8*w#b\vUv[K5A㽎p't{zb޿L@::|^G|fJCk_Z[$0||V # _K韪~C߾:);rNݱ\){()ŹoRKwP~3M=wC3B: (,#DM;gk x! 兡 M7!0/,o+x֖ؗ<y%dv|Jx=\ƒ7ށ+qGq?R%u߬lI==]|4,ςTe9 6c;>`[4N ׻ZLYe-ksZhm'2}2?p&56x?.Dy~3n#7m{ѕC96:6兏ڀ`6(Uz9 S(QX}[\Z=>3$Aسԟ}jJ4txڢv9<*3T_SYYwlNJYr+@(XHk(b0Tj )DžKpDŔ{.V){hQ.&31JxD+%Ry)~~/W oQ%3sQ_إU2> !oOjO:qOV\C $gqh:% o5旽iB;}4XyoxpOpt twO;r?-~x&]BNʖ/AטGLS5^Qaz_lM{իG g],'BF%GӜW\@ QAe)Sۯ|YYPq}/{ג8ߑ; WfOOH(ivֹ\+`xk1kAqp,;ۡs+s@箦ݣa5 +D%ZHDLNwՄ+r$&I5FんzpNҖ~P$Ӫ$'y鞹P9zzån~7k b/5ˡiQp{X0\=&pagar(*BKt}kL`<n1>Qn#Wc(4&~4だڣ§c )'u3NpEdFyz_jʾV\j& 3z'zglf9gB?yDh\ᇠ TB# v ^UlP_]>=x=tX[Ph /=fxyIi&c`sw8o2.6)hBJZ83DmWbER31PQ%B**8.}KNb$v켕YRi(\NJ켱*;LľZAL;Op% mBy\(;5"c$[,}~&ųxijxϚ-E,#⹏+I׊JRH2lӒt2L S\L\ ӌGt7|WY? 뵍*sWt_ *yLe: sspnz1L') M,+=:]hO__]7yq;}&$k) Lyce:c{Ox># χų^x7r;oNJk _q6"yOMx∅ &< т}g490zu;t#c3;u};Z:6%9mؗfձ5c0 ɻWc~KF4jqFa4F%gtF?5ZoF7`F4VomF_N[}+{|A蝌60;}~"[J^l7õZ9.E9kZXKT-՝DcUTWuƨR{515`o-\ۅ+Ybpg,7մ RfNRRut6wdʪmDɛi O.C6mj׋x@n[bw: ]Ӷ]xy 1\i),۔+ZJZQE~("1U]bV8qmUǘX#i-:Z{dO-!FMUUuiS}ea쾊(-2Hk hv^ͩ^ .; Π%ynxwBeXQ.}wWye:gu//S?S&rӴK==`FqUܟѓ]͏dsetF1:э]/4龍e :͟W9%XVx?VCv NFo'*N<HתXI_ue]UJ_PG$տsͻߛXO0 jjXu+5Ua*':FWE+H.J[guz ˠ]QEE 5XPBen{%[Q.z}~6Xw>FT~?rD=~'U`.|O'1{1G;}'7ѱV^gyd3F W?ĂB{uUs ki 17W(b0UM-La&})lVB?IU3ýr&)eandb9j^`UNxyqE1ncc>׏7p<v~AxQb˕|[bTs[UM*qC3z$Y:)/|fFESxzU!"aG7ڴCxcћR\RBK9Ej$FY|Vq,D?ȹ,陿KPG%AM$͜@: a|y JZ^>Y.9 C}O|bGOJ!4\w\?ؘjpVѶO"F`[/k~[7uKu1fIc^s3t|B\Jdžf(dN! Ig}9!UnEYڏhqV 6σ242~}mѷ' ݂|Xi3{ }iWZo~4f+`6Ż +g &ѩu&qzi@%5OߠxQKСhhWt0C:$L7d XEL g| B-TɅ!B[`VM;v+2Pnc%{O fYV_&V0G?s , 3潆Iy#=5]&շ*56ud>VhnO4*4{v?nƒ>)XdS|m=>A}y٦ԽSZwfAYiW iGe9lZ;lWQ -2@熓6s0 ?Mq>n}=Z9 K;R FqJp$6>VMk8qEs8A %P>-sՖEj|-Xo7sζNߪI.j^f(9w5p3̯a|0BĂfJ 3(Xbq,3Ƭ3nfv5>=m&n~󝡙tEF4޵lSujDwKLtoOMa˶n'g>B7^C9Eb.T޽o4R-vTC2}jʚ]= Z ǚL &30xӜ>gȧt)YjËnKd*R7O a?A@6^p}xd_kLAB2w}ՀrM:yrZiA},^jCҢg hD'w[:foY`m?h6$o L69 ޼Bq@WݟC~-0moRVjsfOA\3+~t_S$h~!Nޝjq6My%K;ۄ6Zd5Z2ɵî@6b_'!m,85٘׾oRBt2KbáYu0 Fv42PU.{ K4gZ;ǯx,fɅ/tC݈WRdUhuHPesgT ,=bt+\;.<:pUOy DJ^_o7RM;E*0#=(sԱx g5S!6\<+3T-%Ț!_>T0˧@[7Ӄj$WF<3;,l- k^%3(UYdIE~v;Iތ) ;5 W_]dNosñ~+w4S1Z>رE<1+vFcP =*ŢUkӣuO%LIC=}SuFڌ9Dݽ0M}OfdҨ26VMtQ'z)jaQ1aPM"ݗVSL%Sf|w@d, tv]S{!4MIeo"lk ม8i?(]qܭRa귯!eUbV;Uk /6 @,uUFnoɀrFDy0Fq=ޑm+t7):/!~cJR\KEm`P$H\CqPj#l̩@0_5ѝ٣!#WGUz`BjewܘAm[#<  ݪ8XV3+C;b-0]Ҏ[u L-sx;Djm[tN' N]m2MkLLBLo47 j}G԰^q' ӷ(j*|4 \>z- 5{*4჌V->!(9טWu3Pə/J6oP7wcGBg +cFYWfQ[Jh'xe~Ar/$TJ a'<|"R"\I^$N2sH9"bIC,ՁIr-8ö@c*% iYf֏<.|\Tw~ihS ^g>{.[K#c5J xRh-{2/$+%Ѡ=P'\r-?Jɣr~ʏ@/H5|R' _G`}0[g)@OG{14G / \~ d OTܑG΁lwOڅ4;,g/;8{.abs(9"×n5^3\M 8?t|:$Ka5H |/I$gVJ2PPaq։HZڢ\|Ү84 _~J3$]³bm}.49>#(ǜ㽮k )kLw/jkt)S'/Wqt;85q??;5_+~R$? g_py|QěC/;l$oI(oN?AQHu'vRGy/9A<|`Cv; #Q~ `(6:ʌ9ҸyTׅ$iZ@S)(XIlH8;͵^HnQdRqxU&'*/\tboGa>-8S2a4VLuB,+:NJXѴ;i 4?~SjEqcQ&͹7jivkK*eO_f4"CCa/\ p 簖|r|rɟG 6 BYgmF[Ī-]qZ&K79pͼFJ}>L5!rO$Xmz_sgRK]ŰRx;҈߃[9 6Vt>ujQ?|V@|UeQB—{\dĜ\E﮵]L`j? ?\3v^Z9J{[8(R-isA:0,ZW[,]I\G[4h3.FztUX%JSgH>糝źK+5~sR^DDzGTZ P-{c;'(lgZO0ofbB 8uO fLL /~$˜ szP̢;S(!J3 8)ŹmP[17=F<Ũh*I]8O7u6sMh!C!l9NsfJmnSn='<VY;6mr4ͼ,ZڽS0i)h!D#fS/᳧8g೏| )'ƲT.ӷ,ɡڪ+<qPWz?\ wpl}؏( /UpT!~{p{TjK$-6Mf81QpAáv."N_ #[گ@\{|"/~٦ _.I\ސ[ߥ@,nC}K,m1 rlmoPo-tэ0ҵ7m6{ 6Gk=- ~s7ּ̐Gwc|tgAn\v +*^+q3 3˝l<ʜKkxOțCkëfA/.1wOi[!¾Xq1:-vZEEQVxЦoS#)gEDX gղbKץ0uɴ^w` k5K7UַޜVG{׌"wR D1kA<ūoUˤRPby$܊Ez(u+WYW~w@tkjCr\hMq2>b0x@܏t5!黠\:`K4z=,>K_4~]{Oq 1h*vǪt&O0WwB8^5|r5t#-=&ϕ5H;H}o ;6>8qDž ܃qo DQd7C zpyu:86}tTOz_GknC1F(Ar^ūתuOZL%A烷O1;8IVmJ"ts2 x{Cpx?_v ~6Rőzl`&D8 Dⱦ9`y}=-I r wbvjhǡ[ն:1' 4$tQG萩NOD=jhR:ymH@([.<`jF-&ǡhiG6wjL>kߎJU/E+ j(OjA#v#AR=`XywؗSMbtG#y >I[H _`$'%duLŁA]ڇ6T?e,.x4jn27¦&sK6dq\DQs%mR/^w@&#U|1N ?Da1 =6=(,+K Įfِ_*rz ݢ,hʨme?!6ߺ Xcח:sk¯ъs|3~5*x"Q)yd(K]‹BFWlm:juO8Jk}Ÿv͙5MNf1Nw$_PvI<.xfnLҮg2-0?lP5 M|0^iwFei&;3`&$^|\yl1=0aDA4e%aU緪ͬ)z-8rwGFVm_mjx6^prP鼬KOdg?82:`Zt6ЉF\9(2wt>8moV#Ta"ԦfjMC 1T['By? 8 ,h+mu}Pd(l*鴓j0=Ry:uv>B=87~D:bi56E8X_L0 NrWLr<$qDF?g(b@$E˗1"unj@= ap[' ?>==#fs<=i)ۧ=Fҧr<ÿx c{4ݛ$?-:bKF9RYx,+K3TXd7fiyIDW!!OsuLo,,o/k83qgɊ=erw`yX;DVHSOg`=G65gr9 Cz> 8, 3,(ċT3B,2L÷еbq!fd2{[eCcACd  osuO{S4⩾/$Û$BspΓgcv1Fx?mm3QAY^{jp\3$\{p!ۅ]~]y3}7t W¼Ų^ŗgɿx*tUOT2F_`C0hCdLp>+q"Jݸ؍_@nN3Z͔ Y:(-~0?, QtwM‘a1q%`o>3F+gzL7 }sIrX֊A6s-pl?5h%z/և8%T *`{ec`yD*ֶ?ɻL1UӗpWZƓp>!b2Uon"-#*4[t?o G u m۬F8@b7XS}Pc#Rt8-ň{@3! eR LX\qX?57E]h thFW[%K93 Kȥ3W!_hovat!++05cj z\Z(V#Qب8X~wQZ|tŠۗuB9iK{3紪FW¡lyoiJ -kɿVq~KwBR"-zHqYbHWW(0u߼PD_}Eq!؈.#@ c Ή{_}qBDPXcP1KU29c_l Wʋݿ I(ڟXp8L!y~4lU1ѴxStfn8pe>(OMYq}裤9#wSq [>Z5u|2sM-A:X쬷95M8DƬ {$ȣ kC_8p"F7Ax!MZأ4iL /b0sF3mHߏ_\;*Ζ4^ *f}VA@xP- X &fvKM 8߶mոwVώ_VڪWTi(0TYciOPF参6*|)ƃzUrO3}@*X W œA^٤{t?w՟pj}SqU ܻg90 3"0~<7X{?wj9p cuN5bIЛ߾X֜xYo~Vw5Tw ]=ʛkt~x.".ZY1 VM+JDw;|[#p>(j=3(8y48^d7zuALsYpN#=-Gq~*=+tj26t 'Tm_$1p1<']b#sbn\<#wH~*N(K(T*yVfMJ9͔sF q{\v~-5uCx\:DV)WcGɅg?PW1cE%M! `mUg6&0Ѻ~O(,9/ 3M=SE﫨ESDuT[nS\,&V%X[ Kw.S:q'4w߽{2X(K9]Fo=DO;#aT>B/C ݥIrL3O5;}ƮK@ PqA\um6= !Az;k끺ʣ<tL)]*pƬ^q7oА+YӕYf|_#_xI}vlTNV(zٓ36aX5(lbBhÓ0ɛ7x2WǰaotfDܞjnyYb2kwdq⼍^(kB%Fq;d0jthonyihxY@lYA|>դSdy5nXcd*yO(򏚂ź74etl@Sz4MJNS^4bq`muP 70 Uo?'ƖS>jEFIs'xV0p8{5-q;+Fa"A-|/,/ 4CMnVlM;x3B^}<3mS 6)j_M̿dv}p}.il촞حi)̴>vLͿ (8Xy ԒN?`XqUORKo!#vn#$(xihU#OnS:chst^M=w-8ZGRjߕwFj%˵TR0j^=ԥO>v/}O,%A |i[W(ֻ2.N~1'2ʇ)s+*kQU>1|~Z d[q9U`EåjKL]xo{hf sk(ܻ()\]=Ԯ(rE>"׽E"~>կʮkeY k [mP߮N n}U}jUv /oDž^FT{AJ=M_K W/A? Xb+ iLm$]Xt>Kz(}_}/@Pd_2u K}_%X/h|W>@L$kɢ33JM"-o3_m˾[=5[J+1>7gЉ\.uB *z*R4k{ۗrҏ/ NzI/vvĤooI/B:ٯH3oqLUw($FcV hѡR`~ΚJL9mJpN27 '~4ύn7m/ #&%$BL鷄Q陷"ʸ$I^?~Ф? 6DNtՠ JzNOfĤ[_J5"'={J:3Z2wo?7i FzuSj|cK=S\Ͳܝ7B)TTiځ/M.oJ&Y`x?XNzrlIBb"'z?%]'(IM M.ZĤk_DNwULФW)9?ቴ}8x*#.qqhuֻRh*b84Cw'Q(C;)ϡ(4C84CۛQh1Zpu=ՔB8 *M>mLOU7K;f֕ A dw[SO Im-^F: ᄷ_;s\mM{+5uOq34x0ޛ+U JqLN܃r h>f6b}Vc5h8ɻ"Mkm#Dn4xIk{0**R*/e{ {D>z\P79UYmќ*hNJ"SJ9qYsY4t8g킎 0Jit1Nm6 8`ݭVťAԛԣn!GaOz9N+Qv 9{׆>+ _{J؟U(MʬqDў^@5E PTw}>QMҬƒw$!fS\RiHjmCB1(\b\l6V=_!B߶/ݨ:6Н&|&Dm'HhxL#ѸL މ ;銤)+H:" o(==^-ff`T&U\l>/{èz“W'Ǥ%+FC8DH{b{Ϯ꣧ܞl%UfC;ѴGX8s|ЀiYm>opY[/`胫gCLK7*6 Pu6hl~]Kڊ[W=mŭ[ڊ[Wi+n] .t euDXbjㅬJ,N0oUVQb=p6n_d~3yqp6ۊ zp5hS+η1xkGbKMS'0%IugT@۪N(1mflK.,ۉ۪T40{M}wQ+z<-*orp<QȂASv paxD# 0l!jiQQ>B>DǏ܇lGb ߣ24 CEn5;q#v_~?ek$+,̓;~G2dXb(skfv"2wibWY/9\Z udc O~rEdVon_ 9L8cķbtlB!j*Y:nh"wa\6ke<es1 O^IO\ -Dcf4l97.n{ ]eʂVWH;=ZDe4wy{-BOGD<8?+|Ir,=ዊ϶Q>)0)KbǛBC} ͙x8Y{t;5xIk*|^xX'7Vg;|B{KcVf݁9?N1<-] ;*bdeZ757%iP?m: yWtnG\}l_[I8]M/VmHX͘fTTT..| Z (>[9>r;#༿y=`gZsv;2-9&.؉T_l^1fȼ2٘u#y8B_;.cIfI2e 邯UIa~0kLJ N[c-a~hUNgh? BYsZ˙G(ɴcj<(;j?\#Aܓ粼eՠSWG_.̣2zhÊ{zctGD7Gi@Bֵ xƠ~tŵ,iD^`"v@axi,Ny(ǿ_J|ܖ+{pepezO/^2ieSF'Y=lSKz6̰_ §ngۍ[J]ӡu2`KҸ8:Y(87ن,< /F]G/ouxhb[}Qp~W45UoW zDSq,_.ybU=^WZ%=_ ~{" N~nO,Iʢ]VNjJCkK/^}Faɼd}&Ք1ƣ$ {VxL3i  ?'w.c~- IVsT4q:Eƹ,Jӧ3XOӄ2կG7 7U+G9}HZ25/=: JP[XݑH{Lok!cz͑;Ez2q j 0wqM"M='<}]wS"R;t3ݡt kv|wB"U=pQ_(/5!.uW?z=0z3z1V?z6SG]M}IޗkG&htZ)vA$a&'qѩK!l_ G[,Mq!]9c+[S@wIlPȥdj89se-#t9CvtW[\|n6F̖sbhfٍZ }4j\#.*:ǏQyv,;STk7v(%| #3SfKMqXlqcQx<.e Twx\AGflMޡssh7J-TkT궉-Fvg{UfGY6OXWrF6A)*+'m,HWS< E')v!oz橊gC>SRPbkdn, GZvz$ 﫮Ϝ }iyle‥'itx>فӚ&5zc[F¦vVHdW>>+~\d ;]ۀUi2Ci~*ho˹.K4]_='VFN7&&[GVS?Y2 OSDkBk`I9p[D`j3Ԛ3WY^]:^OAex(ԮM%j+h!ԮWNW2w*}&1=O(/s[NTD֌JQA8N#ѫGzuݮ_ODL!j1B35+*@UcLNk ;Zh[oŶ<1Y-r}QIBd? 蹌>5`蕀N=xO\{d2#F^3};g1nL-R]я1alv4n6>K"*`+8GNftZ`}MRw9z9ʗ"ݑGtdKf:m })K(eSY,`0i^+^AQYON&FD6[j8n&5RDt\L {/(л[?LesrM)n` f蛋M|]K.X{(YEfl)/89'u*{vaCEՀ/R\㑔;#N=}{~fD^?26-uluznHe{ޜO3-n:k)t=n 8q8NVb7{E8T,1XSy$DO6<jiZ4>3Xo YĈwĈx=xya5Z୺*9tKNzlq]٤8{{5kc[ '|֝F;AcI&i"13 2ROp}"L=:]B;80pePn95n墪'L*+Mx w Vߡia+}]}4ﶠ޾#WKJ| x^Q[WIǏE-h^qQg,Ɍ_,ǻ;L D#lJ񚎿҆Q|g?gݡ^q+vX i6+\q2.eoP1.ڧ_G*L >SZK߸mc员k<}y:Dw_buZ.1CEbtctg \ db1~}#IL,=:{:Dɂr*NK&טY{Dfw#.zAttolYȬve#C:Z2fvш?L8nBtV$GbvX".2"RF>#LS`nw;4tAwr@ v mm!XYxhl(Kڿе?2Q]MGv~́Ǟ t<ѣk:zi鮟({9;݉zqLFOg ?m`PF;}SB[ǏMy { /x`˛z ɧuF񷐾Wp>0NqJ h ̃b򨼎#GQ#/RN1z _3bBbŏ{ tt )Y@N^,-,-tWUWծS)6@h#5K,A޹E;[WAo̤:^Ml[SMl{dׇ^Su[­tK'԰ :%n$.,4Ǚ+EQ3&q#!S:nո(rP|MxiWCjNwL|Y5{IuwKΉhFGqMU_w?=IۀQTϤv@hZ_R„JTjjQYmmmΊW]UȾvQ˪_vu;?I-S:U'E\%RCw.7NsUC?{A܅?^~/`=Ǝ+g$ܪcj Bx<ބR&OӴt7 -9qYRNK+t<;=Euw,Ƌ@E˗4kYŊ}GQΆHȦmW/m pq4uքֈ~mG,N^mc*3FM:JxnIBQ?Q+kZ&f:i^9= W8Z>^d m>t#F~!#p vWSX Sz{LVսRN5 WU1}-{~~5 ڜ72#|7ځ $ջ'Y9Dī&+tR2$ٚZ)*o ǺBQ7e-Ƴ3s c>F@W1fFDII9r&ijA:5EA-! t?f^RO*lkNh/4JK#p@Gu5aVI)74)@[ o)T~}e+NBRe~Fa/[ߧ&LF}Śx?kNl|UQ_6^ozlljBbcu78 h):ˣrz`Fw:UY>j(y:H|?lA`q%ޛچ \hg1k㽓0Sٵ7\p(vAn ?8,p)_ŕq:=ONB=1PyYM>mD 9dq!Wpy|]պ5";;o1;ENfXSۼۑ u_2!c`q7fIBx#cs;OOѺX9wѺ`* nߊ]蚌3GDAt7Fz]՟32.F]_1U>bF*NsnO)afh!L c?ft;$˪]Wq ϕp狀'E4nMt~_rux]I4>a{N?3G t)Fӊѕ,sE*r&7 g O?Vz#iof~Ʀv3]tA{9yɀǻc5ysOdi>6 C7bF4FwJ,%#Ʌ܈5|T?LRPUumE_AlG92kB< oڡJb"MN6| f>g6޺vYQ3M;hDN~ԵEcroG *12fc3ZJ3fG{Eǵx"qkձhKhB%GQ]{PKx3t&33 n*Jn ^<")|3b^FXBg;lޔW~Aܞ6~ 3H(+o_5zC |W4tlW%@jgK>|JZp? ;v_{W7%ܐ>s(#%=>e N^7=z_ƧIby:1I#Qu$Ę0bY{̠X_5>)d=h/1v vPV~ JҪlc6 q8 VK~>Վ$HTӚ9kDujf^?+z-]_?tL3y23Xŕ"3sJf;lo̬6P"MV)r_tD#dy6!m`h*R'43z2z612mzUH ;1)j4DaJI[GLᣕx3bQJA(or܍N#@(w4PkKvhsTRcj[tCc,zcIY1%Ro@;d`M9Rf2^U Rzͺa|)B"oţ !RO8gT %_svL]L+,cALlVWA|9_[|wsy F)6 %XK`w4DV5k=jA/3(Kz{/PS~.{+S~,|̏;(hnmj⤁=)Ǐp <3~ϫ2_=,<{rTYc18~7.WK=^[$eO!V/rmZh\;T&–Ò~O=X jQ {qa;_~t0g.O{#跐x8,ߍVw RzVrJ=!$Keu,)QM_|\g&ͭqG&\7%w̛Γf~уX%imrXbr10/S& K:bh% \ EP ?\S\g|,ągHj[GXb0B<|iUoBL 03L?2cR\%fV\ L«[NB[ӂ[wjQ˪EE&^+3[]|=wFlE/6%+"xUz,ٰ4ޖ#+\9_'½CHxG/6*sids\S ޿o6wQ_g,q4mCg8Iۇcff&a3O4v1323a&]03ߘu2ln,16xձTnq~+7O 4m^P%Ҭ:Yz%\n1IUb9Ps fH)R_D0;˄ysP;К wV7}ö GiFznN7{;= [=ׄ|_{ۅJ )T-'.ڎpn|º3Fvǧ4 /o~|4:ئ_8^AecOKPSc 37ƻ];~=ٓxB$O>1yL< dE+\+p=jd|(Wԑ89~. '30'''SpҵU(' -_Msۧն[txԔ-~;cxnf8.Tqߓ8'ݛf;.ȋ'cڢC͊8 #NI,򻻷 ZmwSEއEŚؠ_ I{—)˸k{pk9ofXkNUΨ8&L|2Xg\obzirQgzSz Pca2-W뉻Ȳ)@{~|j82pl쵒ƚ-ԢcѪ,ex֚7G즸*vS|z;^h#rmto q9kuNjw{8xR{5:vݎgbAWg9j*K4ZZ޻4Ip9{9{:Y|XU{nqLEDMFh J4fr*Edxt+:3i<(,qLmڏ4@mECnEK nIw/UҎU u2̣^GCPô<%<֪09n+Kd*K*|&;j*^c{QF]wVMILњv'ƨ ц uTmkAw8௑>dYq<\1 mp1##5Vܗƚ:Jk6 n~FYaNLg"ܩ%MFCXkuyiDQn\zje(KS2ܣc$ΙD㭭ߴxh _'o0#Ui$eɬPNi Tbr˜<Ѡ P7s꼻BX_oVZn7/]_55G)apvq:i44X] g![v-z݇k+*(E7j܀"8%鮯 '?GUH޾ĢNX]FA eZ,-͊Ҥݓtn -yG4atK+҃TwLк#~HOz_&.%(Y"NFJu%R5/rss1fg I 7PtsgHWMz.wM+.5ΏUVg!EizWVT p Pbt iE͕/zgq |/DNf+MB퓀?>e֊ OF+;Z bj'fN]0nNF%ۣgmkA*-ݺ2 eu,j7x},5QezD%,;VӹnPx+N}-͘O+qtOU'wr.,q{F\v*^ c?3yXLfYq;?LQIJ67JSս[]Ÿؔ*E*.ɮ俜 ΪQ9w*(7IP; '^KFI$[/M-QKqѰO=qr=)Z9K6pwq.2=.27ʬ6QTn9~w\rPgx[>]r/Ǟ:^nRfb ߫/;#.qr#`&yV.@թT:Wvt.4t} Ļ0rj VEP*ɡIJr!0i~MӽuWWnf^\熩u;^5mFc0XOcnКӣh']pmjvv>٤VAy;KqR[GsiO:ѡcُnp_E=}a[O3%[?쫣z~*{uu6[]{Bv܏]qRqQoK-#6P fh ,Nߪ7 RU(WߡNg]_uD,GߦTgy'NE.Jzcގ h.W/ ҡ]Fiy#WG6'|w@Ju/-G{|jVf94Qb*2\Y\Ξ/uOn˽Zҕ :E ׫<^.‹WNaQ?xSyXsŝ~`VsNHRs~\KۺC?ލ-F\`kyMWL tt,Ir 7PǚS 77%< }Eyx޺AM҅hO*F⨧ǔ*8:|6ϱs6 u{j'^>ջo2#jʢrg+oOE{y;?*Q@她J׭P mZ rB-K?͵CqYi}Ҋ)N@S HLNNǚKqS0!3~bm{i}KsE$uK%Y>G{,BsQ/d?g|[̣. |e|~&rukXLH;l&OYA=aDEDrbxJ։}L+NvL^-,٫O>\~6C~]Ƞ++i]24F;n)}WY{DƘ j d]Ʀy`HIeSVaL+*v]LB;SH$/ؙ̂~;[᠄u.%qM/=NFIJ7#}IS% 845s)052[w4̿0$uoOYx35bb\uYo_Ie8~Ov]o`P?޹s,L\նZ ifhWi׬.w૮uj_?9FuppSxsbOr>|>|t_;iBg>|3D=י7љ7wOY_~Bgecv0.8س>ԉq-ۜp>?4^3OiOEcށaXLZOY.glgeZk D> ER/0[vj? ͌CmQSV5y0<+ =[i/}EO /֣N{{OTTMVHDt=-^9 ax{J9/N"V~@_Ԯ0}'BL-MN~SʼnBX?NҴhe)DV)@ 7BY1TBEe+PY} y2s_C|g39s;ӡPrx-vafqxArf>5g23oW츭uy՛yofNw[_a8 q?vS/4R]q׏AH>XXòx[m6?fW=Ob؏lUGKi>_)H&5 僶ƖA[hon)7Lj㼐gu~O1o⻳ 7AmR J 3>&+&1UȎMR*-FQK `#,x6 Ԕ|OېGkkBhbT=07NՃߗ[{2*rxf^{_|O>?#:y:ÎL1% dtp6I;{fV= vPKGQ@EV^Z~栽*k ?eJ?yA w~G~?9C{D~."sItT+}A _rrFC1r*i!sD GcW`nٚ[PsuK.|M[_FOMAlkn^0o_c٘fg^*6w퍄HHp}sf >d;MQS>I0p06Zw>tCB(`1Kܶ;,Qoy:Qp&hAMMM٤^ wx`*u߿wwD t[{ρO{VPG9)i}&_)dHps$_67m$U5=si鯆;,~7;*=(#f^*en?1 ü/xj_nJ$6'pGoҝJ(y=|_ ,էV'g>9ßt7~>Wņ9*x577ss}^Ÿ8$߆oJis)ٽ(54b̧Gt;\-0|w w`x%S yH2Ԉ(N&;~Ls0) I*c~ݑeF b8 ,/c"z5ѯ'֔sŻG*Y)X%͍.519">!*f}g3En z rARm.r>afԲp_nL}tHlHo:"Jq*}Qs"V=)Uѽg1ӏSG}}Ẓ۬3OdsSeSy!?һrCj>(DGփl?1n>pƋmJآP:s<+6nzrDwqO*%]F0rEQOo; 3`^9}ѦIaP?@?a4E-QQ o0jc~Ag%<`m=р5;\x:&;_<^D,߉,=(4 iٔtz4ׂo4,Zx>C25THT pmA\Ȇ)g|Zťu:[4ғ'b \qB8,"2q8̒0rmIQ.}j5J? ~N]Zw;%-0QR bL߬}/|mD{L,\ͨ@g@r. Yҟ?lY꙲Y94;e7#üõBw-_8PN:ˠkg6÷2f1 Oc8z>…g| 1^ð ?c1܎x7_ [۩}4!CXNx G. 50#V?7jȸ gj#_pqsS\7^YiKk@Q$߫iPD͹Z4J>O}D]ܕܥg1}з{ o3hMߪKL3ޏ<-?<Q \V#ҿD}YKgӤ{Ϗۼ'mxJ(7 g6=Z>Q_=Er*knFDl~E{Ñq[qj5?v2~Ũr w1 )mC2:l⽦g[Yn}gyVa\asxwDL|IϙGl3zٚxF"EY"tOqyӇFA xb2IU+i" fQ3M9xsHޛ8|V4 fFvLD<&&厵CiD@%~r42"$4ɩo#ԇE0 j[iS C)@1?)MR1@KV=0? ruŻ \Tظr5߭?:7_*4ޕKw Ga(|RЂ?;_8|tAmKx (Tw v<4o4Q5<2s[&@-% s7^8燭&r1̖?ҏ["X0 ̰#a=Fbfǩ ڣ^ܓs +U1GҤGDQ@-YUy|˥mX \璹'_g ܙtT"  f'8CDqŜA#8N-l'lDa $ {ֳzn&N$ VhO2<D|q?{2zkK*RIc,xQz镞9X4(b+]&g|&vϸ~{c5jem@%[p<|zԩmb5F;0HL5?>NFgE$'afJ|%"eIZIR-:ʇLɂFA;U{Ɗb4V:t`a\#O635j?Nzj*ju@]m}ʽX}zu_Q a8 JG8k dvFцȮuVǘDRWպ``Ml=ũUR{%5Ю5P9/T )W }*AmMK& @_Z@0􄚺e>?TMȩ-^ifB\ԒNZIx,ZmբmW_z>kxˢqh5$\,nnhZbʹ5^Um묙bqΙ<L4d쪻H7g9^+// 0&W.V~i|("8 i*PF.^ UxgYo Ju@ʍ6snx5U X\#?" S0KbO夗V tuD8N#?cBs~O w!6e>_mQ_rh[G Ky(wJsи$ǡʐPw+.UmyU,B$+Q)>7[+c">Lh=Y[ߑ(ADފzQwV A#Wesɻp*ehY#뜝ZT8~JM-~1gU0.U0)[_ SlS"&g܂U%(@/GbIUg8vqy[1Zuqu9CgΐV <.~8Ck}Jfx _!z_yK >tRTRS-Py1\/b{.5[Ԍ~oɮۀ#mwh< h68?Ef 9IFr]_V߀dGWs.9틳iez~ Ǯ ќYXj=UzBr[<^\|:hz:7O=4|+jnFXaX(Uɓ\p"bG''8{$$Ev ;0yt).U1%?@YVxC; \Ykh6DFL,7q9[d2:B -d9m2cUӔb+COZM}U7*{*VfurX>0{~S;v> Fus-ϙm2XV$pzVYUA1*Xm6gU෋5ڈn/ljwņ&cf4aUQ+탭/*5¾{ayjd4q>=s25k'6DŽ4 /: ]u2ź>" <(UiG<\|G<\e}cn< 8P=0ߧ}p+X+ZI17TuEd4(Ѡ]r1ȩ}T[@e}L9\pBfQj[]9OP=da8Zimn?B/X@Soho`ݓ/5 kOwxq-vn,Ym$ػz$D5%v7OŠ)QkMme<ԧ$s†15i!CS2h*I9P *Bv;,U 0&xa#[#98ûG50oxTh#jm#{151A hUGbMr$RF1qh_/6a\9%tb<"Y|b~4m`IBTX8ҡZYp@r-1Ԩh8P-n/1@b7ChY4=wSoL$X`& jаfF3J,k*Dr3B߅T9ZOmXT1ٵ3=c6 _N$0l`.rfU8x˸k[20t`aYi_PthoJO LQjZ+&sjO<-{$!KRl|#K)&L-"YO C8n[,#u$,h𨈃C#xi!Հ!HAܽ.WN 6 6?uL^ܑ_PweԂ_8CC2L`O_6'UD?Bm, R`_8Һ8`J<> <QU>X}rGφ|fFu盢}a{ϐq^P) f|-2g-uw|;:x XyjS`3^coo :.cc }OG %n*A, #j$W2xr nES@ۉOڢ3faEJyESqT]R/i1jpb8_6[p>d bpt x *'| IDd4GH͌etDbEtgsF#g_ ocD9ߜZOna2Fj}H|CKIU|_d-P.ʰ9x1qy+ŒhbcTHt2ru~d.PGK,[eQ/-M7}dfL"8)~E8  jO!!4N v jr+4-43w`サo'l$'{xqq7D'{3o`4TF_=݈d v1;7sXX;m-_fkKd>*qԶ:jpv^/ BY5ų}7qY06|oB?KHBTM|z|<N[lg (xL5ҾqUʥ(oaMM\IミOa#kڜZQV=/K]3{C~$2 og(q@k |+:֑ڒ8p Xc fGp/?c7~~JSs o&q .w0npKof63|/7e8E9^/F]ڦVתiNj_gx\wF&KdaܺµԺB@j|w2V _poe$po '1kGk>}BKr9+1>?3?˰G܇fxHK? 9 prAʝlF sh}F1P VFndpHѯ]è(_aX܌vg$bөCs Nه8Czu$:8̦ du?!QKqν8Xk춭U-E--^ԙJzN0zaw$Qm*L%=97\A/wb@"$.GY$I"=F}70MCOgBJﯪY_BSKam4FGd;?EŔݤ)㠝)ʁYUm8&G{*g_n~WH%tSBzޠ _5qtr>Mmn0cUm7\>d3 {KN:; TMS(@82qXn'Јf'|_/3`Jona0q~~߰޽ TWLK|֢U#/ҧrWF9X+t40+eЂ`Kz2}p}28 {d2AݡLðٿa->&(/2~R'/>Sׯw4ѠRr@]>ODŽ(d b?~g*OɃ)3qiU촒]P :҉* tѿw;g\Ƌ_%NıFLOJeFh̹Xa ,yWyi^5|}><^[7UHѣ>G`8B3=>ZtN+?<neq5=wݝnX5oM(xX83wŧ\0a l5N3,Űb#74Z$ɉRhdw9W MUTyL#TրjYעӫYj m~bѡ`<&iL<O`+W'"zt3{C) Ed~2?4 50%?#ڤXe]*~,"Z  opw ƾy失E qQ3+ѧr4+y/&#{Dqŷ{ Px sވxXjd' 9k^ o!>Nmq`U/ ] ~NC] PI4enM+TP8czoBuWr[:_* *$"7:T'6vKjQT8IT"Xhķ@%c'WGr̻/?oE3+ Kw#mE0W Wb݇EN4Gr j/.m)EIc5Ҏvw=w9}ǚ h R0eVR׈N}0V8OÄlE{8<\D*t/AM8WPvqbp6=:нؐ0 `پFAPKb8l1ꖗ Iۍ'IOO?'ZyNPP#,'2ҏbv<E q̪Wvwc3igZiAt)DՑokI-ݸs?a=N+"BN'ibIpR_(S0(cp_܊o%|1Cx dz2gۋlm=GF1Zhɏ}/?)F2gtDatcm$=w'9 8q(>_?~Z㉏~!Y{$v1ܮT_u`e+HPvUf;[X?zhz:/.V5Z T*|.$ Ҫy#*y-LPp^]@3}?._5O؄tʽ^^Yg]iė@pU Ɯ+ 3͂3g1 4) 0 PP&L8ޅ{ԟwbQiȰKo[v5uMT`* L K7rZ.L3^.1yFJfa]~}so.: 9\O*ȿqpR^&J0(~b}l>/ׄ/wm[Ԏ.n7)5!#z(U}O>*jأ- `'RX$mL>O˜`g 6%اۅgSsl?BS_Yp]G*ؚW! ֶ;y!\%|מ+UU(y&FCpi){p.ؙUU]H[(SH]_}ᇩ~p7l_J8v ex}Q [ CuHW1g y?f}!f<ó2VR}}00:7Ju4> f8ր3܁KnDp^̽ >|#E obx=?_gkdxz axN5(7h(y=)3=n g1|s 2|5í~рʌj_= 2l)|رF.e#-xs1p1<#Uet:c!dpO/-p#n&Mά`~Ep-|Bfۋ!uUWObT*s,Eŷ;S͉vV-7:Mʕo ]Vd*{?5fj)Ka X3䞧=W<8*Lឪ (!,yZǟcTA| XQ_Ϲgo2|G#}%CaY"|M{f/eR*g{.o~,j?35F#mB驧$dSdE2twà:ɚx?Z?/ +ڣ:fw `10>`WSsL0TY7},|ώ@4t#-ondH@$g4t涝ʎ"~e2Q(8Vp28KvmUӑ]ܰů\mS(UVef?ƟX?OHO}?÷1<U 0Gnu}{WZvm+ۺ5+,Z};V}MZ9+u0^ E a{>2D`N`~Ib)^e+."=x> L^@G.'xns@ɧX,qP?.ԈYK] zoPyŹk#SKBKi>Yǐ_N]WgNl)iZ%@UR(X^1z ֫'XL:.^-9v&^W5Uiy^R^5::Z/"Y^s\\ѸFku3xU5 3Yx2#3+3A5Tλۛzg/|kS5|ԗ~~5#êvZW~ W-(^j2&mE0ZhoZ dqEfy8*>:TEDJY,=yُVzgL.`i'b^ҹj^jOfMeOc>º-SfYֶWObz: VDړku3h v -.mmш2A~ |PG{FGmOUHjT,YU@V^mUg];ݏUL"ȭ)U>"P\z?{%J-wj+BV6*>S}k[g]@'xݽL?LS!t1;eƳ2 L5;S䞃Onm@m^@_+S+MU,,I0T?]}`[R?x3?[Ԭ_waM+M*S][e+ʂYږډDyS g^c1c]k|9I\36cpO!3N, 0n ?֦ ?|=mSn<O]>]lxL]v#oG)3/Rn׉`D*o*70]xfe2%+>9Oa$wSC\#lvѢYEo}O-* .ڣx#jx,! F zH,la[B[L \~9?) k{؊h?ȁjscF*)gwCσB8>8G[``y:25ϱ 4l?a1;Uf=ؚ7--Wĝ1q(3իx[m=yc+Fz^ڳtVYNԬ>CetBD `dR&n6lW71?`JYl7FƁV֤a/U31լ3c\fX+nX{qV. [:'cM/cm.]ԀhY mR Ty*Qz Qή4b+vYEmQҖ*uf}xcN sj׳m.r_m>(T/W;]ٝh'R8S3?~PQX$Uz2dq[!mtWsnkޝ(/뮂E,()zU ˽M[.6]U~.a$4v%M'oc<.oRNJaϊ:`*'Ƚq(Pz) @ cjuGYf+YOmW-椨׺!hrj;r;Sr{r( m)y80(axh[CRzD4Asi?S@yn5a׹I7ݎePPwK=AK\G[^A8ǰ s* z+rCN_ś6RE/C,wC\8',9YK֤xt$bF.@T2phf=(,TƉM[r+3GŽqCgɋR D>`͹ I1YP>I /]69\hUp7O᤿bҁxH)n/=ʱ'D&_yEq}i]z,ڗA<_蜙578Ħ[kIx rS_)cb9)rSG=efJV4N% #cHD6^bq/Qo7j*]Z#&NM '0f-1)*moؿGFc$:m7/??1e&tnwIv=iH[NVlWM~ ? g[}b#|0Ǻz~DZDN><- >q2T{,QYR˔[eI0cPIЪ0q4ʂ.$iszfuzTP7͉zB!{~Y7~eM[UKDWW uHqAգEKE[h% KZ?VdwCVV&(뙀LS/*}4!8͑oB2AeQ䑔ԬmvEЧ5`ZeFiTLQ ׆~E(g^TOk:W*5i={J=9}P4" xӵoEV:V s*Hq<3U׊=܂B$[9ixc8%U<.'TQ>W}u7޵YtciǼ-``<:@m.WU(^7~)Kl ՙ_FAѤb3Zu fU >Uг+30A-.*whp"{ N4=n}Lv%( @pf7@i;V.ɹݺ lq޼RN|lˮW*ָ]Y\VЊ3FV xާ \yXI IЩ֜`,&^rH8r( # 7 ;_8zNދ1f^ݰnr9C"g+3lh/(xcQe7;q?w4ݓKY,M9/ufhõ~K7?I\v /57vXsY"{&‹ydAͥ3G$} :b _0|7[nnsp1ór0ܚW4~ W_B$[nbAN`_%ȸ|>2|6r3|o2O,0*?,їaϚ@/t6qg8وYr̥K0:1m+먌< QaРB,CQfwՃlCt-gǥsCj)@vt=]f|) GSS _:tϚ/ljYmٛ4Xj֛t)RS$#jˇ#ߟӘ*yV$LA.EOEg8qx7jԫc͘oofo޳^IEoٱ3sj`pBYKK6F3n_B14$=V27dK!]4HoΧ4oT|{KYB'h)RKI|q4]NJoV+΂7C9AԾ?6hʟZQor|قV;C}(jY$}.`1ғ ,|`[gs=sE<[w56qb`O߲kBrx(GcwA;ލgڀ_MP ݥK=-EW\lhro{ &lOlK xFz$؉:'=kC0ve+vVp(hl] Ϛ6񼄑Ǜ&—۵8֏.; J(qH}h۴5tZT%(Xٱi0kpu%C\lL]>qfD4e&:BJ~M7ÛCu-[lۼڭ*b'C'~Jf=#u2XN].B7`s7?ѽ Ѷ\\D8/,䉙nZ'F:ζ;,Oh3mD8qĠ9{xJ, 1LHεR ;#k#0` eLdVcgqN`"&o"nӀ}(T x.:s  ?1GEw wZHgmC7͢דm×&ЗYz Jʴ2,?GjK#Q 4; :O =bXR/!3S2}\aF.A^%,W{XINF2Zl(;kKD2GQ*YeIM)8> ;Vʤ]ܻ>ijPBkRKp-|$s1;Jkx L/gXLXj+%%it'yJ0%ݥĴckObq?AץŞD1B5YHQNzfg^k֖܊ o0g||zd\ OJeGܷw&iz`VL>~ ]ա,d:?}C6*wB*= Fйk^OŀrHdͨ-Hf!ϲ:'ym<?jX15]׮veʜ"\UU3A8=VUOwǂMPţ7n̤A 0$s@VAuu*r~EiF,#†5s,l"K8Vڰ+&Ģ=f#MसHvzmiqZg-UJ1 d igk *.l蛢leaP)f>5TPf=JECƓ[tŻ%c{W>2\H3Ӝ9iCܞ22+o<ېѐ աye^63{Bc5bÂåcU3S5?~K)3WY C6Y}h>cs3( " EgQf?y}4ֲ\ݼE7zQ z;%}m) MnͭB{V=}*7Z{ںgR} Lz4ҬGtea~& )%YK<\u.NJs.uy&>U|*Ei2C /C }u8kXi~7r9V:t}Y Η.B67|EyVԿcWN׊'4bؕF"v_0[GKIR>@uf0cp+-Y B2-bopf1n͢O,͵-c@);Ey) ʃ߆~x;ϰ_/lKs42𱁿#ez / #bZ s8[e(9#;~VN?/gdQ8`+NX,b]L=]lC hɃݹw10.ov=zjh1$bCw^YʝT k >,0cOusֳ+Ogs2N߈ӗ&ӯ2ҏGNRW8ne~dz`4Fp9ey /Q1n= Z?V^%d+۞1-g8W:s"+ ̴?1 ?A<,=G&F㯽 1Ư1+M2$%7S'lEUiۍ]2}}5DM vLLN|V<-8Ku tZ OA{ NU԰m5|㑿h~["?M@ADO6^'qU vϰ4OqܖQUJQki+WY*.ޣ'X 䪑q\n_ћ}K7+0Gp~eE0wϰKK[lF:je:SSM(ISXmSa}j9OP}j?)`-*|WDw&MjJqjXRD"7 <)6X45X O< w䮏ѳNDWc~n'ïV0u %tduZp+5xwW 2Z"rmzRO %} N_M]s% ] =^sSlR f YKO gmO6"$ ,>:iU#1Caж i&712y atg㐋>}uw:7D PvXt!kp9[!n H;qlɅ(mI5ibd XMaoSXR"TXbJм<_:z=N]TTֱcVRR&IJЂP zp/떊'xJO^Jm!pD?/]I]Asz╔5u/}W0╴c,NzUz]bE~]'Zl0oGiTF%~=h já`5SJ*")>} t}gedHy+Gohô`1Rg%֣^.ף\C4='8ܨL)* p vgN_I}&NI/(3_̬A PVu<ŧ6^gU?a "3V!(]>ҏ~no =̪&j6 Qks] '~Sp@ kx_QZ__*|-$wLYRfqŁzyH¾eqZt> WGC9-:?LgxwUsoNc~u?kZG&G–q$$O'0RҲijSbX&%0kà777Ǚ9c5#ksƳ"Jכzc Oy'E1{?;cı^6-rm80y@"aWY]7*a>^dD;U"YoxwAӕE`[㖉;z\`gFt](FLznvBab_z;'ih7bau6}_@\>~-=՞UU9|PgMFY14Nی}]J]WHD B(a[uYl>"L?'a@>Xc6:ɻ2o[)>Kk˥%+K۶ M^g'}4xWKc]V_HyA昹GNN֊b}Dw${x16+3ߵmWβ' qSb{Vڹ\M2(SfSޘ22?' (ݙwwpeA+Nto VUpq9oT-m$-v7iΑ9MH7(#Rq׵eey3YX,fِaE5(ˋxJ%hgwA n)LfmVfvGfr@:G u00Ĭ1c{p {L.փ3"u+O ?›Vū ޏ'h*ׁ,5@Izb6k[HS,ѣ%' 4̈́s3oV[9V5cuXjkg_^nZ3b7p ރ&2A-& S_0%;6p^ t e3;AZ@O:fwBeVKhEXe`mh(!5x#JkE%Q*zF{P7{3ojB7nKX[xk:rCga"雪Co'7nv]թk(OEֳv!áuạc+M[q6|JUވʎaK<_-4ko^TkRort@HY*n#?=~)T#"$vtNm DJAj\ :1.WX:j2VH9Qp;"kλ>fڍѧT͙:Q~͉^ ȸCJ)m*04}(Ϝ*@1ݢ H_O[)ʺ9kuhiy酮h`n,W8k,p~ځQm&ô2S%i\` /N``FԦ%9~ft,kn oU E ԛT02(n:=- ( 12k47},܈eFK[W5jWb$vk#GfU7&iwBMuh trXY(*]7H2j6'6z2ܘ:p]OY,c0pKdn2q/`@ N ,6G2 ɕaZU_& 33(' j(CS?&WR?-NAqe;$6x'-#&vGzM|&6/Ė9؋z@? $C[~:ǎ;yq;!6^q;~:&-PKɮm ~YçjP&6 R/[ְyPo:i Lf?ױPG-+=kȵϘ&5[P!,m<£uHZ/b,D`%UL OtڗKk ==r|(Z2oO>poG"S-nr~`6Iz'CGGȬ%r/AYXH8%x*yoaumI[l3v&  sȲNeͱ.~A Q9-h>0x.5 fa\o1S#^V?/A-3rP$B'Y{g\dN&Xpgce6g-JyzpݪH^-N+Fb*^S0w )W;?6<#:<.2Y#_?܆hG}(2:qw8J2kfXaxolj1|i7O~- 4 Og;c~`}z€Ļ"p;qB 4<w|*fSnZA^ŌV?EP諌a$WV(J`M N'{b0Kk tcfxEfF6ch V.'tɌYu8I~}p)/2{h!K;}хɢ04MpK3|v `k~߀J p;0l1?36&Db2F$: wF.О^FIRaxWFSbl/NvK _\,aT؞3J~hB'3cxë#^<2oPT<3?c `l ǖg+.5]ۻYp_G+$4~,F71zm98>G15i%TPb[' ۽=Gp=1G3DM 7ÿq-CTMR߅B8|W RO2? 灔5-IsO8dvg3|m8TblF3(ڎhF]NɒEGl6[*;3納%m_ q_se PEA1:E>+'v.H0ɋT*8z2IJ5bq IfTMOi5tXo#C0|{!/-V(%P]5a-b-˕^2>aVnۨQʣ\U+Pg+4.77YzYoJW.w%f Na6ݣub1bhoU[tP_[BJJV,߾쮂0rvRctRx:N} ?=1o!C.~_Ic9iN:L8%|8.(0EՑnFn^\\TB{l" `x-u3GN轌f3:єdѷ,͆L{"N%cxɧ/S\O‚LᅭFF#?V+^= .ې,9t5S.ᔁ Yⓐvura..~bυN q qq,QuhbeD՟cL٘ k5O'.Aɣy+[R_dI|u!U >KVawջΰk +m~ Bi|٢A<$22L cŲ_,b Ls2:eR1rU%:ѻ}ב4}g+3iY fc%܊_2? elt9]ypc7"~ /3b~i}_jҮd+]7FI~ވ?w0F uF6O,e~ ߏlB(kmh8]Xl8-}vyQ5yDGLso-?pNcVU 氜I7c]L,$>N~1 ͤftzT*j- n]kʣc,:̖9~ 4xfLo0+Z t D`z'Cz94Y^!gC; } th/j͎@=W\-J_/(ߨ_Ľ@ ?A#qص8zhA$GVpB/o, -3[7J o5JK"pR&.*Cۉ7ơ,I#s|bJL:YK;'ŚgTv_ ^`ÒԞ# Kz~MNӓ ŝ&q-P&`Ve㲦sY2! GpKof'nBU5Ýl<.ct;M1z}ΕC_]0Vfrbpsi~;s9&/A {&Vv6c_Q~e9Fa3S$^p3A pōpgax~' p"nMc;]:Ѫ]@>B2FfF͌>+E~B;K F3ݲ)N`FgK =H֟qG:Hk jS_EPAT@?{e~iTV鄫ze]hPXA]FC% >Ejg6644)NQ/l-d`;P=J+3-EbI72ԅEO(P}j3Mn"ݖޤf-/۩:zpi!za4W ~6S;NX58g#ef?zio_x¶_`;~{]^?uj?8 R|^R}*9KCYzt3-Si+xTgokfG|SFwwrhGӗ{)}L늊!T%1QJ)}0;}Qel-;8*E{6:fwxmbT*Kzi^GǞ+-`m\&1<αzBAVυ+q[hura8ʳ&{vTEFn6 rLzZ+L}0hw?sqc>#ex$mKjk S8ȩUg3vW@2KZv*4]zF`)L6^ӜH(Izru=SX'#0`9ܛ*tJ?X Š݂.wV]zƜ]! Iy`śӨG&;)qr|@*ތMɂU;c2vm 7&p' CoѶdɺJl&}gd½wBGwg°«@y-qipz!H? M[^z!ʳ?JYjS>dR Ϭm/͖.%~)xM+)xxkS8+ ..|hT).A^jWDW 50YDÁIwUυiwI&&˄C&囨 ;c[7 P7ViLXGYv1B݃|-f QĝÈ"4.k1/ H'D$ }vSֹcpCO)^njE0 rOdh/1;q|TF3{>Xgtӕ+k/~>n5שV#ei%5VV̱´&˨2ZEQF.xUC#Jp2z&㭺`\ЎnHַP<ֽ [\ =؎NI 衔Geܱaa@ \X{v.;!'`Nq._>pe]|?n(g S+=f $(=UGӝ e_z[XC֥̐okIN I~K| [Z_í8s7S ÀUDvaO&^g"[(j8/?*W&rԽЃNJ"ƠPU{Y˱t"OGLFJZ%dI Změ+\^̩f}ob7Z {3LgUi'}>Nķ>]m 2>Wy\Oq{`e?8 rQ\+Ļ};NO !eF|e S&UfePYAG2'%(3@cȳ؍<{ c(7 q2u3|j|v8DN^9zLzqUdoԊ =>k giM$8OPq8e,_/q9}/N)^wp(6,9J6&6$Z#6E7J0X,o4\Yw"FIie'x}+C1௭YU@\F.9$Gszȸk)WA_A5/04>m8I2֗ 9xсssQ_~2˫q|‡8=p'owC6ddW2o5x3Hss?Y|F9N3ng=-[N`x_s 1`2| A7v"5zڎiXO:l1.*vH+Qk;k=,ںk*b@Wfn#M' ʜܝN@Qman,P>1evh;.oGgC(gS<*۝-o:}?ոȭ=G K'LgaAfjK-LviVSbOݬ>k1;T41􉨽XP8>̉> Qe}}41td:_D f؄[֞[ , [yj 2\ MpE_6k?T:tMW(D! Q_EF FЄne0Dhc&rBĴo|Y#w c3C,M_3E $U. ̎]u}LIB59'38 )]8h ݌IW=ƒ@CƪVIo~)Ѐ\q'x8O݀`2}zz,:,:75 hsֱoQagMJzwR{ÖR 7>xBoӏ_n#U$]́FH2GI{`@u(mj\Ry SaXanT?Mp2y"ʿuGY`v 5kCȐ~+r{9E'‰ge0*r_da{ IFq 2܅F2܂yMk71|+U=~@ '1yP ocvR ;ܳ"ٰ(11C 7'{@i9L fx#l9g"pr>I8Fh`w>-t‚"E چK,*/ Ekpl1H} N E>+V2D76nGvާascs3>p-J9T'tXh:}g=GɉY7F S(aNW" 9Q>|:t/I#B6$ƤQ4 <9~Kg0D%ƁzS\'h5& yK !3}LOГ8\kTԯve bM?#;ogg6Q`˻'*V w<|xdJa&짮=$*qM㹦ng{L,u?UzWJzW ?ԕ1f_Lzp 3<܀0|d8*FYԘƿ-,rlogtwn@؋AY1ùFK = aÉ O`Np%dp^9:8M.)Z;<p>Ս S`͌Vfk WmW pMK>2f=LnruŗOs4,Xۜ6>} FF᧭g5SOeYxw2,U7b߽ p :$֮ fCb  Fw؏+΂pt@1aH`?G.·ao$1]in̗_PБCf"植RpWy1sDN6J߻lZ<ӿ%27'N$4c3d|g }):3Zh?vd9w2ZT{)̢NHF'{D;aO3{i{"3p7m EB ط "xQ̽icn~jVoȾ3!%q I<4Y2"'}7C*??ɟ@uhNTs5OY"7v{;U]`dI#hd83gDʽ8988ѷ鵡=z!\p/(!9Gƣ\Id=0?<孹E9q{$Kj;/ӈMqX:2[Nh-xO^p+.bXcso1xoj4r'ů- fxݐf g0+",~d45 XTW߬,1Y8>5* &+A~ЖOߛ [w=>;RD qȟȏ%&mG .̠;8Fa3ʇ(1UGcI Uc-{ݞT|~-5f57m`7>oAy#)}N8\ 4*k_Z^Zr\y5TuOY˕9x PR}ХY;> l垍z/obg Hm3D'=xO/ŻlϮV{q`o[AFrf{d[ɀZ^(}]/JlZ6#Vus,mfYf6F$rP(Y_Oˏ 7m 7U?hs>* .mRfazrpRa<%x6;Tok=t M(CO8< ԍ%O ܥC.+>'&naíw@~яkwM!o&k6l_+W0B\N6꩝/n[s3[Nci?2M k ?'!. ?c o@1ܗa >p72ܑOʦ|FXrfE>hoI(q9>tU9NK c/`U!wC[޷kZmf\X+3Oн_TDʛGem ԂjԤI+:(&A=mY0rayk|iT`m(@X'30m-볧#Ϸc\3.?;JtsHn[t!,\x/wlKuFbヮLaS~5ݑѵ=/H6|"tF:BP,6g1# BꊑKw4 Wc6Vuom;fhH?Zto+F}/!LR)u1z;v7)VdVh͇0)0RTM'O‹1SLx4ٝo?; 5SwIH_)Fm$M&i`a]EbSޜ{sF /~ݎN}D!y>Ei(z޷}aa,ČNSgX@Yj2` K:jriNrJΦ2C _Ǯ@o`{'d]C +:G 4\oWFf-?oN%L Zj`$ U|v|o8E^MTT4 7G\j(Ba$\)U\S D ՇܣӴe {{#1 nϠwJ@n,KiRLfbn:`(qB C/LsKze8rk/巖39{)fu:L5-(kK=z1lѿ{Wsy}},=Vi6/y_0/Lxa^H*f60.ȷ&TnK]lv?9B3{]6B$X;gP}6[b0BfTQ2 o;iO|MпKW 4gpijeN|Z.jbF1vѧg]6lf$w[4 zxL]Oq)WN/DSnzwc"=?_`4ez+)F &4|xZ/x b'[ъ[.ף_a!>uMl+vQ)mL%6M_be{u[5Ï)W%xB($ qh'qV=G=6o,4"-ŵ PtAYv(-vɥabJ${bHOs :$G 27zϾ> rD2ڸw$&@ƚbF !G_WjnZ#ZJ hny64Iդ(q޼$xJ ;-oOҶ̵&z[\k݈$oN@UCg$Q23ʕQI%Z~<0`+pq@ĂPmxWݸC@zcN&{9nCn]RNMh45I VKqJBZU LazY9PenU<~"$-?c}ag2,b,o1‚cܙ)f>z#x(ph#x_ %ˀ~CHJlG)8fnMÞRsRONCYh>.v[KzHx@y7; 8~`=!yR +ljMN?ےHb8 #(UIGe#ð}Qr]-*? ]@ lLpU)C.4-r û. °% KTf`o3zfnvd*1-3'>ѝmɨhOFK=>赌.[=żF=icpJX-ˡ6ܜ@>I_o|￯y}1 FbCNW ϫ'7!Ć238wyZyu30Tc2Ȼ{ p ʸ)T/l dD/ڼZn_SۣS%/I~*.I/^?vT*󗫩[T^> ҠqV媿*DG" l|~;nONGZS !5*EH>>d+dMU- Vp}4Ԇb4&71q[hXF=1* C1$!!y"du&bHj'aTg @9jOq2 Zhns㾡Ry&E[,| Ih`崙5lOKPܝh3 /LkV:ǽdϘ}ʛ-+5I`=t˥HԤ<:F*8A010kJLbA!ArbojeU/DHjdܖ1m$jnNvіwse"ͫ&4@{C|oB_x> #3Rخ8#X,~%9AzסL)R|>җm |N\G:$7wo7MfV'?ߑ/䡭2yqsr5!b`Gs8}2y,TOD1/&b̻R%Mr}קG]>$Gx6fy}/H=MͲ۵R'[.Dij@㿋"5wYz5]_EW5iUy|\56h)jUG|էyN5yUO ||8MAA3&)3cUm"1> 2D_"DŽLM-%vBvP$!bhˡ/&aÿ &C380B19T˃瘴'VPPH ]`yk(3";)AZ `'0 "gIV7 W9#C1sQO3@!@1@@G $:W·|CtXo:_8C"g)6qt$9hJ +ӿٿ6OPbN~nL>?F~QeI 4] v'0\m 8&SU 6>dJ_#hѯ[/3|zK^lDd=`F8_p_%obm M-*FaDs }7 Aè܄RFc" x 6}1S^P?FxkMas2y;c`Me 򛾤o-zèۥ*҇F*]зGJ`>bKi$x"ӛ,:&g׋t.m쨈GĥUh!\J@mMƛc-9R/x.4P{cMu]B/UDf\@S~w<t:f.|z=u~?ְY7(U - :L%,vB;Cthտܬ+]Dy}]^o3оn@3ͤѸNsa$UAJ'!d\nF8W[[^V;?!AKxjdUgO?ծ5 ~pҴ }V C9 }8̰PZ鴟H+H_/O\\t ڲƌWPCT0%feH>Gr=!4N$_"u罬 erv-͍ز{7C~`j Y}Jv< T}(=-b.LFeAF+V u0D/"4x51zG@w3XF@:(1`u%d02tub$*FF=[W,:ۗ5 $Y&:#>'[V[햦x:'2򼑹2qS.h$|B|x !]f)ٚpELR &|%s-&|_:%& =Ƀ"X/{ }] q_h= loEc {ʌ.UI  s_uO -S{Ko2p?C7cf̎ rpʱ=9Ds8$(7!~uyAŗZ8# %9Sw8K[S^ي{CKӡ>yuЬ[;'Υ^T3VD %s5J_/b-qOzSO my<ŇcG"'ul`x_ٵtak} $s3sS쩿=;X׀O_&9r`m/^wu†G?'驤w-͵C Z:EO.N#s|o67A1fp,mzzW@">u ?Gb+lhT=ҐYZ a\ MYnvbq ~\Wcqq1`2g6SwLP&Aٗk^؂J!GM&q*Y ;~V _\Ү zB?z9ٙ_|Υ T2DFC3z92Ey`iF_џYr;D<;9rID.ӏ>/&!pm0(/Ybza1nb]3c|ew!S2=\*\ǐUEL oj@\.m_2Np@xӍىNKcvRsFk<%Ʈ7k,K?II9Xs4$d=*};Y}7B(zowr\zB-pv譪je΅.;-U`luEnױt;//aR(A+u{gkj`ef,ZsO$hh050|]q'0۳ltu%1e`-d4;(s2Pd[mP4h{W|ogjw4P={ok1( %<5d-5G1R3?><=@|)O6v:}N_ ɇ5񝤎&zH+5@bD-thQR̚3;a۶#XiT<id:W|7='[mwмxmwb}Tښ {CQ񵻑tNuk̺ # ).Q 3TrX?ރHcXr{.9>̐;ΌwT2ї7;`N^qq@;_L+KzZr]AaسfGFa($:墵hE6u; D(uVp"\N'̮}}f._RɉNREѻA<ķ"^vWbPpԧP -NLNEةMT6(9_YRߙ WRU_O'ȯw~.pbx_ i~9\DWE7'ӛq2Gv{n5ÑۢzgVAjYY3߮xohAw4U0]\nWYCR^x5{Zݦ&unpuygq-Z|R6é4$qo).{qN֯O`BGfIiά8ɮP< d6*Ftorٞ5qܔ&vm wl:}%b[hXsoE=L&d  WD%H L`'/DADEA JpfvAcUwu]O#D$@ȡ p1;{zBdIzUUzzj UpZPܮ:HM{_JF:-0?o O;6qӼ1Txc&WNh.8EGflT:׹mtk0J)ʔ.^W]A48ЇCA+|WtgwPIi!<C!vLq5ɠmdp>A4(ӋDgS&MBw3.Bl bcfVyltd c^Yh; LISjAEKNBG^%#&y5 LF GȌy[|38n[pX 9rq1['A BhBcQ9g>/l/7?K}q钿r<-@* L:$K} 7g#01Hiكd*w"eb,9j:%X6+<8$~0Pb<~.'BzkM47 #\x=s 2D]gc}Z"Eboю3nN[NM)l^\fkҋ\ٯWYG/Уyq"p1&/O&~Z۝N]xhE}4Q(Y BםCD::X6KV5ѓBHSHLTsJrW%e]YتNC\XKEk"ZQz">V'TP?:' tR;ﴕp7YFk)l 3` 4d p@2Ju,I9MD|xr^9g-rWNWLԦӓ:]>ۉktQ~eO+K"8\_E(ZRӚv%nխJ(;? 5ҹbAEj*C9T\&5 ֙ɏ-]<tNB;]+e؈(3~^jQ$< Wt ˎvr>>!W] OQ&Úz=C̨#I VL&PLzv$g_7R8v57wZ=9L IuTa2m,Qj1}{ }FTPʺ#2LYѽ>.31%*0'1k~Ҷ ;9:+s Fs#;O^8JAQ $ވ47DF-~񽧓~!3\,tZx<7&gȹI"UahDͨtnMM@@GT*,L>ihRY\ A] A&Ŭ)$Act21wۋ؄#Kf7"wn{_4߳/n/3Q-,] (x@Ϳ/Ņ,//az-shff`[wTwdyG1x-t cћggq|x+"Bَ6ΒDˮW ^e,T]a>U kY3G_G吝,* %+N vxDžp(Vxt?齒o_b8EuViw8{7wʲt7Zqg*Lr7g?6*Xcy4{.n|4uv7oCʓ|[F9JsY zD$>Ci2\Rg\|@a185 uD`"Sn;Vp.y*!wĵF0ɑO"#΄/#GwKwZ|78N\~|VvĊjsJ]9zj)n 6h×|Eqp*}f Љ+\+?J*~5V_ù;ro(~޾G2?ŷ}~^+=Q|ZtDca3l|(~cXx+Z+Y3r"Ac}Zs:Ҕ7,BugD{!v_t\}VA8v"k\K5Ly+\zV:Zk_çwCXgG38g_R=Y.+{yoKW6e(T- " nmwv3P,?` qڪָI_ߒ"zpI!}il9T*>ͥ5{7:')N_ORmd'nA0[nnh.+1|Nqshϓ .4}L%`3 f4L*/0se7ɷAaN~.ڃy^+3:1 z^S V0xUnF0'1~\X:>KߊcBaجm79VE6NfaԘZIiʨ\̡bZ߲]fbͳ>MĬh'h4W]y+| z|v/p@b:i>Eo8G3XAaf0%  mP\ 3i(YEG} ]2W05\+wαyz{˝j_ED~;ga(|[s(w6׺5{[a{ۚ\[3>3[M``$gs[b^#`> K ?irȖ9Xf4l}Di*s@,L|M1{2^&YƲ_5>Qπ!e2G- 3_ӈU-il2~ &6܍%˩~?'6jD8QݩctW|jp,7x`ff~Ms&=Odx0x^! V!y~=.,q&.7.W+7*Z"ff\_ i4B%Z 'ca<=I!{t Ty,oF VE9\>]-"PJ2bf񽿙NS=7 D'7,ppQ`< 7oeyR|e^[o&bn I^6ΐ WVa_-')`/jH|M"K|БṃY|1דl5쐊NM1tEN|;tI+!# "gӱĭY&s=Ms>hWpNQRGeilϚCNz7"ǂUBz- K7kfXͭHyQ6柰EM?FEɦiW3J1`zܴx@@LRtegr髻[Wb"x߈eшﲈ3W ;ZLo{V;w572ř{sڊO>ljEOJJk-M7Sy/y5sE2/Ì:j"sƘWgU0_N\)skLMM̧)P{ngHvAI!<}RI[dUuu|HL|q%SOHG^_R%.c7/'?Z/%nNÔ~8d/%aĹHR ~v,&ҟȾWgJ&Xbo'm@7œCOXFe&84ZA9cX˚*HݟTfɹzW!! N6c^۴]Kg}#P1dh7֯Ϟ:~Ka]#S;)։gLs\ӰwB*("'AoǍRw|t~(iaiǭYX ABkc[Gh^7cSCI}iH"h'J&h"?tPMHfQ߼V詃<-u ~PoMl,]WE%4S* GP}V&dC/z:eq㘶3}D͓40x 7 [Af+Ibƌ%3*Vrm"E(W0—  ᑽJ=Ry$C" -C1n;(y=% ;)m#Lg/cg4K080Sp[z/8 )DI߇EPx C~/53Np c9-ѮP{BkF?#Aʦʔ(vtK>=V_3W 9`1`.˭L)hF\.tw2qO\ȼt$`f*JD,05%:F(mJtq -Uby2j2gMK`ŝÓyUO]jgzɛ16o{̌wEZ`6,1R)'qz+߸QQU=Da:-nH&%/i p؟ΛT&nVΞ9AB K %Bd1Imvrʏ'k&ge1)O._KsGONO37I]lٻ[S |Ej$X˼5ϱRbϘr֛3z`%{ՙDzTGAua׊ܢ*CF Tխ͜rWFivRp*^Z.9N8vy>,3zs,ޟ̉/ |fi1\͝i+;r)!l=:rぺ؁(^MaNê p`-&At"}D͙K+vTB.gs XX\hb3Z$3jc.UtdULu)ZNL 26Jڇ!=>pO#womsib/J0{2ic#ᾤ%= &vs7QJN]) g1S^g?)~ƕ]oP˔ν3* FE^2͛jȲ˟˫a8 vo\ra)($07MldzhmwW |Xy2o9;DZn WF|6DOǨO*K@/|d(G/W'%*< T>>Nc!)z{āo |ײhxJ {tZ#4Or/w@M"̽f9|CN{M5b ̯pL lr\pP3njƾ5# |̀ی|+| ^3"R;:Rx|RS X '1>ŞG9)j7P)w]𼀈# &(NbU Sghk#q<(xVg%hxV^7~=_-~w^zv@l<*2%B,$J:[FiMyQ`/#jʭa]!bnydsbDQӌ)K5/WxA0y*8)=q0{2vOZq虱/eG)0*בu?xcBkr9-i0Vi Mx|L ]%RYCf跴 MH振On^~hy_dfAh]Ա|pX-b: U{u ]:ܪrOelvgd/|Q<.> 0H\F)FΩvMSM0z`\pL1q|jNW˳6IhLm#PrDng\1{>lЕ2'p<_Rq g}`yӫ63k^$ A V=Lrń8ofо@;j `O]0m܎m㥷4gD :b! [qҙ{Vu}oEϲ\^?BU?+Wڶ|Xu/lK4*0nR+{+;F &!'w`Ώ U=w5?WZXHu{wv9lvc7!J}3:BrKG1XV7zqH-)$3{hd^V,\̮ :ʬe:xѼ<&k; f-gɇ2Rjo-4g3TAnzȹ-pF(0Wxͅ@ qhfvy-ixnxkŹuw]clcg})H Ki';B8V:}W')@BP^sX]8v9ӎ۫Xuyoh< N޳NiR 쭒on>bUm`O?%c!20$$0(0y'z=oVamA-Zz8 fh00T!gi '=*ͮձ9)ِEzGSy ܓ Bhwɷ*քJSwx3k+RM0Ѱ!F.)Jf޵CZP,ުkm˛764<ٛ3#s5J]|OK%8G pZdg*??l9[nE$K/C꧔,TJLH퟇5odDWJӶ%Uo(swu׆r1uX3AyP-s ss416|?0_$NsƩ `(;hk6QhњO}FF$AM_>P 0RPS]{? -B+<{V_8. 2Gswnn #T\(qE[-|3][̖ͬ6G¬,+WUمRg7njיYuX޶I |?s\g٪zVe\z ٴB*\;śqx:T_h<~\WM½_yPWw`-pUF zOfWt;a/^%b'5_aBZ.5"u2nNy. ^03d[maOf7S7ՉM⅚eWsFFLi)mc]՞{D_!VcZۺ,(3V߲ɛ``>>CshQM4Vg15э3 >?CoK ~_`W]/P)vh({"vɴu,zx'GkV\t?d^DnC% 1@^SpDWTMKfI h7 F\.z;&Դ_4' ?+DhA <d`=.{2OqqfCf_h~7-ƚ :b:F,Rtףre CޔQ v\iEޏO8_mυ{ᚰ{ƫ ;>ϊp.f׬!4DiΚ*"hysXE!o{|,T.d/jYd^17HF ^ٽIO@{=Y%ck6D0iÏ 'fPK$o!i{G^ B|Y/26}-31?;a&_"h`@3Z@x(|F3(M"w#Š`*# XD@\DU{> 8蝸&인@?&޺)`0ͷ/ڌP /΅Q*O}@&S׀M|E drN"w0zV9Um;f΁Ty ze5J8 "T}4z&[}-.kq,3bqjKi](t1p,Ug<}##BΏ.ڋ{X5ecy;3U3vY߲?̮k#;A/ڣ׮mԣzg(_w?LFAz:6E,:j҅ ^^p'9p||N]Lۂkr{՗P ^Zrh^៯j÷]%:o &4qr=14Qo#ߘl#2(.W cڸcz7ߣD;54NO*𙭅[iGco=c{5EW^UoKQo_b}?Io.Zgq?}{u&Uzk7tSK=(YluuxK.ld@޽1`VQc6?*o: VOk~;rsy_nΚ'h_4ų]#;+YY5u(` +7iVX75!5 j0^u|R"oMX:_ywE.\3~vG۹k4Eњvym^EF~~屋].Ϝow-1GϹg;ag E35?b|{0D\LJŻ)~Ѹ_~ܱ A_=pWK: V \|HҸ/k_?I(o5vAaDn?2B?VՋMg[9^ovH2oڤ&o)GFmMjD7ktk?M֚wrgCKl:s6S(n֭~I%vyl'h~%O oGfF3D|w>{*N߷{:tgߔt}~Dj!o߳V>Ѩiw٥3=EMWh=IgE>k'5|]okm߯w__⿽#o:u (KSmwq>ɇ^X{MƗc418f4i|~- /;ѱ<\6E:XhxYݒL]r1("QGUgҳn=/?terA /GAVDp1Zͽ5₁(oz '?m 7BQst4K^mF~FRqZC]u^n~+> ӣC6߿Cfw`"YU̯˸}>mc171[%ܧS~^-!wAs49|ȓS LHTNXlkTx*MMCVyxz,p>gEPpëwh/rƥpQNO8*D+  Br1JP{UL!W{;a@BMH5sŰxX,VR^iW/׾$]WS.[{n¢Y{]ŋ"dYE?BLxb.@AƢŶ|1,J/u^>ǬҢ+jԠ..#2vH)U6-:c'!(%.<LƢ.K`Q14:FL4:#ŨϾ5423ix>ROi;2? |N>̈́&vW?G,}|_5RVT X\ӛXE-K٦~E bXXt]Q==M=xFϖl+-b~i +O ݩE-Fw1$6N4g$ He#'n{Kb "u J5b_#RrW޷5徕l2 EeKh^1>s+ϲԐx!=u;FLJDp"׽5r/~&*&&?M@RRn|32.kX a1pcg,k~ilהI ?1/x߫mLzh(h"__kl75Ma$~:=Zo|5Ҏ9q ^?CSWncjH|E8/XEh)|9I-I\SIm?j˛7aeP0r!};5'g>DEK!/Gbx|ui<&(/FG]6?R+^{VwtVYWӭĀ toSCYC?g4%e0ڸl9b0V@rJJy1=%B7ڗ[[y}~3RGAWf,4J[̛vHy+c}t$oًr7<&=}S[}[KosNzg0gn_OEh879h8oJ+A/P +ezrHs FBtH~Yhg@ZKØ~y՘a#i.>M/.Q#'+=Ӄ5c+BƔׅE0KsX1fJ^AhE<Qy\'>S>wb3 Z$ѩ7VFV |}x ҋW#%;C+_9;otiş#Ǫԋ*ZQ<^`(^\0g3CdBk:ԩgZ1&|fG.|nwjm@o#ƭ62A?W-uSc}SިzjKr=/B?UoZP߻^4ޠ@^]<(./:='̫Z4N繷w.mZrqx& 1+^٘/M J;Y[|*dŝy7{e cSὋ ]19 Mw$B֖d!E^{@gcai bxn3ØOſ1DžS؇3\00/xy3˘xH29Z{pf2f܉hr 1ܜt$O_zTzuC<'Q"mSZdt]dtrg{tW2ߙp8k&Θ Gg0dʒcרU_R>'bڟPxFsh%e nzC{3t Ch!+JWWt]VErk܍+?_S~/h`^ L`(1YLF]^\0e4ꙟ`sS]I[}Yc[$^xm) »nW#ʹV> 5'u `|5Ӳ~2x2Y/f:!'_f'OiP^ 1xt3 |cta%Oi|.zf .nQdZZC7t~a ~[4?cpb|WYah>Зz+C4ը9dp_4S&g%2*LԏCzx,52XgdSsD/ |=bF^i2%alferF-\mY$:S'٢f," +ĹȹN!LS"~dTLw6l`K.G 9) >EaS5乺Hru<^ ={qi^}^nt "Wޫ`y)o @E[tͮV%x} Jc1fȵ0S4x5"rT=FX#9hhznB \ﯸOͥ)wF3̌gd2zŠ%HWˬ,O1À-9 /Pk?>e,n)SUV0@ X"A@TN<'5^@Ǭ/9=ÊDc+d>{LJP`ut SZH|~6lUu: tgv=U9յ{]*^)1{&jDS]-rTZ,H7ũi/ )m|8)G `ŸݍM3 <ty f6{5~ nﺫ>>/{5i4{r<=V-]r8}glr@3xsl.y81 Yekt%kuq_O YׯqqXzDߩ@zV锷#LDmy.y H-?{j4o (Оɿ"3HŖ>˥9MN'Yzn},fVY{Wݲw:]Nw H^^L]q _'$`)k=[/Kc#Z «P9d9r̦k浿d@rz[?nx ck0`~`;>CFRc"ܱmVBUt ӡoyi޺b ^u>:\"UΪ ٗPfΧ*:D8d;/)w1''LNINs^ѻ%a]Ett~Sb Z%ř[0tYz]]^rRT R 5Iuts&兝-q/yůf$֖Eѹ<ѹ G'%΢ͤzuxtl|1FFq=NiיˮΎgltv:3:GPCyVȪOVV.f/ڐQ~_SY(֟.Z;ӏV|摫HGri ލu+(#]{z17?.vY$&v^x{1 $_Ys_4ztgso5!_Qՙn/;oQn4k^tn38 P+kq}h6L@@=",S/Dx9f#o>F ` <UwFdr+E׫Qx  7Je/#>Up4d0'#5X xHۄisńe|u4G Gjx%/&Eq ̆%B_Ι{;ÿ%7*> dgWfx2NyƱl)^Go"8X;'gx]t mmC^x؍YtUUvjhЧ=Axx(\DmQCЫuVz:?\C]^u"ymʿO։r@+Ii(=9s6B3,4mqfo|]g;vq k]b4Qe7&> X_Pߝ}s/BW-B_MhW8|5;V}SV&$-yӼFepfo|2ÙVNrOWDu¶x{ ߂:[ g9O?j)^vDA QoBîxSO ՚ g+se 8^r^tx:PnD_aZ|bsS.XT*n(ol]Vo nɷt)^?Ҝ񚬻$-xtoW;NR(xzl)]|Yoȗ:S98Kxh&o'X*-\FtBYID7E]5!WiT Ģr`Hy!3PkWoD@ZHW{,xdm#9GGft9X_Myn5yT>K`XL|Ne 5wnh$3,{f]YH 2&0Y10"S*϶ De~{&48`6v0`mw4/[x7+"&(#!}|I&-D1Um8cǓ3Z%rfHRtjGTj ~LJVTXu} K*_fa·30 썩Y.yȨ0WA+1*RKŀ0,L=@4B }`8X20[yHYigy KX as~eZx<Vva@S{lietRh?z\"kI0 .D*:4R]u:+z*(dEW1 /:WK犷q\6b+^}܀DդDEo?=)6$jvQWƷ89٩qGB!i gcbwVÕ< Ά2 *9s[lG3|vEQ`,. u9iT3W8</UŘ331iB͜,a Oۗ=c" }A\mMYQߴuR()B1I+&[H$u+gyM$IO vA>=m]tOu(W.iN_S@L!Y)C5z@"IgW# }]P2$)焔91 bfN0MQ.5SOg'zAiX3Ej[r@٫&DM5 JgLw0fӳqh6}[h"u2PEkw 4lX΃5ߊb#%/%DC͂mI̹JG_ (QoS[F>=jflAԉf`9+e OK:OsrCHՖb~7 JyΎQn,lRdKP8eydg: $({Ø)&6Ռ_%sF:#I=SMf:^!^)іDz0zS_CpRcGL}W~B@:cר;_vh؊釛տ;|%F]K%#aiuG-*,+n j\ 4GW\kثU Mߋ([YBdO[$筰@.i`̑Ya ҝ⥶SڟeM 9ڪBٞ'$׃%]!+c[FO&4_վi5EDP،Cҧg*/lt>`%qS%dg K[zs}s}Eksn=Ox7x07gOij~%x&0}a3>IIw|ZO(T JzBD!@Ex_MZܙ-D"%P,/wV;x !Z)ujvtwfG#j&z6 [>?7n -[4oNC$<> Rym cglNZgv4{2մADP /C]Z{ٞ(2ڙߔ^-Een QS豋 딫1Eqͦs.mުf01haGr3`?tC\2'8OQ=uaWɻH#+'\^~v?Ҹ־(!񌪠ӌE1?o]A=1N]=R.O[pEvعN[Gun+F`,IޜQTd~ )j@OSncÃ(J~Zmtk\^nG"ø%WXM"XwO,IhQZV:a;L gAem{>E}E5OaDb3;oM[ɛ{vUkn*k~u׺my(N8ڲ4OlI m~̽ G%cDT[ToR"y8V0ăq/j@YarYXR_޿ ^݄Hvz'%qw aziA *Q+@ ! GOgT =(rZ0ZRw6 ݏu^6rTb`um*ڝb\7ȝi ˅<@; VxT:@LS:Z_G'lgsG|+"+I6y؉G[*ys/@*{p;ED^ۥyI302jHGU5SLь}Z &/,l@>+6>Y ^,P1ILb(2:)ot hJpr #+{C.6Oܢ#(JԂDxx ~ihHt?U zpIuּxPIe a|Hho4R_I"lc݇='"B2jhʐB_­3}PNٜu>&3!b4GK-@gOEBpa3l7Q*) 'zŢP7'{M*58 ~r# nI f+#M͇ 6nPLA\X;,? +7>jͿT.څoQ%Qj pc _7̽R_k C$CEd~( 183C='\ BJN;] ; K6(̊n߳)o2/r,12GИNf>к(K:}Zп ZP:4b#ב=TZ_NOEao@(Npk37C4 "C[24FV[`܊1.b,Tlz-mnvemTЏР32c;uܚf~f!W{6£aQݑ8?ޕi$[8z3S\i 帡hNxӛX>V` 垂5YH%"/9(Q 903q3=9|FөF.SΑ&MM> J{ӂ /iDZ` ZMfҹn%5Fh4\486oN;} a!*7j͝E7oڎ[I#M0:2"lf#5FΛP{Xtzˣ8Z7Z4[2<9\ eGN(WDRMޔ=d[0p74ڌX;MWp3j,kh c cr2ߎ*g YO@;`Ik˸+"Hڌz卦5WE{ CO(e'LqAO4@fEwM6}"g0ޥ]vfDYC#J:/'`OAoMۜrNy 3evb*Y jt슨Vqhq,!Z0{*fãэuXh>FnO/b/:q."'*;b^"r`|PNI0ot'q(R6(x#iONP4[ 's.$&VȪ5ѱZ*K[)WzRGyZ;#ϿCXI rUZ)Ld\z;5*z"N,Po5:tXuʭ5prg&S]O>%rfxIJeM'3 +n,٥,V4A-kq,cŠQ5edMV#,^-jRU Y$H;vVXX I{oU3Ca? ,O-BWjx'` {iA G0Xs򨓅X$c^4䬂C,^Ԍ󗋩8;:d/)I[ZŤ7V`qŸ'-8Q; g|!x.bOc;oH"n1%_% #OXx': kK|U\rrVBXͦhzk /t$# mXـ) -#krǰwWZo[T4kaTa9-zTZk&/O ] m;rx>L+uNw.rT;@*V 5)96!pkk Ct+~5Ϭ`זr% YVbSֹlQC Njӿ?At:7I=_5ۢ2gi$ /b{)Zߎ:>牁篡 /9D` :)2pN${!9wc{x %=l`qt*iVƁF %( efc܂Y(5:*%6Ѣ cR8du2Ò3 vzN G9!w%hxq6Zkѽ7օ(lFpVhޕ)0LIٍER1Uvk_odV>@IuWp#>ksZ]2hseET<؜H ͼ c7,r=uml4tTI? @iKg\%ϣǢ}_CBǡ'˫#xFw ym8 6w FR#n sk@dcj,']QCiS@L#kWKR&Ry#uGцզʁĖnoPAz7*N <ɗϡK#pJf}i,̖$:<!)ʛfA޷H T\H2MŃA85H҉–<*mMfq&5O3+\r  Aߔ@nO[(uue#`o3Od2l9{"PEMS]4-²A{Z#|-R<}c,VIZ5WM} fpY:\Al԰HQCED -r)wpת<:ZuxN;u)BoUU&'S)LvL#Eg{ľsDMl&w=qi8uM@RO\eg-(O^^* Jl e:sRYx:N]=DhȋdKea kUt.0|Af?׷YۇǓ rVhG:O,Ƣ{oB+a3Vvq2( GZɼ0L7b_+Ɯ* ɶ:G*yZ+Tǥ\cN8Ǽ|!cQ]P=J7 ,n }|脖w#ͨ:ot>6&{ϐ-MTN4f,Pf"Ose׹SStȨ:N^t1*iV(;%Kn8@, _VCѴ XoZP7ࢇ|`^A}ҥz`>*r͏e!mufڝO<$(G,|'Qb.U5E&>X#VF)9A'): ]}3MC BG h/)LD-=lb{jKVeLM:1a3]Χa9I\ؚHO6Lgs>rH{\dMU֞PYr-joPd QU8&vkrܨsƜOi]K8|yyHf]u ̓,X%FǦP[b(wH9A ī>-֩]ҶC; [GK?[`#Sng s،Ь79*gOPm# tx{5= ԟU;{"{>(}{<:k98iKΊl) 4_Q,%fE6k~6i; _'|m_ 0ɳsB)ϖ'&(-zaݭ {nX H~gzGʧ05@~!A tq-apsr|ٚ?kUs>: zl \$- ^q3*:b]cK)!mY]RX%zK~<}!0x2 9FyKαg.І5e!G/z!>_]eRusq{WmChn8 uT%^RSxSmLCfϜ_ <|ZÓ̎3@A\Md Yj9#Nq6>~2@O /W藯6(4k/~1Bz晍Pn_ta5p[fhN"!U}BsԘVsC?~B`v [񿼌}N4xn .O _l8TE/k5\9 aș<)y%B뮕|([]:ؖ1thR32ٗ7FQE&!&H9vɹү7FK2x1~V?˭c*sZI2v4^y R;=%^A[$SXg Q\vn;0ncC}dž<Ótxp:F H TzLXHY)|g##_8[r;1kL\+b(\}n@WL9db)Fq /A1 ;'C[^u,$ rxenF_v{VI`O$cf/d0+/>EkId·o"8d_jV[<1 A OONmiAHі@'dz%O'?9|j q (>=2 sЙi tA, e=!$ěpV*#>m=If79q8ExkБ42h_C\ACL=ZHӛWo1W ;[))~樲33 6ZnV@COu'&[s&PkG{p'ƽsjߖ \M4W,ݧ"׳PE)V9)<.3C4ӎe[$X9Tn>FD>.Ն,N"aJ[L2(ZB ht] ^z)VPAhwDJv lӭK"j3;;T<ӟblD9躿⾠ܞL#e:+ڈVLb_pNT#oĥ@ϓ˼{طqmmxq*ܤ-V>"UӔF«:WëpZt |Z';wNʟ5M4;!qMM/7wMwz6M}J[ravL;u|釶L|.V gMLwNpz@Ȟ`s[G[q}Z\O״F;#B=xSoiIܣnn,4]n1R; Sԍxt܂v*`$N L}ja 6-Sj Iwl%mۭiDe{ք|>d_-oDS Pܑe|Dޖmwz|+XJ2U*3kpeKcƽ{minSA\OI&-a34;G /3|f[ Sn cqD\A~97 y=EV¶Z#ZZퟌ^!q.ztoRH[~̧?a:ak8GlC!dnj(Z:j?0񆗿#P3,܎:Ac(~J\i4W*a($5|tr=Fh9X?,`18nɦ"kYk%4FeؽTY#f<}EK(P+L?+XP=5'^ޟ_&BU]f/G,qt1išR|Tmffm(@8n{a#.3(a~Rb|J uDE/aJLNDD$ ѡFxygS,T;4+N Y6ރ)V#c:|_j7bU2jw4ߥ+qfW̸ƆAah#_rbZ(ia٥J%Aʁ}!`iWU1WyB7*I.dN"sd}c>ߞۜLS"o"iU7 ۆ-ۤde!d.YΓa)?«ܐcfD!V'˼+-@;.V4s;~hZq l-WZX)xq'݋'< _6 2qaJ9bwI{`TzgZ2q`:z樰amh-arݹ'<&;XiAwEhgTC<#t 7kl-nWCҙyK> gӲwPa7kL ?x |׊pYgs GCS|Iĭylgv:r ^lx"٤e,b瑃%eKxMGy0F8o}h iI:TL4^awn/=Ov^`Hz_X"@-;SmD`?ĿaqɽfiFaLe޳Qvm.biCJ{VrIL@2L68!,> ˞!/i7AQD45sƝ6eP-:^k!^ %%Vmqcl^Q6D8Bdߟ摉0.V̄|G+*h$zUvyxruK6X'iB͒`k*j'ܬ<x}]b[T"4t-Ubl]:}<)gZcoMF}4E~^JÞh]L9ZOD>k"rH=jOjپg:Ͼ֩g2|dm N%AiŌ6ɷ]"AژE,LuG:2uA4KJ$ o?7:ez W `3CJ_N?$6R9IG[E`ò8e8kl]H>")ZRBRK I2\L&R3I1ES>]~4h:Eѳk$ Z O3,6u1e)'9xcEPӺ7x2q:ٷTC.;)T?$ӡzi-2v} K;ȂʘXd{ iB$Up:Dψee[lu,mRk:+cuGu!,BJ4nE:g{c_#YӭA ʪYUyxwVD2KjaYpmB!X(!cIoޠX $}t}xS:z0ncx^52X7ڸFs#E̺Pu;=.>LH' ~&*"z]]Loʌ{i^ `WsLz%7/\:)ӓ6+Z ɗA@C9]Mr9{H}bl/s_~]1Ĝ.턢:ͻx C{Y~o*<10b? xH26޼gc wc342'FwKW2| I?K怶PFB*:k-C3򯌢CXS}ܕ'1ѺW!;@G5|+x,j#>Pi??P|/##BT,ShLOucI1]}  P64-t3K#RPC"#QpiK"} Gj3JoEO6|RlC^՘. Qm}TpLvԇ[inz v0ágk7m |d7?:߄N|W񽭎'|mh|w+7Շ"؊>i#ޫEB<7&/ZxEM L;gfR$jCh1TGOniY4&VSk_ ·Bk*ϳoB(ChvmW=UezǏeM;rJUHrPsbtR0ǂ<}4{iʞ"#6XR<%TFN4/A?sI6l\ hcmBZLTV.ZIWPpTF_E>7k%I&BSf:w=>*\mHXxZbI5,c>rQ_|0M0j]6 _ޫF)Q9]b؂riFvP~Զ}`U+_ (X*&(n |L:uIc0jk|D_n9s3J8Ql@ͷISaNG+E(YS4˄~vVD.ӟgzU>uty3.81zg# MF$ZgdI_u#۷#BNűk\ 7ބ=&:d鹎Nz*J' RŸtw?)%"V>(G0yCҊ)ԂT Q݁.`NKd0FpiG4Lith؝+YxZI2Еx` LxPCŇv;"?mbE{ߜ<':%HiȳeA8 ;t`p#!q>nͥjnUCX%4讎cm߳ƣIqL(gNCqn̶nmΓH.WNxcqv=.hvʂJuI=c+ӂ9@ѧ )R,RDBBE}n>rq~'Y^]/Л//S|'.Lxjz75^HxI'<9'4au\ 4 \3cʏ ~1~dSNՆ3B \BB)7Zp^)Y}znFdpW! œ'EST8,sbɷ$ten"2 x0 ;۽PkMn7|j`pr 0 1R-x#p2F[ѻvME.FZkhC\E xxG9 ɓ 5GK]Qls{=f\;#;C|DR_l2{EΞ)x^F&%:;}e$gAx qTtzr] <5\*" U}NQ]BoL6'Q-ZDFr +RWt#Ee!Mjs|5tNƊ9M;*J#L&6dL1?J9^ۤt} | ZjTԗ#!?.B<"ڷS<[n@:E7M)@7&V ]s&xW{+"73IS\(sBbWr6j1c{P+ nCxN #X Cļ=7:ݝʙ=x3p;F)٫OP`18&~,s6sKrKdS|r*L*?K_A| 0O4oxxŏi8+ctxR׮Qe4F֡{bjn^`\!WaF~~4u'V'El9Twedq/e%Da@M3߈)O%PŰ=K=W)w }>$w34CP+_RLؽ\v-R]J\gOUC/g轋4i+?cpyG09z- A(f P(N0o_yAHŽ26.ˊB1Ǐ۽3BAު6R#)XbA;iǡf9u>Ђu{WAv9WHI|mB_Y30"Vm+f$pt㸛 dLǽ;'1U=fA3s]X+1geU}k١_7,:j[~ojFߘ9M~Y}uwp,xb`H!wCTz_hgCgŹ>1I㗧NmrV_,8X|qpVT8A~ h Y呉!VF<$Y}^1:Lj>iQIQ>1d6z!cDkv9UCyDE-7i)co/3% znA70Ci M| V%,e95_Au7hP?J//wpϸr3hv:E\WE zP{P[܇\n}=s_D?z.!P % cpU ~_G70;< ~k뀝7Z NL[Ѻs4$ѥ"KrҌgҢ"=S0kPMiRٞG7~^%MA׷F'+I ZC-JW*Gp2Xax0;0x2: kQرL\t^=g3x1c"es-ƹ-jO`_tp*&u?3JW{v r͸fV-_ޥkPf}9Vr%\6SG~'!.8+XD`(3VH;{9L j—X鲑J>$ʂ=l"䙤%+Mbғfd?edfdE{EҬlqS76QjFC\tZUd,Z C$_2-I1p{;RhEd&ɿd`^ Vd ݴ=L24 ޕU2 ; :\aSZ iE2jD{9@q_RyWTRWƤ'~YWȅܢ+ .$_Y&zrEKKen1ct ɟ.5ktʯam`rkMwm"}o} pPN }u0ZCs!C@^ q>ϷtZq=6Ukc1e||?7r W$\Dح2'ۼ.Wꉩ0O;gA+ygB/j*͞fs[!\*NotͅTop2S_i> KXxjCᝇKhlԤ]o?iٱrw0cC- !s?a 7ͤ9MKγ)ct;%mKIۊ#ZRYXX%qVFl b-lgm/g- `DyiXRX&zO(F :R ]AXꭒbe^HX!/^Vi?YC^2_mMcU<؉sDӾazWom_yG<@kiØEF;RđHO<Ԛ(7@9'[ I?1-XYH G4>X|M_VMF۽FX起Q^KYw`0Sc:,3IwuGi )|[{4T^RᯍR btgd6$x_'n6WWY,ArK~W=OCQZFՔ[a<+cwoĎkDU9f <"zơ p[S=Wl4$e2C54l'(rG_iLrn qnW 5qvqiRWDzV֨TˈRTaTW7$ȳo)$cG^a嶟ڔmCp}&\lO.[z [^f}lɇb2ޖ MZ ]dUbcqa`0$YB|d, nyC, Lg+}V&D.Ar㥑f@9)s:[PCm2 |[MH R΄Y3=zԓVi!AVveTQJRDJfB- Y.VefMm]9%ɅBMC}7[ { Q _Íxu4Qֳ't:_މjSD̯ԟqǙ%4vjsFH{Y^,$&qG?] ~l&^ Z7s#ݟ&4V$GɩgD^t>@_BvPen:G5@u!NoaCBʽFoMؿkZXǗ,+H:~]B.ߞ>u~ f |E8ς~v߿RK:ZQf-7w)oB3xc}xG({i^5yS_@r[הk/UHM ELnd[NZMLj59vyt3IEVDOYī+xJ{诊^ItU|֍Z-⩝ނ$㢡Z2_W1 hFE߆r5Ji1|3:wWEĝ?>7xl5mMfR"TsN2-1U;3`x4-߭m`ǫB:ӔG%zen;f+Jy·`bNm5(9J'$@ e+`ߓ)yx V6K_[m!eC.EG[TWwGBuhO?"o62,3H/~;>rD?-ن}Fq~9KH\\|m_i7+}JV!HIuqL17[Oi4KL`_xX ߇czcH^FHYL4)cw x%VtH$Qh. Yē@_;D ǁpRךy4(ꘐ?p}$NҊG `PH ?郀o4D1َ@/~XS0]T:k9=! OK R#ctOE)%ٱ6E;gsFyF[1#ڊQIl<ϴ f$oi_$a~I`) NLYw;lF W=fq%,7$]Nh5h釈f漌*YlOqoKn_C_y>X:6yԚ\)+ Ą+406iծy^gzBz-Q& ǦU!}%F_0ؐj^1L6}I hE:<̣9nyHqr|p%+0No%[wudg2t6V'GX(^F *;d:?# Q(~VJ0s.*VV8J8G̗'W*`W+J:qp'/bzj\>,_H-g8w;= v*L  /\U/Wx.V>?  JЙ޽-#ć 5-z݁z}~ȇ{W6?d˱jݡ9^"ѝak 'j,{VDZiܢZy_cv) rK]ʕjDI>kE]`ާ `0 9;(TH9UM8CR*u%QU/ i $ ֐ PdM22̈́ b#4q\ZEZw;R]ĥbLs}oLf2I:ps޻g۹>Q>aZb,/bG|Nq!J(r @}O1!I-e~IJ!I_`O_T3zo$ qq<ڇYkjkTB|*ͱf!JK!7Bh&0мߤ뀱t%@!uFQ } 3^1힊εoho^ˢl-è{1c; "BoNPɋws"t_X*='tK 8st DZǰ[ð ]ž0$i"ޖز=0ߟ3&GפY2ڕD{Ѿ0F4-6`4DwO*S C腄~ߠN$8[ 6];I3ƫ轄~^w=N vBAwWQw5u/4tyO \B"v-aUfva˱g6s l~v/g1MT_ELd/edT~ [L[Ul {ǰ;o ǾCط ;>OHޯaax޻ygb6CZ0#cfKJz6O696iwaGؿwXȒsT1)K_jll#4Rչ<"jb~UkDen#ezOE{'i–pl2a6W#w1ՄM'l9]4D~MClcGpN,d5.yv(n%0>!GLB>bMTj›-3ڢ(z1}aN&[Ii?3y+KOP?#}=DUաЭ~4s{P<xw_F 9\bBRUfy!OE$?-/$^H3sU7 Oj] @蟞o  4k5gk\(9xBwvATMq5`l ܏6,ͅg@hvuoB{K0:-o˜7ad$M'M;#!ߚ!Xψ3vYmdxٱSGm؆Ic; *fWE tNJGv(Bi|6qJK-N*boY{ [m{lw7lo<<1wg*8YxTW~4;`OR֖=c`Ҿ'eG]{K`-^Cq e.E4`8r*_Ҳvgg`w`Uwz:G?~'8GF,VEۗtR#5iLY~loqj"G.fd`pzvۙޏ%^–صM&}=vǮ ?ưs {v.Tcn=X!u٤Դ|qBGXX=㗲ۺm1|`ē0EUjZCYeϝkP5ׯa~y(_k0^ +wXdzqHX4.lx_Oj(sP_.cuԄ/H(ΞQlQ5{pGD4W uҟAԨG]CwGjץI U"hHe UUF)6u߽Ѷ,qc|6^lw Qi$ַMX~qT~aކDPKVP3xa}ޜR֑Tx"+<ޖuzvcC6`Y0xMؼè{J-Er,A6R"6lŽZK(h; ZPln_|0jҖ%@7A oga3rdhًuϧCM*{}-o狳$Z|R%t:Jh @e~zgߦ%ny 6%PpQ7=02ӃH42tz " 6x|+pFh^a3j(Bb-Xvtul#Ak {ic04&5t ΢ccV CU%90B;Ur27̲#5WdwN^ݿ¢Tھ8="Vz{N< @sÝOVIOKLF:f27vގWhr&cڱs&]lgCX^:+Uv}:}]Z?InN^ÿB mm+y&w~bszT{kZ?Lr]4oCud9 t,$$7*i Y\IxqkOW9eBbW/F'7zة>huva_>?4vao$b2?V-oM2R^Jb&LBOMbae*% I>Nj¾K T턝NؽT5,B Cz9?gQm$Pfz}"Bg~Gthآ7Lf]v2oBPڷ}m/eF~}t<=ŮqؠwXڱZ4>O0/SZ@#\iO/am-<8{+?C=zƷ d-Ш-."^OWg}`loJ{jMSq) _3[UЏcvL 5+;:olvQlClCAY{*r!*]75dZ~Loph[MA!ⶢtb|J[^L\QJMo-/@| 2/#oGL^[p1~唵 Z~'m *ŷWJǝڅmzr{ ;@өֱe,h֖vym4)Qy^٣**lJ$] Q&ւ@vF_ SvЮƶ lav 3]n5x78@h?E!}?sλz?/wV-'ӼDbؚ_[~:uPչ0.HڸWqullf [>vLqbhA A˲m)Ɩ!&A,_bb`}(EO 1udHJeX%߈>ۖAC`'R;J-{?4{t$⎢ngw!L\^1k[Hxr|~#(tYU]XVPUť|IRybNʗijh%PDEQUh^JXP*=N+s@-Tn$KN/*)%^fmvKY&ʙ#7lsR-+K3[*jI?F/@*ߘy씠-ctkڳAӊM[jxu0&}> O}b7YI`zLkvdol6%#gN)tLdBe傡ɞׄ`e2 sIM%KGj(ʇ}+vЭ֖h1;yt(ɢˇ}ۇ3v*(S`u<^|rS:?:7zVXGR2c;1hQE[*Kzmp0$IrH2 T>YS5  Z FkZp=PS툨ăk'+Zo`eł=?g_~%KQ~0!B~}150 hT&j FYAFl)Y"Ʈ~mZ`nCǩ-׻8 FlsH]IBdf65e?da}nxP0Gr8GReo_.z\ȅ( U6|X˩#=PlYOljFT&gfC۝>@Nr:E6/Dc1I(Deʥ >'UP NzCPN̨vo6(PcNIm(?H'햾*X 1.Մsen+84:}`ވy-U݇`Z=Wosv|AOivU$s6E'G8Ϟ8EA`% -\RYv"ZlMXSOσ?vyq3[72ӗ%(!e2҈ fsX穗 RDTX Q60Ya`9`y˅$^.Qe*2;&.lqk[Pe8[-Yoqُ g͎eNɌ53cVh[zU@|yZdoT%b"Ʊ&r"ցQQ9=+Fh B:#<YdHN\ yzzuT%[ʼn&7zdM,x-%,q,h& $ׄU{#06[- / ,Ttq4Ո>_㉎ƷDǷƷd oɢ3S_ N_{#1| _3멘]Ue1;hW\26=!;~꜕Ïji% PqW6ZV0Y_ʘNny؈v08ۅ}v Cy㮙觧UZˡ >B_i-w9s|^ 5t]mwC@6J&47(:/d%F3XX v"XHjд,@(*Kk˭.hi'/|[z%hSTok-M5_ rD(ԟ'qE]69 l+M:M&f zZBk尭날mC |iO 狍. 3[קzzy+hUYtFZ5oB;x~C,]P8I /f-1E J c`81*sJ BlT ;Utm7$хa41QD:<(y,>j8 *p)4;'xqiQ6Hl]4àBd(N햜Y3Vȝ%wJkPiT$olp9{庠gl *W=Aho 3 ? pc8&APq%O *?>Tjez)l8G*y]6~AGoZp*>p=T7J)o pz=\ ׂpw˫Ae ^ *;t)e*Tހ8~$apG2A]y$\!},~*S{AQu;TZU; J=vP'A%d?QP9>${m o{,\$=sPP.>p )>*ퟅdqwWC8k> ;|ʯG/]!p}~ _~=+@?~7sx+?\mJr:úRȽKYKrerKK)lRWu)Ww)XB@R~#w.l]J>GԥTKW](p?hR>RV]=+]]J9{ÚAܒ]lnoo ed\/]ݥ\v1.WRP&֬G.ηljh ½ .wNcbkw f 2k47J g!B{$dҳō{g[EjO!d͵`9h9$j8\21{<1CAznm]M۴`%% ͚Fmn2Lu,4y(,5L|ÔeSGvOrO$""cFDgy̲DN!gLn, m2|u w<0pcr]"!.3ݐl>[ | ,8 gw}Z{܍g rÐtij4=G<U[t~IVyog^107%'=&8㱐_y,B?PO.pw(u =+?QGZG,((e{=6W ~(Q>p>]ߣ<أg(z;<=?& :A:x?AGeg{4x/GޣBQQB.AޝMG}0,!7;\8`^W2!'x)|a _}}Wp|htܤW x'|w;ʟB/ٯy%;*pˏOQ{3F F<ׁN{8~ӯTny7\ t߀{ނ'FKL6?_ n"䮒Crw7>a=8'rWt|]r!7eL =_7)MrNTYr+F,W BpWKUQ(JE([,kmSt.}qy7? =rD5.2۫Lfդ-S|N;)lx"V1|4 ǸL67WIT\EmÄWӓLk U$di9W%Ň/aeF[NAèZ\p$͖p=%)6I7^Ct>q& i(xI[>x?Y% Qt a9BHDn)j<S%Jxlf務rl4!KX?q"-m.ۣUk2;|f8ܽl4C7X{Ik^1sD o !}G~.죖HNJV(|mSLv3m#+I{MB^DG*nX`MҽĴ02VleJH+dE4 Q. I/ :k b۲ĥ5`,nz0`'K  r/Y 1S|1䇤jƕtClѡ=; x~NE= 6 5vر5<1geqyWTy<郸}#-x j v{NN|O޽]'''ޮs޽])oҽ]˗xvwHlolK[%~\Aafm?zѩS^ Wҏ~% Wҏ߯O?ݏ-oh?GG 7Y2 rV4` ϒ+"^g?mg>v,ozR<ID,xJ6΢b-B'.Y9cubu#Ef9N卵_jx5]DpᜍU\cEu>]Y>% r/j|N /Lrm^ [O_gJP_H$FB\;ڇ[j38;RC-~~Wy]6oNHUVܦ_\[;J k̮D͵0G@d_4~|5oc^~`y9N:0 M F9J\Ⲳ>$fĚ1;ʱbgǀ!g3|VP^y6㢝Gr<ޙ[uϲJ`~˲2:K6[>}h _@C\}u: ܫN'^(w4-"k򙒨\xQ]n _қɳ9ne݇ =9)(U5]t$ZlV*/kPz ?5OQ5˖$ #}" \Na9^ S(w_GY@@ǶqMӾFRtEn]_[cƯu9ľAD3XCC(D 8xnW¿cx___hl)^]OiMkRܕRS5N v:s꠭J\dvйnDotypwM & ユ7dY|IW[\әtb8`*5\[E,"dUk]3wֱjv:92 }TtJ.l8:lF^.zW-R>ՑGĀ;_A=6I >uB<']%]ك5C'W/K4̹9AD\Oexx/ZPteHor =DLfJMXc)|x)/XT^c𨻎 XTɏUin\#y\|| #pɢBaɁqcLo02W`1t=@(ZO !Xwf4H~U6" d\*o)0 ^ 'J=;""$}]' uc3 iV" ֻP ao:k׋uzcоE :C@ce~9Q6e B> Rsj\ᛅE}z}o˃Bt_j ۦ 5>~>3: [>ݦ-ex1{LG<,G[JP_$}):`\`$ڷKl[ "~>gN)x TlˬI#M]( ]v|/ٷvev a/}F0@ nw;̗w1e  ;8jA#won;vǛ`kW^pzX[Cɍ~H`V7"g;i@m"5(INP~r1jݼmsDw8K<=b~ F>>|bla@:(93|k/o$ >gƂ2my =ٵ6ɴSY1.}sT7Oc\Mݣ`)kwz\,4M˝<57O˝+,co𽤙DAy=lW(= 0ݟW%:T2TPix (Ap&yAn>JP7+=~s> RV]lr`]"{#}].6 +]JAv+Gc(3]ԭTXfݭ# 3nӭ7 [ L_ܭxT8Y tW.Vܺ w+[+jV6<6G@0 @x Mݷ:oV7׭(?pGy=JiQ(0*a%tjE)/U7\(h\5B?={#lMqw6w@簢e,5buawgN2-#Mք+fբĄԴ|RAGsi4ܶ\[lүO\%i~ؑ={QP = .g ٗmCP)har/Is'mF!} 7'I6o{kz\Dmgq|$ԫAʚ1T+ $v}p$I}/'Ď7+?piiJ|(ۚrt*Tmy)]([;=z2eRrt\2K6'u$&>Sl|KvE[*ܭCOLZ!=~٥ܧozI{K/ ԆnFЗHׁ݂ݜ ijk ",ۣ?k(ML躀 4:tyC0MP ]HtiC,{^!ye@lOJY:#y[0 TT=oPSʵ,$$MNZE#bVeԟ?A8`k|wЇvsOB?U]{/ 4M]_Pׁr|> {]< 2Z[EZC(goV?X{UW󻕽\~fߊzւX I"@Xqٓ6SdԷDS*ogP/:[PZZtկڴf[vA{IZҴ߁MJ*ҽt)`s1kInۜ8/^~D5ŘLn(G̯q?+w+{bǡr~#O/ڶ`7XzLKmfItC[ԤUlNHڒ?g.VVԗ,Dg*S-}6vI"kRGJb7g`7nZحB<,;ehSB"|3D5Q#qf6>{u*BV,fy?(VORMLz>R F$ ^a^ Wt+ǂĪT[&ԟ*I15K,e,L?}cj =Oz(0|bI҆cՃ+TH0[~XvZt9Oz#q%1hhL-LHd^֭; yL*aV;kW |˹<]} ҅^vB].'Pުn:Mg/L;`xlyb^ܭ7QK&E= G$s `2b]<k|tUTɐoφ,2QRUî5s^n843_2edo}Y>){'JjYcw_8lZ+=9Zݣd]wbjv `{ -8 FomG)]һkHR}Tӣ1?nR~l۹kA^4ETmAX@fSf?F7EH 2)n}/~=kv5+R:zfW?+L: +MF(g@DQ&iK%i 3$߷sW̫9|Wrp5k8\-9|_q2/vr{8LI%x:pa5shPw8H~[A-<\2O50=pǟO(]j.vAul8Au4a)D^NP]Y GdxDx`]Q9|=ߟD_1·7DG89a 58lⰕ[9nsx#pB>9a 58lⰕ[9nsx#p<|s8k8qa+rG8Úc /rNC&îAпf$OnWeߠJ~kpK+5'M VO8|Ȑ'spy 2*v*~ACS$qyb_Tnh8_v.c`@}@&Oʯi* .5*j? dݧBS>!ͥv w%?1b7ݣON8\) N5v 1_MBnEQxT;YU}(M OѮӅ7_gpx}dp~5p>#no$ 95>Rq:zb퐨;=_?Ü0_Qa}ʯAί 9|="t>K8Ĉ ߊWǍο)bX~to_T~?Կ#B###iqPK㙊BVm(@lib/auto/threads/threads.so}y|UpBؚ +F,Xk Ѕ%mB+]B@AbZ4`m\^gU78bZ`FGG:(ZAwιInB2Ǥ7眻sO=LZR>Z4B֛.EQ Q}Je<{)(,=ix:aSPEQB=O^ T%oH8F*@:?9I/z*(Tj TaT3gW=:`}{:f?>{Fg= ?xfT|Y|6@cݢ-_F(.b]˿c>w<9D; zLWƥ',g}ltODv5'BMaE:\yNyUE(7=vD(Sr `| ~/6}gX F$U4.jObd>~I9 VF*js]p6ãX9 V[5 .?i`+& Ӝ>__>n U=~34O 63⓫%< ~O|䳏3ќx⭉ Vq=I1A\TZ~8Q V@UTxO>Y' zc^n3翅*O\qߧ$n&4> )Wj:oSTPf/ *+TYy9%*lڼʚҼRP\WUV0{e\/f+*嵥E%U U VPa+bFYzGi]eU9u5CPjB* V,(,ZfcښׂjHAz-iQkQmQtZvd;f SⰆɩaj[WS@6[heu' s{F}:NOM_h*`oz/|Vo~q>E_#S# xq?$W%OX(^[J_' z/6$$mq k&,=^ܧjs^XU9|Wk8=Z%S)+KE1 xq:VL^׏=|R|/*ŽBI|:A[|_'uz?@/}&#3JI *U-~+=^7="$e:ZU h!+IKY^<(3&)^N ^7 \(|/c|'~|Y/S|(3^ 0F<g Cf'!C3E6&G!Co=F6V#Co!W Co.!7` 8T&|`xM0MFO"CcPy  l$ >p_A$?H&1$?/!<'9$ ~X'ߋ5% Ej;'x)ג aO\# FxO ' pOXBxO0o ppO1o"G8'I$?Kq$?O&$?/!<'9o& ~H“H~Ex2O"<'/Ex:TI~A<4IE8'x™$?I<a' H~{#MAxOb-$?#C|$??Op.O!Gx.ONoC8'M^H$$?!|+OF|/‹H~ 䎊*4w01L_?VHr 9 pS-5~ \F%BD]eI0\-!Z`37`>!/߁%ޅw.=$\5%'\%We,.X\%qAm)^BXj34JV|OK^'4f+7m5C;-Vrdm5veSk+ܔ7\ȍoܳb%[ J籞u!UrTCh!8,%8] up-m.2T ЎѲјSмS-n{dqv\VGI Ռ֏^fVF[S?0A5#iy+q<72hj&2$wKNyMGKM(Vs g0BYh1q? BGZűYSYn]߶+/HVk nYXm7KEkFyhA=-1/osu؇-9h8yG#hG]vN7w3E ҳ&, ?Rϒb=c%Q4^XzXpԆơOc~iT!l(J؟k>4)+2˯Z)6kXCc]ZRKb΋V}>/G_~ _$nF`o/q3t.fH|P}w۳ ѳ53l| yGhs~ϒkdx+p *RYWȾ:Βt40xWcC hޓl aV9!_>\+ϵG u"p}Y73T8AOInݹ}kWΨ?ܹFqtȫaU&_wz@$jfb&'\;;ڶHrAOvM#(Qh)]Y㱪nySsTY;Nk2:΋Cc2634w",D&Ɯa盜ɤn`5Znu#sO{.d¶hF Sv0YkCw `VjmYBl1p>~:%ޤb;.l7{%6vc:Q8Ji%4xcz܄\nG>\ su}CrHɧNӜ~\}@Q$sXwjX*u)iCã4' 8&wq7* zb}{yRxȵ@ohLa UlI:ȷSPʶ43eS ЃW⚰񸟏{WA(_OgS0-&;t(ڛwBx%'3x2uO.LC@8&g־ej8frPI_w!^ۮԕf1:&Ս-4sI~XQǸDƹq,bxg@9j6zo" a-Hm CD<طuߧ?Jcj6ZEa fi/7G!eAl}Tȟ"UX򤎡\E@EI-e@,B,͵.[t *yCsL_EpỎxb`5 c_۪ӂ>ɝox^VLlT7=b=;z÷fc:HUv>H8#>I)dR&O))hj LwԻhhBeg-`T vL*`U` h6vg3OT蟔ٕʈrb~5Z/_#0h=/M3Xwt m3b_*[@A"9w &2U xo/0O24`AQ-؁0S2## +3t5˃pYbP*u݇*\h+=.Q6L5 $=J&v-s.:xvns˼Xr4Z-:ifp¢$Nsbamr^}<ٹFc'& iz{ Yt$JΟ{޳M{OBo 5 /8AF yƕ'uku (d$ D| d4~7L -=v'!TCMA21 _IE0"䎯;G%9O0( wny^m i֫ZqC~|ķ;{|Ã)f4&\$fR{&8`sOgh_Gj ;a Ye B˲{KcuJ?` \':A?Y{FLܩRR ($$$;ơ &w`Bqj rfм{@wfhg"2(J(0jRiXձaۖJ[Q{1uj> (6sL4KzC:ky ^@߄Ug05~c,P ^MĈQo8Q_;&--7})uދn^C拄TS\Ts^<3({ᗠȹ Ӿ|/@.ڭgfc}^b? _{\ļ3S%QU]CpI?f&;97e,& R(PMAN$Kq"AN=yq`Ű{46Po[$޸pZ?Զbs^H9i.4w ?%_ܟ@|P:>rfXV 6ZQ*9 ¤ފ_q <6LNu!+X(X_8IZiMw]t{{){7?;k^^Tj @w2e ^0ޟu֙THxD(Dv՜]{AIhxC>*qe"}AGrWH ? $Nއ#v69w#&`M 48k^-f캯K+붧G7xgQ(VC=9U;Lb,ȯ,+b"髀SYLNÅ%ZĬ~|'4MP(VT^16]o<5uјZgFx@;/M̸JIf l&FdOinlw]q,oY?S"mo/~BYBZyY °Sz\nQܩlWa\vk%٭kv[-2K%w%#'2N~ܔڃu"W(_+;9jO@b[$*-ѮM׻ al`7eኝWYTcm'9γz3̾]u]at7rwSgc>Oup/n~|#b4ۈ17vƲ[u{aY$St؇@"SiF;8/\q 7'I1=㟣:YuТQ,zߢ~`v-Ru{|;>? Žh6l'w X햽]tT, }0,&ZvUty}(H5bıFL8AnElc0N3uQYN&c$M&7kM3̳/ Ao +I|vmOB%aX_9v0o[x,ObHhp@8{ս}|MP̷ql}(CQDsѲm= !ZZ=GزGn%C{IF qlGۛ'8~l6Qצ݉[я|NBfg+ߋ`K>PqWu>v:[$9gW==\lWr`C}~-z= 4 Vm2ߪ = 6.7ۓMh< mx{}ړw;]y P`,lΊ)m>R{( TT ?zZ׼z*N6ShL~n~9vH3y._4/`p^aa¡yy9OHH-d1T *1%Sv #>#;kYM΋״:*48r}334| ٘jѧb}lWtz~S%gr5,Beo9(hZ3ܫ,ov˅rg]4q.vjQCsT`q:dhx=eVe3Q%R2AN%^sɆYy&ɬ?룠XcJfq3$oM]OyG#ժϓF-АҗYo]04X՟N*dw͟2͇P$>OH -i#ϐ0@ET49ۏN3i585;׆i#Moؒ;,yL[^m?k}0us6(6h]Uznlg4̞Kme󣆌О%d3=48k?WWBc,iL-M}OLJaxߣ sCntO7ꁣWCЯGU% +w汮FIZhMI/[\,[!z8m.F#YΆ8:і!aEgrƂ+>#7[Iߪ2|Xt0(t].E~ܕd)a݋޿ʸ't,Ѹ~#9у?cGdh,r ..e /g{4wF>D[Wɇ:¡mD=<@q 7Y^ JW_zmIql=vQ:}3-O,AÊKZh`DA<fr31ᕓZ7<K9qu䴽4F_PQ!^gAO|Lw gwjڔi/p㘍|[VCd:]Öa0e>eo.xUk~WkhqWCy~g |\͈\8]l60An}?=ʹq đzױ &̱Pq2FsVWaxQ pTW]z_׏@AtȲ-J=k.o+IWIA?f(tj Ptrfbt^=|otw<EW ݬ..vqgwð'69W6>~pOdje}аUᆆ=)ekڤ#zadk/3 ۅsMZiNbo02}X7n7v(.g_ݷF}4rL@n2A&xw%Z_/o<)~b;ݸtc/NadY~u+AnR b~|oEZ_Ecn t>7wÖ(ajbNa]T(--V [ZSD0)̑Re֗/~oPeMʱԋ?dv~sNwWƍ0YFC= ?Vs _ۃLAO N~<r\$'.'@ 9jz)#2w[0Zl: W?ȃD\BAƲu,Un;Ŧb e1$?h5ՎY\' ~ ;ԍOhаd|gMhmx R_3SQUYC g;X~=>p3.Ba%Uyhk{ kzV=E{x0Z]ThoO~#\xP|Fހkcõ5ܞu]zPgy~xQ;kq9_Ϡ3Mt5nE~YV{ rMD_~Лhdw&Ԯf ˼ފ\M7iC0;\مv]p/_$ k{<|+\\Ȉ)qg̏ N]kpy<ƒ1vԛfFK Кg޵gh ĕWVc (q_;{_/X4y^;博ﳶ0b,#y5.@h:eqfKؼA+BX.m,nUn#ɤ>hil'5SN}|2.'YͲ|N >!PUz\=#;eg gWóoTp7a^w1˝ٗp&KZ+Ʋ WTگbL5⍽ i2FDi/#{'zD^H۠ۮAw`)?Wd}lSWLm_.pI0UqI+zŤAIwiq9y[6vLĤ1Ⓦ*'^J.F'3]#1=#ahD#.e^+FFFƈќ,#b'60b #Qʼnq+#[5n(g3,Fψx##>ƈ2 N42X"61ⷜxn 7\ QlVg261ikjIMG&vg/Ԯ6¾6:Բëک;'lF*9t];5^eqS۵=qsyclwpI9<\^zR].GC?}(n#èGߖ!17ؖaa_3-HM̕QN'_wXE=ñ\{mK~ǿj 8<' ʚkukJ2cKl"k&?aD>BYExq9Co$u:m8uN(xD;AMtԕT}ۊN2ko&Q?R=vY,~D MT`LJHJUggM23&TWM3*nZZjvTV*Ƌo53!!(fY5$.,UUJ)_ {'|SRC7qᏸnbyѱن>'7LIFU>x .^7':q֣ѴgQ\fevB4? Gwe;{(pCGQFf\6Q0mܠY^k69u35o6cY}|/Lt?=6D'h7j4+}X)@|8qso7W讼TglnF30]ڥ fԳKzff^YwN 65Fsr'`S/|߼jb5 -3p$:u櫙)@mW<+9XZq )N]sF75x)Ƭ~GzG:FӣX:+5'uPiJK}pCs/XAV8Goԑ<~w̩m,¡H~SFH~W{Z#~ޒPѷ[ӭZM4;_zؾ9*}4>S |%Y])1zz|# |&7:vvFɣ! ͫ9:sftZ;N;:px3#:vWboC>{?^JzW/чo;<}-P>lT݌A{磻E#旎C&iGfĂr^!;6X[ E! ]mz6DQ=\RSF}f.afz(NՅ2M?|??{jVRVRWRTRƣ;}CC:vL\r'3-.2#(b9)wc)w>6 gkk){u0uƿqX):9k7>1r{ x [yx'xA< <p%1-V^PKhC %IQ& lib/base.pmX[s۶~ׯPrHyΙv4JRp 0oB<9|Hh`ۥ K)7&kedLfYU Bl"_\gzI—U}8uZ+mxXK@7mÄBTU`DW-Qa`4 lҫ]A=z {~i{ûM>wipk-@)I,}pfeش:計u񄘳<Й>"O|noF[#SYi~o|_psj׻jؼo>^>nCԇlkߖ4ܲrNK~o76M{-Kft}y{:Y%s"L"ZǫoЯLHa槍9Ψtr'hP bwago)F3ɏ]kXPf]=m E2.':"yYX] 5cOe÷nUXzQ1*HbST$aX |N2)!xhL_Bx.$<pXֆՌÜH^uS\ח|L{g1G}P7u.\ljB\)Bl\Vu]H,Ђ"mR>D Z0Vs6ʊ% &?2ބ51DU+MH<8VqЅ!Д甠yK\D]'*d8# Gk>v#rDy3}i&MOWgd[$_2=iOxK=,J{!U{l]A-}p7=Tx 8enc:f^|sP^>*bF=Q y4yE7Amtr`X+o_ i6K11j\|da,9 6C g70)˅i]X L;=I%D#5?$a{wXEE>6<߆_P ( f}/4M0D?2ny]*CB{Uo>+rTTS9i9aDi\s8V"YP;J cQLg@4Ca]6uwptBTMGwtD jxI%K4`hF#} UiepbRd̗ X<}ape҄Quп͵ebԐqhFI5;49s{K[ICO)blܢ MW5h> b3㔦bsL8V )hfg1Ip"תՔ|UZ6!?yd"]mi}W'׶"dݻMglqC@sь,W1x㹀Ptc.D0 ӵPr+y;L~;8'&,igYN o۠!>#u+l@w_KPKhCIJolib/constant.pmXmsF b N~!vgI8kwLC:@Б>{' 8m?iwo_}fƒN8IEvF}.K*,s|>&x)tuI*un^,Nòw=Ӄ@2hw)9'N(5O,@$b&$aDDL:يLjtAk;!<^ӏ}_O_Eops}+zuuvAQYP8ĤDeq ?|ӻo/>s\` 0$m~zm*졄)5nohkthLD^ z߽~}v_}hRI-Q!7qwPAVąڤIoPN%Els䝟_tRraR:Ơa+Jd ,)R"HLpڹWMIR"3d_ 6"|| yBG"aJ&(aSGyZ֤q T6 mͲ( h\G{ў|: (ʒ7j{b1@[h@4^ir X}6tq]gcmn**^k|VJhc|B\yZiqQ€EcJIrp+inDmtjlHFH9 ҲXسs;,`?8GF)ȦJ`J D3$ЃJ$ƻ&dgsm5O lo62&܀ U\vXshw)'&>s9ƫ[+c;_|ygW'tn.B#02d\H}nbOφ`Sq~yNbtcH4ܳ•E=&7R1pj+9c""! rgɘ1lCF1[5~jErCf(/= BjFvA'29RRY|<])t$lkOXgn-w D *fL=D]FP&{ LDh| ǿqLDHpZlreQTq]cK#0{%\[ 8fV=!-n["Qs15?K*8RCi_32@Gm -#`(x}1"1ˇyKa`j4b:ipc m>ȗ 9`0$?b0O+ϖ 1PГ~;xY` E+םtϾb&fc;}ZI!yPKhC6|5 lib/feature.pmVR0}Nb1ipZf4^^BP^h(B4q` LjC SJ_ȑήv3N΀4ꄄ#rCUI{YPkogAɘ~㒦z0['~u|[E*3&!,YLHay YɽcQHJY\YDj-eF"}Ő RsNRWi'@h$ZGJ3.٘P,B298ldဥB⣞aPm)E{;>P'4a`bU}&ͻͦ{b3ƙzՄDO^cv>xϕɈ_]g9{A騒]"+atStJF#76 NW֏C2y:|:ڲnLW-r1׬\8wk7Dڻj|nmnV4^h[xHU܄kJ@W|!M;dCYj*dB=yNexSC5_Rc yHK$ZynD^߄'(ˏBKdq&qPBVT)^fSgTxE!_MUV’/W4Kclbg _'GfOBe-$/^iz;9j_,WO$a.y~ŷ2lM#H^*0WˢvocHm]&MӣvPK֠CR/Q3 lib/imvirtTkO8L~]`T`Ҫ LF*m06^;v;{P@h{=]*َ)oD29op~-,#F7ORgB.#c1Y+%l(v3 #R"[ίBɜ M x3^n[bcWd>UPHQ\IB@Fa'JH"TiIR"\t@Yr$:#N0$ȈMfGe$2W "G B\†Hp BZz y 0x,w[63,4-x& Ԕ!$R &P**Yb`4|r>AN7}b)ِ dX+/1sLpa r9v-t#򼲵TDG,B~,,,sBE`{-J_[m%w ݄6Z\&<4mdFX*aݾTpL/]0PKhC\txlib/integer.pmSKU0TP+IMO-+U*HLNLOUYsq){)*UJ2̒bA!P4I!3 DKT<jl檅/СfPK PKhC9i lib/mro.pmSj@}WbS$\L(8l !4J* $;C @svrmclGet<4槶ܰ^=o'Lj f8Uá 0S|QyY7[Py*Cpą@^/opNX帮NvT3q Nv!+)љ4bL4WTVT$v6hr@$۝½Tq( ?(:E|mNJlN_GwV|G AO].Jȑ%D2ă!n$x K`S-p}|6V)QD\enpT_tgg6q` WV}3i%ES;|Iޞ2)(&_i14.fVI[N]E|= {07gq,\_PKhC~9lib/overload.pmW}oF|'bLvZd k#DnSi}N@{ ]; >{ޯ>.h \,RPJ%C} /.q=|?a])F&D3a}\N).Z{-9c`AO-Y|JP!!ܻls2u'0^ m%" p 1x1MȤqߜ{q}= w.lN,"NB]Eb-+)uJb5E4pob$_?`RGBoˇG8g[vnhxG6#VSIz.Bgp}s>A+Sz&W5KGh3#_Sܶ0_K+N3 ȼhWhu dژ eWCR(^98tEqx(kZzlƝ6(j%"PƾCh+PxGzmTPS-:S>$5P|/~B0%251PR~hejen/$ݐ5z&s'eɔ勐^E54`|HFQ(-wϕɷaN]g?iiM \ύ<_ RX $qEg)A,OĒ!j(ZG%v/ɷBry(R;SP ~;vv,sU='1Av*G᠂\H@=Y k9I2+aqf:ĂgHlџ296y\QZ8A8IRs7rԠjSd7$d5"" Q=jtjd-C G4 L'|gB}QCSqV\¥F:#a p". כRfٔrc d2͌өtkm^/ᭇ/e( U2٪Lv V~Ĉx4*dtJCβtZؒ]\X?-u߱dpلvqy6;WJACWBZƗ;%vЄ#C prKhk-Nq h!Ɯ G&Mě4m ?[` J1p"M@/ɪ&D,f1 e2 OT8UT߇}/9 .||:=xQJz8NOy .@f[1//lڑyGB@Wqg\s\>E,[m/@J]['pW}DH&S)QF :q.ΙL>pUb I#yk> q/|Z7~,B'J~YzDbㇸƗxsu>a9|M#vTԥ o3xsPdѮqbuDADiRp;IBZyCulS:A;vQw1ɽқl%Sw iIN˻p8kZ%W<0Rdѥb\jbv =`|P'Lt~Dp=>Nm5H=^ȡ ՘7A2g[6n Q (LG Bb?8D@.QCK|t2 4jTQ8z1Ƕ w [rr*a OZ:us,A~F<D,.wabkA~9 j.C- R#r%$\7a^h-§c{ C֠/ӊ]l&~@xou Ǒ #wxL5G&jz%_e+Fx[{؊M#[1M5a$J)r_甞3|w5Ez'x(?<؅YxGPܥNyt:lh941FZHyO8%Ai8:hZ}MM44y'/OgS$Kx~+:wDIUd ^MhVP zT͙ߍi"5iKRѼl53Zpx:<-IpFk{ [H12yo2!ՖRU9T~izsґ1< NrL2>?n䰯G3x26?q|ұ|q2^g6Ao|i{@jl2~+b|[EE50<>ǣ"`?ƽo EL W98|8>jT8|<o4 >NO)_|I gSze|QoFa^u,3"Yo9N )sV`0 RR.ݗ%,?Vf+='J<ܩhkL1dӹ'vdv#5ߕ^G-pmnyB%VyrHF勥arQnReϵ%sۊlS._d?f_ma+vx2j‚x=m)?E}e/M?@ ݫn̫vUjTK5I/nLc6am옑KD!Z9Q>rJPKhCKK lib/strict.pm}mo0_ϟ%@Y:MYV X'gEOcߝ~w{% F(-y&@5t&aof?~ί `4H ؂^Q - %%[@^Ir]nAU>9d Z^Vr=@(R!_g@v;fٟ8w!..\|2C6L9B ;zpIEQdE֩en5b>`u,'.aYE׽#VԒ.7Z p2r Bֆ! {Ho}$飿T>% 2@ q c 虶K,*hrF)B)2,)|}" 0Ex#$oD8]G/U+ o#M!T5sKMIEmvZ1||SWRwݩ/'v)sb_]I ikw)>wv4H1d܈&4{ Efp? (~Jphdy׻]^Nҍ3hFӍVٔ+;61Ň35\1U.'E}/bp"Ő?v#>x ~$,y8h<ōYHTVDՍщO ! H!irCT$zDˉܐ&I~]1Iz= aD5f0`Lm1A&ʫNvw؜ǥFd(X P*ʒT@ 2/ K nڑsʲ̐2!KWTs ɜՙ-Q$-ÿZ\(ކދK!~F.vۂD#>4]nÅt~S0P4*:ܻA13Y*rU^yq[z6lV?Wn_;-{{ᦵW5+ N@P A~!?}̤N7[+X6fSP*E1CѶ}Mz P5y bI)Ij%pεƶY*L91\婱"fTrEr#xL Ga*w 3Ίz2ܵU_n`[$䳨y'D>UYtl8 ɎU ņ,9|6IҶ 43wu}l-pr LLC53M 6:n.w =r|O7OHgbmE.D;gf$sdm?l9VcĶZnv[<Ô9N[P JaՑ 3qSs`MDڗA݁x_G]r@jW7\Vƒ@? ˞0mwp wsHM Aa)`9Nd'}ui4MPKљBʰTj lib/unicore/Blocks.txtYYo~%,yzfClٖ%XAh-N[s0sHf~}CKubUuuG=z9Du=x/| q.ss[_~TfYQN7|R-T כmcyu7W9v/)euѲu;o j]9Nfwiޕ`U/RWL]!FoktMjuos.Uk5K`*u֭5%]Y݇oT)H":t?UAE~hW7 aOq}MFtD8D5וˍjXɑ_tQK&nDz-W+,TB&&1[Dv)UaYe՝A]cY}ZܹۺĤgF\qE W@Ԧl0o,MWl´@Yg\=hAu<@Ne}NOADZpϛtfԀߐ9!J9F=r!q"#πՒ[BE@7,NuGiJDn&DTLlLgp/UstS1*Dx!g %L0eĔWْ"&U)/M4=@3UUjE%S\-+ `2Z)Rd [l1oUE"ҁTҔKTպ/izCF 8p/uSkĝ0'X]EMT7ۢh15j]^8%'?kVIiFfE S{rGE@\@P3˺Z5~T}p"RQ!L rPrxh=S .X^!5 BRoaDDl+J8n4AkCzYd#ү r7L䓿Ǩ @_u&Z )P D/{߸r2 Ud5tAI{$P庯]>J)sؒSKlqWYit{ $/sg^g@sԗ 1V~$G?TvyF[Hԍ|t#Y~iڥPtݷTyԎZT]S Y 䜼X^XPUi,ꖝUlrnJ.>:Ibΰ_j』gC!,upՆC''OۛGJ誅bT4}rȊi !H:)P|ԚQԛ{ػ*>(`SED/h).P?}P\Ny(c88~f b b|T?G=l~J~N@Iq:du;ƓO,}>jK:Y,~1`h@չXzݨMNr$ ):*Quc tLC}'8B@@HM]w5g %3 CQ!@^BD#n"6I@Z `E*sf؁v-U -k,V$]T<u]$Fp`oTw SQNP}Vd"B9כ+/&MGqKLzÐD] S- RRa>bAd~1s$j%m1պӆV;3ʃԇxIK*ENG%ޙuN*Zu|_Kna/>2 ?֏cTPihdL&ͽqBdN@_Ӵ{'xɒâ 3CH>х^ye^`NmloH} *5;KϪc9SoJUXVAt 9FpqhV]Ea 7ط^.bǎ4SFCf3K ߔnz\2H<TKC cfni~}Db-檖v<Ϸ\>n<߮>W {0B>ԡyM"Yok<-_,_tl9!jPJizf r0Z!gU[jK}"nSwGnYC㢤!`Shav54fE0Nd}JFL,b:hxS@@+o -l~"H5Y(4hao0}i8z_dxծQyi8@I } ?u:ч]>Df;r &`WrQ b`.P};̉&` y5 ^3pG&Ip6zR=׷`bi`gz ӄE5qxfVAF84U}@IBm(Ԗ%_1Z%/Gάq53=(ϓ=~|7W^ݟ']x~\]$f?d)'sqLJwϓݻYL?/~ޏF?Lwo4.{|hOϓ&__<ϓ//_7_ǧjۿi/>V?rrzx:~|zy˓5OAQTa?^ϓ?'M|L M^'/xzn'_&~L6oOw?p~Q~?SSO0&w?N/秳q}ܽ{dWƢ_A;2yo;ÿCb=>}q j=ƛ*Z5EDQar aYet_g(OLJ3uϚBAxsuQh:vtO|f}|9['OAu~o]`iѸO&Qly?m9KIIt$_&I2tYX|5g/O> U_=%#KMg?|A?ih7|S6Qw7^0IϿ}bR~*}!M/:vwOk d'cá;7=sԒj݇Ow~]]ay!_i3JbRssy6Oië'jx^%3&FkތΎ+ϟO?+V'4ڄbڟiǂoy/ԏkCϏ&~,=LG+; uHfR>ReA#QME:l? VOި 6zmqOH}uzz#|Lbj@}l{?h6AS zxuwfG%3wWW$L=̷ֲDR'kUj?󝸘ppN'p!p7nef͜%͝•8?Ľ%\ \ĭ8qk¥N܆p 8m 9qƅW.rvN#w~&tu'tuz tuZ::=::&tuzC84rA['A[WFW<C pܜM^.'M@b!k"ciLr3]$>9nH$`^| AeR!'$Єrk2Dƅ 4(H**k(F:@<-a:Rn>v0)zBaNP{;O0*`_>T;C*dT8sC·Sȇ̝Ӥjgv̺\ιK]UԳϖl| ^1ޕ ],Z6n*jdK2+ ;*(1xW d9YN=Hmynvx(8򘗀6(˸yj5xMϢG 8-ځhq4nC,-<O6*-N1BzLK˜e{9$WQr<ǚf^dW+^=-KlL!n\Cnv3``ٸaku+ >KRL(#\'ԒD&Kwv`I7kh+ _"3387ˌ?$$HΨWLW)RiR "vc) ;[O=#v^3bxI)njh1S]֣˜fv ̖amnΡ]7q~5rcglTL@W#Xq$<<ğşM᥃ }였Mnb>u=&z[ ^:?vP?L\:v(^Z&g; 3&nvx v l.:‹shD!#MUlfWٖlt"F>[꣤cC@X!7`I \_2p;g72eE9mfo2]|2ٔlcv^䫧o[=yTep> [ʑ)+W3؎[-Zŋ7W'EW8Z^{[Ŏ]Wf*xe6V+ja_'Z7dZ2zb$(Hd_͙wCŲ [lG*f"cg=f(ػ󙽻N5?)X5fS|Y|5k7m:w~jc'L[WD>|f-`>UgW~1BYukE]ź(KcT3Gy(|ϸڼ}L \ # [;o6Hf{ͮ~~MI)5#O}Advj]`_x[Z-JjObd٨m`uME; lB>Y<fgOa9mvne+WfP0$e}$g9AhazV@F3Sm1$:V9uHON|B`fa}`}5`^w>V!۟[`uoЃ^}>5X=`n`ZYMP,V֔TT(;`2A+lE#J"`e6VjKXh9`LwbԮ`5+bu ,D,X`EL *UFXHXR@\VwӅ`5|݀ŀ ܧՏ) V'7ᆘ+Cuд5MPHZ>@ӂ‚Ŕi)%;ɒ2r'beZǥ'b*nm ]LY|92/D,)D&ڒ$X+‚ef_i-D,;k^i&NIJC33cɩ^jb>I5V2[k1c6ysdAZ؇Q{ i1gKqG;Bd͇VR @ XSu:LRJ3sΕ1sNy"׍9?tD*BjyXj)dYUDUH56 nRd ES!Y2eZJz} E䗪QeP3'ͷ4`/f{鰏oE2Ql &&%_ &%_Ok 2fm/$Xk$E*Par2|X.$H]di2g }C!D¾` ]uk"a-V ,K)zng)nY!jwٞ4"2egabs$xb#b)oˣSX6*LXҌZHXd ,8X  u,JcB}|;_xº)5cyYJ-DK -/ja' SL`<=i 7#|]`* B`C% |kGFcvbK΁sز ,r/C|gҩ Ga̱ưr_l0h81A΀8hH 퉾.0}0b:Èb)SBCd `0b-Gi<aJyK?" qSZ6;9! #V&sĊ9UjX5 9GsĊ`C+ke 5GKT8*rޛ~p9!RppT8c|=X=!pT8cg g3]uI3YG^ٯT_Moq؂}} Vr܀O9q> ;+X,9Zsp88>;88c)Yt 1{zQPǪ`CvjX5ccżrX9*4z֓ ٺ=VЇt I{ M{khc56_XM' M{*PǪicU@>QuU QC>+}V6r 4^ڳj1_0o~o2>]EF 0[loի vV6NV_"=Ĵ!n= ϱ/51?Q}kqHk[mբ kCzJ A*yu)%@.RJ>>*k(e~3i T2O~Yk4Xd~Fy藍Ns۬m4쾓<@' ( ̯.sg@ s9 U5І`3p0 d@F76! 7˄Qy\VGqhd~i 42? @# ~=͢ j{B9|\vV8Kkt>)ڻB0˜ͺDfnXB0ʜ5k!heN(q 6n>42.s IG[5́ͳ/Wn/e<'h`9 6̱ܥsܯswm V e龸2]cR_^7'p 49=t"s(tg1y;7=m̩fn~y65> ||veMv m&2&sǜx3b,H:xn3pŗ08Lːw2"K鰼iQa:LO}e&{L }$x!g9AG uE^fMds֘_0#!68[#Ā!ϒx&1vH(K7%D~-*0xz315F c q+1C ^!K >kt37adnSg/ pM YzT'uLG$;e2钀t'Ɉ3\f >|n2C0)N߹It:x'tn@0)NT{hRt@QLҵ 0x׶@-0w t *`W68gN[?^i#~׻H_ m 9e˹k vO 2.i@k6xV+:heNR?g l2'ۏsQ~1YxdNOoY]k] {ٕtRTNfs 4YE~kCffC'\˽uA0ݶ'ڧw+ػOmaWeu7{vs:{s2yn\آЃ<.n < xoRLNĽd6N3y9xΌk3lQB}&Η滳v5=M4lf8Aw7ݍS<+n;m @x&jnگH @y়yy_@z&m/_̈́) ^x&e3 7-_l n8zQ( umspB.oӖWBA[]WNĽI8$y:C,t7PHVȥa;,7Wھ~Ci2u!cK6nPrT+Cn^wrx\W֣mǿygg@wtcyHp jMO>;J8>1||3zPK#Vvjl Gredmv뫥+GVQnmG.𘸲z\ kWv{Jár>_Uv;ʶoؾvn;~3{ Wb.syoef);=^1O]}PSSvNwVbVP 7);Օ}\*U=v9l4wI~T9ϝ¨Ót肩۱a>cWZ.κ~K3qeBۯ7Ԗ.S2k elKvo{s5}eAvKc̰{;z{}29fg|͒Mk[#csOQL'f? a{k⊱G\aBم"12%/PIqZ*({i#NſԴDmq,@--JI-ucGźB:s:k]_X=Gҗ *.)C-EOFhL|7V)pnZc_ p̷RUU^M .ݍ̦Whx[߄':#i񭢋~)Zj)HD$G &k5 >kQa& _d<ʮSLuᡖ;6<8glSBׅdm?20fYYT3*r0T2LƼz"J\ `Һ3cy5߱=_ˍ#NMu:=c/Ӑlnlmc|^GIVI,gVn'F5*xx ڱKdA=a0_?!0%B) ViPt R{] y۶$ 5zEZ3oKJb'NmW)A?Mll\ǃC4vg=\SK|aNk5]lG{3A|B9 _/1 >#|t | |4_^?πj*It1a*؀dO0Q CTLhC1Ij)l)"iYAdKf!i~[P2T51HAV:,=;JqEn: RajJ^)JZl ƶ\ ;PPVV )nlXhSUV7fZPXCdQ{Rc-+䴺F}BT<|m-T#)齖3ٛMo-EkWd=2d`qF[u,i_4#!v> `'dс˳\S_AR8ӑQ8đme*YԌ~C/{3U,X Y ~LaB Ð)Ձ,)Hod,_@\MY @Ԕ%r$ XP4)[FhRT^ 6CgE#36ķKF|gl|dinX8CTglTK*6rAtgltKPUzy09?g_~i#4GlmAGUZd4UE?4*/` 6/+>s.:}pyK@ s[FI8J_(= xwݩ[%Uod ]NvBI ?:B~1k"z=e}~[lomKAy"  AYOdsU Pĝ[u\.Wcp0j|T1WƄNaUU }/ +]+kl hAs(MA+VoSnUhƵ1dd?^mW[:N F+v+hp_mJ#wwqӴ̍׮am1E$.,""/r)ϱKKs<~;뱮/zÂ/b.`'fK8]\^&h^!#T="5O4GA)s4cG9s]g45b.(9t5bnk\o<;CTg京3qOKsܶ(# 3掰f"^?kI(lE¶.[&lE2zm WM:~ő/fDM^ =wsB-tF {2ЀmA\0vu +f:@hz~]_` mqCVieRɒ–U~ګB4 C2 AE2dQ6H ŴPAٔU"ZްMAqm [X6<pZCLiS|s4G L:.L: . v:. ]?_VZB8' ^>TB׊8ů,^v}Qk N*3ZuZ߂ӷ*-'-8qo+׵nZ݂Smo_s \[pVk-8yրkq NܴAZۂvasभnPKљB/OJMlib/unicore/CombiningClass.plVn6}~ؗ4u!^(JB NѸe[Z vMsڗ̙\!R{ݨQ7?\WX^0?yq2ޫO8~2Owi8biyVQLOe\aW wϣ|;P8|~m"rQr7p-.~:wD^'o؇_G1#31b>|3JV,I<ױO[Qv:"o4|YE *迆4$0›b A]n Cx|xFQNZ,$>lE#J;u_@z#my }ȱÚtH"I!8 o hۍu)VleZAl" {.>2/ga@u@a-$e_1*H9gn獑7h7 HݻOP3.i <_+4[!TTd$K dɻ2 i$9\o_P,?72yeh#EdvUTCx֎.:rr>ʾ}O[_⻿PKљB^{;plib/unicore/Decomposition.pl}-9rΧl8iV _dÖ]iyf֊bS琬f_*6Y|/UE/B˗_Կ%_~~/wÏ_ן?O_?//m5&_~//^_+/_?}ǟ~_|*jpǿ_?˟ ?O?2?VJ~i5}ׯ?hO;7?__zwϿ~_׿hU?_~?ᆪVX//[m Oc_Nj֓j|m?ҺO)B+v=l<_OC_~iU|Z?oj~۟ίO/?ڌ+j|?w_%/ߠ?O?zk,˿cFD_?|_?~˿7owWy7O_/e^`D*//J&gV}(`7sYker=e"YURy9'j|~[Nܪ6t0۠a;h`qAG"{{yl f?A:hJ~;QN?hwA}Ь4g|Enk4fШﲃ~4a >W4+f{Y?}s|4߯US>U7hW~4gb_-f}Y1hޟZkOd/| '{ɰa/COh{ ܀CN y9c琓:-f|E7;i7懜tr!'=ⱍ)~Pi|oאS:kȡنrCviHzeA1?H!frH}GzˌGھ}Ar(Opb Zv38޻\].9އ5'7|xѽt=87(Ҿ˩ ].tCܰp 8s,f!q]r5;mI#|:ّ8숏].t#>I'/렏!琓\ګ]N:h/l}Ҝ4dr)\46gL0mAzap9k1uBr5W܆rNh\h__ܢoa8H!g}ܔlއcIC|5Ԍ1eakǀ>`ACוkV#K~U@8tUCp =yHoc =y\93#CAr!'!' 1߫ HNǐנctйgB/'c4JN{ѿm&EJz[urU)ˀ :LvSsͮgׯAz瀞4M{NӴCٮ'gp7ζГ33Jz8R~8BOOI =,?.Nz{m쿤MKyB1YޏM:X[I?yϤIc%-KkvM/) =F:hN:ɿb}r}[YZj?I۱^5{X2(|Rрc+VY Fܣ bjP^vg~<<ްtz)PZF0_ {YDYq#h7GGgAt̞}JM}Hz&[9ؔ(]INҹicx318>>-S} >'j9I ۻ~ۥC3!~&;C9=zn4jl?M  To:;=kUcf[oygZֿ Wm~hK9wtI:368o9hv]Ƨoyc>?0~t]?>xI|WA߹CL~;S{uZrw!',GIc;wX~';} HC?;])e=h;"톜N(O?]]gNS7iP:[L͐퐓fLǃsNxu'z8>I 8x ځFΛCAGՄH"Pc#O#mrcL*bmWtv2vfr(ci m>IN_NWCs"g83'S.u)iW.tފmbIC{ӅtN4/Пάzﴽ@C߉|vO|v#t=vĉ;s#lc'>;xGA}/61i,_:`{ ?'?ѿ=ѿ7}t9{rq<G} >I]~uNX_Xu.^-?zf+gUPTAN'NX]3DVŭH 1:IN,du/ ʬ_x@eM;uGZ-og̺L[o35Ƚ=̽=,=,k=_?W7[3wێPۊփNc :SoItЧ9m`39uRK<9 y\)V+V+(VKŌnKŌKpp'Xꆃ^ ֌1B¿RNSxT<聄Séx-:P{P8z)p*z`Eqbhw(vjvHl["nbA FN^gX6 U]TU#zE*1 a]38R, VU,f,c } !(v0"Z nb@' ! 81^Hq`܅<1XGP,ΰ: Mh)VV3&Wa\U) â**ab!љBQ/`i*jYKSeFd Qz2+S{5"WxqKtQxEsA8ZTD &zK~k+@*g m겚IKMRzB.W8+]!=![)ݏ}M~%o$hIu} nc tN]5kВw=Iririoܭ!-~>n6'mm4mF#mÐ8䤧t;cFs8z{CZzy=ݽ:1 N}֗ː_!'=nrY?xqݜA.g! u9fΠG//4|ˆPӥ/}Q?Ƌ ?bNאo 9iWAK^^?R>v㸓qS2G>'=7tDr7S;t|et>KuA#|xf(髿O<}:=_A{uҦϠ}4럴O_ \>ǍIq)8rr..'uAOׁ|8zqWǽB'>ׁF3^yh {\?_}u9I'$r쐓CA4]"S8Or}IbAC!'-ϽttoR6Z?h'.u9S].tq_C?2BɑberHO34ivJaGA!`-'!']CN Yy}/\i^y }*H->6͐C9i7gCN: XGzrX~rHOt1,9iqdJ82\6CG'נݐ=5hO{;=a}ӽ8ƽǽǽ{#o7Z\6C< ^r燜tr#W꠹qv y!urs9kȩOrмC^{I.'<c#zldBLJwyeo{21rǐsI_CN}ꐃ.<ӽ!W{C]KyBOzO72Ж;m4[@:|퇜tr+\h2σfSoo';} 9;^rқ߶A}ԭc 9wveiؿ!g{琓\ګ]N:1PKxxt}cXDǶ׃m>lD$W-""5e~6'ziLe󳝖uZ6?iBeNcs"DZ6iNwtZ6Ӳ]ͯ~;m,eϲyg¤(+Vw}b1*=LhPw5 9w:8Zea笥; "ݱ֣ ?ZμO 7>Z<< 7ϻ4fBFh6 7̸*bѤx]]ZTw iIХAK= > {@`p[i*tio}KmEuGĒR,PT^d#XzM`OEu1`MУn,uʰzu[ưz} (- ␶tjs4]-"F)L >)M Āi\-daqI PI +&*SzUryYJ>5STS}*Oݏ0T'̐G1*i$?s;"y+Ï.Zrcp*{-߿>/ C?oOuG-7Q?Wp`C$RJ=+<Z“K7HzP(gxIХtϵ.hW} kYh#IХvF o^KxtiIjq7xIХ ye8Z[ZK-Cڿ ޠ6ܮHd5}hd@vWҟt&:}?aycnN4r?O.Zz&'G3Vajv{z2=;m gS\>[ۓi/i̩u~_c.iFJYI?OS?/vt8 BWҽK\_"L1}4ڀNQ{Q}X欓懟ǯ~3xH;=H;?H;$9H;8d X'frs0?Ч_~ġϼ0Cta>ì } ,+s5 VisԡvJRP}˃}coyonwo}n)}w9.vsvں];Emݮ!ܮ]!$ܮ dn׾q +O'ͼ< vvquv*]O;ԺC\;4~ԺCߡywhi͚G]5 &2h;`3~&jS琱yhmw2 xQr7hٿ)g{qWM9{|h3s]qyu ` D0w?#L2 E )]WKu'XSٽ'8{gn`;{;{{?zt4;hd}G h#}g7MٶY8o*^)9]΀uy'xQkK˚+S]y<{iۭvU6ek__ONg2x۽᷃wػ~iڎxWOgۨ{4~/k5~/{ kp/g kp/gk" //h" 7nm|W]ƏK*h4~';نm {D oc9>{xG#j 5~?5~}?C5~:k Yg1ϡIЏs/i*nU4~i"OϺuqp"OEFDEŦ = ᘹaH {a!= hЫ7(إR٥٥˰ڥˈpWv] }.6ZsFYhw~[wG͋85X]Ǫ]I.]\wHb_vbߐLžݾvo̶+׻W.&ž1 žyK#..n=YQb_Ǐ}qϮ-y:v!7O}q֥9]o>x7_]k|}. )/W?j 0ݤ&Wvˌ_N\O1 2v$iMY S!-amal5 rQ6|wXߌ<#N{)O4R6B7'~;>̳oNӷ=GDn?O~#v<0rnx烀=I>i:th9; nt]pB~K.xK~'90C9N~s #B'kz&Dc_ W T@j<3/ګ_ 5 $j4KCC~Ra_ C0/p ޥyԯj4~4~4~4~81~~6 \ƏsiNᎩ G]j.W5~p?[Uǽj.}][]j.`_5~Ư?cD0{XoE&<#˄Heˬe~:O-8LߊPzPTQ2@4}yKejFf"Y)]IVP{Zf'}چ}ENVtSDT &nbUptHWZmvcx"$ Dtr4?n*\&7vC]ʝ]{ѣd}#lV)=YE"yA5Ѝ/v"zy:-)bPyF#~}=@ܻð?lw,Ԡ1ܼq&KTy^('hK/F-͗7悩k=V m6 eC>&Ֆ>ç{~˿Ն =vp˿Ԣ7/xi֦U>y^& e0 ``oC wi60cކUf{5n7=AtRfK/2۹o*!H\Xo4G7s/j-f.ʓ@PC{Zw< ԲεmsEh )Wlko說W`"/RԭRٞBY[;vBח(/GpMrOO.}zwS nC6u-US~rW:~I>}uCrBTW:8)2zʦ )ns X]ҁU}vn}(vh>'AggC[RVZk?/K08zq^^C0pc㼨# zu} 96Ϋ(3x+W>n鵢nֺ@GhC w&m#wv]p ܂)܋ 0^J! 8Z5R"޷`VAw#Y+|&b.)D? N8xz0*P^Ou鶾+Z>̨&)MR$q1٘t4}Su |)kt_G$=;I-c [oJuDO/e˦M<Ynm;6D6DX#XGA:vX'EN|Њ9(kyK 卷65;{I id` ~Xx/ %uyAyͷ.mmٸ6p0no"byQm%ȱΊh:F/R%ſ1COm-{ϵ|胐֦zͻ.Z϶߂l-X϶߂l-X϶߂l-X϶߂l-[go h i.&Ox0էhcU3V=H;V?H;V5H;V5=H;VVKDaS=:@au=HVU4~68-CfH7،ɏG 43|=6<66I Sg -^k @iu:l50غkB8KBgݥC;ӥTQZ,E -ێǦh|Genxlc 9{1CzoXJ HuX8FPҠ2+kC8:g0c7 eqMߔ*IO0NN 9)mo'6!n@388n8iM_Wv8L$:$ѰoPG1\x GU{ H"q !G*'1%9@7 7}%$gKeY$S92_iM__l7!מ^=Fb=͐E"Q;7T)V/l,?@m pႍ_4xD:^!ܬAr3*C"9: ?6nзl|^ ,G&|=QT*k8/~o :K{0[8cS>^$PC4 ՑuuGkȃZP/za#v#@EրoR_,{"Pj8]y sޱ!l7ہ2. 镶Ce룤_p}- 6$AN#GYHh4 $.|􉃼?9hsD!/GTF$HGƢ ('[f8>rq@,3UGv|=X^ʅ5߃-b3E4^@?Ǎ s ʈsp?|nT{n[PXC59`H[*l|psPh` ׀|)ܾFfYK87Pąmf=ro{{n^8/ Z>b} ^ 'TcX[kX// DTmo8CL!:()nE|&' @kD.AgR p)FVG.em FNp" u;$rDTl#hM^!rW\ M1!3A.}qx¯Ng w.)@6% _o^W xxS$aZ^O^xxd`w<_wq #c|M=K|)#зm{VZ*|Pͅ#ʞeTƈ*pdc\ȶ}#eaX|Co.e1b('ˀ?Ywe2R $'O=WizJ“̷x1:(|kO2 }ғ<"+O=mI6 ݄'$-I&˵ddd۸Mxy O2=Lܵ~HL+<'bUt{zӓoOғ8[Ifxp5 4ӆ%m;HN{ҾӁtt":Hg4is8q;up;MBnx`¹c[Aiu#~MM~R?,s/q{ Y?ï?L?}{Xx/uHVHf5Wn5¯y(C(S(#EYG27#y O8uǑ-8b#YwɼHǂ*(uQGqDܼ#Y05»NT8 놣05»㘰nGn8 S(e#,skL&>EGaqSº(L1Ƒ;dp$#B(8ҹd’ļ4#Y6 z<8b#Y^Kodļp4 u޷8s A~*Ⱥ|lhºObKMbaK >a0BWx،|»>e=>Wǖ"$._(SQF+ߑ+&Pq>7kL`ZV`*0HUDXmi"ꥩף EۣHP:ҵ?^@`ȯDX#u5+.Eb5\J|2]J.3t nGmp[{^{okm-:bj,zw{zۻ»D LE2w{LRۋ"yn/gYi44w{>a^6 H޺e+E^/ثs~~n/_w{@ٻ(b[n/aػDbu}QEu^"b[w{9^y{cw{Qlar}:^kZ>ʻ^[>ʻ^[>^[廆 {b8^kw {%-K[՗ث/)nW>_?.D"+{b,iFwsث~W_b/ HwsD~Y.Z앻f/)&+#GۣvyWGyZP(]GV/9o5V᎐V>lʇSg_XϹϵO]Ї/}O}tJT'}_Gw}ʧ>i>ySϾ\,N7)Λ]2T[lW?6V>+(e'yK N>ӱsþZԿ|5}>/YS`2ʇٯ|ʧDn=w{^vL.; cgkG͔"ד 5(' 4`w4s  lc)wmۧǵn֖}zT{ȵ3r=Iu} a;>#h͓vfw$a;IvDڹg>#Xo?H䝛}FG~ψS$I Av}Fys $amIB⃄;qOYv3⻣}.wpyO wۧGY>=:yO >}%?+yO?>}%?uV{l<Ź ƥcdž㜻oı\.vl/Wx }3c|C>ys] ]J< @UcضntY탴խl%ڳYCskɇ֒>b]MK#`.%]7||uCGk9o8[yZb/Z[BkWo-Fr>d?ѹ~t.C}EO|Vr?|Ȇ.RPfV>pT ԇ*gy}ni峼 D>Y^'ގ:v|׉>k壼lgyƭ| &|XW>I+fşʔ^ߗ~ Xy=7ރ{n>i{p{mzi: 7ߦz0@Ng__Njkŧ1?{OO^=b !^)=pr/Ի%l{w\H\5s&˜eMwֽ>wu Bx؈ tM|<+>X[7ta]}\N|޼ߞz\,_ oʜySE̟A1u(u}.SW5 š:q[Ӻsi#XwTY9o9ǎ>^";Qz1߾XzwH\o4^L#*jg.w[c^omtFprםn 8XsZpo?Nk硝]zlqc˦;7Gʝ˞w L(JԬ޹{ݹ[F Ə[F {\$cYonVr9yY|_JvGǀ$hKB+LGե:-FUOL-RL"uSGL./bbhT!48GaS,1hp=% @P /ft(hpСo|*~E&+>vE(BZ =Asgg`$~U>1si9MDMi9HdY[x: IF_$a諐Z|`-[j/ts__wV; -8b魣a-9s01td/;dp$ouf]!o)+!-8bv"n8yÑG}O k:Lrea-Ϙ:87v&r` %$Eddޏ[]ypu^{L=پr`.XjS͌Vjf|,T3_͌o53>5AY͌"jf|7V3ヨ| vZ3>||l|||K|b||A*dʫA֧|w|܌\݌O>nnnWn'7AW7ワV7?Q݌>gZ݌Z݌>`Z݌V\݌F3>_>X>[H3>vk3>bv3>j3>S3>s ೄc 9V[eÑ|LƷkx̼؏OɆW&&cflE&enlwp*cmD+|7i,c/i&&mXߩyk?zƏ7k?zƏ>Wk?zƏqƀ1{h =CFo}{=ؠ{=o~筿SK| fo;5{?[,5{c[~"}kxFkjU4=v㻇QSQXߥxm7ܶd'iCX`aun:/#rj>/#rj>/7%sxv3^2݌mh#j>R{#j>R{#j>R{&UjQU&Mgpd"{XѴ^-V4WMi|ǫGp|'Gp|'Gp L0&aK&rAM>^M>^M>^M>^M>^M>^M>jQM>j䣵rh+Z;Ŋ֎j|vTxE5WTxE5WTxE5W@rWRJjQ&OjQ6Cj|IGj|IG^G^G^GZ;)NjZh+Z;Hkg5WVxe5WVxe5WVx/Y9++xe<h&&U-jZQ& /jE-@5tQS5jQ㞪j]{+&MTwI]m=Uոո䢪ѢѢP#8qP+vK jۇ/}njhDP/vj%8~ ιƢk,zƢk,zƢk,zƢk,zƢ^k,zƢ^k,zƢ^k,zƢ^k,zh]cѺƢuE5k,ZXh]cѺƢuE5k,ZX.-----------!-!-!ߖoKH%Rm )ď~[G-ߖoK%~?m ,7K,z,jћ%~fYGoћ%~fYGoћ%~v]Go%~v]Go%~v]Go`%Xv ]Eл%2n ["Cл% n[9hλ%n[9h%t~ ݼ_B7%t~ ݼ_B7%t~ ݼ_B7%t~ |XB7͇%ta |XB7͇%ta |XB7͇%ta |XB7S)Ds^RNP|^RNPD>.W|*"/.K?ď^RW\BJҧ%i )}ZBJҧ%i )}ZBJҧ%i )NKu*E_Oӧ%y <}^O%*"s;/K,Ģ>/K,Ģ>/K,Ģ,/K,Ģ,/K,Ģ,/K,Ģ,/K,}EĢ~_bQ/ߗXK,%}EĢ~_bQ/ߗXK,%cEĢXbQ,?XK,%cEĢXbQ,?XK,%k,zƢk,z Qs O5<=\SsQA^k{A^ksCZkk5ָZkk5U!^k[Pn]Cݺu u5ԭk[Pn]Cݺu u5ԭK^K^K^K^K^K^K^K^K^K^KtH_ZZZߠJ~[-qؖ8lK@% vؖ9lQiؖҰ-Ga[-uؖ:lKp%\A8Y`x;%fY`x;%fY`x;%fY`x;%v]`x;%v]`x;%v]`x;%v]`x;%n[x;%n[x;%n[x;%n[x;%~_x;%~_x;%~_x;%~_x;%aCXx;%aCXx;%aCXx;%aCXx;%qC\x;%qC\x;%qC\x;%qC\x;%iCZ퐖x;%iCZ퐖x;%iCZ퐖x;%iCZ퐖x;%yC^퐗x;%yC^퐗x;%yC^퐗x;%yC^퐗x;%eCYPx;/0 /c TYٲ}3[6sffql,}f(Qg8glf̖ٲcbl11gl昘3[6sL̙-9&̖-sf5gl%sf5glR3^x͙-[לٲx͙-[לٲxM-c^|qlٝϙ-sf~lٝϙ-S9ewj?g.Jx.xBalٝ֞3[v̖i9ewZ{lٝ֞3[̖=לٲ3[ ^sfklكx͙-{9e5gA̖=הjf8uJft{sfV8gI/5Rx]j>KGQbKVK_RE.~q|]juRWUלz&sf뽚̙j2gޫɜz&sf뽚T~/5gޫIUj|ɋj>j>UG^Gh_j>zfėZ"YjJd+֯BZvu֯,~]d5/&qlj̖&qlj̖&qlj7~M_kSE{5sfKV8gd5sfKV8gd5sfKV8gd5RJGKG⵩HT(-~//eEZ8Z8Z8Z8Z8Z8'Q3[D e?RV˪xY~9%Ij"^V/yQGjo|ު(ګ(+BW(/^_Zhm/Z۩vjZhm/Z)vʟ ^N)x9O/ EZSrj"^Sf볚xOE vhlW9^M{53[ī(||$^^G|%?!-xy~//?A'לz&A+(BJ)x~/TR#j>R j%JG~Q/Z;֎jZh/Z;֎ʟ'WRJʟ ^I+)x%~/EZה&IҢ'C*nxH^T񐼨!j|d#j>#j>R iQ_+xe~////// ]?A{5)ʟ ^ERJīx~!_5E5E{5imDd5Q/YMTKVDd5Q/YMTKVDd5Q/YMTKVDd5Q/YMTKVDd5Q/YMTKVPR/YMg5Q/YMTKVDd5Q/YMTKV:i:iugJsIިlYvHٲZٲZٲ^ٲTUb9;[@;[@;[־ǪjE{ugKWwD{ugKWwD{ugKWwD{ugKWwD{ugKWwڗU}X?WUhlΖhlΖhlΖhlΖhl[jj_o׍  9(1Z 3$NKx-qCIԒ0$IKd-ICR$wɦ{9vmۃ y!b7A?q NCy qyC?!>kq⺊̓y6~<{{ao`o?m퇽̓y6̤f??~桘И$.ȵ1?2榙I=l)n0)81A3#Q3I3SzT4s'sL.OLN̓S33M81+U1qnN鉧xOi<=tOO<Oi<=tO!g@= wwׯvc0߆ %ǃymJ[5$FK抂:lͯ{{dZU!%g+I٪>o6[5znQRbDDݘUC0/2gƶ494,uζl}}+?[oIJVUKչlщ!s39㙎B=͌OURx:+%g{<禼_ss@xxn χ(&uY<06=>ggJ$,j2xNj{ XLi!C*-3ϭ &o'u-R"@B#)ˆ559Gp aa|F!g7ƢM%X}ɻ:`7zkFM{&m vyCZDܷ3kୠ% US݋X[ ܷQuxm=dଵUc>wN |Ƣ]!X!||~r{ꀉf5 -&21+/TS[%(iMA:7?sx9>D9N^,NCxRYgF}m4'8m  T^,JY:N'xF,89ǚy)44q e|iaQU^bN-}>etsJ PP`I1$!R4nHe"U7©bp8}!6NmLDGg!ks$V?4p@ZFwM~}נ8k|n>ge8aqߛ8qzgv́Kv6vv GtYʜ|fp(/Ypg N_=\iiX8lk<;J}35dIZs|vgh&l'[陯gB2.jJyh]B1_OiJXp^bp,;l ^iWx5C j+lp+L98 eVؒ9𼳓8 gU홶!Uq:68j4ΣQ`9;GO<Μ~ᰩ.,`R2pf(++83`eFU$[(8  ^h(88 . =p i }BG7`^4x1!TC>v1}e8߱EzN{f'q|l‹3VMs뀳'qMxo?8i4%hK-:@ d36e< _B.!&*v->c 7up NUBs 䍽948@ IA.TG&!.Pd!I Tޅ`r88 t'!-^)g aSˆ㎰gjs홍UDEVwiE%Lsi{=vGإ t␵'ˑ[`bg᤿!oeчp=7(Rg+Hl|cgQ:E ଢzPf^D} ?HϢFc;o_G]sz9ߏ2w2,?}pb7μ 3,/.`rs#鏖maN^qoل4 cG"Bt2$HvFyl@l! =4<,1GЖR YF=lŏ,ʈbD S8HNZlU4op/A@ 3}(5Agq@#d #QU oz"QF8{1KFn0C$V`2@L<#lq[ɞÚ 噺:-@#f1'` fF[d"#wY*,e`t_`fIa~ 3 L Dq(=7Dm'gE2㔚"|hifb<_R7')рt#3xh ^6xɔG4,LxlD)pY hSDE<by * щNAz1V]`b?N֋ "fic"#$p;TFH6ѕ!A]v"pO8EDo=#*hQA mi02ddVV^sdO]d v),|g)0ʌn"&` pY^! G컁 '3< $Kg*#@HY!1{-KeDM"6D|F=Ks!ϴZF`B58g ֊ %0Z 0=V -'3'„3\B>q(GLED -`(~ge -vf$xYx"ZK$g w%xV#(dFb[b(::R0cf##Lh_0Be aB „.0VlaB d2Y '(M#Nh{ 8 qBzL- P0$3B Xᤇ)H@cB"xCe.#R0Ab,ArFB*P C4 M@+4JHx!Vh/x- Bhu K |b#CvJiC)rXl o+,k bpTZdE6eaE6`+VmS|`j'8) mIAvgh=2QB[ n3T%~g.QB[ _|]WVҲHI-S7*-ɶ2LD767ʮ$rާdNԖ҇LViP?nJz=]TJtGZsQҵȪ2+^XSi-(Վu7O9/oӲjt:H^B|R.@uJ#|M?R :KJ2y?Cgzk]'YTE,UVۜwe{K7y"(RLo=+Kխ>uV` ׺H .$_<+bjX,N{jDlUgVJMk_-i.Zuf[/*llHrKK|@ܣ*n~;*O+V5U洝lnYnR"n4Tn.wgWG>e"׭Q[STv|YmRС 3#v&]9Ȓޔ ۢ̆&]Ӵ+&Ƣn`2K]}6[Z,u2 }u4lzL̹ R0uIaX8CS2M}t͠>\;u.<`zZI2ac +wu״ɖ]ƦnVԩ7ULA%[")J^I5X+lMʷoє%3M"}z\egݎpî7Ыl!vno?+go dP J`v8 7,;Bn`&Lt3Qg J -;Pkg`ulCv& A :7\[!\1gϤ;-4+ʵ?gr<6wHW#úQv#cv31+gV gWV~ޡ^{ 2W`np7O%B4DSv>MCh6pn06a c~0>Q 㓄);ALBwjO |~R't DLDNF') 4~̠ yrO/+SWܬblNQ w6K36ZC\ihU*jwB 4=7/%m1 "2=U5AkNI0%]stMBS5H/D@b;D=0t"-wHnC< I68$m`ȭ%K4_H?5Cd;4+Ե`9@oph[69@l)"Gl&cRm&m?ɶ Rܿnc{6\``#W'e1{N)!r!Lj@kD%!?#3&H<"ٌBZ/ @'yr sSK!!:䜣SN11 /@z t[>!fCx+SۧOQ>=5k1A6PsOACƜ)>St͙355gjԜ)>Ss6ljZ;!c.J{!/!:{!q1A6Psv=DJ5i7ᓣGL؜C|vQc2g]S\#t682Mt1A6PG͏L6?2m~$9JtM6?2m~ȴn#Gn^͘ދ|LFctmk43b"ٌBLMpݞω!fbjN >/xH# n/H0;yA d3 15u5xi $gX Q頸gn?ML d3 >uo9fm|/zt&EQoiٽ>hlX "2[Wxjݰ ]`^ -"3JO*UY,lxJ/t}d7bN_V`pz]Cj6jW/BL`j_nBlhcEiY}߅kV4*4ۨGև {Ѵ%vEk6e}^<=mEN;$hZqU;%M 7ks(ϒUuS a!(d uLmM>[S{8W[` OE_lj 6<mJ>;m5OGu2 ca*y Z^fm)=u)Һ*Quh!6MЊo%:"鷧fϯFSM`{ }?.34nU.:Y .MsS*OUUK50ORqeL#V)R0e uζB,P% C9qq#2v! h|=On &bP7$o0RO MZ h1OR}])\0eE;LWpru %\ip2f;TyfFMVf3-//BL`nyqb}CRriFP6v91UB܄n#V['M{襥a]1sbk-Ig(R1V'Uh^xni茳vfQL-kj0l?1Ƿk Xi[%Ԑ`~[zGy.e3#=dG,~E-"zeBT _ļĴ䝋BH^:D% XNP;_KS,XUgyV5Hˇ3 !uLCEEnør+‘ny1WSwEUDVFr`u)Oķ/ 3б7)k7<_v/pΗ]:eI~otFSӹ4 L68Ȼz ׸zΊeo_gLђ\Q7Qp_[b]\ZufPO$L^Y7bVG.˴X4nvm '%䚪K5&-U?%|O-; t,Wh睁h(R6Νtzp3贝 k eF٤Xgj[ Ǿ )O^w&"+C@݅tx$ve|eݴ}Wө 'hiw׽ţrnԉ#V[喑fBxoo[vEb\'[ܕv+2{[<*_;=iUDFtZM+ OncB|jZ;tBM}&΂T0VX8Fm i: -]{΄[ȧ%<]+0 ;}liK\Y|vHƊlV}RLJWJaN9ނT覤ȗ![l-4ɕzD\ Wd';hD.7|wEȹ϶0ŕ:WX=QCy ]U&"j>([y] C?&J,zJMHJH7[Nc+]ÈNy ՕΖź0 =ub /J'T@s`܅/;1o\/[;6MQ3]"UI6,$;4$>+(PBs'۝6!+z ,:CCLF  y1_J),u_},5K\坵0V_ZDLbUdyc+:#ˬAt HY+E+0\ٚLVB.3 BmJˇUgtcaoNѕ$WV!Z+iMt_.$- &5W'uR}'qʌ|LTV4 ֵ6[' ΀5Yh:֨AW/fa:7k@o ~Nw'un-eRr,Xkug2'&Ld=~b*ֿ۱+!4 ;\ DW9W^+t*;,'B)Pd^kFuHQ'\3P<)v D!)"xE44jwJP'wu8 %U_~X?1Oz&7oX'Mv_eܒn:^cQg2)Vfl8.Szso^;DrE{s[ C!vtbI,mYX66s.=Ț}XdmCFRZ}[n'Ty[vF.Dl9.," X#>Lf7RBt5 ]"D,6W!E򷋧U^îԅ,mYHqQf/.x gY2Ize3Փ^^*P!zҋMk84_l R"Y;F t/Oْ-SBZ%Z,'֦:]avji.vZ!VѡMX;pݬQXGB)Vʖ\%:4{V[:^LTbD4$R&9*E#7=GPCvOP ڍ2TLK!\,ED7-`pЫ0ٛ4}%}xnlpn)SRkDw uc%U / $G:zmO^WKt{;9Nt3ÝnƘnaG8#=o^s%)4~S=zs4-sInr KpKoV/sMݕLOc<3*s߬Ri5h=>ky_ۮn[j8K\fsvˆ[^Kg6E>SUj4a:*=ܟ (=}W$3>}V?\W (%̚#,A{^lKimzlUWY?8tet _XmZeɌԕ]ZDb  ]f M_m#i9b6Bjʮ6Wg TY0iaK 4en=\fqUfєHLsiDA%Gxh.>5 %"8]C@Y<5<%=}-m3bG-k TQڨCkZ$)`7 N V`-iII^7!KB"*f_?/T,C{{`YBe 簂 Tѡ٨Y'͋^^xQxKYzj>ߜmi@J=\+`Pl)T yc[We0z# |J2@eBE",X $Gwo4n-;)23 m[Rh\87`%ra8WcK1O x c%/ 2`m⺞EdKIZ2  X4wC0!V_[7lUZzwK۟;l3l5U6kJ fL؊̀UF`@l=N~g򣼒#r2 yQ7f{/ṼCeeee|8A g'6*=֛82 7]jʳ U4 s-?EQh{ԋVɼ^x0^`سF@EWWcD&PqJnFt.{P/P f9V襄$HP}cl7B{J0h:~ 6jd7Vr PÍ=lLC_nIicN%8kz];1a sZf0=!M o :~ڦVH{[Ge72lM9leB5ź]on[ӕ}~kF rf;Vv(ݎ0fj.%2x; ͅN.X)TGJZS p<0?,q|mnc?f rvlF'D& boxC="_(0 ߶Tb5ꊐ2ݒSI[Dt2TX@љMc(TqycMCH*8!3*2ժwPz~[E mhh Ip.h{`KòFZ;+NPw@{W쯽~ERŒi#L0ss!*}0uCQQV**]0bvn.5og%-6BDG3;4l E@)ܠkYygSڞ&QxWU謁?꘯8N !J\"[7vtH|S-m4 olokh̦+0A\ :xևz~F}c}FVpvٹ9\5?DXil.+(A-҂'E[ .lx2ú7#x؎rhk=i5>fI .P1;B gO#SjGxJ5ҦO*`mŲ")> #2v,7*YlZDi6^~}HɀHɀHɀ*klPjx{,* Up/OX( P{8_*x$ӯJF:N*i[hM+xqOQfeljE:zYD};@T["X$jJLs*8h~O#YnAVKGMZHTT45ptt`'.i@3FT_$Y ">LOS<㔖(E0 p5O"P&DӖʱ$5jטEt퓞я%QRD͊5Y]<.sVhF+9k@1hWj""W L5S\ 5=P)#ʈ4V@nKp2F)YiGQ@FhmD6rh"2eɊ4@pP<2 -{FuLU.*{Ep昬Q|1sƨxgIj/ v?ώ%Q3J|&+M=%(xt&C;"R䁄3TgZ8* )G`@J3PK1# fF.1hL-2ZV|RE)e&ќI'H2PQ=ɨhIdbJ . 1>uLU.6u HdŞicxPE}$cdX~Bh+j$9nKO_BmW+*kF,[%[%A)eö^z /b^릸2uSruSjge dpUKs%~MFlA%oL͇eQm?I˃75BME-˾$ZTƢ9"Z0HP-QO z.3$p%#t!8n d3zep6MZ0ݫ^$b͜ds|K!3de13dj cl,rb)j4iQV_ e2hőY[4(#2}0w Q"6ž.Fюt D Z)])hGє{hKhKhKhʈ _Jf/E|PPzKxԂPׂP25{)- PlZDbXUfiK> Z%OD!i"U%-7.W0_ݗ3@WVʽVzI.~Kq f$L!(ԃ^G,K6{qޱ bz/fƁ#<],-K`Lw[W)#VX}WX Ĭ[a-ZT .o؀Gvr7?(f2"i& 6{-%El/K6XQ"&X`F3>h["cult]/X#d)?~@)12u#?TXR=gᾌZ/[+?zFll)ER-bKEv.2;hgjIMJI& Gl9Ejl D@d j!"g,!Wy:/]ۀǀ"ꑧk_ԟ/jq8 6LWFFR"K ԨXI<~'$IbvFdlR\xcqб('2B+/2pAN %gb4rA#=hd ([O`5wjphПQ'q^:r$dx(YVbE1Ar 9DPf_z ee3 yuJ/-z:NhuD]x>q6DHI> b,̝|(Bs.qH9 =)717KZYj9 - Aԗ#ӎNy{׿K(lnbf:fY CY=ļ?1`OLn2}֗Fr H$j r]s9t!?:Ii|ng6pdQ0?M_N&ѝupSdv'/22yNzX:%ad̵O xY#GH{+7xۏ 1ih=.kl{%m* !QZ<fљ3}MyDȋQ5w,%_J BSW{z3F>^{/HuNOnE%ӣYzNP x8W'bqu|X3&U zry)cL*/U~T y/m*y֙7IuZ'̾tb`.s2 +j,W0/128pGhVOe˹WuPo ]=(fڦqқ 2{xllkl-;St-CK쬨,cdʒ_UmioF]l[c#_[IpdnU]7t2[yǯ.Puӿ1a<-zMf$1SP!S w3ut[ں*愣j矾g;  QR] 2'=kYT?&=A٨DuIU RuqA*84Ԓt'4B қ̷RT"m&sSzpc%7ԇPC!Edʥʤ`"e vHD!v!c;D̓zys6t&QgMĊeʾ{G£(26<OR7Az@PLJ G rmҡ e;C}ݰb<6ֲY`Ͱ=x_cXk }{k{¹A<^Z>༱; =85[ L$ɸD~o(~0?aWA[. .z~Y==1@Q4E0Elr隐 S˚t=WOY?H;˾%>G z*3e!kdMJ 0F};*FK DKuAUbmrK[ub6.YbWm&]_&|ޥĎMިo>Cwh[h߫*hMjXE$Y1oLɹde>תv/k(ՄE4ޚszIwܼ[fRfN2]}LH%倯w!ЯӴ ^ToX;%r;5hol- Җ+tސ Bo&zJ˲. _l7bJju6ޅ? j ;쫲`Y.jrQCg(CԿr \cʺ"hmb&{!& Td&鍏\.W&̲ e]sly]RKV8ӓ Lۊl٣)Da3`j]Ű7ت_e$ jڭBy%ĺVb]VB+Aw8*#n*J º)c-uJa\R8%눲JJ J ~_o.OOc{nN9|3VjlSlO~wT]Ag{(SfZ0x;L8 )j.%+Q]:{_V? v}^Nefv}vζ6~86+Q V81TMu[1ǹedV̢2m_ 9Z"X}{Au'멩 167b76]*sb\fQ\E} nB—@=GM(nƎ8Eyݦ÷kߚJ swJ@gEՐo e6NO\ݳk#3'bO}EwsL$~ۇ\[l7Ms}EbEKn󕂿` r rMxon+C0ʺE9W=EGDY'QEu ;ƻ9n^PK!qUkag 'y5,m}dhfCE2Mm壬n.uevNnaveuCn~']E}dFZDba6<er=8vu:9w?l#NƬxԽxԹx/bֱ8V:Ǻ݉Ygb+1HIGjbEvl7yqbɦ>鰻tq}7yfnLy0+;(B?7Y Giӥ?їl06viѻ`3ݍYәME7UC5w8iVnәذ߳n?~|?z_T#3b'K0*Dfvt0"&c2~\u hY̦F(0A\fn Ӿ;>AYPfY|.nF g. "eC۴tfSB~E"UC-4a:͙`Ȍ.-x"XT@†'1舯Iu6-x"X|6lxl$TI0PI8LH%%$}h%'FQ*X5t2&Ljs6ʆ;>ҷ~EB M `3 >Çaϰagؠ33Lp3{5hf,L8LLppx221eBaeZ6\-]~E"`E4a:\Ӊ  Ӳ5;:iMFQ*X5Ӛ Ӿ5=|,P\!>|&m^cIe]^*P!Ң.nB,e&$")&@RDx$op$64R(0R\X$6(i$ >  ).7 RTHQE? }(*QTУGQb; :Bņ9byC1Flh#>&ͼe3!& T̽ fnNM۪3b5#jXI3vt|+6>!Vl*Op*6pU8lj$dS]>=!vBRce7˃eAչҬνsm7u6Gb7l]vQf'dCfw -TPKvZ_q#S%e>#v`dM[ MC_;7fS}¬+xk7t8wd0yI)(0(ݧ_'"xhE4=MbćMm B{lXXlSAFLۭ8v 5 fy^Ykpzv?(%b%e HYL1irSp cZ@0+6XK /E(ïlߎ)¶cl[crv,\VԎ1iQ)I[ȳPЖSjrPŘ-'Ę-l0cLrL\*ʎ(r`C-L`j AQs16ԍmMɚ3-c5Okv ݱSVp~- ,Иf^_dn!81.?@9r4dd=p.f}Ǹp㥃ݱPn-ap ĭh(w;֜ B6vِ̄֌c"iBiw 1&vKѰa[@@l٠cNdVrqTPvo UE؈hpLr{S/n)V5W]/ihHF[9{}yGYG98752i$gd,#9F # WP"DV nM ]ܢ &}mbzyb"@L&^lP?FL5">|O //BL`:>܄p=3y*#쓃qxDf߉ɽ˼s?8A|A "*ʻKӉ,;Wn-"ܙE!bXD8./;2C% /67?ĩ؞-x6sn d\LLgP3?;Z@iCF+^%3=*(E3jBUV˛ )f qĝЂ'E[ "o 2qyrЂ'EfԁqطQ"2IȒΑΐm,;ZDnhcyƲDɈƾg -&ZT4O4{777-!O>TO\2D{O*1zQ)?G]ݾߋo[%Iy5O={rw󷃧ٓgϧzЛlv4}ya_/_=ĕvccw}4??4|زLцzޕ2і{l>T 1jq^ ;>xoI_r/[:σ?ps{d67[oIbw6d)RYt^'F#'Y1tw_?L-i#%EWPez#j|D ^d>UTusER~OG[ 5_?kj=ʵD'to=lLNx`+(ّ~yZRI3jFZ緿#[Zq!~wi7q״~o?}q'_>|?~w՟w_}?|ӯ?_W_}9~qw|%K}_?~?ҿߋ۱_~ǹ|7wW_}}f|vKw_|~=7v}v_Ϣ1H?|Ͽ}Eq3%}O~KoZvHw_^UgA+>}ͧo_T@e-P ;YP&HQwߊO"׿w~  kaaO~+P]E3'?ܴoϦ/?_~_wٷ?}7LF̵BߋgS}(ܳ>_9/ ,H70/E_~W7m6a٭_wUǯŗtW"y7b|͛(7_~+1Dw( aU&71hO",T!7x~{QWN!]*ӿ W"/w-Tk 7 !`/IϑxB3?{(tnĿ@#E?WWwK_V/D_?>-;^h ^ηgzk1>[Y,2)ۿ~UOۥmZ^ښ]bd/~)NTQHsn,/owP~ϿQ͑ J([w0G!^5JD_Di@^.9ܿ?_ԖmN?-/ssm{K},S' 0tH}hdfc(c[qokIC[K7y%("4 ,+sZEDWHN `mt%ߕ7tE˜f ow㷀|<eb_˲``}"(k5 !8Ae("m Gܦr4ی-@G7V3|amĹdg1s 5&x7&~Kcd"^5B!|w!} 8ېM 97a?|mt/-PXϋ4}?kBłda`gzYAAz$~֊R/fbbA`&x6 H,tVjT앙}zo&b[ةL>Dd&bFb}ҵ12 q3{LޛhT&h6xZVTJ3 صһ/VعL} ƾq+;wJIwWJB9G35rG]ʡLŎ]fj$~uf"v!Dد4Scم;Mf*vسCQ"R7J$vZQ" "J$1vb!8ġ8r#BnDHčI. _kg?g>3w8isڜ)-D 6 II:){=2{I$O2`U\ E/*WZIzA#z &zw&LJ'= W+MW06"ڶNDd,c{;nkEUx5.f[]VeFiUhr`>}=͗2ƛtk銫] +r]8pDzQ8zB=#}/["]J;8z莮뻳+ꪡ]t+ó+3.@z{/G7(w,Y+"B7 PvO}/:b}{oB󣟯?Teq_y{ᳯ Godaֳ*>>@=n׶.wfK@!t_XgKB}%{2 K*~f/\_]BxOCpŧ?~?_wۓ ?/R/~ f{CaW][|3[U38 Gƒ7<{'Ҍ6ll_iOFq]4'GbI3UwkV!}h_WQ7_;|էo7x)~[yMkV:֧? HXOݷ/y܅_:/2.Rһ?~6Sß?wo-U,(?b%m9TȆJ8XRx\%F|JWOaQ.4+Ֆ" 21@ƨ류ߚr/W|?|<grNNRjorv1Hg5_eVt縤 BTA9Y2'sɓw>Je?|5?=%„v׿r0|Pd(#X@\d=6"k TV[?Ht#7̮ٺZ7"owwiw\3ӏRoFO1Bpo~#c_E"Օ3~O?tug4Nlv};rV$kĿ -z%)2xnDZ/$pk;>t_:^8dO?Bxl`ć[&U,{ 5׻w/ DZ=5pFR맊 C|76\v?xlP\vӎB[mZ2 }/60Dp8mo ӅDߞβd>KuKwmarFfWv}u<TD|u{;C{o8m'S{ ލ*6CX{} iƃK E2aĿ:&g6@'íH\ m| ">j)ӕLkY$RB~n SDž^D3E#=tFvVONozOǻ^n?5bƩB}ֈFBv|[FLBuwX(FJ"T&w2B\Z&ልʧJtMb[OÍu"t8p> {pm˺65.;vC,h0AO $Ni0AqNG ld4Ѥ B`ks \= PH<ǟ OSǟ> xK<7#(wjOQ= b#i$e#2۹bjC& /l Nb2#UnϬ3]R 4 piLA0҄e)PK3 ,-(Y(XZR ^iMA0RNA0҆``e{ aA!Ue@/L/J/H/F/D/BBmȪ'1~ǜTƏOSjOS)&s+|@H_Kڼ>bw?y.GQt5#0 |Y PN.K;wobmD:&v;g̣IZ޳X߄ ݢ9KZt*b'R2 ˄;+ԩX&\31]ΉĞz~hR}F1 ﮽l͏xݧiR~-VB.¡7\stfՀ5.V|XSv6on.CT5rXlŮPK!VԺ>]NIb*zDM 69J&3VkײfÖ"Dߺ5!Qn^!Z$:X܁6I٬u!g0Z x ,k%o]ٳ̕eB<+^3DYK.VW1CԳ"d_VT1Y)sۊE3'q:=Rk7Գ]jzvN-PN%Z{t'X9^,9Vk{G=#nG=enԮs jG|yDxmͶG7&ިzDxt4 Œ;N6鍢NA=8=b'w+d'/n^Ǝy;2qrJE;NnXXɽ8%'FEԝq )7;5֐J[C*m )5;5ʨgGԗR`v4kHٱ!EFR`vkH-1!Euw KeMF^ҕx[lemXߞ4gLsxGeև&^rG|wI:, '; WH\G7kF-qX'k/%ѷQG{74̣,>G7{I_wqi5P CS=dR4գO, _\c<+Wb힑kCYZ<#Wi$f<'rbP}}7Rex!I-4_dx =L \- ǺKȥMh5C[ \ rO< Cridj V5&rO7J³ S}١£ƴBAn0lg{qhEg 0 WxdéĬXrJI[XL;v.k3JQrї=%sDxW㰕)|w=겞`{ $`[{;;-Fɬ6Qt3#ui@gYBT#C]T35X #u(W&0Q>1"[K odJrI0w-$(=z6QzݢG(6sj<@qiWG{pz\<͢ʳ鉵JSBN}*/N 7Z~˝ Tޘ^rOM2Qu-@.X-\ &uϼD2"{!R| v"VQW׾v@LY],.ުȥ,32갶/- Zzudey"摡a~dvRk5G<#-{ÚOپgZmuŗg~Kݗ 7]ol8ᙚl[ȍL|̲m݊fݑqx<ŞVK.ͳ9X簶4+okSܼ\Hзow9ٺ吷zٺEзo8ٺh㐷ٺwCз#Ӝ됷5O4fK.wcqC[}6ԻgG7ocHgo3w%`rp=jhyWQ6wwwz>ḌWH*0$gi!}dn߫]և-FlQBVL1N,[q̰kMknYhsW!enmBFUt校I^,y01Y$R{u)_W^rdɳ}5gi%bsGK[W6.g!}Ez]/#29"Ƈ7ݔ}|#3pZm[KU "?滬>s 2rLOFAҥyxw[Zi )A=\;& XX[0tAn:W#+3t%!&/EVsgLې^B[uS&dL[ڢiDnĿ9U ,59 KIw%B}H|,S1(@ \\^c <ǧ#+=YG7Y50 Gy Se( 09lYwHI;ڐݨ] q)Ӑ{ Vٴ>.^IH_gz\k$=B/39u~ ,*E9r3?@~] _Ҳ0=5F5;N_SKPG[;8T%7ơ/.0'akJ o~dܣ.K6ƌӗ-ˌ 1a-9r-ӗ7&''w`4[J pSt }QۂիŠbb6/.(}[ - /K+@,MQ0+s.ێv!%\26/BJHeS[%Yr$IE'lC?ߩhF_f70R\̖i{-¬e363yh,u֒L 3c4Jt*Odk^&}lr3-WyF8\^\hEےѝL]}=zy0 *jj =<8*# I{P}3od'.@K{P8AC{/ί 0`eEvIp=,+b4,k|YgX6 :r5cO+2F) ,WKEqT/ztXeO#ʕݰrŲ.WZ[Mae~W43Ok+G(F׮f̗T[ H人knkW@*&u41\ -k aa?-OFx~R'㧆a]>-ºzqQ$B%DD8B%K]H+o_9_L{wr{]ʏIq<: Mэw1^N=y&˗ w6/}@>@jI#c-uc}%x>9ڧhis~߯Z\/J/(EJS]Tcա}ƥ FC. v^MQk ݡ6\sk.c0RFQyTQt g]|Iih DAeZRZѺ*RJCM=ȥ"XR+XRAWa@V;C?YpEbjjxbJQ^QXxZrhԐQA`  mH]I}ȴb1jnAQd:nS#ovTw(ɤԨ{f-dr$}bF6Hׇ9;߅[Q]_%f3"&}\_F;xhtӎ/-0"qꅘpcÿO5Jb]wVƹk(OuEh~%b!.1's?y\ Xwl0ƪvhKr5Bn;iL-Ǚ*J Xkn:RVϟD%c敔loe[ki}e6"/S@RItը/Fj0WfItռW^٭` ĺr]l'Dtr0..)ӐT u H6 MI_t)&:ͷImR $M:&Tm 6 tm3m|HeXo1@-%tyD "Kv#(K$ t)2:pJ* >޻v~Q,'\F)]揞Ux?}ʠ5mkeB)ʕ]>W%VǚpQSަYʖ&̖t/`؅Th|ͦV4oo9M4F7v;=-pD_# 8<yܻ^/VxWǷNbejc9*jhRaf\'@f;0,Ē t RBʐU)9{ eLK( !*pQ>(t eIK(I`(I`(IQ`(I!ha"A"],CDE:B.a"¤e H/k",GE:YFt%rT=q"=)zYQ)jIQ3ˉ:VrG#ELF(<뗗uzLY32~@BA_``cxI*[)=&T8P^6d~6e-hQSgD񍨱vi\4j;eYW85̠@gUgq92zKlB+8<:h^݂v,f<_5q{ ^Bd^42ȴHMս"#2;a.ﴒ![vGB%^^B'˸HFeL)r~^*>ͻ0:*kQuM 6d$QxP]_;~L@F_%hqdrB{a~3* #? ]qńUE q%1$*M(kRE%9~MP8K4_cLkQ/;V:iq*QA1fDƈEXƋ(-cR,#Eps_Tp0BDU>CT`F=0Db1*>cL}NLjz}.h\#0\Frbe^1 ܈j>?jPp> O|pVOL|r$SL|ڐ'UgS 9`d}zħL|:QkħL| יO,*3)F1SzBũO-+ÿ >(ܿhi؍/}S bK!/Ţm,AUV||Rl '/_,ut(ur#8IN_qWM~5-<3†^4"+6Wd\oǙOoW%.{Ļ;מ~N4O{$ycIܯ M}ӱR/sg Ou!)x%K(^|^M^<,ole$? <GDG h4xLtF7\+'5Wo]ĹOq6kO윐{?EO 6ؿ9\\jq C2Qw2w H&:R>uSI_nyk^|+Ƭn 4.Ce~՗llJC"<` _Wz$0}|Yy:SEOѯg>R󞇐l'jt1iƱ$6w1~MZJ_tů#Ji)K״Fk"oqvC^2{3ֺC_H_TO.ӯcKЧG+M*갮v+3eU?+A?i8h+ߑC?|z|K4_}KtBQ}GNBF]gʥn<8[MJ9Dy&z y?_/ܒhg폵 eLDan<2/Mkq؈뻕Mx#/?|#/zJ}b%|CK '+[׭/yO.s@"Ul>!d'gq*iT 'y6.Pt"Ok $}r&~E#R%H߯ O_r4U>?vZ׾u"8n|WZ5>;DqD㓽CM6sxUHI WI U*O&˯Tu擧A8UiI餍36JL'mʹIҼcinr>ټ4I=~uNW >})|#27IܯXOIk+G;&> įl_=hds<yZx`)ՍLK.xZypC1<#xx`<;9^Ey3e|ǘ\/#vי3e|ޗ:y_~ҙ2Fg>ssιsUd}Wq9_Fɹ2" qmf~O|Mzk>Exz</|#\+KF~C&Ed#b:_׌-}oM +MHjY|jS+Tm,B< S;+U>RmBIhw}wxw=B?8iT׊a:W0۝lvț Zlo3;+lopBo1ۑ! ۟5j\0۟ R\l~ew0ྃim۹5wn$k{? ޛu?} È?Cb4+C Gʈ?˫ۡ@b( @j5tiIfkrj/څrA%#q ̲J7Yre"5;̣?r=MʙOĤ\x]首XpcXT6`8TW;夲8jPD:Һ]|X'oSXJ}]d U5KC,0SX@3BZb KBj&g:\։,eQV)+ȭIV`ͬt|% R++]cy5Y~OBUzCQn{FێE+0~s7nv ?ILl{L#!VrK+b{C㶗dm7̓ O*YmVNqy(^`(94몡=0H▕m5ij䃺͞KG3vUzӥذHaS仡3l0W8Wevt_9>? kۙ˘ ~ޣK&U:u0kT;ϼw2"+ 6lBA MiLĔV}& MC{oLD ;ix>JřKgQ} pdg8wIBVCY]I˄4fl1_ ML;̈"-)] \K;(sҰv=4 szd[hx@F#ۧ#.w>)l2vWnC5=qG饟Ը $ݣ_^k07?&c;αi/aƶt%m?mߟdzcgۮ#$]/;ր oϸOUO*%@Rcd։8KH[ iqeۊdIb"uc%firbK8K b4{I b'\$şV؞kiKi4Yl*s\aq {KҬn{Ch@4 )PT `D8y hBu4M)tl0#Aa6^S0Hӂ/sp*Wy(Mk?5N^|èmQMک33J\ƶ̞!Ǜ5V2;`ꃍp~fEԙyD0,,;eYf^o]##jfGh쀬$Cl,:(sGq>'K'5ǮifϺo>J -ܖJ ^sR2/Z3zHK2j8`kVT~9+Z9s"tYn aa=E-rۂSl-z rtbYmR|s_8Kq/l Jr- aX5cצQm%cy-lmAVټcyL[tk.j_r+la}e>[+*ىe[q٪ -[5"9RoxVqCjR~umi̖U4fkT,f]HC٢=-9 K]1gjQ#9Tdn0j4[Jlei`r9ҖȒ~i+pؚ8l9i1 ZY-v Qj-AmK[cMDB;VirV[$f0xo-{`V ;ؾz֖LvߐjkNDUHFwl}d[Q.#(sZRKNC LO-ä0WX&R/*osH ,;,ǟ?'Grũá8 &QH֌ S$@:IY}k͎qM_/jw ru} (?'H+~2t.[dž5C@dPh:c߱BG&u^*#*Fr멖ܼsKarrJ8 DڱZvt?_n>3j 𒤠g%y!GM,sgy3Ч1qhf `&Op%hx d&O t&l|&6&O*6͞E\آqvѠS޿->tF5w$5O}hSP3BGk'ۇ+$ Uzc7 & ?_KhPHڍ'27 /g0HPV*b'}t ˮپr34vpJE~|_ (ZBU  ,)D{FJbQXnjCrDE,ȭd,`N9!L ^m1rP-o,$].其pw) mᕴ,6I>&1lACaWL<0(2EC>(CخRZmWkiY ?/CS!byh;LQhu+uQE B %u6^\l!kqh-J6e&xM~uT$ɣUqikŕ k]Y>8tj>+(E%K쳣=U*qm4x>aO>iR.K7 j.P֫#ΓaQGZj^zNXmy0`o4-R{5؀K\M큦]}3dC#C7ZF-fg۵=^VzVrW⤜ze[K63K ~f!~s,e\{agi .8%(mypHa7l-yjj'}{sc dQEiMeaj<[x{spJZeLjE?񰐵!΅t̹ur/'Qcy`}s{gxH:G J/ezbwF=kBXJ$gƞ),da,"6ȬCIٮĘ[afzW~l^uԤصvUd{tGӦIVh(\.;)شx=*sb{ld>"d^ f ^1YlI,rEpJIvы?[JִX-~a"uM^Җ풸8%yqŭ-%yq(aI\%/ɋE Kb^bq󀬴}AoW˩7OeU%è 4|U&4eUJY)R-eUDYkqPVZ|U z ԓd++= V ©=C{# =f-ޮPǠu'H+%zڄi2= Sչ&H+ 20iنL3x4Ðp%>!Z_0!,Gff S`aJY^fU7ʰ^ NA ~; ?!(əOHJMRvXXbu|/s4 E4)ަ&V"]ظ|myDK^7ղFz^FQ\* &!m),W Cm6lY#%3!~ Ϗqqh'vYqp[2XN.4?2#o.I`6ʱ(k]dPBB̅%/`ubƌ |~ kCH-sd ;kZ@M pC< &6$sY~'۟n#>σ†1߃ȯ2uAiEptj?pQ 9 1@٨)ឦH4xT­jyj00/|%t!:%h @0h بf Xz Gj雇- pUH>'pX#>5(0JFb_ әIJ⡌.lM.Ieμy{Y[ae0_ nQ!L;^l3 ႜg~:#uE:? f1WX 顓~I9ıA3N!S'+gv:Nq' 8b"^:WN:Lq`>Bzt vt#"q#4q1@qB(q\qB'/dW_ry:0uܚRf͟مP~O_,饾5p6#tbX v6Xs;ʗbVը#RBPA@AF!v0 F`aRũF7Hl =BoGSE@N')ʡ(Af\z(VQNd;#DF,r;EH9pW!B_Zf\1)PSm'B9Ol 0Їd||A ?4s1",Қ".ia5M;GPKFMr 2r݌p9eFPFM803j6F+G>i DF .3r&ȨAZ˕mF qyTrjM#y@4OdLtINǶ2'K;X'76 R(NWmEdØ/bm+C֮p,%uc*xJ Xr;W8½\Kn P(ТveTCpl*nXUX`#R,tq 1vrnjfc96aˍsl7]Q:]:f}QB|JrS:0eAkJYW)n;0՞ ( Fmb7)(*'.) BPUٰіiUI"4C^nq9{4 {W5kW(S4wƒnj@7'Yoyfrs+]ya gVutBo,D-"Nȷ7Y <(,sW +zԲYOu~ 8TIH MIR.i-O?h~-|&nv2;u—*v8vdpηQ͚v 8,d]}b S7MGp37},ػm*~" b7݆ ~ろnфv"󸝯(]@V9{jY[Ƹrckdtca@vcaH 2\ul;sTwd .ʲ\.(eg\k";\wq-kH\ȵ׈+fCcy{5Ǣa@{C0 AqHcf$%b% b+:'Y[YVd,|f5<6dڃ\ݾ"o,q ,a,XN,m'g 'd20KKUK+eKk$rR %66$WJ,D8+(!Ӝ6e fLS]; O^9i񎟄N0,tpg'L@}E Ζ+thO=$XFXEX&AMl"ٖY*LR2,JdnUxdn(ý2 dILˆ2-봌-k*-볬zT˪WYeS-lYQԑeSeS-u223Ze@Y&5@Y&e_FeaOeԸ xO.2 E dd.I}Æ.Q%,PÄl\&ʗlZgFeM<]Gn8Fzne8ɗin _*2eF˴4qb/HYLk3UNeʍt5icɼ̔efY~?^fʢ|o0<'pc1[Dkm߿# P%ȧ)2K) tf)*km.Eڬ_`[c$bjf_Wc$bjaPRc$b*7S{dDH_#c4 *B3ZDV"VЂ2.> rPXf=W5(ɥ,pfY-KfUh< jL_Qbd#8VT[vLSpi)SN%M9de%Y3= h E@UFD~"0°e;ZnU;iSόd9HS/T5pf)frxe$)fr87җ)7Fre\#Ki3fB¯&taTհ}ِ6jМ*B}~WX&+W%z?S_<\sw02wÍ6Wb۬dU}U%6ѦJ윭TLάRs; +TL.d}[3vr ة,6VϠAh%٩e@۔0UmKtWmLtH`[ 9/od۠,6{LdIm3n) mw* /7Uhg*/+국/j/+|dWYmm#nɶmbmA06o'm;>cmF\&TmG\'TmGlXޖWb{QE hP@@0|BȈPq@JJP & SǞ0PE4JDGΖJl0V@ ViVRw$nPtXTUif㪪Js3UUZXr]UªJK+WVUZ鸴Jk*&WUژ\]Uҁe v|ڮu9ΟTR OyyVv}#c|v l7nr*N YjIHG&-d5]:ɘ^INǶ2'K;݈yaH܆Ay$Czwm.B;j9ɘ;@_ ǰ+%^=T81\yqW81,.IS˥^[cmcs{\1vrnjfc岏96usl.~̱9θ19t,t-co\啎t1\U t*˂Vl6}uXteCa= !P*$!" 3b]oRRnUFBC U% !VEbg-kZ׏ מВ@Rjŝ`;C\qҗ7]*Y{e.yfrs+].yau#g rȥ#tvB#o,DηPXkە3 \7ul~YFMO4P[\ 'D EP+?w  DA"= AÀAf" Wdy#RD8Cu@DuHB.0p1\!(,CW0CYT3oVR %@9K[WY[Dx,tcD ODxjO?u #<(\r)\t)~#꫎t:jhS4 (= 8,q=1S0vqײ2cb8|N9/Rb:xΘE1V^u94w\}i"rU NK5XV:]D;Zi`r-VgsguB=33+{=uHnO%ùSg?شΨ5x@.81Hu$2b ) Ĥ# Ѕ<|YesS\J0Y@<39橃i`|sFc Vr0 R w+Z T^PcEl95uV8:/7Mh4@xJl '^]p\691sZ*PoNt^9 ԉ;cNwrśps8:Pҫw[p;d0)v/+Ѣ^tx bfZiU%]xkDGzW^FtX/C`%9 [:uiMj;aoTلˡ`n]V|.mxwe?*VmRn5Yz1'x*doǿ3z̹o" / 8~a'OLZ$p,{^fw<8.{1gf8*lch(Ypa>ǧU%:]'5:0ɗ~P=y814w8q8BǍsN~LJӎWvP*;9CDž@EC{:>⦶FG&_#׃/wbU 4r1I:1woS ":P\ӫAe`j@M͒i Cbh"i=mgo8Dcƒ$ N0q ǎϳ=+vL.Љ'N|ر;6p6;%|pgE-Έ6c3DYa(&.o<'G< DV"=pҏ6pIb T:鲤cz S )m\@R, ]@fiw`YywȪx7 %;(egLwW xt/at A0q8178t 7Hv|pt츀a u/ BE$VSb As= !Pt: FBmQDa5QpQB֊j:]5LlM}ɻ!@U8DǪE,dOx 0{&]?ḋA,) W8X<顕Dzd#?O@NS g|"=@r ORX>ˮ"(MŮ*[Ѫ?__ 0[~旹xil΁ϫ0 qBN:'jv~b,p'jv~R,աd[ؤ ljsęgP.xgj'ęDk X\)$82EFN v/%0XոV:='>_Z#>/dYL.2%5eHu84& 7qCoFč[Yqf:ufzGodNr䒫/$2R{d3r2Gm\Aj@9Hq9H_tr9 PܶdNì: @e6:2cNVx4\=l8 로5@\l"8sr.C[y,k=^Fy`ya|UTmzDö4>2padWc$KޘeŪD- )B ""Ab-b V"!Q4+R "#A-r ^EAj=[X1<,T~x7`n wpRgQ닪,4B4[aK(%#2ylFeϑ{-2R/UylheJ /$`^FrqeT^ƅuaHr/*h:"c` үR1Za~q\UK8)_l_ d!~GHH(~T%~oa_U5RI_#_%_ȆU^Z**9"/c H^l#ցW"^9 vu dpSAD:wYX2xAdЪKDvi2(ՍO>:G!zGzGz w wݣ w w$ ww]w}$w}$w}$w}w$wAzIu$$܍Q;Zut[r7:$d?Gz{!}-9ʂ+n~;_) qƥ0}`S{Eka ;9U`Wr֕Pbt/|*Vt+3xq8'@׽ӌNQ׷3[UË>Xƪ3R1려wkSm]"V?hdu*ex=vEǡ+ d uE)>tքX4V(tu#ip ]h-+D G2A\[J9ڐ "ZHqXr$`*qud,ruE1̄EΑ"ߑ+&"3d#W7b"W1HX X~ =肉 %r%*EslbW& Ű1 ~Yz1eA]݀4Ǯr3vE~d,] ci+YB51ŮfEx+X&Yu{*bW7w>%43aF1hU"+o!&R4Q4W2ViF}&|kb+cWDz4"1o_VE&ibaY-w%pOb+'\)':Õ2ֆr˼eI\55mq椋oE!p@"cB0SB$%24' @ ,^%`iQ"5 >}zyi!t2AAXwjAVD9He#\$0^F2#(a&M9k)})(2*4'& )ω"A9<Bƒ3*{A2ʋ;ENxCP@‡wr7e8‹7iʇ5 7 F8~Sv+'ZP!RX%c +]ʲ=f\6Q .e]^E5O. |eT>ʲ,#EY} mQ&ޚօkH̥!tvyUX0BƦ$$lJB RJBھ$tT*B +B+B+r,Bk#IcE(>:GsQ2뾼" ҬG(9ei{P>^׶Jά+B/rFYTM<fN:Y{c9 kodA otqNQko1sMLVj&&]hM I֞&XrVwR6Ԅ, Jd]80$iQ"CbNyF iXqBU΁<'eJr Y*91N۹gZ ^_zK Qs} Pn: 4!DE !c5t5z@7ko eiCh)B;HYLhNJ<9Um7$K=!!ZMxO\7mpP Z"@,10(: ®1 ®dXbEak5)PI5t[@ ~Csu:]@;.R;#DywQ;Q;Q;#Dy}wƮW(й )2P{+/'@(Ð*Hyo@ހ7`( {;{BCtt-"}]Ha"sصtBߠk65kk06bX(V"q +Qr݈a%|7bX(2Ĕ> Dyt0S݋)}Ŕ> Dy-绘mC^D>HyËd*LHCҨ45j)!m-ƖZJHkܨRBVMHYҬGiׄ R&)e̚Rf-)eۙRF-)e!ʤ%X4\ASQFF9Yvrg]3v-6!Dyme&ZFym®e&ZFymB](Mk*(U5kvZ%Fy]V!Dy®Q^k9/t-t-v-v-B׾׾"6/0sa-j9/0waA.(C_e }F/Q 4fAܱs.wQ&J9rp#F  Qrw!ޡ`Ƞ]FR1ӌrR VCyVQrBgc0݊!MBy {O$My$K9r #GIy.)/0rN2rN2rN9JKKK2Le.Ikc.IscHp\F"rEUE䊴 eX ʮ/`֊2l)eUNʨMe)E)kW!BF֔k4t\WQXhr4P5_<)TMW@ՔTMϟjʿxTSO+=9W{rʛ_ޓS{{ON+=95˼ʽ' Ny.)8=䂂S NyW#D95jZCƮ5jZC9F[ ]k(赆Z-FVQU(ժjAw!#Dy {[(gX"л|!{{(w]w@rF]\w]4:/FKhjmM>9Hc|t@{8C |XD>`ȇ@Qh: C!"!tD<9*"M8GECJv<]$dɳ!EpHu<]$d!Eab."]+v|t]$]e'BW"HWτC(8Eʋӈ]8Qv4"Fyq'|Wȱ|,4j8" MC#9aEφ5R^l`)6?ʅFr`FAOCF>gBLW]#2]"Gt-!y Bb$9e{?pVaZt996*QDiz4C=^GìuqDFp]$2aT}oIXkQjp\Ykg")~H1ҟ`uX;#>Hz1ҟ]qGW;#ѕHru=E^e$8`+,uX`]lD #pK<.CXuEmoF^x("BqmN>:7 oAZu)&ʪ翪j 0b jsrƒUOUMNZj.RCjjbӯ ч޾rf#0 ć$BDƣ>:-i$$~$.I8sG߭nmIJ~O_^XःY褃;YCHf+ 8ϐ:鸕e `k+][ոt=uJGhU:F Z;:l[VU?pQ8c\U?*gl VNuȅq=yzGxUGq}T+#n`%n.'n0)n2+n4-n6/\ ׮WpZNu:e֮St9]LNv2!~.p=Rc]A5vuGv1IȄ1v]2aO&uʄa^0Np-~Ap1Ap54Ap9sp]] w}r]r=u RzH#E4UHu@ HuHiT%~U7㐔{F)$,]#va8$5|8L!YNI%r6ZW2|V`9Tf>u '`C&/վil uz2:T&Fd)1R 1RpGr.H]#uhbC8"sNqH_)$qDzOt55>)i<3^)#z09)^Lkgh?- Sʀs^Hi-LRH"h(J0dƤH&9vcRb2&CB~'&^Bj@LqH%.e8!e`'-qB*`A$8H.Մ @DpMD܄pB%x.pA*:; M (>XT-GcoAw4Vtᛂ&ٽMIO6JmJꊽT;+zSNWٵM9]gjb6tʦ @ }c@[ EX9Hڔn[ NPIJ®mjCI Jmtm脫:J†o*t \)}#d%1 mtΦMB)}9dT,sSZAҦ.M1]Z:c6tƎm mYvlSGgئرMݱc#۔pM qJ_Y81ֈS\Kʦc7) z}:4MGlo*JVS{EW>,lf d6ua6ua6uT˞mꨖ] EۦjչM1ղwbe6{b“Em1!﫬$}meYїV4vp{z^)IqSW䦰}k)}e%ap(Q:FB&%J_lYI=^"SZZ߲r)*x}JoY8رMAeSMKHTNہJj;PIKm*e@%m64b6SvVdV6?H_WwGSJ®m EM1#Z{b)}f \JBl&Ф&(~%$}%g%A+9 YȤ{ph,'H_YHۖrᶮia[1`ҿW{>#s9H~7RrE^ H=zKj H=z䵀*i5D/wDdw? &v3i R,&;4ѣu)@c˙Ñw ɍ4d|K~(4M#GfzRcYAzb_~cLY;@znOÊ[x}&pآL?_[=8pV3[64&2H{3]X # 'I =G@~;W@3zrŭ:d,w (JGvS:rUz+S#B 啁?a`viUǛW[) L3$fmR b+3KxڑuW5,3yr3]F8 0W2fe$XAzewf_GUhme聯q HlD)1^.ok]Ng¥娊cˇ($ZLse;ܛey^n~6JSGv2eicIha)grۅuw;4c-k%UW^O1˷0QoN+˱r{.{Pll^%~Y@Ja<޾rxUZYAc?#<5L+;szykZYK`Z?ƾۏc|e*yjx5`Z5$Z-pK~v{6 w:VbbRn`ڒA#=jg1 X%sά$@#Y$&= .N"fD_-" #Dd[)1q{x[n^`dkց4Պ+r8S]5ϼ˫mERh6W jV;ߺjUUcPA,eRss+$&V/+(; i  9[H$Gv K'vE L5NA^WLgvz饝~Nc:;Lotec31}3~r>F@ܐ v{a`'Cah'Cad'NGg.6^3;NA^尴ӥu*;vNGޏ#h( pO|} Xt=]{N,JuʼnO(⺊LơM#3f*$NT85Q9qfn*S 3533f*%TTK\1SQ'e]TIb5( I"JvyaIIr"'>KLSAO- г)stnZ:7]r@K3L,"1~:sźJE䡕Cjd19673’S+UVYXDn1*c23yifyeac:`rcѡ2l v"ɘl+,S WYe+dLL}Th2􀩖;LGbl8ee,YFa,#TeRsͫexe$~In0tYA8``l K@6Ȩ |y A~Y>rK-`RSˑ3 T&tT q["`7s@p0nES R6Hn@jOT 6C$"0MMV :Z)@ڥ=c;u~XǙXOX`meN=Jdihۑ](u@S_Aze/66tl%uNLjtGE뽞K|ޖN|qC0yG[s9^4J|N"sE>p;@r u@a($yJF9T4PJGFFAơ.ǵNpT{J`T{Jx`TsJ8`)oq}zK}%|3P|n8vIf%KNL{G}I̩a m q9a܎L.a[3QFZh= c-2ϝFxKu7TpNp2_'\ b8RU {NZ B 1֮Ή!qFqRkkq^li Sl) k*A>ʋ-A@- Tl M)#P|Sm4А lT]AHʦ BX6󽬟8T)ׂPMk,jsE&!:TY(!>*.ۘ&s:%#\-qMP]q)۸˒ArEPs= 1G[LO^$Hb*$u9ɟk]_dV=2+h ?:z ~e"VU'AMXߗg#f(z# L.AҫwY{ ?ƒ m)WjrZȢߦ"D{{o!Ԋ@ xJGp@#odwrel7Uě~!+rAE9eSPH((Z )E  ; r6X?_x\)r7ỳWsX;[WPo>4 /.GP`%3fv~{$_J :Ur2/u-oƒH,E|}5pk>|R ڵ R&%gϪ-k4xJZ _ Sמ[_4H~^C+ɑ|JLHvj&WYL~*Lãb_++UQ5r+U+Zv eX.1ղs)ɖϘ݆TZf0ղ ZVe#,+ƥ,+TXDhR^ pnD.Ac,,qCEy( eV 7!誰HJcFNQ 7QLXBa(0TpQlKNah11^;]ޏ*"C'~֠RFDT\,_퇛Xq3#<87R@f:PH4@WF2^(LW@7F"P$zJC+Y1t\֐pUAmyeH02䥯Gxe $4~¯W XEApYp~1` ,H- AVA d5b 0 ! d f\V@jaƱ|WڀJnU?0ނy k 0oTupB#0R$+UW 2AJ^&%X }8aea,c/xa2,So|8LesuX9":tgANb7 1+IaFWuۨ_]߈ɶa!LLc #^?XӠ̚Ш7uP9Ìn+=, +y p’)˭梨Ac7t[6R;r]:7fNPlRS;aQvJ8ן&#+1"F'\9XD;Sr9`EG1G'2{D)_zr$QY,0Į{{F#>dLJPM G }N{NzxEDu Sb)8g (z0p6I%2vS>^px#Z4ɼ}9$G6_(*e,&]ߤw '^Z?[6 WT장!mK#:7fIpJFB2+iJcf$!iP<9,IEZ_ڿ)w9 bf{ThU-0 K\)VX}[&R ,tex1 ?!Jv$z4J ~7͜WXC\VDj_ z綒7Y؋6g,HX(+p3`7?eYpw.V/+%b$\Ih/Lb+2Ie$s/܆*L  2xe tR"mh6*NE ,nc{:7+h2rm5{\>%%ST)"E)rIMRNS?S4(L5;jwQm7kFZzy pL79_]=ˀ$/ ponPt4%i7ꚷllWA/a Ėm c su娺~qO2 ȃq: ްq9b!ud#&vpOuy'zyW< C2)Ek#  y0`"S(m̙y nOE> RE"1.˼q]{yE$ *]G 98wpUEhAA3"pUUAxHn C* pܴ( B1A֣.i D," K,浸;b'eGcs,z)wj2/k~}4rrvoZ0]p睤'(Rw`/+2td/#Qk2v0h/2u l/3Q2we^Vռh_:*0:E⡉ͫțKbpo¶TQJze&Aʽ $`ԫyP !UMj' Q52P[néq{KoAj& 6"eDۮ[$]' 0~I:9זpNC&nny -q pY▯ sd|E H#^a.u.E!ړ QD&d(YS-EM@05]wxlDk nCuy}>|xSS gCl8o5nv,bm]5_ij~Aazh1=ɲJH~jWɲJɅ]ә>ari'++.|NF c؆o0ٶ{#^bmRm16Ym㯗ؖaWmytH`[~d5eᏒn[6"Uhv= mÿ`mwL]N~ /.UaF@- 9# % TdqOrzs x+<(D({o/೓UzGUS>dFgFvH->+ԻGST~Ϗa?ܚV|x 8YNk*tBUqh&#+Yn86sJmSf:8冩sP*.L@nB*|#uaB]%؞ZtI`#xIh|IʀIlCʄI ҈Ij#ҌIʐInC)†1"FOJJR v w!ICէ{7 Vi@  [ ie*M]@; ­|VVv]_n,-"uz 2s|:>|[eO NK\N[MĊ[BLsʁ1a8s#).%iKM6dvdhN5z?*& ͐_m5rHPׁ_$Sf{ nuCw6綞w̵D/_a`pSP5d34ļr=^\.WuKݍqy o j ]_4W Lbr ڬaҚύ_z7_0ܐTZU3uYo脈"f. 1 -͢ jo>6X  Ϸ]""SQI+ٱ5h%I{fgG,Ο᎓6z6p/iox>-GvgS[zbC}dsSׯ(+vm"%ؤpcT6;OI)0j xY%٢@I(|:)$%J)mmS),gBi)bO5ZU(ś5wSlM͡%M or*7| p)gl[WlF1 Q%sV \ALidZhatk]ρW0ۢu\#-ߢC:,8T͂F,|CubҡmrR6+y+aei#YM7Y |wơY_$#/xAVYZiifD-qp|aGki4 }`($*4+bb / ?KM*G?vuZO,G]8+ħ"O0.@Oz DF`RO|hEa['>]4LO5ﰤ', ߹SL*/+[9VC{mİ4& dFNZCRLmb4&FZlӔI6MYV&:5:m]w\R5o! 3M!LyIrӎGx7_wr{SMBsRL*I^|(}r5ΤJl !lDJRt4TtӳuSD67>ʥp|4J >>ÎiK^ 7}St{+/Ehq:U#[6Ug_nW6Q:wǜZqzfb(fAwIٻ4TݤIGG"BIGي+o%%M2=Z>:"$%L<ʕLsMCRG-ԬQkkY̌!]~DQ&;iGٝHyoehlkj)Š=:>0&L2=z>~I=L/T H9L/T L/lbR4գ܋_01߭ z5aLxѰØbRy{3!ev7b~5Rˣ+1>R$ӣn='7ĨKHLm5q$e}xBmSg"ӣ摰bJ^bz;jʔ>z[y<ږ*ƖT<'rC>X(?cdzD$ӣ2zyT?'4V{596p#5=ףFwIoe(h1W6ߜ)Ҙ3vL?k}31F~3Z<~ > qNA#G2=}lNjdzR$ӣ/(km3}ީGv2)RQ+(p+y4w$}ia;)CxzzT읤Wgb8ˀ/#} O)=O z+v.^g!Z&r$Z~#nsDC5l1VrV2#eKS=eTmLTLKg[FQ&OTY6!5M]&xFGߺMѳX<]n!=k˭1ʹ=lW˭EԚc5|ymܭ&sieέuYj+ˣ{1)fR2U@g[d]Q&XO}zʹ+U[O73zFJK FR=c%UE}6orNMyձcxZoUuʹ} TI7gL,M9=λ σLQAg3Tc-=#f`=ao%D"p"qZɷFAKK}|k$ylܭ3P}jrӢnz[}:$^AHs7 Y4w~]?z§-_4 ^7GD^ȱ iqJD$"GUiވVVr|P(F*Yr#6*9D쌞1B3H(xFɶO򌞷x){t "{t =>X }|\Y.=X-=X/Hε!w)=kCRl`\Mg ?JN=yy")ǝQ{ q֞BslOYɶ7uciC?ZxO}Cr_A?WΏ=J7=o8uWԓGzQ'2~s)o87zJzYORo:e'b~!w+JN}Mƞ؛؛6?rK)Gn2=m7mM=eMUOYoܾD/ ^_A?v++}f_qS\p[=x꣭Ά|^?ˇ|x8\ 7orxWv9uK̦T+Q/mҥJnYwyXTm7Wm]Zׯꪷ\rYQ咋Ghehpy(uwƁ,䯃~$G~ԏTGOۭ>zƾ55s=|ЮH/Q!k`KƁ,+W3W;O=oxHʇn8֓NTᱢe7'"%%Ch 166~nG<4<ܕbhN[_| fj-~i) ;"gBmR}ej+xp+8g4Ea@MO 79{jmZRt]Ʀs%kz!ltd%O|V-,&Wz򥿼{߷>V똖Οww2j'Hx~=_rO;ͯѐPuXx)lxWt^I~`>A[z(S%5F}tZ?#vj$& ~WPR1旔S_6H ԲA~zJW(0Pub$Ig̙*1 hNhx~XN/,(Tؾ/-O3TXۥCPP5,*->_ڙ"<ٞH WqBdL_M H4" pOn6AJUDd-ÍFiIOz=M|. Q)YJqTv6ԣnZ-K'6YkXlp?uŒ u='݁9 H1.qix=/7EI|FH"&wN}V&KR\@eObC(a@f(RH/ 3g,)+ Wf\i9B 5\dܠ`|9#SBmrCh=v441 -|'zLj/y)乖$/T呜i?RCo^鋼09928)&A/6$pG6^?L+@L0GzI|׷<$<$X^vI4 &M3&>߆]u}?7- bn\(ִH,DN.՚.l;yߩ!kq>Z_R'1u 1SiaO..Gkb5{өvӚ"v\)ymtX7eP9ǵyXK&EO6N[[XO,ekR4g[Ȳ}+IK߮!F)lU?a5TYٱ}u'pi_!(-?c|4q6R`f|si1X Vv@gvFj`_G[ph-sYZ{<.< ?(FXaCڡIOА!s#5#vRM)pj@Ƈ7W‰+J]-nٗyZܣƾkk1j>1>iXKl Ny [0Kp]Pr/{GuM+ᇶC{5l04ސT+{ `j~dC _ dS?)ޅ#ωF3.& {E,HX]|~<%p(7?oz@]=|>rUx{!8Rϳ}g b!V3bfb.[qb],+R_a"\E{2f$*Qr NN&X{:(vb?MlTPϼ]]M`r@ "(rVf tXa|@̝BBA.Ƀ tS ̃~!CBPA '-U CܮmAeBǯxW$ F͇֚ cFƞ< VZS<f9FB ..EyӉwe-|~Z=kz!ln1 ։cr`'CHB139gH {HLZ䓞=,^Zd3X:OpS,(*l;{[ |jX5b{9Ub`l1gpa=ZoAނ/ N8P6e|'o]n]U *[wD$;?ȁn@4rT=W=@=L @dU{Ҫw@B!ނf =[yPZ}w(:[MqQq2Ңv15y OM#u|NNuD>y>  [Eg4Pz=ʒ`FA`AKR8б9@ Df2!2;̸w\MHPUW9;1w2*7!C *0wJߡ܄UM46 x1CEuW#Gu#UClȷ%_I `d295@ˡasFkVg:YusjHtgƝ:iu;h<Ayj&sgݬuqn 1Oi+Ƕ6axXMԘ7m ݤz֫pE\a~'! h#I1Wv^iC`u@ҡ08c",yKU"e'-v4R |O_qzR3iO\kX1Da^*]T{|O?Nz ~b0:#sjf, CEQ^2ެ(C*<ה8 bDlq5ӧ^$j}"|2b?%~{j3qM])}쐂E\Y:aԖY 75oHޡ+l 6,B cߏw`xQ׃0Y3I!t BWQ-Q ))Z\ߢ"tWŀ6ѥ#G$7wO,k؆}*no3<2^O{sߘAN_`#w1Ͷb6ѱgX14r׈|HKD~>pPcROOHYuzYN &;6D`iy*Ot<`%7:ٗKG~p2XNLGzަTx*2Z<7|gYRM'Ju2PɎMrP0+G9.{)jIRXZq Kv`'8#@3 wmb4cNiѽ_?(mhRA7?lhq61尉*R^ID6#Q!\;F~e{ѠӋW>/<&':vTrɿ{q3H\ޮ@U7 H]k?RCnv}ә(OW?A_嘒ؠQ"IAߨ2wFFI'p{#odl9 ?R>.Lco~vvʾnevwn~a-gݚ_֚gB21W5z(>;wd*l>~@*۸:A|.;1[V-w߇EuaO:_TVi`rrQ Q*v4 i Ƃ݀HbWw㌍$s_~H%Vz<>D[Sps,dA.욗Nj7kbߵ4@_G $];.7XU8;)i>x}NJ(7gg=bw}R癶˪t({-ߪK8p!RQ`(w⮞SeEK(+wI;-Lu=;ىw1a~N⬻j#m) BM_k.+h#џT{{veXq+F% kQᔕ&m *wfϺ%++wkFq [fW9(lݾ |گ ۩iDB2ռ~$ͦՕr;}d~Fh;^qRcD"q |_̲yO8^+C̼@@Ixm m˳?@ءO ~瑻ME$G ֪\ՉpY䉰`xr3udY,²EΞCMXQFmTazW쥙F}/?{$ME0Ҥٯ#ؤ1~R$>'қaVB\!Z5kj?Hz{VDЦ `kvPx%EmMY4_f\n،vb7Jojv Ł©ڌIr ­Y[8[j[[;N2k'&m*oNJؕL;:޵,xiUkt"W-w2W-qp2Zrato ]@d VKM6w񱍚T=V/{Sa'[~Hʬ35F  id\#py&p(re+ B5#l'vWfyv ;}3&8ߔaty' @LRVWKl"t#Mw~.v:+5a1?G3: MeD@cuȻ]AWoL]l{d S%o r̾ό.(\+5Akm@}s@V fݾ7>6[T<_9^Mנ^ԫSo!6ظ`~͈* `26_bwI[BPϪLHSiz:=Yr,v}l~ g@O1P:O\xqybeM,F)CP8ŔurMDAA cýx D6]dz;;D(N"}P64$L jytHv>ҽt<P7C&eT=hد߲zo岱N4Q06R&5ZX4X?Y/&=<7dG?ѼYNnA~C|HtP׾pN7~/"3a&qgsݓԻ/>8^Ng<%|{7yIz5xoO'<(o2X^Y>]nIZn1)6ko @'Z]!ұW8+>qSlv'ymhtq-ݬF];,t~IgH;5TVܝvm|aV{}ӷ{wp],ԟ|d* Q;ѻ?M hux.~f7m?_/Tg` k%.n~G9i:mZucu7?rYӟ"y#u_.U>||z*0< ean&;KƘO7]+\  .  /2יs, ĄTB_7u6koWWse+sP+[Pl\#6(~⿐fU?p(wqJ/Lg:n4]I-He X q+m޵EuI,K3!6Bcj|F&Ր,o.Џ;_yaOA:hpi$mV!> /uDc KߏCbV ɧb1pK̹̓ZbONѮ 5} S3ugۍ/9 Hݻ={rv*RI|=f9饒p60YaAM wmr/O{eHq`~mж)) [naFv&8{ ,%6ï~K'ҎTIxܫPK@ $ݽv-7{|}aigV'|Z1VF_EZ@>MzrDK ޷z_Mq- G|glKoa9vš@CsOC)LJ?ͷ^vO u&+šek@Ao|L3xȁ\%T"6wDU_변d g5靅b,yq"+B}EGq~D*ނn[Y~>Io(rt7xuIR(#L(P/Ucq(j9~i@c7( T}ק(&Q[T{C };iՁȍmër*7RUIx\dQUTnj,hE9'Ĝ YT*ܑEEiEGӤh`RT _['ʑ*iFY#%kՇ22VQLe?:-$KVkRWYMjCeՆB8Nk\wI8-ꁨCj8JzLdhĺkf%^~ G†ҁbCIĈh٨Ձ%0V4Αh# u|DVհs#Gt#[khDuح$#lh]@.-vXD_څ"z%;B";B vyr[@`@`@0@ 0@0 @#0@Xz /0@D;$l,!;i7a.$h_a>)pa-4ta0 :0@/02v'/0w##/uJw[Kt6zAе : ^A#t6znAOmݸ om>AmAkm/-'h >A_ ZuOТ|ܿ/-x|G)ʥxd(1}clglz7QK-qƞ8%ՇI@r=3,ż6C9I)d\> r.Qpy#_tx>rWJS=@7\z%D)A_<#HsOpJp8-Ճ`Z? ВAcYV=rp`pfIy8l˶%=d%+聥t\fZfOPEؤ5,5(WvĎbĊ,GY^;ֺnzR/ 5NeJ-ۦ{D$ZLH#6XX몬|i+?_Kۇ=F`M 27v!j$3|a$qU8oz,mm5sdȷ{мV?N/I 2qL k: *{ rƎ/Ǣc/Vrh-ئjP(AdVhaq#ZP~ӒB@ߴ'&%l*Eb% )LH2YL ܼ`wOr98,v1Ϸ L!2Im*5Bv L !R9*4:.1M"rEf"b|CLɽXr7lUUDzS0!Ų60c؆;XjGpD_6:\o8SfR/b67ZчO_=ybiİ/NUps_A]fG=xs0dyDq7g5ʛu\!>|\I)e?1x|7gAH]\ikq\mU8i9 rx{f)^$\]#!a G4媒{$x7ߠ>KqN>Q_OsC9=vTS;9NV)i>9'5 prD[4Lf\Ap$²j=Ƶ-|YR}ݍrXX5p=e' 6Of7^%z^}y3Ǘ{t04,$ 3w`i!ǹnXV_uLjGѪ\^ ϫΟ 'QoÃaر&pr}iܸ$L+͓foPõ_G;/=ʴՓ2(0@365p@O J1 jP=R5) gg$OqԆ:` '`+yB0"薷K\2T$)D,nvv2T їoH7Y$ $ 排q+[O:v|w*$$U#0CEY @UV|Njnw ^U.09tx-N]q@Gٯ-N4;۝N)*??UjMO2:ɜW}yCܢ=+QCМ;weh)S`jw(R_)7}^k?4ҫn7(FP=|wZMo5k׎muң.{E־wT]9u1WBhCh-Bh-ChBhCGyR2&"IwMR_٩@(=!3JK!8cK/$ &ppl *A*(AP *H_g__T ч(i9.̽Z3rXN9nS#rX+4F_+kJl‘Sv @S5'}uAWp2X8]m+MԳqԓ&sϳd[RC}//ïf7r ~jLƕS+&mpLZ۫9 z>tLcx cT\tUn0혂iP3̯l;Iey;?q|NnoUKp#r _#BXs s*(^Xjbәi/IՐ0j%]ȏRARB_9>}}F*C7?xjQ=NnTI=f ?\>TT=Ij?J5cŒ``4ؽ2SdE߮-򯹅T PT_?Oye`+88}r{@Zj%~-UoS5:[A%JSKR0 㦯e…U_['O^ 8Ln] `.IpM஝dc j6^ؙ*}2SfzТ{mzOӳ?a/؏;ۛ(dH!Yޑ~E$ۡtH ϗ0YvrF4ȎƏRcz"d =dT\Ig%'<IߧUx?j!n_*f `aηjC~q>67fy3g9Ԡz ײUדnCiWx/@|Y7=7if9b,+ Ny ,1/Lbv=kݢ&IYO6~Tg/D:0x Vg.&Z[tz?+F,S8/ςrCqoAÂ%QT#7&f;j"G&-vTO *x97)&HCoe;f}`GXk_/!X^~B{[yR~ \R]}G=Γj?g=6feFGSs\x 2Y+Ah{uqsv:|'_2P_Ai\dمf₳ڽـَ۟l,FI-L`.k;e#߇]"u(L{\1_i6^po;NդӽN`{{o$t&.NWj%z 7 lovZB=~XQWrzKɠh0b d.N_5[}~!(Xrآ%*~\ ֓ƍ*L/~^ːOjtx%΅mTu]{uݼ}5յx4޺{ij 4 jk jN1 #"-`Ϣf"c%xjo)_A |5ނ/_M XS;5kZna6Ht}`K7HN`z_XHf(dDk _ Xy{Myݖx?ɮ .s`'a?*غuZ`hP)Ig1Y.ě<&HvٷF_J_K*3|D=ใS;@Lwʹ[c2kZy 1_Kv텾>ڰIuΰu Qߨbgvk\6E/IumdtyΦ J7GO`rxƺ;\jPɟQ -~+#[έ}zth`b NvbRy`:G b:0\@gE pSyߐeuww9 |2sKV}a%E m==Ju⨯j.f{vk`P, wyݨ7J X~8t5tgK+X1ΏEEo-9 \Hm' nvf4d~,A|-W*+z_6ik뚘!ywa0.=ᎇ®&""mgx?ͫ'5' $-LQKoo[ȋ0 #( ;SDZk){4x\J۬xvkHlSu*spKp) NT]IO"^::a̝Eg'MPC$5^_ÖI_owףݘ2erLuI9z.Qöw1Q@ⷿg)FKZ9^[fi]ms"H]fu/<ƞC BfCaѫD?}<嬏fw~N(-l޵)3P扔-xm2U⩨SEuë P碶K=}RFLcʠ?} ʔQ0j.FuǨM:I/:fԧڤQ4ӮF}רN;io~@7jSFmߨNI:oTQ7FuߨOi>ooy}6QlN7q'8ӍVfd;Gu>Qnhhj(Ar?jSGmNIף:yTQt;^GuOi>qo8e6QlNw';d{Gu>QnhhjR;j<#GЦ?j֏tG}:QnhH{T=ӭ6&QQQQQQQ1# 9:=>=~cG@zG[? ?6lH1#`kG[?"6?jT'#NP:@}: 0qTOGP @@:`6 bHP>@FH7؈ `+,t\lD@Fl[DlELP>!@F7؈ `+LtlD *@F[DlE .Ș~#`B؈ `+h"6و `+p"6Cي b3xBͥOf;nlw]r: K{w-$.y#ܬW*:Yxr"r} }>?=2Rq10#eb@c`nrHѓG xg>n F6k$-%KAą\@rңGOs HNr;&}y͋I?-m^6!YEy#ue kMCn]Ԛ/,&ܪqo"cMP!Zl)%!lm3} +Cp}TNؓG;-ט,}2`v-E ~ f3sa&%Ԝ>z0f|{ hvtEX:J`>_jI! >$myPPz`ԇPa 5T+tpP9E VL<~L>>ʴoԊ< KU,#'Gby׉m,^ ipқO^m,Zv)(brSxekWv//,$m_XOP_=@^[>9E"C^v^Ƃ4&ݎ>~W8뾭6v!Lvl&/~T,'HԽ$Y[+_T{%ǭ\E;q%nmhu4=IOu{Lg]q ]@P+ΗZAMඪ֭uYoG_dNGmR}+[;ԪAJ؃*@m{LK?yfTAbRA.E_sg,QF݄I(g̼<(ob0Cuۓ^te}κ^qBndm%j|(QţҵyM~f[4İN/sC~oۿ-P YZY-ڬ`wmk^R>+ܽѶ ?GV(>YgM0wmXS/u٬m; r w>;r?+Q! )> g덦%Q8v<|NDCB|y3NWӳ{d2rfc>8# _rǜ,a9"ٜJWy?S;eT釙qmSZa2D;-Uu"'!'{0_'&ހ]zɟ8Ǥ3 T`QẠb0s.wB@]AX{/=N N`'}j{' fA TYX'ͯmJ'zĩ w}BK_ie0;T9wfzE$7 g+Ur}d-Wl(wcu?RnzvT$ߨ3w9 s3S23+Ead`Cxu䝑 &! {l;AT5E m\Ms>*{{Y(51/}:/Z^ W7SH݅HkCy5N oe+r?\O9u\?Ne7UIi9袩(zv9z|=H,&ӕKUk))]n7H_Ce]nU\V.$dN|]uWȚ@ֳ2T;|.K\=Վ{.b R?W=^d [HWdn=NU3kAEKEzv"#]Yuz7LoF5W+oZg|"ӻ JJ4sm˸>a`"r TIX bܴE( s3ֈ]ԋ .XE] ;yRMj#7 1Yq'TGpiBݼ|.Dqxsf)2_Ed F8,<8tXښvEf(MF|>-ϊ_s&G83p)0>*H3<`ԃUVPΕ Fp.bp:%ik2ܽ iQT(Kcu1WJCL&n9xэ!baWB,w"6?|!.2Eq&lqeġ$ N1FFO;|8&* $UY~8.Bs*S\1 %񌡪HL⪱kQV"v+}tSŐYL2UTos秼>Hk4y]Qq(1tjLF-y6iT # _#jRz/ r&h#]#0P`ףz'U7lnuN\ z{kal^Zff^>gKa/Sd_ -Rq;kˬd>UIk^ֈx#(g\z2^kfWd"ΓuѮ3'SQN޶綘RD3DO}&'1!_v5S=7fy\ɒ0Ȫ`kDȪE 6{U,&Cˬd.&'WrEk/#G07髢.Ag~*w2%L"N j`#/ȈPLYо_qO-CYfYuuiYh7M&$ tv$}sE1 "g_r^a1%r/:E7Vt벭#tN/hvPgT4Q<ߢkh6JW(ع&c.br`wQN۾ׅ{\H~/Z3ջ~lƯ/)ˎQ.Lo 2b`mÄ^0q.ʍ^ @moXr{)Fܷbد2w!CFSE/O4fsC twPM,4:;̼vr~Um/phrBozCS;Pef1+2ŞEtByG0KS},xs8>t$܆Br455RnA6il n=^x{e. mdrX7nt^jZVoֽm ;0!  ̕i%+"ۅŸ -=>i@ўX-\"IڢdŰ;zfWt>lQrWi~-f-'|M-J)<-bԷx hR]uj%˶h *0-^9d0-}-M [|_Yffr['Vٱ nw϶x'χXf)~\9Y, 2?$v̳$Ďyxd^$Qn$ƍyx#d^fǼIFǼMp4yOۍ11I7"cѨHȍEHf,,yU+c[ʍi4ǼQLiF?Ōh;-F փa:p- 65z9 1UDUɕTDUnqڬن0ȥ灠.o~pX";>sȁUsT\]FfOӘ:MYZ~qc-ï:rbL 7B'@5QK9Ӆe ]ojټО ,n,fBO}mttls_xР ^j}gf4Y%w#9X@ػXuH9 N]$傈`Wq6ϨV}AQ}ӲV$R/7<4jD#k3ɝZ&ҟ𣐾Vݦ8.:Z ŁI<-OUb#'S8p3"x.<2ŀ+ye8ny[m0wly׃N~sLWwQy*ƸL{zbW!!E\"/!$ |+ T39$Gq=NX)vzOOg`B8z}vz4I#K X i@=7By b~IJp*2٠45,j m5DT6YKpr9 X.ap\Y$ï^[݃;&K7W@}7яX'B{hx@n4GgaWE(9-857$=P {9*!jgݰΊ|?A=kƃB$o|0^A}H; pC}KT *1a$&60EB3_L> tΐɄn)pH9)/XCOLrݖ/ Hx2%L?A+ R- Łޔ ŁwWzOq6H)@FY'dAb )&ԧH LN7HwiͷŁQt8 T9:4'LUFNcIыA^ jjF34ܖSa*0Y7hz&|FFP#-WpCMȦ鞏ΧS=ER]hPN\+Ι&vKƥ(8b8k*b h8BR~u;""CC5;h>A*Q(eȵ*& s*gCɵh8>0U aŵOp]h8ARq4K9* Yy{-RpZ/?}*ojs /~'vY=:??P3|8_(%8_`-x_3NX'  \tGNPsR93s8%9g&==K>L-8|Zp0akւƇ/b|k1p8_58_58_Z /Zp8Zp8Z狣狣狣#"66< 'B 'S!dSnaRm@>OAδbI 62b)z@ܱBs`R $VOAqEcLo=nQf1ڢr2CѸ{h#?Xq9q05n>Zw.~)r?=aI2nȬ-a3nhUټ;[|:OBp30njt?[rO_ȽmMr|?({ClNqrۛSi?Ƈnm\.΂Uci<{͌hŦ/pW-;FPqLB s61j&ן~Cˠ9Ry)~K_qXsK ~&<4yȭn85 TJ#@\#zvuVU|6BFS/,4^a`<}kOX{:h"HU`:n3{ oa>;i-X?S;sD -xu*uXֺ.UO.{i§=rNfjQ\l Od&&E];~ $sk3t;au?҆QRoP].*?O,/vj^wJNR2P^2zGnAZ҇W ix-N:MA!8/n{_ oFg%Y\"ʤjZ=JM5] ^%ޞ[dtNR$jՌΦ }vdk }џn6[.7thz@ X/ۑ5Z!B ^HK&(?2Rƿ/YilVr?ԇ>1?q="paP.x͈t3ܟohFH~c*! *7pJ[]t7TgbGdzÄnJW.4]kl Hg`:oeGvՄ_A3g~.'W8t͸Dv_\oYsFFg9dz1 _m}8G/b-EStú{үYq]JS$qՇo8r]:m:W l}Z-vZ.m?=kF9l4@*}Vy*!Oq)6ߧɁD>btI#9^Oiíq-ب rpׄЧ1z[U^F[1ؖ*7nd2KTmhCw2tQ-/QyϕUM3hj-dkަ ߪe+7|?8?q%+7|0C:͌RnPׁtNl9<'cQ18Ը>WTBIjp4sΏ"R"t%ՙo}E5}j6J! hHU5y㾏u5Kq?PmWT5h1YINF"W֠ˈꎋ*b0NӠW yXȃ<,8CH#|G 16?d"v*"w~L{"/ )cnY Cc{M/AM/Ayx^EN[ 8]ƧY8ElY䴯Ɯ& 9y3տcw3x,;KO#;Md,"?0XDn4b]aw>c9P[k\vE 38Lg,"O=p:c8g,"/٨XD>n yiʖnLTF!0362nm у(PE~23l5M]όed۸8hcljز]gcm`6ڌ36 m6`}"Fꦇi"ǔ] D'"`xrۄSD m}5>%1=#Gn; o.=qpb.8:y ĸGWX(ǫ >rߌ"]͐>D2!qec/mL|"!د2 ]z8{V/!a(lBaHR~}s{1=G /*El5"pkc 0R{5ӛ=݈ʨz:s,7&TsY^nc7nZKZᤓXm5=Mx! 'RN?Af@gh.s]*^[5yȷ~{wz ThJ|؝_Nn)7J*xOT9- JYJܗt%UnfT8+e+Tlcu2 {سb r5Z؅t4!']-cMp P֧ FpDLvLe5fx=޽yzF"Oh0uJ=m9CǗr7h0hJC\.byU z%XST1@+q# LjFmm?:=0YEyH5(/"-D*,iQ&RAWVH.`HqD8*8T)P*Y9"T]sD`_eT0> AE+?`Tx@*b=shE$W !A.#Hه>y0RH=}K: .hxXE ]޳z|`\U?tXFQY3\A _Pgb`UM W)![5u-个{mn @u瑂GaK;iI]hoޒMK6hoS : He HpC17fNbIeMMyS{ÄPQlPQKGLQ̭yPE-A=WEb*T!خ+wa}W7Tek*(tXkZQע>.6b' ϫkgƅRtgC᡼(MzfjJ[cgԚ"žLD#|M)BkJ ^@zz\ʨ0Jǹ!"PJ8'Hvi4q'42ǎ24U6J=ZCcF&꺵 4JQߊYH,u+h 6/*W<]?-Bmp+2K!]N6OwU$Qzڊ+S88:dvS(^p&4Gt:`,4/'R8sviL8!?t;T&¨1u*k T_1uo<$_NhwH'<~Ea0z0/*K@3gގzƒKμ)G5fz4cLFKd8&n<®C}J$<†}2ۗ/|7hJ=gQ0)(CV~e |e!+|e!?Z2J.ee00eȊ_2eeȊ14eWm Jgx)_CBW Ca` #zv*e<ӌYpHӌYƥ<͙@gi,7.+,O '*kR[4spiu&*j=RV5B> Ec3 iH /qZPsUko+@> j4'ް:5GɊ)*7ψ F@VŊ _α؎b[ GiL@ U}x*#Wg%qr_ +ICb,7#bv<,Že3uJo2"(Xe2"Eq ôU1;#F0gĈ `X Z:Us*uTTJUAUnTTGUEUvYTTDUCUn)Tj]U"2Ⱥ§KjJة$W#T֑M[ԑL[ԑ%Ly[ԑeK2Xԑ;J4XԑSI[ԫ[E$kVGGLdvMhmpþ6n7nÎmMhm_۴\eL5FӱU[W45+FrkfjjW-Q~h9CԮZΥjj -ur -xUrnv끖"N7ZU`]-s [lV!-t0Z5u㧇QPpy9s|g8S9ǟ&x *36NR:x&Rr~mc/rzY%m%`,nY'X{ sg8C3iϴ]$I=W,+Kds09a -ds09a \+ld/ΚG?i62-sc3cnfg{#|>2000YCN܅xd ˜z(ʝH@E}a%p&U/WVe]&C瀕:8}LPsXC/R>nhC+l΂^m({`-Ύ#mI:O|yh~X)%Sv-1ia_!3s]r)s6Y)30/s-c$sSnz36ΜNbz`FhE=:uIS gJo]Z.{2xHML,l[yJ ;ue69×yLwχm].cJ;yޮ'!6S:v@~sgNȜNb&)+ؼ<sv1e Mr`(΋jի|g8](lW!vj%B w7/1.U躑™[c!t~"!JgY m`*3/;IJXEкtƛ%veJzoΌ_,N _Nf/Se{^ML 7+jRإ^bA)L, ~"GÚ"bQE:Zbin|-hKti~H_՝]_,ڍG淭Ci~@%Mf~V4\6wo^`?Wm6&߶voIhzతv=y;: uO{];\w6vF F,9 x?Ru)8Š !&9\vÚ6۷%yN ě:̶q1sA7l[Fb p;ulv"1Y_L5,`/&3ɵN/3k^/f`QS_Lv;_bzeo~!ga3\5NYfzV%5Ͷ $iuUP`xrYhj %ەbKAnnP3v YĵpNp읚8gc9ˆu締t|x|x#,M;"I~AojuOcl/=yv~ZÍL^C[UU\>kt~p}nVSo lV2"R"B8!:UfL"tqMXT?Ks%_AojZB2L] ָ5DZӷ*V ;N+#!ᣊx{G'տ2 }6=@xAB"J̳$R̴"RD6T`m(LE(Y0>>o| RJ" @z2BbФ!(fyMf:&+A9 :P)>!RDDN?tTT ҁJ1:0)d"lq~S1H *f6%6uh|Cƛ$|>E{ZD?Cgd+>4|Fи W> W>#h\ ܢa3ƕφ]4|FzF&AJ nG[LEg ,P4|FFѸ(%SZېFVu8tߘ 57H!8p許MI1<@ˆ$lMHn^6&Hx2 Ixė Iٰ$lNg#fH4c'AədLllі$ƌ M{ !fHٴc@B̦-m 50MC AfH 2V@̶(i$|6@Gl$|6@Gl$|4mD 03M #h>b #h>b i$|4mHh 4M&cbc̗dKl&&#Z``h>}I-2H-ę2Fj_dH $d% 4 +IXIJg0#4H/#_F"@/#YFBD?g 5ܰh5b˜/1ɖXb% $-%e$Ьϼ32g@eje$|/##t 6Mp{[HZF"G2r>BϖoHh:ĝػe$|4[F"G2z>M7ɚZQ3jq0xF Ψ70fH,7r0 $$Q%C_ H bBBC QH(bBbKB`/$}1 /$}1' z/7zFZ=_Pky>3i-bIc!h-H!cd)IHJ h@5 FފD3/"9HSܩM7ɚM[ReKjp4, G΀Mg@v4iIА$hH; 6HфƤmAҦ1iIt$&}N 1$HLDE n H-ƣsh8}CF`484mO4Ƨqh6hLhm2&| M1F#F3H -Ib_hIKZH MFB_d$eh-bu8$!/cк?T!`!@HPD$cz!Ao$~#7A @ IdL,lh$6#q4 ;܄pjBb?03!x󏙗NKH@9~@m0P1HCjj$IGV(sofE$0sd'Qސ{$;1Hvc$#I7d'ANb̽!;1HvcMĐ/0-0h4bf$ܣHGrd'N=D{Cv^$#I|Grd'N˽!; 0Hv`1}8 1NĘ'!Ӎ#I$c:xi=<5.ĚLO?ɓ`It$17ěL,()ZPRRk#'%6RRc#+%56RR[#/%5!Ff0$|Ef0D$|5 $e A_ IjHWd B_ Ij'$}53 ’PPĢ#58V98R{k{jo`F{jo`{jōXjoSjo,Ihe‚",:"aOXH% #B$.r^z9 L˭DNҋlC#/Ȼ]N 9 K/7,ZC10K l%Fp6#Ř"~$IzAv bM rĠ6A/l^$ Iy1&YMϋ5?/$ Iy1&Rğm^,Iy1&Лğ7 ?/$vbI DCP|^ Csjn:964F@ӜyZPc# jk$_Am +~_A$O$ Br|10 G$ĞN&󑊵0$ f9=`*'U$Um0kjn$OI )<%5ᒚVRs#JjmZI\+ *jn;k$s\#qp{Iع$qpĝ{Ax I7$9HϽ <$s$pF@VS{Ց57F@VScH6gdB3DЄ\I$z$Đ E3S)ԒD@JYWT ҚJ1VnT ҎJ1kjlÒZYPs#KjmdIK ,i%-5aIK͍,giCACJ%!"H|j@W6@BW6 հ68ղAPc#56APc#6APc#5aF6b(^EB P$dĬ;b"^@D"׋Hz1\/8b"^@DB׋Hz3b&C57ruȵp k=57rȵpFHxH(;$ d^@F"f#ِIJFb٦;#lH$tf$m:->MEئ"1la6W$~m+^ΊM_Eצ"kHtT$rm)6 \c̀1d@1 Qw ;#I݄H$fn$fnf$fnJHV~7d%!w@$RDْp;rDߑk$V\#wS8;rߑk$L\#Qw Q#HpDߑk$@rħC5VȵDC$8p kM\+Hl?ZA V&H1cA %6~bO̖ BbcZA! VAHe 6eر$.=[A"е$2}[ABs+HtnOcV ~7=YAؕ$Lnĩ߱3+Hd^R1H+*ŬkH̚YQ2jqYFMnQ#2jrZF-\˨Łl97Ī@$V}5"+Ī@$V}"%V_ Hj DWK D($b}ED$b}EFȈ0GFȈQP# jodDAm:{ ~#HZ1A:P)DR12'!k-!CoC zz7mz z~7m2 b-}$fMM|w|7  ZĬa|Aָ{ jy jw j:_x9_x^p5nb/H$V)bBVGё(_hs$F Q5-Ĩb#!jH47FӦmk$:mNFӶ^m~$8mZMGbӦشiz$2-ĥM#aiHT4;VGbҦёIHxF7rk$\#o5Fayԋc cV@B۫cJq_c+ķƎ|V`Ib9 &o}F+g ƌ]/Da&>y,t, "(nE*DS5'V"hgĢLu'L Ƕ"0dXw"0?0(N]E̢ Ƣ {]hQrgy]`O ʰОXˮ7v9I9ᄪa}L-sM}4.0'n.:BPĞ g!drEn- B~wY>Yp1Y(<4 @@a M*b@&m }G= PhauA$RTBv0]Q24+n)dhW, 2I/ C 4Ю_( j"C~04@C,MQTB[C¨5~b iCs>)5'ּ!2vG <X{xUP1 >i;^a"Ɓ׾{ܟě$fPJ|1bbu G 1[(%D)SGb*6rb3JaOJYFLleElRb&QJRJi#&vF)J;*WtDʊH/(!Hkb+&v@Q)&v>4q1b黁ӹ͝3bb싕SsUK2 br''&ӈ T~FQUӟ~6b:<1ψ[:3bb '݈ٯVNm(n)ۏG bbɟ%f ?6T`:CRsL'Jib֘ V- FLL=XtRbED?TlgS(%PJ%FLg(%^L)qOK(%v~G)]17Jt ו1;_PJJ+_M1Qu8t@ityH*E0S){b;3w(%fq4CqlxB!Hc!XJXXXi,4R Ai A14BPBPLc!ZZp;JXi,48x<V4mട6`F0>PJ-mD@S^"W9 nT& L\EZN#ت=BEب@]arl5 uk p?&#|u@XNhtXf0w5a:N8`XL7 [ܗEAe"(o 2k#>YyBH5>veH6͜4V)8@;6Hs0MQ7:i I N\a%[B)L`DN(-B)DJ"IT!P\b%E qgC%PB X.QړV Tl,IR*.Vi%u0rb#F!1/ts/'kG콠h T1bx3U_nrJj 'vտ&FElO,~ŭU_ zbWh0rb_F,SQL>1;RbsxTgS|F 5!0jǗ0p}:TЋ 55)19'bn '_QJ}Fk{QJ@ /*I ~w%bĴSBKbkXIbC_t5-n}$ƍZ~`'*I= qAKImi~&X##/F R<.y@>]6Z7,28e6즔*࿧b%GV :p:cՏpWt:k8oޗ@יΈ6T}i:RQILԉQ$TDP5f]<߾Xd(o ?~g9>e%L*7kH4nՙOs&&fzdDʘEibock$qUH&:$n ֟ns>bҫxznp 3=obo_YoPb۟P=]}Rbkob/Y.˛bf{P$vg+]X#8X(^:7`h{יuVsY9mç~HTvU `:6\x4pل"CYt7hKHd[ n |%KpG@s,F`:gat fOв03'5r'k7hY]'D:gi{>D>|1aUkMrhUP#,~4NT `F3Y& ~A/7E3r`Y"M.,ꂥ4% `ꂥ2s3ԓUm&4Œo&mspT >Y70d)D'X/*˒7 /٦Kg}?K!$Y-}d J03] i|`'ʊ%%x9-8M̏**؇t@XW#0Oo'8g >BX"]q+xF=B "*x{.%2gds1ʂS^elՂxe)MX~pn-X'n;mV>Op㩖,Ms1XL"GA[kXDcA@ֆ%NIt)maBⰈ^?/Y}LHlxnȢ:Ǜ)nF$.O"A'1~4mcRuP=/fƝ~u?[B9$2 51sέwޮ8O@:5 j.)fL+X]n"|fͦ gTO{E%;*yMPɻ3Iy^PɻvF%Z8,3dgT~fĭ/VG:HOʤ}V%:a75hӀ " ХUMNWT':΢w(e%~z! ;G?6y:ejrw`>*2GW֔ʾ2j:PϢy!Mw)WeK>Ƿ$˟p=68ĊjHsDE)FSDe0O";*)ߨi" [E+SDPOAE)by4*Hoo2 ٔ[ Mm1_c2c8Aߔop.cߜQV41N" c@O[Ǝ=k{:*v*_TQ;w5U<+uUAULfUzvU.aUز*IgU<-K˳~1nQž`P>}^ÆUuCr&vrѳ&< =o/ vbps9|=Î5e5QVߨ)xb9=fϨCVK1#9 F)9 *FkjNQ}zi3 -BzM8 $gC4ȨiU.?T9+-ˣI9LZΝ8Eh9wIB9 -wsDLr^]^tz- l;' yX9ϔEpây$LA8Gp3S9'?]gqé|Cp!8}sf:k C:kFy9팅rt%fR%йtuJ&')-EBt]  nxBL/Ɣ>eo0YH_y*ohŒг6n6fFCPlf8:~ Y“6!gTf(b9wJFo4Cf9Xih6V9;OqG1GyB[l d&M,`֒Dj e+Ml`݂9 9e"M Ny qPMr4&xeG B'Y1f;^/5ǘGH"cMz6{7qAݛz.~[_}wÈua_F3vX/Kv}oqz;>}ϨHa 2mݗqn#i*F}KU]{j6XqBMi"hdYP1 |ai~Pq,yNAEOzT.AybL 6s'fTS96B#\P9>s|s?'̩'*5GEezn >rn㷠"FgDlg96 bl^\P\1&bw16%b$Q.-JOc%cG"Ƽ jqlK8Zm jqIu[P㌾-" jv:a[4W@!:F-D{$:953|KԖ2KhOurtYdVhoĻ-RoLs$lVlC rW;@dn W)"Ȭt?ӷaidYU > VVIV j֥ fSZs jmzITjyՂu1{偷m^ED$?ӜBJu=+"f"'܁'~9:.iU]~s ^dDsV谚h?pJ2Oj3 c9*HxFPU%VIDj5 Qa6]ZK >P q10L5c$9Tgj&oLu 4,}mh; Cލ4ݔ nжƽ`aи0YhB~04аgvDahW!ЮF+"NrTBb\3oh1Vhy Og:i%y*5y*Ey*a')?́A1+*Iݟ@U2h*4 MhfFsMhTF/6P!Ey8<2842fXe͐,2p,ʗP,:aX/C([_l_Qܟ#`0bD#J(Í6cc>.zCa5l^'CBݣ:KHM2uW󢪓z&0V&&}ǀjHM261^]O?7Yy:$Ec?NcoX NuD嫒7sՓYxa[^m:"M5WJpM_'!I>ܜ_)&'扴F]$uJmʚOl j-֪Geǧ5ڞOj*4$d/myㅐMتyLhy?P}EpU'ʔ{Q{Ce»F{ʄsT'\wGT&ko/Lhy"gD·FZ"Z={Fe³F{ -Ycg,~ey")wCqK.rXt9+"9K*FtEXƚ4k`۸0]TYS>R FNFr; IWΉ~ϨOct U^ 4q #FavN>Nfq>㕘2@n_ZX u2e+ol0 ^x)okMyWBy};p~κw8⅓݁3Wawٞ&e\=jq5ZKrƬh5'jr5ZSh1e6ԅQיp,:q$`Rѩ^"CNn%c: qZ:q3ź>g»`-U^QYGwv}ͪF=7}?hԂۦXGjqUjWP:Ѕ`rD7.>"=6s3c h^xFh4>qgX}Dj0|p>|wa1j>'f)WM^+dLR&!B$[ZL,5IIH"6N 'x]Iʜm c' ayuʑ88/wb|3NnY;wcMKVqn8-ƣf&.ݍ nl95Ʃs>|Jx-o`e|Tr2婙l \X'"ՙtt=tC| Y%g|c\9YW+UB̔q=Axxg(f!ڵgx`52!vMp! psZwa$C<1 $=gXu ւ1dCZ?f+0 !6Cdȵ~̰6>h~ WgYqf9NbȰ*CaFƵ#u_GQYtd8eꡑCc~cH#ì[@0߈X׍ ,}p(Y#h ,=6O匉S_Fd1 hNyDPҷm-Jr5]J*_f^%>Qb˅>ngm>Di?> G(貲AtwlOkSː7Vu2}M4:hd91Q ݇|KNy9f,[Aj2pڇk1ʴ]=V&{9 .u2 P}5*8KyçȨfr++$?sbѠ<])St0?"(N^B[By04rPbC2L$P-b 3AA}"u٠(# y,b"m"Sԁg@ԃ}\; ;Zf1BYԳւp]Zx%:hb9TYH E.i0:!3<1dUY]J**)SeD2 Z"ĖcqT=-h$A<0,[Eyf#( JcF(_21]`d#,ìh(EKEy3.'W$ʰOD_)kʮ;yՔZ#¬h(EKEyuKEyueJEyueKEyuJEyY/֔Y#2тQv!,4-[ԁdX&l|Mԅ )al' DLC )_ĵDn۸(ۆ'%F(Tٹ(F\{PǞx5c Zʰ_-Ǯ&QZJ-"h(4rLRR -excEy8R.,-eh(xz^ܼ a) (KA8ɌTYP!TYPibÂF=}J{L"RfDx:&A$K5Kj JƠ&XNYr el@NyKPktbS{寇5]:fp{ 9]AF,^e RQEӠ5& 3|~y3o){D]>Eܸ]MR0a^]JbqK|X^+n3rŭfM—+n5k f&᫒eFGe)xceqk 7UE56$V6H1m1KxF@WO[&񜸉q7qs2n]y>>>ʸq;nk Q/jM^>G)Rəebxb$Ì'6Ype -N[ǶS+a"n1.k"n0.o"n(.o"n).ŶŊɸŊ\\*a\'lEV ōbWĭeMlqYv ݲ[r$△H-n2kF&ٶ[5)k2n>//e|^,_ʸrRg{Rn q؈(7z MۈczXw9/<Alq lI `xxH_2K/Xf>a,|P6dR1ZN&UB2Fzm_pαܓVDK>WOGj)qL|#=n8na0V.IMQ]oDbLn>5۰Ö́6S3_اc>La &pڲPJH0ְ9OD>I:nT۰RU7Is`~1L!X &n,7 :nZ/4I]|lT8nj/H]8Z,q^Z)q[:͏u6bu0⊳,bu&r(B7_L.IoUcCoP;oK32lƼ̲p$gf/6ta+/[ovc&ƛmc.qc2ec@m-Se1c,6fc\ tؘUޘUޚOyK͉)Cޒqs!o6Kΐ&x )~'_=x4A—x7&yGča-3RqKh)\6G!n %M7[}+FS큼 @߉qhIxb706;] ̬)ރ&Xp\_0tƧ|13_06~曀pn-j~5ǚ iOL8 2z*3S6ڈ%m+9ą&)_uy]H;f?뤦̾tҨįICmN_)nCĈ|(nIf cq_'kn_30_[Mj$p#A_V' tL؛1Moro|M^?nn7aش09C$np Cl'N`|JJpLFB[<`>HZI3nLRGq$stE%勻ki{|\e|}0A~c>`%ڃ~I0LMY|+L;n@\ڭro}u51_Gp is`>H% 7.&n>5g`mi냊o}Ww[Zl/b.8ao!I$'H­[ؿ/L(՗&t[c;Iz%na_=TM7ݍ2[q>"7}fqUq k8fKlab6}]K]x؁sNXnv,OaK'"p3slXiKc)n]+?|{Tw&|`6vrb3E\_ZN@/""ϲ?P8US9US*9USՠ9USj*A'XڣcuhաEV&m2:0ar5?IM1^AAގsdٿ$3t-4] tioWkEz꿧\$$4=YY4M29La_<ЬdWxgU02,*߮7eS!v&[eu lO盾*I}0flfmVmk[/7NI"nU*^6Oõ8붺Ln5 v%5忧C2)۝Լ)ĮWR BM*;CX5~fE`nT#ӟ0`R.o+$}pu8)[#R%4<>H?y,ep4)rōoEs.H󴀅*Fze>U᪰,'DriӎTKh"{,Au%oi0ng;4Ir8tz'R\QKJsڱK`o1붝rݠ",UTPe~$a [[aVK\nC1 Asp!L47qQ6ޞĭ/P.BTm J&ں}Uz@ґ$LϢȣ|p/,z)-m ʖ.E!tѡot =Ll)}4)!*#*e*냩*e'`L}#R=SdK~,[ʮxgl)]8RPv1IA},%X>I /杜VFRP>_dKA ヨ2$SRPJi)S(6Ron׵mE:PcDo듒([rrߐKЋsWI&A%~Q﷭ ~dhM'x'.R:6! / `BF5!X 9|X!+d],XH+# y2M yQB^1pD!:qD!:>U06TGԆ$І?h(-}!# (_iD! # y$6m#P8G(1LB\0Kt`\]&#B>B>ov!z!8B><6B>B>O(\(Q' GSQȧO>O҈B>} # $m},v!wqZ2ڐG{` x $zXRI-!*$S!RB:*U'1$!xDnC>I $6d|`D!E},!ä&>$+ٱ}ȯAk}H5e6B1̋K/sʙy/]*y5|n!n#AG'&5il<#{S 6yodȂGGto'|F$$z^}=?h7G9۴GIH>*r8ӻ7*&!')L'byQE*1I%˂YoLvNꓭI>iw-}>'[SI>wcSӏ\Jnmfq[s&HX ,``|Vvx;~f^X l_^.` }{^?%we/s!{ɷ'^ `/ |^/v| lK6-˔ڇ>rҟwӶ@֚>x7.tZ{Fs*{uZ9'.+ځa@;g§فU:;8g7s@rN\T]*jssʹsځ55@ v pK >S*^ \RO0w|/Ψx'pE >#*^ PO|T0ŖMk}~-ZX)DK|-L7(/ F)\i&i2tyR|SVn_ҥy3K>Gҽk ޺ Շ4FyؾJ"ׇgRe. ȸb|ġcQc'6FOn[8(pQBpTFI=HY!F {qyzeblp1\q1\q1\q12rÍÍÍÍO1p1 Qr1\`u/n[]r ::Ɨ;(Ɨ;%Ɨ;%Ɨ;%A+ciagȓ/L">!2o[Fʘ8柍Ћ/lLyst/I 8W`;bFgN`0n D t TCF'Fok[ԽNODN ;r[^|[6[¸hea-,nQnwq\Z]Ӎ n1umH" b n ]&g,Ӌh{hu7}U/{=j㧽7t=knǍ`n|:3Ƨi9os~`nҭV$lڍPe8ϱAe7pgpxuLk{Ag0{3w3`2\\66vrq͍!9oNyݛ,K>y;4_68/NEqzpL$^a/.%y*s עpY^k:YN(*zl<^.۶ъƭ>=$e>e&)zl*Q/~}oV\G\os/}/oe~e?r ǧ?}RYNO^\~?_*ۿ:&dg8>پߺ{lߴ;n/Wo^.#q/훖~Nq+)l$G^.۷8F/W[A/c=/U]3?/[d]>rU8/evxlߤz[ҏp\_Zd wpAlʭ_\6`8Bق&e<dG!rňnd+fnd37M <.KsȆ>8"dK Ԯ9@3Ϟ(%Q*RR ,Q. D${(AT t[$D>W#^$vuhR \q@",! q(Ɉ— @rq9 {2-P)@dDsZ]޷(#bnp !uE:"Ĺ2${ֳZ&Mg_;!2m\ -Bd8І9|aVˈû?nPBq2g\=`Z˜`Zq :bY2EZ[ox5bxyTu2 p}d _g$;Ϙ& b@VZ;Pb`X+J,X1v+aŀĉF5V JX0 YȊA=KTY1g1+,gŠcIs? 蹏'=QY@ Q>n_0J>L 1M>P w W^b FK@r%$RIЅ? J3we!gIΞ'I$$ 6YIǙvwہ<4V ̻CFfBys>vД-" mjDh] Wtf-5GU AW;DPkkـABVvQ#K Q{LHZ{Lc{HHl;Hrfr'ߘ}^p_!1?͂öo@L#6iY/<@l8!σ? sa}aC?ގn~} i1g/Tڎ$Ob@G1Tw7 IiysAK@^.KyEnWe_@IwkףbVŮw]hIBeF);d!J]J=Tfo]÷QrD $?ٻ vntSR4?e Q \ ?24 J qn̡(n.F/1۟A+w=\t_ 2RFs)vz7gg3 w|iځ$@Ɲ^ȃC2%^/%v!)Zn?K6T)05`.putX`jk?IBWaXvC >&S_I@ga V{I)IU3iq2z"33 @m3#:3Wŵ}fU0k Kklkw 37`#f&lvl,|v=Hkly6&O\~q*lQati|D08𖱹xvuUym7Q H͕ 'A7\sۅ{U><7Hv谌ÿlϛdDDfPsuo#E72IIRܦ=[𥝕-v8"PX8^\y=D$[nD?/CI+R0^@ V$<(D#+Ċh=hgHESIbE럆,ߗ?=G/3++ޚ-Z{zhv0\ſ}3Jz-M>q N^4y~EEbz>qyKUMDç z'Ư:~zAcGߚMZy|"h Zhoh=Z' &h6hZ 6h@k֡/C_ ou|Ph uKHHn\ا $Wl 'JO܂eyhF7yhR'CMQB =~塉&;|(B }WBwv:}㑮 $}F5 *n2z4mv_dn;(eQ1 %9tLW,mB7 *&; \D5MpY(QG "mB4Tw{Pt6۱ [nTDOU Ts3=՚kn^a0¨F5<57v >s2n,!wVs[RsK3q3=(٘7k\sg7s3U$\7)mLh! SpT\EI%迌$ 3 u\3XA \3!D%_ B B?f ;f 73/+抽'抩g+F+&o+&_+֞=a``}`X=`__}_m:HP23" `EJzT\k#(B//JŪPҞve?UQWP Pa[^hZ](B'TXxQ^/Y~oBfE<# uNا%y9%3e嘁%3=rJfӮd1~2rd@ڒY掯KfO#Hpȭ 1wc 8{>$2<AgA" #H^pF/8R*A#p\rA%}8>W`+@ G Jf`x!<} /yHRsHq}8>w`;@G #yd} 0;d}q}q}+z}+pYɞmwu !/U_!"T4Cj3v1*Ӑzr6KiUUNEF[p7:!Hyt|NЎΘFTL'viaxIʓT+fV0@DdJ$ &Ղ #ȰΪh/a+q I_XAO`ԉdBu"YD2#\ɂ4D6Lv6:Τ:9HyI-_v3{ĈAH2uSy^%mI@k5 Za1V2̮ ZˠEZ-m]+f f ,_ٵ7_v[]+e 4  \BoPAk`[*xۅ#: UBÏ&,Tѡ[h]~3~|}~qdԛNÖbƹk8-K BP -ҖKzѣu[[ѭ4g8738s}>7P5<L"E$:,dtLQB(*%uٿ(eFMQFkaסeJT2%CI%#HR 89">7dE}vdICӥϩd3$}H2ۃ(Y M*Y Ed(7$}$M3+&9go[Dd:^|H{̯Gž==, a`TQ` P;jlrL^ }cJlB~S?6E0MTCn0qC2k (SVEsW5PqۘT^T` Z~LV7*5ƔXLƮ3!&10eChnB)KBѾ)+C[StL3?Uc& lt☲13ebNGfc :1U>=\ЇRp-4*BT,PEL4B|0T" XE4,$*6TG.Vv/im߃flOYǣ g+ J&^vB6׬M؎lX3akv?gО0CI`;S0Bۙ$`?P b; 0a;3D7`&谝݂Y /vf2;\Q{)J!G4QLqvf+]YJ=).Lq"݂قڙ-),qvf H+6_lgW4_0K+E.aGsQ(g(0 le㳕/nL#<N3~(g1e?\fg48 ׌▘8H+NJQ"7+F)^6@M񊎴jWĭPSمMgi ;A2)T*uvMR'<i =aHSFSt6_n%'8;Si[|[ɩ\!%'?~3S.nap%pi;JNnvo%7{t[[C:on#}1YZZ˰yC؊uЌhVlnMmŝ">jR#T7 O ?5>4T C*luhG5a3$hNv !PB֡1C}SYUN!d*}!PB֡9C/PwjOEFjB@M 7514)414)4q6X&=NU8NjNjNjCUE,kAI% 2A% A)*An9HNEK΁Tcv,Fٕx1쥋`,f+M>$I1J{DOiSMaR\S<kާnI@h~ҍ* wקEA<|>60! vhoxCz`c4Hf;w舭{O8UˈΏvu#? 6d 8hrYN IY2CswN9/f@)ggrWSdFI97r.``BS%HAq 9 XMrN+%/q_W7m|m+{, gWz↾'t8d6q"?aesfhqz;tf{n rǔ*?ol^c@9i${{haJfe` 9#Vq(Osy34d0A38>׌`,YV389cIN'ghm(3^,#ݔY}AlYvfIxR3Cn Os%ީ}т[׋(ni7 P0;c\\0vhۂ .ld3:A`$`Ѕd# D\0ixc$06q|HŐY 8J3*8gKF9cq!8X!-q4喯{~^WXפu5w@5w|g:ȴ5{)l+*w+wQq*N\oY5*΢ ++ *NV'%uVq^n~ tŭMɹUqc>q9 Bnô4mܚO:1q1:pS>o5&.ntF%gF}^nBZ7̄@]] -ZؿWzffPf~=R~`>Bu_͌ +g[͌ 5IW3#.W530yC,_`|Y#5'r*\׈p]74n75Ýzrχ3gn ֖K`86p+Jc켇|+sgc$f8mR=+nm1B+&q- 'k8V r 7c51bTH710a:Fkm`OnЁ1u Ra tla]mØa 0iv9 %0F`-cB[;et@q_2: 1ZP\g[ƪ L ZAt L[ 4Fgϳdq5PnPb65$xqxAP.3}BFE6bFt^fN8Nfg.B=>@Owm.B?!7EN s_E x0Эw 0&`]zi`# 76» FhGFxFFh  .F3|b#0x2=w"`:XK wn1f\/0 w z:@^`ŵD/^ nszep]O0-N`>@;н`lj-n{nyx m2-9!bA =l&@‹[|UރUNng\Q%<^k9-h /eq $ܺN" /j@KxY9_`AŌX^rЩ' ^%[NOnWl0^Ă /c9b;&F &h vI«Uv!%ve rKWVc|1ϕ[^{e,+rpaJxMʂkSWv+/O9a;34u^%Sl dB^,l`Yٜ+'4)9=<@%^N/Irf|ȫ%d^]y9JKKzܘjY%Ƅ:^anGcg;vd2KP jl}=/Dd8K?Ф M} R^u ˊU'Js0 ;Mx skx ^w %R턗r;0/BIޖ|+^1A`iK‹E6TҐ0'^byx=Zf >>Z}lpмcc{]PO:}M@c Q'3Eg2^"`2@/Xp^ձyqǂ8%t2An' 6/ `@T/a o3Wyt3Z=V)^, n86wԑΚ.^9|u#+i^?AB  J6x^Y"0%&+y˜,X Cg Cy gթ,%rף,^ip;6b3JitЅ/^d$')@"+0[0yM('K֛^p!=_P]/NWP6iiCg/1GB^gynȫTV9^S ?-:x'-+/AIUiIA6ȭp y!KFs!E#Obx''Xf/受/pu3Dk@>Yr37^20yw$B yDik>vX0*0hF&P>pcK>,^Nxۄ{l1;{ ތiBK=2ۖ3+DiGZc x]0y W|1[ ^*?x\^{z za5>w;Ecr=$<ܤ=fS 2X^EᎉWxl1KV $c\g/'zd!V1%dHvB*/&W;H$}}$h{^T{D‹IV4^gr6'ڗ3xQIX/",!Ix ,TNjIv!r*KxJ󑗓.#>u$g7[&rs/zʫHVmR^QN.%+p{$0S^kb!Hyy8# 0 ;I e f1Λ Wݲ" eʋS64Q]a?'9WtKTV,AV0^ˉ NWxԲQ"VZ,Ky"Ô̵)R9%P3H=/PP/(ٔס8Ҋםl{Ҙ=/H Qשxj4eëZ'>9'۳yNX%IS@M<1{4xUu+`$ 'W_lwlxK^"1ݔ"H_93y%LSxIJ0(ζEc[gVD .Jy]LBʫcB#U2!\/ W΄y KhB$$R^IBo-qshW )55"(yGeD/ 3z3^,e8)/m_pU1 īcV(v/YxƁUCdmS)Y<^s;1u0 Z8>^ 0[ $xa b0t<1w45/ebxfp n\^C$=7t0+k3co+䄷a^X˜ BfQ/Y!0+1^Bh.eKR^Bp* !^AfyE,G <^#3Rƾi>e2sަkS^)w7ӆlt+a6*(NyAK6/@(q2 " lKe5_,AIp2 8Ŧ);d矃/S^'ֿ;+k #|^32nyC>6)/xHM1/p"էTkR^t +0t5n\)@ɸa$/tyŴGʫ*5 K*(uUJ[;]zQ(bڕ|R^U1-'yyŊ ^^1mYXyYaX!s*[ cĜ%+\L8fڑō?0dbiO2^=1>v  u2^M1p2^71=?A- s?sfb  [D@yD܌=</9E]2e1/uea>a$/CGX2^>bg/uX ;:,pyX&/ezp]!γ2^ʃ ތWE yQ[~'e f"Dl^k{k#F+#E !G@&%[Țxc\W]$/XxZlH,^pB>6=ffb`%TƋ0V$^"0fxE[exYƊxnǓB ڸr6/v%xʌ}iV3Y j2^ _j  <xt.؋SF^S Q8[y/jCX^wU\ƫ.kW>^T|  xT 09/e/|O-mhGZv.pͰTu/LE _r ,B{/RgXG! :w[GfX`ML cuq,8룏Y'*9?$BT"He>T!F GJf/?V/d T)\q:żNW1s tU~W3Sy6͡l3Rݥ-zFʷEψڬgĩ㛓y2ǷUm Te#V>:%Л=su(p?y<zuNҺ)ېy/L;>hWByC[Nnԋ=؂o a̫*]ΗVٽ#>ð(/Tz;*YWM4ܻe]-tvKv] 2tލB/=Y$t2i*=MwRx㇂~R^CܞvziBL5t5u;Cߎ7GW 8^wW='v>>>6{矛3GD N5qL 5qBqA7 5yb n4q V' 41ZjbJ*fh&Or[<%J<&͓ o<'z<'SzY<'SԺfYfq %B %e~PBI)PRG %B%e~PAI)TPRG B%cŠU%e~PBIPBə)PrG B%g~PAə)TPrG j%i~PBI)P9PG %B%k~P@ɚ)PG B%k~ZɚiVG9q`@J7(Q("%o>Pp@7$B)iO"6$B)iO"6$B)iO"6$(iO"6?s+i3=6?SU`Ϥ%o~&(yY/ϳRYoϳd_f̧Ja#/w%k~!*Is/+I ]ə_HJBzW2ҫ0^0RA) 9(%a~!˽=IѨMw ׬ٓf$=\{@7VrJ܋AJB[P%q~D`$/EUJ&JB[X%m~-5VI_h/EUR^ CWr*9 ma5WI_h$/U*I % %i~-4Wə_h/i4XI_h $ͽdͽ\6ZI_h d/V"+I mJB[`%i~%JB[d%i~-4YI_h $ͯ(I+JJk4Қ$ͯf+9+JJk3Қ̯f+9+JJk3Қ̯&))+IJJk2Қ̯JkFd̽؀\3۟\893⚓*9+93⚓*9+)3⚒*9+3bTfrXSR%i~5%UrW\SR%g~5#UrW\3R%g~5#UrW\R%g~5!UrWZR%i~E*I+JkB$ͽk65#UW\3R%k~cTI_qMIהTI_qMI׌TI_qHЩ6:UW$JJTɜ_i*sn6ҩ=N9UW*J:JaHqH qH$,,:@J@JAJ"q-P'1Xɤ{9(XI{9(Xɥ{9(XI{9*X!$ӽIU^S$*t: Dq%`%`%`%`%`%`%rTJ[wr\rJ x:aJ~})G:LH3LI4HKI48J}٧$G:gM HJ Me{lz/A.~$dGJ}$סdGJ}frНgrНh(hɩ(|hɥ(yJɳt^*y^J}^J}hi$G{)^J݋qlqodڽkFǽji捻Gڻ)q޻)nJ}ki磻G*yI\Q^^Fɶ{9xh%>OIS#tH{;%>NɶS#J}TɶX*K^R%>bKG,yI\%/j%UR#7Ur#7U#̤JFlmQdo,)%GS%~`JI(R7 t %~`CI(P7 6l%EɶGJWҕdRe7+U6Re7+U6LITJR%~WRmJa&);)NIIqJNSwRldبF%~C_%~'*;JNiS$*y;JNTI)Uw m,B[%~Uɲ)4Uw M$BS%~Tɱ)TRw -BK%~RI)TRrJA.Bɰ?f"aW2J1Ε\b P2rJA.@ɰ?h+Mq%)$4ŕ^* v/$"\` P@Xɰ?E(% d"\`PrJA.BI?E( `"U2^6URr1JA.FI?()NvJAO%ݧbRI?hwsOɱ?hSr)92%_˔wa/S2eJLɰ?p) WLɰO"eJ}'S2apEʔ +Rd'\2%>ና)~—)) WLIO"LɱObeJ}LɱOeJ}-SRy2%>ኗ)) WLIOeJ}+S2Xa(͔+Z'\2%>ን)) WLɰObeJ}+SX^pʔ+V'\2%>ና) WLIOdJ^}'S8UpɔDϔ+R':͔+V'\2%>ኔ)tJwgJ:ݙMdw$)ם)tJugJ*2ݙIR4)'2%NLIS%_$ߧ˟lLI?1ϔ\q%Wh\ɕ?)WrOƕ\ym%UEILI/2%U-e{yr^nA.{V#e{ ݽ|l/ZՔaeJV=%cE1UOIѪ$̿hR_AɘK?2%eE1UOɘѪ$̿hS_@ɘ{9]zUr_*)/E[̿m3UYəѪ̿hUVr_*+)/ZJVe%eE1 Lɘ{9Mɘ{9Mɘ{98%elQ^Fɚ{98%ml r'5ӧgkǨHIQTο(*RR_sTο(*Rr_)/EEJ"%sE˔EMJkEMJ*l2%uEQ:_eJ.%wEQ;wJ.%yEQTSRM(?& 9!fFJgl..JHJ dHoJ/EɠV2AK˔_\]нt%$˞EKUaF;My>)ydW%~)ydw%쮤ݕ4_ZV4_Z64_Z4_Z4_Z4_Z4_Z4_zIѽlѽ($ҽ(dҽs%=5'ٓrI1\3<NK \ɧ{yrPĞ+u/@D/Q}KTjէ|R>XkF/ڷqtf}}>Zk_G}tCxtCxt2}}#>MkIoWt:}}'>OkJڗt}}+>AkKo#t|}/>3kLCt|}2>5kLoGct|}6>7kMڇt|yp1lo'i/xT"` Jem…o |+|c+4fe!cL*e4LKUn0võsESeRN#/^U@T\O@Xf_0>F(0(xDuYT0>Q h{fY0ǫPln?(r>ɨdnG!3{@DfRHs~pϹc,9p*.@ @7 !g;^}SDq0x+@7!ooi$bi|L]OF igr&Dš aPB[@ W(L8CLQhUWhioH.Zy_B3KpY,hIrN TdA<"@~+: +5n4*2pʽq$gZ)ly< O.:*0''Xym5`D4AKO<(tq@8 C>rP(r! D M1 U:SfiLyi4E 5zh rZGO@,rcZEm}ЦHv :kσ:9/ȍO(I Eb4ZdE]m`M:E8\j%0*ұH-y"WGH49Y w4|Qr: Mf8R3I}bcI)Sc^͟i{<ppjCەFd:kTtGDoTFah#zF :4A+TK蠨QhrŃF[x9[!{Jp*pN}p8/B3U[seUxθ<ηV[b~ie>i:89Ba8 (jtNNa7vpOKz- kBܶo gpF4|; ?: zN!?)dx؉B@K)XOB ~ +|Є4XmmhivY?o nx;D -ȢV[I-^tG":D|" :DtE&" %"Ewp)-%D t(E" :&Ur JA6<n-x8jԤZ..hI庒ݟ\h #ܚrˆOåUCT# $Qp1rqSE;jtw>Ω 8aarqj2dB-t~/k@y!(p4m-Y" -.aarK}y-׃bΟ4jrH~{"3"@0ùT+8V@:+>:XA,%Wyts <5KY%e)k["Z.:;MÏ7\Af\ˁ\A'U@EE\5+\97DCg\ OփZ.Z :Upo\_p_.(BAs jxïXx |V|6kQ!)#otik-n! TԀ\S./itP/RI@* 8mgQPy]$jD{_JjD+ n;1;(l +Wh81z>@ZpP<=ykT)3L )?HiZ*?ˆ Rs+@k c %|s^tUS>M;rI}"WCJAPgB *y:+r}y,=ص*,& h.9 W8xÃTdpE,)1\`:F(l'6K~xGQpD.W7Gmp @+\|Rw ?G Uٚ/{†ou5%¯0vfr=}?/NWeR2^dǎ1r-2XA&  J\`}Qp$.jq\lstƂZbS $W0x\`a-W0IKv;kzn ?w0\b.F(DBW_0&\`fC ,X4\Vf~c`V-+x1B[|\vy?*HkbNUWD"W+xO\r4׎5 n4rłPB;(^<,ʵPFσ4/aҺn&aF떯aF;/y>?ws:"^a^Fp[i!YNp,B>3?fYjqZiE9\G5jx `ެObc!4O,BR`,л͓%s!c}i 7noAts; )Bg:u҄vܺMstPG.v^׻. pqudƬȼP.>jc9cPd82tÊL-,2iq<b0W5  g4"c@^|VGŌ}U#s^5B'3m⪶_}q~.,2NnIx痞1̶[ }#<_:cn: F`=2KWdF?4|@]]u kdB<p`Z\|Ydbv#Gda'ٹ '%X> dz,}jVyG)YC~$~/:2SG&J"#hiM$0輬?P>LĠ=V ]F62Xsx׮t5ldm=Y,ct=X,?W@fy?x ƫħ0b ݲ+1&]bbAN~>!K0{{sk]}?Kf?3+ _;ȩƌҥ73O9w(!cFfUdx}v)ٶ}N;=2Bd7_kt!Ɛl0iO}+2ƍ9cV`~]<x&3L>xVg?Am/H9pz^[owa@ޯdOրsncn҇Wb$zxL4L)6gz9@ͥDz}F4ic##QzFPzXŻM= NhIޑ^/ F=p"<E 6S勺s`k=Myw23zkop@ĸ_䌸1cgDXINp}atض qMKhK3\}|~ stv2GJF0(d,@-B=ZPΌg 7_2­4O_g3 #%#w֑Fx`bV<ߣr@1JP= Y"G= @ɊwZq~A;/RF#};o?vn[gf@ Gr8: "IWj8B|p`lGz{Xv xiZ6ycsn"xτ8og8:1Þ_!T{ڏڡmf 1fFۀ9ޤfDؿQ;.;5=X3ftv`8c)Xl7162vL`ɚP=a~ٻ?[ |[$m#kf~5~?騱faB! Y?Q360X$ cF+X*h;1'R1106=1j/ąk7~mw!zO3aq(~J*v²pUq57,0ݬ? 5 w! cD4Wdz[&90Jymi>cx52>=C/cy : 8F (_Y #lF* e|q :F j#E|l$/[FPPo,gW- +6J^@ q Z@|1??2wvϰ ˓Co~W_O􍸠|QK-w|(eap@Tx9X[~--u|X{^ 4~|`k8vI&b2dQL<)SD1%`(Lsbjq~A&BUq꺋P6Bmq;yA#wQ ODJ@II)hdozsï~x9p'sٯ~u+ʑd/#/7qUӷP{ p•晎:ł;KUN:\?~>@a%94g矍<ɟYVͮ/^(q\/oJ"۽w,!_@R4@i sxr5d<(9u/o1L ̅ڞ'^>v>_хAG{:{ibB0s^^nr׳дIhx ZY8 8Yh~/TyyhlTGIho3CC#3;<\V桑;{s 7(MۙW Ms2f?'|,*]~qؿf qOtr/]nMڛ<˘I_EТpa~"43?OЪC qY(k6[LHģ/:$iE?|DEL# Rq59LbzZ\ Be(TVG102ʚ(WF10Dz.y(ZG10(\D104gQ ̿<y?08`.q|92f<y?0Os?.ٳY ;ծY 7YY 3UٰY Y խYY Y UYX>̰2f}_e0ʘan1*cևyUb1~*cUJR"H a)%jXJщ$R"Hc). YILVR(#H f%7ҪYIQtVR+Jh%JZ0ի_f| >į~G/nT#8|pE~G7 !*|pq"LܬLJ7!|pp<" MmC}fQ?DYmCu5pnmV%/^~7K_ o0|_%`/hmڇb`"}ؤQ L:SD10GL1u|6&2&&&C |D1@&bM@&bMMlT9!62+6+M#{z4]+B#z47@+y7޿mqloemxpYw̍6f9<7fE+䍓ncևƬYfC' N@x*8N½͒GY6waf#6}o|/п%/7? ΅X¢BxaA!k_]lP/!Pu:A@uAGuqпq'8O",X A%q@i4(nzaTA0~腁aք*!LX`Ƅ5+!KX2֥kSayDas$SC`*{̏Ze9Dƺas,,[C`+{̯xe֯!0=fVXŲ YUa-◭",gC`څ-{Le)ֵ!0Җ=[Xٲd [ja]RXւo)n0; S0c0r S2j05 /_02 1f0/â 3[0 Ò s$,0W s&30wr s(;0 s*3C7XXn"aU'x 9VH@Qa֬H@Ma.`0B S.g0² -n0" KbX"aN%/ǰE"H@X*:  , ª  , N   52O,~bLg!Ɉ[ENF/2QwbL!ʄHpb%e}X.#nNzq*̈TbFܫ%3UwbL!V͈\lFu3vW,b匸gݯX?#n >DvbmhXH#lJa-[iFO4¦Zvb9i=XP#lŊa-[nFwE5[vbY jXX#laW.[FW_|BX##8 k އ~QҀ`ª`j88&W8&Z8z$j8K8&i8:&j8g8&j8o8ƉJ'8z8οMt*BF&2`T! QXMUBxV[`X(εM$B{V`ֳsUf(:+D|gZ! f; Q0YVΪBsV`s+,V²E *,`RF *,jF ~*,t’G >*,~2H ),H ),rI ~),i`Ia}VX!\/ k._7YEVa>}w%/ k9_Ou-|sً>Š}o6{\}مo>{|^X~Ea!>Ê}/[ k\_N2|ڋ>+J}eE/ g_Ҿ~4Ul»6|hXg4,VF{ Kp=w9âhaunxͰL7|fX3,܍VF{ Ky=W5)haoxɰ7|dX2,VG{w K=7hapxŰf8|bX;?ɰpU./,0sa0s 9 Ż!fsX`.e!frX`!fqX`!fpX%Z VHhX[/R:N}u7˰v_dtGV1QeXR/ʌ}oŵ#*ݗ}vn}zl.b_}uBb` kfeCÚ}^*F ", @r&aՠpEt%ad*r$ana-:\ š-6Zw\XE#ow% ûW~,{U¼Wu~B/ ^!߫?* CW~,{UBW}0Ui>|Uַ_ !᫚}X/ _i᫒>" W|B/_!J l|UBWU|K dZ>xO/-Vf)'~O-ы? +eŠ@,, @~,,/ Ї2WE*,LE'W-Uw5+fX-xEݑ7S/G{^92YiɑW^GhV8=X-ͨGO{~8Zi‘W^ȖBy-7z[oMi{#oCV˔"y%.ke^ÍFٸȋu%یf!WyptWJ 7y% W*Dջw n;r}n!Sn;wQx$REI9 '&0IfWJ`F  q[@L?>*R! !업+.#)W@~ i氆Y~%iwB D"&/xW`Y/ +%lwFzwg[ww押p7Um{CE޴R-;E^G B@`~`F/^큵^]woW/;vw{޴v kHVT8_XRraM5-6SXKIl`'W{ m66ح=(>;^p<ځ0 s:t/ۮ^xۮ^z'ws1{纕Odj/w\y{9i'{9:y0y&@96GuCl5H K>D6#"Q[Dsden!-ոEJQs2!{{027F*<@:AVL:{Lo s;?/d14 $'ǭVKECJb on( D}k;~ ~/uxW͈DA@$Hc E A T1H I懮c|hC71>tCw1>A{C]|Is/)=t%uйΗ:%ZK6?Ηl~h/:_udC|%.tЅΗC:_rzBKA]|) /:_uC|)RZK9?Ηr~h/:_JzRKI]|)=_hI+3Q.he@!e@e@ePu(y +|NcZxCcVJúdU0/WƇy4>KUa^*2Ui|JüDU0/OƇyq4>KSa^ea^%a^a^a^ea^%a^a^|a^xjSk|Zü|m[s$vJvpj=v@!|(m7rPyce_{ȼ- L.Suhϫ0niٍlp{>!@YwQA( dnu7ͺb BXwPh@뮈Vn7x"w,)6a+0w;fH#{Q,è6ߡ4@w>g?(ў tdVr+B PȰd&r+BPdr+@ ь"ܘ͝|bI O_57%[Q;BkNߖT5{[2m(ܴok^p\iMsd6Mo^mrzv7]ckZ:n4 hh7P 7oGVz th5~ 7 @@YW|7@'@/_W|m8o >_ RO|O/~''ʧrV<`+'Y 3xڣȅH~QDH_Yh*EK4%LQ 8 T_/hNEK4 U\Y[~d,opno ^- 7X \bJ~_UD_WU/૪hUUK4%|Uu%|UU 2D_WU/૪hU%|U [~:7o [~:7o [~:歽/ x>9;}Dowx`=z[\Mk\CUjRqՂ5Ӥ^f}($N5r~޿ngܱ;A?[Ak7EVA{x 54dk 6654o@X} 5l'>} g5}_<Gp/a*#x|_\C >Gp/vp7Gs5Ӏhuf2^9~ K p''x2&/ESTL_`Y/.^xu:,_XbZr&`Je@X%iؾz4ؽp |/SX.OU^5CyW|DzO=+>i]ˬ@+>fa-M/0ӗ|>}ex*POeZ|0W|Lz^18K{y mcE~ǪP=Xz6Lt -Oמ'<_{={y?߳`bi֬,|7ݗNFH7ef.j3N\@?/ @k5{L~} _>n,J7L G=WhùG՚ߚqZ۷|ፚܚoxݛ/;cc>?v'7%8~/z |Lws9QJ=.jyאkM@m>Z{"{czPxt~D{#v"h3@Gif.siQ9X<}N8mܲٞc>m~q;s3ZZ|S05mպ4ZexkM;=n>?n8#^nc?ѭ',<[yxZ54 )4qTZn^;]ٽdz#:]z/J)qOU'w8O7: SgP(FPe8txC}e/⦅cH+s@To߾$#Xrdl?:|4o[uTn[7jK8(!٠vn~25?tsrp ꐼ}{g;=@k nCx9V;ø0a_Cd KPo;Zqo~кs[ύOeBOLc&] ٠:N[Gjݳ)sDBhvSo]xu_ Qkލ+_p493"'7+س+Ev_=޿O;Mf}ᰟ0&w/2:o'Vݾ{$iGwW{?*n[@1b ~$g3#MI+{w<0#3xs idZg77/ΧѸ; i7Cdoqmԅ}[ ݫα~*9E,ݸEP1 v hLdv^!RsA6y'}e濧|hM}_Y7;'PMsf0&o!=Q:[G#c?6}똄;iiy]W”~ɱ01Fя4iJn:oû"V ,H:ŸLE>YVڃ8ᤵ__:mCh]$=G+.1fmk>͏y8eۯ?1m&0s.OGF;ٻq6aW]4`=َ7dzvw4^-jt? ێ@Ci޾O[ߝ'۷?nOw!S[ߩ{#8ny#Iz-yxg{s :ޢ~n6Լ5OH6w0i`iݮlT!ܞv2z%~o]ǝ\Vx*hq_ܪ|?=L@Zl+93Mzx $ۅDtWl9^lg??ln&>Nt6or_=~Ȫ! 2-ggJZ[\ r.r8tJ -aU[ǴyӇ߳-[\;6tp+nrݿE moݎmg{o7sCA?xr1mtC>0= 3mex5 <l) xSx{ ^|.m 4KᑖE6-^Ļowz1<=:@ZCԑWäܿBo7EvЅa46o'>1m`ݖБ9|ut[Do.wM7=VގOQ>q_WMb[1ݢLqb^$݌ݾ趏O^4з ]ߎ$n|FEx 7;d\OQH;~LsGD }~-n#5)\UϱQr5ƿbM58û&wA/Jb\>VzsD<\EKql0,ݶ" 6ݛ3}|(}ƀkje5[ox=˥ۂW-QgAxtz^ s%?&Z|9{3:gn m;5Z8fayo`Um8? 2=87]d*wKZ\fvG{qCgOlƧ/fL,Cx5wF]nOO奩/u}l=1m77-v3t޶4o?.q+zWjm_ ڟ}e48ໍznovklyz~jnB3,B܀$}S;7~xAϜ];P8 cƫ-v=F6ѝn嵧-›&ssǍ=7PGw߿?ێ.0Y۞3eПMVKrœ y/ˏ͕wZn+Of`;|Al[wa hr.-3Ǯ˱o@7/ n{&, T\%e7>[\+9֎ۓ۳;o{B͸-hOn7e۔7z<܆m xo`=^;woKf+#=3XϿi7RpNjygt5S}^㗸=zN> ;Ux0(|><1`m[̬m0O<(;Orgmv[qn}2*Kjz/ˁQbN.JwEqi8\vƻEkv]vs3}ߎmky=Pm?ܺgs"[16{VpJnSgxtg|f`B/Wn]l3<$hs[^Vo_WcK;9~Y7a[44"liw[rۈ0ǩբQN`1aJ!=et.|??}iuų~ 7MNlȠC54w*q-^M~hv7`a_7(zP.sMR~" ۳w0on7wq>7W'_`Mo}ɣR(M3P6ݐ-RMU:;o>j)~v.S(a7T>f>Εh:Ջzɫ 4GMV ڟ׮ bG r6p1É*>\d Wu,yb< ,mW orYiͧ6VH8 \9M#d4{V$%/@ۼ ұS[\R SX]Bw$)b~hn'|C᜾ jrN L_@S>/,θ\$-JɿLo>I"߮OJҌ il7ܿ]!j,m1mhq9,u(2)|5z3=uyJY9 4o,_e=7#~}4 Ѧv hje+p ?>$b}z?8#iO. +>pY`\sVoNo[Vo[No[Vo[eNo[VJo[( /kv=wm:㴁z,8 ԻYޭջz$PV2nSV @[YջW\/}кgts;73=<8_L]z$e@һ҅G8 S(1R~ooqpA8`.]6W7)})lY>-|KJ1yeY%t=a>1}v},&#t`נNK:v/:[%8v{<Լ!n4 k`OSt ˸С{A ºan?? JsY9-4>صdpcwftgZ&[˞̢.$j=9liv gwyƞ}r:( Tctюg㴹tsTP[ a֑]lX3p2X0fssf[.B{<_|,Ĺ]||n {T@S&me ܶD]cQw'z?Z7W(/܉9/d XWP:c˼,$$j\}v^MblLH\@}[%Q }JBenwpbN ݒ,}HEz!qxóbq u1>5p[ Pvཬ[8_K8opX=ǝ|ָMth!347:r`4, }f-.sWyL選|[>ÅA6;b|\{ۼ?7L\ufΗo_Z4 n5*lw84O<@T~ ^p׮Ge-}qwsO kGECT]ɦ/0-ݴM߈˶m\ZM/Ӏb4>?Vm|a6P՗_@!wQϻ%=L's]t.Os^5*ރ=έ[GZ0u|R -r :K0e8@: N\`uX?uLC,"|>*"|9^D,"|x ‡/D `> ‡hV;EAd _۸d#r^r?^QFݖOA| ܚy[BL51L20\t/ M#.51L0˃&i^֚&yi41L0V.;M vkbՇ&i]I])]Vkjo̕joʕjoȕjoƕjoĕjof l'b^r󌫶B+Rh~) .i}_@mx'@RQV,drQe)JQe9Y-JQziDeNe+P/($2K"/$2K"/$2K"/$2K"/$rK"/GQ/rԋh"/GQ/rK*/ K*گ K*گ K*گ K*گ ԋh"گD+Q/Jԋh"گdJK&گdJK&گdJK&گd*K&گd*K&گBP/*ԋh "گBP/\;^r~K.zE@/h%w\Q/jԋh"گFQ/jԋhRA/hRA/h?*P4@(ZK M%6tE#x ]Bь.bhG2P4@(Z# Mtr0J9M@C&Rg*e{b\1p)R'FlO Kٞ=1.e{b$\P퉱p)J'FÕlO +ٞW=1 d{bD\Đ1q%J'FŕlO +ٞW=10d{bd\и퉱q%lO=1<> lO=1D> lO=1L>8 lO=1T>X Z'F˵lO kٞ/ײ=1`e{b\Đ1s-Z'F͵lO kٞ7ײ=1pe{b\й퉱s-g怆lO lOlO lOlO lOlO lOlO lOlO lOlO lOlO ٞM7=1n9P#F'FԍlO ٞS7ԍ|H1u#aLtS79ԍ|P1u#3ŘbL݈L1nE{S=S[ў)ԭ|ފ1uZcV>rŘ1u+cV'ԭlO[ٞS=1ne{bLĘ1u'cN'ԝlO;ٞSw=1d{bL)G蠡N'ԝlO;ٞSw=1d{bLĘ1u'cN'V'V'V'V'V'V'V'VɉlOlOlOlOlOlOlOlOSr\mB?7>$}dm:}򽖷5orw=秷= Xn mibBk(% ׎l+]wm/7mS꘤&AtڨV;}.O߃ fۙ_f/ * W4UEu;E޻+t}: El+ޱ~ISsYo,/qϭRBNp^5wJZ}HCxe\N}O>+ޯ|tXW(ۺؘswxg2 UTwnW!Sݬa>B;.UwFե,;ܑ\LugȘ7vFɉ0~.;!!f1"kcDҷbE2mP$Z!ZW4u(tmBǷ o 6k`Q$2"E7(t)A7 Atݐum q?fb r )*bʋ‰(lSOzQEFb ȗ'_nN4r`Ffɗ/72I r8Fȗ$'II (><˨L.dd ŧ'')(>@FQ|FI)Es;wߙV 3\4 xK~ 3 \t ~w)&5dN,fl,eSF E1E#"Ahظ|CkҎ޳|vekE /z.R|AD)"DT AkWD0x>Q<"C[T)E_Fe(UJћ"RޠJ)zs+"O @;2!ߑ|GƗ=)gP4NsE]Bǧ|BIO'dR):|"IO#$ۗO!i 6/>|N ;}j'iO[([GOK05ғt843UmLt5A>z 7ʾvSژ׎WWݜ_ճ+u8ot^_]7]|Jh܊FW|;h 6$ g}D#-_Gq)Ш%gXIkxEpEtq18EbH-(L(Fh%G1;X@|V"F1Zw􉁈qx>1[Q8OB?"(ax(F!8E_1=kyz/l]2:O?.? Ӟ.2j}_6z 1VۧN?jֻ.~M&΋6mE[l_jfmhsa 7ҷ%-.A_mq Z%TE[\B5m>~g9} W[rQ 8քG9~^lZ:S^_,o3t3IڬGf>?4|PKљBUW HAlib/unicore/NamedSequences.txtmo8S7w@HZm9Ӄ[pXYiHiϐ]l8i!)7'*^ʧ>΍=x3*Gz{>8b9zߘ_]?JVcKq(߽ܯ~;:y5(E`xƻä/gPη?njnr};sv|وOǷr{,a_qnV`#YH*6 6n=6:l< *meYosx-y*75ÁO^^ Sl_7]?ᆍvBmndz6G!c5!u"2eVef3`y^oU{6U9ѽ{D=k'h׳ ~UY5 /g!\IkG'ʵ-DQ}P)'³1cy-%(2jtpI΂pDk=WQ&{thl,"3YyrZ0Iq׳Gw0d(ޛǶ꺶scevlrf=<=y{?Tp}VlYwf*6lvJ2 k5[y}{c'qDt6ѽ.8VuO5cݽoFt3"[e2z,t^QGu.M͠^ݩɵsi]רCɣ=bX-jD E84K^6^Ki(bsfL.  :#c359oyv[jZhѝLD<~&S6/L4@y@D09P@3J q2sԀg4efԀ(@Mb-8`̱R,9  )AdD}@}iO_$(NhY~E0},}JxLJФxrF t%xR@WTS] /R@W* tE!,T(,T(UfTT,WjHsTNSLPeRT,ւ+5ʂk#T RQM6Zjj+5RQM6ZTk3ՈhZb-8ըZaFDUjH mPsm TmeJ5-R)Ѳ5ka mB3Re@({xu@kjZXeLe 3"ú({xY-gr!P-~D(ȵ @(\x_-+rkʅ@r(%ڹAs\ssiʹ@9Ѳ( xc-gR,Z]],J=],:],*\,\,'5jQ&:(e}bP&vP&5 P&TI Ѳ(X P&5 P&D 2  D -ek/e(PP!մe(PP!Ѳ(X Pe E-gr)PG@6AK?XI@(%մRď>D \Zdr)PGKTe(_Y2-=hHm:%J31*=PV)dX45y|- ovovaov!ovovj%1yxc;lMޚdo$7'ٝ<;I'OAyx;lQN5jfn8 mvfn8 mfo8 mvf o8mfo8mv#љ8pQ@pgGre;M>uF5-:GM>tFYE8gGaΈ3DNL Aa2sШ!t+5̹RjjRlbZji:)3J ZTPTSASM.N5͕ ]jJ55 ]jJ 4ւCũD*'N)~$'N(~$'N'~$q'N&~$a'N%~$QN]7(yIxs<ޚ7&ymIxS;ޒݎ7$yHfVvDUzϬ^H#o}ωM|d{·q Pɹ'|[-)(%tF-|Ҝ{7s nϹ'5U|jBdJ0My}}!Di4qZVrqgxletl}OJ*Ǟu*+ط9Te\ֈjdBD9NFLꧦҷb$طV6#gġJZ m&J\fbĹþgPYpUjE[tVgB50ad.O4}|dш.(\ƿdN23pȬ~Z ̝4HȄDD6a0"yo; йsY [6sE7n1wHFS Ën| dtэO/) n| CH[Ð}̓,7x"W>g +Av[gq7H2p[Zos PKљB5Ⱦ&?lib/unicore/SpecialCasing.txt[[sJ~W&wp$^ !lojk% aTGH$]U&4__i󞭏njy4[ӯg7>NjeZ{۰MS{}MLk=G3_]iﳏkF"L&7u\]sv0?}zyyix>}Klt0l_M.Dp'>;-]hixtu7=3-Nǣe(;=h9݇6>ƴvkV w{ |й\>ChѴLƕtl5 ;h#+"p7\^F4{ zn X j!O'F@ǘ]硭!&w&}m<.YGǴ}َ,-|xמ 4[YpU 3g<k7B"FcB.9 7mV{|~ι®fýfp䛾ePٜ8"pz0$cX@qnhGy6\gϚu?Lݡ. aāLvS=bg$yGM1e 4G=٫><' V՜#&'m^<2KDL =))P,3TL uLP0p]Go[` ć b rmT&=Qt7 1Y/+ XJs eHHIǤL)5N0gGL C$3h8ic#iEH?%qllRdeL;fX*Vw7.i~nV{Y]l$ATi}.1i>a|1V'ᓿ3.*A2ܔ' aC~㈲Zkme[ uۉL[1S +3@ hH#@_crT/bi[q`һx{.Z0g^~%"h iBRb*ۖ(> srSU4/ 2 UL(kJs4*LΘF[r+s:r)T+NZ1pD+>ʟjr)P VjJ(E*)T.* RR1,vي^rQ< yc1Z8BoL? p NK2)+He^2),sG^Ls՝ԝV}WxJ OHg8vGh;]iAdfI<}$ K%e}əcwB9J6~Mi+ 7^7Y)J=)#Æ'Qw'J(mglx}b'u *NbP&eoӪe;8{a9+sVb`  wTbtj5 :}ٕnN5ޔ;՛;(LVCc7 ć4T7TyݒEQN2;M9`wPoںu:Ҧ*ЏJiGZܒ*RlVXp_3gANv4ܽvW NmjvL|"2-$XĨ)V D%?VD&Z>mSxZ}1`GMTQ7%a݁#Q9ߡ ! L%K?'`#J|ÔTN5Zpq[h ap?z RVjwTM*]P*k"oswЊޘӘ(cg2(x 1')$*g-GL!uˠ-GڨKRf/5$5|g(:_ vIY3^st݊{/Qw6'|IK{0op:>b@<œ@XEW댧k:O  vC^bW].9l^c9|[KXYe2!j X$!-ȄhmKlɧ-ʨü6\?&8̿Ź',Tm޴1Hݨ`Tdfn81S]  9nΑ >Sk.]YLkPKљB >H8lib/unicore/To/Age.pl}Z[^q}>_zqf>0 q l1F޵șfqf3 ﷷtOF۷_oEoo߾}ûwOtrsww?_{?^o#>xgo/޿}wWP쯾v/_q7_mo^~t4o?}|_a̷ǗӛOPG4ݧ?z t.ewO?~BW_UdEձ_޲p1s}>A7տ}?^\~?^oc^o???P~{w i~#ЏO7nMGŁ`4@DDj~d{ M)H$O铣E.$&DmB'R}шh"KJTDjC ))rihɯϢ]+jIaM<zwZңvg_VzI\-~]V]p s!n:Ɯ(gb}F4q.mGp|)gdGBo93| -ElT^&*ʫDjQDCy+RHQEj!ڮsSϬlGlLJ/B-Pd$8_ CHDSx=u:"G]F -t(NGMD/9J"v_g{؎qPt7+Aےď%gDF0嬊쪇Q.Y(raFTJHTҔǨj-CV8!KYXuVƭjVPq[ոUƭj*V5nqO*x2fUcV15$E.ӬFe筌d^D)$ҸVƵjNX V5S2EH%Ś7ʽ$oת0P9k]6F@G@zu\ZN3iHh:G@И 6MG@hƹ4uqv6/>h<)4tԠn4j\½i#4ҍnQ|}1Mߦ+qc|Ʒ1Mhm:+geӘ4Vxj6Fi#4BSڕ7о1oCYtֶHMy. 3n]q[׸ue`טuRE3z]glflgƱ3]ؽ=H_uƯk:5~VOAx}F3qg4{2m@B*Jgқ~Uw/Gyw9H Λ@"z {~1N?(X**W#0rR7Pkq~SEJ8C`?DiCK:YRUGW  ҽNNfZ;9pb\e8n^L8C:WЩ9\dZk6MQ2畧O}vky\+v~n֟͠W}f}zc2Xw=1):\V^!l?(/B;c1$0XBfc1s@,@C BO 0Mp6% NNYǞ e|cU( *.)ZiJEJ*u^ZK=U 6*SPE|ۦRJl.j]PqI4i!zg5EPt-a C1,՞ޖRɓ0&7ɪj oLLjDʆBBE_Ec5&/=I. LI bS"K d(T..0̼D慄7geۓ[iDUg(YNι &gjȶ bZ3FRXs삘gu6bHLxEQ-8rPxe^(,Ŧb 1"Yh{ա0 ep YXɊRd-lGFrW9ʾ1^~dmaoCBFm bHQgsN廕ji}33]!ezs[.eY)t$yKKZW]n͠!umŚA ]EW1]L#䌟 b$WgʣG@ȍ$zQKzV/'3FԝPUSr_swܘwk;="+;=}z-]#Xa9@g@W@\5" dɠ טtصL+]L3 yrf!HN)}_Y0"fxY@)r?@Dߠ!H- k<@Խ<7~ [S{@d ݜA)_}IL3<Ѿ:Qh !o4 ]c1019l[X0Y>.-?9$OG'|9n37NÆc`vh{#O$O][ r"IGgj>bb N"kfshXH"i7b{ܺP`-QagF4h8)yfԒ]n" 3,3 M77(8mhG,gQCskyʓ뀍sP1_n&>t:!YFUa4%Ȯi&_7WNbH QC>$) [>Q퉔LaG.%#kB,HE,R_նz#5YSKD{7d$DŔoB!TڗIY=p3;x쨜Ո iZ~g,%59(@# ٣¦;PD'Z |'l(yFjneO괪GEQN@Zy߳%83{I${U^%*kcy#AdQyf8𐔣ʃgyΈo{5R&;s4+8wY;ܞ' N"<(Zb\rWew+@J{v>oup(Bɹ J2{HD{Q0³h!Mxg'7%G)-%7re)/iw< _Q yKV9{4ț9:%B;L_e9YKL2O'xv/|]Z FH^i TQHx/%Uf!E!- EHX Ǎ yFyF:T7GuMž0byz:s@T ^gD0ygg,vgj̠}Qv{C HnE&ͣH5@S)O}'gFu{TszYqzM"{cDhVM9u'5erMA׽9 Kd 3 Ρh)- $%j⧁7T29v$ys)~EȦ&FݜNY~< [IQ!O]:y]ڂFTtN ͩ:9σ꬗[c?&%6* @0@$K_=J{a^`N} VϲʛYfv}XGnw ۅS^hZxsYl|Y,xEWO[,|k&Z|5~_wep|v9Z^]\S>9.8$bV¡\}P SU0ځ`´"8"PLJoCP+EEMJuK%rmf׼A@9ŗsyƂr g,\lr%/}*2 0*PU}gjR덲r.VJ/VY27&DBϊӄ϶eKy|rug0 Z\F|NV.Ld[qxE.|.\/ܯOso|ٺ^ғo׫' 2=^a:ښEնfu8ٛ]-. Džerpp[]//̓k1HDeɏW PKљB lib/unicore/To/Bc.pl}XQ ~^ R^d5H$}FjzlEھgܭA{O"O#%(Jگ4MtT??5riǻiۏw?Χw_woO} =>Mgjޝ`-tOoΓӔοNo?ޞ?8Ļx~ޜW`n?y]_ޤzU^\q;_NӉnӹNLJp5h2ݞM0O N{oC/oqz{.2!e:?\ޞpt/.ӻGϞuenۧt~9o8!t?ߝ?izazz<">W?<{x|yi:ˉm*N36!69R~ CMY m03ځh;".64n};ܼ Pp@a*k0((C"uXbeE_u_ruC)dva ""u.*" {=&\ #XGt4E!L!l7 1i GhlGT0m&BFp9H"^6QĮEc:s}k QUbN>|CRAbyt܅I4p6d~W"選}(}eR@*u&;"Q-7E04HՁv@@܊r#wR6o HNNm!h@U&h{ ŝSed :uCsR0 B׺y ?|+A_V5[BP{UƹC3k8sA"b3kȍ!2~3~3ĩdQGq|;.ЭzfHq};/(JiYV0>nλ*W'|=A LQIe6 oꕝLx-6Mk X2@eje8,^4`$ɠ6~8#bhИY`z\w/y6M )ܱ&k[+gn5՚nնkmH 1#K&mܟ y$;dQ,eAc?7s1Xm+{qfXBŅT\/cڠbޗAS_0P*8%$2sQܡSSloh?/YhrrٝkG.ڳJOUQW+0u@f {,tˆ?i4;>܀° ]nݜ@I`&]Yq LE˸kA xt+,,8@kҵ^."=wRO rqmxEAìP#[zտ]Чʧq,7Fvh¥E+ èppU:L sYᦰtSmzdQ5bi]Gk*vਂzSPKљBlib/unicore/To/Bmg.pl}OGϞOACCrfYΡ" >jޝvf# {FFr -vfuMO?v%nGi_ؼnv׏q}_KtxpzY{Zیswy\O׶c7mvtǏBܯvOO=Ηo7\^My~~=>6HҝOsw8#6tW6s d}:&w8ɴM_^/?"LJ7o27tn~y׽iÿZS;OW,ypk^l^˱ǛSynoӄ. $Sf06 FF(77#A&0 36l7vlBnf N ӞEXpatF۳ᰍBA^"L 3t^V[aQF^n&NpNpjiw gFgΌΌ`pYf3;Y{,߹UXv$C C/ ߀oo,,`d0 2 ̂fAf YY>aՇ|..]]ww"E ||..]]wAخ:4tL i]ZuI:w]:7׻^$nHu#Ѣ"FY7j#|ԺGm>'vĎ!oBIB;Eddtt2!BdBdȜoֺhYGn&ZC&ZV>de9d!33+89 GH GI.|| E"߂ooȷ[[-UU̪*fU*fUU*ЩZSJ]TWjUꕃmC#UnTrHUFܨz60КDZ!̠( LVaۆu'NP ԝ;Au'PwN՝x!4-B3i](fUz QWrR.(Q ʨ@FeT 2*QAȨ dTPF2*(Q ʨ@FB`tQSt,M(xfP0Q",`$}2mLjUUfWvZa;Mn&jNv[ Zӄ]i®+'t夓Qr2ʕQNW8Y'K\Yd+K,qe%|pĕ%nʹ7co&A2qP?vtµڥ]]+YN9 윤zۀK;=XԴbQ!"E} YW7m@ޒ؛nS=]¹-Wt9-ߓ%7s\ɹN\'ur:y&sڀh9k樯n:骓NtIo.s\йztSׅ,[I(A'AVH`f9^=FTzan8 rp00aa0AYҡ͸UoOȨQA&0 3 V w$p0^f=fzzej/' # asCվԪiO4wk",` _^ZPNVh6PKљB5mlib/unicore/To/Digit.pl}Ao8+Xt_ƔvCXfJl4 AP;m{xlby8ڽ}rp}n_YW,^|8eܹpy:O㻧o8e?wvJ~o{߸p_da?b7xݎxZ,Ө9lr/6_&FxϾ?w=m?LgwW+m{;ڠwߏ7Z}Zz?\s:_-?׮bݍwW@_maz)ӳv?_N4^Oi?ˏ}6M[s4Y|4k^5UMlj5jM M=7< z@o75W^Y+kxe 56o^iyiiyiI/ @/ @/ ~_W~_W~/\ӴiO?M4mi,_4/`h_~D~E'=!|C8·p>Dp?4 &<Є'C^5Mx4E|^ӄyM^5MJyiyiiyi9222222222yQ\8 uP8 uP8uQ8u#Q8.euQL ֶXɺxo.Ld]xuQ ,YNL)2>L*2>L+2q,gPMM[M.r(r ,g90yPKљBDf1Q /lib/unicore/To/Dt.pl}Zێ} /Mvl< Kv]J;2;E0 uHl:u:]}#wn_4wM5m_I_,n=잛ǹw~>nO}sy~O3yOan~aL>ϯ_ooZissysi(iy~qoo_ަǛ7y?4y9cxp>5gJd=5}3{S8o"= I_n9ߝBX/f8o(TG~BՆ*} doYu`9mq{wJPh `?Д>2fˀŎ8"c,qK/s2/M۵u4>:5[4iG{ Ybi^30Qo7€F:09MQ&5q:Bq (&’,e 3)uy.1Q:P:U<52UX4&SwThTE 6 D䈣d]%ㄶei`h',R򩉈e崮偶B7xp ~dryy^29*v6„c r=asmPcٙs)lR`$Lݹǁ}DyPl*<$ɦϳ011u*i \Ut[e]}ת jTɮC%';Qs1.&-9GePz*"[Q$qiym]rK"h$ 0: X71Slף]v= l7İy+$;q\Gb @X9ph&`Q4!y"apO2`̾fZ*5rV)[I]QwTwFW=*JeiK5}Q>O@Ѵ̼7dJ7dCafYt,pˎx:E󣖆XuI+`}]uVq:aGQk,w*N@yTJoD:/"W_JװEEnuGE'j}Sf0q䢷]BA\e[eUWxZYzS-@ߡG_EM%Wm%J&U<WN;ľ:fptǃ7crQWs{7q&IK=ӮµbWplLc\Rs>o)+%y}NV)GqE~G]+ ӆW 9<*䱒Jv\?TUc8Td2mHfGld fs"`4oۊ$xWjL|5&W5UM|U_CUMBUP$rM"$rM"$rM"$rM"$rM"$Wc d ecFwt.e".Fŀkz]\5益-B+^^o=@E;?V 0/gK@z&<*tX,4Hz3ucC@\ΘwG䆚-aٵr`Ɛ*y .*U( $:ưoƢ<0}OfW%䌲rm'JkHKM@,a+TW(jzFbȞ'#E:nm\PJyߝv_$Z/ˆ^FxMeC//xE+/>yFkD^5Q(xkF5 ^x /#xe$/e 2^F2^$ yM\A$xMP!IR yM^V ^ee,򲂗zYY/e^V"/+x977U H; ^N!/'x9$/倗rG^^B{d_t)}]&eQʣ*@-$$. 0I&[2[$YI0 R )aaW2ʂWF^Y8Იpxe,Se X( s)@P t @ h%_"xDnBr+T zDE$j]D _W՜ڊhȢ'D'PcvZ ~m}HՂv߫Vc/4hFbve+ZZ1(|L :\pF12r ߉v5/vQ82vmq^Z/\:ˊ2 :j˸--,,U9o/{Kt}9# MͲ8r(32Ze'ZLv&$a ^Ԩ r؍Vۧ#9'L$/y /y((9JC(u ub_KOe N4B5j*I,P"W蕄WJ@ȭ-򲂗E^VN2 򲂗^V ^|+^|['K//吗GU*/^yy//yy/呗oA@J@ȊBҙ::1O9IWPKљBP lib/unicore/To/Ea.pl}Mo6ϻA %MDR$=D N8-zmګf-Zm\#;34zjmpH'%KBRGuRR]~8ٹ>ؾTnCT~wq˰u՛4^K|sm'^Mk1R8Γr3+LOz?Lw\DKTᠮ: h'\}Nj?;yQet6).wp`.aUt8힆`)=8]crg?b>׫ZXiUӼ5L[9qU7pr [=>=k÷i~+89=<'曧-ܝW2D=aF}Px` /z v6?vv?$OwKu\#ɛuw2w"Lɲo.L4$ M<) R,iRB6tӢeHʖ9+[Gwāsbϒ$/x=kftbǓ3t>P {C=KIZ?Kd+ ^mJᤳ:k 9"]+܋@\l;.ŕ{dٻ$߾IR2a\]dd KL&2Afu+[#p?, %}'T\F\v.0la(. 7h텴 N";ΉKflXH6I/̓ "+3UΌT7HrlEHډ4%.S"/] pKrA\tZCrgL3F{1Y$jlKJM뒷gHIHƤ=NXi,`l)sL^z.4m(otYž80WO%TX)Ze4o%?ş5CCw-'߹:(5E}Q"wQwG lhiO+gP w\hOW KO L˺'{^|zapuyqNNRo?.ϒz8;gڀ{CMjdo^l{;r;,Ζ%jQG+&-ڞrtWpM @Z0^l>Kĵc)S[3+`uIm;bo#ƚd@YYS>z}Krn7yMQ}~͛o^vaj?wonûۛo_oazjI߮gv7|zM}Nj{to^~w{þ_ÝŇלۻ?\??xs涳oܽ!dw}j@w?>ts78Ce:O_oۻݽy\ݼe˟_~SonOx׋|o?]o{zbK ?"y߿V⮗r;}w+7~I^xs^u߼}_~쾷DǪ</nhvw?~ۯq?}ܫ^u׺_Kէ/c_}ѯs}W?ch]]?dji:V jF*ep2q`į~{c6 Ta}L<=Fǒv,a\81~GL(2h>J<-CLz ٟU P?nĨȆmuFrpui-N)ƀyHt$tc<0Sƴez1rQ߻'w僎{lwhq$3ֺ\u`#ruK   !޷m{<#2;0)oppʰ-.0SF2F<0)c2 NiHHO1=sc~?s<scy?s>ўqB1n_?m~ 1ßǸ?C~/x6?Oc懿!?icscz?tGy?tG}?s=6? 1c8iÅ1Ǵ͏BLNcp?C~ 1mc!?1\iL.tȏ?m~ c:p?s#?sc|?t(t,tG{?}.|oi 1Âi7\`9a g|?6>ts`#ƩܢEiԥ Z/2.΅&)'2.Nx81qacsqZӖqrqJ:b)-Jy(G'KqE尨Y:K͢N@4+2l@%3ۅ%}h4[9W]9S)\mS <{z%>.㕬vXo\vʤ ږt : 㡜tQv㱺)㨰=4\6l||Ptq-1N͔EW- ^]6_=8bsᶌca-1lh,fl@v:v7_W̨ ZW1<1b [F0cI|,gicy^xxv?//?{queM;%2H$#2JA2!dFf9JNIrFΒY$"YU![J2]I7oo߈$I~#~F&M77ooY0dC*U <V8= qΘ̂eLͲ )TVu2*I$Y!kgb;;pGqG#Q(w2CeѡLP&qY^()I\$.e%2:Aeqxe+D[%,.!VfqIR%J*E\qIGG!J)E\¦q ݲUҖ,pe - \gY*2W9Y*\cp҈UXZ_L^O'AҐQr@&Ɍ%',YdE.#(nōpn7FQ7FqA ww;;f`Y , e2,X`X,#Q(wwo)) i(9 9 #G 9K"Y) `A, X `FRk$Z#5HjDk$F5Z#IhHFRk$Z#5HjDk$F5Z#IhHFRk$Z#5HjDk$F5Z#IoIrFɅgc:*QI訤JtTRG , y2`I4!'$I ؤc'``9ٚMd]z iH(9 ɄL%G$䌜% H.E"dC.Zu(Q~~F 77oo߀(Q˻lm;F>zXX?|CC\?,|iu۱+nǾ[7;nvMu۱;mo[7;nvQu۱Ko>[7;nwUuܱ[mp~[7;n wYu3ܱkpǾ[7;nw]uSܱ{mq[7;nwausܱq>[7;n"weuܱmr~[7;PKљBWtm>lib/unicore/To/GCB.pl}]Fv[E9UE6l\5YiFk,缭k8Hl|xxX,>dws:?Q;ͱooW^_?Wo_ߜ?ۻ?gWyw6һ+[wu~s|_Ż|Ç?0o_?ί^c=~x}pp|Fѹwnxu?áh߯7om[\Y?LJ[? ;7oJoo^>\zqp|w}g/.\]ݿGfn__y?/8}t}յmqw\ח=ІF<}~hF3u?}{?^w)/_:;W;l_;?|9//k9 7wɇë`pT[5nUhI}&K3Pn'݋51pZnۂ`]bFba+_4mXdvxh Ujy[]Kd$ 0l; -[Br:U!u cW1.H.z$Htt8ͤe;MjW,IiW2n#愄˴#Rە, -uĺA(6BJR;IDLdΚ/+Jn¦խdݹE;c~3;eH.QfE^1vMX3t[A=>c?]#룤=ÛÛ܍h9uVldMҏhiDcx,v=n.b-@Oҩ`|sWm쾧~ fQ0r2o8=-WdcW,0yL`TE-ZY'"6V  %v%%q_ a*Sܕn*Ynԓyfbu?C# ե;yPݟnҍnUAѮDmzlQ[ul\mlߝ?yfsqW[=nT.u`%ueibVbsϚmR{BhS6~! viwmvf;ivZ\]B-D[뎫upj鴕\>-jMJⳒܕ`g~gegu+3YveKD6uek]Zvk@VwYkkmN0ڸ'ٵ+:'jOjQI6JR`ψ`ͯ,^plC0vxbi{`GPĂ2mDvQX<>Cº(5md!سӲ~6;s[Gn BFly4ڰq]${6&ve +@}iলv_]IOya\6X\^vL7j[^ *~_yvyuAV2~9CWP0<%]WMm?2Jgt4􏗶`Ӓ;2O(oYm(}C{-ٮm/Ȧ,I;x Ԏ`}lcCwwAF/!{ 6b2liApm=X3v lW7Kݏ+ݬ]Iw`gFznf(|r*t@7nm|V.ܗv:؍l{ K7/ryUEn$K*{3'[2qKT^Ox@" <Ѷh^wRk)PKљBz\)plib/unicore/To/Gc.pl}}[^ѯ8m^6əܘ cb] IOZD[W`_~?~)^}yӻ/۟}|~ח?|oEן^ _$߈͗_?_}|!ǿ??_zw?/_da__o}O}?yl~o><Ko>z(!7^%חoX?ϗ_~ I-?}}7񛯊}RW K\͗_rvO(y*"ǩ0^wE?y'O|Lk~B =$#ɂU$oWOo?ӿço 7_??ϒ/͞W>|o%{z<4 OO%"==} nqn}zN6 ҟ\4LrD~Dd#c܈c{z I K&m#Dz$YO,D!Lނ/p΍,d^,tЅYM4o6ꗗك{67J٥#mvۥ'D6|<3.O@ >@ >@ >@ >@ >@ >@ >@ >@ >@ >@ >@ >4v%i۹2C!!t;HGb=+z2Es+%UAbLEQm/lDV:vK$2UYl&3$M!b?e=G!F.iru9H#4 i^sYQVF rZ(wN7pZ5(;9[",Z 'DFǚ8.TM .2 2v\AE&GmʍT*7RFHr#UnʍT*7RFHr#z<}z5Rs*BQIjR)X$Sh$&Fbh$&Fbh$&Fbh$&Fb8GuNՉFb8Gu*SO!B'1%(:Aw/ XTeQʢ*j,ƪ7V%ScXƪ7iӈO#Ff .KeɰQ.Φ{R++ҫPct*CPx؇W~ .åst åct_:K^q-s哫㘣!GH>B:1xxu l~ xX=>{|LJ@NT$oHɹDu1Ϙ!A뱑ˀ~_1W12D` :!}eTv'k`N4L}bFONT/10]:/fQ.je`>N8/bPCV[v* ]1}L f>`&fbL#cd`&['`@Q]\̌d QAx0wDO/fZC,ӗdLtz`BLSzNNɩ?ςIv ;or չ(@妘q*Y't0+^˻vkwB.څ]b.trMЁgB. |6/l^=Ѓ{p~_у qS`;wBwfKjH6 < zfMO?VZS˒f3ҵ;o6Z6ouq|c&mW;BЧʎ Dwɱadf[pM~Wdgfnlv=ޮȥV':P+N4̻#o/GiEXW=Xs,(h4  bA왜`3ȄƆo/=L&yF<#{%# t.iK`xX`wqN[@14It[ěBN%ӁEkO q9:'YXi{;ņā~ ؃WZ[z?~zpz\i.A Qo#*ʸě qY%v w׾Un]&d\2Vrݹ%z.Qs. lh?oq O$gK&rEGf9e<ۉ$ӓL$Y^ +&Dvl5I=mD{]1̳Kǁ( Ϡ MݏHNM :NtSauW(7#S~֤DF!v e'q ,XE G+J%e$.+%$5IT'H%CG]/>KAhM 2~ZFwYuUDL ;WYB9D*ݹ-9P6m&倰Mc B~o(vLX/+Z?Æg?ㅳ=v3m$۞ sAǟ9xxև 8\A~ ݏ nY,U]c%1U"vH- fśOdԐM{{_ 슗.!a3^H$x>Õ=_^uE7\{!-Nz&SitdMqXpUqLfp4.\ dOLk4uF'ImBm)6S撆W;!;Q^b:.#O2pF p|$5z+5y  ޓZZC]P-e8u@q 4n$7{[Mc *wQ!8JOV4N"QA]yDW l E.D{"tUݯJd+AuIi /=!n܆$bnDV, R `,adw$}*'3$ HD;ʅ \YB>, 7no![PD7rOPH>A!N gU?p?ȉ$r292sJӗ+ ]*K`co ^\4wb+ ԇ6Yͺnuuݬf]y5B޴8 0 ɹ)Tr9A$g9P9'CA$g9ιι.r@!ř⛜B\rE(q?"((8<k{4zı ͈S!"I0QaECHLo;=MVDÈ@l˲ϲTG.v*Ue+ !jW--QB|Dh#>}_ĶI" > H]oYVB׼T/$7+G^!?Sg hr~)-2IizTU,iJ\6;ZOv۱!i{ )&Q)iO;6[Hv?[G`' OveT~;_._.J$Idrnr 9FN'g3Ylrs2dē'O&L cd2L q#}Z!L_XqmKHK=巁[+JȶaV(z K2-pXݮi˯W$wY+(bt,CvpCZvn[>7ڽwa% G $K@dm=d"u *kJ. ݹY긧` 8E)*ɶɈUC~G{x^6i~y88^Lmu0N( dqfy/l%(ND_m s b:=B Iɉ[!gؽ3$c'$6Z"?KYrXg$>n"%TElFzTةDEK* Hgj]PD=*[kW@{ "{V"3<6r:9I"gsI9HN"' LE찃k&^ U͌*[દ*Yzd#Ȭ˙mQLo%q7m0.`*yɳ.Wp;o:Gϛ"-εcرD쵷D&9p!9Es)p-L#܌RI_;-!vggKGЧszAgf79>p?D0X;P)8)Aج;Hxxli$-bǵ7Yz&gzN H\_ۇ5k䡃eP#eXsAHcT2114IcSS-tpU} qr=n1_KA?{KIH$w |PN{&=" =V ?ݷAd2~nAVЭvx$tNJ^luG͹k9yZ›T8{{W!͹S9uR.PΥ_Q]>hVe)=qa%L?բIw/HȖ~7 |$ŤEť꿤P[z\ b^|ԋ[M6pQISۅz:P[΢ᥓ]KUpg/\:T:X"G))JN7R:$Z|o%d=eZ[g}nRpz}s-Ui+C3 iH.uŸ@hk ZdҝN®\濄CDU-JyOߛkA}w cWi0t9 %K.]K5٫ Wl e%`X+ɔL.J$kKܿ_[^Rs4~1ͥ'V7ɦ$͞ Cp S3OJdi}7 OąZ_DeK;I/M uH'/MqT% _C 2+;IL凓+ވɕ"h^5"fXuޗ.k l۠wP;saroxxJ1/MgvyznG^[Ns PhϔkP7@[tPb$Z_[Z/8&tQmP%3迤)^%,݌̤F;@讚< ApaqQYT7i&#e'T><"rRJEg/-HuX6D6.o!(Y|THu.T TR5ׁfybLctR}#"fNu YIk/1$HSҋXI=qqtbH|.BD~bĦ&v|:!Tvc$A&"HF==SQ\нF_TPaAo ^j2O7=[>?G$ֿ߁ -fzPKљBtv &lib/unicore/To/Hst.pl}͎Ǚ(8~*, A10˖DYF7}ƬfɛEvf?47?Nn4^vϸfx<}8O炙w/|9?]立MorO޽}8+?M׏ozJ챻Ot|wӔ/M>]~>-ޟ<=<>_wc7o/ا޼t{>?um]/秇闧ǟ>M2vntw.?ٗOJ/??}xwR=˥]T{[;\Ϳr#kQƟ)_~:~`~'X?G~ۿ~?>hV]㻛~㏺ګˇ}z2/=埦o}}ћO77O?obC;?/norBj'EsS\xnv?^ɎՏ͏ݎǁvP;Ҏڙvծ+viwA{Xnlzn{nviGQL;jڕvUnڃ=go}v_Wo}v߼7kv?Ԏ#vig Bh7MA{'ocX=ocؼ=6k8#vh' Bh7MN{r:}mڶx ~D?^oooÏjځvP;Nڅv]Ԯviwk'o'o'kϋbyy{ެ=ޞwoϻځvNv]h+JiweX{Y^Vk/ˮvh#D;igYJҮjwڝvW{x{umX{umx{5~j~.A;jGڑvT;δڕv]n;=hesmx{3~f~.mڛmۡviG3L;]hWUFnjڃ]vۆwwooﲻ6jGڑvT;δڅv]n=hp~۰~a~.mǡviGD;]hEFnjwڃ;;;;;;;;;N; N; N; N; N;;;;;;.].].].]]]]]] n n n n ={={={={]Om~ۘQ'F]@;jGډvR;δڕv];]gۆgۆg~۰~l~h#H;igYJҮj7ڝvW{ﺸ6uqmx{1~aP;Ҏڙv.+vh7A66uumX{umx{5~ziGQD;jڅvQnڃm~mڛmۛ]7ۆ7n ooځvNv]hFiwoﺻ6uwmx{7~vhD;]hEJnjwڝ]ۆ ow=z6}6}jځvP;Nڙv]Ԯ+vi;;;;;;;;;N; N; N; N; N;;;;;.].].].].]]]]]n n n n n={={={={={NmɎo~mccFCH;ҎjgڙvVЮڍvm ow66=6=mvmx{>Ԏ#vig Bh7MA{6~a6.66jڑvT;Nڅv]nv=hmumx{5~j~nVۆځvNv]h+Fiw9an6ۆ7ۆ]@;j'ډvR;.ڕv];m owﶻ66mwmx{vh'3L;]iWUNjpmXpmx0~a~nA;jGڑvT;δڕv]n;=h;;역z#ւi7PKљBL٥D lib/unicore/To/Jg.pl}Un8}EK6eIuK&N6vh_ڦ#mt1ti(;CRJkM{9WRݚW4aDL:[ I,䟏n7*֍|]>ubSH8%2I?NNh9G6m^WԽ?:m&GW$d#s^t#iQݫ о^% yU'Jo%Fr)衩QҺ*@f _jGWYFWyj 6{pnͿrѮ6 A]V. j)yGwypdH[j, T0?WhHpȫR5KÉzwBTuUbfcy}@mb(I h\L軽 ]Wt]~6\_tN3v `戹MY{ ~zav2id7}n/#X֌2C" {tmB>g2.c4{Y OZfh6}'p#h0J(/o1#([ѳȃ\,гJkA%+C瑵YqsKz I4HsBmY!i߈-HVJeB˺F|ҧA (ƃn23LڲE; 1oЗ!73H|}# BZ4eׂq<]# GighssBԃKL<w<6qi`xFS A QHP3̿TkQk8;}R!-BzY+ OA㲍6 O 'ht-ru">IG3:JP4RsJ58]tTR'uap(GhXBm t7 H!oUzhZ\lSCm9iQBCQSfT!M 'X( 6/a@P8W~7@R4-ȠWLc'84p0}*s|.9sSrCəaH\skgzXO5#xa.7cX174Wx!H 767`hfa_Tb /C/0RX3DmX8^ɳx ?EPKљBwailib/unicore/To/Jt.pl}Vn7} ^@/^^ry[Y`Բf36fZA=hӮT*UU${^oO)ߩw[u^-WxQӬOeyχm~Pw_xr_ϿmӌYmOFfDz8`p_q]y_|QOL)f4gx:YK涼 o[ˇݼqr8L>׏óZ:,jϼ ^ϳBe{Ηֶ!b{Z_6~~Py]6fqH3閅^>.ODPߖ9&3j<ƌ}t\>^pĊ)ܝ׼OCڣ>\k Ao/ۣDzy\]ڮJ\~TW+uΈlf]~ ,~~d8.v ]S nAx“׻nqۮپفUg073Z9Y?zEeL6vz;:;-JI>A=GS}fW3)keOyj|yfCK &>% k+kصr^IVf##a/pik\K-LkdvgĎR;ϛyC:/Quq@]b;ܛXc,+͗Wy}›qOoD/NLw xU}DAP_5靅.;÷0F F72'R>ss}^r B091σ`l-ȌqMQ48Cdwq؉|C{C70 s005kǜ8 B2N55H "De=RεV{.2}H͚2JlUz3B{L|s@Xt!X6 jO\NH/]'X!=.I" |PH[OXuPKљBb*J'Edlib/unicore/To/Lb.pl}}]q_*xfIhr,%H/]$Ǖ>U, _ٟ1x~ן~X~>U~ꇷ߿Oo7{|Ǐo_~o|x~|7/~GաǷ?y3ǟǏ>|W Ww}?wo_>>y(6 ?>޿?kaRǛpH"=_U{|h?Ϳ>+û?>^}|j{.ۏ޾We~ӛ?o/%%b9w1Ƿ/UezV?{m_Py񝶏Ǫ)bk1~}ۿEwW>O,?>=~b~7_ ~w^'Pš_y@OO!О>_tDSGI~TmXx<=}[?ħ}[2Q/6Bvy?OD@A`fi19Q> tKr ibi/iB,ܨtf鲰2R?(Rъ$V]Ӷh[ ^lvjv[!VЖ)Z4t6f,_C2m?KfOj Qt4h.VAР#GfFQvv6iPXQ*;&NqԎZ״`aUp1]>qq^s뼖뼡՞Q3EI'3,[9N8 촧uO;V-\e u_㎆Z p'&owEtV[9P DjO^&R7 5j7V{AXZ6'PIG˜@;jv>)t9$QfBDrO2Y4)!&Gl0$I~`\IvaL(id fP!ԢVeA3Ų/MVY.[/k|iR̎QQV;,Y,,ȌS+ҫUձ>uLo{e-nHV/r,!A\'QS%nsckNBkTPBv/ r[*eeT@ՇƎCfzW^ցaQo*d*'CtUSvVD%K\!jt!>?ƨk5CתPU63F9dY;%m^ͪcWBCw՞ΠD'>d}}bdډ0*:Q]i1$.k dh-hhpMDe!p& Bj|ڕ! O9[V[`dg'1|o4[n0ք o4Ho`hw. ]I* nl4v`FcE:ma~Xtجf6Y:maNuجL}vث_֟;i{uګRLA Xe8ǝÈF0b$u>;CW@֛Bds^wzc9@o14k;]PR4bw#v6Y}CЇBK ,),#B '46LPi3c5 HL`36L2~Cdbs V`.1*6UU`ADP+3R11{,C g80Πq3NBM0`A `&4Xq 4`4`4` ׏L~d 0Ȩ̣"Ygt ^~UCPtypZi#3PShp*3}j#}"bjl-V;-ViԵ:}?'X|jvz3-kUf 2NuUE :90-5_c0 fsFxa1 },4҉M][2-L>Mms2ZtƊi@&]SGu2=ձn0_ @>΋Y|̮KufT4[ڮ"cᚉlG-ul., Vʋ)HW L,ZԖ ګ2du.P؈[¾x_B$, F_|V5 "`HoTPQg  Y8n$+MPT4XҘ k=dQAgWA:]ի,^7 ښY}fƠѦZG7a s QM1jJawp&žJm "ٚZM@ F/_:zC2 P 6Q^ri@v' Pi2ZWKC],Mٞkٴ;YF恈-mjq?# G0@9("pC\l2P!؄HAtz2MDYc0ܬEEl}Bf"2щ[G ´2^ KS͞+fi;R|O<.f(5pW8 d eoѝXFymǃ܍etEԱ&odygkG7c3!0w+vYwZ&@˜ 1ʠHH%[`'`d ͋]Zv,bȄ6h:vh1'0y 1Bg X ĥFu:}EKy/]5ja]u)ъ)!IMERVNײ5qeсRg :c`$l A[,rOR##M\9PPh@ۨemu^AȌ86sj L,jw59&t59s+eSj9c[hVU8 V='hfhzWozWozWozW]WvMrMvMqMuMsMwfffQSjjpMtzyzyzyQE0؟?XlhU =fX$sQ! h^`/7 i!Sa#bIIܲ$EEۛֈcz@&#QH|`Axp'" \(d#3?5rkB}c01111Xʪc a>R\6Q3b3T43@ TPƜ9Hg r;V 8 =ayF;cӡBUΚ:eMt Ma“:Bs|'V'̦ԣF\3\3] 5!&j6lѷG'dxQ%xQ]0^69>bΣP[\[<9ϡxJ'V]4:bJ؍PQo}V["vCok׻yyy׻y-8ޓ9Lazsd{ދ^bW@{/{ދZ\gtAs ,9C0A5K˨-h?PgLNlqY2N x [^ q1mͣ7P>)na@X{jK%BK0)ZJ: 3S`%5TgTAs!&MKyTh4l1xIC{m${hc, e¦I2˨oK@ʭmUhUؐYhQ0mrmQ]E.n8ix`:VyS'S(=h Vi`EnCHnrBc/&}iOfheB`s(6hشPǒUԲs]R1ѠѰaa_m/I}{"Dg&u v2Ta1XU!Vi;CLK-q񞷧Lq+p;qvű4ɿLοɿ737;m37ofovLοx 8R/qz!-[[ ooq-B-ο[ȿ+:Vo%V }z%V [[WouJο{Pɿ+9⻗ȿ9ȿ93ȿFmο ȿFmο<7osmNοɿyNοɿ;;vo'v۝;/'pWB_ Wq W+_qŧ ]ȿ+_!/>>B_ W;ȿww8 W}pAο;ȿww8$N_,;ZOtIο;ɿw'w:⥵e;;'w.rŹȿww9."._XK\]w.r]ʿrAW\ƿr/0ff-ĭ[ۈW+܎IƿȿP`>q7J IH͎C!nqF B\q\|qN..Uh>qqrGD7J$ NH4H[X[ߪF Aq4U87/_ (i>qO&;'[[9nn'nw\|J]]+\_ (e>q/μ'+Ľp3q-U[;n pIx9{O'o_{+m>qo_& ..;7;.޵ߕq+p;qv qNNŻd++8"W}&_Iƿȿs)'n7:nn#nw\!8.>Lq37ofovLοɿ5$/-$ofovɿ6$/6=ooq6Κ 8o!-[[oq-B-ο[ȿ+:Vo%V +/Jο8Z"[+/61/>ש'qy4osmFmο ȿwoS4osmFmο]96o#6_|.ۜovowŦtowNοɿ;;vo'vO7t&O\B_ W+_qSwWB_|-B_ Wɇ&1;;q~Gw8 ϏuMD\epIο;ɿ'mdNtŷ2ɿw'w:N$N_| M\ ;,r'5ȿp.r'ȿ".]O\e.r50w8տU8ȿ5U_M--[ۈWW;;www9ƿ#w'nPW}Bqp;qv]];߁OF4;pDɿG4f-ĭ[ۉww8$r\qOSwƿ$=i;N͎[[;nw8$t\_RýȿPW}^ʿ2W{On&nv Jq;pIʿ6U︍MՀƿVōj͎[[9nWW;;ww$7D85?Mʿ#Oܤ;R"nv BqpAq37/>)x'of/n785U5^ 1^-+Zmj /}Yhu~B};dh`iɴjLL{ w] eY ^\Q5ʲU+^)>'Cxo 5TمC ':,憐pk(>`liqk Dd'sSs:Y]\]#Y\5WpMt5ѕpdZ};0n2RIEltO뵺VZ^kO5˗+5L 5vy(}:0× ]uhWY>йpsWWeǣx$ZB!d]Z\@*7= b >ǰ$7 R|r.>rl|/.//?jo._ݽ^~{囻o_o/~{w_><^7Ϸ^3<^_^_oO׏.}}|{L^./}˛۷Wۇ_x><}wW4Gljooo/_yww_?]㌇?D]n__{sy{8a@1zqǵ}~?]L7?|xބtC[]h7xx}~x^m/?yqsÿ& 2"2!2# '儬ʊlʆ3rQ.U"#7ܕ;r(! [[[[[[[[[[[[[[[[[[[xn;w;Nݎw:vq㝎txn;w;؉ڙDLTwv&;Q;՝;ww߁M~~7n490ir`rɁM&a2,dT&dV䤬ȦrEvܕLjCnnnnFnFnFnFn%a XY WeGnJf2qC>q 9"2#rBVeC,[/dy3oPwV(v C`'F "-r I. &J%aKI.&DEaK(*$U.rCˍ깔=ou~+ۘܦLus~fˬEI.]4o 0F0g՜qYَ*xvf-ÜP)Y9[wql Xx-FɕV1kT22gseVGWG2.V0SCYAttIza;֜ & ǰѱ6a.6fxaWޝT awRy]<B$î_>%%$YFE%Ð;+z]a]a7C4#MH*GS9Tr4#MH*GS9Tr4#MH*GS9Tr4#MH*GS9Tr!T|-O%U0MbS|.dIIR+JIZR(+$LIOHWBؔT, SUxK*Vm*VmOHŪFŪ Z]bWTUȨb-Wx,~*U+ZIC8cvicJpyJ2#CNȪȦlYzdꐫgv!7ܕqȦcFEYٔ9+rQzڪ,Ȯ"weCa \A"#rCf,ʁ߮];~~wv];~~wvO)c?"AQIYEYrBVeE6eCJ{sG!-U"#7ts!ȡ/$a&~쌧Dޱ}7o>Ϋcgs˗y/ѫ#&2zik89gjNTcvӘ4Ԝ(ot1˝rg,w;˝rg,wGKC_y/p~H \ }ǁ@_p 5 h+\p 5zk\׌;\ӨFPp͝6}KM.7dj}KzM.7d}K"݅wX&^ 9)+)g\]!w8d[n[n[n[$w;ɝNr' $w;ɝNr'MXք5`MXք5`MXք5`MXɆY w;ÝpgǍTYYM9# +k%a X%a X%a X4*K4*K4*K4*K4*K4*K4*K4*K4*K4*K4*K4*K4*K4*K4*K4*K4*K4*K4*K4*K4*K4*K4*KNr'A*;rڶUYQUYQUYQUYQ kOMv*k.E)l[h[-1x^ Y9)'dUVdS6䬴E WʎܔrWȡsS-M-M-M-M-M-M-M-M-M-|u;'A8fyp6KA><<΃݃z spnlwù܃vp:}pnpwù܋&wp7:pntwùܓfwpW:}pnxwùܛwpw:pn|wùܣwp:}pnwùܫ&xp:pnwùܳfxp:}pnwù%ܻ?^/PKљB[)Nlib/unicore/To/NFCQC.pl}TMo8=˿b,K6~$QD dq (tM٠=m` ^;Xmի l>n[K 6~Cxv?c7=lo__\F}'; -*;uvAv/@aw܃#vԟNp~^7uu Ϸ待}FlGם2YM>0vgl0ncQPOu;\rNoad b>0;{Rzpٻg#7-x驛dɡkOo=>aQqǰ~is{:҄x<8ӄ/'jPysOV0Xni>5˟?lgrZ+~Km,n\,F;_F-۵Da! "oR1s墂&zfܛP.Qx$9ڟ$K9'_-c{RҔzʸeZ ˺ikx*3ƴ 0:f:ŻӜyCkrN-42Ztʽnf4 2fL#\aJ\s<sb,J4+ѬD*W2(Wr yQ&J<( fe]5עeʺ}Y㹑FjƟ-co,Rc*@oQ`We`p6S~SΦRa XS"ET2qֈI/c%ZyԱ_ yuqTXKi_2ƌZ16! m !,?PKљBQO& lib/unicore/To/NFDQC.pl}n6O M$:"jp)˵-{YKƮ\`Mߒ3Ù!y%1郹pitvi.;lyX6oinfoճ>N0l#<YB+7#"l9p͓ikv3ݍha4O\f?W+7Ӆ?7O|8y0m8Rڔ77F2f1ƌ‘ "8]-^ ՟bY Bv~\4/ ByZ/n17jI.9n)}DCMӄO9&gyr#Z(U31- iYv}Φr}-_ż6p{a\y~=\$LE,N0'-qfN%85=qb~d>}O``˾U\9V']vp%sMi(N+^l<$~L*g3Ǩ Ķ9kao+\)\;֝] GC̪}+g#R%8++JDU>eROzjկ&ZZZ8G-s"T M䉹'nA:E76ྉZ$yVrRU׈׼W898N I8*F]uN ԋPs˾"^Q};ļGr$1z$)qKUmU~Fz[oqrK.>^mz5ט^cY{/E;UUҊVA5c(9r=-g~4_85s'fKN;in%\դaӊ}G18 K-wGZ a oZgdo-PݖO?{^7ŵ;Uyi]UUPö;{ftdӉMG6`\≹W Y8 ZVթ6WUZoOhڋ R"v q+{H{ͩ=w>h AkZCPQG!j QkHTCՐD5$!Q IjHTC[eYϼt~g_O%5ʁ5Kk~C<Ĩ(^#'?9mB(CGAdyK2%pCL9e ^T`l ~E'IEa$˳PKљB>0,lib/unicore/To/NFKCCF.pl_:v>[X=cd9I@LLZz)Z]Jnut& ^gI{/Ω+A{ o~c?~o=ğ㏿oq~7O?O폿?~w/??o~Ï?/?O_Co}o/G?~|/?o~ˏϴ/ݯC˯ҫ?^>?y_Nw79"~v/wOG~?]#sG7[?H/ſ8ǿ9t?#+ ?'WNw,͟oN?O9Fͯ8-[9?(co_?O >N˯p叿?w$Cˉ_~W*_zt88E8yt??~ѿ#;Ή~Wթ-<&|??oos$Ɵvo闻g_tK1_<pL'??o9oXGz<*=5S-.]> m݇o׻[81az驁a4aSc4I4sryLvj,^߄v#4?j/GZzS/iK5љGuOINS|jVq|話k4яGNXj_WhH/\~Hq|NjCOpN)~خ 8> 5¿F#`ӹb7׹_bHX#'ҨFhk46Q&{nF^SchXch,V^1Ԙ iܟkħFFX=c)貇^P?a޷ScGk:&+oˀŝuk _,=W2GhA$?%F}+?Y,+XԷR-޴. ?,B{k^:~ȇT#u&)o˻!zjtׅ֟hׅsFw,aY?c9>7j}?O4֫Qr׏#M縦euT#SzE#]j^#~ȗFؾhKc]HEgk_4Kc(_4QF5viQ#Gƣ!4k>c5bhK#X(_4Kx\jtC4|ϱvx(A# 4|r͏4Zx||`Ј@ϩuiNC;&B˗άb5ЀI{gd;EYntGԟ%u[ձ %ҕ}i3Ͼ%}yY_/_g9g_}ʾ\pӗ+ N]Mbg^+/L4?dhx-!Գ͏׎BG1П_{*a"u.O5[TAAߧ˗ƵGm-FS[5g1Ҙk_4KcK|X.j^}p_4F5pi{E#^jX?ϏΏy~dv~|;?cgy~Tv~}xHWH}̏tՏΏ׏HWH}̏tՏΏ׏HWH}̏tՏΏ׏HWH}̏tՏ̏>ϏΏy~v~ccy~?ϏΏy~4v~##|Ώ׏e~~;?r_?—}_GG##|Ώ׏e~~;?r_?—}_GGcey~$v~##};;?~(}/\y跩e~\[gF5o_4[1}/cZ|)vLXmV[+ zB j45>4ˇvGwrƉ&g1oBS'T4}vwqG3&gmx,cr<4gmFh8Cۻxh>uC{Jѡ\\B 6^vfp+7d5ܾfrs9\ڗlWn6Eles_x^>]1]՘@Ώngvv̈́r;GnB+ZM(cssSzYz<<u=8=1?UנFuiA er,>2222W222]ٚ"> 0?G ktZ4P  ktZF4/mg+'נP耆+ԫ@h+34VŭFw,x~n<~}㣝1㴙軍xNldBg6t6 P,OrGPoBLhdC ]Մ&64P e/P6^8nB G&]kq1oqty~oq~w layVq#A?ڿ\9(ue FЌPg^hL/3K%ܓ/O!?Ab| kd:d1B7 MF( B7{g#kǠ|S/Fmz^t@ %z%G~ z ӣQhX+нV\> FE^0BN(1 PӽBOGB[Ļ{4&m{ (;^h76 q"tCPcd Tck My UaߡdZh6pưZhKh{F\j%ף׺4% uu`}^BK/d^{! ٹ v%{!;b ^q~BS93NK/1`>y} LjT>83h&+𶪙ߟj&+`2 -X~%uVkԯ]d `%U+VSLr vQ*HNC2Z3Z)إGFˤ_he2WD![! PZܯvuM9° !GxzG߄# 04+ak;hգQQ(zA=}=eT"GG֣Q((zTP=E[ GԣףhQA(zTzm=*EPJ_Gp*zTzm=;Tԣף8#ya`~;v \ 6ruv-}ց{/0V#` ۙ0hBeXy?WϷrg~Tc9o8]^%C>0h7@c5J屮Ɗ4432l-eIc3<ڥq|6{ls9iz̏Wr)ʇ Vs(Bs/X![pϙZz-B3rPB3PBvt|ΔC(B 9:b/T]3+Ch6+d@JPBvt|, 5+d@A T: ]3 Ch&+d@P5H>`<B|%[\JjW=X![J`BNz$BC^H>`l=*ۄUV֣ѡ| zyzG+dGӫG6~#hvE~| z?6thz$B ӫGh^H>`l=ֆzG+dl .ȧ-N6ZGUQ;>7 |  Fo:Վ9\vp1_F>`lq5]ף?mCU`VcpE!9Q{W=:f _X̯#Bua~&e_&>6{ky(;{-`",{whv|Ҵ~ '_ ;>WRW=X![:݌CUV֣cz<ĴG+dwk˫Gq[GЫG`l= %vcx&G+d둫UV# |Y+pL/!G+dQ ^H>`l=rCGW=rw![m;KfwG~w(PL݄|d'!r[w:UPܫGwK'#4VH=n(N\ 44^c4Ccxpt4,pGCZ >4B4CF5⠱" ;?!7X }(蟂ZɊSPCFAh^ch0O^c;@t5yj?<8O@<.F۶\{oY۹oу9v>]>/SxK4fIxjAcAXx,i|o ij/]A+]eskLFD _J5AÂ8_k,FB _J5ܠȗ{ ?h'1<-8O7ktGh8O+@<j2OyZ{Cke`4"4k c4lFc1cAcypfL?h~/wVc]?EGq׏d5>s֥1sVAgF }P~EtgO3u*'>&T[FO0h~uؼ 6qV8ٖǹPrP|@>C>C>5> Z˥S:ZDAuzcrKuTwr\4rޓyL|E;SU+A߾})i85S_!U?M.4ISpyrƹWs}]>=$*+3K^zQm骦9+ F 3:?]T=nG{| Ot%x?3p^5?jXxxVYUoK|VF}-tvR^oB]ϋ<+fWiʳ{5`wDnQGk q-ٹűi\ETW:RmrbjtU\s_ֶ6:mNm`/^ˆ}MۗKd۴5WE۟ӳZUh0W۵ ?._ɹnnq ˣ*<.}ۗ\k_l?y]Xv9}t}UK?/=\,}eѻhrU=՚:^]|jn ߾yݡW!{}k_]Uu W|ݎȲvj>a3$pυJW'߹PDɠGk/ڥ 8sBZ i7&:Pu.]A.C FWKQh(to.teۮ྿Zwܣ;VA|7y˒m]h7 Px:kZ꾨ގgfY =r/:!Oy@p{9W3Je,ܨjRo;}^9h<}7#擻 n=tO_ڗ6hlS#_uo}m ]uO/BCڻأa;5U8`=K:kaz毪{3PNc5l=oļգڝ`zn@p<7"=ľ=]Eշm tVCٞ'ۗox*}pnLH|_V;۵_84^kpvqߩ}}vq=}}ӍGq?Gq?>-gp?ZqE~#Y έa^s:O#oB;7[vfέ ܲs7wn9 4sN ߹-;3|VB;TƯS@hx"gD 'BO$ 4<ff*߇}Wޑ{/fvEBhf^솄n3oo& 7iz=v#c;~VrE߱v ̓KO3g/ާY=qиԭMˡ)[cy :honvl/;ϟ@*;OUq|=_9 ,M,g~W an|\>C>0hOagY||`Ш]?WumAU]njѷmMge_'IAA҃Oֱ2=[{PKp_4*SFW`}8 1]`v1E.0jxaK_б ˨1ԖE-j e nb}ܰ B 7'Ռ/( cxFAi~Hc僧# pz Ҩ5:SHghl/0>yИP?Kcf4(Hh-('a$tUb ќלr(R4R3je 1Ɗ7X=j UE$_V|>hdTFQyA?/Ɔ 2j|#jTt^F˨%:X%j}۠ݯ# MG[#<+΋er߆rfxF!z7#mx3h~+ 5z|}֛ƎixhM55ћZA޶o~,tҏ޷o/J]cX ~f8ۜ14}tsTrU.7q4TmX-G_n`pF0+/Ժ>o=k`c߳f!6!σFB+4B+q" OX{ a5Jưt<wg1A` . .k}Љh:qC߅f37tcO0^6N>}h&sƽJbe_:Tp4][v4 Chm6NB6NBïJ ~42Ih|kzz{ttٽq& :qrf0h`++X7ޕw ѽw]wkt]y]{W5{WFޕw ѽw]wkt]yޕKxʻЗB]yޕQB`~ s+4CVh!s+̭kVO['͍Ч57Bm]s+ͭV/[3Ϝ[gέ|e%mxe;3 ﭴ3{|qyfvfK0K; |%mx6lt񇙝{!0/m]z!0ShfO of~K0K.^r f_v/yq^.b{aИkAcF>1,X\p,3 9#4/@ϥ1nFNv7^n8w>5YӸ^|kxa6' kA#˱KcfcЈ}?A+ $LrAKcKgk@_~lf% i;wh^c46qK5Ӑ߄Nh7BcjGU3vt0F5^_4@m~K*I/c`Ҙk_4Kc}%9eA$b5J/W%ٝ+и*F_INUI`5^c^H WQ'8A{}~k\U@~]Ef5_4ȴK]p|j9WS gF/K\?nb5|_]Rz25kUd?h\WF/K+_j5@X4\ %_}VֽAiP]o@cmQ"Q94j?F tј5oŕVr] jmg,\3_;cg_q(FScj5*p` s킝n4>j렧:5aLuwƌ4v.0h,Y! 0>ץ1g5g昹u}h~=j+~Hh|mg]4 ~@YQFykW t{2oʗ:˼(_Aۣ /`Ŝ4 4icZzq<@zq<}c]?63Rp^#CvoǴ! 4tr0Ǘ>u㘎_]?qu_zq<@zq<<Ѐ;H̱=~׏htXNX@{l{4=!XCގ 4?J1Ώ i؁ӽxӊ48? ͎1C?2sQ?jO?O~Hc5~۱pc1|ٻG؏|Y;ۿصH,_c?]ob#} c>~ 2t{tN|a1jOO.t̷ c:1_r~Ah~ /϶opٶm}y~%C϶-o;!˳m{1zmyr};C1vHҏ$ۏi~؏|=ucɶi~^cGAYl? úoQiDCGE1,G/#c?Be!~ϗl3@{r~ǽi~^cP?>!~zp;cN" ԏ#~9Y|r"m;d/ Y޶Cvȗ~,}i޶Cn G{oǼi40ǠFب1l,,jLv_~uo!_{r_ovȗ~,z޶C\oe![z/ y޺/}hgP?;3ԏΌvc3c? wݟ/ q/e!z;>z{,\oA\oz{,\o/e!z_1,d }zYG~۹ܷ~xz|Yގ/ r},^o/Bvr},^ovF}Qvȗe!z;,{_z|Yfcym_޶ClB޷NȗB_6Awjc{Ͽiu,,u߄Bwph˻ۡ[##Pk?מ=Po-|;`A(~P4BuQbO><8ڭ.q?ٍay{ #!B49R;Fsvä8.vhWh{4(xObZ0أ#y?BcamQ?F?8Fh ]Rth.)845; K [_BO>l2MSSF\PjðaKmFۧPD]m$DhGuM=-i(ۣ KvAH(>~"7WAa-l"'Bl=]7.EnRd4<-(zҗC :4x ş`W#4l|h zxлW#4zE̵([X!k@7ޅ/U4BRE+߬|wK(Bf?_ JzsUۭ؞ox^i[E(~"'>y>T 7 9YmB ?B@fx ^gv~zM3{CBf=_9hphۡ+j>&d{{4>>FbƨB =Z _JEhY>< &dꟆ>*d Fhs< pG++D(}-kFj$y_g߅#4=0Q:;Fi}?;寻`g{< 6~8M*l}xh|Ël{~#6=_1z3-BxSYїkƁõ@97+4 (|B J(i?0VhdЇ0EӆݚoV ȮfwkC1c m}4YtGVwdkb`Vq! V#  wk֣Q F韥C)Gף[n:mЇ7XMVh\B`=yQ|ۭOϣqԣqУ1cկB֯ B۝sjOi 4⏄y4QW \|ۓW"TKuU{v+Y::UgnU8vͿkϛ[^i#7ngJi<[Ur}#p_-g__z@|aW 9j8= &M |.W^c0~ѹg?0N+fMUlK.zT: ل.lbBLgC lh0 &teCWdB3MhaC ̈́lnB+ZMhcC{hoVJ^<П=[ H-.Ka&_@ȲDb/>K$`(/咗E]"ז HK$r%A4\= {9{CFzt%6!Mڌf W[ڂR[z5RHjyV H-"ЫEڊbb%j %Z2VH ܫVچJa Hmv#^bRZj RkZ|@[Dm[-Q}q}˨ET澾E\2oշo׷[Dm[-Q}q}˨ET澾E\2oշo׷[Dm[-Q}q};^g߫i}MgאzyQΈ>1\eC`̃[EcYF/wa"Wֺ D*?}{,1#˻މň yX=q5pRNSޖ+'euWu0Xιw̧MՈLH,")R zrfSc.c6&֥ͦSGBjSM>f¾͝oQe}[j Z|j Y=ip|۷G^};>բyߑZ| #m}񉗚4_&Q뉦!m;v{ܱ3.0`7X%؟oJl?`c*+& V0Mwlpc7 ;vqc+~m(6Q;MTN0D7Q;MTN0D7Q;MTN0D7Q;MTN0D'=\3L 7S;T033L 7S;T033L 7S;T033L 7S;T0cCw,ߟ<7t%PzR%PzR%PzR%PzCR-T.0 BP3w߉_gwb;XlNu6':߉_gwb;XlNu6':_z09ar_/=_z09ar_/=_ 09`r7o/_ 09`r7o/_F09ar7o/#_F09ar7o/ߙߙߙߙߙߙߙߙߙߙߙߙߙߙߙߙ+_&M09`r7o /_&M09`r7o /_f09ar7o /3_f09ar7o /3_-09[`ro/ _-09[`ro/߅߅߅߅߅߅߅߅߅߅߅߅߅߅߅߅_09;_09;_09;_09;_V09[aro /+_V09[aro /+_6m09`ro /_6m09`ro /ug_c'vo9If?۽'6W$o^\X~k{MObmvo'Id?H;בw#_G ':NuH;בw#_G ':NuH;בw#_G }o c?K ~ 7$/'voI,_NuH;{ObaRw#_G ':NuH;בw#_G ':NuH;בw#__z׳g/=Y __z{ObmvI͓?۽p'6L$oVɟ/=Y __z׳g/=Y __z׳oFcpObar$/Y __z׳g/=Y __z׳/] ~KbartI,_._z׳g/X _7 o`/X _7 o`/X _7 o`/X _7 o`/X _7 o`/X _7 o`/X _7 o`/X _7 o`/ _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#g$J+gwJ+gwJ+gwJ+gwJ+gwJ+gwJ+gwJ+gwJ+gwJ+gwJ+gwJ+gwJ+gwJ+gwJ+gwJ+g&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _n]wFn]wFn]wFn]wFn]wFn]wFn]wFn]wFn]wFn]wFn]wFn]wFn]wFn]wFn]wFn]wF________________________________Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _6moc/X _6moc/X _6moc/X _6moc/X _6moc/X _6moc/X _6moc/X _6moc/X _5_g_eYWcuX&5_g_eYWcuX&5_g_eYWcuX&5_g_eYWcuM:j,X*-TZWcRk_K5_j,X*-TZWcRk_K%K5_j,X*-TZWcRk_K5_j,X*-TZWcRk_Rk_K5_j,X*-TZWcRk_K5_j,X*-TZ7MRk_K5_j,X*-TZWcRk_K5_j,X*-TZWb9k_K5_j,X*-TZWcRk_K5_j,X*-TZWcrK5_j,X*-TZWcRk_K5_j,X*-TZWcRk_5_j,X*-TZWcRk_K5_j,X*-TZWcRk_if5_j,X*-TZWcRk_K5_j,X*-TZWcRk__j,X*-TZWcRk_K5_j,X*-TZWcRk_K%X*-TZWcRk_K5_j,X*-TZWcRk_K5_J,-TZWcRk_K5_j,X*-TZWcRk_K5_j,M -TZWcRk_K5_j,X*-TZWcRk_K5_j,XZWcRk_K5_j,X*-TZWcRk_K5_j,X*-ZWcRk_K5_j,X*-TZWcRk_K5_j,X*-+Rk_K5_j,X*-TZWcRk_K5_j,X*-Tבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבבב׳g/=Y __z׳g/=Y __z׳g/=Y __z׳g/=Y __z׳g/=Y __z׳g/=Y __z׳g/=Y __z׳g/=Y __z7 o`/X _7 o`/X _7 o`/X _7 o`/X _7 o`/X _7 o`/X _7 o`/X _7 o`/X _7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y _Fw%oJߕ+W ]I7w%oJߕ+W ]I7w%oJߕ+W ]I7w%oJߕ+W ]I7w%oJߕ+W ]I7w%oJߕ+W ]I7w%oJߕ+W ]I7w%oJߕ+W ]I77Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _&7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _w#oFߍ#7FnH7w#oFߍ#7FnH7w#oFߍ#7FnH7w#oFߍ#7FnH7w#oFߍ#7FnH7w#oFߍ#7FnH7w#oFߍ#7FnH7w#oFߍ#7FnH7wg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/wwg/woe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _Vmoc/X _6moc/X _6moc/X _6moc/X _6moc/X _6moc/X _6moc/X _6moc/X _6ZWj_ew2ZWc]-LX&Wj,5j_ew2ZWc]-LX&Wj,5TZWcRk_K5_j,X*-TZWcRk_K5_T,_=ab-Pk__?TZWC*-Pk__?TZWCX*-TZWcRk_K5_j,X*-TZWcRk_K5_X*-TZWcRk_K5_j,X*-TZWcRk_K5_J,-TZWcRk_K5_j,X*-TZWcRk_K5_j,XZWcRk_K5_j,X*-TZWcRk_K5_j,X*-+Rk_K5_j,X*-TZWcRk_K5_j,X*-TZ7ϬRk_K5_j,X*-TZWcRk_K5_j,X*-TZWb9k_K5_j,X*-TZWcRk_K5_j,X*-TZWcrK5_j,X*-TZWcRk_K5_j,X*-TZWcRk_5_j,X*-TZWcRk_K5_j,X*-TZWcRk_ya5_j,X*-TZWcRk_K5_j,X*-TZWcRk__j,X*-TZWcRk_K5_j,X*-TZWcRk_KRk_K5_j,X*-TZWcRk_K5_j,X*-TZWb9k_K5_j,X*-TZWcRk_K5_j,X*-TZWc#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o#o%_J,X*+TWbR _K/%_J,X*+TWbR _ g/=Y __z׳g/=Y __z׳g/=Y __z׳g/=Y __z׳WR _K/%_J,X*+TWbR _K/%_J,X*+T׳g/=Y __z׳g/=Y __z7 o`/X _7 o`/X _7 o`/X _7 o`/X _7X*+TWbR _K/%_J,X*+TWbR _K/%_7 o`/X _7 o`/X _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y __K/%_J,X*+TWbR _K/%_J,X*+TWbR _F7od/#Y _F7od/#Y ߕ+3Wf̀]I7w%oJ ߕ+3Wf̀]I7w%oJ ߕ+3Wf̀]I7w%oJ ߕ+3Wf̀]I7w%oJ ẀX*+TWbR _K/%_J,X*+TWbR _K/%_̀]I7w%oJ ߕ+3Wf̀]I7w%oJ ߕ+3Wf&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X __K/%_J,X*+TWbR _K/%_J,X*+TWbR _&7Mob/X _&7Mob/X _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y +WbR _K/%_J,X*+TWbR _K/%_J,X*Y _f7ͬof/3Y _f7ͬof/3[X _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [~E_J,X*+TWbR _K/%_J,X*+TWbR _K/ [X _-oa/ [X _-oa/7n-H[w#oFߍ 7n-H[w#oFߍ 7n-H[w#oFߍ 7n-H[w#oFߍ _qWbR _K/%_J,X*+TWbR _K/%_J,X*w#oFߍ 7n-H[w#oFߍ 7n-H[;;;;;;;;;;;;;;;;X*+TWbR _K/%_J,X*+TWbR _K/%_________Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y __K/%_J,X*+TWbR _K/%_J,X*+TWbR _Voe/+[Y _Voe/+[Y _6moc/X _6moc/X _6moc/X _6moc/X +WbR _K/%_J,X*+TWbR _K/%_J,X*X _6moc/X _6moc/-[,LnX&7j,5f_ew2YWc,LnX&7j,5f_ew2YWb)YWcRk_K5_j,X*-TZWcRk_K5_j,X*-+,TZWcRk_K5_j,X*-TZWcRk_K5_j,-nX*-TZWcRk_K5_j,X*-TZWcRk_K5_X*-TZWcRk_K5_j,X*-TZWcRk_K5_J,-TZWcRk_K5_j,X*-TZWcRk_K5_j,XZWcRk_K5_j,X*-TZWcRk_K5_j,X*-+Rk_K5_j,X*-TZWcRk_K5_j,X*-TZ̬Rk_K5_j,X*-TZWcRk_K5_j,X*-TZWb9k_K5_j,X*-TZWcRk_K5_j,X*-TZWcrK5_j,X*-TZWcRk_K5_j,X*-TZWcRk_5_j,X*-TZWcRk_K5_j,X*-TZWcRk_ea5_j,X*-TZWcRk_K5_j,X*-TZWcRk__j,X*-TZWcRk_K5_j,X*-TZWcRk_K_j,X*-TZWcRk_K5_j,X*-TZWcRk_K%X*-TZWcRk_K5_j,X*-TZWcRk_K5_:uHבw#_G;w:uHבw#_G;w:uHבw#_G;w:uHבw#_G;w:uHבw#_G;w:uHבw#_G;w:uHבw#_G;w:uHבw#_G;wz׳g/=Y __z׳g/=Y __z׳g/=Y __z׳g/=Y __z׳g/=Y __z׳g/=Y __z׳g/=Y __z׳g/=Y __7 o`/X _7 o`/X _7 o`/X _7 o`/X _7 o`/X _7 o`/X _7 o`/X _7 o`/X _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y _F7od/#Y _]I[w%oJ ߕ++WV]I[w%oJ ߕ++WV]I[w%oJ ߕ++WV]I[w%oJ ߕ++WV]I[w%oJ ߕ++WV]I[w%oJ ߕ++WV]I[w%oJ ߕ++WV]I[w%oJ ߕ++WV&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _&7Mob/X _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _f7ͬof/3Y _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _-oa/ [X _nmHw#oFߍ 76nmHw#oFߍ 76nmHw#oFߍ 76nmHw#oFߍ 76nmHw#oFߍ 76nmHw#oFߍ 76nmHw#oFߍ 76nmHw#oFߍ 76________________________________Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _Voe/+[Y _6moc/X _6moc/X _6moc/X _6moc/X _6moc/X _6moc/X _6moc/X _6moc/X ߋ~?w?/{<$Y4m.tt Ҍڌ\J3i3I3k3KhHs&]4646iƇ4Q뵿Q뵿Q뵿Q뵿Q뵿Q뵿Q뵿Q뵿Q뵿Qg✟U_[yU(|`S*bU(ŦGQ(6=*GQT9MQlUb/rzQtԫtrQ2ꛎzQtԫw6m]ۤIwo&ݵMk'trN6䮝l];٤vI'wdNvtrzHϦ$Y46464Wm&ifminܥYy4$N;$N;$N;$N;,΢;,΢;,΢;,΢" *,$mfimnܵ)ç9?Y64646WijA3vrMI47'/Ǧ 9y96K4&/=|&E׫]^tJMAuMAuMAuLAuLAuLAuLAu% R@R5R*RxNZ A0E(uP jlw VYaկX_WA? P2kҿfmJVUmգ֦#Nm'=INl;46IX*Em''99~V)e=,Y-+Vǖ+CӒ(rտWLEŠ*Cv^شNEL+Tdqѣ(rEWh69CZڦ]BٴKi]\.v}iv֨isBH1THٞ(SNJTSJ)J*H!*$mjϊ~@ŤNMŤzNMŤdNMdZ2g)YJ%s9kɜdZ2g)YJ%s9kɜdZ2g)YJ%s9kɜdZ2g)YJ%s9kɜdgLU+%s֒9KɜdR2g-YK,%s֒9KɜdR2E+yQ]v6oRVf-,)K1kzg>2i^ZHgYINhvYk,5u֚:KM^y%73es!9bY̚srffywrw:i(\J|_!}Щ<[-4'mNҔ.rwX.Ri.ZiA6JS/E7ij׋|`]owi&mVifm6iH.Umg6Z"Iڝ2KS^gZ'0K:BXK"fђhwd.efzq,͢M9 0\.R,3ud|wf&JlɬܤZtM:Ew٤Y;I'.tR&M:+N.(}z>?x_Ct ]-~VGgWNEjsrD\.ZSEj5uhM].ZSK{nJtZ""uZ"8uz pw._8YI+I)vwEBME 礿IVY뤿zquIdfm'Ka7k;8'R̝^q_N/>Igx['[['uɪɪiuRt]'EiusZt]['UW毋V\P]'2E׭Y-n%VZZ^\ETZH=VODWKKu%dtd":Y{:-.>EW ˢkO'WkO'['WX'V'j;:Nt餮R̝~iS&Q] ;NZ;)NӅ+Ӫv鯖bK]EIwZt]EIuZt]EIuZt]EIuZt]EIuZt]EIuZt]EIuZt8N VZ'[[DW״NִN˫tMdM봼:Yz^V ^ 5eMdzYz^ִ^5׊eM zYz}^ִ^ *eM뵴yYzg^ִ^5eM\yYzQ^&/kZ˚k L/:˾_mJz/r~\KԦi'e=usK-W֓^^ʊ_RaG!r~iڔՠ}9A/u>ũׅue_K5@/uKaVFy]6{^++h/[^*ŴcuKWeuK=mW#z^w0*}D/f_6;Fn*>6'iڜhsӦצffffUIIYYEڇM4wmҬڬllGh'oNߢE;Iw$-I[h'oNߢE;Iw$-I[wM;K7,ݴwM;KLùxyniχؾIF^j폒y4(sw|;ygiEa9wU <{֤/r@l~sI:-q久~][r7pzS{tr_[\m%Ǧ'MGSͫ}{=L9|;2vɷIg~Kׯ}{"FLF=WW+E"+ pnytːrz;At(ˤY'A>7E!2iCzlƝNZ)AGd:jNҳsOϦi_ULt>DsP:ynsQH\sCG3W ;8V -,=8.*]4iY˹稟թߞSC?MɢMu]ɖ<ѝ*kߓ4gm.t ڌ\Yisf1fuR]uR])uR]uR]I:::d@TWJfUWdUWjIUWΪ;Ϊ;Ϊ;...2뢺:uT׉S]'Z]NtJYNu:uUW ^EWMt^uzՕ*WJZ@]Y5dV +iZJՠRkP]ITWc +TJQu%jT]ɖUWRFՕ_Fэ+[FэEwUUtWՕtJUuW]UW2+9TW]EwUUtJԤIt&ѕzv Tfmg|6g|6k!kAMYYEuՕ[-[DWC-[TnQ"Eun+enn+nn+.UuVխ[UnU*UuVխ[UnU*Mu6mTnS&Mu6m˯DߦuɲIY46intܵYٴyilmJymZ2,oۤRiV&6ݦɂͪ iqll*HMmZ',8۬ *hf٬=J۴"EtՕBڴ8EtՕڴNEtՕڴdEtՕJ۴"6'Nu6-͉S]MdsTWkuT:ټ~Vdo:ٴ 4LiiklA"6rM֓-ǦjՕ:٢&MWDoQas.$[ފth'>4oʹ<&mv$p4;G2MΑ GS<Q;EBM]bf0]b.{6?Wsmlχ4R9紗2]; ڜ.v4e_crkaOtr~.Gqm~.߶,R ;~Yr[l^Oi3>~mW\[2$u.,=s3^+B{||ŗX|ŗX|ŗX|I>vr/ifm_qޛvaMmf;$ϛ7.;8MSW͗]w#uw=B(_qW%-!Wr}Ёr'eH{"n{γf;y?k;<9<9<98ߢL*Ţ{oUL'Y']_+V[ElՑ\eVUl1[eVUsYVU"nݤIt&MD7nݤIt&MDWolYtΖEWolYt>ΖEWolYt͖EWolYt̖EWolEt.&MolEt~VDWolEtVDWolEtVDWolݒm]Em&fTwMu7Tw]ueٱ+kmW]twEwW]twEwW]twEnݪUtN*ӳjcAɴtcڧ&'Iq=DLєHqI;)'Y7)>IhR}Ҥ8jS[A?. ҔW_:Ҭ/~r/~ߵg]MV~oYmM նrn>uYm{9=ڜ465L+wg4릎oz@egdMe ۦͣanY礬<:7Y|Ks\/-64~KSCz:d~4edBӿ=A6B͢Pf&MY~fQ(QuEjTsgIe=] wqGSVOj⚏:*Y7qiӚ*K$7莦צ*HєͦYSk$fbNUυT5ceєKiJ+ԴVˢ,5Sd}u:5Y+7Y$9 qL6\I飹^KÓM]?lѽi:aѽIȼE)gi:Y^vf.ͨXjI3iSB6Zi;6Uwצ*TmBӦ( y7HoM,_ᴿ$MCirgt=.tG(֋tGKi޸96=96 rlz;{ r@PqwGSk䞂u8є?-JM9 $ݢ4E9 )$0ݢ}GSQƧ(UC*NNIV;IӴIEپIX+i'w9pi'w9 .NNItvR2@7Pmz]wo;Bj.)y4@2GSB;k~wSNw&M]?5UDA gy4^Oo r(j8ɾ2wjjji> 2YRj]đ+adt:*͡JG't+䱺/+zY9isj*oeC٢PISWqfVGSVAeWb>篔RsJ5 |Ne) 9sxևRs*?]s*KQϩ<8-tA^{I e*˺hd]r4EW%GSS%GS.뒣)u1"+Yv󏦜BXZw#Wy8rɟe7|hnڔU۴)UnnߪݤUIVj7ѭ_fUWT\۴NչS8UWdsV0M[M[EiT4մUFiPVr@M[倚jMmquA_ǿ'i\j3I3kHs.ͪv4zE׫]^tzE׫]^t D7nݠAt D7nUV[UlUV[UlUV[UlUVNɤIt&MD79ʾEN^AUIYE6wiVm_[DlQE[DlQE[DlQE[DLFujDQFujDQFujDQFujDQ_+S#Ԉ25N(S#Ԉ25N(S#Ԉ25N(S#Ԉ25N(S#Ԉ25N(S#{KuejDQFԋ{ ff,ܤ-:L+:L+䊫"_FQQT,bYŲ|6Xǖӟ$qoGsE'ڶ8^$'FhXMݺ>G3^h\װ|]я\d-w4ek5}Ԃ4e+Mrh6ђ5hI,Ij_& ~|~@IjMJ{+[ǤҔyhu4u+I']Ȯ*[Q[3jfT' jCZiU>+[5V{7$*/85Nrl~Y'IIkgZmrf]l2> [Aǣ)!Nhzlu8澄I-ţ)[i!RK֣6KSW鯔c$'[߽Ies j%ElYXV+l=Nǵgs4e>] \t_?+[[11#;ݺ35ӭMVҚTCW΅[g^$[ ,M)mQ?#Wȣv́U^Zr4uiS'mJ"G!ep]tzNOܛ9Ega{lBՔ_K t4'݀׿խ(bO&]sZo!s]k\afցo[[ ]zծSN*Pє|YF= - qvYX+\YX:ksg.LWq1R]Z]*|uʩ:4BrMɷ^t}<֭sz =r *)zeѦ^/4*G+4QDu䐜Mq_Q() 3*MG'["_[A/V^,ϭIoZ5d=&n~\u_?+&VhF^d?rVqfr+[\+[W8䒭c1+cjDmkhMHj*uV{z.659Ǜ^ߜt]ClkQ ^2kPzҭ)w>V{j$˃GS@GS6*%[zy33U,U=wUW^/MKX 2Y_r4᪷֬: E-AbiU'AMm0z҆SY,wX(/:2.IwҮ^Mobi<@u4-L+6DQMg _NUx =rSlMْٝtMVwtz]WY~XdtdgM5i|Oov[O:xi*MA,?t>hɣ|ݒ<2 }=)륿Y*YtRagF&Ye].~@*l\uKxm,J2,dcrqcl܊~^7[u-W,KcJS;ɃGSWx4e˲>ogg7^g7H=2²eq$E\֔D֔G*kZ[j*˪r`m4ͤc:") E_&Dќ/vh.tt,ܤKS#Yo墼,m| 2͋ j,{5)]w\Lf΢۫Uä!x5WojWӿg4㫹fP^_M0>69Uw34\_j_Q^_MxM)j._r5^yW&^Mofy5.*~5Ӳg3=^JI/ V^MjWS+ݢ`\_jj6+jW\E_s60Mӫ9˫_0WSWKEjW쯜\^_M"l a}!AIWӿ<;)h__ͳ2I) z]M\l]gS {gE鮫#)ޢ(u5ZHՌviXz6RѫY_v7I;rqYҳXT}ahz &M;i_Y7U1VcrҜHSu\BO *+=r '(tWY>?]aQOU֚dXz\OU.ՋaV9a8;)_N5! zu=2uljh'Ϻ~65[TgSEgSEg۫94T>ҡ>ٜ^<+g Yf|5W쯌Yfy5W Yf{6Ϻ~6:\^Mj{_<+3gS9>.rϺ~6rulj9ӷjW,nWs{5(lx5ʄWsy5ݫyW&^j_F[~5˫gemlx5bBwsy5ݫmz^Bf|5W:i9/g۫Sϫly5=g崜Wӳ<+弚j_9-5^ͳrZj}5 hW u_tw]/XyYg]Bڮxi "y`eY4ߦW ZR:-|dGH6o4i|$o;ߢ!ۮZ?HS~ISPytѤ2S Bri7䊣yRn*qx^f8W4%MC}E@k;;dVC}E@SP_Д8WvC|/r]/^/^^|x^%(Yul[s%ۉ\GɆD[qhZGI{lDŦ*qxlRQv+qx.rRQoseΗ>\suuuuuuuuuuuuuu}-ڵ(Ꞃϔ8|!JIv8uKsdU\*qx.-8\䧱DeSpydGSMղ єY]DV."~VȄWSPmJCMC})q6%!ަġ>۔8ԇxoSPmJCMC})q6%!ަġ>۔8ԇxoSPmJCMC})q6%!ަġ>۔8ԇxoSPmJCMC})q6%!ަġ>۔8ԇxoSPmJCMC})q6%!ަġ>۔8ԇxoSPmJCMC})q6%=A8<"& Ne$b z5 j*93TЫ)fWSPy^M1CE+b z5 j*3TЫ)fWSPA^M1C4bi4 j*3Tz)fWSPAvPn4-7 3T)fLGSP2M)BR z5jJ*Ք"TЫ)EW;_I7iyz5j *ՔTЫ)/WS2PAd^M@ zp^G3^W;o7iyzZ;_U|1֨8:5ηh9߆KVxYdY7{Q!}C,R7B*5}Cԯ%,gn;WX&Qt!Y8cM?pXwY&eIBe:eQ_ggTY&!IJe:eS_iTwZ&AIRe:eU_kgUZ/L*-tjˤ?22L/L+-tzˤ?22L/LS+.tˤ?22L/L+[.tˤ?22L/L+.<~ky#ZH{8v GZH;\ki)iov9.BG۵ґ~-u]۵ؑ7/t-w=_i/ׂGZH_Kik#SҾ_<%Sίq;縝sU9n2s۹?Z^Kyk-{-uܮռ۵q:nׂ^mNq;縝ksE9nsYZZ؟ٟ^v-^O{_ ~*@z5nMM$ /ZUtJ3%DP+J9-ЇnB}F֧n}Fڧn}ԟ-g)ݖ۲@^?u#S7"?"S+B?"S+b?"S+?ZOWZqCZqGZqKZqOZ-yuMĘ,bsAjMZj]ZjmZj}Zj/2#VFZcҭ֫tcFƞԍM[R7mn#)N/>ch,W-SV[R76pnຌ0tcW&ԍ]\۸R7qnlJ%ʕ+uc3W6t[]7vn+4ԍ]R7vxn!VW5y;,4t<4e9xޚj^Լhy]ELkfb^WӼ.Ӽ~9#N('gďgSs5xy㌸J_Έ]:pF<ɯgħ4&n׏KO'ғxI$^z/=KO'ғxI$^z/=Ko7қxM&^z/Ko7қxM&^z/f⥙xi&^f⥙xi&^f⥙xi&^f⥙xi&^%:Q7Kmnl/&^Md61mb$Bl .],dXvb!?l.]cvbn&>MznnI7RSҭ!XM)h_M-eM+nC>vi5JtM nåm nGZ?|ǭ9'}ƙ$?GHI#$?GHI#L=gLI3&Ϥyh.gK-gG-g);4Ȼ-nFnFnWz.ǘ3~K7?u [wZ?ykwO߯i%`1QuWs~~_16W;+9r?y)))T^3/|~>r?yϼg^3/W3R;}R7|~>r?yϼg^3/|~{W{O/\2xK?ojۧ&O5ۧ{Sͽ染O5ۧ{Sͽ^T.o{SͽWSͽ~Tswr&SM-D}ߗ}-ňufqAqO~[&\.Q㭈r=^φ8zy.숯5;/A?Pz Ox<{`x6]c/.^qW Vc1~b=g ^5Wc|,ݴt%gD,4qn30"#t ?A6[d/x3z~va6'8ܢ}Y8m_} =d::h" wm3透t8 〓ۈ۶G>zq ny݀l3+ĭw>+?ψÉz:`7 eweZr;>gҁ<=Of'g|#/d,pz,2xm< v f#f  lgxtMW7ЈjX#sP7~D\Oq,=%1{N 1TDJOL4*k~V\/vܑJ+!s9ap@٠iZEqei__E3h8nN(i8☁:a x`e^q}],au9X^,.ћyc}g{j83QflDm3ay#84 qO[3#lpQf1rEmK+ƥuw.DL3$ 89aa9^75*m;^NzFm' )ÎƞȌ_|v'\W\\\)[˛.8Z(Zb bQjE׎\0hzM䨵.h:?)$ܼݢ*z7ߏܼE=*yriLSx7M)|`xS@[v0hs3*GT۶*:{a:33j{~i>V8 /\_G_cĘFv9+GzI [/*lw,PyqoQqk(Gm3$~>h>Ѷ>bP:χ,L8}yD]>`#i/6;ny;٢]mGz(Ѽ6; 0/Rۣ_m#ޗSM%w(}GAD˅G4~6@h6k-n/ƣ{T^Ԣ $@ƓeG9 (Y0(qaG}e>Ft m;v1[67sxz^;㹚k1,t'gVbL2'!o`@Qi7VzC ;O%:1\hC Q{]ߕȻ).N& r4{ 8_]T-*r4ЎWS_38N (*r?쉊<8C[}~qQl~B"¸5_D<YsĎ&D'oQ9eGB/Ϩ#&q^u߄Q'",f8_t?} q(J 'BK 4'pyL<ج MB4|E`vi|Äe8zEau!#uёz4<)Vߨ_^; 8pGBg2e`UZ=zT ,.4wE8d}ƃbe1rqZ_ 8e?z%| ,pjlOc07gH@Bˬ޸2P7ZG?ĉV Xi $JmvZ .(zڂV]ZX} MZ; Vm(6ˆIHVToXYZfE 쵊E[B-x#:l}c{#]%,|P 13aG0wNmEr2sŋ[E=EIܼ@do\9~p-tbDz+t(Zcƒ?iE_;JF%C)FP|]Q2|/xEEЪa>Q3|xa.ah(DjWT }Nt\?ĩp+6pprTp-$̑{?0;6?[;NJYL0w_b8 'JpbI9( &8v«+*}\D6aP.}CniXF,ʫ4ʆQhl(RJ}Do,*^Hרڣlaꉵ2V^_xph0(b Fb¡1f`;H)*bDswT@GAC䄮QA|OL&tvD),h10 sSp ۨ GTmE"u$)Go9|)ı>6ΕHQA8lpaÁyw7.I XIx@)qLZn^˓F~V0kp\c.D8}Dh7 qs3 eQ /dٷFU;ߘhG{~x"9̝9p#PKљBMQ lib/unicore/To/NFKCQC.plVMo6= )4D)MHF'M9mٻZ vF73 z*jǙ̐sLRxwR}gA4D9 OX8tEy(2R_$Ş$#flQ7E"_-5̡Srh7Ztm+\] W\Ufֵ^i\75- Ͱ@߅_:ww:=t=Nm@gsuISN"Cm}Qd_}\_8`ڣXZҷcuFS|= ֢פ׵`GƆ# ,#⟁-EC+~ A{I^Ȍ1[`A\p]u.11ա CE7p b-KmdOԟ,%K CǸmqi ERVyX#+k4!cO8![`m]Wn]ENӦHs/6Sll|!:aG:>}= ; ;jah=/=E|wD rl2c,ǁ%; gBsw5ǕpϘrKA|MD,IsWvCr$}}$}x1Ԃ5f`@SC%M|H&eI'Ie,xIʬGHl _yy2#O%k eF =s^8%zd~ 8;|zz6*Ώa:sya//9i>N>a~7dcrF'b>}oO(U3~qxՄW5*Of:! ƛ˿?}R>~=ԟ_I>W+s: z~9nMbpqqC8+&.D>O Ƽ ElD3y#&wbɾ}ZcZ|{I8|m}F<QgI4n8ka^x%NGg3qgqlg{p3J2'ĵ@#u+.b:cM/uBJN;OjX0? VWݤXc^1y/_ s&^PB\N6Ulj">47K#t^8˘qXJ:oe K [ 3W#gYa"b2O+/2n2VQ:{q*1kS)Zyײ"5zU0:IQF>=qx ,s[4VXIc%9(Y9*ΊIkNg*as.rј>T桃dd2pFl[2D623qeI'2=fŪ\$3Lo"v2׎MQLpWb3,63b($54{sPKy8H'1iuJUteBQG[;YGJ9yگy( M0|ÀAQ}㬘?!8).^3G䉚!*Es–xg49e)kNY֔5e_ԿњTJ5URMUjTS*TJ5UkN}K:DG[>.\jwӃ#xO{3Mו tuJ7@9d#x,\KQo>t6zq"O$~W"I :SAE5'Ǯ^kj'} Bp~naJ{9Co#6̩6EȥIaw#Ix"yJ*J*v@g|{.C $UX-#&eW!lH>F[]Z IFm-R.yV B.^Zā/tĭ-VvV^G%OHoH IRlĺDqE}o?B >u@&@Gzfj"ǺoǁEYSELA$I3$0'd>wSvW. ?&&K"㧗y÷?%{?o>?}//"ėϿ&~~IEB?'^|SR˓_OOOy$%_~IND3{vM|&ē>hKӷ/>/_~I_|5闿 cf!_?|K>|S_/DtחD>~? N烰o/|2$rϿ}K>}/"j>Z[_^$whJc_El> DhƋp__*Qk?c3P'g_(t񩬉DŒχ L>??^$'cV aVk M;7a//~)ݓ͛~^ݛ79Y'x? ޼1ؒ|n4uC=h~\oްWޜ8H7o*.-8_vU7o3Y-X̬ZlV7o]ϓ&kAX) ߼i񦠭6"j6;d2?#kEZ Xf. jv[w{ <~ZH<" cC z 乛`h+GN 6dE~= \8V9pe3!Y{h})܂=V>vU!RW*8ҵz0,cktbbQV7>M=nV)eu\m8Ekv ZNdYjip4qJQCZ{ oczL3 nB8rL~UH *A7o{Xa>;ձ阨`pQA+]csݣ('76^;_UoLoh^yC#1vYr4,S5V*L8~6IXEgpBWX䒧؝΄ *舁P"DMfx3 skQxPDtF u9fzGBt딄8s6UNBl{jR]L$ԵUR;GbH띊9Y XՐc'!Q-j(d$1kwCdX 2YH0$zP$X֬Q$X֬QxYvS$xӍ]#u!%<#P(xN =R5S(JCu~$ި: Z8o1ט@ƴqu`mkn juZ8 zm zm ٭mZƋaDz{;z=T=Q}E}{Pu~80TU_T]k잨*oT^;Ŵ{GQ-|4 8'jk1eTTެ8[VbJ#G]&FMqt _#Zx=^W9U zh#8 SPYnoC=G55G%Uo5xTmk>^jxm(Ln+GQYcC 7|'2 @(kRqX5Ë8cbbz>d|A W+}XU]ї?(4 q[uPQb#(<GQyx8y|!w^RÈ @ #ޫWB55|xojT>C|R5@.< ň*%A/tmcˎmU+o=Rߧ đrl=Gmjc5l;8;PR>M0Tm$ ꪏT#حj9RlMR~jF%è!C+Vت7i,93!T4D[Z$8@3jT,ڙUYU5WT5xh;eSsjc8"GEcXևhiuP#a?MOoCӵ46vq_a^#fe>@w0uj$lשQk _wW}a"d Oao"TzmQW)L |1e lV0B¡5f{?{R{:JrU38|f(0gbxgnep)7ep̖[l[38Ofk027Eׅ$nlpL<9n`]h;0k7#Y@YҞye1^:1&2^IуHdLa&gЖ~ZXfV_V/p.E"axK9kٮ4M#r {pDQbB<^=k@VXVPˣv HU4"FHa#n.UIMkN"jn)cŪ8+pbV-76ի֣lWGgŏ>p1y,uhzXxxTƓ)c(7Qa~2G}V=Lz{44I';,އ]o$3o+YQħ jG;d- ZKrtx/x>Z'}|Jqǹjn(EAjd>+T C4ګm/6-k0ņoj4wjN-xf U/Dnh:9xfr^+qO)%^Te4R ObСjS3;,DFM\#oq)E E+,*yL\u$s׏Q:@_zaoJJo" pr0_Py #FАu{|lǸ<fGJm$S 鐼yCg䜴\d`-Sr8TJDH R@L\XMǧn$6 0JM~ȆMz]gg#a\I7rU)jCxq>?nT3 hH,#Y,ߟr0w`$%m=_H#IK6OFZA6!a6*>oJn@dsd lL26n0I0[v/F2 6|7g$}-["B6Xʭ69#68uTaE"9B78%yT[6XD"iB6xUM^Em+ ׄT$c 6BW_$D:Ss*kfk4*Qfi<mZîze p)Ic1ESOyM-Li90sC6Vׯlce 3/:رޗvDKFϼ|,M Nx`$p4w6]z69;P|'L Ѡ.`aݙ޳3R_ucM'L8 Y< i3{Ğ@y0|@P~3aje>Y* MA9'(,nhQ[灷kk= 29qZFNsde25V@W&~5}:#]\hi)8fAjq =BlC2eGbːDrIvaX)lo#.e[:',lb^WC3Pڠr[,a? \TZ d>Bl{U4oVj*p kuaԁu؝ "Mr=#ؠ?c^ (i#8.ꀆOuPAMyque3ǀr1;Q:CO0\A> JA7 MP&o@阃[.=+-`Q.Ө{ |DcL97@Ty/n_(}-T GV7PSmǡMX7`\-E X߁ÎՊ'v Z; =TZŜ/|uH=y'ja3Yt&r،U#AᄹOo"\-BSu2BMu,Aոǐ@zxF x'ǫau3Mn'<2ʾa3݉{|O60;K\]I}JORQf@}N9]ҿKJ?K^FQ+@_Q _So(tw%sF' d@Nsg?Y ' #dB?HLg')P+ɁZZ@r zԓH$ YQK,hIQMܡ$3I$`ïm]_OWʗxwklõ5cJ\}T [BYĔ%teTXB{iFV)~Vweoqձ wQoO'ڈ`gW h! 5L 7 ]T,쩧?rPlCc+NϖLwU]!SyŮz4r;n%b}c ݁3o?w\aRῗ@;d )c0Ze,`Ft hΆۉ)xo܍˻ nmqӉy9X'5R>x?%<.%A_φT=ùExgq+`-'CS2ż<['}8VփaC?őp0ORϝ3 Sa,&ԃX w`Bϣ̗5#gAVA z'܀A*24,}  sEg b:6` Յ_a"ǃXϔĈV'U*"dk)h O+>j(fF vEۍrۉdXM1)~zg UHe8Mt"?B ʱ*3<1a"ltWJ̙ҵ蓈.}"ʝTL߂2u s|^#/lUi9tb봮 ]Z]8.ӺV;g'#b$ݑŔ_j ߻5kUR{>̩gL+fЭP$+NMX7?Jzp15 ʅgCk A'aF.Plm;xI?SK TL  r|kvyPXXtAٻ&;vsMȢv1E.rm .<|G8:Y~D -XM _NH!'Op1(:G ZUeK6:-mDđMmcj]G#yiRNs ĵm1_æscκRZy̠#okXƇg9\ ޹if#Rf / )O33WE-mlMCP(иZ8;N!sNmc:Xw^97lf`%SW հKӋn*] z|h $] k@O“0Av|bzya"|sI+=8;F#[njPzY}sz#ixAx5.9ci@ hN@].KsîׅŰbҪVymUhdӪhˉVZԺcw[A+oGkSJ.T:3¥0:w̝p{ąGWYJQ]]it5WɌ|)+;0=7M9ifAJ-`G!͍Ip*wC9L8n4c.lMQnbff6vk#{$Ue2~q&]aW[${" 1ݎ0GM(kv)a 10F &]BAeWX +;W~Bc ,j*jNTPq/|/kdδ@OASF&Rmhnj qQoQ:o)4.e91-*Æǭh{uXm8Pj25D\E+5LJ%l,tn'VǛ\N6)Q-,ιG-eŦ?md%F̗(csZs^isůu(GWμ$Z5(}6]~!~umI0`1 [-/;OktǍH=m!{#JQ\A%)7L%B66h+72ȼ뾊e'e3ƃf#{a3Ig aHfȶRW/rFV[&dW RN*xQG 8 <1^nlQ"RokNhlê_ .6ĸ/HNܹAbo|i @r_[1)eD %NltǾeL"ؗS{Q{K,2j M^/Ce?HGC+eqyl}- ߊp/?Tӄ=y;\2Q@A=cxBXcvؘbD"" QB㱄F 17ol9Xx\!0ǸzǣZpk&s4f!ZxީU)Synv IYThjQ+W8ecCZߥ%gj} JLzd ^0( VViaqotT9q P4 c _D& J5D. YYBAf H!3KL^L*WzR JYuU~%JQ|%pK+&Oo'Q LEB?D?AW$F:Aao$D a$Aɰ~Ѕw8#YbQ.:Tʾ [Uy)7̕sꐽsⰄW5 jW9%^kLs>K߼;K`Lz(vy{t6=|玱߽}+b Y <ܶy$9kU_xV(ڞX*FsͪO=5{.»/9[25 \gΉ*ƻAbMB# ԆAqZ.<( MP(% nv`_X3X3 PE@RiRI ӊRn aɩ"NWBuW[:XPu-"X,=a[TY-e@fikK4R*Ǔ0Hƹ2` P5)Qjl (@)Lݙ07"TS( P]{ h[BۃvGA j~ڜN U(-A-UR9*;jb<*DUJ k§y:C" t>PiR@\&2<0 <&/ <- \`ɑe%$i sH2R9 ]"t#Ї(ݎ+C#H2t6RYf]A*Mwp\ aj ;GYfD*`½-={HZ =HU§, s0* `hZE֍lmF6 7t;UzR4e=0'Y>RAM-OݨZ>dZ2H*,\v>aP˷tjj9Uz(ٳ B3fr|ƺKJ5.xD>Tѧ-W̞!Y^:\(jYf ,7V4=U!\yeVEf'` ENɘblr[DfCq Y WJ3yn{rAFbSGA-?ސ8w2ޖ5–ai !xtPz$Udrˑ7Z^"YƖ'\`Lud[|,ȕJ1WS[:={˙ru۲[9 ?qLn1KptSG`3&+gAټY7D-+kpna|AT7R>X- 2P`w[l qᮂX(][XEԣvEQN g1%]V5b "8~hKs1@oYou 3Erbu8ۈ^huqfĩ?t L<"B֛)nl6ӌfzTv3-?-i[d*y@ůnBK.G]?ggpas (7xBLTGmp1g^bQ'ńEJ}=nxNY7qкPXP|s*r &;R*gίHr<6Z[ēFJ7᳗!,].e^P =yA (=mdfUJ˂hW܀fxLKmnn<&mtNb+g wDejC,fK,:! m6⤑nR1HDF *HJK!836X-3։#EY&LOʍ)ȁΞBlQK)[TҘ iu~:n06FC8i/[56B򭚅-\&FlEc6![|iTۜCL9DleD[iHVuUVt#[<8G MblPEC"hD@b@t1-L Fj]dqQ-4BEZ 7j.  Blq⚦Fl1Ec6![<y[yG 4Ҿ*kHy-G K ܬ# SY~ ) dR} )ɷmV@nPHg}%V Wbә6c] RhVl ' @Et{6{;aWl=2mkꣿtH߄¶/bGO%^|sߋ{/qx@}^;}_8qui߷^ڦ>~/k/hf C= om}?qK=O < buAl*v9]46=(XMYqG#[=f9vtslcꞞ񈡞;> "E28SL#:f9|!r7_NÃy v>tߗn5,|_eC&{Z'\g̪kbԷÇ[ 0 ,(9{0GA<6, `u:,4E|"b.1Y0c13U y,EYe)49ɵϢR<ShFyJ*yT0.aJbJT LfE<2f0#&cLã"\LYRIKveCX]VB H4QpMi/;IZ5k{˻1S0ɉS,| *X xKD+i3^0cU#*1%La  $)uËbV 1UQ{ki&\1ks@›7@+Psd1&2`";1aw#R0,J%ȣ14krL %6MP1. g(!=CG,)8J9Bӱ+BƔ;P*f&8 8Slb9(30 g /$Ŵ+M%gwfZ 1FtWKPjńLXNSX,r3LβTIJiQŔ6ś3b6m3͑5 0$8Td!gHekq0C2kLG3d8GY??*Z_~Ir[OמDId)Dv6y$0.jyC&1ي2ҭ+sٱI_>9U:c|V!#9R஗=gl2Lpڋ 91iUj!.ocFr% _܀Ӆ)ˈz+ctRW:X{Ð`ϠSJ5g\>bnkTa.,0WQ.ًRWUOſPKљB(Qzm*lib/unicore/To/Nv.pl}[oG^@/y>+cHI-;T $]`2"2Rn>/Gas#>?~}O=(>}.O?_^=OӇ^:2ًQy Mo{cG8K~QB_nn%vw~JLK~$ MWc_Եח|?^럯˫M>zxI7w?JOߍooͫ?]]=>\?U{SyiVNtZnӦv?vtuSO'6NAmlA4jBˉ qe7!&gB&č`B&2bQhch*v6m.oȌoȌoȌoȌoȌoȌoȌoȌoȌoȌu:yN^'a>^^X xa/,^XV>ZkCV>ZkC< Y/bȊCV,b_ĐKj2N র3))))8G@H# q$8G@F ^F ^F ^F ^FK^&/e2yL^&/WXA +Ha) V RXA +Ha[oa[oa7Xk'ډvbXk'k~5?Ē yx.EZ*%^w̑$MW([~gʖ9JSt00U)-PMgS.W*jW qѭ®v*([W + NJz1zabUDE+SˀuEZ銧+x銧+gW+^!?(QEқ~/ў!)ޙ)ޙ)ޙ)ޙ}x)GwMbLˠ:>b-ʵ5mbT2'F;\+WSXMR5 3UM \EzU4;] 3]PˮRux:UM6W5檥Zm!Րj(p5T\ jVjj6WZZUlsU+%\՚mDWc6ك.][xl=A{I^{}Ӽ`JЉ^:+U'z&$g$$W$7&wsK7`S 8f{}j`? >`09|` &3J`#]z]vX:Tym^MbmkӀX4 ֦6 i`ÝEzH{nŢަ.&&&v66666H۶D*XE,*&!*զ *W'U:J>ʪfdFnFflJ+0 +0 +ti镺R[赺Uڽ.pv_W8:K]=ȺVU#YڍmR4ɖlqُFvؠܛ>ѫh^}L6hWɖ2T)+6^^IŒym۷EfϟzTZ-=5SƞD8AQ,VőU+GEmfsnClvqXZ;8Y+d9.\9%/{TWT$[Wa_woPݰP7G.0:^Ţ(MNr8 Hh X+b`CZkCypp7FpZepZUpZ#ǪlklZPD8hePsDXA:xvab].L, ؅Et0.`&8g ^Kb3xq/?w]b.1qKL%&SnD,x %FĂ ^nD,xDełk ^Ʈ],xqң%¶=jϚvXXDy"<k5OĚ'bX,36"E`/}~_D'pA-SFԊSQmD8uFɍ(Qg7"FJ=X\RZقC&J=g(rm5;QDPmOvEmPvEG CEo>cZ=Ê.aCagQBrC dY7_Ϸm//}Dѱ Ա>t(u/(|慓MY=?Fu6OoKCI]).Eݻhȷηl6 =_1 '*6BmڏPi<DwhZwݭ#=c4Ν8xN94Ξ8|N9*`E`#TOçp̆8 2n|RB=$u/8Δ}Oi_OKNhBM*َD#<#|dFBC88/s9o8Pq6} *FUhB*s@5W8%4{-8%4{5`^@pҍ2)u(iveC2gjim.:*֢*l7¶*eN̉92'"YDŇ_TED5dNv/܌̉Z9Q+2'jCD̜c{8 ^ Ud**CkDXlrqD*(b7j0oG0㿒XJ+V*TZ"PiEҊ@J[Qi6*mFۨunmTںJ[Qi/ @~w"0E`@-"\ A΃\rNrIn m%YY_Y9'[4y AnI3}!YFɺq4 Hq A.\ 2 eE+ŋT%ť۱fSLU6n`"۬e]ߠ͎B,Xs\q;G{73)*eI_%FB_-C18{Xnu86ڛzPKљBIt*nlib/unicore/To/SB.pl}[%7vK=^z'x 灗 AmZnXJ'oͽdon6pގoos0%}ûf=?Ͽ>=?}x۟vݟw߽?맷J|xO?)'ooϷwwv}>n?<}xo~㧿*X_W?}sW/?=z/D[Ï?뇷??7#no=ӳUozYMO㧧,Kx8OO_:d_>ݞzשׁO'wn߿`/8Ir׷}_l{y2zyxwh]}awV{d9oώzhCs{fu}?~/oӾ3/n_~o}o߇//><}a~/o|~7oX_Mp|n>}I =wbxW|;޼/e}y/?=}xc~fc}~`Vq߻%~RcURXb|iqej(PgcsNowcwoo{xO3o;>o࿁o࿁o࿁o߁;w߁;w߃={67WZAZEsp w=<߁'6϶PV;`;`;`#;b#;b#;b#;B^"%B^"G?wwww 'O?$IeA=A=V>߯) n2]eJH+Jk++>V/ە^0WZXih͒W)m2V:u5nV\*KE+^G]}{܂ůB*j<Nӳi~A4Ӥqju᫧O> \+,{AHJtn_v̭K&:dC6;Y.]< ;x`i.xp`n ̭!YKt.8 ; sdt]v`> +s)K?L;wj% &Mp6m\c`:إv]`:إv]`:إv]`:إv]`:إv]`:إv]`:إv]`:إv]`:إv]`:إv]`:إv]`:إv]`:إv3ԂҪmwJ;V#y`C:ؐ.4AlE[VtlEG-K;[q]lMX9*]9l 0zCC9L=rH @,{30<'|=&ɛd}F>3^,+ޑv(Z}Y 7ex3,h+n BfAXQ3.Aoч1dX<*cX<*cX<*cX<*kdc13ʯn}ۄzA[D!^Q8*J8*J8*J8*JL i3-`8*J s! 'O?s`,(J  f42h0 ,+0x2` `  ( <(T_ 8H"eW޾ Bo7w`G,R b{vT!S!3A3i蓩N$ˤj2>N6ɡ$C=|dʢMdĕEJJ:'`& O2~O&MKLH6ǼY(ZY832|) zpE3[*1_L+Qm:4),D*JŐ0 ZKt.ҡZ7_YBC"2("C"2("C"2؇cz샏}MǠu3$0$`!E['nA#򪧲Ggm@hhER!8(–>4ce>N!?diÆ%?brdGV99FG!x8GU=t"V14쀃h" 4NA=_g/>f*9Ts*&\)z:T1=#iS|~ ڔT̀G2=cOy 3/ٝ:4s Ԥ}dѓH3+s݃ 5"BڋݣrĈ2XPVQE`X0d,VMX̒ dQ,6Z,Y eԒcW¡(WA,14'{¬tyӻ Mouq'b*uJd֚'3:0}-D"YrW]%<28!DXpMy=y++zU1SێɶiQK׶ϧ 0H_`$QP-& :ˣh\Ҷ59#i' GGfk,U$UD‘8I'q⤤B 4 "AH|loib*6ּJ*?0=4{4cc6 ܴfllY0A-TEn)36mSme5Qܵ/0͂._Vզ옹% g/X7m/Z&ՆKI骂sQ0떄TuFlڮHj HPUkfLjٴa4l5)ot-b ?~+K5sIf*d%K#5L3^7bb536WJ+4OӣϺt!DM~֖պuAwrwbbgAR |C kP:kPz8tKXЇM|]`K{vlmr䡮&`Ǿ2 kZ;6p;@{xO3o;>o࿁o࿁o࿁o߁;w߁;w߃={߃={???#G?#G࿃;࿃;࿃;࿃;? 'O? 'O? 3g? 3g_:G+ mQFEmTQFUQUQUQUQU 7o 7o;w;w??? 'O? 'O7}+{ߦ|i#]DsW|Vyt֖#+ݯty@3ê_ό|N-wվy] ٦ǙWycGzQzYڈuQu˳-\ڱmvvםmjoUl_e0*+/p+hW~cJ?V}ST}s?>ϊ@=}C\9̗ `ɢY|sw(afᴹ􁏫:' >Ë߼ch~Hvuάī]m;}Â8MfZT{y Qb(Ǽv/l\sN_plƕv(>tNx/֝_ø|-:|iN_pdnv|@ZTtϜA+][ Nbp 綯rIF&+w)ȝ7/679@p:iRZ'흎ԐLYp C2\2l:)Giu躞Fk/;9C e++JK/]ic̨3<߁'x^7~_< /_ /_ +W_ +W_ 7o 7o;w;w??HKБt1יT{7vC~ņӁ" <;FR_!Y)Oc c܀~Te~Zz/n eC/ւCyfqWP^K+Ո@Qy:-qUS2#{U!:*= Wݼ츅> ,d a=3 uzTfUC^TJU27UwW9<ތUީr8!8nd*<{ojp<w x^W x>#G?#G?wwww-uO[X 3zˌ^f2eF/3zˌ^f2xJO /_jSZuH~w P4{J˕<  =\`1qڮC-H+;+;!ȴ "EN`A͇@d71ϰ< v!fӟÄ,9pBx<BySG]ĩ3kKbG_œ<^ LzL*1ks0 I9uQ(*cJ׫]*|g^WLW%g?yn|nL/-xϮ8?a"?ui+s:,6WvwP"򙺛zSm~׼V@f9,;96&yNUdq3g`CL:6eur :^+ l *),N2󉽺峝צ6m릐;K9Wս^ O,2;X<1?? l袔>ps!\G!~6٦¶I.mWJ,>X~Wg_>;/b s'ӺL%6~Qb;?)p'Oh9l;KnVWt&Š<.]4q~[)дlKyw)~a j\D4lbfZu;뼵ZsʜV|ϫꗰVO)v(:/?6w^Z oCEwtR#3Cpm)O^toaf|֕Zui賽 qvjiU.ЍB֑&}a呀) }¼R%9{^细>p.FpRN9hq!eF&W}ŽnhCthG}MjXzSX-}dBD:u f;j= B4G-D8don/DFדČ\YLv<0cJEz[]ݒ݉]+0H_ytmhʣ cqg[}}g[^XӦky[뷛RnV`f˘}b',LsA|OPKљB}1lib/unicore/To/Sc.pl}r8KOQ}"|S$HshDKs,ZŶJQK{QE"Y0L,%w?,Kqno,ûqv=_~7o}w/˧Oyzzmu9=,=t_am.f=x~/ OO~;p>ܶ?0O_n/oгڬܧ~|f>2te}X[KX>3/Pqy]V׻q0w7X|GWWҗR÷fa uEͿ6c.u^j{xUw f tyAL4 `N/|ê~͹.oÛ,[{/\J;66_.7ŸjUnEPuw( UR``b4̴"ӊL3Ctד) )3̀cf"WOڒr# ]n#r@!Q,h,*q_)Z*YLC'53RfhQ Z&e:"dl6mN{lZ{Q(ur/{T)P+$Z@Ve^ Ra^jZ QMj\vɼZ7؀2l^)XY1V +̤̊ܬ] rrBtJOV z]uɊmRBW4ijmD7*]R^ct^Wzn" O(J%l6[ܮnp>W,>|tYDnӡjT;cXL;3IjhA<=2#e4%|\QaU 6xzf>vO$NtlӬiXOS %tXcXgq`j\! iYV.B AXVe&bVh,ߜ#* Vehkrۨʉf+=C5Q3C\ o\"U` 5wSjgP+@f#~EF~GX0cؕD}dg-f^J8Fiq7VZ)r+54 Dɗ,G(^:%edb|2e R>UDŽd4$׶Hh G2W`[VIgt*NUүYx OYlag1G~S&9&[5Ek]C}~-eOcݱ2L2.e{z3lTO|z?O%%;xu ЯN t# @(h@Ih50iQ, L+#a1Xa{Dg%무ù/A0VD3zkxA,V$qVL:D}D -{ YI mdtWfOJFzt Y;c3nz^7zc3%?=y3l@$lUiXD4qH$Đ;i~ A0)37Zλ8 KkD02xj<]huT,Ƨ%3q?>5ڦRHV ]r|Tӓ%?K<赳k]1Jzdb_vc 6h'CH(Xe28I XfT23H/A-!CTDXJ ˔fpm}<=]e9A a1$C%*uPz1R9{IzfV=j(D D!HZȗ%ǗLe4I9CBB2U9pJ/0}ipgwqv~M[5֒LӀYg^An-e?S-`{$FQ~v lUP{ZJG[GDJ*'RAfOM![f0g#pb# ]犙4v,6d%ЧL)ageHIA ´ܨ" &@{:]rIrS uuy%haW9wDϹ!Ie S7S+quљ<]L9枖9o/@8~B3BdIu@5ܛKqÊkc[]T~ >7IE'^ƃaLn~5! /ø;!ن_]c6~!%EQ ZNwư&w oˑURCJQ+ia^ h}쇻 6yc19^+Ʈ%?6;@w"N0z*JR[zbHWaH|sM@81 -bL&BM(/" G Hy:$&pU >Hdڌ,kRN;-TZ'k{E9֤I=`6<x PPL %7V8v;'$Cʞ@Xa *簎0lAd "RJ uFA"8M$J2K-N3}f=:XO8?ܽ;vܹRyĹzUa(0R~p{u^ E(gt /Val2WC; ʴD]ipŊfYki!2"JdY$XsE^̧t= U)tDUP/JQ]`΅ڈ@&_H *H.h`a4cyMY8%r%VrBj$e&Qf:"'/(0V TVRSr%PS65P]=/C!/=yʭ@*F d"2@6#4#e{V{!"ʅ,V"K#PE[gfAbAf rp H\ CyQQ s2 tP)T)QET9⽮]\!PUNKQ+ 1?K"T!4d*TF3oxQ`;TgJ_8 If&hW:/%#yi&:B(BITȚg$}(,~ 8]CǛr b.^i O˵u/w*63*}"BBH[yj?PKљBO\$>lib/unicore/To/Title.plQs_1wKI {8٪ntU[΃} e,)R+R])gDY:Ca>ӷ|nu__-}{z=?.nv/]ǛWow7oo^:Y9> _t7g?ūaawqu}gr]=tp7sR/~~_yC߯޿=]۳w/ޝ_vW5Wour{wu~y͝__wng:ٿ}y]oeWxxy/??jy^ߜ]xgۗ_Ύ:~{kj[Ie:>\ք~{'xg~Q^]h/ߟ}OYo{苢c5 .n] 헭Ow^/v/?܀{uxݗثmF/yUw?~y/ ~ӯACkyn[/ptX$Žw_Zlg} ^N=izcvԇW4Iٿ]|8,ܭgg7}3|>W_>z_.t{w?clO=ʟ9>?sqGFN`~G>lqFo>lک刑Qn w,iE?Li|  }f= ۩kf>xvnp#p;3 #_i8|{01#2G喑ŘN1c|12Ƈx>¯[aL֏rwCzh~|C:aۘb2 Cڟ)P8P8 O,OAv|!NF ?a O0nGUx 0n4cɏ32 LxRRo'N'2>!dR?z7)tRi63LJ'fN6=K|P} JgGY# 3iɟ9Mecӳg#3yWHA'aywaNOr)^s擙O xNA'Y՞ؖv[4m2N&u&;ɪ#ƃm ތf}RQmOʹyWM N1#3F|QacF=ar疑NЌ=G {:uȨfe qn[Umvjp°GÃvNV1G~̘O1c}b,-c}8F>x D$iH}% R&"̓+yII"̓FAظan㪊Ή ׳"U9ia &׳"UL;z<j'\/ Ub;zq<*m'\/3׋;/du=V{^$8Үw^ó@8O]noz֟:K&dtIf 9"䌜$dlȵ7q n pn7 A7Fq#(nōpn7FQ7&q$nMp n7M&I\k\5&5q kpM\:\ẸWW~u.uqp] ww;;pqA 7fq3,npn7fY[q "n[-pn-E(ww;;'j턤m'0ÄI&}H(dBΒ\$$l]F nl$m JF nDli"D F(Blkpl$mr*Aڒ ±-*'ڒ "-kp m&U862W9وf⒓5rڒi@ozS5b @oF"Aޔrpl`P5r fڐlvV#[Uon-J[ " HJIJ~ ۂ3%b#H[LVh3d#^[ш mE#mw;KQ(.FqG#Q ҳmw moĝ*SQ&q'F*IyBmJvKokd_[`巊FrAS#:A$'reH$d4I:% Y %'$9#gɊ3jWu'P(ret;yzތv $ it9Hfd,"9"G 9Ivf*Io3]UngA~ A~ A~ A~ A~ A~ A~ A~ A~ A~ A~ A~ A~ A~-5ȯ7v<w;ODuFuFuFuFuFuFuFuFuFuFuFuF3 7&x[6\Yb,nРAalE, hlQ `Co¤pGqG#Q(ww;;ŝNNp'q'I $ww;;ĝpgqg3\eT* WiTg:U WaS+\%Lp+U WR+\FpU>Tr.uD`]%".WqIKE\buweZF+krsNZ,ԩ)HFdL$iHtKA2#dA9JNIrFΒY%$V*ِ}/Կ{]w?/^{Kו_j,Fj=,Fji,Fj,Fj,FPm$>a>8} Dv8 ivX4lفѰhFv8 ۩vx4lځҰlv84v~4Y&[u737x﾿ڴAys;~Ýz~wyؕ]+U/||ulۆ}ui}qpؼpm+7 杆/yVs?~e_`o6t7?_돻͇K17}ڐ?\~ra.Z F=loZk {Xxۋ뻫6Kݛ/_2ޯnm@ËϾ~g}>{᷇??b?kF~xd, O2 0u]#}˸] #liF.>,otˊa0,v~L1#GٸFf=#`{F#05c8ᘑ~[*o>p*#cZم#FvO3{ڊgnh{s 3 +P)Ḱ{|ۗ\TG=tpkp׌||kxakF9ð=31a=c:ftk|1# #?>cxn} OG~n}c|n}OGyn}czn}LOOǰ>}~ǰ\:?cX?S>?q} gc?aL} 1ßa>u~31ß?]scx>s#?]sc|>s<]scz>t}G}>:?3G^Gw>>?GGw\yݙ#;Syq}u~tg#;ΏL}}~tѝϏD}ϭ[[[Q[[1?>>>1xf\e|Fo&cͮ0ovm~N0ѭ|ύ4cgHc3幝RNwJ䥮0'3L t+Dkt86S)N98F[mjLM΁VS8Pwtn:!1ҧfAԞϩ{>''sUt=`=5?lÝzX4s'=к zٝLлS0I`:J!SX!I.s^M(ĚÒ\ZkKr j8M\&e Q%Q\tu=G5LFy=Qc3lY4X H:*AAHϠ IP'ɂ%'d2U2*T"[֔aH6Ұ7gA(!Ĉ3uu{Z#3ְ>1ÈA7D8 @(TY~ ~L(djK[(U5d%^F3f%iC߲tSe,*}S} ĵ^ tu @n tB7Aݠ nPB7(t PG>/Q><ӠgVK!YFs%2H$#2JvN2!d% 4<"Gɂ,rdE^7VmG~}5ï_r(6yeYgJe#'/+Jz iH(!;ɄL=$32KQ 䄜$g,YI-j{-o߈ A~#~F 77oo߈_P1=}y0.0-"CLJ|H+7'}n9uqcZy[j'~n9uqZǹ[l'n9uqc[y[n'n9u q*[ǹ[p'n9u q:c\[r'n9u0qJ\9[t'n9uPqZc]y[v'n9upqj]ǹPKљBILo/lib/unicore/To/WB.pl}Z]7r}pyzn~nDh六MǑteM?ǛwU\=nV<o_،~eG/w_.ۭ͢';73p/\~zT,t}w}VVmb_>rp1go=M o݋!?Ҵwzsj?4|3<<ޣh_|e8tz#P[H=1/7_H<cя'wDҦjr況Ni^$}:*yU I,M%6AȋVe4%^ 5i4 S1RYϴΊJHvui</ͭwD"HUd^8k0j$3i ͟9,c2Ջ:.sY p->%:}%TPX[&f^+℥iV8ǥr_PDga>2981a$͹M]z_NpUnv(AjC-׮ Y0z"AT*-\B:5`cVT~l*J1}LO2gs_?WI|U|k}^WU.: žji Q0#N0ÅY^á:P9DeʒwHh#&"T4sy\tK5RtP h}e"50F#bNnpv(8 bfɓN(Ӹʥ35s2SFM(@@X%EgU9Uҙxa:46iF. ҸH$ץI\&.Yձ{N@$*"MW{O' "#iE=HdK<w9 =_d/ S"RTxIHKf^fJK%/ɹHT/UݻMRv%+ ٕ]\¥L.Q KYɥ\RV.er)+29Yq*Gy[1GYxɣ,<`Px Yؼp*2YhI^ϡ&4*NP̔-kˑEHD[EMrЙ4+hzʒefY[恚_-IYTȤ"L*dRQ&&eRaPIL*ʛBM9P*ERfG >*eaK_QRU R*%PEbK!%j(JBJ-h$)$Eh$)HRE•.҅+]dKeUR50 -(B4MQѨ E*)R"JJT+ܮ\*_Ur,uru^W.{e\*^UW5$B"TF9Hkd#aQdE3e \uCZXOk{WMdyrj{¾2p qD! r  B˲V鱍A&x-MI߬W!4۝ј{Y26#,7'lj[mΣ@ iآ07B+}8؅6d]m ,YOv3A!Mh&VEp'~d - X3KkG=HdPBdx K^E+R1ߒQKM9 C^_†LcwH  U9X}Bd%d>lr?MM$S*T*E;sT2v$N0yc6Zjew$ +m_0m۫+RXLuv=jl4F!v6mV:z4ο-^yR=HM=ȇ%r6ǂ}+ڢE]ԩB@tZc[c+y~g{0@{ogt Ӧ/5whbuཧy2~[01q؉zTluHCڄ I 9H+Y^BQZH ľC[xȭB!Q<&CwVtUZ0 XDEO/[2lv%wTʎSTHn,&""bEɪUPNNQVթԩRǤid6v(ve;"}A5LH+j*RVpe",8&UYCLXaO8iDa]Ovj@i-b8M%͕H:NRh( AHDq P~`w!PF҆~J[:GBT4 !cLT3m/GRVT'夐U\@)p)Dą5C61SE!]D+Jdv޴cStTµ !tqpwS[9]vݤ@ `}㹋DOEWIgVg.Dlo,:'0Pʳ@`%:P#K= lڠ~g^ղQn<@D[⇼Z"l&O̰mrU}꤬[wH.m4U^ S Я_'Zڡ D"v8ӄ(BY$r Cryo5N@L6<wAArbUuy?ejmcQ‹䑐u \ Vx,_ ?6| r{ X rɜZƧ̬TZTk?!$;i$"ƭRNN_` X燊gklR*@5b[16TgwG# U}ZMC^tnfUnج#n\jЅY)Vi>?חSodMOoJ8Fi*oX8`lX3Fs Sqoپt jj/DSJ=ٰaI,=+S`yk$d}1m r~&dV,5loBf6o]-l{gA,'Q̴Y5YiqdFvӳmsIÐ0B%ԓf vnL(V YY'<,[&TEb$GLw=u}hNrOHfRv*m]wNJUf {߰tv1:Ÿ +f,#! [#Q 2*Ɨ꒚pUFYTϕMG(aZ~_6<_Q q>FLaN1ӷ =B J:C(=PKљB,I0lib/unicore/To/_slc.pl}QO0ǟOqIyaP0IRUI{x$ve; ww~>F0.`<P\M`2}_BQK k:B$`.:gK}Hf T#JD {Cm[!j 4@h|L;޵b|;3n {/}g"6`h`*k$S{oM*GtjgZ"ᓍ ]IKZxc9vX&H?"վK|%j]&lzje"wjܘX>ho SzO@zm*Q{X[ΞlS i|=4oh&C'w6uKWl9_O5dB)]`8WR{WeT6ElY0uy>lxx4 cNNNrT9j8^H#W;! mL*zXkCα_*AÁ}瓭Pc$6AmS,顋PĆFsw~|_b4xkV:w_o_Kv`OH#끵mxhD#6id<=;e[b&?Gh} }n_}K^oIgVQ]fYy1hg~O9KT?H?JIgc' _$N(****************jjjjjjjjjjjjjjjj^ʶKIqH2WPKљB0Ց?%lib/unicore/To/_suc.pl}O0?M2mU 0i&76]B;ؗ_s{̯J([Lg*=(ai[LXW05,alv,Zw;^H5q~`;898/v[V-jƶ-,ZnF7,nz n ~{X08BYC Wt]%S}gW>#W;! mL*zXkCα_*AÁ}瓭Pc$6AmS,顋PĆFsw~|_b4xkV:w_o_Kv`OH#끵mxhD#6id<=;e[b_OM _!a&H =M9:(`/6}oϬ()b̲..b>ϳr<8~9~xO$HPTUUUUUUUUUUUUUUU̽m\;888e4PKҙBC9lib/unicore/lib/AHex/N.pluON@=_. U BBxܶ]ΚV*Ɠov7C ~ H4GJ׉/ 5D^Gc r7 ͉T8Úbұ)ItaI~x ԄCߩH*-=5ȷ1fH3Z&O0֢ X׆i'l6٭q'ds@ER%oYR}4Wwbլ8ѧiq)4~hv ]-Bv4(|0J)ObdAE([ _ F¦saWJDPKҙB!,2lib/unicore/lib/AHex/Y.pluON0<㯘^ RU"qtmcpq=- ٠ؔHDqj5=t1yAu5b`S;O%ʒCh iH-{< |EChލa/vVXئ}M?< -c-yWN^wpl;ݨfĉ>Lky%s?TT3LZ7 X%g+ h4VJy gVHfw*n 9n--cAXF}PKҙB78Gr lib/unicore/lib/Age/1_1.pluMohÇ$A6K ,-q$qWcK3hd}އANg^V7[S?ۏwwC{:Ox:׿^yY|xx8_W8^i52*^soz8MnƤ?~^q5Oy5>~_t6e=u%mi=??ϧ9(;ѬZ qEZsx&^9>\ Uqy:]t9<)T=],x8_p^/owǰn~Аnv86ED jqYVX6@aN4c =KdH,IVTV]׫ocW R4cXӨYI%ұS4gEة`+*Ddv9ԭ_8j~pOSz.tk&P np!2*[}U(lzzSaBDi.48Q-,+fffg.=iʬu$]ow50;{w]O**DD@UPKҙBsPlib/unicore/lib/Age/2_0.plu͎03~Y!vFjԣIp veLۼ}Ǔz*Hgx< S E~|xp,h=CCݫ j@ym4~F+v\aPUk,>ߝl֌z7*ubrCH?@R__!h~aa0T_ۇ.^^ 8Uǯl,(j9(lib/unicore/lib/Age/2_1.plu1O0WCh+X*HQZ)\sFs"&{ロas$ iW=Hq%Hu1yE}5r`8O5ڒGQiIZ-t'8b%XMD㈖Б'|kQ q$;/tW l]>Ŧ,>:Ñ=f"<1NpLPOòN1,4̈G/!KaG3 8mx+N>З01L}_B S_0&0Gk/VktnljNǐ݇i2up2k?t3DSS[xF;Ooa(-~<%c1^-D~9SH)[WR0ƅ5 @m&f4/AsTgj39.J!-q MAf0A sʀtRL&}&YIq)E[Ǥ(%|K xM49 r5j,ts)d|PU גځaJ?e)3a;H aU\Z%E: >S>[YjU%2< _*pPm, dj/Okӯ˲8oinkr:Z GehOL3q<\S{ni> z;mym4/xL/Ö7:+1XCZFP2, 3/:P섬$4LVA*F4Y& jPy6Twcl* L?ES@Z!/ ^(繝rQFF ͤ;a2LVrzc-!gA BynNhYbVC6},RhO+e ͯCWu jԡ / T Fǡ H ٗXzl}`]t=ulZfg#\2s9r=ԙ1xM|pixM% Vlsۖsm/1̵,3׹-L3Ɣ8=_w‹PKҙBFlib/unicore/lib/Age/4_1.pluM6⯘ I}]` @]B;tj>~9{zwǯ=^)2~|MsZ-Fxx㲦߷0%X mDxP4`m藴^eėot<kD&k&:$Nc?<剾} {~YV-0xlsZ'c]^BfFym4/xLP/Ö7:+XCe[H])!˺+(:PBV)Z!kF#- Y@B,dx!RrM%zdE/ ÒҲRݥY]BRE御cF: {z0Y&|2QBW(Je] S@jAߌVRe)*ЍhP DPM@*[C/+g;LFWW2q1{^U05f$ߣ7L&SDŽ޲gٳYޱy<{^jA1yQ*E-|MSZaZV5tL",9Ġ@ADpRu|+J\8v̾B,3י̎Ye_erf]f92W95箹UwTZo#PKҙB-C lib/unicore/lib/Age/5_0.plun0DWlC.mBRH0 q (ۛXLaJig;9ݚ|Xң!i'z&<vcxG =uq"J{vnԏf 7QNwӞ#ӯ~h4S:/bjIaIOV˯Ѯb)etno/$)RFҵBVZ+)@u-Pm%<[gB<]AVJ躬AיpB7 zV址tݔXjV4uV@*ij] H&@@n@VVV[@hYݔZsH5:mTb3پ-*`Yk?,_PKҙBōlib/unicore/lib/Age/5_1.plu[6_1AIxэh^(^ q Qk%Tr=M#7" {S {vCDCy0fB0wyK^hnp}c?B9W^9eT:X=/a~/%r ySs^2=#2u}#Pg}s)~~_"=慆iԏtfn\祿ěSVY_Ϙmj+}:֚rY9࠷Xֵٮ8iyT؏vqMY ĿPKҙBA!lib/unicore/lib/Age/6_0.pluMo8䯘\v[~EE4@[`jmͿߙq{j<|gܾ =q }=_-lSas28iKyS|X+ :<.7V8O)hPCcY =N+p/}7|??/=Ս?;~[^?zˎ/._ӾΕ;=vze=RߖN__//}yy}~ws}_~鿾_~/<|zYt_^\^?_N_78s9؎ӗ}N߮|׏>~.#W<>__^??W$ R=DYdBѻG ªK)MV!hmS։@a 4 #5[ qk@UA?L@ܠz>y!J939me-PɺTd Qjp9@  eLDq-*+2QV_J~j83Ttq2P\%C(+[ D(V%JDS(f*JRgKS-3 e&ԩ fV&AkF!D 024e댽Bb2:c3:c 2!VF[mePz^c>TF[Y5meMք yG͉NfB Hď ?fFj%j8hʤT&4*K2)ۘ6V5׌zfL@cC7$m.37 <=l6zEfڼmf#o#k<֦VcXMhS"k<<6YaPf28@̰d%T<%Ӆ26pFcU?d JB42 hqMS Q(nMmDCmi65iA W ߀" P&Ma(Z[&(ECZ&߀r S)( uhqj@uB;!B+!/eeۀ,#3yys@Fs,rëģ[f E".^x +LN)0PRaaV~Qi]̰v12t4!D4 oa1.fIG_ 1Ӊ:66XN ϒ+ɺH-z7WALO4a@ L]?dhJs E2ecYxrȁeƃl\ymlu2֓fzmETzfjIG+6@!(t #ZW ~/uU_m_2.lڞ anxtIGg Lvhjԉ3h @obiL e+BA.F wU^jD % 4$n$< D$ W/mFC@7 ,l%%5/"T1~m (Jo9DD4 e2܏R-KVD< DH HB,4 N ("1xV , & e+kʂ$e1BC1y8YF:~efFe wz ! e2!NJ? ŻjXW,7'g哷zQ12Rbb`u$@s#֧ cu˧ T1?P=YmO_kWruY_u˴.џ>fM+u냌_A309NofבY3Pg:Yur|v!67IkpcWX^<*^1ߔU):c=QbկsxٸO}t~6zf/Qƨu1Q'(L'ki9沨o/Z7b,BBĜ(Ĩq:+3X&ǰHj;ś8)H&oz&p8FloޕovK  dЅP/0׮+GPř6\Pcu%bYƤMa/b}F9\ʂʲwwrzU:7yOCpΛ݆׸ ^fƶGqYGlj'$⁡ju o7sǤu|(g1&(ob8(8)N⬸(.⪸)nE((C>!wrPKҙB;  lib/unicore/lib/Alpha/N.pluXM =Za/n$J^/Ā1^ȱ=St2 zIANkH},?}g4wß6w;7劉O_ϧyrǗ3._>Α;_Niqƿixs}z/q^^߮~w/?^_ǗN/eez=|3C:O s>,>]#~|9緯?^- Dq}~zί#LWtNcỻ~z9O?Co?na  J$ Q @e%lt8 eK] 5h,=BT ~OC>mLԁ6X[16,J6,6L DbL@q# 7 ֋sb1ol5FJ0c'}Zd# AzkDhPid"~7'n{RA$B/q4<l 367ٶ)Xmh{;`ca5+!ph@k (Q^@ \r' e\*4`'9zHٌs#blAD8Qe( 2=cͽ`XD\!a6"lPq9rPUx;[BQ!  D6lAV G`[U }7hkƆ* #`v󰍖gN\xcꎁNa@. QŽP(k*-ikʳ/7ލ3V8)S@aS7 /wڼX8pVEtuqi%4x6&żIp|e7aEqS܉I~J1vؾqvSdn3β˯DZ@EZEuJb[EIdgrr_h051l;V(*#@kVZf\Xւ8^qPooWUnQs9 ;[':0nĐ$mEJM֊qkZOƃM[ӆ{_䬝ܗEVTPB;>.CXgPKҙB dlib/unicore/lib/Alpha/Y.pluˎE_QReU &0$ʀC%=1f'ZW&3ψzoY懷.oez=LJׇ.?v˻/û>_?=dzF\:im՛7c}<\̶܏O=Z._ҫryh:z_?t|y?~U׹מ_>u>n~||].Oׇo5U|s]<\ꯅO|7MOu=ݺ" PJӧW[܃'фhk$D귍j 6ռ P E)XyTvS ).^4z$鎤~L~ kkgz򉦪}дFS۠PNߡ:' NA^s-"1EA }u5a$CjNEdڸ)M"ǩEN!ꞜNNҦҁkLkޫhdPk>Wrs21CZ>'tD4EYnυ5kƖr (2ĢMgG 1Y8=>M!,ʪ͔u OlzV8ݑY-'5MF>UNI{txNFLsҪrj[gGa-![)ROۜH›e]noMdI*.R6)^giUpI4ۤlA TQ#D]Niv%̮*lDʮ;,?ݜ*CD *%9H3ώAdo<<(Rw V8xVki-feĭpލbU jՖػ;a?[ɢ(Gnɸ͞iqx3Vz)2LL@fx7}Mg l>n>5RNًgU`2êi%+=PRl7~(U`k5nX?$9a<µ)U#-W($9h\k{1y|-Y$lOؽ_a/PX'-lC3}g͠HrO8֏n|f${ јjSuc1.ƍr#ø6K2BU< =9mxOPKљB^KXlib/unicore/lib/Bc/AL.pluOo0S( BQWZQB"h`vq veL'z  ΋R>6qVb]wV =E܆w:8kl o$r.BBJiaHg!*ITUB7E$)3(%4ICI ңHU%)SOS=cs3`윽d/`+ZJ)5ח8Qhy@G PKљBOlib/unicore/lib/Bc/CS.pluOAn0ɰ]P؉Uɔ|90;Gr+ި!maW%jiПS(J9(,C-QO{G}rn$qy 3gNR1/0,@zV2)WwD?PKљBf5eflib/unicore/lib/Bc/EN.pluON0<_1C/R( tn4/]̰Mv<{XHjwm{s[ o֜ha: k;iZVO9?L|;hdEoҡyq\o5q `!f»ÊE7SUt!EzI?jPKљBdlib/unicore/lib/Bc/ET.plun0)&a/MbKҊRGS+cw$ʩXcf<.^?Z n/).G3!Pu?W'u3LYǛG݄tûˆ+ҤASM/ _P\s:ž=a\1 ~iarK`4ic# $y06zuh;{@?ON^t&3-q&=Ge^ۃatkFn?&`Yl$Up ,Ƀ716k͸uzW#a(;P0L,XEB]8VPٺxp? 5{R a#%PI] (W]MuTJY:,vUR7m`|6HQzT?5R'1!M2E=AXn4@TҠ6 7sW^ŀh `o3f!A6gcE6ei,,cjѠ q&L1s&pa}%5aYDղFa41k %iОfB  jpLlDRb1u YN+1f7x A&, ²YXv Y\ ԭ%D,nl5Z5# ,5mT*m* Q@(0k;mae՟RgTlw"mX%^:*Qw( ugKZIIdzA`10 -J£#v=GN %Ah9$rB̩Pq$jg39$GBralvTH9)@uO\p <)4 kt9CV6}U?P =n6i%yjt% qY,Ґ^ Q'l|Z}s0c@c@v̷ϕ'ͦPOɑpd pnc޺H ,,9D), @M2rmb2^bwcqq;҉G2~?~:=Z8e.6>[ ( >t26jECmy" E}G9Ea 5X5ۖN:!87*sח/T $\- fj7.^1j,hd0_PKљB1#lib/unicore/lib/Bc/LRO.pluAO@x\HZcRvY{a33oflo IVxx6 3AѸ' j환Q^]9U!Ҽ}[z1p&5Smuf;lXUcLCDMh(>( >t26jECmy" E}G9Ea 5X5ۖN:!87*sח/T $\- fj7.^1j,d42Z/PKљByelib/unicore/lib/Bc/NSM.plun7OA_ WD  ǑD[zV} H@էbm$#H͇[խ(WkqxSORV ^xy9ޟpwXOb{ W*2=v/uϋo%~ˋ<,*KO,>\}=lu]'|l}I'q^N/hv?6qXD.HGT2տ.+s@ϗ& ayy;׷H˛uqq? }y]oMzS/G);9ɎT'@tT!4 BV4ЌLȶ4 ) (OlHI(bLd<M 6 6;6$Cr$$3itܙhڍ7YRji@m=p.N=$1K,yV{z~a2$K $ in(˨gIσi"={e {0 l LY7n.ءUcdpq$K$gu5i"Ľ# Nl,{H{QQ)HDˣ,S})p)8R ar / T8 elGZF+הAG [8b'&R9.})9NᙀƁdHIm5f )4#Pb#a55H3(P(3#i&#Ȑ )ި2{&'ZN+Cy HdAcqCn K^aɷ¾z-AV 3L#N xyh%6i5 <}TUZbveU -?, 'rk%dr3P`(CT)V-ń1 q#QKj)J7 RRA"pECD!ֆDQ ad |.fHJ"AH䦡BSAhPtO39A #]߿USAxQi&Zv w5`9L$CL*ׇ]]JP*! h pU rl<7֍cBx|{Q}Ɣ5%'M@*2كk4&ґM (Ɓ=qH9YhK?PKљB yGRglύ}F|*ql~'uXɞVƦm=o6r8Ui7?պ1g1gn۾PKљB ;$lib/unicore/lib/Bc/PDF.plu1O0WCh,T$HUZ)\sFEL؃uw}7H67$+P&_?} "[{Rxm0UZNvmKP'tWZuc. ҄^A\E3JO jUƘHG4͓Y.|PKљBfnlib/unicore/lib/Bc/R.pluAo0+&a/mb%j.J+6JH .n!UOyf-,G5r_CubTo'5 gh+ h'i5#w:$NRON Nhxc m/Bh3 W5<p8Vo> J;ZpӚ#=\)LMu;_Ok9"QCDH<]:pBt כmjJWnNt<EwW*W_BlY|ݲڭyX$ X"DRjDbC$Oy(r?śEE8(M̘(r"Έh#ˆeFx{ כ{MZ97^3bfxo bAI">=PKљB $lib/unicore/lib/Bc/RLE.plu1O0WCh,%HUZ)\sFEL؃uw}7H67$+P&_?} "[{Rxm0UZNvmKP'tWZuc. ҄^A\E3JO jUƘHG4͓Y.|PKљB9e#lib/unicore/lib/Bc/RLO.pluAO@x\HZcRvY{a33oflo IVxx6 3AѸ' j환Q^]9U!Ҽ}[z1p&5Smuf;lXUcLCDMh(>( >t26jECmy" E}G9Ea 5X5ۖN:!87*sח/T $\- fj7.^1j,t42Z/PKљB zZ)lib/unicore/lib/Bc/S.pluON@<ۯB`ZbRAWoU}E'w}3;3o IVxvXfTE4Fts$`j'8[z4kĔG-!&urkBCP{(1I:W}kk j6-AvB\o]_R%YHb+Uy"VP۠z (1O<ܖGX6' K]P\>ŮWjD_ĥ<BQW*= $Svl.i"V?vA8c,8A,/ΰc9Vr-΅m_b|PKҙB14lib/unicore/lib/BidiC/N.pluAO0 ˯x퀄eR;QꦭC☶H=. q9ı_?O0 @M%R*Ec:%1Lgb:PkyϦrkХ%]C&qtG7x"ǸEr5_P54 y‡%.ayu]p<$'a8gmw4`p;oޝn^[ݠfĉ>M+y;G sח/Tw]HSLbMajE/RB4郊$F(2Z ^f6JT PKҙBrxJ*lib/unicore/lib/BidiC/Y.pluOAN0Т{r$?[qDfzz|)H5|Ѣ!9T8Q";+J/;q˻,Ϗ_%>>+?7y/I0^ҏiHS7>އ8N;\fLUso̜::[A~Iӭ>qÛ)9MI/9$]~×{˓|y~'9MCw-6}NEש8\`fnn8I3 h꡻&Awp?/HNϷteo}acV~E?˩P,|!OYgʀf!B(l   ZPCj@Q !lʺ oT md"&ՠBLbTg%ɐV(ҖdH`I)ס\-vKj O,@eE XRڣjWTf K7ւ;v%pFZ.u=)OמuZqtAMN2i5-NƴdhӴBCMDHMMnq16Cl,[v-cr"3Y Ԓ LgE 5$l&WR{tJU0j[w"5$je*aUVVl]-o38 g$'[x@jxN.0 ";EΏ\8K97r"դ4p{ULxu4PBa3&F!8 E@]|^1U(2,/1؂ >Ɗ 2'5vdXG<~&PKҙB76 lib/unicore/lib/BidiM/Y.pluMo8֯\v[P"u QX-T{j<G~+o?q}܉w;}"5"y+pN~c%e"a6i/?~1OYNAs t70RK/b991)Ag9OM}[ _42K,k`lSs"x~A3;ǣˆtKd %NpXd^i-2NpM93Q8I9,y7͆GU4rQUZOv=5Qun \@J@XP^TjPHTm rRMr, UV,):R U]kӠiѐ*(H\RŠ2!yPAL,[%A Ûb\ղ5\FbCt:E)`*#**XYVЖ$ZCjr- YyXy15ƠG(cik ! Y 8j\N$=~F:Ŏue,'5I Q$]8J7rQx=uoBt1$s~)Qݪkꖣ PKљBuw$lib/unicore/lib/Blk/ASCII.plu1O@ gWCh;K"RVmxICǁ"&|)&? ٠ؔHDTl];[DL 5Z iѽѸ! {Tz5Ί2tO)!±Pd14bp[o1؟Ժ;+܀މnTDZ6~XejAzapW\3pEbcL$"a,5˻|PKљBe'lib/unicore/lib/Blk/AegeanNu.pluN0D+hS!qK"RVmIY#ld˻㙷SL~trS!K c:/2_j3Gc r ͉Ԣ>Úz1iEumI~x#viIZ-=Oqy"XMDcDK> օ8QbU+WٮaaSsHh-޼;yñ= L%u:Bs z'Qͺ'}y񛣅9 5])bv44,~SxKRS( >t22jE˗kl}M~" E}G)Ya 5X5ۖN:!qoU/_H SHzqM* j,h E»%NFF Hwrm[OOsCc֣h=^c8E"?+LuշV`ݠfԉ>\'ĕ>ͱ3U ?҄^A\ESJO jUƘHGb1IdroBەъPKљB[*(lib/unicore/lib/Blk/AncientG.plu_K0şͧ8c{ atcn7꾽:r9;gH6(6%$+Q>f{Ǹe+>n5hh-y‡GJ Lw*68Sl0ɳ ܖśw';8g).NGhn@b7YwqO"q-4~s0z:"@2El].b8o /z VJyg,H&j1_ί_+/PKљB4i(lib/unicore/lib/Blk/AncientS.pluN0) KER)J6E$଑}{6P [̷c~dbS"Mc:S_j5Gc rwn ͉Ԡ:ÚjֳYueI~x!iH-=Oq\63V󉆈В'|kQ q;+tWrl]>Ŧȟ>:ÑЀ=m[ywc{RtN,vuG'4!8J7G s# $S좩i*VI0`{r9IdrJ·PKљBh[%lib/unicore/lib/Blk/Arabic.plu1O0g+^ա )TU"1:ɵ18g\{.PĄ=XwwSL~tb["Kc~:dڿ*ez'ٺuLwgbVAuwb`WHUlIAZq4NՙO{yx ƈR$|8Q|eb;/l_ օ8QbU+abSsHh-޼;yñ= L%}:Bs z'Qͺ'})2. sChUx)LDk%X))Z2ݫvy%YV_PKљB$&lib/unicore/lib/Blk/ArabicSu.plu1O0g+^ա Y,HQZ)\sFs"&bs YW=yIPST 8KMgnNuԋM<-רkKû#IKj@x"ch:'#ZBGaEM.ĉ?켬]*v x< G-@#%oY`*鋾[;؍j=AӄHHqo0/DDwYH"E\RdzMa"ZE/J)OqYV{,od\+PKљB(lib/unicore/lib/Blk/Armenian.pluAK@x^ HEBR qLͬl6jxrbs[I(6iHPSp2 o0ݜ@5֔M<-נKKû!IMTk鎮D3q7kP54FԄ]0*v< &6^zXfITFIPKљBK~'lib/unicore/lib/Blk/Arrows.pluKO0WLC/ K"RVmIY#'샵o}ŶDd%ʇMQ1%5L7gb:RkYϦvfKԕ%]ä!qjtk<1ns/[g"BKnEE.đ?(}αK9"< G-@#oE`J鋾 jAÄH\KqoWTGDl[GX%'D4Ƌ^Rb$-ɽZ.WfVPKљBeE(lib/unicore/lib/Blk/Avestan.pluN0)hKQR)J6E$଑}{6d˻o|/B|u^dRQ)%3LW'b:R kqKԵ%]c%qjtK<1nl`g4-#Ox7֢&XDv^Vٮ\f}MY<}t#yC{ےxu,0E-XF5 NaB$nqo0DD3L;7DXgDƋ^R,+ٝNBΛPKљBbmT'lib/unicore/lib/Blk/Balinese.pluKO0WLC/*U"qtmcpv{6< `x1F@E-&Y!;`j5'c vn ͙ԠjֳYueI~x!0iH-3q\. V󙆈В'kQ q;+t_r}!Ŷȟ>9ÑЀ=[zwc{RtF,vuG'0!Rd𛣅93,$[좩i*VI0`{r9Idrj('PKљB?t%lib/unicore/lib/Blk/Bamum.plu?o0S<KY"%P@*utuΕsi˷ԩ`{b};Y(#66LQy[tw!hTWxW-vu^VG %ICXٞnHw/ _Q/4F4"yC/yQf"b83X(zG=E.v Sj_Xn@oj7vu qY9VzZ g!B08iVi|Q8A5IXgYMJ7j1ZOPKљB_r,*lib/unicore/lib/Blk/BamumSup.pluKO0WLC/Ї*$zTDҪM8:ɶ18kd;@=}<;; ٢ؖHDTlMX[ts&.ljiֽD]Y:Ėp* IR]|0kn5iZwc-*u!agEu]q<'a8gmyW^wpl/S.NGhn@o7YwI"q-~ha}LuDt? u}hjJTx(LDceRS=cE2W|~Xo7J PKљB'lib/unicore/lib/Blk/Batak.pluKO0WLC/Dž $jS$Nm φ8a|;H(%$+Q>dlZwc-*u!agEU]q<'a8gmyW^wpl/SJ_܀ވnPD&DZ ~s0z:"dغ>]45M*q<_&1^{X.'iLb}?Z7%PKљB{4&lib/unicore/lib/Blk/Bengali.plu1O0g+^ա ,HQZ)\sFs"&bs YW=yIPST 8KMgnNuԋM<-רkKû#IKj@x"ch:'#ZBGaEM.ĉ?켬]*v x< G-@#%oY`*鋾[;؍j=AӄHHqo0/DDwYH"E\RdzMa"ZE/J)OqYV{,d^+PKљB(lib/unicore/lib/Blk/BlockEle.pluAO@xBȅ%6i bqtu;k[ީb<{csD[dq6IKPciq2 o0ݜ@M<͚נ Kû&IETi閮D5q;ܣ5i5y‡6a'Yu]OqX;vlQlKIV|dy*lMX[ts&.ljiֽD]Yu-8LFL#`v: |!! ZTB)1Ί2txH-Op$ڢ4`p;ޝ^;ݠfĉ>Lĵ'ha}LuDt? u}hjUx(LDc%X))ZM"ܫr>Z,6Jj PKљBot'lib/unicore/lib/Blk/Brahmi.plu1O0g+^ա ,HQZ)\sFs"&lɖnnPn*di^zXE&BMQu&h,A^7a9בZgXS/6_-zĎp;-S]|0q;Od+>4hh y‡5'J v683l0ɳ#ܖśw'{8g.^GhnAb7YqO"q#4~s0~&"@2E.b:o /z VJyg<<̲2ݫ2I+9J* PKљB8{'lib/unicore/lib/Blk/BrailleP.plu1O0g+^ա UT.HQZ)\sFs"&cs$[i(6YJPc 8KukuTM<ͺר+Kû%ICh@x"cOr5_P4D4{d:Ea([n-hh-E‡^&F Lwjm[O)sCcci=b8E!?+L}wV`ݨfԉ>]/ĵGXejBapW\3pEk1& 0Kdvo*[e|PKљB)lib/unicore/lib/Blk/CJKComp4.plu1O0g+^ա BK$"RVm$\ {ݻ輦@$b/5Eј'c j ͙T`MTӢ} $޵ 8VjZKMwt'qR.UL㈚А'|kQDIv>d Cm=}ry}G##o 0ouN,quK$4] s-]_Pe!"4`LEs7  VJy g׳8fj/Wds(QPKљBnKK&lib/unicore/lib/Blk/CJKCompa.plu1O0g+^ա "ХRR)J6Ebtkcpv{.PĄ=XwwSL~tr[!K c~&/2_j3'c ݙԢz1iEumI~x#v8iIZ-3OqR. NƈБ'|kQ q;/l_ }!ö,>9Ñj h §u%.\Ӽл|aw{M}#6}G)Y` 鋾5k j6-Av(#]_Re!"6`mESJ0ˉΓɣZBJj PKљBv 'lib/unicore/lib/Blk/CJKStrok.pluKO0WLC/Ї*q"RVmIY#'샵o}NCz&ʹjNmMX31Fyg[@%ґElaR8FfkSBEl|>ڊbx/ Q z VJ}`V';\ϯ QROPKљBx^&lib/unicore/lib/Blk/CJKSymbo.plu1O0g+^ա *ХRR)J6Ebtkcpv{.PĄ=XwwSL~tr[!K c~&/2_j3'c ݙԢz1iEumI~x#v8iIZ-3Oqy"XMLcDK> օ8QbU/vپa[sHhv-޼;{ñL%}:Bs z'Qͺ'})N2 sChUx)LDk%X))ZͲ2=e$7dQR/PKљBҹ'lib/unicore/lib/Blk/CJKUnif2.plu1O0g+^ա XRTDҪM3 1a= ٠ؔHDTlMX[ts"ΰljiֽF]Yu-0LFL`n: |!! ZTB)1Ί2tO)p$ڢ4`p[oޝ؞;ݠfĉ>MĵGha}BuDtdغ>]45M*q<&1^{X.'iLb>Z$k%PKљBZ&lib/unicore/lib/Blk/CJKUnif3.pluAO@x^HZbRvY{a޾fOHȷ$+PY4zPb^)QPKљB*r E'lib/unicore/lib/Blk/CJKUnifi.plu1O0g+^ա K8"RVm$\ {輦ŦNcGZlmuy;SDLDjPl>Т{r$?[a4$NOzw\`gԭ @Ρ"8lj?(X]^cSs}Hӈ=m)8 gwRLN,vMG'}$87s?T/TGDYH"G[\ϳMa#D/J@qjdnryuZ}PKљBQQ_(lib/unicore/lib/Blk/Canadian.pluKO0WLC/Їʁ^*%jS$Nm φ8a|;H(%$+Q>dl( >t22jE˗kl}M~" E}G)Ya 5X5ۖN:!qoU/_H SHzqM* Mč'haCBMDtׅdع!]4 *u<&5^xxee:W2InjV_PKљB3&lib/unicore/lib/Blk/Combini4.plu?O0g)^ա KERJ6Ebtkcpȹ\ {ߍ19 M4 lj0cptok1ݜ)Zޕ]"W'C iaR:Vgkn-hZ=*LagEUmqاX(zG-ENv Sj^Xn@j7vuO qQ s2CB@e!B08iVI|S8Au1& 0KdvoJ|PKљB|r&lib/unicore/lib/Blk/CommonIn.pluAK@x^-"K!)JZTIfV6މV< ̛7ߌ19 M4 lj0cptk1ݜ)Zޕ]"W'툡4PIj55(v.0sϨ'FԄ"yC'#Y^|6ݭqا!±Pdw4`p[o1m؟м[+\މnPm DJ~Xe*B4pWTpE`cL$#cy2y0>+PKљB!k(lib/unicore/lib/Blk/ControlP.plun0S DQ/傔FPG'Y[g]N[޾kw3ߎ1>-m4J,OPc 8KuknuTM<ͺ+Kû%ICh@x$cMr5_P4D4PKљB(lib/unicore/lib/Blk/Coptic.plun0S ġT.5RJ=:B:vG=>X;vlQlKIV|dy*lMX[ts&.ljiֽD]Yu-8LFL#`v: |!! ZTB)1Ί2txH-Op$ڢ4`p;ޝ^;ݠfĉ>Lĵ'ha}LuDt? u}hjUx(LDc%X))\N"ܫn~Xo6Jj PKљBp(lib/unicore/lib/Blk/Counting.pluN0D+hʁ^*%jS$Nm пgE%[ϼc$i(=YJPc 8KuknNuTM<ͺר+Kû%NCh@x"c,sϨ['"BKaEE.đ?(]ʱMw9"< G-@%oY`J; jAӄH\(-̡^2L[GX%'D4Ƌ^Rb$-ɃM+9J* PKљB(lib/unicore/lib/Blk/Cuneifo2.pluN0D+h BpJIE(lF@'lɖw3o,źDd%lUR?+ekt#1yAu5լgS;O5ʒCl Ӑ85Zz:%wӹl`'ԭ#  %O0֢"XHvVXؤ]u?}p#y}{ېxu$0E X5 NiB$qoW/TGDwH#ESTǓMa"E/J)ObA]rޯTPKљBg垘)lib/unicore/lib/Blk/Cuneifor.pluAO@x&M!PH( ua$;͋d2l]>&Ϟ>9Á:wc-ju!NaeUm+pgؔGa8gm1G-yWN^plSI]܂ވnT D&DFGihaCLMDt?sChUx(LDk%X))\β2ݫ.I.Y+OPKљB]&lib/unicore/lib/Blk/Cyrilli2.pluAO@x\HZbRvY{a33oflo IVxXgTWh\}[[5LL (/i־-=ZHC8ԩ:b~: |!&4 {:5" v~!6<} "[{Qxm0UZNvmKP'tWZtc ҄^A\ESJO jUƘHGr9Id`I:Y$|PKљB'lib/unicore/lib/Blk/Cyrilli3.plu1O0g+^ա P%K"RVm$\ {輦B|u^dҿ(Ugu1yE}5b`8O5ڒGqҒ8Zf:5R.MDcDK> օ8QbU+lWϰ)p$b4bp[oޝ؞{ݨfĉ>MčGhaCBMDtdع!]4 *u<&5^xxee:WvyJjPKљBU p&lib/unicore/lib/Blk/Cyrilli4.plu1O0g+^ա RY`TDҪM3 1a= ݠTҼB΋LLXn:ts"&#ϰ^ liѿF][0NZVL`nV|Fi>:c-ju!NaeUm+pgؔGa8gm1G-y7N^plSI_܂މnT D&DF ~s0~&"BE.b:o /z VJyg<<̲2ݫd$WvV_PKљBxy&lib/unicore/lib/Blk/Cyrillic.plu1O0g+^ա *TJ*"EiզHNrm nnQn+di^zE&BMQu&d,A^7a;בZXS/6_-zĎp'-Se|0q?Ok4ih y‡5'J .82l0ɳ#܎śwg{8/^GhnAb7YqO"q#I9ZPPu!"vn`MCsJ7h+<3VYV,&Yn6JjPKљBp;pv'lib/unicore/lib/Blk/Deseret.pluN0D+hTqK"RVmIY#ld˻㙷SL~trS!K c:/2_j3Gc r ͉Ԣ>Úz1iEumI~x#viIZ-=Oqy"XMDcDK> օ8QbU+WٮaaSsHh-޼;yñ= L%u:Bs z'Qͺ'}y񛣅9 5])bv44,~SxKRS-m4J,OPc 8KuknuTM<ͺ+Kû%ICh@x$cNr5_P4D4PKљB(lib/unicore/lib/Blk/DominoTi.pluOK@x^K!)JZTIfV6މ.3o H@֩fqnm81E+T<ûrֳBY"?bh! 0tjRjvtG \73򉆈P$;Q|dd;ˋt/ئ5|?1D8l=nK5S-ZW}kk j-AuB\㨍]_>S%3N!MU4U$D(vQl$}d,4O&z5_y2Z1PKљB$)lib/unicore/lib/Blk/Egyptian.plu1O0g+^ա )E,tTDҪM3r 1a߽{ H@NDCQ4Xts"&(ϰl*i־]ZZp*5IR;84 |aDMh>( ua$;͋d2l]>&Ϟ>:ÁnebPKљB·wZ'lib/unicore/lib/Blk/Enclose2.plu1O0g+^ա U+ХRR)J6Ebtkcpv{.PĄ=Xwwc~db["Mcv&S_j5'c vn ݙԠjֳYueI~x!0iH-3Oq\. V󙆈В'|kQ q;+t_s}!Ŷȟ>9ÑЀ=[ywc{RtN,vuG'4!Rd𛣅9 ]-bv4$~SxKRS=cE2yP|~\l6JjPKљBB 5'lib/unicore/lib/Blk/Enclose3.plu1O0g+^ա .HQZ)\sFs"&lɖnlPn*I^z"E:p4 w0ݜH-3yZQזw=bG8ĩӁD>Ǹ/ek>4hh y‡5'J Jw68Sl0ɳ#ܖśw'{8g.^GhnAb7YqO"q#4~s0~&"@2E.b8o /z VJygVLf6[.2%PKљBz.f'lib/unicore/lib/Blk/Enclose4.pluN0)υ TJ""EiզHd5o8aK;vlQn+I^z"U:p2 w0ݝH- yZQזw=bG8ĩӁnD>Ǹ/e4ih y‡5'J J.8Rl0ɳ#܎śwg{8.^GhnAb7YqO"q#4~s0~&"@2E.b8o /z VJyg׳Lfj9LIE}PKљBM1Y'lib/unicore/lib/Blk/Enclosed.plu1O0g+^ա UUuRR)J6Ebtkcpv{.PĄ=Xwwc~db["Mcv&S_j5'c vn ݙԠjֳYueI~x!0iH-3Oqt.XuLCDCh>օ8Rbe/9v>b[sHEhv-޼;{L)}w:Bsz'Aͺ#}k)N2 u}hjUx)LDc%X))0Idrfl PKљBn1'lib/unicore/lib/Blk/Ethiopi2.pluAO@x腤%6!@1m5۩ʿwO63o@dlUNQ1u8:OзUnNP YϮ fғ40Ij35(v.0nsϨ'"jBCGI𡓑Q?,/]\c8SlX(;-ENѶ Sh_XAj7ٶuO qQ9V|J Აn!MU4U$D)vQl$}d<Ǹ- tO4FQjc- um)1NMK)N2v ]-Bv4$|SxKRS9ÑЀ=[ywc{RtN,vuG'4!Rd𛣅9 ]-bv4$~SxKRS=cE2yPz~Xn6JjPKљB &lib/unicore/lib/Blk/Georgia2.pluAO@x\HZbRvY{a33oflo IVxXgTWh\}[[5LL (/i־-=ZHC8ԩ:b~: |!&4 {:5" v~!6<} "[{Qxm0UZNvmKP'tWZtc ҄^A\ESJO jUƘHGr9Id`|~HkPKљBD$y&lib/unicore/lib/Blk/Georgian.plu1O0g+^ա BJIE(I9#@`{M19-m,+TȤU)%3Lwgb:RkqkԵ%]%qjt[<1\`43-#O0֢&XDv^Vپ\eCmY<}r#yC{ۑxu"0E-XF5 NiB$n87G sj".$[ ih.VY0`8xj5t:Y&Z}PKљBN (lib/unicore/lib/Blk/Glagolit.plun0S ^FPG'Y[g]N[޾kw3ߎ1>-m4J,OPc 8KuknuTM<ͺ+Kû%ICh@x$cMr_P4D4PKљBg(lib/unicore/lib/Blk/Gothic.pluN0D+hK"RVmIY#ld˻㙷c~dbS"Mc:S_j5Gc rwn ͉Ԡ:ÚjֳYueI~x!iH-=Oq\63V󉆈В'|kQ q;+tWrl]>Ŧȟ>:ÑЀ=m[ywc{RtN,vuG'4!8J7G s# $S좩i*VI0`{r9IdnJλPKљBH?z'lib/unicore/lib/Blk/Greek.plu1O0g+^ա *K"RVm$\ {輦B|u^dҿ(Ugu1yE}5b`8O5ڒGqҒ8Zf:5D.3NƈБ'|kQ q;/lW l]>æ,>:ÑǦ*>:Ñb[OsHEhv-^;{L)}w:Bsz#Aͺ#}k)N2~-bv4$~QxKRS=cE2Wr~\mPKљB'lib/unicore/lib/Blk/HangulJ2.plu1O0g+^ա *DJ*"EiզHNri 9n $qZxLئY"BMQGc,ANWa;ׁjXS.6^.-:p'5Se{8j D|Aj>QZc-Ju}(1N"9Q}rp:&܍0ȳzG=y7^wpl/SH_\މnTDĕ ~s0CBU@pׅdк!]0*v< &6^lfIT^-oVIPKљBG&lib/unicore/lib/Blk/HangulJ3.plu1O0g+^ա KQRJ6Ebtkcpȹ\ {@dlUNQ1u8:OзUnNP YϮ fғ40Ij35(v.0nsϨ'"jBCGI𡓑Q?,/]\c8SlX(;-ENѶ Sh_XAj7ٶuO qQ9V|J Აn!MU4U$D)vQl$}dO<ܙd0J|PKљB0&lib/unicore/lib/Blk/HangulJa.plu1O0g+^ա BJIE(I9#@`{M19-m,+TȤU)%3Lwgb:RkqkԵ%]%qjt[<1K/h:g#ZBGaEM.ĉ?켬}. ۲x< G-@##oE`*鋾[;؍j=AӄHHqo0/DDw]H"E\RdzMa"ZE/J)OqjA%ry$Z}PKљB/&lib/unicore/lib/Blk/HangulSy.plu1O0g+^ա `KDR)J6Ebtkcpv{.PĄ=XwwSL~trS!K c:/2_j3Gc ͉Ԣ>Úz1iEumI~x#v8iIZ-3OqR.MDcDK> օ8QbU+lWϰ)p$b4bp[oޝ؞{ݨfĉ>MčGhaCBMDtdع!]4 *u<&5^XfYU\^wZIPKљBK(lib/unicore/lib/Blk/Hanunoo.pluN0)H@/HQZ)G'6g۳"Nkw3ߎ19-m8Jr$Q1ڴ8Kemnu EkYǦtfkЅ%]Pä"qtKx"ǸkQ֚4DT:c-ju!NaeUm+pgؔGa8gm1G-y7N^plSI_܂މnT D&DF ~s0~&"BE.b:o /z VJyg<<̲2ݫdy\%ZIPKљBQ&lib/unicore/lib/Blk/HighPriv.pluAO@xND.؄vl*ީb<{H67$+PQ=J\5"5n>&_?} "[{Rxm0UZNvmKP'tWZuc. ҄^A\EJ jUƘHG|>Nd`*YVFkPKљBr,'lib/unicore/lib/Blk/HighSurr.pluN0)h{$z)J*"UiզHd5r6@ߞ ?}vw< H@֩fqmm81E+T<ûrֳBY"?bh! 0LjRvtG \/3򉆈P$;Q|dd;ˋt/ئ5|?1D8l=nK5S-W}kk j-AuB\iqoU/HYH&*Ux"_NPz 6D>2I';hm>PKљBI(a(lib/unicore/lib/Blk/Hiragana.pluAK@x^ TBR qLͬl6jxrbs[I(6iHPSp2 o0ݜ@5֔M<-נKKû!IMTk鎮D3q7kP54FԄ]0*v< &6^zXfI2FIPKљBBB'lib/unicore/lib/Blk/IPAExten.plu1O0g+^ա Q%X`TDҪM3 1a= ݠTҼB΋LLXn:ts"&#ϰ^ liѿF][0NZVL`nV|Fi>:c-ju!NaeUm+pgؔGa8gm1G-y7N^plSI_܂މnT D&DF ~s0~&"BE.b:o /z VJyg<<̲2ݫdy\%ZIPKљB#I%lib/unicore/lib/Blk/Ideograp.pluAO0 Wi]`8pˤM[1m5:(u{\D"%ylPlJI^|uLQy[ts"hTgxW-vu^V#c!ujlOxػ/+>n-hZ=*LaEtabS>Bӈ=m)zpC`VRrz'VQͶ#}^k Zc. ҆AA\MsJ U1dYZ${se+}2PKљB0m(lib/unicore/lib/Blk/Imperial.pluQK0ͯ8c{m^Pui{FIRu[d 1Y5u4J,O~V1%5LWGb:RkYϦvfkԕ%]C!qjtK<1sO[G"BKaEE.đ?(m̱I9"< G-@!oI`J; jAӄH\ -̡^Mĵ<u}hjUx)LDc%X))XL"ܫBەPKљBԞ'lib/unicore/lib/Blk/Inscript.plu1O0g+^ա e)]HQZ)\sFs"&lɖnlPlJIV|Xgy*BQ&h,AN׭a9בTgXSz64^,:Ėp: S]|0e+>n5hh-y‡GJ Lw*68Sl0ɳ ܖśw';8g).NGhn@b7YwqO"q-4~s0z:"@2El].b8o /z VJyg,H&v_yVRQ_PKљB[&lib/unicore/lib/Blk/Javanese.plu1O0g+^ա ,HQZ)\sFs"&bs YW=yIPST 8KMgnNuԋM<-רkKû#IKj@x"cΗrh:'#ZBGaEM.ĉ?켬]f}MY<}t#yC{ےxu,0E-XF5 NiB$n87G sj",$[ ih.VY0`8x,+ٽJVw˫d PKљBH6(lib/unicore/lib/Blk/Kaithi.pluN0)!KER)J6E$଑}{6P [̷c~dbS"Mc:S_j5Gc rwn ͉Ԡ:ÚjֳYueI~x!iH-=Oq\63V󉆈В'|kQ q;+tWrl]>Ŧȟ>:ÑЀ=m[ywc{RtN,vuG'4!8J7G s# $S좩i*VI0`{r9IdrJ·PKљB'lib/unicore/lib/Blk/KanaSupp.plu1O0g+^ա aaKQR)J6Ebtkcpv{.PĄ-{M1Y M,+TȤ~Q)%3L7'b:R kqkԵ%]c%qjtk<1l`g4-#O0֢&XDv^Vٮ\f}MY<}t#yC{ےxu,0E-XF5 NiB$nqo0/DDwH"E\RdzMa"ZE/J)Oqr^>$Ir%zPKљBF'lib/unicore/lib/Blk/Kanbun.pluOK@x^K!)JZTIfV6މ.23oflo IVxXeT? 3FѸG jՉQ]9U!Ҭ}[zҎZHC8 ԩZ]bv: ,|aDMh(ޝ( >t22jE˗kl}M~" E}G)Ya ͫ5X5ۖN:!48jwU/HYH&*Ux"_NPzl$}d,4O&n~hl>PKљB&lib/unicore/lib/Blk/KangxiRa.plu1O0g+^ա UTJ""EiզHNrm nlQn+I^z"U:p2 o0ݝH- yZQזw=bG8ĩ2ӁnD>Ǹ/4ih y‡5'J J.8Rl0ɳ#܎śwg{8/^GhnAb7YqO"q#I9ZPPu!"vn`MCsJ7h+<3YZ&ʖ˛UdJjPKљB-&lib/unicore/lib/Blk/Kannada.plu1O0g+L.UHQZ)\sFs"&H7(74P={"E&:p4 o0ݞH-3yQזw=bG8ĩ2ӁnD>Ǹ%r%tO4F օ8QbU/vپa[sHhv-޼;{ñL%}:Bs z'Qͺ'})N2 sChUx)LDk%X))ZͲ2=eNnfV_PKљB|-'lib/unicore/lib/Blk/KayahLi.plu1O0g+^ա RK"RVm$\ {輦B|u^dҿ(Ugu1yE}5b`8O5ڒGqҒ8Zf:5w\ 3NƈБ'|kQ q;/lW&ٮaaSsHh-޼;yñ= L%}:Bs z'Qͺ'})2. sChUx)LDk%X))0tvrynJjPKљBr{Z'lib/unicore/lib/Blk/Kharosht.plu1O0g+^ա a.HQZ)\sFs"&lɖnnPn*di^zXE&BMQu&h,A^7a9בZgXS/6_-zĎp;-S]|0q?Od+>4hh y‡5'J v683l0ɳ#ܖśw'{8g.^GhnAb7YqO"q#4~s0~&"@2E.b:o /z VJyg,Lg6Y%ɕwk%PKљB`,'lib/unicore/lib/Blk/Khmer.pluKO0WLC/Dž"K"RVmIY#'샵o}ŶDd%ʇMQ1%5L7gb:RkYϦvfKԕ%]ä!qjtk<1ns/[g"BKnEE.đ?(}αK9"< G-@#oE`J鋾 jAÄH\KqoWTGDl[GX%'D4Ƌ^Rb$-ɽZ,WfVPKљB'lib/unicore/lib/Blk/KhmerSym.pluN0)JIE(lF@'샵oŶDd%Mҿ*ekNt31yAu5լgS;O5ʒCl aҐ85Zf:-ӹ\`ԭ3  %O0֢"XHvVXإCm?}r#y}{ۑxu"0E X5 NiB$87G s#.$[좩i*VI0`{j5Idt~Xn6JjPKљBw:x&lib/unicore/lib/Blk/Lao.plu1O0g+^ա ]*jS$F'6ELnnPlJ4+Q>e{\KPSq og2ݝ)H 3ZtoTGbK8ĩ123=Bo=~V|F>Z O*}(1ΊRU856Er,G lFnK=S0<}g" 7bl:8ї#q-Q9Fz:"BEl>ښbz  z VJC`,3]G&뵒Z}PKљBj;&lib/unicore/lib/Blk/Latin1.plu1O0g+^ա ,HUZ)\sFEL؃uw}7H7(6%4/Q>{uLQy[ts"hTgxW-vu^VG %ICXٞDwq;OK>n-hh-E‡^&F vrm[ϰ)sCcci=b8E!?+L}wV`ݨfԉ>]/ĵGXejBapW\3pEk1& 0ˊtvo.JhmPKљBu(lib/unicore/lib/Blk/LatinEx2.pluN0D+hB^*%jS$Nm 9gEgN19 M$N 4KV)t8KUcNukEϦrkХ%]&qtGx"ǸGr'#jBCaEI %i^$|a2 6y?yY[#ܖśw'[8}4נwbլ[8ѧq%Q9Z|* BEh\.b;o P/z VJy g,$g*.۵Z}PKљBr'lib/unicore/lib/Blk/LatinEx3.plu1O0g+^ա U2ХjR)J6EbtKcpq{.PĄ=Xwwc~hl#cr6Ic_j1jc l ݙTbֳ)YtaI~x"40H*-3-w1ӹ\`3 !O0֢ Xׅ?$CN)N,}vy}G'oE`r鋾+; j-Ato/^ l XE'TƋ^RB$΢ɃZl~V_PKљB6'lib/unicore/lib/Blk/LatinEx4.plu1O0g+^ա `TDҪM3 1a= ݠTҼB΋LLXn:ts"&#ϰ^ liѿF][0NZVL`n $|Fi>:c-ju!Naeʤ683l0ɳ#ܖśw'{8g/^GhnAb7YqO"q#Q9ZPPe!"vn`MCsJ7h+<3fYU]^%ZIPKљB&lib/unicore/lib/Blk/LatinEx5.plu?O0g)^ա BJqE(I.9#@`{bs$;:I 4ҿ*Ek{4LZ31Fyb`[@5ґCl qR8Ff[b[OsHEhv-^;{L)}w:Bsz#Aͺ#}k)N2~-bv4$~QxKRS=cE2W|~\nPKљB9T(lib/unicore/lib/Blk/Limbu.pluKO0WLC/Ї*zTDҪM8:ɶ18kd;@=}vw< ٢ؖHDT? 5Fٚy;]LL^GjP]`M5Ӭ{$?[q4$NtG8t.XuLCDChލօ8Rbe/9v>b[OsHEhv-^;{L)}w:Bsz#Aͺ#}k)N2~-bv4$~QxKRS=cE2W|~XnPKљBb'lib/unicore/lib/Blk/LinearBI.pluN0D+h!K"RVmIY#ld˻㙷SL~trS!K c:/2_j3Gc r ͉Ԣ>Úz1iEumI~x#viIZ-=Oqy"XMDcDK> օ8QbU+WٮaaSsHh-޼;yñ= L%u:Bs z'Qͺ'}y񛣅9 5])bv44,~SxKRSj,hQ=Jagytab>BGр=m)zpE`VBor z'VAͶ%}N+;*sח/T $\- j7.^c"I$͓Ƀk\}21_PKљBG&lib/unicore/lib/Blk/Lisu.plu1O0g+^ա *DJ*"EiզHNrm nnQn+di^zE&BMQu&d,A^7a;בZXS/6_-zĎp'-Se|0q?_4ih y‡5'J eR` e?yY[ FnGͻ=ۋT}#4wbլ{8ѧ $-a_l;7DXgDƋ^R,+كJV&Ym6JjPKљB0:o%lib/unicore/lib/Blk/LowSurro.plu1O0g+^ա XH""UiզHNrm 9 1a= ٠ؔHDTl]};[DL 5Z iѽ<:HK8ԩ:=]bv ukDcDCh)>>21je+ئ5b?1D8l=FnK-S”W}g;ڍjAB\kqoU~^H,[Hq5* 4hh y‡5'J v683l0ɳ#ܖśw'{8g.^GhnAb7YqO"q#4~s0~&"@2E.b:o /z VJyg,Lgv$ɕwk%PKљB N%%lib/unicore/lib/Blk/Malayala.plu1O0g+^ա `RRJ6Ebtkcpȹ\ {輦ŦD%|UδQ)8:OзunNP ݫʓ8iH35(.0n^`gԭ Hpޣ"Ĩv^ٮXvk6cp,z =#ܖ[ h;g) ,7wbl;:ѧ노⨃PP-pYH6 jUx&Nиz 6D!2fYM&Uޭ PKљB%j'lib/unicore/lib/Blk/Mandaic.plu1O0g+^ա UK"RVm$\ {輦@M%ҿ(Ec:%1L7gb:Pr5gS9O5ҒEhqR8Zfk:c-ju!Naeu]/p9Ñ9ÑЀ=[ywc{RtN,vuG'4!Rd𛣅9 ]-bv4$~SxKRS=cE2yP|~Xn6JjPKљB㯧'lib/unicore/lib/Blk/Miscell3.plu1O0g+^ա UJ*"EiզHNrm nlQlKIV|dy*BQ&d,AN׭a;בTXSz64^,:Ėp& Se|0q?V|Aj>Zc-*u!agEU]q<'a8gmy7^wpl/SJ_܀މnPD&DZ ~s0z:"BEl].b8o /z VJyg,H&joFIPKљB'lib/unicore/lib/Blk/Miscell4.plu?o0S<b(CYPcHQ@*utuΕ?T{ߍ1>-mMi(Ec;#ۚL7gb &RgY϶fK4#|ä&qLGxYϸkj i »u%.ay:N3<{,G lnG5s0-<}k" נ7blZ8ч"q%I9F|*"d>}M*<_6A X&:O&wj_-zVPKљBl(lib/unicore/lib/Blk/Miscell5.plun0S ġ**5RJ=:B:vG=>X;vlQlKIV|dy*lMX[ts&.ljiֽD]Yu-8LFL#`v: |!! ZTB)1Ί2txH-Op$ڢ4`p;ޝ^;ݠfĉ>Lĵ'ha}LuDt? u}hjUx(LDc%X))ZM"ܫn~Xn6Jj PKљB-)lib/unicore/lib/Blk/Miscell6.pluN0)\R)J6E$଑y{6P `yvv)&?@E-Gi1= IXCMQ4Xts&&(XS.z6h_.-Iw-BC8$R]|g~ lx@h>8&4 Z0QE7v>cgs@Eш=[ywc;L![Kf$>M+;G sח/TwYHS\"dzMaj/RB,ΣكZ%*K%PKљB&&lib/unicore/lib/Blk/Miscella.pluAO@x^HZbRvY{a33oflo IVxXgTWh\}[[5LL (/i־-=ZHC8ԩ:bc9V|AX>Q=Jagytbo>BGр=(zpE`QBor z'VAͶ%}N+-N:ͱ U ׅt iB/ Z%'M`cL$#a,b^PKљBx#&lib/unicore/lib/Blk/Modifier.plu1O0g+^ա e,HQZ)\sFs"&bs YW=yIPST 8KMgnNuԋM<-רkKû#IKj@x"c͗rh:'#ZBGaEM.ĉ?켬]f}MY<}t#yC{ےxu,0E-XF5 NiB$n87G sj",$[ ih.VY0`8x,+ٽJVU]+PKљB'lib/unicore/lib/Blk/Mongolia.pluN0)UJIE(lF@'샵oŶDd%Mҿ*ekNt31yAu5լgS;O5ʒCl aҐ85Zf:-ӹ\`ԭ3  %O0֢"XHvVXإCm?}r#y}{ۑxu"0E X5 NiB$87G s#.$[좩i*VI0`{j5Idf\o PKљBm'lib/unicore/lib/Blk/MusicalS.pluN0)υ TJ*"UiզHd5r6@ߞ q–lyw< "H@6֯ 3FѸ' zjݙQ^]9U!Ҭ}[z1p:5Smg;tXUcLCDMh(>( >t22jEWCmy" E}G9Ea 5X5ۖN:!qoU/_HSHzqM* :c-ju!NaeUm+pgؔGa8gm1G-y7N^plSI_܂މnT D&DF ~s0~&"BE.b:o /z VJyg<<̲2ݫe$WnV_PKљB?%lib/unicore/lib/Blk/MyanmarE.plu1O0g+^ա @HIE(I9#@`{M19-m,+TȤU)%3Lwgb:RkqkԵ%]%qjt[<1V\ NƈБ'|kQ q;/l_&vپa[sHhv-޼;{ñL%}:Bs z'Qͺ'})N2 sChUx)LDk%X))^ϲ2=$Y-o~V_PKљB@&lib/unicore/lib/Blk/NKo.plu1O0g+^ա KER)J6Ebtkcpv{.PĄ=XwwSL~trS!K c:/2_j3Gc ͉Ԣ>Úz1iEumI~x#v8iIZ-3Oqy"XMDcDK> օ8QbU+WٮaaSsHh-޼;yñ= L%}:Bs z'Qͺ'})2. sChUx)LDk%X))q?tvCr,k%PKљB˟߾'lib/unicore/lib/Blk/NewTaiLu.pluKO0WLC/QK"RVmIY#'샵o}ŶDd%ʇMQ1%5L7gb:RkYϦvfKԕ%]ä!qjtk<1ns/[g"BKnEE.đ?(}αK9"< G-@#oE`J鋾 jAÄH\KqoWTGDl[GX%'D4Ƌ^Rb$-ɽZ,WeQROPKљBํ+lib/unicore/lib/Blk/NoBlock.pluAo0 `C.[+۩`ȑuL͑Yٖ?Rl@D>nԻ*iyV;;hz;=?ѡ7;_`=Ï'=W:N|A?Aq/moyDУGe8ۄ꥖[x^Z~ޙrl~~[Cm>}ry]K#om/0EX5 Ni@\Jqo+^ lj XE'TƋ^RB$΢ɃZoWFIPKљBz(lib/unicore/lib/Blk/OldItali.pluN0)hH\RR)J6E$଑}{6d˻o|/B|u^dRQ)%3LW'b:R kqKԵ%]c%qjtK<1l`g4-#Ox7֢&XDv^Vٮ\f}MY<}t#yC{ےxu,0E-XF5 NaB$nqo0DD3L;7DXgDƋ^R,+ٽNnBΛPKљBr'lib/unicore/lib/Blk/OldPersi.pluN0D+hK"RVmIY#g@'lɖw3o,@dlUN~Q1u8:OлUnNP YϮ fғ4ЩIj=5(v.0sϨ'"jBCGI𡓑Q?,/]\c8SlX(;-ENѶ Sh]XAj7ٶuO q6~s2w}B@e B 8hVI|S8A5IX,&iLn93Y/PKљBm'lib/unicore/lib/Blk/OldSouth.plu1O0g+^ա e),HUZ)\sFELؒ-= H@֩/ 3FѸG zj͉Q]9U!Ҭ}[z1p:5Smg;b: ,|!&4 {:5"5n>&_?} "[{Rxm0UZNvmKP'tW8j7*sח/T $\) j7.^1I'{s;_.WzޭVPKљB|G_(lib/unicore/lib/Blk/OldTurki.pluN0)hKER)J6E$଑}{6d˻o|/B|u^dRQ)%3LW'b:R kqKԵ%]c%qjtK<1nl`g4-#Ox7֢&XDv^Vٮ\f}MY<}t#yC{ےxu,0E-XF5 NaB$nqo0DD3L;7DXgDƋ^R,+ٝNBΛPKљBdeh(lib/unicore/lib/Blk/OpticalC.plun0S h/傔FPG'Y[g]N[޾kw3ߎ1>-m4J,OPc 8KuknuTM<ͺ+Kû%ICh@x$cMr5_P4D4PKљBW C&lib/unicore/lib/Blk/Oriya.plu1O0g+L0ХUR)J6Ebtkcpv{.PĄ=Xww\B|u^dҿ(Ugu1yE}5|`8O5ڒGqҒ8Zf: wD.3NƈБ'|kQ Zv^Vٮ\f}MY<}t#yC{ےxu,0E-XF5 NiB$n87G sj",$[ ih&Vi0`8xb1tU\%Z}PKљB#(lib/unicore/lib/Blk/Osmanya.pluOK@x^ "K!)JZTIfV6މ.3o H@֩fqnm81E+T<ûrֳBY"?bh! 0tjRjvtG \73򉆈P$;Q|dd;ˋt/ئ5|?1D8l=nK5S-ZW}kk j-AuB\㨍]_>S%3N!MU4U$D(vQl$}d,4O&z~s7s2Z1PKљBwm'lib/unicore/lib/Blk/PhagsPa.plu1O0g+^ա TK"RVm$\ {輦@M%ҿ(Ec:%1L7gb:Pr5gS9O5ҒEhqR8Zfk( >t22jEWCmy" E}G9Ea 5X5ۖN:!qoU/_HSHzqM* Úz1iEumI~x#viIZ-=Oqy"XMDcDK> օ8QbU+WٮaaSsHh-޼;yñ= L%u:Bs z'Qͺ'}y񛣅9 5])bv44,~SxKRSօ8Rbe+V9.abSsHEh-޼;y= L)}w:Bsz'Aͺ#}k)2. u}hjUx)LDc%X))\N"ܫEr7Z$k%PKљB8ޯ&lib/unicore/lib/Blk/Phonetic.plu?O0g)^ա ,HUZ)\sFEL؃uwnlo IVxXeTh\}[[5DL (i־-=ZHC8 ԩ:]bv: ,|!&4 {:5"5n>&_?} "[{Rxm0UZNvmKP'tWZuc. ҄^A\ESJO jUƘHG$͓ɽY$"[PKљBjP&lib/unicore/lib/Blk/PlayingC.plu1O0g+^ա eaRJ6Ebtkcpȹ\ [b$i(=|j0Sqtwg1ݜ)ZU]"-W'Ci Ӑ:5V{k}t#yc {ےx,0E?X&5 NiB$n87G sj#,$[ލii)VE0`8z"Žʒ$\IPKљBʐ(lib/unicore/lib/Blk/Rejang.pluAK@x^-B@R qLͬl6jxrbs[I(6iHPSp2 o0ݜ@5֔M<-נKKû!IMTk鎮D3q?_"P54FԄ]'ĕ'Xe*B4pWTpEk1&0Idrof\ PKљB+T 'lib/unicore/lib/Blk/Samarita.pluAK@x^ RK!)BZTIfVv7jxrbs YW=yIPST 8KMgnNuԋM<-רkKû#IKj@x"ch:'#ZBGaEM.ĉ?켬]*v x< G-@#%oY`*鋾[;؍j=AӄHHqo0/DDwYH"E\RdzMa"ZE/J)OqYV{,*Yޮ PKљB@6/&lib/unicore/lib/Blk/Saurasht.plu1O0g+^ա P%DJ*"EiզHNrm nnQn+di^zE&BMQu&d,A^7a;בZXS/6_-zĎp'-Se|0q?_4ih y‡5'J eR` e?yY[ FnGͻ=ۋT}#4wbլ{8ѧ $-a_l;7DXgDƋ^R,+كJVMJ7JjPKљBZ)lib/unicore/lib/Blk/Shavian.pluN0)hρ^*%jS$Nm зgE%[|;gH(%$+Q>f;ǸeK>n5ih-y‡GJ L2&R0ɳ ܆śwG;8').NGhn@b7YwqO"q-4~s0z:"@2El].b8o /z VJyg,H&z~s;~PKљBli&lib/unicore/lib/Blk/Sinhala.plu1O0g+^ա ,HQZ)\sFEL؃uw}7H6(6%$+Q>f{n-hh-E‡^&F Lw*68Slcp,z =#ܖ[ h;g) ,7wbl;:ѧ노⨃PP-pYH6 jUx&Nиz 6D!2fi2[^-hmPKљBV%lib/unicore/lib/Blk/SmallFor.plu1O0g+^ա ]BJqD(I9#@`{M19-m d%4˵ 5E'vn-ݙԠj1}EMH~!8iH#3-(3V\`ԭ3 @Ρ"8lj?(}Ac[s|Hӈ=(8gwRLN,vMG'}$87s?T/TGD]H"G[\ϳMa#D/J@qzdR}I*UR/PKљB&lib/unicore/lib/Blk/SpacingM.plu1O0g+^ա QXHQZ)\sFs"&bs YW=yIPST 8KMgnNuԋM<-רkKû#IKj@x"ch:'#ZBGaEM.ĉ?켬]*v x< G-@#%oY`*鋾[;؍j=AӄHHqo0/DDwYH"E\RdzMa"ZE/J)OqYV;,d^+PKљBA$lib/unicore/lib/Blk/Specials.pluAO0 Wi]`ۉ Lj+*MݴuH[RؿDž!N$R"ϟŶD%,ߤ*ez'ٺuLwgbVAuwb`WHUlI;b -8VRjt' R/  Hpޣ"Ĩv^XoK)Sp,z =#܎[ h;)5 ,7wbl;:ѧ노अ9VzZ Ẑn!m4W$L)qQ:IXfiLe}2PKљBq'lib/unicore/lib/Blk/Sundanes.pluKO0WLC/!K"RVmIY#'샵o}ŶDd%ʇMQ1%5L7gb:RkYϦvfKԕ%]ä!qjtk<1ns/[g"BKnEE.đ?(}ʱK9"< G-@#oE`J鋾 jAÄH\KqoWTGDl[GX%'D4Ƌ^Rb$-ɽZWzVPKљBœ'lib/unicore/lib/Blk/Superscr.plu1O0g+^ա QK"RVm$\ {輦@M%ҿ(Ec:%1L7gb:Pr5gS9O5ҒEhqR8ZfkX;vlQlKIV|dy*lMX[ts&.ljiֽD]Yu-8LFL#`v: |!! ZTB)1Ί2txH-Op$ڢ4`p;ޝ^;ݠfĉ>Lĵ'ha}LuDt? u}hjUx(LDc%X))ZM"ܫr>Z,6Jj PKљB={'lib/unicore/lib/Blk/Supplem3.plu1O0g+^ա UR)U"1:ɵ18g8@=(=Xwwc~d|S@'i)cfZhluy[S5DLDQl9V>Ь}t$?oa$N:ӹ\`gT 5@Ρ$8ő+vz2l.aɳ>rơhރ?³; L!}ѷ&p Aͦ%}.WRecW",$[죭h*VI `Tr9y2yT =,ZIPKљBVO#lib/unicore/lib/Blk/Supplem4.plu1O0g+^ա XR)U"1:ɵ18g\{.Py|wSL~ @E-&Y1;`3Eٺ' zwnݙjP]]!Ң{[y1tp4ٞnDwq?_|AZ>8! {Tz Ί2txH-O!±Pd14bp;o1_Ծ;+܀މ5ntDZ'~XejBapW\3pE`cL$"cE2{0f,PKљBB9&lib/unicore/lib/Blk/Supplem5.plu?O0g)^ա BJIE*I9#s"&΃{~7$[i(&a(:c-ju!NaeUm+pgؔGa8gm1G-y7N^plSI_܂މnT D&DF ~s0~&"BE.b:o /z VJyg<<̲2ݫd$WvV_PKљB;'lib/unicore/lib/Blk/Tagalog.plu?O0g)^ա BTJ*"EiզHNrm o ٢ؖHDTWlMX[tw&.ljiֽF]Yu-8LFL`~: |!! ZTB)1Ί2txH-Op$ڢ4`p;oޝ^;ݠfĉ>Mĵ'ha}BuDtׅdغ>]45M*q<&1^{X&iLb9,Z}PKљBe'lib/unicore/lib/Blk/Tagbanwa.plu?O0g)^ա TJ*"EiզHNrm o ٢ؖHDTWlMX[tw&.ljiֽF]Yu-8LFL`c9|Aj>Zc-*u!agEu]q<'a8gmy7^wpl/SJ_܀މnPD&DZ ~s0z:"BEl].b8o /z VJyg<Ǹ/ tO4F{uLQy[ts"hTgxW-vu^VG %ICXٞDwq;_>n-hh-E‡^&F vE6ۭqg!±Pd14bp[o1؟Ծ;+܀މnTDZ~s2CB@e!B08iVi|S8A5IxxeE:7IrJte6_PKљB `(lib/unicore/lib/Blk/TaiXuanJ.pluN0)h\RRJ6E$଑l'lɖw3ߎ1^ M4 ljGa(j,h E»%NFF Hwrm[OOsCc֣h=^c8E"?+LuշV`ݠfԉ>\'ĕ>ͱ3U ?҄^A\ESJO jUƘHGb1IdroBەъPKљB653&lib/unicore/lib/Blk/Tamil.plu1O0g+L.HQZ)\sFs"&H7(74P={"E&:p4 o0ݞH-3yQזw=bG8ĩ2ӁnD>Ǹ%r%tO4F]0*v< &6^zXfIUFIPKљB4%lib/unicore/lib/Blk/Thai.plu1O0g+^ա `K"RVm$\`{M1= M f%ʧluk_j=LZ1Aub`[@-ʑCl qҐ85Ff[zc-u!ΔaUM]/qMč<.sChUx)LDk%X))0KdvnJ,SRQ_PKљB*"(lib/unicore/lib/Blk/Ugaritic.pluQK0ͯ8c{m"^Pui{FIRu[d 1Y5u4J,O~V1%5LWGb:RkYϦvfkԕ%]C!qjtK<1nsO[G"BKaEE.đ?(m̱I9"< G-@!oI`J; jAӄH\ -̡^'lib/unicore/lib/Blk/UnifiedC.pluKO0WLC/U"RVmIY#'샵o}ŶDd%ʇMQ1%5L7gb:RkYϦvfKԕ%]ä!qjtk<1ns/[g"BKnEE.đ?(}αK9"< G-@#oE`J鋾 jAÄH\KqoWTGDl[GX%'D4Ƌ^Rb$-ɝZ,WfVPKљBWJ'lib/unicore/lib/Blk/Vai.plu1O0g+^ա ]`TDҪM3 1a= ݠTҼB΋LLXn:ts"&#ϰ^ liѿF][0NZVL`c5_>4hh y‡5'J veR` 6e?yY[ FnKͻ=۳T}#4wbլ{8ѧ (-a_l;7DXgDƋ^RLg*[.ZIPKљBZ&lib/unicore/lib/Blk/Variati2.plu1O0g+^ա aaK"RVm$\dw}7wH7(6%t(=Y~Q)8ZG3ukNLVm-h*G#%NC陞nL0Od+>n hh-§u>NcgEw*Vr"}#6CO#)Y`J3؍j6AQ9Fz:"@2El>ښbz  z VJC`,3]G$ST7PKљB4%`$lib/unicore/lib/Blk/Variatio.pluAO0 Wi]`ۉ Lj'*UݴuH[RؿDž!N$R"ϟŶDd%M*ez'ٺuLwgbVAuwb`WHUlI;b -8VRjt' R/  Hpޣ"ĨvVXإCm?} "[{Qxm0UYNvmGP't;*s?T/T $\- j74.^c",-ك٤>PKљBm;&lib/unicore/lib/Blk/VedicExt.plu?O0g)^ա BIE(I9#@`{cs$[i(6YJPc 8KukuTM<ͺר+Kû%ICh@x"cOr_P4D49ÁQ=Jagytab>BGр=m)zpE`VBor z'VAͶ%}N+-:ͱ U t iB/ Z%'M`cL$#~,"Y PKљBlib/unicore/lib/CE/N.plun0 @W!خ^IѺvTl&fKlߏL:T_(-\T;u q Mo&8X|D^`Oִ#»B't'o',dw1}Ҟ="z0apS$z[y/5춛o}p 4!=wGGpv8S3 hBK:m@&c:WGSiDSޝXLwK&@g<ݧB-<>m5"bZQ\*:(Ԕmɔ2DQbT)=,:Ւ^iĹ4!JLSTeS$ʩs. ,+X&Y&Y&Y&Y&Y&YV\,U*R<ļ ZĢu 5נJhJڳ̫$JbEK(PKљBy$Hlib/unicore/lib/CE/Y.pluPn0<_Al=bH0 QHIkDߥg;nS %Pݿ@?TW[{9Yh{a lg%[m~aE3 9!MĄ $.+PtWt=rAdo {c~/%o>kRY4J 0ObpOhiň:GaA*J4 ɢjpƿ{e;~z-(.)NŌ1v6 W呯0Km1#ƹcU0"IV8VBHH_ŋÃiCa@}ޗ{_}mrNU6yPQJ,:s\ZqHxXXXX|M/=/ w!?PKҙBx,84 lib/unicore/lib/CI/N.pluMoүbsIvEQId/Dx9m͸;h̿7)LU|I~7 C<}jx?C}Dp||_| Zwu9_]Nmly ^ 1zӰs;NOm u;=/tw=^:ẫ8^Le_NO?}wßnddȷY DYTLɊr&MuZgE(n|~U 0n\cDa>ϒ[cozk\r#2LZьuЊuW35ܚڍn>37EB\"Uƺ\ "zOZ_2$Ya3+ seaoaea5z!$x%eE,YYb+q7jh7j87 "bą9v*jfRb JAx(1+D %$IHI$$IHltN3+Hڇ$ia+ C>$/),e>CTISeˑy^DJg%J,K~P9afjY+(ڶ"E22+W2_dNA)EӗBj vY4֙KWzzuj RVGi[ Y[#Jsm~5mr7n6{3ZC5 Zĥ4 FpK @|" j j3vgb!"+ZD 95-d'PѠ(cD͌YN07aBzb$!g(w&z7r.1$4moVsk,bT!jcTHU0beG/En QiFF⒚]HNQ\z*r"*Rݥ;FTْ)Eώ ʙ침NaYi2iLQ|YTU%0)ŴDDKi-Qԥ/ӪHi[Z7H8Q& MhyQ)biЪU>bB3`ߧ+נP,juO, bBbK!Bꄏq{ !ĎVa(CCAl uq4sY87cj11}\|NWTĵ6M[Evc|nO)u;neWa;7_v 3ΧGuygotiA'W*zΛk8MNO#WMxߩ;SUu9xA=?m,}{TvD8zwBe; go.r pz鲿^#T9_]EGq|To߾O4n%2DEU骉JkWn4iiq+[< /V a 4ɤJdLZI$MvB>;- MJvM0b]7 C)HMi-jA4"jpMV5 HXPPr] Kb)a$`043b IJ}&J3++ㄡdgWVGDBH܈v@h,Y=edn0az$RϜi_bi]I⟌5&1Y yJR)hr^-ɓ" ugc@Ƃ&3L~Pr]e gNaeVTXQ(QP)4z S\]p*k>8)2P54 jNm>u%a!ylH+ɒ)l5fhAOsLe&9R EV Hd9I!V[RC誱z1iit!H@#P/e C\~J!C:1Ƀ);paICQc(Q²A\PsWXij2 Ҳa0JdQpjAHѐ< }OU*J* Yy΃ "eڑ 2\<$ C`y1TW*45^Kp]tmx*BJjV@84;sh@Eg+6YA5Q! M㌕r('sFObŷ)‘kLÂ(h \WCJ2QAhDRrV\ ʈɢu3e$sm$<8'(U5‚*,"z  % p PCHot|||\_~;Ov/++Q3pw'g! ~  HB Ґ-p -p pNi8 43p΄;ye*7{D#HDee嘣c98=I9\h'N{/_AEno\$Oq}:]|=>?P|pVqEĻ^.'Om~率>dq%܈Խ4(n?zk[#To2Mp7Mpg,pY8 spnA Ґa$!ˍ\:+0W`\5\p.E"\Kp .%٩)-x%o=flڐE]LΫ~ˬkꆸYJf̬}tfYz.8uT$m }魪jV+е %,Xb %,Xb %,Xb %,Xb %,Xb %,Xb %,X'ek8ba%r3y1uSt1usVWi g-RdB\e kzK6Y.Qݶ2hcg>;ٱώ}vsC}KPh.|Hq{rɱ'Ǟ{rɱ'Ǟ{ )'Ǟ:\fQ@?so˜ c.0-p {3\pgW \+p`-N IȂdo՘1Wc.xxxxx7p{b} b} b} b} b} b}p$(aʏF~N^X#To2Mp7Mpg,pY8 sp98>I%uU\նmU۪5el꺶 7~,_V?Rm *!nW׽|HCW b!zu)Hi/n;">kLvE"2#Hdan[n[2\p.e \+pW*\pU W\kp 5:\Կq{SX#To\ p."\p.E`f`&Zn; 9mC"yoTd,9p&ʚ(k&ʚ(k&ʚ(k&ʚ(k&ʚ(k&ʚ(kpiA nQDUOT=ts2Q !(nr⦴wt3qum۶/PKҙBH6lib/unicore/lib/CWCM/N.pluK8+nEof%clMK(Dʒrw1Cs!ѬBK>_{}zMG=){uC#Ms~Hts??ӘnI':8埥; 3B9gNj5A_|7Bs7>'^DaCa.r>|ܹ>>Ow_i~\/Bx-$BR.i<'~at\h~XmqZczvuB~F?|Nmk(t*Pd j*jMA*BUlJݬ\5LJa-y" )R C *(&nrue%@dk0L[oŽUb5a48r@{ss\1WU ),cBFm6YoD9J+rZTM<(kK(%K/KPZ(|cLQ 0L" GafOWqM* w5j4& e[ jK&^j6B9T3y @ -@x_Lsuplpx%Yr#6ћ`oDŽ\3[YeR1wU@3RΨ .UfZj&|!96b#$H,FY13G<9~PKҙBƐ'<lib/unicore/lib/CWCM/Y.pluK6֯AiQBD` '@+@ο9]x?ཤVެ}IwxEC 5"y+SNC9e"~6q/?nȘƋ̧(_9FT:vu|ӵߥTËN1)NQgG9M}ݵՃ|j??/,?y.24K7K7%c]Rq8ӡm=fׁ0|o ;p7/] 8I)ηiڭ#ISmVHl`ARe%XJPрT"1+PU*RMYc6RiE d $G*l<]^] QyIzZP(Hk)"Z`6'PNr#$L| b.*R 8]eJ<[P@:%9RM3Ʒ XέI[^-\U&w<N)Ae CVv"rxY~yp\_Y\_v!>\ey|z}uM՛7c}y<\obӶxy~\&V_?,^rg.<]r\k/ܞ|m>_t6gp[><<>Nϗ7?sw>TRyHU$SΌ5TըLYZiӴ4MCNjc"&a2bf:ZWn[Vn[sp98<NnPq`:afGGf$2Ȭ"\pmpmp .%%h?cv/-ޤ2ߝiYIaԂBRԹXL+#Vְ\VU77XcƗ5o6V3μ:Fg;ؙ[0;AAAA1;"wD#pG;"wD#pG;"wD#pG;"y"::Kv__ij#]EO2kݔiiKy\ym ]**#͚MOlzb+6UdST3| CPN7e|MLxbĄ'&<1 0;<(g l l l l ,O`yغ!%vegS4Za962n3n3\pP8&Bc_W*\p#T8p8LlS0Fa[Xc@ 1@ b @ 1Ha)")")"")"")"")"")"")"")"")"")"")29zmM훔yKB:G)sS*m&lgz"D%)m֨_эT5enqj:QU5j[*6S)#ΕM3dF]7v')ln-涘bnis[m-wֳ݊BPw*S~ZX^S'j夢pR6|&iזxmYH;R%}FDLdL4p+ ­p+ 98spoy8<\ p.\p.E"mpmp\Kp .%p;p;\p*T3EBB ( P*\pU W;;\kp 5:\pu܀pn TX:pySTZT#s`uܬc:ϊ0av yN=TDSa0լ9S pѭ[SnM9byzƸ;]y)~YJ™NjT UCuRv׼'3nޅn=ӬKKn3G9^r%'ӧo4*ɨ)QLS{W'NM^IN'})J4Sjq(1Ècm3SQ04^0*͔;M3DLdL4\#e 2\pW \+pU W*\p;;5\kp u[^LtVM;,Ջ8#:t8'Y'SU3[lRrCj=KbU_*e9]TXEbnQMoCSc"&a2bfL"\p.Empmp:4˖l;0;3X.e8lIn=inzɘi!a<0KIIob}X&7Mob}X&7Mob}X&7mpRTO ?Am)b{ d)l@YbԼmxUԘzgȦ vo6SHN='sHari9P NѼ|7YJN|v>kcaDU)'/Ɖ!޶уJl <5y+g"Ukf8FrꨋSHt_?5ǛvPKҙBj lib/unicore/lib/CWKCF/Y.pluM; |Ii~4_&$Ö丒Z&`vD>oQS$ͧȩ"~?4ӫoV_oSۈӛOӇc|r\oO_.O~x>}nw{zv|aq}~xLˏg|:txq==<>NoI޴__/ח￵t.z<l[/qtyżQM"w6r?>ך6ݞ ۧ/t{xw(Wm6j&>Nz~9f|3b2b0ipVSTRuy>af1mnfnf8sp98gL S05*R1 l9sD戬-DS z֓O3M5NGev|6gQrM:+N+>H OZx“'-tDLlZU2We. 4A iH@ 4Apuf,Edl"YD6f,"Edl"YD6f,"Edl"YDQ%;5*MǕ%pFf1G1aѦF[f~:?s0_1a7#muݎ}oox ={؋yGoccm|z.wji74)j) T\SG`-Ƣ-0`VL6 7p3 7p3sp98py8<\ p.\p.E"-p -p \Kp .ZKp n[Vn[Vn68j)FeFeFeFeggggW \+pnvnv W*\pU\kp 5:\pmc/*JϦfgwyST0ez,,6jicۙm&aP#5TMCӊj3bGG5ߍNMm2iT6e# S>bE5?lR7 ;Y*զlmO7M%Sl}͋WΙ ؠk>Ԍ_dRӅ,̡-Ҿ>_V?^KjJn']q5w T;r H^ڵٻ}62NK00S8i}l/2uCfa}}c n6 n2\p׵g \+pWvnvn*\pUo5׈suume$qɬwjjoG}Yw!^)5Kʙ I*JַRYzo|識Qaf1m"\p.En[n[V`XV`0mp#Csֹb2f gx<5DXaM5DXaM5DXaM5DXaM5DXaM5DX!S0NM"'~Zaw @Y֞Raw֯BM6e7dn^o9k\ԜLd:=;SjQ0J_j "UOǟ@Sbt v)eTn}]۬U=7tXuRzj[=Snw=lwxt^jlJU ZMkk}wD8'EpI<:2`}> l 6hcRPv!k47Ch}yzzclLRowY3jyhF2>E_l1eE-Qe_@6Ϣ<ԇ^sh7^<}PuXa{1'Wwa谚CGNtݲm>rTnPKҙB&,lib/unicore/lib/CWL/N.plun$ꧠlw" 0 ˖T3ZI>YEot|||\_~;?PrpVqUĻޯgO}^{犸2ĵpw7eHÐĕeo$!id[n[Ni8 4p8g\tMшE<i:Lg1c:te:py8< p.-tYx]]"#cD%;q;%iOe:13HWfs3,TPB ^F\VQ+KX 1qQ|6Qb;,S\v/cVi AAAM& (h& (h& (h& (h& (h& (h(%MWig3-cYkιs7^gM'2q `bA6ҤmMֈl]l\tۄ50vҰ4a' ;iINf2rm.ʥXh %Zh %Z` %\tܦJ6r;1lbXh&Mp .NK:-.e8j3\+pW \ՈE<TD?R7j՘XXXXX7%vkK-ڑkGvڑkGvڑkGvڑkGvڑkGv3N'_ݲ2 N\ߖ(b$!id[n[Ni8 4p8g 3pY8 g,p98spy8Pg cα٫ 5t2CfJ$[cn )"?O!~vPKҙB풰Rdlib/unicore/lib/CWL/Y.pluMo#E(Ë$6`1l@3b"E%(#Nu6Ƙ~33wY>~2>c{:/Ո_z9\Gs<|;ΗǗ\ϫ>7Jvx]d~_/gL9}3OUx\zYͿ~5w;Yx{7~-O_|o|/9tx6o[zy6^/|z&qrѬZO>^V#+9^Ӄ\>9ׇoHt~z|Xẝx5Nj̗we]N槟>/O7}(^\zV7viQG"4dl2Mp7Mpg,pY8 spnF*ґeMg#F6 l8` p.E"\p.%iJ:-qoYZ:e9@R7ꆸy7;u^Λ[ĕ k[tB} .nYU=FukM:W6/-KM/NOظF:tbStЩܠrSN=ܠ⃊N3=[`E϶0aͷDKD,DKD,DKD,DKD,DKD,DKD,DUu]+a% 8Lǃx"]~y0].CpTy\q@LG3t4LG3t4LG ݒyݢZ䦽y '`z '`zs`z\Kp .eQ6smf͙5g֜YsfG@=8B \pU G`}o &u$dF*w٫tyO=tyO=tyOn#Ξ8{s ΁8s ΁8s ΁8s ΁8s ΁8%|ÆtE<!c n& n&8 g,pY8sp98qꬎ9uNWj70T#&QgEeuY]QWUukꚺWqCбEvVGMXe}?[}׷ 4y}f2T="2u<3="HA26xfnfW \+p W*\pU\kp 5:\pu7(E,⑈d \ p.E"\p.d 2@p3 = %m9"yHA-p8@YeM5QDYeM5QDYeM5QDYeM5QDYeM5QDYeM5E4#71QDUOT=e&J9w(`вfY\~:MqwPKҙB&9 lib/unicore/lib/CWT/N.pluMo#hÇ$6?ZÖHI+&PTAN]S]*71Y{s珿"oOoe5b_ϧǯyoyf^N?OoLJUܞW>yZQ?׷lgL93UxZz]ͿN//a5/w{qc_~+/o.ݧs\|[y[zz|579̽Ofzw||]xZ}zGy}r7s~!~3 ᶝt3Ou_槟>,wßxE(/FImb<&b2`f7Mp7MppY8 g,spaVU蘱?a&`g/^{ +p\p.E"\Kp .%[һ%[d>[UQ'YUUE͓٩tݜUUU]U$S >-골T-GN1I'u-tyMrqjƥj|a/ug \Bp.l/p` mR,bKX*R)JTR,bKX*R)JTJJ,UbKXR%*R%2TU] Q(K!X a 9o%eQF=!n%eHXum}qtUT-ԡ&դYl5v^XuIQ3NjF**ĭ#\2SLLlwd#Y*GV9ʑUrC9ԻfIլJ%IuViv ]xڅ'viPziv\Kp .eE3gϸq;vn+ptOW*\pU G+J|T9&&afLlw٫)IO xR'<)IO xR871111111111_qL>srI{jI=ePXDLL,+n& n,pY8 gsp98~&6o"U5;QJjz_Um{rxS_U^_z_gM?O?*/m<^op>)$*Ou.W^VWu<]?}~n|ROs9_t]/Qp?UAegk=vci*i?o_z]Hnq}9_|=nqF|jĵq&>Ya:;;DSB4)M!h ASB4)M!h AS T4Mh*@SdFn$&ѵe#F&aa|~BAk/բ}m n"::.bn IoHzCP#OoҶɒ fibIgVvxS Rt1$!i IcHCƌ1]c#F['-R Yd)sK[e)sK,73m pEs=x3gKp ``3\pt \w8-p KF,⑈ddAeĹ⋗-/oyy[^򖗷mp KG簷\sX:s8:s8:s8:s8:s8:s8:s8:s8:'@ @w1e@綝Q  HB r&3 7p3 7pNi8 4p8g 3pY8 g,p98spy8Iykvba1feeeǬc~X~XaX78Q= + ++ aamc﫹KϘZ2X^ͰXcmaAA1Nvl&LwbѱӋ\I/ՀȲɖ"~X$ )HE& .%\Kp.e 2\pW \+p -p -pU W*\p 5B޶GTnE ␀$ 88spy8^,KA>a'eU8)2zS$jz7g{5E_?̗jľO_z='ͼ~|?/׿ߎ/˫=7}򴊧<;0Yo1<>_Wi5u5:ռ\n~|2?/|2wr5m/mc~^/\/02/_7s,MբjzTӚtB]עJW$7D67yS7!  [8©"" 6C9܃Ńc[l)KXJR"D,%b)KXJR"D,%bDd`(KyXR򰔇< UUW%n+U CT;*R !`XB[Iv(oF=!In%eHXum}IntUT-ԡflYil5y&u^XuIQ,NE**ĭ#\2SLLlwd#Y*GV9ʑUrC9ԻfIլJ%IuV> Ox'>Pz>\Kp .eE3gϸq;vn+p OW*\pU GC|T9&&afLlw٫)IO xR'<)IO xRGnc<=c=&c=&c=&c=&c=&c=&c=&c=&c?Á@ }!伓2UMղ{ˠ)Y6V 7Mp7Y8 g,p98spy8UQUT:L>UUgbȄ4TXtE>ePX$CPO-pl OaȷATvN4dNmrۂknd*mbfLň떬(Iu$*+e)Y6enfn+pW \pU W*\kp 5\pu:\[ECTU }]C^\\?eеb<&b2`f)\ p.E"\NYb3f a2L0ffN$DaOۯ)%5A`q0f%c1p7D|M7D|M7D|M7D|M7D|M._2T&N,2. "aʠgyOI]RQU@ H)B*lQi7dE'ҔnoQB1헻PKљB"08lib/unicore/lib/CWU/Y.pluKod5F_ab6<}?HNrgF0=X ۧl× QJj흺O}db{ڿâDwO帜wQV|ewX8iQ?E<=dn|~Y/QoRY=<펟㢞~Q勍8ooڏ~|~~s}:x,qYQ-.Gq7VwϋOr|(3<\ttzXWt|sYOYƛ\^Gom}fvX܈.݋f;m15m ␀HF*W& n& npNi8 43p8UшE<"ן<,e˱c/^gtpy8:ԁ4uMh@S:ԁ4uMh@S4)Mh @S6rYm岚<GGd&aat~ 󰮫8d|X&qQrAƮ 9oyC cW'&I:Ē4,70f" ycCƐ71yc\ǐ-Gd]eotLK[d -Un -rcK,.H"\d.2I3>gnXZ & Y`3]%lшE<D:-#Ε*{U[^򖗷-/oyy[^uGG\sX:s8:s8:s8:s8:s8:s8:s8:s8:@ @w1lf@Q  Ȍd U& n& n4pNi8 3p8g,pY8 gsp98=t;K^ɊB ݀*&jcjk@d$$YZmVlȦΰ _:BRnY+djdٳIiU|'EYW۴D]U6 ~)mm&:hL1LA 0uL){=ŞhqtI gjt2J Pgy2q4pzXӃdaC.ZgR"R2UL >oHCX$K)$**]_:  {3rJ&UΥ(qɁ˶z4DŽ|*sUrWU06sFdp0ps8 5(4Yp(d$l,JDbG+.NNGUWuSN$.&M6nvV%E)zbmGu.ݦaUѪf"y0UêfoMZTzUi[nϭxrPKҙB^ҭ4lib/unicore/lib/Cased/Y.pluK6ү`lDl(RDSKR!kο9tj}R^}I<>wbW#bwy:'{iN?9㖎b&<5}sBƺ\vJ=DŽJ~:-*|p8%1SZk:>rޕ(ˣ{/A<=>s?/-xı9紞7 ˸q>gQxIuKpgo鰉m!b;-m:(nSL8N+Ѹ,5m,>}OeUiYTq KjHLon+I${ޓ"뢪;Ub114]VJꪁEHԢj߄CA(PlJt|SQؓ1pwmJY7 (`h9eK ijiHo&La`^zK! D-@odFdF7ZV547ZJ& @BmoAU]S 4dEw*P,z@۬}=ɐqXz4:ԦtVW6ZRה5-I"A:P=a @)dr M5YWZC栍&K<2Kk9˜c];rb@+gx #Hgf=XϨ>@֜mcf*- ֱu-S>=m9ܿYefn2-eev}MƏk_PKҙB;3W#lib/unicore/lib/Ccc/10.plu1O0WChBJ6Ebtkcpȹ\ {&@dllj0ptok1])Zޕ]"W'C iaR:Vg+j,i E‡%NF HrM]aKWsBc֣h6=b8F"?)L}շV`ݠfԉ>]'ĕXe*B4pWLSpEk1&qw7MdzkW|PKҙB)%lib/unicore/lib/Ccc/118.pluAO0 Wi]` eETi8R. CHD?195u4 *Ya(]'ĕ-α U t iB/ Z%'MƘHGb1Idrgͅ>FcPKҙB<$lib/unicore/lib/Ccc/12.plu1O0WCh+$X`)JjS$F'6猜 n IVxvxV 3AѸ j员Q]9U!Ҽ}[z1&5Smuf;lX UcHCDMh(>( >t26jE͗+l ]uz" E}G1Ia 5X5ۖN:!87*sח/T $- fj7.^1i'[ PKҙBy7^%lib/unicore/lib/Ccc/122.pluAO0 Wi]` !ˠETi8R. CHD?195u4 *Ya(]'ĕ-α U t iB/ Z%'MƘHGb1Idrkͅ>wFcPKҙB<$lib/unicore/lib/Ccc/129.plu1O0W<ԡ e.HUZ)\sFEL؃uw}7lo IVxXeTh\}[[5DL (i־-=ZHC8 ԩ:]bn: ,|!&4 {:2jE˗kl}M~" E}G)Ya 5X5ۖN:!87*sח/T $\- j7.^1bW|PKҙB~<$lib/unicore/lib/Ccc/13.plu1O0WCh+!X`)JjS$F'6猜 n IVxvxV 3AѸ j员Q]9U!Ҽ}[z1&5Smuf;lX UcHCDMh(>( >t26jE͗+l ]uz" E}G1Ia 5X5ۖN:!87*sח/T $- fj7.^1i'[ PKҙB0y-lib/unicore/lib/Ccc/130.pluOAN0<7^8TJ*"EiզHd5r6@8aK^{g<3;g778-P<{,MP4:Te>S0B53-=bJG#R*F1(t3ng Ϩ',jBCaCIpqӼHv*6e8lG`Y(q;bނ?³;kBop z'Vͦ%}N+}1/^^lE3=O;6(_( $}`,$b}w3 e5#BF_PKҙBf3t$lib/unicore/lib/Ccc/132.plu1O0W<ԡ  tTDҪM3r.@=(b{~1~d|S Mc*[ڿ(E:'ڪqL7'bVFywgWHUlIBaԤNՙO;wӹ^`gT 5Hpޣ$ɕQ?,/]\c8SlX(;-ENѶ Sh_XAj7ٶuO qQ9V|J Აn!MU4U$D)vQl$}d,4O&f PKҙBg5y$lib/unicore/lib/Ccc/14.plu1O0WCh; ,E "RVm$s@`{M095u4 *Ya&(j,i E‡%NF HrM]aKWsBc֣h6=b8F"?)L}շV`ݠfԉ>]'ĕXe*B4pWLSpEk1&qw7MdzkW|PKҙB5#lib/unicore/lib/Ccc/15.plu1O0WChJ6Ebtkcpȹ\ {&@dllj0ptok1])Zޕ]"W'C iaR:Vg+j,i E‡%NF HrM]aKWsBc֣h6=b8F"?)L}շV`ݠfԉ>]'ĕXe*B4pWLSpEk1&qw7MdzkW7|PKҙB@(lib/unicore/lib/Ccc/18.pluN0SLC/D/)J"qtmcp}{6P x ?@F.i!}}%?9 v[GښLb FFyg[@ULHBnPjҤڨf::zlXUc@ÈP |XPdiv6_e$ <{{, 6}G!Qa 55X7Ii;!WwQ/_?-[H{{4*( >t22jE͗+l ]uz" E}G1Ia ͫ5X5ۖN:!48hwU/_H8/[HzqM* 2I';3gi46_PKҙBpF#lib/unicore/lib/Ccc/20.plu1O0WChKJ6Ebtkcpȹ\ {&@dllj0ptok1])Zޕ]"W'C iaR:Vg+2I'[30Z/PKҙB)#lib/unicore/lib/Ccc/22.plu1O0WChBJ6Ebtkcpȹ\ {&@dllj0ptok1])Zޕ]"W'C iaR:Vg+ PKҙB =#lib/unicore/lib/Ccc/23.plu1O0WChKQRJ6Ebtkcpȹ\ {&@dlUNQ u8:OзU㘮OP yϮ ғ40Ij3(v.0ng Ϩ'"jBCGI𡓱Q?,/]\c8SlX(;-ENѶ Sh_XAj7ٶuO qQ9V|J Აn!MU4S$T)vQl$}dO<ޙj42Z/PKҙB@/$lib/unicore/lib/Ccc/24.plu1O0WCh , "RVm$s@`{M095u4 *Ya&(j,i E‡%NF HrM]aKWsBc֣h6=b8F"?)L}շV`ݠfԉ>]'ĕXe*B4pWLSpEk1&qw7MdzkW|PKҙB(m$lib/unicore/lib/Ccc/25.plu1O0WCh+$X`HjS$F'6猜 n IVxvxV 3AѸ j员Q]9U!Ҽ}[z1&5Smuf;lX UcHCDMh(>( >t26jE͗+l ]uz" E}G1Ia 5X5ۖN:!87*sח/T $- fj7.^1i'[ PKҙB(]x#lib/unicore/lib/Ccc/26.plu1O0WChaaKQRJ6Ebtkcpȹ\ {&@dlUNQ u8:OзU㘮OP yϮ ғ40Ij3(v.0f7z%Q5O4DԄ"yC'cY^|6ݭqا!±Pdw4`p[o1m؟о[+\މnPm DJ~s2w}B@e!B 8hVI|S8A5IX,iL6 PKҙB,$lib/unicore/lib/Ccc/27.plu1O0WCh;.%HUZ)\sFEL؃uw}7H67$+PQ=Jagytab>BGр=m)zpE`VBor z'VAͶ%}N+-:ͱ U t iB/ Z%M`cL$#n,7|PKҙBb$lib/unicore/lib/Ccc/28.plu1O0WCh;.T$HUZ)\sFEL؃uw}7H67$+PQ=Jagytab>BGр=m)zpE`VBor z'VAͶ%}N+-:ͱ U t iB/ Z%M`cL$#n,7|PKҙB#lib/unicore/lib/Ccc/29.pluAO@x\HZcRvY{a33oflo IVxx6 3AѸ' j환Q^]9U!Ҽ}[z1p&5Smuf;r |!&4 {:5" v~!6<} "[{Qxm0UZNvmKP'tWZtc ҄^A\E3JO jUƘHGj5Mdzo˻d42Z/PKҙB`(lib/unicore/lib/Ccc/30.pluAO@W<&ȅ56i bqtu;kST1=Lv7L09 M$N ih&(hAkk2])ΖmW1#| iAIj O:B/35@Ρ$88Ҁ?4/]ΰMv<{, 6}G)Ya 55X7Ii;!qTwQ/_,[H{{4*2I'{3_ݎFF PKҙB0#lib/unicore/lib/Ccc/35.pluAO@xNx IklB bqtu;kST1=lf{L09-m4 &Ua&(2I'{3[,F#PKҙB:nFp#lib/unicore/lib/Ccc/84.plu1O0WChJ6Ebtkcpȹ\ {&@dllj0ptok1])Zޕ]"W'C iaR:Vg+}z;J4M\܃ Ranٚqn:J:KPJ%դ4U$Ԓ:mf4v 'SӔɒ'7 ߒ:P@:PD6O99<'$Cr7YmoEyoj޶ۄFJ$ [$YRM*KMyռ^W!TW$CJ(J̥-vn͖ Jtc(Рolt%#9R -FդTנ`@]fglx(Z "W\e JNHpr-7w!KM]Jo+-wX,W_45$V:/ T ;lذɝatfI~xW!}[)H -5]1l`'#- BIiEF]%$|M]aNV/s@ESSm[{wc{TE_XZ5 Ne@ >Z&{< @2E(].b93 (4VJy gf8j4?v:jKGm=Rߢ" Z0TbdyV)66~c/s@ERm[{wc{\ot A,vuC'2m .qo-mWRe "Ԯ `LI 4VJy g,8jvX]ݫy% PKҙBAe'lib/unicore/lib/Ccc/ATBL.plu1O0Wu-BKJ6EbtKcpȾ\ {|wb[Y(M#lDkAԝe>S0B 3Zb*G"Ґ&5F5 On`gԝ-BGaCEp>$р?(}`782lܭ,8 FnG-S0=<”ZWo;ƍn6=AF!Ҫ(s/A^lMsJ= ԯ$ $C`VHgdṇO PKҙB|1lib/unicore/lib/Ccc/B.pluMo@+&6a2,_%ˎRGl -,ղnߙT=ykp۷PWϛWh6ۚ=yH ?^P pq8<^p5>NMw&<޸rBt-^YA }.Gzq8/Χlovm[x_Z~Yà jՍp]mg#Ewj?u:uq&ڄŠ:Ǚ r=|ã3_naj@f8f2`4h꧃}hZӪUO~ԣ3Da@FL)SNED(^<WL5Q O$ܗH?Hry,Š = k&ie’&G!e*]RGNe 'rdm)8uYil-cYRAD#2k"k,%O c ":Bʚ͊"e뢬BT25DֹЉtbǪ :sRz_aQ|)Zn FnX,dΤ§PKҙBġ$lib/unicore/lib/Ccc/BL.pluAO@x&(&@Wf;UNff޾ H@S_fqmm81E+T<ûr޳By*?bh! 0LjRvt' B/3򉆈P$|8Q|dl;ˋtئ5|?1D8l=nK-S-W}kk; j-AuB\iqoU/_H,[Hzq* vwѰ!Tc}Ge+tO)As ʠ4`p[rΞ`ٜ;Kf$>ĵGQ`>$]LE/(rzXiL*DDj\,C%PKҙB52lib/unicore/lib/Ccc/DA.pluOO0 ˧x LJU7mǴ@4qa8hl#crCƒ(ymZ%6Lgb:P5żcS:O5’A ǡR8UZj+5QjOc- um* Nj,i E‡%N.agyn t~b>BGр=m(zpE`RBor z'VAͶ%}N+-:ͱ U t iB/ Z%'M`cL$#cy27haPKҙBϙ&lib/unicore/lib/Ccc/KV.pluAK@x^-BB"JZTIfV6މV< ̛7ߌ19 M4 :Ea(]'ĕG-α U t iB/ Z%'MƘHGr9Idronŕ>+PKҙBg%lib/unicore/lib/Ccc/L.pluAO0 Wi]`@.ډJS7mǴ@qa1F?@A)&Y1cS_fqom81E+T<ûrֳBY*1p*5Smf;tXUcDÈP$|8Q|dd;ˋt/ئ5|?1D8l=nK-S-W}kk; j-AuB\ip]_P%pYH&*Ux"NPzl$}d,4O&n~^2/PKҙB:sJlib/unicore/lib/Ccc/NK.pluON@=ۯx ȥ5Bxܶ]VO^̛7o@EMG&U I*c%Rj;&+.P24ZҤzw"STp%v bBpOt4y)$KJ!#(SI`]xM6> Y-mYkVT0Z]8LuWAIZ[֎tč=3MF3׃ WA'sUdu)C!-yy\c5QDG_V77 aAς=[ulZgV]1XM0`dkPKҙB*Zlib/unicore/lib/Ccc/NR.pluMo6`/mBD5`A)Уvݕ hSTyP‡%Bf!rSL 4%Jn B+oGxAE.l$ƙX.* {`b^Hq$$v Ii5 틂'PKҙBVlib/unicore/lib/Ccc/OV.pluON0<_1^x\1R8:ɶ186rϚ8aK}̎8>5u- {,W?b8jY*Pr˓y:i_* w-BCxXV\S|xHU⊚А'kcP`?˼<]NnVxX竧}oU}Gv4wGջW-5{6Sp[l z#r۪J@ǖ {{򙪀~>Ŀ cʜ/:֞ySPBӄa.ipa.&l0L#G2g,4+1EƳ$BPKҙBJV,$lib/unicore/lib/Ccc/R.pluAO@xp IklB bqtu;kST1=lf{L09-m4 &Ua&(]'ĕ'Xe*B4pWLSpEk1&ZM<ޛEX&|PKҙBB}lib/unicore/lib/Ccc/VR.pluAo0 ѯ`C.[kY`Ȗu(L͖Yޖ_Jl@D>M@:PC ǒv u&88ʶW?^P;h0~֪5N6 kFp=«:u+I ~R_Џz0@00j/|>K Ƃ>~Zsr+NQ:y#u?jr[g;GRinch כف6NxGKR(1ne%Y[łPxTyTyTETET"*Qp2 ? itpnPfb7GŜjAGVbH6wݧ,Oy^0gޚz{PKҙBOZxalib/unicore/lib/CompEx/N.pluOo@)&!6SsYXV9QTۛ/mIS4ۙr1?"beu,ײ|kWwGyz'ȇvd&}9n;}j7C8d;yib=ōn]Gh&}_9ٻɯeEc/WqyFWw_?0J'7ql^~dYCG;q?}{p';No i1涓Lpi?&m5௦$nD=6ptir{{լէ0DIb(Y `J! (?!YP"42Cci*iX6tB)%場5ɐ`Vh&v $ji JRF*Hɀ2Lr no|N%" T{I+6Bx)S1'=zN z* j!YP]깶Q Pk5jY@vvY(RU"䤒T*QEPJ;!:jR )/H,YWuX#$6+6gdt`xl",,$fNg|א9-1K|&@ٜg\8ndy`PKҙBőY4lib/unicore/lib/CompEx/Y.pluRn0<_A"$jp)Уlob2UPt}wI=fR5\pDkG!{MGg :9Gg3<#~'NlNSh)ݶ?!PfvOWj==r!?Ngvo)JMƇ)B8ggFo'EHV9T]$ rRjIJ)V[mGMBб ]I$)*PE#-UM::2!X-Ba!5Ġ61AISHy2Rb"@]\u:2Zb+W !ec4M)2c"jNdy$ZţM0L,RIuIezbղ9gTjV< .]]`dC> *gUXi!JXq.SߑT>.PKҙBESlib/unicore/lib/DI/N.pluOn0 =[_rZ)Yŝ%,@;`Gfbm4N|||K((tP}? qs#N'=ئsޞSZkB[uO<ÀNKZّ3͍LQ$t}Ї1] g{_VxЏEo{L#Ͷgs{| &X߂~g@`%DljX|bWBVr#9E{mNխtv K^jPatu1X];O[P!~]b!VjTOLbq.x+{D*{8! 1$aoۛj{ӣĮؾ{< 2z{9ߩeYVuVdkbPRׇuCuAtR0σ$oq}=E>J$jčdX#1h>7##4'L#fb*b-g鄏rL,z-6PKҙB/Xelib/unicore/lib/Dep/N.pluOn0 =K_rYS C,@3`Gfbm4rEOGJ|z|ޣ(#6]/ y7#N8퍣39 :Rkə~EX=:RGFs(mݙ҈S <kd7۪.bCľx)8m1l's ?=;{a353u'r,NV?fZ:Gqj~RBE|4-Yj,sa":σge}CJ2B-L2 ɗa%DJXE&>L-?LJdd*$$f^lRRb6ɿPKҙB;5Rlib/unicore/lib/Dep/Y.pluOn0<_1CD\"T$P ztuqjK3xvX2$MqszM~S>J58)M`eQ)Cg2䤧Z֨:o^5|E8vةܓ \|bsAQIsnDI> 6'/&͒4bR$v2|UCBxHpK2(f*4V9x(P*ݺM18.Уb)mOw1$j|¢8yǔAEA1L ֓U%V0@frLdgl+`VxAb}E-h;/jݣ5 Cu cJUmZ i:7LFC6تmߩ `:uc&ף3LEE0),rRuL *rhU/`,A (G&RD42RD#yCDۣPl`mDUڢVmnAYՕ['T @@*u^d7ڲ#żied]-A ::zC(0s7yA=^ & (7$("~`&84Bd| -(B:6aobvcm6aqM5N?PKҙBlib/unicore/lib/Dia/Y.pluM6ԯ`^ڄ$Ot7H=6w֖ Yn)z OeMoᒰb]|;'SBm/iṀƏq~M95].em*o>|ٙ'9|y߾{~YV>[ZDcpz:^2_0q_Ǎ?ӌr=Q)=ݶ4>#fƷ7>/tLP/Ö6~VqUUk?}z;S%DDvF]qJ4V0vmOK"@'2UPte0H{MRk&zS z]{GkrL =C/0#(P"C*![L';2"OTèZ1] :j;]ƺ@[deSMI6E3EEE%ʓ+} zO(tPQ0[pD2ҔI,N "rtjic@J'YmZ:$I߂d5aǝ&[?{< 2Z-y7^5pLyoT,n+ѧnْ/{.Q*;}jXtI,:;.t@=`!yH&Q/̮S&9Wd0c3$͈idJ#-/ɢczԋq,XY|PKҙB$dTlib/unicore/lib/Dt/Fin.pluMo@WLC.m>aUsHD ԣMpk֕Y;7UO;yvf ""@ˇy7_|Qj"qͮM[LqhrD]:vj=7.SEzi0k}ák~tͮIoQFl#Wu|Vpkϗ+4 zO zy\|ޯ@mqHMGCe8tc߆fO}N̊o25iKgLN#q=69 |8MܿEL&^r+קPߢ" Z0Pbdy)&ncs@ERí[ywc{\ot N,vuC'4m .屗o-mWPi "Ԯ `LIcZ8o P/zi:ϘFqݩ!ˋi$a)(R"P_PKҙBvZlib/unicore/lib/Dt/Init.pluMo@WL6޵ JJ=[K[}g g<;+qK7f[Vϫ7*Wk-RմێIxMk vWŴw?k޽9L:?CK+ڜq`j2jvL]?@[{&[Ӌ~]f{{KqlMe`_mG?lz]eJr?׎js FnSdnf/Gϩe{G.$pMqdzNFݸEZ闃 .\oSPlň".b.-)Z0C: 9=4AjVRpLPKҙBWpjlib/unicore/lib/Dt/Iso.pluMo@EW(lJy"!R֌Жg.UWlsK7YrUyE՗+Ոn:4=VHXo{q [Zm'l:/^+|wpzVi[+{@_M((wgjaAmi-v}e/|AWrs:O ]ҩaag-G\{a*T-/qZ7خ> ii n?v Si]6Bw!pN\k]L6^}8"/==}l1FC|BĈb,K,KG4ELKdX̠d`9QCɡP (fH@X2cKF-1´0-L,eA9lOFLƑ5S3 %z(#ɥ8yDĈ#Je Np6Ņ"Ad`f03(|qUR,`0 (%X V`̀Ec0c02lkX(vS;PKҙB6_-lib/unicore/lib/Dt/Med.pluAn0E)&›6IDzllB v(V" jwH8s8 mw%i.~bR$k*LTuȎ\DV>m#}˲#b:Smę?zG;yDUcܑ#jo۶gj}i冞^_4o}iiy{CK??ӑwI).D2&Nڍig:&lU8waH_.$"9m7Jy7)lICp8[5dD39.KRn]HH@qS(F䪘y1K u?g342`([/3@qyV .Sp Ni8 ኱(! PKҙBra:@lib/unicore/lib/Dt/Nar.pluOAN0 ,u∆В'|hcP(aYQm̱;u?{< 2zc y7^up9L<;lz'vQmUG`'} [gυ93CBu@pxк!kpvSF{$I<[,Y]4V׌V7-#Jȉȉȉ#yHʄ/PKҙB8I4lib/unicore/lib/Dt/Nb.plu1o0g+b`i!0CYPH( ::A:q{TjO{~ß H4GJ׉ԯ5B^Gc .kt{"&U(ΰvlJiڼ]X55w*JKOtgqI$XeDP'|kQkPIv.[Mvk 60ȳZ{-ywN^7plK]\>%wnD_ ĥg2忧y¿uF|}}-V^?b=]^W1_? U7kbZqZUU-y}]fM7?URvrk6m.#54b%2@VlˍʗjЇ(!VrӀr@Z47-.@7A%jZ$G*U]jڣB4B7yd$ q zD ӑ TSM o{}TlٺJ} A)BRLR-t]R4%$O-m r[W$&m"rZIJ#yR R5U@;&ْBopR0%" +6LKAx'`*L>LB365lAutLJZ 2R6<LmL*K83 eTAm .kg5z#yj ) LJU=L R']E wk;U 33L_:^-.u9Iv4sY|Y'")SؖV%L.maې]a*|PKҙBeMlib/unicore/lib/Dt/None.plun7ף`E6m2lxE N8IV Yn*ᐓBíV|Y cZ>~OazXO aw<~?o+"N'q~\YŶE[npKt;'}х G9Bb~p  ˨qA`59DV6Y*{PS5j$5l ZA/l=r= ` QJe16 qvĹ0$7 PvvU7ُa?Rb^9g+D$2èF4M#koӈK#.~3ͣ<72-#se,췱~#qa[ho*-qQiM AQA~6h`xr !G3\'<4 ҐZ7aW+B@ɑJ15얤($B-U eJ 1[KA=Cd,6\r$w_ag{;2GMkxeThp'B[6F=l1geR$7d䈫H|@:KN[$v $woTȋԝMgy|MtmgwѼrԱrZ/z܈\ X|h@co99-3oy܈yܲMZcyʋsxtg|PvWs(E86PKҙB1lib/unicore/lib/Dt/Sml.pluOAN0Z2w}BU@pdи>]0M*v< )L@m襱RS=c$yׁJgX[64_- jp:%S8l4 ,|nDI> 5{f.]&ƻ}M<}tymCv%oY`2K;uj5A4Qs07mBE@p/Bv40|Sx`zb1hxnٴ'aIOB,ټ+5]ݮz=%RPKҙBHϷ]lib/unicore/lib/Dt/Sup.pluAo@쯘(_d\ՒDqveiiҼkQ~XSk ^OttTm >a}h8 ٳS#Y3\FQyR#ۨ <' yzBX[ܚK=u /*_|RfYAI ler*+r{'-%h UZu J-R$2Jh80A 4K2$J)4 .PKҙB$;lib/unicore/lib/Dt/Vert.pluON0 =/_vmh0ˤRM[1m5&(M= q"ymo QZxLH,!F(4c+F>!'=(ЪFUѴ}ζ *5R-&;NYɌ/6gT4' #jBCFIжCӼw:6e8clG렌'gFQmi9{r5f 3Ԡw2,FVOy2\#sח/Tyx{Y= KE֌ Q+|,p{gZ<?l f6ghbhqнPKҙB9㖎UO/tX6>"墶SR߹sLt7^ꗴ^eVcUNx1SZk:cR庽!eN}_oQ=u?--xV/IJYܗW˸q>gxI uKO5__KMm[Cb;-/m:H/-W1m8nM:ϟ?Oh S`H=j PHԐ:Bv 1L3MAQxĊ#c$j0Kb@H\oƊi1J$%U" ܭvg-0[lT ވ<}#\VtNL)ҒF$B[ lmlƒjPKQ9t.c0I1K Uԑz)@ƐY fŋЊٔN̐M\9PÙ]X1^LQl b4f!ˁ%EP@&PI*х$iMТAݒ;#˜$UVr3&{0^L#)@&wal&1)X ؒԑ0f㪼lĐАZR$ W, $rxG`yjsV]4\==4_"H}A 5qX, n$`)I }#:v)c2Vdb.0H ړC [ l-pr!XCIjH'y5LߒZRǃ::u(2Yé4MSh, Y^,a ]C!"zP6dd92s F(r^f"?"?}PKҙBV/2lib/unicore/lib/Ea/F.pluAO0 ˯xV Lj+*UݴuH[ؿDž!N$8?@E-Y1; DWlMy;]LL^jP]`MӲ{ $u-8VFKMt'q" l|qDCh>a;+d_lr}!ȟ>9Á8my bnKͻW 5'3F([ɲ]T[؉>uȖ9pwmWPy!"Ԯ .Fl8; )t@=yS|>Y2i:d2Z^G(eD.\dH0RPKҙBtd1 lib/unicore/lib/Ea/N.pluMo6үb")J$AQح#6KmSdp83~x}A?D ;Hw{;teOs9y|o|z:%|}3ˋXY|!#at?_r=]fa?4ob,y,8_+~;9~߾FptYi^2Ogz,}Y\E\i|<#% DkL[ޯb|_V//i? T7kⴊi?uuŧO7>T7TM#%o@*lj64$G AzRELi$!0$NNG B9A9A()IRqHʖOA YH)45#ju Zf@]H,˘1-cZ.9䦶hlm԰P5ʠeeI4jhH]"hbsUpm(Ģ"6B%xh=j_aa # -{ٲmYi8Ԣ(^RڦBSwRt? IE*< )t^@Рe1`#kOI@N!EP߁o4  SLɏ#7~Hv ^-|m;c*iR5ByT1 !4K"qdzbhq$i@QҒxN#N"S* PKҙBb-lib/unicore/lib/Ea/W.pluQo0S\Շl-Z_ Z(tIrI؈߾g4|ksQ@5f3b=C\؍z&^H%o֎t޽[{ӕ:{`N?Z׹0}b?QreJuk܅ S˞::1un$ |KIsOt4<Ǟ=.40M `7O;31qFtu0]0rC5"Na5c=>.C PjkjY,JV$JFBB񃄤|<:^JH,,K$d-| !iJsR*RL i-2,Q[ )DKm %B,K#PRh֨E0ZfPKҙBEB|Elib/unicore/lib/Ext/Y.plun0SL/mBՎ](A r(zŖ" jRMSIrw;՟ ?:(}PpM!QzIsPm-?%uh.0n{P!~݀^b#) Q;͍ WLqDG~icÕl﫺x^ >9my h^ p\Ly*@,jwz d[wb|6 /Bn[.Btڳ !<[/*_~R>l !?rG"f-cb[z3#H>Wi$jNfJʻdG]QqT"IE2"y(+PKҙBKflib/unicore/lib/GCB/CN.plun0SL/M"90 Q HIkDoe~SIhr8<PQkr[}$&9L8ymo,]ɒׁ:4' ig@|»';82 HГ'1À0) jP;ˇ%@Dv4wO~/^pv8oVq #8ulW:iMR{5H3(aJ44r(@KiD2Vl`ȉTAeKr@BH6F *iLt-ӝx?n-Ruvt:mקsinwr=N?z.߶/t>ϗ>^]?~^Ӽ;}Np=|nz=[nsӟӼ.r{ܺL~ ^g|tby<>/n>.ݺ緋bi=f9Miv>-WMիu4b 6ކZ Ъ5migMk:-фj4JgH D4UkV[kVGZEZ)݊6{#"-ӔV5[kMk5"-ӄV[kmk"-фVu;˝nyZ% ro~7ܛ_GZ%Дf~y0<_/#--Ӕf~y4<_/#-"-Ӕy<~?/ ~_/E"~_/K%~ _/K%2~_/e2~' ~' ~)~)~W+ ~_WU*~_ůW6O'ہihB3?iOhh&B3?iOZihBSIg~ҙt'H D4'Io~ҏ@LS`~2amii4d4?OƁiiBy<~? ~_/ E"~_/E~ _/K%~_/e2~?O?O?OS?OS?O+ ~_W+U*~_ůWUtk~5?ݎ@K4)1?mOfZeO[Z;-2Mi槝ig~-nyZeo֛@H4zgm0?OihB3?OGthh&ByPKҙBLClib/unicore/lib/GCB/LVT.pluOo[u)n7mwfl30 Q tIK[,(}ߧMUm~ok0p?x{?/Cw Oyty?m>~Or>=\/?>p{ڇ_yq;=uz~C=;Ouqz~>}}}7~~7K>ܟ.ty_Az'9_|pn߾!}˗pNzx]ۗy7}]MtkNkuJt.UJtNtuu1Q]bVXŦ.6L*]3: t]]յQ]ԵY][ԵE]Ե.eBW.:]WO/oF2]+tFgtAt`w5%]Sѵ̺Uumt.BgtFtA蚺n<'unՍqU7t.BW霮5uAtP7I4fuӪnZ]tU:sF躺Yl?Y4fӨ7D2]tNtA:"ui-g"L*]3: tgiԭg*ui2]+t.肮ɟmg&uimKt:3 F?ßg3 ?ßg3 ?ßs9?ǟs9?ǟ _/ _/ :::::::::::::::::A4.A4K4t.eBW*9]kt(uiԍQ7nt.eJW邮u:I4&Ө'I4t.UJgtNtAO,>˟F,L ]3: t"ȟF"ui]+t.肮ɟQʟF*u%DW ]?On?M|?OC]+t2222222222222222222 ****************** ?ßg3 ?ßg3 ?ǟs9?ǟs9?ǟ/ _/ _/kkkkkkkkkkkkkkkkkkk]Yu_/tU:s N'Q(1_iԍtU:3 N'1_LiMQ7ɟ.eBW.,uiQ7_]Kt9]5:E4Ө[/E4t.BW霮_Q_iԭKt.JW]/6ӨOn?mKt.UJtNt///////////ɟ~6PKҙB5p<lib/unicore/lib/GCB/PP.pluON0 =7_Øإ[Tu!qL[o JS`C%۱Gy M4JYr#qTu ݜȐTghUMjhڽzYi g;pܓ=]\b2cbsFJs!JkTm{%OvV鮈sl]>Ŧȟ}xrFj =Aܖƛ'';X,:;!Mz'tmdG`&T'Sȍ=5CB Xj0UbPrBG~p8-񽘥Yn:d빈mn( a kC PKҙBolib/unicore/lib/GCB/SM.plu[oF_1A&\4/{!$J>RbBE9>Ef>̮fHx^p/?_3?wWy(xs$)CQ1Q2rtjk7k7K#b99Ssu~c}Oßi8 m/kSz9S{q_0:/,pWЎC{N:/OwNxe_y2sw*ݼLr&$I8ߦA>|w$RizV&Iր Tjk@y $GB]{Z6lfUpXe},,q)ZIr})I$ʐW|FIL$"1 9h} +&1x6lK &'$K¡:H%56zYjMl7FқK4sjt:6m PrC*H'VR+YQ+ PBKR߂p'0e U*aEbT3QÔ*QV*T-ׅ+աr\P%ʥ!sC&jug ]XVt'Ջ'щ`8Ikz%V1bB@΀Nl60V UnK$G \YVpu0nM`-,VڐrRAH9Jg/_=6[XT0<_PKҙBY0lib/unicore/lib/GCB/T.pluAO@x{-)m;nUSxryo|3769x#\Z/5B^Gc 6 T8Úbڱ)itaI:kj¡W*J[8F.3Z&O0֢ X׆?u'lbR 6Y?yY[t-=ܖśw'8gɥ.Fh@׻Y7IOR>G~hanʀ. v]`JHTx)L@eeRS'YׁjgXS{64o_.-Iw-BC8 JMTktGWx"Xr5Q5O4 y‡%.ayump'Ga8gmw4`p[oޝn؞[Kf$>M+E,$[삩h&Qi0J)OiE(+xuT/PKҙB  lib/unicore/lib/GCB/XX.pluKo6ү`E6mBRh6jp)嵭ķ-t=GJUm`y433͇[Uխ곪WkuxӤ>i:=u:޽{ezz;Mر8/|0!˴\Yo5~E?o%&8-x:IΗU}us[>ȵX>]/psN|8IJYi9?êfc|x2M/4㏯x5_~W7.z"U>o֭ !ܶ2ˬ޿SnZnv$$Ih[k;_m #nK`Iz_}#;G70$AFdGlc(#)4rfraH]DWUy7po}l~!Xa` .3( z_C hdGb=6ސFR "!ӗ0EFH!)dI$$Jz둽/Ii/ԏԏԏԏ~B~~~~0)DN!r ѓ<*1)1.m{dCxT% bӀ@IIIl-ҾyJJ37&eJfJ]2y@y}eJfJfJfJ愛S$+cy a[:R #nP .%9*TqQuICZFYVM(z5T<\c讂p0Bʠ 8 a`4!wX _7tx3w]GHiAHeRN$5zM 4M KHBJ N JSY >aGby^sGF"(>J +`Mؑp&%ĥ̏I$$N0Hq&L>ؚ)aRZmHցl D_5E֦jфh挧iNwA!62u IT*Y0tHBJ kA,({9c`7) 8Y< 7 $b}+AMzI,P8T 8YE%o? cAX"csN #MnajS3j֊qWT={6g ΏپͶɆ/$-^o ;,cm~e1m lFfX8}"K m;4"֒0,.l%6qPKҙBޥ )lib/unicore/lib/Gc/C.pluWM=6|%d dae9v[MV(}+NS$mboY}__e{!i_ߖO/|y?u\>~[^?zˎ/._ӾΕ;=vze=RߖN__//}yy}~ws}_~鿾_~/<|zYt_^\^?_N_78s9؎ӗ}N߮|׏>~.#W<>__^??W;@qe"qu1@2\r@RŒy EV | .4Y {4j4j4o>i\4ҹlLGhwl,'GQF=oum0B%5}3(gYu u.ɍM-5"&8oP"!@Y=~@ l=4Dv 0ljk$*hSNcQ6N rg w^\2(n DY2@) 2ADcJLF9J.o"r BY؉UJD# Mh 9&mDn ́3˅z  )x+AT;Pzy0M@KuÇZE)3~f@(4т66†4;$~1x:L'((ca z0<L&"ݨ^m2_CobLӫn*۸>?tϷ>ic}7̚V5*?ga&ŝ/|2kVݼQ'UC?nMf/\U1A ּOW̧fշ ?Ku+ܧFGUf>]AbǤ*1 nZv|LCq& 9Ĩ)Z&n-{$ɠ9@1i`x]s3VNG3xĠx@J\7ŲK2_Pr)e],/(52tAuocR PgR)q_'*͜m3tcEÏ3RH1:sp7on5hh-y‡>LΊ2dcK.s@{ !oY”2~47wb٬;(ѧq->Z2CBu@pdк!]05E*v< )L@cX)) \Β"=H*nSSR%PKҙB5x7lib/unicore/lib/Gc/Cf.pluOAn0< _rREs!5`A葒[,(ehv9;:9] jYhG3h,8:# ΰY}{ԝ%8Sg v4LBa6ޡ|ҝяڝ(#/c-:sl/iǦ~ơ0.Rpb)N(Xô#@?ɱ]vz"6s$ϑh٪n_SB@q VeeBRf ̪Wa#|>یA1[5B2+KZU1lEmr̫|s%,E-Y㺖F #PKҙB)% lib/unicore/lib/Gc/Cn.pluWMo$=6|Kb7 "ZÖ䨕zWJQ0M')Pb,|\n>.].~2_5/Oo}|:eX>}[>tz|7ί/q_~㓇+=/V/K9}[N_vxؗ/zz~^>#on/7sۯ}xϯtϧNyey==3Cܝ Qt/Xie?g<;ry(._/t^<]3axV}dLF6:ehxL2r\ڹDܠT-Pzd '"8::6@:P6@A^=Q!@ .2Q!,I"#ܹĀ_eE&ʪZ)b`/Vg&.ND e{e D!ӊDh3%PLEIlɺe&$:U Td4m-(A]f R{U(@앱W^gu^gAW]7$2h+z>Qk,5h+&4ɚP!5O[9)ЌղB^[rHD QmRʤTFeiT&xf6ڪQoC hL@sP ky4OE7"hnD$6rhsisVڔH$Dz16 DV e)9%3,aɆ"| wT0a<•#Gf-<#`_mj_څmwԑBsQawC`pt" "q ـ0V9͠C@:q}d5o촘t!BpˀmQ#@hUAw.C |,Kp+ #e, u"@§B\6!t “WrcLuq/"T16~e (Jw9DD4 e2R-*j'B)$0@@XiQ Db@QYL&6;W, KI&cNـIB@ώgurt~̤5_8;b^@y/~˪}R]"=שQbկsٸNut6f0Qƨu1ǡ'(tM;j9沨'=ȋp Z7b,oELEĜ-Ĩ>q:+e녆aX&Hj;ś8)H&o'pFloޕ+o-{$1dЏP/$0׮+Př7/_Phu%bY"Ma/bP9fʂʲ> ,*(1tĠ6yNCpN]׸ }_fƶGrѩG($ju4 <^yzVUUFA?9pnĞ _hM[ /fxqrzFH-1Z?(d!5۲~h mwPKҙBp#3lib/unicore/lib/Gc/Co.pluAO0 Wi]`.]&n:$i뭁Ai !N8)&? ޠؔHDfy"BMQXܝ[tw"&5ΰZ ljiѽ]Yu-0vFKOtgqy$XuD㈆В'|kQDvVɮX&}M}tyCO#%oY`J؍jA􁸖(9Zz: BEh.b; h VJy gVg*&}HSFD%YFLPKҙBRS&lib/unicore/lib/Gc/Cs.plu1O0g+^ա ,HUZ)\sFEL؃uw}7H6(6%$/Q>{d:Ea([n-hh-E‡^&F Lwjm[O)sCcci=b8E!?+L}wV`ݨfԉ>]/ĵGXejBapW\3pEk1& 0Kdvo*ɲhmPKҙB+ފAlib/unicore/lib/Gc/L.pluOoz?9&K.Ds_ԀSGjW}l*GCrf8ΟiӛNz;󫟧u^_I;02=>ݧ=i}<_p҇{ݿr<<<]i/\|81qzwLO/.2_yz_O?^Oܧ޼קz;痃 qoVztU}tLtv\__?oiOoVEp><+"}")&H] H{(͢4M X (pRN'v.*}kf:He'E-'zk*|gRXϫVH+LQ& Q^w#JlViYw^HN"@ R>CӖ0!z+8˺K(Q.*7' PZB/~+Q )kAzJT۠PtM:=%. b4[FS5m#N<]UWBs jCohzUDJD2$ˣkv^\/ɸ xV"%nW}Ox] >v{cV`x5lsM+|i%U6f7#Wb_LDݸ v{%+c>_#0ތqYo1{|ؘnP!wKwcAoU +I2)곜W2_8UnTf1c d$kh9|o.WcmSwH5[۶tZ 1$+PM?/+>#g`yI7fl\=\Wrx]Bט/ؗ\w/~dq.PKҙB PH,lib/unicore/lib/Gc/LC.pluO6ҧ`^DIh.% ,v)Уlsjmm=:EOOogF#N N~*|/v*spK:n(o#fKMl]luMe& ?euŧOwcSYUZUe<Ȓ@-ܮBtoA}."(袪[Ub1 M9UN,ɑ:Rj,TI& y]Qn|Q`[0+eBV@}݁l Bo,-(RijfGj1Bw -D uHC6􏁩T`W$j=;"1jCpZJ& ЃjBs 9AJTS*P m@% 9( ϫR$C$ق@}CGBϿkSz[ۃRJFZӑP k%ȓ| F{j"fې=m1s$NeV5{:.sӐu>j2~\&?PKҙB&SQlib/unicore/lib/Gc/Ll.pluKFݿ /I.xCID02챁,{fJNfV[GAVO$3MS8}z{?xKN_ϧyouz9=|z\_q;>B\/y~ӖUFz:Jmz};]S NUxZN>Lry}waa>}?^u:o||l]ez|.痯{tyh̀ttt$+` +` +` +` +` +` +YB8ٳ7css9"g-볱y;?[pEɁJ1򪢪m2*[NrS-h9Eh,r|v$i,e9py9pyM;6pc.E\-іh˴eā.3ff 2txIW \×U ǥ*\p-q1Wc\8|;qw8|;u߁pfnf=nf=nf=nf=nf=nSxXE#*j|ese?m,"!*fnfn 3p8g,pY8 gsp98nom]!h(^iEU>{sش]W?-R81n:%1\lz1啮e޴ߵPKҙBM41lib/unicore/lib/Gc/Lm.pluA0Wj^lHQe+HISm}gzj{~f=~w`Ɛ!n N]@CYxFxnxat8|;GzÍoH 5~/n=Hz¡myE{# {VmټlnܧAg=:pcsgt=p5R|=DK6Mp{<]D_;ңpb!CqffgLV2I*3RaϤ(b3AV:dH߫?JY}W}W?u|OoeSO_v=޶'M~|?/׿ߎ/V\/8cǷ/t9_M=>_7xvԿN//aS/w /w;~|ROq\|ۮz6y\/_Wu9|C0c's;gߧv~?`~oM.',nϗ:_njیtSO+,~=~ڇ?-ڔr8S-fOڠXiE nyAH]VCCC@t} *fU,4&IkZt 8=z$E12 NrZA(kPv M\+v+ :)U[#L;)h8-$A1p"N‰8%9W@J$xAZIө0,$5d:e,Y W06%A / J  . 0  . 0P˾eEUH4M(qeInpINFaK2yN¾a$IIQTd*SLj UPy*SL2+{gTԣ2P+OJeVZYWVQԽݪlee=6`c6|Ls}c$_1qLZp8R!y[Ťs:73 =G%S"dWL"2 tbA7K?B}!:wSYGa{y[8_#V#awvhL2 ȱR$!5P0s(P@꠨Ad@I >-B%Kv N,鉺D]CXJJzj@’Vu+"s f] ! 5Ł u=&p^@4YE8!-uI+Dڋ,Vd"Fl$.LނI 7BB@MvfJ# -d.8(&Wĝ+ WAEd<%vc'y`31E#[/()~+T/ F+723Wn.u>@6ؒHj I&%R uB]RW5uu@vu~:W'H@^e4ܾ?F5nh:FB`m/1hccdX8cbAD8QרkԵYj/FlEtlm ɳ\X:_LV&76v7}9nzo'g\2mV F >4mS_>3M亏|fL.v:>/ۏ/7!.MMFz<Ƚz<^MOMxܦM>>?O|~~쏷wii>}?^e:tx^7].++5W?^# PKҙB14Ulib/unicore/lib/Gc/M.pluOo6ҧ`C.mBH  'H=m%v-v}̼_WTn>ܪnWU._Y}q.?~[ۖuwxZ= 2N'=. WTzamw^~P,ƯRmâӢnQy{գm_ܖO7r>O>\}=~ݖӺ;¶tPN'u\/h~?6[粢ӢPi{ޖ|¿:;|~mv>ϛZ~yRZM=Ope{>7&VN۹z 3(֮#ёHHKAl4FЄJm)pD2#y aFTrD5M Hb~"Mׁ`!l"ЈĄ0q>O-HTmBa~Ah Ŷ|7ɓ" 2cHSs ariC؆pӅmH $aB}~~~GGGGG [[-8xLBbeDDDD4$OӄcJ NN$Θ.3&*&nubbbb,Y&N5(S>S>S>S>S>S>S>OLLLL .%\Ϝ+KGtX^biX--cRR H…+ GTym\<duM3ɑ2(weثC쌶 5SÌ$G  GNqA Y%Mɂɑ"]&b^3Q g4aLY%ERBxHh_ ZUՁp2#N\j f"8C1`(*h0,Meĥ<× *_"rA5j\nUC*R5[[C.XbՃt0$2ϵ HT5%k*1_= ?r1 qe_cr.f&! YJ;FK ?H")JԗIITAwn,BJh jT@ԶSiڷvj<7N+z25vFa2׍go~qD^63jÆƙݧdط"dÈ ;EC-PKҙB³Glib/unicore/lib/Gc/Mc.pluKoZ؈A'<ۂyآR"H 186re׵'m_ʋKDlwR۝>~ݩC?S7׏aS;쟤oCwcn}@4e>1ӱEW5Ln$-b'91p1)LA~w}/ x_Dhw5wt'_>rIar>8g #G €vst ~x@9-v\ay|>W̧:0!A+?7E7˱QMaNSoͻHU*lzTҊHրT& K1dIaOÞ\W-+ +0 !aMK%17[XvYA.&$;CbSHrRRx].SSC<ϱc',g Gs]fGzӜT 95 A$a}0 ڰY@kZv@^\zǠ<%$P+(֕PA(lNe SFQ_9"YP@&10R' SH Qazu(6\Tđ*e&)4!A2zuxk YXN#ՋI"t\BJpnaoStT,B dSK"Sef$C$7cMYh NI9 U$CrP+}c.Ƨumh=ύPKҙB'g<lib/unicore/lib/Gc/Me.pluAO0 ˯xVUbI RաC☶H=. q"~y2gHȷd(=LrpԆgF[>%(0VWӼ} 4/kaN O;,7gT'FԄN#]f>Fr(!D n>܊nW|u]`ѿNjz#)]%,'63;(ȇSi-Mծ0neLf (KKѓ" sV@3eϣݕoʢ"pHdII43ܶ;G%yR = #Pb 08C5ҌxI* !H$=,ɒ*izKt2vpG ;dI4<7ثB"(+h0 fLdq0T;@+Ih`y탫rD#Cl1Mr$h,Xh(͐w Ì4Nk%Rș@@7p"I\p#yF< @ae?$T*u:f":cSA!>8#2Ma@ij~0rxqJ暒!sh @7F|V 6q^q$@x*ydRN}(AǿPKҙBvElib/unicore/lib/Gc/N.pluO0a/O'bUAcz4Ai MXĉVzudj!vv[,:hmݖBkE %sAjPTLYgF2La3B62gU)P@u^f'@븲@<5A46pGGA8bBVUb9^QhkLŌv}hAj@ jA a4WEU89p% 5GA jıc;<RqBu8jsпFshMgU֭u\*5UsV.̶e5Rү~veJd3(.9 -PX Ok1"u)PKҙBnp$lib/unicore/lib/Gc/Nl.pluOn0 =[_rZq ŀ4@;`GfbTrN|||PPjנ=a+0%L8KQБzgX^t>uk'鉕z=='|0P\|ҝ ڝhY Zx!X]ݨǺA=p'Zl/(X zwf37r, Du8r͞A]D_GKUޭ&7X(njUBDTdHLn2Fm:MoS&_7֥( U$B2O9u.yb{d!sW~<syr/m}ǐwe4/|ּLÅ2M}˅ptyE3{V>L'Q4\3Gx[t3|\:-XʧyRy[KOxf-y}Y&]܅_ Hy((HTU0mPٜ]2A[ƴF QM[@w%Bb3j3&@'BOFJFF8$PhhѦVgURٙhP[zLMYAƾ$$kURț4y&E+H%jT*#+eTH Ab`UV)d"F3T"K|";#@% zE:ZHQբnAQFiEA "KdAvij5Vzm{E, t 4 'DcRJ2% Ȃ$dC@&„bU7HI^Uv&jS˼m Bck%ϼsxNޕ]/(P}!"'_T 8"5H7 #AXJ"D'B$$7 UP)n3a3!qp†rbNmk%n7_\EV?}HܣVIPKҙB8clib/unicore/lib/Gc/Pd.pluOn0<_1AAٱc0d#QHIk-E";^QK|[}fSgKq45O(H 3ngjue_!4i3^(;,o$o`Ψ[N,BKX`}/ |z,;O by0.Rpb)N,~ waJ35X.DM|9࿏P:"/b磩醥rqLa"B@qSU/BY>XG;)a&393ݧy.o#5&\f|Zr`#7PKҙBoolib/unicore/lib/Gc/Pe.pluM03v7$!^*nvM2S9-UOK$9w ?)tE_PKҙB+g@lib/unicore/lib/Gc/Pf.pluAO@W<Bhb4@1m5ۭʿwJ1=|ٙoތ0htADq9)Nׯ`R J,*eDT"?C|UXG\pS;{k5|99Q7$T_Jkm? /vfbl.a/Is2mC].ܖƇ''kX&:k!M $vȚNOǑs$gn o ^4aȚPrA83X."ƏA׃A0g= "\q-^$W^PKҙBU$Flib/unicore/lib/Gc/Pi.pluON0}_q( 4F#/F\Bac]XkMשw mӞ{z ٤8E?c#/ 1@Z KeHT ;Al[GLp/ R;k+59!/9Rۢ _Jkdmkl;NhF56렌'gFSS % Ig}%=)@dخUY؉U8p᷏uQe —0֫FlZ3ʣPX7`6FI8|A0_zbL;XXՙyh! vp!gt0 UPKҙBnvQ=lib/unicore/lib/Gc/Po.pluA6ү`^ڄEJBs$]` @]B{Tjo>2Bb܋Ϗ_Ex|W*$qB;VO5 t5NG|xA}|~Uyb?U?Okb\i\P<_z_&Ӄ?R*h!U$e <[Rd"Rh-]dƠdtr z 6Q\ZdGH=H, #YV֢L%SF*PhrYkx &jlA J3!-esRop QT SGЗr%KA(p< u0Y ߂|J bA&Y!T5%!99gI5 [̭Z+AuvoB l@$M5%yP@&U @fka u ɓB^G(%դvK+ R5!m)Rhq!s:UTDtr=zWbsHK!U ]]aUݡ5(5xpM`t=gGCHsie _/R25$U dW!M2,BO?VU C!Az+j 2Ǡ*nxj^X*Fm~ 8SkuQq '-{rs+PKҙBlib/unicore/lib/Gc/Ps.pluM0+f\]>u/$j(Yzt`܂]m}mO G~gC ٶ~޾[ '9"8' R3*4b+tQVGt '»U3~/hf{junꌾE0A%} {o {~s,%Fýg#&jaZO‚P=OT?Ą*o9[T8}yagۅ-/GWjaB/;GQd^7OQ;GƑ_L&X`& di)Q"2&Rb؄b%+33V%Qk!xJU(׬ШKSbI?,Ē( $Hd| d9q5i;ݪv˃c{2G [gϯwZauUq*wt_xn4E}w?]g\ЍP_D0mnATMO¨An 3feR҃HT*!z vp f*`|4nB>KDq5CXZĊZR"zCcU60P) j$UR"zNUN4D㔌]yhuKS[mh&:d.SG'zu>&ufFILBxͤL*B$l7]oąL4Rcktҝ&Y' $jɤR 2 "΢#1s$j.aS5Hjq|ŷ48':@qtscL3Pt  L"\áPzP8AcFZč2{pa  ,l|o3Wd]ǭ6 N!@* B&M$ZA :2 w O- Fja -rˠP#ɷ)`4M2$AC MabR Ll(_iӈ750Ɠ$ʖ4+S-"%6CTxVKV25ɼi#9 W\a尵kaSFޑ}f,y}x1i 9l$qxtٞE۝Ͼn>-6؋/~O?Yyd o= GKN©GM'ay/,,/֌U%K#9D.l:6o,uPȽpϗI]q`ɒ^89ҳ--f~[D$m&VFa%,}1=k;a/.>]$1 sz £F{YV';6~?1G~C-PKҙB(p,lib/unicore/lib/Gc/Sc.pluOAn0< _ڄ'Fs+5`A葒[,(g9;^PQkŶFe ݕ̿)%ތ8K`tG(Hi'gZzuc_? 鈝:==|0ﰺܝ)=oc-cl?˧*|ľ}{?)8m1bp,~ zwajY?:/rlNv?fZo|6"/bi銭 fDt& !)8<<ʪ}R.n!_d| DkLՙP+|_Aur`PuzHt3tc z]OF7ëG|*-ҤVQM ЍXMÊC[= mJ<^_÷}m<:zF 't=t2SQAhѣGlj (~ww6~vqbOdL/.s`t:tu3/^2#]g ϗnUmCz8j>]V<XqUz,\R֗eV?HwOu B&:T!dP*dzNuy`4:SL1 4 uRd5uFS i")ŮM*\kiE۾ZN}Fu06i*M$OH=H d,ȴ2d5ה$UvA7ApE[=9 =h`HԒ H#-G+"e܍m m-ƀLGAl~XFju< Hu6]ᖣvsj4an Hx&1zFh:ѐ1:t[j-V)A%>cN302)5ߙm,4"|!R"jM$jݭ dPۀ<:Qq|bW.Bs481Cg a B CB_爛V9'wM5 !'_76T dđT`1`-{wd?^w܉M';%c&; MlY h{KD5yqp$kz\3Ѿ'ah1`#Rǹ& g&KOk[@W]<[l'G0$zf'=Ow!j%0{RH_gMG2\7|^F {uf;<"leTNԭt}$MV8jPd5yDXgbF0'z3^, HECh>Rn_(ӧ"αMrw)6EڑBadޭ9Zhu0%B7lZtv/;5_LW S 8YӌB:4ҲA` VcE2}0 G#bye2Da\EZ;^1 *PKҙBx0$lib/unicore/lib/Gc/Zl.pluAO@xȅ56!@1m5۩ʿwO63oƸ9 M4 :Ea(j,h E‡%Nagytab>BGр=m)zpE`VBor z'VAͶ%}N+-:ͱ U t iB/ Z%'M`cL$#cy27n42Z/PKҙB摚$lib/unicore/lib/Gc/Zp.pluAO@xȅ56!@1m5۩ʿwO63oƸ9 M4 :Ea(j,h E‡%Nagytab>BGр=m)zpE`VBor z'VAͶ%}N+-:ͱ U t iB/ Z%'M`cL$#cy27n42Z/PKҙB|@Alib/unicore/lib/Gc/Zs.pluON0}޾xQ ,وKA`mVZu*-b|MzsO=wlPlJIV|XgyUQQ*c'Vj=&+5P ZҬ{sR?ZWbFpMtg4iu+|В%|JP(dYQ"αMw9"?XHj0cp[ ֜`:sywAAZN%{GǑ }gjg56N4e艻aZrX&iL(GA{[,/RyE1 A7PKљB+ lib/unicore/lib/GrBase/N.pluW]\ }7C^[BB} 'H}\bv6PSy((oo߶mOo_կ|z@~8}||:6/??^?~:.v|==o̸>n7|8`^?l9/ϗ-~%>zlz|z3 Woގ__ӛ~|nq<O?ϟ_p-p.}yrltv\G wߎ|Q>?m{ϗnmx>>z~Ӿ &P!~:w!!p)B%PX2 bJp;PH@!ŝJ!*թf h"Nn! N{1 iK ZDPd[!K)@ Kѡjv f -/AWLl0+ATYAYl)C 0G`cA +FW̒#)zeE++ZK C(K4ͺ @tu"' N'c;2늱늱2 0DHh0 5h8{]zM +oQHX-k3XK&K髂UL DZC(kѨPT2#'mV[$}c7Fus7zȤV}lwxL( MY9%4",< (Zlb8C ;sC ``3886XUF408YOStˌ83!D"Q"(˹nb~2x퀜%JDHtt  P@; @A bXMVYOAH*KUlfwpX셨}P6@f|De"UòZvBF[!vlQ\VCƮʪM92_OS\x歳fzqk~;۩;g]U(jU8?I{ՑȮ <ځzv9@$(泹ҧ4Ł1Tv U~32m &Db1[C/ЬTujQ,oڵÆ6:vQ1Jї'D݇(̵ϧg\u& 4G}UAZHWb7h'Hbg@wqnW/߽/b;^qRuy[92h#6k`>N=qD|\yHUw/OOez߲o˻_x]>\˿ ?_~3~|][~?~X_߿<=/q8qӯorje_4oFNEs/?}~뻗 i/>,wׯ5T}b^<,^/mۯ՟.׻uMCTҠq9/kH҅]8(PPP5"W-8Ѷ imGwP{cz,v+&4eNBhwrcjjT%&6>6)S^i59«s]T9UgUM44E*pFgqX mJ^(rWQP^mhW.EɉvIC^#@Dc2}3lu]f(SAF z 1f;}M!4ER4fqxY<)]Pv2R?ekyQvY,sI -q& ,DB Q(ە(:6#_2I&].L#uՀu 5H.T_~eW_~eW&]EYh!jWcnZuxT6F=PBtUhe/ԌA6Ai2\KF Um7҂y Lv汝3\S:? 0^.n-& \*OіD[Hϥ#%Jp"p%NW(Cikt^G@o8K#~@)ڠ"{UPmߨꌮ6ݦL$,*3>5JBtr$4H즈nCcLXK/ p=i$4ԣq|ȹ4)(' ΡkFXbNv={-h;* 2 "ۛBn]\舁Ef3{/rr@qMcB.J^ИmPXŠ"/*xE= QS1@ZuuO5ы\-+; qq::   3qc;׈b 21kQ#5vµSt]Bi@Dž:kԫhy'w:M|38V N TԳg3> 鬊tA FSLpr.vV(")햘"%^(9(zdt:Sѿxڠ zΞڔ>FHٵ:I~ׁOz|jҥFbyKhh 1,w]|.׻n tz|^H}{EWUt]C5t ]Gutz<+N{#UĴyg> % gQ) EVEvKt"4h4H#T= 2rno$ԗϛmWтHA98xp( d-jR7-@S[FTF@E~| 6ȐP-OKP*,eJVB-*S W`CAb2$/=}*J'U'Db2WΡK ݐd .R'zx Ǫ'E=UHBIg&hHJ-^MG$DTL)UL$4*K7&.jtҚzD7 %!/͋(et z$dc(Ytwsf2gu*H!HPdwvt]G;nyiҺVKp-4ckoi7kzO[%Iamu9r5Dr9_;_1u3fƱXJi'i!dTD?psr3>sS~ttA""zűYfzwX۶¬k vve d4ɾ,s%L4 9`Hfܬo7;3I13f1'lmɞ.{1{xǜezM8 &vO` K@Cc0L7״Xx~$T7*C6K- nr_W7ƶ6*{٬ w˺w̰w!ē;soL:'S %L& PabPKҙBXdG+ lib/unicore/lib/GrExt/N.pluMo6ϫ_ \ڄ%Dsj p)VmbnRTy( v~$/v>3}!6Ϟ}xrFj p;roΞlapo45 j#[;ѧYe<9#5`nGNٳ-6Spa6%}Γqɞ|BolaWY*f](Z9`!#;rAD}tah>e4űX ٔ,1PKљBzIlib/unicore/lib/Hst/NA.pluON0<_1U@*z M""UiզHd9пgS83Da!{JvU C UAi,*eHT"?A|UXG\w8[W}JdL6tgr  0'4GFSiml'im`M]aNW/>Xe<9#5چ:۝ 9wgNְFLuCA:5K5Ls${n o/ ^4bК?PrBGu0Jიp8΂],,\ gm.[8[s!PKҙBllib/unicore/lib/Hyphen/N.pluOMO0=ǿ!f!r TJ{ticpl8@=ĉ<3~G`EV ՟FqC̀{tE}5LQזG=bG*-R:_ ٙnOӈQ kQ`/ReNa[n}{lOn(X<wf*s#kAXnv'!k͞~&"x1h:cw߅hM~,pu5Sj[HDt,U.u2_K3I,D*iy&Ya*KERr)Y%sYp*PKҙBڔMlib/unicore/lib/Hyphen/Y.pluQO0ٯ8^I"/mq2 ª]kN{l~齧瞎0Y M(LrOqF\*Z8JE`6iQ %iei,M7' Eš&NET nLF#>>Q?"d R)eZ7/v.[F}Mh,vdPZcdޭ9Yhu09Y+iZ4v/:%_#8sT:8sզsɒ&l=vҡ<=}eO/oXn_ߟ^/|/mt2r2_ȡxi~r>V}zG9緯?^- Dq}~zί#j:=.Їpٯ_/?f23P(@mX@2l:T*:ĕZԡlHjD K@5U!>b]3QJSѡS,ʆ < !DFB&*Cyc1jUx: h;hsmhúրʉ[k4dpYAd#Z h@2G  DY;$%Gu<#_d~9;:3hr:E%bsr݈2ar%"5\ts0dFReV2 `_싃}YԾxg}4"cYឬQ&"CJ0/Y|Fx7Κ9?Q1k(ă:,-‚-C%x:<^ }g_Wb>2֒=aUf9*ۍgȑ6ŝ8ًv;Gq&sɸϸb/'o1b>ԡ9,CQ=wֆ!PF(#*GrNu!>l:6&̃WQsz ŕ> qRT'Ub؃x@qEf)WQqR|Վ+(} gs8JCЦmI#qZ1nm)_mݸݸ=7WBŊ_/3>%.\8iܛe054};PKљBh[e[ lib/unicore/lib/IDC/Y.pluK\Fӿ^xؗEBaImkQO0JT;*Q"Yzo懷SoNoizݥy;_ݗw/}Y=>M׏Z>5҇{ݿ0togM]L?_~;3Ň|8;OO/ׯN~m鍽~?~O?y_|>Y68OVzN狆rWHU|\s%OT2hm~>+GrT*AH:mTP4BE#P4BVv nMᆧ O6yJ=G(CI̟n1R:{K7:իׄ&0'uݘȎ 4x >Xoشбi Hr 1 0k0oYC R :a E.a:.: ei)a%tҞP>D%,Am;lFEg=]B;DkU .QD6ei.®N BIiF9%H+ *:k:1N;(ZhAB%6tZD3tJy+)OBx?"F UgX4 65%d$Xd;C(UcTHPbdBk1; ei[$ E:2#Z޷_-FoIH t~UBz},uh`7FF,;~<^<Ɋ撬pi^nJ2sFSstږdhXysqƏk;(A5ݥ0'^/u%ԏPKҙB9ylib/unicore/lib/IDS/N.plun\ל8$wě"@ <'!pDo H@7uoUeYww;//LJy_qmy>}zzyGr}ڗq#?,/o~\Ymyx:q_˾|ڗ׷w8_>_??^_ΰ/y!{x]e~;>_ޮ?>9"淯?\mBu9^Op^?\5uy<]~z9/?C~aſuu+P Ed@mZAxP#5غBjڨ|`c!fR%ITҞV6U#P!\B7$ N'~w;iػ5Pp@qTlv F&5R?Wxưc4 !ĂPcEⰠt"ؒ$҆viH vW|̶vk##"Xcɑ 3ș k'qA X\a[sڼs,.n Y1AAdAĚTq* $>1DYYK$a̘Lw X0`Kcwc?%~JV?%OC i(4Tӳވ.Tn0RFgqyz\:UXxz'^bCNm$hd֭ܙv[A6@>:i b#9R$5P4H[D[L/^*iA58.PqG5i稛=MC!Ѡ+[:ske0VnQcpe3k8lA&jč1B'!00yD=w&>,ɒPA"{̀B HD@(“I**6{'|I- Db82xBK2jdOEN䊈sCt׋ZgŽ j#5GbHF:04(  ")|fhíW (~GE305;A @jW:HJq4>נTCۦ0e$8>!-icPtk`t1p3b GA# "2A[^fuՂx묻ܮQy0֒0Á*i Xk7eE]LZV[7U 4˴UNFenʨpәߐ(2_IZ<\GYV,L45_H}kQtmJdmS0\Met/6ه灝Oڭ6As~5mߜќ͉QN9*'["7]:5Pc +q}Swqd~z2|xM7O.ޛY6.THrJrb\m?PKҙB̡\lib/unicore/lib/IDS/Y.pluKo%F׺ /If?@`06q,53mU I2>ߩvU$xT,Evz0۫?y^w|=2xLj?ݿp=q=oLJݗw>vЈO1BχC3}W/u|2xŇcx<ӿwr 7oOo闟Ûq<=\oqr6xjtfQ<ܦϲ|>?_i2ϛ=<ԔlοE-4DKu /jP72pf үa< 5Qf53TOE"k5F(5~_4Ӿ*}WL=xsX._D~{9~F-]!:FC(l9,[e!al"4 #:);v6њ=^4kdZhmt}>+y"}")$HX!J())3vyN]YlQजN\jU #i,'yΐzӄI^$/rWt#VEHvMB49.U $*2Ȭ"FF|.$7Vhf/] iBЅ A.]t!B܁++eoS %؎ C8̅S\HILv(A&;%pKޠaeM\Le %Y]%TNae %T^ WLQxx%IZ j%ǕW2[l%zf6ۭJf+C5l`#j= m6I#FIhFL-阴[V@xR2w6iw> dXE {җSHzfpflp6}wNavr;AV:Ss ʱH.WphC,#7/YRqܼw(CMu] . (Sf_ߠԃ#-^$2-T%5tutE#.S&$h"Eu)*]TVq:]NnvCD.nӎ;lI *Rv~ht)+aABC,,0s <"XrUx]"ꃑUP޻4!%L¹sRUj̈씘.۱s/GQre6 丒'BB(J+]+E#n' Vu'Q ƈVdסn vc846t:`ac7r6lEwՎ ]898UtqHe tMNf^fj5:+B/l*r)<&[X?x6ثJTh tV \RcE+CV=$ $^ڲky(Tl!t]AWUt]EW5t ]CeՃN"'ZhPmD(SX)9,bC'XTdݦnM%aTQ%SJv;:4{!R%4o|iW|Z.I@"fHH#N1"$c,Y8(CU,"ưf='zK)gfmVPfQ%A^"fiY׍INC R>C雖0]WLg]륅I(AyY?y(@-]F'D jZ5ʊDmmk5qMh42h1v*U)T<z@;իz$R%!<k =pJɸx3hl2׃'@bƛ~Miץ0䀛π> W;#[q4g'ړn99X5G|>>:`fXo.b~ٔz+{'8s.Gyl3kjuiKr}۸%=^Hvg6j52m6[= QdN%q6fwޝ7̷[bar$i7?;3l>2}5}çFr8`jo q0Q(ߐq]b΢)<[ Knp:2iPKљB)4lib/unicore/lib/IDSB/N.pluAO0 ˯x6ą]&ڊJU7mǴ@4qa!yO67(-P<{$iKPp4 w0]@53)=yAw-BC8 ĩ]|gn|aDMh>( ua;͋x3l]>&Ϟ>:ÁǸeK>n5ih-y‡GJbgEneMͱߥXp$ڢ4m[ywc{0 X6 JiB$qGKW/TGDwH#ESTǓD4 _Rb$-ɽYr\P=(APKҙB=֯-lib/unicore/lib/IDST/N.pluN0SLC/K$"RVmZlF@'֒-{ƳN0)@t$by:Ec:%1Lgb:PkyϦrkХ%]R$Z4 ;,`T3 -jBCaEI c%i^Ļ|a216y?yY[ ܖśwg[8)]\މ%npn D ĕ\N" U])BvT44|SxKc{j5hR$Y*GE"DS_PKҙB(ʠJ%lib/unicore/lib/IDST/Y.pluAO0 Wi]`CC.ډJS7mǴ@qa1F?@A)&Y1cS_fqom81E+T<ûrֳBY*1p*5Smf;V/35Hpޣ$Ȩv._Mwk)6cp,z ܖ[ h[g)4 ,נwbl[:ѧ넸ਅ9V|J Აn!MU4U$D)vQ:IX,&iL|_sg46_PKљB'z9lib/unicore/lib/Ideo/N.pluAO0x^ dnU.Y+Bdvcpq81_foq?{em|>JMs4pP(A8!'=hOЪꬣVpvO+{r/AnR rsB7Hs' h NLmݔu}c}uPƓ3Rc(irk4\QzHӃ~a0mH`%&O7H<3u޾=_;{UG,UX.Gb!#?;EYo"8LI̔L)DiZUdu5S'e)P( TѲIs*B^QRBʙv$PKљB;t-lib/unicore/lib/Ideo/Y.pluKo0毘 _P$$P$J)im1Ȃw٦)$@}]qo5|[}DtsԽqPA2ty$CNzМUs=ZG//M|Ox ة\#]ܨ* d愶HaDGޔhڎLgmUU}c}uuPƓ3Rc)ivkԬs =@d.t9؉ɴ|9pəǩyۏ+|o'cj銭rko )r M/ۤxe;mu{>}^~z:>/ۏ>lZq9NmM;=4wx0eϧ)׿iJoe#6=omeM/w;m?_Ӈˇ__ޟϗxne6]^\_.|zdd:NO>^I;m>]ӣYsPo_?m{Nu:mUϧwב:=/Wnwٮ_/駟޵Os; noe7^6VQj5޲: hqےxX *7C!$YQֶM mq<F^n?i(vs<6c['* BeQcB*[v>BU5(S, j겅,aMr N҆PE 5IP] Hh${DYl"/7zڸE++VVX E٨"2[6s@\ni)?yD.éL47v!։~fEM2IF{&Lf d!VPFZ*$lr .C"͓hLZTEB2 eҚ:(E@ %J2 3 (I}*j8`C8>O)4]uf^gFLg$H$#IF$I2d)vvP @F??ltg4J^92rdNvHg%Gf"l/ D9B8%f3 3!Vr+˅tR.XITPRAJ론RYAJm RЦ)mǏp( )A)(RPpt )(RBg %KB %b]+4:,,iJٕ+eWʮ[)b+V[еRiJJ 7f(4G[ X a!hq"ĆB~8H>UR5Ֆak$eas4nת;N{l_s;N8bw뉅'ݞgCwATD|d}s2"u<>-f[4l5Yy`s6c0>P☝Hw TjEuPH3nDlo;ïϼB.BkpĬ^A WSD0]Eފf 4Y;8q"9lbgOPMf+\P{EAPEd)š]}j5aP[;V-32W"/CnnA"S&mjgSDqaw}5+D:Vu,ZHk B쌢.AdZ:OVKETz2u3A/j"MR Rfw](cUwo{]!]m[;wD Vd!vi:hp-+f.=ue:߻ޟPQNkU[VUm%k{qPz|`3`70x ^88 N< .:rs_wPKҙB#Wy lib/unicore/lib/In/2_1.pluMoϚ_|IvDOĀ!/vrKmki&}8`?.YUogCwf>_6xe;mu{2߯O/V\ίߘyڴAs/x>^Iopi3e3:Oy9]ir>/o6_ޟs<]bmMr?ojΧoJAvpz2?tx݌v}|nG&砜߾~x5՜ӻx5ONjx]ӻv_i~~!ig/ۜVQj5޲: hqےxX *7C!$YQֶM mq<~P \ylǶj7+NTh2Q]ˢ $p}T{}lk$%1PY7;e QYc6189?6*Z!'H ABÏ #ĽbEy;He/ZYbeZ.FiAL1 f#G4h 2*a H#pc.~l=ANiR4)4k4+d+lV(B#dVr6b !exʼnI~\ J&-"LB2iPN~B@ LZh>5ZBT!NBTG.:33#I3d$H$#IF$I P;;l(Q @F 6bp3rd%92';s3#Cb6pJNZ!+IBx:)JD|pr*TPRAPPLʬRA6v)hSRq6UP8E r )(R8:E )tF3 PB PbBKŏk.\iBsT PmJٕ+eW[iJb+V~ZRiJ Tuǣ3X a!hq"ĆB~8H>UR5Ֆak$eas4nת;N{l_s;N8bw뉅'ݞ'CwATD|d|LSEi}<5f["hHk6 Uьas6MSȢ|{Ccv"S/PA",uf{YQH"~ N2MET!5dW"uv&!B8%lN:vH?.b>΢'J*U%.w[V!vFQk ZH}odfߥ"\]E=u3A/j"MR R&w](cUwo{]!]m[;wD Vd!vi:hp-+f.=ue:߻ޟPQNkU[VUm%k{qPz|`;v`?e2x48 ΃2 vm}PKҙBKŭlib/unicore/lib/In/3_0.pluMoϚ_ы=N7^0Ů6@cmM"qg"EXHwiMG쾟o6|~F@G#怒PpREKX^@Nd`4#Z͍RtR10ceʌkFFIDZF^H"fre!"Gd k0U"I:{YYE>ӢHf@0ZQXɪ .lEb+ШL "LB2iP(EAB@ LXh>mtBT!NBmj0HI2d$H$#IFl<!-6(Q @vsb6/#GPgȑ9S)ql@cphr 1(ћ 2,r!EʷJʍ] *T*TP墠RYAJm RЦP*b=88)q YPHJHA"SPHABe*Pz(XHpX )R,XHTU֭*KcG89@r[Iv%Jڕd+V l%JdV2dZɴi%JLkTd5213.(CxԂ nSʶV? uŀk66nf499l.eb[J7XE= -(Br'a}"q,7vk++[e8Xjnp-ܹ/z:a=l})`A(B *"tDe{eދuy̠Yy\:w'o^]m]$Tcݺ].OJzZZt&ѥ QX+Un]._ ].2Y*+MOl"3FA+D 21|FlB!QV6q^/z=zpw3lAMj:C36V[6keƚdkk1P ;v"$vu]ۏ6\J { TP骘uzIPu^bY*I^KK]T! HP3[ĦoZ>>(T^/.ZZb󐾜Tp"wDS,~ A[BPѸ`n.[DY OYO^r^B ,kIE׌(f9KwAaW.^5]dgP&Jش'*mw."}IW33jYXp .hV!<ƨd.c6z[u@-O1KDK6BUcEz8Qًt_j6MAnEʺm:-jTENp;C Ƌ2*[[ mؤoRI/Mto*5V|+Č@oяm]]͝zW Aj +buS'ZZ!vţ?NfoM*l2 6`; v`?8 88N<8.:nPKҙBLTP)lib/unicore/lib/In/3_1.pluMo$Ϛ_ц{IW arzWJQ0M>qSdX,^4Տǻwݟ:{ަOߗiamz~y]#ί/q~aWo緧4ӷx3>=}i_.~{~M/~mzN|:>O_v~?ί_ǗM]/t<=L?}:"~z{guwty=!eqy|zNwt&>|~]tw3K?뺊9l2a6 yȯ`EA憟6~6[dH(Q!L%L PuLb7/6(BETh2TDDclgDg9Eq.BJylfs6"6VXˌ͊5:eH/Ϫ0[9zx4^ 50+@aPJ$lVQ0Yl '2Z`4#ZRtR10bcƈ[4GFI1G^I"f re!"Gd s0*$IX{ANiѬiJҪiJfV@0ڠe%e%K6@*\F%&Ť,$I( @)%J(eFIͩh⤂ q$Ua?,3ۙΌ$y.H$#IF$I2dil@F?7l_FLȑ#s24S(9!z؀phr ,2,r!EJ .J *T*BT*VVPRAB)TGZR6ǽP8E t )(R8:E )TF2 PB b!BKů2oUY78 QuXARJڕ+iWҮ$[IRd+V$[еi%JL+V2dZVV#3~@ǣBJTO*Z0 ;*ظ{s 8m[! 1ez@Z P%''a'|"q,oL+clow5ֹj4q^YVڣw^xE/h5P""2H'ZMYF8(AW{QY.8-:˒bѹ[=yJ:{HBvc઒PSE'Gv9]ڵѵJMѥ Q+U].ֿ ]dVBWl "FAD׊I>g|1ʨJ[|˹^Ok*[hPZjmL-Ђٶ%~-fJS!KgEuvvu]6g%/@FTetU,]L ~^}RT:K,5TE>t۫ _ ^)Um".ֵ/OՄ, UWamn?PKҙBO6lib/unicore/lib/In/3_2.pluMo$Ϛ_ц{IW arzWJQ0M>qSdX*4Տǻwݟ:[ަOߗiamz~y]3ί/q~CQ/4f7Mm<,Oy<}ڧ׷w9_o/sۯmx?ϯtϧm'ly??O8~9_7s'_xz't|'yvORwb~oe<~L\ӻˈ2=~VF;婂og :`+EkdVseg(hjnYHǠ36fl 5bD\L(%QFWB#`\mE$XĬ!֮aUC"Ip=C hմ(gZI2 CV2 +Ud !E 4NX &eL2ʤ-CuQUDJ(Q +313%hNEۛ(N*(N8IBh:ylg$y.Δ$SLI2%ɔ$SLIPvȨ@ d*v.@ع!c 2rdʑۗ9(986 aD:\,A%(V$-˅9I"ד]F*TRJeBʢ U*TPq)Ԧp:UHz;);AR*RHI*RH"SH"NFdC<R,X, )R,X*vu8|cyGpT] rP䶒v%Jڕ+VJd+VnԵi%JL+V2dZ"4 q=jE@Ve[!u5 ^،̛l Y&- ؠt%[b"$-19 ? 9Sݲ3X[9m:[-ܭ^;G gQg{ C"Z %*ҍEJʢMyb F$XtEO޲]gIZnL\u$4TȡrWCPyTPm"Dy*5D b\UUAE&kuE֐)\,2˘ht58hPȜgx/&2:iI[|˹(Gj(P-,gDT xLV:U4ڇ~ވ|E92YrNWT"gDj8ôY1Ջ,/Z@[~PHɮ쳆xX^<4dEkA3Kt@AV OOYꢌ,%𤣻.m# 'Q̢h׵W'®|0 Vdڭ(w_DXo"U,9ŬۛNaBU 6h"u5c2TV]˩W;$wT9$!uT$AͶr{Z#M3nh*2ͦ@LLn`T\ĩL8k:ަk:ǚ>a#>ZVo|^ڷqՒ:zflna6xipep\::T7j5Ɇ^0PKҙBUH|lib/unicore/lib/In/4_0.pluM; tIfOD  ǕԒ6Y$y"5*Vuc_[Y^y/]W]-N/o??߯͸<}Y7F>^c燧~X߲q9=<>.I엯_^WWoWtYr\>,|\\>],OoZ[eܟ?,?a}r,tz>jqv.קRO_Au|x^O~~z_:wn6͋'& C(z(ώ~P)و.j8:]Aܾu!nz .۵@#O ^JU'" hHV U )$̘?|YawQŵ$i4ieqghidd=9H6y)Wюn!UHSb4)7,*R (P@FZ 8Fm*މq1AfZCS'l1"or7"[tvaAdC ͐!M" W -$AlH*dw̩JNm*dJ.00d k00dA>JrϘaPBU U)kBU U)TPBU U)TPB- ߿8tPB E(^A x#(BEJv)17(i)(A;Qf08V V*RI[?9SRJ*UTWTRJ*ԦRJT%U vԦz]WH"#RJE*JE*T#tF3*)V:e*)VRXI6qlJNxz#mUFڍi7nHv#FdHl#FϺ62mdȴi#FL[Zb"'M+*P.*.*F5֔mka*ڎ9캕yrن} ľG;o']=E(Ar34>|I݋Y|:뎂!00fC|8NGGT+HF7tP7\|f݌hP*(30>0Bjh D: `tƖV=T$سR+ YI‰v3]hͨLM oE:6Unӳ"D{JALmvz 缜&O>]zPӗz,rwh[>Xr\Kaտeowr\_ˇcy|z~w sۯ}y_ܟ.z\η烰 rey:?~S0綾r{[g ˱hQU_?x]O',O_AC=\d/ǧr\^O?o۫?Vݬ֛j7 㴺Eq >?;=CEѥ.j$nV9ٜm۶ (jK }KUZoh9]0 ?Btr N|Sp!NC}t;E)U}S UWkfiMqņӴc;h*$)aTwQ΢ٱ)^#y-N-NQ#!J^7hd;U4{+b_ мUh.OJ$SLU2U;T%'8SLU2UT%)(0&Wt&Widʑ)G< MRJY+( U)TPBU U)TPBU (,QB E(lrZaM>2-TDhgd*RHaUaDkڠњ4Ua(JJTJ%1U^VQDSM6TjSW QM5RJm*TRʲ^T =gԽ ;3댵Ma9r<GH Q4G=*DYF3'ÝfV YE(A"gE.@IAb4QO0hh+XZf_"CMRؕ>4m4vwt;N6hsJJSctͼqZ t2uD2pŌK֑ 1^+ĄQ!.Ƌd $ȨGt!HDvHh!Z9jfMPWq@TnǾ*@>gvG5"r,O^ ]FHI Ӛ$f8VzzRk(YfPAAHãV^>yCEfTBM!6@Ms p ,Y# YkE‹vZɋ2eYV;dY*ڜHǒ5pk=6^3nY-b-$<UDyǻϐb-Lv6&ty BdɀdugODʮ:hP*Fk PoqFJ-O! #eˡ,#$&v"tS&›VQ*YYv44HgrrL[y#R|I4quM_EzIkw&ΙEi4%FSE:%"! ]C5uQwpk7T;츛jr<`?Er>y`?&I;9z!'ظi&[l%w N;?m&=G:qmXvO/no}b/dL6Sodjg*AĬ#UysCqY+g$7Sxm֪9n6m^掔쓹.|7 ]rS G"Y|9_/_-Xv_WG^~|x^~}x_(pVKUv|oW[rxLqyw^o_~My8~zX~x?_v^g&ק߮%V~-狚#r鼨o{W{oiOoOonmpU:>N|7MOUwk󴆴h|G!GqD&#duwv=C`$:5||i$USrUnPѫT1nJ)FQZIf6"ҪAMUE6]y ,U*~A#@; 3qYr_kAW]sO i} .];d>SūE "t@y.A͋V!%RӲ7hXxT>%i U T)R.RPJARɧRRa ”.S>)Tthz r(CRJE*umRQJE*U*TThQY uÇ*"TD:{GQ#(Rt2T,6);!JAQUZ-t@JVijSVQm *HTY1 m4ihV5Ц9ЦMC" EˢmJm"n#EN:4th/ :4th없 :4VFce4Cc=4Xbc!6:q~-hư+M=R_UG:t#@g؝awBg؝awvMΘ;c3Θ;cg39}z P5qA9z׸{4)98Ǯpڨ8ʋúY' ʐ%@)i,̨ s4:ځ" 0f}nxnxF?::RҚ5hgevwr\_nP2T& ^"E5v@:d_49s:me:9|Rٗ)Pe [v"E_ƧsOC;t@CVkQDfQi]3Vv߮ I#\606ZƬHij/1] 3DN5ǧ%J{1%&QJI3Ҁ2HB>UC<Ǒ4cu"_&.;);&nr+Y{eDĴnS͓t\VDSq#t `,Y7~"t`mXnLs/\D IϪn6A]nT.)v q9N="ҥ#J3yH γ<ݻMqnCqa(|mQ~* OZ_2 5LIhϔc͡#,R%M_Qz*2"14hSkW'_W ZJQ m֝6>9}ʱ{iө#'u8}g_W&Ǹq_opJdu(*Ϯ&0E)?,逻1Dz"Mk25w*8Ђ nZ0#S7U_۩l( HI±!N _mrl.LKOW:~ztO5#nL(KM&A]* n{7LU|].$1~uLeD9t.!9HnhlG<*"GF 2M4 rHώ*шQwrk{ڋp f܍'sƓxdq Z\ƞ76C74R:ݴleq@vvi[Y.G8Ky b/b>~9h@3KZlcơ=K`sc/C8oƛnGha|gl\q5͸wna凥 ,{tXPKҙBFy lib/unicore/lib/In/5_1.pluM; tInl" H-q%MV(}ާANYՏdsML߼z{vz痿N.5NOo??> u:?]?(T{:ZEtׯO/OYw$.WўzwǧˑQwi"ڂhK|m;>Bl _ h9}=DK-R6lJ)Ջs; Ѫ(qmbtȗfH>|j6mvQtX vZڠ fQxSEY򤂯8DI%ࠫBWj^*ԢUoTjӈ3ygtO,SEhiC ^RUkHmJ_*Vq2d;''ɞ'#NF8VEdɕx+>ɕxZt5KU2䮹,S N+, )S NA8q DY5K- Z(hQ6uZQo3}Hsى"E K= ˥$J%dSQUҨ {d;DL)bUMYtb*!VUnkTaT$HT"Q"Q]VEDa*T^"L]DzS7+n`7VSFU#쨊D*UvTED*h*KT*,V2+z\ʢ,ESR fu!JC( Q4DiҐ!EC )R4h}c76J R7F}Kʶ%BpR5 *4LshѵF -8=ͱٙ5ݫzW}8v(eO:{PggmV)''|49@|gz\{qPa9:::A1::R5 lQ Ik,ҖZ"E ߨet"Df2s:ͪLhç.kPQ(ک%|:dA;Eu"2sFtdA,"[5|4˪^BT@iH( C"Z2R$.j>] K\͋N ԋQuer;}쳆/Ђ>v%Q/-#Q\yCɓUR(*DVBLkjFJ8u c4NK+" ^! '‰p.z+hŧi4J[Pm`Z27XX0ކ pVnvh&G"Ɍ Q 5=Qٵ p JG?9ֻ* Y[Hf&JrtvrCy[h{< QVR;9֗ څ.TZ2+USHxrlNsh(D1Qo9QcP JQCUMի丏\"ޝ%؜$jh 8]c-¶+ȑqrHS6nr]Cg(ѐn4%243~C."e%DCEwN&\'HiNvBx-*uZNʫi# n_=) /hBzyD:3dHgv ʑqbC|ȻֿLiKgNt.093 yf/q.S!uϼq(,)ĢERA&DPy|z+T)^2AT5DszmM?m>P"NN5:umU*":e[-&"Z˝VDBPh4!jsk;;W7Ɯuƻ]8zTbwN.htbgqwqM4{ ;cGLWb8DW5y g:_Vfd7c,V}ѱثc_~dbo/8l0FW~kbl ki-:|1јY6˵' Z3|0ݲ4V3WݘKs8[lu~e˭^̗,6B6gcl`dq5&ކŸ=>ݧ_=i~<_hp҇{>0xto7Mv}z|Lzx|W'ۯ޼?ӏ/?7yz\88Ow9Vzt/E}tLt~U繗ϟ:]^U\?>}N[jOout:=/ϗo7:ww)$ }ջ;>] EkXO5΢u .ckFW5Mvt1v&hmAcU.ms;I "+ii"RuHcoG(jlFc*ZЭE)R4o5o#BҼ9EY1ȶL!] * SZb {-ӷZޙcb(vFlB͚fyaAf- b7h2iQE %AX $Gl{jk+6eI3c"8Fp1c # ##>VQaҮ]2bDźƆ;XN!8sE!8SN!8SN!$QR!XbQEY5iYDu̱a5D±/\q)ּB5V이½*#Ct2Z V)PՖʤRY*`ۙ*Dp*!JY*!ܪJ`*FݭJ`A[G`J?~ԕJ`*VUܨJ*!r*!ʡQ+Gr*k_×'rh*ʡP 5U#(4J#(4J#P4BE#P4BVzc7V߸(|X}c7V߲mdV"THgIt]k6WIQߣU;wZb){V9An c1o Mgz)q[(h$N$hhi?Fc#ӊ[F0*Tf^YPԠQO.h$ j.iiinG)IhvMT;Tֵ?sԉ [M2$ b"[Vn%U./tJsZ5XD/16VfK:5otJha cWu0ݕ@C+a2r(EhebӤ9єzX6:a,+ϙ n$ 0#d<5#xF4G%ep[]Q:Qg2\WVc-TOd bnk]AnCl5`cA z4$2k}#G#np U Pj41r_}1\E׹{ܝc޾z.?b%y%/ZqZ"rs&ϮױDG1'"Ҝ_~?#v[Vtc[uF)vnNFl0` .čjUn[39.-׏J>Ӈ{ݿtYⷫ.Kxy<>\:ӛzqz_ܿ>=/r|~96x~~\y+.狺yQO?\ϗǯ*8󻿝_ӗ i׏OOout:=/3otZn )d 4D&: r'*nݽ(34EA遏.j&4>"WENdhSuQUE= ؠ] Lrʐ̇BGvA*U5\Q":Gi%B"d;z}0⠋˪( S/Hӈ)m|C: Z E[b)J,Yd2JES N9h8%K8q )*-*-ЧOi>CO;A֦JA26eZq*TĩkEE8q*TĩS"NE*Iֺi*ZThQѢ n>ƈ"SzF"]]9R3y2Di*iVcS Rj6e3Ī=UQ5$jHԐ!Qs !QC0 a´mF=i;8m? ZDUC0-jV-QʉjHԐ!QD5$jHԐiU[1Vio̾1֩׉NmlƦiH4m"Ŕ}PQ:tD#J#@G:MugΝ9w9[3Μ;s̹g3]pM u{7*irVz4G?pk""A7C ǑpP9lȑu Qh\[n??I3XQ+U?X,qNuu7t禁禁g*̤'L6AӞuhsH@]&9~()T?2>]W2ڡZ"NZ{d RF7-s|S/5-;_7 2EhBwh;~8Eڶ2G R/*k)ꪄu|~E0H;H6א] ) H0E)*,:y)1"D  ީ{HulDghکlҌX,D ESEQ"(IWIEܕ^H~e#-/6uJ>iP8%뒑"9.Y >ZpzeIR䛥0d);!KRυ^2*-L2U~2FDi74FIVO2Uu.YnS(B <&7$I(. A4 Cꛃ,A&._R~@Jpf7d>5`СwisؽhD_<*"KUF |24"=Q2 *_u5"q2D[RjlJx›17adrblex3ލwhq2>lq1ո7n܍_~l~U;>~PKҙB*F6lib/unicore/lib/Jg/Ain.pluOO0 ͧx6 1إ4u!qL[o JS`?D"ى H@֩j1$j 剘T<ÚrֳYtiI^x"4ЩIj-=w1ӹl 3F5!Ox7֢$Xׅ?,/]Mwk)60ȳ;-yWN^plSH]\ވnPn D ĕ\g"4`LESJO  VJy g,4O&wj$rQ$iu?$RSPKҙB$lib/unicore/lib/Jg/Alaph.plu1O0WCh]*%HUZ)\sFEL؃uw}7H67$+P&_?} "[{Rxm0UZNvmKP'tWZuc. ҄^A\E3JO jUƘHGr9Mdzow7haPKҙBud =lib/unicore/lib/Jg/Alef.pluON0 =/_vmleRTu8)CH$;y~~~asI(,a#pPU ]ɐj'hUN{*hھyYjg[X\]\r2 U#͑ˆА#|*QP4/|aм}S:p46Dq;[|F>0&49;GE.a`gs}eơhނ?³;+L}F`kf4>m'ĕ>*1 Ut i|/`/FŞMa Q>0Vihqw,c-ڋPKҙB%lib/unicore/lib/Jg/Burushas.pluAO0 Wi]`ۉeETi8R. CHD?19 M4 :Ea(]'ĕG-α U t iB/ Z%'MƘHGr9IdrgJ{PKҙB j:lib/unicore/lib/Jg/Dal.pluO0Ɵ_xQX4"D^HVe&>v]kNlzߍ0Y M'9duJ_b-nTYkK'U Fy6Aw BM8ةR\S-]|lVVD}P'|hcPkPvrRl.a/C@*ے7xUg͙arγQVwl׫jD dK~G1s/Tw [Ύ7g=7Bx X.2"ݬ6h>hGR"[ X /PKҙBnŁ.lib/unicore/lib/Jg/DalathRi.pluON@=ӯx4r!iMH!PLP`еm)8 gw0U NvMCP'8*h+^ SH;{%M*<VP٠zmEQ c'Y<~f7w=z]=PKҙB&$lib/unicore/lib/Jg/E.plu1O0W<ԡ 0ХRTU"1:ɵ18g\{.PĄ=Xwwc\@dllj0cppok1])Z ޕ]"W'C iaR:VgK]'ĕXe*B4pWTpEk1&XL<ܛhd0_PKҙB5lib/unicore/lib/Jg/FarsiYeh.pluAo0 W<āH0.RUI;RgJmNK$;_0Y-m8Jr$~Uڴ8K6Lgb:PkiǦtkЅ%y]P}"qtK7x"ǘOf_P֚ԏ5y‡6 a'YU]OqMK;G s/Tw"Ԯ `LI7  VJy g,8j66rZ>}Z,Jt PKҙB@$lib/unicore/lib/Jg/Fe.plu1O0W<ԡ  tTDҪM3r.@=(b{~1~d|S Mc*[ڿ(E:'ڪqL7'bVFywgWHUlIBaԤNՙO;wӹ^`gT 5Hpޣ$ɕQ?,/]\c8SlX(;-ENѶ Sh_XAj7ٶuO qQ9V|J Აn!MU4U$D)vQl$}d,4O&f~ PKҙBSG02lib/unicore/lib/Jg/Feh.pluAO0 ˯xh]`$T2ETi8R) CH$[_?Oqs$i(=\)1Ί2tO)p bi-޼;y= L)uw:@sz'Qͺ#}>8Jw~^lZ7 X%g4Ƌ^+<3VYZ${ŷDz9.&J PKҙB&/'$lib/unicore/lib/Jg/FinalSem.plu1O0W<ԡ B0ХRTU"1:ɵ18g\{.PĄ=Xwwc\@dllj0cppok1])Z ޕ]"W'C iaR:VgK]'ĕXe*B4pWTpEk1&XL<ܛhd0_PKҙB;lib/unicore/lib/Jg/Gaf.pluON@=_. D l$(&@WfU{n2;͛7=t@FNGrrKP=q0 yiu dÆM< 3K]P-R(Z0]1&\`'## BIiEF]%Io x~c^}pyMM܆ŻwG+8'1J]\>EeD_Ĺ|nW,$[5i R~qa /RBi?NMn w:mBMn:J:7PKҙB`)Ҡ,lib/unicore/lib/Jg/Gamal.pluOO0 ˧x62ATitH[طDž!N$R/?O0Y5ui%R v[GؚLb &Rgy϶k4#|vC&qLGgxYϸ-d+>j hhQ J]+1NBoUf=j)q; SH^0\މnPi Dĕ N( >tre;ˋtئ5|?1D8l=nK-S-W}kk; j-AuB\iqoU/_H,[HzqM* [Q1u8:OпU㘮NP YϮ fғvBaԤN՚;\/35Hxwޣ$Ȩv._Mwk)6cp,z ܖk h[g)4 ,נ7bl[:ч넸ਅ9V|J g!B 8hVI|Q8Au1&\N<ܚBPKҙB$lib/unicore/lib/Jg/Heth.plu1O0WCh]*%HUZ)\sFEL؃uw}7H67$+P&_?} "[{Rxm0UZNvmKP'tWZuc. ҄^A\E3JO jUƘHGr9Mdzow7haPKҙB D$0lib/unicore/lib/Jg/Kaf.plun0D+qR+8 j) Bd!nu8mnZPO%3}aDdqȟ=IKP#iq4 emnOu ӎM%wnD_ ĥ\"\hanʀ._u)i"Qq0J)OrgAw@X4DUPKҙB$lib/unicore/lib/Jg/Kaph.plu1O0W<ԡ e.HUZ)\sFEL؃uw}7lo IVxXeTh\}[[5DL (i־-=ZHC8 ԩ:]bn: ,|!&4 {:2jE˗kl}M~" E}G)Ya 5X5ۖN:!87*sח/T $\- j7.^1boW|PKҙB 4$lib/unicore/lib/Jg/Khaph.plu1O0WCh; R)ADҪM3r.@=(b{~ ?@A)&Y1![ڿ(E:'ڪqL'bVFywgWHUlIBaԤNՙ O;^`gT 5Hpޣ$بv._Mwk)6cp,z ܖ[ h[g) ,נwbl[:ѧ넸⨃]_P%pYH&*Ux*NPz 6D>2i'{IG#PKҙBV&lib/unicore/lib/Jg/KnottedH.plu1o0g+b`i,T j( ::A:ʹRuN ƿ@E-i)=`fhNj,Q^l9V>м}S:p46L-kj iQ OJ# N" dxHͳ'`Y(q;. Sh_A7ٴM/ q s2w}J@u!B ؋hQPXAmupEj!Z,HfE{7PKҙBVQ1lib/unicore/lib/Jg/Lam.pluAO@x&r&M!PL2i'{YFF PKҙB,lib/unicore/lib/Jg/Meem.plu1O0WCh;0ХRUVbtkcpq{.PĄ-{M0Y M$N OiHPp2 w0ݞ@5 )=yAw-BC8 ĩH35_P54DԄ2I'{3 PKҙBe)lib/unicore/lib/Jg/NoJoinin.pluON0<_1C/KBZ.@QJ$n綈χyy7>ٱd yP=Q9 q{tŎ,yE|q[P!~]^;55&?hg$t(h y?m jqC8l{UVSycsM}6`(Ǝ{󪇳fa*yWʶd.N[؉!mesXRCй1U4RV{BOa77Ӽ̦dQ\.&<I]z$$,Q.A3vYr!hJ6M*{d! . PKҙB 3lib/unicore/lib/Jg/Noon.pluAO@_.  mMH!PL5Qjc- um(1N&[?}ty]K=v%oY`r+;j AӴQs0]Be@pdP.]0%*v< &2^2X))t\,ݪfE{5摄PKҙB/@$lib/unicore/lib/Jg/Nun.plu1O0W<ԡ UR)ADҪM3r.@=(b{~1~d|S McCNQ1u8:OзUnNP YϮ fғ40Ij35(v.0nsϨ'"jBCGI+Y^|6ݭqا!±Pdw4`p[o1m؟о[+\މnPm DJ~s2w}B@e!B 8hVI|S8A5IX.'iLn PKҙB#lib/unicore/lib/Jg/Nya.pluAO@xN\iMH!PL$SD"p0J)ObgIw\9PKҙB^3*$lib/unicore/lib/Jg/Qaph.plu1O0W<ԡ ѥRTU"1:ɵ18g\{.PĄ=Xwwc\@dllj0cppok1])Z ޕ]"W'C iaR:VgK]'ĕXe*B4pWTpEk1&XL<ܛhd0_PKҙB`Alib/unicore/lib/Jg/Reh.pluON0<_1U@ ZUҒTDҪM8:ɶ186r8aKq d8Cﱎ#Tε,*eDT"?C|UXG\O8[WC)J=5LcҜQTҜ[Q*r5r YK .aa&>Ze<9#5چ:۝-97gONְFLuCN:5S5L#7~Hܴ ^>Ŀm=!K Q*|^,p[gX 4܋vpa4|(ZVi 8<0M PKҙBl!$lib/unicore/lib/Jg/Reversed.plu1O0W<ԡ R)ADҪM3r.@=(b{~1~d|S McCNQ1u8:OзUnNP YϮ fғ40Ij35(v.0sϨ'"jBCGI+Y^|6ݭqا!±Pdw4`p[o1m؟о[+\މnPm DJ~s2w}B@e!B 8hVI|S8A5IX.'iL|q PKҙB+92lib/unicore/lib/Jg/Sad.pluAo0 W<āHӐи0hL1m ͖:Sn@;-~y(ֵa;xRl]>&K_>:Á]'ĕXe*B4pWTpEk1&XL<ܛhd0_PKҙBUvBlib/unicore/lib/Jg/Seen.pluOn0 =7_.TbqhѐPAP&혶fK)Msi%c??ѻ&C2dϫ=uCUQic-J?!'=*FѨ~2uJbRrO6traE%͉%"GRZ#'h`?۫4Kvi6٭q'ؤ}2mCܖƇ''kXl&:k!M $rȚJOǑ{${n oo_ʶzUАbkBy1 !$O"fgg(D8}\\`_`^!8$PKҙB/-$lib/unicore/lib/Jg/Semkath.plu1O0W<ԡ H0ХRTU"1:ɵ18g\{.PĄ=Xwwc\@dllj0cppok1])Z ޕ]"W'C iaR:VgK]'ĕXe*B4pWTpEk1&XL<ܛhd0_PKҙBM$lib/unicore/lib/Jg/Shin.plu1O0WCh+`)JjS$F'6猜 n IVxvxV 3AѸ j员Q]9U!Ҽ}[z1&5Smuf;lX UcHCDMh(>( >t26jE͗+l ]uz" E}G1Ia 5X5ۖN:!87*sח/T $- fj7.^1i'[ PKҙBU-s"lib/unicore/lib/Jg/SwashKaf.plu1O0g+^ա ХRU"1:ɵ18g\{.PĄ=XwwSL~db["McvCڿ*ez'ٺuLwgbVAuwb`WHUlIAZq4NՙO{R/ ƈR$|8Q|eb;+t_lr}!Ŷȟ>Bӈ=(zpC`QRrz'VQͶ#}^k-N:ͱ  ׅt i Z%gM`cL$"cE27fssc0_PKҙB I$lib/unicore/lib/Jg/SyriacWa.plu1O0W<ԡ e$TJjS$F'6猜 n Y#_H@Rfqmm8#1E+T2I'{3 PKҙBo,lib/unicore/lib/Jg/Tah.pluAO0 ˯x6 ieR;QꦭC☶H@=. q"~y( >t26jE͗+l ]uz" E}G1Ia 5X5ۖN:!87*sח/T $- fj7.^1i'[ PKҙB>%$lib/unicore/lib/Jg/TehMarb2.pluAO@x.z!&(&@Wf;UNff޾ H@S_fqmm81E+T<ûr޳By*?bh! 0LjRvt' lXUcDCDMh(>( >t26jEWkl}M~" E}G)Ya 5X5ۖN:!87*sח/T $\- fj7.^1i'[XߌFF PKҙB@D*lib/unicore/lib/Jg/TehMarbu.pluON@<ӯ1ȅBxܶ}k*+b<{ٙy# xl#ScJt~QD#mqؘLGb FBqŴc[@MLH@j¾g*R(gZ3z|2 ,6|>"9[FjW;d-W$l,8t-r iٝLs7F`}]fԉl+ĥ>Jv+t }'`/ZŞrna (I8}4  3ķ JEPKҙB˽%lib/unicore/lib/Jg/Teth.pluAO0 Wi]`8e"*MݴuH[RؿDž!N$R"ϟ @dllj0cwk1])Zޕ]"W'툡4PIj59(v.0sFԄ"yC'#Y^|:,ۦX!±Pdw4`pko1mм[+\މnPm DJ~Xe*B4pWTpE`cL$#v̯/7/PKҙBIh!i@lib/unicore/lib/Jg/Waw.pluOn0 =x Є(Ӹ0ZJUAP&혶fK)MsNK${~~s QgȞ=qqdjpTE ݞȐJgh[ h\yk gkp萒XɆnLQ`6挢D݊P#|*m|_8͢]Lv 4y:(6mi;{r5f23Ҕ2,ױ D_d ~#sTxx{W0֫F,Z3ʣTXȷ`Fi8|ݴ4_R0qZMZ=vպ`p/xP|PKҙB:'G=lib/unicore/lib/Jg/Yeh.pluON0 =_v eRTu8R)CHy~~~`skI(-,&(a AbF3])O5#.=:o^!JMT+.LӖrQ54 9§6%ΏE2l mu{o4{r ۃ 9wgNlb\P\>En`j D_ĕ|RsחTyx{^H=z]LbSr=j/ p{X.IOpqFCXHd C H PKҙBD8%lib/unicore/lib/Jg/YehBarre.pluAO0 Wi]`@څ]&JS7mǴ@qa1F?@A)&Y1![(E:'ڪqL7'bVFywgWHUlI;bh! 0TjRjvt' tXUcDÈP$|8Q|dd;ˋtئ5|?1D8l=nK-S-W}kk; j-AuB\ip]_P%pYH&*Ux"NPzl$}d,4O&fHn3/PKҙB e#lib/unicore/lib/Jg/YehWithT.pluAO@xN\BlMH!PL&_?} "[{Rxm0UZNvmKP'tWZuc. ҄^A\E3JO jUƘHGr9Mdzow7hd0_PKҙBDX~#lib/unicore/lib/Jg/YudhHe.plu1O0WCh]*%HUZ)\sFEL؃uw}7H67$+P&_?} "[{Rxm0UZNvmKP'tWZuc. ҄^A\E3JO jUƘHGr9Mdzow7hd0_PKҙB$lib/unicore/lib/Jg/Zain.plu1O0W<ԡ e!TJjS$F'6猜 n Y#_H@Rfqmm8#1E+T2I'{3 PKҙBe$lib/unicore/lib/Jg/Zhain.plu1O0WCh; R)ADҪM3r.@=(b{~ ?@A)&Y1![ڿ(E:'ڪqL'bVFywgWHUlIBaԤNՙ O;^`gT 5Hpޣ$بv._Mwk)6cp,z ܖ[ h[g) ,נwbl[:ѧ넸⨃]_P%pYH&*Ux*NPz 6D>2i'{IF#PKҙBKs,lib/unicore/lib/JoinC/N.plu1O0WCh ]HQZ)\sFs"&Β-=nOȷ8-P<l,CP4Xt}&&(XS.{6l_.-Zp$֢鎮D3qdkP54 y‡%.Layu]p<$'a8gmw4bp;oޝnSȻ[Kf$>M+D $S삩h!Qy0J)Oj^ER(zP%h#DS_PKҙB)W%lib/unicore/lib/JoinC/Y.pluAO0 Wi]`8pDTu!qL[o J]`8Hl??bs$ki(|PKҙBz[.lib/unicore/lib/Jt/C.pluAO@x<ȅ%6i Bqtu;k[T1=Lv7L09 M$N O4Ku t8K1Lgb:PkyϦrkХ%]R$Z4 ;Y$XULÈА'|kQXIv._e& }M=}ry}G%oE` 鋿k; n-AtI9Z|* BEh\.f;o P/~zX.IOUF#=WR("PKҙBIllib/unicore/lib/Jt/D.pluOo@SL6^PsqGEB%N{ڻzi˷HSliyon;**uE MDtKUk: uk,>e7?Sg'kjc20 MYJ&xR{rDԲgmLM۪xަz*7Rnqdl`ouG%{bO^lwF }: /i{&835>y8s( u@Srgj<s8yKbD$FRkY^K:Rf3ЬͧZ %%h)J>J/Y,]lR Tl "i<2JrZūPx-RC-EJM% Hŗq(VH2"3PKҙBcRXlib/unicore/lib/Jt/R.pluO]o@|6b$fݝHOOPzxpXnQ4YNVBtTUUe,w?,[ k:+5S-&{72ۻN_Q5R_ȯ Yoն( Mc"{wG Y-[ =>?Xa ֹRנ_wk؉ޑ̅{$g;UμW 8U[FݘB9r?/<`]f =x=M4 bɂX{z&E8f,ƦdBY: R%i8 YBb9N%eY6 h،"y&mbl0㘾$8"PKҙB!H lib/unicore/lib/Jt/T.pluMo6ү`C.mBJ ?Q$N׶oZ}ߗJSm`!pHx !qV|u+n,uA}<^iO2m^Ewy=N3V'= Gf(=0v?_rP>L LHnQ$W)S;$$&=s[;# Dj6qsnh$wft2Mhz ɑ u'V'm@II{i*)% '.aefVYQ+ȩM dMjwueĝ(lf (CCѓ" ׭$b@ץuYTT-ԪIT7 ɒ2ȓS`AU dbsPZ|?o(kB[aǑ}$Ba&!Iڪ0s݀8,ɑ -~ݹݱ5BWp?`*h a;T6;\DVƦqj\#aho3ϣR}49dȼfжxCb(ɼYq$@xdyz`m *PKҙB;# lib/unicore/lib/Jt/U.pluOo6ϫO \DIDsC N8z\JZ[m:!g Ey^m?JA|U\ݪ۟>vu]{npƧa~6yLEw<{}'DOOjyWtVy/eS|TO'u/s ??4#WI!L=~|t!t<5i~*z8;OyV߿7O]]KICk]o<|6 zwvr fm~9ҤAsjj QRAՁHTcH$.jX$ B% ʈ͂JX4f ݆ h6rĶcov}4&qQ4-62 u5hD (%Pbl/;c3c+#*"ǬD ώHbuš,-iQRPPlI2QPPPH#YD!`]v DaW v} $N RI,X*l֑,;L,3YL9AEƙa`5-;p e,\0_(cRV3 *wJMMMITVQEӠC7^Y7 {ihmq[ȤM64!w7C6$o ANH4j 8!YsƆ 2dpI׈ސ ɑy'a'`$ ITdfC/ I0#H >HyEcV4fGƳhI_Fh֩o /!m& NrLQ: ge$yZHR]:2lDRi%K:\43*|FE4+!YEXKJ$F2KcI#) h3*RETG'ER&]Kt0m Q:mZnvƋ7֮7Xz` oW[ji3v s'T~lOar^IBB(]9%XAG;2,Nl#FhܔPKҙBL5Dlib/unicore/lib/LOE/N.pluON0<_1^x%WTҪ Hd9пgCXKxv/Q.+|Q_l0_? q8鴥Y*Pzy:_ z;-R:#A;=N-#OxƠ&7`?ۋ2+eY<{< 2yWv^pLu*@F"۪J@ǖs{~-Bn蘥rg˅hg>Bx ̧ͦ7"HRy6<`tEe炯#ʒ$<9M'PKҙBUXElib/unicore/lib/Lb/AI.plu]<_1#vb'+ i)=W\JgIR^ie{dwsERv"N_?⏲߿a;,frſ~(MH9>ԍGw? 2LEmnwӶӝ|~{߾Yq rxڦ~<=YqxtԟE(юcwNOYx$?uY i.2NKoЪƛ%93qpE_(߸ms.2`IfPiUBTBQCR 4r ` %UHertFZņRIҚ)B0,,+[2RV" F G8^`IH)'Uk*55khPcV^ӚMtM t:H5yHu&Ҽ-[lIHԂri8$E._U>eu66)C0vr7ڛ6%RFh*f`Tp/SsG5uN 45)`cb *#YYjx jW ɐ2RII i=`+REyP͢96sZChQ:p *)OKmW_ SZU`ݐ g2¿3PKљB 3> Blib/unicore/lib/Lb/AL.pluKoF׼b /IL#c`Ȇ-Ȓ-&e@QIYUկϲ,ocz󫟖C[\\|xx]T~v~yϷwOo>U=>./Լjt󧇧ے^,+&_uy|EW?-??~ӱ|yz^n/q_?.Or{\yi8Z?^tçEs/?}~뻗ˇ/k 5n_/g|}|[Ou"E";CWQt6h;Q=r,hU%StY4vфw~8 S-& Uh(+d®Cuָ')HJ2R4lvjH2 &4eͫ(Fʞڨ9QFi<1l>jhjDGl Hu$0puՁWGPtkD?i`ǖ ɻwh;ѮAH\koL;Gs].Yh6B2`w v'gwFF̊h|MΞ 21Yc5;)H=&F4y9|T;+4D S QAU*S|G+tL$<:Dv ۾S5]_:J:}\1d6v $vquw.k\!mx)anmΉ<E(Aķeem\nTMpFվV+pu;gUC1`sqPX]uHp8"(q.)k[13U9`ͻk, нH]Zu}$:!t.nhj~@t8vFt;gsf Ydf N}*PM0j'l99~uIW^ Jg[Lj2%H_A }F;EQ9M8*2-rJ&HyD(;% hڰ261P!W 9ɸxM {'UCYXųq 5HIFFg1U)C \{Uݼױ8K77c }VԞU;=vBD5Wi |EW5҆A[Bւ>K )LY,X!s>N RB%>m+Hd]\'ڧFUPvADsxUS]A(E@B VQe+4TB.@; [ 9hr d;gs:|,df;ƮPܱF9XݴUHlJDv u;v&ϥN+JX|C$2^-jG6],kz!On.?  e['h4t K:X|=w t@7 tJl}%t@Zc;2R:5s\j5TY` f%MCqURMT:h>Y7nnZDJ*-%h*E:l .[[^Ԡ ijNEsZJ"jazu:u$FJ$O%RZX"$;ծn鎓(nCQ2 LNs b稘RtIt谪H zeQGXqC{U)k1i$Ρ'! qshN-ԱS7vi2ԼMR9n q驓lf<`r ;rO8'뛌wI{ #Ib"iP[rKY`_--8 ޘd 82{k(` 6䏒$a8xF3Z{V8rؕ$M2|nzOVvclX¶Gl|֯Zx!q2ތ ls~F̭ךMG6fm̟yx;wqMsbI:f]ݚ<0L܆=HC&w n0}$w52'cq Q'O9}se3VrRJƐոÌ/iúϐbnlx8j{Jpsp3Ɯ;XRnRL7m^N-lcvvg0vvg ?X Hu6mMf$gJ8yLY=1q7=8f̳pf8N2`?ۻ&d7 -yLp4;dogӞsgx=.PKљB$lib/unicore/lib/Lb/B2.plu1O0W<ԡ !TJjS$F'6猜 n Y#_H@Rfqmm8#1E+T2I'{s3 PKљB[Flib/unicore/lib/Lb/BA.plun0SlC.mBJ %R @jey)z |KʗtqYiyD"GzFGC}|u}p;ڼ8lnN~N9|ftxbyeic?aT\K|9ڻѯaihB}\;zwd~usL3 >#<ҏyzM~|0k?z#yj=[x}z|( vH_e^y&_!:_={k; C 97gwNF9Lo45 -SuLŇ-7~H U|{UEcJC Q+z,p{gp}=Jdt%f6v HY4p6"bfI,vE Y0ċـ˹A PKҙB .lib/unicore/lib/Lb/BK.pluN0DWLC/F= D(lF@'lɖwƳo',@t4K~v t8KUc.u ֔M<נKKû!&Ih u/$5RvJ=:0 nTi߱'UOM$?;:Ѐ 4oPowo'{hz5I (^ixFFZxA.Z)alv:J=9fV1/@R]!h~a#0./w"^w&}ߧɀ\ftm^ Lg#GpfZ u5sVEÉ6#r;^łjJU~ eSAA쫇OAbufS"''KG̚ړGL¤/bd2fŔ̆E  _T"'L;a!všEL "D EuPWԂ24n IܞJf2dbfp 彔RO}@l^?r]L.h,qe%q^ro$/n\W PKљBi\Rlib/unicore/lib/Lb/CM.pluOo6ҧ`/m"E I5`Aqmkm=mj#_3G)oͭ孺*W#yRCU_vTauuwwX/j}g**=0;/u9폳r:*%OU=ץp_W5}R8_[U=Cmۥˬ>}Om8O4D ރzn醘A4 DG24FN9JN mS.'qqH$!AdԚEGQ84Xly ׁ74 @W: ` z,) ΀<}[ }Ɠ" R!o;&OȒBE[PNz#ɓ" 2l& mېs6.lCR  ##Y?R??R?R?R?R?-܂-lT<ą$$&((zG$!!< 848uu'qDĭNTLTLTLTL%2Kp(S>S>S>S>S>S>S>[ڙڙڙJ93W5ɅEWxݎ<EJ-e++'[ `#))খ[YUrSZ=j K4XHA L t LY׬# jFۃzCȚshhr NɎ >iLTxtNȓ*5]@CMӕ5i*IE&oMDh6֢ PKљB)Yblib/unicore/lib/Lb/EX.pluOAn0< _D-Fsq#5`A葒[,("hw9;8`P շvWrmB\ ̃j:m 9E}F:~yU7;sN5ob>Ɯtʜ(h 9_ `}U>7;<;}xrFF Cr=~;{rj5T\Ay(ӂa0m@`'GO#7Qyxx ~a ݰUa_RhV;BG~rwwr_̾8N(b@}(OR1HV"rHE$azӈa*H֋EĐt\Le2 yİL!g28Ĕ2 19xPKљBF;mTRlib/unicore/lib/Lb/GL.pluON0}_q(P a#ApmVZu*d{895u8ZHOX,W1'8GZ{mKm@ T ;쪱:w2C]Pvm v*TMx&_kg1HQJOm 2qu8l{6+bC@*6vnCݻW5G2J([>Ȳ]"}:ř&{< BE(]`]9 *r:Оf{Z=*LagEumqاX(zG-ENv Sj_Xn@j7vuO qQ9VzZ Აn!mմP$\)qQl$Cd"ߙ&L PKљBAkPlib/unicore/lib/Lb/ID.pluAo0 ѯ`C/[kɲkc(ҢM$j͑GGNK D3!rC'r˕E]!.isN?iF}9n7=q8R͊㊞,ݯW_?0RCyl=ױ=7 Ac {?}C{';EvsZ|:o]8"s0na *NSt=B>@wwWv\}VLٺs˅rj)@E64St $s@LajHBʔ TT1UIX%aUqarg2$Iz /nƖ&MBƖ-;6vLj!|O8J!/b QO+bB {\3]7,mb\TPKљB-lib/unicore/lib/Lb/IN.pluQO08^#/$q2 ªݭ:B|Ms;w669(ɑ?%{4EFkh,AFa=ׁ*gXSL;64mނ.,p;S[38b2 |>" Z0TbdyV).ac/s@ERm[{wc{\ot A,vuC'2m .q5G sTwHSD"Ca*E/J)OrgQg %e PKљBPlib/unicore/lib/Lb/IS.pluOAN0<ǯ^ @&AI=-ȳ!@AGI.y:IcbV-vJY 9BqVŤ3&ͫ&l_}"v$dK'x"*kp9Ks@YK~DE>(ڶ~ /vCLq?>dwAOH>vƛ{'X&ga^mdC`'T'ScǍ93]B? ^4fȚ?PrBGs(΢эUa ܊pzu$.=\K$«p6cXg7L.3 PKљBw$lib/unicore/lib/Lb/NL.pluAO@x.&(&@Wf;UNff޾ H@S_fqmm81E+T<ûr޳By*?bh! 0LjRvt' B/3򉆈P$|8Q|dl;ˋtئ5|?1D8l=nK-S-W}kk; j-AuB\iqoU/_H,[Hzq* Ce,>C<'X+d&0Ym ‡ .|DPx"+ďJ#*+&DRDTe$551PKљB,?q/lib/unicore/lib/Lb/NU.pluAo@+&6i˲,%ˎR5Ͷxu[qSTovg5]fېV 5V/TۊMwG{6rG3 nw{E;x3Jct,jvwFOMH3Sρ1 R4{iFi"dBZ)CPKҙB^nlib/unicore/lib/Lb/OP.pluM03v7KK `]G mTi˿iAIyc{`v"3`EKϨP 0Ev808Mi#mN=1'xG=IA/@B!~a#0. 7e_aܧIT\ftcQSOg-Fp4v֏€P/TVbD ־ƿsyckL [~P->VO! tRz{pE+xzZ}a\,tɉ*򬹃'DYJ0Y$.yV!|.C"&Vo888HȉX5=eDP\I A%/8&VDF$ oTĆ`($VDFP @uE'I[IUD$R H}99.աFj_w(w qWj 0핦iQA57Vt3poX3tNdNN Nh$!@h{OWt,4LBG]UOUcsCPڑr<=Ӛ#9G uEZˑNGMtˇ#H޼y="{K*֛mSٴ#ێ 7UZxbxp=ZYyd-u 'gzlwA:dlM-Ɖۚ w;z>hcy<q-|3=?`_SA8ggiZSl BPTђP4HEHMגFX(ZV դ[QgB,Ҡ\js, ,\AKD(U , X/@Z6"`*t% H)L(OAZnR@ИheZ 9H )(є3P"A:,oPKљBRS&lib/unicore/lib/Lb/SG.plu1O0g+^ա ,HUZ)\sFEL؃uw}7H6(6%$/Q>{d:Ea([n-hh-E‡^&F Lwjm[O)sCcci=b8E!?+L}wV`ݨfԉ>]/ĵGXejBapW\3pEk1& 0Kdvo*ɲhmPKҙB 3A#lib/unicore/lib/Lb/SP.plu1O0WCh+X*%HQZ)\sFEL؃uw}7H6(6%$+Q>f{Z=*LagEumqاX(zG-ENv Sj_Xn@j7vuO qQ9VzZ Აn!mմP$\)qQl$Cd"ߙf5-PKљB+#lib/unicore/lib/Lb/SY.pluAO@x\HZbRvY{a33oflo IVxXgTWh\}[[5LL (/i޾-=ZHC8ԩ:b~ |!&4 {:5" v~!6<} "[{Qxm0UZNvmKP'tWZtc ҄^A\E3JO jUƘHGr9Md`hd0_PKљBW\(lib/unicore/lib/Lb/WJ.plu1O0WCh+.TJ""EiզHNrm =nlQn+I^z"աf:p2 MgnuˁM<-רkKû#G%Ijh: J. N-#O0֢&XTIv^VإCmY<}r#yC{ۑxu"0-XF7 IiB$nqw0/DDw]H"EBMa"Z/RLn^M&*KLPKљBgS lib/unicore/lib/Lb/XX.pluWMo$=6|Kb7fD|'BkزGRji&{U]X`U}>O}i|!i쿟oӗ6_v9\r|t|<__q=߯|=>n?`v>}t@e_NO?}w_ qPt@vdMXdBѻ YbTV OԨԭS։@@<@0wn Te0ھ!rTJAIqV(k; P@9R1eTr+Q"D0e-Q#Թŀ_yF&,\(l`?Vgg CvH!/p//+Q"DHG-Q$Ru#p%(RIS8j$dMB. df U5+Akn1̠_ c/{0؋^4]tYh -0aHD=/>F[X% &KDQR$**LGhw|X:oM=R)DIԍV{»ٓ<==e2s"g{5}^2YV:ߙ(#74V\PӣHGU〾A@F)R\`*{ʣ "y--hl\rm@|(th! eR0! ]*r QЉ [G<' Dx @`1Dd+%rDt&-8-hѴRt~)ShKpLF_!Rfr@ꙧ .fbe۴7!D<<@ V+zb*]jYnbqNձPPr`x$XVVuaZn/<1D1;~ (d!^˪3Dz-q2 ;8"vA0P2֓- fzmATzjj@6@VAp5_EWտ%:Rh{"`<|h08: qv q Y0V9ɠC@:qO=5d%yAG@ph%ȫ#})@x2/p^Ks4XDz h*{: 9+I]R\u5_ihc}7f3uK06C3'6P'覅:Itg 9^u:!67%_'`{O,yϞ~e/]c6)`}Jy X' 4P!ƀK*rԷ1c }y1Ƭ*]_?<.Y%kf.q76I4c0sfhF}I4`4!P/^ܦ /(+C!yU^L9Vbvo7>/v Dm͌cŏ6|풏1sؗTAѩ@L\WmY2_P(9>dV%Ylwrz27ZҎTޓ!{8,pUȆ|/{-,F7dqqf:ڬx`lq:7nܸZ-g&"U~s]=sJ|k7pݴZN0,=/{] ܵPKҙB4V$lib/unicore/lib/Lb/ZW.plu1O0WCh+%HUZ)\sFEL؃uw}7H67$+P&_?} "[{Rxm0UZNvmKP'tWZuc. ҄^A\E3JO jUƘHGr9MdzgnhaPKљBPMlib/unicore/lib/Lower/N.pluM3 tIi~laek9$GANW$]owwijSou?t6ct|z>^It^y=m}N/O?nLJUu=o:JOG;~_oy ?4xO^ߧa^.orW>L?_>LڧwtNm/ӗUyL^>_Us/2xiztNm=?>9ʙ߾<}}M˷ =_ܦvz\tNW/zr=O?ߵw;ATJUTU'UWuQ#v, ! a!-p3 7p3 78g 3pY8 g,̈́Jh7,vFy6lȳy\ p."\i'MVŵE-ҟ*槠QUVUUuQy*JjQT QEnpšE]¹[ǨVyQ;ty溈ZΜJG]*=-QF68D#u9xuIznɇ&p ءg|K .1K .1K .1K .1K .1K .1K .1VllUT ~0i* /`2WLňj{:IrXa+4AURUMc6KmCYniX*mҖJ[*mҖJ[kvDUYUQ%IqFû:û:uxE"\Kr.U '3Ùe),Y6lp;l \+pX W*\pU8[fUOL鮱Wc^;憎;憎;܀npnx8x=8x=8x=8x=8x=חOi'ʱ^~4Hp@HBX} %p3 7p33p8g pY8 g,sp98py8<\ p.\p.E"\Kp .%\p.3V+ k,YXU W*\p-p -p 5\kp u:\p 7܀pn{ C|$nAQeϨ*N>* ҨR*ʪj + C-:Wr&W}Md!|4UU%i*'tQVUMr^>!J.S>hM&aCYD-^-ƨrM!!*pԉ$xl$OoP oa 2\pW \+pU W*\pn[n[5\kp u8jthucAW6[Ŕ˺v,vܾ5oQ8 ]PKљBCflib/unicore/lib/Lower/Y.pluM#үhÇ$ߍOdŬa 䨙Q2#mglw|d_;}>OiN_ϧyouz9=|z\_q;>B\/y~ӞU2=i}.)p)NUxZN>Lry}_]00k>}:ηz>L_V].2z|=NWY̽taJ)taJ)tlڱi){w.E}DBBNr.\:갫p.aY \W \P r!un՘1Wc.qw8|;qwnp{Fwat=Fct=Fct=Fct=Fct=Fctѽdr;vsKt$X'DB(F[fnfn3p8g pY8 g,sp98py8< p.\p.E"\Kp .%\[8itg3i3i3i3i3i3\+pW \pU W*\kp 5\pu:܀pn 7oܘsc*Ϭ*ʩrUy}TUQ#REբ*ʪTU3"\hWծ]M7J5}YW5J q/&4no^N!j  (D'oai%[F q(#WT\%˃T%dBBdxH*ikkOPm.p -p e 2\p.W \+pU W*\p5\kp uZP49lKHXc y8RH#oR-d YЉ< R&wcΤN>| 9kUˍ$w}Posɨ?h-lz~J[b=m]s˧h?knW}^||~l6?-ۺB!꺍iYI+mUq=9lZDiU/'MzQ-./PKҙBx&*lib/unicore/lib/Math/N.pluO6ҧ )""$NeV+K,od=Ef~~Rz/ng>;US ݩK?D?wS?Ɵ_nGٿ?^0;,)7#2;u|Fq~"&S7F8F990>0]w)v~VO$߾}}Lzl} ܝe74sH7%Gc؝ S,q< ӡu{<,L0r](<ʧO?*yO}ǯ=>%#?7z.<<_otp.t2*z0>(~|L 2]@~ӗ]Dӗ'5ei=]S m60 euUŵNm0y::B ma2ʚ 9%s4o5L-Ӗ -aP<"SWVꐬi/޲ЂtֆS15LՁY˴e]q.Jbit] Zx7rbAm+AH2Va d JXV G6ʙšM0F5SqW]}ZXkjȄ\Onu%&DX(z04=Rt6)I0}qc7'_'5lx93CNuB [6 >$[1O +"!zMBOnՔ׏\/r뜕ZJT|&> R<W+Z|#s^/Zř8_9tUhPKҙBz>wlib/unicore/lib/NChar/Y.pluMO03/ⰗT. vԕVYRN2qؕd&R3>7(7^U>^Pֆ; :Owo@fjQ]}6DglkOG=rGx*-r_( .,N|˰GٰiQ"rޣ&8c^y.k<5^_ 6soc R@S)%)s׹6xlOI B[.raQcF5tʣt ,)\FJDyL3S'Uh=?*)TQ:/KJ|%_F|#ߊwx)~?ŏb-b#6oduпWe2Q/w_NwO/"ôeG]#p2 졣үO' vK8ſ#~`>=f*@8zoL:XyzXS h2ɧO?f$!L& t TBW@ZtKrp/5&q)oQTӢj*P$YU¬*Q6Em tŎbG뱣 ucӶCaaTjPـJG$XdsR:[6$K@leʲe+:W9r9 ϗ] r{yO⤡(Hs(sREjH*.xP[E&5в{K$*>ERU*UW Spfe"EjbW0HՖ---uc :'Kp mK^|AbQuԺF-fvuD+]5%DIl OmR{ɺlr 7]S%qTIU.E VgXn.zKWl2Dy'Xd^WN%:<9f%d׀PKљB,%wD lib/unicore/lib/NFDQC/N.pluKo7;$yOD  ǕD[fQT`}n6rZ?JA|U9]ݪ۟>ru^ѽVz8V}?㷺~Ew\=3Χ'=VN{/Ӫ=*u_U.Pc=WxTwUOUپ͟n?]/psz:ú?KmXGR3iuE;VЩ}lu?":{x/ɒC Ǿ3xyZ0:PKљB:< lib/unicore/lib/NFDQC/Y.plun7E=_A on"DaI5ɨ'i%ަ"UŪ[Elx僸p+ru+n,kqxcO~֖vޯAܽr?ۻݱ|zc_Р~pZ{;qy[c&۹ǣkxvo쫛MOY|z:ò?Kc;ӷI EOUl 䘽쟚RpYr|¿}|[_z!b}<=b9R崼Y)x8ƻ"޿3ߔ7?F *(a+cw2f3Q{FeFeFRRJr AZ&M[2@V,  =8rق**%*%*$L)LF֐FQBGzɀ%M[;D$:2s +͸IH)n$$M2,вввввc 3GP$VLffl̒pLES~7e[r 34hE$l8XV!GP.C.EQC,裶$tfR!a@,^$IK})i hx2+2+2wG l3Bƒ)e7C$R&9DJ$HTqTZo(V T'S TTTTTTTTTOTOq#+dAid]tWA:tޖ@m 9Dp%`@UƓfc1Øa0fbwysYYnTðq`, #I=R /KI 'RR /8%MHJR\UlYeF KƑ-ɰbpvʳʳ;'13}ՉW'F8jak04J¤AE,2N)\ݜlw]^z6cH"]e%$Ba "a So˥>hꃦz]ue9h>I栙>hʥ/.Y8h堕VGJ$\Z u8 Ir84T+F0bbGrdԄ`t g#.</HxE ,9E2NOA~an(vPKҙBa<ײlib/unicore/lib/NFKCQC/M.pluP0*[ug%W}<^iQOmY/Ewy[=N vl'?. Wdz8`pY~P,x^U뷅%lx:EΗU}us?k1V_>gySu_pRϗmvRloI îZ\VczxZ2-/W,[瀞/w-S]xEt^쥋QmmٟU&ߤ7?]Iqi` Af%4)2:udIԂc2buI;SAR5AGP¹Fv3|8?6040yO:#LA.Muҗ$Hv'a cǚ! f5  Ld#K 'ZJ8Ay j ,kK-KMה-5j\tԐTS'zzzK#U[u]A…⌃nzƑzR u)t7|At`ّ8ʕ1}Β<)FT2a ɕ&4%P@5ϠH@k0Lͮg |0"Էw'j"Os9`˓cuwdG[˗K740O)HYpj݄k|_>_Izvr\tN'q߱[; ? VJ㗯pg5?ޟxvq~#8`P,𘃱$"X4 62 %ECv!E7UdVEp)PƂwY/^Ȭ+HLJ WZI^o۬uHD 5a1cu!W\7xa zDKFe4Nj (C`{ k [ryCA%*α`TB^XG# d_@8%B #+Hae$GiW zi5zZ\77Í`j Rje ) (Htk58rObfLI9X:JEAx^3*wIwe9x5N^g| m1BAu`*vz֨RbsA+-Ӗ WQ%PEFſ*+rْgl0[3qi<5vƗ.:uVV&}քN>vd sh{Z$ ZU{A6*K?(+r(ix䩱Ŭ}$?:?PKҙBS? lib/unicore/lib/NFKDQC/N.pluM7ݿBA&R6}"qLg餧;]}_ҋ=ERJjk?Ƙ}77?Ō:_=ߚtNa3=w`~wu\|ۮɼn,]Ob.s;_7s8?_}>l_o9׷߷Ǜ].=_n|]nRfW#~nû~c?MyUYU"R&UR T9Ziӯӯӯoooood'ZaukD h PhܙsaQ8үUPA} lCt8Q ⹲JU ,ɓhK )Lj@.:}Kಓ r7or'։"$N1edy4#my^7oYEh\9/Nx pO,\/zƋ|Z!? i\Kčyf<xR냒ee4녃ZGxvFMt^8MٓS3Y3]`E@ BQ3^<?GQ𼜻o{m!lG{d=@f_\hOv`!cvWZ}R~\G@ExQbUZfJ"KPJRPPMO<TO;$*PYF5((eyk2Qp1!: qKK5PKҙB3%lib/unicore/lib/Nt/Nu.pluK6`lڄ/$$:$N.e3VkKi;RSt8񽗗Q~/m!D(v{zU[/&Ku8) k>ë/x:.#*s(stn'=/qDA+D3y3Mq✗,/q2w _n9~y߾F{~1Nk^"^nMs*GuX0D+OhGp?m?ok~Uۆ@$˘m-uA62Vm0 RJStWu_}RJ%$*ɎA"k]Nծׄ$i%ΔMQ~ywM v- 5 Ve#@W|A`SǚAo<@*Bj l.Ն-W OJP*+;O7%o4Ōvtķ:V4U3:򸥤-mo]|3RUˠ5k{5>x4WQRZnP-ʭ%%v&n*o6A@gMuɗ<PKҙBq;lib/unicore/lib/Nv/0.pluMo@WL/m8 5ՒeG f[Xeì w-܄=5rSCyf(nG#tZtc p߽>HnwsERj5 Ɍ;A/h:mO8h:tL'?ۛ]^wr /u o >Ep8|w\ XjuecGO?PKҙBZS7Glib/unicore/lib/Nv/1.plun0SlC.mBR?\(B N8zm&V+SDۗUSmR+~^`y zcґ\;:;uaC0Nwx+G]u_4▅/rp8u#Nv[_%_vgji/:N;o' pm=i6ugz?w:wӺ`]w~x t!|~\ SxFmңpNd291[})a,U@]EEQa"UI5Y4LF#ZYFisiPIK2ФP%*EP#npQ0L3AUU9zTE,r2SR#^K傈o Q44#f-tJ>Z6-QWD.[Jī PKҙBk|ܠlib/unicore/lib/Nv/10.pluA0Wj!^HYz40 ni߱ISAxUB' ipl<=*_ }VAsG̃{$K#<c%}^64i7?PKҙBpElib/unicore/lib/Nv/100.pluAO0W<ġHKK\m*E$Ƌcg 3o<_|:]m 7OXo'EpQJeǁ 9FyVuoTe]^x!<ةܓ]\Ar截@ÊА#+QycoB<-O|{렌'gF{@N㟳'[X:[!M z#vȖN:OǞ_{$g/Uޞ>Ŀ=+ʬ1c=/LWYf6]1n$iHT0I|?((ZLW7l><8q2r5Ӊ"0.PKҙBf)lib/unicore/lib/Nv/1000.pluAo0_&@`I\6ԕVlJ=]2 (ڇO7~P*ٮBmbϹ!.QujQiM }=!'=Ъj&l^'%vj%kr/NnP`s挦DӈБ#UZ&h; we?==^_r>Ze<9#5ƁS'r=9}0׹Ҵ?dn6'S'əI ^5tV5k?Prσ yEXDtBni@y6qBFQ0&to|6Ng>&tfl&'oPKҙBÒBlib/unicore/lib/Nv/10000.pluAO@W< $rA[bRv]ݪ{eg޼H)0N>;,U!-eTJt{$MV8*d6l̍aD'J¾I/dki4#BB]QJ/22z'iM+l ]uz`,vdPhjj[ YkVT0Z&:+ t$q[I-kG:ǁ{3MF3/\imiQ}wŞYr՘QMKyD*,$[u)i&Qi0J)Ojg^-hnoK)S_PKҙB}Yj$lib/unicore/lib/Nv/10000002.plu1O0g+^ա ATJjS$F'6猜 n IVxvxV 3FѸ jՑQ]9U!Ҭ}[z1&5Smuf;|zX UcHCDMh(>( >t22jE͗+l ]uz" E}G1Ia 5X5ۖN:!87*sח/T $- j7.^1b/. PKҙBr5lib/unicore/lib/Nv/11.pluAO@W<1r&M!PL,?F7x0>QGPKҙB_>z/lib/unicore/lib/Nv/15.pluAO@W<!hB%6i bqtu;k[!=7ߌ0=5u'9dU*_ymZ%6 푘T8bڱ)itaI~x Ԅ}ߩH*-= ^ȷ1;O(kGGT2I'3_ݎFF PKҙB?4lib/unicore/lib/Nv/16.pluAO@W<QMH!PL2I'3_ݎFF PKҙBgA4lib/unicore/lib/Nv/18.pluAO@W<E\HZbRvYݪ{μ} ٤8Eﱊב/`5D+DLNy*at6nXѸz*3$?K¡$I jmэ\`g# BIAF0@$vrm[㰏I/sfOASSm;{resT⯔A,qUE$ҵ'q%uRe!—`uN# -}G= / pX,Q,Zz~]'y'oPKҙB5H4lib/unicore/lib/Nv/19.pluAO@W<A\HZb&@WfUN+Ɠy?@Aq1c'ώ` DkUTHLNy*`t>mYѴ~*7$?+S)IJ%=52\`'#u#JBEAN0@4v*6%xGؤٓce6awp[raٜ&k塸}K\fU$t y;G sTxx{^Hm=z]DBcShR; 1qj vݢU/k1PKҙBGS$lib/unicore/lib/Nv/1_10.plu1O0W<ԡ P TJjS$F'6猜 n Y#_H@Rfqmm8#1E+T/lib/unicore/lib/Nv/1_16.pluN0SLC/V*"RV4E$଑}{6P x?@FGI!bO5B^{c R]ֆ@L^PaM1ؔӴy $?kj®W*J[:8d&Xe@P'|kQkPIvcLS1Y?yY[t-=܆św8Gɥ/Fh@׻Y7IOR{~hanʀN v]`JHTx)L@eeRS(ֵa;xRlm.:K>8Á[\_\48YαEPKҙB,Hlib/unicore/lib/Nv/1_4.plun0)qB*hPG'Y[Ǯ-ouwdz/@AIGjjs:HKY(YnO G3ԯޜk*pة5l-ƤD~DA(>RԮ_Uƻd6ޭq$sԎ MM>%nɊ F3IJ8]>HWkQ؉dH8rwuRu!•qɜzlu?)C!-yp\c5fnD݇ V/#Qk$ҫ(PKҙB^$lib/unicore/lib/Nv/1_5.plu1O0W<ԡ TTJjS$F'6猜 n Y#_HUq*KV1u88OзU㘮PYϮ fғ40Ij3%(v.0z%P54DԄ"yC'F WyneMͰߥX܇X(; EѶO Sh_XAj7ٶuO qA9V|J ἐn!MU4U$D)vQl$}d,4O&f> PKҙBJ|)k+lib/unicore/lib/Nv/1_6.pluAO@x!JbB4@1m5ۭʿw*O&;oFhl#Scҿ8ymZ%HmtY#1yBq5ŴcS:O-’A ^H*-n [ɍ\`'##*BMiEA C%IlboSw1Y?yY[t-=܆ŻwG8'ɥ/Fh@׻Y7I/R~hanʀ. v]`JHTx~(L@eeRS2I'{ss}; PKҙBy;lib/unicore/lib/Nv/1_8.pluOO@x埀@Zb(&@WfUNμ}?@AIQ1c!/CZG KeDT ;Cl[GLp/ S'{+<5F|9#/9Q; Jkdmk%iK1.abs2MM-v % 3ä\g%=)@d8uY8>U8rwd^(oKxUN o Q(~,pgX$?zv2V,˻)x2Y)PKҙB^$lib/unicore/lib/Nv/1_9.plu1O0W<ԡ  TJjS$F'6猜 n Y#_H@Rfqmm8#1E+TށWxv`GΗңuEO>_Eф U#5!KJ$(ӹ b/"{+S0B53-=bJG#R&F5(t3ng Ϩ'FԄ:|'HӼHv:6e8l,8 ܖ[`Zxvg) נwblZ&ѧ털Q9F|J n!V4ӨT)A:8@j5Mxz-z4ҚhnPKҙB%lib/unicore/lib/Nv/2000.pluN0SLC/K)J6E$଑}{6P `x ?@A)&Y1!S_j5Gc vn Ԡ:Új޳yueI~x!0iH-3 OqB.3V󉆈В'|kQ q;+tWsl]>Ŧȟ>:ÑЀ=m[ywc{RtN,vuG'4!Re𛣅9 ]-bv44~SxKRS=cE2Wv4RR/PKҙB./B5%lib/unicore/lib/Nv/20000.plu?O0SCT$HQZ)\sFs"&~7H6(6%$+Q>f{בTgXS{64^,:Ėp& Se]|0q;[|Fj>Zc-*u!agEumqاGa8gm-y7N^wplSJ_܀މnPD&DZ ~s0z:"BEl].fb8o /z VJygVӴHwjX܏FJ*PKҙBget%lib/unicore/lib/Nv/21.pluN0)h\RTU"qtmcp}{6P `x1F?@B*&Y1![?)E:'ڪqLbVFywgWHUlIBnԤNՙO;wK"jBCGI𡓑Q?,/MXbnmSX(;5EѶ Sh_XAj7ٶuO q^9V|J ᴐn!MU4U$D)vQl$}d4O&haPKҙB$lib/unicore/lib/Nv/22.plu1O0W<ԡ TJjS$F'6猜 n Y#_H@Rfqmm8#1E+TX;v IVx̶xȖO 3FѸ{ jŁQ]9U!Ҭ}[z1&5Smuf;:R/#򁆈P$|8Q|dd;ˋt/X%v|?>D8l=nM-C-W}kk; j-AuB\ioU/_H8-[HzqM*  PKҙB~~$lib/unicore/lib/Nv/26.plu1O0g+^ա DTJjS$F'6猜 n IVxvxV 3FѸ jՑQ]9U!Ҭ}[z1&5Smuf;|zX UcHCDMh(>( >t22jE͗+l ]uz" E}G1Ia 5X5ۖN:!87*sח/T $- j7.^1b/. PKҙB $lib/unicore/lib/Nv/27.plu1O0g+^ա  t "UiզHNrm 9 1a= Y!_H@m-Sfqmm81E+T<»rֳBY*?bh! a7LjRvt' ^`GT 5Hpޣ$Ȩv&_,N7K)V}p,z ܚ[ h[G) ,נwbl[:ѧ넸b]_P%pZH&*Ux"NPz 6D>2I'{s}uswvf0_PKҙBL*k%lib/unicore/lib/Nv/28.pluAO0 Wi]`C Ljn:$i뭁A 'Cdc~d|U McCLR1u;OзU.PYϮ fғ40Ij39(v.0nzQ54DԄ"yC'#Y^|:,ۦX!±Pdw4`pko1mо[+\މnPm DJ~s2w}B@i!B 8hVI|S8A5IȘ'iLٙ|PKҙB%lib/unicore/lib/Nv/29.pluAO0 Wi]`C Ljn:$i뭁A 'Cdc~d|U McCLR1u;OзU.PYϮ fғ40Ij39(v.0nzQ54DԄ"yC'#Y^|:,ۦX!±Pdw4`pko1mо[+\މnPm DJ~s2w}B@i!B 8hVI|S8A5IȘ'iLٙ|PKҙB7H6lib/unicore/lib/Nv/2_3.pluN0SLC/?@/E1"RVmI}{6ahtAFq)1N$1@VGm**mD T"?|Z]8O-FnR'g1 5/8;N3K rగؤGm oAPm{w򪆳0_eKYVN/GQܴ+]?Ŀk GEÅBڳ !<[VCF{1.潞NERv:/lPKҙBT$lib/unicore/lib/Nv/2_5.plu1O0g+^ա DTJjS$F'6猜 n IVxvxV 3FѸ jՑQ]9U!Ҭ}[z1&5Smuf;|zX UcHCDMh(>( >t22jE͗+l ]uz" E}G1Ia 5X5ۖN:!87*sח/T $- j7.^1b/. PKҙBuH?\lib/unicore/lib/Nv/3.pluMo0 `C/[+X/-ah;: xsVO"=4Cz);zg0KFt S?k? xé -N#aw ]WL %D;;f_pB~+ ;N}ð¯~`0|۝~ڪ < wk/oxpe ?;vto}v7TQM.mo>EB$jQaEC =^^^^S MX1QOL EʨIe+H,%J+KU24lgCX1 EN(EQʘx$&^E@JI:eI#WFTN**I=ERUMN[HjOJ_fLa zY Yʤkq*’) f,d`'ylEv溌 \X3u0 1~2'eZb-zWCRӜPKҙB-Llib/unicore/lib/Nv/30.pluN0DW i .E "R"Hd9пg݂8avw<;>H(4P司͋?U'l"0{tR4YE٨ec,oNԊ5=\Gxة< rVzzK~EK>R (`yYe}P1ú,^Ͻ1R;Z(>=YwkV0Z8L}AAZN%GbÃ=3cJ3?_Ό8ЌRnB:ҲA`ɍVz*da'IHQE:[xFaz񾞇1oPKҙBӃ`,lib/unicore/lib/Nv/300.pluON0<^ %HUZ)G'6g пgC8aF18:G9ttk`A1emnPgIǶ&͛‘Ԅ}TNQδtg xX emH}DE)>s(η2v6[I+w `Y(qZk6ރ?;i\op V^ͦ!}VK}1ڹW*/ RN^lIc=䧅T6^( $]`,$Gl:=\]8?crwl PKҙBד%lib/unicore/lib/Nv/3000.pluN0SLC/K)J6E$଑}{6P `x ?@A)&Y1!S_j5Gc vn Ԡ:Új޳yueI~x!0iH-3 OqB.3V󉆈В'|kQ q;+tWsl]>Ŧȟ>:ÑЀ=m[ywc{RtN,vuG'4!Re𛣅9 ]-bv44~SxKRS=cE2Wv4RR/PKҙB7&?%lib/unicore/lib/Nv/30000.plu?O0S<ԡ  ]*%HUZ)\sFEL؃uwn H@S_fqmm81E+T<ûrֳBY*?bh! 0LjRvt' \/3򉆈P$|8Q|ʨv._Mwk)6cp,z ܖ[ h[g) ,נwbl[:ѧ넸⨃]_P%pYH&*Ux"NPz 6D>2I'{/nhePKҙB~V$lib/unicore/lib/Nv/31.plu1O0g+^ա  ]D*I9#s"&cs$+i(-eŒQ4ytq hjGxWzvU4k_ŖG -!IMT[َDsq; ,|!&4 {:5"%f6*_>Ͻ"[{[Sxm0UZNvmKP'tWZucN ҄^A\ESJO jUƘHG|>IdrgnΌ PKҙB~$lib/unicore/lib/Nv/32.plu1O0g+^ա  ]*D*I9#s"&cs$+i(-eŒQ4ytq hjGxWzvU4k_ŖG -!IMT[َDsq; ,|!&4 {:5"%f6*_>Ͻ"[{[Sxm0UZNvmKP'tWZucN ҄^A\ESJO jUƘHG|>IdrgnΌ PKҙBwՐ$lib/unicore/lib/Nv/33.plu1O0WChTJjS$F'6猜 n IVxvxV 3AѸ j员Q]9U!Ҽ}[z1&5Smuf;J/򑆈P$|8Q|dl;ˋt/Wؤ|?!D8l=nC-c-W}kk; j-AuB\iqoU/_H8/[Hzq* 2I's{s PKҙB{F%lib/unicore/lib/Nv/36.pluN0)hKQTU"qtmcp}{6P `x1F?@B*&Y1![?)E:'ڪqLbVFywgWHUlIBnԤNՙO;K"jBCGI𡓑Q?,/MXbnmSX(;5EѶ Sh_XAj7ٶuO q^9V|J ᴐn!MU4U$D)vQl$}d4O&whaPKҙBA(n$lib/unicore/lib/Nv/37.plu1O0WChQX`)JjS$F'6猜 n IVxvxV 3AѸ j员Q]9U!Ҽ}[z1&5Smuf;J/򑆈P$|8Q|dl;ˋt/Wؤ|?!D8l=nC-c-W}kk; j-AuB\iqoU/_H8/[Hzq* Ͻ"[{[Sxm0UZNvmKP'tWZucN ҄^A\ESJO jUƘHG|>IdrgoΌ PKҙBk/lib/unicore/lib/Nv/3_16.pluAO@x#hiMBxܶ]ΚV;U'w7# hl#Cu?;ymZ%HmtY#1yBq5ŴcS:O5’A ^H*-nO[L.Z&O0֢ X׆?$]Jw)16Y?yY[t-=ܖśwG8'ɥ/Fh@׻Y7IOR~hanʀ v]`JHTx)L@eeRSPT$lib/unicore/lib/Nv/3_2.plu1O0WCh+XHUZ)\sFEL؃uw}7H67$+PQ=Jagytab>BGр=m)zpE`VBor z'VAͶ%}N+-:ͱ U t iB/ Z%M`cL$#~,V7|PKҙBT<lib/unicore/lib/Nv/3_4.pluOMO@=_. /0r&M!PL!fъFɹF8]IWk؉>eH\#8s/T:8s>pq[EFw PIz^%Y|g!eja9Mo+I8z/PKҙB#$lib/unicore/lib/Nv/3_5.plu1O0g+^ա  t "UiզHNrm 9 1a= Y!_H@m-Sfqmm81E+T<»rֳBY*?bh! a7LjRvt' ^`GT 5Hpޣ$Ȩv&_,N7K)V}p,z ܚ[ h[G) ,נwbl[:ѧ넸b]_P%pZH&*Ux"NPz 6D>2I'{s}uswvf0_PKҙBI$lib/unicore/lib/Nv/3_8.plu1O0g+^ա  ]*D*I9#s"&cs$+i(-eŒQ4ytq hjGxWzvU4k_ŖG -!IMT[َDsq; ,|!&4 {:5"%f6*_>Ͻ"[{[Sxm0UZNvmKP'tWZucN ҄^A\ESJO jUƘHG|>IdrgnΌ PKҙBjup&%lib/unicore/lib/Nv/4.plun0EWLE6mBAIh6D 'H]$V+SDߗQUmw8;n?!/>R d R)dej/v6Y+wc!#BSS !nъ FIJ8]>H]֢"}ڑι8wuRC WA'sUhu)C!-yy\c5A;n^0o1 Ѭ4j]=oϜd+PKҙBє@*lib/unicore/lib/Nv/400.plu?O0SCR "Ei$F'6猜 o= H@qfώhj,员Ql9V>м}S:8(5iRmT3]Bg=z 1|aDMh(>s( w24;͋d3l]}M=}{Rpx L 0NqMK$W8;(sח/T ğ-񽀽؊f{76_GQHXIOob&7WZ}PKҙB9}_%lib/unicore/lib/Nv/4000.pluN0SLC/$K)J6E$଑}{6P `x ?@A)&Y1!S_j5Gc vn Ԡ:Új޳yueI~x!0iH-3 OqB.3V󉆈В'|kQ q;+tWsl]>Ŧȟ>:ÑЀ=m[ywc{RtN,vuG'4!Re𛣅9 ]-bv44~SxKRS=cE2Wv4RR/PKҙB&-%lib/unicore/lib/Nv/40000.plu?O0S<ԡ  ]*%HUZ)\sFEL؃uwn H@S_fqmm81E+T<ûrֳBY*?bh! 0LjRvt' \/3򉆈P$|8Q|ʨv._Mwk)6cp,z ܖ[ h[g) ,נwbl[:ѧ넸⨃]_P%pYH&*Ux"NPz 6D>2I'{/nhePKҙBbOb$lib/unicore/lib/Nv/41.plu1O0WChH]`)JjS$F'6猜 n ɪ@a?+E:'ڪqLGbVFywgWHUlIB~ԤNՙO;ٕ^`'T# 5Hpޣ$ب*/m̰I<{" E}G1Ia 5X5ۖN:!87*sח/T $- fj7.^1i'[ss} PKҙBO&$lib/unicore/lib/Nv/42.plu1O0g+^ա $R "UiզHNrm 9 1a= Y!_H@m-Sfqmm81E+T<»rֳBY*?bh! a7LjRvt' ^`GT 5Hpޣ$Ȩv&_,N7K)V}p,z ܚ[ h[G) ,נwbl[:ѧ넸b]_P%pZH&*Ux"NPz 6D>2I';s}u{vf0_PKҙBP]%lib/unicore/lib/Nv/43.pluAO0 Wi]`C !$vjn:$i뭁A 'Cdc~d|U McCLR1u;OзU.PYϮ fғ40Ij39(v.0nzQ54DԄ"yC'#Y^|:,ۦX!±Pdw4`pko1mо[+\މnPm DJ~s2w}B@i!B 8hVI|S8A5IȘ'iLٙ|PKҙB]B3%lib/unicore/lib/Nv/44.pluAO0 Wi]`C !!vjn:$i뭁A 'Cdc~d|U McCLR1u;OзU.PYϮ fғ40Ij39(v.0nzQ54DԄ"yC'#Y^|:,ۦX!±Pdw4`pko1mо[+\މnPm DJ~s2w}B@i!B 8hVI|S8A5IȘ'iLٙ|PKҙBL$lib/unicore/lib/Nv/45.plu1O0WChH,t)JjS$F'6猜 n IVxvxV 3AѸ j员Q]9U!Ҽ}[z1&5Smuf;J/򑆈P$|8Q|dl;ˋt/Wؤ|?!D8l=nC-c-W}kk; j-AuB\iqoU/_H8/[Hzq* [Q u88OзUΏPyϮ ғ40Ij3)v.0gz%P54DԄ"yC'cY^|&ݮߥX竧!±Pdw4`p1m؟о[+\ވnPm DJ~s2w}L@B4pWLSpEk1&XL<ޘۻha>PKҙB$lib/unicore/lib/Nv/48.plu1O0WChH,t)JjS$F'6猜 n IVxvxV 3AѸ j员Q]9U!Ҽ}[z1&5Smuf;J/򑆈P$|8Q|dl;ˋt/Wؤ|?!D8l=nC-c-W}kk; j-AuB\iqoU/_H8/[Hzq* dfM6rfh0H$߼PKҙBgR_,lib/unicore/lib/Nv/50.pluQO0ǯ8{9c}qŒFu[dI{O==xX-m4Y֏]oR(#llDYKM'{d Jtڼ9Q(4p5w*bJpOtg4t{#*BM)BAPu b<}Vܧ<=fsԎ ]K>wOVݚ Vsp}f;֢!}֑.ۮx+\m:m,iVקAXrոY2 hF37mJx _X UdPrA83X"MòpQw nz \. O PKҙB-Ш3lib/unicore/lib/Nv/5000.pluAO@W<%MB4@1m5ۭʿw*O^voFhl#sSR8Z8hCmTYk#19BqŴc]ZGݫp S$UJzke,&3O(kGGTK`l뇁a'YoUMMXgٓceеcprj`ٜ&塸}K\f$uKyq7*=,$[vl.i"QvA8c,8Ə<| Y~.*PKҙB"2lib/unicore/lib/Nv/50000.pluOO0 ˧x Lj'*MݴuH[طDž!N$ht! c*YR(Ye%HuQ1yD~5eS8O5ܒLxW#TC)IJ-=71棉|`gu+JBEaEN }%IŻt6ޭqؤp ڢm-޼;y]ñ= L&u:@s z'Nͺ&}&G s/Tw9HkSH"MaJE/RB0NლMz=5LgxsoEPKҙBP1$lib/unicore/lib/Nv/5_2.plu1O0WCh+X*HUZ)\sFEL؃uw}7H67$+PQ=Jagytab>BGр=m)zpE`VBor z'VAͶ%}N+-:ͱ U t iB/ Z%M`cL$#~,V7|PKҙB4+lib/unicore/lib/Nv/5_6.pluAO@x!E.ؤ)m;nUSxr0yo|3|Dkdqȟ4šFk`,Aj0]@)y6oAw BMJETitKWx&ǸV|BYk>R?" Z0TdyV)66~c/s@ERm[{wc{\ot A,quC$2m .qw+^ lj DETƋ_+<3qE{5-VoRPKҙBPl$lib/unicore/lib/Nv/5_8.plu1O0WCh TJjS$F'6猜 n IVxvxV 3AѸ j员Q]9U!Ҽ}[z1&5Smuf;J/򑆈P$|8Q|dl;ˋt/Wؤ|?!D8l=nC-c-W}kk; j-AuB\iqoU/_H8/[Hzq* b/[+x1+x3Y?wZ6\c^u'\-نz4{6؍ݶ '>c8 =~P?WUۙCBXECugf]>EBӻH)&%4+ͪ`U*Y*VfA.")FNf2m$IIq3 FA(ٳb,b..&*'d#*ܩ:`.(<:[tSڞ* )uԌ.:: Vrn[dG|w!EɯYJ,X(&=L,RN8c&b"=x5gJUD+1x"PڌPKҙBh7lib/unicore/lib/Nv/60.plu1O0WChU]*ňHQZI\Jtw>O09-m4ܿ:E;!jY*P you<۷JC»!< 8VAbg/sU}G#oɫΚ3gAd9np[8tV\yG1sחTw"4.f8;  Pk~^,zo^OeLEXF#Gq|wQ24Y\j6oPKҙBH)lib/unicore/lib/Nv/600.plu?O0SC蟅t#"EiզHNrm o= ݢؖPiV|xr%#lMXN׭a=בTXS{64^,:Ėp$Ѣ@7x"cr _P4h-y‡ljagE&Ns "< G-@#oE`J鋿; nAӄH\$-̡^l[GDD4Ƌ_'I)^OUNbTTZInPKҙBDX%lib/unicore/lib/Nv/6000.plu?O0SCR)ADҪM3ߞ 1a= ?@A)&Y1!S_j5Gc vn Ԡ:Új޳yueI~x!0iH-3 OqB.3V󉆈В'|kQ q;+tWsl]>Ŧȟ>:ÑЀ=m[ywc{RtN,vuG'4!Re𛣅9 ]-bv44~SxKRS=cE2Wn4RR/PKҙB%lib/unicore/lib/Nv/60000.pluN0S 菐KJ6E$଑l̷c\@dllj0cptok1ݜ)Zޕ]"W'C iaR:Vgk]'ĕGXe*B4pWTpEk1&\N<ܛ|q;V PKҙB,lib/unicore/lib/Nv/7.pluO0ϛO1=piw$䏺'vT$]RH1mufz*H<3o-?װZo6o,&:؜]xnw#Zt=lwۧvçwn{ n8?!O=}j ,d"|#N+'t-B?> b/VRKx1Kx3^-?apYζ=\FbO^ Gמa5لn=vmm{FN=]P +=ؙ}BXECqgfg"!.YhyM(3M0JXUjV5+hBO"e$k&TNe! e 4.UjΨ5{tA2BNHY"T&Ԓ" :@dI@xB#h@ef2SW`RSUtۦ )4bm(b^0Qe5S7V̸dnM"ҹ0MliG#EAO( PKҙB-17lib/unicore/lib/Nv/70.pluAO@W< I5 IKlvl*)b<{xocsI(=iH( AUUN䔧Fue7JC!IMT+nLӖMrQ5O4 9§6%Ώ N" dOɳA'ʠh ޝ=9²9 L!}Cq ͪ%H}WReG sחTyx{7`uES-OB{ډ_A\N<<&a]4փ(4^\j1PKҙB\*lib/unicore/lib/Nv/700.pluN0S RR)J6E$଑lac\@tu%ڿ81v8ZGښL7'b FFyg[@ULHBaPjҤڨf:ztXUcDÈP |XP*Ҁ?4/]ʰMv<{, 6}G)Ya 55X7Ii;!qTwQ/_,[H{{M5*]'ĕGXe*B4pWTpEk1&\N<ܛ|qV PKҙBY#lib/unicore/lib/Nv/7_2.pluAO@x\HZbRvY{a33oflo IVxXgTWh\}[[5LL (/i޾-=ZHC8ԩ:b~ |!&4 {:5" v~!6<} "[{Qxm0UZNvmKP'tWZtc ҄^A\E3JO jUƘHGr9Md`d42Z/PKҙBv$lib/unicore/lib/Nv/7_8.plu1O0WCh TJjS$F'6猜 n IVxvxV 3AѸ j员Q]9U!Ҽ}[z1&5Smuf;J/򑆈P$|8Q|dl;ˋt/Wؤ|?!D8l=nC-c-W}kk; j-AuB\iqoU/_H8/[Hzq* &[}=9V]K=v%gɩY`r鋿Q+nV AK(=Jۮx[KHTly/ڣN8Gsrd!f (Z\4YFxv|PKҙB*lib/unicore/lib/Nv/800.pluN0SLC/ D/D(ڀIY#g@';o'@t4KvDp5Uc.Pgy϶ґ4AIjO:׳^`'T# #jBCaCIpqi^$|a2<l,8 ܖ[`Zxv') נwblZ&ѧ털A9F|J n!V4ӨT)A:8@j5Mxz-˫h5ժ PKҙBv&lib/unicore/lib/Nv/8000.pluN0SLC/H^*%HQZ)G'6gl۳"Nkw3N09 M4JYJP 8KukOuTM<ͻר+Kû%ICh@Wx"cr5QO4D4Ŧȟ>:ÑЀ=m[ywc{RtN,vuG'4!Re𛣅9 ]-bv44~SxKRS=cE2Wf4RR/PKҙBOlib/unicore/lib/Nv/9.plun0EWLE6mBʲ(P0 q t)ۓXL_rEWy^k~}LrebROnw~|G ~{rnx퀱ÏGהcb|A?N@3{Ǵbp@" 8zczOy/׫6z]@N&~wGpf61]Rqn[LEi wx9PȰ\6!}֓)8Gr+^z_kyUI3!c> !8"WH 0 Wec5/oPKҙB7ʶ-lib/unicore/lib/Nv/900.pluON0<7_1U@@/D*lF߳"N؇w3# xl#cCJt~VD#mqؘLGb FBqŴc[@ULH@j¾g*R(gZzdX emH}DE)>s(η2v6[I+w `Y(qZk6ނ?;i\opz'V^ͦ!}VK}1ڹ* RN^lI=廅T6^( $]`,$|67oLzT6PKҙBS(gw%lib/unicore/lib/Nv/9000.plu?O0S<ԡ  ]*%HUZ)\sFEL؃uwn H@S_fqmm81E+T<ûrֳBY*?bh! 0LjRvt' \/3򉆈P$|8Q|ʨv._Mwk)6cp,z ܖ[ h[g) ,נwbl[:ѧ넸⨃]_P%pYH&*Ux"NPz 6D>2I'{/nW|PKҙBi%lib/unicore/lib/Nv/90000.pluN0SLC/UB/D(lF@'샵o'ŶDd%쀇,OU %5Lgb:RkyϦvkԕ%]ä!qjt<1f /[g"BKaEE.ı?(}ɱK9"< G-@#oE`J鋾; jAӄH\KqoW/TGDw]H#ESLMa"E/J)Oz^-j4RR/PKҙB'Y^^#lib/unicore/lib/Nv/9_2.pluAO@x\HZbRvY{a33oflo IVxXgTWh\}[[5LL (/i޾-=ZHC8ԩ:b~ |!&4 {:5" v~!6<} "[{Qxm0UZNvmKP'tWZtc ҄^A\E3JO jUƘHGr9Md`t42Z/PKҙBalib/unicore/lib/Nv/NaN.plun7SA\_"ɰrI4ɨ'i%篖TU,Vsy/޽=Bz#ov˝|U˫^gp80<:8n?̇2>>o#ӳXFL{e,iği~wOqC^V1T4_[Ucb2֗e>]zxLeʖ(mLԙt✃5 (/6N ll+"oBB=*(-4zdM ԍeJΕ "ȸ)*W+|7x}#B*HPPh'$ACŚJ2'ʜQQ"Bv\K@͓ BV%b"M{?qe!) @ƃLfFE!2rȖV`rFؠA2t˶pHcmA4%rD1z%B -(zrT5O)D5k8a9da =$ū-`#C&B4&)l 5Q Jlj>rHʧdNiRi 9W!.'̛8q,0qg!*[ᎆ{Q,:5DO*AݳaÝJ(|)*DI8ڠKtS$[L 8eܕ(=!5["OA+Ti ]Hc{&Ntj i!L[cWIq-n6uLpD}ApJ6B Q2oy~@&o8 KiUS5ē#<:T54 P 8I { h x8&v)Є"nhRiQb"n&)vq%GDJz Gt7hD1zN6rR$B1 O PKҙBs#$lib/unicore/lib/Nv/_1_2.pluAO@x/z!iMH!PL/ 6ndE[T 1\j[j[.uPXbCjII1+:N], sb4hC)kJlM([Ya+ <)@' mjVZ[Crt(dIB BQnI$$JC 7F:RW +mfOEQka:vة3$u'yӌlӱMO)O)O)nDOOf:GO'Sovz8颔\a,&DI`RVh[ݑCBO:u 3]51ޕ4V;]*REjH #u$smK*I, kHDOpЄOXiW\UWCuNƵLʵZNC5+(YB1e Ll]lSǧ+~_*"8 apB"G`µ$K >zCȧoo=6)z. l/_R'ۼ|_PKҙBlib/unicore/lib/OAlpha/Y.pluMo6ϫ_ _D'!)Ԁaɦ@.U+Z}ߗNSm`x83 ?^{QJuW1ۯj(ޫips:n_yz2OeM/o9!c].j;%+DŽJk5~IuZf}(񫔛_4ωǤNiM|VI@ھ/N}_ԷQ=}?--xV/Ķ紞W4qS|T4*x¿:#z<ږalj^>TX-w1m8pQk^Y}tOEY7nW;@k8|EjH-Rij֒P_<(RRO2^Q;dR {DLUD_eInKvZHpɄʶEe@3 :$bFC-ѤێŽŽŽ(%1ŽBEPQ*T* bۄc )PJx;fMG2$GBvQSNO)O)O)O)< %(P7P7P7P7P7P7P7@@@@P`" u>XNW86&Fy bIBd9b3!&,xtYNu Ɏ‘XRu%rPa@Ӏ0 +Yu7{^נTZRKI=Icӵq*w0I5&ԓ )rI"ZAtm3w}к~Vd:lӒ{W:tPKҙB- l!lib/unicore/lib/ODI/N.pluON0=_`V\V"Hdvcpqh;.jK3ޜ( tm>4?`'#pM7XO_)D=m/gor|Mu?bcLᙙ (N6x/$_`O㏔%z@:”}_ov;<>h}B7Dv6wGg hFNl>G`|z#tH`&mDǁ:=OsB]B  isvtTeׅMmd< !"9z.t]. ɧk-r% VZ(Vŕ\_ bKaUTM%jҹnc%4ӨJ垒V *(KPKҙB6JVZ lib/unicore/lib/ODI/Y.pluON0<_1^&<*\*%AI{ [gg0>5u"_VUq8鴥Y*Pzhu<נjCû#l"+951YOSt(h y‡65!L ^UP.V/V<X}oU@v4wOͻW=5{6Sq{l z'r۪J@ǖ9=cBM@p? scuA7tRppZ !<[N2ވB&ȲKd<g2p-γSR.CiJ)|pdWi2LF,#.sPKҙB^ۺ]lib/unicore/lib/OGrExt/N.pluOn0 =[_rZei%m,@[`Gfbm4}N|:@;Tmj_7(7B7:G3LY8-'v99Ïh=KGbxJeRkfFg -Xθ#-m{Fxdۛ.Ov>v2wϡ ?Zx&¸KjgL?vyoMDo_OG"fՅhm,VJSp;(-ۜR-L ppu.O<[JB] LSKR/ A$ۈ*tI\I*%U+iR)/_1%|溔PZPKҙB Ld,lib/unicore/lib/OGrExt/Y.pluON0<_1C/E-BpWJ+Hdq4 NҎ3=x M%WGd/8Eј;c lOTJz7&6B83IDr2 I$d.kNPKҙB$ç7lib/unicore/lib/OIDC/Y.pluAO@xIH!RLׁ*gXSL;64m^.,p葊D҂閮D5q;+>5Qjc- um*fyV<& l0ȳZm[ywc{3Xz6 Ji@\(-ۮx2 BE].&";o&2^2X))t\,߫Hb0TXzp-VJR׀|yy&SͤAy$,h$k&*LS25\Q4%)K&Lz%6ވ(*J58FޢL^; {%mך(vܬD ^pBXQ8 @8 @jdZ\KI#j&d Y[!dbU# ߝ%,$+epqAxe^9Tt]֘ љ./dCŤqX,In)F%%LPmxW++W++omjUe6m^ s<G-7ude^+flGشy+i6Ixgy<)>'PKҙB/lib/unicore/lib/OMath/Y.pluAo8֯\v[QI %Rh)ZeR!˻Y@~~37:oCDᑶ;~G_fdoiw.4x?0ߟӔ~MGڿ8_0/'L)WD+{}Ke'r# N`qLtJKq}qo2.])~~_"=nuOBôeG^Fs2e~^3XsR?)&.?'JᲦ_8O=_:^oJӼKy[ap>gYL]܆?<7qr /ȈAȕPbKT"XłLqi^Z$=5.+T^ rwPJ3)#!X(jP PǤ֠ CɮĉT !Z# d@f<= j`XD(AЀ# ne s)(25<+#L95 <1Z"ͱy6nlΕl)ֲ@d\rBu3kix5UwS݅O˛m/~b*yՔ`cu p-h ’%MsmV[3ɰ:a/mnQh3RK+>L6m+z -N;-Kx:OgpU+:/ܖ0._PKљB\c`7lib/unicore/lib/OUpper/N.pluOo0 S<āv eҎikhԙt~h9$@E͐ zHG*d,AZa>ׁJX[64_-Iw5BE8vĩR ]|cf|AQi>S7$T ZWbNd.7% t?yY[ u܎ūwgk8$/Zh.AobשYqB>')ܴ3,$[ʵ)h$Va0J)ObNEdRɭfs5Qo$'PKљBY5/lib/unicore/lib/OUpper/Y.pluAO@x$\Жؤ)m;nUSxr7{!? @AGI1c/5D^Gc r7 ͉T8Úbұ)ItaI~x ԄCT$IMt'qx*XeD}P'|kQk@Iv.[ƻ}M>}ty]K=v%oY`r+;n AӴQ>Zۮx2 @2E].9o P/~i:X.Gqv1cflV/PKҙBn1lib/unicore/lib/PatSyn/N.pluAo@쯘(_d`C\ՒeG f[XeoT=uv>f3o!bO}Meyj-W[;3Ln:c-;Åzs?[ӌ^znwL2:5=n2C 5'#Z/t`4g{]yK/%wۯ}Yy`;{b7hfj'm[l.ЉɳmrD O~|_[n<{7 ߡU1ڙsa]1$$N$8PJEZTQ 4$ ykW "P(|Z*A0X THJ@*P\ Z$h5PJ2RIJe҇X56QEȕb,&p%R6<UȨ*DJpPKҙBкlib/unicore/lib/PatSyn/Y.pluMo0WL^|-]5(F]iF ԣ-ؕ1mw̦) <3y-\(P征An '5"Pd7(ϨJ=U{h'5WzIѰ a@[# mF<^÷}Z-GXfG#lF2ӐNt u 5ZN4 ١D{$y;vy fqSѨ[](Ocb5<3Σ0P9Q‰҂(D[2/d^}{yڭܗ/*" 5Uk*5U>E\P5ҜiQr5J Ev>`g>Ye<9#5ۃ97gNF_LuCN-SuLŏ7~H U^-|c{chR5SBy1 !V$"](anE!bA, E( 65PKҙBMA<lib/unicore/lib/PatWS/Y.pluOn0 =ӯx J@ԢU 2iǴ54[Li1Xyoo $qZxLؤY"+"ht6t{&&<(/0+h޾zU g[p:5 S:N[,|A(>Ӱ&4c;?Ov>_g% Cm=d4{r ك97gNl."[塸 ݀f>u+G/_z\{PŖ[,c&y<}0\ŒEh$aq'! d$n#Y,Z2|PKҙBxX= Slib/unicore/lib/Perl/Alnum.pluˎE_QRgU & (A x9$Kci{exe:߲,o^]x{ۏ/˯Ǣ.;.<>ݧ_=ji~<_(p*9x~yx,۳/],?_~;ñ|<_˻cy|z~uR7oOoc}y<\qr0m&O&V~t]/EQrXqy?~Uǹל_>\~_Vq\oU{|sx.U_N|7MOy;dDDݝ>>*MZ$՝dA]־Ck|}Eoq!(Y)-To.6{oOjW7{MLCϢ|h`_4fQy(΢Fݮ*' NB^} rA2 kDߘcG:*E4'8鬢4brZjZSy)[m,*ͻY54As2!| _^E4D^dh:\B%C _Y:P<ۧ ;= iagM!TϜ6تmdl÷-6ZlJP$F#D۽@yǔ4?s`888|2ECCC+̧Т} }sfcr 9 9ko r(Q9 r(Q GA ڞ "D(^Nujcpv RNSE .kKɔfe}*T{S}*ZO-OE>a*Tܣ0a*TJTHT\9 TYse͕5W\,\Vc $:[KtI:lZsF鍺ĺNyl/XU4X#i y $Y]›LRg9,U<.JTO}VTTׅi"çtBDDí:28̜)WEPg"VMUf:E vn޴QQ)Us(ݓפ`k31(Uⷞ糩Ϙ+#;Do[q4ѺOntPCgLBCݑ7tzWӺks |]A^U/S mQ(մC~m٤Ѱ+ *kZK_jO;(ZH1t;oFD$Ӡ!2|mMF>G9zqMW4 Zv^HLloh'{n ]ݷxn z-x'H#S :(2NDke(=/7C2c`IqɈ+*L′Ww4WuAxWQCP1eCpֳm#9J;2OeI4ڒ3E9NL`~&wӯ6ah1R~S2-Ndpy?B->21e+V9.abSsCcci=b8E!?+L}wV`kf4>]/ĵ>*α  t i F%gMƘH2D,-ٽYj].ZF; PKҙBq6eq  lib/unicore/lib/Perl/Assigned.pluKFӿ /I"YEoDaImkQO0JVU$떾^Y2?y^8}x^LJ/w/}Y->-׏J>Ӈ{ݿtYⷫ.Kxy<>\:ӛzqz_ܿ>=/r|~96x~~\y+.狺yQO?\ϗǯ*8󻿝_ӗ i׏OOout:=/3otZn )d 4D&: r'*nݽ(34EA遏.j&4>"WENdhSuQUE= ؠ] Lrʐ̇BGvA*U5\Q":Gi%B"d;z}0⠋˪( S/Hӈ)m|C: Z E[b)J,Yd2JES N9h8%K8q )*-*-ЧOi>CO;A֦JA26eZq*TĩkEE8q*TĩS"NE*Iֺi*ZThQѢ n>ƈ"SzF"]]9R3y2Di*iVcS Rj6e3Ī=UQ5$jHԐ!Qs !QC0 a´mF=i;8m? ZDUC0-jV-QʉjHԐ!QD5$jHԐiU[1Vio̾1֩׉NmlƦiH4m"Ŕ}PQ:tD#J#@G:MugΝ9w9[3Μ;s̹g3]pM u{7*irVz4G?pk""A7C ǑpP9lȑu Qh\[n??I3XQ+U?X,qNuu7t禁禁g*̤'L6AӞuhsH@]&9~()T?2>]W2ڡZ"NZ{d RF7-s|S/5-;_7 2EhBwh;~8Eڶ2G R/*k)ꪄu|~E0H;H6א] ) H0E)*,:y)1"D  ީ{HulDghکlҌX,D ESEQ"(IWIEܕ^H~e#-/6uJ>iP8%뒑"9.Y >ZpzeIR䛥0d);!KRυ^2*-L2U~2FDi74FIVO2Uu.YnS(B <&7$I(. A4 Cꛃ,A&._R~@Jpf7An9<)Apc}E|񀪈.U6LBPwD$@~v|_PtmuJe=Z;!V>d7Ƈ񤾽Ҳ8:ƇV'3Y<7cҴ,]V2mN1l}l劣,~ˣg*Xa~ik=7-K/66]yf9%q[B-6-t_oƶ6=/0~10Ʒ$1ڜ#Yv7go|LRkgMُ%~ޞFѯbv?*[`ZkPKҙB2M}Dlib/unicore/lib/Perl/Blank.pluOAN0<7^ ETE)M8:ɶ186rg8aK{v<;;gȷ8-P<{l,a&((U#5]Hjg(Y{-+ci޾9Q*ִp +5S-&:3N, DDEMh>R( tn_4/<ʰK2 yڑBvdޭ9Yhu0o54y-Kvtŏ#~+U\)\czmhVS7AXrXIO0 G#E8@f`& ֌ ĝ[Ϗ PKҙB[W lib/unicore/lib/Perl/Graph.pluKFӿ /I"YEoDaImkQO0JVU$떾^Y2?y^8}x^LJ/w/}Y->-׏J>Ӈ{ݿtYⷫ.Kxy<>\:ӛzqz_ܿ>=/r|~96x~~\y+.狺yQO?\ϗǯ*8󻿝_ӗ i׏OOout:=/3otZW5 QN2/(PgQu5(34EA遏.hNk\Eq P*r-$3EZ"HM-ҔUPPg*eSf>R>C P9)r_Y82DM3-AToR'ީ;D]LXVEQzYw@WF,NQnW% EEe֪W6/D[HٝUb DU.B8qA+)Y)S NUiQi>}J?) F :6U )S"N](*TĩS"NE8q*TIMTѢEEuנuOv1Flz3Tʉl);!J-EVIZ U+Դd1(6&X&VRߐ!QCDmUO SX 5i0m6!L۩n"j4iQjRNTCD '!QCDM4*7J(5fߘ}cٷNN,vjc46MCƦi)쫆#JG(Qzx:to:}7;s̹3"9wܙsg=+ƞkU[g[QI3ZУ9']s?y>'th8aC{|eH]Q[n??I3XQ+U?X,qNuu7t禁禁g*̤'L6AܪN{NԡNZ#uюOTPHh(RtPwt]xhhj]47:kU\mػ()ph@Z=wfqQkbVHi/QCeȩEtA{1h5R}ϸu:ktf#L;Z4~?NiP"mjH܋^U|_5| _uB:> ?"%#i+9!egadhLI ].R`$cn5HOTp/xR!-iPw[} 2v*[4#kW4.5RqJmRVd,wdH @(uJ>iP J$3E:wS^.~|l̓JKKa RRvH{CFї e<:UD[R>eH3'd҆oh:!]xד޷*$%eH3C0^5d 8C: ^u:9Ɩo ؏p[iqV[>}R'aZb|:4Fctև!̯Ͱi ӷa[=#{ZbTSkTӍn:%hbg뮻Bp] )C$n]p2& V'l:J,{*hZ/^IV%`RyH{Ɖ~,oAY0pß_K![ou˲diodq1N'1j<`AYEg'hca'q靰&6WI!IE͸Yna\ΘT 'luٌOo=s͘4-պL[S [)`igy, aFaT{Z -vaKMrMWYg)^lEfM˸G@oƶ6=/0~20Ʒ2ڜ#Yv7go|L| x5e?ׄ>wyXSļw~YV) _M?PKҙB0 lib/unicore/lib/Perl/PerlSpac.pluAO0 ˯xVq@Bphn:$i뭁AI ')q3Ltr]!K cC^d?+ Ugu#1yE}5r`8O5ڒGҒ8Zj:׋D6N-#O0֢&XTv^Vٶ\d]uY<}p#yC{ېxu$0E-XF5 NiB$nqo-a_8! ZT0Qe-tcK.p bi6-޼;z= L)}w:@sz'ͺ#H}>r9;G s?T/Tw"n`LMsJ7 h VJy gVHf*n/6j9VwE}PKҙB(~( lib/unicore/lib/Perl/PosixBla.plu1O0WCh#$DJ "RVm$s@pw09 M4JYjf([hAkg2])Vˁm-W1#|i QiH OzX/3 @Ρ"84Ҁ?(]αMw9", 6CO#)YaJ3 XF7Ii{!qTwQ~^,[H{5-4*Z *}(1ΊRoU4E?X8 =#܆[`:xv')/Dn@b7tqOGZ ~s0CBuDd!}5*<6A X.gHg*In/N+PKҙBKD& lib/unicore/lib/Perl/PosixLow.plu1O0g+^ա a)]*%HQZ)\sFs"&bs YW="E:p4 o0ݜH-3yZQזw=bG8ĩ2ӁD>Xh:'#ZBGaEM.ĉ?켬].v x< G-@#%oY`*鋾[;؍j=AӄHHqo0/DDwYH"E\RdzMa"ZE/J)Oqj^%*IJjPKҙBD+R& lib/unicore/lib/Perl/PosixPri.plu1O0g+^ա  TJjS$F'6猜 nQKdi^|wxW 3Eٺ vnՑjP]!Ң{[y1t' Scuf{< ,|1! {Tz5΋26v.úX=}"[{Pxm0UYNvmGP'tZtc ҆AA\MsJ UƘH2D,+ٝI"In3PKҙB%'7 lib/unicore/lib/Perl/PosixPun.pluOn0<_1ʅ*APG'Y[g]9N[>Smgg|/:G9teJPCiq0 w0]@)&y4/Aw BMLETitKx$ǘ#O(kG[T܆ūwG8' K]\ވŮWnD ĥ<Bђg*HSXbǣTƋ^+<3Qţ;EWgr,]/DnM{4,QVPKҙBAg>+ lib/unicore/lib/Perl/PosixSpa.pluAO0 ˯xVq@B2ETi8R%) CH8_?0Y M,+TyIP3T 8K3L'b:R kqkԵ%]c%qjt+<1nl`g4-ZBGaEM.ĩ?켬].v x< G-@#%oY`*ɋ[;؍j=AӄH(>ZPPe "vn`MC J7h4VJygVL*InDIZ}PKҙB[?& lib/unicore/lib/Perl/PosixUpp.plu1O0g+^ա ATJjS$F'6lEL؃uw}7H(4P=;4ih y‡5'J ʶ&20ɳ#܆śwG{8'/^GhnAb7YqO"q#A9ZPPy!"vn`MCsJ7h+<3YV{$7IrRR/PKҙBY+y lib/unicore/lib/Perl/Print.pluKFӿ /I"YEoDaImkQO0JVU$떾^Y2?y^8}x^LJ/w/}Y->-׏J>Ӈ{ݿtYⷫ.Kxy<>\:ӛzqz_ܿ>=/r|~96x~~\y+.狺yQO?\ϗǯ*8󻿝_ӗ i׏OOout:=/3otZWޭk" )d $_86Qvwϐ8Q wU}NGў)J|tg| _P7ָ(rU4ZZIf6H[UEZ)AëЏ ˱BT/ )|(|hr^EYS)+ꭳqdf[*(rOVSw# 0PT8X(^(J)thm T)CkSX"NE6HQTĩS"NE8q*T$dVEE-A cH/(R8g(RՕQ.5Sw(Cf[fU96H9 *JVijcP6SmL MzS*ۿ!QCD ڪ55$j!L :N a!mCSEZ5iӢfD 5NTCD i[UolQj̾1ozXƦilM&RL W #JG(Q: :t#@t~nZwܙsgΝѹE:s̹3Μ{V=TPθz&gm Gs]O~, T}p N85)PIev"E|Oוv耆E}ӻV]цb 9 sqǬ҈/N%K!r<>].mDL"EE%&QhIZ4qӄQF;1ơ=tBS3tiL(@LmrD EIg:˅Jtuѻe3̺G]RabJC- S T)nkK]iQq{:nOW)QlwM*T MQqIN}HNɒNt:;`n6|lISOLFOh"3Qg0S jPWUHaM]nPoR:s,K&Preiy8F!4ϩNzG <;o>6Hߴ >yIOMx3|4k ]4[v.t f')S ,{1: +k.M_ǧcGP〴dis!˜a S9"Iw]!A;O =BJ|A]m]7Fyz*\ʖ!H (ꨕA:2Mkpe8E\%)hDi*Y4]94XF>a/rh Qtc_)+uXft'ct@6|Cc r+쿞T!))SE@YnS)(B <&w$I ). K4\Cꛃ|A&._R~@JufA9<)Apc}E|񀪈W6LBPwX$@~v|_PtmuJe=Z;IVCd7Ƈ񤾽ײ8?ƇV'3Y<<5X:t7F!O5W$&٬M$v7B_0~øMcSwO:90F+6>`g~PlMC>ŘZ37ZuXnLv˿Ha4,;[wݍ7sj*Y"v٢1].l:.池i5z%1鶗Z+I{77z !'odWx…O{~w|%gc[.lUJ/ޒξMŘ:;l4nddml yqLǥw_\I3ivո7kۍ;l^Yhd s魾gNZi5ua3?eL7,`[F=%S? VO[빡n~ɭI޶6, RhݬiW$x3|mV񣥐Ƈq59ϲ;8ۍm|cd7$v_{=k~,15/}(tya'3>~U9>xOPKҙB&T  lib/unicore/lib/Perl/SpacePer.pluON0}޾xQ37" vaծ5]"'ۤsO,&GrO=uWEG^G(kDpT8CbiYK͉BwXՄTNhd[i4&È7g'#*BM)BAPu b&[h,vdPZ}-YwkNV40Z9Lo4y Ktɗ#~v+\?Ŀpq![%F%te=В|>HdFQ4 XxY,a:& L!fa8gKi+PKҙB$̙Hlib/unicore/lib/Perl/Title.pluOn0<āKˣR+PP@VIֱ+iw T=Ֆ]0*v< &6^X))ZM<ޫ(# ܖ7ZDHPKҙBu7\ lib/unicore/lib/Perl/Word.pluK\ Fӿ^xطoX/D  ˑԶ&3$AV3'Y,ۿiӛNz;󫟧u^_ϓ|r~?LL|yx|߯i~ܫ/症t|;43K|8O_ӻr Wo闟Ûyz\ϗ˙mϏ?~{4=]h3oWOa:|t:O^s=|~t} Yq:]jtxN_ Neo͟NwYn}s(\QWed;D-4DK 'CԠ~Kߠw>,_EȠ&JwJpM՛KawU4vшwےtUwi3wM*Zd/n^QڠԴɽk}@C :trqh[G[Em*4D=:+F[=ψ=qJ6h/9ˇ Q31CDC~rEYnʦe h.L[2TEU uQsF fؙb$ Wh R? ZтvaEݺ@XP21`m¶1V mtx3fQ5c8p%Fl1c8 *(?X1c| % ^)xW\!-_J+RJ+RE/x N(8ʮ!c bB*H# Wip)ּC5Q의XXdR X!1TYr x⩊*fxm⩊*⟺bUSF?Sw F:*☊c*ܣc*8*PH%@*6Wr*6Wl\'*6JTB8f-pE W4\pEmf7n0avtknXڰaiFm䎆 6=L+i*P[ҩM8k-4O5L=4uh;;$qmLSD )|񞕰{PH7?Xc $'uΨ<:ftNWu M<ѝtIwcAFP- cO}tVcFǦC7H#iɡn10cZ}aBa޲hra N] u_(%D.$hEu)*Mla45f9U(@;NUD(i5A6C8!R #S T j5&DZâg~e?E,CPXHځJE*c*+~HZlDW1uEES`A,pY$4ƆnCGv5dIpe)O}d`VGGeމJS u4tMFcЪ"mQAy,>쯤>?`\LO}n a!hgŻ}Cśt%Q!vцn]ǽ(N&,st'hv~UD$[8-~K_ eM M +*?l K$h eVhݡUцN[ȐA b:)$ ̌+|!uYעoԶuQTbTGBlGw(evlP\DB "ep#W!_[ NbE(P)$LjhYߒ~%%L#XRLN,uhopI,cYfŲRV02:6y#F}mR&kE;H mb̚0eF8 ɰtN S* tCƪDSRlI(dЏEH `/Z"BMqPMҪI[ItM:Uno@# ٣l)A+~3bkPF(" RjD'RAv4t ]C_`m A͹9xsrcޝ`T(/5/Nhīsx0^x M0[U{DoFE\k} :`\onciyyq^W0\tEJ?\zE2ëlzzwr^)J+*Y­@8^i-,gYVguީAs8ddvn0{,prN'Xe4RgіMbm۝Sx6I̷᜝y_r[F|H2n%9g<3휩dq0~b׾]Ρ'P?kz:qEƚ%Y76V|\#^5RXKrEଗabKdNPKҙBt]kF lib/unicore/lib/Perl/XPosixPu.pluMo6`/m"HP@  QK{JVnw$=y43Ծ?!D|ǽH~/!ߋyR?\2K9ë /p.+*s(r*to'̷aE¿~|s?>jq*\".q(2ݖw~O_vA|N_ķI<~O,q)_˭42_ğݥ]WU-$5Hw12j:LFƴF9QX[ԭ:TQiWrmQɵS+EۖB*dʎWVgƷzچA4Ȭ3ļ.NͺD3'*WH̲k uՔ#9"exɠLJJ\65Au @(E. ҂J-J@@A5K7AG%Da# .PF^P BJVjRD5%H+2d,1i-Ѡ&ԂR浳ac !Jȁ(aE\N}jJ4\R ,HO6Dh!L\ߞփ C2W Bd-laU6 f ʞ{Wxx$!""B^!"'_hUbs8"5H7VZnƓ9@&D5D^'3@2&YwD|w *Q.l\/2>%Z'7Sxmcj< # +'^u#'U?O_PKҙBCklib/unicore/lib/Perl/_XBegin.pluA0z]'d{inLCb#q–Ɵgg"zO;%Uo[j?mHow Wv3Ȅs2`=`"thgg;vad~80=Jo3zG&Z uq'N#zO;t`mZجvwh.rpfv2aȻ3-O&q=vhLLĿuQ;|>|.R/ϑ[.l1X8jG!e!3)+Z%ZmL.3Yȕ5reWw &Q BE*4hAT~U2J+i}қ,z#RTY^U!R\gJbĹN|pijPKҙBw˃ lib/unicore/lib/Perl/_XExtend.plun7E_A oIě  Ȇ-r$$`D{9TVkJ͇[խ*Wku?CUx>k[]iuwx~vwImU}CEv㪖JwJ멪pW>Aq:~;q=[n}PϺSUTޟ㏯XWgwMma[JֺoaB,сk cy3gq=Ԏ)sKAK 7-GP-cK,<bš%%'y\%I=fƓ2h 3,) C㪣ϕV qNL5v$4 KyH)ist@#i$RDxHh_ ZUp Nlj{ f8&f@i(C4q@F-(!.D>I0X*TJ?h;BK7b!Qpz0˲N;l$%P ryN`&q>&a`Pn1gipE4R@&tom1&%9R&P nBԗ`2JQ@;/mJ4I;7^ƌёѶ`4o@Bv?4KfAmX8qY,ipa>kHv'PKҙBX7 lib/unicore/lib/Perl/_XLVLVTV.plu1O0g+^ա ځ. RVm$\ {}wC ~dl#MV9u*B צX.kts"&U(ΰtlJiҼ]X55w*JKOt'q8 |FYk>QQjc- um(1^ey5n>&[?}ty]K=v%oY`r+;j AӴQ9Zۮx2 @2E].b8o P/z VJy g,4KFwj:EWiIe%8 PKҙBY\lib/unicore/lib/QMark/Y.pluON0 =7_]`t4@pn Ǵ@4ĉDsS| @, -2O8EѨ; e|OT<@7.W/KM!<LMTKdGgx")k0|9j0&4Jkm;"X"/M>_bnxܦX}ffi2}Gܚƛ{'[Xl:CNn#[+ѧ<;&~H U,[zUјkFByq?B83y2aEA0wG 'Wx.08dMΘ$0Yj GEX,PKҙB䏲8:lib/unicore/lib/Radical/N.pluN0DWLC/Ж !zGDҪM8:ɶ186r8>XϾcS Mt$$ht6[U5,yFy嬷rfkP!]C&NTGWx"igk{F({aDMh>1( ua$8; rᰗGm oAр=myw򪅳0oU5, nZ'ѧيGnQ U]-B낮hQMjσB-VɃsE y_G_- In `PKҙBP6lib/unicore/lib/Radical/Y.pluAO0 Wi]`@L2VTi8R) CHqC ~hl#cCbɟj6-mtY#1yBq5ŤcS:O5’tx Ԅ}_H*-5%ȷ1nSO(kGGT8! ZTpIvVjWrl.a)p bi-޼;y= L)}w:@sz'ͺ#H}>8;G s?T/TwYHS\RdzMa/(X.gHgQ'j28VwXGPKҙBdל &lib/unicore/lib/SB/CL.pluO0)f\]UF.[GLe}N x<=>"*$MM+UDÿW386m4;c0R@acov|-,_*i~ɐҖn:v=臙NiԨl,5#v[7#- i0|>|֒/[~:[ғU-?^P:eЏ}7lFB'?\ܪnWU._Y}q.?~[ۖuwxZ= vOj{\<,~YNqU[_d}QBE=.E?ݢGʾ-nZ},՗E}z<-uwPe8vO^P-mj>eE:FE!-=uv|r!t=7q}*z؟O|ZoM~S֝smz=)fP]G# 4fA2N<Ñ*IB3" 6A9]>o >?7L$G $$i,h `F&& XR O;[O$HN /%b~87ɓ" ej} N Ɛ`2R ːHL2BHHxяԏ#ԏԏԏԏ4" F*F^xL b1 /'%%$q&y&\Sfuu't1Q1Sf6۬Ayjfjgjgjgjgp)a_[ p8;g %YD,ȑ)BeRL5*ɼGD%YR$%ŠT1X qȵR#^oq%Sn b@n4id(#.DL0T* Tk?h: AWnHCn`Vp{0lib/unicore/lib/SB/FO.pluOAn0< _rREs!5`A葒[,(ehv9;:>4PծAe+'%8ڑu2`]Q0zgY|{4H|# q lCq-;;QZ _vF? bF=q'CG`]̈e;{0G`&x79L:O&¸ۥig&;o;Grw~."+蚭*V5my^,pRu,,,2ceV ]QܲEe ٺdV ɬK,iZt_k)c؊/͠}=>>nzmOy9=~>=^ۏ^6̸^^y3i#o_r6y|>nt^^f^.o&_/wd~wr]1lv}1^^r~`Ofv9>_7KۿOo?~o./=_o|`]nfNWiz6?ߵf[ဦ?./TTYP;ufm ]@4`*8PX hAmW(z qP!QI0". $+X?43J3Hdw[&i{MӜg>|cW^Id 3#)JNX@N4@yeĕ uũ;*hSHf8YH bDyG$H(+JR9<. BR#ASB * gp!/DfK:_t+ 6 . 0  . 0  C-Y)k#7DpJOaK2Yo:VBJ$rMe_L*PgtU.V.r W^x<3u" WZyR*C 2W2Mw27͍6`c6=H#iOocL-㘴L]aoB:A}Mܴεw^779^"$B vH$D҅E+C7B}!wSؙGa )ש:Ywr0ʱD\M;c<+W*֕$ V E3(R,(u8ܒ&!kvї JKe~GZIAuV]]]h@8JnE>O$Lv>ۀA  :%8.tj #q!:OZH+ EF669YrkG$\ѮBt- \Ik6sb鱹"\aL8C,#t +Ɖ6˒eYlYH &"(H-+Uoz+FR{J\Z mzn AC8u8yZXAA'6uMHHT+ uJ]Rרk5tс r2ȓJJ ZC 4@B"Vl R q܂. {LGrRfAvG 30rplQ+/BNMnpNPKҙB{߹clib/unicore/lib/SB/LO.pluM#үhÇ$ߍOdŬa 䨙Q2#mglw|d_;}>OiN_ϧyouz9=|z\_q;>B\/y~ӞU2=i}.)p)NUxZN>Lry}_]00k>}:ηz>L_V].2z|=NWY̽u.e82\+pW \+p!!*An"W΍s5j;qw8|;q 8x܀;p{q{q{q{q{qj^nnr{}[KHXc 3 7p3 7p8g 3pY8 g,p98spy8몆C#䰓|ЋYBI3DmWYLa!Te(6,Mߺdkh!Ne*ޛ*1wQ$xyăL[ITU2mMtm6  mn[n[ 2\p.eW \+p W*\pU\kp 5׵]K9f>`  aly84O/:ޗm|wa[W:>$W]1-e:κ8Mkh7jőVĸTocҹbt5C]eZ~PKҙByGlib/unicore/lib/SB/SC.pluOAn0< _ڄ"@r1*5`Aȑ[,(ߥJrf9;<>6}b}B\6QuL ԣvsnAw#@xJO+DEq#nPLqEO~ic•`uS=^+sUD1v HwgF8k.aGlIU#跞َ'Qyo ~E`]ݰU*,)t@=b!0{UU{!s¥.&y^F($dnD7L˝ȤLUL"KQʣ狔o(oRrnc|PKҙBɥ-lib/unicore/lib/SB/SE.pluQK0_q[(2hB >Mo$M{ou $ޓs;g778-P<{( ua;͋d3l]>&Ϟ>:Á` [v^iv7g;'7ߍn:?2=H:?v0Yʯ#D}/801ƑvL4 c6[tn'Gl?y0vH?Mv|0[=@-BOLHx37{p Ξ=_#_<~,ttWdJPbeYFz ˻4PECŮT2F$a (󐨊$\2JBBTQץ ɐdAڤ@-*-J:%NM@GZ I)E.TEG/[Ju F7r(1Q,ɘv:>/ۏ/7!.Mi&3=i}ϧ)i*ou%ilӿ6=_do]|~|~Oo?|v9My\.xnl׷i}nw~e/q-ܨ!IHAfnfn3p8g pY84d"w?" 9r,Yȳg!B z8\ p."\p.11"Hd1>m겺˳l9u:.'unW {(Ytl9 -eWuժ5jN_8iX:Zk)t wpRjTcI5vШBruvurw*M[u۫VoYNWo!""b!""b!""b!""b!""b!""b!"J: ! F ! XL˃iy"mzy0m*6CaTyldHCs arcX-j9V˱ZrvUnٚ#:"ꈨ#:"ꈨJ8"(p.ER.ї̙33gf 2\#W quU W*\#o[fuD$#vk5j;Nqw'8y;Nqw+ sV`;'؞`{ '؞`{ '؞`{ '؞`{ '؞`{ N~m7[w~"qH@RCfnfn 3p8g,pY8 gsp98~\E֪Vq9vmH7C!_Ұ;,i1HCF*Ҥ;ōxD\'GDeYt GRʙJՏHmPKҙBzlz|z3&ۯ޼/~Oo^=^n}}96>m>>|ٞ/OÙCm{|؎LG×cLǿ_n=~|<痯vm{@m<c|&^<޶W|7?w;L4FJԈn]+qJ*Hd#PBJJJJCQ}$QZl'44 @ Q !.H!-2M|"+X| !LTr̡BA"2,*>dI<;P$@/$=)b+qak@kA+Xy||jHZbZBIDla+;")+I/Ib+Ye JRX*nfQ%BDcJD!eP624229łuGb.(j`دVWgKCuHRW=ܫ>J$@+5:FRW345ȎIMU TWe4ȝP 2p2nt1Ơ4A7Fmxca6f B&^ Z0.~KHDHm84 ɂ| $cJ+}W~̌FB]CaRҘƭѸ5ҘΤtMJ\7MttCg^A: Ӄl3lvf3=CzB5 u;\ՒLb2v.tgL}IB&CC+`0Cؚ# K9`Q F1XF&bVѩѩic덡Ƶ6I'e\IG'kdv'RgD~; ԝYwe^YTH'/lUSar9 Эlle*e-'&wW{ !,z͋[쾟@*D Dl@@u+ ]˯Q0YL0m["Z"*M)3N6P@qE`2x+D~ E\n h ƖdGdU2<ĸΔQF9Ar$'qz@"p&iaP!r7Nh( bbbͳUò B(gظ hQ`:gӰ @0&f,dyqL".O;uxl KԢlAޱn _#u"&G՗/~D(Yʬ#R(sglB=bёE$7! uﳠ%C٢v&qD(a&cX"&w82dl -Ҁrx" Z@87֠Xg1d=z/P K't06u̒Pld [2rW f)zI?ЃK=(C ;4]K"KwG:4j믮kNtvx5 5QAɵnpx@<@qG:n 2wg. MLԈ:PUuJP>Bc,ez?:Y=Z;Z(FqRkL(5"ESY`k\V8 C%Db)@*WT|jZ\39(* D%BMD"۵r P* d-@Q%@G!B)!B @`@:G4:`lAQ&Z@2CHmr8(p- Mv HB|@"Q$BzbK: 6-a* Ё 3G!*/5&ehM#OHT8XNsDv@G3p4py3r>6&+<Յ5"|LSV]W-ka(Vx , S Ŀe!2xVb&wh]Zɧr^Pv`;hb E ^xQNJe?*#]@u7vg{#œhwBi79 E׋a4}SG:Pi6w^8ۀtA ]:*-'q Ml2;) F,Xd/K'6g40P h_Ox 9'i'Xȹu$-Joǡ6Qr+SEoLZwbBHE;1Xa= P!ܒNﭡ7{Ip|ו yW%#+( FW|)qO;K#DєcݹySs}P޹ي9J [uk J8')qżvU?2I-1%((El֮{?ތPKҙB6lib/unicore/lib/SD/N.pluMo0 @֯`C/[++c8IѺvtl&ȃl˿/ui@=SO[3v@Uh>_^o*ʿp#ÏGtۀ=/0nptO'+H?{I w8ap#ۦzx7Rnz׎pЏOGߞ`rㅚi(O к':*ǶkOT 9@i]0?^MvxO݅k6@o=tc8{wն$$HJ$2Hƪ2^PN%SINdR"eQVb"Z I$4xɢ4 4Q \3LU*"'*HT *Rq yt%(t6Q\:Q ^2/3e* \_}׊}ך}d_g}]\žQ;1Ԍ|Y{PKҙB:Clib/unicore/lib/SD/Y.pluA0Wj\`IԽIT$lM2]9-3fH^<Ϲb[Cy vW;CݙNG th-ЛŚy|}vx7@޸"Mj5 8 !`etڞh:LwcKh}]W;x._vZa'؀.#rlޝJajZ'~mqL[= $mƀ5)x9~&@p[]XL4pvb 5x:8I-<=M}1'TVI:dbGQY,jβ& %*jq+Ee&r2[d*y"6MBLpKي}f.ٯ+U+`^ d^JeƼ̘&UeLμ+ɼ̫yKPKҙB4lib/unicore/lib/STerm/N.pluKo0 \ڄԃ\Q$NeT!m;0%]DnK]jaC^8,<>G+4FtxĕGҡG_;ekȆWy=Ƒvi^mƮ{XcGw<4Џt^ k\ {įPKҙB?>lib/unicore/lib/STerm/Y.pluQn0<_A\ Q$Ne{;TRT %]]DnK[miyHf֨wK |zڽ8nvOoN}oD#g@_d)p޾p8tdkG1/$læ^ӽ~Xӣ~ ֳHa{v#pӋO4lQGO ݶ?1!g3y>ޓ8={FT7+L1x: 8XJ؟+>(B e-Ŭj. TDPf<L(*cXBJ<$" P(4du)h25٢tPF6i*Pk #(iJ ^JNMX#-$K"EG٢WJu F77DჂBG3&Eh XH˜ˠt$~PKҙBOmjlib/unicore/lib/Sc/Arab.plun0DWl/m"ŶԢ&0 Q HKkDa"3^տ}CJnj>oHow s4mo?`"wt`gg[va`~3='ct 43;aQyc܅޸Sρ:0 ~W ^coF=֫==?)׻o>@E t8N8 #S0#y7\AD2#ۙ "?Gd·oFAxE9Ѷ|VһYFl98Z> &=;D+dqȟ-IKPCi7 w0@#)&y4Aw BMHETitKx!ǸOe >55y—6 NZ2]Fe@pdP.]0%E*r< &2^b:ϘGqnz%l׳STPKҙBAlib/unicore/lib/Sc/Armn.pluOn0<āKC(@U.T j( ztuqݴT=Ֆ?@Eq1>`' 1@V' kYT 9D~V5&pǮR+kB83XQ$M{ 3 :a4rBpPKҙBt.lib/unicore/lib/Sc/Avst.pluOAN0j4h y§%.N" da`g/;Á%wnD_ ĥ\"v+?$SX"ǣCa*/RB(΢ѽ-Ӌz)M_=(Q7PKҙB H92lib/unicore/lib/Sc/Bamu.pluN0SLC/!J)TU"qtmcpq=(}3;ß "Huq}jI~uڴ8Kemnu ӎM( ua$;͋x/3l]>&Ϟ>:Á]0M%*r< &6^2X))0hrjJnJC(QPKҙB=f3lib/unicore/lib/Sc/Beng.pluKO0ͯġM4qE*E8:ɶ186r]D,şwdz]|U /J7{KE5=xtGrtT3tؽD]Yw-A: S{#x / u[ԭv @x7֢"Xǝ b/Rn{U|?)8m1$%-7Awn9Luw:BFDtG`'0}$Wa͍93CLuD?WGS[ލW јz$I8*U2^w"t& ͙ SzɔL3͎G#Υ0ʘSBHLH1_\Dy.$J&*Β|PKҙB>MeT6lib/unicore/lib/Sc/Bopo.pluOo0 S<ā]ƥ 2iǴ54[Lio?w)qG~/6GsכT? 5B^'c r7 Tbڱ)itaI~x Ԅc_H*-5ɷ1n'l Z&Ox7֢ X׆?u,`78Rl'a8gmѵcp;ޝn^&]fĉ>LKyG sT3Lj X%TƋ^+<3q%;x J-f`1'őDXF}PKҙB*sy.lib/unicore/lib/Sc/Brah.pluOAN0( uaD/v._e& }M=< -C-y7N^pl[fD>M+yђ $S삩h*RINaj/J)OrAQ]yP/JPPKҙB,lib/unicore/lib/Sc/Bugi.plu1O0g+^ա B"RVm$\w.ŦDd%ʧluҿ8ekz%5Lw'b:P kv[Е%y]Ґ$5Z4-1K@gԭ#BKiEE%YQ"αMw9"}tyCO#%oY`J鋿čnA􁸖Q9Zz: ˇuC`jKTx~(L@ceRSMKyD*;$Su)i,QQ0J)OrgNͮӋvf{-7JPKҙB'lib/unicore/lib/Sc/Cari.plu1O0g+^ա J "RVm$s@dw}7gH(%$+Q>f;Z=*LagEnUMͱߥX܇X(zG EvO Sj]Xn@j7vuO q6~s2CB@y B08iVI|S8A5IȸE23˛BdibPKҙBpѹ7lib/unicore/lib/Sc/Cham.pluAO@W<@bBxܶ]ΚV;O71Y M4 lJ∆( AVUf9Sjg]Nz֕u4i_* g[p$VS]\-c1b>j( 9‡6%" "tab>Z͞+ ޜ=9²9 L!uCq z'f$>u+;G sח/Tyx{7`uEcJ,7 ȑcy2x:ۅYPD<]PA"qG_PKҙB}'lib/unicore/lib/Sc/Cher.pluKO0WLC/ЇK"RVmIY#'샵o}ŶDd%ʇMQ1%5L7gb:RkYϦvfKԕ%]ä!qjtk<1s/[g"BKnEE.đ?(}αK9"< G-@#oE`J鋾 jAÄH\KqoWTGDl[GX%'D4Ƌ^Rb$-ɽZ,rsVPKҙBW36lib/unicore/lib/Sc/Copt.pluAO0 Wi]`CB vVTi8R) CHı_?1Y5u8JsI%V!ڴ8Kemu MRߢ" Z0Pbfy+l ]uz< -znCͻ ۓ}4Wwbլ8ѧiq)~hanʀv]`JUx)L@e襱RSY4zPӛxv!Gf˻l\KQDPKҙB>lib/unicore/lib/Sc/Cprt.pluON@<ӯB QIBl$M!RLR7$T_c? /:t`?'blٓce6m|8{tes0ࢯI,vUM'֍'.rwMQC _փM*<} Qj'z#:b1h܄0tm.;lc㙟CPKҙB,nQlib/unicore/lib/Sc/Cyrl.pluOO0 ͧxh]`+eCp)A1m5&(M}{\G@A):BP4NiVV2t'CNzQU9퍪ie87Щj=1u'!_ 1T4{FԄ]ima"ϓ556uPƓ3Rhi:w50YJijFvy2?v#gn*qe_8[Wc)J= 5Fo 44gFCim b,ާxcn}xrFj up;roΞap묯4% uj#k;ѧj;Áj iQ J]) NBUe?jl)q;-NSH_0\މ%npi Dĕ\"1 Uџ?$#G[TϓMa#j/RbDN-bR]ՍV/PKҙBķ(lib/unicore/lib/Sc/Goth.pluN0)hKJ6E$଑l'lɖw3ߎ1^ M4 :ŒQ4yޭtu"hjgxWzvU4k_ĖG -!NMT[َ.Hsq;V|FX>Qw=Jagytab>BGр=m)zpE`VBor z#VAͶ%}N+}cg~) j.^1r\7+ PKҙB=Elib/unicore/lib/Sc/Grek.pluo0Ɵ᯸yZL0/$Z(Z:i\7'l߻S wϟr]\7|[?Zoj&[hz3 TG#Z:`3 fu_AލztHN|G?gK^#B# n 71^oi[m~s ǹ΃&;z=Ù4hAKv=>ɟءUPŦBcf8]̀{tE}5ltfkK|%+sz30ps2wDiw : wc-jC 5bδb)OK!ȥ#_VL[!r!+Ʉ/r@IZ3b/'PKҙBh sDlib/unicore/lib/Sc/Guru.pluOo@S(_Z8 5Dda+!r\`l]veio7UNf[{dy+Q~=aYnQI[m,yAutvݏ*C<];5kOx!kgR{A*{&YZTp{]QE1)ǡؿ~< 2zHwg:8k.d;lE۪NGl?'.ߣ8s?TߩB|к!kU8\SF{Qy lyDt6'JRi3-L)-^D,Jh-t/YX.wBb*1%kSrBʯj]q/PKҙB&Olib/unicore/lib/Sc/Han.pluOo0O&?@e%Rf`Gƴo&UOcWPw53ݾB\Մ\GJiQA5Vt;tf /~;ugrOFvRFc} D~EG~a@CJx,xy.ph,vd0OcpdZsrÙg(@HWk9؉ɑnȃ{$g|\oz3;hTK7ltʡSXaV~YTm$aJ22apW" bR» Se2Ŭl%))fL4EF֞6rޞkr9D39!e PKҙB%E`]0rtvZxBOakU'IJӪYQ+~0YҏJdvMi)Wg*R%2/2!]rT"YUN12TDdddd) PKҙBG+(lib/unicore/lib/Sc/Hano.pluN0) zJ "RVmIY#l̷c~hl#cC?+ymZ%6LW'b:P5ŬcS:O5’A aR8UZfK4Q*c-ruM+1^YOt?yY[ u܎św'k8gɤ.Zh.AbשYqOBGiܴ ]-Bv40|Sx`zb1Lxx73q>&nH(PKҙB!f-lib/unicore/lib/Sc/Ital.pluOAn0<ׯāK ^)) Bd!nu8m}7ڒ̎1Y M$N OiHPcp4 w0ݝ@53)g=yoAw-BC8 HMTktGx&ǸF5Q5O4XԄ0&4 Z0REˣ dOɳOp ڢh-޼;{±L!u:@s z'ͺ%H}.Wr9Iw/_ !Eh\.;o P/~zX.'IOUxDU,j/DɠJ< PKҙB Slib/unicore/lib/Sc/Kana.pluON0<_1^xhRXTҪHd9пgExg<;gHtYxX>B.WO 1B{m|jY*P˫yj_* ZةV̩DbvQ@ÈА'|hcP™`˼ȶbM]aaϽwV poj9roU5, jZ;ѧي/{&~( U>Ŀ KJ:֞/=$dNfoPKҙBȵ7lib/unicore/lib/Sc/Khmr.pluN0)υRK8"R6E$q=k(}xwd{Y.~q1V8jCSu-ݜȒWTg]kiֽUu-; qRz^;7gԭ'#BKAE0#YQ](w9{m?}tV =EHͻW5g)N(ۀr\t[8>u|9rwb~^!Eh`]5M9*qv)t@=ySz=E2jLV2*bFZ*MPKҙBh6lib/unicore/lib/Sc/Knda.pluKO0ͯġUQ%M\QJ$Nm g8Kx{|b]BJqGlM;]A5Lw/QWFbKxNChH7az4nnK2!ZT_eQ"]Vݭp.VO"-$`6)NGh׀ȱDj>l;Gs~A!hj:bܻqJa"Xσ$ p}=VE>J&gBBbMfM/Ҕi.3);gʦBDLxS.(P"W 48'PKҙBu (lib/unicore/lib/Sc/Kthi.pluKO0WLC/!KETU"qtmcplxd˻o}/@dlljGa(j,h E»%NFF Hwjm[OOsCc֣h=^c8E"?+LuշV`ݠfԉ>\'ĕ>ͱ3U ?҄^A\ESJO jUƘHGr9IdrkBϻъPKҙB(QD=lib/unicore/lib/Sc/Lana.pluON0<㯘^$Z*zH*"EiES$Nm ߳"Nwggf@tu%\?3E:&ʪQdIO5*'Qu4i_,5-|C؇NMTKɎ.DS`>"sBHs`Qr5JEGc.&Ϟ}xrFj!ܖƛG'[XO:[!M z'rmdK`%T'S_ə|BolaWY*fS(Z9泱‘j5Jxt'fb$--֌n ( (ω/PKҙB}gJsOlib/unicore/lib/Sc/Lao.pluAo@WPs1Q6jn˿ PT[|~vw!Ԧ@uszX9!t8K1>QБjgXST>}uiO"6Wēj=|4 D&4( w.bo"/~C]G`\EߑĖp/,~ wa j/r M)3BUP -LN? =^LZRїBi`Z.j´ =]쫹RRbW+!pPKҙB!lib/unicore/lib/Sc/Latn.pluOo@짘(_66`5쪖,;JH1 -,ղno߷N Ҽ33o=rSQyBzUȿw[~c?0AǺzOl֎[:\hg7ㄝFrӫImZ=v'C](3jڜدh:La0F`?ۛ]wٖ^_wۯ},Ʊ5@白mo@?tH.0S!vT'ݦ0c=5<7nB릳#3;*'pWb!ewjW.>0\FA2P)eAߤ/cP' y*BPj)2 +,@KPsqJPJDʟPZ &VAUaP,@AҗJ(M,<Y"e%iJsO I(A:aα!Z(!-=?PKҙBD5lib/unicore/lib/Sc/Lepc.pluN0)Z&)G'6g۳"Nwdz,&C%dU~v>48KEeu 䣖M<נsK»"NITj.D1q=|BQi>R7$T ZSYMk<5t?yY[ u#y7^plOI]\މ%s D ą\i*;H~* DEƋ_+<3AF;5YF^V,JG}PKҙB^P]=lib/unicore/lib/Sc/Limb.pluOMO0 =/M;[!]DC[1m5&(M{Dr<@ȶ98͑?{M C תQiF2t}"CNzPU1*qe'mk!t*bJrOt'r7?2g4' +*BMFAж},Ovjda`m}xrFjt-#97gON6FLu7C NȆJZOȍ==]B _XJTlPrBGs0᭘,7YLM14 hz!̹0_ _PKҙBtGPHlib/unicore/lib/Sc/Linb.pluO0Ɵ_xQ@B"/ӍH n;XkMש^''Ik}~@AG z:RUQ*(*DpT"?C|jYK͉\wXSUϔJhdi41/ g'#JBE)BNPql,ޥamKpؤBjGV !oۛےUxdE ՙdp}f9_EM`%#]ȉ9=7mJ3/\eZm,hR׹\σ Z\4c+?ty=OcQ+wϺYNjWa7PKҙB_Z#(lib/unicore/lib/Sc/Lyci.pluN0D+h )J6E$଑{6P [1F? @B*&Y1!Sj5{c rwn ŁԠ:šjֳYueI~x!iH-=Oq\6#V󁆈В'|kQ q;+tS,sM6Ūȟ;ÑЀ=[ywc{RtN,vuG'4!K7G s#; $S좩i*VI0`{b1Idr.W739oTPKҙBg*.lib/unicore/lib/Sc/Lydi.pluOO@xĄȅ%6i bqtu;k[oT!M{7# hl#S:Icy8ymZ%6L'b:P kiǦt[Ѕ%]PR$UZ4 ɷ1&3(k'KT&+P2ZҰ~u"W7*wJbRpO4t'4 ,E%P%|Hi\7`ث4Kvbm[OI> Y-چ|lnKV͚5Vgqpf;֢&}Ƒ.p6˃26N4`N!JiYσ Z14at74)aL#/1d4,lib/unicore/lib/Sc/Mtei.plu1O0g+^ա ]RHQZ)\sFs"&{>O1Y-m$N 4Kq)t8KUcnukEϦrkХ%y]R$Z45w1nK@F5!O0֢$Xׅ?4/}e% Cm=}ry}G##o 05XF7 Ii@\$-]_PCи>]0%*v< &6^2X))Z͒<ݫhI,f6wJPKҙBQG^/lib/unicore/lib/Sc/Mymr.plu1O0g+^ա RTDҪM3r 1a{ H@֩/5FјGc j ͉T<ÚrֳYtiI:kaPjZ;8bb>j4hQc-Ju]) "tab>:ÁÚz1iEumI~x#v8iIZ-3Oqy"XMDcDK> օ8QbU+WٮaaSsHh-޼;yñ= L%}:Bs z'Qͺ'})2. sChUx)LDk%X))q?tvCr,+%PKҙB x'lib/unicore/lib/Sc/Ogam.pluN0)ϥKEUI8:ɶ18kd;@ߞ q>X;vlPlJIV|q 5Fٚy;]HL^GjP`M5Ӭ{$?[~4$Nt'8r: |!! ZTB)1Ί2tcbSsHEh-޼;z= L)}w:Bsz'Aͺ#}k)2 u}hjUx)LDc%X))ZM"ܪz~X)PKҙBon(lib/unicore/lib/Sc/Orkh.pluQK0ͯ8c{ѭ^X(ݘcޭFTݿV'>@B=9SL~tr]!K CȤ~R)%3Lb:RkqkԵ%]vc%qjts<1l`G4-#O0֢&XDv^Vٶ\d x{< G-@#!oQ`*[;؍j=AӄHc/-a_4L;7DXgDƋ^R,+٭LLΫ%PKҙB̄j9lib/unicore/lib/Sc/Orya.pluKO0WLC/<ڦ$JU qtmcpl8@=<ĉDΎ}?-m4Yo^oR(>ZiCQe-ɒW*]uVYTa'kjƒt*bJqOtGv!PIVT<]`\z^gyz-7M6xO6O9my $%oޫΚɹF([ȲjD dKqwmWPKҙB[ׁ.lib/unicore/lib/Sc/Osma.pluOAN0Z2w}FU@pdи>]0ME*v< &6^bzX.'IOa~%"TG %PKҙBoۭ'lib/unicore/lib/Sc/Phag.plu1O0g+^ա DH "RVm$\ {輦@4KQ)t8KUcnukEϦrkХ%]&qtGx"Ǹ/g#jBCaEI %i^$<ʰK<{< -FnGͻ-A` 鋾k;؍j-At$-]_Pe!"4`LEs7 +<36Ydz{oWzRR/PKҙBO.lib/unicore/lib/Sc/Phli.pluOAN0P&4 Z0VEW.a`gs@Eр=m[ywc{B5X7 Ii@\$o-]_Pܵ!"4`LE3O7 VJy g,$jGHp^G#%PKҙBlp.lib/unicore/lib/Sc/Prti.pluON0}_q(`"D^0q2 ªݭ:0>&=;D+dqȟ-IKPCi7 w0@#)&y4Aw BMHETitKx!ǸOe >55y—6 NZ2]Fe@pdP.]0%E*r< &2^b:ϘGqnz%l׳STPKҙB$&-lib/unicore/lib/Sc/Rjng.pluN0DWLC/V%RR)J6E$଑{6P `{w( ua;͋dGv>`gs@Eр=[ywc{BouN,vuK'4] qo/_ :L XŎƋ^RB4郊QtZmPKҙB ,lib/unicore/lib/Sc/Runr.plu?O0g)^ա HqE(I9#@w?O1Y-m f%Mk_j=NLZ31Aub`[@5ʑCl QiH#OzR6ukL㈆R |XPDIvVz_$9vzx'`9R`04bp; o];aKf$>mkDc#~H~[?DDgF46_+!0fHgjN7NZRPKҙBrmB-lib/unicore/lib/Sc/Samr.pluN0D+h#*JR)ADҪM8:ɶ18k8@ q>x3}b[I(,š(d,AVWa9ׁj)=yZAw-BC8JMTktGx"ǸG gGԄPKҙB>-lib/unicore/lib/Sc/Sund.pluN0)%UU"qtmcpq=h x ^#_H@f5Fјc rj ͑T8Á օ8Qb;/lW l]>æ,}t#yC1nKͻ=۳.^GhnAb7YqO"q#}dCBMDtdع!]4 *u<)LDk襱RS5Qjc- um( N')v ]-Bv48|Sx`yj5hl0-6-g-7PKҙBtQ>f+lib/unicore/lib/Sc/Tglg.pluON0<㯘^ ^*bD(lF@'l^gf,NcCijnMX#1Fyg[@5ґElIj#O:7ӹl`'T# 5@Ρ$8ői^mʰ :Ϟ}#6}GC!܆[`Zxv' SH_0\މEn`i Dĕ< Uџ)bV4$~ cTr9y2SBR- PKҙB?|0'lib/unicore/lib/Sc/Thaa.plu1O0g+^ա aHt)JjS$F'6ȿEL؃uw}7778-P<{Qc-Ju](1N" dOɳp ڢh-޼;y±[ݨfĉ>M+)2 U-BvT4,|SxKRS=c%y0&498R%znʗs}HCр=)8gwBoMN,qMK$]$w/_!El|>ڊzo Q ~ ':O'w*YR]'R+QPKҙBSŴGlib/unicore/lib/Sc/Tibt.pluOAO0=_. 3!"`#.!0mڵT_^Ggȶ98͑?M!k4F2tw&CNzP\U1*Qe_8ׄcP*J&[VY0 ,e-͙ˆP#|(Qm}Op_4˓}`78lOAOHP;ۑxsdk̳Tw2F6NOz2%_N,Αܹ*=~kyUICʣR$Y.lib/unicore/lib/Sc/Yi.plu1O0g+^ա  D "RVm$\ {}wc~d|S McCN~q1t8KUcnNu֔M<נKKû!&IhkSiO[Z;vL[{:{8[;~)L/0}a?Q~'Jukܙ S˞::2un +/vv}ɺޙ.#1#~MOS d\C3='4cyq( a@n;XMk X9\ޫ'!R&rBΖ ։sмLe5OH&ҍ f -A:0 AT"r@,ʬH ZV(5bAJP)L74_$QW,26\ %LaեPKҙB38xlib/unicore/lib/Sc/Zyyy.pluKo6ү`E6m"%4I$Q$N.6mO;}Ϲ㢫.G)F|M [D^l~S(ܶZuQ?WOm\("i@#i"MBb1f$M3Y r b[™r$7'&`sMtc _01[3yGL_fR@L|G Ha:#I3 4̠BGMCgR5d0EWd= X\]hP߃{ mI67*%뮁Q$o@ށB4 M);ɓpJ{Tʀ"헒 H=)*MOj#Z=s!3L$-qmKqԁqq$;ᙌ $+yZ;;ϵܐ y41+uĚnαSo|y<: 3k:-y5{N]:q/n #넱{xߡB|VxQxI'YxI8\#Y kɩ-FAbr KcûQ51 =Ψ x=#9^2Ysf~_Gν8kq5HU2XoY1o53)h;a9'͎ov9½$α2sd'uܙfoŷG5PKҙB x lib/unicore/lib/Sc/Zzzz.pluWKo$ >6|%^/DXh [ԻR$}9EoX,w,K}_Fwo|~@~8~?=-_~/|<Ǘo\^,ק}Owx³/W/K9[N;M<~ٗ=, ww׻~e~|{|em:~yYqy|9}Y^/=r.s?c9jO_+~~so_?m.[@_X}>r^~qqu1@2J(Á +[(zPXQJ*m @(dqqzP@qR"7Wd2Q!B:o3%P$qdբI(RU(@iA(Ank錢1 ˔ _*c{];2ث^5W]tݐh+2aDD=/* F[Y5BjV[9UHjY!/xD|efVT&2)QYI,l4F[\3M<4M@cC7$M37 /<=l6zE4 Mr 4{Y^65ưZ:-o閷5ȮAvt5a E=չtOgꌧ3 zFUצ >wިѨhzW]R\ipeԌ>R *njD:2zFYmʂ28J&gG-6}Ѣ2YVc蔱M,̀5#ܜjzVIl:|7(@Yq@ LrOyRA Q  i6%IA W ߀" P&†Mi(R[&(ECZ&߀r 2i$" D D\:F2$.N@ @&Mcwz6 KLqP(p:s\pqkp᠙{ȋKi*q%Ba S T7XoTb3b] 7MshӆװFxA@;ߘmf((c9Mz0=K(kʆH-z7ASHa@ jL&Į@2P@%}@ײzM<9fnPA6<6d놥^[Yڼ2~ h h@- O ߫鯦.lڑ bܺ1 @ c3윑 :gAGVҿuN;dZ(n" p0JpD8 P0n%b(%q }%z!¹,<%n@:PN\6! “WrcLuq/"T16~e (JrDh e8ZnU  ASXI=!BA beQ DbO@QY+6 ku( &Lvh D #Depyн28,9QݨLX0qOauv:e]d+a)yqE.A m]Sّ@E 1}4c#v\fr+X^R1ʚNN zΊlzr߭.sޗ뼧[L82kZ(Xf|| lF̚yɀyv\?nިEG?_Cln2KpvW\X^<*^0oU+LD{S#F_uٸΐud6f0Qƈu1ǡ't M;j9沈'=ȋpХn1sFa:Sy@Ey0 wI`'x'7]ɛ&{nڈFTݞoLep0!~z \9 μyF+qU.rܔ cF,,RnYoYS&iA *k: s2ere6u]ٔeMs6(ƻL=286^G'ƫV;4 oG ݙ 9G{Vr6㳗&~ ;IY> l ͙ˆ0#*`uSac}~uPƓ3Rc(i8{vr5a~_d. Dojd:8qəI -`gc螭 kO +z,pgg^/ʺX|1}YݘqbO3}!#֟ 0Od_)~z\阗L߇q]q>$ }wGo;>~5/S?圹mnm^F̏Ky?+Ӂ< Np^?ӣe9WZ?-|Yia_WJaA> K)^nn⦻z->T@E2uBa LT"ԝ j9'T圄xP(@*YՁ[vUUEkNS J0sBΠPU`cPBsmR8T@FB* i6HHEQ@j)-!fB7%{c{8кn:؆ SP*-E'!IL@Be꤯0oq o5S*@ JB\hSD,(x}pujqYH)IX4ʼnPR0L<{, ajRn9cTxhD9$N]e%7ssZÓi4? kdn;P]>EYO$~'PKҙB>[lib/unicore/lib/Term/Y.pluOo0 ҧ`C/[+^d[iѦvtȃl˷ߣa%{4IɹˇZ=65?/- yM}w׮?}7N~G30OÁ<:Zڣ@_x@٭—Ȅ3mmx-j{#uach{:==6B2kQh'jÎOЎC{Nww|+x|ۉ@8ŴNa!LDnD=K)G?@7v|JEZbvH8s<.r(gcL͏f@$lRbR"F-(Y" T6xbSjr:Z%F@*L H!u5bAF!A ]H@RLPT&1h[a6dI]h[Lki@IJJbD$ & L.\"F]Q#[F|}s)1iTeMDL S.S.alH@v i⍚HK}W1xŧ|Tֆ̵:Jr%XcPKљBA3n+lib/unicore/lib/UIdeo/N.pluON0<_1^ZHPK * qtcWv,UOH~yyS @EmP͏#dC!O zNQuuO ԣ=|sǷZC|ûa 'li͛S|ծFojԷmg8Eݫ{ ЏrSɨ:xh=1T:bNrMt'r/#^'GFCv'Tuq_e[[<>U}ףּ2Hv0wGNكG6S3%rȁJFOǞ _s${7~.[Nz9K ) | Z$1(ɖR$*j iW\hPKҙBO$Dblib/unicore/lib/Upper/N.pluKo$F_QI. OxưeYQRj%{Le3%jη7M>NMw?e?tctt|>IxZy=u}LNLJeyr~O<2Aߦ|w{ot8}^uuzZ/tN7;~{_u:_^Nue~Z/ӟe:b^8ZO2>^IFZs|Oy׷ׇt=ݐt~N~'Cu[:=/_&vv9M?߶wfw{Q*CT77T V{KHXc 3 7p3 7p8g 3pY8oH2зCp@HE9sL3g:2=p\ p.E"\do. OrsssJM¶Eꗢdf $g霵sfLRXHa!*MTWTi&UUS7Fk,1hc {ni䩳Ϊ;䩓N~;+rF.r m- 0` - 0` - 0` - 0` - 0` - 0` -BEUBmoc9;AkhJUlRl*v6]**ڦpcX-j9V˱ZZ=L;tTmWyJ!YY/-taK-taKG>taK"\piӢf . C° .p guxe pW \+p!!*AJjs5jώ 8 8 8 8 8 7v;p{q{q{q{q{qzm۱fډ%X'DB(F[fnfn3p8g pY8 g,sp98py8< p.\p.E"\Kp .%\[8P } A;UUdP5ꍑ[\*ʪ!j٩ *m5VfZÃ𠖰5+l(Dɞa5j]2߉T1گn>"UL[HTU2yM4mƐ  n[n[2\p.e \+pW*\pU W\kp 5:\T#&;v9lZ  NnQ-g'e5y}5_6_=i螂kH?O1C=kכ((LjX5Cv PKҙBlmlib/unicore/lib/Upper/Y.pluMo$E_QI.~,Ö dْjFHAd}QG@;,[]Ooy|7n_.=vOwOyD_Oitmz>v:>/ۏ/7!.MMFz<Ƚz<^MOMxܦM>>?O|~~쏷wii>}?^e:tx^7].}D*<.lDmeR*Pc<>DbOVJ.=,S^$#$d .PPKҙB˲&4lib/unicore/lib/VS/Y.pluAO0 ˯x]\JS7mǴ@4qa8 ? @A)Ӭ@Zhlu9[S5DLDQl9V>м}t$/oa$N O:7D635@Ρ$8ű?,/._ջ5{M~,G lnK-S0-<R}k" נwblZ8ѧ"q%4~a򅪈/_죭h&Vi J@Z&# Z$IX),$%SPKҙB\Clib/unicore/lib/WB/EX.plu1O0WCh&ХR)J6Ebtkcpl8@=(b–ݻwg,ŶDg%4_bU=NJd*Cg2䤧ZU:Zv^V%JCHɞnDW~6悺L㈆В#|(QTvVɾ%Cm?}xrFj =#܎ƛg';X/ SraQmdG`'T'Są9z^մ`ؚPrBG~p<)t2 L' 88&a8#(9RFPKҙBْbw7lib/unicore/lib/WB/FO.pluOAn0< _rREs!5`A葒[,(ehv9;:>4PծAe+'%8ڑu2`]Q0zgY|{4H|# q lCq-;;QZ _vF? bF=q'CG`]̈e;{0G`&x79L:O&¸ۥig&;o;Grw~."+蚭*V5my^,pRu,,,2ceV ]QTf.B2+KZV:]Z"69UBI)sָeƸт?PKҙB;CaZlib/unicore/lib/WB/KA.pluAO0 ˯x]`teFL :$i뭁4Ai ')b;g,&GrG:B!u6UŁ,yBqegu<]6Aw BMXRS-|lV@}P'|hcPkPUrm1&[?{< 2Zm ޼;xYsd39ǹQVw,W[X>uȖs⷏bmWPi "Ԯ .,8; .t@=sc!ybfFQ<q4e1-#&dw=IO$&=MLEGLյr6H9O6@PKҙBlib/unicore/lib/WB/LE.pluKo$Fݿ /fbQ7|3-Ȳ%Ռ:ZA'| H%w0 ݰwݟ:V8~?=߆mPrzx:_?~.toǯuח iǓNol׷e?t6<<._6\udG]_StĶfm癱œs H6}Kd&tl; yꬻW?}|:/zm>_sI~rac,< i;L}&ykzlib/unicore/lib/WB/MB.pluON0 =_vT@24u8)aCH<~~~ax:5ufle?3Fu+M`le(C2䤧Zި:o^!B&V%dGx&)kp; sDHs0&4Jkm;?Xv)_O+|uPƓ3R(64ޝ=8}d3Jij l#[+їȑ|>y:~8 C_ (R$ŝ7PKҙB0@lib/unicore/lib/WB/ML.pluON@=ӯx&rMH!PLRԮ_ed&ޮX'sԎ MM>!nъ FIp}f;֢"}ڑι8pwuRσ46Nc;AXrxxIԽvj1I1yygd1e܆!c .R"<*PKҙBTG3lib/unicore/lib/WB/NL.pluAO0 ˯xVM `ETi8R) CH$'_?0YVkd*ɑ?&;<$i,BצX.kty$&U(NvlJiڼ]X55aW*JKMt'qI$X eH}P'|kQkPv6[]u>}py]K=v!oI`rɋ+;j AӴA }0]Be@pdP.]0%Mjx)L@e襱RSI! Y)(M/GJ ƪ Pi! R)xJ\\\\BBBBRR<3t)T;Pu> BPZiJKz ROAj-$g1 " Bf2jJZ%,Of(PdV GD\:VUPKҙB[ lib/unicore/lib/WB/XX.pluM; |I&B|)~!a8mi'Y$y9E)Vjwϲ,raw-|z[>^ty?uZ>~[^Nz>=^z/iGOOG?,/o~\wYmy|>?i_˾|ܗ׷wti_?^_Ǘisr엗ϗ y_x~ZgtG˾ߧ~~ďOh8Gǿz Q\_^t]Ncpٯ_/?VÿL @6 Q U¾ _@ªMR ;ڤuak ^8BSSiAxP#5xAt^\4~]$4]*ڔ'VylIy>|" (Ж:%2 STbJ#2IfX;B$ !a!LCۦBϪF@#_\\I: R̈ "INC99LylA14m* ـv^O"H$$hkDhJgȊ˪Zhb0/Vg.N9+$MllIBB:sOwY "D I:Yɺ~d&AfLf@KCLB1 la e]fem4   .32.3h -2^faaY5—_f/D$$l!sȌ|He4cE8{sH‡RH3P¤&pi.¤&2)u&:\5::Qg*PCݴ(m63գUˣrW1+3P9C3:Fq|ÕTZH3`jHi%EWTd КCi36ifRl1(h,-O̦k:X:ZGGK9,ѭN,Y#73ϽЉ: `qUҙYƊ0 ZmtW R;2=i@YQGɏ<rp jV+Mf F!R_ڐ[NMy!Hh6 V_ |FFi{4$ Z^з-Ӷu9k2NY46D68"A9;Rf&3< :H p ԑ0 E]&< H~1S4Sю`b#J$vd?x1 $l&*  ǝIf3 Kr 5{DDF "IH5{' %[HAL{^2 N zad4,V>[~!H\~縩aWN6^.  cѶQfrw@tZFF纇Tb(^ M5`XڣN{m4Б/l4O$:[trjVf ! @֓i\muc'y AzDAY"L )sJڴE‘)Ѕ1PHęaiS婺*TĄ]6m[#!ù[-Vd\fp Xc^ql%ve jCUtjMV2_m҃v\m  AY p;fձYʜAOxqa ­Y!8BpVIh " l\ (߁pa!I4 Ѯ k@<8L'GI CD9 %47TIe,,)Q H $b/,$›( ((gڴCa"R)H?3 /Hdh3Hѵ ŦBC/jtlQ;`Ug H[b`CNUG5;T p@>Fq:+K$hCu3WPn{~c`BR"Ny s(XR?]A@mU'O.TpB{o5ښ0 İر]V-SrְTCWo(b<P@y@&X waT=:=WW=5ybA͋>6w^JFe{2tf$eSdתg蕉qֻ:PZ2dR wPKљBhf ~lib/unicore/lib/XIDC/N.pluXM=6|%fD|)~!a8mi'Y$yjj}?}g4wß6w;7mtz'/y_imz9}zˎ/y~ӎ;_Niqƿix>=}eO/oXn_ߟ^/|/mt2r2_ȡxi~r>V}zG9緯?^- Dq}~zί#j:=.Їpٯ_/?f23P(@mX@2l:T*:ĕZԡlHjD K@5U!>b]%P)^eCXb w< !DFB&*Cyc1jUx: h;hsmhúրʉ[k4dpYAd#Z h@2G  DY;$%Gu<#_d~9;:3hr:E%bsr݈2ar%"5\ts0dFReV2 `_싃}YԾxg}4"cYឬQ&"CJ0/Y"8wۆ^1yz/,2Qƒ7fp@""^M8Vl#"0Gz0ܼQ@h5AwEO+dDA@^J$*&ͥR10=<j $`y)~;b;/P@uހblQ϶y1Rt(X؈P"@Q!Dw҉ K2ZLx@P@J:.;ē yvF "(W=saT#$"a.7Dp' ' !TeIu,%Qέ8 DLd}?,ꀂ d!(!ʜQQ^^_p( 6D ҁӡ%P @ n]([^MB>XBӳp_x[6"ܲu4ѕZ_~UUW_-(w$-3- ADT*0︠-wh=8@hyB=׆R6>J d.IqQĠwַIU4E}(S'V~48k(l(;*GIsNu!n:6&̃W}Usz ŕ> qRT'Ubt؃xAq>DhQIbxU'7]ɫ9nanNp67xa|3o9mچ^4כ x[ݡ֍ۍ[Zu,Q3C*=P5IYEK=~ܷPKљBn lib/unicore/lib/XIDC/Y.pluK\Fӿ^xؗEBaImkQO0JT;*xT%YbۿiӛNz;󫟧u^_ϓO?>\|9?_w_LJw}<z>wg}i~ܫ/症t|;oezۙ%>yz|z~u7oOoc}}<=\̶܏O=._kt0yh:F_?'t|ys=|~t} Yq:]jtxN5^ Neo͟NwYn}ݩ9PDf(榬LQK RI5k7;:KFx@*P%t jM] ӄF$ݖV(Bv7h_eƾk[bǮA{ًWu6hܽi{N : tȍǡ m$1 _12E4EܚȊK#>N(-gڠ.Z'4DQx0 KUHye9,vus.¢0mPUQ/$^ EZbg!l.l^2H,hE څ-Vt%(C ٶ(lSlFl>H.Q!9a_9s X+cM9s Xa[/ _?FXe>W XRJ+e/xW ^)xW ^)st<'PpB ejevױSpE!vJtgx+ܹBLoޡ ћ(JA,~,A 2zqV)W T*rsVTSOU\ANNAWbxBetJ{ C :.TêxXBBACtdQ քֱ¦#1D p$t;`S*p 9FHHf ڠ}aldx0.m\ zK,IME!ΠHs.1@ǢI/qHLC*rqy)Z!]א͗#:F!3K6z% M3YP19&ZĒ"Yu*wRW-eQ,+Y> #XHoe {KQ:EzUHlcS gd)eH.pJDeZU%Z,JF9 &+~,(Bh{j"Ոjz^D>J |U=IIWX*lwJ&Gwk4U-:1( F_5K{4LԬ&ޚ|kʭife1C*TAIpqP(T %BҠD Ҳk:e- wnLJ+ܜ9{a2+ 1^Y֫̚1E_CW9BWzF&VCr-zh\b7vJOUZCN29[ۘvsp^o?r3O\8^595',cJ:{n­T@8^ 0,>fY*V+gu醪؂*Z8ddvn0{,prN>&X7RgіMbm۝CUx6^MZp>|,ʼnd-i#>$n%93fD<3휩dq0~WjkgxǮX+)Yi@KTI"Uyc}jpT蒬}+>us.-~%I=F֒D18eXĒߴPKљBz<lib/unicore/lib/XIDS/N.plun\ל8$wě"@ <'pDo H@7uoUeYڇۻ~[ƻ[mtz/y_imy9}zˎ/y_~痧v|e^Kqexs}y/q_^^߮a_ܟ^/|/mg r_!O wl}>~x}zG爘߾~x] aׯz==?U{=p(NtA{ |8.ÊwV/@$ !*D[Qxw5TmuFjhuԴQw dCR%ITҞV6U#P!\B8~oI@OZ1wҰwk0` J01#-*Lj~X#/ahip$p BƊ!aA_,E2%I IA<(-m%a ȣG7GD.'#5f3 $Y3(O RbsöֵyX\<@bY Ȧ5STH}uc #I 3f1K0`a͗x"WFB|Wf|eWf|.s2yqqHJf/^V[HetE-ES<)Yؙ)C*#vsV[le':TV.d\:Wr\GmC?q+oQc8mf8"hN6@8䍧1qZ趶Rb&VѢϝwކ)S)y)OCgܜFtYrS2:_y%:W3z$5>އyخFy 1xu+wfVϤBHI  (Җ5і(KJPA"{̀B HD@(“I**6{'|I- Db82xBK2jdOENl/"o"1ı@D@BE ‘ب$R'N( '  *zHJ$,_1pkgtQm ! {0{ C) x|56P嶩*LIN*Rƨ_H!Ch:>zE@J Sթ41xvH<(cȁ3SD"eF[Sie^Wy mM+Yg^`I7BaQwڼ5MDZ%nNf ȬZYp6*ZPFea!t7=ʦ̷G'ֶ5B@*#K9A1˪ٖ:M:9үhbZh-YTF i9)݋ 0aa%vpMyD=|M7絸4mha-tbSIֶMשλyM=/J6sof_oq2<)#lL=o-G{nc i\&\臒X,qw};PKљBe6lib/unicore/lib/XIDS/Y.pluKoF׼b /Iy񦟈A6l9@4PyD>ߩqUHQ5ͯΟiӛNz;󫟧u^_I;02=>ݧ=i}<_ph90x~yxNYӔ_ﯿpLc^n_]~mM~=z=s~x_x?N_ƹO=_[5m~W-cJǿ^nUs/_>6ݞ~ߐvq6]noT{~s3/nӇg|>?_i2ϛ=<ԔlοE-4DKu /jP׸oPe;_y(@jmPԂkP=]u׼.nޢt[wh}.=1qg7{޵>\f&2m5۸C Gfâak,?CqU5%`?M°YnD'Etb&Zѽ˜fLkgx%P$O5ɕ+4Di%1e)ϩ+-V< HKJ2s2 Qe$RovZ0;ɋEFn]bb֩ITȌp%QvEf]Œ 6ύfʤfe,8]pt N.Z(RPx0d.dq!%`ڡћ,KA:BAbP=s3-TPguUP*[8^qx=LQxţxJT\ZqJ+DE=#[V%֡<|c 6l8pO;ioxjdoç&-+*9ԪY;WK7"]q1P>ZOz PFL+dep6}wRR?}Yu|Hiv ^pyɢZžCj"RxuQEDA ,=H>簵l"!-`nQM +2<:Abv(B]Tg[҅ K*=$hZrkԲk"_vqyEKb.GtgC+ mʁ8 (]hYd~TuQDB% ').yE*H%&&%KU23S`2qrQȕ 4bJ Ţ(خt,Vͨ$[9ƪ[՞DBo3ZѸ NcpiБ'=@ܽjٴ v;3tHTRsUtCݎ`0ꯚaRBz}E(EM[[En7'Dvgφ"_U)q%e!J.ZQ$Q Җ]ĸ!oBoiFbbAWt]EWUt]C5t_V=$hq%VhݡUцNH4h2:!!c=}"VqQ6qn@۴٭$ldU\2-otykhNw"_B3w8{Uמy,"D4#($!'a9yv(@ea7Ur,ЀFHV9<8''m'zh*g3oY=o AifbZBBwû.3v. ɊW7lz$f?ƫ@1IIl͸\vi'RX_r#W\MPKљBИ{lib/unicore/version333PKiC9 lib/utf8.pmeMO0 Vqh&V Q֦[. Y@cve|ΗX'} !l;J#5[rB ot!JH_tu U5~}oF+cayXլ CCI W)?Uxr7 t[;=,U##$:#p1vO:&\%;`ЂxU2\-@zaF4 ,cw^MlXzW+:WY p̶~/$慵y |HGNÝtE9]E>#58e,t`ͤU?' 3Ao渮X<Јsa ̤Z+q^;q #Y8 62Z-1A_3&dW+Qf"D,.Y@wnãAu9~VQ~txmx5@N&~0ekjuv^>}ʟ!5TA1%d7դN=oyh]莒E@5\;0mbߐn%둡_C3ȋN˨sMI$//ZKѾ];ļ!g(lSffI}A! AP2w؋JG5FJR#9s2oXrBLfޯ 9$L)vXJ AC熾@(, #adbU;Hwm:h`QӐJu* +&6F ߃Oꐐ,fbqd4 ʠHb!,0 >||D7űc%H-FYXD4X᮴}'kRTtMЦB`"Cd'ɢR`HIdH޸gl 5:o $mmTWWm2.N8U8r8o: "P!t)7LLmB+זKҾ%odc>LCH$rE˙X?sH sQD83}OPX(0#x6$Obp*< N>&>oQш$&]X0o=l[q5vZ9D9 )nlQnq3v6q6G%O/~<{zc O_O۠gCDąx~)dW넠'戩Pyi8Ov3RPJ1Qs .C J >]z՚ĨH,&;7X{2s{?gRw3rNc`85rݻ0E.Yv41S^ᵛ/H3~z_>&?{-O7m5%H6*Ș"(:O ;w .#H$Hom68G61 עr*7/X6g18nKg:~M(IBHjiw J|OSϯ)'.d(e+#' 9*'7!#+<57To}[1upA%" 2$Ш~mOl*HKgS]c`Bv<4Ol!54%DUW$ߠa`Ǟw1tu5.Lf aTL_I!?|ڙ{N)ҚKH49Gg,kTShBoc +PRLūΒ51D^ҝ-vJ  NqzELŞRWO~]jkε>pأZp=O4ϮF^з}|X ) ST1{1}-)L hg y;X}jo_bkM%z Pː 8F$8=\pY8JVwvwfeZ $>S-g6vgHo-,ܻ6$ۼ ;Q2.5h=sfttR:c)ZnEbE}pZ5ٖL)B }rZYɕ}x>7E[F1VէY w> o٨kwEƋ併Y؝W)φ)ғ,&yHwNaTZд=+Jqx,,ؙ|πޯBdYԁ-(}|(pr 2s~j*0,Ds7Ac;-|t2-, Bҙ֟'x(bg.ī6bErwf3d k#:zO vy(s(-/ Ync;*/*aq4SN-9;L]# 1*w(.dzX5NaX 켾O5Nq7vq#9wTL֙ |x>?0>>Yv-ou.A\"(!m,t~Ք }N/9'%,Co4k+7NJr̘}KlBh~¢|5Z Ǣͮ ZϲYr/o0dR_ aۢW| r^Q#Ut8.5kkA**Wl.罔B5?KZv-8|-zP߳2Q8}f袖3|_|\b NNzkC陮R zdbM#CɐsjY sX,PI͵$8|Qt*sk#| nk>T Ȑ>)Q 3[xǷ" ѷ9Yݮ{ԥw#jh$ڃPjC2^m|3R5Hv_-2pwٛKèmCqU{l@I gDhncm}"xKsPuc\c5E);XIQ!ǏO3'6IU7~Eoە =ƗGy0wm婑kQ60W2>hb#74.nQBp f SKV2.uV^FЉͨp驘Ş=W 홽 E{PKiCU94 lib/vars.pmT0=ob aC*vJJ%LbE(b$neyo޼LrrJYgъ.`oYb~4| uݚRpTA ْ+d+-ya#(+ϤxΥD4M+J)D0rg(v>7Wd4J\2b&?% a#l͉G:w)7'>2a ~nnAa%ziSCh.ֆ*wäOm ./^FQnsQnk'4jkE\d@ڌ`KSc= R͵>Nw  &?eJyAV3bpm>A 2,Q"+HDZWf4K]m;W xc>ZW[lfYPKiC :lib/warnings.pm[mw8~Jh ötr6&3a8xclj6a~^W lZr%=JMâD#X5vi>O-G#u>|k[xB%gq̽.&%wn/Cz050c-`[c꒩>dBJi>%zr>@Ƶ\Ξ;%iVEߩcěY" tӤC2k*ʼnu FHEH,fL,-{F-.L k>XTȶRpPgd |(8E2Op(8kҏ%Ejuؔ1}ĆRg6EC04 =ǒQ n `$;c,g vID]ZDJܞHC!;ǂҤ-aMk<C`8'F?tPp(2B۳w4K"nKئp{Ӂ/o + Ұ _t/Q.j6$3Pڦ6FM$ f?leM"`L) ?0 %&?YX 2!&:҇ 0DZ,*7b7ן y{8:юP[Z=u#cPkO#?t} Ij 'x ,8iȂqhú mB +ݍj%$,*YL[Y۲PUԅm9iNW):&[#P[gEDiK;u SUB̔O#M4by$HR6ZGOR 5Fo,O#N4Tlv#6P VS)V!tҕWD>#!+b(b&8Eok ڱD &ӸdVCAK9bgeDuF  )6x :܌%q=:yDԬ]" Ҕ/q{ \NL,5ބҚx(qR)!p Rk[**UrR 2ƻ1Ex#4cv]E'k/:bjYg:vRʰ"C,jkaP{NITS.郩 &[#%K<[XAЖZpo4*r YAu̓f<'SR z]rx6"JomdSXZN۳vHZ4P:(RyObU!u_5|ql:9!3~%_tgY=(^.yFY\7IONǢx@'ԨI=n?g+}Ϧ1y{}g{c䑖$Ý<5f=#y0=BJS?gHɧSsQldmۣ"`0PM qW|jX+\JM}&'?*%RD)EYG'S>KR|yWrܱP ,0`#Ǟ''N.Φ||6w'࿊ߑ# &8OWB);ƣ D _t// YPbNEdVwOB9csO<1jUٟh[2S@p !hm4nC6|N`cΖhͤ3pbԽXk%O_1i3ry6J&݆c~}(|\tI's3ruzF~"_/>;w~(3R_nn:_π4* vyu j3>Ʀj6`v?k[B-n(v>=ޖ1Ră,#'ڜ=4I-j2 &4tI<H A4'W apJ-J* Qg3Ӡjr,|LL0Q0]e~R"G:$ GB(X94@+#DS]:a\B#WTY) 鋆_󇂗;W S ZWEod(fypw)5Jloll~Hob=) m(Dz)v()Vk=Ld?s޼_J"_ wނl$AL۷Ӄ8@⿄°s oS|j}rJGE?Apәgɞfh07qIIf p_ e%La'mmX"c%|r{{{1kp'oZC' ?:ۢ,Vx6"ʢ"Y"y WJ,6'OE>RBUI\(jrKՕN!kz }18/+\?)D W2Q3'XN7[~/Ɓ4Gc!L1iٸ#j\o _px~t y0$'WA-slX9)D^+B˒'q(g^GL QeGv0,5I鞂_ \]>ep`ynSd088PUvm(o@r'p ְ;slV7!WmQAxL*ԉoT2l#bJu ˍةAo.2Fbm`={w~Wq[KMc@V(Y1mP&%l]#q89y,V2b7: aޱOrPKiC^&lib/warnings/register.pmP=O0+Ni&RS&HU  ĂP4٦BΥmZ$4"YckAX6[7FUՏ'BH><>>X^'|"*V4E Zy<:F,6]:[@.nE#,u! h7woė~'d„K[0$\>Pg{p}e(D-1: 6privdcO1i4Hz=l?6!tr~^PKiCR/Q3 script/imvirtTkO8L~]`T`Ҫ LF*m06^;v;{P@h{=]*َ)oD29op~-,#F7ORgB.#c1Y+%l(v3 #R"[ίBɜ M x3^n[bcWd>UPHQ\IB@Fa'JH"TiIR"\t@Yr$:#N0$ȈMfGe$2W "G B\†Hp BZz y 0x,w[63,4-x& Ԕ!$R &P**Yb`4|r>AN7}b)ِ dX+/1sLpa r9v-t#򼲵TDG,B~,,,sBE`{-J_[m%w ݄6Z\&<4mdFX*aݾTpL/]0PKiCLscript/main.plmo0+N D}J(SrRvIQ QJdzΎ؃^Ԙ'߻tf4eatPa`+ d0l ! 5pE*#d= "x u zr50epT'p sp!nnų7tK^_aB0~.j<]ƌڡ&=<A=\݄W^iLT@?`ْrW\SUFg`8 w" M613R9`< >Bԏ&R>5ײ7zh! ZZ' +ycPl`Q51FFa.2n] Z / lib/Pod/Simple/BlackBox.pmPKhCv&lib/Pod/Simple/LinkSection.pmPKhC \   lib/Pod/Simple/TiedOutFH.pmPKhCqU%lib/Pod/Simple/Transcode.pmPKhC[I!Ea'lib/Pod/Text.pmPKhC H)LFlib/Pod/Usage.pmPKhCT0%Tlib/Scalar/Util.pmPKhCh;Wlib/Scalar/Util/PP.pmPKhCQq[lib/SelectSaver.pmPKhC}7u2* ]lib/Socket.pmPKhCx %klib/Storable.pmPKhCޏ]G xlib/Symbol.pmPKhC^g :|lib/Term/Cap.pmPKhC8lib/Text/ParseWords.pmPKhCAw׊+ }lib/Tie/Hash.pmPKhC ՙlib/UNIVERSAL.pmPKhC' lib/XSLoader.pmPK㙊Bf`dlib/auto/B/B.soPK㙊Bp8lib/auto/Cwd/Cwd.soPK㙊BjB?(88Wlib/auto/Data/Dumper/Dumper.soPK㙊BWj;Rlib/auto/Encode/Encode.soPK㙊BUHˎlib/auto/Fcntl/Fcntl.soPK㙊B&d#Ylib/auto/File/Glob/Glob.soPK㙊BqSIlib/auto/IO/IO.soPK㙊BXZ %hiblib/auto/List/Util/Util.soPK㙊Bp֚@J lib/auto/POSIX/POSIX.soPKhCLܢw  0lib/auto/POSIX/autosplit.ixPKhCqq Kslib/auto/POSIX/load_imports.alPK㙊Bs2 lib/auto/Socket/Socket.soPK㙊B^HKlib/auto/Storable/Storable.soPK㙊B_rLcIMWlib/auto/mro/mro.soPK㙊B/6mvlib/auto/re/re.soPK㙊BVm(@Flib/auto/threads/threads.soPKhC %IQ& w%lib/base.pmPKhCZv ,lib/bytes.pmPKљB .lib/bytes_heavy.plPKhCIJo/lib/constant.pmPKhC6|5 6lib/feature.pmPK֠CR/Q3 >:lib/imvirtPKhC\txS>lib/integer.pmPKhC9i >lib/mro.pmPKhC~9Alib/overload.pmPKhC? ? ,Hlib/re.pmPKhCKK Qlib/strict.pmPKhC{ Slib/threads.pmPKљBʰTj Xlib/unicore/Blocks.txtPKљBcsy0fdlib/unicore/CaseFolding.txtPKљB/OJMlib/unicore/CombiningClass.plPKљB^{;plib/unicore/Decomposition.plPKљBDi lib/unicore/Heavy.plPKљBs'] Qlib/unicore/Name.plPKљBUW HAlib/unicore/NamedSequences.txtPKљB5Ⱦ&?lib/unicore/SpecialCasing.txtPKљB >H8lib/unicore/To/Age.plPKљB lib/unicore/To/Bc.plPKљBklib/unicore/To/Bmg.plPKљB5mAlib/unicore/To/Digit.plPKљBDf1Q /(lib/unicore/To/Dt.plPKљBP  lib/unicore/To/Ea.plPKљBL0-Mklib/unicore/To/Fold.plPKљBWtm>&*lib/unicore/To/GCB.plPKљBz\)p>lib/unicore/To/Gc.plPKљBtv &hlib/unicore/To/Hst.plPKљBL٥D ulib/unicore/To/Jg.plPKљBwaitzlib/unicore/To/Jt.plPKљBb*J'Edlib/unicore/To/Lb.plPKљBgp\0lib/unicore/To/Lower.plPKљB[)Nlib/unicore/To/NFCQC.plPKљBQO& lib/unicore/To/NFDQC.plPKљB>0,lib/unicore/To/NFKCCF.plPKљBMQ ôlib/unicore/To/NFKCQC.plPKљB\Ȁa!̺lib/unicore/To/NFKDQC.plPKљB||6clib/unicore/To/Na1.plPKљB^fJi*0dlib/unicore/To/Nt.plPKљB(Qzm*lib/unicore/To/Nv.plPKљBIt*n_lib/unicore/To/SB.plPKљB}1.lib/unicore/To/Sc.plPKљBO\$>jAlib/unicore/To/Title.plPKљBQSKXlib/unicore/To/Upper.plPKљBILo/"rlib/unicore/To/WB.plPKљB,I0Álib/unicore/To/_slc.plPKљB4Ϻ?%@lib/unicore/To/_stc.plPKљB0Ց?%lib/unicore/To/_suc.plPKҙBC9&lib/unicore/lib/AHex/N.plPKҙB!,2lib/unicore/lib/AHex/Y.plPKҙB78Gr lib/unicore/lib/Age/1_1.plPKҙBsP~lib/unicore/lib/Age/2_0.plPKҙB\>(flib/unicore/lib/Age/2_1.plPKҙBd[7Fƕlib/unicore/lib/Age/3_0.plPKҙB^IDlib/unicore/lib/Age/3_1.plPKҙBnLqlib/unicore/lib/Age/3_2.plPKҙBa%lib/unicore/lib/Age/4_0.plPKҙBFˠlib/unicore/lib/Age/4_1.plPKҙB-C ƣlib/unicore/lib/Age/5_0.plPKҙBōlib/unicore/lib/Age/5_1.plPKҙBlib/unicore/lib/Age/5_2.plPKҙBA!lib/unicore/lib/Age/6_0.plPKҙB h |wlib/unicore/lib/Age/Unassign.plPKҙB;  Slib/unicore/lib/Alpha/N.plPKҙB dlib/unicore/lib/Alpha/Y.plPKљB^KXlib/unicore/lib/Bc/AL.plPKљB)qc<`lib/unicore/lib/Bc/AN.plPKљBXҝ6lib/unicore/lib/Bc/B.plPKљB_ =lib/unicore/lib/Bc/BN.plPKљBO'lib/unicore/lib/Bc/CS.plPKљBf5eflib/unicore/lib/Bc/EN.plPKљBJKHlib/unicore/lib/Bc/ES.plPKљBdlib/unicore/lib/Bc/ET.plPKљBNDlib/unicore/lib/Bc/L.plPKљB/y#lib/unicore/lib/Bc/LRE.plPKљB1#blib/unicore/lib/Bc/LRO.plPKљByelib/unicore/lib/Bc/NSM.plPKљB ' lib/unicore/lib/Blk/UnifiedC.plPKљBWJ'T lib/unicore/lib/Blk/Vai.plPKљBZ& lib/unicore/lib/Blk/Variati2.plPKљB4%`$ lib/unicore/lib/Blk/Variatio.plPKљBm;&w lib/unicore/lib/Blk/VedicExt.plPKљB]$ lib/unicore/lib/Blk/Vertical.plPKљB8&'; lib/unicore/lib/Blk/YiRadica.plPKљB%$"lib/unicore/lib/Jg/TehMarb2.plPKҙB@D*J"lib/unicore/lib/Jg/TehMarbu.plPKҙB˽%"lib/unicore/lib/Jg/Teth.plPKҙBIh!i@ "lib/unicore/lib/Jg/Waw.plPKҙB:'G="lib/unicore/lib/Jg/Yeh.plPKҙBD8%"lib/unicore/lib/Jg/YehBarre.plPKҙB e#Y"lib/unicore/lib/Jg/YehWithT.plPKҙBڋ#"lib/unicore/lib/Jg/Yudh.plPKҙBDX~#"lib/unicore/lib/Jg/YudhHe.plPKҙB$p"lib/unicore/lib/Jg/Zain.plPKҙBe$"lib/unicore/lib/Jg/Zhain.plPKҙBKs,)"lib/unicore/lib/JoinC/N.plPKҙB)W%"lib/unicore/lib/JoinC/Y.plPKҙBz[."lib/unicore/lib/Jt/C.plPKҙBIlM"lib/unicore/lib/Jt/D.plPKҙBcRX-"lib/unicore/lib/Jt/R.plPKҙB!H "lib/unicore/lib/Jt/T.plPKҙB;# "lib/unicore/lib/Jt/U.plPKҙBL5D>"lib/unicore/lib/LOE/N.plPKҙBUXE"lib/unicore/lib/Lb/AI.plPKљB 3> B"lib/unicore/lib/Lb/AL.plPKљB$"lib/unicore/lib/Lb/B2.plPKљB[FH"lib/unicore/lib/Lb/BA.plPKљBFX"lib/unicore/lib/Lb/BB.plPKҙB .R"lib/unicore/lib/Lb/BK.plPKљBZ#""lib/unicore/lib/Lb/CB.plPKљB՗:"lib/unicore/lib/Lb/CL.plPKљBi\RD"lib/unicore/lib/Lb/CM.plPKҙBw>#lib/unicore/lib/NChar/Y.plPKљBk\ D@#lib/unicore/lib/NFCQC/Y.plPKљB,%wD C#lib/unicore/lib/NFDQC/N.plPKљB:< 8H#lib/unicore/lib/NFDQC/Y.plPKҙBa<ײz/~#lib/unicore/lib/Nv/15.plPKҙB?a$c#lib/unicore/lib/Nv/15_2.plPKҙB?4#lib/unicore/lib/Nv/16.plPKҙBv5)#lib/unicore/lib/Nv/17.plPKҙBհ$#lib/unicore/lib/Nv/17_2.plPKҙBgA4#lib/unicore/lib/Nv/18.plPKҙB5H4Z#lib/unicore/lib/Nv/19.plPKҙBGS$Ĉ#lib/unicore/lib/Nv/1_10.plPKҙB%>/ #lib/unicore/lib/Nv/1_16.plPKҙBY9K#lib/unicore/lib/Nv/1_2.plPKҙBU2 #lib/unicore/lib/Nv/1_3.plPKҙB,Hr#lib/unicore/lib/Nv/1_4.plPKҙB^$#lib/unicore/lib/Nv/1_5.plPKҙBJ|)k+L#lib/unicore/lib/Nv/1_6.plPKҙB:v$#lib/unicore/lib/Nv/1_7.plPKҙBy; #lib/unicore/lib/Nv/1_8.plPKҙB^${#lib/unicore/lib/Nv/1_9.plPKҙB:Y֖#lib/unicore/lib/Nv/2.plPKҙBnhf5E#lib/unicore/lib/Nv/20.plPKҙB5*#lib/unicore/lib/Nv/200.plPKҙB%B#lib/unicore/lib/Nv/2000.plPKҙB./B5%#lib/unicore/lib/Nv/20000.plPKҙBget%#lib/unicore/lib/Nv/21.plPKҙB$X#lib/unicore/lib/Nv/22.plPKҙB@6$#lib/unicore/lib/Nv/23.plPKҙB<$ #lib/unicore/lib/Nv/24.plPKҙB/$f#lib/unicore/lib/Nv/25.plPKҙB~~$#lib/unicore/lib/Nv/26.plPKҙB $#lib/unicore/lib/Nv/27.plPKҙBL*k%t#lib/unicore/lib/Nv/28.plPKҙB%ϩ#lib/unicore/lib/Nv/29.plPKҙB7H6*#lib/unicore/lib/Nv/2_3.plPKҙBT$#lib/unicore/lib/Nv/2_5.plPKҙBuH?\#lib/unicore/lib/Nv/3.plPKҙB-Lf#lib/unicore/lib/Nv/30.plPKҙBӃ`,#lib/unicore/lib/Nv/300.plPKҙBד%K#lib/unicore/lib/Nv/3000.plPKҙB7&?%#lib/unicore/lib/Nv/30000.plPKҙB~V$#lib/unicore/lib/Nv/31.plPKҙB~$`#lib/unicore/lib/Nv/32.plPKҙBwՐ$#lib/unicore/lib/Nv/33.plPKҙB w\$#lib/unicore/lib/Nv/34.plPKҙBp$n#lib/unicore/lib/Nv/35.plPKҙB{F%ȼ#lib/unicore/lib/Nv/36.plPKҙBA(n$##lib/unicore/lib/Nv/37.plPKҙBA$}#lib/unicore/lib/Nv/38.plPKҙBHG$#lib/unicore/lib/Nv/39.plPKҙBk/1#lib/unicore/lib/Nv/3_16.plPKҙB>PT$#lib/unicore/lib/Nv/3_2.plPKҙBT<#lib/unicore/lib/Nv/3_4.plPKҙB#$f#lib/unicore/lib/Nv/3_5.plPKҙBI$#lib/unicore/lib/Nv/3_8.plPKҙBjup&%#lib/unicore/lib/Nv/4.plPKҙB hWHw#lib/unicore/lib/Nv/40.plPKҙBє@*#lib/unicore/lib/Nv/400.plPKҙB9}_%V#lib/unicore/lib/Nv/4000.plPKҙB&-%#lib/unicore/lib/Nv/40000.plPKҙBbOb$#lib/unicore/lib/Nv/41.plPKҙBO&$k#lib/unicore/lib/Nv/42.plPKҙBP]%#lib/unicore/lib/Nv/43.plPKҙB]B3% #lib/unicore/lib/Nv/44.plPKҙBL${#lib/unicore/lib/Nv/45.plPKҙBx$#lib/unicore/lib/Nv/46.plPKҙB%/#lib/unicore/lib/Nv/47.plPKҙB$#lib/unicore/lib/Nv/48.plPKҙBٽ$#lib/unicore/lib/Nv/49.plPKҙBA%>#lib/unicore/lib/Nv/4_5.plPKҙBԤ!#lib/unicore/lib/Nv/5.plPKҙBgR_,#lib/unicore/lib/Nv/50.plPKҙBVRB~#lib/unicore/lib/Nv/500.plPKҙB-Ш3#lib/unicore/lib/Nv/5000.plPKҙB"2b#lib/unicore/lib/Nv/50000.plPKҙBP1$#lib/unicore/lib/Nv/5_2.plPKҙB4+(#lib/unicore/lib/Nv/5_6.plPKҙBPl$#lib/unicore/lib/Nv/5_8.plPKҙBV#lib/unicore/lib/Nv/6.plPKҙBh7"#lib/unicore/lib/Nv/60.plPKҙBH)#lib/unicore/lib/Nv/600.plPKҙBDX%#lib/unicore/lib/Nv/6000.plPKҙB%L#lib/unicore/lib/Nv/60000.plPKҙB,#lib/unicore/lib/Nv/7.plPKҙB-17#lib/unicore/lib/Nv/70.plPKҙB\*R#lib/unicore/lib/Nv/700.plPKҙBx&#lib/unicore/lib/Nv/7000.plPKҙBL%#lib/unicore/lib/Nv/70000.plPKҙBY#o#lib/unicore/lib/Nv/7_2.plPKҙBv$#lib/unicore/lib/Nv/7_8.plPKҙB$#lib/unicore/lib/Nv/8.plPKҙBA;x8U#lib/unicore/lib/Nv/80.plPKҙB*$lib/unicore/lib/Nv/800.plPKҙBv&$$lib/unicore/lib/Nv/8000.plPKҙBcB%$lib/unicore/lib/Nv/80000.plPKҙBO$lib/unicore/lib/Nv/9.plPKҙB$/(:$lib/unicore/lib/Nv/90.plPKҙB7ʶ-$lib/unicore/lib/Nv/900.plPKҙBS(gw% $lib/unicore/lib/Nv/9000.plPKҙBi%I $lib/unicore/lib/Nv/90000.plPKҙB'Y^^# $lib/unicore/lib/Nv/9_2.plPKҙBa$lib/unicore/lib/Nv/NaN.plPKҙBs#$$lib/unicore/lib/Nv/_1_2.plPKҙBFn Z%$lib/unicore/lib/OAlpha/N.plPKҙB $lib/unicore/lib/OAlpha/Y.plPKҙB- l!$lib/unicore/lib/ODI/N.plPKҙB6JVZ $lib/unicore/lib/ODI/Y.plPKҙB^ۺ]@$lib/unicore/lib/OGrExt/N.plPKҙB Ld,!$lib/unicore/lib/OGrExt/Y.plPKҙBF"$lib/unicore/lib/OIDC/N.plPKҙB$ç7$$lib/unicore/lib/OIDC/Y.plPKљBG q;%$lib/unicore/lib/OIDS/N.plPKљBz0&$lib/unicore/lib/OIDS/Y.plPKљBh;d($lib/unicore/lib/OLower/N.plPKљB1m *$lib/unicore/lib/OLower/Y.plPKҙBJZV+$lib/unicore/lib/OMath/N.plPKҙB/.$lib/unicore/lib/OMath/Y.plPKљB\c`71$lib/unicore/lib/OUpper/N.plPKљBY5/j3$lib/unicore/lib/OUpper/Y.plPKҙBn14$lib/unicore/lib/PatSyn/N.plPKҙBк6$lib/unicore/lib/PatSyn/Y.plPKҙBVF8$lib/unicore/lib/PatWS/N.plPKҙBMA</:$lib/unicore/lib/PatWS/Y.plPKҙBxX= S;$lib/unicore/lib/Perl/Alnum.plPKҙBd#$F$lib/unicore/lib/Perl/Any.plPKҙBq6eq  xG$lib/unicore/lib/Perl/Assigned.plPKҙB2M}D'R$lib/unicore/lib/Perl/Blank.plPKҙB[W S$lib/unicore/lib/Perl/Graph.plPKҙB0 m^$lib/unicore/lib/Perl/PerlSpac.plPKҙBB8 _$lib/unicore/lib/Perl/PerlWord.plPKҙBBE2 Qa$lib/unicore/lib/Perl/PosixAln.plPKҙB( s- b$lib/unicore/lib/Perl/PosixAlp.plPKҙB(~( ,d$lib/unicore/lib/Perl/PosixBla.plPKҙBM* e$lib/unicore/lib/Perl/PosixCnt.plPKҙBX% f$lib/unicore/lib/Perl/PosixDig.plPKҙB& ]h$lib/unicore/lib/Perl/PosixGra.plPKҙBKD& i$lib/unicore/lib/Perl/PosixLow.plPKҙBD+R& %k$lib/unicore/lib/Perl/PosixPri.plPKҙB%'7 l$lib/unicore/lib/Perl/PosixPun.plPKҙBAg>+ m$lib/unicore/lib/Perl/PosixSpa.plPKҙB[?& go$lib/unicore/lib/Perl/PosixUpp.plPKҙBY+y p$lib/unicore/lib/Perl/Print.plPKҙB&T  {$lib/unicore/lib/Perl/SpacePer.plPKҙB$̙H}$lib/unicore/lib/Perl/Title.plPKҙB؅o3 ~$lib/unicore/lib/Perl/VertSpac.plPKҙBu7\ $lib/unicore/lib/Perl/Word.plPKҙBt]kF $lib/unicore/lib/Perl/XPosixPu.plPKҙBCkD$lib/unicore/lib/Perl/_XBegin.plPKҙBw˃ $lib/unicore/lib/Perl/_XExtend.plPKҙBX7 $lib/unicore/lib/Perl/_XLVLVTV.plPKҙB9Ώ&r1k$lib/unicore/lib/QMark/N.plPKҙBY\$lib/unicore/lib/QMark/Y.plPKҙB䏲8:$lib/unicore/lib/Radical/N.plPKҙBP6$lib/unicore/lib/Radical/Y.plPKҙBFO1$lib/unicore/lib/SB/AT.plPKҙBdל &$lib/unicore/lib/SB/CL.plPKҙBÎ$lib/unicore/lib/SB/EX.plPKҙBRȪ{>$lib/unicore/lib/SB/FO.plPKҙBFT$lib/unicore/lib/SB/LE.plPKҙB{߹c-$lib/unicore/lib/SB/LO.plPKҙByGƵ$lib/unicore/lib/SB/SC.plPKҙBɥ-u$lib/unicore/lib/SB/SE.plPKҙB!)ظ$lib/unicore/lib/SB/ST.plPKҙBqiI$lib/unicore/lib/SB/Sp.plPKҙB4 ($lib/unicore/lib/SB/UP.plPKҙB$lib/unicore/lib/STerm/Y.plPKҙBOmj4$lib/unicore/lib/Sc/Arab.plPKҙBŭ.$lib/unicore/lib/Sc/Armi.plPKҙBAb$lib/unicore/lib/Sc/Armn.plPKҙBt.$lib/unicore/lib/Sc/Avst.plPKҙB*.A$lib/unicore/lib/Sc/Bali.plPKҙB H92$lib/unicore/lib/Sc/Bamu.plPKҙBD-$lib/unicore/lib/Sc/Batk.plPKҙB=f3v$lib/unicore/lib/Sc/Beng.plPKҙB>MeT6$lib/unicore/lib/Sc/Bopo.plPKҙB*sy.$lib/unicore/lib/Sc/Brah.plPKҙB,$lib/unicore/lib/Sc/Bugi.plPKҙB%IE(L$lib/unicore/lib/Sc/Buhd.plPKҙBd0$lib/unicore/lib/Sc/Cans.plPKҙB'$lib/unicore/lib/Sc/Cari.plPKҙBpѹ7s$lib/unicore/lib/Sc/Cham.plPKҙB}'$lib/unicore/lib/Sc/Cher.plPKҙBW36A$lib/unicore/lib/Sc/Copt.plPKҙB>$lib/unicore/lib/Sc/Cprt.plPKҙB,nQ%$lib/unicore/lib/Sc/Cyrl.plPKҙB{G$lib/unicore/lib/Sc/Deva.plPKҙBCh)-$lib/unicore/lib/Sc/Egyp.plPKҙB߻$lib/unicore/lib/Sc/Ethi.plPKҙBh:$lib/unicore/lib/Sc/Geor.plPKҙB{,$lib/unicore/lib/Sc/Glag.plPKҙBķ(W$lib/unicore/lib/Sc/Goth.plPKҙB=E$lib/unicore/lib/Sc/Grek.plPKҙB:#j3$lib/unicore/lib/Sc/Gujr.plPKҙBh sDT$lib/unicore/lib/Sc/Guru.plPKҙB&O%lib/unicore/lib/Sc/Han.plPKҙB%,#%lib/unicore/lib/Sc/Mtei.plPKҙBQG^/5%%lib/unicore/lib/Sc/Mymr.plPKҙBp&&%lib/unicore/lib/Sc/Nko.plPKҙB x''%lib/unicore/lib/Sc/Ogam.plPKҙBon(X)%lib/unicore/lib/Sc/Orkh.plPKҙB̄j9*%lib/unicore/lib/Sc/Orya.plPKҙB[ׁ.Z,%lib/unicore/lib/Sc/Osma.plPKҙBoۭ'-%lib/unicore/lib/Sc/Phag.plPKҙBO./%lib/unicore/lib/Sc/Phli.plPKҙB:^-0%lib/unicore/lib/Sc/Phnx.plPKҙBlp.1%lib/unicore/lib/Sc/Prti.plPKҙB$&-P3%lib/unicore/lib/Sc/Rjng.plPKҙB ,4%lib/unicore/lib/Sc/Runr.plPKҙBrmB-6%lib/unicore/lib/Sc/Samr.plPKҙB .~7%lib/unicore/lib/Sc/Saur.plPKҙBʆY8%lib/unicore/lib/Sc/Sinh.plPKҙB>-u:%lib/unicore/lib/Sc/Sund.plPKҙB ';%lib/unicore/lib/Sc/Sylo.plPKҙBtH!09=%lib/unicore/lib/Sc/Syrc.plPKҙB2@޷1>%lib/unicore/lib/Sc/Tagb.plPKҙBu. @%lib/unicore/lib/Sc/Tale.plPKҙBo 7pA%lib/unicore/lib/Sc/Talu.plPKҙB kDB%lib/unicore/lib/Sc/Taml.plPKҙB d^-D%lib/unicore/lib/Sc/Tavt.plPKҙB-fei9E%lib/unicore/lib/Sc/Telu.plPKҙBF~3G%lib/unicore/lib/Sc/Tfng.plPKҙBtQ>f+H%lib/unicore/lib/Sc/Tglg.plPKҙB?|0'VJ%lib/unicore/lib/Sc/Thaa.plPKҙBSG-K%lib/unicore/lib/Sc/Thai.plPKҙBSŴGM%lib/unicore/lib/Sc/Tibt.plPKҙB.N%lib/unicore/lib/Sc/Ugar.plPKҙB'O%lib/unicore/lib/Sc/Vai.plPKҙBc/]Q%lib/unicore/lib/Sc/Xpeo.plPKҙBtO7R%lib/unicore/lib/Sc/Xsux.plPKҙBv>.3T%lib/unicore/lib/Sc/Yi.plPKҙB_;U%lib/unicore/lib/Sc/Zinh.plPKҙB38x|W%lib/unicore/lib/Sc/Zyyy.plPKҙB x [%lib/unicore/lib/Sc/Zzzz.plPKҙBO#l'e%lib/unicore/lib/Space/N.plPKҙB?.O@g%lib/unicore/lib/Space/Y.plPKҙB@Xh%lib/unicore/lib/Term/N.plPKҙB>[k%lib/unicore/lib/Term/Y.plPKљBA3n+*n%lib/unicore/lib/UIdeo/N.plPKљB[}k"o%lib/unicore/lib/UIdeo/Y.plPKҙBO$Dbsq%lib/unicore/lib/Upper/N.plPKҙBlm y%lib/unicore/lib/Upper/Y.plPKҙB{7;Y%lib/unicore/lib/VS/N.plPKҙB˲&4Ɂ%lib/unicore/lib/VS/Y.plPKҙB\C2%lib/unicore/lib/WB/EX.plPKҙBْbw7%lib/unicore/lib/WB/FO.plPKҙB;CaZX%lib/unicore/lib/WB/KA.plPKҙB%lib/unicore/lib/WB/LE.plPKҙBp>%lib/unicore/lib/WB/MB.plPKҙB0@T%lib/unicore/lib/WB/ML.plPKҙB~Wʒ%lib/unicore/lib/WB/MN.plPKҙBTG3W%lib/unicore/lib/WB/NL.plPKҙBS,%lib/unicore/lib/WB/NU.plPKҙB[ ח%lib/unicore/lib/WB/XX.plPKљBhf ~ԡ%lib/unicore/lib/XIDC/N.plPKљBn ǫ%lib/unicore/lib/XIDC/Y.plPKљBz<l%lib/unicore/lib/XIDS/N.plPKљBe67%lib/unicore/lib/XIDS/Y.plPKљBИ{U%lib/unicore/versionPKiC9 %lib/utf8.pmPKiCp5^%lib/utf8_heavy.plPKiCU94 %lib/vars.pmPKiC :%lib/warnings.pmPKiC^&%lib/warnings/register.pmPKiCR/Q3 %script/imvirtPKiCL4%script/main.plPK%cc7f2aff8e29e4e9ff09a349417fa8002a3f8996CACHE& PAR.pm imvirt-0.9.6/dist/imvirtp-core000077500000000000000000002303321220574025100163520ustar00rootroot00000000000000#!/usr/bin/perl #line 2 "/usr/bin/par-archive" eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if 0; # not running under some shell eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' if 0; # not running under some shell package __par_pl; # --- This script must not use any modules at compile time --- # use strict; #line 161 my ($par_temp, $progname, @tmpfile); END { if ($ENV{PAR_CLEAN}) { require File::Temp; require File::Basename; require File::Spec; my $topdir = File::Basename::dirname($par_temp); outs(qq{Removing files in "$par_temp"}); File::Find::finddepth(sub { ( -d ) ? rmdir : unlink }, $par_temp); rmdir $par_temp; # Don't remove topdir because this causes a race with other apps # that are trying to start. if (-d $par_temp && $^O ne 'MSWin32') { # Something went wrong unlinking the temporary directory. This # typically happens on platforms that disallow unlinking shared # libraries and executables that are in use. Unlink with a background # shell command so the files are no longer in use by this process. # Don't do anything on Windows because our parent process will # take care of cleaning things up. my $tmp = new File::Temp( TEMPLATE => 'tmpXXXXX', DIR => File::Basename::dirname($topdir), SUFFIX => '.cmd', UNLINK => 0, ); print $tmp "#!/bin/sh x=1; while [ \$x -lt 10 ]; do rm -rf '$par_temp' if [ \! -d '$par_temp' ]; then break fi sleep 1 x=`expr \$x + 1` done rm '" . $tmp->filename . "' "; chmod 0700,$tmp->filename; my $cmd = $tmp->filename . ' >/dev/null 2>&1 &'; close $tmp; system($cmd); outs(qq(Spawned background process to perform cleanup: ) . $tmp->filename); } } } BEGIN { Internals::PAR::BOOT() if defined &Internals::PAR::BOOT; eval { _par_init_env(); if (exists $ENV{PAR_ARGV_0} and $ENV{PAR_ARGV_0} ) { @ARGV = map $ENV{"PAR_ARGV_$_"}, (1 .. $ENV{PAR_ARGC} - 1); $0 = $ENV{PAR_ARGV_0}; } else { for (keys %ENV) { delete $ENV{$_} if /^PAR_ARGV_/; } } my $quiet = !$ENV{PAR_DEBUG}; # fix $progname if invoked from PATH my %Config = ( path_sep => ($^O =~ /^MSWin/ ? ';' : ':'), _exe => ($^O =~ /^(?:MSWin|OS2|cygwin)/ ? '.exe' : ''), _delim => ($^O =~ /^MSWin|OS2/ ? '\\' : '/'), ); _set_progname(); _set_par_temp(); # Magic string checking and extracting bundled modules {{{ my ($start_pos, $data_pos); { local $SIG{__WARN__} = sub {}; # Check file type, get start of data section {{{ open _FH, '<', $progname or last; binmode(_FH); my $buf; seek _FH, -8, 2; read _FH, $buf, 8; last unless $buf eq "\nPAR.pm\n"; seek _FH, -12, 2; read _FH, $buf, 4; seek _FH, -12 - unpack("N", $buf), 2; read _FH, $buf, 4; $data_pos = (tell _FH) - 4; # }}} # Extracting each file into memory {{{ my %require_list; while ($buf eq "FILE") { read _FH, $buf, 4; read _FH, $buf, unpack("N", $buf); my $fullname = $buf; outs(qq(Unpacking file "$fullname"...)); my $crc = ( $fullname =~ s|^([a-f\d]{8})/|| ) ? $1 : undef; my ($basename, $ext) = ($buf =~ m|(?:.*/)?(.*)(\..*)|); read _FH, $buf, 4; read _FH, $buf, unpack("N", $buf); if (defined($ext) and $ext !~ /\.(?:pm|pl|ix|al)$/i) { my ($out, $filename) = _tempfile($ext, $crc); if ($out) { binmode($out); print $out $buf; close $out; chmod 0755, $filename; } $PAR::Heavy::FullCache{$fullname} = $filename; $PAR::Heavy::FullCache{$filename} = $fullname; } elsif ( $fullname =~ m|^/?shlib/| and defined $ENV{PAR_TEMP} ) { # should be moved to _tempfile() my $filename = "$ENV{PAR_TEMP}/$basename$ext"; outs("SHLIB: $filename\n"); open my $out, '>', $filename or die $!; binmode($out); print $out $buf; close $out; } else { $require_list{$fullname} = $PAR::Heavy::ModuleCache{$fullname} = { buf => $buf, crc => $crc, name => $fullname, }; } read _FH, $buf, 4; } # }}} local @INC = (sub { my ($self, $module) = @_; return if ref $module or !$module; my $filename = delete $require_list{$module} || do { my $key; foreach (keys %require_list) { next unless /\Q$module\E$/; $key = $_; last; } delete $require_list{$key} if defined($key); } or return; $INC{$module} = "/loader/$filename/$module"; if ($ENV{PAR_CLEAN} and defined(&IO::File::new)) { my $fh = IO::File->new_tmpfile or die $!; binmode($fh); print $fh $filename->{buf}; seek($fh, 0, 0); return $fh; } else { my ($out, $name) = _tempfile('.pm', $filename->{crc}); if ($out) { binmode($out); print $out $filename->{buf}; close $out; } open my $fh, '<', $name or die $!; binmode($fh); return $fh; } die "Bootstrapping failed: cannot find $module!\n"; }, @INC); # Now load all bundled files {{{ # initialize shared object processing require XSLoader; require PAR::Heavy; require Carp::Heavy; require Exporter::Heavy; PAR::Heavy::_init_dynaloader(); # now let's try getting helper modules from within require IO::File; # load rest of the group in while (my $filename = (sort keys %require_list)[0]) { #local $INC{'Cwd.pm'} = __FILE__ if $^O ne 'MSWin32'; unless ($INC{$filename} or $filename =~ /BSDPAN/) { # require modules, do other executable files if ($filename =~ /\.pmc?$/i) { require $filename; } else { # Skip ActiveState's sitecustomize.pl file: do $filename unless $filename =~ /sitecustomize\.pl$/; } } delete $require_list{$filename}; } # }}} last unless $buf eq "PK\003\004"; $start_pos = (tell _FH) - 4; } # }}} # Argument processing {{{ my @par_args; my ($out, $bundle, $logfh, $cache_name); delete $ENV{PAR_APP_REUSE}; # sanitize (REUSE may be a security problem) $quiet = 0 unless $ENV{PAR_DEBUG}; # Don't swallow arguments for compiled executables without --par-options if (!$start_pos or ($ARGV[0] eq '--par-options' && shift)) { my %dist_cmd = qw( p blib_to_par i install_par u uninstall_par s sign_par v verify_par ); # if the app is invoked as "appname --par-options --reuse PROGRAM @PROG_ARGV", # use the app to run the given perl code instead of anything from the # app itself (but still set up the normal app environment and @INC) if (@ARGV and $ARGV[0] eq '--reuse') { shift @ARGV; $ENV{PAR_APP_REUSE} = shift @ARGV; } else { # normal parl behaviour my @add_to_inc; while (@ARGV) { $ARGV[0] =~ /^-([AIMOBLbqpiusTv])(.*)/ or last; if ($1 eq 'I') { push @add_to_inc, $2; } elsif ($1 eq 'M') { eval "use $2"; } elsif ($1 eq 'A') { unshift @par_args, $2; } elsif ($1 eq 'O') { $out = $2; } elsif ($1 eq 'b') { $bundle = 'site'; } elsif ($1 eq 'B') { $bundle = 'all'; } elsif ($1 eq 'q') { $quiet = 1; } elsif ($1 eq 'L') { open $logfh, ">>", $2 or die "XXX: Cannot open log: $!"; } elsif ($1 eq 'T') { $cache_name = $2; } shift(@ARGV); if (my $cmd = $dist_cmd{$1}) { delete $ENV{'PAR_TEMP'}; init_inc(); require PAR::Dist; &{"PAR::Dist::$cmd"}() unless @ARGV; &{"PAR::Dist::$cmd"}($_) for @ARGV; exit; } } unshift @INC, @add_to_inc; } } # XXX -- add --par-debug support! # }}} # Output mode (-O) handling {{{ if ($out) { { #local $INC{'Cwd.pm'} = __FILE__ if $^O ne 'MSWin32'; require IO::File; require Archive::Zip; } my $par = shift(@ARGV); my $zip; if (defined $par) { open my $fh, '<', $par or die "Cannot find '$par': $!"; binmode($fh); bless($fh, 'IO::File'); $zip = Archive::Zip->new; ( $zip->readFromFileHandle($fh, $par) == Archive::Zip::AZ_OK() ) or die "Read '$par' error: $!"; } my %env = do { if ($zip and my $meta = $zip->contents('META.yml')) { $meta =~ s/.*^par:$//ms; $meta =~ s/^\S.*//ms; $meta =~ /^ ([^:]+): (.+)$/mg; } }; # Open input and output files {{{ local $/ = \4; if (defined $par) { open PAR, '<', $par or die "$!: $par"; binmode(PAR); die "$par is not a PAR file" unless eq "PK\003\004"; } CreatePath($out) ; my $fh = IO::File->new( $out, IO::File::O_CREAT() | IO::File::O_WRONLY() | IO::File::O_TRUNC(), 0777, ) or die $!; binmode($fh); $/ = (defined $data_pos) ? \$data_pos : undef; seek _FH, 0, 0; my $loader = scalar <_FH>; if (!$ENV{PAR_VERBATIM} and $loader =~ /^(?:#!|\@rem)/) { require PAR::Filter::PodStrip; PAR::Filter::PodStrip->new->apply(\$loader, $0) } foreach my $key (sort keys %env) { my $val = $env{$key} or next; $val = eval $val if $val =~ /^['"]/; my $magic = "__ENV_PAR_" . uc($key) . "__"; my $set = "PAR_" . uc($key) . "=$val"; $loader =~ s{$magic( +)}{ $magic . $set . (' ' x (length($1) - length($set))) }eg; } $fh->print($loader); $/ = undef; # }}} # Write bundled modules {{{ if ($bundle) { require PAR::Heavy; PAR::Heavy::_init_dynaloader(); init_inc(); require_modules(); my @inc = sort { length($b) <=> length($a) } grep { !/BSDPAN/ } grep { ($bundle ne 'site') or ($_ ne $Config::Config{archlibexp} and $_ ne $Config::Config{privlibexp}); } @INC; # File exists test added to fix RT #41790: # Funny, non-existing entry in _<....auto/Compress/Raw/Zlib/autosplit.ix. # This is a band-aid fix with no deeper grasp of the issue. # Somebody please go through the pain of understanding what's happening, # I failed. -- Steffen my %files; /^_<(.+)$/ and -e $1 and $files{$1}++ for keys %::; $files{$_}++ for values %INC; my $lib_ext = $Config::Config{lib_ext}; my %written; foreach (sort keys %files) { my ($name, $file); foreach my $dir (@inc) { if ($name = $PAR::Heavy::FullCache{$_}) { $file = $_; last; } elsif (/^(\Q$dir\E\/(.*[^Cc]))\Z/i) { ($file, $name) = ($1, $2); last; } elsif (m!^/loader/[^/]+/(.*[^Cc])\Z!) { if (my $ref = $PAR::Heavy::ModuleCache{$1}) { ($file, $name) = ($ref, $1); last; } elsif (-f "$dir/$1") { ($file, $name) = ("$dir/$1", $1); last; } } } next unless defined $name and not $written{$name}++; next if !ref($file) and $file =~ /\.\Q$lib_ext\E$/; outs( join "", qq(Packing "), ref $file ? $file->{name} : $file, qq("...) ); my $content; if (ref($file)) { $content = $file->{buf}; } else { open FILE, '<', $file or die "Can't open $file: $!"; binmode(FILE); $content = ; close FILE; PAR::Filter::PodStrip->new->apply(\$content, $file) if !$ENV{PAR_VERBATIM} and $name =~ /\.(?:pm|ix|al)$/i; PAR::Filter::PatchContent->new->apply(\$content, $file, $name); } outs(qq(Written as "$name")); $fh->print("FILE"); $fh->print(pack('N', length($name) + 9)); $fh->print(sprintf( "%08x/%s", Archive::Zip::computeCRC32($content), $name )); $fh->print(pack('N', length($content))); $fh->print($content); } } # }}} # Now write out the PAR and magic strings {{{ $zip->writeToFileHandle($fh) if $zip; $cache_name = substr $cache_name, 0, 40; if (!$cache_name and my $mtime = (stat($out))[9]) { my $ctx = eval { require Digest::SHA; Digest::SHA->new(1) } || eval { require Digest::SHA1; Digest::SHA1->new } || eval { require Digest::MD5; Digest::MD5->new }; # Workaround for bug in Digest::SHA 5.38 and 5.39 my $sha_version = eval { $Digest::SHA::VERSION } || 0; if ($sha_version eq '5.38' or $sha_version eq '5.39') { $ctx->addfile($out, "b") if ($ctx); } else { if ($ctx and open(my $fh, "<$out")) { binmode($fh); $ctx->addfile($fh); close($fh); } } $cache_name = $ctx ? $ctx->hexdigest : $mtime; } $cache_name .= "\0" x (41 - length $cache_name); $cache_name .= "CACHE"; $fh->print($cache_name); $fh->print(pack('N', $fh->tell - length($loader))); $fh->print("\nPAR.pm\n"); $fh->close; chmod 0755, $out; # }}} exit; } # }}} # Prepare $progname into PAR file cache {{{ { last unless defined $start_pos; _fix_progname(); # Now load the PAR file and put it into PAR::LibCache {{{ require PAR; PAR::Heavy::_init_dynaloader(); { #local $INC{'Cwd.pm'} = __FILE__ if $^O ne 'MSWin32'; require File::Find; require Archive::Zip; } my $zip = Archive::Zip->new; my $fh = IO::File->new; $fh->fdopen(fileno(_FH), 'r') or die "$!: $@"; $zip->readFromFileHandle($fh, $progname) == Archive::Zip::AZ_OK() or die "$!: $@"; push @PAR::LibCache, $zip; $PAR::LibCache{$progname} = $zip; $quiet = !$ENV{PAR_DEBUG}; outs(qq(\$ENV{PAR_TEMP} = "$ENV{PAR_TEMP}")); if (defined $ENV{PAR_TEMP}) { # should be set at this point! foreach my $member ( $zip->members ) { next if $member->isDirectory; my $member_name = $member->fileName; next unless $member_name =~ m{ ^ /?shlib/ (?:$Config::Config{version}/)? (?:$Config::Config{archname}/)? ([^/]+) $ }x; my $extract_name = $1; my $dest_name = File::Spec->catfile($ENV{PAR_TEMP}, $extract_name); if (-f $dest_name && -s _ == $member->uncompressedSize()) { outs(qq(Skipping "$member_name" since it already exists at "$dest_name")); } else { outs(qq(Extracting "$member_name" to "$dest_name")); $member->extractToFileNamed($dest_name); chmod(0555, $dest_name) if $^O eq "hpux"; } } } # }}} } # }}} # If there's no main.pl to run, show usage {{{ unless ($PAR::LibCache{$progname}) { die << "." unless @ARGV; Usage: $0 [ -Alib.par ] [ -Idir ] [ -Mmodule ] [ src.par ] [ program.pl ] $0 [ -B|-b ] [-Ooutfile] src.par . $ENV{PAR_PROGNAME} = $progname = $0 = shift(@ARGV); } # }}} sub CreatePath { my ($name) = @_; require File::Basename; my ($basename, $path, $ext) = File::Basename::fileparse($name, ('\..*')); require File::Path; File::Path::mkpath($path) unless(-e $path); # mkpath dies with error } sub require_modules { #local $INC{'Cwd.pm'} = __FILE__ if $^O ne 'MSWin32'; require lib; require DynaLoader; require integer; require strict; require warnings; require vars; require Carp; require Carp::Heavy; require Errno; require Exporter::Heavy; require Exporter; require Fcntl; require File::Temp; require File::Spec; require XSLoader; require Config; require IO::Handle; require IO::File; require Compress::Zlib; require Archive::Zip; require PAR; require PAR::Heavy; require PAR::Dist; require PAR::Filter::PodStrip; require PAR::Filter::PatchContent; require attributes; eval { require Cwd }; eval { require Win32 }; eval { require Scalar::Util }; eval { require Archive::Unzip::Burst }; eval { require Tie::Hash::NamedCapture }; eval { require PerlIO; require PerlIO::scalar }; } # The C version of this code appears in myldr/mktmpdir.c # This code also lives in PAR::SetupTemp as set_par_temp_env! sub _set_par_temp { if (defined $ENV{PAR_TEMP} and $ENV{PAR_TEMP} =~ /(.+)/) { $par_temp = $1; return; } foreach my $path ( (map $ENV{$_}, qw( PAR_TMPDIR TMPDIR TEMPDIR TEMP TMP )), qw( C:\\TEMP /tmp . ) ) { next unless defined $path and -d $path and -w $path; my $username; my $pwuid; # does not work everywhere: eval {($pwuid) = getpwuid($>) if defined $>;}; if ( defined(&Win32::LoginName) ) { $username = &Win32::LoginName; } elsif (defined $pwuid) { $username = $pwuid; } else { $username = $ENV{USERNAME} || $ENV{USER} || 'SYSTEM'; } $username =~ s/\W/_/g; my $stmpdir = "$path$Config{_delim}par-$username"; mkdir $stmpdir, 0755; if (!$ENV{PAR_CLEAN} and my $mtime = (stat($progname))[9]) { open (my $fh, "<". $progname); seek $fh, -18, 2; sysread $fh, my $buf, 6; if ($buf eq "\0CACHE") { seek $fh, -58, 2; sysread $fh, $buf, 41; $buf =~ s/\0//g; $stmpdir .= "$Config{_delim}cache-" . $buf; } else { my $ctx = eval { require Digest::SHA; Digest::SHA->new(1) } || eval { require Digest::SHA1; Digest::SHA1->new } || eval { require Digest::MD5; Digest::MD5->new }; # Workaround for bug in Digest::SHA 5.38 and 5.39 my $sha_version = eval { $Digest::SHA::VERSION } || 0; if ($sha_version eq '5.38' or $sha_version eq '5.39') { $ctx->addfile($progname, "b") if ($ctx); } else { if ($ctx and open(my $fh, "<$progname")) { binmode($fh); $ctx->addfile($fh); close($fh); } } $stmpdir .= "$Config{_delim}cache-" . ( $ctx ? $ctx->hexdigest : $mtime ); } close($fh); } else { $ENV{PAR_CLEAN} = 1; $stmpdir .= "$Config{_delim}temp-$$"; } $ENV{PAR_TEMP} = $stmpdir; mkdir $stmpdir, 0755; last; } $par_temp = $1 if $ENV{PAR_TEMP} and $ENV{PAR_TEMP} =~ /(.+)/; } sub _tempfile { my ($ext, $crc) = @_; my ($fh, $filename); $filename = "$par_temp/$crc$ext"; if ($ENV{PAR_CLEAN}) { unlink $filename if -e $filename; push @tmpfile, $filename; } else { return (undef, $filename) if (-r $filename); } open $fh, '>', $filename or die $!; binmode($fh); return($fh, $filename); } # same code lives in PAR::SetupProgname::set_progname sub _set_progname { if (defined $ENV{PAR_PROGNAME} and $ENV{PAR_PROGNAME} =~ /(.+)/) { $progname = $1; } $progname ||= $0; if ($ENV{PAR_TEMP} and index($progname, $ENV{PAR_TEMP}) >= 0) { $progname = substr($progname, rindex($progname, $Config{_delim}) + 1); } if (!$ENV{PAR_PROGNAME} or index($progname, $Config{_delim}) >= 0) { if (open my $fh, '<', $progname) { return if -s $fh; } if (-s "$progname$Config{_exe}") { $progname .= $Config{_exe}; return; } } foreach my $dir (split /\Q$Config{path_sep}\E/, $ENV{PATH}) { next if exists $ENV{PAR_TEMP} and $dir eq $ENV{PAR_TEMP}; $dir =~ s/\Q$Config{_delim}\E$//; (($progname = "$dir$Config{_delim}$progname$Config{_exe}"), last) if -s "$dir$Config{_delim}$progname$Config{_exe}"; (($progname = "$dir$Config{_delim}$progname"), last) if -s "$dir$Config{_delim}$progname"; } } sub _fix_progname { $0 = $progname ||= $ENV{PAR_PROGNAME}; if (index($progname, $Config{_delim}) < 0) { $progname = ".$Config{_delim}$progname"; } # XXX - hack to make PWD work my $pwd = (defined &Cwd::getcwd) ? Cwd::getcwd() : ((defined &Win32::GetCwd) ? Win32::GetCwd() : `pwd`); chomp($pwd); $progname =~ s/^(?=\.\.?\Q$Config{_delim}\E)/$pwd$Config{_delim}/; $ENV{PAR_PROGNAME} = $progname; } sub _par_init_env { if ( $ENV{PAR_INITIALIZED}++ == 1 ) { return; } else { $ENV{PAR_INITIALIZED} = 2; } for (qw( SPAWNED TEMP CLEAN DEBUG CACHE PROGNAME ARGC ARGV_0 ) ) { delete $ENV{'PAR_'.$_}; } for (qw/ TMPDIR TEMP CLEAN DEBUG /) { $ENV{'PAR_'.$_} = $ENV{'PAR_GLOBAL_'.$_} if exists $ENV{'PAR_GLOBAL_'.$_}; } my $par_clean = "__ENV_PAR_CLEAN__ "; if ($ENV{PAR_TEMP}) { delete $ENV{PAR_CLEAN}; } elsif (!exists $ENV{PAR_GLOBAL_CLEAN}) { my $value = substr($par_clean, 12 + length("CLEAN")); $ENV{PAR_CLEAN} = $1 if $value =~ /^PAR_CLEAN=(\S+)/; } } sub outs { return if $quiet; if ($logfh) { print $logfh "@_\n"; } else { print "@_\n"; } } sub init_inc { require Config; push @INC, grep defined, map $Config::Config{$_}, qw( archlibexp privlibexp sitearchexp sitelibexp vendorarchexp vendorlibexp ); } ######################################################################## # The main package for script execution package main; require PAR; unshift @INC, \&PAR::find_par; PAR->import(@par_args); die qq(par.pl: Can't open perl script "$progname": No such file or directory\n) unless -e $progname; do $progname; CORE::exit($1) if ($@ =~/^_TK_EXIT_\((\d+)\)/); die $@ if $@; }; $::__ERROR = $@ if $@; } CORE::exit($1) if ($::__ERROR =~/^_TK_EXIT_\((\d+)\)/); die $::__ERROR if $::__ERROR; 1; #line 1014 __END__ PKgClib/PKgCscript/PKgC\@6]MANIFEST[o0)M-ScxjHZhAӜ͗`;]+wȅ'b!fXpAD2ଇ1aPI|y1N$Jhգaڠn7j\p8.+2b\p<.(rA3o,p!e+/E 2S^ fG%q*/tYxكP\aZ̏t)٘#zO ?rx[&!g>GMjeTV*}k ;2Z{ȇaroG%DZH=u:g#T,| dz&AܘҸ댻IPښ&l5Kp{*) s+x.TAJV'+|*Z &mPnuĝ~y;hiwtpTx/v2ve.iX涟{YRWW](,ygJl굚w~BnοX;wζ"griCk hW>}b~zp{PKgCIFMETA.yml-0 7N0o@|e4@n[c |Lg~1uc?V, ifEŋ6Rt;B(>cfjowk[XQCsџI/6YGKzJg4音W_PKgC BjGlib/AutoLoader.pmXms9E33nqW7aIK$Wcĥe[H8-ilZ>QKn=zv*28xF WjyZdf*5mH~?:><Uy:/˓N-#x"a1+.,8jr[*}8/$wX㷗윛_܉\C,Z6g};eE9ﳃooZ"Q>PʁίD13,'"[r%"ӧ tT&,!DB& , 9ܰ4!؅p_<{}?Ǜ!(%|8b qyD "K>g']7H+X(>՘+~sA7^9FIMv{]bY`φG6RL,ln60LF0k04%i4) f0 INûAiH`g-%WJ*vΦ搰 K4O;3rXNd L2sɰ=@6.%uAJ$ W6!`|@CDU* ճY3avص%.9dͼ+*x:(di'*0^x҃a=7xd 9QE~1Ձ=_VX~ʋ3%٢z۰)4Pm=TSz.f (+5Wxp<40^<~uGKh;{tqԴG!m뜜Y<}:J/s%4-͍\8~c]WnUDx]3G@*(*Ju*}5>01ʴn!\C6\l|詫Sf e)Am+nk,P[\LA7@G皊,3tvw‚Z+JllM( 2M4hAVmX7Rnw`؂™JIR:riGng;Sl`=J:nOW:-UڎvԞ ]c?G*2R RV}qZii(4$RllW+lpo΀$qaۺh=tp#"IGξ"m[x[\qיu 5ZaY2 0]WR~L"x #xAw {b)1REYѱ}˻X jfXVi 1bc!ǞJOy-^E_=tм~b~^|T/"/n ЮAqkiUK? 9w_P*ys}ytO$jG՟%b֙MY_D߯F]%,ܧߋȒlblۓ)n꽛E y|geX4޳_V-izurz+75":>^NyjzޯN]SKL#h\+ДU+]Óa'l|vẶbGl'ӓ/V5ү4,ͦ*zt0:CU<}1]a)KgK/<%o `O%N L[G _ X-!\ 53z>ʹ?HC̀D's&LJ_r^J)|;nR;.M_5 v67kk Л} swM ب(K6Y9A498&6h54n [jSw- ' #p=lm^4յǯd_<(Qv=޹wgYw`C޲ԟy/3ՠ@ ^"c`1œ(W clH Bl"6$*/UC^5v޸}1VltM'j c6kY-mn-CˉBJځ8C ~A:|QAG#Xu>]ǥ5%]eMA֗ @tCAp!jӀ'P˦bmueio=JLT %j |J- yK >v9bTµ2ePa h]fE$QEr-L2H̓B5[ӐI^G;0{RkAbpgǑ(h2Lԍ ÊhՇewlމrCSL:TVۥ.)gdݺЪI.oz{I'DfN~~\8&|(IV b*$dtv(V< }phUnϋB0< ťJ-VڌN $iD4D[L/q9ǔRO!>YN6DY`":K#XMGv Q XEbY\tTR;vj9!.B'3ܲ;5xxgb5`$PG'7O6b.#FrIYa $+uVRM] *8itP.[k߲$)L^.\cDg0xfy?ۼ XJ!G2Oq瑑0d.j疲mt!dL/&OY>?/ @K[Ftrj0X.9081ُTRrxavo$ы~kR>K=F0@y[ )YE_tgKM\+$9 VVxwg%QO! qV)#SKVW4Ew2̃ϥ=pE?z2@l9 1m@CU5aea^p9"mpyiO~8 Dk$:АI- athUx_%9PƆ+FPQؗCj~N,dt6vM!PB$45hLB̶m?x@IN1,R:u8ǽpQ%[0O+JA5{/v5<` B/)H ~])#E^e(7~C5?<{S?רTgz6@G|la*#o)( MðQ~EC3WTeHu̗*'/9\</̄\,,^lO c\FD1lڂhpH!U~LV k:T~i`24ó 6TB瞋"/Yk;ǪvpayW} PG+\څ0xeDLl'FXɠ= l@؄Un b?IJ>ƛ 4U8h'lk ޭp%#:RSٯ ri:EvPKgC8 lib/File/Which.pmVms7 b9v1'&0IR,]}']N@ۻ^|*@ZˣGTDp8$<{[YH|vfry8GG?R"]wW,4/V"k;ydDF ߖ/ջtm_o\Cp 1y'K¾'FV I4Cg7p+.>Xe_oxNxTT'\O(5JL50 t́4*ha0MR3,rn$Zho \Mkj1H! [p^5tY l2o W!7fc1@q R|LDX.G݋3X|m\C&v8box 22(=OL%W"g;oSbɩ:$R7d! &Xل'?5f`c0$mLiJcF;c,~zQX)7VRQCԯ4E%[XZQaC(X0%.[&K sOYP|ΡSt`i?)j[a'x9&; t.Y4gFWn="LU* |RvC:a ¯ SI!whrO9[1\2B{d^ F,Fa@`Vcx]>K .`M -CoKi tP&r#Xbp!Pmg!j!1( <_lԑ3f[xPW=}Z#$zDmBNmH Om2V>Vo@kL6jɆ(,6EhnHn{xu{Zθ? Zqjr`2GbD"|#K+ E<ˑmL 3a JܕE0ţKp'Flun}~ 踋>bwnolc\z<@VVΫ*UZU.>a \`>aClƣP=h$r0_'ZY)%j.w9ʥEèsպӅi3OP-j.Vϸ?b;x,cuzmepX+ŤSLG{r3}Ӛ܍MKZ;ͺ"P52rvcﲊn_jY5~P5#aR,cHΨ"4ñRJplf"d+Y1C;G*y: p  N.p:ZĜ~.stNEH2|FKT-;bD ͍cq8\,2W ( pYa6C08(=|//1'?kMlHC]x3 hZPh,t#l줋R?{ %bر=gg[Nn |+EynVE,8꧔, P4BH4i ECsNc*>ذE'xv"/^z3}~}[\%T/eed1n$U -lG}W TK tm9bdeN]z lʴ\ɺ%0_آ ctwȣO⒁|1:;PhNݼ+ FAA5R/!Lɋdu%*]1 3`y[-mv –~`({Yz]ƾ9QlкОa1FXRWGD G0Y*EFsz13cXPE?Y%fr_gazYDzaFZEjjkMZ$GZ9fgl(tΫh:WGaR>6R^(5v#-hc"3vS.jYKI&$S8&>iKbr9WD0#%!O]'\h1rxSEuv0eLn[W&[3$3AIA7ojj@|S~ 'qja6B׍!a:yR"CqGFx*t~`zY()_ ߽UZԅ2vXiZS,TU,PڿTC ^* 4iAL+*pLs'Ůp"n ]ힿqKEßK!x8ub T z&Gq&)aٞi}Z Ҡ-/wnKFڍƢ$yވCt>AFPKgC`wlib/ImVirt/Utils/blkdev.pmTQo6~~šiays,;f-[ώI`ahdDzEwl$me/6uy*x0Wq+, :XM~]N݁3;%li0wvR-,7 wWE?x,L Uu>B9.W3g -O *GA-c𷣼!Hx>P+VZ ͎) a/HY 3 pMEUAv XbQFtZ"2* Jbf*䴯`J790@*3c+M=fs_Whr䅬SArDžB1oDqNjrvMŖDM̞ 8xF9U|/L$I`z7"/o9/wɤu]Fz@դOdP-RS[R ~ Z;d醭izx4=)Ncc׽uA\<$6t !)ω|*T=X`p>Ά? L"r?]ѨQ685[Wk~M(44'iNXOᇆSA'khBeDpv1%ۙy7_ؙqKf;^̓pAءnVa7]=QƏ1662d9mp2Nb} 'N5'tQ!ӵ K GKs{J0m@ sz 3֘Շ`؆^:op3?OV}+_`p$~Nv `] zvFC"N,zPtҾ[d\bR">4J>\^Zo.|Y=~v M*7SGaPKgCR_{lib/ImVirt/Utils/cpuinfo.pmUmS8=cgy>\R84OiK9Ŗc e$crV 2ܗX>#e?b W&TkX$[^$4ޫCn#pqChu2r!<&.!ҟ3 >=5}n[ .xSG"qs v pG3*G<^]Pjm6fn /%$$Ԇڃ-# 3[eS@ga`B X|sPA"dye S}"C*!C]Ŭb<ehpO=I paPltxX"cv,1!OSrâV2I,j +w~1^]Õ3:uqh4bq1Ff$j ė1Gҝ_#`6x L/.)Lx6h̨.wYa+}~X_CH)٣#DpCb_I:^/Ztp6!̫yʨSPKmc+]8 ۏÛYFvnk-MKQ)4q{?ٙ8ؙ2_/>]F8X)\Ng|\6`O9趀ݰPmO7TPoXSi7||.ff3WmPE|siSM\M)!KUH^ho)J>]$g޳h>i=/4 [Ov"My eʰvM%)+{ջpF9D.̊qxRWRPEWRg1l3mPKgClib/ImVirt/Utils/dmesg.pmU[s6~^\6f5>6i,dli0–&dͦG i3ms8NXFGN Y(NRnu ZcA ;,T̅yJ$1DS*nxl+$:vBnQ)8~ˣb j JNgݶKC2Ik~&!|-H x yDx@АI%تP. !vEAniFIX%,%VkiHL RD1 2 P!k \(-^ub !6x߁C!̀<ǚb*,I`E4*hxp|pCFK7bi0 0h9k8ly00;Ѕ{?mja G#3+leHmkJԗ 1mP'hPH³u3IDָ=,&lõQlMaMp݄{F'i!E>I8MRCym~` *"`ongopj9ekY~9~{{I!%ׂa9HKו n@r?wia`D,SتN]ϙ09 նΊe.I:BYƷ!{%[/ZPU Z= sX u*>KZjI7PVY,:k9˩;Kmh,|>`d!B> Kj-\K: OI/pl[ Fx`+Q8 ԰߲G!+>ڎDf{ >M8W~-.]taWl{`LjVh jmj*2}-ۿo]蒠$\)q7AI@V:79w0ؓ;joMD!9E#u R;(L(uN)^&Kٖ ^s?L=eDiLk3|&=Rox4^~`;~|^yϣ΁qj&nMB$ۺ ?x QKeUjpJiÉgM>;.j%mУ[/̏V>4 Si_ .p^c}aaꭟoVۄG^lwogBiAOuA~y_m>Ki?l)-'󫆼 PKgC{~f$lib/ImVirt/Utils/dmidecode/kernel.pmmo6_ן<8a/jYItPJRv"=Rv Y l{#ǻy xЅz}3Å{T9vkP V4,akvҤR ̘+NEڎ_b250"FUyw:o wф|hj#l1RcvEw+25 %e@D!Y3}"˜k4c_*d̓bS`R* 7%樘r!x (®cXT 2QLQP.> }+Tp;dKlT1cW ؤ7 ym;1^*h l | zz'k*6 + M) %U8<`N om0` d ;:'V$eQrjOĐR#+AD : 2_Lڊɢ{ Ҵ`8/kۂ0-Kf,K yBR\jcM?nsӅ$j÷ws{^uUUl#wc (RWQ pWM璓ʃ/Tjp;vM;IxsMN۠l7W(  K, B[?%ϽhAD^ϱrlEg ^Hz8Jʞ+oyŘC{SbԈqQ.6x\Կä+J}p_$m;/tД*ߞۯ=T<6ܶCV:"ߠ?(ّ?_?_{tOgE+4h܂Ɖ5JmD8ShC8OHHd;"X>V/e wnu|S毩jQͦg9 K(4wrO?ի&,Jzzտ٪DRn PKgCNHp"lib/ImVirt/Utils/dmidecode/pipe.pmT]s6}dӇ4id l&v/-y%Br d9~4f e?̤nN5U3JX a3e)6Ҥ\:u+ l蘅1Jtez-r0Y$Tp‡|.|݈‚{"IZk8B:֯$i;_ (7lṗZm6m#Wle%o 3+&@ǥD%zJNd9HҒ34ScQk` D1. P3%lP*IX!jb"A#acF_rZ$eeq sL2kVOw xGxMf-n0bI3dAoHʿ' ɨ?.`^noV:/mv#WQ|qp E‚Z0|e3%)fx W4=l \l%Z5Q_ I`$>5J'i[ϭ6LeU*;vM]k[*QtzLpW*\wHSco&kƨTHnL٥?#|:{{s?w# 1fdS?>'0$X t6*CF*S*[+<ϡ#EfE8Vlv~nY o9Y{9˪IרJԙE K<3+lt?J]Uj4*ѿg]orkd?4xJW,K2C GYpԠ7og('[:)oON8|bߊ(.0YF D?xCpo; X_(B3gBc%OEIR$eE&Uֵ lY?OjcaXs8Q2 }$du;#`=!L+a_rZ.I DSZsbgEQ3ZFWQ}Y )#9BDx?A2QR6d# pF׳v!(^yƊGj'D>̈́]J>`y+'U9FzF; ̀#=gN+N=;VK7 ChT&H(@̮F^z7uЛ \wqg0]̦&F uL!U~/ !&[m(";NwРgku1IpG8=,ñQޚC[eAot#.0dE .T :N98]TU+j7TߜFƲ,nC^Or)A " #aEl]x ?U7XO'yaj()-gWIZT?dQNis@M Cs=G^ezjMPBW^:H9.OJVxmcpnI,QaYB<+<yT>|m-S7z\80SkaSDӒ1&>*4 6򾂴?m`]un٥  yZǮ/J#IoUBm$ ,S-#YI!F[9ű1'~q}_)ЄH\ldIڇG$ϜOfUą'$ p=w~yl-"R0q@Ei~ENɑGŒ.>GJefsZ5 CyT~&!|!H JAP=X|Jy(0$ \µ!Bcb" Dz 401+ϴEF4yAC: o 82x/`I3tKu°DL05Dbw`Wh,5ϰ)cS% n8 f:>9s=!F/]҂%Y̐+$Uk,P\CqKwru\=7cp`'h:xGub0KC2ഖߢȒ>eK̎c y0"Z7dBHJ0ſ:m#i!H>9u8RiۭVUY˷;vz, UzHY=Q}' ΉjA ȸP8+kTNd FSq=i7tۻw%x/ϾG,AhCՉ?2!sɢ,MHj'8LjaC܋_ӫ5EGٚ^,{Dx{\7<=[% y(:i;`j\ NQlp/p2v(T Y+@P BCvas,-s$xIbpH'DA3ࡾ\p /Iy$X@dXLK0IƓ. wݡwR"ց bzRSeX#;ސl ڙR0pft 6Llw׶ ;O )*b'ϡ2@Qcf/ `m#;|jWPxOV:RVGoEBHV0jɿ?ԷN7Mj^HS-J$,+dp74?wwZ_kP5>U~U_<xIS=R<}54) d(x QF) I8,=WI/'gJB5 Irbq;{KZB437-)oCrO!e=#3r0jKhta(~L LU:0/JKVVQ_p7iDQ/ } 446+|bpbbE!3][#JlEsC1}fKhqN6\oGρ@Sft?PKgCJrOlib/ImVirt/Utils/procfs.pmmo6_W Ȗb/f!J`RېvAWDY\$R%)ް#7OXy(USuTcR{*5Rd5k Bԫa˖ToiRH5%@Z(a/\m9oJ4Gvr*x3'c ]. J {Q PjL=p8:"oЅ+z$5ಐ>I82AҜ)-ٶsOHEΊ(tIASY+\/7pM9uXvXyc,9l; ɽ $2Fј*>BEC6e ́q /E5*`KUh+2GbI!\0ez7Ov,V7C4V& G,"ƄMb0,I`!u&a׫d6HF-}.쬰9[B}U%SsF}B*wR6$ap]8HFu!ȅ|t#5H0g҅Kq}'?o>lrө= fUpwYEӤje8~n6moN u%! }X{2c iGu<603P`IIx4Z:tfq7MzhpnnU2vnh T 8[g{^}u:/AI/Spc;+Ci"L+Ӈ'*GY:TtHy Neh?FD?>DۚPKgCP֑7lib/ImVirt/Utils/run.pmT]oH}^$ >ٶ8 Mjb{x e y3{L>Ԧ22+*:ʹɌ[{>V"PѹfWT#LU.JEwhZ!齌fo1;=UoȐKbYbV|L4J4QUDM,(U,%bcU2`H%Tb/ -2,M&pɻRcs"C&HU @{%qwIrflCivu` ۱oƐ%OՎkJ<,ÆPTYr0Or:_-͞7[>Sf/%]&+Ӣ0G.R|)x|:0qb2aKz,Vb;@H0 Ί[ڟy%bbO< Dq?A"2Ulm) e8hkcﳵom/N  ?0L0 O2t45m^㪜ss](]_qxf=Bے]W;4Sd3Cм[?MކGhkxGs= 0S +jИB*=!@RȊix~]1'|/Rj:Ox=&Ձn Գx<[7|?P+W ͑)$HF]c&TPɌ'`#H 4MV[x@iv%O6 `ׂlª_TB.i]9Lϛ tH Jf.CwOb4.5y*I.,ah̛ d&SE*y)Mxū&g s"a/& |"LV8:6A 6ڬ F+ ?9w0gO^M v@js@tAGa{甲a4}8*N׽u!M(gzi`s/J)U66C0N&x8 W/op6ss6s<wc!v%fq٨~i8Z*8g0Gr=º/u=sq(X-)z]S8%Q~ޡ¾oԜMKs&unϡR9g;Z$Q>n0n{hzѭa?ϋ<[iyq<PKgCalib/ImVirt/VMD/ARAnyM.pmTmsFl~N1yq4nbl!!Iޝ 4$8'v{v=MxЇWNzǥMumNjBesp)lX/S  tb26?'+_ŝ/Kc 7" QVQX8oo(<@NW7Gu>vw]UbM%Sxx+ȥXK#JDz$a/ XCB#p , BB*BK 21#h?׳%\c%0/V R΍Eª2!cbQ dȆ%lQ*#5b,Q, y "7-bcl,8&JXSL'  QK ws{uw?$oRnqO4e&Y@ 1rG7cu&wOyfWo]an3ZNlKw~,+uJ!juU/ !f[$[b % KD.3%oSLlؚG ݆6Z|mԷ NtCX yDDنBi:z~}˅MY5 h*j,F@3qxV_ 2I#\B*YGWG`AZxSd,o^Ez`Co=ݾbe@[g-ؠ} qUY&8{8 %FTfZ/1HY9+S@.kY*무Z5<74 # EOon{Ҟ'u!!J!FZ)Sz)Al5N34?ӋUnxJDVI<{Y  3DEw=dQQE}|,HnUlnp||uٖV[%?27 ?BY]מ%mßYvb/ 9!Ta+ȤHCJz$`/rY \#p , :BB"-S":B("wKf:~E̼Q>a,`$i. 'g-Ң46%6b_bV O-x$2)"Hr0[ᇻ/=g>wf <`$9ASezOX|8ڝGF`t?f|g|vݴ<4"|sh{ERUU#W8HmĎO(,VJFLoن ݂46Zכֿo otKxHXقkq:݋^{sZ~/sPQ{&)O74Rb~qC< Ň AB3&q^fHj5s87U|T6C_7Κod{ po^^6&8'{8 $:NrR{M{l74,la#.a TY*b*F5j'".>f o5u-2"lNx2saG:!C .K-c:m\i&1㔵yCBz}RZEJȟ%Hsǣ[D{p姚 #pp*/,ᣩ08#F=2|F:croMZ v|rG%ߺHw-kHWߪ54k3[2;ȖX's,™DըWe SzPKgC/Glib/ImVirt/VMD/KVM.pmWmo6C2`Gv}Sܼx/)mdlDyIw$ktEQ`'S^xޏXЂ e_i&4WaI̋_ө ٦%8'OM_.OWC< PZGd:[9ƍ%9*m0haL^H"IH /Z"H>SxI%4SL6Vmf 9*DP(b |f>.'p /A6_<;2!r^)'˞b<2:D!K uX<SX#Wyj{hxh,1CL[E0E$βnl4ϯ&cp.o3:ISbq12MȄ0&'98ǽpio|y28q;p0 WCjXx癉QX$K7^IE)>%yO+^ēAJҚL_xs6: FiM|K:"1/YP ?8u8RiѾ p,~mr%gO&QQ9+9U w;uk$#N=uP }m.i6VCUWp+WJbc֜]6Q,'ӄ"NdnUqcV+ rR`X⻩q#r5?{ĹiFK#Fė9,M j^ϳIS :MQ~.bCZ۫&vRzsy59-ycņ XH0zu6XX,qDZkhp4d0|یn@/Jyǰ~nޒWoj,s E !lDirH=E@MckMBfpW72޴| 1\m&{_3L3iӣn&x艜b9^Bd ;wFLc)f1 St@]7W\Jyi+kO zVƈjn_lKɢMRr AywiF ^C.o4ZShј|Zol;oZ۽l,C>yU2&Pe"k#KRNPKgCO3lib/ImVirt/VMD/LXC.pmT]oF}_qQYi:ln 0F}gc{1,m1HA۪}3{Ob"t<0̇{sk%o'P98ִ̽sq!-ZO< C&~Ol϶"(JE^8 Śwr#247M2?k!ARLB&Jx 2 y6.lyI%2WL&[-DyJDn<;LQx1Le*DF*(". sRiѽ5 I{) bx^ b"B=x>X#QNIRǰD%y;`=cKh2K-d1#iLxRZbt; c8C}< SabO]7Şm`E`skEV<*G*"oTfٚ j/JgJLV=,lQum5_8n f$g!cE nTtd\\v:睷lʪ{|7|E#iY4z*Em}k eJ;RQE`2?pu ?QKڲܴ,j?G0dHwBZ bb1{wE02_5B_MNW4vf d  OL5d{bsJj*){:_PKgC44 lib/ImVirt/VMD/Microsoft.pmVmo6CU2XvvS8;ߊhY-’/~䤩t[/6ɻ{+2b &s&38.RE%"8?)nB.d ӐǾs&~ol }k;< xDȭc;UAz4b gBҖ\]]s(:GDb&!|%p [A' (aR OĜa 3P!EE,/l83PG0 J .D"&]bR.Gd_12 P!q%b 0(4y<ՆUdWwu#p(S"XP$]fQ`6O{)KxpzFm2JX,N#E t額ޟ^O t/Oٹ;l<&T8/M0*E+_D 7PAv>XqgРOVS􃵿aKH`X6[c^'kl2 @-q.jKU.@l5l4a6qѫJqy|6fvy7z4d x"F㋓Yg oނuh.GQmS*5t枏:FiOQ*4֭LaZE&tWDbFh }DJj$+J2~GJ*屠+*MLl?ܳSϫi*\W0;8BA Bjico7XdSM1LT؅NV%H,>BgHďUj"Xvn8$BDu}, TIې̽t /z,#r@#0d4]\R9/Uڕڠwb+SWxYc-4L0 a(ᜭ-c! ֐7M3U֡ #\l[ӍU}ʑoKngIde~(z +oEs$ $'D[3*΋86ʷV~u n0?s-xqk|nᇇH0٪|N3#ti=i{1?5C3fHG)7U2>YXD>a\{%xQA1h4InDj|YL|v^;y+USAΟI°W_.s65e+EEQhޥ|zl=?؝7!62I~̪_TPiϠ* 2*U.Y%GDn+PKgCPflib/ImVirt/VMD/OpenVZ.pmTn6}bYeC7Y"- FTIʆͿw$ٛlHp9C]f\ qezwen.x,Y?cuIniRCK 90᧬on,RSŨa#!6xS5=nH)^p8tޟ5R\CNh(D21pGYB(6oK 0\<9@,"TԛnQbmƣ3 E)ưmIb}bIp)FQi| R(63y 3OݺvIh \,HSJ Ƥ:5e'/.7{GMf)yq&e s$5Oƽf^pO:`&K\X~73ׇ_-7]5VİFxI2Fx^MRG9B'v "QX&ŮVJU3Yv4=<!MuDJc `dR\KmԹ l.Nޠtu,LȌ5q\tІLi[wl8C=u(!(WaBÕ;ͽ 6r[߶o/m{^Ё)ݪoc ' ?0Y,JD6<ǐ9ս"\9G ؍gh@Faa]!w*Xsow9$\AB*L |\@C:[ *"H$8a9~6iPywdDB@ZT[1,SȾuP<$B7u X V+}m23u4 xS)BH1L d̲n0P>k 躋l<%Kc$)BggjuC]p.OC8}g0rAjxm1O<3B*C|yZ~h_B/ 9 t`}9ŏ9OQZ CgÍ6ߏƷ. ub>[`N OcETZV} 㡃^Uˋt>;Mv+khl.30.\F-T6 G;Bf; („' ,%IА,> < xH^x\# (yl4H0Q)6ZYuNj/ ~륽] EL3+.FVɴ?N{A:FcZsA(sgeVJ>EAϿ*Q呣@/q?ScFQ/ai#-r3rzݛp1Ďb!H?SQ~h2<>QA(9JMC _5&W)U0;֮)PKgCcL lib/ImVirt/VMD/QEMU.pmUmoF~F"^&jjZ k^/<34aB ޹ ՘ {zBq Z)li Su6*Bi 0yHcrCq=K|/*V0Ih6'fnܫsŖ7bJFc Ư ? A \ D|v JF!0A5Gl7Dt(@P1BJK f(ƛE2s}"c`Qi?D}Ńb<2E!ic 0,vtx @mF8& ys)&JrǒMR3Od0NO9t[,X')3djO s޹?M`<# :/MHUY@_Al"Rtx߮a Lb:XQ%d\`'_[7 5E [ӘO}$~¹JC@j7[0ʪrp~vFֳ٩TdYSV؅Ge!M?6v{۵JrD\1>|% Ȍ"H] {^@ 0bR ,SQ x!ENA% E&p3Y (f2eQPE&$.Cb^!'@1 آtc \+PZю R4PO-S/+h,7 PN QR;D($E4{ǻ.<'po=f-nb&eDM W{JP-W(:z>f9vapgu `Z^Q)#TK1j$}iIEjslKi^a RL ua1\5a'_? NK _Ӗ,&aʹhJC6@wta1)Z^6ףj1н U$ gJRQG`N?,?Y\K3U 7cջ(C"g+06,ߟكkoFK" uր3]bܡ ۨkg p =V}w$p m]=:Pɧiht0L`q/?h',#$dzc>gQЀoe_P_H1VǺ ,S3oߦnys\oafR2'+R5 ok})Ҁ|Whdu 6dp;!O;|m^0Iy"Mt,= Yҭ{mF|PR[Fqa"kIe/ ?^0D;^VP> : U!rkPKgCz lib/ImVirt/VMD/VMware.pmVr6}b'񌨩3}ԤS28"W"F @)j~{K,ɝv]9Kʋo9}4~Uz >WaEoPzMV7ӑEHľs=EYH7-" ׂ(F;?m4OT;o|2BbU<#V^k9bW yC.LA*B1\"smiFd H Ғ24IXbfAF+sM >A6,((eaȄ\- k&6 #JEk8-^E!/A&B7}[x^DC`DJ9EIY0C3^ u2wMbWc8匠)3'zC XŰsM1w(ƽ.Cpa^gra0 1Uď+$d+bC@"YL! kɨmxз ^ԪmdI#dsB* kh6F&#*m_Vv.H40mi;aB@$J(0'1}?6:m?zn&jj2NS H//-$Wrւ ?#*[z*٣\0p0K& ߨ#3ӍICO!l~;}'.8i씩&挬opO0inU=/eJTNqSROɪV&RF?<#K&1G{U:ɖYoKPKgC-ɓ?lib/ImVirt/VMD/VirtualBox.pmT]6}~J)WՇBwÐ._JQU$lJq`LCs=m25ZjP*ßjj*Bh<%L#?m ^xI%ضPL-. !N^ #(|Xۄ @cۊ,*ܳ sbYѺ Is^693f1|UAOZf|XcSO1QRG$E($FEbjB'ۛ,VX'd95iXq4OQSgԉg8k`Om\ ,XZgWSˁY.܇&0 oy╤/ !H1·'Yg;)K3`2L8 FF|Miٞ.D0f΅ .U YnӾ|ʵy jǤ#cNVgRQ0tЃPJP?3T^o^oC<|s)LQZ! fi ?ZM0ؖya FN} q[^P?c'x L_>Z4Xd44*5d*Mփů{Btƞ7K̚iL,g4ݏ۰Y̾ k4oHɹe&WЭ$LkVDsɑLy`B!/.:f/ -juNnU_‹Wxaī>І|h 9*R\>/>/*q9U!20XBuPKgCFMlib/ImVirt/VMD/VirtualPC.pmUmoF%X){i\80UE-M{g$V/V<<ӄe}xLG<}8*mpUwS9%p>à{_{VGH|D8+B\H^S_mLNe{6 OBUՠX5(,@I)V*nשIgr7O@#a  L*օB` ,r)Y/eAP1BJQ[ f(:aAMHyCXW@dY,,` WgC@Fq[09 &/纰IꥶS/BC`Y 4I*w,I`PHUbP6|rl}l׵'!eS)[X'I3'%Mƾtnt \an3Z.̗|,P >GeYkJ◄[6ȶ·;X 6Rfad\`'o ,Oi~HW0fE .T:uj}m>,6j?\]ˢkM jXFƲvϤܝ]-G|zP֖Te”߈ܼ1Q{Rm`\VMʑZe586 ]=#@A^ 1ofh gh-6!D,mӅ @3?EDNh̪Oz~jL9&˲`+idh2XM3;o[uHSo`?i_r\5x*ƉQ \zZj軙;% ;xLG\@4 #7 Wl?OD1P"'-/TY;'ڛ*l~FK:HZ**i>zf=(zBd`hPKgCiklib/ImVirt/VMD/Xen.pmVmsF b' bMCklӴtڤ{z1`;3|}nw}Eux L(sܽ0?bTWH7:V\: _'tj/υh 0yHfrsgSD`s_ATVj30e蜷3<X1*w_2z]M?k$3 s@˙@gjl/u"1.SDcMDˈ #(>K>nFp 'r077XH=@ZdV@PH \$(xdGmuI0QX<&|$/,`8[Cgؾ vo $Md)0ba0&τ 9@t/6Vgxs9@6]}e`0L,BrX s^I fيs{ x4O<%iL]8s6 Q[n-Dn?ỈTe0 x+\TKE6@^a4ɫbvyVEiYTbͭɚ X4#o/F!}/YTSڲFiY^TijRmr$LJI *nn]m!X3ZQEq#̕f^gP:"MSn݅f:+j+4[#A&f?Awy~$ߋy椐A~y($Id:bz&KRl9j)Mn/{Va1 f dZW^w8 cOK9!H|>WPIHIQ$&\i7FXB$<=Z"ZK:C( "DrXԛg @+2L`Q: f(%Q* BZi#^La!gkF%DE2$AuZB !'/,|¦]cŋ*DM$+ Xr8.QW+͗_p=X/}`FZ9YQ+ԌU/O c{c{R Zrk4;S(v 9]-fk_u!( c`S"BH:oO}X|r:~zG9h(4041cPrY,J)X,>B)n7c[k9I T["8/K-Cĉ?aT11a|iQ^o \h)6>RԸ2=|!v*0((^~O606 穓`J1٢`:Μֻz= ݝs0dMLcWmt xGVґz ڟP:F鹅krlx1hpa~Ou+!5&"J*1NjwU̟Kӽ\~/?7b*+G^r6ɽsu-Kp^ZPKgCD![{lib/Module/Find.pmUmo0S6D`&ĆBH UYa ]%3:wvHꌌORʼoQ| (yвjN`y/<W,+^FtεI*,/J^#5Nj387A#8IR&dJ^gG*]?OgEKtZ} 79xۛs|["mN|8I1^_EbeX((N\2(wH:W9{!][adY;,KwPjFab& P;4 +_ampk9B:z=Bѱ_o{EC0Mѷ0b 3aҺG~D:eBHsPB_ėx0t_N H2YM*-(Pfq|UpMEaYYW"ieq$ ]\3¶F2⩂u&BQ.Qt0aێQ5xwW/(h(Ub^"%ӮvB|yPsuگ-/} uh?Д" ÎRm/kh9ä,HV%ego݉!eM3ƑW(α\Ukd&t7na'hZLLռP[ywD=VN@ޤ '1gD0I |֝=]?{&:'DpoK2ih/'Swj3|²P PKgC_`#' lib/POSIX.pmTms8~q \pOb2ŵ Elgţ<56Dsm$ۤxVϮڽ̳".hׇ}s|fƝHA*[Kc?Ȋw:O+/^P%= 0W`ˈv1:g,-F=t\ߺȫlQA7iD~8fU qR*f.dS7qŞ]..̋Z  w.@*07Bc97+&㼣›7 4qgG^sDу6o2΃mBĖsX1 =>qx:2L-Rs4?`flFwgxV#qw|Ww*ZeUj㚏Wf/6\ |eڃ,HX,@?:$<pu5AJB2IGٲ<=?3Gt..8$<WK+BenLmɇ:VdJ6a -Ղr’mu1(T+bBXQe=MՕ+ʶwwDdskdon~\\٘yEYc@~uYY}r}1X6yFHm &ۘ-e)!w\G^ 5,yKNI|gz ihl[\O^'I 4ܨL{' -^5*z/{Sq0bO9PKgCLܢw  lib/auto/POSIX/autosplit.ixe;o1 w YA:&h)b Y;+Ώ_dwHwF;zs}2/PdNlbQVU@>[Δ6 I$,H,[1A\!B6dJDH8@Oid1,qB>WC ӡEfH'3d@{Fm+ۤnSf~M_ +=,T]ܕ34!0F0o=_6Q%mT]ԇZޔ7&1(e..?^VD?_jD|]=.$x4{xPKgCqq Klib/auto/POSIX/load_imports.alYF9WLٗ**ǺrHa@bEq{Oc=<+RFSq\ܥ"/Vi!USY+FG0vqVLS᫤lx 9ijx12]hyz/]5;1抯Wߚk(fR"^\] 7MZ^oBcp)}ҳPyq<js&"W|5US:cU5RmKVaN~=3<|;ftݔ-'"Rl+C#3f9>n9ь)Pm\&7 ҠoNa i}C(r雿.\[S- xsWršυi9`Z>f`аv]Oec rnHk!g-umׁCsLj2㸓p* sI`: m`a.Xxc鱈e`bh VJ[IW YYLx0P8mkD?S?LR5ga\)!v|&)a*4HF/Т 6>М[ Dޒ mcbִ|hsGxjDx7533VFi$; INq"thW*n[ Pg: k8N;A`=p::p"I-PM`<0!g'`Jquv* IP$|©5eQ9 Fd2 ꜭ:g+8;"(b"K469뎽޼ƢyCt/dus!lSΈ9SuݳrЅ3_3,ewCǠb3S'm?}9mdhIPϳC6?c\(b+ĂDJH@,TFD5o D$MḚZdW(yZ0gRaprjHȝڂ0݄SQH]w kX?L~8 eX8â~m0h :y)I[4ݵm 1HD,pj37)+D;-H mTnxMڪ0C#339NTį Y.ڋm|P|)k=Jnݛʓ^>yrC00؁af7pb)у#5!}gq0O'Nt; RZ3ˡPlʹ 6ڠ9R)B/S`zvۍ_oA(s~ ;/Ҝ-1 a N vJ5ܐO"|j0lI  2=6OB|)ۊLgf<zT2q֤IqfemA1Y!ny{ }9on6tEl۱j6ʦ)>! JP`GIևlCBFڎCUć(-C@_R"h*:pN9 FXt]}O ז˶>DM%=TBw 0;|8omy16;M7 co?R)F Ӌ%XYS@R4qĊX+ L(54gKL^ɛ7Լ}Mh>fj޿~ wy{,E?1)2TrFV4i䖫wc <(,YeOOu<<@-xky[] ŷ_Wq~L1Gel oؓ8e^xd~a śhwvXrD"2r"b#r%)}>rn}̌Myħ_\Eᬳi6qu}+@DDSJ%[ MV35ٗr=v"t9e3F?l"-J"^DVIqxEGUdu$Qq]dU=#γ\s- ý%슁k-WYE||sy9=(:4ylX 3Jc#D('\TP%B7c'@Sj^KRTUx ՟k4.6bt?PK֠CR/Q3 lib/imvirtTkO8L~]`T`Ҫ LF*m06^;v;{P@h{=]*َ)oD29op~-,#F7ORgB.#c1Y+%l(v3 #R"[ίBɜ M x3^n[bcWd>UPHQ\IB@Fa'JH"TiIR"\t@Yr$:#N0$ȈMfGe$2W "G B\†Hp BZz y 0x,w[63,4-x& Ԕ!$R &P**Yb`4|r>AN7}b)ِ dX+/1sLpa r9v-t#򼲵TDG,B~,,,sBE`{-J_[m%w ݄6Z\&<4mdFX*aݾTpL/]0PKgCR/Q3 script/imvirtTkO8L~]`T`Ҫ LF*m06^;v;{P@h{=]*َ)oD29op~-,#F7ORgB.#c1Y+%l(v3 #R"[ίBɜ M x3^n[bcWd>UPHQ\IB@Fa'JH"TiIR"\t@Yr$:#N0$ȈMfGe$2W "G B\†Hp BZz y 0x,w[63,4-x& Ԕ!$R &P**Yb`4|r>AN7}b)ِ dX+/1sLpa r9v-t#򼲵TDG,B~,,,sBE`{-J_[m%w ݄6Z\&<4mdFX*aݾTpL/]0PKgCv%script/main.plUj@F) PSzkh@-JB{Q fuOՔBapa=),`f}lx|o!I^zFY Zuw'eY%Biі5-"MU4_[LT< cfߤf!״[ Yboޞ5^!1#'hpN9wVcCxx=ZަV#0LZc!A-HuJ(ߺV`lcAN #Ǡ@0*NeM(!PKgCA\lib/PKgCA6\script/PKgC\@6][\MANIFESTPKgCIF^META.ymlPKgC BjG_lib/AutoLoader.pmPKgC2]dDglib/File/Slurp.pmPKgC8 |lib/File/Which.pmPKgC 8 ށlib/ImVirt.pmPKgC`wɉlib/ImVirt/Utils/blkdev.pmPKgCR_{lib/ImVirt/Utils/cpuinfo.pmPKgC5lib/ImVirt/Utils/dmesg.pmPKgCx olib/ImVirt/Utils/dmidecode.pmPKgC{~f$lib/ImVirt/Utils/dmidecode/kernel.pmPKgCNHp"lib/ImVirt/Utils/dmidecode/pipe.pmPKgC׳RClib/ImVirt/Utils/helper.pmPKgCaMͥlib/ImVirt/Utils/jiffies.pmPKgCJ2 lib/ImVirt/Utils/kmods.pmPKgCWKL-lib/ImVirt/Utils/pcidevs.pmPKgCJrOlib/ImVirt/Utils/procfs.pmPKgCP֑79lib/ImVirt/Utils/run.pmPKgCBC lib/ImVirt/Utils/sysfs.pmPKgC~Ivּlib/ImVirt/Utils/uname.pmPKgCalib/ImVirt/VMD/ARAnyM.pmPKgC"s0lib/ImVirt/VMD/Generic.pmPKgC/Gklib/ImVirt/VMD/KVM.pmPKgCO3lib/ImVirt/VMD/LXC.pmPKgC44 lib/ImVirt/VMD/Microsoft.pmPKgCPflib/ImVirt/VMD/OpenVZ.pmPKgC'1[lib/ImVirt/VMD/Parallels.pmPKgC`9J Nlib/ImVirt/VMD/PillBox.pmPKgCcL lib/ImVirt/VMD/QEMU.pmPKgCBQlib/ImVirt/VMD/UML.pmPKgCz 'lib/ImVirt/VMD/VMware.pmPKgC-ɓ?;lib/ImVirt/VMD/VirtualBox.pmPKgCFMlib/ImVirt/VMD/VirtualPC.pmPKgCik%lib/ImVirt/VMD/Xen.pmPKgCclib/ImVirt/VMD/lguest.pmPKgCD![{lib/Module/Find.pmPKgC_`#' *lib/POSIX.pmPKgCLܢw  w lib/auto/POSIX/autosplit.ixPKgCqq Klib/auto/POSIX/load_imports.alPK֠CR/Q3 glib/imvirtPKgCR/Q3 |script/imvirtPKgCv%#script/main.plPK,, $122443478c55658ea6d10d45446880383b25afeeCACHEԺ PAR.pm imvirt-0.9.6/helper/000077500000000000000000000000001220574025100143155ustar00rootroot00000000000000imvirt-0.9.6/helper/Makefile.am000066400000000000000000000005201220574025100163460ustar00rootroot00000000000000if X86ARCH pkglibexec_PROGRAMS = hvm hyperv vmware xen pillbox hvm_SOURCES = \ detect.c \ detect.h \ hvm.c hyperv_SOURCES = \ detect.c \ detect.h \ hyperv.c vmware_SOURCES = \ detect.c \ detect.h \ vmware.c xen_SOURCES = \ detect.c \ detect.h \ xen.c endif AM_CFLAGS = -Wall AM_LDFLAGS = -Wl,--as-needed imvirt-0.9.6/helper/Makefile.in000066400000000000000000000427511220574025100163730ustar00rootroot00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : @X86ARCH_TRUE@pkglibexec_PROGRAMS = hvm$(EXEEXT) hyperv$(EXEEXT) \ @X86ARCH_TRUE@ vmware$(EXEEXT) xen$(EXEEXT) pillbox$(EXEEXT) subdir = helper DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/config.h.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkglibexecdir)" PROGRAMS = $(pkglibexec_PROGRAMS) am__hvm_SOURCES_DIST = detect.c detect.h hvm.c @X86ARCH_TRUE@am_hvm_OBJECTS = detect.$(OBJEXT) hvm.$(OBJEXT) hvm_OBJECTS = $(am_hvm_OBJECTS) hvm_LDADD = $(LDADD) am__hyperv_SOURCES_DIST = detect.c detect.h hyperv.c @X86ARCH_TRUE@am_hyperv_OBJECTS = detect.$(OBJEXT) hyperv.$(OBJEXT) hyperv_OBJECTS = $(am_hyperv_OBJECTS) hyperv_LDADD = $(LDADD) pillbox_SOURCES = pillbox.c pillbox_OBJECTS = pillbox.$(OBJEXT) pillbox_LDADD = $(LDADD) am__vmware_SOURCES_DIST = detect.c detect.h vmware.c @X86ARCH_TRUE@am_vmware_OBJECTS = detect.$(OBJEXT) vmware.$(OBJEXT) vmware_OBJECTS = $(am_vmware_OBJECTS) vmware_LDADD = $(LDADD) am__xen_SOURCES_DIST = detect.c detect.h xen.c @X86ARCH_TRUE@am_xen_OBJECTS = detect.$(OBJEXT) xen.$(OBJEXT) xen_OBJECTS = $(am_xen_OBJECTS) xen_LDADD = $(LDADD) DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(hvm_SOURCES) $(hyperv_SOURCES) pillbox.c $(vmware_SOURCES) \ $(xen_SOURCES) DIST_SOURCES = $(am__hvm_SOURCES_DIST) $(am__hyperv_SOURCES_DIST) \ pillbox.c $(am__vmware_SOURCES_DIST) $(am__xen_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MYDIR = @MYDIR@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @X86ARCH_TRUE@hvm_SOURCES = \ @X86ARCH_TRUE@ detect.c \ @X86ARCH_TRUE@ detect.h \ @X86ARCH_TRUE@ hvm.c @X86ARCH_TRUE@hyperv_SOURCES = \ @X86ARCH_TRUE@ detect.c \ @X86ARCH_TRUE@ detect.h \ @X86ARCH_TRUE@ hyperv.c @X86ARCH_TRUE@vmware_SOURCES = \ @X86ARCH_TRUE@ detect.c \ @X86ARCH_TRUE@ detect.h \ @X86ARCH_TRUE@ vmware.c @X86ARCH_TRUE@xen_SOURCES = \ @X86ARCH_TRUE@ detect.c \ @X86ARCH_TRUE@ detect.h \ @X86ARCH_TRUE@ xen.c AM_CFLAGS = -Wall AM_LDFLAGS = -Wl,--as-needed all: config.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu helper/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu helper/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then rm -f stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status helper/config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 install-pkglibexecPROGRAMS: $(pkglibexec_PROGRAMS) @$(NORMAL_INSTALL) @list='$(pkglibexec_PROGRAMS)'; test -n "$(pkglibexecdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkglibexecdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkglibexecdir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkglibexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkglibexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkglibexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkglibexec_PROGRAMS)'; test -n "$(pkglibexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkglibexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkglibexecdir)" && rm -f $$files clean-pkglibexecPROGRAMS: -test -z "$(pkglibexec_PROGRAMS)" || rm -f $(pkglibexec_PROGRAMS) hvm$(EXEEXT): $(hvm_OBJECTS) $(hvm_DEPENDENCIES) $(EXTRA_hvm_DEPENDENCIES) @rm -f hvm$(EXEEXT) $(LINK) $(hvm_OBJECTS) $(hvm_LDADD) $(LIBS) hyperv$(EXEEXT): $(hyperv_OBJECTS) $(hyperv_DEPENDENCIES) $(EXTRA_hyperv_DEPENDENCIES) @rm -f hyperv$(EXEEXT) $(LINK) $(hyperv_OBJECTS) $(hyperv_LDADD) $(LIBS) pillbox$(EXEEXT): $(pillbox_OBJECTS) $(pillbox_DEPENDENCIES) $(EXTRA_pillbox_DEPENDENCIES) @rm -f pillbox$(EXEEXT) $(LINK) $(pillbox_OBJECTS) $(pillbox_LDADD) $(LIBS) vmware$(EXEEXT): $(vmware_OBJECTS) $(vmware_DEPENDENCIES) $(EXTRA_vmware_DEPENDENCIES) @rm -f vmware$(EXEEXT) $(LINK) $(vmware_OBJECTS) $(vmware_LDADD) $(LIBS) xen$(EXEEXT): $(xen_OBJECTS) $(xen_DEPENDENCIES) $(EXTRA_xen_DEPENDENCIES) @rm -f xen$(EXEEXT) $(LINK) $(xen_OBJECTS) $(xen_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/detect.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hvm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hyperv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pillbox.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vmware.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xen.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) config.h installdirs: for dir in "$(DESTDIR)$(pkglibexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-pkglibexecPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkglibexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkglibexecPROGRAMS .MAKE: all install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-pkglibexecPROGRAMS ctags distclean distclean-compile \ distclean-generic distclean-hdr distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-pkglibexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ ps ps-am tags uninstall uninstall-am \ uninstall-pkglibexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: imvirt-0.9.6/helper/config.h.in000066400000000000000000000051301220574025100163370ustar00rootroot00000000000000/* helper/config.h.in. Generated from configure.in by autoheader. */ /* Define to 1 if you have the `fork' function. */ #undef HAVE_FORK /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have that is POSIX.1 compatible. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `vfork' function. */ #undef HAVE_VFORK /* Define to 1 if you have the header file. */ #undef HAVE_VFORK_H /* Define to 1 if `fork' works. */ #undef HAVE_WORKING_FORK /* Define to 1 if `vfork' works. */ #undef HAVE_WORKING_VFORK /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define for Solaris 2.5.1 so the uint32_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT32_T /* Define to `int' if does not define. */ #undef pid_t /* Define to the type of an unsigned integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ #undef uint16_t /* Define to the type of an unsigned integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ #undef uint32_t /* Define as `fork' if `vfork' does not work. */ #undef vfork imvirt-0.9.6/helper/detect.c000066400000000000000000000024341220574025100157340ustar00rootroot00000000000000/* imvirt / Generic detection code * * Authors: * Thomas Liske * * Copyright Holder: * 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] * * License: * 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 2 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 package; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include "detect.h" int debug_cpuid = 0; void helper_main(int argc, char **argv) { int opts; while ((opts = getopt(argc, argv, "c")) != EOF) { switch(opts) { case 'c': debug_cpuid = 1; break; default: fprintf(stderr, "Usage: %s [-c]\n\t-c\tdebug CPUID calls\n\n", argv[0]); exit(1); } } } imvirt-0.9.6/helper/detect.h000066400000000000000000000032411220574025100157360ustar00rootroot00000000000000/* imvirt / Generic detection code * * Authors: * Thomas Liske * * Copyright Holder: * 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] * * License: * 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 2 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 package; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "config.h" extern int debug_cpuid; void helper_main(int, char **); #if defined(__i386__) && defined(__PIC__) #define CPUID(leaf, eax, ebx, ecx, edx) \ __asm__ ( \ "xchgl %%ebx, %1;" \ "cpuid;" \ "xchgl %%ebx, %1" \ : "=a" (eax), "=r" (ebx), "=c" (ecx), "=d" (edx) \ : "0" (leaf)); \ if(debug_cpuid) fprintf(stderr, "%s:%d\tCPUID[0x%x]: eax=%d ebx=%d ecx=%d edx=%d\n", __FILE__, __LINE__, leaf, eax, ebx, ecx, edx) #else #define CPUID(leaf, eax, ebx, ecx, edx) \ __asm__ ( \ "cpuid" \ : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) \ : "0" (leaf)); \ if(debug_cpuid) fprintf(stderr, "%s:%d\tCPUID[0x%x]: eax=%d ebx=%d ecx=%d edx=%d\n", __FILE__, __LINE__, leaf, eax, ebx, ecx, edx) #endif imvirt-0.9.6/helper/hvm.c000066400000000000000000000030701220574025100152530ustar00rootroot00000000000000/* imvirt / Generic HyperVisor Manager detection code * * Authors: * Thomas Liske * * Copyright Holder: * 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] * * License: * 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 2 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 package; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include "detect.h" int main(int argc, char **argv) { helper_main(argc, argv); uint32_t eax = 0, ebx = 0, ecx = 0, edx = 0; char signature[13]; CPUID(0x40000000, eax, ebx, ecx, edx); memcpy(&signature[0], &ebx, 4); memcpy(&signature[4], &ecx, 4); memcpy(&signature[8], &edx, 4); signature[12] = 0; /* P4 reports '@' */ if((eax == 64) && (ebx == 64) && (ecx == 0) && (edx == 0)) return 0; if(strlen(signature) && isprint(signature[0])) { printf("%s\n", signature); return 1; } return 0; } imvirt-0.9.6/helper/hyperv.c000066400000000000000000000026711220574025100160040ustar00rootroot00000000000000/* imvirt / HyperV detection code * * Authors: * Thomas Liske * * Copyright Holder: * 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] * * License: * 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 2 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 package; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include #include #include #include #include #include "detect.h" int main(int argc, char **argv) { helper_main(argc, argv); uint32_t eax = 0, ebx = 0, ecx = 0, edx = 0; char signature[13]; CPUID(0x40000000, eax, ebx, ecx, edx); memcpy(&signature[0], &ebx, 4); memcpy(&signature[4], &ecx, 4); memcpy(&signature[8], &edx, 4); signature[12] = 0; if(!strcmp(signature, "Microsoft Hv")) { printf("Virtual Machine\n"); return 1; } return 0; } imvirt-0.9.6/helper/pillbox.c000066400000000000000000000050361220574025100161360ustar00rootroot00000000000000/* imvirt / pillbox - retrieve several unprivileged registers * * Authors: * Thomas Liske * * Copyright Holder: * 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] * * License: * 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 2 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 package; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #define _GNU_SOURCE #include #include #include #include #include void sidt() { volatile uint64_t idt = 0; asm("sidt %0" : :"m"(idt)); volatile uint64_t old = idt; unsigned int i; for(i=0; i<0xffffff; i++) { asm("sidt %0" : :"m"(idt)); if(old != idt) { printf(",idt,%" PRIu64 ",idt2,%" PRIu64, old, idt); return; } } printf(",idt,%" PRIu64, old); } void sgdt() { volatile uint64_t gdt = 0; asm("sgdt %0" : :"m"(gdt)); volatile uint64_t old = gdt; unsigned int i; for(i=0; i<0xffffff; i++) { asm("sgdt %0" : :"m"(gdt)); if(old != gdt) { printf(",gdt,%" PRIu64 ",gdt2,%" PRIu64, old, gdt); return; } } printf(",gdt,%" PRIu64, old); } void sldt() { volatile uint64_t ldt = 0; asm("sldt %0" : :"m"(ldt)); printf(",ldt,%" PRIu64, ldt); } void str() { volatile uint64_t tr = 0; asm("str %0" : :"m"(tr)); printf(",tr,%" PRIu64, tr); } int main () { /* Some of the tests need to be run on the same CPU. */ cpu_set_t mask; if(sched_getaffinity(0, sizeof(mask), &mask) < 0) { perror("sched_getaffinity"); return -1; } /* Bind onto first online cpu. */ int n; for(n = 0; n < CPU_SETSIZE; n++) { if(CPU_ISSET(n, &mask)) { CPU_ZERO(&mask); CPU_SET(n, &mask); break; } } if(!CPU_ISSET(n, &mask)) { fprintf(stderr, "Oops, could not find an online CPU!\n"); return -1; } if (sched_setaffinity(0, sizeof(mask), &mask) < 0) { perror("sched_setaffinity"); return -1; } printf("cpu,%d", n); sidt(); sgdt(); sldt(); str(); printf("\n"); exit(0); } imvirt-0.9.6/helper/vmware.c000066400000000000000000000061451220574025100157700ustar00rootroot00000000000000/* imvirt / VMware detection code * * Authors: * Thomas Liske * * Copyright Holder: * 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] * * License: * 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 2 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 package; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* This code tries to detect the VMware version using the VMware backdoor's * GETVERSION command (http://chitchat.at.infoseek.co.jp/vmware/backdoor.html#cmd0ah). */ #include #include #include #include #include #include #include #include #include "detect.h" #define VMWARE_MAGIC 0x564d5868 #define VMWARE_PORT 0x5658 #define VMWARE_CMD_GETVERSION 0x0a #if defined(__i386__) && defined(__PIC__) #define VMWARE_CMD(eax, ebx, ecx, edx) \ __asm__( \ "xchgl %%ebx, %1;" \ "inl (%%dx);" \ "xchgl %%ebx, %1" \ : "+a"(eax), "+r"(ebx), "+c"(ecx), "+d"(edx) \ ); #else #define VMWARE_CMD(eax, ebx, ecx, edx) \ __asm__("inl (%%dx)" \ : "+a"(eax), "+b"(ebx), "+c"(ecx), "+d"(edx) \ ); #endif static void vmware_cmd(uint32_t cmd, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx) { *eax = VMWARE_MAGIC; *ebx = 0xffffffff; *ecx = cmd; *edx = VMWARE_PORT; VMWARE_CMD(*eax, *ebx, *ecx, *edx); } static void sigh(int signum) { exit(0); } static int do_vmware() { uint32_t eax, ebx, ecx, edx; struct sigaction sa; /* ignore SIGSEGV (VMWARE_CMD will cause a SEGV on none VMware systems) */ sa.sa_handler = sigh; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sigaction(SIGSEGV, &sa, NULL); vmware_cmd(VMWARE_CMD_GETVERSION, &eax, &ebx, &ecx, &edx); /* sanity check: maybe VMWARE_CMD did not SEGV if there was something * on the I/O port - test if EBX has been set to VMWARE_MAGIC */ if ((uint32_t)-1 && ebx == VMWARE_MAGIC) { char *product; switch(ecx) { case 0x01: product = "Express"; break; case 0x02: product = "ESX Server"; break; case 0x03: product = "GSX Server"; break; case 0x04: product = "Workstation"; break; default: product = "?"; break; } printf("%s\n", product); return 1; } return 0; } int main(int argc, char **argv) { helper_main(argc, argv); pid_t pid = fork(); switch (pid) { case 0: exit(do_vmware()); case -1: return 0; } int status; waitpid(pid, &status, 0); if (WIFEXITED(status)) return WEXITSTATUS(status); return 0; } imvirt-0.9.6/helper/xen.c000066400000000000000000000077421220574025100152650ustar00rootroot00000000000000/* imvirt / Xen detection code * * This file has been taken from XenSource's xen_detect.c with some small * changes to fit imvirt requirements on output / return codes. * * * xen_detect.c * * Simple GNU C / POSIX application to detect execution on Xen VMM platform. * * Copyright (c) 2007, XenSource Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to * deal in the Software without restriction, including without limitation the * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or * sell copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ #include #include #include #include #include #include #include #include #include "detect.h" static int pv_context; #if defined(__i386__) && defined(__PIC__) static void cpuid(uint32_t idx, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx) { asm volatile ( "test %1,%1 ; jz 1f ; ud2a ; .ascii \"xen\" ; 1: xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" : "=a" (*eax), "=r" (*ebx), "=c" (*ecx), "=d" (*edx) : "0" (idx), "1" (pv_context) ); } #else static void cpuid(uint32_t idx, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx) { asm volatile ( "test %1,%1 ; jz 1f ; ud2a ; .ascii \"xen\" ; 1: cpuid" : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) : "0" (idx), "1" (pv_context) ); } #endif static int check_for_xen(void) { uint32_t eax, ebx, ecx, edx; char signature[13]; cpuid(0x40000000, &eax, &ebx, &ecx, &edx); memcpy(&signature[0], &ebx, 4); memcpy(&signature[4], &ecx, 4); memcpy(&signature[8], &edx, 4); signature[12] = '\0'; if (strcmp("XenVMMXenVMM", signature) || (eax < 0x40000002)) return 0; cpuid(0x40000001, &eax, &ebx, &ecx, &edx); printf("%s %d.%d\n", pv_context ? "PV" : "HVM", (uint16_t)(eax >> 16), (uint16_t)eax); return 1; } static void sigh(int signum) { exit(0); } int main(int argc, char **argv) { helper_main(argc, argv); pid_t pid; int status; uint32_t dummy; /* Check for execution in HVM context. */ if (check_for_xen()) return 1; /* Now we check for execution in PV context. */ pv_context = 1; /* * Fork a child to test the paravirtualised CPUID instruction. * If executed outside Xen PV context, the extended opcode will fault. */ pid = fork(); switch ( pid ) { case 0: /* ignore SIGILL on amd64 */ { struct sigaction sa; sa.sa_handler = sigh; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sigaction(SIGILL, &sa, NULL); } /* Child: test paravirtualised CPUID opcode and then exit cleanly. */ cpuid(0x40000000, &dummy, &dummy, &dummy, &dummy); exit(1); case -1: return 0; } /* * Parent waits for child to terminate and checks for clean exit. * Only if the exit is clean is it safe for us to try the extended CPUID. */ waitpid(pid, &status, 0); if ( WIFEXITED(status) && WEXITSTATUS(status) && check_for_xen() ) return 0; return 0; } imvirt-0.9.6/imvirt000077500000000000000000000040001220574025100142700ustar00rootroot00000000000000#!/usr/bin/perl # imvirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2008 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # use strict; use warnings; use ImVirt; use Getopt::Long; sub HELP_MESSAGE { my $prod = 'ImVirt'; $prod .= ' Portable' if(exists($ENV{PAR_0}) && __FILE__ =~ /^script\//); print STDERR < Copyright Holder: 2008 - 2013 (C) IBH IT-Service GmbH [http://www.ibh.de/] License: 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 2 of the License, or (at your option) any later version. About: imvirt tries to detect if it runs on a physical machine or on a virtualized one. If it detects that it is a virtualized one it also tries to find out which virtualization technology is used. Usage: imvirt [-d] -d enable debug output Output: EOH #' print " ",join("\n ", imv_get_pos_results()),"\n\n"; exit; } my %opts; GetOptions( 'd' => sub { ImVirt::set_debug(1); }, help => sub { HELP_MESSAGE(); }, ) or HELP_MESSAGE(); print imv_get(IMV_PROB_DEFAULT),"\n"; imvirt-0.9.6/imvirt-report000077500000000000000000000102161220574025100156070ustar00rootroot00000000000000#!/usr/bin/perl # imvirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2012 - 2013 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # use strict; use warnings; use Getopt::Std; use MIME::Lite; use ImVirt; $|++; eval 'use File::Which;'; my $nowhich = $@; my $hostname = `hostname -f`; chomp($hostname); $Getopt::Std::STANDARD_HELP_VERSION++; sub HELP_MESSAGE { print <] -s where to write the collected data USG } sub VERSION_MESSAGE { print < Copyright Holder: 2008 - 2013 (C) IBH IT-Service GmbH [http://www.ibh.de/] License: 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 2 of the License, or (at your option) any later version. LIC #' } our $opt_s = "imvirt-report_${hostname}_$$.eml"; getopts('s:') || exit(1); my $ivout = imv_get(IMV_PROB_DEFAULT); my $msg = MIME::Lite->new( Subject => $hostname, Type => 'multipart/mixed', ); $msg->attach( Type => 'TEXT', Data => "Hostname: $hostname\nImVirt Version: $ImVirt::VERSION\nImVirt Output: $ivout\n", ); sub attach_path($$) { my ($msg, $glob) = @_; foreach my $path (glob $glob) { my $fn = $path; $fn =~ s@/@_@g; unless (-r $path) { $msg->attach( Type => 'TEXT', Data => "File $path not readable!", Filename => $fn, ); } else { print STDERR " Attaching '$path'.\n"; $msg->attach( Type => 'TEXT', Path => $path, Filename => $fn, ); } } } sub attach_cmd($$$) { my ($msg, $cmd, $params) = @_; my $run = ($nowhich ne '' ? $cmd : which($cmd)); unless (defined($run)) { $msg->attach( Type => 'TEXT', Data => "Command $cmd not available!", Filename => $cmd, ); return; } print STDERR " Attaching `$cmd $params`.\n"; $msg->attach( Type => 'TEXT', Data => scalar `$run $params 2>&1`, Filename => $cmd, ); } print STDERR "Collecting data...\n"; attach_path($msg, '/proc/1/cgroup'); attach_path($msg, '/proc/1/environ'); attach_path($msg, '/proc/1/stat'); attach_path($msg, '/proc/cmdline'); attach_path($msg, '/proc/cpuinfo'); attach_path($msg, '/proc/kallsyms'); attach_path($msg, '/proc/mounts'); attach_path($msg, '/proc/modules'); attach_path($msg, '/proc/bus/input/devices'); attach_path($msg, '/proc/uptime'); attach_path($msg, '/proc/timer_list'); attach_path($msg, '/sys/devices/system/clocksource/clocksource*/available_clocksource'); attach_path($msg, '/sys/devices/system/cpu/cpu*/cpufreq/scaling_driver'); attach_path($msg, '/var/log/dmesg'); attach_cmd($msg, 'dmesg', ''); attach_cmd($msg, 'dmidecode', ''); attach_cmd($msg, 'find', '/dev'); attach_cmd($msg, 'find', '/proc'); attach_cmd($msg, 'find', '/sys'); attach_cmd($msg, 'imvirt', '-d'); attach_cmd($msg, 'lsb_release', '-a'); attach_cmd($msg, 'lspci', ''); attach_cmd($msg, 'uname', '-a'); open(HSAVE, '>', $opt_s) || die "Could not open $opt_s: $!\n"; $msg->print(\*HSAVE); close(HSAVE); print STDERR "Data saved to '$opt_s'.\n"; imvirt-0.9.6/imvirt.spec.in000066400000000000000000000032611220574025100156330ustar00rootroot00000000000000%define name @PACKAGE@ %define version @PACKAGE_VERSION@ %define release 1 Name: %{name} Summary: Detects several virtualizations Version: %{version} Release: %{release} URL: http://micky.ibh.net/~liske/imvirt.html Source0: http://downloads.sourceforge.net/project/%{name}/%{name}/%{version}/%{name}-%{version}.tar.gz License: GPLv2+ Group: Applications/System Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) BuildRequires: perl(ExtUtils::MakeMaker) Buildroot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) Vendor: IBH IT-Service GmbH (http://www.ibh.de/) %description This little Perl script tries to detect if it is called from within a virtualization container. This is detected by looking for well known boot messages, directories and reading DMI (Desktop Management Interface) data. The following containers are detected: * ARAnyM * KVM * lguest * LXC * OpenVZ/Virtuozzo * QEMU * UML * VMware GSX, ESX, Workstation * Virtual PC/Virtual Server * VirtualBox * Xen (para and non-para virtualized) * any HVM providing CPUID 0x40000000 detection %prep %setup -q %build %configure --prefix=%{_prefix} --libexec=%{_libexecdir}/imvirt make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT rm $RPM_BUILD_ROOT%{perl_vendorarch}/auto/ImVirt/.packlist rm $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod %check #make check %clean rm -rf $RPM_BUILD_ROOT make clean %files %defattr(-,root,root,-) %{_bindir}/* %{_sbindir}/* %dir %{_libexecdir}/imvirt %{_libexecdir}/imvirt/* %doc AUTHORS COPYING ChangeLog README %{_mandir}/man1/*.1* %{_mandir}/man3/*.3* %{perl_vendorlib}/* imvirt-0.9.6/install-sh000077500000000000000000000220211220574025100150370ustar00rootroot00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2005-05-14.22 # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" chmodcmd="$chmodprog 0755" chowncmd= chgrpcmd= stripcmd= rmcmd="$rmprog -f" mvcmd="$mvprog" src= dst= dir_arg= dstarg= no_target_directory= usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: -c (ignored) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. --help display this help and exit. --version display version info and exit. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test -n "$1"; do case $1 in -c) shift continue;; -d) dir_arg=true shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; --help) echo "$usage"; exit $?;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -s) stripcmd=$stripprog shift continue;; -t) dstarg=$2 shift shift continue;; -T) no_target_directory=true shift continue;; --version) echo "$0 $scriptversion"; exit $?;; *) # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. test -n "$dir_arg$dstarg" && break # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dstarg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dstarg" shift # fnord fi shift # arg dstarg=$arg done break;; esac done if test -z "$1"; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi for src do # Protect names starting with `-'. case $src in -*) src=./$src ;; esac if test -n "$dir_arg"; then dst=$src src= if test -d "$dst"; then mkdircmd=: chmodcmd= else mkdircmd=$mkdirprog fi else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dstarg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dstarg # Protect names starting with `-'. case $dst in -*) dst=./$dst ;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dstarg: Is a directory" >&2 exit 1 fi dst=$dst/`basename "$src"` fi fi # This sed command emulates the dirname command. dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` # Make sure that the destination directory exists. # Skip lots of stat calls in the usual case. if test ! -d "$dstdir"; then defaultIFS=' ' IFS="${IFS-$defaultIFS}" oIFS=$IFS # Some sh's can't handle IFS=/ for some reason. IFS='%' set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` shift IFS=$oIFS pathcomp= while test $# -ne 0 ; do pathcomp=$pathcomp$1 shift if test ! -d "$pathcomp"; then $mkdirprog "$pathcomp" # mkdir can fail with a `File exist' error in case several # install-sh are creating the directory concurrently. This # is OK. test -d "$pathcomp" || exit fi pathcomp=$pathcomp/ done fi if test -n "$dir_arg"; then $doit $mkdircmd "$dst" \ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } else dstfile=`basename "$dst"` # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 trap '(exit $?); exit' 1 2 13 15 # Copy the file name to the temp name. $doit $cpprog "$src" "$dsttmp" && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && # Now rename the file to the real destination. { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ || { # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { if test -f "$dstdir/$dstfile"; then $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ || { echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 (exit 1); exit 1 } else : fi } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" } } fi || { (exit 1); exit 1; } done # The final little trick to "correctly" pass the exit status to the exit trap. { (exit 0); exit 0 } # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: imvirt-0.9.6/logo/000077500000000000000000000000001220574025100137765ustar00rootroot00000000000000imvirt-0.9.6/logo/imvirt.svg000066400000000000000000000541671220574025100160460ustar00rootroot00000000000000 imvirt logo image/svg+xml imvirt logo Thomas Liske ? imvirt-0.9.6/man/000077500000000000000000000000001220574025100136115ustar00rootroot00000000000000imvirt-0.9.6/man/Makefile.am000066400000000000000000000001021220574025100156360ustar00rootroot00000000000000man_MANS=imvirt.1 imvirt-report.1 EXTRA_DIST=$(man_MANS) %.1: imvirt-0.9.6/man/Makefile.in000066400000000000000000000317441220574025100156670ustar00rootroot00000000000000# Makefile.in generated by automake 1.11.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software # Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = man DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/helper/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man_MANS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MYDIR = @MYDIR@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ man_MANS = imvirt.1 imvirt-report.1 EXTRA_DIST = $(man_MANS) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu man/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-man1: $(man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) installdirs: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-man uninstall-man1 %.1: # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: imvirt-0.9.6/man/imvirt-report.1000066400000000000000000000013641220574025100165220ustar00rootroot00000000000000.TH "IMVIRT-REPORT" "1" .SH "NAME" imvirt-report \- system reporting to improve detection .SH "SYNOPSIS" \fBimvirt-report\fR .SH "DESCRIPTION" This manual page documents briefly the \fBimvirt-report\fR script. \fBimvirt-report\fR collects various system information and sends them to the upstream authors to provide a better detection support of virtualizing technologies. .SH "USAGE" \fBimvirt-report\fR does not need any arguments. .SH "SEE ALSO" .BR imvirt (1) .SH "AUTHOR" This manual page was written by Patrick Matth\[:a]i for imvirt. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 any later version published by the Free Software Foundation. imvirt-0.9.6/man/imvirt.1000066400000000000000000000021421220574025100152040ustar00rootroot00000000000000.TH "IMVIRT" "1" .SH "NAME" imvirt \- detects several virtualizations .SH "SYNOPSIS" \fBimvirt\fR .SH "DESCRIPTION" This manual page documents briefly the \fBimvirt\fR script. \fBimvirt\fR tries to detect if it runs on a physical machine or on a virtualized one. If it detects that it is a virtualized one it also tries to find out which virtualization technology is used. .SH "USAGE" \fBimvirt\fR does not need any arguments. But there is at the moment a restriction if you do not call this script with the administrative root user, because \fBimvirt\fR also uses \fBdmidecode\fR to determine the used virtualization technology. \fBdmidecode\fR itself needs root privileges to accesss /dev/mem. So on you have to wrap \fBimvirt\fR with sudo if you want to detect every virtualization technology. .SH "SEE ALSO" .BR dmidecode (8) .SH "AUTHOR" This manual page was written by Patrick Matth\[:a]i for imvirt. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 any later version published by the Free Software Foundation. imvirt-0.9.6/missing000077500000000000000000000254061220574025100144440ustar00rootroot00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2005-06-08.21 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 # Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # 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 2, 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, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case "$1" in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). case "$1" in lex|yacc) # Not GNU programs, they don't have --version. ;; tar) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case "$1" in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case "$f" in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" y.tab.h fi ;; esac fi if [ ! -f y.tab.h ]; then echo >y.tab.h fi if [ ! -f y.tab.c ]; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if [ $# -ne 1 ]; then eval LASTARG="\${$#}" case "$LASTARG" in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if [ -f "$SRCFILE" ]; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if [ ! -f lex.yy.c ]; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` fi if [ -f "$file" ]; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case "$firstarg" in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case "$firstarg" in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: imvirt-0.9.6/perl/000077500000000000000000000000001220574025100140005ustar00rootroot00000000000000imvirt-0.9.6/perl/Makefile.PL000066400000000000000000000004141220574025100157510ustar00rootroot00000000000000use ExtUtils::MakeMaker; WriteMakefile( 'AUTHOR' => 'Thomas Liske ', 'LICENSE' => 'gpl', 'NAME' => 'ImVirt', 'VERSION_FROM' => 'lib/ImVirt.pm', 'PREREQ_PM' => { Module::Find => 0, File::Slurp => 0, File::Which => 0, }, ); imvirt-0.9.6/perl/lib/000077500000000000000000000000001220574025100145465ustar00rootroot00000000000000imvirt-0.9.6/perl/lib/ImVirt.pm.in000066400000000000000000000143661220574025100167350ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt; =head1 NAME ImVirt - detects several virtualizations =head1 SYNOPSIS use ImVirt; print imv_get(IMV_PROB_DEFAULT, imv_detect()),"\n"; =head1 DESCRIPTION The C package tries to detect if it is run in a virtualization container. At least the following container should be detected: =over =item ARAnyM =item KVM =item lguest =item LXC =item OpenVZ =item QEMU =item UML =item VirtualBox =item Virtual PC/Server =item VMware =item Xen =back =head1 DETECTION HEURISTIC The detection is based on a heuristic - you should not trust the result at all. ImVirt probes for different well-known characteristics of different virtualization containers. Any characteristics found or not found are weighted by their significance. The result of the heuristic is a weighted tree. The leaves are the (not) detected containers. =head1 FUNCTIONS The following functions should be used to retrieve the detected virtualization containers: =over 4 =item imv_get($prob) Returns exactly one string describing the detected container. If the detected container has a smaller match probability than $prob the string 'Unknown' is returned. =item imv_get_all() Returns a hash any positive detected containers as keys and their corresponding match probability as value. =item imv_get_pos_results() Returns a list of all possible results which might be returned by all detection modules. The list entries might be appended by some additional data like version numbers etc. =back =cut use strict; use warnings; use Module::Find; use List::Util qw(sum); use Data::Dumper; use constant { KV_POINTS => 'points', KV_SUBPRODS => 'prods', KV_PROB => 'prob', IMV_PHYSICAL => 'Physical', IMV_VIRTUAL => 'Virtual', IMV_EMULATOR => 'Emulator', IMV_CONTAINER => 'Container', IMV_UNKNOWN => 'Unknown', IMV_PROB_DEFAULT => 0.9, IMV_PTS_MINOR => 1, IMV_PTS_NORMAL => 3, IMV_PTS_MAJOR => 6, IMV_PTS_DRASTIC => 12, }; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( imv_detect imv_get imv_get_all imv_get_pos_results IMV_PROB_DEFAULT IMV_PHYSICAL IMV_VIRTUAL IMV_UNKNOWN IMV_PTS_MINOR IMV_PTS_NORMAL IMV_PTS_MAJOR IMV_PTS_DRASTIC ); our $VERSION = '@PACKAGE_VERSION@'; sub get_libexecdir() { return '@libexecdir@/@PACKAGE@'; } my @vmds = (); my $debug = 0; my %detected = (); my %rtree; sub register_vmd($) { my $vmd = shift || return; push(@vmds, $vmd); } sub _rtree_vm($$$@) { my $dref = shift; my $cref = shift; my $pts = shift; foreach my $prod (keys %{$dref}) { my $href = ${$dref}{$prod}; if(keys %{${$href}{KV_SUBPRODS}}) { &_rtree_vm(${$href}{KV_SUBPRODS}, $cref, $pts + ${$href}{KV_POINTS}, @_, $prod); } else { if(${$href}{KV_POINTS} > 0) { my $n = join(' ', @_, $prod); $n =~ s/^.*\|([^\|]+)/$1/ if($n =~ /\|/); ${$cref}{$n} = $pts + ${$href}{KV_POINTS}; } } } } sub imv_detect() { imv_init() unless (@vmds); %detected = (ImVirt::IMV_PHYSICAL => {KV_POINTS => IMV_PTS_MINOR}); foreach my $vmd (@vmds) { eval "${vmd}::detect(\\\%detected);"; warn "Error in ${vmd}::detect(): $@\n" if $@; } %rtree = (); _rtree_vm(\%detected, \%rtree, 0); my $psum = sum grep { $_ > 0 } values %rtree; foreach my $prod (keys %rtree) { my $pts = $rtree{$prod}; if($pts > 0) { $rtree{$prod} = $pts/$psum; } else { $rtree{$prod} = 0; } } debug(__PACKAGE__, "imvirt_detect():\n".Dumper(\%rtree)); } sub inc_pts($$@) { debug(__PACKAGE__, 'inc_pts('.join(', ',@_).')'); my $dref = shift; my $prop = shift; _change_pts($prop, $dref, @_); } sub dec_pts($$@) { debug(__PACKAGE__, 'dec_pts('.join(', ',@_).')'); my $dref = shift; my $prop = shift; _change_pts(-$prop, $dref, @_); } sub _change_pts($\%@) { my $prop = shift; my $ref = shift; my $key = shift; my $href = ${$ref}{$key}; unless($href) { $href = ${$ref}{$key} = {KV_POINTS => 0, KV_SUBPRODS => {}}; } if($#_ != -1) { &_change_pts($prop, ${$href}{KV_SUBPRODS}, @_); } else { ${$href}{KV_POINTS} += $prop; } } sub imv_get_all() { imv_detect() unless (%detected); return %rtree; } sub imv_get($) { imv_detect() unless (%detected); my $prob = shift; my @res = sort { $rtree{$b} > $rtree{$a} } keys %rtree; my $vm = shift @res; return $vm if(eval { my $m = (sum values %rtree)/($#res+2); debug(__PACKAGE__, "imv_get: m = $m"); my $s = 0; foreach my $v (values %rtree) { $s += ($v - $m)**2; } $s /=($#res+1); debug(__PACKAGE__, "imv_get: s² = $s"); my $vm2 = shift @res; debug(__PACKAGE__, "imv_get: $rtree{$vm} - sqrt($s) > $rtree{$vm2}"); $rtree{$vm} - sqrt($s) > $rtree{$vm2}; }); return $vm if($rtree{$vm} >= $prob); return IMV_UNKNOWN; } sub imv_get_pos_results { imv_init() unless (@vmds); my @pres; foreach my $vmd (@vmds) { eval "\@pres = (\@pres, ${vmd}::pres());"; } my %pres = map { $_, 1 } map { s/^.*\|([^|]+)$/$1/; $_; } @pres; return sort {uc($a) cmp uc($b)} keys %pres; } sub set_debug($) { $debug = shift; } sub get_debug() { return $debug; } sub debug($$) { printf STDERR "%s: %s\n", @_ if($debug); } sub imv_init() { # autoload VMD modules foreach my $module (findsubmod ImVirt::VMD) { eval "use $module;"; die "Error loading $module: $@\n" if $@; } } 1; imvirt-0.9.6/perl/lib/ImVirt/000077500000000000000000000000001220574025100157605ustar00rootroot00000000000000imvirt-0.9.6/perl/lib/ImVirt/Utils/000077500000000000000000000000001220574025100170605ustar00rootroot00000000000000imvirt-0.9.6/perl/lib/ImVirt/Utils/blkdev.pm000066400000000000000000000033411220574025100206660ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::blkdev; use strict; use warnings; use File::Slurp; use ImVirt::Utils::procfs; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( blkdev_match ); our $VERSION = '0.1'; sub blkdev_match(%) { my %regexs = @_; my $pts = 0; # scan SCSI devices if(my @scsi = procfs_read('scsi/scsi')) { foreach my $scsi (@scsi) { last unless(defined($scsi)); chomp($scsi); foreach my $regex (keys %regexs) { $pts += $regexs{$regex} if($scsi =~ /$regex/); } } } # scan IDE devices my $glob = procfs_getmp().'/ide/hd*/model'; foreach my $hd (glob $glob) { my @ide = read_file($hd); foreach my $ide (@ide) { last unless(defined($ide)); chomp($ide); foreach my $regex (keys %regexs) { $pts += $regexs{$regex} if($ide =~ /$regex/); } } } return $pts; } 1; imvirt-0.9.6/perl/lib/ImVirt/Utils/cpuinfo.pm000066400000000000000000000041311220574025100210600ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::cpuinfo; use strict; use warnings; use Data::Dumper; use ImVirt::Utils::procfs; use constant { CPUINFO_UNKNOWN => 'UNKNOWN', }; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( cpuinfo_get cpuinfo_hasflags CPUINFO_UNKNOWN ); our $VERSION = '0.1'; my %cpuinfo; my $fn = procfs_getmp().'/cpuinfo'; if(open(HCPUINFO, $fn)) { my $proc; while(my $line = ) { chomp($line); if($line =~ /^(\w[^:]+\S)\s+: (.+)$/) { $proc = $2 if($1 eq 'processor'); ${$cpuinfo{$proc}}{$1} = $2; } } close(HCPUINFO); } else { ImVirt::debug(__PACKAGE__, "Cannot open '$fn': $!"); $cpuinfo{0} = { processor => 0, vendor_id => CPUINFO_UNKNOWN, flags => '', model => CPUINFO_UNKNOWN, 'model name' => CPUINFO_UNKNOWN, } } ImVirt::debug(__PACKAGE__, Dumper(\%cpuinfo)); sub cpuinfo_get() { return %cpuinfo; } sub cpuinfo_hasflags(%) { my %regexs = @_; my $pts = 0; foreach my $cpuinfo (keys %cpuinfo) { next unless(exists(${$cpuinfo{$cpuinfo}}{'flags'})); foreach my $regex (keys %regexs) { if(${$cpuinfo{$cpuinfo}}{'flags'} =~ /$regex/) { $pts += $regexs{$regex}; delete($regexs{$regex}); } } } return $pts; } 1; imvirt-0.9.6/perl/lib/ImVirt/Utils/dmesg.pm000066400000000000000000000035601220574025100205210ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::dmesg; use strict; use warnings; use IO::Handle; use File::Slurp; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( dmesg_match ); our $VERSION = '0.1'; my $dmesg = '/bin/dmesg'; my $logfile = '/var/log/dmesg'; sub dmesg_match(%) { return -1 unless (-x $dmesg || -r $logfile); my %regexs = @_; my $pts = 0; my %lines; if(-x $dmesg) { pipe(PARENT_RDR, CHILD_WTR); if(my $pid = fork()) { close(CHILD_WTR); %lines = map { $_, 1 } ; close(PARENT_RDR); } else { die "Cannot fork: $!\n" unless defined($pid); close(PARENT_RDR); open(STDOUT, '>&CHILD_WTR') || die "Could not dup: $!\n"; exec($dmesg); die("Cannot exec $dmesg: $!\n"); } } %lines = (%lines, map { $_, 1 } read_file($logfile)) if(-r $logfile); foreach my $line (keys %lines) { chomp($line); foreach my $regex (keys %regexs) { $pts += $regexs{$regex} if($line =~ /$regex/); } } return $pts; } 1; imvirt-0.9.6/perl/lib/ImVirt/Utils/dmidecode.pm000066400000000000000000000033001220574025100213270ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::dmidecode; use strict; use warnings; use IO::Handle; use ImVirt::Utils::dmidecode::kernel; use ImVirt::Utils::dmidecode::pipe; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( dmidecode_string dmidecode_type ); our $VERSION = '0.2'; my $has_kernel = ImVirt::Utils::dmidecode::kernel::available(); my $has_pipe = ImVirt::Utils::dmidecode::pipe::available(); sub dmidecode_string($) { return ImVirt::Utils::dmidecode::kernel::dmidecode_string(shift) if($has_kernel); return ImVirt::Utils::dmidecode::pipe::dmidecode_string(shift) if($has_pipe); return (); } sub dmidecode_type($) { return ImVirt::Utils::dmidecode::kernel::dmidecode_type(shift) if($has_kernel); return ImVirt::Utils::dmidecode::pipe::dmidecode_type(shift) if($has_pipe); return (); } 1; imvirt-0.9.6/perl/lib/ImVirt/Utils/dmidecode/000077500000000000000000000000001220574025100207755ustar00rootroot00000000000000imvirt-0.9.6/perl/lib/ImVirt/Utils/dmidecode/kernel.pm000066400000000000000000000040731220574025100226170ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::dmidecode::kernel; use strict; use warnings; use IO::Handle; use ImVirt; use ImVirt::Utils::sysfs; require Exporter; our @ISA = qw(Exporter); our $VERSION = '0.1'; my $sysfs_relp = 'class/dmi/id'; my $sysfs_absp = join('/', sysfs_getmp(), $sysfs_relp); sub available() { my $avail = sysfs_isdir('class/dmi/id'); if(defined($avail)) { ImVirt::debug(__PACKAGE__, "sysfs_isdir('class/dmi/id') = $avail"); } else { ImVirt::debug(__PACKAGE__, "sysfs_isdir('class/dmi/id') does not exist"); } return $avail; } sub dmidecode_string($) { my $s = shift; $s =~ s/^system-//; $s =~ s/-/_/g; my $fn = join('/', $sysfs_absp, $s); open(HR, '<', $fn); my @res =


; close(HR); my $res = join(' ', @res); if($res) { ImVirt::debug(__PACKAGE__, "dmidecode_string($s) => $res"); return $res; } return undef; } sub dmidecode_type($) { my @res; shift; foreach my $string (glob join('/', $sysfs_absp, "${_}_*")) { push(@res, dmidecode_string($string)); } my $res = join(' ', @res); if($res) { ImVirt::debug(__PACKAGE__, "dmidecode_type($_) => $res"); return $res; } return undef; } 1; imvirt-0.9.6/perl/lib/ImVirt/Utils/dmidecode/pipe.pm000066400000000000000000000037351220574025100223000ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::dmidecode::pipe; use strict; use warnings; use IO::Handle; use ImVirt; require Exporter; our @ISA = qw(Exporter); our $VERSION = '0.1'; my $dmidecode = '/usr/sbin/dmidecode'; my $devmem = '/dev/mem'; sub available() { my $avail = (-r $devmem && -x $dmidecode); ImVirt::debug(__PACKAGE__, "(-r $devmem && -x $dmidecode) => ".defined($avail)); return $avail; } sub dmidecode_string($) { return dmidecode('-s', shift) } sub dmidecode_type($) { return dmidecode('-t', shift) } sub dmidecode() { return () unless (-r $devmem && -x $dmidecode); pipe(PARENT_RDR, CHILD_WTR); if(my $pid = fork()) { close(CHILD_WTR); my @res = ; close(PARENT_RDR); my $res = join(' ', @res); if($res) { ImVirt::debug(__PACKAGE__, "dmidecode(".join(', ', @_).") => $res"); return $res; } return undef; } else { die "Cannot fork: $!\n" unless defined($pid); close(PARENT_RDR); open(STDOUT, '>&CHILD_WTR') || die "Could not dup: $!\n"; close(STDERR); exec($dmidecode, '-d', $devmem, @_); die("Cannot exec $dmidecode: $!\n"); } } 1; imvirt-0.9.6/perl/lib/ImVirt/Utils/helper.pm000066400000000000000000000026671220574025100207100ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::helper; use strict; use warnings; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( helper ); our $VERSION = '0.1'; my %helpers; foreach my $glob (ImVirt::get_libexecdir().'/*') { foreach my $helper (glob $glob) { if(-x $helper) { my $out; my $hname = $helper; $hname =~ s@^.+/([^/]+)$@$1@; chomp($helpers{$hname} = $out) if(defined($out = scalar ` "$helper"`)); } } } sub helper($) { my $helper = shift; return $helpers{$helper} if (exists($helpers{$helper})); return undef; } 1; imvirt-0.9.6/perl/lib/ImVirt/Utils/jiffies.pm000066400000000000000000000035541220574025100210440ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::jiffies; use strict; use warnings; use File::Slurp; use ImVirt::Utils::procfs; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( jiffies_hz jiffies_sec ); our $VERSION = '0.1'; my @HZ = qw(100 250 300 1000); my $hz = undef; sub jiffies_hz() { return $hz if(defined($hz)); my $uptime = procfs_read('uptime'); my $tlist = procfs_read('timer_list'); unless(defined($uptime) && defined($tlist)) { ImVirt::debug(__PACKAGE__, "could not get timing data from procfs"); return undef; } $uptime =~ s/\s.+$//; $tlist =~ /^jiffies: (\d+)$/m; my $jiffies = $1 % (2**32); $hz = $jiffies / $uptime; ImVirt::debug(__PACKAGE__, "calculated jiffies: $hz"); foreach my $h (@HZ) { if(abs($h - $hz) < $h*0.1) { $hz = $h; ImVirt::debug(__PACKAGE__, "estimated jiffies: $hz"); last; } } return $hz; } sub jiffies_sec($) { jiffies_hz(); return (shift) / $hz if(defined($hz)); return undef; } 1; imvirt-0.9.6/perl/lib/ImVirt/Utils/kmods.pm000066400000000000000000000042301220574025100205320ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::kmods; use strict; use warnings; use Data::Dumper; use ImVirt::Utils::procfs; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( kmods_get kmods_match kmods_match_used ); our $VERSION = '0.1'; my $procdir = procfs_getmp(); my %kmods; if(open(HKMS, "$procdir/modules")) { while() { chomp; if(/^(\S+) (\d+) (\d+) (\S+) (\S+) (0x[a-f\d]+)/) { ${$kmods{$1}}{'size'} = $2; ${$kmods{$1}}{'instances'} = $3; ${$kmods{$1}}{'usedby'} = $4; ${$kmods{$1}}{'state'} = $5; ${$kmods{$1}}{'by'} = $6; } } ImVirt::debug(__PACKAGE__, Dumper(\%kmods)); } else { ImVirt::debug(__PACKAGE__, "failed to open $procdir/modules: $!"); } sub kmods_get() { return %kmods; } sub kmods_match(%) { my %regexs = @_; my $pts = 0; foreach my $kmod (keys %kmods) { foreach my $regex (keys %regexs) { if($kmod =~ /$regex/) { $pts += $regexs{$regex}; delete($regexs{$regex}); } } } return $pts; } sub kmods_match_used(%) { my %regexs = @_; my $pts = 0; foreach my $kmod (keys %kmods) { foreach my $regex (keys %regexs) { if($kmod =~ /$regex/ && ${$kmods{$kmod}}{'instances'} > 0) { $pts += $regexs{$regex}; delete($regexs{$regex}); } } } return $pts; } 1; imvirt-0.9.6/perl/lib/ImVirt/Utils/ksyms.pm000066400000000000000000000043141220574025100205660ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::ksyms; use strict; use warnings; use Data::Dumper; use ImVirt::Utils::procfs; use constant { KSYM_STYPE_ABSOL => 'A', KSYM_STYPE_UDATA => 'B', KSYM_STYPE_COMMON => 'C', KSYM_STYPE_IDATA => 'D', KSYM_STYPE_ISDATA => 'G', KSYM_STYPE_IREF => 'I', KSYM_STYPE_DEBUG => 'N', KSYM_STYPE_RODATA => 'R', KSYM_STYPE_USDATA => 'S', KSYM_STYPE_TEXT => 'T', KSYM_STYPE_UNDEF => 'U', KSYM_STYPE_TWEAK => 'V', KSYM_STYPE_UWEAK => 'W', }; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( ksyms_provides KSYM_STYPE_ABSOL KSYM_STYPE_UDATA KSYM_STYPE_COMMON KSYM_STYPE_IDATA KSYM_STYPE_ISDATA KSYM_STYPE_IREF KSYM_STYPE_DEBUG KSYM_STYPE_RODATA KSYM_STYPE_USDATA KSYM_STYPE_TEXT KSYM_STYPE_UNDEF KSYM_STYPE_TWEAK KSYM_STYPE_UWEAK ); our $VERSION = '0.1'; my $procdir = procfs_getmp(); my %kallsyms; open(HKAS, "$procdir/kallsyms"); while() { chomp; if(/^([a-f\d]+) (\w) (\S+)\s*(\[([^\]]+)\])?/) { ${$kallsyms{$3}}{'value'} = $1; ${$kallsyms{$3}}{'type'} = $2; ${$kallsyms{$3}}{'module'} = $5 if(defined($5)); } } ImVirt::debug(__PACKAGE__, Dumper(\%kallsyms)); sub ksym_provides($$) { my ($type, $name) = @_; return exists($kallsyms{$name}) && (${$kallsyms{$name}}{'type'} eq uc($type)); } 1; imvirt-0.9.6/perl/lib/ImVirt/Utils/pcidevs.pm000066400000000000000000000037061220574025100210610ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::pcidevs; use strict; use warnings; use Data::Dumper; use IO::Handle; use ImVirt::Utils::run; use ImVirt::Utils::procfs; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( pcidevs_get ); our $VERSION = '0.1'; my %pcidevs; if(procfs_isdir('bus/pci')) { pipe(PARENT_RDR, CHILD_WTR); if(my $pid = fork()) { close(CHILD_WTR); foreach my $line () { chomp($line); unless($line =~ /^([\da-f:.]+) "([^"]*)" "([^"]*)" "([^"]*)" ([^"]*) ?"([^"]*)" "([^"]*)"$/) { warn "Unexpected output from lspci: $line\n"; next; } $pcidevs{$1} = { 'addr' => $1, 'type' => $2, 'vendor' => $3, 'device' => $4, 'rev' => $5, }; } close(PARENT_RDR); } else { die "Cannot fork: $!\n" unless defined($pid); close(PARENT_RDR); open(STDOUT, '>&CHILD_WTR') || die "Could not dup: $!\n"; run_exec('lspci', '-m'); exit; } ImVirt::debug(__PACKAGE__, Dumper(\%pcidevs)); } else { ImVirt::debug(__PACKAGE__, "procfs does not contain a bus/pci directory"); } sub pcidevs_get() { return %pcidevs; } 1; imvirt-0.9.6/perl/lib/ImVirt/Utils/procfs.pm000066400000000000000000000032541220574025100207160ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2013 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::procfs; use strict; use warnings; use File::Slurp; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( procfs_getmp procfs_isdir procfs_isfile procfs_read procfs_starttime ); our $VERSION = '0.2'; my $procdir = '/proc'; sub procfs_getmp() { return $procdir; } sub procfs_isdir($) { return -d join('/', procfs_getmp(), shift); } sub procfs_isfile($) { return -f join('/', procfs_getmp(), shift); } sub procfs_read($) { my $fn = join('/', procfs_getmp(), shift); if(-r $fn) { my $f = read_file($fn); chomp($f); return $f; } return undef; } sub procfs_starttime($) { my $fn = join('/', procfs_getmp(), shift, 'stat'); if(-r $fn) { my @f = split(/\s/, read_file($fn)); return $f[21]; } return undef; } 1; imvirt-0.9.6/perl/lib/ImVirt/Utils/run.pm000066400000000000000000000024311220574025100202220ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::run; use strict; use warnings; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( run_exec ); our $VERSION = '0.1'; eval 'use File::Which;'; my $nowhich = $@; sub run_exec(@) { my $cmd = shift; my $run = ($nowhich ne '' ? $cmd : which($cmd)); if(defined($run)) { exec($run, @_); } else { ImVirt::debug(__PACKAGE__, "binary $cmd not found"); } } 1; imvirt-0.9.6/perl/lib/ImVirt/Utils/sysfs.pm000066400000000000000000000027301220574025100205670ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2013 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::sysfs; use strict; use warnings; use File::Slurp; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( sysfs_getmp sysfs_isdir sysfs_isfile sysfs_read ); our $VERSION = '0.2'; my $sysfsdir = '/sys'; sub sysfs_getmp() { return $sysfsdir; } sub sysfs_isdir($) { return -d join('/', sysfs_getmp(), shift); } sub sysfs_isfile($) { return -f join('/', sysfs_getmp(), shift); } sub sysfs_read($) { my $fn = join('/', sysfs_getmp(), shift); if(-r $fn) { my $f = read_file($fn); chomp($f); return $f; } return undef; } 1; imvirt-0.9.6/perl/lib/ImVirt/Utils/uname.pm000066400000000000000000000025261220574025100205300ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::Utils::uname; use strict; use warnings; use Data::Dumper; use POSIX; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw( posix_uname ); our $VERSION = '0.1'; my @uname = POSIX::uname(); my %uname = ( sysname => shift(@uname), nodename => shift(@uname), release => shift(@uname), version => shift(@uname), machine => shift(@uname), ); ImVirt::debug(__PACKAGE__, Dumper(\%uname)); sub posix_uname() { return %uname; } 1; imvirt-0.9.6/perl/lib/ImVirt/VMD/000077500000000000000000000000001220574025100164065ustar00rootroot00000000000000imvirt-0.9.6/perl/lib/ImVirt/VMD/ARAnyM.pm000066400000000000000000000036211220574025100200350ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::VMD::ARAnyM; use strict; use warnings; use constant PRODUCT => '|ARAnyM'; use ImVirt; use ImVirt::Utils::dmesg; use ImVirt::Utils::uname; use ImVirt::Utils::sysfs; ImVirt::register_vmd(__PACKAGE__); sub detect($) { ImVirt::debug(__PACKAGE__, 'detect()'); my $dref = shift; # Check machine type my %uname = posix_uname(); if(exists($uname{machine}) && $uname{machine} ne 'm68k') { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); return; } # Look for a dmesg line if(defined(my $m = dmesg_match( 'NatFeats found \(ARAnyM,' => IMV_PTS_MAJOR, ))) { ImVirt::inc_pts($dref, $m, IMV_VIRTUAL, PRODUCT) if($m > 0); } # Clocksource should be jiffies if(defined(my $cs = sysfs_read('devices/system/clocksource/clocksource0/available_clocksource'))) { if($cs eq 'jiffies') { ImVirt::inc_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, PRODUCT); } } } sub pres() { return (PRODUCT); } 1; imvirt-0.9.6/perl/lib/ImVirt/VMD/Generic.pm000066400000000000000000000041231220574025100203200ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::VMD::Generic; use strict; use warnings; use ImVirt; use ImVirt::Utils::helper; use ImVirt::Utils::cpuinfo; use ImVirt::Utils::dmesg; use ImVirt::Utils::procfs; ImVirt::register_vmd(__PACKAGE__); sub detect($) { ImVirt::debug(__PACKAGE__, 'detect()'); my $dref = shift; # Is hardware virtualization available? if(defined(my $f = cpuinfo_hasflags( 'vmx' => IMV_PTS_MINOR, 'svm' => IMV_PTS_MINOR, ))) { ImVirt::inc_pts($dref, $f, IMV_PHYSICAL) if($f > 0); } # Does the kernel provide /dev/kvm? ImVirt::inc_pts($dref, IMV_PTS_MINOR, IMV_PHYSICAL) if(-c '/dev/kvm'); # Does the kernel reports a hypervisor? if(defined(my $f = cpuinfo_hasflags( 'hypervisor' => IMV_PTS_DRASTIC, ))) { ImVirt::inc_pts($dref, $f, IMV_VIRTUAL) if($f > 0); } # Check helper output for hypervisor detection if(my $hlp = helper('hvm')) { ImVirt::inc_pts($dref, IMV_PTS_NORMAL, IMV_VIRTUAL); } # Look for dmesg lines if(defined(my $m = dmesg_match( 'Booting paravirtualized kernel on bare hardware' => IMV_PTS_NORMAL, ))) { if($m > 0) { ImVirt::inc_pts($dref, $m, IMV_VIRTUAL); } } } sub pres() { return (IMV_PHYSICAL, IMV_VIRTUAL); } 1; imvirt-0.9.6/perl/lib/ImVirt/VMD/KVM.pm000066400000000000000000000072661220574025100174140ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::VMD::KVM; use strict; use warnings; use constant PRODUCT => '|KVM'; use ImVirt; use ImVirt::Utils::cpuinfo; use ImVirt::Utils::dmesg; use ImVirt::Utils::kmods; use ImVirt::Utils::pcidevs; use ImVirt::Utils::dmidecode; use ImVirt::Utils::dmesg; use ImVirt::Utils::sysfs; use ImVirt::Utils::procfs; use ImVirt::Utils::helper; use ImVirt::Utils::kmods; ImVirt::register_vmd(__PACKAGE__); sub detect($) { ImVirt::debug(__PACKAGE__, 'detect()'); my $dref = shift; # Check dmidecode if(defined(my $spn = dmidecode_string('system-product-name'))) { if ($spn =~ /^(KVM|Bochs)/) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } if(defined(my $spn = dmidecode_string('bios-vendor'))) { if ($spn =~ /^(QEMU|Bochs)/) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } # Look for dmesg lines if(defined(my $m = dmesg_match( ' QEMUAPIC ' => IMV_PTS_NORMAL, 'QEMU Virtual CPU' => IMV_PTS_NORMAL, 'Booting paravirtualized kernel on KVM' => IMV_PTS_MAJOR, 'kvm-clock' => IMV_PTS_MAJOR, ))) { if($m > 0) { ImVirt::inc_pts($dref, $m, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } # Look for clock source if(defined(my $cs = sysfs_read('devices/system/clocksource/clocksource0/available_clocksource'))) { if($cs =~ /kvm/) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } # Check /proc/cpuinfo my %cpuinfo = cpuinfo_get(); foreach my $cpu (keys %cpuinfo) { if(exists(${$cpuinfo{$cpu}}{'model name'}) && ${$cpuinfo{$cpu}}{'model name'} =~ /QEMU Virtual CPU/) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } # Check /proc/bus/pci/devices my %pcidevs = pcidevs_get(); foreach my $addr (keys %pcidevs) { if(${$pcidevs{$addr}}{'device'} =~ /Qumranet, Inc\. Virtio/) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } # Check helper output for hypervisor detection if(my $hvm = helper('hvm')) { if($hvm =~ /KVM/) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } # Look for virtio modules my $p = kmods_match_used( '^virtio(_(blk|pci|net|ballon|ring))?$' => IMV_PTS_MINOR, ); if($p > 0) { ImVirt::inc_pts($dref, $p, IMV_VIRTUAL, PRODUCT); } } sub pres() { return (PRODUCT); } 1; imvirt-0.9.6/perl/lib/ImVirt/VMD/LXC.pm000066400000000000000000000041461220574025100173770ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::VMD::LXC; use strict; use warnings; use constant PRODUCT => '|LXC'; use ImVirt; use ImVirt::Utils::procfs; use ImVirt::Utils::jiffies; ImVirt::register_vmd(__PACKAGE__); sub detect($) { ImVirt::debug(__PACKAGE__, 'detect()'); my $dref = shift; # Check init's control group data if(defined(my $cg = procfs_read('1/cgroup'))) { if($cg =~ /^\d+:[^:]+:\/.+$/) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, PRODUCT); } } # Check init's environment for LXC if(defined(my $env = procfs_read('1/environ'))) { if($env =~ /lxc/i) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, PRODUCT); } } # Check init's starttime for LXC if(defined(my $st = procfs_starttime(1))) { my $sec = jiffies_sec($st); if(defined($sec)) { if($sec >= 5) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, PRODUCT); } } } } sub pres() { return (PRODUCT); } 1; imvirt-0.9.6/perl/lib/ImVirt/VMD/Microsoft.pm000066400000000000000000000061711220574025100207160ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::VMD::Microsoft; use strict; use warnings; use constant PRODUCT => '|Microsoft'; use constant HYPERV => 'Hyper-V'; use constant VIRTUALPC => 'VirtualPC'; use ImVirt; use ImVirt::Utils::blkdev; use ImVirt::Utils::dmidecode; use ImVirt::Utils::dmesg; use ImVirt::Utils::helper; use ImVirt::Utils::pcidevs; use ImVirt::Utils::procfs; use ImVirt::Utils::kmods; ImVirt::register_vmd(__PACKAGE__); sub detect($) { ImVirt::debug(__PACKAGE__, 'detect()'); my $dref = shift; if(defined(my $spn = dmidecode_string('system-product-name'))) { if ($spn =~ /^Virtual Machine/) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } my $p = blkdev_match( 'Virtual HD' => IMV_PTS_NORMAL, 'Virtual CD' => IMV_PTS_NORMAL, ); if($p > 0) { ImVirt::inc_pts($dref, $p, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_NORMAL, IMV_VIRTUAL, PRODUCT); } # Check helper output if(my $hlp = helper('hyperv')) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } # Check /proc/bus/pci/devices my %pcidevs = pcidevs_get(); foreach my $addr (keys %pcidevs) { if( ${$pcidevs{$addr}}{'device'} eq 'Hyper-V virtual VGA' && ${$pcidevs{$addr}}{'vendor'} eq 'Microsoft Corporation' ) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT, HYPERV); } elsif(${$pcidevs{$addr}}{'device'} eq 'DECchip 21140 [FasterNet]') { ImVirt::inc_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, PRODUCT); } elsif( ${$pcidevs{$addr}}{'type'} eq 'Multimedia audio controller' && ${$pcidevs{$addr}}{'vendor'} eq 'Microsoft Corporation' && ${$pcidevs{$addr}}{'device'} eq 'Device 0007' ) { ImVirt::inc_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, PRODUCT, VIRTUALPC); } } # Check /proc/irq/7/hyperv ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT, HYPERV) if(procfs_isdir('irq/7/hyperv')); # Look for Hyper-V modules $p = kmods_match_used( '^hv_(vmbus|storvsc|netvsc|utils)$' => IMV_PTS_NORMAL, ); if($p > 0) { ImVirt::inc_pts($dref, $p, IMV_VIRTUAL, PRODUCT); } } sub pres() { return ( PRODUCT, PRODUCT.' '.HYPERV, PRODUCT.' '.VIRTUALPC ); } 1; imvirt-0.9.6/perl/lib/ImVirt/VMD/OpenVZ.pm000066400000000000000000000031571220574025100201330ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::VMD::OpenVZ; use strict; use warnings; use constant PRODUCT => '|OpenVZ'; use ImVirt; use ImVirt::Utils::procfs; ImVirt::register_vmd(__PACKAGE__); sub detect($) { ImVirt::debug(__PACKAGE__, 'detect()'); my $dref = shift; foreach my $fn (qw(time_list bus/pci/devices bus/input/devices)) { if(procfs_isfile('time_list')) { ImVirt::dec_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, PRODUCT); } else { ImVirt::inc_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, PRODUCT); } } if(procfs_isdir('vz') && !procfs_isdir('bc')) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_NORMAL, IMV_VIRTUAL, PRODUCT); } } sub pres() { return (PRODUCT); } 1; imvirt-0.9.6/perl/lib/ImVirt/VMD/Parallels.pm000066400000000000000000000073261220574025100206730ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::VMD::Parallels; use strict; use warnings; use constant PRODUCT => '|Parallels'; use ImVirt; use ImVirt::Utils::cpuinfo; use ImVirt::Utils::dmesg; use ImVirt::Utils::kmods; use ImVirt::Utils::pcidevs; use ImVirt::Utils::dmidecode; use ImVirt::Utils::dmesg; use ImVirt::Utils::sysfs; use ImVirt::Utils::procfs; use ImVirt::Utils::helper; use ImVirt::Utils::kmods; ImVirt::register_vmd(__PACKAGE__); sub detect($) { ImVirt::debug(__PACKAGE__, 'detect()'); my $dref = shift; # Check dmidecode if(defined(my $spn = dmidecode_string('system-product-name'))) { if ($spn =~ /^Parallels Virtual Platform/) { ImVirt::inc_pts($dref, IMV_PTS_DRASTIC, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_DRASTIC, IMV_VIRTUAL, PRODUCT); } } if(defined(my $spn = dmidecode_string('bios-vendor'))) { if ($spn =~ /^Parallels Software International Inc\./) { ImVirt::inc_pts($dref, IMV_PTS_DRASTIC, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_DRASTIC, IMV_VIRTUAL, PRODUCT); } } # Look for dmesg lines if(defined(my $m = dmesg_match( 'Booting paravirtualized kernel on KVM' => IMV_PTS_NORMAL, 'kvm-clock' => IMV_PTS_NORMAL, 'DMI: Parallels Software International Inc.' => IMV_PTS_DRASTIC, 'intel8x0: enable Parallels VM optimization' => IMV_PTS_DRASTIC, ))) { if($m > 0) { ImVirt::inc_pts($dref, $m, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } # Look for clock source if(defined(my $cs = sysfs_read('devices/system/clocksource/clocksource0/available_clocksource'))) { if($cs =~ /kvm/) { ImVirt::inc_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, PRODUCT); } } # Check /proc/bus/pci/devices my %pcidevs = pcidevs_get(); foreach my $addr (keys %pcidevs) { if(${$pcidevs{$addr}}{'device'} =~ /Parallels, Inc\. /) { ImVirt::inc_pts($dref, IMV_PTS_DRASTIC, IMV_VIRTUAL, PRODUCT); } } # Check helper output for hypervisor detection if(my $hvm = helper('hvm')) { if($hvm =~ /KVM/) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } # Look for virtio modules my $p = kmods_match_used( '^virtio(_(blk|pci|net|ballon|ring))?$' => IMV_PTS_MINOR, ); if($p > 0) { ImVirt::inc_pts($dref, $p, IMV_VIRTUAL, PRODUCT); } # Look for e1000, snd_intel8x0 $p = kmods_match_used( '^(e1000|snd_intel8x0)?$' => IMV_PTS_MINOR, ); if($p > 0) { ImVirt::inc_pts($dref, $p, IMV_VIRTUAL, PRODUCT); } } sub pres() { return (PRODUCT); } 1; imvirt-0.9.6/perl/lib/ImVirt/VMD/PillBox.pm000066400000000000000000000051771220574025100203270ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::VMD::PillBox; use strict; use warnings; use ImVirt; use ImVirt::Utils::helper; ImVirt::register_vmd(__PACKAGE__); # # The detection heuristic is based on: # # [1] "Red Pill... or how to detect VMM using (almost) one CPU instruction" # Joanna Rutkowska # http://invisiblethings.org/papers/redpill.html # # [2] "Detecting the Presence of Virtual Machines Using the Local Data Table" # Danny Quist, Val Smith # http://www.offensivecomputing.net/files/active/0/vm.pdf # # [3] "Methods for Virtual Machine Detection" # Alfredo Andrés Omella # http://www.s21sec.com/descargas/vmware-eng.pdf # # [4] "ScoopyNG - The VMware detection tool" # Tobias Klein # http://www.trapkit.de/research/vmm/scoopyng/index.html sub detect($) { ImVirt::debug(__PACKAGE__, 'detect()'); my $dref = shift; if (my $pb = helper('pillbox')) { my %pb = split(/,/, $pb); # pillbox was bound to one cpu - if we got different # IDTR/GDTR values, we are virtualized (so the HVM # did schedule us on a different physical cpus) or # our cpu has been taken offline. ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL) if (exists($pb{'idt2'}) || exists($pb{'gdt2'})); ImVirt::inc_pts($dref, IMV_PTS_NORMAL, IMV_VIRTUAL) if ((($pb{'idt'} & 0xffff) > 0xd000) && (($pb{'gdt'} & 0xffff) > 0xd000)); # [1] ImVirt::inc_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL) if ($pb{'ldt'} > 0); # [2] ImVirt::inc_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, '|VMware') if ($pb{'tr'} == 0x4000); # [3] ImVirt::inc_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, '|VMware') if ($pb{'idt'} >> 24 == 0xff); # [4] ImVirt::inc_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, '|VMware') if ($pb{'gdt'} >> 24 == 0xff); # [4] } } sub pres() { return ('|VMware'); } 1; imvirt-0.9.6/perl/lib/ImVirt/VMD/QEMU.pm000066400000000000000000000043551220574025100175220ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::VMD::QEMU; use strict; use warnings; use constant PRODUCT => '|QEMU'; use ImVirt; use ImVirt::Utils::blkdev; use ImVirt::Utils::dmidecode; use ImVirt::Utils::dmesg; use ImVirt::Utils::helper; ImVirt::register_vmd(__PACKAGE__); sub detect($) { ImVirt::debug(__PACKAGE__, 'detect()'); my $dref = shift; if(defined(my $spn = dmidecode_string('bios-vendor'))) { if ($spn =~ /^QEMU/) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } # Look for dmesg lines if(defined(my $m = dmesg_match( ' QEMUAPIC ' => IMV_PTS_NORMAL, 'QEMU Virtual CPU' => IMV_PTS_NORMAL, ))) { if($m > 0) { ImVirt::inc_pts($dref, $m, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } my $p = blkdev_match( 'QEMU HARDDISK,' => IMV_PTS_NORMAL, 'QEMU CD-ROM,' => IMV_PTS_NORMAL, ); if($p > 0) { ImVirt::inc_pts($dref, $p, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } # KVM? # Check helper output for hypervisor detection if(my $hvm = helper('hvm')) { if($hvm =~ /KVM/) { ImVirt::dec_pts($dref, IMV_PTS_DRASTIC, IMV_VIRTUAL, PRODUCT); } } } sub pres() { return (PRODUCT); } 1; imvirt-0.9.6/perl/lib/ImVirt/VMD/UML.pm000066400000000000000000000041731220574025100174060ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::VMD::UML; use strict; use warnings; use constant PRODUCT => '|UML'; use ImVirt; use ImVirt::Utils::cpuinfo; use ImVirt::Utils::dmesg; ImVirt::register_vmd(__PACKAGE__); sub detect($) { ImVirt::debug(__PACKAGE__, 'detect()'); my $dref = shift; # Check /proc/cpuinfo my %cpuinfo = cpuinfo_get(); foreach my $cpu (keys %cpuinfo) { if(exists(${$cpuinfo{$cpu}}{'vendor_id'}) && ${$cpuinfo{$cpu}}{'vendor_id'} eq 'User Mode Linux') { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } if(exists(${$cpuinfo{$cpu}}{'model name'}) && ${$cpuinfo{$cpu}}{'model name'} eq 'UML') { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } if(exists(${$cpuinfo{$cpu}}{'model'}) && ${$cpuinfo{$cpu}}{'model'} eq 'skas') { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } if(exists(${$cpuinfo{$cpu}}{'host'})) { ImVirt::inc_pts($dref, IMV_PTS_NORMAL, IMV_VIRTUAL, PRODUCT); } } # Look for dmesg lines if(defined(my $m = dmesg_match('UML Watchdog Timer' => IMV_PTS_NORMAL))) { if($m > 0) { ImVirt::inc_pts($dref, $m, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MINOR, IMV_VIRTUAL, PRODUCT); } } } sub pres() { return (PRODUCT); } 1; imvirt-0.9.6/perl/lib/ImVirt/VMD/VMware.pm000066400000000000000000000061741220574025100201550ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::VMD::VMware; use strict; use warnings; use constant PRODUCT => '|VMware'; use ImVirt; use ImVirt::Utils::blkdev; use ImVirt::Utils::helper; use ImVirt::Utils::dmesg; use ImVirt::Utils::dmidecode; use ImVirt::Utils::kmods; ImVirt::register_vmd(__PACKAGE__); sub detect($) { ImVirt::debug(__PACKAGE__, 'detect()'); my $dref = shift; if(defined(my $spn = dmidecode_string('system-product-name'))) { if ($spn =~ /^VMware/) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } # Look for dmesg lines if(defined(my $m = dmesg_match( 'Hypervisor detected: VMware' => IMV_PTS_MAJOR, 'Booting paravirtualized kernel on vmi' => IMV_PTS_MAJOR, 'VMware vmxnet virtual NIC driver' => IMV_PTS_NORMAL, ))) { if($m > 0) { ImVirt::inc_pts($dref, $m, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } # Look for block device names my $p = blkdev_match( 'Vendor: VMware\s+Model: Virtual disk' => IMV_PTS_NORMAL, 'Vendor: VMware,\s+Model: VMware Virtual ' => IMV_PTS_NORMAL, 'VMware Virtual IDE CDROM Drive' => IMV_PTS_NORMAL, ); if($p > 0) { ImVirt::inc_pts($dref, $p, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } # Look for loaded modules $p = kmods_match( '^vmblock$' => IMV_PTS_NORMAL, '^vmhgfs$' => IMV_PTS_NORMAL, '^vmmemctl$' => IMV_PTS_NORMAL, '^vmxnet$' => IMV_PTS_NORMAL, '^vmxnet3$' => IMV_PTS_NORMAL, '^vmblock$' => IMV_PTS_NORMAL, '^vmsync$' => IMV_PTS_NORMAL, '^vmci$' => IMV_PTS_NORMAL, '^vsock$' => IMV_PTS_NORMAL, '^vmw_balloon$' => IMV_PTS_NORMAL, '^pcnet32$' => IMV_PTS_MINOR, ); if($p > 0) { ImVirt::inc_pts($dref, $p, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } # Check helper output if(my $hlp = helper('vmware')) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT, split(/\s+/, $hlp)); } } sub pres() { my @prods = ( PRODUCT, PRODUCT.' Express', PRODUCT.' ESX Server', PRODUCT.' GSX Server', PRODUCT.' Workstation', ); return @prods; } 1; imvirt-0.9.6/perl/lib/ImVirt/VMD/VirtualBox.pm000066400000000000000000000034341220574025100210470ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::VMD::VirtualBox; use strict; use warnings; use constant PRODUCT => '|VirtualBox'; use ImVirt; use ImVirt::Utils::blkdev; use ImVirt::Utils::dmesg; ImVirt::register_vmd(__PACKAGE__); sub detect($) { ImVirt::debug(__PACKAGE__, 'detect()'); my $dref = shift; # Look for dmesg lines if(defined(my $m = dmesg_match( ' VBOXBIOS ' => IMV_PTS_NORMAL, ': VBOX HARDDISK,' => IMV_PTS_NORMAL, ': VBOX CD-ROM,' => IMV_PTS_NORMAL, ))) { if($m > 0) { ImVirt::inc_pts($dref, $m, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } my $p = blkdev_match( 'VBOX HARDDISK' => IMV_PTS_NORMAL, 'VBOX CD-ROM' => IMV_PTS_NORMAL, ); if($p > 0) { ImVirt::inc_pts($dref, $p, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } sub pres() { return (PRODUCT); } 1; imvirt-0.9.6/perl/lib/ImVirt/VMD/Xen.pm000066400000000000000000000073431220574025100175050ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2009 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::VMD::Xen; use strict; use warnings; use constant PRODUCT => '|Xen'; use ImVirt; use ImVirt::Utils::dmidecode; use ImVirt::Utils::dmesg; use ImVirt::Utils::helper; use ImVirt::Utils::procfs; use ImVirt::Utils::sysfs; ImVirt::register_vmd(__PACKAGE__); sub detect($) { ImVirt::debug(__PACKAGE__, 'detect()'); my $dref = shift; # Check dmidecode if(defined(my $spn = dmidecode_string('bios-vendor'))) { if ($spn =~ /^Xen/) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } } # Look for paravirutalized oldstyle Xen if(procfs_isdir('xen')) { ImVirt::inc_pts($dref, IMV_PTS_NORMAL, IMV_VIRTUAL, PRODUCT, 'PV'); } # Look for paravirutalized newstyle Xen elsif(defined(my $cs = sysfs_read('devices/system/clocksource/clocksource0/available_clocksource'))) { if($cs =~ /xen/) { ImVirt::inc_pts($dref, IMV_PTS_NORMAL, IMV_VIRTUAL, PRODUCT, 'PV'); } else { ImVirt::dec_pts($dref, IMV_PTS_NORMAL, IMV_VIRTUAL, PRODUCT, 'PV'); } } # Look for dmesg lines if(defined(my $m = dmesg_match( 'Hypervisor signature: xen' => IMV_PTS_NORMAL, 'Xen virtual console successfully installed' => IMV_PTS_NORMAL, 'Xen reported:' => IMV_PTS_NORMAL, 'Xen: \d+ - \d+' => IMV_PTS_NORMAL, 'xen-vbd: registered block device' => IMV_PTS_NORMAL, 'ACPI: RSDP \(v\d+\s+Xen ' => IMV_PTS_NORMAL, 'ACPI: XSDT \(v\d+\s+Xen ' => IMV_PTS_NORMAL, 'ACPI: FADT \(v\d+\s+Xen ' => IMV_PTS_NORMAL, 'ACPI: MADT \(v\d+\s+Xen ' => IMV_PTS_NORMAL, 'ACPI: HPET \(v\d+\s+Xen ' => IMV_PTS_NORMAL, 'ACPI: SSDT \(v\d+\s+Xen ' => IMV_PTS_NORMAL, 'ACPI: DSDT \(v\d+\s+Xen ' => IMV_PTS_NORMAL, ))) { if($m > 0) { ImVirt::inc_pts($dref, $m, IMV_VIRTUAL, PRODUCT); } else { ImVirt::dec_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT); } # Paravirtualized? if(defined(my $m = dmesg_match( 'Booting paravirtualized kernel on Xen' => IMV_PTS_MAJOR, ))) { if($m > 0) { ImVirt::inc_pts($dref, $m, IMV_VIRTUAL, PRODUCT, 'PV'); } else { ImVirt::dec_pts($dref, IMV_PTS_NORMAL, IMV_VIRTUAL, PRODUCT, 'PV'); } } } # Xen PV does not have ide/scsi drives if(procfs_isdir('ide') || procfs_isdir('scsi')) { ImVirt::dec_pts($dref, IMV_PTS_NORMAL, IMV_VIRTUAL, PRODUCT, 'PV'); } else { ImVirt::dec_pts($dref, IMV_PTS_NORMAL, IMV_VIRTUAL, PRODUCT, 'HVM'); } # Check helper output if(my $hlp = helper('xen')) { ImVirt::inc_pts($dref, IMV_PTS_MAJOR, IMV_VIRTUAL, PRODUCT, split(/\s+/, $hlp)); } # Check /sys/hypervisor/type if(defined(my $hv = sysfs_read('hypervisor/type'))) { ImVirt::inc_pts($dref, IMV_PTS_NORMAL, IMV_VIRTUAL, PRODUCT) if($hv =~ /xen/i); } } sub pres() { my @prods = ( PRODUCT, PRODUCT.' PV', PRODUCT.' HVM', ); return @prods; } 1; imvirt-0.9.6/perl/lib/ImVirt/VMD/lguest.pm000066400000000000000000000031401220574025100202450ustar00rootroot00000000000000# ImVirt - I'm virtualized? # # Authors: # Thomas Liske # # Copyright Holder: # 2011 - 2012 (C) IBH IT-Service GmbH [http://www.ibh.de/] # # License: # 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 2 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 package; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # package ImVirt::VMD::lguest; use strict; use warnings; use constant PRODUCT => '|lguest'; use ImVirt; use ImVirt::Utils::kmods; use ImVirt::Utils::dmesg; ImVirt::register_vmd(__PACKAGE__); sub detect($) { ImVirt::debug(__PACKAGE__, 'detect()'); my $dref = shift; # Look for a dmesg paravirtualization line if(defined(my $m = dmesg_match( 'Booting paravirtualized kernel on lguest' => IMV_PTS_MAJOR, ))) { ImVirt::inc_pts($dref, $m, IMV_VIRTUAL, PRODUCT) if($m > 0); } # Look for virtio modules my $p = kmods_match_used( '^virtio_(blk|pci|net|ballon)$' => IMV_PTS_MINOR, ); if($p > 0) { ImVirt::inc_pts($dref, $p, IMV_VIRTUAL, PRODUCT); } } sub pres() { return (PRODUCT); } 1;