Bio-SamTools-1.43000755001751001751 012657431424 13702 5ustar00lsteinlstein000000000000Bio-SamTools-1.43/META.json000444001751001751 472212657431424 15465 0ustar00lsteinlstein000000000000{ "abstract" : "Perl interface to SamTools library for DNA sequencing", "author" : [ "Lincoln Stein " ], "dynamic_config" : 1, "generated_by" : "Module::Build version 0.4211", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : "2" }, "name" : "Bio-SamTools", "prereqs" : { "build" : { "requires" : { "ExtUtils::CBuilder" : "0" } }, "configure" : { "requires" : { "Module::Build" : "0.42" } }, "runtime" : { "requires" : { "Bio::Root::Version" : "1.006009001", "perl" : "5.008" } } }, "provides" : { "Bio::DB::Bam" : { "file" : "lib/Bio/DB/Sam.pm" }, "Bio::DB::Bam::AlignWrapper" : { "file" : "lib/Bio/DB/Bam/AlignWrapper.pm" }, "Bio::DB::Bam::Alignment" : { "file" : "lib/Bio/DB/Bam/Alignment.pm" }, "Bio::DB::Bam::FetchIterator" : { "file" : "lib/Bio/DB/Bam/FetchIterator.pm" }, "Bio::DB::Bam::Pileup" : { "file" : "lib/Bio/DB/Bam/Pileup.pm" }, "Bio::DB::Bam::PileupWrapper" : { "file" : "lib/Bio/DB/Bam/PileupWrapper.pm" }, "Bio::DB::Bam::Query" : { "file" : "lib/Bio/DB/Bam/Query.pm" }, "Bio::DB::Bam::ReadIterator" : { "file" : "lib/Bio/DB/Bam/ReadIterator.pm" }, "Bio::DB::Bam::SplitAlignmentPart" : { "file" : "lib/Bio/DB/Bam/AlignWrapper.pm" }, "Bio::DB::Bam::Target" : { "file" : "lib/Bio/DB/Bam/Target.pm" }, "Bio::DB::Sam" : { "file" : "lib/Bio/DB/Sam.pm", "version" : "1.43" }, "Bio::DB::Sam::Constants" : { "file" : "lib/Bio/DB/Sam/Constants.pm" }, "Bio::DB::Sam::Fai" : { "file" : "lib/Bio/DB/Sam.pm" }, "Bio::DB::Sam::SamToGBrowse" : { "file" : "lib/Bio/DB/Sam/SamToGBrowse.pm" }, "Bio::DB::Sam::Segment" : { "file" : "lib/Bio/DB/Sam/Segment.pm" }, "Bio::DB::Sam::Segment::Iterator" : { "file" : "lib/Bio/DB/Sam/Segment.pm" }, "Bio::SeqFeature::Coverage" : { "file" : "lib/Bio/DB/Sam.pm" } }, "release_status" : "stable", "resources" : { "license" : [ "http://dev.perl.org/licenses/" ] }, "version" : "1.43" } Bio-SamTools-1.43/DISCLAIMER000444001751001751 220412657431424 15374 0ustar00lsteinlstein000000000000The Bio::SamTools package and all associated files are Copyright (c) 2009 Ontario Institute for Cancer Research (OICR). This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See the Artistic License file in the main Perl distribution for specific terms and conditions of use. In addition, the following disclaimers apply: OICR makes no representations whatsoever as to the SOFTWARE contained herein. It is experimental in nature and is provided WITHOUT WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR ANY OTHER WARRANTY, EXPRESS OR IMPLIED. OICR MAKES NO REPRESENTATION OR WARRANTY THAT THE USE OF THIS SOFTWARE WILL NOT INFRINGE ANY PATENT OR OTHER PROPRIETARY RIGHT. By downloading this SOFTWARE, your Institution hereby indemnifies OICR against any loss, claim, damage or liability, of whatsoever kind or nature, which may arise from your Institution's respective use, handling or storage of the SOFTWARE. If publications result from research using this SOFTWARE, we ask that OICR be acknowledged and/or credit be given to OICR scientists, as scientifically appropriate. Bio-SamTools-1.43/README000444001751001751 533412657431424 14724 0ustar00lsteinlstein000000000000This is a Perl interface to the SAMtools sequence alignment interface. It ONLY works on versions of Samtools up to 0.1.17. It does not work on version 1.0 or higher due to major changes in the library structure. See http://samtools.sourceforge.net/ for samtools documentation. * ONE-STEP INSTALLATION In the root directory of this distribution you will find the script INSTALL.pl. Running this will download the latest versions of this module and SamTools into a temporary directory, compile them, test and install. Simply run: perl INSTALL.pl * MULTI-STEP INSTALLATION The more traditional install requires you to separately download, unpack and compile SAMtools 0.1.10 through 0.1.17 in some accessible directory. Typing "make" in the samtools directory will usually work. SAMtools versions 0.1.18 and higher do not work with this library. Then set the environment variable SAMTOOLS to point to this directory. You will also need to install Bio::Perl from CPAN. Now run: perl Build.PL ./Build ./Build test (sudo) ./Build install TROUBLESHOOTING: If you encounter problems during compiling, you may need to edit Build.PL so that extra_compiler_flags matches the CFLAGS and DFLAGS settings in the Samtools Makefile. Here are some common problems: 1. When building this module, you get an error like the following: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC To fix this, edit the Makefile in the Samtools distribution by adding "-fPIC" to the CFLAGS line. While you're at it, you may also wish to get rid of a bunch of unused variable warnings that appears under recent versions of gcc. The modified CFLAGS will look like this CFLAGS= -g -Wall -Wno-unused -Wno-unused-result -O2 -fPIC #-m64 #-arch ppc Then do "make clean; make" in the Samtools directory to recompile the library. After this you should be able to build this module without errors. 2. When building this module, you get an error about a missing math library. To fix this, follow the recipe in (1) except add -m64 to CFLAGS so it looks like this: CFLAGS= -g -Wall -O2 -fPIC #-m64 #-arch ppc TESTING AND CONTRIBUTING: You can obtain the most recent development version of this module via its GitHub site at https://github.com/GMOD/GBrowse-Adaptors. Please feel free to submit bug reports, patches, etc. via GitHub. AUTHOR: Lincoln D. Stein Copyright (c) 2009-2015 Ontario Institute for Cancer Research This package and its accompanying libraries are free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0, the Apache 2.0 License, or the GNU General Public License (version 1 or higher). Refer to LICENSE for the full license text. Bio-SamTools-1.43/META.yml000444001751001751 320012657431424 15303 0ustar00lsteinlstein000000000000--- abstract: 'Perl interface to SamTools library for DNA sequencing' author: - 'Lincoln Stein ' build_requires: ExtUtils::CBuilder: '0' configure_requires: Module::Build: '0.42' dynamic_config: 1 generated_by: 'Module::Build version 0.4211, CPAN::Meta::Converter version 2.143240' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: Bio-SamTools provides: Bio::DB::Bam: file: lib/Bio/DB/Sam.pm Bio::DB::Bam::AlignWrapper: file: lib/Bio/DB/Bam/AlignWrapper.pm Bio::DB::Bam::Alignment: file: lib/Bio/DB/Bam/Alignment.pm Bio::DB::Bam::FetchIterator: file: lib/Bio/DB/Bam/FetchIterator.pm Bio::DB::Bam::Pileup: file: lib/Bio/DB/Bam/Pileup.pm Bio::DB::Bam::PileupWrapper: file: lib/Bio/DB/Bam/PileupWrapper.pm Bio::DB::Bam::Query: file: lib/Bio/DB/Bam/Query.pm Bio::DB::Bam::ReadIterator: file: lib/Bio/DB/Bam/ReadIterator.pm Bio::DB::Bam::SplitAlignmentPart: file: lib/Bio/DB/Bam/AlignWrapper.pm Bio::DB::Bam::Target: file: lib/Bio/DB/Bam/Target.pm Bio::DB::Sam: file: lib/Bio/DB/Sam.pm version: '1.43' Bio::DB::Sam::Constants: file: lib/Bio/DB/Sam/Constants.pm Bio::DB::Sam::Fai: file: lib/Bio/DB/Sam.pm Bio::DB::Sam::SamToGBrowse: file: lib/Bio/DB/Sam/SamToGBrowse.pm Bio::DB::Sam::Segment: file: lib/Bio/DB/Sam/Segment.pm Bio::DB::Sam::Segment::Iterator: file: lib/Bio/DB/Sam/Segment.pm Bio::SeqFeature::Coverage: file: lib/Bio/DB/Sam.pm requires: Bio::Root::Version: '1.006009001' perl: '5.008' resources: license: http://dev.perl.org/licenses/ version: '1.43' Bio-SamTools-1.43/INSTALL.pl000555001751001751 705012657431424 15507 0ustar00lsteinlstein000000000000#!/usr/bin/perl use strict; use File::Temp 'tempdir'; prompt_yn("This will install Bio::DB::Sam and its dependencies. Continue?") or exit 0; # STEP 0: various dependencies my $git = `which git`; $git or die < 1); info("Performing build in $install_dir"); # STEP 2: Check out samtools info("Checking out samtools 0.1.19"); chdir $install_dir; system "git clone https://github.com/samtools/samtools.git"; -d './samtools' or die "git clone seems to have failed. Could not find $install_dir/samtools directory"; chdir './samtools'; system "git checkout 0.1.19"; # STEP 3: Check out Bio-SamTools info("Checking out Bio-SamTools"); chdir $install_dir; system "git clone https://github.com/GMOD/GBrowse-Adaptors.git"; -d './GBrowse-Adaptors' or die "git clone seems to have failed. Could not find $install_dir/GBrowse-Adaptors directory"; chdir "./GBrowse-Adaptors/Bio-SamTools"; system "git checkout release-1_39"; # Step 4: Build libbam.a info("Building samtools"); chdir "$install_dir/samtools"; # patch makefile open my $in, '<','Makefile' or die "Couldn't open Makefile for reading: $!"; open my $out,'>','Makefile.new' or die "Couldn't open Makefile.new for writing: $!"; while (<$in>) { chomp; if (/^CFLAGS/ && !/-fPIC/) { s/#.+//; # get rid of comments $_ .= " -fPIC -Wno-unused -Wno-unused-result"; } } continue { print $out $_,"\n"; } close $in; close $out; rename 'Makefile.new','Makefile' or die "Couldn't rename Makefile.new to Makefile: $!"; system "make"; -e 'libbam.a' or die "Compile didn't complete. No libbam.a library file found"; # Step 5: Build Bio::DB::Sam info("Building Bio::DB::Sam"); chdir "$install_dir/GBrowse-Adaptors/Bio-SamTools"; system "env SAMTOOLS=$install_dir/samtools perl Build.PL"; -e "./Build" or die "Build.PL didn't execute properly: no Build file found"; system "./Build"; `./Build test` =~ /Result: PASS/ or die "Build test failed. Not continuing"; # Step 6: Install info("Installing Bio::DB::Sam using sudo. You will be asked for your password."); info("If this step fails because sudo isn't installed, go back and run this script again as superuser."); system "sudo ./Build install"; # Step 7: Yay! info("Bio::DB::Sam is now installed."); chdir '/'; exit 0; sub prompt_yn { my $msg = shift; print STDERR "$msg [Y/n]: "; my $input = <>; chomp $input; return 1 unless $input; return $input =~ /^[yY]/; } sub info { my $msg = shift; chomp $msg; print STDERR "\n*** $msg ***\n"; } Bio-SamTools-1.43/LICENSE000444001751001751 10101112657431424 15076 0ustar00lsteinlstein000000000000This software and its accompanying documentation is licensed under any of the following open source licenses: a) the Artistic License 2.0 b) the Apache License 2.0 a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or ---------------------------------------------------------------------------- Artistic License 2.0 Copyright (c) 2000-2006, The Perl Foundation. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble This license establishes the terms under which a given free software Package may be copied, modified, distributed, and/or redistributed. The intent is that the Copyright Holder maintains some artistic control over the development of that Package while still keeping the Package available as open source and free software. You are always permitted to make arrangements wholly outside of this license directly with the Copyright Holder of a given Package. If the terms of this license do not permit the full use that you propose to make of the Package, you should contact the Copyright Holder and seek a different licensing arrangement. Definitions "Copyright Holder" means the individual(s) or organization(s) named in the copyright notice for the entire Package. "Contributor" means any party that has contributed code or other material to the Package, in accordance with the Copyright Holder's procedures. "You" and "your" means any person who would like to copy, distribute, or modify the Package. "Package" means the collection of files distributed by the Copyright Holder, and derivatives of that collection and/or of those files. A given Package may consist of either the Standard Version, or a Modified Version. "Distribute" means providing a copy of the Package or making it accessible to anyone else, or in the case of a company or organization, to others outside of your company or organization. "Distributor Fee" means any fee that you charge for Distributing this Package or providing support for this Package to another party. It does not mean licensing fees. "Standard Version" refers to the Package if it has not been modified, or has been modified only in ways explicitly requested by the Copyright Holder. "Modified Version" means the Package, if it has been changed, and such changes were not explicitly requested by the Copyright Holder. "Original License" means this Artistic License as Distributed with the Standard Version of the Package, in its current version or as it may be modified by The Perl Foundation in the future. "Source" form means the source code, documentation source, and configuration files for the Package. "Compiled" form means the compiled bytecode, object code, binary, or any other form resulting from mechanical transformation or translation of the Source form. Permission for Use and Modification Without Distribution (1) You are permitted to use the Standard Version and create and use Modified Versions for any purpose without restriction, provided that you do not Distribute the Modified Version. Permissions for Redistribution of the Standard Version (2) You may Distribute verbatim copies of the Source form of the Standard Version of this Package in any medium without restriction, either gratis or for a Distributor Fee, provided that you duplicate all of the original copyright notices and associated disclaimers. At your discretion, such verbatim copies may or may not include a Compiled form of the Package. (3) You may apply any bug fixes, portability changes, and other modifications made available from the Copyright Holder. The resulting Package will still be considered the Standard Version, and as such will be subject to the Original License. Distribution of Modified Versions of the Package as Source (4) You may Distribute your Modified Version as Source (either gratis or for a Distributor Fee, and with or without a Compiled form of the Modified Version) provided that you clearly document how it differs from the Standard Version, including, but not limited to, documenting any non-standard features, executables, or modules, and provided that you do at least ONE of the following: (a) make the Modified Version available to the Copyright Holder of the Standard Version, under the Original License, so that the Copyright Holder may include your modifications in the Standard Version. (b) ensure that installation of your Modified Version does not prevent the user installing or running the Standard Version. In addition, the Modified Version must bear a name that is different from the name of the Standard Version. (c) allow anyone who receives a copy of the Modified Version to make the Source form of the Modified Version available to others under (i) the Original License or (ii) a license that permits the licensee to freely copy, modify and redistribute the Modified Version using the same licensing terms that apply to the copy that the licensee received, and requires that the Source form of the Modified Version, and of any works derived from it, be made freely available in that license fees are prohibited but Distributor Fees are allowed. Distribution of Compiled Forms of the Standard Version or Modified Versions without the Source (5) You may Distribute Compiled forms of the Standard Version without the Source, provided that you include complete instructions on how to get the Source of the Standard Version. Such instructions must be valid at the time of your distribution. If these instructions, at any time while you are carrying out such distribution, become invalid, you must provide new instructions on demand or cease further distribution. If you provide valid instructions or cease distribution within thirty days after you become aware that the instructions are invalid, then you do not forfeit any of your rights under this license. (6) You may Distribute a Modified Version in Compiled form without the Source, provided that you comply with Section 4 with respect to the Source of the Modified Version. Aggregating or Linking the Package (7) You may aggregate the Package (either the Standard Version or Modified Version) with other packages and Distribute the resulting aggregation provided that you do not charge a licensing fee for the Package. Distributor Fees are permitted, and licensing fees for other components in the aggregation are permitted. The terms of this license apply to the use and Distribution of the Standard or Modified Versions as included in the aggregation. (8) You are permitted to link Modified and Standard Versions with other works, to embed the Package in a larger work of your own, or to build stand-alone binary or bytecode versions of applications that include the Package, and Distribute the result without restriction, provided the result does not expose a direct interface to the Package. Items That are Not Considered Part of a Modified Version (9) Works (including, but not limited to, modules and scripts) that merely extend or make use of the Package, do not, by themselves, cause the Package to be a Modified Version. In addition, such works are not considered parts of the Package itself, and are not subject to the terms of this license. General Provisions (10) Any use, modification, and distribution of the Standard or Modified Versions is governed by this Artistic License. By using, modifying or distributing the Package, you accept this license. Do not use, modify, or distribute the Package, if you do not accept this license. (11) If your Modified Version has been derived from a Modified Version made by someone other than you, you are nevertheless required to ensure that your Modified Version complies with the requirements of this license. (12) This license does not grant you the right to use any trademark, service mark, tradename, or logo of the Copyright Holder. (13) This license includes the non-exclusive, worldwide, free-of-charge patent license to make, have made, use, offer to sell, sell, import and otherwise transfer the Package with respect to any patent claims licensable by the Copyright Holder that are necessarily infringed by the Package. If you institute patent litigation (including a cross-claim or counterclaim) against any party alleging that the Package constitutes direct or contributory patent infringement, then this Artistic License to you shall terminate on the date that such litigation is filed. (14) Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: You must give any other recipients of the Work or Derivative Works a copy of this License; and You must cause any modified files to carry prominent notices stating that You changed the files; and You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS ---------------------------------------------------------------------------- The General Public License (GPL) Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, 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 Bio-SamTools-1.43/typemap000444001751001751 34012657431424 15416 0ustar00lsteinlstein000000000000TYPEMAP Bio::DB::Bam T_PTROBJ Bio::DB::Bam::Header T_PTROBJ Bio::DB::Bam::Alignment T_PTROBJ Bio::DB::Bam::Index T_PTROBJ Bio::DB::Sam::Fai T_PTROBJ Bio::DB::Tam T_PTROBJ Bio::DB::Bam::Pileup T_PTROBJ Bio-SamTools-1.43/Changes000444001751001751 2046612657431424 15362 0ustar00lsteinlstein000000000000Version 1.43 * Added a few files that were missing from MANIFEST and which were therefore making it impossible to install from CPAN. Version 1.42 * Software is now triply-licensed via Apache 2.0, Artistic 2.0 or GPL v1 or higher. Version 1.41 * Added missing INSTALL.pl script. * Make it clear that this library only works up through Samtools 0.1.19. * Improvements to INSTALL.pl script and documentation. Version 1.40 * Add Bio::DB::Bam::Alinment->qstring() convenience method. * Add reference to GitHub site for this module. * Add -force_refseq option to Bio::DB::Sam->new() constructor to force module to use the FASTA file for reference sequence retrieval even when MD flag is available. Version 1.39 * Bio::DB::Bam::Alinment->strand() performance patch from: https://rt.cpan.org/Ticket/Display.html?id=88203. Version 1.38 * Add -lpthread to linker flags to allow to run with samtools 0.1.19. Version 1.37 * Fix incorrect calculation of mate_len and mate_end when CIGAR string contains insertions and deletions. Thanks to Ian Sealy for the patch! Version 1.36 * Added C binary bam2bedgraph for quick coverage calculations (2-5x faster than BEDTools' genomeCoverageBed) * Speed up bamToGrowse.pl using bam2bedgraph. Version 1.35 * Add patch from John Marshall to fix several problems in the tam line generator when reads are unmapped. Version 1.34 * Add patch from Florian Finkernagel to accomodate paired end data that are encoded as CIGAR strings. Version 1.33 * Fix compile error on perl 5.8.7 and lower. * Fix "substr outside of string" errors when processing split alignments with a hard clip at beginning of CIGAR string. Version 1.32 * Fix loss of strand information when joining split alignments. * Give read_pair objects a primary_id that will allow them to be retrieved intact using get_feature_by_id(). Version 1.31 * Added Bio::DB::Sam->max_pileup_cnt() and Bio::DB::Bam->max_pileup_cnt() method to allow users to adjust Samtools cap on pileup depth. Version 1.30 * Apply patch from Jason Walker to return full arrays across 0-depth coverage and to max the count at a certain coverage. Version 1.29 * Apply patch from Hongwen Qiu to fix memory allocation error in bam header generation. Version 1.28 *Fixed coverage calculations so that sections of reads that cover the reference genome which are marked in the CIGAR string as 'N' (skip) or 'D' (delete) do not contribute to coverage. *The bamToGBrowse.pl script now takes advantage of genomeCoveragetoBed from the BedTools package. If this executable is installed, BigWig generation will speed up noticeably. Version 1.27 *Support for SAM/BAM files in which the sequence is given as "*". This will return a completely ambiguous read (NNNNNNNN) of the proper length. *SamToGBrowse functions will now work properly under a fastCGI environment. Version 1.26 * Added support for samtools >= 0.1.9 is_refskip field in pileups. Version 1.25 * Removed debugging warning in get_feature_by_id(). * Identify version-specific samtools installs where the prefix is xyz and the include/lib files are in xyz/include and xyz/lib (Contributed by John Marshall). Version 1.24 * More revisions needed to run tests succssfully. Sorry! Version 1.23 * added missing files needed for the multi-gaps test introduced in 1.22. Version 1.22 * fix/test for 'incomplete cigar/split alignments processing of multi-gaps' (https://sourceforge.net/tracker/?func=detail&aid=3083769&group_id=27707&atid=391291)" Version 1.21 * Fixed the AlignWrapper->can() method, which was causing crashes with GBrowse2. Version 1.20 * Added Bio::DB::Tam->header_read() method. Version 1.19 * Added Bio::DB::Bam::Alignment->mate_seq_id() method. * Added Bio::DB::Bam::Alignment->aux() method. * Added Bio::DB::Bam::Alignment->tam_line() method. * Fixed Bio::DB::Bam::Alignment->cigar_str() method to return fields in correct order! (bad bug) Version 1.18 * Made the BAMfile $header->text() method read/write, allowing limited modification of header fields. * Fixed MD processing again to correctly handle insertions into the reference sequence. Version 1.17 * Fixed bug in processing of MD tag that returned incorrect reference sequence when alignment contains soft clips. * Fixed processing of "A" tags so that they return the appropriate 1 character string rather than undef. Version 1.16 * No longer attempt to build BAM index automatically if the .bai file is either missing or out of date. Pass -autoindex=>1 to Bio::DB::Sam to restore original behavior. Version 1.15 * If -fasta argument is not provided at new() time, methods will attempt to use the MD tags to reconstruct reference sequence. Version 1.14 * A last minute typo broke the regression tests. This is now fixed. Don't use version 1.13. Version 1.13 * Fixed another bug in padded_alignments(), which caused the source dna sequence to be reported incorrectly for mismatches. Thanks to David Gacquer for identifying all these bugs. Version 1.12 * Fixed the padded_alignments() method to correct "method not found" bug introduced in version 1.11. Version 1.11 * Fixed the padded alignments returned for hard-clipped alignments. Version 1.10 * Added a new Bio::DB::Bam method for caching remote files' indices in the temp directory. This is used by default by high-level API. * Fixed bug in soft and hard clipping code; query endpoints should be correct now. * Fixed bug in get_all_tags() which was choking on "Z" style tags and giving scrambled results. * $feature->query now reports the DNA query in canonical (ref) coordinates; only $feature->target reverse complements the query DNA to give the data actually read; cigar string is always in canonical coordinates Version 1.09 * Disabled checks for file readability when path is a remote BAM index. This allows transparent access to BAM databases on http/ftp servers. Version 1.08 * Implemented a clone() method for use immediately before or after a fork() attempt. Version 1.07 * IMPORTANT API CHANGE 1: The feature strand now returns +1 or -1 to indicate whether the query was reverse complemented in the SAM file. * IMPORTANT API CHANGE 2: The $feature->query object's dna() and seq() methods now return the sequence as it was read, rather than the reverse complemented version as represented in the SAM file. $feature->qseq() returns the reverse complemented version as before. Version 1.06 * Updated README to be more explicit about how to troubleshoot compile errors. * Modifed so that Bio::DB::Sam will work with GBrowse 1. Version 1.05 * Bio::DB::Sam->seq_id() method no longer lower-cases reference names. * Quashed enormous memory leak in the pileup() function. Version 1.04 * Updated example BAM file (ex1.bam) to be compatible with 1.06 version of samtools. Version 1.03 * Fixed documentation on running with GBrowse. * Fixed alignwrapper behavior so that GBrowse searches don't crash. Version 1.02 * Fixed bug in parsing of unsigned integer tags that caused some tags to be treated as signed integer. Version 1.01 * Fixed Build.PL to pick up correct location of bam header files. * Eliminated several memory leaks that manifested when reading BAM files with lots of targets. * Made -fasta argument optional when using high-level interface. Version 1.00 * initial release Tue Jun 23 23:47:28 BST 2009 * Many documentation improvements * Improved performance of high-level interface for fetch() and pileup() functions. * Added information to README about how to compile with samtools 0.1.4 Thu May 7 09:47:02 EDT 2009 * See t/01sam.t for a demonstration of the API. * Essentially all of the API is fleshed out, with the exception of the ability to generate padded alignment itself. * The $alignment->query() interface is the one to use for retrieving start, end and sequence of the query sequence. The $alignment->target() interface flips the meaning of start and end when the alignment is reversed, to accomodate old AceDB/GFF2 scripts. Bio-SamTools-1.43/MANIFEST000444001751001751 142312657431424 15170 0ustar00lsteinlstein000000000000bin/bamToGBrowse.pl bin/chrom_sizes.pl bin/genomeCoverageBed.pl Build.PL c_bin/bam2bedgraph.c c_bin/makefile Changes DISCLAIMER INSTALL.pl lib/Bio/DB/Bam/Alignment.pm lib/Bio/DB/Bam/AlignWrapper.pm lib/Bio/DB/Bam/FetchIterator.pm lib/Bio/DB/Bam/Pileup.pm lib/Bio/DB/Bam/PileupWrapper.pm lib/Bio/DB/Bam/Query.pm lib/Bio/DB/Bam/ReadIterator.pm lib/Bio/DB/Bam/Target.pm lib/Bio/DB/Sam.pm lib/Bio/DB/Sam.xs lib/Bio/DB/Sam/Constants.pm lib/Bio/DB/Sam/SamToGBrowse.pm lib/Bio/DB/Sam/Segment.pm LICENSE MANIFEST This list of files META.json META.yml README t/01sam.t t/data/00README.txt t/data/dm3_3R_4766911_4767130.sam t/data/dm3_3R_4766911_4767130.sam.bam t/data/dm3_3R_4766911_4767130.sam.sorted.bam t/data/ex1.bam t/data/ex1.fa t/data/ex1.sam.gz t/data/ex2.bam t/data/ex2.sam.gz typemap Bio-SamTools-1.43/Build.PL000444001751001751 1043112657431424 15352 0ustar00lsteinlstein000000000000#!/usr/bin/perl use strict; use Module::Build; use Module::Load::Conditional qw(can_load); my $HeaderFile = "bam.h"; my $LibFile = "libbam.a"; my $ReadLine; my ($sam_include,$sam_lib) = find_sam(); # may exit with error here my $class = Module::Build->subclass(code=><; \$self->copy_if_modified(from =>\$_, to_dir => "./blib/bin/", flatten=>1, ) foreach \@exec; } sub ACTION_clean { my \$self = shift; \$self->SUPER::ACTION_clean(); system "cd c_bin; make -s clean"; } EOF my $build = $class->new( module_name => 'Bio::SamTools', dist_version_from => 'lib/Bio/DB/Sam.pm', dist_author => 'Lincoln Stein ', dist_abstract => 'Perl interface to SamTools library for DNA sequencing', license => 'perl', include_dirs => [$sam_include], extra_linker_flags => ["-L$sam_lib",'-lbam','-lpthread','-lz'], extra_compiler_flags=>[ # must match DFLAGS in Samtools Makefile '-D_IOLIB=2','-D_FILE_OFFSET_BITS=64', # turn off warnings originating in Perl's Newx* calls '-Wformat=0', ], c_source => 'c_bin', c_bin_files => {'./bin/bam2bedgraph' => 'bin/bam2bedgraph'}, build_requires => { 'ExtUtils::CBuilder' => 0, }, requires => { 'perl' => '5.008', 'Bio::Root::Version' => '1.006009001', }, # create_makefile_pl => 'passthrough', ); $build->add_build_element('c_bin'); $build->create_build_script; exit 0; sub find_sam { my ($sam_include,$sam_lib); if (my $samtools = _samtools()) { $sam_include = $samtools if -e "$samtools/$HeaderFile"; $sam_include = "$samtools/include" if -e "$samtools/include/$HeaderFile"; $sam_lib = $samtools if -e "$samtools/$LibFile"; $sam_lib = "$samtools/lib" if -e "$samtools/lib/$LibFile"; } my @search_path = qw(/ /usr /usr/share /usr/local); unless ($sam_include) { for my $p (@search_path) { $sam_include ||= "$p/include" if -e "$p/include/$HeaderFile"; } } unless ($sam_lib) { for my $p (@search_path) { $sam_lib ||= "$p/lib" if -e "$p/lib/$LibFile"; } } unless ($sam_include && $sam_lib) { print STDOUT "This module requires samtools 0.1.10 or higher (samtools.sourceforge.net).\n"; my $prompt = "Please enter the location of the bam.h and compiled libbam.a files: "; my $found; while (!$found) { my $path = prompt($prompt); print STDOUT "\n"; last unless $path; $sam_include = $path if -e "$path/$HeaderFile"; $sam_include = "$path/include" if -e "$path/include/$HeaderFile"; $sam_lib = $path if -e "$path/$LibFile"; $sam_lib = "$path/lib" if -e "$path/lib/$LibFile"; $found = $sam_include && $sam_lib; unless ($found) { print STDOUT "That didn't seem to be right.\n"; $prompt = "Try again, or hit to cancel: "; } } } unless ($sam_include && $sam_lib) { die <can('new') || 0; $ReadLine &&= Term::ReadLine->new(\*STDOUT); eval {readline::rl_set('TcshCompleteMode','On')}; } unless ($ReadLine) { print STDOUT $msg; chomp (my $in = <>); return $in; } my $in = $ReadLine->readline($msg); chomp $in; $in=~ s/\s+//; $ReadLine->addhistory($in) if $in =~ /\S/; return $in; } sub _samtools { $ENV{SAMTOOLS} || ( can_load(modules => {'Alien::SamTools' => undef, 'File::ShareDir' => undef}) && File::ShareDir::dist_dir('Alien-SamTools')); } Bio-SamTools-1.43/c_bin000755001751001751 012657431424 14754 5ustar00lsteinlstein000000000000Bio-SamTools-1.43/c_bin/bam2bedgraph.c000444001751001751 436112657431424 17577 0ustar00lsteinlstein000000000000#include #include "sam.h" typedef struct { uint32_t ltid; int lstart,lcoverage,lpos,beg,end; samfile_t *in; } tmpstruct_t; // callback for bam_fetch() static int fetch_func(const bam1_t *b, void *data) { bam_plbuf_t *buf = (bam_plbuf_t*)data; bam_plbuf_push(b, buf); return 0; } // callback for bam_plbuf_init() static int pileup_func(uint32_t tid, uint32_t position, int n, const bam_pileup1_t *pl, void *data) { tmpstruct_t *tmp = (tmpstruct_t*)data; int pos = (int)position; int coverage = n; int i; for (i=0;iltid != tid || tmp->lcoverage != coverage || pos > tmp->lpos+1) { if (tmp->lpos > 0 && tmp->lcoverage > 0) printf("%s\t%d\t%d\t%d\n", tmp->in->header->target_name[tmp->ltid], tmp->lstart,tmp->lpos+1, tmp->lcoverage); tmp->ltid = tid; tmp->lstart = pos; tmp->lcoverage = coverage; } tmp->lpos = pos; return 0; } int main(int argc, char *argv[]) { tmpstruct_t tmp; if (argc == 1) { fprintf(stderr, "Usage: bam2bedgraph [region]\n\nCreate a BEDGraph file of genomic coverage. BAM file must be sorted.\n"); return 1; } tmp.beg = 0; tmp.end = 0x7fffffff; tmp.lstart = 0; tmp.lcoverage = 0; tmp.ltid = 0; tmp.lpos = 0; tmp.in = samopen(argv[1], "rb", 0); if (tmp.in == 0) { fprintf(stderr, "Fail to open BAM file %s\n", argv[1]); return 1; } if (argc == 2) { // if a region is not specified sampileup(tmp.in, -1, pileup_func, &tmp); } else { int ref; bam_index_t *idx; bam_plbuf_t *buf; idx = bam_index_load(argv[1]); // load BAM index if (idx == 0) { fprintf(stderr, "BAM indexing file is not available.\n"); return 1; } bam_parse_region(tmp.in->header, argv[2], &ref, &tmp.beg, &tmp.end); // parse the region if (ref < 0) { fprintf(stderr, "Invalid region %s\n", argv[2]); return 1; } buf = bam_plbuf_init(pileup_func, &tmp); // initialize pileup bam_fetch(tmp.in->x.bam, idx, ref, tmp.beg, tmp.end, buf, fetch_func); bam_plbuf_push(0, buf); // finalize pileup bam_index_destroy(idx); bam_plbuf_destroy(buf); } printf("%s\t%d\t%d\t%d\n", tmp.in->header->target_name[tmp.ltid], tmp.lstart,tmp.lpos+1, tmp.lcoverage); samclose(tmp.in); return 0; } Bio-SamTools-1.43/c_bin/makefile000444001751001751 61512657431424 16573 0ustar00lsteinlstein000000000000CC= gcc CFLAGS= -g -Wall -O2 -fPIC DFLAGS= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_USE_KNETFILE -D_CURSES_LIB=1 INCLUDES= LIBPATH= PROG= bam2bedgraph .SUFFIXES:.c .o .PHONY: all lib .c.o: $(CC) -c $(CFLAGS) $(DFLAGS) $(INCLUDES) $< -o $@ all:$(PROG) bam2bedgraph: bam2bedgraph.o $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS) $(LIBPATH) -lbam -lpthread -lm -lz clean: rm -f *.o $(PROG) Bio-SamTools-1.43/t000755001751001751 012657431424 14145 5ustar00lsteinlstein000000000000Bio-SamTools-1.43/t/01sam.t000444001751001751 4551012657431424 15435 0ustar00lsteinlstein000000000000#-*-Perl-*- # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.t' use strict; use ExtUtils::MakeMaker; use File::Temp qw(tempfile); use FindBin '$Bin'; use constant TEST_COUNT => 268; use lib "$Bin/../lib","$Bin/../blib/lib","$Bin/../blib/arch"; BEGIN { # to handle systems with no installed Test module # we include the t dir (where a copy of Test.pm is located) # as a fallback eval { require Test; }; if( $@ ) { use lib 't'; } use Test; plan test => TEST_COUNT; } use Bio::DB::Sam; use Bio::DB::Bam::AlignWrapper; { ## Tests by keiranmraine@gmail.com (kr2@sanger.ac.uk) for fixing alignments with hard + soft clips # 49 tests # !! not-forced ref-seq my @read_pos = ([1,120], # 120M [61,120], # 60S60M [1,60], # 60M60H [1,120], # 120M [31,90], # 30H30S60M [1,30], # 30M30S60H [1,30], # 10M10N20M30S60H (N ref skip) ); my @ref_pos = ( [61, 180], [1081, 1140], [961, 1020], [61, 180], [1081, 1140], [961, 990], [961, 1000], ); my @read_padded = ( [ 'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG', '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||', 'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG'], [ '------------------------------------------------------------TGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA', ' ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||', 'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGATGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA'], [ 'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGA', '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||', 'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGA'], [ 'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG', '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||', 'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG'], [ '------------------------------TGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA', ' ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||', 'CATAACTATGAAGAGACTATTGCCAGATGATGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA'], [ 'ACATGAGATTATTAGGAAATGCTTTACTGT------------------------------', '|||||||||||||||||||||||||||||| ', 'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGA'], [ 'ACATGAGATT----------GCTTTACTGTCATAACTATG------------------------------', '|||||||||| |||||||||||||||||||| ', 'ACATGAGATT----------GCTTTACTGTCATAACTATGGAAGAGACTATTGCCAGATGATGTCCATGT'], ); my $sam = Bio::DB::Sam->new( -bam => "$Bin/data/ex2.bam", -fasta => "$Bin/data/ex1.fa", ); my $bam = $sam->bam; my $record=0; while(my $a = $bam->read1) { ok($a->query->start, $read_pos[$record]->[0], "Check query start $record"); ok($a->query->end, $read_pos[$record]->[1], "Check query end $record"); ok($a->start, $ref_pos[$record]->[0], "Check ref pos start $record"); ok($a->start, $ref_pos[$record]->[0], "Check ref pos end $record"); my $aw = Bio::DB::Bam::AlignWrapper->new($a, $sam); my ($ref, $match, $query) = $aw->padded_alignment; ok($ref, $read_padded[$record]->[0], "Check padded_alignment ref $record"); ok($match, $read_padded[$record]->[1], "Check padded_alignment match $record"); ok($query, $read_padded[$record]->[2], "Check padded_alignment query $record"); $record++; } } { ## Tests by keiranmraine@gmail.com (kr2@sanger.ac.uk) for fixing alignments with hard + soft clips # 49 tests # !! FORCED refseq ref-seq my @read_pos = ([1,120], # 120M [61,120], # 60S60M [1,60], # 60M60H [1,120], # 120M [31,90], # 30H30S60M [1,30], # 30M30S60H [1,30], # 10M10N20M30S60H (N ref skip) # changes ); my @ref_pos = ( [61, 180], [1081, 1140], [961, 1020], [61, 180], [1081, 1140], [961, 990], [961, 1000], ); my @read_padded = ( [ 'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG', '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||', 'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG'], [ '------------------------------------------------------------TGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA', ' ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||', 'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGATGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA'], [ 'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGA', '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||', 'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGA'], [ 'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG', '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||', 'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG'], [ '------------------------------TGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA', ' ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||', 'CATAACTATGAAGAGACTATTGCCAGATGATGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA'], [ 'ACATGAGATTATTAGGAAATGCTTTACTGT------------------------------', '|||||||||||||||||||||||||||||| ', 'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGA'], [ 'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATG------------------------------', '|||||||||| |||||||||||||||||||| ', 'ACATGAGATT----------GCTTTACTGTCATAACTATGGAAGAGACTATTGCCAGATGATGTCCATGT'], ); my $sam = Bio::DB::Sam->new( -bam => "$Bin/data/ex2.bam", -fasta => "$Bin/data/ex1.fa", -force_refseq => 1, ); my $bam = $sam->bam; my $record=0; while(my $a = $bam->read1) { ok($a->query->start, $read_pos[$record]->[0], "Check query start $record"); ok($a->query->end, $read_pos[$record]->[1], "Check query end $record"); ok($a->start, $ref_pos[$record]->[0], "Check ref pos start $record"); ok($a->start, $ref_pos[$record]->[0], "Check ref pos end $record"); my $aw = Bio::DB::Bam::AlignWrapper->new($a, $sam); my ($ref, $match, $query) = $aw->padded_alignment; ok($ref, $read_padded[$record]->[0], "Check padded_alignment ref $record"); ok($match, $read_padded[$record]->[1], "Check padded_alignment match $record"); ok($query, $read_padded[$record]->[2], "Check padded_alignment query $record"); $record++; } } { ## Following tests added by malcolm_cook@stowers.org while ## diagnosing, patching "incomplete cigar/split alignments ## processing of multi-gaps" ## (https://sourceforge.net/tracker/?func=detail&aid=3083769&group_id=27707&atid=391291) my $bamfile = "$Bin/data/dm3_3R_4766911_4767130.sam.sorted.bam"; my $sam = Bio::DB::Sam->new( -bam => $bamfile, -split_splices => 1, -autoindex => 1, ); ok($sam); ok($sam->split_splices); my @alignments = $sam->get_features_by_location("3R"); ok (75,@alignments,"count of alignments in $bamfile"); my @e3 = grep {my $c = $_->cigar_str; $c =~ /^\d+M124N3M91N\d+M$/} @alignments; ok (9, @e3, "count of spliced alignments which 'take' the 3bp exon according to CIGAR string"); my @e3_parts=map {[$_->get_SeqFeatures]} @e3; ok($#e3,$#e3_parts,"all have split splices"); ok((grep {grep {$_->start == 4767036 && $_->end == 4767038 && $_->hit->seq eq "GCT" } @$_} @e3_parts),@e3_parts, "split alignments harboring the 3bp exon"); ok((grep {grep {$_->end == 4766911 && do {my $h = $_->hit->seq; $h =~ m/GCT$/; }} @$_} @e3_parts),@e3_parts, "split alignments having a part (exon) that ends at 4766911 (the donor of the upstream exon)" ); ok((grep {grep {$_->start == 4767130 && do {my $h = $_->hit->seq; $h =~ m/^TCTTC/; }} @$_} @e3_parts), @e3_parts, # This is the test that fails without the patch that motivated # these tests. Prior to patch, 4767006 was the incorrectly computed value # for the start of the downstream exon, due to incorrect cigar processing when # an alignment spanned multiple introns. "split alignments having a part (exon) that starts at 4767130 (the acceptor of the downstream exon)" ); } # low level tests (defined in lib/Bio/DB/Sam.xs) { my $bamfile = "$Bin/data/ex1.bam"; my $bam = Bio::DB::Bam->open($bamfile); ok($bam); my $header = $bam->header; my $targets = $header->n_targets; ok($targets,2); my $target_names = $header->target_name; ok($target_names); ok(scalar @$target_names,2); ok($target_names->[0],'seq1'); my $target_lens = $header->target_len; ok($target_lens); ok(scalar @$target_lens,2); ok($target_lens->[0],1575); my $text = $header->text; ok(length $text > 0); my $c = "\@CO\tThis is a comment\n"; $header->text($c); ok($header->text,$c); my $fai = Bio::DB::Sam::Fai->open("$Bin/data/ex1.fa"); my $seq = $fai->fetch('seq2:51-1000'); ok(length $seq,950); my $count; while (my $b = $bam->read1) { $count++; } ok($count,3307); my @result = $header->parse_region('seq2:51-1000'); ok($result[0],1); ok($result[1],50); @result = $header->parse_region('seq_invalid:51-1000'); ok(scalar @result,0); my $index = Bio::DB::Bam->index($bamfile,1); ok($index); my @a; my $print_region = sub { my($alignment,$data) = @_; push @a,$alignment; return; }; $index->fetch($bam,$header->parse_region('seq2'),$print_region,"foobar"); ok(scalar @a > 1); my %matches; my $fetch_back = sub { my ($tid,$pos,$p) = @_; my $p1 = $pos+1; my $r = $fai->fetch($header->target_name->[$tid].":$p1-$p1"); for my $pileup (@$p) { my $b = $pileup->b; my $qpos = $pileup->qpos; my $base = $pileup->indel == 0 ? substr($b->qseq,$qpos,1) :$pileup->indel > 0 ? '*' : '-'; $matches{matched}++ if $r eq $base; $matches{total}++; } }; $index->pileup($bam,$header->parse_region('seq2:1-100'),$fetch_back); ok($matches{matched}/$matches{total} > 0.99); # try to get coverage my $coverage = $index->coverage($bam, $header->parse_region('seq2'), 100, 9000 ); ok(scalar @$coverage,100); my @c = sort {$a<=>$b} @$coverage; ok($c[0] >= 0); ok($c[-1] < 1000); # try reading from a TAM (text sam) file my $sam = Bio::DB::Tam->open("$Bin/data/ex1.sam.gz"); ok($sam); my $align = Bio::DB::Bam::Alignment->new(); ok($align); # quench annoying stderr message from library here open my $saverr,">&STDERR"; open STDERR,">/dev/null"; my $head = Bio::DB::Tam->header_read2("$Bin/data/ex1.fa.fai"); open STDERR,">&",$saverr; ok($head); my $result = $sam->read1($head,$align); ok($result>0); ok($align->qseq,'CACTAGTGGCTCATTGTAAATGTGTGGTTTAACTCG'); ok($align->start,1); ok($sam->read1($head,$align)>0); ok($align->start,3); ok($header->target_name->[$align->tid],'seq1'); # test ability to write a BAM file my (undef,$filename) = tempfile('BAM_TEST_XXXXXXX',UNLINK=>1); $sam = Bio::DB::Tam->open("$Bin/data/ex1.sam.gz"); $bam = Bio::DB::Bam->open($filename,'w'); ok($bam); ok($bam->header_write($head),0); $count = 0; while ($sam->read1($head,$align) > 0) { $count++; $bam->write1($align); } ok($count,3307); undef $bam; $bam = Bio::DB::Bam->open($filename); ok($bam); $header = $bam->header; $targets = $header->n_targets; ok($targets,2); $target_names = $header->target_name; ok($target_names); ok(scalar @$target_names,2); ok($target_names->[0],'seq1'); $target_lens = $header->target_len; ok($target_lens); ok(scalar @$target_lens,2); ok($target_lens->[0],1575); # try removing and regenerating index unlink "$Bin/data/ex1.bam.bai"; ok(Bio::DB::Bam->index($bamfile,1)); ok(-e "$Bin/data/ex1.bam.bai"); Bio::DB::Bam->sort_core(1,"$Bin/data/ex1.bam","$Bin/data/ex1.sorted"); ok(-e "$Bin/data/ex1.sorted.bam"); ok(Bio::DB::Bam->index("$Bin/data/ex1.sorted.bam",1)); ok(-e "$Bin/data/ex1.sorted.bam.bai"); unlink ("$Bin/data/ex1.sorted.bam","$Bin/data/ex1.sorted.bam.bai"); } # high level tests (defined in lib/Bio/DB/Sam.pm) for my $use_fasta (0,1) { my $sam = Bio::DB::Sam->new(-fasta=>"$Bin/data/ex1.fa", -bam =>"$Bin/data/ex1.bam", -expand_flags => 1, -autoindex => 1, -force_refseq => $use_fasta, ); ok($sam); ok($sam->n_targets,2); ok($sam->length('seq1'),1575); ok(join $sam->seq_ids,'seq1 seq2'); my $seg = $sam->segment('seq1'); ok($seg); ok($seg->length,1575); my $seq = $seg->seq; ok($seq->isa('Bio::PrimarySeq')); ok(length $seq->seq,1575); my $fh = $sam->tam_fh; ok($fh); my $samline = <$fh>; ok($samline =~ /^B7_591:4:96:693:509/); $fh->close; my ($readname) = $samline =~ /^(\S+)/; my ($f) = $sam->get_features_by_name($readname); ok($f); chomp($samline); ok($f->tam_line,$samline); my $dummy = eval {Bio::DB::Sam->new(-fasta=>"invalid_path.txt", -bam =>"invalid_path.txt")}; ok($dummy,undef); ok($@ =~ /does not exist/); my @alignments = $sam->get_features_by_location( -seq_id => 'seq2', -start => 500, -end => 800 ); ok(scalar @alignments,442); ok($alignments[0]->seq_id,'seq2'); ok(scalar @{$alignments[0]->qscore},length $alignments[0]->dna); my @keys = $alignments[0]->get_all_tags; ok(scalar @keys,18); ok($alignments[0]->get_tag_values('MF'),18); my %att = $alignments[0]->attributes; ok(scalar(keys %att),18); ok($alignments[0]->cigar_str,'35M'); $sam->expand_flags(0); @keys = $alignments[0]->get_all_tags; ok(scalar @keys,7); my $query = $alignments[0]->query; ok($query); ok($query->start,1); ok($query->end,35); ok($query->length,35); ok($query->dna,$alignments[0]->dna); ok($alignments[0]->strand,-1); ok($query->strand,-1); my $target = $alignments[0]->target; ok($target); ok($target->start,35); ok($target->end,1); ok($target->length,35); ok($target->dna,reversec($alignments[0]->dna)); ok($alignments[0]->get_tag_values('FLAGS'),$alignments[0]->flag_str); my @pads = $alignments[0]->padded_alignment; ok(@pads,3); ok($pads[0],$pads[2]); ok($pads[1]=~tr/|/|/,length($pads[0])); my @f = $sam->features(-name=>'EAS114_45:2:1:1140:1206'); ok(scalar @f,2); @f = $sam->features(-filter=> sub { my $a = shift; return 1 if $a->display_name eq 'EAS114_45:2:1:1140:1206'; }); ok(scalar @f,2); @f = $sam->features(-seq_id => 'seq2', -filter => sub { my $a = shift; return 1 if $a->display_name =~ /^EAS114/; }); ok(scalar @f,306); @f = $sam->features(-filter => sub { my $a = shift; return 1 if $a->display_name =~ /^EAS114/; }); ok(scalar @f,534); @f = $sam->features(-name=>'EAS114_45:2:1:1140:1206', -tags=>{FIRST_MATE=>1}); ok(scalar @f,1); # try iteration my $i = $sam->get_seq_stream( -seq_id => 'seq2', -start => 500, -end => 800 ); ok($i); my $count = 0; while ($i->next_seq) { $count++ } ok($count,442); # try tam fh retrieval $fh = $sam->get_seq_fh( -seq_id => 'seq2', -start => 500, -end => 800, ); $count = 0; $count++ while <$fh>; ok($count,442); $fh->close; $i = $sam->get_seq_stream(); # all features! ok($i); $count = 0; while ($i->next_seq) { $count++ } ok($count,3307); $i = $sam->get_seq_stream(-max_features=>200,-seq_id=>'seq1'); ok ($i); $count = 0; while ($i->next_seq) { $count++ } ok($count,200); ok($sam->last_feature_count,1482); # try the read_pair aggregation my @pairs = $sam->features(-type=>'read_pair', -seq_id => 'seq2'); ok(scalar @pairs,939); # try coverage my @coverage = $sam->features(-type => 'coverage', -seq_id => 'seq2'); ok(scalar @coverage,1); my ($c) = $coverage[0]->get_tag_values('coverage'); ok($c); ok($c->[0],3); ok($c->[1],4); ok($coverage[0]->type,"coverage:1584"); # test high level API version of pileup my %matches; my $fetch_back = sub { my ($seqid,$pos,$p) = @_; my $r = $sam->segment($seqid,$pos,$pos)->dna; for my $pileup (@$p) { my $a = $pileup->alignment; my $qpos = $pileup->qpos; my $dna = $a->query->dna; my $base = $pileup->indel == 0 ? substr($dna,$qpos,1) :$pileup->indel > 0 ? '*' : '-'; $matches{matched}++ if $r eq $base; $matches{total}++; } }; $sam->pileup('seq2:1-100',$fetch_back); ok($matches{matched}/$matches{total} > 0.99); } exit 0; sub reversec { my $dna = shift; $dna =~ tr/gatcGATC/ctagCTAG/; return scalar reverse $dna; } __END__ # this is not a unit test, but a piece of demo to show cigar string # processing for my $a (@alignments) { warn $a->display_name,' :: ',$a->flag_str,' :: ', $a->start,'..',$a->end,' ',' mpos=',$a->mate_start,' ins=',$a->isize, ' qlen=',$a->cigar2qlen, ' [',$a->strand,'/',$a->mstrand,']', ' ', $a->cigar_str, ' ', $a->mate_start,'..',$a->mate_end, "\n"; } Bio-SamTools-1.43/t/data000755001751001751 012657431424 15056 5ustar00lsteinlstein000000000000Bio-SamTools-1.43/t/data/dm3_3R_4766911_4767130.sam000444001751001751 3116212657431424 20623 0ustar00lsteinlstein000000000000SNPSTER1_0624:1:76:3859:1170#0/1 0 3R 4766872 255 40M * 0 0 GTTGAGATCAACCCCTATGCCGAGGATGCCATGTCCGGCT GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFGGGGGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:19:3314:1450#0/1 16 3R 4766872 255 40M * 0 0 GTTGAGATCAACCCCTATGCCGAGGATGCCATGTCCGGCA EFDGGDGFGGDGGFGFGFFBGFGFGGFFGGGBGDGGGGGG XA:i:1 MD:Z:39T0 NM:i:1 SNPSTER1_0624:1:24:11178:5138#0/1 16 3R 4766872 255 40M * 0 0 GTTGAGATCAACCCCTATGCCGAGGATGCCATGTCCGGCA GDGGGEGGGGFGEGGFDDE:GFFGGFGGGGFGFFGFGGFG XA:i:1 MD:Z:39T0 NM:i:1 SNPSTER1_0624:1:59:18561:8672#0/1 16 3R 4766872 255 40M * 0 0 GTTGAGATCAGCCCCTATGCCGAGGATGCCATGTCCGGCT ADDDDAA:CC,C5:C>;>C=C8?@@DDD:D5BBDBDDDDD XA:i:1 MD:Z:10A29 NM:i:1 SNPSTER1_0624:1:13:15204:6475#0/1 0 3R 4766873 255 40M * 0 0 TTGAGATCAACCCCTATGCCGAGGATGCCATGTCCGGCTT EEEEEEGFGFGGGGGGGGFEFEFGEGGEDFGGEGEEEDDF XA:i:0 MD:Z:39G0 NM:i:1 SNPSTER1_0624:1:108:12715:2571#0/1 0 3R 4766873 255 40M * 0 0 TTGAGATCAACCCCTATGCCGAGGATGCCATGTCCGGCTT GGGFGEGGDAFFFFDEB?EAAA?:AEDEEEEDEBEA:EEE XA:i:0 MD:Z:39G0 NM:i:1 SNPSTER1_0624:1:75:18585:17302#0/1 16 3R 4766873 255 40M * 0 0 TTGAGATCAACCCCTATGCCGAGGATGCCATGGCCGGCTG GFGGGGGGEFGGGDGGGGGGGGEGGFGGGFFF-?FGFFGG XA:i:1 MD:Z:32T7 NM:i:1 SNPSTER1_0624:1:76:11608:14484#0/1 16 3R 4766873 255 40M * 0 0 TTGAGATCAACCCCTATGCCGAGGATGCCATGTCCGGCTG GFGGGFGGGDGGEGGGGDGFGGGGGGGGGGGGGGGGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:78:18342:13460#0/1 16 3R 4766877 255 35M218N5M * 0 0 GATCAACCCCTATGCCGAGGATGCCATGTCCGGCTTCTTC GGGGGEGGGGFGGGFGFGFGGGGGGGGGGGGGGGGGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:50:18992:5646#0/1 0 3R 4766879 255 33M218N7M * 0 0 TCAACCCCTATGCCGAGGATGCCATGTCCGGCTTCTTCGC =FDFFFDFFDFDFF=EE=D?EBEEDD?DDA:CC?CE?EAD XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:54:12705:7226#0/1 0 3R 4766879 255 33M218N7M * 0 0 TCAACCCCTATGCCGAGGATGCCATGTCCGGCTTCTTCGC GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:76:18795:9315#0/1 0 3R 4766879 255 33M218N7M * 0 0 TCAACCCCTATGCCGAGGATGCCATGTCCGGCTTCTTCGC DCDDAADE?EAEEDE=DDADEEE==C?@@6?7@####### XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:33:17716:8124#0/1 16 3R 4766879 255 33M218N7M * 0 0 TCAACCCCTATGCCGAGGATGCCATGTCCGGCTTCTTCGC 5EEDEBEEEE==EDDE=EEEAEEEEFFFFFEE=EDDEE=D XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:62:14097:13695#0/1 16 3R 4766880 255 32M218N8M * 0 0 CAACCCCTATGCCGAGGATGCCATGTCCGGCTTCTTCGCA EEB=E=BE?BFFFFFFFAFFEEEEDD=EEDBDDBDADDDD XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:118:10624:10461#0/1 16 3R 4766882 255 30M124N3M91N7M * 0 0 ACCCCTATGCCGAGGATGCCATGTCCGGCTGCTTCTTCGC GGGEEGGGGGGGGGGGGGGGFGGDGGGGGGGGGEGGGGEG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:29:8470:6899#0/1 0 3R 4766883 255 29M218N11M * 0 0 CCGCTATGCCGAGGATGCCATGTCCGGCTTCTTCGCATTG CC,CCEEEEEGGGGGGGGGGGGGGGGGFGGGGGFGGFGGG XA:i:1 MD:Z:2C37 NM:i:1 SNPSTER1_0624:1:55:16577:6603#0/1 0 3R 4766883 255 29M218N11M * 0 0 CCCCTATGCCGAGGATGCCATGTCCGGCTTCTTCGCATTG GGGGGGGGGGGFGGDGGGGGGGGGGAFFFFGGGGGGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:12:11906:12096#0/1 16 3R 4766884 255 28M218N12M * 0 0 CCCTATGCCGAGGATGCCATGTCCGGCTTCTTCGCATTGG :C=CA:EEEEABEDECAC::ADDEDDFDBFFFDAFADFDD XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:50:4068:2579#0/1 0 3R 4766885 255 27M218N13M * 0 0 CCTATGCCGAGGATGCCATGTCCGGCTTCTTCGCATTGGA GGGDGGGGGEGGGGFGGGGGGGGGGGGGGGGGGGGGGGGF XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:55:19295:11289#0/1 0 3R 4766885 255 27M218N13M * 0 0 CCTATGCCGAGGATGCCATGTCCGGCTTCTTCGCATTGGA GGGGGGGGGGGGGGGGGGGGGGGGGEGGGGGEGGGGGGGE XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:107:17204:14904#0/1 0 3R 4766886 255 26M218N14M * 0 0 CTATGCCGAGGATGCCATGTCCGGCTTCTTCGCATTGGAT GGGGGGGGFGGGGGGGFGEEDFDFFGGFGGGFEEGGGFB= XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:5:5444:15694#0/1 0 3R 4766890 255 22M218N18M * 0 0 GCCGAGGATGCCATGTCCGGCTTCTTCGCATTGGATGCTA D5DDAA-ACADDDD=DDDC=ADDDADDDDDDDDDDDABCB XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:44:6102:19956#0/1 0 3R 4766890 255 22M218N18M * 0 0 GCCGAGGATGCCATGTCCGGCTTCTTCGCATTGGATGCTA GGFGGGGGGGGCGGGFGGEFGEFGGGGGEGGGEGEGGE?B XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:26:10801:9184#0/1 16 3R 4766890 255 22M218N18M * 0 0 GCCGAGGATGCCATGTCCGGCTTCTTCGCATTGGATGGCA GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGEEEFFDD;DD XA:i:2 MD:Z:37C0T1 NM:i:2 SNPSTER1_0624:1:31:14362:11262#0/1 0 3R 4766890 255 22M124N3M91N15M * 0 0 GGCGAGGATGCCATGTCCGGCTGCTTCTTCGCATTGGATG GGGGGGGGGGGGGGGGGGGGGGGFGGGGGGGGGGGFGGGG XA:i:1 MD:Z:1C38 NM:i:1 SNPSTER1_0624:1:117:4789:17961#0/1 0 3R 4766891 255 21M218N19M * 0 0 CCGAGGATGCCATGTCCGGCTTCTTCGCATTGGATGCTAA GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGFGGFFGC XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:28:5089:1640#0/1 16 3R 4766891 255 21M218N19M * 0 0 CCGAGGATGCCATGTCCGGCTTCTTCGCATTGGATGCTAA GFGGGGGGGFGGGGGGGGGGGGFGGGDGGFGGGGGGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:32:3686:2052#0/1 16 3R 4766891 255 21M218N19M * 0 0 CCGAGGATGCCATGTCCGGCTTCTTCGCATTGGATGCTAA CBEDGGFGGEGGGGFDGGGEGGFGEGGGFGGGGGGGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:66:9908:5425#0/1 16 3R 4766892 255 20M124N3M91N17M * 0 0 CGAGGATGCCATGTCCGGCTGCTTCTTCGCATTGGATGCA GGGGGGGGFGBGGGGGGGGGGGGGGGGGGGGGGGGGGGGG XA:i:1 MD:Z:39T0 NM:i:1 SNPSTER1_0624:1:2:14689:9538#0/1 16 3R 4766893 255 19M218N21M * 0 0 GAGGATGCCATGTCCGGCTTCTTCGCATTGGATGCTAAGC FDGGGGFDGFEEEEDGDGFGBGGGAGBFEFFFFADFDEDF XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:65:12780:3711#0/1 16 3R 4766893 255 19M218N21M * 0 0 GAGGATGCCATGTCCGGCTTCTTCGCATTGGATGCTAAGC GGGGGGGGGGGGFGGGGGGGGGGGGGGGGGGGGGGGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:97:4809:2026#0/1 16 3R 4766893 255 19M218N21M * 0 0 GAGGATGCCATGTCCGGCTTCTTCGCATTGGATGCTAAGC GGGGDGGGGGGGEGGGGGGGGEGGFGGGGGGGGGFGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:39:17671:15065#0/1 16 3R 4766895 255 17M218N23M * 0 0 GGATGCCATGTCCGGCTTCTTCGCATTGGATGCTAAGCTG GGGGGGGGGGFGGGGGGGGGGGGGGGGGGGGGGGGGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:4:4797:14319#0/1 16 3R 4766896 255 16M218N24M * 0 0 GATGCCATGTCCGGCTTCTTCGCATTGGATGCTAAGCTGC GGEGGFGGFFGGGGGGFGGGGGFGGGGGGGGGGGGGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:9:6910:12235#0/1 16 3R 4766896 255 16M218N24M * 0 0 GATGCCATGTCCGGCTTCTTCGCATTGGATGCTAAGCTGC D=DDBDDDDABDDCDADD?DDDDD?BDBDB;@<>;?@?@> XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:48:9427:5673#0/1 0 3R 4766897 255 15M124N3M91N22M * 0 0 ATGCCATGTCCGGCTGCTTCTTCGCATTGGATGCTAAGCT GGGGGGGGGGGGFGDGGGGGGGGEGEGGGFEFDEEFGEGB XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:6:19065:6983#0/1 16 3R 4766897 255 15M218N25M * 0 0 ATGCCATGTCCGGCTTCTTCGCATTGGATGCTAAGCTGCG FFGBGGGGFGGGFGGGGGGGGGGDGGGGGGGFGGGGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:8:18794:13099#0/1 16 3R 4766897 255 15M218N25M * 0 0 ATGCCATGTCCGGCTTCTTCGCATTGGATGCTAAGCTGCG GGGGGGFGGGGGGEGFGGDGEGGGGGGGGGGFGGGGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:16:19857:14078#0/1 16 3R 4766897 255 15M218N25M * 0 0 ATGCCATGTCCGGCTTCTTCGCATTGGATGCTAAGCTGCN <=?>>;C@9;=ADBAD5?A5C?5A?EF=DBF XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:17:14419:10033#0/1 16 3R 4766902 255 10M218N30M * 0 0 ATGTCGAGCTTCTTCGCATTGGATGCTAAGCTGCGATTTG ?>>?@-?ADDDDADDA=EEEBEFEFFFFFEDA XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:2:13119:7887#0/1 0 3R 4766906 255 6M124N3M91N31M * 0 0 CCGGCTGCTTCTTCGCATTGGATGCCAAGCTGCGATTTGA GGGDEGGFGGGGGEGFGEGB70?93*7?<:7:6>3FFFB: XA:i:1 MD:Z:25T14 NM:i:1 SNPSTER1_0624:1:34:9549:7584#0/1 0 3R 4766906 255 6M218N34M * 0 0 CCGGCTTCTTCGCATTGGATGCTAAGCTGCGATTTGATGA GGGGFGGGGGFGAGGA7CAACCCCCFFFGFDEEEEFDFFE XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:52:11586:13990#0/1 0 3R 4766906 255 6M218N34M * 0 0 CCGGCTTCTTCGCATTGGATGCTAAGCTGCGATTTGATGA GGGGGGGGGGGGGGGGGGGGECCEE7CBDCD@BDDGEEGF XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:55:6314:16719#0/1 0 3R 4766906 255 6M218N34M * 0 0 CCGGCTTCTTCGCATTGGATGCTAAGCTGCGATTTGATGA GGGGGGGGGGEGFFGGGGBGEEEDD@DDDDEAEEEE=EEE XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:56:17930:20920#0/1 0 3R 4766906 255 6M218N34M * 0 0 CCGGCTTCTTCGCATTGGATGCTAAGCTGCGATTTGATGA EFGGGGGBGGEEEEEEAEEAB5DBDDDDDDE==EEEBBB: XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:71:9666:15267#0/1 0 3R 4766906 255 6M218N34M * 0 0 CCGGCTTCTTCGCATTGGATGCTAAGCTGCGATTTGATGA GGGGGGGGGGGGGGGGGGGGGFGGGFDGGGGGGGGGFGGF XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:101:16533:16033#0/1 0 3R 4766906 255 6M218N34M * 0 0 CCGGCTTCTTCGCATTGGATGCTAAGCTGCGATTTGATGA FFBFFFGGGGGGGGEGGDGGFFGFGBAEGAFACFFEEDFF XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:104:10705:2422#0/1 0 3R 4766906 255 6M124N3M91N31M * 0 0 CCGGCTGCTTCTTCGCATTGGATGCTAAGCTGCGATTTGA GGGGGGGGFGGGGGGGGFGFGGGGFGGGFGGGGGFGGGF= XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:102:9041:19142#0/1 0 3R 4766907 255 5M218N35M * 0 0 CGGCTTCTTCGCATTGGATGCTAAGCTGCGATTTGATGAC GGGFGGGFGFBDFFFFF=FFBFFF=FDEDFDEFFB?FEED XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:13:3079:20441#0/1 16 3R 4766907 255 5M124N3M91N32M * 0 0 CGGCTGCTTCTTCGCATTGGATGCTAAGCTGCGATTTGAT BBBDDBBC5D@@>.>?>>C75AACA>=>C==:AC5CAAAC XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:14:17663:12890#0/1 0 3R 4766907 255 5M218N35M * 0 0 CGGCTTCTTCGCATTGGATGCTAAGCTGCGATTTGATGAC GFGGGGGGGFFGGGGFGGGFEEBGEFGGDGFGGGGFFFFC XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:51:18119:20479#0/1 16 3R 4766907 255 5M124N3M91N32M * 0 0 CGGCTGCTTCTTCGCATTGGATGCTAAGCTGCGATTTGAT GGGFGGGGEGDGGGGGGEGGGGGGGGGGGGGGGGGGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:68:4735:5439#0/1 0 3R 4766908 255 4M218N36M * 0 0 GGCTTCTTCGCATTGGATGCTAAGCTGCGATTTGATGACA FDFFFFGGGEGGGGDFGGFGGDGGGGEGDGGGGEFDDEFE XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:32:14039:13606#0/1 0 3R 4766975 255 40M * 0 0 ATCCTAACGAACTAACTCATTTGTGATTGTCATTGTACTG GGGGGGGGGGGGGGGEGGEGGEECEEEGEEEDF-ECCCCC XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:29:4268:14563#0/1 16 3R 4767128 255 40M * 0 0 CTTCTTCGCATTGGATGCTAAGCTGCGATTTGATGACAAC DFEGEGGGEGEGGGGGGGFGGGGGGGGGGGGGGGGGGFGG XA:i:0 MD:Z:0A0G38 NM:i:2 SNPSTER1_0624:1:43:18168:12378#0/1 16 3R 4767128 255 40M * 0 0 CTTCTTCGCATTGGATGCTAAGCTGCGATTTGATGACAAC GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG XA:i:0 MD:Z:0A0G38 NM:i:2 SNPSTER1_0624:1:72:14305:19119#0/1 16 3R 4767128 255 40M * 0 0 CTTCTTCGCATTGGATGCTAAGCTGCGATTTGATGACAAC EECE=AGGFGGGEFGFGAEGEFFBGFGGGFGFGFGFGGGG XA:i:0 MD:Z:0A0G38 NM:i:2 SNPSTER1_0624:1:86:16050:7108#0/1 16 3R 4767128 255 40M * 0 0 CTTCTTCGCATTGGATGCTAAGCTGCGATTTGATGACAAC GAFBGGGGGGEGFFGGGGGGGGGGDGGGGFFGGEGFGGGG XA:i:0 MD:Z:0A0G38 NM:i:2 SNPSTER1_0624:1:68:13841:15470#0/1 16 3R 4767129 255 40M * 0 0 TTCTTCGCATTGGATGCTAAGCTGCGATTTGATGACAACG GFGGFGGGGGGGGGGGGGGGGGFGGGGGGGGGGGGGGGFG XA:i:0 MD:Z:0G39 NM:i:1 SNPSTER1_0624:1:25:9762:4966#0/1 0 3R 4767130 255 40M * 0 0 TCTTCGCATTGGATGCTAAGCTGCGATTTGATGACAACGC CC5CCEEEEEGGGGGGGGGGGGGGGGGGGFE:EEEGGGGG XA:i:0 MD:Z:40 NM:i:0 SNPSTER1_0624:1:113:19575:18309#0/1 16 3R 4767130 255 40M * 0 0 TCTTCGCATTGGATGCTAAGCTGCGATTTGATGACAACGC ?ECDAF?G?GGGDGGDGFEFFFFFBEEFFDEE=E=DBBDD XA:i:0 MD:Z:40 NM:i:0 Bio-SamTools-1.43/t/data/dm3_3R_4766911_4767130.sam.bam000444001751001751 617712657431424 21351 0ustar00lsteinlstein000000000000‹ÿBCÀsrôed~ fâHÔ†yÞ¬ R@NJnjN|nfI~rF~^JQf~^|zj^~n*ƒ­3P…‘à …xF& 3‚A[5Œ$hìÃàÚX4aظ@¢2ˆ!dD>ˆAöÌJFv 34µ¢¤(‘¡`ò.F6°"õ;õŒÀ<ïÅV0ÏÌKþ§áU2g©1€¬ eà › vH8@–™¨‘ÒÙ‹ÿBC¡ ­šMÅÇÇ‹BaoÆËôº§§»^V{£º«»úåä™uä½€¬àC” Üsá#ØÖöÆK@¶ 6&JL¬™€„”/àÀGà„¿}‘[K2¿:YËÛlqÂô2›f-‰Á/ŽQŽ:Â_SÊ­UÉüZS,¤¢}©DV„Q&E”¤áF¬ró¨ÏaQxÌ÷}ÏñE^ø€ù­ÅƒÚj††{ê3 õB(ÀÉd…ÅÊP_®Ã×W7òðv)‘©njàîZ¸¿Z«¡‡}%àò<*+ÍvÁ²½ßî@[¸œ¢yáoxqs©¦ﳂ¯z„åÑçÀ£é‹¤H£¨ÛæxÿÀ¸A,òœAåF¸‘…» _o'ðÛ'ˆ¸Ì ˜p³|DBƒLÌõm¨Á}aá¸û$ñ\Õ<‹X™hû3DéÿÂÿHÀ÷¿h$lA–¦ÇXËÌx-àwfkâɶÔèczQ^dq* ~«Ÿž3>‚/“E{o'KLŸÄä¬öâå+?¨"pt$M¾[ƒëí³T’¦…RB®Ò­XÞd¹N¯ÆÖùl)Üö‚í…¹ÏDnÊOî'„[±¼“«:i2?!>q06ÌîÍr­-Û»cá¾°«ˆc¡2LófWY´§ˆ¶*Ûü «Ê‹wëöe¥[¿=Í#ˆuae½áº«½Â{îS ÷7ë³}àB±$ź-ŒsaÂÝ}K÷3þ÷«›:iZ¿.›˜Îf6ßjGáÛ½«_ ÙUHb1<$*7hïZ4ÞWÁ·è³ÄyŸèI‚õvù º³ÄW<°T(À%ò\”"•å%¯½>_´¼Py-vɤ¦üÀ$yHý˜ö=ó=œuû³ËÓ}oæÍ¦M´Ï-Ú£*’ôÈÿY‘ÇQ j uÌXõH‚­œ–Ô›Q›èèhÇÀQõ,,èVïÑõ  €r= ³SDTïƒS´ºÉA¨0Ñ­œíØE+Úν[CëG2ÝþÓ¶ ÛÆÖ@`¦×©5dkØþ\cëÝç nY‚!Ҭܗ]ï²çŽ]ÇÙwÜ×'Žë¼æÌ|oæO§øù¥ñþþ˰vªì`g‡g‘Gš©˜ù³°ß¶V*1“\Áì*!í«¿"ݽ³Hf…”™M§ð2Ù‡Þ?ðéØóÇÄûã.mË÷—[ï0‡¹!! !e·á¼éÔ›¿Ü"âaSs £O±ÁNŽÄ5)uƒ]Š÷ÝÛÃQ]¤rQdIh—,N‹;´«f:ö,UCáI«ÙRŠg`‘íáħ+l=ÄKpè$³"–*îb›´Ùf3ߟ‘—ÀÔÊ|Áƒ_ã'fž­Oæ0»ª#£\Õ{}7¤÷Ê‹8è•ê'Üi±´©P_Ó{ .‰`;£+§8ïÅF)Næ°&°^ѱ ”¶Œ§k¼u[&aS¡ƒ€¾°<ÀßÊæ1†XÄñ©gΪá7žŒÛ£êwK<P©ãÉaΚf™Éúï¶‚Ý/ìj‘ŽèLq¢GÄU;Èô<"Ø{͛쾼ç]vöœKÓ]` œrðŸÜã†á=ù¡ÿ¨ê’<‰2)GvV@GÓµõ›ŸZÇêÍß#¾¯õÔ®ªÏ¬q&˺ §'CØ8¨K2Ìy.zõÃS”=€9Îmšë¼âɰ¥oŽ@{dc6ÝæÆÞ‹ æàÎ==èá”.ꔞyÔO8[¬zèjŽý`l/jP<_÷´Í=£p)´×J)¼µ¡Ò3oª ´þ#ïÎOJ`–àI¬*3ì6:ðÄÚ3õf³Àg>÷‰®¦x‹îAk[û”OKž¬Gqõ )‡§!¥™*Êb¯‘D¸Ûm{ß^‹¨ÈE¬ëÏØŽa­‚x}¢]ŸÌ—»¨¿®ÑÔÕÃC !9ðPÃ&Üýé{R ‰B¤8ªƒ2ªb« 8Ҍ˕mÛ§4ȘÎfÓW§PV‘½1>êN‰ë:>CôÉs0Æ™Œ2õ¶ XØO7•a‡Á«û1(+é6Áï+ìQ _†I ´ž},-•ÍÙê±¶^ÝÍÙ¤45^*ñ OÄ+V¿+€ÖáÁ¾ÃK$ÊO´-,Ûuí”VÞtú߀{aRߣÀ±¬TBU7&äÖî|÷ÖîíÉÉñüä889ÞmŸ8™”.XÊcÚàçMÓ„úØBÝùqÀ}C¨=#…·¯%+¦v±,¯Ž ›¥™-“˜C7¡ÏÁv>©qõ½e‚E2Í6‚u›ÒZãzF°wQ <_mò_†æúF'†A’3wGËb¼ì,;‰µ’‰€$+¶æÛ6¦*FÌ2u:·£Î.®êÞáÁpe†I!‰kwW#ÙEVµm›jý\‚]“æîèûëÞý/$c¿•ª:/uê‹b-D÷5Wq0Ô:å_4}ñ£ë{!ï³æ‰¾¨)E¾‘Êc„úÜ;ð̾á1œNŸ>6ÇbÒ¥˜¶šTÿ»uº-‹ÿBCBio-SamTools-1.43/t/data/ex1.fa000444001751001751 623112657431424 16222 0ustar00lsteinlstein000000000000>seq1 CACTAGTGGCTCATTGTAAATGTGTGGTTTAACTCGTCCATGGCCCAGCATTAGGGAGCT GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCAC GGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG TCCCATTTGGAGCCCCTCTAAGCCGTTCTATTTGTAATGAAAACTATATTTATGCTATTC AGTTCTAAATATAGAAATTGAAACAGCTGTGTTTAGTGCCTTTGTTCAACCCCCTTGCAA CAACCTTGAGAACCCCAGGGAATTTGTCAATGTCAGGGAAGGAGCATTTTGTCAGTTACC AAATGTGTTTATTACCAGAGGGATGGAGGGAAGAGGGACGCTGAAGAACTTTGATGCCCT CTTCTTCCAAAGATGAAACGCGTAACTGCGCTCTCATTCACTCCAGCTCCCTGTCACCCA ATGGACCTGTGATATCTGGATTCTGGGAAATTCTTCATCCTGGACCCTGAGAGATTCTGC AGCCCAGCTCCAGATTGCTTGTGGTCTGACAGGCTGCAACTGTGAGCCATCACAATGAAC AACAGGAAGAAAAGGTCTTTCAAAAGGTGATGTGTGTTCTCATCAACCTCATACACACAC ATGGTTTAGGGGTATAATACCTCTACATGGCTGATTATGAAAACAATGTTCCCCAGATAC CATCCCTGTCTTACTTCCAGCTCCCCAGAGGGAAAGCTTTCAACGCTTCTAGCCATTTCT TTTGGCATTTGCCTTCAGACCCTACACGAATGCGTCTCTACCACAGGGGGCTGCGCGGTT TCCCATCATGAAGCACTGAACTTCCACGTCTCATCTAGGGGAACAGGGAGGTGCACTAAT GCGCTCCACGCCCAAGCCCTTCTCACAGTTTCTGCCCCCAGCATGGTTGTACTGGGCAAT ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGA ACCACACATTAATACTATGTTTCTTATCTGCACATTACTACCCTGCAATTAATATAATTG TGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA CGTCCTATCTTCTTCTTAGGGAAGAACAGCTTAGGTATCAATTTGGTGTTCTGTGTAAAG TCTCAGGGAGCCGTCCGTGTCCTCCCATCTGGCCTCGTCCACACTGGTTCTCTTGAAAGC TTGGGCTGTAATGATGCCCCTTGGCCATCACCCAGTCCCTGCCCCATCTCTTGTAATCTC TCTCCTTTTTGCTGCATCCCTGTCTTCCTCTGTCTTGATTTACTTGTTGTTGGTTTTCTG TTTCTTTGTTTGATTTGGTGGAAGACATAATCCCACGCTTCCTATGGAAAGGTTGTTGGG AGATTTTTAATGATTCCTCAATGTTAAAATGTCTATTTTTGTCTTGACACCCAACTAATA TTTGTCTGAGCAAAACAGTCTAGATGAGAGAGAACTTCCCTGGAGGTCTGATGGCGTTTC TCCCTCGTCTTCTTA >seq2 TTCAAATGAACTTCTGTAATTGAAAAATTCATTTAAGAAATTACAAAATATAGTTGAAAG CTCTAACAATAGACTAAACCAAGCAGAAGAAAGAGGTTCAGAACTTGAAGACAAGTCTCT TATGAATTAACCCAGTCAGACAAAAATAAAGAAAAAAATTTTAAAAATGAACAGAGCTTT CAAGAAGTATGAGATTATGTAAAGTAACTGAACCTATGAGTCACAGGTATTCCTGAGGAA AAAGAAAAAGTGAGAAGTTTGGAAAAACTATTTGAGGAAGTAATTGGGGAAAACCTCTTT AGTCTTGCTAGAGATTTAGACATCTAAATGAAAGAGGCTCAAAGAATGCCAGGAAGATAC ATTGCAAGACAGACTTCATCAAGATATGTAGTCATCAGACTATCTAAAGTCAACATGAAG GAAAAAAATTCTAAAATCAGCAAGAGAAAAGCATACAGTCATCTATAAAGGAAATCCCAT CAGAATAACAATGGGCTTCTCAGCAGAAACCTTACAAGCCAGAAGAGATTGGATCTAATT TTTGGACTTCTTAAAGAAAAAAAAACCTGTCAAACACGAATGTTATGCCCTGCTAAACTA AGCATCATAAATGAAGGGGAAATAAAGTCAAGTCTTTCCTGACAAGCAAATGCTAAGATA ATTCATCATCACTAAACCAGTCCTATAAGAAATGCTCAAAAGAATTGTAAAAGTCAAAAT TAAAGTTCAATACTCACCATCATAAATACACACAAAAGTACAAAACTCACAGGTTTTATA AAACAATTGAGACTACAGAGCAACTAGGTAAAAAATTAACATTACAACAGGAACAAAACC TCATATATCAATATTAACTTTGAATAAAAAGGGATTAAATTCCCCCACTTAAGAGATATA GATTGGCAGAACAGATTTAAAAACATGAACTAACTATATGCTGTTTACAAGAAACTCATT AATAAAGACATGAGTTCAGGTAAAGGGGTGGAAAAAGATGTTCTACGCAAACAGAAACCA AATGAGAGAAGGAGTAGCTATACTTATATCAGATAAAGCACACTTTAAATCAACAACAGT AAAATAAAACAAAGGAGGTCATCATACAATGATAAAAAGATCAATTCAGCAAGAAGATAT AACCATCCTACTAAATACATATGCACCTAACACAAGACTACCCAGATTCATAAAACAAAT ACTACTAGACCTAAGAGGGATGAGAAATTACCTAATTGGTACAATGTACAATATTCTGAT GATGGTTACACTAAAAGCCCATACTTTACTGCTACTCAATATATCCATGTAACAAATCTG CGCTTGTACTTCTAAATCTATAAAAAAATTAAAATTTAACAAAAGTAAATAAAACACATA GCTAAAACTAAAAAAGCAAAAACAAAAACTATGCTAAGTATTGGTAAAGATGTGGGGAAA AAAGTAAACTCTCAAATATTGCTAGTGGGAGTATAAATTGTTTTCCACTTTGGAAAACAA TTTGGTAATTTCGTTTTTTTTTTTTTCTTTTCTCTTTTTTTTTTTTTTTTTTTTGCATGC CAGAAAAAAATATTTACAGTAACT Bio-SamTools-1.43/t/data/dm3_3R_4766911_4767130.sam.sorted.bam000444001751001751 617712657431424 22650 0ustar00lsteinlstein000000000000‹ÿBCÀsrôed~ fâHÔ†yÞ¬ R@NJnjN|nfI~rF~^JQf~^|zj^~n*ƒ­3P…‘à …xF& 3‚A[5Œ$hìÃàÚX4aظ@¢2ˆ!dD>ˆAöÌJFv 34µ¢¤(‘¡`ò.F6°"õ;õŒÀ<ïÅV0ÏÌKþ§áU2g©1€¬ eà › vH8@–™¨‘ÒÙ‹ÿBC¡ ­šMÅÇÇ‹BaoÆËôº§§»^V{£º«»úåä™uä½€¬àC” Üsá#ØÖöÆK@¶ 6&JL¬™€„”/àÀGà„¿}‘[K2¿:YËÛlqÂô2›f-‰Á/ŽQŽ:Â_SÊ­UÉüZS,¤¢}©DV„Q&E”¤áF¬ró¨ÏaQxÌ÷}ÏñE^ø€ù­ÅƒÚj††{ê3 õB(ÀÉd…ÅÊP_®Ã×W7òðv)‘©njàîZ¸¿Z«¡‡}%àò<*+ÍvÁ²½ßî@[¸œ¢yáoxqs©¦ﳂ¯z„åÑçÀ£é‹¤H£¨ÛæxÿÀ¸A,òœAåF¸‘…» _o'ðÛ'ˆ¸Ì ˜p³|DBƒLÌõm¨Á}aá¸û$ñ\Õ<‹X™hû3DéÿÂÿHÀ÷¿h$lA–¦ÇXËÌx-àwfkâɶÔèczQ^dq* ~«Ÿž3>‚/“E{o'KLŸÄä¬öâå+?¨"pt$M¾[ƒëí³T’¦…RB®Ò­XÞd¹N¯ÆÖùl)Üö‚í…¹ÏDnÊOî'„[±¼“«:i2?!>q06ÌîÍr­-Û»cá¾°«ˆc¡2LófWY´§ˆ¶*Ûü «Ê‹wëöe¥[¿=Í#ˆuae½áº«½Â{îS ÷7ë³}àB±$ź-ŒsaÂÝ}K÷3þ÷«›:iZ¿.›˜Îf6ßjGáÛ½«_ ÙUHb1<$*7hïZ4ÞWÁ·è³ÄyŸèI‚õvù º³ÄW<°T(À%ò\”"•å%¯½>_´¼Py-vɤ¦üÀ$yHý˜ö=ó=œuû³ËÓ}oæÍ¦M´Ï-Ú£*’ôÈÿY‘ÇQ j uÌXõH‚­œ–Ô›Q›èèhÇÀQõ,,èVïÑõ  €r= ³SDTïƒS´ºÉA¨0Ñ­œíØE+Úν[CëG2ÝþÓ¶ ÛÆÖ@`¦×©5dkØþ\cëÝç nY‚!Ҭܗ]ï²çŽ]ÇÙwÜ×'Žë¼æÌ|oæO§øù¥ñþþ˰vªì`g‡g‘Gš©˜ù³°ß¶V*1“\Áì*!í«¿"ݽ³Hf…”™M§ð2Ù‡Þ?ðéØóÇÄûã.mË÷—[ï0‡¹!! !e·á¼éÔ›¿Ü"âaSs £O±ÁNŽÄ5)uƒ]Š÷ÝÛÃQ]¤rQdIh—,N‹;´«f:ö,UCáI«ÙRŠg`‘íáħ+l=ÄKpè$³"–*îb›´Ùf3ߟ‘—ÀÔÊ|Áƒ_ã'fž­Oæ0»ª#£\Õ{}7¤÷Ê‹8è•ê'Üi±´©P_Ó{ .‰`;£+§8ïÅF)Næ°&°^ѱ ”¶Œ§k¼u[&aS¡ƒ€¾°<ÀßÊæ1†XÄñ©gΪá7žŒÛ£êwK<P©ãÉaΚf™Éúï¶‚Ý/ìj‘ŽèLq¢GÄU;Èô<"Ø{͛쾼ç]vöœKÓ]` œrðŸÜã†á=ù¡ÿ¨ê’<‰2)GvV@GÓµõ›ŸZÇêÍß#¾¯õÔ®ªÏ¬q&˺ §'CØ8¨K2Ìy.zõÃS”=€9Îmšë¼âɰ¥oŽ@{dc6ÝæÆÞ‹ æàÎ==èá”.ꔞyÔO8[¬zèjŽý`l/jP<_÷´Í=£p)´×J)¼µ¡Ò3oª ´þ#ïÎOJ`–àI¬*3ì6:ðÄÚ3õf³Àg>÷‰®¦x‹îAk[û”OKž¬Gqõ )‡§!¥™*Êb¯‘D¸Ûm{ß^‹¨ÈE¬ëÏØŽa­‚x}¢]ŸÌ—»¨¿®ÑÔÕÃC !9ðPÃ&Üýé{R ‰B¤8ªƒ2ªb« 8Ҍ˕mÛ§4ȘÎfÓW§PV‘½1>êN‰ë:>CôÉs0Æ™Œ2õ¶ XØO7•a‡Á«û1(+é6Áï+ìQ _†I ´ž},-•ÍÙê±¶^ÝÍÙ¤45^*ñ OÄ+V¿+€ÖáÁ¾ÃK$ÊO´-,Ûuí”VÞtú߀{aRߣÀ±¬TBU7&äÖî|÷ÖîíÉÉñüä889ÞmŸ8™”.XÊcÚàçMÓ„úØBÝùqÀ}C¨=#…·¯%+¦v±,¯Ž ›¥™-“˜C7¡ÏÁv>©qõ½e‚E2Í6‚u›ÒZãzF°wQ <_mò_†æúF'†A’3wGËb¼ì,;‰µ’‰€$+¶æÛ6¦*FÌ2u:·£Î.®êÞáÁpe†I!‰kwW#ÙEVµm›jý\‚]“æîèûëÞý/$c¿•ª:/uê‹b-D÷5Wq0Ô:å_4}ñ£ë{!ï³æ‰¾¨)E¾‘Êc„úÜ;ð̾á1œNŸ>6ÇbÒ¥˜¶šTÿ»uº-‹ÿBCBio-SamTools-1.43/t/data/ex1.bam000444001751001751 36721212657431424 16444 0ustar00lsteinlstein000000000000‹ÿBChH¥½ ”¼iYX]ÓÕ—êKÕ÷Õw}¿þÿ𦀩ûm@ºk ¦ÇqÌ $zppǹ˜ ºæ¢Çî>%SXåäb4¬+99&¢1ÞÖÅL£Éz!º¢D"$Y“`‚ÙÍ9ê&YwöyÞË÷Þ»þf¿¡««{tê×ÏûÜß粸xjkP©TÎ/—ûo}zÞ{M·~þÌ—î?óôüþûwõö¿~5šŒ”ßõÙï¦Ãzþßjð…ÿ‡•‡vÊú•.üðÞŠ|¢çž·*OTÎàý‹üÁß/&ÏŽf½ùp>ÏdzÁ|ÔUÎá?ÛîD«ÅM¶ºV«Õå:èœúCÊwû9/HòÔ /ÞõØO?õXå˾ô±Êe÷±­ËÞc•5GxSŽäe’7\<3>;Í'ð·õçƒñtÞë *]øÿ±°\I |‰#‘À›<+Šð8/⽜cY˜X¾•cÙ.©rω¥÷ìx8ŸÎÏ`8M(ÇÍ]…" IšHBà-À {$ÜO#ç9<³øõ ˆçxzóþt6M'óYwLÏçrÙi¯/ƒõz}¹¾oÖÎîaíž|ÙÃvðÍááÎAýð~ÚÙ?(7åõ¥P^P**”=øJn¡ÉÐMÓùxÒ›OFSJƒ&íÕ¹Å+$)©DY%ÚæT¹ôQå°„âf•ñ³ãÞ|<ïMçÃñÈÓ£P4 §«ÅiSå×”½KsÇi\#»Íå!€²Pjœ*[ïS dϹ ôzÃgûÈ(}¡Á° rÄdÈ Êâ4*‘E~WZ„EŠ¿lŸ i>Fvñ†²ËÉ2Þ…¯a—‘†d H$ã&\– ea|Ý? $J‚‚#y§Ë¾ ‹8¢èIDò'\GÔ›NŸE êõçc Ïl„9È./—ȳ—§Ùò´½È®NNÈINrBò“|Oà•¾¥?ÑÊ9@©øˆ—Dñ ó è”a·JŽ"1p¬—ßæð•1ɩňw­ˆTiÌB‘ÜSd~$È,``Ôo£ùhYá“"Á.øùɇXž£ïñùü‹›gtzÃè8°‰L·\†’SV«‹ÓÓs&·ð´Ò“´Õ‰®ŸD''ûQrÔ£ÚATbô2€RU,Ñ– rkúÅå#%”ÿ¾þµ"F}4Πx§ƒùT.b‘49š„§+Ðs)'Pè°YÔÁÔHE‰÷“ä8jr,šú_å•¥)’X>_ÿŠcyü&0Aà´ôÀ*úLÏ)g8Ú‹rË^®i—ðJPDq€¿8L9”/òP·èç(‰ðù,|ýªèžOwŒ<;ŽúÌ—Ó`,;—+Rê|OB„jÁÿµP¹ÔkuE 5E'ü§^EøO’*ÿ¾~C™¢§°-|gÇSòHgu^1%WC0äݧ|'ø~Ôw‰`•×s »¦õKi–\‹lò¿W§rçgÓëÍgSv>&Q(–Rrêðñ- LF²V+l€Ž+Ò´ûÎGØ¡Bõ|>)î-5Š“!=ƒ&«åÒ_U´ëyvX÷Å&’ðO£n1ŽQ|ŒQ¥ß›=ûÆÇÝÞü¸9¼ô†ýpÎ{Ü*a–˳S]Õå‚Tù^Žì1‡AåÜår±ˆ c”Tž‹]J <:ØÝMvï©rWhA•×¢Hÿqý uRh—˜C`Ôu“ù„{ åñeûŒ{ éaA„äÜÜŸ4Möwƒíà0àHbîý„÷¿V˜Tùøú­Šær÷û¨ì@ÿÏ&`•ÅY[5‹ÔŸŒÁãŽÓ0 I‘î¦̓Úåu¾ú¢‹¤Ê¿ç,,Ý(ˆ‹ÀõºóY¹ :&ÔŠ5L”×¼UìîÛ¤XÎM¾X,õ-†E©g®Ë `LAºû}vFQKŠEªÿ‚‡®Å(DG*Ø)…X¿°<X2íâX~¾~F*» útŒ[Ð)^M‚«Hõ.SN¡Æ.ž×Ò§µÄPv>ct _ÉÃ:¿ þ‡EñNç°Dh!y("h¶á€À½Tˆšø? `vvêäpg:xCöâÃÃ:\æ¬{*XW£§+¶1úCE Ÿ7¸2™A:޲ë²s(àën©b“)r$`KöêõühGñ¶È«ÄùÜS€dà•ß”|Ûë ëpÞqêqf)Á\|Ÿ(ÏNJ_ó“:~?8IÒ“z]Q-H•s“Yžvô‹•Ò2 ÆEÅ?ÎOú6aVí‹…šåæš¾¦h§Sr(B‘;>~b©ë„ùÏðõ‹•2Xœ è§“É|8q•+xÝÙòì¼§ÔHâV.¸ü8SÙön±oo‡K°ì¨Ü"°|%bYHŸ[ü®RQ|n@ª ÑdÀèRÒã,º —˵A†)ç ‚ù<‹’ïŸÏýu*–Êaxù>±,/;ÙåED‹ð:h·jLÄR ~ ék’$QT¯£òáü¿û .ýÌ7”Ÿùœò™‹±$B—æ äè´£ËÕz,Åg7¹-•kJÓ^-îR‚×TàŸþÂóêG>!ÃâÍIómËËE^\‚…»\C­‰¨xË\Ù”Eê—ââôÿ¤C*PD… ¥P(0u®·´“o/ÂÈÌr©OŽŠBŸM Ñ?çÀ²X~J¨ pDðø{ÃÞ|ÚÉ1º($i/—릋~ÒzBŸS$ð[*B©Ë#:$/(G¾¸~ À&ó)÷‹ $‘ŠTñd7*Ã]¯"½ªØ~q |¢¢¹=¡0~™ö˜R×OgѾ¸M©Ã".ŽåK|7K7ç ,sÅDgNgB¯>S&ŽÅ•ú¡œ 2ñó[­¬8̳īх­*•@^½ÅR4R„€I€"`Û^—±­‰eåÒ"Æay™å]üƒ‘}3C— ––`@Šez@œqß­Î'Æ/aBÐû{ážú¡_¢«³MÊs'ñÉÅkʾ{5Ú·)|ò”îv*`T‹ö˜u4¼ІÇèU@†ïy?€ÔcY»¬Lóèïsin·É^#©%Gª7ˆÇcfTÆüGE‚CÅA3ÍÜÿ^•:#ê,VÜÿ&…úM=BêâžñÕ<¸‰ˆ‘„°¾…u©ËHP~´Â Þ‚µioDÑ]G f<2TæT"’°dÊfýHÉŽ9•é·9hò(ùgRƒ¡'ÈÞã ³v&Uo`hF½­A7 Ç|uål®/.OÛë+•(Ê; iæþì®ÐkF½ö¬N–7m•‘=êµ!¸!óñx>jðü˜B•ÅiÖYFw iêðuØhR;¤¿¨© ÷vkûûA"Îè¥\„Í4Ã÷9óók-¶€s4ÁK¾)OÉóÉÖËèôôŠg¢Ò¦ auLbpY#XóñËG¬û8`ù¹Š’M-Öç½$žñPŽgu±8íܵê[4^†#j©©:§Kò7d¹Þ#ËÈb÷ã#æ ˜T¹1’ÌìI©,åTÉ›MîÑߪØîÑ3[2 dÁ›£þl8Á1MyÚЄâ‹3³:Ó¸Ö5#ŸH ,ÛåÍRŽ]°½#´;L¦Õjw:Á…atÊ²Š˜ìyF‚˜„™R€¬KLÖý¨ãŒž,?]QR˜À'˜ƒ¯m6`Z‰–D‰N/Í3bJ¥ŽÉAž+–õKabùA]ž,Ÿ.±Lñ®¦×`„|ÃDZeÛN°8[ߥ¬A²”ïH ÿ]½äë¶^XÿªˆCç—òªf„ÑN"溼LKá p.AcXÇ]qÁfK¤jýfÑJóºˆvõqËßuPåíÒ,öû]šÃÄú…à™v™¿d¥£sn^¦âsö†&­8–§|X~Ìå­2$»8Aå2@Yw¡7dÚE'ÊõzuÅÓtöÓŠ‹¸•²C|îÂmX¾ZÒ¸eÒÃR­>ؤa>àJ×å¶Mdê-3¹§`1“ÞïÜ*/ޏ5‚`X .]¿;ö€!êBLøÿd ~Kññ9/Ì+"-nQ¤ÿ ´-»…#XAÎ-Ùú2¸.âÇ >¯€1ÍÑ›•üu_@×ãNÇóþ„©] K“ú”Ê©)ÆÌ2LÊ6YF,â`Å*¡à÷Ë_|Ñ_Ü‘­´ºÎ΃ ¨4ÿ[4ÆL²[Ð(¡¼Ì,ùg< –þñÊOòï%ïÑ©›MñæsV9[†Áêâ,º ³v{}ÑnÖ±´1¬ÕÂÚáa½±W«‡yÏÞQ†yшÙá¼ð­Ê>yÿúwWNþ¼KËæè),9G¬‚ݽÚ^#ŽCðGŠ8níÇf©MS‰¹Ðâ›ñÆ û¦êË#>^¡šuÜÃ[ÍøK£>(kp„×Òõ?›’7/TlÏúë¯Aaáiør(jæ¼PäÃ@eEY#ƒÐ׿PÐÚšU-Ïq½Ê«Z0éZu܆¬ªåôZr½¶0Ø?(˜FX…’ü1]`ÿ¢f„'X0·3ðÙ†ÌÇ·°\iž+ÙÇ›œ¡8 M(ÂÿlÅÎó=¿Å®{KN¡‰ `•)÷¥úZA'ËÖMdD¯k6±ÊÏU¤7 Îç«y¸Î 7úX÷4 5ð|L ‘£Œ°4làø+¬‚DIM³‡PL³÷m[¬K¦1œÏÆà^‹r9LæNŸd*œÔ§ÜÅý‚ã€V<ÏÇsåS2†ÃéΧ^-§rìõª“]Y ›—¿!Åq¡d½.õ/:¨òNÅ1—z€Q2„<£Ñ´¬ ÖI²¸^ë.µV¬€y7ô ½Ìr–¿¤8&â¦_‡´Ra—’ÛcÿÂ& ,Ÿ¬Øîý»”¬0 {FôvmÒw‰÷'tcf2 ëǼ¾1û¤ƒ._#ý’2ÔÀšàÁtîxÊ e=°8-ZÏç;£(XØUß32C _3_`Cq˜ )3‚äLÊ’x|þ¬pÛ=Lò»d‘MYðÓ›`86T ŒÁ5mйx&¯ÑWÒ(yØ „ÂòÓmû5\žèÍSŸ¦D'¼<Ì$ËÚ—6g±ažH%ã½íÁŒ+“G……Zo`Gå.3tš­VÚJOòf7ãøää%yq’¿$¾ƒ@šwî('û‘°ª‰wk…j•Šâ0 ç}ððû/÷=–Œ`,ˆ1á^@s¥YÌŽ,){SÕÅbx°´Ã(kGÁ2Z.¨+¹nn7£zÔ‚½½°Æ^c¯žä­z ]ÙÝÙ„¹â$Ð12Õý{xL,Ë€{à€šsö4˜óæº)úˆ,ïÁKáqxBmó¦èüS;:ÿf™A¡H°œY`Ô—ZãW.'áþ Ó&ùƆ®O9”Ú;¶X.£Ìéè`±qw¢ÈG)·˜n˯BûëÛ¡}ÿû}))4S0Ì-˜g`œOp{@\PŸÅgwl(:«üãŠVH…ëà»Íx.߆râ}JîÙ”)þtž\É\~¿7eùŒ}ÀiêMx¦ØÄb;úâ.T)éb%PDðƒõá‘aw°Ž|ÊÌW3npJ–5±Q*%¾dŠŸRª}¥fÜy@¿éà•C‚€"nLg—3Å$ɵV¤Wðå;9ÉãM)‚ÏTlçZ@‘%ã”ö°O³7eεA“èÖl£S™:±ŽG4ºý …W”ï(ÿ¶¢¦NX1Ú`‚=˜04Y.nAÃŽ(¾Å‘Ìò[;R~ÿ–¬¥ŸbiÞúLðVŒ1‹E–&eÐe“„3«rœ)™¯ þl äC%Y°‚|ʹÖU·nQd}[¬n°­u¡o#y¦D‚-]‰Äj/¸IÙùgf$7i¸Ï–\+i‚Í)¯H\(6ê()ÙÄ Å²†Â™Å6œôiÆ'þ»ÿqKÖþfÏöfpBØA‹õ9`™¯¨Ë%£Œ’­‚0*šðá1©7À‡NvФAáÔF´¹8Ê“|»4‹¢cÔºÃö“ô9=׆m*Ë\›«%ŤÎE“^Æ ‚$ aš‰AoËVd³*m‰+·/T,V•¶.E@œft¼‡GµfÔLv£Vk·E»VÔª%I#Žâ8NÄmË÷B1$ú[e 0KÂõé­vŒòl¨ Å6‡ Pè78©““„”—-Þ„Âúˤ%B>¾ÃÝjOÙúú ±\K,µ¸–%I«V8)Z­Úa‹¦cEÙ)‰žªëâç·Kn‘X°Îÿuò„\5ý&³°* Rg"DÜA¯¦ÿž‚Å Ãî)÷§,•ßʰŠÅ÷=`ŽcÂî– ë1ƒ÷GìGüÀ4eý’ź‚0ÿ¦b‡ïß!}æÑ¡—¼2Þå‡É/¡êéjzŽ*œ|;ò–¢Þ†åžtéJÂà¥%hš>¿ý·±0z`lœ°·ý‰½O€—]¬;1aÑ›–ñÃ[̽â·sÚÖK‹Vxg¼q>m™ã [N%Q¹11øùR %çb·äKDpêîŒ4,®ÞüCóÆoB /·ôs½¼ò;•‹Fú5Ч¥Ë8¨sž*¹QN3›¬¨'–ïhlhê*ÊÅѼd’euE³³E‹d¼áއG*¥yiÉ+ß©xºŒoÇs¦[zÃÁ؇ÅzRåëˆßZWPß¡`ÉŸd„Žò»JEµÔ v{ÇLâκÜVhVëk,}Ȱí`_‘ejÕè1ñ¦Þ­‚â©„ûuÊŸö¢ÝY,Ù›ÃúÞöÞÎáNýà hÄñÁÞ^#kÔóZ+i˜Gµu#j±ùph<"5܈vèÌæFú}Ƶ&Ó–×™™v+ð# ½Sj!œÂü…Šm?¼ew ¡_7(«y­“ñÄÏB˜ò"J¼¹Rå?: üU€ò¿©dÌ1µŽ·Ü}²xÄQi¥"¢!ä¦Ôúïá ýqý„þÞs€ËÔ:ÏàûqÊóŸ f½¼¸›p NpxBé½íY¬I=¬o—yŸŒ»•Ä4ΈÅ4Î?Ä+¿¥,A’ñŽLãl䳸k 3{"ú&¡_˜Åý~ÅÎq|DˑҖ;Ìÿ`lįüU¦½\g+L+(œt ){zöëd¿v$о¦¼)òÄŒ[_¡‹F>¬×9Ó-½îâÖî|2dZt0Ñêt­û%Û4XÏJ‘Fò¶Ì›ûƒŠm‰0c{ÊÝ9O­yF¬!øØ`¬œÓàa_­à˜ÿ\±³?ߣz-}ts'4ç2í¢’áå3–õ-åÆ ·-_za­€Iߪ›El p³èi´± Ü¦ô|m§“FitºPØjf¢°]ò5¥çb7Œ0.oš;Y–Åd7Çvkêdž”/}DùÊmþºÒC!ˆ‚…“=,Rz°˜ÚMS5 ´ ¾ HÈö†æ–néM×´¹Ý–ÁÁð$ª&ôv—„Wƒe÷êxXÔ5)ó¢CŽðˆxíë^uaÉmQŸËŽelvŒV·ìq$? htð®lˆõ¿èJñ±K¨Z.@µœ vûú¼ô,÷j-¤FRK@½ìí…$ɰ¿£Á{¿˜k»P`2½½e[+V€a™Îû´›’8a¤š,áééÆL·dß§}ì‹“æ!aƒ¥ˆ]=Í”&”õ¹¨UߌÅR¼÷,™C¦”n·³÷ÚñF€M{GyÔÔ´»™w÷Æ{Â`·çB€ñtvPÍø¸ iKF!f9ráO~î¾Â1ÂÅ59f†„A‘àL*–"S¤(8=í¬ÚapŠŸÇ.‡„Ÿ}$`Ðh¥Öó°Q&`¼~U}ËŽ‘pÐB¬K·9TÁ$Op·HöÃD„ÏÌÁ’c)_¥v9àmËÎ{¿¿ûŠ‘÷ž‚„ÏúØ“Â&eXÚ¨Ý\íIø`ƒ4¶ßi‰6¡cøä¢¤-üË[,eÅolàœÀ<ÎgóawV¹ ÿîK+Ìb”€Ú×ôĬ²W·\ÝQ~EeŸ’§®³Ï(Þ8c`ã ž^¯MYÔv½d¼rÞY_\ÔêqcÆÌQ³Ù €{Y$Å1Nü Aî'q¦ØoT‚¯˜DÒÀÐ>Õ—ï§y°Â3áh¾!¢…óL•ÏU•šH]Fœ«æ~I$¢þ[Ésñ€¢—IJú}˜ êÁÕ¢ÿ7¨ü0Õݹh¬²H°RG2ТmÂï»êôWÇæÓr¤Ø “P‰Ø0Ëšh¥”ací£Z&Ân¢Uq¬"þfÑ*bäa¼ª¯³ t>Z˜`„Ï…mU¬ÕJªDl¿zJÜ8Z­”3î OÛçõ¢Y’8c¹‡œÞ%¹,M åü7<©Çu úkÊIÑê+¬mŸ»Ì€š4‰Î½‹°†$1Çòø­X ÏâïË aVõ^ÎðŒ±Á‡Å¾&Z-¢6ËÉ-Ï+XX?¯äìñ=W¸Åî絡J‚›D„CyÂG–— YŒQtÿ~÷Ëòˆúxƒ‚-ÎS:7‚™OʲY¯{e»àÑžÏù{^ÁbFº?¥ Œà‚=:‹Å}â¶„rÆ ¨|”»yÿàS+‚ P,•v±dC‘Üò³ï¸ú´l«?½?ª>úñ&ª¼ÔågeêJÔù Á×ÿf£–qòðЋåÖç6þe€ã-Y|WÖÃ×™,£µ'@é0ýÒJkûVi3ó Iš8<ïßå•(R’FLÿc¤Èÿª|r],Üd!0É[ É“È˽‚Wæ[²N³,ê­Èü¯kîR¨Ó¤½¾ÚÝËT‘ÆÐHö%°EƤ]“*sU~CzQ(F=ÖåÙëviÎuÌ'c™`LrKM„±rííeyÔá0`ªñ8æÊÇ“­¯|-ë6·xçʼ®„"gÍôõËc®Œ‰M#ŠI]Ô+94°—W„8Ÿ;Ì4x«ég{˜‹~<ëœÏz¤,âIýnêR»p`Áá!çå…±sPˆAì cWø²[e ‹÷òzáPsŸWÔOõÇ3ÖOÄj,¢ ‹>P(ÈA¾“ãà8§³Ìö‹p÷‹XÓ°oª¹%ª¹·èºÿ_o©Ã9&ØÕ8âÅÅ„§]4 «àrÝ,’}ôôó£.9ð¿"wâúNØ÷··ÅõŸ˜Œ=2s;'ÍÌÔ&,kªŒ~:ëøÿÍü¸ØÙ\ñJc¢" ØhB#T7‹EwÄ"¿§µWŽiÄ!}ˆÒ|b‰%TbYWF_xõ)BooZ9zËn]øü–Ò·i…>^å¦ -ºàÇsŠâsy}Š-`Rp°s`û(S£ó—¹áÞM ²˜ÍÒÊ—ëd9¨²²Ír` 6Qt»àGñ˶ÿK•d„Ò¬ÝöÔvË9^V$"ˆò„#š¯VËä2X‚äÀëùoÅ1G¶!%ìŸíˆˆã¢ígÙ~´ÄÀ}«˜Wðʓło¾H-ý¶§Û˜PPáæ$½¯Ì‚,Þs`¼‚Ó1Þ¨\Î:ÆrXXVt —œøv0Þž›§g„ËÉ>UQr @Ýþ;Ú§¥MÔ¡8g`DßL‹´•—mÁÖ½ObÖ\üžq¹F+ úÀ»¸ lÂ=—û@Cn·S›û² â”p†›+&œ5ö°<%ç\1Ëú*NŽâ4oå9­öÎãœäF´4çB • ÍK}§ôæ-{,Ä^U:Ñ@äy„®÷˜m/Òä9Ã3Ò—#¤?e𮜈gqï{(Â,Ь勲ÇDd-qcÐLãxܧyK ŒOzê´Êë¨ðWi®-$ò„p¢ÖXuìéY’fšá^æþcy>GT7oSÅè›fez¡¦º­é6”l»ö‚£ g·Fv÷XÉ+=m çôLÉ+’,8Äj*ïíUÏ^ƒ¯.u–¢%޹].Ž[¼ƒL'Šw`Õ3ŽÂñk]é+¸F­ÙX0øÁ­Š”&¬nÊSþçÌôŒ#ëÒ„û\E)éÒ‹ûvs x¢ÃAå±KŒU0Þtá[ÖèûàëU*çÚcMq¾¾›:Q…–C2šäJh¤V|x‹WßâÈŒ¡Öåƒ!„MÆ,¹<òAáùôqÓGRO±×¿&@íëS¹6Y$”ZU®/âIº~¯ R„—Ñc7‡úÃ) Æ@iMám0“å9Í‹áT%Kvqvq— ¹du?-1&i#NóÝí"ÜOãæ1YäÈt/ßéi¶ò¨L¹8ç‚jdY†‹+^+'Èu¼‰yß¹ewg¡ò?ÕRËöpL’d Ä?¶ðdr. î Q'Úz’w9rQxB¯U“t®Á :”UóTœßÑT ãmvÿzGr%úUÒ­s bÖdèâ¬sÑ,Žr,”¯·ÓÇi 5(_©ËQP-o\ÅÝÕp<NÁ$ñáºÊ…ÅýÄZžfª å܆ð õÒ«–•îìžye6bM÷t$\(í€ÊÕñLФÇ8bÁeø‹Ð¹ Á¸÷(fÎý5Õr‚8o¢Ÿ{ËqØÕ”ÑÅ8¡ ã¼]”’”äIîE À¼Û½1ÎItFLûô¸7ã )ãˆB³I²OASË;@­TIv8Åè=޲5,EjÓ‚ŒªÑ2Ò¨²>çC›š¥|”˜HËs?¯ 1/®ÐW˜ë»ŒùœæÑ¡¡ç6Ä€âM0ü%‰~D¿1Çe›ç³jª +ÿ¿±H‰~yÕ˜ Zo¡gth„‹Â®$gû ©ó¬â0,Ž|¦H0Ë7)…ŸBçfÜ×-‡.Î 8Â+×Á€Ýýçs¡ö‰¤tÎ0ŸuEïfH‘Ų(Ö›Wø&GJwQ•#çù…r #nˆ4,mÀâgBYw/k"ÊF'‘.Ü3«\¾Ùqˉ ±"AÖàß…q:Ùy±Û`é‘_.!™SŸ0K¿UA""4q!þEÕ²I™…òxS„—ât€*Þ‡›Œâ‘ºÒ sÞÁ¾·~¢ÜAêeLå–×­ÎQÝ&ŽÅÝ0ŽOb"E6ˆLB¶)?wípY&ºæâØ¢ –fMæ^7mB9õŽÚâïÓ$Ý8çÆ‘õù çïTYCxN;Ûõ‰Æ*V^Y…bú·¿i0­=k×Âr—NÍ’cÖ|Š•ãø EÐ"k‰ÁÙ?¬èƒ¦à¯@$€XÚ’‚Y)„¹ÁR9‚XU½´ÉŸ Ä(¹wãˆé•Ã*âX‘ÅI¹¶HXuUÞ…ûÀ¦j•£-y·/º=£¢`þÛ¹Æ#mÑ#Š-¢¥ Stt{CúÂÝËû£¦ßeµ°7¿ð^‡ x½¬é£Å§|´8‡R"Ysžq@A?çºÒn,ò3L@Íd—çì‚õ–…zÓin…ÑõËͺc-q4lJÒ=ïHÒÍeÕ¼èVâð¯Ay¿hC±§¹–7i†æõV-?ïмWe0=°F½ñ|†c1ùÀ8YøCÇŒ§Ó½i’”¾ÝTB·v¸Ü˜ûEaÄà¡Q¢žÔ5ØöÆ»=B„öDnèöæ9îy¢h~Mò—,v@ 6ž OW§Ë¿ÍUFoË›6c‘œ‹å¹s-dMPµ±àˆÔ}:ò¥NH„äM° 9݇/¥ÒµŠ´î)XÌd޾XÌ1·.0øäŒ%-üpœ>L×ræÌl—‡d.-W;а†BLõv :7q´›æ’)dzéZäýKaÑ+Ô2wkƒ‚ …IoálE¢-+îq€7êýLi©ÿUEÎgó õ.EhMEè4ˆ²‹=’×[‡5:;%‡L«B´Š±´ źâԼ™†Zðï·9"5ºŽJ›Ža­ž2©œ›çã0Ø›.k¾ÝãjþBE¹ÀÂI·] ŽÔcXtÔqt$kïIys ‚}? p0 ¨·zÚTï»4*Ñ©r‘E"¦1`¤}Êît¢xK£>è°Ò¨ìÊmO3z…“Tzh˜ø2oƒ$Ùù-lKÒ("’}½MßáÑu}U’ìÉÕ&MVÍ„àœ¤ýüï­8ñ}SGòw:°àÜÙ‰Äâš1‹d¹VÈrÑÄñs„»{å-°1ŸÂð^vMúN‡ á…ÑXÓ»Ö4bóˆ.šx%åÜl°aA‚·þŠº“M!Ò‡U&Œ; åÅxlõ¬cŸ¯00(=º–GÌÓö‰³pêþ²£ôs†ÿk¥Ü$‡ ;š`“xO¿…ÄwÅ×0Û'ñA齌|Dù«€ÓxG*³X“wM$‹sY%³leá[1á G¾Ëa£1·S´Í`&–Ë&®ü"åÌâ2›F@üu‡áèN1É3¦ScÚàìì„(.òø8süô©J÷ÖÐ{ –ŒŽ¯’‹¸ðw•ŠaG—ŽêœøÀЙtiÒÂF<±–•òŽÏ~— ÆØÄµ Ì"X./;ÙåED‹ð:hß•ŸèM§>¥ŒÍþnG¢ò˪lR_ƒ¥ä=ˆš‡|ò„ÉÁmÓ[ð\BÙŒíMš~·Ç‹œó÷1\Æ~pàú÷‹½žG@ù=,k­¡“‚3¾ÇÁãÔÝÒÅöŒû5#ä“çC\xŠ 7µîØáÖâæ‚—Ë– kK‰cE'Us)ñ5Ønj—G é;ô\囫r wPúÝ!W==r×…EûP’GYÁ[qNS±ûGRøš½>¬¨4arpxµ2xÂ9¨Ú‚rFŠ,ÄtXh4>ÜO¯ïó S×ãxsÀ®>ðÝ>"á$8ÍV‚pøA˜ïUW…9×což²èÒIÙ*÷B”ûÿQFævd6–Uu}m<`ƒͼœDçÎbqUxÛS4†-øÇ§ëß§@1Û_[•õ§"§<bŠiK®ìm4¢¯·à£R±Ô§È°€"‡· &1“ÉZ&!Dú#Žbµ/ã’Ä“Otô<Îîó);&WLy؃M œqdýQdÖß5|>\· (5²{x¼wجѤ­äŠf±Cûàpá¼€2Ujl4ýÿý[ô¶ª¬'½!]¬êχ<Ý£sm§íM÷g¥y Y„þÿ;ŽÜÓWÊ:¨’[úTñâ Y>xÂÀÒ64K7›eÁð âØç_ fù-{tË×*UlJIÝ|94Q=›ì&4™E¯žÎ1Ã’l ƈ¹ë z•\‚cx·K€å>¼ÞÕ,Î ýW¬Bž?ZʳdÜ+új÷ˆuã„:À/ùv‘í …R8|§Mó:ÝÒwaE6ã9Ö·`Í4¿Ú4鲃rá«ÊX‹aß}Ü"X÷‡Þ>î»8Ó"C{·…I–Ófz˜¦ûôœ—„±Q’…xCO»ª`F§¶‡³$ñmÊëlJ0KÆgÑ'xXÔü¼úi¹òœÆÌïäüÃxHÔÃþÆÌK[ pŒ°~+ÿ+Ëu§]®Ö‹`ÅüìæQÒ¸G]!wh™èžW?òeø÷ì>?’ñ…<‰køã£»­ƒ°ˆÉ^°‡ ïñú$õ¤ˆpÔEYª-â T¯±™1À]+lÿʇ4¾h«%ŒöþäÐ àÐqh{quxHqLƒck~½«bçÞ ?‰ìi}Q[y}ø#ȧzR‡c´¤¤=û&:;ŒCOO£Îiç²R!û`_"z´—Ò‘ØÔ-Èó}œ8—rVá˜pö`z¥À$6!ÿè–Ø„,¹ãGåQ•M!C¼‚JM»˜ñ¢ÌQaMRÔ‹Û5ü¢ŸùF=6|&åMi´7wó®Ì†BHÁ§m¤ÔQd‹_´$,ïT¡aùíPn‚åúrÕŽ–Ë›ëÕ*hç• ï;Wî¶éͶ¶§û…¯Sþó&'ªI'¤a9N¥÷l4ñ|&]µ“°›ég^Ꜹá3}$§FD È~+œr’\œþO8ÒÏo­–c¢Å ?l,Ý02(&’Φ©y…\ëÍIü}‡ÇƒÃ½jÿ‘=TÜÏÓÕU†cÃÉ IX ±3âÞ›åcˆå)ÄòÅò"ø•ëJ˜$Ây+Ì®›P܃å“C½{[‹ãÇ·ìÅé®ZNÚ¥¥(XKªâ:±rBÇ ª°Á„,K¢Ñ<(ò]ÅóBSšÆÇå ïrxêØT>ÁÍsã LxÚdñm;þ-ŠÇFŽè Œ°øûe\›S,0Áê"®gqž&E 4z’åf³y©e7ÝÒþ”#öŹð¯+="×8zMÇ\¶OÛÍZÖ*Zµôrÿ4rˆ¥rÚC]ìëP¼‹S^p¤mp™JÇLÛ‹SL,Ù’6b}· 5ò±zL:ïˆÎäp¾¦ªÍ˜¥&Ã]Â1ãÍÔÖIÛõwꓤY$j½-̸‹$~RÏôÁ4·æÜOB÷c›TAë‹þH‹GšN©ÚÔxóÓŽ`æë¥ÇÞ‡ó>rÌ”&™@™h{—µ:07ÆþŒ#â\ÉÈŠÓBD…fÑtó’)KÂ[ãEÅ(ÊÔo£l$ÉŠFVßÄ.?ã`—{²®—÷hÃ#ÞNùTËí!ýVô=:Ç„47‘åŽT,Nú# ÝÃÎ-v¡n i¾ïL 'ÖÊ%}7]÷(æíÒ'”ص˜€,cø„ßò€¡£9sÞ åNÆnº]ú„ãvi˜2øñM3çáÂݹƔÑïÏzãõòÔ1ßd‹Ó+²‡Íëå_nP Rëë]PpÛÅDï0–lØP°p–®™öüù·ð…ð~Óy¯Ó ò¯ªÊ46,â€CÙg mÝ>S9¢Ó¹ Õ¢µ8ÔȤì@v æ=„ßµjE«a„á™ÙaóO íýUVÀ¥©Ãµ.mc–A”ÕªÙ’¹Í#œS·KÀ“솵F,ú·'>-‚KiØ¢Ý÷¤äºÕè¢Ò¹¼¸Jb²MЄ³¢ƒ}bÇrÇwD¿è(#xwµÜS ”kÎŽjÆœ8ƒ&YVFÂʧžœV9cE’ Ò;yò—H,ý&×.,š‡Öir}s…mzŒSÌ™¶&U¬Dä¡qwZô¤~B¸cíD–5kûÔèñ4aQÙ­«„6_+}ÒQpò¾j¹£€µ´`Áɬ«É7(²º¸V+õÑDˆÐ¯8<þ‡¥^ñŽã·À\±¾[¿» ]³üª£(è!E„<ë5ŒZfWxe}zîÂb¥p³üšãÒG¿‹9‚®yó&Ž›+ƒªü–3¢ ^ï°ez&õŠkG™ xDÖijó¾Joï‘O9"\Zójý€Œ5§¬Q†ˆ'§sß¼òë§í[´‚f–†×Ù„zØ|`’N•Õ¹H¨%…¸0f!Gã Lð¢âóx$–i¼2ÖÉb®p`)y%uvpÍNþo8*?æÒgñŽœ7Ïhy^sOZh»ƒ¥Pss±Ô§W¢£Êª?Ô@l„Êãr–Iœ¯’ñû#ÂgS~ƒ¯˜ÛðŽ!êo–n’aÞ#óÃeÅ!–{OÆX¹Å§ ›`‚&Q^yØÌÄû&‚ñ¶e Ê|ÆÁ2¸ä‘•ò:{Ù‡qFÁU܈3\9Müó6Õ×}F9%aŽþ'ý”p›U‡Mÿ̧³°x‡Ú2Öe¹ÜM¶ñ3GÝ(m¢µØÎ¦ Ö5Ü__ø½(å·PÐ6Ê9¥Î­9&UîæØ=Žû¥8Gñ’/1'¬ÑgWèß+¯ÐY½+­ÃÙÃ|òŒÆµ­·p©]š.lµ¨€ùêsÞ«1çßè1l§ý”–ç€q¤%T–òZ‹=ò²që8;öv´¬$"Ðæ¿û€Ìf”3¤¦Øü4€šk:€¨e|ŽlÓKãè0j4Â$ôy¸÷¦ÂÅÈ쎖3uìtÏ^«8öL‰c…O¼ús îÄl÷2;“c;W²½R#ƒe½úsÝÁïÛc•ïS:]qˆ›ú› IžÓé¿·Eå_:œ…÷ð²ê2zîÓ1_ýÙ“þ¼9X?!VšCØè~ý…’ä(¤ÀŸ?'$W°eR«à‚ 9‹ß±ÌâÒÒ¾jm×ëiJ) ŠzÊä8Í튟6Fe ¥òÛ÷•œY|«ÒN×:,ùŒQgÇÑ0œ¥1óxþ-Ï…Î*ߥÔeŠ ¿ØµG'Hñmƒ”Sqc&>^ì4<«‡ àâícEœóÃÿ#tþÛ2/É”>¢éá wîlk {“®Ì»;r,)BØ­QK¡ŠS–?¿ewnãv‹GeæØ^ªa¤³dm Ôl²näò\Ä.Q—j8åçóoe¡8¸že0˜&Þ*8§áGÜRQy¯Í±Ì}ò#É"±à.ÑLí2R÷†º‘ðó…•[±äÇ›“ûG ûªêèƒñ„ Iša`Æ'˜¬r¡ÕûÙ`h§Í¦ä?8”íß©Ê!Ií[ÜfÈtç´ytëu•ŠÅ»Eb·Z±Æqþ Lx0©ž •žŒ»óá¬K݉B” Pª © ¨ê-'Î{/ˆJÿYÈè]Q CÉN£&åÏFmû„´‰M‚÷ª¶Ú}3ç_ïQ›aRº*4,oE"æÍe©¨®”P^}Óúr-:ríÓå°\‘££¤G) Óë––ûj¹+Í;n¿j».?Q-7ˆ¤!Žxà­8Ÿ!h¼C+™7*rd¡0ß)’`goŸˆŒ”˜©U— ²µÍ’,˜ì&êÚNsm³Á´Ùê.VlÜ_q–•`ø ‚D„õBÁ|7üîTÔÑ CÚ˜KwzTÃX`:«•}$ÝY‰[t¶ :½»¬ðÖQTm[ý%/åYÇhÔên@»*ìê¥ÅÀB°qE[›&OêíÒoð®M3… ×7$t§5I’:¶Í: Ì«nc°ðG¥÷]^¾öz¬¢}Äg}Ù`ngŒWË9¬äŸÚRÇš»–Õ˜gÔ¹J¸ß2PÜe­@1Eû'ï›Ñôi=o‡³Xø@«G#ËÓºóã²R«ŒJº´3d:êú ¨6àw7Ð!#À@-ê9Z¬SŽŽ–ú튥ö¬4™e}n°º¿ 누#Ó¨ÊI虪êùQÏŒ§XìÒÇqy¨fl%sÙ±?\Ñ7˜j‘,Ëý;î„45«v1(n¾«Îql 6ÉsyŽn•¾âBƒ§ÐÇk(qÝ[A"¥éëå=¹g‰!K+~+sñ²ŸH¾Û$Ø¡C°ß&«*<ûMM¢,©0‘Ö­{6 v\µÃê_1×¾ÈÂ`´{ó™¨ð0Yæœ ¤Î÷éÛƒrAVq’äy.\<ïø±XQ2«úÇ2‰È/pÒÕ|dY8ka) ™¥D±nç‚—W‹œ·0 Wˆb書¿é[ ÏÍ*dý)÷WÅl‘ Îg‹Ÿ¤á2¨®v‰d/~ÒØ¨Ò>oÐòÓ/Ö=*ê gZ¤å0š`>¨‚á¬+´ ?¿0úÍAç˜eg§y¾Ÿï‡û;د‘gû…èºROРо©… 䛯ÒÓ§•ËjÚo5f˨pi Ÿ©a!2:õõj²VÖ‹´±)óPTe#°`›fÈèDc€£(Ù†Q}6wîœÜ¹S?z=\€\ÝÁ¡4ÇÀ¼ÇQ´oA›€rRµË ~¹jŽÑîãFðȧ¼kƒÇ%/ô1Úù‰ã)yo½Ô‰CËü\UÖnÑäÝ„®P›â•¿N2¥éV¯ Ó®IºYãÝqø¾¸‹ïj‰½wÏ:¢óœ”µ7DÛ[\}Ça q³ÎìE½ÖÏÜ¢`Ú:n|ä° ð^1wùš*Áº‡¦žyI FÒ'ªZ—+mÝÀÞœs;K# †YÉ«休\•#'óâ’=¶xOžÒŸÕNɵxo‘1^2²´ÍZ‹Èâ¬Eêµ,C²VAÌHuq@¹¹`‹÷0s"¡(w«vwÍ'yAAÙŸF·]Œ1ïÌ‚}ƒqWm×8W­\ŠØÇ»"sZ%IÜóÙ–vÖNÏ7™@®¨žâ"Sð0É]Œù%ŠšÓúe!úF™uð­èÒ%hX3)\±¶ÏR‹ó9sè¹ßý=η"˜‡ ½ñ¿ª6¨²2t‹èá`Ošlcßä4œ92¬/T˱Wbf)8á8³“pmB¢KRN{_倜÷AGÀö©ª¬‚¡ý=ZÚŸBðÈ'-™çsé‚cíÈ^½IšÙᦠü—;˜7Bië?ìíOí‹k,X|Òà ºh ‚“™M×Ê( ­™XrX¢Se#àKK„ÁãhŽ®÷p,æoédQ >ƒ,|FE¹èôõ>íÿCáþzµ,=a­5XÐ$Á¨m¯Ln#¹E)µÎI{ý]A\öÇJS„K•‰ ®€åR²¸7ã¤V¯ÕŽkÇÇIØ:FÅŽžVHïCCµ5nëÒXFø*óþn• :/ïcÁu¡=„ýÒ]Ш²¾X¼I!䫸‚“Æ÷öZAQ j»ÇMøïq,mŽeß´Š;‚’_ª– ådÕ~w R F€ ¢Ð97:ÍÚŠSß…,2 £úA‘Ñ`uùýòšª}ñˆ#¾—r¥=Î{½4ÜÝÙIvŽÉNs»Ñ¢ƒ™÷iìºÏÚacUŽFJ~UãÝ×8<\Pø6nÐ^Fh‘ånŽ-Ñ !B¡S¨½¼‹ë{Ò·éüò;UÖÿZºt¨èà Fý2©ÉТsÓ¦ü’4YA q obá§f  ÆõímŽE,Ò$&aqÜS¬eç[/¤ƒiß„Í"=ð 0㽓íz´Ý§UÂLé&’é{8aÌ3jû|Üoe ËK}fºç¸¨øà–²×¹DÁ¤Jg”掲PY¼áHÏ‘¶ûÙæ[kc©'$l0K8„~6ÏÆd雷 Ë=yÿè[¤ã¢K´éºc±éÜS°˜é Õ²ÒZðîx õLl—p€ñ>F¯·à£ïàÝßá«@ìÑΰ–¬öÃè¬{zšåB úDø¿â ÊŠ“æIQ#59èuÁ@Ý$Lß¡ípÓ@îZ½dÊQvÞÊk˜÷ÆÓùx6ïŽ*{ðÿOqJûá¥âR´ÛE³¨ñŸ›ø@r ©’ ¹áþSÇð_NžƒHžS¹?ÿÞÇà{¿ ¿ßºÿä~¿wu0Îg»óþp2ï÷ú”(IöÃÀM‡ò©€r›I”sþc'ðNŸÃˆ" ÜDQÊh|uLÉ2ÜúýË~÷pç µs´Ð= [g­n“”äy^yùóMÂüG°ü(`ÙgXz½þÕÁp>÷&³yo0ŸL–£PÃR “FX#᥵",H†R•(2ËË`Y,ºË `y À2¼:a&# Éd>LÚêŒgŠ!¸­îÉI@:i‡äõ~H­ÓI:ÚÇ'.×(™A–„ï}„‘Y4èS0ƒù¸´™ìzÀp2¤QêEXÔh¤¢ÍÁ<Èg\ÿáØó9øÞ‡àwj\,ýQoÞë÷æÃ #‹É hOùù$g_á÷~ Ò”$yQ_áHöM$wòŸúpøç‡~8t`Hî$f4ms£k’å0ˆ[qR  mø•àø‡þ‰£ÙóÉËÍ¥¼Hº|^2iÔ» ¢2˜÷G“á|¸ËÔȤË>Ý–”VPâv)¹ àYÖH8”C”G8D÷eÜþ#”áÕ šºþh8G¹™Œ˜Õ5ˆÒÚ[‰ë©Ç9`È#YTX”G–P¤u¹ \ZÔÛ=žOá_°uýá˜B ¢DÁr½ÇêN'‡/A1Õ ,-º‘¿EË~(’A_†ïý9g¥ ™ƒÁ‹8†€‰±È$Ë©‹.DýK”{]KaZnÃwŸ‹‹ðý? ß{_…?Ïà"  ÁO{Ô÷7qœŸ^$G&)¢eZîP˜:ô ÒÉE‡±`02Ÿ›«ó¾‰å8ª ‡9ÿù«ðgˆ\Š_)ÂÍSxLé)H}Iú•½ÁìjH2Ÿ—zèºL'̳ÔÕùhç|‹ÿT¤þCÐÐE€o¥9Ø»¶Ï¸¼ÆfG—?RР¸@$ÒÍð! *Ç.4Ý–ãIVØÅ4æù"Õ~¬Cµï•î ÈìUôð}ìï·=¦N–à(oRÌøšmhŠi@ÛâP|îîcKwWBiV+•OË7©Á¼Ó`pÀêõøSíC£ü—”AZÂÈÓØ E=M}î®ÐíÇ9Ìï €ù?¥ù)$}°y3pe†Lp,N]ôXìûCXÁ£Ç+nƒÐm þ·ÐíºÞ 6cx(§³]ØDiµ\ÂÂÂY&ÚiG> (Op8S«Uù* Y4 ¢2·w©b‰oÐYüñj‚C_í°¾¨ÜPF ·à[ÎL‹Ò"ËžA"ÿXZŸ»+¬ïKI,ËU©Qf Oät4/†Å–NëH$Œ°üs.¢Êr‹.æoê êvá¹iéíz°\?‡¼N&ÅòuúKðx nTãÜ]àÒx( ŲXΗ•vìÙf’cÐ!øã7éo„¨X þV·yº£4.OtÄÒ1pè3ÚS0@ë2‘>£ûÂ$fòÄÇçñ Â<É!º÷À÷Þ]‘ކ9Ná©1Ñ5%ª´”Ô ø xP›ð7ߢ¢’’:Ç2óiô×”¢ûºÒ¸¼Ž;T¥qéaZj fnÔ§ÆÅ$ÊÑ>Å4Éõ¿úäåüÇ>}˜§èdYýq¥L1ôØ  ÷½[ðã’œ)—Ð`cëÙ*†ÓyÞx³Èš™büÑo(ÌÜØ“Næ/MQ îx‚O"8»ã]Ì_Ž9–V¨cÙªÔLº4iYD94}å)…þw%7FÍÜ”æ/gý!übJd1Èv2uîDÄŸ zjédJ…~#Wh¿‚iãÞˆ{޺Ȟe{f$äø,²,Ou¥’òg%Q¦èסe™`.^ú¿]µ.Qdþë˺ØX$Q0©{ÿRXËd>è¨ÕŽG^,%Gû£E¤E¡ôÓ¡ôÛËÍ2:ˆ'}°-à uQ9sj×å\b²½¹UÊøuFãWП1¸àþ 5ï«Ê³“Ò¯Iš¶Ò( £è’×k¹¦`1?>ÏÂóföz /âÓ˜ƒÿaRtÒE²ûta"ó—àÎ.D`fvYòÒ—#å!²ä$_/ Ûc‘²û³ /áò2^ Jïbå “ =–t‘F/¶þÏ(‹´þ7TYÍ­ÿÅe2€US&¹Œ£#ƒ2N“¢Ðª^+÷ %$ÚæßkU„!¸@)„iÓAeËÅ‘R/‰”ÉHÚ›ëx†CRRò‰Š^ ©·=ì^?Qôñš~áá>Ó‘º¼ X>É¥öêl¯|™ ÷Ä‘˜@N/’9ä3,×$f˜¸Á½5¨ï±Co4™xÀX?¿M½}B¤3ÃÁ<ÖæY%ipß ô £ÑŸ€qw LêªVåìì|g+cE´,G9!4×R°” J-QÀXe´Û0fIÁe±æ*d#Y(-~²$_çÈFa˜ø{•2…îÊ,„!êSš8ºv6Jz,¤`¡«Èo<Á‡äÙ$MÕ§ërŒ_nÀ¼[CNN³î¤ˆ(š ]¨AÏvpç²ÔfÐ Ê „eÈQ‹;„S†Ò&»R¾@öÙ•ÿê°+U@òÞŠQ•c‘†‡&ìÜY)G¡MRUîâ?÷à?|ÙaWþBÊì£nìbv4öØpÀ»(t6…[FɈŠp‘õ\GF¬ˆÞSQ«®Ã9M‡©cŒ2HÓÚöÝ„ƒ[)ÕÈ˨otÄ!ïë2Ѭ ¾Ë´<㮂I•-0- {Ñ dH%€±–Q8Ì_”ùùfYB Ëï*èÒâç!ÖÅÙ `å4 ˆ’A™)ÊQ©ÓÞÒÈ·8äcyÙ.€Q<`¿lÌh̼ƒ(Ý“û`é,û"œ…o-í‹dÑÏ)=7ൌiHÔƒØlÈ]9ƒ&a“²WÂ÷B.z‰¾µ|‰¤+÷NÅ•cÏâK®#ð·{»³±Œü™¹þ{n‚y¼ÏÖ}[i랬¹©l¢ИÂg,I …­ÓØÓÝ PZ;¬ù6V:Y'Òc"ó>–¬ûò|ElEÒ½Í_"™tÇTîh0g»G3î&øœ•ªIlžSŠÂ¼ÈRµ>ò@£žïpÞ*«ôýÞ”¦¹{È£)Ö$fœ<&¦-RSó•DX`“QV À¼À#5¦ÿ‚š ‘Zo<æ–פÏV¼‘¦q’”¤À¶8ÆÒHše!:ºqBZ’27ûÀ|‡ƒ2ïQ¤ÀôÇhyÁííÃ{ÝãöN—_ø­…ÑÈB}’`¤½ËAp~G'Ž'h%íìÄk¬[MM“œ²Tã«+HÌ@Oú½,S7f}† JÓÑԃš:ŠíC<^Ù½K"­ k5³ r qÉ|⥋ƒ1õU â套÷¯€C‡e÷m{é]úÅîrÖµèü ]ÑŠYôœ®<6Ÿïp§‚%7°ü…,p« /íyÁž÷°Ñ¤i¶ âgÜæcÛ®( Í NÊ|¯ƒ24#I– ë‚IÕ]†ÅT¥£ È‹4¤¨Œ~eK:p8‹ôõ4ºYï4ÿoïãE#П]P£ ­HìÑ2}kû(rJ)rxxrÒ¤šf«¬©õZE.¾IÆëz Q×»CAbf¼?Héһ /4<Œàã¡3ÅÛuuî–ãV‘‚ÓÇ·Ò_Īf-êy6úõ§ð`(;à’N•“`9(Ò( IŽ,-«V9}!CÞÀñlÉîz¯ôw…Í¥ý7£Ùœ‡ö&’Œ¶éÆÜ¹M°Å<&¼è*ÄvaOÝ+ãÕr,]þÜpü—/è jùGœˆ`Ö&Iâ3tw(XÌNŠ °¼c³ðkØ›³ë…B;^j@“ëÀ‰Ôf‹C‚,w8Èr+@ù+UpѲ€äâKÀŠ#åa ²ä‹G$®9Þ¢›¸sYö÷i·îp<Äþ¦Ð”Óc£WÁh½O¯§ÃäšÃâ¾W6¦²^жŽÑâø”gT]XþHÂú.ꥰÂ!.w:ÊôX¶¥ÅÑ2ýô¼V¦×4(ÜÙ I67-x°™zU‹¼•½;ârYJ.Ú¤5Ÿ@Ûç]²OPÖéäü‚À$óF*YL›ûÙxÃÚ´èb¢5õ=PTõa¿°½;üò‚9ù¢7ñ•È¡Ç!”—”Pð{!¹³-1Â/ð[,@3Eåd+kÏ‹UÄÄ’=@R1‘0 BK2Ûõ€‰ÛI’æ I˜å¤žå9›¸‚÷&¡Q|"ÀLL0¯¶ÀÈx¬ „ùõŠž CK¿‹|%Ã,0ݳT¶B’‘EГÌê$ˆƒVäeû©wdå.Ç+ø­¬H§­f8³nÆ{ÿ «–Ýj5ä‰:Á"¹¹Ë!Ãÿ ¼z´>=ÓÆ¬)VFf,„6%VÚÔ”aobãUŸé2ư€ïJò€‹M{-ð™Ú`Æâ<Ê騕Ý{³È«}ƒC7We“;ŸäÎæ}À4£y¦À¾AdÐ&O–³…å×98ô9¥¡ô©µ”-%&”³`‰­gÌV%‹U›¿SÁ’ý'ý=¾°L•\%uT&£ù¼ÊÙ”Õ-0Ù¥ÕKôÃ~[»´º¶z þ]]]­¯Ãê—ÖÖ+M›7‰ŬµtPæÿɨ™óÀSŒ.ÿd^.Ïâªr{¸³ïŒàMè{’–F,û:–O+]Ÿ½«˜C˜pBƒND3á=ŽZ§§”*'ÙÉY°R¯//×ëõÕõúz}­_Ö×7Ö×ÖêëµõúF}c°œrá­–+ftø#á}&ï§*Z7„d“)p«Ç[ƒ(Ù¾‡,$æÝ`_2Ÿc+¬ï*O°¾ë˜EQê33´½t(±Öɬ¯.,'g­V7#y˜•7ØLÄÊ/²P¡~Ìáàþ›lmt½Ùl>êõàÙf¬2ɃS`‰måô7s‘Wùz‡ãÿt½³|Bî±¥“ ÌÐXÔÙrü|RVEèPgî{¶m,R„ÿè’uWW ;ÞŸkci¥­TΓæ9ýJ´Ï¢àì £÷` D‰Øbˆíÿì‰4YQN¦Â +À¯_áÎü¸‚E½étÁÁŒ9|™€)ŽYæÇ!À4üÀ§9¤tÔ±?¾÷Zä¹ÂQyý„¬¼²fTôqÁ±ô¹“g¥U>KR|­WaÑèÕO8’Êÿ¤<Ö¼þ&DDÜôúޝýÓ’[ä'ÉÉmr|Qqü1§ÐÇðW/p©Ì9Ì…m’°¤vBjY£¸Ö.’("QB”vûž§"¡!È+®ÉYwûtûì¼»}²¶í†A'‰²¨“µ:I«Ñ©G+y»“5³ÖÊJ£U[©-7“eLƒ½KüoÿŸK¢y\Êæ— »"@°I¼N`€Ï‚y’µÎåÁiëì¼N?Õ•|p”OMù3çB“?:;âÑHÞ¨`’§É k~BÁ¾`ž5äH6?%Ü€±Dmñ{‚iz^d>'E<?ãxþž+½kfßqœº‘CžK×åòì|{‹)dŒžt‹•ÝI§Ž¬!Q½S‹¢8}nä5Š }A/4÷q@¦uÌ>ÎÊ=`6i;me©4dŽ2¹£ƒXvL˜Ž79JdOTÛÓ&ÔA™Ï†8òÀ€˜üÙv%E3m–ñ¡7Ãô³ŽøËÚ„Ì }ˆ™G 'ƒ1ϼ4ÙòÜm1lãáu~ÖñÐü`éJ 0Ý{:ÃÁð™ŽåD`˜£‘y³¶‰ &À•m6 "›Â|z³Ã¤~FÙd@—¶ ÙÃNµ]æç› êîåÍ4Êäi;ÉÙ8 ”id¯Ÿ/Då-(*D•GóÚe†ó1J Ê.'IÉÓ¤H&'¯y††µQÔ˜ã¶BHÜPWêTÈý„U9W€¸Øs?YèÒ¬8‘8·;˜’k ²H¼#¤þ<º°+?çOÿN[4AëîCððwwÁ­I =ûÇ8¦¤4¬(Ò›Š¯> qØÏ£]y¢nl£wë1—dw0êÑÂ;\É"F–ì€þDQ#„ß“â«ï4Ž“…þy‡Äü;pé¡jsŸö±û Ù»>,Y«³,v1*/–wÆî/À¸mæ.½Ü⢡›NÇ”wÉÒr² Ä\mj`Û¦Äh8,#w‡‚Ôܕ¥2…À+ »8¿ šÍÓq6”e4+uŠ%¹¢=â­ {D@Ø„ïÍŒ€pLG.3šÜ »§Ûyž$k¹¥æŠj¥rIPçmŽlú7+W©…³š¸[Aô‚™ÄÙV”SmÖ!±Q$íµ•¢ÊÃ}®ìÛ–ìyƒç(‰}º‰ƒ¶€¿‹GÆ^µÿåpè*ZÑ:_'˜>˜ÌÇ#&¾–Àø_KòxcdŠÔ¤+ð½¯æâKw‚ÐÁ‡rª7õ@áõ~½Ø™:ð–R¡Ôu(¥²3¢Ì~¡BCÐÁ©)’r¶}´}e/oDy½A Ø r’dyÇygõ¸–µZ^ÏWW9”:@Yv½Òow8tkK, Q^éAo: éÀ’_†BŸ“”ë,áú$IÄ߉F«ÑTØÜ»K›+÷Ù\pËK—À'îB©º“mïí,îÒ[ßípæ–à{_©OÓ À€×ÿÉ‘†d%¡ƒ1´,Δœ²Õ‡˜iÒ»ªüÙ8΃:e6Â<œ—*Þ2n§,ñ.J“þšCRPhª¹ }”[Ú1âã:½ vÕsýMìBÞá°ûß ›¤Eʶ7›‚sú|† $ö´”ØÓóÐ"¿VG-SL5G¯…¿ýKr^G@ùú*ÛêÀgÀ¬ó ¦2(²£Û7R/êDLÔ¢Èf¸¢Ò;Öû.Gñ¥UuÿÒ˜zrà&ôÁƒÌøÀŽ¢Ä@’óí•$Tð`ÿŸÚGc“f†Ëí SƒÐÖîK×£­"cvæî¶äB]Ö$Å[Ð|ß’Ý/þKÚD Ý\€ã(Ü{Ä{n”+J´³Õl`2¶@Ç@Š/û-ÕÁÜhÊŠó~E…„ï/•Ñ3÷ýqæ|*=³Í(:U¢ímšPÁ¨ x“ÚÁH¢€ñ6®¼ß!/Ï“nö‹ÙÓtB{€Y¬hñ¼ÍZE|Qþú·žgI–ã©çñ*‚c÷-âêP÷àt{«¹i$M†qH€HF鯅Ûò%{yÍ÷òFW9 ¸ËÇ3–˜³8 ®(ÙY¾ ߃F‘çQs‘Jÿ®ƒE/«²–²å Í 8 8¾JA#JØÝ÷­¡EM°sI=N”e77Uú÷þíË«å>ZøcR‚]`¼ªjEÛÒBRùGÞiDH¸B|!ѹ‚Ä–X>ÏüQ£=¥9±ñ”×½-,+¤-c Ožt:õN'1º®:UVL,¿ïx Ñúß]Q–] ýßFèBñ¼åÊaPpG '3Ñœ¤Øš—ÆõvŽd-\]«q,3o\³°Hëòॲ‡’[ ËîìnD†% ²¶ˆ*¯ž¯ùWhÑ8¼mÔh}+m,Ý \Ë)ïÐÖ”¹»¸tâNH÷Ü™-‹ë.Ê.Ùh8Êð`µ÷·_‡ØîÊ×L[D‰ŠâÒô¸>ÛòGKrÌL@) ÑÅgqÒ‚{XSœA“Ö›U½¨ „âírýcGdöMU¶£KÙ¼¥:l¦äÛk4ª„‡­+Üú—z¥ÐÄ$­åi“$å ¨yÊz?¤˜9A•WÈ ‘S¥îÜ CÄùpHébRŹ K2ëÃM –Chô‡nî–dù’Ò¥G=ºþ÷G2ëbËÎùV Æ ._ŽîR&Ÿý„ùˆÃyyàRY¨»îXǬËdÌLÂ8úAЩÃäF–ŽN½EþŸ9Ìn_ÉDÑA‡mÑÆ~äIoÂg{uºtƒ$IIJÚ M¶pì¡dSA[üýÂkc‘Â{WU.àþ%6Ía,2ã~7Ã’)XTl\¨Hõ¥8þÜ¡Hß X~£Rv—Ò<7u0KER9Ô=xÕZ[å iÖÙoq3ind+Í•¬€cµ)֯ܧÜWÌp¡¤ÏÖeÍËýdàJC|qœ÷EG'WBUZZ[õåZ¾Y_iÇvRK‚MZDcïu+m­Ž¶Åx™5}ÔÁ¢;,RQšn'tlýÞÊbJKhù.rʹ,€ÞV –﮲]£2Ð!3ìðޝ á[ì™ «K5½ Ý9ƱT#Ï¥ÉÁqGQNpaa‰Ät½ýq‡óòb Ë;+Ú–\4»8t1æ¹Ý´´®8s.—%œ\Áâí‹þ¤ãeÄ5’R·º™+#FKÂ8=9è’z­¾¹)W)Ó0$ÐÈr`úQ6ù½¡Êö^p(Ú<ÃÍ1½‘€ÒÕ¡¸­‰dSš$>×å\b>Fx{``ŒPw,0[i±\Ð`H¦*õÞ«Åã§öØÕ®‘)niŸOÁè¯D¼(„öè|'ÚÎŽã8Ú›µ0â8lÂßjq\~MáŸ8V v®ã",ø0~…/b°@ =äehU–bce¥ž×I+ÍŠ Î6ѳ.]\é“ÜÏ8ìÿ«µt;-‰czùž ÉùVÁ™cÜè"ƒH‰Àç/ØP$YnU"÷ÚkJÌL ø i¬–š$?¾2´?»$›„á¢å‡Ëîk½³¡@ç§çr“?_òÂp^åþeåéº=t‰ ¢”üAgthž.—[$Ê$Ê)#ÊÎ1`ùÒrQ4J%2³—JM=Ý®™mÿ{ÄR×eå‡do2Óg¬p¢ €ìò"ÄþᡤKtaw%ÚÌ¢ y”Q×*jQV«å­Vž–W)êÜYh™]?Ÿ[²W^²|~Éž,¾YJ‹ç°‹‰¤{Œ[5ŠÅbU.u ®õ‰¢È–ì~µsžãÝÔg\Ñ>às†þdÇL2ò–¢>fýumm-ôkÐí ÓÈíËÜû€‰„°]ŒjÈCï3ô‡]y"|ïajlfï¹¶±äi²™Ã?Ø<èÐ\„å‹eœ(ÙósÕr—C²‚}Ã֬錉Š.)G;ìÊØäRm}³Øª]«U²&èòþ$®:±„w*zŠ9nR˜R{~œœ-•KÜ2[ø¢×(XÄ¡&Ñá‚GÔ§óà…ælû|#Oó mE›p {!(Ë“Uq\oVÅß\e«ƒ¹£ÿBï»ðábSfŒ‡‘ó/dñ}5Åê:…æKFáJû©Úúi¯¯ß9oXê$I–Áìåô‚ ~bƒcŠÇ ™º;,æE­ÇȸÈ')³¯¡I‹8^ç;”ËŠ«ÇWÖÖîËŠáÝæß{¤Ù›0ýlòè ¶†—â&Ù¸T¿D.× `LÒ(Jªu®I°èŸ,Ú—éeß‘$uu/i•Dñn=ý—%{Ô[ô¤.ëÎ¥ÜØÿÉ«À¦•ƒÚeƒïá&Ž •Y&oŒö¯Žþ—ymœG#ú !LòpÄÒÝwBmh’…¹¨w¼OQBzÏzôós•A§Q¸Eµ³õÈÅ£#3Ó!°ÜëHý’R_䇬ÀÌÍG¸™–ç M²°°•Å¢‹¢ ×³lazá^]0v½¿š^¶ÏGÙXÒ‹ë" ]¼c÷:âèÇJOÊscƆ‚eéõ_ä6x;ÿo¨ÚìŸÁÓ…¾%Ó&Ž€2¢Å 4MŽ…üA i¦ëó¯Êúoé3Lpqͬ<“tvÐÝ9?Ï®¢íó“ý°4ÚEÖh×õKµV«YÔ‹6Ö²Z͵Þ¤•¬XæS’¸Cg°|£]QðÆ‚XðÂCdèjÝ]ˆ¶#U}¶O· Œ|øLx,èsóx§¬¡óò3&Â%´©aùqYíͦ嗋iÑô›ü ×^ͳcÄäbö$¸Þì¸y¢*:ºèeû¤»Ï^Š"iSš[~oGè·É5‰´>Mq¢|»ëm0D] &Í,‘õzÝB“q®©É¸/÷ZmîÆ5Ùînhó\ƒãP oÛÂJÕ6pÓóP®M&”ýØÑ=gÏõ×ò„´¬Víì®ÀÊ융îÚàΕ֙ Šà‹6‹:ùV«vÐú„%õ…ë>“…帓'í„$4&J:„íÏ_ 1£"¯…[­Ú¯áká{¿PQú¦´2 Ê^Ká ^Še ÀéX­A­Uí®ÂŸª²Õeã*8’7ÕM]P2Ýëgh6Øïø‡<&¾H^¥îZ< ²£O\›‡K,YÙ©Ý\ófš¬xËáU;OøÌ%sc°½HßÄråØÓŽëãÝߨÚ鰀・¢*Ò-žàöó®BAG2ņ;y[~'$T~9’GøX´é[\“2®èͰS6?ã»lL¢œ¬c[ì¢m–ŽTÜIJ½‹ Ñ{œiÓaoqÓè­ú •¹àÔ‚’JƒÂD&—þ%{®ük:lܳU'Á±HßdÏÎN“ð}ƒ†•uØ8¯ai:t_Ä+Òµu]–±Àl¡ÅÁŸf Ñig¹gE¤w"¾éÐ!tms#×nÞ,ÔÁ„¦Ne…nDãMâ”"í”jš)åKfëDPµKgwË6nQ šŒ¦2ci ½‹±Æv›–j½VD€ZÍ%‹Jg-‡à>ÃŒáµ*ÌQ0Ä% E#jwÊÃ)mM`Há>®)PL ÷)ï™':ŒÝÉ6˜$¡{ôA\rz3<#<ã‚k¨ß ´ÈÛÇ:è‚›õGeŸk‹¾É¡“-B°uœÐnåw2×¶”`_JlFo+PDvîùÜiQ×Aé›Ñ)Qº’(Ýîaœµ$ÏÛY^Ã`hݺZ!³>´ ÐVÐý¯›eè¨jç[^$³ÿ®Êô0ˆ³ ŒŠRš†ã}ö|,û¾™ÈadðZÒ–æv[Wš8–3‰XTœ§¼µIhËM\¯fX9‚‘gIerßu±©‚‰ÊTSoEì Ê·,© ÎË †"…Ý­‹=‹åê^S°˜z!Z¦¹/öEG˜éÒ.RïÆ½…Ûk‡è¾Dß e“Gax¨È<Ýs ï8\Rµëy¿nwPŒ±–‡CWC7”븎±¬@ÑË‚,©C^ž!KѾ V&‡ºàzo€ñë!ZÈjÆ®Þj™#4Â%¬í\¸jR%ÚK’Õœ^Ó CѰææ×kÈ^Þ«' ·L²îÑ#Ôø#ýúä«Ð ëBÖ­îLÖôìuþ&U÷à5Zn¥Wœsœ^ó²ɳ¥´¸/$9<8^i{ÏE‚ëK.ØHž¬…F—•gÚ¾vf!k[#ñ–Ë ºsIÛoíZ¶jc¡’š^hw}’r—‚å²ï7=@¾Cþ[M6"<ÇZÔí]j!ò¬…ÃÔ½§Zn .w}ù­yÆ(Ct¯¨c4¸ŠDE§“ÒTG’u:޼1y¨8ߣºŽ÷ßÑ×Þ™aãNx åìÊÖ©×Wãb-­“ZQõ_¾<¦3ZÊ"ð«,æ®9Üþy`¸væ¦OƒCgW®çõ<Ï£M’aò°À†»’µ("Øv°êU¹}”{¾8ñ„$bM–ƨƒwOR^§¹³4]‹Iœ.J|l—ä‘PþT©Ó0Ïaˆ"<Âu‰¢ht`¨z©ÓžÞ <ÂÔ\q$>>$ {"ñ“WÓùT5€”Í7YÇèaˆ:$c‹§kŠ29ËWWªv[÷ßTËmQl‚qB‹ÀÃ):»n,4Ûoª4¡vÈ’ÇqZ¤qú‚¶;,¦´|¢Zn¢è÷w¯RÍpƒX¯7²ÈrÀ x,]«äU!&õÄ@BËŒJà Ëgá{Ÿ®¨Cã=| ú=°Å}Þbnj’54žrV±a½ Óɽ×òDóFGùêż,á»íbèóv÷8/¢bÕïì~ó\b>K¯XÒV±º6éÛXèúbÔ'jÅ&½^,v$ì>UU'µGôˆ-˜<ìêèsÏN“ÙóÓmý´"OÖñi2ù ,79^kKr©‹g}½I–Ó Ãv±bù¢¾Ÿ°¼ÊÂ"_Ë ‰÷þމ%ÛZÑfº™I¤t éIS²’0v»c÷ò ç©!bÛEß—Éélê*'ÞyI‹D•–h%bíl‘èí¾¿Q=OÀöU€íû;i‚¬ 2Ðà l/iwr5­Ý¨³¨òý –ŽA•߯–÷wT¿j@'éÀô®_©Ù'÷—ùD?P¿*ú$ /ë&o0Cgfw—.úìÍøÎ&“S­ ZˆyÒjÙ{îQ<׃ªÝúòÑjy‰?׸}¼<:_÷„›R|aDËs­¾¬ƒà!Jð¡æÓð½WÊGC7,jq'O£ÊöYë€6£6Ò¬È``²"Ï‚z»4²õf»Öl6WÖˆskhC<‘#G¶÷SÒq(Ÿk¼8Ü;Âušt/ J€ÛÚÒêYøšÅÅ!®Ö쵦ëÊi£TéPÝ0„%ðÈÂxvŒzªíÝá%6Þâí ,xœHL³ëb{Àw™xVžñûÌÊH€“,c‡ŸùY)+åœ:½ýÞ\Fù0×¥D^¬&“¯‹2Ï7;Ò¸Û½§¾LÖw;;ûáùVÞ¤&Ot°u›vË좙½G8’àwÊæ ÏÑ"g­Ó-lUã×9ˆ>ÇRþiуtèx¾Tec•Ü¡šÒy€ æï¼’¤Áè^)/‰+ÉMrÒ0÷ÆâAºÕáQáažû©¾}„GcÎ6-$Qw;¢h<}²>}=²ªŠY©Ïÿ·ªl°¥7+@`{åÎtI’Œ’ä4à^ÝFÚ”I‹¤’$µ|¹(¯C<ÐL|Ÿ+8L×{u¹RùÛŠÒ$Ôgkú&–Çâ7+‚m©ïM®7.ýd‹@¥Ð¾…gx}‹@o®t·9oºÇ„¶^‡PµAj¸®AˆênRÞ­%†žÂ#c§ý‘C{èé1UP¬3c&I²­ ÀËx$ ‡Zs´öD3xÄŸ&;W ˜2ûJY$ñZ±±@ĵ·EhQÄàHaokÒmŽçð3U¹”O±LFóÙ`ªÌ×ïèÊÓ=õEŒª¸,ª’ÜæÛÕBzºd£Å¦NÿCXrrA@"ÈòYþ¾÷›%Z À âS0¹<}h2hç Bû›ƒ徘þ\bÆièUÊi½1%Ët—–÷„w_°˜,²,Ü ¶6V.1ùy½‘͹6–9`¢<] :Ê„MŒéëôM 鉱6Æøáša皦+÷x“>/Ó˜¢‹`2¡;ÃǼ@­JKÖ==9ÎvTèe‰ äbÝl¾M(Op¸ wi™o×AƒCÑá^ÞÉõsg^7Á»àÿ‰ŽdǛԮ:Ç–nÇ~@O¤®VPsϘ·ü5Á]Yf##ꪎÉÇ]AVú|L‡ʃg…jÙè'§;›üw†QžZµ;Ù‚e–ãÞíÄ1‰ü=TLÊÉáa«{¨Ee¹Rª!õn×qðøi w„½Q¦¢œ[î zD‡QÚ¦Ãq4ÊÈé‰ ¶ŠMý,jðxšbn’‘ÚSî»ÁU@@•Ñxìã1&9L°áb‘‘{º#¯ðz½ÓuÆÄäÐþ^¦6JçAˆEsi_ëÀò‹KÚÅX׿Z‹.{++YšÖktt²™ñ™ä6¶=fOÂ(siÎwè?;ºÿ&ß!Þ…3ÁUM8šÆ£UÉÑ^ÌÎ!qÅ&—LŠ(KÊË›ÞHè™(7,+'&éê5ZñœËÐ:{Ïœ±*áS·m¶(¼ù\Š´¶x³ˆèMÌÆ}" ýŸï_]X¼]Ïr¼Aèk°¢eQQ›§¸¦•_VØEG[‘¯!Ú“)ÝÏ4å;QMö\ÑÅ–¦ä˜Ékˆ©£ºP ûùÄVB‘dy‡ìHõ¬¡¶¡l’vFò ç•¢¯S—Ÿ«¸Ù§\_f—ÂKï{?1†²UÚÛÜ9 ¶‡ˆ$ ‹Zs»Æà .A`&ŒþžOžë°p…|P«2¡§ŸqŸ¯h¡“`Ì>=ÀÉŒ, m/Œ7á÷¼ˆêð2n´ŠÍ–Ñ {Ù Ÿë°+?#ƒCÏ=)‹.ÇKFò¸(Ñ!)ËáÊȺSV¾Éwp>J­ßÙû6uIÙÙâÖ;ÕD½Z[™eìF”ovˆíÛ”:«ûjÆCVº[+ËxS·Mõ7Ø2‰c¾î²ŽÏ¢Œ>nö[Þ®@1· 7—ËB ó'Á[AW!1²XêÂÝmêêãíÀlaœúßóÕ†‚;NüS«ßŸ åç‡D4 Œ=îl/RÙÜáô7ê¼Û'žï°*$])³¥4Žا,VV§üdð²*òy+–¯Õ©òÀår} nŸÒ¼ 6”³}Ë]BТ„Ó§¹Z~×—þ¹„owT21½òÞŠZ²ëÑŽåiKC¼ßÒ–î‚Kº9x·Bt­Ü­—8´ùʲ¬^¥ƒÙƒ]\±Y.49ÄJð|º5gÂB?q†ch𬤂,Þ±ù:´ù¡JÖ‰”Ç^Ÿ~‰|›í%YÈâôÊ ©¸KY)ûìÁæÏp¿¯r_±ä-ª8¼Ð1o)aªh(§nžBs@ÙvC×±ó ¶ä¹¹MÞjÝ{¡C$¶ÀqH¯åáª}q¬Â&K©½«¨Á8ô‹Ït›ýZ_íl®v¥W¾Óñ2ã&Ý}ãP¾À×Úƒíã”ç¿’´^tÐiéVR>>‡RåÅ?·´Þ¢/p47²šPηؕÂÊÀÙX¼‹ð^ìÜ›–åŽe:ăýÁórI\ñ°±hÉ OB÷"g¹¨n÷]ž¨ù=R‹01Hxà—]®Eº°ì\O±láHÑKïó»–ÔE%Î;+&”Ó Ì׋uîÈ ëkÔá5#–l_çQ.é"×àâlåí¸6ÊL'¼˜qmý¹ ¾æópa¾ÛAܼüpmÍÚ²lˆËNw+oÓô:zO©gÃO`DCù¯ÊNÑJx£L³ðVBœµi—Ïîˆ-ò2èFçð K—ÒliŽôIÀànbÃcžçYQ‹©‹¾ùèó2‡ß˜î©”©Ÿ1òj‚.6Pó(ƒ<]£E/¦E‘ ¼Þ®Eò ¯”—hÜ—El,«ùj;gÕ;’ÒµQ±¹?k‘k÷=å~‡¤KŸžó`XF< °8uÑ‘+£„ç]^ò=U»ª¯ÈØF7ÄöÜ>¼“|¨Çã2-Jjª“dÑ{ý½U{'öx˧÷É¡£sdÈ*üÊ#šbâé˜Û¶3oÑ0ĉ#é‚<wNhœJ0jà»%U(-€²åxè„6Y¥ÆGf-…Ç»zdl[{yÕÞ-Ù]–ír¬ÞKO(á@³1IvÌ6ÏXÆwW‰%ÔÞôéËéS¼Mó•JåÙºˆc#‰b 鮃¶çµöY;!µ¯P´YʇdúÔw@Är°Mç7©úF¸{Ùèåñ‹LËí¿áV©©ÛpßrÀÇ9u£{¶m&èø'ㆾR>,¢q^µû¹̖V•aÀDe¤·/Š2Œí­–VJs¦É+Ø´–çi#ÏË(Ízm’&7/—;G´‹¼?ħzÄ'l¦!a·)LJ2-s§#_XtîèPøÏãúö²no›@êuzl~‰]—_gæ××ëë5øŠ¿s ]ž˜k›Br§ÇW¸Iï 3¯C˜4éîÅ) ñV¥[}@¼ÒñþÌ€9TQÞeÄ‚ù0 Ø0ÔTg»µY !¸,›˜««’»Yda½¥øÚÁÇïã?÷ûKáˆ[yÕYí¬ïag=Ž òœî}pv½AÀ]>áñ1Éï9´bpé ÛÓ™C\‰/Å-Þ W;â´ÏhÝ®Eû&’ÃãMpgE»Qn|È­$Ù"¿û57áéJ ¢ªa9;:;±<(‰€Ôñ¬+i•’kED·+PLݳ¤.—q¬”·‘€HÄÊŽR„ù³‹cD’Þ¦Û<ÖÐS÷>؇l,a,c;8*u²$ ‰Ö¬Ì0ú¦04,†°`ª›_fcú̺÷f /³Áà>rH’ªqýÂ"±Œ¸³­úý3lU7j|]P2.(²LCŠõE~¥‹,èËi[BF”,S\èÎÝ÷‘,ôÓö‘EøQÿÑ^.³›_ܺöÕ—!¢©Ëg 4 ëЧ©Ü·æíÇú‘ª½ØøñËÊà½Uò‚{Ü'|“£ äP»U$œÝKåî”âò@¨—??âIoˆ« "ýƒ¦##žŠ2Áœm)oPÊ$%Å!ll„"áJ˜ÖÊ65±ÜJ/ÿ˜Ëc¤KWæÅÀãžõ¸Ÿ•Ï1t¡·ùŽ5·!~Ó5À`i£©Öóœ²òz‡¬ü•…E•vÖó3+ºÄÈÖ#»»yÓRöŠy§˜^ï0ü_#sîlümìÝ7í+Pº:¹B8^Ç:'ûÔèÿa$ǨqÆf]þ ŽÌÞºêÊk_ö‰-“9YÈÊDmUj­Ï¢Ö£78Šáø=DÖåÇD,,AFS§¼Ÿ°9z:»(ÃèEɧ78œ§GI 'kyƒ!JÊ|:óÑ(À’s\Vri™ÊpÉ¥ HÇC<ú2å›su’tÏ$!ô¦ŸMaûbÿ~Ës‰É Çšý¯Ø 0¦ ¹|û…æ8ᢤˆËW9Nàod¥ÔZÉ_<$¨òFGŸÀ“{{•>ˆ¸e Œ¦K g”*¥Øòå–\qjxV Û86ItÙŠ+¬íOUí–9\¦{ f8ŒÅ¹†˜dû{Øq?®(p¿™RIJMZH’ŸVسͿ÷ùŠÕàý]<Æ0£;™èjpCRxZZXÜ?„¯Å×´† ¥¾É!(¬þ‰ÔdœêáLúLà@Î2«;‡ÿX7˜âör¾¬>8o½ÉáO.+›¦tMJoD²ò† Bé šXP,ó’Xw[Ë>‘“{sÕnNÆ»";²9Ù¼«²}¨±&;9ÎóKd#]åqGÀÉ¢}ŒRø%SPÞìÐðÆ#¡;lxÛÔD»vd"Ñ~&¶×c2¹IE6£ãÑ èÍA¹Mö’”]ž´±X Ÿy±ð{Ð)k¬Lê)­õBäÞ*À¤$‰Ðã‡ùÞ·Tíe‰ÿ¢§´çCtEÞ?ÏŽ“F;!MB¢¢Ý C¶n#[—vFj÷|È[ïÏS0¿_QÞŸð^ÞPœU± ˜ õLz-Úù,{‹ˆx¦‰n’RûÅ¥r ˆïtcQ·dÑy†ð)ê͈F£?ºQä8ߛ˥ËʈŒfk¯)XLåY²Ý‡%qùݼ7õzü&„)/çfïQ®üÆ'Š„Àxû¶ßêÞ¯[.wdÉÍj}za¶ËÉ`ÑÉa ;;‘žæ¡7ápAÕ",¿äÈÈÝ«TW=wUt¢Dû­ãŒN—åô°±è£šo„øËWû_y»‚÷ôN’Vvp.´ÅëgþD»€òv½GeјN<÷@ty.Ù‚bI ºr.ñÀá¢XèWP¾U©óòån8£·lÅ1‰Ç¹s^ìO‹ü8„«HKwCµ,#z«œµ²} .`"k$[«#«Ö×!kóõÓ~ÏÚ™Èkàa<Ú=£ú×,f7áKåþàšr͆ØW²{1aÌpµLÓ‘4XD˜»AüS<(¾uÓ•»´7f©t¶sîIšæ¥iA·{Q)þnGí·—õ«ÝƦrº]"¡]Ò îü·¥Z%þÚƒðpßáÈ'¼h¹ÜFEwL·YNá+KjÜÙ9Ú*Ù‘›Bf=èà(Y%^wAÐäŽÈy»*—6º$9; rE5:˜ð VbQ=掗軖í{à.ЗmÞ”eƒqJ®¼ÚÀ±|‘™ûu]pűQ§2Ö›ÂMs⧆6*.ÞMs¿áP!|ßWQbÄ ½4?ê÷çcîD™TÉL²è Ѝàø-ÂÏ}WÕn>,£ÈídN»÷vÁãæ›… ¢œp$ «­­8ˆxÑ.:’'ÂÊyÕÞí Êw,ËÓt| ®º`7&|g€N”–¿'WL¶*ïqPåù|\³ì À¶š>º ¼%Ì$ŠËÄí÷,Y˜{Clq]íÌØ¢¯¦u@Yä´Y@$ô£@[Ômô^Çëü e?5ÙCßeŠEyöì¹pïÝΕ—P¼sUïsðç;¥¬°æ€1ëŠ~?Ê  DD!^éfÚ¶aŠklÒ&ÄhÍÕ¤%ZDßÓ†I”÷9ˆòr¥¯F´îâ®Þy_´ãì9±DEJDÇð¨ç²¨ö·¾ö¹2ŒÁÊß´{çðÆ|_ŒÎl? èÎt¬SÅëF/;¢cU ÒŠ­¿ãPæoçƒo¥µYàiãõc–ÖÖ‰rÖÚß³¢ýe£-R¡ßud7¾Oš8aù§¸/^#nWLªDî‹ià¿ë -ÿï9Èrû²±ctdÁU Ø´ÇOTÙç6®Ì‹» ÏµwXÆy¹ËëlÐA–»²ˆfŸá­¼àQ¢A•Åo‘¤ßoõ³ˆÍ•¸¥²c9Üf¹go·6Wš¤Ù XWÂõ¬(÷†ŠàP¥ëivZŽG x¢z"îªë´1ó?Ú3¼…Sø½(aëpé`\׉ƒ+)oMÚ‹)IvZœ$ÙÙv°ÜŽÚEU’¢^ɲ&üxú>ÇE±iPKàU@’‰8äN‰ðçDÐúZÃÀÐÉZt_°?¬Ï:uþ˜ÈE"êíeÚR0éCŽž ÜR;UºN­´º¬ìt÷‚ ]Ž\¦¶Þ΃4)Ú—ó<ÈÓ ÅÃÌyq¹!¬ÝýÍôÏEHp öƒõö}¸Žä¨vŸ^íóvm{;ø>ì0v/qy¿ªDØj /ºv¼›]–óm·á-çÝ›«`qŽÊX1vBtOÔ!+*º#¬MÇð6²Ãc–Ü:·(çB†WÛ0[ô6~ÄóÈžîÒ%6bâÀdÑÁ±²ý)¦“U1NAç”s­Í¼²d¬°2ÿæxn×JD¸k}ÐÂŒyiF'Ëi$n–e3µ­0¬euBVˆ¥v=P¾GsFÔæâFÏVŠP¶Šêȹªå•ïÞb“0û=­‹ôð§ 9ïµ$˜‘´sÞ½6àI&ÌíÅ öÞ½wDç¼ £´ž`Æ^>»¯êÐþYkÛã×eükR´J_ÊÛ#ðqG¦ã{dDOw¨35ÆéL{^0®´ÄÕA®Ëf‘ϱöåûr‡Ò’EW=àú˜­,öû ‹f[ÎBÖÚžÈ“Ö Y¯_*ê›õ,[Î/)»¬vNß¡`1ÃW|¶Uy±0˜Ta=þöª´X1£ Ë_9|ºWISÇ’…¸%…µ· øY8J(rÊVÛrÔ²EOã_;°¼LíöÄâ/6*‹zØsÓãóLŠ…ÝnwËz”‹ÕNÑ.šŒk“€´ƒšÁZv÷¯v÷ÛË[+ÊD)®‹Ä/ðLP¶í8 æ \øßÈrËx¥­;_ŸtHîËáV±† X¿°äÉ[ Ù…è:ý—± Ï ^S°˜*}&Uº<ɉ§û»èÓÍ|`Œ‘_ñ§”ËK¾¸áÿoªvÃ?ªÑeuû„}SÅ—ó MÈ&ÿ±Î ÎBkpfºÿ3Ý÷×™ôJ¹Ó†m0î1ŸnØù(J“n÷ŒÑä<€·¾‰IüÔ×d­V´³vRÔÚI»¶–­áæúSîé¢méŠpDåSŽzñ#¿Îƒ&MZÇ‹vÞþ"Ú5‹)-wÝ1ÓDãO‡ ˜sŒöcWë|y MÞ­mÚ¢=XtÛlšF÷S޲ÈH†ž•þ6]V¹]Ë Í°—~®Mï4Þ4`w$¼}ðUú‰:ýÎP #&,'Y¯f”k`F¢,Úˆâe’Æ5ІE±evì~ŠmшòQpÃò#ôŽBc±³I““-Œ†rËì–æW Œ¼‰ºÏ:´ÏåÚ23ënVN²ð‡ŠcìÚ£a¼ò}. »?눢ǒAÞã0ôBS =žn”µóAæïö üDâïÓEíSäçµhÊɱ("6q,<k‹“:ü &[ɲÌyù‡¼àºç‡©Ëլ׆´ìd{ßSni,Ê‚Þ"‹kC‘dùQ½i Ûýq÷®Ÿ9f Ê…ލKª¼‹S>çp\~Z.N×nï»̼ÑÅdЙ±´q“îrÛ«ƒNØ–{ªörµ7–UÔ¦Otÿ±†ÆZ(Lç§úϼð(õ< ý“Ã…úA3Û=¡#œIsì¡sØ ?¾Ì¥ Êç«vßÚ[8QdùÔ¥¶Ìu ¢ìp¢(ìá¡3›äêÌÒdFJ¬nÜÏ;èñ²råÙFnñç=~.ªÅS–žWÈZ­&¤ö‹©ýaÉ!µ}lâÆyl‘)4 XQ0È»éKŽüž¹I68Ú§B AÙéõ’¸ý)r!±r–×$¦ÏòÖ’*ºL-^ŸŸ8ÁØÅ+å#|_ß›x˜·É^¹ØÓËSp_&~0쬳±Dûä$ɲ$óY!/_vx–hûåÜ™óÄ€ Ôöœî%ñ®‘ôyPw*Xr‰åÿ`i¬­‹ÿBCwF} ”|WYgaêõRÝÕ]¯ªÞv_º;L…Rû Ý&t@@ˆ‚ðQgp¥§—®âŸÝQ.•Þ ¯Mo6œu'½Y¿Û‡Ÿ)stîÔëñY\?;_.–qûÐöíü ñI‰ Ì‹øÿ€ 50¯RÀ\ìvÁlРƃYoÒ§Pt$Ç5+"ßV2ºœºè‚P" åq¥ ü³ï†Ï¦ò”z“Y@P,ÃѨthÃR'âdš1¡q07ë`Îùÿ;|qƒƒt¹>»À/§C8¡É`6íÎF]Æ,«œïïñ¯3r˜@8Ž«uKG¤Ïká|þ‚Ïppq|;ë§³^h3vai‘¸iÁK3nUZ-ú7>ø¦IÂÇrÿb,¯É1î»–^wz± ¼2êÍFÀ4Ýá°ç¤ËÊ/Çò:–òïý†Â,ü³[à³2fºŒ»p£{]¸C½é¬?˜”ö‹Á+Q$iÂy•hL«žÐ#t$?Ë¿õ?”$ü2PåíÙ ¸:ýþl €F= D£ÉÁ~îÚ†DÅPM½0TîÏ}ˆ§_e äåÙñ<>»AÞŸÁh2 *“ÞˆžŽ~8ûó0Ã0!®ÿå&×é”à¿¿É9E\å_‡Ï>¯ôöô‘" r§(Szôk0–õ3+sàñxðô‰à_×=^*Htž}/|öe~:#ƒXƓٰB¥×¥T1ÀÌÙWBÒ¤¼CœNpÊ}2ªÈ»ü&øìc‚*c¸= ˆ¦£Ñl8d@òÜŸµí’6E†!H¤ râúDç”'+’ö"H·hÁÁl4ÍÓŽŠ $÷‚OÔj%ô‹&ŠPNÁ)oƒÏî4A‰Ò gÓ!c Gýà<”Ç‘{GH&u+ÊC]¬â•MQûF© ‘UÆ(R&ð3œ€Xa'd€™kÜJŸ†ŸP„<$/¡––õ ‹<¡Ç µ¹x£Xº”mƒÎlÚa¢Ö Ë^JBÒ@ʽ„ëÂ8•Ò®èˆ6ʦ‰ðVζÜD˜Psq g}&WòWùL„w´ˆäx†åF­%Èrä"ËFYJ}U+§œ,Ý‹£ÚqÃ(æ ȸ‹Å"З2É"±<°ôÕ#êÏ& †&#P@'¢È+0å:—`©”ÆQ^Üþ&ç\.nAÃUî"ËÐ+$`\ÏaøKe£Rÿª¤QD¢´âoE™`‰¹ B %rŸ¥D?¤I— –iïb¯Ðt2 PºŒ)Qtšøó(I# L"]$©ƒÖ Š!ù…Úʤ­4'°Œ…‡:¨ßa0d‚%{öã3.=š\À&¶âH]\»m¡ÊE@ÒÉ8dØpp™QÒMÌÈÖ‰²¢¿á`Ë£\\[µˆþ§Éb\;DºŒ'gÌ.³A–Zi$À±d™¾©]Öíf¢_’å¿”‰$KÉ‚F ð-C¢‰kQääE\â×È%á– ÝHø]øì=%é‘uP#m½ÙxÔ·bÁÚX¥‘}?!ø § Zè!ü Uô»\SØV`¹¨rÀÙv2MfàþŒà§Ë囯'þÙœZjÔˆÌÙ‘—C”K Xò,òÅiîP×cwœæÑp˜”iŸLÈq}¤1ŒlqB ‹nþ$|ö¥’¢›©« ×ñ0ÝÌÎg)x%ö¥n–ß¹‡`O";s,×óJ…{±å5¥¶"mÿ„sKÜ )J~PDhô÷;¥y†åLbYžž¦™£zš¾ç”jRUÝ„¿’F”y‰ £õ’â™,3ãrÐ*ä9³‘G}Hî¥è¨"‹´{>ð͉ÔÑÝèõѲD«›]ì}8‡i9By’Dø­IöËÁÃxTåËÁòtîÅgö™²˜/à ÓG–m¨@PÁPXn¹7tùIÀòP)y§ cúè›õAÎtF,$%+€Šå‘.-Y´À`y¸*z})¯yÆ(õjH]Bäc`Þº;Àq­åvJ¬9oÉËÞ("°[¦(xgS®ª­—I€¬r­½V¯"}­–T¢8®‚0ï‡Ï>R¢–Ô˜.6X—ȹ#vB߀/ße¯‘¿®¸ðq)ÇK ø(Bϓ܃„à¸q† i†AæBýàd¿yzÊÀ€ùÔ žùÞn£âyˆÔ½º· ¦òf;ÝF'zÁÍî5s=—x™¦N3M-Á<“ <6£®‡ÔÏu,ÜÅUjQ˜Ä(÷£f­’4«+×饖KôCŠ_4¸8¦ŒÛÊÀ¥õ;,ðj=LÒM™wkk(”Þ#–34÷"KøÔ<¯|>û+©“Ð~€bêÓLrd9@(u …Ê“JÊ ©8]R²³Ü­ƒJŠI°58” |@Ùd’EBùCøì¹üïuÁî¦fÃN¨;îöd±ISý#,6ëîg‰ýÜ Ÿ}¸”yôÈ,³áx8 ûÌîÎÈ—u—d Á¸L€J^Gšô7b÷ˤœ¤Êç೿á¢å┚ºh»Œáxl[Çr*E‹Ð SR[Ë®óÃ]|{?‹ýò.øìÏT^A@—º¡ ‹‹.e]¤L¡?¿gq\Ÿ£8i]pÒÀ„b¾Ñh&¢?œ;‹ÏÏûçg{IZOʱÇvVYu…¸ÝÏxE –”¥`éQ¿hŒ†7“p:Iêà‹$h(§©ëV΂i/X|‘g(±.P¤ Ç’…‘D#ÈþþžW­nÖ[­–Œu4«MøoøWÒ±c×é\°D[>Ÿ}´¤D[hÞa؃ŸîØE§€<%jçâ¶„º:SÍòt^D9ÕÊ=0+û˜âVwþxêõãyA´ þË£ËQÂãÉð»È‰F0Ñ÷˜:èþÌdrq@£s`\Ž€[&–:Ô ›EÀÀÖ†«ÓLwBƒ[®å‚eGs\cÑBÏ‘Z±”³³n Ì)3+u²œÏÃØžB49×µ‹+ô‹Åòaøì}\²€‰;‚Ë ^#˜.\¬äYåBûÔž‘A{ù®µOü"±ò‹´½‹›N™MIíÉi¬„^Ï%ï‚$ú+pJâ þk-æíbÂH¹ÍU² 8coñýØ?•§³Ø‹kÕ8ôâF{ÛµÍ8Ú¬ÅðDuü]½8Œcå~å € Vy‰EÜ!á,þ´ô@¸³8ÂTâ  `ØRo1Ï*‹óE;>Mv“¤Q«'px_ ã$©Ó èCzXénM*€kòPL‚<´œÔG¥·È<´>rµDg„9‹ÚAaœ;sD"~—ÂT|×+a¼îÊD,(zœû9òV3¿~€Y³Ùt²f8rbItžqÜ$# +°\gÁò€åj†…9Ñ`[‚Á»ÛåÝü^´ñ@Ñ7iÁÛ–ù¸ì¡”é#yDŸÏþ·ÐT3bä¿‹LÌ䉲jÀ‘ÔjÜP°]¢"Ëÿz «|>ûL)Ëo‚5ꀤ£GäBb}¶2T[iâÒE?¯ I5’ü‚L…ãU¾ù&°æ†9‚wÀ}¢Õx²ÅuìÒ±øg¨?XR²ÐÀ.  zS Íˆ§óܲ8Ï+G<©&ý ?ÍF#M×ÒJ¢ØÜ(ý×t«±Ä7/ôgKÜWì\Äz…îÃ?Ctz̉ʺL¸™á #4BÕlézX_W|h³)T‘`™.òîwæE´^þ´¤¤ÁÈDªôA¸R=ÐÑù"†7*A8”]ø¡ïЬ¤;e ʹ=ݦëZ<´;e³»Ç´ÈfŠº7s£!Ï-Ë•Paƒz\*ŠM— [ ݳxh(]Ž3û¥O¹e4oº3ኈ3K›ÏÙ^¸ƒ²GLc†ëi=ö®Øe+,(:Y>(# YýÚ.“QV¤‰9ÀҪǢֈÐb^/€¿·[•Övè2u/)XtäùŠ-ÅÊø€y:]°1'ã‰L*LwµÈZèY®ô祹Ëü‘! ¡ŽÇ#P7–ƒ“ê³–¶ÒĪà•Äi’ùŒ} ¿üO Ì#T¤?}LHt†ÜôÎqîi}.òx¡A ,ÎêÀ¢Œþ@9ÊhÌ¢?½Á4;$íyºEh˜CÜ^™G9†à<´ †¸§öŸy´]'ɲ“8lÔCš¼’|9¾)ªûYhò£%)=t»³I$£‰N’³ù.Ù]ÛåßËó¬ N¸©@Œˆ¥¸@ã²Yyú9E Q_äþd2€šîv:Œiu¢Ä†¿ˆ‘ä¤A@ƒg„[ÐÄèøýÒIë0EÖœˆ-hdYXå-¥N&1æ$ ×]R !'´Ð೿,©9ˆý× ',a`‰-PÊ6è²áQ%Ä F–©ÅÌý9à–ëeÎj„Œ;€¹ ׺Ï$®~Dûó-ƳX–ÖLò( sË¢›*„µŸ…Ïî,)µpŸ{€¥æÿ€7XìטpÎY'õ­¢¢iD?5Ï-Ÿ—u°<ÕE;·Û›‚ ãÖ¿IBH@BBWð8u{³/AïÀ¿a#«´tÂÎ,Öÿ/ç+•àCw°äf:ã^«Á.‡-O—¿…Ïþ¼¤Ôý€êM°Þ†ç5È1â³Åýv ‡W‰IlË¥•¸Ab¯Q#»QYxB1wwEŽU@9±”¯²Š˜) N&CYï™gÙv|PÔü PÅyB³pKÙ[®¤p{´J¹‡’¿ÃkÉsÇs¶°¥{›)ÙJ·}ʾX•K¼™X$Y^(£rŒs{4Ã:öð¤X0¬n! T²ò`¥¢<]QL.Œ„›-â—œ+KÖ€]ú '\Þêg´_ kõ0I,ÕþFÉš3åûp aþ‡†ªC8 `–A… 'ŒF¿æyu?¨øõã•„úŠhï'a¢ay°ž¹¤`‰5†ù’"ûa€(]0(±¢Ïî´~H~ŽcrqKZü jëEî-÷g€0¾jàbKfñ°Ž× jPâ9æbxµ¥*\,E—EÒe‘#†7¨2F·®÷pêÀÒ •J&wTñ°ÕÇ:øÇ7Œí\²î‹‚þWøì©: Õ@Þaý\ÇeµlÙ ~± °Ñ+,Ê]¤>Íübñ/>2± ÝõYuœ¹Ïq*Ë;H¡j|„˯J(«„¢‰E0aF숖َñFûË=»`»E©¡[-LûJ×Áà"fAÀΦ`ûO&< ¢± +ã7%²ÀP 8¢[-2Ï'ã™?A8}¸ËƒXò—2X—E£.¤Èî—XäúV>œL;¾°¨½‹á°Ut±<ŒF4Ü"è’¸L§[-Îf~¯”7*1>7€ƒrÞ5ÁØöcþ³Ò¦\Å/¿üÒSS‰]¬Çí ±¡È Ë± ‹ßØ¢­; Š’¤ÞNN¶u’f’ej[zêù Ž(LJKŠ:šŒÁ[ì£*ây*Æ•öÅ*ucE 9Ç<Ár¥1østæ'3Z6OGÔ¦t`Q"+ŽÎÖ'X¢/Uª1[5B¡ÛÜü4›ô`‚IÂF+©ªåÊ®B5ÃPXuH_+ç›á°È¦ ‡4œ.ó,OQô÷Yò¬¯â¡¨,ÏŠ8ḋꨜ‘ö#±ŒÄtâ=/Ñ“òÒ¥êIOž Ý1¶c ±)›3‹ŽD æîðfÒMpÎÄgdGz¬¡‹Yžba–_—…í,Ô²¥‡ýûcL W‚±¥8S–‘w×Lˆz*ÐSòtÙºüŸ×ÐxŸqÈpK—ÀÐq,3‘‹ã?ð¤6éqÑfu^$& &ˆ‹kŸj¹Î¿T¹VÕŠXÖC“r6íôWa!+S\H"±H®ýcÀò`Õ‹Ç Ñ‹¦g£qÇ…ŠùÕœëJá½ØÀòô¬ZyÛ“E-¢µ´ff ‰æ6,í³/µÇ?0Ù$‰Ë¢.ëÁ®»ô4¼Kßç™’'ÌÅ)Ü5»µä”]kU´œdßX9#g³6I-¬Óvˆí%pÔ:œÖ•rNk›úã¬,WC²l®šÛEŸ¤)²Î.Û¶pÍ[“–·ô©ÍСuŸ¢æ'JG5L¨Z’Ж ªsÆ3,1Žk½¬D˜¥#@#uÐt“]ìQ£‹c¤ ƒÿÄ)å–Ÿ±p/šrÇjô.p»X…ħµç*”å< ÛH“uúýQZ‹&ÎÓE\éu½yóù³ò9›…NèÁΙ c{¹¯P¼<\'õJêÁ}ÏySnî»’™·V•<ßr‘>-=W:H€Ñ\i Ë` À´50¦¬ç8,K#æòRþÅsŲ®käÉ´h´EÛi0â!1çUsb˜5U±X2¼£ÀÁyL›epbë•j”l6ó …&8³h‚w…ZŠüÅŠ8«ÎlÔsòä˜æüô°669J˜$G"r9Ug Û“åLW Ò)ŽÝÙŽ‹u”S #٠¼¤ÐzTΙÓ/°8iïVJÆDß)ˆ>^œk@™ƒµä¼Üy(Λý‹”AK÷%%R×£&C Æ÷pèÀ¢¥ œÖìDšì=ÉB©—Eš0m/«u¡w¬ÿ™¦XIáÀ²š$»iâ®WûÜrµ?/¯6 ›`“H~õxa”q•îE¹£sfáÏZøåO¥^bEZX‰6Õ›"(”Y–§§ m„ï*(Æì7å…é+³Ñ}TNÅXWJ†|9L‰¨Y+šÏç,¼|¡Årøx.ËHY·7éÐyÏ¢ŒÎÄBbYiIB9™U¶çµþ3X> íLQZÒëŒáFã ˆ± Š:-ÑÏTh”Ñ9ÓŒ/²`ù+¥|™Žˆ› 'þO±w…)%í-ÎçD¶VX„¹á8#£Qä’‚E¿F£iH:°Ëÿ‘D¼Ôƒ]â õª9–1§–8›y–eôižÚ“Q ig§ 3I§ŸŽŸsól‰Ó¶[Zì©÷IÀcàÐèŽÑ`âÀ"çMTåœ@âÐX_Ü/—2.Òí–Rб—«bßpC5~QÑ¢ápeâ’îtFQ®lN¾ÎcƒðxÉÍ€öüŽ0ÚeË469?ó àCмz„Ò¼*Ï)_¸"‹4a…îà‘ ¸H–Éòü¬–´{q¤ëðv#ܨ¨l͵´–µg\Åë-c]Üþ¼EÜÞ)í' á@¾ICQL¬è§ƒUËŠODd†ÏäY§Fü¼ÊßaJþ¶äY: ©›p€;o[¡´¯Ðávà7BâšRq(²ôðwL6i!Ï/íýCQVNge%!°–$ì…4Â0KŒU@â*ý’Ånù—+ôÙÏ}šèM@Cóú\ƒ0‡iÒtÍØÑãVû˃»NnÒÊéä‚O՜Զ·Ñº$´ ÛqLEÒÎå«zˆ¦FFSÚéꀂ‰²›³ ŠsÎ+Êæ˜Í›ó9p@&HÀJÜ5N9?:ξ®0,uv§ ÏÛÜ!›»É¡«ÜñW,W}Å«óC–AÄÑA¨=>õ!åäèx~õj۲Ȳü‹Øýgy@L종¥Ühv÷XŒ€{Mk t,ÎÞÅ;,nëßçË@i–:ÎF]‘èÌ#¹0OªMâ§I'ú¬;¤Ûvt(Î’±;,÷×åÖÍ•c&˜t'%µE/!Q˜ŠjÕu0Î\À~ùw%¶àX#ebÁÂØ$UNäòo‘Àò«–˜Ë“”NJÞ_Š;Єó®•üunè&C~JHƒæqvŠøåUáòoÊ!ÙW±éTYì;ØõáìxÒà…¨Z cQ#å«-Ý<˧éÁAc«µ¸ Gôç¡\8—èŒ'[?ÆÁ<ÚuF¯µÜiä—¾ ÿØV ¶ON²ó98==˜¯­…›©‡÷èE+žR…òp$=#4¼qœ£¯×¤¾ÖÁ/Ÿ*åÛœ&¸¡‡“¹y&@áŠ%gR6Ù…iøÞfR÷ýŠZëbÕ¯+›]ôxHYR=×Á„Nq5í|f½%•Ut‹^g9¡¯\‘MqR·‹‡CQŒX6ât×ßÈ}7u­i»D¬b1LA•ח͵/ÿX.ä:W0ʵt]ÖΣá`ÛØ\uîUœaË7XÚyž çó÷%é¤ pP…NÐâW(Ç(®Ö/3ÕD°KÃ+R‹o°Ø–OTJïùN\å1M³Ù|&õcGv•¾IZiÜÂËÊ/òŒÞha\½5Õêµ5[Æ^–Ø éð*eÛJSçÜ¢¢Ž_³”—ÜÙE–‹G‚õ…"¼ %Þ ¼*D=­™D桊©žCâl¸úu ÛâîºlľecžN‘[ƒÖh&É6—,é¶ñ.*uÿ ‹ˆû~/ã"â§h&Lzà†L¹zֈ¶“Rp[ ß'õ:þí¦LL1Ï(Ð(\«Â[IªT8¯8[ùGû§g MŽãÀ @è‡I©”n%+ûÉ(a ’ (+qÿ¬0ö7›EdqéŠXÇàØù²tŒ`–LûÂFämÄ»áÆ6‰½-¸3ÈÁé.M5r_Ÿ•l)=`¨ŠZB ýÛí@_÷ˆì'ÿsöÕxæx/ÂF°'t;Ñ7?&ʾ:§Ãø;ƒáÉJi, tcý ­éË&\êX,C]ØÓ¢EZ~=Ù"i÷»W<ÍrÞ«±Îiq®²ïÉÁâ°Q©õuìïFZÝQÓˆªQ§k¬sJà÷,Jàñ^¶3U䮦¸à ,Mž_Ô©bmKÃjôhcpéq¶¤+1".Ó›Êæ°}Üù9šÏX?ÙÔHrºñ™UšQ$UPjj¤([ô&‹6z†bD±ž‘!Ê]+Ùå”&¯ð§©`1´ÑK,‚qÅÅþaÀrwI-`[v¨oóÐXf±¿W¯z´¶GÞ¯®O2´ˆ‘½Å#‹òwɺžGDz߮ÄÉv%MjÛtP-®ä©Ð ’d¢]å6YÅÌYB¼·ÉHfV$‹ƒ×ú¸¿Ž·Êåùæ ^7üLÓ󕥢ūKßjñ×6ÊÊÎë^Ì.‡A¹Œq…˜e“ÏrÔK­3±Îöz«ÃÔä:›µ&÷âf‘nõ`co (‰Ò9'Aè‡aVjU”·)&•`4ïî/íos¡«~<ç§Íu+µF˜Fµt3ÚÞfóºc”5¤Â—&p(Î…®o³Ü#TÚƒ|¾¾ÍslSœ·„9KðßnÉØøÞûjtùi/Û‰¬˜ÒJâè¥î„ßkQ³¸J*qJaÞ½ßRë[ä(“öÆê:c|º‡z!+êŠÊßï´¸²x“:jF[¦¤}Îú!è 2²5$ÄéÜi¹Ó8çý&UC›3Ý 0ó¦¿m³)ÇTqrï-XzÒ¨s R×ÎgyrÈ!ìçVt¤!ƒQ'+°ˆúE¾\îýtI‚øŸàp/^B¬ÐÉ*¦ÅcC]”ôüE¾Ü¦2ˆ‘î8f¸2†ïѸl,xÛK#,â[Ü;ÀvH¾Enyˆj¹h»²Ó9f§s|Žf-“+aºEßUvB^I&ª•×^8¹¶[®2®WËŒš±ÓIç“ã9®ÛJ°C÷m±kãˆ9ó¶hè_‚ãù¢~<, õÀƼ¼ô©ÐñØI¤PÅÉ+±¸?îÉz"ˆÙÇñSºÓ›™s9$çg+õb̬˜¢ØîG,÷Ë•¼‘h ÇLMB!Ü€‚7I«N †ƒ”®Jp©h壖4ã¥•ëØæ”¿>íSÔêaÄz;›IJò}>¹Z:ñP>fñˆpŸÝµª¼5w×iD‰qŠoƒzcaKI)v¦³˜Z@ÁEœl9gÞ‡ÞÏ·IhË9u¢œ×hÆ—Ðé–JÊ^ì.0ëšï²T è|{‡z‰hll@ÇA€??â•—&'Ó†”qL‘Ïú Ë Mʲ°Ã>t_? £96®(‹9¯äêc‹”ó'- ‘î±VóæJo*ñ!Øû¨Õ}²ùBÝ]ç@Ý)Xô;„#ĵپڸp¿~®A©”·Â b94‡¥Ü!Œ4߬“åSør% Å'Íôq!AFž6ÒOèܪ;¢TѦ¤:ç˜|ªl6öŸ–÷ç¥Üˆ¼±fË …õ±O7E¿l„~@pŽ`ºáOdnp™Üe1þq“QO[¸¥mPÒ™åxl1s’x±´´°å. ·< ,û;í›-PhÝg¼ª)Áu‰„¥pwYÌ/—E÷óI3Y§ö 9+¬dXg”ƒÇwÓCã£Ç SÀw[„Ü™l^#opÈÀ”Î/äY= òЬka“ xƒ[tµµáI- ¹ÏX ÝqaÛuŠ3–çT™·v[žW¯ µŒOU¼EÁ°¿¶pÊCePÁ1s_G²<¤–&Ð&Ü#9]d=}Ö"nq©†Ò¡¯ò`s€T–=hŸ¦Â_.¬]s^ ÏYÈ‚"Éuõë‹™uªœì5Z5†Îé —ˆ»¤@ѳhcE®¸Vâ˜`*¤²‹‰’6C1[’=ú„Ig™.4aKNògÔÏ¥ôÌ%'ìŒN³3:ÞÛÃÝ]Ü7¯á“ĉ<øµ“¨ wE¹Qêòy‹ÄíI)çZp¥óËñ^JÙI³’aœéÅ/(Ì+Äš-×ç²æ‚ Êþ¢–°„9eVB`ãtоP6Û¤qlÞ£r§dÎë3ÐÌã(ŽÂ$fK«V‚O8ÄBÊ|Ñ¿”açÜe“2)-¦£µÔÇä´.q3ÛÖ )ƒ&ªIglkÈߣƒxcgaÄ VæBÛ?ÂÐ]tù’å®H^×Ä{,õ=0kI†¹îõË£‹PH_¶($\Q™mè´-ÆÔ©rdÙlŠHE­@"Èòw–ÚˤE—%ŠpöÙtBù—ßêuçê€SÄÇžIwçÔnϱõKÐVKlí¦>Ù áWºIË1E¤#á÷ºÄý¦E²¼ÚËÖ¿dÓkqwÅh2pGQ;ŠE>ºKçœÎhá·,ÆÂ­ù@‡mü~{y°¿8 rŸB9Ÿ‡¤\.§ÑvƒÎÔ SKûŠB ¸ß_ÐE˜P8LXvù:ž‚æœ2¤Å¹ë°rEè¢ÅòÔá3çHC\òöE 6êXRåiмµ:>=9hì/3,5occÃßöþ.|íÚö6Ž0Üf©è$Lƒ¦$J E@Á9ûzž¯Ï5š5—_E£ÈJ”Åt Ý Ï»óÇðÙ]¥lìH:\Ò=–CÓÄ<î“‘ŽH‘«¸é™¦Ü£dÍ‚cWœNg 刜nHÙ…˜æ6÷ZÅÛ.¸gÃ.Í^ñZKA–F–½Ì$È~ÊÆœ+ê¦ ðªÂÚ&ü>ßOÜgÑ‚€ ô™áïáÕj² 'a”A‰jíŒò¦‹Lü e ÓåÅ aºˆ†‘§*iÇŠ_ÚËåq¸µéùQÔ°·¿²Õ‹àEGÍ·æ4SÞ€$¶»né,\õÌÃ_(ó÷³‰g³!iñe×,çjä_8jIÍC{ŠKeá¾:×Q(OÊÛ O)kCéŒÍ'\\`P.”Jc7 £F#Ãx·¯U6£°ÅÊQ7Äd¢Û»{º ³ã™%ZoSêÜy]ƒ 0¿ùØý˜îEàÅYŒ´c9 (³Ý©vdÓ'p±»“{E »"O/Ò®g6=ŽË׿8Q–ó-àRdoÄYj¯‘»J®° DÒäC’iylyJWŒDbÜb?¸6|T6qOF⥦ØQB¼K›u0¡Ú=æèñ'ó>8võ²‰±†àUÑ$šx„¬Šro˜5àFø°Ið›íËÃ)lë¬Y4õï˪1*{H÷{£958ÀXW‹~ˆM0ÎÑQ¾Å®{=|ö–’»³m ´l˜†Wsë!ÓGÌÑY,¬à}FÆÅv­nKÌ*?£Ø\ˆ¼–gNî{ŸœÛÄF½`=5®Lèvù þ›¹Bˆ?«`aÕ}ÒÁ0ßÇ+*ˆ±µc8”öB@ÜBuvTaýÄ婬oíÏ>á2nWðîYË d·†kiƒIÒ"qµÕ­ÃÚ¾ˆÙZã,‚(¸¼Ž­4•þ4†ƒZr¨º±ÒôÌ™°Œ¹­Ð^ì톤Æ I7Ð:¨D–%Eð«ã€2í¼¯H8Á³ §ÈY06A MÆ6C*o·´m㛕fš]Î..çþvL¢Ež©”Ó9×üpö°Y;J²òåX™O$Þs4Æ©_äß| ¹R»D•v¯Ú¬ ›öè$ÌL5æés/«Îìôý-Á/Âg_()«êÇ8UWsñ"o ×E>N"Šxw·ƒVJÒM×A- Qœòaøìƒ%5‰„Ž#ŽwÁ¡y‹O±,âÓö`©øý‡=»ðïw·áu[ü X¼d×,}={µg¦¸ËËO=ãP 1Š]>v^'ÊéžaPÒÇË>©'…ƒ)®¶XºŸñòSÑQÀ]Ó4ßÈ&Ïz¶—ÊšQW[TÀ—8¯dÁC\=Ž­Úý¬À{%¥8JRWj°ay/¯ØU&@A÷0ã<$ùý¾5á·[wbÞlÛâ;Wq˜¿6¦+„pgȼټ’^À¯#®“T¡+†ðÑù™D•lò˜ÓÌl{f]à d¼k…iÞŒ#VILœ}E¦CÛ3M^¼Úw ©Ç²I}lÊêB¹°X¿ÝŠÅ9ýæÏ,$Æ5–ß®T6Ë3u¦iÏ ídÏæªØªx]~ãK$:×|ÚÓç}Qá;ÅM¸D¼{"”–¯siD#% n&¹1ß`¬D1Ðà~–Ä}HjnÀYNü ‹r|–ìápm¸6”õÜ6Òl%Û|2Ä ·Í>|ÅA_öO”cÑa"  °ª¬ïÀb~µÔäXã:¤Y¬ÍÏI»W$Ù°ÔšîÇ5¼&˜·:¥%«nŽWéz‹¨»Ë˹²Þö!Íš'ÙR9ƒyµ€|ž‡Ó-TT.+\ˆº®EÔÝÍ}9¥¨ƒÕ‡˜Éaò_RwEAD E]ÏR#ôQnjf%¢]Љ}Œ©ÙÖç¬mÏàP MÚÛNäBtçŽÞž%#û Og®Éµs{¹G¼·EC£Ö¾R%ˆ!¡[¤ª)Ñ…]U¿E=Ë-úœ?¤æîîpë—oÛ°œµíg$«†ðqá·ôÞããûtÖþ;å“ufÉå©þõ$jÀK7nð#øÖÙôß·h£¯Èz%ÖfC˸Æ ÏhR E{˜gºsZ‚(K€÷¯äâ+ÿzXˆ+xŸ²Î·ÊñäM\d·H$Rý¢ießXf"iîÒ»bßq¨ŒrH$M¾ì) – ]< Þ4ŸQ´Š&ާQh¶Œ,Œ‚á÷·–2³ã@Ô+B{{ÂÓiy$È(Ù-A²4ˆrsªø·{ ÂR¢;‹ÿ¢T(1±2Æøû 3ÊvÅÛ°he1 Ç%9WʽXÁ¢ÏVüg%W“ ×M@+Ž{tCcçr!]Y"^7¶TMÝ^ÎFZ—Dj×ùô|ë«ÉÄEÁ ±åœÐüÿƒ’¢žqî˜Ü8Û{E&'-èæVa·ÿľw«¹iæ0àŒ ÿQÕ;ûºâŸ“§‰HÔ†O+Yf²|Q±Zxj¢cA»² J‡r~hZ¸ §GÊÊë Y¯Üà™%ß·ñ .^x‚Ý>à›²ÑóÚé,OæÊ6¢Ž@ öJ.çét o°X-_ô²Í¦by€îgMØn;É2u>ÔJHq8²ËjQ¡è¬r— +ˆ46äb ŒÐΖ¼›o%ÜISŸrY—‡É£Ër|ö •UpÆ JÏÍ2¬~²¿ÐOÀ›'i¥ììQ[*P"ºÝâÙ2í±W¥X¶7Àâ-,'vaaÜ8!( ‹ÝdM„::‹á°”t,ÏR±”n©—€/Kû y⟞-‹¸Ý'NHÚç7mk)νܮ°Nôÿ(J·Ç;ÅQ<ØrXPòÛ%Åmç&>¶Œ‹‰ËÒˆÅ;k ø__NÅø¨°BT"Bp¹Òû‡ZÜžOzÙ(j±Ã»À@ÊcÇ ”“§«<0ÞP®­aü‚¥¥Qåë2B©Å3˜Ì¦c' ¸&õJ•E(“0BÛ$RXMd°g…Át£Å`ú{™÷Å@ò-&`Œ<ä¤I×"xVNR.Ó"s—G(NéÐrJÿ*ã}õ ]Ÿ›,ôUy@ NiššÉHädäñ€hm+ÝÕxJÜjmÌ“ÖV¨Ž Çk´©·Ýd ñ îÛUWAâ0¢ÍÎx¿«Æ*€%IšXeÄ·(匲ÇE•)X³\¢X¾Å!Ñ8´òÁ7Œ'6(ªy’¡ 3!è®63å\­»5Àbt+-¥¬±§O{X:|¤£Î*Né …ªJ§ù0‹ËŽÞÏŸK^¡Ûpp!ÈùI7Ó9êY®3«q Ùp-ZÓ*w(7ÓQðíÍž9(üù2c…©N“Å2ó²’ÂáÜFØRA­à±bv؃Bc)SEy0sS˜Øõ*ì”(Ô%ä„ýx‹"äD™ÍxYwœÀ2fÇ`0 e6ùû'Dqä"ìÆ„C+²ïo±p-úaÙä—õiwôp &Ei@rþWn¼ eY<¼f‘ýøH‹àÿ²®ÅüሠŽÀXàU:’%n]ôc:£ I§þ.ÍŒN•¬òÿªGk – ½øè%ålí–k™¶ŽäJæY8Ÿ¢÷ÇXÊHP®¼­”…wº4ÓÐÀUæ«(ó$qä‚ XÀ‡×¹’UÀŠ*î@'Êc,Dy¹ì\tí®ÖHX°†¤AËzì…&:X¹QúyŒâ½sþ½õÄHTI”¯)ÁZð¿°d­ûqWð¬'  c‹¤‚P´¼FŸnf0Êc e Ýü…cö±y$Jk,Ë<½TÂP^H"Zg®áNO¦—…¤}œgމzŸŸè\ªÍÒæ»XÖÐ?—$ú¼ÂWç+ì›eM0-æjeÓÁ¯· ~â+[!¼¿ÿå`ŒÍ²B¬<Þ3§à¶Ë –ål:³œÌÉVBš‰sÇ–Bç—[-îá³· aÛ¥ÂvŠq@,à;n5¢è¾:ç¹%õ¼T, =ÑÕ²`ÜﶘÿÏÓv¾Ðd!Í4àµÒ:UØ ñ¦ƒ—„¶|~T~Â,Ëf‘z‚ÃâwIkG´5{Üã x~ByªœäÒQD'· jY Ú1ʶ_¬@d•#"ý³R~S\w6s@ GòXàFûGû64TâÒ#ÚJ½Í¨V«%"ê®PÅ®H6'Ê,¥¨û'É4œoòGudk É¶±'²ÝHÖ]·¸Úßk¹Ú¸âéX+úÔ×9é‡åcçb… ’Ô*øúÃT€"¶â\çôD‹Fzƒ2ïÀ±ñV§K³–+…wÛ¹qëIÿìk<¸À¥ï˜VûO†ãlð²N”#wÝi¤¨%ãÔ™Ý]*HtÿìW•ù%Žuç&–|%£u0jQ-¡ Ëk•š0Ç*mK=æ¨GÑvJSt‘¢é屡Råû,"ïÒ¾CúÆt¸Âáeö³Ô³k¤4·Rã?ÜM¨©Ôœš@\£'[®Ñï(­¥®Uª:]öçp{l-­a'ºÓÎ|ƒ3ÌñdK˜ã›J=¸`­6B qP«‹…kÅ/ ý¸^Ì0ßoa˜ß&]‹‰ó'û‹½µZ&µµ4l¦ÕM/à‰À»¸Æ¶šp]’rq¥¯tˆXž›aù%\Êã…cºJ£'ªGŽOÏ–çÍ ÈAmmkcÓóÓ+Bd’µt;§°wè¶%p‹“šBQ5ý£*¸ýýËC²8­7ýÓ¥~tÜ>?©·Ïöàÿ Xó*;ÞZTñ×Öj•µ V[óü¨Rõ*ðö¢„ò‡Š×¨Š¥Ù®•©f:³ÿøúñòà¬Vvàßr¹¶Tê•J$Êo¦>m”Ü !ÜÌW+SwtÞx†EÜ¿I&Ž•²’AÏâƒý íÅ^œ¥*O‘¸ÿKªûrX¹}Á¢Ê ”4sÒ 4ÂJ¬m31‘8«ûŸi¹1ï•3ÿ]Ûû4š´ãÃjÔlF8‚n½ˆ*ÆÎ1aÉ=Ûbk£Bn*8dGÓ5hœ,y$'5?¨%Í8ˆÑ€LpÖAº¢øk”·JAâØ–jB© pßÞ¦ë*¬m³Ñ”’­"©bÄÖ…°¿ÍR ÷GåÜoëBÛ“<¿yï°Ù΄óXiiñ8ãÝfa—)5Žel§–­fmÖÌó/¶L6(ê©ýqË…þˆœßîZö•.çG>æÆ2Bä 9YvZt¡Ÿk¹ÐoWæ2Yw·j4¡)÷hÈ/7…L’çYüø÷¨cùl‹A‘"’",¤M‹9+…®S¢4¢ ¼¡ŸÎŠ4$’÷•³åÇ 0óg„‰w´^S²+{7Ó”$VHNûàÌÂ2w+Û+hr‡´<9:šGh¼ÕÑ Pê!ä“H,ÎMhgžYÒÛ”F*cs’ …$$"I’¼ÊÌ á»ª¥´»ÁÅ3—,<ƒ·úª\ìG[ö˜C±\žÅ‡ Ò¬’_bbª¥¢*šÛ³Èœ¬¿›‡r,+’rÒŒ—`´Ä…¨Ô„§ƒKØâ ä+eeÓ£mñÀ~†€ ’ØLacs7]Û©6„ϴ×Ö‚d * r(7\öõ~ý—Zå«JÊ>K>w4G˃~!ŸcÃû®iU§m£Ög;»Þ^fÑE'yÖ¹">‹ö~ ÇÉo ±›XuŠj#^nÑEŸRŒLÇ4.þ\Ï‚¸ÙÅ›{¹Å^øˆâ5Û—=êPŽæM1è‡Ò#¤£Hë\ ð©ËšØ5Æ`ÿ’Å9Ä%‰®¢µ…œúŇaŠƒ¡RB\ô©9ï³8£WZ.=U»ÝÌ¡Ÿy §g~ÍjnçœUá]YŒEæë¼E- ÐFr›Xb4+ãVK»2Õ*ú‹x÷ ]>®’}ácŽoÏ—¾?¯sÏ—w¶îùrœ´ìX?`B±}·ÖšXÔÿñ*Ëáèý6§J³¯C9Ç6@’§K¢SE¬ûjË}S®Bp ÃÖ,ÎæIV”’…._Éoΰm|Ñ¡,çDÔ«“t7oþëŽÅѯóÌÉ8–z,5£9 [î,¯QtK^RÈ-¯·P'=\.Y´M{3°È”|æÿ_eâ?‹ÿBCÆC¥} d÷Y_¿õ¶4÷ôë~ýÎYif%Kcýúxýº¥È3»+{$Y, ØZ EìPŽªg¨™ÍØšU[ÄI%®J HB’Š›SÆcˆmÀø|Åà l̵ù¾ÿ}öÁ[uÏl»ÊýÛïÿÝ׿(Œçáç]ìî¿öâƒ<|±õ⯻Ø:\ Ê‹­'ZôùÑv«¿ânÐzSë&öYŸ=ríÚµû÷ËË£y5Ÿæõx?ªÖàL«§WvwÒƒ£0=ØMON¶ù÷å& Ê L(¯c_ûøÚè›t(s¶Õº \˜^žÌ&dS¢¤ax°¿{pD€tχÛÅÙµ^Ö/²v¯Ÿo,çÅrÒ+6‹ëŠör ¢\,9`i–GK ±\U°¤Æù|ˆ²M±”åðòh<¯Ìh^—Ãùp2a`Tª ˜8‹cxEoø§ ?3A˜˜ŸÐý&al0 0møì.f|y4„C*§³ùt4™Oª™L]òÍQŽçE9ÙX$»ÜéóVe:ðYÍ9wp¹œÃ à)«jLÀŸ„áñ•£““ã+'û;çwº‡ý<ÏA´¯?q–ùidLŸÍËŒ/OËùd^NFó ÈQ5- ƒ,»áaŽÏV¾e=ò#†å¡g‚å«À27H‘.áFÈ4€ªdcc)Š>ãÒ.yß`Ä8kÑåùÍX$Çü9`ÉUõ,3—u5éžz±4> ËÃ>†ùÃ\ŸÝ&¹w<™’ñ¼Nªùp@ÆÄrtØï£(åy7FÎÉ7ñ-Ï—à=‹sú00{>¼ÍqH©d8¢A „•(M2 “$Ê fi§], [ §$,6"B’$QsŸÏ¼Ía6à³»U}WÏGÕ¼ªkP¿C”ÜÒþ¦H5ñ.!ËKms4güR΀wAõ–hŠPé #ËÍì³%øìÙÜ¡DkP-#T3Uk ’¢XŽÒ0¹,¢‡,wûLã;Ð4:ÔKÉ жƒù ^“Šž¤ÈRäøÊ!•ã„Ûèü½¿Å&ÛH@Ú̯W€ô ]É*e]_`–ét^1Íbœ É‹dd!÷iÜ'Ù·þ‚b‹øé ú¿]Jó°žç£!¨—X‚ñ„u>ûÖW;à04˜hžr ÙUˆ£ßÎPž‘wg`À:Ñ\©aZK «lP.öa²t/?«_qœU>»“«ÀtA“ÐÆ”k,8ÂHKªùYý*|kf YƒÏnRüäà1Øêá=«šÚmŽ£Nž<ȱª¶Ém4–ŸÉÑ<í@s|6ÖìÀh>€)·ª¬F”­“ê$}ð3á°’{®zDG–ð9g¥I—˜¦…¹&gZƲœoÝÁ··KbDÖå¼@C)Y´·ºÚé‰Ûg‹tt_Jþ£O¤Cy®ï€Þíçëð3ék‚ _£$À2«©8T‰A§…¨åªCC'“,–'ó„‚Å$ úš7JbŠª·q|PÏ.6K>¾åP~¡<®“e>¨18¾Ãù ¼ñ€*9KénSÏ2Ô”[±Ü*+ã A1¨²Ÿ“PF äÀ4N@ÏÁqy ô²nÒÇŒC–y²^¶¿ö@Ÿé÷}öèDb2Ë]ðÙ}Š_Ua( n~UåÃÛ1ìV”‡aùŸ4¿ÇáÁÜ y0(ÊàÀ”®Õcj¥MV¹r؉;×/on®næy;·âx óõy'ÛŠt$µï€Þã8  >»_Z¡)Ðt-èÚe#éí“pºëäÞÔëÖñXà7ÅÏ¡lJ^¢LÁÑ„ºšÐÓ1g·Ó—–ÚLËÆE°@H«Èu.˜vßÇ)ïENIu φφZ6¨œ—3ð_@ ™‡ 49šœ\9¡49Ú‹’åhÑ¢Xf]^.ÒÍåe¦æzª¥€åY€åžNWHF)dë¯Çò>¯Ü!±¿ Ð 3‡ã3shÙ?î¤ýÊHèz'¯z¿#„2ç’9 ÉÀ±#Lî×¢— sJ”îïg+ ˜B¤‡çû©òÊ9C–o’Zæç] Ê Æ÷`ˆ0Ý &€¦V-H{y ÞB?K1¹Ûïæ’.ya¸sÞÜÔï:x¦h‹Ô*M V˜š€\CÔFe ©+)Џo[¬I†ñPçnW¯ñ¸šÔï9R0÷Ágd ¸ódS°G別`Œs²`ܘ³r¹-"°¶œåƒ(w(!>*] §góY]͇Cêãê¼Qª Š#hMš½¹ßwxs‡"齕MÕoYs"±2ßO(HL™¾Gzsp>Ó9¥Ç4K(û*p);à÷#Œ³…ëx´¼7²ÊY3ã"ÊHªp·Á ‚ â3‰N”•8Ì2t[ú›ì›Sâ%¿u$–°‰"9ån–•Žÿ„ä :£²òžO®‡«À)K}&A¦†ñ'ʇD)™-EW•#1Q6å¹eÃíb“ëY=P-$^•û!§Ôjb—Š0íd0iH(¡ %ÙÌ“ëóÍ­­d…¥ÿ{©áMɺÎ)' Ó•CwGgÚál3X¢1 ‡l²¤ö ¸þÔHÛôd¹ä‹?¤([n‰v$–®gézJm‘…e·Hãͼ‘Y¾BYŶF¹[xÎåÃŽœËsà³›µœ HX"à^ˆ\g$çbrn÷äünšæý>rìc]OTâS»œ@q$P×Ý¢åÈ M1~eâdègëú‹e’|¡§:ï±§ Ñ»%„#(Xãé¥9 âlCˆˆY· ùÏ Ëpþ˜ƒ‡‡J@âEÐ1P0,ܰ"ŸN“+çÏ®K!ÿj·=bXžç;¢9Žè.iŽxű—w8E,¬:aƒY7¿:²~õéN˜?v+%¡ô†¨ó*`šÙ"zH&û^êÄiÚI×Lƒ(9hažP°˜:ïNV)9:àY, TÀÁ• ·D¤LS„‰8°&(Ÿtx¼÷° žy¼@”œNê¦-c‰¸»»èñy¼¯S ˜ÆG‡2¥*f¯qM#F ÉV]1ïãò¹u ^ãøIE÷žgŸÍ;Í£áÔïdŽl»íÂS¿ &V`‘’³¤™“äS’| |vIê èÞñdÎjºèï_:d_¹è@,ßÿ ˆÉ±—¤•æñ"ž É·Ô^(OS9âÓŽBÖm¥ÃƒXÆ !Ë ö¤¦¦ÑâÙÝ<ÉS¬B(ákÎÊмjåÓžÔ¡êÛsÛ =À»3Öd‚Ù¦_zš%@œo?ã±B·j,,Œ€Û=,)»˜Gt…ž‘jmPM1ÑgžîCJRìòlFÚ^¦X}׬KªS(],Pš_·‘ÞÍð¿¬eí"Y×*#ÅXå&€r ¬šNÝgt[´½Ðd.üb¶„¨ûÈ‚ç´H†šã³Ï:è¹2ƒŠR4ÆÞ­æ³u/M Çí;-Ó¨"ñÆgâ瑬0bP4EyÆP©f‹.@û‡˜òWÆÑÔÄ+Ÿsðʋ᳋jû Df˜&¬0 5Éñæp=-IûÜçtóóù¼ã|.Êó¡M&h°?óº¢ÞŠq:é¥mÐ+ é¢zžó±šµ¸âÿ‚r>Ü¡YÞ5ú£À;Iç Z “&Š,V)‚€Vœ@,ÅϵíEñW2ÊKäé07{ŒQ|9Ót!MpT¹ùP'C&xF©¥ù¼•7²oþ|ó ÆUJ JKŠÕ v§XçõV“:‡y?×üŃ2ä_¿ä¤Ú¢ù‘;¹Ù+$–t·¡8× ÅÛT÷gŽ]¥ÔŠèYM±P?SJænëur(DÆåäjX,U÷F Ë›DÈø ðÙ=ZÈXbóØûSË!­Ò›X®\9ßɈhóÇk"}•šcöõ_†¯ïäy¡’Ü­gsl!Cš–ô˜,4ò˜2G*JÃáí3ù²CË|3Ë]²ÜË””¡kÐÁ3Vp!áߎb­DhVMÜâÝžõ+ð­[Eî“q½*NliÚ›±èÕàß“Ýí"M‹µ˜¦:|[¢(hM²¿pØäš{õRÀ+Sp¼GŒ6 i"`™í¢ù12Ì…™avAÙ“1uì@õ‚Û ºoÌ̒ŽÛ[)ù£òœy)oLÿ—¹¾ @!f E Ø·®DâФÜ4¼¤àO¥>IjŠéÿªm7…b~!ÒtL…5úrR5¤’´ß½¢2ËùÝíNœçq{-§E’>“( —†w×i„ù+‡o÷RéfRסƨ„P¨– ˉŗá8…Ts~ùk¿ ¸MµØ$BÂBýxÌze#º²—uŠ^žg¼X¯ž‘“xùåoüò2¥•‚°.„i£ ›a1©róa¿Èû>1ÈâµIë8¢¯W‹{´o·Dí2Do†Š´I–ƒí¬§xÏ´¸:àÑtÀ¾›€Häx=Džhƒ*v@Öc¬ï h>u'<†3:>JÃ0½’ž!×a•>ò+ϧZÕ' „¹É"ªã @,=å2©Y¯¡ ¦£AQY†øáø1,Ïqñ-Ç_@,oöcÁƒ‘†À„÷ÝXPVºq±U¬ceq=cŒØ60ç³ PZ>(øŠýd!ÚHTÜ ;;Æl¤%LA w“ý0<Ù99Ò㣅lk± ‡r¶ : h¤'SXÛ€É+û2MÃE£Õ"M°Ö×NC_‡ÒP®º¡”Ì.ccõx Á4«é4‰Â&ª(½—7øø¡$÷û©Âº™GàÛø.“² ­1F!²k^澬³t°ì¹˜åª‚%õŸÍHaÿ'àiÖLË9Á`˜0)Ñ1q?̹‚¡ßIe Ìu-ž§»êÖ,#âX‚Ç2jJT‹É+áÉâÂHQªqê~Žd‘ja³XCl¬Æ†|ÞŠj‚iˆGB4˜Mì"±89W$ 'óÉg}X=í™b!Gµ¨éò4XX˜†Åè fÞ«êï„… ¸øÔ?ç–ë[<°±°D7&Qq4aÂ$œmÓÅH²<‘]ù¨‚H’y©‚i ¤a¼†Óêï‚…ši·p^íÖsèY’ªtæ¹Â– 2¤¨»@Ó™ž¥—]V›-ô„d +¬Íë+Këd9ÚQ°¹…•"Á2Eš&>Ï’cÙ\ŒED"#p^Àu™ib×@¦nºÈÂt¾ ‡£Îbc„- 8ÍR±iìÍêç†G‡úiÌuAÓ¸ÐËE(áb‰¦ž%Úh$Ël4="“*²°'í¥ »xÝ…Éâ—#â¹ÐÆÙl2Ÿ•¼x¥âˆNöu(ÌŸLÈò÷¼—÷š”nŠp¾¥skP+˜ëž‘1:´§ÏÑÁqØIè—s÷6)82±~±Â°–€cÉ8—öÆN™‘I&YÂ=­'¶[°hº€¸ºK{=>¤¼ebáGtn±GG›o¦àøÏG8 ÌÂVÈ…+^M×%„Rm‘³u¡l7kº1Õ.@2LùE;Ÿhw7ÜÃ3Î'ÁÇÃ/ÁS ÌŽf׆&êhú§Ä zTÒI,.GÝðˆM†éís©ž’ϲ,N|â|s³à›&ÂÏž†×¯JÑ‘YBxaËÄÔÙIu?ÓDFôͺO´ŸT°Pú¼‚üŽŸ½›½d¹±$õñ¦ëqï,0ÎÒ‘Hy°zu“]ºÅA™÷J4<ËPqìx¨.™DXÜJ‰¶Ñ&™Çy¸s«pc$–Ã룊қÌÑÝÙñ\Á3û”g”\ÍÁ %mú{”`":SB$mÊ’Ëö®íW$‚×ï¨V »êæ5xUcf Lšt›¼˜HPéÊ{s(7Dù0¼~—û¼ZÛîœpœË ëÓAÊ ­g*ÏbánZ¸º¹Mp°„ô[ðz—¦…G$šÖ`¹Ù®ËQÇŸÂäÏæ¢ÁÆ<*¤ÏZJLA>8›%p2ã_ŠçˆbF¥X•åü.‚‚æí '˜ÉÄtÔ·Vû ¨~²JŠæ:ÜhßáëÛbýQ…Y¦Ÿj4ÃÉ#š2Ôïî‚ Ÿ4Îñícö½w´x–LbùexýlKD'ØA6ŒDáÞ$I¸ gk¥+b¯óp‡ƒ&Ÿ‡×'U#€Ý@8ë ¬2Ÿ‹j"¦î|X¸ª»Ó¡ê>&¥š:c\¶€ ü›‡ÓÝæG¡üì+ Ü2×W$¦0^ïcLËFMq¦ZÊÁl¼ÌÂdžKÐ]H–—è¶ṉ̃„*vUc”]ÅúpŒó9Ï£¸Új˜“Ö×áÃØ…sËÝÈ-—uº|@Wr8bŠç3âÔ3V‡5¨"6µ'—mAð±×¥âgTâ=¦+–OHn‹3*œy…˜¶æã –ü»J.é³ NÂæ¤Ã8Ž{ÝF”1ú4¼~¿¥D¤1 g@Í=XÖeÃì&càðúüÂÅhä£Ï1UÇÚÙÆd¬r8ˆYFÈΞÂ!9™õè$êäI”/•Di ôÄG•‰ƒ*Ÿ…×¥E” ˆÐ˜DI#6nªCÙ7nJ#%‘ƒï1?!kÄóûÙ÷N[¼Å⇉ûÀý(&ÒÌGƒNæßªŠ¸à&˜(Œ"a…2j‘˜¶©ÂúIÚéÏeÂ¥r¶*!€ÚqT¯_§GÅŠÔ“š(Æk=T¥úB2òq¾Òq‘Ë,â]>3];ÌôŸ34êÞ¢1¶•C&K(‹ŸEøøµ3E7Ó¿fp D#ìõfPÌSZœ ¢ãHMÖñ>dà¯Ñ¡ü‘…4p=pÓ Ú’ú¼:MÂýSôdœ,-æ~g€åŒ"ÝײC¤ß“Ž ‘°ÑÎmdIw¿˜`.5dÀñ鹊gÔCz®ƒ_>¡X(™àá¼ÂxV,7åÈG˜\ºÎØÚEžP¦Ìƒ)ÇXw¬› Ø•Ø.iuîÿ¨òÕõ½E¶ŒäâA½€@žUTT++]”³¼ »×âÅ=x‡T-2{4+eS³É)N÷%ç$¡¬ȳTšì9ŽÍÑoµ”`<,ðÓÍ&üPòÂú-§®Ì…‹ó¾Ã¡ƒù˪8I_hMZx0¢Ï•&-—å‘ï|Y.:ȲoŸjɸ¾"éæ ®þâ¦Ä“b@ %Çëu^. ²HVAïTÉ2"‰ 1hºK}?C,…šzñ:»ÏwHÐg,$FÃõp˜udp÷0ëéRö7ØõòT|΂¬¾-î`( —CY¨Ðö b•“vÌ©ÓØvg¿{²ç"þÇÜÜéëðà`^в#´Ïï–g„³aØõRØ IÓ ”}Ï!¥¤±ÇÜ`fà³Ð/pðn; Ù ¥™¢‘1N &”ÝPÎ*Ì"ùåsî”CyDxPÒ*"ïþ|KGh†Æà¹ ‰îG“hÒ¤¶ÖÏ{tB8Ïñ|’<õñ wæ¾V¢òˇ“Hš½'%÷cî¶H4fÑ1õ²5£àºÅÊEq¢¼Ðq>ˆäƒÒ auÉR!j†L$þàqõó,ïePF¾Äî£-îvK¢ôáí[j”6$Å ,fÁTé*Â|îïD¸ž-ÍÙ9 ÙB2ªÿÓ4A€E˜MòˆŽæoáõž– aP®ë ·…jXn¼ñÚñ‹E‘Vÿä'¦;Ty„îPm©Ë!ð{_ìк¹4\ë–%–lÀ¿du{“,þZ‰òøjå\»|½C»ü¥âBñUh%ÎWPÍZqt†Ù½™ƒÁ¦Ô["Õ½’Ák%ÛØ(â%æ&ÒK&÷~½Ã|EZiK£÷„XæãéÌ ew1]´Nxo(ò’–ŒÏ¸vAîWZJÇÉxw2ˆ‘×$t GÇŽo¦OƶØåEèÓ.œ]¾ÉÁ._n ÷ŸNVV¤=ÛüxêÅ¢(]Ú3Õ/Œ§ßX‘X~XcÝkìR‘2_ XÊf,žCʳ&,/u`9Ðì‹ØQa=àÌ„H›P·œ¿ÅC6‹©w7àíýÂy©Ióã`>‚-`&À†¢O¨uó"Ƶ”,Û‘h®šÚ^æ Ë:¼ývKñºÇt×±IOM³œ¤û¾žº~,§ýdMuûǽo(4)–ce„®L"PLªœ<ƒÜ‚·'ô1Y6™¢UˆG zÅ]3–† ®”jrés(]´Òïi©¦Sc¸1 IS{Àœ¾@}Ñg§/+`¸¦;h`Hv‰@œ6œVój6"ÊÎä—£nó!‰¼‹W¨_îPv™t¥h hJ’ÞØuR±Ì˜Ig…Do)ν›g8–ÇX0P{—ä^2$6ÃEÑ1GnÑÅëM)ÒîÃÂOéÛZ2‰É±œ hHµÓ€¢€nöfí[”ó a{8Ôa$ÅJAº¿7ÈP üOK sƒ~ó?ô¨Þ« P¹¸&± Kï*'t~ç`ÇŽÔ‡ìmlö~¥ w¾©gG&Äê[›y¤N–Å1,z1I¯ïì§,M8l®NáÛãð‹Ê϶ìjÎ÷IW޵9`—ód6kOŒÚ·› r&Ðô!6-øÙ–yE@Ûgùþ\d4![xÙ°ùi‘ð_ÃE©˜‰É¸ß-Ã|Æ,SÔ¹# TÃSbÉ4¯;É{ycS1ºlý[mifM«,VÂÙa’v`;¸8Ž#‚ã|¸·’Åéz?Iâp=KÛYn¬ão?݈V6úÝ67Ï+Ðû/î43½¿„Ty@NƒòÏZ-=WVOÉ8(oŸÕ(²³séÈ¡þ{ü²¬_DQ¶îÛdñKën ´Þ)±ì‡G»áþÉþñÑ0IÇ;õh%^ÚL‹¥¥öZ;ëvÓ¨[¬­o´Ûí¥ë¯ÏWà”äwð!ìXPw¡‘üi‹ÞÏâòQ¥õJ7:Hs¶W±ùXKdŸTp˜Å½‡áí(Ʀ&«pfó n7aË3,0W¶ÎÅçŠsù¹•sç6òsç¶ðOv>"ú#_*¶¯!æ äW[ú'’ ƒ×þ5e?§5fAÙ&9K¯qà ˴H£O>nš{Zˆ­< $»ØÓ7k°çÉùC>-¸Š?ÝëK›&í –urˆ|¦BpQ5Ä=%V">îfÂñÂ%6  ÐîÉ8m$ÜÎ,omµóþV{«mõá¢Ëý$oñ-ÛÃÿ™$WõÀÚ`Â’…Ñ ¤ä «Ù¾Cq •¯—cAš¼P?¡ÈînîA+ŒÛ_XÃ8 ãNn<©ø~kÇ›þ¼²8!ôBú/Ó±\ ÄÀ­½Vă ±"&QöýÙrÉ'pKÈù¶ç£ "¡3aò„®¦úž×)³ØÔÄr°g–6¥†§?ã6Ç?b¬ªãŽ,f̸ç5•-¹ó"Á§Gø €N“K¾ŒñI 68ô9O*@ø?®qñ§r›§sžÝ’@4ê;îÞrÅ›;œwØã7cGIÌJ"çÙgÿ,0špSż‚à=âž[ Š“*|jïºÕx•smèÂB ¼”ç(­å“ËQ9Ä›N¤4na £ê3ÑDG\i¾Ý0÷ºƒ þ2ïn!JïUŒ§Î-ò¬\ÓþÛ¤a Z!k¢iɨ+*G}y“g§iVú½-Ûµ~m`t>U°àZÍ'“+ˆ@fŹ¿ö·?ªéJa`×8»¦è¢}R‡H¶_ï½çŽŸòiÿQ]¬ßÌÒpr–w‹Ï°}ŒÕ!L†éXtà™SÜŒæQ"äÚOà’„hô¸Žä)f¤’I9Ÿ 0d»&ECr|Ï@ö©¯ÎJ§>ƒ kÙËl[¤ö˜`¯áŒHºvlîÉ Jêç–ˆfü×$·t‘…i/ïSL.×ß©dl•«kJgœŒ&D¬-™£c7˜„Û¼¶¤:K|þ&,Rѱi©‚ïbbí›<t<â:øâöÙ5j…²~ÿ¬NáÍ,©PÌèý»sB­ÄëE§#b Xp¨ÓÆ]©ß䋽ó¸ØL›¼Ìk-åún]®]Ü6–Œo¿¤nw·QúÉâ<¡ßqå¿ÀÛ—¤C²=²¿drmS¨—„H†‡ÞHKÅ;Ư Ÿk§A¹S×¼ÿTf×éøkwÅ”SÜÍ÷‹Üì‡Âž÷¾©2ç< 3hþÝ–J@Ïî7ZÊnÁДħx³' à-ArĈX¥Z4j™ßs¸18‡º¯¹1öÌ©yD¤4KWÛÅÉüòû~ù÷J„DoÞ(§3¼¸´0»tÛ„b’yˆÒä$A(fïÂë³wwŒN/.],Ù€¥…_ˆ›¾xóB†7‰‘îŠ$NÄæ:ïB×9¼†ÿo_li¹AìÓá$9åSíZeúD¼“õd¤$ÓÔe(¡ÈÐí»‹Ê³"Ȇ’®ñdrê» ÄwBÜRcPPöðuMì·æ_ÍÓÙïäÂðÄjÿÚi¸öª$=йöuJ’’gúñ–Æ. anæ€ÙJ5·_^\œÂÏ6þÊŲDvºu·ÉÜ‹c1M~רbã|Äÿâsvߨ@¹Áð0‘Wv¯9n™°v8¹ ñ§ëK•ùx†û™X|‰Ðódÿ’9UÂeÀI5`ÞzJU]7º¤ñnx@dÛ.Ñ 2M×gòDˆÕ+RÃcX6ÀGFà?ÚÈ)÷’ÕȃùlÊ\MC ƒD{-LŒ›N²œŽ{61ðGZv(€ rî¸&ö¿;—á8ÀP!ÊVúÖ˜@¸Xš8a>Ú²3v·+Æ·ÃÉà–è0gríi]¼• a’XpyÅTŽŽE6¾È$ó§x}P8ç¢ ìPp¥ÇäšzÛ…±HÄ<ŸƒCvÉ©)ÓœNŠe´‰œ(HLÎýÒ2ÒAeœ±/çÓ ¸†µØXüåL>|ãí™à„Ò?®[ÆTRSl’4Ýl†!,ö1ÎGkÓ\&Ý]‘;´<)N–9øv¿%îÜð­0©r²‡é–µ5Ë×v0‹7áñ1³Ü)5¯{Ï–I Ö|Áì©|ÜòûWË Íã9štò„o€'?ñ-ODEZl“òîÿ¸C–q›‡¼ ×¹DÄ‚_¶d+·SÏ÷+PøeP<˜žJ}ëßTttÒÕÑÀ/kyÞmkgDþ²Aß0A˜Žç_\z@7áHúܧè:Ï&“i.u¶ð‚t¿l+é ¯Ãû ‡ƒgU‰³ríž1‘„M¼MañÓd mï–PJ)JÞ%d6˜þR7ŽY? >V‘Àq§Ë§Z-í–Qü ÷#\{‚ $ì®f=㢖Ü2LMŸêNÒ׌Ô*»Ø+E,0²±UCcî¹jt>í°HÿF‰ÕØRž²BCPüÂ.C”´N›ÄàÙ|«¿hs†åQ_´ûŽì=q6$‰32ŠUÒFºü¿–]Zû2´Á.›àÄg)üÊnG9CžVz1ulšX÷³‘~¾Â/îµ/&çš,¿›Æ¹òIë~ÖqD¸Èîë3–ÖÙXx–†Yû®*X̤7tÿ€(•“ árH.â«OGE”äHV“®ûS˜ ´áS²gPÍë îƒgcÿ–²œ'øÙ¥¿¥ùjÌÖõ49¼Ÿsx#æ9x—Œ›žì1ÕÆÊHøôŒUÚœ,æ’CÁºŸkÙé—'ã{ÚâˆÛSçcðfjVp@±ÏÆx’¦œ‡„"+Y{ðº[­di«¶¶]Px¡/u\©©ÑÄ«Z>ï!l|ÉÔ¾ ÇVYƒQD(X,NáX¾èPsÿ: Í?ê< Ñ Sd¬>m@‰ör±œ”ÿä]„Xø4íù³–½­ YØYÀúýAýãX‹NØ=à:ýÅ×ã’>çZ6,æ ËÉd*M¾ƒ#‡½PxeX%„YcWÕä©êñº§w]5b‰µ²?ˆ™J±}k53”eÜ{_ıh˜º>JcLH¥q…éßœ}³OÉýyËNvຫ±t\Ü{¶4 7flŽÊSN—8ç (™Ð&ù¼…'0¦UĨž_ÄêYÊiA!Þ㩤È˹_nÙ¹÷Ÿ )~ÃÜp€—ï¿Ë´œÉ¹þ¡R³Yée?"ïj“/;|KÜHÊÞM8,rtÆø:+8Y¾â8!Ü_t¯êÏÙ»ŠØEì€èˆô©OH«]U ˜æù¿bî•NãÕÁ(Ó#yO£É-B¢ʹj…$Ë{yÜ dÎ{ñ‹¿ª˜g®èp™Ò=Ü<»'™@Âz}[A±i°ä/Mí†_uF‹7]SîF´vrZX(çž*põ¦;¾ªè\nŸRѹÄ>ãE-ƒù;Ú&#b  ,hzAQ¼˜]î@0ß[ó8[I7¯gHnc#p7:‰òrYNàí·´,€¨¨^D”SñmìÓ¸_uð-*¶.¬ 8 Ê‚¸g&/ج²×™ã`þÒ¡þQžgZyÜ^„f¨–£ô\°QôS8™4UKxt¤Hƒ¢{|Šî¯[vàŠõηë”Xq<#©v•½å˜÷>ÚùeD³Èxç–7­û·wáÙšD'ü+£ª$WÍ1å¢C¹äî8¤ &·e½—4^¾D°<¢K4nö* 2Ç¿,ný˰<âÓ.øfÚEt£øM,BÃWxùëa0‘¸÷f+&[¹ÚͲEœwxK_l Òè`†©,Js©ÖUî¥K¤ÏD*\¼’*O V,*Ò•¤ŸxÝK1ÙŠ»£Ìâÿо2YÝ2®fX ¦H ªø{“ráHywI=© I StYiçf+ L7Ó;œ•͉‚Æ”£ÿhShôþ½1™ä™°IžSQF^KfÑwÄ lýò3z@Oú™Gt/[Éú™-ºlËej¤,S² ¢§¾ÐUÜ¿ðýDò”^Åœ:ï~"ƒoÃóWx#]+«TŒü¥¯¡Y…b–0¸YÖ;Ûm-,‡1= s²Ieß|è¯ ì~f<¡ßi) xð‚i,’óÖwãtv}‹Ç²˜X¤÷š4 B/9h‚ùÜT)Ô8¶UHp''ùÎl³Û¤ý—Ûý¼%²ÿ¾}l.,¼sN‹wÏr 3îË×JVñ¬ü5x–×½{š$^ùYv®¾Ez¹Ž•¿.(H†”­ÈÌñ}ŠÕKwU’DÁ]Ú[ŠåÚ›í£ËÂÇבdƒ‘tyLñ|Km0i§1öe± 3Þˆ’ó©qµ@c-Yäì²ê0Š?o¿)¼îŠT®°swÌ÷`š@Ž,*ãÿáí#=5Éí']s¸-Orü''éÝõ£ nŸ`㊺D|ÛƒŸånœ$÷ÀÓÞlLD­9,â¯)Aéw¤3XØÑÁ›ÆX€BöSƒŽ£ëPÐs±yºxõõ –>Yô]ÚF­VK»ÆÜ ‚F6n!iµòŒ]êi«*ßòqÅ3*’W«Hȸâ[O‡äŸãñ¤p)_Ë~V[«8¬¨ýÛoR[Q†àÔ¬Ðà=;ç <6‰T ¸ëì¢ì ³÷šÙH’"é*>š+kÚT ¹ÉCúëº<±\xPÑ’ â4$vÁ&u|z„a›X c€µË5óù¼ƒ ÌGå‰õÀÁÍÂw£1Êám׿¿Í÷\çâ®[÷Ix»ù× ë?tðú~¾ZSJ8¤3²ÐÆ>­dË~æÙÖVKÜÑTðÙp˜ZÜü|» Šk˳ɞW]C1׃ßpxð¿,=xž8'_¸µGD|&–…üI·1²Ù ìšZÚ;”8˱ZÙ<¡†½í·xû;xDÆ5Œ²x͇úe%D{3Ü6Uv*FM.³«r…7CÜ ìòà»q+å\eŒs£pD• ñNWqWÚ:5öq'^ÍÃNŒð­Ã{Ь|—æ0°÷^¡û!ªO´s¬-vNùvrýxŽê2Zxñî‹äëÜ[»*yW±VvﯽvÕ$Í…¿Ï |‚©§8­¼éê•RÓywöšÔÙ¢4[^β;úçô›¸8r°Î/bÓÂ!2Æ4æËP4êØþ¢þ@ˆžrÖ±6mØP$ë¼%ûG¸¿X×ói=œYVô@¡=öàªÅM}Øùâ÷âò¾#7‘Á·!ÛotJ0ÚhJâÃEªïpUpC¬Ú6hí¥µX¦C†·Ô…^fñ®G$™“¢…è8.Z±Ñ$Iœ$ùjž­e!m2±îSt¬p”£Á­¢tÓ¨pÜ÷¹¯¡ql5iìíåyo-æPè«àUMï:퉃{ßh\áÌÛ øfV{Àª¦`»KÝô'(¾ÎJo-ir‡Lc´ó~ 6aó¢4k€b‹ø¾‘ÏpAJçáfŠHŒb§nóÓó€öÝ÷ ¢%H²„,ˆ” ãõ´3GVçå-‘Iñmü·tï¡hÌð?>QzJÁbN³"aøÍ²Ê”úp:ÆYƒšØ ÌI„Q°?¯ÃxYÙjìÝϘ;<½Ÿ äv9RôašõÆôÁŒE"æYym%ÙŠX$‰lK7c‘g…·¥zs§ys‘¥©)¡ðÛm‹T4Ø pN+ØYWѸ°ˆÆñf¨ÉÕÛ ìJ3zÀ7ªÓoÖ='&°KüñgN®Ï²‡œCÁË#n5ê˜ÖEw8A0|ëÓäJ/—}¦ ï— ƒÉýç¨DöÆ“0ûÛÅu§eïrÑNð/É4M£]“)^òÐÅZ¹Žž"ŽÛùZZ¤q÷ 2ÎÙåH.øØeÙå^Dòf‚„é­–Z~™`oO ,ÌÖ—™4Ù9Œ{qvºÇms¼”³¿-ÑÏ:¸tz{‘ÜqX%4?¯˜‚Šõ±à€:¯4èDI=×…Æ$˜+¸D½iã¼ÃVÿ¢ºÍÈœîRÃH’5±DqG´¢@V¨+W½:÷¼C·ë¦d£‘ëj©Óaq³­wÁœ Þ¿r“ªsí»V\X•n“Î%X^ cùž–²CÀ½¢ÜG%®¶ã%Ÿk·ˆ.¯”~ƒïÞ—gäiy-üñÇòìÀÎdÿŸ€nµ5P*>‚µž±ÖACˆvCÛÏÌs­?-ÍÚVë 7·(>Œ¸3[©s7"íÑ.Òª·A–£Ð±ƒ.Ù¡ÓäáÞÜ[Þ –x÷ßÓ;‰ƒkÅrK’D_ûë‚qÖ',1Éé~£Kí cÄšjØ ž Jn¡× 5Î|j—“åVY~QFÕ¼_{ˆóòC°¬ÂkòKº§ì[Å÷œý1ú„yùÈbc‘‚„wÑœ7ɸwÆÆÂÿõqÑïjm•ò÷&e·ë¤jZ³"ÛâÁ /q©2g“u()7~³Ño¢ ÞHA7=¼I‹dïÒ"Yë– “,û8NÓTì vvL4űx Mkº=Z…/±*2EÑfP ªHý²x¥äBá6‡Çðþ@ª¢«Wk8Ùp>á >n(ˆƒ®ó"9Õ0]ÁD7úQ¯‡½&ï¡ÐËgä á…4·)æÈuùŒ…%‰ónò¬¢»µaôy¦fBÞ¼|F¨]ÄB/Ÿ‘XðBšÛ,ŒuùŒ >"ûÂj 6˵LN_÷Ovê¼’qÝߤ‰p i‹¶úÊ7¼‘å®ÀÞ0ý›Š`ƒ¾ClA3GÔx÷ÃÕÂI‚×—Ð+M$I¾—1‹÷J]’ÃýKÛ±çbÍD¦ý0x•ÿÝåJN¹þû€á|À Öež‹EJ³óp”õÒ[>ª”]ûýmãx¦tœ œƲ&Ým¥ Eí«WÎ`øØès—ª|,tò½fS¬t‚·Pû°œžW¼TüR 9O‹~î³µ bú¥@Ë^¸f˜˜ã¬ÍŽ)W‚X}ŸÅ+O)HÒ©âßu(~¾_ Ðh<#W¨Œ”& ³LoöÄÌt|'5té? ŒyƒƒzLªB$Mùׂô f¼¼Ó)#GÐø‰@Œ²ò½C¾NÉÕT” žÙñCÉY?‹È5ŸóeUG]žød n7dÝOŒÈ q£Y}z0ÊU/*],0œƒ'}¿ÌÇc¡ V&PªgCÂÁ&q­Õ4‘÷„žT˜·/|0)x±%¶$ƒL8¹ÃýXpöôÜ“B9˜×ÔÎXô:)Œn6äIÞ»CzÓpMÉ€v›Ú¢Tðù¿¾`ˆSS €—ÁѧOG ¨{ñÊ\ËJk& ìI#IæfâX¬Î׫ –ô1=À ìnPótŽËê\`ºÈx7Q†7Ë’ºZf‚qºRœ0³€oœ‚ô'RÔ80SŽxïμé¿Û@{èGðžoõ›7NÜØ-èHõ˜[ç¾ôÑDra;2{œgät`¸'u¯i ¯{yˆ%×Õ.ÆéŸg÷ݤ}aÕŽÞ«]4 Æ5_è^/æI‘23ˆøT•ríµ/ â³Í˜¶5àmyð6*!Q,úÿx·Ø­¤Í€´L Éó©0ï8$ˆDÑ5mÇ êƒY«s†ÜÞªe{bŽLåR¾QÆ!Ê8·jr콎ú[²èé¹CËy:I¿HÌ‘š\𥹹¾½õí^Sry:'1nü¬Ô“2ÁDX€McRÎÚˆlf8\Ð#AI_"N%Ç肃iñ©çj{~ôË« ûQ§ˆ F{6B½^b® ÀëàÆª ›W¿ÙHN¿ÚÁ»Ààb ÷rÓŒ×ÁÕràÁºúMS&;—Âý£~Á.¬¢òÛâ[Ùo› "‰/é¦ùsìJ&zaÛ8ø–H4sžL,jf™ì]JsPúaN:*òt9Šo‚ãDb^~‰W¾W@!­u87„ $§¥‹ãQGYs¯ÏÍÉr)°gõÏœ¡Û³˜ï„—ÿàõ àl°Á)éâUPT¤½ ±Ü.ßïð)ÿ ÐÊ3äj¼sm‚·¯XuÜd—m{{N!ô+€6ub>O°‹3ŠZ÷]à ›ñgu(“.‚^Ðcª‡ˆLhMI¨ç‰|˜;•K¶Yb[*î´ÇŒ‹ŠüVYÖ” g¼i³¿¯s.ÑÛZjÙ G$ñ ¦XÌãÙ9LMRÄä/›E±¾Y,gq¼Ê™Åêaÿ~Iö Uq¼{¯ßä“ Î{@]hN.„y³9»H4Pk,¤/ûôê˜<©e.gd½ò”îà¨øf{ý Òü8§P†>[:ßøœ\ Êó:ÜdæÝå~B _*Åù§…к9ß•¸íJ0p(x_l|ÿB#=&À/8a«Ç´om»n¡¿D¼Ûs øN[áÖ9øuþœK|Ty%zH7ŒxÅ-o0¯³uÉØ?¼—y-dÓdʃ(Hé…«/t•¼\b6Xðd¡™y8Ç;ìÛ ˜¸OŒ´f6¦Û d«‡rݱìŸ.1âŒØŸ-†ây°`/æï¼ÍÕŠ(Ñ©éøRp¼‰a<Æ[ט0Áp Ä!ÖI1V±’ *Y´î˜_u†>ÝÈŸxa§‹ ׺x¿&½)VfsHqçÜ7Å׆ª–£ú?ïæmþ½Ö‚r%£À÷#j {ž‹D‚7‚ÎeïëöOKã2,ꤱoùž×‹"XŒ›¤>È«byóå 'Ò‘ukYiàˆD©>`[&ïÖ]öaybyXŸ ÁÏÆ“Œû]¼:ƒ­¦5…Èšã¤IN5AC°4 X®™Ïi'h´¿‘÷Z:£¶ÿW²šwB–Öórÿߟà?V°'îù‹ˆ¯’Š5K–çÆc‡{3üÊâ”ó8Ë+Øïi¯¾­ÜhÄñH…Û´—å¡F¤Sû§hôá-Ðô¸q•_ kÐEvº:öØ{“¢$°‹™o?) ÐëÎðÆܶ]z +=É ±Ñ?œ<Ä%þ½¢XÍ“~¯h7µ?}m`g²7Ψ‹¿'ØzŠE»jRò;¬L$ÝÆ¤zêogä.Á× —@Bù; 1.B.ÝÁ?k“0eÇ_³ÛÚâ2ܤÏ^èÈ«`ö@®µsÞ8Ý5hu–0¹ŒÁ1.´ˆñˆzx`Êl¦â]£ž_rbyXg•/J®¥9ž Y&:«‡óŠ5p›ç³°›±®×?¹ª`IïÓèK¨ÚÑðgL.4®§dš·t¹uXcÑG·ˆ×i…*.úq±²¾y¶·\ð*üF˜³&a ìO¼ž{ ;æUÜ&¿ìo¯@4¡w:Rb€Ù!ëÓv—–¯ù‰ Ñ‹éZ¼A÷¢lÜsÜ–†azþfyDÝC8$¼ì§“Qâ8$ ¦yΔ‹<9y¬@áY>A‰úŸg±ù%¹*d4¨èFFƒYX!‘¼Ñ-˜ÑRu¢"ë?ì©x\Up¤/Òyå/9ÝË;<ËzDð> ”ó„(ÎAEÜè܆ùÖV$мÏ6%~>ßàPrן×<óòq9ŸŽfóÏLꌲë¯Ò%àj‹„npº¼$°÷`´œ_ÓZ“ñƬªÊeúì”Sê¾ØÆˆ’-w–ËÐ7vIõVø²/Hg(—!öƒÕ¢=Á¤‹»WQ-‹†°ù}“㌾oï6‘dJ6à ™ü%a²AçÑË7cü‰q¢÷Vð7*P¸Å3_RüYšÑ(É~àÞ2IGó,,@#M\X„,ñcðÀã¥/ êárdtËaåaÄ3Úž½@øãkÆ}ƒ‚äœqNËgDÊT¥$™0œ§,}ˆ2=ÞÀÑÒX’òôOÂic %s¿áe½´f…!b]G`®+’ ›L¨8 Ìݺž8«„,¹ãôZ›%¬K8ù!=Ø­þ·¡krÙª!©Ö#®ùt©Î3‡¢;‘$Qù'‰{Iê­•=© 1Ç1~L1Ž|Ó™WÄ8Ѥq’ö;xUl'ÇÅÖ,ÿŸÓ8@'ü©=ŸÎ»Ø Zð¶{õ8×Íöæ‚LÌ¿yº²^Ø- gÏÐÆ±ø wàÇ%Ͳ[b­7)›9nzWx·éd–#)ÎÈ(ü²3Ìù YhË´I•ô`8óZ7XãtyE`÷îᲃ‰Hm8î¶·žxwæžëæâòü­A˺Ië­ðºS Áª& × ïئGt¸  \K‡æ ¾¾Më˜ðÙ« Ôçöé{ó‹íG¤wcŒk0<`PA7Þyõîë0ý*¸˜qªY€1^‹„Ý ÉÁÍW"†¤³vv- Ûí¥v§³ÚÞh·;qŸ\bÞh±Ú_•dY$Ï$9w1¹×ðmŽÃÎq-5Í ¢4É•Ž#¶íÀ$Êi±rß=¡`1½†DóìÈtzv¨ðØ@ôb(&ÃöQ ¯ÁÛDNÈò¸Í-¿ ;0%6A$0æ×®ÙX– Ç’{6W ¼´ wÖË6ñ÷p=ÝOÏ^ˆÅÐÿ?%Eˆ7Öà òÑœªÒ‡e³H{tmÖ„À,µáçº ÍºdË*r,¯t°ËÖµWŽöÕ¯nŒ+i3‹Es2~ ™lʽҨaþ6V,Ñ㠹…P²n&k»ÎÇ×ð”Åú½QÑþÔÉ$—•xEɪfø‹ï‚K…3àŸØGž7*˜n0ŽêNøÎOھݔvÎá<ç7ÛKd'Ö‰iéÒ4–Ê Ö–i~b¯rø-2ŸIÌvr ¯‰)M¶WµÕGî°@ãºy-ä«»i¿ìÓ iãÆâ´Æ×3EBLuŒ»ƒ}/'Ê·;Øø--9øKËÒ¶0Äž(&Ý’¨³ÂC×”|»«ÏÇ2ÜX¿:°í³3t.ƒ%í°kz^áÝCÖñoàè6ØÇ,Ï›Û^íÈ©öáËÞ%Oûl¦t–³faµ %—›šºÚ¥á=øKŒ“ <÷a Ú^U ˜1þ·äh“ØL‡ƒ½§SÖJè¤ O¼¹ÊçcøIÏi“þÝg!¹úýÇŽè74'·#b:“ˆ¬-ËÐ1 Ö:S˜ÅZ^Ì™å5Ý–…uÖ™†’l]wR2irtX¬®æEÒM’¤Ë»'dªŽ<ÿ~‡M0‹ÿBCWE} ”dwYgUõôL¿»n=L é„„Ô­ª[÷VÈôdÙ…ÙÅ c@DÐ% ‚²ÂÚÝ IO$ÊᬞuÕãAž‚ŠVðÁÓ×* «¨+>`EŽºÙïû¿Ÿu'^èêçpóý¿ÿ÷~dO{ÒÝ—ÞxîÖ§ÝØ¸ýé76ö76÷òGF£ _/èy7wšŸk<šý-o5_ï7íÞVŒÏWùl2ˇÃYQMgùhÜÀÿÜéu޶ƒÝƒ {Û‡½ÎÁ~–%ø_øÈð{”eì§ÿÔM²4õa¹‡½÷¥ðXFð²ÿM±äç§Ål4 F³i9˜ Ç#e{wç0ÞîÅñ^¾ïîħ2Ç“¦âÇþà<©Ê”ß…¯Ç?üðÃ¥ªÎ—³á,ŸÎÊÑdVS%° ,ea¤i(@PH@!ÿAÒ(Kæ }Ÿ8¡ç (ƒ—ý);¡üüddŽ'³2ÏgÓ*'XÌ:ܤ ç’š³ßºéæ&ü Ë“}ÜâÂr¼ì‹Ëp˜ŸGnAFÉ'ãYQŽT,» –q ÑbÀoWºº’&„_–«]K°4ù½ èZýˆ¾_7Ð#€¥šåðß²(gÓ‚@1h'hÃKû€ÀÅ4Æ5|dy¹ƒ,×ÀËþ€Ñä|Ü2¬€$Ór6©†‹q@Áö¾˜ŸSŸý@ÿµÓ4fXöL,¯aïýAøèXNÂË>ßÏ–çñý£Y>˜¦cø¢@LšÄû"$‚{Ò4é/ª·™Ÿr·¤oÜf$Êï‹Û\Î  É¬Á+'’ž ‰“­„a;­ãÚÇ#9åãx‹8§äçáþÌ&8pËdàÃek\ˆ»Óâ‰V™Xîgïý!øˆ –Û;ìoŸ…¯1,£éy*#+p… $NÑØGÑr ³ÊÞv'^Iû+©"S6éÝN9ƒ}‘eZ€©gÒçö}"¼ó«ì¤ˆ°<¼Áx6R c’ç°=ï1fXžæ¼ÿEÞÛ–ÏÃ×”Ñç<åß žÓhVUTðšÄi§KY¶!ȰÁ„‹Èw“Ž(‘å}ðõ(%Ÿ f%HÝÙïp0ôaéoæOZ‹…“å•x™®¥—éråV”ßêÑ ®s÷iÄLŽ™w>T!%©OØ©P³ú½>Í ×Ò ëàbOÏd”3Õh`io™O*ìÒour¡Dçt(H•p(9Ø 9Á‚jº—,Ö‰ ¹@Y&AË%LÃKÇ"/Ѽìw 5=üŸ‚jÎÁ’ª`Sv«“l¡ø±ð#zÑíºÀûm)ðÀ¨ž-fhÙUÈ^f1è·9ØÞOWÒéÒúúVg½½µ EpHYW9-%P ´Jë¢%6´Z/ŸeG„—hˆg4~T“ÁÀÆb؈ªÍ´K,˜,ñ ß#Œ)èðeŸ—æ ȸÒyÖK^L¦—ŠE¡Óf#¹Áà–&? qx#h_~Fx# ôA¼£T%¼ ½Ðæùš¨K¬K¸È]TÙq ²nå˜r@h¿¬pªü{ï>|$Œ*;Ê%zŒ¦©áˆÀ;åÀÃc`]TÕ&av{»A’„!¼?Yég+ô2‡]ú]Õ Â”y8: ª;*"e@΀Òn6ΩÕk!:CEŠ[-élXŽß­`éß¡cùŸðuÃB¬Þ ab°gʉI–Æ€C±]¼Hº&’‹*UÎÓ{͵ã ^öÇRÈ€ ×q8ÃešJ¢ísr¼;U]GLϸM‹Ì«QâÝ¡óðD ©’ÃUãÁlÌ4¤Î‚s¶†Ä§—°ïÝ­•Î Ó7Á)`¢gèg„ŠúÑÒ†è±×€ 1dî½%êÄqˆ´$JÓÎrI“DøF"†¥£`Y,ë÷*Xƒ_>+µ¹Pè±MÉ…™S`£Ás¥€Ëޛ̤ͧÌSt4ƒ¯Sšu•ÏÆ þÆ#ʿ˴Á;‹ÀÀë ~ɬŸúšPæKø4eJ[/ €…'ùÈÅyy4WÀe…Cy By²-?¥{m ùrÀ“Šò‹y@A[Ñã¢W‘°‘ Þê ÊSí‹ÄL*_˘8Ö#æµÍ…¢ œ°n§.›—@¹¨@‰÷tfù_ðUHfA5wz„Ji6a!˜^¶¹ïíÄ"ï?¦LÝñQ`ƒ‘t¹¡EI“ ìºÒtŠöC=eÒ„\âù8M0³B.¶2üÝ×è¬n;ü| 53O Ù7Ï+ª±-ÙÃ~¼¦Úë¿z°œà s„ ó:–oÁ×­R!M©Ÿ?)KáÆšH!wcaåF[['5)Ì „ ”cx£9Y. ôM7ª¾#ºù@– -Í¢b.µv@€…9"iÆL*êVänhecùQ‡ÍðEyDœ,è9–8¦á”ÇU5(ñ~Þût´&^&>S󵺙bášúO˜ ~lŽQU Pr“Õt/88PŽ'8Ú‹a^¶Àß2Úð[¤ y zgHš$±á œ•1;¦˜yÁˆí f ŽX¸Ýçu72bæ‘?¯è`T²³î>‡còWE œ„=@øÑ2oÀ8¡CÕ1‘RNe–؇Eæu‚0’uÿ|]Ï¢eyu¤-êÅ|d^VÔÆ4é²Ó&ž Ó‹ þ¤©é¾qJ*˜ͼùåNw?ô4ðËl¨bVä`Òa4“^hG€*º/N)Ì´'ÕØ%ö‰îÔ…n/û-¡ŒÀ±/«Àub¦‹E¼8¶0 N¥  Å‰òãH”Ó:–i‹ F@fÝ”Xu4*eàöƒd%ZP=Ô_ép¾÷Ó:3¬øÜµwVÿ¾ž  ÿ!áPD£ªò`‰ºQ¥s†å:ŸoÿF‡”ûKEÏZÝÁh]ΘŀBƒ˜1cYÏð |¾=b Ÿ­Ðõì€Ëtx~D¬…1É ±0ƒJ¶¤}dî:°ƂֳîæR¶”öÖ6ÂÔ'Y8”Ÿt„þVZ.è0Žg¨ Á3uÄ®*S‚xûl;ëDy$‘TÉ}T‘P$Už(©Â6`äß<dC©}ŸŒãP~Êeþ#Åø??%çSNAÔ‚Å nãxzÛí,]µÊ%Rå¢ÅÔC7K+—ŠÛœZ 4êF¥ŒEã×dÉG—#Œy‰þ¾ve¦#Ap>cÐÔ9gK’ö0i¢™ šåÀ°<ÎÇ.?­D¥¸©ð tŒ¸©€òv4(gcŒc b+˜ÌìÒÜkšf¦oC1£.Âj!PnÓÉòiø U-”1®4‹2[PΤx&:ŠT õz•3? 79 …³R 1‰;BË#˜“¸æùôÚŒÜyO™™’ jÆaÌý³Çú$® ªÄéœ;B¡ ’ŽÛ¸6…ô.1—5gX®ðay³ƒqÑ®¼Lظ æ9xŒå#ÍÔf1 –ÕÌÈ’XI·4m,RÎ=G)cÈAúƒC4ƒƒªÀÌ-Y@Õ%#–¤ö Oo¹—öÄ6ùå>Ë–eOf%À?ÿ¤GƒL¨ n4馳j ëÑ8ñˆ;Aœÿæ0þ¾®Ö#à–ŠDy'9µºM(Ûí4 ¶äkûabÈ»Uí 0»Ê*„nü‡BÂËô› ‘>ª1z Taþ¢!_vƒ<©ßÎ=R ˜dù YoByf2+ÁªË®( =ˆš¸DžOÚq²ü,’åNË—Òw%é`ðŠÀêžâA1_D? €3H'DNjA1CÌB9þ‡/òµ†ÈL°¸ 8E9øÑÀ2ã1¥‹ålÜæ/RYÇ ñ‹0»3ŸÑðó£a>ni’ ½×Ș ,ñ©Ooûà”"$"ï™nm¹Â …OÜý¼GÄü±jJ]Òe‚¶T>ñ`™Ëº—Æ.¿è Öá¬Ëð&§AÚ• ¬sžƒ5l³Ú—”ú#ÝÔgðåÔ8»ü’ƒ]¾ _å®+øôè¡K?Æ*~F–½Sðî8 éñ`ÊÓŽÃ{k¥¸Ñða¿Hõx¼ìKÙ¨À®›æÀ-<d™—j4÷©>Kê-9eCú$^ˆ…'ÕlÊî H©Œë  ƒò”·:DîíŠýBD.˜à5Ž€aÆî0*Hv·iœCðGh¨èe´jÔB)”þË&”·9ø¶7 £b ífeÞSŠªPéôã63ÿ»õö¥E•#ŠyŸ/û¤´êF´êà€Æà!MÇ,zú!5Lo’öay={ïÛ›4ê¾ ¥Ý”>=ÍKç儤ë«rLJ›:LoàAí*ˆbª…“<‡ÿ6Tò¼Ý¡[ð1ÐR5pŸACbzbÌ]ûžÊ¾‡ûÄ®\ì+W' G)·ÚYÕöަ+G,×IWL ^ÉdŠævú9Åí­lž?¢2u«$.ð{ºõ’rp`i˜+`c™!¶–›}²ÎE•µ¦¬Ú"¼ØÃ˜™,`èFÒN²tN˜¡Ž*ïtð z§Tm4Bù¶.¸±†%ÖYå¯R²˜u–Ð'!xÖ)ªÈÂRÕc‘'t§RÍÀïXS7 Áz°8Áø„ÄrHA 3,·øï;Ò?®Ñ£ºðI@\K;ÈBØb^ ¨N½Ë¡ž.ýFZ4D’–f¶‹Á,ƒ*×NÙV†DáT±‚†<%ý+MYÄc Ï•'Ä rLEφcL I˜Á$KpÎwBÔ²£>vaÞí8£l'–ÞhLÔ€e÷hBÅœI—Þ™áVà›A•ÌÐÔu%³ïv°îí²²ŽÚºè.] ¥ÓÂBY¢o£Ržó±.·êÞÓ´KÈîÐc¤‹^ò¢€ïôYg$œ#[üÓ?Eõ…˜ïgô<íN3‡šJ:p@ØM_XœÁ†bIY|˜›DXÕ–ú„.?£_uˆºo)¢ŽÜ#LG fC¬m.X1¾qD»m0˜PÊ-á™ÄiÖË–³˜Öy³xL›“åjßýªãŒ¾^ö¹†šM+1÷Šøœûõ0üQüêN¶¶FòhðÕ òë}Úèׄ6’÷(h*‘Câ¾&3´ÁGCŠÄÇáã*~>X‘T€B,rYÖ¡³Ipx*[cÄèÓ›‹"Åpk}Dù ‡”{‰’&õÃC¬ŠŽÃ[kl,¾‡Q(›Ÿ¬<€EåXS uJ-L0шec‰á‰øù0 'tñfjÞïPD|TjÅ@>âóé`60²HN·U"FqVÓy#ïoÚAf<¢/4Ô`jIRÕt6æB·ÅwNðp×È*^°É"ïÐ6|œÕ¢QhTb CU âà“WêWy„b#tNx¬q4óC©¤•PœŽw ÃGš¶å²!ý®¡±7x:úüÛ°hœb¤¸ˆû¨CĽ¨E›Ã¤Á;$QÝñk4šjòÊAÝL±x·:!‰K…[iÈ,áºésÈŒ1ŸÖó5à7ްQb‚@’N{1[׳Tëœ&C*“.ÞrÝ9Îè1M™­'A ŒŒ|ƒSÂB Kš®diW÷ŸS‡¸}Ô­zBÂåç4õü¡†– Æ‚êás|S]æ—±‘f÷ºìÞÇ›vd÷•ÒY£ò¶À†éñ qË‹ 5Æ •lÖUªmÞþ„#Þ±&í9Ú(‡ãŠÙ3ZÅ€÷%hT ö£¥N³,ñwÇabŠaÙõ‰~ÄÒßӯѫ4²”˜“ƒ—†]O>$Õ5 ýìô ¿‚®Ž’õ~Ö‰’¤ëTq‚Ä4б¬êØ£‡-,bf† %›zIÓ>m½Í(óé.Z$;b …™ÿX®2n ÷ˆ6XX.¤ ñ± SæÓbå|´©Vœî~Œ9•!»×sˆ¾ë ¬H«§æÜNœ,'ý®–‰Ìb“×xù„ãb¿L‰4ó2œ|ŽÐ=úù¦î©›ÊðIß`Rx[-}µ4ÄNBPJÖ–«]ëøÜ™lsc‰”´Qj,q«w¥×#yFi3\Ïä݆I–O:tõ÷ÂË>ÜPð8 aHæ”Ó;^^‰“"¨(#GÝÕn¢Ø N²|Êáý°’‚­0©FbS½^Í`°Ì#¨Â±â»<¦ú;MS•'ô8E%aE3Z.èÓÏXðÝbÝ}ª}’KÈîY@îV€˜e/¨~Wê c¢"²0’¸øÒ¨òÓñÎpúÇé`ªæ=ªãZÌH&-GÃ[ƒrpIPt¢\ǘ6ã&'ʧ›v 7NXS€/XòUã׳G;œOÖê‘xUô§*ú¾-–yÒƒ[‚¹0eÊÈE-0‰ÉÕéc|Nh]Ä輎â§çóýJŽ‘XÝÃzÑÈÝé|(®þñ”¤C¿µ0*?*ëéħ–wã°Š(â!â-aj‹ cßýáòí3_D¯Â|PÑ` ³è÷çÐâ0¨ã%Åuôgq(Œ*œT'1ÙI¶‡%5Lºðâ>`Ÿhi×rîç:èê¦Òà3-DZV@zF&Yz§6@Õ¤'¢(c¦v_ÿîS¡É¸Ï5íÑV¯…—ýaCÌz’>F,z•S)ˆBBxIß;§ŽsËçFÂ]̃†+áJ§¢_Û<Ÿ³mú×DfùP#$a·|Þá-þ€ôDd™Q%u£Âfî“f2Ðí­¥ø‚C¸Ü/o4ëðæÈ½X6Æn´qD—Ÿq"LÜͺ]ÃCëšî?lòA"Ò[,š"›&zsì¨ÄYhåõÉéd9´“~j‡d_'#3"T'Ì;DÝËYYªŒ¡âeSã.Љ¤#«˜iÕ( ÝZ¯n·ÝMÕ¹leËdÞ?qøh;Z¨c‚ ëRóI.2õ”^Ð u2ÞÄâyêk$yH×5åp ʼ«€6¹e›eg?0ª ЧO’D»W©‚e‹µ&¼Þ‘‹—/¢xÙÕ±<>ÎiTŒtã8žœÅ¸5 §wÈìIÖÞ™­€€M³hѦÊ!ó\ÉõÉE‰©njjO¢Œð`MXsšyB§H™B›èA™Rc¿è-¸^%ý%‡¸>ž¢Æ-'Ä aÏJËÛ¼œ>ê´³ãèBkÇN®…©ðÉOÒ^x¬y‰Ž(¦’þe%ýJË]Hƒ¨‘ ¶°¸ÅŠÊÊu¶å—…å/SÁo‡—ý}CŒ†£WK‡Gtòy<Û—³—ÅY7æ'² Z9ÎÚ=øtfºÞ3¨ëæ}þ²ã¡•{1à¥Ä–0½Ù,]°ì\ޱ„^æ{PQm˜wè*óý™âqªMcÐÀ°¤öö”&ÇÍÓ Î*¯Ô÷wÈy>œm¿â¸?&"r›±d8'9ˆ!#Šy@k ’(ÛL|7èHbZ ?¡e¢'tvŽn‚‚]*UEÙJ$Š).«Ç"oó°iôjàì>Rc2°~mƒW‹v N PwDÞ´CË£¦hJ£t¡up@ØQ‰kP ”–Edáž[NƒCŽs(á°[^ßÒ$F¤ e³Á·Ûn»E}B/U.*PLáT¹JþCR36v÷uZyÀ¤Qš.’ÃIû¡*Û¬0÷IŒsÕÁºo¶CË9ºE`MMs*qÍ#òô0zˆQ+¾bÇ{,R DOÓ¹ö’kiލ %÷SôCø|ãxεÍ@‚ƒ.²œ,WóÆÁ¯+Ö?Ï¡=[‘ý4‡–“JÇ)Ž=‘šyB»‡q{)Iú © ‹#/ -ØÍ…–ÖûzSÖ‹qH¯—fiB˜ƒ!ÕÓ¶… ÌkåV³Öú”Ž5D2é§: ê¢dÓu6Æ#{¼lÄ"ùzœÞQ’zÖæo¦ývv,ì,†àVwzaˆ)Ðp#ìt8HÙ·×b^ï]ÒÀƒ'¹¥ô‘çDGó¨°å$zŽtI,‰ÔF ï8‘9mfA¡L`B®$¿÷ê¼­°[WØh@Th\±Îšsúµš›L‹ú<äÊ 2M.jþEÍ•úµz|“NMe¢fLZ¥Am'ÔI2qì´×—“E46b{6 ¾’×ÖÍ{ É3t’üT‹Ž}Wí)ÔÔJ ™Ýk ›6V“*÷T~¢å™óFIˆ¯ÓŸK›o:lð_hÑQ8JóöwÅ€s2e jÖ]òÇwq¦+^¦>/Ùò&÷¾éðªßÙC0yQ5肪,@QRn±DÍ#¨’òzмÑ(øÎ¨aÌ s¯ù°˜ñ‘<6”U2û‡ëâð%-mA¹‰AIýT‘Õ[¥/@ ‡1…¹Ñ¡pIT1»•ë¨òOŽB(¿/» ÁÁe>˜®aűÛûºMÙ׫¶HTÑ8¼¨@‰Ÿ©Ð3›²;™÷m X! älºJ/ˆwv50@‡ÅÕõt)]ŒûYÔ…SZ¡k³9·\Ê]Á®tۤ˷Gôn™€å³~ÑÄÉ‚6mÝTGó²ÒÆÜw«ªƒßçvÜç·µÄØaêSƒýƒAÁþžòN\Ê‘‰…žP,~QÆ÷yû¶ÿ¥iGTߤ$H^zBÊc§8O„ Ø5¸åHÁ»@©tñ†É\XP+~F?¢Þ¢1ñžÔaɈh ¸íMò$êÇÀy÷_›vRíÁ–ØÏEÒ5¤“e ƒÅ’jæ¹#BJó«lP¶†ëŇ›ön¡·IÀËÇ0Å÷‰Ê9Ç^Û~?ÿ…þ¶xÌœÂpÌ<¡FËæÜwÈáR’5è?‚ ›–¬¶C?ŸÃ]¿±@öi«•šÌåfK³e'ƒßÇ4+bÎɰ÷eØiD9×ÑxEqMVWçÈ9.ZZ-{bÞ¹&ÜÄ0[†¸ÂaŠ˜,(¥’äÂîÎa˜ÕÍ4Ô*‡¹ôרå8 ßj‰N ž— âOƬ*µg€™_|Ó'ùYø-´ìФ7ÂßÞ­Š¬½Ÿâf9^|cœÏ‘Å*©p#É'yûz8’c-;)ñMš f©šçŒpà|NÏǤÈáQŠ—v>^·Øâãl¥J|tָ͒c:ºšqˉr–ege#ØÀº–E¬ŠÝÈÔ…2ˈ©Ž¢µîÁ‹ –ذŸž¯8±|óœ—ÄÆß˜'„yட$a¼•ŽÇ[²9BuîOÉ#¼®mÀ¶ú)9#눂 š×r¥AñªÄŽ;ô.éñ±MÃ)•†gïUüãC²>‹ÆDÞY÷(XL÷Yðq­#C¡KŒ¾J”š•# Y¼R'ëJ²üZKª2!œÁÚyÊ*»·Ïöz; –Ãv?£kÿ3ðŒQâ±*%¸¾†aIX|,Ø3&-µìŒçS›j],Øq%™JƒdGoy5ØEèDÝØÍÔ?׉¹¥–]cøL%²KŒH`¡ÛEØÛ€¤§!iS¹Ö%×8ÉÌ ‰äZóBsª,;÷-Š×JüDœ7†…I¸t„ú‰&³¾$–PNý,ôÙO¯S°œ4Nè?ɦښœ#aòq1&²·QŸÎoÇm<ì­åX–_oÉ9â¬X—lCÄÒ:Vën’ÅÆ‚²¯3Qêî- pQÁböÞ> “5̉F”³ z¯,Ölƒñ©£­­8¢™¨ÎÒí·ìR ÃÇD”„ûpIŸiÅÖ%@‚Óû››ÝM6äf“|ƒ_– ]pQ@Ø–übõ0ò3 gô€<#Ï­pçCuC–9Ò™%èì(¢E)"3<ÐÒMê´tä¸Ñ/д4éìD-³DXlÁ¤Ê…ý”Y·j¦SËZ:vè€÷¶ÔânRR-J3SV9lReon8—ùI Ë­>Ö[¶Þâû4ÖD#N³â…†5`Ly—ªC¾¼IËnÔ@ÖÊØ2–Fa©î¬`…ææ¶³¨—’!löB þÔ¹IË.À¹«)VÉɶ)Z ˜?òaáOì’á;!Ž%u\¢ßS„.“ÿXÅV` S‹æùÌïdQï:º¸°¼KáJ—“Fe)G1ÛXh­;ùÀ—’$bƒÐ–Àâìw¢NP§¢3‡^ü=Ïå#‡ÉVFìMž2(ú ¡Èµ†Pð¿ÁO=ïäÖ{(±á»ÞÙ”í·|â ÆÆØS3¦E/˜Nõ0Ê¥UoÁIÝ!m9 ï6ÕŠ-ZÆ@îc`jîšgœZMFFjo²-ƒLúŠS¯Ôųt7¯tqìõÒe´wó"Ub•*"â×ÒtQ– ûÈÒ0-ï×(PLá‚Û¯•ÉgÖòoë|ÚA´–¤›k2MåâíbG ‘QÀ4y¼TЮͼ6–l3DÍžÅæ¬§pb¹Ì¡Šþþö冋“Ð2ÒeÌj˜M(3ê˵ªìGKqlGä³îW°˜¦/TnÍHƒfÄÚaÜ®Tå$#mÙ÷€_V°®åÿŠ&*ªù>þå‰ûSŠÀã˜R¬LŽ ÷ýM°šmL 7iûòàÂQ­sO¦ ¤µÓê¶× ™G«ÝÛËÄf`ç’EUM"µ³•4Z$Q!­¸Zý^g„o;Øç£-º,R);ÇM$¸ÄxÌœñV‹LD•G‘—.\Ôàžmº{[¿V¥2œÙÞ½µ¿¸¶´´¶ ²mCÚÞøÑu–ã´Ôboår„ò\]M~©%V–±†Ó!©™“†¥ë-–qxù˜Y¸_‘às0¿0©®hÙi‰ße2/qXÝd„,Ãæx›·É D1­V³z­t…ƒU¾(s{t‘2úkà¡>¨%ùz‹¡>Ø’ª¼z U'˜qœ%@±œ–XΞ¾ ’8Ó‘Â0d¥gÖŽÑ!À+–Í0âUŽ£ú»Ýê&š%­²&eŒ<ÆI]¨s!Ó,à=|Wú\È«.䧤NÁËw1fÆøÆFö‘ok•s ·—韎û"ˆ<Ò{uËàôøä ú!©à­F8¡¿b‘^iΞÒ6ÆLAêkŒëbÎ×8Rk¿¯…P `w(kÜÕÅÈrZ½KÚõ¦VÍÆF?õjiÉmšå»#ÄÙ\Í Li«Z$¡Ï–ñΑ‚Ä”v/oZœpg1©Y­ê¨“²4¯×‡z}Y~«¯…ÿãG9ܤĎ~—´ÿt‚bmƺ§EŒ*Qsnòx÷4>ÎAžïSR&\è1|ò¦kt4ê\8…î<Ö‹õÌÍOõGuQÁbf_Õ” k´Ã%'vn»˜HÂ`Ø ;Ë+YwCðñ&rHb`¬å5\aã–mºy[‚yqoÞF(ê%l“¤+¬o^?w#WÌË„PúÏÔ%/^k>7œÖ@âdäI.ˆ¢1‹d`r•R,¼‘“×@æanióØfŸ! }…×9Q"šdtRAV…U%¦ˆK'–³ K»Ö®<¤ï€4,WèÂîÏeŠc’álL›—•Är–céÄ{—’µ„Ž«#Řè%‹q²˜ô£ÅþârCÉ™/–'˜ºñ:Ï-âãJÙ„P¬=Á"˜‚«#‹.XrØÏŽ»nF˜€ßÛ›¬mÓÅš‚ùeвhiFª¯_bëDYáC¢ß 6qÃMYo扭LoœöŠÞÃbøƒ–>;]ýÑ€n ÉÂ"Ü ÓU+ àgÞòãÝŽ8pœÐ«d„Š‘aãnj,ĨÝ9X|sù åxBOÑéòð·¯6´„,pËt<œ É¢³J}­¬\ïÍ®åŽûüøØRJÀeÄâJö7ÚXRr0½N$¥ÜñtUÓu1*‰E:³IR4sró÷ØÀ³º¨Â„íMҀ̉ –á—Èǹ܅¢…v«ŽåàoÆ\Xý8zVaÂÄ79%P" I;•ùà4Óê ? u‘×þ3tEé;®Cãz ¦› ‚§2$ìçÍÁ²ó¾Ï »Gbú¯/…L uŒà&cýðÛm¼P6ÑŒ\…CÑ»æä”+_­ùë(\¬pßè“-Y›Ê§Ã•x>²õiß…eGk(Wø%y»‰Í. ÂTAí–®‘0ìäþšŒ4è†Ý”œØ@Ùè:0û6ÓŒÖÂ$IØ«Sc‡ðý+%WAÊ•0ú<šÉò=^5«3qÇéYsnjc„¼~žÓ¤Å»ùt[ê½›·×Tc±cÂDrÐ&š9sYQ¢¾.ú(Þ]7 ÌݳUÑ£µC4scò,- '+'´ &/s“EZŽ©ÝjW?·¶½òLx‹®Œþ¯ÔÑtè “8CÁÆ3̲]ë ÀòÎ9äPv[viß¶´†² T4&«Å¬ ‰˜n«õæÊ'] EþÈy9ëà\È=S«É¬=à¯1Hÿ°CäH¬#ºn9R ˜ÖfÕj¨¥J¶Íáž°:6W©‡QßÀ°X{k.ªXn¡ š :´\>¯`Á;4†ÁŽ’ : Ë.ÿÇda…wd:rmFø¬GÚd£MÜiÞei&Š¢^¥ŽGüÑçÚ«„1ã¼VFxEÃÂpÂÔ4ñ:8f;hœmMSÇ1çó÷-uÞ.ñ¨‡8Ù‰ôqSޱɸÓd>fÄ{ÞÓ¤ -Ï’ }q†›‘ \>}£ZÚl®¼6.ô°¢¨hCËÛ—íó¥Ö4$×êÆåÃLÐÉB4ÆlåБ$ŽÙRœm{tš‘Q oõÁÞäsfÊ9Œw“ñ¿c¶>ÇAã÷n £ñb&šµÖ†"‰ò7-1[Šº"V“%Í‘€²Ë¡83ÒZ唺aŽ~ÔÛŸÿÇÉí:”-|r6olǵStU±6{“m{gh l1Y¦dpP‡]8¡pÇ"ßB4tŒÆÍ þ­ÑзW’ÆS\¥œ{°x¸ÕàÜ3.ûÿ%*–ÆÍ°.ËÎv|_8:Š14u¡çëõdO,FâÛÖOFÛúé:bôI) ÀAóÕlZ`ý͈ zÎùR&UHº' ˜—}º‡z“ÎÍÙ4ÎLÉ¢? ñhƒE³°#0kɺ<~kÅŸîS lFÁ››"9¯GXp~Ô$\ý€ÑKãe ~eœZçf‡Öù©¦±Á™ìÍ lh°:6óœp÷lŒUlo?¯ÖyŠCß'ób³ÈYL)NX¾I—ÝvÔï§A²A"ý,1cN>,œinÁɽ+ ²¾&t·^Ž["iƒ´A»yÄÄ÷¼S‡¹ÚyjË·ÿöRí`«No0$Mæml`=§©(­‹ ’ø™¶Y ¬îMi‹Ä·ý•LÚ{Á¤*N"{G,0¯f/¾GhðR¾€£LF𳲆âòÝÀv9d”ûY,Â_–*æbî銚ýí]2œáX<Ž¥‘ —ì â 7o;‚ƱÖlŒ—(@¨Œ¿I޲RdÇüƒGê;süÇ_¼Ôwôý9ò¯¯_‡yuÇò Är~M–¤gAöf’—²æ1sˆ1rcþ‹°ÏnÒCêþÛ$]hغÂuÄS\Í6` )ƒ*53"ù}d¹K…b¨þùPŽ:;½£³‡ö˜ °oXe¼Ž·gÂïû ÿ×ßîp}ߪ¸UÜ G/¯ òÌ<š„‹Ä ·:[b¶[º•Fâ·Ú¾‹Û[vj×Ð?^ß1c®œ·±x› 23ãã N™Pª”c ø¤mš#Ð+%_¨eÇëðŽˆ¯1Ä•…]ãˆpß9æö:Öš0Nï¯Êñ0¬“ŒSCŒ'÷b\Tp˜åLïÑc$£Ù33 -é#6 Ö¤<­ž¦ ƒDQ¼×ùáSÉj-ˆ@‚E/ìáá` Ë¥æfÙsfYgAŽ‚ÅÒª!éE¼BEçÙ£ÃïNíþóV¨<Çq›ßÑTö´ÒPc>ÊgEŽÞË:¯7…àëû˜‡=ža§› È‘ážb¸…3(‹ž–ÓËÏˤ ßbÆ@9™ÈDö#=#‹åOðÜúù–î_]SÒYºŸ,xætìõ>±”tƽÐ1ÒýüBÓIüqŠt¿Å6Òw´ìtÿ ¢€G_°^â¢ßïóM"±±G©åi1P¡õrÏŽ{gS›BöqƳñ` x Ô Ò#¨oòªë;[v;8nÿºEßnmúrA¹Ôù1Vyë<(ï‘aª—J,™ š,s/”¥Tí/Sž¾Å:!c{®¢xüþWä ±ø}Nªyp:ød@× ˜Ü²];mHAc)É—)h¶ Ÿç¹Ò¸UY˜ØV8@‹mß1]$Ú¢ WFËôïhâÞ§¾øœîø\Ê‹.R´y€"í¤d\#Ñ’!.^GN^_'­N3Ÿ³ÈóP1Ó…ŸËÒÂÆtá‚ú˜µ¥#†jd‹ûñÆ+Ž(æîÆ‚XEÕH:¹SldÑi Œ;$³ïØU–lÕaùNÄr£.ã–¥Á géLi“~Á&#'4›âæê±î‰•U†åFæ Ÿ0±<ß‘T¹zÁ*˜ÌKºq`È'#r²œegän]MM¦]#jÑ5ÏwH”4EÏn9fáŠ_êPö$ù%ìË.þ,ñøzÊl²H™ÿ1@ñí¶±Ô‡Pjç´|by¦Îº1Ñçúæ3tó‘X«+¸å€Š¶í¶žãÁaö},ÄôšäØc«Þ¼^žïê}A«aÍ™¾lAöBò9Ó¤ô¡ÈIíéêet9ÇèÄgŠ8 éam°AObRQÚë+ññãý¾i샅Àô)ÝAaÙAU ¥h•åŒKÿÓdu«·Cþ»û›K¼uæN³yžÃËM%ž¡ƒ¶ƒ $’©eÙÁµó „ߦ“¥£å<)pŘ5öƒÌ];·g`1ç]KJƒÒn71¹FDïU $µ=¤÷6Ô\?nbêÉ.Íc; w/3Ð1Ûp áözÔî´—¹øå+­{ƾïv8¿Ú”û˜yÞ g M°^‘9çv;²žt)s=Üd`ø’ß%ór¿ÐÁ¼ý¹‚­@Àñ‘%ƦXAžÉ»1w˜W­1 È t#­uÙ^èˆ4¬,h“lrRÀY¹GÃá`>ë±1ŸŠûèÕ‘/rÐ%Z»¤øò¾!èìÁATGš7锓UÈ“$[½E”| ‹µÕü¢‚ÅÌG}´©­5ÄuÙ ˜àFMqká‹íÁV²€åÉÅlkl‡“Ý­“'9÷z¥¼¨egÙQÚS˜P¸N¤ô@™'aû$ÞÙTüŒ¾Ç‘{HìDj ‡ûãš]S5Ù…´,¥'Y$Q˜»óñ.'Ë÷:ÈrÙ‚:á¹Do» ¦d=…bPå‘ô xY÷{dÁ]ÞOP#{o·¥X0qœ$ÉR Ò¶+&«!×®D29fékúÏ-{do² ·­Ré2*ÐIc±ý|\s53ùC–®m‰+ï¶ì;"S– o¦Ž°m #B̆1G)Ñ=ÅTÑrºˆ2†+Fo¿Å‹¬’.ëæÉ2ᇠ„Å”sä¿qÚ£ ,sáu sfãû›Új8íÀ‹%&0óò‘!r0¯e5ð„Ý]Ž„Ý]JòŒÎ1¿ŒÌ;ª<~«›2ä“û­Gê;Ÿªû­5ï¤Ót.õmÎé(” Üà3.0qJ'ŒÄ}ºÜ+Ɖ•Ô¨ŒÙG\K™—8(óMY—H1‡¤i7GÄ[« ƒË\Ô®Kg ž¯ZÅÆòí_¥—K\4?&å<#–”Ç)EŸ·¯Û¢ Ïû¿´e÷´¡5ɇ7œ'þ–öb¥Ûý`Ð\H4sÛË.\Æ~¿Ã•ÿtS¦8ÝïM$Á~(JwGVC~‹lWÞ åZv-à)MbÄG؅Ϻ’ŒÃq­¡±øAÕuáÿ€Ãü|S[èÜî#0tû\o¦¼Ìq‡>¡Äo‰Äb8ø$CzYXÛ8"‘Wtp ,Þ.†—;’ó¸¾ûF홫ºMª‚ÅvÂ, %½Š£ÛP¼gô Ç}>®Ð£ýÃÑ”ºªc6_Ú Êöa{óx²â6¢„)«Ь(ŸlátùaÇ5ú”’D#å#D´T8®†A1‘ħdfÕs@þÌ·ß^Ù²+ž1ó ä‘1§JÀÆP¶•N;žˆu»I”†8ÌW½àkR½GAb2ËÇ›êøo2d g€*0ãr””¬ÇíP‰ƒ2uÐ+²ÿ#:³ŒÈº܃³§(–ƒÝÀÀ²ØQ·˜ñ^C‡&RÖ:Êb–Ï4Íò‰ ©=ƒ#*Øäz›.Ǻ]2´Á9:b>]8³¼ ™eOÇò íˆpK7ÚûhG1cßäÚíSI|\VqÌ•,ÞiOÿUPEN{ºF)ÀâÓžª‚, ±Kâ•&Q:ÁiþJ=ù«×̓›V»èæGPÂ(æîÃìáæ.-XÄÍbx£±È„Í—6ÈSë¬&”>§võ-Ì×8â,; Úàm<ÅÈŠ6Ö„"‚§¡|µþ¤‚0^ÇìÀá˜]«ÇÂèIJ;”†“¡JÍxÆÚðÓÂ6Êu ²jŸÆs4`Ê1Ûêâ%‹ÿ‰8 |ür¨7½«m ™G[ddðxÀv0{X'…R“‰QeÞ²W;Îh¼ wR°Qe8ìz<"‰VZ£¥“¥SSŒD†×0(©Ï%¹Û‘õEûcÌéE`ŠÓ$Š!ëOÕÉÒ;ÄÀSŒê€ÍáêÄX™…ÅYòv×µJ9¢Ê˜¼êi&Ì„Œ¯¯@UVÜ‹5ÁœÙKæxÎÉÐ×ùGGŽ[}å‚h®ã+ç1Âu@>gÃÂ2ÿˆ"‹·$é¢â“ðcB óᆚ ‰ƒÿ*–˜×˜e{ïôxo¨ýÄ: ’$ o"#Á=Ôt7µÔJ¸%úŒ2(ÒÚMm’d§¦+íTJ8zt¥àÓJüý¨Ã„A÷èrcrØÝÕ§rÑž“(û¡PŒÎ üŸêìº×¶ìqrŸƒÇÈ)e¤hDÁ•S!Ôi·¥Q{‹c·6·çÆšØÍMÅØ}’¯e÷>QNK§w@`$xvÊC„MÚËœ=±Ùc5K7mmP§‰^çð/— +>U£ÌI±@Áfn›D™"ìP¼ C^ïpþ¢©Õ-£!EÀÉ1B&QzmƒòêF_ÅÏý s¤ó×¥Sï]2le@úØ(×®“e—è¬L«I³zïþ~y¾ o‰xÀÊqf ˆ_h0j·½F÷ $¬ÐFqf;yÌj:‘‡F(Ñ:Ó².røÁ5RþŸ“å ¢8 è~cN¶{‘È¡Å3ž»´Â£›‰4¬{4á5ºfœšßä‡D÷Æ–¸.8+춰̵§*a6L(\ò¾ÑáQã¿§ªòÎÜÖgð &ò޵2ePÑI†ÿXǹ?á}E zOè´í1YwÓ—>G7ët½< ±ôl€ó ÀdÕ ªìÌ_¡céúX±Ð¥Ô’.¸¨úz­ß±”ÚF†ý0ŒÒk¿ÞƒŸÑº÷Ô¿S‘Sæ§FÝ­ Úža#«@Ê”œðO|ýŒçø$)3¨D©€×À|“#Øð/J$Ó³ÄÖ$KÐ>†kb1=sŒ¯ ¼I¤$–¯5µáÒ$Ã7¸Ü·bÓíl,ŽŽLóñv,æôä[•ú{¾Ä–ÌóŸâv"˜:ÞÍê÷»¼Ùq­¿jʰ®o‚» óšPÐvèÆ¢F×µ­[$¢¯öaÁõöÑst,©glˆ“ä<1hϓʹÁn¼¿LÄÊœ|qH±ÏäE,ýó:–o4éb"‘ Ÿ†j4cÑIÚæ)=Æ6rsG¬#ñ¶ãÿŒvÉ_+¹#†d„ãÒ°óš•EÙX"’2B£2u r˜ËºËÏ:ÄË·/¨#ýÉÚ÷i à^ž¢×x%pµäs½„Z—bxKîù5úïxžk+^­KÃ/p…°á'Ð2ÉIJ7ï‡dMžâ„ù9až.cA¢\7/eàrÙŠýˆ.¨½FóÍ™‡åæÙ®Gƒ¼ ª§8 q ¸‹ïñº¨`1÷䡬ûmíàtJ²&)±v£ ˜Ú‘Å¿àuß„ÇéíC· &Ì”u_ìg¶zÍÔðÞN{¡”/AÁ³°¿("’0·,h“E‹&í§&î ƒ$Ø}L÷Ò¡Ümsw®Î&ZãY{qsEDoðÐ/:Nèκ°[Ú/¸â ™˜³Á¤i_Lê‹1O(ŠÂȆGâɉ–‰ÇŽt²…m<˜çÑ„?]¿$é%,ßy‹ƒipêõ*ÓØë[-D²>*t•H©Lã­ò~KËŽ8ï-ˆµt0ã˜$&%z&–K¿L^,¿ì°î¾¤DVÅÂ<\×1„¯ )7iO3b’ÌÓ[ã :\T°ÄÆÀʯ7•~¹œ¨H2ð©Bßš¯šfÕ5Ô?”` aÐì½VŸž9as NÔbñZ2u-Êou¸øÿÔ{ èèú ç§MKz,#k]¦}®‡VÌt_jBña$”7hÂ÷JuF;†3éæ›jà"^xÌG”Ú¥ os\énÊuyÄæÅÄZNœ)ïg1HVX„Ž\¬Þ¥l…î^£`1wÔ=,uŸñ3"‹ç'•}Ýb²jщâ]£òö–\ÄÌC0_nÒµDʪ÷é«Ñávx8gU¡`†$ÝÌVVh‚-ŽIéíÐ@bÕ£òãy‡ãx-ÙK™Ÿ/ɤxô؆¥Øl倭îN¼Ãä2äû¢‚ŬôÀª7ieÝö²T 1Ò^7Ùr<'OâG*z§Cü¿Äÿ5”È!`™à8l©dµÔºf´Åÿ†E—ÚåºïtH¼Î–|‹AÕ)øÒ%(üPÒl=õÞŸÌ9羫e×/ŸWÚèÚ²â7Q7åi,í|hÞr[I~‰ßúæˆw98÷DK84OG4Å=œCÅôaÁM)k¾»¬PÅÛ‘ü.‡JÎõ,nuaYËŽumA]½©añîøã~ç‚è!{K0šŠ¡fvF&³Èi;–jNñ/ +ãÌÁrÆ}·ƒqqáz¥¦Õ¬åê&Uöö£°—˜0ø¦H#‹w‰ì»Qoô¦«¡F½'¤# GóŽG4êm9œÇ(¬FÇ[Î`F2Ì·djÛ-Øj„3·Ùºl›0˜ á‹§|Ë—æüòköÛdjšï³V ‰ªñl̼iƒ[Žjã»Jg¿Wè,wÚwZÛ"Ž;wà>ƒ˜–Žgzg*l*Ž%ñaùuÇÆMô“‡µìgŽ9{,e]#&·û]þÖ5 G¦H@Ÿ|áR÷½ŠË™÷û˜ßÈì…’¬]+ /ô6hw”דOCE§ U¼žÈ{Òå{”ä¡JIÖ ǸïoQ1ÀXܲ,q°«Î±ÜXå6Í^x¼š%q,z¯Åâxkøý –Øp¦_º`öá¢:šEg´®Í>¥C9 C;-ý¬æÝ&Î5ïkÙ•Í5Øp œ,\(Ð'áûnLÕÞyÅ©Ën¿íTí™O;UÛœºd7?U»«V«]î?T«%/º¹}IíEµ+Øg¯®×jŸï7î<=/§gò|6œ•£Y^”ù,/'ymÿOûA÷l݃­¸}¶½u¶•-~šÛL4w+h"‚æ¾ÚqöÙËÍG4ÓY5«Æh4› ‡µ=–8ˆƒIà éfÒ{ý»¤§ mÁgÓGy U£3£|6š•ƒñ¬LfÃñ˜ÇBDɳ¦þ8És‹Ë_ ,÷ ,-øì1 K~fœš“j6Ìdz|H±XÄiekkG(xÂ,]e?fid`¹Ñ‡åýº— ºTÈ©²n ÕpJéb°©MèÒ )ŽfaŠ7°ìšXÎ+XB&6ËK@lþ”Š ò¨2+ËY ’3©&s h¢|K5(OñIð²p .á³(Y˜gãÉl2  ˆñ~°{6Ø?¾u,ÞÚö·¶¶‚$Iㄾ9¡0Ö²üÔâғ͇t½þƒð¿Rs”`vÄQdfe>œåù¸¤ô1ȃô –—³, Ö%ŒƒÆÀÜä›)'œƒ9Vý-;áùðL9^MŠÙ˜–”Wy6:ÕNaù°À"u߀å“Ll†gFÕl2+†ƒÙ˜6žR6ÉbËõ„^&½†½÷A<:“®‚Ï `ÒÉñ™jïŸMËÙ¨„³T”L"Ó¢ÿrB‡¾\‚mYgé ‰¡‚/Q>¯©à8wAYÁ—qÁ”°)ÀÝ}=$¬8N’µÄGΩ8ß>;¥*>ÝÑl\N@ñL ëŒÅ—€ji&AjIÍ<W°„†âË೫–á™IôNAß f#&46”~¿¿ÞOûìIåòùNÈ’*÷èà1ˆM1.gÕT5ô`4Ó¸‹ÔèâÉI.ž,ó°äðÙ)–"ŸœÁ{r ×RUÀÍPxYïÓúÖµl<Ô*ë`_P°Ä†’Ùþ•á¢ÈÏà}0Â+’|Žý`œÇÙ&ŒeÓp ëÌ‹jW²Ï~ Àü™Ôx(™YQå³ ª8OÛ¨ft(Án;kã_ðià.þUðz¼Þl.¯_ÊÐ<Þ§g>éÐ3%» PÏLÇxŽàÂN@ÔÔ L ­fš¶Ó•$ÌåžNSYÐ~¸€¬˜Çè“âIåûë@–ʤm*8CÕ¬˜R(M‡\lJ²ˆ~K½¢{APÐêüc…C#Tyxžp{Æ0ý~ÄN3þö;ý4eŸôú­0\gÚ’Ý;Ù‹?ÿÃ=ƒA×Âg9»­Ïà%0+@Ó Á°Sdè]¼ R @BŽç‹ÛÚ´,< É3tEw>J¥ çÄ¥€;i”˜Qoµc!‘$ÍäÒæRÖ¼~K¨ábº4!—SH¤‡! I\Hjªnù”ã¢þ9`Ðû„¬€Ê…34ÿd2˜Uƒ©‡*¶ŠUŸKkÙà\n?í°5_ X>¡ccªBqÑ«Z—”¯faú%Mñ0)êPhªÜO;Lðd±¥ÐÖÕx0›2a‘XN©%·b/éeK‰Tµº§"°<ŽaYc,º„“å3H–S:‹~^’%?“ÀV˜M@^ÎtZQ FeP¼¿¹%ÿ~ò= Óð0|I[p%4Z-¸ÂÊK‹P W¸)ÚŸ+ÜW”wi TKÖؘU‘…kæ 8>GÜz`hnõÝ‹ç`ÒåðÙeªŸgî¡r j·dWQ[Ü }¶µ”-­dÑy/žíH¿†&,‡KÓ”ÝÏ:L—Å9&M@¹Œþ” ŤÊÖfÆýn»M—(–‹ü‰A)}÷Ðçà¸c0é<0éýðÜC¨åÀ”+ËüGŸcEÚ]ËHQŸ "Dœ?#>çàÞÇ„97ÂóœÃ%4„C=P‡ÄÓê53‡¹íâ……óçóÈŸêºÿJølSÑýpG³쨪 ‡HaO€ìÙÚnd‡; cñÁûÏ…ŠAÉØ!Êø!:P ˜d9 Ÿ=Iê¸&à£å¨þ™Ø¢²µÝìA¿géÚØ6s‡ ‹%¶_p¨Ü7HsÈ2EUØNp p—Ñ”–íùÌ!žÓ"}Ñq‚n4OØ–pzÐÍ/èE´oåôÞF£ß†ßø¯Ï-"ø·‘2=•*EÍi‚ûEÇ¥ˆ'è/ÙED®g–n¡ñp6Í©e2èôÞ"ªÌ! · ¾ä° ^Xî—*wXÊÀÅf.H/» ,{iš$ ˜•è$½~ Ÿ£œ¶{!Q Ì)߉~ s•~ŠNH¯H€ƒnb3O˜7ͤe'€‹qk÷`o¹½Þ;¯¥ìé¦é‘†¯ÍÃi¸v¤ XΖ«˜å²iZ.;ŽÑÕRûç“É8Èp„ðXOQ¥Ž…J.`áþjj\¬#í½‰¾ì˜;å½ÈÃù˜EZt‹E ×²-ï`ïýÞ+]n‡Ïvd¸üUt¢GÌ 1²¿ßBc¥ëxwhÁ¸Îgâ~ÍalßÊŽ3ó†@¿‘hsfÔÔƒ$ÉVɆP#~‚Xqø‰)(C%ª§¹@,ƒ®!ø>y°„Y~ͽˆE8þQ(¹{5%W©&Ë™“OàM©Y© I›™~AϹ†r”o8¼Ä7H%‡QŒxçà«‚Y90ÇL§Ip:ÿå|·å2ƒC¥4Š|zæÉ§ÊAúmŒ&8Ñp_ó‘sPc+„jA²Œ(.4ßtSßÔù¨ô¡1wS ÀObtžhJ0ÿ H“UéŒ |G雊«É(s$ì¨1¦¨0&6™M†Em“ø‹–#ì­«‹u5»˜Tùߎ£t>¨:p¡1¬€—þèÒ»ª$”M)fFDn$1±¾‹±Ä† f¢¹hÀ@4™³ÃäÃNS’®g®Ç§c¸ÍýÏûyšæ&=Æ –%0Ó N7Ïéì!Únãuù4eø¬k@n×LŸ•j`†=´Á í,uÓ0B†ºOŠm$€¬™@¸zù–ÐÿÒ ù%¦^•Ë/" Ìˆú‰&kö/"×( äÌ7«L©ý?©Ág—«J—(þÙ,ïIIõŠI8ËiÊnÀ”¤ÑäXú ˈ[-T,·Pþp² ñÿXÅøŸ mY‚¢ý;ÂXX0’+ÂpºþA)fB©—š?E0É3uay2|vB3çà³éï$s±HÓ[ZYn§½´×KãÃÝ0èŘraœvŽÄiÜK»1'Mhꀦäh¸Äü_¼nÑÙtƒ¼§ñ@™™‚êÇL5óE,‰Ù·«Âz|„á÷_PxŸ¢CÁˆ{¬ú"p€¦À¤.3 m;aGûG…oGÉÏý£ ÉSL$\vÿåeW¿¥ŽÑ_×Dðã 9F:À…-ÆÔq5‰rŽÆçÚsƒt Ë®‰å‚‚%¾M¿°üUM-hÀË$YIJÁ6…='ƒB΢ÛL0÷° sÙÍíºæ—Ì;¥N+j4£À' ³ ÿÍüŸ„?£vvŽÏ³cØùJùyºÌÄôzöþGPl®CLºuwµfó‚C2Ž0XWk1DŸ«¡£P¨ÛÞßÚî¦óÃ0R¯3ý‚‚(èTú/@¥·×Ôœ0ÜØ`ø8áù"PŒ"©q¼R’¯g²u¨u5ݪ“éEô´zº °"F³)ÆíÀÕ¯1Lß„?&纭L¿´]Ay†éÖ¹˜nBLòœý¡„¢‹Ù–¼.¤?¦…Þ”âtÓ\LSž·?W0 ‡d”€h“G‡I/»V«u.H±hŽå R(ja:5Ó4õ×#åJMª"U‰¯xõŠðÍfz­ÎËÛd±Ý»á³¿©‰²‚]ÿa‰õζ²áxE%á$uGÍÚy O-q$/e>CÂÝlTÊS %P¡p/Ks˜g¹(3žËçDY¯Ë(§*Àâ2C±Y°êb:dUΚìñ^³©IH‚‘=ü¹Kí¦Dâ ,"’ø…:’÷ÖÍêo¬âšÒœñtàCزÒx´ÁZ´°—ôàRO;J‰ƒ“Cu»¬à/᳇²À)ÊFNª¹X.ß–VsáAâõÍ'Ìj ±åPÞY§A Qý îü¬ÀT+ã2ÏЦûå¦E½A]f”¸Ô¾EæÛXäî0±–k\Q¹5±lyxzŒÕzs†rqýò |öåšZŠWÒ-›«g‰‚±Ñ´]¼IyLš} CÑäÍÓu;LÿƒðÎR7“K S V*ê`V²ç¦ÃtÝœä¨EŸó ³å‡áe#µäz‚­ :ƒÙØ ¥!”u~°3‘Ê6¡X)c®bÚu;‘þýð²kDÄ…Ô[“† ¡!WãLï·[Qkn…ƒ‚ĪŸ=¯ Ÿ¥å¥ ƒÎ çÌ,¹«¦c%4(Ë«`EeMbÌPK؂Š\ÃL׬¡j×í‚‹÷I#KÿŠÙKÀ˱‡,ó‘ EÃøÉb(»ê²lu„BE°€ƒ0™ø8¤Ÿ þ#Š6oa•Ž·…ËJGÈÊ‹4¯îüŽ&%è`L¨v'TÛq¡ù‘Þ3•ÜRJ:Çħ]íbDµ»d^Œ]’·Âgï‘H@íÂ04‰I’ØÌž'xQ/):MÖ}õ0üèÕí²üW’=ZôŠOA颲£©?Sɵ²”´o\Äññ¶qôú ï\õ$‡¤­o<Åê²Ò‡…h‘” ˆªß(Äxa¯XäÀòÃ2‘Ÿç k±íuÔ+@+r¾ @1;ùîg7´LtŒI愨‹¬˜ãЧÆ#dÑ>w× °”W ™²r6f/ïhGY©2K%o÷ÿqUöeøS$…5S° Øudi±ÀòFœÑÉ+)I-šsÜ!-Ÿ=À¤…eÖ ´†Øz9ò`ùwH.W-×8ïWá³/ŠóL¢©`7`WG!½FMV¶˜[o†}RzAe½^GÜÒ^²\ãpKÒ¢.ä:Â"2P·³ñd:Ë\Ê,Š\>Ö!./±ËEó1üÁ”ÄtĺuÑma-TÐ#%QVUT(jjæöÝ\ë¼<ÄRjpˆF9V±å%éƒÃÆÇV@b‡°5?XÔÕq­ Ê½ÂþþY%%LíïN6b<ŠÏëѱÄ[q’$QœçˆÉjd€IUHÞs}­ChþA‘_V•†d,Í”÷/\y2Ó¦aX¶}géZÇ5!Ì¿`>Ó¼ri<+‡ùÅCOHŸOñr(×9œ¶}=2E[éÆ8è©|ˆ‘zö÷÷˜]™%‘-t ·“î:‡¶ûX]ÔóÀû;’pn33]X\À„i­EÇúz–÷Ôeñ,«SÅÑ8ST3S^oÈïEØ %÷„r˜TPPÀCìëæ•t²œmaóñXÅð—žø¢óÈêG²±ÈSôźîİŒ1 SäXï1ö`™O‹É£C<`76ƒÎ£·IuW¢†Á–rÌv¦~qQÃÌþ>]N”‰òÝ:O(î4ð¤G`vO+6ÀTu­Ë”'ËàËåÂ勉¢cy¾Žåß೯×ô\0V1à]]N=X4¥O¨Ð%J´ü«3ü>TtË1öÙð²ëôæ5Ì€ ;ÐÞ5IœÆñ&™7Q/ˆ’*@K9‘CR¾Ÿ}JJJ1ƒz2Á±E¼UG±oHŠYi®1#SdÏ+@Âkum{/¼lÆ«&i°nŒBî‹ÖÙPRläë‘wÓá~¡ÕLÁ ¬+Pê¥ÍeâÐp:4Ü5 Ö±.GJ{‘ÕókÛC,,²öïì!­·œ sª*2qk8(‰`a9hjbâÁxÚ?—¸°Lë|††,vyHM_•XJ1Ðê¦&ªf ö‚ãj­‹f° ,äož.Ýú ÓƒþJ]THqaÁòµ±œüeBQø“¸~L$I,$\VfÈŸgÚççã555«¹Â¹Ìø·Ø³—zž~õÒ†¥cœå„cy|Ö׫Gè¿Ê#DkØ*ÒÑ2)†³ ½Ÿ48´’”"ŸB9Ïbé()#¤Ëá Zx#±¼Iéf¡·!V»ÌFöÿ³‰%.Û Ww[c¦–8ažˆ„ù>ÝL¸GæõhE6­4ÄŠl,Ã$!Ê)î#îY’,0åË ï.|f¦Ÿ¡ÏÂgﮩ/8C©Âör0s'ä òr.л@SÒÀLÏPL+ÙâXLã ‘Y改)sƒ.¾_’†%µqéÄ•q‰ÝYlR§A˜¸•²ŠØ,#“‚h œzRè‘uBy´Í£Äo€mÅGã”ù<£ +s¦q÷!8ôcF‹*[D:ù]WqíÔù$2 åoêt„ƒ2$Åͺ°cÚ¦kÒ$ìWÛx{·˜â‹éŒ…º y9ïuiÂ71(otÅϳ÷>°dDï>‡`y„=µš,ð”DNj°ÌzF&iø@š½Žbò½ÖxÜëµz­¸S<›ŽÃ$<€[„á-ió[‡´¹˜Õl:ÁÉu³)ë´ßÖè²ßZKîÒí94îÂfÇK˜ØM}©™¾­n=~£®÷/ã € °Èn^Ññ»:öƒƒcÇüêE° ‡ s÷È› ¸Ý!8¿,“bü.V#¯X q ³)ˆ÷¬zn/}F·ÃÀ.(XÌiÖ¿¢TbQöT—ØW‚wdÛ`z<)®7nØ`¼“C%ýDšY…3•p°örM|`dù‚ovÏ¢i0ßåP†¼šH Ž3ªf%¨šQÁ[t(g7Íà?>%š™z¯ÉÚ9öÞ§¡kRêX¾Y§³¦Èqªˆž}¨Ê»|ÿàrßG„øn&5L­¡ˆv“Z-Y Ã$i·£(êµÛIDmð³Œ&uW»ÄÓ<*ï„Ñ… Âùq, k¥MfËù+”ü³`8–g9°¼Uf±xC–”8O<#¬1çØ±ö^ÚÇätŸ\FiþÆ\û™~-Y'ú.K|ƒ^ç½ÒÐ:ëÈŒLÌJThm²Œ@ ÌÁòòòÒÊÊJóðòÊ2šËG–Ãwøsøðò‘Ãï„´ñ ü³Aøß±‚ðZUXÓ6Ð:oCÛmßïv“$HæðÈd–Wå}/B2:¢7 ÆBÒöïlÌF+™Ô øxÈÌ”ôúIHLŠ„3+œ‹ÅPy†5@ÚÌ’“#&86–0Šâ˜öq±ÊîR°˜Fç[‰‘iJߘVS$òm °Û-q¢ñ–žwL 6à>l'a†Ùáp%iN–‚äðÀøóóê+I¯Þ…‹|%©/7%¢E£>-tãYf‘Ö&»·G¼vÛeÞòÝ™º]©ûf¥”šNÇ“2Àæ¸)›Î©‰[Üîë‘Ì|Õ¸<ßa¥jˆ€ -‹’ô<æ«àòᕚlºsgzzÓk¥póíó þ+4ÅZ ÿ‘‘E^+ Ó%n‘€ ÑdiHËÕš)md cÒ’+Â…7øóBGÂ*Âü³r%PµÂ•3ÀÕÌktºì[¥º1‹.ã¤Á”x$É"»ö…"\(±¬6du–ðqÙÝÖ9`„ê>Ês'mP­»æãÒë0ám ·‚†žÉ#c%€4˜àQãÀ„²spÚ¤ŒÃsÅ;¾È‹ƒUòBþ‹CÊH ï®0í:ÊyôNVi"8øVÇ´(-þ¢º]íÒlˆÙø|ö4ã%Èep×Ïcr1 ?NWÏ…òýh_Ù } ÊàEôˆ@Ë”“‘ŠüÇSu“tÈÆn'颿švšŸÌhPŒžíDÚ·BËTÕ9–   I©F»1/Mã‰Á"ay±CXþèè’æfJ–ä ê‡tYÙÙÙöŒ4 É$àÃh/iÉ€P>¥?4ž^âHÔ Uû‰šèAƒiŒKܤCë? ¢X Oö©vdìcÐKêv5®ñ:%“#Ž•](ê\Á”ÅÚõgQXìväýzž†øˆ$ € z#Yêe;î&,±h¢«)·¢eð‡Âò‡ð²«d‘­‹OÇW±q¡UÎleR–‹$‰Üu¤1iQ‰îËêöpÌÕ†’(ÉaÆ1ç8¢â¢¤;?§j6úz‹^æ ËÛ”˜.!˘Ìó.Pz…Ñ`€i­ÀËVZ˜M=¦^Zj™V*º,ˆß/w pƒÌ®6{ÉÞcÜE[;¨r“ ÏêƒÉ Eú‹Î^$?ø¬©»0æ†ûŠÇÂD K»‹~a˜DKÝn7[™¥[Ôsô£u»e#mÈih;dD®°©DyŸ)7szŽèˆøl=]WžÓ/û1‡_† ™vŒ|½¹|É&O¯6Áû-Mø…UÌÛ•cAkùÒ=É­w9Š ‘2d>å˜:l4AÒj5,gÅä5|4]Oöaz…B¡ãÊÑÚ4$[Õ°x«Ð H“[;ûAØë5{@+/ìö_½Á—W8Lák¢qšVŽg85s¶9oo± íyð"Àл$_™¯TW*ô¹BÖ{ƒâÁ‹Îû&ÙlvEQ["V[ÂJßS?îðœÛ µA¢HiBú•1ãW2ÁâÓ‚ë;UjϭËÙôƒ¦¯³àõ Îc0ãïŒ*.ÞÛO ažgƒÑÊOpAø*XS²1S~ͤlÊ™dAo‰4õ:+\\~ªn÷eágÓU±€kLŠ11s>b£<¤°ì’³´R[^3c€¨‚m½unëqÕ÷*EÙˆê Cú×$óP[© Ä#[T2‹;…£Ø–çŸKá%ëÞ*Ì…³aÉ*‰u¥ç˜ä¯"¡ÁM~¤½ñÔW;Ò5 ul>?Æi8>ìò‚M¨Úà¶0ÎV€~+Y+n>OúI>yyµÃ"¿^IÚ;xB2Ä Ã,;<—*1éY ÌIѶ“Óóùüw)HCrïWJÛ¼› }h$gÌ:øÌïÖÞmñH:ý'rROƒâ :œG6¡m±–xÇ9úEù¿'-Ù…dÝJœU?S—µ™b*:@újM)ˆ)p© ¥#Ñ£t.PßMëÐ31A’F¾Ó…;©Îa㎼‘ºáÀÞ‡ga‘5ß1_1ìc”—*ûÞª|As)Áoª°_kÈñ–AmÞ V3u£…[?÷ѼÈ"^ïÖO˜„õtæc}òËYtÖáT¾^–¨ † RS1GΔÝýø†)Ÿˆ–Ù¶Ì¢™w8ÄåÃ2eîÛsl’ge‚ ž,µÏˆ¹KÁ’Õ7 ,w(1q^–_àœÉ:*Æ>4ÎGêbZ+ä ‹¿REC’¯¹x4˜Ï7k‹Ì p“ûG‰Ú+z‰öÍÆ™SMCš ŽÇ®@CþãÙ“Dø+Ztx^ãðjq«×¥YÖ/R+ÛaØyEÜÝ¥>í9IF.°w:öËJ¦Ü³©Ê8:íý½^/YIDÎÞ´E`½“yp¥ZÇ0£>Ç2{žE…6—"œõ2o¾I¦¾8‰rÞA”/#‚|ûÞ,0­ LC*ÿRM¥¤‰åÀ¡Ý>¤'N\[ÜMþìïu£.S÷‹èbI.ßpAØ-Ò©~ðXœâ_X¾cré乃d §åÌÆÛq‚â«Y—Ìãt—#ò„†\‡JGaçXQ6¢§Ï\X“@ç6uƸï RÈ{­#Öúi=󬬵¨³×úér¿Ûï§)om§‰ÙêSÿ ®„¥kb¥Æ äYkbw‚nW%ÊñíVÖiD­lmžiZ±´±FØv˜v)þ&„ƒ]cŠÒëêv«Í“Õ$yE›²¦`·Ly“°)0‹}éÔ»ÜÞ"Ý×[d/ºŒ,}Á¾c^Pü(€0Ù‰úÑw;Â.ßÝ“û&¼ìzuZ„¾vÇEçè À')í¿LÝß%ÀÏѯ;,o¬EéèƒL Ðÿ8š’5Й4‰[˜0j#—Bo¤aQ¡Ðnw å’º@4·É¹±`¾¦ÍÍŒE›EÕøo!!y¦o3JPpöÛ`/u1`)a“C .¶i’Ù¡ôóöœæXÎ$\ìe®Õ©KÊ8–}QÉÕé‚÷t̃ujw¬Ê°E‘ ß¨óŠôû´P+¥÷4–fÒ=Ý,AbEì WRŸJÉGŠŠ®sSýž`Ãêu4"©òሠì§òbPű/2Õˆ’¦þÀÀü–#ôbvM³VNŠËF ÁCžLÓq,œÒŸÊ{Ñ[wýÛŽ¨Ç÷ëmY¸Û@Œ;Âô6ø³³µ§VÂ/œ6ÛTZã¥l=YÂl»õVjšƒù˜²™ZÈUèürÈ,ƒ0ñ¢áÑJÆ[ô»Â¸W»Ž+‡®Ã&]ε:q'VLO=LËê)ò.»ø]Et¹þÿá†ÐFõI&¢a3&=7]X䉸¡Æ?]”Ùh-’1ÌÓ>ªüžÃ¦CyQ/£M‡éú ®bÝ&ƒv¶é¿ß¾¥SvC¥ ÷¬¡Ú–¦Žåæ†'îh,˜"…†å8b9yRb!Œ@÷>É: ¼XzC+À ±‚TÌѨ±¶Ï+v=C¿ïpŽ^, ÈDcG…öîKè¡69ÔÝ£ë3±50ÁeŠ ß"ÇaÌ»Nú´Ë8â»?`>SS¶LL‡$–™³mÀ8X4€%œ*Þi”„îÓÍËë4ÿU[ìÆ¡µH`¶8;.^Óòæº]\ül–Ã+JÞGÒŒK6]Drz¡f‘ÙFoÅ›ëöŒÃ§5h¯²^1"¶%Ztl*²…e—¿zb€üŒegc#Z䣽Ùqž_¦«\R[ŒáŽ)ÜÐeáÁB«‡ÊUîð‹§k’~/ID=·ÜÐ…åöº"†¢2M:ÅÐG³^ Ñ,ºnæ÷]ùz‹ã‚~4xxjØ•ËË’4;¤¼/$+b0Ö‚­äè·/ÇõFºž*gÙ9þ-ŠéÏÅ×0MQ‹ê¬ýX–Ü4£ØÌæ¥ö•ý/‡ õlÙJ'µ?`Á 3çTÅ¿{¶»‹–e[³˜Øˆ®‰Ú·½î>ÀïÄ·:©/e¡Lɑᓳpˆ·:š@”…š¬JüÜÇÝíÝ$N¼½k6©åpÑÏLNò°—ú8$8™z®zñé[®Xp']í) \&yBMvZ«=©¤Ä»\RNow“f²‘.//5³%2Z¤›¤5‹Ú*”ˆ%;›æ„?væç5Ä^71‹lJC©|ø¯!µ§kH“]²i3 »‹šra‹ëSŸbásûpÿyÇÀòrià"ƒ°Û 6 LJÖdEŒñzöÝÍçæ9Þ¨+sœ»ÙPYüþÍÉ\fßëˆ=ý¤aÞ’5TsÌž4Ää`Ó%1ünáÌ>\¦#ÆÀyiòÞº]4ñJ9”‡ÙC6o²R  .Q±Áól†«Õm‹»SÌ8íþA(æ8qt›õúì>›ÞÒ1+˲éBãqÝ®RƒÌ²,Ñ€`£$ö‡¬vš®MÈ+QžÒ¶z ÍñöIûõÊöUÚœ$a«åc×¹åpŠ~J©_Ñ]‘è‰TS|Ïúkmh²(Îb¯£x  1U®ëz‚\GëZÍu±X\¬òÆÞç0ÚòXû6¢s>ã|j™F‚㔪.å2|^Ábª\wtƒ¾TÎXmd‰Ì£°þ½ˆ÷#”§êP–¥iÉ'ƒ’ 4è§±ËÈ`Ð>*8½¢3C޵.#k"‡ò‡’y•i'ÂNdRÅÁ në]„7Ïã„ÞðéëvqË•,Â!޵@Ó$Ê•›ÌnÑ‹Ëõ¿,ê^ÿÃmý sÈÖ+²ÐîÇ)œÔU¤Té íÒÒß¿Î!°žú^g=iºwÝ´æ>ìÐ,¯l([?H4¬˜’e("feKóB"š­Š°Í–\ËYË ‰5€“3èAÇ BG±TE{‡§©qkô˜ß†²Äö@b*¹‰Ãž3wÄXXbr-÷«íÄZTïCÈrR7^Ïúy(Ç­°]F(’?(+­ävÝzvøø« ð‚Å,áøYÅváò±ø´Ä)N]Œc$ç$tõ“¤É¯4Äb.š+šà¶Õ²‘áãÐL,s.F’Æ)Ä Êº …»#s¸#¯eáB‘Ëæ¸€gòLÞ,ªœh'i×»7킂ì'Á#ýw5->Ä2û)iç¬\`ÚÓe ¸¡òIœ-5Bn|_Íry˦®û˜C×áF±ˆ²·:ãŽû8 ½²òqGhù¬ª`XÁŽ_ÉÊ,M±57–É ›$³ÚëKMŸ³Òœ,¸ÇŽî¶“d)”`¡g·I:–-1µ~¦™S>²pŸñ¯+ê˜B–×” 1Ün:ÄŽÎÙdJ Ä,-§PÄ .eÙJšö .çϧüùI™È£cÌ 2ELÌiÎú´ m§ûê¾¢½áöO;Â?£¤  ”1ÙmTÜNYøÇàNpìQ˜ –rAÁ?A?Ïo,ÿ ˆ-I¶’1S±'ìôi æäþÖèàX‹ÌæÈ²$‰²Õ^’mô‚Îêr¶´·WW¢æá%Rôƒ; žÀšó¶ynž nÕî>G\ŒŸöÕ<‰npib0h«…µÛ¼€‡ƒ¶à÷²'ky÷r‰.žÏx’¼ÆÒ³òÛÆ’FÝoüæ­^(æ\N”‡„æ—1Ëi]©â°wÛ™‚ÄiS;7]LÑ'†º[Ô!øPÝγ¢›x½ YÚ«Š-(­41sòÖ-I{r8Ï×h±mç2iK¬CÁdYÖubñê}ܾE'ÌKöìÔé\EïF.SN‚s±6T7u¸Ydnÿ­CŽ^EÇ'ÉøK‘Ý´de[A¡ýfÔ¾Mbßê)Á¡Ï:ÜÄs,zªT“’ŒÅ(J¶mÄ€²cš,©þ3ù½Hݺ°ü¢2- £í^£ £íã‹ÃbBS®Y=Vw)Xè’=)-¸xïñZÕœ½dO€é208Ì+dãI72°ª{M2Sê9…3Pjøj*—>ç ÌO«…tº$¨þ|ˆ-¥<5cÈ.5ZLi‘"œ¦‘ð‰¼©ùÏ+Ú…Sf›QÆ»dÏdÙÔ@³ÞëXÐîöM\ø¼ÃWüM ËWjjÍøCxö–Ü€2Ðl™P&ÁÏ]øEÆã÷°ègÓÅÚ;Î%æ JL—ƒyÕÁ3²éœÔMù¾oƒIºi™h?$½$LÃŽpC¼gé‹Í{¢.wNyvI[lâX–°%o5ãÆ¨¦³©»¿w¨»ûؼ5Å¢#Ý*à°r“*t/Mè²Ø‡=¿ÅÉò%‡E‡Q±?R5oAúCŠŠÌÅ£‘eƒ*Ýù*&!.€s’åKޏå}2èB­ÿ! ïhߨÝ8 !t˜R Ò¸ƒ=rÝ$æqKoÁÚ—úåN€ò@M/·âšÈ±Hý>J²hÒrå\,7è&Ý ÒWô-U±ìR,qãžœ›/‰j:eÃÒfz7Þ5î<ìH¤Ý§tY3?™á€¦LÆ SlOω*ðIð¼ðÇ»‚äa‡{L¢(ƒp`íß±êF–å„6AÌÍçÍθ°œªK‚íÍ™6–^ÇÆij[…&ï ðpÝ®*¹>Kò¹IÀt`-<6˜ž Ö¿sà|§ˆè/;ôÜ딬Þdrå<è²àŒ<ý×ÏÇ|Iú$^qà+u»’cZ¥¹îõÖ&M°•¨“jzߎ¥úœN”¯:R"èUÉîœo浚4Ùm…A’†$ýd«¡¼ I3Q¡x›‰¾êPþ¿£4Á‰S2º¶dv·Å{žC²Þ9–²âÝf÷Õº=Þæ÷”©?Ô¾,É@KÙtV ŒÛrJñ kÉ”1!Þd‘‹2?/G–PÉÅš’álŠóߨ¼µ9”ñÕ0DÞ„+ݯ9¢Ê÷±1ºÌ®°°¤ÁA‹T1wË‘ÈRÖ`ªÚPÚD¼IôýVü5éT㏠Q¾ À\NÁˆõFr _¯Wc?PS*c¬Òn¢¯×í2¤Qî3e>}å“ މeË^MQÙÄ(öÆîdZ[†Sã~Ýasc|û~ÍæÎi­kÙm0ièѳÔìVöÕ{k¢LôL*³ºXT#Šþ§Ø½Ÿ‹˜˜%ŒÚaD#&ž*Y†ÒK©G„¶Üº<Ñ–pXÜ×*ŠŽœ!Ð.@Å1D¼S]—Üý“XŸµ"LÛ~9â Z¾Wºßp˜–¿¨ÜDgÈn`,äžV…˜ƒa"q/,SžDÞDÞÚ7)´ÛêúP×r` Ìþñý¤‰}ôÝ+sp-*¹ü'$Ï®KÕz±gzU¼;Ï™ã±ç7“”+ÝÉÓE¸a–n•Œ`ŸÄ½i{ë¬E˜MùÒPûf“Äj†ã$ù–ÃvùM•$¤#lâÚWl”®A¶5ºpw¼‡ú[ŽËè7dtŒ:¸LܸxCľ…¥i½Z‹J)#ÎxÅMfVÜü ’Řu²nÌ¡F§,Ì WP1ér»¿Çß=g¨ŒORT(ƽø&eúHaá Ÿ±|«å¬xa,ñðfþæÞ!.ÿŠæ%iœÿe‚E]©*ÊssœÏWa™ ‡w,{âv;Ž·ºÝÕÕ.<½v·[ï²g­†Ý°âÏä À•ª|NàŒ§"^§@éÒòF9;KßÊŽz8ÿ•õçéÇ‹h)|²hÃùôo(¾Ï·“z=£Ð¿ÐêeËÓ›ÎR6uÉT™ÐФjøÄ—cùŽ£ô?ÍZ%±ëJÊŠRu¢°>dùÌüãu¾òûDËŸ–ÏJ¥‹v9(1}Å‹×TÙí’™2Q”fÁVáF¬¬ôâ4îdKÖj¯,>¯ñ@b’å7õÙ’ÄlÓj4±t´E5X ß|Û®bÂ\ë³§¾]·óô¿-KdEÏz…i`ö(½„¹XÙõ.-{Äã!ñz]–¯)qR ü™NX¨Î—`NˆÖ¦Ê›Ñ¼‘qy©5ì83†.—é´’TGM‹X€A”î–LÌ'ŠžºŽ‘)/;U(ƈV4§ÞZ%æ#2n c† HYPæ)–"‰Hꀤ΄kgÍØËóeZÂ·Š¶ìèTÙ$¤hÌAdmëáƒDE5b‰OÙÂò>yŠèöWð¥+ ‰f~B— ¦ßéãoÜ8Çý¥~ÔŒû­¸¹¬õ.…Ošq`ø>vA˜æżÏþT×.E9$ƒÊН¬Ôé²5ÿ€S½ºÊÛùC\V4,“¾K1H5]Ä^ŽqÄMéÁ’’q‰.°%ºbOý¥ y¢¹ùýûJV‚ïJÃ!7¸‹½ KiL(Ç·é‡Ö$HL;0§]ŠƒLSó·d°™61XÅ\af‚õ[ˆÎ1—:&2 ¬s(‡ÊÊJ}GŠô±ñDSu'Ûm÷F0©xÔù’¡q²[(ñsu(oÑÍ»!–É’ÉX‚ÏÁl0gšõ±G¤=Žøiê`Úœ.͆´Ãý´#}t•±¡×™¹ݽO¼RH)sÊV.7èãKžUפÉN0¬¨0'À6ZTÙÎ’`¦RÂàj ó8ùÂXqÈΕ‰7TÌs´°ü;VÈ (« {$õËÔ<¬kשu¨·¢ŽÖí,¦Ù n„B{k¤¸àÂéR3yíÝÛ'ÏÇ÷·4›ëËA°ÑX;œÂÝÔÆAõÄ~.8HëJÓæ]oØ6Ì*±L"»9‰òbŸO‘SíkÆiO‰A}iˆ£ =<:Ä£v-xo÷YúMðY·2ÿTé‘ X%ú±ST.ƒ¡Ê"¡Mz>ƒ¡ÄOÑùóYh(uŒq :œ¦¡ YÌã{¢0ŒCï K¾¨—²ÓEír•è 4¹½¨ÝP,ÁV»»Ÿà£Ñ¢ã¤Ð¢ú÷vÃŽ¯¾YÆWùfÈ1ŽNq¡ËÅÔ 6—hË\7éFi–l¬ÍÒ£Ý(:gGCŒǩǪQç.ʯ1 úJ1ó„ŒG9æÓ!«”5px«™ùZì sÜŽH•úy-Þ’ÊÒ•²èålZàTu¶ ÀD²KÎÑ2{ÿz—/¶“ÌbPVÌ3ͨa§Öp5øãdí£½Ü—V¯Kuf®i ‰¹üЂ$2Z¿lÊàTÎìÌ1.æb³Ým,ýNìïn_vaÁ!/«hµdÄÙdŽå:\ˆ¸mŒõ5–e:èÒk³K:ÁlZ˜*³Øhû„OX„ã¡6w¾M©f ^ìµOΘM3e%0æ˜DôåDïRÅ›zwÆ ²Ä »°â½2CKÚFÔÍIA¦‹ªaíÇgìÚX^ cù#øì5%T‘¸ê' W£EXœO”&°èÂY” ‹j¶yµáÇ‚0bêž…›ÁZ8F…åKÐê€îè´–ÃN¸âû$D-iˉÀ( ˆ'v9c¸è;šéÒrC¾?!&sy6 s©5ªìÒ¦3—ÔÑ=ŒßW–>Ó·‡9Y.(XÌé!?Z—³½|‹ÈM{¼}Þ˜­:q¾ú$&C0ÏÐåå£ :ôF¾#‰ô‚IÅÛYŒøò$Ú㳤8—Ž6øº æÚRƒí ˜ Èy¦Ï€Â…—­@_Cï$^B/6ãv»½÷6º>,\x/s8ŸƒÏ¾T“¹’12 äæCûs››Ù¡p™C¿¼½!vÓÂÐ’¬@¡ËKf-,Š.1YÃMÎEYµMY4ƒÍclܘàuÍš°L$^3Và- ðn9|€¯4äÊ)’‹Åèá€8°|ƒ!+ÛpK®U[Ám¨+ö,Ý7ä˜Ib/ŒhîO$5pÌ ¨^ôºÂ!+Ÿ’å 4î‚Åhÿã£ñ<,º­“Í81ÍWÄéê¢#t¥¸¢Ÿ®éÿ¾ºßÝW8B8Ü5œUI ºÛÝ,Hê˜hGB8üdA[7+à ”gê•8ŸlˆuÖ,À€å X/;± yºÐ]mB¯ëÖ%榭d©O³•{eÃ.gûq¥žÁ·£ÞB³½š5zm!ˬëÐ`¸Ç#3÷wX™{{çëVl’æôÙ¥d)!}¯aˆN/s?J¤³$1EÏÓ ôf]‡Í6¬~צÏañwøï‹æ$3ÁÅ#¬àÃDÔJ0 ÚMújÆø‹Qw)XÌ&¤‡”„5 @áânS8Ôù„u Øh¼œ²BeÞ2¡BnZ¡Gð®šV&„sçio.)ÒÅwkÁ".­Â¹ò1©px£U6B.lä˜áˆË°ÆKe”Æ"ï¤lØûÛþZÏPT$®Š|Њa+öL öé%QXd…›Ï+XÌJÑR/©‰Ç ‘´-O«âÑAQAùÊó¹’©ÿ£pGœ‹ÿBCèD} ”¥wUç#ý¾®ªWÛûÞûÞ·V'UM+’åíKº:•¤"ITBÔˆg:Î00sd9ƒ‚‚Ö+šôë ƈGETp„9¨# Â8a Ê„AAawÆ8rŒŽ2÷þ÷õ} _§kyxü~}ÿ÷ÞÿÝo¥Òºë¦Æ*o©<±R©<þþ]µRù|¿~ï¶ÎÙÉ`Ú™ŽFÓÁx2õ;•ö%•J4 Ó0Ü ÷£ƒ£´ž«eOVÜrÃu½]÷ô[o¹®rû÷\W9h_÷„ƒÎu•9{ëÞšH>Ÿ½Ÿ"tλÓÞ´ÛnO»Cø>nXrùSRäu†åi&– ì½Cxoz b¹K`ù øìUz“³Ît0ö§ÉdÚéŽÇÌAÎÂFíí¥;³tïÐCüšsÂTL0¯b/žÀ‹£»t0Àg)Žh2O»£i·;žöè 4IC›*yZd O‘o ȾB ɹMyñJeúøãã Ï€O¦ÝNÓŸö&mË9‰%·ðÚo KXžXÀR,Oа\«å/á³0¢túgûe:šLÀ2è{èRó"Ïk€ž´‘çYÞÀëø¥ˆã¸ÙôÇ2E,7뜋Xþã\F—^»7ô»ÓI—aÑYeæ¡‹Æ/¹Ë9öÞ'Ã{›³|>ûø~ftvâ ¼2œvHo@p˜$qðŠÅÂÇ¥&Ž{Ø;Ÿ‚tå•S쳟^P^ÁónÝ¢<îÁ9u•ÓÆ¤I¸G^˜Š×ﱊ¡úäYEér y’DÓ1žNÆÀ¹i§Ý§¬k¡9Ý$ò"^œ‘Cq‚¹y!˜›õ#ú |öd]3šU ò:ÃÉÀFoÂ±ï‰Æâ—óìÅOƒdžÖý<|ö!MŽFÓát4}¨ž³é°QË7áONþ¡4‘¢8jm2(=]®uÒëà®fê.€!ª—ŠpN»ÍtνQº]ÄKpHa^„yyVØs.×:èò)øì~!ÓxÁ8@šF]”…b¤B±DénöÚÓðÚ–A—ÐåR  Š4\Ì@ `Ý\G#v˜tT/Zü¥YLß RsźÎ+HbC¹,•Êßò›¨Ó†;qÚ‘ãAõ}P>Mr³p¢œ—¢Ô/¯¢$Œ(0ZàBœAŠ:£!Ñ-&Žp.ôÊ‘â8o)†‚N”›|Úÿ:a·Èãùy@Ògºˆ‚œÒ÷A|Úp+)«èŒ²“åǨá|·@™ž“XîTùGøìÏ¥4£0ítÚQ˜XŽRªLŠÑ"'Š·ˆ@®©Öa`nðqËõ‚[~Zæ•+€š–Ý6\D}T½”[,(È-KEièe™‹‡"¥ùëðÙ_IiF%×íL¦ý6ÜG=?ëqkÿßňP2C†¾Ÿý™¡ý»xJpQwÆã¡ ^Câ*Ò/E´rḼ„á¶å Šq4¯3:ÅÅÌ–)ÈòTËd@/ESˆvàJ²ŒñümùOè;}R„@’gÛ¶åUª¦`yO#¸ˆ–¼ØÌ³ ÈR‹&¦Dç>,ˆåé6ãv¥ÛC!j@ÝŽ§}ι”3õõdƒ HLjsÆw? ;÷&ÄRÓéòvÀr­f¹ÀáôÐIëôzÌ¡¬2V‰vꈃңŽßƒM|!üòØpD4››3ËÓ³ü´Æ,—Qf‚Rû î¡Q{:jS£EgÙh'ªƒzG /.eK×å¾ñØyH|£N”_ Ci)€ÂÂÙtm°èFÌÞ”ZÔ€«„S8³ÔW™8…Æù('MŽñ{èfÇåŒ|ûíBÉüÀ¹€57N¡ŠÅà“p¯^G‘oe[ìÉ·¶¬Èɵ7;üç…Ï>&½4q;hv£êt=XôÓ¨ñb ´Z ËS˱Hª¼Q‘æI÷l˜ïÄno4í†>,y/m.ò‹<ÌRåÌr‹C÷£ûüÁŠˆ+€Þp  LÛšlkÛæ“)P,ËÿJfЛ¥bºÜÅüwcÒln¢Ék•¨hrAvæ@SchŽsÂÜ*X÷-ÂXøøìî*¢’ëPwà§awBLó„¢´p=úqqoñŸ×z«Ãk­aù7 j0妃îdÚÒ²€”Ç ŠÒÔ­¾ým8 =z@ÝÎølm9`•1\ÍmæÉÛX0˜ÑÐß?ú”·å¾ Ý¡Ðùö3ðÙïžðÉnÄN—–&ãî‚U+ŸŒ}ŸÅøxÀœ0ß„ù>ý€•n" qt‰0P0ôz¶˜¥ŽÊÿùyUn³ÈV@Ñ‚ðÄëqšf rÓÌ'Ð÷ªXßî²ÏR`–¿¯ÈàJº pŒÀT8taIÓÁ2Y–¥!ƒtϾü¡ct¾yš°†)2 üžtoÄ#ý f‡Åš.:9ûRî-çÒ3©æP. è5ÀD €ôQ¢Í€š iêëÉý C²·É¶½§"ÃÀ,£)) šHÉîvV4A†ëyy­¨Õ‹jAº׋z¼ü~Þan}“»iç$f5ÞŠ=5gª¶²i_Ô¦ZDJ’Z •nFõ~fp/ƒò$§¼ØÁ)`þ“ŠÔE ¹vÚït}PØC=fÒI˚粬ú.Í/q(þ/UnÑ‹ÇÐþïH5ÍÏž‘<ÛOq\ä«Q±šªÌ;2GObæªYRýÇ…ø ¬ª@,c´0ák¿ßåO%è¤.?€¥Öˆ²fÒÒ]£5¨XÆ_ ,k¦Õý#_äÃLaõåd™ù"'Cíxv¢z–P÷=V&ѯhårZÝ?âÈì}BÆ.iн‹e„¹š£IjB¹iFÎÚe'¯üˆã|þ@ºE"oÔmƒ±Òƒ¿C–Œ”r=’*õåG·:#­(A:Ðú`ãvÁoì±r-“Uö”[(·~((DŸGÏuÜKÚöCJÝ0)îÃZjâ1f1‰Ò8Ì3Œu¸í7úlùÌ$&UÖ€*¿WQÊ  (Ý^ovBσeã„,CÛÆ"÷¬’w0œÚ l»Ø;âÃãÝÃÕZÎ~ÊX,q–wKS›a`[,Ë3µXЕçw¡¬tw`±lÎ-/spËŸ±ªTæ¡Kò:—×^Âû5¶Ý­W£µ0Zú+AyýÍŠ©Z^æ0p—€[~«¢5<¡¹ßAÓŸ2®)AZ ›5gˆZ­‚¶µð ‡·°ûeŽËùÃJ¬ÕŽAÑN»ëRm6®âè·ÀTyJ˜£Š”¡my9Ó87¸ªh²À-=—SÅñ¨åZ–ÇÙöÇâ<‘ZŠ•7Äh<¦d1¹ö""îY^¦Z~Ü!B óy”,}š‡Ëh8¤t1ÉÒØŽ Éì|Ãr«O„^®„Äx@÷£¬ŒÕÞƒ›ŠIÅx«¬¯Ç ÉÉ6ˆnÍïÃ{£ /Â,O¨¨­qÖ˜ *·KÝ2 Šç|dÁIZ¤e*îåŽËù3jåØä,éH癸«LÝÚXR¬Ã,|±Å¿bÞUÍÕû|#¹=°Æmªm-®-)Åk)/㕟pTê¢ñô§*” åöAÙõú^,¦9©ZÜØŒ•ø ¹ 3ñbhwº˜‘"`ÚiŸ…|l0MÕåXsVs”…|fŽŠÔ]F™=Ã'FýÛ#š&Òy%J|'C¿Ò²¤²„øÌq ¡îÿ«ŠRlƒî¨Ú6.,djb)¶§ÙVÙå|东ÿލ£*‡Ó.vaÉ„µèidz7ß.–ŠîãåÂhIX·hȼ¡%?É-«ÜÂr­ls;—yÎ6” Œ¸ïžœ5øÂƒÖ]P ¤º]ª„)tAÆÓ^뺇0œ1H’І²Iß±37°d¡4(÷J‡Dß`¾T±§1ÆY@¢A³`؇•ÇœkY-šíE©¥pÎaµ\Xþ@:! œ€Å®"+Õ5ɲãuBjØ¢C²±HÖýKVêbQ¤'ØOÉ4K„ÿô”¤òLªè ãU.w;$º tùŸ-pŠ…´äíÃuW½—ñî\b’£>O‘÷")#w8MûÜ7³°äõâøñf’7—e ]+wa9åÃrÞÁ.WZe7mvêÖ±¢5ƒq]ø“™X¼—bIŸ­‹ÑX‰mó’÷æ8ǘ[ìzÀäËy³±mæ ÒÓß$=ýéZ¼ž¯À÷Vk%Ž|QBžyµ#ò1n‰_¸ž{}ðÍXxCGîÔãb#Ëd%Ÿøb·§óÕŽúoÇSµl8iKèw±Ï´Ûö€Yi¶ê1ì©8Í7â`µIš´cѺçùå§ÝWމp"gižl¦gemÃP±ÁµHî¬.·è^㸌Ð%Ú0¤®çp Óÿ¡A•ð°Vk¢R#j-ÁZ$zB¡ å43tS³Äå5JÊ—CùÜ1³±gˆÖe‡ ô‡ÜW4Ñ$ë…n^[–GSø¦LÓ¹ó%%M '€ µ1kåo¦jj5wÄ.}—‡òZ”O³¬¼ÚÖ .ë¸/Î(5¸%­W“b«FcÈìœLQR|E´]ª~(R¹Ü Êå©wt»Fp-öÙµh2nªë9Íw&pZYy=rÆ6º/S' ‹ÖÁväAOÔ ‡:”ZËæ„±&Ô§u“Ñ¿X˜Ú嵎ZÔr'õާ>BMÈdŒ‡.+…¸³M¥RËóí>ír¯£òÿê@ R¡]˜9ƒ»hÜ™N:ì.2—Ö[RkNA&d(FFK…–t!ƒ]z¨üç}MÝ.øõý®Ë5€ETÕ ÿ;óñV^)bžãI ËëXödÈ?OpŽJÛé©Ö5È‚A1ÕpB”ãOIBÆu”)—û>Ú>»£™†U?¤¼tÒ“®AU³ÝHƒÁÈÑøµU¦\\PNt ƒBƒí£>(и^(’KÉH¤uU®Õªr¹[…b”þWà³›dÑÄ4ŒcoÀæ XPê¤e.¢´¥I#¹©†Ä.Qó¬÷9¼Å¿S”?†Ä°ðˆtO¢’Û„RÅ̸€œÝÛVM¶½ÏcýïJëŸw“ioDãs;¡‰¬Œ¶òV‹Q¢¦0Ñn`Xjæ½ÁÑ[†¦Cpİ;sKÌÚÇ#bµä‹ì+|9^^v\Cåª×(P¶ ÃÿŸŽ‰©Hh>Ýp]¯Ýthwi,Ì~·ãäk›1iÓö%E~Å‘y*‹Š `2!-·}–)2Ïhߣ]´XàY’åeÔ›ñtæ}ä˜Ñ;ƒu§=R>Árá&Iöóšâ¦Ü²sÙÛÞ°å›[PÊ´/ëÌèãø’Qމ¦ò,(ç6³ÆäRñv:ú gÅYEçsAÁ’>E' æŠ"Å…F# Ë[05fÓˆl¤µ¨ÈÑ ÁÁRû•ÍMd…Ó…'®žâ3çÞâÈp¢‚y¢lãÁyŽÓ2̘NÆ0y%ÝK7åqÔ(=”#kÛÅÇ-¯²H9ú"Ëû²(Ô˜TªuÆIÛ…ät‹—'3~U ¢t^ñú¬oqØ•_>+uŸÁd¹ß¼P67óL8C©P¹©¢|Ëz8%I“Ï£ñ”š,Òªö +"·¡ Wk^Yç¯:âa_“ñ :ãnh¬*ÁªVıTŠz†èŒ€?”ò„§£mæÓĽ `1;ïdCTdFÛШ³‘ØôŒ¥à”zöA™–û5Ç}MÕr^1ÝÁá¨#–1DuB€¦Šã¢¨sŠyFß8¦"%íǽ ¸DÃéG¸m,Ø~ŒEby”¥ø›ár)Ø Ë•>-÷kŽ`îgKªa¡pÞBŸ ±ÁÄi§¼ï™tÉ0û\d #“µtžÑ¯;ÎèxU¤!x©Íô\§'Ê[L-GF‰ª0Ú=o ƒ’øèòVGê²:X Þà0GœCÁ2h&YÏ®ÕÁ\íc˜·y‚Ü'dx®OüVœE׉Lº„‡œWyrn×1”)˜·9ÌËçɨ% öHu€©WVÖîÂbJt.ä ûã$¿x‹>]ty\)ásŽÁ-Â>Îñh!–L öxèâíœD,éu:–Kª²X™vÌ`i;Ø-8»/Àœ3ÀDÍx%]‚¸†c c~V -‹ÁxÜ\ø GpáJÝFÃÈè ³ºi“sSýˆ2ŸÃÔ'Éëy£s<ñvE¿œRX7×,º™ºÙŬjѼ!Ã,ê)G%³EV­%W0ïp„:ž¥T “ Ç!6/2³8·IGý\ÌojášøÊ ïV ˜•b·b¢;/X ÆÝ¨ O™å\¶Sr ¤>Cê^ —"ÞˆZ—çŠxó$ÎtœàAÑñU–“32_µ}D¬¬y%.þu öqö×ãúz$«×ÁÇgƒÝMž!q÷DNPY€¥ã;¨w*~çàç±b°/Xv8À|Üë³âBÇ®R¬ÂÆeÜûN÷>“•Ñ Û+§§}T2¬0ÊÂR†-‰+dEH ß| s¯[dXvYxù7 æùåÓµ¢ lÒî³* “_´»±¥ƒ2tî­.áDù-$ÊYU–ªâ Þ+6Î`w øG]^†ªŸÏaˆÓ–ñ­«e!ÃØÇµ¿åàÚªÌEó¢Ô¾X\ªím,qFÑMsøD¹q²ü¶Ã”Z•×µ_úÓ!¶!`¼ƒÇ3úPôª83â ¡\P ˜&f£*êºÝ@§G˜ã±LL²hq“LŠ-âzA+”j­2Íò_ñŒ~H·ëRøìŒªYÄ?šàÀË«·7Žh~ºˆP³D ™¾Œ'Ìï aže³n[³½{S2* ë¨aLºœ;ã ¢lÿ爨(åìÞd`Z>†y—C¹¼$ú«ÜY#!Ì!tXêÞQ¿Q’%"dÙ×m†Î½G’wâYÙ!Ǻ€aÀ²ëè ̲5â¥ÈCoÏâ{ÙèÛeå%*LëaåGR3Þµ)³ŒÞl "â‡ôûxHOµ}û=+ãBz3äEç6ÂÕpeÓDê#\=ªN´O¾×A–ï´Øü…½<“1¨VìnÑ¢D@Æpùì… 3ôÀòኺ¿Ãt$Þ ÷ FÆ[í( #ï€Ká³ÓjkƦý!Z, ìÅ’™È«6¥`¸!õ>‡!õbÖ0²H\é„më6òAç–sÑŸÇÝoY"I¿SçÜzUTuË¡x¬ÃB ~ß&“$N‰Ÿ‘Ë(£nñK~òð®ýßPŒnШ.¯FÞŠf÷oÆ6»Œ:¨ƒ™˜c<ž‹±ÊOè~´ÿÏÒ+€ëº—¨'„ýÐÃ1I ú´¦Ã Õs‰ZLB€Ö0¼]Öx €9ûSåýH”'é¼òo¥ýOËèÀá¢éˆ¯iPI²‹º…;ÑX§UodFRhy#ØX^.Ž·Ö8QÖÍ¡ Mufɫڎ\¦Ô÷u„½‚ì2ÒO§ÎIRL¾ˆ‹9ß’ù-q/n™zî‚‚%ëdù1%)M#/˜îlƒÒÅ&£¡Œ’à"þóùæÉ¯sÂ|Сt_ `>[Q" #Ú@‰·¬lÀ„2ßf|²èñ‘˜‘ý€CÏ¡Áp•ZîB¦†Ã݈ý|=šÊ¸é¿óª•/žÊÓFB)ºÙ¦‹â0ްr4?8G,f¨“d×\^g?ÍÜëDÏ ¦E÷ ò‰p¬K¸‘(lŒ‹ ³®sah“JŠ¢¨çñ×rV¼›cùS³ü°ãÂnEœ‹!)¸XêÕ€BhA#SÖ®YQ ~@Æ2æ³FUY]>ž±d‘Þ„×ê|’î&Qµ–“aêc_Ÿ}^b:"/¢|DZs¤±¼VœZÅúâ”=Å´æšÅZVÔZ(êÐ-Œú`U.:äªÿ'Ù€cúÁÝcpYÖÕ$ɹ÷™ˆzj8›ViÔýA§¼üߊ6¢»3œ‚ËaŸÿ˜ònA¿qNùRåŒ.A¯R/D²œ ,nLŒ³Y%æÌO¤™š¬Nâ§i Ç ÂïÍ"ÞÌêuoµÀHjˆò+¥(3ñÁŽ+8¤ÑdÚ›ôñ=’¯™Så!…W8˜9ëÏ“!÷Îx:&;#(Óš¬r¨¼4Tø„?q]Oß'?Uå<δÝ*ý/ì•N þÆ–iÀÒD2[#Y˜BLül) ù˜7³ %¾M§É”%Ë¢;{(qØ[ßOt|ˆI= ü1]Åw¬äÕuå Ÿ=ä¹—ù"2Þ'Òa y Ê…¥¬÷×Cí„ÌØÜvÕˆnp„Ë4Lwâ#K†ûÏŒ¿~Íç#r ÷Qdcõã 4q€õ8»/g ™¼¢ªÚ0 R9yI ³6׿õ ¾Š†g!.¯ÊÆ š…À$'ÃÀ‚áNŸNþ7Ñìì†YFºœôƒò {ÝV•>S¿‹*µÉ¢¨È½#RƃXß•…i»X&â³(ÞQºü˜#¼Œ;НÕ}"s±¡ëæ:6Ü&ê\(/k¬0×vWí!¤O¬Êá–däÎeârmÓ¶ÒÓä#LÙÀ…‡«öô”kª¢¡“ åbu.@³aäABZÎÔ{›6¾+ú‚‚Ä q¼V‰ZÒꘔ˜`ŒcÌ ©]dQŠÎÆf\ì“k®b>î0¢~\i¢$=J—˜Uhr Îýi ›”$&µQKŠÜÏE÷‡2ñ±-BI.ÕOèDUEæ`·8VÞtXÐ~¦ûp±DËz£šÕŠb%_A¶×~eu…ÐKÙ~FGŒ,Ø\ôDfЉTçÇãŸ+™{•‘µ<Õ9ÿú}’£?tÑe.Ë$X&˳,óÙ œ<^µwûõô¤Ñ€XÞ8êþ²Ý»–Ϋ?Þª¶HM\Ënaò–_âFñøv=Y >»BKÖc_'¾“!³,â¤QHtÄhòã‚21u_P°˜ÆÝKe~\t0ކÄxèð3GTW¾iž„G^¼±1æý†2ôî]¿~1`¬ÇwJ\¶?áퟓÞ<ÍØŸL'˜"a×€uG:6*%‚$I²Vä†ï˜+PÌ^»jÁo‰uæpH£R,edñ^¸àœ.=—×ã´ª®¼r.=·˜·^»h,Þ%™˵:]&U³EÚZocI“4IòXÝ“Æ~¤¿¦¹w;ÇòI‡åû ’]ø(-2粫4`G:jÞsúQ Ü#ðâZY«Ì7ù+‡å{uUë5$ý#í V1ôø RS÷nðçéÜB¤‘U¯uÅìî(u<öÒï!Y&ØC2ð ¡bƒ_ó<"mÊC×'ûŠÍ9a>å ̵2%áÙîmÑ[ËÖE>/Å#GbÇȧff·ªÕ‘ÕÄèÊŽF¸ fäÁR.F¥îɧÑÌ|’€ù%àÝ/V”ù;8X£†¬rÌ<ž“;k(=„d~,ñUÊ”î_ãÝ¢KÑ›dÙ#Íápœ×Ѱ¡Ž&MN.Tt4c—AùŒƒW0}Uh£HqOæ\‘ا#Iëu:kͨrõkxçc ºRBÁ5‘7ÕÃæJHLà ÕaFTÛª¶BèºX‘!ë8Ç^ü¹*Ÿ!•î“YÉ K¥±K µ¸'›Î5dÐe}Y ] Ó^¢àXæçóyÇù<­*^9QpBëXlÓ3Ò˜6Ö╸‘ç4ÍR G\¬-Ñš¨,O3 ‹¨¤ð¥~ÁaDÝ«Œ˜¡=,@!lL›°†')?; ?³Ýƒº:v"¡¿EÛ5m‚ÒeçÀØ‹ó%‡ƒtÀ|@Ó#¡÷q9—MöRey¶;?é(ƒÝ€ Œ–(‰VkÜì>s«œ-¬ Ñ—ñj:³\nŽŠÅY*]1N‹Ñ)8¢ƒ“é™ùl÷tV±£g ƒ„++¤Ü%)–7Â"ÛÐù…O<øî”Ü­@1SÀ¯V²Ø$0&8ñìD0 Y XR¦\Ê’ÑɾιWVEñ-0ÄQ¸édÂê $;»§Õ"›|Ë|òT¦Ñšìxr3¿øeÇ%´S•k I¸®GRz#2|lje1U yö•ÿ òíÍ:«#òÕfÃA@§ŠA’ö?ÿé‰ðvxÃWÞdµHU¹žÔª­¼G“êìúª>`/¿.öÀ‘µ*cšhe=[Ô^¼L]âJ¶°Ðp¶øÇªÝ4ó^ ÍW„©4!ä´xØþn¥‹>ÊFZúi-‹d¹´µç‚‚„G¾¸¬\W•í¤âÆio(¼´°44,GYBD·–çhÁÊ1b‰4³ÕCÒm_«€9aå×å"fu¶Á€,©ë pXU{y|ÿuÒNS¦ÖEò|ŸÎ6ß-} ŒÃ¨ÑtŒS…Åp³†®J¶7Hp9Ì[­|Ý ð‡êèýzˆ¨mÍpšZ{Ôq÷¼YªXƒ³Lâ‚Üu·´šˆgÈø>~Y#.ø‹ˆ§¬añQO,î)ÚýIˆwz}lºx°¸–¡í’Пbxȉ埅P?«Ì6“i0‹7ᛇu(‹CŒbeIÜ`nÎOÁMçr.·s«90n¨ÊŽˆ]_ŽV@Ûbt£XŠF#[c½ELíøØ…Kö¿Tív•”iVÿ^[ƒ.XÜŠvΔoÌÁ0oSvn@œCÜ:`ÕPº@íXÂ,E”†ôFH[y½tÐÚcU»-ãJå‘#0iÛd˜ËY¶¥P¤4YÁ[oÜé1Çù9—•æå{Ø@ߎ0iÆÖzÁ(}üHÒk›—€ágô¯_õæªZfIì8åf0î “ßd—ƒ:N,É7©±íÚj"±<ÕwA~ÝKx“b;œ%CbÉSløƒI”’,Ñ0™Ï!;¯ 1ë•´/ #c× h—1›@炲²ÍEÐ7Bô.eÒ>iYï½@Ý6j†Å8²¡Î:L–á@¢zc9mˆÀªCâdyÜqݯec†$ë0 ÁÁ!(iReÁR8>¨OŠyÇPà‚T“,o‡ÏT|2¬UƾÖvGÐ@¥A•Em3]V»8-ny‚…+]ž˜®TºÞ®˜ðèM¬ï7³ã–:ÛX \ùQ=!°õÝ•¹å¤Þ¦O²Ïü‰Õô'µ8·™kP¼¹K;Îò ¦b¤ÒG¯¬}‚Ô°3IsˆõÑäOKYîŠø{ûJ—[¬qCÎwéEHÆŽ "éî™ÓÅjž42Ìr™9L¥,Ҳ쀂;:÷”Ò{§É-§¶óZÔÄÂÓu=4(–7p·…n5”Pp©ßJôÉÚjZH–—£hy¹‚§º ^Èêf+йéÖ ßjX÷EZR§«b‚"-'¢»†bÔe½“» JX[ ã-—› ‡·‹[!¹3¤VœD1Îç{«báŠD¦y°Ä½ï9žòzËÒÒD’e|·É2±¨nØ#•Y<%cc©¯5ëYQX‰@”Úek KÇe±M<ÈÆ ‹W›`Ã/n `ASC€ÎH3JbX¥ß°`k=_Ïù8Go&qÅ!AÏ’Î=õÒÐwžÅY7}”$jeyÌë¥|eÉ»Z`'ïneaS¦áp2Ç€OSMkžÎîa þ,l\”¼óÚ¯vE n‹»I5[ìy&”s‡õ¼¹TÃ\³ðÝšã4Yìÿϯ*[[íÙÆÉÌêÅF’‰VÚo ‡¨ØpÐ䎪2Ý’Ä€PvàÄz>&IfÛ˜ÖÍ -ïÆbön ,õÀöZ?,gŠÑÕŽûÁÍǬ*Ì„²{¸F¢L“±ªîµ°È­óÃgÿ»¢V’-u“>ŽóêÒ­ê&–£Ð?$¡Ñ–i6žcýN¦s›f¸.v” K=[ú"",…K‡H£þ˜í,Ò¸¦1ßÍóœÕº j(éÊ¢@¸zÙ¬m|¬mô­©¶èsXȽº%ŒãmA,t5´¦ÊdÈ‚ÕÐ&˜” [Èé8êŒÅT•™% ÀpÅ9/JÔIÅ^ÀLb—n{oó•Ù:’ÉÊ[uîNºxË–#A——ɾ¯ BI—¦eÆ}t¥Y;‚ &‰áú–³š’Œ¢cc(¨D9ƒí/RÁ`û».ÌÜ|+åÆÛ¹ï2!ÄÅø­ðÙû41ƾà ÜÁÙc¾‡Iðhæ8±ü’Þ‹8J1/õžãÀvß« iOw vk±øÞVkÛW.²òÅV¼%y¯÷ŒP’gèP>Ÿ}¡¢¸AX¿Ý&ûƱ‰eN±Pr4„ö(–ÉͰ gÍ ʽÂÌÝÝ­baGu’}ö€ tÓÍc#2 eÝçm]æZL.á°„À‹Š`©Æ\Çìì„S…ëþ4¨XC³0À]×VŒneÀ‹СY6ǀΠó4ÍeÀ]ÎnÑ›Câã6­±)™ÃôqUŒüñl×µ>ügÒ̰Û+À¶7É¥T¼9 Ý›!¡<³*¦Jò*YŠû­˜oæÂRúxºæ…(å½”á“,âš8d¸=V¨ ÚrÚÇtHx”Ã;$wHõ•ˆ k6“-â#æœ1,»‹ìA³+Ѩâe”e0—vÙ’®ùN¯#,XdYØ9IÇ-g>+ß@¸$.Γ—á‘âÇûç™'²m"½ƒcáˆrPÕèâ­–¾ÌaëâÒ¸3êDz:mÓp§žóm/Y‘4‹Â4^¢B³uµ3â5-ÛÂþ—• ÂØ…q.†Èj6`Ç$‰Ï²T|´¬ðFçÎ+@LÍò2©Y<+-=W§uìrůcÀ±&ü|vçƒfÜ•j|Ï÷Îcä‡ÅZôã ‘Wò\—߬eo#4®°5Ga¿BÖK8×ÚZºŸJPþ-v uQN9"¹Ÿ…Ï>#…™T£ =fæ‚É*óoBÝZëûø{c[×èÚ§X°]ÌGC¡G ÝÐi2Wƒ¦¾¹q™Š»ÜadcLùR­Nš,µÅÉé¼ÄÓ‚‚çr‚_Ï'”¯Q,(sJò:QÖÓxJF¯lˆµÒr²XÕz‰9ÔÀÅ .ݨN™½ì×äæÄÚ’š?–Ù–—;¤ùGËÕjjHÖ`v¦7°éB±àøë¯ÛMô]Cœ]v»úiÆèâÝõkP8OÀÀÇbÛ˜s®IwÞ®Cß¾¨*ÚŽ©’£N<³Lõ­…å0M[)š–i.óVñ· Eª–)& ôƒÝoÀ0=V‡kž5íÙ䚦œ;1öÐåé²&ìqöT*Jo„•r¸ç½Çf,hZ?Ñ©ÆyQXºŸ×%Êö¢*\„’]£SåËF)©µÁ’½ÑwcÍŽ@£ºÅá¢ážmÖ¿µH'á9̆… ùM Ñy«,q]+]á*è—•0÷ ×РIXÏ–°ïkiR5·F_¯Ž.4:3–œP Y~mU¬A£LÛÅ”ë`Ü(”­eºþgÄ“­~kصÜÎ]6Ïç÷J°Ð¹`ËÀsl4nQÁš×py¦ƒ(﬊xž¥@&’:{½I ⸪äfÿ¾Ï¸ä’Œ;Ì.ž7éaK×vèPeÙ0;FêýÇmo çvÛ¸¢ˆoÁ4OÈ¡÷æ©‘òi>°ë¸ïˆ¾ßA\‡ Ìrí„0¡€²%*dMSš¬è|ìÂÉò,ç¾C þ{–±iÇòúú Ô$A¬SŸºÅŠˆñxîY¥ýà”Â-êò>×>“P‡ä µ¢Ð ´}N*ax;ç† MfÌú'Å”£Ñeìöb£©z,¡×0á\Ä^ˆR÷NÇ1¡-×TY¦O*(z¸z€••¨ÜÿíÖ±89¡Ê>sÎgÌ]P ˜­y¿*g+,X(k‚ÁÛ'Zã3¸é!¹OÉé¾ÓêÀÝë[jRÜÞ³nc©QþÅÇ!‹wÎÏs„A±æë|ëUöf¨|”<ZåovDí”X7oAÐ"c¸’‚®©`Þ/o$Ïš ô]U$³ú1<›µ:±à¹Êâ™ý ¬3([æ=×qFï–*Æ·¾Iés»®ÙwÚ“édqštÏSÂQ\Ǽ“Õ|úöâ â8He…¿¯TñÎP¿´Lª<ÏA•·Uµu²Î®Qê\ãÜδIä“"N•ç; )\.øD­†ÂZ$¨qJ4ãl[,XƒPV¬üÃŽ«ñOe±²oƒDn@ã@¢âxÑÚ(Ä0eÎetsªàî–1rè£Ú5íËmpʹrõ±tž‘™¿–iÿ:b˿˷QØ»ØÂ(Ôh2#»ØVˆÙºˆ?Î~¢;Xå},må]•dÎ D9L^õtZ“œ(8Ã>6ve<$sEž¹ö’ƒYÈWTЈB£^Ĥ>*FÖrªéŒŠØšY‹›ˆèv"Yð¿JÇv"KÂ(= 3*ÃfÊ_Q¬:K~½Ti=àDù é²zöêdzwŽí¨À×'LÇщ!±”ïÀÞó ÓhÁÅ"iþ;–ˆ8 4·,oµöªý$]p]O$¡|@ñŠ|뉖#‰eÿt“¾³Q4øR…‚鉆 K^¬*)4- Ëéòãº|\)pÏ7¸eßÍcÀ­¨ÙêqÄržJSåk.8‡òr²„’ÓŹpÒ8 ý=2*Fª“/DžèmÔà´ñ]Í\õ¿Âq!âž +UÜ;ÎèT ëy¾¼I–D©iÁr…¸àÃÛ‹•†ÀrÚYøÉ@2ãý ëšôíœ1NtoÖHx@AWnÊo¾ªO Ãõ‘1PùCúÕl­lÿc?<·FÇA=Hk`$ÁfÞüú¦§¦äˆÙ+UÒåù͹ļ™qÏÖeª£hïÔ2i‚÷a⌱ØZλÌö•-÷É*Þ3.0¥OÙØaR†y–š¸°0Ii™ÌźÖRÎ-¸ˆnÒ #."çV GXpPüj¬rÄ[ämô:ïð…pô¨2{Û9fÔÄBœçïZÇPb½N¶ZCv8Uæ=–𡪶UËÚ ¤(·º»Ûtˆ×ŰŠ5y›«•W;Œ§/+Ö­sȨA£#ܧ¸¸¿¶¼á쵎óyX±(}{2tšìë1YudñŠó½qþ‚R"ækÐ%LëÍ5¸…$ÍL.Á›°Á¼×н ~ ñlëÇ•‚eÏv Kzn7‹³Ìœlæ:5Ÿ†áô¹ÏqX_3Œ:×,:ÜÙ!Oj6?sXä›YËÕghMmR)¡øü›Pöë¶mëÃb©™{,fÿñ#UmV®{¸¦ †.¶â'°0@t/¦Çèué]”yT‰DyÆ­Ù”ibYeÁÊ-ó,"¥b9«¾¤_}7g˜7:iœ0sF5b¬i2š Íö÷N·d%RIÕ;ãಠ‰¹©Ã0— ÚX¤É_†Å»ŽÓ…å北æ›jc1ÞË‚c‘‹W¦Ñ!Ó(©N÷Z‹sùfP6 V¹.­Ù6–Óȯë79®ë¯+z×9Çˤ ³1M›NÄ [‹˜å¼‚„&¯$’¿–ÁBÏâι yŲì8QpóÝ!• nˆÈÕ c„~8ç¢ÙLÖµ¯‡´¶Ï€ú+î9QÞìà”G%×zFJ$ICštÝŠE–Ç툌k¡ê8+€Ê5î[©+~JÓ¸ö@pgg³pήeOZ;"+Á'‘âÔц–ûG9ó§d©èàmî\vCçÖµ$ô®uð¶·*77ª°ãßhÔ6»ûõ“JÏÍç'Y+#†-\7PN%¯~›Cé=¦ÌÝñLu4É3?l¦Ç)Œ$÷9ei¬·;°à4¶®¢ôSàL(GÛ¹Üø[2hÆë¼Ãam>& ¼½c­“"Úf¡cP^XñNÇ…ý˜r»4¨²³{ˆžcÆ;^]9›¸ôŒÞå8£o(ýž†È™ï‡õ Ø M·1 ©ÖÅýÝ$ 8¯™ªï½Õ‡cäÂE×d … €#ÜI뉢|ݤ)˽×Q$Eæ2+ST¬iÐ6’¼·r²ØóZË•º$¥3ÁšÿƉr¿ƒ(k&¸kª#W+ós{a#œ“„ºdwQ=wª#ÎKŒì+Îù:©ê{¾"Ù‘HÂùa–µ¶ZÉV±r,_·ž¼1®Éc&¯|ÐA–\Ñ-îyêáÌ÷gé|›Ó‚71*¬’èdñÖ>àð‘må0:krÁ¢O8?:8l$d¾V:`œ•2;ÄÂþ¦á$m3²xúúMóyŠÿrÿÜ(ˆ÷ú°ƒ(8ÔJÛ÷bÓ²°€Ž[Ú6YØ~ë,ù ‡W®P36Ö@ Éü°UWct|øƒ /HñGPøž¦¹Žf=…gO‘IDI’¤lyŸ²¾O{|¥Iœ.sÐeW‘!w®é’·ò4nµHj$ÍBb^:ÅÙjÀåì‚ë´‹]Ù™hf‹«‹=ä4; X¶«ôdàj±B“Ìt  +;.ãªå^‹1Y7ÒÌ:köšÎ,ðìÎðl²ÕŒv~-ˆ³–•?âP$:(I¿ •<ö ¤P'Î.ÕúÖúz­†Çà Ê¥©vTW0òXÝiŸt´³ 4mIc½±(s6TN‚sÄòv¯÷U?r—‡?à@ˆc×\.ú@\ÄÒ€¿wÂÿ¥Jš#ÀæTBÜÖ¸±°ÒãÈÑu*äûÓùÆö‰ëµLµÝ*¡Ê“? Ïˇ+z ŸuØv8Ïc[-TµgwHP×0Á¢¸¦cvÇ%ª®ù<Ꚋ¿§‘ª‰í€·%+";¢³K8† `+Z2êÀi‘’‹LŽò®+öÈÀ1#ËÚJª,€1xv¸š]ÞæÃÙs!Y%µf­Ô‚¥ X ƒ$‚å@ƒ Èfò xF À°FòÀ·eÆ‚Ÿ< c .Ê š aµZ±ä¢Ù“æjŽ…û³Ø~ÅWsŇmHCMñ9Z²Äs$~Ê¢ãÄ༻YÀ ˜’åÌܘnËôßHÂfÙ­àjl±Ö´t€R•$ÁEA¹ @Iʧ\|CÂ!¸±gŠAˆÑ M£!`Pá1q0ÙñzVm⮜¢WgÖZ¹ÙYÈÎ*0»GCÇDHÙÆÑjBÇ9&BQÁŒ4ëI¦çݼy•4+ê)}%à;•lÒ³³‡"&ãédBœˆCÚÝe?4[ȳq³¹ǵ ÞLã 4Åäß,+4&æe(k&Ê0rè$~& Lç6&²=b#'5}G¨’§áF±\+¢åV\l¤éœ&æž}‹=r2F(/0 ¨#'CÙ?8N~zpîÔÁ©Ýù™Ý“‡µÚR# –£"ÝlDEc9[+¢FQ ‚µÚ2n¯ Hnë~û_ïT³$¸‹Ö?žšt#]\NŠ=þ@C@dBEœä±2ÙÝÒ&ÛŒC¿íU ”ˆ@¹Ã¯Ùz¬§žE[ÈËŽæ3q ’1Þ¾Dš7Ö¤“–Ø@RSÅ~E¨Ø þ«§Kzé'ݾØAÌæ8eÒÄÏ2pÀrc#ÛŒ‘9SÌ'Ñp Ç‚b{©ÙO_r>t"ö¯°Ý“C•;S•;Œõ¸HWáf^3ÝÎ5¥Ê lÚPÜdaA¨n¯KÆQ÷yŸž”sD»j;Í[TÀ· (ViAõêªA•®Ÿ*nVcpn@' ƒBq®Ý5d¶ž¯°qA¬$Yd6÷˜T¹e–~¾*4™MfR¢u‹™òNVÎgw÷¤¸nØÛ$O66@„W—jµZ?lÔ67ÁsÛÌó ƒm7L;û«‚(RÃ÷¥åÉ9ÀD\| ¹qSªAI@º©GÇœêèÔs”;*;N®%}”Ý®´Ê´+uI•“â¢ï Š<̃µbµ¨ñ” I$ I–^`à¨T^¢õgK–’¾ˆÁ[úÃNå(=˜€±–žAÎýÿ`ó¾<‹ÿBCÞ–OoãDƧÝ&Mó§uÛ±=Y±)‹¸à±ãÃ¥Ýt¡+T$X‰S¾ˆnÝ([\®œø ¸ñy@»HpàýkíôSqú”£“Å)ϳ˜“ˉpÞB‰(Ü&íÁ”´³Â•¥/ë¯rYþvcG½yÞ»£<ûdýìvGvÃÀWÛØ*}õkCù#uö—Ú®ÖýåÀPП)Û!‚ï[CÉ>D¾ =BJNn«%Âg:Èï5ȳ7@Dƒ½GJ%ªÝ°V U§¢¢a®Ù_u ß7æcr§T-ün«1Ñ‘‹„£cfqÎYšÖ=bá®Áø»½åØ®«Áy|Ù#NTVþ-ü#óœŒåÚ3¬%U ‡QR†ÑÆ ¸xÊó4&†6NTœUܯÆz—ÚÝ¿¯õYò§íž±lž„¨W–Á¯¦ÊTzV´ï:'îr|Sv¿S6O{ ÈÊ*#°<ËjÈÞê,Ò*§[Xʤ wdx’œgYHU,µ«‹îciÊ£"Ea 3^yöÅä†ÞÞð°srp¸óžº}/aþŒwU¹Vµ·9֞ʋG”Ï™˜÷q€æ¢†"V_=V,ËñòÔ»vàÙÍûÆvë ‘: yšC5iþ“æjýô9Ö²º†Ê‰…¸ák72 bõv³Ù<.Û‰ç·1æJ™üm(M9ò] ìe_¡ü#P.Ö#ndאַ‡!F,p Êyœ±M”…ûd|Þ7ÌN§3lEÌ+ÒE’óv"ýÊÔôæëÒžTöÝ ŠCÈUFP¦±ô°üŠí‚bsÅ;‰)XÁ%‹ÿBCBio-SamTools-1.43/t/data/00README.txt000444001751001751 276212657431424 17060 0ustar00lsteinlstein000000000000The files dm3_3R_4766911_4767130.* are a spliced alignments from an RNASeq experiment (40bp Illumina single end) measuring alternative splicing in fly. They align with chromosome 3R (genome build: dm3) spanning a region holding a small (3nt) exon on the gene 'skap' (CG11963). Some of the spliced alignments join three exons, and cross two introns; the CIGAR lines match /\d+M124N3M91N\d+M/, where the internal 3M is the 3bp exon. and the flanking 124N and 91N are the introns. NOTE: These files were copied from the examples directory in the Samtools distribution version 0.1.3. The original README follows. ORIGINAL 00README.txt File ex1.fa contains two sequences cut from the human genome build36. They were extracted with command: samtools faidx human_b36.fa 2:2043966-2045540 20:67967-69550 Sequence names were changed manually for simplicity. File ex1.sam.gz contains MAQ alignments exatracted with: (samtools view NA18507_maq.bam 2:2044001-2045500; samtools view NA18507_maq.bam 20:68001-69500) and processed with `samtools fixmate' to make it self-consistent as a standalone alignment. To try samtools, you may run the following commands: samtools faidx ex1.fa # index the reference FASTA samtools import ex1.fa.fai ex1.sam.gz ex1.bam # SAM->BAM samtools index ex1.bam # index BAM samtools tview ex1.bam ex1.fa # view alignment samtools pileup -cf ex1.fa ex1.bam # pileup and consensus samtools pileup -cf ex1.fa -t ex1.fa.fai ex1.sam.gz Bio-SamTools-1.43/t/data/ex1.sam.gz000444001751001751 33760512657431424 17107 0ustar00lsteinlstein000000000000‹X†pK¬\ÉŽãJv]ÓßÑ©L%¥,ÆlÒKõÑ‘l?ºñ£g³ð^2ƒqÃIÙtèþyJÉ8ÙNj5‘cX£÷?dÐBF yÀó¡C°†¯ôºühu¹¤KL1¥x¹ÐsÂ=?æwùmAhuAØìñ8>îP7n{\e)gƲÏsc‰ø ­M!¥ƒ pB‡Ö<ñ9SUäIªH.ÛDƒÜ>€L“ ÆB§¹"®[tçþ{¸+`Ì ˆROmeÞDGQ>ݶuÛ ‚HzQìp:p‹2Ji¢m<Ä9zégÖ² ®{þ²H~¶ÅRײ®?ÞLø˜Y ü0_jý\LEÁ´•°#Ä0‡¸*BRƒ)D{)«L¢n¡GïXê™mØ¡á ⟅Zz9r1·è €ßW1µ¤ÚW-ZSpÑQh…HD^ÛÐVÁg€¸ƒ }¼®àç cÅ»àÒþⵆߩ/ærù4î$ks8™zfÕÊ”r1JFIb:3^EMÆö’t•ÓP‰•—ÒUKr¼1œ÷l7¾“"èÎY´5Âá!EcL2çOç~1ê6#áØ,b48£›PR0õ¬SiÀ´ÕsA ÞÞŠ^ãÄK •²5VÒgw>Ïôr‡R´æ%£‰ÚÈaÑuèÉ …¨VáåÏ€2 Q0ár©w“ôW“£¬õ²zâÌ ¦'fâ ãÁ+[rDžQ–ø…ltµ…²wæ£@dL_Dr .^¿dý‘æg´Ý³>ÜÇrÑ»y¹ä>¸•½‹\K­¨¼,Úà]µŠòz•ÔŸ½l¥—*‘íHº¼÷§Ïù&Ïr SŠIÎ^ÊsF†@W¨Ü(Nnò&­ymÙs a‘”Y¯”J­ÿð'qúË_fîÓnr¸Ž #GpM ðå£<'ÑÈf«_E9¸&Æ<»GÝ~|´o©ãÔëFDF/±ð ›=œÙËÔ1 xC:º"JZõè4Û®êÒ!YE´X¾·çy~Ö Tuú¹ ‘¯wDÝÕ\€V³˜ä&†„Ô(˜êù‚Ó'×™õl›Ò‚IV¿9+çÎÞì«]ùè܉4#«ýÔœ, û9Äk&%yÍoÅšŠ¹ ú›€8ßßët~ÇC:Úó¹ž_´ž_ô£!.9¢K¤ òL˜ÜǽÒsæ`E¿¨†ðSô2 á¿€…ºjf'ªšn¾ ˆ±qÉ'§©õÜB7;“%ß¹z ‡†äx¬‰É=ž¨Ä´‰òibL>!xzÂ,/ÞQˆGÈ@ðpzøQÂ1”vD©µ(-^‡ÈÛkOФvÞ.ØdóyÝÁèàjàš]ôš¯ºÍWR•6€Öm¡ü^Æ9½ôaj7Ûñ££uHÍsjìñ¿2 œJlµs5ÐáRzt[=)íÀš»L”ËJw­JÁWÝd2¿ ñÆi“ê%ˆHAØ´íéÍËQ®³v¨%Dé`DUè€2#R,Ð-˜‹½¢¹üžz6ÄoHI„j T=-O;}·[ÄVôS¹¤&ñmk?›Êõ~±€ØÓ½¯ó+öw_^_ußœ¶P0†}ÀFÛŽÝ| u¿…tãúÿB:$»—õþ4$‹¯/êM§$ÞtãŽ;¸¯é²æ ÷Ln/÷¦˜7Qž{ð™ rFòy&©!K-á«›R=›ÏгæT3˺3w00S¿ å_,ˆ€‘Ú¡hInÛQm`m5³äx10P€ËvéÔ ÿ¢þš¹¿Ç9·ïhÖqê %w{6WÕ7QNÜ•2GŽ.!Æ_–糟×ö5)ªjeà'§ã0=`Új!}0Ù/{)ÿ{7"9?Ï•6‡rJ¬#—CåJ yLœ†;gPРj!5Nï÷±„1ÂL¶“nâ··v9ŠJ’ ˜4º1!bO©xÆ$âë}òáDƒW¼X-¨åÓSp¥ºâÕ"ÈÜQÍJA£)iˆ®ÆÏ¹)Îùƒb³:~>?¥›­¼s Mоæ @n Ix–ÎÛÉҋܪx.É ’Ö¾êJ¿^ôâLÅø%‹T¡ š¸m–CÍ8n‰|†X®d0'+šrÑr%Üç|´rbZXxý¤¨¾>iâ°ðJÂ=ÑÔ“a|ÌŽSfv» sÞœ*—ÏfsÌÁÃËì⤮¹ :,½çµÁ»J7¹² óiy$Ô%DGóªk*¥ÁU"·¿¹oâ] …XE6ÿåµ ü~ˆÞÃdžMÇ6†$mRayÜ­ïûØåvŠ¡OLPò Æ¶¤pÜ’¨¨tÕ£¼.É’ŠQ÷‡¥/ž³éã)Æåß9QézêGË ¢2¤«Ü99nL¹²îªµE/@³Hã`P_š4ý®~PÒucê¨Òîi­¡ÒòÎÌU´L.¯£¼“Í* H¼œR²º¯†6ͧhµõ,ï6Û<Ùä>M¿ €õ OiO½s€ØÈΙ-Å¡ÿËC. Ïä¹éCÁFùPE¦vGLiêÅ4ÎSÅecžk®ºÚúã¥mkµOé}N›6é4Ô c–ˆöZR=äPãŠD÷]»ˆ™ø×fÇ@QRÝÌžHܤ¶´Ï÷ Mü‚CJ/ø½xº^.b•©æ24cI´,0y64“½“·Õ6̧ÐÙ|½\ÏÈd–ä-ñ…FQ­œ†& ^ˆ~ævÚ-׌r2Š%¯i“‚:Ôá|®›ã¡Vð<ο”R±mì¸â]½~áûåðýžæ•.S™®Vg"úž‹>އcc­—l­ÕŸv>=*+= žwšh¬ Ál$<#›Î¢LœyEhœÕÊ ^I`xϸϮWKSeD˜ö HX…ÎëË8]¡ê/ூ8P¦nBÿ¾Ô!êæ1©û€ c›h4cêÁ0GclŽ17±†ñ:åAémyœ!·‡9$Ó:ê®®Í)œM/O—iФÕd‡G(cõt•¨S«æ¼sPÏ\„~zžRV9RH'hf}Åé“ëBÒËõÜ ~I=»áAICÂÑé$ã%rÆÖÝeuÝù½\á•äÈ1—õ³—§zÚ‚ BG éš—X;‘"h«XŸU.;ïèìØsæhdQЛ&z5¦æ4G2¢ô¡ÔöWÞFCâ&‡ORû«]h@ìJÑU—ãó^$&N;å@™Vnâ¼=ð_~å^Ä‹Êç+è®óàÛ3 ¾#ê/]rõÇò‹—ëG9;7ytÁ 0a¡ØÊîéKëi äcݰ}xë—«CÊK[“”‡ó²\ (5wýk@³N{“zÈ󸝮üÊ ¶_‚ ’r&·n˜Âhöýõry»ŸuEöغŒ“H>½BÃÏ4Dº ô¾ÐêVþï©y0©í©ÜŸ`r_æ¶Šc£ØÔ gÕâo¢|ÚÕ+•èOŽt;O{Å–’F±­ ewÕ&FDP­½ö¬Ž¿¬½\þÛKü«ýƒ@Š?þx\v¹]<ÌOG‰LRZ¼*1re:NDäÑ–=0C¢*U;Ž2÷^‚-Zà#û­m“3”ž¡,EyºÑ(m›£ºÛµl3 â"oÂÔ¦‘òxl ˆÇæX»¨ëe=‘27Ë(ºmI¬ Çrß(xñÊ…Ì·…t­úm¤iœb¥ñEœ/™ý†ed †`#abÀ“à-sÙråbºí:bYÜc|ý`€Ü¡²y°Eiúô¨Q¹ŽùÐÄ wp6TXîe–QL8WÙ¼ ¤y'ÝÁfàÛ07JBm暯Æî¾.@ûúÀÖƒãÑNÕ“èû˜—§× °¯oMò¥hI™9x°pB0 ~Æ.©7¹sAžýäCì¥ù Ïõ:ËÒ¶¹Ñsó€ÝTgšÙÆx­hýO}ˆŒ\ÁqyÛ܆±C’Èw} š'–’'¾4)¶aNgêÛîÆ^Ó%Ú׊rö‚ ÞiÔ|¤IJÁr´æÊ"`ñ¼\¹]ªîÊ•e\x(6‰ %«WjA»hDµéÔ²ôöÕ¬¢SP‘û掩š¹%0 0©ùHºé:ëa3Dá±\¹o—þdkßP¬”ã6ý íŸ;w­” wªul_/ Š-íìÌÃ4’`ú—aG[Ì›/¹ÏÅ=ÇËòÔH$ò®ã=@ÇTœ5|Ü*Ðm¢ÂXz:¸†X'™„t•ó•nŠ‚º²]òçuŠó;ï±ø®Zp6Õ 2÷Þº&ñAf"&D™ÁÛœ’Ì`YœIXØ„ÌÄËb“$^Ym‰–ÜT–èÅé˜X…[îÆ6äåi g÷¦6ioÚ6Ìke~­ú: UuFëÆ˜F}p®±ÆZëæ½é=œÄQ°§:Åâ&NŠ…Qê±æ-J;p>’¸Ïü ¸\\š·¦wN‰ÎFð çp0‚Á9Œœ·çu çÁ‚súÐ&ëZ­g>޹ý劬|R‘}²urªX¼û;S-y[ž%ïMu±ù´œ©¿ºu²ëO šç)¡Ê/uªI©SçÁ™=HÙTf‘R9Ï_å-ýzú0 ¼“ÞSV õ4°%Åè(dÖy>8W’6`NÂýÄßg×zÀË×ËÛ_‰Ò8 |ªd#hœEž~Î"GÚc]y ù]yvÐÞ™<7†ºÙ —OåÉsœ¼¯$/™Ìö·A²w×"êɯO[?ž02šËåµ"{·Õ&ÈÂ=MŸ!u·ÝùP)ÍR¥y²´C9N½bIræO¢ð§uœß•gý–N®óÞÖrè|m“ü(P–}ZUÔ6ÌÜÒ¢S;RèN™è²zŽuy“ü¦ÙXܧЊŽ9PêÆ–òÈ —gwÚ%5wKÛyH¡OˆI0&ë¨eD»=†¢ BË ¢7Í y¼¢Ñ½@{B?™SÊ|„×KÜ«å¹'ˆ=CÜèòÓm~u“r´ ™RëãÛñýü^ŸNmcíéxlBSǃö¶A¨6‡Cæ}ͬT'“·p‡¨w¹p‡ÄÍ—YT;„×û¡0¯²·ôý)K,ï­pu[͉ӫé¦$ɧ󋿤so6×øI²ÙÛzlÍClר&1cêR£Õs2¯y[ ¡rUíÐÄÕV›r¡ä÷Z‚TZB²iéð?ÖºÔv¬¸ë|tT.*®ØJÙÚç:ïãèD¸³A>êÖÕª~›i¥ž¶‚íSG¤!{Þ ¼t£¹'Rݾ¹-¨·Û‚'*—ÉwåÔox¢ît ªÖRßX&QnI²Ì뮢Ì]˜{Å"ON ¿}Hú¬Óçák6§mìäTéŸVnh‡—ŽÊ4H¦y¶ÑAµƒ1ÑV¯Mf-ånÐÕ¦len½yYØ.~/}3ÆuÍìž:CTvÚ…D‚¿Ñ9LA–Í$3«zýðI‰‘ËuPß3Õãò›I?Põ´sæê^+×q‘ùN’m-]8 c Àéû–Ï…&³ 'y Ÿyü©H—ÃØ¶¦á¬–$£.6·‚AõB°é#Ò¡Lyjï2Ü–Aªý¤}‚vòEçô˜†m‚Ü…sîßû/µ¡¸ú[i{Þ{L¤SiÊ‘r'J'fï´seó±j»@0?SÆNÏäÒ ÞiéL™Ñâ9Ò²ör'Òø¨’üš#•S¤fé4!âq4­ i¿ñd^¬7¬¢é,>¸QóZ`ÞòYH=Lê) ùÆñtÐ$Iwpð¡Çã—J.Ð&ßžÀõõµÐÎå‹…S§;¨>Ê|Üí”çU~ˆ˜FD¥ º&Ð|òæ“m/³kæž¶Ë/—Ÿow¢ýɹr³‰“Ž‹LÓthéŽãKŽiœGZ5ìŠÜWÒ_”xñI#qOÊùxÎ )ËéÔ•swÒÊ:N˜”ýÕ&¯Ç”x¾AëA¤;ÜTÉŒTfùBÑiÊœ>Ûlü%•ëÕtèõ6´R:ð}ööÕÃÌé³V5”m^Ý&ÒK‡ÉZÀhŸ¥Š¨êŽŽ\\µîS¹¾ºTõxE~ußÛØ¯óðXAÒç1Xv«Ö!7Â÷ÈõÙæyºè0%ÚO:ß\²ãÀÚ;,bˆºa0]>ÄXø?Í¿ ™±Zû KNÿ^6nõpWç§ ;xÖÿ£íÏ–#ב­aðš±­¿Œ”8`$©Ý&“õ/ë‹®+ÝŸ÷‹Ær€¤ 0ê|±3%eÖ9Ukcpø¸V6=¶3¬¨.ºEu[Îþàíj— ²ËvðþÔ_Ó¯ä¬â9ûùjnw5+ä@݃߹KìVòÙ:Gxþ}lÿæ^ƒç­lÞ³ ¯Hù$CžU‹$€órøsÿÊd°Âš`ËŽâéÂên—,ûAÍi’!èÃlÒ};Ñ%Ìåê\<¦1Ëá8WŽ.g]ߺÔÙˆi~y§hÖÏJ7¿G­”I†¸÷¶ÁèmŒKHD.î6•`:Ûz¿šª9ä1.Ç‹’ÎÑÎ!à–áù )9¿5ã¥àÇ'Gõ®—åÍýƒÏm†ŸuNŠ÷>hE£AOÖ=±" ˜ªéå# š8ƒpÕ# JÓÂù×ÎoU‚×È Ïù‚±µ¥£Î/~ëÕbšÜ×Þ_z÷y½Þbí£+åÞ2·ë 6+9F@1µÐë* |õ¶Ûd&„…˜ÇË*9ƬõÒ[–£{Ö1f•`Ò#jYÕ)û¹:azB¹¸áíxà‚v#¢\Ư¸ôèZç}À Þx`©Ë‰ƒ„Jwï—"øþ‡¹?á›Zªî–Öô õh&g·õ®‘¸¢€oÁoÔ£ÑÄ])©XÆßò\•ñ |EŒÇ“ôyÏ®eÕ <"-Hf9LÉ­“Ÿ`(£\îÒiàza@ÐI,¯Z'LÓ•a¦wž}ˆ i¯îºO¨@¯mÔîõ8Ä9,|'pFß7‚Š.=• @(Ÿ v¡ßÅœ~«ŠÏ0®ô:vÓó.:-þìyÂL&8ÃÞj7^k©jžE¤´ ð—,qúYÅëfXfwûa•þSÄùÛüóz¹oŸåç——g÷óËËýéå%‰Gãn Ÿ†g%ù `=<¸³¼óͨÆx ˆCd !Å4¤P9væ£.·e8F·p‰ã(µ”Ö ¥Þ‡ûô´ì²Þïý¥]d#‰D¤3à?`ÚE-OõbþSè%”«5žèÀùŸÖ-å¼P5µZMZÞo×KfA;m@µE¾ß!…CÛ]@º3LËý_ǃ”“17æºùàÃd·~ðse¤.Ç‹Yéªg‰úÊÜ¥òÔAÛðÕÀɿɹo‘”.Á<.CjáGxY¸‡×aÌ»îKÏf†–ù$Ý'ƒhÊ`‹•vÞuuT¸h ˜ú\ü˜F.ÉBsT¹V¤ðyçðÔì\=“’VÈ¿…'¤Û½Àl5#œ~¢­çéçòuÊÒ ow‰¤‚*÷Í×¢N~ê=CclûJþq—üµ—þùÄxcÒ8ã;zR¨I³ˆó`A'€×£Ð“Ãuä(%fëÉË;C·¢Î0"Jzz¶Ü6! ßR½Ìì)9dFº w¾ó4.]ÛR‰G±õŒè@>si1wl[¬Lj™ƒÊ4GUÅÉ yéââ |Bô\o0¢e˜ \,~®RFeÈKÙÎŧV5E˜ä’àVß—ÞáÌ uÝÚghA7¤=¿ó.Zzóƒmç0}¿ó¸N^T¡.‡fè!RþÒ;:$FK@áRoÙFÅÏkiÕ\0’â½²”Ó»L|®’hÐ=É èÓ»µíÇέëGÿ1ËøË<<ýŸg¢›j󩃲®ÜíecÖ„8Z:-š$AâOžG¿ Ðßÿ†›î~ýÕðWÝÿ:/çåÏŸ´#QYöÙÆ )Ûx~™”ÀÆãÖŸl9ÑÚ:¤Ýø1¿(O_·|¥p~6½—?8Oà¦Spði¾Þ…É·;$Ñôb”~}G¡òÖ@N_BÃá4×õHx¸G—™4)L^q&~~ÝìP~§(©%r»ê˜WþóêVõFÚ[Á§zÒçKÚícPOd‰©Û¶uŽ3Ÿ&¤‹B”„´¢û÷øOq=¿šÞÏ>÷÷§”U»*¯D–XJôEB3çž IômR¬„r»òÚ·˜y•W¥æN¾|XûâþS™ÊJ=¸˜hu»K|º¥óswPú-इiœÌ•,^9I’#]Ü!Užü®õˆªAêk‹c¸ìª k9)¾ª;·ýþ.Ó²Íç±R7xù¡"Ì<¹2d™ݵJ)‡*&ÚÖ¶8÷~´9ŒÉ2FJæix )}‚Se M”3V‘øìHÀWG¾é*Ã#C¯a§{C•~‡`ý8Ò¨;[Ó(‘å¡Ì(9iŸiÏ.¥žœi’ˆð”dëÉÚµeïàË wL›o?MÂýɺŸR6ýŠœc(ƒ@#]9¿D©~‡Tø3ÚÓ(sÅr]õ;õo¿ï/}MSùޱzÛvÍ­SëÑŠmŒ…Ê’@ÑçÉé'îö_š!ZeƉ%ãd}t ¨ý3÷Ïý{?úR}Ÿ±ùчÚÿ,ôºž|ætnD^P<ðñ\èf \$¦ùCÚ…ìz–y sœêy Ô¬‡.è  ˆÝ§1d|ëóù4Am¼$¨«lÀTðÀI"¨’èEÝ’²Ï~4+wD«û¸:ÁvFìh¢úE ßˆš“3ürŽ,´Ï4@VЇ[¯•/„IÃW´‹_%Ô¾kp†ä¢%#BÀlÀ*ø,z‹¿6—©å–ô½3îÖ£ÙIí¼Ä{hΊ.¤‚³?µæ–?¤Ç¼Å¾"âü{÷â Á’'œæÎT.èþcV¸î§»¼|D3¤êÛ­çåféÇ+Á\&Âq‹hHxÖñ pæ.Õiæ$"/yœ’†­eNt MkÊ.3Á|½M{I;¡—•Ú.²M‘§iÔ© 3›µ§£ÙÓÅ×rÞqJVÔ|϶XK‡×²óÉa¾ááA˜l-±ÄiðY,.츭·MçO¼E¤d@ÿp‘ 6 EÍÿ^2ÜŒš=ä­sï¹&u”œÐ¶çî}‰™æ ‰|f-ôŽ¡¤*JR#ÜO·žîMR|ÓM"oY±”` 6¦9Ð̾1¿w˜.KV.ÌÖýà¶ÞEsR²æ¶AF¼öÍ%˜«•ß7`¢õZ(8*Ý¥Ó¹¹`²Áyw£6FºŽ ;—Êó#ý^rVš»?Œs™þ¢¯UOŸyo9¼Gy—œÊ‡É­(?(m_½¤ô°¶‹=H˜'‘‘îâ³*—òBŒ„ÔH b\¥›"â‡q4åý>Ý»4‰SÅDGÃön5qßÛJµ¡”5(O¬'ÊKÐqs!òÕŒýÖˆEÙ»QÑùä ŠY2èQT.({ÐÙŠBÒIOs{ù9ÊyšN0Ö¼!3VÔ—ÿˆ—³ŸÃΊr¢jQèfD˽‰WTlSXÔ~î_£bï)„><Ö/²µÂ Ñ©T2©|¥vŠ[fF}ÏJïâÕàm&ÚéóÏU{šÓvÚN/.jTº*¨ÍÌ¢â* 5ÚN©ZÀ“åœÎû6·ŠмÙçŠ×çà¼e–éŽ3ZD)ÔaõコSª;'e½Eìè‡î”ê0(ê|<©ÆÈèsï ÒT¦¯YÍ|§’äFJ;‡j¸3ø¢(zq³fb˜xõ7B'Hí?»C¯$Â3¤öë†+öÐc¯)g_ÆùÕ¬Ïû„whÃÌÀ?@žEƒkV9œ^æ}]OÈŠîQe˜ê×Éx¯é3xPVwŸCê8ÕdFÒàØ‘q`ú%ƒêù¾÷+qó9ÌcKO>¾æ½hgmeÁÙMÖf¤ÆØ-â×ÔÉI­l¶‰«H·jñDÎvÈ3›ÐV¿ì{®•è‘æ¶0^©6û¾ ©ÖV»¨Ýbþ3”»Æežrš2²EÂx­•Í»Ó;{ÔVNqºsúé¬|†³àdM+[r"ý¯uE5O…Û /Ãt÷éCOËãt:¶^í1-mB¸·Þ°*pŠõ2µ^5†ù•…™ÿ¨{4)kMü5ºà€ÚQ`°Îð¾ Í_&ÕÓ¨by=W;ªçà„:WO"w¯gI~Ó[Ú€Y+¤ƒ¢g¡Àübe%‰­€gB<ÈߤOÑZ>un9ßà0kZØgMÀ)BÊÞLýö휗–*+b¬f ‘˜©ìTS^Ðm8¹fïÆw⺭oíÜßçç“L©–•V|îÖMì¾ÁÅ|®€+…YúØ 0{™CôÜÍéÓT%°”*Ô1Û¤7‰:Š<Îyú‡å÷†’x þ¼È–&V°×¯xCÍÇ+„uÊ&/“ÌŒýúoçèR TÓ†–4B0IÝÑ$õé‚~çÊ󛿬ÓÕ»ŒN¹ì½ÌÓšžZˆœ'R{¤hÅ+=éž©þõ×-´É§‹ì¸Lè†m¾å±¾ÖßY˜?Mà>ΘÑõ“åO%FU"yr”¼Ӕד,ÔpPF>ZÙ~ À­O¨i÷ ÷¾ŒÓÏ|_›³©TgqöýM–hÿ6ûÄ"±¿t^—p² 4ÔJài3ûÙ†a~¿ôÔ¯ªÖEõhÉx¥Î09IR½TJ.€ŒG“ ÉUºi*xO³U»y Š2ChÍÀ1u¡ò½ô\¥YbhmN~/H³¶i¢Ëôl;¬m:ëŸLÆŠîD£¶ãÙó{$CçÐwÅz>µ>ºÂV¼º:†™µð91ÔæÑŒEr7ÛéìY–öIyÛÈr'ʈÏcÿr½Sp/M·Y%#øjv »´–ßßî@«O5méÏ1ñ‹_NˆûXiÁƒ{G¶ÞN§â~¨¡—³óû˜ ;ül´¹FA›UÚN'ÏÙö]²(¢¬cù»V[®Q,Ç”"õ;ß·ÕHbè_.z:¶2åp–cÏ…‘Î8TI´ì&iV û£í" ¿Kú§M኿OÄ™F7ßÅÑ©÷TŠš²š´ìVñ·¾•~¬|ÂDõ®Ãåì TµgìΠºÿÖ0¿Tõÿ¸ú~<ƒ¨ÉÄŽp¤ ûúo€òBã~Ъª >4ø8+Å`£gt¡ùLQþ¦G5ƒÞ)zh#§ÏhŒd³··|>Àbã{Û”s]OÞõpH‘v-ƒ(|ÞCÜMÂqJíµ-k`îeyÖªŠuÞà¹ïÔh¡(Âiçc yíuýz†Iò™Ù?QΗœ ýx½å~á"u^ö.r¶¼ïŦ©qg¢Ê@ih–lòŽ—t”—¸BRG ÷¬>½Äùr(÷DEðξœîèˆVq;§z7ì2q7jèXpW@ªµÐ/ÄAzŸ¦±Ÿô4vî}Ñ댜Lí×9­#“[RŒXш]R|Fd´2[“Ï<›)³ùåÁµT1pC©¸s4ZŠ¿¾Xgæ£$î}{ÁÕ% w¹ÔsÈ–¡ w´JÒð£Õqࡺ€´¸´H='[Ÿñ¥.鱪G­[\ðú÷ÜNÙ$6iESÆ™ãMŠ~žìޤ *SšHÜ- Š‘5$ÅkOÂ0­\òd ÙÊ’_Í.g5|ª4ŒC‡‡ŸEz‚SÒÀêC^ äïω:ðçd¤œöwªŠç%Uc[­¾àŒ4dõyàs _žçõÓXB7 § ]¾_&NÊ( 1¤¼ïDÝ"¯@¿Ž€~5 oœPcxz^›‰ÂS§ôàΧšWÛ€ªÝ)®¨[R‹šè*çÒažz÷KMK³æ#a>ºÝØñ Í¶:¥¢å¬`%!¶ÉȃÁ‹å¾/"r—lSˆDq‡¤[|÷êKÍpò¤ :Š ’P%”‡m%ê†úƒôšú¤òɦm×¹¥”‹€¥/ ε¿mô…¹¤h[•…"é¸N+rK%{G!xÇüÖsÍqb|­¥1ÕÍÎïÝ“GyF¹,Êvå9ÅDRˆD£ W^Í£úp¿0%À¦‡FY–À4i-‰£ UgÔZÚý¡­ÂIÄ÷F ÌÑâˆ]^÷ªd\¦a0½bœÿ |ƒ?ø@W -;DDçþêÛ˯~“ÂÀå°‚ÖÒëÄ-m«˜óëd; 6ƒ,8’tÎò‹åu:µ9ØÚaÏ-U¡[H&²IèvÎ;s‡b Ê'ì ç2¤è`wÞÒ¹ŠJUŽT0Š]þÜÈÖÇme¤‹$ªù`háò¼BªTºÉEâàE’¾€ñÇ˯… |DÝsy@)ø—ÎÅ% 6Á*rT-5;íag¼ï“ qç@‹ÆcçÅÎÏI_CÝ8M*¾–®§OÒ{Î&Q³ž œ°²ßC2%ûß0 e4vÞxv„š_œ4 e£ á±ßV©ÄCÒ&èþ–bT\Ê@tQå‡ÔyÄå%ýe—Ÿò\†<ÿ·Ž)L"w*·£¼³Át”ý¬Á928Âýs9ZJ^B Oƒêk¶‘Y[[…tᚃ´ zlg‹FÁÑý¨Ý Ÿ”jC*™¤!Á¼­$»ô}›Rný´ß)FŒÔ?ôáuêYÑå€öô4A-ˆÕ:DÏ•—ZMù"ίT´[ƒ6ŸðFQöãr´æé.{D”¤ ÁPrK"o1Mäî„Æ3j#’ž)ÿöÚžMÍÎ0œ«pIO\8È#UíÑff{Ò1¥ázçM^ËÝ&^7”*ܦ"TÒñÏlŸÃ9g\ãË“òÔÀªF´‡b.Í0cñuáì¢x\DéïÒF>ùB\àʘü÷«ÔYÝu󯉅’µÔÅAoÆXm ýß^dc^~HóåBlh»ê ²6ÃX#¨ª÷Ò`{¤?;¤{Ë´pN,—*iµ]X'– rf`!$†0ñÙtÝrH‡a‰Øè§Ò€¦° ãèÄÿGpÍ»(:×Ì]~Ë:NAÙ;ó¿ïÎßú¿?,äV%‰rÛùÉùnâõï0«é¹vŽæü†Æ¯Ißõ,ÁcÈçâ’À6<7}J¼·ÎKÄ:ÔÛ]Ä6]ŽÞЬ»ùå~%» ?ãímj•š&b³ëAcvŸûÉï3ñÜE 5Nk½m·Ä-§Xêº÷™"Œ—Ó’zhüÜ}{¤ß¤ÿÙüóÏô2 ª¬?R}#çm_À[o‘LÃúª@ÌÔïA¯CÇÕk·Ò(cnÇP­Ç¤æ}oÿz3IçÁÝÞæóOœ8ÈØÎ¡jt»žCÕxÝÑc›B+ÖŒãàÙõÈØ„ÆñW¿¸,h…r‡üo«QHçf…÷F[åg"Š07·‡%þ|G÷H8œz»ev ªðJCcLƒ9sMW9œº_WSÓj–QNÓX … ^ ;Ê«=´š1HÃ@.g?%V/—·r·#k±&)j‘ÚXëâ3GDèè|„<‡s¼¥æ‡þ1$b>& stès¶Cÿà69÷s‰CqÒûƒ¿z›­Ðb9svæyåÐýD%§’å˲]njʉê­vW´Ì552Ðàqþ6²yÓç¤}gè´¯Í=Vè¦Qt¤jÁÒIBzhßhM@_ÜŽ;Œ%„'ÛþcC ˆ[‘+—è`sv®Ÿ¬Mm‹ûÔSßmâ—·sÝÜà“î†v¯ó˜Ž|Æâo]F|ïÀ‡å®P§ íc¤Ê‡wçH¿½£ç3ä‘z‡™¦1êë|­t"SW!c’ÓÖ6¹%…Î69ÏuHé3v‹\×Ö^‘šÞùZð Y3k²¤Åö€FŽy×~SqFs:ÐÉ’OK©ê%õ|)ên•óÜæ›{é´S¦¬õ‰y„à!QÜüXΉEÒ-¯@Üܬ˜ÅͼC ØÛvt¡ýHDNóKèƒBÐ *ãå†,ô\¡š¥m¦ÉK>Í4·¨øÈ‚­NC" Eú¿¶åöŠ“:©N‘DPÒÓ6V&“`u ±¦òz^%‰V‡%ÔÒ+Å£Jþ#\G²&YKðÈÜ·³TbìqR "ø’F´O@ùZZZÝ#›ZJ…=ãC"î³ÿ’ò”Sµu+ºœGãmùæDú0i;·ö~9Ç#<_'ØHÐŽa w£" ²¥Ñ¥ ÿFŸi¦oóL?»hûcšº«ë™QÜÎ(/7Zåkòe˜Þ+:êAƒc )ˆÆ/.wøeg˜0W§‰óš9êV“—…­eœ$d2†‘ÿ|1çª÷œ…iÌeÐOûüÎ.ÐhÆPlšó l-C†g/A¹m¨Øm(¥# ëôÛLÏ`áZ—(Y*™ÙК§1ÕñÍã4Æ÷ÕàĤl:æsb«¯œKŒ™dp•yáâ7Õüp9âÏ1Äïu¤SP*=ØÆïìß—Y¼¹¿·Ù0§™(‘I-.Äõ oh‰¡å`yUAöÔQYXNÁFlwp×?MîIÿ˜jZ{n­Jø¤d•ÍIÅ»7_œR†»Eõ,ým´šþLˆ1Ü) …'=¥!YÔJnp„™fp‡À²ž:N¤áÅG ¿XÕ‹!sXGšöÂØ¬¶i°QÃÂJ^&|!ƒôJÏ ·=[(¬MpŒ‹8Ñ $ýñL剎îRÕ|´sÞGaF÷r·ÜÃtVË&…D¨z•PúÔ©nûEohF'¥v^†X­S±^ %=CpdY1Ï‘*éÔ½R­ÌmãYxÝL2¢e¤$õµ%ü/¬èšúŠu|7 &y•ÂU*àt@í´ïO€2©9MÇ%§Ú YPÄè{¯Æ¥ÿjƒ¨OPVqm£!<œ¢|]]!Ê}ù _Ô¹»½§/UÄÒ¤\µ~3“íÞ®<'?ê= e– 8žó=xé9 Tqr_ÁU…ÍÝÞN- v•qþ4KÆ\ÏKÏ‚ˆó‘Õu¾ØŒœ'[Ò~wHû:¤ë 5ÙyÞ]?zyI³ÂŽ * .â¶u¾h©Ûý-VÿuEI«Û=\PBA‚üH×2eÎ(DÑ(V† ‹oCé} ¼S(rã+²Š—ùÁ×Y Ìi…ê!:§<[7H_’*ýúŠRa&¡³ËÏ^#`e.9Ì6?z›† —YúÛ¨VÙ U²cfÛG:è{Cm£†Aå)eÍÚr}—` çy»ØŠF—sÔ…%éyBú£g•f&A|V³¢è·›ÆãùÃÝŠ–½æŒÖø†Ó¦^‰×/¬ç7Þqo ™þàKIúµIзÏCŠÝ$NÖ£œ©¢ž‘"HÚöÜÓDu!È<6"¯ÞPkß²óiØŒœ‚ø¼­ÁÙ¬­þ³ý„k%>ìÇõÉè…oÙ`p˜ˆïrðN³¢ôá¥FECòM¶-’©W™e1-G âÀv`CÑÑ–û¤C¯+÷üYÌ´‘JíOfŃ„zPœUb”‘ßd"¿IxÎ2Nê³õç’Ó!d Ö' é@Hzölœ‹¥”C«ªpîWÑ£GÒzÄñÙ¦ž˜¶{«Qæä·½OÞMãY…Îq~/4ÖàŠ }@§õÛ4ÉP§ïfMâ8Æ]M':í—H"¹‹Dæ9HgâÅŸûݘéo¾oÌx¸ï}Ì—Ñvƒéùª&}LÉò œø¨·ÖŸÎï0wˆ‘êÅÛY¼û]n_4?eº´Û©l äUž@¡Ð»ÌÍ’q§rÙu¥ÂøGæ6m¸`[ôå]gñêOÚ ,O—s}1´ƒTbËòLœGF™Þs@þ§m)'_šÐÆÅʽë®Ûvó“ ëIŒ‹(—â '8Z·{iåIÛ–ËÕÌœ öf?-ä=[C_ƒµA‰uR#ÅÆJðw~mJR¡5[¤©{ *ˆèAâ8{"êp Çy—þ<´óå°“š·ˆØ"áÐmÂ/‚3)#긺ç—)>°˜ã¾ 3T³:ãž#ôî1Š;Áyd0ÏKÔÀ%” =KšÆ™Çû¾y©®‚Ms~½ówA’n] døWY³!tãÛ «ÞKlå'nÆi°Î8‰öò]JÜö[@°¨Øê$zﺦæþ­ì#iPÍq&”’`äÒ³­çÞHlAÈTÂùµh9î>ÓšÝ wÖp¥R¸‹i’œ:*®^O¡’J4îŠk/‡»Ëª™ `_nv§ñ)Ml<ÎeüÐho‚²S P1Ç©›ðÒÛ# •Ši;ÍûÕ8ÅX± ‡”± !3Œ€ÌF£âý‘¶†\®{Y¯ø2v'ñ½å@QgÈ€JÒQ)c¤ú1 ŸrTr†×E<À7¾ÏÖ¾JOÏTªíXäÅò£Ûaå,>Ðø #ÅàÙ›òhç;ªA½Ì-M%¸5•(Óýñv·ªæ ‚K€b,¼óÒ»øÖ,S{¨òêÚg|OÞÓ­º@ gT‡¿´÷_¿Íûôþ>LæÝP*bò¤M›–7êM—íi(8@ªb@W–ä~iÏëÊÖÇÎ5Kº Zo”œG˜aü;ëþïóË”džîj•Û{âX'7ßÅÍLZEºµµíš3AÅÖYÕÒb_ŸÛúK­×ygoPñøtî)UCÇ”ÉÌ+4EQƒã5Ëåß(ÿÍsµóþ̤L—¶ºUäLmÿ?É*éQ!6ÜMéÅ΢šCÌ_luEÂgÛ1ó |­B6RQ¿†²‚:·ƒ 7b•ô’4í[DúKdû—›´¾cÆ{YãéêP†ºtëtŸH”œu[F¤cг² êùqÍA-+’f½Ùþ+þt[ßø9P·¨Á&ˆé]GêZŸ= PÊhMT "7jÊ,Þ­ÂÓb’w £[šF6’¿ý â‹UÔ]“?§ïw%®Iwn9ý“N©[Ç(ƒs £);vx¢Ç_'zû ÿÓ$IžØßË>¨•;ê úGûQ³¼™gœ f“ªjÙ¤þì²güÚãò½b²v' R—Ié|Ò9U˜ÇiYº ÄÁí mqiIHsšcÝ{fqËf5#¼Pº­m[ºóYŠ2Ðð^mUÈmr~ûéò1ðXÚѨër¤‘c Ë@ý˜Ä©êçõëŸ*Ü-çZu£U¬(1°GUwšbÕòQýi‚\)¾Ð¯ŸÝÚŠ ÇqL€ºVtæBL»E]t3©cÞ‡’YÐ÷.Ýj»›ð4Lsè1t×*MòŸ‡Õ9ÙÏõ6 ¬ÍšK˜r¼ç"ªéÚ´XåÞ-úN4*».Fµ¬ ÊÕ_Ur,cmiäF„Ù¦÷ùî,«˜Ä±›2TÛÕX ])fYÏñÑÕ`…ÌÉw£>Ì8¾Ø—áå/†„Gû2/ü|œ.°=b'€è.Ä´9_¢tÖÔêår9ëEíeÀ ±YÜ].zsŸM{9n—‹­GI Îõn1‘iÎo•_Øæß?ÿý÷þé¾PÒììÁ¿ Hýp×êCºXó­¿Üÿ4ázH¨»XаQa·ÂÌZõmЄ+ã̳fðOZ—¬!A7‚;±¨ôóRo„³ ýÚåƒzªJ6ó€ Xº;º¾CÞwT\ P ž¥V}²*®¨{ý§µýµÎZUsäÆÂ䫱Šbüš„É=Ò¯3¤á‘ßh{Úª t9»ߦ®?´«Š&Å¡dd³wÿ­Ï©—”U}vQêØ´î}i ‚Ž*ï‹•Î3Q›ýËæSÇéŠó'ƉÕnnw4–»aºß¬ÅŠN¢æ^ùU~u¡kŠÝû„«4Ö~fü¤¬«PF“lA%7P¾O®hô$0"ê çªËÙ?´ì;ã$I•^[£Š(R±žQõç?%œ`(õ$ˆ[šb§±›o˜JLþž$ÀÁìH²#¹Ò *OPk&‹Hw½]¹¼ÕÕɬ5ñãüi„·¥¼$ÅÖâejK—éaÿ1f××U˜‹NŒ‹ý ÂZ·#”8ºä\F_þ‘HuÒ,ZÅŠÑަsz3ŒàCØÞzNꥉªoÊ8‰'A?=ß»©³oWû϶iQ´%©v>9Uê•$²F@¿Î€Âáo½„îL!3ôÀR¯útüE=öH¢ÈÁH6Ö­çTZ ^5Åõä%,èk`%“¸D•(MŠ£“Ï-&òZõ@{㧯Ý(›|§>Z§)2 y/ê<–½ôÒýÜ­–iðy ̟ߘßß ©Ó·ûíöqûøÐƒø©­sôqj’_Ƴ¢L›¼JkcóG‰¤'?Ý&žè‹É€ZÏÑrþN÷¬“OÓôŠî~‚ÞÞó³èç[{úèÜkPC„Ô:ø¨ñ+gŸÜ+j9PÍÃgKã­çÛþBð×–ëá~| =Èû«”Ók:?Z¡x” ×±kÏ )dìÞh„ð7°yâünþþÕ?¦¿ÝŸV"Ø ew^<ñŽÊ\{»y™¡· …à¼çÖ½KÐÖ4¬ÂË‘š¿æWiçÏîs¾M·LJô™²Ž jŠ˜dïbË Qé@ƒ¤R.®èO#Æ··[ëö‰®»ö[ÓÜÕCê {“z]KÙ⨼\i PŒAHuÔ^ï,·÷åÆSvÆ]BdËï¼lœ­ Érrô<ÏlÀø“Lj¸þïüwv/‡»ô‹Bõ¾Ã'ÿ4ÅN~\{ò j[gé5)}oG”ÅõÚùbD£y¾”Ä9zzÛá–¤buO}ªH¾­(êmP’*ã9ª™H0r;éŠ^÷ñ÷Z¡Y Ð ¥t>uûÿuô6è÷á6 _¼Ooy_ŸÍ2üŒJÎJ†¯1¥G´må—Ô(ïæÕ,© ají§3=MÎwÛ§Ÿväe.¨•\ òÄ=šºx0‰õ4‘«Q¹áæÉ! Gaz`Ê $ñ;1¾!iãåtuƒí}¿qçO3S7}šÏi¼“ÅŸnD}}¢)Qˆö”ÈU°ùš{Î*Åw¬BV0öHïó»Ûú÷÷Ù=Miò©0AúÎzßlÒ»àNóèN§/}74e”Qd8¦Ç ɇÉá2P­¾§ÊUè{eK¶ù¿øf)Aý‚ÅÐ˔ؓ€~ú)ÁZvð}n1H1Š–÷ðp¶:-Ūqó+hò­ÈQ¾ÑÛ'kí{ê•Tr[ /ÈGø‚ò.nÓ‡G´ˆó§yR÷yº+æ:g¶ڥ˛X Ô»ˆVq³£œRo°AªãÄÒ˜_ÍŸû§Rîúçè¾t³ôW½;ºõIý&Ç&7‚Œ|㣜Žõ‘]ÎõÅ|¶Ú½ìn¿T;÷A¿ ú>#'—ò;W‰¯BÛ *–àtW‹Ã”ž; ò8e– µö•®(‘>º+¯À ¶¹NNÕù“œñæúGƒÄh®lWAóK¹<„³Àvðø3¢ÓCã¤Ê0ÎKû~#JµÛ¶ŒGר¢h·1Þî;ç Ô4E˜ÎØ»“8έ1¨Øl…'@«8¥Ÿ}3$Ì)üí„r20­¼n}ç–]ŠËÀèb‘AArÐ}>TB U¦5ñ&Œ¾¹ÃI”ŸÛ` éS£õ0“Ëão†õ§y¸ “ìç}¼ÑBÞ°Ö"#R·‰hõóëæ÷oóôùÑÝ?oãçm¥ŠIÙbò/Òâ2÷‡©Qšt7ÆE¡ë‚4ÑÓ©ˆÑ½¸žùö‡(ï$ÇkAH˜ÔP¸ð Z†·À~5ŸGÒª¦ˆñ7/·¼Àç ÃzÕ„f¤lÙ•g/„m×`©µ‘·fºg/óNh@ANJak“* ðFfÕZÃe©} R³¦ÓÂ@ßà C}”‰L)—Ê®ý"(êåNZÒÈR¤¾¡ÌR[ƒ”~>|D ¼7[#ˆo®€¥€×Ûls ‡´Œ—aUá÷ä¾Ú·Ï%yúGrO”w”0ûÔ-€‚Æ T¿U@)FƯu¤,×ÍïoÓ|OY*øëèZ¡ùÉ~ &H0sF@ç`y ‚ò8MRæìbV'$É<;˜jÑL̃PN ˆ¸¾3ª©9¦9úÏydrlÆ8—þ¹WŠE0KØ;§‹/('°Ãü^ü ¹Ž¼ÓªŽg´[DíÞ c  8ûÔJùPäÒµg5ð•éä± †_„1Ë‹sú:MäK²)ƒ<0NÓjûÝ+:&U«IIGTBëlºè€q(ÊÊ ×·½’=¢ `dA·‡@Õê;KÆ™½ ýZþFH]¬ù$>IÿÐ#‚P¯gúAߦ)ƒ´Ç‡»\gÁ2ðŠöL©°¶òhQ-ØòûÇw?’ ¼7-ÝŽÈ–€.Fò»9{}õ2L*0®WçÍýÁùËD»5IÍÔhÅÉŠ¾l=äf ×K>öŽŽ(ÛÚüãyÖ:œ‘í^Ã9¥:p†ºóõü˜¨=+^ÑÉèþh9—päØ)õÆÞPMÄö"V“œÄN+ï“–÷=ŽÄ›.÷Ò«EêBO”ß¹ÇÞ¾Œl¯ˆô­·Me”?M‰Êèêñd$A°¢Õ›(pâH5Qí©J ´lË:.82Û¿ÈŒ0 ½¤·ID£ø6-2Á©CºnuèÜ­ï#¹§D |»J¼çi°žÖ¦ ó‘yÑš¦i)¥‘)EDµlëmâÚ/9ÜPz!ŸÙ»NƒcŸÚ˜ÞH9Hù÷²#%P;D¢42!…óäìß½¤4EžŽŠÔ"± äKGÁ%aUË«v."Áøe'ç÷ÓËÔ;¶ïÊ™–T<$èbxo{Tô2 µW 5%óôÀûipFõ€A¦Q˜ÍiVœbOëÀ¥|’¡¹}ýCã<窵µ´+Š˜Á d±‡Láw]Q‘¡ 3ó$MÓ}ãƒÛ'žÊƒ×«^— €Nñɰx5mO-D®füÙ­))ƒÀÌ}Ñp–c˜¼dÆ¥ ÇÈïUÇãà£æ/T…gl ÈäuRóÓÉïÝÕÝamzj@ïJ]ž¶Z µ ×3¦£ò’YWTóË®ýhPè·ûÿ¢ž;âhÍ®ÀV½L´\ízXôÏ\8Á‘è¶ëÄxvº eñ|>¢uI×Hþ€4?žLôÒ"Ô”SÀø•ƒÉ(gŸÊISŒ•µƒ°W{݃AÀ‰×½#šÊÌÓ„˜„îvÃ65÷: ¨í¡?°%™gô×}¨Á™d˜×Ò¢–ØezÚ­’ UT¾-_Ð(Ö:ÍÖ3LZ{¸`ÔM—“óèJ’ÈèZ ®HÖµ³M «W)çëé·}²œxã±”Cü]Kókß~ÉWU4A½§€òøQÒøÓ¡w(,uÙvkÂT‰¶„Ä·K8¿ÝÚ»°Ê/œ×$Œ/D²¢½¦ª1[ß r” Y-[ÏÈ©×^”³€ñëןÒiË‚rÖŠÉ_ýt€©šŠ¾\TçL)Úì·óÙG÷Þ7¸•q>bí«ämò-—RœTMq:é/—@~…‰êé,šp¢Ú !G*µqN…ªP«G_„º!ãïãÔ ™K¨¢`5U‹j-_Ñ~³kÊ(¿R[§ÆðÏ÷§Oû)ãðsÚ¾kiÕPS’4ƒ·~{Å9Õ Àg¾’þù]…¢Ï4#]xç¡ àοÊ#aȲÃÎX¾´Ìâ‹!ˆ…W`n&9M7^™VJ•ü ¨ˆ>‡fJ;§”ˆ·Ãªv§€ZÚK‹Û¨7cÜÕd&ã„R(*kDKJOý¾q°NÜCáur;CœjÜîsº*!;^+NAÓãä´ƒ±ý |º]^…¾“ìÄr÷™Àú* çÉë¿|ÿ×pVÕ™ÕV+nú£7 Í T*_«MŽ÷cùAáIÛoð¹:½ˆ.òö`C öV Qœ÷I[è¿ KI'¼«;Ò¯j1g¬Œ”£`ü1Löt}¦;¨ï>1 =Vò¡ufÛ«s$îXº[j¿œb‰îPZ*ã,œNkÕÓ%”aËõH´é¾‹hƒÈÞ&¦¥âJ$È:_ne÷O“D¿‹–hÊàÈõ“éõ:Týýú)®¨Ç«{•Š$Uª& hgœÃ§,+Ø)ÎL&ˆ™¦¥ ËÞ¦×ÂþµÚ“Ò*XÔ6ØÕµþH‘žF,1Ïà.¾ad?PÓ…¨©gæ¢3ó¬iÚ£`×»›„áZÍÈ“"œÄZbûÇpnœXáûþÖW±Ò¤"²ëó9°ð€~¼|N†öÊ'š±M™ôá¤ÛëÄç¡jµÔ@ËP±îš'«'LÌ2-5ÑãÆ¼šD®³¢(Þ´ ¨à¹{š®%…¤ókÿã6¿g3PfÙÒW~úÌ^ÀzÕ˜zžÕº;¯©R»¡D0ºÔèe Î^@þ¿;fKUï¶w[~Ÿï·ø) ÷)iÐqƒFL™v¤…È¡n Š)`(ù”×ó×ùxƹyJ‘¤äHŽsArªJ3˜TbPîú±)gÍ2¢)£\.½fô^ÎeöÜÙV9óçžÿÇRe±üúfî9gÄ}[{èWó§›ì(ÏhÍÚCàÙ>unçk’%þY¢öViÑkÊ€ò;/û%d*ÀtKŠÙ%µ2i·Éwå¬DO—ͽKT‹Ö9¤–§ó„J|”Š8Ò%˜U +ÓŽÙ»~ÔýÄð{€Sãß²¢à¤®Ñ›[M‰6"½³Mu,ô=Q^’Qp>GÅ)³Ì`‚¼df.ñ˜LVïÕ|Ê J“Ê“¨€+¯gÅEÎñ_aHeJ“¸­4¶a­›óïÑ”eÌÖ÷áôWi*NÀ3ù6¼šÆÁŠòMGyGáþo;¸£ìÊK&é ˆ'•…K0‘&I[0$Hd–þár‡Q꼆÷ˆÑþíŒÊ(5A£·õ Ó~~޳ûí¢f{9¤÷Í×ÃH’ÇXWæŒr˜Xl*/VÀä—ÝÿÆœÀH¸ÞõK bu³Êh#q¿+:¸¨©ï˜}£—†Qü¡mjvݸÇ2ô  ‡{JxƒA;Œ†al›— àÉ盚5<ÛàÁG‡OXEÛoÖÆØ€j}¯ùõàùYgOÅ:Íp)Oyù¯sÌPC˜AÀh»ÞyO†_ŽÔr^`%ÐDì‚øxHÎV Ôšó–Hq˜¿-©¤"‚­BªÜö˜ÑÝV=ØqºÛqôîåÖ”ýÒ) V­4“-Zd¾ºn·¦!±Ð¢ÆYuIðŸÐÂ.(~"ÉN“Ȥ*sŸ:>£qG„Wì \ø,HGœa·‘‰”ühê©€›˜È[b*Ýú~v×'»X (šÃßÀ˜Tƒt óüzW–9ºX•‰:ç¹;;àœ£aà…$NƒGÎ;2Þ é'І»ó:BÒp ¤ÂÓ1ÐútaÇÞ!–&2‘×Òdbù˜¦œL–uÔìõÒqÀÙÓó8øFËuE9šð,S4DuŽóç«yñW逻'·õåÇ''eA]µÌ!lîuYÊP›¿Ïé㿽ü}~yþë~=??ß_Ý÷¿/¯ bË3µG,>±l(ÃÊ¢LˆˆRn©4ŸKŸƒËîQ÷?Hц}‰À‰_)«¸³¾\)ãÛÁ’oÀüÌï_*­ghžî÷?î÷ûóëýõþrw_^_ß^_^î¯o··×ûÛým!j]¹™Ã’ê 2©0GgÁØ ÆVqr$£zO‚y¾ž¿?‡ct“ mΠÚËaQNõj}UÓ€œÔ©^RÇø¯óå»¶²bœj¯Âœiͨʋìy7È–?¡5¼qCœLJ5s`kôN•¦aJŒÕ!…Dzàœ|È`œÃþå…ÍqžOk!™x]R‡¾Öµ">ŠÁXqoKG©P ¯CÚ›Þl„3ãH_§èóH»^šgè1÷)9Ò4ÇŠŠ³ ¶Wp!N¨q[j _þ;¤ôõ:‚èáfU3]^AT¨XÓªKE1ü§¼(ù¹ÿ\ åý B%çWý&x¢tšd$®œ ˜ËÑÜ®Ôî}„Ç þ?Ð GëÉqZíý©zœ[\©ØùxHÝ€ÏÝ%½.§h†…Wh›âïâZL“öÁBO7ûþÞMê&f-åÔMÙèx‘cÈr§» á1ýôKj¿¤pG±CŠF|ûÁ/w>µ >mÿ©û÷Ï»|ŧmmÿôôÞßžnZýç} ×–Z„*áEÄ¹í¤¤q>åí÷$v¾h~–}üb‹ôK‹ôûÛÜéóžžðˆ³Ïýœ8Gñ;žHÖ²&eÜaŒMñœ¡fl†è„Hùýô¸ýDl:˜n_$’ÄgëÂÍû8§Ïxœ¡)^MÁº¬6wƒ3õLHRøV€ùýÂ7…P­÷Í_Óç»<Éûç ¸êr¬áû€ #É€kÞ ÈbüÜ÷ÐW ýx7ÂôÖN· üÓÂ5›6®QU×äjB ß¼ßþ4Mêý€"vqP—‰ƒ‚Jqg\ÙhNŧ̰Ûx™…/§ Úß§·x:CÁ—?¢Ô¡ÿK¸à²mGÌL0 ¼·Æv‹TÂéü‹Iò6Ov§V­²Ëé÷Õ³t7j]Üжvy–P‡…äcfëcœ‹–ÒÒÿá¾ëù¯oš©6ˆôƒ^Ú3¢Øœ”îf¡xº’aŒ·°¨à®§ö…³1îäÞ—Û)i”³§ÙC‘Ò–gì#¤]çµjÚ~¬U9˜ÔàôЈ)•sÝJà >O*R^‰äóJ¿çYΓT?9§Y•½ î>õJºÑmR|ß[–«+ýzÏá;Z¾MuZ†TóHÐP+ý&Îu÷jý2¦Šo#³æú XZÿ;¢ké]HÒÄÆ…NHå²4-oƒD‚þxAŸí«XÐàϵ9èò(Š÷ò OFtëÏZN§æ,áÙ¦3éVSy˜KCˆ¬‚äö{$®³ÕV·Ü€†ÑÊï#”»:m_'ßb“æŽ+3Áv5øFogè9‹µæ(~ûÚáéJþ¦v~"5ÒEä}ÊÒ9€)s}y5UÐrvä²k8PÞ4`»ÆS •p:yfsÞˆÏ`U}¿ t/C¹^ø¦lÎSÔ=žµ¼7±H.ƒÊK[bãÑæÏ&t›ö…¡™t×å¿™,ÔÔ6¥§âóëïXÿ„è}êél9Ié×SÊ€"õà¶ÝìƒfYÖ ‘G/ëª £CºYRÆ„·Š¦<ŠË‰f‘‰_¡ƒÏÕ‘©Ð%ØC„ÖE"†ÏjN6áíS'š¤Ÿês ‚ý´CðñŠö^á䓾K  “®ýß“Å|À’n»/Fë)ØÙ¶½ï{´ —©Œó»ñœ7g-m×åó>F´_`äC²ÑP]Q·~è÷’tÞúý×ê&sM;é”yYIJ¾'žIï¼|‹$É(GÊʶ¶í—<Ééz‰„ æg”ônMëÆySåñmû¹-%6œŽTh‹H•3ìôsà²ÓÉfWŠGÍ4—B%¤_ †Ž'xûÈ8Z=gºÿ••3RîC«Å‡.uHµ™Ì$4ÕzLήû?Ó¬çc‚”Ä5–!X«(ÐãH‘;%±dôë(_»·š«/*2Kâ’äî¼NL]s´ ôçÿüç›Ù–qÓ©½ûoªÕí›}jŸìüÏ?ò¹M(Naß!zò#œ"D¤ðPÀ‚Ũ[§^ß§Ö—GÐûþù:Ùùïæþç6~ÜŸ„úú¦»j†ðþToܥܽO‹‘q_InB@=|SÞ ª9ß„m5 Ïè÷Þ/Ýe‘ê&kS´Z*óÈÐt+ÔPò –üÐ)hRúk•Q/);¦5ÒíÚ¼Yií‹0¿­Ü«nÎŒ(5´îO7¥Ö¯Æý£TÞâkû” J8©0Ú{„Ôž«#¤ßéüöôtïSoìüöæö 3“¾ý2J+ÛW4êˆIµü˜JþØ! U@éÒiq>ùéT³UÃ?°»œ1Ù+¿±åÙR¢q/J PåͧsõÌ»ƒ÷¼Þýísµj§T¶]%æãC ì ÏR¤Û÷MÓsZ¾Œsâ•^Íêù‡ƒïn½t‘“à–T»xi½Km˜”H¿W¤¿{¤óüçïŸy~_ýP™ÖHòÍZ!rrüdŸÐƒóé.TÇ“P.Z ¢¶o‘:Bº_Ò¯o4W—4#’½OÁ§XYâÏQÒØ;ƒ£óHæçMæì"úÐG8À4A8q‚m;÷F;Er¼ˆñ7(y=»êè‹ÿãËËËpñ¶g·µä¾ˆ6>?Vsò¼T_°žÕ"\î-]Î{«ê‚.wYF÷†²Ô-—.™gâÑm, >1•¾8#V´ž˜ï ¦ÿFûnýìýíõcþXlÔí6ÿŸé%Ý÷XìÍ\÷D.—]wÞ@jD :,.¨ ç§Ñ³×ëüÚoýƒª©)ÖÐBj´ï©ÀêþÊ~CvЈnSx…ªPWMÀ)%¹ìž›|^jeS§š °±Kâû5¦Ðo”,nù—©4Ý+R²uåéqRwF'Ì/M‰œ"½OZÿqáÈm$Íi|Trò~ÞÉšÕø=ÀêÏ€ÜVõë«™•z ¢_k·N örçÆ¦À Ç…ÉL•O: oS•íË'µ¹= Ã_ÕNoïinäexs[ÞbåÜÏáÈbÞѧóh$¹sH\,ÊãPÕíl?qÆïSêÑ—¯R­ò“w˜q᡽â>Ô`©àTº¹z¼ÉîÈMyûaÿB "DÌ=¦bp0¹FV‚%Ê0Õ%ÚȯŸƒDï‚k§ËIçœ<ázFUtñÃeú%FŠœÔ±s›¹þByïûb힢&¨Ø £„x‘en”bU1_"¤(,çÒY¥ÔÒO’ŸÙÚwJ%ÏmOåРÁ”n j’¤ö¾¨9¯0gô=ovë# Æ{Ï5@QÛ"Ï ¯b>4TÛ`rÂÕ*š"HŒ5a‡ûP os(¯oüâïip²ÚQžG›ë¢jåÐøfgõç×ï· |¸`DÛ逾‹Ù¾‹ûûýï œ³ó}h7èÛå^ý';ÿI(SöXr:mš~Êi¼²%í6‘Wiƒð­èÏÉŠâ.!x„YjñŸzïý‡A¢|X\S‘iËÎI­—)0;Ð 9#Ï?RÚúïæµ ýû ‰~lë÷BÙl=‡$$!©ìHÓ½í,¦Ý¦ ¾˜¬#ûX—r[Ï©õîs Ò‰ÓƒoïÑ´ýñ±þÜXc‰-) í¡¸DÔÖeœ¤¸xíÓåé»À>ÔõÃh­q·%ótÝž4÷úsòü±î·žŽÂûªwžd«,è÷äŽgEÍ.§¡¹™&ίEMz=‹@~›ƒA¦“_É7Ú“6¥ËTV4gW°èÚÒ@Yɲ͞¢äsÛß ݧdAkÜ&?(d<͘íYšŒ³€ÀSЦŒÒ]#?\·hµ«ó¬Zø&âC¥­ÃeF¼½f Ûu¬no^µ¦ ÔlfÓŸÒq Güú€„A¢¡¹^#ÃâNp.ÐÙ,ƒt0Û)¨+$ïЉ¯´Ÿ±˜w •¹"}Ô¦r‘›W&¤Á‚ÎFuï "Zk]çþr•"%âl;†úµ@½Ó%qˆ… @…ßÔüÜž—Á2îòÒ˜å–S_Ù¬='V°Rx¥×ŠÍwH^¼`Íj¡^fiâç¥3ókŸªO³UiL‡ž—"N´á¿Ëw·í«è´ˆŽé´?¤Uô¢;å¯í”r¤= ´õUHMwHG(/à°úü(˜ñÈÙKКyTD“-©æ³ ÖEœPOÅàDóaCï×ÑÇHë­ºšjΨ2 Œ€Á]p~gqRÉ¥»›Á®{CHÿ?ÿ6oI\ê…ëŽ&­n• qkN Œ¶©õ‡XimÑ’­¥¡„}º UÿU ^ê>c4”7Øyå@[ê€)ПP ‘ó4†j^Dü”*â<~¢`Ómé'®œ}°¢­^rãåE9ÄD7¾´ª“p'ûº®¨åù§>t–qÒØHés5p žé€‡ Œqh¹³H}bèë*¬¨˜Í¡^Àu²ÖŒضùœ¶Â`dUË@¿5CÚ}¶­ø¤Õ„ Ý 1`9gŽ-ÔXR„Y£øû'ó¤bÕ×4+>Ûdûô=å[q9æ½¹o;•x6ç(­SažvZ;NîDCD•d«Š0œ}{{¸"ðt·Ÿî{…Ï—“&eG”' zª‹ôMéOAZºãëµw|/ùÉpÊÝËd›2̟ƽùz“l÷)L” â'˜¸מã4Ü?iCw^$f^uÞž]¦ËS·p¤Ìè¾hÑè&™4¸ïuÌ…z´æCJ;y ²óW©(Ýsú8]ívÄ;ÿÿ|-jõD zäóÅp·#ßVÁµ¡îû4¾9„[Sõ"-‚Ò;Ò´Ìâó91L[0ÓPƳá`’žäüùi(ó¨íççû§ü+óT镲&ë}2-3ùHN¼¹p¨~Ž×ò3¢oÓýþ¬æsŸnómi, J{ŠþtÚ¢—ë.Ê)´,;€_R“{ÛvHI¡ïã8ÊÉ¢üpsQé[¾ßàrŽ/ÄR Àt3ëÓ4íÀ_}³IÊœãÍ¿úãèÆ¼¨I¥bϵŸÀ¥’Г°ýPÓù’ø#@Épš˜ËêéK"f4­`(yR„áâæ¯‰Hû™4ëÉÏÉzíµ[þæ7xîMEÂÀÙc½%1Pë…y*N)eøÔ_L2¯n=saf£æájR¢ïÛÿ¡m·àï:y´žÎóCÁéæ7‡y`ìûõÌ ÍF:Êz4N„l3‚#ÓØ‚²äI×b<|Àœ`ñÚï:žM8žj£ûüÓ&˜ëÚ›)åT0Ȧú.÷S»„¡'gœfù6?M»{T'¬˜Jj®¦4*”o…¨Jê[KªLóª¸y¨ð0Àn©í±¶Ú˜é¸a²KûS fBRæ¿…Ñðíïø(+Ø=÷J•lë¹—/[ï=—~5­ãóŸ³ö·ËÞsF@}ÛzÁ^Q:£$ ^ »Ÿ¦—æcœµdÝäË¡5fz2L4¨6d‹0J²# «ß¶MX.ÈB“”tFå“ô­ï2™Á’OgG€{¦CðL+Vµ±­ƒhA²î‰šÄçÈ gþëÕõäŽô@ &D Õ²eåõ\°6òØc å?{ غþ µmI”¥³†=SåÆßYTÿšÃz 2$§ÿ¤z|u iŒ5»HjP4,η çÚ±´´¤\zžæ ež«¾%+Žwh{Ía‚Aw{N1Q@”@G0¿=Llþ4¿;ÛwgLí<Úî.„~·¯­¸¹ÿž§×tf°<)¼zRÐývWªWhŸ˜ïñ¯æ¡ò3>øëÄÞüWÒ¶ÿt©ñ™è¤´óí‰tòÙýÒ2A€ñî„B˜^mâVýº’ùù4ŽUù醦 Iâ,%Ó쪪eD`È©wÆÔ2~gÉ‹¼Ã׉z¤ìãýÑ›{aÇùYO¨ø\¯–í„××”“¬(Ò7õ/‡Ñª‰6ò±%3Qb/…²#z¬»,’)Þ'ÎBYê,,âünÐЉ§xæzýéÚМ¨FjØØsÍ #[?ÅÊ)À¯ÐÅ‘`JÚÉÍ0^D3êÛÆóÇ^ÏZSÆIÞu’  ]ïÚ"ý]w…ºXÑÐ ñÓi=Ÿ{ä/ BòfIJ¨fÖï(’OZ߯?s*e;Ä­¹"žïyvo¦ì=M] up;¥àâz–`OC¼bùNÃe»G¿[…´Íà Nå7ér¥(›wénÒý>Íæ}º{þŠ\t&íÍŽ™:“atEÔ¡ÜQá‰=Á¯¼ UzÑ×ÓÑέš ó:ˆšoæYÿ]sv­6d,g½Þ¥¨§©ê¢ø`>¥„]¦™ç##ZE§Gô¹r´ƒpƉqҢ눿J©¸”qØÒýš>аGJH– ½a‘b’žÓt̨aUN ‘'ŠVr1pYÄ=âÝ”qž]{¼U£;»©@BYƒˆ³ÁÒR熰, " iÿ[ G{_ŵ°“bØ´† ‘ã[ÞÔŸ<ÔŸf4†™ÔÜEE²ìNžÉ€?’gÃ˹ÝÏyø¡'NkRëƒBÛÿ(³ p_uÌ®é×ôg îäq»!$"ç×óÌÄœvk"V[ߌo‹’Ò×ó {OåÑñsœ"ï®èéUШ&"xlïy7 )ƒ¢)ªDŠè~4¹9—2òÚé¶ŽxiF™N‚ጠî½ïi¢¹¢–Ëgævž>#Q(§±HE,ë‘"QH“Dn g†èZÑ-IòSŒì|z³Éjâ“¥˜é}2ÕuëF¢—Û¶.åý€0ˆ“K(Ý•7‚,(&IØS½óÏ#Dõ ]·¤’ODXÝ•7¡4ZõÀ~ŽD£ûð²ÑψA³uå]›Äþ†tTË› §¬„í„U;A$†”Û'Ú6Ë@š§'kÌýF¼*­ ôJãP£äiž%¢Ø «Až ¢ˆ^±{ùù}G~å/6çÙ¢!éàŽ«]¡gguJî^Ç›­|?ŒU¤†¶âT±¥üÃTyÑ™ 󤉜üÞ¿Dµ~}—8NEšP­¯ÀI wp£ò'´º”ód áË¢jH<´?àüZqz—4±HTu ©qMmЧ ¥9 ¨@¦×ã¥Ø}}ŒÔ»zåÝ9Ï$­®f3âZ3)eR›_å“büâÈÏ:ªèuv$Þ¿ЬSê3eÓìçÇvÞsUo—˜ÚL“âF”F²ÐQ^ˆ²¨3ÉèÒŒ¨Êþ7Ž(©•ã* š™&ù¢ YiuÎý2ÎáÑrÇSOãNÏ¡¼ï”,ˆÁ`p+Kí#Û¾›È+ñ:}Eœq¡a%R£ç~‚æ]ì½’Ù®DNÐä`ª…à"ÌʯnÍf*}yœ4*ÚõÕ8OØ28«Ša©¸»Jfw•êVÔ9Ç#õ?üKžò¿øç_üþô?¹Ïå:Cª†µ­'{ãµgZ š-±%ƒtžÛžàÌù£YZϤù­Ïu¿eôFØ‚r¨ÆrŒ¬‚Úƒmþ¯¼M€NÒ·íàaÂHÑ/}ÒþGʤäŽÀxbL6šuhqòŠ®…®Ü@ZÜçÛž^%Êâû½÷eÿžºwådÞ^®m[Pâm€Öý˜„ÆSê’|WQ)`Ât ’d‚çtǃ‡]SF¹µ–hÏï;i= ó­}C3¹{컿ÝJsªš™&îñAÊzòwXÃÞK*g±~¯X¿~¼?âŸ#NštPîû8Ë»sNÞúù£?oêmv¼‰úózðW(É29 J[Ÿ#©XÔæýïç»BzdbI’iíÕÊs]ÒEÙp2· qô›×E)ì<¦Fú*vzÚ½yÚÓ–TôiíDƒÙe’éŠìÃO çwóôg¢8gº7xh¥‚ðÈžÉ.P^dƒOçFvˆì˜ŸPù#­/×3óЇðŽâN·ÀÖ>”Ìq(ÛÎÅrì¹Û¤£Ø¢rƒl6ˆ?9ˆ?žúÉšŒÆcÿFª‘ÇSUHwÉÚõcÝ?8òª+ r|AuLzÆ7¾¤fëÍQ³}fmüñ’îÞë°´íóú·×â¾I££a1Ó¡hÏQ=L¹Ù”×ô¤&âç\Ä”^ûñuÄÉC -¯Œ°áŒr9ªóÝ$E˜>áxuFHé£,¨!Ü«úd’5­ (³àÎìДÛ'Ѽ‰¬¨ö Ù%Œß¥)Á)×íZ“wðc—îí´àÉ—,PŽBíÖÑÿèˆ8ÿz¼¦ÉÍS£mW”tâõ9ÐïC Á¨Žcw{êÆñ\I2ÇIH’ |ëH¡3’åM—TùrHÅ’®æè& TEð£„ÿýúüùñœºNeú’½¬Ôú0qH7‘.oæocB>\›ûü ‡ôsê÷û\CrŠ=›ïd GŠÑ`c›"NtÌ!1zœ}d®Äp@‹ï¶ZÇÛmŠ’9àþëtÐ()ÕÄIì‘zȨÆ@*Ç #m¹›gl’vBa¹ ´¦ÿá¡|Nªr½žR>n •I*ÛaºGt_ç×àß/ &I+ÙåÉ«•j¢˜â3M©’›…jiIkÒ6£æ¥ÃÀ•? /þgáÌÕËå)£)¶-)ôãÁª)ãünFAµE8Íæ€æõòØ­póbŒg/Ø–tØ&|ª„¦pJ@¿¨{Ïý¢Í¹ªÚŒX\í^¦ŒiŒãh盜¦{2; j’&Jáh8|˜oã7ËF‰|‹ôŽm* '7+0nåænî®PÛ‹i3›Pè4{ ñ  Ïã³}¯ÆdˆîY¥œÙW=þe¬¹6Sr®w! •î|¶þÏW jÛÈ.ãy¨KÊ>ª×›ÑÛ¥'4¾£yÇ4QðMJôbÑ’v`KƒT!9^™ÚLÏdˆd žŠÙp*éS™tÏD0¡¯÷ðy}½¿ÞÜW|Oâ¦XŠ»³Gg¬r»]#8zÁ(.§{á•™œ/æY§MþÂ?B\¢(²ãnqÁÏgdæi4d_ dæi¾Áy£È’ßùuú˜ípïóî]RfL)Ê–‰Ë— éøuêâdOO¥Uýþz$z*¤ëõtî‚ÿžª·Ç@¿Ðßf²¬m¸[òÎøtÓç<|îØ“S2½O~†Œz3T7Tî ½Žº¸¤¿(ˆŸeLr§´ªÏ]x»ïΩ†ÜTÇ5N™9Ë`DÒ‰Ù0$°~B¯Ö4õw-@r|½€›Ð'³å•ÄYu‹ëôûs†ò÷«yû¸Ë·÷Ûm”÷ÑöŸ*ª=ä £,’ñ™l8Q.H~L£üŽñ¤E…ÕüÍM]î>Ð-øº¨ ÚrWSÚ·IÄDÌ:EœÇ#á.¢Ÿ]T2õ»ûTÖÈIn[Ïqjšlj‡*œî(*ÆK¹Þ«àWɽ…*GËYÃÔ]ÇÅ”†9Ö Ã}úƒfvç„Þ§Á'N'©ý̘ÿ¸:ìí“°î”Ú¹{}ZÇ£Òý±óÛ"¿?@MéCP‹þ<ç?«Cœ!¸»ŒÓ†Ó¹ÕŧùõP„Zß° ’J…“_yD‹w~—4øÏ¨4cæ’R$ìÆG¥FÐèÛ®)£<‚I9‡OzýSz÷º9 È¡X’j¤¡Ë çÀúŠ:\G?YåOR¿]§¿+.n–J³9µ ¿= ˆð[±ÇÊ’ŽÐ(`¥¶Çí7þ„ÐS¡×yžsK[ÜU¶#;›%wžŽ4zêAá=ýš~‘®\ uŸñD)yîõ¿µ¥þwH%¦.uSEnž¦°¾Œr{?÷½¤Øõ>ÃF^|–<ÿ‡‹ï03ଽé¶ÚËIr _‡@7,õŠfÿ¹ÑðêNìy#L—ËQi¬·ÔõØu’=KLmF‹ÀõY^Oj,BÝ^ðË´û\îÛØK2³§^§O=Ia¡6–J8¡—LûþûÙú7ÉfÖ^ûŽzaÜ ϘôÇ‚•dñkF‹ç3ùጎÒý$iÇF¤¡X–¬â{«zh óG¾ûí¼g‡Ü<玩»ä×)î+S (TË8Êj²LŠ~ÀóÍ­¥znïóôÔ&@ÏW4Ü&œQ¢Ü[™Á®’åiR4^=õq{îÇò¨‹Ò#l£)à }»ƒºØ§ÖÏ •¡†’8uæªÕoRÚýizêÝB?Ù4´«!ø„WÎÁS~m0û¦¢g)ò—­çv“‚ìH¸è·éF¹Üécº„!#M9é¦ÕˆÃeJooé©QcÔÖkl0ãW¾'Žšs XÙ‡óÃ÷>ÚaÆ?G“¶ÇM¹þ•G±Žº±Ñàlíà)Þ"œß»ÅÌàÜR}”Æ;êvÍ[o'gÒ"³ìúþ9Ùñ/H`6ãøwz3Ï!@îÂ’FŸÓ­ü†T:èoìÕä0;H ¢wøü`z˜ ]¢ÖÒ-²4,¯‡òËH‹ÆK„-{^=š2ë€z5ŒÉø9}7ÔH4Mî"9ã©ub”d¹'7§Á¼&Þä¬úP°+uVþ]è©&9‹v<›£}Ý,êþÆ—Sô¾w(ÒöÒ­¨`­PêÝê[U4-%Ú͵0©;©®„šóÚžÂOcYÓ›Åý×ëeR¾FýÊýr›â>ó½íÝ|¿9`ïó–¢qÓËOŸ0ûQþîÿÉí}×–wÑßYß“[\Ò]ïðȾ…yûÔ)OÖ¯<î=‰²†úlÊ£ä®÷äØ%”??Kç8 ²È8m;Q—¦ü¼ 4§kÍ6Ÿ÷f*ã{sJ0ÕYâ|Ç1=îͩˑĚæëµ%>¨SbiÎ;ÇÉóf¹ß‡Ýheæ^áS箓á?")é:ßWš>¡ÛB=þ¨æ1-.WjM }ȸ3Ú=WŒ¶2:¤®GÚ©ó˜Òó+øŸ.{ömkÀ®ÒÖš5¨›ä׃ú: šäée²/wœ××ùuA´mrß-Øù" ‹´µ*U¶Þâdh ÚÑ ´h¶‡‹*´§¤«_Ô4›³&ô'Ó=.¹#Š"-MDÛÕûà9¸zãjIâ]µQ]A“à A­ÃIL„šFØÞC*6K°sI+…‰Œ˜‚7l9u´ñƒ§/`üYgC)üüX.’_J¢§™žwcwcM;}‰ÍâKæëAÄB»2ίfœ¤¼ÁKˆ(w¥Û«ëé r³GÏ=B;ËBe¹ÏîðÒlKÒÌñ™WåŽBÊTQU·I„ºØ’r§Ôv‹üa ç/KŠ{̹%­%«@ù(û DÛ)Umâ˜PGvènIã—t^¯§F¡4ÒÄ@;*Î6mUôˆBL´G#n æ‚SûW (IÍù¶ú¡©à½˜l„4Êç ßt èÉ\ÓrPwc¬• oèníáòñnq«â×^íKfÎÜOÑw›jöÔ GGHÛeâ@¡ˆDªU@_»¢#|›?nÔ¤žÞÁ35h'ã+= ÎXù§¾„ó”Ý‘¼Ç]ÇpÕø•Âu®“»T/ƒ*™Q¯S€IÁý0›E‰“‡y0 w5íìþy~Ó}Úò–L‡fzIÖ‘†šR#|Ž#¤.¥×â‚îÏèrB%‘kczÙ:ùæ,šh»›×—)bÖ蔟 >Ç:Eß™Ìé!²“ÄYð>õ©RWM†¢rHëœ'ç™ôŠWí"ˆŽØžº¦ ”åï§Ü¾9ÿù:ýlxC èÝÜ£¯X‚TGfTI2øe˜çT©ïø•rzÖó=õ-Hó0*À¯½Ž ©ôú2e ‹Á_« îƒî!g n3TFÔ˜òcWŒÞ-M¹BxÞD–,Ñ‘yRÚ?¡E˜…T® ÷÷qè%¾HZd3ûœmF^•µˆö«ñ½xW$+S&è&BDê€f¹R¥ò…ðÆ"Î4©ýh¡w¾ZxŸ²² Û‚Bª¡]”K,ôcWˆa ž¯æbÖò=ßÿ±¶uàÈRóü‘_Ð¥=k©|‘š{âÿsŠöq>Õb8±N·-œ®&Aýɮ鴵ßê!W;Hs²wѺÆñḛߙuÅ›ù /hÝAMúrs„ { $´ç7J{F­³Eý‹ÚuæÒàr"gñï莙»•Óts‘Ô¿ïiL‘Ï&a$kS¨M=mª¥&ÄlMã ªmBòÈ„’v˜kÔÛ/¿û¯Óôzÿ;ß?îÖþÿæ/”8nÛ«Èno¾Ý½ùHí–V4ìþ±êeæ”–s'¾ø’OßL:´ÌÛ·qe|q æzLù­ç}p#ìÂ#Ή¡q1·ùÚ_ù)Í~Kã-eœß{ê‚ùùssû‰Üî&ÑÝN³Â‰ÙL-Ê8sa© ܤáOÓŸþÔ‡ÊÑÂd·ãî7zcxÞÌFž6ıS\ÐL/Ô~ù£€Ø«2löõû¶oáéóC!•š,TÒ„³hùÉ„Cºæ¬õ÷*×ëãdõîÚ릌ó«Óô0eÙ`v×¾ÀV¶ vuÞÏQׂLo»ô"$Í8Êï¥GoC‰\„È'Ñï`̽¿¼O/·YX¡ç›Ðâöb_­ËE°k ‚!2çœØ1³¤¬ödˆaé¨Ò‚:O¿Dä¿_Ò²ZX`Ð#Cã­ÙÖ&¯“gÚEK;¤&w ^-)%û_ÜŠd +é|íDæuÚKˆn§”/izÌj–ô9˜øq¢ã7/iYBt'ɺÀ$ÖU’ú¬oh‡ÚÁüMa~Á£.vsVÓ¹hoRý™ŒºVŸêIÓå‰$kf=3h (O™@UŽZbJËIo“Þ”÷U&¯ÍëG¢ñ iä— ¢ñE îŒvs§0/@ñ|”à T¥NdÄj§ëÅO°öƒßþ*¬°ë¦3§¤R2ꪑ{„øÐi4`Wã-QjäE!Á‘ãÐ¥@ŽÞWpj‹L—¾»_ΨÚ'ÜÕ‹1iFZŽí?ÏB Jš‚W¯„ó§éwꪈ1¯==PŒàd¿`*䥲i×™Ö·ïT =µøS†ºŒtißé@ñ­ÐĵUvÒÈ;±­gþ,M%2>ˆï÷ÔœÖ0©Ò¤ "R´FtÑŠž4³ Rm›"Êßß´”ŸO®úQ¾X¦‰é(Æþè FO)Ø¿|Uï"Ò Åj6r×׉õH›o½ôKšñîc˜|ëCŠøV‚‘òùós‹L†'£)¸]|Žƒo^º©´ ¿ Ro•æ>ÔIÎßü2½ûrz ã·ªøšöiXâö¾ˆ³JTòšÃ—Uefï§ZH³'*àDWTw_w þ'y´¦P²òT¶HD»HJF5Êì#é Î×ô´XºÄVx(^ å2ã¼T}É=â÷¯‚êU×ý«4EŸqÒ.8KßÒy9•ªŸò¾¦žJ¹×œ¡á¤ÇùPÛã^$ÍÐ ëž4þ"q¶³«ëW;šùÉ€«Ð—Ë`+8ý Œtÿ/(—€RÙò# ’·ƪŒôôíÔïi)¢ŠBŸä;’mìMd«¢NŒ“[Ûa%y™]Ý W¹Ó©À$³ÿìñ7ĵV‡MæaÓƒ…* •s©:;ÃÉcÓÁy¬ ˜Ø’ÌeQ.±üÌŽ†2B»ßûÈG1–æqk~z« “/ÒBNx%´ÂrÒIÐW—ô Iç¤8§RöÜóK úÌDÝ¢ž~ì¾ï¬f®h§Ñ½m`^k$ÔDPƒ^£%‘%*`ÆOåb²]S×Ù¶÷yE¬þ)ö¿€2©íÐÜý÷ù–Êu꘼ê€#$‘e6Ÿ3Ä@e”½âjbf\¹GyœŽ>ã.Å[¡7¥^Ôu`F£ÚË(4Q^Hüãïq¯)öþæƒU³—­$[Ä ${gIû.68(½h@cZ6ŒjÅÝÅôÑ“ï0ßÝ¦Š‘2í»b-ŠÏ²ãgTE~”ôÄ.éìSÓ7¿°Ì•¤¢²ü”2¤ÐnõÑH³9Eßð1Ÿ!¯v}A;r¢ÝûäÂS+ù­È"Ð…@¿€‘8í˜*AüÓ´xRmŸJ²ø¦Ï5Θv{¬Kd*¼gRÆ›¨ðýH.@p«aYK5ÏÙösÆH Ó°{yQA¹¤'1iŠU¡‚ò±IÙ‰ %H÷HR>zP|M£È„HDSÆÉõ’Ð=mçÔý¤õÑ¥S¯Y>*íiJHZŒ?öÜ‹†Ô‹êmÒrÍä!‰îDù¨¼vgÐe°9±¥G@EÅt çZbŠá-Ѥw EŠå}22ùŸ$¯•®•Ç0³7ÝAªlæ{ÿjRkÚÇeÝ\+OF©Ùp¬é’ê=ÖtAÝ›oFôCM#ø7&1÷U.ëhï+üüDl’ÁdÌùI|óm\%”¿ËÖÏ2\lu•{%4¢µ¸Q*j›ÑÓÚk?¹[Ĺæ%ÇÀ¼êמú‘¼£”´±Lf™“¤cÀa]Eé PGGuÅJÆÄÙå¿ë­·ÛÍô·VÜo7a¦á6Ü^œ…0²oóÛ’ Zzæ–èO…û?úÃ*¨MÊR¥EuAšÅðœº(ü>Ê÷Ìqx„–m§â¾Ýÿ©^Bÿ ¤ÊÝ#gMæ—.Öëë r·ìʸkì¬Èö‡™¡©WÖ˜(Rµ9¨J)Òïé÷†”ìè}íßRóôñán’yQô¤Z“rô„Ý_´j2Ó†KG·Fí´…zjŸbe«!^ðšUÍìwT–Þ1ÊÔD€§/—Zº<ò¬¥â†ª7DÙPÀxÊÐ4ƒcL(·Ù¦Yßr&ÝóðVµ;&‡5¬)¦Ž†¶ˆõç—eT2¯•ž§îïÎTU ’bûA&%…{$¯IÆH;C’:5HÕеkñÛ ³ËÏ£jO|¤›2Îïfœ‡ñííÖˆ$SÌ—ÌTN‘Ž›SöôCùË0SDy2º}¹Ê¿SôÞÖSEQUïû%K Q<»½¿¿@ ¹[ó’ò]z‚>h&Ž2ÕT©$‹¥ú®ìÝïŽwxDä7=QÊ U@ÓÕch&‚7£p9¶ùœê:oÔ)Åô¦ÖJu>pñ+ÓÌÊgîëÕ$ø8eü]”¢<ƒ` Õ˜èÙGy"õ›C¥ øiÍ›OD+"ç}tNS”\¿tFÙ›U•^}âÚ/¬©óPµÍ7 _ýJj3ÚÑ8O5~¡”ŽNêàû‹0(êéŸÈZõS:ÌSÉv§¼DK}݇HÁÚ@…óÒÄçÓïZ §/)ñI9 €3£‡è˜òHŠØ?ÄŠ ç?,é·»~ïV߬°ööÖ½XóÒY÷1¾¾Û›Õi¯ôÒÕ¿ð6 ‡)•X5yÖçT @¡ôÙªþz°¾ÁwlÇQtÃènÿ8¶ô^¥¬‹â'<ÚnŸ :ç5_D42ˆqutlthÍ’R9?²ß¾.¸)&X‚ÖÜwmŸ’ËU£H‹¤*Ú'F‹~_¥«9Ô`l%Ô1=³çv ‚£1£GÏ rJ$hÁ’`)Ñb8€Ê~Ó§û±ÌâPC{ w¥Ôw,JFŒH=:;²Y‡81–~ÖÎkhHê‰tB¶ŸŸ·Ïûðù–ºI¤¢œêœ])s‚TRRŸ" 7k³Y¾Ö¿ x¾:$YŒ±wu9§B$xŠâT#qµø{¥»4¢îU5R€ô©ÕŠ2eUžj'ÆÏ)ƒ !«7ˆUA5†I>Ö@­Ð®’~jB;+/©é>½ù~@º€ò§qK‰ ó.8¹Û=F%Ñ ÕºsB»Ò(˜&:¬J ÙÏë úuGÒYž’=ÐSÍ/+ÄU}Ã×E´õ‘J%T÷Àb¼Ë¨¨*â#¥%޹3¤ß»,%N¤¯î·ú`÷Ô³.j,³ü@úW"Ð'Xˆ-• XNV5`Õ/+\màýi`–RÍOzxÊç©V›<þk‡’´¦CbQ]Ю•Á·ù,)~Ƀ©ùz¨¤Ç zÝßœÓrŸ?þä‘ë?ôGC“ššgå`ˆYt #7¤¨‰²pR=< º˜¦ÁþQia5®­ãÄÊšìRÉÔ¤B,fó7Ú{·¨R0è€ïiì-æI±—]¿¥'ΪQIO²ŽZÁß EÀÂÝÒÏÁ.ýÇýcC7¾¾}Þ?ßRY›âõ îZa´ÛE,$^È*Þ§b¥w­k°ÎZ©*§+(²–Tûq»óWâk-«ô £•PgF+GŸ¿óçìn»‹¯íœr¹TdVö¢[ì¤*~RQO3> <Ç\_ù­[ÓÑ­D¸’ÁÔ&ÕRüxß9JPàNA &ûùw¿õ•au$XÊ©Ù]}ÔÿK@×?Y-½J”2#upHË­©ž ±íFÓ;ë-(£4ÍöȦŒò·i§öo»a…30 ÁU5˜u”À€ëê(ˆÏ£å£&ªùIÏ‹TFºO© x6ŠÉ=ùÓ4š *B—k~>QÑ+Ôúϵ~˜8Žêè--ã<"Û‰ªÙ¢,RØÚÙEI_Ð6¹G^}bó5H³ß‘Î+28ãt«ßMÍ4Ö€w)q2DÛ’¨²mj ¾êkèÓwûµÝŸÔ Ù ñÉ”C:¸ðTðnï€T„UmƒÒâCÛ¿¸'Θ†×¼wZÌQƒ’ Îð3Á=TE¯‘*–”ØåôDý î«»@o/û¦¬ýp¿´HÇQʃH9)ufN9Á$”ÕýZéÏÒ£vö¹Î6EÑ©¢y~HÈð?"mÄì/Q”pž !{õ˜Ä*U§ gbÁg%¤Ê³8ýHý2»ë?˜«I”EyÍ)J©‘7¢—Ž´÷Š@’éã|'ú뻞_ºkš‹+s_çìE Ã}¨V®ã”¿M÷þGJ£õÝÜ1­û­ï¸]èÎuãmJT•aIZY¡ÒꄉsþÖWzKË™>¥áÑ_ÿäžÂiN«U3ýØzT|œ0‘Šp‚ûÜ]¦Ë8ñégCJ|fB×›üqé¥Ñ+3ö2™Ý¾›¦ ò·‘7LpÝ­œô_?Îý¾,¬ )—§;(uêÛÁ½Âš&9Ôpç‡*¨|-wù3èH< Ì@ó’Ò‘F¸uUQŤ´EËP5Ð K2¯Í¾éç±V_÷ރà =´QŽ”z{F¡$‚Aò'Bùµ üB]*PxÌ·»pãË|·b²7ÑM­ù“Dù˄ǒ7ÃüÈ’2 S¶¨–?£ƒò\òçë ¤УÔ)sàÁÇZÇ´²|¿$ôÙ(s^Dš{žä<½ÎoÄE2) hLB·o+¶ßzn¼:¤“šÛÞÏÏÙ51e‘óN¯ª…Š:§©3Åù«Šs#ZË‘Jðÿf€~E@¿›ÛdµÛé›C÷ºŒýܬÕp”šZžÕÜ䤤‘àÅh’éÊóõN¸Ë"JyY¿Ïؾ²¶³(S5>Ѥ_7(Ò zîtm˯UFg‹H¿›w9¾*¥ægw•0ô¥‘/N]×ôG@y©wz˧#¨Î¬*_–¨€zx¥Üqxñ'÷ú€?é_€àAi±_Ïj'»U²)¢Ä³ºÐKŽÀËz½Úë}@Ýìí‚]Õ¥­oH¯Àzf«^òH«¥àP»§Š¡û·]øʫ }[÷^Q}W†XJƒ„T¾¶¯(ö¦ÕÓ®œò¥ÙivdVµÔ T¾ª&´y—¡îŽgügt~^ZÕpR®HÐG0=¬_íùR"~@•îЦ t¦¡TwñU§ÔM=ßU÷ü¬„º«ÛóíÏíMˆççîo'ÄB…¿Œ£ô©n•݇+kŠ éÿ{~ûesaE^Õa¹Y#ù‚×ÃâÇt_„Uo"ƒÊƼAÅ4R¦OPåõM×ršz€‰‚êgà$ ¦”Ô`ûû%‹^„й¹û6/R?d¼V‚Ü«Yto¦ü¹ Z¢Ï‹[Ô¨Ò§|2­nIoÈ«¸{ÿ>Éù¯ƒù®Õ¼€ ÐBa*ÔÏ*(Öý ¤àG4rüÀ?DÓ=%”»&Ë¿¡JaÌu¹P‹î[d¹Sµxª6›15¾Åãêo U;ßúý}tÖôeÔïz¾ïT¯â®‰l+ *Ñä¨è MTäICd)g+úM0³·~jý–¿Ý Ô™ 3VÈ -\^`†ë7ÄžwQáéòæ;gªõ³ññôäED“Ïe§´¤ñŒ»ÕôuœÄÕÊ0ƒXÆù½¶!Î{ö<к!$4N÷`‰Â™oČ뷨†‚iE›7åT/‹K¬˜—ìGçÎi‚´¥òÙcHÙS.5YÔ¾v…̾; Î›Š/UŒ+®mÖ<› ¿ O|#J‡©^b¾ÿð¤šû²@’EíÅ+ʰŸã !Óñê—ÖYÅÝIMµº|ò$u9àí|¾ˆp˜übw),iF±¥_~ ‡Êf^ýŠŽtÌQ÷9é!>a–ŠC¥Ä/õv×@åþ —h=4UÓîy’40Ý—$⌱vb™ó(cu‘ÎçøÎÇÑ ó·oó@Ïìà.—;ÒŠãÖtè7ú !’*¿4ƒº÷WÀ¬ê¡F%³ÍMª{P»ÍP 0£õü„9/ó¸¦'¦]Χ¯TR½ëL«Qè—Ñ1å¿hÃÔd5Ö­®s‹ZÁÞ3V?wN;ÎæHRXkòà ¢a¶’½R ÂÄ!x¡“@$d¡=iAì+}C*8.0Q,a+ÊIG­²ÕP§“U}”|•~(5AMÌÆHu÷©*¤ônžß¨Ë] ¹{õQA¼) Ü>½¯![Dú án¶°Ë'þ€Êêê N£ý“4x«šþ9b7.€Ûb-‡ìâÀ­-Éx£Z¸ñz+0Ÿìë´œ:=ÐïÛGrbË%ªõé@B%éhdª‹©R‘õi©‡¦naO>H–\/R+ðÂlilFòË­• ¡J &étÎã˜i¡:)û”ïU~ÐÂMAäÅÖ”³zº?î:…‰áÏ%“&æÖÒaíÀþãýÖÏæÔU-êõ 8ÎU…·-)§ ´rIúž/'¸³›áî§#OúÒðI„™axš¨´hÊ@Ã’jNŽ^BZ5Úå¹’úäøÜùxvÊ3Pš¦ˆòg{«NæÐœï‡r$oA˜:°vä«WÝcUƒµ}ðd”'¸QÛÏôRî!‘!è¢hNâÞ œ'k :ç®)£<@šÜ®#ˆÞ†˜=tÐDè5 Kò›Ÿ–Щ¿¿ µ‘ÆlÓ+³Ûø¬Ê8Qðr~Æ—IB[ÄßÜêÛhëÑ7K”>-é8ª…‰Î]4u9íÂ~¨  å•'“EjÕ"‚ø ÒÿÆH…˜Ïy©`rV ýh'¢wÄS[Eúäò¨î šçõÍÓ»±.šÒóû‰¹aH¨Êu>¢D•S½f†;| RçE¹³Q…4ý(lü› —Å¡æ:÷,5Ï3¾tk;°a™§Ur©ó„rô Îé}î¹È,dj^Èr)1™áôLxRL.7e‘EuÖ^¤&8ÎÈ1ÑAù´¸œ_Íô‚usžS¯µÍ³]¿ôPÁÁйði4Í[|:Îâiµ íhE¤¿~öC¦*ÿD {¨•òñ=®“ ø‘ì·‘%xëœ4~ò¼ Õ}`C™Ý=õÂÁ¿JñšÚ/Ó;èîGk4MèW³ºMö0’¾ŒÔçÐaEíhhy$-têD÷˜å-!ýBó,‚ÐiÍI†"J`wÏ@­K÷÷a‰¦UdPy­ohµK‹HO’}au§*[7Ú‘*ž³£Êù1½ÃÁcôç¨{öÕô†}"xfî »]ÙUM,U†|x¡Gì¥rgÖš)Ϥx.·Î/ê×ñŠþþþ4OÓpŸoîž/lS±ÃÿáÌX¾í¬É³û¯Œ‹ùœ›"ޱÚõ)íþoBb|…𤜘Xø‡àD )GÒ•ØÞTÏìò>IÑ9UBúãß±Æó"øªY¨OÂЂËùåÏ,çáþnÆyY|"ä}ˆÎ·mî$ ”Þ4€¡ÅKJë:F+<=ڙؓœG7wTÁú=LJ¨YÚ³i›•öi}v*ˆR—v_÷dY÷"tܼJ•º,=•ÓJg qŽó¡ÙÊÙ}aCRȘò².”¼…:‚JQfj úÊŽÚŠ<“'$˜¤ÿyz@ ;”(Ñík¡‡ÜGw+BÚw× (#=_ÏvÞ‘ÏÖŽO¹ŠyéÞ}é£êŽseZ«‚Í*Û€¢•rš‚ڽѕìükƒ_~Ry¤JRpŽqþ®¶ª@é°ZC˜ñ9¥ôÔ˜ªTT ”v÷fÙ¦lUšyZzç+*FSÂ¥‚Ð(tÜ¢fÿiÈúÖ ì6Š2éMzhãöH)½*ÝО¤¡>Bª³T!…9%eŒ>:ú¨×¿ªD©‘Iï!‹j1æÍ£+ùV}L+…ñ_OêÝ—ÒÄùî×LMM®¦ŠšÀòF#4 Vëo V0z¦¾Ggõ˜Ù³‚ÖC¶ ky*]¥žq;a‚Îÿø*åw¿Ž2<Мj!”ETÝ.µô2Ôñ>Ñi÷°†fR¿X…KOÿJ‘)Ü>¡vÀ»ÊÞ¨AùÞ”Èr–jßGSS¦:÷–*”|:ÞD¥˜/åÞREše˜»Æéì'mø*æÓ° ~vÒÅÔ" TŠèë5>Pñ@ó@ h3+1K{sïüä~|ÖÏïʸÇ,YZts—Î"1;bŸ!Éõ uÓ÷¤-Ï(OTèÞ{ÒuKÊ¢þikþ8¾MU’D“<@]Z“&¾NªÑ*zK=‘€ú}õ§yS½PÓd5¹ÔV/iîÏvz¾Mƒ>ïJí³´cžÌË…&ƒ¥{Õ™åÒ·¸¦êLލ\Û–V5„}g@¿¿š~’””¯_ú“'³Ý³ÃþeYUBè¿€ Ç¢és¬$;Ô/ d•g Ö´vdZ¼ê¨71┟óªÂƉÃ{Ôžt~ý·Ih¨+Z~—™TS{㜪Hx¦‹(=Ûnð£¾e¬Î«å?îÁºÖä)Ro•%µÄAgh„æèÏWóö†Xe"r¬ƒSðôeje‰èçjkƒÏR jÖ{_µÂ D½¹4‹IϨ‘Zs=—ÔnIzžÀtË?æ»òXo±Á¿½|L/mrXc•ÔÜÐGÐHsæŸ}zNAØEÄ~V:ï‚þ`$uœKÁÊå®z°àZcÎA`TüçPÝ­ê—äz«‡©B¼*·\ª:ÂZ~‚ž“¢‰QEiʈۯõ:¾=í'˜òßåÔÏ£qÛ­{Ï”¥Iöãi­ —¤ÀjèHá‘/k ¶SAv¼ìü1OÁ³5MFÏËüÜd†°åì¯oüF4Ô¡Ð*e¸®]HÔ@ÅlÒ8³ýþ/-cѬ+WzG¬‰ƒ;ûD¢Rš:‚1_¦ ºûÇճꫫèNs®5<ìèZq&B·¨&Ñ‘~7ê㼊˜“ã> •ʃيžšUÔÜO˜(U­D |:…I•Šã { >P“ªô ÄàÒqQ+ˆù²Úô¬:B·®HYåb˜âï_ý2ß0ë‰tkü¼Óõ2»DÀ }.—^ˆ 4h{ûñeµéaE·RaMiîƒG)Ò゙ïh{q{ØßzT‹I aHÒChÞYcÛtûÁ¡Q„¹®2 W¯ÿòXuØyâNŒ\@?*HzT`}¶sÛ?G؈瓦€mΪVe¬”ÏU¢õŸ§-£zp8© ¤mŠ(…£)ʃU-g€ÿÇ+¥÷h±!vo¾ýQã4ƒ§Ì­AºûLÖû†“´}J«$ag¥l¢–@ÕÝj¨JP¹iaÖ;ý0~ÎöÛï|í”’°R)rYšØÉ†¸¹"b&k‡6Øÿ"T8+î<>SÛ×;Ý©»L¯ÕCM•˜£¦aŠ$h£ kýY-u/ÕíÝíó0juMprÉrHkÈUEIO*wS,÷ÿÛ>(ú•aþþ4TpÅøŒêü¶«^î õø~¦wqµåÕ_åµ%ÞÔ¨ó²€Á»ÆÏˆÝ±¶í<¹%Q(4~‡5u¶ß3ETO³†TgÃ’rqRIo)ë”.¦²ê¦ÜcªÇþ™_Ç Ã j;¦zÖSš±^x E¶¢O)1 òíÖ­io¯ç¼­é÷Šö7F í„æÙÜžm«Ÿß&{{u—Wln©{%äÞ|GxžøaQùÊ5Y.Ùkêÿ7PMå¬oÛ4oA‰¶ÂI@„¥”êÕŽ¤›»hü­úóõ$ ÑeKÓ ¤›²žÛ>âý´ð³J% ÇŸÔÞ ä†¬G¢MôÔº¼ž†>âÒiEúɈðŽ ãmA*hµïv|»Ïc÷FâN¢¿S'ã4®ã47Xn»\æ—@SïÎ&8ëøÙí¢,BÑ#^6²Ñ»ö9.Ý6ôtc¡FÓBíä%|a£,Æ0,ª¿%¤?úó™@åëKPûHÃA_è1]¹§‚r× šÔ=ŸÙ%‹R¢úâ’f‡lͬ}Ì­t¯u:T¨­ZèêÜ£`e-éÀÏê„tË@Ýs ŸœYuÿU³éæóöæ¥ÿ,Lítʵ Öê™Py2´ˆö¬åf+7— YØF½‘35Ö“BnK•åPlÑâo¬h{_ȪXÔ¬‰e-,Ó!ëªF°W @€àPG@ã‡ËR¶¥ŒsùçµËÎL"—l«–þèÑÌ%Ùn¿STg¦‘©ªýê½»[¤¼ÈH½íÒÞßßßµ»Wi«neTéù­ŠŸ+å¥ K@ḺýôZcíÜM ¹é© õÆÙ?i€öCtNOWx ñôµ'¹VÿÙÙþ ÞšE@\APs·¥¼VÛ7~êª4“Zóì¾¥EJ±GA2² eV*Bê3ƒ¨‚ fªWŸ^ 7W%~dÈ~QÑ”4&&œ/ÐééëJp*®Ó¨»2¬CÔy£eJËúó³1”ÿFmEúæé¼)&²Bý©”å†'."BÑÁ§îš2ÌÓ…C'둞Ò¦„þ×àlë0!%ï¿ý¯ÂtIB*R¦…ª;©½nwÊaÞÄ^ý)µ²ÙÃüI`ÒºƒªçWúéþ¡C_ûÒߜϲ%–¨›•&˜ÌhGÓ’TQ•R¥} CyEÑË(§ÄUã4††°ó\{eÖŠ6ß72u’k¨ÆXEïÜ¿¡êÞ,ÑçNŠz£Ù¯i±öRmÀ³h§Âg­ú˜hÃz¨Ljf>sS¬wZp©=)æíQæùµ¨è u\:oÚý0~4¦f«½êSù5…Â;UZ g€ï‡Èò+ëé2ÐßF9«gÍR/:%þs VRW¨Üiis°\L;œh@1¬¿9¬ß֭͛‹Â!vý4öKˆûòá8d̶¯-˜+­![Æ­€ìÓÔJë ÉÒq›b¯:¯U³A©D=_W> LÞª©/ E[7új5¥¦WçO ­Ëì„ØÊò·ã8o$´PFÛXÍ{ëó¾åbòƒ¢Sø7xhewâj|iyªZk”,/¬ ¯h8€ÆîêŽAm iì²eÕLb·õ¤ ˜)…ËòH+|ûêÄ|ÂðI¢«¾–Ñ,ÖeX£L€ õª2Ôo„,ÇYëˆÄì¿XÕÐ+àà’TôD/¬Ÿ÷S¢ç8±¨/bŠ@x¯¯U«Yæ=ôغ[ÜÁRQx jØÖ[¬s¨?+…1>÷y~üŒX6&ÀÞóïVB³Ÿesñè¨i›ñcZTÁmEç0‰–æ`þn0sƒ,´ž£ ¦'ÓÞÓ‡`á/LC†)€œAt\SyµëØ([¯âUøDPiIýH»Í 5ãï–ôÕcŒv©Öv- C¼ªlû…ï)n~ÜÀ.”õ}+x š—íï<¬ü µµ(·ñnxÛ 2ÐïFƒý^'Qï&0O©÷rÆZåjüC88Îæ©KÝ€:–@¿‡æŠrvKGk:r®”$ñÚ2Òÿ+$9Å­íDt!ßzóŠ[绿@õ1à{ÔÛêKBPFƒÁƨx1pÕ5hg*.ê~YýÜÝ`ÄAI«º ͫ߻ËäSÛ¿žþüù3›7AŒázÎ Šç×5”.‡tR0œTI£VH¹·< 4Œ©ƒn(ñ™Ô“ðe?ÑÒ¦Wªfô:1ã‹Ú13ðÓKõC`¿ýšzõ­ls{~~îßn¢o¬¿ooPµxó½V£ž•Ü/jw¾¨< ØtÖ9V%å"e•5¤ë¢ÂÌ.Ló1«© ¨ŽXbÕÕÍ\ÅX=©iJ€°>Y:¥Ó–ýÓÑ·&…©%¨§)q´Zwmwµ%Æ8÷Ô@ýóùù¡o&ÔÕÐp£>Ï‹måªàš Æ è ãø:b !gÒ›Å÷סqñ±/¶ÖrVœÇÚº'ÀùUb8Á oÅ®h³+b=—³ÊØ+½W"}¯V²é;XÀÊiy`¢6L1ÛÝøâH³qà°ÒsæÚÂRw%Mæd×ÙY5‘ °~¬tP±¦§:v¹5­£ŠN% Òs…´eTx¯.>T }°¤)ÅÖcÒ¢å=¡VáBíÚUõÛì AÓòÝWƒÆ·I[eÓ9› å=Œ-ô ½UÏ›-¡MxY‰ÐÆ6¥ëtxýýg ­¯ûÕ¡ÓÊyà ‹ˆ)¦kCW`qIâ´¯j´…^”Ã>;42°eµÎŒªÈ¨¶^"2úóÃ~7««·~q®ƒà<»ö=‰ñÝ¥Ðe •o_±1*‚ÀÌIúˆ‚&rVAlh›"ÊÅèÁhl¿EH\)?‡3Í/œH9?<¬>H öb{¯eWªWcöPi¤… ~y¨÷þFÿøOë~»Ÿ[L½-¿T´œÒý Ù ñs•¬ÿ!-Y01âÉr-ƒÚ·Ñ+Ð _qM¿›]€BŸÛú7Ãø ã€Ä€p†@Sˆ:Á:Õq ÖøP¦mb¹ìË®UÐÛ&Ò×S—>uÁk’½ë†8°î£Äa%çºõ—H.`þ^-T¼ÓB|3šû޽²ŒÕQâ ‹b1ú.u ˆì Œº‘Öø¹±ép‚ørg{è@Íл§VõûŽìÖP5 îj…ª”¥Ù çqÖ*6ô}ôÆRÁ•,Aé 4ñ›­ §¹™¬Ë=-kñœ, éom´¨=;µ’yÛ¬ðÀØÊ2&í,àßcúcÆ£S{œÎô‰!…$–˜ÉŠÖ7öaz?–WqÍÜFø†©·ÎjÉrSPlâB hoqƶW7îM ç+"Ýí³wO©DÊH‘"†[LÂw<ôQZОF¶l¹šq:.Û¾œãÆåÊ‹'æí¹²†ˆ:ø“ ÄÌ@×·_J.çÉ#ájÀÎå›÷·Ë¬ì>+ˆ$¸wFÛ¯(h°mÝŠž˜)R¸Ju™UmçoWì6º—è(?ZÎ`ÙX£/÷¹Ì"'¼z‡Â›r¦5ö²vIáαþfúbÄÓøtÔ1¬T::¾…†ps~È☠ZXïg‰ºu݃ôn¡ sÄzmÕÍíÔ»M~a¡ý†óZãºLS È~rµ×r;þ"Í Z/Õg"Âc´;ѬsÕýœ&ù9¾ÂÊTF­j#FqÜ;‹w^êãžaŒ:‹*¤{`»ÂK‚´¬/š/0’×kô¸q´¥£F{Òó Ç5ÿÑûÜ@EvXÏ$õ‰ipôEŒIÃBHŒq¦Íøvͯðž/……Ûq‹9 ”á£WuˆcÂŽBí"ÌC—•Þ•^+Þ¬gçü”e!É:Û‡!Æö8•ßK0*„Sé&õ/;×>ÒVp¨@ï¼*¹Õù¤„xöû›Ó)h ã=ÕÈ  @xŸw‹št‰Gñ•;§­;¤wJBm}£b]O–u=—ç[ˆtçøe‡(xØ®ý¢iü+û¯ºÉ÷M@¸Y¹ß骢‘Õ¾a\·nm•9FÚyñ‡O*}|»ßýª,6Ø0„¹V^½â†X®~&ßú8þ»oh—Ÿ¨ÐÒº· 6Š¿ûÎnaå®*[ºã6;~¡rg´(2,Ý0‚½âhA;hc®,èÁG<ä£"Lá?¿øˆÆž¿{Üï"N:¢ëíÆšŠ‰Ýøwüù:/_°¥ÅKÑ*´³B•½ïc®ƒš|èt.ììàd6DS[9À8'Ec°!Î&€½OýàükL ÛÓozšˆ¨î†!v§?ÚXÆùÛØ4í³¿^— OÉ™-» þ yÇþƒJ#UÓWA=\Jú¸PåõQQž^¡Úö¸ÈCtâOùk héGWèÁM¹*<@è¦óܪÌUß,]·§@"#ÀŸçR#PfŽ3°Ú½úŠõ9‡ˆê¼}è/„üùJo?q6>rN³\÷U.êààf¸+%Ú(˜î©Î^óÌþ“Ó7Círsxh^¹šYcoJ¤e+_¶8ÇšR1µÉÇ<÷ÓôçÏÒAè ÈèG®}·ŠhÑ›rˆ´Ç¬ ªÚý]l:=»/H¨ŸŸzšï)ÒZöpç  ô‡cVL4š#…r¹pjëN)]¥À!¬è&¡R5þ]Ò”j¡ TÂã¬Q”ÞÁt×ál›òÛkÈ’PóïÚøõóõ|¶·iyô«ú;C…åíîÙ£ÿÁÇ̯a1m¿¥ÈBÔ °¨MÄu÷WZ6‡QÑÙEÁRý™.k}O=ä„,CYˆD¾€¦¹3?îìî"Ç„ðÖp]ñ>ŸÞhнé©èð‹õÀÜÃ.ÌhuT€ŠðÊ@µ_…×Ýåáþî‹$n!v‚OeÄ ë÷qWá-I¨• ¸Êî *çÜñÞ©ˆ‚!ÞT–`õLøÏ?hDñrÕ|¡*‚v¥³•mdÓcgΆdn çÁð\«“Ø|P Ì9¨E'¾÷‘ç1t~¨º”ùH÷­BæéÌÝcKßûëôÕdУk÷E”ë»°÷OÎ ó—‹ìlûùù2¡ñkú|ÕÂ…áòÛ£ËÊbA=i¨Ù29‚ê]ÑbýaXÇQ¢çØøµœØX?°âÃxŠïò2P_š`ÔO@&.çŠx ç;Ð?0¬§Ä_‡Òºµ\AÉQØ)bsX «yhN½w÷ž[ΊÞ^i¸ XáIÓñ{/Û4”o××ühÞ@ùnTí‰Á©ƒ2÷‰`S%•ÿ6G$ÏŠvZù†Ùâz"g²ï±Z°ìs’'Ö·Þm?üãŸÑaßŸÑ œMr@ýu»ûÝÇr¦©‘ ¹’€RûÈXˆhãó‚Þ j–VÓãŒgO—c À/'B-D DO%£ ß!¢~§,ÃÂÿŠ3Î2D¼¯tp&äC­&Šô¤rþ^4Ï!Ur“¨¼T€I+:ͽ%æg¬£û.ž\ùžŽ¡±¹ïl(Ís ¯×@]ƒtÄ õ¤ªæââ’ë~.Mú,CKjz£‰Ò!ªMí¨A9üt= ÷XOLÀDÝwsG =yŽŸz‘ªÀ8¢hõÈ)4c¨ô)…õ$¬Z ­'A}»Â£ª²ïç2cóU<˜‘C˜©»è>©ØsÖ~@®€1û4-çÒÔ!{Îøž=¦= R(Ñ“B{ìfG7¬Ë[¾íÌ´ÛðæðÞ·˜Éø¹ˆÙÞSçiK.:… pa®“ŠZ l„4Jë™Í.•îRè‡ÂpdoWny Ö,=ç`?}:a'ü÷óS»ßößOí~þ¿°5³´ù¶#»±n•$H•¼™¼Œô·™^ÇI޳:áQ¿šñ HÚF¢Ž¿¤'µD×´UJ gz£8yÎê|»Í·ü|̱˜Ú2Û!lFÛÒT9Iß¶Yv?LÇŽŸ³;}8ýèC“ô-­«/)âÌÒû¨I¢ÑuïOqÆ]Sº¸·7çD%¼¹eyÂж‰pÔùzDœ·Cº4mö’$_Ï-)ýðõóõ‡KÏíÿë|{1]×iƒa2*sðV à¢HM ßÅ=Q„Òë¡=_àì$ú8/5§ûô&ƧËAô2*ãVWtЫ8sÎñh£æ²SE¬D›¢v¯ë8¹ ¤×TÑoÿ®öV¥s=•Ü”˜”‚ü‡Å_†˜HÛ«öG)´ÎuöV«Jý[Óð©‘šÄÕ¶s1S{7€˜¨ 0O†yF5Ão±»šxMƒiuð®„óX"=¥jGRUP+®ÀpdÕjˆA?4ÆpŒ>ÁÎk°ÆÌÁ˜·™º5L¨ÝÀY5Y¬å6ãEJA'àòÔdDùÞO¤[ºYFëCaª{r(rQÝå÷umÝîz”#P¾¬"rzOœSÆúÛ¸‹¯À›Ó„™ªb ·ürQ˜ë•+â–5Â*ßh^5s¥–n³îíð@m,ç Ϊ·´ÖF#'ÚFÖJ{•’s˜_Ä@ñ·ƒ–ØßYËùýÅuß\Tí~²Ï\tIö§<‚¸Ô'4 ,CD§)È1VZü‰ìÿ÷~øùúÉ€tGõïëóË­ŸÿÆý;¿ENÖIìfKNò¹?`ÍK`s©8yŒ¡Ãã+N$Rá R©ççÇÏ~7ÿü£ÔßÛýãö×Üû¿»û_Õuo u¿ÝÝÏQÅiõG íMÜ-ñ¦zzäà‘ôÄ:ÚˆßN÷å+·Rß~Èð÷«¹ëû‡ûõçO÷W݇û½›FT<åüÜoË3U Ò,"—¤Ëñâx ‰ùBû£³a{8#FW†óð®»vº~®ö<#2A]QÑTω±cSgÄÇ{%œ..n…¾ÛD1ûh  »&’l –\Ë_#tç€j (ijߔìþO•‹ªjx݉£‡äiMUì§A5E Îq¢þ«,✠NùoûÈWÕ<;jwÃL<¤Aí‰*½ÓUPïx)ßÞH™Xx®!7;߯jA¢"šèe EÁ¯UD㆔¹#ü9Åéþ£ŸÆ~x9·)ôçf8¾OóûY࣒Ž$ð ÑÂF`iš¬íšÂ¢ØWÙ=Ñ\f@–áÈ{¤ E~þààjJNòu¬À°È(‘’fÆ)vø·ñ«æj'Aå}Z, ãRüžÕ¹€ÒWK­[QµaÛ[ØË³$¾£ ,éý€Þw¶û¢"c5xµ„è÷!Prœhêå^«ž+ò ô˜*;jBÀ3ÛcÊĘ£$:º%.--2*ˆ“æ©Ýhg0øtºº5ÎÞNK};]D ´^OQ:g ?ðó8w¬pûŒ;¨U4.¦ó£æüH²?FJýš}ÒÉ]3ã8}ºï[ù|"­‡ÌS kgJœ`@‘dxX"º½Á¢øC„¿Á lÄ$ïj;®vÚû •8”ê<áädS~ï»¶)ÃÄ’^©C¤UÌH±Î+Ãêpz…@)iÑ‘CŠ4$Ó<Ò_”ÜîZ¼´óßwç™Oý÷¯úÀ ~§*EB:ÓEnë0düý½|ævT£I=(TR’útE©¥†‚èÀ7±hf¡ ÍLê•Á¬Ö/ê#¬­¿Ve¨_¤Ÿù²¼ZcvþrÀZ|Ï;´Í™è˜ èÛ¦ •ˆ¼JGö±fH´lÛ1ˆ‘BõªWK.„¾´žš$t†`Pƒ˜Ú鳕—Î[<¬xÇ:©E„6ö[È͆6yi]=ƒ|zž¦£Þe}ªh}S9ší¼FãЦyƒÍ)HüRÔ9€QÞ'•O«ïc2lYc¬º÷sÛ5X-‚ûiíµÌÉpéƒÉ4A"ºu–ƒ›h ­?e¤¿Íû4žþ÷W«¢õc'öz„T)¯ŸVƒ4-¡F¹ìºfDIùˆ¬uT´¢)"ý!¢‘)^Ö1uµ/ß«Œ„Þ¶¬"Š´ñ´˜pš1ºüS.‹ñHsZ*OΖ5jŸ%g „ÚçHÉoñÓÜÆ¡ë‘*Yyt#UÐã@9¿@O5 ÒÐ+Àt‡¹±aFãøÝÚMCÖHïó9Úè´Bí”ùe¬¬K­6Ôª¥ŠHr9Tþ`3÷hr‹H·BU=F…ãšhh2  ¥o£k…ÔÐ)Dä +øñÜŠv~7Ú{¬ ÷´³e°m2¶Ý—‡"3òI «âúIPS"Ë tùX¿>µ¾¢Dð…êߟ7ç¬ÍãÇM¨éãeš_Œpìï|{Y¸“SÞ9ñÎé,¯cFï7†›¼®Èež.j€ëvÊtúP¥–ê÷ߌÁƒŒ~±àßf]c¬¾Ã¦­Â:Ëy `’Þ)¡öûùÚywð¢Ä_Øè) úOKݪ¬¿ùäœçÅzÐäT 8V‚.詀 Rÿg†^d:r±*v/P|„zÅÔ`uQa¸FžÅï#,æŸÃu­ê]JEÊÙy¡¶^ç£jñó×ÌNõ¯kÂÒm%¨¬{!˜¦AkjëiRŸ¡ý¾´Z^íÏép¬ñÃ%ýy-"¥tæóvÿ†”[KÙ6ÓÏžÚ˜IS£UÅîŸH}A…ž•´ª î–Ô"<2ý•Òû'XûØ ‚ÿ2Öû,[eïÞ7ý?½ +í°öþ@*ýȆVÅ%¤V9…I,‰9—å|]+ÈèSmuHm+MHgþ&H½2‹“uÇÏV`.÷霢̤0vb?GH¡ýóæ9çjÖÔL“— 9p Ó¾¥ª^ 8ÙfZ5ç£ö¯+<— þì›ìþ7HÞ³j:)ÚÐ6àÏ@%ÚäWMÕ7K‡õãž×~¸ž(LÕtøi0ѹíÃTP¯/' ¯®¼(G›ÙÁW ª×wXâNqƒ{’ÏxPI¡ÔëªCK¡ö«1Ê…2$S§½^Ýú1“̾µµº¥1áïvv=Öåìö‹oXÆŠÞÌ0Žc M°ggâ/1%T>\a÷ŸQ¥£f…=œaå'ßÕæïxßé;[_Ô`¨ý sìËÛ?"=+]D¢¼¬ôU²¬ªÒVßHÔUaÕ«C%çѨèrÉlÖ¥Œ"†“»ƒy[` '¶™¼è-ÂÁýßà¥a`#a \|ßÔ`E»5ÚÓšm5yCÁ#äD1ÕëÐ^zêÌ ¹Ä¢ª—ŒÜ¹}„˜!RnÙ^5¯¯»øúög¶÷qa„ð™EZCHŒÔ‹¤¬”¯6Ên›¸£=3Miu¿Ÿˆ‹jó_}æà`U+æ1öjÀlUå.”iÒ9“xÿoïÔ^¬†/ª"µšå ´Te¤ß~pL÷‘Ùðû‘Ó]‘0Ü+l³E 1Vx–ï¤Îö…|!©;Sxw?¢n°ºÕÁhË5Ž×dUÙµÒ^«¬«Þ'ˆ>Ç­q$“&ªQYNdµ8R½s°Ü—2ÐߦÓÝÓKÛ¾¶Ót›ô§ÖŸð«ž¦n\µÓ6—š£š²è±ý0ªî¯j~ Â­(•5Tebåj†3.k¨ÀF_„錿~~¾…÷IÏm#š+ªíšòê3SåÕ2áÈÀ¼“Ò#ý]R~Œô§‘æE¾û‹Ww“^^fÛ¾¼„@ä.¿ˆ{\bj Cµ‡+¿Rï".¯êOã®ó°é‘ÌaA#gõü”:Cjw¯?!=G‰RR3N+kš\_ÑS¤ü²ËoynÜ´>;X ¨÷€tò#¹ºáåÜ¡üÓórfÃðpæfÒÎ T#èI­&.P‘j²Ú{Hv"‹ÕšP1 8¿ŽÖ–e^Þ¶óz¾¸‹Ã²ô’öûŒV†y‹/k”ăŸn,ZÖÉsýMÜY©9.'1özªÝß/Û”‘Ò²AYq:h"yˆž2R«Z÷_¶»Ðšz‰‹8¿ê›ó‡º%½ë~ᯪ6³äÿÑŸºÌ’ÖðR§”ôÛ1MwßøtvÝîëþ½uÇôY…ûŸš×K»Ÿ%¥gkå*†Ö{eœ.h—G*Nýè# õR/j£{=DªC†­xJ¿ÓNæij??Í=Ô\…M¼ìÓ A®9?§WÊ÷?K‘Q±”—•jw±Î÷ÌŠæö¿Øêž­Ü­kð–ñŒ ¨.`µº„<Í^Ö¸.Z™“¨bhû(ÏÚ/£…E°¿^ ÚN ¬Ó[¸[ñöƒ™÷X¡öi*@7K‰@­PwÁ#-D1O=?¸‘‡EݹÎT¬®C:ºØzÍ}ÎÛW÷ùgVŽ9Çr kv #[ùü¹ÏÏ«ÎzÞ¸:¬••Sa'@§I’S©Àúž"“»/³Ð` .–:IU4³)£é*p÷@ÎbºP[ÛÙ·Ô[Ùð뚀ÚV5Fꇟ*‘.~ßç~z µ^@šå«ækåÚ©ç ð%œD&4¯wÿðsñ,¯ekÚGO.¶iƒV!dƒOÆãŒiÕwPE06xYE¨öNŸ¦7¶æ¨(³$r edü1õ ¹š_´sê7¾´îIC RUH‹Ÿ‡ˆÄR=5†5J_ÐÕ§øº}f²¨ ³´ÐÚN| ¨$‰5vùõ;€.U­'»¼T¨K`Eº*©Ü9eZ‹ËJX¸wRœÖ­É¤l—‡P½†½ðP"¨ß)T÷øÛéïÇ8‡Ñwç»Üäx›Í+)ëÜvP‡˜Y¿ë2MC’Ûc°m~­Y×Þ¹Õg6à‘úeÊΑF®Šá©*áL{†v~KiŰ—b6Àì½/´ŸõR•üÂg‰kÈúØ¢FÚÕàë{5S¨{UQ¸:hr^¤/„;ÊpŽ4î´0~ûË@¿aWÍ)@&ŠËí㽊mûûèù'ŸÊy‡@gÿ0PÀ{?ÃY-¬”Ý1¨±`ýö‘ÒËÊqÌd—C•ci%~âHP®#Äîr©)r™s}°¾ ¿L,Ì7z¸ÔÜ×2ÜíŒY†¾Ìâž[„,ó!_Ú©Öm+‘.è`µXêâ°C¬ª›-+vÂVvW BÖ­â4  zð_ž=H†ürY{OÛÊ—6*ùS«šc¤_ˉ½n ’º[v~/xrˆÕ“bجëíj0¯ ÒÛñóðs½˜µ—<ÙNÀ{z…Z0˜.Fo«uζ=²°µî$aÙºFª >1QX`ý>Ãꌖž&}{›|e[-†wì1rŽó«–n¡Òºâ¼–fáá™Hå8Ôa÷ÎÒìS ©óa;ÈWŽKw?÷C˜ì¸F.­e¤¿‚ Ø%.¿ê1-Έ͗5ò ¼æêД¡~7nƒ6Tã’a=™×¬ÉcᬊÑ4´ArÍ=^K¶%ȉ`¤-)Mí¢«fö h†¢ýøsÔ4B?¦ÝU¼ˆ0¨ˆp„6û£¼€1–<áÇ“B|IXÅEÍ•<"ƒyP‡Ë¡RÞ=ÎïèXyŸ´FÆ¢ øyÐÎZx?{²ñ͖®+Ø'+xa“ëïKM[\<øNR¢·^Ê` ݧb±Ë.ó[ý:[ÐO7Û_íÿÇ…F cwB÷.‚^$#úF%‹‹K¸ŸVÊ{&Ø@Àc­ó?e·®¡jÔã}SŠìq;&¯·5ÎîãÃ#¬ÖMôyhŒÑ útAˆ‚!|d Ñ‹D7‚Œ¢Vý´rY©IuæRêiåèH¶ÎÖÛëÄáCM ~\Wò^8zÌÓa´ß ¶N®rcbwãê9\Ë r”ƒõh“ˆ—ñ"í÷Õ:Ã’Z@_”DQ©ÿ‹iøûÒ£ªu(Ö`j¤Zl )ºÿú$Ž“Ù™YÝR#b´ÅCýE+шÿMˆ9¾Ç ‹ˆ˜ú ”ól@V çvÁØ%¾C aªœŽb…ªxI5…¢üh,óÀÒǹˆCLrp÷²£ÖÚT—½œé\"ÚÁ¹‰ÎIÔ.ì]!&†»Ͱ‡âËR>Ð÷¾P)f·Qlêbz£‹ÃiÜ56--¯p"pq¹[ÅÖù8-Ãhv^Nâ¹a…ÍÆ:yßáf­mÇ–±ñ¥>÷Cðcˆ!0ôýy“¸z©ý}1îÿõ6KÓï«/ë|EC, üjŒÇ´Ä)f^àѸ(ôñ±þÌv¯tˆ=5‰“§C]Â+ÄÔÑ)"ü‰¤¶Ça) # ¾·Ñ¤TMgå ¥çVa§1 Aê·EÚÄ.ž£ûþ=’ãuŸ–5÷FWµ× oA„ Ö#v‡!µŒçÑf¹Žƒg?Ÿ ‡±cétŸBëRÿÈ•Ü`5<ŒøËŸ$D °q=pAju¹¶î.{ã~£me@µì;KP÷$Yoš ¸q ¢&›ù~Ù ù>Žºª$ÿý4Ç©¿‚’÷üK/õ‚¯¶›/ITk¸™s†‹ûží¹à«)è.•až8œ4bEçô’«Â\´{k¨oµŠaär«šý-B<«èéñÍÁÒH·Â ]^`‹µ¨êi‘Ç õzOl}'Üe°óWqzŸÃï#Ïžï¸â;®É•A~'ŽÈæÌ-Vi©•]¦…žD*¦îZ+Ž€B¼¿ôôs h(‹`" gæ½ä¦©ç*¤“Ë»^À¸] žb3ÞãCÕrh™ }Ù]¸×{ L´Œ`Ëé@ËÕºKoÝëF]¨ÓÖ0ëþúº«¼°,*ç èЯ+Ї~LÇ ¢óYB‰ö³©÷Ƈšûk”¬µÃõõ\èá- ¢:ÏŽ§ä¾ÒËi«p²[¤·áž6Ü¥þé¡ã cP§ô²%>’ eÏmRë=ºÆØAžh"݅ò›Œœž{l¤i–ð¬lÒE î¦ ŠÖ™ç)ù;4À*™¦ˆrÿY¶¯5<1ëd׫åváy¸ £ÅÅ^#/]ïû¢ÈGÅNï4ÓäÁj3õ¼ÚzwÿQ˵p~So¹\· íFÒPU4¥^Ëõ^q¹n6íÅúú¦]9@TçÚ%In“^Ízë9J÷ßä»ù+Qž®îÿzN]¬9`JŽ=žÒ$îRKÚ¥­?Oû úžxI# ÕÄãÙ±Þ}×NK8‹§³¦#rL–3îéC ×ïxŒÆ¹m‡CÒmn²X»e+pÖµn¦*oFû8ã)‘0Æ 9ÎÈ“élÕå™”:x *6‚Yû&bPk¯ÁÜ÷½ 4Ñ•ªT×ÀDŠ›JjÈ/¦l)†t19àû}¸€R,vSÒl¼íhnkÅ(ã(³³}S†˜w>§e!}Þ¦ã°Ë+¹ð½Š«lÃeò¼·öÌiÞý4ù"ÿxæ"SE#æè c¦J‚jÊ,Â,š÷q’W¶œ÷¢€%ÁòÍCÅÍ»[[¼PEGYºä¼/•}O¿œåg…3ñCÏ'‡9 ”¢ý¯aæ$¿*`RrüóÈwRGö‚’+‘“K×¢ú{ŠfÞ§•߆o`Ï“]ÿ>mn­àA\$ÐZ„ä¼ð8yBI)2œe˜™²ЦàãAAãj« /¤ûîË®m1ðÀòs:õ‘(Ö<ùu¸í– D™©8B´L;¹`X`D³•0Ußxá´=Ìï ˜ØÑÜÎ%õu@'³Ñ£»Ç\ŠžžÊuÓ™ !µÛ¶)®d‡wµ`á)… ¦f1]úñ ¹ÉN»c²¹ÅœK֟Ͷ)ƒŒÏf d%øžØÍŠÜ1u½ZM˜,z3érÿµE¯åŠYMã$þ$QfÕ(Ž$\Qÿw±ùqœó9ðË81„o§ÀtåskÜ?—Öê]˜YÇt‚ã Ãd”\8LmV 1›ÚÃüÏ×þóó?ÌÝ:þ3ÿóÏ?ô}ù˜‹8ŽW]F8ÛÝ»ŽøÕkkØ-Ϲ.{wð^³\‰Ù_õ:å"?ï@nÒ÷¤B¼Pn“Ü!òƒíœÛ`;¦Vº@ɬœÑ„å}üø˜õsZ4°‘M2G4ðˆs ¤ì{”ðëá%W³°œ¹!Á ±ê~Ü%’2 ì2Üt¢qÅꦈñ+}0¹Uþ4÷WM§ç2Q4¶‚{¤<—å´Üx ík0E˜ü!òÃjN>ê!6YA“…q0;ö`F8q‹z}çÁÆOi©\Ã&¢@¤¾Æ–ä¥NnåmGïfe¡%’zì¯w„,Ѝ¢mïÞNÑÀÔH ×ÁŒi†iÖPë™ÄqúÇjˆi¼†ë6z‹Z*¹–aæ¦à¢1ûr'qh™CYØo—ˆG˜FR ± ò‘Á€* ôšg`ä¡[„S÷>-[³P¹ÿò#3ÀÔ®$:ðcEÍPøJ تz¹eIÕ-(Cjƒ¦ÝQYöfZÅí¼¥7³Œó´îºÖGšk<1ä@“Jmá0çZí8ÄÏ*í`Võža…ÌYK|U+Ì4¹€båñr2{õ _w©‹3Û‘FæÖï8 $Ás ’xLü¥˜Sïœï|ŸiJíƒfÝôœœÑòOî§[QÜ(C¡1*“'ÉëÙpæû¿ÖI±\M þ<‘˜ÃUªR ~œàç¹…j„ºlž|}K€ÿÃ]ü–nýrHÐPÞÒŠ^¥  Ô3’†©œ½¥fo.ó•‘R´ Ê·’¯¬¦z±ZÒ ðòþS·ùç^þÄ@»Ø¹Ïð‚.R‡îuêZ‚ZË–6²Sšªð+»­êR=\Ëè<šÇ½criè¿C=N€kSÈènq{¥CÃ@źžžX¾[âa.&éÊ{+­¢|}Åyõ@åü’c(ñŸK†uÕçí 5P3à¶ûœ 3<åù… =µv#ØÆ¹¦ÕbÆhíG«º¾{z|%$žB£ åñÇ»¦—)—Î1¥3UF°4^Mw`~ç´ÑêÌ»^«Z½H_9¤ ¶š‘¯çðƒõ§ò%~KØIïúi«¥€ò#z‘fóL:ÐSuë ²ÔSyñë´¬M†_õCRÖ>+(È(‡¡F! ²"5CÚ5FFHI"°ô«™&¶Ã³½üê¾gxÝY\o¶Þ‹k KżgôÜ­}L €†/ú•š®)™ú.YÞüšžñøEíèÉ'äÚ ë°L¦ãÖûnÕâšzÍÅ1 h²Eh·òÝWz·ªÙíW¡ «Tj²Š™uŠpZ³:'%œsè³ðÍ»ØÉjk/áÜZ¡iÝ‹Qt ¤  kå ½¦Æ°ŒÿùÏŠqóõôgö/HàM­ÜeíÛˆ–0“¼¥[ß»ÈÞXJ܃%m»h´âNiÛ!e«ù“‰™'ö“Þ{ÏÙåç ¶æ_4×j(*Y~å%J‰ËÃ)|ÃwdÎ8ƒÖÆ“‘¦Ç²(m°M2òC P„fP¶˜ÂPåëÿ×ÿ{¢¤*xg8&ÒÔñPö!Ç÷ý{‰ˆlÍÛg}¦v÷|BGR¶ºM Juh)Ä«ƒºï‰CwP³/h»HÑA|çL©á³3{R]Œ Þ¡#¼Ôvgš"ÚoúÏâp/!% côV)òl`‘/þ>†³åÒž£œß¼~?+Y€\<v÷ØÈȌĒ?†ÐÜÄÏ.ï¾ÐjM•åÒ²žŸÛÏèÜ&mmGoUˆõ0‡/G« °´Õn ©šïç9Áç9y{Ó–ÊŸ–Óêÿp]z™Ê8š8tð>ózh§:îžúÒCÒÅI ±^Âö'Ü_?P\¦RŽ{J•³–YØ€>l{㉳O·ÔÿVCkÅÊ¥Ÿ{¼|5YF@GÁð_áÉP[Îeªƒ0<×¹çʹ|ÑÀ{±p‰ ûYĘë#ñe§~[Ó˃I ‘@–K¡< Qè`CÓØ1Ðß# ãH>¯PCsR¾S2{Û÷Ažpl  Ï^°ðIin>ÑÝfšâz†}÷÷{â~ßì))§é>¥ç³Øðâ»h^÷SûŠ»¥î°®~yX~\öe±yyڟϲ!í &¡Êód:5I†&ÒÎ!Æ6~'EþââA¥zg?Qå§SóÓ©|Á©€ñëlºSû™«víXUmc‚:˜ê…´Gì?sõ÷Avt>K8(lz¡Ç@_UTÚQÃ.lRU5'_ë=9‡xŠŒ+}ƒcɧ"NM–?—x•¶ä“uÿR†8g×kdz¾œpñ|½þ"®»ÇÒ|ød==Çó# ÚR†ì cÒ™Iìú^기ѩ![ÊçmMDhü"«„‘ŸÂ_Žb¸û¨í»2F÷¶ÿxï­u¾Â‡¼¨áã–xK]x݃L®È"¬)q£‰«3?+û’Uøy“V?›‹ˆ—ÿç7Ûœ#–G5K9¾_äöËt熲m^Vˆ?>%JýÖ?DtDâßþÅÿ…–Só.ïú¹µóóóííæþ+­æ·÷Ûíöüô4ÝÝ_,ÖÈö¹Ar³þo33#éâÃØ›ë¼ }.›ßz&S;JHj6³· õ¡.Józ¨Aêìõ¿ó¿Ó¿÷ÿý˜þý÷ÿŒÿº¿"‹8=ÏŸæ²”¡9üµ=Õ‡¶5%úâ®)㄃[µ?%·J"]E}•è Gi³ì}Ï%9½z$T-J0¡Àçíß+¾çeX¡´qFjf.&ïP{ݶ@õZ7€Jw/ª€f€1õðiOGd”aïT%&Š _Í(Ôµë¸æéZ7…£i”&bjEbcš­ÕÊ/HÕb=‘)¬@úÕPæEªi羚F ¥.«$ÚåŸûCgXÇ6^S}Ø—5Ð ˆ _†™]Ï…åâï«~MoQ-‹€…Q7tp®mVÚj;SÓÖüVè›§lQ*]˜Öl¼DawÈ`¶= þ¡÷+kÃ(âmî$æ«ïÃZ„WàÍôŸîr v¡þG“¥´lY-·÷-9™‹ZlQŸS©Øqm­«É¥KIPÅ—^K›ßнÉÜ&öW—¸¶¶hèÖY´~3?‰ ³Ø{J°ÁŽè~Ôcƒ¬F?I“Z¨2ɉ‡)»Ñ¶blÇQRp@I­U «»G™­Æ]êg•#^ªk®Äd‚¥kÿžè£]…= ¾ƒ¡€ô4U,}=ómw@—w~1ïM Ávà‘|Ú£÷r ÁDiMÕ¡ò¢’wuôà›åE…Lôˆ¶„«D'{&¦í‘‚ÔÂÅ$ÖGŠÐÂmºù¯ƒuûóæ_ùQ©?;èùãz¬ûh:—tðÏé¶´2Î|ø‡¿¸°ù¾°v‘‚›ôܦy¹º`$áŒ2çâFy)À¾ ç¸hø¨N@¹¢j=ϽRÊÈJR‚ìb3ź«*Ãbh*Îi´ž”…½¥"k¥å´¥)»ùžãÆyRTôÂö:9˜bõJÁgW˜?µ0ç[‚;ÿøŸ³²d:¼v€¢+-´ E£«Ïó±pó[¯RW¸öÙ–:£áë®Î^aPsô1ìΛÍ1UKú¡lŸüUÒ[4—»Y×Iæ½²n§í¨0)Û±–€žK€ŠÖÇõeœ»ÍOÅ€÷ý¿u4 ÔcçB'È2tŒø8×»šÂTNßXŽÊ­Énœ„õ‚F›”l¾|åCÉíÔ˜­ØUâ2¥í@‚ Z; jÖ¯DûMeìHR¦Úí|F8¡D®Ú œöm©jÙ#ñßK»žãºa(YåM!1jû¦ ÑÝò¢kÞ þ_Ý¡¥Ù¡±Ä¥’¿œ}ÏšmK‘þ)ÒoôÓF1§ìÃǺï7ü ÏLhNØmOQ›_Prï;Qµ ‹¤¯óŽ’]_ÿ“«áÒ E±rp;/¤[wù G¹ñ«§Ô;x opwÉDɧž„ BÂêÛ;d?g ñ,á‚cÌ^H0õ*\~Zf1ÛSÿÎfPbX•A¦ª­îb¨lAßÄP\ÏtD~ ,«”–ãä¹Z®^¨,ɪÉUØù¾¨wèäxWCºåýc7?ÇS¼ád%wÒ$'žâLêÞSÑŸÐré&Ø…)Éaîª`.Œ•ãq‰éÌ,%䆒…2–AþRVìΙi1ÿW)!=ãXúQ+wJûÈÚó8ÉúYé ÇÝ*Ý’/y,ë„Ù®ÑZ$ssFË?tšþ¢Œ2r—ãø(ب!­2”Ýå Û¶ïÌ­' z«š2ÌJâ¾½íB¸ãÓYÎ%ÕY”Þ$U¢´îŸ·tV&ºú9ô‘T†ÒpwŠÈÔeQ‰µì&³(Òw|™ÌÚÄ”Ò)×èî!³0•ð’Ø50ç½eÿ¯¶<Ï«› õé&^"ê<=GJÓ¼MÓp‹¶žþðáþ8À¬Ï‹7$«b»‘¬ªÁûòÒ:_tšÔ‰ró>‡[sNSæÒÍåÚÍ8žw ¸ªM íÑóÏ#ÎýŽø;Fº”¾eëo~ Rõ¦ù¹ÃÌ›EëÏj–4[Q\k"ênÃë»ÉáôGÔVáÄZfãx–Ó>&iˆ £yKGŽèê’ <# ¶ Í•PþnŸsê’Ìw¡½‡ú˜_Q„²Ê{gŽé€–a¦™ÆP]²zbsù&eøé·}g8½ô¹©Âywäo|™ŸÜ·c»Pפ KŒq hŒ#v¶Ë Ê.ýÆ:ð`*3R .†Ô!ÊÇHÅÉ«ºœÂ ô°r­wºïƒÿÉN¯:Æ^ •öú ë¾sE,Ù{7¯ ÒùOÓªÕ´pü'ªmi"§Šêmx¶…sK ãaŒ`ŠÖ,$ÿe˜ûýN>©7ZL.gèªÓÕKž1L•¶|áç°»éÍüZÖ=F©ŽÏ†’çlÒëøÖòʳº6QbCÀe·Hƒ³&'®1%Z œÉ¦ˆò‡2õ´Ù+!¼ HÑ"ãó]¤{3!·Š®œžÝsÁZ‡¨… íš"ƃª;©hq«ãRßW¾ä$œ{¤!i+ ŠÒc^KzòÝ­iKUZa¼@cêÜ<+"xUÖí qŸTà|Pä¬õÚÌü„Þ4÷ƒýøÐ³ìíG¢Ó6T¦oÂêí"1'D‡‚|ÝΣ‘Ñ. ª§…ŽÍ¯/^ù«N]FzdsB8Nʇõu8)²¸rá+ÄgÈKFþÆ™zŒóp'YðÌÕ‘U.Â<Ó¦r÷]Œs²ñÌ–ÞU¶  ¨{¦Þ<ój P»b;ˆ=¯6 fèvN–1Ú'Äv0R˜“é‘?©È{!ç(£qH s¤çâpÏa¦Þ!TÞkŠQn=MÆV¯æ•{Ôû™¼2Lçâ%ôïѶû§³ÿï€Ns @ºìÎg Ë·›Ô¥–ÉçJ‰”wgeÝv[Ëë8TCNõ‚«fa±¢ÖÝ!K©Pþ&ÉÈ B§%˜?넞àˆÎM™ÇtF¿‚d›(În¼ê¤»H̹“ܹC~4˜úS”?^¨7¢½s@ß…¹,[Ÿcþg–InÜÿ†ÒµÍ¿N‰-;M!ÓnhwNeÔs'uâ-w¸J”'ÜvÛö_~ã—§Ó"»ˆ†¦Ø8™2Žî<ªŠ8 èö –š9Ôàg{7Ê\ ?:V“uæS(‹n!†2𣍕½ ò”‹%øË—¹–³´Ð›ebôÿVËTúÝŒqëZÖq~ª{6AHcå’Ï‚ÄKÚz†‡–t±R¦á2ü:ü5x‚õ.þâlABøiºò‚~³á/›”;,Ñï)òí7)ÓîºñªßˆvÁez-K(¿›¥­~ÖŒi3©}\ÿÊ(EH£¸³ok€zuÎMÛv‹@¦˜…™Ô•Vº×íWªå»>¤».›šÕ<¸ðî¶Tp[^f_Úk¢m‹ÉN*!‘&Z$57žñ$Pz¤i eWßNÔ†fõ: K}|×VðìL–l0?œe”‹ zHUœ9œH:mÛÎa¾àQëg½Ú˜2˜íaÖMÎîÔÛò ª´¯EZü\&…Ë)?d—ÔÊų+µZ[>êÀ\:CyZ®2åí²òƒïY–Ô¹j×û蹸  Ò-pÿ0fÒµãò ÒÆ"W‘«¹Fˆ8;g> >Àž›OþºKÏú]†¹Rì±LÃ$¡ŸA îsk¯g•i˜Â sQ0è§ óü8¸yKs6Þ“­Á^M) *¯g¨l#6RA?ø”W˜ŠSUµbä?ÿL£oO³5ÉJØCú+ Ãè¹C@ÿùùÍ|À÷ýÏò›ÿ?ûÏë?¯wHÄ’Ù;WÍðʪJ<ô¥•ªr#b²)£5QðpÊqfL¿L©§™ÍÀœò\·Âå’ú"'Õ*ß5)ÕÊWÉ#½Ry»?´MdA\FÐ]¹ÈW“¹òÕx`/+Äÿ”?M春ŸèÌåT¢ ûß_€–jÖ©¹-’jS¸ž¥½,“ö‘ä¿{.o²  éiÏèU³›Q·Nø>ŸŸêsU½\&ßKƒm‹É-KNÍДQþ6¹‰ëÓ¬oE%Tø¨Aü±ñzF%hÖ=½dn ±SÕ­mAûÄ¥AÓfæÿßËûÜV˜Åæ¶3:+C§ †NÙ”a&N͸/îî˜n«Ø+Ðå.¨`ì8°ô´Ž¦1:ϨI!Ë+Í߽ϥ;ý:¹Cƒð¥Kéj*~Ãù5˜Åè¹ë¥Eê"ÒÐeå¹íö5é˲ÇB6Ûeq!Dm|`XDûG¥4§½´½Ýš‰/A‰‰¬})H\¿~›ñåe5æ/Ï‹“Ü,òÈ0&Lƒ÷,ZÐ¥ZGiË ¼…µµÓd“[I‰HÜñ£6ý(¸þkŒs “ÿ N?õèœñÔ”ò·(z‰!"œÐ Peiâa ÑXsʵP·ï‘L;©†{™a° âœ6DSÀŠç³Šer/ùœÇJ•¾ª1Ú˜éu߯~ ´ÇUð$wWO^'B,›©²Ûì5ÄN|ãDùò7$µ"¦I¼é§ÿ=/-*—ÉߨÜÛÖUë\©–»'&*£J"­«0QùN)ÿÝÙÿî.ÞÌewp¢S³1ßB“…‡ë0÷×ÞJòÒsÊk*hÖ·¬à“­Aæ]q ÿà‰ÂSjFC¢{ÒÖÊ>èXjs»Lœ¤Ùê%}Yƒtšæón©Ë÷žQl9Ÿƒ£œjÇ#õ©_TUƒßÉU9Nµ†ëµ—·ª  ¾)wù­s¬|³Ñ9ˆJŠˆä+Ÿ 2ÌÆìæd$ðNöÔ¨P¨Zj—ÛŸ‚Zá÷HZÛäÔR²]Wâ\»c×/ÉÊ^öû÷Ël=eGõˆOеñ9öÿë™hÃn+ª¸7M +‹Wj¡V¤òšòYM1mó/{¨õÔŸ\m“­©æHµŸ¯ºû¯ÒšWJ!èso”¡ag~éyÂ]zJÝ2ÊM.,¬¡Ö·éÍÎVÏZÍÄÃ2¤ Zë ¤-,ÓˆùL·û N眴„ó¥i›PQ=…øÛh¡¥óÄâ/éç)üéÙÿ]Í`?ªü’Žð àÕb©v›¸%Ì+ƒÌÇ¥PàAAÀÎw>0“kinÜçHœð·]4Qã~fÞ̯ sFϦî=¢ägç,gk©ÉäpRºlÆy~j„µw2ÐYœ„~óì¹5@‹ïÑuó¹WÜã@õæß‹­F]·¢,µð¯Ž gäªT-^Þ…?˜ÓÙ/h«7‚»Ùç;Ùñ}Ú(…¼óД@îZ||!5ê7Ói·Š±Qïá4C¦ÀíÞó„åc0 õ0‰[šeRôT¯~¾Œ>IbÅXÑ¢º$iÎ…ŽÒ{–·JJß*YõP@"˜¨}“l-yMIj=›…Ý`†ú‘ê Ž.4šã&è.ߣeÜ­ýWïžÍ¨ÇǪÄÒ£W±éLÇ_§ð£ kÚO³¼º”9 m“à =í7/T:õ¬†hdcûùS¯HSÑÅvê(÷¼]xžƒfH‡î„Ì4¤Ÿ’ïîó¡./hF©vó>]ä§rH«¶ô«ÑÚ‚»]e:úòY§:P~¹IÃ> Ì«³«v™¿Ee„Ûbõ0꽺 gcÜvÛ~”¼3Öòº»n=5@-J@¤@Þ³èõö>ÏÏn³å¬ß{q5àȉh³-·›Š6$µß‚Œv©ÑÓ`þÏ<|~$£%ö ¼x*£çD#íëÚ&P ­ÀŠÏš ]¾Gý§I+çù˹öHvÄçMôtÎ 8Pž†©ˆÒ # ›áL·åj|aê192¶…¡êvÂÓŽ—  œ‚<·žY!e¶˜b#O„¬²§%,ÂünÆqœV†¿1ú–ÇYG^Ñ’•wïº{’x€ ‰•o«pn†)»å{ݲ¾ìÖým9€ó@™ýÐòÇIR"›/`D;tÚô ¸|6²#×ÕhÚq>çÔÍ—“%µ–¾ èåãYXΜl:;zÓM÷ÁQg›2JÐPvš¤ñ¶bœ,}-YèÇAXwÞ^M`u›‚ÜrÈ…TÀÄTT3~ŒñÈÓA¿Ÿ]eGX‡TÊ5}Ûuì r§‰Ä&†Ä×÷¿<ß¼å"{£I –ŸSž #u˜§òþ¢›BOçŽvºN]¦§°ÓÙ| FJÃ4j¨uÿA –Ý/h(»PÞ:Yö(u-8…§K­8¤‡Ë¹A•×çÚµžŽ¦ï14Þ³bÍéah_Q¬ÛÄ d¶’¹Å¥aˆM€œúÌAJÙ®!çà.•Ö´¤K ´æÊÏ ¹†Ú%×þjÐIEO¼JP"†Xséw»£À¸Œ‘2aÔ<9Þ§&©ZC>ètSÛ|@®\o |#ÒÌ*¤¢´ä‚ÜiY“çþª³ÌYþ0…ݱž¬ÁÙ •åO@J c:E˜PjÉ Šû¿r_§OuåoVÔd‘Œ°l9Uê'º)‚üþndÚÕv´ñ\ÐT„zCÉK2ĦkÊ Å#«â«ÃU%®‰PG™øG]¸MäÛŽëMñS¶‘¸ïAþç??ßÿùÏÈÍØjß…÷Ï?óüÏ?ÿ¸ßPg 8‡6$Â%’Êv—^2~"¢­eæÈy!.à–‹þUZÉæî‚ß‘_—…‰ôÔ-2Vß®НÁ]t·ïz8Ønx@*·Û¨Ù¤xž¨»Ì±POR, ÅÓrÎÙ3%"£YùC]7VSOÐxs±p;b6TP\¬¢XøJ„HÅ1ÊÚrë8Qwç9ú‡¦Ð¿æºXtOzÊÑÆ:$ѵ`=‚IDyá©€y™(¯†ÖrÈ–ªÑr Ï!ðtûXCµ 1f åïW£¨eë¥×‡ÏrNÀ)Æ ž‹5”³IÜ)vP•YßµÌc•òÚQ ÛÉ=”ýD=“}‘2‚­IuSg=æ×¡t¡»çÖb v~ç$×áÌ|8SMêÁUq·B’¥Î´·ÌqïYF‚“$§‹»^ …É0=4gO:°.Î¥;ÃÀ² }´wK1»ŒtÇÔ:¯f>tµ\N|/ FTÑb,|{ƒÜ5 ÇsyƒJaÞ_èÆ Šì)ä‹vÓ‹q`trHyF£ w ÌÖ ÒG2ܸߣ‚–nǃ )É·Ú˜¦ ò·±éêiúC;Ïïíü2jýš†ÖöÔaÌ5vj§î˜y7KÞæ½ cÁe¨^È{2:pRÈu¼,:­Y‰“ªFeK’[Ú“$‚-o}ØÁÒÍö °î1ú—-©ÿ|Ægôj4´ó£Tt"ŒÝEŒ ×­ÔÓÛ²zë411†cE®Ó÷Ö`Æ £Á.ÂdÏD·öŸÂž7úóÓù¾ý'œ_Šþ5Îþì?ÿu?¾ºþ5W×q)]“øŠÑ[ó4®ó„©Õuº å–KŒ‡NÈõ,<ч m+¼&< áôygâ+bñþ,F)3ܲnû¸ô¤¯\n=¸ˆ}ÌÆ8Ù[i:Ìjœt¥ Ý“A¯BªBôЬÛ,|XQfá‹(—g’E¿»ÍO®O9áÑùgý kE(Ä!ª«ñѧýW!R|Ñ#%#°œ’S QÉš5ºNó«´ßÓ0ÝT;9½|.Ö]àdˆ¾_\܆2qŠ×Ötk£RÄ3hšê“9q¢ÿ~mµ-²p‡øÃ bõ‰Ûÿmo¶;Žd >ûgäZu<Žäˆ ©è«¥{û¬~¸ù¤÷üÿ¿hlH8TTyDèHʪ̆ɆmÛÒÀÇœK-u*±zV_E«Çªë¨þüdñhlÒÈÌ0¥5“|_ü!¥^k¯ùìéÞ‰]‚œ;±°çâÿP'¶545ÉÐGª™[`‘‰•©;óŠ¡<¬2 Hþr*ÃZ¸mj«¤i Ñ™4NƗб—G·hÒq©ë@ÿ º ÚÅôv'´Ë«óî3Q7M| 1žÆ/ü=¥ M–°®ã\Œ¸þL1ãÕƒœnKm¹ óÜD’…b`Ê&”~LÔ­Y Ò…©ÇñeðV÷«¼â”ù×Ä–°F`È;Û |HLúÀU” u¾p±Ûan¦™â¨HZŽÒ/~šŽ7Ö¼ò„,ññ1Ý=׈º)þŽû¾GcàrˆÂ*áFbõU˜Ÿ·'Ô$ž‘‚` ÃÂkl¦‹²•åçÐeY ÍN ^ö–u¹è|{ߤÞöœçkNqÚE{¦(—b1îᬎÔÊ9¯Þe–ÌÐošÛFD»jto©¸ïFëÆÇ[÷K?klaO}Â…Ú]ŒÆ0˜`q/ø0aI·Üßêýº=(Áâ)y­n’/—ÀNê¥Î*žfàzKú†x*æÊç‰õiœÒD___0¿ob1à\ô£ñ;K¿Å9åZuÂiKùjV¨ µ÷¾Ï”“§žßÍ$tW³fâ—í¨ÆìWD# 3övß«lè^%¹Hæ^§_ÆO™[ji>Àùµ˜sW¾îñáãÃlÆO¹ÿ—ºï´ˆlèCÇýÍgÉî†IJc~ŸÑ9Òºê^«;ñ³1¬’f[6(W^ l‘Jé·s )'ögrïçˆê‘OšBdÐmßûè:ÙÀr­Å“F€Ôažg…“øÎå¤pb?{° …4¤ÄVž?ðx†DäªÀÜW4%¼ÃŸH{¬òµ…”(4Ø)øÞkµš‡ùu)ðišJ,ÅÁßûÄ5ZèrïíÌ€GEUÕ5ÍÞД;RöÖ÷v‚rú\í *%M(£ ]“"c¬¿’´m ܾŒxÑÁLdÉ0åcýÚª ãÐ0¨,åµá%!S OR e} ¤  ç-àI¾~²ôk[åByYÁÃ+ˆqcr­u¼MÕ°Qo3·<Óó=ëöá)ë“.¸R¼¬@ }òLZ çƒ1Ô bÀ”´\Ã’BD„¾öm“Ö%òH½Š·©Á¨’‰2’;'&µºµœ~ÈÓµŸûºž…¨1Äcˆ‡ƒ4_üFñ§KBUŒë®¬uÅMÓ/ÔƒzI¥KMe¬ÂzÑ%áëHO»1§:öõüCî×Pð¥ÑYÌVžS‘¼Oã¥ë8SÖ‹|ýõè´®ü"a±jï2žî4\Áƃ€&@N©€Œö|Ž×OqY¨a·ÞSN'´=Bÿ¥mšóùh+‹×Z„+;fLž“PžÚsÛÔÙ§6%œ¶%+Õ%á/õÌxøI´sX¤‰Õ×Öñ‡&ÓµPåEݸâè…qʲUç¤ißM¯MÅš»îe’ßpñÏ´ø]úù‡~)&/ ¥‹Ú³¨_/¼¹ÕaÖ|¨~gw6t’”²õqÍÑ Ã¬É%˜t*« £5_^†Ñ+z€Kï 5¼÷ÄŸMs( µš.)OéÄ ŸÆX´M„þüÍo~Ÿ2|ºßˆÕ’”2øüª®£Aè N.õm,^Ñp«Ã<YZ¬é·ÁH|Ae1ÙSç¸íaò_N”î¦ážU OñÌ@³*Ÿ"¶àóEºô¸~—‚-‰ËIÄsĪˮH?…‰VPù]ÖÀû”n¦%?é¡ë¶uÕ×hõ‡Í)ð.9u€Óv‰Vàü³“ܼ)Qvïåäô /${ô:÷¤E­<’¦ù"A‰~²…טÚ^ØÔ)Q³ægâiİóTNï:© ‘>ñhcö4|Ý]Öx¯¡œSOsçŽÍßd†²|?é…J­ÎAC€ƒä•-I껊q_‘r’"ýL{?¸•ÊEßär0d%ºtHŠón“lië03$Óx8'.{tSI “\~-O‹r °e’…iAêçQJÔU lùíæl˜«4õ¸;´åØ•õê9VÂAÃx¦œ ñß¼Ç`<¶ë–®Ü"*Ýß©y<Œ<¼ó§‰ãº˜C«¸Ò³A1É’VL[Kë„=  ƒ¼Ó™ÂZ§ˆõ´˜–;%";%u˜Ÿ·áißg¾ïµÿ$鬺‰µ*zøÅ»@S*WÚ6 ö ®?š¤×rGQ31˜éhAqÜ'‰Ï©6sn\é­i›ž­{zí×!]K£ÉÕÅ{*D°V‰è¬ …qª¸€n)E ²£Ôá± œpžîJ8=»ö'ß©†s³Îó4Å¡‡'êwõ \'«âAdÇå¼01&¥kZ÷Û‚0ã¼ç¾”xõ?€ò:L¢¿˜>fåÊ&Ъœ=’¤DKÛêöÃïáéííC½‰7WÝÇ…5Û«Äøî½$PÉry‚¨Õ”b‹L“—+gTÈ&¤›Ó“²Kc7hòG7ä¼úó”RšCë-åq´ÀiSvôŸø~üé3šÏH¨ºt&h¾ôj}ƒ*d¨àüs³S¾1 MàÌ~‰kÂù=k#ÖW—9¿K»¾6É:KN~"zèП)¶Cõ* àêTpnÒš‚ª˜MˆQé_û+?u¿{P¤@/”ˆÇJwÜÛK²ÞÙ‡Jßߪ6ý¤Šþç­Ç”ˆxq>,É\ “§Ç¥h;ß´-Â…ü ˜zi Zè0Ô…)¦+®š=ðЬIàoÙ=ø¬8[»ùü Ô.ᓥýTgK˜jÞ¯*‰EµÀ“}àîh ¦Ø=Wæ¬üŠI¼BǨe:»&ñ®ç®Oº pAèİÌ#èã]ï5º¾ ïÄ/F56é/µ@Ý%@š>ÿ©?ê±Bzv©ÎH‰CÄ×øü3 zàôr^|™ôž[€zû%ÆÈ~Ô³¥ZˆŸ‰0›ÅßÍ•©|Y©Bz-Ø<ÏGk_`]6ªÈ: ­ëïXõ¶:–ø«/εè5¨0<ïìÃÒ«„êÓkTZ½§âÁ>ºû3å™m×} »Û´°éôôcè+&ÿŠÂÙg\=Ì×¥ÂhÎݳ^–H/à,R BƇÊ ¡›šzóCÕ™[˵_ ó#›N-ÇáN{·çô jÞ‚ƒzƒ×årÂi‹S/¯â,×{@ÃÈÛ«8çʈ€œŒÅD6è|ìI2ªSHÍØÝäG½¦ŒYH§l=)átås££§ßj:‡ôZiÓ¹ÕÁ%~ÉE›=]H=$fFD&Bq›MI¦ØÓyèX<”ÀRIšµ½ÕB¦Ø†w¬QÜ&Sœ‘º¥µ‰g6:>Hì0œÑ?q‚Júcåçò6…9bòh?gŸÕÛ´›‰ÐÅ•?‰ÙyðžÑ-ȵe Io ×DÚ[éç-ÇÊÃ<{7ë×Ëñjšmª¸M‘2qYv`9O<)ó@ò*Ìïï›"Æð©¯w‰º1ËB¹£‹ž ÷ô5ª&JNBÚŸèw ¿Ž@¢tÆÿŠPþkÂä&͉°ôÐïûÎ9ÿh œ¢à¿‘Çï@3aù®Nn²:yÝžSm §YÁá=iÛѯ‡@w :·²R¥Q„}¼xžB›ñ?¬ÃüÞã“ Åþ WpŠ¥iž:]„eÇy^Ìáâß´{¥Ô^i¼IádŸ¤'Òßžöxíw¡ª‰Cަäèà£J²tbi¨T»ÙÉ““ïTÁ˜|';/þЧ±+\»4 O<=—wg<ü¼PR EBT ÐUØLdòuº7© h6'Z­£oÓÔe<ðs'I¾Ë[ãç÷MöÞù™·5ù¤ñO{à·U^Oœ¾Ÿ…:6(Äe<»ë5þF™ü55_Ö‘zíƒN?û̬ûES“¨E&_ðjø9Ò鮯ÂÌ©ÒÑÁçjOc꾄“§©tÏUGh7/½LK߈s|–i´˜~‹{9Ý·QwOãÓ`^ßݺ ¯~…f9ê`Ž=Ÿ€§¹0ÚGgô%iP(¯NG'l Ú ´šÊá1Z hºæÝ(ÕÄ:Ù†³úé¯Þõ¤>‚+>º‚ŠmP~ÑË~ÖaFœÃ˱fííIo’H¾]Ÿ ³H·tá7ÝØoõcÿtùñÌ| è²Ñ|œâQâ5y˜l г2ܸ4âЧðöVm ýÎÅë¾{â5ש–Úä¶*LhFG'DÛÖþ49Ú-¼ å i\d5Ô/©‘©Îu ·á};<~攵ÃÛgI!AqÄû…ߪ…X¹¡Èø öœÙ¶¹n—ªå .¸pyÞt”Þ%Èš#œxBNfÆtðs‡5ã]mH^“¡éœòŽ$Á_y Aâ®ÂЗµZ×F¼ëÂþÌ O#h•¬x/’yÞÝê0¿–BS?³`†“d^}~|ò£›¯R çY°&¬iºO»& §Çég›©”Gž‡¡4ÇMË& Ñˆž¥‹^Ö×Èí7à¿©¸K5?IŠ· ŸOg(áä”ã¼)ÝÊ}z¶³™]©þš×IÙ¸w>Æöž…¡Š_¡.k*ÕŒ‰|cŽ@us(Ò`ÏT®>~\xÃ{Þ^ ‡ ôÜ e…vXExÄ2º¾ðĀΣÌ;Í JZáÿŠÿ-S„ç¦,ÙõéÄÙa®:MÔØ?NÝžUc4BPœª¸Ì- Iaã;£;¶êw‚¹[ –J“NÀýþõt@x_¤.Í6ÀÙç8ÕgÒþ:]ühRhåUB\½ &‡T(߇¸O¹fQ”žÐF g_ü`È<·B*‡îÕ#ƒ&MÙvœ¢‡“ŒÞ4  "{¨|[ å=åK’0s(üþ>ª§YTø-a>&4MHé.í¢cÒɸ’/=C7s¢ê5Ýåáã>R;f¿~›êBe¹Ìd t`„áÞSaPC,=ÙhPÚŒuæ KOÄìš¡ecRJ§³=Â< ‘Ÿ=x•N§ŠCeÜ¡í ¿X¸¼ô4Bª7©§§%%-ׄÓ.yÆPBMÉýQ]VúÄ%J}M¾ë-F`«À‘r·9¾L1lÊJ÷g8‰ù2qÆ'¦S…Þ^)/ÏãÄMtFŒ ªã²î…GT"s«ƒŒ(_³mº†py®BÑÊ&{Òì ªŒÄ«”KÕHQ-ËD¢:УOZz·¨Cg&6ø$†’:GÍm#-@CüøiÙ3À¿KÈW&_Tôè ]:öÌs%Zéó¼·*Ê¥ >Œ|sž‘ðëÇœwTµõ!ɾšÞ\Áy´ú˜$qYMiRKƬfx#<þ,  m…(2q0§O·ñõ®ÖgÝDœ£ÐÁÃço’f3ß,z.•?Aú9!¥ÔÓŠW@X}ßßßâ7hK\oRUU.`U1xÑ%AâD¸-à¼T~D'ÀöÀ¯½=Ðo9E¥ð¼ÞÂM¹GŒÕŠ7*^¨`Ù¡â©\¯Ò–úȹ’}ǃCUõKRÈ -bHÙë"Áu“A„Ì^çÑuÚ'Azh­Eˆë§j’„Ðà–¨xfPǘÃÙ+׈ӕ“£ØsΓš²\—ÚDŠ@'ÃäYè–Xݱkʱ3EU-@ù ü ù{½uÕ¤SÅ!à%Ž ŽëÒ}küœ/iZý¡OÁÝ€)ëZÓÇJY!°ï¹Ãƒ*´-¡®<}uq£gö®>SÉ1XgTš±,:éÜÆ~eõ§£½©…fä¶0^©\eFìä‘ÞQÅÉçH£êýòÏ€ÞŒËÛtæâcøp׉^³! ške[蓉p«Âœ£ÑùJ£fèG°_Õˆ6ß«_–®@k(V¿ˆI̺@‚|nçgü?SÎcòF_õjË^–'K35¡õæ@0à5æg©æÐ‚“’£‹s_ç´Í÷%‹b&J°T[ž×qdªã4áÌŸ0Yðæ9é?H@9šºf!ž_{<6ÅC›*c ô¿ äû–û˜vÓUbɤ˜KzJ¨Ø3<E»=²øuc~ßâÝ1˜xzâo‘~BB‡heô:çÑS‹uµøÀÙp”6ÏQ=¦# (¾™^a`x‚‹âç=ªou 1ú|R£;ôiB†g‡¾>5;)–`—zÄŸMÁÓÃ"•l•ªBIÉ>™' ˆ¾9ü([8ø"Í8­ï€ÛÜΰhät¼¼~Ñk–{]ªÊ§ ÕèlAèÄP®1o1j¢ ·†}úƒ…o™Ú‚^ T™â²L|Ë(Õ©L¯¦ï\hê/p5Zn}‹ÂÓhИzõŠ‹¬åñ‡Ô Üšœ×4Ø–&t¹ÔjÝL_W/¶0?¯ÁÜ5fÛ\ê‹×)jŒÆñUw|ÕíäæókÉ‹½6mc¹š$÷㢛4o¶ä@­ÑyHS+NÎÅ cš=ô i¾mD¼›Êa(0"çäãë˜SRÀ”þvÑœ;ÚY¤‘ŽQ§—¼I"Y¡Û²„‡æ”ý¾çü™ÆJ…„¾ß†[9/h´ŒÞStK;~Žüú¸#Ã\ƒy ñUütMÊùÿ,ÓoœÏjTÒq?¯Ðçôt·:Òeà™=ºA×\’&Ú0 ‹¼ q£×B¾=„,LSÅùu{ÏøðÛ§ÙÛä1yzn{ä÷ · |$rÀ…*î²E9N Òø_ÛóÀŠôØ{o/Ëá'õx;ÉPÊQiW¸!š’Nuœ”]oË…°A3úÖ3oZ5‡-½_±I 4u…6=ý ã¦Xפ†uÌwtqv‡:î/™¹5è埃1æË¡Ò£Ö§™±×Ñ0 Ñü ¨£;Éâ®4¯Df?Ô€~¢Ü:W,ýöðŸV”wßùT°ÁÍÿs¤Fù&-²‚Únª0¿XcXb¶Î=-øÖBo8yefTî m –`I}7 ¢±û‰_¤ÁM9ÇÃ홀Âwòjœš«>?iW4ßë¯eÏ“£¨êtÖOÚúÉ,µ¹ø®Û1ÏS—;`Õè õ¤xn›/RÅ;(Ð ¶I¡å<•i•DêYñ”_@ù™æudÉ—ñŸ¡aô÷}ƒNM"SB'4á°KÄÒÙ7ÑVŠ;¤žÝQJÚD©®}Kì;A~È‚È?ì þ4yP–d}%8ZÑ#åÅo®“¬¤^ÞÎpÆÛô/¤žÈÑÃÀŽW7Ìiúnãê­¸/»G'¤¨tc=»O9R‹fðLÓ©Ý¿Gù»‹d¹Št;¡ïJñÚgcmÜ¡^]öÏ/6¶C‡i­Ÿ£×FaâÑkÞÌiõF¨C:®oYôœ1 ‹õ5pMgŠšH©¤fQȤrêÈúwàýüäk±:P³À›t)¸ ü*õl²mzžDw«.üʉòßÎÙ¿ˆê»T¬•¾X~ÎÍÂ$¾ŽJw§‹èîMš©²÷c·vNšÎ}š4€A=˜¬Ž€bœ(O?ÊŸ|?>üšH¨;‚1j€ˆ™²Å Å“¤‘­v‘n¿XéÝ×ôòÚ'›&Êc<ýyXŽS‘„ðY¢fPº¡˜0 N–©lR¹Üg J»°‡ÁwŠžiš$¶\¤<5©ý¢fLá~ÜÎR’Im\ÅMêzH²µ÷“š&¬ƒ†;­ú`¿êÊw2œaeЉ˜ÝC§èMÁSžw6@8OÐ,Æó¥?Ò*!cÎrŸ—{0&½qi¢‡’žd̨K¢˜8P7é'Ô$âêÞÀw™¦s¶Q[nÓÔŠ1á¬E¿ªIèÏBí NtÕ¨°êÎlÛiøñ÷ÿ/ê&fž»@ûº0p§™s =_=»Q2ÍkêœÓâw´iz0à ,HÝOLCÐV&Ý?úYB›¥Ú=ÔE ¬ãùFO«S…I¡ß_ÁùçëVêQ­ Üa¬DÜ˰TšBáÑ1oßG˜4]ˆ1ãªÏâØÖš^ÙŸ‹ôuZ•±(IT‰a+¢¶2ïP&ŽMêiD"E @—ØY§+ªfM õR RÅsn\¾î+»ažôÛ W$ºë‰nƒ”̤fÑñ¶Ðñ¦f¡šEw’ùåã´jÛzÃõÆM¼ôµNŒ‹EÎ’3¯ôe•wî' µ£Kè¤<_úÐ.@|}LY½]¦ )©SûôÉRIäç÷ÍÝÿëq!Ángçøî $)ÇÙ¯2c¿ˆp’ѯh_¦&Ì›tn¼#=8|¬vß~7‡øÊÏj©§Ëï®[pˆ7çs#¢Öv–L>ô~ŠG@l;[•3ã‰rÓÈ¥Dš|G‹~fKìPîcôK 5k1þQìΡºEKVQXªõ†š-bæ‚¶Ø,¥B²huÙq®2y;&m°¨Ë•Œ !¨ #@}ñJÛŸ©J»ô€VžÊäÑ®â©[ŠˆâÁ>ªå­îþþ†¥rI'WîI®ôÒsÝ:†tì®ÊReCšæ€lJo‡øo_è«áÏ ²Ž|¢0´•厘GažîÝw1þrêîF1ªè©ƒ(ãÞRÓ¿ÁFo£œÕXÞY~)E¡qÓ:!¯Æ§Íé¼w)á#»ãîõ:DUØÑ%+Vêî5MD’Ü¥‚èáXsœbéÊ!‡*©ä×6îi<å-ê«wUžfÐät·jRŠž•¶¬KÜ@3{qT\ŠS?^··çþ¯û×,9Ÿ?Ýþ¹R¡Xy¹Óæ6;Óð§<8Ð’GS;Oð±P7 ÔØ\ÅŠŽ+jf–¯ˆXúx |ïð¹,þ—U«$¦rÇX:Øb“r†)úç<ïùé?^|ŒôÁé·k9 ¦òªQñUõÎDwÅá i5\­ÿ#LŽT8ñàïizÏæ±8ó; ›€¾H†6A4³˜Ã¾Ô®"~»s“R7¸(“S‡ëäM—%•g÷Sƒ®å–®”ˆ°1ÎÇFHÿ„<"i}á»â‚v§7O˜‚óq bKÏ©ÚÑM‰§nÐSVÔþÈÆ& ¤E£‹Àü–ð…P,=Ïôù4¯­ s 4-|˜ØhÓØAâ­C:•&0ƒ¹3—t‹ª0ΰxÏ ôñ\!5†àÙœðH ZtçH÷»œ"=ªša溤ªäÔy­âÅê3Š„Œt‚­+¥¿Õq¤x™ÂÎV\©E8›Xå sØÞzR®wgôïjWM9%í$ýtÿu®¤·ÃϨ£A²ÈžÄ›>8VÓ1…h¶´ìœ_ÎD^Ëlpá@eåèIÊMc‚Æ3ÜöJsœš¯zzã+æÄPŸƒ,³ûòrõ¦ÏÑsôC%¦Èt‘0GT0½Ec¥¤¥ô9Ìè1»±6Éá¨kõxî±¢"JF)¸MÙëéâCþàºI+ XKò˯']¡è¿ ]üÇ8v”ø‹ÿÔ£@Z¹Ý¡ÃœD‰ ©º­ƒ=—Æäé”[@ ÏDN$‘•JPMЛqmá›Ê£¸éèPÞÒ‹4û"ñ¿fõ†D¥#ÖHÿì }¼ËwðGïèz%¼…m‚,´Ú÷EŽ%Aæ‘b !2Ĉƒ.‘γñS¶´nSr”.™ôü®g´Ì…P7(«:¥œ™Ô·:Jô…û3Õ‚] Í’É2 ü@õ‘gu$§l1ôU¤;²„‰rfsöÔ_~£D9M?s(9v }£€©4UDÎÊæƒÖ[ˆc„‘ÜјÑm ¦[tÎä{Ë@yý} _Ÿ7ÏNO(FõwÜü™‡q—¾Ç(ñU†¤$n‰2VbMŽd 1dHnRNÛRSÓPÕ¢‹ORÆL#ÿõåû‰ší)ç£?Ú±¢S‰S‹Y¨,ãü<Æ)Ò ¯éRêÇ5koƒsEØÜ»ž(?ùq0‹1‰™çG |ðM¨Øól0¿þv\³Š›d`&i%› m4=Q~-üª“\ƒkÓÄ>zŵB±ï“ÖÄç©ÿ.º'†]ù’ó¶H¦ó·:ȼK½÷‹ZÙ0+gî®~[ß} áh{€YNNˆQY;µ‚ñóð4^PMBÄ.µŒziW>ɧ€~Iæ6—3gGã&èíÎzï5Upõ4k‘Æ8Ìnž Ü•ÔKP‡¹ÁÉ$È›O]œ”ŠÀÕgF¨K3úª0·8ñeр鷭— ¸)僺Þ"›xZT²¤šx Ò£§þã#øT%]Ç Mî=òÌ. ÖxÉTu — V–TuòÄËcÈLܺNwY͵£?âÏdR ub{ä«G)Õ—<&¢häð¥g©.A *ou˜üe\¸YûñÒ:EÒ$P…ö`øN¨ìX¹QYnÏ.ùNu˜ßyÚP°_ ÞÆ¦Ã­ÉwBj “x]¼Lƒ+v(ïxS+^ çyu)ù+ uE9}=<P+F/)‚ÐA3{.]ßøÃž ÷¹Es \gt8õð>ÙAò›ƒ„áÛ5”ñnòf %÷í ÞésùÄÏt÷ÿåûC¤$îkÚNŸp¨Ÿxuå§×Œwƒ¶k£ÙÂóWIN¯R fe€CªÝýТåzçÒH±]œë°A[p¦ŽFú‚oŸúÞg¹ô§—X啼ì5åáWèqA W‚1\Õ9Ù3á<‡‰7i£?8ý&nÝø¹>±gRNE&O£C\ó’²îxBG' ¨_7ï juã ^‰š?빦¨ãf]¨EâÂN“Läì¤/CÄ8ÝuüX™xØc@U¦œ&„Õ½·Ž½K “E½HãÌ'”Ÿ‡(©q(šóuîK/VÅ¢»Ô¢²Ë…Dé¢s0Ïœ_N\Ï[9›g²V­‰lÎk?t¯ u †²E¨ \w´ÄC¯ žç ƒ.½dPÛtì[E÷ ™°*¡‹jÞ7d4OÞ+C£«(¿¸ã4ðä=áìÈ=ú«^&=EŸXþ(#% ™©E' åÏ:R°¡)“û5Oèc>··MßüPhSÅ"lPÞÙ •“d×¥x¤ð÷­š+#ɺÍ[Uwû¨h" Öâ!cS±ŒÞø§TË©"¾Áß)³[´ºñ? Aýƒ˜Î,1A¾ˆ9RŠö-@gH“›å7ÉÒY˜ÔïäIdýÁ‹AÝÍZ~$íùŠp»¿>=½>Ç[þ} ñðEW°·`¯)/É×Hj"ŠžªdNŠŽNŠŸ¯Cš¼å\íîËœ}ÂËà×ôtBç\jtPË· »” Lá¡äyÃQÚÃÈ|é—í¹oÉ’Z¢=#´G¤×1uß(t7 SØtozdå¯t7tˆÑë€ )rdH=³WßÎIN;×aF×Ô¶¤ÐùtîD›A‰O “ÄXÖ×lL‘ ¥A¢7W€¦[´Rº½L)™˜Ï$@È‘bKÏ:­è=mzŽ‘ôö~Rm¢”E[sÜŽ»RF­<šr]_þÀr%RC'Óò¾Ž£ºè¡Ì m´åXÐKù%‰¨N¨¡Žókæ×*½C]Íxç—}Èw¾_·Ž®¨oaå¢ÎE—:݈SÎ y\MÕA{E¥¡3熭æN†Q®%8êùÒ)2ÕhtB¾Üñ •EÍh Ð¥åžþxÓmý©çô«¿®–0TRR¯“WÕÉòù†wâìT• z§(¿nüNŠ›3y&v1èöð7dKñ0õRD*ºÓKDq…R'Ã-Ÿ§sŒ% ¦¸©’›úþnש½&rG¥½Ë@scºu%ìE˜îÈ5½´æ\c é²@²Ùü‚*š¬dri ÁB©ØX6»\NððžKj6_ºŽYÖ¯C}%nu¸ó%ÕóÊí©eëcç«_#±/V/¸e¹ô éRKu«E°ß#·VkН.ý˜:±¹ø˜Òk ›r¤I©T6!ÍhÔócÔïóÑêÒd‡ôÝÊ“ª#͇ /¢=Ö’‡6­¹mT….'M3Îc˜i¯öÃ#Ko4ˆ¬D—×ý˜áe‹þ´“éâŽÒ·š5ù‘¢£? ëÍál½Æ›ýîWôÄK7¿œv½Ç}$mbP7h2s¬8·'[÷Ì1©/ûÔL¹¨=ÊÉåuO=#¤ònÁÙrŒL*ÇÝ=ü÷Î8ÿlp~bRÒ÷¿oqÙû¤—O-#ˆæû{èïqgÝíýù_û|-“pZ±uJ¦!. j‚QjOš&ub7S3)úìø+ Î£.bƒÍõÔp”:sèÃuÿpœ› DåËéfŒìÉ‹'ûeÆ5‘ Æ]]¨ÆË ¹3áOÌnãnGêT·¦Ðå3hÚ§šSââ÷«Žöú¨±‰>ަ{‹ N6™ÔËI!äÒ£Ïõ[4Ñvâ& Zö\ ÐÄGsV3pCqÒe޲sØ<ø-ZôžJdè¾ò¡˜.h¸$±Jï¾ è@ }²å¶ÿkx)^Ò«YèT÷=¨ehåµQ%’xn2(¿65þÆ%I^>ǨîçµQŒ?ë=ø–u4ÅåwsêÉ Mn^c1‘PŠa!ùøì¿íW‘µ”›¶ÂöbJL°J{dš/^¦‰OŒZ™êµÆÔã(çÄ`À$⧺…w¯Ói Ôú~ª¦Œ|{|ú­±\$‚|gliuÜÈg÷¼æ¹³ñG¥2²co¡b£ {òŸ”UMÎ={Ι rÿVY]ÙJ‰ÑÔ‘ã5ˆï¢°hPó{ŸÁZºTo^ŽTº8ðÒ¦-Jªª"¾Q”Œàï“_½O>Ü.€C}êiÙãSõÓ<ŒR¸ûù­ê™š…¹ˆÿ3œëÏõŠ¶Ðø–áŸËí@D{©;Jé¦$µû[0ä͸1êîº7©Aè$©*,´JMá䳸^ ‘û\šnþ¢ÎPW\QÕz2pžâÓO}`ë߸=OöTû±IÊÊ $¨POcOßÜh߯î~謹«;@)J¥Ómfu5%É;AOÆbP—Ä 2ƒ8Ϥ®vnNÈAx¢å_Ù¤²þô“lú5HfŽwä@Ÿz1ªIFmjÃC!úÞýèŸßG÷nÂ\´BÜ·a£X{šJ9h±}§ûb@«)ä©OSOk01¾mÎ:ôÓ×ÚpœjB/ ñBà ýÙñ$Ç©I­°kù]è ΋¦tž‰æŒAJA2¤v:•žz¢èç ÐhQ”–ú{j)n©såª]ý"&þ‰žFÊè‹¿¼ôÀiæ—ÞgÏ©fÏj ¯€ëó2=;:£t(®új?á«$Iús”K±±Z>Ó[Wí[ãzvçÆt²e/n{›r×aâýtŠ®ÌPÂý‡TbzÜeühaPÎ)ÅÀÞ ›€î‘W¬½•A[Õ4 T@úƒëÈpL Œ\QÑ„s5•Ÿ¢4MÁ_¦=/ R š£ä„UØ-º~êI÷µÁ¦ñ¿Æx?ì|æ_^M“Í-­Òfª¨8’ô³v~Ó>}RÓIZߤW÷销’ÐR&¥*¾O¹Î»Ã<èêUW}AÑ0?É ½â?«}ÚÐx~1êÆä„ÂÍãÚé:iç‡[æŸ[¾áÞ±7.±!V)ü1Þò((¤4b)ÞÄ>#]Ûn^ô¨M·¥×&¾9 ŠØ¢©²ì>O®ý¼ykÙ¿SU3W·×>ñe¤”ž#PÄ´/ž¿dfD!˜S…¹ ƒÖ £ÇðÃ×¢ê¬õ“+à#ÍM¬« Ï—Yfæn˜ žêÅÔLk£Ï.\(.¨ÀØäµuW!ÃÚoú“+Hó5*û@S aÉ ÖÖ·c„Iyp/ôͱOñBŽaänð…ËRBÕÇBÄ‹i6›ª0šŽ{RëV·”ßÊècœ ZÝ;B-Ã$(‹$2©Ó®<®øg~é»ïú›xþj>)0È£ÿýÝ,ô´ Ãénƒ•&©úËžÍø¥k;>5]ü“µsÓóÉp>dz5”'Ó §=èÖ1âY pµ”È´aÊ/4Íõâ…Å 8_ˆøjW5ŒuzBÙ ÛÁ¸8a„ëyFi»ˆ1n­xŠ±ÍªÜ„kÇ{êB ÎñH_ä7%¥@ï?˜,'…(‹âýª‘Èû¿“³ï>ÔǬ÷>| ~þé2msšÔ-PwŒ+ÿ€ºÔ¢×ô°st<ª•·µÙÄ+4ZIç³>${…M‰[d¥f½õa‰¡Ž:î?¦f»ŽÛ3ËÓ·è+§(LŸ=âVã,y$ôQÑAk³§`É]²'©ÁUPV¯DLF¾¼ìT'Iª+*>Å.°$Åͳ,ü$sŽrO]ïŸ.|vâñÁ¨ÙÔ8¶èÜ놶¦#V!~ahÆ,GšÕ&;Îý.³ ÓîĬîŽt¶”H•Ï÷RR9Ll­axg{Ò𳡨œª9HLÐ@d)øºÛ%ÖwNôF Ðëë^-;çY’¾––]ïø1âl’Q5·:ÈZNbOw£¹ö ”è@R³uw|Ý)„ m@ß&P‡åÑëª@4c–ž†¥(u”bmÙ¥åûÁè‰= ªN„¢ ª¡µã¬M ¨} R¦Zó?_ú= ­$3š‚-Ežã¶œ$ÏHf¾£aƒuœ{§Û)‰N¿@£ê:”m;8e]TÜЃÃ Š»Ÿµ¾³¶ü–Ñ^©Œ¼á­¸I“$,Œ¹îdüÿ`·ª(ý™¨_5ð.«FA£xí»Þ ½ƒ%éRŽö+ÄÚ€^Ô+­wç¤gߤhá¡8q4½S®èÓÀUØÇîmT1£›Ukš”g;¾öb‘aÑÊæµo8[-‹Ù7åÇŠ|iÌPBßÓŠo ŒÒw-€øüÔÏM¯~4ëòœ~_F‡ æxÿÛsßmÒ`²Û”ëÔ@'È!q¿âwoHU¿½MM·m1d–ÊŽž'³;°tXâÏÆkžg*/Cvj0—ïÌýφÝãu7||ˆôKä’ü›æÒÔ¿| ÒýRSÈBc¡_ËëÔ+b³ÂkH*eFq“ª›u,箆óOÅ¢ÝË/ýûñ²Jû— «åñY9Õ¥¡¢’o°\ÍÝÇý™^ž ίråw/t]x$ƒ>Mн6kºÑ(FaNà%ªµÏÒÕ=J ÿŒT>Öø~{Ueaò—PdŒ~²Àqò{ÕÆNC:ë@ë¹Êë:ŸYu^ /"à{tì0±I(z¤˜x¼…ùYÂü\ÕÁ1VÒ¢™%pDyPÞÙåV]ŒERuš€FÔ<#7oÙ¥vñì<Íз Ò?+ƒâÛšÂèÒ6ˆ.Ü{ú¹ÔãbŒ|„¿þ²ö´Þãyò›wÉYaž"& @6[ÌëMpÌ*KUŠÁúm7N“ØD†ÀmÅoT¦–DtSdŻϩƒ@%þÔTCƒ|•)ò#©·<Möü® ]j[6o­;DWç|» ”N„| mêºøüóé·Àªé½IVý÷9VzþµûZ‰7ÞçÕ;¥ËamG' YQHèZ4;ð4‰(ÂåÆžÒ¯s¤Ð€ŸvWÊ”¬nÕ’¼á^TM#2rÍ¢xQ9ù£Å0W¶}ŸæÌS±Kã…û>¼oB¤!T%I b¿ˆ  E•žþŸ¨Évä“[¸”€Ð˜y/;‹B:Ê+©AÞ² yç׉*qߘ;•ÒÄ)Œç 3Ðâ0"Çð·Ÿ“ I2¾-PCtìÒG~H—ËßÇ—èöý­?þþ{užZ;0==TÝ‘IéΗM8ÏîRÚ³ýe¡ç™”€ÙœÁRÕf±(Ÿê Íœ½¯MSÐþÎj%ä°ÈM"ÿòq"iŒCê} ñìÌ¢|½ü‰úZù“„Cý4Ñs¢ž$å7t2‹ žqiBÊ9ÒÏ„´Ç]Bß÷OC|“ô,œŽ“ôðbB‹;õŸ$þoReràåt½ “pMÕ {bäãòÍ8¼~l$J[ß{h —ËS>}Oð¦ê ÿ¬_ûéÓǧþy¸ã:]y% ¸YÌ¥QS˜à쩸5M’v¿‚s}ßÓßa0kí·zú¦Ì4Foß:pR«ßp´Z›ôÜÿ¸ÇÇ©ÅÙKƒ¦ˆH8NjáQ€A•“7ô]kòfߢôu“¼Ùûß_ò6’Uㆺ•Žn~éÿ·ýÕÚ·ßšÄÚâÅYÄÄnÖËiÁ9OÔ¬I2#»ËY‰çP3ø¼…B0§ 5$nÚ€“ w×u´q<¨‡S$’:¦Õ¿Ç5Ks&›ª¨$>-’@ªÝ}Œ0íR´ò—pÙªI:E’¶À{Î4r­ätM­¦†:ÒR&e—r•®™]ÍøŠ[Ð {T‡™QÍæÞ1MH‡©º1kPUzÖš$2 £k üpF½¶ 1ÒdØÆs_ƒÜ#ñ£z¬;’‹>:ơآœÊbÝ<\ýf´¦›Y¯Ø˜/n:ö‡©°&…<a :i <¦,³gQÕô6ÖQîÜä‹Ôô´ü?’öé¨÷±zô208Òt?UzêŒP¯n§Ÿ Ž‚ô¿Ò`&¯«ÂoŸËE5œ_·5Îê‘o` LÑ%˜" '÷†K­@u˜ð†r£¤^%–ª Ç8›t©f¬BÊÕh>å̪"_K‚áVà ¨Ý_ý›ÃÐÔ†Ì_+<äË·(±&éõPG-rJ )R÷Jæwíßì˳µ¯_uš&ƒ,´^ œ<§duV‡ùyó:ƃƒ(÷éîª*ͤ3Œw.<{> œÆ¥G©çàð|ÎÍýýŽQvßcd9f!Ü,Ž,J#Mãý¦¦ªÏs¤wïüû8é|ì<õûùYÆ–;W©%2y\|Õ V‹ïSb¡Å¨¿´&‰¼]¿• „=¼çÂÍ‹ÎþÜ›ž.Ò¸øu˜_·>üµp[.Òv=do ê…÷iyCÓ8™\ùê–µ]*(‰ó½¤•JªPÙÆ8Äëæ2ß25>H̹‹wˆ—†ÅNz¦°>Ǹ©»5À­ bOfE}(eÓð8*Ï GÕ°‰W–Ïñ] T]ƒU' nÁU~†µ9FLbè`4AÀ[á9]Ó†³2Sâz:9•¼R§ãêkVH*qZj­¼`Ïã_Ç"mrIàCs¤ æÂ ª–ÏÇ} ÏK§©4"£²ŽkeñI¯¬,Ž¡lZá†!åµy @™ þ ñš•!›¨àdR¡š~†y¥Úñ˜á"›žÂ$28òÈïiÖ¿VÌj«—[êrÛòK-MŒôÑMñŠåL4wõ‰G hÔ]é4\iâÉ ?ì2€TI•æ@¸µ–×gt>-ê5 çKï·@ÛFn+rN0XÀ/ÍßÖ°á\¸F)ë]ÅÈ/|W|—»H{(\^ïÀô‹øŽÆ»ÞAŸóGâYœ5›u#0È[ P7<İ\ôéÀ—/êtçH=Fw^C {Ùž| Åö(.ÖQÆØ~öGvé ø.;ùÔw„.H¥)Çâ;Ãɤ<‰ÿÚ*ÊÏÛ} ŽþBóÏG÷!©>‡žŸ®ÛM®ªí3 ‰E‘+¢ ¹9õÆœÄ ®Àü¼=OçíÁ/ãÐm_ÓËÏ|VEt‚ˆm†½°|èÇØ Où± ʳ2‚Ù‡ÙFÀƒÏ Mi—¤pÙ)â1¨Ïmuœ‰Ñ8Ïåæs™W;q†ÐSÑA —3 £ ™®KI²¤© Kbé$½£%Ø)(íùMð³ñÄ è¤Æ7ªÈëñÚe¦}âÛkÚgÖ*Kò¨}ãž2í§¸¡Wöåý›t¢·x’ÂöM8”SžÛJ(¯¥e´|yÆJó¬ÚÅG4hoòóú mñàãŠßÇ£ÌÉ«˜Ñ.þÉ_QË_QL¢šCÃ>=8ý©lÒo|½z[{–ó¿уv\+ HçÖ]/£_´½jHÏ}ÒaoéÏ^û¢€U7@åi®nHƒÌÓ°õºA ICØ“¿J›\=J‰ÖЉq¸ô1ᔵqÍî´GÑ´RÅù}ûkìü»‡Ûü>)ôF5§ÎVñjä5a^(Ýtô£8SØtFO+ïÓÊWP~µxk ¢¡Ø”U~¢ƒ/¼§f öèG¤~Êíy‚ÐÞÕ9ëœLVsý$=6¦FŲ|«â†¦ºƒv#9¹MÙsêI³™ 9œ'6²½Qôkª4R ‹Éýp!È­¤I èçí&œ†yŒá¸3òîrZLêh>¸32nUY" ÷:˜T!iAº#¯²þ\Mì!•èPÅðÍ€ñüÎwëµ7M8k‡i¼>ÐzN@!¥«BŠÓÄæ$‡Œ4y&¹|:Ì-J~ǶbSƒû”Z?Ñœ¤ÅÊãƒÔ¬žW¾KåðJñžéú<é§ÜHâÖOqÅ,µüzÕKSÂ4óQi6| ÌAL,¼Q—¡Áaf=U’a*¨ŸCÊwÐùÂ×AæyPOµz ÃŽdÞONÒ4=Hh \5=Ôd—[Ôq®˜ín9Æ«ÀÜóI¦'o(¦í^îžÌ)ÒxÜ!…ñA7Ú½ž¿¡Dƒ©à<ÏŽ,}SeŒú—„‹»4ÞRš?LŽ?L¤é‡ln 'º*L–Ýû¤D=>¨`· ;kàÚùˬŠë1™ì*Òy溾k|ž˜²šMi.5›J5”ô›šŠU¾†Ì/Ÿ»…!] É&_€b¸lUHPçjðÂev{tæ½­ÚÐ(ˆŽ’h¼ç‘Šd¦å•-hªm ÎËg¿!Gžn)Ká:a{.Þs¡I³ÃÔ”×=Ý i¿¤ÏÖó{É¢¶'9dDT±ö†I¤vÝ"KÑŽôeo§Û mǦ:À1¡Å˜”B§Ô7è¡kz¹”†Ez¨¡ïþŽé|pEMC“å¾vöoÓ+ÿX37†#œMãYUHÒ„ðrÚÍ嚀Îp~ÙóúäUŠœÀ‚‹†À-ZÍ~Ä×~™ºÂήZRC»zÖ¨EÏ‚æÃìÉa ™ü&˜ ̽ÙÀÜ_ø†¹qÄvmG£äÄŒéYÙ«4~ùçdsáWoÓH:Ê3oR9D‰ÈÔÚi©Ì>úøHæ¢2â÷pÙ¥lIPÌ~~=º˜vŽRkpoPptqá1ª~9IR´Rã$µ!}éí¾„Õí!­7©ÎÓ–Q¿AYL1??p¦– $“U‡¹¼J§iÀoúEØ´ª“JâN³—Tq‰ÅWÞ§¦ß:ÌïÎäã¤OìwW¾‰ð(=ñsdÒŠ_MœQfÓ„ u¢ÖOz¾'g­ô˜×ñ>œÂ¦Ítˆ›¢’†aI–™”Ø?®ßN .ž|ÔǤg•æÒ<0²iqä›:Üê_®‰CCÃKGÓ ç› /ërþæ×“Ädu£Îiñ!eÈYŒ¯ì›º¾ø¹Ò,T\xä"x{cÔˆnš`ßr¦ú~êt8 m]ïœÆÇ…^¢ ¡—+Õu&Ú¯UZ1“X‰µ˜˜¥ù®ežîÖVÌÔ'}ƒq®ïîäúâ_““E,Ôú47sáe ¢5 ¾‘}pʆô}ð©ý…òlîG¤X©Wr/ØÖåHƒ Æ¢&¤W·nÃ%;mš „.ƒ­IóÎuy ^Û&h)ôa›lz [Re)Õ9z4Ë8®’l4ij†[à„ö£Û´—þ¤+Bç)Z¸4ªs>b‚»/2äÆˆ–áííi:WÐ%|yÜ~i[Ã6d  fÊêÀLÊ«(ÂL}Pç«?IyÓX"—?”RG÷ÉQÇVS÷³EÞ_AF×õÞ0ÞDÔcF»Í8‹mÉþØ/¢´ÕN„ò=zÞ!êÏ Ê/W’'Ý×NüE—ëÒ·Iæämý<™ð(Òn-÷b«ö óÙ…S|»òØÐèé`U1GëÊgHbK–·\•)¨ÑW»Pª”Å6`…ŠÝ/ µê¶=s_ò÷×ÖDò” rx˜›Å•õ Ö™[è߫ë鲕µÏ‘«ëQP.ãëÎÕêŒÉiõ†š£ì¹ÏL./ÓPA­fÄ)g%¬é` G¦*þŽÍºÀ†òÞÛåø™×X§<ú7¹yù+`ó$ä–kBuÃ#k틵ü€ÜëèïW¨K°G À©»IAªŽ3Æªï ½k-{ò#ÍT @ñ]ÛÁè#‹ªé]m@ŠÖâ!Õà°÷ÿÜ¢)aÑ¢* úÎäñÚËI²aíÁ—r)ým|±K©å )T>BÅ@¢¨Š/|®xÕŸÌ›î^PÇ6mJ Pƒ9¦Ÿ{\ªŽE…Y™ËN±©¬Ÿþxû£. -f®üškïáýñx~ÿkÅžÙ‡Ù?ú¿÷ññWü[ÞIOUŽõôþ»ÒœÌë®L% {˜â™Gï¦ïÊlU¡’’r‹=÷Ø(Ë篇©EëŠpFÕ*k™šˆS…»çSèæ÷÷Ùš/ÒÔá±ÿ€NªôòP–G£-θ®l|OÔØIñyéŸÂ ä’ØÞŽ÷žUþßJÀûeÿéjR[öÔÔºéÁ”ïÀî^V>n•ytJ€0IÔÖ š¥BÝj•ιÁýŽ_ßÔ_1ê^Üïý„Oƹ7à!=JޤB=$ùT —8ùU"½ÈhÑÊýü¬îË^ßÏ~šú÷ææ0òªÌÏ£Bûç8ã5zï/£ËÙ>ñók¼«ëÉÖĦq²lüGy”g%œÏAtÅžóœ FÑLŸá£gþèòÝ¥.‰\¤¶^t›¡uÄžé݈Sc¶d#¨>g†]’¸Ú¸‰h”ºNPó‹wÒ{~…”Åyñâh€zÃH—Ê@šë¦8IÚæÙÕ¼D¥üÒ]©WÔ~p~r“þë<¬«/š¶€Ê†ßÉ%1àIÇï{+øå>ž£VXÒå©.þãCÊ»y“û~eR¹KCÝÈx„!Ñaö4ù–mSž2&¹÷Uœu±ïMt[w±GÒòù†zÍÕüeòrží^ù}ë~}¨_4>úcÌfôÐâT0ªÝ3¨Ý»ñ·¾ft$ŸsšuñÖ§–£º9룄bÏTE5¾×††Á+Tr 2‹2U`¢Ãt@…§§9^}Ô°Ó£ÅTe]ü_¹\F€J"Ñ4--§Cr\áæšI ”d.É1A»>«wûÞ¦f(3 O€8üŽ_¿÷ö4ÕÐã+Ÿ^{W:¤rëNBÿ‚„ÁCÆÒe—òº‘é ­Ûôû6er†æ6ŽÆÙs>MÝCtlñ5_|•eÃj0P†ªD"9)û@J¡¬ÅÐiþ*’[·Àoòñìnw‘;ÂXC£yEuhe!(Á¹(N¦›©Ž³_#ÎI!v÷Ñÿ‰„Rˆ3á]²öÀ ÖL-1u nÔñ¯ Џêë(Ò¬Û$8õ@42O]9£¹€Ky'róðæ¼Mhî1k•´Ô4pÊi$ó½Óqá84ô¢×¨ ³Vvú×M¼\— ´7¥AVÜ÷ž ­O8õ\“*±;ÏÞ¦‘hÇ«ƒß2Í f1”ÅaZ`òX/²ÄU՜ɞ}Z}R6›‹ÌýÐÆF}Òc`uÅ×)Èé’z"‘®kFš~?l»$vLZo+÷ö} 82 ¥¹y1£ÔS»I dJÞ)Å|ã=J”á, QÓË„/½«Ûvü577GK–†Ç»f˜Šd9Bn.tœ…7 ¦P 8iÞ”­‚Å|A~ÜYâ>ˆFjTa6ÑLÖH§ ?gŒ:zšèíì-$O¿C‹7”¤"Í­ ê0um ăX>n©,EÖÞqESæÉ 6€ºá8É$Bu&[•BPj,­CV7Ì™úò³Ï+Çy?AºKr\˜‡ é­*áúYñ†Z7¡&ò]·¬½¿<«ÁÖá·qÒý{ý†`Ö–Í»UeËîd“æ.4ãb‡ÚË–OvÍ¡½MnT‹Y‡¹é½¦nyÁªYù ÞUAËžSr&D——1µ¹swöߣ[3ul.M›3Î]ÿd‹ÓÒ lö]Ç’¹ñÖšeöƒ i|_gNã«Ó\þè®cZäˉˉµ/xF€:ç¥ÍJ2u¨lwäFFܘ¡îFÍÝÆÙGß è>—*ÒãàAý_ýÿ •àJ¢JŸáüÁ®S5_ÃúØO»m Eó…ÑÇŸ*ëo1`õâöCš« öÏÍ æ4gº=Xûßúº¢2†QÐ:…‡ Àžpòmx³!׳!ªëöÃðˆá ﮟº=`2:€–„ƒ5Ÿ‹îbfº\Ú» S§ùjU¸q7”Õ^r½yw³;öï°×–F×± !@†›Á :'&[ЖŸuøØîÝýªî-y­TΦöZÈŠ2´Ÿ ò'h盀Û5ZS½hÜò纷1lEÝÑÜ4¢%ßÀ’.J¼ÇêhémØañœ^¹Õ­0©NÐ@8ôψn´/ƒk|V©ÁýŽpF˜MA«â ‚u›kwM™0‡›A¢êc]ÜÖm]˜Wq¼ N µÚb݃½0ݹHo¬­»K™Þæ+1}%þ»©”ü/66к´Ätq¸Ÿ»pí‡s‹Xç½e3˜2Pð{®—OšÒ`ÎÛ¸%xã'ƒœÄÌ Yþ‰yÙUá×÷ný¬íyŸ°xµhUX|‚†Þ¯ÛøÖuoojvT¼r»„O¿Z®ï‡©þ/Ðÿ 6eéáDÄÔÄ4#$ã+›ˆ:M$¥Á×_Š$2îI%©l%Ea_ zض“Š{ƒ}·;`ý^\÷ʦ§’8ª}i\IÆU€ëÓí /u°µ´á0†7i{¦>¥ÁRfy£x¹­ÚŒ;U'´ôù"¢ÕíçÖܽÁžook2ȾqËÊÛŠ£HŒì‰»Ò4Àc1°/Dt²d`ã¨=¬f]0.P$ \>oÐñçôƒòþîÖ¯Åùv˜ó2`´\1 2@†·œ‡mëòQk› %_q»Øh[&A=aïÀ9W­ mp’Š ¶Ý¤I aܹÆv ëwXã^èTï£×€Y ì!öPÌ_Ð¥ú:ܱçf}Þµ­n ØSûBt}ÒƒZl‹>æ) Ž[dãµÁø•~™;HoæÝ c¢ÁŒo÷;þïOæI< 7þZ]åjÄŽÃHö6 ¾˜+̶lXt¾ M"¥éÔš )d“aÅ$”oòÊ+®kò?×R* ÈÓËn©>¬¤;\õz ,Á¯Bb9ÞžÕÌ«¯©:Ó„ts¢¦Öà4Bgøaþ }â2†‘*nÃFGlžæH«TÜê8Ú­4õ…rê_¡9`ß±”bMÍ+6iʤôZ8FßZb?rB™:v·ÁŠÊœO–[gÂg=Ì$€`§xFj ¤VÛÝZÐû0ýdá5·M®2öë<ø2xŒ2Kx·xæƒ#%ß›2v ÔÏC¨Óæ1áåüd­xSb¹¼¬ÄLoK¦A,š˜=¯zâ\¡ÛªÁ¦G±={äîñ½I)¦Çgcis3âÿ'R«ãbêu*-¨ƒIÑ •–xÈí‹ð·Ej°½îÖ ÷yxgPÿCÛT‰Rûšå<ëoi&nõPÝ{«]j•ïë.çN;a@¿í×3àb¥Á„¤³W=øEürð\3ZDÌ 1¯áæä•:+uu -”û3}D²6ÀaUèÚ`Íh`W¢ ë÷÷¦!tÉ·Tþø+c“ŠxK!£Í+-‹·ø6°˜G$;Ó¶úg]绿Î{©wÒß9Ç …õgH M85 ¨¿O7Õ¸ÌÇ>ÀÙ2+hƒqù1³ rÍZÛM³»v«§L¼œ-}AÔl=@ï ³Ám_|?—Ö}~ž>q>¿F/z|ˆ4䣟,qNšµù:•Ýö…ZZdÐl§ã‰[48‘®Óÿ†ãï~ ªL‚ †pÆHÕ{žg)pZ“ÚC.àd·išêG*4üç siŒŽ´ÄëäùµÏûë§ÀôÈÏíýt[ßö÷äæßš#ǤY¼Mªãª;BÊPr‚¸‘¤­Òp‰nê0p¢îìjú÷«MkÙ{r!¾L¸óÙYç’ºVNâõ«Ä Ó?]i¦F›Ij¸ž8Ë¢@…ÏM€-@é¶œ$~É'üáb 49vIL<ÁD+W€Í·|b_HÄÖ¸ùûS*¯<øô¡‹ÚÒo–{mªSV5:Î.îR¡yù8¨…6fI¦$ZœôségÜÜ¡_Ñvç&“øÅ´žœ$òò0Ä-Ô%ùèíûù$Å+ µ˜š'’ܼLôKþšÿJH®¼æº‚“”v¨2hýfë®ùI’iƒ¶ÀQpXB<>IM2:(®(Ñ‘d¡fó2  tÉ“:E‹9Ï>ÔÆpçÔà`Ò@cñ{nO•|&•Ý£IßS‚÷¿G«0i¿Yš?¢4à¬eåaˆÍkUœµºÚ°mªwúO"u*†|2.;ÜÃúqOÓ…+(ÿ܉Ñb¤G eãwi(nþˆýÃ^“І°ïM››×ÝwÅ‹$R:·’ΑoÍè5÷‚ÌSáÎwªôb4§Ÿ(î éŽóÁ‘â×_7õÚ÷¯n}Hi‡è…¾ôÑ'{úœ/§ìééE*ö:•Ac€ƒ7@¾„i+úNpë†i‚c2"ûãÉ»Ö-‘îôƒå°£OW?Ë–Pq¬à@nƒ¯„T¦m Sßâèh›ÆŸèÏ_¯¸þ÷ÛjO:×tš2‹y)ÔÆHq”' &­ÒÊný¬´©{9½QUr›}<\*zÍüµ÷^_¨‚f#Ö¶êmpcàì/}ƒG:Õ#=È—Hì©…T Míڀ¿ËeÇüu6> S½®¶ØíÌ•gåOTÜDPh9ûñp³z^C SS‹zÖÍŠw„¯™ÙÓððS§€© æÎ§ÿG0yà 6)¦N‚œÀê=Sµ]H Ü:\àw¶Ošº¢‚·å@¥©)E]*?°ƒ_„õD‰‘Pù]ÑÑø@‡í gKˆ‡´¶LŠ¿=‚I©ü'0ûä%ç ó’òãHäÄ_$ý(ìÁrÝ­Ž³î™nó¹uÏ4o•*ÞRÆ‘¨# ˆHfyÚtÀåµÊŒ¶u°w±Èäaˆ¼ßÃiun§oǵû¹äš.Õ&ß°ˆ|»G+6AHÔž:Êe<š.î%ƶ@›Úé)× fZˆ¾Ÿ1Ì¢[T¦nÔ[®…uaLŠžÃ”Ä=AÔðˆfjfû !•âÔóü¤=ƒmú?q˜ ¤ bK}ÀÒ,Ѩçê³¢ë@6q·–¥ÏxV™Û‰Pksv·*ÆÝNú¿×¿¸¬÷0i‘{±AÜÃùrJ@s”§¦~°:RRЃ®··t9ù||Ö~†Ì —T¦'Óˆ<.&·oÛx¦Ìt¦~`Üqí¦®ÎTóûd°þ®Wš?øÅ& ýqõSœóÇ¥ûÿjæ$ ›44²;}i%;Rzsé»[øådì=¯3œlÖ:šê!•îø¥Ï‘ߥ>«& {Ÿ0?»¤(WÖ\¨{P‚‡$ žbž[ýH5¼N?UqðI†UàÇßnÖ>ÜÎþ Mê”Ç™¥FíüewíëMõ©C¾4>?=4—CϳõËÚÈ5œçÝÁyºôrºönS4*Wœx·^wòôji5ý±l’ÄTñÞÆØ.dž›Ÿ›+}*ßÕïûÏÛÿÃ>ã¿ü/Â÷¿~fÎ’T¢|(>l@ƒ/{l‰iBZšôq̤¾?âêÔUPÕ1|b‰>«b' 4Éä q«¢ŒWÓo(bއ\² Kk÷ • ¥¶§Œnkï=T{¹1eùr‚¤™Š#g¿7ûsÝê·S‘g©Ésù[3Ï=3¦ï9ßJ–"&ß„s€x†%`i¾€Û4Ö®4 vϑʕ;_¤NÒ/a;nRS&IR·ggMÇè/=I²ÐA6†T°u§˜I BµJrY @¿‘g»s?SzAèÅLÑr|“BŒZ d“çkž«5Ão¦{©²°gáÓeMOúé‚Êâ[Dw—¤º—u·ÅQÙï›sÁÙï}Ûo¬YÇ™ÓÍ^“±pô‹Ê$ò¡ÏM¨“Ÿÿ²ƒÃgu˜v‘æ»Iš…ín¨wÚK£ÛÅ+À©ùØ›t쿦Zý!Ð?ñ؃G2çhpDEÙÏi ›:挀AÚ[ ­4ÆËÒ™éjIMÓu“NEÑÄsÝoù_ß÷gÇÞ,p©×pE ‰‡vïlÓ¤.íoUœ¹ƒ€²4ƭŦgï§à¢¸P6ÍŠ›‚ÕE”¸ÅóÙ‡ôW 9ƒ ñ©/’$ (¥cã=„õÀ¦}¬y§†%`JžS¼÷ÁòìúˆÔ‘¹OhI7pºq$ä¨Ýæg^ó,¡“jŒZc‚'7(.L“±‚»ÕAVGŒ¥ÔU¯85µdwœ`8“¾S¾ôIô7ÀП:„1X+l¼çÂŒiìÚÁŸ©Ã¦§a‡ñ¦†ì¹|«õ]b»RÛð)FToã_Î=<}÷Ð5cÚRÚÍfUo"P*5 ~‘jÖ†RG/h͘Hõ}}}¤É– }4qò'ÄBšÌ„î6l€ ™uy߀µ‰`R3-Qž×-wÕ­ZÎkØö*š|)Úãç¿Àš{¬{íDÎ*†±6Îè"•yLlÅÐù«¦ À¶!]zG´—åG‰W E_Ó«x§‚FĶlàéš[Ã~½­ ¡øhV)Ù$÷T(‰¶!C4Àh×e ýŒX¢½4œÿM ÿ@þûß;‡êÖÿ‹Ê8ÿ¹1ý¿þÕ¿9×÷Jyï­¢dìZæÀ”½¢gÂXzèÌkvž¸žo^yšX;þ·ìÜó‰¯ëNš`¿)¯€(çA›h•+ê‹”#>Àƒú Ç~øx?Mª8ãî³ßPkžÆŠ €k›ð逊¸${~Ê&‘ Bu õûöüü|yyyü~~yž>ç§çßñÏøÏïßÏO¿[b袭u%}iðÞuÇK†=6 »¡òX³ê75Üz¤k×êö¶j™Ø“Úñ‘“Œo—Åé KÜ/:?©o €'²‘_WžíGïÈ!ìW[A6 ¿ZOCgÖe·f£¿’È_Rç}Iådóñô÷šxPò§ jtªFƒÃgŸ*:ÒÖ0ŸªañoþÙæ¯ÑѰ£ÄhÝë8#!óYúT¶eÙ1;|½èÜD«–í±ÅM¥’Dv ÐG˜ÓQy¸PmÖ{K'nô¦,Êþ 5)A%‘ô¦µ=Ÿ‚mèrD+VÑŒ¾´æ Dýõ|UAÉ/F0 @÷#fœÃÅÐø¸ºªö¤Á|(択é" KJ‹Tzä@¿v€’KjÀì‚Ä|âH o×ãÍïá÷jF»*ÛڅܹR' Mb!Pº²óQ’ñü–è_mºØ-Ý­½¦©&®²7ƒ~è«{u¾RM‡i'^«Â n)ƒšî6Í«nʼnhƒ—ì@|JMXòâœM‰#€…_ìPÎÁ2É>㤯7´ý££¡Q¿áµP·Ý¡«i›ríoä¾exÅ…L+g+ï n³Îœáúѯ‰Û°IZ&€[Òû:¡ë½a)&ŽÓ¡‘‘&ª·àäs†\M,?W“ái‡º$NH9\–hp‚ßM>Õ¿®Ò[0}®Õ6Žâ9=Jl̪$—XA2šÏbò®ð£¨’Æ2œÞø ãiê[ã²_æÔ‹)"šgm  ­?d¸¢¦/êåŸZÁ. ;”']ï·%›:šf'q¤Ø÷£‚Oõ¥¬·—å%®Sô–m¾Lça›ŽÐ¶‘êëÁÚ *D%6ªÏ¤ñŠU‘ê¹ÃŠfF¤¿Ò úærÏÕ”d¢1lљ⩻49(t¢Rޱ ô‹.T¸¦½¿cÆ—³þObx(Æ‹óÀ µ,›Ö÷ªYò­ŠøDFF3ŽïÃûþPM7Hå£!V¼l/–ó咾Џ5ÙÖ>Ü#ÆÅs×õ#þ:LKa“Å­w M0+Mêp,öKX§½àR¾±+•Èâóxz5 ¥V¹‡Ý½Ðê^£Í)ÞP­íx{FÊIRº0Û¶ sŒ°¬}ØhÓ Óè<¯SÍ–¥®×cÄHƒB£ûÀK¾}!߆–-qoê3pë·¡is¼oáÄÄ‹L³¨Õ+ž(ó)jm±+þ_|³ ÐÃÜb{’Z£¯ö\®0ZÔm·êá…°làiFˆD2•˜Ù¥ cé¯ âþs¤;›´!A6dS%ÐøØÊ(† Öc„M Giñèõ;¶5’€Å½ovþ‹4¾ËÓ9÷@~³ƒ?鬯¡–[öqNEçÖ™öó‰ ,õŒùöS™ìôŠÂ÷«ÔóÀ“`›æÜ’‹D<éd|êxŸF|¥XЪó(ƒ¨;F?©l²]ZtÁÒF±B ¿t+¤«Û´kCúE›BÞ…ñÅ„ð2ÆW:¢] @³-ãYã¢{bÅ“%»CœNäTÐ%‹jx¥J‰%fê! kÈ8Ðð„TâÙô˜kò ñßÝŒuYóu³ãvŸÖ=í‰'c-Iªkψ‘¹,Ѩò–R«U ß¤t°Sy÷Fô•Ö=ù•×fœJŒ¾¥ö"¾ 4·"|}Ú€öÆ¡¥¦Âq¼‘Šz Uç5¬è½:Aùe&ëZ99ë•^°kÈDîê.¨›4¥Y‚ÇØ ˆÛp›™@Ye®pŽò{cÒBTÄ_¹f‘X‡P†Cb_ØDÙ©#8êjDÚOcVvésty"^£‘žò˜ªoLLúa;‘…u ’ŠIäèh)çìÌ!éû’S¢~@(™Î õ»xøÌGª8RѺmoñ ~égZ™XYnÏLEscNN*ß+…îÁù æÞ²ËD–õ÷%=“ÓÜÀ¬7 'æ#:š»h~Ý!¸A57èÄ+®c½I7H@¥`Cq_î³ÉÚš§Â©—}ˆÞ¨`}£+Å»4õ-65Þä'²Ñ¤ÍyIÐ_@Ö£±_’Aeì7G:Ò€/QAúçëûO —û;¼äçq3æIŸ‚.yÅæÀº¸¸ødÈ ñ9{¡+*è>)hW­;T;Ë¡®S;-9wš†;D÷Y1ãrGDM­uÓÞ>üÇðüa>>†aK%ÔE3æ'zKp Úˆ3ÃOVÀ𬠨H@ÿP9:FôÇ[à&FýË‹ñí-ÝR‰bܽÑ~ø4öÃû‰[´7‰"˜¤k¢xi(eŒB"k5ìÔzjãÕŸ4§K<(¥ÆA$d™]¢ñ•M}OÿeÞ²kO¹¡Mýƒ6ùô»À€Ê¨KÕc_¤H=Ç7$ö”ßù ÓÕ’4¼%43³•/$&%£*Òm¢lFêé©Ò_}öIh =OCKç#ÏW\Ò1"ý…s”_¤ôŽq¥ü~:wé/(.Õk¼QBInRÃÜ¿xšâêë¨ÿÆÅ°¿W‡qñÿüø/¡Ü?qª¼£A|F\ƒÅ ~¥uÈ:ú-ÖíÂý¡„?6IÎ_ ª¯çˆ/6;whŠxÐp´j8Yñlòª`M»üªïîcwš0-_Ói¬®’.Ö›â‹`8-eJöa~}}‘9?©Ù™Ê9ýF“€øb?cxþ¥‡gSâ§N8õÁìbI’kÈˆWÑ•eu|ÒÖ®-ýgÊêt«‰)e¯v¼ì¥õŸggbõ5êV°K€)-:3{¨ã̧*; ²QOe*Ô_IP_{ÅMŠ@Ll¤‹ž~†'%OÛòEH´”„ø¦úøô‹R_<ýB\B:¬ðMŸn“*?óùf¤n¡‡Æ'Ëÿ'¦ƒ{ó- sºõ´‡ºEg¥EÖ»¦n‚¢n©=MâK‘îùÒ›F²†µŸg:jE¢q3.ç):yz²©³ÄóH»´vœ†4Í­OäÓ!õê:&Èòu°DšÄœ Ø/ì¾ ×/þ'Rù&¤•ó¶Ê[g‘Ÿ˜<*I4L 2q›²+JÊEAÀ¡3}9U˜DÕ÷ëIÔëpµÅõ“)ØÒGßwq›ò—´‹ ’tµë@k"v;¢µ ù ô"ɤÕ<ÁN¾¤È?ùòŸ¦…o5éVXY“I¥Â ¼Â¤fsëÃI­à¬ îL j0 Ke'¡Z×_3‹âF!Íü¨Ã<‘þÖGñsSkfRºpàŸÆ›¢ÊH½Á%ªTÐÃݹœ©‹¤Þœ:ÁÀÀ‹ñŒÇ fômÈ‚ @A8r†ª#€öºyu˜êwþ¤I)[–Lº í’"C«IO‡ãý ˆ“lS‡‘î:X@õËtd´"½¦*~(]úŒ{ÚÔåÞÄ7@ɳœ†mù;q@gH|­»µàTžI(÷s“W_Ñ™PÌü<Ï«ŠbêâÊݪ(!kÆAaõÝaŽïG 2¸òã‘·ºfºD:+…9—%Õ[BÝ@åÒX‚º±ëØœG9ä¢âe¹0‚Å/ó@ªÒ¸øÛ@ÄÑ´—ô{õ3)ž4/MR:ºç‡)bf‡iªïTa~Þæ·r(´xøF¸|˜ÈƒB§ ÔÔ£ Í1!ÆÉs›aÊò¡n_Å9ßùŒÃx‘>7üÚ½óOFüä1 àniKs<ÙÂëu’¯ó·*Ì?;.éP˜s.f#3¿@ïÜÆ3Å5A`ŠÎ“IÞS d]YwØNÅl;ô·¨¶XuŠðT^~"duƒÒoF0 p£* pßûwïÆ÷u.²*fö¦ ™ª(ñ*¿ŽGhz iujÚ6mÚ2Ÿ µ™A{Mc*¶ã%Å¢ÑôÞƒ]úyÓA~È-?þÏ{ç¾… áH*̤ATNñóÄÑhpA²ï,ꉞ9&ƒƒäßü¦Rbë¡(ÅMpðñÎC'†/½î6»sÓjöüsK¦ÛºPCv†~ÝqÒ6xÐ$âK¤K²Ã쟠é׌ôÏן=¤´Â(ˆ÷£Ž' Ì×Ô½G†–ÃZo±+”bÔA ’zŒ ‚'2+˜h±¾¤âZ7)µpäfDÎŒ~ú!ÿØ6åê7î…ULOAé"¼“¨•ø[áw}Tb„Û¯;¡›F)Œ§À}jÑ»Ëý§ˆt~C)A Ú‚4Ú2‘ˆ£?ú¶÷'}\£ .~} ¶C™æ^ íÁ”©¡üS™¡’P›ñsMÃ¥©6F#pó•ÛBž{›„—êPS϶˜øáÑ÷pUt×­e"šbQjßB2Dª¨?•H•LoSÒÔ •º¶òs…¼ÿ°}¿¡ê6ÌÏðÔ¬ Þ‰‡e¥>¶©"eÐ&›®yo}áç›Í6m*èRÓ®‰_|£xмPRÞÒLäSŸ¹™ÀÑŒn$GÑ»KÅËÞÁAyÿ5¼¯©QÕYŽLÆçÀ-ã& ©>âçúHí0R0Kã‰ãrà4?£)*»lÈK0å+šÔ€ÛªÂYÎßúï”z¿¦ —o|šðí/’èɼö¦(å“*õ韣äê™Ý<ÿ1Äßôa#_xî>íŽk_n|ŽƒŸ^'¡Õ*ÎsÛNoÓËoS®àJM”w%/Ê u?‡¡aêØd0ã«¿…ùçfúGß ÏÏ÷ÇØuw²4£¤ŽœÑ«œÓˆ‚‰³§_7©•Ûø@¡–S$È*¶(š‹WPw-º~î‹ÕSŸ›3?L—8zH”©â‚*‘êibÒU¤ÛÏÇÈþ“'åavo´(ãDÎ3ô*kAVQF˜t˜G™Ì9›Œ)ÛÊMTS¾÷˜˜ç96BÏi›¦Œ^ê0Œ;­Yý1Ô6M@’ÿךœ|ÉÇ÷S8¥B‘“_:Ëÿ{èñL΃ÌëìFþ¿MÎPßsÜ¡÷RÚÔ2§”„„à”VF›þ‚€Ð…+ªµqT¢IᔚÂ)• oƒ½Uƒ¹—ÙY}ÔäH¹LÑ…_Nžœf‹Rû»nAzë³H=Û¢ç­ Ë›êMº'uµˆÓò·¾tHaÐгfÏí·ª*b‚ "f]QŽ61ø)¨¨÷x\C‹dÿ!pCÁ3ÕÈÓ,€K§)'õ ü¼cÜÒÅÂóo“ÎY}ƒ®[1[,ÚÒÛœÈú] Tn‹7´pÑÞ¨eèçš]2¤wÓÒÍÚÛ×þ!›®‚º¨ò¬Ë#»xð ÊdÙ&-jE)ˆ“ž˜2Qã×ÒÿõM:üÐHêYÝRhÓY¤ô!=XüÖg´˜ˆ<&ËÜŸônº[$¾¿M•ü©÷·ìõ$ézÂôSs˜n*3ÖPNmm xoÙ”ÐÃi§Vq‰r6„l…TÌN~)QÝ=Hî1“/Ò|øøôIµ6¾ú—ÒdsdO¾P6Dç¤+€êå%ÍÀÀ€~Ÿ›”>;½·{&¦ºMWjÛÖž„,Õ‘Ž–Ý¥Ü¨.ØÔ©Ó¼üGœâÝå¯g ˆ¬­£‹ßE6nW>õ!pÍHtöŸ«@Selê¹?x®ž§$t…ÐI"eâ=+58½›&i´á¬|®†#“Z Èï8÷G0ƒ›~ ókf<™ã»½wºÇ¨Á'J9‘i‰M¼Þ¤%;Ûïõf€¨…±*zQE»›µ<©ƒ®[I ýŠ1ááhØÛSVÞ6Ã1s2/ƒ2_AÐlyÞ궃òÂpL6½õ¨I¬Ç ‡ì§ås¹{h*à@¾ôGÉ_úBÑ”âzjâHÿ˜”Š«4½Wq³Ê5šWúEèEDÄ`ÅP¥(`ªÛsw¨ß0CDªÜ\÷ïÿC'I‰èÞ jc ÏÛÆ¼Îªv-8káçÑ«TõGÈ닊½Ýx¢)\ª üÚÝŸ!þ-0£Ñ×"ô ÛÌu•:Ï÷`å°§ ¤bËq~àœöd|4ò¼É,Ę{žÔz¶ÓJÈr•ÊãDgAxÒ®q¯<#§Ì“M&MÙ{c–“SYùSJ6ï²á* •ÅÂvù§ö!•¦`7`/ÕŸ=ÎkXNWR3êq2.ozï%…ÍÆôšo ÐtK¢†÷˜õšjøa ײ%ÿ' –פ¶ %#æès ¾ YøÇ@OvA“ÿºùO |Š÷cJ¡ÉƒBGv ô{»nkoçÞ:¿øíŽÿLjpñ.툸¡4{ô9P§W¼´ [õ&m)ßÒÒ^E>‚½ùqƒ»Ù Î§€¤áDáN÷ÑÜ*¼Lv9|óërË´ôX"æ£ê›Ð•™|›Jõƒß`ÏUÍ¡^ÆIGžÊ8Z˜>ðù#Á¡¨I©Ç¦ j˜5Õ6tØ]ø&ÝUš™¿Æ0ÓR˜E‹ü84Ì;d 8ÎÏœŸ·Üû„/Ë—YýÞ?Î_©µÂÚÜ‚÷Mš6žu¸8»zMi&vÍœŸeÈì¿ÀCü‡Óç1ú”Ï«•oK–@8$󋚸6,eKÒ«_ƒ¹.¯{ÏM…Æõèî} 2»ù-@yML øŒ ­MØSòú¸Aâ9ÒÔÚ%Gꨭ½è²îØ•>7ŠLîþûèôJ¶X’ÇΡ GAn¹pô]˜)‘ߎtßvã†Õ(‡Ô0Ôk׋Ÿå7(A®D Ò$cü4ôiøT¿Läb5ýtaˆ©–£h´†#“Hå|üýæâ'±õ^2­;zðÍ8Ø#¥ˆ3˜HìI‚µ¹À˜Q2‚IDˆìÞbÔ–¦±+sK¦6L ‰Q÷jÐÒø^MöthÂ7-HO€Çs³Vý×gA¾XxZ`à(±6æUHA «©èðÏÍ©úÁ¬Û›©Z­—´aØÊ¯â’’5¤ r-HMÖ rì7a¼ÿrëA¾¡àm„#¤¾1€¤cN>ê…NýMM&ÝOå÷94ˆìO|w ³1(á4=_p^¡Ë´ázZÓKwЏêýþX%ó[Š·ù!u6ºªGt±¨ŒïçlÑ…ZT½Fá5÷ë·s,œèËGžäÑ”QɈšYòY3ƒº[LfËuÑá>Ž/ÃðûêQJC%i~Æ„Ä –u7«ô±²+ ?¿öÓ;çT“8!—˜£cûPpß|á’B0(þXúW¯‰“ø:4¼;ôy¾èŒ”©‚xîX²)GúH?¿¦_|ÑmOÔ’®ïýøjû±³R¿>÷× ^_üã÷}&çNSQm)·aK/Ÿî©xg{ûÃ#2_Vp$&€Ô U7·`ô‹ˆ?³´¹Øä¡ê—Snn=ÓÄ£dŒ*€–¥[jrh:x#&é¢9\*™ä×A¢ú==ƒ)Kê™p‰Oã ü­C⬰ËúÕÕI$'ÈÑw‡Û©K3ÖH—< rd HohfX]øçêþ§ö,Õ+P/êwlš‘fmµ¤¡ âCzð¶:¢èk2ôÀ8á5‚žçKz¥óhŠúÒÿ‰g‰ÏKv…^¯wÛgšP²"Á„ï$¢ïÔ€”a,¾Æ4õaí;5úÌq‹zEúŠR1§9dgãR!§sëŽå÷ô÷OΓ҂5¨5º# NÝÒ¬öË@׸·úî >#%hšÊr™nF¨ˆ2™»#ñ?Möˆ¨ÐP®‘,UÊäcHíU£~Þööèr¬†ÁoÂû&¨Ä‚Ñè-MÊ´U½R³I+0ÿL9=Cé<»¾~zô']]…7?>Uºè E›0I¦Ë°‰ŸËtuã÷&þE5-ø¹ïk~nkµÙ¢»MP{›¶<$ …k ¶^&˜4ØuþôÅ7¨s N¯ƒæf‘*‘JAêù°ü•²‹nö9ÐéR¯ã:Î@ø‰$õ8¡ý:Æ¥¶Xþ"e}Åè§Ôq¦‰ânÏsο´?𡳢KŠôý9Ò2ÿ# ÀÐÊÚSPºŸ(¯Å£GÊvñæ•8É¢æΔ¿Óù•CÐз01ê½JxŸ¹¯ñ޲Ä×òG@Ḧrã?3èîm‘/±”{?€©âÌÙ@íÔ“ã1Ù…º0€þá@Ã0ÝæÑøàÖá¨ðeµq·Dâ¢A¡§,¢Ëçye<„ÍÊ£•½fϳœÞ4rMÑ­OwÖ©¯Qje·†õáq ~ž?дÇîL½·MóêC2ÈáS“x€ª@µµC˜¦$OŸäT» Íï¨A]Ô£˜ãUñè6Eè áϨ>~d(EéWõ—û\¼ÿv©W“é ÿ¿ìRÑuÝæ·:Ѓsß3ã®y…õÕŸèèÂs >ÏkO:À¬@fSLZ‡‰Î!=Ï綬ó-Mjv6^fª0ËÒG¤ò¶ŠI! Qúys²ÕnûñÕ-¾I úèw6TÅÅâ²#. 4&IñP¯„*Ð"Þ õðŠr@M³§~’3‹‘‰"8‰Þ ·‡5Ws‚MZºu¬;uÀk:¤¤ÏFV±¡ŠO‡ \MÝèÓ[ulXèÆP}ü‚a8|›19 ’ÐFù…¸k sN"LÅmJo”¸ÕPÆ_ŸÉ*¦éˆ÷mó˜,^Ó]½ù¥§bž,ø{„Õ³÷T§¹ƒ[¬ÿ>XþeµÿÊß$_:¸}¯”§^³K%(qÞcìPà÷§šHÊAa«¶I¿n(Øu' ?µ W)‘ØÖäSÒJ¬TЃÊV ÖÁ¼M)às›n̶QÔ7 ¯&(c^XÕ›Ùª.!oAê¼r6îÉ@yšHm‡æÃ×ß\T¢~ûÓÑw*ª:ÿÕ®¸þ ¿þUºþëH‰°ý2ÇM_žÎë !44¿ uå#IZ‘¨"ØCZ / f½ñ¡ß¾ü­ü°ŒâéW ž¾üŒ áµÍeÒ:T¡yëhNà^N€ÿ,B…@ÀMÏô¡tR]e*òt»VXwñ6;¶®·Fü(HTãŸâX…›™šœqàh8QƒUo "WüqhÍŠ®ÅÒ’ÝSJ¤W<¨¢ôTD6g}ñ+›uiSÁ”´-@‰oj1w Õ'Žï¨ ²"5½US_Óa×cTæÈñ~ŒT¢};~¬â›åŸ½29/U™o€y°£¶ç¥Ñ щÞð§?|°ËYê| Îb:âŒvª§Øô÷šyÞE:w? Œ(0 šŠ›0‹I-©˜E¨Ï7š:—@~– ª»ùy3æõ5þwÛ)cþËäÏ›qθÿrø~zO‘¥Wª¬ëš²I«›’çÿï—ŠÆiø‡Ð]¯¥(¶jQ3§Y úvÉ®­ QR=b@d¥¸[X°ó« ‰ en[˜ßÌ\—ݦÈSüâò¡JÅhEοÂìU¸U²¼«ü,¬}hÏÏYiù4Iì6ªÛˆjv <„bý£ igõR ”2âÏ©÷Ã!‚((+m‚ﺯÖÊ»üaF%.|t©ŒímþðôtmP¹gºJ¬ !˜­¯ªÛu 8H”§TìºZAUÔjÔfÕ«§ªžJÍås…i ñp%¸Uõ:С ²†ô,ë›:x6^Ê© é=°£=-‘T‘ì  ÜåÑ«8¿¦Ùãy€ï'7Àé^ÕSügI• £ W%cô¸1^µ@­h3 [m†} *UKW„¦TZKÐìR•œ7cM.Mçç™I#RØñ×…ªÎÔ‹—qîÔ_+¤~u¹S™ÖIÞ©òVÚôÏ.Öý¿?üÇG÷ÿ"<Þä›ý+þæ\íÖRTñKU*MÊvÊ Œ¡ÊB‘‡ª'a»Ó}úu8~vÚCx}]©°‰Syýyþ‡Å¹Š¾Šr‡U|ð<µ“X‡:H\_¥*Áb@C±iÀâ­R|ü¸ÈÓª@ÓT°ƒ˜5¸ 4huÑGY«ÜN-‘‹ø‰D»™AÝ×Ë-æyÓJ*ª5`¾ÎüØOe¤B/᪡žSÙÑ jZ-³+@ÊðôÔ¬» u¹sw¦ÈÝl@¾µ„e¾€êIŒMœÞ¯Á.~Kg( h»“­ÊjbžÄÄ@Ô*Áî>[XÏ­1Ê@Aâ6ð‡Kñtõi°{ÖMbÁûjrÿ„5ÉðJê=S OAï ⳊÊjzcM–“j8\_©ÆÂ¨~{BÒl¢l‘”4ª¼ xäW0=?¼ÊÏuâ_’ݨ¨Ó4 fS&φـôÄ6˜ô3^ÇËIjëæ>õyß9”l¼« 2BÅfuKç9˜!Ô. îÏϤÂ}´ÞŸãEøëí÷½…r0÷vzdÕI„{§“7+Aµ+ôȃÚÉw@(v@\V·ë¾—=5H\Ø’ÉÞi8Y”cýÇsàjEza« ãú;¦Â:_CnèL¿]Ál츌õ}À­ÚiµD ®[bAMwj ÐÚq6…‹Öéï6㘭¯]­U/X5O´`¥ïGï\Xƒ qëÔÚYs-?QZb€QÎ\Ó‰‚ƒUŠ ,2×øÆÔ»&¾˜lKuöø`‘˜\_<¯Z­.Wš¾RÇ|»'¥ Óß cß½þ=Ç·ûï0þíPÞZk$œúÚbjO ŒF-ùŽ5lÔš$µãpk0ìÑŽÍùÁ1‡—EL!Af€")¨ú 1f‘¿øa&Ó »œyTÈs†÷îâÃ?õ,û`õ®ÖÃlOCwâÉÒ +Ï‘r:½›F•W÷i¼ÂûòF¹qO^neѳ$‹\ˆŠ)pq&nVÑ­Î/•AàBƒbêH?´á ùX4â7nâ) ±©²®ý„4±2º7˜¨Ä é¸ú0Ík±©UÙ§êÁªpÓ‘Oý¾Wv©\²A®Whš‹îŸ,oÕ°  ×à.«]ëtú„žªôVm£•úê¡Þ¦t &~ò‹·_¦1°-Hù£´ý4ÇUiJª Ü2v…t±i‡{w éîÇý:Vm³)%ƒb°4hkü¥2(Wð8…´dÿ|&·ï«Äù5áü¼éx[jñì´{ŽÛ4ÄÍŠ7ËÉážÚ©»ÏÓ4ºÌ¯3B-B))Ù^–ûÔjR˜V¿KU‹3‹(óýåÊšt¤~ãÏ—•MK¨ÛYýiò’OÕê¤òêr¡’Š48êµÅÿœfF€¦ZL±ã·«4å4S=*^EχfÙ©FÒ+•­ª Í‹©#ýAÖºâO3¾*gQ †ŸþhaµxªÊçw¿‚s>S!Yñ Ñu¸# 4„ ”ê‚íÌU¤Y ˜¾ëhº.ß©¼E“Î&eÑs §=©vϦf¤¨b ˆ,kQZ#ˆ¦dRv{®W}ŠZ.ó*èFuhHöp«Byú9msꩺVÃy§†þ²ïOT -:Êý˜²h8§^¢CMaøV éOô¦êƒ¢Èí³IsHKùÙ®°hêø«‚¬Ëdüää§|*ø”Oãë‘j‘:éZ‘–‘T aê!‡Ãðúƒ;ÊÓü¥·ÃtHËî}Œ^tÅkŸ’¯4ò矛eÿ_(¨*?ïÊ&“æ'JTVH/A£C)”LU4|›‰[!u|L…¹Õ-ºêS˜:ÐÚ}ÏŠ—q¸rò>*PÕâ¹ÆÕ¦ ×Ùâ=Չ؀öö:þ²jB8Ž›n:÷ãzÆÄëýz½¦zEèòè∦jØ?¾c$Ýß{Òóq–6®÷?û ÇÛ)ô஢O]ɵ}gõ ŸYö-ö}š#R=ýý®1?­q`xytƒâ±?6qW\­3øJ˜ á'·ímMZºßçí€'ú±ßuW³À‹Ü›8g€<2ëà[ ]b]*Wɳ’¬ûû€q­Ö§mα炗zVÙý…ÎÊøôH¡±ÝË[ƒÈí ÷ò̆útÓ© Sx;g{£ j@•$§³;XƒjÁNî”ùè펯%÷שQ/Ô1¯EpSVHVìö¢Fðs 4˜ÍŇÃK Q‚ÐC¥"€jMaO&?DHÒØõúuÕc]>W¨ËÏ&ª¥€Ó sW¸W¨õå n›¨oè>wúúò¶ÿÙ¯VMb‰b‡hI G$’ô,^Y®<_Ù”\¯Z´R®úäzh›‚k‰Ž ´ø]œùØ›&œwzBEû±oÇŽ÷|£ç¢¹#èäÚe%í‡ÌsÏÚ¢í‡z¸2q×! Ÿí?N j®I¥húE¢}|{1Kã>noì¶"ºM4¯ÇÔè¢X¦RÙBË[ä[²é?x~uõÃ{ëã+¥ –@¹1ÅáÒ›ÃešÀî„£ìz;9ã.“JÛ´œÆŒÈ5±íëÛ ®G¸é`3M­¶†Ô´¢û±j[ð­\™º0dÔ°‡X™êãOôj U06^+g‡Ç÷Î-Ì•¬Eû¬šöÛåoRNÕÞ¢Iþ)Ϲ\p2‹B>ÏÕ?_ý­^MËÐË›s=Éé"kU¨{J›ÇÅW惘´Å¦1¨®<žKÖñ~§Á—ÒwÇP!TÔ¡²êÇA\uSó=e@`!P’•/@%x>P©ºRGº^þ¾ÖvùÎÜö Y¢ã–g½\oRAj5§?÷ŽýfAZ—¢íËÎô$ý…a§ÿ ÜU‰Hç«ä¦&¡Ç-Ò?¤[?ú^ü´ï¦©¾‚ì]ˆw>úìuiS»Ô©¡UL“M…Cl÷H…© ÐmIüAìKç\|ë.^P3< ee%Z×Ù)^¨Ð›Ûô'Mk³%ézssÏ=é:£ ZÃx~=e®ÍOšÐŸ¥èRCŒº`yöâCW“†6Õ‘þÉ%Õ9S1ìÒb«°B¿º&ÍÜn 6¨.Âj{#oi×WUÿ"ÔÕõ ì?¨O~„Êö©ñ™«T‡Z¢òÞü§ßBmÔ²ÄR%“ÆÅ “zlëËÿ}S¡‹ ôOü˜©{%àÆÛ]Žûˆ n(ácÐM ¶üì) “èci ûÝïõÞQÒ»Ó¹/+Qˆ*¡¦e RTUÙû•kšjU HOÿÒʰ°iâ‰2h/˜ž“ë¨ZQ æÇì„æÖµ4Púø@5t×Â…†~*ñ>¥+¨‚Ná“üxÐÓÞr¿[ÆÛ“âé}¡»ŠÙ3Æ¥%=Z•fž‚üG}ºI_éfrƒÝjÐ_«™ôÉ ù|ÍlŽ•ùQd ¨³²êHOû0¿¨?¹÷IYE`ê-Áe‹¸®ŠtuV7 ýº…LFËtŠi˜8tÿ&âòª¹¶AŸ2&ЀQ/•æi .Odž~YGJõ÷èïcXS?OT‹+Eñ3F ê®÷eX!¤(]â(4"Ý|ÎÓ¦)Òô˜BX`‚sXcµž´Ý[°âÍŸßýÒ?|Ò®¼dÕyæL¼¡‚…f÷O¸ÞcHºJÝ­Ž¾ïûqûÙ-¥]-žÌ º ºJñÙ7b…´È ƒ¢Ð‚t»¡¿$S²ò÷ö¯)ÙÔšú*Èž½^(·$Oò‰¢ç@ãÚ¿ùw¹™|{¤¦×6 P÷BÔÔhйàt—fw­p~nq~ÒÀÎdK?ïw«ˆñ=©»Ãðù˜’ŒîO*…q˜éÀ‹'‚Ë©åMJcO ‡?>–x/gïisù_êJPKîÔH”E—ŸøÔM-TA©Ô—D¡^JI}Œ÷G´ßK’vÏàÄK¾äáÂO¥Š¢š3ý¨FwßĪ8NÁ rSRÕž¤E>KÞ™Gö3Ñ Õ¨< ´€ÝìY}k@|ƒšêž¢ÎÏ)–Ijh\U¾ Ûi4Ÿ8¿ –=c'O¿½ìU%ŦœO‡ª(ÞÇý™”[ š‚á3 <ý{*kM±4X^[Œï‡P óMPOr?X~ÖCe¨Æg0…Š×ÎDÄÅzHR Ä©êÁ:x­Š>õÓç¬ÂïKÚgô¯HüGI~¦Ø@lˆ¾‚óÝr É&:­ýLÛab]OÿM´j0ª $BàæeâZñê²iêCóõÖ_qV™v -‰¯7TÔø{€@æbkòuå~]e§—û+Ãiæ‹€lÚ ‡ž¼’&„X§T1˜¨¾ ö;?ØçáÒ:ÍïzšÖÒ†«•¢VÔÐ$MÊ…@EiÔ¹‹:eª©“¶uø1˜¸CGûñ!ÖÇ/?Xsß¿¦ds "Rîb“Ç·7lÕxÛ軄~m°ãð6 )yzô×EõA¡È6…ÿÚ©âôóŒªêÍm¹ÿ+×éö½jœEHÒº†œŒëej‘û ¦˜Mõs¤;µe®gp”@ûOüŽQŠHã ¥ç#å—êp~M8¿W8á¢nªÍãéûÛh¬Wƒ×H² JRûufM¬(ÿjKùOQ *)½GŽÍ”—Áô %Ô«&­°SÃØ‡p‰¡ — 9V DšPÜSÜ44œ*Üê@±üC.õº6©Ê†Åì£xH•BIï¬ZÎ$®WÖÊGþƒ‡*"PU+¬x\Õåy” çç!θþªzR’PuÜ›zõ¸õ¡*~ÄžXé4ÖWFçÏb<™5GX•KùÕªM¿1äó1Þ_TˆX'˜D£ºqTÛ«ªÂ ËŽ d,TðªNÉŠ¿øûŠŒU%蓯1ŽBEe8ê¡ÚîÕ:y6‡+1€H…à@¹“B’z9ªªá4ñz¦hMëÍpÓ6e,©ò‹;Õ@þSó°JYÀI¨¶ŠGjŠM.®;äû`;UÓ´‚¸Q%”Ñê5þpYÕ qª”oAK¢ooGÒ9{†m+ŸÚþ1 Í>Š÷þ•P•O¥Ê¨ÀÎû(.½ÿ™¡"Ò¸·è±ðYBòŠjUÕ·úêG‹vÃÚ7Í,•#˜MEj¢Pâä{VŠ"¯R`Õ"wy5`õ^9ð)ö&UäÏ¥c•å¾$4h*aÑ=%$§Qi*­xÒ)=‰œÚ îTþëÓ°"¿ó¨î³¼Oª$q´xÌáôJ¤jDOª˜H÷u NÿzšrÖþ»%Qt)g¬S %lˆç]ÅŠfû`Vm­È´®:CÙ„”Ddúâà晴©S¹ð­¿o ®óm?ê  ÄP„”òߪc9+æVåÛÆ;ëñÌɨ/˜©ÓÍì±^Iu¶nô[â{¥ýb뺪¤AÜï*Þà0ª±Âà/8Ø|n²ìÑ4¶ÈXp Ùk @—"Ðû¡ö» õ¦ª¯zOdÅ#¨*ä¹5MPûe´ZË”ZÛ4 Ôo¢þÓõEŠU–˯k}³Þ>îI ýhÃLJWMjÛæ´êä_”-@èIT·ã(¹„_AWªßVa:ô`)RŒµ¡~ÿ¨•ÒgMs”CQ Vj•«DéòG÷ê|œð/ðŠØúêÊ'åŸ4Æ‘wÍÚ>…*Z½Bjõª_Qêÿ°cÓÆž´¸ô1úƒšªæ#„rÅÛª“¤JçÖ¤Ãö‡ŸÐHL™˜h§¶åeê¸ð'Õ5a=‘ÒD5ØÛàdT•S@ÑaáÑŠ*ü)H ªódñ—¸åRªj¦)¢Õh ­*®L\žSZÇÿ}fôÆ ‰¥˜²WtužZrjäþ»žjJ¯ VʃOþ;@¿Ðo̪Ó=ieÛc|ˆñ×èî÷ðêÄ(Ü“ßW¾”R%_%ì4Ð[ ºÿHªÓð¿#›&åêÚ¦³Jb ¢…ä»”sé©––»“ª@ó'…©Ùû_‚€xK­ -dêííåÒüE{ÐÎ0ÿÀ$j•sãðbÆ.UêÔí›ôD>!IR@>!)T!i–¿ÀêLb+~UL ¬B¡-£ÿ× x|ÂçXåaX_(/©"¢Öj³Mà ã”Îa~ÞzŸrgŽ­º/½©ýGÿ8ú›&½C–uá€ú\K©ÛÙôQ›]úS õdZtã¢S }[¬}Qö )òoÚS#Åt}†º(}TÊû[÷/Ìxðê´Ö눚ԓj@¿öh*fØ"mlïG÷ÅÿºH¦hžLI:¿(OÖp~߆YÊ}'?}Öt#PÈ}Es*=>îHéB† äa: HO î/~[³'ÔU¯ È’'ŠÛÔºY;¹Ž_óM?)©õÇHÒ) ©•^ÅàDê©™&”¶ EmòL–¶É“Õ”JS4ÂÅG })|›r~šËí³ ÔÎÏÛ/ó*‡»-ÒiÍŠOŽ…ŒB’V!”.*~èu )×,Zø¦“Üÿ°€ÝÉN¶µÍÃçóC´â¿š<¶©J剤¿´öå´Ïûú¸ªB1 ÏÑðN£GÅûÒJ“*‘&|\4éÎg‡ù]¯L§&i¡îÝј†´ö G+í­´¡0Ù¯¿.òK&Õ‰è_~k‹;ʯŸR©ou _™œÈ­¸IO¯6(åˆiÔ·èAçà›4°bŸ ‘¾3Æz2õÉÎå©G5qÖ”áC&2ÀÕo”ä‰B‰×,ʧ HÖ~¡†1\½õ'<ðg)Í#ýŽQ³¿¯C½j?̳ñcú Âç§ý$m¦…6Ä[ŠË9e­çùà›¤íu÷Âm|+ˆÏó3nT‰\ÚýYÞ÷þ~s¢QãÓñê·}(’üjð6Ó'¶é.±ëô<Õ館™™¤Ñéó]ñ@q!ò¸O5%Oê@«¿ÃæŽjà¤Ò4ÙÁh£w ^t|õÛ ®ƒôAKÁ_Nœ ‰:¯#âœÂt§"ÇË¡btL ÷ j3¿6Èü¶”Kˆ<ö ª§+lªY¥Ÿrgð¤*(©ÉûhÙÓ×ÄO¾üœÒ¡Bøß§®Tv ²×T„¨Õ²dè×±I£œ§%zºgEqÍôàÉ•rIÜ£fÓߣŒÞÓÓ¸j };Zý©Çw'$hhûćJžé)Š\…jYü>zû>‚âù˜ÙgÛ´ä—€"„ö½Òè÷+z“"ÖYÖ)ž~Aň¬Ó–$BªçQ‹2Å+ï`ùý$Åïg‰DJõH ÕÈ›T©7éèÖA-2ghMÞtÐ5Ñ‚ª!:§]t¿x^”ÕICHê@ƒèG‚ý“õŸ’pQˆ¼(]œ)NH 2UÍš Ø-ÑcmÒÝ­ÚR5Ëc^}ôh0嵸¦ ÇçRBúæTŠ [tÿàL¥ÕÓP'ëÆ6-?$zƒm‚:ˆñ¯¿´ôÓBò·Ã TuAŽ@Йr޳‘ }%mn÷«=‰ùú¤Í„$×Ó\ZJQ6V¿¼SijB ÖáiÐêÍtƒ"M7MšnáÕ½ ÏñOkŸÝJ6¿R‘˜ IÑ•RÐJçªåŠ)4€ÉÓs„øõÍï}¿4"Ì_×¾M‡FÓŠ;UB9‡kPE×iìSÓ„õY[á`I1 . ïîþ¢I-ËÍ¢—±Òd{bŒ ½4>Ô”/Uæ_)ZçÞ§«sØíìú©ãïÑâ\ܰ–3¹8zŠøu–y8Åù}{<4îyºé=(Éiõå!P«KÖ¼>LKZÄ(‚¸sÚÊ#°Á¤°¿nÔï›ç”$ieÛ²—?måÅ  áh\ÿi¸CR×ÎævÊ(?¢BY?F}z½þÅ{Ú%Z}ù?o¿üøñH•²÷¼ÖWÀ~ewÄ;ó§dŸæC&l»‹T`¢:²Òu‹®îþ"-EhmÿåQ’ÊC‚B@Ûɨ•I­-‚>i¦†©S Zÿ ߢ'ýžn7ŽøL9Eî¸ý“&[:¤c‘H+–Ÿ®)›ŒŠ¡“ÙIé;Æö>^þºæ0u#ƒ5!höHÅÓïyjüwE/zhêDI.?Ã(=É9ö©½k¥óR½ü§D¦yÙKLqå;µ ¢€TÂ9Ô'¨sçœ7›’hîcø×è¶Éþ²È{Æ— ÐÕMãP]áPi›þ5›Ò¡â.ê|øšïJÓÃOyš³³+½4ôz°&¥ y«¡Œ *?]äóðÕ^ºR3ÔT‘t:^­%_jÕL³š .'ˆÄ‘ßø…µWíiʤZR÷ÃÃ(î¦D¤sªè óƒêiÔ ’Ä·?Øâà³fö³è²`x( CºI½)»ûœ*^Ô©¹ê/”öçG·ùôPíÛ9¹r÷J5¹·×*…Ë )*NF‹ßi»\ÿ4ɩլgÍr{[õlùÃ\IÑSÅW®ù^3³vʳ±ªPÉ®ñ9ùx!VÿâYt#5Ñ!=ß“}»¢e¾ÐŸ§«Jú6¤õOK¢.T(¨4 AB+C÷\Ž?ÝmRÅcUJëŸIsô¥ÈVÆ ðÉ==µ<ÿ©6“Sýÿ~©N‘Äs "åÉ*_¤U„MªÉm€ºÐLÛ2Ék$G¤eQNóEêŸæ$ HQƒyt¯òG ã£sÔ´õ(¢%–]=Þ±rJ×ùÔ‹^Gú},}¦xà$l– !ô麸Ì éâVw¤œfRéŸ[×?ñ3º¤§7d²·º¼üËËj‰•ŠLµ7Ý î¢ðB“2•m²kx˜q@x-c`6Ïç®#œÏ“YW,Û š¬h¦Go°]Ë"eË·ìbg®ÁªŸ·Ð-ËýHöd[Â’Ïú“¦>OÌyá *;ýœœ29©eùíÔ|–OçPïîÔ6¹|ìÔèVÛ.þ±kÓ¥ ‚ PÓFí†~ÿÃüVöj]¢™XÞÔà½VëMêÒ‚ «¼äžÆÇOÒÔ¨R0>ÁõÅâ‡âê—ÓdßÏê.½$RÀIŽñ˜˜5ǽèÚUK‘ª)°ë Ÿ\Üÿaã$YÒØÍÕÏÈžù?èí›æfûªAlͪoUœ)ÙOs˜ÿ]õ—¿ÆÆÍm¡¦‘ ª *äÀKú¸ü}ÀŸPΖ kµZ¡:\"ºÎäXCšD!› ºx ä:•åS{p¨ÆÞgïWUê$Z¯Lõ¼¢ÂÇPD7AäÚoè'ó¨úI5m}¬Â•º[= è ö€r¢.úæ‚Úîs«cýÚ¯®ªI–ZS¾sRUQV e­RNÝÒ5¤ß·éMMhÖ xùf¥j…¢ ¨h›, bJ};ÒõM5ÌÔ46{µµ}®J A¹Á»C£J=­+Ôžç|ÏÚ¦ð’¤ÆÅ7•§WX­[°ºI?Ÿ°þ9Åj´{O÷»{`´››ö:º*¬í $€Ä‹§Y.õ]¡ŠÌ¦9REͦßëºÚ €gC6€zãtjù°èîuïUAT E½2þ»§yYu¨›­é&çj޳¯6RLmiAUŒ8C½Ä‰¬{z®àœXÃtgzX×ë_?T“Ì †|ìþ'¤Y䥛ôó â—ßÔŽŽWÔdÂFà³rºêuKPA”ó=ö$í‹KKæY uÌôøE‘´U7Ò l# Mô­ZæÉ$–½òÖbÙ:|ƒ´álQ4€ºèÇ][Lv—]Q¶´© ëmŽ£(ÿ×2ÅYÃè@4H ðY¡¤¥K£\u@@Ü®ÚÔ–¦LçmS lä 'R$½á`þäNQ œå©}À¬Íuú¿ëƬõVD]D°×¾`A]*¡vICÿ’]û5@ú¸½ ID Ö Púí¥5…QUñj¬®ãlþX…­×Õp‚uqµª›ÓËÕ*¦FÀ:Ö}4(™Ö“Ч@š©Eß]8W–ëTÄ 0À[ét±þši½e¨D^¨ ý„Ž–_/ûêsÁ[™ç’HÀhƲÁZ#\É)S»[ ãôxNþLßÄ_½¢<$£Y_Wýªâ,¬¶K/@ ¬T‰{WŒ(ÿG«åø+ V¡~ÍP§táBÝIõö}z¿¿?=Ù×5ËFfçÈ*ÞªRD¨¯ùF•ÝÍøåô‹<•ºfSHþ¢jéèËìL K-ócí­È³»` VPlºøXA  0+ÀÚÅ[UD´jÂʪ«@3}ÿN\á®±Qª.I¿@¤¨àÙI®ù. ‡‚piî®®H\¸¦z–†~E·Ê ô.sÞ‚”ÇF‡)_ut©]NU ]Ô—*B3%ä5nð”öæliÓ$N³þèMÝ¢% "`¼Ó¢Ë›6> Hy\J ¹€4ÇzÃöqqÅàÞ×Òä­¾ æQ!o-ГÌZ´.AªU yñO$ßô–d¬æª´ 㿕Å. ËP"êiIrïUœß7o~=*R„££u5]•2+ý•2Ú…²†äBßqõáý¹¤6H×"ÿz|íLJ=Fz MXT‚B+±˜GÖ{¾K qzšHVµç&üŸ?s³]\zû6iþ ¨oÅ–yÕBàµw©E Øz®úâáŸUÞ#Z &˜ànŠ’K+X¼£4¹)Í&¥ Ð÷‚ @ÁbÂOüYÈà‰Ëäºtð¡«ÐƒøÝ« J¤«J˜v¤GŸ„÷²òS*W ß{øËaª¦»¥c_CÉ`öS‹j ˆõº›¦~%Ü ˆM êjü‚R¼ ¨s&ÍNm@úy{¥òù8Ï£±LLoÿà›³‡´òˆæëÒ¨Ëeª‚›úÕZŒŠŸB’ëãÛð‚àpÔËÛꆪg(§¾êÎÅ(*þã‹GµþئMV-[«ö?lÊ’Ôú©>^«3à÷v¤ì/DÒ¸Ô†úcŠýr)´J ÷ÓĬg‹o˜¥‚¤DJ}—Ù)9Ì•_"ÙÉqrô÷Ý+êdIªþ‚SÅGô‚‰":U|„rgÕÔ­\‹ *"î{’,(÷A½¬¡Ôÿ'ËÑ*€B¬`/Ói»4ë÷À¾OtôÏÔ@®–V¦ø_"ªBmÍw|ÛëÎçŠuß Vä¹u jø/O_’à3®,nS^èln\oØ7¦Qpd×"¢’ÐÑN`1”t…ÔeÉš¤¤OÁû?·¶½^¬ ':(r•¾h³+Áj™ +mVeŸ sý…{‰é|Wo-bØ©dV³J! µÝi’‚i¸nxª<öj— I‰ë÷‡mtªÆ!z+¤¦Q°N’ 8¶¢hTµ$ÕŒNÁÊŸ?Ä]ΞÿŸëŸë›úÕ?ÆñyxƦ£x~y&³‚nç;ãc¹Y³&€*s@%É&Ä¿µ&â{ø$%:„¯M÷ëç©à¼gû¡ï×Jõõn ª[ Ĩ²øO0……›ûÑM#@ßþúËþ²Ä°˜ŸÛ§ÓÛ µ‹6ˆµ†‘:^¶sÞ²³4¦ŒªìUãÞ‚yÐe¦æõá¯Ù°._eWØ,¸â,ù…ÂZF Ú2tEI°å¥Ý]þ¹Gœzš/çØSüb ¸"0³‚T”—-±º¥~érýòg`7Ÿ ÃéÐÔ¯}A^ÒeìªS`ÃØ&?Ôû×qPêÒû–™ª–*ñK1žª„š_Y{k£Q<—™¬P èC‘»Ö’ù±W)àj¸´nÿÎõ¬„áôñ‘…@Pá»D¨vI^y9 YÕ¡¼1—I:ýücXSBšŒ 1pšª"³ìÛ«E¼¥lÚ«A´éW¶×HjØÞ^Š·çĵ#bxDŠJ [þ‚î¦ÂU(æÔ‡a¢Y À;ËßÀ Ÿ’¬ZÁ¨½×æìDdo›<¾ƒ!öqô0\mdLf•Wb…-GZT¼Ïõà*Pþ”„¡Fsx_¸æQÕTŽñ¡s˜V0¦ jýü_{Xg±]ŒþBá‚kJm©˜ó¬ñÙ_¸Žr¦ñ(`j¡AK_<þ‰€Ñ„P±F>v¼²–7U«$¹ÕŽtÿ“¸îò“Jd%ÐlÛE…W ‘ub- ë^… Å•$U¿âXŸ41_Ð…ÄhB‡[•OT'¬s0 HÅÐwMXÎÅËJötÝÿÆu?Î÷¿ÛžýÊ“š’àƒ‚ ²PÙî¼Î ,@ù}‚2MVqî_ÿr¹ ý8É=œ¾°)FùèPq†¥)Rm~’:·æWü·¸©W÷ìÔ0 Ý4DkºñõwâV÷Cè£Y׼ůÁÏ"•xø¡c$SÚ•…x5EW¸£v~1¤D¯`š€“}ú)­áq¤²]Ã- aUT¶ô§ªpT c-@\CMàܨ_ÛÙ:äï{Ĭ}ôQ7/U8T^ Û\ªSIšà|·F·u ±)3o€êŸ õû‹†Õ}“io^þB“ý+JÏÏÄ]õãÓ»|û÷ÝÝZØZîØ݈0D÷D_²M™aéR…õܦôäJ ùZýYË5Ôö0U;pézà´ „F•IUJä•‚c;|¬?CØò+ÊAÕÒîlU* (â‚8Ü]aå÷?îÁ\þgF=¸ÿ›Æi¢Ó®Gƒ¸EL]æ*"<¨d‹:Ö¯[Üþ}OÒ;{ª(ò¿Áì%ZsàÙª-:pùfµœg RX7U ßÇ£kÒÝ%¡Å»I³Ý­ %s´! ýUîXµN\'¨œßÑ¥þ0ë·³Û½:}.gY1T3¾«#ÀJÁYª{*€ºVÿ0÷÷9êŸø Ó“ðS´ÄÓo‘ 4ò*²j¸Z Jç~aàÓjáUC c†ªâ `%ÆðÕçHEÒ[n3*¥~­Zþ/ʱƒ ˆ¶ ¼ùüHÆW@séø1]æó>}™ØÕwš /†þ×)d ˜Ž¿Hâ 1¬¶\Èj‚j—àUݨ;SËú)U…2­áºŒq ª4Œ*mº ’ÛÄé⸆•>[¢œ`x™À€±z«†dà[•Ë ÒÛI½‹ç0A\ c8ݨ;PÏK‹<(².Þ©Š[ úÛ2÷™~hA9iÁtrí=©C¿?Â{ðÏc°ö]½gq{5¼R»1’œƒ|^ ~ý!/äOލ¢óŒ¿¾VüR/÷a°ðò…ž†á©á-ôOoOñ‰}»«ßÙŽAZOÑŒïÎj&‰,µ ©…ºÁV°“ŸÃøIîaЙ£=ÓËÍ(³û!! A#½‹¡‰%ØŽÄIºÐ„Ö<¿õo† }ôìœôr»ýZÂú@Ht¤!PÁ i…6±Ž°Aª¨¢œh“sµ¾.âÞlçêcçG *ú¸Šâƒã~R²ŒNÆúu‚5:užh^a@„´¨¨û%Ì;Ø'úD\K3´zˆ»ö!u"íšW'¾_³ySu¬_½ÛSjÔi×{Lýò…Ï„™jnyÞM–ÓÔ¯3¨_·w*”>ÉÁÚáQr öãåßN…ìIëwh_Lc›1÷½§ž„~•2sEqG+z†êF]æ¥NŠ/¯”Žp#f\W~JY¸"Bih™c¨ô¼wMP‡|SŸ¾sñ³Þ·ŒÓˆl‚œèÊ*„$í÷*ÎJ2›ûj%: wGt§{íPâ)·*×){5ü#¨Ÿ'Pq¬ÞžÌs|—@C_̨Tÿš›ÿó…{u«NÕ=Ì|Óôì /™šÊ hÙ§jU ›­;mN¿Þ™˜ü{CY‰¯%‹Ú¹(Ó‘Û\GºÉEå*é¥ v—UjÒ Ã¥ŽDU-Ÿû´šÉþ×.×À!Û§^Ý%bš‚žš°¬ éOŒªHTÿV¦ú»’DÑA(ÚhTARµÆ“<ߪ®ðD¢SÖ‘BU;ÞM]ŠòöFgo ÚñG§xE¹Q _P%_°Ž³Öí‹‹uÍšiš¥f¨-%`ˆçâÿ%Ð䯓6¤Ï§`²ú$Q†QjPýÁíª £=V&Qí*RzU7k¶$‹…z jýªÖÊIý]’†Z„E(à ¯Ê)*˜×ž,ÿ4aaCPohKÍÃI!öÓièéP‹÷ó ;ûVAz¶SQIÛÓ¦©gÌ&N¸]Þ£ïƒïÕ5“Òâù¥ªcýDiå–ØcVSê·•”ý]Û”“©Ô©€ïxöÄËUB% ˆO/‚ahµ“:GÐɈ %ܶª¸Z3S½Á²7tÊÑ_–T<)ž¶³“M—Z)OpµZšÿþ*â»P]þ¯è¯¼ ÑídÙ¯%K/K•ý'Í€‰nÍÒR~_!YA³´ë@£oýˆ@lÑ Ò†Ø16t {*÷–+pw•´”¼!°ôéɘ§§‡¼G_5†Ô/5nºöÝUU$…=byZ¤.pÀ™f®u)ìód ZÁ*ÏÒ}Pž?zÙqí'°£ÿT‹È®uØ/ÁµÖT:ñB®¾ gE5­~½Iåú‰ÊtàúƒðJÚ$6€^N¿ÏÃj°ŠW-úQ˜LŸ3a˦_•ùê±Å¤ %Ì~-šSãý¹4ÒkRU©†”¹Ö Ä—ôˆàoÃÛ°šÒÈED(((Öòõ]±þ6eØZ€úx› njùØmO¸JñÀÕ‘JC­tE&°PTN©hÔwª0¿o!ÆúK³GÅ£ÕWMCµ:èEÑOWhÿ GUU‘ÆXE ú÷}=®;j`S5u|¢‰!€)â”B¢V$=e{k(ã«ÿîûY‚èÔ,Œs]4Ñ—Ë_†ÿz:ú5¨ñ‘ú=°”uÖS]¹PlRýG¿$¢¥:¾PIO½‚3nÔs~«úÚÀ™O®j¼ü£Ó§!V^tÐ"¥Hc¡§ªê×ç©ïçÓ?ð`5z"w[Ô¦ŒðÎ{5'°ô?`d]¼¤ý”eJ+°!Sòˆ»ám©c “ù/'„§±…NÇ»#nQðÒï÷*÷{´€Í<ªv™š¦‚ éÿQ­|[Ü)ê@ŽJÓ-Péÿ i|]ŸKCLôPá ‚‘‚ªt¼Â:æ ªBª4]2þNa~&nÚ¦¯ò̦m¢zÏA„ê52W²&»X?uMH½‹‘¤þ)Ÿ}Eçë ­6yÔs ¹<™¾ý®nÿªÊòdº‘Ð0MÜ9JôÌ—g^ØéFB¹Âûkáw»7Òd°ì `¦Æp97• ½ÒÇÈ´§›'|T¡FJµ¿+\E¼'ð8Ì<´ñÃ}l²hM¹)IÝ}1tÖ˜£èWPýär%§ØFHFÕù©âW1*zçyžßÏ9tOàÍxÿýX…¤®ˆô¤:Ì÷ Úí*ã~ü*â}Þ©Þ§»[Ëv¥¤Ÿ”CÃR¢\tS‹;j…z5öeO“4Õ~,'òô^ö(©B>•biR¥l:cº‡ÊÃj3è³ ´A“2•~ÐÓeâÃïBXcµ‹ëÒ„’Þç—½hR%74÷|yÓ‰âxq¾Œ!u 5l„¤ëéEðçúy E¬OfÕ4XùЬI?Ucý\°Æ¨t½öÃêÛŸ*(£æ •Õ1ÞßTVMÙ¿® +fè=&\û‰”KÀÜ.+ÁSŠ~µëX_¯’\—PzJ4juù¸øš¢1ÊMkçxýðH‰4¨V¼V²È¢(Ÿ´žÐÆÿ7¶„a¡,¸ÿ¬û…pFܱJñþ¾«‰P]ÿšˆ×aÃUhš¥eBFS °Ñ•”SºïùÖÅ¿êg—zý¢N´`?cŒã%ÅxðÑ}àè(2&»ÿ…JÒ9 û´´à¦ì6KßÕ/ªxúi(U'h:1©ñmZĪ$ìù¤s›NŒš×øî'_uØ=S—yª9¨Šn@tªÁS.±:«ZϤg¨V&Mœ­½êßfÂûK?BH|ì©låõn•X§ÉSs§ØkîL bj¤}‹–)%Ë Lc”ŽrVõ0<7LÿðøO:$’FëÞž*•iQ†bJe|ÒÄq˜ÿJcJÇ:å­¯¶wåAõY•øVIžîW…Ú«HšÔîVµéçŸÛ öÔ±U›<+jïu þ€\U8«J²Ò„&QÕ*ý¬Ï%ØVQÅÒU*ÄMÐiîНùX!qYGšÿãz‡WÀIÇÂ$¡†zÆâÊâPõƯÂueñ'R¥b{s²dóúïõ"§n ˆQ¼¬’k»((è-ÙŠ¤C¥nçÅ)piœêÒ¯Æ# ð ÖÉV_¾Q¬Xr!†× vµiú£ï¡Z;ôô* k àZ›Úï‡à€¢Rí%õ÷ ³`õS‡ò²1¿&_tpŸ·ßA܇ç_Ýøüûù>>›—÷ÇørGϤå«?ù"Ÿ)›PZµ½ÿñéõèýu+U¨ŠIêﳺøS^ýìSÔÎ;UTŸttܱXüC¬:O¯oÔÏ[·øýý2ã§?ÁÚ€øq”´ä€..*oyþïcæÔÒ$²°ÀÛ<ç•ÜUKÅé´ðZ¯ÊD9Tq*‹PU`’¸ ŽPz«ã°Ê« éúZåæÍZ$ÄÉ}ŸÝ¾í2–†^ª4M»¶Aäñ² ÙTîÏÔÞïíWºpV]ÇGRœ[5BQ„)`õw_¬KÎj^ÿ<™ÒÙ’R¯²_ܧ” \Ý&‡zà0Ïk@Myuióúšê,»|¥’”ú‚õóëmü[ÇÏð÷ß÷¿_ÿ‡AÇ?ãçEÇŸ^Fñ÷Ê«v{7Uñ¤¦r §FP»bQÁŽP›êF÷vn֯Ϭ÷R—÷Ê‚?}KˆµíY©c i »Æ\ú1ÀjØ ¸ëøÊ_÷ó| •Tþt¼=ÝzÏÎïêO ®>ñÉù©jJLC@ÇTÊ•éŠpü•‡Yý\,ùɱjH›Ü î¡GÀ•hT¡š%H„.]Uœ è15ißS­Ë"Y‰€Ñü²2e­ u•oÕS¤õÕ䓨ê À)¨gCðÛ¾øeH¥æ å @O×~£AÓ¨ì’ &—£´ˆ{eµ°r9Å“ìæÙob|£ô<…‡®SÑö ”nžòh ñMºnÿªëÇÙÙMÜdÞœ£yÄœí¯Œ»¹%6ñ*“¨+ ÉëÏÎlRν§(¿yÂ[ÅQ-=_”K—È£*(‚s¤…\R®Åþ\´gsEb\þØËú·õ&ÒêMÕž×'pª–LZ’ž ·Ã—~úyëCôá*âù¿&t|DÅisòÞóIGI‚d|׃T"eÉ ŠM\Ò§4Èwbù…?Ô±œSGù ?Í£ª†Œ—~Ǻ§T¡;}<ªNT@&ÝÙÂÃoáÐ×K>D¢ÆT¿ø:Ä­ÊÝT!ƒj/•|«8aRH¶u‰JçÜm:¬µÝ.‡&4‹´?O“ï]š‚ÿÊÃ/r u 5‰9ÿJ§ŸLjWÒž«Ê5ù¾Ì®<:‘©ãŸ&½T±2L[”»; qA|IeôIã߆)~(Ëå\QN5ÿÎw”íÜuÒ­…Ç[»=øt_fÒP˜T&Õá*N¼Qtu¾¥ö¹dÏ·ö«[5U§-¦åÅÛ4F|œ›ääúî§ùÞ˜³MßqƒÞ]iR|ÄiC}oj6ÃjYtJ•^þÏSœôË[úõ=ñ¨¶›`Ï®«c¥ëizÈ*Ùªä}DÀl¿BºÀ£Ý³Š÷@Ñ?íWM$E…1¯<íSŠӯܭŽóó†.4ŸZÑŽÜþËN"ÓV‹aÄé8Â곬g V<ùæušê—vÀùhœ>õarV1€¿+¬Ô‘à›°>ÒáÂg}ü÷±6kº—C¾»ÍôteatK=ÀùMÁtÊü¾LÀvªû…¿U#íV.µHÌ *ÖF‰w5+бÏÐxgý–þU$Ïw¸-/¹¾¢Tú²ò¬Ëž_¹v®–À_U8×^^K˜/ØÃÅOX÷&ŸþЮçDe‡TËöõÇ—+yWRÎë!ÊĨ8¾Ç‚:û9Š)9µ#—œŠ)TEùÿ‚¦â‹”*‰]1*%TîÓ ð˜ y ¶šRÍ<Ÿ Bô´….ìêŠõGéOŠ[ç|®Æ“¹´?” ,†ç.P‹vZ™D*’Óz“ÏМpšñ¯Ñ¾³ 厰^cÄÊGþ±Õ|V šè“Uš¼–LþXñÓæ¯÷¤CsrŒ^gж_Iâ4åù3 Ï:úI@Ï›Øk²¾=ÿ9ñ‡‹ÇÐîÇ˾E3-újˆ¢P³'ÝSÃ}}ŽÎuIZ„_6Ó>¹M÷)“8MK8J)áe"qJû)1:"X;<ò1¤wà´ci ®J’:˜¿àæhÔ+ú[0‹Çê²Q+%…*…’TÏþ96«hò¯7Ó²¸ºè DÇOc¦žÏO@’ØtËù¿²«RI³¸ j>évÐíC­ÌÒÎm5ñ]M¥‹GK6Õ7kW6Mšº§0ã±2˜ù2Þ_¦ðºÆUnS×^Ìa6-î*cÓd¿*Д²òxõS eêJ5PIESw)[ˆx’öOaS·]|è©Öp¦ ë GygñëüïͼœÅ¢²+,ê&¥s”4/A,ßÞëª;Ó“Ö"XQ9X©ECÅ›ƒèÓKùúMµ7ˆŠíY8+&Ï ¬cý¼é×èÀ¢º_¦SÃIQSëe`o$ñkæÿ$Ç u¬ß”a‹OK¿ÖßÛ—ï×½±l;UŒD°¶·iÄóàqèú_cƼƒSŸÕÐ%¸ˆ VÃ3WÙö½dûŽÀ6³pA‡Þ6õXÔ,›hëáPWë§vÝŽÏ]¬ZpÁ1 –’ÂUœb<|²ú[¤õñ¹{ÓSÔâ5Ðj‚Zú‡uÎ`n¡6\²{³^ø(˜Vç±Tu°néTMj+C?̺+ãQ®¥)(\k×Y6M{íš,«Ñœ2榕¡7ÄYrKúzéÝWåv-^Ú4ì7Bm0«]xËmÅ¡¦o$)l ž­å¹ÖT `âùjÚËNm„Z'îŒû9‚jMJ`´@]ÁÊwsµáØ |bH}t·R:e…‡<8‰¹2G¢µ ©–r9ZÜL‚ÊîL ÷.ÿÖ·ªKȰêâ©êÒ¬¿:Ôïï[v§øV{; ^>¶Ã÷Bq ¤Jâýƒæ`—{s#ÈÆ‰ýQk-ÇÁæoC?î’qu¬X÷ùuC#OO'ßûvC7¼^;#B–]QPÄ¥›Twë˜o:ü•Púá(´½¾ƒ·Òû jám{:löÖ`ÜÛV“­þ¹Uw‡„0¬jcV‘åwÎ÷]¶§!íO‡„“Wض5v Õܪûg¬]?ÉíáÝËD‹Åª¶Œ·B.jlA~Î ¿SRû>¾'!#—jD5¾¦Ÿ¬º®ÁÉí˰£ÅÈ ò›KM ,™@¢Ž­*<{ºö-{ù\mæÅ±õ·Û;V©&¤ƒrvèhÃæû:0ró¶õ¶®º¿3&d±i1Ð 3C^“ªÝÈ©?0/ 5\¯î©®3¨Ž³…ÂDl™`~îÂÄŸ·¾·ÖŒÏÿ5<Ïq`YŒ?saö–oÕ÷ÐrŸº|©žš“N׬¾7É®°mêwmZgáí q²Z°ÅÒ™Šg®Þ€ò¤][ÐðVa_ŒóœÕÄeâ8N®§ˆÕ@6­ Äê˜NîíÏÃÓß8¯¼ çh‹ª&‘qÁm¬bÅýÿ4¿T¾EÒ¨žÝ‘_\öjÁjJ{/U gDj/ LZ†Eåð‡©–R%„›µ8X2¤Ü`+ô—|H"|iÏÎçºNÈFÑh1kÒìWUP&³vÎZ*eÇ›—³»ªMÑh­jƬ fÓ¢`-Ë ”P?K¨_·_iáãóo3i´_dzûyÌÂTbçfݵgvU<ÿNKÙ[ݬ_ 0V¿é“2ÄIñègÌüR˜™vL—9ݱ2L­˜GÆM›áíãííñÀpqÜÙ&ao3L.ÖÄÈ]‹[ìjÜ2¤¼m<Ýðª†ÅÓ¨8Ч´n1kÃ{°–8\¶-€£6£þ¯øßR²½ÿëÍ:¡%)iJ9U%eNüsAžãÞa޹¸ vIÝÃ5ãÂ/¤vš‡rÔóš{Z—óV0ÙEãMf­«c˜´iÇ,{?+Å´h]ÊM3‘%ÇÞL!È‚à›ë±ÊŸ\ ð›„íG»ä ïqõ±_æ Š]M¶‰>^ÊqYðœbüGTiÕÒ“»A¹1c‚?óñ_›í¡úþ¸ÿ¾ßŸåÝßï÷§û.ÊÌp‘áX4L¡%³Kuã£èV .?ì°E0þ®ãMðxŒ¿ï3]`ß’Úî`ÜÓ``§2̳ƒÒYÞ| t²cù¹õæ/ X§sôÉ]ß×÷@Cþ5úyÛ›ƒÖqŽZ-3ìÑHNIíÈ·GQ‚»ãðþþÏ æ¼&fÙ÷Ⱥx±±&¶kV9$ Ÿóú§)›õ/ÑÿÒ˜?>¢s;¬uNÊ`Î$îԱСç8C•Yövv;Mhß|_R2j%Ø]£†Ù¦sô¢ q|â«Ï-ª±ú–þͲo^[%§ã9u»ë‚»ÿºëy Wßo,º?‡Y+iè÷tG¹bšI†9éè5Ò][ÆÇ)È÷ÁD/ðé1š'ëÆ÷0’´yƒ4/á<f"«8}‰óyAù Á¯œ^C ýç+þ&Mºøƒ ûÏÑã·êïOf 2£zê_G£ÆÇýþúxÂhöûÌeÈÃLþCT0)±¨pðwÔœ,èׯLIž0¥xIbÑùÁ±•çW¥*óeÊq Ø$¬†|i¨"ü“òs»ËæGò750¿.I_A(õ¾JB:©©S‚_¹3’Û™§•삌Ÿ§¸¹žÔ{ß9Š€âÿœ"]Ì÷ŒÚã}Ò8 4Ç(u¶u©¿>NDÆ÷æÆðׯè =ɾ ÎNniGaxÆY*IcéPÜ?´ãgq>µ¾—÷åöàhlºã÷ûø’é^^Îì¸ÇŸ·uíïìøLŸîǯ-ÄÂŒbx[0ËÞGO,Bî‹fT]yM;Š@ñréU˜Ñ.5½y;·4ŠaôƒWÌËïÇãqß¼?ºÎ{ß ÃûÙ™z'Þêz²7Ï0?"qPýöúÙJþMHoõ¢†®LŠ·•œ‹[zRx‘Ññ•è›êø‚Ru`Ì­±œìû8Èáþ:¾Œ©þL¥ÒSC–ñ˜[Rß–fãZoÚ¢ |Ï“*z:PüÎaÃgzTÄýËÅgè_Ñϳ¯ý¿^…U¿_ůÆ-$Å#²‡ ºb;k™1|ÿ™OÄþ¡ø¾=¿ý2ê­0(Ü \0¦s¥Ìðv7âÉì>·«'×¾«‰ #½xE“`¿ÏŽÅ´œóÿÓcG\'O¯z^žB|îoz=ˆ ö÷T¹‡ÍO†6‰GÚr2ô˜u„5*¯4BðA¿™{!šN†(ü—M¶ë¢$•c±kØ5ØtQOç_Ü"¹q]ãºjÓî?ÃöÈoý“¶è6Â"–k¢>Nî_ñ`0€SeãÔXe­Ü²A©ƒ}Of ro{\ÚdÅ)þÇ‘è°êÿµ«Ævà‹•5!Ë•d°p$4XÎ̳öü¨û”§8]éï”§È6{{ûÝzÀîQ/Àm˜ºÆéKœÏ åJOýYrdÑÅ“ –gºý†~ì&XñjË‚MýÚ³&ІâB°|17y’Š‘âÿ~7†·Ñ¼™ô r_½!'6$óí.æi0O~ktlO³ªMñr„ÅH!%J–óð5?!þ"á¯øìºÔïç\J;ÎpUØÃøn ³¾Nídéólï"þñ°ÚNŸ»œ¾;ÛMáh7¡ºL]ˆ¤DñOVr¢ƒWìw\4!âý–7íÒ²’²¸Üp¯ÅKrÞ–s0r煮}”U?×tÁ ƒº«„xƒËlŒF~3¾4nç÷J`!?ñ…{rvÆß÷œ×jã…³Çåü¿4:©PóS9Á¥O²rìó'¿gT:¼ïÒ®çár½KDß9€E}æÌÄ(UúU&6ŸÜ1)£„†ÃðBOƦ×lo_J_K;©ØdN¸øHÅveG29ÈõN—òŸ¯™ªïãfôI!íÊA:98u¿?­øÊ}æM4nFß"£Å®Ô¥ú÷®38Ÿ©I°y–ìÉü‘yÉßÞžž¢ëusjW¸®ÒÍ/Ò¹>ºÃ¤„¾6äåçîÁI$¬“Oï¿t¿~Ÿ¢”;ö¾Æ;>žQ‰!8•KCßàÍÉA´2±Û^ò°ÖƒÏ»EdO[ñ¸i+ÞÆ|W˜wJ’ˆÝá<á &QÆýõå„]?<¢»°3d~W¾m•_Z–_IK/FnÚ¢,¼lŽ2 Ÿ7õòò’ ï(À‰Güz\†—û£fç°þÿUW…B>‰Bio-SamTools-1.43/bin000755001751001751 012657431424 14452 5ustar00lsteinlstein000000000000Bio-SamTools-1.43/bin/bamToGBrowse.pl000555001751001751 404612657431424 17506 0ustar00lsteinlstein000000000000#!/usr/bin/perl use strict; use Bio::DB::Sam; use Bio::DB::Sam::SamToGBrowse; my $has_bigwig = eval {require Bio::DB::BigFile;1}; @ARGV >= 1 or die < [] Given the path to a directory and the fasta file for the reference sequence, do the following: 1. Find all SAM files in the indicated directory and convert them into BAM. These must end in one of the extensions ".sam" or ".sam.gz". A series of .bam files will be created. This step will be skipped if SAM files are absent or the corresponding BAM files are already present. 2. Sort the newly created BAM files, creating a series of files named _sorted.bam. 3. Index BAM files that need indexing. This step will look for files named _sorted.bam 4. Create a set of BigWig files representing the coverage graph. These will be named .bw. 5. Create a skeletal GBrowse config file named "gbrowse.conf" that serves as a starting point for viewing these files. Previous versions of this file will be appended to. You can prepopulate the directory with sorted and indexed BAM files, in which case the script will not attempt to resort or reindex them. Unless the Fasta file is explicitly provided, this script will look in the designated directory for ONE .fa file to use. Note that you will need temporary space in the directory equivalent to the size of the largest SAM file being processed. This script takes a long time to run and uses significant amounts of RAM when generating the coverage graphs. To improve both performance and memory consumption, you can install the following C binaries: bedGraphToBigWig -- download from http://hgdownload.cse.ucsc.edu/admin/exe or build from source downloadable from http;//hgdownload.cse.ucsc.edu/admin/jksrc.zip Place these executables into your path, e.g. /usr/local/bin or ~/bin. USAGE ; my($dir,$fasta) = @ARGV; my $converter = Bio::DB::Sam::SamToGBrowse->new($dir,$fasta,'verbose'); $converter->run(); exit 0; Bio-SamTools-1.43/bin/chrom_sizes.pl000555001751001751 51212657431424 17452 0ustar00lsteinlstein000000000000#!/usr/bin/perl use strict; use Bio::DB::Sam; my $bamfile = shift or die "Usage: $0 \nOutput a chrom_sizes file.\n"; my $bam = Bio::DB::Sam->new(-bam=>$bamfile) or die "Couldn't open $bamfile"; my @seqids = $bam->seq_ids; for my $s (sort @seqids) { my $len = $bam->length($s); print join("\t",$s,$len),"\n"; } Bio-SamTools-1.43/bin/genomeCoverageBed.pl000555001751001751 43212657431424 20467 0ustar00lsteinlstein000000000000#!/usr/bin/perl use strict; use FindBin '$Bin'; use lib "$Bin/../blib/lib","$Bin/../blib/arch"; use Bio::DB::Sam; my $bamfile = shift or die "Usage $0 \n"; my $bam = Bio::DB::Sam->new(-bam=>$bamfile) or die "Couldn't open $bamfile: $!"; $bam->coverage2BedGraph(); Bio-SamTools-1.43/lib000755001751001751 012657431424 14450 5ustar00lsteinlstein000000000000Bio-SamTools-1.43/lib/Bio000755001751001751 012657431424 15161 5ustar00lsteinlstein000000000000Bio-SamTools-1.43/lib/Bio/DB000755001751001751 012657431424 15446 5ustar00lsteinlstein000000000000Bio-SamTools-1.43/lib/Bio/DB/Sam.xs000444001751001751 5333212657431424 16725 0ustar00lsteinlstein000000000000#ifdef PERL_CAPI #define WIN32IO_IS_STDIO #endif #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #ifdef FCGI #include #else #ifdef USE_SFIO #include #else #include #endif #include #endif #ifndef Newx # define Newx(v,n,t) New(0,v,n,t) #endif #ifndef Newxz # define Newxz(v,n,t) Newz(0,v,n,t) #endif #include #include #include "bam.h" #include "khash.h" #include "faidx.h" /* stolen from bam_aux.c */ #define MAX_REGION 1<<29 typedef tamFile Bio__DB__Tam; typedef faidx_t* Bio__DB__Sam__Fai; typedef bamFile Bio__DB__Bam; typedef bam_header_t* Bio__DB__Bam__Header; typedef bam1_t* Bio__DB__Bam__Alignment; typedef bam_index_t* Bio__DB__Bam__Index; typedef bam_pileup1_t* Bio__DB__Bam__Pileup; typedef struct { SV* callback; SV* data; } fetch_callback_data; typedef fetch_callback_data *fetch_callback_dataptr; typedef struct { int start; int end; double width; int reads; int* bin; } coverage_graph; typedef coverage_graph *coverage_graph_ptr; static int MaxPileupCnt=8000; void XS_pack_charPtrPtr( SV * arg, char ** array, int count) { int i; AV * avref; avref = (AV*)sv_2mortal((SV*)newAV()); for (i=0; icallback; callbackdata = fcp->data; /* turn the bam1_t into an appropriate object */ /* need to dup it here so that the C layer doesn't reuse the address under Perl */ b2 = bam_dup1(b); alignment_obj = sv_setref_pv(newSV(sizeof(bam1_t)),"Bio::DB::Bam::Alignment",(void*) b2); /* set up subroutine stack for the call */ ENTER; SAVETMPS; PUSHMARK(SP); XPUSHs(sv_2mortal(alignment_obj)); XPUSHs(callbackdata); PUTBACK; /* execute the call */ count = call_sv(callback,G_SCALAR|G_DISCARD); FREETMPS; LEAVE; return 1; } int invoke_pileup_callback_fun(uint32_t tid, uint32_t pos, int n, const bam_pileup1_t *pl, void *data) { dSP; int count,i; fetch_callback_dataptr fcp; SV* callback; SV* callbackdata; SV* pileup_obj; SV* p; SV** pileups; AV* pileup; fcp = (fetch_callback_dataptr) data; callback = fcp->callback; callbackdata = fcp->data; /* turn the bam_pileup1_t into the appropriate object */ /* this causes a compiler warning -- ignore it */ pileup = newAV(); av_extend(pileup,n); for (i=0;ireads += n; valid = 0; for (i=0;i= cgp->start && pos <= cgp->end) { bin = (pos-cgp->start)/cgp->width; cgp->bin[bin] += valid; } return 0; } MODULE = Bio::DB::Sam PACKAGE = Bio::DB::Tam PREFIX=tam_ Bio::DB::Tam tam_open(packname="Bio::DB::Tam", filename) char * packname char * filename PROTOTYPE: $$ CODE: RETVAL = sam_open(filename); OUTPUT: RETVAL void tam_DESTROY(tam) Bio::DB::Tam tam PROTOTYPE: $ CODE: sam_close(tam); Bio::DB::Bam::Header tam_header_read2(packname="Bio::DB::Tam", filename) char * packname char * filename PROTOTYPE: $$ CODE: RETVAL = sam_header_read2(filename); OUTPUT: RETVAL Bio::DB::Bam::Header tam_header_read(tam) Bio::DB::Tam tam PROTOTYPE: $$ CODE: RETVAL = sam_header_read(tam); OUTPUT: RETVAL int tam_read1(tam,header,alignment) Bio::DB::Tam tam Bio::DB::Bam::Header header Bio::DB::Bam::Alignment alignment CODE: RETVAL = sam_read1(tam,header,alignment); OUTPUT: RETVAL MODULE = Bio::DB::Sam PACKAGE = Bio::DB::Sam::Fai PREFIX=fai_ Bio::DB::Sam::Fai fai_load(packname="Bio::DB::Sam::Fai", filename) char * packname char * filename PROTOTYPE: $$ CODE: RETVAL = fai_load(filename); OUTPUT: RETVAL void fai_destroy(fai) Bio::DB::Sam::Fai fai PROTOTYPE: $ CODE: fai_destroy(fai); SV* fai_fetch(fai,reg) Bio::DB::Sam::Fai fai const char *reg PROTOTYPE: $$$ PREINIT: char *seq; int len; CODE: seq = fai_fetch(fai,reg,&len); if (seq == NULL) XSRETURN_EMPTY; RETVAL = newSVpv(seq,len); free((void*)seq); OUTPUT: RETVAL MODULE = Bio::DB::Sam PACKAGE = Bio::DB::Bam PREFIX=bam_ int max_pileup_cnt(packname,...) CODE: if (items > 1) MaxPileupCnt = SvIV(ST(1)); RETVAL = MaxPileupCnt; OUTPUT: RETVAL Bio::DB::Bam bam_open(packname, filename, mode="r") char * packname char * filename char * mode PROTOTYPE: $$$ CODE: RETVAL = bam_open(filename,mode); OUTPUT: RETVAL void bam_DESTROY(bam) Bio::DB::Bam bam PROTOTYPE: $ CODE: bam_close(bam); int bam_index_build(packname, filename) char * packname const char * filename CODE: RETVAL = bam_index_build(filename); OUTPUT: RETVAL void bam_sort_core(packname, is_by_qname=0, filename, prefix, max_mem=500000000) char * packname int is_by_qname char * filename char * prefix int max_mem PROTOTYPE: $$$$$ CODE: bam_sort_core(is_by_qname,filename,prefix,max_mem); Bio::DB::Bam::Index bam_index_open(packname="Bio::DB::Bam", filename) char * packname char * filename PROTOTYPE: $$ CODE: RETVAL = bam_index_load(filename); OUTPUT: RETVAL Bio::DB::Bam::Header bam_header(bam) Bio::DB::Bam bam PROTOTYPE: $ PREINIT: bam_header_t *bh; int64_t result; CODE: result = bgzf_seek(bam,0,0); bh = bam_header_read(bam); RETVAL = bh; OUTPUT: RETVAL int bam_header_write(bam,header) Bio::DB::Bam bam Bio::DB::Bam::Header header PROTOTYPE: $$ CODE: bgzf_seek(bam,0,0); RETVAL= bam_header_write(bam,header); OUTPUT: RETVAL char* bam_tell(bam) Bio::DB::Bam bam PROTOTYPE: $ CODE: int64_t t = bam_tell(bam); char string[128]; sprintf(string,"%llu",(long long unsigned int) t); RETVAL = string; OUTPUT: RETVAL void bam_seek(bam,pos,dir) Bio::DB::Bam bam int pos int dir PROTOTYPE: $$$ CODE: bam_seek(bam,pos,dir); Bio::DB::Bam::Alignment bam_read1(bam) Bio::DB::Bam bam PROTOTYPE: $ PREINIT: bam1_t *b; CODE: b = bam_init1(); if (bam_read1(bam,b) >= 0) { RETVAL = b; } else XSRETURN_EMPTY; OUTPUT: RETVAL int bam_write1(bam,align) Bio::DB::Bam bam Bio::DB::Bam::Alignment align PROTOTYPE: $$ CODE: RETVAL = bam_write1(bam,align); OUTPUT: RETVAL MODULE = Bio::DB::Sam PACKAGE = Bio::DB::Bam::Alignment PREFIX=bama_ Bio::DB::Bam::Alignment bama_new(package="Bio::DB::Bam::Alignment") char * package PROTOTYPE: $ CODE: RETVAL = bam_init1(); OUTPUT: RETVAL void bama_DESTROY(b) Bio::DB::Bam::Alignment b PROTOTYPE: $ CODE: bam_destroy1(b); int bama_tid(b,...) Bio::DB::Bam::Alignment b PROTOTYPE: $;$ CODE: if (items > 1) b->core.tid = SvIV(ST(1)); RETVAL=b->core.tid; OUTPUT: RETVAL int bama_pos(b,...) Bio::DB::Bam::Alignment b PROTOTYPE: $;$ CODE: if (items > 1) b->core.pos = SvIV(ST(1)); RETVAL=b->core.pos; OUTPUT: RETVAL int bama_calend(b) Bio::DB::Bam::Alignment b PROTOTYPE: $ CODE: RETVAL=bam_calend(&b->core,bam1_cigar(b)); OUTPUT: RETVAL int bama_cigar2qlen(b) Bio::DB::Bam::Alignment b PROTOTYPE: $ CODE: RETVAL=bam_cigar2qlen(&b->core,bam1_cigar(b)); OUTPUT: RETVAL int bama_qual(b,...) Bio::DB::Bam::Alignment b PROTOTYPE: $;$ CODE: if (items > 1) b->core.qual = SvIV(ST(1)); RETVAL=b->core.qual; OUTPUT: RETVAL int bama_flag(b,...) Bio::DB::Bam::Alignment b PROTOTYPE: $;$ CODE: if (items > 1) b->core.flag = SvIV(ST(1)); RETVAL=b->core.flag; OUTPUT: RETVAL int bama_n_cigar(b,...) Bio::DB::Bam::Alignment b PROTOTYPE: $;$ CODE: if (items > 1) b->core.n_cigar = SvIV(ST(1)); RETVAL=b->core.n_cigar; OUTPUT: RETVAL int bama_l_qseq(b,...) Bio::DB::Bam::Alignment b PROTOTYPE: $;$ CODE: if (items > 1) b->core.l_qseq = SvIV(ST(1)); RETVAL=b->core.l_qseq; OUTPUT: RETVAL SV* bama_qseq(b) Bio::DB::Bam::Alignment b PROTOTYPE: $ PREINIT: char* seq; int i; CODE: seq = Newxz(seq,b->core.l_qseq+1,char); for (i=0;icore.l_qseq;i++) { seq[i]=bam_nt16_rev_table[bam1_seqi(bam1_seq(b),i)]; } RETVAL = newSVpv(seq,b->core.l_qseq); Safefree(seq); OUTPUT: RETVAL SV* bama__qscore(b) Bio::DB::Bam::Alignment b PROTOTYPE: $ CODE: RETVAL = newSVpv(bam1_qual(b),b->core.l_qseq); OUTPUT: RETVAL int bama_mtid(b,...) Bio::DB::Bam::Alignment b PROTOTYPE: $;$ CODE: if (items > 1) b->core.mtid = SvIV(ST(1)); RETVAL=b->core.mtid; OUTPUT: RETVAL int bama_mpos(b,...) Bio::DB::Bam::Alignment b PROTOTYPE: $;$ CODE: if (items > 1) b->core.mpos = SvIV(ST(1)); RETVAL=b->core.mpos; OUTPUT: RETVAL int bama_isize(b,...) Bio::DB::Bam::Alignment b PROTOTYPE: $;$ CODE: if (items > 1) b->core.isize = SvIV(ST(1)); RETVAL=b->core.isize; OUTPUT: RETVAL int bama_l_aux(b,...) Bio::DB::Bam::Alignment b PROTOTYPE: $;$ CODE: if (items > 1) b->l_aux = SvIV(ST(1)); RETVAL=b->l_aux; OUTPUT: RETVAL char* bama_aux(b) Bio::DB::Bam::Alignment b PREINIT: uint8_t *s; uint8_t type, key[2]; char str[8192]; CODE: s = bam1_aux(b); str[0] = '\0'; int left = sizeof(str) - strlen(str); while (left > 0 && (s < b->data + b->data_len)) { char* d = str+strlen(str); key[0] = s[0]; key[1] = s[1]; left -= snprintf(d, left, "%c%c:", key[0], key[1]); d += 3; s += 2; type = *s++; if (left <= 0) continue; if (type == 'A') { left -= snprintf(d, left, "A:%c", *s); s++; } else if (type == 'C') { left -= snprintf(d, left, "i:%u", *s); s++; } else if (type == 'c') { left -= snprintf(d, left, "i:%d", *s); s++; } else if (type == 'S') { left -= snprintf(d, left, "i:%u", *(uint16_t*)s);s += 2; } else if (type == 's') { left -= snprintf(d, left, "i:%d", *(int16_t*)s); s += 2; } else if (type == 'I') { left -= snprintf(d, left, "i:%u", *(uint32_t*)s);s += 4; } else if (type == 'i') { left -= snprintf(d, left, "i:%d", *(int32_t*)s); s += 4; } else if (type == 'f') { left -= snprintf(d, left, "f:%g", *(float*)s); s += 4; } else if (type == 'd') { left -= snprintf(d, left, "d:%lg", *(double*)s); s += 8; } else if (type == 'Z' || type == 'H') { left -= snprintf(d, left, "%c:", type); strncat(d,s,left); while (*s++) {} left = sizeof(str) - strlen(str); } if (left <= 0) continue; strncat(d,"\t",left); left--; } str[strlen(str)-1] = '\0'; RETVAL = str; OUTPUT: RETVAL SV* bama_aux_get(b,tag) Bio::DB::Bam::Alignment b char* tag PROTOTYPE: $$ PREINIT: int type; uint8_t *s; CODE: s = bam_aux_get_core(b,tag); if (s==0) XSRETURN_EMPTY; type = *s++; switch (type) { case 'c': RETVAL = newSViv((int32_t)*(int8_t*)s); break; case 'C': RETVAL = newSViv((int32_t)*(uint8_t*)s); break; case 's': RETVAL = newSViv((int32_t)*(int16_t*)s); break; case 'S': RETVAL = newSViv((int32_t)*(uint16_t*)s); break; case 'i': RETVAL = newSViv(*(int32_t*)s); break; case 'I': RETVAL = newSViv((int32_t)*(uint32_t*)s); break; case 'f': RETVAL = newSVnv(*(float*)s); break; case 'Z': case 'H': RETVAL = newSVpv((char*)s,0); break; case 'A': RETVAL = newSVpv((char*)s,1); break; default: XSRETURN_EMPTY; } OUTPUT: RETVAL void bama_aux_keys(b) Bio::DB::Bam::Alignment b PROTOTYPE: $ PREINIT: uint8_t *s; uint8_t type; PPCODE: { s = bam1_aux(b); /* s is a khash macro */ while (s < b->data + b->data_len) { XPUSHs(sv_2mortal(newSVpv(s,2))); s += 2; type = *s++; if (type == 'A') { ++s; } else if (type == 'C') { ++s; } else if (type == 'c') { ++s; } else if (type == 'S') { s += 2; } else if (type == 's') { s += 2; } else if (type == 'I') { s += 4; } else if (type == 'i') { s += 4; } else if (type == 'f') { s += 4; } else if (type == 'Z' || type == 'H') { while (*s) ++(s); ++(s); } } } SV* bama_data(b,...) Bio::DB::Bam::Alignment b PROTOTYPE: $;$ PREINIT: STRLEN len; CODE: if (items > 1) { b->data = SvPV(ST(1),len); b->data_len = len; } RETVAL=newSVpv(b->data,b->data_len); OUTPUT: RETVAL int bama_data_len(b,...) Bio::DB::Bam::Alignment b PROTOTYPE: $;$ CODE: if (items > 1) b->data_len = SvIV(ST(1)); RETVAL=b->data_len; OUTPUT: RETVAL int bama_m_data(b,...) Bio::DB::Bam::Alignment b PROTOTYPE: $;$ CODE: if (items > 1) { b->m_data = SvIV(ST(1)); } RETVAL=b->m_data; OUTPUT: RETVAL SV* bama_qname(b) Bio::DB::Bam::Alignment b PROTOTYPE: $ CODE: RETVAL=newSVpv(bam1_qname(b),0); OUTPUT: RETVAL int bama_paired(b) Bio::DB::Bam::Alignment b PROTOTYPE: $ CODE: RETVAL=(b->core.flag&BAM_FPAIRED) != 0; OUTPUT: RETVAL int bama_proper_pair(b) Bio::DB::Bam::Alignment b PROTOTYPE: $ CODE: RETVAL=(b->core.flag&BAM_FPROPER_PAIR) != 0; OUTPUT: RETVAL int bama_unmapped(b) Bio::DB::Bam::Alignment b PROTOTYPE: $ CODE: RETVAL=(b->core.flag&BAM_FUNMAP) != 0; OUTPUT: RETVAL int bama_munmapped(b) Bio::DB::Bam::Alignment b PROTOTYPE: $ CODE: RETVAL=(b->core.flag&BAM_FMUNMAP) != 0; OUTPUT: RETVAL int bama_reversed(b) Bio::DB::Bam::Alignment b PROTOTYPE: $ CODE: RETVAL=bam1_strand(b); OUTPUT: RETVAL int bama_mreversed(b) Bio::DB::Bam::Alignment b PROTOTYPE: $ CODE: RETVAL=bam1_mstrand(b); OUTPUT: RETVAL SV* bama_cigar(b) Bio::DB::Bam::Alignment b PROTOTYPE: $ PREINIT: int i; uint32_t *c; AV *avref; CODE: avref = (AV*) sv_2mortal((SV*)newAV()); c = bam1_cigar(b); for (i=0;icore.n_cigar;i++) av_push(avref, newSViv(c[i])); RETVAL = (SV*) newRV((SV*)avref); OUTPUT: RETVAL MODULE = Bio::DB::Sam PACKAGE = Bio::DB::Bam::Header PREFIX=bam_ Bio::DB::Bam::Header bam_new(packname=Bio::DB::Bam::Header) PROTOTYPE: $ CODE: RETVAL = bam_header_init(); OUTPUT: RETVAL int bam_n_targets(bamh) Bio::DB::Bam::Header bamh PROTOTYPE: $ CODE: RETVAL = bamh->n_targets; OUTPUT: RETVAL SV* bam_target_name(bamh) Bio::DB::Bam::Header bamh PROTOTYPE: $ PREINIT: int i; AV * avref; CODE: avref = (AV*) sv_2mortal((SV*)newAV()); for (i=0;in_targets;i++) av_push(avref, newSVpv(bamh->target_name[i],0)); RETVAL = (SV*) newRV((SV*)avref); OUTPUT: RETVAL SV* bam_target_len(bamh) Bio::DB::Bam::Header bamh PROTOTYPE: $ PREINIT: int i; AV * avref; CODE: avref = (AV*) sv_2mortal((SV*)newAV()); for (i=0;in_targets;i++) av_push(avref, newSViv(bamh->target_len[i])); RETVAL = (SV*) newRV((SV*)avref); OUTPUT: RETVAL SV* bam_text(bamh, ...) Bio::DB::Bam::Header bamh PREINIT: char *newtext; STRLEN n; CODE: /* in case text is not null terminated, we copy it */ RETVAL = newSVpv(bamh->text,bamh->l_text); if (items > 1) { newtext = (char*) SvPV(ST(1),n); strcpy(bamh->text,newtext); bamh->l_text = n; } OUTPUT: RETVAL void bam_parse_region(bamh,region) Bio::DB::Bam::Header bamh char* region PROTOTYPE: $ PREINIT: int seqid,start,end; PPCODE: { bam_parse_region(bamh, region, &seqid, &start, &end); if (seqid < 0) XSRETURN_EMPTY; else { EXTEND(sp,3); PUSHs(sv_2mortal(newSViv(seqid))); PUSHs(sv_2mortal(newSViv(start))); PUSHs(sv_2mortal(newSViv(end))); } } void bam_view1(bamh,alignment) Bio::DB::Bam::Header bamh Bio::DB::Bam::Alignment alignment PROTOTYPE: $$ CODE: bam_view1(bamh,alignment); void bam_DESTROY(bamh) Bio::DB::Bam::Header bamh PROTOTYPE: $ CODE: bam_header_destroy(bamh); MODULE = Bio::DB::Sam PACKAGE = Bio::DB::Bam::Index PREFIX=bami_ int bami_fetch(bai,bfp,ref,start,end,callback,callbackdata=&PL_sv_undef) Bio::DB::Bam::Index bai Bio::DB::Bam bfp int ref int start int end CV* callback SV* callbackdata PREINIT: fetch_callback_data fcd; CODE: { fcd.callback = (SV*) callback; fcd.data = callbackdata; RETVAL = bam_fetch(bfp,bai,ref,start,end,&fcd,bam_fetch_fun); } OUTPUT: RETVAL void bami_lpileup(bai,bfp,ref,start,end,callback,callbackdata=&PL_sv_undef) Bio::DB::Bam::Index bai Bio::DB::Bam bfp int ref int start int end CV* callback SV* callbackdata PREINIT: fetch_callback_data fcd; bam_lplbuf_t *pileup; CODE: fcd.callback = (SV*) callback; fcd.data = callbackdata; pileup = bam_lplbuf_init(invoke_pileup_callback_fun,(void*)&fcd); bam_fetch(bfp,bai,ref,start,end,(void*)pileup,add_lpileup_line); bam_lplbuf_push(NULL,pileup); bam_lplbuf_destroy(pileup); void bami_pileup(bai,bfp,ref,start,end,callback,callbackdata=&PL_sv_undef) Bio::DB::Bam::Index bai Bio::DB::Bam bfp int ref int start int end CV* callback SV* callbackdata PREINIT: fetch_callback_data fcd; bam_plbuf_t *pileup; CODE: fcd.callback = (SV*) callback; fcd.data = callbackdata; pileup = bam_plbuf_init(invoke_pileup_callback_fun,(void*)&fcd); bam_plp_set_maxcnt(pileup->iter,MaxPileupCnt); bam_fetch(bfp,bai,ref,start,end,(void*)pileup,add_pileup_line); bam_plbuf_push(NULL,pileup); bam_plbuf_destroy(pileup); AV* bami_coverage(bai,bfp,ref,start,end,bins=0,maxcnt=8000) Bio::DB::Bam::Index bai Bio::DB::Bam bfp int ref int start int end int bins int maxcnt PREINIT: coverage_graph cg; bam_plbuf_t *pileup; AV* array; SV* cov; int i; bam_header_t *bh; CODE: { if (end >= MAX_REGION) { bgzf_seek(bfp,0,0); bh = bam_header_read(bfp); end = bh->target_len[ref]; bam_header_destroy(bh); } if ((bins==0) || (bins > (end-start))) bins = end-start; /* coverage graph used to communicate to our callback the region we are sampling */ cg.start = start; cg.end = end; cg.reads = 0; cg.width = ((double)(end-start))/bins; Newxz(cg.bin,bins+1,int); /* accumulate coverage into the coverage graph */ pileup = bam_plbuf_init(coverage_from_pileup_fun,(void*)&cg); if (items >= 7) bam_plp_set_maxcnt(pileup->iter,maxcnt); else bam_plp_set_maxcnt(pileup->iter,MaxPileupCnt); bam_fetch(bfp,bai,ref,start,end,(void*)pileup,add_pileup_line); bam_plbuf_push(NULL,pileup); bam_plbuf_destroy(pileup); /* now normalize to coverage/bp and convert into an array */ array = newAV(); av_extend(array,bins); for (i=0;iqpos; OUTPUT: RETVAL int pl_pos(pl) Bio::DB::Bam::Pileup pl CODE: RETVAL = pl->qpos+1; OUTPUT: RETVAL int pl_indel(pl) Bio::DB::Bam::Pileup pl CODE: RETVAL = pl->indel; OUTPUT: RETVAL int pl_level(pl) Bio::DB::Bam::Pileup pl CODE: RETVAL = pl->level; OUTPUT: RETVAL int pl_is_del(pl) Bio::DB::Bam::Pileup pl CODE: RETVAL = pl->is_del; OUTPUT: RETVAL int pl_is_refskip(pl) Bio::DB::Bam::Pileup pl CODE: RETVAL = pl->is_refskip; OUTPUT: RETVAL int pl_is_head(pl) Bio::DB::Bam::Pileup pl CODE: RETVAL = pl->is_head; OUTPUT: RETVAL int pl_is_tail(pl) Bio::DB::Bam::Pileup pl CODE: RETVAL = pl->is_tail; OUTPUT: RETVAL Bio::DB::Bam::Alignment pl_b(pl) Bio::DB::Bam::Pileup pl CODE: RETVAL = bam_dup1(pl->b); OUTPUT: RETVAL Bio::DB::Bam::Alignment pl_alignment(pl) Bio::DB::Bam::Pileup pl CODE: RETVAL = bam_dup1(pl->b); OUTPUT: RETVAL Bio-SamTools-1.43/lib/Bio/DB/Sam.pm000444001751001751 22777712657431424 16747 0ustar00lsteinlstein000000000000package Bio::DB::Sam; our $VERSION = '1.43'; =head1 NAME Bio::DB::Sam -- Read SAM/BAM database files =head1 SYNOPSIS use Bio::DB::Sam; # high level API my $sam = Bio::DB::Sam->new(-bam =>"data/ex1.bam", -fasta=>"data/ex1.fa", ); my @targets = $sam->seq_ids; my @alignments = $sam->get_features_by_location(-seq_id => 'seq2', -start => 500, -end => 800); for my $a (@alignments) { # where does the alignment start in the reference sequence my $seqid = $a->seq_id; my $start = $a->start; my $end = $a->end; my $strand = $a->strand; my $cigar = $a->cigar_str; my $paired = $a->get_tag_values('PAIRED'); # where does the alignment start in the query sequence my $query_start = $a->query->start; my $query_end = $a->query->end; my $ref_dna = $a->dna; # reference sequence bases my $query_dna = $a->query->dna; # query sequence bases my @scores = $a->qscore; # per-base quality scores my $match_qual= $a->qual; # quality of the match } my @pairs = $sam->get_features_by_location(-type => 'read_pair', -seq_id => 'seq2', -start => 500, -end => 800); for my $pair (@pairs) { my $length = $pair->length; # insert length my ($first_mate,$second_mate) = $pair->get_SeqFeatures; my $f_start = $first_mate->start; my $s_start = $second_mate->start; } # low level API my $bam = Bio::DB::Bam->open('/path/to/bamfile'); my $header = $bam->header; my $target_count = $header->n_targets; my $target_names = $header->target_name; while (my $align = $bam->read1) { my $seqid = $target_names->[$align->tid]; my $start = $align->pos+1; my $end = $align->calend; my $cigar = $align->cigar_str; } my $index = Bio::DB::Bam->index_open('/path/to/bamfile'); my $index = Bio::DB::Bam->index_open_in_safewd('/path/to/bamfile'); my $callback = sub { my $alignment = shift; my $start = $alignment->start; my $end = $alignment->end; my $seqid = $target_names->[$alignment->tid]; print $alignment->qname," aligns to $seqid:$start..$end\n"; } my $header = $index->header; $index->fetch($bam,$header->parse_region('seq2'),$callback); =head1 DESCRIPTION This module provides a Perl interface to the libbam library for indexed and unindexed SAM/BAM sequence alignment databases. It provides support for retrieving information on individual alignments, read pairs, and alignment coverage information across large regions. It also provides callback functionality for calling SNPs and performing other base-by-base functions. Most operations are compatible with the BioPerl Bio::SeqFeatureI interface, allowing BAM files to be used as a backend to the GBrowse genome browser application (gmod.sourceforge.net). =head2 The high-level API The high-level API provides a BioPerl-compatible interface to indexed BAM files. The BAM database is treated as a collection of Bio::SeqFeatureI features, and can be searched for features by name, location, type and combinations of feature tags such as whether the alignment is part of a mate-pair. When opening a BAM database using the high-level API, you provide the pathnames of two files: the FASTA file that contains the reference genome sequence, and the BAM file that contains the query sequences and their alignments. If either of the two files needs to be indexed, the indexing will happen automatically. You can then query the database for alignment features by combinations of name, position, type, and feature tag. The high-level API provides access to up to four feature "types": * "match": The "raw" unpaired alignment between a read and the reference sequence. * "read_pair": Paired alignments; a single composite feature that contains two subfeatures for the alignments of each of the mates in a mate pair. * "coverage": A feature that spans a region of interest that contains numeric information on the coverage of reads across the region. * "region": A way of retrieving information about the reference sequence. Searching for features of type "region" will return a list of chromosomes or contigs in the reference sequence, rather than read alignments. * "chromosome": A synonym for "region". B can be en masse in a single call, retrieved in a memory-efficient streaming basis using an iterator, or interrogated using a filehandle that return a series of TAM-format lines. B can be retrieved using BioPerl's feature "tag" mechanism. For example, to interrogate the FIRST_MATE flag, one fetches the "FIRST_MATE" tag: warn "aye aye captain!" if $alignment->get_tag_values('FIRST_MATE'); The Bio::SeqFeatureI interface has been extended to retrieve all flags as a compact human-readable string, and to return the CIGAR alignment in a variety of formats. B, such as reads that cover introns, are dealt with in one of two ways. The default is to leave split alignments alone: they can be detected by one or more "N" operations in the CIGAR string. Optionally, you can choose to have the API split these alignments across two or more subfeatures; the CIGAR strings of these split alignments will be adjusted accordingly. B The API provides you with access to the samtools "pileup" API. This gives you the ability to write a callback that will be invoked on every column of the alignment for the purpose of calculating coverage, quality score metrics, or SNP calling. B When you create the Bio::DB::Sam object, you can pass the path to a FASTA file containing the reference sequence. Alternatively, you may pass an object that knows how to retrieve DNA sequences across a range via the seq() of fetch_seq() methods, as described under new(). If the SAM/BAM file has MD tags, then these tags will be used to reconstruct the reference sequence when necessary, in which case you can completely omit the -fasta argument. Note that not all SAM/BAM files have MD tags, and those that do may not use them correctly due to the newness of this part of the SAM spec. You may wish to populate these tags using samtools' "calmd" command. If the -fasta argument is omitted and no MD tags are present, then the reference sequence will be returned as 'N'. The B
that you will be dealing with in the high-level API are as follows: * Bio::DB::Sam -- A collection of alignments and reference sequences. * Bio::DB::Bam::Alignment -- The alignment between a query and the reference. * Bio::DB::Bam::Query -- An object corresponding to the query sequence in which both (+) and (-) strand alignments are shown in the reference (+) strand. * Bio::DB::Bam::Target -- An interface to the query sequence in which (-) strand alignments are shown in reverse complement You may encounter other classes as well. These include: * Bio::DB::Sam::Segment -- This corresponds to a region on the reference sequence. * Bio::DB::Sam::Constants -- This defines CIGAR symbol constants and flags. * Bio::DB::Bam::AlignWrapper -- An alignment helper object that adds split alignment functionality. See Bio::DB::Bam::Alignment for the documentation on using it. * Bio::DB::Bam::ReadIterator -- An iterator that mediates the one-feature-at-a-time retrieval mechanism. * Bio::DB::Bam::FetchIterator -- Another iterator for feature-at-a-time retrieval. =head2 The low-level API The low-level API closely mirrors that of the libbam library. It provides the ability to open TAM and BAM files, read and write to them, build indexes, and perform searches across them. There is less overhead to using the API because there is very little Perl memory management, but the functions are less convenient to use. Some operations, such as writing BAM files, are only available through the low-level API. The classes you will be interacting with in the low-level API are as follows: * Bio::DB::Tam -- Methods that read and write TAM (text SAM) files. * Bio::DB::Bam -- Methods that read and write BAM (binary SAM) files. * Bio::DB::Bam::Header -- Methods for manipulating the BAM file header. * Bio::DB::Bam::Index -- Methods for retrieving data from indexed BAM files. * Bio::DB::Bam::Alignment -- Methods for manipulating alignment data. * Bio::DB::Bam::Pileup -- Methods for manipulating the pileup data structure. * Bio::DB::Sam::Fai -- Methods for creating and reading from indexed Fasta files. =head1 METHODS We cover the high-level API first. The high-level API code can be found in the files Bio/DB/Sam.pm, Bio/DB/Sam/*.pm, and Bio/DB/Bam/*.pm. =head2 Bio::DB::Sam Constructor and basic accessors =over 4 =item $sam = Bio::DB::Sam->new(%options) The Bio::DB::Sam object combines a Fasta file of the reference sequences with a BAM file to allow for convenient retrieval of human-readable sequence IDs and reference sequences. The new() constructor accepts a -name=>value style list of options as follows: Option Description ------ ------------- -bam Path to the BAM file that contains the alignments (required). When using samtools 0.1.6 or higher, an http: or ftp: URL is accepted. -fasta Path to the Fasta file that contains the reference sequences (optional). Alternatively, you may pass any object that supports a seq() or fetch_seq() method and takes the three arguments ($seq_id,$start,$end). -expand_flags A boolean value. If true then the standard alignment flags will be broken out as individual tags such as 'M_UNMAPPED' (default false). -split_splices A boolean value. If true, then alignments that are split across splices will be broken out into a single alignment containing two sub- alignments (default false). -split The same as -split_splices. -force_refseq Always use the reference sequence file to derive the reference sequence, even when the sequence can be derived from the MD tag. This is slower, but safer when working with BAM files derived from buggy aligners or when the reference contains non-canonical (modified) bases. -autoindex Create a BAM index file if one does not exist or the current one has a modification date earlier than the BAM file. An example of a typical new() constructor invocation is: $sam = Bio::DB::Sam->new(-fasta => '/home/projects/genomes/hu17.fa', -bam => '/home/projects/alignments/ej88.bam', -expand_flags => 1, -split_splices => 1); If the B<-fasta> argument is present, then you will be able to use the interface to fetch the reference sequence's bases. Otherwise, calls that return the reference sequence will return sequences consisting entirely of "N". B<-expand_flags> option, if true, has the effect of turning each of the standard SAM flags into a separately retrievable B in the Bio::SeqFeatureI interface. Otherwise, the standard flags will be concatenated in easily parseable form as a tag named "FLAGS". See get_all_tags() and get_tag_values() for more information. Any two-letter extension flags, such as H0 or H1, will always appear as separate tags regardless of the setting. B<-split_splices> has the effect of breaking up alignments that contain an "N" operation into subparts for more convenient manipulation. For example, if you have both paired reads and spliced alignments in the BAM file, the following code shows the subpart relationships: $pair = $sam->get_feature_by_name('E113:01:01:23'); @mates = $pair->get_SeqFeatures; @mate1_parts = $mates[0]->get_SeqFeatures; @mate2_parts = $mates[1]->get_SeqFeatures; Because there is some overhead to splitting up the spliced alignments, this option is false by default. B to BAM files located on an HTTP or FTP server is possible when using the Samtools library version 0.1.6 or higher. Simply replace the path to the BAM file with the appropriate URL. Note that incorrect URLs may lead to a core dump. It is not currently possible to refer to a remote FASTA file. These will have to be downloaded locally and indexed before using. =item $flag = $sam->expand_flags([$new_value]) Get or set the expand_flags option. This can be done after object creation and will have an immediate effect on all alignments fetched from the BAM file. =item $flag = $sam->split_splices([$new_value]) Get or set the split_splices option. This can be done after object creation and will affect all alignments fetched from the BAM file B =item $header = $sam->header Return the Bio::DB::Bam::Header object associated with the BAM file. You can manipulate the header using the low-level API. =item $bam_path = $sam->bam_path Return the path of the bam file used to create the sam object. This makes the sam object more portable. =item $bam = $sam->bam Returns the low-level Bio::DB::Bam object associated with the opened file. =item $fai = $sam->fai Returns the Bio::DB::Sam::Fai object associated with the Fasta file. You can then manipuate this object with the low-level API. B If index building is necessarily, the process will need write privileges to the same directory in which the Fasta file resides.> If the process does not have write permission, then the call will fail. Unfortunately, the BAM library does not do great error recovery for this condition, and you may experience a core dump. This is not trappable via an eval {}. =item $bai = $sam->bam_index Return the Bio::DB::Bam::Index object associated with the BAM file. B In addition, if the BAM file is not already sorted by chromosome and coordinate, it will be sorted automatically, an operation that consumes significant time and disk space. The current process must have write permission to the directory in which the BAM file resides in order for this to work.> In case of a permissions problem, the Perl library will catch the error and die. You can trap it with an eval {}. =item $sam->clone Bio::DB::SAM objects are not stable across fork() operations. If you fork, you must call clone() either in the parent or the child process before attempting to call any methods. =back =head2 Getting information about reference sequences The Bio::DB::Sam object provides the following methods for getting information about the reference sequence(s) contained in the associated Fasta file. =over 4 =item @seq_ids = $sam->seq_ids Returns an unsorted list of the IDs of the reference sequences (known elsewhere in this document as seq_ids). This is the same as the identifier following the ">" sign in the Fasta file (e.g. "chr1"). =item $num_targets = $sam->n_targets Return the number of reference sequences. =item $length = $sam->length('seqid') Returns the length of the reference sequence named "seqid". =item $seq_id = $sam->target_name($tid) Translates a numeric target ID (TID) returned by the low-level API into a seq_id used by the high-level API. =item $length = $sam->target_len($tid) Translates a numeric target ID (TID) from the low-level API to a sequence length. =item $dna = $sam->seq($seqid,$start,$end) Returns the DNA across the region from start to end on reference seqid. Note that this is a string, not a Bio::PrimarySeq object. If no -fasta path was passed when the sam object was created, then you will receive a series of N nucleotides of the requested length. =back =head2 Creating and querying segments Bio::DB::Sam::Segment objects refer regions on the reference sequence. They can be used to retrieve the sequence of the reference, as well as alignments that overlap with the region. =over 4 =item $segment = $sam->segment($seqid,$start,$end); =item $segment = $sam->segment(-seq_id=>'chr1',-start=>5000,-end=>6000); Segments are created using the Bio:DB::Sam->segment() method. It can be called using one to three positional arguments corresponding to the seq_id of the reference sequence, and optionally the start and end positions of a subregion on the sequence. If the start and/or end are undefined, they will be replaced with the beginning and end of the sequence respectively. Alternatively, you may call segment() with named -seq_id, -start and -end arguments. All coordinates are 1-based. =item $seqid = $segment->seq_id Return the segment's sequence ID. =item $start = $segment->start Return the segment's start position. =item $end = $segment->end Return the segment's end position. =item $strand = $segment->strand Return the strand of the segment (always 0). =item $length = $segment->length Return the length of the segment. =item $dna = $segment->dna Return the DNA string for the reference sequence under this segment. =item $seq = $segment->seq Return a Bio::PrimarySeq object corresponding to the sequence of the reference under this segment. You can get the actual DNA string in this redundant-looking way: $dna = $segment->seq->seq The advantage of working with a Bio::PrimarySeq object is that you can perform operations on it, including taking its reverse complement and subsequences. =item @alignments = $segment->features(%args) Return alignments that overlap the segment in the associated BAM file. The optional %args list allows you to filter features by name, tag or other attributes. See the documentation of the Bio::DB::Sam->features() method for the full list of options. Here are some typical examples: # get all the overlapping alignments @all_alignments = $segment->features; # get an iterator across the alignments my $iterator = $segment->features(-iterator=>1); while (my $align = $iterator->next_seq) { do something } # get a TAM filehandle across the alignments my $fh = $segment->features(-fh=>1); while (<$fh>) { print } # get only the alignments with unmapped mates my @unmapped = $segment->features(-flags=>{M_UNMAPPED=>1}); # get coverage across this region my ($coverage) = $segment->features('coverage'); my @data_points = $coverage->coverage; # grep through features using a coderef my @reverse_alignments = $segment->features( -filter => sub { my $a = shift; return $a->strand < 0; }); =item $tag = $segment->primary_tag =item $tag = $segment->source_tag Return the strings "region" and "sam/bam" respectively. These methods allow the segment to be passed to BioPerl methods that expect Bio::SeqFeatureI objects. =item $segment->name, $segment->display_name, $segment->get_SeqFeatures, $segment->get_tag_values These methods are provided for Bio::SeqFeatureI compatibility and don't do anything of interest. =back =head2 Retrieving alignments, mate pairs and coverage information The features() method is an all-purpose tool for retrieving alignment information from the SAM/BAM database. In addition, the methods get_features_by_name(), get_features_by_location() and others provide convenient shortcuts to features(). These methods either return a list of features, an iterator across a list of features, or a filehandle opened on a pseudo-TAM file. =over 4 =item @features = $sam->features(%options) =item $iterator = $sam->features(-iterator=>1,%more_options) =item $filehandle = $sam->features(-fh=>1,%more_options) =item @features = $sam->features('type1','type2'...) This is the all-purpose interface for fetching alignments and other types of features from the database. Arguments are a -name=>value option list selected from the following list of options: Option Description ------ ------------- -type Filter on features of a given type. You may provide either a scalar typename, or a reference to an array of desired feature types. Valid types are "match", "read_pair", "coverage" and "chromosome." See below for a full explanation of feature types. -name Filter on reads with the designated name. Note that this can be a slow operation unless accompanied by the feature location as well. -seq_id Filter on features that align to seq_id between start -start and end. -start and -end must be used in conjunction -end with -seq_id. If -start and/or -end are absent, they will default to 1 and the end of the reference sequence, respectively. -flags Filter features that match a list of one or more flags. See below for the format. -attributes The same as -flags, for compatibility with other -tags APIs. -filter Filter on features with a coderef. The coderef will receive a single argument consisting of the feature and should return true to keep the feature, or false to discard it. -iterator Instead of returning a list of features, return an iterator across the results. To retrieve the results, call the iterator's next_seq() method repeatedly until it returns undef to indicate that no more matching features remain. -fh Instead of returning a list of features, return a filehandle. Read from the filehandle to retrieve each of the results in TAM format, one alignment per line read. This only works for features of type "match." The high-level API introduces the concept of a B in order to provide several convenience functions. You specify types by using the optional B<-type> argument. The following types are currently supported: B. The "match" type corresponds to the unprocessed SAM alignment. It will retrieve single reads, either mapped or unmapped. Each match feature's primary_tag() method will return the string "match." The features returned by this call are of type Bio::DB::Bam::AlignWrapper. B. The "paired_end" type causes the sam interface to find and merge together mate pairs. Fetching this type of feature will yield a series of Bio::SeqFeatureI objects, each as long as the total distance on the reference sequence spanned by the mate pairs. The top-level feature is of type Bio::SeqFeature::Lite; it contains two Bio::DB::Bam::AlignWrapper subparts. Call get_SeqFeatures() to get the two individual reads. Example: my @pairs = $sam->features(-type=>'read_pair'); my $p = $pairs[0]; my $i_length = $p->length; my @ends = $p->get_SeqFeatures; my $left = $ends[0]->start; my $right = $ends[1]->end; B. The "coverage" type causes the sam interface to calculate coverage across the designated region. It only works properly if accompanied by the desired location of the coverage graph; -seq_id is a mandatory argument for coverage calculation, and -start and -end are optional. The call will return a single Bio::SeqFeatureI object whose primary_tag() is "coverage." To recover the coverage data, call the object's coverage() method to obtain an array (list context) or arrayref (scalar context) of coverage counts across the region of interest: my ($coverage) = $sam->features(-type=>'coverage',-seq_id=>'seq1'); my @data = $coverage->coverage; my $total; for (@data) { $total += $_ } my $average_coverage = $total/@data; By default the coverage graph will be at the base pair level. So for a region 5000 bp wide, coverage() will return an array or arrayref with exactly 5000 elements. However, you also have the option of calculating the coverage across larger bins. Simply append the number of intervals you are interested to the "coverage" typename. For example, fetching "coverage:500" will return a feature whose coverage() method will return the coverage across 500 intervals. B or B. The "chromosome" or "region" type are interchangeable. They ask the sam interface to construct Bio::DB::Sam::Segment representing the reference sequences. These two calls give similar results: my $segment = $sam->segment('seq2',1=>500); my ($seg) = $sam->features(-type=>'chromosome', -seq_id=>'seq2',-start=>1,-end=>500); Due to an unresolved bug, you cannot fetch chromosome features in the same call with matches and other feature types call. Specifically, this works as expected: my @chromosomes = $sam->features (-type=>'chromosome'); But this doesn't (as of 18 June 2009): my @chromosomes_and_matches = $sam->features(-type=>['match','chromosome']); If no -type argument is provided, then features() defaults to finding features of type "match." You may call features() with a plain list of strings (positional arguments, not -type=>value arguments). This will be interpreted as a list of feature types to return: my ($coverage) = $sam->features('coverage') For a description of the methods available in the features returned from this call, please see L and L. You can B "match" and "read_pair" features by name, location and/or flags. The name and flag filters are not very efficient. Unless they are combined with a location filter, they will initiate an exhaustive search of the BAM database. Name filters are case-insensitive, and allow you to use shell-style "*" and "?" wildcards. Flag filters created with the B<-flag>, B<-attribute> or B<-tag> options have the following syntax: -flag => { FLAG_NAME_1 => ['list','of','possible','values'], FLAG_NAME_2 => ['list','of','possible','values'], ... } The value of B<-flag> is a hash reference in which the keys are flag names and the values are array references containing lists of acceptable values. The list of values are OR'd with each other, and the flag names are AND'd with each other. The B<-filter> option provides a completely generic filtering interface. Provide a reference to a subroutine. It will be called once for each potential feature. Return true to keep the feature, or false to discard it. Here is an example of how to find all matches whose alignment quality scores are greater than 80. @features = $sam->features(-filter=>sub {shift->qual > 80} ); By default, features() returns a list of all matching features. You may instead request an iterator across the results list by passing -iterator=>1. This will give you an object that has a single method, next_seq(): my $high_qual = $sam->features(-filter => sub {shift->qual > 80}, -iterator=> 1 ); while (my $feature = $high_qual->next_seq) { # do something with the alignment } Similarly, by passing a true value to the argument B<-fh>, you can obtain a filehandle to a virtual TAM file. This only works with the "match" feature type: my $high_qual = $sam->features(-filter => sub {shift->qual > 80}, -fh => 1 ); while (my $tam_line = <$high_qual>) { chomp($tam_line); # do something with it } =item @features = $sam->get_features_by_name($name) Convenience method. The same as calling $sam->features(-name=>$name); =item $feature = $sam->get_feature_by_name($name) Convenience method. The same as ($sam->features(-name=>$name))[0]. =item @features = $sam->get_features_by_location($seqid,$start,$end) Convenience method. The same as calling $sam->features(-seq_id=>$seqid,-start=>$start,-end=>$end). =item @features = $sam->get_features_by_flag(%flags) Convenience method. The same as calling $sam->features(-flags=>\%flags). This method is also called get_features_by_attribute() and get_features_by_tag(). Example: @features = $sam->get_features_by_flag(H0=>1) =item $feature = $sam->get_feature_by_id($id) The high-level API assigns each feature a unique ID composed of its read name, position and strand and returns it when you call the feature's primary_id() method. Given that ID, this method returns the feature. =item $iterator = $sam->get_seq_stream(%options) Convenience method. This is the same as calling $sam->features(%options,-iterator=>1). =item $fh = $sam->get_seq_fh(%options) Convenience method. This is the same as calling $sam->features(%options,-fh=>1). =item $fh = $sam->tam_fh Convenience method. It is the same as calling $sam->features(-fh=>1). =item @types = $sam->types This method returns the list of feature types (e.g. "read_pair") returned by the current version of the interface. =back =head2 The generic fetch() and pileup() methods Lastly, the high-level API supports two methods for rapidly traversing indexed BAM databases. =over 4 =item $sam->fetch($region,$callback) This method, which is named after the native bam_fetch() function in the C interface, traverses the indicated region and invokes a callback code reference on each match. Specify a region using the BAM syntax "seqid:start-end", or either of the alternative syntaxes "seqid:start..end" and "seqid:start,end". If start and end are absent, then the entire reference sequence is traversed. If end is absent, then the end of the reference sequence is assumed. The callback will be called repeatedly with a Bio::DB::Bam::AlignWrapper on the argument list. Example: $sam->fetch('seq1:600-700', sub { my $a = shift; print $a->display_name,' ',$a->cigar_str,"\n"; }); Note that the fetch() operation works on reads that B the indicated region. Therefore the callback may be called for reads that align to the reference at positions that start before or end after the indicated region. =item $sam->pileup($region,$callback [,$keep_level]) This method, which is named after the native bam_lpileupfile() function in the C interfaces, traverses the indicated region and generates a "pileup" of all the mapped reads that cover it. The user-provided callback function is then invoked on each position of the alignment along with a data structure that provides access to the individual aligned reads. As with fetch(), the region is specified as a string in the format "seqid:start-end", "seqid:start..end" or "seqid:start,end". The callback is a coderef that will be invoked with three arguments: the seq_id of the reference sequence, the current position on the reference (in 1-based coordinates!), and a reference to an array of Bio::DB::Bam::Pileup objects. Here is the typical call signature: sub { my ($seqid,$pos,$pileup) = @_; # do something } For example, if you call pileup on the region "seq1:501-600", then the callback will be invoked for all reads that overlap the indicated region. The first invocation of the callback will typically have a $pos argument somewhat to the left of the desired region and the last call will be somewhat to the right. You may wish to ignore positions that are outside of the requested region. Also be aware that the reference sequence position uses 1-based coordinates, which is different from the low-level interface, which use 0-based coordinates. The optional $keep_level argument, if true, asks the BAM library to keep track of the level of the read in the multiple alignment, an operation that generates some overhead. This is mostly useful for text alignment viewers, and so is off by default. The size of the $pileup array reference indicates the read coverage at that position. Here is a simple average coverage calculator: my $depth = 0; my $positions = 0; my $callback = sub { my ($seqid,$pos,$pileup) = @_; next unless $pos >= 501 && $pos <= 600; $positions++; $depth += @$pileup; } $sam->pileup('seq1:501-600',$callback); print "coverage = ",$depth/$positions; Each Bio::DB::Bam::Pileup object describes the position of a read in the alignment. Briefly, Bio::DB::Bam::Pileup has the following methods: $pileup->alignment The alignment at this level (a Bio::DB::Bam::AlignWrapper object). $pileup->qpos The position of the read base at the pileup site, in 0-based coordinates. $pileup->pos The position of the read base at the pileup site, in 1-based coordinates; $pileup->level The level of the read in the multiple alignment view. Note that this field is only valid when $keep_level is true. $pileup->indel Length of the indel at this position: 0 for no indel, positive for an insertion (relative to the reference), negative for a deletion (relative to the reference.) $pileup->is_del True if the base on the padded read is a deletion. $pileup->is_refskip True if the base on the padded read is a gap relative to the reference (denoted as < or > in the pileup) $pileup->is_head Undocumented field in the bam.h header file. $pileup->is_tail Undocumented field in the bam.h header file. See L for a very simple SNP caller. =item $sam->fast_pileup($region,$callback [,$keep_level]) This is identical to pileup() except that the pileup object returns low-level Bio::DB::Bam::Alignment objects rather than the higher-level Bio::DB::Bam::AlignWrapper objects. This makes it roughly 50% faster, but you lose the align objects' seq_id() and get_tag_values() methods. As a compensation, the callback receives an additional argument corresponding to the Bio::DB::Sam object. You can use this to create AlignWrapper objects on an as needed basis: my $callback = sub { my($seqid,$pos,$pileup,$sam) = @_; for my $p (@$pileup) { my $alignment = $p->alignment; my $wrapper = Bio::DB::Bam::AlignWrapper->new($alignment,$sam); my $has_mate = $wrapper->get_tag_values('PAIRED'); } }; =item Bio::DB::Sam->max_pileup_cnt([$new_cnt]) =item $sam->max_pileup_cnt([$new_cnt]) The Samtools library caps pileups at a set level, defaulting to 8000. The callback will not be invoked on a single position more than the level set by the cap, even if there are more reads. Called with no arguments, this method returns the current cap value. Called with a numeric argument, it changes the cap. There is currently no way to specify an unlimited cap. This method can be called as an instance method or a class method. =item $sam->coverage2BedGraph([$fh]) This special-purpose method will compute a four-column BED graph of the coverage across the entire SAM/BAM file and print it to STDOUT. You may provide a filehandle to redirect output to a file or pipe. =back The next sections correspond to the low-level API, which let you create and manipulate Perl objects that correspond directly to data structures in the C interface. A major difference between the high and low level APIs is that in the high-level API, the reference sequence is identified using a human-readable seq_id. However, in the low-level API, the reference is identified using a numeric target ID ("tid"). The target ID is established during the creation of the BAM file and is a small 0-based integer index. The Bio::DB::Bam::Header object provides methods for converting from seq_ids to tids. =head2 Indexed Fasta Files These methods relate to the BAM library's indexed Fasta (".fai") files. =over 4 =item $fai = Bio::DB::Sam::Fai->load('/path/to/file.fa') Load an indexed Fasta file and return the object corresponding to it. If the index does not exist, it will be created automatically. Note that you pass the path to the Fasta file, not the index. For consistency with Bio::DB::Bam->open() this method is also called open(). =item $dna_string = $fai->fetch("seqid:start-end") Given a sequence ID contained in the Fasta file and optionally a subrange in the form "start-end", finds the indicated subsequence and returns it as a string. =back =head2 TAM Files These methods provide interfaces to the "TAM" text version of SAM files; they often have a .sam extension. =over 4 =item $tam = Bio::DB::Tam->open('/path/to/file.sam') Given the path to a SAM file, opens it for reading. The file can be compressed with gzip if desired. =item $header = $tam->header_read() Create and return a Bio::DB::Bam::Header object from the information contained within @SQ header lines of the Sam file. If there are no @SQ lines, then the header will not be useful, and you should call header_read2() to generate the missing information from the appropriate indexed Fasta file. Here is some code to illustrate the suggested logic: my $header = $tam->header_read; unless ($header->n_targets > 0) { $header = $tam->header_read2('/path/to/file.fa.fai'); } =item $header = $tam->header_read2('/path/to/file.fa.fai') Create and return a Bio::DB::Bam::Header object from the information contained within the indexed Fasta file of the reference sequences. Note that you have to pass the path to the .fai file, and not the .fa file. The header object contains information on the reference sequence names and lengths. =item $bytes = $tam->read1($header,$alignment) Given a Bio::DB::Bam::Header object, such as the one created by header_read2(), and a Bio::DB::Bam::Alignment object created by Bio::DB::Bam::Alignment->new(), reads one line of alignment information into the alignment object from the TAM file and returns a status code. The result code will be the number of bytes read. =back =head2 BAM Files These methods provide interfaces to the "BAM" binary version of SAM. They usually have a .bam extension. =over 4 =item $bam = Bio::DB::Bam->open('/path/to/file.bam' [,$mode]) Open up the BAM file at the indicated path. Mode, if present, must be one of the file stream open flags ("r", "w", "a", "r+", etc.). If absent, mode defaults to "r". Note that Bio::DB::Bam objects are not stable across fork() operations. If you fork, and intend to use the object in both parent and child, you must reopen the Bio::DB::Bam in either the child or the parent (but not both) before attempting to call any of the object's methods. The path may be an http: or ftp: URL, in which case a copy of the index file will be downloaded to the current working directory (see below) and all accesses will be performed on the remote BAM file. Example: $bam = Bio::DB::Bam->open('http://some.site.com/nextgen/chr1_bowtie.bam'); =item $header = $bam->header() Given an open BAM file, return a Bio::DB::Bam::Header object containing information about the reference sequence(s). Note that you must invoke header() at least once before calling read1(). =item $status_code = $bam->header_write($header) Given a Bio::DB::Bam::Header object and a BAM file opened in write mode, write the header to the file. If the write fails the process will be terminated at the C layer. The result code is (currently) always zero. =item $integer = $bam->tell() Return the current position of the BAM file read/write pointer. =item $bam->seek($integer,$pos) Set the current position of the BAM file read/write pointer. $pos is one of SEEK_SET, SEEK_CUR, SEEK_END. These constants can be obtained from the Fcntl module by importing the ":seek" group: use Fcntl ':seek'; =item $alignment = $bam->read1() Read one alignment from the BAM file and return it as a Bio::DB::Bam::Alignment object. Note that you must invoke header() at least once before calling read1(). =item $bytes = $bam->write1($alignment) Given a BAM file that has been opened in write mode and a Bio::DB::Bam::Alignment object, write the alignment to the BAM file and return the number of bytes successfully written. =item Bio::DB::Bam->sort_core($by_qname,$path,$prefix,$max_mem) Attempt to sort a BAM file by chromosomal location or name and create a new sorted BAM file. Arguments are as follows: Argument Description -------- ----------- $by_qname If true, sort by read name rather than chromosomal location. $path Path to the BAM file $prefix Prefix to use for the new sorted file. For example, passing "foo" will result in a BAM file named "foo.bam". $max_mem Maximum core memory to use for the sort. If the sort requires more than this amount of memory, intermediate sort files will be written to disk. The default, if not provided is 500M. =back =head2 BAM index methods The Bio::DB::Bam::Index object provides access to BAM index (.bai) files. =over 4 =item $status_code = Bio::DB::Bam->index_build('/path/to/file.bam') Given the path to a .bam file, this function attempts to build a ".bai" index. The process in which the .bam file exists must be writable by the current process and there must be sufficient disk space for the operation or the process will be terminated in the C library layer. The result code is currently always zero, but in the future may return a negative value to indicate failure. =item $index = Bio::DB::Bam->index('/path/to/file.bam',$reindex) Attempt to open the index for the indicated BAM file. If $reindex is true, and the index either does not exist or is out of date with respect to the BAM file (by checking modification dates), then attempt to rebuild the index. Will throw an exception if the index does not exist or if attempting to rebuild the index was unsuccessful. =item $index = Bio::DB::Bam->index_open('/path/to/file.bam') Attempt to open the index file for a BAM file, returning a Bio::DB::Bam::Index object. The filename path to use is the .bam file, not the .bai file. =item $index = Bio::DB::Bam->index_open_in_safewd('/path/to/file.bam' [,$mode]) When opening a remote BAM file, you may not wish for the index to be downloaded to the current working directory. This version of index_open copies the index into the directory indicated by the TMPDIR environment variable or the system-defined /tmp directory if not present. You may change the environment variable just before the call to change its behavior. =item $code = $index->fetch($bam,$tid,$start,$end,$callback [,$callback_data]) This is the low-level equivalent of the $sam->fetch() function described for the high-level API. Given a open BAM file object, the numeric ID of the reference sequence, start and end ranges on the reference, and a coderef, this function will traverse the region and repeatedly invoke the coderef with each Bio::DB::Bam::Alignment object that overlaps the region. Arguments: Argument Description -------- ----------- $bam The Bio::DB::Bam object that corresponds to the index object. $tid The target ID of the reference sequence. This can be obtained by calling $header->parse_region() with an appropriate opened Bio::DB::Bam::Header object. $start The start and end positions of the desired range on the reference sequence given by $tid, in 0-based $end coordinates. Like the $tid, these can be obtained from $header->parse_region(). $callback A coderef that will be called for each read overlapping the designated region. $callback_data Any arbitrary Perl data that you wish to pass to the $callback (optional). The coderef's call signature should look like this: my $callback = sub { my ($alignment,$data) = @_; ... } The first argument is a Bio::DB::Bam::Alignment object. The second is the callback data (if any) passed to fetch(). Fetch() returns an integer code, but its meaning is not described in the SAM/BAM C library documentation. =item $index->pileup($bam,$tid,$start,$end,$callback [,$callback_data]) This is the low-level version of the pileup() method, which allows you to invoke a coderef for every position in a BAM alignment. Arguments are: Argument Description -------- ----------- $bam The Bio::DB::Bam object that corresponds to the index object. $tid The target ID of the reference sequence. This can be obtained by calling $header->parse_region() with an appropriate opened Bio::DB::Bam::Header object. $start The start and end positions of the desired range on the reference sequence given by $tid, in 0-based $end coordinates. Like the $tid, these can be obtained from $header->parse_region(). $callback A coderef that will be called for each position of the alignment across the designated region. $callback_data Any arbitrary Perl data that you wish to pass to the $callback (optional). The callback will be invoked with four arguments corresponding to the numeric sequence ID of the reference sequence, the B position on the alignment, an arrayref of Bio::DB::Bam::Pileup objects, and the callback data, if any. A typical call signature will be this: $callback = sub { my ($tid,$pos,$pileups,$callback_data) = @_; for my $pileup (@$pileups) { # do something }; Note that the position argument is zero-based rather than 1-based, as it is in the high-level API. The Bio::DB::Bam::Pileup object was described earlier in the description of the high-level pileup() method. =item $coverage = $index->coverage($bam,$tid,$start,$end [,$bins [,maxcnt]]) Calculate coverage for the region on the target sequence given by $tid between positions $start and $end (zero-based coordinates). This method will return an array reference equal to the size of the region (by default). Each element of the array will be an integer indicating the number of reads aligning over that position. If you provide an option binsize in $bins, the array will be $bins elements in length, and each element will contain the average coverage over that region as a floating point number. By default, the underlying Samtools library caps coverage counting at a fixed value of 8000. You may change this default by providing an optional numeric sixth value, which changes the cap for the duration of the call, or by invoking Bio::DB::Sam->max_pileup_cnt($new_value), which changes the cap permanently. Unfortunately there is no way of specifying that you want an unlimited cap. =back =head2 BAM header methods The Bio::DB::Bam::Header object contains information regarding the reference sequence(s) used to construct the corresponding TAM or BAM file. It is most frequently used to translate between numeric target IDs and human-readable seq_ids. Headers can be created either from reading from a .fai file with the Bio::DB::Tam->header_read2() method, or by reading from a BAM file using Bio::DB::Bam->header(). You can also create header objects from scratch, although there is not much that you can do with such objects at this point. =over 4 =item $header = Bio::DB::Bam::Header->new() Return a new, empty, header object. =item $n_targets = $header->n_targets Return the number of reference sequences in the database. =item $name_arrayref = $header->target_name Return a reference to an array of reference sequence names, corresponding to the high-level API's seq_ids. To convert from a target ID to a seq_id, simply index into this array: $seq_id = $header->target_name->[$tid]; =item $length_arrayref = $header->target_len Return a reference to an array of reference sequence lengths. To get the length of the sequence corresponding to $tid, just index into the array returned by target_len(): $length = $header->target_len->[$tid]; =item $text = $header->text =item $header->text("new value") Read the text portion of the BAM header. The text can be replaced by providing the replacement string as an argument. Note that you should follow the header conventions when replacing the header text. No parsing or other error-checking is performed. =item ($tid,$start,$end) = $header->parse_region("seq_id:start-end") Given a string in the format "seqid:start-end" (using a human-readable seq_id and 1-based start and end coordinates), parse the string and return the target ID and start and end positions in 0-based coordinates. If the range is omitted, then the start and end coordinates of the entire sequence is returned. If only the end position is omitted, then the end of the sequence is assumed. =item $header->view1($alignment) This method will accept a Bio::DB::Bam::Alignment object, convert it to a line of TAM output, and write the output to STDOUT. In the low-level API there is currently no way to send the output to a different filehandle or capture it as a string. =back =head2 Bio::DB::Bam::Pileup methods An array of Bio::DB::Bam::Pileup object is passed to the pileup() callback for each position of a multi-read alignment. Each pileup object contains information about the alignment of a single read at a single position. =over 4 =item $alignment = $pileup->alignment Return the Bio::DB::Bam::Alignment object at this level. This provides you with access to the aligning read. =item $alignment = $pileup->b An alias for alignment(), provided for compatibility with the C API. =item $pos = $pileup->qpos The position of the aligning base in the read in zero-based coordinates. =item $pos = $pileup->pos The position of the aligning base in 1-based coordinates. =item $level = $pileup->level The "level" of the read in the BAM-generated text display of the alignment. =item $indel = $pileup->indel Length of the indel at this position: 0 for no indel, positive for an insertion (relative to the reference), negative for a deletion (relative to the reference sequence.) =item $flag = $pileup->is_del True if the base on the padded read is a deletion. =item $flag = $pileup->is_refskip True if the base on the padded read is a gap relative to the reference (denoted as < or > in the pileup) =item $flag = $pileup->is_head =item $flag = $pileup->is_del These fields are undocumented in the BAM documentation, but are exported to the Perl API just in case. =back =head2 The alignment objects Please see L for documentation of the Bio::DB::Bam::Alignment and Bio::DB::Bam::AlignWrapper objects. =cut use strict; use warnings; use Carp 'croak'; use Bio::SeqFeature::Lite; use Bio::PrimarySeq; use base 'DynaLoader'; bootstrap Bio::DB::Sam; use Bio::DB::Bam::Alignment; use Bio::DB::Sam::Segment; use Bio::DB::Bam::AlignWrapper; use Bio::DB::Bam::PileupWrapper; use Bio::DB::Bam::FetchIterator; use Bio::DB::Bam::ReadIterator; use constant DUMP_INTERVAL => 1_000_000; sub new { my $class = shift; my %args = $_[0] =~ /^-/ ? @_ : (-bam=>shift); my $bam_path = $args{-bam} or croak "-bam argument required"; my $fa_path = $args{-fasta}; my $expand_flags = $args{-expand_flags}; my $split_splices = $args{-split} || $args{-split_splices}; my $autoindex = $args{-autoindex}; my $force_refseq = $args{-force_refseq}; # file existence checks unless ($class->is_remote($bam_path)) { -e $bam_path or croak "$bam_path does not exist"; -r _ or croak "is not readable"; } my $bam = Bio::DB::Bam->open($bam_path) or croak "$bam_path open: $!"; my $fai = $class->new_dna_accessor($fa_path) if $fa_path; my $self = bless { fai => $fai, bam => $bam, bam_path => $bam_path, fa_path => $fa_path, expand_flags => $expand_flags, split_splices => $split_splices, autoindex => $autoindex, force_refseq => $force_refseq, },ref $class || $class; $self->header; # catch it return $self; } sub bam { shift->{bam} } sub is_remote { my $self = shift; my $path = shift; return $path =~ /^(http|ftp):/; } sub clone { my $self = shift; $self->{bam} = Bio::DB::Bam->open($self->{bam_path}) if $self->{bam_path}; $self->{fai} = $self->new_dna_accessor($self->{fa_path}) if $self->{fa_path}; } sub header { my $self = shift; return $self->{header} ||= $self->{bam}->header; } sub bam_path { my $self = shift; return $self->{bam_path}; } sub fai { shift->{fai} } sub new_dna_accessor { my $self = shift; my $accessor = shift; return unless $accessor; if (-e $accessor) { # a file, assume it is a fasta file -r _ or croak "$accessor is not readable"; my $a = Bio::DB::Sam::Fai->open($accessor) or croak "$accessor open: $!" or croak "Can't open FASTA file $accessor: $!"; return $a; } if (ref $accessor && $self->can_do_seq($accessor)) { return $accessor; # already built } return; } sub can_do_seq { my $self = shift; my $obj = shift; return UNIVERSAL::can($obj,'seq') || UNIVERSAL::can($obj,'fetch_sequence'); } sub seq { my $self = shift; my ($seqid,$start,$end) = @_; my $fai = $self->fai or return 'N' x ($end-$start+1); return $fai->can('seq') ? $fai->seq($seqid,$start,$end) :$fai->can('fetch_sequence') ? $fai->fetch_sequence($seqid,$start,$end) :'N' x ($end-$start+1); } sub expand_flags { my $self = shift; my $d = $self->{expand_flags}; $self->{expand_flags} = shift if @_; $d; } sub split_splices { my $self = shift; my $d = $self->{split_splices}; $self->{split_splices} = shift if @_; $d; } sub autoindex { my $self = shift; my $d = $self->{autoindex}; $self->{autoindex} = shift if @_; $d; } sub force_refseq { my $self = shift; my $d = $self->{force_refseq}; $self->{force_refseq} = shift if @_; $d; } sub reset_read { my $self = shift; $self->{bam}->header; } sub n_targets { shift->header->n_targets; } sub target_name { my $self = shift; my $tid = shift; $self->{target_name} ||= $self->header->target_name; return $self->{target_name}->[$tid]; } sub target_len { my $self = shift; my $tid = shift; $self->{target_len} ||= $self->header->target_len; return $self->{target_len}->[$tid]; } sub seq_ids { my $self = shift; return @{$self->header->target_name}; } sub _cache_targets { my $self = shift; return $self->{targets} if exists $self->{targets}; my @targets = map {lc $_} @{$self->header->target_name}; my @lengths = @{$self->header->target_len}; my %targets; @targets{@targets} = @lengths; # just you try to figure out what this is doing! return $self->{targets} = \%targets; } sub length { my $self = shift; my $target_name = shift; return $self->_cache_targets->{lc $target_name}; } sub _fetch { my $self = shift; my $region = shift; my $callback = shift; my $header = $self->{bam}->header; $region =~ s/\.\.|,/-/; my ($seqid,$start,$end) = $header->parse_region($region); return unless defined $seqid; my $index = $self->bam_index; $index->fetch($self->{bam},$seqid,$start,$end,$callback,$self); } sub fetch { my $self = shift; my $region = shift; my $callback = shift; my $code = sub { my ($align,$self) = @_; $callback->(Bio::DB::Bam::AlignWrapper->new($align,$self)); }; $self->_fetch($region,$code); } sub pileup { my $self = shift; my ($region,$callback,$keep_level) = @_; my $header = $self->header; $region =~ s/\.\.|,/-/; my ($seqid,$start,$end) = $header->parse_region($region); return unless defined $seqid; my $refnames = $self->header->target_name; my $code = sub { my ($tid,$pos,$pileup) = @_; my $seqid = $refnames->[$tid]; my @p = map { Bio::DB::Bam::PileupWrapper->new($_,$self) } @$pileup; $callback->($seqid,$pos+1,\@p); }; my $index = $self->bam_index; if ($keep_level) { $index->lpileup($self->{bam},$seqid,$start,$end,$code); } else { $index->pileup($self->{bam},$seqid,$start,$end,$code); } } sub fast_pileup { my $self = shift; my ($region,$callback,$keep_level) = @_; my $header = $self->header; $region =~ s/\.\.|,/-/; my ($seqid,$start,$end) = $header->parse_region($region); return unless defined $seqid; my $refnames = $self->header->target_name; my $code = sub { my ($tid,$pos,$pileup) = @_; my $seqid = $refnames->[$tid]; $callback->($seqid,$pos+1,$pileup,$self); }; my $index = $self->bam_index; if ($keep_level) { $index->lpileup($self->{bam},$seqid,$start,$end,$code); } else { $index->pileup($self->{bam},$seqid,$start,$end,$code); } } # segment returns a segment across the reference # it will not work on a arbitrary aligned feature sub segment { my $self = shift; my ($seqid,$start,$end) = @_; if ($_[0] =~ /^-/) { my %args = @_; $seqid = $args{-seq_id} || $args{-name}; $start = $args{-start}; $end = $args{-stop} || $args{-end}; } else { ($seqid,$start,$end) = @_; } my $targets = $self->_cache_targets; return unless exists $targets->{lc $seqid}; $start = 1 unless defined $start; $end = $targets->{lc $seqid} unless defined $end; $start = 1 if $start < 1; $end = $targets->{lc $seqid} if $end > $targets->{lc $seqid}; return Bio::DB::Sam::Segment->new($self,$seqid,$start,$end); } sub get_features_by_location { my $self = shift; my %args; if ($_[0] =~ /^-/) { # named args %args = @_; } else { # positional args $args{-seq_id} = shift; $args{-start} = shift; $args{-end} = shift; } $self->features(%args); } sub get_features_by_attribute { my $self = shift; my %attributes = ref($_[0]) ? %{$_[0]} : @_; $self->features(-attributes=>\%attributes); } sub get_features_by_tag { shift->get_features_by_attribute(@_); } sub get_features_by_flag { shift->get_features_by_attribute(@_); } sub get_feature_by_name { my $self = shift; my %args; if ($_[0] =~ /^-/) { %args = @_; } else { $args{-name} = shift; } $self->features(%args); } sub get_features_by_name { shift->get_feature_by_name(@_) } sub get_feature_by_id { my $self = shift; my $id = shift; my ($name,$tid,$start,$end,$strand,$type) = map {s/%3B/;/ig;$_} split ';',$id; return unless $name && defined $tid; $type ||= 'match'; my $seqid = $self->target_name($tid); my @features = $self->features(-name=>$name, -type => $type, -seq_id=>$seqid, -start=>$start, -end=>$end, -strand=>$strand); return unless @features; return $features[0]; } sub get_seq_stream { my $self = shift; $self->features(@_,-iterator=>1); } sub get_seq_fh { my $self = shift; $self->features(@_,-fh=>1); } sub types { return qw(match read_pair coverage region chromosome); } sub features { my $self = shift; my %args; if (defined $_[0] && $_[0] !~ /^-/) { $args{-type} = \@_; } else { %args = @_; } my $seqid = $args{-seq_id} || $args{-seqid}; my $start = $args{-start}; my $end = $args{-end} || $args{-stop}; my $types = $args{-type} || $args{-types} || []; my $attributes = $args{-attributes} || $args{-tags} || $args{-flags}; my $iterator = $args{-iterator}; my $fh = $args{-fh}; my $filter = $args{-filter}; my $max = $args{-max_features}; $types = [$types] unless ref $types; $types = [$args{-class}] if !@$types && defined $args{-class}; my $use_index = defined $seqid; # we do some special casing to retrieve target (reference) sequences # if they are requested if (defined($args{-name}) && (!@$types || $types->[0]=~/region|chromosome/) && !defined $seqid) { my @results = $self->_segment_search(lc $args{-name}); return @results if @results; } elsif (@$types && $types->[0] =~ /region|chromosome/) { return map {$self->segment($_)} $self->seq_ids; } my %seenit; my @types = grep {!$seenit{$_}++} ref $types ? @$types : $types; @types = 'match' unless @types; # the filter is intended to be inserted into a closure # it will return undef from the closure unless the filter # criteria are satisfied if (!$filter) { $filter = ''; $filter .= $self->_filter_by_name(lc $args{-name}) if defined $args{-name}; $filter .= $self->_filter_by_attribute($attributes) if defined $attributes; } # Special cases for unmunged data if (@types == 1 && $types[0] =~ /^match/) { # if iterator is requested, and no indexing is possible, # then we directly iterate through the database using read1() if ($iterator && !$use_index) { $self->reset_read; my $code = eval "sub {my \$a=shift;$filter;1}"; die $@ if $@; return Bio::DB::Bam::ReadIterator->new($self,$self->{bam},$code); } # TAM filehandle retrieval is requested elsif ($fh) { return $self->_features_fh($seqid,$start,$end,$filter); } } # otherwise we're going to do a little magic my ($features,@result); for my $t (@types) { if ($t =~ /^(match|read_pair)/) { # fetch the features if type is 'match' or 'read_pair' $features = $self->_filter_features($seqid,$start,$end,$filter,undef,$max); # for "match" just return the alignments if ($t =~ /^(match)/) { push @result,@$features; } # otherwise aggregate mate pairs into two-level features elsif ($t =~ /^read_pair/) { $self->_build_mates($features,\@result); } next; } # create a coverage graph if type is 'coverage' # specify coverage:N, to create a map of N bins # units are coverage per bp # resulting array will be stored in the "coverage" attribute if ($t =~ /^coverage:?(\d*)/) { my $bins = $1; push @result,$self->_coverage($seqid,$start,$end,$bins,$filter); } } return $iterator ? Bio::DB::Bam::FetchIterator->new(\@result,$self->last_feature_count) : @result; } sub coverage2BedGraph { my $self = shift; my $fh = shift; $fh ||= \*STDOUT; my $header = $self->header; my $index = $self->bam_index; my $seqids = $header->target_name; my $lengths = $header->target_len; my $b = $self->bam; for my $tid (0..$header->n_targets-1) { my $seqid = $seqids->[$tid]; my $len = $lengths->[$tid]; my $sec_start = -1; my $last_val = -1; for (my $start=0;$start <= $len;$start += DUMP_INTERVAL) { my $end = $start+DUMP_INTERVAL; $end = $len if $end > $len; my $coverage = $index->coverage($b,$tid,$start,$end); for (my $i=0; $i<@$coverage; $i++) { if($last_val == -1) { $sec_start = 0; $last_val = $coverage->[$i]; } if($last_val != $coverage->[$i]) { print $fh $seqid,"\t",$sec_start,"\t",$start+$i,"\t",$last_val,"\n" unless $last_val == 0; $sec_start = $start+$i; $last_val = $coverage->[$i]; } elsif($start+$i == $len-1) { print $fh $seqid,"\t",$sec_start,"\t",$start+$i,"\t",$last_val,"\n" unless $last_val == 0; } } } } } sub _filter_features { my $self = shift; my ($seqid,$start,$end,$filter,$do_tam_fh,$max_features) = @_; my @result; my $action = $do_tam_fh ? '\$self->header->view1($a)' : $self->_push_features($max_features); my $user_code; if (ref ($filter) eq 'CODE') { $user_code = $filter; $filter = ''; } my $callback = defined($seqid) ? <start; $action; } INDEXED sub { my \$a = shift; $filter $action; } NONINDEXED ; my $code = eval $callback; die $@ if $@; if ($user_code) { my $new_callback = sub { my $a = shift; $code->($a) if $user_code->($a); }; $self->_features($seqid,$start,$end,$new_callback); } else { $self->_features($seqid,$start,$end,$code); } return \@result; } sub _push_features { my $self = shift; my $max = shift; # simple case -- no max specified. Will push onto an array called # @result. return 'push @result,Bio::DB::Bam::AlignWrapper->new($a,$self)' unless $max; $self->{_result_count} = 0; # otherwise we implement a simple subsampling my $code=<{_result_count}; if (\@result < $max) { push \@result,Bio::DB::Bam::AlignWrapper->new(\$a,\$self); } else { \$result[rand \@result] = Bio::DB::Bam::AlignWrapper->new(\$a,\$self) if rand() < $max/\$count; } END return $code; } sub last_feature_count { shift->{_result_count}||0 } sub _features { my $self = shift; my ($seqid,$start,$end,$callback) = @_; if (defined $seqid) { my $region = $seqid; if (defined $start) { $region .= ":$start"; $region .= "-$end" if defined $end; } $self->_fetch($region,$callback); } else { $self->reset_read; while (my $b = $self->{bam}->read1) { $callback->($b); } } } # build mate pairs sub _build_mates { my $self = shift; my ($src,$dest) = @_; my %read_pairs; for my $a (@$src) { my $name = $a->display_name; unless ($read_pairs{$name}) { my $isize = $a->isize; my $start = $isize >= 0 ? $a->start : $a->end+$isize+1; my $end = $isize <= 0 ? $a->end : $a->start+$isize-1; $read_pairs{$name} = Bio::SeqFeature::Lite->new( -display_name => $name, -seq_id => $a->seq_id, -start => $start, -end => $end, -type => 'read_pair', -class => 'read_pair', ); } my $d = $self->{split_splices}; if ($d) { my @parts = $a->get_SeqFeatures; if (!@parts) { $read_pairs{$name}->add_SeqFeature($a); } else { for my $x (@parts){ $read_pairs{$name}->add_SeqFeature($x); } } } else { $read_pairs{$name}->add_SeqFeature($a); } } for my $name (keys %read_pairs) { my $f = $read_pairs{$name}; my $primary_id = join(';', map {s/;/%3B/g; $_} ($f->display_name, ($f->get_SeqFeatures)[0]->tid, $f->start, $f->end, $f->strand, $f->type, ) ); $read_pairs{$name}->primary_id($primary_id); } push @$dest,values %read_pairs; } sub _coverage { my $self = shift; my ($seqid,$start,$end,$bins,$filter) = @_; # Currently filter is ignored. In reality, we should # turn filter into a callback and invoke it on each # position in the pileup. croak "cannot calculate coverage unless a -seq_id is provided" unless defined $seqid; my $region = $seqid; if (defined $start) { $region .= ":$start"; $region .= "-$end" if defined $end; } my $header = $self->{bam}->header; my ($id,$s,$e) = $header->parse_region($region); return unless defined $id; # parse_region may return a very high value if no end specified $end = $e >= 1<<29 ? $header->target_len->[$id] : $e; $start = $s+1; $bins ||= $end-$start+1; my $index = $self->bam_index; my $coverage = $index->coverage($self->{bam}, $id,$s,$e, $bins); return Bio::SeqFeature::Coverage->new( -display_name => "$seqid coverage", -seq_id => $seqid, -start => $start, -end => $end, -strand => 0, -type => "coverage:$bins", -class => "coverage:$bins", -attributes => { coverage => [$coverage] } ); } sub _segment_search { my $self = shift; my $name = shift; my $targets = $self->_cache_targets; return $self->segment($name) if $targets->{$name}; if (my $regexp = $self->_glob_match($name)) { my @results = grep {/^$regexp$/i} keys %$targets; return map {$self->segment($_)} @results; } return; } sub bam_index { my $self = shift; return $self->{bai} ||= Bio::DB::Bam->index($self->{bam_path},$self->autoindex); } sub _features_fh { my $self = shift; my ($seqid,$start,$end,$filter) = @_; my $result = open my $fh,"-|"; if (!$result) { # in child $self->_filter_features($seqid,$start,$end,$filter,'do_fh'); # will print TAM to stdout exit 0; } return $fh; } sub tam_fh { my $self = shift; return $self->features(-fh=>1); } sub max_pileup_cnt { my $self = shift; return Bio::DB::Bam->max_pileup_cnt(@_); } # return a fragment of code that will be placed in the eval "" filter # to eliminate alignments that don't match by name sub _filter_by_name { my $self = shift; my $name = shift; my $frag = "my \$name=\$a->qname; defined \$name or return; "; if (my $regexp = $self->_glob_match($name)) { $frag .= "return unless \$name =~ /^$regexp\$/i;\n"; } else { $frag .= "return unless lc \$name eq '$name';\n"; } } # return a fragment of code that will be placed in the eval "" filter # to eliminate alignments that don't match by attribute sub _filter_by_attribute { my $self = shift; my $attributes = shift; my $result; for my $tag (keys %$attributes) { $result .= "my \$value = lc \$a->get_tag_values('$tag');\n"; $result .= "return unless defined \$value;\n"; my @comps = ref $attributes->{$tag} eq 'ARRAY' ? @{$attributes->{$tag}} : $attributes->{$tag}; my @matches; for my $c (@comps) { if ($c =~ /^[+-]?[\deE.]+$/) { # numeric-looking argument push @matches,"CORE::length \$value && \$value == $c"; } elsif (my $regexp = $self->_glob_match($c)) { push @matches,"\$value =~ /^$regexp\$/i"; } else { push @matches,"\$value eq lc '$c'"; } } $result .= "return unless " . join (' OR ',@matches) . ";\n"; } return $result; } # turn a glob expression into a regexp sub _glob_match { my $self = shift; my $term = shift; return unless $term =~ /(?:^|[^\\])[*?]/; $term =~ s/(^|[^\\])([+\[\]^{}\$|\(\).])/$1\\$2/g; $term =~ s/(^|[^\\])\*/$1.*/g; $term =~ s/(^|[^\\])\?/$1./g; return $term; } package Bio::DB::Sam::Fai; sub open { shift->load(@_) } sub seq { my $self = shift; my ($seqid,$start,$end) = @_; my $region = $seqid; $region .= ":$start" if defined $start; $region .= "-$end" if defined $end; return $self->fetch($region) } package Bio::SeqFeature::Coverage; use base 'Bio::SeqFeature::Lite'; sub coverage { my $self = shift; my ($coverage) = $self->get_tag_values('coverage'); return wantarray ? @$coverage : $coverage; } sub source { my $self = shift; my $type = $self->type; my ($base,$width) = split ':',$type; return $width; } sub method { my $self = shift; my $type = $self->type; my ($base,$width) = split ':',$type; return $base; } sub gff3_string { my $self = shift; my $gff3 = $self->SUPER::gff3_string; my $coverage = $self->escape(join(',',$self->coverage)); $gff3 =~ s/coverage=[^;]+/coverage=$coverage/g; return $gff3; } package Bio::DB::Bam; use File::Spec; use Cwd; use Carp 'croak'; sub index { my $self = shift; my $path = shift; my $autoindex = shift; return $self->index_open_in_safewd($path) if Bio::DB::Sam->is_remote($path); if ($autoindex) { $self->reindex($path) unless -e "${path}.bai" && mtime($path) <= mtime("${path}.bai"); } croak "No index file for $path; try opening file with -autoindex" unless -e "${path}.bai"; return $self->index_open($path); } sub reindex { my $self = shift; my $path = shift; # if bam file is not sorted, then index_build will exit. # we spawn a shell to intercept this eventuality print STDERR "[bam_index_build] creating index for $path\n" if -t STDOUT; my $result = open my $fh,"-|"; die "Couldn't fork $!" unless defined $result; if ($result == 0) { # in child # dup stderr to stdout so that we can intercept messages from library open STDERR,">&STDOUT"; $self->index_build($path); exit 0; } my $mesg = <$fh>; $mesg ||= ''; close $fh; if ($mesg =~ /not sorted/i) { print STDERR "[bam_index_build] sorting by coordinate...\n" if -t STDOUT; $self->sort_core(0,$path,"$path.sorted"); rename "$path.sorted.bam",$path; $self->index_build($path); } elsif ($mesg) { die $mesg; } } # same as index_open(), but changes current wd to TMPDIR to accomodate # the C library when it tries to download the index file from remote # locations. sub index_open_in_safewd { my $self = shift; my $dir = getcwd; my $tmpdir = File::Spec->tmpdir; chdir($tmpdir); my $result = $self->index_open(@_); chdir $dir; $result; } sub mtime { my $path = shift; (stat($path))[9]; } 1; __END__ =head1 EXAMPLES For illustrative purposes only, here is an extremely stupid SNP caller that tallies up bases that are q>20 and calls a SNP if there are at least 4 non-N/non-indel bases at the position and at least 25% of them are a non-reference base. my @SNPs; # this will be list of SNPs my $snp_caller = sub { my ($seqid,$pos,$p) = @_; my $refbase = $sam->segment($seqid,$pos,$pos)->dna; my ($total,$different); for my $pileup (@$p) { my $b = $pileup->alignment; next if $pileup->indel or $pileup->is_refskip; # don't deal with these ;-) my $qbase = substr($b->qseq,$pileup->qpos,1); next if $qbase =~ /[nN]/; my $qscore = $b->qscore->[$pileup->qpos]; next unless $qscore > 25; $total++; $different++ if $refbase ne $qbase; } if ($total >= 4 && $different/$total >= 0.25) { push @SNPs,"$seqid:$pos"; } }; $sam->pileup('seq1',$snp_caller); print "Found SNPs: @SNPs\n"; =head1 GBrowse Compatibility The Bio::DB::Sam interface can be used as a backend to GBrowse (gmod.sourceforge.net/gbrowse). GBrowse can calculate and display coverage graphs across large regions, alignment cartoons across intermediate size regions, and detailed base-pair level alignments across small regions. Here is a typical configuration for a BAM database that contains information from a shotgun genomic sequencing project. Some notes: * It is important to set "search options = none" in order to avoid GBrowse trying to scan through the BAM database to match read names. This is a time-consuming operation. * The callback to "bgcolor" renders pairs whose mates are unmapped in red. * The callback to "balloon hover" causes a balloon to pop up with the read name when the user hovers over each paired read. Otherwise the default behavior would be to provide information about the pair as a whole. * When the user zooms out to 1001 bp or greaterp, the track switches to a coverage graph. [bamtest:database] db_adaptor = Bio::DB::Sam db_args = -bam /var/www/gbrowse2/databases/bamtest/ex1.bam search options= default [Pair] feature = read_pair glyph = segments database = bamtest draw_target = 1 show_mismatch = 1 bgcolor = sub { my $f = shift; return $f->get_tag_values('M_UNMAPPED') ? 'red' : 'green'; } fgcolor = green height = 3 label = sub {shift->display_name} label density = 50 bump = fast connector = dashed balloon hover = sub { my $f = shift; return '' unless $f->type eq 'match'; return 'Read: '.$f->display_name.' : '.$f->flag_str; } key = Read Pairs [Pair:1000] feature = coverage:1001 glyph = wiggle_xyplot height = 50 min_score = 0 autoscale = local To show alignment data correctly when the user is zoomed in, you should also provide a pointer to the FASTA file containing the reference genome. In this case, modify the db_args line to read: db_args = -bam /var/www/gbrowse2/databases/bamtest/ex1.bam -fasta /var/www/gbrowse2/databases/bamtest/ex1.fa =head1 SEE ALSO L, L, L =head1 AUTHOR Lincoln Stein Elincoln.stein@oicr.on.caE. Elincoln.stein@bmail.comE Copyright (c) 2009-2015 Ontario Institute for Cancer Research. This package and its accompanying libraries are free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0, the Apache 2.0 License, or the GNU General Public License (version 1 or higher). Refer to LICENSE for the full license text. =cut Bio-SamTools-1.43/lib/Bio/DB/Sam000755001751001751 012657431424 16166 5ustar00lsteinlstein000000000000Bio-SamTools-1.43/lib/Bio/DB/Sam/Segment.pm000444001751001751 435412657431424 20271 0ustar00lsteinlstein000000000000package Bio::DB::Sam::Segment; use strict; sub new { my $class = shift; my ($db,$seqid,$start,$end) = @_; return bless { db => $db, seqid => $seqid, start => $start, end => $end},ref $class || $class; } sub db { shift->{db} }; sub features { my $self = shift; my $db = $self->db; my @args; if (@_ && $_[0] !~ /^-/) { # type list @args = (-types=>\@_); } else { @args = @_; } return $db->features(-seq_id => $self->seq_id, -start => $self->start, -end => $self->end, @args); } #required by GBrowse1 sub get_feature_stream { my $self = shift; my @args = @_; my @features = $self->features(@args); return Bio::DB::Sam::Segment::Iterator->new(\@features); } # required by api sub seq_id { shift->{seqid} }; # required by GBrowse1 *ref = *abs_ref = *sourceseq = \&seq_id; # required by api sub start { shift->{start} }; # required by api sub end { shift->{end} }; # required by api sub strand { 0 }; # required by api sub length { my $self = shift; return $self->end - $self->start + 1; } # required by api sub seq { my $self = shift; return Bio::PrimarySeq->new(-seq => $self->dna, -id => $self->seq_id); } sub primary_id { shift->seq_id; } # required by api sub primary_tag { my $self = shift; return 'region'; } sub dna { my $self = shift; my $db = $self->db; $db->seq($self->seq_id,$self->start,$self->end); } # required by api sub source_tag { return 'sam/bam' } # required by api sub name { shift->seq_id } # required by api sub display_name { shift->seq_id } # required by api sub factory { shift->db } # required by api sub get_SeqFeatures { return; } # required by api sub method { shift->primary_tag } # required by GBrowse1 sub type { shift->primary_tag } # required by api sub get_tag_values { return; } # required by api sub score { return; } # required by api sub class { 'sequence' } package Bio::DB::Sam::Segment::Iterator; sub new { my $package = shift; my $features = shift; return bless $features,$package; } sub next_seq { my $self = shift; return unless @$self; my $next_feature = shift @$self; return $next_feature; } 1; Bio-SamTools-1.43/lib/Bio/DB/Sam/Constants.pm000444001751001751 437012657431424 20641 0ustar00lsteinlstein000000000000package Bio::DB::Sam::Constants; # $Id$ =head1 NAME Bio::DB::Sam::Constants -- Constants for use with SAM/BAM =head1 SYNOPSIS use Bio::DB::Sam::Constants; my $pad_flag = BAM_CPAD; =head1 DESCRIPTION This module exports several constants for use with the SAM/BAM module. See the SAM documentation for their interpretation. =over 4 =item Cigar operations BAM_CIGAR_SHIFT BAM_CIGAR_MASK BAM_CMATCH BAM_CINS BAM_CDEL BAM_CREF_SKIP BAM_CSOFT_CLIP BAM_CHARD_CLIP BAM_CPAD =item FLAGS A hashref that maps flag values to human-readable names. For example: FLAGS->{0x0008} == 'M_UNMAPPED' =item RFLAGS The reverse of FLAGS: FLAGS->{M_UNMAPPED} == 0x0008 =back =head1 SEE ALSO L, L, L =head1 AUTHOR Lincoln Stein Elincoln.stein@oicr.on.caE. Elincoln.stein@bmail.comE Copyright (c) 2009-2015 Ontario Institute for Cancer Research. This package and its accompanying libraries are free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0, the Apache 2.0 License, or the GNU General Public License (version 1 or higher). Refer to LICENSE for the full license text. =cut use strict; require Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(CIGAR_SYMBOLS BAM_CIGAR_SHIFT BAM_CIGAR_MASK BAM_CMATCH BAM_CINS BAM_CDEL BAM_CREF_SKIP BAM_CSOFT_CLIP BAM_CHARD_CLIP BAM_CPAD FLAGS RFLAGS); our @EXPORT_OK = @EXPORT; use constant CIGAR_SYMBOLS => [qw(M I D N S H P = X)]; use constant BAM_CIGAR_SHIFT => 4; use constant BAM_CIGAR_MASK => (1 << BAM_CIGAR_SHIFT) - 1; use constant BAM_CMATCH => 0; use constant BAM_CINS => 1; use constant BAM_CDEL => 2; use constant BAM_CREF_SKIP => 3; use constant BAM_CSOFT_CLIP => 4; use constant BAM_CHARD_CLIP => 5; use constant BAM_CPAD => 6; use constant FLAGS => { 0x0001 => 'PAIRED', 0x0002 => 'MAP_PAIR', 0x0004 => 'UNMAPPED', 0x0008 => 'M_UNMAPPED', 0x0010 => 'REVERSED', 0x0020 => 'M_REVERSED', 0x0040 => 'FIRST_MATE', 0x0080 => 'SECOND_MATE', 0x0100 => 'NOT_PRIMARY', 0x0200 => 'QC_FAILED', 0x0400 => 'DUPLICATE', 0x0800 => 'SUPPLEMENTARY', }; use constant RFLAGS => {reverse %{FLAGS()}}; 1; Bio-SamTools-1.43/lib/Bio/DB/Sam/SamToGBrowse.pm000444001751001751 2737212657431424 21230 0ustar00lsteinlstein000000000000package Bio::DB::Sam::SamToGBrowse; use Carp 'croak'; use Bio::DB::Sam; use File::Spec; use File::Basename 'basename'; use File::Temp 'tempfile','tmpnam'; use constant FORCE_TEMPFILES=>0; sub new { my $class = shift; my ($dir,$fasta,$debug) = @_; $dir or croak "Usage: $class->new(\$dir_to_index,[\$fasta_path])"; $fasta ||= $class->find_fasta($dir) or croak "Cannot find a suitable fasta file in $dir"; return bless { dir => $dir, fasta => $fasta, debug => $debug||0 },ref $class || $class; } sub run { my $self = shift; $self->sam_to_bam; $self->index_bam; $self->bam_to_wig; $self->make_conf; } sub dir {shift->{dir} } sub fasta {shift->{fasta} } sub debug {shift->{debug} } sub msg { my $self = shift; return unless $self->debug; print STDERR @_,"\n"; } sub err { my $self = shift; $self->{error} = "@_"; print STDERR @_,"\n"; } sub last_error { shift->{error} } sub files { my $self = shift; my @extensions = @_; # e.g. '.sam','.sam.gz'; my $dir = $self->dir; return map {glob($self->dir_path("*$_"))} @extensions; } sub mtime { my $self = shift; my $file = shift; my $mtime = (stat($file))[9]; return $mtime; } sub up_to_date { my $self = shift; my ($source,$target) = @_; return unless -e $target; return unless $self->mtime($target) >= $self->mtime($source); return 1; } sub find_fasta { my $self = shift; my $dir = shift; my @files = (glob(File::Spec->catfile($dir,"*.fa")),glob(File::Spec->catfile($dir,"*.fasta"))); return unless @files == 1; return $files[0]; } sub sam_to_bam { my $self = shift; $self->msg('Searching for SAM files'); my @sam = $self->files($self->sam_extensions); $self->msg("\t",'Found ',@sam+0,' sam files'); $self->convert_one_sam($_) foreach @sam; } sub sam_extensions { return qw(.sam .sam.gz) } sub index_bam { my $self = shift; $self->msg('Searching for BAM files'); my @bam = $self->files('.bam'); $self->msg("\t",'Found ',@bam+0,' bam files'); $self->index_one_bam($_) foreach @bam; } sub convert_one_sam { my $self = shift; my $sam = shift; my $base = basename($sam,$self->sam_extensions); my $bam = $self->dir_path("$base.bam"); my $sorted = $self->dir_path("${base}_sorted.bam"); if ($self->up_to_date($sam,$bam) or $self->up_to_date($sam,$sorted)) { $self->msg("\t","$sam: bam file is up to date"); return; } $self->msg("\t","$bam: creating"); my $fai = $self->make_fai; my $tam = Bio::DB::Tam->open($sam) or die "Could not open SAM file for reading: $!"; my $header = $tam->header_read2($fai); my $out = Bio::DB::Bam->open($bam,'w') or die "Could not open BAM file for writing: $!"; $out->header_write($header); my $alignment = Bio::DB::Bam::Alignment->new(); my $lines = 0; while ($tam->read1($header,$alignment) > 0) { $out->write1($alignment); $self->msg("\tConverted $lines lines...") if ++$lines%100000 == 0; } undef $tam; undef $out; $self->msg("\tConverted $lines lines"); $self->sort_bam($bam); } sub make_chrom_sizes { my $self = shift; my @files = $self->files('.bam'); my $sizes = $self->dir_path('chrom_sizes.txt'); open my $fh,'>',$sizes or die "$sizes: $!"; for my $f (@files) { my $b = Bio::DB::Sam->new(-bam=>$f) or die "Couldn't open $f"; for my $s (sort $b->seq_ids) { print $fh join("\t",$s,$b->length($s)),"\n"; } } close $fh; return $sizes; } sub make_fai { my $self = shift; # This is to create the .fai file. Do this in a block so that handle # goes out of scope when not needed. my $fasta = $self->fasta; -r $fasta or croak "FASTA file '$fasta' is not readable"; my $fai = $fasta.".fai"; unless ($self->up_to_date($fasta,$fai)) { my $fai = Bio::DB::Sam::Fai->load($fasta) or die "Could not load reference FASTA file for indexing this SAM file: $!"; } return $fai; } sub sort_bam { my $self = shift; my $bam = shift; $self->msg("Sorting $bam"); my $basename = basename($bam,'.bam'); my $sorted = $self->dir_path($basename.'_sorted'); Bio::DB::Bam->sort_core(0,$bam,$sorted); unlink $bam; # we don't want the unsorted version! return $sorted.'.bam'; } # This guy is a little tricky because unsorted BAM files # will terminate the process. We try to get around this by # forking and reading STDERR to see what happened (the Samtools # library is not great at returning status codes. sub index_one_bam { my $self = shift; my $bam = shift; my $idx = $bam . ".bai"; if ($self->up_to_date($bam,$idx)) { $self->msg("\t$bam: index is up to date"); return; } $self->msg("\tIndexing $bam"); my $err = $self->_fork_and_index_bam($bam); if ($err =~ /alignment is not sorted/) { $self->msg("$bam needs sorting"); $bam = $self->sort_bam($bam); $err = $self->_fork_and_index_bam($bam); } if ($err) { $self->err("\t","Could not index $bam: $err"); } else { $self->msg("\t","$bam indexed successfully"); } } sub _fork_and_index_bam { my $self = shift; my $bam = shift; my $pid = open my $pipe,"-|"; die "Couldn't fork: $!" unless defined $pid; if ($pid) { # I am the parent my $output = join '',<$pipe>; return $output; } # Otherwise, I am the child open STDERR,">&STDOUT"; # get stderr to go to the pipe Bio::DB::Bam->index_build($bam); exit 0; } sub dir_path { my $self = shift; my $filename = shift; return File::Spec->catfile($self->dir,$filename); } sub bam_to_wig { my $self = shift; my $chrom_sizes = shift; $self->msg('Searching for .bai files'); my @files = map {$self->dir_path(basename($_,'.bai'))} $self->files('.bai'); $self->msg("\t",'Found ', @files+0,' files'); $chrom_sizes ||= $self->make_chrom_sizes; $self->wiggle_one_bam($_,$chrom_sizes) foreach @files; } sub wiggle_one_bam { my $self = shift; my ($bam,$chrom_sizes) = @_; $chrom_sizes ||= $self->fasta.".fai"; die "$bam does not exist or is not readable" unless -r $bam; die "$chrom_sizes does not exist or is not readable" unless -r $chrom_sizes; my $base = basename($bam,'.bam'); my $bigwig = $self->dir_path($base.'.bw'); if ($self->up_to_date($bam,$bigwig)) { $self->msg("\t","$bam: bigwig is up to date"); return; } if (!$self->bedgraph_path && -r '/dev/stdin' && -c _) { # only works with linux, I think $self->_wiggle_one_bam_pipe($bam,$bigwig,$chrom_sizes); } else { $self->_wiggle_one_bam_tempfile($bam,$bigwig,$chrom_sizes); } } sub _wiggle_one_bam_pipe { my $self = shift; my ($bam,$bigwig,$chrom_sizes) = @_; my $pid = open my $pipe,"|-"; defined $pid or die "Couldn't fork: $!"; if ($pid) { # I'm the parent; my job is to write the coverage data to stdout $self->write_coverage($bam,$pipe); close $pipe; return; } else { # I'm the child; my job is to create the BigWig file from /dev/stdin $self->msg("Writing bigwig file"); $self->make_bigwig_file('/dev/stdin',$chrom_sizes,$bigwig); exit 0; } } # we are using the low-level interface here in order to eke # out all possible performance. sub write_coverage { my $self = shift; my ($bamfile,$fh) = @_; $self->msg("Calculating coverage for $bamfile"); if (my $bam2bedgraph = $self->bam2bedgraph) { $self->msg("\t",'bam2bedgraph found in path; will use it to calculate coverage graph.'); open my $gcb,"$bam2bedgraph '$bamfile' |" or die "Couldn't open $bam2bedgraph pipe: $!"; while (<$gcb>) { print $fh $_; } close $gcb; return; } else { # if we get here we are doing it ourselves my $bam = Bio::DB::Sam->new(-bam=>$bamfile) or die "Couldn't open $bamfile: $!"; $bam->coverage2BedGraph($fh); } } sub _wiggle_one_bam_tempfile { my $self = shift; my ($bam,$bigwig,$chrom_sizes) = @_; my $tmpfh = File::Temp->new(TEMPLATE => 'wigfileXXXXX', UNLINK => 1, DIR => $self->dir, SUFFIX => '.wig'); my $time = time(); $self->write_coverage($bam,$tmpfh); print STDERR time()-$time," seconds\n"; close $tmpfh; $self->msg("Writing bigwig file"); $self->make_bigwig_file($tmpfh,$chrom_sizes,$bigwig); } sub make_conf { my $self = shift; my $conf = $self->dir_path('gbrowse.conf'); my $existing_config = -e $conf ? $self->parse_conf($conf) : {}; my %tracks = map { basename($_,'.bw')=>1 } $self->files('.bw'); my @new = grep { !$existing_config->{$_} } keys %tracks; my $newfile = "$conf.new"; open my $f,">",$newfile or die "$newfile: $!"; for my $track (sort keys %tracks) { if ($existing_config->{$track}) { print $f $existing_config->{$track}; } else { print $f $self->make_gbrowse_conf($track); } } close $f; rename $newfile,$conf; } sub parse_conf { my $self = shift; my $conf = shift; open my $f,$conf or die "$conf: $!"; my ($current,%data); while (<$f>) { if (/^\[([^:]+)/) { $current = $1; $data{$current} = $_; } elsif ($current) { $data{$current} .= $_; } } return \%data; } sub bedgraph_path { my $self = shift; return $self->{_bedgraph_path} ||= $self->search_for_binary('bedGraphToBigWig'); } sub bam2bedgraph { my $self = shift; return $self->{_genomeCoverageBed} ||= $self->search_for_binary('bam2bedgraph'); } sub search_for_binary { my $self = shift; my $target = shift; my @path = split ':',$ENV{PATH}; for my $d (@path) { my $tgt = File::Spec->catfile($d,$target); return $tgt if -e $tgt && -x _; } return; } sub make_bigwig_file { my $self = shift; my ($infile,$chrom_sizes,$outfile) = @_; my $bedpath = $self->bedgraph_path; if ($bedpath) { $self->msg("\t",'Found bedGraphToBigWig in path. Will use it to create BigWig index.'); # BUG: potential race condition here, but fastCGI prevents us from # redirecting STDERR my $error_file = tmpnam(); system("$bedpath '$infile' '$chrom_sizes' '$outfile' 2>$error_file"); if (-s $error_file) { open (F,'<',$error_file); my $err = ; $self->err("bedGraphToBigWig exited with an error: \"$err\". $outfile will be removed."); unlink $outfile; } unlink $error_file; } else { $self->err('WARNING: No bedGraphToBigWig found in path. Will use memory-intensive library function to create BigWig index.'); Bio::DB::BigFile->createBigWig($infile,$chrom_sizes,$outfile); } } sub make_gbrowse_conf { my $self = shift; my $track = shift; $self->msg("Creating gbrowse stanza for $track"); my $fasta = File::Spec->rel2abs($self->fasta); my $bam = File::Spec->rel2abs($self->dir_path("$track.bam")); my $bw = File::Spec->rel2abs($self->dir_path("$track.bw")); (my $key = $track) =~ s/_sorted//; my $result = < '$bw', -fasta => Bio::DB::Sam::Fai->open('$fasta'), ); } [$track] database = $track feature = read_pair glyph = segments draw_target = 1 show_mismatch= 1 mismatch_only = 1 mismatch_color = orange indel_color = yellow bgcolor = black fgcolor = black height = 4 label = 1 label_position = left label density = 50 bump = fast connector = sub { my \$glyph = pop; return \$glyph->level == 0 ? 'dashed' : 'solid'; } maxdepth = 2 box_subparts = 2 key = Reads from $key [$track:2000] database = ${track}_bw feature = summary glyph = wiggle_whiskers height = 20 END } 1; Bio-SamTools-1.43/lib/Bio/DB/Bam000755001751001751 012657431424 16145 5ustar00lsteinlstein000000000000Bio-SamTools-1.43/lib/Bio/DB/Bam/FetchIterator.pm000444001751001751 51712657431424 21366 0ustar00lsteinlstein000000000000package Bio::DB::Bam::FetchIterator; use strict; sub new { my $self = shift; my $list = shift; my $total= shift; $total ||= @$list; return bless {list=>$list, total=>$total},ref $self || $self; } sub next_seq { my $self = shift; return shift @{$self->{list}}; } sub total { shift->{total}; } 1; Bio-SamTools-1.43/lib/Bio/DB/Bam/Target.pm000444001751001751 202612657431424 20066 0ustar00lsteinlstein000000000000package Bio::DB::Bam::Target; use strict; use base 'Bio::DB::Bam::Query'; =head1 NAME Bio::DB::Bam::Target -- Object representing the query portion of a BAM/SAM alignment in NATIVE alignment =head1 SYNOPSIS This is identical to Bio::DB::Bam::Query, except that the dna, qscores and start and end positions are all given in the orientation in which the read was sequenced, not in the oreintation in which it was aligned. =cut sub dna { my $self = shift; my $qseq = $self->SUPER::dna; return $$self->strand > 0 ? $qseq : reversec($qseq); } sub qscore { my $self = shift; my @qscore = $$self->qscore; @qscore = reverse @qscore if $$self->strand < 0; return wantarray ? @qscore : \@qscore; } sub start { my $self = shift; return $self->strand > 0 ? $self->low : $self->high; } sub end { my $self = shift; return $self->strand > 0 ? $self->high : $self->low; } # sub strand { 1 } sub reversec { my $dna = shift; $dna =~ tr/gatcGATC/ctagCTAG/; return scalar reverse $dna; } 1; Bio-SamTools-1.43/lib/Bio/DB/Bam/PileupWrapper.pm000444001751001751 354312657431424 21444 0ustar00lsteinlstein000000000000package Bio::DB::Bam::PileupWrapper; #$Id$ =head1 NAME Bio::DB::Bam::PileupWrapper -- Add high-level methods to Bio::DB::Bam::Pileup =head1 SYNOPSIS See L for usage of the pileup() method. =head1 DESCRIPTION See L for documentation of this object's methods. This class is used by the high-level API to return Bio::DB::Bam::AlignWrapper objects from the call to alignment() rather than Bio::DB::Bam::Alignment. =head1 SEE ALSO L, L, L =head1 AUTHOR Lincoln Stein Elincoln.stein@oicr.on.caE. Elincoln.stein@bmail.comE Copyright (c) 2009-2015 Ontario Institute for Cancer Research. This package and its accompanying libraries are free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0, the Apache 2.0 License, or the GNU General Public License (version 1 or higher). Refer to LICENSE for the full license text. =cut use strict; use Bio::DB::Bam::AlignWrapper; our $AUTOLOAD; use Carp 'croak'; sub new { my $package = shift; my ($align,$sam) = @_; return bless {sam => $sam, pileup => $align},ref $package || $package; } sub AUTOLOAD { my($pack,$func_name) = $AUTOLOAD=~/(.+)::([^:]+)$/; return if $func_name eq 'DESTROY'; no strict 'refs'; $_[0] or die "autoload called for non-object symbol $func_name"; croak qq(Can't locate object method "$func_name" via package "$pack") unless $_[0]->{pileup}->can($func_name); *{"${pack}::${func_name}"} = sub { shift->{pileup}->$func_name(@_) }; shift->$func_name(@_); } sub can { my $self = shift; return 1 if $self->SUPER::can(@_); return $self->{pileup}->can(@_); } sub alignment { my $self = shift; return Bio::DB::Bam::AlignWrapper->new($self->{pileup}->b,$self->{sam}); } 1; Bio-SamTools-1.43/lib/Bio/DB/Bam/ReadIterator.pm000444001751001751 62212657431424 21205 0ustar00lsteinlstein000000000000package Bio::DB::Bam::ReadIterator; use strict; sub new { my $self = shift; my ($sam,$bam,$filter) = @_; return bless {sam => $sam, bam => $bam, filter=> $filter},ref $self || $self; } sub next_seq { my $self = shift; while (my $b = $self->{bam}->read1) { return Bio::DB::Bam::AlignWrapper->new($b,$self->{sam}) if $self->{filter}->($b); } return; } 1; Bio-SamTools-1.43/lib/Bio/DB/Bam/AlignWrapper.pm000444001751001751 2722512657431424 21263 0ustar00lsteinlstein000000000000package Bio::DB::Bam::AlignWrapper; # $Id$ =head1 NAME Bio::DB::Bam::AlignWrapper -- Add high-level methods to Bio::DB::Bam::Alignment =head1 SYNOPSIS See L. =head1 DESCRIPTION This is a wrapper around Bio::DB::Bam::Alignment that adds the following high-level methods. These are described in detail in L. add_segment() add a new subfeature to split alignments get_SeqFeatures() fetch subfeatures from split alignments split_splices() process cigar strings to produce split alignments expand_flags() return true if flags should be expanded into tags seq_id() return human-readable reference sequence name seq() return Bio::PrimarySeq object for reference sequence subseq() return a subsequence across the indicated range mate_seq_id() return human-readable mate reference sequence name dna() return the DNA of the reference sequence tam_line() return the text representation of the alignment attributes() synonym for get_tag_values() get_all_tags() return all tag names get_tag_values() return the values of the given tag has_tag() return true if the given tag is defined =head1 SEE ALSO L, L, L =head1 AUTHOR Lincoln Stein Elincoln.stein@oicr.on.caE. Elincoln.stein@bmail.comE Copyright (c) 2009-2015 Ontario Institute for Cancer Research. This package and its accompanying libraries are free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0, the Apache 2.0 License, or the GNU General Public License (version 1 or higher). Refer to LICENSE for the full license text. =cut use strict; use Bio::DB::Sam::Constants; our $AUTOLOAD; use Carp 'croak'; sub new { my $package = shift; my ($align,$sam) = @_; my $self = bless {sam => $sam, align => $align},ref $package || $package; $self->add_segment($self->split_splices) if $sam->split_splices && $align->cigar_str =~ /N/; return $self; } sub AUTOLOAD { my($pack,$func_name) = $AUTOLOAD=~/(.+)::([^:]+)$/; return if $func_name eq 'DESTROY'; no strict 'refs'; $_[0] or die "autoload called for non-object symbol $func_name"; croak qq(Can't locate object method "$func_name" via package "$pack") unless $_[0]->{align}->can($func_name); *{"${pack}::${func_name}"} = sub { shift->{align}->$func_name(@_) }; shift->$func_name(@_); } sub score {shift->{align}->qual} sub can { my $self = shift; return 1 if $self->SUPER::can(@_); return ref $self && $self->{align}->can(@_); } sub add_segment { my $self = shift; my @subfeat = @_; $self->{segments} ||= []; push @{$self->{segments}},@subfeat; } sub get_SeqFeatures { my $self = shift; return unless $self->{segments}; return @{$self->{segments}}; } sub split_splices { my $self = shift; my $cigar = $self->cigar_array; my @results; my $start = 0; my $end = 0; my $skip = 0; my $partial_cigar = ''; # in case sequence is missing? my $qseq = $self->qseq; $qseq ||= 'N' x $self->length; for my $op (@$cigar,['N',0]) { my ($operation,$count) = @$op; if ($operation eq 'N') { my $s = $self->start + $start + $skip; my $e = $self->start + $end - 1 + $skip; my $f = Bio::DB::Bam::SplitAlignmentPart->new(-name => $self->display_name, -start => $s, -end => $e, -seq_id => $self->seq_id, -strand => $self->strand, -seq => [$self,$start+$skip,$end-$start], # deferred rendering -type => $self->type); $f->hit(-name => $self->display_name, -seq_id => $self->display_name, -start => $start+1, -end => $end, -strand => $self->strand, -seq => substr($qseq,$start,$end-$start), ); $f->cigar_str($partial_cigar); $partial_cigar = ''; push @results,$f; $start += $end-$start; } else { $partial_cigar .= "$operation$count"; } $end += $count if $operation =~ /^[MDSHP=X]/i; $skip += $count if $operation eq 'N'; if ($operation eq 'H' and $start == 0) { $qseq = 'N' x $count . $qseq; } } return @results; } sub expand_flags { shift->{sam}->expand_flags(@_); } sub query { my $self = shift; return Bio::DB::Bam::Query->new($self); } sub target { my $self = shift; return Bio::DB::Bam::Target->new($self); } sub hit { shift->target(@_); } sub seq_id { my $self = shift; my $tid = $self->tid; return if $tid < 0 || $self->unmapped; $self->{sam}->target_name($tid); } sub mate_seq_id { my $self = shift; my $tid = $self->mtid; return if $tid < 0 || $self->munmapped; $self->{sam}->target_name($tid); } sub abs_ref { shift->seq_id } sub abs_start { shift->start } sub abs_end { shift->end } sub low { shift->start } sub high { shift->end } sub type { shift->primary_tag } sub method { shift->primary_tag } sub source { return shift->source_tag; } sub name { shift->qname } sub class { shift->primary_tag } sub seq { my $self = shift; my $dna = $self->dna; return Bio::PrimarySeq->new(-seq => $dna, -id => $self->seq_id); } sub subseq { my $self = shift; my ($start,$end) = @_; $start = 1 if $start < 1; $end = $self->high if $end > $self->high; my $dna = $self->dna; return Bio::PrimarySeq->new(-seq=>substr($dna, $start-1, $end-$start+1) ); } sub padded_alignment { my $self = shift; my $cigar = $self->cigar_array; my $real_ref = 0; $real_ref = 1 if($self->{sam}->force_refseq || !$self->has_tag('MD')); my $sdna = $self->dna; my $tdna = $self->query->dna; my ($pad_source,$pad_target,$pad_match, $char_source, $char_target); for my $event (@$cigar) { my ($op,$count) = @$event; if ($op eq 'I' || $op eq 'S') { $pad_source .= '-' x $count; $pad_target .= substr($tdna,0,$count,''); $pad_match .= ' ' x $count; } elsif ($op eq 'D') { $pad_source .= substr($sdna,0,$count,''); $pad_target .= '-' x $count; $pad_match .= ' ' x $count; } elsif ($op eq 'N') { if($real_ref) { $pad_source .= substr($sdna,0,$count,''); } else { $pad_source .= '-' x $count; } $pad_target .= '-' x $count; $pad_match .= ' ' x $count; } elsif ($op eq 'P') { $pad_source .= '*' x $count; $pad_target .= '*' x $count; $pad_match .= ' ' x $count; } elsif ($op eq 'H') { # nothing needs to be done in this case } else { # everything else is assumed to be a match while($count-- > 0) { $char_source = substr($sdna,0,1,''); $char_target = substr($tdna,0,1,''); $pad_source .= $char_source; $pad_target .= $char_target; $pad_match .= $char_source eq $char_target ? '|' : ' '; } } } return ($pad_source,$pad_match,$pad_target); } sub dna { my $self = shift; my $sam = $self->{sam}; my $force = $sam->force_refseq; if (!$force && (my $md = $self->get_tag_values('MD'))) { # try to use MD string my $qseq = $self->qseq; #preprocess qseq using cigar array my $cigar = $self->cigar_array; my $seq = ''; for my $op (@$cigar) { my ($operation,$count) = @$op; if ($operation eq 'M' || $operation eq '=' || $operation eq 'X') { $seq .= substr($qseq,0,$count,''); # include these residues } elsif ($operation eq 'S' or $operation eq 'I') { substr($qseq,0,$count,''); # skip soft clipped and inserted residues } } my $start = 0; my $result; while ($md =~ /(\d+)|\^([gatcn]+)|([gatcn]+)/ig) { if (defined $1) { $result .= substr($seq,$start,$1); $start += $1; } elsif ($2) { $result .= $2; } elsif ($3) { $result .= $3; $start += length $3; } } return $result; } else { return $self->{sam}->seq($self->seq_id,$self->start,$self->end); } } sub tseq { shift->dna(@_); } sub attributes { my $self = shift; my $tag = shift; if (defined $tag) { return $self->get_tag_values($tag); } else { return map {$_=>$self->get_tag_values($_)} $self->get_all_tags; } } sub get_all_tags { my $self = shift; return $self->{align}->get_all_tags(@_) if $self->expand_flags; return ($self->aux_keys,'FLAGS'); } sub get_tag_values { my $self = shift; my $tag = shift; defined $tag or return; return $self->{align}->get_tag_values($tag) if $self->expand_flags; if ($tag eq 'FLAGS') { $self->flag_str; } else { $self->aux_get($tag); } } sub has_tag { my $self = shift; my $tag = shift; defined $tag or return; $self->{align}->get_tag_values($tag) if $self->expand_flags; if ($tag eq 'FLAGS') { return 1; } else { my %keys = map {$_=>1} $self->aux_keys; return exists $keys{uc $tag}; } } sub gff_string { shift->gff3_string(@_) } sub gff3_string { my $self = shift; my $recurse = shift; my $parent_id = shift; my $group = $self->format_attributes($parent_id); my $name = $self->name; my $id = $self->primary_id; my $class = $self->class; my $strand = ('-','.','+')[$self->strand+1]; my $p = join("\t", $self->seq_id||'.', $self->source||'.', $self->method||'.', $self->start||'.', $self->stop||'.', defined($self->score) ? $self->score : '.', $strand||'.', defined($self->phase) ? $self->phase : '.', $group||''); my @rsf = $self->get_SeqFeatures; return join("\n", $p, map {$_->gff3_string($id)} @rsf); } sub phase { return } sub escape { my $self = shift; my $toencode = shift; $toencode =~ s/([^a-zA-Z0-9_.:?^*\(\)\[\]@!+-])/uc sprintf("%%%02x",ord($1))/eg; $toencode; } sub format_attributes { my $self = shift; my $parent_id = shift; my @tags = $self->get_all_tags; my @result; for my $t (@tags) { my @values = $self->each_tag_value($t); push @result,join '=',$self->escape($t),join(',', map {$self->escape($_)} @values) if @values; } my $id = $self->escape($self->primary_id); my $name = $self->display_name; unshift @result,"ID=".$id if defined $id; unshift @result,"Parent=".$parent_id if defined $parent_id; unshift @result,"Name=".$self->escape($name) if defined $name; return join ';',@result; } sub tam_line { my $self = shift; return join ("\t", $self->qname, $self->flag, $self->tid >= 0 ? $self->{sam}->target_name($self->tid) : '*', $self->pos+1, $self->qual, $self->cigar_str || '*', $self->mtid >= 0 ? ($self->mtid == $self->tid ? '=' : $self->{sam}->target_name($self->mtid)) : '*', $self->mpos+1, $self->isize, $self->qseq, join('',map{chr($_+33)} $self->qscore), $self->aux || () ); } package Bio::DB::Bam::SplitAlignmentPart; use base 'Bio::SeqFeature::Lite'; sub hit { my $self = shift; my $d = $self->{hit}; $self->{hit} = Bio::SeqFeature::Lite->new(@_) if @_; return $d; } sub seq { my $self = shift; my $seq = $self->{seq}; return $self->SUPER::seq() unless ref $seq; return substr($seq->[0]->dna,$seq->[1],$seq->[2]); } sub Bio::SeqFeature::Lite::subseq { my $self = shift; my ($start,$end) = @_; $start = 1 if $start < 1; $end = $self->high if $end > $self->high; return Bio::PrimarySeq->new(-seq=>substr($self->dna, $start-1, $end-$start+1) ); } sub cigar_str { my $self = shift; my $d = $self->{cigar_str}; $self->{cigar_str} = shift if @_; $d; } 1; Bio-SamTools-1.43/lib/Bio/DB/Bam/Alignment.pm000444001751001751 4233312657431424 20603 0ustar00lsteinlstein000000000000package Bio::DB::Bam::Alignment; # $Id$ =head1 NAME Bio::DB::Bam::Alignment -- The SAM/BAM alignment object =head1 SYNOPSIS use Bio::DB::Sam; my $sam = Bio::DB::Sam->new(-fasta=>"data/ex1.fa", -bam =>"data/ex1.bam"); my @alignments = $sam->get_features_by_location(-seq_id => 'seq2', -start => 500, -end => 800); for my $a (@alignments) { my $seqid = $a->seq_id; my $start = $a->start; my $end = $a->end; my $strand = $a->strand; my $ref_dna= $a->dna; my $query_start = $a->query->start; my $query_end = $a->query->end; my $query_strand = $a->query->strand; my $query_dna = $a->query->dna; my $cigar = $a->cigar_str; my @scores = $a->qscore; # per-base quality scores my $score = $a->qstring; # TAM-style quality string my $match_qual= $a->qual; # quality of the match my $paired = $a->get_tag_values('PAIRED'); } =head1 DESCRIPTION The Bio::DB::Bam::Alignment and Bio::DB::Bam::AlignWrapper classes together represent an alignment between a sequence read (the "query") and a reference sequence (the "target"). Bio::DB::Bam::Alignment adheres strictly to the C-level BAM library's definition of a bam1_t* and is used in the Bio::DB::Sam low-level API The latter adds convenience methods that make it similar to a BioPerl Bio::SeqFeatureI object. This manual page describes both. =head1 High-level Bio::DB::Bam::Alignment methods These methods are provided by Bio::DB::Bam::Alignment, and are intended to be compatible with the Bio::SeqFeatureI interfaces. Note that these objects are B compatible with Bio::Align::AlignI, as the BAM API is fundamentally incompatible with the BioPerl API for alignments (the first deals with the alignment of a single read against the reference sequence, while the second deals with a multiple alignment). Note that the high-level API return Bio::DB::Bam::AlignWrapper objects B in the case of the callback to the fast_pileup() method. In this case only, the object returned by calling $pileup->b() is a Bio::DB::Bam::Alignment object for performance reasons. =over 4 =item $seq_id = $align->seq_id Return the seq_id of the reference (target) sequence. This method is only available in the Bio::DB::Bam::AlignWrapper extension. =item $start = $align->start Return the start of the alignment in 1-based reference sequence coordinates. =item $end = $align->end Return the end of the alignment in 1-based reference sequence coordinates. =item $len = $align->length Return the length of the alignment on the reference sequence. =item $mseqid = $align->mate_seq_id Return the seq_id of the mate's reference (target) sequence. This method is only available in the Bio::DB::AlignWrapper extension. =item $mstart = $align->mate_start For paired reads, return the start of the mate's alignment in 1-based reference sequence coordinates. =item $mend = $align->mate_end For paired reads, return the end position of the mate's alignment in 1-based reference sequence coordinates. =item $mlen = $align->mate_len For mate-pairs, retrieve the length of the mate's alignment on the reference sequence. =item $strand = $align->strand Return the strand of the alignment as -1 for reversed, +1 for forward. NOTE: In versions 1.00-1.06, this method always returned +1. As of version 1.07, this behavior is fixed. =item $mstrand = $align->mstrand If the read has a mate pair, return the strand of the mate in the format -1 or +1. =item $ref_dna = $align->dna Returns the B sequence's DNA across the aligned region. If an MD tag is present in the alignment, it will be used preferentially to reconstruct the reference sequence. Otherwise the reference DNA access object passed to Bio::DB::Sam->new() will be used. =item $ref_dna = $align->seq The B sequence's DNA as a Bio::PrimarySeqI object (useful for passing to BioPerl functions and for calculating subsequences and reverse complements). =item $query = $align->query This method returns a Bio::DB::Alignment::Query object that can be used to retrieve information about the query sequence. The next few entries show how to use this object. =item $read_name = $align->query->name The name of the read. =item $q_start = $align->query->start This returns the start position of the query (read) sequence in 1-based coordinates. It acts via a transient Bio::DB::Bam::Query object that is provided for Bio::Graphics compatibility (see L). =item $q_end = $align->query->end This returns the end position of the query sequence in 1-based coordinates. =item $q_len = $align->query->length Return the length of the alignment on the read. =item $scores = $align->query->score Return an array reference containing the unpacked quality scores for each base of the query sequence. The length of this array reference will be equal to the length of the read. =item $read_dna = $align->query->dna The read's DNA string. =item $read_seq = $align->query->seq The read's DNA as a Bio::PrimarySeqI object. =item $target = $align->target; The target() method is similar to query(), except that it follows Bio::AlignIO conventions for how to represent minus strand alignments. The object returned has start(), end(), qscore(), dna() and seq() methods, but for minus strand alignments the sequence will be represented as it appears on the reverse strand, rather than on the forward strand. This has the advantage of giving you the read as it came off the machine, before being reverse complemented for use in the SAM file. =item $query = $align->hit The hit() method is identical to target() and returns information about the read. It is present for compatibility with some of the Bio::Graphics glyphs, which use hit() to represent the non-reference sequence in aligned sequences. =item $primary_id = $align->primary_id This method synthesizes a unique ID for the alignment which can be passed to $sam->get_feature_by_id() to retrieve the alignment at a later date. =item @tags = $align->get_all_tags Return all tag names known to this alignment. This includes SAM flags such as M_UNMAPPED, as well as auxiliary flags such as H0. The behavior of this method depends on the value of -expand_flags when the SAM object was created. If false (the default), then the standard SAM flags will be concatenated together into a single string and stored in a tag named 'FLAGS'. The format of this tag value is the list of one or more flag constants separated by the "|" character, as in: "PAIRED|MAP_PAIR|REVERSED|SECOND_MATE". If -expand_flags was true, then each flag becomes its own named tag, such as "MAP_PAIR". =item @values = $align->get_tag_values($tag) Given a tag name, such as 'PAIRED' or 'H0', return its value(s). -expand_flags must be true in order to use the standard SAM flag constants as tags. Otherwise, they can be fetched by asking for the "FLAGS" tag, or by using the low-level methods described below. =item $is_true = $align->has_tag($tag) Return true if the alignment has the indicated tag. =item $string = $align->cigar_str Return the CIGAR string for this alignment in conventional human readable format (e.g. "M34D1M1"). =item $arrayref = $align->cigar_array Return a reference to an array representing the CIGAR string. This is an array of arrays, in which each subarray consists of a CIGAR operation and a count. Example: [ ['M',34], ['D',1], ['M1',1] ] =item ($ref,$matches,$query) = $align->padded_alignment Return three strings that show the alignment between the reference sequence (the target) and the query. It will look like this: $ref AGTGCCTTTGTTCA-----ACCCCCTTGCAACAACC $matches |||||||||||||| ||||||||||||||||| $query AGTGCCTTTGTTCACATAGACCCCCTTGCAACAACC =item $str = $align->aux Returns the text version of the SAM tags, e.g. "XT:A:M NM:i:2 SM:i:37 AM:i:37 XM:i:1 XO:i:1 XG:i:1 MD:Z:6^C0A47" =item $str = $align->tam_line Returns the TAM (text) representation of the alignment (available in the high-level "AlignWrapper" interface only). =item $tag = $align->primary_tag This is provided for Bio::SeqFeatureI compatibility. Return the string "match". =item $tag = $align->source_tag This is provided for Bio::SeqFeatureI compatibility. Return the string "sam/bam". =item @parts = $align->get_SeqFeatures Return subfeatures of this alignment. If you have fetched a "read_pair" feature, this will be the two mate pair objects (both of type Bio::DB::Bam::AlignWrapper). If you have -split_splices set to true in the Bio::DB::Sam database, calling get_SeqFeatures() will return the components of split alignments. See L for an example of how to use this. =back =head1 Low-level Bio::DB::Bam::Alignment methods These methods are available to objects of type Bio::DB::Bam::Alignment as well as Bio::DB::Bam::AlignWrapper and closely mirror the native C API. =over 4 =item $align = Bio::DB::Bam::Alignment->new Create a new, empty alignment object. This is usually only needed when iterating through a TAM file using Bio::DB::Tam->read1(). =item $tid = $align->tid( [$new_tid] ) Return the target ID of the alignment. Optionally you may change the tid by providing it as an argument (currently this is the only field that you can change; the functionality was implemented as a proof of principle). =item $read_name = $align->qname Returns the name of the read. =item $pos = $align->pos 0-based leftmost coordinate of the aligned sequence on the reference sequence. =item $end = $align->calend The 0-based rightmost coordinate of the aligned sequence on the reference sequence after taking alignment gaps into account. =item $len = $align->cigar2qlen The length of the query sequence calculated from the CIGAR string. =item $quality = $align->qual The quality score for the alignment as a whole. =item $flag = $align->flag The bitwise flag field (see the SAM documentation). =item $mtid = $align->mtid For paired reads, the target ID of the mate's alignemnt. =item $mpos = $align->mpos For paired reads, the 0-based leftmost coordinate of the mate's alignment on the reference sequence. =item $n_cigar = $align->n_cigar Number of CIGAR operations in this alignment. =item $length = $align->l_qseq The length of the query sequence (the read). =item $dna = $align->qseq The actual DNA sequence of the query. As in the SAM file, reads that are aligned to the minus strand of the reference are returned in reverse complemented form. =item $score_str = $align->_qscore A packed binary string containing the quality scores for each base of the read. It will be the same length as the DNA. You may unpack it using unpack('C*',$score_str), or use the high-level qscore() method. =item $score_arry = $align->qscore =item @score_arry = $align->qscore In a scalar context return an array reference containing the unpacked quality scores for each base of the query sequence. In a list context return a list of the scores. This array is in the same orientation as the reference sequence. =item $score_str = $align->qstring Returns the quality string in the same format used in the SAM (TAM) file. =item $length = $align->isize The calculated insert size for mapped paired reads. =item $length = $align->l_aux The length of the align "auxiliary" data. =item $value = $align->aux_get("tag") Given an auxiliary tag, such as "H0", return its value. =item @keys = $align->aux_keys Return the list of auxiliary tags known to this alignment. =item $data = $align->data Return a packed string containing the alignment data (sequence, quality scores and cigar string). =item $length = $align->data_len Return the current length of the alignment data. =item $length = $align->m_data Return the maximum length of the alignment data. =item $is_paired = $align->paired Return true if the aligned read is part of a mate/read pair (regardless of whether the mate mapped). =item $is_proper = $align->proper_pair Return true if the aligned read is part of a mate/read pair and both partners mapped to the reference sequence. =item $is_unmapped = $align->unmapped Return true if the read failed to align. =item $mate_is_unmapped = $align->munmapped Return true if the read's mate failed to align. =item $reversed = $align->reversed Return true if the aligned read was reverse complemented prior to aligning. =item $mate_reversed = $align->mreversed Return true if the aligned read's mate was reverse complemented prior to aligning. =item $isize = $align->isize For mate-pairs, return the computed insert size. =item $arrayref = $align->cigar This returns the CIGAR data in its native BAM format. You will receive an arrayref in which each operation and count are packed together into an 8-bit structure. To decode each element you must use the following operations: use Bio::DB::Sam::Constants; my $c = $align->cigar; my $op = $c->[0] & BAM_CIGAR_MASK; my $len = $c->[0] >> BAM_CIGAR_SHIFT; =back =cut use strict; use warnings; use Bio::DB::Bam::Query; use Bio::DB::Bam::Target; use Bio::DB::Sam::Constants; sub each_tag_value { shift->get_tag_values(@_) } sub get_tag_values { my $self = shift; my $tag = shift; defined $tag or return; if (my $mask = RFLAGS->{uc $tag}) { # special tag # to avoid warnings when making numeric comps return ($self->flag & $mask) == 0 ? 0 : 1; } elsif ($tag eq 'FLAGS') { $self->flag_str; } else { $self->aux_get($tag); } } sub has_tag { my $self = shift; my $tag = shift; defined $tag or return; if (my $mask = RFLAGS->{uc $tag}) { # special tag return 1; } elsif ($tag eq 'FLAGS') { return 1; } else { my %keys = map {$_=>1} $self->aux_keys; return exists $keys{uc $tag}; } } sub get_all_tags { my $self = shift; my @aux_tags = $self->aux_keys; my @flag_tags = keys %{RFLAGS()}; return (@aux_tags,@flag_tags); } sub start { my $self = shift; return if $self->pos < 0 || $self->unmapped; return $self->pos+1; } sub end { my $self = shift; return if $self->unmapped; return $self->calend; } sub stop { shift->end } # in SAM format, alignment is always to the forward strand sub strand { return shift->reversed ? -1 : 1; } sub abs_strand { shift->strand } sub mstrand { my $self = shift; return $self->mreversed ? -1 : 1; } sub display_name { return shift->qname; } sub qscore { my $self = shift; my $scores = $self->_qscore; my @scores = unpack('C*',$scores); return wantarray ? @scores : \@scores; } sub qstring { return join('',map{chr($_+33)} shift->qscore); } sub primary_id { my $self = shift; return join ';', map {s/;/%3B/g; $_} ($self->display_name, $self->tid, $self->start, $self->end, $self->strand); } sub cigar_str { my $self = shift; my $cigar = $self->cigar; my $result = ''; for my $c (@$cigar) { my $op = $c & BAM_CIGAR_MASK; my $l = $c >> BAM_CIGAR_SHIFT(); my $symbol = CIGAR_SYMBOLS()->[$op]; $result .= "${l}${symbol}"; } return $result; } sub cigar_array { my $self = shift; my $cigar = $self->cigar; my @result; for my $c (@$cigar) { my $op = $c & BAM_CIGAR_MASK(); my $l = $c >> BAM_CIGAR_SHIFT(); my $symbol = CIGAR_SYMBOLS()->[$op]; push @result,[$symbol,$l]; } return \@result; } sub flag_str { my $self = shift; my $flag = $self->flag; my $flags = FLAGS; return join '|',map {$flags->{$_}} grep {$flag & $_} sort {$a<=>$b} keys %{$flags}; } sub length { my $self = shift; my $end = $self->end || 0; my $start = $self->start || 0; return $end-$start+1; } sub mate_start { my $self = shift; return if $self->mpos < 0 || $self->munmapped; return $self->mpos+1; } sub mate_len { my $self = shift; my $ins_len = $self->isize or return; my $len = $self->length; my $adjust = 0; my @cigar = $self->cigar_array; for my $event (@cigar) { my ($op,$len) = @$event; $adjust += $len if $op eq 'I'; $adjust -= $len if $op eq 'D'; } return $adjust + $ins_len + ($self->start-$self->mate_start) if $ins_len > 0; return $adjust + $self->mate_start-($self->start+$ins_len) if $ins_len < 0; } sub mate_end { my $self = shift; return unless $self->mate_len; return $self->mate_start+$self->mate_len-1; } sub query { my $self = shift; return Bio::DB::Bam::Query->new($self); } sub get_SeqFeatures { return; } # Target is the same as Query, but with meaning of start() and end() reversed # for compatibility with Bio::DB::GFF and its ilk. Please use Query if you can! sub target { my $self = shift; return Bio::DB::Bam::Target->new($self); } sub primary_tag { 'match' } sub source_tag { 'sam/bam' } sub hit { shift->target(@_); } 1; =head1 SEE ALSO L, L, L =head1 AUTHOR Lincoln Stein Elincoln.stein@oicr.on.caE. Elincoln.stein@bmail.comE Copyright (c) 2009-2015 Ontario Institute for Cancer Research. This package and its accompanying libraries are free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0, the Apache 2.0 License, or the GNU General Public License (version 1 or higher). Refer to LICENSE for the full license text. =cut Bio-SamTools-1.43/lib/Bio/DB/Bam/Query.pm000444001751001751 1103412657431424 17764 0ustar00lsteinlstein000000000000package Bio::DB::Bam::Query; # $Id$ =head1 NAME Bio::DB::Bam::Query -- Object representing the query portion of a BAM/SAM alignment =head1 SYNOPSIS Given an alignment retrieved from a Bio::DB::Sam database, my $query = $alignment->query; my $name = $query->display_name; my $start = $query->start; my $end = $query->end; my $dna = $query->dna; # dna string my $seq = $query->seq; # Bio::PrimarySeq object my @scores = $query->qscore; # quality score =head1 DESCRIPTION This is a simple Bio::SeqFeatureI object that represents the query part of a SAM alignment. =head2 Methods =over 4 =cut use strict; use Bio::DB::Sam; use Bio::DB::Sam::Constants qw(CIGAR_SYMBOLS BAM_CREF_SKIP BAM_CSOFT_CLIP BAM_CHARD_CLIP); use constant CIGAR_SKIP => {CIGAR_SYMBOLS->[BAM_CREF_SKIP] => 1, CIGAR_SYMBOLS->[BAM_CSOFT_CLIP] => 1, CIGAR_SYMBOLS->[BAM_CHARD_CLIP] => 1}; sub new { my $self = shift; my $alignment = shift; bless \$alignment,ref $self || $self; } =item $seqid = $query->seq_id The name of the read. =cut sub seq_id { my $self = shift; $$self->qname; } =item $name = $query->name The read name (same as seq_id in this case). =cut sub name { my $self = shift; $$self->qname; } =item $name = $query->display_name The read display_name (same as seq_id in this case). =cut sub display_name {shift->name} =item $tag = $query->primary_tag The string "match". =cut sub primary_tag { ${shift()}->primary_tag } =item $tag = $query->source_tag The string "sam/bam". =cut sub source_tag { ${shift()}->source_tag } =item $start = $query->start The start of the match in read coordinates. =cut sub start { my $self = shift; return $self->low; } =item $end = $query->end The end of the match in read coordinates; =cut sub end { my $self = shift; return $self->high; } sub low { my $self = shift; my $cigar_arry = $$self->cigar_array; my $start = 1; for my $c (@$cigar_arry) { next if CIGAR_SYMBOLS->[BAM_CHARD_CLIP] eq $c->[0]; last unless CIGAR_SKIP->{$c->[0]}; $start += $c->[1]; } $start; } sub high { my $self = shift; my $len = $$self->cigar2qlen; my $cigar_arry = $$self->cigar_array; # alignment stops at first non-clip CIGAR position my $i = $len - 1; for my $c (reverse @$cigar_arry) { next if CIGAR_SYMBOLS->[BAM_CHARD_CLIP] eq $c->[0]; last unless CIGAR_SKIP->{$c->[0]}; $len -= $c->[1]; } return $len; } =item $len = $query->length The length of the read. =cut sub length { my $self = shift; $self->high-$self->low+1; # $$self->cigar2qlen; } =item $seq = $query->seq A Bio::PrimarySeq representing the read sequence in REFERENCE orientation. =cut sub seq { my $self = shift; my $dna = $self->dna; return Bio::PrimarySeq->new(-seq => $dna, -id => $$self->qname); } =item $scores = $query->qscore The read quality scores. In a list context, a list of integers equal in length to the read sequence length. In a scalar context, an array ref. The qscores are in REFERENCE sequence orientation. =cut sub qscore { my $self = shift; my @qscore = $$self->qscore; return wantarray ? @qscore : \@qscore; } =item $dna = $query->dna The DNA string in reference sequence orientation. =cut sub dna { my $self = shift; return $$self->qseq || ('N' x $self->length); } =item $strand = $query->strand If the query was reversed to align it, -1. Otherwise +1. =cut sub strand { my $self = shift; return $$self->reversed ? -1 : 1; } =item $seq = $query->subseq($start,$end) Return a Bio::PrimarySeq object representing the requested subsequence on the read. =cut sub subseq { my $self = shift; my ($start,$end) = @_; $start = 1 if $start < 1; $end = $self->high if $end > $self->high; ($end,$start) = ($start,$end) if $start > $end; return Bio::PrimarySeq->new(-seq=>substr($self->dna, $start-1, $end-$start+1) ); } 1; =back =head1 SEE ALSO L, L, L, L =head1 AUTHOR Lincoln Stein Elincoln.stein@oicr.on.caE. Elincoln.stein@bmail.comE Copyright (c) 2009-2015 Ontario Institute for Cancer Research. This package and its accompanying libraries are free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0, the Apache 2.0 License, or the GNU General Public License (version 1 or higher). Refer to LICENSE for the full license text. =cut Bio-SamTools-1.43/lib/Bio/DB/Bam/Pileup.pm000444001751001751 454412657431424 20105 0ustar00lsteinlstein000000000000package Bio::DB::Bam::Pileup; # $Id$ # documentation only 1; =head1 NAME Bio::DB::Bam::Pileup -- Object passed to pileup() callback =head1 SYNOPSIS See L for how this object is passed to pileup callbacks. =head1 DESCRIPTION A Bio::DB::Bam::Pileup object (or a Bio::DB::Bam::PileupWrapper object) is passed to the callback passed to the Bio::DB::Sam->pileup() method for each column in a sequence alignment. The only difference between the two is that the latter returns the more convenient Bio::DB::Bam::AlignWrapper objects in response to the alignment() method, at the cost of some performance loss. =head2 Methods =over 4 =item $alignment = $pileup->alignment Return the Bio::DB::Bam::Alignment or Bio::DB::Bam::AlignWrapper object representing the aligned read. =item $alignment = $pileup->b This method is an alias for alignment(). It is available for compatibility with the C API. =item $qpos = $pileup->qpos Return the position of this aligned column in read coordinates, using zero-based coordinates. =item $pos = $pileup->pos Return the position of this aligned column in read coordinates, using 1-based coordinates. =item $indel = $pileup->indel If this column is an indel, return a positive integer for an insertion relative to the reference, a negative integer for a deletion relative to the reference, or 0 for no indel at this column. =item $is_del = $pileup->is_del True if the base on the padded read is a deletion. =item $level = $pileup->level If pileup() or fast_pileup() was invoked with the "keep_level" flag, then this method will return a positive integer indicating the level of the read in a printed multiple alignment. =item $pileup->is_head =item $pileup->is_tail These fields are defined in bam.h but their interpretation is obscure. =back =head1 SEE ALSO L, L, L, L =head1 AUTHOR Lincoln Stein Elincoln.stein@oicr.on.caE. Elincoln.stein@bmail.comE Copyright (c) 2009-2015 Ontario Institute for Cancer Research. This package and its accompanying libraries are free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0, the Apache 2.0 License, or the GNU General Public License (version 1 or higher). Refer to LICENSE for the full license text. =cut